CN101170563A - 一种匹配报文规则的方法和装置 - Google Patents

一种匹配报文规则的方法和装置 Download PDF

Info

Publication number
CN101170563A
CN101170563A CN 200710178449 CN200710178449A CN101170563A CN 101170563 A CN101170563 A CN 101170563A CN 200710178449 CN200710178449 CN 200710178449 CN 200710178449 A CN200710178449 A CN 200710178449A CN 101170563 A CN101170563 A CN 101170563A
Authority
CN
China
Prior art keywords
storage list
message rule
message
number range
piece
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.)
Pending
Application number
CN 200710178449
Other languages
English (en)
Inventor
常利民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN 200710178449 priority Critical patent/CN101170563A/zh
Publication of CN101170563A publication Critical patent/CN101170563A/zh
Priority to PCT/CN2008/071624 priority patent/WO2009070994A1/zh
Priority to US12/345,834 priority patent/US20090141716A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种匹配报文规则的方法。在该方法中,建立多级存储表;当接收到报文后,在第一级存储表的数值索引中查找报文中的五元组的数值,利用与查找到的数值索引对应的数值范围编号查找下一级存储表,直至倒数第二级存储表,利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在最后一级存储表的组合索引中查找该组合值,并获取与查找到的组合值对应的报文规则号;将获取的报文规则号对应的报文规则作为匹配到的报文规则。本发明还公开了一种匹配报文规则的装置,包括原始报文规则表保存单元、多级存储表建立单元和报文匹配执行单元。本发明能够提高匹配报文规则的速度。

Description

一种匹配报文规则的方法和装置
技术领域
本发明涉及网络通信技术,特别是涉及一种匹配报文规则的方法和装置。
背景技术
在网络中,经常需要对特定的报文进行特定的处理,这样,则需要在网络设备上配置报文规则,在报文规则中定义出报文特性信息与处理动作的对应关系。当网络设备接收到报文后,根据报文携带的特性信息匹配报文规则,根据匹配到的报文规则对报文进行对应的处理。
目前,在定义报文规则时,所使用的报文特性信息通常为报文的五元组,包括源IP地址、目的IP地址、源端口号、目的端口号和协议类型。表1示出了现有技术中存储报文规则的方式,其中,IP地址’/’中,“/”后的数字表示掩码位数,比如,规则1目的IP地址2.2.2.0/24中的24,表示有24位掩码位数,即只比较24位,剩余位数不比较。
规则号 源IP地址 目的IP地址 协议类型 源端口号 目的端口号 处理动作
1 1.1.1.1/32 2.2.2.0/24 任意(0-255) 任意(0-65535) 任意(0-65535) 通过
2 1.1.1.0/24 2.2.2.0/24 6 任意(0-65535) 80 通过
3 任意(0.0.0.0/0) 2.2.2.1/32 6 任意(0-65535) 80 通过
4 任意(0.0.0.0/0) 任意(0.0.0.0/0) 任意(0-255) 任意(0-65535) 任意(0-65535) 不通过
表1
利用表1所示的报文规则表,在现有技术中,网络设备在接收到报文后,则从报文中提取五元组,然后遍历表1所示的所有报文规则,将所提取的五元组与每一个报文规则中的五元组进行匹配,当匹配成功后,根据匹配成功的报文规则中定义的处理动作对报文进行处理,比如处理动作为通过时则进行相应地转发,处理动作为不通过时则丢弃报文。其中,匹配成功是指从报文中提取的五元组属于报文规则中定义的五元组的范围之内。比如,报文1五元组为1.1.1.1,2.2.2.1,6,1024,23,符合规则1,允许通过;如报文2五元组为1.1.1.2,2.2.2.1,6,1024,80,不符合规则1,符合规则2,允许通过;如报文3五元组为3.1.1.2,2.2.2.1,6,1024,80,不符合规则1-2,符合规则3,允许通过;如报文4五元组为3.1.1.2,2.2.2.1,6,1024,23,不符合规则1-3,符合规则4,不允许通过。
由以上描述可以看出,现有技术在执行匹配报文规则的处理时,需要按照从头至尾的顺序,对每一条报文规则进行逐一匹配,直到匹配成功。这样,当网络中报文规则数量众多时,很可能需要花费较长的时间来匹配大量的报文规则,才能最终匹配成功,从而大大降低了匹配报文规则的速度,降低了设备的处理性能。
另外,在现有技术中,由于是对所有报文规则进行依次遍历匹配,因此,在对携带一种五元组的报文进行报文规则的匹配过程中,可能只需要匹配少量的报文规则就可以匹配成功,而对携带另一种五元组的报文进行报文规则的匹配过程中,却需要匹配大量的报文规则才能匹配成功,从而使得网络设备对不同报文的处理时间差异较大,造成了网络的抖动和不稳定。比如,当网络设备对不同报文处理时间相差较大时,接收该网络设备发出报文的其他设备则无法确定合适的等待接收报文的时间,不利于网络性能的稳定。
发明内容
本发明的主要目的在于提供一种匹配报文规则的方法和装置,以便于提高匹配报文规则的速度。
为了达到上述目的,本发明的技术方案是这样实现的:
一种匹配报文规则的方法,该方法包括:
建立多级存储表,其中,除最后一级存储表之外的其他级存储表中记录数值索引和数值范围编号的对应关系,最后一级存储表中记录数值范围编号形成的组合索引与报文规则号的对应关系;
当接收到报文后,在第一级存储表的数值索引中查找报文中的五元组的数值,利用与查找到的数值索引对应的数值范围编号查找下一级存储表,直至倒数第二级存储表,利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在最后一级存储表的组合索引中查找该组合值,并获取与查找到的组合值对应的报文规则号;
将获取的报文规则号对应的报文规则作为匹配到的报文规则。
一种匹配报文规则的装置,该装置包括:
多级存储表建立单元,用于建立并保存多级存储表,其中,除最后一级存储表之外的其他级存储表中记录数值索引和数值范围编号的对应关系,最后一级存储表中记录数值范围编号形成的组合索引与报文规则号的对应关系;
报文匹配执行单元,用于在接收到报文后,在多级存储表建立单元保存的第一级存储表的数值索引中查找报文中的五元组的数值,利用与查找到的数值索引对应的数值范围编号查找多级存储表建立单元保存的下一级存储表,直至倒数第二级存储表,利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在多级存储表建立单元保存的最后一级存储表的组合索引中查找该组合值,并获取与查找到的组合值对应的报文规则号;将获取的报文规则号对应的报文规则作为匹配到的报文规则。
由此可见,本发明具有以下优点:
1、在本发明中,根据原始的报文规则表建立了多级存储表,每一级存储表中只有索引与编号或报文规则号的对应关系,这样,当网络设备接收到报文后,只需查找该多级存储表,而无需遍历查找原始的报文规则表,在报文规则表中报文规则数量众多的情况下,查找多级存储表能够大大减少匹配到报文规则的时间,从而大大提高了匹配报文规则的速度,提高了设备的处理性能。
2、在本发明中,对于任意一个报文进行报文规则匹配时,匹配的次数只取决于所建立的多级存储表,由于多级存储表是固定的,因此,对于不同的报文进行匹配报文规则的次数是完全相等的。比如,建立7个第一级存储表和1个第二级存储表之后,对于所有报文均需要进行8次匹配操作,匹配的次数完全相等。这样,使得网络设备对不同报文的处理时间差异不大,避免了现有技术中网络的抖动和不稳定,从而有利于网络进行各种QOS处理。比如,由于网络设备对所有报文进行匹配报文规则的时间相差不多,因此,可以在接收该网络设备发出报文的其他设备上确定固定且合适的等待接收报文的时间,从而提高了网络的性能。
附图说明
图1是在本发明实施例1中实现匹配报文规则的流程图。
图2是在本发明实施例2中实现匹配报文规则的流程图。
图3是在本发明一个实施例中实现匹配报文规则的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
本发明提出了一种匹配报文规则的方法。在该方法中,建立多级存储表,其中,除最后一级存储表之外的其他级存储表中记录数值索引和数值范围编号的对应关系,最后一级存储表中记录数值范围编号形成的组合索引与报文规则号的对应关系;当接收到报文后,在第一级存储表的数值索引中查找报文中的五元组的数值,利用与查找到的数值索引对应的数值范围编号查找下一级存储表,直至倒数第二级存储表,利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在最后一级存储表的组合索引中查找该组合值,并获取与查找到的组合值对应的报文规则号;将查找到的报文规则号对应的报文规则作为匹配到的报文规则。
在本发明中,所建立的多级存储表可以是二级存储表或者是三级及以上的存储表。
图1是在本发明实施例1中实现匹配报文规则的流程图。参见图1,在本发明一个较佳实施例中,首先以利用表1所示的原始报文规则表建立二级存储表为例,实现匹配报文规则的过程具体包括以下步骤:
步骤101:对于原始报文规则表中的每一条报文规则,将其五元组中的每一个元素划分为指定位的块,得到第一级报文规则表。
这里,由于五元组包括五个元素:源IP地址、目的IP地址、源端口号、目的端口号和协议类型。其中,源IP地址和目的IP地址均为32位;源端口号和目的端口号均为16位;协议类型为8位,因此,在本步骤中,一种较佳的处理方式为:在对每一条报文规则的五元组划分块时,将源IP地址划分为16位的两个块,将目的IP地址划分为16位的两个块,将源端口号划分为16位的一个块,将目的端口号划分为16位的一个块,对协议类型划分一个8位的块,总共7块。这样,表1所示的原始报文规则表经过本步骤的处理后则可以得到如下表2所示的第一级报文规则表。
规则号 源IP地址高16位 源IP地址低16位 目的IP地址高16位 目的IP地址低16位 源端口号 目的端口号 协议类型 处理动作
1  1.1/16  1.1/16  2.2/16  2.0/8 任意(0-65535) 任意(0-65535) 任意(0-255) 通过
2  1.1/16  1.0/8  2.2/16  2.0/8 任意(0-65535) 80 6 通过
3  0.0/0  0.0/0  2.2/16  2.1/16 任意(0-65535) 80 6 通过
4  0.0/0  0.0/0  0.0/0  0.0/0 任意(0-65535) 任意(0-65535) 任意(0-255) 不通过
表2第一级报文规则表
当然,在本步骤中,将每一条报文规则中的五元组划分为如表2所示的第一级报文规则表中的7个块,只是一种较佳的实现方式。在实际的业务实现中,也可以生成表2所示形式之外的其他第一级报文规则表,也就是说,可以将五元组划分为其他位的多个块,比如,在划分块时,将源IP地址、目的IP地址、源端口号和目的端口号分别划分为8位的四个块,并对协议类型划分一个8位的块,生成总共13块的第一级报文规则表。
在以下过程中,以将每一条报文规则中的五元组划分为如表2所示的第一级报文规则表中的7个块为例进行说明。
步骤102:将第一级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立数值范围、数值范围编号和所属规则的对应关系表。
一,对于所有报文规则对应的五元组中的元素源IP地址。
由于在步骤101中,每一条报文规则五元组中的元素源IP地址均划分为源IP地址高16位和源IP地址低16位,共两类块,因此,在本步骤102中,由于是针对第一级报文规则表中同一类的所有块分割数值范围,因此,不仅需要将所有报文规则中源IP地址高16位对应的指定位的块分割为相互不重复的数值范围,而且需要将所有报文规则中源IP地址低16位对应的指定位的块分割为相互不重复的数值范围。
首先、针对第一级报文规则表中的一类块-源IP地址高16位。
在第一级报文规则表中,报文规则1至报文规则4中源IP地址高16位分别为1.1/16,1.1/16,0.0/0,0.0/0(其中,符号“/”后的数字为掩码位数)。
(1)对报文规则1至报文规则4中源IP地址高1 6位分别进行1 6进制转换处理。在进行16进制转换处理后可以分别得到0x0101,0x0101,0x0000-0xffff,0x0000-0xffff。(2)根据第一级报文规则表中每个源IP地址高16位的数值范围,将上述转换处理后的16进制数分割为相互不重复的16进制数值范围0x0000-0x0100,0x0101,0x0102-0xffff。(3)建立数值范围、数值范围编号和所属规则的对应关系表。其中,对于数值范围0x0000-0x0100,由于该数值范围属于报文规则3和4中源IP地址高16位0.0/0和0.0/0表示的范围内,因此,其所属的规则为报文规则3和4;对于数值范围0x0101,由于该数值范围分别属于报文规则1、2、3和4中源IP地址高16位表示的范围内,因此,其所属的规则为报文规则1、2、3和4;对于数值范围0x0102-0xffff,由于该数值范围分别属于报文规则3和4中源IP地址高16位表示的范围内,因此,其所属的规则为报文规则3和4。这样,针对第一级报文规则表中的源IP地址高16位,所建立的数值范围、数值范围编号和所属规则的对应关系表可以参见如下表3所示。
    数值范围 数值范围编号     所属规则
    0x0000-0x0100     0     3,4
    0x0101     1     1,2,3,4
    0x0102-0xffff     0     3,4
表3源IP地址高16位的对应关系表
参见表3,由于数值范围0x0000-0x0100和0x0102-0xffff对应的报文规则相同,均为报文规则3和4,因此,为该两个数值范围定义相同的数值范围编号。
其次、针对第一级报文规则表中的一类块-源IP地址低16位。
在第一级报文规则表中,报文规则1至报文规则4中源IP地址低16位分别为1.1/16,1.0/8,0.0/0,0.0/0(其中,符号“/”后的数字为掩码位数)。
(1)对报文规则1至报文规则4中源IP地址低16位分别进行16进制转换处理。在进行16进制转换处理后,可以得到0x0101,0x0100-0x01ff,0x0000-0xffff,0x0000-0xffff。(2)根据第一级报文规则表中每个源IP地址低16位的数值范围,将上述转换处理后的16进制数分割为相互不重复的16进制数值范围0x0000-0x00ff、0x01000、0x0101、0x0102-0x01ff和0x0200-0xffff。(3)建立数值范围、数值范围编号和所属规则的对应关系表。其中,对于数值范围0x0000-0x00ff,由于该数值范围属于报文规则3和4中源IP地址低16位0.0/0和0.0/0表示的范围内,因此,其所属的规则为报文规则3和4;对于数值范围0x0100,由于该数值范围属于报文规则2、3和4中源IP地址低16位表示的范围内,因此,其所属的规则为报文规则2、3和4;对于数值范围0x0101,由于该数值范围分别属于报文规则1、2、3和4中源IP地址低16位表示的范围内,因此,其所属的规则为报文规则1、2、3和4;对于数值范围0x0102-0x01ff,由于该数值范围分别属于报文规则2、3和4中源IP地址低16位表示的范围内,因此,其所属的规则为报文规则2、3和4;对于数值范围0x0200-0xffff,由于该数值范围分别属于报文规则3和4中源IP地址低16位表示的范围内,因此,其所属的规则为报文规则3和4。这样,针对第一级报文规则表中的源IP地址低16位,所建立的数值范围、数值范围编号和所属规则的对应关系表可以参见如下表4所示。
数值范围 数值范围编号 所属规则
0x0000-0x00ff  0  3,4
0x0100  1  2,3,4
0x0101  2  1,2,3,4
0x0102-0x01ff  1  2,3,4
0x0200-0xffff  0  3,4
表4源IP地址低16位的对应关系表
参见表4,由于数值范围0x0000-0x00ff和0x0200-0xffff对应的报文规则相同,均为报文规则3和4,因此,为该两个数值范围定义相同的数值范围编号0;由于数值范围0x0100和0x0102-0x01ff对应的报文规则相同,均为报文规则2,3和4,因此,为该两个数值范围定义相同的数值范围编号1。
至此,则针对第一级报文规则表中源IP地址的高16位对应的一类块和低16位对应的另一类块分别建立了数值范围、数值范围编号和所属规则的对应关系表。
二,对于所有报文规则对应的五元组中的元素目的IP地址。
利用上述对源IP地址高16位和低16位相同的处理过程,可以得到,在将第一级报文规则表中报文规则1至报文规则4中同一类的块~目的IP地址高16位,分别进行16进制转换处理、将转换处理后的16进制数分割为相互不重复的16进制数值范围、以及建立数值范围、数值范围编号和所属规则的对应关系表后,该对应关系表可以如下表5所示。
数值范围 数值范围编号 所属规则
 0x0000-0x0201  0  4
 0x0202  1  1,2,3,4
 0x0203-0xffff  0  4
表5目的IP地址高16位的对应关系表
同理,在对第一级报文规则表中报文规则1至报文规则4中同一类的块~目的IP地址低16位,分别进行16进制转换处理、将转换处理后的16进制数分割为相互不重复的16进制数值范围、以及建立数值范围、数值范围编号和所属规则的对应关系表后,该对应关系表可以如下表6所示。
数值范围 数值范围编号 所属规则
0x0000-0x01ff  0  4
0x0200  1  1,2,4
0x0201  2  1,2,3,4
0x0202-0x02ff  3  1,2,4
0x0300-0xffff  0  4
表6目的IP地址低16位的对应关系表
三,对于所有报文规则对应的五元组中的元素源端口号。
由于第一级报文规则表中每一条报文规则中源端口号只有一类16位的块,因此,利用上述对源IP地址高16位和低16位相同的处理过程,可以得到,在将第一级报文规则表中报文规则1至报文规则4中源端口号分别进行16进制转换处理、将转换处理后的16进制数分割为相互不重复的16进制数值范围、以及建立数值范围、数值范围编号和所属规则的对应关系表后,该对应关系表可以如下表7所示。
数值范围 数值范围 所属规则
编号
0x0000-0xffff  0  1,2,3,4
表7源端口号的对应关系表
四,对于所有报文规则对应的五元组中的元素目的端口号。
由于在第一级报文规则表中,每一条报文规则中目的端口号只有一类16位的块,因此,利用上述对源IP地址高16位和低16位相同的处理过程,可以得到,在将报文规则1至报文规则4中目的端口号分别进行16进制转换处理、将转换处理后的16进制数分割为相互不重复的16进制数值范围、以及建立数值范围、数值范围编号和所属规则的对应关系表后,该对应关系表可以如下表8所示。
数值范围 数值范围编号 所属规则
0x0000-0x004f  0  1,4
0x0050  1  1,2,3,4
0x0051-0xffff  0  1,4
表8目的端口号的对应关系表
五,对于所有报文规则对应的五元组中的元素协议类型。
由于在第一级报文规则表中,每一条报文规则中协议类型只有一类8位的块,因此,利用上述对源IP地址高16位和低16位相类似的处理过程,可以得到,将报文规则1至报文规则4中协议类型分别进行的是8进制的转换处理、将转换处理后的8进制数分割为相互不重复的8进制数值范围、以及建立数值范围、数值范围编号和所属规则的对应关系表后,该对应关系表可以如下表9所示。
数值范围 数值范围编号 所属规则
0x00-0x05  0  1,4
0x06  1  1,2,3,4
0x07-0xff  0  1,4
表9协议类型的对应关系表
步骤103:根据第一级报文规则表中同一类的所有块分别建立的数值范围、数值范围编号和所属规则的对应关系表,分别设置与第一级报文规则表中每一类块对应的第一级存储表。
第一级存储表的格式可以设计为数值索引和其对应的数值范围编号。
本步骤中,设置与所有报文规则五元组中每一类块对应的第一级存储表的过程为:将第一级报文规则表中,同一类的所有块对应进制的最小数到该同一类的所有块对应的最大数的数值范围内的每一个数值依次作为第一级存储表中的各个数值索引,根据该同一类的所有块的对应关系表中每一个数值范围对应的数值范围编号,确定第一级存储表中每一个数值索引对应的数值范围编号。
下面则以具体的例子来说明本步骤的实现过程。
由于在第一级报文规则表中,所有源IP地址高16位属于同一类的块,其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表3所示,因此,根据该对应关系表设置出的第一级存储表可以参见如下表10。
Figure A20071017844900181
表10源IP地址高16位的第一级存储表
这里,参见表3和表10,对于源IP地址高16位,由于在表3所示的对应关系表中为16进制数值范围,因此,在表10中数值索引从16进制的最小数0x0000一直到16进制的最大数0xffff,并且,对于每一个数值索引,根据表3中每一个数值范围与数值范围编号的对应关系,依次在表10所示的第一级存储表中填写与每一个数值索引对应的数值范围编号,比如,在表3中,数值范围0x0000-0x0100对应的数值范围编号为0,因此,在表10中,从0x0000到0x0100的每一个数值索引对应的数值范围编号均为0,再如,在表3中,数值范围0x0101对应的数值范围编号为1,因此,在表10中,数值索引0x0101对应的数值范围编号为1。
同理,对于第一级报文规则表中所有源IP地址低16位,其属于同一类的块,由于其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表4所示,因此,根据该对应关系表设置出的第一级存储表可以参见如下表11。
Figure A20071017844900191
表11源IP地址低16位的第一级存储表
同理,对于第一级报文规则表中所有目的IP地址高16位,其属于同一类的块,由于其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表5所示,因此,根据该对应关系表设置出的第一级存储表可以参见如下表12。
Figure A20071017844900192
表12目的IP地址高16位的第一级存储表
同理,对于第一级报文规则表中所有目的IP地址低16位,其属于同一类的块,由于其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表6所示,因此,根据该对应关系表设置出的第一级存储表可以参见如下表13。
Figure A20071017844900201
表13目的IP地址低16位的第一级存储表
同理,对于第一级报文规则表中所有的源端口号,其属于同一类的块,由于其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表7所示,因此,根据该对应关系表设置出的第一级存储表可以参见如下表14。
Figure A20071017844900202
表14源端口号的第一级存储表
同理,对于第一级报文规则表中所有的目的端口号,其属于同一类的块,由于其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表8所示,因此,根据该对应关系表设置出的第一级存储表可以参见如下表15。
Figure A20071017844900203
表15目的端口号的第一级存储表
同理,对于第一级报文规则表中所有的协议类型,其属于同一类的块,由于其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表9所示,因此,根据该对应关系表设置出的第一级存储表可以参见如下表16。
Figure A20071017844900212
表16协议类型的第一级存储表
步骤104:根据第一级报文规则表和为第一级报文规则表中同一类的所有块分别设置的第一级存储表,生成第二级报文规则表。
这里,生成第二级报文规则表的过程为:根据第一级报文规则表中每一个块的数值范围,将该数值范围替换为该类块所对应第一级存储表中该数值范围内每一个数值索引对应的数值范围编号。
参见表2和表10至表16,可以得到第二级报文规则表如下表17所示。
规则号 源IP地址高16位 源IP地址低16位 目的IP地址高16位 目的IP地址低16位 协议类型 源端口号 目的端口号 动作
1  1  2  1  1,2,3  0,1  0  0,1 通过
2  1  1,2  1  1,2,3  1  0  1 通过
3  0,1  0,1,2  1  2  1  0  1 通过
4  0,1  0,1,2  0,1  0,1,2,3  0,1  0  0,1 不通过
表17第二级报文规则表
这里,以表17中报文规则1中每一个块的替换过程为例,说明表17第二级报文规则表的得到过程。
首先,参见表2所示的第一级报文规则表,在报文规则1中,源IP地址高16位是一个块,原为1.1/16,即数值范围为0x0101,根据该数值范围0x0101查找表10所示的源IP地址高16位的第一级存储表,可以得到,报文规则1源IP地址高16位的数值范围对应的数值范围编号为1,因此,在表17所示的第二级报文规则表中,在报文规则1的源IP地址高16位处写入该查找到的数值范围编号1。
参见表2所示的第一级报文规则表,在报文规则1中,源IP地址低16位是一个块,原为1.1/16,即数值范围为0x0101,根据该数值范围0x0101查找表11所示的源IP地址低16位的第一级存储表,可以得到,报文规则1源IP地址低16位的数值范围对应的数值范围编号为2,因此,在表17所示的第二级报文规则表中,在报文规则1的源IP地址低16位处写入该查找到的数值范围编号2。
参见表2所示的第一级报文规则表,在报文规则1中,目的IP地址高16位是一个块,原为2.2/16,即数值范围为0x0202,根据该数值范围0x0202查找表12所示的目的IP地址高16位的第一级存储表,可以得到,报文规则1目的IP地址高16位的数值范围对应的数值范围编号为1,因此,在表17所示的第二级报文规则表中,在报文规则1的目的IP地址高16位处写入该查找到的数值范围编号1。
参见表2所示的第一级报文规则表,在报文规则1中,目的IP地址低16位是一个块,原为2.0/8,即数值范围为0x0200-0x02ff,根据该数值范围查找表13所示的目的IP地址低16位的第一级存储表,可以得到,报文规则1目的IP地址低16位的数值范围包括的所有数值索引对应的数值范围编号包括1、2和3,因此,在表17所示的第二级报文规则表中,在报文规则1的目的IP地址低16位处写入该查找到的数值范围编号1、2和3。
参见表2所示的第一级报文规则表,在报文规则1中,协议类型是一个块,数值范围为0x00~0xff,根据该数值范围查找表16所示的协议类型的第一级存储表,可以得到,报文规则1协议类型的数值范围包括的所有数值索引对应的数值范围编号包括0和1,因此,在表17所示的第二级报文规则表中,在报文规则1的协议类型处写入该查找到的数值范围编号0和1。
参见表2所示的第一级报文规则表,在报文规则1中,源端口号是一个块,数值范围为0x0000~0xffff,根据该数值范围查找表14所示的源端口号的第一级存储表,可以得到,报文规则1源端口号的数值范围包括的所有数值索引对应的数值范围编号仅包括0,因此,在表17所示的第二级报文规则表中,在报文规则1的源端口号处写入该查找到的数值范围编号0。
参见表2所示的第一级报文规则表,在报文规则1中,目的端口号是一个块,数值范围为0x0000~0xffff,根据该数值范围查找表15所示的目的端口号的第一级存储表,可以得到,报文规则1目的端口号的数值范围包括的所有数值索引对应的数值范围编号包括0和1,因此,在表17所示的第二级报文规则表中,在报文规则1的目的端口号处写入该查找到的数值范围编号0和1。
步骤105:根据第二级报文规则表,确定每一条报文规则中各个块的数值范围编号形成的组合,利用组合和该组合所对应的报文规则号生成第二级存储表。
第二级存储表的格式可以设计为组合索引及其对应的报文规则号。
在本步骤中,生成第二级存储表的过程包括:根据第二级报文规则表中块的个数,确定组合的位数,将该位数组合中从最小组合数到块的数值范围编号形成的最大组合数范围内的每一个组合值作为第二级存储表中的各个组合索引,将第二级报文规则表中每一条报文规则的各个块的数值范围编号形成的各个组合值对应的报文规则的编号,作为第二级存储表中组合索引对应的报文规则号,得到第二级存储表。
利用表17所示的第二级报文规则表生成的第二级存储表可以参见如下表18所示。
表18第二级存储表
参见表17和表18,在表17中,由于将报文规则中每一个五元组划分了7块,因此,每一条报文规则中7个块的数值范围编号形成的组合是一个7位数字的组合。该7位数字的组合的最小组合值为0000000,块的数值范围编号形成的最大组合数为1213101,这样,在表18中,组合索引值从0000000~1213101。比如,对于表18中的第一个组合索引值0000000,参见表17,可以得到报文规则4中第1到第7个块,即源IP地址高16位、源IP地址低16位、目的IP地址高16位、目的IP地址低16位、协议类型、源端口号和目的端口号,分别取该7个块的第一个数值范围编号0,则可以得到表18中第一个组合索引值0000000,因此,可以确定表18中组合索引值0000000对应的报文规则号为4。再如,对于表18中的组合索引值0012101,参见表17,分别取报文规则3的7个块的第一个数值范围编号,则可以得到组合索引值0012101,因此,可以确定表18中组合索引值0012101对应的报文规则号为3。
可以得到,在本步骤中,形成第二级存储表中组合索引的顺序是:源IP地址高16位、源IP地址低16位、目的IP地址高16位、目的IP地址低16位、源端口号、目的端口号和协议类型。
需要说明的是,在本步骤中,如果表18中的任意一个组合值对应2个或以上的报文规则,那么,在表18的第二级存储表中该组合对应的报文规则号的位置上只记录优先级最高的报文规则的号(优先级最高的报文规则号通常为编号最小的报文规则)。比如,对于报文规则1的7个块,依次取前3个块的数值范围编号1、2、1,取第4个块和第5块的第2个数值范围编号2、1,取第6个块的数值范围编号0,取第7个块的第2个数值范围编号2,这样,则得到了表18中的组合值1212101,也就是说,组合值1212101对应报文规则号1;而对报文规则3和4进行分析可知,其7个块的数值范围编号均可以组合出组合值1212101,也就是说,组合值1212101也对应报文规则号3和4;根据一个报文只能匹配一个报文规则的原则,表18中只记录报文规则号最小(即优先级最高)的报文规则号1。
至此,则利用表1所示的原始的报文规则表,在网络设备中生成了表10至表17所示的7个第一级存储表和表18所示的1个第二级存储表。在后续匹配报文规则的过程中,则可以直接利用7个第一级存储表和1个第二级存储表来进行匹配,具体实现包括如下步骤106至107。
步骤106:当网络设备接收到一个报文时,根据第一级报文规则表中划分的块,依次从该报文中提取对应的块,依次在每一类块对应的第一级存储表中查找与该块的数值对应的数值范围编号。
由于第一级报文规则表中包括7个块,因此本步骤的实现过程具体包括:
106A、从接收到的报文中提取第1个块即源IP地址高16位,在源IP地址高16位对应的第一级存储表中查找与其对应的数值范围编号。
比如,从报文中提取的源IP地址高16位为0x0101,从表10所示的源IP地址高16位对应的第一级存储表中,查找到与0x0101对应的数值范围编号为1。
160B、从接收到的报文中提取第2个块即源IP地址低16位,在源IP地址低16位对应的第一级存储表中查找与其对应的数值范围编号。
比如,从报文中提取的源IP地址低16位为0x0101,从表11所示的源IP地址低16位对应的第一级存储表中,查找到与0x0101对应的数值范围编号为2。
160C、从接收到的报文中提取第3个块即目的IP地址高16位,在目的IP地址高16位对应的第一级存储表中查找与其对应的数值范围编号。
比如,从报文中提取的目的IP地址高16位仍为0x0101,从表12所示的目的IP地址高16位对应的第一级存储表中,查找到与0x0101对应的数值范围编号为0。
160D、从接收到的报文中提取第4个块即目的IP地址低16位,在目的IP地址低16位对应的第一级存储表中查找与其对应的数值范围编号。
比如,从报文中提取的目的IP地址低16位为0x0202,从表13所示的目的IP地址低16位对应的第一级存储表中,查找到与0x0202对应的数值范围编号为3。
160E、从接收到的报文中提取第5个块即源端口号,在源端口号对应的第一级存储表中查找与其对应的数值范围编号。
比如,从报文中提取的源端口号为0x0200,从表14所示的源端口号对应的第一级存储表中,查找到与0x0200对应的数值范围编号为0。
160F、从接收到的报文中提取第6个块即目的端口号,在目的端口号对应的第一级存储表中查找与其对应的数值范围编号。
比如,从报文中提取的目的端口号为0x0050,从表15所示的目的端口号对应的第一级存储表中,查找到与0x0050对应的数值范围编号为1。
160G、从接收到的报文中提取第7个块即协议类型,在协议类型对应的第一级存储表中查找与其对应的数值范围编号。
比如,从报文中提取的协议类型为0x05,从表16所示的协议类型对应的第一级存储表中,查找到与0x05对应的数值范围编号为0。
需要说明的是,在步骤103中,每一个第一级存储表都是从其对应进制的最小数0开始直到块的数值范围对应的最大数。在实际的业务实现中,从该最小数到该最大数中间的一些数值索引可能根本没有对应的数值范围编号,对于此种情况,可以不必在第一级存储表中写出该数值索引,但是,较佳地,也可以写出该数值索引,并在其对应的数值范围编号处写入空值。这样处理的目的在于,在本步骤106中,在根据一个块的数值比如源IP地址高16位0x0101,在源IP地址高16位对应的第一级存储表中进行查找0x0101时,可以不必采用遍历的方式,根据数值索引存储地址依次递增的原则方便地查找到对应的数值索引,如根据0x0101与0x0000之间的差值,直接在源IP地址高16位对应的第一级存储表的首地址开始加上该差值的存储位置上直接查找到0x0101,从而极大地提高了查找速度。
步骤107:按照形成第二级存储表中组合索引的顺序,将步骤106中依次查找到的数值范围编号进行顺序组合,形成一个组合值,在第二级存储表的组合索引中查找该组合值,根据查找到的组合值对应的报文规则号,确定匹配到的报文规则。
这里,形成第二级存储表中组合索引的顺序是:源IP地址高16位、源IP地址低16位、目的IP地址高16位、目的IP地址低16位、源端口号、目的端口号和协议类型。按照该顺序,则应该将上述步骤160A至步骤160G依次查找到的数值范围编号依次进行编号,得到组合值1203010。在表18所示的第二级存储表的组合索引中查找组合值1203010,可以得到与其对应的报文规则号,比如为4。那么,则可以确定当前接收到的报文匹配到报文规则4。
步骤108:根据匹配到的报文规则中处理动作对报文进行对应的处理。
这里,由于已经根据表18的第二级存储表,确定报文匹配到报文规则4,那么,则可以根据报文规则4的处理动作“不通过”,执行对应的丢弃报文的处理。
在上述图1所示过程中,本发明实施例利用二级存储表实现匹配报文规则。在本发明的实际业务实现中,也可以利用三级及其以上的存储表来实现匹配报文规则。相对于二级存储表,由于二级存储表只需考虑第一级和最后一级的建立过程,因此,在建立三级及其以上的存储表时,其第一级和最后一级的建立过程与上述建立第一和第二级存储表的建立过程完全相同,所不同的是,需要特别考虑中间级的存储表的建立过程。
图2是在本发明实施例2中实现匹配报文规则的流程图。参见图2,在本发明另一个较佳实施例中,以利用报文规则中的五元组建立三级存储表为例,实现匹配报文规则的过程具体包括以下步骤:
步骤201~步骤204的所有描述与步骤101~步骤104的所有描述相同。
至此,则建立了所有报文规则五元组中每一类块对应的7个第一级存储表,如表10至表16,并生成了第二级报文规则表如表17。
步骤205:将第二级报文规则表中,不同类的各个块及其数值范围编号分别进行组合,得到组合后的第二级报文规则表。
在本流程中,由于是要建立三级存储表,因此,从第一级到第三级,存储表的个数应该依次递减。由于在上述步骤201至步骤204中每一条报文规则的五元组划分为7个块,因此建立了7个第一级存储表,为了使得第二级存储表的个数少于7个,因此,需要将每一条报文规则的五元组减少为小于7个块,这样则需要执行本步骤中对不同类的块及其数值范围编号进行组合。
根据表17所示的第二级报文规则表得到的第三级报文规则表可以参见如下表19所示。
规则号 源IP地址(四进制) 目的IP地址(四进制) 协议端口(四进制) 动作
1  12  11,12,13  000,001,100,101 通过
2  11,12  11,12,13  101 通过
3  00,01,0210,11,12  12  101 通过
4  00,01,0210,11,12  00,01,02,0310,11,12,13  000,001,100,101 不通过
表19组合后的第二级报文规则表
参见表17和表19,在本步骤中,在对表17所示的第二级报文规则表进行不同类块的组合时,是将表17中不同类的两个块源IP地址高16位和源IP地址低16位组合为表19中一类块源IP地址,并将表17中不同类的两个块目的IP地址高16位和目的源IP地址低16位组合为表19中一类块目的IP地址,以及将表17中不同类的三个块协议类型、源端口号和目的端口号组合为表19中的一类块协议端口。
相应地,在将不同类的块进行组合时,其数值范围编号也进行组合。比如,以表17中的报文规则1为例,其源IP地址高16位的数值范围编号1与源IP地址低16位的数值范围编号2进行组合后,则可以得到如表19中所示的组合后的数值范围编号12,其目的IP地址高16位的数值范围编号1与目的IP地址低16位的数值范围编号1、2、3进行组合后,则可以得到如表19中所示的组合后的数值范围编号11,12,13。
步骤206:根据组合后的中间级的报文规则表中同一类的每个块的数值范围,将组合后的第二级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立该数值范围、数值范围编号和所属规则的对应关系表。
本步骤的具体实现方式与上述步骤102中建立对应关系表的实现方式类似。
参见表19所示的组合后的第二级报文规则表,总共有三类块,包括源IP地址、目的IP地址和协议端口。
首先,对于组合后的第二级报文规则表中的同一类块-源IP地址。
由于在表19所示的组合后的第二级报文规则表中,所有数值范围编号均为四进制,因此,针对所有源IP地址建立的数值范围、数值范围编号和所属规则的对应关系表可以参见如下表20。
数值范围 数值范围编号 所属规则
00-02  0  3,4
10  0  3,4
11  1  2,3,4
12  2  1,2,3,4
表20源IP地址的对应关系表
参见表20,由于数值范围00-02和10对应的报文规则相同,均为报文规则3和4,因此,为该两个数值范围定义相同的数值范围编号。
对于组合后的第二级报文规则表中的同一类块-目的IP地址。
同理,由于在表19中,所有数值范围编号均为四进制,因此,针对目的IP地址建立的数值范围、数值范围编号和所属规则的对应关系表可以参见如下表21。
数值范围 数值范围编号 所属规则
00-03  0  4
10  0  4
11  1  1,2,4
  12   2   1,2,3,4
  13   1   1,2,4
表21目的IP地址的对应关系表
对于组合后的第二级报文规则表中的同一类块-协议端口。
同理,由于在表19中,所有数值范围编号均为四进制,因此,针对协议端口建立的数值范围、数值范围编号和所属规则的对应关系表可以参见如下表22。
数值范围 数值范围编号 所属规则
000-001  0  1,4
100  0  1,4
101  1  1,2,3,4
表22协议端口的对应关系表
步骤207:根据组合后的第二级报文规则表中同一类的所有块分别建立的数值范围、数值范围编号和所属规则的对应关系表,分别设置与组合后的第二级报文规则表中每一类块对应的第二级存储表。
本步骤的具体实现方式与上述步骤103中建立第一级存储表的实现方式类似。
本步骤中,第二级存储表的格式可以设计为数值索引和其对应的数值范围编号。
本步骤中,设置与组合后的第二级报文规则表中每一类块对应的第二级存储表的过程为:将组合后的第二级报文规则表中,同一类的所有块对应进制的最小数到该同一类的所有块对应的最大数的数值范围内的每一个数值依次作为第一级存储表中的各个数值索引,根据该同一类的所有块的对应关系表中每一个数值范围对应的数值范围编号,确定第二级存储表中每一个数值索引对应的数值范围编号。
下面则以具体的例子来说明本步骤的实现过程。
在表19所示的组合后的第二级报文规则表中,包括源IP地址、目的IP地址和协议端口三类块。
首先对于源IP地址,根据其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表20所示,因此,根据该对应关系表设置出的第二级存储表可以参见如下表23。
Figure A20071017844900312
表23源IP地址的第二级存储表
对于目的IP地址,根据其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表21所示,因此,根据该对应关系表设置出的第二级存储表可以参见如下表24。
Figure A20071017844900313
表24目的IP地址的第二级存储表
对于协议端口,根据其建立的数值范围、数值范围编号和所属规则的对应关系表如上述表22所示,因此,根据该对应关系表设置出的第二级存储表可以参见如下表25。
Figure A20071017844900314
Figure A20071017844900321
表25协议端口的第二级存储表
由此可见,在当前图2流程中,第二级存储表是中间级存储表,该第二级存储表的建立方式与第一级存储表的建立方式类似,都需要对其上一级的报文规则表进行不同类的分块处理得到本级报文规则表,然后利用本级报文规则表中各类分块建立每一类块的本级存储表。只是,在建立第一级存储表时,上一级报文规则表是原始报文规则表;在建立第二级存储表时,得到本级报文规则表之后,还需要进一步得到组合后的本级报文规则表,并利用组合后的本级报文规则表来得到每一类块的本级存储表。
步骤208:根据组合后的第二级报文规则表和为该规则表中同一类的所有块分别设置的第二级存储表,生成第三级报文规则表。
这里,生成第三级报文规则表的过程为:根据组合后的第二级报文规则表中每一条报文规则的每一个块的数值范围,将该数值范围替换为该类块所对应第二级存储表中该数值范围内每一个数值索引对应的数值范围编号。
参见表19和表23至表25,可以得到第三级报文规则表如下表26所示。
规则号   源IP地址   目的IP地址   协议端口   动作
  1   2   1,2   0,1   通过
  2   1,2   1,2   1   通过
  3   0,1,2   2   1   通过
  4   0,1,2   0,1,2   0,1   不通过
表26第三级报文规则表
本步骤的处理方式与上述步骤104的处理方式类似,因此,表26的得到过程可以按照步骤104中对表17的得到过程来实现。
步骤209:根据第三级报文规则表,确定每一条报文规则中各个块的数值范围编号形成的组合,利用组合和该组合所对应的报文规则号生成第三级存储表。
第三级存储表的格式可以设计为组合索引及其对应的报文规则号。
在本步骤中,对于第三级报文规则表中的每一条报文规则,生成第三级存储表的过程包括:根据第三级报文规则表中块的个数,确定组合的位数,将该位数组合中从最小组合数到块的数值范围编号形成的最大组合数范围内的每一个组合值依次作为第三级存储表中的各个组合索引,将各个组合值对应的报文规则的编号作为组合索引对应的规则号。
利用表26所示的第三级报文规则表生成的第三存储表可以参见如下表27所示。
表27第三级存储表
本步骤的处理方式与上述步骤105的处理方式类似,因此,表27的得到过程可以按照步骤105中对表18的得到过程来实现。
可以得到,在本步骤中,形成第三级存储表中组合索引的顺序是:源IP地址、目的IP地址和协议端口。
步骤210的所有描述与步骤106的所有描述均相同。
步骤211:根据组合后的第二级报文规则表相对于第一级报文规则表的块的组合方式,将步骤210中查找到的对应编号进行组合,利用组合形成的每一个数值组合,分别在组合后的第二级报文规则表中对应块对应的第二级存储表中依次查找对应的数值范围编号。
参见表19所示的组合后的第二级报文规则表和表2所示的第一级报文规则表,可以得到,其组合方式为:将源IP地址高16位对应的块与源IP地址低16位对应的块进行组合,形成源IP地址;并将目的IP地址高16位对应的块与目的IP地址低16位对应的块进行组合,形成目的IP地址;并将协议类型对应的块、源端口号对应的块和目的端口号对应的块进行组合,形成协议端口。
因此,按照此种组合方式,需要将步骤210中根据报文中源IP地址高16查找到的数值范围编号与根据源IP地址低16查找到的数值范围编号进行组合,并在组合后的第二级报文规则表中对应块即源IP地址对应的第二级存储表中查找对应的数值范围编号,比如为1。然后,将步骤210中根据报文中目的IP地址高16查找到的数值范围编号与根据目的IP地址低16查找到的数值范围编号进行组合,并在组合后的第二级报文规则表中对应块即目的IP地址对应的第二级存储表中查找对应的数值范围编号,比如为0。然后,将步骤210中根据报文中协议类型查找到的数值范围编号、根据报文中源端口号查找到的数值范围编号以及根据报文中目的端口号查找到的数值范围编号进行组合,并在组合后的第二级报文规则表中对应块即协议端口对应的第二级存储表中查找对应的数值范围编号,比如为1。
步骤212:按照形成第三级存储表中组合索引的顺序,将步骤211中依次查找到的数值范围编号进行顺序组合,形成一个组合值,在第三级存储表的组合索引中查找该组合值,根据查找到的组合值对应的报文规则号,确定匹配到的报文规则。
这里,形成第三级存储表中组合索引的顺序是:源IP地址、目的IP地址和协议端口。按照该顺序,则应该将上述211中查找到的源IP地址、目的IP地址和协议端口分别对应的数值范围编号依次进行编号,比如,形成一个组合值101,在表27所示的第三级存储表的组合索引中可以查找到与101对应的报文规则号为4,因此,可以确定匹配到的为报文规则4。
步骤213:根据匹配到的报文规则中处理动作对报文进行对应的处理。
由此可见,在本发明的具体实施例中,根据原始的报文规则表建立了多级存储表,每一级存储表中只有索引与编号或报文规则号的对应关系,这样,当网络设备接收到报文后,只需查找该多级存储表,而无需遍历查找原始的报文规则表,在报文规则表中报文规则数量众多的情况下,查找多级存储表能够大大减少匹配到报文规则的时间,从而大大提高了匹配报文规则的速度,提高了设备的处理性能。
下面,举一个具体实例来更加清楚地体现本发明的有益效果。
以原始的报文规则表中有10条报文规则为例,由于每一条报文规则中都有五元组的五个元素,当网络设备接收到报文后,需要逐一对每一条报文规则中的五个元素进行匹配,这样进行匹配的次数为10×5=50次。而在本发明具体实施例中,如果按照上述图1所示流程的方法建立二级存储表,这样,则需要匹配7个第一级存储表和1个第二级存储表,共进行8次匹配,远远小于现有技术的匹配次数,因此,能够大大提高匹配报文规则的速度;而如果按照上述图2所示流程的方法建立三级存储表,这样,则需要匹配7个第一级存储表、3个第二级存储表和1个第二级存储表,共进行11次匹配,也远远小于现有技术的匹配次数,因此,能够大大提高匹配报文规则的速度。
相应地,本发明还提出了一种匹配报文规则的装置。图3是在本发明一个实施例中实现匹配报文规则的装置结构示意图。参见图3,该装置包括:多级存储表建立单元和报文匹配执行单元,其中,
多级存储表建立单元,用于建立并保存多级存储表,其中,除最后一级存储表之外的其他级存储表中记录数值索引和数值范围编号的对应关系,最后一级存储表中记录数值范围编号形成的组合索引与报文规则号的对应关系;
报文匹配执行单元,用于在接收到报文后,在多级存储表建立单元保存的第一级存储表的数值索引中查找报文中的五元组的数值,利用与查找到的数值索引对应的数值范围编号查找多级存储表建立单元保存的下一级存储表,直至倒数第二级存储表,利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在多级存储表建立单元保存的最后一级存储表的组合索引中查找该组合值,并获取与查找到的组合值对应的报文规则号;将获取的报文规则号对应的报文规则作为匹配到的报文规则。
该装置可以进一步包括原始报文规则表保存单元,用于保存原始报文规则表;
所述多级存储表建立单元,用于在建立第一级存储表时,对于原始报文规则表保存单元中原始报文规则表的每一条报文规则,将其五元组的每一个元素划分为指定位的块,得到第一级报文规则表,根据第一级报文规则表中同一类的每个块的数值范围,将第一级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立数值范围、数值范围编号和所属规则的对应关系表;根据建立的各个对应关系表分别设置与第一级报文规则表中每一类块对应的第一级存储表,每一类块对应的第一级存储表中均包括数值索引与数值范围编号的对应关系。
所述多级存储表建立单元,用于在将五元组的每一个元素划分为指定位的块得到第一级存储表时,首先将每一条报文规则的五元组中的源IP地址划分为源IP地址高16位和源IP地址低16位两类块,将目的IP地址划分为目的IP地址高16位和目的IP地址低16位两类块,将源端口号划分为16位的一类块,将目的端口号划分为16位的一类块,将协议类型划分为8位的一类块,得到每一条报文规则中包括7类块的第一级报文规则表。
所述多级存储表建立单元,用于建立三级或三级以上的存储表,并且在建立每一个中间级存储表时,根据上一级报文规则表中每一个块的数值范围,将该数值范围替换为该类块所对应上一级存储表中该数值范围内每一个数值索引对应的数值范围编号,生成中间级的报文规则表;将中间级报文规则表中,不同类的各个块及其数值范围编号分别进行组合,得到组合后的中间级的报文规则表;根据组合后的中间级的报文规则表中同一类的每个块的数值范围,将组合后的中间级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立该数值范围、数值范围编号和所属规则的对应关系表;根据分别建立的对应关系表,分别设置与组合后的中间级报文规则表中每一类块对应的中间级存储表,其中,每一类块对应的中间级存储表中均包括数值索引与数值范围编号的对应关系。
所述多级存储表建立单元,用于在将第二级报文规则表中不同类的各个块及其数值范围编号分别进行组合时,具体将第二级报文规则表中每一条报文规则的源IP地址高16位和源IP地址低16位及其数值范围编号进行组合,将目的IP地址高16位和目的IP地址低16位及其数值范围编号进行组合,以及将源端口号、目的端口号和协议类型及其数值范围编号进行组合。
所述多级存储表建立单元,用于在建立最后一级存储表时,根据最后得到的上一级报文规则表中每一个块的数值范围,将该数值范围替换为该类块所对应上一级存储表中该数值范围内每一个数值索引对应的数值范围编号,生成最后一级报文规则表;根据最后一级报文规则表中块的个数,确定组合的位数,将该位数组合中从最小组合数到块的数值范围编号形成的最大组合数范围内的每一个组合值作为最后一级存储表中的各个组合索引,将最后一级报文规则表中每一条报文规则的各个块的数值范围编号形成的各个组合值对应的报文规则的编号,作为最后一级存储表中组合索引对应的报文规则号,得到最后一级存储表。
所述多级存储表建立单元,用于在最后一级报文规则表中多条报文规则的各个块的数值范围编号形成的组合值相同时,将该多条报文规则中优先级最高的报文规则的编号,作为最后一级存储表中与该组合值相同的组合索引所对应的报文规则号。
所述报文匹配执行单元,用于在第一级存储表的数值索引中查找报文中的五元组的数值时,首先根据第一级报文规则表中对五元组划分的块,从报文中提取对应的块,然后依次在每一类块对应的第一级存储表的数值索引中查找与提取的块的数值对应的数值范围编号。
所述报文匹配执行单元,用于在查找每一个中间级存储表时,首先根据组合后的中间级报文规则表相对于上一级报文规则表的块的组合方式,将从上一级存储表中查找到的对应编号进行组合,然后利用组合形成的每一个数值组合,分别在组合后的中间级报文规则表中对应块对应的中间级存储表中依次查找对应的数值范围编号。
所述报文匹配执行单元,用于在利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在最后一级存储表的组合索引中查找该组合值时,首先按照形成最后一级存储表中组合索引的顺序,将从各个倒数第二级存储表中查找到的数值范围编号进行顺序组合,形成一个组合值,然后在最后一级存储表的组合索引中查找该组合值。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (20)

