Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  начальная настройка
  Установка FreeBSD
  DUMMYNET
  Сборка ядра
  IPFW
  обновление
  portsnap
  CP1251 на FreeBSD
  loader.conf
  defaults/rc.conf
  jail
  Ntpdate/Ntpd
  diskless
  Обновление мира ("world")
  PBR & PF
  bsnmpd
  newsyslog
  if_bridge
  make.conf
  PBR & IPFW
  Работа с HDD
  sshd & AD
  Удаленное разбиение HDD
  Заметки об IPFW
  FreeBSD на VDS
  CVSUP и софт через Proxy
  i386=>amd64
  ALTQ в IPFW
  Виртуальный свитч
  VPN сервер по средствам mpd5.
  NTP
  sysupdate
  mpd5 L2TP
  freebsd + webcamera
  IPFW policy (PBR)
  RAID1 via LAN
  зеркальный RAID1 на ОС FreeBSD
  4.x => 7.x
  portdowngrade
  Быстрое обновление портов
  ipfw nat
  Использование csup
  UTF-8 console
  dump/restore
  hast carp zfs ucarp cluster
  ng_nat
  Wi-FI роутер + DHCP + DNS
  backup/restore & ZFS
  Обновление ОС и портов через SVN.
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> настройка —> ALTQ в IPFW

ALTQ в IPFW

Автор: Covax.


Предистория. Работа у нас сложная и напряжённая, о чём свидетельствуют протёртые клавиши W A S D на клавиатуре, а канал в инет не резиновый (к нашему всеобщему сожалению). Загвоздка состояла в том, что когда начинали активно серфить или кто-то осмеливался ещё и качать, то пинг в любой игре подскакивал до неприлично больших значений, ну и конечно большая вероятность дисконекта. На шлюзе стоит FreeBSD 7.0 Release с настроенным ipfw и претензий к нему нет. Именно поэтому при возникновении необходимости в altq я полез копаться в pf. Настроил, всё прекрасно заработало. Косяк вылез при редиректе на squid из-за того, что в FreeBSD 7 в pf по умолчанию включен keep state, а в rdr он не убирается. Убил неделю, но, как говорится: "А ларчик то просто открывался!". Настроенный ipfw переводится на работу с ALTQ за несколько минут.
Теперь по порядку:
Естественно надо ядро с поддержкой ALTQ, а именно:
options		ALTQ
options		ALTQ_CBQ
options		ALTQ_RED
options		ALTQ_RIO
options		ALTQ_HFSC
options		ALTQ_CDNR
options		ALTQ_PRIQ
options		ALTQ_NOPCC #нужен для для SMP
options		ALTQ_DEBUG

PF (можно модулем подгружать, но не пробовал) для добавления очередей ALTQ (ipfw сам не умеет):
device		pf #обязательно
device		pflog #остальное по желанию
device		pfsync

Правим /etc/rc.conf и добавляем:
pf_enable="YES"
pf_rule="/etc/pf.conf"

В /etc/pf.conf только включаем altq и прописываем очереди.
altq on $ext_if bandwidth 1000Kb priq queue {def_out, game_out}
  queue def_out priority 1 priq(default red)
  queue game_out priority 5 priq(red)

altq on $int_if bandwidth 1000Kb cbq queue {def_in, game_in}
  queue def_in bandwidth 872Kb cbq(default borrow red)
  queue game_in bandwidth 128Kb priority 7 cbq(borrow red)

Подробно очереди описывать не буду, в интернете множество примеров.
Ну и теперь надо завернуть в очереди трафик из ipfw. При настроенном ipfw, делается это очень удобно через конструкцию count
ipfw add 1 count altq game_out all from any to any 8112 out via $ext_if
ipfw add 2 count altq game_in all from any 8112 to any out via $int_if
...

Ну и т.д. Все, кто не попал в очередь идут в дефолтную.

Для удобства ставим pftop и радуемся работе ALTQ в ifpw.

З.Ы. Замечания по man`у ipfw. При попадании пакета в несколько очередей срабатывает первое. Заворачивать в очереди надо до check-state и keep-state.

Ну, вот, как-то так...

Литература:
FAQ по ALTQ (eng)
FAQ по ALTQ (rus)
Настройка PF (rus)
Полезно у кого асинхронный канал (eng)



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=8&t=8379.

размещено: 2008-05-20,
последнее обновление: 2008-05-20,
автор: Covax

оценить статью:

artem, 2008-05-20 в 18:04:32

а можно список литературы?
ссылочки где на русском раскажут теорет подготовку
про такого зверя как ALTQ и опции ядра для него?

artem, 2008-05-20 в 18:13:39

понятно что в хэндбуке немного инфы есть

Covax, 2008-05-20 в 18:48:52

Кому лень искать добавил ссылки по altq. Наиболее полно описывается в FAQ`е, но там на ангельском, учите! :)

Covax, 2008-05-20 в 18:57:32

Кому и ангельский учить лень, нашел перевод (2 ссылка)

sergey, 2008-05-22 в 13:06:12

лучшеб без изврата просто про pf Написал:)

Dog, 2008-05-22 в 13:15:38

2sergey:
Написал же человек, почему ему pf неприемлим, читайте внимательно. Вот и приходится изголяться.

sergey, 2008-05-22 в 14:44:01

вот честно не понял почему Ipfw потому что уже настроено было? дык можно перенастроить:)

Dog, 2008-05-22 в 14:55:40

2sergey:
Косяк вылез при редиректе на squid из-за того, что в FreeBSD 7 в pf по умолчанию включен keep state, а в rdr он не убирается. - это недостаточное объяснение?

vladimir, 2008-05-22 в 15:17:08

Осталось привести,как выяснилось такое поведение с rdr

Covax, 2008-05-23 в 0:09:15

2vladimir: Если так интересно - http://forum.lissyara.su/viewtopic.php?f=8&t=8379

RaDiST_1977, 2008-06-08 в 16:07:48

на самом деле в 7-ке очень просто оключить keep state, установленный по дефолту
просто надо в конце каждого правила написать no state
и все=)

Covax, 2008-06-20 в 13:59:18

Сколько ещё человек скажет как всё просто решается?
А ты возьми и попробуй, и только потом говори.......

arch, 2009-02-25 в 15:02:50

FAQ по ALTQ (rus) - ссылка померла :(

KES, 2009-05-07 в 21:17:15

Примеры не верные, читайте ман:
The priq scheduler does not support bandwidth specification.

sasha181, 2009-05-15 в 4:54:37

FAQ по ALTQ (rus)
новая ссылка
http://docs.pcn.com.ua/Dreamcatcher.ru/pf-faq-part2-rus.htm

Dusya, 2010-07-01 в 18:08:13

а шлюзе стоит FreeBSD 7.0 Release с настроенным ipfw и претензий к нему нет. Именно поэтому при возникновении необходимости в altq я полез копаться в pf.

Dummynet надо ставить и юзать его в ipfw, а не заниматься нереальным онанизмом.

Александр, 2013-10-22 в 7:22:18

вот вичитал рекомендация
net.graph.maxdgram=8388608
net.graph.recvspace=8388608
kern.ipc.maxsockbuf=83886080
kern.ipc.nmbclusters=400000
net.inet.ip.intr_queue_maxlen=10240
net.inet.tcp.sendspace=128000
net.inet.tcp.recvspace=128000
#loader.conf
net.graph.maxdata=65536
net.graph.maxalloc=65536


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 16 чел.
За последние 30 мин было: 70 человек
За сегодня было
13 показов,
7 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0376 секунд
Из них PHP: 24%; SQL: 76%; Число SQL-запросов: 77 шт.
Исходный размер: 111517; Сжатая: 19349