9.1. 运行模式

Suricata由多个“构建块”组成,称为线程、线程模块和队列。线程就像在计算机上运行的进程。Surica是多线程的,因此多个线程同时处于活动状态。线程模块是功能的一部分。例如,一个模块用于解码数据包,另一个模块用于检测模块,另一个模块用于输出模块。一个包可以由多个线程处理。包将通过队列传递给下一个线程。数据包将由一个线程一次处理,但引擎一次可以处理多个数据包。(参见 最大挂起数据包数 )一个线程可以有一个或多个线程模块。如果它们有更多的模块,则一次只能激活。线程、模块和队列排列在一起的方式称为运行模式。

9.1.1. 不同的运行模式

您可以从几个预定义的运行模式中选择一个运行模式。命令行选项--list runmodes显示所有可用的runmodes。所有运行模式都有一个名称:single、workers、autopp。

一般来说, workers 运行模式的性能最好。在这种模式下,NIC/驱动程序确保数据包在Suricata的处理线程上得到适当的平衡。然后,每个包处理线程都包含完整的包管道。

../_images/workers.png

用于处理PCAP文件,或者在某些IP设置(如NFQ)的情况下, autofp 使用。这里有一个或多个捕获线程,它们捕获数据包并进行数据包解码,然后将其传递给 flow worker 线程。

../_images/autofp1.png ../_images/autofp2.png

最后, single 运行模式与 workers 模式,但是只有一个包处理线程。这在开发过程中很有用。

../_images/single.png

有关运行模式的命令行选项的详细信息,请参阅 命令行选项 .