宽带路由器还是比较常用的,于是我研究了一下宽带路由器的各种参数,在这里拿出来和大家分享一下,希望对大家有用。Throughput(吞吐量)表示的是路由器每秒能处理的数据量。打个形象的比方,路由器的工作过程很像邮局包裹业务,邮局寄包裹是大家把物品、寄件人、收件人等信息交给邮局,邮局把物品包好,并贴上格式化的包裹单,检查无误后投递到目的地,收包裹是相反过程。
路由器基本一样,只不过收发的东西是数据而已。Throughput就相当于邮局单位时间里的包裹处理能力,是路由器性能的直观反映。但同时,这个数据后面隐藏的名堂也是最多的。首先应该说明路由器的Throughput,一定是LAN-to-WAN的Throughput,数据流出或流入局域网才需要路由器处理,才能代表路由器性能。
而不是LAN-to-LAN,这代表的是路由器内部小交换机性能,一点意义都没有。这就像邮局单位时间里的包裹处理能力,一定指的是运出和运进邮局的包裹量,而不是从邮局一个房间搬到另一个房间的包裹量。
其次,路由器Throughput,应该是在NAT(网络地址转换)开启、防火墙关闭的情况下得出的测试数据。这是因为NAT是宽带路由器最基本、最核心的功能,不开启NAT就不成其为宽带路由器了,而且软件设计的好坏直接影响到NAT效率和路由器性能,所以NAT开启的Throughput才是有意义的。而防火墙,应该算做宽带路由器附带的高级功能,有的产品防火墙规则很多很复杂,能过滤很多东西,有的产品规则就又少又简单。规则多、复杂的,CPU用来过滤数据的时间就长,规则少、简单的,过滤数据的时间就短,这对Throughput测试数据影响还是挺大的。为公平起见,在测试路由器Throughput时,特别是在不同产品性能比较时,把防火墙关闭是合理的。防火墙的评判,一般放在功能里比较而不是性能比较。
常见Throughput测试方法有两种,一是Smartbits测试,一是Chariot测试。Smartbits测试是使用全球最权威的网络设备测试仪Smartbits2000或6000,配以专业的测试软件SmartApplication,用连续不断的UDP包,来测出对不同大小的数据包,路由器每秒能处理的包数量。路由器在处理数据包时,主要的时间花在处理包头、包尾上,对不同大小的数据包,路由器每秒能处理的包数量差别不会太大。这就像邮局处理包裹,主要的时间是花在处理寄件人、收件人和物品信息以及检查上,包裹重一点轻一点对处理速度影响不会太大。如128Byte包每秒能处理10000个,并不能做到64 Byte包每秒处理20000个,而是只比10000个略多一点点,比如10100个。例如:有些说法认为路由器在处理最大的1518Byte包时每秒8000个(理论上处理1518Byte包达到100M线速的极限值是每秒8127个),折算出Throughput是100M*8000/8127=98.44M,于是称该路由器Throughput高达98.44M;而实际上这个路由器在处理最小的64Byte包时每秒是11000个(理论上的极限值是每秒148810个),折算只有100M*11000/148810=7.39M,两者相差13倍多!同样,说路由器的“Throughput高达97M”,也很可能是1518Byte包达到97M,而处理64Byte的包却很可能只有7.39M!
更为重要的是,小包转发的处理能力才能真正体现路由器的Throughput能力!目前市场上大多数的主流路由器处理512、1024和1518Byte这样的大包,Throughput大都能近似线速(当然,也有一些杂牌路由器大包转发能力都不行),而测试256、128和64Byte等小包的时候,性能差异立即体现。而大多数路由器的实际应用里小包转发能力十分关键,比如网吧里经常玩游戏,每操作一个游戏指令,每扣动一个扳机,转发的全部是小包,如果路由器处理小包的能力不够强,就很难应付游戏的大量小包转发需求,游戏玩起来就很不顺畅。所以NAT开启64 Byte小包的LAN-to-WAN 的Throughput才真正具有评价意义。
另外,以目前宽带路由器普遍所采用的硬件来看,基本上都不足以达到64Byte小包Throughput线速,因此有些产品宣称可以达到线速,可能是采用了所谓的NAT硬件加速技术,Throughput是很好看,但代价是所有数据都不通过CPU,无法做数据过滤,防火墙不起作用,路由器没有任何管理功能。这就像邮局根本不检查邮包里是什么东西,有没有易燃易爆物品,地址是不是火星,收件人是不是本·拉登,照单全发。
Chariot测试则是用两台服务器,安装NETIQ公司的软件Chariot,一台接路由器WAN口,一台接LAN口,通过统计一个预定长度和格式的脚本文件无差错地从一台服务器传送到另一台服务器的时间来计算出路由器的Throughput。这里面学问就大了,一是与服务器性能有关,不诚实的厂家在测试自家的产品时用高性能的服务器,而测试别人的产品时用低性能的服务器,故意贬低数据。二是建立连接数,建立的连接数越多,对路由器软件的性能要求越高,软件写得差的,在连接数增加时,其Throughput会直线下降,甚至导致无法连接;而软件写得好的路由器则很平稳,甚至会随连接数的增加反而略有上扬。
三是Chariot测试不象Smartbits测试那样是测试UDP“包”,而是数据“流”,其数据封装成多大TCP包和服务器操作系统相关,但一般都封装为1518Byte大包,所以其测试数据会比用Smartbits测试64 Byte小包的数据好看很多倍,这一点很能迷惑人。四是Chriot测试Throughput结果是有效数据负载,不包括TCP协议损耗、帧间隔、应答和Chriot本身系统损耗,此部分典型损耗根据理论计算约6M,就是说即使你接的是一台能线速转发的交换机,不是路由器,测出来的Throughput也只可能是94M左右,这是理论极限值,因此如果宣称某路由器产品Chriot测试Throughput达 97M、98M,那就毫无疑问是信口开河欺骗消费者了。
用户进阶:
Throughput是LAN-to-WAN的Throughput,一般应该是在NAT开启,防火墙关闭的情况下得出的测试数据,而且有Smartbits测试和Chariot测试两种方式,得出的结果可以很不相同。根据现在普遍的硬件能力,Smartbits大包测试数据大家都很容易达到线速,就像测试大学生的智力,题目是1+1=?,大家都能答上来,比不出高下。所以要做客观的评估,题目应该出难一点,比较64Byte小包测试数据,高下立判。当然如果有NAT硬件加速要把它关掉再测试。
至于Chariot测试,应该是在同样的测试环境和方法、同样的连接数下进行比较才公平,而且在实际网络应用中,几乎不可能是单连接的,所以Chariot测试最好是在多连接下进行,一般可以选择100对连接基本上就可以看出端倪了。总之,单独的一个Throughput数据是毫无意义的,一定要说明这个数据是用什么方法测出来的才有用,相互性能的比较一定要在同样的测试环境和方法下进行比较才公平和有意义。最好的方法是看Smartbits测试NAT开启64 Byte小包的LAN-to-WAN Throughput。