CN101860531B - 数据包过滤规则匹配方法及装置 - Google Patents

数据包过滤规则匹配方法及装置 Download PDF

Info

Publication number
CN101860531B
CN101860531B CN 201010156362 CN201010156362A CN101860531B CN 101860531 B CN101860531 B CN 101860531B CN 201010156362 CN201010156362 CN 201010156362 CN 201010156362 A CN201010156362 A CN 201010156362A CN 101860531 B CN101860531 B CN 101860531B
Authority
CN
China
Prior art keywords
packet filtering
filtering rule
hash index
index
packet
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.)
Expired - Fee Related
Application number
CN 201010156362
Other languages
English (en)
Other versions
CN101860531A (zh
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.)
Beijing Star Net Ruijie Networks Co Ltd
Original Assignee
Beijing Star Net Ruijie Networks 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 Beijing Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN 201010156362 priority Critical patent/CN101860531B/zh
Publication of CN101860531A publication Critical patent/CN101860531A/zh
Application granted granted Critical
Publication of CN101860531B publication Critical patent/CN101860531B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种数据包过滤规则匹配方法及装置,该方法包括:根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引算法,确定各数据包过滤规则的散列索引值,建立表明每个散列索引值所链接索引到的数据包过滤规则的散列索引关系;当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索引关系时使用的散列索引算法,计算所述发送地址的散列索引值;通过查询预先建立的散列索引关系,确定所述发送地址的散列索引值所链接索引到的数据包过滤规则,判断接收到的数据包的发送地址是否与确定出的数据包过滤规则中的地址信息相匹配。该方法减少了数据包过滤匹配的次数,提高了匹配的速度和效率,提高了***数据处理的性能。

Description

数据包过滤规则匹配方法及装置
技术领域
本发明涉及网络技术领域,尤指一种用于网络报文过滤的数据包过滤规则匹配方法及装置。
背景技术
数据包过滤技术是防火墙提供网络安全保障的关键技术。通常,防火墙根据预先定义好的过滤规则集中包含的数据包过滤规则匹配审查通过防火墙的每个数据包,以确定所通过的数据包是否与过滤规则集中的某一条规则相匹配。
数据包过滤规则一般是基于数据包的报头信息制订的。报头信息中包括互联网协议(Internet Protocol,IP)源地址、IP目标地址、传输协议(例如:传输控制协议(Transmission Control Protocol,TCP)、用户数据报协议(UserDatagram Protocol,UDP)、因特网控制报文协议(Internet Control MessageProtocol,ICMP)等等)、TCP/UDP目标端口、ICMP消息类型等。一个数据包与某条规则匹配的充要条件是该数据包的报头信息与该条规则匹配。
当需要进行数据包的过滤匹配时,从数据包过滤规则集的第一条数据包过滤规则开始,按照存储顺序逐一进行匹配,除非与某条规则匹配成功,否则包过滤过程只有在匹配完所有数据包过滤规则后,才能结束过滤匹配过程。当数据包与一个数据包过滤规则相匹配,防火墙就要执行该条过滤规则指定的相关的动作。这些动作将指示是否拒绝将数据包发送到某个特定的接口,或是指示是否接受并发送数据包到一个特定接口。如果一个数据包没有和数据包过滤规则集中的任何一条数据包过滤规则匹配成功,则***会按照默认的处理规则对这个数据包进行发送或丢弃处理。
例如,数据包过滤规则集中存储了如下的数据包过滤规则:
firewall(config)#access-list 4 permit 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.9
firewall(config)#access-list 4 deny 10.9.8.0 255.255.255.248
firewall(config)#access-list 4 permit any
firewall(config)#int f0/0
firewall(config-if)#ip access-group 4 in
上述过滤规则针对防火墙的快速以太网接口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:当接收到数据包时,确定接收到的数据包的发送地址。
网络中的防火墙或其他用于数据包传输和交换的设备,接收到用户终端或其他网络设备发送的数据包,需要对数据包进行匹配过滤时,则对接收到的数据包进行解析,获取接收到的数据包中包含的发送端的地址信息(即发送地址)。
步骤S103:采用建立散列索引表时使用的散列索引算法,计算上述发送地址的散列索引值。
获取建立散列索引表时所使用的散列索引算法,采用获取的散列索引算法对发送地址中选定的部分或全部二进制码进行散列索引计算,得到发送地址的散列索引值。
步骤S104:通过查询预先建立的散列索引表,确定数据包发送地址的散列索引值所链接索引到的数据包过滤规则。
具体通过查询预先建立的散列索引表,确定发送地址的散列索引值在散列索引数组中的索引位置,从确定出的索引位置处读取存储的数据包过滤规则的标识,根据读取的数据包过滤规则标识获取对应的数据包过滤规则。
步骤S105:判断接收到的数据包是否与确定出的数据包过滤规则相匹配。
一般是判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包含的地址信息中的指定地址。如果是,则说明接收到的数据包的发送地址与获取到的数据包过滤规则相匹配,执行步骤S106;否则,执行步骤S107。
步骤S 106:根据获取到的数据包过滤规则对接收到的数据包进行处理。
例如:根据过滤规则中规定的允许或禁止该地址的数据包通过,转发或者丢弃接收到的数据包。
步骤S107:采用默认的数据包过滤规则对接收到的数据包进行处理。
即在接收到的数据包的发送地址与获取到的数据包过滤规则不相匹配,采用默认的处理规则,对接收到的数据包进行处理。
例1:一个数据包过滤规则集中包含如下过滤规则:
firewall(config)#access-list 4 permit 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},散列索引数组中的各元素为规则序号(数据包过滤规则标识)。
假设采用下列数据结构设计存储数据包过滤规则:
Figure GDA00002496751200081
则上述例1中的数据包过滤规则经散列索引后,存储为包含上述散列索引数组与如下存储结构块的散列索引表。其中,数据包过滤规则的存储仍然按照用户定义先后顺序存储,各条规则存储结构块的内容如下:
序号:1,{IP:10.9.8.1,掩码:0,permit,后续:0};
序号:2;{IP:10.9.8.2,掩码:0,permit,后续:0};
序号:3;{IP:10.9.8.3,掩码:0,permit,后续:0};
序号;4;{IP:10.9.8.4,掩码:0,permit,后续:0};
序号:5;{IP:10.9.8.5,掩码:0,permit,后续:0};
序号:6;{IP:10.9.8.6,掩码:0,permit,后续:0};
序号:7;{IP:10.9.8.7,掩码:0,permit,后续:0};
序号:8;{IP:10.9.8.0,掩码:0,deny,后续:0};
建立完散列索引表之后,当接收到待处理的数据包时,根据数据包发送端的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:根据获取到的数据包过滤规则中的链接标识,依次获取索引链中包含的后续数据包过滤规则。
一般是根据索引链中的第一条数据包过滤规则,获取到后续的第二条数据包过滤规则;再根据第二条获取第三条;依此类推。
较佳的,每一条后续规则的获取在前一条规则比较匹配完成后执行,即当索引链中的数据包过滤规则大于两条时,循环执行步骤S207、步骤S208和步骤S209,直至获取到索引链中的最后一个数据包过滤规则。
步骤S208:判断接收到的数据包是否与获取到的后续数据包过滤规则相匹配。
一般也是判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包含的地址信息中的指定地址,如果是,则接收到的数据包的地址信息与获取到的后续数据包过滤规则相匹配,执行步骤S210;否则不相匹配,执行步骤S209。
步骤S209:判断获取的到数据包过滤规则是否是索引链中的最后一个数据包过滤规则。
当获取到的后续数据包过滤规则中未携带链接标识,或者链接标识为无后续的标识信息时,确定获取到的后续数据包过滤规则为索引链中的最后一个数据包过滤规则。
若是,返回继续执行步骤S211;否则,执行步骤S207。
步骤S210:根据获取到的数据包过滤规则对接收到的数据包进行处理。
例如:根据过滤规则中规定的允许或禁止该地址的数据包通过,转发或者丢弃接收到的数据包。
步骤S211:采用默认的数据包过滤规则对接收到的数据包进行处理。
即在接收到的数据包的发送地址与获取到的数据包过滤规则不相匹配,采用默认的处理规则,对接收到的数据包进行处理。
例如,沿用现有技术中所例举的针对以太网口0的数据包过滤规则集。
firewall(config)#access-list 4 permit 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.9
firewall(config)#access-list 4 deny 10.9.8.0 255.255.255.248
firewall(config)#access-list 4 permit any
firewall(config)#int f0/0
firewall(config-if)#ip access-group 4 in
首先,选定一个散列索引算法。即选定一个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的存储结构块的链接索引(next_index)先都置为0。
然后,对第六条规则进行散列索引处理。第六条规则中涉及到的IP地址为10.9.8.9,根据上述HASH算法进行散列运算后得到的散列索引值为1。这与第一条规则的散列索引值相同。即超过一个对象的HASH运算结果相同,冲突在同一个散列点上,形成了散列冲突。此时,即采用把冲突点由对象的索引扩展成一条链表,由表头索引,该链表上的所有对象的HASH运算结果都相同。即建立索引链。此时,规则1和规则6形成一条索引链。规则1作为索引链中的第一条数据包过滤规则,其中包含链接标识——规则6的索引序号6。即规则1的存储结构块的链接索引(next_index)都改变为6,规则6的存储结构块的链接索引(next_index)置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 4 deny10.9.8.6;对这条规则进行散列索引处理,经HASH计算后得到的散列索引值为6,在散列索引数组中散列索引值为6的索引位置上存储这条规则的规则序号7,此时得到的散列索引数组为{0,1,2,3,4,5,7,0}。此时,规则7的存储结构块的链接索引(next_index)先都置为0。
针对第8条规则,由于该规则是通配规则,所有没与前七条规则匹配的IP均与这条规则匹配,因此,规则8对应的IP是网络中的所有IP,因此,规则8衍生出的若干条规则,将会成为前面每一条规则的散列冲突点。前面每一条规则均与规则8形成索引链。即规则2-5、7均单独与规则8形成索引链,规则1、6、8共同形成索引链。此时,规则2-7的存储结构块的链接索引(next_index)都改变为8,规则8的存储结构块的链接索引(next_index)置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函数的结果越分散,散列表上的冲突点越少,遍历匹配过程中平均需要执行的匹配操作就越少,对***性能的优化就越明显。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (7)

