The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

IFB (аналог IMQ ) - основные команды для управления трафиком
Считается что IFB идеологически более правильная реализация псевдо-устройства, чем IMQ.
IFB по умолчанию доступна в дистре Fedora Core 6.
IMQ требует патчить ядро, по умолчанию не доступна.

Насколько я понял идеологически
   IFB - это скорее для iproute2
   IMQ - iptables

Документация по IFB в исходниках iproute doc/actions/
или по адресу: http://linux-net.osdl.org/index.php?title=IFB

Отличные картинки с местоположением IMQ:
http://www.abclinuxu.cz/clanky/site/traffic-shaping-2-imq-a-uvod-do-shapingu


# СБРОС ПРАВИЛ  -----------------------------
 tc qdisc del dev eth0 root 
 tc qdisc del dev eth0 ingress

 tc qdisc del dev ifb0 root 
 tc qdisc del dev ifb0 ingress

 modprobe ifb
 ip link set dev ifb0 up

 service iptables restart
# ------------------------------------------

# IFB включение ----------------------------
 modprobe ifb
 ip link set dev ifb0 up
# ------------------------------------------

## ПОЛЕЗНЫЕ КОМАНДЫ-------------------------
 tc -s filter show parent ffff: dev eth0
 tc -s qdisc
 ifconfig ifb0
 tc -s filter show dev ifb0 parent 1:
 tc -s qdisc show dev ifb0 


######################################################
# ПРИМЕР ограничения входящего трафика 
# маркировка IPTABLES недоступна
######################################################

### IFB --------------------------------------------------------------
 tc qdisc add dev ifb0 root handle 1: prio 

 tc qdisc add dev ifb0 parent 1:1 handle 10: tbf rate 80kbit buffer 1600 limit 3000
 tc qdisc add dev ifb0 parent 1:2 handle 20: tbf rate 160kbit buffer 1600 limit 3000

## выделили закачку исходников ядра 
## wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.gz
 tc filter add dev ifb0 parent 1: protocol ip prio 1 u32 match ip src 204.152.191.37/32 flowid 1:1 

## выделили закачку исходников fedora core 6
## wget ftp://ftp.muug.mb.ca/pub/fedora/linux/core/6/i386/iso/FC-6-i386-DVD.iso
 tc filter add dev ifb0 parent 1: protocol ip prio 2 u32 match ip src 130.179.31.46/32 flowid 1:2 


### eth0 --------------------------------------------------------------
 # перенаправлять входящие пакеты с eth0 в ifb0 
 tc qdisc add dev eth0 ingress
 tc filter add dev eth0 parent ffff: protocol ip \
  u32 match u32 0 0 action mirred egress redirect dev ifb0

## TESTING -------------------------------------------------------------
оцените скорость и т.д. 
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.gz

######################################################
# ПРИМЕР ограничения исходящего трафика 
# маркировка IPTABLES доступна но
# filter работает на уровне iproute2 match ip dst
######################################################

Выполните СБРОС ПРАВИЛ и включите IFB (если выкл.)

### IFB --------------------------------------------------------------
 tc qdisc add dev ifb0 root handle 1: prio
 tc qdisc add dev ifb0 parent 1:1 handle 10: tbf rate 80kbit buffer 1600 limit 3000
 tc qdisc add dev ifb0 parent 1:2 handle 20: tbf rate 160kbit buffer 1600 limit 3000

 # закачка большого файла с хх.хх.хх.хх
 tc filter add dev ifb0 parent 1: protocol ip prio 2 u32 match ip dst  хх.хх.хх.хх/32 flowid 1:2 

### eth0 --------------------------------------------------------------
 # перенаправлять выходящие пакеты с eth0 в ifb0 
 tc qdisc add dev eth0 root handle 2: prio
 tc filter add dev eth0 parent 2: protocol ip \
      u32 match u32 0 0 action mirred egress redirect dev ifb0

## TESTING -------------------------------------------------------------
закачивайте большой файла на хх.хх.хх.хх оцените скорость и т.д. 
 tc -s filter show parent ffff: dev eth0
 tc -s qdisc
 ifconfig ifb0
 tc -s filter show dev ifb0 parent 1:
 tc -s qdisc show dev ifb0 

######################################################
# ПРИМЕР ограничения исходящего трафика 
# маркировка IPTABLES доступна
# filter работает на уровне маркировке пакетов в IPTABLES
######################################################

 Выполните СБРОС ПРАВИЛ и включите IFB (если выкл.)

### IFB --------------------------------------------------------------
 tc qdisc add dev ifb0 root handle 1: prio

 tc qdisc add dev ifb0 parent 1:1 handle 10: tbf rate 80kbit buffer 1600 limit 3000
 tc qdisc add dev ifb0 parent 1:2 handle 20: tbf rate 160kbit buffer 1600 limit 3000

 tc filter add dev ifb0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:1
 tc filter add dev ifb0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:2

### eth0 --------------------------------------------------------------
 # перенаправлять выходящие пакеты с eth0 в ifb0 
 tc qdisc add dev eth0 root handle 2: prio
 tc filter add dev eth0 parent 2: protocol ip \
      u32 match u32 0 0 action mirred egress redirect dev ifb0

 tc qdisc add dev eth0 root handle 2: prio
 tc filter add dev eth0 parent 2: protocol ip \
   u32 match u32 0 0 action mirred egress redirect dev ifb0

# поставить в IPTABLES метку  
 iptables -t mangle -A OUTPUT -p tcp -d 85.254.228.6/32 -j MARK --set-mark 10 

## TESTING -------------------------------------------------------------
закачивайте большой файла на хх.хх.хх.хх оцените скорость и т.д. 
 
