CN106789668B - 一种处理报文的方法和装置 - Google Patents
一种处理报文的方法和装置 Download PDFInfo
- Publication number
- CN106789668B CN106789668B CN201611140073.6A CN201611140073A CN106789668B CN 106789668 B CN106789668 B CN 106789668B CN 201611140073 A CN201611140073 A CN 201611140073A CN 106789668 B CN106789668 B CN 106789668B
- Authority
- CN
- China
- Prior art keywords
- type
- strategy
- sub
- factor
- algorithm
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种处理报文的方法,包括:根据规则表的类型确定与所述类型对应的策略因子,所述策略因子包含n个子策略因子,n为大于等于1的正整数;根据所述策略因子,选择对应的报文分类算法;接收报文,使用所述报文分类算法对所述报文在所述规则表中进行表项查找;根据查找到的表项对所述报文进行处理,同时,本发明实施例还提供一种处理报文的装置,通过策略选择的方式,针对各类不同特点、不同性能的报文分类问题都能找到一个适宜的查找算法,提高了报文处理的效率。
Description
技术领域
本发明涉及数据通信技术领域,尤其涉及一种处理报文的方法和装置。
背景技术
在现代路由器、防火墙等网络设备中,报文通常是根据规则表的优先级进行分类,从而实现各类不同的业务功能。这类规则表包括IP路由表、ACL(访问控制列表AccessControl List)过滤表、Filter表等等,它们都是由一条条规则组成的,每条规则通常包含若干个不同的域,比较有代表性的是MAC地址、IP地址、端口号、协议号等,每条规则还对应一个优先级和相应的动作集。所谓报文分类,即在上述规则表中查找到所有匹配该报文头部的规则,并选出优先级最高的一条规则,按照匹配到的规则预先设定的动作集,对报文进行处置,或转发、或丢弃、或修改报文头部字段。
各类规则表的功能、性能、容量、特性差异较大,有些规则表需要频繁更新,而有些规则表却在起机配置完成后几乎没有变化;而一部分规则表的容量很大,多达数百K,一部分规则表仅包含数K条规则。随着对报文分类问题逐步深入的研究,各类不同特点、性能迥异的算法不断被发明出来。
目前已有的报文分类算法,主要有Hash、LPM、Hi-Cuts、BC、TSS、RFC、EQC16-ABV、DCFL、TCAM等,它们各具特色,性能优劣也各不相同。
1.Hash(哈希算法)
Hash算法特别适用于精确匹配,支持大维度、大容量的报文分类,当规则的所有匹配域都是精确值类型时,Hash算法是最优的选择。但大部分的报文分类都不是简单的精确匹配问题,因此适用性不广。
2.LPM(Longest Prefix Match最长前缀匹配算法)
LPM是一种特殊的报文分类算法,其最初仅应用于路由表项的查找,根据报文目的IP字段进行最长匹配,和其他报文分类算法所不同的是IP字段前缀长度信息中已经隐含了表项的优先级,因此目的IP字段命中的永远是所有匹配的表项中前缀长度最长的一条表项。
3.Hi-Cuts(Hierarchical Intelligent Cuttings分层智能分割算法)
Hi-Cuts算法采用每域切割的方式,构建一个树形查找结构,一棵树包含两种类型的节点组成:叶子节点及内部节点。叶子节点存储一条规则或者一个最佳匹配规则集,内部节点不存储规则而是存储选择分支的判断条件。为了进行分类,报文的匹配域字段值构建成一个查找键值。在未到达叶子节点之前,为了选择分支,将查找键值和内部节点的分支判断条件进行比较,确定下一层的孩子节点,从而完成对树的层级遍历。如果叶子节点仅包含一条规则,就认为这是最佳匹配规则,但是如果叶子节点存储了一些规则,那么还需要进行小规模的线性遍历。该算法具有结构简单,速度较快等优点,但是当规则中存在大量全通配的匹配域值时,规则将被大量复制,不仅内存开销大,而且也会在很大程度上降低查找速度。
4.BC(Boundary Cuts边界切割算法)
BC,全称Boundary-Cuts是一种采用不均等切割的算法,根据各个规则的范围界限进行切分构建查找树,因此该查找树最大深度不超过规则维度。其优点为每次查找访问的次数都不超过规则维度,查找速度快;其缺点是在查找时,每一层都需要与许多切割点比较,若不能做到并行比较,查找速度较慢。
5.TSS(Tuple Space Search元组空间搜索算法)
TSS算法,其基本的思想是通过哈希表将分类索引值分成若干个精确匹配的索引值问题,可以应用在具有前缀规则的多维流分类问题上。以IPv4中<SIP+DIP>的分类问题为例,SIP和DIP中都存在许多不同的前缀长度,理论上<SIP+DIP>的前缀长度组合种类为32*32,每一种前缀长度组合都对应一个Tuple,每个Tuple中利用哈希算法进行查找,因此每个Tuple中的规则查找速度极快。但是由于报文头部字段中并不包含表征前缀长度的信息,因此需要针对每条报文都必须查找所有的Tuple,因此查询性能较低。
6.RFC(Recursive Flow Classification递归式流分类算法)
在某种程度上,可以认为RFC算法是改进版的BV算法,通过把本应该在查询过程中做的按比特位与运算提前到初始化阶段,牺牲一定的预处理性能,但极大的提升查找速度。在RFC算法中,每个域有其对应的取值范围(源端口16bits:0~65535),该范围中的每个值对应一个长比特位串,该比特位串表征报文对应的字段取该值时命中的规则集合,该比特位串的宽度和规则数目一致,每个比特分别对应一条规则(按规则序号或优先级号),置1说明命中该规则,置0说明未命中该规则。然后逐个域分阶段递归聚合。该算法查找性能极快,但是预处理速度和存储开销较大,同时属于静态算法,当需要新增一条规则时,需要重构查找数据结构,耗时无法接受,因此仅能应用于几乎不更新的场景。
7.EQC16-ABV(EQC-Aggregate BitVector EQC聚合比特向量算法)
EQC16-ABV算法作为BV算法、ABV算法的优化衍生算法,通过位图的附加信息的字段,减少查找过程的数据访问量,在一定程度上提高了内存利用率和报文分类速率。该算法可以支持一定速率的慢更新。
8.DCFL(Distributed Crossproducting of Field Lables分布式域标签交叉乘积算法)
在某些情况下,规则表中的所有的规则的同一域中的取值数目较少,因此可以采用DCFL这种组合算法进行查找,组合方法可以有BloomFilter或Index索引法,该算法可以获得很高的查询性能。但显然,DCFL算法强烈依赖于规则集特性。
9.TCAM(ternary content addressable memory三态内容寻址存储器)
目前采用较多的算法还有基于TCAM实现的报文分类算法,较一般软件算法,TCAM属于硬件实现,因此它的查询性能极快,但是它很受限于TCAM容量,同时还具有更新缓慢、功耗极大等缺点。
如上所述,各类算法性能差异较大,适用场景也几乎不同,每一种特定算法都能在某种特定报文分类问题获得最高的运行性能,但是没有一种特定算法能够让所有类型的报文分类问题都获得最优的运行性能。
发明内容
为解决上述技术问题,本发明实施例提供一种处理报文的方法,包括以下步骤:
根据规则表的类型确定与所述类型对应的策略因子,所述策略因子包含n个子策略因子,n为大于等于1的正整数;
根据所述策略因子,选择对应的报文分类算法;
接收报文,使用所述报文分类算法对所述报文在所述规则表中进行表项查找;
根据查找到的表项对所述报文进行处理。
可选的,所述根据所述策略因子,选择对应的报文分类算法的步骤具体包括:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第一域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,选择TSS算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目大于预设值,若更新类型子策略因子属于更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择DCFLS算法作为对应的报文分类算法;若当规则容量子策略因子对应的规则数目大于预设值,选择Hi-Cuts算法作为对应的报文分类算法。
可选的,所述根据所述策略因子,选择对应的报文分类算法的步骤具体包括:
当所述策略因子包含域类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第二域类型组合时,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择RFC算法作为对应的报文分类算法,
若当规则容量子策略因子对应的规则数目大于预设值,选择BC算法作为对应的报文分类算法。
可选的,所述根据所述策略因子,选择对应的报文分类算法的步骤具体包括:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第三域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,且,
若第三域类型组合中的Range字段类型仅限于WC、LO、HI、EX之一时,选择TSS算法作为对应的报文分类算法;
若第三域类型组合中的Range字段类型属于包含任意类型的范围时,选择TSS+Hi-Cuts算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的第一域类型组合中的Tenary字段的前缀对数目类型大于预设值,且,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,当规则容量子策略因子对应的规则数目小于等于预设值时,选择RFC算法作为对应的报文分类算法;当规则容量子策略因子对应的规则数目大于预设值时,选择BC算法作为对应的报文分类算法。
可选的,所述根据所述策略因子,选择对应的报文分类算法的步骤具体包括:
当所述策略因子包含域类型子策略因子、更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第四域类型组合时,
若更新类型子策略因子属于更新类型时,选择EQC-ABV算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型时,选择RFC算法作为对应的报文分类算法。
本发明实施例的另一方面在于提供一种处理报文的装置,包括:
确定模块,用于根据规则表的类型确定与所述类型对应的策略因子,所述策略因子包含n个子策略因子,n为大于等于1的正整数;
选择模块,用于根据所述策略因子,选择对应的报文分类算法;
接收模块,用于接收报文,使用所述报文分类算法对所述报文在所述规则表中进行表项查找;
处理模块,用于根据查找到的表项对所述报文进行处理。
可选的,所述选择模块具体用于:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第一域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,选择TSS算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目大于预设值,若更新类型子策略因子属于更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择DCFLS算法作为对应的报文分类算法;若当规则容量子策略因子对应的规则数目大于预设值,选择Hi-Cuts算法作为对应的报文分类算法。
可选的,所述选择模块具体用于:
当所述策略因子包含域类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第二域类型组合时,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择RFC算法作为对应的报文分类算法,
若当规则容量子策略因子对应的规则数目大于预设值,选择BC算法作为对应的报文分类算法。
可选的,所述选择模块具体用于:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第三域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,且,
若第三域类型组合中的Range字段类型仅限于WC、LO、HI、EX之一时,选择TSS算法作为对应的报文分类算法;
若第三域类型组合中的Range字段类型属于包含任意类型的范围时,选择TSS+Hi-Cuts算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的第一域类型组合中的Tenary字段的前缀对数目类型大于预设值,且,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,当规则容量子策略因子对应的规则数目小于等于预设值时,选择RFC算法作为对应的报文分类算法;当规则容量子策略因子对应的规则数目大于预设值时,选择BC算法作为对应的报文分类算法。
可选的,所述选择模块具体用于:
当所述策略因子包含域类型子策略因子、更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第四域类型组合时,
若更新类型子策略因子属于更新类型时,选择EQC-ABV算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型时,选择RFC算法作为对应的报文分类算法。
本发明实施例的有益效果在于,通过策略选择的方式,针对各类不同特点、不同性能的报文分类问题都能找到一个适宜的查找算法,提高了报文处理的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种方法流程图;
图2为本发明实施例的一种算法流程示意图;
图3为本发明实施例的一种装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种处理报文的方法,如图1所示,包括以下步骤:
S101,根据规则表的类型确定与所述类型对应的策略因子,所述策略因子包含n个子策略因子,n为大于等于1的正整数;
S103,根据所述策略因子,选择对应的报文分类算法;
S105,接收报文,使用所述报文分类算法对所述报文在所述规则表中进行表项查找;
S107,根据查找到的表项对所述报文进行处理。
其中,影响报文分类系统中报文分类算法选择的因素,称为策略因子,本发明实施例确定了如下四个策略因子,分别是:域类型子策略因子、规则类型子策略因子、规则容量子策略因子和更新类型子策略因子。
1)域类型子策略因子:即规则表中包含的所有查找字段的域类型的组合,域基本类型(BT)有Exact、LPM、Tenary、Range、Not等,因此域类型子策略因子可以用诸如[BT1]+[BT2]+[BT2]*的方式表达,代表该规则表的查找域包含一个BT1类型的字段、一个BT2类型的字段,同时包含多个或0个BT2类型的字段。其中,BT1、BT2可取域基本类型中的任意一种,“*”表示包含0个或者多个,类似于正则表达式的表述方式。
2)更新类型子策略因子:当规则表中的规则更新速度大于一个预设值时,说明该报文分类问题属于更新类型的,而当更新速度小于一个预设值时,可以采用重构分类系统的方式实现规则更新,其中,“重构”即根据当前规则表项,重新初始化该分类系统对应的数据结构,因此该报文分类问题可以认为是一个不更新类型。
3)规则容量子策略因子:规则容量是影响报文分类算法选择的又一关键因素,规则容量通常和内存利用率、查找速度等相关。
4)规则类型子策略因子:主要包含两点,其一是,当域类型子策略因子中存在IP字段,即包含Tenary类型(本发明实施例中,Tenary指代IPv4字段)时,不同IP前缀长度的数目或不同IP前缀长度对的数目(<源IP>+<目的IP>),它是一个关键的规则特性。其二是,某个特定域的Field-Value数目大小,指的是该规则表中所有规则在该域的取值集合的集合大小,即包含的不同值的数目,显然该数目小于规则容量。
例如:假设两个字段IP(两个域),规则如下:
(1)A:192.168.1.1/32B:192.168.12.1/32
(2)A:192.168.1.1/32B:192.168.12.2/32
(3)A:192.168.1.2/32B:192.168.12.1/32
(4)A:192.168.1.2/32B:192.168.12.2/32
从中可以看出A字段中,只有两个值(即Field-Value数目为2):
192.168.1.1、192.168.1.2。
而B字段也只有两个值(Field-Value数目也为2)。
可选的,步骤S103具体包括:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子、更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第一域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,选择TSS算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目大于预设值,若更新类型子策略因子属于更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择DCFLS算法作为对应的报文分类算法;若当规则容量子策略因子对应的规则数目大于预设值,选择Hi-Cuts算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目大于预设值,若更新类型子策略因子属于不更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择RFC算法作为对应的报文分类算法;若当规则容量子策略因子对应的规则数目大于预设值,选择Hi-Cuts算法作为对应的报文分类算法。
其中,第一域类型组合可以为:{[Exact]*+Tenary+[Tenary]*}。
可选的,步骤S103具体包括:
当所述策略因子包含域类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第二域类型组合时,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择RFC算法作为对应的报文分类算法,
若当规则容量子策略因子对应的规则数目大于预设值,选择BC算法作为对应的报文分类算法。
其中,第二域类型组合可以为:{[Exact]*+Range+[Range]*}。
可选的,步骤S103具体包括:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第三域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,且,
若第三域类型组合中的Range字段类型仅限于WC、LO、HI、EX之一时,选择TSS算法作为对应的报文分类算法;其中,以16bit的源端口为例,WC:Wildcard通配符即(0~2的16次方-1)、LO:小于1024即0~1023、HI:1024~65535、EX:精确值1500~1500。
若第三域类型组合中的Range字段类型属于包含任意类型的范围时,选择TSS+Hi-Cuts算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的第一域类型组合中的Tenary字段的前缀对数目类型大于预设值,且,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,当规则容量子策略因子对应的规则数目小于等于预设值时,选择RFC算法作为对应的报文分类算法;当规则容量子策略因子对应的规则数目大于预设值时,选择BC算法作为对应的报文分类算法。
其中,第三域类型组合可以为:{[Exact]*+Tenary+[Tenary]*+Range+[Range]*}。
其中,关于TSS+Hi-Cuts算法,
TSS算法全称为TupleSpaceSearch算法,它是利用IP字段的前缀对类型规则表中的规则进行分类,划分出的每一类规则集合称为一个Tuple,同一个Tuple中的规则的IP字段前缀长度相同,因此针对{Tenary+Exact}这种域类型组合的规则表,可以使用Hash算法实现高效分类。
但是当增加一个端口字段即Range类型的字段时,TSS算法就不适用了,因此本发明实施例提出了TSS+Hi-Cuts算法,即{Tenary+Exact}域类型组合采用TSS算法,并针对每一个Tuple建立一颗Hi-Cuts查找树。
TSS+Hi-Cuts算法主要应用于{[Exact]*+Tenary+[Tenary]*+Range+[Range]*}这种域类型组合的规则表。
TSS+Hi-Cuts算法的实现过程如下,如图2所示:
以Dest_IP+Dest_PORT(目的IP+目的端口)为例,它就是{Tenary+Range}域类型组合,即{[Exact]*+Tenary+[Tenary]*+Range+[Range]*}域类型组合的一种。
首先,packet-in收到数据报文,根据规则表中Dest_IP字段的掩码长度来划分规则集,分成N类。
比如110.0.0.0/8+[0,65535]落到Tuple-1中,192.168.20.2/32+[0,1023]落到Tuple-32中,而172.168.0.0/16+[2045,2045]就落到Tuple-4中,至于Tuple的数目N根据实际情况可以调整,Nmax=32。
然后,分别根据每个Tuple中的子规则集建立一颗Hi-Cuts查找树(HiCuts-Tree-1、HiCuts-Tree-2、HiCuts-Tree-3、HiCuts-Tree-4),切割的字段为Dest_IP&Mask+Dest_Port。
比如Tuple-1中,规则110.0.0.0/8+[0,65535]的切割字段为110+[0,65535]。Tuple-32中,192.168.20.2/32+[0,1023]的切割字段为192.168.20.2+[0,1023]。
每条报文都需要同时在Tuple-1到Tuple-N中进行并行查找,查找的N个结果,对应N条规则,每条规则对应一个优先级,进行优先级判断,从这N条规则中选择中优先级最高的规则作为最终结果输出(Rule out)。
可选的,步骤S103具体包括:
当所述策略因子包含域类型子策略因子、更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第四域类型组合时,
若更新类型子策略因子属于更新类型时,选择EQC-ABV算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型时,选择RFC算法作为对应的报文分类算法。
其中,第四域类型组合可以为:{[Exact]*+[Tenary]*+[Range]*+Not+[Not]*}。
可选的,当所述策略因子包含域类型子策略因子时,若域类型组合为{Exact+[Exact]*},哈希算法是最优的选择,无论是查找速度、内存开销、更新速度都是最优的。
可选的,当所述策略因子包含域类型子策略因子时,若域类型组合为{LPM},显然,最优的选择是LPM查找算法。
本发明实施例的有益效果在于,通过策略选择的方式,针对各类不同特点、不同性能的报文分类问题都能找到一个适宜的查找算法,提高了报文处理的效率。
本发明实施例的另一方面在于提供一种处理报文的装置,如图3所示,包括:
确定模块201,用于根据规则表的类型确定与所述类型对应的策略因子,所述策略因子包含n个子策略因子,n为大于等于1的正整数;
选择模块203,用于根据所述策略因子,选择对应的报文分类算法;
接收模块205,用于接收报文,使用所述报文分类算法对所述报文在所述规则表中进行表项查找;
处理模块207,用于根据查找到的表项对所述报文进行处理。
可选的,所述选择模块203具体用于:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第一域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,选择TSS算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目大于预设值,若更新类型子策略因子属于更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择DCFLS算法作为对应的报文分类算法;若当规则容量子策略因子对应的规则数目大于预设值,选择Hi-Cuts算法作为对应的报文分类算法。
可选的,所述选择模块203具体用于:
当所述策略因子包含域类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第二域类型组合时,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择RFC算法作为对应的报文分类算法,
若当规则容量子策略因子对应的规则数目大于预设值,选择BC算法作为对应的报文分类算法。
可选的,所述选择模块203具体用于:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第三域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,且,
若第三域类型组合中的Range字段类型仅限于WC、LO、HI、EX之一时,选择TSS算法作为对应的报文分类算法;其中,以16bit的源端口为例,WC:Wildcard通配符即0~(2的16次方-1)LO:小于1024即0~1023HI:1024~65535EX:精确值1500~1500;
若第三域类型组合中的Range字段类型属于包含任意类型的范围时,选择TSS+Hi-Cuts算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的第一域类型组合中的Tenary字段的前缀对数目类型大于预设值,且,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,当规则容量子策略因子对应的规则数目小于等于预设值时,选择RFC算法作为对应的报文分类算法;当规则容量子策略因子对应的规则数目大于预设值时,选择BC算法作为对应的报文分类算法。
可选的,所述选择模块203具体用于:
当所述策略因子包含域类型子策略因子、更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第四域类型组合时,
若更新类型子策略因子属于更新类型时,选择EQC-ABV算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型时,选择RFC算法作为对应的报文分类算法。
本发明实施例的有益效果在于,通过策略选择的方式,针对各类不同特点、不同性能的报文分类问题都能找到一个适宜的查找算法,提高了报文处理的效率。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (2)
1.一种处理报文的方法,其特征在于,包括:
根据规则表的类型确定与所述类型对应的策略因子,所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子和更新类型子策略因子的一种或多种;
根据所述策略因子,选择对应的报文分类算法;
接收报文,使用所述报文分类算法对所述报文在所述规则表中进行表项查找;
根据查找到的表项对所述报文进行处理;
其中,所述根据所述策略因子,选择对应的报文分类算法的步骤具体包括:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第一域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,选择TSS算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目大于预设值,若更新类型子策略因子属于更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择DCFLS算法作为对应的报文分类算法;若当规则容量子策略因子对应的规则数目大于预设值,选择Hi-Cuts算法作为对应的报文分类算法;或者,
当所述策略因子包含域类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第二域类型组合时,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择RFC算法作为对应的报文分类算法,
若当规则容量子策略因子对应的规则数目大于预设值,选择BC算法作为对应的报文分类算法;或者,
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第三域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,且,
若第三域类型组合中的Range字段类型仅限于WC、LO、HI、EX之一时,选择TSS算法作为对应的报文分类算法;
若第三域类型组合中的Range字段类型属于包含任意类型的范围时,选择TSS+Hi-Cuts算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的第一域类型组合中的Tenary字段的前缀对数目类型大于预设值,且,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,当规则容量子策略因子对应的规则数目小于等于预设值时,选择RFC算法作为对应的报文分类算法;当规则容量子策略因子对应的规则数目大于预设值时,选择BC算法作为对应的报文分类算法;或者,
当所述策略因子包含域类型子策略因子、更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第四域类型组合时,
若更新类型子策略因子属于更新类型时,选择EQC-ABV算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型时,选择RFC算法作为对应的报文分类算法。
2.一种处理报文的装置,其特征在于,包括:
确定模块,用于根据规则表的类型确定与所述类型对应的策略因子,所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子和更新类型子策略因子的一种或多种;
选择模块,用于根据所述策略因子,选择对应的报文分类算法;
接收模块,用于接收报文,使用所述报文分类算法对所述报文在所述规则表中进行表项查找;
处理模块,用于根据查找到的表项对所述报文进行处理;
其中,所述选择模块具体用于:
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第一域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,选择TSS算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目大于预设值,若更新类型子策略因子属于更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择DCFLS算法作为对应的报文分类算法;若当规则容量子策略因子对应的规则数目大于预设值,选择Hi-Cuts算法作为对应的报文分类算法;或者,
当所述策略因子包含域类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第二域类型组合时,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,且,
若当规则容量子策略因子对应的规则数目小于预设值,选择RFC算法作为对应的报文分类算法,
若当规则容量子策略因子对应的规则数目大于预设值,选择BC算法作为对应的报文分类算法;或者,
当所述策略因子包含域类型子策略因子、规则类型子策略因子、规则容量子策略因子,更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第三域类型组合时,
若确定规则类型子策略因子对应的Tenary字段的前缀对类型数目小于等于预设值,且,
若第三域类型组合中的Range字段类型仅限于WC、LO、HI、EX之一时,选择TSS算法作为对应的报文分类算法;
若第三域类型组合中的Range字段类型属于包含任意类型的范围时,选择TSS+Hi-Cuts算法作为对应的报文分类算法;
若确定规则类型子策略因子对应的第一域类型组合中的Tenary字段的前缀对数目类型大于预设值,且,
若更新类型子策略因子属于更新类型,选择Hi-Cuts算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型,当规则容量子策略因子对应的规则数目小于等于预设值时,选择RFC算法作为对应的报文分类算法;当规则容量子策略因子对应的规则数目大于预设值时,选择BC算法作为对应的报文分类算法;或者,
当所述策略因子包含域类型子策略因子、更新类型子策略因子时,确定所述域类型子策略因子对应的域类型组合,当所述域类型组合为第四域类型组合时,
若更新类型子策略因子属于更新类型时,选择EQC-ABV算法作为对应的报文分类算法;
若更新类型子策略因子属于不更新类型时,选择RFC算法作为对应的报文分类算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611140073.6A CN106789668B (zh) | 2016-12-12 | 2016-12-12 | 一种处理报文的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611140073.6A CN106789668B (zh) | 2016-12-12 | 2016-12-12 | 一种处理报文的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106789668A CN106789668A (zh) | 2017-05-31 |
CN106789668B true CN106789668B (zh) | 2020-05-22 |
Family
ID=58880209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611140073.6A Active CN106789668B (zh) | 2016-12-12 | 2016-12-12 | 一种处理报文的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106789668B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157445B (zh) * | 2021-03-30 | 2022-04-08 | 郑州信大捷安信息技术股份有限公司 | 基于哈希运算和索引值比对的双向报文对称rss处理方法及系统 |
CN114615336A (zh) * | 2022-04-06 | 2022-06-10 | 北京字节跳动网络技术有限公司 | 一种请求调度方法、装置、计算机设备和存储介质 |
CN115086442B (zh) * | 2022-08-15 | 2022-12-27 | 恒生电子股份有限公司 | 数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7545809B2 (en) * | 2003-05-28 | 2009-06-09 | International Business Machines Corporation | Packet classification |
CN101567854A (zh) * | 2009-05-26 | 2009-10-28 | 武汉烽火网络有限责任公司 | 基于流分类的以太网数据帧vlan双层标签处理装置和方法 |
CN102523163A (zh) * | 2011-12-19 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 一种支持多种分流模式的流量管理设备和方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
-
2016
- 2016-12-12 CN CN201611140073.6A patent/CN106789668B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7545809B2 (en) * | 2003-05-28 | 2009-06-09 | International Business Machines Corporation | Packet classification |
CN101567854A (zh) * | 2009-05-26 | 2009-10-28 | 武汉烽火网络有限责任公司 | 基于流分类的以太网数据帧vlan双层标签处理装置和方法 |
CN102523163A (zh) * | 2011-12-19 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 一种支持多种分流模式的流量管理设备和方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106789668A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9819637B2 (en) | Efficient longest prefix matching techniques for network devices | |
Bremler-Barr et al. | Space-efficient TCAM-based classification using gray coding | |
US7885268B2 (en) | Method and system for hash table based routing via table and prefix aggregation | |
US7535906B2 (en) | Packet classification | |
US7957387B2 (en) | Packet classification | |
US10284472B2 (en) | Dynamic and compressed trie for use in route lookup | |
US8732110B2 (en) | Method and device for classifying a packet | |
US10148571B2 (en) | Jump on a match optimization for longest prefix match using a binary search tree | |
US7706375B2 (en) | System and method of fast adaptive TCAM sorting for IP longest prefix matching | |
US8798066B2 (en) | Method for IPv6 longest prefix match | |
US7251651B2 (en) | Packet classification | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
CN106789668B (zh) | 一种处理报文的方法和装置 | |
CN106330716B (zh) | Ip路由查找方法及装置 | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
Yang et al. | Fast OpenFlow table lookup with fast update | |
US6970971B1 (en) | Method and apparatus for mapping prefixes and values of a hierarchical space to other representations | |
CN106789727B (zh) | 报文分类方法和装置 | |
Kekely et al. | Packet classification with limited memory resources | |
KR101153940B1 (ko) | 패킷 분류 장치 및 그 방법 | |
Ahmed et al. | PCIU: an efficient packet classification algorithm with an incremental update capability | |
Chang | Efficient multidimensional packet classification with fast updates | |
US10205658B1 (en) | Reducing size of policy databases using bidirectional rules | |
Huang et al. | A hybrid packet classification algorithm based on hash table and geometric space partition | |
EP3319279B1 (en) | Ip routing lookup |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |