|
Ключевые слова: freebsd, ipfw, bandwidth, traffic, link, shaper, queue, qos, (найти похожие документы)
Date: Wed, 07 Apr 2004 17:33:15 +0600 From: Ivan Voytas <ivan_voytas@atlantm.com> Newsgroups: ftn.ru.unix.bsd Subject: Деление между пользователями канала поровну используя ipfw > есть канал в 128кбит. нужно его делить динамически поровну между юзерами, > которые в данный момент пользуются этим каналом. как такое сделать > правильно при помощи ipfw? аналог WFQ: add queue 10 ip from 192.168.0.0/24 to any xmit ppp0 queue 10 config mask src-ip 0xffffffff pipe 10 pipe 10 config bw 128Kbit/s add queue 20 ip from any to 192.168.0.0/24 to any recv ppp0 in pipe 20 config bw 128Kbit/s queue 20 config mask dst-ip 0xffffffff pipe 20 Еще в целях уменьшения задержек можно опционально покрутить длину queue и pipe. Hу и red/gred по вкусу. Только большой вопрос, что писать в bw. 128 ли? Кто-нибудь знает, будут ли пакеты пропадать при переполнении очереди выходного интерфейса? Или они будут скапливаться в пайпах?
From: Dmitry Pryanishnikov <dmitry@atlantis.dp.ua> > есть канал в 128кбит. нужно его делить динамически поровну между юзерами, > которые в данный момент пользуются этим каналом. как такое сделать > правильно при > помощи ipfw? Пусть клиенты сидят на серых адресах 192.168.0.0/16, а трафик приходит через fxp0, тогда динамическая раздача поровну симметричных 128KBit/s будет выглядеть примерно так: ipfw pipe 1 config bw 128Kbit/s queue 80Kbytes ipfw queue 10 config pipe 1 weight 50 queue 80Kbytes mask src-ip 0x0000ffff ipfw add 5000 queue 10 all from 192.168.0.0/16 to any out via fxp0 <... между 5000 и 10000 должен стоять divert natd для этих сетей ...> ipfw pipe 2 config bw 128Kbit/s queue 80Kbytes ipfw queue 20 config pipe 2 weight 50 queue 80Kbytes mask dst-ip 0x0000ffff ipfw add 10000 queue 20 all from any to 192.168.0.0/16 in via fxp0
From: Ivan Voytas <ivan_voytas@atlantm.com> > ipfw pipe 1 config bw 128Kbit/s queue 80Kbytes > ipfw queue 10 config pipe 1 weight 50 queue 80Kbytes mask src-ip 0x0000ffff > ipfw add 5000 queue 10 all from 192.168.0.0/16 to any out via fxp0 Здесь не нужен weight. queue - 80Kbytes у пайпа - это 5сек задержки в одну сторону на 128Кбит/с. В итоге при загруженном канале и одном пользователе имеем 20сек на пинг. При 10 пользователях имеем 80Kbytes/(128 / 8 / 10Kbytes/s) = 50c на одном только queue. То есть пинг 110сек :-) Hеработоспособно в принципе. Я бы даже наоборот сделал - pipe config queue 10 (или 5, или вообще 1, если ничему не противоречит) и queue config queue 10. Причем именно в пакетах, а не килобайтах.
From: Slava Vovk <vovk@km.ua> >> пилообразность и дропы убираются gred'om, но добится от него результатов >> можно только на больших очередях, где пинг заоблачный. > > Заоблачный - это сколько? Я делал длину очереди равную скорости в > (Кбит/с)/10 пакетов. Плюс gred. Вроде все нормально было. add 10000 queue 10 ip from 195.135.200.244/30 to any out queue 10 config mask src-ip 0xffffffff pipe 10 queue 100 gred 0.002/10/30/0.1 pipe 10 config bw $total64 queue 10 add 10010 queue 20 ip from any to 195.135.200.244/30 in queue 20 config mask dst-ip 0xffffffff pipe 20 queue 100 gred 0.002/10/30/0.1 pipe 20 config bw $total64 queue 10 пинг при закачке до 22-25 сек. установки gred'a 0.002/10/30/0.1, взяты из этой конфы, кто-то приводил пример с месяц назад. это наиболее "нормальный" WFQ, который мне удалось получить, правда очередь на пайп меньше 10 я не делал. а начинал я играться с 5 пакетов на очередь, поэксперементировал данными с http://ee.tamu.edu/~zzlarry/vprm_red.html, но там похоже нужно апроксимировать данные под мою скорость. > Попробуй увеличивать длину очереди и уменьшать длину пайпа одновременно. > Вплоть до 50-100 на queue и 1-2-5 на pipe. > сейчас попробую плавно поуменьшать очередь на пайп, посмотрим.
From: Sergey Zabolotny <Sergey_Zabolotny@p1.f122.n469.z2.fidonet.org> >> ipfw -q pipe 1 config bw 16Kbit/s queue 80Kbytes >> ipfw -q queue 10 config pipe 1 weight 50 queue 80Kbytes mask src-ip 0x0000ffff >> ipfw -q add queue 10 all from 192.168.0.0/16 to any out via ep0 >> >> ipfw -q add divert 8668 ip from any to any via ep0 >> >> ipfw -q pipe 2 config bw 16Kbit/s queue 80Kbytes >> ipfw -q queue 20 config pipe 2 weight 50 queue 80Kbytes mask dst-ip 0x0000ffff >> ipfw -q add queue 20 all from any to 192.168.0.0/16 in via ep0 >> >> что я не правильно сделал? DP> flush сделал? Похоже, что эти правила просто дописались в конец DP> общего списка, после allow. Если счетчик на последней строчке нулевой, DP> то так и есть. нет. все нормально прописано. вот как выглядит /etc/rc.local ipfw -q pipe 1 config bw 16Kbit/s queue 80Kbytes ipfw -q queue 10 config pipe 1 weight 50 queue 80Kbytes mask src-ip 0x0000ffff ipfw -q add queue 10 all from 192.168.0.0/16 to any out via ep0 ipfw -q add divert 8668 ip from any to any via ep0 ipfw -q pipe 2 config bw 16Kbit/s queue 80Kbytes ipfw -q queue 20 config pipe 2 weight 50 queue 80Kbytes mask dst-ip 0x0000ffff ipfw -q add queue 20 all from any to 192.168.0.0/16 in via ep0 ipfw -q add allow ip from any to any via lo0 ipfw -q add deny ip from any to 127.0.0.0/8 ipfw -q add deny ip from 127.0.0.0/8 to any ipfw -q add allow ip from any to any Zombie# ipfw show 00100 1255 85480 queue 10 ip from 192.168.0.0/16 to any out xmit ep0 00200 508 79234 divert 8668 ip from any to any via ep0 00300 508 79234 queue 20 ip from any to 192.168.0.0/16 in recv ep0 00400 0 0 allow ip from any to any via lo0 00500 0 0 deny ip from any to 127.0.0.0/8 00600 0 0 deny ip from 127.0.0.0/8 to any 00700 1804 178293 allow ip from any to any 65535 1 56 deny ip from any to any флэшгет качает на максимально возможной скорости.
|
Обсуждение | [ RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |