単純なHTB階層があるとしましょう。man 8 tc-htb
) subhtb クラスで指定した総帯域幅を設定します。超過ルートHTBクラスに指定された総帯域幅:
tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 70kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 70kbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 70kbps
ここで、ルートhtbクラスの最大速度は100kbpsですが、下位htbクラスの最大最大速度は160kbpsです。
カーネルは、最大速度でトラフィックを生成する3つのサブプロセスすべてをどのように処理しますか?この場合、トラフィック全体の公正な処理を保証するために中間Sfqを使用できますか?
さらに重要なのは、生成されたトラフィックの合計がハードウェアインターフェイスの帯域幅を超える場合、カーネルは通過するトラフィックをどのように決定しますか?
答え1
HTBの一般的なアドバイスは次のとおりです。サブクラスのレートの合計は、親クラスのレートと同じか小さいです。」。
サブクラスがより高い速度を許容する場合、HTB は帯域幅制限を超えます。親項目の制限は適用されず、「レンタル帯域幅」計算(制限率に基づいて)にのみ使用されます。実際の帯域幅制限は、子(リーフ)クラスによってのみ適用されます。
あるいは、少なくとも数年前のメーリングリストでは、次のように説明されました。
親クラスセルがサブクラスセルの合計より小さい場合、サブクラスは、親クラスが許可するよりも多くの帯域幅を消費する可能性があります。これは、親クラスが確認されていないために発生します!親は、子どもが金利を超えて親から借りたい場合にのみ確認されます。
https://www.spinics.net/lists/lartc/msg08619.html
これは非常に古い文書ですが、今日もまだ関連しています。