LINUX.ORG.RU
ФорумAdmin

опять IMQ + TC


0

0

пробую реализовать такую схему:

это фрагмент скрипта ppp-up для pptp

$TC qdisc del dev $INTERFACE root
$TC qdisc add dev $INTERFACE root handle 1: htb default 1
$TC class add dev $INTERFACE parent 1: classid 1:1 htb prio 10 rate ${SPEED_1}kbit ceil ${SPEED_2}kbit burst 15k
$TC qdisc add dev $INTERFACE parent 1:1 handle 10: prio
$TC qdisc add dev $INTERFACE parent 10:1 handle 101 sfq
$TC qdisc add dev $INTERFACE parent 10:2 handle 102 sfq
$TC qdisc add dev $INTERFACE parent 10:3 handle 103 sfq

$TC filter add dev $INTERFACE parent 1: protocol ip prio 10 u32 match u32 0 0 flowid 1:1 action ipt -j MARK --set-mark $NET

в скрипте iptables

$IPTABLES -A POSTROUTING -t mangle -o ppp+ -j IMQ --todev 0

навешивание классов на imq0

ip link set dev imq0 up
tc qdisc add dev imq0 root handle 1: htb default 100
tc class add dev imq0 parent 1: classid 1:1 htb rate ${RATE_ALL}kbit burst 15k
tc class add dev imq0 parent 1:1 classid 1:100 htb prio 7 rate 128kbit ceil ${RATE_ALL}kbit burst 15k
tc qdisc add dev imq0 parent 1:100 handle 100: sfq perturb 10
tc class add dev imq0 parent 1:1 classid 1:5 htb prio 0 rate 128kbit ceil ${RATE_ALL}kbit burst 15k
tc qdisc add dev imq0 parent 1:5 handle 5: sfq
tc class add dev imq0 parent 1:1 classid 1:20 htb prio ${CLASS_20_PRIO} rate ${CLASS_20_MIN}kbit ceil ${CLASS_20_MAX}kbit burst 15k
tc class add dev imq0 parent 1:1 classid 1:30 htb prio ${CLASS_30_PRIO} rate ${CLASS_30_MIN}kbit ceil ${CLASS_30_MAX}kbit burst 15k
tc class add dev imq0 parent 1:1 classid 1:40 htb prio ${CLASS_40_PRIO} rate ${CLASS_40_MIN}kbit ceil ${CLASS_40_MAX}kbit burst 15k
tc class add dev imq0 parent 1:1 classid 1:50 htb prio ${CLASS_50_PRIO} rate ${CLASS_50_MIN}kbit ceil ${CLASS_50_MAX}kbit burst 15k
tc qdisc add dev imq0 parent 1:20 handle 20: tbf rate ${CLASS_20_MAX}kbit latency 50ms burst 1540
tc qdisc add dev imq0 parent 1:30 handle 30: tbf rate ${CLASS_30_MAX}kbit latency 50ms burst 1540
tc qdisc add dev imq0 parent 1:40 handle 40: tbf rate ${CLASS_40_MAX}kbit latency 50ms burst 1540
tc qdisc add dev imq0 parent 1:50 handle 50: tbf rate ${CLASS_50_MAX}kbit latency 50ms burst 1540
tc qdisc add dev imq0 parent 20:1 handle 200: prio
tc qdisc add dev imq0 parent 200:1 handle 201: sfq
tc qdisc add dev imq0 parent 200:2 handle 202: sfq
tc qdisc add dev imq0 parent 200:3 handle 203: sfq
tc qdisc add dev imq0 parent 30:1 handle 300: prio
tc qdisc add dev imq0 parent 300:1 handle 301: sfq
tc qdisc add dev imq0 parent 300:2 handle 302: sfq
tc qdisc add dev imq0 parent 300:3 handle 303: sfq
tc qdisc add dev imq0 parent 40:1 handle 400: prio
tc qdisc add dev imq0 parent 400:1 handle 401: sfq
tc qdisc add dev imq0 parent 400:2 handle 402: sfq
tc qdisc add dev imq0 parent 400:3 handle 403: sfq
tc qdisc add dev imq0 parent 50:1 handle 500: prio
tc qdisc add dev imq0 parent 500:1 handle 501: sfq
tc qdisc add dev imq0 parent 500:2 handle 502: sfq
tc qdisc add dev imq0 parent 500:3 handle 503: sfq

tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 3 fw flowid 1:20
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 10 fw flowid 1:20
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 5 fw flowid 1:30
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 6 fw flowid 1:40
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 9 fw flowid 1:40
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 7 fw flowid 1:50
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 8 fw flowid 1:50

в ресультате всего этого пакеты на imq0 попадают, но все идет на default (100) класс. Такое впечатление, что маркирование отрабатывает уже после $IPTABLES -A POSTROUTING -t mangle -o ppp+ -j IMQ --todev 0. В чем ошибка?

Вариант с маркированием пакетов через iptables работает, но при слете соединения остается правило. Номер маркера определяется тарифным планом клиента. Пакеты начинают маркироваться не тем маркером и клиент идет не в свою полосу. Приходится удалять правило руками. Согласитель, что для сервера доступа это мягко говоря не очень удобно.

Re: опять IMQ + TC

пробовал использовать IFB. Все вроде бы прекрасно... до определенного времении. Через некоторое время (чем выше нагрузка, тем быстрее) система просто глухо виснет. Ядро 2.6.18. Шерстил разные форумы - понял так, что и в 2.6.21 эта проблема осталась, по этому решил вернуться к IMQ

pavel_ep ()

Re: опять IMQ + TC

При подключении клиента вы задействуете скрипты pppd (млм pptpd?) для добавления нужных правил TC, почему бы не задействовать аналогичные скрипты при отключении клиента, и не удалять в нем правило маркировки с использованием IPTABLES, которое работает?

VitalkaDrug ★★ ()
Ответ на: Re: опять IMQ + TC от VitalkaDrug

Re: опять IMQ + TC

я в конце поста написал, что ppp-down не всегда отрабатывает, в следствие чего правила не всегда удаляются. Если бы все работало, то я бы не заводил эту карусель с маркированием через tc

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