关于防火墙性能测试(RFC2544)

关于防火墙性能测试RFC2544

修订记录

关于防火墙性能测试RFC2544

2

防火墙性能测试标准

RFC1242

介绍了RFC2544测试所用到的术语。

RFC2544

介绍了路由设备(防火墙)性能测试方法,主要是3层的测试。

3

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起始),测试每一

4

个字节的吞吐量都需要将这20字节计算在内。通过前面的算式可以看出,我们即使不测试1518Bytes的吞吐量也能够大致推算出设备最大的吞吐量是多少。而最终的结果只能<=这个结果。

测试中涉及的配置情况包括:透明模式,路由模式,配置NAT,配置policy,配置AV扫描,配置QoS等。我们的设备在配置大量policy的情况下的吞吐量不会有太大变化。在配置双向或者单向NAT后吞吐量大约是路由模式的98%左右。透明模式的吞吐量大约是路由模式吞吐量的80%左右。

5

时延

时延所测试的是系统处理数据包所需要的时间。防火墙的时延测试的是其存储转发(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的情况下的时延不会有太大变化。

6

丢包率

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

丢包率的测试通常会选用测试仪所对应的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%。所以,丢包率的测试对于我们产品的测试不是很有利。不过丢包率的测试在一般的对外测试中并不常见。

7

系统恢复时间

系统恢复时间的测试在一般的对外测试中不太常见,但是电信客户还是比较关注这个性能。这个测试包括:系统重起的时间测试,系统断电重起的时间测试,HA倒换时间测试,HA恢复时间测试,系统过载恢复测试(这个一般很少见)。

系统重起的时间测试,系统断电重起的时间测试通常会纪录系统重新启动所需要的时间。

HA倒换时间测试,HA恢复时间测试对于电信运营商来说是一个很重要的指标,测试包括主?备切换时间测试,备?主恢复时间测试。

通用的测试方法为:使用测试仪发送恒定速率的流量穿过DUT,DUT进行reset,或者断电操作,直到流量恢复正常。恢复时间=丢包数量/发包速率。另外一种测试方法是通过ping包丢弃的数量来衡量倒换的时间。

我们产品测试HA的倒换时间由短到长分别是:断电<拔线<shutdown接口。HA的倒换时间不是我们设备的优势项目,所以如果可能,尽量不进行这个测试。

8

背靠背缓冲测试

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

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

到目前为止,任何对外测试还没遇到测试这个用例的情况。

9

主要测试仪介绍

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的流量,不能够测试出我们设备的标称值。

10

测试数据

吞吐量

通常的计算单位为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。

11

其他防火墙厂家性能数据分析

Juniper 测试数据和宣称的数据结果基本一致,最新的SRX数据标称的还更保守一些。吞吐量的数据基本上是中长包的测试结果。并发连接的数量和我们的标称方式一致,可以显示也可以测试到最大。新建连接速率和标称值基本一致。由于ASIC架构的限制,新建速率都比较低。目前Juniper最新推出的SRX系列防火墙(包括SSG系列)的新建连接速率已经不再标称HTTP的新建连接速率了,标称的都是TCP-no-close的结果。

Fortinet的防火墙基本采用x86+端口加速的转发模式,所以跨端口转发吞吐性能,新建连接性能都不高。防攻击性能很弱。具体结果参见以下文档。

关于防火墙性能测试RFC2544

清华网络安全实验Fortigate-3016B

关于防火墙性能测试RFC2544

fortinet 室高端防火墙安全检测Test Report.pptf620b防火墙性能测试

12

测试中常见问题

下面总结了目前遇到的大多数导致测试数据异常的原因以及解决方法:

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,请注意生产日期是不是在20xx年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的误差。

13

 

第二篇:防火墙的性能测试

防火墙的性能测试包括以下内容:

·吞吐量(Throughput)(RFC2544)

·丢包率(FrameLossRate)(RFC2544)

·延迟(Latency)(RFC2544)

·最大并发连接数(ConcurrentSessions)(RFC2647)

·每秒新连接的建立能力(NewSessions)(RFC2647)

1)吞吐量测试

防火墙在各种帧长的满负载(100M或1000M)双向(BidirectionalTraffic)UDP数据包情况下的稳定性表现。这项测试用来确定防火墙在接收和发送数据包而没有丢失情况下的最大数据传输速率,是测试防火墙在正常工作时的数据传输处理能力,是其它指标的基础。它反映的是防火墙的数据包转发能力。因为数据流中一帧的丢失会导致由于高层协议等待超时而产生重大延迟,所以知道防火墙实际的最大数据传输速率是非常有用的。同时该项指标还能用于判断防火墙设备在超过自身负载的情况下稳定性问题。这项测试与防火墙本身的CPU速率、DRAM内存的大小等基本配置有着直接的关系。

测试单位:fps(framepersecond),每秒钟传输的帧个数。

【测试条件】

测试仪配置

100M速率,单工(100Mbit/shalf-duplex);

1000M速率,单工(1000Mbit/shalf-duplex);

单向(UnidirectionalTraffic)/双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;

测试Trial数:2;

测试时长:120秒;

允许的丢包率(LossTolerance):0(Zero-loss);

测试帧长(FrameSize):64、128、256、512、1518bytes。

【测试项目】

1.防火墙在1条规则情况下关闭NAT时的各种帧长的数据包转发能力(双向)。

2.防火墙在1条规则情况下打开NAT时的各种帧长的数据包转发能力(单向)。

3.防火墙在100条规则情况下各种帧长的数据包转发能力(双向)。

2)丢包率

这项测试用来确定防火墙在不同传输速率下丢失数据包的百分数,目的在于测试防火墙在超负载情况下的性能。

以特定速率发送特定数量的数据包通过防火墙,然后计算被防火墙转发的数据包数量。丢包率用以下公式计算:

((input_count-output_count)*100%)/input_count

测试单位:被丢弃的帧占所有应转发的帧的百分比

【测试条件】

100M速率,单工(100Mbit/sHalf-duplex);

1000M速率,单工(1000Mbit/sHalf-duplex);

双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;

测试Trial数:2;

测试时长:120秒;

测试帧长(FrameSize):64、128、256、512、1518bytes

【测试项目】

防火墙在1条规则情况下各种帧长的数据包转发能力下的丢包率

3)延迟

这项测试通常是指测试从测试数据帧的最后一个比特进入被测设备端口开始至测试数据包的第一个比特从被测设备另一端口离开的时间间隔。它的表现也同样取决于防火墙的基本配置。

首先确定在各种帧大小(同上)下防火墙的吞吐量,然后以指定帧大小发送数据流穿过防火墙到指定的目标地址。

测试单位:ns(10-9秒)。

【测试条件】

测试仪配置

£100M速率,全双工(100Mbit/sFull-duplex);

£1000M速率,全双工(1000Mbit/sFull-duplex);单向(UnidirectionalTraffic)/双向(BidirectionalTraffic);适用于NAT测试、IXIA或Smatbit生成的数据流,UDP数据包;

测试Trial数:2;

测试时长:120秒;

允许的丢包率(LossTolerance):0(Zero-loss);

测试帧长(FrameSize):64、128、256、512、1518bytes。

【测试项目】

1.防火墙在1条规则情况下关闭NAT时的数据包转发(通过)能力情况下的各种帧长的延迟(双向)

2.防火墙在1条规则情况下打开NAT时的数据包转发(通过)能力情况下的各种帧长的延迟(单向)

3.防火墙在100条规则情况下吞吐量为极限吞吐量双向工作情况下各种帧长的相应延迟

4.防火墙在吞吐量为20M全双工情况下各个帧长情况下的延迟

4)防火墙在有一定背景流量下支持的连接数测试

【测试目的】

测试目的在于得出一定流量下防火墙所能顺利建立和保持的并发连接数及一定数量的连接情况下防火墙的吞吐量变化。

【测试条件】

测试仪配置

£100M速率,全双工(100Mbit/sFull-duplex);

£1000M速率,全双工(1000Mbit/sFull-duplex);

双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;

连接数的生成可以使用IXIA或Smatbit

测试Trial数:2;

允许的丢包率(LossTolerance):0(Zero-loss);

测试帧长(FrameSize):64、512、1518bytes。

流量分别设置为一对100Mbps以太网接口全双工线速转发;

两对100Mbps以太网接口全双工线速转发;

连接数设置为每秒建立2000个连接保持200000个会话连接

【测试项目】

防火墙在1条规则情况下,保持一定数量的会话连接时的数据包转发(通过)能力

5)防火墙支持的连接数测试

【测试目的】

在此项测试中,分别测试防火墙的每秒所能建立起的TCP/HTTP连接数及防火墙所能保持的最大TCP/HTTP连接数。测试在1条安全规则下打开和关闭NAT(静态)对TCP连接的新建能力和保持能力。

【测试条件】

测试仪配置

£100M速率,全双工(100Mbit/sFull-duplex);

£1000M速率,全双工(1000Mbit/sFull-duplex);

双向(BidirectionalTraffic)、IXIA或Smatbit生成的HTTP数据流;每个端口设置发送10000个,使用交换机连接1-2个端口为一组。

连接数的生成可以使用IXIA或Smatbit。

测试Trial数:2;

【测试项目】

1.防火墙在一条规则情况下每秒TCP新连接的建立能力。

2.防火墙在一条规则情况下对TCP连接的保持能力。

6)背靠背缓存能力

【测试目的】

背靠背是指以最小帧间隔发送最多数据包而不引起丢包时的数据包数量。该指标用于测试防火墙的数据缓存能力,描述了网络设备承受突发数据的能力,即对突发数据的缓冲能力。

【测试条件】

测试仪配置

£100M速率,全双工(100Mbit/sFull-duplex);

£1000M速率,全双工(1000Mbit/sFull-duplex);

双向(BidirectionalTraffic)、IXIA或Smatbit生成的数据流,UDP数据包;

连接数的生成可以使用IXIA或Smatbit。

【测试项目】

以最小帧间隔发送一定数量(测试时间尽可能长,一般选择120s,40M)的突发帧至被测设备的输入口,记录被测设备正确转发的帧数,如果全部正确转发,增加发送帧数再测试,否则减少发送帧数再测试,直到找到极限值。

此项性能与帧长度可能有关,所以需对不同帧长度的数据流分别测试。

7)有效通过率

根据RFC2647对防火墙测试的规范中定义的一个重要的指标:goodput(防火墙的真实有效通过率)

因为防火墙在测试过程中,总会有数据包的丢失和重发,所以简单的测试防火墙的通过率是片面的,goodput从应用层测试防火墙的真实有效的传输数据包速率。

简单的说,就是防火墙端口的总转发数据量(bps)减去丢失的和重发的数据量(bps)。

测试方法:用smartbit模拟300个http的请求,看单位时间内最大传输的速率(bps)。

相关推荐