天天看點

Linux系統模拟網絡測試

需要注意的是:

  • 此方法隻能控制發包動作,不能控制收包動作。
  • 指令直接對實體接口生效,如果控制了實體的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% 在檔案備份政策執行後,再執行這條指令

模拟網絡包錯誤
  1. 模拟包重複:

    ​​

    ​tc qdisc add dev eth0 root netem duplicate 1%​

    語句語義為:将 eth0 網卡的傳輸設定為随機産生 1% 的重複資料包 。

  2. 模拟資料包損壞:

    ​​

    ​tc qdisc add dev eth0 root netem corrupt 0.2%​

    語句語義為:将 eth0 網卡的傳輸設定為随機産生 0.2% 的損壞的資料包 。 (核心版本需在 2.6.16 以上)

  3. 模拟資料包亂序:

    ​​

    ​tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%​

    語句語義為:将 eth0 網卡的傳輸設定為:有 25% 的資料包(50%相關)會被立即發送,其他的延遲10 秒。

取消網絡模拟

取消網絡模拟,相當于取消監控該網卡,使用指令:

​​

​sudo tc qdisc del dev eth0 root netem​