<div dir="ltr"><div>We wrote guides a while back, that might help answering some of your questions. Let me address what I can, right here.<br></div><div dir="ltr"><br></div><div dir="ltr"><a href="https://github.com/pevma/SEPTun">https://github.com/pevma/SEPTun</a></div><div dir="ltr"><a href="https://github.com/pevma/SEPTun-Mark-II">https://github.com/pevma/SEPTun-Mark-II</a></div><div dir="ltr"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">We are testing Suricata in af-packet IDS mode and we ran into a couple of issues with configuring.<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>We have various HW setups, and therefore Suricata runs in different runmodes (either workers or autofp) depending on a specific platform. Currently I'm trying to configure Suricata to get the best performance as possible, but some settings are ambiguous and even the documentation didn't help a lot.<br></div></blockquote></div></blockquote><div><br></div><div>The best performance setup (for the IDS) comes from the workers runmode.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>Here are some of the things which I do not understand about configuration:<br><br>1) ring-size: <number of packets> - Ring size will be computed with respect to max_pending_packets and number of threads. You can set manually the ring size in number of packets by setting the following value. So as I understand this value defines a cache size of each thread when running in workers mode, but when running in autofp there may be different numbers of packet capture and packet processing threads. To which type of thread does the ring-size refer in autofp mode? And when this value is not set - what is the default value?<br><br></div></blockquote></div></blockquote><div><br></div><div>For workers mode - each threat will have its own ring, so also watch out for the memory usage. For autofp, no idea.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">2) tpacket_v3 has such properties as block-size and block-timeout which look a bit complicated. What should I take into consideration when trying to tune those values?<br></div></blockquote></div></blockquote><div><br></div><div>Some good and proven in the battle numbers to start from are in above SepTun guides. Feel free to start somewhere from there and modify as you see fit.</div><div>As a general rule, I would first modify the ring-size before touching the block-size.</div><div><br></div><div>More details and diagrams here</div><div><a href="https://www.kernel.org/doc/Documentation/networking/packet_mmap.txt">https://www.kernel.org/doc/Documentation/networking/packet_mmap.txt</a></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>3) buffer-size: <number of bytes?> - what is this buffer?<br></div></blockquote></div></blockquote><div><br></div><div>It shouldn't be there - it's not used by the AF_Packet processing pipeline. Looks like something we could remove from this section of the config file.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>4) max-pending-packets: <number of packets> - is this a number of packets which can be simultaneously processed by each of packet processing thread?<br></div></blockquote></div></blockquote><div><br></div><div>That's what I believe the documentation says, but the code makes me think it's the global per-Suricata instance limit of the maximum numbers of packets that can be queued by all of your threads, i.e.</div><div><br></div><div>ring_size * threads</div><div><br></div><div>Just make it generous.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Here is how I see it: say we set the ring-size to 100k packets, set m-p-p to 1k and run 8 packet processing threads. This setup means that each of 8 threads can analyze 1k packets at once, while other packets have to wait in its 100k packets buffer - is it correct? And again, if this setting is commented out - what is the default value?</div></blockquote></div></blockquote><div><br></div><div>default is 1024 (looking at the suricata.c)</div><div><br></div><div>I believe you should just make it larger than numbers of threads * packets per thread (so ring size).</div><div><br></div><div>Victor / Eric could you either confirm or correct me?<br></div></div></div>