防火墙性能测试综述

防火墙性能测试综述

摘要

作为应用最广泛的网络安全产品,防火墙设备本身的性能如何将对最终网络用户得到的实际带宽有决定性的影响。本文从网络层、传输层和应用层三个层面对防火墙的常用性能指标及测试方法进行了分析与总结,并提出了建立包括网络性能测试、IPSec VPN性能测试及安全性测试在内的完整测试体系及衡量标准的必要性。

1 引言

防火墙是目前网络安全领域广泛使用的设备,其主要目的就是保证对合法流量的保护和对非法流量的抵御。众所周知,在世界范围内网络带宽(包括核心网络及企业边缘网络)总的趋势是不断的提速升级,然而从网络的整体结构上看,防火墙恰处于网络的末端。显而易见,防火墙的网络性能将对最终网络用户得到的实际带宽有决定性的影响,特别是骨干网上使用的千兆防火墙,性能的高低直接影响着网络的正常应用。所以,目前防火墙的网络性能指标日益为人们所重视,地位也越来越重要。因此,在防火墙测试工作中性能测试是极其重要的一部分。

作为网络互联设备,参考RFC1242/2544对其在二、三层的数据包转发性能进行考量,是大部分网络设备性能测试的基本手段和方法,同时进行二、三层的测试也可以帮助确定性能瓶颈是存在于下层的交换转发机制还是在上层协议的处理,并检测所采用的网卡及所改写的驱动程序是否满足性能要求,它有利于故障的定位。作为防火墙来说,最大的特点就是可以对4~7层的高层流量进行一定的控制,这就必然对性能造成一定的影响,而这种影响有多大,会不会成为整个网络的瓶颈,就成为人们所关心的问题。据此,我们认为完整的防火墙网络性能测试应该由网络层测试、传输层测试和应用层测试三部分组成。

2 网络层性能测试

网络层性能测试指的是防火墙转发引擎对数据包的转发性能测试,RFC1242/2544是进行这种测试的主要参考标准,吞吐量、时延、丢包率和背对背缓冲4项指标是其基本指标。这几个指标实际上侧重在相同的测试条件下对不同的网络设备之间作性能比较,而不针对仿真实际流量,我们也称其为“基准测试”(Base Line Testing)。

2.1 吞吐量

(1)指标定义

网络中的数据是由一个个数据帧组成,防火墙对每个数据帧的处理要耗费资源。吞吐量就是指在没有数据帧丢失的情况下,防火墙能够接受并转发的最大速率。IETF RFC1242中对吞吐量做了标准的定义:“The Maximum Rate at Which None of the Offered Frames are

Dropped by the Device.”,明确提出了吞吐量是指在没有丢包时的最大数据帧转发速率。吞吐量的大小主要由防火墙内网卡及程序算法的效率决定,尤其是程序算法,会使防火墙系统进行大量运算,通信量大打折扣。

(2)测试方法

在RFC2544中给出了该项测试的步骤过程及测试方法:在测试进行时,测试仪表的发送端口以一定速率发送一定数量的帧,并计算所发送的字节数和分组数,在接收端口也计算

所接收的字节数和分组数,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。一般测试仪表都采用二分法来找到最大的转发速率。吞吐量测试结果以bit/s或fit/s表示。

SPIRENT公司的SmartApplications和IXIA公司的IxAutomate都是对RFC1242/2544指标测试的自动化测试软件。在对防火墙吞吐量的测试中,我们遵照RFC建议,采用64,128,256,512,1024,1280和1518字节等7种不同长度的数据帧来进行。为了全面衡量防火墙的吞吐能力,一般采用双向测试,测试时长为120s。

在测试过程中我们还应该考虑防火墙处理规则时要占用一定的系统资源,为了比较安全策略规则对转发性能的影响,我们在防火墙上加载多条规则和一条规则,分别测试其吞吐量。在有些厂商提供的测试数据中指出吞吐量测试是在“Acceptable Loss”,即允许丢包率为多少下的吞吐量测试结果。这其实不是吞吐量的结果,因为哪怕数据流丢失一个数据帧也会引起明显的延迟。测试的吞吐量是允许丢包率为0的情况下得到的结果,即使丢包率设为万分之一,所得到的结果也可能产生很大的差距。