22.05.2007 , Автор: Andrejs Spunitis
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Ограничение трафика

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, demyan, 14:31, 23/05/2007 [ответить] [смотреть все]
  • +/
    Все отлично, вот только баги в этом IFB еще ловить и ловить. Использовал раньше IMQ для объединения нескольких ppp-интерфейсов для наложения единого qdisc. И вот недавно решил (тоже по идеологическим соображениям) попробовать IFB. Использовал Debian Etch со стандартным ядром 2.6.18-4-686. На тестовой машине проблем не замечено, поэтому решил испытать в реальных условиях. Три дня все отлично работало, а потом все "упало" - kernel panic.
    В итоге выпады в kernel panic появлялись регулярно раз в два-три дня. Возможно это баг, исправленный в  2.6.21 - [IFB]: Fix crash on input device removal, но точно не уверен.
     
     
  • 2.2, andyS1976, 14:44, 23/05/2007 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    А я как раз по тихоньку двигаюсь к тому чтобы не было подмены IP-MAC установить ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.6, uu4jdf, 16:09, 30/05/2007 [^] [ответить] [смотреть все]  
  • +/
    ядро 2 6 16 патченное esqf imq прекрасно работает Процитированный вами пост на ... весь текст скрыт [показать]
     
     
  • 4.7, andyS1976, 23:42, 08/06/2007 [^] [ответить] [смотреть все]  
  • +/
    Я пока остановился на IFB, сейчас в стадии тестирования и проблем пока нету По... весь текст скрыт [показать]
     
     
  • 5.8, uu4jdf, 16:32, 11/06/2007 [^] [ответить] [смотреть все]  
  • +/
    А какие адреса вы раздаете клиентам с vpn сервера Левые или реальные ... весь текст скрыт [показать]
     
     
  • 6.9, andyS1976, 08:52, 13/06/2007 [^] [ответить] [смотреть все]  
  • +/
    После VPN делаю НАТ 10 10 10 ХХ-- 192 168 0 X-- NAT-- xx xx xx GW... весь текст скрыт [показать]
     
     
  • 7.11, uu4jdf, 15:05, 17/06/2007 [^] [ответить] [смотреть все]  
  • +/
    а шейпер используете ... весь текст скрыт [показать]
     
     
  • 8.12, andyS1976, 18:27, 17/06/2007 [^] [ответить] [смотреть все]  
  • +/
    конечно использую ifb0 -- для трафика идущего в локалку eth0 -- для трафика иду... весь текст скрыт [показать]
     
     
  • 9.14, Peter Rabbtison, 14:11, 08/10/2007 [^] [ответить] [смотреть все]  
  • +/
    Простите что не в тему каким пакетом генерируете png схемы TC по указанным адр... весь текст скрыт [показать]
     
  • 9.20, storm, 19:04, 05/04/2008 [^] [ответить] [смотреть все]  
  • +/
    Не могли бы вы описать, как завернуть трафик c ppp на ifb0 Никак не могу настро... весь текст скрыт [показать]
     
     ....нить скрыта, показать (9)

  • 1.3, demyan, 15:01, 23/05/2007 [ответить] [смотреть все]  
  • +/
    ppp+ в ifb перенаправлял вот так:
    tc filter add dev $DEV parent 1: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

    вот часть трейса от kernel panic:

    [<>]  ri_tasklet+0xc1/0x19f [ifb]
    [<>]  tasklet_action+0x55/oxaf
    [<>]  __do_sofirq+0x5a/oxbb
    [<>]  do_softirq+0x36/0x3a
    [<>]  apic_timer_interrupt+0x1f/0x
    [<>]  mwait_idle+0x25/0x38
    [<>]  cpu_idle+0x9f/0xb9
    [<>]  start_kernel+0x379/0x380

    IMQ и 30-100 ppp соединений работает отлично

     
     
  • 2.4, demyan, 15:04, 23/05/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    вот есть еще http people redhat com mingo realtime-preempt older patch-2 6 21-... весь текст скрыт [показать] [показать ветку]
     
  • 1.5, andyS, 16:36, 23/05/2007 [ответить] [смотреть все]  
  • +/
    У меня линуксовое ядро (2.6.18) недавно тоже с той же периодичностью что и у вас падало, но первые где то 3 мес. стабильно работало.
    Для сборки ядра использовал скрипт:
    http://www.tmf.rtu.lv/isp/ISP-compile-2.6.18.1.sh
    Конфиг ядра:
    http://www.tmf.rtu.lv/isp/ISP.config

    Как ни странно у меня так, компилируешь новое ядро с патчами, потом от трех месяцев до полугода нормально работает а потом снова начинает падать.
    При этом не использовал в скриптах IMQ, IFB.
    Ставишь новое ядро, проблему уходят.

    А вот там где сервер НАТ (2.6.9-1.667) работает не под большой нагрузкой и без патчей типа ESFQ и  т.п., так работает стабильно уже наверно года два.

    Иногда мне кажется что падение старого ядра это результат атаки, использующей дырки в ядре.

     
  • 1.10, nuclearcat, 01:01, 15/06/2007 [ответить] [смотреть все]  
  • +/
    В 2.6.20 пофикшено, сам принимал участие в отладке.
     
     
  • 2.13, unk, 20:28, 30/08/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >В 2.6.20 пофикшено, сам принимал участие в отладке.

    а что имменно пофикшено? работа с ifb или imq?

     
     
  • 3.15, Anatoliy, 19:00, 21/10/2007 [^] [ответить] [смотреть все]  
  • +/
    Ничего там не профикшено ни ifb, ни imq. Виснет как и висло и в .20, и в .21, и в .22, и в .23 ядрах.
     
  • 1.16, Peter, 22:09, 16/01/2008 [ответить] [смотреть все]  
  • +/
    IMQ у меня работает на 22, 23. Около 300 одновременных сессий, smp система. Анатолий, почему у меня не глючит, а у Вас виснет? Вы пробовали написать в список рассылки IMQ о проблеме? Хм. Знаю, ибо я туда подписан, не пробовали. Куда проще здесь кричать, что ничего не работает...
     
  • 1.17, Alex, 13:08, 19/03/2008 [ответить] [смотреть все]  
  • +/
      Kernel-2.6.24, iptables-1.4.0, iproute2-ss071016. IFB работает, но конструкция с маркировкой при помощи iptables (последний пример) - НЕТ. То есть команды выполняются без ошибок, но трафик по классам в итоге не разбивается. А фильтры в iptables не в пример tc'шным удобнее. ОЧЕНЬ буду благодарен за помощь в решениии этой проблемы.
      Кстати, в Shorewall-4.1.6 включена поддержка настройки IFB устройств. Очень рекоммендую.
     
  • 1.18, rtty1, 21:24, 22/03/2008 [ответить] [смотреть все]  
  • +/
    В статье очень много ошибок и недочетов, по видимому коряво переведено. Статья не дает ответов, а только добавляет вопросов.
     
  • 1.19, rtty1, 22:30, 22/03/2008 [ответить] [смотреть все]  
  • +/
    Подскажите пжста как перенаправить траффик с eth0 на ifb0. у меня TCPdump молчит при прослушке ifb0,
    хотя дословно делаю как написано
     
     
  • 2.21, vvvua, 19:00, 24/04/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    У меня ядро 2.6.24-1-686-bigmem #1 SMP.
    Debian unstable.
    Работает такое:

    modprobe ifb
    ifconfig ifb0 up
    tc qdisc add dev eth0 root handle 2: prio
    tc filter add dev eth0 parent 2: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

     
     
  • 3.23, PavelR, 20:04, 14/07/2009 [^] [ответить] [смотреть все]  
  • +/
    >У меня ядро 2.6.24-1-686-bigmem #1 SMP.
    >Debian unstable.
    >Работает такое:
    >
    >modprobe ifb
    >ifconfig ifb0 up
    >tc qdisc add dev eth0 root handle 2: prio
    >tc filter add dev eth0 parent 2: protocol ip u32 match u32
    >0 0 action mirred egress redirect dev ifb0

    У меня начинается перенаправление трафика только после того, как в filter будет добавлено указание flowid:

    # tc qdisc add dev ppp1 root handle 2: prio                                    
    # tc filter add dev ppp1 parent 2: protocol ip u32 match u32 0 0 flowid 1:10 action mirred egress redirect dev ifb0


     
  • 1.22, Maxim, 19:49, 25/05/2009 [ответить] [смотреть все]  
  • +/
    Везде пишут что невозможно при помощи ifb огрганизовать шейпер входящего трафика для локальных приложение INPUT и транзитных FORWARD, так как в tc не возможно определить кому и идет пакет.
    Решил эту проблему при помощи правил iptables
    $IPTABLES -p TCP -s $LAN_IP_RANGE3  -t nat -A POSTROUTING -o $INET_IFACE2 -j SNAT --to-source $INET_IP2:65280-65535
    Таким образом все исходящие соединения будут уходить в диапозне source ip port 65280-65535 и tc уже сможет определить на какй интерфейс уйдут дальше пакеты
    TC filter add dev $DEV parent 1: protocol ip prio 1 u32 \
        match ip protocol 6 0xff \
        match ip dport 65280 0xff00 \
        flowid 1:13
    Только толком так и неразобрался как найти маски tc для портов
     
  • 1.24, Аноним, 04:37, 13/10/2009 [ответить] [смотреть все]  
  • +1 +/
    У кого нибудь работает маркировка через iptables и просовывание этих пакетов на ... весь текст скрыт [показать]
     
     
  • 2.25, Аноним, 00:34, 22/01/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Не работает, и не должна, потому что IFB не является частью netfilter Для марки... весь текст скрыт [показать] [показать ветку]
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList