Linux TC工具之netem隊列

上回我們介紹了tbf隊列,這次介紹模擬網絡環境和抖動測試時非常好用的netem隊列。netem隊列也是無類隊列,也就是說所有從網卡發送出去的包都會收到配置參數的影響!

    netem是linux2.6 及以上內核版提供的Network emulation服務,可以用來模擬廣域網下的延遲、丟包、重複、損壞和亂序等問題。

  1. 模擬網絡時延

 #eth0網卡增加時延100ms
 tc qdisc add dev eth0 root netem delay 100ms
 
 #正常網絡情況會出現抖動性延遲,將延遲設爲 100ms ± 10ms
 tc qdisc add dev eth0 root netem delay 100ms 10ms
 
 #網絡狀況是平滑變化的,短時間裏相鄰報文的延遲應該是近似的而不是完全隨機的。

 #這個值是百分比,代表相鄰報文延遲的粘性。如果爲 100%,每個相鄰的報文必定相同延遲,即所有包都將延遲;

#如果是 0% 則退化到隨機延遲的情況

 tc qdisc add dev eth0 root netem delay 100ms 10ms 20%
 
 # distribution 參數來限制它的延遲分佈模型。比如讓報文延遲時間滿足正態分佈
 #其他可選值有 uniform、pareto 和 paretonormal
 tc qdisc add dev eth0 root netem delay 100ms 10ms 20% distribution normal

  1. 模擬網絡丟包

 # 發送的報文有 50% 的丟包率
 tc qdisc change dev eth0 root netem loss 50%
 
 # 發送的報文隨機丟掉 50% 的數據包,成功率爲25%
 tc qdisc change dev eth0 root netem loss 50% 25%
  1. 模擬包重複/損壞

 # 隨機產生 20% 重複的包
 tc qdisc change dev eth0 root netem loss 20%
 
 # 隨機產生 5% 損壞的報文(在報文的隨機位置造成一個比特的錯誤)
 tc qdisc change dev eth0 root netem corrupt 5%
  1. 模擬包亂序

 # 固定的每隔一定數量的報文就亂序一次
 tc qdisc change dev eth0 root netem reorder 50% gap 3 delay 100ms
 # 使用概率來選擇亂序的報文
 tc qdisc change dev eth0 root netem reorder 50% 15% delay 300ms

  本文爲原創,未經許可不得在任何平臺轉載。如需轉載,與作者聯繫~

關注微信公衆號:智識訓練營(微信ID:TechBootcamp),獲取更多資訊~

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章