問題タブ [trafficshaping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - HTB「レート」パラメーターは、利用可能な帯域幅を制限します
良い一日、
次のような状況があります。あるマシンから別のマシンへのデータの 4 つの TCP ストリーム。各ストリームには、独自の宛先 TCP ポートがあります。4 つのストリームには、高、中、低、バルクの異なる優先度があります。高、中、低は 1.67Mbit/s を生成し、バルクは 10Mbit/s を生成します。(トラフィックの生成に使用される iperf3)。各ストリームのパケットは適切な DiffServ マーク (DSCP) でマークされ、このマークは HTB qdisc でのトラフィックの分類に使用されます。
目標: HTB qdisc は、高い優先度のストリームが必要な 1.67Mbit/s を取得し、中程度の優先度も 1.67Mbit/s が保証されるように構成する必要がありますが、優先度はわずかに低く、残りのトラフィックは 50kbit を保証する必要があります。 /秒。各ストリームがアイドル状態で、ストリームが最初に指定されたよりも多くの帯域幅を生成する場合、各ストリームはリンク全体を使用できる必要があります。
トラフィックの生成:
HTB qdisc の構成
トラフィックは正しく分類されます。tc クラスの統計で関連するカウンターが上昇しているのを確認できます。これを何度も再確認しました。
問題: この構成では、高および中優先順位のストリームに帯域幅が正しく割り当てられます。ロープライオとバルクも 50kbit を受け取ります。ただし、ルートclass1:1でレートとして指定された値、つまり 3.5mbitを超えてリンクをプッシュすることはできません。
私が読んだ HTB に関するすべての記事とマニュアルでは、「レート」パラメーターはクラスに対する最低保証レートであり、「ceil」は取得できる最大量であると述べられていました。私の場合、「レート」はリンクを指定された値に制限しているようです。これは間違いなく、望ましい動作であり、期待される動作ではありません。
ルート クラスの「レート」パラメータを「ceil」と同じ値、つまり 1000mbit に設定すると、優先順位付けは行われず、使用可能な帯域幅はすべてのフロー間で均等に分割されます。これは、使用可能な帯域幅が変動する場合、prio トラフィックが 1.67Mbit/s 未満になるため、望ましい動作ではありません。
ルート クラスの "rate" パラメータの意味を誤解していませんか? この問題は、「量子」などの HTB パラメータに関係していますか? また、データの送信中に、すべてのクラスに負の量のトークンがあることも観察しました。これは悪いですか?その場合、どのパラメーターをどのように調整すればよいですか?
前もって感謝します!