CN1937574A - 对网络流进行分类、状态跟踪和报文处理的装置和方法 - Google Patents
对网络流进行分类、状态跟踪和报文处理的装置和方法 Download PDFInfo
- Publication number
- CN1937574A CN1937574A CNA2005100864404A CN200510086440A CN1937574A CN 1937574 A CN1937574 A CN 1937574A CN A2005100864404 A CNA2005100864404 A CN A2005100864404A CN 200510086440 A CN200510086440 A CN 200510086440A CN 1937574 A CN1937574 A CN 1937574A
- Authority
- CN
- China
- Prior art keywords
- stream
- message
- record
- network flow
- list item
- 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
Images
Abstract
本发明涉及一种对网络流进行分类、状态跟踪和报文处理的装置和方法,采用基于IP五元组或者其他特定标识的动态流分类方法实现了对流量的细粒度控制,采用多个并行装置和装置内部多进程/线程机制实现了对流量的高速并行处理,通过切分网络流表、设置流记录链表写者唯一、严格规定链表插入和删除操作过程中写指令次序以保持链表的完整性、设置空闲流记录表项缓冲区的可分配表项阈值等措施避免了由于并行处理而引发的大量互斥和同步操作,使得处理效率得到进一步提高。本发明适用于网络处理器、ASIC、FPGA、多内核处理器、对称多处理器(SMP)、软件进程/线程等各种并行处理环境,具有良好的跨平台兼容性、可扩展性和实用性。
Description
技术领域
本发明属于计算机网络和数据通信技术领域,具体涉及一种对网络流进行分类、状态跟踪和报文处理的装置和方法,可以用于路由器、安全网关、流量监测与审计、网络计费、负载均衡等网络设备和软件之中,实现对流量的细粒度控制、提高报文处理的效率。
背景技术
随着VoIP(Voice over IP)、移动数据业务、P2P(Peer-to-Peer)等新兴应用需求的不断增加,网络应用呈现出日新月异的发展趋势,与此同时网络带宽也迅猛增长,QoS(Quality of Service)、攻击/入侵的检测与防御、流量监测与审计、网络计费、负载均衡等网络设施的关键业务功能面临新的和更大的挑战。这些业务功能涉及许多针对会话、用户或者高层协议的处理任务,会话和用户的负载往往达到十万级甚至百万级,需要在对流量进行细粒度控制的同时兼顾报文的高速处理,其核心是实现高效的流分类。基于规则的静态流分类通过在预先建立的规则表中查找与报文相匹配的规则,将报文归类到匹配规则指定的业务流中进行处理。静态流分类的方法不记录流量的上下文状态信息,需要针对每个报文进行查找,因此往往比较复杂且负载较大。一条业务流通常包含来回两个方向的流量,静态流分类方法无法建立这两个方向流量之间的关联关系,不能满足一些应用(如入侵检测)的需要。此外,静态流分类方法还存在规则数限制(通常最多几万条)、规则增量更新等可扩展性问题,具有一定的局限性。而基于IP五元组(源地址、目的地址、源端口/ICMPid、目的端口/ICMP type和code、协议号)或者其他特定标识的动态流分类方法具有粒度细、可扩展性好等优点,因此得到了广泛的应用。
动态流分类方法以一个动态更新的网络流表为基础,其基本操作是:当报文到达时,根据报文包含的IP五元组信息或者其他特定标识查询网络流表,确定报文所属的网络流,并根据对应流记录中的处理策略信息对报文做相应处理。除此以外,动态流分类还要涉及两方面的重要工作:一方面是网络流表的管理,包括流记录的新建、替换、老化和回收;另一方面是流状态跟踪和流记录的更新。由于网络流表的规模往往达到上百万条记录,要处理的报文数目也非常多,因此性能成为首要解决的问题。此外,实用性和跨平台兼容性也是必须考虑的。
综上所述,需要一种性能突出、实用性强、跨平台兼容、能够对网络流进行分类、状态跟踪和报文处理的装置和方法,以实现对流量的细粒度控制和报文的高速处理。
发明内容
本发明的目的是提供一种对网络流进行分类、状态跟踪和报文处理的装置和方法。
根据本发明的一个方面,提供一种对网络流进行分类、状态跟踪和报文处理的装置,该装置包括:基于IP五元组(源地址、目的地址、源端口/ICMPid、目的端口/ICMPtype和code、协议号)或者其他特定标识的动态流分类装置,执行动态流分类操作,根据报文包含的IP五元组信息或者其他特定标识查询网络流表,确定报文所属的网络流,对于找不到对应流记录的报文,交给流表管理装置处理;流状态跟踪装置,执行流状态跟踪操作,根据报文字段内容更新流记录中的流状态、时间戳、老化时间等信息;报文处理装置,执行报文处理操作,根据流记录中的处理策略信息对报文做相应的处理;流表管理装置,用于执行网络流表中流记录的新建、替换、老化和回收操作;网络流表,用于记录网络流信息,流记录采用散列表方式进行组织,采用链表方式解决散列碰撞;空闲流记录表项缓冲区,用于存储空闲的流记录表项,采用先进后出(FILO)方式分配空闲表项。
其中,动态流分类装置、流状态跟踪装置、流表管理装置和报文处理装置的一个重要特征是均包含多个进程或线程,能够进行高速并行处理。流表管理装置的另一个重要特征是:各个进程/线程分别负责网络流表的不同部分,从而保证流表中的每个散列表项及其指向的流记录链表只有一个写者,即链表的插入和删除由唯一的进程/线程负责,且在链表的插入和删除操作过程中通过严格规定写指令次序以保持链表的完整性,从而避免了由于并行处理而引发的大量互斥和同步操作。
根据本发明的另一个方面,提供一种对网络流进行分类、状态跟踪和报文处理的方法,该方法包括:根据报文包含的IP五元组信息或者其他特定标识执行动态流分类操作,确定报文所属的网络流;根据报文字段内容执行流状态跟踪操作,更新流记录;根据流记录中的信息执行报文处理操作,实现相应的业务功能;对于在网络流表中查询不到对应流记录的报文,将其交给流表管理装置,经流表管理装置确认不存在对应流记录后,再根据空闲流记录缓冲区的情况执行流记录新建操作(空闲流记录缓冲区未空)或者流记录替换操作(空闲流记录缓冲区已空);定时执行流记录老化操作,将已经达到或超过老化时间的流记录从网络流表中删除;对已经从网络流表中删除的流记录表项执行回收操作,回收到空闲流记录表项缓冲区中。
所述动态流分类操作的步骤为:
1)以报文包含的IP五元组信息(源地址、目的地址、源端口/ICMPid、目的端口/ICMP type和code、协议号)或者其他特定标识为健值代入散列函数,以运算结果为索引找到网络流表中对应的散列表项。每个散列表项都对应一个流记录链表,以解决散列碰撞问题;
2)将报文的健值依次与链表中各流记录的健值进行比较。如果找到对应的流记录(健值相等),则将报文交给流状态跟踪装置执行流状态跟踪操作;
否则,根据散列表项的索引将报文交给流表管理装置中对应的进程/线程,流表管理装置确认不存在对应流记录后,再根据空闲流记录缓冲区的情况执行流记录新建操作(空闲流记录缓冲区未空)或者流记录替换操作(空闲流记录缓冲区已空)。如果流表管理装置发现已存在对应流记录,则直接将报文交给流状态跟踪装置,执行流状态跟踪操作。
所述流状态跟踪操作的步骤为:
1)将报文对应的流记录加写锁,或者采用互斥写原子指令对流记录内容进行修改;
2)根据报文所属协议(TCP、UDP、ICMP,等等)、报文中与协议状态相关的字段内容(如TCP包头的flags字段)以及报文传输方向更新流记录中的流状态信息;
3)用当前时间更新流记录中的时间戳信息;
4)根据当前流状态更新流记录中的老化时间信息(不同的流状态对应不同的老化时间间隔);
5)解除流记录的写锁;
6)将报文交给报文处理装置,执行报文处理操作。
所述报文处理操作的步骤为:
1)读取报文对应的流记录中的处理策略信息;
2)根据处理策略对报文进行处理,实现相应的业务功能。典型的业务功能包括QoS、包过滤、攻击/入侵的检测与防御、网络地址转换、报文转发、负载均衡、流量统计,等等。
所述流记录新建操作的步骤为:
1)以报文的健值作为流的正向健值(一条网络流包含来回两个方向的流量,根据第一个到达报文的方向区分为正方向流量和反方向流量,两个方向的健值不同),先由正向健值对应的进程/线程进行处理;
2)填写流记录中的正向健值、开始时间、时间戳、老化时间、流状态等信息。进一步的,根据所需业务功能,填写流记录中的处理策略信息,典型的业务功能包括QoS、网络安全、网络地址转换、路由、二层转换、负载均衡、流量统计,等等。接着确定流的反向健值并填写到流记录中;
3)将流记录表项插入网络流表中正向健值对应的流记录链表中;
4)将报文交给流的反向健值对应的的进程/线程处理。将流记录表项插入网络流表中反向健值对应的流记录链表中,然后将报文交给流状态跟踪装置,执行流状态跟踪操作。
所述流记录替换操作的步骤为:
1)依次检查当前流记录链表中各流记录的时间戳和老化时间信息,选择已经达到或者超过老化期限的流记录。如果没有这样的流记录,则采用近期最少使用替换策略(LRU),选择链表中时间戳最老的流记录,或者采用先进先出替换策略(FIFO),选择处于链表头的流记录;
2)对选中的流记录执行表项回收操作。
所述流记录老化操作的步骤为:
1)流表管理装置的每个进程/线程定期扫描其负责的那部分网络流表,将达到或超过老化期限的流记录进行回收;
2)为控制老化操作的开销,需设置一次操作中最多扫描表项的阈值。每次老化操作都从上次结束的地方开始继续进行扫描。
所述流记录表项回收操作的步骤为:
1)先由正向健值对应的进程/线程进行处理。将流记录表项从网络流表中正向健值对应的流记录链表中删除;
2)接着交给反向健值对应的进程/线程进行处理。将流记录表项从网络流表中反向健值对应的流记录链表中删除,并回收到空闲流记录表项缓冲区中。在进行回收前,可能还存在一些正在使用该表项的报文,为了不影响其在回收过程中以及回收以后的正常使用,避免由于回收引起的的同步开销,在回收时不清空表项内容,而是等到该表项下次分配时再清空,同时将空闲流记录表项缓冲区的可分配表项阈值设置成小于最大空闲表项数——由于空闲流记录表项缓冲区采取先进后出的方式分配空闲表项,因此被回收的表项不会被马上重新分配出去,使得当前使用该表项的报文能够顺利地处理完毕。
所述在网络流表中插入流记录表项的操作步骤为:
1)假设要在流记录链表中的流记录表项A和C之间插入一个新的表项B。
首先,读出表项A的下一表项字段的值(即表项C的位置);
2)将读出的值写到表项B的下一表项字段中;
3)将表项B的地址填入表项A的下一表项字段中。
所述在网络流表中删除流记录表项的操作步骤为:
1)假设要在流记录链表中删除流记录表项A和C之间的表项B。首先,读出表项B的下一表项字段的值(即表项C的位置);
2)将读出的值写到表项A的下一表项字段中;
3)保留表项B的内容(包括表项B的下一表项字段)不清空。这样即使当前有沿着该链表进行查询操作的读者且正好到达表项B,也不会因为B被从链表中删除而影响其访问后面的表项。
本发明涉及一种对网络流进行分类、状态跟踪和报文处理的装置和方法,采用基于IP五元组或者其他特定标识的动态流分类方法实现了对流量的细粒度控制,采用多个并行装置和装置内部多进程/线程机制实现了对流量的高速并行处理,通过切分网络流表、设置流记录链表写者唯一、严格规定链表插入和删除操作过程中写指令次序以保持链表的完整性、设置空闲流记录表项缓冲区的可分配表项阈值等措施避免了由于并行处理而引发的大量互斥和同步操作,使得处理效率得到进一步提高。本发明适用于网络处理器、ASIC、FPGA、多内核处理器、对称多处理器(SMP)、软件进程/线程等各种并行处理环境,具有良好的跨平台兼容性、可扩展性和实用性。
附图说明
下面结合附图对本发明进一步详细地说明:
图1为本发明的网络流表示意图;
图2为本发明的空闲流记录表项缓冲区示意图;
图3为根据本发明的实施例对网络流进行分类、状态跟踪和报文处理的装置示意图;
图4为根据本发明的实施例对网络流进行分类、状态跟踪和报文处理的方法流程图;
最佳实施例详细描述
下面参照本发明的附图,更详细地描述本发明的最佳实施例详细描述。
本发明是一种对网络流进行分类、状态跟踪和报文处理的装置和方法。
参见图1,本发明的网络流表用于记录网络流信息,采用散列表方式进行组织,散列表长度为L。采用链表方式解决散列碰撞,每个散列表项都包含一个流记录链表的头指针。由于网络流包含正反两个方向的流量,因此每个流记录表项都分别属于网络流表的两条流记录链表,这两条链表分别对应流记录的正向健值和反向健值。
网络流表散列表项的结构如下表所示:
数据信息(按照存储顺序排列) | 长度(位) | 含义 |
流记录链表头指针(flowlist) | 32 | 指向由对应相同散列值的流记录表项组成的链表 |
方向标识(dir) | 8 | 0表示指向流记录的正向健值,1表示指向流记录的反向健值,下同 |
流记录表项的结构如下表所示:
数据信息(按照存储顺序排列) | 长度(位) | 含义 | |
正向健值(tuple) | 源IP地址(sip) | 32 | 源IP地址 |
目的IP地址(dip) | 32 | 目的IP地址 | |
源端口(sport) | 16 | TCP/UDP源端口 | |
目的端口(dport) | 16 | TCP/UDP目的端口 | |
协议号(proto) | 8 | IP包头协议号字段的值 | |
方向标识(nextdir) | 8 | next字段指向下一表项的正向健值还是反向健值 | |
正向输出设备(outdev) | 16 | 正向输出设备/反向输入设备 | |
正向下一表项指针(next) | 32 | 指向正向健值tuple对应的链表的下一个表项 | |
反向健值(retuple) | 源IP地址(resip) | 32 | 源IP地址 |
目的IP地址(redip) | 32 | 目的IP地址 | |
源端口(resport) | 16 | TCP/UDP源端口 | |
目的端口(redport) | 16 | TCP/UDP目的端口 | |
协议号(reproto) | 8 | IP包头协议号字段的值 | |
方向标识(renextdir) | 8 | renext字段指向下一表项的正向健值还是反向健值 | |
反向输出设备(reoutdev) | 16 | 反向输出设备/正向输入设备 |
反向下一表项指针(renext) | 32 | 指向反向健值retuple对应的链表的下一个表项 |
开始时间(starttime) | 32 | 流记录建立时刻的时间戳 |
时间戳(timestamp) | 32 | 最近到达报文的时间戳 |
老化时间间隔(agetime) | 32 | 老化时间间隔,根据流状态不同而不同 |
流状态(flowstate) | 8 | 流状态 |
写锁(wlock) | 8 | 用于该流记录字段的写互斥 |
处理策略信息(action) | 不定 | 保存各业务功能处理报文时所需要的信息 |
统计信息(stats) | 不定 | 经过的流量等统计信息 |
参见图2,本发明的空闲流记录表项缓冲区用于存储空闲的流记录表项,采用链表方式进行组织,并采用先进后出(FILO)方式分配空闲表项。缓冲区的头尾分别由缓冲区头指针Ph和缓冲区尾指针Pt指示。为了避免由于回收操作引起的同步开销,保证被回收的表项不会被马上重新分配和清空,设置可分配表项阈值Tr和最大空闲表项数S(0<Tr<S)。
参见图3,本发明的对网络流进行分类、状态跟踪和报文处理的装置包括:动态流分类装置1,流状态跟踪装置2,报文处理装置3,以及流表管理装置4。此外,还包括图1-2所示的网络流表和空闲流记录表项缓冲区。动态流分类装置1执行动态流分类操作,根据报文包含的IP五元组信息查询网络流表,确定报文所属的网络流,对于找不到对应流记录的报文,交给流表管理装置4处理。流状态跟踪装置2执行流状态跟踪操作,根据报文字段内容更新流记录中的流状态、时间戳、老化时间等信息。报文处理装置3执行报文处理操作,根据流记录中的处理策略信息(action)对报文做相应的处理,实现相关业务功能。流表管理装置4用于执行网络流表中流记录的新建、替换、老化和回收操作。各装置中均包含N个进程或线程,以实现高速并行处理。为了消除由于并行处理而导致的网络流表访问的互斥和同步开销,需按照流表管理装置中的进程/线程数对网络流表进行切分,流表管理装置中的每个进程/线程独立负责网络流表的一部分,以保证对每条流记录链表只有唯一的写者执行插入和删除操作。此外,为控制每次老化操作的开销,需设置阈值Ta以控制一次老化操作中允许扫描的表项的数目。
参见图4,本发明的对网络流进行分类、状态跟踪和报文处理的方法包括如下步骤:
1)网络报文首先进入动态流分类装置,执行动态流分类操作S1。以报文包含的IP五元组信息为健值代入散列函数H,计算得到索引值i。函数H典型的计算公式为:
(源地址+目的地址+源端口+目的端口+协议号)%L
根据i找到网络流表中对应的散列表项E。将报文的健值依次与散列表项的flowlist字段所指链表中各流记录的健值进行比较。如果找到健值相等的流记录,则将报文交给流状态跟踪装置,转步骤2);否则,将报文交给流表管理装置中第(i%N)个进程/线程,转步骤4);
2)执行流状态跟踪操作S2。将流记录加写锁(wlock),然后根据报文所属协议(TCP、UDP、ICMP,等等)、报文中与协议状态相关的字段内容(如TCP头中的flags字段)以及报文传输方向更新流记录的flowstate字段,根据当前时间更新流记录的timestamp字段,根据当前flowstate字段的值更新流记录的agetime字段(不同的流状态对应不同的老化时间间隔)。解除流记录的写锁,然后将报文交给报文处理装置,转步骤3);
3)执行报文处理操作S3。读取流记录中的action字段,根据其中的处理策略信息对报文进行处理,实现相应的业务功能。典型的业务功能包括QoS、包过滤、攻击/入侵的检测与防御、网络地址转换、报文转发、负载均衡、流量统计,等等;
4)以报文的健值作为流的正向健值,先由正向健值tuple对应的进程/线程进行处理。首先查询网络流表,确认是否已存在对应的流记录。如果存在,则直接将报文交给流状态跟踪装置,转步骤2);否则,从空闲流记录表项缓冲区中分配一个空闲表项并对表项进行清零。如果空闲流记录缓冲区已空(已分配表项数达到阈值Tr),则将报文丢弃,转步骤6);
5)执行流记录新建操作S4。填写流记录中的tuple、starttime、timestamp、agetime、flowstate等字段。进一步的,根据所需业务功能,填写流记录中的action字段。接着确定流的反向健值retuple并填充到流记录中——通常情况下,retuple的计算方法为:
(resip,redip,resport,redport,proto)=(dip,sip,dport,sport,proto)将流记录表项插入网络流表中tuple对应的流记录链表中,然后将报文交给retuple对应的进程/线程处理。retuple对应的进程/线程负责将流记录表项插入网络流表中retuple对应的流记录链表中,然后将报文交给流状态跟踪装置,转步骤3);
6)执行流记录替换操作S5。依次检查当前流记录链表中各流记录的timestamp和agetime字段,选择已经达到或者超过老化期限的流记录。
如果没有这样的流记录,则采用近期最少使用替换策略(LRU),选择链表中时间戳最老的流记录,或者采用先进先出替换策略(FIFO),选择处于链表头的流记录,转步骤7);
7)执行流记录回收操作S6。先由正向健值tuple对应的进程/线程进行处理,将流记录表项从网络流表中tuple对应的流记录链表中删除。接着交给反向健值retuple对应的进程/线程进行处理,将流记录表项从网络流表中retuple对应的流记录链表中删除,回收到空闲流记录表项缓冲区中。在进行回收前,可能还存在一些正在使用该表项的报文,为了不影响其在回收过程中以及回收以后的正常使用,避免由于回收引起的的同步开销,在回收时不清空表项内容,而是等到该表项下次分配时再清空,同时将空闲流记录表项缓冲区的可分配表项阈值设置成小于最大空闲表项数——由于空闲流记录表项缓冲区采取先进后出的方式分配空闲表项,因此被回收的表项不会被马上重新分配出去,使得当前使用该表项的报文能够顺利地处理完毕。
此外,流表管理装置的每个进程/线程还需要定期执行流记录老化操作S7,即扫描其负责的那部分网络流表,将达到或超过老化期限的流记录进行回收。一次老化操作最多扫描Ta个表项,每次老化操作都从上次结束的地方开始继续进行扫描。
本发明的在网络流表中插入流记录表项的操作步骤为:
1)假设要在流记录链表中的流记录表项A和C之间插入一个新的表项B。
首先,读出表项A的next字段的值(即表项C的位置);
2)将读出的值写到表项B的next字段中;
3)将表项B的地址填入表项A的next字段中。
本发明的在网络流表中删除流记录表项的操作步骤为:
1)假设要在流记录链表中删除流记录表项A和C之间的表项B。首先,读出表项B的next字段的值(即表项C的位置);
2)将读出的值写到表项A的next字段中;
3)保留表项B的内容(包括表项B的next字段)不清空。这样即使当前有沿着该链表进行查询操作的读者且正好到达表项B,也不会因为B被从链表中删除而影响其访问后面的表项。
所以,本发明采用基于IP五元组或者其他特定标识的动态流分类方法实现了对流量的细粒度控制,采用多个并行装置和装置内部多进程/线程机制实现了对流量的高速并行处理,通过切分网络流表、设置流记录链表写者唯一、严格规定链表插入和删除操作过程中写指令次序以保持链表的完整性、设置空闲流记录表项缓冲区的可分配表项阈值等措施避免了由于并行处理而引发的大量互斥和同步操作,使得处理效率得到进一步提高。本发明适用于网络处理器、ASIC、FPGA、多内核处理器、对称多处理器(SMP)、软件进程/线程等各种并行处理环境,具有良好的跨平台兼容性、可扩展性和实用性。
本发明已经在已经在申请人研制的基于网络处理器的网络安全处理平台和千兆级安全网关上应用,取得了很好的效果,性能指标优异,实现了本发明的目的。
本发明具有很好的实用性和推广应用前景。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (10)
1.一种对网络流进行分类、状态跟踪和报文处理的装置,该装置包括:
基于IP五元组信息或者特定标识的动态流分类装置,用于执行动态流分类操作,根据报文包含的IP五元组信息或者特定标识查询网络流表,确定报文所属的网络流,对于找不到对应流记录的报文,交给流表管理装置处理;
流状态跟踪装置,用于执行流状态跟踪操作,根据报文字段内容更新流记录中的流状态、时间戳、老化时间信息;
报文处理装置,用于执行报文处理操作,根据流记录中的处理策略信息对报文做相应的处理;
流表管理装置,用于执行网络流表中流记录的新建、替换、老化和回收操作;
网络流表,用于记录网络流信息,流记录采用散列表方式进行组织,采用链表方式解决散列碰撞;以及
空闲流记录表项缓冲区,用于存储空闲的流记录表项,采用先进后出方式分配空闲表项。
2.根据权利要求1所述的对网络流进行分类、状态跟踪和报文处理的装置,其特征在于:动态流分类装置、流状态跟踪装置、流表管理装置和报文处理装置均包含多个进程或线程,能够进行高速并行处理;流表管理装置的各个进程/线程分别负责网络流表的不同部分。
3.一种对网络流进行分类、状态跟踪和报文处理的方法,具体包括以下步骤:
根据报文包含的IP五元组信息或者特定标识执行动态流分类操作,确定报文所属的网络流;
根据报文字段内容执行流状态跟踪操作,更新流记录;
根据流记录中的信息执行报文处理操作,实现相应的业务功能;
对于在网络流表中查询不到对应流记录的报文,将其交给流表管理装置,经流表管理装置确认不存在对应流记录后,再根据空闲流记录缓冲区的情况执行流记录新建操作或者流记录替换操作;
定时执行流记录老化操作,将已经达到或超过老化时间的流记录从网络流表中删除;
对已经从网络流表中删除的流记录表项执行回收操作,回收到空闲流记录表项缓冲区中。
4.根据权利要求3所述的对网络流进行分类、状态跟踪和报文处理的方法,其特征在于,所述动态流分类操作的步骤为:
1)以报文包含的IP五元组信息或者特定标识为健值代入散列函数,以运算结果为索引找到网络流表中对应的散列表项;
2)将报文的健值依次与链表中各流记录的健值进行比较:如果找到对应的流记录,则将报文交给流状态跟踪装置执行流状态跟踪操作;否则,根据散列表项的索引将报文交给流表管理装置中对应的进程/线程,流表管理装置确认不存在对应流记录后,再根据空闲流记录缓冲区的情况执行流记录新建操作或者流记录替换操作。
5.根据权利要求3所述的对网络流进行分类、状态跟踪和报文处理的方法,其特征在于,所述流状态跟踪操作的步骤为:
1)将报文对应的流记录加写锁,或者采用互斥写原子指令对流记录内容进行修改;
2)根据报文所属协议、报文中与协议状态相关的字段内容以及报文传输方向更新流记录中的流状态信息;
3)用当前时间更新流记录中的时间戳信息;
4)根据当前流状态更新流记录中的老化时间信息;
5)解除流记录的写锁;
6)将报文交给报文处理装置,执行报文处理操作。
6.根据权利要求3所述的对网络流进行分类、状态跟踪和报文处理的方法,其特征在于,所述报文处理操作的步骤为:
1)读取报文对应的流记录中的处理策略信息;
2)根据处理策略对报文进行处理,实现相应的业务功能。
7.根据权利要求3所述的对网络流进行分类、状态跟踪和报文处理的方法,其特征在于,所述流记录新建操作的步骤为:
1)以报文的健值作为流的正向健值,先由正向健值对应的进程/线程进行处理;
2)填写流记录中的正向健值、开始时间、时间戳、老化时间、流状态信息;进一步的,根据所需业务功能,填写流记录中的处理策略信息;接着确定流的反向健值并填写到流记录中;
3)将流记录表项插入网络流表中正向健值对应的流记录链表中;
4)将流记录表项插入网络流表中反向健值对应的流记录链表中,然后将报文交给流状态跟踪装置,执行流状态跟踪操作。
8.根据权利要求3所述的对网络流进行分类、状态跟踪和报文处理的方法,其特征在于,所述流记录替换操作的步骤为:
1)依次检查当前流记录链表中各流记录的时间戳和老化时间信息,选择已经达到或者超过老化期限的流记录;如果没有这样的流记录,则采用近期最少使用替换策略,选择链表中时间戳最老的流记录,或者采用先进先出替换策略,选择处于链表头的流记录;
2)对选中的流记录执行表项回收操作。
9.根据权利要求3所述的对网络流进行分类、状态跟踪和报文处理的方法,其特征在于,所述流记录老化操作的步骤为:
1)流表管理装置的每个进程/线程定期扫描其负责的那部分网络流表,将达到或超过老化期限的流记录进行回收;
2)为控制老化操作的开销,需设置一次操作中最多扫描表项的阈值,每次老化操作都从上次结束的地方开始继续进行扫描。
10.根据权利要求3所述的对网络流进行分类、状态跟踪和报文处理的方法,其特征在于,所述流记录表项回收操作的步骤为:
1)先由正向健值对应的进程/线程进行处理,将流记录表项从网络流表中正向健值对应的流记录链表中删除;
2)接着交给反向健值对应的进程/线程进行处理,将流记录表项从网络流表中反向健值对应的流记录链表中删除,并回收到空闲流记录表项缓冲区中;在进行回收前,可能还存在一些正在使用该表项的报文,为了不影响其在回收过程中以及回收以后的正常使用,避免由于回收引起的的同步开销,在回收时不清空表项内容,而是等到该表项下次分配时再清空,同时将空闲流记录表项缓冲区的可分配表项阈值设置成小于最大空闲表项数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100864404A CN100459574C (zh) | 2005-09-19 | 2005-09-19 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100864404A CN100459574C (zh) | 2005-09-19 | 2005-09-19 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1937574A true CN1937574A (zh) | 2007-03-28 |
CN100459574C CN100459574C (zh) | 2009-02-04 |
Family
ID=37954848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100864404A Expired - Fee Related CN100459574C (zh) | 2005-09-19 | 2005-09-19 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100459574C (zh) |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009070994A1 (fr) * | 2007-11-30 | 2009-06-11 | Hangzhou H3C Technologies Co., Ltd. | Procédé et dispositif d'appariement de règle de messagerie |
WO2009146611A1 (zh) * | 2008-06-04 | 2009-12-10 | 华为技术有限公司 | 具有时钟信息报文的处理方法、装置及系统 |
CN101729240A (zh) * | 2009-11-13 | 2010-06-09 | 北京中创信测科技股份有限公司 | 一种实现时间同步的方法和装置 |
CN101827021A (zh) * | 2010-03-16 | 2010-09-08 | 杭州华三通信技术有限公司 | 一种QoS分类标记方法、设备和系统 |
CN101420371B (zh) * | 2008-07-03 | 2010-12-01 | 江苏华丽网络工程有限公司 | Asic融合网络设备的一种动态功能支持方法及系统 |
CN102004673A (zh) * | 2010-11-29 | 2011-04-06 | 中兴通讯股份有限公司 | 多核处理器负载均衡的处理方法及系统 |
CN101252541B (zh) * | 2008-04-09 | 2011-05-04 | 中国科学院计算技术研究所 | 一种网络流量分类模型的建立方法及相应系统 |
CN101635676B (zh) * | 2009-08-31 | 2011-07-27 | 杭州华三通信技术有限公司 | 一种报文处理方法和一种网络设备 |
CN101610209B (zh) * | 2008-11-28 | 2011-08-03 | 北京网康科技有限公司 | 一种多核并行的网络业务流处理方法及设备 |
CN101572670B (zh) * | 2009-05-07 | 2011-08-10 | 成都市华为赛门铁克科技有限公司 | 一种基于流表的数据包处理方法、装置和网络系统 |
CN102385588A (zh) * | 2010-08-31 | 2012-03-21 | 国际商业机器公司 | 用于提高数据并行插入的性能的方法和系统 |
CN101753332B (zh) * | 2008-12-03 | 2012-08-22 | 财团法人资讯工业策进会 | 事件关联分析方法和系统 |
CN102761517A (zh) * | 2011-04-25 | 2012-10-31 | 工业和信息化部电信传输研究所 | 一种高速网络的内容还原方法 |
CN103023728A (zh) * | 2013-01-15 | 2013-04-03 | 中国人民解放军信息工程大学 | 流监控方法 |
CN103380600A (zh) * | 2011-02-17 | 2013-10-30 | 日本电气株式会社 | 网络系统和网络流跟踪方法 |
CN103748842A (zh) * | 2013-06-26 | 2014-04-23 | 华为技术有限公司 | 一种转发数据包的方法、装置和路由设备 |
CN104009924A (zh) * | 2014-05-19 | 2014-08-27 | 北京东土科技股份有限公司 | 一种基于tcam和fpga的报文处理方法及装置 |
CN104348716A (zh) * | 2013-07-23 | 2015-02-11 | 杭州华三通信技术有限公司 | 一种报文处理方法及设备 |
WO2015114646A1 (en) * | 2014-01-30 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Analyzing network traffic in a computer network |
CN105144087A (zh) * | 2012-12-20 | 2015-12-09 | 恩邦德网络公司 | 使用多核心处理器的并行处理 |
WO2016206520A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 一种流表遍历业务的实现方法及装置 |
CN106330582A (zh) * | 2015-06-18 | 2017-01-11 | 中兴通讯股份有限公司 | 一种共享上网移动终端数量的检测方法及装置 |
CN107317759A (zh) * | 2017-06-13 | 2017-11-03 | 国家计算机网络与信息安全管理中心 | 一种网卡的线程级动态均衡调度方法 |
CN107508757A (zh) * | 2017-08-15 | 2017-12-22 | 网宿科技股份有限公司 | 多进程负载均衡方法及装置 |
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
CN108092914A (zh) * | 2016-11-21 | 2018-05-29 | 华为技术有限公司 | 网络流量负载均衡调度方法和装置 |
CN108243107A (zh) * | 2018-01-30 | 2018-07-03 | 盛科网络(苏州)有限公司 | 一种动态调整硬件表项老化周期的方法及装置 |
CN109410445A (zh) * | 2018-10-31 | 2019-03-01 | 湖南金码智能设备制造有限公司 | 一种多个售货机组柜的方法和自助购物系统 |
CN109831394A (zh) * | 2017-11-23 | 2019-05-31 | 杭州华为数字技术有限公司 | 数据处理方法、终端以及计算机存储介质 |
CN110471944A (zh) * | 2018-05-11 | 2019-11-19 | 北京京东尚科信息技术有限公司 | 指标统计方法、系统、设备及存储介质 |
CN110851334A (zh) * | 2019-11-19 | 2020-02-28 | 深圳市网心科技有限公司 | 流量统计方法、电子设备、系统及介质 |
CN111107042A (zh) * | 2018-10-26 | 2020-05-05 | 广州汽车集团股份有限公司 | 报文解析方法、装置、计算机设备和存储介质 |
CN112311895A (zh) * | 2020-11-12 | 2021-02-02 | 中国电子科技集团公司第五十四研究所 | 一种基于sdn的透明模式tcp流负载均衡方法及设备 |
CN112667375A (zh) * | 2020-12-22 | 2021-04-16 | 杭州东信北邮信息技术有限公司 | 一种基于大数据业务的任务调度方法及系统 |
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN113347090A (zh) * | 2020-02-18 | 2021-09-03 | 华为技术有限公司 | 报文处理方法、转发设备以及报文处理系统 |
CN113518130A (zh) * | 2021-08-19 | 2021-10-19 | 北京航空航天大学 | 一种基于多核处理器的分组突发负载均衡方法及系统 |
CN115150331A (zh) * | 2022-09-02 | 2022-10-04 | 无锡沐创集成电路设计有限公司 | 信息处理方法、装置、电子设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5379297A (en) * | 1992-04-09 | 1995-01-03 | Network Equipment Technologies, Inc. | Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode |
JP2003298638A (ja) * | 2002-04-05 | 2003-10-17 | Matsushita Electric Ind Co Ltd | パケット伝送装置及びその方法 |
FI112421B (fi) * | 2002-10-29 | 2003-11-28 | Tellabs Oy | Menetelmä ja laitteisto siirtoyhteyskapasiteetin vuorottamiseksi pakettikytkentäisten tietoliikennevoiden kesken |
CN100377523C (zh) * | 2003-10-28 | 2008-03-26 | 华为技术有限公司 | 一种数据业务信息的采集装置及用该装置计费的方法 |
CN1633111B (zh) * | 2005-01-14 | 2010-04-28 | 中国科学院计算技术研究所 | 高速网络业务流分类方法 |
-
2005
- 2005-09-19 CN CNB2005100864404A patent/CN100459574C/zh not_active Expired - Fee Related
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009070994A1 (fr) * | 2007-11-30 | 2009-06-11 | Hangzhou H3C Technologies Co., Ltd. | Procédé et dispositif d'appariement de règle de messagerie |
CN101252541B (zh) * | 2008-04-09 | 2011-05-04 | 中国科学院计算技术研究所 | 一种网络流量分类模型的建立方法及相应系统 |
WO2009146611A1 (zh) * | 2008-06-04 | 2009-12-10 | 华为技术有限公司 | 具有时钟信息报文的处理方法、装置及系统 |
CN101420371B (zh) * | 2008-07-03 | 2010-12-01 | 江苏华丽网络工程有限公司 | Asic融合网络设备的一种动态功能支持方法及系统 |
CN101610209B (zh) * | 2008-11-28 | 2011-08-03 | 北京网康科技有限公司 | 一种多核并行的网络业务流处理方法及设备 |
CN101753332B (zh) * | 2008-12-03 | 2012-08-22 | 财团法人资讯工业策进会 | 事件关联分析方法和系统 |
CN101572670B (zh) * | 2009-05-07 | 2011-08-10 | 成都市华为赛门铁克科技有限公司 | 一种基于流表的数据包处理方法、装置和网络系统 |
CN101635676B (zh) * | 2009-08-31 | 2011-07-27 | 杭州华三通信技术有限公司 | 一种报文处理方法和一种网络设备 |
CN101729240B (zh) * | 2009-11-13 | 2012-10-10 | 北京中创信测科技股份有限公司 | 一种实现时间同步的方法和装置 |
CN101729240A (zh) * | 2009-11-13 | 2010-06-09 | 北京中创信测科技股份有限公司 | 一种实现时间同步的方法和装置 |
CN101827021A (zh) * | 2010-03-16 | 2010-09-08 | 杭州华三通信技术有限公司 | 一种QoS分类标记方法、设备和系统 |
CN101827021B (zh) * | 2010-03-16 | 2012-11-28 | 杭州华三通信技术有限公司 | 一种服务质量QoS分类标记方法、设备和系统 |
US8832036B2 (en) | 2010-08-31 | 2014-09-09 | International Business Machines Corporation | Performance of concurrent data inserting |
CN102385588B (zh) * | 2010-08-31 | 2014-08-06 | 国际商业机器公司 | 用于提高数据并行插入的性能的方法和系统 |
CN102385588A (zh) * | 2010-08-31 | 2012-03-21 | 国际商业机器公司 | 用于提高数据并行插入的性能的方法和系统 |
CN102004673A (zh) * | 2010-11-29 | 2011-04-06 | 中兴通讯股份有限公司 | 多核处理器负载均衡的处理方法及系统 |
CN103380600A (zh) * | 2011-02-17 | 2013-10-30 | 日本电气株式会社 | 网络系统和网络流跟踪方法 |
US9313128B2 (en) | 2011-02-17 | 2016-04-12 | Nec Corporation | Network system and network flow tracing method |
US9560177B2 (en) | 2011-02-17 | 2017-01-31 | Nec Corporation | Network system and network flow tracing method |
CN102761517A (zh) * | 2011-04-25 | 2012-10-31 | 工业和信息化部电信传输研究所 | 一种高速网络的内容还原方法 |
CN102761517B (zh) * | 2011-04-25 | 2015-06-24 | 工业和信息化部电信传输研究所 | 一种高速网络的内容还原方法 |
CN105144087A (zh) * | 2012-12-20 | 2015-12-09 | 恩邦德网络公司 | 使用多核心处理器的并行处理 |
CN103023728B (zh) * | 2013-01-15 | 2016-03-02 | 中国人民解放军信息工程大学 | 流监控方法 |
CN103023728A (zh) * | 2013-01-15 | 2013-04-03 | 中国人民解放军信息工程大学 | 流监控方法 |
CN103748842A (zh) * | 2013-06-26 | 2014-04-23 | 华为技术有限公司 | 一种转发数据包的方法、装置和路由设备 |
CN103748842B (zh) * | 2013-06-26 | 2017-04-12 | 华为技术有限公司 | 一种转发数据包的方法、装置和路由设备 |
CN104348716A (zh) * | 2013-07-23 | 2015-02-11 | 杭州华三通信技术有限公司 | 一种报文处理方法及设备 |
US9979613B2 (en) | 2014-01-30 | 2018-05-22 | Hewlett Packard Enterprise Development Lp | Analyzing network traffic in a computer network |
WO2015114646A1 (en) * | 2014-01-30 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Analyzing network traffic in a computer network |
CN104009924A (zh) * | 2014-05-19 | 2014-08-27 | 北京东土科技股份有限公司 | 一种基于tcam和fpga的报文处理方法及装置 |
CN104009924B (zh) * | 2014-05-19 | 2017-04-12 | 北京东土科技股份有限公司 | 一种基于tcam和fpga的报文处理方法及装置 |
CN106330582A (zh) * | 2015-06-18 | 2017-01-11 | 中兴通讯股份有限公司 | 一种共享上网移动终端数量的检测方法及装置 |
WO2016206520A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 一种流表遍历业务的实现方法及装置 |
CN106330694A (zh) * | 2015-06-26 | 2017-01-11 | 中兴通讯股份有限公司 | 一种流表遍历业务的实现方法及装置 |
CN108092914A (zh) * | 2016-11-21 | 2018-05-29 | 华为技术有限公司 | 网络流量负载均衡调度方法和装置 |
CN107317759A (zh) * | 2017-06-13 | 2017-11-03 | 国家计算机网络与信息安全管理中心 | 一种网卡的线程级动态均衡调度方法 |
CN107508757A (zh) * | 2017-08-15 | 2017-12-22 | 网宿科技股份有限公司 | 多进程负载均衡方法及装置 |
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
CN109831394A (zh) * | 2017-11-23 | 2019-05-31 | 杭州华为数字技术有限公司 | 数据处理方法、终端以及计算机存储介质 |
CN108243107B (zh) * | 2018-01-30 | 2020-11-20 | 盛科网络(苏州)有限公司 | 一种动态调整硬件表项老化周期的方法及装置 |
CN108243107A (zh) * | 2018-01-30 | 2018-07-03 | 盛科网络(苏州)有限公司 | 一种动态调整硬件表项老化周期的方法及装置 |
CN110471944A (zh) * | 2018-05-11 | 2019-11-19 | 北京京东尚科信息技术有限公司 | 指标统计方法、系统、设备及存储介质 |
CN111107042B (zh) * | 2018-10-26 | 2021-03-09 | 广州汽车集团股份有限公司 | 报文解析方法、装置、计算机设备和存储介质 |
CN111107042A (zh) * | 2018-10-26 | 2020-05-05 | 广州汽车集团股份有限公司 | 报文解析方法、装置、计算机设备和存储介质 |
CN109410445A (zh) * | 2018-10-31 | 2019-03-01 | 湖南金码智能设备制造有限公司 | 一种多个售货机组柜的方法和自助购物系统 |
CN110851334A (zh) * | 2019-11-19 | 2020-02-28 | 深圳市网心科技有限公司 | 流量统计方法、电子设备、系统及介质 |
CN113347090A (zh) * | 2020-02-18 | 2021-09-03 | 华为技术有限公司 | 报文处理方法、转发设备以及报文处理系统 |
CN112311895A (zh) * | 2020-11-12 | 2021-02-02 | 中国电子科技集团公司第五十四研究所 | 一种基于sdn的透明模式tcp流负载均衡方法及设备 |
CN112667375A (zh) * | 2020-12-22 | 2021-04-16 | 杭州东信北邮信息技术有限公司 | 一种基于大数据业务的任务调度方法及系统 |
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN113518130A (zh) * | 2021-08-19 | 2021-10-19 | 北京航空航天大学 | 一种基于多核处理器的分组突发负载均衡方法及系统 |
CN115150331A (zh) * | 2022-09-02 | 2022-10-04 | 无锡沐创集成电路设计有限公司 | 信息处理方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100459574C (zh) | 2009-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100459574C (zh) | 对网络流进行分类、状态跟踪和报文处理的装置和方法 | |
CN100448225C (zh) | 一种无需ip分片重组实现动态流分类的装置和方法 | |
CN107566206B (zh) | 一种流量测量方法、设备及系统 | |
CN110301120B (zh) | 流分类装置、方法和系统 | |
US9154442B2 (en) | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors | |
Ramabhadran et al. | Efficient implementation of a statistics counter architecture | |
Einziger et al. | Counting with tinytable: Every bit counts! | |
CN108337172A (zh) | 大规模OpenFlow流表分级存储架构与加速查找方法 | |
CN101827073B (zh) | 跟踪片段数据流 | |
CN101650730B (zh) | 数据流中带权值频繁项挖掘方法和系统 | |
US9128686B2 (en) | Sorting | |
CN101026576B (zh) | 兼顾匹配策略的处理分段报文串模式匹配的方法及装置 | |
CN111988231B (zh) | 一种掩码五元组规则匹配的方法及装置 | |
Zhao et al. | Dhs: Adaptive memory layout organization of sketch slots for fast and accurate data stream processing | |
CN113518130B (zh) | 一种基于多核处理器的分组突发负载均衡方法及系统 | |
Canini et al. | Experience with high-speed automated application-identification for network-management | |
CN111200542B (zh) | 一种基于确定性替换策略的网络流量管理方法及系统 | |
Tong et al. | Online heavy hitter detector on FPGA | |
Xie et al. | Index–Trie: Efficient archival and retrieval of network traffic | |
Fuchino et al. | Accelerating packet classification via direct dependent rules | |
Xie et al. | Towards Capacity-Adjustable and Scalable Quotient Filter Design for Packet Classification in Software-Defined Networks | |
KR100770643B1 (ko) | Tcam을 이용한 고성능 패킷 분류 방법 및 그 장치 | |
Ye et al. | UA-Sketch: An Accurate Approach to Detect Heavy Flow based on Uninterrupted Arrival | |
Whitehead et al. | An efficient hybrid approach to per-flow state tracking for high-speed networks | |
Gong et al. | SSS: An accurate and fast algorithm for finding top-k hot items in data streams |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090204 Termination date: 20140919 |
|
EXPY | Termination of patent right or utility model |