数据包过滤规则匹配方法及装置的制作方法

文档序号:6601315阅读:568来源:国知局
专利名称:数据包过滤规则匹配方法及装置的制作方法
技术领域
本发明涉及网络技术领域,尤指一种用于网络报文过滤的数据包过滤规则匹配方
法及装置。
背景技术
数据包过滤技术是防火墙提供网络安全保障的关键技术。通常,防火墙根据预先 定义好的过滤规则集中包含的数据包过滤规则匹配审查通过防火墙的每个数据包,以确定 所通过的数据包是否与过滤规则集中的某一条规则相匹配。数据包过滤规则一般是基于数据包的报头信息制订的。报头信息中包括互联 网协议(Internet Protocol, IP)源地址、IP目标地址、传输协议(例如传输控制协议 (Transmission Control Protocol, TCP)、用户数据报协议(UserDatagram Protocol, UDP)、因特网控制报文协议(Internet Control MessageProtocol, I CMP)等等)、TCP/UDP 目标端口、ICMP消息类型等。一个数据包与某条规则匹配的充要条件是该数据包的报头信 息与该条规则匹配。当需要进行数据包的过滤匹配时,从数据包过滤规则集的第一条数据包过滤规则 开始,按照存储顺序逐一进行匹配,除非与某条规则匹配成功,否则包过滤过程只有在匹配 完所有数据包过滤规则后,才能结束过滤匹配过程。当数据包与一个数据包过滤规则相匹 配,防火墙就要执行该条过滤规则指定的相关的动作。这些动作将指示是否拒绝将数据包 发送到某个特定的接口,或是指示是否接受并发送数据包到一个特定接口。如果一个数据 包没有和数据包过滤规则集中的任何一条数据包过滤规则匹配成功,则系统会按照默认的 处理规则对这个数据包进行发送或丢弃处理。例如,数据包过滤规则集中存储了如下的数据包过滤规则firewall (config) #access_list 4 permit 10. 9. 8. 1firewall (config) #access_list 4 permit 10. 9. 8. 2firewall (config) #access_list 4 permit 10. 9. 8. 3firewall (config) #access_list 4 permit 10. 9. 8. 4firewall (config) #access_list 4 permit 10. 9. 8. 5firewall (config) #access_list 4 permit 10. 9. 8. 9firewall (config) #access-list 4 deny 10. 9. 8. 0255. 255. 255. 248firewall (config)#access_list 4 permit anyfirewall (config) #int f0/0firewall(config_if)#ip access-group 4in上述过滤规则针对防火墙的快速以太网接口 0设置,其中,peimit表示快速以太 网接口 0允许接收所指示的IP地址的数据报文(数据包),如10. 9. 8. 1,10. 9. 8. 2,……, 10. 9. 8. 9等地址的数据报文是允许接收到;deny表示快速以太网接口 0禁止接收所指示的 IP地址的数据报文,例如满足10. 9. 8. 0,255. 255. 255. 248这一地址范围的报文。默认规则是接收没有被任何规则匹配的IP数据报文。通常,为便于顺序匹配,防火墙包过滤规则集的物理存储依照用户定义数据包过 滤规则的先后顺序逐条顺序储存。例如,根据上述定义的数据包过滤规则集,防火墙每收到 一个数据报文需要从第一条数据包过滤规则开始逐条进行匹配,直到命中某条数据包过滤 规则,或匹配完数据包过滤规则集中的全部规则。因此,除了上述规则集中明确指定允许或禁止的几个IP地址外,来自其他IP地址 的数据报文,都必须在执行完8次规则匹配操作后,才能确定可以按照默认的规则进行处 理。上述仅仅有8条过滤规则的情况已经使得匹配过程非常麻烦,当数据包过滤规则集的 规模不断增大,涉及到的IP地址不断增加的情况下,逐条顺序匹配,直到匹配成功或匹配 完规则集中的所有规则为止的匹配过滤做法,必将导致匹配过滤的整个过程的数据处理量 很大,数据处理的延时很长。大量的匹配处理占用了防火墙的硬件资源,从而会导致防火墙 的数据包吞吐量下降,影响数据报文转发的速度和效率,尤其是对一些实时性要求比较高 的业务的数据包处理将是非常不利的,这已经成为防火墙数据包转发处理的性能瓶颈。

