TCP-in-UDP Solution (eBPF)
10 months ago
- #Networking
- #MPTCP
- #eBPF
- MPTCP协议需应对NAT、防火墙、入侵检测系统或代理等中间盒,设计较为复杂
- MPTCP连接可能回退到普通TCP,不过自2013年广泛部署后该情况已较罕见
- 部分移动网络的性能增强代理(PEP)仍可能阻断MPTCP连接
- TCP-in-UDP是为MPTCP设计的轻量化隧道方案,利用eBPF技术实现,无需每包额外数据或VPN配置
- TCP-in-UDP方案受早期IETF草案启发,通过重组TCP头结构使其以UDP头起始
- 该方案修改网络层中的传输层协议,将紧急指针字段替换为长度字段,会影响校验和计算
- Linux网络栈的GRO和TSO/GSO等优化机制使TCP-in-UDP的逐包处理更复杂
- 由于TCP与UDP的skb->csum_offset差异,需要特殊处理产生的校验和问题
- 使用TCP-in-UDP时可能需要调整MTU/MSS以避免IP分片
- 可通过在客户端和服务端部署eBPF程序,绕过中间盒对MPTCP等协议的封锁