[РЕШЕНО] ipt_netflow и bad aggregation rule

Приветствую всех
Есть сервер которому в ближайшем будущем суждено обзавестись netflow коллектором.
До этого использовали пропатченный ulog, но он грузит в полку одно ядро двухъядерного Xeon 3ГГц при загрузке порядка 120М.
Новый сервак с процом 2ГГц, и поэтому рассматриваются другие netflow коллекторы.
Попробовал ipt_netflow.
Вне зависимости от версии (1.4-1.6) получается одна и та же ошибка и ничего не сливается.
Jun 14 13:24:00 mail kernel: [ 9561.568849] ipt_netflow version 1.4 (8192 buckets)
Jun 14 13:24:00 mail kernel: [ 9561.568954] netflow: registered: /proc/net/stat/ipt_netflow
Jun 14 13:24:00 mail kernel: [ 9561.569009] netflow: registered: sysctl net.netflow
Jun 14 13:24:00 mail kernel: [ 9561.569022] netflow: added destination 127.0.0.1:9055
Jun 14 13:24:00 mail kernel: [ 9561.569025] netflow: bad aggregation rule: none (ignoring)
Jun 14 13:24:00 mail kernel: [ 9561.569028] ipt_netflow loaded.

О себе:

Portage 2.1.6.13 (default/linux/amd64/2008.0/server, gcc-4.3.2, glibc-2.8_p20080602-r1, 2.6.27-gentoo-r8 x86_64)
=================================================================
System uname: 
Timestamp of tree: Thu, 11 Jun 2009 07:00:01 +0000
app-shells/bash:     3.2_p39
dev-lang/python:     2.4.4-r13, 2.5.4-r2
dev-python/pycrypto: 2.0.1-r6
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.6-r2
sys-devel/autoconf:  2.63
sys-devel/automake:  1.5, 1.6.3, 1.7.9-r1, 1.9.6-r2, 1.10.2
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.27-r2
ACCEPT_KEYWORDS="amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -mmmx -msse -msse2 -msse3 -mssse3 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /var/bind"
CONFIG_PROTECT_MASK="/etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-march=core2 -O2 -mmmx -msse -msse2 -msse3 -mssse3 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://gentoo.kiev.ua/ftp "
LANG="ru_RU.UTF8"
LC_ALL=""
LDFLAGS="-Wl,-O1"
LINGUAS="ru en"
MAKEOPTS="-j 6"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete
--stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="acl amd64 apache2 berkdb bzip2 cli cracklib crypt cups dri fortran fuse gd gdbm gpm iconv isdnlog jpeg mailwrapper midi mmx mudflap multilib mysql ncurses nls nptl nptlonly openmp pam pcre perl png pppd python readline reflection session snmp spl sse sse2 ssl ssse3 svg sysfs tcpd threads tiff truetype unicode xml xorg zlib"
 ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_D
EVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="ru en" USERLAND="GNU"
VIDEO_CARDS="fbdev glint i810 intel mach64 mga neomagic nv r128 radeon savage sis tdfx trident vesa vga via vmware voodoo"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

Так же пробовал собирать с ядрами 2.6.28-r5 и 2.6.29-r5 - эффект тот же.
net-firewall/iptables-1.4.2-r2

Кто не пользовался ipt_netflow - также предложите свой вариант netflow-коллектора, который бы принимал все, что ему сливает iptables либо более скромный в аппетитах коллектор.

ipcad не пробовали с

ipcad не пробовали с прослушкой нужных интерфейсов?

Пробовал как замену ULOG -

Пробовал как замену ULOG - терял много-много (до 30%) по сравнению с ulogd. Хотя и не прожорлив.
Слушать интерфейсы мне не выход т.к. через этот же интерфейс будет много бесплатного трафика бегать и лишнюю нагрузку на flowcapture (тоже прожорливый товарищ) давать не хочется. А в текущем варианте (iptables) я сам выбираю что сливать, а что не стоит.

Сейчас вроде покрутил и на ядре 2.6.27-r8 трафик сейчас бегает.
А по поводу матюка на bad aggregation rule - автор модуля сказал что это нормальное поведение.
Итого сейчас провожу тестирование ipt_netflow на малых нагрузках.

Нащяльника, мая сервира паставиль, фрибизьдя инсталя сделаль, апачи сабраль, пыхапе патключиль, сапускаю, а ано - ажамбех пашамбе эшельбе шайтанама!

В настоящее время использую

В настоящее время использую связку ipcad + iptables

в настройке ipcad в качестве интерфейса выбран ulog
/etc/ipcad.conf

interface ulog group 1;

а в iptables заданы такие правила:

-A FORWARD -s 0.0.0.0/0 -d 192.168.0.0/24 -j ULOG --ulog-cprange 100 --ulog-qthreshold 30 --ulog-nlgroup 1
-A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -j ULOG --ulog-cprange 100 --ulog-qthreshold 30 --ulog-nlgroup 1

в итоге на ULOG сливаются только те пакеты, которые мне нужны и ничего лишнего. Для отбора нужных пакетов можно использовать всю ширину возможностей iptables. Фактически сборкой статистики здесь занимается iptables, ipcad только "слушает" ULOG и шлет все "услышанное" по netflow в биллинг. В итоге связка довольно производительая т.к. считается всё на уровне ядра, жрет не много ресурсов и нет такого негативного проявления ipcad как внезапная остановка - если вешать ipcad на интерфейс то при большой нагрузке он очень любит отваливаться.

Но я сейчас заинтересовался этим модулем ipt_NETFLOW, по замыслу он должен быть еще более производителен чем та связка, которую я сейчас использую т.к. нет лишнего перехода пакетов в userspace, всё обрабатывается на уровне ядра а костыль существующей связки в виде ipcad вообще исчезает.

Пока еще так и не получилось опробовать эту считалку, при попытке добавления правила с целью -j NETFLOW в лог падает мессага

segfault at 0 ip b7f46d7e sp bff73b60 error 4 in libxtables.so.2.0.0[b7f43000+5000]

Как лечить пока не знаю...

У меня сейчас ipt_NETFLOW

У меня сейчас ipt_NETFLOW работает на 2-х серваках и отлично. По сравнению с ipcad загрузка процессора меньше раз в 8-10. По сравнению с пропатченным ULOG - минимум в 20.
Система amd64
ipt_NETFLOW v1.6
gentoo-sources-2.6.27-r8 (компилил и запускал еще на 2.6.29-r5)
iptables-1.4.3.2 или iptables-1.4.2-r2

А потому какая версия ядра, iptables?

P.S. Кстати, автор модуля активно поддерживает свое творение на трекере sourceforge.net. За счет чего оперативно вычищает баги и наставляет на путь истиный.
Правда общение на английском ;)

Нащяльника, мая сервира паставиль, фрибизьдя инсталя сделаль, апачи сабраль, пыхапе патключиль, сапускаю, а ано - ажамбех пашамбе эшельбе шайтанама!

С английским, увы,

С английским, увы, туговато... :) пробую на iptables-1.4.3.2, ядро gentoo-sources-2.6.30-r4, беда сопсно следующая:
После обновления до этого ядра при компиляции ipt_netflow теперь вообще вываливается ошибка

Compiling for kernel 2.6.30-gentoo-r4
make -C /lib/modules/2.6.30-gentoo-r4/build M=/home/andretty/ipt_netflow-1.6 modules
make[1]: Entering directory `/usr/src/linux-2.6.30-gentoo-r4'
  CC [M]  /home/andretty/ipt_netflow-1.6/ipt_NETFLOW.o
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c: В функции 'nf_seq_show'
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:263: ошибка: implicit declaration of function 'HIPQUAD'
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:265: предупреждение: недостаточно аргументов для указанного формата
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c: В функции 'usock_free'
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:535: предупреждение: format '%u' expects type 'unsigned int', but argument 4 has type 'struct socket *'
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:535: предупреждение: недостаточно аргументов для указанного формата
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c: В функции 'add_usock'
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:580: предупреждение: недостаточно аргументов для указанного формата
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c: В функции 'add_aggregation'
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:693: предупреждение: недостаточно аргументов для указанного формата
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c: На верхнем уровне:
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:1245: предупреждение: initialization from incompatible pointer type
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c: В функции 'ipt_netflow_init'
/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.c:1315: ошибка: 'struct proc_dir_entry' has no member named 'owner'
make[2]: *** [/home/andretty/ipt_netflow-1.6/ipt_NETFLOW.o] Ошибка 1
make[1]: *** [_module_/home/andretty/ipt_netflow-1.6] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-2.6.30-gentoo-r4'
make: *** [ipt_NETFLOW.ko] Ошибка 2

Но суть дела не особо изменилась: если сейчас просто не собирается то до этого собиралось, но всеравно не работало :)

Урря! :) Откат до ядра

Урря! :) Откат до ядра 2.6.27-r8 решил проблему и теперь модуль работает а iptables исправно кушает правила, но вот теперь вопрос больше связанный с практическим применением: на сколько точно считает? Кто проверял отпишите плиз.

Сравнивал с результатами

Сравнивал с результатами перечисленных выше сенсоров. Считает хорошо. Надо только размер хэша и еще какого-то буфера задать, соотвественно нагрузке.

Нащяльника, мая сервира паставиль, фрибизьдя инсталя сделаль, апачи сабраль, пыхапе патключиль, сапускаю, а ано - ажамбех пашамбе эшельбе шайтанама!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".