CN102437950B - 一种高效且可扩展的ip数据包分类方法 - Google Patents

一种高效且可扩展的ip数据包分类方法 Download PDF

Info

Publication number
CN102437950B
CN102437950B CN201110349979.XA CN201110349979A CN102437950B CN 102437950 B CN102437950 B CN 102437950B CN 201110349979 A CN201110349979 A CN 201110349979A CN 102437950 B CN102437950 B CN 102437950B
Authority
CN
China
Prior art keywords
bit
port mapping
tuples
rule
bit tuples
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
CN201110349979.XA
Other languages
English (en)
Other versions
CN102437950A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201110349979.XA priority Critical patent/CN102437950B/zh
Publication of CN102437950A publication Critical patent/CN102437950A/zh
Application granted granted Critical
Publication of CN102437950B publication Critical patent/CN102437950B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种高效且可扩展的IP数据包分类方法,主要解决现有技术无法满足通用网络设备对执行效率和可扩展能力要求的问题。其实现步骤是:首先通过分析IP包中源、目的端口和协议类型字段在实际应用中的分布特性,将它们映射到一个8比特元组,并根据映射结果将分类规则集划分为若干子集;然后借助于信息熵技术,通过查找最优比特序列作为根和子节点,为每个规则子集建立一棵Tries查找树;最后分类器将收到的IP包映射到某个Tries查找树,查找该树并定位到其叶子节点,进行若干次匹配确定出数据包的类别。本发明降低了分类复杂度,提高了包分类的平均查询时间,具有良好的可扩展性,可用于支持网络设备中的区分服务应用。

Description