发明内容
本发明实施例提供一种数据包过滤规则匹配方法及装置,用以解决现有技术中数 据包过滤规则匹配时存在的匹配遍历数据量大、时延长,导致防火墙吞吐性能下降的问题。本发明包括如下内容一种数据包过滤规则匹配方法,包括根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引 算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引值所链接索引到的数 据包过滤规则的散列索引关系;当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索引关系时 使用的散列索引算法,计算所述发送地址的散列索引值;通过查询预先建立的散列索引关系,确定所述发送地址的散列索引值所链接索引 到的数据包过滤规则,判断接收到的数据包的发送地址是否与确定出的数据包过滤规则中 的地址信息相匹配。一种数据包过滤规则匹配装置,包括索引建立模块,用于根据过滤规则集中的数据包过滤规则所涉及到的地址信息, 采用选定的散列索引算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引 值所链接索引到的数据包过滤规则的散列索引关系;计算模块,用于当接收到数据包时,确定接收到的数据包的发送地址,采用建立散 列索引关系时使用的散列索引算法,计算所述发送地址的散列索引值;查询判断模块,用于通过查询预先建立的散列索引关系,确定所述发送地址的散 列索引值所链接索引到的数据包过滤规则,判断接收到的数据包的发送地址是否与确定出 的数据包过滤规则中的地址信息相匹配。一种网络设备,包括上述的数据包过滤规则匹配装置。本发明有益效果如下本发明实施例提供的数据包过滤规则匹配方法及装置,通过根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引算法,确定各数据包过滤规 则的散列索引值,建立表明每个散列索引值所链接索引到的数据包过滤规则的散列索引关 系;当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索引关系时使用的 散列索引算法,计算所述发送地址的散列索引值;通过查询预先建立的散列索引关系,确定 所述发送地址的散列索引值所链接索引到的数据包过滤规则,判断接收到的数据包是否与 确定出的数据包过滤规则相匹配。该方法通过散列索引的方式,根据散列索引值索引到对 应的数据包过滤规则进行匹配,减少了数据包过滤匹配的次数,缩短了数据包过滤规则匹 配的平均遍历耗时,提高了匹配的速度和效率,提高了系统数据处理的性能。


图1为本发明实施例一中数据包过滤规则匹配方法的流程图;图2为本发明实施例二中数据包过滤规则匹配方法的流程图;图3为本发明实施例中数据包过滤规则匹配装置的结构示意图。
具体实施例方式针对上述现有技术的数据包过滤规则匹配时存在的匹配遍历数据量大、时延长, 导致防火墙吞吐性能下降的问题,本申请实施例提供一种数据包过滤规则匹配方法,预先 建立数据包过滤规则与散列索引值的散列索引关系,当需要进行过滤规则匹配时,根据接 收到的数据包的散列索引值,查找散列索引关系,方便快捷的获取到与数据包的散列索引 值对应的数据包过滤规则,从而减少了便利匹配的次数,提高了匹配的速度和效率。在建立散列索引关系时,可以通过散列索引算法的选择,使得每个数据包过滤规 则的散列索引值均不相同,也可以通过散列索引算法的选择允许某几条数据包过滤规则的 散列索引值相同。下面通过两个具体的实施例进行详细描述。在下面具体描述时,以建立 散列索引表为例进行说明,当然建立的散列索引关系不限于散列索引表的形式。实施例一本申请提供的数据包过滤规则匹配方法,其流程如图1所示,执行步骤如下步骤S101 对数据包过滤规则集进行散列处理,生成散列索引表。根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引 算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引值所链接索引到的数 据包过滤规则的散列索引表。上述确定各数据包过滤规则的散列索引值,通过选定的散列索引算法对数据包过 滤规则的地址信息中选定的部分或全部二进制码进行散列索引计算得到。其中,建立散列索引表的过程包括预先建立散列索引数组,并设定各散列索引值在的散列索引数组中的索引位置。根据计算得到的数据包过滤规则的散列索引值,将各散列索引值所链接索引到的 数据包过滤规则的标识,存储在散列索引数组中相应的索引位置处。其中,数据包过滤规则 的标识可以过滤规则的编号、序号等。步骤S102 当接收到数据包时,确定接收到的数据包的发送地址。网络中的防火墙或其他用于数据包传输和交换的设备,接收到用户终端或其他网
6络设备发送的数据包,需要对数据包进行匹配过滤时,则对接收到的数据包进行解析,获取 接收到的数据包中包含的发送端的地址信息(即发送地址)。步骤S103 采用建立散列索引表时使用的散列索引算法,计算上述发送地址的散 列索引值。获取建立散列索引表时所使用的散列索引算法,采用获取的散列索引算法对发送 地址中选定的部分或全部二进制码进行散列索引计算,得到发送地址的散列索引值。步骤S104 通过查询预先建立的散列索引表,确定数据包发送地址的散列索引值 所链接索引到的数据包过滤规则。具体通过查询预先建立的散列索引表,确定发送地址的散列索引值在散列索引数 组中的索引位置,从确定出的索引位置处读取存储的数据包过滤规则的标识,根据读取的 数据包过滤规则标识获取对应的数据包过滤规则。步骤S105 判断接收到的数据包是否与确定出的数据包过滤规则相匹配。一般是判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包 含的地址信息中的指定地址。如果是,则说明接收到的数据包的发送地址与获取到的数据 包过滤规则相匹配,执行步骤S106 ;否则,执行步骤S107。步骤S106 根据获取到的数据包过滤规则对接收到的数据包进行处理。例如根据过滤规则中规定的允许或禁止该地址的数据包通过,转发或者丢弃接 收到的数据包。步骤S107 采用默认的数据包过滤规则对接收到的数据包进行处理。即在接收到的数据包的发送地址与获取到的数据包过滤规则不相匹配,采用默认 的处理规则,对接收到的数据包进行处理。

