关于防火墙性能测试(RFC2544)
- 格式:docx
- 大小:2.16 MB
- 文档页数:13
(RFC2544)
徐涵
Hillstone Networks
修订记录
防火墙性能测试标准
RFC1242
介绍了RFC2544测试所用到的术语。
/rfc/rfc1242.txt
RFC2544
介绍了路由设备(防火墙)性能测试方法,主要是3层的测试。
/rfc/rfc2544.txt
RFC2544测试
吞吐量
吞吐量是衡量一款设备转发数据包能力的测试。这个数据是衡量一款防火墙或者路由交换设备的最重要的指标。
测试吞吐量首先根据标称性能确定被测试设备的可能吞吐量大小,这样来决定我们测试一款设备所需要的测试仪端口数量。如果一块设备标称性能达到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%。所以,丢包率的测试对于我们产品的测试不是很有利。不过丢包率的测试在一般的对外测试中并不常见。