一种提高防火墙芯片硬件加速性能的方法

文档序号:7652107阅读:245来源:国知局
专利名称:一种提高防火墙芯片硬件加速性能的方法
技术领域
本发明属于网络技术领域,涉及网络安全和组网技术,具体涉及一种在网络大流量情况 下使防火墙芯片高效率转发数据包,同时提高连接表项的查找命中率的方法。
背景技术
随着网络技术的不断发展,人们对网络的响应速度、数据包吞吐量和网络安全的要求越 来越高,需要延迟小、流量大的安全防火墙。这就需要芯片来实现硬件加速提高放防火墙的 性能。目前,以太网络(Ethernet)上绝大部分数据包都是传输控制协议包(TCP包)和用户 数据报协议包(UDP包)。这些数据包是按照连接来分组的,同一组TCP包或UDP包具有相 同数据包5元组,即源IP、目的IP、源端口、目的端口、协议号。因此,CPU需要对这样的 数据包组头一个或几个数据包进行分析和规则匹配,得到该数据包组的匹配结果,建立一个 连接规则。之后的同一组的其他数据包只需按照前面的连接规则处理就可以了,因此这些数 据包在防火墙芯片内部就可以实现丢弃或转发,不必上送到CPU处理。这就要求防火墙芯片 对通过的数据包能够快速的查找到相应得连接规则,并根据连接规则对数据包进行必要的修 改和转发。
目前,在防火墙加速芯片实现访问连接表的方法如下
首先,对于未建立连接规则的TCP包和UDP包,防火墙芯片找不到连接规则,因此会 将这些数据包上送到CPU, CPU对这样的数据包进行分析和规则匹配,得到该数据包组的匹 配结果,然后建立一个用于匹配该组数据包的连接规则。然后,CPU将这个数据包回送到防 火墙芯片中,回送前CPU也可以对数据包进行修改,所述修改是指一般防火墙转发数据包对 数据包作相应的修改,比如修改数据包的目的MAC地址、源MAC地址、端口号、首部校验 和、生存时间等。同时将新建立的连接规则写入到防火墙芯片内的连接表中。防火墙芯片按 照CPU的控制指令将数据转发出去。
对于之后通过防火墙芯片的这组数据包的其他后续数据包,防火墙芯片根据数据包的5 元组采用HASH算法找到相对应的连接规则,然后根据连接规则修改数据包并找到转发的网 络出口,直接转发该数据包,不再上送到CPU处理。
在Ethernet网络中,防火墙需要同时保存大量的连接规则,例如,对于一个吞吐量为2.5G的防火墙,同时保持连接的连接规则通常有150万左右。每个连接表项大约占64字节,因此 存储连接规则表的存储器应该有128M字节以上。但是,由于成本和技术的限制,防火墙芯 片内部无法集成容量很大的存储器。目前已知的防火墙产品中,在防火墙加速芯片内部的连 接表只有256K字节,只能建立2千连接表项。
由于系统的并发连接数远远大于连接表的容量,因此大部分连接规则会被覆盖而査找不 到。因此,网络中绝大部分TCP包和UDP包被迫上送CPU,由CPU来处理,即使这些数据 包的连接曾经建立起来,但很快被覆盖而丢失。这样,防火墙芯片能够直接转发的数据包很 少,不能实现硬件加速的目的,大部分数据包都要送到CPU处理,造成防火墙的性能急剧下 降甚至瘫痪。

