Linux
測試 Linux HTB 未達預期
我正在嘗試測試 Linux HTB,做一個最簡單的例子只是為了看看它是否真的有效。
我正在創建一個根並給它200kbps,然後我創建了 3 個類,每個類都分配了200kbps的一部分。
- Root - / | \ / | \ / | \ / | \ / | \ / | \ 100kbps 60kbps 40kbps
最後我想看到的是,當它們執行 60 秒時,我得到第一類使用了一半的頻寬,第二類使用了 30% 的頻寬,最後一類使用了 20% 的頻寬。
現在是測試的設置。
我創建了上面的樹,並應用了過濾器。
tc qdisc add dev eno2 root handle 1: htb default 30 tc class add dev eno2 parent 1: classid 1:1 htb rate 200kbps ceil 200kbps tc class add dev eno2 parent 1:1 classid 1:10 htb rate 100kbps ceil 200kbps tc class add dev eno2 parent 1:1 classid 1:20 htb rate 60kbps ceil 200kbps tc class add dev eno2 parent 1:1 classid 1:30 htb rate 40kbps ceil 200kbps tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10 tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 25 0xffff flowid 1:20 tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 36 0xffff flowid 1:30
對於我使用iperf的測試。
我為伺服器打開了 3 個終端:
sudo iperf -s -p 25 -i 1 sudo iperf -s -p 36 -i 1 sudo iperf -s -p 80 -i 1
然後用執行時間(60 秒)的參數連接 3 個客戶端。
iperf -c 132.74.120.45 -p 25 -t 60 iperf -c 132.74.120.45 -p 36 -t 60 iperf -c 132.74.120.45 -p 80 -t 60
結果有點奇怪……似乎每個人都使用了相同數量的頻寬,而不管原始分配如何?
此外,我確實使用
bmon
命令檢查了隊列規則是否為 HTB,如下圖所示。我究竟做錯了什麼 ?
HTB 流量整形僅適用於傳出設備。因此,如果您想測試功能,您必須針對可以通過成形界面到達的目的地進行測試。看圖:
PC---\ PC----switch----(eno1)router with HTB shaping(eno2)----Internet PC---/ ^^^^ Shaping is done on the ougtoing device
因此內部網路上的流量不受限制。只有通過網路的流量(在這種情況下通過 eno2)受到 HTB 排隊規則的限制。