rfc9790v1.txt   rfc9790.txt 
skipping to change at line 104 skipping to change at line 104
information is communicated via other means, such as the routing information is communicated via other means, such as the routing
protocols that signal the labels in the stack. Nonetheless, in order protocols that signal the labels in the stack. Nonetheless, in order
to better handle an MPLS packet in the data plane, it is common to better handle an MPLS packet in the data plane, it is common
practice for network equipment to "guess" the type of embedded practice for network equipment to "guess" the type of embedded
packet. Such equipment may also need to process the PSH. Both of packet. Such equipment may also need to process the PSH. Both of
these require parsing the data after the label stack. To do this, these require parsing the data after the label stack. To do this,
the "first nibble" (the top four bits of the first octet following the "first nibble" (the top four bits of the first octet following
the label stack) is often used. Although some existing network the label stack) is often used. Although some existing network
devices may use such a method, it needs to be stressed that the devices may use such a method, it needs to be stressed that the
correct interpretation of the Post-stack First Nibble (PFN) in a PSH correct interpretation of the Post-stack First Nibble (PFN) in a PSH
can be made only in the context associated using the control or can be made only in the context established through the control or
management plane with the Label Stack Entry (LSE) or group of LSEs in management plane with the Label Stack Entry (LSE) or group of LSEs in
the preceding label stack that characterizes the type of the PSH. the preceding label stack that characterizes the type of the PSH.
Any attempt to rely on the value in any other context is unreliable. Any attempt to rely on the value in any other context is unreliable.
Because the PFN value should not be used to deduce the type of PSH by Because the PFN value should not be used to deduce the type of PSH by
itself and the space of PFN values is limited, the reuse of PFN itself and the space of PFN values is limited, the reuse of PFN
values is encouraged when possible. values is encouraged when possible.
The semantics and usage of the first nibble are not well documented, The semantics and usage of the first nibble are not well documented,
nor are the assignments of values. This document serves four nor are the assignments of values. This document serves four
purposes: purposes:
skipping to change at line 126 skipping to change at line 126
* To document the values already in use. * To document the values already in use.
* To provide a mechanism to document future assignments through the * To provide a mechanism to document future assignments through the
creation of a new IANA "Post-Stack First Nibble" registry and creation of a new IANA "Post-Stack First Nibble" registry and
describe the relationship between it and the IANA "IP Version describe the relationship between it and the IANA "IP Version
Numbers" registry [RFC2780]. Numbers" registry [RFC2780].
* Provide a method for tracking usage by requiring more detailed * Provide a method for tracking usage by requiring more detailed
documentation. documentation.
* To stress the importance that any MPLS packet not carrying plain * To stress that any MPLS packet not carrying plain IPv4 or IPv6
IPv4 or IPv6 packets contains a PSH, including any new version of packets contains a PSH. This also applies to packets of any new
IP (Section 2.4). version of IP (see Section 2.4).
Section 2.1.1 of this document includes an analysis of load-balancing Section 2.1.1 of this document includes an analysis of load-balancing
techniques; based on this, Section 2.1.1.1 introduces a requirement techniques; based on this, Section 2.1.1.1 introduces a requirement
that deprecates the use of the heuristic and recommends using a that deprecates the use of the heuristic method for identifying the
dedicated label value for load balancing. The intent is for legacy type of packet encapsulated in MPLS and recommends using a dedicated
routers to continue operating as they have, with no new problems label value for load balancing. The intent is for legacy routers to
introduced as a result of this document. However, new continue operating as they have, with no new problems introduced as a
implementations that follow this document enable a more robust result of this document. However, new implementations that follow
network operation. this document enable a more robust network operation.
Furthermore, this document updates [RFC4928] by deprecating the Furthermore, this document updates [RFC4928] by deprecating the
heuristic method for identifying the type of packet encapsulated in heuristic method for identifying the type of packet encapsulated in
MPLS. This document clearly states that the type of encapsulated MPLS. This document clearly states that the type of encapsulated
packet cannot be determined based on the PFN alone. packet cannot be determined based on the PFN alone.
1.1. Requirements Language 1.1. 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 "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
1.2. Definitions 1.2. Definitions
MPLS packet: A packet whose Layer 2 header declares the type to be Deprecation: Regardless of how the deprecation is understood in
MPLS. For example, the Ethertype is 0x8847 or 0x8848 for other IETF documents, the interpretation in this document is that
Ethernet, and the Protocol field is 0x0281 or 0x0283 for PPP. if a practice has been deprecated, that practice should not be
included in new implementations or deployed in new deployments.
Embedded Packet: A packet that follows immediately after the MPLS
label stack and an optional PSH. The embedded packet could be an
IPv4 or IPv6 packet, an Ethernet packet (for Virtual Private LAN
Service (VPLS) [RFC4761] [RFC4762] or EVPN [RFC7432]), or some
other type of Layer 2 frame [RFC4446].
Label Stack: For an MPLS packet, all labels (four-octet fields) Label Stack: For an MPLS packet, all labels (four-octet fields)
after the Layer 2 header, up to and including the label with the after the Layer 2 header, up to and including the label with the
Bottom of Stack bit set [RFC3032]. Bottom of Stack bit set [RFC3032].
Post-stack First Nibble (PFN): The most significant four bits of the MPLS Packet: A packet whose Layer 2 header declares the type to be
first octet following the label stack. MPLS. For example, the Ethertype is 0x8847 or 0x8848 for
Ethernet, and the Protocol field is 0x0281 or 0x0283 for PPP.
MPLS Payload: All data after the label stack, including the PFN, an MPLS Payload: All data after the label stack, including the PFN, an
optional post-stack header, and the embedded packet. optional post-stack header, and the embedded packet.
Post-stack First Nibble (PFN): The most significant four bits of the
first octet following the label stack.
Post-Stack Header (PSH): Optional field of interest to the egress Post-Stack Header (PSH): Optional field of interest to the egress
Label Switching Router (LSR) (and possibly to transit LSRs). Label Switching Router (LSR) (and possibly to transit LSRs).
Examples include a control word [RFC4385] [RFC8964] or an Examples include a control word [RFC4385] [RFC8964] or an
associated channel [RFC4385] [RFC5586] [RFC9546]. The PSH MUST associated channel [RFC4385] [RFC5586] [RFC9546]. The PSH MUST
indicate its length, so that a parser knows where the embedded indicate its length, so that a parser knows where the embedded
packet starts. packet starts.
Embedded Packet: A packet that follows immediately after the MPLS
label stack and an optional PSH. The embedded packet could be an
IPv4 or IPv6 packet, an Ethernet packet (for Virtual Private LAN
Service (VPLS) [RFC4761] [RFC4762] or EVPN [RFC7432]), or some
other type of Layer 2 frame [RFC4446].
Deprecation: Regardless of how the deprecation is understood in
other IETF documents, the interpretation in this document is that
if a practice has been deprecated, that practice should not be
included in new implementations or deployed in new deployments.
1.3. Abbreviations 1.3. Abbreviations
LSR: Label Switching Router BIER: Bit Index Explicit Replication
LSE: Label Stack Entry FAT: Flow-Aware Transport
PSH: Post-Stack Header LSE: Label Stack Entry
PFN: Post-stack First Nibble LSR: Label Switching Router
FAT: Flow-Aware Transport MNA: MPLS Network Action
SPL: Special-Purpose Label PFN: Post-stack First Nibble
PW: Pseudowire PSH: Post-Stack Header
MNA: MPLS Network Action PW: Pseudowire
BIER: Bit Index Explicit Replication SPL: Special-Purpose Label
1.4. Reference Figures 1.4. Reference Figures
Figure 1 echoes the format of MPLS packets as defined in [RFC3032] Figure 1 echoes the format of MPLS packets as defined in [RFC3032]
where TC indicates the Traffic Class field [RFC5462] that replaced where TC indicates the Traffic Class field [RFC5462] that replaced
the EXP (Experimental Use) field, S is the Bottom of Stack flag, and the EXP (Experimental Use) field, S is the Bottom of Stack flag, and
TTL is the Time to Live field. TTL is the Time to Live field.
0 1 2 3 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 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
skipping to change at line 313 skipping to change at line 313
Transfer Mode were reasonably common and may become so again. Transfer Mode were reasonably common and may become so again.
In addition, there may be a PSH ahead of the embedded packet. The In addition, there may be a PSH ahead of the embedded packet. The
value of PFN is considered to ensure that the PSH can be correctly value of PFN is considered to ensure that the PSH can be correctly
parsed. parsed.
2.1.1. ECMP Load Balancing 2.1.1. ECMP Load Balancing
There are four common ways to load balance an MPLS packet: There are four common ways to load balance an MPLS packet:
1. One can use the top label alone. 1. Use the top label alone.
2. One can do better by using all of the non-SPLs [RFC7274] in the 2. Use all of the non-SPLs [RFC7274] in the stack. This is better
stack. than using the top label alone.
3. One can do even better by "divining" the type of embedded packet 3. "Divine" the type of embedded packet and use fields from the
and using fields from the guessed header. The ramifications of guessed header. The ramifications of using this load-balancing
using this load-balancing technique are discussed in detail in technique are discussed in detail in Section 2.1.1.1. This way
Section 2.1.1.1. is better than the two ways above.
4. One can do best by using either an Entropy Label [RFC6790] or a 4. Use either an Entropy Label [RFC6790] or a Flow-Aware Transport
Flow-Aware Transport (FAT) Pseudowire Label [RFC6391] (see (FAT) Pseudowire Label [RFC6391] (see Section 2.1.1.1). This is
Section 2.1.1.1). the best way.
Load balancing based on just the top label means that all packets Load balancing based on just the top label means that all packets
with that top label will go the same way, which is far from ideal. with that top label will go the same way, which is far from ideal.
Load balancing based on the entire label stack (not including SPLs) Load balancing based on the entire label stack (not including SPLs)
is better, but it may still be uneven. However, if the embedded is better, but it may still be uneven. However, if the embedded
packet is an IP packet, then the combination of (<source IP address>, packet is an IP packet, then the combination of (<source IP address>,
<dest IP address>, <transport protocol>, <source port>, and <dest <dest IP address>, <transport protocol>, <source port>, and <dest
port>) from the IP header of the embedded packet forms an excellent port>) from the IP header of the embedded packet forms an excellent
basis for load balancing. This is what is typically used for load basis for load balancing. This is what is typically used for load
balancing IP packets. balancing IP packets.
skipping to change at line 452 skipping to change at line 452
[RFC4928]: [RFC4928]:
NEW TEXT: NEW TEXT:
| PSH: Post-Stack Header | PSH: Post-Stack Header
| |
| PFN: Post-stack First Nibble | PFN: Post-stack First Nibble
2.3. Why Create a Registry 2.3. Why Create a Registry
Support for MPLS Network Actions (MNAs) is described in [RFC9789] and The framework for MPLS Network Actions (MNAs) is described in
is an enhancement to the MPLS architecture. The use of Post-Stack [RFC9789] and is an enhancement to the MPLS architecture. The use of
Data (PSD) to encode the MNA indicators and ancillary data (described Post-Stack Data (PSD) to encode the MNA indicators and ancillary data
in Section 3.6 of [RFC9789]) might place data in the PFN, which could (described in Section 3.6 of [RFC9789]) might place data in the PFN,
conflict with other uses of that nibble. This issue is described in which could conflict with other uses of that nibble. This issue is
Section 3.6.1 of [RFC9789] and is further illustrated by the PFN described in Section 3.6.1 of [RFC9789] and is further illustrated by
value of 0x0, which has two different formats depending on whether the PFN value of 0x0, which has two different formats depending on
the PSH is a pseudowire control word or a DetNet control word; whether the PSH is a pseudowire control word or a DetNet control
disambiguation requires the context of the service label. word; disambiguation requires the context of the service label.
With a registry, PSHs become easier to identify and parse. In With a registry, PSHs become easier to identify and parse. In
addition, they do not need a means outside the data plane to addition, they do not need a means outside the data plane to
interpret them correctly, and their semantics and usage are interpret them correctly, and their semantics and usage are
documented and referenced in the registry. documented and referenced in the registry.
2.4. IP Version Numbers Versus Post-Stack First Nibble Values 2.4. IP Version Numbers Versus Post-Stack First Nibble Values
The use of the PFN stemmed from the desire to heuristically identify The use of the PFN stemmed from the desire to heuristically identify
IP packets for load-balancing purposes. It was then discovered that IP packets for load-balancing purposes. It was then discovered that
non-IP packets, misidentified as IP when the heuristic failed, were non-IP packets, misidentified as IP when the heuristic failed, were
being badly load balanced, leading to [RFC4928]. This situation may being badly load balanced, leading to the scenario described in
confuse some as to the relationship between the "Post-Stack First [RFC4928]. This situation may confuse some as to the relationship
Nibble" registry and the "IP Version Numbers" registry. These between the "Post-Stack First Nibble" registry and the "IP Version
registries are quite different: Numbers" registry. These registries are quite different:
1. The explicit purpose of the "IP Version Numbers" registry is to 1. The explicit purpose of the "IP Version Numbers" registry is to
track IP version numbers in an IP header. track IP version numbers in an IP header.
2. The purpose of the "Post-Stack First Nibble" registry is to track 2. The purpose of the "Post-Stack First Nibble" registry is to track
PSH types. PSH types.
The only intersection points between the two registries are the The only intersection points between the two registries are the
values 0x4 and 0x6 (for backward compatibility). values 0x4 and 0x6 (for backward compatibility).
2.5. Next Step to More Deterministic Load Balancing in MPLS Networks 2.5. Next Step to More Deterministic Load Balancing in MPLS Networks
Network evolution is impossible to control, but it develops over a Network evolution is impossible to control, but it develops over a
period of time determined by various factors. period of time determined by various factors.
This document discourages further proliferation of the This document discourages further proliferation of the
implementations that could lead to undesired effects on data flows. implementations that could lead to undesired effects on data flows.
In doing so, it limits the scope of future protocol developments and In doing so, it limits the scope of future protocol developments and
thus helps to ensure that future network evolution will be smoother. thus helps to ensure that future network evolution will be smoother.
It would assist with the progress toward a simpler, more coherent Obsoleting the use of a PSH for non-IP payloads encapsulated in MPLS
system of MPLS data encapsulation if the use a PSH for non-IP would assist with the progress toward a simpler, more coherent system
payloads encapsulated in MPLS was obsoleted. However, before that of MPLS data encapsulation. However, before that can be done, it is
can be done, it is important to collect sufficient evidence that important to collect sufficient evidence that there are no marketed
there are no marketed or deployed implementations using the heuristic or deployed implementations using the heuristic practice to load-
practice to load-balancing MPLS data flows. balancing MPLS data flows.
Therefore, the next steps toward more deterministic load balancing in Therefore, the next steps toward more deterministic load balancing in
MPLS networks are to gradually deprecate non-PSH MPLS encapsulations MPLS networks are to gradually deprecate non-PSH MPLS encapsulations
of non-IP data, to cease using heuristic load balancing, and to of non-IP data, to cease using heuristic load balancing, and to
survey the available and deployed implementations to determine when survey the available and deployed implementations to determine when
obsoletion may be achieved. obsoletion may be achieved.
3. IANA Considerations 3. IANA Considerations
Per this document, IANA has created a registry group called "Post- Per this document, IANA has created a registry group called "Post-
 End of changes. 23 change blocks. 
64 lines changed or deleted 64 lines changed or added

This html diff was produced by rfcdiff 1.48.