一、目的

在互联网中,我们会向网络运营商申请指定额度的带宽。实际传输时,由于网络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,测试每一个延时下的传输速率。下表为测试结果:

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

延时在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时,不再继续增大延时/丢包率。下表为测试结果:

linux 网络延时、丢包与传输带宽关系测试-LMLPHP   
通过上表可以绘制丢包/延时与传输速率的曲面图:

X轴:延时(ms)

Y轴:丢包率

Z轴:传输速率(kbps)

通过曲面图,可以找到传输速率要达到500kbps/1000kbps时,延时与丢包率需要满足的条件

以上测试是单个客户端测试的结果。在Server B上启动多个客户端同时进行测试,只要总的传输速率不超过最大带宽限制,每个客户端的速率与单个客户端测试的结果相同。

05-15 23:41