Suricata源码阅读笔记:StreamTCP

本文详细介绍了Suricata中StreamTCP模块的功能,包括TCP流跟踪和重组。从数据包处理流水线的位置开始,讨论了StreamTCP在配置初始化、模块初始化和执行过程中的具体操作,如配置TCP会话、重组功能初始化和性能计数器的注册。文章深入探讨了StreamTCP如何处理不同状态的TCP会话,涉及SYN、SYN/ACK、FIN和RST等各种包类型的处理流程,以及Stream Tracking和Stream Reassembly的实现细节。
摘要由CSDN通过智能技术生成

简介

StreamTCP是Suricata中用于实现TCP流跟踪(Tracking)和重组(Reassembly)的模块。

这个模块在Suricata的数据包处理流水线中是处于哪个位置呢?继续以前面介绍的Pcap实时类型的autofp模式为例:

当数据包由抓包线程的ReceivePcap模块获取,再经过线程内下一个模块DecodePcap完成解码后,最终将在TmThreadsSlotProcessPkt中调用tmqh_out,也即上一节介绍的TmqhOutputFlowActivePackets函数,把数据包送完输出队列,让后续线程再去继续处理。

而在对main()的介绍中,我们知道当前模式下,下一级线程配置的模块依次为:StreamTCP、Detect、RespondReject和Output相关模块。因此,StreamTCP将是数据包解码完成后第一个流经的模块。

配置初始化

StreamTcpInitConfig在main()中被调用,完成StreamTCP的配置初始化。

该函数首先会填充模块的全局配置结构TcpStreamCnf,其重要字段包括:

字段 含义
memcap stream跟踪功能所能使用的最大内存,默认为32MB。
prealloc_sessions 为每个stream线程预分配的session数量。
flags 标志,目前只用到CHECKSUM_VALIDATION。
midstream 是否允许接手midstream session,默认为关闭。
async_oneside 是否打开异步stream处理,默认为关闭。
max_synack_queued 能存放在队列中的SYN/ACK的最大数量,默认为5.

reassembly_memcap

重组功能所能使用的最大内存,默认为64MB。
reassembly_depth 重组深度?默认为1MB。
ssn_init_flags session标志
segment_init_flags segment标志
reassembly_toserver_chunk_size 待填
reassembly_tocli
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值