Kernel NAT FreeBSD 8.2 AMD64

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ReND
рядовой
Сообщения: 18
Зарегистрирован: 2010-12-21 13:34:08

Kernel NAT FreeBSD 8.2 AMD64

Непрочитанное сообщение ReND » 2012-06-29 13:48:16

Помогите разобраться с причиной тормозной работы ядерного NATa. Перегуглил много, но толком картина не прояснилась :(
Аппаратная часть HP Proliant DL360 G5, 18GB RAM, Net - bce.
Планируется принимать более 50К коннектов.
по тестам netperf TCP_CC (Количество соединений в единицу времени) не получается сделать больше 650 pps. Если не использовать NAT, то удается через этот же сервер пропустить около 4000 pps, это не ограничение сервера,а принимающей стороны. Какова теоретическая возможность пропускной способности яденого NATа у FreBSD? чего можно затюнить в системе. Также заметит, что при приближении коннектов к 10К на обном из CPU 99% прерываний и сервер в целом становится "задумчивым".
Если нужны доп. дпнные по конфиурации и по sysctl предоставлю.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Ikinoki
мл. сержант
Сообщения: 70
Зарегистрирован: 2009-07-27 12:04:45

Re: Kernel NAT FreeBSD 8.2 AMD64

Непрочитанное сообщение Ikinoki » 2012-07-04 18:41:14

NAT сам по себе грузит систему.
isr direct стоит?
bce = очень плохо :(

hw.intr_storm_threshold=100000 Попробуйте, правда может негативно повлиять.
а так надо sysctl ковырять и бце настройки.

ReND
рядовой
Сообщения: 18
Зарегистрирован: 2010-12-21 13:34:08

Re: Kernel NAT FreeBSD 8.2 AMD64

Непрочитанное сообщение ReND » 2012-07-06 11:27:24

Да! согласен, bce не есть гуд. Грузит прерываниями одно ядро и все. Потестировался через интеловскую карточку (ibg). Ситуация с прерываниями гораздо лучше. Драйвер умеет распределять очереди по ядрам. А вот всяческие тюнинги через sysctl переменные особого результата не дали. среднее значение пакетов в серунду через NAT по результатам теста

Код: Выделить всё

netperf -H 192.168.xx.xx -t TCP_CC -l 100 -- -P,12866
TCP Connect/Close TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.xx.xx (192.168.37.187) port 12866 AF_INET
Local /Remote
Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate
bytes  Bytes  bytes    bytes   secs.    per sec

32768  65536  1        1       99.95     510.18
32768  65536
Может быть так и надо? Либо ядерный NAT больше неспособен прокачать?
И еще... как можно посмотреть созданную таблицу трансляции? Есть стандартное решение или нужно патч к libalis делать?

Ikinoki
мл. сержант
Сообщения: 70
Зарегистрирован: 2009-07-27 12:04:45

Re: Kernel NAT FreeBSD 8.2 AMD64

Непрочитанное сообщение Ikinoki » 2012-07-06 22:36:06

Во время прокачки сделайте top -PSH и вывод нам сюда покажите.

ReND
рядовой
Сообщения: 18
Зарегистрирован: 2010-12-21 13:34:08

Re: Kernel NAT FreeBSD 8.2 AMD64

Непрочитанное сообщение ReND » 2012-07-09 6:37:53

Тестовая нагрузка: 20000 уникальных соединений (пользователей)
из них удачно подключились через NAT около 8500 и количество постоянно меняется в пределах данного числа.

Код: Выделить всё

top -PSH
last pid: 96635;  load averages:  0.00,  0.00,  0.00                         up 5+12:42:21  07:25:49
254 processes: 10 running, 165 sleeping, 48 zombie, 31 waiting
CPU 0:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 3:  0.0% user,  0.0% nice,  0.0% system, 96.6% interrupt,  3.4% idle
CPU 4:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 5:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 6:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 7:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 137M Active, 87M Inact, 1364M Wired, 488K Cache, 2056M Buf, 18G Free
Swap: 4096M Total, 4096M Free

  PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root       171 ki31     0K   128K CPU7    7 132.6H 100.00% {idle: cpu7}
   11 root       171 ki31     0K   128K CPU6    6 132.6H 100.00% {idle: cpu6}
   11 root       171 ki31     0K   128K CPU2    2 132.6H 100.00% {idle: cpu2}
   11 root       171 ki31     0K   128K CPU5    5 132.4H 100.00% {idle: cpu5}
   11 root       171 ki31     0K   128K CPU1    1 132.2H 100.00% {idle: cpu1}
   11 root       171 ki31     0K   128K CPU4    4 131.9H 100.00% {idle: cpu4}
   11 root       171 ki31     0K   128K RUN     0 131.6H 100.00% {idle: cpu0}
   12 root       -68    -     0K   512K CPU3    3  18.5H 100.00% {irq257: bce0}
   11 root       171 ki31     0K   128K RUN     3 114.1H  2.98% {idle: cpu3}

Код: Выделить всё

netstat -w1 -I vlan123
            input      (vlan123)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
     21010     0     0    1487014      30343     0   43060386     0
     20268     0     0    1434911      29076     0   41196850     0
     20070     0     0    1393796      28165     0   39737964     0
     20241     0     0    1422961      28188     0   40079904     0
     20455     0     0    1424024      28441     0   40540340     0
     20161     0     0    1409656      28930     0   40731155     0
     19216     0     0    1360883      27641     0   38885333     0

Код: Выделить всё

systat -if 1
                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average

      Interface           Traffic               Peak                Total
        vlan123  in      1,416 MB/s          1,526 MB/s           83,912 GB
                 out    38,006 MB/s         40,049 MB/s            2,171 TB

        vlan122  in     38,005 MB/s         40,048 MB/s            2,170 TB
                 out     1,414 MB/s          1,524 MB/s           83,211 GB

            lo0  in      0,000 KB/s          1,136 KB/s           78,168 GB
                 out     0,000 KB/s          1,136 KB/s           78,166 GB

           bce0  in     39,422 MB/s         41,574 MB/s            2,252 TB
                 out    39,422 MB/s         41,573 MB/s            2,252 TB
при такой нагрузке сервер очень задумчивый и сбрасывает ICMP пакеты

Код: Выделить всё

1000 packets transmitted, 821 packets received, 17.9% packet loss
round-trip min/avg/max/stddev = 0.116/1.405/7.821/1.026 ms

Ikinoki
мл. сержант
Сообщения: 70
Зарегистрирован: 2009-07-27 12:04:45

Re: Kernel NAT FreeBSD 8.2 AMD64

Непрочитанное сообщение Ikinoki » 2012-07-17 23:31:59

Я бы сменил сетевуху.
Объясню, было 3 системы на БСД, одна с igb другая с em третья с бце.
Все три падали иногда, но патчами в итоге на 8ках это залаталось, вот кроме бцешки, бце просто рушилась и все и как на зло она основной было нодой с базой данных... На ней была самая высокая нагрузка.

Попробуйте потвикать интеррапты и данные bcе драйвера