坐着,坐着,就胖了。。。
分类:
2013-12-22 19:25:41
原文地址:关于防火墙性能测试(RFC2544) 作者:debianarrow
吞吐量是衡量一款设备转发数据包能力的测试。这个数据是衡量一款防火墙或者路由交换设备的最重要的指标。
测试吞吐量首先根据标称性能确定被测试设备的可能吞吐量大小,这样来决定我们测试一款设备所需要的测试仪端口数量。如果一块设备标称性能达到8Gbps,那么通常我们需要8个1000Mbps的测试仪端口来测试。
吞吐量的测试通常会选用测试仪所对应的RFC测试套件进行测试。测试的数据包长包括64Bytes,128Bytes,256Bytes,512Bytes,1024Bytes,1240Bytes,1518Bytes。或者使用特定包长或者混合包长(IMIX)进行测试。IMIX流量通常是指用几种数据包混合流量来测试防火墙的吞吐量。我们测试用的比例为64Bytes*58%+570Bytes*34%+1518Bytes*8%,也就是7:4:1。如果需要测试VPN的吞吐量,不能使用1518Bytes,因为会分片,一般改用1400字节测试。
吞吐量一般采用UDP数据包进行测试。测试通常采用双向各一条流或者多条流的方式测试。测试流量通常是A<->B,C<->D双向对打的流量。也存在使用单向流量测试的情况。比如使用3个端口测试,那么流量就是A->B->C->A这样的环形流量。
测试仪会采用二分迭代法进行测试。比如测试仪会首先使用100%的流量发包(1st trial),如果发现丢包,则会采用50%((100%+0)/2)的流量进行测试(2nd trial),如果发现没有丢包,会采用75%((50%+100%)/2)的流量进行测试(3rd trial)。通过这种二分迭代的测试最终测试出设备的最大吞吐量数据。测试每一个trial的标准时间为2分钟,每个包长通常会进行10-30个trial的测试(取决于测试仪设置的精确度)。由于测试仪会严格判断是否有丢包,即使有一个包没有收到,都会用二分法往下降。但是这个丢包可能不是设备(网线质量,中间的交换机或者其他原因)造成。因此对于这种情况,测试仪都会有一个loss tolerance的设定,通过设定一个恰当的数值来避免其它原因造成丢包对测试结果的影响。
在进行对一款设备的吞吐性能测试时,通常会纪录一组从64Bytes到1518Bytes的测试数据,每一个测试结果均有相对应的pps数。64Bytes的pps数最大,基本上可以反映出设备处理数据包的最大能力。仅仅从64Bytes的这个数我们基本上可以推算出系统最大能处理的吞吐量是多少。因为通常衡量一款网络设备的CPU/NP/ASIC的最大处理能力的极限就是64Bytes的pps数。很多路由设备的性能指标有一点就是宣称xxMpps,所指的就是设备处理64Bytes的pps数。比如64Bytes的pps为100000pps,吞吐量为100000*(64+20)*8/1000000= 67.2Mbps,拿这个结果计算1518Bytes的数据为100000*(1518+20)*8/100000=1230.4Mbps。其中的20Bytes是指12Bytes的帧间距(IPG)以及8Bytes的前导码(7Bytes同步+1Bytes起始),测试每一个字节的吞吐量都需要将这20字节计算在内。通过前面的算式可以看出,我们即使不测试1518Bytes的吞吐量也能够大致推算出设备最大的吞吐量是多少。而最终的结果只能<=这个结果。
测试中涉及的配置情况包括:透明模式,路由模式,配置NAT,配置policy,配置AV扫描,配置QoS等。我们的设备在配置大量policy的情况下的吞吐量不会有太大变化。在配置双向或者单向NAT后吞吐量大约是路由模式的98%左右。透明模式的吞吐量大约是路由模式吞吐量的80%左右。
时延所测试的是系统处理数据包所需要的时间。防火墙的时延测试的是其存储转发(Store and Forward)的性能(另一种是Cut and Through)。
时延的测试通常会选用测试仪所对应的RFC测试套件进行测试。测试的数据包长包括64Bytes,128Bytes,256Bytes,512Bytes,1024Bytes,1240Bytes,1518Bytes。或者使用特定包长或者混合包长进行测试。采用UDP数据包进行测试。测试通常采用双向各一条流的方式测试。
时延的测试通常是建立在测试完吞吐量的基础上进行的测试。测试时延之前需要先测出每个包长得吞吐量大小,使用每个包长的吞吐量结果的 100%-90%作为时延测试的流量大小。一般时延的测试要求不能够有任何的丢包。因为如果丢包,会造成时延非常大,结果不准确。我们测试一般使用最大吞吐量的95%或者90%进行测试。测试结果包括最大时延,最小时延,平均时延,一般记录平均时延。
如果测试得比较精细,也可以测试在不同负载下的时延。比如可以测试在10%,20%...直到最大负载的结果下的时延。
测试时长通常是设置2分钟的流量,然后测试几次取平均值最为最终结果。
测试中涉及的配置情况包括:透明模式,路由模式,配置NAT,配置policy,配置AV扫描,配置QoS,配置AD等。我们的设备在配置大量policy以及NAT的情况下的时延不会有太大变化。
丢包率是测试系统在一定负载的情况下丢包数量多少的测试。这个测试实际上和吞吐量测试类似。测试的意义在于通过过载的流量来考查对设备正常转发性能的影响。
丢包率的测试通常会选用测试仪所对应的RFC测试套件进行测试。测试的数据包长包括64Bytes,128Bytes,256Bytes,512Bytes,1024Bytes,1240Bytes,1518Bytes。或者使用特定包长或者混合包长进行测试。采用UDP数据包进行测试。测试通常采用双向各一条流的方式测试。
测试方法通常是采用10%--100%的流量分别测试被测系统的丢包情况。当测试100%负载的情况事,对于NP/ASIC架构的防火墙来说,丢包率=1-吞吐量(%)。因为NP和ASIC转发更依靠硬件的性能,而硬件的性能通常比较稳定。而对于多核和x86架构的防火墙来说,转发依靠CPU的计算,性能相对硬件转发来说相对较弱,所以100%负载的丢包率>1-吞吐量(%)。比如我们测试出NP墙的吞吐量是80%,那么100%的丢包率基本上可以推算出等于20%,而多核和x86架构的防火墙的丢包率大多数情况>20%。所以,丢包率的测试对于我们产品的测试不是很有利。不过丢包率的测试在一般的对外测试中并不常见。
系统恢复时间的测试在一般的对外测试中不太常见,但是电信客户还是比较关注这个性能。这个测试包括:系统重起的时间测试,系统断电重起的时间测试,HA倒换时间测试,HA恢复时间测试,系统过载恢复测试(这个一般很少见)。
系统重起的时间测试,系统断电重起的时间测试通常会纪录系统重新启动所需要的时间。
HA倒换时间测试,HA恢复时间测试对于电信运营商来说是一个很重要的指标,测试包括主à备切换时间测试,备à主恢复时间测试。
通用的测试方法为:使用测试仪发送恒定速率的流量穿过DUT,DUT进行reset,或者断电操作,直到流量恢复正常。恢复时间=丢包数量/发包速率。另外一种测试方法是通过ping包丢弃的数量来衡量倒换的时间。
我们产品测试HA的倒换时间由短到长分别是:断电<拔线
背靠背缓冲测试主要测试被测设备缓冲处理burst数据的能力。考验的是被测设备处理突发数据流缓存数据并快速处理的能力。这个测试在一般的测试中并不常见。
测试方法和结果和吞吐量有很多相似的地方。测试仪向背测试设备发送一定流量大小的数据包,发送时间通常为1-2秒,然后看接收端能够收到多少的数据包。通常线速转发的设备的背靠缓冲能力和吞吐量的pps相一致。比如,一台设备能够线速转发双向2Gbps的流量,那么背靠背缓冲性能(发送时间为2秒)基本上可以确定是148万*2*2 pps。
到目前为止,任何对外测试还没遇到测试这个用例的情况。
主机:IXIA400T IXIA1600T等
插卡:STXS4(4GE combo)CPM T8(8GE cooper)
软件:IxExplorer(发包软件)IxLoad(L4-L7RFC3511测试) IxAutomate\IxNetwork(L3 RFC2544测试)
主机:TestCenter Smartbits600B Smartbit6000B Avalanche2500 Avalanche2700 Avalanche2900等
软件:SmartWindow (发包软件)SmartFlow\SmartApplication(L3 RFC2544测试) Avalanche Commander(L4-L7RFC3511测试)
软件方面: Spirent的SmartWindow,SmartFlow,SmartApplication软件功能较IXIA的更为简便易用,但是Avalanche的软件比IXIA的要复杂,但更专业。采用默认的配置,Spirent的任何测试结果都要比IXIA的结果好。
硬件方面:Spirent的Smartbits和IXIA的差不多,但是Spirent的Avalanche2700\2900比IXIA的CPM卡要强大很多。
总体评价 L3的测试用哪家都行,只是Spirent的更好用。L4-L7的肯定Spirent的性能更高,但是Avalanche不能够测试TCP的新建连接速率只能测试HTTP的流量,不能够测试出我们设备的标称值。
通常的计算单位为Mbps或者Gbps
需要记住的几个数值:
100Mbps=14.8万pps
1000Mbps=148万pps
如何通过pps数量计算带宽吞吐量Mbps
(测试包+20)Bytes*8bit*pps/1000000=xxxMbps
一般测试仪测试的结果只是给出一个百分比,指的是不丢包的最大带宽的百分比,输出结果需要乘以测试的最大带宽。
最终的结果可能会有误差,但是相差不应该超过3%。
通常的计数单位为微秒(us),一般性能较好的防火墙(包括我们的)64Bytes-1518Bytes的性能大都在10-100us左右,如果出现达到100us以上的结果,那么需要从新测试,肯定是丢包比较多了。
IXIA统计的结果是ns,Spirent统计的是us。
一般我们设备的时延数据从64Bytes到1518Bytes大约是10us-50us。