Linux
linux htb 中多餘的頻寬如何分配?
假設我有 100kbps 頻寬
- Root - 100kbps / \ / \ / \ / \ / \ / \ Assured 30kbps 10kbps
我保證 A 類 30kbps,B 類 10kbps。60kbps 是預留或超額頻寬
在HTB 手冊中它說
任何需要它的類都可以使用任何未使用的頻寬(與其分配的份額成比例)。
但是,當我執行以下測試時,如上述 ascii 藝術所示:
tc qdisc add dev eno1 root handle 1: htb tc class add dev eno1 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps tc class add dev eno1 parent 1:1 classid 1:10 htb rate 10kbps ceil 100kbps tc class add dev eno1 parent 1:1 classid 1:20 htb rate 30kbps ceil 100kbps tc filter add dev eno1 protocol ip parent 1:0 prio 1 u32 match ip dport 8000 0xffff flowid 1:10 tc filter add dev eno1 protocol ip parent 1:0 prio 1 u32 match ip dport 8001 0xffff flowid 1:20
我得到以下結果:A 類為56kbps , B類為37kbps
這是〜1.5的比率,而我預計該比率為3:1,作為早期分配。
似乎提供了 30 和 10,然後多餘的部分在兩個類之間平均分配,這是有道理的,因為在程式碼中它說 RedBlack 樹持有這兩個類,調度程序對它們執行 RR。
我的問題是,超出的頻寬是否按照結果和程式碼的建議平均分配?(也許我誤解了程式碼)
或者我應該期待 A 類和 B 類之間的比例為 3:1 嗎?
查看 HTB 文件中的“量子”。所有未分配的體重都由 WRR 算法根據類的量子處理。
據我所知,“分配的份額”是指ceil。所以,如果你想要 3:1 的比例,你需要寫:
tc class add dev eno1 parent 1:1 classid 1:10 htb rate 10kbps ceil 100kbps tc class add dev eno1 parent 1:1 classid 1:20 htb rate 30kbps ceil 300kbps
由於根類有一個 100kbps 的 ceil,因此它不會提供超過 100kbps 的速率,而 300kbps 選項只是在這裡指定比率。