tcを使っていくつのqdiscを作成できますか?

tcを使っていくつのqdiscを作成できますか?

複数の仮想マシン間のトラフィックをシミュレートしようとしています。各接続には、待ち時間と呼ばれる異なるパラメータが必要です。そのため、各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の異なる規則を作ることができると思います。たとえ自分がそんなに試してみたことはありませんが、言葉です。

これが役立つことを願っています!

おすすめ記事