CN104683265A - 一种用于100g接口的大容量精确包计数方法 - Google Patents
一种用于100g接口的大容量精确包计数方法 Download PDFInfo
- Publication number
- CN104683265A CN104683265A CN201510089646.6A CN201510089646A CN104683265A CN 104683265 A CN104683265 A CN 104683265A CN 201510089646 A CN201510089646 A CN 201510089646A CN 104683265 A CN104683265 A CN 104683265A
- Authority
- CN
- China
- Prior art keywords
- cache
- random access
- counting
- statistics
- access memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Static Random-Access Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种用于100G接口的大容量精确包计数方法,其特征是包括以下步骤:A)让外部存储器对表项存储完成高bit位统计存储;逻辑器件内部自建少量存储空间,对每个表项的包数、字节数的低bit位进行统计;B)统计预处理之后,将据拆分为多个子模块进行操作,本发明的一种用于100G接口的大容量精确包计数方法的关键在于需要维护两张表,由于100G的带宽问题,使得统计需要的读写带宽变得很大,所以为了降低对片外存储的频繁操作,在内部维护同样的统计,但只记录最低的几位位宽,减少了FPGA内部块状存储起(BRAM)的使用个数,降低了器件成本,并使得外部存储读写操作减慢可以使用廉价的同步动态随机存储器(SDRAM)来完成,足够支撑100G统计所需的带宽。
Description
技术领域
本发明涉及数字通信技术领域,尤其是一种用于100G接口的大容量精确包计数方法。
背景技术
2010年6月17日电气和电子工程师协会(IEEE)正式批准了IEEE 802.3ba标准,2013年国内运营商全面开始部署100G传输网络,而设备中接入100G网络,进行各项业务分析依赖的是对各类流量分析后得到设定表项的统计,100G带宽是原先常用网络接口速率的10倍,带来统计速率的需求提高10倍,传统的大规模挂静态随机存储器(SRAM)统计的方式接口速率已无法满足。
前端专用接口处理芯片(、或现场可编程门阵列(FPGA)内部100G接口模块,接入100G以太网流量,进行二三层协议识别后,进行队列编辑序号(或直接散列(hash)处理,接口中每个数据包进入处理模块得到一个编号,向统计模块传输,而对应到统计模块这些编号,实际对应的是外挂扩展存储的地址,一般会根据设备的需求决定需要统计的条目数,从而选择外挂存储的颗粒大小。
首先分析下在10G网络下常见的大容量报文类别统计方式:
如图1,10G以太网流量的最大包速率为14.881MPPS(百万脉冲/秒-MillionPulses Per Second);设备正常需要统计入端口/出端口双向统计,操作容量的统计信息的方式实际上就是将对应命中规则的外部存储地址的内容读出,然后在此前统计内容上加一,再将此结果写入该地址。如此可以计算一下10G双向流量统计对外部存储器的接口速率,14.881*2*2≈60MPPS,速率较低,目前的外部存储器都提供至少125M的接口操作速率,完成此处的操作没有瓶颈。需要注意的是,外部存储的读写有多周期的时序延迟,如果连续命中相同的报文,对同一个外部存储地址进行读写,需要逻辑内部模块增加cache解决冲突,否则命中统计的累加会遗漏。
上文介绍了10G接口的精确统计方式,将我们的目标移到正题,100G或者未来的400G接口,如何完成大容量报文类别的统计呢?我们可以初略的算下外部存储的带宽,100G双向接口统计需要600MPPS的操作速度,400G那就更大了。目前的四倍数据速率静态随机存取存储器(QDR)或者双倍数据速率静态随机存取存储器(DDR)静态存储器速率最高是600M,并且是burst为4,也就是操作命令速率为300MPPS。这样的速率外部存储外部已经无法接受了,或者有人疑问,逻辑器件内部有静态随机存储器(SRAM),可以用内部的存储完成,但FPGA内部的资源是有限的,目前用于路由器等核心设备需要的字节以及包长统计存储位宽都是64位的,而现在的会话容量都在256K以上,经过计算需要存储容量为32M,已我们主流XILINX Kintex 7逻辑芯片的资源表可以看到,最小的7K70T只有4M的块状存取存储(BRAM)。
就算是比较大的器件,如果只用来单独完成统计功能,成本代价巨大,直接影响产品的市场竞争力。
而且众所周知静态随机存储器(SRAM)的价格和存储容量上与动态随机存取存储器(DRAM)是不可比的,就算使用最新的HMC(Hybrid Memory Cube,混合内存立方体),但价格奇高,并且占用逻辑芯片的并串行与串并行转换器(serdes)资源,现在逻辑芯片的价格的主要因素在并串行与串并行转换器(serdes)、内部布线资源,其次才是容量和并行IO的接口数量,并且100G带宽的接口速率下根据前文分析,直接使用四倍数据速率静态随机存取存储器(QDR)-静态随机存储器(SRAM),需要的接口速率带来电路板布线、功耗、芯片成本的增加对精确统计的功能得不偿失的,是否能使用低成本器件,来完成大容量规则命中的精确统计,在设备组网、安全过滤、路由转换等核心功能中都需要接口的精确命中统计来提供上行策略的分析。低成本高精度的一套统计方案来适配100G接口以及可扩展到将来的400G接口是迫在眉睫的。
发明内容
本发明的目的在于提供一种用于100G接口的大容量精确包计数方法,提供低成本高精度的一套统计方案来适配100G接口,并且可扩展到将来的400G接口的应用。
本发明解决该问题的核心在于解决二个技术问题:
1、尽可能使用较少的逻辑资源,并不使用并串行与串并行转换器(serdes);
2、使用低速输入输出(IO)速率的静态随机存储器(SRAM)或者使用动态随机存取存储器(DRAM)替代。
本发明的技术方案是:
本发明的有益效果是:
本发明的一种用于100G接口的大容量精确包计数方法的关键在于需要维护两张表,由于100G的带宽问题,使得统计需要的读写带宽变得很大,所以为了降低对片外存储的频繁操作,在内部维护同样的统计,但只记录最低的几位位宽,降低了FPGA内部静态存储资源,可以使用较低成本的器件,并使得外部存储操作减慢,以达到使用廉价的DDR3SDRAM也能足够支撑100G统计所需的带宽。
附图说明
图1是现有技术的在10G网络下常见的大容量报文类别统计方式示意图。
图2是本发明的统计预处理步骤的逻辑的内部处理模式。
图3是本发明的双端口缓存处理流程图。
具体实施方式
下面结合附图对本发明作进一步描述:
如图2、图3,为了解决成本问题,统计的完成需要分段处理,让外部存储空间对表项存储完成高bit位的统计,逻辑器件内部自建少量存储空间,对每个表项的包数、字节数的低位进行统计。如前文说的256K队列进行统计,逻辑内部自建18位X256K的表项,只需要4.6M位空间,即128个36K双极随机存取存储器(BRAM);是可以放在K7系列最小的XC7K70T中完成此功能的。而由于内部使用了18位位宽的内部存储作为队列统计的低位计数,如果需要精确的统计报文包数和字节总数,18位位宽可以用4位完成包数统计,14位完成包字节统计,这样可以让外部速率降低到原先的十六分之一,即使读写命令总速率超过37.5MPPS就可以了。目前使用的双倍数据速率静态随机存取存储器(DDR)静态随机存储器(SRAM)最基本的速率为250MHz,命令操作速率125MPPS,完全可以胜任此种功能设计。
如果想使用动态随机存取存储器(DRAM)来做为外部存储,逻辑内部的存储需要更大一些,扩展到27位,目前最通用的第三代双倍数据速率静态随机存取存储器(DDR3)速率比较安全的是使用1066MHz,burst为8的话,内部核频率是133MHz,计算读写命令周期可以达到7M左右(此处没有进行读写动态调整)。
进过预处理之后,数据拆分为多个子模块进行操作,每个子模块内部分别有一个27X16K的ram,进行统计,20位做字节统计,7位做包数统计,溢出指示到后级,汇聚后反应到外部存储器件中。7位位宽包计数可以将对外的操作次数缩小一百倍;使得100G接口的队列统计能在常用的S动态随机存取存储器(DRAM)中完成统计扩容。下面以实际项目具体介绍下逻辑的内部处理模式:
专用100处理芯片以最大300M/s的速率向FPGA发送统计信息。每组统计信息可以最大可以报告2个条目,又因为ARAD会将入口统计和出口统计分开,而FPGA内部统计会将入口和出口的统计分开,所以相当于同时对一段地址进行操作的最大速率是300MPPS,并且进行计数统计需要读和写两次操作,第三代双倍数据速率静态随机存取存储器(DDR3)的速率要达到600M才能满足,逻辑对第三代双倍数据速率静态随机存取存储器(DDR3)控制器的命令速率无法达到这么高,第三代双倍数据速率静态随机存取存储器(DDR3)对读写并且切换中有较长时间的延迟。
双端口缓存(cache)共享,分段统计解决了外部四倍数据速率静态随机存取存储器(QDR)的速率问题,但是内部仍然需要支持300M的统计信息,所以内部使用两组统计并行方式将时钟降低一半,在150M的系统时钟下进行统计操作,而作为内部统计的存储单元双极随机存取存储器(BRAM),经过并串转换使用300M的时钟,将统计子引擎按块合理划分,时双极随机存取存储器(BRAM)之间300M的时钟走线区域合理,并通过内部多级register的方式,将时序满足。该缓存(cache)还要解决由于并行双端口带来的冲突问题。
进过预处理之后,数据拆分为多个子模块进行操作,每个子模块内部分别有一个27X16K的ram,进行统计,20位做字节统计,7位做包数统计,溢出指示到后级,汇聚后反应到外部四倍数据速率静态随机存取存储器(QDR)。
由于要解决读写冲突,所以每个子统计引擎中要建一个缓存(cache),而这个缓存(cache)需要双端口共享,所以设计上比较复杂,与传统的设计有如表1的改进::
表1.缓存(cache)的单个条目的内容表
37 | 36 | 35 | 34:21 | 20:16 | 15:0 |
cpu self clear | cpu | arad | address | packet num | packet byte |
上表是缓存(cache)的单个条目的内容,需深度16的缓存,做奇偶分开,端口A的缓存(cache)新建在偶数上,端口B的缓存(cache)新建条目在奇数上,缓存(cache)的新建计数器每次步进为2,新建后的条目执行双极随机存取存储器(BRAM)读命令,会读后的数据对应到缓存(cache)里对应的条目上,详细流程为下图所示:
如图3,双端口cache分三段操作:
1、A、B端口同时新建cache中的表项,分奇偶操作,无命中cache中的队列号,直接发送读命令到逻辑器件内部的双极随机存取存储器(BRAM)中,读出内部低位统计内容;
若cache内部表项已经存在该队列地址,那么直接将对应的包数、字节数累加,并且不需要对双极随机存取存储器(BRAM)发起读命令
2、回读数据到达cache模块,对比内部表项,进行递增操作,再将数据重新写入双极随机存取存储器(BRAM)中,完成一个正常队列地址的统计操作,cache中将释放对应的记录,用于后继报文的新建。
3、若回读的低位统计,在与cache中内容相加后发现已超出原先设定内部存储的位位宽,将对应的操作命令向后级模块传递,使得外部存储控制器,完成高位大位宽队列存储的功能。
此处双端口cache的功能主要在于有效的规避了读写双极随机存取存储器(BRAM)中连续命中相同地址操作的读写冲突问题,并且扩展为双端口比较操作,使得原本需要在300MHz时钟速率下运行的逻辑,降低到150Mhz操作。
在经过内部溢出处理后,数据更新的带宽降低到了原先操作的百分之一,适用于通过的外部存储器件操作,使得实现的成本大大降低。
本发明的关键在于需要维护两张表,由于100G的带宽问题,使得统计需要的读写带宽变得很大,所以为了降低对片外存储的频繁操作,在内部维护同样的统计,但只记录最低的几位位宽,降低了FPGA内部的静态随机存储器(SRAM)使用,并使得外部存储操作减慢,足够支撑100G统计所需的带宽。
上面所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的构思和范围进行限定,在不脱离本发明设计构思前提下,本领域中普通工程技术人员对本发明的技术方案做出的各种变型和改进,均应落入本发明的保护范围,本发明请求保护的技术内容已经全部记载在权利要求书中。
Claims (4)
1.一种用于100G接口的大容量精确包计数方法,其特征是包括以下步骤:
A)让外部存储器对表项存储完成统计的高bit位存储,这样降低了对外部存储器的读写次数,适配100G带宽;
B)内部统计预处理之后,将据拆分为多个子模块进行操作,每个子模块内部分别有一个27X16K的随机动态存储器(RAM)进行统计,20位做字节统计,7位做包数统计,溢出指示到后级,汇聚后反应到外部存储器件中,7位位宽包计数可以将对外的操作次数缩小一百倍;使得100G接口的队列统计能在常用的S动态随机存取存储器(DRAM)中完成统计扩容;设置双倍数据速率静态随机存取存储器(DDR)静态随机存储器(SRAM)的操作速率125MPPS;
C)双端口缓存(cache)共享处理:内部仍然需要支持300M的统计信息,所以内部使用两组统计并行方式将时钟降低一半,在150M的系统时钟下进行统计操作,而作为内部统计的存储单元双极随机存取存储器(BRAM),经过并串转换使用300M的时钟,将统计子引擎按块合理划分,时双极随机存取存储器(BRAM)之间300M的时钟走线区域合理,并通过内部多级处理的方式,将时序满足,该缓存(cache)解决由于并行双端口带来的冲突问题。
2.根据权利要求1所述的一种用于100G接口的大容量精确包计数方法,其特征在于所述步骤B中使用可以使用动态随机存取存储器(DRAM)来作为外部存储。
3.根据权利要求1所述的一种用于100G接口的大容量精确包计数方法,其特征在于所述步骤C由于要解决读写冲突,所以每个子统计引擎中要建一个缓存 (cache),而这个缓存(cache)需要双端口共享。
4.根据权利要求1所述的一种用于100G接口的大容量精确包计数方法,其特征在于所述步骤C中还包括将双端口cache分三段操作:
1)、A、B端口同时新建cache中的表项,分奇偶操作,无命中cache中的队列号,直接发送读命令到逻辑器件内部的双极随机存取存储器(BRAM)中,读出内部低位统计内容;
若cache内部表项已经存在该队列地址,那么直接将对应的包数、字节数累加,并且不需要对双极随机存取存储器(BRAM)发起读命令;
2)、回读数据到达cache模块,对比内部表项,进行递增操作,再将数据重新写入双极随机存取存储器(BRAM)中,完成一个正常队列地址的统计操作,cache中将释放对应的记录,用于后继报文的新建;
3)、若回读的低位统计,在与cache中内容相加后发现已超出原先设定内部存储的位位宽,将对应的操作命令向后级模块传递,使得外部存储控制器,完成高位大位宽队列存储的功能;
此处双端口cache的功能主要在于有效的规避了读写FPGA内部块状存取存储器(BRAM)中连续命中相同地址操作的读写冲突问题,并且扩展为双端口比较操作,使得原本需要在300MHz时钟速率下运行的逻辑,降低到150Mhz操作。;
在经过内部溢出处理后,数据更新的带宽降低到了原先操作的百分之一,适用于廉价的外部存储器件操作,使得实现的成本大大降低。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510089646.6A CN104683265B (zh) | 2015-02-27 | 2015-02-27 | 一种用于100g接口的大容量精确包计数方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510089646.6A CN104683265B (zh) | 2015-02-27 | 2015-02-27 | 一种用于100g接口的大容量精确包计数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104683265A true CN104683265A (zh) | 2015-06-03 |
CN104683265B CN104683265B (zh) | 2020-05-01 |
Family
ID=53317881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510089646.6A Active CN104683265B (zh) | 2015-02-27 | 2015-02-27 | 一种用于100g接口的大容量精确包计数方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104683265B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105141468A (zh) * | 2015-10-08 | 2015-12-09 | 盛科网络(苏州)有限公司 | 高效实现网络芯片流量统计的方法及装置 |
CN110191014A (zh) * | 2019-05-20 | 2019-08-30 | 杭州迪普信息技术有限公司 | 一种规则表项的命中次数统计方法及装置 |
CN111814675A (zh) * | 2020-07-08 | 2020-10-23 | 上海雪湖科技有限公司 | 基于fpga支持动态分辨率的卷积神经网络特征图组装系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1578272A (zh) * | 2003-07-11 | 2005-02-09 | 株式会社日立制作所 | 具有统计收集装置的数据包传送装置和统计收集方法 |
CN101515898A (zh) * | 2009-03-25 | 2009-08-26 | 华为技术有限公司 | 芯片的统计数据的管理方法和装置 |
CN101741739A (zh) * | 2009-12-01 | 2010-06-16 | 中兴通讯股份有限公司 | 一种交换设备出、入端口报文统计的方法和装置 |
CN101848150A (zh) * | 2010-04-26 | 2010-09-29 | 华为技术有限公司 | 维护多播计数器的计数值的方法及装置 |
US20130021169A1 (en) * | 2010-04-08 | 2013-01-24 | Koninklijke Philips Electronics N.V. | Patient monitoring over heterogeneous networks |
-
2015
- 2015-02-27 CN CN201510089646.6A patent/CN104683265B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1578272A (zh) * | 2003-07-11 | 2005-02-09 | 株式会社日立制作所 | 具有统计收集装置的数据包传送装置和统计收集方法 |
CN101515898A (zh) * | 2009-03-25 | 2009-08-26 | 华为技术有限公司 | 芯片的统计数据的管理方法和装置 |
CN101741739A (zh) * | 2009-12-01 | 2010-06-16 | 中兴通讯股份有限公司 | 一种交换设备出、入端口报文统计的方法和装置 |
US20130021169A1 (en) * | 2010-04-08 | 2013-01-24 | Koninklijke Philips Electronics N.V. | Patient monitoring over heterogeneous networks |
CN101848150A (zh) * | 2010-04-26 | 2010-09-29 | 华为技术有限公司 | 维护多播计数器的计数值的方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105141468A (zh) * | 2015-10-08 | 2015-12-09 | 盛科网络(苏州)有限公司 | 高效实现网络芯片流量统计的方法及装置 |
CN105141468B (zh) * | 2015-10-08 | 2019-02-05 | 盛科网络(苏州)有限公司 | 高效实现网络芯片流量统计的方法及装置 |
CN110191014A (zh) * | 2019-05-20 | 2019-08-30 | 杭州迪普信息技术有限公司 | 一种规则表项的命中次数统计方法及装置 |
CN111814675A (zh) * | 2020-07-08 | 2020-10-23 | 上海雪湖科技有限公司 | 基于fpga支持动态分辨率的卷积神经网络特征图组装系统 |
CN111814675B (zh) * | 2020-07-08 | 2023-09-29 | 上海雪湖科技有限公司 | 基于fpga支持动态分辨率的卷积神经网络特征图组装系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104683265B (zh) | 2020-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8225026B2 (en) | Data packet access control apparatus and method thereof | |
CN101916227B (zh) | 一种rldram sio存储器访问控制方法和装置 | |
CN107220187A (zh) | 一种缓存管理方法、装置及现场可编程门阵列 | |
CN101246460A (zh) | 缓存数据写入系统及方法和缓存数据读取系统及方法 | |
WO2015187577A1 (en) | Systems and methods for segmenting data structures in a memory system | |
EP2985699B1 (en) | Memory access method and memory system | |
CN107800644A (zh) | 一种可动态配置的流水化令牌桶限速方法与装置 | |
CN104683265A (zh) | 一种用于100g接口的大容量精确包计数方法 | |
CN102314400B (zh) | 一种分散聚合式dma方法及装置 | |
CN106789733B (zh) | 一种提高大规模网络流表查找效率的装置及方法 | |
CN107171960B (zh) | 一种分布式动态二层转发表的维护方法 | |
CN105335323A (zh) | 一种数据突发的缓存装置和方法 | |
CN101923522A (zh) | 存储控制器及数据操作命令的处理方法 | |
US6906980B2 (en) | Network packet buffer allocation optimization in memory bank systems | |
CN214670200U (zh) | Modbus tcp转多modbus从站的转换模块 | |
CN105487988B (zh) | 基于存储空间复用提高sdram总线有效访问速率的方法 | |
CN105516023A (zh) | 一种报文转发方法和装置 | |
CN102780620B (zh) | 一种网络处理器和报文处理方法 | |
CN106919516B (zh) | Ddr地址映射系统和方法 | |
CN105279136B (zh) | 基于多核dsp多路信号的实时并行频域分析方法与系统 | |
CN104678815B (zh) | Fpga芯片的接口结构及配置方法 | |
US8572349B2 (en) | Processor with programmable configuration of logical-to-physical address translation on a per-client basis | |
US20150006828A1 (en) | Memory architecture determining the number of replicas stored in memory banks or devices according to a packet size | |
CN100538738C (zh) | 访问多区存储器中的多维数据块的方法、装置及系统 | |
WO2021159412A1 (zh) | 一种存储器、网络设备及数据访问方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: 210012 Yuhuatai, Jiangsu province tulip Road, No. 17, No. Applicant after: Nanjing Sinovatio Technology LLC Address before: Affirmative road in Jiangning District of Nanjing City, Jiangsu Province, No. 888 211153 Applicant before: Nanjing Sinovatio Technology LLC |
|
COR | Change of bibliographic data | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |