一种实现多元数据包分类的方法及设备的利记博彩app

文档序号:7662315阅读:241来源:国知局

专利名称::一种实现多元数据包分类的方法及设备的利记博彩app
技术领域
:本发明涉及网络通信
技术领域
,尤其涉及一种网络中实现多元数据包分类的方法及装置。
背景技术
:数据包分类技术是网络提供更优质、更安全服务的基础。其中的快速包分类技术则是实现高速路由器的关键技术之一。现有技术中的包分类方法中,一种称为RFC(RecursiveFlowClassification递归流分类)的包分类方法是目前已知的软件算法中速度最快的包分类方法。所述的递归流分类RFC方法的工作原理是通过构建RFC缩减树,将包头中参与分类的S长度比特数据映射到相应的多个阶段的等价类上,其中每个映射称为一次缩减,以达到加快分类速度的目的。下面将结合附图1对上述RFC算法进行详细描述。在描述过程中假设采用的规则集包含有4条MJH,具体如表1所示表1<table>tableseeoriginaldocumentpage4</column></row><table>.首先,根据表1给定的规则集构建一颗二阶段RFC缩减树,其中,规则集的每条规则中包含3个域,每个域值长度为3比特。则,二阶段RFC缩减树的构建过程如下Phase0阶段,将规则集的3个域(F1-F3)分别映射到图1中对应的3个预处理表(Chunk0-Chunk2)中。其中,每张预处理表的表项序号表示与该预处理表对应的域的一种可能取值,例如ChunkO的表项表项序号"0"表示域F1的取值为'000,。而每张预处理表的表项内容则为一个eqlD号,所述的eqlD号存储在与该预处理表相关联的eqlD表中,根据相应的CBM位串确定。所述的CBM位串长度与规则集中的规则数相同,且CBM位串由高到低的每一位顺序对应一个规则号。以ChunkO中的eqlD号的确定为例表项序号"0"对应的域F1取值为'000,,检查每条规则,只有R4的F1域取值与'000,匹配,则CBM位串中与R4对应的位置'1,(表示匹配表项序号"0"对应的域F1的取值'000,),其余位置'0,,即表项序号"0"对应的CBM位串为'0001,。该位串第一次出现,因此将其填入ChunkO对应的eqlD表的首位,并分配eqlD号为'0'。同理,表项序号"1"对应的域F1的取值为'001,,相应的CBM位串为'1101,,将该CBM位串填入eqlD表的第二位,并分配eqlD号为'1,。按照同样的方法,依次各表项序号对应的eqID号。Phase1阶段,计算Phase0阶段中各eqlD表的交叉乘积表(Cross-ProductingTable,CPT).。其中,所述的交叉乘积表的每个表项序号代表了eqlD0-eqlD2的一种組合(eqlD0eqlD1eqlD2),例如表A的表项序号"0"代表(eqlD0eqlD1eqlD2)的组合'000,。而所述的交叉乘积表的表项内容为一个新的eqlD号,所述的新的eqlD号存储在与交叉乘积表对应的eqlD表中,交叉乘积表中的eqlD号通过以下方法获得对于每一个表项序号,将该表项序号所代表的eqlD组合中各eqlD号对应的CBM位串按位相与,得到一个新的CBM位串;若该CBM位串在eqlD表中已出现过,则将其对应的eqlD号填入表项,否则分配一个新的eqlD号,并在eqlD表中添加一条新的纪录。例如,表A的表项"0"代表(eqlD0eqlD1eqlD2)='000,,对应的3个CBM位串分别为'0001,,'0001,和'0011,,按位相"与"得到新的CBM位串为'0001,,分配eqlD为'0,。完成上述二阶段缩减树的构建,即可根据该二阶段缩减树对数据包进行分类,以数据包头P(010,100,011)的查找过程为例,包括Phase0阶段,用P1=010,P2=100和P3=011分别索引Chunk0-Chunk2,查找匹配的eqlD号,得到(eqlD0eqlD1eqlD2)-221。Phase1阶段,按照lndex=eqlD0*3*2+eqlD1*2+eqlD2查找交叉乘积表A,匹配表项序号"17",查表A得到eqlD号-3,其对应的CBM位串为'0011,,表示规则R3和R4均匹配,但按照最佳匹配原则,数据包匹配规则R3。在实现本发明的过程中,发明人发现现有技术中至少存在如下问题1)RFC算法对内存的需求随着规则集的规模及要匹配的包头域的数量急剧增大。针对多元数据包如果采用RFC方法进行分类,将占用过多的内存资源,影响系统性能。2)多核处理器构架是未来处理器技术的发展方向,但现有技术中的数据包分类方法都是基于通用处理器实现的,还没有基于多核处理器构架设计的数据包分类方法。
发明内容本发明的实施例提供了一种实现多元数据包分类的方法及设备,使得多元数据包的分类过程中降低了对内存空间的需求,并保证较快的包分类速度。为解决上述技术问题,本发明实施例首先通过构建基于二维包分类算法的数据结构找到所有可能匹配源地址和目的地址的规则组,对所述的各组规则分别编码并生成对应的代码块,通过所述代码块描述规则中除所述源地址和目的地址外的其他字段,完成对数据的预处理过程;然后,采用所述的二维包分类的源地址和目的地址匹配的一组规则所对应的代码块;最后,采用解释器解释执行所述代码块,对待分类数据包中除所述源地址和目的地址外的其他字段进行匹配,获得最终的凄t据包分类结果。由上述本发明的实施例提供的技术方案可以看出,由于采用基于二维包分类算法数据结构和执行代码块寻找匹配规则的数据包分类方法,因此,本发明实施例大大降低了对内存空间的需求,并提高了多元数据包分类的速度。图1为现有技术中RFC包分类方法的示意图2为本发明实施例提供的处理过程示意图3为本发明实施例提供的多元数据包分类过程的示意图4为本发明实施例构造缩减树的过程示意图5为本发明实施例中对规则进行编码的过程示意图6为本发明实施例中的指令格式的结构示意图7为本发明实施例提供的多元数据包分类设备的结构示意图。具体实施例方式在本发明实施例中,为了降低多元数据包分类过程中对内存空间的需求,并保证较快的包分类速度,提供了一种实现多元数据包分类的技术方案,通过分析实际的包分类规则集,发现匹配一对给定的〈源IP地址,目的IP地址〉的规则数,在绝大多数情况下(99%)不多于5个,因此,本发明实施例中提出可将多元数据包分类问题划分为两个子问题,即1)用数据包的源IP地址和目的IP地址找到所有匹配的规则;2)在匹配的规则中进一步匹配其它字段,最终找到优先级最高的分类规则。本发明实施例提供的针对多元数据包分类的处理方案如图2所示,具体可以包括以下步骤步骤1,通过基于二维包分类算法构建数据结构找到所有可能匹配源地址和目的地址的身见则组,对所述的MJ'J组分别编码并生成对应的代码块,通过该代码块描述规则中除所述源地址和目的地址外的其他字段;该步骤为本发明实施例的预处理过程,其中,生成对应的代码块的处理具体可以包括首先,对各组规则中的每条规则编码为一条指令,生成每组规则对应的代码块,并为所述代码块分配相应的存储空间;之后,将各代码块存储空间首地址存放到所述数据结构中对应的各组规则指向的位置;步骤2,采用二维包分类算法对待分类数据包的源地址和目的地址进行匹配获得与所述待分类数据包的源地址和目的地址匹配的一组规则所对应代码块;步骤3,釆用解释器解释执行所述代码块,对待分类数据包中除所述源地址和目的地址外的其他字段进行匹配,获得数据包分类结果。该步骤中具体可以包括解释器首先获得所述数据结构中的存储空间首地址;之后,根据所述存储空间首地址载入对应存储空间中的代码块,并执行该代码块,以获得匹配的规则号。为提高多元数据包的分类速度,在上述本发明实施例中,所述的二维包分类算法可以但不仅限于应用递归流分类RFC算法。其中,在采用所述的RFC算法的本发明应用实施例中,其运行速度与RFC算法相当,但大大降低了对内存空间的需求。以采用RFC算法及解释器执行对IP数据包进行处理为例,本发明实施例在实现过程中具体可以包括以下的预处理过程和两个阶段查找过程预处理过程,如图4、5所示,首先生成RFC缩减树数据结构,在完成了基于源/目的IP地址构造缩减树的操作后,还需要将通过RFC缩减树匹配获得的所有可能的规则列表进行编码,以生成对应的代码块。其中,每一规则列表被编码成特定的指令,如CISC指令等,通过相应的指令描述规则中除源IP地址和目的IP地址以外的其它字段;即在构造RFC缩减树后,需要对得到所有规则列表中的规则进行编码,并组织为相应的代码块,如空间连续的代码块等;在该过程中生成RFC缩减树数据结构与现有技术中的RFC算法不同的是在最后一个交叉乘积表中,并未保存最后匹配的规则号,而是保存将在第二阶段查找过程被执行的代码块的存储空间首地址;第一阶段查找过程,如图3所示,使用与RFC算法相似的缩减树处理源/目的IP地址,即利用RFC算法进行源/目的IP地址的匹配处理,从而获得匹配的规则列表所对应的代码块存储空间首地址,该匹配的规则列表中包含一个或多个规则,即采用RFC缩减树对待分类数据包的〈源IP地址,目的IP地址〉进行匹配,找到匹配这一对地址的所有规则;第二阶段查找过程,从第一阶段查找过程获得的匹配的规则列表中找到最后匹配的规则,即执行第一阶段查找过程得到的相应代码块获得匹配结果,具体可以利用从RFC缩减树查到的首地址装载目标代码块,并由解释器执行该代码块,以对待分类数据包中除所述源地址和目的地址外的其他字段进行匹配,返回与输入数据包匹配的规则号(RuleID)作为最后的匹配结果。上处理过程算法可以简称为TIC(Two-stageInterpretingbasedClassification,基于解释的二阶段包分类算法),采用TIC实施包分类查找过程前,须完成预处理过程。参照图4和图5所示,上述本发明实施例中预处理处理过程具体可以包括以下处理过程(1)在缩减树phase2交叉乘积表(CPT10)中表项设置为指向其位串表(eqlD20)中相应表项入口;为每个位串分配一块存储空间,为提高访问效率,相应的存储空间可以与cacheline(高速緩冲存储器存储界)空间大小相同并保持数据对齐,将各个位串对应的存储空间的首地址填入所有指向该位串的交叉乘积表的表项中;(2)完成相应的存储空间的分配后,则对位串表示的待处理规则进行编码,相应的编码过程可以包括从位串的最高位(表示最高优先级的规则,然后优先级递减)开始依次寻找第一阶段匹配的规则,根据规则的匹配模式和指令规范进行编码,之后将指令字节码依次压入分配到的代码块空间中;代码块的空间大小为一个cacheline(如64bytes或32bytes),当压入一定数量的指令后代码块空间可能会出现溢出,若出现溢出,则需要分配一个新的代码块空间,并将新代码块空间的首地址作为'GOTO'指令的操作数,将GOTO指令放到上一代码块最后4bytes,并用NOP指令填满GOTO指令和上一代码块最后一条指令之间的空隙;继续在新代码块空间中压入指令,重复以上过程直到位串表示的所有规则都被编码且压入代码块。当eqlD20中所有的位串都被处理后,如图3所示,CPT10中的所有表项也均被填入对应的代码块首地址,此时,便可以释放eqlD20的存储空间,本发明实施例的预处理过程結束。在上述预处理过程中,需要使用相应的指令规范进行编码,该指令规范具体可以但不限于如表2和表3所示表2.TIC算法中指令规范说明<table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table>表3.TIC|二法中指令规范说明(续)<table>tableseeoriginaldocumentpage11</column></row><table>上标序号^L明1:匹配范围的上界值2:匹配范围的下界值3:低16bits为下一个相关代码块的首地址基于该表2和表3,根据规则的匹配模式和指令规范进行编码的过程如图5所示,在该过程中,相应的规则的匹配模式可以为通配、高段端口、低段端口、任意范围匹配或精确匹配等。本发明实施例中,为尽量压缩存储空间并提高指令执行效率,在第一阶段具体可以采用CISC指令格式中包含一个8比特的操作符和一个16比特的规则号,其中操作符用于指示该指令的具体操作类型,规则号则用于标识该指令所对应的规则(在规则成功匹配后将会被指令返回)。另外,本发明实施例中提供了3种类型的CISC指令格式,如图6所示,这3种类型的CISC指令格式的长度分别为4字节、8字节和16字节,其中,4字节的CISC指令格式中还包括一个8比特的operand0;8字节的CISC指令格式中还包括一个8比特的operandO,可选的包括一个16比特的operand1;16字节的CISC指令格式中还包括一个8比4争的operand0,一个16比净寺的operand1和一个16比净争的operand3,可选的包4舌一个16t匕净争^ioperand2,和/或一个16t匕净争^;operand4。其中,operand0用于协议号的匹配计算,operand1-operand4用于源/目的端口号的匹配计算。进一步的,在本发明实施例中,将规则集中端口号的匹配模式可以划分为5类,包括WC(Wildcard通配),HI([1024:65535]高段端口)LO(低段端口),AR(ArbitraryRange任意范围匹配)和EM(ExactMatch精确匹配);将协议号的匹配模式分为两类,分别为WC和EM。同时,本发明实施例为规则的每一种匹配模式分配相应的操作符。具体的每种匹配模式对应的操作符可查阅表2、表3得到。下面对上述本发明实施例中第一阶^R查找的处理过程进行说明,在第一阶段查找过程可以采用的处理过程具体可以包括如图3所示,使用与RFC算法相似的缩减树处理源/目的IP地址,即利用RFC算法进行源/目的IP地址的匹配处理,从而获得匹配的规则列表所对应的代码块地址,该匹配的规则列表中包含一个或多个规则,即采用RFC缩减树对数据包的〈源IP地址,目的IP地址〉进行匹配,找到匹配这一对地址的所有规则。下面再对上述本发明实施例中第二阶段查找的处理过程进行说明,在第二阶段查找过程可以采用的处理过程具体可以包括在第一阶段查找结束后,解释器程序将可以得到待执行的代码块首地址,此时,解释器将载入以该首地址开始的代码块;载入代码块后,解释器开始解释并执行当前指令字节码,若输入的网络包头中协议号、源和目的端口号皆在指令执行过程中符合操作符和相应操作数所定义的匹配语义,则执行结果返回true,即表示查找过程搜索到最佳匹配规则,解释器返回该规则的ID;否则,解释器继续解释执行下一条指令;若当前代码块中所有指令的执行结果均没有返回true(即均返回false),则相应的GOTO指令将被执行,返回附加代码块首地址。根据该地址,解释器载入新的代码块并依次执行该代码块中指令直到查找到最佳匹配规则。Input:Ei〃addressofthefirstencodedblock(输入代码块首地址Ei)Output:ID〃idofthebestmatchingrule(输出最匹配的规则ID)1:entry=Ei;(输入Ei)2:fetch(entry);〃readtheblock(i卖代码块)3:while(getlnstruction()〃getaninstructionoftheblock(从代码块中顺序取出一条指令)4:result=decode—execute();(执行当前指令字节码)5:if(result)6:returnID;(返回规则ID)7:ds68:continue;(执行下一条指令)9:}10:entry=Ei+1;〃anotherblockmustbefetched(返回代码块首地址)11:goto2;(返回第2步)在上述处理过程中,对于不同的存储架构,相应的载入代码块具有不同的含义在具备cache存储架构中,需要将代码块读入到cache;当不具备cache时,则可以将代码块读入片内存储器,如对于lntelIXP2800NetworkProcessor(网络处理器),可以将代码块读入LocalMemory(本地存储器)。为便于对本发明实施例的理解,下面将结合附图对本发明实施例的具体实现方案进行详细描述。本实现方案以基于5元组〈源IP地址,目的IP地址,协议,源端口,目的端口〉的IP数据包的分类过程为例,设定规则集如表4所示,为便于描述,不妨将所述的分类过程分为如图2所示的数据预处理阶段及规则匹配阶段,其中表4.一个含有5条规则的5域规则集<table>tableseeoriginaldocumentpage14</column></row><table>数据预处理阶段首先根据表4提供的规则集构建如图4所示的RFC缩减树Phase0阶段,将源IP地址(Src.lP)的第1、2字节和源IP地址的第3、4字节,目的IP地址(Des.lP)的第1、2字节和目的IP地址的第3、4字节分别映射到预处理表ChunkO-Chunk3中。其中,每张预处理表的表项序号表示与该预处理表对应的地址字节的一种可能取值,而每张预处理表的表项内容则为一个eqlD号。Phase1阶段,计算PhaseO阶段得到的eqlD01表和eqlD02表的交叉成绩表CPT00,及eqlD03表和eqlD04表的交叉乘积表CPT01,并分别生成对应的eqlD10表和eqlD11表。Phase2阶段,计算Phase1阶段得到的交叉乘积表CPT00和CPT01的交叉乘积表CPT10,并生成对应的eqlD20表。生成关于〈源IP地址,目的IP地址〉的RFC缩减树。如图4所示,在eqlD20构造完成之后,得到4个不同的CBM位串'00001,,'00101,,'10101,和'01011',为所述的4个CBM位串分别分配存储空间,并将存储空间的首地址填入表CPT10中对应的表项中。另外,所述的4个CBM位串分别表示4个规则列表[R4],[R2,R4],[R0,R2,R4]和[R1,R3,R4],然后对4个规则列表分别编码。以CBM位串'01011,为例,即对规则列表[R1,R3,R4]的规则R1、R3、R4顺序编码,并依次压入CBM位串'01011,对应的存储空间,其具体编码过程如下查表2、表4可知R1规则中的协议号(Protocol)'17,为精确匹配,源端口号(Src.Port)'*,为通配,目的端口号(Des.Port)'>,为高段端口,故R1的指令操作符为'EM_WC—Hl,,得到具体编码指令'00000100000100010000000000000001,(即0x04),并将该指令压入CBM位串'01011,对应的存储空间中,然后,将R3和R4按照同样的方法进行编码并依次压入代码块。其中,R3的指令搡作符为'EM—WC—AR,,对应的编码指令为'0000001100010001000000000000001100000000000111100000000000010100,(即0x03),R4的指令操作符为'WC_WC—WC,,对应的编码指令为'00001010000000000000000000000100,(即0x0A)。另外,查表2可知R1,R3和R4编码后的指令长度分别为4字节,8字节和4字节,在代码块中共占用16bytes空间。由于16bytes小于代码块的64bytes空间大小,因此不需要申请新的存储空间,并且用操作符'NOP,对应的指令将存储空间填满。完成对所述的RFC缩减树中表eqlD20中各CBM位串表示的规则列表的编码后,释方丈表eqlD20的存储空间。在上述应用实施例中,可以但不仅限于通过下述代码段对所述的规则列表进行编码TIC一Preprocessor(ClassifierC){1:5—IP—Ad—Pair=getIPAdPair(C);〃从规则集中取出源/目的IP地址域2:C_Port_Protocol=getPortProtocol(C);〃从规则集中取出协议和源/目的端口号域3:Code—Port—Protocol=encode(C—Port—Protocol);〃对每个规则中的协议和源/目的端i5号i进行编码——4:setPhaseOChunks(C—IP—Ad—Pair);〃将源/目的IP地址映射到縮减树的Chunk0Chunk3中5:setPhaselChunks();〃通过ChunkOChunkl计算得到CPTOO和CPTOl6:setPhase2Chunk();〃通过CPT00和CPT01计算得到CPTIO,并保留eqlD20表中的位串信息7:while(currentBS=getBitStr(eqlD20)){〃依次从eqlD20表中取出位串8:address=initCodeBlock();//初始化一个新的代码块空间9:setAddress(CPT10,currentBS,address);〃将CPT10表中对应当前位串的所有表项设置为代码块首地址10:while(currentRule=getRule(currentBS)){〃从当前位串中依次得到待匹配的规则号11:flag=addCode(currentRule,Code_Port—Protocol);〃将规则号在Code_Port_Protocol中对应的编码指令加入当前代码块中12'if(flag==false){〃如果当前代码块己经没有足够的空间13'temple=initCodeBlock();〃初始化一个新的附加代码块空间14setGoto(temple);〃在当前代码块中设置指针指向附加代码块15address=temple;16addCode(currentRule,Code_Port—Protocol);〃将规则号在Code—Port_Protocol中对应的编码指令加入附加代码块中17J〃if18}〃while19}〃while20}〃TIC—Preprocessor规则匹配阶段在本阶段中首先提取待分类数据包的包头信息,并用其中的<源IP地址,目的IP地址〉字段在上述的RFC缩减树上进行查找,找出匹配该对地址字段的规则所在的代码块存储空间首地址,然后执行该代码块中的指令,并最终返回匹配的规则号。下面以数据包头P〈0.83.1.32,0.0.4.6,17,23,22>为例详细说明所述的规则匹配过程步骤1)根据数据包头P中的相应字段83,288,0和1030分别索引表Chunk0國Chunk3,得到(691000691001691002691003)=1201,其中'83,、'288,、'0,和'1030,分别是地址字段'0.83,、'1.32,,'0.0,和'4.6,对应的十进制字段;步骤2)按照lndex00=eqlD00*3+eqlD01和Index01=eqlD02*2+eqlD03分别检索到交叉乘积表CPT01和CPT01的相应表项内容为'2,和'1,;步骤3)按照lndex10=eqlD10*2+eqlD11检索到交叉乘积表CPT10的表项序号'5,,并读出该表项内的代码块存储空间的首地址;步骤4)根据步骤3)中得到的首地址,将相应存储空间中的代码块载入到高速緩存器或其它片内储存器,并依次执行上述代码块中的指令,并返回匹配规则号R3,具体可以包括首先执行第一条指令'000。0100000100010000000000000001,,其中,第0-7位'00000100,为操作符,表示该规则的协议匹配模式为精确匹配,源端口匹配规则为通配,目的端口匹配^见则为>1024;第815位'00010001,为操作数,表示协议精确匹配17;第16~31位'0000000000000001'为该指令所对应的规则号1。执行过程为"7==77y>&<&("22>=7024J不4'i,厂ef〃/fe/se,即协议号匹配,但目的端口不匹配,故返回'false,。继续执行下一条指令"000000110001000100000000000000"00000000000111100000000000010100",其中,第07位'00000011,为操作符,表示该规则的协议匹配模式为精确匹配,源端口匹.配规则为通配,目的端口匹配规则为范围匹配;第815位'00010001,为搡作数,表示协议精确匹配17;第16-31位'0000000000000011,为该指令对应的规则号3;第3263位'00000000000111100000000000010100,为操作数,表示目的端口号大于等于20且小于等于30。执行过程为〃7=="/7y>&&("30>=22>=20>ti,refwAT7rtv/e/D,即协议号与目的端口均匹配,返回'3,,表示数据包匹配规则R3,查找结束。还适用于其他多元数据包的分类。对于实现其他多元数据包分类的具体实现方案,本领域的技术人员可以依据上述应用实施例的描述并结合现有技术轻易联想到,因此不再详细描述。本发明实施例还提供一种多元数据包分类的设备,其结构如图7所示,具体实现结构可以包括预处理模块,用于生成基于二维包分类算法查找源地址和目的地址的数据结构,并对由所述数据结构获得的所有可能的规则组进行编码,以生成各组规则对应的代码块,通过所述代码块描述规则中除所述源地址和目的地址外的其他字段;包头信息提取模块,用于提取待分类的数据包的包头信息;二维包分类算法匹配模块,用于通过所述二维包分类算法数据结构对所述包头信息提取模块获得的数据包中的源地址和目的地址进行匹配,获得与所述数据包的源地址和目的地址匹配的一组规则所对应代码块的存储空间首地址;解释器,用于根据所述的存储空间首地址载入所述预处理模块获得的代码块,执行该代码块中的指令,对待分类数据包中除所述源地址和目的地址外的其他字段进行匹配,获得匹配的规则号作为包分类的结果。为适应不同的存储架构,基于多核多线程处理器体系结构实现的该多元数据包分类设备中解释器在载入所述预处理模块获得的代码块的过程中具体可以将代码块载入到高速緩存器或片内存储器,例如,在具备高速緩存器的情况下,将代码块载入高速緩存器;否则,将代码块载入片内存储器。本发明实施例的设备还可以包括首地址存储模块,用于保存所述预处理模块获得的代码块所在的存储空间的首地址,并提供给所述解释器。上述本发明具体应用实施例与RFC算法相比具有的有益效果包括(1)运行速度与RFC相当,但内存需求小得多这是因为RFC算法对规则集中所有域的匹配均使用缩減树,而缩减树占用内存空间大小随着规则中域的数量增加呈现非线性增长;TIC则仅使用缩减树匹配源/目的IP地址域,其它域的匹配利用解释器进行,从而避免了缩减树占用过多内存空间。实验数据表明,TIC比RFC减少27。/o-97o/。的内存需求,平均减少66%。(2)更新性能好实验数据表明,TIC比RFC减少50。/o-97。/。的规则集更新处理时间,平均减少80%。(3)适用于不同存储结构的多核多线程架构这是因为TIC算法充分利用了并行多核体系结构的特点,在提高对CPU计算能力的依赖的同时减少了算法对外部存储器的访问次数,从而合理利用了多核结构中强大的CPU计算能力,避免了存储访问瓶颈。另一方面,解释器能够高效地运行在具备cache或不具备cache的体系结构中,对规则进行编码并分块组织保证了解释器最大限度地访问cache数据,在不具备cache的情况下,算法显式地将指令块读入片内存储器同样可以保证解释器在执行指令期间最大限度访问片内存储器上的数据。TIC算法在lntelCore2DuoX86和lntelIXP2800网络处理器上分别使用4线程和32线程时均获得了10Gbps的分类速度,而且实验数据表明算法具有几乎线性的加速比,这意味着当有更多可用的计算核时,还可以获得更高的分类速度。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。权利要求1、一种实现多元数据包分类的方法,其特征在于,包括通过构建基于二维包分类算法的数据结构找到所有可能匹配源地址和目的地址的规则组,对所述的各组规则分别编码并生成对应的代码块,通过所述代码块描述规则中除所述源地址和目的地址外的其他字段;采用所述的二维包分类算法对待分类数据包的源地址和目的地址进行匹配获得与所述待分类数据包的源地址和目的地址匹配的一组规则所对应的代码块;采用解释器解释执行所述代码块,对待分类数据包中除所述源地址和目的地址外的其他字段进行匹配,获得数据包分类结果。2、根据权利要求1所述的方法,其特征在于,所述的生成对应的代码块的处理具体包括对各组规则中的每条规则编码为一条指令,生成每组规则对应的代码块,并为所述代码块分配相应的存储空间;将各代码块存储空间首地址存放到所述数据结构中与其对应的一组规则指向的位置。3、根据权利要求2所述的方法,其特征在于,解释器解释执行所述代码块的过程具体包括获得所述数据结构中的存储空间首地址;根据所述存储空间首地址载入对应存储空间中的代码块,并执行该代码块。4、根据权利要求3所述的方法,其特征在于,该方法还包括在具备高速緩存器的处理器结构中,将所述的代码块载入高速緩存器;或者,在不具备高速緩存器的处理器结构中,将所述的代码块载入片内存储器。5、根据权利要求1至4任一项所述的方法,其特征在于,所述的编码的处理过程包括按照预定的指令格式对所述各组规则进行编码,所述的指令格式包含操作符、操作数和规则号,其中,所述的操作符用于指示指令的具体操作类型,所述的规则号用于标识指令所对应的规则,所述操作数用于进行协议号、源端口或目的端口的匹配计算。6、根据权利要求2、3或4所述的方法,其特征在于,为所述代码块分配相应的存储空间的处理包括当针对一组规则的编码获得的代码块需要多个存储空间时,则采用操作符'GOTO,作为从一个存储空间跳转到另一个存储控制的指令。7、一种实现多元数据包分类的设备,其特征在于,包括预处理模块,用于生成基于二维包分类算法查找源地址和目的地址的数据结构,并对由所述数据结构获得的所有可能的MJ'J组进行编码,以生成对应的代码块,通过所述代码块描述规则中除所述源地址和目的地址外的其他字段;包头信息提取模块,用于提取待分类的数据包的包头信息;二维包分类算法匹配模块,用于通过所述二维包分类算法数据结构对所述包头信息提取模块获得的数据包中的源地址和目的地址进行匹配,获得与所述数据包的源地址和目的地址匹配的一组规则所对应的代码块;解释器,用于载入所述预处理模块获得的代码块,执行该代码块中的指令,的规则号作为包分类的结果。8、根据权利要求7所述的设备,其特征在于,该设备还包括首地址存储模块,用于保存所述预处理模块获得的代码块所在的存储空间的首地址,并提供给所述解释器。全文摘要一种实现多元数据包分类的方法及设备,具体包括基于二维包分类算法构建匹配源/目的地址的数据结构,获得所有匹配的规则组并分别编码,以生成对应的代码块,通过该代码块描述规则中除所述源地址和目的地址外的其他字段;采用所述的二维包分类算法对数据包的源地址和目的地址进行匹配获得与所述数据包的源地址和目的地址匹配的一组规则所对应的代码块;之后,采用解释器解释执行所述代码块,获得数据包分类结果。本发明实施例的实现降低了多元数据包分类过程中对内存空间的需求,并提高了包分类速度。文档编号H04L12/56GK101340363SQ20071016106公开日2009年1月7日申请日期2007年12月24日优先权日2007年12月24日发明者蓓华,唐锡南,程海鹏申请人:中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1