原文:linux 网络延时、丢包与传输带宽关系测试 - IT--小哥的个人空间 - OSCHINA - 中文开源技术交流社区
一、目的
在互联网中,我们会向网络运营商申请指定额度的带宽。实际传输时,由于网络QoS达不到要求,实际的传输带宽可能达不到标称值。本次测试在局域网环境中使用模拟工具模拟不同QoS下的网络条件,得出不同QoS网络下传输带宽
二、网络QoS指标
网络的QoS通常用以下指标衡量:
丢包率:由于网络拥塞,传输错误等造成的数据包丢失概率
延时:数据包发送到对端再返回到发送端的时长
延时抖动:衡量延时变化的程度
本次测试值模拟丢包率和延时与传输带宽的关系。
注:本文中的丢包率指的是在传输速率小于最大传输带宽时的丢包率。
三、测试方案
本次测试分两个阶段进行:
在丢包率为0的情况下,测试不同延时下的传输速率;
调整丢包率与延时,测试不同延时与丢包率组合下的传输速率。
四、测试环境
测试使用两位服务器:
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.1 延时与传输速率的关系
丢包设置为0,延时从1ms 变化到 5000ms,测试每一个延时下的传输速率。下表为测试结果:
延时在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时,不再继续增大延时/丢包率。下表为测试结果:
通过上表可以绘制丢包/延时与传输速率的曲面图:
X轴:延时(ms)
Y轴:丢包率
Z轴:传输速率(kbps)
通过曲面图,可以找到传输速率要达到500kbps/1000kbps时,延时与丢包率需要满足的条件
以上测试是单个客户端测试的结果。在Server B上启动多个客户端同时进行测试,只要总的传输速率不超过最大带宽限制,每个客户端的速率与单个客户端测试的结果相同。