Jump to content
Калькуляторы

FreeBSD + pf (нат) ipfw (firewall). PF - не справляется

p4-Cel-D 2.8+256mem FreeBSD 6.0 + pf (как нат) ipfw (как firewall)

1000 работающих юзеров в данный момент

[root@]# pfctl -s state | wc -l

6200 (кол-во сопоставлений pf nat)

[root@]# ipfw show | wc -l

3020

[root@]# ipfw show | grep pipe | wc -l

1000

[root@]# top

last pid: 26961; load averages: 0.00, 0.01, 0.00 up 13+13:19:18 17:19:26

46 processes: 1 running, 45 sleeping

CPU states: 4.3% user, 0.0% nice, 0.0% system, 52.2% interrupt, 43.5% idle

Mem: 23M Active, 128M Inact, 69M Wired, 7640K Cache, 34M Buf, 11M Free

Swap: 483M Total, 483M Free

Сетевухи интел 1000baseTX PCI. Драйвер em0. Полинг включен. HZ=1000

 

[root@]#ping xxx.xxx.xxx.xxx (ближайшую ненагруженную машину в тойже подсети)

ping -i 0.1 xxx.xxx.xxx.xxx

PING xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx): 56 data bytes

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 ttl=63 time=25.439 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=63 time=31.898 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2 ttl=63 time=32.563 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=3 ttl=63 time=25.775 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=4 ttl=63 time=27.609 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=5 ttl=63 time=30.570 ms

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=6 ttl=63 time=22.836 ms

 

потери icmp от 1 до 4%

чем выше кол-во сопоставлений pf nat - тем выше дает пинги этот роутер (пинги от/к роутера или от/к юзерам)

отключаю pf nat - пинги падают до 1-2 мс. отключаю часью юзеров - кот. натяться на этом роуторе

pfctl -s state | wc -l падает до 1500-2000 - и пинги падают до 1-2 мс

 

Как лечить ?

Share this post


Link to post
Share on other sites

кстати, по top у тебя далеко не 512 метров памяти :)

Share this post


Link to post
Share on other sites

маловата машинка для такой нагрузки - тут недалече была тема "Когда и в чем затыкается софтовый роутер" - там подробненько эти вопросы обсуждались

Share this post


Link to post
Share on other sites

2 Blackmore - мои вопросы там не обсуждались. Я вот думаю или машинка слабовато или руки кривоваты =)

Share this post


Link to post
Share on other sites

пользуем фрёвый ipnat

что такое pf сопоставления слабо себе представляю.

fwuu# ipnat -s

mapped in 2544840546 out 2714542767

added 103311333 expired 0

no memory 0 bad nat 1414867

inuse 101642

rules 112

wilds 0

 

fwuu# ipfw show | wc -l

143

 

Так мало правил, потому что они генерируются по маске и с помощью таблиц.

Вот пара правил:

01037 279689688 188335984543 pipe 37 ip from any to table(18) via em2 out

01038 304067690 155780212500 pipe 38 ip from table(18) to any via em2 in

 

Где-то на форуме это дело проскакивало. Там же объяснялось, что если много правил, то нагрузка по прерываниям сильно большая и поллинг фактически не работает.

Ищи слова "mask dst-ip 0xffffffff"

 

Например, вот отличная тема:

http://forum.nag.ru/viewtopic.php?t=14889&...fffffff&start=0

 

У меня HZ=2500.

fwuu# netstat -w 1 -d

input (Total) output

packets errs bytes packets errs bytes colls drops

13589 0 6615551 13313 0 6463091 0 0

13975 0 6642171 13696 0 6657126 0 0

13847 0 6381799 13158 0 6358238 0 0

13639 0 6797838 13588 0 6705836 0 0

 

top

CPU states: 0.8% user, 0.0% nice, 3.0% system, 1.9% interrupt, 94.4% idle

Mem: 111M Active, 475M Inact, 65M Wired, 29M Cache, 105M Buf, 63M Free

Swap: 1024M Total, 8K Used, 1024M Free

 

CPU states: 0.0% user, 0.0% nice, 0.4% system, 1.1% interrupt, 98.5% idle

Mem: 110M Active, 475M Inact, 65M Wired, 29M Cache, 105M Buf, 64M Free

Swap: 1024M Total, 8K Used, 1024M Free

 

Сетевухи такие же.

Проц Athlon 64 3200+

FreeBSD/amd64 6.1-PRERELEASE

Share this post


Link to post
Share on other sites

Используйте таблицы в ipfw kamuzon прав + попробовать

в pf для ната использовать set optimization aggressive.

 

PS. Pf натит очень хорошо

PS1. Кол-во записей в таблице трансляций pfctl -si

# pfctl -si

No ALTQ support in kernel

ALTQ related functions disabled

Status: Enabled for 78 days 20:07:15 Debug: Urgent

 

Hostid: 0x2e1662f9

 

State Table Total Rate

current entries 52376

searches 293797491002 43131.7/s

inserts 1944303411 285.4/s

removals 1944251035 285.4/s

Counters

match 205819928498 30215.9/s

bad-offset 0 0.0/s

fragment 0 0.0/s

short 176227 0.0/s

normalize 0 0.0/s

memory 0 0.0/s

Share this post


Link to post
Share on other sites

а когда используются таблицы и mask в ipfw pipe X config,

где можно задать макс кол-во создаваемых pipes, время их жизни ?

Вопрос соб-но тут

http://forum.nag.ru/viewtopic.php?t=19049

Share this post


Link to post
Share on other sites
2 Blackmore - мои вопросы там не обсуждались. Я вот думаю или машинка слабовато или руки кривоваты =)

Для оценки кривизны ручек желательно посмотреть на конфиги pf/ipfw. Так что спишем на слабоватость машинки :-)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this