draft-akiya-mpls-entropy-lsp-ping-01.txt | draft-akiya-mpls-entropy-lsp-ping-02.txt | |||
---|---|---|---|---|
Internet Engineering Task Force N. Akiya | Internet Engineering Task Force N. Akiya | |||
Internet-Draft G. Swallow | Internet-Draft G. Swallow | |||
Updates: 4379,6790 (if approved) C. Pignataro | Updates: 4379,6424,6790 (if approved) C. Pignataro | |||
Intended status: Standards Track Cisco Systems | Intended status: Standards Track Cisco Systems | |||
Expires: June 18, 2014 December 15, 2013 | Expires: January 5, 2015 A. Malis | |||
S. Aldrin | ||||
Huawei Technologies | ||||
July 4, 2014 | ||||
Label Switched Path (LSP) Ping/Trace over MPLS Network | Label Switched Path (LSP) and Pseudowire (PW) Ping/Trace over | |||
using Entropy Labels (EL) | MPLS Network using Entropy Labels (EL) | |||
draft-akiya-mpls-entropy-lsp-ping-01 | draft-akiya-mpls-entropy-lsp-ping-02 | |||
Abstract | Abstract | |||
The Multiprotocol Label Switching (MPLS) Label Switched Path (LSP) | The Multiprotocol Label Switching (MPLS) Label Switched Path (LSP) | |||
Ping and Traceroute are used to exercise specific paths of Equal Cost | Ping and Traceroute are used to exercise specific paths of Equal-Cost | |||
Multipath (ECMP). When LSP is signaled to use Entropy Label (EL) | Multipath (ECMP). When LSP is signaled to use Entropy Label (EL) | |||
described in RFC6790, the ability for LSP Ping and Traceroute | described in RFC6790, the ability for LSP Ping and Traceroute | |||
operation to discover and exercise ECMP paths has been lost in | operation to discover and exercise ECMP paths has been lost in | |||
scenarios which LSRs apply deviating load balance techniques. One | scenarios which LSRs apply deviating load balance techniques. One | |||
such scenario is when some LSRs apply EL based load balancing while | such scenario is when some LSRs apply EL based load balancing while | |||
other LSRs apply non-EL based load balancing (ex: IP). Another | other LSRs apply non-EL based load balancing (ex: IP). Another | |||
scenario is when EL based LSP is stitched with another LSP which can | scenario is when EL based LSP is stitched with another LSP which can | |||
be EL based or non-EL based. | be EL based or non-EL based. | |||
This document extends the MPLS LSP Ping and Traceroute mechanisms to | This document extends the MPLS LSP Ping and Traceroute mechanisms to | |||
restore the ability of exercising specific paths of ECMP over LSP | restore the ability of exercising specific paths of ECMP over LSP | |||
which make use of Entropy Label. This document updates RFC4379 and | which make use of Entropy Label. This document updates RFC4379, | |||
RFC6790. | RFC6424 and RFC6790. | |||
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 10 | skipping to change at page 2, line 10 | |||
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 June 18, 2014. | This Internet-Draft will expire on January 5, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2014 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 | |||
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 | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Multipath Type 9 . . . . . . . . . . . . . . . . . . . . . . 5 | 1.2. Prerequisite . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Initiating LSR Procedures . . . . . . . . . . . . . . . . . . 6 | 1.3. Background . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
5. Responder LSR Procedures . . . . . . . . . . . . . . . . . . 7 | 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
5.1. IP Based Load Balancer & Not Pushing ELI/EL . . . . . . . 8 | 3. Multipath Type 9 . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.2. IP Based Load Balancer & Pushes ELI/EL . . . . . . . . . 8 | 4. Pseudowire Tracing . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.3. Label Based Load Balancer & Not Pushing ELI/EL . . . . . 9 | 5. Initiating LSR Procedures . . . . . . . . . . . . . . . . . . 8 | |||
5.4. Label Based Load Balancer & Pushes ELI/EL . . . . . . . . 9 | 6. Responder LSR Procedures . . . . . . . . . . . . . . . . . . 9 | |||
5.5. FAT MS-PW Stitching LSR . . . . . . . . . . . . . . . . . 10 | 6.1. IP Based Load Balancer & Not Pushing ELI/EL . . . . . . . 9 | |||
6. Entropy Label FEC . . . . . . . . . . . . . . . . . . . . . . 10 | 6.2. IP Based Load Balancer & Pushes ELI/EL . . . . . . . . . 10 | |||
7. DS Flags: L and E . . . . . . . . . . . . . . . . . . . . . . 11 | 6.3. Label Based Load Balancer & Not Pushing ELI/EL . . . . . 11 | |||
8. New Multipath Information Type: 10 . . . . . . . . . . . . . 12 | 6.4. Label Based Load Balancer & Pushes ELI/EL . . . . . . . . 11 | |||
9. Unsupported Cases . . . . . . . . . . . . . . . . . . . . . . 13 | 6.5. Flow Aware MS-PW Stitching LSR . . . . . . . . . . . . . 12 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 7. Entropy Label FEC . . . . . . . . . . . . . . . . . . . . . . 12 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 8. DS Flags: L and E . . . . . . . . . . . . . . . . . . . . . . 13 | |||
11.1. New Sub-Registries . . . . . . . . . . . . . . . . . . . 14 | 9. New Multipath Information Type: 10 . . . . . . . . . . . . . 14 | |||
11.1.1. DS Flags . . . . . . . . . . . . . . . . . . . . . . 14 | 10. Supported and Unsupported Cases . . . . . . . . . . . . . . . 16 | |||
11.1.2. Multipath Type . . . . . . . . . . . . . . . . . . . 15 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
11.2. Entropy Label FEC . . . . . . . . . . . . . . . . . . . 15 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 | 12.1. New Sub-Registries . . . . . . . . . . . . . . . . . . . 18 | |||
13. Contributing Authors . . . . . . . . . . . . . . . . . . . . 15 | 12.1.1. DS Flags . . . . . . . . . . . . . . . . . . . . . . 18 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 12.1.2. Multipath Type . . . . . . . . . . . . . . . . . . . 19 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 12.2. Entropy Label FEC . . . . . . . . . . . . . . . . . . . 19 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 16 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | |||
14. Contributing Authors . . . . . . . . . . . . . . . . . . . . 20 | ||||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
15.1. Normative References . . . . . . . . . . . . . . . . . . 20 | ||||
15.2. Informative References . . . . . . . . . . . . . . . . . 20 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
1. Introduction | 1. Introduction | |||
1.1. Terminology | ||||
The following acronyms/terminologies are used in this document: | ||||
o MPLS - Multiprotocol Label Switching. | ||||
o LSP - Label Switched Path. | ||||
o LSR - Label Switching Router. | ||||
o FEC - Forwarding Equivalent Class. | ||||
o ECMP - Equal-Cost Multipath. | ||||
o EL - Entropy Label. | ||||
o ELI - Entropy Label Indicator. | ||||
o GAL - Generic Associated Channel Label. | ||||
o MS-PW - Multi-Segment Pseudowire. | ||||
o Initiating LSR - LSR which sends MPLS echo request. | ||||
o Responder LSR - LSR which receives MPLS echo request and sends | ||||
MPLS echo reply. | ||||
o IP Based Load Balancer - LSR which load balances on fields from IP | ||||
header (and possibly fields from upper layers), and does not | ||||
consider entropy label from label stack (i.e. Flow Label or | ||||
Entropy Label) for load balancing purpose. | ||||
o Label Based Load Balancer - LSR which load balances on entropy | ||||
label from label stack (i.e. Flow Label or Entropy Label), and | ||||
does not consider fields from IP header (and possibly fields from | ||||
upper layers) for load balancing purpose. | ||||
o Label and IP Based Load Balancer - LSR which load balances on both | ||||
labels from label stack (including Flow Label or Entropy Label if | ||||
present) and fields from IP header (and possibly fields from upper | ||||
layers). | ||||
1.2. Prerequisite | ||||
MPLS implementations employ wide variety of load balancing techniques | ||||
in terms of fields used for hash "keys". [RFC4379] and [RFC6424] are | ||||
designed to provide multipath support for subset of techniques. | ||||
Intent of this document is to restore multipath support for those | ||||
supported techniques which have been compromised by the introduction | ||||
of [RFC6790] (i.e. Entropy Labels). Section 10 describes supported | ||||
and unsupported cases, and it may be useful for one to visit this | ||||
section first. | ||||
1.3. Background | ||||
Section 3.3.1 of [RFC4379] specifies multipath information encoding | Section 3.3.1 of [RFC4379] specifies multipath information encoding | |||
which can be used by LSP Ping initiator to trace and validate all | in Downstream Mapping TLV (Section 3.3 of [RFC4379]) and Downstream | |||
ECMP paths between ingress and egress. These encodings are | Detailed Mapping TLV (Section 3.3 of [RFC6424]) which can be used by | |||
sufficient when all the LSRs along the path(s), between ingress and | LSP Ping initiator to trace and validate all ECMP paths between | |||
egress, consider same set of "keys" as input for load balancing | ingress and egress. These encodings are sufficient when all the LSRs | |||
algorithm: all IP based or all label based. | along the path(s), between ingress and egress, consider same set of | |||
"keys" as input for load balancing algorithm: all IP based or all | ||||
label based. | ||||
With introduction of [RFC6790], it is quite normal to see set of LSRs | With introduction of [RFC6790], it is quite normal to see set of LSRs | |||
performing load balancing based on EL/ELI while others still follow | performing load balancing based on EL/ELI while others still follow | |||
the traditional way (IP based). This results in LSP Ping initiator | the traditional way (IP based). This results in LSP Ping initiator | |||
not be able to trace and validate all ECMP paths in following | not be able to trace and validate all ECMP paths in following | |||
scenarios: | scenarios: | |||
o One or more transit LSRs along LSP with ELI/EL in label stack do | o One or more transit LSRs along LSP with ELI/EL in label stack do | |||
not perform ECMP load balancing based on EL (hashes based on | not perform ECMP load balancing based on EL (hashes based on | |||
"keys" including IP destination address). This scenario is not | "keys" including IP destination address). This scenario is not | |||
skipping to change at page 3, line 42 | skipping to change at page 5, line 8 | |||
[I-D.ravisingh-mpls-el-for-seamless-mpls]. | [I-D.ravisingh-mpls-el-for-seamless-mpls]. | |||
These scenarios will be quite common because every deployment of | These scenarios will be quite common because every deployment of | |||
[RFC6790] will invariably end up with nodes that support ELI/EL and | [RFC6790] will invariably end up with nodes that support ELI/EL and | |||
nodes that do not. There will typically be areas that support ELI/EL | nodes that do not. There will typically be areas that support ELI/EL | |||
and areas that do not. | and areas that do not. | |||
As pointed out in [RFC6790] the procedures of [RFC4379] with respect | As pointed out in [RFC6790] the procedures of [RFC4379] with respect | |||
to multipath information type {9} are incomplete. However [RFC6790] | to multipath information type {9} are incomplete. However [RFC6790] | |||
does not actually update [RFC4379]. Further the specific EL location | does not actually update [RFC4379]. Further the specific EL location | |||
is not clearly defined, particularly in the case of Flow-Aware | is not clearly defined, particularly in the case of Flow Aware | |||
Transport Pseudowires [RFC6391]. This document defines a new FEC | Pseudowires [RFC6391]. This document defines a new FEC Stack sub-TLV | |||
Stack sub-TLV for the Entropy Label. Section 3 of this document | for the Entropy Label. Section 3 of this document updates the | |||
updates the procedures for multipath information type {9} described | procedures for multipath information type {9} described in [RFC4379]. | |||
in [RFC4379] Rest of this document describes extensions required to | Rest of this document describes extensions required to restore ECMP | |||
restore ECMP discovery and tracing capabilities for scenarios | discovery and tracing capabilities for scenarios described. | |||
described. | ||||
2. Overview | 2. Overview | |||
[RFC4379] describes LSP traceroute as an operation where the | [RFC4379] describes LSP traceroute as an operation where the | |||
initiating LSR send a series of MPLS echo requests towards the same | initiating LSR send a series of MPLS echo requests towards the same | |||
destination. The first packet in the series have the TTL set to 1. | destination. The first packet in the series have 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 | |||
echo request the TLL is incremented by one until a response is | echo request the TLL is incremented by one until a response is | |||
received from the intended destination. Initiating LSR discovers and | received from the intended destination. Initiating LSR discovers and | |||
exercises ECMP by obtaining multipath information from each transit | exercises ECMP by obtaining multipath information from each transit | |||
LSR and using specific destination IP address or specific entropy | LSR and using specific destination IP address or specific entropy | |||
label. | label. | |||
Notion of {x, y, z} from here on refers to Multipath information | ||||
types x, y or z. | ||||
LSP Ping initiating LSR sends MPLS echo request with multipath | LSP Ping initiating LSR sends MPLS echo request with multipath | |||
information. This multipath information is described in DSMAP/DDMAP | information. This multipath information is described in DSMAP/DDMAP | |||
TLV of echo request, and can contain set of IP addresses or set of | TLV of echo request, and may contain set of IP addresses or set of | |||
labels today. Multipath information types {2, 4, 8} carry set of IP | labels. Multipath information types {2, 4, 8} carry set of IP | |||
addresses and multipath information type {9} carries set of labels. | addresses and multipath information type {9} carries set of labels. | |||
Responder LSR (receiver of MPLS echo request) is to determine subset | Responder LSR (receiver of MPLS echo request) will determine the | |||
of initiator specified multipath information which load balances to | subset of initiator specified multipath information which load | |||
each downstream (outgoing interface). Responder LSR sends MPLS echo | balances to each downstream (outgoing interface). Responder LSR | |||
reply with resulting multipath information per downstream (outgoing | sends MPLS echo reply with resulting multipath information per | |||
interface) back to the initiating LSR. Initiating LSR is then able | downstream (outgoing interface) back to the initiating LSR. | |||
to use specific IP destination address or specific label to exercise | Initiating LSR is then able to use specific IP destination address or | |||
specific ECMP path on the responder LSR. | specific label to exercise specific ECMP path on the responder LSR. | |||
Current behavior is problematic in following scenarios: | Current behavior is problematic in following scenarios: | |||
o Initiating LSR sends IP multipath information, but responder LSR | o Initiating LSR sends IP multipath information, but responder LSR | |||
load balances on labels. | load balances on labels. | |||
o Initiating LSR sends label multipath information, but responder | o Initiating LSR sends label multipath information, but responder | |||
LSR load balances on IP addresses. | LSR load balances on IP addresses. | |||
o Initiating LSR sends one of existing multipath information to LSR | o Initiating LSR sends existing multipath information to LSR which | |||
which pushes ELI/EL in label stack, but initiating LSR can only | pushes ELI/EL in label stack, but the initiating LSR can only | |||
continue to discover and exercise specific path of ECMP if LSR | continue to discover and exercise specific path of ECMP, if the | |||
which pushes ELI/EL responds with both IP addresses and associated | LSR which pushes ELI/EL responds with both IP addresses and | |||
EL corresponding to each IP address. This is because: | associated EL corresponding to each IP address. This is because: | |||
* ELI/EL pushing LSR that is a stitching point will load balance | * ELI/EL pushing LSR that is a stitching point will load balance | |||
based on IP address. | based on IP address. | |||
* 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 ELs. | on ELs. | |||
o Initiating LSR sends one of existing multipath information to ELI/ | o Initiating LSR sends one of existing multipath information to ELI/ | |||
EL pushing LSR, but initiating LSR can only continue to discover | EL pushing LSR, but initiating LSR can only continue to discover | |||
and exercise specific path of ECMP if ELI/EL pushing LSR responds | and exercise specific path of ECMP if ELI/EL pushing LSR responds | |||
skipping to change at page 5, line 21 | skipping to change at page 6, line 33 | |||
* ELI/EL pushing LSR that is a stitching point will load balance | * ELI/EL pushing LSR that is a stitching point will load balance | |||
based on EL from previous LSP and pushes new EL. | based on EL from previous LSP and pushes 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 point to how the existing multipath information | The above scenarios point to how the existing multipath information | |||
is insufficient when LSP traceroute is operated on an LSP with | is insufficient when LSP traceroute is operated on an LSP with | |||
Entropy Labels described by [RFC6790]. Therefore, this document | Entropy Labels described by [RFC6790]. Therefore, this document | |||
defines a multipath information type to be used in the DSMAP/DDMAP of | defines a multipath information type to be used in the DSMAP/DDMAP of | |||
MPLS echo request/reply packets in Section 8. | MPLS echo request/reply packets in Section 9. | |||
In addition, responder LSR can reply with empty multipath information | In addition, responder LSR can reply with empty multipath information | |||
if no IP address set or label set from received multipath information | if no IP address set or label set from received multipath information | |||
matched load balancing to a downstream. Empty return is also | matched load balancing to a downstream. Empty return is also | |||
possible if initiating LSR sends multipath information of one type, | possible if initiating LSR sends multipath information of one type, | |||
IP address or label, but responder LSR load balances on the other | IP address or label, but responder LSR load balances on the other | |||
type. To disambiguate between the two results, this document | type. To disambiguate between the two results, this document | |||
introduces new flags in the DSMAP/DDMAP TLV to allow responder LSR to | introduces new flags in the DSMAP/DDMAP TLV to allow responder LSR to | |||
describe the load balance technique being used. | describe the load balance technique being used. | |||
It is required that all LSRs along the LSP understand new flags as | It is required that all LSRs along the LSP understand new flags as | |||
well as new multipath information type. It is also required that | well as new multipath information type. It is also required that | |||
initiating LSR can select both IP destination address and label to | initiating LSR can select both IP destination address and label to | |||
use on transmitting MPLS echo request packets. Two additional DS | use on transmitting MPLS echo request packets. Two additional DS | |||
Flags are defined for the DSMAP and DDMAP TLVs in Section 7. | Flags are defined for the DSMAP and DDMAP TLVs in Section 8. These | |||
two flags are used by the responder LSR to describe its load balance | ||||
behavior on received MPLS echo request. | ||||
Note that the terms "IP Based Load Balancer", "Label Based Load | ||||
Balancer" and "Label Based Load Balancer" are in context of how | ||||
received MPLS echo request is handled by the responder LSR. | ||||
3. Multipath Type 9 | 3. Multipath Type 9 | |||
This section defines to which labels multipath type {9} applies. | ||||
[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. First, the | the procedures for using this type are incomplete as the specific | |||
specific location of the label was not defined. What was assumed, | location of the label was not defined. It was assumed that the | |||
but not spelled out, was that the presence of multipath type {9} | presence of multipath type {9} implied the value of the bottom-of- | |||
meant the responder should act as if the payload of the received | stack label should be varied by the values indicated by multipath to | |||
packet were non-IP and that the bottom-of-stack label should be | determine their respective out-going interfaces. | |||
replaced by the values indicated by multipath type {9} to determine | ||||
their respective out-going interfaces. | ||||
Further, with the introduction of [RFC6790], entropy labels may now | Section 7 defines a new FEC-Stack sub-TLV to indicate an entropy | |||
appear anywhere in a label stack. | label. These labels may appear anywhere in a label stack. | |||
This section defines to which labels multipath type {9} can apply. | Multipath type {9} applies to the first label in the label-stack that | |||
Additionally it defines procedures for tracing pseudowires and flow- | corresponds to an EL-FEC. If no such label is found, it applies to | |||
aware pseudowires. These procedures pertain to the use of multipath | the label at the bottom of the label stack. | |||
information type {9} as well as type {10}. | ||||
Section 6 defines a new FEC-Stack sub-TLV to indicate and entropy | 4. Pseudowire Tracing | |||
label. Multipath type {9} applies exclusively to this sub-TLV. Any | ||||
LSP Ping message containing a DD-MAP or DS-MAP with multipath type | ||||
{9} MUST include an EL_FEC at the bottom of the FEC-Stack. | ||||
When an MPLS echo request message is received containing a FEC-Stack | This section defines procedures for tracing pseudowires. These | |||
with an EL-FEC at the bottom of the FEC stack and is not preceded by | procedures pertain to the use of multipath information type {9} as | |||
an entropy label, the responder must behave (for load balancing | well as type {10}. In all cases below, when a control word is in use | |||
purposes) as if the first word of the message were a Pseudowire | the N-flag in the DDMAP or DSMAP MUST be set. Note that when a | |||
Control Word. | control word is not in use the returned DDMAPs or DSMAPs may not be | |||
accurate. | ||||
In order to trace a non-FAT pseudowire, instead of including the | In order to trace a non Flow-Aware Pseudowire the initiator includes | |||
appropriate PW-FEC in the FEC-Stack, an EL-FEC is included. Tracing | an EL-FEC instead of the appropriate PW-FEC at the bottom of the FEC- | |||
in this way will cause compliant routers to return the proper | Stack. Tracing in this way will cause compliant routers to return | |||
outgoing interface. Note that this procedure only traces to the end | the proper outgoing interface. Note that this procedure only traces | |||
of the MPLS LSP at transport layer (e.g. LDP and/or RSVP). To | to the end of the MPLS LSP that is under test and will not verify the | |||
actually verify the PW-FEC or in the case of a MS-PW, to determine | PW FEC. To actually verify the PW-FEC or in the case of a MS-PW, to | |||
the next pseudowire label value, the initiator MUST repeat that step | determine the next pseudowire label value, the initiator MUST repeat | |||
of the trace, (i.e., repeating the TTL value used) but with the FEC- | that step of the trace, (i.e., repeating the TTL value used) but with | |||
Stack modified to contain the appropriate PW-FEC. | the FEC-Stack modified to contain the appropriate PW-FEC. Note that | |||
these procedures are applicable to scenarios which an initiator is | ||||
able to vary the bottom label (i.e. pseudowire label). Possible | ||||
scenarios are tracing multiple non Flow-Aware Pseudowires on the same | ||||
endpoints or tracing a non Flow-Aware Pseudowire provisioned with | ||||
multiple pseudowire labels. | ||||
In order to trace a Flow-Aware Transport Pseudowire, the initiator | In order to trace a Flow Aware Pseudowire, the initiator includes an | |||
includes an EL-FEC at the bottom of the FEC-Stack and pushes the | EL-FEC at the bottom of the FEC-Stack and pushes the appropriate PW- | |||
appropriate PW-FEC onto the FEC-Stack. | FEC onto the FEC-Stack. | |||
4. Initiating LSR Procedures | In order to trace through non-compliant routers the initiator forms | |||
an MPLS echo request message and includes a DDMAP or DSMAP with | ||||
multipath type {9}. For a non Flow-Aware Pseudowire it includes the | ||||
appropriate PW-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 appropriate PW-FEC onto the FEC-Stack. | ||||
5. Initiating LSR Procedures | ||||
In order to facilitate the flow of the following text we speak in | In order to facilitate the flow of the following text we speak in | |||
terms of a boolean called EL_LSP maintained by the initiating LSR. | terms of a boolean called EL_LSP maintained by the initiating LSR. | |||
This value controls the multipath information type to be used in | This value controls the multipath information type to be used in | |||
transmitted echo request packets. When the initiating LSR is | transmitted echo request packets. When the initiating LSR is | |||
transmitting an echo request packet with DSMAP/DDMAP with a non-zero | transmitting an echo request packet with DSMAP/DDMAP with a non-zero | |||
multipath information type, then EL_LSP boolean MUST be consulted to | multipath information type, then EL_LSP boolean MUST be consulted to | |||
determine the multipath information type to use. | determine the multipath information type 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], initiating LSR MUST operate with following | Section 3 and [RFC6424], initiating LSR MUST operate with following | |||
procedures. | procedures. | |||
o When initiating LSR is IP based load balancer (not pushing ELI/ | o When the initiating LSR pushes ELI/EL, initialize EL_LSP=True. | |||
EL), initialize EL_LSP=False. | Else set EL_LSP=False. | |||
o When initiating LSR pushes ELI/EL, initialize EL_LSP=True. | ||||
o When initiating LSR is transmitting non-zero multipath information | o When the initiating LSR is transmitting non-zero multipath | |||
type: | information type: | |||
* If (EL_LSP) initiating LSR MUST use multipath information type | * If (EL_LSP), the initiating LSR MUST use multipath information | |||
{10}. | type {10} unless same responder LSR cannot handle type {10}. | |||
* Else initiating LSR MUST use multipath information type {2, 4, | * Else the initiating LSR MAY use multipath information type {2, | |||
8, 9}. | 4, 8, 9}. | |||
o When initiating LSR is transmitting multipath information type | o When the initiating LSR is transmitting multipath information type | |||
{10}, both "IP Multipath Information" and "Label Multipath | {10}, both "IP Multipath Information" and "Label Multipath | |||
Information" MUST be included, and "IP Associated Label Multipath | Information" MUST be included, and "IP Associated Label Multipath | |||
Information" MUST be omitted (NULL). | Information" MUST be omitted (NULL). | |||
o When initiating LSR receives echo reply with {L=0, E=1} in DS | o When the initiating LSR receives echo reply with {L=0, E=1} in DS | |||
flags with valid contents, set EL_LSP=True. | flags with valid contents, set EL_LSP=True. | |||
In following conditions, initiating LSR may have lost the ability to | In following conditions, the initiating LSR may have lost the ability | |||
exercise specific ECMP paths. Initiating LSR MAY continue with "best | to exercise specific ECMP paths. The initiating LSR MAY continue | |||
effort". | with "best effort". | |||
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 {10} sent, and received echo reply with | o Multipath information type {10} sent, and received echo reply with | |||
multipath information type other than {10}. | multipath information type other than {10}. | |||
5. Responder LSR Procedures | 6. Responder LSR Procedures | |||
Common Procedures: Responder LSR receiving MPLS echo request packet | Common Procedures: The responder LSR receiving an MPLS echo request | |||
with multipath information type {10} MUST validate following | packet with multipath information type {10} MUST validate following | |||
contents. Any deviation MUST result in responder LSR to consider the | contents. Any deviation MUST result in the responder LSR to consider | |||
packet as malformed and return code 1 (Malformed echo request | the packet as malformed and return code 1 (Malformed echo request | |||
received) in MPLS echo reply packet. | received) in the MPLS echo reply packet. | |||
o IP multipath information MUST be included. | o IP multipath information MUST be included. | |||
o Label multipath information MUST be included. | o Label multipath information MUST be included. | |||
o IP associated label multipath information MUST be omitted (NULL). | o IP associated label multipath information MUST be omitted (NULL). | |||
Following subsections describe expected responder LSR procedures when | Following subsections describe expected responder LSR procedures when | |||
echo reply is to include DSMAP/DDMAP TLVs, based on local load | echo reply is to include DSMAP/DDMAP TLVs, based on local load | |||
balance technique being employed. In case responder LSR performs | balance technique being employed. In case the responder LSR performs | |||
deviating load balance techniques per downstream basis, appropriate | deviating load balance techniques per downstream basis, appropriate | |||
procedures matching to each downstream load balance technique MUST be | procedures matching to each downstream load balance technique MUST be | |||
operated. | operated. | |||
5.1. IP Based Load Balancer & Not Pushing ELI/EL | 6.1. IP Based Load Balancer & Not Pushing ELI/EL | |||
o 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, responder | o If multipath information type {2, 4, 8} is received, the responder | |||
MUST comply with [RFC4379]/[RFC6424]. | MUST comply with [RFC4379] and [RFC6424]. | |||
o If multipath information type {9} is received, 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 {10} is received, responder MUST | o If multipath information type {10} is received, following | |||
reply with multipath information type {10}. "Label Multipath | procedures are to be used: | |||
Information" and "Associated Label Multipath Information" sections | ||||
MUST be omitted (NULL). If no matching IP address is found, then | ||||
"IPMultipathType" field MUST be set to multipath information type | ||||
{0} and "IP Multipath Information" section MUST also be omitted | ||||
(NULL). If at least one matching IP address is found, then | ||||
"IPMultipathType" field MUST be set to appropriate multipath | ||||
information type {2, 4, 8} and "IP Multipath Information" section | ||||
MUST be included. | ||||
5.2. IP Based Load Balancer & Pushes ELI/EL | * The responder MUST reply with multipath information type {10}. | |||
o Responder MUST set {L=0, E=1} in DS flags. | * "Label Multipath Information" and "Associated Label Multipath | |||
Information" sections MUST be omitted (NULL). | ||||
o If multipath information type {9} is received, responder MUST | * If no matching IP address is found, then "IPMultipathType" | |||
field MUST be set to multipath information type {0} and "IP | ||||
Multipath Information" section MUST also be omitted (NULL). | ||||
* If at least one matching IP address is found, then | ||||
"IPMultipathType" field MUST be set to appropriate multipath | ||||
information type {2, 4, 8} and "IP Multipath Information" | ||||
section MUST be included. | ||||
6.2. IP Based Load Balancer & Pushes ELI/EL | ||||
o The responder MUST set {L=0, E=1} in DS flags. | ||||
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, 10} is received, responder MUST | o If multipath type {2, 4, 8, 10} is received, following procedures | |||
respond with multipath type {10}. See Section 8 for details of | are to be used: | |||
multipath type {10}. "Label Multipath Information" section MUST be | ||||
omitted (i.e. is it not there). IP address set specified in | ||||
received IP multipath information MUST be used to determine the | ||||
returning IP/Label pairs. If received multipath information type | ||||
was {10}, received "Label Multipath Information" sections MUST NOT | ||||
be used to determine the associated label portion of returning IP/ | ||||
Label pairs. If no matching IP address is found, then | ||||
"IPMultipathType" field MUST be set to multipath information type | ||||
{0} and "IP Multipath Information" section MUST be omitted. In | ||||
addition, "Assoc Label Multipath Length" MUST be set to 0, and | ||||
"Associated Label Multipath Information" section MUST also be | ||||
omitted. If at least one matching IP address is found, then | ||||
"IPMultipathType" field MUST be set to appropriate multipath | ||||
information type {2, 4, 8} and "IP Multipath Information" section | ||||
MUST be included. In addition, "Associated Label Multipath | ||||
Information" section MUST be populated with list of labels | ||||
corresponding to each IP address specified in "IP Multipath | ||||
Information" section. "Assoc Label Multipath Length" MUST be set | ||||
to a value representing length in octets of "Associated Label | ||||
Multipath Information" field. | ||||
5.3. Label Based Load Balancer & Not Pushing ELI/EL | * The responder MUST respond with multipath type {10}. See | |||
Section 9 for details of multipath type {10}. | ||||
o Responder MUST set {L=1, E=0} in DS flags. | * "Label Multipath Information" section MUST be omitted (i.e. is | |||
it not there). | ||||
o If multipath information type {2, 4, 8} is received, responder | * IP address set specified in received IP multipath information | |||
MUST be used to determine the returning IP/Label pairs. | ||||
* If received multipath information type was {10}, received | ||||
"Label Multipath Information" sections MUST NOT be used to | ||||
determine the associated label portion of returning IP/Label | ||||
pairs. | ||||
* If no matching IP address is found, then "IPMultipathType" | ||||
field MUST be set to multipath information type {0} and "IP | ||||
Multipath Information" section MUST be omitted. In addition, | ||||
"Assoc Label Multipath Length" MUST be set to 0, and | ||||
"Associated Label Multipath Information" section MUST also be | ||||
omitted. | ||||
* If at least one matching IP address is found, then | ||||
"IPMultipathType" field MUST be set to appropriate multipath | ||||
information type {2, 4, 8} and "IP Multipath Information" | ||||
section MUST be included. In addition, "Associated Label | ||||
Multipath Information" section MUST be populated with list of | ||||
labels corresponding to each IP address specified in "IP | ||||
Multipath Information" section. "Assoc Label Multipath Length" | ||||
MUST be set to a value representing length in octets of | ||||
"Associated Label Multipath Information" field. | ||||
6.3. Label Based Load Balancer & Not Pushing ELI/EL | ||||
o The responder MUST set {L=1, E=0} in DS flags. | ||||
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, responder MUST | o If multipath information type {9} is received, the responder MUST | |||
comply with [RFC4379] /[RFC6424] as updated by Section 3. | comply with [RFC4379] and [RFC6424] as updated by Section 3. | |||
o If multipath information type {10} is received, responder MUST | o If multipath information type {10} is received, following | |||
reply with multipath information type {10}. "IP Multipath | procedures are to be used: | |||
Information" and "Associated Label Multipath Information" sections | ||||
MUST be omitted (NULL). If no matching label is found, then | ||||
"LbMultipathType" field MUST be set to multipath information type | ||||
{0} and "Label Multipath Information" section MUST also be omitted | ||||
(NULL). If at least one matching label is found, then | ||||
"LbMultipathType" field MUST be set to appropriate multipath | ||||
information type {9} and "Label Multipath Information" section | ||||
MUST be included. | ||||
5.4. Label Based Load Balancer & Pushes ELI/EL | * The responder MUST reply with multipath information type {10}. | |||
o Responder MUST set {L=1, E=1} in DS flags. | * "IP Multipath Information" and "Associated Label Multipath | |||
Information" sections MUST be omitted (NULL). | ||||
o If multipath information type {2, 4, 8} is received, responder | * If no matching label is found, then "LbMultipathType" field | |||
MUST be set to multipath information type {0} and "Label | ||||
Multipath Information" section MUST also be omitted (NULL). | ||||
* If at least one matching label is found, then "LbMultipathType" | ||||
field MUST be set to appropriate multipath information type {9} | ||||
and "Label Multipath Information" section MUST be included. | ||||
6.4. Label Based Load Balancer & Pushes ELI/EL | ||||
o The responder MUST set {L=1, E=1} in DS flags. | ||||
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, 10} is received, responder MUST respond with | o If multipath type {9, 10} is received, following procedures are to | |||
multipath type {10}. "IP Multipath Information" section MUST be | be used: | |||
omitted. Label set specified in received label multipath | ||||
information MUST be used to determine the returning Label/Label | ||||
pairs. If received multipath information type was {10}, received | ||||
"Label Multipath Information" sections MUST NOT be used to | ||||
determine the associated label portion of returning Label/Label | ||||
pairs. If no matching label is found, then "LbMultipathType" | ||||
field MUST be set to multipath information type {0} and "Label | ||||
Multipath Information" section MUST be omitted. In addition, | ||||
"Assoc Label Multipath Length" MUST be set to 0, and "Associated | ||||
Label Multipath Information" section MUST also be omitted. If at | ||||
least one matching label is found, then "LbMultipathType" field | ||||
MUST be set to appropriate multipath information type {9} and | ||||
"Label Multipath Information" section MUST be included. In | ||||
addition, "Associated Label Multipath Information" section MUST be | ||||
populated with list of labels corresponding to each label | ||||
specified in "Label Multipath Information" section. "Assoc Label | ||||
Multipath Length" MUST be set to a value representing length in | ||||
octets of "Associated Label Multipath Information" field. | ||||
5.5. FAT MS-PW Stitching LSR | * The responder MUST respond with multipath type {10}. | |||
Stitching LSR that xconnects Flow-Aware Transport Pseudowires behave | * "IP Multipath Information" section MUST be omitted. | |||
in one of two ways: | ||||
o Load balances on previous flow label, and carries over same flow | * Label set specified in received label multipath information | |||
label. For this case, stitching LSR is to behave as procedures | MUST be used to determine the returning Label/Label pairs. | |||
described in Section 5.3. | ||||
o Load balances on previous flow label, and replaces flow label with | * If received multipath information type was {10}, received | |||
"Label Multipath Information" sections MUST NOT be used to | ||||
determine the associated label portion of returning Label/Label | ||||
pairs. | ||||
* If no matching label is found, then "LbMultipathType" field | ||||
MUST be set to multipath information type {0} and "Label | ||||
Multipath Information" section MUST be omitted. In addition, | ||||
"Assoc Label Multipath Length" MUST be set to 0, and | ||||
"Associated Label Multipath Information" section MUST also be | ||||
omitted. | ||||
* If at least one matching label is found, then "LbMultipathType" | ||||
field MUST be set to appropriate multipath information type {9} | ||||
and "Label Multipath Information" section MUST be included. In | ||||
addition, "Associated Label Multipath Information" section MUST | ||||
be populated with list of labels corresponding to each label | ||||
specified in "Label Multipath Information" section. "Assoc | ||||
Label Multipath Length" MUST be set to a value representing | ||||
length in octets of "Associated Label Multipath Information" | ||||
field. | ||||
6.5. Flow Aware MS-PW Stitching LSR | ||||
Stitching LSR that cross-connects Flow Aware Pseudowires behave in | ||||
one of two ways: | ||||
o Load balances on previous Flow Label, and carries over same Flow | ||||
Label. For this case, stitching LSR is to behave as procedures | ||||
described in Section 6.3. | ||||
o Load balances on previous Flow Label, and replaces Flow Label with | ||||
newly computed. For this case, stitching LSR is to behave as | newly computed. For this case, stitching LSR is to behave as | |||
procedures described in Section 5.4. | procedures described in Section 6.4. | |||
6. Entropy Label FEC | 7. Entropy Label FEC | |||
Entropy Label Indicator (ELI) is a reserved label that has no | 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 Nil FEC as Target FEC Stack sub-TLV to account | reserved range. Use Nil FEC as Target FEC Stack sub-TLV to account | |||
for ELI in a Target FEC Stack TLV. | for ELI in a Target FEC Stack TLV. | |||
Entropy Label (EL) is a special purpose label with label value being | Entropy Label (EL) is a special purpose label with label value being | |||
discretionary (i.e. label value may not be from the reserved range). | discretionary (i.e. label value may not be from the reserved range). | |||
For LSP verification mechanics to perform its purpose, it is | For LSP verification mechanics to perform its purpose, it is | |||
necessary for a Target FEC Stack sub-TLV to clearly describe EL, | necessary for a Target FEC Stack sub-TLV to clearly describe EL, | |||
particularly in the scenario where label stack does not carry ELI | particularly in the scenario where label stack does not carry ELI | |||
(ex: FAT-PW [RFC6391]). Therefore, this document defines a EL FEC to | (ex: Flow Aware Pseudowire [RFC6391]). Therefore, this document | |||
allow a Target FEC Stack sub-TLV to be added to the Target FEC Stack | defines a EL FEC to allow a Target FEC Stack sub-TLV to be added to | |||
to account for EL. | the Target FEC Stack to account for EL. | |||
The Length is 4. Labels are 20-bit values treated as numbers. | The Length is 4. Labels are 20-bit values treated as numbers. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Label | MBZ | | | Label | MBZ | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1: Entropy Label FEC | ||||
Label is the actual label value inserted in the label stack; the MBZ | Label is the actual label value inserted in the label stack; the MBZ | |||
fields MUST be zero when sent and ignored on receipt. | fields MUST be zero when sent and ignored on receipt. | |||
7. DS Flags: L and E | 8. DS Flags: L and E | |||
Two flags, L and E, are added in DS Flags field of the DSMAP/DDMAP | Two flags, L and E, are added in DS Flags field of the DSMAP/DDMAP | |||
TLVs. Both flags MUST NOT be set in echo request packets when | TLVs. Both flags MUST NOT be set in echo request packets when | |||
sending, and ignored when received. Zero, one or both new flags MUST | sending, and ignored when received. Zero, one or both new flags MUST | |||
be set in echo reply packets. | be set in echo reply packets. | |||
DS Flags | DS Flags | |||
-------- | -------- | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
skipping to change at page 12, line 7 | skipping to change at page 14, line 32 | |||
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 label and does not push ELI/ | o {L=1, E=0} LSR load balances based on label and does not push ELI/ | |||
EL. | EL. | |||
o {L=1, E=1} LSR load balances based on label and pushes ELI/EL. | o {L=1, E=1} LSR load balances based on label and pushes ELI/EL. | |||
8. New Multipath Information Type: 10 | 9. New Multipath Information Type: 10 | |||
One new multipath information type is added to be used in DSMAP/DDMAP | One new multipath information type is added to be used in DSMAP/DDMAP | |||
TLVs. New multipath type has value of 10. | TLVs. New multipath type has value of 10. | |||
Key Type Multipath Information | Key Type Multipath Information | |||
--- ---------------- --------------------- | --- ---------------- --------------------- | |||
10 IP and label set IP addresses and label prefixes | 10 IP and label set IP addresses and label prefixes | |||
Multipath type 10 is comprised of three sections. One section to | Multipath type 10 is comprised of three sections. One section to | |||
describe IP address set. One section to describe label set. One | describe IP address set. One section to describe label set. One | |||
skipping to change at page 12, line 45 | skipping to change at page 15, line 27 | |||
| (Label Multipath Information) | | | (Label Multipath Information) | | |||
~ ~ | ~ ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reserved(MBZ) | Assoc Label Multipath Length | | | Reserved(MBZ) | Assoc Label Multipath Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ ~ | ~ ~ | |||
| (Associated Label Multipath Information) | | | (Associated Label Multipath Information) | | |||
~ ~ | ~ ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: Multipath Information Type 10 | ||||
o IPMultipathType | o IPMultipathType | |||
* 0 when "IP Multipath Information" is omitted. Otherwise one of | * 0 when "IP Multipath Information" is omitted. Otherwise one of | |||
IP multipath information values: {2, 4, 8}. | IP multipath information values: {2, 4, 8}. | |||
o IP Multipath Information | o IP Multipath Information | |||
* This section is omitted when "IPMultipathType" is 0. Otherwise | * This section is omitted when "IPMultipathType" is 0. Otherwise | |||
this section reuses IP multipath information from [RFC4379]. | this section reuses IP multipath information from [RFC4379]. | |||
Specifically, multipath information for values {2, 4, 8} can be | Specifically, multipath information for values {2, 4, 8} can be | |||
used. | 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}. | |||
skipping to change at page 13, line 42 | skipping to change at page 16, line 24 | |||
Each specified associated label described in this section maps | Each specified associated label described in this section maps | |||
to specific IP address OR label described in the "IP Multipath | to specific IP address OR label described in the "IP Multipath | |||
Information" section or "Label Multipath Information" section. | Information" section or "Label Multipath Information" section. | |||
For example, if 3 IP addresses are specified in the "IP | For example, if 3 IP addresses are specified in the "IP | |||
Multipath Information" section, then there MUST be 3 labels | Multipath Information" section, then there MUST be 3 labels | |||
described in this section. First label maps to the lowest IP | described in this section. First label maps to the lowest IP | |||
address specified, second label maps to the second lowest IP | address specified, second label maps to the second lowest IP | |||
address specified and third label maps to the third lowest IP | address specified and third label maps to the third lowest IP | |||
address specified. | address specified. | |||
9. Unsupported Cases | 10. Supported and Unsupported Cases | |||
There are couple of scenarios where LSP path tracing mechanics are | MPLS architecture never defined strict rules on how implementations | |||
not supported in this draft revision. | are to identify hash "keys" for load balancing purpose. As result, | |||
implementations may be of following load balancer types: | ||||
o When one or more LSP transit node(s) performs label based load | 1. IP Based Load Balancer. | |||
balancing on a label that is not bottom-of-stack label when | 2. Label Based Load Balancer. | |||
Entropy Label Indicator is not included. | 3. Label and IP Based Load Balancer. | |||
o When one or more LSP transit node(s) performs label based load | For cases (2) and (3), implementation can include different sets of | |||
balancing on a label other than Entropy Label when Entropy Label | labels from the label stack for load balancing purpose. Thus | |||
Indicator and Entropy Label pair is included. | following sub-cases are possible: | |||
10. Security Considerations | a. Entire label stack. | |||
b. Top N labels from label stack where number of labels in label | ||||
stack is >N. | ||||
c. Bottom N labels from label stack where number of labels in label | ||||
stack is >N. | ||||
In a scenario where there is one Flow Label or Entropy Label present | ||||
in the label stack, following further cases are possible for (2b), | ||||
(2c), (3b) and (3c): | ||||
1. N labels from label stack include Flow Label or Entropy Label. | ||||
2. N labels from label stack does not include Flow Label or Entropy | ||||
Label. | ||||
Also in a scenario where there are multiple Entropy Labels present in | ||||
the label stack, it is possible for implementations to employ | ||||
deviating techniques: | ||||
o Search for entropy stops at the first Entropy Label. | ||||
o Search for entropy includes any Entropy Label found plus continues | ||||
to search for entropy in the label stack. | ||||
Furthermore, handling of reserved (i.e. special) labels varies among | ||||
implementations: | ||||
o Reserved labels are used in the hash as any other label would be | ||||
(a bad practice). | ||||
o Reserved labels are skipped over and, for implementations limited | ||||
to N labels, the reserved labels do not count towards the limit of | ||||
N. | ||||
o Reserved labels are skipped over and, for implementations limited | ||||
to N labels, the reserved labels count towards the limit of N. | ||||
It is important to point this out since presence of GAL will affect | ||||
those implementations which include reserved labels for load | ||||
balancing purpose. | ||||
As can be seen from above, there are many flavors of potential load | ||||
balancing implementations. Attempting for any OAM tools to support | ||||
ECMP discovery and traversal over all flavors of such will require | ||||
fairly complex procedures and implementations to support those | ||||
complex procedures. Complexities in OAM tools will produce minimal | ||||
benefits if majority of implementations are expected to employ small | ||||
subset of cases described above. | ||||
o Section 4.3 of [RFC6790] states that implementations, for load | ||||
balancing purpose, parsing beyond the label stack after finding | ||||
Entropy Label is "limited incremental value". Therefore, it is | ||||
expected that most implementations will be of types "IP Based Load | ||||
Balancer" or "Label Based Load Balancer". | ||||
o Section 2.4.5.1 of [I-D.ietf-mpls-forwarding] recommends that | ||||
search for entropies from the label stack should terminate upon | ||||
finding the first Entropy Label. Therefore, it is expected that | ||||
implementations will only include the first (top-most) Entropy | ||||
Label when there are multiple Entropy Labels in the label stack. | ||||
o It is expected that, in most cases, number of labels in the label | ||||
stack will not exceed number of labels (N) which implementations | ||||
can include for load balancing purpose. | ||||
o It is expected that labels in the label stack, besides Flow Label | ||||
and Entropy Label, are constant for the lifetime of a single LSP | ||||
multipath traceroute operation. Therefore, deviating load | ||||
balancing implementations with respect to reserved labels should | ||||
not affect this tool. | ||||
Thus [RFC4379], [RFC6424] and this document will support cases (1) | ||||
and (2a1), where only the first (top-most) Entropy Label is included | ||||
when there are multiple Entropy Labels in the label stack. | ||||
11. Security Considerations | ||||
This document extends LSP Traceroute mechanism to discover and | This document extends LSP Traceroute mechanism to discover and | |||
exercise ECMP paths when LSP uses ELI/EL in label stack. Additional | exercise ECMP paths when LSP uses ELI/EL in label stack. Additional | |||
processings are required for responder and initiator nodes. | processings are required for responder and initiator nodes. | |||
Responder node that pushes ELI/EL will need to compute and return | Responder node that pushes ELI/EL will need to compute and return | |||
multipath data including associated EL. Initiator node will need to | multipath data including associated EL. Initiator node will need to | |||
store and handle both IP multipath and label multipath information, | store and handle both IP multipath and label multipath information, | |||
and include destination IP addresses and/or ELs in MPLS echo request | and include destination IP addresses and/or ELs in MPLS echo request | |||
packet as well as in carried multipath information to downstream | packet as well as in carried multipath information to downstream | |||
nodes. Due to additional processing, it is critical that proper | nodes. Due to additional processing, it is critical that proper | |||
security measures described in [RFC4379] and [RFC6424] are followed. | security measures described in [RFC4379] and [RFC6424] are followed. | |||
11. IANA Considerations | 12. IANA Considerations | |||
11.1. New Sub-Registries | 12.1. New Sub-Registries | |||
[RFC4379] defines the Downstream Mapping TLV, which has the Type 2 | [RFC4379] defines the Downstream Mapping TLV, which has the Type 2 | |||
assigned from the "Multi-Protocol Label Switching (MPLS) Label | assigned from the "Multi-Protocol Label Switching (MPLS) Label | |||
Switched Paths (LSPs) Ping Parameters - TLVs" registry. [RFC6424] | Switched Paths (LSPs) Ping Parameters - TLVs" registry. [RFC6424] | |||
defines the Downstream Detailed Mapping TLV, which has the Type 20 | defines the Downstream Detailed Mapping TLV, which has the Type 20 | |||
assigned from the "Multi-Protocol Label Switching (MPLS) Label | assigned from the "Multi-Protocol Label Switching (MPLS) Label | |||
Switched Paths (LSPs) Ping Parameters - TLVs" registry. Both TLVs | Switched Paths (LSPs) Ping Parameters - TLVs" registry. Both TLVs | |||
shares two fields: "DS Flags" and "Multipath Type". This document | shares two fields: "DS Flags" and "Multipath Type". This document | |||
requires allocation of new values in both the "DS Flags" and | requires allocation of new values in both the "DS Flags" and | |||
"Multipath Type" fields, which are not maintained by IANA today. | "Multipath Type" fields, which are not maintained by IANA today. | |||
Therefore, this document requests IANA to create new registries | Therefore, this document requests IANA to create new registries | |||
within [IANA-MPLS-LSP-PING] protocol to maintain "DS Flags" and | within [IANA-MPLS-LSP-PING] protocol to maintain "DS Flags" and | |||
"Multipath Type" fields. Name of registries and initial values are | "Multipath Type" fields. Name of registries and initial values are | |||
described in immediate sub-sections to follow. | described in immediate sub-sections to follow. | |||
11.1.1. DS Flags | 12.1.1. DS Flags | |||
Bit number Name Reference | Bit number Name Reference | |||
---------- ---------------------------------------- --------- | ---------- ---------------------------------------- --------- | |||
7 N: Treat as a Non-IP Packet RFC4379 | 7 N: Treat as a Non-IP Packet RFC4379 | |||
6 I: Interface and Label Stack Object Request RFC4379 | 6 I: Interface and Label Stack Object Request RFC4379 | |||
5 E: ELI/EL push indicator this document | 5 E: ELI/EL push indicator this document | |||
4 L: Label based load balance indicator this document | 4 L: Label based load balance indicator this document | |||
3-0 Unassigned | 3-0 Unassigned | |||
Assignments of DS Flags are via Standards Action [RFC5226] or IESG | Assignments of DS Flags are via Standards Action [RFC5226] or IESG | |||
Approval [RFC5226]. | Approval [RFC5226]. | |||
Note that "DS Flags" is a field included in two TLVs defined in | Note that "DS Flags" is a field included in two TLVs defined in | |||
"Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) | "Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) | |||
Ping Parameters - TLVs" registry: Downstream Mapping TLV (value 2) | Ping Parameters - TLVs" registry: Downstream Mapping TLV (value 2) | |||
and Downstream Detailed Mapping TLV (value 20). Modification to "DS | and Downstream Detailed Mapping TLV (value 20). Modification to "DS | |||
Flags" registry will affect both TLVs. | Flags" registry will affect both TLVs. | |||
11.1.2. Multipath Type | 12.1.2. Multipath Type | |||
Value Meaning Reference | Value Meaning Reference | |||
---------- ---------------------------------------- --------- | ---------- ---------------------------------------- --------- | |||
0 no multipath RFC4379 | 0 no multipath RFC4379 | |||
1 Unassigned | 1 Unassigned | |||
2 IP address RFC4379 | 2 IP address RFC4379 | |||
3 Unassigned | 3 Unassigned | |||
4 IP address range RFC4379 | 4 IP address range RFC4379 | |||
5-7 Unassigned | 5-7 Unassigned | |||
8 Bit-masked IP address set RFC4379 | 8 Bit-masked IP address set RFC4379 | |||
skipping to change at page 15, line 35 | skipping to change at page 19, line 45 | |||
Assignments of Multipath Type are via IETF Review [RFC5226] or IESG | Assignments of Multipath Type are via IETF Review [RFC5226] or IESG | |||
Approval [RFC5226]. | Approval [RFC5226]. | |||
Note that "Multipath Type" is a field included in two TLVs defined in | Note that "Multipath Type" is a field included in two TLVs defined in | |||
"Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) | "Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) | |||
Ping Parameters - TLVs" registry: Downstream Mapping TLV (value 2) | Ping Parameters - TLVs" registry: Downstream Mapping TLV (value 2) | |||
and Downstream Detailed Mapping TLV (value 20). Modification to | and Downstream Detailed Mapping TLV (value 20). Modification to | |||
"Multipath Type" registry will affect both TLVs. | "Multipath Type" registry will affect both TLVs. | |||
11.2. Entropy Label FEC | 12.2. Entropy Label FEC | |||
IANA is requested to assign a new sub-TLV from the "Sub-TLVs for TLV | IANA is requested to assign a new sub-TLV from the "Sub-TLVs for TLV | |||
Types 1 and 16" section from "Multi-Protocol Label Switching (MPLS) | Types 1 and 16" section from "Multi-Protocol Label Switching (MPLS) | |||
Label Switched Paths (LSPs) Ping Parameters - TLVs" registry. | Label Switched Paths (LSPs) Ping Parameters - TLVs" registry. | |||
Sub-Type Sub-TLV Name Reference | Sub-Type Sub-TLV Name Reference | |||
-------- ------------ --------- | -------- ------------ --------- | |||
TBD1 Entropy Label FEC this document | TBD1 Entropy Label FEC this document | |||
12. Acknowledgements | 13. Acknowledgements | |||
Authors would like to thank Loa Andersson for performing thorough | Authors would like to thank Loa Andersson, Curtis Villamizar, Daniel | |||
review and providing valuable comments. | King and Sriganesh Kini for performing thorough review and providing | |||
valuable comments. | ||||
13. Contributing Authors | 14. Contributing Authors | |||
Nagendra Kumar | Nagendra Kumar | |||
Cisco Systems | Cisco Systems | |||
Email: naikumar@cisco.com | Email: naikumar@cisco.com | |||
14. References | 15. References | |||
14.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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol | [RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol | |||
Label Switched (MPLS) Data Plane Failures", RFC 4379, | Label Switched (MPLS) Data Plane Failures", RFC 4379, | |||
February 2006. | February 2006. | |||
[RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and | [RFC6790] Kompella, K., Drake, J., Amante, S., Henderickx, W., and | |||
L. Yong, "The Use of Entropy Labels in MPLS Forwarding", | L. Yong, "The Use of Entropy Labels in MPLS Forwarding", | |||
RFC 6790, November 2012. | RFC 6790, November 2012. | |||
14.2. Informative References | 15.2. Informative References | |||
[I-D.ietf-mpls-forwarding] | ||||
Villamizar, C., Kompella, K., Amante, S., Malis, A., and | ||||
C. Pignataro, "MPLS Forwarding Compliance and Performance | ||||
Requirements", draft-ietf-mpls-forwarding-09 (work in | ||||
progress), March 2014. | ||||
[I-D.ravisingh-mpls-el-for-seamless-mpls] | [I-D.ravisingh-mpls-el-for-seamless-mpls] | |||
Singh, R., Shen, Y., and J. Drake, "Entropy label for | Singh, R., Shen, Y., and J. Drake, "Entropy label for | |||
seamless MPLS", draft-ravisingh-mpls-el-for-seamless- | seamless MPLS", draft-ravisingh-mpls-el-for-seamless- | |||
mpls-01 (work in progress), October 2013. | mpls-01 (work in progress), October 2013. | |||
[IANA-MPLS-LSP-PING] | [IANA-MPLS-LSP-PING] | |||
IANA, "Multi-Protocol Label Switching (MPLS) Label | IANA, "Multi-Protocol Label Switching (MPLS) Label | |||
Switched Paths (LSPs) Ping Parameters", | Switched Paths (LSPs) Ping Parameters", | |||
<http://www.iana.org/assignments/mpls-lsp-ping-parameters/ | <http://www.iana.org/assignments/mpls-lsp-ping-parameters/ | |||
skipping to change at line 770 | skipping to change at page 21, line 40 | |||
George Swallow | George Swallow | |||
Cisco Systems | Cisco Systems | |||
Email: swallow@cisco.com | Email: swallow@cisco.com | |||
Carlos Pignataro | Carlos Pignataro | |||
Cisco Systems | Cisco Systems | |||
Email: cpignata@cisco.com | Email: cpignata@cisco.com | |||
Andrew G. Malis | ||||
Huawei Technologies | ||||
Email: agmalis@gmail.com | ||||
Sam Aldrin | ||||
Huawei Technologies | ||||
Email: aldrin.ietf@gmail.com | ||||
End of changes. 83 change blocks. | ||||
235 lines changed or deleted | 431 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |