Ключевые слова:freebsd, ipfw, bandwidth, trafic, shaper, queue, (найти похожие документы)
Date: Thu, 26 Feb 2004 03:07:36 +0500
From: Alexander Sheiko <adsh@i.com.ua>
Newsgroups: ftn.ru.unix.bsd
Subject: [FreeBSD] ipfw2 динамическое ограничение кол-ва сессий для ip--- cut
Если ограничение пропускной способности для каждого конкретного
пользователя - не самоцель, а только средство "справедливо" разделить между
ними имеющийся канал, то более корректной будет работа с одним каналом и
несколькими очередями (возможно, с различным проиритетом), например:
/sbin/ipfw pipe 1 config bw 1000Kbit/s
/sbin/ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000
/sbin/ipfw add queue 1 ip from any to 192.168.0.1/24
справедливо разделит пропускную способность в 1 мегабит между всеми
пользователями сети, т.к. очереди равноприоритетны (пакеты будут выходить из
пользовательских очередей "по очереди")
/sbin/ipfw pipe 1 config bw 1000Kbit/s
/sbin/ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000
/sbin/ipfw queue 2 config pipe 1 weight 75 mask dst-ip 0x00000000
/sbin/ipfw add queue 1 ip from any to 192.168.0.1/25
/sbin/ipfw add queue 2 ip from any to 192.168.0.128/25
даст некоторый проиоритет в использовании канала пользователям с адресами,
большими 192.168.0.128. Это неплохой инструмент для VIP-обслуживания
некоторых абонентов сети без "глобального" ущемления прав рядовых
пользователей: если никому из VIP-группы в данный момент канал не нужен, то
обычные пользователи делят между собой пропускную способность поровну, но
если VIP-абоненту понадобились услуги - простые пользователи автоматически
подвигаются
--- cut
Я бы ещё добавил в конце правил очереди via int in/out...
Тебе ещё, возможно, пригодится это
http://www.opennet.dev/base/net/ipfw_one_pass.txt.html.
From: Alexander Sheiko <adsh@i.com.ua>
AV>>> Как нарезку траффика сделать очень плавной и четкой?
Общие сведения:
http://www.opennet.dev/base/net/red_qos.txt.html
Подробный "разбор полётов":
http://www.icir.org/floyd/papers/red/red.html (скачай PDF оттуда)
http://www.icir.org/floyd/REDparameters.txthttp://ee.tamu.edu/~zzlarry/vprm_red.htmlhttp://www.opennet.dev/base/net/linux_traffic_qos.txt.html
Hедавно я сам с этим всем разбирался. Переход от tail drop к gred выглядит
разительно. В первом случае - скорость прокачки постоянно скачет, в
статистике куча дропов. Во втором - наблюдается плавное регулирование
скорости, без скачков, и - очень малое количество дропов. Экспериментально у
меня очень хорошо заработала такая настройка gred 0.002/10/30/0.1 для
конфигурирования очередей (я загонял очереди с масками в пайпы) . Число
слотов в очередях поставил в сотню. При увеличении очереди от 10 до 30
слотов - процент дропаемых пакетов плавно растёт от нуля до 10. При
дальнейшем увеличении очереди (2 х 30 = 60 слотов) - процент дропаемых
пакетов плавно растёт от 10 до 100. В случае простого red - после достижения
очереди в 30 слотов дропаются все пакеты. Gred тут действует заметно мягче.
Смысл тут в том, что, при передаче данных, исходя из процента дропнутых
пакетов (и не только), автоматически устанавливатся оптимальная скорость
передачи.
Если что написал не совсем точно - пусть меня коллеги поправят.
прописал у себя
/sbin/ipfw pipe 1 config bw 2000Kbit/s
/sbin/ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000
/sbin/ipfw add queue 1 ip from any to 192.168.20.0/24
как проверить что это работает? так как изменений я не заметил
Как разделить общий канал 3Мбит при условии:
в общем канале есть пользователи
1я очередь - пользователи с высоким приоритетом,
2я очередь - пользователи с низким приоритетом
3я очередь - все что осталось, делят между собой пользователи с выделеной полосой 128, 256к и получали свою полосу в случае если общая полоса не занята пользователями с высокими приоритетами. 1 и 2
или так
как разделить 3Мбит из условий:
1Мбит для 2х очередей
1я очередь - высокий приоритет
2я очередь - низкий приоритет
и в оставшиеся 2Мбит запихать пользователй 128, 256к
причем если 2мбит свободны то каждый из них получал гарантированые 128, 256
если канал занят то пользователи с 128 и 256 каналами делили все поровну.