跳到主要内容

1. LDP 概述

MPLS 架构 [RFC3031] 将标签分发协议 (label distribution protocol) 定义为一组过程, 一台标签交换路由器 (Label Switching Router, LSR) 通过这组过程, 将它所使用的、用于在彼此之间以及穿过它们转发流量的标签的含义告知另一台 LSR。

MPLS 架构并不假定只有单一的一种标签分发协议。事实上, 目前正在标准化若干不同的标签分发协议。已有协议已被扩展, 使得标签分发可以搭载 (piggyback) 在它们之上。也有一些新协议是专门为分发标签这一明确目的而定义的。MPLS 架构讨论了在为特定 MPLS 应用 (例如流量工程 (Traffic Engineering) [RFC2702]) 选择标签分发协议时应考虑的一些问题。

标签分发协议 (Label Distribution Protocol, LDP) 是一种为分发标签而定义的协议。它最初于 2001 年 1 月作为 RFC 3036 发布。它由 IETF 的 MPLS 工作组制定, 由 Loa Andersson、Paul Doolan、Nancy Feldman、Andre Fredette 和 Bob Thomas 共同撰写。

LDP 是一种为分发标签而定义的协议。它是一组过程和消息, 标签交换路由器 (LSR) 通过这些过程和消息, 将网络层路由信息直接映射到数据链路层交换路径, 从而在网络中建立标签交换路径 (Label Switched Path, LSP)。这些 LSP 的端点可以位于直接相连的邻居 (类似于 IP 逐跳转发), 也可以位于网络出口节点 (egress node), 从而使分组可以经由所有中间节点进行交换。

LDP 为它创建的每条 LSP 关联一个转发等价类 (Forwarding Equivalence Class, FEC) [RFC3031]。与一条 LSP 关联的 FEC 规定了哪些分组被"映射"到该 LSP。当每台 LSR 将某个 FEC 的入标签"拼接 (splice)"到为该 FEC 的下一跳分配的出标签上时, LSP 就在网络中延伸。

有关 LDP 适用性的更多信息见 [RFC3037]。

本文档假定 (但不要求) 读者熟悉 MPLS 架构 [RFC3031]。请注意, [RFC3031] 包含一个 MPLS 术语表, 例如入口 (ingress)、标签交换路径等。

1.1. LDP 对等体​

两台使用 LDP 交换标签/FEC 映射信息的 LSR 相对于该信息而言被称为 "LDP 对等体 (LDP Peers)", 并且我们说它们之间存在一个 "LDP 会话 (LDP Session)"。一个 LDP 会话允许每个对等体获知对方的标签映射; 也就是说, 该协议是双向的。

1.2. LDP 消息交换​

LDP 消息有以下四类:

  1. 发现 (Discovery) 消息, 用于通告和维护一台 LSR 在网络中的存在。

  2. 会话 (Session) 消息, 用于建立、维护和终止 LDP 对等体之间的会话。

  3. 通告 (Advertisement) 消息, 用于创建、改变和删除 FEC 的标签映射。

  4. 通知 (Notification) 消息, 用于提供建议性 (advisory) 信息和信号错误信息。

发现消息提供了一种机制, LSR 通过它周期性地发送 Hello 消息来表明自己在网络中的存在。该消息作为 UDP 分组发送到 'all routers on this subnet' 组播地址上的 LDP 端口。当一台 LSR 选择与通过 Hello 消息获知的另一台 LSR 建立会话时, 它在 TCP 传输之上使用 LDP 初始化过程。初始化过程成功完成后, 这两台 LSR 即成为 LDP 对等体, 可以交换通告消息。

何时向对等体请求标签或通告标签映射在很大程度上是 LSR 的本地决定。一般而言, LSR 在需要时向相邻 LSR 请求标签映射, 并在希望邻居使用某个标签时向该相邻 LSR 通告标签映射。

LDP 的正确运行要求消息可靠且按序交付。为满足这些要求, LDP 对会话、通告和通知消息 (即除基于 UDP 的发现机制之外的所有消息) 使用 TCP 传输。

1.3. LDP 消息结构​

所有 LDP 消息都有一个公共结构, 它使用类型-长度-值 (Type-Length-Value, TLV) 编码方案; 见 "Type-Length-Value Encoding" 一节。TLV 编码对象 (简称 TLV) 的 Value 部分本身可以包含一个或多个 TLV。

1.4. LDP 错误处理​

LDP 错误和其他值得关注的事件通过通知 (Notification) 消息向 LDP 对等体发出信号。

LDP 通知消息有两类:

  1. 错误通知 (Error Notification), 用于信号致命错误。如果一台 LSR 从对等体收到针对某个 LDP 会话的错误通知, 它通过关闭该会话的 TCP 传输连接, 并丢弃通过该会话学到的所有标签映射, 来终止该 LDP 会话。

  2. 建议通知 (Advisory Notification), 用于传递关于该 LDP 会话的信息, 或关于从对等体先前收到的某条消息的状态的信息。

1.5. LDP 可扩展性与未来兼容性​

将来可能会向 LDP 添加功能。未来的功能很可能会使用新的消息和对象类型 (TLV)。可能希望在使用不识别这些新消息和 TLV 的较旧实现的网络中使用它们。虽然不可能使每一项未来的增强都向后兼容, 但事先做一些规划可以简化新能力的引入。为此, 本规范定义了处理未知消息类型和未知 TLV 的规则。

1.6. 规范语言​

本文档中的关键词 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 应按照 [RFC2119] 中的描述来解释。