Internet DRAFT - draft-ietf-mpls-spring-lsp-ping
draft-ietf-mpls-spring-lsp-ping
Network Work group N. Kumar, Ed.
Internet-Draft C. Pignataro, Ed.
Intended status: Standards Track Cisco
Expires: April 20, 2018 G. Swallow
Southend Technical Center
N. Akiya
Big Switch Networks
S. Kini
Individual
M. Chen
Huawei
October 17, 2017
Label Switched Path (LSP) Ping/Traceroute for Segment Routing IGP Prefix
and Adjacency SIDs with MPLS Data-plane
draft-ietf-mpls-spring-lsp-ping-13
Abstract
A Segment Routing architecture leverages source routing and tunneling
paradigms and can be directly applied to use of a Multi Protocol
Label Switching (MPLS) data plane. A node steers a packet through a
controlled set of instructions called segments, by prepending the
packet with a Segment Routing header.
The segment assignment and forwarding semantic nature of Segment
Routing raises additional consideration for connectivity verification
and fault isolation for an LSP within a Segment Routing architecture.
This document illustrates the problem and defines extensions to
perform LSP Ping and Traceroute for Segment Routing IGP Prefix and
Adjacency SIDs with an MPLS data plane.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
Kumar, et al. Expires April 20, 2018 [Page 1]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
This Internet-Draft will expire on April 20, 2018.
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Coexistence of SR-Capable and Non-SR-Capable Node
Scenarios . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Requirements notation . . . . . . . . . . . . . . . . . . . . 4
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Challenges with Existing mechanisms . . . . . . . . . . . . . 4
4.1. Path validation in Segment Routing networks . . . . . . . 4
5. Segment ID sub-TLV . . . . . . . . . . . . . . . . . . . . . 5
5.1. IPv4 IGP-Prefix Segment ID . . . . . . . . . . . . . . . 6
5.2. IPv6 IGP-Prefix Segment ID . . . . . . . . . . . . . . . 7
5.3. IGP-Adjacency Segment ID . . . . . . . . . . . . . . . . 8
6. Extension to Downstream Detailed Mapping TLV . . . . . . . . 9
7. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.1. FECs in Target FEC Stack TLV . . . . . . . . . . . . . . 10
7.2. FEC Stack Change sub-TLV . . . . . . . . . . . . . . . . 11
7.3. Segment ID POP Operation . . . . . . . . . . . . . . . . 11
7.4. Segment ID Check . . . . . . . . . . . . . . . . . . . . 11
7.5. TTL Consideration for traceroute . . . . . . . . . . . . 17
8. Backward Compatibility with non Segment Routing devices . . . 17
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
9.1. New Target FEC Stack Sub-TLVs . . . . . . . . . . . . . . 18
9.2. Protocol in the Segment ID sub-TLV . . . . . . . . . . . 18
9.3. Adjacency Type in the IGP-Adjacency Segment ID . . . . . 19
9.4. Protocol in Label Stack Sub-TLV of Downstream Detailed
Mapping TLV . . . . . . . . . . . . . . . . . . . . . . . 19
9.5. Return Code . . . . . . . . . . . . . . . . . . . . . . . 19
10. Security Considerations . . . . . . . . . . . . . . . . . . . 20
11. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 20
12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 20
Kumar, et al. Expires April 20, 2018 [Page 2]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 20
13.1. Normative References . . . . . . . . . . . . . . . . . . 20
13.2. Informative References . . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22
1. Introduction
"Detecting Multi-Protocol Label Switched (MPLS) Data Plane Failures"
[RFC8029] defines a simple and efficient mechanism to detect data
plane failures in Label Switched Paths (LSP) by specifying
information to be carried in an MPLS "echo request" and "echo reply"
for the purposes of fault detection and isolation. Mechanisms for
reliably sending the echo reply are defined. The functionality
defined in [RFC8029] is modeled after the ping/traceroute paradigm
(ICMP echo request [RFC0792]) and is typically referred to as LSP
ping and LSP traceroute. [RFC8029] supports hierarchical and
stitching LSPs.
[I-D.ietf-spring-segment-routing] introduces and describes a Segment
Routing architecture that leverages the source routing and tunneling
paradigms. A node steers a packet through a controlled set of
instructions called segments, by prepending the packet with Segment
Routing header. A detailed definition of the Segment Routing
architecture is available in [I-D.ietf-spring-segment-routing].
As described in [I-D.ietf-spring-segment-routing] and
[I-D.ietf-spring-segment-routing-mpls], the Segment Routing
architecture can be directly applied to an MPLS data plane, the
Segment identifier (Segment ID) will be of 20-bits size and the
Segment Routing header is the label stack. Consequently, the
mechanics of data place validation of [RFC8029] can be directly
applied to SR MPLS.
Unlike LDP or RSVP which are the other well-known MPLS control plane
protocols, the basis of segment ID assignment in Segment Routing
architecture is not always on a hop-by-hop basis. Depending on the
type of segment ID, the assignment can be unique to the node or
within a domain.
This nature of Segment Routing raises additional considerations for
validation of fault detection and isolation in a Segment Routing
network. This document illustrates the problem and describes a
mechanism to perform LSP Ping and Traceroute for Segment Routing IGP
Prefix and Adjacency SIDs within an MPLS data plane.
Kumar, et al. Expires April 20, 2018 [Page 3]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
1.1. Coexistence of SR-Capable and Non-SR-Capable Node Scenarios
[I-D.ietf-spring-segment-routing-ldp-interop] describes how Segment
Routing operates in a network where SR-capable and non-SR-capable
nodes coexist. In such a network, one or more SR-based LSPs and non-
SR-based LSPs are stitched together to achieve an end-to-end LSP.
This is similar to a network where LDP and RSVP nodes coexist and the
mechanism defined in Section 4.5.2 of [RFC8029] is applicable for LSP
Ping and Trace.
Section 8 of this document explains one of the potential gaps that is
specific to SR-Capable and non-SR-capable node scenarios and explains
how the existing mechanism defined in [RFC8029] handles it.
2. Requirements notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
3. Terminology
This document uses the terminologies defined in
[I-D.ietf-spring-segment-routing], [RFC8029], readers are expected to
be familiar with it.
4. Challenges with Existing mechanisms
The following example describes the challenges with using the current
MPLS OAM mechanisms on a Segment Routing network.
4.1. Path validation in Segment Routing networks
[RFC8029] defines the MPLS OAM mechanisms that help with fault
detection and isolation for an MPLS data-plane path by the use of
various Target FEC Stack Sub-TLVs that are carried in MPLS Echo
Request packets and used by the responder for FEC validation. While
it is obvious that new Sub-TLVs need to be assigned for Segment
Routing, the unique nature of the Segment Routing architecture raises
the need for additional operational considerations for path
validation. This section discusses the challenges as below:
Kumar, et al. Expires April 20, 2018 [Page 4]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
L1
+--------+
| L2 |
R3-------R6
/ \
/ \
R1----R2 R7----R8
\ /
\ /
R4-------R5
Figure 1: Segment Routing network
The Node Segment IDs for R1, R2, R3, R4, R5, R6, R7 and R8 are 5001,
5002, 5003, 5004, 5005, 5006, 5007, 5008 respectively.
9136 --> Adjacency Segment ID from R3 to R6 over link L1.
9236 --> Adjacency Segment ID from R3 to R6 over link L2.
9124 --> Adjacency segment ID from R2 to R4.
9123 --> Adjacency Segment ID from R2 to R3.
The forwarding semantic of Adjacency Segment ID is to pop the Segment
ID and send the packet to a specific neighbor over a specific link.
A malfunctioning node may forward packets using Adjacency Segment ID
to an incorrect neighbor or over an incorrect link. The exposed
Segment ID (of an incorrectly forwarded Adjacency Segment ID) might
still allow such packet to reach the intended destination, although
the intended strict traversal has been broken.
Assume in above topology, R1 sends traffic with segment stack as
{9124, 5008} so that the path taken will be R1-R2-R4-R5-R7-R8. If
the Adjacency Segment ID 9124 is misprogrammed in R2 to send the
packet to R1 or R3, the packet may still be delivered to R8 (if the
nodes are configured with same SRGB) but is not via the expected
path.
MPLS traceroute may help with detecting such a deviation in the above
mentioned scenario. However, in a different example, it may not be
helpful. For example if R3, due to misprogramming, forwards a packet
with Adjacency Segment ID 9236 via link L1, while it is expected to
be forwarded over Link L2.
5. Segment ID sub-TLV
The format of the following Segment ID sub-TLVs follows the
philosophy of Target FEC Stack TLV carrying FECs corresponding to
each label in the label stack. When operated with the procedures
Kumar, et al. Expires April 20, 2018 [Page 5]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
defined in [RFC8029], this allows LSP ping/traceroute operations to
function when Target FEC Stack TLV contains more FECs than received
label stack at responder nodes.
Three new sub-TLVs are defined for Target FEC Stack TLVs (Type 1),
Reverse-Path Target FEC Stack TLV (Type 16) and Reply Path TLV (Type
21).
sub-Type Value Field
-------- ---------------
34 IPv4 IGP-Prefix Segment ID
35 IPv6 IGP-Prefix Segment ID
36 IGP-Adjacency Segment ID
See Section 9.2 for the registry for the Protocol field specified
wihtin these sub-TLVs.
5.1. IPv4 IGP-Prefix Segment ID
The IPv4 IGP-Prefix Segment ID is defined in
[I-D.ietf-spring-segment-routing]. The format is as specified below:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Prefix |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix Length | Protocol | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv4 Prefix
This field carries the IPv4 prefix to which the Segment ID is
assigned. In case of Anycast Segment ID, this field will carry
IPv4 Anycast address. If the prefix is shorter than 32 bits,
trailing bits SHOULD be set to zero.
Prefix Length
The Prefix Length field is one octet, it gives the length of the
prefix in bits (values can be 1 - 32).
Protocol
Kumar, et al. Expires April 20, 2018 [Page 6]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
Set to 1, if the Responder MUST perform FEC validation using OSPF
as IGP protocol. Set to 2, if the Responder MUST perform Egress
FEC validation using ISIS as IGP protocol. Set to 0, if Responder
can use any IGP protocol for Egress FEC validation.
Reserved
MUST be set to 0 on send, and MUST be ignored on receipt.
5.2. IPv6 IGP-Prefix Segment ID
The IPv6 IGP-Prefix Segment ID is defined in
[I-D.ietf-spring-segment-routing]. The format is as specified below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| IPv6 Prefix |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix Length | Protocol | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv6 Prefix
This field carries the IPv6 prefix to which the Segment ID is
assigned. In case of Anycast Segment ID, this field will carry
IPv4 Anycast address. If the prefix is shorter than 128 bits,
trailing bits SHOULD be set to zero.
Prefix Length
The Prefix Length field is one octet, it gives the length of the
prefix in bits (values can be 1 - 128).
Protocol
Set to 1, if the Responder MUST perform FEC validation using OSPF
as IGP protocol. Set to 2, if the Responder MUST perform Egress
FEC validation using ISIS as IGP protocol. Set to 0, if Responder
can use any IGP protocol for Egress FEC validation.
Reserved
Kumar, et al. Expires April 20, 2018 [Page 7]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
MUST be set to 0 on send, and MUST be ignored on receipt.
5.3. IGP-Adjacency Segment ID
This Sub-TLV is applicable for any IGP-Adjacency defined in
[I-D.ietf-spring-segment-routing]. The format is as specified below:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Adj. Type | Protocol | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
| Local Interface ID (4 or 16 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
| Remote Interface ID (4 or 16 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
| Advertising Node Identifier (4 or 6 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
| Receiving Node Identifier (4 or 6 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Adj. Type (Adjacency Type)
Set to 1, when the Adjacency Segment is Parallel Adjacency as
defined in [I-D.ietf-spring-segment-routing]. Set to 4, when the
Adjacency segment is IPv4 based and is not a parallel adjacency.
Set to 6, when the Adjacency segment is IPv6 based and is not a
parallel adjacency. Set to 0, when the Adjacency segment is over
unnumbered interface.
Protocol
Set to 1, if the Responder MUST perform FEC validation using OSPF
as IGP protocol. Set to 2, if the Responder MUST perform Egress
FEC validation using ISIS as IGP protocol. Set to 0, if Responder
can use any IGP protocol for Egress FEC validation.
Reserved
MUST be set to 0 on send, and MUST be ignored on receipt.
Local Interface ID
Kumar, et al. Expires April 20, 2018 [Page 8]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
An identifier that is assigned by the local LSR for a link to
which Adjacency Segment ID is bound. This field is set to a local
link address (IPv4 or IPv6). For IPv4, this field is 4 octets;
for IPv6, this field is 16 octets. In case of unnumbered, this
field is 4 octets and includes a 32 bit link identifier as defined
in [RFC4203], [RFC5307]. If the Adjacency Segment ID represents
parallel adjacencies ([I-D.ietf-spring-segment-routing]), this
field is 4 octets and MUST be set to 4 octets of zeroes.
Remote Interface ID
An identifier that is assigned by remote LSR for a link on which
Adjacency Segment ID is bound. This field is set to remote
(downstream neighbor) link address (IPv4 or IPv6). For IPv4, this
field is 4 octets; for IPv6, this field is 16 oct ets. In case of
unnumbered, this field is 4 octets and includes a 32 bit link
identifier as defined in [RFC4203], [RFC5307]. If the Adjacency
Segment ID represents parallel adjacencies
([I-D.ietf-spring-segment-routing]), this field is 4 octets and
MUST be set to 4 octets of zeroes.
Advertising Node Identifier
It specifies the advertising node identifier. When Protocol is
set to 1, then this field is 4 octets and carries the 32-bit OSPF
Router ID; if Protocol is set to 2, then this field is 6 octets
and carries the 48-bit ISIS System ID; if Protocol is set to 0,
then this field is 4 octets, and MUST be set to zero.
Receiving Node Identifier
It specifies the downstream node identifier. When Protocol is set
to 1, then this field is 4 octets and carries the 32-bit OSPF
Router ID; if Protocol is set to 2, then this field is 6 octets
and carries the 48-bit ISIS System ID; if Protocol is set to 0,
then this field is 4 octets, and MUST be set to zero.
6. Extension to Downstream Detailed Mapping TLV
In an echo reply, the Downstream Detailed Mapping TLV [RFC8029] is
used to report for each interface over which a FEC could be
forwarded. For a FEC, there are multiple protocols that may be used
to distribute label mapping. The "Protocol" field of the Downstream
Detailed Mapping TLV is used to return the protocol that is used to
distribute the label carried in "Downstream Label" field. The
following protocols are defined in [RFC8029]:
Kumar, et al. Expires April 20, 2018 [Page 9]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
Protocol # Signaling Protocol
---------- ------------------
0 Unknown
1 Static
2 BGP
3 LDP
4 RSVP-TE
With segment routing, OSPF or ISIS can be used for label
distribution, this document adds two new protocols as follows:
Protocol # Signaling Protocol
---------- ------------------
5 OSPF
6 ISIS
See Section 9.4.
7. Procedures
This section describes aspects of LSP Ping and traceroute operations
that require further considerations beyond [RFC8029].
7.1. FECs in Target FEC Stack TLV
When LSP echo request packets are generated by an initiator, FECs
carried in the Target FEC Stack TLV may need to differ to support a
Segment Routing architecture. The following defines Target FEC Stack
TLV construction mechanics by an initiator for Segment Routing
scenarios.
Ping
Initiator MUST include FEC(s) corresponding to the destination
segment.
Initiator MAY include FECs corresponding to some or all of
segments imposed in the label stack by the initiator to
communicate the segments traversed.
Traceroute
Initiator MUST initially include FECs corresponding to all of
segments imposed in the label stack.
When a received echo reply contains FEC Stack Change TLV with
one or more of original segment(s) being popped, initiator MAY
remove corresponding FEC(s) from Target FEC Stack TLV in the
Kumar, et al. Expires April 20, 2018 [Page 10]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
next (TTL+1) traceroute request as defined in Section 4.6 of
[RFC8029].
When a received echo reply does not contain FEC Stack Change
TLV, initiator MUST NOT attempt to remove FEC(s) from Target
FEC Stack TLV in the next (TTL+1) traceroute request.
As defined in [I-D.ietf-ospf-segment-routing-extensions] and
[I-D.ietf-isis-segment-routing-extensions], Prefix SID can be
advertised as absolute value, index or as range. In any of these
cases, Initiator MUST derive the Prefix mapped to the Prefix SID and
use it in IGP-Prefix Segment ID defined in Section 5.1 and 5.2. How
the Responder uses the details in the SR-FEC Sub-TLV to perform the
validation is a local implementation matter.
7.2. FEC Stack Change sub-TLV
[RFC8029] defines a FEC Stack Change sub-TLV that a router must
include when the FEC stack changes.
The network node which advertised the Node Segment ID is responsible
for generating a FEC Stack Change sub-TLV with pop operation type for
Node Segment ID, regardless of whether penultimate hop popping (PHP)
is enabled or not.
The network node that is immediate downstream of the node which
advertised the Adjacency Segment ID is responsible for generating FEC
Stack Change sub-TLV for "POP" operation for Adjacency Segment ID.
7.3. Segment ID POP Operation
The forwarding semantic of Node Segment ID with PHP flag is
equivalent to usage of implicit Null in MPLS protocols. Adjacency
Segment ID is also similar in a sense that it can be thought of as
locally allocated segment that has PHP enabled destined for next hop
IGP adjacency node. Procedures described in Section 4.4 of [RFC8029]
relies on Stack-D and Stack-R explicitly having Implicit Null value.
Implementations SHOULD use Implicit Null for Node Segment ID PHP and
Adjacency Segment ID PHP cases.
7.4. Segment ID Check
This section modifies the procedure defined in Section 4.4.1 of
[RFC8029]. Step 4 defined in Section 4.4.1 of [RFC8029] is updated
as below:
Kumar, et al. Expires April 20, 2018 [Page 11]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
4. If the label mapping for FEC is Implicit Null, set FEC-status
to 2 and proceed to step 4a. Otherwise, if the label mapping
for FEC is Label-L, proceed to step 4a. Otherwise, set
FEC-return-code to 10 ("Mapping for this FEC is not the given
label at stack-depth"), set FEC-status to 1, and return.
4a. Segment Routing IGP Prefix and Adjacency SID Validation:
If the Label-stack-depth is 0 and Target FEC Stack Sub-TLV at
FEC-stack-depth is 34 (IPv4 IGP-Prefix Segment ID), {
Set Best return code to 10, "Mapping for this FEC is not the
given label at stack-depth <RSC>" if any below conditions
fail:
/* The responder LSR is to check if it is the egress of the
IPv4 IGP-Prefix Segment ID described in the Target FEC Stack
Sub-TLV, and if the FEC was advertised with the PHP bit
set.*/
- Validate that Node Segment ID is advertised for IPv4
Prefix by IGP Protocol {
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is 0, Use any locally enabled IGP
protocol.
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is 1, Use OSPF as IGP protocol.
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is 2, Use ISIS as IGP protocol.
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is an unrecognized value, it MUST
be treated as Protocol value of 0.
}
- Validate that Node Segment ID is advertised with No-PHP
flag {
o When Protocol is OSPF, NP-flag defined in Section 5 of
[I-D.ietf-ospf-segment-routing-extensions] MUST be set
to 0.
Kumar, et al. Expires April 20, 2018 [Page 12]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
o When Protocol is ISIS, P-Flag defined in Section 2.1
of [I-D.ietf-isis-segment-routing-extensions] MUST be
set to 0.
}
If it can be determined that no protocol associated with
Interface-I would have advertised FEC-Type at FEC-stack-
depth, Set Best return code to 12, "Protocol not associated
with interface at FEC stack-depth" and return.
set FEC-Status to 1, and return.
}
Else if the Label-stack-depth is greater than 0 and Target FEC
Stack Sub-TLV at FEC-stack-depth is 34 (IPv4 IGP-Prefix Segment
ID), {
Set Best return code to 10 if any below conditions fail:
- Validate that Node Segment ID is advertised for IPv4
Prefix by IGP Protocol {
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is 0, Use any locally enabled IGP
protocol.
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is 1, Use OSPF as IGP protocol.
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is 2, Use ISIS as IGP protocol.
o When protocol field in received IPv4 IGP-Prefix
Segment ID Sub-TLV is an unrecognized value, it MUST
be treated as Protocol value of 0.
}
If it can be determined that no protocol associated with
Interface-I would have advertised FEC-Type at FEC-stack-
depth, Set Best return code to 12, "Protocol not associated
with interface at FEC stack-depth" and return.
set FEC-Status to 1, and return.
Kumar, et al. Expires April 20, 2018 [Page 13]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
}
Else if the Label-stack-depth is 0 and Target FEC Sub-TLV at
FEC-stack-depth is 35 (IPv6 IGP-Prefix Segment ID), {
Set Best return code to 10 if any of the below conditions
fail:
/* The LSR needs to check if its being a tail-end for the
LSP and have the prefix advertised with PHP bit set*/
- Validate that Node Segment ID is advertised for IPv6
Prefix by IGP Protocol {
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is 0, Use any locally enabled IGP
protocol.
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is 1, Use OSPF as IGP protocol.
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is 2, Use ISIS as IGP protocol.
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is an unrecognized value, it MUST
be treated as Protocol value of 0.
}
- Validate that Node Segment ID is advertised with No-PHP
flag. {
o When Protocol is OSPF, NP-flag defined in Section 5 of
[I-D.ietf-ospf-ospfv3-segment-routing-extensions] MUST
be set to 0.
o When Protocol is ISIS, P-Flag defined in Section 2.1
of [I-D.ietf-isis-segment-routing-extensions] MUST be
set to 0.
}
If it can be determined that no protocol associated with
Interface-I would have advertised FEC-Type at FEC-stack-
Kumar, et al. Expires April 20, 2018 [Page 14]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
depth, Set Best return code to 12, "Protocol not associated
with interface at FEC stack-depth" and return.
set FEC-Status to 1, and return.
}
Else if the Label-stack-depth is greater than 0 and Target FEC
Sub-TLV at FEC-stack-depth is 35 (IPv6 IGP-Prefix Segment ID),
{
set Best return code to 10 if any below conditions fail:
- Validate that Node Segment ID is advertised for IPv4
Prefix by IGP Protocol {
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is 0, Use any locally enabled IGP
protocol.
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is 1, Use OSPF as IGP protocol.
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is 2, Use ISIS as IGP protocol.
o When protocol field in received IPv6 IGP-Prefix
Segment ID Sub-TLV is an unrecognized value, it MUST
be treated as Protocol value of 0.
}
If it can be determined that no protocol associated with
Interface-I would have advertised FEC-Type at FEC-stack-
depth, Set Best return code to 12, "Protocol not associated
with interface at FEC stack-depth" and return.
set FEC-Status to 1, and return.
}
Else if the Target FEC sub-TLV at FEC-stack-depth is 36 (IGP-
Adjacency Segment ID), {
set Best return code to TBD1 (Section 10.3) if any below
conditions fail:
Kumar, et al. Expires April 20, 2018 [Page 15]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
When the Adj. Type is 1 (Parallel Adjacency):
o Validate that Receiving Node Identifier is local IGP
identifier.
o Validate that IGP-Adjacency Segment ID is advertised
by Advertising Node Identifier of Protocol in local
IGP database {
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is 0, Use any locally enabled
IGP protocol.
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is 1, Use OSPF as IGP protocol.
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is 2, Use ISIS as IGP protocol.
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is an unrecognized value, it
MUST be treated as Protocol value of 0.
}
When the Adj. Type is 4 or 6 (IGP Adjacency or LAN
Adjacency):
o Validate that Remote Interface ID matches the local
identifier of the interface (Interface-I) on which the
packet was received.
o Validate that Receiving Node Identifier is local IGP
identifier.
o Validate that IGP-Adjacency Segment ID is advertised
by Advertising Node Identifier of Protocol in local
IGP database {
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is 0, Use any locally enabled
IGP protocol.
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is 1, Use OSPF as IGP protocol.
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is 2, Use ISIS as IGP protocol.
Kumar, et al. Expires April 20, 2018 [Page 16]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
* When protocol field in received IGP-Adjacency
Segment ID Sub-TLV is an unrecognized value, it
MUST be treated as Protocol value of 0.
}
set FEC-Status to 1, and return.
}
7.5. TTL Consideration for traceroute
LSP Traceroute operation can properly traverse every hop of Segment
Routing network for the Uniform Model as described in [RFC3443]. If
one or more LSRs employ a Short Pipe Model, as described in
[RFC3443], then LSP Traceroute may not be able to properly traverse
every hop of Segment Routing network due to the absence of TTL copy
operation when the outer label is popped. The Short Pipe is one of
the most commonly used models. The following TTL manipulation
technique MAY be used when the Short Pipe model is used.
When tracing a LSP according to the procedures in [RFC8029] the TTL
is incremented by one in order to trace the path sequentially along
the LSP. However when a source routed LSP has to be traced there are
as many TTLs as there are labels in the stack. The LSR that
initiates the traceroute SHOULD start by setting the TTL to 1 for the
tunnel in the LSP's label stack it wants to start the tracing from,
the TTL of all outer labels in the stack to the max value, and the
TTL of all the inner labels in the stack to zero. Thus a typical
start to the traceroute would have a TTL of 1 for the outermost label
and all the inner labels would have TTL 0. If the FEC Stack TLV is
included it should contain only those for the inner stacked tunnels.
The Return Code/Subcode and FEC Stack Change TLV should be used to
diagnose the tunnel as described in [RFC8029]. When the tracing of a
tunnel in the stack is complete, then the next tunnel in the stack
should be traced. The end of a tunnel can be detected from the
"Return Code" when it indicates that the responding LSR is an egress
for the stack at depth 1. Thus the traceroute procedures in
[RFC8029] can be recursively applied to traceroute a source routed
LSP.
8. Backward Compatibility with non Segment Routing devices
[I-D.ietf-spring-segment-routing-ldp-interop] describes how Segment
Routing operates in a network where SR-capable and non-SR-capable
nodes coexist. In such networks, there may not be any FEC mapping in
the responder, when the Initiator is SR-capable, while the responder
is not (or vice-versa). But this is not different from RSVP and LDP
Kumar, et al. Expires April 20, 2018 [Page 17]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
interop scenarios. When LSP Ping is triggered, the responder will
set the FEC-return-code to Return 4, "Replying router has no mapping
for the FEC at stack-depth".
Similarly when a SR-capable node assigns Adj-SID for a non-SR-capable
node, LSP traceroute may fail as the non-SR-capable node is not aware
of "IGP Adjacency Segment ID" sub-TLV and may not reply with FEC
Stack change. This may result in any further downstream nodes to
reply back with Return-code as 4, "Replying router has no mapping for
the FEC at stack-depth".
9. IANA Considerations
9.1. New Target FEC Stack Sub-TLVs
IANA is requested to assign three new Sub-TLVs from "Sub-TLVs for TLV
Types 1, 16 and 21" sub-registry from the "Multi-Protocol Label
Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters"
[IANA-MPLS-LSP-PING] registry.
Sub-Type Sub-TLV Name Reference
-------- ----------------- ------------
34 IPv4 IGP-Prefix Segment ID Section 5.1 of this document
35 IPv6 IGP-Prefix Segment ID Section 5.2 of this document
36 IGP-Adjacency Segment ID Section 5.3 of this document
Note to the RFC Editor (please remove before publication): IANA has
made early allocation for sub-type 34, 35 and 35. The early
allocation expires 2018-09-15.
9.2. Protocol in the Segment ID sub-TLV
IANA is requested to create a new "Protocol in the Segment ID sub-
TLV" (see Section 5) registry under the "Multi-Protocol Label
Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters"
registry. Code points in the range of 0-250 will be assigned by
Standards Action. The range of 251-254 are reserved for experimental
use and will not be assigned. The initial entries into the registry
will be:
Value Meaning Reference
---------- ---------------- ------------
0 Any IGP Protocol This document
1 OSPF This document
2 ISIS This document
Kumar, et al. Expires April 20, 2018 [Page 18]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
9.3. Adjacency Type in the IGP-Adjacency Segment ID
IANA is requested to create a new "Adjacency Type in the IGP-
Adjacency Segment ID" (see Section 5.3) registry under the "Multi-
Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping
Parameters" registry. Code points in the range of 0-250 will be
assigned by Standards Action. The range of 251-254 are reserved for
experimental use and will not be assigned. The initial entries into
the registry will be:
Value Meaning
---------- ----------------
0 Unnumbered interface Adjacency
1 Parallel Adjacency
4 IPv4, non-parallel Adjacency
6 IPv6, non-parallel Adjacency
9.4. Protocol in Label Stack Sub-TLV of Downstream Detailed Mapping TLV
IANA is requested to create a new "Protocol in Label Stack Sub-TLV of
Downstream Detailed Mapping TLV" registry under the "Multi-Protocol
Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters"
registry. Code points in the range of 0-250 will be assigned by
Standards Action. The range of 251-254 are reserved for experimental
use and will not be assigned. The initial entries into the registry
will be:
Value Meaning Reference
---------- ---------------- ------------
0 Unknown Section 3.4.1.2 of RFC8029
1 Static Section 3.4.1.2 of RFC8029
2 BGP Section 3.4.1.2 of RFC8029
3 LDP Section 3.4.1.2 of RFC8029
4 RSVP-TE Section 3.4.1.2 of RFC8029
5 OSPF Section 6 of this document
6 ISIS Section 6 of this document
7-250 Unassigned
251-254 Experimental use This document
255 Reserved This document
9.5. Return Code
IANA is requested to assign a new Return Code from the "Multi-
Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping
Parameters" in the 0-191 (Standards Action) range from the "Return
Codes" Sub-registry.
Kumar, et al. Expires April 20, 2018 [Page 19]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
Value Meaning Reference
---------- ----------------- ------------
TBD1 Mapping for this FEC is not associated Section 7.4 of
with the incoming interface this document
10. Security Considerations
This document defines additional MPLS LSP Ping Sub-TLVs and follows
the mechanisms defined in [RFC8029]. All the security considerations
defined in [RFC8029] will be applicable for this document, and in
addition, they do not impose any additional security challenges to be
considered.
11. Acknowledgement
The authors would like to thank Stefano Previdi, Les Ginsberg, Balaji
Rajagopalan, Harish Sitaraman, Curtis Villamizar, Pranjal Dutta,
Lizhong Jin, Tom Petch, Victor Ji and Mustapha Aissaoui, Tony
Przygienda, Alexander Vainshtein and Deborah Brungard for their
review and comments.
The authors wold like to thank Loa Andersson for his comments and
recommendation to merge drafts.
12. Contributors
The following are key contributors to this document:
Hannes Gredler, RtBrick, Inc.
Tarek Saad, Cisco Systems, Inc.
Siva Sivabalan, Cisco Systems, Inc.
Balaji Rajagopalan, Juniper Networks
Faisal Iqbal, Cisco Systems, Inc.
13. References
13.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
Kumar, et al. Expires April 20, 2018 [Page 20]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
[RFC3443] Agarwal, P. and B. Akyol, "Time To Live (TTL) Processing
in Multi-Protocol Label Switching (MPLS) Networks",
RFC 3443, DOI 10.17487/RFC3443, January 2003,
<https://www.rfc-editor.org/info/rfc3443>.
[RFC4203] Kompella, K., Ed. and Y. Rekhter, Ed., "OSPF Extensions in
Support of Generalized Multi-Protocol Label Switching
(GMPLS)", RFC 4203, DOI 10.17487/RFC4203, October 2005,
<https://www.rfc-editor.org/info/rfc4203>.
[RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions
in Support of Generalized Multi-Protocol Label Switching
(GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008,
<https://www.rfc-editor.org/info/rfc5307>.
[RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N.,
Aldrin, S., and M. Chen, "Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures", RFC 8029,
DOI 10.17487/RFC8029, March 2017,
<https://www.rfc-editor.org/info/rfc8029>.
13.2. Informative References
[I-D.ietf-isis-segment-routing-extensions]
Previdi, S., Filsfils, C., Bashandy, A., Gredler, H.,
Litkowski, S., Decraene, B., and j. jefftant@gmail.com,
"IS-IS Extensions for Segment Routing", draft-ietf-isis-
segment-routing-extensions-13 (work in progress), June
2017.
[I-D.ietf-ospf-ospfv3-segment-routing-extensions]
Psenak, P., Previdi, S., Filsfils, C., Gredler, H.,
Shakir, R., Henderickx, W., and J. Tantsura, "OSPFv3
Extensions for Segment Routing", draft-ietf-ospf-ospfv3-
segment-routing-extensions-10 (work in progress),
September 2017.
[I-D.ietf-ospf-segment-routing-extensions]
Psenak, P., Previdi, S., Filsfils, C., Gredler, H.,
Shakir, R., Henderickx, W., and J. Tantsura, "OSPF
Extensions for Segment Routing", draft-ietf-ospf-segment-
routing-extensions-19 (work in progress), August 2017.
[I-D.ietf-spring-segment-routing]
Filsfils, C., Previdi, S., Decraene, B., Litkowski, S.,
and R. Shakir, "Segment Routing Architecture", draft-ietf-
spring-segment-routing-12 (work in progress), June 2017.
Kumar, et al. Expires April 20, 2018 [Page 21]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
[I-D.ietf-spring-segment-routing-ldp-interop]
Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., and
S. Litkowski, "Segment Routing interworking with LDP",
draft-ietf-spring-segment-routing-ldp-interop-09 (work in
progress), September 2017.
[I-D.ietf-spring-segment-routing-mpls]
Filsfils, C., Previdi, S., Bashandy, A., Decraene, B.,
Litkowski, S., and R. Shakir, "Segment Routing with MPLS
data plane", draft-ietf-spring-segment-routing-mpls-10
(work in progress), June 2017.
[IANA-MPLS-LSP-PING]
IANA, "Multi-Protocol Label Switching (MPLS) Label
Switched Paths (LSPs) Ping Parameters",
<http://www.iana.org/assignments/mpls-lsp-ping-parameters/
mpls-lsp-ping-parameters.xhtml>.
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5,
RFC 792, DOI 10.17487/RFC0792, September 1981,
<https://www.rfc-editor.org/info/rfc792>.
Authors' Addresses
Nagendra Kumar (editor)
Cisco Systems, Inc.
7200-12 Kit Creek Road
Research Triangle Park, NC 27709-4987
US
Email: naikumar@cisco.com
Carlos Pignataro (editor)
Cisco Systems, Inc.
7200-11 Kit Creek Road
Research Triangle Park, NC 27709-4987
US
Email: cpignata@cisco.com
George Swallow
Southend Technical Center
Email: swallow.ietf@gmail.com
Kumar, et al. Expires April 20, 2018 [Page 22]
Internet-Draft LSP Ping/Trace for SR on MPLS October 2017
Nobo Akiya
Big Switch Networks
Email: nobo.akiya.dev@gmail.com
Sriganesh Kini
Individual
Email: sriganeshkini@gmail.com
Mach(Guoyi) Chen
Huawei
Email: mach.chen@huawei.com
Kumar, et al. Expires April 20, 2018 [Page 23]