_INF_ Опубликовано 15 апреля, 2010 · Жалоба Есть роутер 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 15 апреля, 2010 (изменено) · Жалоба В 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 Изменено 15 апреля, 2010 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 19 апреля, 2010 · Жалоба Не совсем понял в чем разница между tc qdisc add dev $ext_if parent 1:1 handle 10: sfq и # bulk tc qdisc add dev $ext_if parent 1:3 handle 30: sfq Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 19 апреля, 2010 · Жалоба В 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 19 апреля, 2010 · Жалоба Да. Я приводил пример похожий на http://lartc.org/howto/lartc.qdisc.classful.html#AEN903 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 19 апреля, 2010 · Жалоба Да. Я приводил пример похожий на http://lartc.org/howto/lartc.qdisc.classful.html#AEN903 Спасибо за помошь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 30 апреля, 2010 · Жалоба Да. Я приводил пример похожий на http://lartc.org/howto/lartc.qdisc.classful.html#AEN903 Спасибо за помошь. Окончательным вариантом не поделитесь?И еще несколько вопросов: 1. полная "ширина" аплинка у вас какая? 2. сколько Мбит выделено для каждого типа трафика? 3. не нашел, где описан "остаток" полосы (для остального трафика) 4. полосы выделены фиксированно, или есть ли "заем" свободной полосы (например, отдать часть свободной http, или icmp полосы под другой трафик)? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 30 апреля, 2010 · Жалоба В случае приоритезации всем типам трафика предоставляется одинаковая полоса пропускания, меняется только порядок отправки пакетов. Смешанные схемы (шейпинг + приоритезация) нужно делать с помощью дисциплины htb или hfsc. Для домашнего использования, когда пакетрейты малы, достаточно prio. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 30 апреля, 2010 · Жалоба В случае приоритезации всем типам трафика предоставляется одинаковая полоса пропускания, меняется только порядок отправки пакетов. Смешанные схемы (шейпинг + приоритезация) нужно делать с помощью дисциплины htb или hfsc. Для домашнего использования, когда пакетрейты малы, достаточно prio.Шейпинг не нужен, основная задача - обеспечить максимальный приоритет http, ping в меньшей степени. Одновременно еще хотелось бы отдельно обеспечить максимально низкий приоритет p2p (торренту). Т.е. вот такую "иерархию": http | icmp | все_остальное_кроме_p2p | p2p Данный "приоритезатор" нужен для работы на аплинке с макс. полосой около 200 Мбит. Предлагаемый _INF_ вариант подойдет для такой задачи? Если "да", то что надо добавить для p2p? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 30 апреля, 2010 · Жалоба Достаточно настроить дисциплину prio, как показано по ссылке. Тогда трафик правильно написанных приложений (icmp, интерактивный ssh-трафик, scp) будут назначаться тем или иным очередям по полю ToS, а для http и всего остального нужно дописать фильтры. Если классов обслуживания нужно более трех, придется дополнительно настраивать priomap, как написано в man tc-prio. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...