The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Шейпинг в linux... Не работают фильтры с псевдоустройством I..."
Отправлено Z0termaNN, 28-Апр-09 11:35 
>[оверквотинг удален]
>подвешена входящая дисциплина (ограничитель) на ppp0, которая обрезает (police drop) входящий
>ко мне из инета трафик до 896кбит, и на ppp0 же
>подвешана корневая дисциплина, которая шейпит трафик, идущий от меня и локальной
>сети в Инет (чтоб не забивать модем очередями). Все это для
>малого пинга. Фактически нужный шейпер висит на eth1, которая смотрит в
>локальную сеть, и он режет общий канал 896кбит на пользователей локальной
>сети. Проблема в том, что я, сидя на роутере (мой компьютер)
>не попадаю под действие шейпера на eth1, так как оказываюсь "до"
>него. А хочется разделать трафик для роутера и локальной сети одной
>общей дисциплиной. Что посоветуете?

здесь дело такое - если нужно только ограничение полосы пропускания и не нужно
переупорядочивать и приоритизировать пакеты, то вполне подойдет dropper на
входящем интерфейсе. как-то сложилось мнение, что shaper это более православное
решение, чем dropper, но ни в литературе, ни по личному опыту не могу сказать, что
результаты применения shaper vs dropper различаются - результат получается примерно
одинаковый.
если же нужно что-то более сложное, то наиболее простой путь - применение imq, которое
является как и ifb промежуточным псевдоустройством, на котром можно организовывать
очереди, но в отличие от ifb imq не имеет ограничений по типу интерфейса.
если же не хочется патчить ядро и iptables, то есть еще варианты, но их стоит проверить,
например попробовать зацепиться на метаданные пакеты, например fwmark:

tc -batch << EOF

qdisc add dev ifb0 root handle 1: htb default 120
class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
class add dev ifb0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 1
qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 384kbit prio 2
class add dev ifb0 parent 1:20 classid 1:110 htb rate 384kbit ceil 384kbit prio 3
qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
class add dev ifb0 parent 1:20 classid 1:120 htb rate 256kbit ceil 256kbit prio 4
qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10

tc filter add dev ifb0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
tc filter add dev ifb0 parent 1: protocol ip prio 4 handle 20 fw flowid 1:20
tc filter add dev ifb0 parent 1: protocol ip prio 3 handle 110 fw flowid 1:110
tc filter add dev ifb0 parent 1: protocol ip prio 5 handle 120 fw  flowid 1:120

qdisc add dev ppp0 ingress
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 \
   action ipt -j MARK --set-mark 20 \
   action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.1 \
   action ipt -j MARK --set-mark 10 \
   action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.3 \
   action ipt -j MARK --set-mark 110 \
   action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.2 \
   action ipt -j MARK --set-mark 120 \
   action continue
filter add dev ppp0 parent fff: protocol ip pref 2 u32 match u32 0 0 \
   action mirrer egress redirect dev ifb0
EOF
если же этот вариант не прокатит, то можно попробовать все описать при помощи generic
action + pipe, но это будет значительно менее читабельно и более громоздко

пока писал это вспомнил еще один вариант

tc -batch <<EOF

qdisc add dev ppp0 ingress
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 flowid :20 action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.1 flowid :10 action continue
......
filter add dev ppp0 parent fff: protocol ip pref 2 u32 match u32 0 0 \
   action mirrer egress redirect dev ifb0

qdisc add dev ifb0 root handle 1: htb default 120
class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
class add dev ifb0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 1
qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 384kbit prio 2
class add dev ifb0 parent 1:20 classid 1:110 htb rate 384kbit ceil 384kbit prio 3
qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
class add dev ifb0 parent 1:20 classid 1:120 htb rate 256kbit ceil 256kbit prio 4
qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10
EOF

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру