一种基于查表运算的网络通信快速匹配方法及设备转让专利

申请号 : CN201810714916.1

文献号 : CN108881036B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 翟大海王瑞段张钰邓莉

申请人 : 电信科学技术第五研究所有限公司

摘要 :

本发明公开了一种基于查表运算的网络通信快速匹配方法及设备,该方法包括:根据用户需求生成二维规则表,所述二维规则表的A轴表示规则条目数,B轴表示规则中每个字节的数值,且B轴的数值以字节为单位并按照字节的顺序依次排列;获取网络通信过程中需要进行匹配的数据;将所述需要进行匹配的数据与所述二维规则表进行匹配;根据所述匹配的结果判断是否命中规则。本发明可快速实现特定字段与用户设置的规则表进行匹配,从而提高相关设备在规则匹配时的效率。

权利要求 :

1.一种基于查表运算的网络通信快速匹配方法,其特征在于,该方法包括:

根据用户需求生成二维规则表,所述二维规则表的A轴表示规则条目数,B轴表示规则的内容,且B轴的数值以字节为单位并按照字节的顺序依次排列,所述生成二维规则表的方法包括:将整张表所有位置的初始值均置为0;依次以各条规则中每个字节的数值作为索引,将相应位置的0置为1;

获取网络通信过程中需要进行匹配的数据;

将所述需要进行匹配的数据与所述二维规则表进行匹配,所述匹配的方法包括:分别以所述数据中的每个字节的数值作为索引,获取相应A轴方向所有的值;将获取到的所有字节对应的值做“与”操作;

根据所述匹配的结果判断是否命中规则,若所述匹配的结果不为0,则判断为命中规则,若所述匹配的结果为 0,则判断为未命中规则;

B轴方向包括13个字节的数值,每个字节的数值范围均为0-255,且B轴的数值还以数据类型为单位并按照数据类型的顺序依次排列,其中,源IP地址和目的IP地址均占4个字节,源端口和目的端口均占2个字节,协议类型占1个字节;所述需要进行匹配的数据为五元组;

所述匹配的方法具体包括:分别以获取到的五元组中5个数据的每个字节的数值作为索引,获取相应A轴方向所有的值;将获取到的13个值做“与”操作。

2.根据权利要求1所述的一种基于查表运算的网络通信快速匹配方法,其特征在于,所述生成二维规则表的方法还包括:将五元组中用户不关心的数据对应位置的值均置为1。

3.根据权利要求1-2任一项所述的一种基于查表运算的网络通信快速匹配方法,其特征在于,该方法还包括:根据所述匹配的结果判断命中二维规则表中的哪条规则。

4.一种基于查表运算的网络通信快速匹配设备,其特征在于,该设备包括:

二维规则表生成装置,用于根据用户需求生成二维规则表,所述二维规则表的 A 轴表示规则条目数,B轴表示规则的内容,且B轴的数值以字节为单位并按照字节的顺序依次排列,所述二维规则表生成装置生成二维规则表的方法包括:将整张表所有位置的初始值均置为0;依次以各条规则中每个字节的数值作为索引,将相应位置的0置为1;

数据获取装置,用于获取网络通信过程中需要进行匹配的数据;

规则匹配装置,用于将所述需要进行匹配的数据与所述二维规则表进行匹配,所述规则匹配装置进行匹配的方法包括:分别以所述数据中的每个字节的数值作为索引,获取相应A轴方向所有的值;将获取到的所有字节对应的值做“与”操作;

结果判断装置,用于根据所述匹配的结果判断是否命中规则,若所述匹配的结果不为

0,则判断为命中规则,若所述匹配的结果为 0,则判断为未命中规则;

所述二维规则表生成装置生成的二维规则表的B轴方向包括13个字节的数值,每个字节的数值范围均为0-255,且B轴的数值还以数据类型为单位并按照数据类型的顺序依次排列,其中,源IP地址和目的 IP 地址均占4个字节,源端口和目的端口均占2个字节,协议类型占1个字节;所述需要进行匹配的数据为五元组;

所述规则匹配装置进行匹配的方法具体包括:分别以获取到的五元组中5个数据的每个字节的数值作为索引,获取相应 A 轴方向所有的值;将获取到的13个值做“与”操作。

5.根据权利要求4所述的一种基于查表运算的网络通信快速匹配设备,其特征在于,所述二维规则表生成装置生成二维规则表的方法还包括:将五元组中用户不关心的数据对应位置的值均置为1。

6.根据权利要求4-5任一项所述的一种基于查表运算的网络通信快速匹配设备,其特征在于,结果判断装置还用于根据所述匹配的结果判断命中二维规则表中的哪条规则。

7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的方法的步骤。

说明书 :

一种基于查表运算的网络通信快速匹配方法及设备

技术领域

[0001] 本发明涉及网络通信领域,尤其涉及一种基于查表运算的网络通信快速匹配方法及设备。

背景技术

[0002] 网络通信技术中,对业务数据报文的特征字端识别、匹配具有重要的作用。例如在入侵检测领域,系统配置的网络通信黑名单或者白名单,可对进入网络设备的网络信息进行监控。从而识别正常网络通信和非法网络通信。其核心即抽取网络通信的五元组(源 IP、目的 IP、源端口、目的端口、协议类型)与系统中配置的黑、白名单进行对比。随着网络通信带宽的提高,要求规则匹配的性能也进一步提高。同时规则匹配也由精确匹配的功能,扩展为支持掩码功能的匹配、支持范围匹配。
[0003] 目前实现规则匹配的方式有:逐条匹配方式;hash表实现方式;使用TCAM芯片通过硬件快速查找匹配方式等。
[0004] 精确匹配即要求每个字节都要精确对比,如一个规则的精确五元组(192.168.1.66,192.168.1.88,12345,8080,TCP)表示当网络通信的报文中源IP为
192.168.1.66,目的 IP 为 192.168.1.88,源端口为12345,目的端口为 8080的TCP 报文,则匹配。
[0005] 掩码匹配即要求除掩码字节外的其他字节都要相同。如一条包含掩码的规则,192.168.1.X 表示当报文中的 IP 为 192.168.1.0,192.168.1.1,…,192.168.1.255 中的任何一个值时,均匹配。
[0006] 范围匹配即要求目标报文只要落在一定的范文内即为命中规则。如一条包含范围的规则,192.168.1.35 至 192.168.1.77。当网络通信报文中 IP 为192.168.1.46 时,则匹配。
[0007] 逐条匹配方式容易实现,可支持精确匹配、带掩码匹配(可将网络信息中提取的五元组同规则中的掩码做与操作,再与规则进行)范围匹配功能。但由于其计算效率不高,只能用在小系统中或是对性能要求不高的系统中。
[0008] Hash 表结构方式不可避免会在匹配时发生碰撞,且随着规则表项的增加碰撞概率增大,从而影响匹配效率。同时对于掩码匹配和范围匹配,需要先将一条规则转化为多条规则,分别计算,操作复杂。
[0009] 使用TCAM 芯片可实现规则的快速匹配,但也有其局限性。如:TCAM 空间大小限制规则条目数大小、成本较高、TCAM 芯片功耗大及硬件设计复杂。同时根据所选芯片的不同,不是所有TCAM 芯片均支持范围匹配的功能。

发明内容

[0010] 本发明所要解决的技术问题是:针对现有技术存在的不足,本发明提供一种快速匹配方法及设备,可快速实现特定字段与用户设置的规则表进行匹配。从而提高相关设备在规则匹配时的效率。
[0011] 本发明提供的一种基于查表运算的网络通信快速匹配方法,该方法包括:
[0012] 根据用户需求生成二维规则表,所述二维规则表的A轴表示规则条目数,B轴表示规则中每个字节的数值,且B轴的数值以字节为单位并按照字节的顺序依次排列,所述生成二维规则表的方法包括:将整张表所有位置的初始值均置为0;依次以各条规则中每个字节的数值作为索引,将相应位置的0置为1;
[0013] 获取网络通信过程中需要进行匹配的数据;
[0014] 将所述需要进行匹配的数据与所述二维规则表进行匹配,所述匹配的方法包括:分别以所述数据中的每个字节的数值作为索引,获取相应 A 轴方向所有的值;将获取到的所有字节对应的值做“与”操作;
[0015] 根据所述匹配的结果判断是否命中规则,若所述匹配的结果不为 0,则判断为命中规则,若所述匹配的结果为 0,则判断为未命中规则。
[0016] 进一步,B 轴方向包括4个字节的数值,依次为第1个字节的数值、第2个字节的数值、第3个字节的数值和第4个字节的数值,每个字节的数值范围均为 0-255;所述需要进行匹配的数据为IP地址;
[0017] 所述匹配的方法具体包括:分别以获取到的 IP 地址的 4 个字节的数值作为索引,获取相应A 轴方向所有的值;将获取到的 4 个值做“与”操作。
[0018] 进一步,B 轴方向包括13个字节的数值,每个字节的数值范围均为 0-255,且B 轴的数值还以数据类型为单位并按照数据类型的顺序依次排列,其中,源IP 地址和目的 IP 地址均占4个字节,源端口和目的端口均占 2 个字节,协议类型占1个字节;所述需要进行匹配的数据为五元组;
[0019] 所述匹配的方法具体包括:分 别以获取到的五元组中 5 个数据的每个字节的数值作为索引,获取相应 A 轴方向所有的值;将获取到的 13 个值做“与”操作。
[0020] 进一步,所述生成二维规则表的方法还包括:将五元组中用户不关心的数据对应位置的值均置为 1。
[0021] 进一步,该方法还包括:根据所述匹配的结果判断命中二维规则表中的哪条规则。
[0022] 本发明另一方面提供的一种基于查表运算的网络通信快速匹配设备,该设备包括:
[0023] 二维规则表生成装置,用于根据用户需求生成二维规则表,所述二维规则表的 A 轴表示规则条目数,B 轴表示规则中每个字节的数值,且 B 轴的数值以字节为单位并按照字节的顺序依次排列,所述二维规则表生成装置生成二维规则表的方法包括:将整张表所有位置的初始值均置为 0;依次以各条规则中每个字节的数值作为索引,将相应位置的 0 置为 1;
[0024] 数据获取装置,用于获取网络通信过程中需要进行匹配的数据;
[0025] 规则匹配装置,用于将所述需要进行匹配的数据与所述二维规则表进行匹配,所述规则匹配装置进行匹配的方法包括:分别以所述数据中的每个字节的数值作为索引,获取相应 A 轴方向所有的值;将获取到的所有字节对应的值做“与”操作;
[0026] 结果判断装置,用于根据所述匹配的结果判断是否命中规则,若所述匹配的结果不为 0,则判断为命中规则,若所述匹配的结果为 0,则判断为未命中规则。
[0027] 进一步,所述二维规则表生成装置生成的二维规则表的 B 轴方向包括 13个字节的数值,每个字节的数值范围均为 0-255,且B 轴的数值还以数据类型为单位并按照数据类型的顺序依次排列,其中,源 IP 地址和目的 IP 地址均占4 个字节,源端口和目的端口均占 2 个字节,协议类型占 1 个字节;所述需要进行匹配的数据为五元组;
[0028] 所述规则匹配装置进行匹配的方法具体包括:分别以获取到的五元组中 5个数据的每个字节的数值作为索引,获取相应 A 轴方向所有的值;将获取到的13个值做“与”操作。
[0029] 进一步,所述二维规则表生成装置生成二维规则表的方法还包括:将五元组中用户不关心的数据对应位置的值均置为 1。
[0030] 进一步,结果判断装置还用于根据所述匹配的结果判断命中二维规则表中的哪条规则。
[0031] 本发明另一方面提供的一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
[0032] 对于规则匹配,使用本方法可支持精确匹配,支持带掩码匹配,支持范围匹配。本方法结构简单,计算量小,当对五元组进行匹配时,通过 13 次“与”操作,即可判断数据是否命中规则。易于在 FPGA 上或 CPU 上实现快速规则匹配。

附图说明

[0033] 本发明将通过例子并参照附图的方式说明,其中:图 1 为本发明实施例的二维规则表示意图。

具体实施方式

[0034] 本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
[0035] 本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0036] 本发明提供的一种基于查表运算的网络通信快速匹配方法,该方法包括:根据用户需求生成二维规则表,所述二维规则表的A轴表示规则条目数,
[0037] B 轴表示规则的内容,且 B 轴的数值以字节为单位并按照字节的顺序依次排列,所述生成二维规则表的方法包括:将整张表所有位置的初始值均置为 0;依次以各条规则中每个字节的数值作为索引,将相应位置的 0 置为 1;
[0038] 获取网络通信过程中需要进行匹配的数据;
[0039] 将所述需要进行匹配的数据与所述二维规则表进行匹配,所述匹配的方法包括:分别以所述数据中的每个字节的数值作为索引,获取相应 A 轴方向所有的值;将获取到的所有字节对应的值做“与”操作;
[0040] 根据所述匹配的结果判断是否命中规则,若所述匹配的结果不为 0,则判断为命中规则,若所述匹配的结果为 0,则判断为未命中规则。
[0041] 以下结合一个具体实施例进行进一步的说明。在该实施例中,以 4 字节匹配,4 条规则为例,描述快速规则匹配的实现方式。4 条规则依次为:
[0042] 第 1 条规则 192.168.10.33
[0043] 第 2 条规则 192.168.10.35
[0044] 第 3 条规则 192.168.10.37
[0045] 第 4 条规则 192.168.10.39
[0046] 制作4*1024bit大小的表。其中前一个“4”表示4条规则,“1024”表示每条规则中含4个字节,每个字节所能代表的数值范围为0-255,共256个数值,因此4*256=1024。在该实施例中,二维规则表的 X 轴表示规则条目数,
[0047] Y 轴表示规则中每个字节的数值。在其他实施例中,也可以是 Y 轴表示规则条目数,X 轴表示规则中每个字节的数值。
[0048] 在初始状态下整张表的所有位均为0。添加第1条规则时,将坐标为(1,192),(1,256+168),(1,512+10),(1,768+33)的位置均置为 1。以此类推添加第2条规则将坐标为(2,
192),(2,256+168),(2,512+10),(2,768+35)的位置均置为1;第3条规则将坐标为(3,192),(3,256+168),(3,512+10),(3,768+37)的位置均置为1;第4条规则将坐标为(4,192),(4,
256+168),(4,512+10),(4,768+39)的位置均置为1。可根据人为设置的规则由程序自行完成表项的制作。制作好的二维规则表如图1所示,由于表项较大,数值为“0”的坐标将主要以空白表示。
[0049] 在该实施例中,需要进行匹配的数据为 IP 地址。规则匹配时,分别以 IP中的四个字节的数值作为索引,获取横向所有的值。再将四个数值做“与”操作,如果结果不为零则表示命中规则,如果结果为零表示未命中规则。
[0050] 以 192.168.10.35 为例,取出的四个 16 进制数分别为 0xF,0xF,0xF,0x4。将这四个数做“与”操作后得到 0x4。不为零,即表示命中规则,且可根据结果 0x4 判断命中第二条规则。
[0051] 以 10.22.10.35 为例,取出的四个 16 进制数分别为 0x0,0x0,0xF,0x4。将这四个数做“与”操作后得到 0x0。为零,即表示未命中任何规则。
[0052] 以此类推,将 Y 轴方向扩展到 13 个字节,即可表示五元组(源 IP 地址、目的IP 地址、源端口、目的端口和协议类型)匹配,其中,源 IP 地址和目的IP 地址均占 4 个字节,源端口和目的端口均占 2 个字节,协议类型占 1 个字节。在一个实施例中,Y 轴方向的第 1-4 字节表示源 IP 地址的 4 个字节的数值,第5-8 字节表示目的 IP 地址的 4 个字节的数值,第 9-10 字节表示源端口的 2 个字节的数值,第 11-12 字节表示目的端口的 2 个字节的数值,第 13 字节表示协议类型的 1 个字节的数值。规则匹配时,分别以五元组中 5 个数据的每个字节的数值作为索引,获取横向所有的值;将获取到的 13 个值做“与”操作。在一些实施例中,用户可能只需要对五元组中的部分数据进行监控,此时可根据用户需求将二维规则表中用户不关心的数据对应位置的值均置为 1,使得在不改变二维规则表结构的基础上满足用户的不同需求。
[0053] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM, Random Access Memory)、磁盘或光盘等。
[0054] 本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中[0055] 披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。