Jump to content

Recommended Posts

Posted

Есть роутер 2 сетевых интерфейса eth0 - инет, eth1 - локал

 

Хочется добиться приоритезации некоторых видов трафика:

 

1. ICMP

2. порт назначения 80

 

и выделение выделенной полосы для этих типов трафика.

 

пока соорудил следующий скриптик, прошу конструктивной критики:

 

tc qdisc del dev eth0 root    2> /dev/null > /dev/null
tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null
tc qdisc add dev eth0 root handle 1: htb default 4
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000Mbit quantum 60000

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 200Mbit ceil 700Mbit quantum 60000
tc qdisc add dev eth0 parent 1:3 handle 3 sfq perturb 10

tc class add dev eth0 parent 1:1 classid 1:4 htb rate 100Mbit ceil 150Mbit quantum 60000
tc qdisc add dev eth0 parent 1:4 handle 4 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1:0 prio 0 u32 match ip dport 80 0xffff flowid 1:3
tc filter add dev eth0 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:3


tc qdisc del dev eth1 root    2> /dev/null > /dev/null
tc qdisc del dev eth1 ingress 2> /dev/null > /dev/null
tc qdisc add dev eth1 root handle 1: htb default 4
tc class add dev eth1 parent 1: classid 1:1 htb rate 1000Mbit quantum 60000

tc class add dev eth1 parent 1:1 classid 1:3 htb rate 200Mbit ceil 700Mbit quantum 60000
tc qdisc add dev eth1 parent 1:3 handle 3 sfq perturb 10

tc class add dev eth1 parent 1:1 classid 1:4 htb rate 100Mbit ceil 150Mbit quantum 60000
tc qdisc add dev eth1 parent 1:4 handle 4 sfq perturb 10

tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip sport 80 0xffff flowid 1:3
tc filter add dev eth1 protocol ip parent 1:0 prio 0 u32 match ip protocol 1 0xff flowid 1:3

 

Posted (edited)

В Linux приоритезация на основе поля ToS работает по умолчанию (дисциплина pfifo_fast). Т.е. ICMP, SSH и ряд других протоколов, у которых клиенты и серверы правильно выставляют ToS, будут приоритезироваться автоматом без лишних фильтров. Для более продвинутой приоритезации (с возможностью задать произвольный leaf qdisc) логичнее использовать дисциплину prio. В дополнение к этому можно написать фильтры для других типов трафика, у которых не всегда корректно выставлен ToS.

 

tc qdisc add dev $ext_if root handle 1: prio
# high priority (interactive)
tc qdisc add dev $ext_if parent 1:1 handle 10: sfq
# low-latency
tc qdisc add dev $ext_if parent 1:2 handle 20: tbf rate 100mibit burst 100kb latency 50ms minburst 1500
# bulk
tc qdisc add dev $ext_if parent 1:3 handle 30: sfq

tc filter add dev $ext_if parent 1:0 protocol ip pref 1 u32 match ip dport 80 0xffff flowid 1:1

Edited by photon
Posted
В Linux приоритезация на основе поля ToS работает по умолчанию (дисциплина pfifo_fast). Т.е. ICMP, SSH и ряд других протоколов, у которых клиенты и серверы правильно выставляют ToS, будут приоритезироваться автоматом без лишних фильтров. Для более продвинутой приоритезации (с возможностью задать произвольный leaf qdisc) логичнее использовать дисциплину prio. В дополнение к этому можно написать фильтры для других типов трафика, у которых не всегда корректно выставлен ToS.

 

tc qdisc add dev $ext_if root handle 1: prio
# high priority (interactive)
tc qdisc add dev $ext_if parent 1:1 handle 10: sfq
# low-latency
tc qdisc add dev $ext_if parent 1:2 handle 20: tbf rate 100mibit burst 100kb latency 50ms minburst 1500
# bulk
tc qdisc add dev $ext_if parent 1:3 handle 30: sfq

tc filter add dev $ext_if parent 1:0 protocol ip pref 1 u32 match ip dport 80 0xffff flowid 1:1

Можно ли добиться приоритезации нужного исходящего трафика сделав так ?

tc qdisc add dev $ext_if root handle 1: prio
tc qdisc add dev $ext_if parent 1:1 handle 10: sfq
tc filter add dev $ext_if parent 1:0 protocol ip pref 1 u32 match ip dport 80 0xffff flowid 1:1

 

  • 2 weeks later...
Posted
Да. Я приводил пример похожий на http://lartc.org/howto/lartc.qdisc.classful.html#AEN903

Спасибо за помошь.

Окончательным вариантом не поделитесь?

И еще несколько вопросов:

1. полная "ширина" аплинка у вас какая?

2. сколько Мбит выделено для каждого типа трафика?

3. не нашел, где описан "остаток" полосы (для остального трафика)

4. полосы выделены фиксированно, или есть ли "заем" свободной полосы (например, отдать часть свободной http, или icmp полосы под другой трафик)?

 

Posted

В случае приоритезации всем типам трафика предоставляется одинаковая полоса пропускания, меняется только порядок отправки пакетов. Смешанные схемы (шейпинг + приоритезация) нужно делать с помощью дисциплины htb или hfsc. Для домашнего использования, когда пакетрейты малы, достаточно prio.

Posted
В случае приоритезации всем типам трафика предоставляется одинаковая полоса пропускания, меняется только порядок отправки пакетов. Смешанные схемы (шейпинг + приоритезация) нужно делать с помощью дисциплины htb или hfsc. Для домашнего использования, когда пакетрейты малы, достаточно prio.
Шейпинг не нужен, основная задача - обеспечить максимальный приоритет http, ping в меньшей степени. Одновременно еще хотелось бы отдельно обеспечить максимально низкий приоритет p2p (торренту). Т.е. вот такую "иерархию":

 

http

|

icmp

|

все_остальное_кроме_p2p

|

p2p

 

Данный "приоритезатор" нужен для работы на аплинке с макс. полосой около 200 Мбит.

Предлагаемый _INF_ вариант подойдет для такой задачи? Если "да", то что надо добавить для p2p?

Posted

Достаточно настроить дисциплину prio, как показано по ссылке. Тогда трафик правильно написанных приложений (icmp, интерактивный ssh-трафик, scp) будут назначаться тем или иным очередям по полю ToS, а для http и всего остального нужно дописать фильтры. Если классов обслуживания нужно более трех, придется дополнительно настраивать priomap, как написано в man tc-prio.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.