防火墙性能

带宽就是 传输速率 ,是指每秒钟传输的最大比特数(bit/S),即每秒处理多少位数据,高带宽则意味着系统的高处理能力。为了更形象地理解带宽、 位宽 时钟频率 的关系,我们举个比较形象的例子,工人加工零件,如果一个人干,在大家单个加工速度相同的情况下,肯定不如两个人干的多,带宽就像是工人能够加工零件的总数量,位宽仿佛工人数量,时钟 工作频率 相当于加工单个零件的速度,位宽越宽,时钟频率越高则 总线带宽 越大,其好处也是显而易见的。
 
一般来说,一台计算机观看电影,玩游戏等,4M带宽足够.
 

带宽匹配的问题

计算机系统中存在形形色色的总线,这不可避免带来总线速度匹配问题,其中最常出问题的地方在于 前端总线内存南北桥总线和 PCI总线
前端总线与 内存匹配与否对整套系统影响最大,最理想的情况是前端 总线带宽与内存带宽相,而且内存延迟要尽可能低。在Pentium4刚推出的时候,Intel采用 RDRAM内存以达到同前端总线匹配,但RDRAM成本昂贵,严重影响推广工作,Intel曾推出搭配PC133SDRAM的845 芯片组,但SDRAM仅能提供1.06GB/s的带宽,仅相当于400MHz前端 总线带宽的1/3,严重不匹配导致系统性能大幅度下降;后来,Intel推出支持DDR266的845D才勉强好转,但仍未实现与前端总线匹配;接着,Intel将P4前端总线提升到533MHz、带宽增长至5.4GB/s,虽然配套芯片组可支持DDR333内存,可也仅能满足1/2而已;P4的前端总线提升到800MHz,而配套的865/875P芯片组可支持 双通道DDR400——这个时候才实现匹配的理想状态,当然,这个时候继续提高内存带宽意义就不是特别大,因为它超出了前端总线的接收能力。
南北桥 总线带宽曾是一个尖锐的问题,早期的 芯片组都是通过PCI总线来连接南北桥,而它所能提供的带宽仅仅只有133MB/s,若 南桥连接两个ATA-100 硬盘、100M网络、 IEEE1394接口......区区133MB/s带宽势必形成严重的 瓶颈,为此,各芯片组厂商都发展出不同的南北桥总线方案,如 Intel的Hub-Link、VIA的V-Link、SiS的MuTIOL,还有AMD的HyperTransport等等,它们的带宽都大大超过了133MB/s,最高纪录已超过1GB/s, 瓶颈效应已不复存在。
PCI 总线带宽不足还是比较大的矛盾,PC上使用的PCI总线均为32位、33MHz类型,带宽133MB/s,而这区区133MB/s必须满足网络、硬盘控制卡(如果有的话)之类的扩展需要,一旦使用千兆网络, 瓶颈马上出现,业界打算自2004年开始以PCIExpress总线来全面取代PCI总线,届时PCI带宽不足的问题将成为历史。
 



 
防火墙吞吐量是指在没有帧丢失的情况下,设备能够接收并转发的最大数据速率。[1]
相关知识
 
吞吐量的大小主要由网络设备的内外网口硬件,及程序算法的效率决定,尤其是程序算法,对于像防火墙系统这样需要进行大量运算的设备来说,算法的低效率会使通信量大打折扣。因此,大多数防火墙虽号称100M防火墙,由于其算法依靠软件实现,通信量远远没有达到100M,实际只有10M-20M。纯硬件防火墙,由于采用硬件进行运算,因此吞吐量可以接近线速,达到90-95M,是真正的100M防火墙。
吞吐量和报文转发率是关系网络设备应用的主要指标,一般采用FDT(Full Duplex Throughput)来衡量,指64字节数据包的全双工吞吐量,该指标既包括吞吐量指标也涵盖了报文转发率指标。
吞吐量的测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示。[1]
 
与带宽的区别
 
吞吐量与 带宽的区分:吞吐量和带宽是很容易搞混的一个词,两者的单位都是Mbps。先来看两者对应的英语,吞吐量:throughput;带宽:Max net bitrate。当讨论通信链路的 带宽时,一般是指链路上每秒所能传送的 比特数,它取决于链路时钟速率和信道编码在计算机网络中又称为 线速。可以说 以太网带宽是10Mbps。但是需要区分链路上的可用 带宽(带宽)与实际链路中每秒所能传送的 比特数(吞吐量)。通常更倾向于用“吞吐量”一词来表示一个系统的测试性能。这样,因为实现受各种低效率因素的影响,所以由一段 带宽为10Mbps的链路连接的一对 节点可能只达到2Mbps的吞吐量。这样就意味着,一个 主机上的应用能够以2Mbps的速度向另外的一个主机发送数据
 
 

一般来说,防火墙的性能包括吞吐量、延迟、背靠背、丢包率、最大并发连接数以及每秒新建连接数等六项指标。

    一般防火墙的延迟在几十毫秒到几百毫秒之间,而一般用户访问服务器需要经过十几甚至几十个网络设备,因此,在用户实际应用中,防火墙的延迟对于用户的影响几乎是感觉不到的;背靠背是考察防火墙为保证连续不丢包所具备的缓冲能力,当网络流量突增而防火墙一时无法处理时,它可以把数据包先缓存起来再发送,可见,背靠背这一性能指标是有具体意义的,但是随着带宽的不断增长,防火墙内存能缓存的数据包也是非常有限的,有数据表明,在百兆环境中,10M内存只能缓存1秒钟的数据流量,因此,背靠背这一性能指标在实际评估防火墙性能时没有太大意义;丢包率其实就是考察防火墙的吞吐能力,故丢包率这一性能指标也就显得不是那么重要了,仅供参考而已。因此,衡量防火墙性能高低,关键要看其吞吐量、最大并发连接数以及每秒新建连接数等性能指标。

    基于ASIC芯片架构防火墙在吞吐量性能方面的优点很突出,其吞吐量都能达到100%线速;但是其缺点同样也很突出,最大并发连接数低、每秒新建连接数低

 
 

  那么,一般防火墙到底需要多少个连接呢?不同的服务所建立的连接数是不一样的。如HTTP服务,每个herf都将是一个连接,这就表示显示一个图片就要新建立一个连接,因此,浏览一个网页通常出现20个以上的连接,这种连接建立的快,拆除的也快;FTPTelnet就不一样了,使用FTP或者Telnet下载上百兆的文件,也只是一个连接,但如果使用多线程下载工具,如FlashGet,每个下载任务可同时开启10个线程进行下载,每个线程就是一个连接,且这种下载工具最多可支持8个任务同时下载。假设有100个员工组成的中小型企业网需要上网,其中同时浏览网页的有30人,有10人分别使用10线程下载文件,有20人在进行如FTP、数据库访问这样的连接,剩下40人不对外访问。很显然,每秒新建400个连接的防火墙根本无法满足该企业的日常需要,更无法满足大型企事业单位,尤其是电信运营商的需要。

    但是,目前市场上流行的基于NP架构的防火墙,例如联想网御强五系列防火墙,其每秒新建连接数可达1800064Bytes小数据包处理能力可达7Gbps512Bytes以上数据包处理能力可达到万兆级,这样的防火墙产品就可以很好地满足上述企业的网络需求。

 

吞吐量        1Gbps  1.7Gbps  650M
最大连接数    120万  50万   40万
每秒新增连接数  22000  9400  20000

 

 

 

防火墙是目前网络安全领域广泛使用的设备。 其主要目的就是保证对合法流量的保护和对非法流量的抵御。众所周知, 在世界范围内网络带宽(包括核心网络及企业边缘网络)总的趋势是不断的提速升级, 然而从网络的整体结构上看, 防火墙恰处于网络的末端。显而易见,防火墙的性能将对最终网络 用户得到的实际带宽有决定性的影响。所以目前防火墙的性能指标日益为人们所重视,地位也越来越重要。

防火墙的分类 

关于防火墙的分类方式有很多种: 例如按体系结构可分为纯软件,软硬结合和 纯硬件防火墙; 按逻辑功能可分为静态包过滤、动态包过滤和 应用代理型防火墙等。 本文所讨论的测试内容适合绝大部分上述防火墙。 有关各种类型防火墙的信息, 读者可从各大国际信息安全实验室的网站中获得, 这 里将不再赘述。

防火墙的二层和三层测试

一般说来, 对于一个没有设置规则的防火墙设备, 我们可以近似的当作一个普通的网络互联设备来进行性能测试。 虽然对于少数设备来说这样的近似并不准确。 RFC1242和RFC2544是在进行这种测试的主要标准。 RFC1242是对于一般的网络设备的测试术语的定义, 而RFC2544则是对于测试方法的定义。 对大多数在中国从事网络工作的技术人员来说, 这两个RFC并不陌生。 这里对个别要点做以简单的介绍。

首先将防火墙设置为“透明模式”。 如果其支持“网桥透明模式”和“路由透明模式”, 则在两种情况下建议都进行测试比对。 普遍的测试 帧封装格式为UDP, 测试帧的大小为64,128,256,512,1024,1280、1518。 在时间紧迫的情况下, 也可抽取64、512、1518这几种帧长做为选择。 测试的指标包括吞吐量(Throughput)、发送延迟(Latency)、丢包率(Packet Loss)、背对背 缓冲(Back to Back)。 这几个指标实际上侧重在相同的测试条件下对不同的网络设备之间做性能比较, 而不针对仿真实际流量。 我们也称其为“基准测试”(Base Line Testing)。 基准测试是一个很重要的概念, 贯穿于各种不同的数据设备的评测之中。在四个指标里面, 吞吐量 是应该先被测试的,然后用测出的数值作为发送速率上限,来进行延迟指标的测试。从经验上来讲,纯软件和软硬结合的防火墙在测试的时候有可能表现不太稳定,常出现测试结果有上下波动的情况。 这是个在测试防火墙时候的现实问题。要解决它, 一般建议将防火墙在每次测试之间上电重启动, 以保证测试的可重复性。 另外一个办法就是测多次, 取平均值。 后者考虑到了防火墙稳定性的因素,相对来讲反映了更贴近实际使用的方面, 所以也不失为一个好选择。

