说个小的发现。
suricata在运行netmap模式进行抓包的时候默认使用的是”workers”的工作方式。
由于其它的都是“autofp”的方式,所以就带着疑问上google上查了一下。没想到还真查到点东西。
https://redmine.openinfosecfoundation.org/issues/1717
这是论坛里找到的,大体意思是说在suricata 3的版本使用netmap模式并通过autofp的方式抓包会导致内存泄漏。
这里已给出的回复是,autofp不支持zero-copy,还有一些导致内存泄漏的相关猜想。
主要结论有两点:
- 使用worker方式抓包或使用autofp方式但不用zero-copy(个人认为就是不用带驱动的netmap)。
- 更改ring_size,这个暂时也用不上,所以没有做实验。直接引用原文:I have to say that in my scenario I
used rings size of 4096 - the maximum allowed for ixgbe driver. To
solve the issue with netmap memory allocation failure I’ve used
ring_size=66000 parameter on netmap module loading.
ring_count=thread_count in my scenario