2.2 时延

网络的应用种类非常复杂,许多应用对时延非常敏感(例如音频、视频等),而网络中加入防火墙必然会增加传输时延,所以较低的时延对防火墙来说是不可或缺的。测试时延是指测试仪表发送端口发出数据包经过防火墙后到接收端口收到该数据包的时间间隔,时延有存储转发时延和直通转发时延两种。

因为直通转发技术不管数据包的整体大小,而只根据目的地址来决定转发方向,所以它的时延是固定的,取决于设备解读数据包前6个字节中目的地址的解读速率。设备只要检查到帧头中所包含的目的地址就立即转发该帧,而无需等待帧全部被接收,也不进行错误校验。存储转发技术是计算机网络领域应用最为广泛的转发方式,它把输入端口的数据包先存储起来,然后进行CRC检查,在对错误包处理后才取出数据包的目的地址,通过查找表转换成输出端口送出数据包。采用存储转发技术的设备由于必须要接收完整的数据包后才开始转发,所以它的时延与数据包大小有关。数据包大,则时延大;数据包小,则时延小。

IETF RFC1242中对时延也做出了定义和计算方法。对存储转发设备,时延按照LIFO的方法计算,即从数据帧的最后一位进入输入端口开始计时,到数据帧的第一位出现在输出端口结束,这期间的时间间隔。而对直通转发设备,时延按照FIFO的方法计算,即从数据帧的第一位进入输入端口开始计时,到数据帧的第一位出现在输出端口结束,这期间的时间间隔。

由于防火墙工作在第三层,数据包转发机制都采用的是存储转发机制。所以,我们考察在给定的速率下(保证防火墙在此速率下不丢包),防火墙存储转发的时延。IETF RFC2544中给出了该项测试的步骤过程,首先测定防火墙在每种数据帧长下的吞吐量大小。以一定数据帧长在测定的对应发送吞吐量速率下发送数据流穿过防火墙,测试过程一般延迟120s,测试重复至少20次取平均值。

2.3 丢包率

在IETF RFC1242中对丢包率作出了定义,是指在正常稳定的网络状态下,应该被转发,但由于缺少资源而没有被转发的数据包占全部数据包的百分比。较低的丢包率,意味着防火墙在强大的负载压力下,能够稳定地工作,以适应各种网络的复杂应用和较大数据流量对处理性能的高要求。

在IETF RFC2544中给出了丢包率的计算方法:以一定的发送速率发送特定数量的数据帧穿过防火墙,测试并统计被防火墙转发的数据帧。丢包率由以下等示计算:[(输入数据帧统计 输出数据帧统计)×100]/输入数据帧统计。在实际测试过程中,一般要测试防火墙在不同负荷下丢弃包占收到包的比例,这里的不同负荷通常指从吞吐量测试到线速,步长一

般使用线速的10%。即第一次测试应按照输入媒介帧速率的100%来运行,然后依次以90%,80%重复以上测试,直到没有丢包产生。

2.4 背靠背缓冲

背靠背缓冲是测试防火墙设备在接收到以最小帧间隔传输的网络流量时,在不丢包条件下所能处理的最大包数。该项指标是考察防火墙为保证连续不丢包所具备的缓冲能力,因为当网络流量突增而防火墙一时无法处理时,它可以把数据包先缓存起来再发送。单从防火墙的转发能力上来说,如果防火墙具备线速能力,则该项测试没有意义。因为当数据包来得太快而防火墙处理不过来时,才需要缓存一下。如果防火墙处理能力很快,那么缓存能力就没有什么用,因此当防火墙的吞吐量和新建连接速率指标都很高时,无论防火墙缓存能力如何,背靠背指标都可以测到很高,因此在这种情况下这个指标就不太重要了。但是,由于以太网最小传输单元的存在,导致许多分片数据包的转发。由于只有当所有的分片包都被接受到后才会进行分片包的重组,防火墙如果缓存能力不够将导致处理这种分片包时发生错误,丢失一个分片都会导致重组错误。可见,背靠背缓冲这一性能指标还是有具体意义的。

在IETF RFC2544中给出了背靠背缓冲的计算方法:从空闲状态开始,测试仪表以给定的传输媒介最小合法间隔极限的传输速率向待测防火墙发送相当数量的固定长度的帧并计算由防火墙转发的数据帧数,如果发送数据帧数等于转发数据帧数,则增加发送数据帧的数量重复测试。如果转发数据帧数少于发送数据帧数时,则减少发送帧数重复测试。它的值是一定大小的帧数,该帧数是防火墙在没有丢包情况下的最长突发数,即当出现第一个帧丢失时,所统计发送的帧数。在RFC2544中推荐每次测试至少运行2s并且应该重复至少50次得到平均值。

3 传输层性能测试

传输层性能测试指的是测试与防火墙状态相关的性能和扩展性,它主要包括TCP并发连接数(Concurrent TCP Connection Capacity)和最大TCP连接建立速率(Max TCP Connection Establishment Rate)两项指标的测试。

3.1 TCP并发连接数

并发连接数是衡量防火墙性能的一个重要指标。在IETF RFC2647中给出了并发连接数(Concurrent connections)的定义,它是指穿越防火墙的主机之间或主机与防火墙之间能同时建立的最大连接数。它表示防火墙对其业务信息流的处理能力,反映出防火墙对多个连接的访问控制能力和连接状态跟踪能力,这个参数的大小直接影响到防火墙所能支持的最大信息点数。

像路由器的路由表存放路由信息一样,并发连接表存放防火墙的并发连接信息,它可在防火墙系统启动后动态分配进程的内存空间,其大小也就是防火墙所能支持的最大并发连接数。大的并发连接表可以增大防火墙最大并发连接数,允许防火墙支持更多的客户终端。尽管看上去防火墙的并发连接数似乎是越大越好。但是与此同时,过大的并发连接表也会带来一定的负面影响:首先并发连接数的增大意味着对系统内存资源的消耗。其次,并发连接数的增大应当充分考虑CPU的处理能力,CPU的主要任务是把网络上的流量从一个网段尽可能快速地转发到另外一个网段上,并且在转发过程中对此流量按照防火墙的访问控制策略进行许可检查、流量统计和访问审计等操作,这都要求防火墙对并发连接表中的相应表项进行不断地更新读写操作。如果不顾CPU的实际处理能力而贸然增大系统的并发连接表,势必影响防火墙对连接请求的处理延迟。

IXIA公司的IxLoad测试软件有对防火墙并发连接数的测试套件。在做并发连接数测试的时候,所采用的参数不同,得出的测试结果也会有较大差距。例如,选用的传输文件大小

就会对测试结果有一定的影响。因为如果在传输中高层流量很大的话,被测设备将会占用很大的系统资源去处理包检查,导致无法处理新请求的连接,引起测试结果偏小。反之,测试结果会大一些。所以,没有测试条件而只谈并发连接数是难以定断的。从宏观上来看,这个测试的最终目的是比较不同设备的“资源”,也就是说处理器资源和存储资源的综合表现。尽管并发连接数仅仅用于描述一个状态而不需要数据的传输,但并发连接也假定所有存在的连接实际上均有能力传输数据。如果数据在一个连接上不能被发送,则这个连接不应该被计算在并发连接数中。

IxLoad测试软件是按照二分法找出系统所能承受的最大并发性能指标,并且给出简单明了的测试报告,图1是一台并发连接数为19万的防火墙利用IxLoad测试的结果。

防火墙性能测试综述

图1 一台并发连数为19万的防火墙利用IxLoad测试结果

3.2 最大TCP连接建立速率

该项指标是测试防火墙维持的最大TCP连接建立速度,本测试用以体现防火墙更新状态表的最大速率,考察CPU的资源调度状况。这个指标主要体现了被测防火墙对于连接请求的实时反应能力。对于中小用户来讲,这个指标就显得更为重要。可以设想一下,当被测防火墙每秒可以更快地处理连接请求,而且可以更快地传输数据的话,网络中的并发连接数就会倾向于偏小,防火墙的压力也会减小,用户看到的防火墙性能也就越好,所以TCP连接建立速率的确是个很重要的指标。

理想的测试工具可以帮助使用者搜索到被测防火墙能够处理的峰值。IXIA公司的IxLoad测试软件有对新建连接速率的测试套件,它是按照二分法找出系统所能承受的最大性能指标,图2是一台新建连接速率为每秒1600个的防火墙利用IxLoad测试的结果。

防火墙性能测试综述

图2 一台新建连接速率为每秒1600个的防火墙利用IxLoad测试的结果

4 应用层性能测试

参照IETF RFC2647/3511,应用层测试指的是获得处理HTTP应用层流量的防火墙基准性能,主要包括HTTP传输速率(HTTP Transfer Rate)和最大HTTP事务处理速率(Max HTTP Transaction Rate)。

4.1 HTTP传输速率

该测试指标主要是测试防火墙在应用层的平均传输速率,是被请求的目标数据通过防火墙的平均传输速率。该算法是从所传输目标数据首个数据包的第一个比特到最末数据包的最后一个比特来进行计算,平均传输速率的计算公式为:传输速率(bit/s)= 目标数据包数×目标数据包大小×8bit/测试时长。其中,目标数据包数是指在所有连接中成功传输的数据包总数,目标数据包大小是指以字节为单位的数据包大小。统计时只能计算协议的有效负载,不包括任何协议头部分。同样,也必须将与连接建立、释放,以及安全相关或维持连接所相关的比特排除在统计之外。由于面向连接的协议要求对数据进行确认,传输负载会因此有所波动,则应该取测试中转发的平均速率。

该项指标的测试也是我们常说的有效吞吐量(Goodput)测试。当我们谈起吞吐量时,大多都是指二/三层的测试结果。但是随着测试面向的流量转为四层以上,有效吞吐量的概念就显得重要起来了。这个概念通俗点讲,就是除掉TCP因为丢包和超时重发的数据,实际的每秒传输有效速率。通过这个测试我们能够得到什么信息呢?首先,我们可以知道测试中的时延和丢包对最终用户的影响有多大。因为最终用户是不关心二/三层的,他们的大部分应用都是运行在四层以上。如果有效吞吐量性能不好,即使二/三层的转发性能很好,仍会导致整个主机看起来运行缓慢。其次,这个测试也有助于帮助厂商定位问题及找到系统的未来发展空间。可以将此结果和基准测试中的结果作一对比,确定是第三层的转发引擎还是第四层的状态检查影响了系统性能。

4.2 最大HTTP事务处理速率

该项指标是测试防火墙所能维持的最大事务处理速率,即用户在访问目标时,所能达到的最大速率。测试过程通过多轮测试,二分法定位来获得防火墙能维持的最大事务处理速率。对于不同轮次的测试,模拟的HTTP客户端对模拟HTTP服务器的GET请求速率是不同的,但在同一轮次的测试中客户端必须维持以恒定速率来发起请求。如果模拟的客户端每个连接中有多个GET请求,则每个GET请求中的数据包大小必须相同。当然在不同测试过程中则可采用不同大小的数据包。

5 结束语

以上各项测试指标是目前我们常用的防火墙性能测试衡量参数。除以上三部分的测试外,由于越来越多的防火墙集成了IPSec VPN的功能,数据包经过VPN隧道进行传输需要经过加密、解密,对性能所造成的影响很显著。因此,对IPSec VPN性能测试方法的研究也很重要,它主要包括协议一致性测试,隧道容量测试,隧道建立速率测试以及隧道内网络性能测试等。同时,防火墙的安全性测试也是不容忽视的内容。因为对于防火墙来说,最能体现其安全性和保护功能的便是它的防攻击能力。性能优良的防火墙能够阻拦外部的恶意攻击,同时还能够使内网正常地与外界通信,对外提供服务。因此,我们还应该考察防火墙在建立正常连接的情况下防攻击的能力。这些攻击包括IP地址欺骗攻击、ICMP攻击、IP碎片攻击、拒绝服务攻击、特洛伊木马攻击、网络安全性分析攻击、口令字探询攻击、邮件诈骗攻击等。国内外在防火墙的安全性测试方面的研究还不是很深入,测试的手段和方法也比较单一,缺乏权威性的、具有说服力的评测标准和体系。

 

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

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

·吞吐量(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)。

相关推荐