需要注意的是:
- 此方法隻能控制發包動作,不能控制收包動作。
- 指令直接對實體接口生效,如果控制了實體的eth0,那麼邏輯網卡(比如eth0:1)也會受到影響;反之,如果您在邏輯網卡上做控制,該控制可能是無效的。(注:虛拟機中的多個網卡可以在虛拟機中視為多個實體網卡)
工具使用
首先擷取機子的網卡資訊,如eth0或者em0之類的。然後通過執行指令來監控和改變網卡狀态,達到的模拟的效果。指令可能需要root權限或sudo來執行。
模拟網絡延遲
tc qdisc add dev eth0 root netem delay 100ms 10ms 10%
- 100ms為固定延遲
- 10ms為随機值(可以省略)
- 100ms為随機機率(可以省略)
語句語義為:将eth0加入到監控中,并将每個包都延遲100ms,有10%的幾率有±10ms的浮動。(注:再次修改需要修改指令為
tc qdisc change dev eth0 root netem delay 100ms 10ms 10%
)
模拟網絡丢包
tc qdisc change dev eth0 root netem loss 20% 50%
- 20%為丢包比率
- 50%為相關機率(可以省略)
語句語義為:将eth0的丢包率改為20%,後一個包有丢棄有50%的幾率和前一個包相關。
tc qdisc add dev eth0 root netem delay 50ms 10ms 10% 先執行
tc qdisc change dev eth0 root netem loss 40% 70% 在檔案備份政策執行後,再執行這條指令
模拟網絡包錯誤
-
模拟包重複:
tc qdisc add dev eth0 root netem duplicate 1%
語句語義為:将 eth0 網卡的傳輸設定為随機産生 1% 的重複資料包 。
-
模拟資料包損壞:
tc qdisc add dev eth0 root netem corrupt 0.2%
語句語義為:将 eth0 網卡的傳輸設定為随機産生 0.2% 的損壞的資料包 。 (核心版本需在 2.6.16 以上)
-
模拟資料包亂序:
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
語句語義為:将 eth0 網卡的傳輸設定為:有 25% 的資料包(50%相關)會被立即發送,其他的延遲10 秒。
取消網絡模拟
取消網絡模拟,相當于取消監控該網卡,使用指令:
sudo tc qdisc del dev eth0 root netem