Перейти к содержимому
Калькуляторы

dummynet в качестве приоритезатора Много-много queue и пара pipe, тут обсуждалось наоборот

/sbin/ipfw -q pipe  1 config bw 590Mbit/s queue 1000KBytes
/sbin/ipfw -q pipe  2 config bw 590Mbit/s queue 1000KBytes
/sbin/ipfw -q queue 11 config pipe 1 weight 10 mask src-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 14 config pipe 1 weight 40 mask src-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 19 config pipe 1 weight 90 mask src-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 21 config pipe 2 weight 10 mask dst-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 24 config pipe 2 weight 40 mask dst-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 29 config pipe 2 weight 90 mask dst-ip 0xffffffff queue 1000KBytes buckets 8192 noerror

/sbin/ipfw -q pipe  3 config bw 590Mbit/s queue 1000KBytes
/sbin/ipfw -q pipe  4 config bw 590Mbit/s queue 1000KBytes
/sbin/ipfw -q queue 31 config pipe 3 weight 10 mask src-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 34 config pipe 3 weight 40 mask src-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 39 config pipe 3 weight 90 mask src-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 41 config pipe 4 weight 10 mask dst-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 44 config pipe 4 weight 40 mask dst-ip 0xffffffff queue 1000KBytes buckets 8192 noerror
/sbin/ipfw -q queue 49 config pipe 4 weight 90 mask dst-ip 0xffffffff queue 1000KBytes buckets 8192 noerror

/sbin/ipfw -q add queue 21 all from any to table(1) out xmit em0
/sbin/ipfw -q add queue 11 all from table(1) to any in recv em0

/sbin/ipfw -q add queue 24 all from any to table(4) out xmit em0
/sbin/ipfw -q add queue 14 all from table(4) to any in recv em0

/sbin/ipfw -q add queue 29 all from any to table(9) out xmit em0
/sbin/ipfw -q add queue 19 all from table(9) to any in recv em0

/sbin/ipfw -q add queue 41 all from any to table(1) out xmit em1
/sbin/ipfw -q add queue 31 all from table(1) to any in recv em1

/sbin/ipfw -q add queue 44 all from any to table(4) out xmit em1
/sbin/ipfw -q add queue 34 all from table(4) to any in recv em1

/sbin/ipfw -q add queue 49 all from any to table(9) out xmit em1
/sbin/ipfw -q add queue 39 all from table(9) to any in recv em1

/sbin/sysctl net.inet.ip.fw.one_pass=1

 

Есть 2 аплинка по 600 мбит, нагрузка текущая 800-900 мбит, один аплинк получает препенд и трафик ложится примерно 50-50, все хорошо. Если отваливается 1 из аплинков нужно отдать випам випово, физикам физиково, юрикам - что осталось, причем это "что осталось" нужно поделить, чтобы 20 киноманов торентом не сожрали все. Вообщем есть 2 трубы и динамические очереди с тремя приоритетами и маской по ip клиента. Очередей тыщ 8 в каждую сторону, dummynet жрет под 60% процессора, трафик чуть больше 100 кппс, правил фаервола 10 штук, в таблицах подсети по сервису.

 

Может я не то и не тем решаю? Или на таком количестве очередей это нормально? Поиск использовал, особо нагрузка не поменялась.

Изменено пользователем make.kernel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть 2 аплинка по 600 мбит, нагрузка текущая 800-900 мбит, один аплинк получает препенд и трафик ложится примерно 50-50, все хорошо. Если отваливается 1 из аплинков нужно отдать випам випово, физикам физиково, юрикам - что осталось, причем это "что осталось" нужно поделить, чтобы 20 киноманов торентом не сожрали все. Вообщем есть 2 трубы и динамические очереди с тремя приоритетами и маской по ip клиента. Очередей тыщ 8 в каждую сторону, dummynet жрет под 60% процессора, трафик чуть больше 100 кппс, правил фаервола 10 штук, в таблицах подсети по сервису.

 

Может я не то и не тем решаю? Или на таком количестве очередей это нормально? Поиск использовал, особо нагрузка не поменялась.