1.一种数据包过滤规则匹配方法,其特征在于,包括:
根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引算法,确定各数据包过滤规则的散列索引值,预先建立散列索引数组,并设定各散列索引值在的散列索引数组中的索引位置;
根据计算得到的数据包过滤规则的散列索引值,将各散列索引值所链接索引到的数据包过滤规则的标识,存储在所述散列索引数组中相应的索引位置处,建立起表明每个散列索引值所链接索引到的数据包过滤规则的散列索引关系;
当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索引关系时使用的散列索引算法,计算所述发送地址的散列索引值;
通过查询预先建立的散列索引关系,确定所述发送地址的散列索引值在所述散列索引数组中的索引位置,从确定出的所述索引位置处读取存储的数据包过滤规则的标识;
根据读取的所述数据包过滤规则标识获取对应的数据包过滤规则,判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包含的地址信息中的指定地址,如果是,则接收到的数据包的发送地址与获取到的数据包过滤规则相匹配,否则不相匹配。
2.如权利要求1所述的方法,其特征在于,当两个或两个以上的数据包过滤规则的散列索引值相同时,将散列索引值相同的数据包过滤规则存储为一个索引链;所述索引链中的数据包过滤规则中包含用于指引所链接到的下一条数据包过滤规则的链接标识;
在建立散列索引关系时,将所述索引链中包含的第一个数据包过滤规则的标识,存储在所述散列索引数组中相应的索引位置处。
3.如权利要求1所述的方法,其特征在于,当接收到的数据包的发送地址与获取到的数据包过滤规则不相匹配,还包括:
判断获取的数据包过滤规则是否是一个索引链中的数据包过滤规则;
当判断为是时,根据获取到的数据包过滤规则中的链接标识,依次获取所述索引链中包含的后续数据包过滤规则;
判断接收到的数据包的发送地址是否属于获取到的后续数据包过滤规则中包含的地址信息中的指定地址,如果是,则接收到的数据包的地址信息与获取到的后续数据包过滤规则相匹配,否则不相匹配。
4.一种数据包过滤规则匹配装置,其特征在于,包括:
索引建立模块,包括数组建立单元,用于根据过滤规则集中的数据包过滤规则所涉及到的地址信息,采用选定的散列索引算法,确定各数据包过滤规则的散列索引值,根据计算得到的数据包过滤规则的散列索引值,将各散列索引值所链接索引到的数据包过滤规则的标识,存储在所述数组建立单元建立的散列索引数组中相应的索引位置处,建立起表明每个散列索引值所链接索引到的数据包过滤规则的散列索引关系;
所述数组建立单元,用于预先建立散列索引数组,并设定各散列索引值在的散列索引数组中的索引位置;
计算模块,用于当接收到数据包时,确定接收到的数据包的发送地址,采用建立散列索引关系时使用的散列索引算法,计算所述发送地址的散列索引值;
查询判断模块,包括:确定读取单元和判断匹配单元;
所述确定读取单元,用于通过查询预先建立的散列索引关系,确定所述发送地址的散列索引值在所述散列索引数组中的索引位置,从确定出的所述索引位置处读取存储的数据包过滤规则的标识;
所述判断匹配单元,用于根据读取的所述数据包过滤规则标识获取对应的数据包过滤规则,判断接收到的数据包的发送地址是否属于获取到的数据包过滤规则中包含的地址信息中的指定地址,如果是,则接收到的数据包的发送地址与获取到的数据包过滤规则相匹配,否则不相匹配。
5.如权利要求4所述的装置,其特征在于,所述索引建立模块,还包括:
链表建立单元,用于当两个或两个以上的数据包过滤规则的散列索引值相同时,将散列索引值相同的数据包过滤规则存储为一个索引链;所述索引链中的数据包过滤规则中包含用于指引所链接到的下一条数据包过滤规则的链接标识;
索引建立单元,还用于在建立散列索引关系时,将所述索引链中包含的第一个数据包过滤规则的标识,存储在所述散列索引数组中相应的索引位置处。
6.如权利要求4所述的装置,其特征在于,所述查询判断模块,还包括:
链表判断单元,用于判断获取的数据包过滤规则是否是一个索引链中的数据包过滤规则;
链表匹配单元,用于当所述链表判断单元判断为是时,根据获取到的数据包过滤规则中的链接标识,依次获取所述索引链中包含的后续数据包过滤规则;判断接收到的数据包的发送地址是否属于获取到的后续数据包过滤规则中包含的地址信息中的指定地址,如果是,则接收到的数据包的地址信息与获取到的后续数据包过滤规则相匹配,否则不相匹配。
7.一种网络设备,其特征在于,包括:如权利要求4-6任一所述的数据包过滤规则匹配装置。
CN 201010156362 2010-04-21 2010-04-21 数据包过滤规则匹配方法及装置 Expired - Fee Related CN101860531B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010156362 CN101860531B (zh) 2010-04-21 2010-04-21 数据包过滤规则匹配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010156362 CN101860531B (zh) 2010-04-21 2010-04-21 数据包过滤规则匹配方法及装置

