跳到主要内容

6. 用于 Diff-Serv 支持的 LDP 扩展

MPLS 架构不假定单一标签分发协议. [LDP] 定义了标签分发协议 (Label Distribution Protocol) 及其在 MPLS 网络中用于建立标签交换路径 (LSP) 的用法. 本节规定 LDP 的扩展, 以便在 MPLS 网络中建立支持差分服务的 LSP.

本文档定义了一个新的 LDP TLV:

  • Diff-Serv TLV

下文给出该 TLV 的详细描述.

新的 Diff-Serv TLV 相对于 LDP 是可选的. 支持使用预配置 EXP<-->PHB mapping' 且符合本规范的 E-LSP 的 Diff-Serv 能力 LSR MAY 支持 Diff-Serv TLV. 支持使用信令 EXP<-->PHB mapping' 且符合本规范的 E-LSP 的 Diff-Serv 能力 LSR MUST 支持 Diff-Serv TLV. 支持符合本规范的 L-LSP 的 Diff-Serv 能力 LSR MUST 支持 Diff-Serv TLV.

6.1. Diff-Serv TLV​

Diff-Serv TLV 具有下列格式:

用于 E-LSP 的 Diff-Serv TLV:

       0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F| Diff-Serv (0x0901) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|T| Reserved | MAPnb |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (MAPnb) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • T (1 bit): LSP Type. 对 E-LSP 置为 0

  • Reserved (27 bits): 该字段保留. 发送时必须置为零, 接收时必须忽略.

  • MAPnb (4 bits): 指示 DIFFSERV Object 中包含的 MAP 项数量. 可设置为 1 到 8 的任意值.

  • MAP (32 bits): 每个 MAP 项定义一个 EXP 字段值与一个 PHB 之间的映射. MAP 项具有下列格式:

       0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | EXP | PHBID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Reserved (13 bits): 该字段保留. 发送时必须置为零, 接收时必须忽略.

  • EXP (3 bits): 该字段包含本 MAP 项所定义的 `EXP<-->PHB mapping' 的 EXP 字段值.

  • PHBID (16 bits): 该字段包含本 MAP 项所定义的 `EXP<-->PHB mapping' 的 PHB 的 PHBID. PHBID 按 [PHBID] 规定编码.

用于 L-LSP 的 Diff-Serv TLV:

       0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F| Type = PSC (0x0901) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|T| Reserved | PSC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • T (1 bit): LSP Type. 对 L-LSP 置为 1

  • Reserved (15 bits): 该字段保留. 发送时必须置为零, 接收时必须忽略.

  • PSC (16 bits): PSC 指示该 LSP 要支持的 PHB Scheduling Class. PSC 按 [PHBID] 规定编码.

6.2. Diff-Serv 状态码取值​

为 Status TLV 的 Status Code 字段定义下列值:

         Status Code                             E   Status Data

Unexpected Diff-Serv TLV 0 0x01000001
Unsupported PHB 0 0x01000002
Invalid `EXP<-->PHB mapping' 0 0x01000003
Unsupported PSC 0 0x01000004
Per-LSP context allocation failure 0 0x01000005

6.3. 与 Diff-Serv 相关的 LDP 消息​

6.3.1. Label Request Message​

Label Request 消息的格式扩展如下, 以可选包含 Diff-Serv TLV:

    0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Label Request (0x0401) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Diff-Serv TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

6.3.2. Label Mapping Message​

Label Mapping 消息的格式扩展如下, 以可选包含 Diff-Serv TLV:

    0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Label Mapping (0x0400) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Diff-Serv TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

6.3.3. Label Release Message​

Label Release 消息的格式扩展如下, 以可选包含 Status TLV:

       0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Label Release (0x0403) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

6.3.4. Notification Message​

Notification 消息的格式扩展如下, 以可选包含 Diff-Serv TLV:

    0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Notification (0x0001) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional Parameters |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Diff-Serv TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

6.4. Diff-Serv TLV 的处理​

6.4.1. 下游主动模式中 Diff-Serv TLV 的处理​

本节描述使用下游主动模式 (Downstream Unsolicited Mode) 时的操作.

当为要使用预配置 `EXP<-->PHB mapping' 的 E-LSP 分配标签时, 下游 Diff-Serv LSR 发出不带 Diff-Serv TLV 的 Label Mapping 消息.

当为要使用信令 `EXP<-->PHB mapping' 的 E-LSP 分配标签时, 下游 Diff-Serv LSR 发出带有用于 E-LSP 的 Diff-Serv TLV 的 Label Mapping 消息, 该 TLV 为该 E-LSP 上要支持的每个 EXP 值包含一个 MAP 项.

当为 L-LSP 分配标签时, 下游 Diff-Serv LSR 发出带有用于 L-LSP 的 Diff-Serv TLV 的 Label Mapping 消息, 该 TLV 包含该 L-LSP 上要支持的 PHB Scheduling Class (PSC).

假定标签建立成功, 下游与上游 LSR 必须:

  • 按前述各节规定 (入向与出向标签) 更新其 ILM/FTN 中与已建立 LSP 关联的 Diff-Serv Context,

  • 为该 NHLFE (出向标签) 安装所需的 Diff-Serv 转发处理 (调度与丢弃行为).

收到带有多个 Diff-Serv TLV 的 Label Mapping 消息的上游 Diff-Serv LSR 仅将第一个视为有意义. 该 LSR 必须忽略且不得转发后续 Diff-Serv TLV.

收到带有用于 E-LSP 的 Diff-Serv TLV 的 Label Mapping 消息, 且不支持一个或多个 MAP 项中编码的特定 PHB 的上游 Diff-Serv LSR, 必须通过发送包含 Label TLV 以及 Status Code 为 `Unsupported PHB' 的 Status TLV 的 Label Release 消息来拒绝该映射.

收到带有用于 E-LSP 的 Diff-Serv TLV 的 Label Mapping 消息, 且判定所信令的 EXP<-->PHB mapping' 无效的上游 Diff-Serv LSR, 必须通过发送包含 Label TLV 以及 Status Code 为 Invalid EXP<-->PHB mapping' 的 Status TLV 的 Label Release 消息来拒绝该映射. 用于 E-LSP 的 DIFFSERV Object 中信令的 `EXP<-->PHB mapping' 在下列情况下无效:

  • MAPnb 字段不在 1 到 8 的范围内, 或

  • 某个给定 EXP 值出现在多于一个 MAP 项中, 或

  • PHBID 编码无效

收到带有用于 L-LSP 的 Diff-Serv TLV 的 Label Mapping 消息, 且其中包含不受支持的 PSC 值的上游 Diff-Serv LSR, 必须通过发送包含 Label TLV 以及 Status Code 为 `Unsupported PSC' 的 Status TLV 的 Label Release 消息来拒绝该映射.

6.4.2. 下游按需模式中 Diff-Serv TLV 的处理​

本节描述使用下游按需模式 (Downstream on Demand Mode) 时的操作.

当为要使用预配置 `EXP<-->PHB mapping' 的 E-LSP 请求标签时, 上游 Diff-Serv LSR 发送不带 Diff-Serv TLV 的 Label Request 消息.

当为要使用信令 `EXP<-->PHB mapping' 的 E-LSP 请求标签时, 上游 Diff-Serv LSR 发送带有用于 E-LSP 的 Diff-Serv TLV 的 Label Request 消息, 该 TLV 为该 E-LSP 上要支持的每个 EXP 值包含一个 MAP 项.

当为 L-LSP 请求标签时, 上游 Diff-Serv LSR 发送带有用于 L-LSP 的 Diff-Serv TLV 的 Label Request 消息, 该 TLV 包含该 L-LSP 上要支持的 PSC.

下游 Diff-Serv LSR 在响应针对 E-LSP 或 L-LSP 的 Label Request 消息而发送 Label Mapping 消息时, 不得在该 Label Mapping 消息中包含 Diff-Serv TLV. 假定标签建立成功, 下游与上游 LSR 必须:

  • 按前述各节规定 (入向与出向标签) 更新其 ILM/FTN 中与已建立 LSP 关联的 Diff-Serv Context,

  • 为该 NHLFE (出向标签) 安装所需的 Diff-Serv 转发处理 (调度与丢弃行为).

在响应其 Label Request 消息时收到包含 Diff-Serv TLV 的 Label Mapping 消息的上游 Diff-Serv LSR, 必须通过发送包含 Label TLV 以及 Status Code 为 `Unexpected Diff-Serv TLV' 的 Status TLV 的 Label Release 消息来拒绝该标签映射.

收到带有多个 Diff-Serv TLV 的 Label Request 消息的下游 Diff-Serv LSR 仅将第一个视为有意义. 该 LSR 必须忽略且不得转发后续 Diff-Serv TLV.

收到带有用于 E-LSP 的 Diff-Serv TLV 的 Label Request 消息, 且不支持一个 (或多个) MAP 项中编码的特定 PHB 的下游 Diff-Serv LSR, 必须通过发送包含 Status Code 为 `Unsupported PHB' 的 Status TLV 的 Notification 消息来拒绝该请求.

收到带有用于 E-LSP 的 Diff-Serv TLV 的 Label Request 消息, 且判定所信令的 EXP<-->PHB mapping' 无效的下游 Diff-Serv LSR, 必须通过发送包含 Status Code 为 Invalid EXP<-->PHB mapping' 的 Status TLV 的 Notification 消息来拒绝该请求. 用于 E-LSP 的 DIFFSERV TLV 中信令的 `EXP<-->PHB mapping' 在下列情况下无效:

  • MAPnb 字段不在 1 到 8 的范围内, 或

  • 某个给定 EXP 值出现在多于一个 MAP 项中, 或

  • PHBID 编码无效

收到带有用于 L-LSP 的 Diff-Serv TLV 的 Label Request 消息, 且其中包含不受支持的 PSC 值的下游 Diff-Serv LSR, 必须通过发送包含 Status Code 为 `Unsupported PSC' 的 Status TLV 的 Notification 消息来拒绝该请求.

在 Label Request 消息中识别 Diff-Serv TLV Type 但无法分配所需的每 LSP 上下文信息的下游 Diff-Serv LSR, 必须通过发送包含 Status Code 为 `Per-LSP context allocation failure' 的 Status TLV 的 Notification 消息来拒绝该请求.

在 Label Request 消息中识别 Diff-Serv TLV Type 并支持所请求 PSC, 但因其他原因 (例如无可用标签) 无法满足标签请求的下游 Diff-Serv LSR, 必须按现有 LDP 规程 [LDP] 发送 Notification 消息 (例如 Status Code 为 `No Label Resource'). 该 Notification 消息必须包含所请求的 Diff-Serv TLV.

6.5. 不处理 Diff-Serv TLV​

不识别 Diff-Serv TLV Type 的 LSR, 在收到包含 Diff-Serv TLV 的 Label Request 消息或 Label Mapping 消息时, 必须按 [LDP] 对 U Bit 与 F Bit 均置为 0 的未知 TLV 规定的规程行为, 即它必须忽略该消息, 并返回 Status 为 `Unknown TLV' 的 Notification 消息.

6.6. 带宽信息​

也可在 E-LSP 与 L-LSP 建立时信令带宽信息, 例如为流量工程目的, 使用 [MPLS CR LDP] 中描述的 Traffic Parameters TLV.