web-dev-qa-db-ja.com

Linuxゲートウェイの内部インターフェースの帯域幅を制限する

私は、Linuxベース(Debianを実行)のブランチオフィスルーターを担当しています。このルーターは、単一の高速インターネット接続(eth2)を使用して、それぞれが個別のサブネット(192.168.1.0/24から192.168)を持つ約20の内部ネットワークに変換します。 .20.0/24)および個別のVLAN(eth0.101からeth0.120)。内部サブネットの1つで帯域幅を制限しようとしていますが、これは常に必要以上の帯域幅を消費しています。 。これを行うための最良の方法は何ですか?

これを最初に試したのは、SuperUserで聞いたwondershaperでした ここ 。残念ながら、これは私が持っているのとは正反対の状況で役立ちます...インターネット側ではなくクライアント側で役立ちます。

2番目の試みは、 http://www.topwebhosts.org/tools/traffic-control.php にあるスクリプトを使用することでした。これを変更して、アクティブな部分を次のようにしました。

tc qdisc add dev eth0.113 root handle 13: htb default 100
tc class add dev eth0.113 parent 13: classid 13:1 htb rate 3mbps
tc class add dev eth0.113 parent 13: classid 13:2 htb rate 3mbps
tc filter add dev eth0.113 protocol ip parent 13:0 prio 1 u32 match ip dst 192.168.13.0/24 flowid 13:1
tc filter add dev eth0.113 protocol ip parent 13:0 prio 1 u32 match ip src 192.168.13.0/24 flowid 13:2

私がこれをしたいのは、VLAN 113(サブネット192.168.13.0/24)の帯域幅を3mbitアップと3mbitダウンに制限することです。残念ながら、まったく効果がないようです!I ' m tcコマンドの経験が非常に少ないので、これを機能させるための助けをいただければ幸いです。

4
Jack Scott

開発者から同じことをしようとしている人への引用: vlan疑似デバイスには送信キューがないため、vlanでトラフィック制御を行うと期待どおりに機能しない場合があります。

すでにルールを サブネットごとのレート制限 に記述しているので、Linuxにレート制御をさせる必要があります。

VLANをブリッジに配置することで回避することをお勧めします(ただし、一貫性を保つために、VLANごとにブリッジを作成することをお勧めします)。

brctl addbr br113
btctl addif br113 eth0.113

次に、tcルールをbr113ではなくeth0.113に適用できます。

/etc/network/interfacesの構成は、これが機能する場合、読者の演習として残されています...)

または、トラフィック制御ルールをWANインターフェイスeth2に適用する方が簡単かもしれません。最終結果はほぼ同じになるはずです。

2
Michael Hampton

Eth0の入力フローをifb0の出力側にミラーリングするためのifbインターフェースが必要です。

これを試して:

# Interface virtual for incomming traffic
tin1="ifb0"
# Interface connect to out lan
int1="eth0"
# Clean interface
tc qdisc del dev $int1 handle ffff: ingress
tc qdisc del root dev $tin1
tc qdisc add dev $int1 handle ffff: ingress
# Redirecto ingress eth0 to egress ifb0
tc filter add dev $int1 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $tin1
# Add classes per ip
tc qdisc add dev $tin1 root handle 2: htb default 20
tc class add dev $tin1 parent 2: classid 2:1 htb rate 20480kbit
tc class add dev $tin1 parent 2:1 classid 2:5 htb rate 80kbit ceil 20480kbit
tc filter add dev $tin1 protocol ip parent 2: prio 1 u32 match ip src 192.168.1.5/32 flowid 2:15

ただし、その前に、このモジュールをカーネルにロードして実行してください。

modprobe ifb numifbs=1
ip link set dev $tin1 up
1
Ricardo Fraile