一种高效且可扩展的IP数据包分类方法
技术领域
本发明属于计算机科学与技术领域,涉及IP网络数据包分类,具体是一种基于索引指针和Tries查找树的高效且可扩展的IP数据包分类方法,可用于支持网络设备中的区分服务应用。
背景技术
Internet技术的快速发展要求网络设备,尤其是边界网络设备支持诸如策略路由、访问控制、虚拟专用网VPN、网络地址转换、负载均衡、认证计费等各种区分服务应用,这些应用都是以数据包分类技术为基础的。它们要求网络设备能够根据包头中的某些字段将数据包划分为不同标识的流,从而针对不同的流采取不同的操作,即提供不同的服务。数据包分类方法的好坏和效率的高低直接影响了整个网络设备的性能。一个典型的数据包分类的例子是IP路由查找,运用最长前缀匹配规则LPM(Longest Prefix Match)查找路由表,根据目的IP地址确定下一跳地址。
目前,关于路由查找方法的研究已经逐步成熟,而通用的多维数据包分类方法由于其复杂性和难度较高,一直是近年来的研究热点。目前在实际应用中主要有两种分类组合,一种是基于源IP地址、目的IP地址的二维分类,另一种是基于源IP地址、目的IP地址、源端口号、目的端口号、协议类型的五维分类。其中,AQT算法[Buddhikot et al.,IFIP PfHSN 1999]、Grid of Tries算法[Srinivasan et al.,ACMSIGCOMM 1998]、FIS-tree算法[Feldman et al.,IEEE INFOCOM 2000]属于二维方法,很难扩展到多维情形;交叉乘积算法[Srinivasan et al.,ACM SIGCOMM 1998]、RFC算法[Gupta et al.,ACM SIGCOMM 1999]、HiCuts算法[Gupta et al.,IEEE Micro2000]对空间要求大,在大规模分类规则集时扩展性较差;位向量(BV)算法和聚合位向量(ABV)算法[Baboescu et al.,IEEE/ACM TON 2005]的硬件实现速度很快,但软件实现速度太慢;完全基于硬件的算法[Lakshminarayanan et al.,ACM SIGCOMM2005]虽然分类速度快,但支持的维数少,扩展性差,性价比较低。
发明内容
本发明为了克服上述已有技术的不足,提供了一种高效且可扩展的IP数据包五维分类方法,以便在不增加硬件成本的情况下,满足网络设备对数据包分类方法执行效率和可扩展能力两方面的要求。
为了实现上述目的,本发明的高效且可扩展的IP数据包分类方法,包括:
(1)预处理步骤
(1.1)初始化索引指针数组indexed_pointer[256]为0;
(1.2)设定Tries查找树叶子节点的最大容量为cluster_size;
(1.3)遍历分类规则集R,依次取出每个规则Ri进行处理:
(1.3a)取Ri的源端口号字段,根据该字段的值将它映射到一个3比特元组S1S2S3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(1.3b)取Ri的目的端口号字段,根据该字段的值将它映射到一个3比特元组D1D2D3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(1.3c)取Ri的协议类型字段,根据该字段所确定的协议类型将它映射到一个2比特元组P1P2,映射的方法为:将传输控制协议TCP映射到2比特元组00,将用户数据报协议UDP映射到2比特元组01,将因特网控制报文协议ICMP映射到2比特元组10,将其它协议映射到2比特元组11;
(1.3d)将所述的S1S2S3、D1D2D3和P1P2比特元组串接在一起,得到一个8比特元组m=S1S2S3D1D2D3P1P2,根据m的值将规则Ri划分到规则子集Subset[m],0≤m≤255;
(1.4)取分类规则集R的一个规则子集Subset[n],n为它的子集号,如果该子集非空,则在内存空间为它分配一个Tries查找树的起始地址,并将该地址赋给索引指针数组indexed_pointer[256]中下标为n的数组元素indexed_pointer[n];
(1.5)判断规则子集Subset[n]内的规则数目,如果规则数目大于cluster_size,则计算Subset[n]内规则的“源IP地址+目的IP地址”联合字段每一位比特为0的统计概率Pj(0)和每一位比特为1的统计概率Pj(1),0≤j≤63:
P j ( 0 ) = ( N j 0 + N j * / 2 ) / N j
P j ( 1 ) = ( N j 1 + N j * / 2 ) / N j
其中,Nj代表选择第j位比特时规则子集内规则总数,Nj0代表第j位为0的规则数目,Nj1代表第j位为1的规则数目,代表第j位为*的规则数目,*代表任意值;
(1.6)基于Pj(0)和Pj(1),计算子集内规则的“源IP地址+目的IP地址”联合字段中每一位比特的信息熵值:0≤j≤63;
(1.7)以信息熵值最大的那一位比特为根,将规则子集Subset[n]划分为左右两个规则子束,左规则子束包含规则子集中所有的根比特为0或*的规则,右规则子束包含规则子集中所有的根比特为1或*的规则;
(1.8)将左右两个规则子束看作两个规则子集,重复步骤(1.5)-(1.7),直到每个规则子束内规则数目均不超过最大容量cluster_size,并将最终的规则子束作为Tries查找树的叶子节点;
(1.9)重复步骤(1.4)-(1.8),直到将所有的规则子集处理完毕;
(2)数据包分类步骤
(2.1)分类器收到一个数据包P;
(2.2)取P的源端口号字段,根据该字段的值将它映射到一个3比特元组s1s2s3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(2.3)取P的目的端口号字段,根据该字段的值将它映射到一个3比特元组d1d2d3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(2.4)取P的协议类型字段,根据该字段所确定的协议类型将它映射到一个2比特元组p1p2,映射的方法为:将传输控制协议TCP映射到2比特元组00,将用户数据报协议UDP映射到2比特元组01,将因特网控制报文协议ICMP映射到2比特元组10,将其它协议映射到2比特元组11;
(2.5)将所述的s1s2s3、d1d2d3、p1p2比特元组串接在一起,得到一个8比特元组m=s1s2s3d1d2d3p1p2
(2.6)判断索引指针数组元素indexed_pointer[m]的值,如果不为0,执行步骤(2.7),否则转步骤(2.1);
(2.7)查找索引指针数组元素indexed_pointer[m]指向的Tries查找树,依次判定数据包内“源IP地址+目的IP地址”联合字段与该Tries查找树的根及子树根节点对应比特的值,定位到该Tries查找树的某个叶子节点;
(2.8)将数据包与该叶子节点内的分类规则依次进行匹配,找出优先权最大的规则,从而完成对数据包P的分类;
(2.9)跳转到步骤(2.1),开始下一个数据包的分类处理。
本发明与现有的技术相比,具有如下的有益效果:
1)本发明在考察相关网络设备实际配置和应用情况的基础上,通过分析IP数据包中源端口号、目的端口号和协议类型字段在实际应用中的分布特性,将这3个元组共40比特映射到一个8比特的元组上,从而压缩了分类维数,降低了分类方法的复杂度。
2)本发明借助于信息熵技术,通过查找最优比特序列作为根和子节点,为每个规则子集建立一棵Tries查找树,查找树的叶子节点是一个规则数量不超过cluster_size的规则子束,通过查找Tries树定位到相应的叶子节点后,数据包只需与不超过cluster_size个规则依次进行匹配,就可以确定数据包的类别,该Tries查找树结构既保证了存贮空间和查找时间最小,而且具有良好的可扩展性。
3)本发明由于采用了索引指针和基于最优比特序列的Tries查找树技术,分类效率高。模拟实验结果表明,在相同分类规则集的情况下,本发明的平均查询速度比常用的HiCuts算法快17%以上。
4)本发明可运行于通用网络设备硬件平台上,不需要专用硬件支持,可在不增加成本的情况下,满足网络设备对数据包分类方法执行效率和可扩展能力两方面的要求。
附图说明
图1是本发明的总流程图;
图2是本发明的预处理子流程图;
图3是本发明的数据包分类子流程图;
图4是本发明IP包头中源端口号、目的端口号和协议类型字段到8比特元组的映射原理图;
图5是本发明与现有HiCuts算法平均查询时间的实验结果对照图。
具体实施方式
参照图1,本发明包括预处理和数据包分类两部分。预处理在系统初始化时进行,它包括参数初始化、规则映射和子集划分、规则子集索引指针分配及Tries查找树建立;预处理部分结束后,执行数据包分类,数据包分类部分包括分类器收到数据包、为数据包映射Tries查找树、Tries查找树叶子节点定位及规则匹配。
一.预处理
参照图2,本部分的具体实现如下:
步骤1,初始化索引指针数组indexed_pointer[256]为0。
索引指针数组的每个元素存放了为某个分类规则子集建立的Tries查找树的起始地址,初始化设置为0,表示该Tries查找树尚未建立。
步骤2,设定Tries查找树叶子节点的最大容量,记为cluster_size。
cluster_size实际上标识了Tries查找树中每个叶子节点里所能存放的分类规则的最大个数,它的取值由系统管理员设定。
步骤3,遍历分类规则集R,依次取出R中的每个规则Ri,依据规则Ri的源端口号、目的端口号和协议类型字段到8比特元组的映射结果,对整个规则集R进行子集划分。
分类规则集R是由用户根据自己的分类需求事先配置好的分类规则集合,集合里的每个分类规则定义了一种不同类别的数据包,而数据包分类方法的实质就是在R里找到一个和它匹配的优先权最高的分类规则。
根据图4所示的映射原理,综合考虑源端口号、目的端口号和协议类型字段,可以将这三个字段映射到一个8比特的元组,从而将原5维分类压缩为3维,降低分类的复杂度,具体实现步骤如下:
(3a)将分类规则Ri的源端口号映射到3比特元组S1S2S3
在客户端/服务器模式下,端口号被分为两种,一种是保留端口,范围为0~1023,另一种为临时端口,范围为1024~65535。临时端口通常由客户端临时动态分配,大多数由内核指定,除了标识一个连接的客户端点外,没有其它意义。在规则集中经常将所有临时端口作为一大类来处理,比较常见的表示方式为“port≥1024”。而在保留端口中,通过对Cisco、Juniper、华为等知名厂商路由器配置的研究和对多个高校、企事业单位网络设备的配置情况进行考察发现,IP数据包中的源端口号字段虽然共有16位,但在具体的分类规则中一般集中分布在文件传输协议FTP所使用的21端口、超文本传输协议HTTP所使用的80端口、远程登录协议TELNET所使用的23端口、简单邮件传输协议SMTP所使用的25端口、邮局协议POP所使用的110端口、域名服务DNS所使用的53端口几种情形,所以可以将Ri的源端口号字段映射到一个3比特元组S1S2S3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111,如表1所示。
表1 源端口号字段到3比特元组映射表
(3b)将分类规则Ri的目的端口号映射到3比特元组D1D2D3
与源端口号字段类似,目的端口号虽然共有16位,但在具体的分类规则中一般集中分布在文件传输协议FTP所使用的21端口、超文本传输协议HTTP所使用的80端口、远程登录协议TELNET所使用的23端口、简单邮件传输协议SMTP所使用的25端口、邮局协议POP所使用的110端口、域名服务DNS所使用的53端口几种情形,所以可以将Ri的目的端口号字段映射到一个3比特元组D1D2D3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111,如表2所示。
表2 目的端口号字段到3比特元组映射表
(3c)将分类规则Ri的协议类型映射到2比特元组P1P2
通过对Cisco、Juniper、华为等知名厂商路由器配置的研究和对多个高校、企事业单位网络设备的配置情况进行考察发现,IP数据包中的协议类型字段虽然共有8位,但在实际配置中通常只会用到传输控制协议TCP、用户数据报协议UDP和因特网控制报文协议ICMP,其他协议比如通用路由封装协议GRE、因特网组管理协议IGMP等用到的非常少,所以可以根据Ri的协议类型字段所确定的协议类型将它映射到一个2比特元组P1P2,映射的方法为:将传输控制协议TCP映射到2比特元组00,将用户数据报协议UDP映射到2比特元组01,将因特网控制报文协议ICMP映射到2比特元组10,将其它协议映射到2比特元组11,如表3所示。
在IPv4数据包首部中,当协议类型字段的值为6时,所确定的协议类型为传输控制协议TCP,当协议类型字段的值为17时,所确定的协议类型为用户数据报协议UDP,当协议类型字段的值为1时,所确定的协议类型为因特网报文控制协议ICMP,当协议类型字段的值为其它值时,所确定的协议类型为其它协议。
表3 协议类型字段到2比特元组的映射表
(3d)将所述的S1S2S3、D1D2D3和P1P2比特元组串接在一起,得到一个8比特元组m=S1S2S3D1D2D3P1P2,根据m的值将规则Ri划分到规则子集Subset[m],0≤m≤255。
步骤4,从分类规则集R中取其中一个规则子集Subset[n],n为它的子集号,如果该子集非空,则在内存空间为它分配一个Tries查找树的起始地址,并将该地址赋给索引指针数组indexed_pointer[256]中下标为n的数组元素indexed_pointer[n]。
传统的基于CPU缓存的数据包分类方法[Noel et a1.,IEEE HPSR 2003]在实际应用环境中因为命中率较低,并且流的持续时间较短,工作起来效果并不是很好。为此,本发明采用了一种称为“索引指针”的机制,它为每个规则子集设立一个索引指针,该指针指向在内存空间上为规则子集建立的Tries查找树,索引指针在系统初始化时建立,系统运行过程中始终有效。
步骤5,在内存空间为每个规则子集各建立一个基于“源IP地址+目的IP地址”联合字段最优比特序列的Tries查找树,建树的原理和过程如下所述:
源、目的IP地址是由多个比特组成的一个序列,每个比特可取值的范围为{0,1,*},其中*代表任意值。本发明从源、目的IP地址中找出最优的比特序列将规则子集划分为多个规则子束,每个规则子束包含的规则数目不超过某个可以配置的值,比如2或4,记为cluster_size。通过比较数据包源、目的IP地址中与所选出的最优比特序列相对应的位,就可以迅速定位到相应的规则子束,即某个叶子节点,然后再将数据包与叶子节点中的规则至多进行cluster_size次比较,就可以确定数据包所对应的规则,完成数据包分类。对于如何确定最优的比特序列,本发明采用一种基于统计度量的信息熵函数来解决这个问题:
假设选择“源IP地址+目的IP地址”联合字段的第j位比特作为依据划分规则子集,0≤j≤63,则整个规则子集被划分为左右两个规则子束,左规则子束包含规则子集中所有第j位比特为0或*的规则,右规则子束包含规则子集中所有第j位比特为1或*的规则;
设Nj代表选择第j位比特时规则子集内规则总数,Nj0代表第j位为0的规则数目,Nj1代表第j位为1的规则数目,代表第j位为*的规则数目,则:
P j ( 0 ) = ( N j 0 + N j * / 2 ) / N j
P j ( 1 ) = ( N j 1 + N j * / 2 ) / N j
其中,Pj(0)和Pj(1)分别代表规则子集中第j位比特为0和1的统计概率,且有 Σ i = 0 1 P j ( i ) = 1 ;
根据规则子集中“源IP地址+目的IP地址”联合字段中第j位比特为0和1的统计概率,计算第j位比特的信息熵Sj
S j = - Σ i = 0 1 ( P j ( i ) * log P j ( i ) )
建立Tries查找树的过程为:首先判断规则子集内规则的数目,如果大于Tries查找树叶子节点的最大容量cluster_size,则依次计算子集内规则“源IP地址+目的IP地址”联合字段所有比特位的信息熵,以熵值最大的位作为根,将规则子集划分为左右两个规则子束,左规则子束包含规则子集中所有的根比特为0或*的规则,右规则子束包含规则子集中所有的根比特为1或*的规则;然后以规则子束作为新的规则子集,重复上面的过程,直到每个规则子束内规则数目均不超过最大容量cluster_size,并将最终的规则子束作为Tries查找树的叶子节点。
二.数据包分类
参照图3,本部分的具体实现如下:
步骤A,分类器收到一个IP数据包P,该分类器位于TCP/IP网络协议体系的网络层。
步骤B,取数据包P的源端口号字段,根据该字段的值将它映射到一个3比特元组s1s2s3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111。
步骤C,取数据包P的目的端口号字段,根据该字段的值将它映射到一个3比特元组d1d2d3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111。
步骤D,取数据包P的协议类型字段,根据该字段所确定的协议类型将它映射到一个2比特元组p1p2,映射的方法为:将传输控制协议TCP映射到2比特元组00,将用户数据报协议UDP映射到2比特元组01,将因特网控制报文协议ICMP映射到2比特元组10,将其它协议映射到2比特元组11。
步骤E,将所述的s1s2s3、d1d2d3、p1p2比特元组串接在一起,得到一个8比特元组m=s1s2s3d1d2d3p1p2
步骤F,判断索引指针数组元素indexed_pointer[m]的值,如果不为0,执行步骤G,否则转步骤A。
步骤G,查找索引指针数组元素indexed_pointer[m]指向的Tries查找树,依次判定数据包内“源IP地址+目的IP地址”联合字段与该Tries查找树的根及子树根节点对应比特的值,定位到该Tries查找树的某个叶子节点,定位的过程为:
(G1)判定Tries查找树根节点所选用的比特位置,如果数据包内“源IP地址+目的IP地址”联合字段中与Tries查找树根节点位置相同的比特的值为0,则转向该Tries查找树的左子树,否则转向右子树;
(G2)以转向的子树作为新的Tries查找树,重复步骤(G1),直到到达某个叶子节点。
步骤H,依次取出定位后的叶子节点中的分类规则,将规则的源IP地址和目的IP地址字段分别与数据包P的源IP地址和目的IP地址字段进行匹配,找出匹配成功的规则;如果有多个规则匹配成功,则比较所有匹配成功的规则的优先权,找出优先权最大的规则,从而完成对数据包P的分类。
步骤I,跳转到步骤A,开始下一个数据包的分类处理。
本发明的效果可以通过以下仿真实验进一步说明:
1)仿真条件
采用美国斯坦福大学的包分类算法测试仿真工具PALAC(PAcket Lookup AndClassification simulator)来测试本发明的性能,并用C++语言分别实现了本发明和广泛使用的HiCuts算法,主要测试和比较两种包分类方法的平均查询时间。
选用由美国华盛顿大学开发的ClassBench平台来生成实验规则集和相应的数据包集。ClassBench以真实的规则库作种子,通过调控参数的取值来生成符合实际特征的规则库,从而能够更准确、真实的模拟数据包分类的运行环境。
2)仿真内容
选用ClassBench平台下最常用的规则类型Access Control List(ACL),测试包含5种不同规模规则集:2000条,4000条,6000条,8000条和10000条情形下两种包分类方法的平均查询时间,测试结果如图5所示。
3)结果分析
从图5可以看出,本发明的性能明显优于HiCuts算法,本发明比HiCuts算法所用的平均查询时间大约少20-40ns,平均查询速度快17%以上。同时,从图5中纵坐标随横坐标取值变化趋势分析,本发明的总体趋势较平缓,而HiCuts算法随着规则数目的增多平均查询时间增速加大。分析表明,这与HiCuts算法在大规模规则集时扩展性较差有直接关系,而本发明则不存在这个问题,扩展性较好。

