入侵检测引擎之 Suricata 源码剖析

从上一篇 “浅谈 Suricata”我们可以了解 Suricata 的安装部署大致框架、以及从配置方面谈及的性能优化。这场 Chat 则从代码角度带您剖析 Suricata。

通过本次 Chat 您将了解以下知识点:

  • 收包和解包线程。
  • Flow-Worker 线程角色。
  • 队列负载均衡。
  • Detect 线程。
  • 应用协议解析层。
  • Output 输出层。
  • 代码框架优化。
  • Chat地址 参见: https://gitbook.cn/gitchat/activity/5b39ed55245b08151cb37cc2

提到Suricata源码分析,我们首先需要了解suricata整体框架设计,只有你了解了整体框架,他才能对阅读源码有更好的促进作用。而提到框架则需要了解它的运行模式,在上一篇文章中说,suricata相对于传统snort引擎,它是由很多单独的线程模块所组成,使用者可以自行配置组合所需要的线程模块既可进行优化、自定义需求。默认的运行模式主要分为workers模式、autofp模式以及单线程模式single。workers模式主要是采用串行流水线的模式,针对单独数据流采取唯一线程 从头至尾处理,而autofp则是将收包和解包放在一个单独线程,而剩下的工作线程则通过队列传递数据包进行处理。 
显然workers模式更适用于高效率处理数据包。

其次suricata支持多种抓包引擎,如:pcap、netmap、pfring、socket等。本文就pfring抓包引擎来谈一下数据包的抓取、和解包流程。


你可能感兴趣的:(suricata)