draft-ietf-mpls-lsp-ping-08.txt | draft-ietf-mpls-lsp-ping-09.txt | |||
---|---|---|---|---|
Network Working Group Kireeti Kompella | Network Working Group Kireeti Kompella | |||
Internet Draft Juniper Networks, Inc. | Internet Draft Juniper Networks, Inc. | |||
Category: Standards Track | Category: Standards Track | |||
Expiration Date: August 2005 | Expiration Date: November 2005 | |||
George Swallow | George Swallow | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
February 2005 | May 2005 | |||
Detecting MPLS Data Plane Failures | Detecting MPLS Data Plane Failures | |||
draft-ietf-mpls-lsp-ping-08.txt | draft-ietf-mpls-lsp-ping-09.txt | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, the authors certify that any | By submitting this Internet-Draft, each author represents that any | |||
applicable patent or other IPR claims of which we are aware have been | applicable patent or other IPR claims of which he or she is aware | |||
disclosed, and any of which we become aware will be disclosed, in | have been or will be disclosed, and any of which he or she becomes | |||
accordance with RFC 3668. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
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 5 of RFC3667. Internet-Drafts are working | all provisions of Section 5 of RFC3667. Internet-Drafts are working | |||
documents of the Internet Engineering Task Force (IETF), its areas, | documents of the Internet Engineering Task Force (IETF), its areas, | |||
and its working groups. Note that other groups may also distribute | and its working groups. Note that other groups may also distribute | |||
working documents as Internet-Drafts. | working documents as Internet-Drafts. | |||
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." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/1id-abstracts.html | http://www.ietf.org/1id-abstracts.html | |||
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 (C) The Internet Society (2005). | ||||
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. | |||
Changes since last revision | Changes since last revision | |||
(This section to be removed before publication.) | (This section to be removed before publication.) | |||
o added clarification of TLV lengths, with examples; | o fixed the optional vs. mandatory TLV wording | |||
o added a Global Flags field in the header for the | o Removed the Error TLV (which never found use and was undefined) | |||
'validate FEC' flag; | o Removed an extraneous paragraph from the processing rules and did | |||
o fixed the optional vs. mandatory Types wording; | some further word-smithing | |||
o added several new FEC sub-TLVs: | o Removed Appendix A on CR-LDP | |||
- 12 BGP labeled IPv4 prefix | o Added an Address Type field to the Address and Interface Object; | |||
+ 12 BGP labeled IPv4 prefix | combined the IPv4 & IPv6 formats into a single TLV | |||
+ 13 BGP labeled IPv6 prefix (TBD) | o Modified example TLV / Sub-TLV to be more instructive on | |||
+ 14 Generic IPv4 prefix | determining (Sub-)TLV lengths | |||
+ 15 Generic IPv6 prefix | o Removed the BGP Next Hop field from the BGP Labeled IPv4 FEC | |||
+ 16 Nil FEC | o Added the BGP Labeled IPv6 FEC | |||
o in Downstream Mapping TLV | o Corrected the length calculation for the Downsteam Mapping TLV | |||
+ added an Address Type of IPv6 Unnumbered; | o Added two special values for the Downstream Router ID | |||
+ added DS Flags to the DS Map, with 2 defined bits; | o Added an error code for upstream Interface Index Unknown | |||
+ renamed Hash key type to multipath type and dropped | o Added all requested allocations to the IANA section | |||
codepoints for which no processing rules have been | o Spelling and Word-smithing | |||
defined; | ||||
o added "Reply TOS byte" TLV; | ||||
o updated processing rules to deal fully deal with implicit | ||||
null labels | ||||
o added text on processing fewer prefixes in DS maps; | ||||
o added text on "Testing LSPs That Are Used to Carry MPLS | ||||
Payloads"; | ||||
o fixed text on non-compatible routers. | ||||
Contents | Contents | |||
1 Introduction .............................................. 5 | 1 Introduction .............................................. 4 | |||
1.1 Conventions ............................................... 5 | 1.1 Conventions ............................................... 4 | |||
1.2 Structure of this document ................................ 5 | 1.2 Structure of this document ................................ 4 | |||
1.3 Contributors .............................................. 5 | 1.3 Contributors .............................................. 4 | |||
2 Motivation ................................................ 6 | 2 Motivation ................................................ 5 | |||
3 Packet Format ............................................. 7 | 3 Packet Format ............................................. 6 | |||
3.1 Return Codes .............................................. 10 | 3.1 Return Codes .............................................. 10 | |||
3.2 Target FEC Stack .......................................... 12 | 3.2 Target FEC Stack .......................................... 11 | |||
3.2.1 LDP IPv4 Prefix ........................................... 13 | 3.2.1 LDP IPv4 Prefix ........................................... 12 | |||
3.2.2 LDP IPv6 Prefix ........................................... 13 | 3.2.2 LDP IPv6 Prefix ........................................... 12 | |||
3.2.3 RSVP IPv4 Session ......................................... 14 | 3.2.3 RSVP IPv4 LSP ............................................. 13 | |||
3.2.4 RSVP IPv6 Session ......................................... 14 | 3.2.4 RSVP IPv6 LSP ............................................. 13 | |||
3.2.5 VPN IPv4 Prefix ........................................... 15 | 3.2.5 VPN IPv4 Prefix ........................................... 14 | |||
3.2.6 VPN IPv6 Prefix ........................................... 15 | 3.2.6 VPN IPv6 Prefix ........................................... 14 | |||
3.2.7 L2 VPN Endpoint ........................................... 15 | 3.2.7 L2 VPN Endpoint ........................................... 15 | |||
3.2.8 FEC 128 Pseudowire (Deprecated) ........................... 16 | 3.2.8 FEC 128 Pseudowire (Deprecated) ........................... 15 | |||
3.2.9 FEC 128 Pseudowire (Current) .............................. 16 | 3.2.9 FEC 128 Pseudowire (Current) .............................. 16 | |||
3.2.10 FEC 129 Pseudowire ........................................ 17 | 3.2.10 FEC 129 Pseudowire ........................................ 16 | |||
3.2.11 BGP Labeled IPv4 Prefix ................................... 17 | 3.2.11 BGP Labeled IPv4 Prefix ................................... 17 | |||
3.2.12 Generic IPv4 Prefix ....................................... 18 | 3.2.12 BGP Labeled IPv6 Prefix ................................... 17 | |||
3.2.13 Generic IPv6 Prefix ....................................... 18 | 3.2.13 Generic IPv4 Prefix ....................................... 18 | |||
3.2.14 Nil FEC ................................................... 19 | 3.2.14 Generic IPv6 Prefix ....................................... 18 | |||
3.3 Downstream Mapping ........................................ 20 | 3.2.15 Nil FEC ................................................... 19 | |||
3.3.1 Multipath Information Encoding ............................ 23 | 3.3 Downstream Mapping ........................................ 19 | |||
3.3.2 Downstream Router and Interface ........................... 24 | 3.3.1 Multipath Information Encoding ............................ 24 | |||
3.4 Pad TLV ................................................... 25 | 3.3.2 Downstream Router and Interface ........................... 26 | |||
3.5 Error Code ................................................ 25 | 3.4 Pad TLV ................................................... 26 | |||
3.6 Vendor Enterprise Code .................................... 25 | 3.5 Vendor Enterprise Code .................................... 27 | |||
3.7 Interface and Label Stack Object .......................... 26 | 3.6 Interface and Label Stack ................................. 27 | |||
3.7.1 IPv4 Interface and Label Stack Object ..................... 26 | 3.7 Errored TLVs .............................................. 28 | |||
3.7.2 IPv6 Interface and Label Stack Object ..................... 27 | 3.8 Reply TOS Byte TLV ........................................ 29 | |||
3.8 Errored TLVs .............................................. 28 | ||||
3.9 Reply TOS Byte TLV ........................................ 29 | ||||
4 Theory of Operation ....................................... 29 | 4 Theory of Operation ....................................... 29 | |||
4.1 Dealing with Equal-Cost Multi-Path (ECMP) ................. 29 | 4.1 Dealing with Equal-Cost Multi-Path (ECMP) ................. 30 | |||
4.2 Testing LSPs That Are Used to Carry MPLS Payloads ......... 30 | 4.2 Testing LSPs That Are Used to Carry MPLS Payloads ......... 31 | |||
4.3 Sending an MPLS Echo Request .............................. 31 | 4.3 Sending an MPLS Echo Request .............................. 31 | |||
4.4 Receiving an MPLS Echo Request ............................ 31 | 4.4 Receiving an MPLS Echo Request ............................ 32 | |||
4.5 Sending an MPLS Echo Reply ................................ 35 | 4.5 Sending an MPLS Echo Reply ................................ 35 | |||
4.6 Receiving an MPLS Echo Reply .............................. 36 | 4.6 Receiving an MPLS Echo Reply .............................. 36 | |||
4.7 Issue with VPN IPv4 and IPv6 Prefixes ..................... 36 | 4.7 Issue with VPN IPv4 and IPv6 Prefixes ..................... 36 | |||
4.8 Non-compliant Routers ..................................... 37 | 4.8 Non-compliant Routers ..................................... 37 | |||
5 References ................................................ 37 | 5 References ................................................ 37 | |||
6 Security Considerations ................................... 38 | 6 Security Considerations ................................... 38 | |||
7 IANA Considerations ....................................... 38 | 7 IANA Considerations ....................................... 38 | |||
7.1 Message Types, Reply Modes, Return Codes .................. 39 | 7.1 Message Types, Reply Modes, Return Codes .................. 39 | |||
7.2 TLVs ...................................................... 39 | 7.2 TLVs ...................................................... 39 | |||
8 Acknowledgments ........................................... 39 | 8 Acknowledgments ........................................... 40 | |||
A Appendix .................................................. 40 | ||||
A.1 CR-LDP FEC ................................................ 40 | ||||
A.2 Downstream Mapping for CR-LDP ............................. 40 | ||||
1. Introduction | 1. Introduction | |||
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 MPLS LSPs. There are two parts | used to detect data plane failures in MPLS LSPs. There are two parts | |||
to this document: information carried in an MPLS "echo request" and | to this document: information carried in an MPLS "echo request" and | |||
"echo reply"; and mechanisms for transporting the echo reply. The | "echo reply"; and mechanisms for transporting the echo reply. The | |||
first part aims at providing enough information to check correct | first part aims at providing enough information to check correct | |||
operation of the data plane, as well as a mechanism to verify the | operation of the data plane, as well as a mechanism to verify the | |||
data plane against the control plane, and thereby localize faults. | data plane against the control plane, and thereby localize faults. | |||
The second part suggests two methods of reliable reply channels for | The second part suggests two methods of reliable reply channels for | |||
the echo request message, for more robust fault isolation. | the echo request message, for more robust fault isolation. | |||
An important consideration in this design is that MPLS echo requests | An important consideration in this design is that MPLS echo requests | |||
follow the same data path that normal MPLS packets would traverse. | follow the same data path that normal MPLS packets would traverse. | |||
MPLS echo requests are meant primarily to validate the data plane, | MPLS echo requests are meant primarily to validate the data plane, | |||
and secondarily to verify the data plane against the control plane. | and secondarily to verify the data plane against the control plane. | |||
Mechanisms to check the control plane are valuable, but are not cov- | Mechanisms to check the control plane are valuable, but are not cov- | |||
ered in this document. | ered in this document. | |||
To avoid potential Denial of Service attacks, it is recommended to | ||||
regulate the LSP ping traffic going to the control plane. A rate | ||||
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. Structure of this document | 1.2. Structure of this document | |||
The body of this memo contains four main parts: motivation, MPLS echo | The body of this memo contains four main parts: motivation, MPLS echo | |||
request/reply packet format, LSP ping operation, and a reliable | request/reply packet format, LSP ping operation, and a reliable | |||
skipping to change at page 7, line 7 | skipping to change at page 6, line 7 | |||
One way these tools can be used is to periodically ping a FEC to | One way these tools can be used is to periodically ping a FEC to | |||
ensure connectivity. If the ping fails, one can then initiate a | ensure connectivity. If the ping fails, one can then initiate a | |||
traceroute to determine where the fault lies. One can also periodi- | traceroute to determine where the fault lies. One can also periodi- | |||
cally traceroute FECs to verify that forwarding matches the control | cally traceroute FECs to verify that forwarding matches the control | |||
plane; however, this places a greater burden on transit LSRs and thus | plane; however, this places a greater burden on transit LSRs and thus | |||
should be used with caution. | should be used with caution. | |||
3. Packet Format | 3. Packet Format | |||
An MPLS echo request is a (possibly labelled) IPv4 or IPv6 UDP | An MPLS echo request is a (possibly labeled) IPv4 or IPv6 UDP packet; | |||
packet; the contents of the UDP packet have the following format: | the contents of the UDP packet have 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Version Number | Global Flags | | | Version Number | Global Flags | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Message Type | Reply mode | Return Code | Return Subcode| | | Message Type | Reply mode | Return Code | Return Subcode| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sender's Handle | | | Sender's Handle | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 7, line 50 | skipping to change at page 6, line 50 | |||
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 an optional TLV or | The Version Number may not need to be changed if an optional TLV or | |||
sub-TLV is added.) | sub-TLV is added.) | |||
The Global Flags field is a bit vector with the following format: | The Global Flags field is a bit vector with the following format: | |||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SBZ |V| | | MBZ |V| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
One flag is defined for now, the V bit; the rest SHOULD be set to | One flag is defined for now, the V bit; the rest MUST be set to zero | |||
zero when sending, and ignored on receipt. | when sending, and ignored on receipt. | |||
The V (Validate FEC Stack) flag is set to 1 if the sender wants the | The V (Validate FEC Stack) flag is set to 1 if the sender wants the | |||
receiver to perform FEC stack validation; if V is 0, the choice is | receiver to perform FEC stack validation; if V is 0, the choice is | |||
left to the receiver. | left to the receiver. | |||
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 | |||
skipping to change at page 8, line 41 | skipping to change at page 7, line 41 | |||
the normal IP return path is deemed unreliable, one may use "Reply | the normal IP return path is deemed unreliable, one may use "Reply | |||
via an IPv4/IPv6 UDP packet with Router Alert" (note that this | via an IPv4/IPv6 UDP packet with Router Alert" (note that this | |||
requires that all intermediate routers understand and know how to | requires that all intermediate routers understand and know how to | |||
forward MPLS echo replies). The echo reply uses the same IP version | forward MPLS echo replies). The echo reply uses the same IP version | |||
number as the received echo request, i.e., an IPv4 encapsulated echo | number as the received echo request, i.e., an IPv4 encapsulated echo | |||
reply is sent in response to an IPv4 encapsulated echo request. | reply is sent in response to an IPv4 encapsulated echo request. | |||
Any application which supports an IP control channel between its con- | Any application which supports an IP control channel between its con- | |||
trol entities may set the Reply Mode to 4 to ensure that replies use | trol entities may set the Reply Mode to 4 to ensure that replies use | |||
that same channel. Further definition of this codepoint is applica- | that same channel. Further definition of this codepoint is applica- | |||
tion specific and thus beyond the scope of this docuemnt. | tion specific and thus beyond the scope of this document. | |||
Return Codes and Subcodes are described in the next section. | Return Codes and Subcodes are described in the next section. | |||
the Sender's Handle is filled in by the sender, and returned | the Sender's Handle is filled in by the sender, and returned | |||
unchanged by the receiver in the echo reply (if any). There are no | unchanged by the receiver in the echo reply (if any). There are no | |||
semantics associated with this handle, although a sender may find | semantics associated with this handle, although a sender may find | |||
this useful for matching up requests with replies. | this useful for matching up requests with replies. | |||
The Sequence Number is assigned by the sender of the MPLS echo | The Sequence Number is assigned by the sender of the MPLS echo | |||
request, and can be (for example) used to detect missed replies. | request, and can be (for example) used to detect missed replies. | |||
skipping to change at page 9, line 27 | skipping to change at page 8, line 27 | |||
| Value | | | Value | | |||
. . | . . | |||
. . | . . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Types are defined below; Length is the length of the Value field in | Types are defined below; Length is the length of the Value field in | |||
octets. The Value field depends on the Type; it is zero padded to | octets. The Value field depends on the Type; it is zero padded to | |||
align to a four-octet boundary. TLVs may be nested within other | align to a four-octet boundary. TLVs may be nested within other | |||
TLVs, in which case the nested TLVs are called sub-TLVs. | TLVs, in which case the nested TLVs are called sub-TLVs. Sub-TLVs | |||
have independent types and MUST also be four-octet aligned. | ||||
Two examples follow. The LDP IPv4 FEC TLV has the following format: | Two examples follow. The LDP IPv4 FEC sub-TLV has the following for- | |||
mat: | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type = 1 (LDP IPv4 FEC) | Length = 5 | | | Type = 1 (LDP IPv4 FEC) | Length = 5 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv4 prefix | | | IPv4 prefix | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The Length for this TLV is 5. A FEC TLV which contains just an LDP | The Length for this TLV is 5. A Target FEC Stack TLV which contains | |||
IPv4 FEC sub-TLV has the format: | an LDP IPv4 FEC sub-TLV and a VPN IPv4 FEC sub-TLV has the 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type = 1 (FEC TLV) | Length = 12 | | | Type = 1 (FEC TLV) | Length = 12 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| sub-Type = 1 (LDP IPv4 FEC) | Length = 5 | | | sub-Type = 1 (LDP IPv4 FEC) | Length = 5 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv4 prefix | | | IPv4 prefix | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| sub-Type = 6 (VPN IPv4 FEC) | Length = 13 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Route Distinguisher | | ||||
| (8 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IPv4 prefix | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Prefix Length | Must Be Zero | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
A description of the Types and Values of the top level TLVs for LSP | A description of the Types and Values of the top level TLVs for LSP | |||
ping are given below: | ping are given below: | |||
Type # Value Field | Type # Value Field | |||
------ ----------- | ------ ----------- | |||
1 Target FEC Stack | 1 Target FEC Stack | |||
2 Downstream Mapping | 2 Downstream Mapping | |||
3 Pad | 3 Pad | |||
4 Error Code | 4 Not Assigned | |||
5 Vendor Enterprise Code | 5 Vendor Enterprise Code | |||
6 TBD | 6 Not Assigned | |||
7 IPv4 Interface and Label Stack Object | 7 Interface and Label Stack | |||
8 IPv6 Interface and Label Stack Object | 8 Not Assigned | |||
9 Errored TLVs | 9 Errored TLVs | |||
10 Reply TOS Byte | 10 Reply TOS Byte | |||
Types less than 32768 (i.e., with the high order bit equal to 0) are | Types less than 32768 (i.e., with the high order bit equal to 0) are | |||
mandatory TLVs that MUST either be supported by an implementation or | mandatory TLVs that MUST either be supported by an implementation or | |||
result in the return code of 2 ("One or more of the TLVs was not | result in the return code of 2 ("One or more of the TLVs was not | |||
understood") being sent in the echo response. | understood") being sent in the echo response. | |||
Types greater than or equal to 32768 (i.e., with the high order bit | Types greater than or equal to 32768 (i.e., with the high order bit | |||
equal to 1) are optional TLVs that SHOULD be ignored if the implemen- | equal to 1) are optional TLVs that SHOULD be ignored if the implemen- | |||
skipping to change at page 11, line 8 | skipping to change at page 10, line 16 | |||
The Return Code is set to zero by the sender. The receiver can set | The Return Code is set to zero by the sender. The receiver can set | |||
it to one of the values listed below. The notation <RSC> refers to | it to one of the values listed below. The notation <RSC> refers to | |||
the Return Subcode. This field is filled in with the stack-depth for | the Return Subcode. This field is filled in with the stack-depth for | |||
those codes which specify that. For all other codes the Return Sub- | those codes which specify that. For all other codes the Return Sub- | |||
code MUST be set to zero. | code MUST be set to zero. | |||
Value Meaning | Value Meaning | |||
----- ------- | ----- ------- | |||
0 No return code or return code contained in the Error | 0 No return code | |||
Code TLV | ||||
1 Malformed echo request received | 1 Malformed echo request received | |||
2 One or more of the TLVs was not understood | 2 One or more of the TLVs was not understood | |||
3 Replying router is an egress for the FEC at stack | 3 Replying router is an egress for the FEC at stack | |||
depth <RSC> | depth <RSC> | |||
4 Replying router has no mapping for the FEC at stack | 4 Replying router has no mapping for the FEC at stack | |||
depth <RSC> | depth <RSC> | |||
5 Downstream Mapping Mismatch (See Note 1) | 5 Downstream Mapping Mismatch (See Note 1) | |||
6 Reserved | 6 Upstream Interface Index Unknown (See Note 1) | |||
7 Reserved | 7 Reserved | |||
8 Label switched at stack-depth <RSC> | 8 Label switched at stack-depth <RSC> | |||
9 Label switched but no MPLS forwarding at stack-depth | 9 Label switched but no MPLS forwarding at stack-depth | |||
<RSC> | <RSC> | |||
10 Mapping for this FEC is not the given label at stack | 10 Mapping for this FEC is not the given label at stack | |||
depth <RSC> | depth <RSC> | |||
skipping to change at page 11, line 45 | skipping to change at page 11, line 7 | |||
11 No label entry at stack-depth <RSC> | 11 No label entry at stack-depth <RSC> | |||
12 Protocol not associated with interface at FEC stack | 12 Protocol not associated with interface at FEC stack | |||
depth <RSC> | depth <RSC> | |||
13 Premature termination of ping due to label stack | 13 Premature termination of ping due to label stack | |||
shrinking to a single label | shrinking to a single label | |||
Note 1 | Note 1 | |||
The Return Subcode contains the point in the label stack" where pro- | The Return Subcode contains the point in the label stack where pro- | |||
cessing was terminated. If the RSC is 0, no labels were processed. | cessing was terminated. If the RSC is 0, no labels were processed. | |||
Otherwise the packet would have been label switched at depth RSC. | Otherwise the packet would have been label switched at depth RSC. | |||
3.2. Target FEC Stack | 3.2. Target FEC Stack | |||
A Target FEC Stack is a list of sub-TLVs. The number of elements is | A Target FEC Stack is a list of sub-TLVs. The number of elements is | |||
determined by the looking at the sub-TLV length fields. | determined by the looking at the sub-TLV length fields. | |||
Sub-Type # Length Value Field | Sub-Type Length Value Field | |||
---------- ------ ----------- | -------- ------ ----------- | |||
1 5 LDP IPv4 prefix | 1 5 LDP IPv4 prefix | |||
2 17 LDP IPv6 prefix | 2 17 LDP IPv6 prefix | |||
3 20 RSVP IPv4 Session Query | 3 20 RSVP IPv4 LSP | |||
4 56 RSVP IPv6 Session Query | 4 56 RSVP IPv6 LSP | |||
5 Reserved; see Appendix | 5 Not Assigned | |||
6 13 VPN IPv4 prefix | 6 13 VPN IPv4 prefix | |||
7 25 VPN IPv6 prefix | 7 25 VPN IPv6 prefix | |||
8 14 L2 VPN endpoint | 8 14 L2 VPN endpoint | |||
9 10 "FEC 128" Pseudowire (old) | 9 10 "FEC 128" Pseudowire (deprecated) | |||
10 14 "FEC 128" Pseudowire (new) | 10 14 "FEC 128" Pseudowire | |||
11 13+ "FEC 129" Pseudowire | 11 13+ "FEC 129" Pseudowire | |||
12 9 BGP labeled IPv4 prefix | 12 5 BGP labeled IPv4 prefix | |||
13 ?? BGP labeled IPv6 prefix (TBD) | 13 17 BGP labeled IPv6 prefix | |||
14 5 Generic IPv4 prefix | 14 5 Generic IPv4 prefix | |||
15 17 Generic IPv6 prefix | 15 17 Generic IPv6 prefix | |||
16 4*N Nil FEC | 16 4*N Nil FEC | |||
Other FEC Types will be defined as needed. | Other FEC Types will be defined as needed. | |||
Note that this TLV defines a stack of FECs, the first FEC element | Note that this TLV defines a stack of FECs, the first FEC element | |||
corresponding to the top of the label stack, etc. | corresponding to the top of the label stack, etc. | |||
An MPLS echo request MUST have a Target FEC Stack that describes the | An MPLS echo request MUST have a Target FEC Stack that describes the | |||
skipping to change at page 14, line 5 | skipping to change at page 13, line 16 | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv6 prefix | | | IPv6 prefix | | |||
| (16 octets) | | | (16 octets) | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.3. RSVP IPv4 Session | 3.2.3. RSVP IPv4 LSP | |||
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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Must Be Zero | Tunnel ID | | | Must Be Zero | Tunnel ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Extended Tunnel ID | | | Extended Tunnel ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv4 tunnel sender address | | | IPv4 tunnel sender address | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Must Be Zero | LSP ID | | | Must Be Zero | LSP ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.4. RSVP IPv6 Session | 3.2.4. RSVP IPv6 LSP | |||
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.2 and 4.6.2.2]. | [RFC3209, sections 4.6.1.2 and 4.6.2.2]. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv6 tunnel end point address | | | IPv6 tunnel end point address | | |||
| | | | | | |||
| | | | | | |||
skipping to change at page 15, line 45 | skipping to change at page 15, line 22 | |||
| | | | | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.7. L2 VPN Endpoint | 3.2.7. L2 VPN Endpoint | |||
The value field consists of a Route Distinguisher (8 octets), the | The value field consists of a Route Distinguisher (8 octets), the | |||
sender (of the ping)'s CE ID (2 octets), the receiver's CE ID (2 | sender (of the ping)'s VE ID (2 octets), the receiver's VE ID (2 | |||
octets), and an encapsulation type (2 octets), formatted as follows: | octets), and an encapsulation type (2 octets), formatted as follows: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Route Distinguisher | | | Route Distinguisher | | |||
| (8 octets) | | | (8 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sender's CE ID | Receiver's CE ID | | | Sender's VE ID | Receiver's VE ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Encapsulation Type | Must Be Zero | | | Encapsulation Type | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.8. FEC 128 Pseudowire (Deprecated) | 3.2.8. FEC 128 Pseudowire (Deprecated) | |||
The value field consists of the remote PE address (the destination | The value field consists of the remote PE address (the destination | |||
address of the targetted LDP session), a VC ID and an encapsulation | address of the targeted LDP session), a VC ID and an encapsulation | |||
type, as follows: | type, as follows: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote PE Address | | | Remote PE Address | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| VC ID | | | VC ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Encapsulation Type | Must Be Zero | | | Encapsulation Type | Must Be Zero | | |||
skipping to change at page 16, line 44 | skipping to change at page 16, line 27 | |||
this TLV, but SHOULD send LSP ping echo requests with the new TLV | this TLV, but SHOULD send LSP ping echo requests with the new TLV | |||
(see next section), unless explicitly asked by configuration to use | (see next section), unless explicitly asked by configuration to use | |||
the old TLV. | the old TLV. | |||
An LSR receiving this TLV SHOULD use the source IP address of the LSP | An LSR receiving this TLV SHOULD use the source IP address of the LSP | |||
echo request to infer the Sender's PE Address. | echo request to infer the Sender's PE Address. | |||
3.2.9. FEC 128 Pseudowire (Current) | 3.2.9. FEC 128 Pseudowire (Current) | |||
The value field consists of the sender's PE address (the source | The value field consists of the sender's PE address (the source | |||
address of the targetted LDP session), the remote PE address (the | address of the targeted LDP session), the remote PE address (the des- | |||
destination address of the targetted LDP session), a VC ID and an | tination address of the targeted LDP session), a VC ID and an encap- | |||
encapsulation type, as follows: | sulation type, as follows: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sender's PE Address | | | Sender's PE Address | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote PE Address | | | Remote PE Address | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| VC ID | | | VC ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Encapsulation Type | Must Be Zero | | | Encapsulation Type | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.10. FEC 129 Pseudowire | 3.2.10. FEC 129 Pseudowire | |||
The Length of this TLV is 13 + AGI length + SAII length + TAII | ||||
length. Padding is used to make the total length a multiple of 4; | ||||
the length of the padding is not included in the Length field. | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sender's PE Address | | | Sender's PE Address | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Remote PE Address | | | Remote PE Address | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| PW Type | AGI Length | SAII Length | | | PW Type | AGI Length | SAII Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| TAII Length | AGI Value ... SAII Value ... TAII Value ... | | | TAII Length | AGI Value ... SAII Value ... TAII Value ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
. ... . | . ... . | |||
. . | . . | |||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... | 0-3 octets of zero padding | | | ... | 0-3 octets of zero padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The Length of this TLV is 13 + AGI length + SAII length + TAII | ||||
length. Padding is used to make the total length a multiple of 4; | ||||
the length of the padding is not included in the Length field. | ||||
3.2.11. BGP Labeled IPv4 Prefix | 3.2.11. BGP Labeled IPv4 Prefix | |||
The value field consists of the BGP Next Hop associated with the NLRI | The value field consists the IPv4 prefix (with trailing 0 bits to | |||
advertising the prefix and label, the IPv4 prefix (with trailing 0 | make 32 bits in all), and the prefix length, as follows: | |||
bits to make 32 bits in all), and the prefix length, as follows: | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| BGP Next Hop | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IPv4 Prefix | | | IPv4 Prefix | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.12. Generic IPv4 Prefix | 3.2.12. BGP Labeled IPv6 Prefix | |||
The value consists of sixteen octets of an IPv6 prefix followed by | ||||
one octet of prefix length in bits; the format is given below. The | ||||
IPv6 prefix is in network byte order; if the prefix is shorter than | ||||
128 bits, the trailing bits SHOULD be set to zero. | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IPv6 prefix | | ||||
| (16 octets) | | ||||
| | | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Prefix Length | Must Be Zero | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
3.2.13. Generic 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 format is given below. The IPv4 | octet of prefix length in bits; the format is given below. The IPv4 | |||
prefix is in network byte order; if the prefix is shorter than 32 | prefix is in network byte order; if the prefix is shorter than 32 | |||
bits, trailing bits SHOULD be set to zero. This FEC is used if the | bits, trailing bits SHOULD be set to zero. This FEC is used if the | |||
protocol advertising the label is unknown, or may change during the | protocol advertising the label is unknown, or may change during the | |||
course of the LSP. An example is an inter-AS LSP that may be sig- | course of the LSP. An example is an inter-AS LSP that may be sig- | |||
naled by LDP in one AS, by RSVP-TE in another AS, and by BGP between | naled by LDP in one AS, by RSVP-TE in another AS, and by BGP between | |||
the ASes, such as is common for inter-AS VPNs. | the ASes, such as is common for inter-AS VPNs. | |||
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 prefix | | | IPv4 prefix | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.13. Generic IPv6 Prefix | 3.2.14. Generic 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 format is given below. The | one octet of prefix length in bits; the format is given below. The | |||
IPv6 prefix is in network byte order; if the prefix is shorter than | IPv6 prefix is in network byte order; if the prefix is shorter than | |||
128 bits, the trailing bits SHOULD be set to zero. | 128 bits, the trailing bits SHOULD be set to zero. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv6 prefix | | | IPv6 prefix | | |||
| (16 octets) | | | (16 octets) | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.14. Nil FEC | 3.2.15. Nil FEC | |||
At times labels from the reserved range, e.g. Router Alert and | At times labels from the reserved range, e.g. Router Alert and | |||
Explicit-null, may be added to the label stack for various diagnostic | Explicit-null, may be added to the label stack for various diagnostic | |||
purposes such as influencing load-balancing. These labels may have | purposes such as influencing load-balancing. These labels may have | |||
no explicit FEC associated with them. The Nil FEC stack is defined | no explicit FEC associated with them. The Nil FEC stack is defined | |||
to allow a Target FEC stack subtlv to be added to the target FEC | to allow a Target FEC stack sub-TLV to be added to the target FEC | |||
stack to account for such labels so that proper validation can still | stack to account for such labels so that proper validation can still | |||
be performed. | be performed. | |||
The Length is 4*N octets, where N is the number of Labels contained | The Length is 4. Labels are 20 bit values treated as numbers. | |||
in the Nil FEC stack. | stack. | |||
Labels are 20 bit values treated as numbers. The first label speci- | ||||
fied correspond with the label nearest the top of the label stack. | ||||
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 1 | SBZ | | | Label | MBZ | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Label 2 | SBZ | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
. . | ||||
. . | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Label 1, Label 2, ... are the actual labels inserted in the label | Label is the actual label value inserted in the label stack; the MBZ | |||
stack; the SBZ fields SHOULD be zero when sent, and ignored on | fields MUST be zero when sent, and ignored on receipt. | |||
receipt. | ||||
3.3. Downstream Mapping | 3.3. Downstream Mapping | |||
The Downstream Mapping object is an optional TLV. Only one Down- | The Downstream Mapping object is a TLV which MAY be included in an | |||
stream Mapping request may appear in and echo request. The presence | echo request message. Only one Downstream Mapping object may appear | |||
of a Downstream Mapping object is a request that Downstream Mapping | in an echo request. The presence of a Downstream Mapping object is a | |||
objects be included in the echo reply. If the replying router is the | request that Downstream Mapping objects be included in the echo | |||
destination of the FEC, then a Downstream Mapping TLV SHOULD NOT be | reply. If the replying router is the destination of the FEC, then a | |||
included in the echo reply. Otherwise Downstream Mapping objects | Downstream Mapping TLV SHOULD NOT be included in the echo reply. | |||
SHOULD include a Downstream Mapping object for each interface over | Otherwise the replying router SHOULD include a Downstream Mapping | |||
which this FEC could be forwarded. For a more precise definition of | object for each interface over which this FEC could be forwarded. | |||
the notion of "downstream", see the section named "Downstream". | For a more precise definition of the notion of "downstream", see the | |||
section named "Downstream". | ||||
The Length is 16 + M + 4*N octets, where M is the Multipath Length, | The Length is K + M + 4*N octets, where M is the Multipath Length, | |||
and N is the number of Downstream Labels. The Value field of a Down- | and N is the number of Downstream Labels. Values for K are found in | |||
the description of Address Type below. The Value field of a Down- | ||||
stream Mapping has the following format: | stream 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| MTU | Address Type | DS Flags | | | MTU | Address Type | DS Flags | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Downstream IP Address (4 or 16 octets) | | | Downstream IP Address (4 or 16 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Downstream Interface Address (4 or 16 octets) | | | Downstream Interface Address (4 or 16 octets) | | |||
skipping to change at page 21, line 7 | skipping to change at page 20, line 41 | |||
| Downstream Label | Protocol | | | Downstream Label | Protocol | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Maximum Transmission Unit (MTU) | Maximum Transmission Unit (MTU) | |||
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. | on the interface to the Downstream LSR. | |||
Address Type | Address Type | |||
The Address Type indicates if the interface is numbered or unnumbered | The Address Type indicates if the interface is numbered or unnum- | |||
and is set to one of the following values: | bered. It also determines the length of the Downstream IP Address | |||
and Downstream Interface fields. The resulting total for the initial | ||||
part of the TLV is listed in the table below as "K Octets". The | ||||
Address Type is set to one of the following values: | ||||
Type # Address Type | Type # Address Type K Octets | |||
------ ------------ | ------ ------------ -------- | |||
1 IPv4 Numbered | 1 IPv4 Numbered 16 | |||
2 IPv4 Unnumbered | 2 IPv4 Unnumbered 16 | |||
3 IPv6 Numbered | 3 IPv6 Numbered 40 | |||
4 IPv6 Unnumbered | 4 IPv6 Unnumbered 28 | |||
DS Flags | DS Flags | |||
The DS Flags field is a bit vector with the following format: | The DS Flags field is a bit vector with the following format: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Rsvd(MBZ) |I|N| | | Rsvd(MBZ) |I|N| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Two flags are defined currently, I and N. The remaining flags MUST | Two flags are defined currently, I and N. The remaining flags MUST | |||
be set to zero when sending, and ignored on receipt. | be set to zero when sending, and ignored on receipt. | |||
Flag Name and Meaning | Flag Name and Meaning | |||
---- ---------------- | ---- ---------------- | |||
I Interface and Label Stack Object Request | I Interface and Label Stack Object Request | |||
When this flag is set, it indicates that the replying | When this flag is set, it indicates that the replying | |||
router should include an Interface and Label Stack | router SHOULD include an Interface and Label Stack | |||
Object in the Echo-Reply message | Object in the echo reply message | |||
N Treat as a Non-IP Packet | N Treat as a Non-IP Packet | |||
Echo-Request messages will be used to diagnose non-IP | Echo request messages will be used to diagnose non-IP | |||
flows. However, these messages are carried in IP | flows. However, these messages are carried in IP | |||
packets. For a router which alters its ECMP algorithm | packets. For a router which alters its ECMP algorithm | |||
based on the FEC or deep packet examinition, this flag | based on the FEC or deep packet examination, this flag | |||
requests that the router treat this as it would if the | requests that the router treat this as it would if the | |||
determination of an IP payload had failed. | determination of an IP payload had failed. | |||
Downstream IP Address and Downstream Interface Address | Downstream IP Address and Downstream Interface Address | |||
IPv4 addresses and and interface indices are encoded in 4 octets, | ||||
IPv6 addresses are encoded in 16 octets. | ||||
If the interface to the downstream LSR is numbered, then the Address | If the interface to the downstream LSR is numbered, then the Address | |||
Type MUST be set to IPv4 or IPv6, the Downstream IP Address MUST be | Type MUST be set to IPv4 or IPv6, the Downstream IP Address MUST be | |||
set to either the downstream LSR's Router ID or the interface address | set to either the downstream LSR's Router ID or the interface address | |||
of the downstream LSR, and the Downstream Interface Address MUST be | of the downstream LSR, and the Downstream Interface Address MUST be | |||
set to the downstream LSR's interface address. | set to the downstream LSR's interface address. | |||
If the interface to the downstream LSR is unnumbered, the Address | If the interface to the downstream LSR is unnumbered, the Address | |||
Type MUST be Unnumbered, the Downstream IP Address MUST be the down- | Type MUST be IPv4 Unnumbered or IPv6 Unnumbered, the Downstream IP | |||
stream LSR's Router ID (4 octets), and the Downstream Interface | Address MUST be the downstream LSR's Router ID, and the Downstream | |||
Address MUST be set to the index assigned by the upstream LSR to the | Interface Address MUST be set to the index assigned by the upstream | |||
interface. | LSR to the interface. | |||
If an LSR does not know the IP address of its neighbor, then it MUST | ||||
set the Address Type to either IPv4 Unnumbered or IPv6 Unnumbered. | ||||
For IPv4 it must set the Downstream IP Address to 127.0.0.1, for IPv6 | ||||
the address is set to 0::1. In both cases the interface index MUST | ||||
be set to 0. If an LSR receives an Echo Request packet with either | ||||
of these addresses in the Downstream IP Address field, this indicates | ||||
that it MUST bypass interface verification but continue with label | ||||
validation. | ||||
If the originator of an Echo Request packet wishes to obtain Down- | ||||
stream mapping information but does not know the expected label stack | ||||
then it SHOULD set the Address Type to either IPv4 Unnumbered or IPv6 | ||||
Unnumbered. For IPv4 it MUST set the Downstream IP Address to | ||||
224.0.0.2, for IPv6 the address MUST be set to FF02::2. In both | ||||
cases the interface index MUST be set to 0. If an LSR receives an | ||||
Echo Request packet with the all-routers multicast address, then this | ||||
indicates that it MUST bypass both interface and label stack valida- | ||||
tion, but return Downstream Mapping TLVs using the information pro- | ||||
vided. | ||||
Multipath Type | Multipath Type | |||
The follow Mutipath Types are defined: | The following Mutipath Types are defined: | |||
Key Type Multipath Information | Key Type Multipath Information | |||
--- ---------------- --------------------- | --- ---------------- --------------------- | |||
0 no multipath (empty; M = 0) | 0 no multipath Empty (Multipath Length = 0) | |||
2 IP address IP addresses | 2 IP address IP addresses | |||
4 IP address range low/high address pairs | 4 IP address range low/high address pairs | |||
8 Bit-masked IPv4 IP address prefix and bit mask | 8 Bit-masked IPv4 IP address prefix and bit mask | |||
address set | address set | |||
9 Bit-masked label set Label prefix and bit mask | 9 Bit-masked label set Label prefix and bit mask | |||
Type 0 indicates that all packets will be forwarded out this one | Type 0 indicates that all packets will be forwarded out this one | |||
interface. | interface. | |||
Types 2, 4, 8 and 9 specify that the supplied Multipath Information | Types 2, 4, 8 and 9 specify that the supplied Multipath Information | |||
will serve to execise this path. | will serve to exercise this path. | |||
Depth Limit | Depth Limit | |||
The Depth Limit is applicable only to a label stack, and is the maxi- | The Depth Limit is applicable only to a label stack, and is the maxi- | |||
mum number of labels considered in the hash; this SHOULD be set to | mum number of labels considered in the hash; this SHOULD be set to | |||
zero if unspecified or unlimited. | zero if unspecified or unlimited. | |||
Multipath Length | Multipath Length | |||
The length in octets of the Multipath Information. | The length in octets of the Multipath Information. | |||
Multipath Information | Multipath Information | |||
Address or label values encoded according to the Multipath Type. See | Address or label values encoded according to the Multipath Type. See | |||
the next section below for encoding details. | the next section below for encoding details. | |||
Downstream Label(s) | Downstream Label(s) | |||
The set of labels in the label stack as it would have appeared if | The set of labels in the label stack as it would have appeared if | |||
this router were forwarding the packet through this interface. Any | this router were forwarding the packet through this interface. Any | |||
Implicit Null labels are explicitly inluded. Labels are treated as | Implicit Null labels are explicitly included. Labels are treated as | |||
numbers, i.e. they are right justified in the field. | numbers, i.e. they are right justified in the field. | |||
A Downstream Label is 24 bits, in the same format as an MPLS label | A Downstream Label is 24 bits, in the same format as an MPLS label | |||
minus the TTL field, i.e., the MSBit of the label is bit 0, the LSbit | minus the TTL field, i.e., the MSBit of the label is bit 0, the LSbit | |||
is bit 19, the EXP bits are bits 20-22, and bit 23 is the S bit. The | is bit 19, the EXP bits are bits 20-22, and bit 23 is the S bit. The | |||
replying router SHOULD fill in the EXP and S bits; the LSR receiving | replying router SHOULD fill in the EXP and S bits; the LSR receiving | |||
the echo reply MAY choose to ignore these bits. | the echo reply MAY choose to ignore these bits. | |||
Protocol | Protocol | |||
The Protocol is taken from the following table: | The 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 | ||||
3.3.1. Multipath Information Encoding | 3.3.1. Multipath Information Encoding | |||
The multipath information encodes labels or addresses which will | The multipath information encodes labels or addresses which will | |||
exercise this path. The multipath informaiton depends on the multi- | exercise this path. The multipath information depends on the multi- | |||
path type. The contents of the field are shown in the table above. | path type. The contents of the field are shown in the table above. | |||
IP addresses are drawn from the range 127/8. Labels are treated as | IP addresses are drawn from the range 127/8. Labels are treated as | |||
numbers, i.e. they are right justified in the field. Label and | numbers, i.e. they are right justified in the field. For Type 4, | |||
Address pairs MUST NOT overlap and MUST be in ascending sequence. | ranges indicated by Address pairs MUST NOT overlap and MUST be in | |||
ascending sequence. | ||||
Type 8 allows a denser encoding of IP address. The IPv4 prefix is | Type 8 allows a denser encoding of IP address. The IPv4 prefix is | |||
formatted as a base IPv4 address with the non-prefix low order bits | formatted as a base IPv4 address with the non-prefix low order bits | |||
set to zero. The maximum prefix length is 27. Following the prefix | set to zero. The maximum prefix length is 27. Following the prefix | |||
is a mask of length 2^(32-prefix length) bits. Each bit set to one | is a mask of length 2^(32-prefix length) bits. Each bit set to one | |||
represents a valid address. The address is the base IPv4 address | represents a valid address. The address is the base IPv4 address | |||
plus the position of the bit in the mask where the bits are numbered | plus the position of the bit in the mask where the bits are numbered | |||
left to right begining with zero. | left to right beginning with zero. For example the IP addresses | |||
127.2.1.0, 127.2.1.5-127.2.1.15, and 127.2.1.20-127.2.1.29 would be | ||||
encoded as follows: | ||||
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 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Type 9 allows a denser encoding of Labels. The label prefix is for- | Type 9 allows a denser encoding of Labels. The label prefix is for- | |||
matted as a base label value with the non-prefix low order bits set | matted as a base label value with the non-prefix low order bits set | |||
to zero. The maximum prefix (including leading zeros due to encod- | to zero. The maximum prefix (including leading zeros due to encod- | |||
ing) length is 27. Following the prefix is a mask of length | ing) length is 27. Following the prefix is a mask of length | |||
2^(32-prefix length) bits. Each bit set to one represents a valid | 2^(32-prefix length) bits. Each bit set to one represents a valid | |||
Label. The label is the base label plus the position of the bit in | Label. The label is the base label plus the position of the bit in | |||
the mask where the bits are numbered left to right begining with | the mask where the bits are numbered left to right beginning with | |||
zero. | zero. Label values of all the odd numbers between 1152 and 1279 | |||
would be encoded as follows: | ||||
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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
If the received multipath information is non-null, the labels and IP | If the received multipath information is non-null, the labels and IP | |||
addresses MUST be picked from the set provided. If none of these | addresses MUST be picked from the set provided. If none of these | |||
labels or addresses map to a particular downstream interface, then | labels or addresses map to a particular downstream interface, then | |||
for that interface, the type MUST be set to 0. If the received mul- | for that interface, the type MUST be set to 0. If the received mul- | |||
tipath information is null, the receiver simply returns null. | tipath information is null, (i.e. Multipath Length = 0, or for Types | |||
8 and 9 a mask of all zeroes) the receiver the type MUST be set to 0. | ||||
For example, suppose LSR X at hop 10 has two downstream LSRs Y and Z | For example, suppose LSR X at hop 10 has two downstream LSRs Y and Z | |||
for the FEC in question. The received X could return Hash Key Type | for the FEC in question. The received X could return Multipath Type | |||
4, with low/high IP addresses of 1.1.1.1->1.1.1.255 for downstream | 4, with low/high IP addresses of 127.1.1.1->127.1.1.255 for down- | |||
LSR Y and 2.1.1.1->2.1.1.255 for downstream LSR Z. The head end | stream LSR Y and 127.2.1.1->127.2.1.255 for downstream LSR Z. The | |||
reflects this information to LSR Y. Y, which has three downstream | head end reflects this information to LSR Y. Y, which has three | |||
LSRs U, V and W, computes that 1.1.1.1->1.1.1.127 would go to U and | downstream LSRs U, V and W, computes that 127.1.1.1->127.1.1.127 | |||
1.1.1.128-> 1.1.1.255 would go to V. Y would then respond with 3 | would go to U and 127.1.1.128-> 127.1.1.255 would go to V. Y would | |||
Downstream Mappings: to U, with Hash Key Type 4 (1.1.1.1->1.1.1.127); | then respond with 3 Downstream Mappings: to U, with Multipath Type 4 | |||
to V, with Hash Key Type 4 (1.1.1.127->1.1.1.255); and to W, with | (127.1.1.1->127.1.1.127); to V, with Multipath Type 4 | |||
Hash Key Type 7. | (127.1.1.127->127.1.1.255); and to W, with Multipath Type 0. | |||
Note that computing multi-path information may impose a significant | Note that computing multi-path information may impose a significant | |||
processing burden on the receiver. A receiver MAY thus choose to | processing burden on the receiver. A receiver MAY thus choose to | |||
process a subset of the received prefixes. The sender, on receiving | process a subset of the received prefixes. The sender, on receiving | |||
a reply to a Downstream Map with partial information, SHOULD assume | a reply to a Downstream Map with partial information, SHOULD assume | |||
that the prefixes missing in the reply were skipped by the receiver, | that the prefixes missing in the reply were skipped by the receiver, | |||
and MAY re-request information about them in a new echo request. | and MAY re-request information about them in a new echo request. | |||
3.3.2. Downstream Router and Interface | 3.3.2. Downstream Router and Interface | |||
The notion of "downstream router" and "downstream interface" should | The notion of "downstream router" and "downstream interface" should | |||
be explained. Consider an LSR X. If a packet that was originated | be explained. Consider an LSR X. If a packet that was originated | |||
with TTL n>1 arrived with outermost label L at LSR X, X must be able | with TTL n>1 arrived with outermost label L and TTL=1 at LSR X, X | |||
to compute which LSRs could receive the packet if it was originated | must be able to compute which LSRs could receive the packet if it was | |||
with TTL=n+1, over which interface the request would arrive and what | originated with TTL=n+1, over which interface the request would | |||
label stack those LSRs would see. (It is outside the scope of this | arrive and what label stack those LSRs would see. (It is outside the | |||
document to specify how this computation is done.) The set of these | scope of this document to specify how this computation is done.) The | |||
LSRs/interfaces are the downstream routers/interfaces (and their | set of these LSRs/interfaces are the downstream routers/interfaces | |||
corresponding labels) for X with respect to L. Each pair of down- | (and their corresponding labels) for X with respect to L. Each pair | |||
stream router and interface requires a separate Downstream Mapping to | of downstream router and interface requires a separate Downstream | |||
be added to the reply. (Note that there are multiple Downstream | Mapping to be added to the reply. | |||
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 the MPLS echo | case. X needs to figure out what LSRs would receive the MPLS echo | |||
request for a given FEC Stack that X originates with TTL=1. | request for a given FEC Stack that X originates with TTL=1. | |||
The set of downstream routers at X may be alternative paths (see the | The set of downstream routers at X may be alternative paths (see the | |||
discussion below on ECMP) or simultaneous paths (e.g., for MPLS mul- | discussion below on ECMP) or simultaneous paths (e.g., for MPLS mul- | |||
ticast). In the former case, the Multipath sub-field is used as a | ticast). In the former case, the Multipath Information is used as a | |||
hint to the sender as to how it may influence the choice of these | hint to the sender as to how it may influence the choice of these | |||
alternatives. The "No of Multipaths" is the number of IP | alternatives. | |||
Address/Next Label fields. | ||||
3.4. Pad TLV | 3.4. 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 | |||
----- ------- | ----- ------- | |||
1 Drop Pad TLV from reply | 1 Drop Pad TLV from reply | |||
2 Copy Pad TLV to reply | 2 Copy Pad TLV to reply | |||
3-255 Reserved for future use | 3-255 Reserved for future use | |||
3.5. Error Code | 3.5. Vendor Enterprise Code | |||
The Error Code TLV is currently not defined; its purpose is to pro- | ||||
vide a mechanism for a more elaborate error reporting structure, | ||||
should the reason arise. | ||||
3.6. Vendor Enterprise Code | ||||
The Length is always 4; the value is the SMI Enterprise code, in net- | The Length is always 4; the value is the SMI Enterprise code, in net- | |||
work octet order, of the vendor with a Vendor Private extension to | work octet order, of the vendor with a Vendor Private extension to | |||
any of the fields in the fixed part of the message, in which case | any of the fields in the fixed part of the message, in which case | |||
this TLV MUST be present. If none of the fields in the fixed part of | this TLV MUST be present. If none of the fields in the fixed part of | |||
the message have vendor private extensions, this TLV is OPTIONAL. | the message have vendor private extensions, inclusion of this this | |||
TLV in is OPTIONAL. Vendor private ranges for Message Types, Reply | ||||
Modes, and Return Codes have been defined. When any of these are | ||||
used the Vendor Enterprise Code TLV MUST be included in the message. | ||||
3.7. Interface and Label Stack Object | 3.6. Interface and Label Stack | |||
The Interface and Label Stack Object is an optional TLV. It is used | The Interface and Label Stack TLV MAY be included in a reply message | |||
in a Reply message to report the interface on which the Request Mes- | to report the interface on which the request message was received and | |||
sage was received and the label stack which was on the packet when it | the label stack which was on the packet when it was received. Only | |||
was received. Only one such object may appear. The purpose of the | one such object may appear. The purpose of the object is to allow | |||
object is to allow the upstream router to obtain the exact interface | the upstream router to obtain the exact interface and label stack | |||
and label stack information as it appears at the replying LSR. It | information as it appears at the replying LSR. | |||
has two formats, type 7 for IPv4 and type 8 for IPv6 (to be assigned | ||||
by IANA). | ||||
3.7.1. IPv4 Interface and Label Stack Object | The Length is K + 4*N octets, N is the number of labels in the Label | |||
Stack. Values for K are found in the description of Address Type | ||||
below. The Value field of a Downstream Mapping has the following | ||||
format: | ||||
The Length is 8 + 4*N octets, N is the number of Downstream Labels. | ||||
The value field of a Interface and Label Stack TLV has the following | The value field of a Interface and Label Stack TLV has the following | |||
format: | 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 Address | | | Address Type | Must be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Downstream Interface Address | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
. . | ||||
. . | ||||
. Label Stack . | ||||
. . | ||||
. . | ||||
. . | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IP Address (4 or 16 octets) | | ||||
Downstream IPv4 Address | ||||
If the address type is 'No Address', the address field MUST be | ||||
set to zero and ignored on receipt. | ||||
If the address type is 'IPv4', the address field MUST either be | ||||
set to the downstream LSR's Router ID or the downstream LSR's | ||||
interface address. | ||||
If the address type is 'unnumbered', the address field MUST be | ||||
set to the downstream LSR's Router ID. | ||||
Downstream Interface Address | ||||
If the address type is 'IPv4', the interface address field MUST | ||||
MUST be set to the downstream LSR's interface address. | ||||
If the address type is 'unnumbered', interface address field | ||||
MUST be set to the index assigned by the downstream LSR to the | ||||
interface. | ||||
Label Stack | ||||
The label stack of the received echo request message. If any | ||||
TTL values have been changed by this router, they SHOULD be | ||||
restored. | ||||
3.7.2. IPv6 Interface and Label Stack Object | ||||
The Length is 32 + 4*N octets, N is the number of Downstream Labels. | ||||
The value field of a Interface and Label Stack TLV has the following | ||||
format: | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Downstream IPv6 Address | | | Interface (4 or 16 octets) | | |||
| Downstream IPv6 Address (Cont.) | | ||||
| Downstream IPv6 Address (Cont.) | | ||||
| Downstream IPv6 Address (Cont.) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Downstream Interface Address | | | Downstream Interface Address | | |||
| Downstream Interface Address (Cont.) | | ||||
| Downstream Interface Address (Cont.) | | ||||
| Downstream Interface Address (Cont.) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
. . | . . | |||
. . | . . | |||
. Label Stack . | . Label Stack . | |||
. . | . . | |||
. . | . . | |||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Downstream IPv6 Address | Address Type | |||
If the address type is 'No Address', the address field MUST be | The Address Type indicates if the interface is numbered or unnum- | |||
set to zero and ignored on receipt. | bered. It also determines the length of the Downstream IP Address | |||
and Downstream Interface fields. The resulting total for the initial | ||||
part of the TLV is listed in the table below as "K Octets". The | ||||
Address Type is set to one of the following values: | ||||
If the address type is 'IPv6', the address field MUST either be | Type # Address Type K Octets | |||
set to the downstream LSR's Router ID or the downstream LSR's | ------ ------------ -------- | |||
interface address. | 1 IPv4 Numbered 12 | |||
2 IPv4 Unnumbered 12 | ||||
3 IPv6 Numbered 36 | ||||
4 IPv6 Unnumbered 24 | ||||
If the address type is 'unnumbered', the address field MUST be | IP Address and Interface | |||
set to the downstream LSR's Router ID. | ||||
Downstream Interface Address | IPv4 addresses and and interface indices are encoded in 4 octets, | |||
IPv6 addresses are encoded in 16 octets. | ||||
If the address type is 'IPv6', the interface address field MUST | If the interface upon which the echo request message was received is | |||
MUST be set to the downstream LSR's interface address. | numbered, then the Address Type MUST be set to IPv4 or IPv6, the IP | |||
Address MUST be set to either the LSR's Router ID or the interface | ||||
address, and the Interface MUST be set to the interface address. | ||||
If the address type is 'unnumbered', first four octets of | If the interface unnumbered, the Address Type MUST be either IPv4 | |||
interface address field MUST be set to the index assigned by | Unnumbered or IPv6 Unnumbered, the IP Address MUST be the LSR's | |||
the downstream LSR to the interface. The remaining 12 octets | Router ID, and the Interface MUST be set to the index assigned to the | |||
MUST be set to zero. | interface. | |||
Label Stack | Label Stack | |||
The label stack of the received echo request message. If any | The label stack of the received echo request message. If any TTL | |||
TTL values have been changed by this router, they SHOULD be | values have been changed by this router, they SHOULD be restored. | |||
restored. | ||||
3.8. Errored TLVs | 3.7. Errored TLVs | |||
The following TLV is an optional TLV defined to be sent back to the | The following TLV is a TLV which MAY be included in an echo reply to | |||
sender of an Echo Request to inform it of Mandatory TLVs either not | inform the sender of an echo request of Mandatory TLVs either not | |||
supported by an implementation, or parsed and found to be in error. | supported by an implementation, or parsed and found to be in error. | |||
The Value field contains the TLVs not understood encoded as subtlvs. | The Value field contains the TLVs not understood encoded as sub-TLVs. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type = 9 | Length | | | Type = 9 | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Value | | | Value | | |||
. . | . . | |||
. . | . . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.9. Reply TOS Byte TLV | 3.8. Reply TOS Byte TLV | |||
This TLV is used by the originator of the echo request to request | This TLV MAY be used by the originator of the echo request to | |||
request | ||||
that a echo reply be sent with the IP header TOS byte set to | that a echo reply be sent with the IP header TOS byte set to | |||
the value specified in the TLV. This TLV has a length of 4 with | the value specified in the TLV. This TLV has a length of 4 with | |||
the following value field. | the following value field. | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reply-TOS Byte| Must be zero | | | Reply-TOS Byte| Must be zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 29, line 31 | skipping to change at page 29, line 44 | |||
tested is identified by the "FEC Stack"; for example, if the LSP was | 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 | 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 | 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 | 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 | FEC stack consists of a single element that captures the RSVP Session | |||
and Sender Template which uniquely identifies the LSP. | and Sender Template which uniquely identifies the LSP. | |||
FEC stacks can be more complex. For example, one may wish to test a | 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 | 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 | 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 pre- | bottom being a VPN IPv4 prefix, and the top being an LDP IPv4 prefix. | |||
fix. If the underlying (LDP) tunnel were not known, or was consid- | If the underlying (LDP) tunnel were not known, or was considered | |||
ered irrelevant, the FEC stack could be a single element with just | irrelevant, the FEC stack could be a single element with just the VPN | |||
the VPN IPv4 sub-TLV. | IPv4 sub-TLV. | |||
When an MPLS echo request is received, the receiver is expected to do | When an MPLS echo request is received, the receiver is expected to | |||
a number of tests that verify that the control plane and data plane | verify that the control plane and data plane are both healthy (for | |||
are both healthy (for the FEC stack being pinged), and that the two | the FEC stack being pinged), and that the two planes are in sync. | |||
planes are in sync. | The procedures for this are in section 4.4 below. | |||
4.1. Dealing with Equal-Cost Multi-Path (ECMP) | 4.1. Dealing with Equal-Cost Multi-Path (ECMP) | |||
LSPs need not be simple point-to-point tunnels. Frequently, a single | LSPs need not be simple point-to-point tunnels. Frequently, a single | |||
LSP may originate at several ingresses, and terminate at several | LSP may originate at several ingresses, and terminate at several | |||
egresses; this is very common with LDP LSPs. LSPs for a given FEC | 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, | 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 | there may also be several different LSPs to choose from to get to the | |||
desired endpoint. Finally, LSPs may have backup paths, detour paths | desired endpoint. Finally, LSPs may have backup paths, detour paths | |||
and other alternative paths to take should the primary LSP go down. | and other alternative paths to take should the primary LSP go down. | |||
skipping to change at page 30, line 19 | skipping to change at page 30, line 31 | |||
ically not be used for forwarding data unless the primary LSP is down | ically not be used for forwarding data unless the primary LSP is down | |||
will not be addressed here. | will not be addressed here. | |||
Since the actual LSP and path that a given packet may take may not be | 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 | known a priori, it is useful if MPLS echo requests can exercise all | |||
possible paths. This, while desirable, may not be practical, because | possible paths. This, while desirable, may not be practical, because | |||
the algorithms that a given LSR uses to distribute packets over | the algorithms that a given LSR uses to distribute packets over | |||
alternative paths may be proprietary. | alternative paths may be proprietary. | |||
To achieve some degree of coverage of alternate paths, there is a | To achieve some degree of coverage of alternate paths, there is a | |||
certain lattitude in choosing the destination IP address and source | certain latitude in choosing the destination IP address and source | |||
UDP port for an MPLS echo request. This is clearly not sufficient; | 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 | in the case of traceroute, more latitude is offered by means of the | |||
"Multipath Exercise" sub-TLV of the Downstream Mapping TLV. This is | Multipath Information of the Downstream Mapping TLV. This is used as | |||
used as follows. An ingress LSR periodically sends an MPLS tracer- | follows. An ingress LSR periodically sends an MPLS traceroute mes- | |||
oute message to determine whether there are multipaths for a given | sage to determine whether there are multipaths for a given LSP. If | |||
LSP. If so, each hop will provide some information how each of its | so, each hop will provide some information how each of its downstream | |||
downstreams can be exercised. The ingress can then send MPLS echo | paths can be exercised. The ingress can then send MPLS echo requests | |||
requests that exercise these paths. If several transit LSRs have | that exercise these paths. If several transit LSRs have ECMP, the | |||
ECMP, the ingress may attempt to compose these to exercise all possi- | ingress may attempt to compose these to exercise all possible paths. | |||
ble paths. However, full coverage may not be possible. | However, full coverage may not be possible. | |||
4.2. Testing LSPs That Are Used to Carry MPLS Payloads | 4.2. Testing LSPs That Are Used to Carry MPLS Payloads | |||
To detect certain LSP breakages, it may be necessary to encapsulate | To detect certain LSP breakages, it may be necessary to encapsulate | |||
an MPLS echo request packet with at least one additional label when | an MPLS echo request packet with at least one additional label when | |||
testing LSPs that are used to carry MPLS payloads (such as LSPs used | testing LSPs that are used to carry MPLS payloads (such as LSPs used | |||
to carry L2VPN and L3VPN traffic. For example, when testing LDP or | to carry L2VPN and L3VPN traffic. For example, when testing LDP or | |||
RSVP-TE LSPs, just sending an MPLS echo request packet may not detect | RSVP-TE LSPs, just sending an MPLS echo request packet may not detect | |||
instances where the router immediately upstream of the destination of | instances where the router immediately upstream of the destination of | |||
the LSP ping may forward the MPLS echo request successfully over an | the LSP ping may forward the MPLS echo request successfully over an | |||
interface not configured to carry MPLS payloads because of the use of | interface not configured to carry MPLS payloads because of the use of | |||
penultimate hop popping. Since the receiving router has no means to | penultimate hop popping. Since the receiving router has no means to | |||
differentiate whether the IP packet was sent unlabeled or implicitly | differentiate whether the IP packet was sent unlabeled or implicitly | |||
labeled, the addition of labels shimmed above the MPLS echo request | labeled, the addition of labels shimmed above the MPLS echo request | |||
(using the Nil FEC) will prevent a router from forwarding such a | (using the Nil FEC) will prevent a router from forwarding such a | |||
packet out unlabeled interfaces. | packet out unlabeled interfaces. | |||
4.3. Sending an MPLS Echo Request | 4.3. Sending an MPLS Echo Request | |||
An MPLS echo request is a (possibly) labelled UDP packet. The IP | An MPLS echo request is a (possibly) labeled 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). The Router Alert option | (assigned by IANA for MPLS echo requests). The Router Alert option | |||
is set in the IP header. | is set in the IP header. | |||
If the echo request is labelled, one may (depending on what is being | If the echo request is labeled, one may (depending on what is being | |||
pinged) set the TTL of the innermost label to 1, to prevent the ping | pinged) set the TTL of the innermost label to 1, to prevent the ping | |||
request going farther than it should. Examples of this include ping- | request going farther than it should. Examples of this include ping- | |||
ing a VPN IPv4 or IPv6 prefix, an L2 VPN end point or a pseudowire. | ing a VPN IPv4 or IPv6 prefix, an L2 VPN end point or a pseudowire. | |||
This can also be accomplished by inserting a router alert label above | This can also be accomplished by inserting a router alert label above | |||
this label; however, this may lead to the undesired side effect that | this label; however, this may lead to the undesired side effect that | |||
MPLS echo requests take a different data path than actual data. | MPLS echo requests take a different data path than actual data. | |||
In "ping" mode (end-to-end connectivity check), the TTL in the outer- | In "ping" mode (end-to-end connectivity check), the TTL in the outer- | |||
most label is set to 255. In "traceroute" mode (fault isolation | most 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, .... | |||
skipping to change at page 31, line 39 | skipping to change at page 32, line 7 | |||
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. | |||
The TimeStamp Sent is set to the time-of-day (in seconds and | The TimeStamp Sent is set to the time-of-day (in seconds and | |||
microseconds) that the echo request is sent. The TimeStamp Received | microseconds) that the echo request is sent. The TimeStamp Received | |||
is set to zero. | is set to zero. | |||
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. In the "traceroute" mode, the echo request SHOULD a | are set to zero. In the "traceroute" mode, the echo request SHOULD | |||
Downstream Mapping TLV. | include a Downstream Mapping TLV. | |||
4.4. Receiving an MPLS Echo Request | 4.4. Receiving an MPLS Echo Request | |||
An LSR X 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 that are | to ensure that it is a well-formed packet, and that the TLVs that are | |||
not marked "Ignore" are understood. If not, X SHOULD send an MPLS | not marked "Ignore" are understood. If not, X SHOULD send an MPLS | |||
echo reply with the Return Code set to "Malformed echo request | echo reply with the Return Code set to "Malformed echo request | |||
received" or "TLV not understood" (as appropriate), and the Subcode | received" or "TLV not understood" (as appropriate), and the Subcode | |||
set to zero. In the latter case, the misunderstood TLVs (only) are | set to zero. In the latter case, the misunderstood TLVs (only) are | |||
included in the reply. | included in the reply. | |||
If the echo request is good, X notes the interface I over which the | If the echo request is good, X notes the interface I over which the | |||
echo was received, and the label stack with which it came. | echo was received, and the label stack with which it came. | |||
X matches up the labels in the received label stack with the FECs | For reporting purposes the bottom of stack is considered to be stack- | |||
contained in the FEC stack. The matching is done beginning at the | depth of 1. This is to establish an absolute reference for the case | |||
bottom of both stacks, and working up. For reporting purposes the | where the stack may have more labels than are in the FEC stack. Fur- | |||
bottom of stack is consided to be stack-depth of 1. This is to | ther, in all the error codes listed in this document a stack-depth of | |||
establish an absolute reference for the case where the stack may have | 0 means "no value specified". This allows compatibility with exist- | |||
more labels than are in the FEC stack. | ing implementations which do not use the Return Subcode field. | |||
If there are more FECs than labels, the extra FECs are assumed to | ||||
correspond to Implicit Null Labels. Thus for the processing below, | ||||
there is never the case where there is a FEC with no corresponding | ||||
label. Further the label operation associated with an assumed Null | ||||
Label is 'pop and continue processing'. | ||||
Note: in all the error codes listed in this draft a stack-depth of 0 | ||||
means "no value specified". This allows compatibility with existing | ||||
implementations which do not use the Return Subcode field. | ||||
X sets two variables, called FEC-stack-depth and Label-stack-depth, | X employs two variables, called FEC-stack-depth and Label-stack- | |||
to the number of labels in the received label stack. If the label- | depth. X sets Label-stack-depth to the number of labels in the | |||
stack-depth is 0, assume there is one implicit null label and set | received label stack. If the label-stack-depth is 0, assume there is | |||
label-stack-depth to 1. Processing now continues with the following | one implicit null label and set label-stack-depth to 1. FEC-stack- | |||
steps: | depth is used later and need not be initialized. Processing now con- | |||
tinues with the following steps: | ||||
Label_Validation: | Label_Validation: | |||
If the label at Label-stack-depth is valid, goto Label_Operation. | If the label at Label-stack-depth is valid, goto Label_Operation. | |||
If not, set Best-return-code to 11, "No label entry at stack-depth" | If not, set Best-return-code to 11, "No label entry at stack-depth" | |||
and Best-return-subcode to Label-stack-depth. Goto | and Best-return-subcode to Label-stack-depth. Goto | |||
Send_Reply_Packet. | Send_Reply_Packet. | |||
Label_Operation: | Label_Operation: | |||
skipping to change at page 33, line 15 | skipping to change at page 33, line 20 | |||
Case: Swap or Pop and Switch based on Popped Label | Case: Swap or Pop and Switch based on Popped Label | |||
If the label operation is either swap or pop and switch based on | If the label operation is either swap or pop and switch based on | |||
the popped label, Best-return-code to 8, "Label switched at | the popped label, Best-return-code to 8, "Label switched at | |||
stack-depth" and Best-return-subcode to Label-stack-depth. | stack-depth" and Best-return-subcode to Label-stack-depth. | |||
If a Downstream Mapping TLV is present, a Downstream mapping TLVs | If a Downstream Mapping TLV is present, a Downstream mapping TLVs | |||
SHOULD be created for each multipath. | SHOULD be created for each multipath. | |||
Determine the output interface. If it is not valid to forward a | Determine the output interface. If it is not valid to forward a | |||
labelled packet on this interface, set Best-return-code to Return | labeled packet on this interface, set Best-return-code to Return | |||
Code 9, "Label switched but no MPLS forwarding at stack-depth" | Code 9, "Label switched but no MPLS forwarding at stack-depth" | |||
and set Best-return-subcode to Label-stack-depth and goto | and set Best-return-subcode to Label-stack-depth and goto | |||
Send_Reply_Packet. (Note: this return code is set even if Label- | Send_Reply_Packet. (Note: this return code is set even if Label- | |||
stack-depth is one.) | stack-depth is one.) | |||
If no Downstream Mapping TLV is present, or the Downstream IP | If no Downstream Mapping TLV is present, or the Downstream IP | |||
Address is set to the All-Routers multicast address goto | Address is set to the All-Routers multicast address goto | |||
Send_Reply_Packet. | Send_Reply_Packet. | |||
Verify that the IP address, interface address and label stack | Verify that the IP address, interface address and label stack | |||
match the received interface and label stack. If not, set Best- | match the received interface and label stack. If the IP address | |||
return-code to 5, "Downstream Mapping Mis-match". A Received | is either 127.0.0.1 or 0::1 bypass the interface check, and set | |||
Interface and Label Stack TLV SHOULD be created. Goto | Best-return-code to 6, "Upstream Interface Index Unknown". For | |||
any other error, set Best-return-code to 5, "Downstream Mapping | ||||
Mis-match". For either error, an Interface and Label Stack TLV | ||||
SHOULD be created. If Best-return-code equals 5, goto | ||||
Send_Reply_Packet. | Send_Reply_Packet. | |||
If the "Validate FEC Stack" flag is not set, goto | If the "Validate FEC Stack" flag is not set, goto | |||
Send_Reply_Packet. | Send_Reply_Packet. | |||
Locate the label at Label-stack-depth in the Downstream Labels | Locate the label at Label-stack-depth in the Downstream Labels by | |||
and set FEC-stack-depth to that depth. (Note: If the Downstream | counting from the bottom of the stack, skipping over, but count- | |||
Labels contain one or more Implicit Null labels, this may be at a | ing Implicit Null labels and set FEC-stack-depth to that depth. | |||
depth greater than Label-stack-depth. | (Note: If the Downstream Labels contain one or more Implicit Null | |||
labels, this may be at a depth greater than Label-stack-depth.) | ||||
If the depth of the FEC stack is greater than or equal to FEC- | If the depth of the FEC stack is greater than or equal to FEC- | |||
stack-depth, Perform FEC Checking. If FEC-status is 2, set Best- | stack-depth, Perform FEC Checking. If FEC-status is 2, set Best- | |||
return-code to 10, "Mapping for this FEC is not the given label | return-code to 10, "Mapping for this FEC is not the given label | |||
at stack-depth". | at stack-depth". | |||
If the return code is 1 set Best-return-code to FEC-return-code | If the return code is 1 set Best-return-code to FEC-return-code | |||
and Best-return-subcode to FEC-stack-depth. | and Best-return-subcode to FEC-stack-depth. | |||
Goto Send_Reply_Packet. | Goto Send_Reply_Packet. | |||
Egress_Processing: | Egress_Processing: | |||
If no Downstream Mapping TLV is present, goto | If no Downstream Mapping TLV is present, goto Egress_FEC_Valida- | |||
Egress_FEC_Validation. | tion. | |||
Verify that the IP address, interface address and label stack match | Verify that the IP address, interface address and label stack match | |||
the received interface and label stack. If not, set Best-return- | the received interface and label stack. If not, set Best-return- | |||
code to 5, "Downstream Mapping Mis-match". A Received Interface | code to 5, "Downstream Mapping Mis-match". A Received Interface | |||
and Label Stack TLV SHOULD be created. Goto Send_Reply_Packet. | and Label Stack TLV SHOULD be created. Goto Send_Reply_Packet. | |||
Egress_FEC_Validation: | Egress_FEC_Validation: | |||
Perform FEC checking. If FEC-status is 1, set Best-return-code | Perform FEC checking. If FEC-status is 1, set Best-return-code | |||
to FEC-code and Best-return-subcode to FEC-stack-depth. Goto | to FEC-code and Best-return-subcode to FEC-stack-depth. Goto | |||
skipping to change at page 35, line 31 | skipping to change at page 35, line 41 | |||
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. If the reply is sent over an LSP, the | 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 | topmost label MUST in this case be the Router Alert label (1) (see | |||
[LABEL-STACK]). | [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 requester 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 replying router is the destination of the FEC, then Downstream | If the replying router is the destination of the FEC, then Downstream | |||
skipping to change at page 36, line 8 | skipping to change at page 36, line 17 | |||
If the echo request contains a Downstream Mapping TLV, and the reply- | If the echo request contains a Downstream Mapping TLV, and the reply- | |||
ing router is not the destination of the FEC, the replier SHOULD com- | ing router is not the destination of the FEC, the replier SHOULD com- | |||
pute its downstream routers and corresponding labels for the incoming | pute its downstream routers and corresponding labels for the incoming | |||
label, and add Downstream Mapping TLVs for each one to the echo reply | label, and add Downstream Mapping TLVs for each one to the echo reply | |||
it sends back. | it sends back. | |||
If the Downstream Mapping TLV contains multipath information requir- | If the Downstream Mapping TLV contains multipath information requir- | |||
ing more processing than the receiving router is willing to perform, | ing more processing than the receiving router is willing to perform, | |||
the responding router MAY choose to respond with only a subset of | the responding router MAY choose to respond with only a subset of | |||
multipaths contained in the Echo Request Downstream Map. (Note: The | multipaths contained in the echo request Downstream Map. (Note: The | |||
originator of the echo request MAY send another echo request with the | originator of the echo request MAY send another echo request with the | |||
multipath information that was not included in the reply.) | multipath information that was not included in the reply.) | |||
4.6. Receiving an MPLS Echo Reply | 4.6. 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; oth- | Handle. If no match is found, then X jettisons the echo reply; oth- | |||
erwise, it checks the Sequence Number to see if it matches. Gaps in | erwise, it checks the Sequence Number to see if it matches. Gaps in | |||
the Sequence Number MAY be logged and SHOULD be counted. Once an | 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 Mapping(s) into its | |||
next Echo Request (with TTL incremented by one). | next echo request(s) (with TTL incremented by one). | |||
4.7. Issue with VPN IPv4 and IPv6 Prefixes | 4.7. Issue with VPN IPv4 and IPv6 Prefixes | |||
Typically, a LSP ping for a VPN IPv4 or IPv6 prefix is sent with a | Typically, a LSP ping for a VPN IPv4 or IPv6 prefix is sent with a | |||
label stack of depth greater than 1, with the innermost label having | label stack of depth greater than 1, with the innermost label having | |||
a TTL of 1. This is to terminate the ping at the egress PE, before | a TTL of 1. This is to terminate the ping at the egress PE, before | |||
it gets sent to the customer device. However, under certain circum- | it gets sent to the customer device. However, under certain circum- | |||
stances, the label stack can shrink to a single label before the ping | stances, the label stack can shrink to a single label before the ping | |||
hits the egress PE; this will result in the ping terminating prema- | hits the egress PE; this will result in the ping terminating prema- | |||
turely. One such scenario is a multi-AS Carrier's Carrier VPN. | turely. One such scenario is a multi-AS Carrier's Carrier VPN. | |||
skipping to change at page 37, line 18 | skipping to change at page 37, line 22 | |||
ping, then no reply will be sent, resulting in possible "false nega- | ping, then no reply will be sent, resulting in possible "false nega- | |||
tives". If in "traceroute" mode, a transit LSR does not support LSP | tives". If in "traceroute" mode, a transit LSR does not support LSP | |||
ping, then no reply will be forthcoming from that LSR for some TTL, | ping, then no reply will be forthcoming from that LSR for some TTL, | |||
say n. The LSR originating the echo request SHOULD try sending the | say n. The LSR originating the echo request SHOULD try sending the | |||
echo request with TTL=n+1, n+2, ..., n+k to probe LSRs further down | echo request with TTL=n+1, n+2, ..., n+k to probe LSRs further down | |||
the path. In such a case, the echo request for TTL > n SHOULD be | the path. In such a case, the echo request for TTL > n SHOULD be | |||
sent with Downstream Mapping TLV "Downstream IP Address" field set to | sent with Downstream Mapping TLV "Downstream IP Address" field set to | |||
the ALLROUTERs multicast address until a reply is received with a | the ALLROUTERs multicast address until a reply is received with a | |||
Downstream Mapping TLV. The Label Stack MAY be omitted from the | Downstream Mapping TLV. The Label Stack MAY be omitted from the | |||
Downstream Mapping TLV. Further the "Validate FEC Stack" flag SHOULD | Downstream Mapping TLV. Further the "Validate FEC Stack" flag SHOULD | |||
NOT be set until an ECHO REQUEST packet with a Downstream Mapping TLV | NOT be set until an echo reply packet with a Downstream Mapping TLV | |||
is received. | is received. | |||
5. References | 5. References | |||
Normative References | Normative References | |||
[IANA] Narten, T. and H. Alvestrand, "Guidelines for IANA | [IANA] Narten, T. and H. Alvestrand, "Guidelines for IANA | |||
Considerations", BCP 26, RFC 2434, October 1998. | Considerations", BCP 26, RFC 2434, October 1998. | |||
[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-STACK] Rosen, E., et al, "MPLS Label Stack Encoding", | [LABEL-STACK] Rosen, E., et al, "MPLS Label Stack Encoding", | |||
RFC 3032, January 2001. | RFC 3032, January 2001. | |||
[RSVP] Braden, R. (Editor), et al, "Resource ReSerVation | ||||
Protocol (RSVP) -- Version 1 Functional | ||||
Specification," RFC 2205, September 1997. | ||||
[RSVP-REFRESH] Berger, L., et al, "RSVP Refresh Overhead Reduction | ||||
Extensions", RFC 2961, April 2001. | ||||
[RSVP-TE] Awduche, D., et al, "RSVP-TE: Extensions to RSVP for | ||||
LSP tunnels", RFC 3209, December 2001. | ||||
Informative References | Informative References | |||
[ICMP] Postel, J., "Internet Control Message Protocol", | [ICMP] Postel, J., "Internet Control Message Protocol", | |||
RFC 792. | RFC 792. | |||
[LDP] Andersson, L., et al, "LDP Specification", RFC 3036, | [LDP] Andersson, L., et al, "LDP Specification", RFC 3036, | |||
January 2001. | January 2001. | |||
6. Security Considerations | 6. Security Considerations | |||
There are at least two approaches to attacking LSRs using the mecha- | There are at least two approaches to attacking LSRs using the mecha- | |||
nisms defined here. One is a Denial of Service attack, by sending | nisms defined here. One is a Denial of Service attack, by sending | |||
MPLS echo requests/replies to LSRs and thereby increasing their work- | MPLS echo requests/replies to LSRs and thereby increasing their work- | |||
load. The other is obfuscating the state of the MPLS data plane | load. The other is obfuscating the state of the MPLS data plane | |||
liveness by spoofing, hijacking, replaying or otherwise tampering | liveness by spoofing, hijacking, replaying or otherwise tampering | |||
with MPLS echo requests and replies. | with MPLS echo requests and replies. | |||
Authentication will help reduce the number of seemingly valid MPLS | Authentication will help reduce the number of seemingly valid MPLS | |||
echo requests, and thus cut down the Denial of Service attacks; | echo requests, and thus cut down the Denial of Service attacks; | |||
beyond that, each LSR must protect itself. | beyond that, each LSR must protect itself. To avoid potential Denial | |||
of Service attacks, it is RECOMMENDED that implementations regulate | ||||
the LSP ping traffic going to the control plane. A rate limiter | ||||
SHOULD be applied to the well-known UDP port defined below. | ||||
Authentication sufficiently addresses spoofing, replay and most tam- | Authentication sufficiently addresses spoofing, replay and most tam- | |||
pering attacks; one hopes to use some mechanism devised or suggested | pering attacks; one hopes to use some mechanism devised or suggested | |||
by the RPSec WG. It is not clear how to prevent hijacking (non- | by the RPSec WG. It is not clear how to prevent hijacking (non- | |||
delivery) of echo requests or replies; however, if these messages are | delivery) of echo requests or replies; however, if these messages are | |||
indeed hijacked, LSP ping will report that the data plane isn't work- | indeed hijacked, LSP ping will report that the data plane isn't work- | |||
ing as it should. | ing as it should. | |||
It doesn't seem vital (at this point) to secure the data carried in | It doesn't seem vital (at this point) to secure the data carried in | |||
MPLS echo requests and replies, although knowledge of the state of | MPLS echo requests and replies, although knowledge of the state of | |||
skipping to change at page 39, line 8 | skipping to change at page 39, line 11 | |||
however, the message MUST contain an enterprise code as registered | however, the message MUST contain an enterprise code as registered | |||
with the IANA SMI Network Management Private Enterprise Codes. For | with the IANA SMI Network Management Private Enterprise Codes. For | |||
each name space that has a Vendor Private range, it must be specified | each name space that has a Vendor Private range, it must be specified | |||
where exactly the SMI Enterprise Code resides; see below for exam- | where exactly the SMI Enterprise Code resides; see below for exam- | |||
ples. In this way, several enterprises (vendors) can use the same | ples. In this way, several enterprises (vendors) can use the same | |||
code point without fear of collision. | code point without fear of collision. | |||
7.1. Message Types, Reply Modes, Return Codes | 7.1. Message Types, Reply Modes, Return Codes | |||
It is requested that IANA maintain registries for Message Types, | It is requested that IANA maintain registries for Message Types, | |||
Reply Modes, Return Codes and Return Subcodes. Each of these can | Reply Modes, and Return Codes. Each of these can take values in the | |||
take values in the range 0-255. Assignments in the range 0-191 are | range 0-255. Assignments in the range 0-191 are via Standards | |||
via Standards Action; assignments in the range 192-251 are made via | Action; assignments in the range 192-251 are made via Expert Review; | |||
Expert Review; values in the range 252-255 are for Vendor Private | values in the range 252-255 are for Vendor Private Use, and MUST NOT | |||
Use, and MUST NOT be allocated. | be allocated. | |||
If any of these fields fall in the Vendor Private range, a top-level | If any of these fields fall in the Vendor Private range, a top-level | |||
Vendor Enterprise Code TLV MUST be present in the message. | Vendor Enterprise Code TLV MUST be present in the message. | |||
Message Types defined in this document are: | ||||
Value Meaning | ||||
----- ------- | ||||
1 MPLS Echo Request | ||||
2 MPLS Echo Reply | ||||
Reply Modes defined in this document are: | ||||
Value Meaning | ||||
----- ------- | ||||
1 Do not reply | ||||
2 Reply via an IPv4/IPv6 UDP packet | ||||
3 Reply via an IPv4/IPv6 UDP packet with Router Alert | ||||
4 Reply via application level control channel | ||||
Return Codes defined in this document are listed in section 3.1. | ||||
7.2. TLVs | 7.2. TLVs | |||
It is requested that IANA maintain registries for the Type field of | It is requested that IANA maintain a registry for the Type field of | |||
top-level TLVs as well as for sub-TLVs. The valid range for each of | top-level TLVs as well as for any associated sub-TLVs. Note the | |||
these is 0-65535. Assignments in the range 0-16383 and 32768-49161 | meaning of a sub-TLV is scoped by the TLV. The valid range for each | |||
are made via Standards Action as defined in [IANA]; assignments in | of these is 0-65535. Assignments in the range 0-16383 and | |||
the range 16384-31743 and 49162-64511 are made via Expert Review (see | 32768-49161 are made via Standards Action as defined in [IANA]; | |||
below); values in the range 31744-32746 and 64512-65535 are for Ven- | assignments in the range 16384-31743 and 49162-64511 are made via | |||
dor Private Use, and MUST NOT be allocated. | Expert Review (see below); values in the range 31744-32746 and | |||
64512-65535 are for Vendor Private Use, and MUST NOT be allocated. | ||||
If a TLV or sub-TLV has a Type that falls in the range for Vendor | If a TLV or sub-TLV has a Type that falls in the range for Vendor | |||
Private Use, the Length MUST be at least 4, and the first four octets | Private Use, the Length MUST be at least 4, and the first four octets | |||
MUST be that vendor's SMI Enterprise Code, in network octet order. | MUST be that vendor's SMI Enterprise Code, in network octet order. | |||
The rest of the Value field is private to the vendor. | The rest of the Value field is private to the vendor. | |||
TLVs and sub-TLVs defined in this document are: | ||||
Type Sub-Type Value Field | ||||
---- -------- ----------- | ||||
1 Target FEC Stack | ||||
1 LDP IPv4 prefix | ||||
2 LDP IPv6 prefix | ||||
3 RSVP IPv4 LSP | ||||
4 RSVP IPv6 LSP | ||||
5 Not Assigned | ||||
6 VPN IPv4 prefix | ||||
7 VPN IPv6 prefix | ||||
8 L2 VPN endpoint | ||||
9 "FEC 128" Pseudowire (Deprecated) | ||||
10 "FEC 128" Pseudowire | ||||
11 "FEC 129" Pseudowire | ||||
12 BGP labeled IPv4 prefix | ||||
13 BGP labeled IPv6 prefix | ||||
14 Generic IPv4 prefix | ||||
15 Generic IPv6 prefix | ||||
16 Nil FEC | ||||
2 Downstream Mapping | ||||
3 Pad | ||||
4 Not Assigned | ||||
5 Vendor Enterprise Code | ||||
6 Not Assigned | ||||
7 Interface and Label Stack | ||||
8 Not Assigned | ||||
9 Errored TLVs | ||||
Any value The TLV not understood | ||||
10 Reply TOS Byte | ||||
8. Acknowledgments | 8. 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, Ina Minei, Shivani Aggarwal and Vanson | Gan, Brook Bailey, Eric Rosen, Ina Minei, Shivani Aggarwal and Vanson | |||
Lim. | Lim. | |||
The description of the Multipath Information sub-field of the Down- | The description of the Multipath Information sub-field of the Down- | |||
stream Mapping TLV was adapted from text suggested by Curtis Vil- | stream Mapping TLV was adapted from text suggested by Curtis Vil- | |||
lamizar. | lamizar. | |||
A. Appendix | ||||
This appendix specifies non-normative aspects of detecting MPLS data | ||||
plane liveness. | ||||
A.1. CR-LDP FEC | ||||
This section describes how a CR-LDP FEC can be included in an Echo | ||||
Request using the following FEC subtype: | ||||
Sub-Type # Length Value Field | ||||
---------- ------ ------------- | ||||
5 6 CR-LDP LSP ID | ||||
The value consists of the LSPID of the LSP being pinged. An LSPID is | ||||
a four octet IPv4 address (a local address on the ingress LSR, for | ||||
example, the Router ID) plus a two octet identifier that is unique | ||||
per LSP on a given ingress LSR. | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Ingress LSR Router ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Must Be Zero | LSP ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
A.2. Downstream Mapping for CR-LDP | ||||
If a label in a Downstream Mapping was learned via CR-LDP, the Proto- | ||||
col field in the Mapping TLV can use the following entry: | ||||
Protocol # Signaling Protocol | ||||
---------- ------------------ | ||||
5 CR-LDP | ||||
Authors' Address | Authors' Address | |||
Kireeti Kompella | Kireeti Kompella | |||
Juniper Networks | Juniper Networks | |||
1194 N.Mathilda Ave | 1194 N.Mathilda Ave | |||
Sunnyvale, CA 94089 | Sunnyvale, CA 94089 | |||
Email: kireeti@juniper.net | Email: kireeti@juniper.net | |||
George Swallow | George Swallow | |||
Cisco Systems | Cisco Systems | |||
1414 Massachusetts Ave, | 1414 Massachusetts Ave, | |||
Boxborough, MA 01719 | Boxborough, MA 01719 | |||
Phone: +1 978 936 1398 | Phone: +1 978 936 1398 | |||
Email: swallow@cisco.com | Email: swallow@cisco.com | |||
Full Copyright and Intellectual Property Statements | Copyright Notice | |||
Copyright (C) The Internet Society (2005). This document is subject | Copyright (C) The Internet Society (2005). This document is subject | |||
to the rights, licenses and restrictions contained in BCP 78, and | to the rights, licenses and restrictions contained in BCP 78, and | |||
except as set forth therein, the authors retain all their rights. | except as set forth therein, the authors retain all their rights. | |||
Expiration Date | ||||
November 2005 | ||||
Disclaimer of Validity | Disclaimer of Validity | |||
This document and the information contained herein are provided on an | This document and the information contained herein are provided on an | |||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFOR- | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFOR- | |||
MATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES | MATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES | |||
OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
Intellectual Property | ||||
The IETF takes no position regarding the validity or scope of any | ||||
Intellectual Property Rights or other rights that might be claimed to | ||||
pertain to the implementation or use of the technology described in | ||||
this document or the extent to which any license under such rights | ||||
might or might not be available; nor does it represent that it has | ||||
made any independent effort to identify any such rights. Information | ||||
on the procedures with respect to rights in RFC documents can be | ||||
found in BCP 78 and BCP 79. | ||||
Copies of IPR disclosures made to the IETF Secretariat and any assur- | ||||
ances of licenses to be made available, or the result of an attempt | ||||
made to obtain a general license or permission for the use of such | ||||
proprietary rights by implementers or users of this specification can | ||||
be obtained from the IETF on-line IPR repository at | ||||
http://www.ietf.org/ipr. | ||||
The IETF invites any interested party to bring to its attention any | ||||
copyrights, patents or patent applications, or other proprietary | ||||
rights that may cover technology that may be required to implement | ||||
this standard. Please address the information to the IETF at ietf- | ||||
ipr@ietf.org. | ||||
Acknowledgement | ||||
Funding for the RFC Editor function is currently provided by the | ||||
Internet Society. | ||||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |