摘要

  • RFC 3038 处理的是一个具体错位:ATM 的 VPI/VCI 是本地链路标签,可能在下一跳被改写;两个相邻 ATM-LSR 却需要把 LDP 中的映射关联到同一条虚电路。
  • 点到点带内流程不把未获确认的提议当作共识:PROPOSE、匹配的 ACK、随后到达的 LDP REQUEST 构成三段握手,之后映射才携带 VCID。

一条电路,数个本地名称

2001 年 1 月,MPLS 标准试图让 ATM 交换机也能充当标签交换路由器。现有硬件已经会依据 VPI 与 VCI 字段转发信元,但这两个字段通常只在一个链路段上有意义。ATM 交换机可以在转发到下一段时改写标签。因此,某个 LDP 邻居看见的 VPI/VCI,不一定是足以标识双方正在协调的虚电路的稳定名称。

RFC 3038 在本地标签之外引入虚连接标识符,即 VCID。关键约束很直接:同一条 VC 的两端关联相同的 VCID。它不取代数据平面上用于转发信元的 VPI/VCI,也没有把本地标签变成全网唯一编号。它让相邻 ATM-LSR 将各自的本地入向或出向标签对应到一个共同身份,并把它带入 LDP 的标签信息。

时序不可混为一谈。RFC 3038 假设 VC 已经通过信令或管理方式建立;通知流程不是创建 ATM 电路,而是让两个邻居对电路身份形成可检查的关联。此后才有 LDP 请求和映射。VC 建立、本地标签、VCID 关联、分发映射以及实际数据通过,是不同层次的事实。任何一项都不能单独证明应用收到了数据。

ACK 之后仍要有第三条消息

对点到点带内 VC,上游节点选择 VCID,并通过刚建立的电路发送带有消息标识的 VCID PROPOSE。两端各自把 VCID 与本地标签关联。下游返回 ACK,其中含收到的 VCID 和消息标识;上游要核对二者是否匹配,若预期 ACK 未到,则重发提议。

随后,上游再发一条携带该消息标识的 LDP REQUEST。下游把这条请求视为上游已经收到 ACK 的证据。RFC 3038 明确说明,由于 PROPOSE 是不可靠传送,需要三个消息完成交互。下游可以知道自己发出了确认,却无法仅凭此知道对方是否收到。因此 REQUEST 到达前,它应丢弃这条 VC 上除 VCID PROPOSE 之外的分组。

交互完成后,LDP Mapping 可以在 Label TLV 中携带 VCID。这个交换确立的是邻接节点间的控制平面关联,不是应用层成功回执;它也不证明更长路径上的所有交换机均已认可,或用户流量已经通过。

连接类型决定仪式

RFC 3038 没有要求每条 ATM 链路都走同一套程序。若透明的直接点到点链路两端已经使用相同 VPI/VCI,就不需要通知。虚路径可以选择带内通知或 VPID 程序;只有一条通往邻居的 VP 时,共享 VCI 在规定条件下即可使用。永久虚电路使用带内通知。交换虚电路则可在信令字段足够宽时直接携带 VCID,也可先用较小的临时字段,或改走带内消息。

方向同样重要。上游一侧发起通知;双向 VC 每个方向各做一次,单向 VC 只做允许的方向。由此可见,「同一条电路」不是整个 ATM 云自动共享的全局名称,而是相关邻居对之间必须逐一建立的关系。

较小字段展示了临时相关标识与持久关联的差别。信令里的 BLLI 用户专用字段可以暂时标记电路,但与同一邻居尚未完成的另一笔事务不能复用该值。VCID 关联完成后,BLLI 才能释放重用。在多点情形,BLLI 在发送端唯一,却不保证在接收端唯一;接收端还要结合发送方 ATM 地址辨别。因此,稀缺临时令牌必须等到可观察的状态转换后才能回收。

RFC 3038 也定义了虚路径的 VPID 通知。此后可由 VPID 与 VCI 组合出 VCID,不必为每条 VC 独立协商。多点情形被描述为未来用途;文档同时指出,当时的 LDP 规范尚不支持组播。对于不支持 VC-merge 的交换机,新增叶节点可能要求临时拆分活动 LSP 才能发送带内通知,进而影响性能与 QoS。这些是规范陈述的约束,不是部署测量。

保持历史边界清晰

同月发布的 RFC 3033 为 ATM 呼叫信令定义会话与资源类型标识;它解决的对象不同于 RFC 3038 的 VCID,后者是在 VC 建立之后协调相邻 LDP 节点的本地标签。RFC 3036 的 FEC 定义和 MPLS 总体架构又属于不同问题。若只因几个机制都用了「标识符」一词就把它们合并,便会混淆电路建立、包分类、逐跳转发与端到端交付。

RFC Editor 目前将 RFC 3038 列为 Proposed Standard,并标注 RFC 7274 对其进行了更新。后者讨论 MPLS 特殊用途标签的分配与退役,并更新较旧的「reserved label」说法;这不等于它撤销 VCID 握手。两份文档都没有列出实际部署的实现、采用数量或互操作性测试。能稳妥得出的结论更窄:当 ATM 标签可能只在一跳内有效时,MPLS 控制面需要相邻节点共有的身份,并用一个明确交换使协商过程可以观察。

来源

Heng Lu 的文章仅作为明确标注的分析框架;Lu 并未撰写或认可 RFC 3038。