Publications (2)

Publication Number Publication Date
CN101860531A CN101860531A (zh) 2010-10-13
CN101860531B true CN101860531B (zh) 2013-04-17

Family

ID=42946189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010156362 Expired - Fee Related CN101860531B (zh) 2010-04-21 2010-04-21 数据包过滤规则匹配方法及装置

Country Status (1)

Country Link
CN (1) CN101860531B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE1051246A1 (sv) * 2010-11-29 2012-05-30 Scania Cv Ab Fjärrdiagnostisering av fordon
CN103780460B (zh) * 2014-01-15 2017-06-30 珠海市佳讯实业有限公司 一种通过fpga实现tap设备硬件过滤的***
CN104010000B (zh) * 2014-06-13 2017-12-29 北京联宇益通科技发展有限公司 安卓***非超级用户权限下数据包过滤方法、装置和***
CN106797565B (zh) * 2014-09-01 2020-07-14 华为技术有限公司 一种通信方法、移动网络设备、终端、应用服务器及***
CN104580486B (zh) * 2015-01-20 2017-09-29 成都益联科创科技有限公司 一种复合式产品售后信息及服务推送***
CN104954200A (zh) * 2015-06-17 2015-09-30 国家计算机网络与信息安全管理中心 一种网络数据包的多类型规则高速匹配方法及装置
CN107038161B (zh) * 2015-07-13 2021-03-26 阿里巴巴集团控股有限公司 一种用于过滤数据的设备及方法
CN105591836B (zh) * 2015-09-09 2019-03-15 新华三技术有限公司 数据流检测方法和装置
CN105187436B (zh) * 2015-09-25 2019-03-08 中国航天科工集团第二研究院七〇六所 一种基于散列表的包过滤主机网络控制方法
CN106254395B (zh) * 2016-10-08 2019-06-14 湖南智卓创新信息产业股份有限公司 一种数据过滤方法及***
CN106657128B (zh) * 2017-01-05 2020-03-06 杭州迪普科技股份有限公司 基于通配符掩码规则的数据包过滤方法及装置
CN106657161B (zh) * 2017-02-28 2020-10-09 杭州迪普科技股份有限公司 数据包过滤的实现方法和装置
CN108400984B (zh) * 2018-02-27 2021-06-29 烽火通信科技股份有限公司 基于动态规则匹配的mqtt消息过滤方法及***
CN110427397B (zh) * 2018-04-27 2023-03-21 腾讯科技(深圳)有限公司 凭证数据查重方法及相关设备
CN109165220B (zh) * 2018-08-09 2021-06-22 天津威努特信息技术有限公司 一种数据匹配计算方法
CN109167777A (zh) * 2018-08-28 2019-01-08 西安工业大学 一种手机智能终端防火墙装置
CN109032281A (zh) * 2018-08-28 2018-12-18 西安工业大学 一种即插即用无线网络防火墙装置
CN109274648A (zh) * 2018-08-28 2019-01-25 西安工业大学 一种移动式网线防火墙装置
CN109714347A (zh) * 2018-12-29 2019-05-03 杭州迪普科技股份有限公司 策略命中结果的存储、查询方法与装置、设备及介质
CN111106982B (zh) * 2019-12-23 2022-03-01 杭州迪普科技股份有限公司 一种信息过滤方法、装置、电子设备及存储介质
CN111181974A (zh) * 2019-12-31 2020-05-19 国家计算机网络与信息安全管理中心 一种基于网络处理器实现流量预处理的装置和方法
CN112367262B (zh) * 2020-08-20 2022-07-05 国家计算机网络与信息安全管理中心 一种五元组规则的匹配方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545254A (zh) * 2003-11-13 2004-11-10 中兴通讯股份有限公司 一种快速数据包过滤方法
CN101707617A (zh) * 2009-12-04 2010-05-12 福建星网锐捷网络有限公司 报文过滤方法、装置及网络设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296291B2 (en) * 2000-12-18 2007-11-13 Sun Microsystems, Inc. Controlled information flow between communities via a firewall
CN1972240A (zh) * 2005-11-24 2007-05-30 武汉烽火网络有限责任公司 快速包过滤处理方法及其装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545254A (zh) * 2003-11-13 2004-11-10 中兴通讯股份有限公司 一种快速数据包过滤方法
CN101707617A (zh) * 2009-12-04 2010-05-12 福建星网锐捷网络有限公司 报文过滤方法、装置及网络设备

