Linux
使用 tc 限制流量,但頻寬錯誤
我正在使用這些命令來設置頻寬限制:
tc qdisc del dev eth1 root tc qdisc add dev eth1 root handle 1: cbq avpkt 1000 bandwidth 100Mbit tc class add dev eth1 parent 1: classid 1:1 cbq rate 1Mbit allot 1500 prio 3 bounded isolated tc filter add dev eth1 parent 1: protocol ip u32 match ip protocol 6 0xff flowid 1:1
它
我的理解是,這些命令應該將我的網路流量限制為每秒 1 MBit / 125 KByte,但事實並非如此。
實際的數據傳輸速率約為每秒 5 MB。我通過在 NFS 上傳輸一個大文件來衡量這一點。如果我將“rate 1Mbit”參數修改為“rate 512 Kbit”,則傳輸速率僅為每秒 2.5 MByte,因此 tc 命令實際上會限制流量,但不會像參數所說的那樣。
此伺服器將 Debian Linux 6.0.7 作為 Citrix XenServer VM 執行。
我在做什麼錯?請指教。
您的
tc
規則僅適用於傳出流量。檢查此頁面:
現在請記住,我們通常只會塑造傳出流量,因為這是我們可以控制的,與傳入流量不同。
如果您路由兩個介面,您可以在每個設備上放置類似的規則並在它們之間路由/橋接。這樣,傳遞到一個設備的傳入鏈的內容傳遞到另一個設備的傳出,有效地限制了兩個方向的頻寬
另一種選擇是使用IFB偽設備
允許將排隊規則附加到傳入的數據包。