複数の仮想マシン間のトラフィックをシミュレートしようとしています。各接続には、待ち時間と呼ばれる異なるパラメータが必要です。そのため、各qdiscに遅延を簡単に追加できるため、異なるリンクに対して異なるqdiscフィルタを作成してみました。私はtcを使って16個以上のqdiscを追加できないことに気づきました。
16個以上のqdiscを追加する方法はありますか?別のハンドル、ハンドル2を作成できますか?
また、私のコマンドは、私が追加した10番目のqdisc(10(192.168.0.105〜192.168.0.102)を処理するための接続)では機能しません。この接続は、30ミリ秒が少し以上の待ち時間を測定したものと見なすときに、ハンドル20のqdiscルールを使用するようです。
bashで実行されるコマンドは次のとおりです。
/sbin/tc qdisc add dev eth1 root handle 1: prio bands 11
/sbin/tc qdisc add dev eth1 parent 1:1 handle 10: netem delay 200ms
/sbin/tc qdisc add dev eth1 parent 1:2 handle 20: netem delay 30ms
/sbin/tc qdisc add dev eth1 parent 1:3 handle 30: netem delay 300ms
/sbin/tc qdisc add dev eth1 parent 1:4 handle 40: netem delay 70ms
/sbin/tc qdisc add dev eth1 parent 1:5 handle 50: netem delay 80ms
/sbin/tc qdisc add dev eth1 parent 1:6 handle 60: netem delay 90ms
/sbin/tc qdisc add dev eth1 parent 1:7 handle 70: netem delay 110ms
/sbin/tc qdisc add dev eth1 parent 1:8 handle 80: netem delay 400ms
/sbin/tc qdisc add dev eth1 parent 1:9 handle 90: netem delay 110ms
/sbin/tc qdisc add dev eth1 parent 1:a handle 100: netem delay 250ms
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.101/32 match ip src 192.168.0.102/32 flowid 10:1
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.101/32 match ip src 192.168.0.103/32 flowid 20:2
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 3 u32 match ip dst 192.168.0.101/32 match ip src 192.168.0.104/32 flowid 30:3
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 4 u32 match ip dst 192.168.0.101/32 match ip src 192.168.0.105/32 flowid 40:4
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 5 u32 match ip dst 192.168.0.101/32 match ip src 192.168.0.106/32 flowid 50:5
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 6 u32 match ip dst 192.168.0.101/32 match ip src 192.168.0.108/32 flowid 60:6
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 7 u32 match ip dst 192.168.0.101/32 match ip src 192.168.0.109/32 flowid 70:7
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 8 u32 match ip dst 192.168.0.102/32 match ip src 192.168.0.103/32 flowid 80:8
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio 9 u32 match ip dst 192.168.0.102/32 match ip src 192.168.0.104/32 flowid 90:9
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio a u32 match ip dst 192.168.0.102/32 match ip src 192.168.0.105/32 flowid 100:a
/sbin/tc qdisc add dev eth1 parent 1:b handle 110: pfifo
/sbin/tc filter add dev eth1 protocol ip parent 1:0 prio b u32 match ip src 0.0.0.0/0 match ip dst 0.0.0.0/0 flowid 110:b
Ubuntu 16.04.6 LTSを使用しています。
答え1
私は遅いことを知っていますが、同じ問題があったので、htbとtcクラスを使って解決しました。
この試み:
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 flowid 1:1 match ip dst 192.168.0.101/32 match ip src 192.168.0.102/32
tc qdisc add dev eth0 parent 1:1 handle 10: netem delay 200ms
tc class add dev eth0 parent 1: classid 1:2 htb rate 100mbit
tc filter add dev eth0 parent 1: protocol ip prio 2 u32 flowid 1:2 match ip dst 192.168.0.101/32 match ip src 192.168.0.103/32
tc qdisc add dev eth0 parent 1:2 handle 20: netem delay 30ms
など...
私はこれを通してあなたが9,999の異なる規則を作ることができると思います。たとえ自分がそんなに試してみたことはありませんが、言葉です。
これが役立つことを願っています!