アスタリスクサーバーでQOSを実行するためにtcを使用しています。音声と一口のトラフィックを優先するだけでなく、残りのすべてを固定制限に制限したいと思います。
これが私のスクリプトです:
#!/bin/bash
IFACE=eth1
UPSPEED=1.5mbit
tc qdisc del dev $IFACE root
tc qdisc add dev $IFACE root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0
tc qdisc add dev $IFACE parent 1:1 handle 10: sfq perturb 10
tc qdisc add dev $IFACE parent 1:2 handle 20: sfq perturb 10
tc qdisc add dev $IFACE parent 1:3 handle 30: tbf rate $UPSPEED burst 4kb mtu 1500 latency 100ms
tc filter add dev $IFACE protocol ip parent 1: prio 1 u32 match ip tos 0xb8 0xff flowid 1:1
tc filter add dev $IFACE protocol ip parent 1: prio 1 u32 match ip tos 0x60 0xff flowid 1:2
RTPおよびSIPトラフィックは適切に管理されており、第1および第2の帯域に送信されます。他のすべてのトラフィックも適切に管理され、3番目のバンドに送信されます。ただし、何らかの理由で、サーバーからダウンロードすると、スクリプトで指定されている185-190k(1.5メガビット)ではなく、常に10-16k/秒になります。
最悪の場合、tbf変数をどのように変更しても、速度は同じままであるようです。
qdisc -s lsを使用して、パケットがドロップされたことを確認できました。
qdisc prio 1: bands 3 priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0
Sent 12610974 bytes 45683 pkt (dropped 1147, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 10: parent 1:1 limit 126p quantum 1514b perturb 10sec
Sent 7802180 bytes 36590 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 20: parent 1:2 limit 126p quantum 1514b perturb 10sec
Sent 181620 bytes 283 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc tbf 30: parent 1:3 rate 1500Kbit burst 4Kb lat 100.0ms
Sent 4627174 bytes 8810 pkt (dropped 1147, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
でも理由はわかりません。繰り返しますが、tbf変数を変更しても何も変更されず、パケットはドロップされ続けます。
eth1のmtuは1500であることに注意してください。
誰?