The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Деление между пользователями канала поровну используя ipfw (freebsd ipfw bandwidth traffic link shaper queue qos)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: 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 флэшгет качает на максимально возможной скорости.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Илья (??), 02:34, 29/11/2004 [ответить]  
  • +/
    Народ, объяните, почему везде 80Kbytes независимо от того, какой bw на pipe?
    И, если можно, по подробней с масками. Где надо 0xffffffff, 0x0000ffff, 0x000000ff, 0x00000000 и 0x00000000?
    Пример: Если мне надо динамически раздавать трафик поровну в /24 сетке, для каждого хоста (т.е. 1 юзер - 256Kbit/s, 2 юзера - по 128Kbit/s каждому, и т.д.), какую маску указывать в dst-ip и src-ip?
     
  • 2, napTu (?), 20:45, 14/07/2005 [ответить]  
  • +/
    >> 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
    >>
    >> что я не правильно сделал?
    >>флэшгет качает на максимально возможной скорости.


    Скорость пайпы похоже больше скорости канала, а должна быть на 5-10% меньше. Не знаю почему, но только в этом случае начинает работать правильно распределение трафика.

     
  • 3, dmitry (??), 19:24, 21/12/2007 [ответить]  
  • +/
    у меня интересный эффект. если сделать все как описано выше - то секунд через 20, 30 машина уходит на ребут. и ничего даже в лог не пишет.
    если просто с pipe играться все ок. похоже проблем в queue или в mask & etc
    FreeBSD 4.5
    ps. знаю что старая но не было надобности переводить ... все работало пока не собрался траффик делить
     
  • 4, Георгий (??), 23:17, 29/10/2010 [ответить]  
  • +/
    я пока начинающий, но мне очень нужна помощь. кто сможет ее оказать, пишите по tuaev-george@yandex.ru
     

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




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру