web-dev-qa-db-ja.com

tcqdiscsを使用した帯域幅調整

ブリッジとして機能する3番目のパッシブマシンを使用して、単純なiperfサーバーとクライアント間の帯域幅を制限しようとしています。干渉がない場合、iperfは約90メガビット/秒の帯域幅を返します。私の目標は、分類されていないすべてのトラフィック(すべて)を子HTBクラスに送信するルートqdiscを作成することです。ここで、帯域幅が設定され、リーフqdiscにルーティングされます。これが機能すると、追加のtcパラメーターが設定されます。私の実装は簡単です:

Sudo tc qdisc add dev $interface root handle 1: htb default 10

Sudo tc class add dev $interface parent 1:0 classid 1:10 htb rate $bandwidth burst $burst

Sudo tc qdisc add dev $interface parent 1:10 handle 10:0 netem #other stuff goes here

このbashスクリプトが$interface = eth1$bandwidth = 500kbps$burst = 15kを使用してブリッジに実装されると、iperf帯域幅が減少しますが、必須値(通常は約5Mbps)にはほど遠いです。

スクリプトにエラーがありますか?バースト変数を誤用していますか?助けてください。

更新:さらに調査した結果、このトラフィック制御は、サーバーとインターフェイスするイーサネットカードに適用すると正常に機能することがわかりましたが、同じコマンドをクライアント側に適用すると問題が発生します。これは、セットアップ全体が逆の場合にも当てはまります。

5
Ian

tcのみのHTB帯域幅制御は送信トラフィックをシェーピングするため、サーバーとクライアント間の帯域幅を制限するにはTCP接続、シェーピングは両方のブリッジインターフェイスに適用されます(0x534B41のおかげで)

2
Ian