跳到主要内容

RFC 3031 - 多协议标签交换体系结构 (Multiprotocol Label Switching Architecture)

Network Working Group E. Rosen Request for Comments: 3031 Cisco Systems, Inc. Category: Standards Track A. Viswanathan R. Callon January 2001

本备忘录状态

本文档为互联网标准跟踪协议. 分发不受限制.

版权声明

Copyright (C) The Internet Society (2001). All Rights Reserved.

摘要 (Abstract)

本文档规定多协议标签交换 (Multiprotocol Label Switching, MPLS) 的体系结构.

目录

  1. 规范用语
  2. MPLS 引言
  3. MPLS 基础
  4. 若干 MPLS 应用
  5. 标签分发规程 (逐跳)
  6. 安全考虑 7–10. 知识产权、作者、参考文献、版权全文

1. 规范用语 (Specification)

关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 与 "OPTIONAL" 的解释见 RFC 2119.

2. MPLS 引言 (Introduction to MPLS)

本文档规定 MPLS 体系结构. 组播上的 MPLS 使用留待进一步研究.

2.1 概述 (Overview)

在无连接网络层协议中, 分组从一台路由器到下一台时, 每台路由器独立做出转发决策: 分析分组首部并运行网络层路由算法, 独立选择下一跳.

选择下一跳可视为两个函数的复合:

  1. 将所有可能分组划分到一组 转发等价类 (Forwarding Equivalence Classes, FECs);
  2. 将每个 FEC 映射到一个下一跳.

就转发决策而言, 映射到同一 FEC 的不同分组不可区分. 属于特定 FEC 且从特定节点出发的所有分组走同一路径 (或多路径路由时走与该 FEC 关联的路径集合之一).

在传统 IP 转发中, 路由器通常在路由表中存在地址前缀 X 且 X 是各分组目的地址的 最长匹配 时, 认为两分组属于同一 FEC. 分组穿越网络时, 每一跳都重新检查分组并分配 FEC.

在 MPLS 中, 将特定分组分配到特定 FEC 仅在分组进入网络时做一次. 该 FEC 被编码为称为 "标签 (label)" 的短固定长度值. 转发到下一跳时标签随分组一起发送, 即分组在转发前被 "打标签".

后续各跳不再分析网络层首部, 而是用标签作为表索引, 得到下一跳与新标签; 旧标签被替换为新标签后转发.

MPLS 转发范式的优势包括:

  • 仅能做标签查找与替换 (不能或不能以足够速度分析网络层首部) 的交换机也可转发;
  • 入口可用首部之外的信息 (例如入端口) 分配 FEC;
  • 不同入口可对同一分组打不同标签, 从而易于实现依赖入口的转发决策;
  • 决定如何分配 FEC 的策略可日益复杂, 而不影响仅转发已打标签分组的路由器;
  • 可用标签表示显式路由 (流量工程/策略), 而无需在分组中携带完整源路由编码.

标签也可 (但非必须) 完全或部分推断优先级或服务类别 (CoS), 即标签可表示 FEC 与 CoS 的组合.

"Multiprotocol" 表示技术适用于 任何 网络层协议; 本文档聚焦 IP. 支持 MPLS 的路由器称为 标签交换路由器 (Label Switching Router, LSR).

2.2 术语 (Terminology)

术语含义
FEC以相同方式转发的 IP 分组集合 (路径与转发处理相同)
label短固定长度、通常本地有意义的标识符, 用于标识 FEC
label merging将同一 FEC 的多个入标签替换为单一出标签
label swap基本转发操作: 查入标签得输出标签、封装、端口等
label stack有序标签集合
LSP某一层次上、特定 FEC 的分组所经的一条或多台 LSR 路径
LSR能转发原生 L3 分组的 MPLS 节点
NHLFENext Hop Label Forwarding Entry (下一跳标签转发项)
ILMIncoming Label Map (入标签映射)
FTNFEC-to-NHLFE Map
MPLS domain运行 MPLS 且同属一路由/管理域的连续节点集
ingress / egress流量进入/离开 MPLS 域时的边缘节点角色
loop detection / prevention允许环后再检测 / 从不在环上发送数据
VC merge / VP mergeATM 上基于 VCI 或 VPI 的标签合并

2.3 缩略语

ATM, BGP, DLCI, FEC, FTN, IGP, ILM, LDP, LSP, LSR, MPLS, NHLFE, TTL, VCI, VPI 等 (见英文源完整表).

3. MPLS 基础 (MPLS Basics)

3.1 标签 (Labels)

标签是短、固定长度、本地有意义的标识符, 用于标识 FEC. 标签通常 不是 网络层地址的编码. 两台 LSR Ru 与 Rd 可约定: 当 Ru 发送某 FEC 的分组给 Rd 时携带特定标签值.

3.2 上游与下游 LSR

就某绑定而言, 下游 LSR 是分配标签并通告绑定的一方; 上游 是接收绑定并在转发时使用该标签的一方. 数据沿上游 → 下游方向流动.

3.3 已打标签分组 (Labeled Packet)

携带标签 (或标签栈) 的分组. 无标签的原生网络层分组由边缘用 FTN 映射后推入标签.

3.4–3.6 标签分配、绑定属性与分发协议

下游 LSR 创建标签与 FEC 的绑定, 并通过 标签分发协议 告知上游. 绑定可有属性 (生存期、CoS 等). 分发协议可以是 LDP、BGP 承载标签、RSVP-TE 等.

3.7 主动下游 vs 按需下游

  • Unsolicited Downstream: 下游主动分发绑定.
  • Downstream-on-Demand: 上游请求后下游才分发.

3.8 标签保持模式

  • Conservative: 仅保留下一跳相关绑定, 节省标签.
  • Liberal: 保留更多邻居的绑定, 切换下一跳更快.

3.9 标签栈 (Label Stack)

有序标签集合, 栈顶用于当前转发. 操作: push (压入)、swap (替换)、pop (弹出). 支持层次化隧道.

3.10 NHLFE

下一跳标签转发项描述: 下一跳、出标签栈操作 (替换/弹出/压入)、链路封装、如何编码标签等.

3.11 ILM

入标签 映射到一组 NHLFE. 已打标签分组的转发查 ILM.

3.12 FTN

FEC 映射到 NHLFE. 未打标签分组在入口查 FTN 后打标签转发.

3.13 标签交换 (Label Swapping)

对入标签分组: 用入标签查 ILM → NHLFE → 执行栈操作 → 发往下一跳.

3.14 标签的作用域与唯一性

标签通常在特定接口或平台范围内唯一. Per-platformper-interface 标签空间影响合并与分配.

3.15 LSP、入口与出口

LSP 是某 FEC 在某一层次上经过的路径. LSP 入口 将分组分配到 FEC 并压入标签; LSP 出口 弹出标签并可能恢复 L3 转发.

3.16 倒数第二跳弹出 (Penultimate Hop Popping, PHP)

出口的上游邻居弹出栈顶标签, 使出口直接处理内层 (IP 或下一标签), 减轻出口负担. 使用 implicit NULL 等机制信令.

3.17–3.18 LSP 下一跳与无效入标签

LSP 下一跳是 NHLFE 所指邻居. 无效入标签的处理是本地事务 (丢弃、ICMP 等), 需谨慎以免环路.

3.19 有序 vs 独立 LSP 控制

  • Independent: 各 LSR 独立绑定并通告.
  • Ordered: 从出口 (或具有既有绑定者) 向入口有序建立, 有利于流量工程与环路控制.

3.20 聚合 (Aggregation)

多个细粒度 FEC 可聚合为更粗 FEC 以节省标签, 在粒度与可扩展性间权衡.

3.21 路由选择

LSP 可遵循 IGP 逐跳路由, 或使用显式路由 (ER-LSP).

3.22 缺少出标签

若无合适出标签, 可丢弃、请求标签、或回退 L3 转发 (取决于配置与角色).

3.23 TTL

MPLS TTL 用于环路抑制与 traceroute 类诊断; 与 IP TTL 的映射规则在入口/出口定义 (后续 RFC 细化).

3.24 环路控制

环路检测 (path vector/hop count 等) 与环路预防. 有序控制有助于预防.

3.25 标签编码

  • 专用 MPLS "shim" 首部 (链路层与网络层之间);
  • ATM VPI/VCI 作为标签;
  • Frame Relay DLCI 作为标签.

需考虑不同编码技术之间的互操作.

3.26 标签合并

多入标签 → 单出标签, 形成 multipoint-to-point 树, 节省资源. ATM 上需处理信元交错 (VC merge / VP merge).

3.27 隧道与层次

  • 逐跳路由隧道 / 显式路由隧道;
  • LSP 隧道: 用外层标签封装;
  • 层次: LSP 内嵌套 LSP (标签栈加深);
  • 标签分发对等关系可随层次变化.

3.28–3.29 分发协议传输与为何多种协议

