< draft-song-mpls-extension-header-02.txt   draft-song-mpls-extension-header-03.txt >
MPLS H. Song, Ed. MPLS H. Song, Ed.
Internet-Draft Z. Li Internet-Draft Futurewei Technologies
Intended status: Standards Track T. Zhou Intended status: Standards Track Z. Li
Expires: August 9, 2019 Huawei Expires: September 11, 2021 T. Zhou
Huawei
L. Andersson L. Andersson
Bronze Dragon Consulting Bronze Dragon Consulting
February 5, 2019 March 10, 2021
MPLS Extension Header MPLS Extension Header
draft-song-mpls-extension-header-02 draft-song-mpls-extension-header-03
Abstract Abstract
Motivated by the need to support multiple in-network services and Motivated by the need to support multiple in-network services and
functions in an MPLS network, this document describes a method to functions in an MPLS network, this document describes a generic and
encapsulate extension headers into MPLS packets. The encapsulation extensible method to encapsulate extension headers into MPLS packets.
method allows stacking multiple extension headers and quickly The encapsulation method allows stacking multiple extension headers
accessing any of them as well as the original upper layer protocol and quickly accessing any of them as well as the original upper layer
header and payload. We show how the extension header can be used to protocol header and payload. We show how the extension header can be
support several new network applications and optimize some existing used to support several new network applications and optimize some
network services. existing network services.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119][RFC8174] when, and only when, they appear in all 14 [RFC2119][RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
Status of This Memo Status of This Memo
skipping to change at page 1, line 48 skipping to change at page 1, line 49
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 9, 2019. This Internet-Draft will expire on September 11, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 40 skipping to change at page 2, line 40
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
10.1. Normative References . . . . . . . . . . . . . . . . . . 9 10.1. Normative References . . . . . . . . . . . . . . . . . . 9
10.2. Informative References . . . . . . . . . . . . . . . . . 10 10.2. Informative References . . . . . . . . . . . . . . . . . 10
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11
1. Motivation 1. Motivation
Some applications require adding instructions and/or metadata to user Some applications require adding instructions and/or metadata to user
packets within a network. Such examples include In-situ OAM (IOAM) packets within a network. Such examples include In-situ OAM (IOAM)
[I-D.brockners-inband-oam-requirements] and Service Function Chaining [I-D.ietf-ippm-ioam-data] and Service Function Chaining (SFC)
(SFC) [RFC7665]. New applications are emerging. It is possible that [RFC7665]. New applications are emerging. It is possible that the
the instructions and/or metadata for multiple applications are instructions and/or metadata for multiple applications are stacked
stacked together in one packet to support a compound service. together in one packet to support a compound service.
Conceivably, such instructions and/or metadata would be encoded as Conceivably, such instructions and/or metadata would be encoded as
new headers and encapsulated in user packets. Such headers may new headers and encapsulated in user packets. Such headers may
require to be processed in fast path or in slow path. Moreover, such require to be processed in fast path or in slow path. Moreover, such
headers may require being attended at each hop on the forwarding path headers may require being attended at each hop on the forwarding path
(i.e., hop-by-hop or HBH) or at designated end nodes (i.e., end-to- (i.e., hop-by-hop or HBH) or at designated end nodes (i.e., end-to-
end or E2E). end or E2E).
The encapsulation of the new header(s) poses some challenges to MPLS The encapsulation of the new header(s) poses some challenges to MPLS
networks, because the MPLS protocol header contains no explicit networks, because the MPLS protocol header contains no explicit
indicator for the upper layer protocols by design. We leave the indicator for the upper layer protocols by design. We leave the
discussion on the indicator of new header(s) in an MPLS packet to discussion on the indicator of new header(s) in an MPLS packet to
another companion document. In this document, we focus on the encode another companion document [I-D.song-mpls-eh-indicator]. In this
and encapsulation of new headers in an MPLS packet. document, we focus on the encode and encapsulation of new headers in
an MPLS packet.
The similar problem has been tackled for some particular application The similar problem has been tackled for some particular application
before. However, the solutions have some drawbacks: before. However, the solutions have some drawbacks:
o These solutions rely on either the built-in next-protocol o These solutions rely on either the built-in next-protocol
indicator in the header or the knowledge of the format and size of indicator in the header or the knowledge of the format and size of
the header to access the following packet data. The node is the header to access the following packet data. The node is
required to be able to parse the new header, which is unrealistic required to be able to parse the new header, which is unrealistic
in an incremental deployment environment. in an incremental deployment environment.
o A piecemeal solution often assumes the new header is the only o A piecemeal solution often assumes the new header is the only
extra header and its location in the packet is fixed by default. extra header and its location in the packet is fixed by default.
It is impossible or difficult to support multiple new headers in It is impossible or difficult to support multiple new headers in
one packet due to the conflicted assumption. one packet due to the conflicted assumption.
To solve these issues, we propose to introduce extension header as a To solve these issues, we propose to introduce extension header as a
general and extensible means to support new in-network functions and general and extensible means to support new in-network functions and
applications in MPLS networks. The idea is similar to IPv6 extension applications in MPLS networks. The idea is similar to IPv6 extension
headers which offer a huge innovation potential (e.g, network headers which offer a huge innovation potential (e.g, network
security, SRv6 [I-D.ietf-spring-segment-routing], network programming security, SRv6 [RFC8754], network programming
[I-D.filsfils-spring-srv6-network-programming], SFC [I-D.ietf-spring-srv6-network-programming], SFC
[I-D.xu-clad-spring-sr-service-chaining], etc.). Thanks to the [I-D.xu-clad-spring-sr-service-chaining], etc.). Thanks to the
existing of extension headers, it is straightforward to introduce new existing of extension headers, it is straightforward to introduce new
in-network services into IPv6 networks. For example, it has been in-network services into IPv6 networks. For example, it has been
proposed to carry IOAM header [I-D.brockners-inband-oam-transport] as proposed to carry IOAM header [I-D.brockners-inband-oam-transport] as
a new extension header in IPv6 networks. a new extension header in IPv6 networks.
Nevertheless, IPv6 is not perfect either. It has two main issues. Nevertheless, IPv6 is not perfect either. It has two main issues.
First, IPv6's header is large compared to MPLS, claiming extra First, IPv6's header is large compared to MPLS, claiming extra
bandwidth overhead and complicating the packet processing. We prefer bandwidth overhead and complicating the packet processing. We prefer
to retain the header compactness in MPLS networks. Second, IPv6's to retain the header compactness in MPLS networks. Second, IPv6's
skipping to change at page 5, line 6 skipping to change at page 5, line 6
headers but not the others in an extension header stack, it can headers but not the others in an extension header stack, it can
process the known headers only while ignoring the others. process the known headers only while ignoring the others.
We assume the MPLS label stack has included some indicator of the We assume the MPLS label stack has included some indicator of the
extension header(s). The actual extension headers are inserted extension header(s). The actual extension headers are inserted
between the MPLS label stack and the original upper layer packet between the MPLS label stack and the original upper layer packet
header. The format of the MPLS packets with extension headers is header. The format of the MPLS packets with extension headers is
shown in Figure 1. shown in Figure 1.
0 31 0 31
+--------+--------+--------+--------+ - +--------+--------+--------+--------+ \
| | | | | |
~ MPLS Label Stack ~ | ~ MPLS Label Stack ~ |
| | | | | |
+--------+--------+--------+--------+ | +--------+--------+--------+--------+ |
| EH Indicator (TBD) | > MPLS Label Stack | EH Indicator (TBD) | > MPLS Label Stack
+--------+--------+--------+--------+ | (extended with EHI) +--------+--------+--------+--------+ | (extended with EHI)
| | | | | |
~ MPLS Label Stack ~ | ~ MPLS Label Stack ~ |
| | | | | |
+--------+--------+--------+--------+ = +--------+--------+--------+--------+ <
| Header of Extension Headers (HEH) | | | Header of Extension Headers (HEH) | |
+--------+--------+--------+--------+ | +--------+--------+--------+--------+ |
| | | | | |
~ Extension Header (EH) 1 ~ | ~ Extension Header (EH) 1 ~ |
| | | | | |
+--------+--------+--------+--------+ > MPLS EH Fields +--------+--------+--------+--------+ > MPLS EH Fields
~ ~ | (new) ~ ~ | (new)
+--------+--------+--------+--------+ | +--------+--------+--------+--------+ |
| | | | | |
~ Extension Header (EH) N ~ | ~ Extension Header (EH) N ~ |
| | | | | |
+--------+--------+--------+--------+ = +--------+--------+--------+--------+ <
| | | | | |
~ Upper Layer Headers/Payload ~ > MPLS Payload ~ Upper Layer Headers/Payload ~ > MPLS Payload
| | | (as is) | | | (as is)
+--------+--------+--------+--------+ - +--------+--------+--------+--------+ /
Figure 1: MPLS with Extension Headers Figure 1: MPLS with Extension Headers
Following the MPLS label stack is the 4-octet Header of Extension Following the MPLS label stack is the 4-octet Header of Extension
Headers (HEH), which indicates the total number of extension headers Headers (HEH), which indicates the total number of extension headers
in this packet, the overall length of the extension headers, and the in this packet, the overall length of the extension headers, and the
type of the next header. The format of the HEH is shown in Figure 2. type of the next header. The format of the HEH is shown in Figure 2.
0 1 2 3 0 1 2 3
0123 45678901 234567890123 45678901 0123 45678901 234567890123 45678901
skipping to change at page 9, line 48 skipping to change at page 9, line 48
10. References 10. References
10.1. Normative References 10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed.,
"MPLS Generic Associated Channel", RFC 5586,
DOI 10.17487/RFC5586, June 2009,
<https://www.rfc-editor.org/info/rfc5586>.
[RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function [RFC7665] Halpern, J., Ed. and C. Pignataro, Ed., "Service Function
Chaining (SFC) Architecture", RFC 7665, Chaining (SFC) Architecture", RFC 7665,
DOI 10.17487/RFC7665, October 2015, DOI 10.17487/RFC7665, October 2015,
<https://www.rfc-editor.org/info/rfc7665>. <https://www.rfc-editor.org/info/rfc7665>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8321] Fioccola, G., Ed., Capello, A., Cociglio, M., Castaldelli, [RFC8321] Fioccola, G., Ed., Capello, A., Cociglio, M., Castaldelli,
L., Chen, M., Zheng, L., Mirsky, G., and T. Mizrahi, L., Chen, M., Zheng, L., Mirsky, G., and T. Mizrahi,
"Alternate-Marking Method for Passive and Hybrid "Alternate-Marking Method for Passive and Hybrid
Performance Monitoring", RFC 8321, DOI 10.17487/RFC8321, Performance Monitoring", RFC 8321, DOI 10.17487/RFC8321,
January 2018, <https://www.rfc-editor.org/info/rfc8321>. January 2018, <https://www.rfc-editor.org/info/rfc8321>.
10.2. Informative References [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J.,
Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header
(SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020,
<https://www.rfc-editor.org/info/rfc8754>.
[I-D.brockners-inband-oam-requirements] 10.2. Informative References
Brockners, F., Bhandari, S., Dara, S., Pignataro, C.,
Gredler, H., Leddy, J., Youell, S., Mozes, D., Mizrahi,
T., Lapukhov, P., and r. remy@barefootnetworks.com,
"Requirements for In-situ OAM", draft-brockners-inband-
oam-requirements-03 (work in progress), March 2017.
[I-D.brockners-inband-oam-transport] [I-D.brockners-inband-oam-transport]
Brockners, F., Bhandari, S., Govindan, V., Pignataro, C., Brockners, F., Bhandari, S., Govindan, V., Pignataro, C.,
Gredler, H., Leddy, J., Youell, S., Mizrahi, T., Mozes, Gredler, H., Leddy, J., Youell, S., Mizrahi, T., Mozes,
D., Lapukhov, P., and R. Chang, "Encapsulations for In- D., Lapukhov, P., and R. Chang, "Encapsulations for In-
situ OAM Data", draft-brockners-inband-oam-transport-05 situ OAM Data", draft-brockners-inband-oam-transport-05
(work in progress), July 2017. (work in progress), July 2017.
[I-D.filsfils-spring-srv6-network-programming]
Filsfils, C., Camarillo, P., Leddy, J.,
daniel.voyer@bell.ca, d., Matsushima, S., and Z. Li, "SRv6
Network Programming", draft-filsfils-spring-srv6-network-
programming-06 (work in progress), October 2018.
[I-D.guichard-sfc-mpls-metadata]
Guichard, J., Pignataro, C., Spraggs, S., and S. Bryant,
"Carrying Metadata in MPLS Networks", draft-guichard-sfc-
mpls-metadata-00 (work in progress), September 2013.
[I-D.ietf-ippm-ioam-data] [I-D.ietf-ippm-ioam-data]
Brockners, F., Bhandari, S., Pignataro, C., Gredler, H., Brockners, F., Bhandari, S., and T. Mizrahi, "Data Fields
Leddy, J., Youell, S., Mizrahi, T., Mozes, D., Lapukhov, for In-situ OAM", draft-ietf-ippm-ioam-data-11 (work in
P., Chang, R., daniel.bernier@bell.ca, d., and J. Lemon, progress), November 2020.
"Data Fields for In-situ OAM", draft-ietf-ippm-ioam-
data-04 (work in progress), October 2018.
[I-D.ietf-spring-segment-routing] [I-D.ietf-spring-srv6-network-programming]
Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Filsfils, C., Camarillo, P., Leddy, J., Voyer, D.,
Litkowski, S., and R. Shakir, "Segment Routing Matsushima, S., and Z. Li, "SRv6 Network Programming",
Architecture", draft-ietf-spring-segment-routing-15 (work draft-ietf-spring-srv6-network-programming-28 (work in
in progress), January 2018. progress), December 2020.
[I-D.song-mpls-eh-indicator]
Song, H., Li, Z., Zhou, T., and L. Andersson, "Options for
MPLS Extension Header Indicator", draft-song-mpls-eh-
indicator-00 (work in progress), February 2019.
[I-D.xu-clad-spring-sr-service-chaining] [I-D.xu-clad-spring-sr-service-chaining]
Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca, Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca,
d., Decraene, B., Yadlapalli, C., Henderickx, W., Salsano, d., Decraene, B., Yadlapalli, C., Henderickx, W., Salsano,
S., and S. Ma, "Segment Routing for Service Chaining", S., and S. Ma, "Segment Routing for Service Chaining",
draft-xu-clad-spring-sr-service-chaining-00 (work in draft-xu-clad-spring-sr-service-chaining-00 (work in
progress), December 2017. progress), December 2017.
Authors' Addresses Authors' Addresses
Haoyu Song (editor) Haoyu Song (editor)
Huawei Futurewei Technologies
2330 Central Expressway 2330 Central Expressway
Santa Clara Santa Clara
USA USA
Email: haoyu.song@huawei.com Email: haoyu.song@futurewei.com
Zhenbin Li Zhenbin Li
Huawei Huawei
156 Beiqing Road 156 Beiqing Road
Beijing, 100095 Beijing, 100095
P.R. China P.R. China
Email: lizhenbin@huawei.com Email: lizhenbin@huawei.com
Tianran Zhou Tianran Zhou
 End of changes. 21 change blocks. 
61 lines changed or deleted 48 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/