19.3. 肉豆蔻

发件人:https://blog.inliniac.net/2012/07/10/suricata-on-myricom-capture-cards/

在本指南中,我将介绍如何使用Myricom libpcap支持。我假设你正确地安装了卡,安装了嗅探器驱动程序并确保一切正常。确保 dmesg 显示卡处于嗅探器模式:

[ 2102.860241] myri_snf INFO: eth4: Link0 is UP
[ 2101.341965] myri_snf INFO: eth5: Link0 is UP

我已经在中安装了Myricom运行时和库 /opt/snf

根据Myricom的libpcap编译Suricata:

./configure --with-libpcap-includes=/opt/snf/include/ --with-libpcap-libraries=/opt/snf/lib/ --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
sudo make install

接下来,配置环缓冲区的数量。我将在这里使用8,因为我的四核+超线程有8个逻辑CPU。 见下文 有关缓冲区大小参数的其他信息。

pcap:
  - interface: eth5
    threads: 8
    buffer-size: 512kb
    checksum-checks: no

8线程设置使Suricata为eth5创建8个读线程。Myricom驱动程序确保每一个都连接到自己的环形缓冲区。

然后开始如下测量:

SNF_NUM_RINGS=8 SNF_FLAGS=0x1 suricata -c suricata.yaml -i eth5 --runmode=workers

如果需要16个环形缓冲区,请将Suricata配置文件中的“threads”变量更新为 16 开始苏瑞塔:

SNF_NUM_RINGS=16 SNF_FLAGS=0x1 suricata -c suricata.yaml -i eth5 --runmode=workers

请注意 pcap.buffer-size 使用Myricom卡时,上面显示的配置设置当前被忽略。该值传递给 pcap_set_buffer_size Suricata源代码中的libpcap API。Myricom支持:

"The libpcap interface to Sniffer10G ignores the pcap_set_buffer_size() value.  The call to snf_open() uses zero as the dataring_size which informs the Sniffer library to use a default value or the value from the SNF_DATARING_SIZE environment variable."

myricom在libpcap项目中打开的以下pull请求表明,未来的snf软件版本可以通过pcap.buffer-size yaml设置支持设置snf_数据环的大小:

在此之前,可以分别使用snf_data ring_size和snf_descring_size环境变量显式设置数据环和描述符环值。

snf_dataring_大小是用于存储传入数据包数据的总内存量。此尺寸在所有环中共享。snf_descring_size是用于存储有关数据包的元信息(数据包长度、偏移量、时间戳)的总内存量。这个尺寸也在所有环上共享。

Myricom建议描述符环的大小为数据环的1/4,但可以根据流量配置文件修改比率。如果未显式设置,myricom使用以下默认值:snf_dataring_size=256MB和snf_descring_size=64MB

在上面的16线程示例上展开,可以使用以下命令使用16GB数据环和4GB描述符环启动Suricata:

SNF_NUM_RINGS=16 SNF_DATARING_SIZE=17179869184 SNF_DESCRING_SIZE=4294967296 SNF_FLAGS=0x1 suricata -c suricata.yaml -i eth5 --runmode=workers

19.3.1. 调试信息

myricom还提供了获取调试信息的方法。这对于验证配置和收集其他信息很有用。设置snf_debug_mask=3将启用调试信息,并且可以选择设置snf_debug_文件名,以指定输出文件的位置。

以下是示例:

SNF_NUM_RINGS=16 SNF_DATARING_SIZE=17179869184 SNF_DESCRING_SIZE=4294967296 SNF_FLAGS=0x1 SNF_DEBUG_MASK=3 SNF_DEBUG_FILENAME="/tmp/snf.out" suricata -c suricata.yaml -i eth5 --runmode=workers

19.3.2. 附加信息