一种结合多路决策树和哈希表进行网络包快速分类的方法

文档序号:7795135阅读:432来源:国知局
一种结合多路决策树和哈希表进行网络包快速分类的方法
【专利摘要】本发明涉及网络包分类【技术领域】,特别涉及一种结合多路决策树和哈希表进行网络包快速分类的方法。本发明的一种结合多路决策树和哈希表进行网络包快速分类的方法,网络数据包采用Splay多路决策树和哈希表结合的方法快速定位规则,网络包分类方法首先对数据包作协议判断,对TCP、UDP和ICMP等协议分别建立哈希表,哈希表根据IP协议的地址和端口计算,再找到相应的哈希表值后,遍历对应的Splay伸展树节点,查找符合的规则,Splay伸展树具有最近访问的节点为Root节点的特点,故能较多的提高包分类的速度。
【专利说明】一种结合多路决策树和哈希表进行网络包快速分类的方法
【技术领域】
[0001]本发明涉及网络包分类【技术领域】,特别涉及一种结合多路决策树和哈希表进行网络包快速分类的方法。
【背景技术】
[0002]在网络应用快速发展的今天,数据中心、P2P、视频应用和电子商务等应用逐渐普及。网络适配器速度不断提高,百兆、千兆的网卡速度对网络安全产品提出了更高的要求。网络安全产品如网关等性能衡量指标包括:吞吐量和报文转发率、并发连接数、系统的资源耗费率等。数据包分类算法的效率直接决定吞吐率的大小。
[0003]现有的网络包分类算法,包括二分Trie树、基于前缀的二分搜索算法、RFC算法和哈希(HASH)表算法等,在时间复杂度和空间复杂度各有利弊。可用于IPv4和IPv6双协议栈的包分类算法有RFC算法和HASH算法等。IPv6地址增加到了 128位,对规则查找算法需要更多查找时间和更多存储空间。RFC算法分类速度快、存储空间与维数相关。内存占用量多,并行计算。IPv6包分类算法有流标签的IPv6包分类算法。基于Trie算法在IPv6环境占用过多的内存,已不适用。网络数据包在多核环境下,遵循规则如下:一个包队列只是被一个核访问;一个包只能被一个核处理。
[0004]算法的评价指标有分包速度、需要的存储空间和规则的更新速度等。还有扩展能力是否支持IPv6等。Hash计算需要根据IP地址前几位得到网络地址类别,根据地址类别提取网络地址部分。然后在相应的哈希表作查找。

【发明内容】

