Перейти до

Вопрос по-поводу ifb.


Рекомендованные сообщения

В связи с переездом на новый сервер я озаботился и созданием нового шейпера.

Такой, чтобы и приоритеты делал, и чтобы скорость отдельно нарезал на вход/исход.

 

В связи с этим было испробовано применение ifb.

 

Но вот загвоздка - не получается у меня сделать все хорошо.

 

Не получается с банального - не удается перенаправить трафик с реального интерфейса на виртуальный.

 

После создания соотв. интерфейса, перенаправление делаю примерно так:

 

   tc qdisc add dev ifb0 root
   tc qdisc add dev ifb1 root
   tc qdisc add dev $IN root handle 1: prio
   tc qdisc add dev $IN ingress
   tc filter add dev $IN parent 1: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
   tc filter add dev $IN parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb1
   tc class add dev ifb0 parent 1: classid 1:1 htb rate 1000mbit quantum 65535
   tc class add dev ifb1 parent 1: classid 1:1 htb rate 1000mbit quantum 65535

, где $IN - реальный интерфейс, который смотрит на клиентов.

 

После этого, по моему убогому разумению, пакетики должны весело побежать через вирт. интерфейсы, однако при просмотре статистики - ничего там не бежит.

 

Структура сети: статические адреса, ВПН нет (и не будет).

Все дело натится. ОС - Cent OS 5.4, ядро 2.6.32.7 (ага, последнее).

 

В связи с вышеописанным - вопрос: как то можно все же заставить это дело работать ? Может дайте чего почитать, можно и на иностранном, только, если не трудно, с внятными примерами.

 

P. S. интересует именно IFB, не IMQ.

Ссылка на сообщение
Поделиться на других сайтах

Я делал так :

modprobe ifb
modprobe sch_htb
ifconfig ifb0 up
ifconfig ifb1 up

#echo "deleting qdisc's..."
tc qdisc del dev eth2 root > /dev/null
tc qdisc del dev eth0 root > /dev/null
tc qdisc del dev eth0 ingress > /dev/null
tc qdisc del dev eth2 ingress > /dev/null
tc qdisc del dev ifb0 root > /dev/null
tc qdisc del dev ifb1 root > /dev/null

echo "#####################QDISC ROOT##############################"
#echo "creating root qdisc..."
tc qdisc add dev eth2 root handle 3: cbq avpkt 3500 bandwidth 100Mbit
#echo "tc qdisc add dev eth2 root handle 1: cbq avpkt 1000 bandwidth 10Mbit"
tc qdisc add dev eth0 root handle 1: cbq avpkt 3500 bandwidth 100Mbit
#echo "tc qdisc add dev eth0 root handle 2: cbq avpkt 1000 bandwidth 10Mbit"
tc qdisc add dev eth0 ingress
tc qdisc add dev eth2 ingress
tc qdisc add dev ifb0 root handle 2: htb
tc qdisc add dev ifb1 root handle 4: htb
tc filter add dev eth2 parent ffff: protocol ip u32 match u32 0 0  flowid 4:1 action mirred egress redirect dev ifb1  > /dev/null
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0  flowid 2:1 action mirred egress redirect dev ifb0  > /dev/null

Ну и дальше как обычно.

Разница с приведенным выше кодом тобой:

tc filter add dev $IN parent 1:
tc filter add dev $IN parent ffff:

И там и там должно біть ffff имхо, так как это обратное направление.

Ну и как вариант подгрузка модулей :

modprobe ifb
modprobe sch_htb
ifconfig ifb0 up
ifconfig ifb1 up

Может и не критично, но на каком-то из Линухов без этого не работало.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...