私は、外側に10GBeインターフェース、内側にボンディングされたギガビットイーサネットインターフェースを備えたLinuxルーターを持っています。
現在、2GBit/sの予算があります。 1か月の平均でそのレートを5%以上超えると、10Gbit/sの容量全体が課金されます。ドルベースでかなりのステップアップ。
したがって、これを10GBeインターフェイスで2GBit/sに制限したいと思います。
TBFフィルターが理想的かもしれませんが、このコメントは懸念事項です。
Alphaを除くすべてのプラットフォームで、理想的な最小のバースト性で最大1mbit/sの通常のトラフィックを形成し、構成されたレートで正確にデータを送信できます。
TBFまたはその他のフィルターを使用して、このレートをインターフェイスに適用する必要がありますか。また、どのように実行しますか。ここに示した例がわかりません: Traffic Control HOWTO
特に「例9.256kbit/sTBFの作成」
tc qdisc add dev eth0 handle 1:0 root dsmark indices 1 default_index 0
tc qdisc add dev eth0 handle 2:0 parent 1:0 tbf burst 20480 limit 20480 mtu 1514 rate 32000bps
256Kビット/秒のレートはどのように計算されますか?この例では、32000bps = 32kバイト/秒です。 tcはbps =バイト/秒を使用するため。バーストと制限が関係してくると思いますが、希望のレートに到達するために適切な数値をどのように選択しますか?
これは間違いではありません。これをテストしたところ、256Kに近いレートが得られましたが、正確にはそうではありませんでした。
[〜#〜]編集[〜#〜]
多くの読み取りとテストを行った後、帯域幅が関係しているため、TBFは不適切であるという結論に達しました。どの設定を試しても、TBFで最大50Mbit/sを超える帯域幅を提供できませんでした。 lartc.org/lartc.pdfによると、帯域幅が100Mbit/sを超える場合は、RED方式の方が適しているため、これを使用してみます。
ただし、minの値(つまり、マーキングが可能になる平均キューサイズ)を選択します。与えられた例はこれです:
必要な最大許容ベースキューイング遅延を計算して最小値を設定し、それを帯域幅で乗算する必要があります。たとえば、64kbit/s ISDNリンクでは、200msのベースキューイング遅延が必要な場合があるため、minを1600バイトに設定します。
許容可能な最大のベースキューイングレイテンシをどのように選択しますか?例は64kbit/s用です。
2Gbit/sで何が許容されますか?
トラフィックのタイプに基づいて、許容可能なキューイング遅延を選択する必要があります。
キューイングの遅延/戦略は、インターフェイス速度ではなくトラフィックタイプの問題です。たとえば、VOIPはおそらくキューに入れられるべきではありません。残念ながら、tc REDのドキュメントはあまり明確ではありません。ジュニパー/シスコのサイトでいくつかのRED情報を読み、その知識をtcに適用することをお勧めします。
256Kビット/秒のレートはどのように計算されますか?この例では、32,000bps = [32,000]バイト/秒です。
はい、そこの数学は正しいです。 256kに近い数値が表示されている場合は、おそらくわずかに下です。その数はどこから測定していますか?ブラウザのダウンロードなどの場合、パケットヘッダーのオーバーヘッドはカウントされませんが、tc
はすべてをカウントします。
私の経験では、qdiscTBFは帯域幅を1Gbpsに簡単に制限できるため、2Gbpsにも拡張できると思います。ただし、ローエンドのエッジルーターではなく、実際のCPUが必要になる可能性があります。 4 GHzi3のようなもので十分でしょう。
次のようなものを試してください
tc qdisc add dev "$DEV" root handle 1: \
tbf rate "$UPLINK_RATE" burst "$UPLINK_BURST" latency "$TBF_LATENCY"
どこ
DEV="$(ip route | grep "^default " | grep -Po "(?<=dev )[^ ]+")"
UPLINK_RATE="2000Mbit"
UPLINK_BURST="6500"
TBF_LATENCY="14ms"
低レイテンシのTBFを使用するには、PREEMPTカーネルを実行する必要がある場合があることに注意してください(例:Ubuntu linux-lowlatency-hwe-*
package)または、システムがこれらすべてのパッケージの処理に失敗する場合があります。
参照: https://networkengineering.stackexchange.com/a/54404/36597