首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
操作系统 :: unix

为什么实现千兆防火墙很困难


http://www.gipsky.com/
  <SPAN class=top11 twffan="done">千兆防火墙的代表产品包括Netscreen的 5000系列防火墙,以及Nodia-CheckPoint的IP720以上的产品。这种防火墙的特点是网络吞吐性能要求高(即带宽要求高),普通的硬件主板不能承受,市场出货量又少。因此,在世界上能够实现的厂家很少,而且必须是世界级的进行市场推广的公司才能推出真正的千兆防火墙。其他的,即使是名为千兆,实际上也只是假千兆,说穿了就是把千兆卡用到百兆防火墙的内核上,实际上达不到千兆性能。要了解个中因由,首先要了解防火墙的工作原理。



  大家都知道,防火墙的工作核心其实就是对IP包头与预定政策的匹配控制。防火墙在工作的时侯,首先从内存读出政策链的第一条放进寄存器,然后经系统总线 (pci0),再经pci-pci桥,再经pci1到pci网卡读取IP包的头信息,把它与寄存器中的政策进行匹配,然后决定该IP包的处理。一来一去需要两次经过PIC总线。如果IP包比较大,那么这个包头信息与包的大小比较就相对小得多,这时侯系统带宽的瓶颈就是网卡的内存暂存能力,也就是我们所说的百兆网卡和千兆网卡的区别,或者称为线速的限制(wirespeed).但如果IP包很小,那么IP包头所占的比例就相当高,这时,瓶颈就是PCI 总线的交换能力了。



  任何来往于该PCI的其他传输,都将由于总线争夺而受到限制。在这一数据交换中,数据通过Hubink,从 ICH(I/O Controller Hub))到MCH(Memory Controller Hub)的传输有四次,经过PCI总线的传输有两次。由于HubLink的最大数据吞吐量是266MB,约2.2Gbps;但由于32位PCI总线以 33MHz运行,所以数据传输率被限制到1.06Gbps左右。而且还要连接运行各种系统数据交换。由于PCI总线的带宽限制,PCI网卡永远也不能实现真正的全双工的2Gbps带度,最高理论速度是单向1Gbps,而实际达到的不超过一半,即500M。



  换句话说,对于硬件确定的系统,每秒能够处理IP包的数量是一个相对的常数。这个常数与CPU处理能力和寄存器数目,以及系统总线的交换速度形成的整体能力密切相关。对于使用 PIII处理器和 X86服务器主板(或工控主板,32位PCI总线)的防火墙,这个数字大致在五十万到一百万之间。(注意不要把它和最大的会话保持这个标称参数混淆,最大会话主要与系统的可分配内存有关系)。因此,基于Intel X86主板的防火墙的极限吞吐量在IP包大小为512比特时,大致是三百兆左右。显然,这个吞吐能力很符合百兆防火墙的环境,也符合低流量的千兆网环境的要求。但对于高流量的千兆网,就无能为力了,必须在硬件上整体改进才可能满足这个阶梯的升级要求。



  从前文也可以看出,防火墙的吞吐量是与IP包的大小密切相关的,所以谈论吞吐量如果脱离包的大小是毫无意义的,任何防火墙都可以达到百兆线速,只不过是在包大到什么程度才能达到线速而已。另一方面,Intel X86主板架构的服务器,即我们通常说的英特服务器,ASIC服务器(冗余指令集服务器),或PC服务器尽管不能完全满足千兆环境的防火墙吞吐要求,但一般的千兆环境还是可以应付的。因为以太网中的设备不止防火墙一个,还有交换机、路由器等等,这些产品全部都可以形成瓶颈,因此,一个局域网段的极限流量不是它的线速,而大约是线速的25%以下。即千兆约250兆,百兆约25兆。考虑到目前国内一般千兆网的实际流量都不高(很少超过十兆的),所以这种基础的防火墙还是可以承担一般千兆网的流量要求的。但如果千兆干网达到100兆以上流量,几个千兆口累加的吞吐量就超过了这种防火墙的内部极限,这种防火墙就会大量丢包,成为网络系统的瓶颈了。



  因此,要克服这个瓶颈,就只有一个办法,提高系统每秒能够匹配的IP包的能力。其中的关键是扩宽PCI总线的交换速度,反而CPU速度并不是系统的瓶颈,相对而言,今天的CPU能力大得惊人,处理防火墙过滤如同牛刀杀鸡,所以大量防火墙把多余的处理能力用到VPN的强密解密处理上。而PCI速度实际上从问世到今天,也已经从33M提升到133M,只是与CPU的摩尔速度相比,显得慢得多了,偏偏一个桶能装的水是以最短的桶条来衡量的。到今天,要解决硬件瓶颈,已经形成了几种相对可行的方案。



  一种就是使用专门设计的多总线服务器。如Nokia IP740虽然也是X86,但内置三条PCI总线,这样就可以提高防火墙的极限吞吐量,满足一般的千兆环境。第二种是使用专门的处理插卡,换方之,就是把千兆的网卡和专门的过滤处理器做到一起,形成新的千兆网卡,大部分工作无需再经PCI总线到CPU才返回,直接在PCI1就交换完毕了。这是 CheckPoint曾经使用的方法。第三种方法与第二种相似,所不同的不是使用专门的PCI集成网卡,而是使用一个前置在Pci1总线上的单片机,直接处理防火墙的过滤转发要求。这样同样可以克服总线限制。使用这种方法的就是著名的netscreen公司的ASIC处理器。最后一种办法目前仍没有确定可行。就是使用英特的NP处理器。它的缺点是把整个防火墙变成了一个过滤器。可是防火墙虽然主要工作是过滤转发,但并不是过滤转发就是防火墙,其他功能也是很重要的。否则就与路由器没有什么区别了。另一个简单的办法就是使用RISC-SCSI的架构,也即通常所说的高档UNIX主机,由于使用64位总线,也是可以克服32位PCI总线形成的瓶颈;这也几乎是普通防火墙厂商满足千兆要求的唯一办法了,就是把防火墙软件装到UNIX主机上面,成本可想而知。



  无论是那一种方式,无不与一定量的市场需求密切相关。设计定制专门的硬件成本很高,动辄以千万美元计算,任何公司都不可能为区区一百几十台的出货量去搞什么专门的硬件。而且,千兆防火墙需求量只是百兆防火墙的几十分之一(只有败家子式的蠢才才会清一色用千兆防火墙),这就决定了即使是年出货量上千台的防火墙生产商也不能承受定制专门的千兆级硬件的成本。要知道,即使是尽得中国官方采购天时的天融信也远达不到这个出货水平。所以,世界上除非是在全世界范围内成功销售自已产品的公司,否则,推出真正的千兆防火墙是非常困难的。除非出现64位的PCI总线,否则百兆和千兆就是一个难以超越的等级;反之,一旦64 位总线成为主流,那时千兆就象今天的百兆和十兆一样,很容易就成为一个可以自动适应的网络带宽等级。到那时,瓶颈制约的就是万兆了。不过说老实话,除非是实时看高清晰度电影和电视转播,否则我的想像力根本想不出拿着万兆到底干什么好。



  目前英特正在研发新一代的网络系统总线CSA,(传输流架构),这一接口的投入,将为LOM(LAN on Motherborad)打下基础。介时,国产千兆防火墙产品就可以无需特别定制的硬件而扬帆四海了。
<< Linux免费防火墙试用手记 关于Linux网络安全的内在限制 >>
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号