发明内容
本发明的目的在于解决现有的防火墙芯片访问连接表存在的上述缺陷,提出一种在网络 大流量情况下使防火墙芯片高效率转发数据包,同时减少防火墙芯片内部存储器开销,提高 连接表项的查找命中率的方法。
为实现上述目的,本发明提出的方法如下
首先,在防火墙芯片外部配置一个外置存储器,在该存储器中分别为连接索引表和连接 表分出一块区域,并将连接索引表和连接表的基地址存放到防火墙芯片和CPU中。在CPU 内存中建立连接索引表和连接表的镜像,该镜像和防火墙芯片外置存储器中的连接索引表和 连接表保持同步。
然后,通过下述步骤访问连接索引表和连接表
第一步,对于通过的以太网数据包,防火墙芯片从数据包中提取源IP、目的IP、源端口、 目的端口、协议号5元组信息;
第二步,根据数据包的5元组信息进行HASH运算;
第三步,以HASH运算结果为偏移地址,加上连接索引表基地址查找防火墙芯片外置存 储器中的连接索引表;如果找到的连接索引表项内容为O,表示该数据包没有相应的连接表, 则将数据包上送到CPU处理,由CPU对其进行分析和规则匹配后新建一个连接;否则,根 据连接索引表项内容和连接表基地址去查找连接表;
第四步,找到连接表项后,将表项的64字节读回,然后将连接表项的源IP、目的IP、 源端口、目的端口、协议号与数据包的5元组相比较,如果相符则转到第六步执行,否则执 行第五步;
第五步,查看这个连接表项的"下一入口地址"(next—entry—addr);如果为0,则将该数 据包上送到CPU,由CPU对其进行分析和规则匹配后新建一个连接;否则根据"下一入口地址"(next_entry_addr)加上连接表基地址找到下一个连接表项,跳到第四步执行; 第六步,查找到匹配的连接表项后,按照连接表标志转发数据包。
本发明HASH运算可采用多种算法,如JHASH算法、移位异或算法、移位相加算法等, 但应该尽可能减小HASH运算的冲突几率。
本发明中,防火墙芯片外置存储器可根据需要和具体情况灵活设计,容量可以很大,可 以为几百兆或几千兆字节,存储类型可以是SDRAM/DDRSDRAM/DDR II SDRAM等类型。
本发明的有益效果表现在从根本上解决了目前硬件加速防火墙连接表项太少,并发连 接数不能满足防火墙性能需求的问题。增大的连接索引表和连接表降低了连接的HASH算法 冲突几率,縮短了连接表项链表的长度,提高了防火墙芯片处理数据包的效率。
采用本发明方法,大量已建立连接的数据包都会在防火墙芯片内部直接转发,大大减少 了上送CPU的数据包,为CPU节省出更多的时间建立和更新连接表项和处理其他事务提供 了保障。


图1为连接索引表和连接表结构示意图。 图2为防火墙芯片查找连接表流程图。 图3为CPU建立新连接表项的流程图。
具体实施例方式
以下将结合附图和具体的实施例对本发明方法作进一步的说明。
首先,本发明在防火墙芯片外部配置一个外置存储器,在该存储器中分别为连接索引表 和连接表分出一块区域,并将连接索引表和连接表的基地址存放到防火墙芯片和CPU中。在 CPU内存中建立连接索引表和连接表的镜像,该镜像和防火墙芯片外置存储器中的连接索引 表和连接表保持同步。
连接索引表项和连接表项的结构如图1所示。其中,每个连接索引表项存放着连接表项 链表头的偏移地址。索引表项地址对应数据包5元组通过HASH运算得到的结果。
参见图l,连接表中的"下一入口地址"(next—entry—addr)域是连接表项链表的下一项偏 移地址,虽然HASH算法大大降低了不同数据包5元组对应同一HASH结果的概率,但仍然 不能避免会出现这种情况,因此采用链表的方式解决。即对应同一HASH结果的不同数据包 5元组的连接表项组成一个链表,每个链表表项的Next Entry Addr域为同一链表中下一个表 项的偏移地址。如果链表表项是尾表项,则Next Entry Addr域为0。
参见图1,连接表中的Source IP域、Destination IP域、Source Port土或、Destination Port域、Protocol域分别是数据包的源IP、目的IP、源端口、目的端口、协议号。用于比较数据 包的5元组和连接表是否相同。如果相同就表示找到了匹配连接表项,按照连接表项的其他 域作相应的处理,所述相应处理是指一般防火墙在传输层具有的功能,如做NAT、 syn代理、 发送总报文数、发送总字节数等;如果不相同则按照连接表项的next一entry—addr域查找下一 连接表项,直到找到匹配表项或搜索完该链表为止。连接表的未定义空白处可存放连接表项 的各种标志、数据包的发送统计、其他表项的指针等内容。 连接索引表和连接表的访问通过下述步骤实现
第一步,对于通过的以太网数据包,防火墙芯片从数据包中提取源IP、目的IP、源端口、 目的端口、协议号5元组信息;
第二步,根据数据包的5元组信息进行HASH运算,HASH运算的目的是将连接表项离 散化,减少不同5元组对应同一 HASH运算结果的冲突几率;
本实施例的HASH运算的算法采用了 JHASH算法,其他HASH算法也可以采用,例如 移位异或算法、移位相加算法等。但应该尽可能减小HASH运算的冲突几率。
第三步,以HASH运算结果为偏移地址,加上连接索引表基地址查找防火墙芯片外置存 储器中的连接索引表;如果找到的连接索引表项内容为O,表示该数据包没有相应的连接表, 则将数据包上送到CPU处理,由CPU对其进行分析和规则匹配后新建一个连接;否则,根 据连接索引表项内容和连接表基地址去查找连接表;
第四步,找到连接表项后,将表项的64字节采用突发(burst)方式读回,然后将连接表 项的源IP、目的IP、源端口、目的端口、协议号与数据包的5元组相比较,如果相符则转到 第六步执行,否则执行第五步;
第五步,查看这个连接表项的"下一入口地址"(next—entry—addr);如果为0,则将该数 据包上送到CPU,由CPU对其进行分析和规则匹配后新建一个连接;否则根据"下一入口地 址"(next—entry—addr)加上连接表基地址找到下一个连接表项,跳到第四步执行;
第六步,查找到匹配的连接表项后,按照连接表标志转发数据包。
在上述第三步和第五步中,CPU新建一个连接到过程如下
(1) CPU对防火墙芯片转来的数据包进行分析和规则匹配,得到该数据包组的匹配结 果,生成一个包括5元组的新连接;
(2) CPU首先在内存中查找连接表镜像,将新生成的连接写入一个未占用的空连接表 项,此表项的"下一入口地址"(next—entry—addr)写入0,并记下表项偏移地址;然后,CPU 根据HASH算法找到对应的连接索引表项,如果该连接索引表项为0,则将连接表项偏移地 址写入该连接索引表项;如果不为O,则将该连接索引表项内容写入新建的连接表项的"下一入口地址"(next—entry_addr),再将连接表项偏移地址写入该连接索引表项;
(3) CPU将内存的连接表和连接索引表镜像中新建的连接索引表项和连接表项,复制 到防火墙芯片外置存储器连接表和连接索引表对应的表项中。
通过上述三个步骤, 一个新建的连接就建好了,后续的数据包就可以查找和使用这个连 接了。
采用本发明方法,大量已建立连接的数据包都会在防火墙芯片内部直接转发,大大减少 了上送CPU的数据包,为CPU节省出更多的时间建立和更新连接表项和处理其他事务提供 了保障。
权利要求
1、一种提高防火墙芯片硬件加速性能的方法,其特征在于首先,在防火墙芯片外部配置一个外置存储器,在该存储器中分别为连接索引表和连接表分出一块区域,并将连接索引表和连接表的基地址存放到防火墙芯片和CPU中;在CPU内存中建立连接索引表和连接表的镜像,该镜像和防火墙芯片外置存储器中的连接索引表和连接表保持同步;然后,通过下述步骤访问连接索引表和连接表第一步,对于通过的以太网数据包,防火墙芯片从数据包中提取源IP、目的IP、源端口、目的端口、协议号5元组信息;第二步,根据数据包的5元组信息进行HASH运算;第三步,以HASH运算结果为偏移地址,加上连接索引表基地址查找防火墙芯片外置存储器中的连接索引表;如果找到的连接索引表项内容为0,则将数据包上送到CPU处理,由CPU对其进行分析和规则匹配后新建一个连接;否则,根据连接索引表项内容和连接表基地址去查找连接表;第四步,找到连接表项后,将表项的64字节读回,然后将连接表项的源IP、目的IP、源端口、目的端口、协议号与数据包的5元组相比较,如果相符则转到第六步执行,否则执行第五步;第五步,查看这个连接表项的“下一入口地址”(next_entry_addr);如果为0,则将该数据包转送到CPU,由CPU对其进行分析和规则匹配后新建一个连接;否则根据“下一入口地址”(next_entry_addr)加上连接表基地址找到下一个连接表项,跳到第四步执行;第六步,查找到匹配的连接表项后,按照连接表标志转发数据包。
2、 根据权利要求l所述的提高防火墙芯片硬件加速性能的方法,其特征在于,在所述第 三步和第五步中,CPU新建一个连接到过程如下(1) CPU对防火墙芯片转来的数据包进行分析和规则匹配,得到该数据包组的匹配结 果,生成一个包括5元组的新连接;(2) CPU首先在内存中查找连接表镜像,将新生成的连接写入一个未占用的空连接表 项,此表项的"下一入口地址"(next—entry—addr)写入0,并记下表项偏移地址;然后,CPU 根据HASH算法找到对应的连接索引表项,如果该连接索引表项为0,则将连接表项偏移地 址写入该连接索引表项;如果不为0,则将该连接索引表项内容写入新建的连接表项的"下 一入口地址"(next—entry_addr),再将连接表项偏移地址写入该连接索引表项;(3) CPU将内存的连接表和连接索引表镜像中新建的连接索引表项和连接表项,复制到防火墙芯片外置存储器连接表和连接索弓I表对应的表项中。
3、 根据权利要求1或2所述的提高防火墙芯片硬件加速性能的方法,其特征在于,所述 HASH运算可采用JHASH算法、移位异或算法或者移位相加算法。
4、 根据权利要求1或2所述的提高防火墙芯片硬件加速性能的方法,其特征在于,所述 防火墙芯片外置存储器为大容量存储器,容量为几百兆或几千兆字节。
5、 根据权利要求3所述的提高防火墙芯片硬件加速性能的方法,其特征在于,所述防火 墙芯片外置存储器为大容量存储器,容量为几百兆或几千兆字节。
6、 根据权利要求1或2所述的提高防火墙芯片硬件加速性能的方法,其特征在于,所述 防火墙芯片外置存储器的存储类型,是SDRAM、 DDRSDRAM、 DDR II SDRAM中的一种。
7、 根据权利要求3所述的提高防火墙芯片硬件加速性能的方法,其特征在于,所述防火 墙芯片外置存储器的存储类型,是SDRAM、 DDRSDRAM、 DDR II SDRAM中的一种。
8、 根据权利要求4所述的提高防火墙芯片硬件加速性能的方法,其特征在于,所述防火 墙芯片外置存储器的存储类型,是SDRAM、 DDRSDRAM、 DDR II SDRAM中的一种。
9、 根据权利要求5所述的提高防火墙芯片硬件加速性能的方法,其特征在于,所述防火 墙芯片外置存储器的存储类型,是SDRAM、 DDRSDRAM、 DDRII SDRAM中的一种。
全文摘要
本发明公开了一种提高防火墙芯片硬件加速性能的方法。该方法在防火墙芯片外部配置一个外置存储器,在该存储器中分别为连接索引表和连接表分出一块区域,并将连接索引表和连接表的基地址存放到防火墙芯片和CPU中。在CPU内存中建立连接索引表和连接表的镜像,该镜像和防火墙芯片外置存储器中的连接索引表和连接表保持同步。然后,通过防火墙芯片和CPU协同工作实现对连接索引表和连接表的访问与新建。本发明方法从根本上解决了目前硬件加速防火墙连接表项太少,并发连接数不能满足防火墙性能需求的问题。增大的连接索引表和连接表降低了连接的HASH算法冲突几率,提高了防火墙芯片处理数据包的效率。
文档编号H04L12/56GK101296222SQ20071009839
公开日2008年10月29日 申请日期2007年4月25日 优先权日2007年4月25日
发明者涛 曾, 王万亭 申请人:北京天融信网络安全技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1