分发协议可运行在 TCP 等之上. 多种协议并存的原因: BGP 适合分发某些绑定; RSVP 适合流量规格与显式路由 TE; LDP 适合常规逐跳 IGP 路径上的标签.

3.30 组播

MPLS 组播留待进一步研究 (后续 mLDP 等规范填补).

4. 若干 MPLS 应用 (Some Applications of MPLS)

4.1 逐跳路由流量

4.1.1–4.1.3 地址前缀标签

为 IGP 前缀分发标签, 使 LSP 跟随逐跳路由. 对等体通常是路由下一跳邻居.

4.1.4–4.1.5 出口与隐式空

真正出口与 代理出口; Implicit NULL 触发 PHP.

4.1.6 面向出口的标签分配 (可选)

可选方案减少标签数量, 按出口聚合.

4.2 显式路由 LSP

ER-LSP / 隧道支持流量工程、策略路由、快速重路由路径指定.

4.3 标签栈与隐式对等

栈使非直连 LSR 间形成逻辑标签对等, 中间节点只处理外层.

4.4 多路径路由

同一 FEC 可对应多个 NHLFE (ECMP); 转发时在集合中选择.

4.5 LSP 树作为多点到点实体

标签合并自然形成 MP2P 树, 多入口汇聚到出口.

4.6 BGP 边界路由器之间的 LSP 隧道

ASBR/PE 间用 MPLS 隧道承载 BGP 路由流量, 核心不必运行 eBGP 到每个前缀 (经典 BGP-free core / VPN 基础).

4.7–4.8 其他隧道用途与组播

层次化运维、跨域等; 组播另议.

5. 标签分发规程 (Hop-by-Hop)

本节以抽象规程描述上游/下游如何广告与使用标签 (与具体 LDP 消息映射见 RFC 5036 等).

5.1 广告与使用标签的规程

下游: Distribution Procedure

  • PushUnconditional / PushConditional: 无条件或有条件主动推送绑定.
  • PulledUnconditional / PulledConditional: 响应请求的推送策略.

上游: Request / NotAvailable / Release / labelUse

  • RequestNever / RequestWhenNeeded / RequestOnRequest
  • RequestRetry / RequestNoRetry
  • ReleaseOnChange / NoReleaseOnChange
  • UseImmediate / UseIfLoopNotDetected

下游: Withdraw Procedure

撤销已分发绑定.

5.2 支持的规程组合 (Schemes)

文档列出支持标签合并与不支持合并的 LSR 可互操作的规程组合, 以及互操作注意点.

6. 安全考虑 (Security Considerations)

MPLS 本身不提供加密. 威胁包括伪造标签导致误转发、控制平面注入错误绑定、拓扑泄露. 部署应保护标签分发会话 (认证)、限制对等体、过滤异常标签. 与底层链路/IP 安全机制配合.

7–10. 知识产权、作者地址、参考文献、版权

作者: Eric Rosen (Cisco), Arun Viswanathan, Ross Callon (Juniper). 完整参考文献见英文源 docs/rfc-3031/index.md.

概念关系简图

未打标签分组 --FTN--> NHLFE --push--> 带标签分组
带标签分组 --ILM--> NHLFE --swap/pop/push--> 下一跳
入口: 分类→FEC→压栈
中转: 交换栈顶
出口/PHP: 弹栈→L3 或内层标签

相关资源


说明: 英文源约 138KB. 本中文版按完整章节结构翻译体系结构概念、全部基础机制 (3.x)、主要应用 (4.x) 与分发规程框架 (5.x). 冗长规程组合表与 ATM 细节边界情况请对照英文源实现与互操作测试.

Notes complémentaires / 補足 / Ergänzung / Note

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.

This supplemental section restates operational guidance for implementers: authenticate control-plane sessions, rate-limit diagnostics, validate FEC/label consistency, test make-before-break or session restart, monitor state scale, and always treat the English RFC bit diagrams and IANA tables as authoritative for wire encoding. 部署时请结合实验室互通测试与灰度发布, 观察会话稳定性、标签空间与错误码分布. 運用ではセッション安定性・ラベル空間・エラーコード分布を監視し、英文の符号化を最終根拠とする. En production, surveillez stabilité des sessions, espace de labels et codes d'erreur; l'anglais fait foi pour l'encodage. Im Betrieb Sitzungsstabilität, Labelraum und Fehlercodes überwachen; Englisch ist maßgeblich für die Kodierung. In esercizio monitorare stabilità sessioni, spazio label e codici di errore; l'inglese è autorevole per la codifica.