CN106789697B - 一种提高大批量网络流表老化效率的方法及装置 - Google Patents
一种提高大批量网络流表老化效率的方法及装置 Download PDFInfo
- Publication number
- CN106789697B CN106789697B CN201611089502.1A CN201611089502A CN106789697B CN 106789697 B CN106789697 B CN 106789697B CN 201611089502 A CN201611089502 A CN 201611089502A CN 106789697 B CN106789697 B CN 106789697B
- Authority
- CN
- China
- Prior art keywords
- hash
- aging
- pointer
- fifo
- batch
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种提高大批量网络流表老化效率的方法及装置,其特征在于,对网络流表进行分批老化,对于每一批读取的N个桶,其步骤为:1)将该批hash桶中的有效指针存到指针FIFO中;当该批hash桶读取结束时,进行步骤2);2)从内存中查找指针FIFO中指向的hash节点,然后根据配置的老化时间判断该hash节点是否需要老化,若需要老化,则对该hash节点进行老化并将该hash节点中的下一个指针标志有效的hash节点指针存入指针FIFO中;3)判断当前指针FIFO是否为空,如果不为空,则进行步骤2)。本发明对原有系统硬件不做任何改变,完成老化效率的提高。
Description
技术领域
本发明涉及FPGA(Field-Programmable Gate Array现场可编程门阵列)领域,涉及以太接入网领域,提出了一种基于FPGA实现的大批量流表老化的高效的方法。
背景技术
在以太接入网通常需要对流进行管理,这里的流是指在某一段持续的时间内,具有相同五元组元素的一组连续的报文序列。流具有从建立到结束的完整生命周期。流管理是指在流建立到结束(即流老化)的整个生命周期中,对该流的报文进行计数、转发和丢弃的操作。
流管理的处理流程及流表结构如图1、2所示,图2中的N表示桶深。流表项内容如表1、2所示。流表老化的方式有两种:刷新流老化和非刷新流老化。刷新流老化是指从最后一个报文开始,该流在指定老化时间内没有被采集到而被自动老化,这种老化称为刷新流老化;非刷新流老化是指从建立流的第一个报文开始计算时间,超过设定时间后被老化,这种老化称为非刷新老化。本发明主要针对非刷新老化。
表1:HASH桶表项:
表2 HASH节点表项
通常的流表老化机制都是通过遍历当前表项所在hash桶直到遍历完所有表项,是单一表项操作的。但当流表项数量特别庞大(上千万条流),老化精度又比较高(几秒)的应用场景下,使用单一表项老化的方式使得老化效率非常低。假设流表项数量为3000万,老化精度为1s,存储流表的内存(DDR3-1600SDRAM)的读写操作延时为27.5ns,内存读写时钟频率为200MHz,完成单个表项老化需要两周期(读hash桶+读hash节点),若使用单一表项的方式进行老化,完成3000万条流表可以使用25bit位宽的hash桶,假设内存只用于老化操作,则完成一次遍历需要3200万*(27.5ns+5ns)+3000万*(27.5ns+5ns)=2s的时间,老化精度无法达到1s,并且老化操作占用的内存过多,留给建流、查表等内存操作的比例就非常少,使得整个流管理效率非常低。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种提高大批量网络流表老化效率的方法及装置。
本发明对原有系统硬件不做任何改变,完成老化效率的提高;其特征在于应用可编程逻辑器件的现有资源,实现流表的高速老化。
为实现上述目的,本发明的技术方案为:
一种提高大批量网络流表老化效率的方法,其特征在于,对网络流表进行分批老化,对于每一批读取的N个桶,其步骤为:
1)将该批hash桶中的有效指针存到指针FIFO中;当该批hash桶读取结束时,进行步骤2);
2)从内存中查找指针FIFO中指向的hash节点,然后根据配置的老化时间判断该hash节点是否需要老化,若需要老化,则对该hash节点进行老化并将该hash节点中的下一个指针标志有效的hash节点指针存入指针FIFO中;
3)判断当前指针FIFO是否为空,如果不为空,则进行步骤2)。
进一步的,采用可编程逻辑器FPGA对网络流表进行分批老化;根据FPGA的内存操作时延T和FPGA的存储FIFO的深度D确定每批hash桶个数N。
进一步的,内存操作时延T=C*1/F;其中,F为FPGA的内存控制器读写时钟频率,C为老化内存读时延周期数。
进一步的,N>T*F1,其中,F1为FPGA的时钟频率。
进一步的,N<D-P,P表示FIFO的余量。
一种提高大批量网络流表老化效率的装置,其特征在于,包括流老化模块和流老化配置模块;其中,流老化配置模块,用于配置网络流表老化时间以及每批读取的hash桶个数N;流老化模块,用于根据配置的hash桶个数N分批读取并缓存网络流表的hash桶;以及将hash桶中的有效指针存到指针FIFO中;以及从内存中查找指针FIFO中指向的hash节点,然后根据配置的老化时间判断该hash节点是否需要老化,若需要老化,则对该hash节点进行老化并将该hash节点中的下一个指针标志有效的hash节点指针存入指针FIFO中,直至当前指针FIFO是否为空。
本发明流程如图3所示,包括:
a.分多次完成所有流表的老化,每次小批量读取hash桶并老化hash桶下一个指针有效的有效hash节点。
根据FPGA的内存操作时延T和FPGA的存储FIFO的深度D确定每批hash桶个数N。假设内存控制器读写时钟频率为F,老化内存读时延周期数C,则T=C*1/F;一次小批量老化时间只有大于内存读延时,才能避免等待,提高老化内存利用率。假设逻辑处理时钟频率为F1,则N>T*F1。
假设FPGA内部FIFO深度D,则N<D-P,P表示FIFO的余量,用于反压的处理。
假设所有流表的hash桶总深度为M,则按HASH值大小顺序小批量刷新hash桶的次数为[M/N]+1。
b.读取hash桶的有效节点地址存到FIFO中,一次批量读取hash桶结束时,从FIFO中读节点地址并从内存中查找hash节点,将hash节点的流建立时间与当前时间对比,若时间差大于等于配置的老化时间,即当前hash节点需要老化,则删除该hash节点,若当前hash节点不需要老化则结束。
c.对于有hash冲突的场景,即不同的流有相同的hash值,同一条hash桶下挂了多个hash节点的场景,只需在b处理过程中判断有效hash节点中的下一个节点指针是否有效,若有效,则说明有hash冲突,把冲突节点的地址存入冲突FIFO,等上一批节点处理结束从冲突FIFO中读取冲突节点地址并从内存中查找冲突节点。
d.在每次小批量老化间隙可以进行流管理处理的建流,流查找等操作,实现分时复用内存,提高内存的利用率。
与现有技术相比,本发明的积极效果:
本发明基于FPGA实现,分多次完成大批量流表的老化,每次完成小批量hash桶的老化,使用pipeline模式,抵消了内存操作结果等待时间,提高了老化性能,降低了老化的内存占用率。同时在每次小批量老化的间隙可进行建流,查表等操作,最大限度利用内存,提高流管理的性能。
附图说明
图1为流管理处理流程图;
图2为流表结构图;
图3为本发明流表老化的处理流程图;
图4为本发明装置功能结构整体示意图;
图5为单次老化的流程图。
具体实施方式
下面结合附图,进一步详细描述本发明的实施例:
如图4所示,本发明的整个装置模块,由多个子功能模块构成,其中包括
MIG_APP模块:内存控制器,由FPGA内部的IP core提供。
flow_aging模块:流老化模块。批量读取内存流表信息,将有效流表结果存在FIFO(先入先出队列)里,再从FIFO里读取流表节点内容,根据节点的建立时间和老化时间进行老化处理,根据节点的下一个指针是否有效判断是否有hash冲突,对冲突节点进行重复相同的老化处理。
aging_dbg模块:流老化配置模块。PowerPC通过RGMII接口与FPGA相连,全局静态配置流表老化时间,小批量刷新个数等信息。
大批量的hash桶和hash节点存在内存sdram中,小批量读取的hash桶和hash节点结果存于FPGA内部的FIFO中,然后根据FIFO中存储的小批量hash桶和hash节点的结果内容(hash链指针是否有效,是否有hash冲突,是否到老化时间)决定是否需要进行多次操作。
以hash冲突为2的流表老化为例,其时间维度的老化模块流程为:
1、从内存读取N(假设N=1000)个hash桶;
2、把返回的hash桶的有效指针存入指针FIFO,无效指针丢弃;
3、在读完1000个hash桶时,指针FIFO若非空,读取指针FIFO,同时从内存SDRAM中读取当前指针FIFO确定的有效hash节点;
指针FIFO若为空,则说明此次批量读取的hash桶下没有有效节点,等待下一次的批量读取。
4、比较返回的有效hash节点的建立时间和FPGA逻辑内部的计时器内容,若时间差大于或等于老化时间,说明该节点需被老化,把待老化节点内容存入节点FIFO;若时间差小于老化时间,说明当前节点无需老化,进入步骤5;同时如果节点的下一个指针标志有效,说明有hash冲突,把冲突节点指针存入指针FIFO。指针是指节点地址。
5、若指针FIFO为非空(hash冲突的指针),重复步骤3,4,即将冲突节点作为有效节点进行处理,冲突节点的时间达到老化时间,就将其删除;若指针FIFO为空,判断节点FIFO,若非空,则转到步骤6;若节点FIFO为空,则此次批量老化结束,等待下一次的批量处理。
6、删除待老化的节点:即通过写节点把hash桶或hash节点中的有效指针置0。
图5中的T1表示单次刷新没有hash冲突,并且节点不到老化时间情况下的刷新所需时间;
T2表示hash冲突为2,节点无需老化的刷新时间;
T3表示hash冲突为2,节点需要老化的刷新时间。
Claims (8)
1.一种提高大批量网络流表老化效率的方法,其特征在于,采用可编程逻辑器FPGA对网络流表进行分批老化,根据FPGA的内存操作时延T和FPGA的存储FIFO的深度D确定每批hash桶个数N;对于每一批读取的N个桶,其步骤为:
1)将该批hash桶中的有效指针存到指针FIFO中;当该批hash桶读取结束时,进行步骤2);
2)从内存中查找指针FIFO中指向的hash节点,然后根据配置的老化时间判断该hash节点是否需要老化,若需要老化,则对该hash节点进行老化并将该hash节点中的下一个指针标志有效的hash节点指针存入指针FIFO中;
3)判断当前指针FIFO是否为空,如果不为空,则进行步骤2)。
2.如权利要求1所述的方法,其特征在于,内存操作时延T=C*1/F;其中,F为FPGA的内存控制器读写时钟频率,C为老化内存读时延周期数。
3.如权利要求1或2所述的方法,其特征在于,N>T*F1,其中,F1为FPGA的时钟频率。
4.如权利要求1或2所述的方法,其特征在于,N<D-P,P表示FIFO的余量。
5.一种提高大批量网络流表老化效率的装置,其特征在于,包括流老化模块和流老化配置模块;其中,
流老化配置模块,用于配置网络流表老化时间以及每批读取的hash桶个数N;其中,采用可编程逻辑器FPGA对网络流表进行分批老化,根据FPGA的内存操作时延T和FPGA的存储FIFO的深度D确定每批hash桶个数N;
流老化模块,用于根据配置的hash桶个数N分批读取并缓存网络流表的hash桶;以及将hash桶中的有效指针存到指针FIFO中;以及从内存中查找指针FIFO中指向的hash节点,然后根据配置的老化时间判断该hash节点是否需要老化,若需要老化,则对该hash节点进行老化并将该hash节点中的下一个指针标志有效的hash节点指针存入指针FIFO中,直至当前指针FIFO是否为空。
6.如权利要求5所述的装置,其特征在于,内存操作时延T=C*1/F;其中,F为FPGA的内存控制器读写时钟频率,C为老化内存读时延周期数。
7.如权利要求5或6所述的装置,其特征在于,N>T*F1,其中,F1为FPGA的时钟频率。
8.如权利要求5或6所述的装置,其特征在于,N<D-P,P表示FIFO的余量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611089502.1A CN106789697B (zh) | 2016-12-01 | 2016-12-01 | 一种提高大批量网络流表老化效率的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611089502.1A CN106789697B (zh) | 2016-12-01 | 2016-12-01 | 一种提高大批量网络流表老化效率的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106789697A CN106789697A (zh) | 2017-05-31 |
CN106789697B true CN106789697B (zh) | 2019-12-13 |
Family
ID=58915366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611089502.1A Active CN106789697B (zh) | 2016-12-01 | 2016-12-01 | 一种提高大批量网络流表老化效率的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106789697B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111431806B (zh) * | 2020-03-18 | 2022-07-08 | 北京京安佳新技术有限公司 | 一种流表处理方法和设备 |
CN112291212B (zh) * | 2020-10-16 | 2023-02-28 | 北京锐安科技有限公司 | 静态规则的管理方法、装置、电子设备和存储介质 |
CN114915587B (zh) * | 2022-05-10 | 2023-12-22 | 深圳星云智联科技有限公司 | 流表老化管理方法及相关设备 |
CN115065640B (zh) * | 2022-08-09 | 2022-11-01 | 北京安博通金安科技有限公司 | 一种流表管理方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780641A (zh) * | 2012-08-17 | 2012-11-14 | 北京傲天动联技术有限公司 | 快速转发引擎的流表老化方法、装置以及交换机 |
CN102831140A (zh) * | 2012-05-18 | 2012-12-19 | 浙江大学 | 一种fpga中mac地址查找表的实现方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8825971B1 (en) * | 2007-12-31 | 2014-09-02 | Emc Corporation | Age-out selection in hash caches |
US8300525B1 (en) * | 2009-01-30 | 2012-10-30 | Juniper Networks, Inc. | Managing a flow table |
CN105407073A (zh) * | 2014-09-10 | 2016-03-16 | 中兴通讯股份有限公司 | 一种基于开放流OpenFlow协议的流表老化方法、设备和系统 |
-
2016
- 2016-12-01 CN CN201611089502.1A patent/CN106789697B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831140A (zh) * | 2012-05-18 | 2012-12-19 | 浙江大学 | 一种fpga中mac地址查找表的实现方法 |
CN102780641A (zh) * | 2012-08-17 | 2012-11-14 | 北京傲天动联技术有限公司 | 快速转发引擎的流表老化方法、装置以及交换机 |
Also Published As
Publication number | Publication date |
---|---|
CN106789697A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789697B (zh) | 一种提高大批量网络流表老化效率的方法及装置 | |
CN107800644A (zh) | 一种可动态配置的流水化令牌桶限速方法与装置 | |
US9032162B1 (en) | Systems and methods for providing memory controllers with memory access request merging capabilities | |
US10205673B2 (en) | Data caching method and device, and storage medium | |
JP7074839B2 (ja) | パケット処理 | |
CN106789733B (zh) | 一种提高大规模网络流表查找效率的装置及方法 | |
CN105282037B (zh) | 用于网络交换机中的表老化的方法和装置 | |
CN110912826A (zh) | 利用acl扩充ipfix表项的方法及装置 | |
CN106330741B (zh) | 一种报文传输方法和装置 | |
CN101986611B (zh) | 基于两级缓存的快速组流方法 | |
CN106254270A (zh) | 一种队列管理方法及装置 | |
CN105516023A (zh) | 一种报文转发方法和装置 | |
CN107666417B (zh) | 实现ipfix随机采样的方法 | |
JP2022523195A (ja) | メモリ管理方法及び装置 | |
WO2021208682A1 (zh) | 网络设备的数据采样方法、装置、设备及介质 | |
CN110232029A (zh) | 一种基于索引的fpga中ddr4包缓存的实现方法 | |
CN109800074A (zh) | 任务数据并发执行方法、装置以及电子设备 | |
CN114153758B (zh) | 具有帧计数功能的跨时钟域数据处理方法 | |
US20200364156A1 (en) | Flow table aging optimized for dram access | |
CN107273100B (zh) | 一种数据实时处理及存储装置 | |
CN105939373B (zh) | 删除无效arp表项的方法及装置 | |
Zheng et al. | Design and analysis of a parallel hybrid memory architecture for per-flow buffering in high-speed switches and routers | |
CN114020471A (zh) | 一种基于草图的轻量级大象流检测方法及平台 | |
WO2017219749A1 (zh) | 一种缓存管理方法、装置及计算机存储介质 | |
EP3349405A1 (en) | Method and apparatus for generating user traffic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |