RFC5462:Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field,February 2009
本备忘录的状态
本文档为 Internet 社区指定了 Internet 标准跟踪协议,并请求讨论和改进建议。本协议的标准化状态和现状请参考当前版本的《互联网官方协议标准》(STD 1)。本备忘录的分发不受限制。
版权声明
版权所有 (c) 2009 IETF Trust 和确定为文档作者的人员。版权所有。
本文件受 BCP 78 和 IETF 信托关于 IETF 文件的法律规定的约束,该法律规定自本文件发布之日起生效 (http://trustee.ietf.org/license-info)。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。
梗概
早期的多协议标签交换 (Multiprotocol Label Switching,MPLS) 文档定义了 MPLS 标签堆栈条目的形式。这包括称为“EXP 字段”的三位字段。这些文件没有定义该字段的确切用途,只是声明它“保留用于实验用途”。
尽管 EXP 字段的预期用途是作为“服务等级”(Class of Service,CoS) 字段,但这些早期文档并未将其命名为 CoS 字段,因为此类 CoS 字段的使用未被认为是充分定义的。今天,许多标准文档将其用途定义为 CoS 字段。
为避免对该字段的使用方式产生误解,重命名该字段变得越来越有必要。本文档将该字段的名称更改为“Traffic Class field”(“TC 字段”)。这样做时,它还更新定义 EXP 字段当前使用的文档。
1、 介绍
MPLS 标签堆栈条目的格式由 RFC 3032 [RFC3032] 定义,包括一个称为“EXP field”的三位字段。RFC 3032 没有定义该字段的确切用途,只是声明它“保留用于实验用途”。
EXP 字段从一开始就旨在携带“服务等级”(CoS) 信息。在发布为 RFC 3032 的工作组文档的早期版本中,该字段实际上被称为“服务等级字段”。但是,在 RFC 3032 发布时,此“服务等级”字段的确切用法是未达成一致,该领域被指定为“实验性使用”;因此,此名称一直是“EXP 字段”。
“用于实验用途”这一名称导致其他标准开发组织 (Standards Development Organizations,SDO) 和实施者假设可以将该领域用于其他目的。本文档更改了该字段的名称,以明确表明其用作流量分类字段。
起初,我们讨论了使用原始的“CoS 字段”作为字段的名称,但有人指出,该名称不包括自 RFC 3032 发布以来在其用法方面发生的以下更改。
1. EXP 字段的使用首先在 RFC 3270 [RFC3270] 中定义,其中指定了一种定义 Diffserv 标签交换路径 (Label Switched Paths,LSP) 变体的方法,称为 EXP-Inferred-PSC LSP (E-LSP)。PSC 是一个两阶段首字母缩写词,扩展为 PHB(Per Hop Behavior,每跳行为)调度类 (Scheduling Class,PSC)。
2. RFC 3270 中定义的 EXP 字段的使用在 RFC 5129 [RFC5129] 中得到了进一步扩展,其中定义了 MPLS 中显式拥塞标记的方法。
因此,本文档使用名称“流量类别字段(TC 字段)”,它更好地涵盖了潜在用途。MPLS TC 字段与 MPLS 封装的数据包相关,就像 IPv6 TC 字段与 IPv6 封装的数据包或 IPv4 Precedence 字段与 IPv4 封装的数据包相关一样。
EXP 字段如何使用的定义在 RFC 3270 和 RFC 5129 中非常清楚。但是,这些 RFC 没有明确声明它们更新了 RFC 3032,并且这个事实直到本文档的工作开始后才被记录在 RFC 存储库中.
本文档更新了 RFC 3032、RFC 3270 和 RFC 5129,以阐明 TC 字段的预期用途。对这些 RFC 的更改需要对这些文档中的实际文本进行一些更改;第 2 节解释了这些变化。
本文档还更新了其他几个 RFC;见第 2.4 节。对于这些文档,更改仅限于更改标签堆栈输入字段的名称。
本文档中的关键词“必须”、“不得”、“需要”、“应该”、“不应”、“应该”、“不应该”、“推荐”、“可以”和“可选”是按照 RFC 2119 [RFC2119] 中的描述进行解释。
2、 变更详情
现在根据以下内容更新了三个 RFC 3032、3270 和 5129。
2.1、 RFC 3032
RFC 3032 第 4 页上的说明:
3. 实验使用
该三位字段保留供实验使用。
本段现改为:
3. 流量等级 (TC) 字段
这个三位字段用于携带流量类别信息,名称的更改适用于它出现在 IETF RFC 和其他 IETF 文档中的所有地方。
RFC 3270 和 RFC 5129 更新了 TC 字段的定义并描述了如何使用该字段。
在 RFC 3032 第 3 页的图 1 中,标签堆栈条目的格式指定为:
图1
Label: 标签,标签值,20 位 Exp: Experimental Use,实验性使用,3 位 S: Bottom of Stack,栈底,1位 TTL: Time to Live,生存时间,8 位
RFC 3032 中的图 1 现在已更改以匹配名称更改为 TC 字段:
图1(新)
Label: 标签,标签值,20 位 TC: Traffic Class field,流量类别字段,3 位 S: Bottom of Stack,栈底,1位 TTL: Time to Live,生存时间,8 位
注意:将上图指定为“图 1(新)”是为了区分本文档中的图。它仍然是 RFC 3032 中的“图 1”。
2.2、 RFC 3270
RFC 3270 在第 6 页上说:
1.2 EXP-Inferred-PSC LSP (E-LSP)
单个 LSP 可用于支持一个或多个 OA。这样的 LSP 最多可以支持给定 FEC 的八个 BA,而不管这些 BA 跨越多少个 OA。对于此类 LSP,LSR 使用 MPLS Shim Header 的 EXP 字段来确定要应用于数据包的 PHB。这包括 PSC 和丢弃首选项。
我们将此类 LSP 称为“EXP-inferred-PSC LSP”(E-LSP),因为在此 LSP 上传输的数据包的 PSC 取决于该数据包的 EXP 字段值。
对于给定的此类 LSP,从 EXP 字段到 PHB(即到 PSC 和丢弃优先级)的映射,要么在标签设置时明确发出信号,要么依赖于预先配置的映射。
E-LSP 的详细操作在下面的第 3 节中详细说明。
RFC 3270 现在更新如下:
A. 第一节“引言”末尾新增一段:
EXP 字段已重命名为 TC 字段,因此 RFC 3270 中对 EXP 字段的所有引用现在都引用 TC 字段。
B. 第 1.1 节“术语”中增加了一个新术语:
TC Traffic Class(取代术语 EXP)
C. 在第 1.1 节“术语”中,首字母缩略词 E-LSP 现在被理解为:
E-LSP,Explicitly TC-encoded-PSC LSP,显式TC编码的PSC LSP
RFC 3270 第 6 页上的第 1.2 节现在更改为:
1.2 显式 TC 编码的 PSC LSP(E-LSP)
EXP 字段已重命名为 TC 字段,因此 RFC 3270 中对 EXP 字段的所有引用现在都引用 TC 字段。但是,我们保留首字母缩略词 E-LSP(显式 TC-encoded-PSC LSP),因为该首字母缩略词被广泛使用。
单个 LSP 可用于支持一个或多个 OA。这样的 LSP 最多可以支持给定 FEC 的八个 BA,而不管这些 BA 跨越多少个 OA。对于此类 LSP,LSR 使用 MPLS Shim Header 的 TC 字段来确定要应用于数据包的 PHB。这包括 PSC 和丢弃首选项。
我们将此类 LSP 称为“显式 TC 编码 PSC LSP”(E-LSP),因为在此 LSP 上传输的数据包的 PSC 取决于该数据包的 TC 字段(以前称为 EXP 字段)值。
对于给定的此类 LSP,从 TC 字段到 PHB(即到 PSC 和丢弃优先级)的映射要么在标签设置时明确发出信号,要么依赖于预先配置的映射。
这是对 RFC 3032 [RFC3032] 的更新,符合 MPLS Shim 标头中该字段应如何使用(作为 TC 字段)的原始意图。RFC 3270 本身已由 RFC 5129 [RFC5129] 更新。
E-LSP 的详细操作在 RFC 3270 的第 3 节中指定。
2.3、 RFC 5129
RFC 5129 现在更新如下:
在第 1.1 节“背景”的末尾添加了一个新段落:
EXP 字段已重命名为 TC 字段,因此 RFC 5129 中对 EXP 字段的所有引用现在都引用 TC 字段。
RFC 5129 第 7 页的第 2 节(第 5 条)说:
[Shayman] 提出了第三种可能的方法。在该方案中,内部 LSR 假设端点具有 ECN 能力,但在弹出最终标签时会检查该假设。如果内部 LSR 在 shim 报头的 EXP 字段中标记了 ECN,但 IP 报头表明端点不支持 ECN,则边缘路由器(或倒数第二个路由器,如果使用倒数第二跳弹出)丢弃数据包。我们推荐这种方案,我们称之为“每域 ECT 检查”,并在下一节中对其进行更精确的定义。它的主要缺点是会导致数据包在遇到拥塞后转发,却在 MPLS 域的出口被丢弃。第 8.1 节给出了该决定的基本原理。
RFC 5129 的第 2 节(第 5 条)现已更新为:
[Shayman] 提出了第三种可能的方法。在该方案中,内部 LSR 假设端点具有 ECN 能力,但在弹出最终标签时会检查该假设。如果内部 LSR 在 shim 标头的 TC 字段中标记了 ECN,但 IP 标头表示端点不具备 TC 功能,则边缘路由器(或倒数第二个路由器,如果使用倒数第二跳弹出)丢弃数据包。我们推荐这种方案,我们称之为“每域 ECT 检查”,并在下一节中对其进行更精确的定义。它的主要缺点是会导致数据包在遇到拥塞后转发,却在 MPLS 域的出口被丢弃。第 8.1 节给出了该决定的基本原理。该方案是对 RFC 3032 [RFC3032] 和 RFC 3270 [RFC3270] 的更新。
2.4、 本次变更的范围
本文档明确更新的 RFC 中有几个地方引用了“Exp 字段”,有时他们将该字段称为“Exp 位”、“EXP 位”或“EXP”。在所有这些情况下,引用现在都引用了 TC 字段。
还有其他 RFC(例如 RFC 3272 [RFC3272]、RFC 3443 [RFC3443]、RFC 3469 [RFC3469]、RFC 3564 [RFC3564]、RFC 3985 [RFC3985]、RFC 4182 [RFC4182]、RFC 4364 [RFC4364]、RFC 4379 [RFC4379]、RFC 4448 [RFC4448] 和 RFC 4761 [RFC4761]) 引用了“Exp 字段”;有时他们将该字段称为“Exp 位”、“EXP 位”和“EXP”。对于所有 RFC,包括但不限于本段中提到的那些,此类引用现在引用 TC 字段。
3、 TC字段的使用
由于 TC 字段中的比特数有限,因此它们用于 QoS 和 ECN(Explicit Congestion Notification,显式拥塞通知)功能的目的是灵活的。这些函数可能会重写 TC 字段中的所有或部分位。
当前的实现查看带有和不带有标签上下文的 TC 字段,并且可以将 TC 字段复制到推送到标签堆栈上的标签堆栈条目。这样做是为了避免将标签堆栈条目推送到与其余标签堆栈条目具有不同 TC 字段的现有标签堆栈上。
4、 安全考虑
本文档仅更改 MPLS shim 头中的一个字段的名称,因此不引入任何新的安全考虑。
5、 致谢
作者要感谢 Stewart Bryant、Bruce Davie、George Swallow 和 Francois Le Faucheur 对当前文档的投入和审阅。
作者还要感谢 George Swallow、Khatri Paresh 和 Phil Bedard 在语法和拼写方面的帮助;特别感谢 Adrian Farrel 仔细审查并帮助在 RFC-sea 中搜索引用 EXP 字段的 RFC。
6、 参考文献
6.1、 规范参考
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack Encoding", RFC 3032, January 2001. [RFC3270] Le Faucheur, F., Wu, L., Davie, B., Davari, S., Vaananen, P., Krishnan, R., Cheval, P., and J. Heinanen, "Multi-Protocol Label Switching (MPLS) Support of Differentiated Services", RFC 3270, May 2002. [RFC3272] Awduche, D., Chiu, A., Elwalid, A., Widjaja, I., and X. Xiao, "Overview and Principles of Internet Traffic Engineering", RFC 3272, May 2002. [RFC3443] Agarwal, P. and B. Akyol, "Time To Live (TTL) Processing in Multi-Protocol Label Switching (MPLS) Networks", RFC 3443, January 2003. [RFC3469] Sharma, V. and F. Hellstrand, "Framework for Multi-Protocol Label Switching (MPLS)-based Recovery", RFC 3469, February 2003. [RFC3564] Le Faucheur, F. and W. Lai, "Requirements for Support of Differentiated Services-aware MPLS Traffic Engineering", RFC 3564, July 2003. [RFC3985] Bryant, S. and P. Pate, "Pseudo Wire Emulation Edge-to-Edge (PWE3) Architecture", RFC 3985, March 2005. [RFC4182] Rosen, E., "Removing a Restriction on the use of MPLS Explicit NULL", RFC 4182, September 2005. [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private Networks (VPNs)", RFC 4364, February 2006. [RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol Label Switched (MPLS) Data Plane Failures", RFC 4379, February 2006. [RFC4448] Martini, L., Rosen, E., El-Aawar, N., and G. Heron, "Encapsulation Methods for Transport of Ethernet over MPLS Networks", RFC 4448, April 2006. [RFC4761] Kompella, K. and Y. Rekhter, "Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery and Signaling", RFC 4761, January 2007. [RFC5129] Davie, B., Briscoe, B., and J. Tay, "Explicit Congestion Marking in MPLS", RFC 5129, January 2008.
6.2、 参考资料
[Shayman] Shayman, M. and R. Jaeger, "Using ECN to Signal Congestion Withi