Составьте список киноманов, и в момент аварии засуньте их всех в мелкую трубу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Размеры родительских очередей (pipe) такой же, как и у дочерних (queue), а должен быть таким, чтобы помещались все дочерние, и еще оставался запас, около 4000KBytes. Кроме того, надо бы размеры даминетовских хэшей в sysctl подкрутить.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Составьте список киноманов, и в момент аварии засуньте их всех в мелкую трубу.
Не тру-вей в трубу ложить, если авария в 4 утра и недогруз даже на одном аплинке ;)
Размеры родительских очередей (pipe) такой же, как и у дочерних (queue), а должен быть таким, чтобы помещались все дочерние, и еще оставался запас, около 4000KBytes.
Тут не понятно, пакеты должны скирдоваться в буферах queue, pipe их только вынимает оттуда и отдает на пересылку, вынимает со своей скоростью в очередности заданой приоритетами. Я чего-то думал, что queue для pipe задается чтобы он не тупо дропал что выше скорости а складывал в неявную очередь если трафик именно в pipe заворачивается. Я же очереди явно создал и трафик в них явно положил. И откуда цифра в 4 мб? Она рассчитывается как-то? Если я создаю динамически 16 тыщ очередей по например 100кбайт это на 1.6 гб, значит на pipe нада еще 2 гб ставить, итого 3.6 гб буферов - да там данных ляжет еще на 20 минут качать после отвала обоих аплинков....

border# sysctl net.inet.ip.dummynet.hash_size
net.inet.ip.dummynet.hash_size: 32768
border#

Или какие хеши имелось ввиду?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По идее, родительская очередь должна быть больше дочерних, чтобы пакеты не терялись. Хотя для динамических очередей dummynet может быть это и не нужно. По крайней мере будет лучше уменьшить длину очереди в queue до 50--80KByte. net.inet.ip.dummynet.hash_size = 32768 вы фактически затираете параметром buckets 8192. Если этого числа достаточно, то ничего менять не нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не тру-вей в трубу ложить, если авария в 4 утра и недогруз даже на одном аплинке ;)

:-) Про тру-вей поговорим после этой самой аварии. Я почему-то думаю, что она будет в ЧНН.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

....
/sbin/ipfw -q add queue 21 all from any to table(1) out xmit em0
/sbin/ipfw -q add queue 11 all from table(1) to any in recv em0
....

попробуйте не шейпить входящие пакеты, а именно:

/sbin/ipfw -q add queue 21 all from any to table(1) [b]out recv em1 xmit em0[/b]
/sbin/ipfw -q add queue 11 all from table(1) to any [b]out recv em0 xmit em1[/b]

это даст небольшой выигрыш (снизит нагрузку)

 

также можно минимизировать кол-во правил (чтобы глаза не мазолили):

pipe config...
queue config...
ipfw add queue tablearg all from any to table(100) out recv em1 xmit em0
ipfw add queue tablearg all from table(100) to any out recv em0 xmit em1

 

про остальное (значения очередей и хешей) не скажу

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Немного оффтоп, но все же - я так понял из описания алгоритма w2fq, что не важно, какие именно значения приоритетов писать при задании queue, важно отношение между ними? Т.е. в данном случае 90-40-10, т.е. первый приоритет получит 90/(90+40+10) - 64% проп. способности, второй - 40/(90+40+10) - 28% проп. способности, третий - 10/(90+40+10) - 7% проп. способности.

 

Я прав?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Немного оффтоп, но все же - я так понял из описания алгоритма w2fq, что не важно, какие именно значения приоритетов писать при задании queue, важно отношение между ними? Т.е. в данном случае 90-40-10, т.е. первый приоритет получит 90/(90+40+10) - 64% проп. способности, второй - 40/(90+40+10) - 28% проп. способности, третий - 10/(90+40+10) - 7% проп. способности.

Это же не шейпинг, а fair queueing, поэтому такое распределение будет выполняться при 100% использовании канала. Если канал не загружен, низкоприоритетные классы могут занять неиспользуемую полосу. Кроме того, нужно учитывать, что трафик имеет большую пачечность, поэтому выравнивание распределений будет происходить не мгновенно.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.