linux網(wǎng)絡(luò)環(huán)境模擬測試

今天工作中,碰到了一個(gè)項(xiàng)目,需要模擬服務(wù)器弱網(wǎng)環(huán)境測試,所以查找一番,自己整理記錄如下。

工具簡介

這次的linux的網(wǎng)絡(luò)模擬,使用Linux Traffic Control (tc)的擴(kuò)展 Network Emulation (netem)來完成。
一般來說,Linux 2.6 (或以上) 版本內(nèi)核,已經(jīng)內(nèi)置了這個(gè)工具,供大家使用。

需要注意的是:

  • 此方法只能控制發(fā)包動(dòng)作,不能控制收包動(dòng)作。
  • 命令直接對物理接口生效,如果控制了物理的eth0,那么邏輯網(wǎng)卡(比如eth0:1)也會(huì)受到影響;反之,如果您在邏輯網(wǎng)卡上做控制,該控制可能是無效的。(注:虛擬機(jī)中的多個(gè)網(wǎng)卡可以在虛擬機(jī)中視為多個(gè)物理網(wǎng)卡)

工具使用

首先獲取機(jī)子的網(wǎng)卡信息,如eth0或者em0之類的。然后通過執(zhí)行命令來監(jiān)控和改變網(wǎng)卡狀態(tài),達(dá)到的模擬的效果。命令可能需要root權(quán)限或sudo來執(zhí)行。

模擬網(wǎng)絡(luò)延遲

tc qdisc add dev eth0 root netem delay 100ms 10ms 10%

  • 100ms為固定延遲
  • 10ms為隨機(jī)值(可以省略)
  • 100ms為隨機(jī)概率(可以省略)

語句語義為:將eth0加入到監(jiān)控中,并將每個(gè)包都延遲100ms,有10%的幾率有±10ms的浮動(dòng)。(注:再次修改需要修改命令為tc qdisc change dev eth0 root netem delay 100ms 10ms 10%)

模擬網(wǎng)絡(luò)丟包

tc qdisc change dev eth0 root netem loss 20% 50%

  • 20%為丟包比率
  • 50%為相關(guān)概率(可以省略)

語句語義為:將eth0的丟包率改為20%,后一個(gè)包有丟棄有50%的幾率和前一個(gè)包相關(guān)。

模擬網(wǎng)絡(luò)包錯(cuò)誤
  1. 模擬包重復(fù):
    tc qdisc add dev eth0 root netem duplicate 1%
    語句語義為:將 eth0 網(wǎng)卡的傳輸設(shè)置為隨機(jī)產(chǎn)生 1% 的重復(fù)數(shù)據(jù)包 。
  2. 模擬數(shù)據(jù)包損壞:
    tc qdisc add dev eth0 root netem corrupt 0.2%
    語句語義為:將 eth0 網(wǎng)卡的傳輸設(shè)置為隨機(jī)產(chǎn)生 0.2% 的損壞的數(shù)據(jù)包 。 (內(nèi)核版本需在 2.6.16 以上)
  3. 模擬數(shù)據(jù)包亂序:
    tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
    語句語義為:將 eth0 網(wǎng)卡的傳輸設(shè)置為:有 25% 的數(shù)據(jù)包(50%相關(guān))會(huì)被立即發(fā)送,其他的延遲10 秒。
取消網(wǎng)絡(luò)模擬

取消網(wǎng)絡(luò)模擬,相當(dāng)于取消監(jiān)控該網(wǎng)卡,使用命令:
sudo tc qdisc del dev eth0 root netem


點(diǎn)到即止

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容