draft-ietf-mpls-entropy-lsp-ping-04.txt | draft-ietf-mpls-entropy-lsp-ping-05.txt | |||
---|---|---|---|---|
MPLS Working Group N. Akiya | MPLS Working Group N. Akiya | |||
Internet-Draft Big Switch Networks | Internet-Draft Big Switch Networks | |||
Updates: 4379, 6424, 6790 (if approved) G. Swallow | Updates: 6790 (if approved) G. Swallow | |||
Intended status: Standards Track C. Pignataro | Intended status: Standards Track C. Pignataro | |||
Expires: February 12, 2017 Cisco | Expires: March 9, 2017 Cisco | |||
A. Malis | A. Malis | |||
Huawei Technologies | Huawei Technologies | |||
S. Aldrin | S. Aldrin | |||
August 11, 2016 | September 5, 2016 | |||
Label Switched Path (LSP) and Pseudowire (PW) Ping/Trace over | Label Switched Path (LSP) and Pseudowire (PW) Ping/Trace over | |||
MPLS Network using Entropy Labels (EL) | MPLS Network using Entropy Labels (EL) | |||
draft-ietf-mpls-entropy-lsp-ping-04 | draft-ietf-mpls-entropy-lsp-ping-05 | |||
Abstract | Abstract | |||
Multiprotocol Label Switching (MPLS) Label Switched Path (LSP) Ping | Multiprotocol Label Switching (MPLS) Label Switched Path (LSP) Ping | |||
and Traceroute are methods used to test Equal-Cost Multipath (ECMP) | and Traceroute are methods used to test Equal-Cost Multipath (ECMP) | |||
paths. Ping is known as a connectivity verification method and | paths. Ping is known as a connectivity verification method and | |||
Traceroute as a fault isolation method, as described in RFC 4379. | Traceroute as a fault isolation method, as described in RFC 4379. | |||
When an LSP is signaled using the Entropy Label (EL) described in RFC | When an LSP is signaled using the Entropy Label (EL) described in RFC | |||
6790, the ability for LSP Ping and Traceroute operations to discover | 6790, the ability for LSP Ping and Traceroute operations to discover | |||
and exercise ECMP paths is lost for scenarios where LSRs apply | and exercise ECMP paths is lost for scenarios where Label Switching | |||
different load balancing techniques. One such scenario is when some | Routers (LSRs) apply different load balancing techniques. One such | |||
LSRs apply EL-based load balancing while other LSRs apply non-EL | scenario is when some LSRs apply EL-based load balancing while other | |||
based load balancing (e.g., IP). Another scenario is when an EL- | LSRs apply non-EL-based load balancing (e.g., IP). Another scenario | |||
based LSP is stitched with another LSP which can be EL-based or non- | is when an EL-based LSP is stitched with another LSP which can be EL- | |||
EL based. | based or non-EL-based. | |||
This document extends the MPLS LSP Ping and Traceroute multipath | This document extends the MPLS LSP Ping and Traceroute multipath | |||
mechanisms in RFC 6424 to allow the ability of exercising LSPs which | mechanisms in RFC 6424 to allow the ability of exercising LSPs which | |||
make use of the EL. This document updates RFC 4379, RFC 6424, and | make use of the EL. This document updates RFC 6790. | |||
RFC 6790. | ||||
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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
skipping to change at page 2, line 15 ¶ | skipping to change at page 2, line 12 ¶ | |||
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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 February 12, 2017. | This Internet-Draft will expire on March 9, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | |||
skipping to change at page 2, line 45 ¶ | skipping to change at page 2, line 42 ¶ | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Background . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Background . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Multipath Type 9 . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Multipath Type 9 . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4. Pseudowire Tracing . . . . . . . . . . . . . . . . . . . . . 7 | 4. Pseudowire Tracing . . . . . . . . . . . . . . . . . . . . . 7 | |||
5. Entropy Label FEC . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Entropy Label FEC . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6. DS Flags: L and E . . . . . . . . . . . . . . . . . . . . . . 9 | 6. DS Flags: L and E . . . . . . . . . . . . . . . . . . . . . . 9 | |||
7. New Multipath Information Type: TBD4 . . . . . . . . . . . . 10 | 7. New Multipath Information Type: TBD4 . . . . . . . . . . . . 10 | |||
8. Initiating LSR Procedures . . . . . . . . . . . . . . . . . . 11 | 8. Initiating LSR Procedures . . . . . . . . . . . . . . . . . . 11 | |||
9. Responder LSR Procedures . . . . . . . . . . . . . . . . . . 13 | 9. Responder LSR Procedures . . . . . . . . . . . . . . . . . . 13 | |||
9.1. IP Based Load Balancer & Not Pushing ELI/EL . . . . . . . 14 | 9.1. IP-based Load Balancer & Not Pushing ELI/EL . . . . . . . 14 | |||
9.2. IP Based Load Balancer & Pushes ELI/EL . . . . . . . . . 14 | 9.2. IP Based Load Balancer & Pushes ELI/EL . . . . . . . . . 14 | |||
9.3. Label Based Load Balancer & Not Pushing ELI/EL . . . . . 15 | 9.3. Label-based Load Balancer & Not Pushing ELI/EL . . . . . 15 | |||
9.4. Label Based Load Balancer & Pushes ELI/EL . . . . . . . . 16 | 9.4. Label-based Load Balancer & Pushes ELI/EL . . . . . . . . 16 | |||
9.5. Flow-Aware MS-PW Stitching LSR . . . . . . . . . . . . . 17 | 9.5. Flow-Aware MS-PW Stitching LSR . . . . . . . . . . . . . 17 | |||
10. Supported and Unsupported Cases . . . . . . . . . . . . . . . 17 | 10. Supported and Unsupported Cases . . . . . . . . . . . . . . . 17 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
12.1. Entropy Label FEC . . . . . . . . . . . . . . . . . . . 19 | 12.1. Entropy Label FEC . . . . . . . . . . . . . . . . . . . 19 | |||
12.2. DS Flags . . . . . . . . . . . . . . . . . . . . . . . . 19 | 12.2. DS Flags . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
12.3. Multipath Type . . . . . . . . . . . . . . . . . . . . . 20 | 12.3. Multipath Type . . . . . . . . . . . . . . . . . . . . . 20 | |||
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | |||
14. Contributing Authors . . . . . . . . . . . . . . . . . . . . 20 | 14. Contributing Authors . . . . . . . . . . . . . . . . . . . . 20 | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
skipping to change at page 3, line 24 ¶ | skipping to change at page 3, line 22 ¶ | |||
1. Introduction | 1. Introduction | |||
1.1. Terminology | 1.1. Terminology | |||
The following acronyms and terms are used in this document: | The following acronyms and terms are used in this document: | |||
o MPLS - Multiprotocol Label Switching. | o MPLS - Multiprotocol Label Switching. | |||
o LSP - Label Switched Path. | o LSP - Label Switched Path. | |||
o Stitched LSP - Stitched Label Switched Paths combine several LSPs | ||||
such that a single end-to-end (e2e) LSP is realized. [RFC6424] | ||||
describes LSP Ping for Stitched LSPs. | ||||
o LSR - Label Switching Router. | o LSR - Label Switching Router. | |||
o FEC - Forwarding Equivalent Class. | o FEC - Forwarding Equivalence Class. | |||
o ECMP - Equal-Cost Multipath. | o ECMP - Equal-Cost Multipath. | |||
o EL - Entropy Label. | o EL - Entropy Label. | |||
o ELI - Entropy Label Indicator. | o ELI - Entropy Label Indicator. | |||
o GAL - Generic Associated Channel Label. | o GAL - Generic Associated Channel Label. | |||
o MS-PW - Multi-Segment Pseudowire. | o MS-PW - Multi-Segment Pseudowire. | |||
skipping to change at page 4, line 23 ¶ | skipping to change at page 4, line 26 ¶ | |||
MPLS implementations employ a wide variety of load balancing | MPLS implementations employ a wide variety of load balancing | |||
techniques in terms of fields used for hash "keys". The mechanisms | techniques in terms of fields used for hash "keys". The mechanisms | |||
in [RFC4379] and updated by [RFC6424] are designed to provide | in [RFC4379] and updated by [RFC6424] are designed to provide | |||
multipath support for a subset of techniques. The intent of this | multipath support for a subset of techniques. The intent of this | |||
document is to provide multipath support for the supported techniques | document is to provide multipath support for the supported techniques | |||
which are compromised by the use of ELs [RFC6790]. Section 10 | which are compromised by the use of ELs [RFC6790]. Section 10 | |||
describes supported and unsupported cases, and it may be useful for | describes supported and unsupported cases, and it may be useful for | |||
the reader to first review this section. | the reader to first review this section. | |||
The Downstream Detailed Mapping (DDMAP) TLV [RFC6424] provides | The Downstream Detailed Mapping (DDMAP) TLV [RFC6424] provides | |||
multipath information which can be used by an LSP Ping initiator to | Multipath Information which can be used by an LSP Ping initiator to | |||
trace and validate ECMP paths between an ingress and egress. The | trace and validate ECMP paths between an ingress and egress. The | |||
multipath information encodings defined by [RFC6424] are sufficient | Multipath Information encodings defined by [RFC6424] are sufficient | |||
when all the LSRs along the path(s), between ingress and egress, | when all the LSRs along the path(s), between ingress and egress, | |||
consider the same set of "keys" as input for load balancing | consider the same set of "keys" as input for load balancing | |||
algorithms, e.g. either all IP-based or all label-based. | algorithms, e.g., either all IP-based or all label-based. | |||
With the introduction of [RFC6790], some LSRs may perform load | With the introduction of [RFC6790], some LSRs may perform load | |||
balancing based on labels while others may be IP-based. This results | balancing based on labels while others may be IP-based. This results | |||
in an LSP Ping initiator to not be able to trace and validate all the | in an LSP Ping initiator that is unable to trace and validate all the | |||
ECMP paths in the following scenarios: | ECMP paths in the following scenarios: | |||
o One or more transit LSRs along an LSP with ELI/EL in label stack | o One or more transit LSRs along an LSP with ELI/EL in the label | |||
do not perform ECMP load balancing based on EL (hashes based on | stack do not perform ECMP load balancing based on EL (hashes based | |||
"keys" including the IP destination address). This scenario is | on "keys" including the IP destination address). This scenario is | |||
not only possible but quite common due to transit LSRs not | not only possible but quite common due to transit LSRs not | |||
implementing [RFC6790] or transit LSRs implementing [RFC6790], but | implementing [RFC6790] or transit LSRs implementing [RFC6790], but | |||
not implementing the suggested transit LSR behavior in Section 4.3 | not implementing the suggested transit LSR behavior in Section 4.3 | |||
of [RFC6790]. | of [RFC6790]. | |||
o Two or more LSPs stitched together with at least one of these LSPs | o Two or more LSPs stitched together with at least one of these LSPs | |||
pushing ELI/EL into the label stack. | pushing ELI/EL into the label stack. | |||
These scenarios can be quite common because deployments of [RFC6790] | These scenarios can be quite common because deployments of [RFC6790] | |||
typically have a mixture of nodes that support ELI/EL and nodes that | typically have a mixture of nodes that support ELI/EL and nodes that | |||
do not. There will also typically be a mixture of areas that support | do not. There will also typically be a mixture of areas that support | |||
ELI/EL and areas that do not. | ELI/EL and areas that do not. | |||
As pointed out in [RFC6790], the procedures of [RFC4379] (and | As pointed out in [RFC6790], the procedures of [RFC4379] (and | |||
consequently of [RFC6424]) with respect to multipath information type | consequently of [RFC6424]) with respect to Multipath Information Type | |||
{9} are incomplete. However, [RFC6790] does not actually update | {9} are incomplete. However, [RFC6790] does not actually update | |||
[RFC4379]. Further, the specific EL location is not clearly defined, | [RFC4379]. Further, the specific EL location is not clearly defined, | |||
particularly in the case of Flow Aware Pseudowires [RFC6391]. This | particularly in the case of Flow Aware Pseudowires [RFC6391]. This | |||
document defines a new FEC Stack sub-TLV for the entropy label. | document defines a new FEC Stack sub-TLV for the entropy label. | |||
Section 3 of this document updates the procedures for multipath | Section 3 of this document updates the procedures for Multipath | |||
information type {9} described in [RFC4379] and applicable to | Information Type {9} described in [RFC4379] and applicable to | |||
[RFC6424]. The rest of this document describes extensions required | [RFC6424]. The rest of this document describes extensions required | |||
to restore ECMP discovery and tracing capabilities for the scenarios | to restore ECMP discovery and tracing capabilities for the scenarios | |||
described. | described. | |||
[RFC4379], [RFC6424], and this document will support IP-based load | [RFC4379], [RFC6424], and this document will support IP-based load | |||
balancers and label-based load balancers which limit their hash to | balancers and label-based load balancers which limit their hash to | |||
the first (top-most) or only entropy label in the label stack. Other | the first (top-most) or only entropy label in the label stack. Other | |||
use cases (refer to Section 10) are out of scope. | use cases (refer to Section 10) are out of scope. | |||
2. Overview | 2. Overview | |||
[RFC4379] describes LSP traceroute as an operation where the | [RFC4379] describes LSP traceroute as an operation where the | |||
initiating LSR sends a series of MPLS echo requests towards the same | initiating LSR sends a series of MPLS echo requests towards the same | |||
destination. The first packet in the series has the TTL set to 1. | destination. The first packet in the series has the TTL set to 1. | |||
When the echo reply is received from the LSR one hop away, the second | When the echo reply is received from the LSR one hop away, the second | |||
echo request in the series is sent with the TTL set to 2. For each | echo request in the series is sent with the TTL set to 2. For each | |||
additional echo request the TLL is incremented by one until a | additional echo request the TLL is incremented by one until a | |||
response is received from the intended destination. The initiating | response is received from the intended destination. The initiating | |||
LSR discovers and exercises ECMP by obtaining multipath information | LSR discovers and exercises ECMP by obtaining Multipath Information | |||
from each transit LSR and using a specific destination IP address or | from each transit LSR and using a specific destination IP address or | |||
specific entropy label. | specific entropy label. | |||
From here on, the notation {x, y, z} refers to multipath information | From here on, the notation {x, y, z} refers to Multipath Information | |||
types x, y or z. Multipath information types are defined in | Types x, y, or z. Multipath Information Types are defined in | |||
Section 3.3 of [RFC4379]. | Section 3.3 of [RFC4379]. | |||
The LSR initiating LSP Ping sends an MPLS echo request with multipath | The LSR initiating LSP Ping sends an MPLS echo request with Multipath | |||
information. This multipath information is described in the echo | Information. This Multipath Information is described in the echo | |||
request's DDMAP TLV, and may contain a set of IP addresses or a set | request's DDMAP TLV, and may contain a set of IP addresses or a set | |||
of labels. Multipath information types {2, 4, 8} carry a set of IP | of labels. Multipath Information Types {2, 4, 8} carry a set of IP | |||
addresses, and multipath information type {9} carries a set of | addresses, and Multipath Information Type {9} carries a set of | |||
labels. The responder LSR (the receiver of the MPLS echo request) | labels. The responder LSR (the receiver of the MPLS echo request) | |||
will determine the subset of initiator-specified multipath | will determine the subset of initiator-specified Multipath | |||
information which load balances to each downstream (outgoing | Information which load balances to each downstream (outgoing) | |||
interface). The responder LSR sends an MPLS echo reply with | interface. The responder LSR sends an MPLS echo reply with resulting | |||
resulting multipath information per downstream (outgoing interface) | Multipath Information per downstream (outgoing interface) back to the | |||
back to the initiating LSR. The initiating LSR is then able to use a | initiating LSR. The initiating LSR is then able to use a specific IP | |||
specific IP destination address or a specific label to exercise a | destination address or a specific label to exercise a specific ECMP | |||
specific ECMP path on the responder LSR. | path on the responder LSR. | |||
Current behavior is problematic in following scenarios: | The current behavior is problematic in the following scenarios: | |||
o The initiating LSR sends IP multipath information, but the | o The initiating LSR sends IP Multipath Information, but the | |||
responder LSR load balances on labels. | responder LSR load balances on labels. | |||
o The initiating LSR sends label multipath information, but the | o The initiating LSR sends Label Multipath Information, but the | |||
responder LSR load balances on IP addresses. | responder LSR load balances on IP addresses. | |||
o The initiating LSR sends existing multipath information to an LSR | o The initiating LSR sends existing Multipath Information to an LSR | |||
which pushes ELI/EL in the label stack, but the initiating LSR can | which pushes ELI/EL in the label stack, but the initiating LSR can | |||
only continue to discover and exercise specific paths of the ECMP, | only continue to discover and exercise specific paths of the ECMP, | |||
if the LSR which pushes ELI/EL responds with both IP addresses and | if the LSR which pushes ELI/EL responds with both IP addresses and | |||
the associated EL corresponding to each IP address. This is | the associated EL corresponding to each IP address. This is | |||
because: | because: | |||
* An ELI/EL pushing LSR that is a stitching point will load | * An ELI/EL-pushing LSR that is a stitching point will load | |||
balance based on the IP address. | balance based on the IP address. | |||
* Downstream LSR(s) of an ELI/EL pushing LSR may load balance | * Downstream LSR(s) of an ELI/EL-pushing LSR may load balance | |||
based on ELs. | based on ELs. | |||
o The initiating LSR sends existing multipath information to an ELI/ | o The initiating LSR sends existing Multipath Information to an ELI/ | |||
EL pushing LSR, but the initiating LSR can only continue to | EL-pushing LSR, but the initiating LSR can only continue to | |||
discover and exercise specific paths of ECMP, if the ELI/EL | discover and exercise specific paths of ECMP, if the ELI/EL- | |||
pushing LSR responds with both labels and associated EL | pushing LSR responds with both labels and the associated EL | |||
corresponding to the label. This is because: | corresponding to the label. This is because: | |||
* An ELI/EL pushing LSR that is a stitching point will load | * An ELI/EL-pushing LSR that is a stitching point will load | |||
balance based on EL from the previous LSP and pushes a new EL. | balance based on the EL from the previous LSP and pushes a new | |||
EL. | ||||
* Downstream LSR(s) of ELI/EL pushing LSR may load balance based | * Downstream LSR(s) of ELI/EL-pushing LSR may load balance based | |||
on new ELs. | on new ELs. | |||
The above scenarios demonstrate the existing multipath information is | The above scenarios demonstrate the existing Multipath Information is | |||
insufficient when LSP traceroute is used on an LSP with entropy | insufficient when LSP traceroute is used on an LSP with entropy | |||
labels [RFC6790]. This document defines a new multipath information | labels [RFC6790]. This document defines a new Multipath Information | |||
type to be used in the DDMAP of MPLS echo request/reply packets for | Type to be used in the DDMAP of MPLS echo request/reply packets for | |||
[RFC6790] LSPs. | [RFC6790] LSPs. | |||
The responder LSR can reply with empty multipath information if no IP | The responder LSR can reply with empty Multipath Information if no IP | |||
address is set or label set is received with the multipath | address is set or label set is received with the Multipath | |||
information. An empty return is also possible if an initiating LSR | Information. An empty return is also possible if an initiating LSR | |||
sends multipath information of one type, IP address or label, but the | sends Multipath Information of one type, IP Address or Label, but the | |||
responder LSR load balances on the other type. To disambiguate | responder LSR load balances on the other type. To disambiguate | |||
between the two results, this document introduces new flags in the | between the two results, this document introduces new flags in the | |||
DDMAP TLV to allow the responder LSR to describe the load balancing | DDMAP TLV to allow the responder LSR to describe the load balancing | |||
technique being used. | technique being used. | |||
All LSRs along the LSP need to be able to understand the new flags | To use this enhanced method end-to-end, all LSRs along the LSP need | |||
and the new multipath information type. It is also required that the | to be able to understand the new flags and the new Multipath | |||
initiating LSR can select both the IP destination address and label | Information Type. Mechanisms to verify this condition are outside of | |||
to use when transmitting MPLS echo request packets. Two additional | the scope of this document. The rest of the requirements are | |||
DS Flags are defined for the DDMAP TLV in Section 6. These two flags | detailed in the initiating LSR and responder LSR procedures. Two | |||
are used by the responder LSR to describe its load balance behavior | additional DS Flags are defined for the DDMAP TLV in Section 6. | |||
on a received MPLS echo request. | These two flags are used by the responder LSR to describe its load | |||
balance behavior on a received MPLS echo request. | ||||
Note that the terms "IP-Based Load Balancer" and "Label-Based Load | Note that the terms "IP-Based Load Balancer" and "Label-Based Load | |||
Balancer" are in context of how a received MPLS echo request is | Balancer" are in context of how a received MPLS echo request is | |||
handled by the responder LSR. | handled by the responder LSR. | |||
3. Multipath Type 9 | 3. Multipath Type 9 | |||
[RFC4379] defined multipath type {9} for tracing of LSPs where label | [RFC4379] defined Multipath Type {9} for tracing of LSPs where label- | |||
based load balancing is used. However, as pointed out in [RFC6790], | based load balancing is used. However, as pointed out in [RFC6790], | |||
the procedures for using this type are incomplete as the specific | the procedures for using this type are incomplete as the specific | |||
location of the label was not defined. It was assumed that the | location of the label was not defined. It was assumed that the | |||
presence of multipath type {9} implied the value of the bottom-of- | presence of Multipath Type {9} implied the value of the bottom-of- | |||
stack label should be varied by the values indicated by multipath to | stack label should be varied by the values indicated by multipath to | |||
determine the respective outgoing interfaces. | determine the respective outgoing interfaces. | |||
Section 5 defines a new FEC-Stack sub-TLV to indicate an entropy | Section 5 defines a new FEC-Stack sub-TLV to indicate an entropy | |||
label. These labels MAY appear anywhere in a label stack. | label. These labels MAY appear anywhere in a label stack. | |||
Multipath type {9} applies to the first label in the label stack that | Multipath Type {9} applies to the first label in the label stack that | |||
corresponds to an EL-FEC. If no such label is found, it applies to | corresponds to an EL-FEC. If no such label is found, it applies to | |||
the label at the bottom of the label stack. | the label at the bottom of the label stack. | |||
4. Pseudowire Tracing | 4. Pseudowire Tracing | |||
This section defines procedures for tracing pseudowires. These | This section defines procedures for tracing pseudowires. These | |||
procedures pertain to the use of multipath information type {9} as | procedures pertain to the use of Multipath Information Type {9} as | |||
well as type {TBD4}. In all cases below, when a control word is in | well as Type {TBD4}. In all cases below, when a control word is in | |||
use, the N-flag in the DDMAP MUST be set. Note that when a control | use, the N-flag in the DDMAP MUST be set. Note that when a control | |||
word is not in use, the returned DDMAPs may not be accurate. | word is not in use, the returned DDMAPs may not be accurate. | |||
In order to trace a non-flow-aware Pseudowire, the initiator includes | In order to trace a non-flow-aware Pseudowire, the initiator includes | |||
an EL-FEC instead of the appropriate PW-FEC at the bottom of the FEC | an EL-FEC instead of the appropriate PW FEC at the bottom of the FEC | |||
stack. Tracing in this way will cause compliant routers to return | stack. Tracing in this way will cause compliant routers to return | |||
the proper outgoing interface. Note that this procedure only traces | the proper outgoing interface. Note that this procedure only traces | |||
to the end of the MPLS LSP that is under test and will not verify the | to the end of the MPLS LSP that is under test and will not verify the | |||
PW FEC. To actually verify the PW FEC or in the case of a MS-PW, to | PW FEC. To actually verify the PW FEC or in the case of a MS-PW, to | |||
determine the next pseudowire label value, the initiator MUST repeat | determine the next pseudowire label value, the initiator MUST repeat | |||
that step of the trace (i.e., repeating the TTL value used) but with | that step of the trace (i.e., repeating the TTL value used) but with | |||
the FEC Stack modified to contain the appropriate PW FEC. Note that | the FEC Stack modified to contain the appropriate PW FEC. Note that | |||
these procedures are applicable to scenarios where an initiator is | these procedures are applicable to scenarios where an initiator is | |||
able to vary the bottom label (i.e., Pseudowire label). Possible | able to vary the bottom label (i.e., Pseudowire label). Possible | |||
scenarios are tracing multiple non-flow-aware Pseudowires on the same | scenarios are tracing multiple non-flow-aware Pseudowires on the same | |||
endpoints or tracing a non-flow-aware Pseudowire provisioned with | endpoints or tracing a non-flow-aware Pseudowire provisioned with | |||
multiple Pseudowire labels. | multiple Pseudowire labels. | |||
In order to trace a flow-aware Pseudowire [RFC6391], the initiator | In order to trace a flow-aware Pseudowire [RFC6391], the initiator | |||
includes an EL FEC at the bottom of the FEC Stack and pushes the | includes an EL FEC at the bottom of the FEC Stack and pushes the | |||
appropriate PW FEC onto the FEC Stack. | appropriate PW FEC onto the FEC Stack. | |||
In order to trace through non-compliant routers, the initiator forms | In order to trace through non-compliant routers, the initiator forms | |||
an MPLS echo request message and includes a DDMAP with multipath type | an MPLS echo request message and includes a DDMAP with Multipath Type | |||
{9}. For a non-flow-aware Pseudowire it includes the appropriate PW | {9}. For a non-flow-aware Pseudowire it includes the appropriate PW | |||
FEC in the FEC Stack. For a flow-aware Pseudowire, the initiator | FEC in the FEC Stack. For a flow-aware Pseudowire, the initiator | |||
includes a Nil FEC at the bottom of the FEC Stack and pushes the | includes a Nil FEC at the bottom of the FEC Stack and pushes the | |||
appropriate PW FEC onto the FEC Stack. | appropriate PW FEC onto the FEC Stack. | |||
5. Entropy Label FEC | 5. Entropy Label FEC | |||
The entropy label indicator (ELI) is a reserved label that has no | The entropy label indicator (ELI) is a reserved label that has no | |||
explicit FEC associated, and has label value 7 assigned from the | explicit FEC associated, and has label value 7 assigned from the | |||
reserved range. Use the Nil FEC as the Target FEC Stack sub-TLV to | reserved range. Use the Nil FEC as the Target FEC Stack sub-TLV to | |||
skipping to change at page 9, line 26 ¶ | skipping to change at page 9, line 26 ¶ | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| MBZ |L|E|I|N| | | MBZ |L|E|I|N| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
RFC-Editor-Note: Please update the above figure to place the flag E | RFC-Editor-Note: Please update the above figure to place the flag E | |||
in the bit number TBD2 and the flag L in the bit number TBD3. | in the bit number TBD2 and the flag L in the bit number TBD3. | |||
Flag Name and Meaning | Flag Name and Meaning | |||
---- ---------------- | ---- ---------------- | |||
L Label-based load balance indicator | L Label-based load balance indicator | |||
This flag MUST be set to zero in the echo request. An LSR | This flag MUST be cleared in the echo request. An LSR | |||
which performs load balancing on a label MUST set this | which performs load balancing on a label MUST set this | |||
flag in the echo reply. An LSR which performs load | flag in the echo reply. An LSR which performs load | |||
balancing on IP MUST NOT set this flag in the echo | balancing on IP MUST NOT set this flag in the echo | |||
reply. | reply. | |||
E ELI/EL push indicator | E ELI/EL push indicator | |||
This flag MUST be set to zero in the echo request. An LSR | This flag MUST be cleared in the echo request. An LSR | |||
which pushes ELI/EL MUST set this flag in the echo | which pushes ELI/EL MUST set this flag in the echo | |||
reply. An LSR which does not push ELI/EL MUST NOT set | reply. An LSR which does not push ELI/EL MUST NOT set | |||
this flag in the echo reply. | this flag in the echo reply. | |||
The two flags result in four load balancing techniques which the echo | The two flags result in four load balancing techniques which the echo | |||
reply generating LSR can indicate: | reply generating LSR can indicate: | |||
o {L=0, E=0} LSR load balances based on IP and does not push ELI/EL. | o {L=0, E=0} LSR load balances based on IP and does not push ELI/EL. | |||
o {L=0, E=1} LSR load balances based on IP and pushes ELI/EL. | o {L=0, E=1} LSR load balances based on IP and pushes ELI/EL. | |||
o {L=1, E=0} LSR load balances based on labels and does not push | o {L=1, E=0} LSR load balances based on labels and does not push | |||
ELI/EL. | ELI/EL. | |||
o {L=1, E=1} LSR load balances based on labels and pushes ELI/EL. | o {L=1, E=1} LSR load balances based on labels and pushes ELI/EL. | |||
7. New Multipath Information Type: TBD4 | 7. New Multipath Information Type: TBD4 | |||
One new multipath information type is added to be used in DDMAP TLV. | One new Multipath Information Type is added to be used in DDMAP TLV. | |||
This new multipath type has the value of TBD4. | This new Multipath Type has the value of TBD4. | |||
Key Type Multipath Information | Key Type Multipath Information | |||
--- ---------------- --------------------- | --- ---------------- --------------------- | |||
TBD4 IP and label set IP addresses and label prefixes | TBD4 IP and Label set IP addresses and label prefixes | |||
Multipath type TBD4 is comprised of three sections. The first | Multipath Type TBD4 is comprised of three sections. The first | |||
section describes the IP address set. The second section describes | section describes the IP address set. The second section describes | |||
the label set. The third section describes another label set which | the label set. The third section describes another label set which | |||
associates to either the IP address set or the label set specified in | associates to either the IP address set or the label set specified in | |||
the other sections. | the other sections. | |||
Multipath information type TBD4 has following format: | Multipath Information Type TBD4 has following format: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|IPMultipathType| IP Multipath Length | Reserved(MBZ) | | |IPMultipathType| IP Multipath Length | Reserved(MBZ) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ ~ | ~ ~ | |||
| (IP Multipath Information) | | | (IP Multipath Information) | | |||
~ ~ | ~ ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 10, line 49 ¶ | skipping to change at page 10, line 49 ¶ | |||
~ ~ | ~ ~ | |||
| (Associated Label Multipath Information) | | | (Associated Label Multipath Information) | | |||
~ ~ | ~ ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: Multipath Information Type TBD4 | Figure 2: Multipath Information Type TBD4 | |||
o IPMultipathType | o IPMultipathType | |||
* 0 when "IP Multipath Information" is omitted. Otherwise, one | * 0 when "IP Multipath Information" is omitted. Otherwise, one | |||
of the IP multipath information values: {2, 4, 8}. | of the IP Multipath Information values: {2, 4, 8}. | |||
o IP Multipath Information | o IP Multipath Information | |||
* This section is omitted when "IPMultipathType" is 0. | * This section is omitted when "IPMultipathType" is 0. | |||
Otherwise, this section reuses IP multipath information from | Otherwise, this section reuses IP Multipath Information from | |||
[RFC4379]. Specifically, multipath information for values {2, | [RFC4379]. Specifically, Multipath Information for values {2, | |||
4, 8} can be used. | 4, 8} can be used. | |||
o LbMultipathType | o LbMultipathType | |||
* 0 when "Label Multipath Information" is omitted. Otherwise, | * 0 when "Label Multipath Information" is omitted. Otherwise, | |||
label multipath information value {9}. | Label Multipath Information value {9}. | |||
o Label Multipath Information | o Label Multipath Information | |||
* This section is omitted when "LbMultipathType" is 0. | * This section is omitted when "LbMultipathType" is 0. | |||
Otherwise, this section reuses label multipath information from | Otherwise, this section reuses Label Multipath Information from | |||
[RFC4379]. Specifically, multipath information for value {9} | [RFC4379]. Specifically, Multipath Information for value {9} | |||
can be used. | can be used. | |||
o Associated Label Multipath Information | o Associated Label Multipath Information | |||
* "Assoc Label Multipath Length" is a 16 bit field of multipath | * "Assoc Label Multipath Length" is a 16-bit field of Multipath | |||
information which indicates the length in octets of the | Information which indicates the length in octets of the | |||
associated label multipath information. | Associated Label Multipath Information. | |||
* "Associated Label Multipath Information" is a list of labels | * "Associated Label Multipath Information" is a list of labels | |||
with each label described in 24 bits. This section MUST be | with each label described in 24 bits. This section MUST be | |||
omitted in an MPLS echo request message. A midpoint which | omitted in an MPLS echo request message. A midpoint which | |||
pushes ELI/EL labels SHOULD include "Assoc Label Multipath | pushes ELI/EL labels SHOULD include "Assoc Label Multipath | |||
Information" in its MPLS echo reply message, along with either | Information" in its MPLS echo reply message, along with either | |||
"IP Multipath Information" or "Label Multipath Information". | "IP Multipath Information" or "Label Multipath Information". | |||
Each specified associated label described in this section maps | Each specified associated label described in this section maps | |||
to a specific IP address OR label described in the "IP | to a specific IP address OR label described in the "IP | |||
Multipath Information" section or "Label Multipath Information" | Multipath Information" section or "Label Multipath Information" | |||
section. For example, if three IP addresses are specified in | section. For example, if three IP addresses are specified in | |||
the "IP Multipath Information" section, then there MUST be | the "IP Multipath Information" section, then there MUST be | |||
three labels described in this section. The first label maps | three labels described in this section. The first label maps | |||
to the first IP address specified, the second label maps to the | to the first IP address specified, the second label maps to the | |||
second IP address specified, and the third label maps to the | second IP address specified, and the third label maps to the | |||
third IP address specified. | third IP address specified. | |||
When a section is omitted, the length for that section MUST BE set to | When a section is omitted, the length for that section MUST be set to | |||
zero. | zero. | |||
8. Initiating LSR Procedures | 8. Initiating LSR Procedures | |||
The following procedure is described in terms of an EL_LSP boolean | The following procedure is described in terms of an EL_LSP boolean | |||
maintained by the initiating LSR. This value controls the multipath | maintained by the initiating LSR. This value controls the Multipath | |||
information type to be used in the transmitted echo request packets. | Information Type to be used in the transmitted echo request packets. | |||
When the initiating LSR is transmitting an echo request packet with | When the initiating LSR is transmitting an echo request packet with | |||
DDMAP with a non-zero multipath information type, then the EL_LSP | DDMAP with a non-zero Multipath Information Type, then the EL_LSP | |||
boolean MUST be consulted to determine the multipath information type | boolean MUST be consulted to determine the Multipath Information Type | |||
to use. | to use. | |||
In addition to procedures described in [RFC4379], as updated by | In addition to procedures described in [RFC4379], as updated by | |||
Section 3 and [RFC6424], the initiating LSR MUST operate with the | Section 3 and [RFC6424], the initiating LSR MUST operate with the | |||
following procedures: | following procedures: | |||
o When the initiating LSR pushes ELI/EL, initialize EL_LSP=True. | o When the initiating LSR pushes ELI/EL, initialize EL_LSP=True. | |||
Else set EL_LSP=False. | Else set EL_LSP=False. | |||
o When the initiating LSR is transmitting a non-zero multipath | o When the initiating LSR is transmitting a non-zero Multipath | |||
information type: | Information Type: | |||
* If (EL_LSP), the initiating LSR MUST use multipath information | * If (EL_LSP), the initiating LSR MUST use Multipath Information | |||
type {TBD4} unless the responder LSR cannot handle type {TBD4}. | Type {TBD4} unless the responder LSR cannot handle Type {TBD4}. | |||
When the initiating LSR is transmitting multipath information | When the initiating LSR is transmitting Multipath Information | |||
type {TBD4}, both "IP Multipath Information" and "Label | Type {TBD4}, both "IP Multipath Information" and "Label | |||
Multipath Information" MUST be included, and "IP Associated | Multipath Information" MUST be included, and "Associated Label | |||
Label Multipath Information" MUST be omitted (NULL). | Multipath Information" MUST be omitted (NULL). | |||
* Else the initiating LSR MAY use multipath information type {2, | * Else the initiating LSR MAY use Multipath Information Type {2, | |||
4, 8, 9, TBD4}. When the initiating LSR is transmitting | 4, 8, 9, TBD4}. When the initiating LSR is transmitting | |||
multipath information type {TBD4} in this case, "IP Multipath | Multipath Information Type {TBD4} in this case, "IP Multipath | |||
Information" MUST be included, and "Label Multipath | Information" MUST be included, and "Label Multipath | |||
Information" and "IP Associated Label Multipath Information" | Information" and "Associated Label Multipath Information" MUST | |||
MUST be omitted (NULL). | be omitted (NULL). | |||
o When the initiating LSR receives echo reply with {L=0, E=1} in DS | o When the initiating LSR receives an echo reply with {L=0, E=1} in | |||
flags with valid contents, set EL_LSP=True. | the DS flags with valid contents, set EL_LSP=True. | |||
In the following conditions, the initiating LSR may have lost the | In the following conditions, the initiating LSR may have lost the | |||
ability to exercise specific ECMP paths. The initiating LSR MAY | ability to exercise specific ECMP paths. The initiating LSR MAY | |||
continue with "best effort" in the following cases: | continue with "best effort" in the following cases: | |||
o Received echo reply contains empty multipath information. | o Received echo reply contains empty Multipath Information. | |||
o Received echo reply contains {L=0, E=<any>} DS flags, but does not | o Received echo reply contains {L=0, E=<any>} DS flags, but does not | |||
contain IP multipath information. | contain IP Multipath Information. | |||
o Received echo reply contains {L=1, E=<any>} DS flags, but does not | o Received echo reply contains {L=1, E=<any>} DS flags, but does not | |||
contain label multipath information. | contain Label Multipath Information. | |||
o Received echo reply contains {L=<any>, E=1} DS flags, but does not | o Received echo reply contains {L=<any>, E=1} DS flags, but does not | |||
contain associated label multipath information. | contain Associated Label Multipath Information. | |||
o IP multipath information types {2, 4, 8} sent, and received echo | o IP Multipath Information Types {2, 4, 8} sent, and received echo | |||
reply with {L=1, E=0} in DS flags. | reply with {L=1, E=0} in DS flags. | |||
o Multipath information type {TBD4} sent, and received echo reply | o Multipath Information Type {TBD4} sent, and received echo reply | |||
with multipath information type other than {TBD4}. | with Multipath Information Type other than {TBD4}. | |||
9. Responder LSR Procedures | 9. Responder LSR Procedures | |||
Common Procedures: | Common Procedures: | |||
o The responder LSR receiving an MPLS echo request packet MUST first | o The responder LSR receiving an MPLS echo request packet MUST first | |||
determine whether or not the initiating LSR supports this LSP Ping | determine whether or not the initiating LSR supports this LSP Ping | |||
and Traceroute extension for Entropy Labels. If either of the | and Traceroute extension for Entropy Labels. If either of the | |||
following conditions are met, the responder LSR SHOULD determine | following conditions are met, the responder LSR SHOULD determine | |||
that the initiating LSR supports this LSP Ping and Traceroute | that the initiating LSR supports this LSP Ping and Traceroute | |||
extension for entropy labels. | extension for entropy labels. | |||
1. Received MPLS echo request contains the multipath information | 1. Received MPLS echo request contains the Multipath Information | |||
type {TBD4}. | Type {TBD4}. | |||
2. Received MPLS echo request contains a Target FEC Stack TLV | 2. Received MPLS echo request contains a Target FEC Stack TLV | |||
that includes the entropy label FEC. | that includes the entropy label FEC. | |||
If the initiating LSR is determined to not support this LSP Ping | If the initiating LSR is determined not to support this LSP Ping | |||
and Traceroute extension for entropy labels, then the responder | and Traceroute extension for entropy labels, then the responder | |||
LSR MUST NOT follow further procedures described in this section. | LSR MUST NOT follow further procedures described in this section. | |||
Specifically, MPLS echo reply packets: | Specifically, MPLS echo reply packets: | |||
* MUST have following DS Flags cleared (i.e., not set): "ELI/EL | * MUST have the following DS Flags cleared (i.e., not set): "ELI/ | |||
push indicator" and "Label-based load balance indicator". | EL push indicator" and "Label-based load balance indicator". | |||
* MUST NOT use multipath information type {TBD4}. | * MUST NOT use Multipath Information Type {TBD4}. | |||
o The responder LSR receiving an MPLS echo request packet with | o The responder LSR receiving an MPLS echo request packet with | |||
multipath information type {TBD4} MUST validate the following | Multipath Information Type {TBD4} MUST validate the following | |||
contents. Any deviation MUST result in the responder LSR to | contents. Any deviation MUST result in the responder LSR | |||
consider the packet as malformed and return code 1 ("Malformed | considering the packet as malformed and returning code 1 | |||
echo request received") in the MPLS echo reply packet. | ("Malformed echo request received") in the MPLS echo reply packet. | |||
* IP multipath information MUST be included. | * IP Multipath Information MUST be included. | |||
* Label multipath information MAY be included. | * Label Multipath Information MAY be included. | |||
* IP associated label multipath information MUST be omitted | * Associated Label Multipath Information MUST be omitted (NULL). | |||
(NULL). | ||||
The following subsections describe expected responder LSR procedures | The following subsections describe expected responder LSR procedures | |||
when the echo reply is to include DDMAP TLVs, based on the local load | when the echo reply is to include DDMAP TLVs, based on the local load | |||
balance technique being employed. In case the responder LSR performs | balance technique being employed. In case the responder LSR performs | |||
deviating load balance techniques on a per downstream basis, | deviating load balance techniques on a per downstream basis, | |||
appropriate procedures matched to each downstream load balance | appropriate procedures matched to each downstream load balance | |||
technique MUST be followed. | technique MUST be followed. | |||
9.1. IP Based Load Balancer & Not Pushing ELI/EL | 9.1. IP-based Load Balancer & Not Pushing ELI/EL | |||
o The responder MUST set {L=0, E=0} in DS flags. | o The responder MUST set {L=0, E=0} in DS flags. | |||
o If multipath information type {2, 4, 8} is received, the responder | o If Multipath Information Type {2, 4, 8} is received, the responder | |||
MUST comply with [RFC4379] and [RFC6424]. | MUST comply with [RFC4379] and [RFC6424]. | |||
o If multipath information type {9} is received, the responder MUST | o If Multipath Information Type {9} is received, the responder MUST | |||
reply with multipath type {0}. | reply with Multipath Type {0}. | |||
o If multipath information type {TBD4} is received, the following | o If Multipath Information Type {TBD4} is received, the following | |||
procedures are to be used: | procedures are to be used: | |||
* The responder MUST reply with multipath information type | * The responder MUST reply with Multipath Information Type | |||
{TBD4}. | {TBD4}. | |||
* The "Label Multipath Information" and "Associated Label | * The "Label Multipath Information" and "Associated Label | |||
Multipath Information" sections MUST be omitted (NULL). | Multipath Information" sections MUST be omitted (NULL). | |||
* If no matching IP address is found, then the "IPMultipathType" | * If no matching IP address is found, then the "IPMultipathType" | |||
field MUST be set to multipath information type {0} and the "IP | field MUST be set to Multipath Information Type {0} and the "IP | |||
Multipath Information" section MUST also be omitted (NULL). | Multipath Information" section MUST also be omitted (NULL). | |||
* If at least one matching IP address is found, then the | * If at least one matching IP address is found, then the | |||
"IPMultipathType" field MUST be set to appropriate multipath | "IPMultipathType" field MUST be set to appropriate Multipath | |||
information type {2, 4, 8} and the "IP Multipath Information" | Information Type {2, 4, 8} and the "IP Multipath Information" | |||
section MUST be included. | section MUST be included. | |||
9.2. IP Based Load Balancer & Pushes ELI/EL | 9.2. IP Based Load Balancer & Pushes ELI/EL | |||
o The responder MUST set {L=0, E=1} in DS flags. | o The responder MUST set {L=0, E=1} in DS flags. | |||
o If multipath information type {9} is received, the responder MUST | o If Multipath Information Type {9} is received, the responder MUST | |||
reply with multipath type {0}. | reply with Multipath Type {0}. | |||
o If multipath type {2, 4, 8, TBD4} is received, the following | o If Multipath Type {2, 4, 8, TBD4} is received, the following | |||
procedures are to be used: | procedures are to be used: | |||
* The responder MUST respond with multipath type {TBD4}. See | * The responder MUST respond with Multipath Type {TBD4}. See | |||
Section 7 for details of multipath type {TBD4}. | Section 7 for details of Multipath Type {TBD4}. | |||
* The "Label Multipath Information" section MUST be omitted | * The "Label Multipath Information" section MUST be omitted | |||
(i.e., it is not there). | (i.e., it is not there). | |||
* The IP address set specified in the received IP multipath | * The IP address set specified in the received IP Multipath | |||
information MUST be used to determine the returning IP/Label | Information MUST be used to determine the returned IP/Label | |||
pairs. | pairs. | |||
* If the received multipath information type was {TBD4}, the | * If the received Multipath Information Type was {TBD4}, the | |||
received "Label Multipath Information" sections MUST NOT be | received "Label Multipath Information" sections MUST NOT be | |||
used to determine the associated label portion of returning IP/ | used to determine the associated label portion of the returned | |||
Label pairs. | IP/Label pairs. | |||
* If no matching IP address is found, then the "IPMultipathType" | * If no matching IP address is found, then the "IPMultipathType" | |||
field MUST be set to multipath information type {0} and the "IP | field MUST be set to Multipath Information Type {0} and the "IP | |||
Multipath Information" section MUST be omitted. In addition, | Multipath Information" section MUST be omitted. In addition, | |||
the "Assoc Label Multipath Length" MUST be set to 0, and the | the "Assoc Label Multipath Length" MUST be set to 0, and the | |||
"Associated Label Multipath Information" section MUST also be | "Associated Label Multipath Information" section MUST also be | |||
omitted. | omitted. | |||
* If at least one matching IP address is found, then the | * If at least one matching IP address is found, then the | |||
"IPMultipathType" field MUST be set to appropriate multipath | "IPMultipathType" field MUST be set to appropriate Multipath | |||
information type {2, 4, 8} and the "IP Multipath Information" | Information Type {2, 4, 8} and the "IP Multipath Information" | |||
section MUST be included. In addition, the "Associated Label | section MUST be included. In addition, the "Associated Label | |||
Multipath Information" section MUST be populated with a list of | Multipath Information" section MUST be populated with a list of | |||
labels corresponding to each IP address specified in the "IP | labels corresponding to each IP address specified in the "IP | |||
Multipath Information" section. "Assoc Label Multipath Length" | Multipath Information" section. "Assoc Label Multipath Length" | |||
MUST be set to a value representing the length in octets of the | MUST be set to a value representing the length in octets of the | |||
"Associated Label Multipath Information" field. | "Associated Label Multipath Information" field. | |||
9.3. Label Based Load Balancer & Not Pushing ELI/EL | 9.3. Label-based Load Balancer & Not Pushing ELI/EL | |||
o The responder MUST set {L=1, E=0} in DS flags. | o The responder MUST set {L=1, E=0} in DS flags. | |||
o If multipath information type {2, 4, 8} is received, the responder | o If Multipath Information Type {2, 4, 8} is received, the responder | |||
MUST reply with multipath type {0}. | MUST reply with Multipath Type {0}. | |||
o If multipath information type {9} is received, the responder MUST | o If Multipath Information Type {9} is received, the responder MUST | |||
comply with [RFC4379] and [RFC6424] as updated by Section 3. | comply with [RFC4379] and [RFC6424] as updated by Section 3. | |||
o If multipath information type {TBD4} is received, the following | o If Multipath Information Type {TBD4} is received, the following | |||
procedures are to be used: | procedures are to be used: | |||
* The responder MUST reply with multipath information type | * The responder MUST reply with Multipath Information Type | |||
{TBD4}. | {TBD4}. | |||
* The "IP Multipath Information" and "Associated Label Multipath | * The "IP Multipath Information" and "Associated Label Multipath | |||
Information" sections MUST be omitted (NULL). | Information" sections MUST be omitted (NULL). | |||
* If no matching label is found, then the "LbMultipathType" field | * If no matching label is found, then the "LbMultipathType" field | |||
MUST be set to multipath information type {0} and the "Label | MUST be set to Multipath Information Type {0} and the "Label | |||
Multipath Information" section MUST also be omitted (NULL). | Multipath Information" section MUST also be omitted (NULL). | |||
* If at least one matching label is found, then the | * If at least one matching label is found, then the | |||
"LbMultipathType" field MUST be set to the appropriate | "LbMultipathType" field MUST be set to the appropriate | |||
multipath information type {9} and the "Label Multipath | Multipath Information Type {9} and the "Label Multipath | |||
Information" section MUST be included. | Information" section MUST be included. | |||
9.4. Label Based Load Balancer & Pushes ELI/EL | 9.4. Label-based Load Balancer & Pushes ELI/EL | |||
o The responder MUST set {L=1, E=1} in DS flags. | o The responder MUST set {L=1, E=1} in DS flags. | |||
o If multipath information type {2, 4, 8} is received, the responder | o If Multipath Information Type {2, 4, 8} is received, the responder | |||
MUST reply with multipath type {0}. | MUST reply with Multipath Type {0}. | |||
o If multipath type {9, TBD4} is received, the following procedures | o If Multipath Type {9, TBD4} is received, the following procedures | |||
are to be used: | are to be used: | |||
* The responder MUST respond with multipath type {TBD4}. | * The responder MUST respond with Multipath Type {TBD4}. | |||
* The "IP Multipath Information" section MUST be omitted. | * The "IP Multipath Information" section MUST be omitted. | |||
* The label set specified in the received label multipath | * The label set specified in the received Label Multipath | |||
information MUST be used to determine the returning Label/Label | Information MUST be used to determine the returned Label/Label | |||
pairs. | pairs. | |||
* If received multipath information type was {TBD4}, received | * If received Multipath Information Type was {TBD4}, received | |||
"Label Multipath Information" sections MUST NOT be used to | "Label Multipath Information" sections MUST NOT be used to | |||
determine the associated label portion of returning Label/Label | determine the associated label portion of the returned Label/ | |||
pairs. | Label pairs. | |||
* If no matching label is found, then the "LbMultipathType" field | * If no matching label is found, then the "LbMultipathType" field | |||
MUST be set to multipath information type {0} and "Label | MUST be set to Multipath Information Type {0} and "Label | |||
Multipath Information" section MUST be omitted. In addition, | Multipath Information" section MUST be omitted. In addition, | |||
"Assoc Label Multipath Length" MUST be set to 0, and the | "Assoc Label Multipath Length" MUST be set to 0, and the | |||
"Associated Label Multipath Information" section MUST also be | "Associated Label Multipath Information" section MUST also be | |||
omitted. | omitted. | |||
* If at least one matching label is found, then the | * If at least one matching label is found, then the | |||
"LbMultipathType" field MUST be set to the appropriate | "LbMultipathType" field MUST be set to the appropriate | |||
multipath information type {9} and the "Label Multipath | Multipath Information Type {9} and the "Label Multipath | |||
Information" section MUST be included. In addition, the | Information" section MUST be included. In addition, the | |||
"Associated Label Multipath Information" section MUST be | "Associated Label Multipath Information" section MUST be | |||
populated with a list of labels corresponding to each label | populated with a list of labels corresponding to each label | |||
specified in the "Label Multipath Information" section. "Assoc | specified in the "Label Multipath Information" section. "Assoc | |||
Label Multipath Length" MUST be set to a value representing the | Label Multipath Length" MUST be set to a value representing the | |||
length in octets of the "Associated Label Multipath | length in octets of the "Associated Label Multipath | |||
Information" field. | Information" field. | |||
9.5. Flow-Aware MS-PW Stitching LSR | 9.5. Flow-Aware MS-PW Stitching LSR | |||
skipping to change at page 17, line 22 ¶ | skipping to change at page 17, line 22 ¶ | |||
described in Section 9.3. | described in Section 9.3. | |||
o Load balances on the previous flow label, and replaces the flow | o Load balances on the previous flow label, and replaces the flow | |||
label with a newly computed label. For this case, the stitching | label with a newly computed label. For this case, the stitching | |||
LSR is to behave as described in Section 9.4. | LSR is to behave as described in Section 9.4. | |||
10. Supported and Unsupported Cases | 10. Supported and Unsupported Cases | |||
The MPLS architecture does not define strict rules on how | The MPLS architecture does not define strict rules on how | |||
implementations are to identify hash "keys" for load balancing | implementations are to identify hash "keys" for load balancing | |||
purpose. As a result, implementations may be of the following load | purposes. As a result, implementations may be of the following load | |||
balancer types: | balancer types: | |||
1. IP-based load balancer. | 1. IP-based load balancer. | |||
2. Label-based load balancer. | 2. Label-based load balancer. | |||
3. Label- and IP-based load balancer. | 3. Label- and IP-based load balancer. | |||
For cases (2) and (3), an implementation can include different sets | For cases (2) and (3), an implementation can include different sets | |||
of labels from the label stack for load balancing purpose. Thus the | of labels from the label stack for load balancing purpose. Thus the | |||
following sub-cases are possible: | following sub-cases are possible: | |||
a. Entire label stack. | a. Entire label stack. | |||
b. Top N labels from label stack where the number of labels in label | b. Top N labels from label stack where the number of labels in label | |||
stack is >N. | stack is > N. | |||
c. Bottom N labels from label stack where the number of labels in | c. Bottom N labels from label stack where the number of labels in | |||
label stack is >N. | label stack is > N. | |||
In a scenario where there is one flow label or entropy label present | In a scenario where there is one flow label or entropy label present | |||
in the label stack, the following further cases are possible for | in the label stack, the following further cases are possible for | |||
(2b), (2c), (3b) and (3c): | (2b), (2c), (3b) and (3c): | |||
1. N labels from label stack include flow label or entropy label. | 1. N labels from label stack include flow label or entropy label. | |||
2. N labels from label stack do not include flow label or entropy | 2. N labels from label stack do not include flow label or entropy | |||
label. | label. | |||
Also in a scenario where there are multiple entropy labels present in | Also in a scenario where there are multiple entropy labels present in | |||
skipping to change at page 18, line 12 ¶ | skipping to change at page 18, line 12 ¶ | |||
o Search for entropy stops at the first entropy label. | o Search for entropy stops at the first entropy label. | |||
o Search for entropy includes any entropy label found plus continues | o Search for entropy includes any entropy label found plus continues | |||
to search for entropy in the label stack. | to search for entropy in the label stack. | |||
Furthermore, handling of reserved (i.e., special) labels varies among | Furthermore, handling of reserved (i.e., special) labels varies among | |||
implementations: | implementations: | |||
o Reserved labels are used in the hash as any other label would be | o Reserved labels are used in the hash as any other label would be | |||
(not a recommended practice). | (not a recommended practice.) | |||
o Reserved labels are skipped over and, for implementations limited | o Reserved labels are skipped over and, for implementations limited | |||
to N labels, the reserved labels do not count towards the limit of | to N labels, the reserved labels do not count towards the limit of | |||
N. | N. | |||
o Reserved labels are skipped over and, for implementations limited | o Reserved labels are skipped over and, for implementations limited | |||
to N labels, the reserved labels count towards the limit of N. | to N labels, the reserved labels count towards the limit of N. | |||
It is important to point this out since the presence of GAL will | It is important to point this out since the presence of GAL will | |||
affect those implementations which include reserved labels for load | affect those implementations which include reserved labels for load | |||
balancing purposes. | balancing purposes. | |||
skipping to change at page 18, line 43 ¶ | skipping to change at page 18, line 43 ¶ | |||
is expected that most implementations will be of types "IP-based | is expected that most implementations will be of types "IP-based | |||
load balancer" or "Label-based load balancer". | load balancer" or "Label-based load balancer". | |||
o Section 2.4.5.1 of [RFC7325] recommends that searching for entropy | o Section 2.4.5.1 of [RFC7325] recommends that searching for entropy | |||
labels in the label stack should terminate upon finding the first | labels in the label stack should terminate upon finding the first | |||
entropy label. Therefore, it is expected that implementations | entropy label. Therefore, it is expected that implementations | |||
will only include the first (top-most) entropy label when there | will only include the first (top-most) entropy label when there | |||
are multiple entropy labels in the label stack. | are multiple entropy labels in the label stack. | |||
o It is expected that, in most cases, the number of labels in the | o It is expected that, in most cases, the number of labels in the | |||
label stack will not exceed number of labels (N) which | label stack will not exceed the number of labels (N) which | |||
implementations can include for load balancing purposes. | implementations can include for load balancing purposes. | |||
o It is expected that labels in the label stack, besides the flow | o It is expected that labels in the label stack, besides the flow | |||
label and entropy label, are constant for the lifetime of a single | label and entropy label, are constant for the lifetime of a single | |||
LSP multipath traceroute operation. Therefore, deviating load | LSP multipath traceroute operation. Therefore, deviating load | |||
balancing implementations with respect to reserved labels should | balancing implementations with respect to reserved labels should | |||
not affect this tool. | not affect this tool. | |||
Thus [RFC4379], [RFC6424], and this document supports cases (1) and | Thus [RFC4379], [RFC6424], and this document support cases (1) and | |||
(2a1), where only the first (top-most) entropy label is included when | (2a1), where only the first (top-most) entropy label is included when | |||
there are multiple entropy labels in the label stack. | there are multiple entropy labels in the label stack. | |||
11. Security Considerations | 11. Security Considerations | |||
This document extends the LSP Ping and Traceroute mechanisms to | While [RFC4379] and [RFC6424] already allow for the discovery and | |||
discover and exercise ECMP paths when an LSP uses ELI/EL in the label | exercise of ECMP paths, this document extends the LSP Ping and | |||
stack. Additional processing is required for responder and initiator | Traceroute mechanisms to more precisely discover and exercise ECMP | |||
nodes. The responder node that pushes ELI/EL will need to compute | paths when an LSP uses ELI/EL in the label stack. Sourcing or | |||
and return multipath data including associated EL. The initiator | inspecting LSP Ping packets can be used for network reconnaissance. | |||
node will need to store and handle both IP multipath and label | ||||
multipath information, and include destination IP addresses and/or | The extended capability defined in this document requires small | |||
ELs in MPLS echo request packets as well as in multipath information | additional processing for the responder and initiator nodes. The | |||
sent to downstream nodes. This document does not itself introduce | responder node that pushes ELI/EL will need to compute and return | |||
any new security considerations. The security measures described in | multipath data including associated EL. The initiator node will need | |||
[RFC4379], [RFC6424], and [RFC6790] are applicable. [RFC6424] | to store and handle both IP Multipath and Label Multipath | |||
provides guidelines if a network operator wants to prevent tracing or | Information, and include destination IP addresses and/or ELs in MPLS | |||
does not want to expose details of the tunnel and [RFC6790] provides | echo request packets as well as in Multipath Information sent to | |||
guidance on the use of the EL. | downstream nodes. The security considerations of [RFC4379] already | |||
cover Denial-of-Service attacks by regulating LSP Ping traffic going | ||||
to the control plane. | ||||
Finally, the security measures described in [RFC4379], [RFC6424], and | ||||
[RFC6790] are applicable. [RFC6424] provides guidelines if a network | ||||
operator wants to prevent tracing or does not want to expose details | ||||
of the tunnel and [RFC6790] provides guidance on the use of the EL. | ||||
12. IANA Considerations | 12. IANA Considerations | |||
12.1. Entropy Label FEC | 12.1. Entropy Label FEC | |||
The IANA is requested to assign a new sub-TLV from the "Sub-TLVs for | The IANA is requested to assign a new sub-TLV from the "Sub-TLVs for | |||
TLV Types 1, 16, and 21" section from the "Multi-Protocol Label | TLV Types 1, 16, and 21" section from the "Multi-Protocol Label | |||
Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters - TLVs" | Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters - TLVs" | |||
registry ([IANA-MPLS-LSP-PING]). | registry ([IANA-MPLS-LSP-PING]). | |||
skipping to change at page 20, line 21 ¶ | skipping to change at page 20, line 28 ¶ | |||
Note: The "Multipath Type" sub-registry is created by [RFC7537]. | Note: The "Multipath Type" sub-registry is created by [RFC7537]. | |||
Value Meaning Reference | Value Meaning Reference | |||
---------- ---------------------------------------- --------- | ---------- ---------------------------------------- --------- | |||
TBD4 IP and label set this document | TBD4 IP and label set this document | |||
13. Acknowledgements | 13. Acknowledgements | |||
The authors would like to thank Loa Andersson, Curtis Villamizar, | The authors would like to thank Loa Andersson, Curtis Villamizar, | |||
Daniel King, Sriganesh Kini, Victor Ji, and Acee Lindem for | Daniel King, Sriganesh Kini, Victor Ji, Acee Lindem, Deborah | |||
performing thorough reviews and providing valuable comments. | Brungard, Shawn M Emery, Scott O. Bradner, and Peter Yee for | |||
performing thorough reviews and providing most valuable comments. | ||||
Carlos Pignataro would like to acknowledge his lifetime friend Martin | ||||
Rigueiro, with deep gratutide and esteem, for sharing his contagious | ||||
passion for engineering and sciences, and for selflessly teaching so | ||||
many lessons. | ||||
14. Contributing Authors | 14. Contributing Authors | |||
Nagendra Kumar | Nagendra Kumar | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
Email: naikumar@cisco.com | Email: naikumar@cisco.com | |||
15. References | 15. References | |||
15.1. Normative References | 15.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, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
End of changes. 116 change blocks. | ||||
195 lines changed or deleted | 213 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |