draft-ietf-mpls-lsp-ping-13.txt | rfc4379.txt | |||
---|---|---|---|---|
Network Working Group Kireeti Kompella | ||||
Internet Draft Juniper Networks, Inc. | ||||
Category: Standards Track | ||||
Expiration Date: July 2006 | ||||
George Swallow | ||||
Cisco Systems, Inc. | ||||
January 2006 | ||||
Detecting MPLS Data Plane Failures | ||||
draft-ietf-mpls-lsp-ping-13.txt | ||||
Status of this Memo | Network Working Group K. Kompella | |||
Request for Comments: 4379 Juniper Networks, Inc. | ||||
Updates: 1122 G. Swallow | ||||
Category: Standards Track Cisco Systems, Inc. | ||||
February 2006 | ||||
By submitting this Internet-Draft, each author represents that any | Detecting Multi-Protocol Label Switched (MPLS) Data Plane Failures | |||
applicable patent or other IPR claims of which he or she is aware | ||||
have been or will be disclosed, and any of which he or she becomes | ||||
aware will be disclosed, in accordance with Section 6 of BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | Status of This Memo | |||
Task Force (IETF), its areas, and its working groups. Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document specifies an Internet standards track protocol for the | |||
and may be updated, replaced, or obsoleted by other documents at any | Internet community, and requests discussion and suggestions for | |||
time. It is inappropriate to use Internet-Drafts as reference | improvements. Please refer to the current edition of the "Internet | |||
material or to cite them other than as "work in progress." | Official Protocol Standards" (STD 1) for the standardization state | |||
and status of this protocol. Distribution of this memo is unlimited. | ||||
The list of current Internet-Drafts can be accessed at | Copyright Notice | |||
http://www.ietf.org/1id-abstracts.html | ||||
The list of Internet-Draft Shadow Directories can be accessed at | Copyright (C) The Internet Society (2006). | |||
http://www.ietf.org/shadow.html | ||||
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. | |||
Contents | Table of Contents | |||
1 Introduction .............................................. 4 | 1. Introduction ....................................................2 | |||
1.1 Conventions ............................................... 4 | 1.1. Conventions ................................................3 | |||
1.2 Structure of this document ................................ 4 | 1.2. Structure of This Document .................................3 | |||
1.3 Contributors .............................................. 5 | 1.3. Contributors ...............................................3 | |||
2 Motivation ................................................ 5 | 2. Motivation ......................................................4 | |||
2.1 Use of address range 127/8 ................................ 6 | 2.1. Use of Address Range 127/8 .................................4 | |||
3 Packet Format ............................................. 7 | 3. Packet Format ...................................................6 | |||
3.1 Return Codes .............................................. 12 | 3.1. Return Codes ..............................................10 | |||
3.2 Target FEC Stack .......................................... 13 | 3.2. Target FEC Stack ..........................................11 | |||
3.2.1 LDP IPv4 Prefix ........................................... 14 | 3.2.1. LDP IPv4 Prefix ....................................12 | |||
3.2.2 LDP IPv6 Prefix ........................................... 14 | 3.2.2. LDP IPv6 Prefix ....................................13 | |||
3.2.3 RSVP IPv4 LSP ............................................. 15 | 3.2.3. RSVP IPv4 LSP ......................................13 | |||
3.2.4 RSVP IPv6 LSP ............................................. 15 | 3.2.4. RSVP IPv6 LSP ......................................14 | |||
3.2.5 VPN IPv4 Prefix ........................................... 16 | 3.2.5. VPN IPv4 Prefix ....................................14 | |||
3.2.6 VPN IPv6 Prefix ........................................... 17 | 3.2.6. VPN IPv6 Prefix ....................................15 | |||
3.2.7 L2 VPN Endpoint ........................................... 17 | 3.2.7. L2 VPN Endpoint ....................................16 | |||
3.2.8 FEC 128 Pseudowire (Deprecated) ........................... 18 | 3.2.8. FEC 128 Pseudowire (Deprecated) ....................16 | |||
3.2.9 FEC 128 Pseudowire (Current) .............................. 19 | 3.2.9. FEC 128 Pseudowire (Current) .......................17 | |||
3.2.10 FEC 129 Pseudowire ........................................ 19 | 3.2.10. FEC 129 Pseudowire ................................18 | |||
3.2.11 BGP Labeled IPv4 Prefix ................................... 20 | 3.2.11. BGP Labeled IPv4 Prefix ...........................19 | |||
3.2.12 BGP Labeled IPv6 Prefix ................................... 21 | 3.2.12. BGP Labeled IPv6 Prefix ...........................20 | |||
3.2.13 Generic IPv4 Prefix ....................................... 21 | 3.2.13. Generic IPv4 Prefix ...............................20 | |||
3.2.14 Generic IPv6 Prefix ....................................... 22 | 3.2.14. Generic IPv6 Prefix ...............................21 | |||
3.2.15 Nil FEC ................................................... 22 | 3.2.15. Nil FEC ...........................................21 | |||
3.3 Downstream Mapping ........................................ 23 | 3.3. Downstream Mapping ........................................22 | |||
3.3.1 Multipath Information Encoding ............................ 27 | 3.3.1. Multipath Information Encoding .....................26 | |||
3.3.2 Downstream Router and Interface ........................... 29 | 3.3.2. Downstream Router and Interface ....................28 | |||
3.4 Pad TLV ................................................... 30 | 3.4. Pad TLV ...................................................29 | |||
3.5 Vendor Enterprise Number .................................. 30 | 3.5. Vendor Enterprise Number ..................................29 | |||
3.6 Interface and Label Stack ................................. 31 | 3.6. Interface and Label Stack .................................29 | |||
3.7 Errored TLVs .............................................. 32 | 3.7. Errored TLVs ..............................................31 | |||
3.8 Reply TOS Byte TLV ........................................ 33 | 3.8. Reply TOS Byte TLV ........................................31 | |||
4 Theory of Operation ....................................... 33 | 4. Theory of Operation ............................................32 | |||
4.1 Dealing with Equal-Cost Multi-Path (ECMP) ................. 33 | 4.1. Dealing with Equal-Cost Multi-Path (ECMP) .................32 | |||
4.2 Testing LSPs That Are Used to Carry MPLS Payloads ......... 34 | 4.2. Testing LSPs That Are Used to Carry MPLS Payloads .........33 | |||
4.3 Sending an MPLS Echo Request .............................. 35 | 4.3. Sending an MPLS Echo Request ..............................33 | |||
4.4 Receiving an MPLS Echo Request ............................ 36 | 4.4. Receiving an MPLS Echo Request ............................34 | |||
4.4.1 FEC Validation ............................................ 41 | 4.4.1. FEC Validation .....................................40 | |||
4.5 Sending an MPLS Echo Reply ................................ 42 | 4.5. Sending an MPLS Echo Reply ................................41 | |||
4.6 Receiving an MPLS Echo Reply .............................. 43 | 4.6. Receiving an MPLS Echo Reply ..............................42 | |||
4.7 Issue with VPN IPv4 and IPv6 Prefixes ..................... 44 | 4.7. Issue with VPN IPv4 and IPv6 Prefixes .....................42 | |||
4.8 Non-compliant Routers ..................................... 44 | 4.8. Non-compliant Routers .....................................43 | |||
5 References ................................................ 44 | 5. References .....................................................43 | |||
6 Security Considerations ................................... 46 | 5.1. Normative References ......................................43 | |||
7 IANA Considerations ....................................... 47 | 5.2. Informative References ....................................44 | |||
7.1 Message Types, Reply Modes, Return Codes .................. 47 | 6. Security Considerations ........................................44 | |||
7.2 TLVs ...................................................... 48 | 7. IANA Considerations ............................................46 | |||
8 Acknowledgments ........................................... 49 | 7.1. Message Types, Reply Modes, Return Codes ..................46 | |||
7.2. TLVs ......................................................47 | ||||
8. Acknowledgements ...............................................48 | ||||
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 Label Switched Paths | |||
to this document: information carried in an MPLS "echo request" and | (LSPs). There are two parts to this document: information carried in | |||
"echo reply"; and mechanisms for transporting the echo reply. The | an MPLS "echo request" and "echo reply", and mechanisms for | |||
first part aims at providing enough information to check correct | transporting the echo reply. The first part aims at providing enough | |||
operation of the data plane, as well as a mechanism to verify the | information to check correct operation of the data plane, as well as | |||
data plane against the control plane, and thereby localize faults. | a mechanism to verify the data plane against the control plane, and | |||
The second part suggests two methods of reliable reply channels for | thereby localize faults. The second part suggests two methods of | |||
the echo request message, for more robust fault isolation. | reliable reply channels for 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 | |||
ered in this document. | covered in this document. | |||
This document makes special use of the address range 127/8. This is | This document makes special use of the address range 127/8. This is | |||
an exception to the behavior defined in RFC1122 [RFC1122] and updates | an exception to the behavior defined in RFC 1122 [RFC1122] and | |||
that RFC. The motivation for this change and the details of this | updates that RFC. The motivation for this change and the details of | |||
exceptional use are discussed in section 2.1 below. | this exceptional use are discussed in section 2.1 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]. | |||
The term "Must be Zero" (MBZ) is used in object descriptions for | The term "Must Be Zero" (MBZ) is used in object descriptions for | |||
reserved fields. These fields MUST be set to zero when sent and | reserved fields. These fields MUST be set to zero when sent and | |||
ignored on receipt. | ignored on receipt. | |||
Terminology pertaining to L2 and L3 VPNs is defined in [RFC4026]. | Terminology pertaining to L2 and L3 Virtual Private Networks (VPNs) | |||
is defined in [RFC4026]. | ||||
1.2. Structure of this document | Since this document refers to the MPLS Time to Live (TTL) far more | |||
frequently than the IP TTL, the authors have chosen the convention of | ||||
using the unqualified "TTL" to mean "MPLS TTL" and using "IP TTL" for | ||||
the TTL value in the IP header. | ||||
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 | |||
return path. It is suggested that first-time readers skip the actual | return path. It is suggested that first-time readers skip the actual | |||
packet formats and read the Theory of Operation first; the document | packet formats and read the Theory of Operation first; the document | |||
is structured the way it is to avoid forward references. | is structured the way it is to avoid forward references. | |||
1.3. Contributors | 1.3. Contributors | |||
The following made vital contributions to all aspects of this docu- | The following made vital contributions to all aspects of this | |||
ment, and much of the material came out of debate and discussion | document, and much of the material came out of debate and discussion | |||
among this group. | among this group. | |||
Ronald P. Bonica, Juniper Networks, Inc. | Ronald P. Bonica, Juniper Networks, Inc. | |||
Dave Cooper, Global Crossing | Dave Cooper, Global Crossing | |||
Ping Pan, Hammerhead Systems | Ping Pan, Hammerhead Systems | |||
Nischal Sheth, Juniper Networks, Inc. | Nischal Sheth, Juniper Networks, Inc. | |||
Sanjay Wadhwa, Juniper Networks, Inc. | Sanjay Wadhwa, Juniper Networks, Inc. | |||
2. Motivation | 2. Motivation | |||
When an LSP fails to deliver user traffic, the failure cannot always | When an LSP fails to deliver user traffic, the failure cannot always | |||
be detected by the MPLS control plane. There is a need to provide a | be detected by the MPLS control plane. There is a need to provide a | |||
tool that would enable users to detect such traffic "black holes" or | tool that would enable users to detect such traffic "black holes" or | |||
misrouting within a reasonable period of time; and a mechanism to | misrouting within a reasonable period of time, and a mechanism to | |||
isolate faults. | isolate faults. | |||
In this document, we describe a mechanism that accomplishes these | In this document, we describe a mechanism that accomplishes these | |||
goals. This mechanism is modeled after the ping/traceroute paradigm: | goals. This mechanism is modeled after the ping/traceroute paradigm: | |||
ping (ICMP echo request [ICMP]) is used for connectivity checks, and | ping (ICMP echo request [ICMP]) is used for connectivity checks, and | |||
traceroute is used for hop-by-hop fault localization as well as path | traceroute is used for hop-by-hop fault localization as well as path | |||
tracing. This document specifies a "ping mode" and a "traceroute" | tracing. This document specifies a "ping" mode and a "traceroute" | |||
mode for testing MPLS LSPs. | mode for testing MPLS LSPs. | |||
The basic idea is to verify that packets that belong to a particular | The basic idea is to verify that packets that belong to a particular | |||
Forwarding Equivalence Class (FEC) actually end their MPLS path on a | Forwarding Equivalence Class (FEC) actually end their MPLS path on a | |||
Label Switching Router (LSR) that is an egress for that FEC. This | Label Switching Router (LSR) that is an egress for that FEC. This | |||
document proposes that this test be carried out by sending a packet | document proposes that this test be carried out by sending a packet | |||
(called an "MPLS echo request") along the same data path as other | (called an "MPLS echo request") along the same data path as other | |||
packets belonging to this FEC. An MPLS echo request also carries | packets belonging to this FEC. An MPLS echo request also carries | |||
information about the FEC whose MPLS path is being verified. This | information about the FEC whose MPLS path is being verified. This | |||
echo request is forwarded just like any other packet belonging to | echo request is forwarded just like any other packet belonging to | |||
that FEC. In "ping" mode (basic connectivity check), the packet | that FEC. In "ping" mode (basic connectivity check), the packet | |||
should reach the end of the path, at which point it is sent to the | should reach the end of the path, at which point it is sent to the | |||
control plane of the egress LSR, which then verifies whether it is | control plane of the egress LSR, which then verifies whether it is | |||
indeed an egress for the FEC. In "traceroute" mode (fault isola- | indeed an egress for the FEC. In "traceroute" mode (fault | |||
tion), the packet is sent to the control plane of each transit LSR, | isolation), the packet is sent to the control plane of each transit | |||
which performs various checks that it is indeed a transit LSR for | LSR, which performs various checks that it is indeed a transit LSR | |||
this path; this LSR also returns further information that helps check | for this path; this LSR also returns further information that helps | |||
the control plane against the data plane, i.e., that forwarding | check the control plane against the data plane, i.e., that forwarding | |||
matches what the routing protocols determined as the path. | matches what the routing protocols determined as the path. | |||
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 an 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 | |||
cally traceroute FECs to verify that forwarding matches the control | periodically traceroute FECs to verify that forwarding matches the | |||
plane; however, this places a greater burden on transit LSRs and thus | control plane; however, this places a greater burden on transit LSRs | |||
should be used with caution. | and thus should be used with caution. | |||
2.1. Use of address range 127/8 | 2.1. Use of Address Range 127/8 | |||
As described above, LSP Ping is intended as a diagnostic tool. It is | As described above, LSP ping is intended as a diagnostic tool. It is | |||
intended to enable providers of an MPLS based service to isolate net- | intended to enable providers of an MPLS-based service to isolate | |||
work faults. In particular LSP Ping needs to diagnose situations | network faults. In particular, LSP ping needs to diagnose situations | |||
where the control and data planes are out of sync. It performs this | where the control and data planes are out of sync. It performs this | |||
by routing an MPLS echo request packet based solely on its label | by routing an MPLS echo request packet based solely on its label | |||
stack. That is the IP destination address is never used in a for- | stack. That is, the IP destination address is never used in a | |||
warding decision. In fact, the sender of an MPLS echo request packet | forwarding decision. In fact, the sender of an MPLS echo request | |||
may not know, a priori, the address of the router at the end of the | packet may not know, a priori, the address of the router at the end | |||
LSP. | of the LSP. | |||
Providers of MPLS based services also need the ability to trace all | Providers of MPLS-based services also need the ability to trace all | |||
of the possible paths that an LSP make take. Since most MPLS ser- | of the possible paths that an LSP may take. Since most MPLS services | |||
vices are based on IP unicast forwarding, these paths are subject to | are based on IP unicast forwarding, these paths are subject to | |||
equal cost multi-path load sharing (ECMP). | equal-cost multi-path (ECMP) load sharing. | |||
This leads to the following requirements: | This leads to the following requirements: | |||
1. Although the LSP in question may be broken in unknown ways, the | 1. Although the LSP in question may be broken in unknown ways, the | |||
likelihood of a diagnostic packet being delivered to a user of an | likelihood of a diagnostic packet being delivered to a user of an | |||
MPLS service MUST be held to an absolute minimum. | MPLS service MUST be held to an absolute minimum. | |||
2. If an LSP is broken in such a way that it prematurely terminates, | 2. If an LSP is broken in such a way that it prematurely terminates, | |||
the diagnostic packet MUST NOT be IP forwarded. | the diagnostic packet MUST NOT be IP forwarded. | |||
3. A means of varying the diagnostic packets such that they exercise | 3. A means of varying the diagnostic packets such that they exercise | |||
all ECMP paths is thus REQUIRED. | all ECMP paths is thus REQUIRED. | |||
Clearly using general unicast addresses satisfies neither of the | Clearly, using general unicast addresses satisfies neither of the | |||
first two requirements. A number of other options for addresses were | first two requirements. A number of other options for addresses were | |||
considered, including a portion of the private address space (as | considered, including a portion of the private address space (as | |||
determined by the network operator) and the newly designated IPv4 | determined by the network operator) and the newly designated IPv4 | |||
link local addresses. Use of the private address space was deemed | link local addresses. Use of the private address space was deemed | |||
ineffective since the leading MPLS based service is IPv4 Virtual Pri- | ineffective since the leading MPLS-based service is an IPv4 Virtual | |||
vate Networks (VPN). VPNs often used private addresses. | Private Network (VPN). VPNs often use private addresses. | |||
The IPv4 link local addresses are more attractive in that scope over | The IPv4 link local addresses are more attractive in that the scope | |||
which they can be forwarded is limited. However, if one were to use | over which they can be forwarded is limited. However, if one were to | |||
an address from this range, it would still be possible for the first | use an address from this range, it would still be possible for the | |||
recipient of a diagnostic packet that "escaped" from a broken LSP to | first recipient of a diagnostic packet that "escaped" from a broken | |||
have that addressed assigned to the interface on which it arrived and | LSP to have that address assigned to the interface on which it | |||
thus could mistakenly receive such a packet. Further, the IPv4 link | arrived and thus could mistakenly receive such a packet. | |||
local address range has only recently been allocated. Many deployed | Furthermore, the IPv4 link local address range has only recently been | |||
routers would forward a packet with an address from that range toward | allocated. Many deployed routers would forward a packet with an | |||
the default route. | address from that range toward the default route. | |||
The 127/8 range for IPv4 and that same range embedded in as | The 127/8 range for IPv4 and that same range embedded in as IPv4- | |||
IPv4-mapped IPv6 addresses for IPv6 was chosen for a number of rea- | mapped IPv6 addresses for IPv6 was chosen for a number of reasons. | |||
sons. | ||||
RFC1122 allocates the 127/8 as "Internal host loopback address" and | RFC1122 allocates the 127/8 as "Internal host loopback address" and | |||
states that "Addresses of this form MUST NOT appear outside a host." | states: "Addresses of this form MUST NOT appear outside a host." | |||
Thus the default behavior of hosts is to discard such packets. This | Thus, the default behavior of hosts is to discard such packets. This | |||
helps to ensure that if a diagnostic packet is mis-directed to a | helps to ensure that if a diagnostic packet is misdirected to a host, | |||
host, it will be silently discarded. | it will be silently discarded. | |||
RFC1812 [RFC1812] states that: | RFC 1812 [RFC1812] states: | |||
A router SHOULD NOT forward, except over a loopback interface, any | A router SHOULD NOT forward, except over a loopback interface, any | |||
packet that has a destination address on network 127. A router | packet that has a destination address on network 127. A router | |||
MAY have a switch that allows the network manager to disable these | MAY have a switch that allows the network manager to disable these | |||
checks. If such a switch is provided, it MUST default to perform- | checks. If such a switch is provided, it MUST default to | |||
ing the checks. | performing the checks. | |||
This helps to ensure that diagnostic packets are never IP forwarded. | This helps to ensure that diagnostic packets are never IP forwarded. | |||
The 127/8 address range provides 16M addresses allowing wide flexi- | The 127/8 address range provides 16M addresses allowing wide | |||
bility in varying addresses to exercise ECMP paths. Finally, as an | flexibility in varying addresses to exercise ECMP paths. Finally, as | |||
implementation optimization, the 127/8 provides an easy means of | an implementation optimization, the 127/8 provides an easy means of | |||
identifying possible LSP Packets. | identifying possible LSP packets. | |||
3. Packet Format | 3. Packet Format | |||
An MPLS echo request is a (possibly labeled) IPv4 or IPv6 UDP packet; | An MPLS echo request is a (possibly labeled) IPv4 or IPv6 UDP 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 | | |||
skipping to change at page 8, line 30 | skipping to change at page 7, line 4 | |||
| TimeStamp Received (seconds) | | | TimeStamp Received (seconds) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| TimeStamp Received (microseconds) | | | TimeStamp Received (microseconds) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| TLVs ... | | | TLVs ... | | |||
. . | . . | |||
. . | . . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The Version Number is currently 1. (Note: the version number is to | ||||
The Version Number is currently 1. (Note: the Version Number is to | ||||
be incremented whenever a change is made that affects the ability of | be incremented whenever a change is made that affects the ability of | |||
an implementation to correctly parse or process an MPLS echo | an implementation to correctly parse or process an MPLS echo | |||
request/reply. These changes include any syntactic or semantic | request/reply. These changes include any syntactic or semantic | |||
changes made to any of the fixed fields, or to any TLV or sub-TLV | changes made to any of the fixed fields, or to any Type-Length-Value | |||
assignment or format that is defined at a certain version number. | (TLV) or sub-TLV assignment or format that is defined at a certain | |||
The Version Number may not need to be changed if an optional TLV or | version number. The version number may not need to be changed if an | |||
sub-TLV is added.) | optional TLV or 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| MBZ |V| | | MBZ |V| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
One flag is defined for now, the V bit; the rest MUST be set to zero | One flag is defined for now, the V bit; the rest MUST be set to 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 | |||
2 MPLS Echo Reply | 2 MPLS echo reply | |||
The Reply Mode can take one of the following values: | The Reply Mode can take one of the following values: | |||
Value Meaning | Value Meaning | |||
----- ------- | ----- ------- | |||
1 Do not reply | 1 Do not reply | |||
2 Reply via an IPv4/IPv6 UDP packet | 2 Reply via an IPv4/IPv6 UDP packet | |||
3 Reply via an IPv4/IPv6 UDP packet with Router Alert | 3 Reply via an IPv4/IPv6 UDP packet with Router Alert | |||
4 Reply via application level control channel | 4 Reply via application level control channel | |||
An MPLS echo request with 1 (Do not reply) in the Reply Mode field | An MPLS echo request with 1 (Do not reply) in the Reply Mode field | |||
may be used for one-way connectivity tests; the receiving router may | may be used for one-way connectivity tests; the receiving router may | |||
log gaps in the sequence numbers and/or maintain delay/jitter statis- | log gaps in the Sequence Numbers and/or maintain delay/jitter | |||
tics. An MPLS echo request would normally have 2 (Reply via an | statistics. An MPLS echo request would normally have 2 (Reply via an | |||
IPv4/IPv6 UDP packet) in the Reply Mode field. If the normal IP | IPv4/IPv6 UDP packet) in the Reply Mode field. If the normal IP | |||
return path is deemed unreliable, one may use 3 (Reply via an | return path is deemed unreliable, one may use 3 (Reply via an | |||
IPv4/IPv6 UDP packet with Router Alert). Note that this requires | IPv4/IPv6 UDP packet with Router Alert). Note that this requires | |||
that all intermediate routers understand and know how to forward MPLS | that all intermediate routers understand and know how to forward MPLS | |||
echo replies. The echo reply uses the same IP version number as the | echo replies. The echo reply uses the same IP version number as the | |||
received echo request, i.e., an IPv4 encapsulated echo reply is sent | received echo request, i.e., an IPv4 encapsulated echo reply is sent | |||
in response to an IPv4 encapsulated echo request. | in response to an IPv4 encapsulated echo request. | |||
Some applications support an IP control channel. One such example is | Some applications support an IP control channel. One such example is | |||
the associated control channel defined in Virtual Circuit Connectiv- | the associated control channel defined in Virtual Circuit | |||
ity Verification [VCCV]. Any application which supports an IP con- | Connectivity Verification (VCCV) [VCCV]. Any application that | |||
trol channel between its control entities may set the Reply Mode to 4 | supports an IP control channel between its control entities may set | |||
(Reply via application level control channel) to ensure that replies | the Reply Mode to 4 (Reply via application level control channel) to | |||
use that same channel. Further definition of this codepoint is | ensure that replies use that same channel. Further definition of | |||
application specific and thus beyond the scope of this document. | this codepoint is application 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. | |||
The TimeStamp Sent is the time-of-day (in seconds and microseconds, | The TimeStamp Sent is the time-of-day (in seconds and microseconds, | |||
according to the sender's clock) in NTP format [NTP] when the MPLS | according to the sender's clock) in NTP format [NTP] when the MPLS | |||
echo request is sent. The TimeStamp Received in an echo reply is the | echo request is sent. The TimeStamp Received in an echo reply is the | |||
time-of-day (according to the receiver's clock) in NTP format that | time-of-day (according to the receiver's clock) in NTP format that | |||
the corresponding echo request was received. | the corresponding echo request was received. | |||
TLVs (Type-Length-Value tuples) have the following format: | TLVs (Type-Length-Value tuples) have the following format: | |||
0 1 2 3 | 0 1 2 3 | |||
skipping to change at page 10, line 27 | skipping to change at page 8, line 49 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 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 4-octet boundary. TLVs may be nested within other TLVs, | |||
TLVs, in which case the nested TLVs are called sub-TLVs. Sub-TLVs | in which case the nested TLVs are called sub-TLVs. Sub-TLVs have | |||
have independent types and MUST also be four-octet aligned. | independent types and MUST also be 4-octet aligned. | |||
Two examples follow. The LDP IPv4 FEC sub-TLV has the following for- | Two examples follow. The Label Distribution Protocol (LDP) IPv4 FEC | |||
mat: | sub-TLV 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 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 Target FEC Stack TLV which contains | The Length for this TLV is 5. A Target FEC Stack TLV that contains | |||
an LDP IPv4 FEC sub-TLV and a VPN IPv4 prefix sub-TLV has the format: | an LDP IPv4 FEC sub-TLV and a VPN IPv4 prefix sub-TLV 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 11, line 25 | skipping to change at page 10, line 4 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| sub-Type = 6 (VPN IPv4 prefix)| Length = 13 | | | sub-Type = 6 (VPN IPv4 prefix)| Length = 13 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Route Distinguisher | | | Route Distinguisher | | |||
| (8 octets) | | | (8 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv4 prefix | | | IPv4 prefix | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | 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 Not Assigned | 4 Not Assigned | |||
5 Vendor Enterprise Number | 5 Vendor Enterprise Number | |||
6 Not Assigned | 6 Not Assigned | |||
7 Interface and Label Stack | 7 Interface and Label Stack | |||
8 Not Assigned | 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 | |||
tation does not understand or support them. | implementation does not understand or support them. | |||
3.1. Return Codes | 3.1. Return Codes | |||
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 that specify that. For all other codes, the Return | |||
code MUST be set to zero. | Subcode MUST be set to zero. | |||
Value Meaning | Value Meaning | |||
----- ------- | ----- ------- | |||
0 No return code | 0 No return code | |||
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 Upstream Interface Index Unknown (See Note 1) | 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> | |||
skipping to change at page 12, line 39 | skipping to change at page 11, line 15 | |||
6 Upstream Interface Index Unknown (See Note 1) | 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> | |||
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 | |||
cessing was terminated. If the RSC is 0, no labels were processed. | processing was terminated. If the RSC is 0, no labels were | |||
Otherwise the packet would have been label switched at depth RSC. | processed. 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 looking at the sub-TLV length fields. | determined by 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 | |||
skipping to change at page 13, line 41 | skipping to change at page 12, line 15 | |||
14 5 Generic IPv4 prefix | 14 5 Generic IPv4 prefix | |||
15 17 Generic IPv6 prefix | 15 17 Generic IPv6 prefix | |||
16 4 Nil FEC | 16 4 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 | |||
FEC stack being tested. For example, if an LSR X has an LDP mapping | FEC Stack being tested. For example, if an LSR X has an LDP mapping | |||
[see LDP] for 192.168.1.1 (say label 1001), then to verify that label | [LDP] for 192.168.1.1 (say, label 1001), then to verify that label | |||
1001 does indeed reach an egress LSR that announced this prefix via | 1001 does indeed reach an egress LSR that announced this prefix via | |||
LDP, X can send an MPLS echo request with a FEC Stack TLV with one | LDP, X can send an MPLS echo request with an FEC Stack TLV with one | |||
FEC in it, namely of type LDP IPv4 prefix, with prefix | FEC in it, namely, of type LDP IPv4 prefix, with prefix | |||
192.168.1.1/32, and send the echo request with a label of 1001. | 192.168.1.1/32, and send the echo request with a label of 1001. | |||
Say LSR X wanted to verify that a label stack of <1001, 23456> is the | Say LSR X wanted to verify that a label stack of <1001, 23456> is the | |||
right label stack to use to reach a VPN IPv4 prefix [see section | right label stack to use to reach a VPN IPv4 prefix [see section | |||
3.2.5] of 10/8 in VPN foo. Say further that LSR Y with loopback | 3.2.5] of 10/8 in VPN foo. Say further that LSR Y with loopback | |||
address 192.168.1.1 announced prefix 10/8 with Route Distinguisher | address 192.168.1.1 announced prefix 10/8 with Route Distinguisher | |||
RD-foo-Y (which may in general be different from the Route Distin- | RD-foo-Y (which may in general be different from the Route | |||
guisher that LSR X uses in its own advertisements for VPN foo), label | Distinguisher that LSR X uses in its own advertisements for VPN foo), | |||
23456 and BGP nexthop 192.168.1.1 [see BGP]. Finally, suppose that | label 23456 and BGP next hop 192.168.1.1 [BGP]. Finally, suppose | |||
LSR X receives a label binding of 1001 for 192.168.1.1 via LDP. X | that LSR X receives a label binding of 1001 for 192.168.1.1 via LDP. | |||
has two choices in sending an MPLS echo request: X can send an MPLS | X has two choices in sending an MPLS echo request: X can send an MPLS | |||
echo request with a FEC Stack TLV with a single FEC of type VPN IPv4 | echo request with an FEC Stack TLV with a single FEC of type VPN IPv4 | |||
prefix with a prefix of 10/8 and a Route Distinguisher of RD-foo-Y. | prefix with a prefix of 10/8 and a Route Distinguisher of RD-foo-Y. | |||
Alternatively, X can send a FEC Stack TLV with two FECs, the first of | Alternatively, X can send an FEC Stack TLV with two FECs, the first | |||
type LDP IPv4 with a prefix of 192.168.1.1/32 and the second of type | of type LDP IPv4 with a prefix of 192.168.1.1/32 and the second of | |||
of IP VPN with a prefix 10/8 with Route Distinguisher of RD-foo-Y. | type of IP VPN with a prefix 10/8 with Route Distinguisher of RD- | |||
In either case, the MPLS echo request would have a label stack of | foo-Y. In either case, the MPLS echo request would have a label | |||
<1001, 23456>. (Note: in this example, 1001 is the "outer" label and | stack of <1001, 23456>. (Note: in this example, 1001 is the "outer" | |||
23456 is the "inner" label.) | label and 23456 is the "inner" label.) | |||
3.2.1. LDP IPv4 Prefix | 3.2.1. LDP IPv4 Prefix | |||
The IPv4 Prefix FEC is defined in [LDP]. When a LDP IPv4 prefix is | The IPv4 Prefix FEC is defined in [LDP]. When an LDP IPv4 prefix is | |||
encoded in a label stack, the following format is used. The value | encoded in a label stack, the following format is used. The value | |||
consists of four octets of an IPv4 prefix followed by one octet of | consists of 4 octets of an IPv4 prefix followed by 1 octet of prefix | |||
prefix length in bits; the format is given below. The IPv4 prefix is | length in bits; the format is given below. The IPv4 prefix is in | |||
in network byte order; if the prefix is shorter than 32 bits, trail- | network byte order; if the prefix is shorter than 32 bits, trailing | |||
ing bits SHOULD be set to zero. See [LDP] for an example of a Map- | bits SHOULD be set to zero. See [LDP] for an example of a Mapping | |||
ping for an IPv4 FEC. | for an IPv4 FEC. | |||
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.2. LDP IPv6 Prefix | 3.2.2. LDP IPv6 Prefix | |||
The IPv6 Prefix FEC is defined in [LDP]. When a LDP IPv6 prefix is | The IPv6 Prefix FEC is defined in [LDP]. When an LDP IPv6 prefix is | |||
encoded in a label stack, the following format is used. The value | encoded in a label stack, the following format is used. The value | |||
consists of sixteen octets of an IPv6 prefix followed by one octet of | consists of 16 octets of an IPv6 prefix followed by 1 octet of prefix | |||
prefix length in bits; the format is given below. The IPv6 prefix is | length in bits; the format is given below. The IPv6 prefix is in | |||
in network byte order; if the prefix is shorter than 128 bits, the | network byte order; if the prefix is shorter than 128 bits, the | |||
trailing bits SHOULD be set to zero. See [LDP] for an example of a | trailing bits SHOULD be set to zero. See [LDP] for an example of a | |||
Mapping for an IPv6 FEC. | Mapping for an IPv6 FEC. | |||
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.3. RSVP IPv4 LSP | 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 RFC | |||
RFC3209, sections 4.6.1.1 and 4.6.2.1. See [RSVP-TE]. | 3209, sections 4.6.1.1 and 4.6.2.1. See [RSVP-TE]. | |||
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 LSP | 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 RFC | |||
RFC3209, sections 4.6.1.2 and 4.6.2.2. See [RSVP-TE]. | 3209, sections 4.6.1.2 and 4.6.2.2. See [RSVP-TE]. | |||
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 | | |||
| | | | | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Must Be Zero | Tunnel ID | | | Must Be Zero | Tunnel ID | | |||
skipping to change at page 16, line 30 | skipping to change at page 14, line 35 | |||
| IPv6 tunnel sender address | | | IPv6 tunnel sender address | | |||
| | | | | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Must Be Zero | LSP ID | | | Must Be Zero | LSP ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.5. VPN IPv4 Prefix | 3.2.5. VPN IPv4 Prefix | |||
VPN-IPv4 NLRI (Network Layer Routing Information) is defined in | VPN-IPv4 Network Layer Routing Information (NLRI) is defined in | |||
[MPLS-L3-VPN]. This document uses the term VPN IPv4 prefix for a | [RFC4365]. This document uses the term VPN IPv4 prefix for a VPN- | |||
VPN-IPv4 NLRI which has been advertised with an MPLS label in BGP. | IPv4 NLRI that has been advertised with an MPLS label in BGP. See | |||
See [BGP-LABEL]. | [BGP-LABEL]. | |||
When a VPN IPv4 prefix is encoded in a label stack, the following | When a VPN IPv4 prefix is encoded in a label stack, the following | |||
format is used. The value field consists of the Route Distinguisher | format is used. The value field consists of the Route Distinguisher | |||
advertised with the VPN IPv4 prefix, the IPv4 prefix (with trailing 0 | advertised with the VPN IPv4 prefix, the IPv4 prefix (with trailing 0 | |||
bits to make 32 bits in all) and a prefix length, as follows: | bits to make 32 bits in all), and a 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Route Distinguisher | | | Route Distinguisher | | |||
| (8 octets) | | | (8 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv4 prefix | | | IPv4 prefix | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The Route Distinguisher (RD) is an 8-octect identifier; it does not | The Route Distinguisher (RD) is an 8-octet identifier; it does not | |||
contain any inherent information. The purpose of the RD is solely to | contain any inherent information. The purpose of the RD is solely to | |||
allow one to create distinct routes to a common IPv4 address prefix. | allow one to create distinct routes to a common IPv4 address prefix. | |||
The encoding of the RD is not important here. When matching this | The encoding of the RD is not important here. When matching this | |||
field to the local FEC information, it is treated as an opaque value. | field to the local FEC information, it is treated as an opaque value. | |||
3.2.6. VPN IPv6 Prefix | 3.2.6. VPN IPv6 Prefix | |||
VPN-IPv6 NLRI (Network Layer Routing Information) is defined in | VPN-IPv6 Network Layer Routing Information (NLRI) is defined in | |||
[MPLS-L3-VPN]. This document uses the term VPN IPv6 prefix for a | [RFC4365]. This document uses the term VPN IPv6 prefix for a VPN- | |||
VPN-IPv6 NLRI which has been advertised with an MPLS label in BGP. | IPv6 NLRI that has been advertised with an MPLS label in BGP. See | |||
See [BGP-LABEL]. | [BGP-LABEL]. | |||
When a VPN IPv6 prefix is encoded in a label stack, the following | When a VPN IPv6 prefix is encoded in a label stack, the following | |||
format is used. The value field consists of the Route Distinguisher | format is used. The value field consists of the Route Distinguisher | |||
advertised with the VPN IPv6 prefix, the IPv6 prefix (with trailing 0 | advertised with the VPN IPv6 prefix, the IPv6 prefix (with trailing 0 | |||
bits to make 128 bits in all) and a prefix length, as follows: | bits to make 128 bits in all), and a 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Route Distinguisher | | | Route Distinguisher | | |||
| (8 octets) | | | (8 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv6 prefix | | | IPv6 prefix | | |||
| | | | | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The Route Distinguisher is identical to the VPN IPv4 Prefix RD, | ||||
The Route Distiguisher is identical to the VPN IPv4 Prefix RD, except | except that it functions here to allow the creation of distinct | |||
that it functions here to allow the creation of distict routes to | routes to IPv6 prefixes. See section 3.2.5. When matching this | |||
IPv6 prefixes. See section 3.2.5. When matching this field to local | field to local FEC information, it is treated as an opaque value. | |||
FEC information, it is treated as an opaque value. | ||||
3.2.7. L2 VPN Endpoint | 3.2.7. L2 VPN Endpoint | |||
VPLS stands for Virtual Private Lan Service. The terms VPLS BGP NLRI | VPLS stands for Virtual Private LAN Service. The terms VPLS BGP NLRI | |||
and VE ID (VPLS Edge Identifier) are defined in [VPLS-BGP]. This | and VE ID (VPLS Edge Identifier) are defined in [VPLS-BGP]. This | |||
document uses the simpler term L2 VPN endpoint when referring to a | document uses the simpler term L2 VPN endpoint when referring to a | |||
VPLS BGP NLRI. The Route Distiguisher is 8-octet identifier used to | VPLS BGP NLRI. The Route Distinguisher is an 8-octet identifier used | |||
distinguish information about various L2 VPNs advertised by a node. | to distinguish information about various L2 VPNs advertised by a | |||
The VE ID is 2-octet identifier used to identify a particular node | node. The VE ID is a 2-octet identifier used to identify a | |||
which serves as the service attachment point within a VPLS. The | particular node that serves as the service attachment point within a | |||
structure of these two identifiers is uninportant here; when matching | VPLS. The structure of these two identifiers is unimportant here; | |||
these fields to local FEC information, they are treated as opaque | when matching these fields to local FEC information, they are treated | |||
values. The encapsulation type is identical to the PW Type in sec- | as opaque values. The encapsulation type is identical to the PW Type | |||
tion 3.2.8 below. | in section 3.2.8 below. | |||
When an L2 VPN endpoint is encoded in a label stack, the following | When an L2 VPN endpoint is encoded in a label stack, the following | |||
format is used. The value field consists of a Route Distinguisher (8 | format is used. The value field consists of a Route Distinguisher (8 | |||
octets), the sender (of the ping)'s VE ID (2 octets), the receiver's | octets), the sender (of the ping)'s VE ID (2 octets), the receiver's | |||
VE ID (2 octets), and an encapsulation type (2 octets), formatted as | VE ID (2 octets), and an encapsulation type (2 octets), formatted as | |||
follows: | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 18, line 29 | skipping to change at page 16, line 44 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sender's VE ID | Receiver's VE 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) | |||
FEC 128 (0x80) is defined in [PW-CONTROL], as are the terms PW ID | FEC 128 (0x80) is defined in [PW-CONTROL], as are the terms PW ID | |||
(Pseudowire ID) and PW Type (Pseudowire Type). A PW ID is a non-zero | (Pseudowire ID) and PW Type (Pseudowire Type). A PW ID is a non-zero | |||
32-bit connection ID. The PW Type is a 15 bit number indicating the | 32-bit connection ID. The PW Type is a 15-bit number indicating the | |||
encapsultion type. It is carried right justified in the field below | encapsulation type. It is carried right justified in the field below | |||
termed encapsulation type with the high-order bit set to zero. Both | termed encapsulation type with the high-order bit set to zero. Both | |||
of these fields are treated in this protocol as opaque values. | of these fields are treated in this protocol as opaque values. | |||
When a FEC 128 is encoded in a label stack, the following format is | When an FEC 128 is encoded in a label stack, the following format is | |||
used. The value field consists of the remote PE address (the desti- | used. The value field consists of the remote PE address (the | |||
nation address of the targeted LDP session), the PW ID and the encap- | destination address of the targeted LDP session), the PW ID, and the | |||
sulation type as follows: | encapsulation 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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| PW ID | | | PW ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| PW Type | Must Be Zero | | | PW Type | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
This FEC is deprecated and is retained only for backward compatibil- | ||||
ity. Implementations of LSP ping SHOULD accept and process this TLV, | This FEC is deprecated and is retained only for backward | |||
but SHOULD send LSP ping echo requests with the new TLV (see next | compatibility. Implementations of LSP ping SHOULD accept and process | |||
section), unless explicitly configured to use the old TLV. | this TLV, but SHOULD send LSP ping echo requests with the new TLV | |||
(see next section), unless explicitly configured to use 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) | |||
FEC 128 (0x80) is defined in [PW-CONTROL], as are the terms PW ID | FEC 128 (0x80) is defined in [PW-CONTROL], as are the terms PW ID | |||
(Pseudowire ID) and PW Type (Pseudowire Type). A PW ID is a non-zero | (Pseudowire ID) and PW Type (Pseudowire Type). A PW ID is a non-zero | |||
32-bit connection ID. The PW Type is a 15 bit number indicating the | 32-bit connection ID. The PW Type is a 15-bit number indicating the | |||
encapsultion type. It is carried right justified in the field below | encapsulation type. It is carried right justified in the field below | |||
termed encapsulation type with the high-order bit set to zero. | termed encapsulation type with the high-order bit set to zero. | |||
Both of these fields are treated in this protocol as opaque values. | Both of these fields are treated in this protocol as opaque values. | |||
When matching these field to the local FEC information, the match | When matching these field to the local FEC information, the match | |||
MUST be exact. | MUST be exact. | |||
When a FEC 128 is encoded in a label stack, the following format is | When an FEC 128 is encoded in a label stack, the following format is | |||
used. The value field consists of the sender's PE address (the | used. The value field consists of the sender's PE address (the | |||
source address of the targeted LDP session), the remote PE address | source address of the targeted LDP session), the remote PE address | |||
(the destination address of the targeted LDP session), the PW ID and | (the destination address of the targeted LDP session), the PW ID, and | |||
the encapsulation type as follows: | the encapsulation 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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| PW ID | | | PW ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| PW Type | Must Be Zero | | | PW Type | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.10. FEC 129 Pseudowire | 3.2.10. FEC 129 Pseudowire | |||
FEC 129 (0x81) and the terms PW Type, Attachment Group Identifier | FEC 129 (0x81) and the terms PW Type, Attachment Group Identifier | |||
(AGI), Attachment Group Identifier Type (AGI Type), Attachment Indi- | (AGI), Attachment Group Identifier Type (AGI Type), Attachment | |||
vidual Identifier Type (AII Type), Source Attachment Individual Iden- | Individual Identifier Type (AII Type), Source Attachment Individual | |||
tifier (SAII), Target Attachment Individual Identifier (TAII) are | Identifier (SAII), and Target Attachment Individual Identifier (TAII) | |||
defined in [PW-CONTROL]. The PW Type is a 15 bit number indicating | are defined in [PW-CONTROL]. The PW Type is a 15-bit number | |||
the encapsultion type. It is carried right justified in the field | indicating the encapsulation type. It is carried right justified in | |||
below PW type with the high-order bit set to zero. All the other | the field below PW Type with the high-order bit set to zero. All the | |||
fields are treated as opaque values and copied directly from the FEC | other fields are treated as opaque values and copied directly from | |||
129 format. All of these values together uniquely define the FEC | the FEC 129 format. All of these values together uniquely define the | |||
with in the scope of the LDP session identified by the source and | FEC within the scope of the LDP session identified by the source and | |||
remote PE addresses. | remote PE addresses. | |||
When a FEC 129 is encoded in a label stack, the following format is | When an FEC 129 is encoded in a label stack, the following format is | |||
used. The Length of this TLV is 16 + AGI length + SAII length + TAII | used. The Length of this TLV is 16 + AGI length + SAII length + TAII | |||
length. Padding is used to make the total length a multiple of 4; | 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. | 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 | | |||
skipping to change at page 21, line 17 | skipping to change at page 20, line 9 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IPv4 Prefix | | | IPv4 Prefix | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | Must Be Zero | | | Prefix Length | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
3.2.12. BGP Labeled IPv6 Prefix | 3.2.12. BGP Labeled IPv6 Prefix | |||
BGP labeled IPv6 prefixes are defined in [BGP-LABEL]. When a BGP | BGP labeled IPv6 prefixes are defined in [BGP-LABEL]. When a BGP | |||
labeled IPv6 prefix is encoded in a label stack, the following format | labeled IPv6 prefix is encoded in a label stack, the following format | |||
is used. The value consists of sixteen octets of an IPv6 prefix fol- | is used. The value consists of 16 octets of an IPv6 prefix followed | |||
lowed by one octet of prefix length in bits; the format is given | by 1 octet of prefix length in bits; the format is given below. The | |||
below. The IPv6 prefix is in network byte order; if the prefix is | IPv6 prefix is in network byte order; if the prefix is shorter than | |||
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.13. Generic IPv4 Prefix | 3.2.13. Generic IPv4 Prefix | |||
The value consists of four octets of an IPv4 prefix followed by one | The value consists of 4 octets of an IPv4 prefix followed by 1 octet | |||
octet of prefix length in bits; the format is given below. The IPv4 | of prefix length in bits; the format is given below. The IPv4 prefix | |||
prefix is in network byte order; if the prefix is shorter than 32 | is in network byte order; if the prefix is shorter than 32 bits, | |||
bits, trailing bits SHOULD be set to zero. This FEC is used if the | 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 | |||
naled by LDP in one AS, by RSVP-TE [RSVP-TE] in another AS, and by | signaled by LDP in one Autonomous System (AS), by RSVP-TE [RSVP-TE] | |||
BGP between the ASes, such as is common for inter-AS VPNs. | in another AS, and by BGP between 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.14. 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 16 octets of an IPv6 prefix followed by 1 octet | |||
one octet of prefix length in bits; the format is given below. The | of prefix length in bits; the format is given below. The IPv6 prefix | |||
IPv6 prefix is in network byte order; if the prefix is shorter than | is in network byte order; if the prefix is shorter than 128 bits, the | |||
128 bits, the trailing bits SHOULD be set to zero. | 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.15. 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 sub-TLV 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. Labels are 20 bit values treated as numbers. | The Length is 4. Labels are 20-bit values treated as numbers. | |||
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 | MBZ | | | Label | MBZ | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Label is the actual label value inserted in the label stack; the MBZ | Label is the actual label value inserted in the label stack; the MBZ | |||
fields MUST be zero when sent, and ignored on receipt. | fields MUST be zero when sent and ignored on receipt. | |||
3.3. Downstream Mapping | 3.3. Downstream Mapping | |||
The Downstream Mapping object is a TLV which MAY be included in an | The Downstream Mapping object is a TLV that MAY be included in an | |||
echo request message. Only one Downstream Mapping object may appear | echo request message. Only one Downstream Mapping object may appear | |||
in an echo request. The presence of a Downstream Mapping object is a | in an echo request. The presence of a Downstream Mapping object is a | |||
request that Downstream Mapping objects be included in the echo | request that Downstream Mapping objects be included in the echo | |||
reply. If the replying router is the destination of the FEC, then a | reply. If the replying router is the destination of the FEC, then a | |||
Downstream Mapping TLV SHOULD NOT be included in the echo reply. | Downstream Mapping TLV SHOULD NOT be included in the echo reply. | |||
Otherwise the replying router SHOULD include a Downstream Mapping | Otherwise the replying router SHOULD include a Downstream Mapping | |||
object for each interface over which this FEC could be forwarded. | object for each interface over which this FEC could be forwarded. | |||
For a more precise definition of the notion of "downstream", see sec- | For a more precise definition of the notion of "downstream", see | |||
tion 3.3.2, "Downstream Router and Interface". | section 3.3.2, "Downstream Router and Interface". | |||
The Length is K + 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. Values for K are found in | 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- | the description of Address Type below. The Value field of a | |||
stream Mapping has the following format: | Downstream Mapping has the following format: | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 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 24, line 12 | skipping to change at page 23, line 7 | |||
| Downstream Label | Protocol | | | Downstream Label | Protocol | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Maximum Transmission Unit (MTU) | Maximum Transmission Unit (MTU) | |||
The MTU is the size in octets of the largest MPLS frame (including | The MTU is the size in octets of the largest MPLS frame (including | |||
label stack) that fits on the interface to the Downstream LSR. | label stack) that fits on the interface to the Downstream LSR. | |||
Address Type | Address Type | |||
The Address Type indicates if the interface is numbered or unnum- | The Address Type indicates if the interface is numbered or | |||
bered. It also determines the length of the Downstream IP Address | unnumbered. It also determines the length of the Downstream IP | |||
and Downstream Interface fields. The resulting total for the initial | Address and Downstream Interface fields. The resulting total for | |||
part of the TLV is listed in the table below as "K Octets". The | the initial part of the TLV is listed in the table below as "K | |||
Address Type is set to one of the following values: | Octets". The Address Type is set to one of the following values: | |||
Type # Address Type K Octets | Type # Address Type K Octets | |||
------ ------------ -------- | ------ ------------ -------- | |||
1 IPv4 Numbered 16 | 1 IPv4 Numbered 16 | |||
2 IPv4 Unnumbered 16 | 2 IPv4 Unnumbered 16 | |||
3 IPv6 Numbered 40 | 3 IPv6 Numbered 40 | |||
4 IPv6 Unnumbered 28 | 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 | |||
be set to zero when sending, and ignored on receipt. | MUST 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 that alters its ECMP algorithm | |||
based on the FEC or deep packet examination, 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, | IPv4 addresses and interface indices are encoded in 4 octets; IPv6 | |||
IPv6 addresses are encoded in 16 octets. | 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 | |||
Type MUST be set to IPv4 or IPv6, the Downstream IP Address MUST be | Address Type MUST be set to IPv4 or IPv6, the Downstream IP | |||
set to either the downstream LSR's Router ID or the interface address | Address MUST be set to either the downstream LSR's Router ID or | |||
of the downstream LSR, and the Downstream Interface Address MUST be | the interface address of the downstream LSR, and the Downstream | |||
set to the downstream LSR's interface address. | Interface Address MUST be 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 IPv4 Unnumbered or IPv6 Unnumbered, the Downstream IP | Type MUST be IPv4 Unnumbered or IPv6 Unnumbered, the Downstream IP | |||
Address MUST be the downstream LSR's Router ID, and the Downstream | Address MUST be the downstream LSR's Router ID, and the Downstream | |||
Interface Address MUST be set to the index assigned by the upstream | Interface Address MUST be set to the index assigned by the | |||
LSR to the interface. | upstream LSR to the interface. | |||
If an LSR does not know the IP address of its neighbor, then it MUST | If an LSR does not know the IP address of its neighbor, then it | |||
set the Address Type to either IPv4 Unnumbered or IPv6 Unnumbered. | MUST set the Address Type to either IPv4 Unnumbered or IPv6 | |||
For IPv4 it must set the Downstream IP Address to 127.0.0.1, for IPv6 | Unnumbered. For IPv4, it must set the Downstream IP Address to | |||
the address is set to 0::1. In both cases the interface index MUST | 127.0.0.1; for IPv6 the address is set to 0::1. In both cases, | |||
be set to 0. If an LSR receives an Echo Request packet with either | the interface index MUST be set to 0. If an LSR receives an Echo | |||
of these addresses in the Downstream IP Address field, this indicates | Request packet with either of these addresses in the Downstream IP | |||
that it MUST bypass interface verification but continue with label | Address field, this indicates that it MUST bypass interface | |||
validation. | verification but continue with label validation. | |||
If the originator of an Echo Request packet wishes to obtain Down- | If the originator of an Echo Request packet wishes to obtain | |||
stream mapping information but does not know the expected label stack | Downstream Mapping information but does not know the expected | |||
then it SHOULD set the Address Type to either IPv4 Unnumbered or IPv6 | label stack, then it SHOULD set the Address Type to either IPv4 | |||
Unnumbered. For IPv4 it MUST set the Downstream IP Address to | Unnumbered or IPv6 Unnumbered. For IPv4, it MUST set the | |||
224.0.0.2, for IPv6 the address MUST be set to FF02::2. In both | Downstream IP Address to 224.0.0.2; for IPv6 the address MUST be | |||
cases the interface index MUST be set to 0. If an LSR receives an | set to FF02::2. In both cases, the interface index MUST be set to | |||
Echo Request packet with the all-routers multicast address, then this | 0. If an LSR receives an Echo Request packet with the all-routers | |||
indicates that it MUST bypass both interface and label stack valida- | multicast address, then this indicates that it MUST bypass both | |||
tion, but return Downstream Mapping TLVs using the information pro- | interface and label stack validation, but return Downstream | |||
vided. | Mapping TLVs using the information provided. | |||
Multipath Type | Multipath Type | |||
The following Multipath Types are defined: | The following Multipath Types are defined: | |||
Key Type Multipath Information | Key Type Multipath Information | |||
--- ---------------- --------------------- | --- ---------------- --------------------- | |||
0 no multipath Empty (Multipath Length = 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 IP IP address prefix and bit mask | 8 Bit-masked IP 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 | |||
will serve to exercise this path. | Information 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 | |||
mum number of labels considered in the hash; this SHOULD be set to | maximum number of labels considered in the hash; this SHOULD be | |||
zero if unspecified or unlimited. | set to 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. | |||
the next section below for encoding details. | See 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. | |||
Implicit Null labels are explicitly included. Labels are treated as | Any Implicit Null labels are explicitly included. Labels are | |||
numbers, i.e. they are right justified in the field. | treated as 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 | |||
is bit 19, the EXP bits are bits 20-22, and bit 23 is the S bit. The | LSBit is bit 19, the EXP bits are bits 20-22, and bit 23 is the S | |||
replying router SHOULD fill in the EXP and S bits; the LSR receiving | bit. The replying router SHOULD fill in the EXP and S bits; the | |||
the echo reply MAY choose to ignore these bits. | LSR receiving 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 | |||
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 that will | |||
exercise this path. The multipath information depends on the multi- | exercise this path. The Multipath Information depends on the | |||
path type. The contents of the field are shown in the table above. | Multipath Type. The contents of the field are shown in the table | |||
IPv4 addresses are drawn from the range 127/8; IPv6 addresses are | above. IPv4 addresses are drawn from the range 127/8; IPv6 addresses | |||
drawn from the range 0:0:0:0:0:FFFF:127/104. Labels are treated as | are drawn from the range 0:0:0:0:0:FFFF:127/104. Labels are treated | |||
numbers, i.e. they are right justified in the field. For Type 4, | as numbers, i.e., they are right justified in the field. For Type 4, | |||
ranges indicated by Address pairs MUST NOT overlap and MUST be in | ranges indicated by Address pairs MUST NOT overlap and MUST be in | |||
ascending sequence. | ascending sequence. | |||
Type 8 allows a denser encoding of IP address. The IP prefix is for- | Type 8 allows a more dense encoding of IP addresses. The IP prefix | |||
matted as a base IP address with the non-prefix low order bits set to | is formatted as a base IP address with the non-prefix low-order bits | |||
zero. The maximum prefix length is 27. Following the prefix is a | set to zero. The maximum prefix length is 27. Following the prefix | |||
mask of length 2^(32-prefix length) bits for IPv4 and 2^(128-prefix | is a mask of length 2^(32-prefix length) bits for IPv4 and 2^(128- | |||
length) bits for IPv6. Each bit set to one represents a valid | prefix length) bits for IPv6. Each bit set to 1 represents a valid | |||
address. The address is the base IPv4 address plus the position of | address. The address is the base IPv4 address plus the position of | |||
the bit in the mask where the bits are numbered left to right begin- | the bit in the mask where the bits are numbered left to right | |||
ning with zero. For example the IPv4 addresses 127.2.1.0, | beginning with zero. For example, the IPv4 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 | 127.2.1.5-127.2.1.15, and 127.2.1.20-127.2.1.29 would be encoded as | |||
follows: | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|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| | |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| | |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| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 28, line 31 | skipping to change at page 27, line 22 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| | |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1| | |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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| | |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| | |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 more dense encoding of labels. The label prefix is | |||
matted as a base label value with the non-prefix low order bits set | formatted as a base label value with the non-prefix low-order bits | |||
to zero. The maximum prefix (including leading zeros due to encod- | set to zero. The maximum prefix (including leading zeros due to | |||
ing) length is 27. Following the prefix is a mask of length | encoding) 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 beginning with | the mask where the bits are numbered left to right beginning with | |||
zero. Label values of all the odd numbers between 1152 and 1279 | zero. Label values of all the odd numbers between 1152 and 1279 | |||
would be encoded as follows: | would be encoded 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 +- | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0 | |||
|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 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| +-+-+-+-+-+-+- | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |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 | |||
tipath information is null, (i.e. Multipath Length = 0, or for Types | Multipath Information is null (i.e., Multipath Length = 0, or for | |||
8 and 9 a mask of all zeroes) the receiver the type MUST be set to 0. | Types 8 and 9, a mask of all zeros), 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 | |||
for the FEC in question. The received X could return Multipath Type | Z, for the FEC in question. The received X could return Multipath | |||
4, with low/high IP addresses of 127.1.1.1->127.1.1.255 for down- | Type 4, with low/high IP addresses of 127.1.1.1->127.1.1.255 for | |||
stream LSR Y and 127.2.1.1->127.2.1.255 for downstream LSR Z. The | downstream LSR Y and 127.2.1.1->127.2.1.255 for downstream LSR Z. | |||
head end reflects this information to LSR Y. Y, which has three | The head end reflects this information to LSR Y. Y, which has three | |||
downstream LSRs U, V and W, computes that 127.1.1.1->127.1.1.127 | downstream LSRs, U, V, and W, computes that 127.1.1.1->127.1.1.127 | |||
would go to U and 127.1.1.128-> 127.1.1.255 would go to V. Y would | would go to U and 127.1.1.128-> 127.1.1.255 would go to V. Y would | |||
then respond with 3 Downstream Mappings: to U, with Multipath Type 4 | then respond with 3 Downstream Mappings: to U, with Multipath Type 4 | |||
(127.1.1.1->127.1.1.127); to V, with Multipath Type 4 | (127.1.1.1->127.1.1.127); to V, with Multipath Type 4 | |||
(127.1.1.127->127.1.1.255); and to W, with Multipath Type 0. | (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 Multipath 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 Mapping with partial information, SHOULD | |||
that the prefixes missing in the reply were skipped by the receiver, | assume that the prefixes missing in the reply were skipped by the | |||
and MAY re-request information about them in a new echo request. | receiver, 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 and TTL=1 at LSR X, X | with TTL n>1 arrived with outermost label L and TTL=1 at LSR X, X | |||
must be able to compute which LSRs could receive the packet if it was | must be able to compute which LSRs could receive the packet if it was | |||
originated with TTL=n+1, over which interface the request would | originated with TTL=n+1, over which interface the request would | |||
arrive and what label stack those LSRs would see. (It is outside the | arrive and what label stack those LSRs would see. (It is outside the | |||
scope of this document to specify how this computation is done.) The | scope of this document to specify how this computation is done.) The | |||
set of these LSRs/interfaces are the downstream routers/interfaces | set of these LSRs/interfaces consists of the downstream | |||
(and their corresponding labels) for X with respect to L. Each pair | routers/interfaces (and their corresponding labels) for X with | |||
of downstream router and interface requires a separate Downstream | respect to L. Each pair of downstream router and interface requires | |||
Mapping to be added to the reply. | a separate Downstream Mapping to be added to the reply. | |||
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 | |||
ticast). In the former case, the Multipath Information is used as a | multicast). In the former case, the Multipath Information is used as | |||
hint to the sender as to how it may influence the choice of these | a hint to the sender as to how it may influence the choice of these | |||
alternatives. | alternatives. | |||
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. | |||
skipping to change at page 30, line 41 | skipping to change at page 29, line 25 | |||
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. Vendor Enterprise Number | 3.5. Vendor Enterprise Number | |||
SMI Private Enterprise Numbers are maintained by IANA. The Length is | SMI Private Enterprise Numbers are maintained by IANA. The Length is | |||
always 4; the value is the SMI Private Enterprise code, in network | always 4; the value is the SMI Private Enterprise code, in network | |||
octet order, of the vendor with a Vendor Private extension to any of | 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 this TLV | 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 the mes- | MUST be present. If none of the fields in the fixed part of the | |||
sage have vendor private extensions, inclusion of this this TLV in is | message have Vendor Private extensions, inclusion of this TLV is | |||
OPTIONAL. Vendor private ranges for Message Types, Reply Modes, and | OPTIONAL. Vendor Private ranges for Message Types, Reply Modes, and | |||
Return Codes have been defined. When any of these are used the Ven- | Return Codes have been defined. When any of these are used, the | |||
dor Enterprise Number TLV MUST be included in the message. | Vendor Enterprise Number TLV MUST be included in the message. | |||
3.6. Interface and Label Stack | 3.6. Interface and Label Stack | |||
The Interface and Label Stack TLV MAY be included in a reply message | The Interface and Label Stack TLV MAY be included in a reply message | |||
to report the interface on which the request message was received and | to report the interface on which the request message was received and | |||
the label stack which was on the packet when it was received. Only | the label stack that was on the packet when it was received. Only | |||
one such object may appear. The purpose of the object is to allow | one such object may appear. The purpose of the object is to allow | |||
the upstream router to obtain the exact interface and label stack | the upstream router to obtain the exact interface and label stack | |||
information as it appears at the replying LSR. | information as it appears at the replying LSR. | |||
The Length is K + 4*N octets, N is the number of labels in the Label | 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 | stack. Values for K are found in the description of Address Type | |||
below. The Value field of a Downstream Mapping has the following | below. The Value field of a Downstream Mapping 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Address Type | Must be Zero | | | Address Type | Must Be Zero | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IP Address (4 or 16 octets) | | | IP Address (4 or 16 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Interface (4 or 16 octets) | | | Interface (4 or 16 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
. . | . . | |||
. . | . . | |||
. Label Stack . | . Label Stack . | |||
. . | . . | |||
. . | . . | |||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Address Type | Address Type | |||
The Address Type indicates if the interface is numbered or unnum- | The Address Type indicates if the interface is numbered or | |||
bered. It also determines the length of the IP Address and Interface | unnumbered. It also determines the length of the IP Address and | |||
fields. The resulting total for the initial part of the TLV is | Interface fields. The resulting total for the initial part of the | |||
listed in the table below as "K Octets". The Address Type is set to | TLV is listed in the table below as "K Octets". The Address Type | |||
one of the following values: | is set to one of the following values: | |||
Type # Address Type K Octets | Type # Address Type K Octets | |||
------ ------------ -------- | ------ ------------ -------- | |||
1 IPv4 Numbered 12 | 1 IPv4 Numbered 12 | |||
2 IPv4 Unnumbered 12 | 2 IPv4 Unnumbered 12 | |||
3 IPv6 Numbered 36 | 3 IPv6 Numbered 36 | |||
4 IPv6 Unnumbered 24 | 4 IPv6 Unnumbered 24 | |||
IP Address and Interface | IP Address and Interface | |||
IPv4 addresses and and interface indices are encoded in 4 octets, | IPv4 addresses and interface indices are encoded in 4 octets; IPv6 | |||
IPv6 addresses are encoded in 16 octets. | addresses are encoded in 16 octets. | |||
If the interface upon which the echo request message was received is | If the interface upon which the echo request message was received | |||
numbered, then the Address Type MUST be set to IPv4 or IPv6, the IP | is numbered, then the Address Type MUST be set to IPv4 or IPv6, | |||
Address MUST be set to either the LSR's Router ID or the interface | the IP Address MUST be set to either the LSR's Router ID or the | |||
address, and the Interface MUST be set to the interface address. | interface address, and the Interface MUST be set to the interface | |||
address. | ||||
If the interface unnumbered, the Address Type MUST be either IPv4 | If the interface is unnumbered, the Address Type MUST be either | |||
Unnumbered or IPv6 Unnumbered, the IP Address MUST be the LSR's | IPv4 Unnumbered or IPv6 Unnumbered, the IP Address MUST be the | |||
Router ID, and the Interface MUST be set to the index assigned to the | LSR's Router ID, and the Interface MUST be set to the index | |||
interface. | assigned to the interface. | |||
Label Stack | Label Stack | |||
The label stack of the received echo request message. If any TTL | The label stack of the received echo request message. If any TTL | |||
values have been changed by this router, they SHOULD be restored. | values have been changed by this router, they SHOULD be restored. | |||
3.7. Errored TLVs | 3.7. Errored TLVs | |||
The following TLV is a TLV which MAY be included in an echo reply to | The following TLV is a TLV that MAY be included in an echo reply to | |||
inform the sender of an echo request 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 that were not understood, encoded | The Value field contains the TLVs that were not understood, encoded | |||
as sub-TLVs. | 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.8. Reply TOS Byte TLV | 3.8. Reply TOS Byte TLV | |||
This TLV MAY be used by the originator of the echo request to | This TLV MAY be used by the originator of the echo request to request | |||
request | that an echo reply be sent with the IP header TOS byte set to the | |||
that a echo reply be sent with the IP header TOS byte set to | value specified in the TLV. This TLV has a length of 4 with the | |||
the value specified in the TLV. This TLV has a length of 4 with | 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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
4. Theory of Operation | 4. Theory of Operation | |||
An MPLS echo request is used to test a particular LSP. The LSP to be | An MPLS echo request is used to test a particular LSP. The LSP to be | |||
tested is identified by the "FEC Stack"; for example, if the LSP was | 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 that 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 | |||
bottom being a VPN IPv4 prefix, and the top being an LDP IPv4 prefix. | bottom being a VPN IPv4 prefix, and the top being an LDP IPv4 prefix. | |||
If the underlying (LDP) tunnel were not known, or was considered | If the underlying (LDP) tunnel were not known, or was considered | |||
irrelevant, the FEC stack could be a single element with just the VPN | irrelevant, the FEC Stack could be a single element with just the VPN | |||
IPv4 sub-TLV. | IPv4 sub-TLV. | |||
When an MPLS echo request is received, the receiver is expected to | When an MPLS echo request is received, the receiver is expected to | |||
verify that the control plane and data plane are both healthy (for | verify that the control plane and data plane are both healthy (for | |||
the FEC stack being pinged), and that the two planes are in sync. | the FEC Stack being pinged) and that the two planes are in sync. The | |||
The procedures for this are in section 4.4 below. | 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. | |||
To deal with the last two first: it is assumed that the LSR sourcing | To deal with the last two first: it is assumed that the LSR sourcing | |||
MPLS echo requests can force the echo request into any desired LSP, | MPLS echo requests can force the echo request into any desired LSP, | |||
so choosing among multiple LSPs at the ingress is not an issue. The | so choosing among multiple LSPs at the ingress is not an issue. The | |||
problem of probing the various flavors of backup paths that will typ- | problem of probing the various flavors of backup paths that will | |||
ically not be used for forwarding data unless the primary LSP is down | typically not be used for forwarding data unless the primary LSP is | |||
will not be addressed here. | down 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, although desirable, may not be practical, | |||
the algorithms that a given LSR uses to distribute packets over | because the algorithms that a given LSR uses to distribute packets | |||
alternative paths may be proprietary. | over 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 latitude 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 latitude is offered by means of the | in the case of traceroute, more latitude is offered by means of the | |||
Multipath Information of the Downstream Mapping TLV. This is used as | Multipath Information of the Downstream Mapping TLV. This is used as | |||
follows. An ingress LSR periodically sends an MPLS traceroute mes- | follows. An ingress LSR periodically sends an MPLS traceroute | |||
sage to determine whether there are multipaths for a given LSP. If | message to determine whether there are multipaths for a given LSP. | |||
so, each hop will provide some information how each of its downstream | If so, each hop will provide some information how each of its | |||
paths can be exercised. The ingress can then send MPLS echo requests | downstream paths can be exercised. The ingress can then send MPLS | |||
that exercise these paths. If several transit LSRs have ECMP, the | echo requests that exercise these paths. If several transit LSRs | |||
ingress may attempt to compose these to exercise all possible paths. | have ECMP, the ingress may attempt to compose these to exercise all | |||
However, full coverage may not be possible. | possible paths. 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 UDP packet. The IP header is set as fol- | An MPLS echo request is a UDP packet. The IP header is set as | |||
lows: the source IP address is a routable address of the sender; the | follows: the source IP address is a routable address of the sender; | |||
destination IP address is a (randomly chosen) IPv4 address from the | the destination IP address is a (randomly chosen) IPv4 address from | |||
range 127/8 or IPv6 address from the range 0:0:0:0:0:FFFF:127/104. | the range 127/8 or IPv6 address from the range | |||
the IP TTL is set to 1. The source UDP port is chosen by the sender; | 0:0:0:0:0:FFFF:127/104. The IP TTL is set to 1. The source UDP port | |||
the destination UDP port is set to 3503 (assigned by IANA for MPLS | is chosen by the sender; the destination UDP port is set to 3503 | |||
echo requests). The Router Alert option MUST be set in the IP | (assigned by IANA for MPLS echo requests). The Router Alert option | |||
header. | MUST be set in the IP header. | |||
An MPlS Echo Request is sent with a label stack corresponding to the | An MPLS echo request is sent with a label stack corresponding to the | |||
FEC stack being tested. Note that further labels could be applied | FEC Stack being tested. Note that further labels could be applied | |||
if, for example, the normal route to the topmost FEC in the stack is | if, for example, the normal route to the topmost FEC in the stack is | |||
via a Traffic Engineered Tunnel [RSVP-TE]. If all of the FECs in the | via a Traffic Engineered Tunnel [RSVP-TE]. If all of the FECs in the | |||
stack correspond to Implicit Null Labels the MPLS echo request is | stack correspond to Implicit Null labels, the MPLS echo request is | |||
considered unlabeled even if further labels will be applied in send- | considered unlabeled even if further labels will be applied in | |||
ing the packet. | sending the packet. | |||
If the echo request is labeled, 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 where this SHOULD | request going farther than it should. Examples of where this SHOULD | |||
be done include pinging a VPN IPv4 or IPv6 prefix, an L2 VPN end | be done include pinging a VPN IPv4 or IPv6 prefix, an L2 VPN endpoint | |||
point or a pseudowire. Preventing the ping request from going to far | or a pseudowire. Preventing the ping request from going too far can | |||
can also be accomplished by inserting a router alert label above this | also be accomplished by inserting a Router Alert label above this | |||
label; however, this may lead to the undesired side effect that MPLS | label; however, this may lead to the undesired side effect that MPLS | |||
echo requests take a different data path than actual data. For more | echo requests take a different data path than actual data. For more | |||
information on how these mechanisms can be used for pseudowire con- | information on how these mechanisms can be used for pseudowire | |||
nectivity verification, see [VCCV]. | connectivity verification, see [VCCV]. | |||
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 | |||
most label is set to 255. In "traceroute" mode (fault isolation | outermost label is set to 255. In "traceroute" mode (fault isolation | |||
mode), the TTL is set successively to 1, 2, .... | mode), the TTL is set successively to 1, 2, and so on. | |||
The sender chooses a Sender's Handle, and a Sequence Number. When | The sender chooses a Sender's Handle and a Sequence Number. When | |||
sending subsequent MPLS echo requests, the sender SHOULD increment | sending subsequent MPLS echo requests, the sender SHOULD increment | |||
the sequence number by 1. However, a sender MAY choose to send a | the Sequence Number by 1. However, a sender MAY choose to send a | |||
group of echo requests with the same sequence number to improve the | group of echo requests with the same Sequence Number to improve the | |||
chance of arrival of at least one packet with that sequence number. | chance of arrival of at least one packet with that Sequence Number. | |||
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 an FEC Stack TLV. Also, the Reply | |||
must be set to the desired reply mode; the Return Code and Subcode | Mode must be set to the desired reply mode; the Return Code and | |||
are set to zero. In the "traceroute" mode, the echo request SHOULD | Subcode are set to zero. In the "traceroute" mode, the echo request | |||
include a Downstream Mapping TLV. | SHOULD include a Downstream Mapping TLV. | |||
4.4. Receiving an MPLS Echo Request | 4.4. Receiving an MPLS Echo Request | |||
Sending An MPLS Echo Request to the control plane is triggered by | Sending an MPLS echo request to the control plane is triggered by one | |||
one of the following packet processing exceptions: Router Alert | of the following packet processing exceptions: Router Alert option, | |||
Option, IP TTL expiration, MPLS TTL expiration, MPLS Router Alert | IP TTL expiration, MPLS TTL expiration, MPLS Router Alert label, or | |||
Label, or the destination address in the 127/8 address range. The | the destination address in the 127/8 address range. The control | |||
control plane further identifies it by UDP destination port 3503. | plane further identifies it by UDP destination port 3503. | |||
For reporting purposes the bottom of stack is considered to be | For reporting purposes the bottom of stack is considered to be | |||
stack-depth of 1. This is to establish an absolute reference for | stack-depth of 1. This is to establish an absolute reference for the | |||
the case where the actual stack may have more labels than there are | case where the actual stack may have more labels than there are FECs | |||
FECs in the Target FEC Stack. | in the Target FEC Stack. | |||
Further, in all the error codes listed in this document a | Furthermore, in all the error codes listed in this document, a | |||
stack-depth of 0 means "no value specified". This allows | stack-depth of 0 means "no value specified". This allows | |||
compatibility with existing implementations which do not use the | compatibility with existing implementations that do not use the | |||
Return Subcode field. | Return Subcode field. | |||
An LSR X that receives an MPLS Echo Request then processes it as | An LSR X that receives an MPLS echo request then processes it as | |||
follows. | follows. | |||
1. General packet sanity is verified. If the packet is not | 1. General packet sanity is verified. If the packet is not well- | |||
well-formed, LSR X SHOULD send an MPLS Echo Reply with the | formed, LSR X SHOULD send an MPLS Echo Reply with the Return Code | |||
Return Code set to "Malformed echo request received" and the | set to "Malformed echo request received" and the Subcode to zero. | |||
Subcode to zero. If there are any TLVs not marked as "Ignore" | If there are any TLVs not marked as "Ignore" that LSR X does not | |||
that LSR X does not understand, LSR X SHOULD send an MPLS "TLV | understand, LSR X SHOULD send an MPLS "TLV not understood" (as | |||
not understood" (as appropriate), and the Subcode set to | appropriate), and the Subcode set to zero. In the latter case, | |||
zero. In the latter case, the misunderstood TLVs (only) are | the misunderstood TLVs (only) are included as sub-TLVs in an | |||
included as sub-TLVs in an Errored TLVs TLV in the reply. The | Errored TLVs TLV in the reply. The header fields Sender's Handle, | |||
header fields Sender's Handle, Sequence Number, and Timestamp | Sequence Number, and Timestamp Sent are not examined, but are | |||
Sent are not examined, but are included in the MPLS Echo Reply | included in the MPLS echo reply message. | |||
message. | ||||
The algorithm uses the following variables and identifiers: | The algorithm uses the following variables and identifiers: | |||
Interface-I: the interface on which the MPLS Echo Request was | Interface-I: the interface on which the MPLS echo request was | |||
received. | received. | |||
Stack-R: the label stack on the packet as it was | Stack-R: the label stack on the packet as it was received. | |||
received. | ||||
Stack-D: the label stack carried in the Downstream | Stack-D: the label stack carried in the Downstream Mapping | |||
Mapping TLV (not always present) | TLV (not always present) | |||
Label-L: the label from the actual stack currently being | Label-L: the label from the actual stack currently being | |||
examined. Requires no initialization. | examined. Requires no initialization. | |||
Label-stack-depth: the depth of label being verified. Initialized | Label-stack-depth: the depth of label being verified. Initialized to | |||
to the number of labels in the received label | the number of labels in the received label stack | |||
stack S. | S. | |||
FEC-stack-depth: depth of the FEC in the Target FEC Stack that | FEC-stack-depth: depth of the FEC in the Target FEC Stack that | |||
should be used to verify the current actual | should be used to verify the current actual label. | |||
label. Requires no initialization. | Requires no initialization. | |||
Best-return-code: contains the return code for the Echo Reply | Best-return-code: contains the return code for the echo reply packet | |||
packet as currently best known. As algorithm | as currently best known. As algorithm progresses, | |||
progresses, this code may change depending on | this code may change depending on the results of | |||
the results of further checks that it performs. | further checks that it performs. | |||
Best-rtn-subcode: similar to Best-return-code, but for the Echo | Best-rtn-subcode: similar to Best-return-code, but for the Echo | |||
Reply Subcode. | Reply Subcode. | |||
FEC-status: result value returned by the FEC Checking | FEC-status: result value returned by the FEC Checking | |||
algorithm described in section 4.4.1. | algorithm described in section 4.4.1. | |||
/* Save receive context information */ | /* Save receive context information */ | |||
2. If the echo request is good, LSR X stores the interface over | 2. If the echo request is good, LSR X stores the interface over | |||
which the echo was received in Interface-I, and the label stack | which the echo was received in Interface-I, and the label stack | |||
with which it came in Stack-R. | with which it came in Stack-R. | |||
/* The rest of the algorithm iterates over the labels in Stack-R, | /* The rest of the algorithm iterates over the labels in Stack-R, | |||
verifies validity of label values, reports associated label | verifies validity of label values, reports associated label | |||
switching operations (for traceroute), verifies correspondence | switching operations (for traceroute), verifies correspondence | |||
between the Stack-R and the Target FEC Stack description in the | between the Stack-R and the Target FEC Stack description in the | |||
body of the Echo Request, and reports any errors. */ | body of the echo request, and reports any errors. */ | |||
/* The algorithm iterates as follows. */ | /* The algorithm iterates as follows. */ | |||
3. Label Validation: | 3. Label Validation: | |||
If Label-stack-depth is 0 { | If Label-stack-depth is 0 { | |||
/* The LSR needs to report its being a tail-end for the LSP */ | /* The LSR needs to report its being a tail-end for the LSP */ | |||
Set FEC-stack-depth to 1, set Label-L to 3 (Implicit Null). | Set FEC-stack-depth to 1, set Label-L to 3 (Implicit Null). | |||
Set Best-return-code to 3 ("Replying router is an egress for | Set Best-return-code to 3 ("Replying router is an egress for | |||
the FEC at stack depth"), set Best-rtn-subcode to the | the FEC at stack depth"), set Best-rtn-subcode to the | |||
value of FEC-stack-depth (1) and go to step 5 (Egress | value of FEC-stack-depth (1) and go to step 5 (Egress | |||
Processing). | Processing). | |||
} | } | |||
/* This step assumes there's always an entry for well-known | ||||
/* This step assumes there is always an entry for well-known | ||||
label values */ | label values */ | |||
Set Label-L to the value extracted from Stack-R at depth | Set Label-L to the value extracted from Stack-R at depth | |||
Label-stack-depth. Lookup Label-L in the Incoming Label Map | Label-stack-depth. Lookup Label-L in the Incoming Label Map | |||
(ILM) to determine if the label has been allocated and an | (ILM) to determine if the label has been allocated and an | |||
operation is associated with it. | operation is associated with it. | |||
If there is no entry for L { | If there is no entry for L { | |||
/* Indicates a temporary or permanent label synchronization | /* Indicates a temporary or permanent label synchronization | |||
problem the LSR needs to report an error */ | problem the LSR needs to report an error */ | |||
Set Best-return-code to 11 ("No label entry at stack-depth") | Set Best-return-code to 11 ("No label entry at stack-depth") | |||
and Best-rtn-subcode to Label-stack-depth. Go to step 7 | and Best-rtn-subcode to Label-stack-depth. Go to step 7 | |||
(Send Reply Packet). | (Send Reply Packet). | |||
} | } | |||
Else { | Else { | |||
Retrieve the associated label operation from the | Retrieve the associated label operation from the | |||
corresponding NLFE and proceed to step 4 (Label Operation). | corresponding NLFE and proceed to step 4 (Label Operation | |||
check). | ||||
} | } | |||
4. Label Operation Check | 4. Label Operation Check | |||
If the label operation is "Pop and Continue Processing" { | If the label operation is "Pop and Continue Processing" { | |||
/* Includes Explicit Null and Router Alert label cases */ | /* Includes Explicit Null and Router Alert label cases */ | |||
Iterate to the next label by decrementing Label-stack-depth | Iterate to the next label by decrementing Label-stack-depth | |||
and loop back to step 3 (Label Validation). | and loop back to step 3 (Label Validation). | |||
} | } | |||
If the label operation is "Swap or Pop and Switch based on Popped | If the label operation is "Swap or Pop and Switch based on Popped | |||
Label" { | Label" { | |||
Set Best-return-code to 8 ("Label switched at stack-depth") | Set Best-return-code to 8 ("Label switched at stack-depth") | |||
and Best-rtn-subcode to Label-stack-depth to report transit | and Best-rtn-subcode to Label-stack-depth to report transit | |||
switching. | switching. | |||
If a Downstream Mapping TLV is present in the received Echo | If a Downstream Mapping TLV is present in the received echo | |||
Request { | request { | |||
If the IP address in the TLV is 127.0.0.1 or 0::1 { | If the IP address in the TLV is 127.0.0.1 or 0::1 { | |||
Set Best-return-code to 6 ("Upstream Interface Index | Set Best-return-code to 6 ("Upstream Interface Index | |||
Unknown"). An Interface and Label Stack TLV SHOULD be | Unknown"). An Interface and Label Stack TLV SHOULD be | |||
included in the reply and filled with Interface-I and | included in the reply and filled with Interface-I and | |||
Stack-R. | Stack-R. | |||
} | } | |||
Else { | Else { | |||
Verify that the IP address, interface address and label | Verify that the IP address, interface address, and label | |||
stack in the Downstream Mapping TLV match Interface-I | stack in the Downstream Mapping TLV match Interface-I | |||
and Stack-R. If there is a mismatch, set | and Stack-R. If there is a mismatch, set | |||
Best-return-code to 5, "Downstream Mapping Mismatch". | Best-return-code to 5, "Downstream Mapping Mismatch". | |||
An Interface and Label Stack TLV SHOULD be included in | An Interface and Label Stack TLV SHOULD be included in | |||
the reply and filled in based on Interface-I and | the reply and filled in based on Interface-I and | |||
Stack-R. Go to step 7 (Send Reply Packet). | Stack-R. Go to step 7 (Send Reply Packet). | |||
} | } | |||
} | } | |||
For each available downstream ECMP path { | For each available downstream ECMP path { | |||
Retrieve output interface from the NHLFE entry. | Retrieve output interface from the NHLFE entry. | |||
/* Note: this return code is set even if Label-stack-depth | /* Note: this return code is set even if Label-stack-depth | |||
is one */ | is one */ | |||
If the output interface is not MPLS enabled { | ||||
If the output interface is not MPLS-enabled { | Set Best-return-code to Return Code 9, "Label switched | |||
set Best-return-code to Return Code 9, "Label switched | ||||
but no MPLS forwarding at stack-depth" and set | but no MPLS forwarding at stack-depth" and set | |||
Best-rtn-subcode to Label-stack-depth and goto | Best-rtn-subcode to Label-stack-depth and goto | |||
Send_Reply_Packet. | Send_Reply_Packet. | |||
} | } | |||
If a Downstream Mapping TLV is present { | If a Downstream Mapping TLV is present { | |||
A Downstream mapping TLV SHOULD be included in the Echo | A Downstream Mapping TLV SHOULD be included in the echo | |||
Reply (see section 3.3) filled in with information about | reply (see section 3.3) filled in with information about | |||
the current ECMP path. | the current ECMP path. | |||
} | } | |||
} | } | |||
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 ALLROUTERS multicast address, | Address is set to the ALLROUTERS multicast address, | |||
Go to step 7 (Send Reply Packet). | go to step 7 (Send Reply Packet). | |||
If the "Validate FEC Stack" flag is not set and the LSR is not | If the "Validate FEC Stack" flag is not set and the LSR is not | |||
configured to perform FEC checking by default, go to step 7 | configured to perform FEC checking by default, go to step 7 | |||
(Send Reply Packet). | (Send Reply Packet). | |||
/* Validate the Target FEC Stack in the received Echo Request. | /* Validate the Target FEC Stack in the received echo request. | |||
First determine FEC-stack-depth from the Downstream Mapping | First determine FEC-stack-depth from the Downstream Mapping | |||
TLV. This is done by walking through Stack-D (the Downstream | TLV. This is done by walking through Stack-D (the Downstream | |||
Labels) from the bottom, decrementing the number of labels | labels) from the bottom, decrementing the number of labels | |||
for each non-Implicit Null label, while incrementing | for each non-Implicit Null label, while incrementing | |||
FEC-stack-depth for each label. If the Downstream Mapping TLV | FEC-stack-depth for each label. If the Downstream Mapping TLV | |||
contains one or more Implicit Null labels, FEC-stack-depth | contains one or more Implicit Null labels, FEC-stack-depth | |||
may be greater than Label-stack-depth. To be consistent with | may be greater than Label-stack-depth. To be consistent with | |||
the above stack-depths, the bottom is considered to entry 1. | the above stack-depths, the bottom is considered to entry 1. | |||
*/ | */ | |||
Set FEC-stack-depth to 0. Set i to Label-stack-depth. | Set FEC-stack-depth to 0. Set i to Label-stack-depth. | |||
While (i > 0 ) do { | While (i > 0 ) do { | |||
skipping to change at page 40, line 25 | skipping to change at page 39, line 4 | |||
Set FEC-stack-depth to 0. Set i to Label-stack-depth. | Set FEC-stack-depth to 0. Set i to Label-stack-depth. | |||
While (i > 0 ) do { | While (i > 0 ) do { | |||
++FEC-stack-depth. | ++FEC-stack-depth. | |||
if Stack-D[FEC-stack-depth] != 3 (Implicit Null) | if Stack-D[FEC-stack-depth] != 3 (Implicit Null) | |||
--i. | --i. | |||
} | } | |||
If the number of labels in the FEC stack is greater | If the number of labels in the FEC stack is greater | |||
than or equal to FEC-stack-depth { | than or equal to FEC-stack-depth { | |||
Perform the FEC Checking procedure (see subsection 4.4.1 | Perform the FEC Checking procedure (see subsection 4.4.1 | |||
below). | below). | |||
If FEC-status is 2 set Best-return-code to 10 ("Mapping | If FEC-status is 2, set Best-return-code to 10 ("Mapping | |||
for this FEC is not the given label at stack-depth"). | for this FEC is not the given label at stack-depth"). | |||
If the return code is 1 set Best-return-code to | If the return code is 1, set Best-return-code to | |||
FEC-return-code and Best-rtn-subcode to FEC-stack-depth. | FEC-return-code and Best-rtn-subcode to FEC-stack-depth. | |||
} | } | |||
Go to step 7 (Send Reply Packet). | Go to step 7 (Send Reply Packet). | |||
} | } | |||
5. Egress Processing: | 5. Egress Processing: | |||
/* These steps are performed by the LSR that identified itself | /* These steps are performed by the LSR that identified itself | |||
as the tail-end LSR for an LSP. */ | as the tail-end LSR for an LSP. */ | |||
If received Echo Request contains no Downstream Mapping TLV, or | If received echo request contains no Downstream Mapping TLV, or | |||
the Downstream IP Address is set to 127.0.0.1 or 0::1 | the Downstream IP Address is set to 127.0.0.1 or 0::1 | |||
Go t0 step 6 (Egress FEC Validation). | go to step 6 (Egress FEC Validation). | |||
Verify that the IP address, interface address and label stack in | Verify that the IP address, interface address, and label stack in | |||
the Downstream mapping TLV match Interface-I and Stack-R. If | the Downstream Mapping TLV match Interface-I and Stack-R. If | |||
not, set Best-return-code to 5, "Downstream Mapping | not, set Best-return-code to 5, "Downstream Mapping | |||
Mis-match". A Received Interface and Label Stack TLV SHOULD be | Mis-match". A Received Interface and Label Stack TLV SHOULD be | |||
created for the Echo Response packet. Go to step 7 (Send Reply | created for the echo response packet. Go to step 7 (Send Reply | |||
Packet). | Packet). | |||
6. Egress FEC Validation: | 6. Egress FEC Validation: | |||
/* This is a loop for all entries in the Target FEC Stack | /* This is a loop for all entries in the Target FEC Stack | |||
starting with FEC-stack-depth. */ | starting with FEC-stack-depth. */ | |||
Perform FEC checking by following the algorithm described in | Perform FEC checking by following the algorithm described in | |||
subsection 4.4.1 for Label-L and the FEC at FEC-stack-depth. | subsection 4.4.1 for Label-L and the FEC at FEC-stack-depth. | |||
Set Best-return-code to FEC-code and Best-rtn-subcode to the | Set Best-return-code to FEC-code and Best-rtn-subcode to the | |||
value in FEC-stack-depth. | value in FEC-stack-depth. | |||
If FEC-status (the result of the check) is 1, | If FEC-status (the result of the check) is 1, | |||
Go to step 7 (Send Reply Packet). | go to step 7 (Send Reply Packet). | |||
/* Iterate to the next FEC entry */ | /* Iterate to the next FEC entry */ | |||
++FEC-stack-depth. | ++FEC-stack-depth. | |||
If FEC-stack-depth > the number of FECs in the FEC-stack, | If FEC-stack-depth > the number of FECs in the FEC-stack, | |||
Go to step 7 (Send Reply Packet). | go to step 7 (Send Reply Packet). | |||
If FEC-status is 0 { | If FEC-status is 0 { | |||
++Label-stack-depth. | ++Label-stack-depth. | |||
If Label-stack-depth > the number of labels in Stack-R, | If Label-stack-depth > the number of labels in Stack-R, | |||
Go to step 7 (Send Reply Packet). | Go to step 7 (Send Reply Packet). | |||
Label-L = extracted label from Stack-R at depth | Label-L = extracted label from Stack-R at depth | |||
Label-stack-depth. | Label-stack-depth. | |||
Loop back to step 6 (Egress FEC Validation). | Loop back to step 6 (Egress FEC Validation). | |||
} | } | |||
7. Send Reply Packet: | 7. Send Reply Packet: | |||
Send an MPLS Echo Reply with a Return Code of Best-return-code, | Send an MPLS echo reply with a Return Code of Best-return-code, | |||
and a Return Subcode of Best-rtn-subcode. Include any TLVs | and a Return Subcode of Best-rtn-subcode. Include any TLVs | |||
created during the above process. The procedures for sending | created during the above process. The procedures for sending | |||
the Echo Reply are found in subsection 4.4.1. | the echo reply are found in subsection 4.4.1. | |||
4.4.1. FEC Validation | 4.4.1. FEC Validation | |||
/* This subsection describes validation of a FEC entry within the | /* This subsection describes validation of an FEC entry within the | |||
Target FEC Stack and accepts a FEC, Label-L and Interface-I. | Target FEC Stack and accepts an FEC, Label-L, and Interface-I. | |||
The algorithm performs the following steps. */ | The algorithm performs the following steps. */ | |||
1. Two return values, FEC-status and FEC-return-code, are initialized | 1. Two return values, FEC-status and FEC-return-code, are initialized | |||
to 0. | to 0. | |||
2. If the FEC is the Nil FEC { | 2. If the FEC is the Nil FEC { | |||
If Label-L is either Explicit_Null or Router_Alert, return. | If Label-L is either Explicit_Null or Router_Alert, return. | |||
Else { | Else { | |||
Set FEC-return-code to 10 ("Mapping for this FEC is not | Set FEC-return-code to 10 ("Mapping for this FEC is not | |||
the given label at stack-depth"). | the given label at stack-depth"). | |||
Set FEC-status to 1 | Set FEC-status to 1 | |||
Return. | Return. | |||
} | } | |||
} | } | |||
3. Check the FEC label mapping that describes how traffic received | 3. Check the FEC label mapping that describes how traffic received on | |||
on the LSP is further switched or which application it is | the LSP is further switched or which application it is associated | |||
associated with. If no mapping exists, set FEC-return-code to | with. If no mapping exists, set FEC-return-code to Return 4, | |||
Return 4, "Replying router has no mapping for the FEC at | "Replying router has no mapping for the FEC at stack-depth". Set | |||
stack-depth". Set FEC-status to 1. Return. | FEC-status to 1. Return. | |||
4. If the label mapping for FEC is Implicit Null, set FEC-status to | 4. If the label mapping for FEC is Implicit Null, set FEC-status to 2 | |||
2 and proceed to step 5. Otherwise, if the label mapping for FEC | and proceed to step 5. Otherwise, if the label mapping for FEC is | |||
is Label-L, proceed to step 5. Otherwise, set FEC-return-code to | Label-L, proceed to step 5. Otherwise, set FEC-return-code to 10 | |||
10 ("Mapping for this FEC is not the given label at | ("Mapping for this FEC is not the given label at stack-depth"), | |||
stack-depth"), set FEC-status to 1 and return. | set FEC-status to 1, and return. | |||
5. This is a protocol check. Check what protocol would be used to | 5. This is a protocol check. Check what protocol would be used to | |||
advertise FEC. If it can be determined that no protocol | advertise FEC. If it can be determined that no protocol | |||
associated with Interface-I would have advertised a FEC of that | associated with Interface-I would have advertised an FEC of that | |||
FEC-Type, set FEC-return-code to 12 ("Protocol not associated | FEC-Type, set FEC-return-code to 12 ("Protocol not associated with | |||
with interface at FEC stack-depth"). Set FEC-status to 1. | interface at FEC stack-depth"). Set FEC-status to 1. | |||
6. Return. | 6. Return. | |||
4.5. Sending an MPLS Echo Reply | 4.5. Sending an MPLS Echo Reply | |||
An MPLS echo reply is a UDP packet. It MUST ONLY be sent in response | An MPLS echo reply is a UDP packet. It MUST ONLY be sent in response | |||
to an MPLS echo request. The source IP address is a routable address | to an MPLS echo request. The source IP address is a routable address | |||
of the replier; the source port is the well-known UDP port for LSP | of the replier; the source port is the well-known UDP port for LSP | |||
ping. The destination IP address and UDP port are copied from the | ping. The destination IP address and UDP port are copied from the | |||
source IP address and UDP port of the echo request. The IP TTL is | source IP address and UDP port of the echo request. The IP TTL is | |||
set to 255. If the Reply Mode in the echo request is "Reply via an | set to 255. If the Reply Mode in the echo request is "Reply via an | |||
IPv4 UDP packet with Router Alert", then the IP header MUST contain | IPv4 UDP packet with Router Alert", then the IP header MUST contain | |||
the Router Alert IP option. 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 requester 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 | |||
Mapping TLVs SHOULD NOT be included in the echo reply. | Mapping TLVs SHOULD NOT be included in the echo reply. | |||
If the echo request contains a Downstream Mapping TLV, and the reply- | If the echo request contains a Downstream Mapping TLV, and the | |||
ing router is not the destination of the FEC, the replier SHOULD com- | replying router is not the destination of the FEC, the replier SHOULD | |||
pute its downstream routers and corresponding labels for the incoming | compute its downstream routers and corresponding labels for the | |||
label, and add Downstream Mapping TLVs for each one to the echo reply | incoming label, and add Downstream Mapping TLVs for each one to the | |||
it sends back. | echo reply it sends back. | |||
If the Downstream Mapping TLV contains multipath information requir- | If the Downstream Mapping TLV contains Multipath Information | |||
ing more processing than the receiving router is willing to perform, | requiring more processing than the receiving router is willing to | |||
the responding router MAY choose to respond with only a subset of | perform, the responding router MAY choose to respond with only a | |||
multipaths contained in the echo request Downstream Map. (Note: The | subset of multipaths contained in the echo request Downstream | |||
originator of the echo request MAY send another echo request with the | Mapping. (Note: The originator of the echo request MAY send another | |||
multipath information that was not included in the reply.) | echo request with the Multipath Information that was not included in | |||
the reply.) | ||||
Except in the case of Reply Mode 4, "Reply via application level con- | Except in the case of Reply Mode 4, "Reply via application level | |||
trol channel", Echo Replies are always sent in the context of the | control channel", echo replies are always sent in the context of the | |||
IP/MPLS network. | IP/MPLS network. | |||
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 ensure 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; | |||
erwise, it checks the Sequence Number to see if it matches. | otherwise, it checks the Sequence Number to see if it matches. | |||
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 Mapping(s) into its | traceroute further, it SHOULD copy the Downstream Mapping(s) into its | |||
next echo request(s) (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 prefix or VPN IPv6 prefix is | Typically, an LSP ping for a VPN IPv4 prefix or VPN IPv6 prefix is | |||
sent with a label stack of depth greater than 1, with the innermost | sent with a 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 | label having a TTL of 1. This is to terminate the ping at the egress | |||
PE, before it gets sent to the customer device. However, under cer- | PE, before it gets sent to the customer device. However, under | |||
tain circumstances, the label stack can shrink to a single label | certain circumstances, the label stack can shrink to a single label | |||
before the ping hits the egress PE; this will result in the ping ter- | before the ping hits the egress PE; this will result in the ping | |||
minating prematurely. One such scenario is a multi-AS Carrier's Car- | terminating prematurely. One such scenario is a multi-AS Carrier's | |||
rier VPN. | Carrier VPN. | |||
To get around this problem, one approach is for the LSR that receives | To get around this problem, one approach is for the LSR that receives | |||
such a ping to realize that the ping terminated prematurely, and send | such a ping to realize that the ping terminated prematurely, and send | |||
back error code 13. In that case, the initiating LSR can retry the | back error code 13. In that case, the initiating LSR can retry the | |||
ping after incrementing the TTL on the VPN label. In this fashion, | ping after incrementing the TTL on the VPN label. In this fashion, | |||
the ingress LSR will sequentially try TTL values until it finds one | the ingress LSR will sequentially try TTL values until it finds one | |||
that allows the VPN ping to reach the egress PE. | that allows the VPN ping to reach the egress PE. | |||
4.8. Non-compliant Routers | 4.8. Non-compliant Routers | |||
If the egress for the FEC Stack being pinged does not support MPLS | If the egress for the FEC Stack being pinged does not support MPLS | |||
ping, then no reply will be sent, resulting in possible "false nega- | ping, then no reply will be sent, resulting in possible "false | |||
tives". If in "traceroute" mode, a transit LSR does not support LSP | negatives". If in "traceroute" mode, a transit LSR does not support | |||
ping, then no reply will be forthcoming from that LSR for some TTL, | LSP ping, then no reply will be forthcoming from that LSR for some | |||
say n. The LSR originating the echo request SHOULD try sending the | TTL, say, n. The LSR originating the echo request SHOULD try sending | |||
echo request with TTL=n+1, n+2, ..., n+k to probe LSRs further down | the echo request with TTL=n+1, n+2, ..., n+k to probe LSRs further | |||
the path. In such a case, the echo request for TTL > n SHOULD be | down the path. In such a case, the echo request for TTL > n SHOULD | |||
sent with Downstream Mapping TLV "Downstream IP Address" field set to | be sent with Downstream Mapping TLV "Downstream IP Address" field set | |||
the ALLROUTERs multicast address until a reply is received with a | to 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. Furthermore, the "Validate FEC Stack" flag | |||
NOT be set until an echo reply packet with a Downstream Mapping TLV | SHOULD NOT be set until an echo reply packet with a Downstream | |||
is received. | Mapping TLV is received. | |||
5. References | 5. References | |||
Normative References | 5.1. Normative References | |||
[BGP] Rekhter, Y. and T. Li, "A Border Gateway Protocol 4 | [BGP] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway | |||
(BGP-4)", RFC 1771, March 1995. | Protocol 4 (BGP-4)", RFC 4271, January 2006. | |||
[IANA] Narten, T. and H. Alvestrand, "Guidelines for IANA | [IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing | |||
Considerations", BCP 26, RFC 2434, October 1998. | an IANA Considerations Section in RFCs", 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., Tappan, D., Fedorkow, G., Rekhter, Y., | |||
RFC 3032, January 2001. | Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | |||
Encoding", RFC 3032, January 2001. | ||||
[NTP] Mills, D., "Simple Network Time Protocol (SNTP) | [NTP] Mills, D., "Simple Network Time Protocol (SNTP) | |||
Version 4 for IPv4, IPv6 and OSI", RFC 2030, October | Version 4 for IPv4, IPv6 and OSI", RFC 2030, October | |||
1996. | 1996. | |||
[RFC1122] Braden, R., "Requirements for Internet Hosts - | [RFC1122] Braden, R., "Requirements for Internet Hosts - | |||
Communication Layers", STD 3, RFC 1122, October 1989. | Communication Layers", STD 3, RFC 1122, October 1989. | |||
[RFC1812] Almquist, P. and F. Kastenholz, "Towards Requirements | [RFC1812] Baker, F., "Requirements for IP Version 4 Routers", | |||
for IP Routers", RFC 1716, November 1994. | RFC 1812, June 1995. | |||
[RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned | [RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned | |||
Virtual Private Network (VPN) Terminology", RFC 4026, | Virtual Private Network (VPN) Terminology", RFC 4026, | |||
March 2005. | March 2005. | |||
Informative References | 5.2. Informative References | |||
[BGP-LABEL] Rekhter, Y. and E. Rosen, "Carrying Label Information | [BGP-LABEL] Rekhter, Y. and E. Rosen, "Carrying Label Information | |||
in BGP-4", RFC 3107, May 2001. | in BGP-4", RFC 3107, May 2001. | |||
[ICMP] Postel, J., "Internet Control Message Protocol", | [ICMP] Postel, J., "Internet Control Message Protocol", STD | |||
RFC 792. | 5, RFC 792, September 1981. | |||
[LDP] Andersson, L., et al, "LDP Specification", RFC 3036, | [LDP] Andersson, L., Doolan, P., Feldman, N., Fredette, A., | |||
January 2001. | and B. Thomas, "LDP Specification", RFC 3036, January | |||
2001. | ||||
[MPLS-L3-VPN] Rekhter, Y. & Rosen, E., "BGP/MPLS IP VPNs", | [PW-CONTROL] Martini, L., El-Aawar, N., Heron, G., Rosen, E., | |||
draft-ietf-l3vpn-rfc2547bis-03.txt, work-in-progress. | Tappan, D., and T. Smith, "Pseudowire Setup and | |||
Maintenance using the Label Distribution Protocol", | ||||
Work in Progress. | ||||
[PW-CONTROL] Martini, L. et al., "Pseudowire Setup and Maintenance | [RFC4365] Rosen, E., "Applicability Statement for BGP/MPLS IP | |||
using the Label Distribution Protocol", | Virtual Private Networks (VPNs)", RFC 4365, February | |||
draft-ietf-pwe3-control-protocol-17.txt, | 2006. | |||
work-in-progress. | ||||
[RSVP-TE] Awduche, D., et al., "RSVP-TE: Extensions to RSVP for | [RSVP-TE] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, | |||
V., and G. Swallow, "RSVP-TE: Extensions to RSVP for | ||||
LSP Tunnels", RFC 3209, December 2001. | LSP Tunnels", RFC 3209, December 2001. | |||
[VCCV] Nadeau, T. & Aggarwal, R., "Pseudo Wire Virtual | [VCCV] Nadeau, T. and R. Aggarwal, "Pseudo Wire Virtual | |||
Circuit Connectivity Verification (VCCV), | Circuit Connectivity Verification (VCCV), Work in | |||
draft-ietf-pwe3-vccv-07.txt, August 2005, | Progress, August 2005. | |||
work-in-progress. | ||||
[VPLS-BGP] Kompella, K. and Rekhter, Y., "Virtual Private LAN | [VPLS-BGP] Kompella, K. and Y. Rekhter, "Virtual Private LAN | |||
Service", draft-ietf-l2vpn-vpls-bgp-05, | Service", Work in Progress. | |||
work-in-progress. | ||||
6. Security Considerations | 6. Security Considerations | |||
Overall, the security needs for LSP Ping are are similar to those of | Overall, the security needs for LSP ping are similar to those of ICMP | |||
ICMP Ping. | ping. | |||
There are at least three approaches to attacking LSRs using the mech- | There are at least three approaches to attacking LSRs using the | |||
anisms defined here. One is a Denial of Service attack, by sending | mechanisms defined here. One is a Denial-of-Service attack, by | |||
MPLS echo requests/replies to LSRs and thereby increasing their work- | sending MPLS echo requests/replies to LSRs and thereby increasing | |||
load. The second is obfuscating the state of the MPLS data plane | their workload. The second is obfuscating the state of the MPLS data | |||
liveness by spoofing, hijacking, replaying or otherwise tampering | plane liveness by spoofing, hijacking, replaying, or otherwise | |||
with MPLS echo requests and replies. The third is an unauthorized | tampering with MPLS echo requests and replies. The third is an | |||
source using an LSP Ping to obtain information about the network. | unauthorized source using an LSP ping to obtain information about the | |||
network. | ||||
To avoid potential Denial of Service attacks, it is RECOMMENDED that | To avoid potential Denial-of-Service attacks, it is RECOMMENDED that | |||
implementations regulate the LSP ping traffic going to the control | implementations regulate the LSP ping traffic going to the control | |||
plane. A rate limiter SHOULD be applied to the well-known UDP port | plane. A rate limiter SHOULD be applied to the well-known UDP port | |||
defined below. | defined below. | |||
Unsophisticated replay and spoofing attacks involving faking or | Unsophisticated replay and spoofing attacks involving faking or | |||
replaying MPLS Echo Reply Messages are unlikely to be effective. | replaying MPLS echo reply messages are unlikely to be effective. | |||
These replies would have to match the the Sender's Handle and | These replies would have to match the Sender's Handle and Sequence | |||
Sequence Number of an outstanding MPLS Echo Request Message. A non- | Number of an outstanding MPLS echo request message. A non-matching | |||
matching replay would be discarded as the sequence has moved on, thus | replay would be discarded as the sequence has moved on, thus a spoof | |||
a spoof has only a small window of opportunity. However to provide a | has only a small window of opportunity. However, to provide a | |||
stronger defence, an implementation MAY also validate the TimeStamp | stronger defense, an implementation MAY also validate the TimeStamp | |||
Sent by requiring and exact match on this field. | Sent by requiring and exact match on this field. | |||
To protect against unauthorized sources using MPLS Echo Request mes- | To protect against unauthorized sources using MPLS echo request | |||
sages to obtain network information, it is RECOMMENDED that implemen- | messages to obtain network information, it is RECOMMENDED that | |||
tations provides a means of checking the source addresses of MPLS | implementations provide a means of checking the source addresses of | |||
Echo Request messages against an access list before accepting the | MPLS echo request messages against an access list before accepting | |||
message. | the message. | |||
It is not clear how to prevent hijacking (non-delivery) of echo | It is not clear how to prevent hijacking (non-delivery) of echo | |||
requests or replies; however, if these messages are indeed hijacked, | requests or replies; however, if these messages are indeed hijacked, | |||
LSP ping will report that the data plane isn't working as it should. | LSP ping will report that the data plane is not working as it should. | |||
It doesn't seem vital (at this point) to secure the data carried in | It does not 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 | |||
the MPLS data plane may be considered confidential by some. Imple- | the MPLS data plane may be considered confidential by some. | |||
mentations SHOULD however provide a means of filtering the addresses | Implementations SHOULD, however, provide a means of filtering the | |||
to which Echo Reply messages may be sent. | addresses to which echo reply messages may be sent. | |||
Although this document makes special use of 127/8 address, these are | Although this document makes special use of 127/8 address, these are | |||
used only in conjunction with the UDP port 3503. Further these pack- | used only in conjunction with the UDP port 3503. Furthermore, these | |||
ets are only processed by routers. All other hosts MUST treat all | packets are only processed by routers. All other hosts MUST treat | |||
packets with a destination address in the range 127/8 in accordance | all packets with a destination address in the range 127/8 in | |||
to RFC1122. Any packet received by a router with a destination | accordance to RFC 1122. Any packet received by a router with a | |||
address in the range 127/8 without a destination UDP port of 3503 | destination address in the range 127/8 without a destination UDP port | |||
MUST be treated in accordance to RFC1812. In particular, the default | of 3503 MUST be treated in accordance to RFC 1812. In particular, | |||
behavior is to treat packets destined to a 127/8 address as "mar- | the default behavior is to treat packets destined to a 127/8 address | |||
tians". | as "martians". | |||
7. IANA Considerations | 7. IANA Considerations | |||
The TCP and UDP port number 3503 has been allocated by IANA for LSP | The TCP and UDP port number 3503 has been allocated by IANA for LSP | |||
echo requests and replies. | echo requests and replies. | |||
The following sections detail the new name spaces to be managed by | The following sections detail the new name spaces to be managed by | |||
IANA. For each of these name spaces, the space is divided into | IANA. For each of these name spaces, the space is divided into | |||
assignment ranges; the following terms are used in describing the | assignment ranges; the following terms are used in describing the | |||
procedures by which IANA allocates values: "Standards Action" (as | procedures by which IANA allocates values: "Standards Action" (as | |||
defined in [IANA]); "Specification Required" and "Vendor Private | defined in [IANA]), "Specification Required", and "Vendor Private | |||
Use". | Use". | |||
Values from "Specification Required" ranges MUST be registered with | Values from "Specification Required" ranges MUST be registered with | |||
IANA. The request MUST be made via an Experimental RFC that | IANA. The request MUST be made via an Experimental RFC that | |||
describes the format and procedures for using the code point; the | describes the format and procedures for using the code point; the | |||
actual assignment is made during the IANA actions for the RFC. | actual assignment is made during the IANA actions for the RFC. | |||
Values from "Vendor Private" ranges MUST NOT be registered with IANA; | Values from "Vendor Private" ranges MUST NOT be registered with IANA; | |||
however, the message MUST contain an enterprise code as registered | however, the message MUST contain an enterprise code as registered | |||
with the IANA SMI Private Network Management Private Enterprise Num- | with the IANA SMI Private Network Management Private Enterprise | |||
bers. For each name space that has a Vendor Private range, it must | Numbers. For each name space that has a Vendor Private range, it | |||
be specified where exactly the SMI Private Enterprise Number resides; | must be specified where exactly the SMI Private Enterprise Number | |||
see below for examples. In this way, several enterprises (vendors) | resides; see below for examples. In this way, several enterprises | |||
can use the same code point without fear of collision. | (vendors) can use the same 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, | The IANA has created and will maintain registries for Message Types, | |||
Reply Modes, and Return Codes. Each of these can take values in the | Reply Modes, and Return Codes. Each of these can take values in the | |||
range 0-255. Assignments in the range 0-191 are via Standards | range 0-255. Assignments in the range 0-191 are via Standards | |||
Action; assignments in the range 192-251 are made via "Specification | Action; assignments in the range 192-251 are made via "Specification | |||
Required"; values in the range 252-255 are for Vendor Private Use, | Required"; values in the range 252-255 are for Vendor Private Use, | |||
and MUST NOT be allocated. | and MUST NOT 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 Number TLV MUST be present in the message. | Vendor Enterprise Number TLV MUST be present in the message. | |||
Message Types defined in this document are: | Message Types defined in this document are the following: | |||
Value Meaning | Value Meaning | |||
----- ------- | ----- ------- | |||
1 MPLS Echo Request | 1 MPLS echo request | |||
2 MPLS Echo Reply | 2 MPLS echo reply | |||
Reply Modes defined in this document are the following: | ||||
Reply Modes defined in this document are: | ||||
Value Meaning | Value Meaning | |||
----- ------- | ----- ------- | |||
1 Do not reply | 1 Do not reply | |||
2 Reply via an IPv4/IPv6 UDP packet | 2 Reply via an IPv4/IPv6 UDP packet | |||
3 Reply via an IPv4/IPv6 UDP packet with Router Alert | 3 Reply via an IPv4/IPv6 UDP packet with Router Alert | |||
4 Reply via application level control channel | 4 Reply via application level control channel | |||
Return Codes defined in this document are listed in section 3.1. | Return Codes defined in this document are listed in section 3.1. | |||
7.2. TLVs | 7.2. TLVs | |||
It is requested that IANA maintain a registry for the Type field of | The IANA has created and will maintain a registry for the Type field | |||
top-level TLVs as well as for any associated sub-TLVs. Note the | of top-level TLVs as well as for any associated sub-TLVs. Note the | |||
meaning of a sub-TLV is scoped by the TLV. The number spaces for the | meaning of a sub-TLV is scoped by the TLV. The number spaces for the | |||
sub-TLVs of various TLVs are independent. | sub-TLVs of various TLVs are independent. | |||
The valid range for TLVs and sub-TLVs is 0-65535. Assignments in the | The valid range for TLVs and sub-TLVs is 0-65535. Assignments in the | |||
range 0-16383 and 32768-49161 are made via Standards Action as | range 0-16383 and 32768-49161 are made via Standards Action as | |||
defined in [IANA]; assignments in the range 16384-31743 and | defined in [IANA]; assignments in the range 16384-31743 and | |||
49162-64511 are made via "Specification Required" as defined above; | 49162-64511 are made via "Specification Required" as defined above; | |||
values in the range 31744-32767 and 64512-65535 are for Vendor Pri- | values in the range 31744-32767 and 64512-65535 are for Vendor | |||
vate Use, and MUST NOT be allocated. | 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 Private Enterprise Number, in network octet | MUST be that vendor's SMI Private Enterprise Number, in network octet | |||
order. The rest of the Value field is private to the vendor. | order. The rest of the Value field is private to the vendor. | |||
TLVs and sub-TLVs defined in this document are: | TLVs and sub-TLVs defined in this document are the following: | |||
Type Sub-Type Value Field | Type Sub-Type Value Field | |||
---- -------- ----------- | ---- -------- ----------- | |||
1 Target FEC Stack | 1 Target FEC Stack | |||
1 LDP IPv4 prefix | 1 LDP IPv4 prefix | |||
2 LDP IPv6 prefix | 2 LDP IPv6 prefix | |||
3 RSVP IPv4 LSP | 3 RSVP IPv4 LSP | |||
4 RSVP IPv6 LSP | 4 RSVP IPv6 LSP | |||
5 Not Assigned | 5 Not Assigned | |||
6 VPN IPv4 prefix | 6 VPN IPv4 prefix | |||
skipping to change at page 49, line 23 | skipping to change at page 48, line 37 | |||
3 Pad | 3 Pad | |||
4 Not Assigned | 4 Not Assigned | |||
5 Vendor Enterprise Number | 5 Vendor Enterprise Number | |||
6 Not Assigned | 6 Not Assigned | |||
7 Interface and Label Stack | 7 Interface and Label Stack | |||
8 Not Assigned | 8 Not Assigned | |||
9 Errored TLVs | 9 Errored TLVs | |||
Any value The TLV not understood | Any value The TLV not understood | |||
10 Reply TOS Byte | 10 Reply TOS Byte | |||
8. Acknowledgments | 8. Acknowledgements | |||
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 | including Manoj Leelanivas, Paul Traina, Yakov Rekhter, Der-Hwa Gan, | |||
Gan, Brook Bailey, Eric Rosen, Ina Minei, Shivani Aggarwal and Vanson | 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 | |||
stream Mapping TLV was adapted from text suggested by Curtis Vil- | Downstream Mapping TLV was adapted from text suggested by Curtis | |||
lamizar. | Villamizar. | |||
Authors' Addresses | Authors' Addresses | |||
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 | ||||
Email: swallow@cisco.com | ||||
Copyright Notice | Phone: +1 978 936 1398 | |||
EMail: swallow@cisco.com | ||||
Copyright (C) The Internet Society (2005). This document is subject | ||||
to the rights, licenses and restrictions contained in BCP 78, and | ||||
except as set forth therein, the authors retain all their rights. | ||||
Expiration Date | Full Copyright Statement | |||
July 2006 | Copyright (C) The Internet Society (2006). | |||
Disclaimer of Validity | This document is subject to the rights, licenses and restrictions | |||
contained in BCP 78, and except as set forth therein, the authors | ||||
retain all their rights. | ||||
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 | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
Intellectual Property | ||||
The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
Intellectual Property Rights or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
this document or the extent to which any license under such rights | 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 | might or might not be available; nor does it represent that it has | |||
made any independent effort to identify any such rights. Information | made any independent effort to identify any such rights. Information | |||
on the procedures with respect to rights in RFC documents can be | on the procedures with respect to rights in RFC documents can be | |||
found in BCP 78 and BCP 79. | found in BCP 78 and BCP 79. | |||
Copies of IPR disclosures made to the IETF Secretariat and any | Copies of IPR disclosures made to the IETF Secretariat and any | |||
skipping to change at line 2193 | skipping to change at page 50, line 44 | |||
attempt made to obtain a general license or permission for the use of | attempt made to obtain a general license or permission for the use of | |||
such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
specification can be obtained from the IETF on-line IPR repository at | specification can be obtained from the IETF on-line IPR repository at | |||
http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
this standard. Please address the information to the IETF at | this standard. Please address the information to the IETF at | |||
ietf-ipr@ietf.org. | ietf-ipr@ietf.org. | |||
Acknowledgement | ||||
Funding for the RFC Editor function is provided by the IETF | ||||
Administrative Support Activity (IASA). | ||||
End of changes. 239 change blocks. | ||||
692 lines changed or deleted | 689 lines changed or added | |||
This html diff was produced by rfcdiff 1.29, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |