跳到主要内容

附录 A. LDP 标签分发过程

本节以 LSR 对以下事件的响应的方式规定标签分发行为:

  • 收到 Label Request 消息;
  • 收到 Label Mapping 消息;
  • 收到 Label Abort Request 消息;
  • 收到 Label Release 消息;
  • 收到 Label Withdraw 消息;
  • 识别出新的 FEC;
  • 检测到 FEC 下一跳变化;
  • 收到 Notification 消息 / Label Request Aborted;
  • 收到 Notification 消息 / No Label Resources;
  • 收到 Notification 消息 / No Route;
  • 收到 Notification 消息 / Loop Detected;
  • 收到 Notification 消息 / Label Resources Available;
  • 检测到本地标签资源已变为可用;
  • LSR 决定不再对某个 FEC 进行标签交换;
  • 延迟的标签请求超时。

LSR 对某个事件响应的规范由三部分组成:

  1. 摘要 (Summary)。概述 LSR 对该事件响应的文字。

  2. 上下文 (Context)。一份清单, 列出规范中 "算法 (Algorithm)" 部分所引用的各个元素。(见 3。)

  3. 算法 (Algorithm)。LSR 对该事件响应的算法。

摘要可以省略 LSR 响应的细节, 例如簿记 (bookkeeping) 动作, 或取决于该 LSR 所用标签通告方式、控制方式或标签保留方式的行为。其意图是由 "算法" 部分完整且无歧义地规定 LSR 的响应。

本节中的算法使用 MPLS 架构规范 [RFC3031] 中为逐跳路由流量定义的过程。这些过程是:

  • 标签分发 (Label Distribution) 过程, 由下游 LSR 执行, 以确定何时向 LDP 对等体分发某个 FEC 的标签。该架构定义了四种标签分发过程:

    • 下游主动独立控制 (Downstream Unsolicited Independent Control), 在 [RFC3031] 中称为 PushUnconditional。

    • 下游主动有序控制 (Downstream Unsolicited Ordered Control), 在 [RFC3031] 中称为 PushConditional。

    • 下游按需独立控制 (Downstream On Demand Independent Control), 在 [RFC3031] 中称为 PulledUnconditional。

    • 下游按需有序控制 (Downstream On Demand Ordered Control), 在 [RFC3031] 中称为 PulledConditional。

  • 标签撤销 (Label Withdrawal) 过程, 由下游 LSR 执行, 以确定何时撤销先前分发给 LDP 对等体的某个 FEC 标签映射。该架构定义了单一的一种标签撤销过程。每当 LSR 断开某个标签与某个 FEC 之间的绑定时, 它 必须 (MUST) 从它先前发送过该映射的所有 LDP 对等体撤销该 FEC 标签映射。

  • 标签请求 (Label Request) 过程, 由上游 LSR 执行, 以确定何时显式请求下游 LSR 将某个标签绑定到某个 FEC 并向它发送相应的标签映射。该架构定义了三种标签请求过程:

    • 从不请求 (Request Never)。该 LSR 从不请求标签。

    • 需要时请求 (Request When Needed)。该 LSR 在需要标签时请求标签。

    • 按请求请求 (Request On Request)。该过程由非标签合并 (non-label merging) 的 LSR 使用。该 LSR 在收到针对某个标签的请求时请求标签, 此外还在它需要标签时请求。

  • 标签释放 (Label Release) 过程, 由上游 LSR 执行, 以确定何时释放先前收到的某个 FEC 的标签映射。该架构定义了两种标签释放过程:

    • 保守标签保留 (Conservative Label retention), 在 [RFC3031] 中称为 ReleaseOnChange。

    • 宽松标签保留 (Liberal Label retention), 在 [RFC3031] 中称为 NoReleaseOnChange。

  • 标签使用 (Label Use) 过程, 由 LSR 执行, 以确定何时开始使用某个 FEC 标签进行转发/交换。该架构定义了三种标签使用过程:

    • 立即使用 (Use Immediate)。该 LSR 立即使用从某个 FEC 下一跳收到的标签进行转发/交换。

    • 无环时使用 (Use If Loop Free)。只有当该 LSR 确定这样做不会造成转发环路时, 它才使用从某个 FEC 下一跳收到的标签进行转发/交换。

    • 未检测到环路时使用 (Use If Loop Not Detected)。除非该 LSR 已在该 FEC 的 LSP 中检测到环路, 该过程与 "立即使用" 相同。该 FEC 标签将被继续用于转发/交换, 直到该 FEC 的下一跳发生变化, 或不再检测到环路为止。

      本版本的 LDP 不包含环路防止机制; 因此, 下面的过程没有使用 "无环时使用" 过程。

  • 标签无路由 (Label No Route) 过程 (在 [RFC3031] 中称为 NotAvailable 过程), 由上游 LSR 执行, 以确定如何响应下游 LSR 针对某个 FEC 标签映射请求而发回的 No Route 通知。该架构规范定义了两种标签无路由过程:

    • 重试请求 (Request Retry)。该 LSR 应当在稍后时间再次发出标签请求。

    • 不重试请求 (No Request Retry)。该 LSR 应当假定当下游 LSR 拥有下一跳时, 该下游 LSR 会提供标签映射, 并且它不应重新发出该请求。