linux下使用tc工具模擬網路延遲和丟包

2021-10-01 22:49:27 字數 1145 閱讀 7091

模擬延遲傳輸簡介

netem 與 tc: netem 是 linux 2.6 及以上核心版本提供的乙個網路模擬功能模組。該功能模組可以用來在效能良好的區域網中,模擬出複雜的網際網路傳輸效能,諸如低頻寬、傳輸延遲、丟包等等情況。使用 linux 2.6 (或以上) 版本核心的很多發行版 linux 都開啟了該核心功能,比如 fedora、ubuntu、redhat、opensuse、centos、debian 等等。 tc 是linux 系統中的乙個工具,全名為 traffic control(流量控制)。tc 可以用來控制 netem 的工作模式,也就是說,如果想使用 netem ,需要至少兩個條件,乙個是核心中的 netem 功能被包含,另乙個是要有 tc 。

需要注意的是:本文介紹的流控只能控制發包動作,不能控制收包動作,同時,它直接對物理介面生效,如果控制了物理的 eth0,那麼邏輯網絡卡(比如 eth0:1)也會受到影響,反之,如果您在邏輯網絡卡上做控制,該控制可能是無效的。(注:虛擬機器中的多個網絡卡可以在虛擬機器中視為多個物理網絡卡)。

1.模擬網路延遲:

該命令將 eth0 網絡卡的傳輸設定為延遲 100 毫秒傳送。

帶有波動性的延遲值:該命令將 eth0 網絡卡的傳輸設定為延遲 100ms ± 10ms (90 ~ 110 ms 之間的任意值)傳送。

還可以更進一步加強這種波動的隨機性:該命令將 eth0 網絡卡的傳輸設定為 100ms ,同時,大約有 30% 的包會延遲 ± 10ms 傳送。

2.模擬網路丟包:

該命令將 eth0 網絡卡的傳輸設定為隨機丟掉 1% 的資料報。

也可以設定丟包的成功率:該命令將 eth0 網絡卡的傳輸設定為隨機丟掉 1% 的資料報,成功率為 30% 。

3.刪除網絡卡上面的相關配置:

將之前命令中的 add 改為 del 即可刪除配置:

4.模擬包重複:

該命令將 eth0 網絡卡的傳輸設定為隨機產生 1% 的重複資料報 。

5.模擬資料報損壞:

該命令將 eth0 網絡卡的傳輸設定為隨機產生 0.2% 的損壞的資料報。(核心版本需在 2.6.16 以上)

模擬資料報亂序:

該命令將 eth0 網絡卡的傳輸設定為:有 25% 的資料報(50%相關)會被立即傳送,其他的延遲10 秒。

新版本中,如下命令也會在一定程度上打亂發包的次序:

檢視已經配置的網路條件:

在tc環境下使用滑鼠

include include union regs reg void mousereset 滑鼠初始化 void mouseshow 顯示滑鼠 void mousehide 隱藏滑鼠 void checkmousepos 查詢 x,y 的位置和按鍵情況 unsigned int sign,s2 用...

TC網路控制工具的基本使用

模擬網路延時 驗證是否成功ping一下就可以知道了 1 將 eth0 網絡卡的傳輸設定為延遲 100 毫秒傳送。2 將 eth0 網絡卡的傳輸設定為延遲 100ms 10ms 90 110 ms 之間的任意值 傳送 這個命令也會在一定程度上打亂包的順序 3 將 eth0 網絡卡的傳輸設定為 100m...

linux下unifdef工具使用

為了閱讀 的方便,通常有兩種需求 1 只閱讀定義了某種巨集的 2 只閱讀沒有定義某個巨集的 linux下面提供了unifdef工具.具體安裝和使用如下 sudo apt getinstall unifdef a 獲取定義了a的 unifdef da test.c modi.c ifdef a 去除 ...