Claims (5)

1.一种高效且可扩展的IP数据包分类方法,包括:
(1)预处理步骤
(1.1)初始化索引指针数组indexed_pointer中的256个元素为0;
(1.2)设定Tries查找树叶子节点的最大容量为cluster_size;
(1.3)遍历分类规则集R,依次取出每个规则Ri进行处理:
(1.3a)取Ri的源端口号字段,根据该字段的值将它映射到一个3比特元组S1S2S3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(1.3b)取Ri的目的端口号字段,根据该字段的值将它映射到一个3比特元组D1D2D3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(1.3c)取Ri的协议类型字段,根据该字段所确定的协议类型将它映射到一个2比特元组P1P2,映射的方法为:将传输控制协议TCP映射到2比特元组00,将用户数据报协议UDP映射到2比特元组01,将因特网控制报文协议ICMP映射到2比特元组10,将其它协议映射到2比特元组11;
(1.3d)将所述的S1S2S3、D1D2D3和P1P2比特元组串接在一起,得到一个8比特元组m=S1S2S3D1D2D3P1P2,根据m的值将规则Ri划分到规则子集Subset[m],0≤m≤255;
(1.4)取分类规则集R的一个规则子集Subset[n],n为它的子集号,如果该子集非空,则在内存空间为它分配一个Tries查找树的起始地址,并将该地址赋给索引指针数组indexed_pointer中下标为n的数组元素indexed_pointer[n];
(1.5)判断规则子集Subset[n]内的规则数目,如果规则数目大于cluster_size,则计算Subset[n]内规则的“源IP地址+目的IP地址”联合字段每一位比特为0的统计概率Pj(0)和每一位比特为1的统计概率Pj(1),0≤j≤63:
Pj(0)=(Nj0+Nj*/2)/Nj
Pj(1)=(Nj1+Nj*/2)/Nj
其中,Nj代表选择第j位比特时规则子集内规则总数,Nj0代表第j位为0的规则数目,Nj1代表第j位为1的规则数目,Nj*代表第j位为*的规则数目,*代表任意值;
(1.6)基于Pj(0)和Pj(1),计算子集内规则的“源IP地址+目的IP地址”联合字段中每一位比特的信息熵值: S j = - Σ i = 0 1 ( P j ( i ) * log P i ( i ) ) , 0 ≤ j ≤ 63 ;
(1.7)以信息熵值最大的那一位比特为根,将规则子集Subset[n]划分为左右两个规则子束,左规则子束包含规则子集中所有的根比特为0或*的规则,右规则子束包含规则子集中所有的根比特为1或*的规则;
(1.8)将左右两个规则子束看作两个规则子集,重复步骤(1.5)—(1.7),直到每个规则子束内规则数目均不超过最大容量cluster_size,并将最终的规则子束作为Tries查找树的叶子节点;
(1.9)重复步骤(1.4)-(1.8),直到将所有的规则子集处理完毕;
(2)数据包分类步骤
(2.1)分类器收到一个数据包P;
(2.2)取P的源端口号字段,根据该字段的值将它映射到一个3比特元组s1s2s3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(2.3)取P的目的端口号字段,根据该字段的值将它映射到一个3比特元组d1d2d3,映射的方法为:将21端口映射到3比特元组000,将80端口映射到3比特元组001,将23端口映射到3比特元组010,将25端口映射到3比特元组011,将110端口映射到3比特元组100,将53端口映射到3比特元组101,将1024~65535端口映射到3比特元组110,将其它端口映射到3比特元组111;
(2.4)取P的协议类型字段,根据该字段所确定的协议类型将它映射到一个2比特元组p1p2,映射的方法为:将传输控制协议TCP映射到2比特元组00,将用户数据报协议UDP映射到2比特元组01,将因特网控制报文协议ICMP映射到2比特元组10,将其它协议映射到2比特元组11;
(2.5)将所述的s1s2s3、d1d2d3、p1p2比特元组串接在一起,得到一个8比特元组m=s1s2s3d1d2d3p1p2
(2.6)判断索引指针数组元素indexed_pointer[m]的值,如果不为0,执行步骤(2.7),否则转步骤(2.1);
(2.7)查找索引指针数组元素indexed_pointer[m]指向的Tries查找树,依次判定数据包内“源IP地址+目的IP地址”联合字段与该Tries查找树的根及子树根节点对应比特的值,定位到该Tries查找树的某个叶子节点;
(2.8)将数据包与该叶子节点内的分类规则依次进行匹配,找出优先权最大的规则,从而完成对数据包P的分类;
(2.9)跳转到步骤(2.1),开始下一个数据包的分类处理。
2.根据权利要求1所述的IP数据包分类方法,其中步骤(1.3)所述的分类规则集R,是由用户根据自己的分类需求事先配置好的分类规则集合,集合里的每个分类规则定义了一种不同类别的数据包,而数据包分类方法的实质就是在R里找到一个和它匹配的优先权最高的分类规则。
3.根据权利要求1所述的IP数据包分类方法,其中步骤(1.3c)所述的根据协议类型字段所确定的协议类型,是指在IP数据包首部中,当协议类型字段的值为6时,所确定的协议类型为传输控制协议TCP,当协议类型字段的值为17时,所确定的协议类型为用户数据报协议UDP,当协议类型字段的值为1时,所确定的协议类型为因特网报文控制协议ICMP,当协议类型字段的值为其它值时,所确定的协议类型为其它协议。
4.根据权利要求1所述的IP数据包分类方法,其中步骤(2.7)所述的查找indexed_pointer[m]指向的Tries查找树,按照如下步骤进行:
(2.7a)判定Tries查找树根节点所选用的比特位置,如果数据包内“源IP地址+目的IP地址”联合字段中与Tries查找树根节点位置相同的比特的值为0,则转向该Tries查找树的左子树,否则转向右子树;
(2.7b)以转向的子树作为新的Tries查找树,重复步骤(2.7a),直到到达某个叶子节点。
5.根据权利要求1所述的IP数据包分类方法,其中步骤(2.8)所述的将数据包与该叶子节点内的规则依次进行匹配,是指依次取出叶子节点里的分类规则,将规则的源IP地址和目的IP地址字段分别与数据包的源IP地址和目的IP地址字段进行匹配,找出匹配成功的规则;如果有多个规则匹配成功,则找出优先权最大的规则。
CN201110349979.XA 2011-11-08 2011-11-08 一种高效且可扩展的ip数据包分类方法 Expired - Fee Related CN102437950B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110349979.XA CN102437950B (zh) 2011-11-08 2011-11-08 一种高效且可扩展的ip数据包分类方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110349979.XA CN102437950B (zh) 2011-11-08 2011-11-08 一种高效且可扩展的ip数据包分类方法

