在互聯網中,咱們會向網絡運營商申請指定額度的帶寬。實際傳輸時,因爲網絡QoS達不到要求,實際的傳輸帶寬可能達不到標稱值。本次測試在局域網環境中使用模擬工具模擬不一樣QoS下的網絡條件,得出不一樣QoS網絡下傳輸帶寬服務器
網絡的QoS一般用如下指標衡量:網絡
丟包率:因爲網絡擁塞,傳輸錯誤等形成的數據包丟失機率
延時:數據包發送到對端再返回到發送端的時長
延時抖動:衡量延時變化的程度
本次測試值模擬丟包率和延時與傳輸帶寬的關係。工具
注:本文中的丟包率指的是在傳輸速率小於最大傳輸帶寬時的丟包率。測試
本次測試分兩個階段進行:spa
在丟包率爲0的狀況下,測試不一樣延時下的傳輸速率;
調整丟包率與延時,測試不一樣延時與丟包率組合下的傳輸速率。server
測試使用兩位服務器:blog
Server A:10.10.168.151ip
Server B:10.10.168.153部署
兩臺Server之間經過千兆以太網鏈接(帶寬爲1000Mbps);cli
兩臺服務器上部署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
丟包設置爲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
丟表率從1%-10%變化,延時從10ms變化到1000ms,測試每個組合下的傳輸速率。當延時/丟包率增大時,傳輸速率會降低,當傳輸速率低於500kbps時,再也不繼續增大延時/丟包率。下表爲測試結果:
經過上表能夠繪製丟包/延時與傳輸速率的曲面圖:
X軸:延時(ms)
Y軸:丟包率
Z軸:傳輸速率(kbps)
經過曲面圖,能夠找到傳輸速率要達到500kbps/1000kbps時,延時與丟包率須要知足的條件
以上測試是單個客戶端測試的結果。在Server B上啓動多個客戶端同時進行測試,只要總的傳輸速率不超過最大帶寬限制,每一個客戶端的速率與單個客戶端測試的結果相同。