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

dadv, смущает именно то, что такая же конфигурация на E3-1270 справляется более, чем лучше.

ОК, попробую для чистоты эксперимента с pf nat перейти на ipfw nat. Правда была уже одна попытка, неудачная. Может что то изменилось с тех пор, может просто не допилил, как надо.

Что можете сказать по поводу dummynet? Стоит ли переходить на тот же ng_car ?

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


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

Могу добавить только одно - пробуйте

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


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

Без отказа от PF тут оптимизировать ничего не получится. Лучше попробуйте ipfw nat, если проблемы будут оставаться - можно будет в этом же тредике пооптимизировать систему/рулсет.

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


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

Попробовал перейти на ipfw nat , результат был хороший. По top загрузка от dummynet упала почти в ноль, по данным из скрипта от dadv - с 60% до 30-40%. Это был еще не совсем ЧНН. В ближайшее время переделаем скрипты на роутере, чтобы использовал ipfw nat, да и вообще оптимизировать их надо, и посмотрим, как будет общая загрузка + производительность.

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


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

Запустил бордер с Freebsd 9.1 . Карта Intel 82599 X520-da2 . На сервере только PF NAT(Натимм пулом адресом /26) и немного роутинга . Процессор Intel® Xeon® CPU E31240 @ 3.30GHz

Сервер HP ProLiant DL120 G7 Partnumber 628692-421 . Посоветйте железо , чтобы отмолотить более > 4 гбит (Rx)

 

top -SHPI

last pid: 86197;  load averages:  4.56,  4.19,  4.19              up 1+02:28:28  20:55:09
137 processes: 8 running, 98 sleeping, 31 waiting
CPU 0:  0.0% user,  0.0% nice,  3.0% system, 68.7% interrupt, 28.4% idle
CPU 1:  0.0% user,  0.0% nice,  1.5% system, 67.2% interrupt, 31.3% idle
CPU 2:  0.0% user,  0.0% nice,  1.5% system, 43.3% interrupt, 55.2% idle
CPU 3:  0.0% user,  0.0% nice,  3.0% system, 52.2% interrupt, 44.8% idle
Mem: 116M Active, 259M Inact, 1472M Wired, 31M Cache, 210M Buf, 63M Free
Swap: 4096M Total, 4096M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
  11 root       155 ki31     0K    64K RUN     2  21.3H 46.58% idle{idle: cpu2}
  11 root       155 ki31     0K    64K RUN     3  23.1H 45.75% idle{idle: cpu3}
  12 root       -92    -     0K   544K RUN     0 116:02 38.67% intr{irq265: ix0:que }
  12 root       -92    -     0K   544K CPU0    0 117:41 36.47% intr{irq264: ix0:que }
  12 root       -92    -     0K   544K CPU1    1 114:19 33.25% intr{irq267: ix0:que }
  12 root       -92    -     0K   544K WAIT    1 115:09 33.15% intr{irq266: ix0:que }
  11 root       155 ki31     0K    64K CPU1    1  20.4H 32.08% idle{idle: cpu1}
  12 root       -92    -     0K   544K WAIT    2  88:09 27.88% intr{irq269: ix1:que }
  11 root       155 ki31     0K    64K RUN     0  21.5H 26.27% idle{idle: cpu0}
  12 root       -92    -     0K   544K WAIT    3  91:16 25.78% intr{irq271: ix1:que }
  12 root       -92    -     0K   544K WAIT    3  90:05 24.27% intr{irq272: ix1:que }
  12 root       -92    -     0K   544K WAIT    2  87:54 24.07% intr{irq270: ix1:que }

 

netstat -w1 -h

root@gate_rnet:/root # netstat -w1 -h
           input        (Total)           output
  packets  errs idrops      bytes    packets  errs      bytes colls
     321k     0     0       241M       321k     0       236M     0
     324k     0     0       245M       324k     0       241M     0
     331k     0     0       249M       330k     0       251M     0
     324k     0     0       243M       324k     0       246M     0

 

PF OK - states: 910183 (50.6% - limit: 1800000)

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


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

что то маловато для такой нагрузки на проц.

 

наш простой i7-3770 как НАТ срв дает такие данные:

 

531k 0 0 447M 526k 0 446M 0 0

516k 0 0 433M 511k 0 432M 0 0

517k 0 0 434M 512k 0 433M 0 0

518k 0 0 435M 513k 0 434M 0 0

545k 0 0 458M 540k 0 457M 0 0

513k 0 0 428M 508k 0 428M 0 0

 

при:

 

last pid: 80973; load averages: 3.86, 3.40, 3.46 up 32+07:36:58 00:10:00

107 processes: 7 running, 76 sleeping, 24 waiting

CPU 0: 0.0% user, 0.0% nice, 5.9% system, 73.5% interrupt, 20.6% idle

CPU 1: 0.0% user, 0.0% nice, 0.0% system, 67.6% interrupt, 32.4% idle

CPU 2: 0.0% user, 0.0% nice, 0.0% system, 64.7% interrupt, 35.3% idle

CPU 3: 0.0% user, 0.0% nice, 0.0% system, 58.8% interrupt, 41.2% idle

