Hasty Briefsbeta

双语

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等协议的封锁