跳到主要内容

RFC 3270 - 多协议标签交换 (MPLS) 对差分服务的支持

Network Working Group F. Le Faucheur, Editor Request for Comments: 3270 L. Wu Category: Standards Track B. Davie Cisco Systems S. Davari PMC-Sierra Inc. P. Vaananen Nokia R. Krishnan Axiowave Networks P. Cheval Alcatel J. Heinanen Song Networks May 2002

             Multi-Protocol Label Switching (MPLS)
Support of Differentiated Services

本备忘录状态 (Status of this Memo)

本文档为 Internet 社区规定了一项 Internet 标准轨协议, 并请求讨论与改进建议. 请参阅现行版 "Internet Official Protocol Standards" (STD 1) 以了解本协议的标准化状态. 本备忘录的分发不受限制.

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

摘要 (Abstract)

本文档定义了一种在多协议标签交换 (Multi-Protocol Label Switching, MPLS) 网络上支持差分服务 (Differentiated Services, Diff-Serv) 的灵活解决方案.

该方案允许 MPLS 网络管理员选择如何将 Diff-Serv 行为聚合 (Behavior Aggregate, BA) 映射到标签交换路径 (Label Switched Path, LSP), 从而在其特定网络中最好地匹配 Diff-Serv, 流量工程 (Traffic Engineering) 与保护目标. 例如, 该方案允许网络管理员决定不同的 BA 集合是映射到同一 LSP, 还是映射到不同的 LSP.

目录 (Table of Contents)

  1. 简介 (Introduction) . . . . . . . . . . . . . . . . . . . . . . 3 1.1 术语 (Terminology). . . . . . . . . . . . . . . . . . . . . . 5 1.2 EXP 推断 PSC 的 LSP (E-LSP) . . . . . . . . . . . . . . . . . . 6 1.3 仅由标签推断 PSC 的 LSP (L-LSP). . . . . . . . . . . . . . . . 7 1.4 总体操作 (Overall Operations). . . . . . . . . . . . . . . . . 7 1.5 标签与 FEC 的关系 . . . . . . . . . . . . . . . . . . . . . . . 8 1.6 E-LSP 与 L-LSP 的带宽预留 . . . . . . . . . . . . . . . . . . . 8
  2. Diff-Serv LSR 的标签转发模型与隧道模型 . . . . . . . . . . . . . 9 2.1 Diff-Serv LSR 的标签转发模型 . . . . . . . . . . . . . . . . . . 9 2.2 入向 PHB 判定 (Incoming PHB Determination). . . . . . . . . . .10 2.3 可选流量调节下的出向 PHB 判定 . . . . . . . . . . . . . . . .11 2.4 标签转发 (Label Forwarding). . . . . . . . . . . . . . . . . .11 2.5 将 Diff-Serv 信息编码到封装层 . . . . . . . . . . . . . . . . .13 2.6 基于 MPLS 的 Diff-Serv 隧道模型 . . . . . . . . . . . . . . . .13
  3. E-LSP 的详细操作 . . . . . . . . . . . . . . . . . . . . . . . .22 3.1 E-LSP 定义 . . . . . . . . . . . . . . . . . . . . . . . . . .22 3.2 为入向 E-LSP 填充 Encaps-->PHB mapping' . . . . . . . . . . .23 3.3 入向 E-LSP 上的入向 PHB 判定 . . . . . . . . . . . . . . . . .23 3.4 为出向 E-LSP 填充 Set of PHB-->Encaps mappings' . . . . . . .24 3.5 在出向 E-LSP 上将 Diff-Serv 信息编码到封装层 . . . . . . . .26 3.6 E-LSP 合并 (E-LSP Merging) . . . . . . . . . . . . . . . . . .27
  4. L-LSP 的详细操作 . . . . . . . . . . . . . . . . . . . . . . .28 4.1 L-LSP 定义 . . . . . . . . . . . . . . . . . . . . . . . . . .28 4.2 为入向 L-LSP 填充 Encaps-->PHB mapping' . . . . . . . . . . .28 4.3 入向 L-LSP 上的入向 PHB 判定 . . . . . . . . . . . . . . . . .30 4.4 为出向 L-LSP 填充 Set of PHB-->Encaps mappings' . . . . . . .31 4.5 在出向 L-LSP 上将 Diff-Serv 信息编码到封装层 . . . . . . . .33 4.6 L-LSP 合并 (L-LSP Merging) . . . . . . . . . . . . . . . . . .34
  5. 用于 Diff-Serv 支持的 RSVP 扩展 . . . . . . . . . . . . . . . .34 5.1 与 Diff-Serv 相关的 RSVP 消息格式 . . . . . . . . . . . . . .34 5.2 DIFFSERV Object . . . . . . . . . . . . . . . . . . . . . . .35 5.3 处理 DIFFSERV Object . . . . . . . . . . . . . . . . . . . . .37 5.4 不支持 DIFFSERV Object . . . . . . . . . . . . . . . . . . . .40 5.5 Diff-Serv 错误码 . . . . . . . . . . . . . . . . . . . . . . .40 5.6 Intserv 服务类型 . . . . . . . . . . . . . . . . . . . . . . .41
  6. 用于 Diff-Serv 支持的 LDP 扩展 . . . . . . . . . . . . . . . .41 6.1 Diff-Serv TLV . . . . . . . . . . . . . . . . . . . . . . . .42 6.2 Diff-Serv 状态码取值 . . . . . . . . . . . . . . . . . . . . .44 6.3 与 Diff-Serv 相关的 LDP 消息 . . . . . . . . . . . . . . . . .44 6.4 Diff-Serv TLV 的处理 . . . . . . . . . . . . . . . . . . . . .46 6.5 不处理 Diff-Serv TLV . . . . . . . . . . . . . . . . . . . . .49 6.6 带宽信息 . . . . . . . . . . . . . . . . . . . . . . . . . . .49
  7. 在 PPP, LAN, Non-LC-ATM 与 Non-LC-FR 接口上的 MPLS Diff-Serv 支持 .49
  8. 在 LC-ATM 接口上的 MPLS Diff-Serv 支持 . . . . . . . . . . . . .50 8.1 ATM 业务类别与流量管理机制的使用 . . . . . . . . . . . . . . .50 8.2 带有 LC-ATM 接口的 LSR 实现 . . . . . . . . . . . . . . . . . .50
  9. 在 LC-FR 接口上的 MPLS Diff-Serv 支持 . . . . . . . . . . . . .51 9.1 Frame Relay 流量参数与流量管理机制的使用 . . . . . . . . . . .51 9.2 带有 LC-FR 接口的 LSR 实现 . . . . . . . . . . . . . . . . . .51
  10. IANA 考虑 . . . . . . . . . . . . . . . . . . . . . . . . . .52
  11. 安全考虑 . . . . . . . . . . . . . . . . . . . . . . . . . . .52
  12. 致谢 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 附录 A. 示例部署场景 . . . . . . . . . . . . . . . . . . . . . .53 附录 B. 示例带宽预留场景 . . . . . . . . . . . . . . . . . . . . .58 参考文献 (References). . . . . . . . . . . . . . . . . . . . . . .60 作者地址 (Authors' Addresses). . . . . . . . . . . . . . . . . . .62 完整版权声明 (Full Copyright Statement). . . . . . . . . . . . . .64

1. 简介 (Introduction)

在 MPLS 域 [MPLS_ARCH] 中, 当数据流穿越公共路径时, 可使用 MPLS 信令协议建立标签交换路径 (Label Switched Path, LSP). 在入口标签交换路由器 (Label Switch Router, LSR) 处, 每个分组被赋予一个标签并向下游发送. 沿 LSP 的每个 LSR 使用该标签将分组转发到下一跳.

在差分服务 (Differentiated Service, Diff-Serv) 域 [DIFF_ARCH] 中, 穿越某链路且要求相同 Diff-Serv 行为的所有 IP 分组构成一个行为聚合 (Behavior Aggregate, BA). 在 Diff-Serv 域的入口节点, 分组被分类并标记与其行为聚合相对应的差分服务代码点 (Diff-Serv Code Point, DSCP). 在每个中间节点, DSCP 用于选择逐跳行为 (Per Hop Behavior, PHB), 该 PHB 决定调度处理, 并在某些情况下决定每个分组的丢弃概率.

本文档规定了一种解决方案, 用于在 MPLS 网络上支持其对应 PHB 已在 [DIFF_HEADER], [DIFF_AF], [DIFF_EF] 中定义的 Diff-Serv 行为聚合. 该方案也便于灵活支持将来可能定义的 PHB.

该方案依赖两类 LSP 的联合使用:

  • 可承载多个有序聚合 (Ordered Aggregate, OA) 的 LSP, 从而由 MPLS 垫片头 (Shim Header) 的 EXP 字段向 LSR 传达将应用于该分组的 PHB (涵盖分组的调度处理信息及其丢弃优先级).

  • 仅承载单个有序聚合的 LSP, 从而分组的调度处理由 LSR 仅从分组的标签值推断, 而分组的丢弃优先级则在 MPLS 垫片头的 EXP 字段中传达, 或在封装链路层特定的选择性丢弃机制 (ATM, Frame Relay, 802.1) 中传达.

如 [DIFF_HEADER] 所述, "服务提供商不必使用相同的节点机制或配置来在其网络内实现服务区分, 并可自由以适合其服务产品与流量工程目标的方式配置节点参数". 因此, 本文档定义的方案使服务提供商可灵活选择如何在其域内对 Diff-Serv 服务类别进行路由或流量工程 (例如, 通过不同 LSP 并分别路由来支持不同服务类别, 或在同一 LSP 上共同支持并一起路由所有服务类别).

由于 MPLS 面向路径, 在面对拓扑变化时, 它有可能提供比传统逐跳路由 IP 系统更快且更可预测的保护与恢复能力. 本文档将此类能力称为 "MPLS 保护". 尽管此类能力及其相关机制超出本规范范围, 我们注意到它们可为不同 LSP 提供不同级别的保护. 由于本文给出的方案允许服务提供商选择如何将 Diff-Serv 服务类别映射到 LSP, 该方案也使服务提供商可灵活决定为不同 Diff-Serv 服务类别提供的保护级别 (例如, 某些服务类别可由受保护的 LSP 支持, 而另一些服务类别则由不受保护的 LSP 支持).

此外, 本文档规定的方案在可能时仅在有用或必要时才为给定转发等价类 (Forwarding Equivalent Class, FEC) [MPLS_ARCH] 使用多条 LSP, 从而节约标签空间并降低标签建立/拆除信令的通信量.

本规范允许对经 MPLS 网络传输的 IPv4 与 IPv6 流量均支持差分服务. 本文档仅描述单播操作. 组播支持留待进一步研究.

本文档描述的方案不排除在 MPLS 上同时支持 Diff-Serv 时, 通过信令或配置使用 EXP 比特来支持显式拥塞通知 (Explicit Congestion Notification) [ECN]. 然而, 在 MPLS 环境中支持 ECN 的技术超出本文档范围.

1.1 术语 (Terminology)

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", " SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 与 "OPTIONAL" 应按 RFC 2119 中的描述解释.

假定读者熟悉 [MPLS_ARCH], [MPLS_ENCAPS], [MPLS_ATM], [MPLS_FR] 的术语, 包括下列各项:

  FEC        Forwarding Equivalency Class (转发等价类)


FTN FEC-To-NHLFE Map (FEC 到 NHLFE 映射)


ILM Incoming Label Map (入向标签映射)


LC-ATM Label Switching Controlled-ATM (interface) (标签交换控制的 ATM
接口)


LC-FR Label Switching Controlled-Frame Relay (interface)
(标签交换控制的帧中继接口)


LSP Label Switched Path (标签交换路径)


LSR Label Switch Router (标签交换路由器)


MPLS Multi-Protocol Label Switching (多协议标签交换)


NHLFE Next Hop Label Forwarding Entry (下一跳标签转发项)

假定读者熟悉 [DIFF_ARCH], [DIFF_HEADER], [DIFF_AF], [DIFF_EF] 的术语, 包括下列各项:

  AF         Assured Forwarding (确保转发)


BA Behavior Aggregate (行为聚合)


CS Class Selector (类选择器)


DF Default Forwarding (默认转发)


DSCP Differentiated Services Code Point (差分服务代码点)


EF Expedited Forwarding (加速转发)


PHB Per Hop Behavior (逐跳行为)

假定读者熟悉 [DIFF_NEW] 的术语, 包括下列各项:

  OA        Ordered Aggregate (有序聚合). 共享排序约束的行为聚合集合.


PSC PHB Scheduling Class (PHB 调度类). 应用于属于给定 OA 的行为聚合的一个或多个
PHB 的集合. 例如, AF1x 是由 AF11, AF12 与 AF13 PHB 组成的 PSC. EF 是由单个 PHB (即
EF PHB) 组成的 PSC 示例.

还使用下列缩写:

  CLP        Cell Loss Priority (信元丢失优先级)


DE Discard Eligibility (丢弃合格性)


SNMP Simple Network Management Protocol (简单网络管理协议)

最后, 本规范定义下列缩写:

  E-LSP      EXP-Inferred-PSC LSP (由 EXP 推断 PSC 的 LSP)


L-LSP Label-Only-Inferred-PSC LSP (仅由标签推断 PSC 的 LSP)

1.2 EXP 推断 PSC 的 LSP (E-LSP)

单条 LSP 可用于支持一个或多个 OA. 此类 LSP 最多可支持给定 FEC 的八个 BA, 而不论这些 BA 跨越多少 OA. 对于此类 LSP, LSR 使用 MPLS 垫片头的 EXP 字段来确定将应用于该分组的 PHB. 这包括 PSC 与丢弃偏好 (drop preference).

我们将此类 LSP 称为 "EXP-inferred-PSC LSPs" (E-LSP), 因为在该 LSP 上传输的分组的 PSC 取决于该分组的 EXP 字段值.

对于给定的此类 LSP, 从 EXP 字段到 PHB (即到 PSC 与丢弃优先级) 的映射, 要么在标签建立时显式信令, 要么依赖预配置映射.

E-LSP 的详细操作在下文第 3 节规定.

1.3 仅由标签推断 PSC 的 LSP (L-LSP)

可为单个 <FEC, OA> 对建立单独的 LSP. 对于此类 LSP, PSC 在标签建立时显式信令, 从而在标签建立之后, LSR 可仅从标签值推断将应用于带标签分组的 PSC. 当使用垫片头时, LSR 将应用于带标签分组的丢弃优先级 (Drop Precedence) 在该分组的 MPLS 垫片头内通过 EXP 字段传达. 当不使用垫片头时 (例如 MPLS Over ATM), LSR 将应用于带标签分组的丢弃优先级在链路层头封装内通过链路层特定的丢弃优先级字段传达 (例如 ATM CLP).

我们将此类 LSP 称为 "Label-Only-Inferred-PSC LSPs" (L-LSP), 因为可仅从标签完全推断 PSC, 而无需任何其他信息 (例如, 不论 EXP 字段值如何). L-LSP 的详细操作在下文第 4 节规定.

1.4 总体操作 (Overall Operations)

对于给定 FEC, 除非适用第 7, 8 与 9 节中指明的介质特定限制, 本规范允许在 MPLS Diff-Serv 域内使用下列任一组合:

  -  零条或任意多条 E-LSP, 以及


- 零条或任意多条 L-LSP.

网络管理员从允许的组合集合中选择实际的 LSP 组合, 并选择如何将行为聚合实际承载到该 LSP 组合上, 以最好地匹配其在 Diff-Serv 支持, 流量工程与 MPLS 保护方面的环境与目标. 选择此类组合的准则超出本规范范围.

对于给定 FEC, 可能有多条 LSP 承载相同 OA, 例如出于对该 OA 进行负载均衡的目的; 然而, 为遵守排序约束, 给定微流 (microflow) 的所有分组 (可能跨越给定有序聚合的多个 BA) MUST 在同一 LSP 上传输. 反之, 每条 LSP MUST 能够支持给定 OA 的所有 (活动) BA.

部署场景示例见附录 A (仅供参考).

1.5 标签与 FEC 的关系 (Relationship between Label and FEC)

[MPLS_ARCH] 在 2.1. Overview' 一节中指出: 某些路由器分析分组的网络层头, 不仅为了选择分组的下一跳, 还为了确定分组的 "优先级" 或 "服务类别". 它们随后可对不同分组应用不同的丢弃阈值或调度规程. MPLS 允许 (但不要求) 优先级或服务类别可从标签完全或部分推断. 在此情况下, 可以说标签代表 FEC 与优先级或服务类别的组合.'

与此一致, 我们观察到:

  • 对于 E-LSP, 标签代表 FEC 与在该 E-LSP 上传输的 BA 集合的组合. 当所有受支持的 BA 都在某条 E-LSP 上传输时, 标签即代表完整的 FEC.

  • 对于 L-LSP, 标签代表 FEC 与 OA 的组合.

1.6 E-LSP 与 L-LSP 的带宽预留 (Bandwidth Reservation for E-LSPs and L-LSPs)

不论使用何种标签绑定协议, E-LSP 与 L-LSP 都可在有或无带宽预留的情况下建立.

建立带带宽预留的 E-LSP 或 L-LSP, 意味着在 LSP 建立时信令该 LSP 的带宽需求. 此类信令的带宽需求可由 LSR 在建立时用于对相关 PSC 已供给 (例如通过配置, SNMP 或策略协议) 的 Diff-Serv 资源执行准入控制. 此类信令的带宽需求也可由 LSR 在建立时用于对与相关 PSC 关联的 Diff-Serv 资源进行调整 (例如调整 PSC 调度权重).

注意, 建立带带宽预留的 E-LSP 或 L-LSP 并不意味着需要按 LSP 调度. 由于本文档规定 E-LSP 与 L-LSP 用于支持差分服务, 所需的转发处理 (调度与丢弃策略) 由适当的 Diff-Serv PHB 定义. 该转发处理 MUST 由 LSR 以 BA 为粒度应用, 并且 MUST 符合相关 PHB 规范.

当在 L-LSP 建立时信令带宽需求时, 所信令的带宽显然与该 L-LSP 的 PSC 相关联. 因此, 使用所信令带宽执行准入控制的 LSR 可对专用于该 PSC 的 Diff-Serv 资源执行准入控制 (例如对通过其调度权重保证给该 PSC 的带宽).

当在 E-LSP 建立时信令带宽需求时, 所信令的带宽与整条 LSP 集体关联, 因而与所传输的 PSC 集合关联. 因此, 使用所信令带宽执行准入控制的 LSR 可对由 PSC 集合共享的全局资源执行准入控制 (例如对链路的总带宽).

不使用带宽预留的场景以及使用带宽预留的场景示例见附录 B (仅供参考).

2. Diff-Serv LSR 的标签转发模型与隧道模型 (Label Forwarding Model for Diff-Serv LSRs and Tunneling Models)

2.1 Diff-Serv LSR 的标签转发模型 (Label Forwarding Model for Diff-Serv LSRs)

由于给定 FEC 的不同有序聚合可能在不同 LSP 上传输, Diff-Serv LSR 的标签交换决策显然取决于被转发分组的行为聚合. 此外, 由于被转发分组的 IP DS 字段对 LSR 可能不可直接可见, 确定将应用于接收分组的 PHB 以及将 PHB 编码到发送分组中的方式, 与非 MPLS Diff-Serv 路由器不同.

因此, 为描述 Diff-Serv LSR 的标签转发, 我们将 LSR Diff-Serv 标签交换行为建模为包含四个阶段:

  • 入向 PHB 判定 (Incoming PHB Determination) (A)

  • 可选流量调节下的出向 PHB 判定 (Outgoing PHB Determination with Optional Traffic Conditioning) (B)

  • 标签转发 (Label Forwarding) (C)

  • 将 Diff-Serv 信息编码到封装层 (EXP, CLP, DE, User_Priority) (D)

每个阶段在后续各节中更详细描述.

显然, 为强制实现 Diff-Serv 服务区分, LSR MUST 还应用与出向 PHB 相对应的转发处理.

该模型图示如下:

--Inc_label(s)()------------------------>I===I--Outg_label(s)(&)--> \ I I
---->I===I I C I -->I===I--Encaps-> I A I I===I--Outg_PHB->I===I I D I (&) -Encaps->I===I--Inc_PHB->I B I \ /->I===I (
) I===I --------+ ----Forwarding--> Treatment (PHB)

"Encaps" 指定在 MPLS 封装层中编码的与 Diff-Serv 相关的信息 (例如 EXP 字段, ATM CLP, Frame Relay DE, 802.1 User_Priority)

(*) 当 LSR 作为 MPLS 入口节点行为时, 入向分组可能以无标签方式接收.

(&) 当 LSR 作为 MPLS 出口节点行为时, 出向分组可能以无标签方式发送.

此处给出该模型是为描述 Diff-Serv LSR 的功能操作, 并不约束实际实现.

2.2 入向 PHB 判定 (Incoming PHB Determination)

本阶段确定接收到的分组属于哪个行为聚合.

2.2.1 考虑标签栈项的入向 PHB 判定

第 3.3 与 4.3 节详细说明如何根据入向 LSP 类型以及入向 MPLS 封装, 在考虑给定接收标签栈项和/或接收到的入向 MPLS 封装信息时执行入向 PHB 判定.

第 2.6 节根据所支持的 Diff-Serv 隧道模式, 详细说明为入向 PHB 判定应考虑哪个标签栈项.

2.2.2 考虑 IP 头的入向 PHB 判定

第 2.6 节根据所支持的 Diff-Serv 隧道模型, 详细说明何时应将 IP 头用于入向 PHB 判定. 在需要使用 IP 头的情况下, 本阶段的操作与非 MPLS IP Diff-Serv 路由器完全相同, 并使用 DS 字段来确定入向 PHB.

2.3 可选流量调节下的出向 PHB 判定 (Outgoing PHB Determination With Optional Traffic Conditioning)

流量调节阶段是可选的, 可在 LSR 上用于执行流量调节, 包括行为聚合的降级 (demotion) 或升级 (promotion). 其细节超出本规范范围. 为规定基于 MPLS 的 Diff-Serv 转发, 我们仅指出: LSR 实际将强制执行并传达给下游 LSR 的 PHB (称为 "出向 PHB"), 可能与前一 LSR 与该分组关联的 PHB (称为 "入向 PHB") 不同.

当不存在流量调节阶段时, "出向 PHB" 与 "入向 PHB" 完全相同.

2.4 标签转发 (Label Forwarding)

[MPLS_ARCH] 描述了 LSR 如何使用入向标签映射 (Incoming Label Map, ILM) 对入向带标签分组执行标签交换, 其中每个入向标签映射到一个或多个 NHLFE. [MPLS_ARCH] 还描述了 LSR 如何使用 FEC-to-NHLFEs Map (FTN) 对入向无标签分组执行标签压入 (imposition), 其中每个入向 FEC 映射到一个或多个 NHLFE.

标签的 Diff-Serv Context 由下列内容组成:

  • `LSP type (i.e., E-LSP or L-LSP)'

  • `supported PHBs'

  • 入向标签的 `Encaps-->PHB mapping'

  • 出向标签的 `Set of PHB-->Encaps mappings'

本规范定义: 在 ILM 中为每个入向标签存储 Diff-Serv Context.

[MPLS_ARCH] 指出 `NHLFE may also contain any other information needed in order to properly dispose of the packet'. 与此一致, 本规范定义: 对每个被交换或压入的出向标签, 在 NHLFE 中存储 Diff-Serv Context.

该 Diff-Serv Context 信息在标签建立时填充到 ILM 与 FTN 中.

如果标签对应于未在 LSP 建立时显式信令 EXP<-->PHB mapping' 的 E-LSP, 则 supported PHBs' 填充为预配置 `EXP<-->PHB mapping' 的 PHB 集合, 该映射在下文第 3.2.1 节讨论.

如果标签对应于在 LSP 建立时已显式信令 EXP<-->PHB mapping' 的 E-LSP, 则 supported PHBs' 填充为所信令 `EXP<-->PHB mapping' 的 PHB 集合.

如果标签对应于 L-LSP, 则 `supported PHBs' 填充为在 LSP 建立时信令的组成 PSC 的 PHB 集合.

Encaps-->PHB mapping' 或 Set of PHB-->Encaps mappings' 如何填充的细节在下文第 3 与 4 节定义.

[MPLS_ARCH] 还指出:

"If the ILM [respectively, FTN] maps a particular label to a set of NHLFEs that contain more than one element, exactly one element of the set must be chosen before the packet is forwarded. The procedures for choosing an element from the set are beyond the scope of this document. Having the ILM [respectively, FTN] map a label [respectively, a FEC] to a set containing more than one NHLFE may be useful if, e.g., it is desired to do load balancing over multiple equal-cost paths."

与此一致, 本规范允许: 为 Diff-Serv 目的, 一个入向标签 [相应地, FEC] 可映射到多个 NHLFE (例如, 不同 NHLFE 对应于支持不同 PHB 集合的出口标签). 当标签 [相应地, FEC] 映射到多个 NHLFE 时, Diff-Serv LSR MUST 选择其 Diff-Serv Context 表明支持该被转发分组出向 PHB 的 NHLFE 之一.

当标签 [相应地, FEC] 映射到多个支持出向 PHB 的 NHLFE 时, 在这些 NHLFE 中选择其一的规程超出本文档范围. 在希望将行为聚合在多条 LSP 上负载均衡时, 可能遇到此情况. 在此类情况下, 为遵守排序约束, 给定微流的所有分组 MUST 在同一 LSP 上传输.

2.5 将 Diff-Serv 信息编码到封装层 (Encoding Diff-Serv Information Into Encapsulation Layer)

本阶段确定如何对发送分组中传达 Diff-Serv 信息的字段进行编码 (例如 MPLS Shim EXP, ATM CLP, Frame Relay DE, 802.1 User_Priority).

2.5.1 将 Diff-Serv 信息编码到发送的标签项

第 3.5 与 4.5 节详细说明如何根据对应的出向 LSP 类型以及 MPLS 封装, 将 Diff-Serv 信息编码到给定发送标签栈项和/或发送的 MPLS 封装信息中.

第 2.6 节根据所支持的 Diff-Serv 隧道模式, 详细说明应在哪个标签栈项中执行 Diff-Serv 信息编码.

2.5.2 将 Diff-Serv 信息编码到发送的 IP 头

为将 Diff-Serv 信息编码到发送分组的 IP 头中, 本阶段的操作与非 MPLS IP Diff-Serv 路由器完全相同, 并将出向 PHB 的 DSCP 编码到 DS 字段中.

第 2.6 节根据所支持的 Diff-Serv 隧道模式, 详细说明何时应将 Diff-Serv 信息编码到发送的 IP 头中.

2.6 基于 MPLS 的 Diff-Serv 隧道模型 (Diff-Serv Tunneling Models over MPLS)

2.6.1 Diff-Serv 隧道模型

[DIFF_TUNNEL] 考虑了差分服务与各种形式 IP 隧道的交互. MPLS LSP 不是 "IP 隧道" 的一种形式, 因为 MPLS 封装头不包含 IP 头, 因此 [DIFF_TUNNEL] 未考虑 MPLS LSP. 然而, 尽管不是 "IP 隧道" 的一种形式, MPLS LSP 是一种 "隧道" 形式.

从 Diff-Serv 角度看, LSP 与 IP 隧道共享若干共同特征:

  • 中间节点 (即位于 LSP 跨度某处的节点) 仅看到并操作 "外层" Diff-Serv 信息.

  • LSP 是单向的.

  • "外层" Diff-Serv 信息可在任一中间节点被修改.

然而, 从 Diff-Serv 角度看, 与 IP 隧道相比, LSP 也有一个显著特性:

  • 一般不存在与 IP 隧道中使用的倒数第二跳弹出 (Penultimate Hop Popping, PHP) 相类似的行为. 此外, PHP 会导致与 LSP 关联的 "外层" Diff-Serv 信息对 LSP 出口不可见. 在该信息在 LSP 出口无意义的情况下, 这显然完全不成问题. 在该信息在 LSP 出口有意义的情况下, 则必须以某种其他方式携带.

[DIFF_TUNNEL] 中为基于 IP 隧道的 Diff-Serv 隧道定义的两个概念模型, 对基于 MPLS 的 Diff-Serv 也适用且有用, 但其各自的详细操作在 MPLS 上有所不同. 这两个模型是管道模型 (Pipe Model) 与统一模型 (Uniform Model). 它们在 MPLS 上的操作在后续各节规定. 替代隧道模型的讨论与定义超出本规范范围.

2.6.2 管道模型 (Pipe Model)

在管道模型中, 从 Diff-Serv 角度看, MPLS 隧道 (即 LSP) 用于对位于 LSP 入口与出口之间的中间 MPLS 节点进行隐藏.

在此模型中, 被隧道传输的分组必须传达两份有意义的 Diff-Serv 信息:

  • 对沿 LSP 跨度 (包括 LSP 出口) 的中间节点有意义的 Diff-Serv 信息 (我们称之为 "LSP Diff-Serv Information"). 该 LSP Diff-Serv Information 在 LSP 出口之外无意义: 无论 LSP 跨度上中间节点的流量调节是否影响 LSP Diff-Serv 信息, 该更新后的 Diff-Serv 信息在 LSP 出口之外都不被视为有意义, 并被忽略.

  • 在 LSP 出口之外有意义的 Diff-Serv 信息 (我们称之为 "Tunneled Diff-Serv Information" ). 该信息由 LSP 入口传达给 LSP 出口. 该 Diff-Serv 信息对 LSP 跨度上的中间节点无意义.

无 PHP 时管道模型的操作图示如下:

        ========== LSP =============================>


---Swap--(M)--...--Swap--(M)--Swap----
/ (outer header) \
(M) (M)
/ \

--(m)-Push.................(m).....................Pop--(m)--> I (inner header) E (M*)

(M) represents the "LSP Diff-Serv information" (m) represents the "Tunneled Diff-Serv information" (*) The LSP Egress considers the LSP Diff-Serv information received in the outer header (i.e., before the pop) in order to apply its Diff-Serv forwarding treatment (i.e., actual PHB) I represents the LSP ingress node E represents the LSP egress node

在管道模型中, "LSP Diff-Serv Information" 需要被传达给 LSP 出口, 以便其据此应用转发处理. " Tunneled Diff-Serv information" 也需要被传达给 LSP 出口, 以便其可进一步向下游传达.

由于两者都要求将 Diff-Serv 信息传达给 LSP 出口, 管道模型仅在无 PHP 时操作.

管道模型尤其适用于下列环境:

  • LSP 入口入接口上游云与 LSP 出口出接口下游云处于使用同一套 Diff-Serv 服务供给策略与 PHB 定义的 Diff-Serv 域中, 而该 LSP 跨越使用不同 Diff-Serv 服务供给策略与 PHB 定义的一个 (或多个) Diff-Serv 域

  • LSP 出口的出接口位于该 LSP 所跨越的 (最后一个) Diff-Serv 域中.

作为示例, 考虑服务提供商提供 MPLS VPN 服务 (MPLS VPN 架构示例见 [MPLS_VPN]) 并包含 Diff-Serv 区分的情况. 假设一组站点通过此类 MPLS VPN 服务互联. 再假设该组站点在统一管理下, 也支持 Diff-Serv 服务区分. 如果 VPN 站点管理与服务提供商不共享完全相同的 Diff-Serv 策略 (例如不支持相同数量的 PHB), 则在 MPLS VPN 服务上以管道模型操作 Diff-Serv, 将允许 VPN 站点的 Diff-Serv 策略在整个入口 VPN 站点与出口 VPN 站点中一致地操作, 并在服务提供商 Diff-Serv 域上透明地操作. 将此类 LSP 视为通过使其端点在虚拟上相邻 (尽管它们可能被中间网络节点在物理上分隔) 从而将端点处的 Diff-Serv 域链接成单一 Diff-Serv 区域, 可能是有用的.

管道模型 MUST 被支持.

为在给定无 PHP 的 LSP 上支持管道模型, LSR 按下列方式执行入向 PHB 判定与 Diff-Serv 信息编码:

  • 当接收无标签分组时, LSR 考虑接收到的 IP 头执行入向 PHB 判定.

  • 当接收带标签分组时, LSR 考虑接收标签栈中的外层标签项执行入向 PHB 判定. 特别地, 当要对所考虑的 LSP 执行 pop 操作时, LSR 在 pop 之前执行入向 PHB 判定.

  • 当对所考虑的 LSP 执行 push 操作时, LSR:

    o 在与被压入标签对应的发送标签项中, 编码与 OUTGOING PHB 相对应的 Diff-Serv 信息.

    o 在被封装的头 (被交换的标签项或 IP 头) 中, 编码与 INCOMING PHB 相对应的 Diff-Serv 信息.

  • 当对所考虑的 LSP 仅执行 swap 操作时, LSR 在包含被交换标签的发送标签项中编码 Diff-Serv 信息.

  • 当对所考虑的 LSP 执行 pop 操作时, LSR 不对因 pop 操作而暴露的头执行 Diff-Serv 信息编码 (即 LSR 使暴露的头 "保持原样").

2.6.2.1 短管道模型 (Short Pipe Model)

短管道模型是上述管道模型的可选变体. 唯一区别在于: 在短管道模型中, 在 LSP 出口处应用的 Diff-Serv 转发处理基于 " Tunneled Diff-Serv Information" (即在被封装头中传达的 Diff-Serv 信息), 而不是基于 "LSP Diff-Serv information" (即在封装头中传达的 Diff-Serv 信息).

无 PHP 时短管道模型的操作图示如下:

        ========== LSP =============================>


---Swap--(M)--...--Swap--(M)--Swap----
/ (outer header) \
(M) (M)
/ \

--(m)-Push.................(m).....................Pop--(m)--> I (inner header) E

(M) represents the "LSP Diff-Serv information" (m) represents the "Tunneled Diff-Serv information" I represents the LSP ingress node E represents the LSP egress node

由于 LSP 出口基于 "Tunneled Diff-Serv Information" 应用其转发处理, 倒数第二节点不需要将 "LSP Diff-Serv information" 传达给 LSP 出口. 因此短管道模型也可与 PHP 一起操作.

有 PHP 时短管道模型的操作图示如下:

       =========== LSP ============================>


---Swap--(M)--...--Swap------
/ (outer header) \
(M) (M)
/ \

--(m)-Push.................(m).............Pop-(m)--E--(m)--> I (inner header) P (M*)

(M) represents the "LSP Diff-Serv information" (m) represents the "Tunneled Diff-Serv information" (*) The Penultimate LSR considers the LSP Diff-Serv information received in the outer header (i.e., before the pop) in order to apply its Diff-Serv forwarding treatment (i.e., actual PHB) I represents the LSP ingress node P represents the LSP penultimate node E represents the LSP egress node

短管道模型尤其适用于下列环境:

  • LSP 入口入接口上游云与 LSP 出口出接口下游云处于使用同一套 Diff-Serv 服务供给策略与 PHB 定义的 Diff-Serv 域中, 而该 LSP 跨越使用不同 Diff-Serv 服务供给策略与 PHB 定义的一个 (或多个) Diff-Serv 域

  • LSP 出口的出接口与其下游云处于同一 Diff-Serv 域中.

由于 LSP 出口的每个出接口都可能与其下游云处于同一 Diff-Serv 域, 每个出接口都可能潜在地处于不同 Diff-Serv 域中, 且 LSP 出口需要被配置为知晓每个对应的 Diff-Serv 策略. 在某些情况下, 各自的下游 Diff-Serv 策略比在 LSP 跨度上使用的公共 Diff-Serv 策略更适合在每个出口接口上提供服务区分, 此时这种运营开销是合理的. 此类情况的一个例子是: 服务提供商提供 MPLS VPN 服务, 且某些 VPN 用户请求应用其自己的 VPN Diff-Serv 策略来控制从 LSP 出口到目的 VPN 站点的专用链路上的服务区分, 而不是服务提供商的 Diff-Serv 策略.

短管道模型 MAY 被支持.

为在给定无 PHP 的 LSP 上支持短管道模型, LSR 以与管道模型相同的方式执行入向 PHB 判定与 Diff-Serv 信息编码, 但有下列例外:

  • 当接收带标签分组时, LSR 考虑用于实际转发的头 (标签项或 IP 头) 执行入向 PHB 判定. 特别地, 当要对所考虑的 LSP 执行 pop 操作时, LSR 在 pop 之后执行入向 PHB 判定.

为在给定有 PHP 的 LSP 上支持短管道模型, LSR 以与无 PHP 时相同的方式执行入向 PHB 判定与 Diff-Serv 信息编码, 但有下列例外:

  • 倒数第二 LSR 考虑接收标签栈中的外层标签项执行入向 PHB 判定. 换句话说, 当要对所考虑的 LSP 执行 pop 操作时, 倒数第二 LSR 在 pop 之前执行入向 PHB 判定.

注意, 有 PHP 的短管道模式下倒数第二 LSR 的行为, 与管道模式 (必然无 PHP) 下 LSP 出口的行为相同.

2.6.3 统一模型 (Uniform Model)

在统一模型中, 从 Diff-Serv 角度看, MPLS 隧道 (即 LSP) 被视为端到端路径的附属物. MPLS 隧道可用于转发目的, 但对 Diff-Serv 没有显著影响. 在此模型中, 任何分组都恰好包含一份有意义的 Diff-Serv 信息, 且始终编码在最外层标签项中 (或在 IP 分组以无标签方式发送时编码在 IP DSCP 中, 例如在 LSP 出口). 编码在其他位置 (例如更深层标签项中) 的任何 Diff-Serv 信息对中间节点或隧道出口都无意义, 并被忽略. 如果 LSP 跨度上中间节点的流量调节影响 "外层" Diff-Serv 信息, 则更新后的 Diff-Serv 信息是在 LSP 出口被认为有意义的那份信息.

无 PHP 时统一模型的操作图示如下:

         ========== LSP =============================>


---Swap--(M)--...-Swap--(M)--Swap----
/ (outer header) \
(M) (M)
/ \

--(M)--Push...............(x).......................Pop--(M)-> I (inner header) E

(M) represents the Meaningful Diff-Serv information encoded in the corresponding header. (x) represents non-meaningful Diff-Serv information. I represents the LSP ingress node E represents the LSP egress node

有 PHP 时统一模型的操作图示如下:

         ========== LSP =========================>


---Swap-(M)-...-Swap------
/ (outer header) \
(M) (M)
/ \

--(M)--Push..............(x)............Pop-(M)--E--(M)-> I (inner header) P

(M) represents the Meaningful Diff-Serv information encoded in the corresponding header. (x) represents non-meaningful Diff-Serv information. I represents the LSP ingress node P represents the LSP penultimate node E represents the LSP egress node

基于 MPLS 的 Diff-Serv 统一模型使得从 Diff-Serv 角度看, 其操作与不使用 MPLS 时的操作完全相同. 换句话说, 对 Diff-Serv 操作而言, MPLS 是完全透明的.

使用统一模型允许 LSP 跨越 Diff-Serv 域边界, 而无需采取除 Diff-Serv 域之间物理边界处的域间流量调节协定之外的其他措施, 并且该协定仅对外层头操作, 因为有意义的 Diff-Serv 信息始终在最外层标签项中可见且可修改.

统一模型 MAY 被支持.

为在给定 LSP 上支持统一模型, LSR 按下列方式执行入向 PHB 判定与 Diff-Serv 信息编码:

  • 当接收无标签分组时, LSR 考虑接收到的 IP 头执行入向 PHB 判定.

  • 当接收带标签分组时, LSR 考虑接收标签栈中的外层标签项执行入向 PHB 判定. 特别地, 当要对所考虑的 LSP 执行 pop 操作时, LSR 在 pop 之前执行入向 PHB 判定.

  • 当对所考虑的 LSP 执行 push 操作时, LSR 在与被压入标签对应的发送标签项中编码 Diff-Serv 信息. 被封装头 (被交换的标签项或 IP 头) 中编码的 Diff-Serv 信息并不重要.

  • 当对所考虑的 LSP 仅执行 swap 操作时, LSR 在包含被交换标签的发送标签项中编码 Diff-Serv 信息.

  • 当使用 PHP 时, 倒数第二 LSR 需要知晓与暴露头对应标签的 "Set of PHB-->Encaps mappings" (或 `PHB-->DSCP mapping'), 以便执行 Diff-Serv 信息编码. 提供该映射感知的方法超出本规范范围. 例如, "PHB-->DSCP mapping" 可本地配置. 作为另一示例, 在某些环境中, 倒数第二 LSR 可假定对暴露头中出向标签使用的 " Set of PHB-->Encaps mappings", 就是若该 LSR 不执行 PHP 时将使用的 "Set of PHB-->Encaps mappings". 另请注意, 本规范假定倒数第二 LSR 不对 pop 操作暴露的标签项执行标签交换 (事实上甚至不查看暴露的标签). 因此, 对倒数第二 LSR 可执行的 Diff-Serv 信息编码可能有限制. 例如, 本规范不允许这样的情况: 倒数第二 LSR 弹出对应于支持两个 PSC 的 E-LSP 的标签, 而 pop 所暴露的头包含分别支持一个 PSC 的两条 L-LSP 的标签值, 因为 Diff-Serv 信息编码将需要选择其中一个标签或另一个.

注意, 管道, 短管道与统一模型的 LSR 行为仅在执行 push 或 pop 时不同. 因此, 对 LSP 仅执行 swap 操作的中间 LSR, 无论其行为是管道, 短管道还是统一模型, 都以完全相同的方式行为. 在支持多种隧道模型的 Diff-Serv 实现中, 只有作为 LSP 入口, 倒数第二 LSR 或 LSP 出口行为的 LSR 需要被配置为按特定模型操作. 在每条 LSP 基础上关联 Diff-Serv 隧道模型的信令不在本规范范围内.

2.6.4 层次结构 (Hierarchy)

通过标签栈机制, MPLS 允许 LSP 隧道嵌套到任意深度. 我们观察到, 在此类嵌套中, N+1 级的 push 发生在执行 N 级 push 的 LSR 的后续 (或同一) LSR 上, 而 N+1 级的 pop 发生在执行 N 级 pop 的 LSR 的前一 (或同一) LSR 上. 对于给定的 N 级 LSP, 执行 push 的入口 LSR 与执行 pop 的 LSR (倒数第二 LSR 或 LSP 出口) 必须按同一隧道模型 (即管道, 短管道或统一) 操作. 然而, 不要求跨级别的隧道模型一致, 从而不同级别的 LSP 可按不同隧道模型操作.

在两级隧道情况下的层次操作图示如下:

           +--------Swap--...---+
/ (outmost header) \
/ \
Push(2).................(2)Pop
/ (outer header) \
/ \

---Push(1)........................(1)Pop-->> (inner header)

(1) Tunneling Model 1 (2) Tunneling Model 2

隧道模型 2 可与隧道模型 1 相同, 也可不同.

对于给定的 N 级 LSP, LSR 必须根据该 N 级 LSP 的隧道模型, 并独立于其他级别 LSP 的隧道模型, 按第 2.6.2, 2.6.2.1 与 2.6.3 节的规定执行入向 PHB 判定与 Diff-Serv 信息编码.

3. E-LSP 的详细操作 (Detailed Operations of E-LSPs)

3.1 E-LSP 定义 (E-LSP Definition)

E-LSP 在第 1.2 节中定义.

在给定 MPLS Diff-Serv 域内, 所有依赖预配置映射的 E-LSP 都能够传输相同的公共 8 个或更少 BA 的集合. 这些 E-LSP 中的每一条实际上可传输该完整 BA 集合或其任意子集.

对于给定 FEC, 使用信令 `EXP<-->PHB mapping' 的两条给定 E-LSP 可支持相同或不同的有序聚合集合.

3.2 为入向 E-LSP 填充 `Encaps-->PHB mapping'

本节定义如何为入向 E-LSP 填充 Diff-Serv Context 的 `Encaps-->PHB mapping', 以允许入向 PHB 判定.

E-LSP 的 Encaps-->PHB mapping' 始终为 EXP-->PHB mapping' 形式.

如果标签对应于未在 LSP 建立时显式信令 EXP<-->PHB mapping' 的 E-LSP, 则 EXP-->PHB mapping' 基于下文第 3.2.1 节讨论的预配置 `EXP<-->PHB mapping' 填充.

如果标签对应于在 LSP 建立时已显式信令 EXP<-->PHB mapping' 的 E-LSP, 则 EXP-->PHB mapping' 按所信令的 `EXP<-->PHB mapping' 填充.

3.2.1 预配置 `EXP<-->PHB mapping'

支持使用预配置 EXP<-->PHB mapping' 的 E-LSP 的 LSR 必须允许本地配置该 EXP<-->PHB mapping'. 该映射适用于在该 LSR 上建立且未在建立时显式信令映射的所有 E-LSP.

预配置 `EXP<-->PHB mapping' 必须在 LSP 所跨越的 MPLS Diff-Serv 域内每个 E-LSP 跳处保持一致, 或者每当入接口与出接口使用不同的预配置映射时, LSR 必须对 EXP 字段执行适当的重标记.

若网络管理员实际上尚未配置预配置 EXP<-->PHB mapping', 则 LSR 应使用将所有 EXP 值映射到 Default PHB 的默认预配置 EXP<-->PHB mapping'.

3.3 入向 E-LSP 上的入向 PHB 判定 (Incoming PHB Determination On Incoming E-LSP)

本节定义当接收标签栈中所考虑的标签项对应于 E-LSP 时如何执行入向 PHB 判定. 这要求 `Encaps-->PHB mapping' 按第 3.2 节定义填充.

当为入向 PHB 判定考虑对应于入向 E-LSP 的标签项时, LSR:

  • 通过查找 ILM 中与所考虑入向 E-LSP 标签关联的 Diff-Serv Context 的 Encaps-->PHB mapping', 确定 EXP-->PHB mapping'.

  • 通过在 `EXP-->PHB mapping' 表中查找所考虑标签项的 EXP 字段, 确定入向 PHB.

3.4 为出向 E-LSP 填充 `Set of PHB-->Encaps mappings'

本节定义如何在标签建立时为出向 E-LSP 填充 Diff-Serv Context 的 `Set of PHB-->Encaps mappings', 以允许在封装层中编码 Diff-Serv 信息.

3.4.1 `PHB-->EXP mapping'

出向 E-LSP 必须始终将其 Diff-Serv Context 的 Set of PHB-->Encaps mappings' 的一部分包含 PHB-->EXP mapping'.

如果标签对应于未在 LSP 建立时显式信令 EXP<-->PHB mapping' 的 E-LSP, 则该 PHB-->EXP mapping' 基于上文第 3.2.1 节讨论的预配置 `EXP<-->PHB mapping' 填充.

如果标签对应于在 LSP 建立时已显式信令 EXP<-->PHB mapping' 的 E-LSP, 则 PHB-->EXP mapping' 按所信令的 `EXP<-->PHB mapping' 填充.

3.4.2 `PHB-->CLP mapping'

如果 LSP 从非标签交换控制的 ATM 接口出站, 则为该出向 LSP 向 Set of PHB-->Encaps mappings' 添加一个 PHB-->CLP mapping'. 该 `PHB-->CLP mapping' 按下列方式填充:

  • 它是该 LSP 上所支持 PHB 的函数, 并可使用第 3.4.2.1 节定义的默认 `PHB-->CLP mapping' 中与这些 PHB 相关的映射项. 也可使用第 3.4.2.1 节定义之外的映射. 特别地, 如果将来为基于 ATM 的 Diff-Serv 操作标准化了从 PHB 到 CLP 的映射, 则可使用该标准化映射.

例如, 如果出向标签对应于支持 AF1 PSC 的 LSP, 则 `PHB-->CLP mapping' 可填充为:

     PHB                CLP Field


AF11 ----> 0
AF12 ----> 1
AF13 ----> 1
EF ----> 0

注意, 在此情况下 Set of PHB-->Encaps mappings' 既包含 PHB-->EXP mapping', 也包含 `PHB-->CLP mapping'.

3.4.2.1 默认 `PHB-->CLP mapping'
     PHB                CLP Bit


DF ----> 0
CSn ----> 0
AFn1 ----> 0
AFn2 ----> 1
AFn3 ----> 1
EF ----> 0

3.4.3 `PHB-->DE mapping'

如果 LSP 从非标签交换控制的 Frame Relay 接口出站, 则为该出向 LSP 向 Set of PHB-->Encaps mappings' 添加一个 PHB-->DE mapping', 并按下列方式填充:

  • 它是该 LSP 上所支持 PHB 的函数, 并可使用第 3.4.3.1 节定义的默认 `PHB-->DE mapping' 中与这些 PHB 相关的映射项. 也可使用第 3.4.3.1 节定义之外的映射. 特别地, 如果将来为基于 Frame Relay 的 Diff-Serv 操作标准化了从 PHB 到 DE 的映射, 则可使用该标准化映射.

注意, 在此情况下 Set of PHB-->Encaps mappings' 既包含 PHB-->EXP mapping', 也包含 `PHB-->DE mapping'.

3.4.3.1 默认 `PHB-->DE mapping'
     PHB                 DE Bit


DF ----> 0
CSn ----> 0
AFn1 ----> 0
AFn2 ----> 1
AFn3 ----> 1
EF ----> 0

3.4.4 `PHB-->802.1 mapping'

如果 LSP 从按 [IEEE_802.1] 支持多个 802.1 Traffic Classes 的 LAN 接口出站, 则为该出向 LSP 向 Set of PHB-->Encaps mappings' 添加一个 PHB-->802.1 mapping'. 该 `PHB-->802.1 mapping' 按下列方式填充:

  • 它是该 LSP 上所支持 PHB 的函数, 并使用第 3.4.4.1 节定义的预配置 `PHB-->802.1 mapping' 中与这些 PHB 相关的映射项.

注意, 此时 Set of PHB-->Encaps mappings' 既包含 PHB-->EXP mapping', 也包含 `PHB-->802.1 mapping'.

3.4.4.1 预配置 `PHB-->802.1 Mapping'

在制定本规范时, 尚无从 PHB 到 802.1 Traffic Classes 的标准化映射. 因此, 在 LAN 接口上支持多个 802.1 Traffic Classes 的 LSR 必须允许本地配置 `PHB-->802.1 mapping'. 该映射适用于 LSR 在此类 LAN 接口上建立的所有出向 LSP.

3.5 在出向 E-LSP 上将 Diff-Serv 信息编码到封装层

本节定义如何对对应于出向 E-LSP 的给定发送标签项, 将 Diff-Serv 信息编码到 MPLS 封装层中. 这要求 `Set of PHB-->Encaps mappings' 按第 3.4 节定义填充.

LSR 首先确定 NHLFE 中与对应标签关联的 Diff-Serv Context 的 `Set of PHB-->Encaps mappings'.

3.5.1 `PHB-->EXP mapping'

如果 Set of PHB-->Encaps mappings' 包含 PHB-->EXP mapping' 形式的映射, 则 LSR:

  • 通过在该 `PHB-->EXP mapping' 表中查找 "outgoing PHB", 确定要写入对应级别标签项 EXP 字段的值.

3.5.2 `PHB-->CLP mapping'

如果 Set of PHB-->Encaps mappings' 包含 PHB-->CLP mapping' 形式的映射, 则 LSR:

  • 通过在该 `PHB-->CLP mapping' 表中查找 "outgoing PHB", 确定要写入 ATM 封装头 CLP 字段的值.

3.5.3 `PHB-->DE mapping'

如果 Set of PHB-->Encaps mappings' 包含 PHB-->DE mapping' 形式的映射, 则 LSR:

  • 通过在该 `PHB-->DE mapping' 表中查找 "outgoing PHB", 确定要写入 Frame Relay 封装头 DE 字段的值.

3.5.4 `PHB-->802.1 mapping'

如果 Set of PHB-->Encaps mappings' 包含 PHB-->802.1 mapping' 形式的映射, 则 LSR:

  • 通过在该 `PHB-->802.1 mapping' 表中查找 "outgoing PHB", 确定要写入 802.1 封装头 [IEEE_802.1] 的 Tag Control Information 中 User_Priority 字段的值.

3.6 E-LSP 合并 (E-LSP Merging)

在 MPLS 域中, 两条或更多 LSP 可在一个 LSR 处合并为一条 LSP. E-LSP 在下列条件下与 LSP 合并兼容:

  仅当 E-LSP 支持完全相同的 BA 集合时, 才能将它们合并为一条 LSP.

对于使用信令 `EXP<-->PHB mapping' 的 E-LSP, 上述合并条件 MUST 由 LSR 在标签建立时通过显式检查被合并 LSP 上支持的 PHB 集合是否完全相同来强制执行.

对于使用预配置 EXP<-->PHB mapping' 的 E-LSP, 由于在建立时不信令 E-LSP 上支持的 PHB, LSR 不能依赖信令信息来强制执行上述合并条件. 然而, 在给定 MPLS Diff-Serv 域内, 所有使用预配置 EXP<-->PHB mapping' 的 E-LSP 都被要求支持相同的行为聚合集合. 因此, 在给定 MPLS Diff-Serv 域内允许合并使用预配置 `EXP<-->PHB mapping' 的 E-LSP.

4. L-LSP 的详细操作 (Detailed Operation of L-LSPs)

4.1 L-LSP 定义 (L-LSP Definition)

L-LSP 在第 1.3 节中定义.

4.2 为入向 L-LSP 填充 `Encaps-->PHB mapping'

本节定义如何在标签建立时为入向 L-LSP 填充 Diff-Serv Context 的 `Encaps-->PHB mapping', 以允许入向 PHB 判定.

4.2.1 `EXP-->PHB mapping'

如果 LSR 在该入向 L-LSP 上终结 MPLS 垫片层, 且该 L-LSP 从既非 ATM 也非 Frame Relay 的接口入站, 则 `Encaps-->PHB mapping' 按下列方式填充:

  • 它实际上是一个 `EXP-->PHB mapping'

  • 该映射是该 LSP 所承载 PSC 的函数, 并且必须使用第 4.2.1.1 节定义的强制 `EXP/PSC-->PHB mapping' 中与该 PSC 相关的映射项.

例如, 如果入向标签对应于支持 AF1 PSC 的 L-LSP, 则 `Encaps-->PHB mapping' 将填充为:

  EXP Field              PHB


001 ----> AF11
010 ----> AF12
011 ----> AF13

在 PPP 接口与 LAN 接口上支持 L-LSP 的 LSR, 是在既非 ATM 也非 Frame Relay 的入接口上终结垫片层的 LSR 示例.

如果 LSR 在该入向 L-LSP 上终结 MPLS 垫片层, 且该 L-LSP 从 ATM 或 Frame Relay 接口入站, 则 `Encaps-->PHB mapping' 按下列方式填充:

  • 它实际上应是一个 EXP-->PHB mapping'. 将来可能定义填充 Encaps-->PHB mapping' 的其他可选方式 (例如使用 CLP/EXP--> PHB mapping' 或 DE/EXP-->PHB mapping'), 但超出本文档范围.

  • Encaps-->PHB mapping' 为 EXP-->PHB mapping' 时, 该 EXP-->PHB mapping' 是该 L-LSP 所承载 PSC 的函数, 并且必须使用第 4.2.1.1 节定义的强制 EXP/PSC-->PHB mapping' 中与该 PSC 相关的映射项.

ATM-MPLS 域或 FR-MPLS 域的边缘 LSR, 是在入向 ATM/FR 接口上终结垫片层的 LSR 示例.

4.2.1.1 强制 `EXP/PSC --> PHB mapping'
  EXP Field      PSC             PHB


000 DF ----> DF
000 CSn ----> CSn
001 AFn ----> AFn1
010 AFn ----> AFn2
011 AFn ----> AFn3
000 EF ----> EF

4.2.2 `CLP-->PHB mapping'

如果 LSR 不在该入向标签上终结 MPLS 垫片层, 并使用 ATM 封装 (即它是 ATM-LSR), 则该入向 L-LSP 的 `Encaps-->PHB mapping' 按下列方式填充:

  • 它实际上是一个 `CLP-->PHB mapping'

  • 该映射是该 LSP 所承载 PSC 的函数, 并应使用第 4.2.2.1 节定义的默认 `CLP/PSC-->PHB mapping' 中与该 PSC 相关的映射项.

例如, 如果入向标签对应于支持 AF1 PSC 的 L-LSP, 则 `Encaps-->PHB mapping' 应填充为:

  CLP Field              PHB


0 ----> AF11
1 ----> AF12
4.2.2.1 默认 `CLP/PSC --> PHB mapping'
  CLP Bit      PSC             PHB


0 DF ----> DF
0 CSn ----> CSn
0 AFn ----> AFn1
1 AFn ----> AFn2
0 EF ----> EF

4.2.3 `DE-->PHB mapping'

如果 LSR 不在该入向标签上终结 MPLS 垫片层, 并使用 Frame Relay 封装 (即它是 FR-LSR), 则该入向 L-LSP 的 `Encaps-->PHB mapping' 按下列方式填充:

  • 它实际上是一个 `DE-->PHB mapping'

  • 该映射是该 LSP 所承载 PSC 的函数, 并应使用第 4.2.3.1 节定义的默认 `DE/PSC-->PHB mapping' 中与该 PSC 相关的映射项.

4.2.3.1 默认 `DE/PSC --> PHB mapping'
  DE Bit      PSC             PHB


0 DF ----> DF
0 CSn ----> CSn
0 AFn ----> AFn1
1 AFn ----> AFn2
0 EF ----> EF

4.3 入向 L-LSP 上的入向 PHB 判定 (Incoming PHB Determination On Incoming L-LSP)

本节定义当接收标签栈中所考虑的标签项对应于 L-LSP 时如何执行入向 PHB 判定. 这要求 `Encaps-->PHB mapping' 按第 4.2 节定义填充.

当为入向 PHB 判定考虑对应于入向 L-LSP 的标签项时, LSR 首先确定与对应标签关联的 `Encaps-->PHB mapping'.

4.3.1 `EXP-->PHB mapping'

如果 Encaps-->PHB mapping' 为 EXP-->PHB mapping' 形式, 则 LSR:

  • 通过查看所考虑标签项的 EXP 字段并使用 `EXP-->PHB mapping', 确定入向 PHB.

4.3.2 `CLP-->PHB mapping'

如果 Encaps-->PHB mapping' 为 CLP-->PHB mapping' 形式, 则 LSR:

  • 通过查看 ATM 层封装的 CLP 字段并使用 `CLP-->PHB mapping', 确定入向 PHB.

4.3.3 `DE-->PHB mapping'

如果 Encaps-->PHB mapping' 为 DE-->PHB mapping' 形式, 则 LSR:

  • 通过查看 Frame Relay 封装的 DE 字段并使用 `DE-->PHB mapping', 确定入向 PHB.

4.4 为出向 L-LSP 填充 `Set of PHB-->Encaps mappings'

本节定义如何在标签建立时为出向 L-LSP 填充 Diff-Serv Context 的 `Set of PHB-->Encaps mappings', 以允许编码 Diff-Serv 信息.

4.4.1 `PHB-->EXP mapping'

如果 LSR 在该出向 L-LSP 上使用 MPLS 垫片层, 则为该出向 L-LSP 向 Set of PHB-->Encaps mappings' 添加一个 PHB-->EXP mapping'. 该 `PHB-->EXP mapping' 按下列方式填充:

  • 它是该 LSP 上所支持 PSC 的函数, 并且必须使用第 4.4.1.1 节定义的强制 `PHB-->EXP mapping' 中与该 PSC 相关的映射项.

例如, 如果出向标签对应于支持 AF1 PSC 的 L-LSP, 则将下列 PHB-->EXP mapping' 添加到 Set of PHB-->Encaps mappings':

     PHB                EXP Field


AF11 ----> 001
AF12 ----> 010
AF13 ----> 011
4.4.1.1 强制 `PHB-->EXP mapping'
     PHB                EXP Field


DF ----> 000
CSn ----> 000
AFn1 ----> 001
AFn2 ----> 010
AFn3 ----> 011
EF ----> 000

4.4.2 `PHB-->CLP mapping'

如果 L-LSP 从 ATM 接口出站 (即它是 ATM-LSR, 或者是在 LC-ATM 接口上或在非标签交换控制的 ATM 接口上发送分组的基于帧的 LSR), 则为该出向 L-LSP 向 Set of PHB-->Encaps mappings' 添加一个 PHB-->CLP mapping'.

如果 L-LSP 从非标签控制的 ATM 接口出站, 则 `PHB-->CLP mapping' 按第 3.4.2 节填充.

如果 L-LSP 从 LC-ATM 接口出站, 则 `PHB-->CLP mapping' 按下列方式填充:

  • 它是该 LSP 上所支持 PSC 的函数, 并应使用第 3.4.2.1 节定义的默认 `PHB-->CLP mapping' 中与该 PSC 相关的映射项.

注意, 如果 LSR 是支持从 ATM 接口出站的 L-LSP 的基于帧的 LSR, 则 Set of PHB-->Encaps mappings' 既包含 PHB-->EXP mapping', 也包含 PHB-->CLP mapping'. 如果 LSR 是支持 L-LSP 的 ATM-LSR, 则 Set of PHB-->Encaps mappings' 仅包含 `PHB-->CLP mapping'.

4.4.3 `PHB-->DE mapping'

如果 L-LSP 从 Frame Relay 接口出站 (即它是在 LC-FR 接口上或在非标签交换控制的 Frame Relay 接口上发送分组的 LSR), 则为该出向 L-LSP 向 Set of PHB-->Encaps mappings' 添加一个 PHB-->DE mapping'.

如果 L-LSP 从非标签交换控制的 FR 接口出站, 则 `PHB-->DE mapping' 按第 3.4.3 节填充.

如果 L-LSP 从 LC-FR 接口出站, 则 `PHB-->DE mapping' 按下列方式填充:

  • 它是该 LSP 上所支持 PSC 的函数, 并应使用第 3.4.3.1 节定义的默认 `PHB-->DE mapping' 中与该 PSC 相关的映射项.

注意, 如果 LSR 是支持从 LC-FR 接口出站的 L-LSP 的边缘 LSR, 则 Set of PHB-->Encaps mappings' 既包含 PHB-->EXP mapping', 也包含 PHB-->DE mapping'. 如果 LSR 是支持 L-LSP 的 FR-LSR, 则 Set of PHB-->Encaps mappings' 仅包含 `PHB-->DE mapping'.

4.4.4 `PHB-->802.1 mapping'

如果 LSP 从按 [IEEE_802.1] 支持多个 802.1 Traffic Classes 的 LAN 接口出站, 则按第 3.4. 4 节添加一个 `PHB-->802.1 mapping'.

4.5 在出向 L-LSP 上将 Diff-Serv 信息编码到封装层

本节定义如何对对应于出向 L-LSP 的发送标签项, 将 Diff-Serv 信息编码到 MPLS 封装层中. 这要求 `Set of PHB-->Encaps mappings' 按第 4.4 节定义填充.

LSR 首先确定 NHLFE 中与对应标签关联的 Diff-Serv Context 的 `Set of PHB-->Encaps mappings', 然后按第 3.5.1, 3.5.2, 3.5.3 与 3.5.4 节的规定执行相应编码.

4.6 L-LSP 合并 (L-LSP Merging)

在 MPLS 域中, 两条或更多 LSP 可在一个 LSR 处合并为一条 LSP. L-LSP 在下列条件下与 LSP 合并兼容:

  仅当 L-LSP 支持相同 PSC 时, 才能将它们合并为一条 L-LSP.

上述合并条件 MUST 由 LSR 在标签建立时通过显式检查被合并 LSP 上支持的 PSC 是否相同来强制执行.

注意, 当 L-LSP 合并时, 合并点下游可用于该 PSC 的带宽必须足以承载被合并流量之和. 这对于 EF 流量尤其重要. 这可通过多种方式确保 (例如通过供给, 或通过带宽信令与显式准入控制).

5. 用于 Diff-Serv 支持的 RSVP 扩展 (RSVP Extension for Diff-Serv Support)

MPLS 架构不假定单一标签分发协议. [RSVP_MPLS_TE] 定义了用于在 MPLS 网络中建立 LSP 的 RSVP 扩展. 本节规定超出 [RSVP_MPLS_TE] 所定义内容的 RSVP 扩展, 以便在 MPLS 网络中建立支持差分服务的 LSP.

本文档定义了一个新的 RSVP Object: DIFFSERV Object. 下文给出该 Object 的详细描述. 该新 Object 适用于 Path 消息. 本规范仅定义在用于按 [RSVP_MPLS_TE] 建立 LSP Tunnels 的 Path 消息中使用 DIFFSERV Object, 因此这些消息包含 C-Type 等于 LSP_TUNNEL_IPv4 的 Session Object, 并包含 LABEL_REQUEST object.

[RSVP_MPLS_TE] 中为通过 RSVP 支持建立 LSP Tunnels 而定义的限制, 也适用于支持 Diff-Serv 的 LSP Tunnels 的建立: 例如, 仅支持单播 LSP, 组播 LSP 留待进一步研究.

该新 DIFFSERV object 相对于 RSVP 是可选的, 从而与 MPLS LSP 建立无关的通用 RSVP 实现不必支持该 object.

按 [RSVP_MPLS_TE] 的定义, DIFFSERV Object 对于支持 LSP Tunnels 是可选的. 支持使用预配置 EXP<-->PHB mapping' 且符合本规范的 E-LSP 的 Diff-Serv 能力 LSR MAY 支持 DIFFSERV Object. 支持使用信令 EXP<-->PHB mapping' 且符合本规范的 E-LSP 的 Diff-Serv 能力 LSR MUST 支持 DIFFSERV Object. 支持符合本规范的 L-LSP 的 Diff-Serv 能力 LSR MUST 支持 DIFFSERV Object.

5.1.1 Path 消息格式 (Path Message Format)

Path 消息的格式如下:

     <Path Message> ::=       <Common Header> [ <INTEGRITY> ]
<SESSION> <RSVP_HOP>
<TIME_VALUES>
[ <EXPLICIT_ROUTE> ]
<LABEL_REQUEST>
[ <SESSION_ATTRIBUTE> ]
[ <DIFFSERV> ]
[ <POLICY_DATA> ... ]
[ <sender descriptor> ]


<sender descriptor> ::= <SENDER_TEMPLATE> <SENDER_TSPEC>
[ <ADSPEC> ]
[ <RECORD_ROUTE> ]

5.2 DIFFSERV Object

DIFFSERV object 的格式如下所示. 当前有两种可能的 C_Type. Type 1 是用于 E-LSP 的 DIFFSERV object. Type 2 是用于 L-LSP 的 DIFFSERV object.

5.2.1. 用于 E-LSP 的 DIFFSERV object

class = 65, C_Type = 1

   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 | MAPnb |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// ... //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (MAPnb) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


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


MAPnb : 4 bits
指示 DIFFSERV Object 中包含的 MAP 项数量. 可设置为 0 到 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] 规定编码.

5.2.2 用于 L-LSP 的 DIFFSERV object

class = 65, C_Type = 2

   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 | PSC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


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


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

5.3 处理 DIFFSERV Object (Handling DIFFSERV Object)

为使用 RSVP 建立 LSP tunnel, 发送方创建会话类型为 LSP_Tunnel_IPv4 且带有 LABEL_REQUEST object 的 Path 消息, 如 [RSVP_MPLS_TE] 所述.

为使用 RSVP 建立使用预配置 `EXP<-->PHB mapping' 的 E-LSP tunnel, 发送方创建 Path 消息:

  • 会话类型为 LSP_Tunnel_IPv4,

  • 带有 LABEL_REQUEST object, 以及

  • 不带 DIFFSERV object.

为使用 RSVP 建立使用预配置 `EXP<-->PHB mapping' 的 E-LSP tunnel, 发送方 MAY 另选创建 Path 消息:

  • 会话类型为 LSP_Tunnel_IPv4,

  • 带有 LABEL_REQUEST object, 以及

  • 带有不包含 MAP 项的用于 E-LSP 的 DIFFSERV object.

为使用 RSVP 建立使用信令 `EXP<-->PHB mapping' 的 E-LSP tunnel, 发送方创建 Path 消息:

  • 会话类型为 LSP_Tunnel_IPv4,

  • 带有 LABEL_REQUEST object,

  • 带有用于 E-LSP 的 DIFFSERV object, 其中为该 E-LSP 上要支持的每个 EXP 值包含一个 MAP 项.

为使用 RSVP 建立 L-LSP tunnel, 发送方创建 Path 消息:

  • 会话类型为 LSP_Tunnel_IPv4,

  • 带有 LABEL_REQUEST object,

  • 带有用于 L-LSP 的 DIFFSERV object, 其中包含该 L-LSP 上支持的 PHB Scheduling Class (PSC).

如果 path 消息包含多个 DIFFSERV object, 则仅第一个有意义; 后续 DIFFSERV object 必须被忽略且不得转发.

路径上的每个 LSR 在 path state block 中记录 DIFFSERV object (若存在).

如果 Path 消息中不存在 DIFFSERV object, LSR SHOULD 将其解释为对使用预配置 `EXP<-->PHB mapping' 的 E-LSP 的请求. 然而, 为与 [RSVP_MPLS_TE] 允许的其他非 Diff-Serv 服务质量选项 (例如 Integrated Services Controlled Load 或 Guaranteed Services) 保持向后兼容, LSR MAY 支持可配置的 "override option". 当配置了该 "override option" 时, LSR 将不带 Diff-Serv object 的 path 消息解释为对具有此类非 Diff-Serv 服务质量的 LSP 的请求.

如果 Path 消息中存在不包含 MAP 项的用于 E-LSP 的 DIFFSERV object, LSR MUST 将其解释为对使用预配置 EXP<-->PHB mapping' 的 E-LSP 的请求. 特别地, 这允许已配置 "override option" 的 LSR 在支持具有非 Diff-Serv 服务质量的 LSP 的同时, 支持具有预配置 EXP<-->PHB mapping' 的 E-LSP.

如果 Path 消息中存在至少包含一个 MAP 项的用于 E-LSP 的 DIFFSERV object, LSR MUST 将其解释为对具有信令 `EXP<-->PHB mapping' 的 E-LSP 的请求.

如果 Path 消息中存在用于 L-LSP 的 DIFFSERV object, LSR MUST 将其解释为对 L-LSP 的请求.

E-LSP 或 L-LSP 的目的 LSR 通过发送 Resv 消息来响应包含 LABEL_REQUEST object 的 Path 消息:

  • 带有 LABEL object

  • 不带 DIFFSERV object.

假定标签请求被接受且已分配标签, Diff-Serv LSR (发送方, 目的方, 中间节点) 必须:

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

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

识别 DIFFSERV object 且收到包含 DIFFSERV object 但不包含 LABEL_REQUEST object 或会话类型不是 LSP_Tunnel_IPv4 的 path 消息的 LSR, 向发送方发送 PathErr, 错误码为 Diff-Serv Error', 错误值为 Unexpected DIFFSERV object'. 这些在下文第 5.5 节定义.

收到用于 E-LSP 的 DIFFSERV object 的 Path 消息, 识别 DIFFSERV object 但不支持一个或多个 MAP 项中编码的特定 PHB 的 LSR, 向发送方发送 PathErr, 错误码为 Diff-Serv Error', 错误值为 Unsupported PHB'. 这些在下文第 5.5 节定义.

收到用于 E-LSP 的 DIFFSERV object 的 Path 消息, 识别 DIFFSERV object 但判定所信令的 EXP<-->PHB mapping' 无效的 LSR, 向发送方发送 PathErr, 错误码为 Diff-Serv Error', 错误值为 Invalid EXP<-->PHB mapping'. 这些在下文第 5.5 节定义. 用于 E-LSP 的 DIFFSERV Object 中信令的 EXP<-->PHB mapping' 在下列情况下无效:

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

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

  • PHBID 编码无效.

收到用于 L-LSP 的 DIFFSERV object 的 Path 消息, 识别 DIFFSERV object 但不支持 PSC 字段中编码的特定 PSC 的 LSR, 向发送方发送 PathErr, 错误码为 Diff-Serv Error', 错误值为 Unsupported PSC'. 这些在下文第 5.5 节定义.

收到 DIFFSERV object 的 Path 消息, 识别 DIFFSERV object 但无法分配所需的每 LSP Diff-Serv 上下文的 LSR, 发送 PathErr, 错误码为 "Diff-Serv Error", 错误值为 "Per-LSP context allocation failure". 这些在下文第 5.5 节定义.

Diff-Serv LSR MUST 按 [RSVP_MPLS_TE] 处理标签请求因本节已讨论原因之外的原因而不能被接受的情况 (例如准入控制拒绝预留, 无法关联标签).

5.4 不支持 DIFFSERV Object (Non-support of the DIFFSERV Object)

不识别 DIFFSERV object Class-Num 的 LSR MUST 按 [RSVP] 对格式为 0bbbbbbb 的未知 Class-Num 规定的规程行为, 即它必须向发送方发送错误码为 `Unknown object class' 的 PathErr.

识别 DIFFSERV object Class-Num 但不识别 DIFFSERV object C-Type 的 LSR, 必须按 [RSVP] 对未知 C-type 规定的规程行为, 即它必须向发送方发送错误码为 `Unknown object C-Type' 的 PathErr.

在这两种情况下, 这会导致路径建立失败. 发送方应通知管理: 无法建立 L-LSP, 并可能采取行动在不带 DIFFSERV object 的情况下重试 LSP 建立 (例如, 作为回退策略尝试使用具有预配置 `EXP<-->PHB mapping' 的 E-LSP).

5.5 Diff-Serv 错误码 (Error Codes For Diff-Serv)

在上述规程中, 某些错误必须报告为 Diff-Serv Error'. Diff-Serv Error' 错误码的值为 27.

下列定义 Diff-Serv Error 的错误值:

  Value    Error


1 Unexpected DIFFSERV object
2 Unsupported PHB
3 Invalid `EXP<-->PHB mapping'
4 Unsupported PSC
5 Per-LSP context allocation failure

5.6 Intserv 服务类型 (Intserv Service Type)

E-LSP 与 L-LSP 都可在有或无带宽预留的情况下建立.

如 [RSVP_MPLS_TE] 所规定, 为建立带带宽预留的 E-LSP 或 L-LSP, 使用 Int-Serv 的 Controlled Load 服务 (或可能使用 Guaranteed Service), 并在 path (相应地 Resv) 消息的 SENDER_TSPEC (相应地 FLOWSPEC) 中信令带宽.

如 [RSVP_MPLS_TE] 所规定, 为建立不带带宽预留的 E-LSP 或 L-LSP, 使用 [NULL] 中规定的 Null Service.

注意, 本规范定义 E-LSP 与 L-LSP 的用法仅用于支持 Diff-Serv 服务. 不论 Intserv 服务 (Controlled Load, Null Service, Guaranteed Service,...) 如何, 也不论预留是否带带宽预留, 此处定义的 E-LSP 与 L-LSP 均用于支持 Diff-Serv 服务. 在 MPLS Diff-Serv 骨干上支持 Int-Serv 服务超出本规范范围.

另请注意, 本规范不涉及 [DCLASS] 中定义的 DCLASS object, 因为该 object 传达 DSCP 值信息, 而该信息在 MPLS 网络内部并不相关.

6. 用于 Diff-Serv 支持的 LDP 扩展 (LDP Extensions for Diff-Serv Support)

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 状态码取值 (Diff-Serv Status Code Values)

为 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.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 的处理 (Handling of the Diff-Serv TLV)

6.4.1 下游主动模式中 Diff-Serv TLV 的处理 (Downstream Unsolicited Mode)

本节描述使用下游主动模式 (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)

本节描述使用下游按需模式 (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 (Non-Handling of the 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 带宽信息 (Bandwidth Information)

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

7. 在 PPP, LAN, Non-LC-ATM 与 Non-LC-FR 接口上的 MPLS Diff-Serv 支持

MPLS 支持 Diff-Serv 的一般操作 (包括标签转发与 LSP 建立操作) 已在前述各节中规定. 本节描述在 PPP 接口, LAN 接口, 非标签控制的 ATM 接口以及非标签控制的 Frame Relay 接口上支持基于 MPLS 的 Diff-Serv 所需的特定操作.

在这些接口上, 本规范允许每个 FEC 使用下列任一 LSP 组合:

  • 零条或任意多条 E-LSP, 以及

  • 零条或任意多条 L-LSP.

Diff-Serv 能力 LSR MUST 在这些接口上支持使用预配置 `EXP<-->PHB mapping' 的 E-LSP.

Diff-Serv 能力 LSR MAY 在这些接口上支持使用信令 `EXP<-->PHB mapping' 的 E-LSP 以及 L-LSP.

8. 在 LC-ATM 接口上的 MPLS Diff-Serv 支持 (MPLS Support of Diff-Serv over LC-ATM Interfaces)

本节描述在标签交换控制的 ATM (Label Switching Controlled-ATM, LC-ATM) 接口上支持基于 MPLS 的 Diff-Serv 所需的特定操作.

本文档允许在 MPLS ATM Diff-Serv 域内每个 FEC 使用任意多条 L-LSP. E-LSP 在 LC-ATM 接口上不受支持.

8.1 ATM 业务类别与流量管理机制的使用

ATM Forum 规定的 "ATM service categories", ITU-T 规定的 "ATM Transfer Capabilities" 或厂商特定 ATM 业务类别的使用超出本规范范围. 符合实现的唯一要求是: 由 ATM LSR 在 L-LSP 上转发的行为聚合所经历的转发行为 MUST 符合对应的 Diff-Serv PHB 规范.

由于在 ATM 链路上仅有一个比特 (CLP) 用于编码 PHB 丢弃优先级值, ATM LSR 仅支持两个不同的丢弃优先级级别. 第 4. 2.2 与 4.4.2 节定义了如何将 AFn 有序聚合的三个丢弃优先级级别映射到这两个 ATM 丢弃优先级级别. 该映射符合 [DIFF_AF] 中针对仅支持两个丢弃优先级级别的情况所规定的要求.

为避免丢弃分组的部分内容, 应对本文档所述所有 PHB 在 ATM-LSR 中启用帧丢弃机制, 例如 Early Packet Discard (EPD) (见 [ATMF_TM]) SHOULD.

8.2 带有 LC-ATM 接口的 LSR 实现 (LSR Implementation With LC-ATM Interfaces)

Diff-Serv 能力 LSR MUST 在 LC-ATM 接口上支持 L-LSP. 本规范假定 ATM-LSR 域的边缘 LSR 使用 [MPLS_ATM] 中定义的 "shim header" 封装方法. 不使用 "shim header" 封装的操作超出本规范范围.

9. 在 LC-FR 接口上的 MPLS Diff-Serv 支持 (MPLS Support of Diff-Serv over LC-FR Interfaces)

本节描述在标签交换控制的 Frame Relay (Label Switching Controlled-Frame Relay, LC-FR) 接口上支持基于 MPLS 的 Diff-Serv 所需的特定操作.

本文档允许在 MPLS Frame Relay Diff-Serv 域内每个 FEC 使用任意多条 L-LSP. E-LSP 在 LC-FR 接口上不受支持.

9.1 Frame Relay 流量参数与流量管理机制的使用

ITU-T 与 Frame Relay Forum 规定的 Frame Relay 流量参数, 或厂商特定 Frame Relay 流量管理机制的使用超出本规范范围. 符合实现的唯一要求是: 由 Frame Relay LSR 在 L-LSP 上转发的行为聚合所经历的转发行为 MUST 符合对应的 Diff-Serv PHB 规范.

由于在 Frame Relay 链路上仅有一个比特 (DE) 用于编码 PHB 丢弃优先级值, Frame Relay LSR 仅支持两个不同的丢弃优先级级别. 第 4.2.3 与 4.4.3 节定义了如何将 AFn 有序聚合的三个丢弃优先级级别映射到这两个 Frame Relay 丢弃优先级级别. 该映射符合 [DIFF_AF] 中针对仅支持两个丢弃优先级级别的情况所规定的要求.

9.2 带有 LC-FR 接口的 LSR 实现 (LSR Implementation With LC-FR Interfaces)

Diff-Serv 能力 LSR MUST 在 LC-Frame Relay 接口上支持 L-LSP.

本规范假定 FR-LSR 域的边缘 LSR 使用 [MPLS_FR] 中推荐的 "generic encapsulation" 方法. 不使用 "generic encapsulation" 的操作超出本规范范围.

10. IANA 考虑 (IANA Considerations)

本文档定义了若干对 IANA 有影响的对象.

本文档在第 5.2 节定义了一个新的 RSVP object, 即 DIFFSERV object. 该 object 需要从 [RSVP] 中定义的空间中取一个编号, 该空间用于若不被理解则导致整个 RSVP 消息以错误码 "Unknown Object Class" 被拒绝的那些 object. 此类 object 通过 class number 的最高有效位为零来标识. 在该空间内, 该 object 需要从 "IETF Consensus" 空间中取一个编号. IANA 已为 DIFFSERV object 分配编号 "65".

本文档在第 5.5 节定义了一个新的 RSVP 错误码 "Diffserv Error". IANA 已将错误码 "27" 分配给 " Diffserv Error". 本文档定义 ERROR_SPEC object 内 value 字段中用于该错误码的值 1 到 5. 该空间中未来的取值分配应由 IANA 使用 [IANA] 中定义的 First Come First Served 策略处理.

本文档在第 6.1 节定义了一个新的 LDP TLV, 即 Diffserv TLV. 该 TLV 的编号已按 [LDP] 中定义的策略通过工作组共识分配.

本文档在第 6.2 节定义了五个新的与 Diffserv 相关错误条件对应的 LDP Status Code 值. Status Code 的值已按 [LDP] 中定义的策略通过工作组共识分配.

11. 安全考虑 (Security Considerations)

除 Diff-Serv, MPLS 与 RSVP 固有的安全问题外, 本文档不引入任何新的安全问题, 并可使用为那些技术提出的相同机制.

12. 致谢 (Acknowledgments)

本文档受益于与 Eric Rosen, Angela Chiu 与 Carol Iturralde 的讨论. 它也借鉴了 D. Black 关于 Diff-Serv 与 IP 隧道交互的工作.

附录 A. 示例部署场景 (APPENDIX A. Example Deployment Scenarios)

本节不提供额外规范, 仅用于提供如何部署这种灵活的基于 MPLS 的 Diff-Serv 支持方法的示例. 针对特定环境的各种部署选项的优缺点超出本文档范围.

A.1 场景 1: 8 个 (或更少) BA, 无流量工程, 无 MPLS 保护

在其网络中运行 8 个 (或更少) BA 经 MPLS 传输, 不执行流量工程, 不使用 MPLS 保护, 并使用 MPLS 垫片头封装的服务提供商, 可选择使用通过 LDP 建立的每个 FEC 单条 E-LSP 来运行基于 MPLS 的 Diff-Serv. 此外, 服务提供商可选择使用预配置 `EXP<-->PHB mapping'.

操作可概括如下:

  • 服务提供商在每个 LSR 上配置每个 PHB 与 EXP 字段值之间的双向映射 (例如, 000<-->AF11, 001<-->AF12, 010<-->AF13)

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置每个 PSC 的调度行为 (例如分配给 AF1 的带宽) 以及每个 PHB 的丢弃行为 (例如 AF11, AF12, AF13 的丢弃配置文件)

  • LSR 使用 LDP 按上述规范信令建立每个 FEC 单条 E-LSP (即 LDP Label Request/Label Mapping 消息中无 Diff-Serv TLV, 以隐式指示该 LSP 为 E-LSP 且使用预配置映射)

A.2 场景 2: 多于 8 个 BA, 无流量工程, 无 MPLS 保护

在其网络中运行多于 8 个 BA 经 MPLS 传输, 不执行流量工程, 不使用 MPLS 保护, 并使用 MPLS 垫片封装的服务提供商, 可选择对每个 FEC 使用下列方式运行基于 MPLS 的 Diff-Serv:

  • 一条通过 LDP 建立并使用预配置映射的 E-LSP, 以支持 8 个 (或更少) BA 的集合, 以及

  • 对其他 BA, 通过 LDP 为每个 <FEC,OA> 建立一条 L-LSP.

操作可概括如下:

  • 服务提供商在每个 LSR 上配置在 E-LSP 上传输的 BA 的每个 PHB 与 EXP 字段值之间的双向映射

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置在 E-LSP 上支持的每个 PSC 的调度行为以及每个对应 PHB 的丢弃行为

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置在 L-LSP 上支持的每个 PSC 的调度行为以及每个对应 PHB 的丢弃行为

  • LSR 使用 LDP 按上述规定信令建立每个 FEC 单条 E-LSP, 用于 E-LSP 所传输的 BA 集合 (即 LDP Label Request/Label Mapping 消息中无 Diff-Serv TLV, 以隐式指示该 LSP 为 E-LSP 且使用预配置映射)

  • LSR 使用 LDP 按上述规定信令为其他 BA 建立每个 <FEC,OA> 一条 L-LSP (即 LDP Label Request/Label Mapping 消息中的 Diff-Serv TLV 指示 L-LSP 的 PSC).

A.3 场景 3: 8 个 (或更少) BA, 聚合流量工程, 聚合 MPLS 保护

在其网络中运行 8 个 (或更少) BA 经 MPLS 传输, 执行聚合流量工程 (即对所有 BA 执行单一公共路径选择), 使用聚合 MPLS 保护 (即共同恢复所有 PSC 的服务), 并使用 MPLS 垫片头封装的服务提供商, 可选择使用通过 RSVP [RSVP_MPLS_TE] 或 CR-LDP [CR-LDP_MPLS_TE] 建立且使用预配置映射的每个 FEC 单条 E-LSP 来运行基于 MPLS 的 Diff-Serv.

操作可概括如下:

  • 服务提供商在每个 LSR 上配置每个 PHB 与 EXP 字段值之间的双向映射 (例如, 000<-->AF11, 001<-->AF12, 010<-->AF13)

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置每个 PSC 的调度行为 (例如分配给 AF1 的带宽) 以及每个 PHB 的丢弃行为 (例如 AF11, AF12, AF13 的丢弃配置文件)

  • LSR 信令建立每个 FEC 将使用预配置映射的单条 E-LSP:

    • 使用按上述规定的 RSVP 协议 (即包含 LABEL_REQUEST Object 的 PATH 消息中无 DIFFSERV RSVP Object), 或

    • 使用按上述规定的 CR-LDP 协议 (即 LDP Label Request/Label Mapping 消息中无 Diff-Serv TLV).

  • 在所有 E-LSP 上激活保护, 以便通过超出本文档范围的机制实现 MPLS 保护.

A.4 场景 4: 按 OA 的流量工程/MPLS 保护

在其网络中运行任意数量 BA 经 MPLS 传输, 执行按 OA 的流量工程 (即对每个 OA 执行单独的路径选择) 以及按 OA 的 MPLS 保护 (即执行保护, 且不同 OA 可能具有不同保护级别) 的服务提供商, 可选择使用通过 RSVP 或 CR-LDP 建立的每个 <FEC,OA> 对一条 L-LSP 来运行基于 MPLS 的 Diff-Serv.

操作可概括如下:

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置每个 PSC 的调度行为 (例如分配给 AF1 的带宽) 以及每个 PHB 的丢弃行为 (例如 AF11, AF12, AF13 的丢弃配置文件)

  • LSR 信令建立每个 <FEC,OA> 一条 L-LSP:

    • 使用按上述规定的 RSVP 来信令 L-LSP 的 PSC (即包含 LABEL_REQUEST 的 PATH 消息中的 DIFFSERV RSVP Object), 或

    • 使用按上述规定的 CR-LDP 协议来信令 L-LSP 的 PSC (即 LDP Label Request/Label Mapping 消息中的 Diff-Serv TLV).

  • 通过超出本文档范围的机制, 在不同 L-LSP 上激活适当级别的保护 (每个 PSC 可能具有不同的保护级别).

A.5 场景 5: 8 个 (或更少) BA, 按 OA 的流量工程/MPLS 保护

在其网络中运行 8 个 (或更少) BA 经 MPLS 传输, 执行按 OA 的流量工程 (即对每个 OA 执行单独的路径选择) 以及按 OA 的 MPLS 保护 (即执行保护, 且不同 OA 可能具有不同保护级别) 的服务提供商, 可选择使用通过 RSVP 或 CR-LDP 建立的每个 <FEC,OA> 对一条 E-LSP 来运行基于 MPLS 的 Diff-Serv. 此外, 服务提供商可选择在所有 E-LSP 上使用预配置映射.

操作可概括如下:

  • 服务提供商在每个 LSR 上配置每个 PHB 与 EXP 字段值之间的双向映射 (例如, 000<-->AF11, 001<-->AF12, 010<-->AF13)

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置每个 PSC 的调度行为 (例如分配给 AF1 的带宽) 以及每个 PHB 的丢弃行为 (例如 AF11, AF12, AF13 的丢弃配置文件)

  • LSR 信令建立每个 <FEC,OA> 一条 E-LSP:

    • 使用按上述规定的 RSVP 协议来信令该 LSP 为使用预配置映射的 E-LSP (即包含 LABEL_REQUEST 的 PATH 消息中无 DIFFSERV RSVP Object), 或

    • 使用按上述规定的 CR-LDP 协议来信令该 LSP 为使用预配置映射的 E-LSP (即 LDP Label Request/Label Mapping 消息中无 Diff-Serv TLV)

  • 服务提供商在每条 E-LSP 的头端为该 E-LSP 配置过滤/转发准则, 使得仅属于给定 OA 的分组被转发到为对应 FEC 与对应 OA 建立的 E-LSP 上.

  • 通过超出本文档范围的机制, 在不同 E-LSP 上激活适当级别的保护 (取决于每条 E-LSP 实际传输的 PSC, 可能具有不同的保护级别).

A.6 场景 6: 在 8 个 BA 上无流量工程/MPLS 保护, 在其他 BA 上按 OA 流量工程/MPLS 保护

对 8 个 (或更少) BA 不执行流量工程/MPLS 保护, 对其他 BA 执行按 OA 的流量工程/MPLS 保护 (即对与其他 BA 对应的每个 OA 执行单独的路径选择, 并对这些 OA 中的每一个执行可能具有不同策略的 MPLS 保护), 且在其网络中使用 MPLS 垫片封装的服务提供商, 可选择对每个 FEC 使用下列方式运行基于 MPLS 的 Diff-Serv:

  • 一条使用预配置映射并通过 LDP 建立的 E-LSP, 以支持 8 个 (或更少) 非流量工程/非保护 BA 的集合, 以及

  • 对其他 BA, 通过 RSVP 或 CR-LDP 为每个 <FEC,OA> 对建立一条 L-LSP.

操作可概括如下:

  • 服务提供商在每个 LSR 上配置在 E-LSP 上支持的 BA 的每个 PHB 与 EXP 字段值之间的双向映射

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置在 E-LSP 上支持的每个 PSC 的调度行为以及每个对应 PHB 的丢弃行为

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置在 L-LSP 上支持的每个 PSC 的调度行为以及每个对应 PHB 的丢弃行为

  • LSR 使用 LDP 按上述规定信令为非流量工程 BA 建立每个 FEC 单条 E-LSP (即 LDP Label Request/Label Mapping 消息中无 Diff-Serv TLV)

  • LSR 为其他 BA 信令建立每个 <FEC,OA> 一条 L-LSP:

    • 使用按上述规定的 RSVP 协议来信令 L-LSP 的 PSC (即包含 LABEL_REQUEST Object 的 PATH 消息中的 DIFFSERV RSVP Object), 或

    • 使用按上述规定的 CR-LDP 协议来信令 L-LSP 的 PSC (即 LDP Label Request/Label Mapping 消息中的 Diff-Serv TLV).

  • 不在 E-LSP 上激活保护.

  • 通过超出本文档范围的机制, 在不同 L-LSP 上激活适当级别的保护 (取决于 L-LSP 的 PSC, 可能具有不同的保护级别).

A.7 场景 7: 多于 8 个 BA, 无流量工程, 无 MPLS 保护

在其网络中运行多于 8 个 BA 经 MPLS 传输, 不执行流量工程, 不执行 MPLS 保护, 并使用 MPLS 垫片头封装的服务提供商, 可选择使用通过 LDP 建立的每个 FEC 两条 E-LSP 并使用信令 `EXP<-->PHB mapping' 来运行基于 MPLS 的 Diff-Serv.

操作可概括如下:

  • 服务提供商在每个 LSR 上, 并为每个接口, 配置每个 PSC 的调度行为 (例如分配给 AF1 的带宽) 以及每个 PHB 的丢弃行为 (例如 AF11, AF12, AF13 的丢弃配置文件)

  • LSR 使用 LDP 按上述规范信令建立每个 FEC 两条 E-LSP (即 LDP Label Request/Label Mapping 消息中的 Diff-Serv TLV 显式指示该 LSP 为 E-LSP 及其 `EXP<-->PHB mapping'). 所信令的映射将指示每条 E-LSP 上要传输的 8 个 (或更少) BA 子集, 以及在每条 E-LSP 上哪些 EXP 值映射到每个 BA.

附录 B. 示例带宽预留场景 (APPENDIX B. Example Bandwidth Reservation Scenarios)

B.1 场景 1: 无带宽预留

考虑网络管理员选择:

  • 完全离线供给 Diff-Serv 资源 (例如通过命令行接口, SNMP, COPS,...)

  • 对所有 Diff-Serv 流量使用最短路径路由.

这是最接近在非 MPLS IP 上供给 Diff-Serv 的模型. 在该情况下, E-LSP 和/或 L-LSP 将在不信令带宽的情况下建立.

B.2 场景 2: 用于按 PSC 准入控制的带宽预留

考虑网络管理员选择:

  • 完全离线供给 Diff-Serv 资源 (例如通过命令行接口, SNMP, COPS,...)

  • 使用 L-LSP

  • 对每个 PSC 分别执行约束路由, 其中一个约束是相关 PSC 所分配带宽的可用性.

在该情况下, L-LSP 将在信令带宽的情况下建立. 在 L-LSP 建立时信令的带宽将由 LSR 用于在每一跳执行准入控制, 以确保满足相关 PSC 带宽可用性的约束.

B.3 场景 3: 用于按 PSC 准入控制与按 PSC 资源调整的带宽预留

考虑网络管理员选择:

  • 使用 L-LSP

  • 对每个 PSC 分别执行约束路由, 其中一个约束是相关 PSC 所分配带宽的可用性.

  • 动态调整 Diff-Serv 资源

在该情况下, L-LSP 将在信令带宽的情况下建立. 在 L-LSP 建立时信令的带宽将由 LSR 用于尝试调整分配给相关 PSC 的资源 (例如调度权重), 然后执行准入控制, 以确保在调整后满足相关 PSC 带宽可用性的约束.

参考文献 (References)

[ANSI/IEEE] ANSI/IEEE Std 802.1D, 1993 Edition, incorporating IEEE supplements P802.1p, 802.1j-1996, 802.6k-1992, 802.11c-1998, and P802.12e).

[ATMF_TM] ATM Forum, "Traffic Management Specification Version 4.1", March 1999.

[CR-LDP_MPLS_TE] Jamoussi, B., Editor, Andersson, L., Callon, R. and R. Dantu, "Constraint-Based LSP Setup using LDP", RFC 3212, January 2002.

[DCLASS] Bernet, Y., "Format of the RSVP DCLASS Object", RFC 2996, November 2000.

[DIFF_AF] Heinanen, J., Baker, F., Weiss, W. and J. Wroclawski, "Assured Forwarding PHB Group", RFC 2597, June 1999.

[DIFF_ARCH] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z. and W. Weiss, "An Architecture for Differentiated Services", RFC 2475, December 1998.

[DIFF_EF] Davie, B., Charny, A., Baker, F., Bennet, J., Benson, K., Boudec, J., Chiu, A., Courtney, W., Davari, S., Firoiu, V., Kalmanek, C., Ramakrishnam, K. and D. Stiliadis, "An Expedited Forwarding PHB (Per-Hop Behavior)", RFC 3246, March 2002.

[DIFF_HEADER] Nichols, K., Blake, S., Baker, F. and D. Black, "Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers", RFC 2474, December 1998.

[DIFF_NEW] Grossman, D., "New Terminology and Clarifications for Diffserv", RFC 3260, April 2002.

[DIFF_TUNNEL] Black, D., "Differentiated Services and Tunnels", RFC 2983, October 2000.

[ECN] Ramakrishnan, K., Floyd, S. and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, September 2001.

[IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.

[IEEE_802.1] ISO/IEC 15802-3: 1998 ANSI/IEEE Std 802.1D, 1998 Edition (Revision and redesignation of ISO/IEC 10038:98.

[LDP] Andersson, L., Doolan, D., Feldman, N., Fredette, A. and B. Thomas, "LDP Specification", RFC 3036, January 2001.

[MPLS_ARCH] Rosen, E., Viswanathan, A. and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, January 2001.

[MPLS_ATM] Davie, B., Lawrence, J., McCloghrie, K., Rosen, E., Swallow, G., Rekhter, Y. and P. Doolan, "MPLS using LDP and ATM VC Switching", RFC 3035, January 2001.

[MPLS_ENCAPS] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T. and A. Conta, "MPLS Label Stack Encoding", RFC 3032, January 2001.

[MPLS_FR] Conta, A., Doolan, P. and A. Malis, "Use of Label Switching on Frame Relay Networks Specification", RFC 3034, January 2001.

[MPLS_VPN] Rosen, E., "BGP/MPLS VPNs", Work in Progress.

[NULL] Bernet, Y., Smith, A. and B. Davie, "Specification of the Null Service Type", RFC 2997, November 2000.

[PHBID] Black, D., Brim, S., Carpenter, B. and F. Le Faucheur, "Per Hop Behavior Identification Codes" RFC 3140, June 2001.

[RSVP] Braden, R., Zhang, L., Berson, S., Herzog, S. and S. Jamin, "Resource ReSerVation Protocol (RSVP) - Version 1 Functional Specification", RFC 2205, September 1997.

[RSVP_MPLS_TE] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V. and G. Swallow, "Extensions to RSVP for LSP Tunnels", RFC 3209, December 2001.

作者地址 (Authors' Addresses)

Francois Le Faucheur Cisco Systems Village d'Entreprise Green Side - Batiment T3 400, Avenue de Roumanille 06410 Biot-Sophia Antipolis France

Phone: +33 4 97 23 26 19 EMail: [email protected]

Liwen Wu Cisco Systems 3550 Cisco Way San Jose, CA 95134 USA

Phone: +1 (408) 853-4065 EMail: [email protected]

Bruce Davie Cisco Systems 250 Apollo Drive, Chelmsford, MA 01824 USA

Phone: +1 (978) 244-8000 EMail: [email protected]

Shahram Davari PMC-Sierra Inc. 411 Legget Drive Kanata, Ontario K2K 3C9 Canada

Phone: +1 (613) 271-4018 EMail: [email protected]

Pasi Vaananen Nokia 3 Burlington Woods Drive, Suit 250 Burlington, MA 01803 USA

Phone +1 (781) 993-4900 EMail: [email protected]

Ram Krishnan Axiowave Networks 200 Nickerson Road Marlboro, MA 01752

EMail: [email protected]

Pierrick Cheval Alcatel 5 rue Noel-Pons 92737 Nanterre Cedex France EMail: [email protected]

Juha Heinanen Song Networks, Inc. Hallituskatu 16 33200 Tampere, Finland

EMail: [email protected]

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

本文档及其译文可被复制并提供给他人; 对其加以评论或以其他方式解释, 或协助其实现的衍生作品, 可在不加任何限制的情况下全部或部分地制作, 复制, 出版和分发, 前提是上述版权声明及本段内容包含在所有此类副本 和衍生作品中. 但是, 本文档本身不得以任何方式修改, 例如删除版权声明 或删除对 Internet Society 或其他 Internet 组织的引用, 但为制定 Internet 标准所必需时除外 (此时须遵循 Internet 标准过程中定义的 版权程序), 或为将其翻译成英语以外的语言所必需时除外.

上文授予的有限许可是永久性的, 不会被 Internet Society 或其继任者 或受让人撤销.

本文档及其中所含信息按 "AS IS" (按现状) 提供, INTERNET SOCIETY 与 INTERNET ENGINEERING TASK FORCE 不作任何明示或默示保证, 包括但不 限于对本文所含信息的使用不侵犯任何权利的保证, 以及适销性或针对 特定用途适用性的任何默示保证.

致谢 (Acknowledgement)

RFC Editor 职能的资金目前由 Internet Society 提供.