ネットワークトラフィックを制限したいLinuxボックス(Centos 5.5)があります。クライアントに配布するアプリケーションがあり、256Mビット/秒の最小推奨帯域幅でテストしたいと思います。これまでのところ、私が見たtcチュートリアルでは、特定の基準に従って帯域幅を制限できるように見えますが、すべての状況で(IPヘッダーの外観に関係なく、すべてのIPアドレスとの間で)帯域幅を制限したいと思います。
あるチュートリアルでは、次の使用を提案しています。
tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2
しかし、次のエラーが発生します。
Unknown filter "flowid", hence option 10:2 is unparsable
すべての状況でeth0に出入りする帯域幅を制限する方法に関するアイデアはありますか?
すべてのアウトバウンドトラフィックに制限を適用する場合は、フィルターはまったく必要ありません。次のように、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
これは少し範囲外かもしれませんが、WAN-emuはスループットとレイテンシの奇妙な要件を持つ環境のエミュレーションに非常に優れています[1]
[1]: http://speed.cis.nctu.edu.tw/wanemu/ WAN-emu
このような1つのルーラーを追加しましたtcqdisc add dev eth0 root handle 10:htb default 20
あなたのような後
tc filter add dev eth0 protocol ip parent 10:prio 2 flowid 10:2