LINUX.ORG.RU

opendpi: опыт использования

 ,


2

2

Собрал я это чудо (напильник нужен приличный). nDPI-1.4.0 и ndpi-netfilter (https://github.com/ewildgoose/ndpi-netfilter.git) на ядре 3.10.10 + iptables-1.4.19.1

Работает :) Но апетиты у этого монстра приличные. На 1 flow 3760 байт ( к каждому conntack )

# SLAB DETAIL
#                           <-----------Objects----------><---------Slab Allocation------><---Change-->
kmalloc-96                 152728  14318K  153048  14348K    3644  14576K    3644  14576K  65536    0.4
xt_ndpi_flows              147092 540103K  147384 541175K   18423 589536K   18423 589536K 7208960    1.2
xt_ndpi_ids                 83990  25590K   85748  26126K    3298  26384K    3298  26384K      0    0.0

За 2.5 часа насобирал ( ~200Мбит/с)

root@ls-gw2:~# iptables -nvxL IA | sort +0.9 -n
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol DHCP 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol DirectConnect 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol eDonkey 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol IMAP 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Openvpn 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol PPTP 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Rsync 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol SMTP 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol SNMP 
       0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol SSL 
Chain IA (1 references)
    pkts      bytes target     prot opt in     out     source               destination         
      56     3220            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol VNC 
     111     8057            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol FTP 
     210    20148            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol SSH 
     985    74812            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol NTP 
     339   126184            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol SIP 
     857   257617            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol GRE 
    1752   277727            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol TeamViewer 
   13551  2022171            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol DropBox 
   16482  2153456            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol IPSEC 
    5672  3282511            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Tor 
    5532  3321744            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol POP 
    3188  3391542            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol HTTP_Connect_SSL_over_HTTP 
    9309  3430888            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Jabber 
   49457  5585001            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol RDP 
   93674  9171691            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol RTP 
    5164  9366285            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Windows_Update 
   11279 11546740            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Twitter 
   25370 32079798            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol FaceBook 
  771732 274166015            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Rtcp 
 6774916 2260874410            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Skype 
 3789268 10462438403            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol YouTube 
21046184 19627078201            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol Bittorrent 
36510517 90141863774            all  --  *      *       0.0.0.0/0            0.0.0.0/0           protocol HTTP 
169038985 240396708676            all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* total */

загрузка 1 ядра почти под 100%

Tasks: 118 total,   2 running, 116 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 89.5%id,  0.1%wa,  0.3%hi, 10.0%si,  0.0%st
Mem:   4130492k total,   857064k used,  3273428k free,    21296k buffers
Swap:  4194300k total,        0k used,  4194300k free,    60608k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ СOMMAND
    3 root      20   0     0    0    0 R   98  0.0  92:46.76 ksoftirqd/0     

Правила простые

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
IA         all  --  0.0.0.0/0            xxx.xxx.xxx.0/24
OA         all  --  xxx.xxx.xxx.0/24     0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain IA (1 references)
target     prot opt source               destination
           all  --  0.0.0.0/0            0.0.0.0/0            /* total */
           all  --  0.0.0.0/0            0.0.0.0/0           protocol HTTP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol HTTP_Connect_SSL_over_HTTP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Bittorrent
           all  --  0.0.0.0/0            0.0.0.0/0           protocol DirectConnect
           all  --  0.0.0.0/0            0.0.0.0/0           protocol eDonkey
           all  --  0.0.0.0/0            0.0.0.0/0           protocol DropBox
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Rsync
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Jabber
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Twitter
           all  --  0.0.0.0/0            0.0.0.0/0           protocol FaceBook
           all  --  0.0.0.0/0            0.0.0.0/0           protocol YouTube
           all  --  0.0.0.0/0            0.0.0.0/0           protocol FTP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol POP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol IMAP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol SMTP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol SNMP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol NTP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol DHCP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol SSH
           all  --  0.0.0.0/0            0.0.0.0/0           protocol GRE
           all  --  0.0.0.0/0            0.0.0.0/0           protocol PPTP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Openvpn
           all  --  0.0.0.0/0            0.0.0.0/0           protocol SSL
           all  --  0.0.0.0/0            0.0.0.0/0           protocol IPSEC
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Rtcp
           all  --  0.0.0.0/0            0.0.0.0/0           protocol RTP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Skype
           all  --  0.0.0.0/0            0.0.0.0/0           protocol SIP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol VNC
           all  --  0.0.0.0/0            0.0.0.0/0           protocol RDP
           all  --  0.0.0.0/0            0.0.0.0/0           protocol TeamViewer
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Windows_Update
           all  --  0.0.0.0/0            0.0.0.0/0           protocol Tor
+ такой же список на output.

Железо: Проц: Intel(R) Xeon(R) CPU E31230 @ 3.20GHz Сетевушка: 82574L

В порт миррорится трафик с внешнего канала.