1.一种匹配报文规则的方法,其特征在于,该方法包括:
建立多级存储表,其中,除最后一级存储表之外的其他级存储表中记录数值索引和数值范围编号的对应关系,最后一级存储表中记录数值范围编号形成的组合索引与报文规则号的对应关系;
当接收到报文后,在第一级存储表的数值索引中查找报文中的五元组的数值,利用与查找到的数值索引对应的数值范围编号查找下一级存储表,直至倒数第二级存储表,利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在最后一级存储表的组合索引中查找该组合值,并获取与查找到的组合值对应的报文规则号;
将获取的报文规则号对应的报文规则作为匹配到的报文规则。
2.根据权利要求1所述的方法,其特征在于,建立第一级存储表的过程包括:对于原始报文规则表中的每一条报文规则,将其五元组的每一个元素划分为指定位的块,得到第一级报文规则表,根据第一级报文规则表中同一类的每个块的数值范围,将第一级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立数值范围、数值范围编号和所属规则的对应关系表;根据建立的各个对应关系表分别设置与第一级报文规则表中每一类块对应的第一级存储表,每一类块对应的第一级存储表中均包括数值索引与数值范围编号的对应关系。
3.根据权利要求2所述的方法,其特征在于,所述将其五元组的每一个元素划分为指定位的块得到第一级报文规则表的过程包括:将每一条报文规则的五元组中的源IP地址划分为源IP地址高16位和源IP地址低16位两类块,将目的IP地址划分为目的IP地址高16位和目的IP地址低16位两类块,将源端口号划分为16位的一类块,将目的端口号划分为16位的一类块,将协议类型划分为8位的一类块,得到每一条报文规则中包括7类块的第一级报文规则表。
4.根据权利要求2或3所述的方法,其特征在于,所述多级存储表为三级或三级以上的存储表;
建立每一个中间级存储表的过程包括:根据上一级报文规则表中每一个块的数值范围,将该数值范围替换为该类块所对应上一级存储表中该数值范围内每一个数值索引对应的数值范围编号,生成中间级的报文规则表;将中间级报文规则表中,不同类的各个块及其数值范围编号分别进行组合,得到组合后的中间级的报文规则表;根据组合后的中间级的报文规则表中同一类的每个块的数值范围,将组合后的中间级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立该数值范围、数值范围编号和所属规则的对应关系表;根据分别建立的对应关系表,分别设置与组合后的中间级报文规则表中每一类块对应的中间级存储表,其中,每一类块对应的中间级存储表中均包括数值索引与数值范围编号的对应关系。
5.根据权利要求4所述的方法,其特征在于,当中间级存储表为第二级存储表时,所述将中间级报文规则表中不同类的各个块及其数值范围编号分别进行组合的步骤包括:将第二级报文规则表中每一条报文规则的源IP地址高16位和源IP地址低16位及其数值范围编号进行组合,将目的IP地址高16位和目的IP地址低16位及其数值范围编号进行组合,以及将源端口号、目的端口号和协议类型及其数值范围编号进行组合。
6.根据权利要求2、3、4或5所述的方法,其特征在于,建立最后一级存储表的过程包括:根据最后得到的上一级报文规则表中每一个块的数值范围,将该数值范围替换为该类块所对应上一级存储表中该数值范围内每一个数值索引对应的数值范围编号,生成最后一级报文规则表;根据最后一级报文规则表中块的个数,确定组合的位数,将该位数组合中从最小组合数到块的数值范围编号形成的最大组合数范围内的每一个组合值作为最后一级存储表中的各个组合索引,将最后一级报文规则表中每一条报文规则的各个块的数值范围编号形成的各个组合值对应的报文规则的编号,作为最后一级存储表中组合索引对应的报文规则号,得到最后一级存储表。
7.根据权利要求6所述的方法,其特征在于,当最后一级报文规则表中多条报文规则的各个块的数值范围编号形成的组合值相同时,将该多条报文规则中优先级最高的报文规则的编号,作为最后一级存储表中与该组合值相同的组合索引所对应的报文规则号。
8.根据权利要求2至7中任意一项所述的方法,其特征在于,所述在第一级存储表的数值索引中查找报文中的五元组的数值的步骤包括:根据第一级报文规则表中对五元组划分的块,从报文中提取对应的块,依次在每一类块对应的第一级存储表的数值索引中查找与提取的块的数值对应的数值范围编号。
9.根据权利要求4、5、6或7所述的方法,其特征在于,查找每一个中间级存储表的过程包括:根据组合后的中间级报文规则表相对于上一级报文规则表的块的组合方式,将从上一级存储表中查找到的对应编号进行组合,利用组合形成的每一个数值组合,分别在组合后的中间级报文规则表中对应块对应的中间级存储表中依次查找对应的数值范围编号。
10.根据权利要求6或7所述的方法,其特征在于,所述利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在最后一级存储表的组合索引中查找该组合值的步骤包括:按照形成最后一级存储表中组合索引的顺序,将从各个倒数第二级存储表中查找到的数值范围编号进行顺序组合,形成一个组合值,在最后一级存储表的组合索引中查找该组合值。
11.一种匹配报文规则的装置,其特征在于,该装置包括:
多级存储表建立单元,用于建立并保存多级存储表,其中,除最后一级存储表之外的其他级存储表中记录数值索引和数值范围编号的对应关系,最后一级存储表中记录数值范围编号形成的组合索引与报文规则号的对应关系;
报文匹配执行单元,用于在接收到报文后,在多级存储表建立单元保存的第一级存储表的数值索引中查找报文中的五元组的数值,利用与查找到的数值索引对应的数值范围编号查找多级存储表建立单元保存的下一级存储表,直至倒数第二级存储表,利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在多级存储表建立单元保存的最后一级存储表的组合索引中查找该组合值,并获取与查找到的组合值对应的报文规则号;将获取的报文规则号对应的报文规则作为匹配到的报文规则。
12.根据权利要求11所述的装置,其特征在于,该装置进一步包括原始报文规则表保存单元,用于保存原始报文规则表;
所述多级存储表建立单元,用于在建立第一级存储表时,对于原始报文规则表保存单元中原始报文规则表的每一条报文规则,将其五元组的每一个元素划分为指定位的块,得到第一级报文规则表,根据第一级报文规则表中同一类的每个块的数值范围,将第一级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立数值范围、数值范围编号和所属规则的对应关系表;根据建立的各个对应关系表分别设置与第一级报文规则表中每一类块对应的第一级存储表,每一类块对应的第一级存储表中均包括数值索引与数值范围编号的对应关系。
13.根据权利要求12所述的装置,其特征在于,所述多级存储表建立单元,用于在将五元组的每一个元素划分为指定位的块得到第一级存储表时,首先将每一条报文规则的五元组中的源IP地址划分为源IP地址高16位和源IP地址低16位两类块,将目的IP地址划分为目的IP地址高16位和目的IP地址低16位两类块,将源端口号划分为16位的一类块,将目的端口号划分为16位的一类块,将协议类型划分为8位的一类块,得到每一条报文规则中包括7类块的第一级报文规则表。
14.根据权利要求12或13所述的装置,其特征在于,所述多级存储表建立单元,用于建立三级或三级以上的存储表,并且在建立每一个中间级存储表时,根据上一级报文规则表中每一个块的数值范围,将该数值范围替换为该类块所对应上一级存储表中该数值范围内每一个数值索引对应的数值范围编号,生成中间级的报文规则表;将中间级报文规则表中,不同类的各个块及其数值范围编号分别进行组合,得到组合后的中间级的报文规则表;根据组合后的中间级的报文规则表中同一类的每个块的数值范围,将组合后的中间级报文规则表中同一类的所有块分割为相互不重复的数值范围,然后建立该数值范围、数值范围编号和所属规则的对应关系表;根据分别建立的对应关系表,分别设置与组合后的中间级报文规则表中每一类块对应的中间级存储表,其中,每一类块对应的中间级存储表中均包括数值索引与数值范围编号的对应关系。
15.根据权利要求14所述的装置,其特征在于,所述多级存储表建立单元,用于在将第二级报文规则表中不同类的各个块及其数值范围编号分别进行组合时,具体将第二级报文规则表中每一条报文规则的源IP地址高16位和源IP地址低16位及其数值范围编号进行组合,将目的IP地址高16位和目的IP地址低16位及其数值范围编号进行组合,以及将源端口号、目的端口号和协议类型及其数值范围编号进行组合。
16.根据权利要求12、13、14或15所述的装置,其特征在于,所述多级存储表建立单元,用于在建立最后一级存储表时,根据最后得到的上一级报文规则表中每一个块的数值范围,将该数值范围替换为该类块所对应上一级存储表中该数值范围内每一个数值索引对应的数值范围编号,生成最后一级报文规则表;根据最后一级报文规则表中块的个数,确定组合的位数,将该位数组合中从最小组合数到块的数值范围编号形成的最大组合数范围内的每一个组合值作为最后一级存储表中的各个组合索引,将最后一级报文规则表中每一条报文规则的各个块的数值范围编号形成的各个组合值对应的报文规则的编号,作为最后一级存储表中组合索引对应的报文规则号,得到最后一级存储表。
17.根据权利要求16所述的装置,其特征在于,所述多级存储表建立单元,用于在最后一级报文规则表中多条报文规则的各个块的数值范围编号形成的组合值相同时,将该多条报文规则中优先级最高的报文规则的编号,作为最后一级存储表中与该组合值相同的组合索引所对应的报文规则号。
18.根据权利要求12至17中任意一项所述的装置,其特征在于,所述报文匹配执行单元,用于在第一级存储表的数值索引中查找报文中的五元组的数值时,首先根据第一级报文规则表中对五元组划分的块,从报文中提取对应的块,然后依次在每一类块对应的第一级存储表的数值索引中查找与提取的块的数值对应的数值范围编号。
19.根据权利要求14至17中任意一项所述的装置,其特征在于,所述报文匹配执行单元,用于在查找每一个中间级存储表时,首先根据组合后的中间级报文规则表相对于上一级报文规则表的块的组合方式,将从上一级存储表中查找到的对应编号进行组合,然后利用组合形成的每一个数值组合,分别在组合后的中间级报文规则表中对应块对应的中间级存储表中依次查找对应的数值范围编号。
20.根据权利要求16或17所述的装置,其特征在于,所述报文匹配执行单元,用于在利用从倒数第二级存储表中查找到的数值范围编号形成的组合值,在最后一级存储表的组合索引中查找该组合值时,首先按照形成最后一级存储表中组合索引的顺序,将从各个倒数第二级存储表中查找到的数值范围编号进行顺序组合,形成一个组合值,然后在最后一级存储表的组合索引中查找该组合值。
CN 200710178449 2007-11-30 2007-11-30 一种匹配报文规则的方法和装置 Pending CN101170563A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN 200710178449 CN101170563A (zh) 2007-11-30 2007-11-30 一种匹配报文规则的方法和装置
PCT/CN2008/071624 WO2009070994A1 (fr) 2007-11-30 2008-07-11 Procédé et dispositif d'appariement de règle de messagerie
US12/345,834 US20090141716A1 (en) 2007-11-30 2008-12-30 Method and apparatus for packet rule matching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200710178449 CN101170563A (zh) 2007-11-30 2007-11-30 一种匹配报文规则的方法和装置

Publications (1)

Publication Number Publication Date
CN101170563A true CN101170563A (zh) 2008-04-30

Family

ID=39391024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200710178449 Pending CN101170563A (zh) 2007-11-30 2007-11-30 一种匹配报文规则的方法和装置

Country Status (2)

Country Link
CN (1) CN101170563A (zh)
WO (1) WO2009070994A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634146A (zh) * 2013-11-27 2014-03-12 华为技术有限公司 一种网络数据处理方法及装置
CN104580202A (zh) * 2014-12-31 2015-04-29 曙光信息产业(北京)有限公司 报文的匹配方法和装置
CN108449445A (zh) * 2018-04-13 2018-08-24 济南浪潮高新科技投资发展有限公司 一种范围型报文匹配电路及方法
CN110191014A (zh) * 2019-05-20 2019-08-30 杭州迪普信息技术有限公司 一种规则表项的命中次数统计方法及装置
CN112380253A (zh) * 2020-11-12 2021-02-19 北京知道创宇信息技术股份有限公司 报文规则匹配方法、装置、电子设备和可读存储介质
CN112383479A (zh) * 2020-10-15 2021-02-19 国家计算机网络与信息安全管理中心 规则查询方法、装置、计算机设备和存储介质
CN112637070A (zh) * 2020-12-21 2021-04-09 杭州迪普信息技术有限公司 一种表项查找的方法和设备
CN113904798A (zh) * 2021-08-27 2022-01-07 长沙星融元数据技术有限公司 Ip报文的多元组过滤方法、系统、设备及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021159478A1 (zh) * 2020-02-14 2021-08-19 华为技术有限公司 报文保序方法和装置
CN111540361B (zh) * 2020-03-26 2023-08-18 北京搜狗科技发展有限公司 一种语音处理方法、装置和介质
CN111797098B (zh) * 2020-06-30 2024-01-19 北京经纬恒润科技股份有限公司 一种报文解析方法、装置及车载终端
CN114390118B (zh) * 2021-12-28 2023-11-07 绿盟科技集团股份有限公司 一种工控资产识别方法、装置、电子设备及存储介质
CN114363257B (zh) * 2021-12-29 2023-10-17 杭州迪普信息技术有限公司 隧道报文的五元组匹配方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970462B1 (en) * 2000-04-24 2005-11-29 Cisco Technology, Inc. Method for high speed packet classification
US7227842B1 (en) * 2001-04-24 2007-06-05 Tensilica, Inc. Fast IP packet classification with configurable processor
US7236493B1 (en) * 2002-06-13 2007-06-26 Cisco Technology, Inc. Incremental compilation for classification and filtering rules
CN1282332C (zh) * 2003-11-13 2006-10-25 中兴通讯股份有限公司 一种快速数据包过滤方法
CN100466594C (zh) * 2004-10-09 2009-03-04 华为技术有限公司 一种对报文进行分类处理的方法
CN100413285C (zh) * 2005-06-03 2008-08-20 清华大学 基于网络处理器的高速多维报文分类算法的设计和实现
CN100459574C (zh) * 2005-09-19 2009-02-04 北京大学 对网络流进行分类、状态跟踪和报文处理的装置和方法
CN100555988C (zh) * 2006-03-08 2009-10-28 中兴通讯股份有限公司 一种提高三重内容可寻址存储器报文分类查找速度的方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634146B (zh) * 2013-11-27 2017-02-22 华为技术有限公司 一种网络数据处理方法及装置
CN103634146A (zh) * 2013-11-27 2014-03-12 华为技术有限公司 一种网络数据处理方法及装置
CN104580202A (zh) * 2014-12-31 2015-04-29 曙光信息产业(北京)有限公司 报文的匹配方法和装置
CN104580202B (zh) * 2014-12-31 2018-09-07 曙光信息产业(北京)有限公司 报文的匹配方法和装置
CN108449445A (zh) * 2018-04-13 2018-08-24 济南浪潮高新科技投资发展有限公司 一种范围型报文匹配电路及方法
CN110191014A (zh) * 2019-05-20 2019-08-30 杭州迪普信息技术有限公司 一种规则表项的命中次数统计方法及装置
CN112383479B (zh) * 2020-10-15 2022-03-22 国家计算机网络与信息安全管理中心 规则查询方法、装置、计算机设备和存储介质
CN112383479A (zh) * 2020-10-15 2021-02-19 国家计算机网络与信息安全管理中心 规则查询方法、装置、计算机设备和存储介质
CN112380253A (zh) * 2020-11-12 2021-02-19 北京知道创宇信息技术股份有限公司 报文规则匹配方法、装置、电子设备和可读存储介质
CN112637070A (zh) * 2020-12-21 2021-04-09 杭州迪普信息技术有限公司 一种表项查找的方法和设备
CN112637070B (zh) * 2020-12-21 2022-07-01 杭州迪普信息技术有限公司 一种表项查找的方法和设备
CN113904798A (zh) * 2021-08-27 2022-01-07 长沙星融元数据技术有限公司 Ip报文的多元组过滤方法、系统、设备及存储介质
CN113904798B (zh) * 2021-08-27 2024-03-22 长沙星融元数据技术有限公司 Ip报文的多元组过滤方法、系统、设备及存储介质