这个二层和三层的测试可以提供哪些有用的信息呢? 它可以帮助确定性能瓶颈是存在于下层的交换转发机制, 还是在上层协议的处理。 换句 话说,它有利于故障的定位。 即使对于一些不做交换转发的厂商,他们也可以发现所采用的网卡及所改写的驱动程序是否满足性能要求,同时也能够得到一些功能上的验证(如双工/速率状态是否正常等等)。对很多用户来讲, 除非他们想把这个防火墙只当作一个普通的路由器来用, 否则不配置任何的安全规则是比较少 见的。 而在有规则的条件下进行的性能测试显然更有意义一些。 我们将这部分的讨论放到后面的四层到七层的测试部分中。 因为有很多的规则都是既涉及到三层的信息也有四层的信息。

 

基准测试

(Base Line Testing)

首先是在防火墙配置规则情况下的性能测试。

这个测试和上篇中的二层/三层的测试是比较接近的。 但是此时需要在防火墙上配置规则。在一些防火墙的结构中,设置规则与透明模式相比, 将调用另外的例程,从而表现得大相径庭。我们在测试中应该考虑到这一点,所以建议可根据自己的需要设置数量不等的规则,再进行性能比较。 例如, 可采用1, 50, 100, 500, 1000甚至更多的规则, 然后再重复进行二层/三层的测试。 在这其中又分两种情况: 1.将所有发送的流量设置为可以通过该设备,此时可以直接和透明模式测试结果做比较,查看规则对性能的整体影响。2.将流量配置成含有“阻塞/通过”的多样化, 这样就需要使用的测试仪表能够提供强大的数据流发送功能, 而且在接收时将不同数据流区分出来。 在检查了“通过数据流”的性能的同时,亦可验证“阻塞数据流”是否生效。 这种测试的优势在于同时检查了被测设备的功能和性能, 而且更加符合实际的情况。

防攻击性能测试(DoS/DDoS)

攻击测试是很重要的一部分。 此时我们可采用一些典型的攻击方式如:Syn Flood, Ping Flood,Smurf等。 主要的目的是看看防火墙是不是能够成功的将其挡住。 当我们将合法流量混合攻击流量时,我们更可以看到防火墙在处理攻击的同时,对于高速的合法流量如何处理。一般来讲, 攻击测试既可以使用测试仪表实现, 也可以使用软件实现, 如一些黑客程序等, 但是象Syn Flood这样的攻击则对速度要求很高, 故使用测试仪表发送才能测出有意义的结果。 使用仪表时, 应注意对将来不断涌现的攻击方式做通盘考虑。 最好是能够对包的填充内容做完全控制, 而且有较好的脚本编程的功能。在使用软件做攻击模拟时最好有仪表同时模拟背景流量。

另外需要指出的是: 并非所有攻击都应该被全部挡在外面。 如Syn Flood的攻击至少用满足某个门限值才能够被防火墙确认, 然后实施拦截。再如Tear Drop攻击也能够被防火墙发现然后重组转发出去。 所以要根据攻击类型特别注意加以分析。 为确保所下结论正确, 建议在内网旁路一个协议分析仪进行捕获和分析。

TCP连接性能测试

人们一提到L4-L7的测试, 就自然想到了TCP 连接(TCP Connection)。 关于连接的测试一般有两个方面。

1. 并发连接总数的测试。 并发连接是一个很重要的指标。 它主要反映了被测设备维持多个会话的能力。关于此指标的争论也有很多。一般来说,它是和测试条件联系紧密的。 但是这方面的考虑有时会被人们忽略。 比如,测试的时候采用的传输文件大小就会对测试结果有一定的影响。可以这样考虑:如果在传输中高层流量很大的话, 被测设备将会占用很大的系统资源去处理包检查,导致无法处理新请求的连接,引起测试结果偏小。 反之则测试结果会大一些。 所以没有测试条件而只谈并发连接数是难以定断的。 从宏观上来看, 这个测试的最终目的是比较不同设备的“资源”。也就是说处理器资源和存储资源的综合表现。中国市场上出现了大家盲目攀比并发连接数的情况。事实上,并发几十万的连接数应该足可以满足一个电信级的数据中心服务网络了,对于一般的企业来讲, 甚至可能并发几千个连接数已经绰绰有余。 并发连接总数应能由仪表自动测试结果, 以减少测试所用的时间和人力。

2. 并发连接处理速率。这个指标主要体现了被测设备对于连接请求的实时反应能力。对于中小用户来讲,这个指标就显得更为重要。 可以设想一下,当被测设备每秒可以更快的处理连接请求,而且可以更快的传输数据的话,网络中的并发连接数就会倾向于偏小,从而设备的压力也会减小,用户看到的防火墙性能也就越好。所以并发连接处理速率的确是个很重要的指标。理想的测试工具可以帮助使用者搜索到被测设备能够处理的峰值, 减轻其工作的负担。

有效吞吐量测试(TCP GoodPut)

当我们谈起吞吐量时,大多都是指二层/三层的测试结果。但是随着测试面向的流量转为四层以上, 有效吞吐量的概念就显得重要起来了。这个概念通俗点讲, 就是除掉TCP因为丢包和超时重发的数据, 实际的每秒传输有效速率。 计算的方式也很简单明了:用所传输的文件大小除以传完这个文件的时间, 得到一个平均速率, 称为“有效吞吐量”。 不难看出,这个概念实际上和前面所提到的“吞吐量”是完全不同的。请注意避免混淆。在RFC2647中也对此概念有所说明。那么通过这个测试我们能够得到什么信息呢?首先,我们可以知道测试中的延迟和丢包对最终用户的影响有多大。因为最终用户是不关心二层三层的。他们的大部分应用都是运行在四层以上。如果有效吞吐量性能不好(即使二/三层的转发性能不错),则会导致整个主机看起来运行缓慢。其次,这个测试也有助于帮助厂商定位问题及找到系统的未来可发展空间。可以将此结果和基准测试中的结果做一对比,确定是第三层的转发引擎还是第四层的状态检查影响了系统性能。在做此测试的时候, 应该注意采用多个模拟的主机进行混合测试。原因是由于TCP是采用“滑动窗口”的状态相关的协议,所以理论上讲, 模拟单个主机是无法使链路的最大性能发挥出来的。

TCP连接建立的延迟

RFC2647中提出了测量这个指标。 理想的情况是测量出每个连接从发起到确认连接建立的时间差, 给出最大、最小和平均的测试值。 事实上, 做到这点是相当困难的, 因为测试工具必须能够跟踪上万个连接, 而且能够实时的将它们的相应报文挑出来, 分别进行统计。 而目前来看还没有一个这么强大的工具能做到这点。 所以在多数情况下可采用几种方式代替, 如测量单位时间内实际建立的连接数(排除缓冲区的影响), 或测量客户端收到第一个字节数据的时间等等。

真实环境测试

(Real World Testing)

限于篇幅, 本文将主要介绍一下所谓“真实环境测试”的概念。 这种测试是最近比较热门的一种提法。 其主要特点是尽可能地把测试的流量和测试的环境接近于真实, 甚至有可能就将真实的流量捕获之后重放到网络上面。为了区别前面讨论的“基准测试”, 我们举一个小例子: 当我们的防火墙在网上运行的时候, 在某一时间面内, TCP连接可能存在着三种情况: 有的正在建立, 有的正在传输数据, 有的正在关闭。这是一个“真实”的情况。 但是我们在做“基准测试”的时候并没有考虑这样一个复杂而混乱的情况, 而选择了相对来说比较“纯净”的测试流量模型, 即不断的建立连接, 然后传输数据, 而后依此关闭连接。从而我们得到一个好处: 测试结果比较稳定, 流量模型可控。

但是我们失去了一些真实性。 有可能会造成一些问题难以在测试中发现。 再举一个例子: 用户上网的时候都有各自的接入速率, 在到达网站的路径上都会有丢包, 在看网页的时候可能有自己的思考时间, 在网页下载缓慢的时候也有自己的容忍限度等等, 这些都是一些现实问题, 都可能对选择设备和网络设计产生影响, 而这些问题在“基准测试”中是被忽略的, 被认为是理想的, 而恰恰是“真实环境测试”需要考虑的。从这两个例子中我们可以简单总结出一条结论: “真实环境测试”实际上是一种绝对测试, 即对测试个体在网络的真实运行状态的一个绝对的评价; “基准测试”则是一种稳定的相对测试, 侧重点在于不同产品之间的比对。 二者各有其优势。而“真实环境测试”由于在以前的测试中重视不够, 所以目前发展空间比较大, 值得关注。 以后我们将另文深入探讨该测试, 但这里需要指出的是, 不要简单的认为使用真实的捕获的流量的测试就是“真实环境测试”。

