防火墙性能指标
(2013-07-13 12:59:56)分类: FireWall |
性能指标对于防火墙而言是很重要的一个方面,很多用户只通过并发连接数等指标来考察防火墙性能,这是一个很大的误区,那防火墙的指标应该有哪些组成呢?关键的几个指标应该包括吞吐量、丢包率、延迟。
吞吐量(Throughput)
吞吐量是衡量一款防火墙设备的最重要的指标,它是指防火墙设备在不丢包情况下每秒内处理数据包的最大能力。
注:吞吐量意味这台设备在每一秒以内所能够处理的最大流量或者说每一秒内能处理的数据包个数。
设备吞吐量越高,所能提供给用户使用的带宽越大,就像木桶原理所描述的,网络的最大吞吐取决于网络中的最低吞吐量设备,足够的吞吐量可以保证防火墙不会成为网络的瓶颈。
举一个形象的例子,一台防火墙下面有100个用户同时上网,每个用户分配的是10Mbps的带宽,那么这台防火墙如果想要保证所有用户全速的网络体验,必须要有至少1Gbps的吞吐量。
吞吐量的计量单位有两种方式:常见的就是带宽计量,单位是Mbps(Megabits per second)或者Gbps(Gigabits per second),另外一种是数据包处理量计量,单位是pps(packets per second),两种计量方式是可以相互换算的。在进行对一款设备进行吞吐性能测试时,通常会记录一组从64字节(最小包)到1518字节(最大包)的测试数据,每一个测试结果均有相对应的pps数。我们会以最小包64字节为基准,也就是64字节的pps,基本上可以反映出设备处理数据包的最大能力,所以从64字节的这个数,基本上可以推算出系统最大能处理的吞吐量是多少。
很多设备的性能指标有一点就是标称xxMpps,所指的就是设备处理64字节的pps数。比如64字节的pps为100000pps,吞吐量通过换算为100000×(64+20) ×8/1000000= 67.2Mbps,拿这个结果计算1518字节的数据为100000×(1518+20) ×8/100000=1230.4Mbps。
注:其中的20字节是指12字节的帧间距(IPG)以及8字节的前导码(7字节同步+1字节起始),测试每一个字节的吞吐量都需要将这20字节计算在内。
通过前面的算式可以看出,我们即使不测试1518字节,也能够大致推算出设备最大的吞吐量是多少,但最终的结果只能小于这个结果,为什么会小于呢?因为很多设备因为接口数或者内部器件带宽的原因,限制了最大的带宽,这样设备的最大吞吐量就会远远低于推算的数值,不过既然得出了64字节的pps数,那么只要厂商标称的最大吞吐量低于推算的带宽,就基本可以认为这个标称值是可信的。
时延(Latency)
时延是系统处理数据包所需要的时间(防火墙入口处输入帧的最后1个比特到底出口输出帧的第一个比特输出所用的时间间隔)。防火墙时延测试指的就是计算它的存储转发(Store and Forward)时间,即从接收到数据包开始,处理完并转发出去所用的全部时间。在一个网络中,如果我们访问某一台服务器,通常不是直接到达,而是经过大量的路由交换设备。每经过一台设备,就像我们在高速公路上经过收费站一样都会耗费一定的时间,一旦在某一个点耗费的时间过长,就会对整个网络的访问造成影响。如果防火墙的延时很低,用户就完全不会感觉到它的存在,提升了网络访问的效率。
时延的单位通常是微秒,一台高效率防火墙的时延通常会在一百微秒以内。时延通常是建立在测试完吞吐量的基础上进行的测试。测试时延之前需要先测出每个包长下吞吐量的大小,然后使用每个包长的吞吐量结果的 90%-100%作为时延测试的流量大小。一般时延的测试要求不能够有任何的丢包。因为如果丢包,会造成时延非常大,结果不准确。我们测试一般使用最大吞吐量的95%或者90%进行测试。测试结果包括最大时延,最小时延,平均时延,一般记录平均时延。
新建连接速率(Maximum TCP Connection Establishment Rate)
新建连接速率指的是在每一秒以内防火墙所能够处理的HTTP新建连连接请求的数量。用户每打开一个网页,访问一个服务器,在防火墙看来会是1个甚至多个新建连接。而一台设备的新建连接速率越高,就可以同时给更多的用户提供网络访问。比如设备的新建连接速率是1万,那么如果有1万人同时上网,那么所有的请求都可以在一秒以内完成,如果有1万1千人上网的话,那么前1万人可以在第一秒内完成,后1千个请求需要在下一秒才能完成。所以,新建连接速率高的设备可以提供给更多人同时上网,提升用户的网络体验。
新建连接速率虽然英文用的是TCP,但是为了更接近实际用户的情况,通常会采用HTTP来进行测试,测试结果以连接每秒(connections per second)作为单位。为什么针对防火墙要测试这个数据呢?因为我们知道防火墙是基于会话的机制来处理数据包的,每一个数据包经过防火墙都要有相应的会话来对应。会话的建立速度就是防火墙对于新建连接的处理速度。新建连接的测试采用4-7层测试仪来进行,模拟真实的用户和服务器之间的HTTP教过过程:首先建立三次握手,然后用户到HTTP服务器去Get一个页面,最后采用三次握手或者四次握手关闭连接。测试仪通过持续地模拟每秒大量用户连接去访问服务器以测试防火墙的最大极限新建连接速率。
并发连接数(Concurrent TCP Connection Capacity)
并发连接数就是指防火墙最大能够同时处理的连接会话个数。并发连接数指的是防火墙设备最大能够维护的连接数的数量,这个指标越大,在一段时间内所能够允许同时上网的用户数越多。随着web应用复杂化以及P2P类程序的广泛应用,每个用户所产生的连接越来越多,甚至一个用户的连接数就有可能上千,更严重的是如果用户中了木马或者蠕虫病毒,更会产生上万个连接。所以显而易见,几十万的并发连接数已经不能够满足网络的需求了,目前主流的防火墙都要求能够达到几十万甚至上千万的并发连接以满足一定规模的用户需求。
并发连接数虽然英文用的是TCP,但是为了更接近实际用户的情况,通常会采用HTTP来进行测试。它是个容量的单位,而不是速度。测试结果以连接(connections)作为单位。基本测试的方法和HTTP新建连接速率基本一致,主要的区别在于新建连接测试会立刻拆除建立的连接,而并发连接数测试不会拆除连接,所有已经建立的连接会保持住直到达到设备的极限。
丢包率(Packet loss rate)
丢包率指在连续负载的情况下,防火墙设备由于资源不足导致应该转发的帧没有被转发出去的百分比,防火墙的丢包率对其稳定性、可靠性有很大的影响。
丢包率用于确定防火墙在不同传输速率下丢失数据的百分数,目的在于说明防火墙在超负载情况下的性能,以特定的速率发送特定数量的数据包通过防火墙,然后计算出被防火墙转发数据包的数量,丢包率可用如下公式进行计算:
[(收到包数量-转发包数量)*100%]/收到包数量
举例说明:假设防火墙入从GE1(入方向)接口收到了10个数据包,从GE1(出方向)接口转发出9个数据包,即:[(10-9)*100%]/10=0.1(10%)
对于在线交易的行业(金融、证券等),对数据传输的丢包率要求非常苛刻,丢包率会耽误重要交易的及时进行,影响交易人对系统的信息以至于导致客户的流失,因此丢包率丢对于银行往来至关重要。
背对背(back to back)
背对背的技术指标结果体现出了防火墙的缓存容量,网络上经常有一些应用程序会产生大量的突发数据包(如:备份数据、路由更新等),而且这样的数据包丢失可能会产生更多的数据包丢失,所以强大的缓存能力可以减小这种突发对网络造成的影响,所以背靠背指标体现出防火墙的数据缓存能力,即:防火墙设备承受突发数据的能力。
有效通过率(goodput)
根据RFC2647对防火墙测试的规范中定义一个重要的指标:防火墙真实有效通过率(goodput),因为防火墙在使用过程中,总会有数据包的丢失和重发,所以简单测试防火墙的通过率是片面的,goodput从应用层测试防火墙的真实有效的传输数据包速率,即:防火墙端口的总转发数据量减去丢书和重发的数据量。