Publications (2)

Publication Number Publication Date
CN102437950A CN102437950A (zh) 2012-05-02
CN102437950B true CN102437950B (zh) 2014-11-12

Family

ID=45985833

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110349979.XA Expired - Fee Related CN102437950B (zh) 2011-11-08 2011-11-08 一种高效且可扩展的ip数据包分类方法

Country Status (1)

Country Link
CN (1) CN102437950B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103812700A (zh) * 2014-02-18 2014-05-21 西南大学 一种基于规则信息熵的报文分类方法
CN113206801B (zh) * 2017-03-13 2024-06-07 华为技术有限公司 处理分组的方法和网络设备
CN108123872B (zh) * 2017-12-21 2020-09-04 国网浙江省电力有限公司电力科学研究院 面向电力物联网的流量分类和转发方法及系统
CN108449226B (zh) * 2018-02-28 2021-07-23 华青融天(北京)软件股份有限公司 信息快速分类的方法和系统
CN109218224A (zh) * 2018-10-22 2019-01-15 王瑶生 一种高效且可扩展的ip数据包分类方法
CN111698110B (zh) * 2019-03-14 2023-07-18 深信服科技股份有限公司 一种网络设备性能分析方法、系统、设备及计算机介质
CN110120942B (zh) * 2019-04-17 2022-01-25 新华三信息安全技术有限公司 安全策略规则匹配方法及装置、防火墙设备及介质
CN114827030B (zh) * 2022-03-26 2023-04-07 西安电子科技大学 一种基于折叠sram的流分类装置及表项压缩方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101888369A (zh) * 2009-05-15 2010-11-17 北京启明星辰信息技术股份有限公司 一种进行网络报文规则匹配的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7508825B2 (en) * 2002-08-05 2009-03-24 Intel Corporation Data packet classification

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101888369A (zh) * 2009-05-15 2010-11-17 北京启明星辰信息技术股份有限公司 一种进行网络报文规则匹配的方法和装置

Also Published As

Publication number Publication date
CN102437950A (zh) 2012-05-02

Similar Documents

Publication Publication Date Title
CN102437950B (zh) 一种高效且可扩展的ip数据包分类方法
Taylor et al. Classbench: A packet classification benchmark
US6587466B1 (en) Search tree for policy based packet classification in communication networks
CN102035698B (zh) 基于决策树分类算法的http隧道检测方法
CN106452868A (zh) 一种支持多维度聚合分类的网络流量统计实现方法
US7536476B1 (en) Method for performing tree based ACL lookups
CN105162626B (zh) 基于众核处理器的网络流量深度识别系统及识别方法
CN104244035B (zh) 基于多层聚类的网络视频流分类方法
Lim et al. Boundary cutting for packet classification
Wang et al. Non-random generator for IPv6 tables
US7835304B2 (en) Method and apparatus for assigning IP addresses
CN112182070A (zh) 基于云计算的Elasticsearch查询管理系统
Song et al. The correlation study for parameters in four tuples
CN107888494B (zh) 一种基于社区发现的包分类方法及系统
CN100472427C (zh) 一种数据包递归流分类方法
Mohd et al. Towards a flow-based internet traffic classification for bandwidth optimization
Lee et al. High performance payload signature-based Internet traffic classification system
CN105357334B (zh) 一种基于ipv6地址划分的ipv6地址存储及快速查询方法
Waldvogel Multi-dimensional prefix matching using line search
CN100505753C (zh) 一种IPv6多域分类处理方法
KR20120049572A (ko) 패킷 분류 장치 및 그 방법
Su et al. JOTA: Joint optimization for the task assignment of sketch-based measurement
CN1625151A (zh) 一种实现IPv6报文流分类的方法
Chang et al. Grid of segment trees for packet classification
Wang Packet classification with multiple decision trees

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Li Jinku

Inventor after: Xie Kun

Inventor after: Ma Jianfeng

Inventor after: Yang Chao

Inventor after: Sun Cong

Inventor before: Li Jinku

Inventor before: Xie Kun

Inventor before: Ma Jianfeng

Inventor before: Yang Chao

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: LI JINKU XIE KUN MA JIANFENG YANG CHAO TO: LI JINKU XIE KUN MA JIANFENG YANG CHAO SUN CONG

C14 Grant of patent or utility model
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: 20141112

Termination date: 20191108