SOHO路由器处理能力

所了解到的网络设备设计情况,网络设备CPU很弱,只用来完成如DHCP、ARP路由更新等较轻工作,主要的路由转发直接有ASIC专用芯片。ASIC芯片类似于一段固定程序由硬件来实现,处理速度和能效相比CPU要高出一两个数量级,而且可以由很多物理核心并行完成;这好比GPU要比CPU在专用计算上的差距。思科最新的路由设备号称一台就能实现中国所有人一起视频的能力。

一直挺好奇SOHO路由器如果不使用专用芯片,如何靠那么低配小CPU完成工作的,同时使用无线两台设备直接数据传输为啥就会那么慢。

做个简单测试,先准备材料:

TP-Link TL-WR841ND v7 路由一只(标称300M路由,3年前买的)

固件版本:DD-WRT v24-sp2 (11/21/10) std - build 15778

CPU:Atheros AR7241 rev 1.1 (0x0101) / 400M

内存:32M

 

测试场景:两台设备A、B连到路由器,A向B 发送20字节TCP 包,B回复A 10 字节TCP 包

 

1. A  连接无线,B连接有线

测试结果如下:

CPU:  0.0% usr  0.0% sys  0.0% nic 40.1% idle  0.0% io  1.3% irq 58.4% sirq
19时07分38秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
19时07分39秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
19时07分39秒      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
19时07分39秒     wlan0   2056.00   2110.00    142.33    255.83      0.00      0.00      0.00

可以看到网络转发能力在4k/s左右,再也上不去了;CPU 60%占用,虽然没有跑满,但显然已经成为瓶颈。CPU 都是被linux系统的软中断消耗了。

从这看无线传输的瓶颈在于路由器的CPU。

A、B都连无线的场景应该差不多,就不测试了,目测速度在2000/s,无线局域网速度就是个悲剧。。

 

2. A 、B 都连有线

CPU: 0.0% usr 0.0% sys 0.0% nic 99.0% idle 0.0% io 0.0% irq 0.9% sirq
19时02分38秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
19时02分39秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
19时02分39秒 eth0 49602.00 50085.00 3631.25 5381.04 0.00 0.00 0.00
19时02分39秒 wlan0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

可以看到,路由器CPU 占用几乎为0,但平均处理10W/s次TCP包转发.

实际情况下不可能都是这么小包,有线网到达300M速度还是没问题的。

从这可以看出,这个路由器的转发还是用的ASIC芯片,CPU完全不参与转发逻辑。

如果用目前最新CPU处理器处理,单核心差不多也就能达到这个速度了。

 

总结

有线转发由硬件处理,非常快。无线传输靠CPU计算,系统软中断成为瓶颈。两者快差两个数量级了。

至于无线转发要CPU参与,不懂硬件,不知道啊。。

posted @ 2013-06-10 20:02  LittlePeng  阅读(1332)  评论(0编辑  收藏  举报