TCP 分片乱序发射
TCP 分片乱序发射会拆分选定 TCP payload 并发送修改后的包,使 DPI 设备必须处理乱序与重传相关状态。
UA3F 会针对早期 TCP payload 进行二分分片,并优先转发尾片、丢弃首片,从而制造分片乱序发射现象。随后首片会触发 TCP 重传,继续进入下一轮分片乱序处理。
reorder-bytes 与 reorder-packets 用于控制分片乱序发射的处理范围和轮数。由于该功能会影响连接建立后的早期数据包,开启后可能出现短时间网络通信波动,但通常不会影响后续长时间通信。
yaml
desync:
reorder: true
reorder-bytes: 8
reorder-packets: 1500UA3F 会跳过没有 TCP payload、payload 长度小于等于 1 字节、以及带 FIN 标志的包。
该功能可能影响连接开始阶段的少量包。建议先在目标网络上使用保守参数测试。
为什么可以影响 DPI
DPI 设备通常会对经过的流量进行重组和特征匹配,目标是在尽可能接近真实通信内容的层面上分析数据包,从而识别特定协议、特征字符串或行为模式。
在实际部署中,DPI 重组 TCP 流的能力受到性能和实现策略限制。TCP 异常、分片乱序、重传、窗口变化等情况都会增加 DPI 的处理复杂度与缓存压力。
UA3F 通过制造分片乱序与伪重传现象,使 DPI 面临以下问题:
| 影响 | 说明 |
|---|---|
| 状态错乱 | DPI 在重组 TCP 流时需要跟踪连接序列号和数据内容。乱序分片、覆盖和重传冲突可能让 DPI 与真实端点 TCP 栈对“哪段数据有效”的判断出现分歧,从而产生脱同步。 |
| 缓存开销 | 高速环境下完整缓存所有乱序段直到重组完成成本很高。设备如果因超时丢弃部分段,或采用只取首片等简化策略,就可能漏检或误判。 |
| 协议歧义 | DPI 常依赖早期包进行协议嗅探。传输层不确定性可能让 DPI 在早期识别阶段进入错误解析路径。 |
