网络入侵检测系统之Suricata(二)

Suricata采用多线程架构处理网络数据包,包括Receive、Decode、FlowWorker、Verdict等线程模块,实现高效的数据包捕获和分析。在运行模式中,workers模式因能平均分担负载而性能最优。数据包通过线程间的共享队列传递,行级锁用于保证多线程安全。autofp模式下,RX和W线程分别负责数据包的获取和处理。关键词涉及 Suricata、多线程、数据包处理、网络监控、性能优化。

Running mode

Sruciata由线程和队列组成,数据包在线程间传递通过队列实现。线程由多个线程模块组成,每个线程模块实现一种功能。

Suricata有多种运行模式,这些模式与抓包驱动和IDS/IPS选择相关联。抓包驱动如:pcap, pcap file,nfqueue,ipfw,dpdk或者一个特有的抓包驱动等。Suricata在启动时只能选择某个运行模式。如-i选项表示pcap, -r表示pcapfile,-q表示nfqueue等。每一种运行模式都会初始化一些threads,queues等。模式的具体任务是由线程模块来完成。根据线程和线程模块的组织方式的不同,我们可以./suricata --list-runmodes查看运行模式,运行模式又细分为**“autofp”, “single”,“wokers”**

通常情况下workers性能最好,因为网卡驱动确保数据包平均分担到Suricata处理线程,每一个线程包含数据包处理完整的流水线;

  • Single mode
    在这里插入图片描述
    在这里插入图片描述

  • Workers
    在这里插入图片描述

    线程模块是对packet处理任务的抽象。线程模块大概有以下几种:

    1.Receive模块:
    收集网络数据包,封装成Packet对象后将其传递给Decode线程模块2.

    2.Decode模块:
    对Packet按协议4层模型(数据链路层、网络层、传输层、应用层)进行解码,
    获取协议和负荷信息,解码完成后将 Packet传递给FlowWorker线程模块。
    该模块主要是进行packet解码,不处理应用层。应用层由专门的应用层解码模块处理

    3.FlowWorker模块:
    对packets进行分配flow,Tcp会话管理,TCP重组,应用层数据解析处理,Detect规则检测

    4.Verdict模块:
    根据Detect模块检测的结果,对drop标记的包需要做丢弃处理

    5.Respon

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于顾而言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值