Linux

測試 Linux HTB 未達預期

  • November 23, 2017

我正在嘗試測試 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 排隊規則的限制。

引用自:https://serverfault.com/questions/884814