0

アスタリスクサーバーで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であることに注意してください。

誰?

4

2 に答える 2

2

作成コマンドに追加mtu 100000します。tc qdisc詳細については、この投稿を参照してください。

投稿が消えた場合の引用:

基本的に、インターフェイスでTSO / GSOが有効になっている場合(を使用して確認ethtool -k ethX)、またはループバックインターフェイスを使用している場合は、おそらく問題が発生します。ループバックインターフェイスでは、デフォルトでGSO / TSOが有効になっていることがわかります。さらに、ソフトウェアインターフェイスであるため、デフォルトのmtuは16384です(通常のイーサネットインターフェイスの1500と比較して)。これは、tbfキューが着信「パケット」のサイズをチェックするため(GSO / TSOの場合は通常のオンザワイヤパケットよりもはるかに大きい)、代わりに最大9xifaceのmtuであるため重要です。したがって、通常のインターフェイスの場合は約12Kですが、ループバックの場合は約100Kです。

これはXenインターフェースにも当てはまるようです。

#ethtool -k eth0
eth0の機能:
rx-checksumming:on[修正済み]
tx-チェックサム:オン
    tx-checksum-ipv4:オン
    tx-チェックサム-不要:オフ[修正済み]
    tx-checksum-ip-generic:オフ[修正済み]
    tx-checksum-ipv6:オフ[修正済み]
    tx-checksum-fcoe-crc:オフ[修正済み]
    tx-checksum-sctp:オフ[修正済み]
スキャッターギャザー:オン
    tx-scatter-gather:on
    tx-scatter-gather-fraglist:オフ[修正済み]
tcp-segmentation-offload:on#これはTSOです
    tx-tcp-セグメンテーション:オン
    tx-tcp-ecn-segmentation:オフ[修正済み]
    tx-tcp6-セグメンテーション:オフ[修正済み]
udp-fragmentation-offload:off[修正済み]
generic-segmentation-offload:on#これはGSOです
ジェネリック-受信-オフロード:オン
ラージレシーブオフロード:オフ[修正済み]
rx-vlan-offload:off[修正済み]
tx-vlan-offload:off[修正済み]
ntuple-filters:off[修正済み]
receive-hashing:off[修正済み]
highdma:オフ[修正済み]
rx-vlan-filter:off[修正済み]
vlan-challenged:オフ[修正済み]
tx-lockless:オフ[修正済み]
netns-local:オフ[修正済み]
tx-gso-robust:オン[修正済み]
tx-fcoe-segmentation:オフ[修正済み]
fcoe-mtu:オフ[修正済み]
tx-nocache-copy:on
ループバック:オフ[修正済み]
于 2013-08-23T01:11:19.193 に答える
1

私も同じ問題を抱えていました。セグメンテーションオフロードをオフにすると、問題が解決します(mtuをtcに渡す必要がなくなります)。

sudo ethtool -K eth1 tso off
sudo ethtool -K eth1 gso off
sudo ethtool -K eth1 gro off
sudo ethtool --offload  eth1  rx off  tx off
于 2014-12-26T02:44:14.207 に答える