Продолжение.
Может кто netams юзает или скорее просто умный.
Наткнулся на какую-то тупость, не могу понять в чем дело, использую Netams на разных серверах и разных платформах многие годы, сегодня перенес всю работающую конфигурацию с FreeBSD 8.1 на этот новый шлюз под 8.2 и не могу понять что происходит, ситуация вот в чем:
Если на шлюзе запущен netams, у пользователей перестают грузиться страницы (либо ооочень медленно что-то небольшое может загрузиться), причем как-то странно, после запроса появляется в названии окна броузера тот же Яндекс, например, а сама страница дальше не грузится, просто висит, обмен данными со шлюзом осуществляется по порту 8080, на котором и работает squid. В access.log ес-но запросы пользователя имеются. Задержки и тормоза замечены и при подключении по ssh от пользователя на шлюз, если подключаться к шлюзу на реальный внешний IP-адрес внешнего интерфейса, если на внутренний, то все быстро прогружается (т.е. например с 192.168.10.50 на 192.168.10.1 — все ОК, как и должно быть). При этом если от пользователя обращаться напрямую в интернет к веб-узлу, то все летает, также нет проблем с прохождением пинга и работы почты по pop3smtp на внешние почтовые сервера.
Причем эффект наблюдается только при использовании типа data-source ip-traffic source divert (он у всех интерфейсов, смотрящих во внутренние локальные сети), т.е. когда происходит заворот проходящего трафика с помощью ipfw в netams. На внешнем же интерфейсе, где тип data-source используется libpcap, проблем таких
нет.
Что характерно, если руками удалить правило в списке правил ipfw, заворачивающее трафик в netams по конкретному внутреннему интерфейсу, через который идет обращение от пользователя — то у него все сразу начинает работать. Проверено. Т.е. что-то происходит с трафиком к squid и ssh, когда он заворачивается и
попадает в netams.
Что странно, если при запущенном netams на шлюзе попытаться остановить squid (./squid stop в /usr/local/etc/rc.d/), то он на деле не останавливается и продолжает работать, вися в памяти, если же netams не запущен, этого эффекта нет. Вот так.
Сам Netams при этом работает, трафик считает, управляется и отлично администрится через NAWT.
Короче я уже не пойму, в чем может быть дело, помогите своими идеями.
Может подтюнить в системе что еще нужно?
Еще раз, на чем все работает:
CPU: Intel(R) Core(TM) i5 CPU 760 @ 2.80GHz (2822.51-MHz 686-class CPU)
real memory = 4294967296 (4096 MB)
avail memory = 3598565376 (3431 MB)
FreeBSD 8.2-RELEASE (i386)
netams-3.4.5_1
squid-3.1.14 (также пробовал с 3.0.25_4)
8 igb iface
4 msk iface
Конфиг нетамса:
Код:
# cat netams.conf
#NeTAMS 3.4.5 (3490.1) Tue 09 Aug 2011 08:37:32 +0400
#configuration built Fri Aug 12 18:00:33 2011
#begin
#global variables configuration
debug none
language ru
user oid 07C5E7 name admin real-name … all
user oid 0750B6 name nobody real-name … all
#services configuration
service server 0
login local
listen 20001
max-conn 6
service processor
lookup-delay 60
flow-lifetime 180
policy oid 0C09DF name ip_all target proto ip
policy oid 07332D name www target proto tcp port 21 80 81 443 8080 8081 3128
policy oid 088C41 name mail target proto tcp port 25 110
policy oid 05F2AE name dns target proto udp port 53
policy oid 01664C name ssh target proto tcp port 22
policy oid 0F90E6 name icmp target proto icmp
policy oid 07B6A4 name proxy target proto tcp port 8080
policy oid 07B5DF name exclude target file /usr/local/etc/netams/exclude_hosts.txt
policy oid 064CF3 name ip target policy-and ip_all !exclude
restrict all pass local pass
auto-units 1 type user naming prefix2 user_
…
unit user oid 0AB566 name user_12.40 ip 192.168.12.40 description «Поликлиника» parent POLIKLINIKA acct-policy ip proxy mail dns
…
service storage 1
type mysql
user root
password psw
dbname netams
accept all
service data-source 0
type ip-traffic
source divert 199
rule 500 «ip from any to any via igb0»
rule 600 «ip from any to any via igb1»
rule 700 «ip from any to any via igb2»
rule 800 «ip from any to any via igb3»
rule 850 «ip from any to any via igb4»
rule 860 «ip from any to any via igb5»
service data-source 1
type libpcap
source msk0
rule 11 «ip»
service quota
soft-treshold 75
policy proxy
block-policy !proxy
notify soft owner
notify hard owner 07C5E7
notify return owner
service scheduler
oid 07371D time 5hour action «save»
service login
relogin no
#end
Сервер Asus RS160-S5, два Xeon E5420 @ 2.50GHz, четырех портовая сетевая карта intel 82571PT и встроенные (2х канальный интегрированный в чипсет контроллер + интерфейс физического уровня Intel 82563EB 10/100/1000 Мбит/с и 2 сетевых контроллера Intel 82573)
lagg0 объединяет четыре порта 82571PT и один встроенной сетевой карты. На интерфейсы lagg0 попадает мониторинг с роутера, далее в netgraph и выводить с другого lagg-интерфейса(два порта). На входящих в lagg0 интерфейсах есть ошибки из-за cpu:
FreeBSD 7.2-RELEASE # ifconfig em0 em0: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> metric 0 mtu 1500 options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM> ether 00:15:17:7f:57:b0 media: Ethernet autoselect (1000baseTX <full-duplex>) status: active lagg: laggdev lagg0 # netstat -w 1 -I em0 input (em0) output packets errs bytes packets errs bytes colls 125071 34001 77377039 0 0 0 0 127231 32662 78761625 0 0 0 0 129571 29724 81239227 0 0 0 0 125599 32527 78889850 0 0 0 0 #netstat -w 1 input (Total) output packets errs bytes packets errs bytes colls 985841 110710 600567974 780195 0 313484948 0 983657 120779 594569491 777140 0 306421389 0 996726 115091 602176326 789737 0 312895661 0 last pid: 3584; load averages: 4.31, 4.38, 4.37 up 0+01:41:59 17:39:14 99 processes: 13 running, 72 sleeping, 14 waiting CPU 0: 0.0% user, 0.0% nice, 100% system, 0.0% interrupt, 0.0% idle CPU 1: 0.0% user, 0.0% nice, 100% system, 0.0% interrupt, 0.0% idle CPU 2: 0.0% user, 0.0% nice, 3.5% system, 3.5% interrupt, 93.0% idle CPU 3: 0.0% user, 0.0% nice, 54.4% system, 0.0% interrupt, 45.6% 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, 100% system, 0.0% interrupt, 0.0% idle CPU 6: 0.0% user, 0.0% nice, 8.8% system, 0.0% interrupt, 91.2% idle CPU 7: 0.0% user, 0.0% nice, 75.4% system, 0.0% interrupt, 24.6% idle Mem: 58M Active, 26M Inact, 109M Wired, 144K Cache, 28M Buf, 7731M Free Swap: 4096M Total, 4096M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 31 root 1 -68 - 0K 16K CPU5 5 99:24 100.00% em2 taskq 29 root 1 -68 - 0K 16K CPU0 0 99:21 100.00% em0 taskq 30 root 1 -68 - 0K 16K CPU1 1 98:57 100.00% em1 taskq 14 root 1 171 ki31 0K 16K CPU4 4 91:29 100.00% idle: cpu4 16 root 1 171 ki31 0K 16K CPU2 2 78:47 93.65% idle: cpu2 12 root 1 171 ki31 0K 16K CPU6 6 94:44 91.06% idle: cpu6 39 root 1 -68 - 0K 16K CPU7 7 66:57 71.04% em7 taskq 32 root 1 -68 - 0K 16K - 3 62:11 64.79% em3 taskq 15 root 1 171 ki31 0K 16K RUN 3 38:53 34.03% idle: cpu3 11 root 1 171 ki31 0K 16K RUN 7 34:16 31.84% idle: cpu7 38 root 1 -68 - 0K 16K - 6 6:23 10.21% em6 taskq 34 root 1 -68 - 0K 16K - 2 8:07 7.76% em5 taskq 19 root 1 -32 - 0K 16K WAIT 2 1:27 1.22% swi4: clock sio 18 root 1 171 ki31 0K 16K RUN 0 7:38 0.00% idle: cpu0 13 root 1 171 ki31 0K 16K RUN 5 6:27 0.00% idle: cpu5 17 root 1 171 ki31 0K 16K RUN 1 5:12 0.00% idle: cpu1 21 root 1 -44 - 0K 16K WAIT 4 3:51 0.00% swi1: net
не помогло: polling 1000MHz,2000MHz;-tso;драйвера с сайта intel 6.9.20;изменение dev.em.0.rx_*
есть ли софтовое решение данной проблемы или какую выбрать железку/сетевку
cat vmstat_z
ITEM SIZE LIMIT USED FREE REQ FAIL SLEEP
UMA Kegs: 208, 0, 97, 5, 97, 0, 0
UMA Zones: 896, 0, 97, 3, 97, 0, 0
UMA Slabs: 568, 0, 15643, 23,19956573, 0, 0
UMA RCntSlabs: 568, 0, 21947, 5, 22104, 0, 0
UMA Hash: 256, 0, 1, 14, 3, 0, 0
16 Bucket: 152, 0, 56, 94, 141, 0, 0
32 Bucket: 280, 0, 95, 73, 196, 8, 0
64 Bucket: 536, 0, 85, 69, 232, 117, 0
128 Bucket: 1048, 0, 19202, 1, 44019,1567, 0
VM OBJECT: 216, 0, 46700, 442, 1227045, 0, 0
MAP: 232, 0, 7, 25, 7, 0, 0
KMAP ENTRY: 120, 187023, 66, 1081,58744741, 0, 0
MAP ENTRY: 120, 0, 2021, 490, 1900432, 0, 0
fakepg: 120, 0, 0, 0, 0, 0, 0
mt_zone: 4112, 0, 260, 3, 260, 0, 0
16: 16, 0, 4496, 880,183121940, 0, 0
32: 32, 0, 15659, 3632,13923378308, 0, 0
64: 64, 0, 14391, 1289,51210201599, 0, 0
128: 128, 0, 177023, 3560,47188173, 0, 0
256: 256, 0, 42211, 1049,34556469, 0, 0
512: 512, 0, 7829, 669, 571527, 0, 0
1024: 1024, 0, 68, 164, 944386, 0, 0
2048: 2048, 0, 2433, 185, 22821, 0, 0
4096: 4096, 0, 10658, 452, 567699, 0, 0
Files: 80, 0, 1358, 622, 4180013, 0, 0
TURNSTILE: 136, 0, 415, 165, 490, 0, 0
umtx pi: 96, 0, 0, 0, 0, 0, 0
MAC labels: 40, 0, 0, 0, 0, 0, 0
PROC: 1160, 0, 58, 74, 60531, 0, 0
THREAD: 1112, 0, 202, 212, 390889, 0, 0
SLEEPQUEUE: 80, 0, 415, 165, 490, 0, 0
VMSPACE: 392, 0, 43, 77, 60517, 0, 0
cpuset: 72, 0, 18, 132, 19, 0, 0
audit_record: 960, 0, 0, 0, 0, 0, 0
mbuf_packet: 256, 0, 42409, 1239,25474121559, 0, 0
mbuf: 256, 0, 15270, 347,42188577856, 0, 0
mbuf_cluster: 2048, 131072, 43648, 246,2459309673, 0, 0
mbuf_jumbo_page: 4096, 12800, 0, 0, 0, 0, 0
mbuf_jumbo_9k: 9216, 6400, 0, 0, 0, 0, 0
mbuf_jumbo_16k: 16384, 3200, 0, 0, 0, 0, 0
mbuf_ext_refcnt: 4, 0, 0, 672, 180, 0, 0
NetGraph items: 72, 65540, 2, 404,48080235, 0, 0
NetGraph data items: 72, 65540, 3131, 378,25134613968, 0, 0
g_bio: 232, 0, 3, 4189, 855393, 0, 0
ttyinq: 160, 0, 300, 108, 855, 0, 0
ttyoutq: 256, 0, 157, 53, 446, 0, 0
ata_request: 328, 0, 1, 143, 284755, 0, 0
ata_composite: 336, 0, 0, 0, 0, 0, 0
VNODE: 480, 0, 80637, 659, 1059777, 0, 0
VNODEPOLL: 112, 0, 1, 98, 2, 0, 0
NAMEI: 1024, 0, 0, 112, 6467244, 0, 0
S VFS Cache: 108, 0, 57362, 26953, 985729, 0, 0
L VFS Cache: 328, 0, 24246, 210, 107691, 0, 0
DIRHASH: 1024, 0, 18, 306, 1982, 0, 0
NCLNODE: 560, 0, 0, 0, 0, 0, 0
Mountpoints: 768, 0, 5, 10, 5, 0, 0
pipe: 728, 0, 11, 94, 49017, 0, 0
ksiginfo: 112, 0, 123, 405, 25407, 0, 0
itimer: 344, 0, 0, 22, 1, 0, 0
KNOTE: 128, 0, 0, 174, 3530, 0, 0
pfsrctrpl: 152, 60000, 0, 0, 0, 0, 0
pfrulepl: 936, 0, 11, 1, 11, 0, 0
pfstatepl: 288, 900003, 42922, 781278,1299829160, 0, 0
pfstatekeypl: 288, 0, 67878, 825365,1687411796, 0, 0
pfstateitempl: 288, 0, 67878, 825391,1687116590, 0, 0
pfaltqpl: 240, 0, 0, 0, 0, 0, 0
pfpooladdrpl: 88, 0, 3, 81, 3, 0, 0
pfrktable: 1296, 1002, 2, 4, 4, 0, 0
pfrkentry: 160, 400008, 6, 42, 6, 0, 0
pffrent: 32, 300071, 0, 1919,89489682, 0, 0
pffrag: 80, 0, 0, 990,44401481, 0, 0
pffrcache: 80, 10035, 0, 0, 0, 0, 0
pffrcent: 24, 50022, 0, 0, 0, 0, 0
pfstatescrub: 40, 0, 0, 0, 0, 0, 0
pfiaddrpl: 120, 0, 0, 0, 0, 0, 0
pfospfen: 112, 0, 700, 26, 700, 0, 0
pfosfp: 40, 0, 410, 94, 410, 0, 0
pfsync: 88, 0, 0, 0, 0, 0, 0
socket: 680, 131076, 1265, 583, 1272372, 0, 0
ipq: 56, 4158, 0, 0, 0, 0, 0
udp_inpcb: 392, 131080, 7, 323, 736199, 0, 0
udpcb: 16, 131208, 7, 833, 736199, 0, 0
tcp_inpcb: 392, 131080, 12, 508, 528151, 0, 0
tcpcb: 976, 131072, 12, 84, 528151, 0, 0
tcptw: 72, 26250, 0, 600, 503119, 0, 0
syncache: 152, 15375, 0, 150, 516530, 0, 0
hostcache: 136, 15372, 2, 138, 10, 0, 0
tcpreass: 40, 8232, 0, 252, 6, 0, 0
sackhole: 32, 0, 0, 202, 2, 0, 0
ripcb: 392, 131080, 1, 29, 5, 0, 0
unpcb: 240, 131072, 23, 105, 6792, 0, 0
rtentry: 200, 0, 7110, 3435, 100387, 0, 0
IPFW dynamic rule: 120, 0, 0, 0, 0, 0, 0
divcb: 392, 131080, 0, 0, 0, 0, 0
selfd: 56, 0, 441, 2268,25045315243, 0, 0
SWAPMETA: 288, 116519, 0, 0, 0, 0, 0
FFS inode: 168, 0, 80604, 576, 1059698, 0, 0
FFS1 dinode: 128, 0, 0, 0, 0, 0, 0
FFS2 dinode: 256, 0, 80604, 606, 1059698, 0, 0
Появились дисконекты, завышения пингов .
Схема сети: локальные роутеры занимаются шейпингом клиентов(ipfw + pipe + tablearg) , потом траф идет на сервер NAT(pf nat), с него патч идет непосредственно в сервер BGP(quagga + ipfw), а дальше в инет.
Сервера: На ОС FreeBSD 7.0 (в ядре вырублены левые дрова и вшит фаервол).
Сетевые Intel 1000MT Desctop.
Проц Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz. ОЗУ -2G
Трафик не такой больой , железо должно нормально справляться.
CPU загружается в пике не более чем по 60% оба ядра (распаралеливание происходит нормально)
Для сетевых , это тоже вроде не предел… (250Mb/s, 30-35k pps, порядка 80k сессий )
В pf на нат отрублен scrub.
Почему берутся эти ошибки?
Чем отличается Error и Discards? В каких случаях возникают ошибки in и out (особенно связка маскарад(нат) net0 и Mart (bgp) net1, которые соединены напрямую патчем. )
Где может быть узкое место?
Куда еще можно покопать ??
Завышения пингов начинаются на сервере NAT. net0 — в сторону инета , net1 — в сторону локальной сети
сыпятся ошибки