draft-ietf-mpls-lsp-ping-01.txt   draft-ietf-mpls-lsp-ping-02.txt 
Network Working Group K. Kompella (Juniper) Network Working Group K. Kompella (Juniper)
Internet Draft P. Pan (Ciena) Internet Draft P. Pan (Ciena)
draft-ietf-mpls-lsp-ping-01.txt N. Sheth (Juniper) draft-ietf-mpls-lsp-ping-02.txt N. Sheth (Juniper)
Category: Standards Track D. Cooper (Global Crossing) Category: Standards Track D. Cooper (Global Crossing)
Expires: April 2003 G. Swallow (Cisco) Expires: September 2003 G. Swallow (Cisco)
S. Wadhwa (Juniper) S. Wadhwa (Juniper)
R. Bonica (WorldCom) R. Bonica (WorldCom)
October 2002 March 2003
Detecting MPLS Data Plane Liveness Detecting MPLS Data Plane Liveness
*** DRAFT *** *** DRAFT ***
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
material or to cite them other than as ``work in progress.'' material or to cite them other than as ``work in progress.''
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2002). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract Abstract
This document describes a simple and efficient mechanism that can be This document describes a simple and efficient mechanism that can be
used to detect data plane failures in Multi-Protocol Label Switching used to detect data plane failures in Multi-Protocol Label Switching
(MPLS) Label Switched Paths (LSPs). There are two parts to this (MPLS) Label Switched Paths (LSPs). There are two parts to this
document: information carried in an MPLS "echo request" and "echo document: information carried in an MPLS "echo request" and "echo
reply" for the purposes of fault detection and isolation; and reply" for the purposes of fault detection and isolation; and
mechanisms for reliably sending the echo reply. mechanisms for reliably sending the echo reply.
skipping to change at page 3, line 34 skipping to change at page 3, line 34
To avoid potential Denial of Service attacks, it is recommended to To avoid potential Denial of Service attacks, it is recommended to
regulate the MPLS ping traffic going to the control plane. A rate regulate the MPLS ping traffic going to the control plane. A rate
limiter should be applied to the well-known UDP port defined below. limiter should be applied to the well-known UDP port defined below.
1.1. Conventions 1.1. Conventions
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 [KEYWORDS]. document are to be interpreted as described in RFC 2119 [KEYWORDS].
1.2. Changes since last revision 1.2. Structure of this document
The body of this memo contains four main parts: motivation, MPLS echo
request/reply packet format, MPLS ping operation, and a reliable
return path. It is suggested that first-time readers skip the actual
packet formats and read the Theory of Operation first; the document
is structured the way it is to avoid forward references.
The last section (reliable return path for RSVP LSPs) may be removed
in a future revision.
1.3. Changes since last revision
(This section to be removed before publication.) (This section to be removed before publication.)
- Packet format changed; Version Number field added - Clarified definition of downstream router/interface.
- Reply modes: "don't reply" added - Added text for multipath (mostly just taken from Curtis)
- Reply flags removed - Mandated the use of Router Alert for sending echo requests
- Return codes extended - If reply mode says IPv4 with router alert, and the reply is
- RSVP session formats modified labeled, the top label MUST be the router alert label
- VPN IPv4/v6 formats defined - Expanded the Theory of Operation, and added a section on ECMP
- L2 VPN endpoint and L2 circuits defined - Expanded checks on receipt of echo requests, per email on list
- Downstream mapping format changed
- Pad and Error Code TLVs introduced 1.4. Issues remaining
- Aspects dealing with CR-LDP moved to non-normative appendix
- IPR notices and Full Copyright Statement (per 2026) added (This section to be removed before publication.)
- other nits to better conform to 2223bis
- Monitoring mode
- Finalize ECMP format and semantics
- Keep or remove replies via control plane?
- Normalize error codes
2. Motivation 2. Motivation
When an LSP fails to deliver user traffic, the failure cannot always When an LSP fails to deliver user traffic, the failure cannot always
be detected by the MPLS control plane. There is a need to provide a be detected by the MPLS control plane. There is a need to provide a
tool that would enable users to detect such traffic "black holes" or tool that would enable users to detect such traffic "black holes" or
misrouting within a reasonable period of time; and a mechanism to misrouting within a reasonable period of time; and a mechanism to
isolate faults. isolate faults.
In this document, we describe a mechanism that accomplishes these In this document, we describe a mechanism that accomplishes these
goals. This mechanism is modeled after the ping/traceroute goals. This mechanism is modeled after the ping/traceroute paradigm:
philosophy: ping (ICMP echo request [ICMP]) is used for connectivity ping (ICMP echo request [ICMP]) is used for connectivity checks, and
checks, and traceroute is used for hop-by-hop fault localization as traceroute is used for hop-by-hop fault localization as well as path
well as path tracing. This document specifies a "ping mode" and a tracing. This document specifies a "ping mode" and a "traceroute"
"traceroute" mode for testing MPLS LSPs. mode for testing MPLS LSPs.
The basic idea is to test that packets that belong to a particular The basic idea is to test that packets that belong to a particular
Forwarding Equivalence Class (FEC) actually end their MPLS path on an Forwarding Equivalence Class (FEC) actually end their MPLS path on an
LSR that is an egress for that FEC. This document proposes that this LSR that is an egress for that FEC. This document proposes that this
test be carried out by sending a packet (called an "MPLS echo test be carried out by sending a packet (called an "MPLS echo
request") along the same data path as other packets belonging to this request") along the same data path as other packets belonging to this
FEC. An MPLS echo request also carries information about the FEC FEC. An MPLS echo request also carries information about the FEC
whose MPLS path is being verified. This echo request is forwarded whose MPLS path is being verified. This echo request is forwarded
just like any other packet belonging to that FEC. In "ping" mode just like any other packet belonging to that FEC. In "ping" mode
(basic connectivity check), the packet should reach the end of the (basic connectivity check), the packet should reach the end of the
skipping to change at page 5, line 42 skipping to change at page 5, line 47
. . . .
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Version Number is currently 1. (Note: the Version Number is to The Version Number is currently 1. (Note: the Version Number is to
be incremented whenever a change is made that affects the ability of be incremented whenever a change is made that affects the ability of
an implementation to correctly parse or process an MPLS echo an implementation to correctly parse or process an MPLS echo
request/reply. These changes include any syntactic or semantic request/reply. These changes include any syntactic or semantic
changes made to any of the fixed fields, or to any TLV or sub-TLV changes made to any of the fixed fields, or to any TLV or sub-TLV
assignment or format that is defined at a certain version number. assignment or format that is defined at a certain version number.
The Version Number may not need to be changed if a TLV or sub-TLV is The Version Number may not need to be changed if an optional TLV or
added.) sub-TLV is added.)
The Message Type is one of the following: The Message Type is one of the following:
Value Meaning Value Meaning
----- ------- ----- -------
1 MPLS Echo Request 1 MPLS Echo Request
2 MPLS Echo Reply 2 MPLS Echo Reply
The Reply Mode can take one of the following values: The Reply Mode can take one of the following values:
skipping to change at page 8, line 23 skipping to change at page 8, line 31
on an egress LSR with loopback address 192.168.1.1 (learned via LDP), on an egress LSR with loopback address 192.168.1.1 (learned via LDP),
X has two choices. X can send an MPLS echo request with a FEC Stack X has two choices. X can send an MPLS echo request with a FEC Stack
TLV with a single FEC of type VPN IPv4 prefix with a prefix of 10/8 TLV with a single FEC of type VPN IPv4 prefix with a prefix of 10/8
with the Route Distinguisher for VPN foo. Alternatively, X can send with the Route Distinguisher for VPN foo. Alternatively, X can send
a FEC Stack TLV with two FECs, the first of type LDP IPv4 with a a FEC Stack TLV with two FECs, the first of type LDP IPv4 with a
prefix of 192.168.1.1/32 and the second of type of IP VPN with a prefix of 192.168.1.1/32 and the second of type of IP VPN with a
prefix 10/8 in VPN foo. In either case, the MPLS echo request would prefix 10/8 in VPN foo. In either case, the MPLS echo request would
have a label stack of <1001, 23456>. (Note: in this example, 1001 is have a label stack of <1001, 23456>. (Note: in this example, 1001 is
the "outer" label and 23456 is the "inner" label.) the "outer" label and 23456 is the "inner" label.)
3.1.1. IPv4 Prefix 3.1.1. LDP IPv4 Prefix
The value consists of four octets of an IPv4 prefix followed by one The value consists of four octets of an IPv4 prefix followed by one
octet of prefix length in bits. The IPv4 prefix is in network byte octet of prefix length in bits. The IPv4 prefix is in network byte
order. See [LDP] for an example of a Mapping for an IPv4 FEC. order. See [LDP] for an example of a Mapping for an IPv4 FEC.
3.1.2. IPv6 Prefix 3.1.2. LDP IPv6 Prefix
The value consists of sixteen octets of an IPv6 prefix followed by The value consists of sixteen octets of an IPv6 prefix followed by
one octet of prefix length in bits. The IPv6 prefix is in network one octet of prefix length in bits. The IPv6 prefix is in network
byte order. byte order. See [LDP] for an example of a Mapping for an IPv6 FEC.
3.1.3. RSVP IPv4 Session 3.1.3. RSVP IPv4 Session
The value has the format below. The value fields are taken from The value has the format below. The value fields are taken from
[RFC3209, sections 4.6.1.1 and 4.6.2.1]. [RFC3209, sections 4.6.1.1 and 4.6.2.1].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 tunnel end point address | | IPv4 tunnel end point address |
skipping to change at page 11, line 19 skipping to change at page 11, line 26
The Downstream Mapping is an optional TLV in an echo request. The The Downstream Mapping is an optional TLV in an echo request. The
Length is 12 + 4*N octets, where N is the number of Downstream Length is 12 + 4*N octets, where N is the number of Downstream
Labels. The Value of a Downstream Mapping has the following format: Labels. The Value of a Downstream Mapping has the 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Downstream IPv4 Router ID | | Downstream IPv4 Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MTU | Address Type | Reserved | | MTU | Address Type | DS Index |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface Address | | Downstream Interface Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hash Key Type | Depth Limit | Multipath Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Address or Next Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. (more IP Addresses or Next Labels) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Downstream Label | Protocol | | Downstream Label | Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. . . .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Downstream Label | Protocol | | Downstream Label | Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The MTU is the largest MPLS frame (including label stack) that fits The MTU is the largest MPLS frame (including label stack) that fits
on the interface to the Downstream LSR. The Address Type is one of: on the interface to the Downstream LSR. The Downstream Interface
Address Type is one of:
Type # Address Type Type # Address Type
------ ------------ ------ ------------
1 IPv4 1 IPv4
2 Unnumbered 2 Unnumbered
'Protocol' is taken from the following table: 'Protocol' is taken from the following table:
Protocol # Signaling Protocol Protocol # Signaling Protocol
---------- ------------------ ---------- ------------------
0 Unknown 0 Unknown
1 Static 1 Static
2 BGP 2 BGP
3 LDP 3 LDP
4 RSVP-TE 4 RSVP-TE
5 Reserved; see Appendix 5 Reserved; see Appendix
The notion of "downstream router" should be explained. Consider an The notion of "downstream router" and "downstream interface" should
LSR X. If a packet with outermost label L and TTL n>1 arrived at X be explained. Consider an LSR X. If a packet that was originated
on interface I, X must be able to compute which LSRs could receive with TTL n>1 arrived with outermost label L at LSR X, X must be able
the packet with TTL=n+1, and what label they would see. (It is to compute which LSRs could receive the packet if it was originated
outside the scope of this document to specify how this computation with TTL=n+1, over which interface the request would arrive and what
may be done.) The set of these LSRs are the downstream routers (and label stack those LSRs would see. (It is outside the scope of this
their corresponding labels) for X with respect to L. document to specify how this computation is done.) The set of these
LSRs/interfaces are the downstream routers/interfaces (and their
corresponding labels) for X with respect to L. Each pair of
downstream router and interface requires a separate Downstream
Mapping to be added to the reply, and is given a unique DS Index.
(Note that there are multiple Downstream Label fields in each TLV as
the incoming label L may be swapped with a label stack.)
The case where X is the LSR originating the echo request is a special The case where X is the LSR originating the echo request is a special
case. X needs to figure out what LSRs would receive a labelled case. X needs to figure out what LSRs would receive the MPLS echo
packet with TTL=1 when X tries to send a packet to the FEC Stack that request for a given FEC Stack that X originates with TTL=1.
is being pinged.
The set of downstream routers at X may be alternative paths (see the
discussion below on ECMP) or simultaneous paths (e.g., for MPLS
multicast). In the former case, the Multipath sub-field is used as a
hint to the sender as to how it may influence the choice of these
alternatives. The Multipath Length is the total length of the
Multipath field (i.e., 4 + 4*M, where M is the number of IP
Address/Next Label fields). The Hash Key Type is taken from the
following table:
Hash Key Type IP Address or Next Label
-------------------- ------------------------
0 no multipath (nothing; M = 0)
1 label M labels
2 IP address M IP addresses
3 label range M/2 low/high label pairs
4 IP address range M/2 low/high address pairs
5 no more labels (nothing; M = 0)
6 All IP addresses (nothing; M = 0)
7 no match (nothing; M = 0)
The Depth Limit is applicable only to a label stack, and is the
maximum number of labels considered in the hash; this SHOULD be set
to zero if unspecified or unlimited.
IP Address or Next Label is an IP address from the range 127/8 or an
next label which will exercise this particular path.
The semantics of the Hash Key Type and IP Address/Next Label are as
follows:
type 1 - a list of single labels is provided, any one of which
will
cause the hash to match this MP path.
type 2 - a list of single IP addresses is provided, any one of
which will cause the hash to match this MP path.
type 3 - a list of label ranges is provided, any one of which will
cause the hash to match this MP path.
type 4 - a list of IP address ranges is provided, any one of which
will cause the hash to match this MP path.
type 5 - if no more labels are provided on the stack, this MP path
will apply (can only appear once).
type 6 - Any IP addresses matches. Undertlying labels may go
elsewhere, but all IP takes only one MP path (can only
appear once).
type 7 - no matches are possible given the set of "Multipath
Exercise TLV" provided by prior hops.
If prior hops provide a "Downstream Multipath Mapping TLV" the labels
and IP addresses should be picked from the set provided in prior
"Multipath Exercise TLV" or "Hash Key Type" of 7 used.
3.3. Pad TLV 3.3. Pad TLV
The value part of the Pad TLV contains a variable number (>= 1) of The value part of the Pad TLV contains a variable number (>= 1) of
octets. The first octet takes values from the following table; all octets. The first octet takes values from the following table; all
the other octets (if any) are ignored. The receiver SHOULD verify the other octets (if any) are ignored. The receiver SHOULD verify
that the TLV is received in its entirety, but otherwise ignores the that the TLV is received in its entirety, but otherwise ignores the
contents of this TLV, apart from the first octet. contents of this TLV, apart from the first octet.
Value Meaning Value Meaning
skipping to change at page 12, line 38 skipping to change at page 14, line 13
3-255 Reserved for future use 3-255 Reserved for future use
3.4. Error Code 3.4. Error Code
The Error Code TLV is currently not defined; its purpose is to The Error Code TLV is currently not defined; its purpose is to
provide a mechanism for a more elaborate error reporting structure, provide a mechanism for a more elaborate error reporting structure,
should the reason arise. should the reason arise.
4. Theory of Operation 4. Theory of Operation
4.1. Sending an MPLS Echo Request An MPLS echo request is used to test a particular LSP. The LSP to be
tested is identified by the "FEC Stack"; for example, if the LSP was
set up via LDP, and is to an egress IP address of 10.1.1.1, the FEC
stack contains a single element, namely, an LDP IPv4 prefix sub-TLV
with value 10.1.1.1/32. If the LSP being tested is an RSVP LSP, the
FEC stack consists of a single element that captures the RSVP Session
and Sender Template which uniquely identifies the LSP.
FEC stacks can be more complex. For example, one may wish to test a
VPN IPv4 prefix of 10.1/8 that is tunneled over an LDP LSP with
egress 10.10.1.1. The FEC stack would then contain two sub-TLVs, the
first being a VPN IPv4 prefix, and the second being an LDP IPv4
prefix. If the underlying (LDP) tunnel were not known, or was
considered irrelevant, the FEC stack could be a single element with
just the VPN IPv4 sub-TLV.
When an MPLS echo request is received, the receiver is expected to do
a number of tests that verify that the control plane and data plane
are both healthy (for the FEC stack being pinged), and that the two
planes are in sync.
4.1. Dealing with Equal-Cost Multi-Path (ECMP)
LSPs need not be simple point-to-point tunnels. Frequently, a single
LSP may originate at several ingresses, and terminate at several
egresses; this is very common with LDP LSPs. LSPs for a given FEC
may also have multiple "next hops" at transit LSRs. At an ingress,
there may also be several different LSPs to choose from to get to the
desired endpoint. Finally, LSPs may have backup paths, detour paths
and other alternative paths to take should the primary LSP go down.
To deal with the last two first: it is assumed that the LSR sourcing
MPLS echo requests can force the echo request into any desired LSP,
so choosing among multiple LSPs at the ingress is not an issue. The
problem of probing the various flavors of backup paths that will
typically not be used for forwarding data unless the primary LSP is
down will not be addressed here.
Since the actual LSP and path that a given packet may take may not be
known a priori, it is useful if MPLS echo requests can exercise all
possible paths. This, while desirable, may not be practical, because
the algorithms that a given LSR uses to distribute packets over
alternative paths may be proprietary.
To achieve some degree of coverage of alternate paths, there is a
certain lattitude in choosing the destination IP address and source
UDP port for an MPLS echo request. This is clearly not sufficient;
in the case of traceroute, more lattitude is offered by means of the
"Multipath Exercise" sub-TLV of the Downstream Mapping TLV. This is
used as follows. An ingress LSR periodically sends an MPLS
traceroute message to determine whether there are multipaths for a
given LSP. If so, each hop will provide some information how each of
its downstreams can be exercised. The ingress can then send MPLS
echo requests that exercise these paths. If several transit LSRs
have ECMP, the ingress may attempt to compose these to exercise all
possible paths. However, full coverage may not be possible.
4.2. Sending an MPLS Echo Request
An MPLS echo request is a (possibly) labelled UDP packet. The IP An MPLS echo request is a (possibly) labelled UDP packet. The IP
header is set as follows: the source IP address is a routable address header is set as follows: the source IP address is a routable address
of the sender; the destination IP address is a (randomly chosen) of the sender; the destination IP address is a (randomly chosen)
address from 127/8; the IP TTL is set to 1. The source UDP port is address from 127/8; the IP TTL is set to 1. The source UDP port is
chosen by the sender; the destination UDP port is set to 3503 chosen by the sender; the destination UDP port is set to 3503
(assigned by IANA for MPLS echo requests). If the echo request is (assigned by IANA for MPLS echo requests). The Router Alert option
labelled, the MPLS TTL on all the labels except the outermost should is set in the IP header. If the echo request is labelled, the MPLS
be set to 1. TTL on all the labels except the outermost should be set to 1.
In "ping" mode (end-to-end connectivity check), the TTL in the In "ping" mode (end-to-end connectivity check), the TTL in the
outermost label is set to 255. In "traceroute" mode (fault isolation outermost label is set to 255. In "traceroute" mode (fault isolation
mode), the TTL is set successively to 1, 2, .... mode), the TTL is set successively to 1, 2, ....
The sender chooses a Sender's Handle, and a Sequence Number. When The sender chooses a Sender's Handle, and a Sequence Number. When
sending subsequent MPLS echo requests, the sender SHOULD increment sending subsequent MPLS echo requests, the sender SHOULD increment
the sequence number by 1. However, a sender MAY choose to send a the sequence number by 1. However, a sender MAY choose to send a
group of echo requests with the same sequence number to improve the group of echo requests with the same sequence number to improve the
chance of arrival of at least one packet with that sequence number. chance of arrival of at least one packet with that sequence number.
skipping to change at page 13, line 25 skipping to change at page 16, line 8
An MPLS echo request MUST have a FEC Stack TLV. Also, the Reply Mode An MPLS echo request MUST have a FEC Stack TLV. Also, the Reply Mode
must be set to the desired reply mode; the Return Code and Subcode must be set to the desired reply mode; the Return Code and Subcode
are set to zero. are set to zero.
In the "traceroute" mode, the echo request SHOULD contain one or more In the "traceroute" mode, the echo request SHOULD contain one or more
Downstream Mapping TLVs. For TTL=1, all the downstream routers (and Downstream Mapping TLVs. For TTL=1, all the downstream routers (and
corresponding labels) for the sender with respect to the FEC Stack corresponding labels) for the sender with respect to the FEC Stack
being pinged SHOULD be sent in the echo request. For n>1, the being pinged SHOULD be sent in the echo request. For n>1, the
Downstream Mapping TLVs from the echo reply for TTL=(n-1) are copied Downstream Mapping TLVs from the echo reply for TTL=(n-1) are copied
to the echo request with TTL=n. to the echo request with TTL=n; the sender MAY choose to reduce the
size of a "Downstream Multipath Mapping TLV" when copying into the
next echo request as long as the Hash Key Type matching the label or
IP address used to exercise the current MP is still present.
4.2. Receiving an MPLS Echo Request 4.3. Receiving an MPLS Echo Request
An LSR L that receives an MPLS echo request first parses the packet An LSR X that receives an MPLS echo request first parses the packet
to ensure that it is a well-formed packet, and that the TLVs are to ensure that it is a well-formed packet, and that the TLVs are
understood. If not, L SHOULD send an MPLS echo reply with the understood. If not, X SHOULD send an MPLS echo reply with the Return
Return Code set to "Malformed echo request received" or "TLV not Code set to "Malformed echo request received" or "TLV not understood"
understood" (as appropriate), and the Subcode set to the appropriate (as appropriate), and the Subcode set to the appropriate value.
value.
If the echo request is good, L then checks whether it is a valid If the echo request is good, X then checks whether it is a valid
transit or egress LSR for the FEC in the echo request. If not, L MAY transit or egress LSR for the FEC in the echo request. If not, X MAY
log this fact. log this fact. If it is, X notes that interface I over which the
echo was received, and the label L with which it came. X checks
whether it actually advertised L over interface I for the FEC in the
echo request.
If the echo request contains a Downstream Mapping TLV, L MUST further If the echo request contains a Downstream Mapping TLV, X MUST further
check whether its Router ID matches one of the Downstream IPv4 Router check whether its Router ID matches one of the Downstream IPv4 Router
IDs; and if so, whether the given Downstream Label is in fact the IDs; and if so, whether the given Downstream Label is in fact the
label that L sent as its mapping for the FEC. For an RSVP FEC, the label that X sent as its mapping for the FEC over the downstream
downstream label is the label that L sent in its Resv message. The interface. The result of the checks in the previous and this
result of the checks in the previous and this paragraph are captured paragraph are captured in the Return Code/Subcode.
in the Return Code/Subcode.
If the echo request has a Reply Mode that wants a reply, L uses the If the echo request has a Reply Mode that wants a reply, X uses the
procedure in the next subsection to send the echo reply. procedure in the next subsection to send the echo reply.
4.3. Sending an MPLS Echo Reply 4.4. Sending an MPLS Echo Reply
An MPLS echo reply is a UDP packet. It MUST ONLY be sent in response An MPLS echo reply is a UDP packet. It MUST ONLY be sent in response
to an MPLS echo request. The source IP address is a routable address to an MPLS echo request. The source IP address is a routable address
of the replier; the source port is the well-known UDP port for MPLS of the replier; the source port is the well-known UDP port for MPLS
ping. The destination IP address and UDP port are copied from the ping. The destination IP address and UDP port are copied from the
source IP address and UDP port of the echo request. The IP TTL is source IP address and UDP port of the echo request. The IP TTL is
set to 255. If the Reply Mode in the echo request is "Reply via an set to 255. If the Reply Mode in the echo request is "Reply via an
IPv4 UDP packet with Router Alert", then the IP header MUST contain IPv4 UDP packet with Router Alert", then the IP header MUST contain
the Router Alert IP option. the Router Alert IP option. If the reply is sent over an LSP, the
topmost label MUST in this case be the Router Alert label (1) (see
[LABEL-STACK]).
The format of the echo reply is the same as the echo request. The The format of the echo reply is the same as the echo request. The
Sender's Handle, the Sequence Number and TimeStamp Sent are copied Sender's Handle, the Sequence Number and TimeStamp Sent are copied
from the echo request; the TimeStamp Received is set to the time-of- from the echo request; the TimeStamp Received is set to the time-of-
day that the echo request is received (note that this information is day that the echo request is received (note that this information is
most useful if the time-of-day clocks on the requestor and the most useful if the time-of-day clocks on the requestor and the
replier are synchronized). The FEC Stack TLV from the echo request replier are synchronized). The FEC Stack TLV from the echo request
MAY be copied to the reply. MAY be copied to the reply.
The replier MUST fill in the Return Code and Subcode, as determined The replier MUST fill in the Return Code and Subcode, as determined
in the previous subsection. in the previous subsection.
If the echo request contains a Pad TLV, the replier MUST interpret If the echo request contains a Pad TLV, the replier MUST interpret
the first octet for instructions regarding how to reply. the first octet for instructions regarding how to reply.
If the echo request contains a Downstream Mapping TLV, the replier If the echo request contains a Downstream Mapping TLV, the replier
SHOULD compute its downstream routers and corresponding labels for SHOULD compute its downstream routers and corresponding labels for
the incoming label, and add Downstream Mapping TLVs for each one to the incoming label, and add Downstream Mapping TLVs for each one to
the echo reply it sends back. the echo reply it sends back.
4.4. Receiving an MPLS Echo Reply 4.5. Receiving an MPLS Echo Reply
An LSR X should only receive an MPLS Echo Reply in response to an An LSR X should only receive an MPLS Echo Reply in response to an
MPLS Echo Request that it sent. Thus, on receipt of an MPLS Echo MPLS Echo Request that it sent. Thus, on receipt of an MPLS Echo
Reply, X should parse the packet to assure that it is well-formed, Reply, X should parse the packet to assure that it is well-formed,
then attempt to match up the Echo Reply with an Echo Request that it then attempt to match up the Echo Reply with an Echo Request that it
had previously sent, using the destination UDP port and the Sender's had previously sent, using the destination UDP port and the Sender's
Handle. If no match is found, then X jettisons the Echo Reply; Handle. If no match is found, then X jettisons the Echo Reply;
otherwise, it checks the Sequence Number to see if it matches. Gaps otherwise, it checks the Sequence Number to see if it matches. Gaps
in the Sequence Number MAY be logged and SHOULD be counted. Once an in the Sequence Number MAY be logged and SHOULD be counted. Once an
Echo Reply is received for a given Sequence Number (for a given UDP Echo Reply is received for a given Sequence Number (for a given UDP
port and Handle), the Sequence Number for subsequent Echo Requests port and Handle), the Sequence Number for subsequent Echo Requests
for that UDP port and Handle SHOULD be incremented. for that UDP port and Handle SHOULD be incremented.
If the Echo Reply contains Downstream Mappings, and X wishes to If the Echo Reply contains Downstream Mappings, and X wishes to
traceroute further, it SHOULD copy the Downstream Mappings into its traceroute further, it SHOULD copy the Downstream Mappings into its
next Echo Request (with TTL incremented by one). next Echo Request (with TTL incremented by one).
4.5. Non-compliant Routers 4.6. Non-compliant Routers
If the egress for the FEC Stack being pinged does not support MPLS If the egress for the FEC Stack being pinged does not support MPLS
ping, then no reply will be sent, resulting in possible "false ping, then no reply will be sent, resulting in possible "false
negatives". If in "traceroute" mode, a transit LSR does not support negatives". If in "traceroute" mode, a transit LSR does not support
MPLS ping, then no reply will be forthcoming from that LSR for some MPLS ping, then no reply will be forthcoming from that LSR for some
TTL, say n. The LSR originating the echo request SHOULD try sending TTL, say n. The LSR originating the echo request SHOULD try sending
the echo request with TTL=n+1, n+2, ..., n+k in the hope that some the echo request with TTL=n+1, n+2, ..., n+k in the hope that some
transit LSR further downstream may support MPLS echo requests and transit LSR further downstream may support MPLS echo requests and
reply. In such a case, the echo request for TTL>n MUST NOT have reply. In such a case, the echo request for TTL>n MUST NOT have
Downstream Mapping TLVs, until a reply is received with a Downstream Downstream Mapping TLVs, until a reply is received with a Downstream
skipping to change at page 16, line 47 skipping to change at page 19, line 33
If X does not receive an Resv message from the egress LSR that If X does not receive an Resv message from the egress LSR that
contains an LSP_ECHO object within some period of time, it declares contains an LSP_ECHO object within some period of time, it declares
the LSP as "down". At this point, the ingress LSR may apply the the LSP as "down". At this point, the ingress LSR may apply the
necessary procedures to fix the LSP. These may include generating a necessary procedures to fix the LSP. These may include generating a
message to network management, tearing-down and re-building the LSP, message to network management, tearing-down and re-building the LSP,
and/or rerouting user traffic to a backup LSP. and/or rerouting user traffic to a backup LSP.
To test an LSP that carries non-IP traffic, before injecting ICMP and To test an LSP that carries non-IP traffic, before injecting ICMP and
MPLS ping messages into the LSP, the IPv4 Explicit NULL label should MPLS ping messages into the LSP, the IPv4 Explicit NULL label should
be prepended to such messages. The ingress and egress LSR's must be prepended to such messages. The ingress and egress LSR's must
follow the procedures defined in [LABEL-STACKING]. follow the procedures defined in [LABEL-STACK].
5.4. Procedures at the egress LSR 5.4. Procedures at the egress LSR
When the egress LSR receives an MPLS ping message, it follows the When the egress LSR receives an MPLS ping message, it follows the
procedures given above. If the Reply Mode is set to "Reply via the procedures given above. If the Reply Mode is set to "Reply via the
control plane", the LSR can, based on the RSVP SESSION and control plane", the LSR can, based on the RSVP SESSION and
SENDER_TEMPLATE objects carried in the MPLS ping message, find the SENDER_TEMPLATE objects carried in the MPLS ping message, find the
corresponding LSP in its RSVP-TE database. The LSR then checks to corresponding LSP in its RSVP-TE database. The LSR then checks to
see if the Resv message for this LSP contains an LSP_ECHO object with see if the Resv message for this LSP contains an LSP_ECHO object with
the same source UDP port value. If not, the LSR adds or updates the the same source UDP port value. If not, the LSR adds or updates the
skipping to change at page 17, line 33 skipping to change at page 20, line 15
Note that an intermediate LSR using RSVP refresh reduction [RSVP- Note that an intermediate LSR using RSVP refresh reduction [RSVP-
REFRESH], the new or changed LSP_ECHO object will cause the LSR to REFRESH], the new or changed LSP_ECHO object will cause the LSR to
classify the RSVP message as a trigger message. classify the RSVP message as a trigger message.
6. Normative References 6. Normative References
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate [KEYWORDS] 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.
[LABEL-STACKING] Rosen, E., et al, "MPLS Label Stack Encoding", RFC [LABEL-STACK] Rosen, E., et al, "MPLS Label Stack Encoding", RFC
3032, January 2001. 3032, January 2001.
[RSVP] Braden, R. (Editor), et al, "Resource ReSerVation protocol [RSVP] Braden, R. (Editor), et al, "Resource ReSerVation protocol
(RSVP) -- Version 1 Functional Specification," RFC 2205, (RSVP) -- Version 1 Functional Specification," RFC 2205,
September 1997. September 1997.
[RSVP-REFRESH] Berger, L., et al, "RSVP Refresh Overhead Reduction [RSVP-REFRESH] Berger, L., et al, "RSVP Refresh Overhead Reduction
Extensions", RFC 2961, April 2001. Extensions", RFC 2961, April 2001.
[RSVP-TE] Awduche, D., et al, "RSVP-TE: Extensions to RSVP for LSP [RSVP-TE] Awduche, D., et al, "RSVP-TE: Extensions to RSVP for LSP
skipping to change at page 19, line 11 skipping to change at page 21, line 24
9. IANA Considerations 9. IANA Considerations
(To be filled in a later revision) (To be filled in a later revision)
10. Acknowledgments 10. Acknowledgments
This document is the outcome of many discussions among many people, This document is the outcome of many discussions among many people,
that include Manoj Leelanivas, Paul Traina, Yakov Rekhter, Der-Hwa that include Manoj Leelanivas, Paul Traina, Yakov Rekhter, Der-Hwa
Gan, Brook Bailey, Eric Rosen and Ina Minei. Gan, Brook Bailey, Eric Rosen and Ina Minei.
The Multipath Exercise sub-field of the Downstream Mapping TLV was
adapted from text suggested by Curtis Villamizar.
11. Appendix 11. Appendix
This appendix specifies non-normative aspects of detecting MPLS data This appendix specifies non-normative aspects of detecting MPLS data
plane liveness. plane liveness.
11.1. CR-LDP FEC 11.1. CR-LDP FEC
This section describes how a CR-LDP FEC can be included in an Echo This section describes how a CR-LDP FEC can be included in an Echo
Request using the following FEC subtype: Request using the following FEC subtype:
skipping to change at page 21, line 29 skipping to change at page 24, line 7
be obtained from the IETF Secretariat. be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive this standard. Please address the information to the IETF Executive
Director. Director.
Full Copyright Statement Full Copyright Statement
Copyright (C) The Internet Society (2002). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implmentation may be prepared, copied, published and or assist in its implmentation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind, distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of Internet organizations, except as needed for the purpose of
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/