关于防火墙性能测试(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%。
所以,丢包率的测试对于我们产品的测试不是很有利。
不过丢包率的测试在一般的对外测试中并不常见。
系统恢复时间
系统恢复时间的测试在一般的对外测试中不太常见,但是电信客户还是比较关注这个性能。
这个测试包括:系统重起的时间测试,系统断电重起的时间测试,HA倒换时间测试,HA恢复时间测试,系统过载恢复测试(这个一般很少见)。
系统重起的时间测试,系统断电重起的时间测试通常会纪录系统重新启动所需要的时间。
HA倒换时间测试,HA恢复时间测试对于电信运营商来说是一个很重要的指标,测试包括主→备切换时间测试,备→主恢复时间测试。
通用的测试方法为:使用测试仪发送恒定速率的流量穿过DUT,DUT进行reset,或者断电操作,直到流量恢复正常。
恢复时间=丢包数量/发包速率。
另外一种测试方法是通过ping包丢弃的数量来衡量倒换的时间。
我们产品测试HA的倒换时间由短到长分别是:断电<拔线<shutdown接口。
HA的倒换时间不是我们设备的优势项目,所以如果可能,尽量不进行这个测试。
背靠背缓冲测试
背靠背缓冲测试主要测试被测设备缓冲处理burst数据的能力。
考验的是被测设备处理突发数据流缓存数据并快速处理的能力。
这个测试在一般的测试中并不常见。
测试方法和结果和吞吐量有很多相似的地方。
测试仪向背测试设备发送一定流量大小的数据包,发送时间通常为1-2秒,然后看接收端能够收到多少的数据包。
通常线速转发的设备的背靠缓冲能力和吞吐量的pps相一致。
比如,一台设备能够线速转发双向2Gbps的流量,那么背靠背缓冲性能(发送时间为2秒)基本上可以确定是148万*2*2 pps。
到目前为止,任何对外测试还没遇到测试这个用例的情况。
主要测试仪介绍
IXIA
主机:IXIA400T IXIA1600T等
插卡:STXS4(4GE combo)CPM T8(8GE cooper)
软件:IxExplorer(发包软件)IxLoad(L4-L7RFC3511测试)IxAutomate\IxNetwork(L3 RFC2544测试)
Spirent
主机: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。
其他防火墙厂家性能数据分析
Juniper 测试数据和宣称的数据结果基本一致,最新的SRX数据标称的还更保守一些。
吞吐量的数据基本上是中长包的测试结果。
并发连接的数量和我们的标称方式一致,可以显示也可以测试到最大。
新建连接速率和标称值基本一致。
由于ASIC架构的限制,新建速率都比较低。
目前Juniper最新推出的SRX系列防火墙(包括SSG系列)的新建连接速率已经不再标称HTTP的新建连接速率了,标称的都是TCP-no-close的结果。
Fortinet的防火墙基本采用x86+端口加速的转发模式,所以跨端口转发吞吐性能,新建连接性能都不高。
防攻击性能很弱。
具体结果参见以下文档。
Fortigate-3016B Test Report.ppt
fortinet
f620b防火墙性能测试
清华网络安全实验
室高端防火墙安全检测
测试中常见问题
下面总结了目前遇到的大多数导致测试数据异常的原因以及解决方法:
1.其他流量不通的原因可以通过debug dp drop来查找,如果测试仪或者
设备学习不到对方的arp,请在两端都做静态绑定。
另外静态绑定arp
是测试性能时推荐的做法,可以避免在长时间吞吐测试过程中从新学习
arp,也可以稍微减少时延测试时的丢包。
2.请注意需要关闭zone untrust的AD功能。
3.建议使用多条流的测试,以便流量能够hash到不同的switch通道,达
到最优的测试效果。
4.由于switch内部会在流量上打tag,所以我们的最大性能不能够完全线
速。
5.请检查每一个测试端口的速率是否协商正确。
6.请不要将设备强制为100Mbps或者更低来测试,不建议使用万兆和千
兆混合测试,因为在内部会产生burst导致丢包。
7.一定关闭统计功能(尤其是接口统计),性能受影响比较大。
8.Core 0 ,不多说了。
9.如果测试SA-5040,请注意生产日期是不是在2008年7-8月以后的新
款,新款性能比老款高很多,核的数量不一样。
10.在使用IXIA的Automate软件进行64Bytes的时延测试时,有时候不能
够得到测试结果,需要将包长改为66Bytes。
11.晶振不够精确会导致测试单条流吞吐量遇到障碍,解决方法就是隐藏命
令,修改buffer的分配为全局模式。
12.测试时延的时候,双向流量建立session冲突、Arp学习、Slow path性
能,都会导致在session建立的时候可能会产生丢包,如果有1个丢包,
时延的数据都会很难看。
目前的解决方法:尽量采用90%吞吐测试(遇
到非得95%甚至99%的客户你也没辙),静态arp,单向流量,等等。
目
前比较有效的方法就是直接降低发送的流量。
有时候甚至用到85%的吞
吐量。
13.设备硬件问题或者网线光纤接口模块问题,很少见,但是已经出现过几
次,基本表现为端口出现大量CRC错误以及InMacError。
14.如果测试不能通过,每次都是因为丢很少的包导致,并且找不到丢包的
原因,需要修改测试仪的lose tolerance设置。
15.如果发现Smartbits的测试结果比IXIA的结果高或者低,很有可能是因
为测试的精确度导致。
建议将精确度调高,因为测试结果1%的差异对于
SA-5180的大包就是200Mbps的误差。