linux 网络延时、丢包与传输带宽关系测试

  • Post author:
  • Post category:linux


1.目的

在互联网中,我们会向网络运营商申请指定额度的带宽。实际传输时,由于网络QoS达不到要求,实际的传输带宽可能达不到标称值。本次测试在局域网环境中使用模拟工具模拟不同QoS下的网络条件,得出不同QoS网络下传输带宽

2.网络QoS指标

网络的QoS通常用以下指标衡量:

  • 丢包率:由于网络拥塞,传输错误等造成的数据包丢失概率
  • 延时:数据包发送到对端再返回到发送端的时长
  • 延时抖动:衡量延时变化的程度

本次测试值模拟丢包率和延时与传输带宽的关系。

注:本文中的丢包率指的是在传输速率小于最大传输带宽时的丢包率。

3.测试方案

本次测试分两个阶段进行:

  1. 在丢包率为0的情况下,测试不同延时下的传输速率;
  2. 调整丢包率与延时,测试不同延时与丢包率组合下的传输速率。

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上启动多个客户端同时进行测试,只要总的传输速率不超过最大带宽限制,每个客户端的速率与单个客户端测试的结果相同。



版权声明:本文为qq_31213433原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。