1. 程式人生 > >linux 網路延時、丟包與傳輸頻寬關係測試

linux 網路延時、丟包與傳輸頻寬關係測試

一、目的

在網際網路中,我們會向網路運營商申請指定額度的頻寬。實際傳輸時,由於網路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上啟動多個客戶端同時進行測試,只要總的傳輸速率不超過最大頻寬限制,每個客戶端的速率與單個客戶端測