John_obn Posted February 22, 2013 Author Posted February 22, 2013 dadv, смущает именно то, что такая же конфигурация на E3-1270 справляется более, чем лучше. ОК, попробую для чистоты эксперимента с pf nat перейти на ipfw nat. Правда была уже одна попытка, неудачная. Может что то изменилось с тех пор, может просто не допилил, как надо. Что можете сказать по поводу dummynet? Стоит ли переходить на тот же ng_car ? Вставить ник Quote
dadv Posted March 1, 2013 Posted March 1, 2013 Могу добавить только одно - пробуйте Вставить ник Quote
bird_of_Luck Posted March 3, 2013 Posted March 3, 2013 Без отказа от PF тут оптимизировать ничего не получится. Лучше попробуйте ipfw nat, если проблемы будут оставаться - можно будет в этом же тредике пооптимизировать систему/рулсет. Вставить ник Quote
John_obn Posted March 5, 2013 Author Posted March 5, 2013 Попробовал перейти на ipfw nat , результат был хороший. По top загрузка от dummynet упала почти в ноль, по данным из скрипта от dadv - с 60% до 30-40%. Это был еще не совсем ЧНН. В ближайшее время переделаем скрипты на роутере, чтобы использовал ipfw nat, да и вообще оптимизировать их надо, и посмотрим, как будет общая загрузка + производительность. Вставить ник Quote
roysbike Posted March 15, 2013 Posted March 15, 2013 Запустил бордер с 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) Вставить ник Quote
Azamat Posted March 15, 2013 Posted March 15, 2013 что то маловато для такой нагрузки на проц. наш простой 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 Вставить ник Quote
roysbike Posted March 15, 2013 Posted March 15, 2013 (edited) Может потому , что у меня одна планка памяти стоит(2Гб)? Азамат, вы чем натите? И какой у вас проц? Edited March 15, 2013 by roysbike Вставить ник Quote
Azamat Posted March 15, 2013 Posted March 15, 2013 (edited) выше сразу написал: наш простой i7-3770 как НАТ срв дает такие данные ipfw nat Edited March 15, 2013 by Azamat Вставить ник Quote
roysbike Posted March 15, 2013 Posted March 15, 2013 выше сразу написал: наш простой i7-3770 как НАТ срв дает такие данные ipfw nat Вы натите пулом адресов? можете показать конфиг ipfw nat . Попробую впилить и проверить разницу потив pf nat Вставить ник Quote
Azamat Posted March 16, 2013 Posted March 16, 2013 (edited) вот выдержка из файла в автозагрузке (в таблице 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 Edited March 16, 2013 by Azamat Вставить ник Quote
Megas Posted March 17, 2013 Posted March 17, 2013 Народ, а сколько pps на 10ке у вас промолачивает? у меня тут мысль о резервации пограничного роутероа, но там порядка 400к pps сейчас, планируется до 600-700к. Надо чтобы можно было присекать приходящие ddos. Вставить ник Quote
John_obn Posted March 17, 2013 Author Posted March 17, 2013 По поводу 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. Вставить ник Quote
fenix-vt Posted March 17, 2013 Posted March 17, 2013 (edited) ipfw add 500 fwd 1.2.3.4,8000 tcp from table(32) to any dst-port 80,443 via ng* ? Edited March 17, 2013 by fenix-vt Вставить ник Quote
roysbike Posted March 17, 2013 Posted March 17, 2013 (edited) 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. Edited March 17, 2013 by roysbike Вставить ник Quote
John_obn Posted March 17, 2013 Author Posted March 17, 2013 Хотелось бы без fwd, чтобы не поднимать на каждом NAS nginx. Наверняка кто-нибудь использует конструкцию без fwd. Вставить ник Quote
John_obn Posted March 17, 2013 Author Posted March 17, 2013 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 прикрутить. Вставить ник Quote
boco Posted March 18, 2013 Posted March 18, 2013 Хмм, т.е. 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. Вставить ник Quote
Azamat Posted March 18, 2013 Posted March 18, 2013 (edited) Мы для редиректа держим отдельный 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 порт. Edited March 18, 2013 by Azamat Вставить ник Quote
John_obn Posted March 18, 2013 Author Posted March 18, 2013 ipfw fwd заюзать для этих целей не получится, т.к. при попадании в это правило пакет выходит из ipfw (pass). Вставить ник Quote
fenix-vt Posted March 18, 2013 Posted March 18, 2013 (edited) Хотелось бы без 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 лт :) Edited March 18, 2013 by fenix-vt Вставить ник Quote
John_obn Posted March 18, 2013 Author Posted March 18, 2013 Я имел в виду, что не получится конструкция с fwd и дальнейшим redirect_port. Сейчас курю маны на предмет ng_nat и proxyrule. Вставить ник Quote
roysbike Posted March 18, 2013 Posted March 18, 2013 (edited) Я имел в виду, что не получится конструкция с fwd и дальнейшим redirect_port. Сейчас курю маны на предмет ng_nat и proxyrule. может я прослушал. А чем мешает слушать 127.0.0.1 например nginx. и при обращении редиректить на ваш веб сервер? Edited March 18, 2013 by roysbike Вставить ник Quote
John_obn Posted March 18, 2013 Author Posted March 18, 2013 Я имел в виду, что не получится конструкция с fwd и дальнейшим redirect_port. Сейчас курю маны на предмет ng_nat и proxyrule. может я прослушал. А чем мешает слушать 127.0.0.1 например nginx. и при обращении редиректить на ваш веб сервер? nginx не подходит, т.к. есть необходимость перенаправлять не только http трафик. Вставить ник Quote
DemYaN Posted March 18, 2013 Posted March 18, 2013 Я имел в виду, что не получится конструкция с 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 Вставить ник Quote
John_obn Posted March 20, 2013 Author Posted March 20, 2013 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 Таким образом редирект заработал. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.