Also Published As

Publication number Publication date
CN101860531A (zh) 2010-10-13

Similar Documents

Publication Publication Date Title
CN101860531B (zh) 数据包过滤规则匹配方法及装置
US10091090B2 (en) Packet forwarding in software defined networking
US7725938B2 (en) Inline intrusion detection
CN102792646B (zh) 通信***、控制装置、通信方法
CN106713182B (zh) 一种处理流表的方法及装置
CN101421991A (zh) 针对拒绝服务攻击的硬件过滤支持
CN103685058B (zh) 控制流数据的服务质量的方法和OpenFlow控制器
CN106027459A (zh) 一种访问控制列表的查询方法及装置
CN111416865A (zh) 一种基于拟态防御的协议代理处理方法及***
CN103428185B (zh) 报文过滤/限速方法、***及装置
CN103067129A (zh) 网络数据传输方法和***
CN104486226B (zh) 一种报文处理方法及装置
CN114567592B (zh) 基于fpga加速器的组播转发方法、装置及组播路由器
US7428250B2 (en) System and associated method for receiving data telegrams in communication systems having redundant network paths
CN111740922B (zh) 数据传输方法、装置、电子设备及介质
CN104270390A (zh) 基于IPv6的IPSec嵌入式防火墙的***及其操作方法
CN102546398A (zh) 一种报文匹配方法及装置
CN106789671B (zh) 一种业务报文转发方法及设备
CN105471756A (zh) 一种数据包处理方法及装置
EP3447668B1 (en) Utilizing routing for secure transactions
CN101232508A (zh) 加速多生成树协议网络拓扑收敛的方法及设备
CN110868348B (zh) 多网关通信的方法、装置、***以及电子设备
CN106878171B (zh) 一种用于多数据源的流式数据处理方法及装置
CN101114991B (zh) 一种基于以太网实现数据流高速比对的方法
CN105207904A (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130417

Termination date: 20200421

CF01 Termination of patent right due to non-payment of annual fee