CN101572670B - 一种基于流表的数据包处理方法、装置和网络系统 - Google Patents

一种基于流表的数据包处理方法、装置和网络系统 Download PDF

Info

Publication number
CN101572670B
CN101572670B CN2009101377004A CN200910137700A CN101572670B CN 101572670 B CN101572670 B CN 101572670B CN 2009101377004 A CN2009101377004 A CN 2009101377004A CN 200910137700 A CN200910137700 A CN 200910137700A CN 101572670 B CN101572670 B CN 101572670B
Authority
CN
China
Prior art keywords
stream table
hash
list item
packet
interim
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
Application number
CN2009101377004A
Other languages
English (en)
Other versions
CN101572670A (zh
Inventor
熊鹰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Digital Technologies Chengdu Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN2009101377004A priority Critical patent/CN101572670B/zh
Publication of CN101572670A publication Critical patent/CN101572670A/zh
Application granted granted Critical
Publication of CN101572670B publication Critical patent/CN101572670B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例公开了一种基于流表的数据包处理方法,所述流表包括哈希单元和临时流表,所述方法包括:对数据包中的键值进行两次哈希,分别得到一次哈希值和二次哈希值;查找与所述一次哈希值对应的哈希单元;在与所述哈希单元对应的临时流表中查找与所述二次哈希值匹配的临时流表表项,并按照匹配的临时流表表项中的第一流控制信息对数据包进行处理。本发明技术方案由于在临时流表中不保存Key值,临时流表规格较小,且在匹配时只需要将二次哈希值进行匹配,而不需要与流表表项中的Key值进行一一匹配,因此可以节约存储空间并提高CPU性能。

Description

一种基于流表的数据包处理方法、装置和网络系统
技术领域
本发明涉及通信技术领域,具体涉及一种基于流表的数据包处理方法、装置和和网络系统。
背景技术
基于流表的网际协议(IP,International Protocol)数据包转发是目前许多业务相关的网络设备如防火墙、虚拟专用网络(VPN,Virtual Private Network)设备采用的技术。基于流表的快速转发要求为每个目的地建立一个转发表项,与传统的IP转发路由器或者交换机不同,流表的用途是记录基于传输控制协议/数据用户报协议(TCP/UDP,Transmission Control Protocol/User DatagramProtocol)或应用层的一些状态,以服务于对应的业务。
流表也称会话表(Session Table),是IP数据包转发的核心数据表,流表的建立和维护都较为复杂,存在流表表项数量规格问题。表项过多,可能浪费内存,增加成本;表项过少,则有时候可能会不够使用而影响转发。通常的做法是从数量上折中,满足大部分场景需要,特殊场景下流表表项不够时,采取默认的数据包处理方式。
现有技术中常见的流表包括哈希单元和正式流表,正式流表的表项内容随着业务的不同而有所不同,通常包括:用于精确比较的键(Key)值(Key值通常为数据包的五元组信息(源IP地址,目的IP地址,协议类型,源端口号,目的端口号))、用于老化的时间戳、数据流的统计信息等状态信息。其中,一个数据流中的数据包具有相同的Key值,具有不同Key值的数据包属于不同的数据流。
现有技术中通常采用如下方法建立流表并对数据包进行处理:对数据包的Key值进行哈希(也译作散列,hash)后,找到对应的哈希单元,并将所述数据包中的Key值与正式流表中各个表项的Key值进行匹配,如果与某个表项的Key值匹配,则修改所述正式流表中对应表项的流状态信息,并按照所述对应表项中的流控制信息对数据包进行处理,例如可以根据具体的流控制信息对数据包进行转发、流量复制、带宽限制,或者将所述数据包丢弃。当正式流表中没有与该数据包的Key值匹配的表项时,则在该正式流表中新建流表表项,并将该数据包的Key值以及该数据包所在数据流的状态信息和控制信息存储于该正式流表表项中。创建正式流表表项时,可以采用链表或二叉树等方式处理哈希值相同而Key值不同的各个表项之间的关系。
在对现有技术的研究和实践过程中,本发明的发明人发现,采用现有技术处理数据包时,由于流表表项内容包括Key值、流状态信息以及流控制信息,数据流表规格较大,在对数据包进行处理过程中,需要消耗较多的CPU资源对数据流表进行维护,然而,在当前互联网上,包数很少的短连接非常多,尤其是涉及部分P2P应用以及DoS攻击等,此时,若采用现有技术中的流表对这些类型的数据包进行处理会占用大量的CPU资源,降低资源利用效率。
发明内容
本发明实施例的目的在于提供一种基于流表的数据包处理方法、装置和网络系统,能够提高资源利用效率。
根据本发明实施例的一个方面,提供了一种基于流表的数据包处理方法,所述流表包括哈希单元和临时流表,所述方法包括:
对数据包中的键值进行两次哈希,分别得到一次哈希值和二次哈希值,所述两次哈希采用不同的哈希算法,或者从所述数据包的键值中选取不同的内容进行哈希,或者对两次哈希值设定不同的哈希值长度;
查找与所述一次哈希值对应的哈希单元;
在与所述哈希单元对应的临时流表中查找与所述二次哈希值匹配的临时流表表项,并按照匹配的临时流表表项中的第一流控制信息对数据包进行处理。
根据本发明实施例的另一方面,提供了一种数据包处理装置,所述装置中预置有流表,所述流表包括哈希单元和临时流表,所述装置包括:
哈希处理单元,用于对数据包中的键值进行两次哈希,得到一次哈希值和二次哈希值,所述两次哈希采用不同的哈希算法,或者从所述数据包的键值中选取不同的内容进行哈希,或者对两次哈希值设定不同的哈希值长度;
第一查找单元,用于查找与所述一次哈希值对应的哈希单元;
第二查找单元,用于在所述哈希单元所对应的临时流表中查找与所述二次哈希值匹配的临时流表表项;
第一处理单元,用于根据与所述二次哈希值匹配的临时流表表项中的第一流控制信息对数据包进行处理。
根据本发明实施例的再一方面,提供一种数据处理系统,包括数据包接收装置和数据包处理装置,所述数据包接收装置用于接收数据包;所述数据包处理装置用于对数据包接收装置所接收到的数据包进行控制处理,所述数据包处理装置中预置有流表,所述流表包括哈希单元和临时流表,所述数据包处理装置包括:
哈希处理单元,用于对数据包中的键值进行两次哈希,得到一次哈希值和二次哈希值;
第一查找单元,用于查找与所述一次哈希值对应的哈希单元;
第二查找单元,用于在所述哈希单元所对应的临时流表中查找与所述二次哈希值匹配的临时流表表项;
第一处理单元,用于根据与所述二次哈希值匹配的临时流表表项中的第一流控制信息对数据包进行处理。
本发明实施例所采用的流表中包含哈希单元和临时流表,其中:临时流表的表项内容包含二次哈希值信息和第一流控制信息,处理数据包时,对数据包中的Key值时进行两次哈希,并根据一次哈希值查找到对应的哈希单元,在所述找到的哈希单元所对应的临时流表中查找与所述二次哈希值匹配的临时流表表项,并按照与所述二次哈希值匹配的临时流表表项中的第一流控制信息对数据包进行处理。由于临时流表中不保存Key值,临时流表规格较小,因此可以节约存储空间,且在匹配时只需要将二次哈希值进行匹配,而不需要与流表表项中的Key值进行一一匹配,因此可以提高CPU性能,综上可知,上述方案可以提高CPU以及内存等资源的利用效率。本发明实施例尤其适用于当前互联网上,数据包数很少的短连接非常多的情况,例如部分P2P应用以及扫描和DoS攻击流量的情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中流表结构示意图;
图2是本发明实施例一基于流表的数据包转发方法流程图;
图3是本发明实施例中所示的一种流表结构示意图;
图4是本发明实施例二基于流表的数据包处理方法流程图;
图5是本发明实施例三基于流表的数据包处理方法流程图;
图6是本发明实施例四基于流表的数据包处理方法流程图;
图7是本发明实施例五数据包处理装置结构示意图;
图8是本发明实施例六数据包处理装置结构示意图;
图9是本发明实施例七数据包处理装置结构示意图;
图10是本发明实施例八数据处理系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在实现本发明实施例的过程中,发明人发现,当前互联网上,数据包数很少的短连接非常多,如果为每个数据流都建立完整的正式流表表项(表项内容包括Key值、流状态信息及流控制信息),则会占用过多的内存,并且使CPU负荷过重。例如,完整的正式流表中每个表项都需要保存Key值,对于IP数据包来说,包括IP五元组(源IP地址,目的IP地址,IP协议号,源端口号,目的端口号),由于保存了更多关于数据流的信息,因此需要消耗更多的内存资源,并且相应地,也需要更多的CPU资源进行匹配和处理。而对于如部分P2P应用以及扫描和拒绝服务(DoS,Denial of Service)攻击流量,数据包可能是无效的,这些无效的数据包使得CPU利用效率降低,而如果不加区分的对新建数据流不建流表或者不加区分地对已建流表进行老化,都可能损害正常业务,且无法避免无效数据流对内存及CPU资源的消耗。
参照图1,为现有技术中流表结构示意图,包括哈希单元11和正式流表12,正式流表的表项内容通常包括:用于精确比较的Key值(如IP五元组(源IP地址,目的IP地址,IP协议号,源端口号,目的端口号)),用于老化的时间戳,数据流的统计信息等流状态信息(随业务不同而不同,例如,作网络地址转换(NAT,Network Address Translation)时,需要保存NAT后的IP地址信息)以及流控制信息。流控制信息通常包括:对数据包进行转发、流量复制、带宽限制,或者将所述数据包丢弃。当接收到的数据包与所述正式流表中某个表项的Key值匹配时,修改所述匹配表项的流状态信息,如用于老化的时间戳、数据流的统计信息等,并按照所述流控制信息中的具体内容对数据包进行处理。
以下首先介绍本发明实施例数据包处理过程中所采用的流表,该流表包括:哈希单元和临时流表,临时流表中的表项内容包括:二次哈希值信息和第一流控制信息。第一流控制信息可以只是对数据包进行丢弃或转发,以进一步提高CPU资源的利用效率,减少CPU资源消耗。以下通过具体实施例介绍采用该流表的数据包处理方法:
图2为本发明实施例一基于流表的数据包处理方法流程图,其中流表包括:哈希单元和临时流表,临时流表中的表项内容包括:二次哈希值信息和第一流控制信息。该方法包括:
S201、对数据包中的Key值进行两次哈希,分别得到一次哈希值和二次哈希值;
S202、查找与所述一次哈希值对应的哈希单元;
S203、在找到的哈希单元所对应的临时流表中查找与所述二次哈希值匹配的临时流表表项,如果找到与所述二次哈希值匹配的临时流表表项,则执行S204;否则,结束流程;
S204、按照所述匹配的临时流表表项的第一流控制信息对数据包进行处理。
在具体实施中,第一流控制信息可以只是对数据包进行转发或者丢弃,而不包含流量复制、带宽限制等复杂的流控制操作,以进一步减少CPU消耗,提高CPU资源的利用效率。
从本实施例可以看出,由于临时流表中不保存Key值,临时流表规格较正式流表小很多,因此可以节约存储空间,且在匹配时只需要将二次哈希值进行匹配,而不需要与流表表项中的Key值进行一一匹配,因此可以提高CPU性能。综上可知,上述数据包处理方法可以提高CPU以及内存等资源的利用效率。本发明实施例尤其适用于当前互联网上,数据包数很少的短连接非常多的情况,例如部分P2P应用以及扫描和DoS攻击流量的情况。
本发明发明人可以在上述流表基础上进一步扩展,使其兼容现有正式流表,参照图3,为本发明实施例中一种流表结构示意图,包括哈希单元11、正式流表12和临时流表31,其中临时流表31的表项内容包含二次哈希值311和统计值312和第一流控制信息313。正式流表12则包括Key值、流控制信息和第二流控制信息(图3中未示出)。
在具体实施中,如图3所示,一个哈希单元下有一个临时流表,临时流表可以通过指针指向正式流表。每个临时流表中可以有至少一个表项,如图3中所示的表项1、表项2......表项M,每个临时流表表项内容包括:二次哈希值311和统计值312和第一流控制信息313。统计值312可以是数据包数统计值,也可以是字节数统计值。
通常,为了避免不同的数据流产生混淆(即不同的数据流经过一次哈希后得到相同哈希值),提高数据包处理的准确性,减少误判率,本发明实施例采用对数据包中的Key值进行两次哈希的方法。并且两次哈希可以采用不同的哈希算法,也可以从所述数据包的Key值中选取不同的内容进行哈希(例如,第一次哈希时对Key值所有内容进行哈希,第二次哈希时只对源IP地址和目的IP地址进行哈希),还可以对两次哈希值设定不同的哈希值长度,例如:一次哈希值设为30bit、二次哈希值设为20比特。同时,为进一步减小CPU负荷,第二次哈希可以做得比第一次哈希更简化。由于算法不同且可以选择数据包中Key值的不同内容进行哈希,哈希值长度也可以灵活设置,因此数据包通过两次哈希后得到相同的哈希值的概率很小,提高了数据包处理的准确性。
除了统计值,临时流表中还可以保留一些其他可选的流状态信息。例如,记录时间戳等。其中,时间戳可以是第一次收到数据包报文的时间,也可以是最后一次收到数据包报文的时间,或者二者兼有。
可以理解的是,为了进一步减少CPU负荷,临时流表中的表项数量可以根据用户的需要灵活确定。例如,假设使用传统的正式流表时,正式流表中不同Key值的数据包哈希到同一哈希单元下的概率为30%,则临时流表中可以只放1-2个表项。
此外,如图3所示,在每个哈希单元下还可以记录该哈希单元下的流表信息以及指向流表的指针。其中,在流表信息中可以保存与该哈希单元对应的正式流表表项数目与临时流表表项数目,此外,在各个哈希单元下还可以预留一些区域以供后续扩展使用,如图3中“预留”区域所示。
图4是本发明实施例二基于流表的数据包处理方法流程图,该处理方法可基于图3所示流表对数据包进行处理并对图3所示流表进行维护,所述流表包括:哈希单元、临时流表和正式流表,其中:所述临时流表表项内容包括:二次哈希值信息、统计值和流控制信息;正式流表表项内容包括Key值、数据包所在的流的状态信息和流控制信息等。所述统计值可以是数据包数统计值,也可以数据包的字节数统计值等信息,为了清楚的进行说明,本发明以数据包数统计值为例进行描述。所述流控制信息具体可以是对数据包设置的一些操作,如丢弃,转发,流量复制,以及对数据流进行带宽限制等。如图4所示,该方法包括:
S401、对数据包中的Key值进行两次哈希,分别得到一次哈希值和二次哈希值;
例如接收到的数据包中的Key值为IP五元组,通过将所述Key值进行两次哈希,分别得到一次哈希值和二次哈希值。两次哈希通常可以采用不同的哈希算法。
S402、查找与所述一次哈希值对应的哈希单元;
S403、在找到的哈希单元所对应的所述临时流表中查找与所述二次哈希值匹配的临时流表表项,如果找到与所述二次哈希值匹配的临时流表表项,则执行S404;如果未找到与所述二次哈希值匹配的临时流表表项,则结束流程;
S404、按照匹配的临时流表表项中的第一流控制信息对数据包进行处理并修改所述匹配的临时流表表项中的数据包数统计值;
具体的,如果二次哈希值与临时流表中某表项中的二次哈希值匹配,可以将所述匹配的临时流表表项中的数据包数统计值加1。
可以理解的是,当所述统计值为数据包的字节数统计值时,则按照匹配的临时流表表项中的第一流控制信息对数据包进行处理并增加统计到的流量中的字节数。
可以理解的是,所述临时流表中还可以包含其他一些自定义的流状态信息,如记录时间戳等,当包括这些自定义的流状态信息时,则需要同时进行相应修改。
在具体实施中,流控制信息可以只包括对数据包进行转发或丢弃的指示信息,则可以根据所述流控制信息对数据包进行相应处理。由于不需要对数据包进行流量复制、带宽限制等复杂的处理,因此可以减少CPU消耗,提高CPU的利用效率。
S405、判断所述数据包数统计值是否超过预设阈值,如果是,则执行S406;否则结束流程;
具体的,可以设置临时流表表项转为正式流表表项的数据包包数阈值,例如3个数据包,一旦一个数据流的数据包数统计值达到该阈值,则说明该数据流为长连接的数据流,则可以将所述临时流表表项转为正式流表表项,以通过正式流表表项对该数据流的后续数据包进行处理。
S406、将所述临时流表表项修改为正式流表表项,并删除所述临时流表表项。
所述正式流表表项的建立方法很多,在此不作专门描述。
可以理解的是,在具体实施中,也可以在对临时流表表项中的数据包统计值进行修改后,再确定具体对数据包进行如何处理。例如,如果所匹配的流表表项中的数据包数统计值未超过预设阈值,则按照匹配的临时流表表项中的第一流控制信息对数据包进行处理,通常只对数据包进行转发或丢弃;而如果所匹配的流表表项中的数据包数统计值超过预设阈值时,也可以将所述匹配的临时流表表项转为正式流表表项后,再按照转换后的正式流表表项中的第二流控制信息对数据包进行处理,通常对数据包进行转发、流量复制、带宽限制或丢弃。
可以理解的是,所述统计值还可以是数据包的字节数统计值,且也可以设置数据包的字节数阈值,当所述数据包的字节数超过字节数阈值时将临时流表转为正式流表。
本实施例中,由于临时流表中只是包含二次哈希值信息、统计值和简单的流控制信息,不保存Key值,因此可以节约存储空间,由于对数据包进行处理时,不需要将数据包中的Key值与正式流表中的Key值进行匹配,因此可以减少CPU资源消耗,因此不会出现现有技术中由于资源不足,在对流表加速老化时,无法区分具体的业务类型而对业务造成影响的情况。而通过设置数据包数统计值阈值,并在数据包数统计值超过所述阈值时,将临时流表表项转为正式流表表项,可以为包数很多的稳定连接提供较好的服务质量。综上,本实施例中数据包处理所采用的流表,其中的临时流表可以有效应对当前互联网中出现的包数很少的短连接非常多的情况,包括部分P2P应用以及扫描和DoS攻击流量。而正式流表则可以为包数很多的稳定连接提供有效的服务,保证业务服务质量。总之,上述数据包处理方法可以在兼顾数据包转发质量的情况下降低CPU以及内存等资源的利用率,提高资源利用效率。因此本发明实施例可以有效应对当前互联网中大量包数很少的连接,尤其是部分P2P应用以及扫描和DoS攻击流量,避免对这些连接采用正式流表进行处理而消耗大量的CPU及内存资源。
在具体应用中,可以对上述方案作进一步优化,以下通过几个具体实施例进行说明:
参照图5,本发明实施例三基于流表的数据包处理方法流程图,与前述两个实施例的不同之处在于,在没有匹配的临时流表表项时,如果存在正式流表表项,将所述数据包中的Key值与正式流表表项中的Key值进行匹配,该方法包括:
S501、对数据包进行两次哈希,分别得到一次哈希值和二次哈希值;
S502、查找所述一次哈希值对应的哈希单元;
S503、在找到的哈希单元所对应的临时流表中查找与所述二次哈希值匹配的临时流表表项,如果找到与所述二次哈希值匹配的临时流表表项,则执行S504;如果未找到与所述二次哈希值匹配的临时流表表项,则执行S507;
S504、按照匹配的临时流表表项中的第一流控制信息对数据包进行处理并修改所述匹配的临时流表表项中的数据包数统计值;
第一流控制信息通常具有指示对数据包进行转发或者直接删除的操作。
临时流表表项中具体包含的表项内容可以参照实施例一和实施例二,此处不再赘述。
S505、判断所述数据包数统计值是否超过预设阈值,如果否,则结束流程;如果是,则执行S506;
具体的,可以设置临时流表转为正式流表的数据包数统计值阈值,例如3个数据包,一旦一个数据流的数据包计数达到该阈值,则执行S506,即将所述临时流表表项转为正式流表表项。
S506、将所述临时流表修改为正式流表表项,并删除所述临时流表表项;
S507、查找是否有正式流表表项,如果是,则执行S508;否则,执行S509;
S508、按照与所述数据包中的Key值匹配的正式流表表项中的第二流控制信息对数据包进行处理,并修改所述匹配的正式流表表项中的流状态信息;
正式流表表项内容通常包括Key值、流状态信息以及流控制信息等。其中流控制信息包含一些对数据包或数据包所在流设置的操作,例如对接收的数据包进行转发或者丢弃,也可以在转发前进行流量复制,或者对某个数据包所在流进行带宽限制等。
S509、按照系统默认配置或策略对数据包进行处理,同时新建与该哈希单元对应的临时流表表项。
具体建立与所述哈希单元对应的临时流表表项的过程可以如图6所示,参照图6,在具体应用中,如果所述数据包在正式流表和临时流表中都没有匹配的表项时,则可在前述实施例基础上还包括按照系统默认设置或策略对所述数据包进行处理,并创建与所述哈希单元对应的临时流表表项。具体创建临时流表表项的方法可以包括:
S601、判断是否有空闲的临时流表表项,如果有,则执行S602;如果没有,则执行S603;
S602、建立新的临时流表表项,设置数据包数统计值为1,按照所述新建临时流表表项中的流控制信息对数据包进行处理;
S603、选择数据包数最少的临时流表表项或无数据包时间最长的临时流表表项进行覆盖,建立新的临时流表表项,设置数据包数统计值为1,并按照所述新建临时流表表项中的流控制信息对数据包进行处理。
可以理解的是,如果实际统计值为字节数,则设置字节数统计值为所述数据包中的字节数。在这种情况下,如果不存在临时流表表项,则选择字节数最少的临时流表表项或者无数据包(字节数为零)时间最长的临时流表表项进行覆盖,建立新的临时流表表项。
从本发明实施例可以看出,在没有匹配的临时流表表项时,如果存在正式流表表项,则按照与所述数据包中的Key值匹配的正式流表表项对数据包进行处理,可以兼容基于现有流表的数据包处理方法,利于推广应用。当既不存在与该数据包匹配的临时流表表项,也不存在与该数据包匹配的正式流表表项时,按照系统默认配置或策略对数据包进行处理,同时,新建与该哈希单元对应的临时流表表项,以对该数据流的后续数据包进行处理。
以上对本发明实施例中流表的数据包转发方法进行了详细说明,以下对所述方法所涉及的装置及系统进行对应描述:
图7是本发明实施例五所示的数据包处理装置结构示意图,该装置中预置有流表,所述流表包括哈希单元和临时流表,所述临时流表中包含二次哈希值信息和第一流控制信息,所述装置包括:
哈希处理单元71,用于对数据包中的Key值进行两次哈希,得到一次哈希值和二次哈希值;
第一查找单元72,用于查找所述一次哈希值对应的哈希单元;
第二查找单元73,用于在第一查找单元72中找到的哈希单元所对应的临时流表中查找与所述二次哈希值匹配的临时流表表项;
第一处理单元74,用于根据与所述二次哈希值匹配的临时流表表项中的第一流控制信息对数据包进行处理。
从本实施例可以看出,由于临时流表中不保存Key值,临时流表规格较正式流表小很多,因此可以节约存储空间,且在匹配时只需要将二次哈希值进行匹配,而不需要与流表表项中的Key值进行一一匹配,因此可以提高CPU性能。综上可知,该装置对CPU以及内存等资源的具有较高的利用效率。该装置尤其适用于当前互联网上,数据包数很少的短连接非常多的情况,例如部分P2P应用以及扫描和DoS攻击流量的情况。
图8是本发明实施例六数据包处理装置结构示意图,在装置在实施例五基础上进行扩展,与实施例五中所述装置的不同之处在于,流表还包括正式流表,所述正式流表的表项内容包括Key值信息和第二流控制信息,所述装置在实施例五基础上还可包括:
第一判断单元81,用于在所述第二查找单元73未找到与所述二次哈希值匹配的临时流表表项时,判断是否存在与所述哈希单元对应的正式流表;
第二处理单元82,用于当存在与所述哈希单元对应的正式流表时,根据与所述数据包中的Key值完全匹配的正式流表表项中的第二流控制信息对所述数据包进行处理;当不存在与所述哈希单元对应的正式流表时,按照系统默认配置或策略对数据包进行处理。
可以看出,本装置不但可以提高CPU以及内存资源的利用效率,还可与现有技术中预置有正式流表的装置兼容,利于推广应用。
图9是本发明实施例七数据包处理装置结构示意图,在实施例六所示装置基础上扩展得到,与实施例六所示装置的不同之处在于,临时流表的表项内容还包括统计值,该装置还可包括:
第一流表维护单元91,用于当第二查找单元73查找到与所述二次哈希值匹配的临时流表表项时,修改所述匹配的临时流表表项的统计值;当所述统计值超过预设阈值时,将所述匹配的临时流表表项修改为正式流表表项,并删除所述临时流表表项。
第二流表维护单元92,用于在不存在与所述哈希单元对应的正式流表时,创建与所述哈希单元对应的临时流表表项。
可以理解的是,在具体实施中,第一流表维护单元91和第二流表维护单元92可以集成在一起,作为流表维护单元对流表进行维护。
可以看出,本装置通过对流表进行维护,使其完全兼容于应用现有正式流表的装置,利于推广应用。且由于临时流表中只是包含二次哈希值信息、统计值和简单的流控制信息,不保存Key值,因此可以节约存储空间;由于对数据包进行处理时,不需要将数据包中的Key值与正式流表中的Key值进行匹配,因此可以减少CPU资源消耗,因此不会出现现有技术中由于资源不足在对流表加速老化时,无法区分具体的业务类型而对业务造成影响的情况。而通过设置数据包数统计值阈值,并在数据包数统计值超过所述阈值时,将临时流表表项转为正式流表表项,可以为包数很多的稳定连接提供较好的服务质量。本装置尤其可以有效应对当前互联网中大量包数很少的连接,尤其是部分P2P应用以及扫描和DoS攻击流量,避免对这些连接采用正式流表进行处理而消耗大量的CPU及内存资源。
本发明实施例中还可提供一种数据处理系统,该数据处理系统包括数据包接收装置和上述实施例中所述的数据包处理装置,所述数据包接收装置用于接收数据包,所述数据包处理装置用于对数据接收装置所接收到的数据包进行控制处理,这里不再一一举例说明。
上述实施例所介绍的数据处理系统包括但不限于路由器、交换机、防火墙等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本发明实施例所提供的一种基于流表的数据包转发方法和设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上可以加以改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (9)

1.一种基于流表的数据包处理方法,其特征在于,所述流表包括哈希单元和临时流表,所述方法包括:
对数据包中的键值进行两次哈希,分别得到一次哈希值和二次哈希值,所述两次哈希采用不同的哈希算法,或者从所述数据包的键值中选取不同的内容进行哈希,或者对两次哈希值设定不同的哈希值长度;
查找与所述一次哈希值对应的哈希单元;
在与所述哈希单元对应的临时流表中查找与所述二次哈希值匹配的临时流表表项,并按照匹配的临时流表表项中的第一流控制信息对数据包进行处理。
2.如权利要求1所述的基于流表的数据包处理方法,其特征在于,所述流表中还包括正式流表,所述方法还包括:
当没有查找到与所述二次哈希值匹配的临时流表表项时,如果存在与所述哈希单元对应的正式流表,则根据与所述数据包中的键值完全匹配的正式流表表项中的第二流控制信息对所述数据包进行处理;否则,按照系统默认设置或策略对所述数据包进行处理,并创建与所述哈希单元对应的临时流表表项。
3.如权利要求1所述的基于流表的数据包处理方法,其特征在于,还包括:
修改所述匹配的临时流表表项中的统计值;
当所述统计值超过预设阈值时,将所述临时流表表项修改为正式流表表项,并删除所述临时流表表项。
4.如权利要求2所述的基于流表的数据包处理方法,其特征在于,所述创建与所述哈希单元对应的临时流表表项包括:
在所述临时流表中空闲的临时流表表项中建立新的临时流表表项;或
通过对统计值最少的临时流表表项或无数据包时间最长的临时流表表项进行覆盖,建立新的临时流表表项。
5.如权利要求2所述的基于流表的数据包处理方法,其特征在于,所述第一流控制信息包括:对数据包进行转发或丢弃;所述第二流控制信息包括:对数据包进行转发、流量复制、带宽限制或丢弃。
6.一种数据包处理装置,其特征在于,所述装置中预置有流表,所述流表包括哈希单元和临时流表,所述装置包括:
哈希处理单元,用于对数据包中的键值进行两次哈希,得到一次哈希值和二次哈希值,所述两次哈希采用不同的哈希算法,或者从所述数据包的键值中选取不同的内容进行哈希,或者对两次哈希值设定不同的哈希值长度;
第一查找单元,用于查找与所述一次哈希值对应的哈希单元;
第二查找单元,用于在所述哈希单元所对应的临时流表中查找与所述二次哈希值匹配的临时流表表项;
第一处理单元,用于根据与所述二次哈希值匹配的临时流表表项中的第一流控制信息对数据包进行处理。
7.如权利要求6所述的数据包处理装置,其特征在于,所述流表还包括正式流表,所述装置还包括:
第一判断单元,用于当所述第二查找单元没有查找到与所述二次哈希值匹配的临时流表表项时,判断是否存在与所述哈希单元对应的正式流表;
第二处理单元,用于当存在与所述哈希单元对应的正式流表时,根据与所述数据包中的键值完全匹配的正式流表表项中的第二流控制信息对所述数据包进行处理;当不存在与所述哈希单元对应的正式流表时,按照系统默认配置或策略对数据包进行处理。
8.如权利要求7所述的数据包处理装置,其特征在于,还包括:
第一流表维护单元,用于当所述第二查找单元查找到与所述二次哈希值匹配的临时流表表项时,修改所述临时流表表项中的统计值;当所述统计值超过预设阈值时,将所述匹配的临时流表表项修改为正式流表表项,并删除所述临时流表表项;
第二流表维护单元,用于在不存在与所述哈希单元对应的正式流表时,创建与所述哈希单元对应的临时流表表项。
9.一种数据处理系统,其特征在于,包括数据包接收装置和权利要求6至8任一项所述的数据包处理装置,所述数据包接收装置用于接收数据包,所述数据包处理装置用于对所述数据包接收装置所接收到的数据包进行控制处理。
CN2009101377004A 2009-05-07 2009-05-07 一种基于流表的数据包处理方法、装置和网络系统 Expired - Fee Related CN101572670B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101377004A CN101572670B (zh) 2009-05-07 2009-05-07 一种基于流表的数据包处理方法、装置和网络系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101377004A CN101572670B (zh) 2009-05-07 2009-05-07 一种基于流表的数据包处理方法、装置和网络系统

Publications (2)

Publication Number Publication Date
CN101572670A CN101572670A (zh) 2009-11-04
CN101572670B true CN101572670B (zh) 2011-08-10

Family

ID=41231909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101377004A Expired - Fee Related CN101572670B (zh) 2009-05-07 2009-05-07 一种基于流表的数据包处理方法、装置和网络系统

Country Status (1)

Country Link
CN (1) CN101572670B (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101977177B (zh) * 2010-07-30 2013-08-14 北京星网锐捷网络技术有限公司 一种流表表项的创建方法、查询方法及装置
CN102546363A (zh) * 2010-12-21 2012-07-04 深圳市恒扬科技有限公司 一种报文处理方法、装置及设备
CN102073733B (zh) * 2011-01-19 2014-08-13 中兴通讯股份有限公司 哈希表管理方法及装置
KR101434375B1 (ko) * 2011-02-17 2014-08-27 닛본 덴끼 가부시끼가이샤 플로우 통신 시스템
CN103248530B (zh) * 2012-02-09 2015-12-16 深圳市恒扬科技股份有限公司 一种基于浮动位置的特征字分流检测方法及装置
WO2014000290A1 (zh) * 2012-06-29 2014-01-03 华为技术有限公司 数据报文的控制方法、设备及系统
CN103067281B (zh) * 2012-12-28 2016-07-13 深圳市磊科实业有限公司 一种路由器快速转发方法及实施该方法的系统
CN103023728B (zh) * 2013-01-15 2016-03-02 中国人民解放军信息工程大学 流监控方法
CN103067980B (zh) * 2013-01-25 2015-03-18 福建天晴数码有限公司 基于gprs通信系统的减少传输数据流量的方法
CN103731354B (zh) * 2013-12-25 2018-01-26 江苏省未来网络创新研究院 一种基于自定义多级流表快速匹配方法
CN103746918B (zh) * 2014-01-06 2018-01-12 深圳市星盾网络技术有限公司 报文转发系统和报文转发方法
US9473405B2 (en) * 2014-03-10 2016-10-18 Palo Alto Research Center Incorporated Concurrent hashes and sub-hashes on data streams
CN107005464B (zh) * 2015-01-31 2020-07-14 华为技术有限公司 一种业务流数据包的处理方法及装置
CN105929724B (zh) * 2016-03-31 2018-08-31 大连楼兰科技股份有限公司 基于数据请求循环的obd产品识别方法及系统
CN105892356B (zh) * 2016-03-31 2018-12-28 大连楼兰科技股份有限公司 基于数据请求类型的obd设备识别方法及系统
CN105867348B (zh) * 2016-03-31 2018-07-17 大连楼兰科技股份有限公司 基于数据pid请求范围和类型的obd设备识别方法及系统
CN107360096B (zh) * 2017-08-14 2020-08-25 北京青云科技股份有限公司 一种vxlan报文的转发方法及系统
CN109361609B (zh) * 2018-12-14 2021-04-20 东软集团股份有限公司 防火墙设备的报文转发方法、装置、设备及存储介质
CN109714266B (zh) * 2018-12-25 2022-06-07 迈普通信技术股份有限公司 一种数据处理方法及网络设备
CN109981463B (zh) * 2019-02-25 2021-07-27 网易(杭州)网络有限公司 信息处理方法、装置、网关及存储介质
CN111031567B (zh) * 2020-01-14 2022-06-24 南通先进通信技术研究院有限公司 一种核心网设备的流量统计方法
CN111757041B (zh) * 2020-06-17 2022-01-07 许继集团有限公司 一种网络视频会议流量识别方法及装置
CN112104576B (zh) * 2020-08-14 2022-02-22 中国科学院声学研究所 一种sdn交换机的常驻流表存储与校准方法
CN112134794B (zh) * 2020-10-28 2022-04-01 新华三大数据技术有限公司 一种流表备份方法及装置
CN112788039B (zh) * 2021-01-15 2023-07-25 合肥浩瀚深度信息技术有限公司 一种DDoS攻击识别方法、装置及存储介质
CN114448891B (zh) * 2022-01-26 2024-01-02 深圳星云智联科技有限公司 流表同步方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1937574A (zh) * 2005-09-19 2007-03-28 北京大学 对网络流进行分类、状态跟踪和报文处理的装置和方法
CN101247337A (zh) * 2008-02-18 2008-08-20 华为技术有限公司 一种报文转发的方法和设备
CN101286936A (zh) * 2008-05-16 2008-10-15 华为技术有限公司 数据报文的处理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1937574A (zh) * 2005-09-19 2007-03-28 北京大学 对网络流进行分类、状态跟踪和报文处理的装置和方法
CN101247337A (zh) * 2008-02-18 2008-08-20 华为技术有限公司 一种报文转发的方法和设备
CN101286936A (zh) * 2008-05-16 2008-10-15 华为技术有限公司 数据报文的处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2004-56340A 2004.02.19

Also Published As

Publication number Publication date
CN101572670A (zh) 2009-11-04

Similar Documents

Publication Publication Date Title
CN101572670B (zh) 一种基于流表的数据包处理方法、装置和网络系统
EP3694165B1 (en) Managing congestion in a network
CN100466629C (zh) 一种网络设备和基于多核处理器的报文转发方法
US9825860B2 (en) Flow-driven forwarding architecture for information centric networks
US9083539B2 (en) Method and apparatus for multicast packet reception
US7554993B2 (en) Method and apparatus for performing connection management with multiple stacks
JP7177548B2 (ja) Dpdk環境でのnatに基づく負荷分散方法
US8239565B2 (en) Flow record restriction apparatus and the method
US20130003549A1 (en) Resilient Hashing for Load Balancing of Traffic Flows
KR101409311B1 (ko) 패킷 처리 및 전처리기를 위한 장치 및 방법
CA2425706A1 (en) Method to synchronize and upload an offloaded network stack connection with a network stack
WO2017050117A1 (zh) 网络负载均衡处理系统及其方法和装置
US8929372B2 (en) Grid router
KR20040094260A (ko) 에드 혹 네트워크에서의 패스 엠티유 발견 시스템 및 방법
US20140064259A1 (en) Method of managing context table for compression of ipv6 header based on context in wireless mesh network
US9979643B2 (en) Communication apparatus, communication method, and computer-readable recording medium
CN101170512A (zh) 报文业务处理方法
CN109067935A (zh) 分片报文处理方法及多核处理器系统
CN105556916A (zh) 网络流的信息统计方法和装置
CN104852855A (zh) 拥塞控制方法、装置及设备
CN101159573A (zh) 一种利用任播技术实现负载分担的方法、设备及系统
CN109361749B (zh) 报文处理方法、相关设备及计算机存储介质
WO2022179451A1 (zh) 一种负载分担方法、装置及芯片
CN202276355U (zh) 一种多链路动态负载均衡系统
US20080056263A1 (en) Efficient transport layer processing of incoming packets

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
C56 Change in the name or address of the patentee

Owner name: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

Free format text: FORMER NAME: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee after: Huawei Symantec Technologies Co., Ltd.

Address before: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee before: Chengdu Huawei Symantec Technologies Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110810

Termination date: 20180507

CF01 Termination of patent right due to non-payment of annual fee