RFC2544测试

吞吐量

吞吐量是衡量一款设备转发数据包能力的测试。这个数据是衡量一款防火墙或者路由交换设备的最重要的指标。

 

测试吞吐量首先根据标称性能确定被测试设备的可能吞吐量大小,这样来决定我们测试一款设备所需要的测试仪端口数量。如果一块设备标称性能达到8Gbps,那么通常我们需要81000Mbps的测试仪端口来测试。

 

吞吐量的测试通常会选用测试仪所对应的RFC测试套件进行测试。测试的数据包长包括64Bytes128Bytes256Bytes512Bytes1024Bytes1240Bytes1518Bytes。或者使用特定包长或者混合包长IMIX进行测试。IMIX流量通常是指用几种数据包混合流量来测试防火墙的吞吐量。我们测试用的比例为64Bytes*58%+570Bytes*34%+1518Bytes*8%,也就是7:4:1。如果需要测试×××的吞吐量,不能使用1518Bytes,因为会分片,一般改用1400字节测试。

 

吞吐量一般采用UDP数据包进行测试。测试通常采用双向各一条流或者多条流的方式测试。测试流量通常是A<->BC<->D双向对打的流量。使用单向流量测试的情况比较少见。

 

测试仪通常都会采用二分迭代法进行测试。比如测试仪会首先使用100%的流量发包(1st trial),如果发现丢包,则会采用50%((100%+0)/2)的流量进行测试(2nd trial),如果发现没有丢包,会采用75%((50%+100%)/2)的流量进行测试(3rd trial)。通过这种二分迭代的测试最终测试出设备的最大吞吐量数据。我们内部测试的时候每一个trial的时间设置为30秒,每个包长通常会进行8trial的测试(取决于测试仪设置的精确度)由于测试仪会严格判断是否有丢包,即使有一个包没有收到,都会用二分法往下降。但是这个丢包可能不是设备(网线质量,中间的交换机或者其他原因)造成。因此对于这种情况,测试仪都会有一个loss tolerance的设定,通过设定一个恰当的数值来避免其它原因造成丢包对测试结果的影响。

 

        在进行对一款设备的吞吐性能测试时,通常会纪录一组从64Bytes1518Bytes的测试数据,每一个测试结果均有相对应的pps数。64Bytespps数最大,基本上可以反映出设备处理数据包的最大能力。仅仅从64Bytes的这个数我们基本上可以推算出系统最大能处理的吞吐量是多少。因为通常衡量一款网络设备的CPU/NP/ASIC的最大处理能力的极限就是64Bytespps数。很多路由设备的性能指标有一点就是宣称xxMpps,所指的就是设备处理64Bytespps数。比如64Bytespps100000pps,吞吐量为100000*(64+20)*8/1000000= 67.2Mbps,拿这个结果计算1518Bytes的数据为100000*(1518+20)*8/100000=1230.4Mbps其中的20Bytes是指12Bytes的帧间距(IPG)以及8Bytes的前导码(7Bytes同步+1Bytes起始),测试每一个字节的吞吐量都需要将这20字节计算在内。通过前面的算式可以看出,我们即使不测试1518Bytes的吞吐量也能够大致推算出设备最大的吞吐量是多少。而最终的结果只能<=这个结果。根据以往的测试经验,64字节测试结果的pps数与1518字节的pps数,相差在20%以内。

        

        测试注意项:1、防火墙接口的不同工作模式对性能的影响:路由、桥(ACCESS/TRUNK)、子接口、聚合接口等工作模式会对设备转发的性能有一定程度的影响,但是基本上不会偏差太大,当然个别的实例除外。2、网卡的型号会对转发的性能有一定程度的影响:a、部分网卡会网卡性能问题,例如测试过程当中遇到的82574L型号的网卡,千兆64字节的性能下载比数据只能测试到64.4%左右。网卡的驱动与防火墙的转发实现存在问题,例如中高端墙上的网卡的驱动e1000e只有一个队列,但是防火墙的转发进程存在多个,这样会导致网卡上的数据被转发进程获取的时候总有几个转发的队列是空闲的,导致最终的测试数据无法真实的反馈出我们设备的性能。


时延

时延所测试的是系统处理数据包所需要的时间。防火墙的时延测试的是其存储转发(Store and Forward)的性能(另一种是Cut and Through)。

 

时延的测试通常会选用测试仪所对应的RFC测试套件进行测试。测试的数据包长包括64Bytes128Bytes256Bytes512Bytes1024Bytes1240Bytes1518Bytes。或者使用特定包长或者混合包长进行测试。采用UDP数据包进行测试。测试通常采用双向多条流的方式测试。

 

时延的测试通常是建立在测试完吞吐量的基础上进行的测试。测试时延之前需要先测出每个包长得吞吐量大小,使用每个包长的吞吐量结果 100%-90%作为时延测试的流量大小。一般时延的测试要求不能够有任何的丢包。因为如果丢包,会造成时延非常大,结果不准确。我们测试一般使用最大吞吐量的95%或者90%进行测试。测试结果包括最大时延,最小时延,平均时延,一般记录平均时延。

 

如果测试得比较精细,也可以测试在不同负载下的时延。比如可以测试在10%20%...直到最大负载的结果下的时延。

 

测试时长通常是设置30秒的流量,然后测试几次取平均值最为最终结果。


丢包率

丢包率是测试系统在一定负载的情况下丢包数量多少的测试。这个测试实际上和吞吐量测试类似。测试的意义在于通过过载的流量来考查对设备正常转发性能的影响。

 

丢包率的测试通常会选用测试仪所对应的RFC测试套件进行测试。测试的数据包长包括64Bytes128Bytes256Bytes512Bytes1024Bytes1240Bytes1518Bytes。或者使用特定包长或者混合包长进行测试。采用UDP数据包进行测试。测试通常采用双向各一条流的方式测试。

 

测试方法通常是采用10%--100%的流量分别测试被测系统的丢包情况。当测试100%负载的情况事,对于NP/ASIC架构的防火墙来说,丢包率=1-吞吐量(%)。因为NPASIC转发更依靠硬件的性能,而硬件的性能通常比较稳定。而对于多核和x86架构的防火墙来说,转发依靠CPU的计算,性能相对硬件转发来说相对较弱,所以100%负载的丢包率>1-吞吐量(%)。比如我们测试出NP墙的吞吐量是80%,那么100%的丢包率基本上可以推算出等于20%,而多核和x86架构的防火墙的丢包率大多数情况>20%。所以丢包率的测试对于我们产品的测试不是很有利。不过丢包率的测试在一般的对外测试中并不常见



背靠背缓冲测试

背靠背缓冲测试主要测试被测设备缓冲处理burst数据的能力。考验的是被测设备处理突发数据流缓存数据并快速处理的能力。这个测试在一般的测试中并不常见。

 

测试方法和结果和吞吐量有很多相似的地方。测试仪向背测试设备发送一定流量大小的数据包,发送时间通常为1-2秒,然后看接收端能够收到多少的数据包。通常线速转发的设备的背靠缓冲能力和吞吐量的pps相一致。比如,一台设备能够线速转发双向2Gbps的流量,那么背靠背缓冲性能(发送时间为2秒)基本上可以确定是148*2*2 pps