[0005]为了解决现有技术的问题,本发明提供了一种结合多路决策树和哈希表进行网络包快速分类的方法,网络数据包采用Splay多路决策树和哈希表结合的方法快速定位规贝U,能较多的提高包分类的速度。
[0006]本发明所采用的技术方案如下:
一种结合多路决策树和哈希表进行网络包快速分类的方法,包括以下步骤:
A、网络包分类方法首先对数据包作协议判断,针对不同协议分别建立哈希表;
B、哈希表根据IP协议的地址和端口计算,再找到相应的哈希表值;
C、遍历对应的Splay伸展树节点,查找符合的规则,Splay伸展树具有最近访问的节点为Root节点。
[0007]网络数据分包技术,指在高速网络环境下,网络安全系统对数据包作高速过滤时的分类算法,考虑时间和空间复杂度到一个较好平衡点的技术。
[0008]多路决策是指对网络数据包协议判断,根据常用的协议类型TCP、UDP和ICMP等作分类。分别构建规则的Splay树结构。
[0009]Splay伸展树:是自调整的二叉查找树。为了减少查询实践,被查频率高的节点离Root (树根)最近。对Splay规则树加上了规则优先级的限制,优先级高的规则靠近树根。[0010]哈希表,根据IP地址和端口等做Hash函数计算。要求同一个TCP、UDP连接的数据包Hash到同一地址。
[0011 ] 根据网络协议流量的特点,分为TCP、UDP和ICMP协议,对每个协议都在查询哈希表的前提下,构建多路决策的Splay伸展树。因为Splay树有最近访问的节点离树的root节点最近的特征,可以最早找到匹配规则。
[0012]在高速网络环境下,对通信的网络数据分包有如下操作和特征:
A、根据本地IP/远程IP、本地端口/远程端口的网络规则四元组计算生成规则哈希
表;
B、网络数据包第一次分类采用协议作拆分,分为TCP、UDP和ICMP协议;
C、采用Splay伸展树算法生成不同协议下的Splay伸展树。
[0013]最近访问的网络节点靠近Splay伸展树的根部,根据对网络访问的特点,IP地址重复发送的数据包占了多数。在对协议拆分之后,网络通信对比哈希表。定位到哈希值后,再对Splay伸展树查找。因此算法能在最早时间对网络封包作拦截,避免重复规则比较。提高了封包访问的效率。
[0014]IPv6协议对哈希查找和Splay伸展树的建立,遵照如下步骤:
A、采用IPv6最常用的16位、32位、48位、64位前缀建立哈希表;
B、利用二分法对哈希表做查找;
C、在不同的哈希表项下建立Splay伸展树结构;
D、最早对符合规则的数据包作拦截。
[0015]本发明首先对网络数据包作协议类型拆分,Splay伸展树是二叉排序树。在O(1gn)内完成插入、查找和删除操作。为减少查询时间,查询频率高的节点在最靠近树根位置。根据网络通信的特点,相同的通信连接数据会重复收发。采用Splay伸展树数据结构,可以符合最早拒绝规则。Splay伸展树查找操作最好情况时间复杂度0(1),在网络安全模块对通信数据包规则匹配的最早时刻,即判断出符合的规则,对数据包进行拦截。哈希表的建立采用IP地址前缀和端口混合计算后,得到的值与质数取模得到哈希值。对数据包头相关域做哈希计算后,得到哈希值。在此哈希值下建立规则的Splay伸展树。
[0016]Splay伸展树的建立根据IP地址前缀计算相应的值,存入相应的Splay伸展树节点。针对IPv6地址是IPv4地址4倍的特点,在Splay伸展树的节点上,可IPv6地址分段计算Splay伸展树或在节点保存相应的数据结构。
[0017]数据包快速分类算法依据如下规则:
a.根据传输层协议分类为TCP、UDP和ICMP等;
b.对规则的关键域抽取做Hash函数的计算。根据哈希表大小,选取合适的质数值做mod运算,得到哈希表节点值;
c.在相应的哈希表节点下,建立冲突Splay树结构;
d.Splay伸展树的值KEY由IP地址和端口计算得到;
e.对于IPv6地址,可选取前缀作Splay伸展树KEY值计算。余下的位数作Splay伸展树节点的数据结构一项值,发生冲突时,采用线性链表解决Hash冲突。
[0018]Splay伸展树的构建按如下规则:
a.根据IP地址计算对应值,如01001010可转化为十进制数74并存放在Splay伸展树作为节点KEY值;
b.对规则作优先级处理,如不含通配符的地址为高优先级。包含通配符的地址为低优先级,更靠近Leaf节点;
c.Splay伸展树的最近访问节点靠近Root节点。做网络匹配时,最先被比对到;
d.通配符网络安全规则有可能被匹配一次以上,规则优先级高的规则被选择;
e.对于IPv6地址,由于为128位。可选择前缀地址作为Splay伸展树的计算值,相应节点的IPv6接口 ID等存到数据结构内相应值内。
[0019]f.对于IPv6等接口 ID等如果存在冲突,则采用线性表解决Hash冲突。
[0020]本发明实施例提供的技术方案带来的有益效果是:
本专利提出的方法可精确匹配协议域、IP地址的前缀域和端口的范围匹配。对哈希表的查找采用二分搜索。本方法在查找耗时和可扩展性方面更有竞争能力。在网络设备硬件和软件不断推陈出新的今天,对高速网络数据包匹配提出了一种新方法。
[0021]网络数据包采用Splay多路决策树和哈希表结合的方法快速定位规则,网络包分类方法首先对数据包作协议判断,对TCP、UDP和ICMP等协议分别建立哈希表,哈希表根据IP协议的地址和端口计算,再找到相应的哈希表值后,遍历对应的Splay伸展树节点,查找符合的规则,Splay伸展树具有最近访问的节点为Root节点的特点,故能较多的提高包分类的速度。
【专利附图】

【附图说明】
[0022]图1为本发明的Splay伸展树构建示意图;
图2为本发明的数据包快速分类算法原理图。
【具体实施方式】
[0023]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0024]实施例一
本发明是一种网络数据包采用Splay伸展树和Hash计算的快速包分类方法。在网络应用趋于高速化和复杂化的今天,网络安全系统采用的分包算法和技术,要求在存储空间,运行速度和更新复杂度等方面达到一个较高的要求。本专利采用Splay伸展树构建规则节点,对不同协议的规则采用Hash计算快速定位。符合网络通信的特征,即最近访问的IP地址等会重复访问。在Splay伸展树的最早匹配计算即可找到符合的规则。在效率上大部分数据包往往经过数次比对即可找到相应的规则。为网络安全包分类算法提出了一个新方法。
[0025]网络安全系统的包分类技术,对网络的吞吐率和网络速度等有非常重要的影响。对网络通信作高速封包过滤,需要一个时间和空间复杂度的一个最优平衡点。高速的通信流量,对服务器等部署安全系统的设备,在并发连接和网络安全防御方面提出了严峻的威胁。根据网络通信的特点,有最近访问的节点离根最近特点的Splay伸展树作为规则存放和匹配的数据结构。辅助以哈希表算法,可以达到比类似的哈希表匹配和树查找算法更优得结果。[0026]本发明的工作原理:
1、网络数据封包快速分类方法的实践中,具体的实施步骤为:
a.预处理阶段,对规则按协议分类。分为TCP、UDP等,作哈希表构建和计算;
b.Hash值采用IP地址和端口作计算后与质数取模,得到的值加入到规则哈希表;
c.对IP地址采用16位分段计算的方法,采用并行计算匹配的方法;
d.Splay树的节点KEY值根据IP地址16位分段的转化值得到;
e.规则设置优先级,避免重复规则匹配。先查找优先级高的规则,优先级低次之;
f.在存储空间和查询速度达到较好的性能平衡;
h.对于IPv6地址128位的处理,可以先对前缀做Splay伸展树的计算;
g.Splay节点的数据结构,可以存放IPv6的接口 ID等属性;
1.找到IPv6的Splay伸展树节点后,再对接口ID作比对。
[0027]本包分类方法改进和提高了分包效率。
[0028]2、在网络高速通信环境下时,应用本分包算法的网络安全系统的网络访问流程为:
a.采用NDIS底层驱动对封包拦截和监控,得到传输层协议值;
b.根据IP包头域值,对通信数据包判断IPv4或IPv6;
c.解析IP包头得到传输层协议TCP、UDP和ICMP等;
d.对不同协议的数据包头提取关键域值(IP地址、端口)做HASH计算;
e.在哈希表内用二分查找相同的Hash值;
f.找到Hash值则做下面的匹配。否则按系统默认处理,;
g.计算IP地址对应的Splay伸展树KEY值,在Splay伸展树查找该KEY值;
h.如果找到KEY值,如为IPv4,则根据数据结构中的规则动作运行。IPv6地址则作下一步处理;
1.1Pv6地址128位,对IPv6地址的接口 ID做下一步的判断比较; j.接口 ID值保存在线性链表,按二分查找法查找;
k.找到则按规则处理,否则按系统默认运行;
1.对于通配符规则的比较,优先级高的规则先做比较,然后是优先级低规则。
[0029]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种结合多路决策树和哈希表进行网络包快速分类的方法,包括以下步骤: A、网络包分类方法首先对数据包作协议判断,针对不同协议分别建立哈希表; B、哈希表根据IP协议的地址和端口计算,再找到相应的哈希表值; C、遍历对应的Splay伸展树节点,查找符合的规则,Splay伸展树具有最近访问的节点为Root节点。
2.根据权利要求1所述的一种结合多路决策树和哈希表进行网络包快速分类的方法,其特征在于,根据网络协议流量的特点,分为TCP、UDP和ICMP协议,对每个协议都在查询哈希表的前提下,构建多路决策的Splay伸展树。
3.根据权利要求1所述的一种结合多路决策树和哈希表进行网络包快速分类的方法,其特征在于,在高速网络环境下,对通信的网络数据分包有如下操作和特征: A、根据本地IP/远程IP、本地端口/远程端口的网络规则四元组计算生成规则哈希表; B、网络数据包第一次分类采用协议作拆分,分为TCP、UDP和ICMP协议; C、采用Splay伸展树算法生成不同协议下的Splay伸展树。
4.根据权利要求1所述的一种结合多路决策树和哈希表进行网络包快速分类的方法,其特征在于,最近访问的网络节点靠近Splay伸展树的根部,根据对网络访问的特点,IP地址重复发送的数据包占了多数,在对协议拆分之后,网络通信对比哈希表,定位到哈希值后,再对Splay伸展树查找。
5.根据权利要求1所述的一种结合多路决策树和哈希表进行网络包快速分类的方法,其特征在于,IPv6协议对哈希查找和Splay伸展树的建立,遵照如下步骤: A、采用IPv6最常用的16位、32位、48位、64位前缀建立哈希表; B、利用二分法对哈希表做查找; C、在不同的哈希表项下建立Splay伸展树结构; D、最早对符合规则的数据包作拦截。
【文档编号】H04L12/743GK103746919SQ201410015602
【公开日】2014年4月23日 申请日期:2014年1月14日 优先权日:2014年1月14日
【发明者】张东, 王超, 陈伟东, 徐峥 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1