linux網絡環境模擬測試

今天工作中,碰到了一個項目,需要模擬服務器弱網環境測試,所以查找一番,自己整理記錄如下。

工具簡介

這次的linux的網絡模擬,使用Linux Traffic Control (tc)的擴展 Network Emulation (netem)來完成。
一般來說,Linux 2.6 (或以上) 版本內核,已經內置了這個工具,供大家使用。

需要注意的是:

  • 此方法只能控制發包動作,不能控制收包動作。
  • 命令直接對物理接口生效,如果控制了物理的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%的幾率和前一個包相關。

模擬網絡包錯誤
  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


點到即止

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容