评估防火墙设备(包括传统防火墙和NGFW)的主要指标,是设备的吞吐量,其他指标还包括丢包率、延时等。吞吐量指的是被测设备在不丢包的情况下,所能转发的最大数据流量。吞吐量有很多种,如大包、小包、UDP包、HTTP包等吞吐量;同一台设备,在处理不同报文时,会表现出迥然不同的吞吐量。为了总体评估NGFW的性能,全球知名的独立测评机构NSS Labs提出了具体的评估指标与测试方法:
UDP裸包处理性能(Raw Packet Processing Performance (UDP Traffic))
延迟(Latency)
最大性能(Maximum Capacity)
无延时情况下的HTTP性能(HTTP Capacity With No Transaction Delays)
应用平均响应时间(Application Average Response Time: HTTP)
有延时情况下的HTTP性能(HTTP Capacity With Transaction Delays)
“逼近真实”的通讯(“Real-World” Traffic)
可见大部分测试指标是跟吞吐量相关的,包括一些传统的网络层性能指标,如UDP裸包处理能力,这是为了衡量设备对数据报文的基本转发能力。如果某些具有攻击特征的数据包严重影响了整机的处理能力,应用层的性能也将受到显著影响,应用层处理引擎能力再强也无法发挥作用。但NSS Labs更侧重于考核设备在进行应用层处理情况下的转发性能,也就是俗称的应用层吞吐量,如HTTP性能、应用平均响应时间等。因此NSS Labs大量引入这些指标,用以衡量被测设备的应用引擎的性能,再结合参考网络层性能指标,才能全面评估NGFW在真实业务环境中的实际表现。
使用UDP大包测出的指标比较好看,然并卵
NSS Labs的测试方法中确实引入了UDP裸包处理性能这个指标,但这个指标只是为了用快速转发包的有效性来验证设备是否具有高级别的网络性能和低延迟,也就是设备在理想条件下所能达到的最佳性能。在具体的UDP裸包测试方法上,NSS Labs采用了从64字节到1514字节不同长度UDP包进行综合测试的方法:
对网络通讯原理有一定了解的用户都知道,每个以太网帧都有最小64字节最大1518字节的大小限制,超出了这个范围的帧都会被认定为错误的数据帧,一般的转发设备都会将其丢弃。吞吐量的计量单位是报文数/秒(pps)或字节数/秒(bps),在同样的条件下,使用的包长越长,测试得出的吞吐量越大,使用达到极限长度1518字节的UDP包测出的吞吐量一定是最大的。这好比是安检仪上的传送带,在传送速度不变的前提下,传送带上放置的包越多,单位时间内完成的安检量越大。大包吞吐量只能体现出防火墙在理想状态下所表现出的极限性能,在现实网络环境中是不太可能出现这种理想状态的。正因为此,NSS Labs采用了不同长度UDP包综合测试的方法,尽可能的模拟出“逼近真实”的网络环境。
使用UDP 1518包来衡量网络层吞吐量尚有局限性,如果将其简单的套用到聚焦于应用层功能的NGFW上,就更无法完整的评估设备的性能,甚至是片面的。事实上,测试仪表打出的UDP包是最简单的、对NGFW引擎的运算资源消耗最小、甚至可以忽略不计的一种包。用这种包来测试,测不出NGFW在真实业务场景中表现出来的实际性能。有些防火墙厂商为了体现产品性能强,让用户觉得产品更具竞争力,使用UDP 1518包的吞吐量来标称NGFW的吞吐量,这是一种偷换概念的做法,不但不能给用户选型带来任何帮助,反而会误导用户。