我构建了一个 RFC2544 的开源实现来测试 IPv4 网络设备。我测试的第一批设备之一是无线路由器 D-Link 2640B。为了测量其性能,我使用了一台带有 10/100 Mb 以太网接口和集成无线网络适配器的笔记本电脑。流量由笔记本电脑生成,由路由器转发回来并由笔记本电脑接收(可以确定性能指标):
D-Link 2640B Router
Wired Wireless
\ /
| |
`Laptop´
running
D-ITG
现在我运行测试套件。我无法解释的有趣的事情是:如果从测试仪开始的流量通过以太网电缆,然后由路由器转发到无线链路并由笔记本电脑接收,我会得到以下结果:
Frame size: 64
Throughput: 1.47657 Mb/s
Number of frames lost in the last round: 3
Frame size: 128
Throughput: 3.32227 Mb/s
Frame size: 256
Throughput: 6.43361 Mb/s
Frame size: 512
Throughput: 11.5488 Mb/s
Frame size: 1024
Throughput: 21.5157 Mb/s
Number of frames lost in the last round: 631
Frame size: 1280
Throughput: 25.8398 Mb/s
Frame size: 1518
Throughput: 28.793 Mb/s
如果流量由笔记本电脑通过无线链路发送,然后由路由器通过以太网链路转发回笔记本电脑,我得到以下结果:
Frame size: 64
Throughput: 54 Mb/s
Frame size: 128
Throughput: 54 Mb/s
Frame size: 256
Throughput: 54 Mb/s
Frame size: 512
Throughput: 54 Mb/s
Frame size: 1024
Throughput: 25.207 Mb/s
Frame size: 1280
Throughput: 26.9472 Mb/s
Frame size: 1518
Throughput: 42.1347 Mb/s
这是正常的吗?发生了什么,导致结果如此不同?
如果我仅使用以太网链路(用于传输和接收流量)测试设备,我会得到预期的结果。
谢谢
附加信息:为了发送测试流量,我使用了肌醇流量生成器。流量由发送到路由器的 UDP Echo Request 数据包组成。
用于确定吞吐量的算法是 RFC 2544 中定义的算法:您开始以特定的传输速率发送流量,然后通过二进制搜索提高或降低此速率,直到找到没有数据包丢失的最大速率。
路由器配置为启用 WPA2、SNMP 和 RIP v1。没有启用任何过滤器,信标周期为 100,RTS 阈值为 2347,碎片阈值为 2346,DTIM 间隔为 1。
笔记本电脑的操作系统是 Xubuntu 13.10,没有进行任何类型的优化或调整。
答案1
这正常吗?
由于无线协议的开销巨大,使用较小的帧时吞吐量会显著降低,这是很正常的。对于 54 Mbps 的 802.11g 连接,您的第一个测试结果的数字看起来确实很合理。
带宽确实可能因流量方向的不同而有所差异 - 无线网络接口可能会根据配置的电源管理计划动态协商较低的传输速率以节省能源。但从您在这种情况下的结果来看,我认为这些数字是骗人的 - 第二次运行中前四个探测集的 54 Mbps 是不合理的。