Mem: 24M Active, 196M Inact, 1264M Wired, 1207M Buf, 10G Free

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


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

Может потому , что у меня одна планка памяти стоит(2Гб)? Азамат, вы чем натите? И какой у вас проц?

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

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


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

выше сразу написал:

 

наш простой i7-3770 как НАТ срв дает такие данные

 

ipfw nat

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

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


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

выше сразу написал:

 

наш простой i7-3770 как НАТ срв дает такие данные

 

ipfw nat

Вы натите пулом адресов? можете показать конфиг ipfw nat . Попробую впилить и проверить разницу потив pf nat

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


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

вот выдержка из файла в автозагрузке (в таблице 40 ip адреса для НАТ instances, в таблице 30 "серые" подсети , которые натятся):

 

таблица 30 заполняется примерно таким образом:

${fwcmd} table 30 add 192.168.59.0/24 81

${fwcmd} table 30 add 192.168.46.0/24 82

 

таблица 40 заполняется скриптом

# IP POOL at table 40

START_PREFIX="/sbin/ipfw table 40 add xxx.xxx.xxx"

 

NUMBER=0

while [ $NUMBER -lt 123 ]; do

NUMBER=$(($NUMBER+1))

$START_PREFIX.$NUMBER $NUMBER

done

 

 

 

# NAT

#

NUMBER2=0

while [ $NUMBER2 -lt 100 ]; do

NUMBER2=$(($NUMBER2+1))

/sbin/ipfw nat $NUMBER2 config ip xxx.xxx.xxx.$NUMBER2 reset same_ports deny_in

done

 

${fwcmd} add 20100 nat tablearg ip from table\(30\) to any out via ${ext_if}

${fwcmd} add 20200 nat tablearg ip from any to table\(40\) in via ${ext_if}

 

 

На сейчас показатели такие:

 

input (Total) output

packets errs idrops bytes packets errs bytes colls drops

631k 0 0 496M 626k 0 493M 0 0

627k 1 0 491M 619k 0 493M 0 0

629k 0 0 493M 622k 0 492M 0 0

607k 0 0 474M 600k 0 470M 0 0

618k 0 0 483M 611k 0 486M 0 0

615k 0 0 480M 608k 0 480M 0 0

635k 0 0 503M 627k 0 503M 0 0

 

На графике потолок был 3.6Гбит/с (IN) / 825Мбит/с (Out) через ix0, похоже процессора впритык хватит на 4Гбит/с IN, что себя вполне окупает.

 

Утилизация процессора:

last pid: 84751; load averages: 5.35, 5.50, 5.59 up 33+05:42:15 22:15:17

107 processes: 8 running, 75 sleeping, 24 waiting

CPU 0: 0.0% user, 0.0% nice, 8.2% system, 75.5% interrupt, 16.3% idle

CPU 1: 0.0% user, 0.0% nice, 6.1% system, 83.7% interrupt, 10.2% idle

CPU 2: 0.0% user, 0.0% nice, 6.1% system, 75.5% interrupt, 18.4% idle

CPU 3: 0.0% user, 0.0% nice, 2.0% system, 79.6% interrupt, 18.4% idle

Mem: 24M Active, 187M Inact, 1274M Wired, 1207M Buf, 10G Free

Swap: 2048M Total, 2048M Free

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

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


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

Народ, а сколько pps на 10ке у вас промолачивает? у меня тут мысль о резервации пограничного роутероа, но там порядка 400к pps сейчас, планируется до 600-700к.

Надо чтобы можно было присекать приходящие ddos.

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


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

По поводу ipfw nat:

на pf использовали правило редиректа вида

rdr pass on vlan19 inet proto tcp from <blocked_clients> to ! <servers> port = http -> 1.2.3.4 port 8000

Для редиректа заблокированных пользователей на страницу "Заплати". Как сделать правило такого редиректа на ipfw nat?

fwd не подходит, ибо меняет только nexthop.

redirect_port как бы да, но судя по манам и тестам, редиректит только пакеты, которые приходят с dst ip инстанса НАТа.

Подозреваю, что надо использовать как то reverse, но пока тесты и курение манов не дали прозрения.

Подскажите, пожалуйста, кто поднимал такую задачу на ipfw nat.

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


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

ipfw add 500 fwd 1.2.3.4,8000 tcp from table(32) to any dst-port 80,443 via ng*

 

?

Изменено пользователем fenix-vt

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


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

ipfw add 500 fwd 1.2.3.4,8000 tcp from table(32) to any dst-port 80,443 via ng*

 

?

я форвардю на 127.0.0.1,80 а 127.0.0.1,80 слушает nginx(и ngnix ридект на ссылку сайт.рф/баланс) . fwd работает только если IP веб-сервера в одном броадкаст домене с NAS.

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

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


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

Хотелось бы без fwd, чтобы не поднимать на каждом NAS nginx. Наверняка кто-нибудь использует конструкцию без fwd.

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


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

ipfw add 500 fwd 1.2.3.4,8000 tcp from table(32) to any dst-port 80,443 via ng*

 

?

