一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于FPGABlockRam的大容量以太网报文统计限速结构的制作方法

2022-09-15 03:01:33 来源:中国专利 TAG:

一种基于fpga blockram的大容量以太网报文统计限速结构
技术领域
1.本发明属于领域,具体涉及一种基于fpga blockram的大容量以太网报文统计限速结构。


背景技术:

2.基于安全、审计、流量控制、调试等诸多需求,在网络设备中有大量用于报文统计限速的计数结构存在。这些计数结构用于统计在单位时间内特定报文的发生频度并在计数器达到特定阈值后执行报文丢弃以达到限速效果。在电路层面单个计数结构所需的电路面积较小,在实际情况中这种小规模的电路在特定设计中会成百上千地出现,大量消耗fpga逻辑资源。本发明将设计一种基于fpga blockram资源的报文统计限速结构,综合局部小规模计数缓冲,全局周期刷新等技术以较小的逻辑资源消耗实现大容量报文统计限速结构。
3.在fpga实现中通常以逻辑资源实现计数器结构,随着网络带宽的增加,统计特定时间内特定报文数量的计数器位宽也随之增加。以以太网为例,千兆以太网报文速率上限为1.5mpps(packet per second),以秒为统计周期的报文计数器位宽为21bit,这一数量在10gbps(bit per second)、40gbps、 100gbps以太网环境下分别增长至15mpps、60mpps和150mpps与之对应的计数器位宽分别为24bit,27bit,和28bit。相对应的byte per second计数器位宽分别为 27bit,31bit,33bit和34bit。在需要大量统计限速结构存在的场景中这些计数器将及大地消耗fpga逻辑资源,导致fpga布局布线和时序收敛的困难,严重的可能导致fpga布局布线失败。


技术实现要素:

4.(一)要解决的技术问题本发明要解决的技术问题是如何提供一种基于fpga blockram的大容量以太网报文统计限速结构,以解决计数器将及大地消耗fpga逻辑资源,导致fpga布局布线和时序收敛困难的问题。
5.(二)技术方案为了解决上述技术问题,本发明提出一种基于fpga blockram的大容量以太网报文统计限速结构,该结构包括n个预加模块、周期刷新模块和主计数器;n个预加模块为n个独立的小位宽计数器,分别对n事件进行累加,待周期刷新模块将预加模块的预加值读取并合并到主计数器的相关存储单元后预加模块的计数值清零;预加模块包含一个丢弃标志,此标志由周期刷新模块根据主计数器中的计数值是否超过丢弃阈值进行设置,在计数周期结束时清除;主计数器的核心结构为一双口ram,双口ram中包括n个主计数器存储单元,每个主计数器存储单元包括:计数器字段、计数保持字段、丢弃阈值字段和计数修正字段;双口ram其中一个接口为读取/配置接口,该接口为其他逻辑或cpu提供了对存储单元各字段的读取接口和丢弃阈值字段的配置接口;双口ram的另一接口与周期刷新模块连接,周期刷新模块
通过此接口对计数器字段、计数保持字段和计数修正字段进行更新;主计数器的一个存储单元对应一个计数器和计数事件,并持续地对该事件的发生次数进行记录;周期刷新模块连续地扫描n个预加模块以及与之关联的n个主计数器存储单元,一个预加模块和一个关联的主计数器存储单元组成一个计数单元,扫描到特定计数单元后获取对应的预加模块的预加值和主计数器各个字段,基于不同的条件执行刷新操作。
6.进一步地,该结构包括事件向量接口,事件向量接口为n bit向量,连接到n个预加模块,对应n个以太网事件,若某事件发生则事件向量对应的bit置位为1。
7.进一步地,该结构包括秒脉冲接口,秒脉冲接口为秒定时接口,连接周期刷新模块,每1秒钟产生1个高脉冲,此信号用于计数单元的周期性清零。
8.进一步地,该结构包括读取/配置接口,读取/配置接口连接到主计数器模块,用于配置各个计数单元丢弃阈值,获取计数值。
9.进一步地,所述预加模块的计数位宽综合刷新周期和事件最高频度进行设计以防止计数器溢出。
10.进一步地,计数器字段为大位宽的计数器,用以实时累加相关事件发生次数。
11.进一步地,计数保持字段用以记录上一计数周期结束时计数器字段的值,通过读取/配置接口获取。
12.进一步地,丢弃阈值字段:通过读取/配置接口进行设置,若计数周期内计数器的值超过丢弃阈值则该周期剩余时间内该计数器对应事件再次发生将触发报文丢弃。
13.进一步地,计数修正字段:用于记录特定周期内报文丢弃数量误差,在下一计数周期的丢弃策略将感知这一误差并进行相应的修正,保证在多个计数周期平均后丢弃报文数量与丢弃阈值能准确对应。
14.进一步地,所述基于不同的条件执行刷新操作具体包括:若pps有效,执行如下操作:主计数器的计数保持字段置为:计数器字段 预加值;主计数器的计数器字段清零;预加模块的预加值清零;预加模块的丢弃标记清零;若主计数器中的(计数器字段 预加值)超过(丢弃阈值字段-计数修正字段)主计数修正字段设置为:计数器字段 预加值-(丢弃阈值字段-计数修正字段);主计数器的计数器字段置为:计数器字段 预加值;预加模块的预加值清零;预加模块的丢弃标记置位;其他情况:主计数器的计数器字段置为:计数器字段 预加值;预加模块的预加值清零;在完成上述操作后周期刷新模块继续进行下一计数单元的刷新操作。
15.(三)有益效果本发明提出一种基于fpga blockram的大容量以太网报文统计限速结构,本发明通过小位宽的预加模块对刷新周期内的事件发生次数进行记录,在较小的资源开销下保证
了计数器的准确性;通过fpga中的block ram构建大位宽计数器,合理地利用了fpga内的资源;通过周期刷新的策略将预加计数器的信息同步至block ram中的主计数器中;通过存储单元中的丢弃阈值字段配合计数器字段实现特定事件的限速;通过计数修正字段对结构性的丢弃精度进行了补偿。保证了平均限速精度。本发明提出的方案合理地利用了fpga中大规模存在的sram资源,可以在较小的逻辑资源消耗下实现较大规模的统计限速功能。有利于fpga内资源消耗的平衡和时序的优化。
附图说明
16.图1为本发明的整体结构示意图;图2为本发明的主计数器存储单元示意图。
具体实施方式
17.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
18.本发明基于fpga blockram资源配合少量逻辑资源实现大容量以太网报文统计限速结构,充分利用fpga内大量存在的blockram资源,节约了珍贵的lut,register等逻辑资源,实现了fpga多种资源利用比例的平衡。本发明提出的方案,有利于fpga设计资源整体使用率和时序的提升,同时基于blockram的技术结构实现了计数结构的模块化和参数化设计,有利于fpga设计开发效率的提升。
19.本发明基于fpga blockram的大容量以太网报文统计限速结构整体方案如图1所示,该结构与外围电路主要接口包括事件向量接口、秒脉冲(pps,pulse per second)接口和读取/配置接口。
20.其中事件向量接口为n bit向量,连接到n个预加模块,对应n个以太网事件,若某事件发生则事件向量对应的bit置位为1。
21.秒脉冲接口为秒定时接口,连接周期刷新模块,每1秒钟产生1个高脉冲,此信号用于计数单元的周期性清零。
22.读取/配置接口用于配置各个计数单元丢弃阈值,获取计数值等操作。
23.如图1所示,本发明的结构包括n个预加模块,周期刷新模块和主计数器。
24.其中n个预加模块为n个独立的小位宽计数器,分别对n事件进行累加,待周期刷新模块将预加模块的预加值读取并合并到主计数器的相关存储单元后预加模块的计数值清零。此外预加模块包含一个丢弃标志,此标志由周期刷新模块根据主计数器中的计数值是否超过丢弃阈值进行设置,在计数周期(计数周期由pps信号确定)结束时清除。预加模块的计数位宽需综合刷新周期和事件最高频度进行合理设计以防止计数器溢出。
25.周期刷新模块连续地扫描n个预加模块以及与之关联的n个主计数器存储单元,一个预加模块和一个关联的主计数器存储单元组成一个计数单元,扫描到特定计数单元后获取对应的预加模块值和主计数器各个字段(主计数器结构见图2),基于不同的条件执行以下刷新操作。
26.a:若pps有效,执行如下操作1:主计数器的计数保持字段置为:计数器字段 预加值。
27.2:主计数器的计数器字段清零。
28.3:预加模块的预加值清零。
29.4:预加模块的丢弃标记清零。
30.b:若主计数器中的(计数器字段 预加值)超过(丢弃阈值字段-计数修正字段)1:主计数修正字段设置为:计数器字段 预加值-(丢弃阈值字段-计数修正字段)。
31.2:主计数器的计数器字段置为:计数器字段 预加值。
32.3:预加模块的预加值清零。
33.4:预加模块的丢弃标记置位。
34.c: 其他情况1:主计数器的计数器字段置为:计数器字段 预加值。
35.2:预加模块的预加值清零。
36.在完成上述操作后周期刷新模块继续进行下一计数单元的刷新操作。
37.主计数器核心结构为一双口ram,双口ram其中一个接口为读取/配置接口,该接口为其他逻辑或cpu提供了对存储单元各字段的读取接口和丢弃阈值字段的配置接口;双口ram的另一接口与周期刷新模块连接,周期刷新模块通过此接口对计数器字段、计数保持字段和计数修正字段进行更新。主计数器存储单元如图2所示。主计数器的一个存储单元对应一个计数器和计数事件,并持续地对该事件的发生次数进行记录。主计数器各个字段的含义和功能如下:计数器字段:大位宽的计数器,用以实时累加相关事件发生次数。
38.计数保持字段:用以记录上一计数周期结束时计数器字段的值,可通过读取/配置接口获取。
39.丢弃阈值字段:通过读取/配置接口进行设置,若计数周期内计数器的值超过丢弃阈值则该周期剩余时间内该计数器对应事件再次发生将触发报文丢弃。
40.计数修正字段:由于采用预加 周期刷新结构,特定周期内报文丢弃数量的准确度存在误差,该误差将被记录在计数修正字段,在下一计数周期的丢弃策略将感知这一误差并进行相应的修正,保证在多个计数周期平均后丢弃报文数量与丢弃阈值能准确对应。
41.本发明的关键在于:通过小位宽的预加模块对刷新周期内的事件发生次数进行记录,在较小的资源开销下保证了计数器的准确性。
42.通过fpga中的block ram构建大位宽计数器,合理地利用了fpga内的资源。
43.通过周期刷新的策略将预加计数器的信息同步至block ram中的主计数器中。
44.通过存储单元中的丢弃阈值字段配合计数器字段实现特定事件的限速。
45.通过计数修正字段对结构性的丢弃精度进行了补偿。保证了平均限速精度。
46.相对于fpga中常用的以逻辑资源构建的统计限速结构,本发明提出的方案合理地利用了fpga中大规模存在的sram资源,可以在较小的逻辑资源消耗下实现较大规模的统计限速功能。有利于fpga内资源消耗的平衡和时序的优化。
47.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献