★★★★★

Последнее исправление: vel (всего исправлений: 1)

Вердикт: непригодно для использования из-за утечки памяти.

4 гига выжирается на 200Мбит/с за 3 часа, а затем приходит OOM.

vel ★★★★★
() автор топика
Ответ на: комментарий от steemandlinux

Там есть какое-то дерево ip-шников, так после сброса conntrack эта структура не была освобождена.

Есть подозрение, что не совсем корректно написан код удаления flow.

В nDPI все это есть в userspace варианте, можно посмотреть не течет ли там память, правда пока не понятно как там эвенты создания/удаления conntrack реализовать....

И еще есть интересный момент. Та сетевушка, на которой я принимал поток, не умеет multi-rx-queue. Хочется посмотреть как эта поделка будет вести себя на сетевушке с multi-rx-queue.

vel ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Layer7. В нем на 146% нет memory leak.

Нужно будет такой же эксперимент на Layer7 провести (на предмет производительности).

Но функционал в layer7 беднее.

интересно что в opendpi на 1 поток может быть более одного классификатора протокола т.к. сумма счетчиков по протоколам больше входящего трафика.

vel ★★★★★
() автор топика

У меня при попытке собрать:

root@MS-7715:/usr/src/nDPI/ndpi-netfilter-master# NDPI_PATH=/usr/src/nDPI make
make -C ipt
make[1]: Вход в каталог `/usr/src/nDPI/ndpi-netfilter-master/ipt'
if test -d ndpi_cpy; then \
		cp /usr/src/nDPI/src/* ndpi_cpy -R; \
	else \
		mkdir ndpi_cpy; \
		cp /usr/src/nDPI/src/* ndpi_cpy -R; \
	fi
make libxt_ndpi.so
make[2]: Вход в каталог `/usr/src/nDPI/ndpi-netfilter-master/ipt'
make[2]: `libxt_ndpi.so' не требует обновления.
make[2]: Выход из каталога `/usr/src/nDPI/ndpi-netfilter-master/ipt'
rm -r ndpi_cpy
make[1]: Выход из каталога `/usr/src/nDPI/ndpi-netfilter-master/ipt'
make -C src
make[1]: Вход в каталог `/usr/src/nDPI/ndpi-netfilter-master/src'
if test -d ndpi_cpy; then \
		cp /usr/src/nDPI/src/* ndpi_cpy -R; \
	else \
		mkdir ndpi_cpy; \
		cp /usr/src/nDPI/src/* ndpi_cpy -R; \
	fi
make -C /lib/modules/3.8.0-26-generic/build M=$PWD;
make[2]: Вход в каталог `/usr/src/linux-headers-3.8.0-26-generic'
  CC [M]  /usr/src/nDPI/ndpi-netfilter-master/src/main.o
/usr/src/nDPI/ndpi-netfilter-master/src/main.c: В функции «ndpi_mt_check»:
/usr/src/nDPI/ndpi-netfilter-master/src/main.c:586:2: ошибка: неявная декларация функции «NDPI_BITMASK_IS_ZERO» [-Werror=implicit-function-declaration]
cc1: некоторые предупреждения рассматриваются как ошибки
make[3]: *** [/usr/src/nDPI/ndpi-netfilter-master/src/main.o] Ошибка 1
make[2]: *** [_module_/usr/src/nDPI/ndpi-netfilter-master/src] Ошибка 2
make[2]: Выход из каталога `/usr/src/linux-headers-3.8.0-26-generic'
make[1]: *** [all] Ошибка 2
make[1]: Выход из каталога `/usr/src/nDPI/ndpi-netfilter-master/src'
make: *** [all] Ошибка 2
root@MS-7715:/usr/src/nDPI/ndpi-netfilter-master# 

Кто нибудь знает, как устранить эти ошибки? Ядро 3,8,0

ne-vlezay ★★★★★
()
Ответ на: комментарий от ne-vlezay

Дык ты оригинал пытаешься собрать ?

так оно в оригинале на 2.6.32 заточено и ndpi-1.3, а с 3.8 и ndpi-1.4 без патчей не собрать.

Я недавно продолжение про ndpi-nefilter здесь

vel ★★★★★
() автор топика
6 декабря 2013 г.

Сейчас на 3,10,15 вроде собралось, сейчас в работе проверю

ne-vlezay ★★★★★
()

Проверил. Почему-то он не видит ssl.

вот:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  10.254.124.1         anywhere             protocol SSL reject-with icmp-port-unreachable

тем неменее, сайты с ssl работают.

В чём дело? Скорее всего баг.

ne-vlezay ★★★★★
()
11 июля 2014 г.
16 августа 2014 г.

Вот что выходит при попытки подгрузить этот модуль:
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter# modprobe xt_ndpi
ERROR: could not insert 'xt_ndpi': Cannot allocate memory
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter#

Ядро:
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter# uname -r
3.12.4-debilax
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter#

ne-vlezay ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.