я форвардю на 127.0.0.1,80 а 127.0.0.1,80 слушает nginx(и ngnix ридект на ссылку сайт.рф/баланс) . fwd работает только если IP веб-сервера в одном броадкаст домене с NAS.

Хмм, т.е. fwd не просто меняет next-hop (т.е. по сути dst mac address), но и dst ip? Если так, то дальше можно и redirect_port прикрутить.

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


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

Хмм, т.е. fwd не просто меняет next-hop (т.е. по сути dst mac address), но и dst ip?

man ipfw:

             The fwd action does not change the contents of the packet at all.
            In particular, the destination address remains unmodified, so
            packets forwarded to another system will usually be rejected by
            that system unless there is a matching rule on that system to
            capture them.  For packets forwarded locally, the local address
            of the socket will be set to the original destination address of
            the packet.  This makes the netstat(1) entry look rather weird
            but is intended for use with transparent proxy servers.

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


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

Мы для редиректа держим отдельный natd на VLAN сервере (до НАТ).

трафика обычно не много, поэтому нагрузка незаметна.

 

/sbin/natd -proxy_rule port 80 server ${billing_IP}:81 -p 3388 yes -a ${int_IP}

 

До этих правил пропускается трафик разрешенных пользователей, потом остальной трафик на 80 порт разворачивается.

 

divert 3388 tcp from any to not ${billing_IP} dst-port 80 out via ix0

divert 3388 tcp from ${billing_IP} 81 to any in via em0

 

 

Ну и на билинге сама страница с оповещенем вешается на 81 порт.

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

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


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

ipfw fwd заюзать для этих целей не получится, т.к. при попадании в это правило пакет выходит из ipfw (pass).

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


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

Хотелось бы без fwd, чтобы не поднимать на каждом NAS nginx. Наверняка кто-нибудь использует конструкцию без fwd.

 

Прекрасно работает такая конструкция.

На нас, на пример, каждом BRASе поднято одно правило:

fwd 10.0.0.1 ip from 172.16.5.0/24 to any

(Должникам выдается такой пул, если выдаются реальные -- используйте таблицу)

А на отдельностоящем хосте 10.0.0.1 поднято.... да что угодно, у нас это транспарент прокси. Вы можете поставить nginx, apache, etc

 

В man'е белым по черному написано: fwd | forward ipaddr | tablearg[,port] Change the next-hop on matching packets to ipaddr, which can be an IP address or a host name.

...

If ipaddr is not a local address, then the port number (if specified) is ignored, and the packet will be forwarded to the remote

address, using the route as found in the local routing table for that IP.

 

бегло переводя на язык русских админов:

1. некстхоп МЕНЯЕТСЯ.

2. если некстхоп -- чужая тачка, то порт будет проигнорирован, но роут на этот адрес ДОЛЖЕН присутствовать в системе.

 

P.S. забыл добавить: на удаленном хосте (10.0.0.1) тоже должно быть правило вида:

fwd 127.0.0.1,3128 tcp from 172.16.5.0/24 to any dst-port 80

 

ну и проксисервер (или http-сервер), который слушает порт 3128.

 

все отлично работает уже около 5 лт :)

Изменено пользователем fenix-vt

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


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

Я имел в виду, что не получится конструкция с fwd и дальнейшим redirect_port.

Сейчас курю маны на предмет ng_nat и proxyrule.

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


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

Я имел в виду, что не получится конструкция с fwd и дальнейшим redirect_port.

Сейчас курю маны на предмет ng_nat и proxyrule.

может я прослушал. А чем мешает слушать 127.0.0.1 например nginx. и при обращении редиректить на ваш веб сервер?

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

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


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

Я имел в виду, что не получится конструкция с fwd и дальнейшим redirect_port.

Сейчас курю маны на предмет ng_nat и proxyrule.

может я прослушал. А чем мешает слушать 127.0.0.1 например nginx. и при обращении редиректить на ваш веб сервер?

nginx не подходит, т.к. есть необходимость перенаправлять не только http трафик.

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


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

Я имел в виду, что не получится конструкция с fwd и дальнейшим redirect_port.

Сейчас курю маны на предмет ng_nat и proxyrule.

 

ng_nat, редирект 80-порта для table(10) на XXX.XXX.XXX.XXX:81

 

netgraph:

 

mkpeer ipfw: nat 100 out

name ipfw:100 nat

connect ipfw: nat: 101 in

msg nat: setaliasaddr YYY.YYY.YYY.YYY

msg nat: setmode {flags=0x60 mask=0xff}

msg nat: proxyrule "type no_encode port 80 server XXX.XXX.XXX.XXX:81 proto tcp"

 

ipfw:

 

netgraph tablearg ip from table(10) to any dst-port 80

netgraph 100 ip from XXX.XXX.XXX.XXX to any src-port 81

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


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

DemYaN, благодарю, подобные примеры и нагугливал. Только в правилах ipfw должно быть так:

netgraph 100 ip from table(10) to any dst-port 80
netgraph 101 ip from XXX.XXX.XXX.XXX to any src-port 81

Таким образом редирект заработал.

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


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

Join the conversation

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

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

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

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

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

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

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