Skip to content

连接机制

本章主要讲述 MSST-Net 的连接机制。

虚拟网络地址

MSST-Net 为每个接入设备分配一组固定的虚拟 IP 地址,用于设备间通信。

虚拟地址范围:

  • IPv4:172.22.0.0/16
  • IPv6:fd22:2222:2222:2222::/64

每个设备的虚拟 IP 由其设备 ID 确定性推导而来,因此在不同会话间保持不变。


数据加密

MSST-Net 使用 WireGuard 协议对设备间传输的所有数据进行加密。

每个设备在首次启动时生成唯一的 Curve25519 密钥对。公钥在设备注册时提交至协调器,用于与对端建立加密信道。


连接路径

MSST-Net 会自动选择最优的连接路径,将设备间的数据流量路由到延迟最低的通道。

连接路径有以下三种模式:

模式说明
中继(Relay)数据通过中继服务器转发
探测(Probing)正在探测直连路径,数据仍经中继转发
直连(Direct)建立了点对点直连,数据不经过中继

中继模式

中继模式是所有连接的初始状态。

在此模式下,数据包通过 MSST-Net 中继服务器进行转发,不受 NAT 或防火墙限制。

中继模式是最稳定的连接方式,但延迟高于直连。


探测模式

当系统获取到对端的网络端点信息时,会进入探测模式,尝试建立点对点直连。

在探测阶段,数据仍通过中继转发,不影响正常通信。

探测过程会向对端的各个候选地址(包括 IPv6 和 IPv4,优先测试 IPv6)发送探测包,并统计响应情况。

升级至直连的条件

同时满足以下两个条件,才会从探测模式升级为直连模式:

  1. 连续成功响应:对某个候选地址连续收到 10 次以上探测回包
  2. 延迟优势:P2P 路径的往返延迟(RTT)不超过中继路径 RTT 的 80%

对于局域网内的设备,条件 2 自动满足(局域网端点无条件优先)。


直连模式

直连模式下,数据包直接在两台设备间传输,无需经过中继服务器,延迟更低、性能更佳。

直连建立后,系统会持续监控连接质量,并在以下情况下自动降级回中继模式:

降级原因行为
连续 3 次未收到保活回包立即降级
往返延迟突增至基准值 3 倍以上立即降级
保持期结束后丢包率超过 20%降级

降级后,系统会继续探测,在条件满足时重新升级为直连。


保持期

每次路径切换(包括升级和降级)后,系统会进入 20 秒的保持期

在保持期内,不会主动发起新的路径升级(但路径失效导致的降级不受此限制)。

保持期的目的是避免网络抖动时路径频繁切换。


连接协商

当两台设备需要建立连接时,协调器会通过 WebSocket 信道将双方的端点信息和加密公钥相互通知,触发 P2P 探测。

设备的端点信息由客户端在加入房间或网络时自动检测并上报,包括:

  • 本机局域网地址
  • NAT 映射后的公网地址(通过 STUN 检测)

IPv6 支持

MSST-Net 优先使用 IPv6 进行直连探测。

若本机网络不支持 IPv6 路由,系统会自动回退至 IPv4。

在 IPv4 和 IPv6 双栈环境下,IPv6 候选地址会优先参与探测。

由 MSST-Net 开发组设计,Claude Code 开发