会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
zhaodejin
博客园
首页
新随笔
联系
订阅
管理
随笔 - 23
文章 - 0
评论 - 0
阅读 -
10124
suricata 源码分析_02 程序流程
suricata 架构图
架构拆分
数据包队列处理
在TmThreadCreate中调用TmqCreateQueue创建PackQueue,autofp模式下且输出队列为flow时,首先要看outqh的OutHandleCtxSetup是否设置,若设置了则会调用该函数去间接创建队列,否则直接调用了TmpCreateQueue创建。
接收数据模块
1
2
3
4
5
6
PacketPool
TmThreadsSlotVarRun
tv->tmqh_out
数据包队列模块
TmThreadSlotProcessPkt
接收线程
接收数据包模块
解析数据包模块
循环抓包
初始化数据包模块
退出时释放资源
数据包队列和流操作线程模块
流程序号承接前文。
7
8
10
11
12
13
14
15
9
file
flieLog
file_data
Json
JsonAlertLog
JsonDnsLog
JsonDropLog
JsonEmailLog
JsonEmailLog
JsonFileLog
JsonFlowLog
JsonHttpLog
JsonNetFlowLog
JsonSmtpLog
JsonSshLog
JsonStatsLog
JsonTemplateLog
JsonTlsLog
LuaLog
PacketLog
StatesLog
StreamingLog
TxLog
初始化线程变量
处理超时的流
紧急情况使用,资源不足时启用
退出时释放资源
数据包队列模块
TmThreadsSlotVar
p=tv->tmqh_in
p=tv->tmqh_out
TmqhInputFlow
流操作线程
查找包对应的流_FowHandlePacket
FlowGetFlowFromHash,获取包对应的流,
找不到就新建流,返回流指针,返回空说明内存不足
如果p->flow_hash找不到对应的FlowBucket,
则新建flow挂到对应的bucket上,并通过参数dest返回
流操作
若遍历bucket链表找到对应的flow,
将当前flow放到bucket的flow->head,判断流重用,并通过参数dest返回
如果packet和bucket第一个flow匹配,
五元组和vlan相同,判断流重用,
并通过参数dest返回
p->flags=PKT_HAS_FLOW,设置包的标记为属于某条流
FlowWorker
根据包的信息更行对应的流
判断包的流向,并设置对应标志FLOW_PKT_TOSERVER,FLOW_PKT_TOCLIENT,
判断是不是第一个流向server或clent的包,并设置该包的标志对应的flow的标志:
FLOW_TO_SET_SEEN和FLOW_TO_SRC_SEEN,根据流标志设置包的流标志是否为FLOW_PKT_ESTABLISHED,
根据流标志设置包的标志对应的检测位
StreamTCP
判断包是否需要效验,不需要则设置包的PKT_IGNORE_CHECKSUM标志
StreamTcpPacket
Detect
Flow
ResponseReject
日志输出模块
流管理线程
本文来自博客园,作者:{心亘久},转载请注明原文链接:
https://www.cnblogs.com/zhaodejin/p/16135118.html
分类:
suricata
好文要顶
关注我
收藏该文
微信分享
心亘久
粉丝 -
3
关注 -
1
+加关注
2
0
升级成为会员
«
上一篇:
suricata 源码分析_01 suricata简介
»
下一篇:
suricata 源码分析_03 运行模式
posted @
2022-04-12 16:32
心亘久
阅读(
983
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
登录后才能查看或发表评论,立即
登录
或者
逛逛
博客园首页
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
相关博文:
·
suricata 源码分析_04 程序架构
·
suricata 源码分析_03 运行模式
·
Suricata源码分析-流管理引擎(flow engine)
·
suricata 学习笔记
·
suricata框架
阅读排行:
·
分享4款.NET开源、免费、实用的商城系统
·
全程不用写代码,我用AI程序员写了一个飞机大战
·
MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
·
白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
·
上周热点回顾(2.24-3.2)
公告
昵称:
心亘久
园龄:
2年11个月
粉丝:
3
关注:
1
+加关注
<
2025年3月
>
日
一
二
三
四
五
六
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔分类
C++ 随笔(2)
DPDK(2)
linux(6)
Security Web Gate(7)
suricata(4)
网络(2)
随笔档案
2023年12月(2)
2022年5月(8)
2022年4月(6)
2022年3月(7)
阅读排行榜
1. suricata 源码分析_04 程序架构(1975)
2. suricata 源码分析_01 suricata简介(1721)
3. suricata 源码分析_02 程序流程(983)
4. KDB调试(960)
5. DPDK 原理(731)
推荐排行榜
1. suricata 源码分析_02 程序流程(2)
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)