hjjlearning 发表于 2007-4-26 16:18:39

防火墙性能测试浅析(转贴)

防火墙性能测试浅析(转贴)


        防火墙是目前网络安全领域广泛使用的设备。 其主要目的就是保证对合法流量的保护和对非法流量的抵御。众所周知, 在世界范围内网络带宽(包括核心网络及企业边缘网络)总的趋势是不断的提速升级, 然而从网络的整体结构上看, 防火墙恰处于网络的末端。显而易见,防火墙的性能将对最终网络用户得到的实际带宽有决定性的影响。所以目前防火墙的性能指标日益为人们所重视,地位也越来越重要。
  防火墙的分类
  关于防火墙的分类方式有很多种: 例如按体系结构可分为纯软件,软硬结合和 纯硬件防火墙; 按逻辑功能可分为静态包过滤、动态包过滤和应用代理型防火墙等。 本文所讨论的测试内容适合绝大部分上述防火墙。 有关各种类型防火墙的信息, 读者可从各大国际信息安全实验室的网站中获得, 这里将不再赘述。
  防火墙的二层和三层测试
  一般说来, 对于一个没有设置规则的防火墙设备, 我们可以近似的当作一个普通的网络互联设备来进行性能测试。 虽然对于少数设备来说这样的近似并不准确。 RFC1242和RFC2544是在进行这种测试的主要标准。 RFC1242是对于一般的网络设备的测试术语的定义, 而RFC2544则是对于测试方法的定义。 对大多数在中国从事网络工作的技术人员来说, 这两个RFC并不陌生。 这里对个别要点做以简单的介绍。
  首先将防火墙设置为“透明模式”。 如果其支持“网桥透明模式”和“路由透明模式”, 则在两种情况下建议都进行测试比对。 普遍的测试帧封装格式为UDP, 测试帧的大小为64,128,256,512,1024,1280、1518。 在时间紧迫的情况下, 也可抽取64、512、1518这几种帧长做为选择。 测试的指标包括吞吐量(Throughput)、发送延迟(Latency)、丢包率(Packet Loss)、背对背缓冲(Back to Back)。 这几个指标实际上侧重在相同的测试条件下对不同的网络设备之间做性能比较, 而不针对仿真实际流量。 我们也称其为“基准测试”(Base Line Testing)。 基准测试是一个很重要的概念, 贯穿于各种不同的数据设备的评测之中。在四个指标里面, 吞吐量是应该先被测试的,然后用测出的数值作为发送速率上限,来进行延迟指标的测试。从经验上来讲,纯软件和软硬结合的防火墙在测试的时候有可能表现不太稳定,常出现测试结果有上下波动的情况。 这是个在测试防火墙时候的现实问题。要解决它, 一般建议将防火墙在每次测试之间上电重启动, 以保证测试的可重复性。 另外一个办法就是测多次, 取平均值。 后者考虑到了防火墙稳定性的因素,相对来讲反映了更贴近实际使用的方面, 所以也不失为一个好选择。
  这个二层和三层的测试可以提供哪些有用的信息呢? 它可以帮助确定性能瓶颈是存在于下层的交换转发机制, 还是在上层协议的处理。 换句话说,它有利于故障的定位。 即使对于一些不做交换转发的厂商,他们也可以发现所采用的网卡及所改写的驱动程序是否满足性能要求,同时也能够得到一些功能上的验证(如双工/速率状态是否正常等等)。对很多用户来讲, 除非他们想把这个防火墙只当作一个普通的路由器来用, 否则不配置任何的安全规则是比较少见的。 而在有规则的条件下进行的性能测试显然更有意义一些。 我们将这部分的讨论放到后面的四层到七层的测试部分中。 因为有很多的规则都是既涉及到三层的信息也有四层的信息。

