tcを使用した低速接続のシミュレーション


9

ネットワークトラフィックを制限するLinuxボックス(Centos 5.5)があります。クライアントに配布するアプリケーションがあり、256Mbit /秒の最小推奨帯域幅でテストしたいと思います。これまでのところ、私が見たtcチュートリアルでは、特定の基準に従って帯域幅を制限できるようですが、すべての状況で(IPヘッダーの外観に関係なく、すべてのIPアドレスとの間で)帯域幅を制限したいと思います。

私が使用することを示唆した1つのチュートリアル:

tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2

しかし、私は次のエラーを受け取ります:

Unknown filter "flowid", hence option 10:2 is unparsable

すべての状況でeth0に出入りする帯域幅を制限する方法に関するアイデアはありますか?

回答:


11

すべての送信トラフィックに制限を適用する場合、フィルターはまったく必要ありません。次のように、qdiscをインターフェースのルートハンドルに追加するだけです。

tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

インバウンドトラフィックをシェーピング/ポリシングする場合は、もう少し複雑です。たとえば、IFBインターフェースを使用する必要があります。

modprobe ifb
ip link set dev ifb0 up
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
#  ^- this is a dummy filter, match u32 0 0 matches all traffic
tc qdisc add dev ifb0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

2つの単純なフィルターを使用した別のアプローチを次に示します。

tc qdisc add dev eth0 ingress
tc filter add dev eth0 root         protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1

私はあなたの解決策をハッキングしてきましたが、それを機能させることができません。コマンドを実行し、Firefoxを開いて、ダウンロードを開始し、ダウンロードの速度が速すぎます。ifconfigを実行すると、ifb0の下にいくつかのRXパケットとTXパケットが表示されるはずです(表示しないため)。ありがとう。
rancidfishbreath-2010年

ifbインターフェースなしで機能する別のアプローチを追加しました。

2つの単純なフィルターを使用した2番目のアプローチはうまく機能しています。本当にありがとう。シンプルで理解しやすいので、私はこのソリューションが本当に好きです。
rancidfishbreath-2010

素晴らしいありがとう、新しい質問、実行後に制限を削除するにはどうすればよいtc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540ですか?ありがとう!
SSH

スロットルをオフにして元の状態に戻す方法は?Plsは、「2つの単純なフィルターを使用した異なるアプローチ」バージョンに対応しています。「man tc」は...いつものように圧倒的です。
ジェフリーアンダーソン

1

これは少し範囲外かもしれませんが、WAN-emuはスループットとレイテンシの奇妙な要件を持つ環境のエミュレーションに非常に優れています[1]。

[1]:http : //speed.cis.nctu.edu.tw/wanemu/ WAN-emu


:高遅延や損失の多いリンクは、あまりにも、netem TCモジュールを使用して、非常に快適にシミュレートすることができlinuxfoundation.org/collaborate/workgroups/networking/netemを
アルを。

0

あなたはこのようなtc qdisc add dev eth0ルートハンドル10のような1つのルーラーを追加しました:htb default 20

あなたのように

tc filter add dev eth0 protocol ip parent 10:prio 2 flowid 10:2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.