CN104579941A - 一种OpenFlow交换机中的报文分类方法 - Google Patents
一种OpenFlow交换机中的报文分类方法 Download PDFInfo
- Publication number
- CN104579941A CN104579941A CN201510002600.6A CN201510002600A CN104579941A CN 104579941 A CN104579941 A CN 104579941A CN 201510002600 A CN201510002600 A CN 201510002600A CN 104579941 A CN104579941 A CN 104579941A
- Authority
- CN
- China
- Prior art keywords
- rule
- flow table
- value
- packet
- node
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 9
- 238000007781 pre-processing Methods 0.000 claims description 9
- 230000009471 action Effects 0.000 claims description 7
- 238000003066 decision tree Methods 0.000 claims description 5
- 101100129590 Schizosaccharomyces pombe (strain 972 / ATCC 24843) mcp5 gene Proteins 0.000 claims description 4
- 230000009191 jumping Effects 0.000 claims description 2
- 238000007635 classification algorithm Methods 0.000 abstract description 11
- 238000005192 partition Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 12
- 230000006399 behavior Effects 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种OpenFlow交换机中的报文分类方法,包括:步骤1)根据交换机所采取的规则集中所定义的关键词,按照精准值、前缀值、范围值对关键词进行分类;步骤2)根据分类后的关键词构建三级级联的第一流表Table0、第二流表Table1和第二流表Table2,每一级流表的输入是上级流表的输出,由此形成报文的分类规则;步骤3)从交换机源端口接收数据流中的IP包,按照精确值、前缀值、范围值提取相应的字段;步骤4)对接收到的IP包根据第一流表、第二流表和第二流表的顺序逐个表进行匹配。利用本发明可以为解决OpenFlow交换机中软件实现的报文分类算法提供依据,对多级流表的划分、包分类算法的选择、算法的级联等提供有效的参考。
Description
技术领域
本发明属于一种OpenFlow交换机中的报文分类方法,涉及计算机下一代网络技术领域。
背景技术
目前,传统的IP包流量识别和QoS控制技术,仅对IP包头中的五元组信息进行分析,确定流量的基本信息,五元组信息包括:源地址、目的地址、源端口、目的端口以及协议类型。
传统IP路由器也只是通过五元组获得的信息来实现一定程度的流量识别和OoS保证的,但是随着网络上应用类型的不断丰富,仅仅分析IP包的四层以下的内容,已经不能真正判断流量中的业务类型,更不能判断基于开放端口、随机端口等方式进行传输的应用类型,甚至应用的具体内容特征。
OpenFlow交换机,维护一个FlowTable并且只按照FlowTable进行转发,FlowTable并非指IP五元组,在OpenFlow1.0中,定义了包括端口号、VLAN、L2/L3/L4信息的12个关键字,在OpenFlow1.3中,更是定义了39个关键字。每个字段都是可以通配的,网络的运行商可以决定使用何种力度的流,比如运营商只需要根据目的IP进行路由,那么流表中就可以只有目的IP字段是有效的,其它全为通配。OpenFlow交换机中的数据包分类,通过将数据包中的各个字段和FlowTable中的规则的匹配结果,确定对该数据包的执行动作。
其中,OpenFlow v1.0在实际部署和应用中面临的问题之一就是TCAM存储器成本问题。在传统网络设备中,TCAM主要用于FIB、MAC、MPLS Lable和ACL表,因为每个表的匹配字段长度不一,所以可以分别设计,并且具有最大容量限制以期达到最小的开销。而在OpenFlow交换中,不再区分匹配长度较短的FIB、MAC、MPLS Lable表以及较长的ACL表,而一律采用具有最大长度的流表项记录代替。对OpenFlow v1.0而言,流表的匹配字段长度长达252位,而一般的IPv4RIB TCAM匹配字段长度只有60至80位,其开销增加了三倍以上。因此如何减少流表的尺寸是OpenFlow面临的一个难题。
为了解决上述问题,OpenFlow v1.1设计了多级流表来减少流表的开销,将流表进行特征提取,进而将匹配过程分解成多个步骤,形成流水线的处理形式,从而降低总的流表记录条数。例如:原始流表共有10000条,如果将其分解成先匹配VLAN和MAC地址,再匹配IP地址和传输层头部等两个独立的流表,那么每个流表的数量可能均小于1000条,使得流表总数小于2000条。
传统的包分类算法技术,针对传统的五元组,从各种不同的角度进行算法的设计,如利用前缀构建字典树、利用范围构建决策树、基于维度分解的合并策略,然而这些传统的算法并不适合这种多维字段的匹配,但是目前并没有针对超过五元组的多域进行数据包分类的算法。
网络流量的不断增长和流量控制粒度不断精细,使得OpenFlow交换机中的关键字个数不断地增加,现有的OpenFlow比较成熟而内容较为新颖的标准是v1.3,它的关键字达到了39个,这就使得一个大的流表不能满足查找时间的要求,而多级流标目前也只是停留在设想阶段,目前也没有任何组织提出针对它的具体的实现方式。因此,如何划分多级流表,划分之后使用什么算法实现数据包与规则特征库的匹配,以满足数据包的查找速度,同时能较好的实现规则的动态更新,提出一种切实可行的符合OpenFlow交换机的报文分类算法,成为当前需要解决的重要问题。
发明内容
本发明所要解决的技术问题是提供一种报文分类方法,通过对关键字进行不同的分类,划分出三种类型的流表,针对每一级流表,提出一种符合其特性的数据包分类算法,最终将三种不同的算法进行级联,以实现整个交换机的报文分类。
本发明解决上述技术问题所采取的技术方案如下:
一种OpenFlow交换机中的报文分类方法,包括:
步骤1)预先根据交换机中所采取的规则集中各个规则中的关键词,分别按照精准值、前缀值、范围值进行分类;
步骤2)根据分类后的关键词对规则集中的规则构建一个三级级联的流表,用以作为交换机对报文分类的分类依据,包括:
根据精准值形成的第一流表Table0、根据前缀值形成的第二流表Table1和根据范围值形成的第二流表Table2,其中,每一级流表的输入是上级流表的输出;
步骤3)从交换机源端口接收数据流中的IP包,分别按照精确值、前缀值、范围值提取相应的字段;
步骤4)对接收到的IP包根据第一流表、第二流表和第二流表的顺序逐个流表进行匹配,以此对IP包中的报文进行分类。
进一步地,优选的是,还包括:
步骤5)若此IP包在某一个流表中找到了对应的匹配规则,按照相应规则的动作进行处理,并从交换机源端口接收下一个IP包;
若没有找到与该IP包匹配的规则,则向一控制器提交信息,由控制器对上述规则集或者流表进行后续处理。
进一步地,优选的是,所述步骤2)中,具体包括:
采取哈希算法、Grid of Trie算法、Hicuts树算法分别对规则集中的精确值、前缀值、范围值进行预处理,从而根据所有规则集中的不同字段构建对应的数据结构。
进一步地,优选的是,采取哈希算法对规则集中的精准值进行预处理,包括:
以规则集中的精确字段部分作为输入,参数个数为num1,确定一个hash哈希函数H(k1,k2,…,knum1),所述哈希函数采用Bloom Filter数据结构,BloomFilter基于hash查找,并利用位数组表示一个集合,其基于所述位数组判断一个元素是否属于这个集合;
其中K1,K2,Knum1是指每条规则中的每个匹配字段的具体数值,K1代表VLAN匹配字段的一个具体数值,作为此Hash函数的参数输入;
若不同的规则映射到相同的节点位置,则采用链表的方式进行连接,其中,Hash表中每个节点位置存储规则的数目和代表规则优先级的id号码。
进一步地,优选的是,采用Grid of Trie算法对前缀值进行预处理,包括:
遍历所述Hash表中的节点位置,若当前节点中包含的的规则集个数大于给定的第一阈值,则以该节点为根节点,利用前缀字段建立一Grid-of-Trie数据结构;
其中,Grid-of-Trie数据结构中每个节点都由三个分支,分别为0、1、*,其中0表示该数值的二进制表示中某一位数值为0,1表示该数值的二进制表示中某一位的值为1,*代表通配,最终匹配的规则都集中在叶节点中。
进一步地,优选的是,采用Hicuts算法对范围值进行预处理,包括:
遍历Grid-of-Trie树中的叶子节点,若当前节点中包含的规则集个数大于给定的第二阈值;
则以该节点作为根节点,利用范围字段建立对应的Hicuts数据结构,并据此存储对应的规则,且所述Hicuts数据结构采用了一颗决策树作为快速查找的数据结构,其内部节点包含适当的分类导向信息,但不存储任何规则,其叶节点存储一个小型的规则子集。
进一步地,优选的是,步骤2)中,具体包括:
对规则集中的规则进行Hash映射,判断此规则中精确值字段部分是否是通配,若是通配,则跳至步骤(12);
若非通配,按照预先定义的布隆过滤器(Bloom Filter)Hash数据结构,对规则做一个映射,将其分配到相应的节点;返回到(11)开始的位置、继续处理下一条规则;
(12)在Hash表中设置一个固定的节点,用来存储内容为通配的规则,将此规则存储在这一节点中。
进一步地,优选的是,步骤4中,具体包括:
基于第一流表,利用精确值字段,通过预先建立的哈希函数,定位和此数据包相匹配的记录;
其中,若对应记录的个数少于设定的最大值,则对该记录内的规则进行线性查找,并找到最佳匹配的规则集,并执行对应的处理动作;
若对应的记录个数大于设定的最大值,则进入第二流表,根据第二流表中的维度进行最大匹配前缀的查找,直到找到最终的叶子节点;
若该叶子节点包含的规则集小于限定的最大值,则对该叶子节点内的规则进行线性查找,并找到最佳匹配的规则集,按照规则集中的规则对应的行为进行转发操作;
若第二流表中的叶子节点中包含的规则集个数大于给定的最大值,则进入第三流表,按照范围进行查找,直到最终的叶子节点,在叶子节点内进行线性查找,并找到最佳匹配规则,按照相应的行为对IP包进行处理。
进一步地,优选的是,步骤4中,具体包括:
首先提取IP包的关键词,并读取第一流表Table0,判断该IP包的精确值字段是否为通配,若为通配,直接进入Table1;
否则将字段通过Hash函数进行映射,找到哈希表中与该规则匹配的节点;
若该节点中包含的规则集的个数大于给定的阈值,此IP包进入Table1继续匹配,否则在该节点内对其余字段进行线性匹配,找到与该IP包最佳匹配的规则,跳至步骤5;
其次进入第二流表Table1,判断该IP包的前缀字段是否为通配,若为通配,进入相应的分支;
否则按照Trie的流向进入最终匹配的叶子节点,进入叶节点后,判断该叶子节点包含的规则个数是否大于给定的阈值,若大于给定的阈值,进入第三流表Table2;否则在该叶子节点中对其余的匹配域进行线性匹配,找到最佳的匹配规则,跳至步骤5;
最后进入第三流表Table2,按照范围值字段进行最后的匹配,通过对范围字段的查找,找到最佳的匹配叶子节点,在叶子节点中进行线性查找,找到最佳匹配规则。
利用本发明,可以为解决OpenFlow交换机中软件实现的报文分类算法提供依据,对多级流表的划分、包分类算法的选择、算法的级联等提供有效的参考。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
图1为本发明OpenFlow交换机中的报文分类方法中的OpenFlow交换机三级流表结构图;
图2为本发明OpenFlow交换机中的报文分类方法中的规则集按域划分示意图;
图3为本发明OpenFlow交换机中的报文分类方法中的所述预处理后三级流表结构图;
图4为本发明OpenFlow交换机中的报文分类方法中的预处理后的方法流程图;
图5为本实施例OpenFlow交换机中的报文分类方法中的详细方法流程图;
图6为本实施例OpenFlow交换机中的报文分类方法中的Bloom Filter加动态链表结构图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明提出了一种针对OpenFlow交换机的报文分类方法,主要提出了一种三级流表分级标准,具体针对OpenFlow标准中的关键字的特征,将关键字分为三种类型,精确值、前缀值、范围值,且每种类型的字段组成一级流表,将流表分为三级,流表之间采取级联的方式进行连接,即每一级流表的输出作为参数,传给下一级流表作为输入,并在形成三级流表以后,基于上述三级流表对从OpenFlow交换机进入的IP包进行报文分类处理。
如表1所示,R1,R2,R3分别为一条规则,每条规则可以看成一个数组,每个关键字对应的数值是数组中的一个元素,所有的规则构成了一个规则集,每一条规则中的维度就是OpenFlow标准中的关键词。
在本实施例中,需要对规则集中的规则进行预处理,由此,形成对IP包进行报文分类的流表,其中,形成流表的方法主要包括:
步骤1)预先根据交换机中所采取的规则集中各个规则中的关键词,分别按照精准值、前缀值、范围值进行分类;
实施例中,每一条规则集都用一个结构体来表示,此结构体类似于数组,每一个域称为一个维度,类似于数组中的一个元素,对所有维度按照精确值、前缀值、范围值进行分类。
如下所示:
其中num1、num2、num3分别表示精确值、前缀值、范围值字段的个数。本实施例中的规则集中的部分维度如下表一所示:
表一:
步骤2)根据分类后的关键词对规则集中的规则构建一个三级级联的流表,用以作为交换机对报文分类的分类依据,包括:
根据精准值形成的第一流表Table0、根据前缀值形成的第二流表Table1和根据范围值形成的第二流表Table2,其中,每一级流表的输入是上级流表的输出,该步骤具体包括:
A1:把规则集中的关键字按照三种类型进行分类:精确值,前缀值,范围值,其中,每种类型的值作为一级流表,共分为三级流表。
A2:精确值包含多个字段,典型值有协议号,VLAN,MPLS等。通过对具体网络环境中实际流量的分析可以发现,大部分字段的精确值通常为通配符,常用的协议号、VLAN等也是一些可数的固定值,如协议类型大部分值集中在TCP、UDP等一些协议上。
这些精确值组成的字段定位第一流表Table0,采用哈希函数来处理,这样,对于每一个key值,会包含多个规则集。
实施例中,基于哈希函数对精确值进行处理,以形成第一流表Table0,具体包括以下详细步骤:
使用Hash数据结构建立第一流表Table0。
以规则集中的精确字段部分作为输入,参数个数为num1,确定一个hash函数H(k1,k2,…,knum1),若不同的规则映射到相同的位置,则采用链表的方式进行连接。Hash表中每个位置存储规则的数目和规则号码。节点的基本数据结构如下:
其中,hash函数H(k1,k2,…,knum1)采用布隆过滤器(Bloom Filter)加动态链表,如图6所示。Bloom Filter基于Hash查找,在报文不命中的情况下分类效率大大高于哈希链表方法,对于需要进行精确匹配的字段具有很高的分类效果,并且适合硬件实现。k1,k2都表示OpenFlow规范中给出的关键字中,数值类型为精确值的关键字,如VLAN、MAC等。
该步骤中,使用哈希算法的具体的操作包括下述内容:
(11)对规则进行Hash映射时,首先判断此规则中精确值字段部分是否是通配,若是通配,则跳至步骤(12);
按照事先定义好的Hash函数,对规则做一个映射,将其分配到相应的节点。返回到(11)开始的位置、继续处理下一条规则。
(12)在Hash表中设置一个固定的节点,用来存储内容为通配的规则。将此规则存储在这一节点中。
在一个实施例中,哈希函数采用布隆过滤器加动态链表,如上所述。
在实际的网络环境中,各个字段的主要都集中在几个少数的数值上,所以Hash表中的节点个数也不会过多,不会引起内存的膨胀和结构的过于臃肿。
A3:前缀值主要包含两个字段,源IP和目的IP。使用适合最长前缀匹配的数据包分类算法,如Grid of Trie等对规则集做处理,此级流表作为第二流表Table1,具体来说,该步骤详细如图4-6所示,包括:
使用Grid-of-Trie数据结构建立第二流表Table1。
具体包括:遍历Hash表中的节点,若当前节点中包含的的规则集个数大于给定的阈值,则以该节点为根节点,利用前缀字段建立Grid-of-Trie数据结构,每个节点都由三个分支,分别为0、1、*,其中0表示该数值的二进制表示中某一位数值为0,1表示该数值的二进制表示中某一位的值为1,*代表通配。
最终匹配的规则都集中在叶节点中,其中,A2中的每一个key值对应的规则集都作为一个输入,构建一棵前缀匹配树,规则集存储在树的叶节点上,每个叶节点对应多个规则集。
Grid-of-Trie算法是对一维Trie树的二位扩展,主要处理源IP和目的IP。先不考虑过滤规则数据库中源IP地址,根据过滤规则数据库中目的地址前缀构造一棵Trie of tries(称为Dest-Trie树)。这个目的前缀Trie树中每个节点,如果在数据库中存在其对应的目的地址前缀,则会指向一棵源地址Trie树(称为Src-trie树),否则相应的指针为空。
A4:范围值主要包含两个字段,源端口和目的端口。
具体来说,使用适合范围匹配的数据包分类算法,如Hicuts等对规则集进行处理,此级流表作为第三流表Table2,其中,A3中的每一个叶节点如果包含的规则集个数超过限定的最大值,则构建Hicuts树。Hicuts采用了一颗决策树作为快速查找的数据结构,其内部节点包含适当的分类导向信息,但不存储任何规则,其叶节点存出一个小型的规则子集。Hicuts算法结合了决策树搜索和线性查找两种分类方式,采用多级空间分解,每级分解在一个维度上进行,把规则库分为各个叶子节点内的小规则集,当一个IP包进来时,沿着树的某一分支遍历到树的叶子,将该IP包和叶子节点中少量的规则线性匹配。
使用Hicuts数据结构建立第三流表Table2。遍历Grid-of-Trie树中的叶子节点,若当前节点中包含的规则集个数大于给定的阈值,则以该节点作为根节点,利用范围字段简历Hicuts数据结构。
也就是说,本发明对每级流表都采用适合的包分类算法对规则集进行预处理,流表的连接方式为,上级流表的输出作为参数,传给下级流表作为输入参数来实现,这样就对所有的规则集中的不同字段分别构建了自己的数据结构,最终形成了OpenFlow下的数据包分类依据。
其中,在上述分类规则形成以后,则针对OpenFlow交换机,对从交换机源端口接受的IP包进行解析,按照自定义的数据流,提取出各个关键字,将解析好的数据传入对应的流表中,找到对应的匹配规则,按照相应的行为进行处理,如转发或丢弃,该步骤具体包括:
步骤3)从交换机源端口接受的IP包进行解析,按照自定义的数据流,提取出各个关键字;
步骤4)从流表0开始依次逐级对IP包进行匹配:
数据包依次经过Table0,Table1,Table2,并在每级流表中进行相应字段的匹配查找,如果找到匹配的叶子节点之后,该节点中包含的规则个数小于设定的阈值,则在该节点内进行线性查找,否则进入下级流表继续查找,直到找到匹配的规则或者所有查找动作都结束为止。
更详细地,具体包括以下几步:
首先进入Table0,判断该IP包的精确值字段是否为通配,若为通配,直接进入Table1;否则将字段通过Hash函数进行映射,找到哈希表中与该规则匹配的节点。
若该节点中包含的规则集的个数大于给定的阈值,此IP包进入Table1继续匹配,否则在该节点内对其余字段进行线性匹配,找到与该IP包最佳匹配的规则,跳至步骤5。
其次进入Table1,判断该IP包的前缀字段是否为通配,若为通配,进入相应的分支;否则按照Trie的流向进入最终匹配的叶子节点。进入叶节点后,判断该叶子节点包含的规则个数是否大于给定的阈值,若大于给定的阈值,进入Table2;否则在该叶子节点中对其余的匹配域进行线性匹配,找到最佳的匹配规则,跳至步骤5。
最后进入Table2,按照范围值字段进行最后的匹配。通过对范围字段的查找,找到最佳的匹配叶子节点,在叶子节点中进行线性查找,找到最佳匹配规则。
匹配结果中的部分维度如下表二所示:
表二:
步骤5、若此IP包找到了最佳的匹配规则,按照相应规则的动作进行处理,如转发或丢弃,并从交换机源端口接收下一个IP包,直至此数据流结束。若没有找到与该IP包匹配的规则,则向控制器提交信息,由控制器进行后续处理,如规则集的更新或删除等操作。
本发明填补了OpenFlow交换机多级流表的报文分类的空白,将关键字按照所属的种类分为三类:精确值,前缀值,范围值,将每一种类型的关键字定位一级流表,且将精确值放在第一级,前缀值放在第二级,范围值放在第三级,这样设计可以极大地增加查找的速度。
本发明充分利用了不同包分类算法的长处,并将它们结合起来,算法之间通过指针进行连接,即前一级流表的输出,作为参数传给下级流表,并作为下级流表的输入。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种OpenFlow交换机中的报文分类方法,包括:
步骤1)预先根据交换机中所采取的规则集中各个规则中的关键词,分别按照精准值、前缀值、范围值进行分类;
步骤2)根据分类后的关键词对规则集中的规则构建一个三级级联的流表,用以作为交换机对报文分类的分类依据,包括:
根据精准值形成的第一流表Table0、根据前缀值形成的第二流表Table1和根据范围值形成的第二流表Table2,其中,每一级流表的输入是上级流表的输出;
步骤3)从交换机源端口接收数据流中的IP包,分别按照精确值、前缀值、范围值提取相应的字段;
步骤4)对接收到的IP包根据第一流表、第二流表和第二流表的顺序逐个流表进行匹配,以此对IP包中的报文进行分类。
2.根据权利要求1所述的OpenFlow交换机中的报文分类方法,其特征在于,还包括:
步骤5)若此IP包在某一个流表中找到了对应的匹配规则,按照相应规则的动作进行处理,并从交换机源端口接收下一个IP包;
若没有找到与该IP包匹配的规则,则向一控制器提交信息,由控制器对上述规则集或者流表进行后续处理。
3.根据权利要求1或2所述的OpenFlow交换机中的报文分类方法,其特征在于,所述步骤2)中,具体包括:
采取哈希算法、Grid of Trie算法、Hicuts树算法分别对规则集中的精确值、前缀值、范围值进行预处理,从而根据所有规则集中的不同字段构建对应的数据结构。
4.根据权利要求3所述的OpenFlow交换机中的报文分类方法,其特征在于,采取哈希算法对规则集中的精准值进行预处理,包括:
以规则集中的精确字段部分作为输入,参数个数为num1,确定一个hash哈希函数H(k1,k2,…,knum1),所述哈希函数采用Bloom Filter数据结构,BloomFilter基于hash查找,并利用位数组表示一个集合,其基于所述位数组判断一个元素是否属于这个集合;
其中K1,K2,Knum1是指每条规则中的每个匹配字段的具体数值,K1代表VLAN匹配字段的一个具体数值,作为此Hash函数的参数输入;
若不同的规则映射到相同的节点位置,则采用链表的方式进行连接,其中,Hash表中每个节点位置存储规则的数目和代表规则优先级的id号码。
5.根据权利要求4所述的OpenFlow交换机中的报文分类方法,其特征在于,采用Grid of Trie算法对前缀值进行预处理,包括:
遍历所述Hash表中的节点位置,若当前节点中包含的的规则集个数大于给定的第一阈值,则以该节点为根节点,利用前缀字段建立一Grid-of-Trie数据结构;
其中,Grid-of-Trie数据结构中每个节点都由三个分支,分别为0、1、*,其中0表示该数值的二进制表示中某一位数值为0,1表示该数值的二进制表示中某一位的值为1,*代表通配,最终匹配的规则都集中在叶节点中。
6.根据权利要求5所述的OpenFlow交换机中的报文分类方法,其特征在于,采用Hicuts算法对范围值进行预处理,包括:
遍历Grid-of-Trie树中的叶子节点,若当前节点中包含的规则集个数大于给定的第二阈值;
则以该节点作为根节点,利用范围字段建立对应的Hicuts数据结构,并据此存储对应的规则,且所述Hicuts数据结构采用了一颗决策树作为快速查找的数据结构,其内部节点包含适当的分类导向信息,但不存储任何规则,其叶节点存储一个小型的规则子集。
7.根据权利要求4所述的OpenFlow交换机中的报文分类方法,其特征在于,步骤2)中,具体包括:
对规则集中的规则进行Hash映射,判断此规则中精确值字段部分是否是通配,若是通配,则跳至步骤(12);
若非通配,按照预先定义的布隆过滤器(Bloom Filter)Hash数据结构,对规则做一个映射,将其分配到相应的节点;返回到(11)开始的位置、继续处理下一条规则;
(12)在Hash表中设置一个固定的节点,用来存储内容为通配的规则,将此规则存储在这一节点中。
8.根据权利要求5所述的OpenFlow交换机中的报文分类方法,其特征在于,步骤4中,具体包括:
基于第一流表,利用精确值字段,通过预先建立的哈希函数,定位和此数据包相匹配的记录;
其中,若对应记录的个数少于设定的最大值,则对该记录内的规则进行线性查找,并找到最佳匹配的规则集,并执行对应的处理动作;
若对应的记录个数大于设定的最大值,则进入第二流表,根据第二流表中的维度进行最大匹配前缀的查找,直到找到最终的叶子节点;
若该叶子节点包含的规则集小于限定的最大值,则对该叶子节点内的规则进行线性查找,并找到最佳匹配的规则集,按照规则集中的规则对应的行为进行转发操作;
若第二流表中的叶子节点中包含的规则集个数大于给定的最大值,则进入第三流表,按照范围进行查找,直到最终的叶子节点,在叶子节点内进行线性查找,并找到最佳匹配规则,按照相应的行为对IP包进行处理。
9.根据权利要求8所述的的OpenFlow交换机中的报文分类方法,其特征在于,步骤4中,具体包括:
首先提取IP包的关键词,并读取第一流表Table0,判断该IP包的精确值字段是否为通配,若为通配,直接进入Table1;
否则将字段通过Hash函数进行映射,找到哈希表中与该规则匹配的节点;
若该节点中包含的规则集的个数大于给定的阈值,此IP包进入Table1继续匹配,否则在该节点内对其余字段进行线性匹配,找到与该IP包最佳匹配的规则,跳至步骤5;
其次进入第二流表Table1,判断该IP包的前缀字段是否为通配,若为通配,进入相应的分支;
否则按照Trie的流向进入最终匹配的叶子节点,进入叶节点后,判断该叶子节点包含的规则个数是否大于给定的阈值,若大于给定的阈值,进入第三流表Table2;否则在该叶子节点中对其余的匹配域进行线性匹配,找到最佳的匹配规则,跳至步骤5;
最后进入第三流表Table2,按照范围值字段进行最后的匹配,通过对范围字段的查找,找到最佳的匹配叶子节点,在叶子节点中进行线性查找,找到最佳匹配规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510002600.6A CN104579941A (zh) | 2015-01-05 | 2015-01-05 | 一种OpenFlow交换机中的报文分类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510002600.6A CN104579941A (zh) | 2015-01-05 | 2015-01-05 | 一种OpenFlow交换机中的报文分类方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104579941A true CN104579941A (zh) | 2015-04-29 |
Family
ID=53095182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510002600.6A Pending CN104579941A (zh) | 2015-01-05 | 2015-01-05 | 一种OpenFlow交换机中的报文分类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104579941A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105227495A (zh) * | 2015-10-29 | 2016-01-06 | 北京邮电大学 | 用于软件定义网络的转发规则配置方法及装置 |
CN105516393A (zh) * | 2015-12-31 | 2016-04-20 | 赛尔网络有限公司 | 一种多阶段多维ip地址分类方法及装置 |
CN105812203A (zh) * | 2016-03-07 | 2016-07-27 | 亚信科技(南京)有限公司 | 一种请求消息处理方法及设备 |
CN106487769A (zh) * | 2015-09-01 | 2017-03-08 | 深圳市中兴微电子技术有限公司 | 一种访问控制列表acl的实现方法及装置 |
CN107294865A (zh) * | 2017-07-31 | 2017-10-24 | 华中科技大学 | 一种软件交换机的负载均衡方法及软件交换机 |
CN107562703A (zh) * | 2016-07-01 | 2018-01-09 | 北京国双科技有限公司 | 字典树重构方法及系统 |
CN108337168A (zh) * | 2018-02-11 | 2018-07-27 | 天津大学 | 流簇交换路由机制OpenFlow组表选择方法 |
CN108650221A (zh) * | 2018-03-29 | 2018-10-12 | 烽火通信科技股份有限公司 | 一种sptn设备的控制报文提取装置及方法 |
WO2019042305A1 (zh) * | 2017-08-31 | 2019-03-07 | 新华三技术有限公司 | 网包分类决策树的建立 |
CN109857958A (zh) * | 2019-02-13 | 2019-06-07 | 杭州孝道科技有限公司 | 一种http输入点查找的方法 |
CN110569360A (zh) * | 2019-09-06 | 2019-12-13 | 成都深思科技有限公司 | 网络会话数据标注与自动关联的方法 |
WO2020038399A1 (zh) * | 2018-08-24 | 2020-02-27 | 中兴通讯股份有限公司 | 数据包的分类方法、装置及计算机可读存储介质 |
CN110891020A (zh) * | 2019-12-24 | 2020-03-17 | 中国电子科技集团公司第五十四研究所 | 一种sdn带内控制网络的流表数量优化方法 |
CN111177198A (zh) * | 2019-12-27 | 2020-05-19 | 芯启源(南京)半导体科技有限公司 | 一种用于芯片的内容查找方法 |
CN111431929A (zh) * | 2020-04-08 | 2020-07-17 | 清华大学 | 软件定义网络多协议区分流表构建方法和系统 |
CN112425131A (zh) * | 2018-11-30 | 2021-02-26 | 华为技术有限公司 | 一种acl 的规则分类方法、查找方法和装置 |
US11159432B2 (en) | 2015-08-22 | 2021-10-26 | Huawei Technologies Co., Ltd. | Data transmission method, and switch and network control system using the method |
CN114448892A (zh) * | 2022-02-10 | 2022-05-06 | 珠海星云智联科技有限公司 | 一种软硬件选路方法及装置 |
CN114793215A (zh) * | 2021-12-14 | 2022-07-26 | 合肥哈工轩辕智能科技有限公司 | 一种基于负载均衡模式异步代理的分布式系统 |
WO2022267018A1 (zh) * | 2021-06-25 | 2022-12-29 | 新华三技术有限公司 | 一种报文匹配方法、装置、网络设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2355423A1 (en) * | 2010-01-29 | 2011-08-10 | Deutsche Telekom AG | System and method for routing data packets over an Internet Protocol network |
CN103354522A (zh) * | 2013-06-28 | 2013-10-16 | 华为技术有限公司 | 一种多级流表查找方法和装置 |
-
2015
- 2015-01-05 CN CN201510002600.6A patent/CN104579941A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2355423A1 (en) * | 2010-01-29 | 2011-08-10 | Deutsche Telekom AG | System and method for routing data packets over an Internet Protocol network |
CN103354522A (zh) * | 2013-06-28 | 2013-10-16 | 华为技术有限公司 | 一种多级流表查找方法和装置 |
Non-Patent Citations (3)
Title |
---|
吕昭等: ""基于OpenFlow的报文分类算法研究与实现"", 《计算机工程与科学》 * |
孙毅等: ""报文分类算法研究"", 《计算机应用研究》 * |
李向文: ""支持OpenFlow交换机的关键技术研究与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11159432B2 (en) | 2015-08-22 | 2021-10-26 | Huawei Technologies Co., Ltd. | Data transmission method, and switch and network control system using the method |
WO2017036291A1 (zh) * | 2015-09-01 | 2017-03-09 | 深圳市中兴微电子技术有限公司 | 一种访问控制列表acl的实现方法、装置及存储介质 |
CN106487769B (zh) * | 2015-09-01 | 2020-02-04 | 深圳市中兴微电子技术有限公司 | 一种访问控制列表acl的实现方法及装置 |
CN106487769A (zh) * | 2015-09-01 | 2017-03-08 | 深圳市中兴微电子技术有限公司 | 一种访问控制列表acl的实现方法及装置 |
CN105227495B (zh) * | 2015-10-29 | 2018-08-21 | 北京邮电大学 | 用于软件定义网络的转发规则配置方法及装置 |
CN105227495A (zh) * | 2015-10-29 | 2016-01-06 | 北京邮电大学 | 用于软件定义网络的转发规则配置方法及装置 |
CN105516393A (zh) * | 2015-12-31 | 2016-04-20 | 赛尔网络有限公司 | 一种多阶段多维ip地址分类方法及装置 |
CN105812203B (zh) * | 2016-03-07 | 2019-05-10 | 亚信科技(南京)有限公司 | 一种请求消息处理方法及设备 |
CN105812203A (zh) * | 2016-03-07 | 2016-07-27 | 亚信科技(南京)有限公司 | 一种请求消息处理方法及设备 |
CN107562703A (zh) * | 2016-07-01 | 2018-01-09 | 北京国双科技有限公司 | 字典树重构方法及系统 |
CN107294865A (zh) * | 2017-07-31 | 2017-10-24 | 华中科技大学 | 一种软件交换机的负载均衡方法及软件交换机 |
CN107294865B (zh) * | 2017-07-31 | 2019-12-06 | 华中科技大学 | 一种软件交换机的负载均衡方法及软件交换机 |
US11184279B2 (en) | 2017-08-31 | 2021-11-23 | New H3C Technologies Co., Ltd. | Building decision tree for packet classification |
WO2019042305A1 (zh) * | 2017-08-31 | 2019-03-07 | 新华三技术有限公司 | 网包分类决策树的建立 |
CN108337168A (zh) * | 2018-02-11 | 2018-07-27 | 天津大学 | 流簇交换路由机制OpenFlow组表选择方法 |
CN108337168B (zh) * | 2018-02-11 | 2021-01-05 | 天津大学 | 流簇交换路由机制OpenFlow组表选择方法 |
CN108650221A (zh) * | 2018-03-29 | 2018-10-12 | 烽火通信科技股份有限公司 | 一种sptn设备的控制报文提取装置及方法 |
CN108650221B (zh) * | 2018-03-29 | 2020-12-15 | 烽火通信科技股份有限公司 | 一种sptn设备的控制报文提取装置及方法 |
CN110858823A (zh) * | 2018-08-24 | 2020-03-03 | 中兴通讯股份有限公司 | 一种数据包的分类方法、装置及计算机可读存储介质 |
WO2020038399A1 (zh) * | 2018-08-24 | 2020-02-27 | 中兴通讯股份有限公司 | 数据包的分类方法、装置及计算机可读存储介质 |
CN110858823B (zh) * | 2018-08-24 | 2023-03-07 | 中兴通讯股份有限公司 | 一种数据包的分类方法、装置及计算机可读存储介质 |
CN112425131B (zh) * | 2018-11-30 | 2022-03-04 | 华为技术有限公司 | 一种acl的规则分类方法、查找方法和装置 |
CN112425131A (zh) * | 2018-11-30 | 2021-02-26 | 华为技术有限公司 | 一种acl 的规则分类方法、查找方法和装置 |
CN109857958A (zh) * | 2019-02-13 | 2019-06-07 | 杭州孝道科技有限公司 | 一种http输入点查找的方法 |
CN110569360A (zh) * | 2019-09-06 | 2019-12-13 | 成都深思科技有限公司 | 网络会话数据标注与自动关联的方法 |
CN110891020A (zh) * | 2019-12-24 | 2020-03-17 | 中国电子科技集团公司第五十四研究所 | 一种sdn带内控制网络的流表数量优化方法 |
CN111177198A (zh) * | 2019-12-27 | 2020-05-19 | 芯启源(南京)半导体科技有限公司 | 一种用于芯片的内容查找方法 |
CN111177198B (zh) * | 2019-12-27 | 2023-06-16 | 芯启源(南京)半导体科技有限公司 | 一种用于芯片的内容查找方法 |
CN111431929A (zh) * | 2020-04-08 | 2020-07-17 | 清华大学 | 软件定义网络多协议区分流表构建方法和系统 |
WO2022267018A1 (zh) * | 2021-06-25 | 2022-12-29 | 新华三技术有限公司 | 一种报文匹配方法、装置、网络设备及介质 |
US12003418B2 (en) | 2021-06-25 | 2024-06-04 | New H3C Technologies Co., Ltd. | Method and apparatus for packet matching, network device, and medium |
CN114793215A (zh) * | 2021-12-14 | 2022-07-26 | 合肥哈工轩辕智能科技有限公司 | 一种基于负载均衡模式异步代理的分布式系统 |
CN114448892A (zh) * | 2022-02-10 | 2022-05-06 | 珠海星云智联科技有限公司 | 一种软硬件选路方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104579941A (zh) | 一种OpenFlow交换机中的报文分类方法 | |
US10462062B2 (en) | Memory efficient packet classification method | |
Meiners et al. | Hardware based packet classification for high speed internet routers | |
Qu et al. | Scalable many-field packet classification on multi-core processors | |
Yang et al. | Fast OpenFlow table lookup with fast update | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
CN111988231A (zh) | 一种掩码五元组规则匹配的方法及装置 | |
Perez et al. | Optimized packet classification for software-defined networking | |
US9900409B2 (en) | Classification engine for data packet classification | |
Lim et al. | Two-dimensional packet classification algorithm using a quad-tree | |
Kekely et al. | Packet classification with limited memory resources | |
Erdem et al. | Hierarchical hybrid search structure for high performance packet classification | |
CN111163077A (zh) | 一种基于网络处理器实现多维连续掩码的系统和方法 | |
CN103841112A (zh) | 基于网包分类的分类规则处理方法及装置、匹配装置 | |
Li et al. | Scalable packet classification using bit vector aggregating and folding | |
KR100662254B1 (ko) | 라우팅 시스템에서의 패킷 분류 장치 및 이를 위한 룰 구축 방법 | |
US10205658B1 (en) | Reducing size of policy databases using bidirectional rules | |
Nagpal et al. | A survey and taxonomy of various packet classification algorithms | |
Al-Nejadi et al. | Survey on multi field packet classification techniques | |
Srinivasan et al. | Scalable and parallel aggregated bit vector packet classification using prefix computation model | |
Ruan et al. | An energy-efficient TCAM-based packet classification with decision-tree mapping | |
Erdem | Pipelined hierarchical architecture for high performance packet classification | |
Dixit et al. | Packet classification algorithms | |
Huang et al. | A power-efficient approach to TCAM-based regular expression matching | |
Sun et al. | Openflow accelerator: A decomposition-based hashing approach for flow processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150429 |
|
RJ01 | Rejection of invention patent application after publication |