摘要

  • RFC 2105 记录的是 Cisco 的 Informational 架构:短而定长的标签索引标签信息库(TIB),设备逐跳换标并选择出接口,不必每跳都做最长前缀匹配。
  • 普通网络层路由协议先构建 FIB,标签绑定与分发机制再把结果投射为可执行状态;对目的路由而言,分配可以由拓扑而非流量触发。
  • 稳定的换标数据面可以承载目的路由、组播、路由层级、显式路径、ATM 与 QoS 等不同控制模块,但标签只证明一个局部绑定,不能证明标准共识、身份、授权、交付或完整路径。

一次精确命中,省略了此前的全部决定

RFC 2105 描述的转发动作极为克制。带标签的数据包到达后,交换机把入标签当作 TIB 的精确索引。表项中保存入标签,以及一个或多个由出标签、出接口和链路层信息组成的子项。设备替换标签与链路层字段,然后发送。

与按网络层地址做最长前缀匹配相比,短标签适合简单硬件逻辑。同一种动作既可对应单一的单播出接口,也可对应多个组播出接口。性能收益来自重复使用既有决定,而不是从标签本身发现更多事实。

这正是证据边界。观察到标签 41 被换成标签 76,只能说明某台设备在某一时刻执行了一个本地表项。标签没有解释这个表项来自哪条路由、由哪个邻居通告、是否仍与下一跳一致、是否经过授权,或数据包后来是否抵达目的地。

数据面稳定,控制面可以继续生长

Tag Switching 的重要变化不只是“查表更快”,而是把转发与控制明确分开。转发组件始终执行同一个索引、换标和发送动作。控制组件负责创建绑定并在交换机之间分发。新的路由功能可以增加新的控制模块,而不必重做高速转发逻辑。

这种分离使演进成本下降,也使责任链变长。硬件正确执行 TIB 并不能证明创建该表项的模块拿到了最新输入,更不能证明所有邻居已经收敛。数据面可能极其忠实地执行一个已经过时的控制决定。

路由先给出形状,标签再把它变成句柄

在目的地址路由场景中,标签交换机仍像路由器一样参加 OSPF、BGP 等协议,并据此建立 FIB。RFC 2105 允许下游分配、下游按需分配和上游分配三种方式。常规下游方式为每条可达路由分配标签、建立 TIB 表项,并向相邻交换机通告路由与标签的绑定。

相邻设备收到由该路由下一跳发出的绑定后,把其中的标签写入本地表项的出标签位置。绑定既可搭载在已有路由协议上,也可使用文中提出的 TDP。TIB 的入、出标签齐备后,数据包才可沿换标算法前进。

因此,标签不是独立的路由声明。先有网络层可达性,再有局部的执行句柄。TDP 也不能被倒推为后来的 LDP;RFC 5036 定义了另一套完整的发现、会话、映射和错误处理协议。

拓扑可以在第一个数据包到来前填满 TIB

当时不少快速转发方案由观察到的流触发。RFC 2105 对目的路由提出了另一条路径:FIB 表项本身就可以触发标签分配。文档明确称其由拓扑、而不是流量驱动。

这把标签状态的规模约束在路由规模之内。一个标签可绑定一条前缀,也可绑定一组路由;交换机不必先识别每条会话。流量峰值不会自动制造同等规模的控制状态。

预计算并不意味着永久正确。标签绑定的有效性仍取决于生成它的路由版本、下一跳、邻接关系和分发时点。旧表项若继续存活,交换机会高效地回答一个已经失效的问题。

普通网络层查找从未消失

未带标签的数据包必须先接受常规网络层转发,设备才能加上第一枚标签。这个动作可以发生在首跳路由器,也可以发生在路径上第一个支持 Tag Switching 的节点。

聚合点也是例外。如果若干被压缩到同一标签后的路由并不共享下一跳,设备必须重新查看网络层目的地址。聚合为了缩小状态而丢掉了差异,恰恰可能在下一次决定时需要把差异找回来。

快速路径的能力由此变得清楚:它减少重复解释,但没有消灭解释。标签适合承载已完成决定的结果,不适合替代必须保留的原始上下文。

标签栈把外部路由知识留在边界

为了让域内设备不必都保存完整的外部路由信息,RFC 2105 允许数据包携带标签栈。数据包进入一个域时,入口边界交换机在原标签之上再压入一个域内标签。内部节点只处理栈顶,用它把数据包送到出口边界;下层标签留给出口处的下一层决定。栈顶可由出口或倒数第二跳弹出。

这是一种有选择地放置知识的方式。边界保留外部路由,核心只处理较小的内部状态。然而,两枚标签不是一份旅行日志。它们属于不同局部作用域,不能说明所有控制消息、被放弃的候选路径或中途发生过的收敛过程。

同一转发动作为不同控制目标服务

组播模块先依赖 PIM 等路由程序建立共享树或源树,然后为各出接口生成局部标签并写入多出口 TIB。标签执行的是已建成的树,不负责发现接收者,也不证明接收者收到数据。

显式路由模块可以安装不同于普通目的路由的绑定,使流量工程不必改变换标硬件。代价是,一个正确的 TIB 命中可能遵循一条由外部策略选择的路径,而策略理由、容量与审批都不在标签里。

ATM 的 VPI/VCI 天然适合承载标签,但加入 Tag Switching 的 ATM 交换机仍需参加网络层路由并运行控制组件;做聚合时甚至仍需普通网络层转发。传统 ATM 控制面还可通过资源分区与 Tag Switching 并存,二者并不会相互证明。

QoS 也遵守同样边界。入口分类器可给数据包加上代表服务类别的标签,后续节点据此找到调度状态,却不必重复分类。真正的排队与调度仍是另一套机制。看到类别标签,不能推断带宽已经预留、丢包或时延符合承诺。

Informational 文档不是标准或部署收据

RFC 2105 的状态说明十分明确:它不是 IETF 工作组产品,不在标准轨,也没有规定任何 Internet 标准。Datatracker 目前将其标为 Legacy,并说明它不受 IETF 背书、在 IETF 标准流程中没有正式地位。安全章节仅写明未讨论安全问题,知识产权章节则记录 Cisco 可能寻求相关保护。

这些限制不妨碍它具有历史价值。2001 年的标准轨 RFC 3031 后来定义了 MPLS 的局部有效标签、FEC、标签栈和逐跳替换。两者结构相似,但 RFC 3031 并未按编号或标题引用 RFC 2105。稳妥的说法只能是:Tag Switching 展示了通往后来 MPLS 架构的一条道路;不能仅凭 RFC 2105 宣称直接因果、实现继承或普遍采用。

Lu Heng 关于运行代码的论述把这条边界推得更清楚:发布可以描述机制,实际运行才形成执行事实;最小初始规范应与未来的本地选择分开;符号层的叙述不能借用现实执行层的力量。对 RFC 2105 而言,文档、控制绑定、已安装 TIB 和实际交付是四张不同的收据。

来源