1.目的
在互联网中,我们会向网络运营商申请指定额度的带宽。实际传输时,由于网络QoS达不到要求,实际的传输带宽可能达不到标称值。本次测试在局域网环境中使用模拟工具模拟不同QoS下的网络条件,得出不同QoS网络下传输带宽
2.网络QoS指标
网络的QoS通常用以下指标衡量:
- 丢包率:由于网络拥塞,传输错误等造成的数据包丢失概率
- 延时:数据包发送到对端再返回到发送端的时长
- 延时抖动:衡量延时变化的程度
本次测试值模拟丢包率和延时与传输带宽的关系。
注:本文中的丢包率指的是在传输速率小于最大传输带宽时的丢包率。
3.测试方案
本次测试分两个阶段进行:
- 在丢包率为0的情况下,测试不同延时下的传输速率;
- 调整丢包率与延时,测试不同延时与丢包率组合下的传输速率。
4.测试环境
测试使用两位服务器:
Server A:10.10.168.151
Server B:10.10.168.153
两台Server之间通过千兆以太网连接(带宽为1000Mbps);
两台服务器上部署iperf,用于向网络加流量,并统计传输速率;其中Server A上运行iperf server端(iperf -s),Server B上运行iperf client端(iperf -c 10.10.168.151 -t 100000 -i2)。数据流量方向是:server B → server A。iperf client端启动1分钟,统计1分钟内的平均传输速率作为一次测试的结果。
在Server B上,使用tc 模拟不同QoS的网络环境。tc 可以在server的出口方向模拟延时和丢包的情况:
添加延时:tc qdisc add dev enp0s25 root netem delay 50ms
添加丢包:tc qdisc add dev enp0s25 root netem loss 3%
添加延时与丢包:tc qdisc add dev enp0s25 root netem delay 50ms loss 3%
清空规则:tc qdisc del dev enp0s25 root
查看规则:tc qdisc ls dev enp0s25
5.测试结果
5.1. 延时与传输速率的关系
丢包设置为0,延时从1ms 变化到 5000ms,测试每一个延时下的传输速率。下表为测试结果:
延时(ms) | 1 | 10 | 20 | 30 | 40 | 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 500 | 600 | 800 | 1000 | 1500 | 2000 | 3000 | 4000 | 5000 |
传输速度(Mbps) | 854 | 854 | 808 | 730 | 552 | 446 | 226 | 144 | 110 | 86 | 70 | 59 | 51 | 40 | 30 | 22 | 18.4 | 12 | 10 | 6 | 2 | 0.2 |
延时在4000ms以内时,传输速率能在1Mbps以上。当延时到达5000ms时,传输速率下降到200kbps。延时越大,达到稳定传输速率的时间越长。
注意
:以上测试是在iperf采用默认的window size测试的结果;window size会影响到max cwnd和max rwnd,在延时比较大的时候,max wnd = MIN(max cwnd, max rwnd)决定了最终的传输速度;rate = max wnd/rtt;从测试的结果看,max cwnd比较小,这个值决定的传输速度;以300ms延时的测试点为例,通过-w参数增加发送端window size,传输速率可以提升到83Mbps,此时max rwnd决定了传输速度,此时,再通过-w参数增加接收端window size,传输速率可以到达450Mbps
5.2. 延时、丢表率与传输速率的关系
丢表率从1%-10%变化,延时从10ms变化到1000ms,测试每一个组合下的传输速率。当延时/丢包率增大时,传输速率会下降,当传输速率低于500kbps时,不再继续增大延时/丢包率。下表为测试结果:
传输码率(kbps) | 延时(ms) | |||||||||
50 | 100 | 200 | 300 | 400 | 500 | 600 | 800 | 1000 | ||
丢包率 | 1% | 2810 | 1500 | 1130 | 816 | 904 | 863 | 848 | 714 | 355 |
2% | 1670 | 1000 | 693 | 535 | 504 | 440 | ||||
3% | 1480 | 737 | 479 | 526 | 341 | |||||
4% | 1240 | 585 | 411 | 317 | 305 | |||||
5% | 1070 | 565 | 432 | 273 | ||||||
10% | 532 | 318 | 96.5 |
通过上表可以绘制丢包/延时与传输速率的曲面图:
X轴:延时(ms)
Y轴:丢包率
Z轴:传输速率(kbps)
通过曲面图,可以找到传输速率要达到500kbps/1000kbps时,延时与丢包率需要满足的条件
以上测试是单个客户端测试的结果。在Server B上启动多个客户端同时进行测试,只要总的传输速率不超过最大带宽限制,每个客户端的速率与单个客户端测试的结果相同。