CN103095595B - 一种基于单向并行多链表的网络数据管理方法及系统 - Google Patents
一种基于单向并行多链表的网络数据管理方法及系统 Download PDFInfo
- Publication number
- CN103095595B CN103095595B CN201210593571.1A CN201210593571A CN103095595B CN 103095595 B CN103095595 B CN 103095595B CN 201210593571 A CN201210593571 A CN 201210593571A CN 103095595 B CN103095595 B CN 103095595B
- Authority
- CN
- China
- Prior art keywords
- live
- stream
- enable
- bag
- list
- 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.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于单向并行多链表的网络数据管理方法,具有如下步骤:S100.接收分光设备复制的链路流量,逐包进行解析,提取每个包的五元组;记录每个包到达的时间;S200.将所述每个五元组哈希成流ID;判断当前五元组对应的包是否为SYN包;S300.从SD Ram和Block Ram中读出当前包的表项数据;与所述与该包对应的五元组比较:五元组对应的包是否与表项匹配。本发明提供的一种基于单向并行多链表的网络数据管理方法和系统,通过一种简单的算法,完成了在流管理中的逐包处理,有效的对不活动超时流进行管控,算法效率高,耗时时间短。而且采用了FPGA为处理核心,成本低廉,十分便于推广和使用。
Description
技术领域
本发明涉及一种网络数据管理方法,尤其涉及一种基于单向并行多链表的网络数据管理方法及系统。
背景技术
流管理是一种重要的管控手段,可以为用户提供关于流的详细信息,是众多有关流应用的基础。流管理按抽样方式分包括:逐包处理和抽样处理。抽样处理时只对一部分的流进行管理,无论采用何种抽样方式都不可避免的存在信息损耗,带来监管上的漏洞,因此实际应用中往往采用逐包。流管理中逐包处理基本要求有:每个包的处理达到线速度;流管理的信息需要及时的反馈给用户;同时监控数百万条流。
TCP是面向连接的,正常的TCP流包括SYN包、中间包和FIN/RST包,当链路中存有大量的短时以及不规则流时,将导致表项空间爆炸,需要清理超时流。超时流包括活动超时流和不活的超时流两种,
活动超时流是指从流的SYN包算起的连接时间超过某个门限,
不活动流指一条流长时间没有新包到达,距离最后一个包到达时间超过某个门限。
对超时门限的需要根据实际网络和用户需求来设定,设定太短则将一些活动流错误的删除;如果太长则方法很有可能淹没于SYN包。
处理活动超时流用包触发方式和普通的包处理相同,将新包的到达减去这个包对应流的起始时间与阈值比较,判断该流是否超时,超时即删除该流,否则更新该流所对应表项。
而对于不活动流,因为长时间没有新包到达,无法采用包触发方式的删除,需要事件触发将其删除,即定时地在流表中查找不活动超时流并将其删除。
事件触发需要在整个存储空间中对所有进行查找,会消耗大量的处理时间,查找和删除都需要对存储器读写操作,需要中断正常的包处理,因此怎样合理高效的删除不活动超时流成为流管理的一个难点。
本文中的分时复用辅助变量法主要就是为了处理不活动超时流提出来的。
流管理的方法可以将其分为两类。
1、快速辅助存储法。快速辅助存储法是指在原来的主存储器外再增加辅存储器,将原来主存储器的部分常用信息存放在辅存储器(SRAM)中,处理中间包时避免访存SDRAM,或者将流有效和包到达信息存放在SRAM,加速不活动超时流的处理。快速辅助存储法处理不活跃超时流效率高,代价也是显而易见的,在当前网络设备中额外增加一个存储单元,是一件多么“奢侈”的事,并且现在随着电子技术的发展,SRAM的速率已经远远达不到SDRAM的速率,因此此方法并没有得到广泛的应用。
2、双向链表法。双向链表法在原有的数据部分加入前向和后向指针,将原来散落在存储空间的数据连接起来,链表按最后一个包到达顺序排序,则最旧的流在链表的前面,最新的到达包对应的流在链表的末尾,查找不活动超时流是按流表顺序从前往后即可,当发现一个不超时活动流时停止查找。虽然按时序排列双向链表在处理不活动超时流时效率很高,但其增加了更新操作的时间消耗,本质上是将原来遍历链表时的搜索时间分解到每次更新操作当中。双向链表适合软件处理,适合以网络处理器为中心的架构,难以应用到FPGA为处理核心的架构中。
发明内容
本发明针对以上问题的提出,而研制的一种基于单向并行多链表的网络数据管理方法,具有如下步骤:
S100.接收分光设备复制的链路流量,逐包进行解析,提取每个包的五元组;记录每个包到达的时间;
S200.将所述每个五元组哈希成流ID;判断当前五元组对应的包是否为SYN包;
S300.从SDRam和Block_Ram中读出当前包的表项数据;与该包对应的五元组比较:五元组对应的包是否与表项匹配。
S400.若匹配,将包信息写入对应的表项位置;
S500.将所述Block_Ram中live和enable数组清空;
S501.将不活动流处理周期设为T,在0~T/2时间段,将live数组与enable数组的前半段对应;当SYN包到达时将enable和live对应位置1;当中间包到达时,将live对应位置1;当F1N/RST包到达时,将enable和live对应位置0;
S502.在T/2时刻,比较live和enable数组的前半段,当enable与live的对应位分别为1和0时,则该流为不活动超时流:上报不活动超时流信息,将live和enable对应位置0,处理完后将所有的live位清0;
S503.在T/2~T时间段,将live数组与enable数组的后半段对应,当SYN包到达时将enable和live对应位置1;当中间包到达时,将live对应位置1;当F1N/RST包到达时,将enable和live对应位置0;
S504.在T时刻,比较live和enable数组后半段,当enable与live的对应位分别为1和0时,则该流为不活动超时流:上报不活动超时流信息,将live和enable对应位置。,处理完后将所有的live位清0;
S505.重复所述步骤S501-S504,直至完成所有包的处理。
所述步骤S200中,所述的流ID位数根据存储表项决定。
所述查找分为一级空间查找和二级空间查找,一级空间查找失败,根据流ID生成新的地址,在第二级空间继续查找。
所述步骤S300中:对于SYN包,寻找对应的空白表项,成功则返回地址;对于其它类型的包,寻找对应已经建立的表项,成功则返回地址。
步骤S400中,对于SYN包:将信息写入对应的表项;同时将Block_Ram中的enable和live位同时置为有效;
对于FIN/RST包,将Block_Ram中enable位置为无效;
对于中间报文,至少在表项中写入更新相应的报文数、字节数和最后报文到达时的信息;同时将live位置有效。
还具有步骤S700.将流表项信息封装成netflow格式输出。
一种基于单向并行多链表的网络数据管理系统,具有:
包信息提取单元,解析链路的包并提取包的基本信息,同时记录包的到达时间;
哈希生成单元,对五元组进行哈希计算,得出包对应流ID;查找单元负责根据生产的流ID查找对应的流表项;
表项建立单元,处理SYN包,在对应的空表项位置建立流表项;
表项更新单元,处理流中间数据,读取对应的流表项信息,更新数据并写回原地址;
表项删除单元负责处理FIN/RST包,将包对应的流表项置为无效;不活动超时流维护单元负责定时地查找不活动超时流并将其删除;
输出单元负责将表项信息及时输出。
由于采用了上述技术方案,本发明提供的一种基于单向并行多链表的网络数据管理方法和系统,通过一种简单的算法,完成了在流管理中的逐包处理,有效的对不活动超时流进行管控,算法效率高,耗时时间短。而且采用了FPGA为处理核心,成本低廉,十分便于推广和使用。
附图说明
为了更清楚的说明本发明的实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于单向并行多链表的流管理方法主框图;
图2为本发明实施例提供的SDRAM中表项图;
图3为本发明实施例提供的FPGA中Block_ram中存储示意图;
图4为本发明实施例提供的待处理表项信息表;
图5为本发明实施例提供的已处理信表项息表;
具体实施方式
为使本发明的实施例的目的、技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
一种基于单向并行多链表的网络数据管理方法,主要具有如下步骤:
如图1所示:
S100.S1接口是复制流量入口,该接口外部与分光设备相连,接收分光设备复制的链路流量,逐包进行解析,提取每个包的五元组。同时,记录包的到达时间。S2接口将解析五元组送入哈希单元。
S200.哈希单元将S2接口得到的五元组哈希成流ID,其位数根据存储表项数决定,同时将是否为SYN包的判决结果一并通过S3送入查找单元。
S300.所述查找单元分别从SDRam和Block_Ram中读出当前包的表项数据;与所述与该包对应的五元组比较:五元组对应的包是否与表项匹配。
对于SYN包,寻找对应的空白表项,如果匹配成功,则返回地址;对于其它类型的包,寻找对应已经建立的表项,成功则返回地址。
进一步的,为了处理哈希冲突,所述查找分为一级空间查找和二级空间查找,一级空间查找失败,根据流ID生成新的地址,在第二级空间继续查找。
S400.如果匹配成功,则所述表项处理单元负责建立、更新和删除表项。将所述提取的信息和查找得到的表项信息综合处理。主要包括:对SDRAM和Block_ram两部分的写入操作。
对于SYN包将信息通过S7接口写入对应的表项位置,同时通过S8接口将Block_ram中的enable和live位同时置有效;
FIN/RST包通过S8接口将Block_ram中enable位置为无效,表示删除改表项,
中间报文则通过S7接口写入更新相应的报文数、字节数最后报文到达时等信息,同时通过S8接口将live位置有效。
当完成上述准备工作后,所述不活动超时流维护单元开始处理、查找和删除不活动的超时流。
Block_ram主要存储enable和live数组,分别表示对应表项是否存在和该表项当前时间段是否有新包到达,live数组的空间大小只有enable数组的一半,其实际的存储结构如图3所示。将不活动流处理周期设为T,处理不活动超时流具体处理步骤如下:
S500.将所述Block_Ram中live和enable数组清空;
S501.将不活动流处理周期设为T,在0~T/2时间段,将live数组与enable数组的前半段对应;当SYN包到达时将enable和live对应位置1;当中间包到达时,将live对应位置1;当F1N/RST包到达时,将enable和live对应位置0;
S502.在T/2时刻,比较live和enable数组的前半段,当enable与live的对应位分别为1和0时,则该流为不活动超时流:上报不活动超时流信息,将live和enable对应位置0,处理完后将所有的live位清0;
S503.在T/2~T时间段,将live数组与enable数组的后半段对应,当SYN包到达时将enable和live对应位置1;当中间包到达时,将live对应位置1;当F1N/RST包到达时,将enable和live对应位置0;
S504.在T时刻,比较live和enable数组后半段,当enable与live的对应位分别为1和0时,则该流为不活动超时流:上报不活动超时流信息,将live和enable对应位置。,处理完后将所有的live位清0;
S505.重复所述步骤S501-S504,直至完成所有包的处理。
进一步的,当当删除表项、遍历不活动超时流以及用户需求时,所述的输出单元进行步骤S700.将流表项信息封装成netflow格式输出。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种基于单向并行多链表的网络数据管理方法,具有如下步骤:
S100.接收分光设备复制的链路流量,逐包进行解析,提取每个包的五元组;记录每个包到达的时间;
S200.将所述每个五元组哈希成流ID;根据该流ID查找对应的流表项;
S300.从SDRam和Block_Ram中读出当前包的表项数据;与该包对应的五元组比较:根据包的类型判定,五元组对应的包是否与表项匹配;
S400.若匹配,将包信息写入对应的表项位置;
S500.将所述Block_Ram中live和enable数组清空,1ive数组的空间大小只有enab1e数组的一半;Block_ram存储的enable和live数组,分别表示对应表项是否存在和该表项当前时间段是否有新包到达;
S501.将不活动流处理周期设为T,在0~T/2时间段,将live数组与enable数组的前半段对应;当SYN包到达时将enable和live对应位置1;当中间包到达时,将live对应位置1;当F1N/RST包到达时,将enable和live对应位置0;
S502.在T/2时刻,比较live和enable数组的前半段,当enable与live的对应位分别为1和0时,则该流为不活动超时流:上报不活动超时流信息,将live和enable对应位置0,处理完后将所有的live位清0;
S503.在T/2~T时间段,将live数组与enable数组的后半段对应,当SYN包到达时将enable和live对应位置1;当中间包到达时,将live对应位置1;当F1N/RST包到达时,将enable和live对应位置0;
S504.在T时刻,比较live和enable数组后半段,当enable与live的对应位分别为1和0时,则该流为不活动超时流:上报不活动超时流信息,将live和enable对应位置0,处理完后将所有的live位清0;
S505.重复所述步骤S501-S504,直至完成所有包的处理。
2.根据权利要求1所述的一种基于单向并行多链表的网络数据管理方法,其特征还在于:所述步骤S200中,所述的流ID位数根据存储表项决定。
3.根据权利要求1所述的一种基于单向并行多链表的网络数据管理方法,其特征还在于:所述查找分为一级空间查找和二级空间查找,一级空间查找失败,根据流ID生成新的地址,在第二级空间继续查找。
4.根据权利要求1所述的一种基于单向并行多链表的网络数据管理方法,其特征还在于:所述步骤S300中:
对于SYN包,寻找对应的空白表项,成功则返回地址;对于其它类型的包,寻找对应已经建立的表项,成功则返回地址。
5.根据权利要求1所述的一种基于单向并行多链表的网络数据管理方法,其特征还在于:步骤S400中,
对于SYN包:将信息写入对应的表项;同时将Block_Ram中的enable和live位同时置为有效;
对于FIN/RST包,将Block_Ram中enable位置为无效;
对于中间报文,至少在表项中写入更新相应的报文数、字节数和最后报文到达时的信息;同时将live位置有效。
6.根据上述任意一项权利要求所述的一种基于单向并行多链表的网络数据管理方法,其特征还在于:还具有步骤S700.将流表项信息封装成netflow格式输出。
7.一种使用如权利要求6所述的一种基于单向并行多链表的网络数据管理方法的系统,具有:
包信息提取单元,解析链路的包并提取包的五元组,同时记录包的到达时间;
哈希生成单元,对五元组进行哈希计算,得出包对应流ID;查找单元负责根据生产的流ID查找对应的流表项;
表项建立单元,处理SYN包,在对应的空表项位置建立流表项;
表项更新单元,处理流中间数据,读取对应的流表项信息,更新数据并写回原地址;
表项删除单元;负责处理FIN/RST包,将包对应的流表项置为无效;不活动超时流维护单元负责定时地查找不活动超时流并将其删除;
输出单元负责将表项信息及时输出。
8.根据权利要求7所述的系统,其特征还在于:所述包信息提取单元、哈希生成单元、表项建立单元、表项更新单元、表项删除单元、不活动超时流维护单元和输出单元集成在FPGA中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210593571.1A CN103095595B (zh) | 2012-12-30 | 2012-12-30 | 一种基于单向并行多链表的网络数据管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210593571.1A CN103095595B (zh) | 2012-12-30 | 2012-12-30 | 一种基于单向并行多链表的网络数据管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103095595A CN103095595A (zh) | 2013-05-08 |
CN103095595B true CN103095595B (zh) | 2017-07-18 |
Family
ID=48207748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210593571.1A Expired - Fee Related CN103095595B (zh) | 2012-12-30 | 2012-12-30 | 一种基于单向并行多链表的网络数据管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103095595B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325005B (zh) * | 2018-12-03 | 2022-04-22 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN111565125B (zh) * | 2020-07-15 | 2020-10-09 | 成都数维通信技术有限公司 | 一种报文穿越网络流量路径的获取方法 |
CN113132242B (zh) * | 2021-03-19 | 2022-11-15 | 翱捷科技股份有限公司 | 一种网络设备及其共享发送和接收缓存的方法 |
CN114338529B (zh) * | 2021-12-29 | 2024-03-08 | 杭州迪普信息技术有限公司 | 五元组规则匹配方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1767496A (zh) * | 2004-10-28 | 2006-05-03 | 阿尔卡特公司 | 智能选择性的基于流的数据路径结构 |
CN101009645A (zh) * | 2006-12-22 | 2007-08-01 | 清华大学 | 基于cam的宽带网络业务流按每流排队的可扩展的装置 |
CN101335709A (zh) * | 2008-08-07 | 2008-12-31 | 杭州华三通信技术有限公司 | 在流量分析服务器之间实现负载分担的方法和分流设备 |
-
2012
- 2012-12-30 CN CN201210593571.1A patent/CN103095595B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1767496A (zh) * | 2004-10-28 | 2006-05-03 | 阿尔卡特公司 | 智能选择性的基于流的数据路径结构 |
CN101009645A (zh) * | 2006-12-22 | 2007-08-01 | 清华大学 | 基于cam的宽带网络业务流按每流排队的可扩展的装置 |
CN101335709A (zh) * | 2008-08-07 | 2008-12-31 | 杭州华三通信技术有限公司 | 在流量分析服务器之间实现负载分担的方法和分流设备 |
Non-Patent Citations (4)
Title |
---|
Clock-like Flow Replacement schemes for resilient Flow Monitoring;Gunnwoo Nam等;《2009 29th IEEE International Conference on Distributed Computing Systems》;20090626;全文 * |
Robert Koch.Towards Next-Generation Intrusion Detection.《2011 3th International Conference on Cyber Comflict》.2011,全文. * |
Stateful Inspection Firewall Session Table Processing;Xin Li等;《Proceedings of the International Confrence on Information Technology:Coding and Computing》;20050406;全文 * |
何倩等.基于数据链表的工作流管理技术实现.《桂林电子工业学院学报》.2006,第26卷(第4期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN103095595A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103095595B (zh) | 一种基于单向并行多链表的网络数据管理方法及系统 | |
CN103559217B (zh) | 一种面向异构数据库的海量组播数据入库实现方法 | |
CN105337991B (zh) | 一种一体化的报文流查找与更新方法 | |
CN102546299B (zh) | 一种在大流量下进行深度包检测的方法 | |
US10873534B1 (en) | Data plane with flow learning circuit | |
CN109255057B (zh) | 区块生成方法、装置、设备及存储介质 | |
CN104579974B (zh) | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 | |
CN102523219B (zh) | 正则表达式匹配系统及匹配方法 | |
CN102521356B (zh) | 基于确定有限状态自动机的正则表达式匹配设备和方法 | |
CN105653474B (zh) | 一种面向粗粒度动态可重构处理器的配置缓存控制器 | |
CN112118174A (zh) | 软件定义数据网关 | |
CN107241305A (zh) | 一种基于多核处理器的网络协议分析系统及其分析方法 | |
CN107943802A (zh) | 一种日志分析方法和系统 | |
CN105791129A (zh) | 一种OpenFlow流表处理无效数据包的方法 | |
CN104735142B (zh) | 一种大数据实时处理与存储系统及其处理方法 | |
CN206021244U (zh) | 一种分布式计算机集群下的数据采集系统 | |
CN112905571B (zh) | 一种列车轨道交通传感器数据管理方法及装置 | |
CN110825940B (zh) | 网络数据包存储和查询方法 | |
CN106685856A (zh) | 智能变电站海量网络报文处理方法、系统和设备 | |
CN204790999U (zh) | 一种工业大数据收集和处理系统 | |
CN103577160A (zh) | 一种面向大数据的特征提取并行处理方法 | |
CN110297785A (zh) | 一种基于fpga的金融数据流控装置和流控方法 | |
CN105357177A (zh) | 一种数据包过滤规则集处理方法及数据包匹配方法 | |
JP2009017439A (ja) | パケット転送装置およびパケット転送方法。 | |
CN105117177B (zh) | 一种基于单硬盘多分区的大数据管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170718 Termination date: 20181230 |