CN1905523A - 一种多域流分类的实现方法 - Google Patents
一种多域流分类的实现方法 Download PDFInfo
- Publication number
- CN1905523A CN1905523A CNA2006100619939A CN200610061993A CN1905523A CN 1905523 A CN1905523 A CN 1905523A CN A2006100619939 A CNA2006100619939 A CN A2006100619939A CN 200610061993 A CN200610061993 A CN 200610061993A CN 1905523 A CN1905523 A CN 1905523A
- Authority
- CN
- China
- Prior art keywords
- flow classification
- classification rule
- coupling
- rule
- territory
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种多域流分类实现方法,所述的方法包括如下步骤:a.根据报文流分类规则涉及的相关域将多域流分类规则表划分成单域流分类规则表,然后在所述的单域流分类规则表中查找所述的报文匹配的单域流分类规则;b.将所述的匹配的单域流分类规则进行整合后得到匹配的多域流分类规则。本发明克服现有技术的不足,采用将多域流分类规则表划分成单域流分类规则表,在单域流分类规则表中查找报文匹配的流分类规则后将其整合,从而得出报文匹配的多域流分类规则的技术方案,通过FPGA逻辑实现混合Range匹配和Prefix匹配的多域流分类,无需使用高成本的IPCAM,与NP方案相比更容易达到线速,减少流分类处理给系统带来的延时,降低系统实现的复杂度。
Description
技术领域
本发明涉及流分类技术领域,具体来说,涉及到多域流分类的技术。
背景技术
随着Internet的迅猛发展,传统的BE(Best Effort尽力传输)业务已经无法满足丰富的网络业务的需要,并且ISP(Internet服务提供商)也迫切希望对不同付费用户提供不同级别的服务。
在某些特殊的应用领域,比如802.16e无线宽带应用中,由于空口资源相对稀缺,必须对不同用户的不同业务类型进行与QoS(Quality of Service服务质量)相关的分类,这称为流分类。
流分类分有多域流分类和单域流分类。传统的流分类一般涉及的域较少,并且多为精确匹配,可实现的算法较多,最常用的是哈希法。但是随着网络技术的发展,逐渐提出了对流分类更高的要求,希望能支持基于多域,并混合精确匹配,Range(范围)匹配及Prefix(前缀)匹配。如图1所示,在WIMAX 802.16e中需要对以太网各域及IP各域进行流分类,最终将报文与业务流相关。
现有技术中对多域流分类有多种可行算法,并可依托FPGA(FieldProgrammable Gate Array现场可编程门阵列)平台和NP(NetworkProcessor网络处理器)平台。NP平台的优势在于处理Range匹配和Prefix匹配时因为软件的灵活性,不存在很大难度,但是因为其通用性处理使得其处理速度通常不如FPGA。FPGA平台专用性强,在采用优良算法及高效设计的情况下,通常在对线速保证和吞吐量及处理速度方面比NP有优势,但是在流分类方面对Range匹配域及Prefix匹配域在FPGA平台的实现上是个难点。
现有方案中对带Range匹配域和Prefix匹配域的多域流分类使用IPCAM(Content-addressable memory内容可寻址存储器)实现。IPCAM的缺陷在于价格昂贵,并且接口不统一,只能应用于高端产品,假如要严格控制产品的成本,IPCAM的使用将受到限制,随着未来电信业竞争日益激烈,成本压力的逐渐加大,IPCAM实现方案将受到很大局限。
现有技术中另一种应用较多的多域流分类算法为Hicuts(HierarchicalIntelligent Cuttings分级智能分割)树算法,也能实现Range匹配域和Prefix匹配域的流分类,一般都通过软件实现。Hicuts算法的思想是将一个n个域流分类规则集划分成为若干小规则集,把查找匹配的过程转化为先对Hicuts树进行查找,找到一个小规则集,然后可以使用简单的顺序查找或者其他方法找到匹配的规则。如图2所示,Hicuts树的每片叶子存储最多binth条流分类规则,其中,binth是一个域值,规定每个叶子节点最多存储多少条流分类规则,如果超过则需要继续分割。
Hicuts树是一种针对流分类的比较灵活的算法,如果要实现Hicuts树算法,则树的划分以及树的生成需要软件来计算。如果要用FPGA来实现有以下几点有困难:
C(n)划分的灵活性导致C(n)划分的策略难以有明确的标准确定,且算法实现过于复杂,不适合FPGA实现;
同时,生成的Hicuts树数据结构必然存放在外部缓存,那么如果生成的Hicuts深度很大,难以解决Memory Access给逻辑带来的延时。
此外,FPGA逻辑在查找Hicuts树的过程中,对每个非叶子结点必然存在范围的判断,在逻辑上实现起来比较困难。
发明内容
本发明的目的在于提供一种多域流分类的实现方法,以解决在不用IPCAM的情况下,通过FPGA与外部存储器实现带Range匹配域和带Prefix匹配域的多域流分类的问题。
本发明的另一目的在于提供一种查找报文在Prefix域匹配的流分类规则的方法,以解决在不用IPCAM的情况下,通过FPGA与外部存储器实现带Prefix匹配域的多域流分类的问题。
本发明的另一目的在于提供一种查找报文在Range域匹配的流分类规则的方法,以解决在不用IPCAM的情况下,通过FPGA与外部存储器实现带Range匹配域的多域流分类的问题。
为实现上述目的,本发明采用的技术方案如下:
一种多域流分类实现方法,所述的方法包括如下步骤:
a、根据报文流分类规则涉及的所有域将多域流分类规则表划分成单域流分类规则表,然后在所述的单域流分类规则表中查找所述的报文匹配的单域流分类规则;
b、将所述的匹配的单域流分类规则进行整合后得到匹配的多域流分类规则。
其中步骤a之前还包括:
报文通过二层转发查找到终端SS,然后根据所述的SS配置所述的多域流分类规则。
其中步骤a具体包括:
a1、从所述的报文中提取流分类规则涉及的所有域划分成单域并根据所述的单域构造单域流分类规则表,在所述的单域流分类规则表中查找匹配的单域流分类规则,并设置所述的匹配的单域流分类规则对应的位图bitmap;
其中步骤b具体包括:
b1、将所述的匹配的单域流分类规则对应的bitmap相与后确定所述的匹配的多域流分类规则。
其中步骤b还包括:
当所述的匹配的多域流分类规则为两条或者两条以上时,根据预先对所述的流分类规则设置的优先级最终确定匹配的多域流分类规则。
其中步骤a1具体包括:
a11、根据所述的报文流分类规则涉及的相关域配置掩码MASK表,然后对所有MASK值取或提取所述的流分类规则涉及的所有域;
a12、根据前缀Prefix域的流分类规则构造全前缀匹配原则APM分级表,在所述的APM分级表中查找所述的Prefix域匹配的流分类规则并设置其对应的bitmap,将Range域的流分类规则转化成Prefix域的流分类规则表后合并所有同前缀长度的流分类规则后通过精确匹配的方法查找所述的Range域匹配的流分类规则并设置其对应的bitmap,根据精确域的流分类规则构造线性表或者哈希Hash表后查找所述的精确域匹配的流分类规则并设置其对应的bitmap。
其中步骤b1具体包括:
b11、根据所述的MASK表提取相应的MASK,将所述MASK中对应的Prefix域匹配的流分类规则对应的bitmap、Range域匹配的流分类规则对应的bitmap以及精确域匹配的流分类规则对应的bitmap相与后确定所述的匹配的多域流分类规则。
其中所述的bitmap为二进制值,其中每一位依次对应所述的单域中的一条流分类规则,0表示不匹配,1表示匹配。
本发明还提供了一种查找报文在Prefix域匹配的流分类规则的方法,所述的方法具体包括:
a、根据Prefix域的流分类规则构造全前缀匹配原则APM分级表;
b、根据APM原则线性查找所述的APM分级表中报文匹配的所述的Prefix域的流分类规则。
其中步骤b具体包括:
b1、查找所述的报文中Prefix域的流分类规则,如果流分类规则的Prefix包含所述的报文在所述的Prefix域的值,则确定所述的报文与所述的流分类规则匹配。
本发明还提供了一种查找报文在Range域匹配的流分类规则的方法,所述的方法包括如下步骤:
a、将Range域的流分类规则分别转换成Prefix集合,然后将同前缀长度的流分类规则构造流分类规则查找表;
b、在所述的流分类规则查找表中按照精确匹配的方法查找报文匹配的流分类规则。
本发明克服现有技术的不足,采用将多域流分类规则表划分成单域流分类规则表,在单域流分类规则表中查找报文匹配的流分类规则后将其整合,从而得出报文匹配的多域流分类规则的技术方案,通过FPGA逻辑实现混合Range匹配和Prefix匹配的多域流分类,无需使用高成本的IPCAM,与NP方案相比更容易达到线速,减少流分类处理给系统带来的延时,降低系统实现的复杂度。
附图说明
图1为流分类的示意图;
图2为Hicuts树结构示意图;
图3为本发明技术方案流程图;
图4为本发明实施例所述的8+4+4+4+4+4+4结构APM分级表示意图;
图5为本发明实施例所述的APM分级表跳转关系示意图;
图6为本发明实施例所述的APM分级表表a-表b-表c跳转查找过程图;
图7为本发明实施例所述的APM分级表表d-表e跳转查找过程图;
图8为本发明实施例所述的APM分级表表f-表g跳转查找过程图;
图9为本发明实施例所述的将Range域的流分类规则转化为Prefix集合后构造查找表的过程。
具体实施方式
本发明的基本原理是将多域流分类规则分解成多个单域的流分类规则后构造单域的查找表,在单域中分别进行流分类规则的查找匹配,查找完毕后将在每个单域中得到的匹配结果进行整合,最终得到匹配的多域流流分类规则,假如有多条匹配的流分类规则,再通过优先级判断匹配哪一条。
因为对精确匹配、Range匹配、Prefix匹配在单域来看都是能经过一定处理在FPGA逻辑上实现,因此混合精确匹配域、Range匹配域以及Prefix匹配域的多域流分类可以通过把多域流分类转化成多个单域流分类,并且每个域根据各自的匹配类型使用各自的算法来进行查找匹配,最后把各域得到的匹配规则进行相与整合得到最终匹配的规则。
本发明技术方案的总体流程图如图3所示,流分类规则根据每一个SS(subscriber station终端)来配置,配置后由软件根据流分类规则相关域的类型转化为各单域的流分类规则表。对于Ethertype(以太网类型域)和Protocol(IP报文协议类型域)这类bit数较少精确匹配域可以构造线性表。对于DMAC(以太网封装报文的目的MAC地址)这类精确匹配域可以构造Hash(哈希)表。对于Prefix匹配域和Range匹配域可以按照本发明方案提出的方法构造表格。
本发明技术方案包括如下的步骤:
1、首先报文通过二层转发查找到SS(也可以不通过先二层转发的方式,直接对报文进行流分类)。
2、从报文中提取流分类涉及的相关域整理成约定的数据结构,将报文里的域整理成一个缩减了的数据结构,比如报文中报文头有64Byte,把0X8100这类无用信息剔除,最后剩下有用的报头域。
3、根据实际需要配置一个Mask表提取报文中不同域的组合,进行多域的流分类处理(在维度划分的时候会对Mask表中的所有Mask做相或处理,得到所有Mask中的交集),提取流分类需要的域,并划分成单域。
4、构造各个单域的流分类规则查找表。
5、在各个单域的流分类规则查找表中查找匹配的流分类规则,得到的匹配规则都写入各自的bitmap。
6、根据Mask表中的各Mask提取相应的bitmap(位图)做相与操作(比如一个Mask需要提取的域是目的MAC地址和Dport,据此在规则整合的时候将这两个域流分类之后对应的bitmap相与),得到一个交集,即匹配的流分类规则。
7、假如有多条流分类规则匹配,可通过优先级选择最终命中的规则。
以下结合附图和具体实施例进行详细说明。
一个报文有可能有多种封装类型,并且报文封装中有非常多的域。实际在进行流分类的时候不需要报文中所有的域都进行流分类,如表1所示的流分类规则表:
Etype | DIP | Dport | |
R0 | 0X8000 | 10.54.10.11 | 0-20 |
R1 | 0X8100 | 10.54.10.** | -- |
R2 | 0X8100 | 10.**.**.** | 40-200 |
R3 | -- | 10.10.**.** | 100-255 |
表1
如表1一共设置了4条流分类规则,其中R0和R2都涉及到了Etype、DIP(目的IP地址)、Dport(目的端口)三个域。假如对一个报文是以太网加IPV4封装的,那么报头中的域有DMAC、SMAC(源MAC地址)、DIP、SIP(源IP地址)、Protocol等等许多的域,但是与表1流分类规则相关的域为Etype、DIP、Dport三个域,因此我们认为报文中流分类相关域是Etype、DIP、Dport。当然R1的流分类相关域是Etype、DIP,而R3是DIP、Dport。
一般在进行流分类之前会对报文的头信息进行解析。如表1的流分类规则表,则在对报文头信息解析的时候将Etype、DIP、Dport整理成一个固定的数据结构。观察表1中的流分类规则设置,可以发现,所有规则里涉及到了三种域的组合,分别是
Etype、DIP、Dport
Etype、DIP
DIP、Dport
因此可以设置一个如表2所示的Mask(掩码)表表示这三种组合:
Etype | DIP | Dport |
1 | 1 | 1 |
1 | 1 | 0 |
0 | 1 | 1 |
表2
那么如果有一个报文要进行流分类,只需要按照Mask表中的情况提取相关域进行流分类即可,而且实际应用的情况是对一个流分类规则表来说Mask的数量非常有限。
根据上述的MASK提取流分类需要的域,并划分成单域后,下一步需要进行的是查找相应域的表格,将查找到的匹配规则都写入各自的bitmap。
本发明方案中bitmap的含义如下:bitmap与某个单域的流分类规则对应,bitmap是一个二进制的值,用以最简表示报文匹配到的流分类规则。bitmap中每一bit都代表一条流分类规则,从bitmap的LSB(Least-Significant Bit最低位)至MSB(Most Significant Bit最高位)分别代表流分类规则R0-Rn,其中bitmap值的位数就等于n。假如流分类规则有64条,则bitmap是一个64bit的值。从LSB到MSB分别对应某个单域的第1条规则到第64条规则。如果bitmap中的相应bit为1,代表其对应的流分类规则匹配,反之则不匹配。
d1 | d2 | d3 | |
R0 | 0000 | 10** | 0-20 |
R1 | 0001 | 1*** | 0-30 |
R2 | 0010 | 1100 | 40-200 |
R3 | 0011 | 1000 | 100-255 |
R4 | 0100 | 0*** | 260-400 |
R5 | 0101 | 01** | 15-30 |
R6 | 0110 | 011* | 450-500 |
R7 | 0111 | 11** | 600-670 |
R8 | 1000 | 0000 | 700-750 |
表3
如表3所示的流分类规则表,其中有9条流分类规则,因此设置一个9bit的值,从最低bit到最高bit分别代表了R0-R8。如果匹配一条规则的话,就将其在bitmap中对应的bit置1。本发明方案中bitmap都指单维下的规则匹配情况。比如一报文d1、d2、d3三个域的值分别是0000、1000、15。那么在d1域其bitmap为1000000000,d2域bitmap为110100000,d3域bitmap为110001000。
如上所述,首先需要查找各个域相应的流分类规则表,以下说明Prefix域匹配过程:
Prefix域的匹配现在在FPGA逻辑实现是通过LPM(Longest PrefixMatching最长前缀匹配原则)分级表实现。以下首先对LPM的原理及在本发明方案中使用存在的问题做简单介绍:
d1 | d2 | |
R0 | 1*** | 40-200 |
R1 | 1000 | 0-30 |
R2 | 0*** | 0-20 |
R3 | 00** | 100-255 |
R4 | 000* | 260-400 |
R5 | 100* | 15-30 |
R6 | 0111 | 450-500 |
R7 | 0110 | 600-670 |
R8 | 0100 | 700--750 |
表4
如表4所示的流分类规则表,假如有一个报文d1和d2分别为1000和45。那么可以看出其匹配的规则为R0。如果对d1Prefix匹配域使用LPM原则,则会发现应该匹配R1,单从d2看应该匹配R0。那么d1域bitmap1为010000000,d2域bitmap2为100000000,整合后最终得出的bitmap=bitmap1&bitmap2=000000000,显然和实际情况不符,因此,,多域流分类转成多个单域流分类的处理方法中使用LPM原则会造成最终多个单域流分类整合时匹配规则丢失,在多域流分类转化成单域流分类的过程中LPM原则是不可以采用的。
为此,本发明为解决Prefix域匹配提供了一种APM(All Prefix Match全前缀匹配)匹配的方式,即对报文中某域进行流分类查找,凡是流分类规则定义的Prefix包含报文此域的值,则报文匹配此流分类规则。假设报文中某一个域其匹配方式为Prefix匹配域且值为X,那么通过APM原则对此域进行流分类查找匹配时,凡是流分类规则定义的前缀包含X值,则认为报文匹配此规则。
比如对表4来说,一个报文的d2域为1000,用APM原则去匹配,则此报文匹配所有前缀的范围包含1000的流分类规则。在表4中就是R0、R1、R3。
因此对于此报文d1和d2分别为1000和45,对d1域来讲,1000应该匹配所有匹配的规则,即R0、R1、R5。
如上所述,如果要将多域流分类转化成单域流分类则Prefix匹配域需采用APM原则来进行匹配,在FPGA逻辑实现上可以考虑修改LPM分级表变成APM分级表来实现。
构造分级表实际上是将Prefix域的流分类规则配置成便于逻辑实现流分类查找的数据结构,而构造APM分级表实际上是将Prefix域的流分类规则配置成便于逻辑实现的以APM为查找原则的流分类查找数据结构。以下以最常见的Prefix匹配域--目的IP域来举例说明将LPM分级表修改成APM分级表的过程。目的IP域一共有32bit,实际上前缀的长度一般都是8-32bit。分级表的划分有多种形式,本实例中设计APM分级表为8+4+4+4+4+4+4分级表,如图4所示:
各分级表与目的IP相应bit的对应关系如表5所示:
APM分级表 | 目的IP对应bit |
表a | 31-24bit |
表b | 23-20bit |
表c | 19-16bit |
表d | 15-12bit |
表e | 11-8bit |
表f | 7-4bit |
表g | 3-0bit |
表5
其中,表a的表项设计如表6所示,表a代表目的IP地址的31-24bit,穷举256个表项。因为IP地址Prefix的长度只可能是8-32bit,也就是说相应的掩码类型只可能出现在255.0.0.0-255.255.255.255,所以IP地址的第31-24bit不可能有掩码,每个表项最大可能对应一条流分类规则,也就是说只能有10001010.********.********.********这样的Prefix,而不可能出现1000****.********.********.********这样的Prefix。假如配置的规则如下:R110001010.********.********.********及R2 10001010.11******.********.********。那么R1必然配置在表a中,R2配置在表b中。
因为31-24bit无掩码,所以每个表项最大可能是命中一条流分类规则。
Rule | Addr_Str_b |
R1 | Addr_Str_b1 |
R2 | Addr_Str_b2 |
R4 | O |
_ | * |
* | * |
* | * |
* | * |
* | * |
* | * |
表6
Rule | Rule | Rule | Rule | Addr_Str_X |
R8 | R112 | - | - | Addr_Str_c1 |
R233 | R450 | R600 | R690 | Addr_Str_c2 |
_ | * | * | * | Addr_Str_c2 |
* | * | * | * | * |
* | * | * | * | * |
* | * | * | * | * |
* | * | * | * | * |
* | * | * | * | * |
* | * | * | * | * |
表7
Rule | Rule | Rule | |
R200 | R343 | R333 | - |
R666 | R998 | R676 | R99 |
R747 | R477 | R890 | R212 |
* | * | * | * |
* | * | * | * |
* | * | * | * |
* | * | * | * |
* | * | * | * |
* | * | * | * |
表8
表b-表e的表项设计如表7所示,表f的表项设计如表8所示,表b-表f都可以表示4种掩码的情况,因此最大可能其中一个表项会命中4条流分类规则。
Rule | 目的IP地址 | 掩码类型 |
R100 | 00001010.00110110.00001011.11001111 | 11111111.11111111.11111111.11111111 |
R205 | 00001010.00110110.00001011.1100111* | 11111111.11111111.11111111.11111110 |
R114 | 00001010.00110110.00001011.110011** | 11111111.11111111.11111111.11111100 |
R300 | 00001010.00110110.00001011.11001*** | 11111111.11111111.11111111.11111000 |
表9
以表f中的表项为例:如表9所配置的流分类规则,如果一个报文的IP地址为00001010.00110110.00001011.11001111,那么根据APM原则,应该命中表4中的四条流分类规则。对应表9的情况在分级表f中的直接反应是此IP地址的表项在Rule中填写R100、R205、R114和R300。此外,这4条流分类规则并不一定顺序的,因为在配置流分类规则的时候是随机的,流分类规则的数量也是从0个到4个可变的,决定于流分类规则的配置。
以下举例说明8+4+4+4+4+4+4表的建立和跳转关系,表10是一个流分类表的一部分,可以看到流分类规则可能并不按照一定的顺序,因为在配置的时候是随机的。
Rule | 目的IP地址 | 掩码类型 |
R89 | 00001010.********.********.******** | 11111111.********.********.******** |
R34 | 00001010.0*******.********.******** | 11111111.1*******.********.******** |
R90 | 00001010.1*******.********.******** | 11111111.1*******.********.******** |
R3 | 00001010.00******.********.******** | 11111111.11******.********.******** |
R99 | 00001010.001*****.********.******** | 11111111.111*****.********.******** |
R12 | 00001010.0011****.********.******** | 11111111.1111****.********.******** |
R67 | 00001010.00111***.********.******** | 11111111.11111***.********.******** |
R11 | 00001010.001110**.********.******** | 11111111.111111**.********.******** |
R33 | 00001010.00111010.0*******.******** | 11111111.11111111.1*******.******** |
R50 | 00001010.00111010.1*******.******** | 11111111.11111111.1*******.******** |
R55 | 00001010.00111010.000010**.******** | 11111111.11111111.111111**.******** |
R13 | 00001010.00111010.00001011.111***** | 11111111.11111111.11111111.111***** |
R10 | 00001010.00111010.00001011.11001*** | 11111111.11111111.11111111.11111*** |
R5 | 00001010.00111010.00001011.1100110* | 11111111.11111111.11111111.1111111* |
R1 | 00001010.00111010.00001011.1100111* | 11111111.11111111.11111111.1111111* |
R51 | 00001010.00110110.00001011.11001111 | 11111111.11111111.11111111.11111111 |
表10
分级表之间的跳转关系如图5所示,各分级表之间的跳转关系取决于Addr_Str_X(X=b、c、d、e、f)基地址和Value_X(X=b、c、d、e、f)。首先提取报文DIP域的前8bit即第31-24bit,以此值为索引查找到表a中与报文匹配的表项。表a是一个线性表,有256个表项(256个Entry),对应DIP前8bit。表a中的表项内有Rule和Addr_Str_b。Addr_Str_b中最高bit为跳转指示,如果为1则需要跳转到表b,读取Addr_Str_b除最高bit以外的地址(最高bit指示是否跳转),以此为基地址加上DIP的第23-20bit为偏移地址,跳转到表b中的对应表项。后续表之间的跳转也按照此原理。表之间是否跳转取决于流分类规则的配置。每一级表匹配的所有规则都记录在bitmap中。
如果有个报文的目的IP地址为10.54.11.207,则在分级表中的查找过程如图6、图7和图8。
根据图6、图7和图8可得如果报文目的IP地址为10.54.11.207,根据APM原则查找到的匹配规则有R34、R3、R99、R12、R33、R10、R1和R51。首先提取IP地址的高8bit(31-24bit),根据此8bit的值在表a中进行线性查找,从而索引到此值对应的表项。提取表项内的Rule域,得到匹配的规则是R89,记录在bitmap中。提取表项内的Addr_str_b,检查Addr_str_b中的最高bit为1,需要跳转。读取Addr_str_b除最高1bit以外的值作为跳转至表b的基地址,读取IP地址的23-20bit作为偏移地址线性查找表b中对应的表项。查找到表b中对应表项之后提取匹配的规则。共匹配4条规则R34,R3,R99,R12,并记录在bitmap中。读取Addr_str_c的,分析Addr_str_c,根据最高bit、除最高bit外的基地址及IP地址的19-16bit作为偏移地址跳转到表c。表defg的跳转及规则匹配都按照此方法。表g是最后一个表,无跳转地址。表g查找完毕后,得到最终报文IP域以APM原则查找到匹配规则的bitmap。
通过上述的方式将LPM分级表修改成APM分级表并且根据上述的APM原则进行Prefix域的匹配之后,将查找到的匹配规则都写入bitmap。
综上即Prefix匹配域根据APM原则用分级表实现的方法,其中根据流分类规则建立分级表需要软件配合来建立,建立的分级存放在外部缓存内。
FPGA逻辑可以直接线性查找,另外通过对LPM分级表的修改,使得对分级表不采用LPM原则来查找匹配,而通过APM原则来查找匹配,满足了多域流分类转换成单域流分类对Prefix匹配域提出的要求。
以下说明Range域的查找匹配:
Range域可以通过一定的方法转化成与Range等效的Prefix集合,具体方法属于本领域技术人员熟知技术,此不赘述。
另外,本发明还提供另外一种技术方案解决Range域匹配的问题,如有一个范围[1,14],转化成由以下Prefix组成的集合[0001,1110,001*,110*,01**,10**]。另有一个范围[3,8],可以转化成由以下Prefix组成的集合[0011,01**,1000]。假如这两个范围分别是两条流分类规则中的Range匹配域,如表11所示:
Rule | Range匹配域 | 转化成Prefix |
R0 | [1,14] | 0001,1110,001*,110*,01**,10** |
R1 | [3,8] | 0011,01**,1000 |
表11
将Range域转化成Prefix之后,在所有流分类规则中同前缀长度的Prefix构造成一个表,那么表11的例子可以构造出3个表,因为有三种Prefix,如图9及表12:
prefix 规则 prefix 规则 prefix 规则
A B C
0001 | R1 |
1000 | R1 |
0011 | R2 |
1110 | R2 |
01(01**) | R1 R2 |
10(10**) | R2 |
001(001*) | R1 |
110(110*) | R2 |
表12
由图9和表12可以得到范围匹配,实际通过同长度Prefix的合并,构造表格已经转化成了精确匹配。其中,图9中的表B表、表C因为其表内Prefix长度的长度相同,可以用精确匹配的方法来查找并将查找到的匹配规则都写入bitmap。
完成上述的Prefix域以及Range域匹配并将查找到的匹配规则都写入bitmap后,对于其他的流分类规则涉及的域,也需要进行匹配并将查找到的匹配规则都写入各自的bitmap,如目的MAC就通过hash法去查找事先构造好的目的MAC地址hash表,目的IP就去查找事先构造好的APM分级表,目的端口就去查找事先构造好的目的端口表,得到的匹配规则都写入各自的bitmap。
以下说明举例说明提取各个域相应的bitmap做相与操作的过程:
d1 | d2 | d3 | |
R0 | 0000 | 10** | 0-20 |
R1 | 0001 | 1*** | 0-30 |
R2 | 0010 | 1100 | 40-200 |
R3 | 0011 | 1000 | 100-255 |
R4 | 0100 | 0*** | 260-400 |
R5 | 0101 | 01** | 15-30 |
R6 | 0110 | 011* | 450-500 |
R7 | 0111 | 11** | 600-670 |
R8 | 1000 | 0000 | 700-750 |
表13
如表13所述,d1、d2、d3分别表示了报文中的三个域,可以发现d1是精确匹配,d2是Prefix匹配,d3是Range匹配。如果一个报文d1、d2、d3三个域的值分别为0001、1000、15,那么查此流分类规则表可以看出此报文匹配R1规则。
根据本发明的技术方案,首先确定精确域匹配规则的bitmap1值为010000000,在Prefix域匹配规则的bitmap2值为110100000,在Range域匹配规则的bitmap3值为101001000。得到此报文在其流分类规则相关各个域的bitmap值之后,将各个bitmap值相与就可以得到最终匹配规则的结果,最终的bitmap=(bitmap1&bitmap2)&bitmap3=010000000,于是得到R1是此报文的匹配规则。
此外,上述的例子中因为d1域是精确匹配域,一个报文的某个域如果是精确匹配域,则其只可能匹配一条流分类规则,因此最后得到的bitmap只对应一条流分类规则。但是如果在没有精确匹配域的情况下,可能会出现多条流分类规则同时匹配的情况。
d1 | d2 | d3 | |
R0 | 0*** | 10** | 0-20 |
R1 | 00** | 1*** | 0-30 |
R2 | 1*** | 1100 | 40-200 |
R3 | 10** | 1000 | 100-255 |
R4 | 100* | 0*** | 260-400 |
R5 | 0*** | 01** | 15-30 |
R6 | 000* | 011* | 450-500 |
R7 | 0111 | 11** | 600-670 |
R8 | 1000 | 0000 | 700-750 |
表14
如表14所示,其中d1域为Prefix匹配形式,假设一个报文的d1、d2、d3域分别为0001、1000、15。那么可以得到此报文匹配R0、R1。
根据本发明所述的技术方案,首先确定d1域(Prefix域)匹配规则对应bitmap1值为110001100,d2域(Prefix域)对应bitmap2值为110100000,d3域(Range)对应bitmap3的值为11000100。得到此报文在其流分类规则相关各个域的bitmap值之后,将各个bitmap值相与就可以得到最终匹配规则的结果,最终bitmap=(bitmap1&bitmap2)&bitmap3=110000000,于是得到最终匹配的规则为R0、R1。对于这两条规则可以考虑事先设定优先级来区分,比如事先配置流分类规则时为每条规则设置一个优先级的值Priority,在本例子中R0-R8可以将Priority分别设置成9-0,那么R0、R1两条规则都匹配的情况下R0的Priority大于R1,所以匹配规则R0。
Claims (10)
1、一种多域流分类实现方法,其特征在于,所述的方法包括如下步骤:
a、根据报文流分类规则涉及的所有域将多域流分类规则表划分成单域流分类规则表,然后在所述的单域流分类规则表中查找所述的报文匹配的单域流分类规则;
b、将所述的匹配的单域流分类规则进行整合后得到匹配的多域流分类规则。
2、根据权利要求1所述的方法,其特征在于,其中步骤a之前还包括:
报文通过二层转发查找到终端SS,然后根据所述的SS配置所述的多域流分类规则。
3、根据权利要求1所述的方法,其特征在于,其中步骤a具体包括:
a1、从所述的报文中提取流分类规则涉及的所有域划分成单域并根据所述的单域构造单域流分类规则表,在所述的单域流分类规则表中查找匹配的单域流分类规则,并设置所述的匹配的单域流分类规则对应的位图bitmap;
其中步骤b具体包括:
b1、将所述的匹配的单域流分类规则对应的bitmap相与后确定所述的匹配的多域流分类规则。
4、根据权利要求1或者3所述的方法,其特征在于,其中步骤b还包括:
当所述的匹配的多域流分类规则为两条或者两条以上时,根据预先对所述的流分类规则设置的优先级最终确定匹配的多域流分类规则。
5、根据权利要求3所述的方法,其特征在于,其中步骤a1具体包括:
a11、根据所述的报文流分类规则涉及的相关域配置掩码MASK表,然后对所有MASK值取或提取所述的流分类规则涉及的所有域;
a12、根据前缀Prefix域的流分类规则构造全前缀匹配原则APM分级表,在所述的APM分级表中查找所述的Prefix域匹配的流分类规则并设置其对应的bitmap,将Range域的流分类规则转化成Prefix域的流分类规则表后合并所有同前缀长度的流分类规则后通过精确匹配的方法查找所述的Range域匹配的流分类规则并设置其对应的bitmap,根据精确域的流分类规则构造线性表或者哈希Hash表后查找所述的精确域匹配的流分类规则并设置其对应的bitmap。
6、根据权利要求5所述的方法,其特征在于,其中步骤b1具体包括:
b11、根据所述的MASK表提取相应的MASK,将所述MASK中对应的Prefix域匹配的流分类规则对应的bitmap、Range域匹配的流分类规则对应的bitmap以及精确域匹配的流分类规则对应的bitmap相与后确定所述的匹配的多域流分类规则。
7、根据权利要求3或者5所述的方法,其特征在于,所述的bitmap为二进制值,其中每一位依次对应所述的单域中的一条流分类规则,0表示不匹配,1表示匹配。
8、一种查找报文在Prefix域匹配的流分类规则的方法,其特征在于,所述的方法具体包括:
a、根据Prefix域的流分类规则构造全前缀匹配原则APM分级表;
b、根据APM原则线性查找所述的APM分级表中报文匹配的所述的Prefix域的流分类规则。
9、根据权利要求8所述的方法,其特征在于,其中步骤b具体包括:
b1、查找所述的报文中Prefix域的流分类规则,如果流分类规则的Prefix包含所述的报文在所述的Prefix域的值,则确定所述的报文与所述的流分类规则匹配。
10、一种查找报文在Range域匹配的流分类规则的方法,其特征在于,所述的方法包括如下步骤:
a、将Range域的流分类规则分别转换成Prefix集合,然后将同前缀长度的流分类规则构造流分类规则查找表;
b、在所述的流分类规则查找表中按照精确匹配的方法查找报文匹配的流分类规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100619939A CN100454902C (zh) | 2006-08-02 | 2006-08-02 | 一种多域流分类的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100619939A CN100454902C (zh) | 2006-08-02 | 2006-08-02 | 一种多域流分类的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1905523A true CN1905523A (zh) | 2007-01-31 |
CN100454902C CN100454902C (zh) | 2009-01-21 |
Family
ID=37674655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100619939A Active CN100454902C (zh) | 2006-08-02 | 2006-08-02 | 一种多域流分类的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100454902C (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101374100B (zh) * | 2007-08-24 | 2011-01-05 | 华为技术有限公司 | 一种WiMAX业务数据流报文的分类方法、装置及系统 |
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
CN102571531A (zh) * | 2010-12-16 | 2012-07-11 | 上海博达数据通信有限公司 | 一种访问控制列表的分类匹配方法 |
CN102611616A (zh) * | 2012-02-21 | 2012-07-25 | 杭州华三通信技术有限公司 | 一种报文ToS字段的识别方法和设备 |
CN101594556B (zh) * | 2008-05-28 | 2012-08-29 | 工业和信息化部电信传输研究所 | 一种在gpon系统中数据流分类的远程管理装置 |
CN103618733A (zh) * | 2013-12-06 | 2014-03-05 | 北京中创信测科技股份有限公司 | 一种应用于移动互联网的数据过滤系统及方法 |
CN104012053A (zh) * | 2014-04-30 | 2014-08-27 | 华为技术有限公司 | 查找装置及方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN105072122A (zh) * | 2015-08-19 | 2015-11-18 | 山东超越数控电子有限公司 | 一种数据包快速匹配分类方法 |
CN106997289A (zh) * | 2016-01-22 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN102281196B (zh) * | 2011-08-11 | 2017-10-10 | 中兴通讯股份有限公司 | 决策树生成方法及设备、基于决策树报文分类方法及设备 |
CN108075979A (zh) * | 2017-12-20 | 2018-05-25 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及系统 |
WO2020038399A1 (zh) * | 2018-08-24 | 2020-02-27 | 中兴通讯股份有限公司 | 数据包的分类方法、装置及计算机可读存储介质 |
CN111817978A (zh) * | 2019-04-12 | 2020-10-23 | 华为技术有限公司 | 一种流分类方法及装置 |
WO2021104393A1 (zh) * | 2019-11-27 | 2021-06-03 | 深圳市中兴微电子技术有限公司 | 多规则流分类的实现方法、设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6529284B1 (en) * | 1998-08-07 | 2003-03-04 | Texas Instruments Incorporated | Efficient rendering of masks to a screened buffer using a lookup table |
CN100472427C (zh) * | 2002-08-20 | 2009-03-25 | 中兴通讯股份有限公司 | 一种数据包递归流分类方法 |
CN100466594C (zh) * | 2004-10-09 | 2009-03-04 | 华为技术有限公司 | 一种对报文进行分类处理的方法 |
-
2006
- 2006-08-02 CN CNB2006100619939A patent/CN100454902C/zh active Active
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101374100B (zh) * | 2007-08-24 | 2011-01-05 | 华为技术有限公司 | 一种WiMAX业务数据流报文的分类方法、装置及系统 |
CN101594556B (zh) * | 2008-05-28 | 2012-08-29 | 工业和信息化部电信传输研究所 | 一种在gpon系统中数据流分类的远程管理装置 |
CN102571531B (zh) * | 2010-12-16 | 2016-08-24 | 上海博达数据通信有限公司 | 一种访问控制列表的分类匹配方法 |
CN102571531A (zh) * | 2010-12-16 | 2012-07-11 | 上海博达数据通信有限公司 | 一种访问控制列表的分类匹配方法 |
CN102281196B (zh) * | 2011-08-11 | 2017-10-10 | 中兴通讯股份有限公司 | 决策树生成方法及设备、基于决策树报文分类方法及设备 |
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
CN102611616A (zh) * | 2012-02-21 | 2012-07-25 | 杭州华三通信技术有限公司 | 一种报文ToS字段的识别方法和设备 |
CN102611616B (zh) * | 2012-02-21 | 2017-03-08 | 杭州华三通信技术有限公司 | 一种报文ToS字段的识别方法和设备 |
CN103618733A (zh) * | 2013-12-06 | 2014-03-05 | 北京中创信测科技股份有限公司 | 一种应用于移动互联网的数据过滤系统及方法 |
CN104012053A (zh) * | 2014-04-30 | 2014-08-27 | 华为技术有限公司 | 查找装置及方法 |
US10812382B2 (en) | 2014-04-30 | 2020-10-20 | Huawei Technologies Co., Ltd. | Search apparatus and method |
CN104012053B (zh) * | 2014-04-30 | 2017-01-25 | 华为技术有限公司 | 查找装置及方法 |
WO2015165104A1 (zh) * | 2014-04-30 | 2015-11-05 | 华为技术有限公司 | 查找装置及方法 |
US11606295B2 (en) | 2014-04-30 | 2023-03-14 | Huawei Technologies Co., Ltd. | Search apparatus and method |
CN104468381B (zh) * | 2014-12-01 | 2017-05-10 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN105072122A (zh) * | 2015-08-19 | 2015-11-18 | 山东超越数控电子有限公司 | 一种数据包快速匹配分类方法 |
CN106997289A (zh) * | 2016-01-22 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN108075979A (zh) * | 2017-12-20 | 2018-05-25 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及系统 |
CN108075979B (zh) * | 2017-12-20 | 2020-10-13 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及系统 |
WO2020038399A1 (zh) * | 2018-08-24 | 2020-02-27 | 中兴通讯股份有限公司 | 数据包的分类方法、装置及计算机可读存储介质 |
CN111817978A (zh) * | 2019-04-12 | 2020-10-23 | 华为技术有限公司 | 一种流分类方法及装置 |
CN111817978B (zh) * | 2019-04-12 | 2022-10-04 | 华为技术有限公司 | 一种流分类方法及装置 |
US11882047B2 (en) | 2019-04-12 | 2024-01-23 | Huawei Technologies Co., Ltd. | Traffic classification method and apparatus |
WO2021104393A1 (zh) * | 2019-11-27 | 2021-06-03 | 深圳市中兴微电子技术有限公司 | 多规则流分类的实现方法、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100454902C (zh) | 2009-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1905523A (zh) | 一种多域流分类的实现方法 | |
CN1852240A (zh) | 一种桥接转发方法 | |
CN1279731C (zh) | 一种通信流模板分组过滤的装置和方法 | |
CN1863142A (zh) | 给数据流提供不同的服务质量策略的方法 | |
CN1929472A (zh) | 数据网络中管理数据传输的方法、系统、信号及介质 | |
CN104579940B (zh) | 查找访问控制列表的方法及装置 | |
CN1404591A (zh) | 执行高速互联网协议路由查找和管理路由选择/转发表的装置和方法 | |
CN1620010A (zh) | Vlan服务器 | |
EP2582096A1 (en) | Classification method and device for packets | |
CN1171873A (zh) | 网络单元中比较可控对象表示式属性值的方法 | |
CN1697456A (zh) | 在具有多个接口的移动站中的通信方法和装置 | |
CN101035062A (zh) | 一种三重内容可寻址存储器报文分类的规则更新方法 | |
CN101068178A (zh) | 使用、管理mac地址表的方法、系统、及搜索引擎 | |
CN1816002A (zh) | 移动ip网络中家乡代理转发报文的实现方法 | |
CN101035061A (zh) | 实现三重内容可寻址存储器范围匹配的分段编码扩展方法 | |
CN1946061A (zh) | 一种快速处理报文的方法及装置 | |
CN1851693A (zh) | 一种对系统资源进行管理的实现方法 | |
CN112929281A (zh) | 基于fpga的网络设备的报文处理方法、装置及设备 | |
CN1719769A (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN1839591A (zh) | 用于丢弃缓冲器中对应于同一分组的所有段的方法 | |
CN1870498A (zh) | 一种自适应多模式匹配方法及系统 | |
CN1874358A (zh) | 一种互联网地址配置管理的方法和系统 | |
CN1859179A (zh) | 一种用户组播权限的管理方法 | |
CN1815997A (zh) | 一种用于因特网的基于规则集合划分的分组分类的方法 | |
CN101039253A (zh) | 一种实现三重内容可寻址存储器范围匹配的前缀扩展方法 |
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 |