主要观点:互联网设计为在两端点间提供多条路径,但实际端到端通信通常仅使用一条路径,多路径设置中路径差异会影响连接质量。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 作为服务器可通过设置
sysctl
和ip mptcp
命令控制 MPTCP 相关操作,如禁止客户端重新连接服务器地址等 - Linux 作为客户端的路径管理器配置及 NetworkManager 的作用
- macOS 暴露的原始 MPTCP API 及高级 API 的使用示例
- MPTCP 调度器的现状及 BPF 扩展的工作进展
- Cloudflare 对 MPTCP 的态度及相关业务介绍
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。