Имеем:
железо: Intel S5000VSL
ОС: FreeBSD 7.1-PRERELEASE #2: Thu Dec 10 14:57:45 MSK 2009При ~110k записей всё хорошо, достигаем ~125-140к начинаются ошибки на сет. интерфейсе, чистим трансляции - ошибки исчезают.
# ipnat -s
mapped in 285037401 out 221990930
added 11096611 expired 10218253
no memory 0 bad nat 235943
inuse 129092
orphans 0
rules 9
wilds 1
hash efficiency 12.69%
bucket usage 99.97%
minimal length 0
maximal length 22
average length 7.882
TCP Entries per state
0 1 2 3 4 5 6 7 8 9 10 11
88 4735 157 2626 7079 345 65 17 36 0 43362 1505# netstat -I em0 -w 1
input (em0) output
packets errs bytes packets errs bytes colls
6306 541 6300808 5877 0 1242162 0
6736 416 6535743 6276 0 1309721 0
7738 514 8288666 6523 0 1405937 0
7630 462 7551297 6721 0 1556890 0
5207 443 4997805 4952 0 1248456 0# ipnat -CF -f /etc/ipnat.rules
128944 entries flushed from NAT table
9 entries flushed from NAT list# netstat -I em0 -w 1
input (em0) output
packets errs bytes packets errs bytes colls
3205 0 2584267 3132 0 650453 0
4704 0 4305612 4352 0 813504 0
4463 0 3898817 4223 0 856430 0# ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=1db<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,POLLING,VLAN_HWCSUM,TSO4>
ether 00:15:17:1f:e2:18
media: Ethernet 1000baseTX <full-duplex>
status: active
vlan2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:15:17:1f:e2:18
inet X.X.X.X netmask 0xfffffff8 broadcast X.X.X.X
media: Ethernet 1000baseTX <full-duplex>
status: active
vlan: 1000 parent interface: em0# ipf -T list
fr_flags min 0 max 0xffffffff current 0
fr_active min 0 max 0 current 0
fr_control_forwarding min 0 max 0x1 current 0
fr_update_ipid min 0 max 0x1 current 0
fr_chksrc min 0 max 0x1 current 0
fr_minttl min 0 max 0x1 current 4
fr_icmpminfragmtu min 0 max 0x1 current 68
fr_pass min 0 max 0xffffffff current 134217730
fr_tcpidletimeout min 0x1 max 0x7fffffff current 3600
fr_tcpclosewait min 0x1 max 0x7fffffff current 60
fr_tcplastack min 0x1 max 0x7fffffff current 60
fr_tcptimeout min 0x1 max 0x7fffffff current 300
fr_tcpclosed min 0x1 max 0x7fffffff current 60
fr_tcphalfclosed min 0x1 max 0x7fffffff current 120
fr_udptimeout min 0x1 max 0x7fffffff current 120
fr_udpacktimeout min 0x1 max 0x7fffffff current 24
fr_icmptimeout min 0x1 max 0x7fffffff current 120
fr_icmpacktimeout min 0x1 max 0x7fffffff current 12
fr_iptimeout min 0x1 max 0x7fffffff current 120
fr_statemax min 0x1 max 0x7fffffff current 4013
fr_statesize min 0x1 max 0x7fffffff current 5737
fr_state_lock min 0 max 0x1 current 0
fr_state_maxbucket min 0x1 max 0x7fffffff current 26
fr_state_maxbucket_reset min 0 max 0x1 current 1
ipstate_logging min 0 max 0x1 current 1
fr_nat_lock min 0 max 0x1 current 0
ipf_nattable_sz min 0x1 max 0x7fffffff current 16383
ipf_nattable_max min 0x1 max 0x7fffffff current 300000
ipf_natrules_sz min 0x1 max 0x7fffffff current 2047
ipf_rdrrules_sz min 0x1 max 0x7fffffff current 2047
ipf_hostmap_sz min 0x1 max 0x7fffffff current 8191
fr_nat_maxbucket min 0x1 max 0x7fffffff current 28
fr_nat_maxbucket_reset min 0 max 0x1 current 1
nat_logging min 0 max 0x1 current 1
fr_defnatage min 0x1 max 0x7fffffff current 1200
fr_defnatipage min 0x1 max 0x7fffffff current 120
fr_defnaticmpage min 0x1 max 0x7fffffff current 6
fr_nat_doflush min 0 max 0x1 current 0
ipf_proxy_debug min 0 max 0xa current 0
ipfr_size min 0x1 max 0x7fffffff current 257
fr_ipfrttl min 0x1 max 0x7fffffff current 120
ipl_suppress min 0 max 0x1 current 1
ipl_logmax min 0 max 0x7fffffff current 7
ipl_logall min 0 max 0x1 current 0
ipl_logsize min 0 max 0x80000 current 8192
ippr_ftp_debug min 0 max 0xa current 0
на конфиг ipnat можно взглянуть?
>на конфиг ipnat можно взглянуть?#
map vlan2 10.0.0.0/8 -> X.X.X.X/32 proxy port 21 ftp/tcp
map vlan2 172.16.0.0/12 -> X.X.X.X/32 proxy port 21 ftp/tcp
map vlan2 192.168.0.0/16 -> X.X.X.X/32 proxy port 21 ftp/tcp
#
map vlan2 10.0.0.0/8 -> X.X.X.X/32 icmpidmap icmp 65300:65535
map vlan2 172.16.0.0/12 -> X.X.X.X/32 icmpidmap icmp 65300:65535
map vlan2 192.168.0.0/16 -> X.X.X.X/32 icmpidmap icmp 65300:65535
#
map vlan2 10.0.0.0/8 -> X.X.X.X/32 portmap tcp/udp 1025:65299
map vlan2 172.16.0.0/12 -> X.X.X.X/32 portmap tcp/udp 1025:65299
map vlan2 192.168.0.0/16 -> X.X.X.X/32 portmap tcp/udp 1025:65299
#
У меня есть гипотеза: увеличение количества записей в "списке трансляций" усложняет операцию поиска в этом списке, как результат возрастает нагрузка на CPU, а как следствие возросшей нагрузки (на каком-то этапе) - нехватка CPU ресурсов для работы поллинга и уже следствием этого являются ошибки на интерфейса (при этом в выводе top можно наблюдать вполне незначительную нагрузку - например 20-50%).Проверить эту гипотезу можно понизив значение sysctl kern.polling.user_frac с 50 (значение по умолчанию) до, например, 10 и посмотреть, изменится ли количество ошибок на интерфейсе.
Этот параметр sysctl указывает какой процент CPU циклов необходимо резервировать поллингу для userland задач.
А помоему просто напросто ipnat достиг максимального числа трансляций. Смотреть вам нужно в сторону LARGE NAT, или что-то в этом роде точно не помню, для устранения данной проблемы. На этом сайте уже читал про данную проблему в статьях.
>А помоему просто напросто ipnat достиг максимального числа трансляций. Смотреть вам нужно
>в сторону LARGE NAT, или что-то в этом роде точно не
>помню, для устранения данной проблемы. На этом сайте уже читал про
>данную проблему в статьях.Нет, было разкомментировано и пересобрано.
# ipf -T list | grep ipf_nattable_max
ipf_nattable_max min 0x1 max 0x7fffffff current 300000
>[оверквотинг удален]
>как следствие возросшей нагрузки (на каком-то этапе) - нехватка CPU ресурсов
>для работы поллинга и уже следствием этого являются ошибки на интерфейса
>(при этом в выводе top можно наблюдать вполне незначительную нагрузку -
>например 20-50%).
>
>Проверить эту гипотезу можно понизив значение sysctl kern.polling.user_frac с 50 (значение по
>умолчанию) до, например, 10 и посмотреть, изменится ли количество ошибок на
>интерфейсе.
>Этот параметр sysctl указывает какой процент CPU циклов необходимо резервировать поллингу для
>userland задач.10 было уже выставлено. Более того, скинул доп флаги с интерфейса. Снятие флагов RXCSUM,TXCSUM,POLLING эффекта не добавило.
# ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether 00:15:17:1f:e2:18
media: Ethernet 1000baseTX <full-duplex>
status: active# ifconfig em1
em1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=1db<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,POLLING,VLAN_HWCSUM,TSO4>
ether 00:15:17:1f:e2:19
inet 10.0.238.4 netmask 0xfffffff8 broadcast 10.0.238.7
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
#
Всё решилось экстренным переходом на 8ку. Заодно сразу на 64бит.# uname -v
FreeBSD 8.0-RELEASE #3: Tue Dec 15 12:01:26 MSK 2009 root@xxx:/usr/src/sys/amd64/compile/PROXY
# ipnat -s
mapped in 26977259 out 21432558
added 1151041 expired 1006759
no memory 0 bad nat 30529
inuse 144282
orphans 0
rules 9
wilds 0
hash efficiency 22.41%
bucket usage 98.69%
minimal length 0
maximal length 14
average length 4.462
TCP Entries per state
0 1 2 3 4 5 6 7 8 9 10 11
16 17081 99 11 6391 1348 623 14 61 0 50992 1241
# netstat -w 1
input (Total) output
packets errs bytes packets errs bytes colls
37370 0 28731654 37286 0 29047299 0
44062 0 34939428 44161 0 35481436 0
41626 0 32762466 41457 0 33195127 0
43852 0 34036514 44002 0 34537510 0
45900 0 36475018 45893 0 37047454 0
48876 0 39922174 48877 0 40508594 0
# top
last pid: 2242; load averages: 1.75, 1.69, 1.61 up 0+00:43:53 14:22:46
109 processes: 11 running, 76 sleeping, 22 waiting
CPU: 0.0% user, 0.0% nice, 22.8% system, 0.0% interrupt, 77.2% idle
Mem: 34M Active, 8880K Inact, 241M Wired, 164K Cache, 43M Buf, 7602M Free
Swap: 2048M Total, 2048M Free
>[оверквотинг удален]
>
>
>
> up 0+00:43:53 14:22:46
>109 processes: 11 running, 76 sleeping, 22 waiting
>CPU: 0.0% user, 0.0% nice, 22.8% system, 0.0% interrupt,
>77.2% idle
>Mem: 34M Active, 8880K Inact, 241M Wired, 164K Cache, 43M Buf, 7602M
>Free
>Swap: 2048M Total, 2048M Freeтакая же проблема... на 7.2
сколько времени полет нормальный на 8 ке... понадобился ли дополнительный тюнинг