Also Published As

Publication number Publication date
WO2009070994A1 (fr) 2009-06-11

Similar Documents

Publication Publication Date Title
CN101170563A (zh) 一种匹配报文规则的方法和装置
US10496680B2 (en) High-performance bloom filter array
US8856203B1 (en) System and method for algorithmic TCAM packet classification
US9438505B1 (en) System and method for increasing capacity in router forwarding tables
US7599364B2 (en) Configurable network connection address forming hardware
CN102035738B (zh) 一种获取路由信息的方法及装置
CN108696492B (zh) Ip报文的处理方法与装置
CN104579940A (zh) 查找访问控制列表的方法及装置
US11343360B2 (en) Packet aggregation and disaggregation method
CN100546201C (zh) 基于对霍夫曼编码树分段的霍夫曼编码和解码方法和设备
CN102387082A (zh) 基于流分类的分组流量控制系统及控制方法
CN111988231A (zh) 一种掩码五元组规则匹配的方法及装置
CN104009921A (zh) 基于任意字段匹配的数据报文转发方法
CN108881036B (zh) 一种基于查表运算的网络通信快速匹配方法及设备
US20160142316A1 (en) Apparatus and method for scalable and flexible table search in a network switch
CN112235436A (zh) 网络地址转换规则匹配方法及设备
KR20150146449A (ko) 패킷 컨텐츠로부터 해시 입력을 형성하는 방법 및 장치
CN103581023A (zh) 实现最长掩码匹配的方法及装置
CN103095718B (zh) 一种基于Hadoop的应用层协议特征提取方法
US11916763B2 (en) Traffic monitoring device, and traffic monitoring method
CN105515995A (zh) 报文处理方法、流表生成方法及装置
CN112087389B (zh) 一种报文匹配查表方法、系统、存储介质和终端
US8130763B2 (en) Data item interval identifier lookup method and system
CN105634999A (zh) 一种介质访问控制地址的老化方法及装置
CN116471344B (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080430