Skip to content

TCP 分片乱序发射

TCP 分片乱序发射会拆分选定 TCP payload 并发送修改后的包,使 DPI 设备必须处理乱序与重传相关状态。

UA3F 会针对早期 TCP payload 进行二分分片,并优先转发尾片、丢弃首片,从而制造分片乱序发射现象。随后首片会触发 TCP 重传,继续进入下一轮分片乱序处理。

reorder-bytesreorder-packets 用于控制分片乱序发射的处理范围和轮数。由于该功能会影响连接建立后的早期数据包,开启后可能出现短时间网络通信波动,但通常不会影响后续长时间通信。

yaml
desync:
  reorder: true
  reorder-bytes: 8
  reorder-packets: 1500

UA3F 会跳过没有 TCP payload、payload 长度小于等于 1 字节、以及带 FIN 标志的包。

该功能可能影响连接开始阶段的少量包。建议先在目标网络上使用保守参数测试。

为什么可以影响 DPI

DPI 设备通常会对经过的流量进行重组和特征匹配,目标是在尽可能接近真实通信内容的层面上分析数据包,从而识别特定协议、特征字符串或行为模式。

在实际部署中,DPI 重组 TCP 流的能力受到性能和实现策略限制。TCP 异常、分片乱序、重传、窗口变化等情况都会增加 DPI 的处理复杂度与缓存压力。

UA3F 通过制造分片乱序与伪重传现象,使 DPI 面临以下问题:

影响说明
状态错乱DPI 在重组 TCP 流时需要跟踪连接序列号和数据内容。乱序分片、覆盖和重传冲突可能让 DPI 与真实端点 TCP 栈对“哪段数据有效”的判断出现分歧,从而产生脱同步。
缓存开销高速环境下完整缓存所有乱序段直到重组完成成本很高。设备如果因超时丢弃部分段,或采用只取首片等简化策略,就可能漏检或误判。
协议歧义DPI 常依赖早期包进行协议嗅探。传输层不确定性可能让 DPI 在早期识别阶段进入错误解析路径。

Released under the GPL-3.0 license.