摘要
MP_JOIN的 SYN 携带接收端 Token,用于找到既有 MPTCP 连接;后续 HMAC、随机数和接收端本地策略才决定新 TCP 子流是否加入。- 地址、令牌、HMAC、TCP 建立和应用结果属于不同证据。把它们压缩成“已获信任”会制造并不存在的授权。
MPTCP 对应用承诺的表面很朴素:仍然是 TCP 式的、可靠而有序的字节流。RFC 6182 同时要求人们看到另一面:网络会看见数个普通 TCP 子流。连接级状态把它们组织起来,但并不消灭各自的 TCP 状态。多地址只是寻找多个可能路径的实用信号,并不证明路径在物理上分离,也不保证吞吐量或韧性一定增加。
这种双层表述不是术语游戏。它规定了责任不能被偷换。应用可以看见一条连续字节流;网络设备仍可能只处理一个五元组;端主机必须判断一条新流究竟能否成为旧连接的一部分。RFC 6182 还把与普通 TCP、中间盒和共享瓶颈上的其他用户共存当作设计约束。所谓多路径并不是对网络提出无限制索取的理由。
第一条子流先留下可验证的来历
RFC 8684 规定,第一条子流的 SYN、SYN/ACK 和 ACK 通过 MP_CAPABLE 协商 MPTCP。该交换表明两端愿意在这条连接上使用相应版本,并交换日后认证附加子流所需的密钥材料。若必要的 MP_CAPABLE 交换缺失,例如对端不支持或中间盒剥除了选项,最终状态应回退为普通单路径 TCP。
回退并非失败之后的装饰性条款。它承认一个路径上出现的选项不能保证另一条路径仍会保留;端主机的愿望不能代替对端或中间网络的行为。初始交换能够证明的是受限的传输协商,不能证明用户身份、应用许可、IP 地址所有权,或未来路径的质量。
版本沿革也有类似的证据尺度。RFC 6824 在 2013 年以 Experimental 身份公布,供检查、试验实现和评估,并非互联网标准。RFC 8041 在 2017 年记录了当时的实现和运营经验。2020 年的 RFC 8684 以 Standards Track 身份取代 v0,并说明 v1 的澄清与修改主要由部署经验推动。这支持“运行经验改变了协议记录”的历史判断,却不能据此声称今天的采用比例、任何厂商的默认配置或普遍性能结果。
Token 是本地索引,不是一张通行证
已有连接之后,主机可以发起新的子流。MP_JOIN 的第一个 SYN 发送接收端的 Token、发送端新生成的随机数,以及发送端的 Address ID。在 v1 的 SHA-256 选择下,Token 是接收端初始密钥经 SHA-256 后取最高 32 位。它的用途很窄:让接收端把这一个新 SYN 定位到自己保存的某一条 MPTCP 连接状态。
这是一项状态查找,不是一份可携带的准入权利。
RFC 8684 特意把两个时点分开。SYN 刚到达时,新的子流尚无任何“既有”五元组可供旧连接识别,所以需用 Token 做准入时的分用。建立完成后,子流的数据包按普通 TCP 的五元组分用。Token 不会作为永久标签附着于每个数据包,也不会取代 TCP 的序号和确认检查。
Address ID 的任务也不同。发送端用它标识源地址,即便 NAT 改变了接收端看到的 IP 头,仍可关联地址公告、连接尝试和地址撤除。它并不是可路由地址,不证明发送端拥有该 IP,也不授予离开本连接之后的任何网络或应用权限。
32 位 Token 同样不承担完整认证。它使接收端能够选择状态,并在规范限定的模型中抑制某些盲目状态耗尽尝试;它不是人的秘密、业务凭证或应用层 bearer token。设计拒绝让方便的索引膨胀成万能身份。
HMAC 证明延续,策略决定接纳
查找到状态之后,MP_JOIN 仍需证明。接收端在 SYN/ACK 中返回自己的随机数和截断 HMAC;发起端在 ACK 中返回 HMAC。两个 HMAC 使用初始 MP_CAPABLE 中交换的密钥以及两端的新随机数。新随机数使旧报文记录不能直接充当这一次加入的重放。
HMAC 成功时,RFC 8684 给出的结论很精确:双方确认自己仍是该连接开始时的同一对 MPTCP peers,并且同意这条子流加入哪一条 MPTCP 连接。这是传输层范围内的对端连续性证明。它不等于自然人的身份认证,不证明企业授权、地址归属、应用请求被接受或业务效果持久存在。
更重要的是,正确 Token 也不能强制接收端接纳。Token 未知时,接收端用 TCP RST 拒绝;Token 已知但本地策略禁止接受新子流时,同样必须拒绝;缺失或错误的 HMAC 也会关闭子流。查找在前,密码证明在后,本地主机仍保留是否增加资源和状态的决定权。
这正是该机制的治理含义:发现告诉你状态在哪里;证明告诉你提议者与先前关系有何联系;控制该状态的端点决定是否给它增加新的传输成员。任何一项都不应被挪用为另一项。
建立后的五元组也不能替应用作证
完成上述步骤后,新五元组才成为被同一 MPTCP 连接管理的一条 TCP 子流。抓包可合理说明:初始 MPTCP 协商发生过,某个 Token 定位到了状态,HMAC 被校验,特定子流建立过。这些已经是有价值的传输事实。
但它们不会自动说明应用解析了字节、账户被认证、操作获准、数据库写入,或用户得到了结果。字节流的连续性与意义的连续性不是同一件事。MPTCP 的优点恰恰在于它没有假装能裁决后者。
来源与证据边界
下列 RFC 支持本文所述架构、版本状态和规范定义的行为。它们不支持当前部署规模、真实路径是否独立、某 NAT 的实现行为、产品一致性、性能收益、人的身份或应用完成情况。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
