特定のプログラムの着信パケットを遅くしようとしていますが、2番目のパケットは未使用の帯域幅に完全にアクセスできます。つまり、あるアプリを別のアプリよりも優先するために、ネットワーク帯域幅の共有を制御したいと思います。
これが私の現在の構成です https://github.com/rfrail3/misc/blob/master/tc/traffic-control.sh :
# Set up a virtual interface
modprobe ifb
ip link set dev ifb0 up
# Set up eth0 in order to redirect incoming packets
tc qdisc add dev eth0 handle ffff: ingress
# Filter to make the packet going on ifb0
tc filter add dev eth0 protocol ip parent ffff: u32 match u32 0 0 action mirred egress redirect dev ifb0
# ifb0 configuration
tc qdisc add dev ifb0 root handle 2: htb
tc class add dev ifb0 parent 2: classid 2:1 htb rate 1000mbit
tc class add dev ifb0 parent 2:1 classid 2:10 htb rate 999mbit ceil 1000mbit
tc class add dev ifb0 parent 2:1 classid 2:11 htb rate 1mbit ceil 1000mbit
次に、ifb0にフィルターを適用して、2:10(高優先度クラス)または2:11(低優先度クラス)にパケットをリダイレクトします。
パケットは期待どおりにクラスに割り当てられますが、ネットワークは両方のアプリケーション間で公平に共有されます(HTB構成から期待される1/99ではなく、50/50)。
実際、なぜ私のネットワークが公平に共有され、私の料金/上限が尊重されないのかわかりません。私はここで何が間違っているのですか?
デフォルトのトラフィックをハンドル20に設定していますが、これは存在しないため、どのレート/上限とも一致しません。
tc qdisc add dev ifb0 root handle 2: htb default 20
_________________________________________^^^^^^^^^^
1つのルールを追加してみてくださいclassid 2:20
詳細については、このページをすばやく読むことをお勧めします: http://lartc.org/lartc.html#AEN1071