防火墙术语:吞吐量,最大并发连接数

  1. 吞吐量:网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要耗费资源。吞吐量是指在不丢包的情况下单位时间内通过防火墙的数据包数量. 随着Internet的日益普及,内部网用户访问Internet的需求在不断增加,一些企业也需要对外提供诸如WWW页面浏览、FTP文件传输、DNS 域名解析等服务,这些因素会导致网络流量的急剧增加,而防火墙作为内外网之间的唯一数据通道,如果吞吐量太小,就会成为网络瓶颈,给整个网络的传输效率带 来负面影响。因此,考察防火墙的吞吐能力有助于我们更好的评价其性能表现。这也是测量防火墙性能的重要指标.吞吐量的大小主要由防火墙内网卡,及程序算法 的效率决定,尤其是程序算法,会使防火墙系统进行大量运算,通信量大打折扣。因此,大多数防火墙虽号称100M防火墙,由于其算法依靠软件实现,通信量远 远没有达到100M,实际只有10M-20M。纯硬件防火墙,由于采用硬件进行运算,因此吞吐量可以达到线性90-95M,是真正的100M防火墙. 对于中小型企业来讲,选择吞吐量为百兆级的防火墙即可满足需要,而对于电信、金融、保险等大公司大企业部门就需要采用吞吐量千兆级的防火墙产品。
  2. 并发连接数:并发连接数是指防火墙或代理服务器对其业务信息流的处理能力,是防火墙能够同时处理的点对点连接的最大数目,它反映出防火墙设备对多个连接的访问控制能力和连接状态跟踪能力,这个参数的大小直接影响到防火墙所能支持的最大信息点数。 

    并发连接数是衡量防火墙性能的一个重要指标。在 目前市面上常见防火墙设备的说明书中大家可以看到,从低端设备的500、1000个并发连接,一直到高端设备的数万、数十万并发连接,存在着好几个数量级 的差异。那么,并发连接数究竟是一个什么概念呢?它的大小会对用户的日常使用产生什么影响呢?要了解并发连接数,首先需要明白一个概念,那就是“会话”。 这个“会话”可不是我们平时的谈话,但是可以用平时的谈话来理解,两个人在谈话时,你一句,我一句,一问一答,我们把它称为一次对话,或者叫会话。同样, 在我们用电脑工作时,打开的一个窗口或一个Web页面,我们也可以把它叫做一个“会话”,扩展到一个局域网里面,所有用户要通过防火墙上网,要打开很多个 窗口或Web页面发(即会话),那么,这个防火墙,所能处理的最大会话数量,就是“并发连接数”。 
    像路由器的路由表存放路由信息一样,防火墙 里也有一个这样的表,我们把它叫做并发连接表,是防火墙用以存放并发连接信息的地方,它可在防火墙系统启动后动态分配进程的内存空间,其大小也就是防火墙 所能支持的最大并发连接数。大的并发连接表可以增大防火墙最大并发连接数,允许防火墙支持更多的客户终端。尽管看上去,防火墙等类似产品的并发连接数似乎 是越大越好。但是与此同时,过大的并发连接表也会带来一定的负面影响: 
    (1).并发连接数的增大意味着对系统内存资源的消耗 
    以 每个并发连接表项占用300B计算,1000个并发连接将占用300B×1000×8bit/B≈2.3Mb内存空间,10000个并发连接将占用 23Mb内存空间,100000个并发连接将占用230Mb内存空间,而如果真的试图实现1000000个并发连接的话那么,这个产品就需要提供 2.24Gb内存空间! 
    (2).并发连接数的增大应当充分考虑CPU的处理能力 
    CPU 的主要任务是把网络上的流量从一个网段尽可能快速地转发到另外一个网段上,并且在转发过程中对此流量按照一定的访问控制策略进行许可检查、流量统计和访问 审计等操作,这都要求防火墙对并发连接表中的相应表项进行不断的更新读写操作。如果不顾CPU的实际处理能力而贸然增大系统的并发连接表,势必影响防火墙 对连接请求的处理延迟,造成某些连接超时,让更多的连接报文被重发,进而导致更多的连接超时,最后形成雪崩效应,致使整个防火墙系统崩溃。 
    (3).物理链路的实际承载能力将严重影响防火墙发挥出其对海量并发连接的处理能力 
    虽 然目前很多防火墙都提供了10/100/1000Mbps的网络接口,但是,由于防火墙通常都部署在Internet出口处,在客户端PC与目的资源中间 的路径上,总是存在着瓶颈链路——该瓶颈链路可能是2Mbps专线,也可能是512Kbps乃至64Kbps的低速链路。这些拥挤的低速链路根本无法承载 太多的并发连接,所以即便是防火墙能够支持大规模的并发访问连接,也无法发挥出其原有的性能。 
    有鉴于此,我们应当根据网络环境的具体情况和个 人不同的上网习惯来选择适当规模的并发连接表。因为不同规模的网络会产生大小不同的并发连接,而用户习惯于何种网络服务以及如何使用这些服务,同样也会产 生不同的并发连接需求。高并发连接数的防火墙设备通常需要客户投资更多的设备,这是因为并发连接数的增大牵扯到数据结构、CPU、内存、系统总线和网络接 口等多方面因素。如何在合理的设备投资和实际上所能提供的性能之间寻找一个黄金平衡点将是用户选择产品的一个重要任务。按照并发连接数来衡量方案的合理性 是一个值得推荐的办法。 
    以每个用户需要10.5个并发连接来计算,一个中小型企业网络(1000个信息点以下,容纳4个C类地址空间)大概 需要10.5×1000=10500个并发连接,因此支持20000~30000最大并发连接的防火墙设备便可以满足需求;大型的企事业单位网络(比如信 息点数在1000~10000之间)大概会需要105000个并发连接,所以支持100000~120000最大并发连接的防火墙就可以满足企业的实际需 要; 而对于大型电信运营商和ISP来说,电信级的千兆防火墙(支持120000~200000个并发连接)则是恰当的选择。为较低需求而采用高端的防火 墙设备将造成用户投资的浪费,同样为较高的客户需求而采用低端设备将无法达到预计的性能指标。利用网络整体上的并发连接需求来选择适当的防火墙产品可以帮 助用户快速、准确的定位所需要的产品,避免对单纯某一参数“愈大愈好”的盲目追求,缩短设计施工周期,节省企业的开支。从而为企业实施最合理的安全保护方 案。 

    在利用并发连接数指标选择防火墙产品的同时,产品的综合性能、厂家的研发力量、资金实力、企业的商业信誉和经营风险以及产品线的 技术支持和售后服务体系等都应当纳入采购者的视野,将多方面的因素结合起来进行综合考虑,切不可盲目的听信某些厂家广告宣传中的大并发连接的宣传,要根据 自己业务系统、企业规模、发展空间和自身实力等因素多方面考虑。

 

 

 防火墙的性能测试包括以下内容:
 
  · 吞吐量(Throughput)(RFC2544)
 
  · 丢包率(FrameLossRate)(RFC2544)
 
  · 延迟(Latency)(RFC2544)
 
  · 最大并发连接数(ConcurrentSessions)(RFC2647)
 
  · 每秒新连接的建立能力(NewSessions)(RFC2647)
 
  1)吞吐量测试
 
  防火墙在各种帧长的满负载(100M或1000M)双向(BidirectionalTraffic)UDP数据包情况下的稳定性表现。这项测试用来确定防火墙在接收和发送数据包而没有丢失情况下的最大数据传输速率,是测试防火墙在正常工作时的数据传输处理能力,是其它指标的基础。它反映的是防火墙的数据包转发能力。因为数据流中一帧的丢失会导致由于高层协议等待超时而产生重大延迟,所以知道防火墙实际的最大数据传输速率是非常有用的。同时该项指标还能用于判断防火墙设备在超过自身负载的情况下稳定性问题。这项测试与防火墙本身的CPU速率、DRAM内存的大小等基本配置有着直接的关系。
 
  测试单位:fps(framepersecond),每秒钟传输的帧个数。
 
  【测试条件】
 
  测试仪配置
 
  100M速率,单工(100Mbit/shalf-duplex);
 
  1000M速率,单工(1000Mbit/shalf-duplex);
 
  单向(UnidirectionalTraffic)/双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;
 
  测试Trial数:2;
 
  测试时长:120秒;
 
  允许的丢包率(LossTolerance):0(Zero-loss);
 
  测试帧长(FrameSize):64、128、256、512、1518bytes。
 
  【测试项目】
 
  1.防火墙在1条规则情况下关闭NAT时的各种帧长的数据包转发能力(双向)。
 
  2.防火墙在1条规则情况下打开NAT时的各种帧长的数据包转发能力(单向)。
 
  3.防火墙在100条规则情况下各种帧长的数据包转发能力(双向)。
 
  2)丢包率
 
  这项测试用来确定防火墙在不同传输速率下丢失数据包的百分数,目的在于测试防火墙在超负载情况下的性能。
 
  以特定速率发送特定数量的数据包通过防火墙,然后计算被防火墙转发的数据包数量。丢包率用以下公式计算:
 
  ((input_count-output_count)*100%)/input_count
 
  测试单位:被丢弃的帧占所有应转发的帧的百分比
 
  【测试条件】
 
  100M速率,单工(100Mbit/sHalf-duplex);
 
  1000M速率,单工(1000Mbit/sHalf-duplex);
 
  双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;
 
  测试Trial数:2;
 
  测试时长:120秒;
 
  测试帧长(FrameSize):64、128、256、512、1518bytes
 
  【测试项目】
 
  防火墙在1条规则情况下各种帧长的数据包转发能力下的丢包率3)延迟
 
  这项测试通常是指测试从测试数据帧的最后一个比特进入被测设备端口开始至测试数据包的第一个比特从被测设备另一端口离开的时间间隔。它的表现也同样取决于防火墙的基本配置。
 
  首先确定在各种帧大小(同上)下防火墙的吞吐量,然后以指定帧大小发送数据流穿过防火墙到指定的目标地址。
 
  测试单位:ns(10-9秒)。
 
  【测试条件】
 
  测试仪配置
 
  £100M速率,全双工(100Mbit/sFull-duplex);
 
  £1000M速率,全双工(1000Mbit/sFull-duplex);单向(UnidirectionalTraffic)/双向(BidirectionalTraffic);适用于NAT测试、IXIA或Smatbit生成的数据流,UDP数据包;
 
  测试Trial数:2;
 
  测试时长:120秒;
 
  允许的丢包率(LossTolerance):0(Zero-loss);
 
  测试帧长(FrameSize):64、128、256、512、1518bytes。
 
  【测试项目】
 
  1.防火墙在1条规则情况下关闭NAT时的数据包转发(通过)能力情况下的各种帧长的延迟(双向)
 
  2.防火墙在1条规则情况下打开NAT时的数据包转发(通过)能力情况下的各种帧长的延迟(单向)
 
  3.防火墙在100条规则情况下吞吐量为极限吞吐量双向工作情况下各种帧长的相应延迟
 
  4.防火墙在吞吐量为20M全双工情况下各个帧长情况下的延迟
 
  4)防火墙在有一定背景流量下支持的连接数测试
 
  【测试目的】
 
  测试目的在于得出一定流量下防火墙所能顺利建立和保持的并发连接数及一定数量的连接情况下防火墙的吞吐量变化。
 
  【测试条件】
 
  测试仪配置
 
  £100M速率,全双工(100Mbit/sFull-duplex);
 
  £1000M速率,全双工(1000Mbit/sFull-duplex);
 
  双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;
 
  连接数的生成可以使用IXIA或Smatbit
 
  测试Trial数:2;
 
  允许的丢包率(LossTolerance):0(Zero-loss);
 
  测试帧长(FrameSize):64、512、1518bytes。
 
  流量分别设置为一对100Mbps以太网接口全双工线速转发;
 
  两对100Mbps以太网接口全双工线速转发;
 
  连接数设置为每秒建立2000个连接保持200000个会话连接
 
  【测试项目】
 
  防火墙在1条规则情况下,保持一定数量的会话连接时的数据包转发(通过)能力5)防火墙支持的连接数测试
 
  【测试目的】
 
  在此项测试中,分别测试防火墙的每秒所能建立起的TCP/HTTP连接数及防火墙所能保持的最大TCP/HTTP连接数。测试在1条安全规则下打开和关闭NAT(静态)对TCP连接的新建能力和保持能力。
 
  【测试条件】
 
  测试仪配置
 
  £100M速率,全双工(100Mbit/sFull-duplex);
 
  £1000M速率,全双工(1000Mbit/sFull-duplex);
 
  双向(BidirectionalTraffic)、IXIA或Smatbit生成的HTTP数据流;每个端口设置发送10000个,使用交换机连接1-2个端口为一组。
 
  连接数的生成可以使用IXIA或Smatbit。
 
  测试Trial数:2;
 
  【测试项目】
 
  1.防火墙在一条规则情况下每秒TCP新连接的建立能力。
 
  2.防火墙在一条规则情况下对TCP连接的保持能力。
 
  6)背靠背缓存能力
 
  【测试目的】
 
  背靠背是指以最小帧间隔发送最多数据包而不引起丢包时的数据包数量。该指标用于测试防火墙的数据缓存能力,描述了网络设备承受突发数据的能力,即对突发数据的缓冲能力。
 
  【测试条件】
 
  测试仪配置
 
  £100M速率,全双工(100Mbit/sFull-duplex);
 
  £1000M速率,全双工(1000Mbit/sFull-duplex);
 
  双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;
 
  连接数的生成可以使用IXIA或Smatbit。
 
  【测试项目】
 
  以最小帧间隔发送一定数量(测试时间尽可能长,一般选择120s,40M)的突发帧至被测设备的输入口,记录被测设备正确转发的帧数,如果全部正确转发,增加发送帧数再测试,否则减少发送帧数再测试,直到找到极限值。
 
  此项性能与帧长度可能有关,所以需对不同帧长度的数据流分别测试。
 
  7)有效通过率
 
  根据RFC2647对防火墙测试的规范中定义的一个重要的指标:goodput(防火墙的真实有效通过率)
 
  因为防火墙在测试过程中,总会有数据包的丢失和重发,所以简单的测试防火墙的通过率是片面的,goodput从应用层测试防火墙的真实有效的传输数据包速率。
 
  简单的说,就是防火墙端口的总转发数据量(bps)减去丢失的和重发的数据量(bps)。
 
  测试方法:用smartbit模拟300个http的请求,看单位时间内最大传输的速率(bps)。
 
 

