URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 65189
[ Назад ]

Исходное сообщение
"DUMMYNET и тормоза"

Отправлено foobar , 28-Мрт-06 19:05 
Имеется FreeBSD 4.11-RELEASE-p10
ipfw show|grep pipe|wc -l
3289

Железо - iP4-3GHz, em0 (гигабитный интел) polling.
в моменты нагрузки железяка очень начинает тормозить, есть ли что в системе по этому поводу чтобы подтюнить?
Тормозит на сетевом уровне - пинги на нее увеличиваются до 200мсек от машин которые в pipe'ах не прописаны, сами пайпы начинают врать, где 256кбит - имеем реально ~90-100kbit...
В ядре:
options         HZ=200

пробовал ставить HZ=2000, после чего часы начинают отставать в системе, толку - ноль.

как быть?


Содержание

Сообщения в этом обсуждении
"DUMMYNET и тормоза"
Отправлено foobar , 29-Мрт-06 13:01 
идей ни у кого не будет?

"DUMMYNET и тормоза"
Отправлено Lexleo , 29-Мрт-06 17:58 
>идей ни у кого не будет?

Подобная проблема решилась у меня "вычёсыванием" файрволла, использованием tables и mask src-ip mask dst-ip  при конфигурации pipe's. rc.firewall  в студию - подскажу по возможности.


"DUMMYNET и тормоза"
Отправлено foobar , 30-Мрт-06 09:58 
>>идей ни у кого не будет?
>
>Подобная проблема решилась у меня "вычёсыванием" файрволла, использованием tables и mask src-ip
>mask dst-ip  при конфигурации pipe's. rc.firewall  в студию -
>подскажу по возможности.
ситуация такая, написан биллинг с заточкой для зарезки скоростей по IP для каждого пользователя, соотв. получился трабл - ~3200+ правил с pipe'ами.
Вчера просчитал, с пару часов посидел, повыгребал и получил в итоге ~800 вместо ~3200 за счет mask dst-ip 0x000000ff для x.x.x.x/24.

Хочу у тебя спросить - введение таблиц поможет ли для увеличения скорости? Сколько одна таблица может содержать записей? Я так понимаю это фича ipfw2 ?
спасибо!


"DUMMYNET и тормоза"
Отправлено lexleo , 30-Мрт-06 15:31 

>ситуация такая, написан биллинг с заточкой для зарезки скоростей по IP для
>каждого пользователя, соотв. получился трабл - ~3200+ правил с pipe'ами.
>Вчера просчитал, с пару часов посидел, повыгребал и получил в итоге ~800
>вместо ~3200 за счет mask dst-ip 0x000000ff для x.x.x.x/24.
>
>Хочу у тебя спросить - введение таблиц поможет ли для увеличения скорости?
>Сколько одна таблица может содержать записей? Я так понимаю это фича
>ipfw2 ?
>спасибо!

В моём случае таблицы существенно разгрузили "нарезающую" машину.
В одной из таблиц около 1000 записей - работает.
Фича соответственно ipfw2.



"DUMMYNET и тормоза"
Отправлено foobar , 30-Мрт-06 22:48 
>В моём случае таблицы существенно разгрузили "нарезающую" машину.
>В одной из таблиц около 1000 записей - работает.
>Фича соответственно ipfw2.
спасибо,
можешь дать пример и таблицы и правила для таблицы?

обязательно попробую на таблицы перейти, о результатах отпишусь!

Кстати, dst-ip/src-ip тоже надо в ff ставить при использовании table?


"DUMMYNET и тормоза"
Отправлено lexleo , 31-Мрт-06 12:34 
Тогда прошу уточнить - сколько различных тарифов надо обслуживать, занимается ли роутингом твоя машина или только шейпит.



"DUMMYNET и тормоза"
Отправлено foobar , 31-Мрт-06 12:52 
>Тогда прошу уточнить - сколько различных тарифов надо обслуживать, занимается ли роутингом
>твоя машина или только шейпит.
роутит, шейпит, ~200 vpn подключений постоянно и даже маленькая bgp сессия ;) ну и ospfd даже крутится, а ещё ipnat :D
Еще с сотню VLAN'ов и ~50+ trafd висит, и периодически с 'ng' интерфейсов ng_ipacctd собирает статистику и скармливает mysql (этот уже на другом хосте).

Вот такой вот монстрик.


"DUMMYNET и тормоза"
Отправлено lexleo , 31-Мрт-06 18:16 
>>Тогда прошу уточнить - сколько различных тарифов надо обслуживать, занимается ли роутингом
>>твоя машина или только шейпит.
>роутит, шейпит, ~200 vpn подключений постоянно и даже маленькая bgp сессия ;)
>ну и ospfd даже крутится, а ещё ipnat :D
>Еще с сотню VLAN'ов и ~50+ trafd висит, и периодически с 'ng'
>интерфейсов ng_ipacctd собирает статистику и скармливает mysql (этот уже на другом
>хосте).
>
>Вот такой вот монстрик.

А не проще ль шейпер вынести на отдельный бридж? В своё время у меня тоже на одной тачке всё крутилось, пока проц под сотню не загрузился. Потом я разделил мясо и мух - роутер роутит, бридж шейпит , интеловские гиговые карточки, и эта конструкция 200Мбит прожёвывает без напрягу с запасом. Шейпер на бридже организован так: несколько файлов с IP-шками, перловый скрипт их заталкивает в таблицы, ipfw жуёт таблицы (одно правило на несколько сотен IP). Если надо - к понедельнику скину в один файл и скрипт и правила ipfw, повешу линк.


"DUMMYNET и тормоза"
Отправлено lexleo , 05-Апр-06 19:00 
Извиняюсь, запахался.

Пример файла с IP-шками приводить нет смысла - просто по IP-шке на сторчку.
Пример скрипта на перле, заталкивающего IP-шки в таблицы:

#!/usr/bin/perl
local $ipfw="/sbin/ipfw -q";
system ("$ipfw table 0 flush");
open(ONE, "</usr/tables/list1.txt");
while(<ONE>){
        chomp $_;
        if (!/^#/) {
        system ("$ipfw table 0 add $_\n");
        }
}
close(ONE);
system ("$ipfw table 1 flush");
open(LV, "</usr/tables/lvonlylist.txt");
while(<TWO>){
        chomp $_;
        if (!/^#/) {
        system ("$ipfw table 1 add $_\n");
        }
}
close(TWO);
... итд, сколько таблиц надо. Скритп также отслеживает строки комментов, начинающиеся с #
и на них не реагирует.

Пример куска rc.firewall

if1="em0"
if2="em1"
...
${fwcmd} add 20000 pipe 10 ip from any to  table\(1\) in via ${if1}
${fwcmd} add 20010 pipe 20 ip from  table\(1\) to any in via ${if2}
...
${fwcmd} pipe 10 config mask dst-ip 0x000000ff bw 128Kbit/s
${fwcmd} pipe 20 config mask src-ip 0x000000ff bw 128Kbit/s

Можешь разобраться с пропусканием пакетов через интерфейсы по-своему,
поскольку у тебя роутер шейпит, но если будешь делать "нарезающий" бридж, то лучше так,
поскольку бридж обрабатывает только конструкции типа in via ${if1} и абсолютно забивает на  out via ${if1}