四至七层性能测试


  作为防火墙来说, 最大的特点就是对4-7层的高层流量可以进行一定的控制。所以在一定程度上讲,性能是肯定要受到影响的。而这种影响有多大,会不会成为整个网络的瓶颈, 从而使用户难以忍受, 就成为人们所关心的问题。 由于大部分防火墙的结构是软硬结合的, 所以功能上的要求较容易满足--只要可以想得到, 基本上实现起来困难不大。 但是落实到性能上,才可以看到产品的真品质。下面我们就浅析一下这方面的性能测试。 我们可以大致分为以下两类: 基准测试和真实环境测试。


  基准测试


  (Base Line Testing)


  首先是在防火墙配置规则情况下的性能测试。


  这个测试和上篇中的二层/三层的测试是比较接近的。 但是此时需要在防火墙上配置规则。在一些防火墙的结构中,设置规则与透明模式相比, 将调用另外的例程,从而表现得大相径庭。我们在测试中应该考虑到这一点,所以建议可根据自己的需要设置数量不等的规则,再进行性能比较。 例如, 可采用1, 50, 100, 500, 1000甚至更多的规则, 然后再重复进行二层/三层的测试。 在这其中又分两种情况: 1.将所有发送的流量设置为可以通过该设备,此时可以直接和透明模式测试结果做比较,查看规则对性能的整体影响。2.将流量配置成含有“阻塞/通过”的多样化, 这样就需要使用的测试仪表能够提供强大的数据流发送功能, 而且在接收时将不同数据流区分出来。 在检查了“通过数据流”的性能的同时,亦可验证“阻塞数据流”是否生效。 这种测试的优势在于同时检查了被测设备的功能和性能, 而且更加符合实际的情况。


  防攻击性能测试(DoS/DDoS)


  攻击测试是很重要的一部分。 此时我们可采用一些典型的攻击方式如:Syn Flood, Ping Flood,Smurf等。 主要的目的是看看防火墙是不是能够成功的将其挡住。 当我们将合法流量混合攻击流量时,我们更可以看到防火墙在处理攻击的同时,对于高速的合法流量如何处理。一般来讲, 攻击测试既可以使用测试仪表实现, 也可以使用软件实现, 如一些黑客程序等, 但是象Syn Flood这样的攻击则对速度要求很高, 故使用测试仪表发送才能测出有意义的结果。 使用仪表时, 应注意对将来不断涌现的攻击方式做通盘考虑。 最好是能够对包的填充内容做完全控制, 而且有较好的脚本编程的功能。 在使用软件做攻击模拟时最好有仪表同时模拟背景流量。


  另外需要指出的是: 并非所有攻击都应该被全部挡在外面。 如Syn Flood的攻击至少用满足某个门限值才能够被防火墙确认, 然后实施拦截。 再如Tear Drop攻击也能够被防火墙发现然后重组转发出去。 所以要根据攻击类型特别注意加以分析。 为确保所下结论正确, 建议在内网旁路一个协议分析仪进行捕获和分析。


  TCP连接性能测试


  人们一提到L4-L7的测试, 就自然想到了TCP 连接(TCP Connection)。 关于连接的测试一般有两个方面。


  1. 并发连接总数的测试。 并发连接是一个很重要的指标。 它主要反映了被测设备维持多个会话的能力。关于此指标的争论也有很多。一般来说,它是和测试条件联系紧密的。 但是这方面的考虑有时会被人们忽略。 比如,测试的时候采用的传输文件大小就会对测试结果有一定的影响。 可以这样考虑:如果在传输中高层流量很大的话, 被测设备将会占用很大的系统资源去处理包检查,导致无法处理新请求的连接,引起测试结果偏小。 反之则测试结果会大一些。 所以没有测试条件而只谈并发连接数是难以定断的。 从宏观上来看, 这个测试的最终目的是比较不同设备的“资源”。也就是说处理器资源和存储资源的综合表现。中国市场上出现了大家盲目攀比并发连接数的情况。事实上,并发几十万的连接数应该足可以满足一个电信级的数据中心服务网络了,对于一般的企业来讲, 甚至可能并发几千个连接数已经绰绰有余。 并发连接总数应能由仪表自动测试结果, 以减少测试所用的时间和人力。


  2. 并发连接处理速率。这个指标主要体现了被测设备对于连接请求的实时反应能力。对于中小用户来讲,这个指标就显得更为重要。 可以设想一下,当被测设备每秒可以更快的处理连接请求,而且可以更快的传输数据的话,网络中的并发连接数就会倾向于偏小,从而设备的压力也会减小,用户看到的防火墙性能也就越好。所以并发连接处理速率的确是个很重要的指标。 理想的测试工具可以帮助使用者搜索到被测设备能够处理的峰值, 减轻其工作的负担。


  有效吞吐量测试(TCP GoodPut)


  当我们谈起吞吐量时,大多都是指二层/三层的测试结果。但是随着测试面向的流量转为四层以上, 有效吞吐量的概念就显得重要起来了。这个概念通俗点讲, 就是除掉TCP因为丢包和超时重发的数据, 实际的每秒传输有效速率。 计算的方式也很简单明了:用所传输的文件大小除以传完这个文件的时间, 得到一个平均速率, 称为“有效吞吐量”。 不难看出,这个概念实际上和前面所提到的“吞吐量”是完全不同的。请注意避免混淆。在RFC2647中也对此概念有所说明。那么通过这个测试我们能够得到什么信息呢?首先,我们可以知道测试中的延迟和丢包对最终用户的影响有多大。因为最终用户是不关心二层三层的。他们的大部分应用都是运行在四层以上。如果有效吞吐量性能不好(即使二/三层的转发性能不错),则会导致整个主机看起来运行缓慢。其次,这个测试也有助于帮助厂商定位问题及找到系统的未来可发展空间。可以将此结果和基准测试中的结果做一对比,确定是第三层的转发引擎还是第四层的状态检查影响了系统性能。在做此测试的时候, 应该注意采用多个模拟的主机进行混合测试。原因是由于TCP是采用“滑动窗口”的状态相关的协议,所以理论上讲, 模拟单个主机是无法使链路的最大性能发挥出来的。


  TCP连接建立的延迟


  RFC2647中提出了测量这个指标。 理想的情况是测量出每个连接从发起到确认连接建立的时间差, 给出最大、最小和平均的测试值。 事实上, 做到这点是相当困难的, 因为测试工具必须能够跟踪上万个连接, 而且能够实时的将它们的相应报文挑出来, 分别进行统计。 而目前来看还没有一个这么强大的工具能做到这点。 所以在多数情况下可采用几种方式代替, 如测量单位时间内实际建立的连接数(排除缓冲区的影响), 或测量客户端收到第一个字节数据的时间等等。


  真实环境测试


  (Real World Testing)


  限于篇幅, 本文将主要介绍一下所谓“真实环境测试”的概念。 这种测试是最近比较热门的一种提法。 其主要特点是尽可能地把测试的流量和测试的环境接近于真实, 甚至有可能就将真实的流量捕获之后重放到网络上面。为了区别前面讨论的“基准测试”, 我们举一个小例子: 当我们的防火墙在网上运行的时候, 在某一时间面内, TCP连接可能存在着三种情况: 有的正在建立, 有的正在传输数据, 有的正在关闭。 这是一个“真实”的情况。 但是我们在做“基准测试”的时候并没有考虑这样一个复杂而混乱的情况, 而选择了相对来说比较“纯净”的测试流量模型, 即不断的建立连接, 然后传输数据, 而后依此关闭连接。 从而我们得到一个好处: 测试结果比较稳定, 流量模型可控。


  但是我们失去了一些真实性。 有可能会造成一些问题难以在测试中发现。 再举一个例子: 用户上网的时候都有各自的接入速率, 在到达网站的路径上都会有丢包, 在看网页的时候可能有自己的思考时间, 在网页下载缓慢的时候也有自己的容忍限度等等, 这些都是一些现实问题, 都可能对选择设备和网络设计产生影响, 而这些问题在“基准测试”中是被忽略的, 被认为是理想的, 而恰恰是“真实环境测试”需要考虑的。 从这两个例子中我们可以简单总结出一条结论: “真实环境测试”实际上是一种绝对测试, 即对测试个体在网络的真实运行状态的一个绝对的评价; “基准测试”则是一种稳定的相对测试, 侧重点在于不同产品之间的比对。 二者各有其优势。 而“真实环境测试”由于在以前的测试中重视不够, 所以目前发展空间比较大, 值得关注。 以后我们将另文深入探讨该测试, 但这里需要指出的是, 不要简单的认为使用真实的捕获的流量的测试就是“真实环境测试”。




我来帮你顶

孤独无心 发表于 2007-6-27 14:20:39

very good

c0py1eft 发表于 2007-7-4 13:39:51

很不错,些公司还是很难自己独立完成,人才缺,资金缺

changlang530 发表于 2007-9-5 18:32:09

这个版回贴真的太少

initialdyc 发表于 2007-11-2 11:00:02

是啊资源匮乏 回帖少难道安全性不被重视?

wenhigher 发表于 2008-5-27 16:26:14

很新颖的知识点

很新颖的知识点,好帖,大家顶

xdmly 发表于 2008-6-28 18:07:41

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
页: [1]
查看完整版本: 防火墙性能测试浅析(转贴)