测试工具:
bench
UnixBench[1]是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试VPS性能的工具.
UnixBench会执行一系列的测试,包括2D和3D图形系统的性能衡量,测试的结果不仅仅只是CPU,内存,或者磁盘为基准,还取决于硬件,操作系统版本,编译器.
测试系统各个方面一系列的性能,然后将每个测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分数值.
一、             概述
    UNIXBENCH也是linux、unix测试系统基准性能的经典工具,UNIXBENCH测试包含了系统调用、读写、进程、2D、3D、管道、运算、C库等系统基准性能,它的优点在于提供了对系统性能的一种评价体系,为系统评分,如此方便对系统作对比测试;但UNIXBENCH在网络性能测试欠缺。
二、             测试内容
    unixbench5测试内容包含了system、2d、3d、misc测试项。system测试系统的一些基本功能;2d测试2D图形加速;3d测试3D加速;misc测试诸如字符,整型等测试。详情见下面。


一、http_load


程序非常小,解压后也不到100K


http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工


具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。


下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz
安装很简单
#tar zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make && make install


命令格式:http_load  -p 并发访问进程数  -s 访问时间  需要访问的URL文件


参数其实可以自由组合,参数之间的选择并没有什么限制。比如你写成http_load -parallel 5 -seconds


300 urls.txt也是可以的。我们把参数给大家简单说明一下。
-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate    简写-p :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间


