本发明涉及网络,特别涉及采用多域并行向量索引的包分类算法及装置。
背景技术:
1、包分类是指根据给定的规则库,将数据包分类为特定的流的过程,广泛应用在路由器、安全网关及流量控制系统等各类网络设备中。随着业务感知网络、数据中心网络以及软件定义网络等前沿网络技术的发展,对数据包分类算法性能提出了更高的要求。
2、目前,网络包分类在硬件实现上主要采用三态内容可寻址存储器(tcam),虽然tcam存在查询速度快、查询时间固定等优点,但tcam的价格昂贵、集成度低、功耗高,因此,很有必要发明一种更优的适合硬件实现的包分类方法。
技术实现思路
1、针对现有技术存在的不足,本发明提供一种采用多域并行位向量索引的网络包分类算法及装置。
2、为了解决现有技术问题,本发明第一方面提供了一种采用多域并行位向量索引的包分类算法,所述方法包括:
3、1、获取网络包分类规则集,并确定规则的多域划分
4、网络数据包通常是通过源ip地址、源端口、目的ip地址、目的端口和传输层协议这五个量组成的五元组进行分类,对于ipv4的报文,五元组一共是13个字节。
5、通常可编程逻辑阵列(fpga)内嵌18k比特大小的存储块,单个存储块位宽为32比特,对应存储深度为512。为充分利用逻辑资源及结合分类规则特征,本发明实施时采用每个字节作为一个域,则五元组一共有13个域。
6、 2、构建位向量单元
7、基于所述每个字节为一个域,每个字节的数值有256种可能,将每个字节展开后的256种可能构成一个256行1列的向量,每行由一个比特构成,则每条规则的一个域占据256*1bit的空间。
8、为便于充分利用fpga内部的存储资源,将32条分类规则相同位置的域构成一个位向量单元,则32条分类规则相同位置的域构成一个256*32bit的位向量单元,占用一个fpga存储块。
9、3、构建规则集向量表
10、 所述规则集向量表是所有规则集所有域构成的向量表,由于五元组由13个域构成,因此对于具有32条分类规则的五元组规则集,可构成一个256*32*13的向量表,并将该向量表记为向量表单元。
11、 对于分类规则条目大于32的情况,可通过使用多个向量表单元来实现,如可通过2个向量表单元构建一个具有64条分类规则的向量表。
12、4、配置规则集向量表
13、根据所述规则集向量表的构建过程,逻辑单元构建了既定大小的规则集向量表,规则集配置表生成模块根据获取的规则集生成配置数据。
14、根据所述位向量单元为256*32bit的向量表,其中行表示该域值为0-255,如第1行表示该域值为0、第256行表示该域值为255;列表示第几条分类规则,如第1列表示第1条分类规则、第32列表示第32条分类规则;在配置向量表时,将该条分类规则对应的值所在行标记为1,并将该条分类规则所在列的其他行标记为0,由此生成该条分类规则对应的列向量。将未使用的分类规则列向量全部标记为0。依次生成该位向量单元其他分类规则对应的列向量。
15、根据所述位向量单元配置参数由256行32bit的数据构成,配置向量表生成模块将该参数配置到配置向量表存储单元中。
16、根据所述位向量单元向量表生成及配置过程,对所有域进行配置,如五元组构成的一个向量表单元配置参数由13个256*32bit的数据表构成。
17、5、多域并行位向量索引的网络包分类
18、在接收到一个待分类的网络数据包后,分类处理模块首先提取网络包的五元组,其后将五元组的13个域分发至域位向量索引包分类模块,因此基于五元组的包分类模块共有13个域位向量索引包分类模块在并行处理。
19、域位向量索引包分类模块读取该域的索引值在配置表中所对应的32bit行向量值,该向量值即为该域包分类的输出结果,如读取第193行配置表数据为0x80000080,其中1列及第25列处为1,表示命中第1列及第25列,也就是第1条及第25条分类规则。
20、将所有13个域位向量索引包分类结果做按位相与运算,则32bit向量中为1的索引值即为该数据包网络分类的结果,如结果为0x80000000,其中第1列为1,其他列为0,表示命中第1条分类规则。
21、本发明第二方面提供了一种采用多域并行位向量索引包分类算法的装置,所述装置主要包括位向量配置表生成模块及执行模块。
22、位向量配置表生成模块,用于对分类规则进行多域划分及生成位向量配置表。
23、执行模块,用于执行配置的多域并行位向量索引包分类算法,执行模块主要包括:
24、网络数据包接收模块,用于接收待分类网络数据包;
25、数据包多域分配模块,将接收到的网络数据包根据所述多域划分方法将每个域分配至不同位向量索引分类模块;
26、位向量索引分类模块,该模块为多个并行的分类模块,每个域位向量索引分类模块按照所述的位向量索引分类方法对该域进行索引分类;
27、位向量配置空间,用于存储位向量生成模块生成的配置表,接收位向量索引分类模块输入的索引,并输出该索引值对应的位向量;
28、多域分类结果合并计算模块,该模块将多域分类结果合并,计算多域并行位向量索引分类算法的分类结果;
29、输出模块,输出多域并行位向量索引分类算法的分类结果。
30、有益效果:本发明将网络包分类规则划分为多个域,每个域作为一个单元,并将每个单元所有的可能性展开后构成一个位向量单元,数据包分类时只需根据每个域的数值即可检索位向量表,简化了数据包分类时的处理过程,并支持多域并行查找,减小了数据包处理时延,只需一个时钟周期即可完成对网络数据包的分类,进而提高了网络数据包的分类速度;同时本发明算法结构简单灵活,扩展方便,使用较少的逻辑资源及存储资源即可实现,进而具有较低的功耗和成本。
1.一种采用多域并行位向量索引的网络包分类算法,其特征在于,所述算法包括:
2.根据权利要求1所述域的划分,其特征在于,域的宽度是根据基本逻辑存储单元的存储深度及分类规则特征选取的。
3.根据权利要求1所述的位向量单元,其特征在于,位向量是将分类规则中该域所有可能的值展开后构成的位向量。
4.根据权利要求1所述的位向量单元,其特征在于,位向量单元是构成多域并行网络包分类的基本单元,位向量单元包含的规则集数量是根据基本逻辑存储单元的宽度选取的。
5.根据权利要求1所述规则集向量表生成,其特征在于,规则集位向量表的列为该列所对应分类规则的比特向量表,将该列对应分类规则的域值索引所在的行标记为1,并将其他行标记为0。
6.根据权利要求1所述规则集向量表配置到执行设备,其特征在于,规则集向量表的生成可以由执行设备生成也可以由其他设备生成。
7.根据权利要求1所述的待分类网络数据按照多域划分规则并行分类,其特征在于,并行分类的模块采用的是位向量索引的分类算法。
8.一种采用多域并行位向量索引包分类算法的装置,其特征在于,所述装置包括位向量配置表生成模块和执行模块。
9.根据权利要求8所述的位向量配置表生成模块,其特征在于,所述模块用于确定多域划分及生成位向量配置表。
10.根据权利要求8所述执行模块,其特征在于,执行模块主要包括: