跳转至

打洞与会话建立

「打洞」指通过协调双方在同一时刻向对端候选地址发送报文,以期在 NAT 上形成可接受的入站过滤状态,从而建立双向数据通道。本章与 ICE(Interactive Connectivity Establishment)等成熟框架思想对齐,但保持实现无关的叙述,便于在 LoongLink 边缘接入主题下自定义状态机。

基本要素

要素 说明
候选(Candidate) 主机可尝试的本地、反射(Server Reflexive)、中继(Relayed)等地址
候选对(Pair) 本地候选与远端候选的组合
连通性检查 按优先级对候选对发送 STUN Binding 类请求并验证响应
提名(Nomination) 选定最终使用的候选对,避免后续抖动(策略因设计而异)

优先级与排序(研究关注点)

常见启发式:直连优先于反射,反射优先于中继;同类型下 RTT 低者优先。研究上应显式记录:

  • 排序函数版本与权重;
  • 是否启用 aggressive nomination 或等价策略;
  • 对称 NAT 检测失败时的早退条件。

可复现性

排序与超时参数应作为配置文件编译时常量纳入实验包版本管理,见 代码与可复现资源

典型失败模式

现象 可能原因 建议诊断动作
一方永远无响应 过滤行为过严、UDP 被丢弃 尝试 TCP/TLS 载体或中继
间歇成功 映射超时、移动网络重绑定 缩短保活、记录 RAT 切换事件
单向通 非对称路由、错误本地候选 双向抓包对比五元组

与信令面的耦合

打洞依赖候选交换时序同步。信令通道应具备:

  • 低时延与可靠投递(相对数据面的「尽力而为」);
  • 抗重放与完整性保护(与 身份、密钥与信任 联动)。

状态机草案(抽象)

可简化为:GatheringCheckingConnected / Failed;失败经退避后进入 RelayRequired 或整体重启会话。正式消息名与超时表见 协议与数据面草案

开放问题

  • 大规模并发会话下的 CPU 与定时器开销:候选对爆炸时的剪枝策略。
  • QUIC 连接迁移交互:打洞状态是否需在连接 ID 变化时重建。

下一专题中继与路径选择