LINUX.ORG.RU
ФорумAdmin

не могу разобраться с маршрутизацией и приоретизацией траффика


0

0

Ох и намучено с этими классами ))
Короче есть три корефана я Миша и Рома.
Исходящая полоса 512Кбит делится:
я: 384
Рома: 64
Миша: 64
с возможностью заимствования в случае, когда полоса свободна.

Я это пока набросал вот так:
# установка корневой HTB
tc qdisc add dev $DEV root handle 1: htb default 2

# ограничить общую исходящую скорость величиной $UPLINK -- это предотвратит
# появление огромных очередей в DSL модеме,
# которые отрицательно сказываются на величине задержки:

tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k

#распределим классы, их полосы и приоритеты
#мой траффик
tc class add dev $DEV parent 1:1 classid 1:2 htb rate ${MY_UP}kbit ceil ${MY_CEIL}kbit prio 1 #это сколько я могу отхавать от интерфейса
tc class add dev $DEV parent 1:2 classid 1:20 htb rate $[3*$MY_UP/10]kbit ceil ${MY_CEIL}kbit #а это уже отхавывает от того, что я могу отхавать от инте
tc class add dev $DEV parent 1:2 classid 1:21 htb rate $[2*$MY_UP/10]kbit ceil ${MY_CEIL}kbit #то-же, но немного меньший приоритет и скорость
#траффик роутера хавает от моей части(1:2)
tc class add dev $DEV parent 1:2 classid 1:22 htb rate $[3*$MY_UP/10]kbit ceil ${MY_CEIL}kbit #а это уже отхавывает от того, что я могу отхавать от интер
tc class add dev $DEV parent 1:2 classid 1:23 htb rate $[2*$MY_UP/10]kbit ceil ${MY_CEIL}kbit #то-же, но немного меньший приоритет и скорость


#Миша
tc class add dev $DEV parent 1:1 classid 1:3 htb rate ${MIXA_UP}kbit ceil ${MIXA_CEIL}kbit prio 2 #это сколько можно отхавать от интерфейса
tc class add dev $DEV parent 1:3 classid 1:30 htb rate $[6*$MIXA_UP/10]kbit ceil ${MIXA_CEIL}kbit #а это уже отхавывает от того, что можно отхавать от ин
tc class add dev $DEV parent 1:3 classid 1:31 htb rate $[4*$MIXA_UP/10]kbit ceil ${MIXA_CEIL}kbit #то-же, но немного меньший приоритет и скорость

#Рома
tc class add dev $DEV parent 1:1 classid 1:4 htb rate ${ROMA_UP}kbit ceil ${ROMA_CEIL}kbit prio 3 #это сколько можно отхавать от интерфейса
tc class add dev $DEV parent 1:4 classid 1:40 htb rate $[6*$ROMA_UP/10]kbit ceil ${ROMA_CEIL}kbit #а это уже отхавывает от того, что можно отхавать от ин
tc class add dev $DEV parent 1:4 classid 1:41 htb rate $[4*$ROMA_UP/10]kbit ceil ${ROMA_CEIL}kbit #то-же, но немного меньший приоритет и скорость

#далее назначим краевым классам безклассовую дисциплину Stochastic Fairness
#эти дисциплины получают новые хэндлы 20:0 21:0 22:0 23:0 ....
#мои с роутером классы
tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10
tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10
tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10
#Мишины
tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev $DEV parent 1:31 handle 31: sfq perturb 10
#Ромины
tc qdisc add dev $DEV parent 1:40 handle 40: sfq perturb 10
tc qdisc add dev $DEV parent 1:41 handle 41: sfq perturb 10


#а вот теперь самое главное. Нужно разлечить где я, где Миша, а где Рома
#разбором и маркировкой занимается iptables тут мы ловим метки и направляем их нужным классам
tc filter add dev $DEV parent 1:1 protocol ip prio 1 handle 122 fw classid 1:22
tc filter add dev $DEV parent 1:1 protocol ip prio 1 handle 120 fw classid 1:20
tc filter add dev $DEV parent 1:1 protocol ip prio 1 handle 130 fw classid 1:30
tc filter add dev $DEV parent 1:1 protocol ip prio 1 handle 140 fw classid 1:40


iptables маркирует пакеты сразу т.е. по 2 критериям saddr такой-то порт назначения такой-то.
Это позволяет однозначно определить к какой дисциплине относится пакет. Но я сомневаюсь можно ли сразу из 1:1 направить пакет в 1:22, перепрыгнув через класс 1:2
Или мне следует закрепить фильтр не за классом 1:1, а за каждым из классов 1:2 1:3 1:4.
Не могу понять толком одну вещь: если у класса-парента нет фильтра, означает ли это, что пакт продвинется по его чилдренам? А вот чилдренам можно было-бы прилепить фильтра и они бы задерживали пакеты..
Или можно прыгать через голову?
У меня фильтра именно это и пытаются сделать, однако я не уверен, что это работает. Как проследить процесс классификации пакета вообще?
В iptables есть счётчики и я могу видеть что происходит, а тут всё мутно как-то так!


нашел tc -s class show dev ppp0

но счётчики все по нулям

dx
() автор топика

так, с этим слава Богу разобрался Надо делать фильтра для каждого класса.

dx
() автор топика
Ответ на: комментарий от dx

Обычно фильтры вешают на дисциплину, причём отправляют они трафик сразу в краевые классы.
P.S. Вы бы лучше конкретные цифры в командах привели, а не вставку переменных, о значениях которых можно только догадываться.

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