web-dev-qa-db-ja.com

HTBサブクラス率を理解しようとしています

私は現在、コンシューマークラスのルーターの代わりにUbuntuサーバーを使用してQoSを提供する機会を研究しています。 tcとHTBキューイングの分野に関する多くのリソースを読みました-これは、QoSのニーズに必要なもののように見えます。今ではほとんどはっきりしているようですが、サブクラスのレートで私を悩ませていることがまだあります。

これに対する答えとして見つかったこのサンプル構成を見てみましょう 質問

tc class add dev eth0 parent 1: classid 1:1 htb rate 90kbps ceil 90kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30kbps ceil 60kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30kbps ceil 60kbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 30kbps ceil 60kbps

tcがどのように機能するかを知っている場合、これは非常に簡単です。3つのサブクラスはすべて30 kbpsの帯域幅が保証されていますが、使用可能な帯域幅をさらに30kbps借りることができます。親クラスから(30 + 30 = 60kbps ceil)。

この例は私には理にかなっています。親クラスの合計帯域幅は90kbpsであり、3つのサブクラスのそれぞれが30kbps-3 x 30kbps = 90kbpsであることが保証されています。

さて、これからこの他の例を見てみましょう tutorial

# tc class add dev eth0 parent 1: classid 1:1 htb rate 6mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:20 htb rate 3mbit ceil 6mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1kbit ceil 6mbit burst 15k

それは物事が私を混乱させているところです。最初のサブクラスは5メガビットの帯域幅が保証され、2番目のサブクラスは3メガビットの帯域幅が保証されます。しかし、親クラスの帯域幅は6メガビットしかないのです。

そのような規則の目的は何ですか?どのサブクラスも、保証された帯域幅を取得することはできません。

さらに紛らわしいのは、チュートリアルの結論です。

HTBは確かに素晴らしく見えます。10:と20:の両方に保証された帯域幅があり、さらに分割する必要がある場合は、予想どおり、5:3の比率で借用します。

両方のクラスが保証された帯域幅を持ち、親がまだ借りる帯域幅を持っているのはどうしてですか?

間違いなく、私がここで見逃していることがあります。欠陥のあるチュートリアルかもしれませんが、同じ種類の紛らわしい設定を持つ他のサンプルがたくさん見つかりました- ここ たとえば:

/sbin/tc class add dev eth3 parent 1: classid 1:1 htb rate 2000kbit
/sbin/tc class add dev eth3 parent 1:1 classid 1:10 htb prio 1 rate 1500kbit ceil 1950kbit
/sbin/tc class add dev eth3 parent 1:1 classid 1:20 htb prio 2 rate 500kbit ceil 1600kbit

この構成では、兄弟の保証帯域幅が1500kbitであり、兄弟の1500kbitに500kbitを加えたものであるため、この場合、1:20クラスは親クラスに帯域幅を借用できます(最大1600kbitを借用できます)。独自の保証帯域幅は、すでに親の2000kビット帯域幅と一致しています。

誰かが状況を明確にすることができますか?

4
Eric MORAND

あなたはhtbがどのように機能するかを理解しました。
ただし、例を詳しく調べる必要があります。どちらの親クラスにもceilオプションがなく、利用可能な場合はより多くの帯域幅を使用します。最後の例で、親クラスにrate 2000kbit ceil 2000kbitがある場合、子クラスはそれほど多くの帯域幅を借りることができません。

ただし、5 + 3Mbitの例では、帯域幅が6Mbitより大きい場合、両方のクラスに保証された帯域幅がないことに同意します。
これはおそらく間違いです。

1
Sanael