{{ v.name }}
{{ v.cls }}類
{{ v.price }} ¥{{ v.price }}
流量控制命令(tc)是每個網絡管理員都應該知道的工具。tc所做的是允許管理員配置內核包調度來模擬UDP/TCP應用程序的包延遲和丟失,或者限制特定服務的帶寬使用。
我將在Ubuntu Server 18.04實例上進行演示。您可以在任何Linux服務器上使用此命令,但是工具的安裝(如果沒有預裝)會有所不同。您還將需要一個具有sudo特權的用戶。
一、如何安裝tc命令
如果你發現tc命令在默認情況下沒有安裝,在Ubuntu上它是用iproute2打包的。所以安裝如下:
sudo apt-get install iproute2 -y
二、基本用法
您必須做的第一件事就是找出要應用于內核數據包調度程序的接口的名稱。為此,發出命令:
ip a
該命令將列出所有網絡設備的信息(圖A)。
我將通過向計算機上的ens5接口添加恒定延遲來進行演示。更具體地說,我將設備上的出站流量(出口)延遲200毫秒。為此,命令將是:
sudo tc qdisc add dev ens5 root tbf rate 1024kbit latency 50ms burst 1540
上面命令中的選項是:
qdisc告訴tc修改調度程序
add告訴tc添加新規則
dev ens5告訴tc該規則將應用于設備ens5
root告訴tc修改出站流量調度程序
tbf速率1024kbit告訴tc將網絡降低到1024kbit速率
50ms延遲告訴tc我們將網絡延遲50ms
1540告訴tc我們的存儲大小
發出命令后,可以驗證參數是否已通過命令應用:
sudo tc qdisc show dev ens5
您應該看到正確配置了每個選項(圖B)。
要刪除新添加的規則,請發出命令:
sudo tc qdisc del dev ens5 root
要記住的一件非常重要的事情是,一次只能將一個規則應用于一個接口。因此,為了創建與接口不同的規則,必須首先刪除以前的規則。
三、如何使用tc命令模擬丟包
舉例來說,假設您正在開發應用程序,則需要進行測試以查看其如何處理網絡上的數據包丟失。這對于確保您的應用程序可以容忍配置不良或不可靠的網絡至關重要。這是兩個模擬tc丟包的示例tc命令:
sudo tc qdisc add dev ens5 root netem loss 0.1%
上面的命令將隨機丟棄數據包,概率為0.1%。
如果我們希望丟失數據包的概率為0.3%,而先前的數據包的丟包率為25%,該怎么辦?該命令將是:
sudo tc qdisc add dev ens5 root netem loss 0.3% 25%
運行上述命令后,對網絡上的另一臺計算機執行ping測試,您應該看到指示的數據包丟失(圖C)。
有了該規則,啟動您的應用程序,并查看當網絡達不到標準時的運行情況。如果應用程序失敗,則您還有更多工作要做。
如果該特定的丟包規則不足以滿足您的要求,則可以采用Gilbert-Elliot方案,該方案定義了兩種狀態:
Good (or drop Gap)
Bad (or drop Burst)
該方案為網絡損害提供了更緊密的模型,而不是簡單的數據包丟失。要使用Gilbert-Elliot方案,該命令應如下所示:
sudo tc qdisc add dev ens5 root netem loss gemodel 1% 10% 70% 0.1%
現在,當我們運行ping測試時,我們應該會看到與以前相似的數字,但是對于您的測試目的,數據包丟失應該更加真實(圖D)。
在這里,您將看到一些使用tc命令在Linux機器上調整網絡流量的示例,因此您可以更好地測試可識別網絡的應用程序。有關tc的更多信息,請發出命令man tc并仔細閱讀手冊頁。