多路径 TCP:一次一条路径地彻底改变连接性

主要观点:互联网设计为在两端点间提供多条路径,但实际端到端通信通常仅使用一条路径,多路径设置中路径差异会影响连接质量。MPTCP 利用设备多接口实现多路径连接,历史悠久但大多 TCP 更改未获成功,如今多为操作系统功能,应用只需少量代码更改即可支持。MPTCP 内部通过引入“子流”扩展 TCP,能解决传统 TCP 中的聚合和移动性问题,目前主要有 Linux 和 iOS/macOS 两种实现,Linux 从 v5.6 开始支持内核级 MPTCP,iOS 从 7 版本、Mac OS X 从 10.10 开始支持,Linux 作为服务器和客户端的配置及操作有所不同,路径管理器和调度器是 MPTCP 的重要组成部分,macOS 暴露原始 MPTCP API 且有高级 API,MPTCP IPv6 存在空间受限问题,当前 MPTCP 实施有限,实用场景主要是 Linux 作为服务器、macOS/iOS 作为客户端的“交互”用例,Linux 有望很快发展出良好的 MPTCP 客户端,同时 Multi-Path QUIC 也在积极开发中,Cloudflare 对支持 MPTCP 持观望态度。
关键信息

  • MPTCP 介绍、历史及扩展 TCP 协议
  • 内部“子流”及在 Linux 上查看子流的方法
  • MPTCP 解决的聚合和移动性问题及相关案例
  • 主要的 MPTCP 实现(Linux 和 iOS/macOS)及配置
  • 路径管理器和调度器的作用及相关问题
  • MPTCP IPv6 的 caveat
    重要细节
  • Linux 作为服务器可通过设置sysctlip mptcp命令控制 MPTCP 相关操作,如禁止客户端重新连接服务器地址等
  • Linux 作为客户端的路径管理器配置及 NetworkManager 的作用
  • macOS 暴露的原始 MPTCP API 及高级 API 的使用示例
  • MPTCP 调度器的现状及 BPF 扩展的工作进展
  • Cloudflare 对 MPTCP 的态度及相关业务介绍
阅读 20
0 条评论