LINUX.ORG.RU
ФорумAdmin

странная работа приоритетов пакетов в qos на openwrt


0

0

Здравствуйте!

Имеется:
В наличии имеется роутер ASUS WL500g v2 с прошивкой openwrt, Линуксовые машины и виндовые.
На роутере настроен qos для adsl.
Qos настроен так, чтобы пользователям давалось N Кбит канала гарантированных и остальной канал, если
не занят другими пользователями, к примеру, если они не пользуются сейчас инетом.

Проблема:
Проблема в том, что это работает только в случае винда-винда. Если же один пользователь пользует винду,
а второй линукс, то линукс "съедает" всю полосу пропускания и даже гарантированную для виндовой машины.
При запуске торрента - такое поведение проявляется ещё ярче.

Что хочется:
Предположительно это из-за TOS (поправьте пож-ста, если не прав), хотелось бы, чтобы приоритетным правилом для
определения ширины каналы были как раз приоритеты в qos на роутере, а не "хотелки" программ на клиентах. Подскажите
пожалуйста, как это сделать и/или в чём я не прав при настройки qos.

Правила qos:

tc qdisc add dev eth0 root handle 1: htb default 13
tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 15kbps ceil 100kbps burst 2kb
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 15kbps ceil 100kbps burst 2kb
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 4kbps ceil 100kbps burst 2kb
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 1kbps ceil 100kbps burst 2kb

tc qdisc add dev eth0 parent 1:10 handle 20: pfifo limit 5
tc qdisc add dev eth0 parent 1:11 handle 30: pfifo limit 5
tc qdisc add dev eth0 parent 1:12 handle 40: pfifo limit 5
tc qdisc add dev eth0 parent 1:13 handle 50: esfq limit 16 depth 128 divisor 11 hash dst

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.100.132 flowid 1:10
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.100.132 flowid 1:10

tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip src 192.168.100.130 flowid 1:11
tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.100.130 flowid 1:11

tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 match ip src 192.168.100.131 flowid 1:12
tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 match ip dst 192.168.100.131 flowid 1:12

>Предположительно это из-за TOS

это вряд ли, так как винда весь свой трафик помечает как интерактивный, по беспределу конечно.

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Как я понимаю, интерактивный трафик - это флаг P в заголовке tcp. Только поглядел - он установлен так же и для ssh-трафика и для torrent-траффика, что, кстати, тоже беспредел :-). Т.е. по-сути и винда и линукс с кучей торрент-трафика находится в одинаковых условиях, однако... Получается действительно не в этом дело... А в чём тогда?

Может я действительно в чём-то ошибаюсь в разрезе настройки tc?

Кстати, данную проблему частично решил, уменьшив значение ceil до значения rate. Т.е. "зажав" пропускную способность каждого класса до конкретного значения (в моём случае до 15, 12, 3 кб соответственно). Тогда - да, каждый потребляет свою полосу, не отъедая у собрата. Однако при потреблении только одним пользователем, он не может потреблять весь канал - только свою часть канала, будь то 15, 13 или 3 кб. Т.е. вопрос переходит в русло такое: почему ceil одного пользователя может "отъедать" rate другого?

progserega
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.