准备URL文件:urllist.txt,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好.文件格式


如下:
http://www.vpser.net/uncategorized/choose-vps.html
http://www.vpser.net/vps-cp/hypervm-tutorial.html
http://www.vpser.net/coupons/diavps-april-coupons.html
http://www.vpser.net/security/vps-backup-web-mysql.html
例如:


http_load -p 30 -s 60  urllist.txt
参数了解了,我们来看运行一条命令来看看它的返回结果
命令:% ./http_load -rate 5 -seconds 10 urls说明执行了一个持续时间10秒的测试,每秒的频率为5。


49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean bytes/connection4.89274


fetches/sec, 28945.5 bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488 minmsecs/first


-response: 63.5362 mean, 81.624 max, 57.803 minHTTP response codes: code 200 -- 49


结果分析:
1.49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒
2.5916 mean bytes/connection说明每一连接平均传输的数据量289884/49=5916
3.4.89274 fetches/sec, 28945.5 bytes/sec
说明每秒的响应请求为4.89274,每秒传递的数据为28945.5 bytes/sec
4.msecs/connect: 28.8932 mean, 44.243 max, 24.488 min说明每连接的平均响应时间是28.8932 msecs


,最大的响应时间44.243 msecs,最小的响应时间24.488 msecs
5.msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
6、HTTP response codes: code 200 -- 49     说明打开响应页面的类型,如果403的类型过多,那可能


要注意是否系统遇到了瓶颈。
特殊说明:
测试结果中主要的指标是 fetches/sec、msecs/connect 这个选项,即服务器每秒能够响应的查询次数,


用这个指标来衡量性能。似乎比 apache的ab准确率要高一些,也更有说服力一些。
Qpt-每秒响应用户数和response time,每连接响应用户时间。
测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的


cpu、men进行分析,才能得出结论


二、webbench


webbench是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。下载


地址可以到google搜,我这里给出一个
下载地址:http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz
这个程序更小,解压后不到50K,呵呵
安装非常简单
#tar zxvf webbench-1.5.tar.gz
#cd webbench-1.5
#make && make install
会在当前目录生成webbench可执行文件,直接可以使用了


用法:


webbench -c 并发数 -t 运行测试时间 URL
如:
webbench -c 5000 -t 120 http://www.vpser.net/


三、ab
ab是apache自带的一款功能强大的测试工具
安装了apache一般就自带了,
用法可以查看它的说明


$ ./ab
./ab: wrong number of arguments
Usage: ./ab [options] [http://]hostname[:port]/path
Options are:
-n requests Number of requests to perform
-c concurrency Number of multiple requests to make
-t timelimit Seconds to max. wait for responses
-p postfile File containing data to POST
-T content-type Content-type header for POSTing
-v verbosity How much troubleshooting info to print
-w Print out results in HTML tables
-i Use HEAD instead of GET
-x attributes String to insert as table attributes
-y attributes String to insert as tr attributes
-z attributes String to insert as td or th attributes
-C attribute Add cookie, eg. 'Apache=1234. (repeatable)
-H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
Inserted after all normal header lines. (repeatable)
-A attribute Add Basic WWW Authentication, the attributes
are a colon separated username and password.
-P attribute Add Basic Proxy Authentication, the attributes
are a colon separated username and password.
-X proxy:port Proxyserver and port number to use
-V Print version number and exit
-k Use HTTP KeepAlive feature
-d Do not show percentiles served table.
-S Do not show confidence estimators and warnings.
-g filename Output collected data to gnuplot format file.
-e filename Output CSV file with percentages served
-h Display usage information (this message)
参数众多,一般我们用到的是-n 和-c
例如:
./ab -c 1000 -n 100 http://www.vpser.net/index.php


这个表示同时处理1000个请求并运行100次index.php文件.
四、Siege
一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
官方:http://www.joedog.org/
Siege下载:http://soft.vpser.net/test/siege/siege-2.67.tar.gz
解压:
# tar -zxf siege-2.67.tar.gz
进入解压目录:
# cd siege-2.67/
安装:
#./configure ; make
#make install


使用
siege -c 200 -r 10 -f example.url
-c是并发量,-r是重复次数。 url文件就是一个文本,每行都是一个url,它会从里面随机访问的。


example.url内容:


http://www.licess.cn
http://www.vpser.net
http://soft.vpser.net


结果说明
Lifting the server siege… done.
Transactions: 3419263 hits //完成419263次处理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 5999.69 secs //总共用时
Data transferred: 84273.91 MB //共数据传输84273.91 MB
Response time: 0.37 secs //相应用时1.65秒:显示网络连接的速度
Transaction rate: 569.91 trans/sec //均每秒完成 569.91 次处理:表示服务器后
Throughput: 14.05 MB/sec //平均每秒传送数据
Concurrency: 213.42 //实际最高并发数
Successful transactions: 2564081 //成功处理次数
Failed transactions: 11 //失败处理次数
Longest transaction: 29.04 //每次传输所花最长时间
Shortest transaction: 0.00 //每次传输所花最短时间


Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多快的速度接收数据。
Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。
网络性能
编辑


TCP


由于TCP协议能够提供端到端的可靠传输,因此被大量的网络应用程序使用。但是,可靠性的建立是要付出代价的。TCP协议保证可靠性的措施,如建立并维护连接、控制数据有序的传递等都会消耗一定的网络带宽。
Netperf可以模拟三种不同的TCP流量模式:
1) 单个TCP连接,批量(bulk)传输大量数据
2) 单个TCP连接,client请求/server应答的交易(transaction)方式
3) 多个TCP连接,每个连接中一对请求/应答的交易方式
UDP


UDP没有建立连接的负担,但是UDP不能保证传输的可靠性,所以使用UDP的应用程序需要自行跟踪每个发出的分组,并重发丢失的分组。
Netperf可以模拟两种UDP的流量模式:
1) 从client到server的单向批量传输
2) 请求/应答的交易方式
由于UDP传输的不可靠性,在使用netperf时要确保发送的缓冲区大小不大于接收缓冲区大小,否则数据会丢失,netperf将给出错误的结果。因此,对于接收到分组的统计不一定准确,需要结合发送分组的统计综合得出结论。


除了netperf以外,还有很多其它的网络性能测试工具,如dbs, iperf, pathrate, nettest, netlogger, tcptrace, ntop等。这些工具有其各自的特色和不同的侧重点,我们可以根据具体的应用环境,有选择的使用它们,这样就可以使这些工具发挥出最大的功效。虽然都是开放源代码的软件,但是这些工具的功能与商业的网络测试工具同样强大,而且也得到了广泛的应用,熟悉这些工具对我们的实际工作一定会有很大的帮助。

基于Chariot的网络吞吐量的性能分析


genk
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值