例1 一个数据包过滤规则集中包含如下过滤规则
firewall (config) #access_list 4permit 10.9.8.1 firewall (config) #access_list 4 permit 10.9.8.2 firewall (config) #access_list 4 permit 10.9.8.3 firewall (config) #access_list 4 permit 10.9.8.4 firewall (config) #access_list 4 permit 10.9.8.5 firewall (config) #access_list 4 permit 10.9.8.6 firewall (config) #access_list 4 permit 10.9.8.7 firewall(config)#access_list 4 deny 10.9.8.0
首先,选定一个散列索引算法。即选定一个HASH函数,使得上述举例中的所有针 对单个IP地址的数据包过滤规则的IP地址经该HASH函数进行散列运算后,得到的结果在 {0,1,2,……,7}这个集合中足够分散。例如选择这样一个简单的HASH函数IP&0x7,即 取IP地址最后3位。当然也可以选用其他的散列索引算法。使用HASH函数IP&0x7进行 散列运算,实际上是只对地址信息中的部分二进制码(后三位)进行散列运算得到散列索 引值。在实际应用中也可以选择对地址信息中的全部二进制码进行散列运算的散列索引算 法计算散列索引值。 然后,建立一个散列索引数组,该散列索引数组为下标范围{0,1,2,……,7}的数 组HASH_TB [8],通过该数组为上述的数据包过滤规则集建立链接索引。
则第一条规则(规则1)中涉及到的IP地址10. 9. 8. 1,经HASH计算后得到的散列 索引值为1,第二条规则(规则2)中涉及到的IP地址10. 9. 8. 2,经HASH计算后得到的散 列索引值为2,依此类推,得到每一条过滤规则的散列索引值。且散列索引值0-7分别与散列索引数组中下标为0-7的索引位置对应,则由于散 列索引值0索引链接到第8条规则,散列索引值1链接到第1条规则,……,因此,在散列 索引数组中散列索引值为0-7的索引位置上分别存储这8条规则的规则序号(即数据包过 滤规则的标识),得到散列索引数组中各元素的值为{8,1,2,3,4,5,6,7},散列索引数组中 的各元素为规则序号(数据包过滤规则标识)。假设采用下列数据结构设计存储数据包过滤规则struct {uint32IP ;//IP 或网段,全 1 表示 anyuint32mask ;// 掩码,全 1 表示 anyboolean permit_or_deny ;//规则动作为接收或禁止uint32 next_index ; //后续规则序列号,0表示无后续}rule ;则上述例1中的数据包过滤规则经散列索引后,存储为包含上述散列索引数组与 如下存储结构块的散列索引表。其中,数据包过滤规则的存储仍然按照用户定义先后顺序 存储,各条规则存储结构块的内容如下序号1,{IP 10.9. ^L 1,J卷码:0, permit,后续0}
序号2{IP 10.9. ^卷码:0, permit,后续0}
序号3{IP 10.9. ^I 3,J卷码:0, permit,后续0}
序号4{IP :10.9. ^卷码:0, permit,后续0}
序号5{IP :10.9. ^卷码:0, permit,后续0}
序号6{IP :10.9. ^16,f卷码:0, permit,后续0}
序号7{IP :10.9. ^I 7,f卷码:0, permit,后续0}
序号8{IP :10.9. ^10,f卷码:0,deny,后续0}9建立完散列索引表之后,当接收到待处理的数据包时,根据数据包发送端的IP地 址,也采用HASH函数IP&0x7,计算数据包发送地址的散列索引值。例如,接收到来自IP地址10. 9. 8. 2的数据包时,计算得到散列索引值为2,在散列 索引数组中的散列索引值为2的索引位置(即下标为2的位置)处读取到规则序号2,获取 到第二条数据包过滤规则,确定接收到的数据包的IP地址是否与该规则匹配。如上述接收 到的是来自IP地址10. 9. 8. 2的数据包,则是匹配的,则根据规则2,允许该数据包通过;如 果接收到散列索引值为2的其他IP地址的数据包,则是不匹配的,采用默认的规则处理接 收到的数据包。又例如,接收到来自IP地址10. 9. 8. 0的数据包时,计算得到散列索引值为0,在散 列索引数组中的散列索引值为0的索引位置(即下标为0的位置)处读取到规则序号8,获 取到第八条数据包过滤规则,确定接收到的数据包的IP地址是否与该规则匹配。如上述接 收到的是来自IP地址10.9.8.0的数据包,则是匹配的,则根据规则8,不允许该数据包通 过;如果接收到散列索引值为0的其他IP地址的数据包,则是不匹配的,采用默认的规则处理接收到的数据包。上述实现过程中,每个数据包只需要根据散列索引值进行一次匹配,即可完成过 滤匹配的整个过程了,相对于现有技术,匹配操作的次数大大减少,速度和效率明显提高。 同时,提高了防火墙等网络设备的系统性能。实施例二 本申请提供的数据包过滤规则匹配方法,针对散列索引值相同数据包过滤规则建 立索引链,通过建立的索引链进行数据包过滤规则规则匹配,其流程如图2所示,执行步骤 如下步骤S201 对数据包过滤规则集进行散列处理,生成散列索引表。根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引 算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引值所链接索引到的数 据包过滤规则的散列索引表。其中,建立散列索引表的过程包括预先建立散列索引数组,并设定各散列索引值在的散列索引数组中的索引位置。 根据计算得到的数据包过滤规则的散列索引值,将各散列索引值所链接索引到的数据包过 滤规则的标识,存储在散列索引数组中相应的索引位置处。当两个或两个以上的数据包过滤规则的散列索引值相同时,将散列索引值相同的 数据包过滤规则存储为一个索引链;其中,索引链中的数据包过滤规则中包含用于指引所 链接到的下一条数据包过滤规则的链接标识。且在建立散列索引表时,将索引链中包含的 第一个数据包过滤规则的标识,存储在散列索引数组中相应的索引位置处。步骤S202 当接收到数据包时,确定接收到的数据包的发送地址。同步骤S102,此处不再赘述。步骤S203 采用建立散列索引表时使用的散列索引算法,计算上述发送地址的散 列索引值。同步骤S103,此处不再赘述。步骤S204 通过查询预先建立的散列索引表,确定所述发送地址的散列索引值所 链接索引到的数据包过滤规则。同步骤S104,此处不再赘述。步骤S205 判断接收到的数据包是否与确定出的数据包过滤规则相匹配。一般是判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包 含的地址信息中的指定地址,如果是,则接收到的数据包的发送地址与获取到的数据包过 滤规则相匹配,执行步骤S210 ;否则确定不相匹配,执行步骤S206。步骤S206 判断获取的数据包过滤规则是否是一个索引链中的数据包过滤规则。即判断存储的数据包过滤规则中是包含链接下一条数据包过滤规则的链接标识。 如果是,则确定是一个索引链中的数据包过滤规则,则执行步骤S207 ;否则,确定不是一个 索引链中的数据包过滤规则,则执行步骤S211。步骤S207 根据获取到的数据包过滤规则中的链接标识,依次获取索引链中包含 的后续数据包过滤规则。一般是根据索引链中的第一条数据包过滤规则,获取到后续的第二条数据包过滤 规则;再根据第二条获取第三条;依此类推。
9
较佳的,每一条后续规则的获取在前一条规则比较匹配完成后执行,即当索引链 中的数据包过滤规则大于两条时,循环执行步骤S207、步骤S208和步骤S209,直至获取到 索引链中的最后一个数据包过滤规则。步骤S208 判断接收到的数据包是否与获取到的后续数据包过滤规则相匹配。一般也是判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中 包含的地址信息中的指定地址,如果是,则接收到的数据包的地址信息与获取到的后续数 据包过滤规则相匹配,执行步骤S210 ;否则不相匹配,执行步骤S209。步骤S209 判断获取的到数据包过滤规则是否是索引链中的最后一个数据包过 滤规则。当获取到的后续数据包过滤规则中未携带链接标识,或者链接标识为无后续的标 识信息时,确定获取到的后续数据包过滤规则为索引链中的最后一个数据包过滤规则。若是,返回继续执行步骤S211 ;否则,执行步骤S207。步骤S210 根据获取到的数据包过滤规则对接收到的数据包进行处理。例如根据过滤规则中规定的允许或禁止该地址的数据包通过,转发或者丢弃接 收到的数据包。步骤S211 采用默认的数据包过滤规则对接收到的数据包进行处理。即在接收到的数据包的发送地址与获取到的数据包过滤规则不相匹配,采用默认 的处理规则,对接收到的数据包进行处理。例如,沿用现有技术中所例举的针对以太网口 0的難〔据包过滤规则集。
firewal(config)#access_list L1 permit 10. 9. 8.i
firewal(config)#access_list L1 permit 10. 9. 8.2
firewal(config)#access_list L1 permit 10. 9. 8.3
firewal(config)#access_list L1 permit 10. 9. 8.4
firewal(config)#access_list L1 permit 10. 9. 8.5
firewal(config)#access_list L1 permit 10. 9. 8.9
firewal(config)#access_list L1 deny 10. 9. 8. 0255. 255. 255. 248
firewal(config)#access_listt permit any
firewal(config)#int f0/0
firewal(config-if)#ip access--group 4in
首先,选定一个散列索引算法。即选定一个HASH函数,使得上述举例中的所有针
对单个IP地址的数据包过滤规则(除规则7和8外的所有过滤规则)的IP地址经该HASH 函数进行散列运算后,得到的结果在{0,1,2,……,7}这个集合中足够分散。例如选择这 样一个简单的HASH函数IP&0x7,即取IP地址最后3位。然后,建立一个散列索引数组,该散列索引数组为下标范围{0,1,2,……,7}的数 组HASH_TB [8],通过该数组为上述的数据包过滤规则集建立链接索引。针对每一条规则,按照规则的存储顺序依次建立索引的过程如下则第一条规则(规则1)中涉及到的IP地址10. 9. 8. 1,经HASH计算后得到的散列 索引值为1,第二条规则(规则2)中涉及到的IP地址10. 9. 8. 2,经HASH计算后得到的散 列索引值为2,依此类推,前五条规则的散列索引值分别为1-5,此时,前五条规则均为出现索引值相同的情况,在散列索引数组中散列索引值为1-5的索引位置上分别存储这五条规 则的规则序号,即存储数据包过滤规则的标识,其他散列索引值的索引位置暂且置零,此时 得到的散列索引数组为{0,1,2,3,4,5,0,0}。此时暂且认为这五条规则均无后续,即不在索 引链中,此时,规则1-5的存储结构块的链接索引(nextjndex)先都置为0。然后,对第六条规则进行散列索引处理。第六条规则中涉及到的IP地址为 10. 9. 8. 9,根据上述HASH算法进行散列运算后得到的散列索引值为1。这与第一条规则的 散列索引值相同。即超过一个对象的HASH运算结果相同,冲突在同一个散列点上,形成了 散列冲突。此时,即采用把冲突点由对象的索引扩展成一条链表,由表头索引,该链表上的 所有对象的HASH运算结果都相同。即建立索引链。此时,规则1和规则6形成一条索引链。 规则1作为索引链中的第一条数据包过滤规则,其中包含链接标识——规则6的索引序号 6。即规则1的存储结构块的链接索引(nextjndex)都改变为6,规则6的存储结构块的链 接索引(nextjndex)置0,这样规则1和规则6就组成一条单向链表,表头对象(第一条数 据包过滤规则)的序号存储在散列冲突点HASH_TB[1]。针对第七条规则,由于其包含的是一个网段,IP地址范围{10. 9. 8. 1,10. 9. 8. 2, 10. 9. 8. 3,10. 9. 8. 4,10. 9. 8. 5,10. 9. 8. 6},除去与之前已经处理过的数据包过滤规则的重 叠部分,规则7相当于衍生出一条规则access-list 4denyl0. 9. 8. 6 ;对这条规则进行散 列索引处理,经HASH计算后得到的散列索引值为6,在散列索引数组中散列索引值为6的索 引位置上存储这条规则的规则序号7,此时得到的散列索引数组为{0,1,2,3,4,5,7,0}。此 时,规则7的存储结构块的链接索引(nextjndex)先都置为0。针对第8条规则,由于该规则是通配规则,所有没与前七条规则匹配的IP均与这 条规则匹配,因此,规则8对应的IP是网络中的所有IP,因此,规则8衍生出的若干条规则, 将会成为前面每一条规则的散列冲突点。前面每一条规则均与规则8形成索引链。即规则 2-5,7均单独与规则8形成索引链,规则1、6、8共同形成索引链。此时,规则2-7的存储结 构块的链接索引(nextjndex)都改变为8,规则8的存储结构块的链接索引(nextjndex) 置0。最终得到散列索引数组{8,1,2,3,4,5,7,8},在实际应用中,规则8也可以是一个地址范围,而不包含所有IP。假设仍采用实施例一中的数据结构设计存储数据包过滤规则,上述数据包过滤规 则集经散列索引后,存储为包含上述散列索引数组与如下存储结构块的散列索引表。其中, 数据包过滤规则的存储仍然按照用户定义先后顺序存储,各条规则存储结构块的内容如

序号1,{IP 10.9.8. 1,掩码:0,permit,后续6};
序号2{IP 10.9.8. 2,掩码0,permit,后续8};
序号3{IP 10.9.8. 3,掩码0,permit,后续8};
序号4{IP :10.9.8.4,掩码0,permit,后续8};
序号5{IP :10.9.8. 5,掩码0,permit,后续8};
序号6{IP :10.9.8. 9,掩码0,permit,后续8};
序号7{IP :10.9.8. 0,掩码255. 255. 255. 248,deny,后续8}
序号8{IP :any,^■码any, permit,后续0};
建立完散列索引表之后,当接收到待处理的数据包时,根据数据包发送端的IP地 址,也采用HASH函数IP&0x7,计算数据包发送地址的散列索引值。例如,接收到来自IP地址10. 9. 8. 2的数据包时,计算得到散列索引值为2,在散列 索引数组中的散列索引值为2的索引位置(即下标为2的位置)处读取到规则序号2,获取 到第二条数据包过滤规则,确定接收到的数据包的IP地址是否与该规则匹配。如上述接收 到的是来自IP地址10. 9. 8. 2的数据包,则是匹配的,则根据规则2,允许该数据包通过;如 果接收到散列索引值为2的其他IP地址的数据包,则不相匹配。由于散列索引值2的索引 链的下一条规则为第8条规则,则获取到第八条数据包过滤规则,确定接收到的数据包的 IP地址是否与该规则匹配。由于规则8包含所有IP,因此按规则8处理接收到的数据包。又例如,接收到来自IP地址10. 9. 8. 1的数据包时,计算得到散列索引值为1,在散 列索引数组中的散列索引值为1的索引位置(即下标为1的位置)处读取到规则序号1,获 取到第一条数据包过滤规则,确定接收到的数据包的IP地址是否与该规则匹配。如上述接 收到的是来自IP地址10. 9. 8. 1的数据包,则是匹配的,则根据规则1,允许该数据包通过; 如果接收到散列索引值为1的其他IP地址的数据包,例如来自IP地址10. 9. 8. 9的数据包, 则是不匹配的。由于规则1中包含的链接标识为6,因此获取第六条数据包过滤规则,确定 接收到的数据包的IP地址是否与该规则匹配。如上述接收到的是来自IP地址10. 9. 8. 9 的数据包,则是匹配的,则根据规则6,允许该数据包通过;如果接收到散列索引值为1的其 他IP地址的数据包,则是不匹配的。继续链接到第8条规则,第8条规则为该索引链上的 最后一条规则,且为通配规则,因此,按照第8条规则处理接收到的数据包。在上述举例中,假设防火墙接收到来自IP地址10. 1. 1. 1的数据包,对该地址的 HASH运算结果为1。数组元素HASH_TB[1]存放索引链表{规则1_>规则6_>规则8}这 一索引链的表头对象“规则1”的序号。遍历该规则索引链表,最终来自10. 1. 1. 1的报文与 规则8的IP及掩码匹配,规则动作为“接收”,则防火墙接收该报文。假设防火墙收到来自10. 9. 8. 6的报文,对该地址的HASH运算结果为6。数组元 素HASH_TB[6]存放索引链表{规则7->规则8}这一索引链的表头对象“规则7”的序 号。遍历该规则索引链表,最终来自10. 9. 8. 6的报文与规则7的IP和掩码匹配,规则动作 为“拒绝”,则防火墙丢弃该报文。上述实现过程中,对于来自任意IP的每个数据包最多只需要根据散列索引值进 行三次匹配,即可完成过滤匹配的整个过程了,相对于现有技术,最多需要遍历全部8条规 则,匹配操作的次数也大大减少,速度和效率明显提高。同时,提高了防火墙等网络设备的 系统性能。根据本申请实施例提供的上述数据包过滤规则匹配方法,可以构建一种数据包过 滤规则匹配装置,该装置可以设置在网络防火墙或其他用于数据报文传输、交换的网络设 备中。如图3所示,该装置包括索引建立模块10、计算模块20和查询判断模块30。索引建立模块10,用于根据过滤规则集中的数据包过滤规则所涉及到的地址信 息,采用选定的散列索引算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索 弓丨值所链接索引到的数据包过滤规则的散列索引关系。较佳的,上述索引建立模块10,具体包括数组建立单元101和索引建立单元102。数组建立单元101,用于预先建立散列索引数组,并设定各散列索引值在的散列索引数组中的索引位置。索引建立单元102,用于根据计算得到的数据包过滤规则的散列索引值,将各散 列索引值所链接索引到的数据包过滤规则的标识,存储在散列索引数组中相应的索引位置 处。较佳的,上述索引建立模块10,还包括链表建立单元103,用于当两个或两个以上的数据包过滤规则的散列索引值相同 时,将散列索引值相同的数据包过滤规则存储为一个索引链;其中,索引链中的数据包过滤 规则中包含用于指引所链接到的下一条数据包过滤规则的链接标识。索引建立单元102,还用于在建立散列索引关系时,将索引链中包含的第一个数据 包过滤规则的标识,存储在散列索引数组中相应的索引位置处。计算模块20,用于当接收到数据包时,确定接收到的数据包的发送地址,采用建立 散列索引关系时使用的散列索引算法,计算数据包的发送地址的散列索引值。查询判断模块30,用于通过查询预先建立的散列索引关系,确定数据包的发送地 址的散列索引值所链接索引到的数据包过滤规则,判断接收到的数据包是否与确定出的数 据包过滤规则相匹配。较佳的,上述查询判断模块30,具体包括确定读取单元301和判断匹配单元302。确定读取单元301,用于确定数据包的发送地址的散列索引值在散列索引数组中 的索引位置,从确定出的索引位置处读取存储的数据包过滤规则的标识。判断匹配单元302,用于根据读取的数据包过滤规则标识获取对应的数据包过滤 规则,判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包含的地址信 息中的指定地址,如果是,则接收到的数据包的发送地址与获取到的数据包过滤规则相匹 配,否则不相匹配。较佳的,上述查询判断模块30,还包括链表判断单元303和链表匹配单元304。链表判断单元303,用于判断获取的数据包过滤规则是否是一个索引链中的数据 包过滤规则。链表匹配单元304,用于当链表判断单元判断为是时,根据获取到的数据包过滤规 则中的链接标识,依次获取索引链中包含的后续数据包过滤规则;判断接收到的数据包的 发送地址是否属于获取到的后续数据包过滤规则中包含的地址信息中的指定地址,则接收 到的数据包的地址信息与获取到的后续数据包过滤规则相匹配,否则不相匹配。根据本申请实施例提供的上述数据包过滤规则匹配方法及装置,通过建立散列索 引关系,在接收到数据包时,根据数据包发送地址的散列索引值查找到对应的一条或一组 数据包过滤规则并进行匹配,使得与数据包匹配的规则数量减少,从而减少了数据包过滤 匹配时需要遍历的规则数量,达到减少平均匹配次数的目的。该方式有效的缩短了数据包 过滤规则的平均遍历匹配耗时,提高匹配的速度和效率,尽可能地消除防火墙包过滤规则 匹配造成的性能瓶颈。在实际应用过程中,如果内存空间允许的话,散列索引数组的下标范围最好尽量 扩大,并选取散列结果在实践中已经过充分证明范围足够分散的HASH函数。散列表数组下 标范围越大,HASH函数的结果越分散,散列表上的冲突点越少,遍历匹配过程中平均需要执 行的匹配操作就越少,对系统性能的优化就越明显。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种数据包过滤规则匹配方法,其特征在于,包括根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引值所链接索引到的数据包过滤规则的散列索引关系;当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索引关系时使用的散列索引算法,计算所述发送地址的散列索引值;通过查询预先建立的散列索引关系,确定所述发送地址的散列索引值所链接索引到的数据包过滤规则,判断接收到的数据包的发送地址是否与确定出的数据包过滤规则中的地址信息相匹配。
2.如权利要求1所述的方法,其特征在于,所述建立表明每个散列索引值所链接索引 到的数据包过滤规则的散列索引关系,具体包括预先建立散列索引数组,并设定各散列索引值在的散列索引数组中的索引位置;根据计算得到的数据包过滤规则的散列索引值,将各散列索引值所链接索引到的数据 包过滤规则的标识,存储在所述散列索引数组中相应的索引位置处。
3.如权利要求2所述的方法,其特征在于,当两个或两个以上的数据包过滤规则的散 列索引值相同时,将散列索引值相同的数据包过滤规则存储为一个索引链;所述索引链中 的数据包过滤规则中包含用于指引所链接到的下一条数据包过滤规则的链接标识;在建立散列索引关系时,将所述索引链中包含的第一个数据包过滤规则的标识,存储 在所述散列索引数组中相应的索引位置处。
4.如权利要求3所述的方法,其特征在于,所述确定所述发送地址的散列索引值所链 接索引到的数据包过滤规则,判断接收到的数据包的发送地址是否与确定出的数据包过滤 规则中地址信息相匹配,具体包括确定所述发送地址的散列索引值在所述散列索引数组中的索引位置,从确定出的所述 索引位置处读取存储的数据包过滤规则的标识;根据读取的所述数据包过滤规则标识获取对应的数据包过滤规则,判断接收到的数 据包的发送地址是否属于获取到的数据包过滤规则中包含的地址信息中的指定地址,如果 是,则接收到的数据包的发送地址与获取到的数据包过滤规则相匹配,否则不相匹配。
5.如权利要求4所述的方法,其特征在于,当接收到的数据包的发送地址与获取到的 数据包过滤规则不相匹配,还包括判断获取的数据包过滤规则是否是一个索引链中的数据包过滤规则;当判断为是时,根据获取到的数据包过滤规则中的链接标识,依次获取所述索引链中 包含的后续数据包过滤规则;判断接收到的数据包的发送地址是否属于获取到的后续数据包过滤规则中包含的地 址信息中的指定地址,如果是,则接收到的数据包的地址信息与获取到的后续数据包过滤 规则相匹配,否则不相匹配。
6.一种数据包过滤规则匹配装置,其特征在于,包括索引建立模块,用于根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用 选定的散列索引算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引值所 链接索引到的数据包过滤规则的散列索引关系;计算模块,用于当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索 引关系时使用的散列索引算法,计算所述发送地址的散列索引值;查询判断模块,用于通过查询预先建立的散列索引关系,确定所述发送地址的散列索 引值所链接索引到的数据包过滤规则,判断接收到的数据包的发送地址是否与确定出的数 据包过滤规则中的地址信息相匹配。
7.如权利要求6所述的装置,其特征在于,所述索引建立模块,具体包括数组建立单元,用于预先建立散列索引数组,并设定各散列索引值在的散列索引数组 中的索引位置;索引建立单元,用于根据计算得到的数据包过滤规则的散列索引值,将各散列索引值 所链接索引到的数据包过滤规则的标识,存储在所述散列索引数组中相应的索引位置处。
8.如权利要求7所述的装置,其特征在于,所述索引建立模块,还包括链表建立单元,用于当两个或两个以上的数据包过滤规则的散列索引值相同时,将散 列索引值相同的数据包过滤规则存储为一个索引链;所述索引链中的数据包过滤规则中包 含用于指引所链接到的下一条数据包过滤规则的链接标识;所述索引建立单元,还用于在建立散列索引关系时,将所述索引链中包含的第一个数 据包过滤规则的标识,存储在所述散列索引数组中相应的索引位置处。
9.如权利要求8所述的装置,其特征在于,所述查询判断模块,具体包括确定读取单元,用于确定所述发送地址的散列索引值在所述散列索引数组中的索引位 置,从确定出的所述索引位置处读取存储的数据包过滤规则的标识;判断匹配单元,用于根据读取的所述数据包过滤规则标识获取对应的数据包过滤规 则,判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包含的地址信息 中的指定地址,如果是,则接收到的数据包的发送地址与获取到的数据包过滤规则相匹配, 否则不相匹配。
10.如权利要求9所述的装置,其特征在于,所述查询判断模块,还包括链表判断单元,用于判断获取的数据包过滤规则是否是一个索引链中的数据包过滤规则;链表匹配单元,用于当所述链表判断单元判断为是时,根据获取到的数据包过滤规则 中的链接标识,依次获取所述索引链中包含的后续数据包过滤规则;判断接收到的数据包 的发送地址是否属于获取到的后续数据包过滤规则中包含的地址信息中的指定地址,如果 是,则接收到的数据包的地址信息与获取到的后续数据包过滤规则相匹配,否则不相匹配。
11.一种网络设备,其特征在于,包括如权利要求6-10任一所述的数据包过滤规则匹 配装置。
全文摘要
本发明公开了一种数据包过滤规则匹配方法及装置,该方法包括根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引值所链接索引到的数据包过滤规则的散列索引关系;当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索引关系时使用的散列索引算法,计算所述发送地址的散列索引值;通过查询预先建立的散列索引关系,确定所述发送地址的散列索引值所链接索引到的数据包过滤规则,判断接收到的数据包的发送地址是否与确定出的数据包过滤规则中的地址信息相匹配。该方法减少了数据包过滤匹配的次数,提高了匹配的速度和效率,提高了系统数据处理的性能。
文档编号G06F17/30GK101860531SQ20101015636
公开日2010年10月13日 申请日期2010年4月21日 优先权日2010年4月21日
发明者黄凯明 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1