tc(Traffic Control)是 Linux 中用於流量控制和網路模擬的強大工具。你可以使用它來模擬網路延遲、帶寬限制、數據包丟失等。 以下是一個使用 tc 模擬網路延遲的基本步驟: 1.查看當前的 qdisc(隊列規則)和 filter(過濾器) 首先,確保你的網路介面沒有設置任何 qdi ...
tc
(Traffic Control)是 Linux 中用於流量控制和網路模擬的強大工具。你可以使用它來模擬網路延遲、帶寬限制、數據包丟失等。
以下是一個使用 tc
模擬網路延遲的基本步驟:
1.查看當前的 qdisc(隊列規則)和 filter(過濾器)
首先,確保你的網路介面沒有設置任何 qdisc。你可以使用以下命令查看:
tc qdisc show dev <interface>
其中 <interface>
是你的網路介面名稱,如 eth0
。
2. 設置根 qdisc
為了應用 tc 規則,你需要在網路介面上設置一個 qdisc。最常用的 qdisc 是 handleroot
,但在這裡我們將使用 htb
(層次化令牌桶)作為示例,因為它允許我們設置更複雜的規則(儘管對於簡單的延遲模擬,這並不是必需的)。
tc qdisc add dev <interface> root handle 1: htb
3. 添加延遲規則
現在,你可以添加一個延遲規則。假設你想為所有從 <interface>
發送的數據包添加 100ms 的延遲:
tc qdisc add dev <interface> parent 1:1 netem delay 100ms
註意:上面的命令中,1:1
是一個子 qdisc 的句柄。在 htb
qdisc 下,我們通常使用這種子 qdisc 來應用特定的規則。但是,對於簡單的延遲模擬,你也可以直接使用 root
qdisc,即:
tc qdisc change dev <interface> root netem delay 100ms
4. 驗證設置
你可以使用 ping
或其他網路工具來驗證延遲是否已應用。
5. 刪除規則
當你完成模擬並希望刪除這些規則時,可以使用以下命令:
tc qdisc del dev <interface> root
這將刪除網路介面上的所有 qdisc 和相關的規則。
6. 註意
tc
規則在重啟或網路介面重新載入後將失效。如果你希望這些規則在重啟後仍然生效,你可能需要考慮將它們添加到啟動腳本或 systemd 服務中。但是,請註意,這樣做可能會影響生產環境的網路性能。始終在測試環境中驗證你的更改。
本文來自博客園,作者:dashery,轉載請註明原文鏈接:https://www.cnblogs.com/ydswin/p/18209214