draft-ietf-6man-spring-srv6-oam-05.txt | draft-ietf-6man-spring-srv6-oam-06.txt | |||
---|---|---|---|---|
6man Z. Ali | 6man Z. Ali | |||
Internet-Draft C. Filsfils | Internet-Draft C. Filsfils | |||
Intended status: Standards Track Cisco Systems | Intended status: Standards Track Cisco Systems | |||
Expires: December 14, 2020 S. Matsushima | Expires: January 14, 2021 S. Matsushima | |||
Softbank | Softbank | |||
D. Voyer | D. Voyer | |||
Bell Canada | Bell Canada | |||
M. Chen | M. Chen | |||
Huawei | Huawei | |||
June 12, 2020 | July 13, 2020 | |||
Operations, Administration, and Maintenance (OAM) in Segment Routing | Operations, Administration, and Maintenance (OAM) in Segment Routing | |||
Networks with IPv6 Data plane (SRv6) | Networks with IPv6 Data plane (SRv6) | |||
draft-ietf-6man-spring-srv6-oam-05 | draft-ietf-6man-spring-srv6-oam-06 | |||
Abstract | Abstract | |||
This document describes how the existing IPv6 OAM mechanisms can be | This document describes how the existing IPv6 OAM mechanisms can be | |||
used in an SRv6 network. The document also introduces enhancements | used in an SRv6 network. The document also introduces enhancements | |||
for controller-based OAM mechanisms for SRv6 networks. | for OAM mechanisms for SRv6 networks. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on December 14, 2020. | This Internet-Draft will expire on January 14, 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 18 ¶ | skipping to change at page 2, line 18 ¶ | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.3. Terminology and Reference Topology . . . . . . . . . . . 3 | 1.3. Terminology and Reference Topology . . . . . . . . . . . 3 | |||
2. OAM Mechanisms . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. OAM Mechanisms . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.1. O-flag in Segment Routing Header . . . . . . . . . . . . 5 | 2.1. O-flag in Segment Routing Header . . . . . . . . . . . . 5 | |||
2.1.1. O-flag Processing . . . . . . . . . . . . . . . . . . 6 | 2.1.1. O-flag Processing . . . . . . . . . . . . . . . . . . 5 | |||
2.2. OAM Operations . . . . . . . . . . . . . . . . . . . . . 7 | ||||
3. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.1. Ping in SRv6 Networks . . . . . . . . . . . . . . . . . . 7 | 3.1. Ping in SRv6 Networks . . . . . . . . . . . . . . . . . . 8 | |||
3.1.1. Classic Ping . . . . . . . . . . . . . . . . . . . . 7 | 3.1.1. Classic Ping . . . . . . . . . . . . . . . . . . . . 8 | |||
3.1.2. Pinging a SID . . . . . . . . . . . . . . . . . . . . 9 | 3.1.2. Pinging a SID . . . . . . . . . . . . . . . . . . . . 9 | |||
3.2. Traceroute . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.2. Traceroute . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.2.1. Classic Traceroute . . . . . . . . . . . . . . . . . 10 | 3.2.1. Classic Traceroute . . . . . . . . . . . . . . . . . 10 | |||
3.2.2. Traceroute to a SID . . . . . . . . . . . . . . . . . 11 | 3.2.2. Traceroute to a SID . . . . . . . . . . . . . . . . . 12 | |||
3.3. A Controller-Based Hybrid OAM Using O-flag . . . . . . . 13 | 3.3. A Hybrid OAM Using O-flag . . . . . . . . . . . . . . . . 13 | |||
3.4. Monitoring of SRv6 Paths . . . . . . . . . . . . . . . . 15 | 3.4. Monitoring of SRv6 Paths . . . . . . . . . . . . . . . . 16 | |||
4. Implementation Status . . . . . . . . . . . . . . . . . . . . 16 | 4. Implementation Status . . . . . . . . . . . . . . . . . . . . 17 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
6.1. Segment Routing Header Flags . . . . . . . . . . . . . . 17 | 6.1. Segment Routing Header Flags . . . . . . . . . . . . . . 17 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 | |||
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 17 | 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 18 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 19 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 18 | 9.2. Informative References . . . . . . . . . . . . . . . . . 19 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
1. Introduction | 1. Introduction | |||
As Segment Routing with IPv6 data plane (SRv6) simply adds a new type | As Segment Routing with IPv6 data plane (SRv6) [RFC8402] simply adds | |||
of Routing Extension Header, existing IPv6 OAM mechanisms can be used | a new type of Routing Extension Header, existing IPv6 OAM mechanisms | |||
in an SRv6 network. This document describes how the existing IPv6 | can be used in an SRv6 network. This document describes how the | |||
mechanisms for ping and trace route can be used in an SRv6 network. | existing IPv6 mechanisms for ping and trace route can be used in an | |||
SRv6 network. | ||||
The document also introduces enhancements for controller-based OAM | The document also introduces enhancements for OAM mechanism for SRv6 | |||
mechanism for SRv6 networks. Specifically, the document describes an | networks. Specifically, the document describes an OAM mechanism for | |||
OAM mechanism for performing controllable and predictable flow | performing controllable and predictable flow sampling from segment | |||
sampling from segment endpoints using, e.g., IP Flow Information | endpoints using, e.g., IP Flow Information Export (IPFIX) protocol | |||
Export (IPFIX) protocol [RFC7011]. The document also outlines how | ||||
centralized OAM technique in [RFC8403] can be extended for SRv6 to | [RFC7011]. The document also outlines how centralized OAM technique | |||
perform a path continuity check between any nodes within an SRv6 | in [RFC8403] can be extended for SRv6 to perform a path continuity | |||
domain from a centralized monitoring system, with minimal or no | check between any nodes within an SRv6 domain from a centralized | |||
control plane intervene on the nodes. | monitoring system. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119], [RFC8174]. | document are to be interpreted as described in [RFC2119], [RFC8174]. | |||
1.2. Abbreviations | 1.2. Abbreviations | |||
The following abbreviations are used in this document: | The following abbreviations are used in this document: | |||
SID: Segment ID. | SID: Segment ID. | |||
SL: Segments Left. | SL: Segments Left. | |||
SR: Segment Routing. | SR: Segment Routing. | |||
SRH: Segment Routing Header. | SRH: Segment Routing Header [RFC8754]. | |||
SRv6: Segment Routing with IPv6 Data plane. | SRv6: Segment Routing with IPv6 Data plane. | |||
TC: Traffic Class. | TC: Traffic Class. | |||
ICMPv6: ICMPv6 Specification [RFC4443]. | ICMPv6: ICMPv6 Specification [RFC4443]. | |||
1.3. Terminology and Reference Topology | 1.3. Terminology and Reference Topology | |||
This document uses the terminology defined in [I-D.ietf- spring-srv6- | Throughout the document, the following terminology and simple | |||
network-programming]. The readers are expected to be familiar with | topology is used for illustration. | |||
the same. | ||||
Throughout the document, the following simple topology is used for | ||||
illustration. | ||||
+--------------------------| N100 |---------------------------------+ | +--------------------------| N100 |---------------------------------+ | |||
| | | | | | |||
| ====== link1====== link3------ link5====== link9------ ====== | | | ====== link1====== link3------ link5====== link9------ ====== | | |||
||N1||------||N2||------| N3 |------||N4||------| N5 |---||N7|| | ||N1||------||N2||------| N3 |------||N4||------| N5 |---||N7|| | |||
|| ||------|| ||------| |------|| ||------| |---|| || | || ||------|| ||------| |------|| ||------| |---|| || | |||
====== link2====== link4------ link6======link10------ ====== | ====== link2====== link4------ link6======link10------ ====== | |||
| | | | | | | | | | |||
---+-- | ------ | --+--- | ---+-- | ------ | --+--- | |||
|CE 1| +-------| N6 |---------+ |CE 2| | |CE 1| +-------| N6 |---------+ |CE 2| | |||
------ link7 | | link8 ------ | ------ link7 | | link8 ------ | |||
------ | ------ | |||
Figure 1 Reference Topology | Figure 1 Reference Topology | |||
In the reference topology: | In the reference topology: | |||
Node k has a classic IPv6 loopback address 2001:DB8:A:k::/128. | Node k has a classic IPv6 loopback address 2001:DB8:A:k::/128. | |||
Nodes N1, N2, and N4 are SRv6 capable nodes. | Nodes N1, N2, N4 and N7 are SRv6 capable nodes. | |||
Nodes N3, N5 and N6 are IPv6 nodes that are not SRv6 capable. | Nodes N3, N5 and N6 are IPv6 nodes that are not SRv6 capable. | |||
Such nodes are referred as classic IPv6 nodes. | Such nodes are referred as classic IPv6 nodes. | |||
CE1 and CE2 are Customer Edge devices of any data plane capability | ||||
(e.g., IPv4, IPv6, L2, etc.). | ||||
A SID at node k with locator block 2001:DB8:B::/48 and function F | A SID at node k with locator block 2001:DB8:B::/48 and function F | |||
is represented by 2001:DB8:B:k:F::. | is represented by 2001:DB8:B:k:F::. | |||
Node N100 is a controller. | Node N100 is a controller. | |||
The IPv6 address of the nth Link between node X and Y at the X | The IPv6 address of the nth Link between node X and Y at the X | |||
side is represented as 2001:DB8:X:Y:Xn::, e.g., the IPv6 address | side is represented as 2001:DB8:X:Y:Xn::, e.g., the IPv6 address | |||
of link6 (the 2nd link) between N3 and N4 at N3 in Figure 1 is | of link6 (the 2nd link) between N3 and N4 at N3 in Figure 1 is | |||
2001:DB8:3:4:32::. Similarly, the IPv6 address of link5 (the 1st | 2001:DB8:3:4:32::. Similarly, the IPv6 address of link5 (the 1st | |||
link between N3 and N4) at node 3 is 2001:DB8:3:4:31::. | link between N3 and N4) at node 3 is 2001:DB8:3:4:31::. | |||
2001:DB8:B:k:Cij:: is explicitly allocated as the END.X function | 2001:DB8:B:k:Cij:: is explicitly allocated as the END.X SID (refer | |||
at node k towards neighbor node i via jth Link between node i and | [I-D.ietf-spring-srv6-network-programming]) at node k towards | |||
node k. e.g., 2001:DB8:B:2:C31:: represents END.X at N2 towards | neighbor node i via jth Link between node i and node k. e.g., | |||
N3 via link3 (the 1st link between N2 and N3). Similarly, | 2001:DB8:B:2:C31:: represents END.X at N2 towards N3 via link3 | |||
2001:DB8:B:4:C52:: represents the END.X at N4 towards N5 via | (the 1st link between N2 and N3). Similarly, 2001:DB8:B:4:C52:: | |||
link10. | represents the END.X at N4 towards N5 via link10. | |||
A SID list is represented as <S1, S2, S3> where S1 is the first | A SID list is represented as <S1, S2, S3> where S1 is the first | |||
SID to visit, S2 is the second SID to visit and S3 is the last SID | SID to visit, S2 is the second SID to visit and S3 is the last SID | |||
to visit along the SR path. | to visit along the SR path. | |||
(SA,DA) (S3, S2, S1; SL)(payload) represents an IPv6 packet with: | (SA,DA) (S3, S2, S1; SL)(payload) represents an IPv6 packet with: | |||
* IPv6 header with source address SA, destination addresses DA | * IPv6 header with source address SA, destination addresses DA | |||
and SRH as next-header | and SRH as next-header | |||
skipping to change at page 6, line 11 ¶ | skipping to change at page 5, line 43 ¶ | |||
The document does not define any other flag in the SRH.Flags and | The document does not define any other flag in the SRH.Flags and | |||
meaning and processing of any other bit in SRH.Flags is outside of | meaning and processing of any other bit in SRH.Flags is outside of | |||
the scope of this document. | the scope of this document. | |||
2.1.1. O-flag Processing | 2.1.1. O-flag Processing | |||
The O-flag in SRH is used as a marking-bit in the user packets to | The O-flag in SRH is used as a marking-bit in the user packets to | |||
trigger the telemetry data collection and export at the segment | trigger the telemetry data collection and export at the segment | |||
endpoints. | endpoints. | |||
Without the loss of generality, this document assumes IP Flow | This document does not specify the data elements that needs to be | |||
Information Export (IPFIX) protocol [RFC7011] is used for exporting | exported and the associated configurations. Similarly, this document | |||
the traffic flow information from the network devices to a controller | does not define any formats for exporting the data elements. | |||
for monitoring and analytics. The requested information elements are | Nonetheless, without the loss of generality, this document assumes IP | |||
configured by the management plane through data set templates (e.g., | Flow Information Export (IPFIX) protocol [RFC7011] is used for | |||
as in IPFIX [RFC7012]). | exporting the traffic flow information from the network devices to a | |||
controller for monitoring and analytics. Similarly, without the loss | ||||
of generality, this document assumes requested information elements | ||||
are configured by the management plane through data set templates | ||||
(e.g., as in IPFIX [RFC7012]). | ||||
Implementation of the O-flag is OPTIONAL. If a node does not support | Implementation of the O-flag is OPTIONAL. If a node does not support | |||
the O-flag, then upon reception it simply ignores it. If a node | the O-flag, then upon reception it simply ignores it. If a node | |||
supports the O-flag, it can optionally advertise its potential via | supports the O-flag, it can optionally advertise its potential via | |||
control plan protocol(s). | control plan protocol(s). | |||
When N receives a packet whose IPv6 DA is S and S is a local SID, the | When N receives a packet whose IPv6 DA is S and S is a local SID, the | |||
line S01 of the pseudo-code associated with the SID S, as defined in | line S01 of the pseudo-code associated with the SID S, as defined in | |||
section 4.3.1.1 of [RFC8754], is modified as follows for the O-flag | section 4.3.1.1 of [RFC8754], is modified as follows for the O-flag | |||
processing. | processing. | |||
skipping to change at page 7, line 17 ¶ | skipping to change at page 7, line 6 ¶ | |||
advertised by the egress node. | advertised by the egress node. | |||
The processing node SHOULD rate-limit the number of packets punted to | The processing node SHOULD rate-limit the number of packets punted to | |||
the OAM process to avoid hitting any performance impact. | the OAM process to avoid hitting any performance impact. | |||
The OAM process MUST NOT process the copy of the packet or respond to | The OAM process MUST NOT process the copy of the packet or respond to | |||
any upper-layer header (like ICMP, UDP, etc.) payload to prevent | any upper-layer header (like ICMP, UDP, etc.) payload to prevent | |||
multiple evaluations of the datagram. | multiple evaluations of the datagram. | |||
Specification of the OAM process or the external controller | Specification of the OAM process or the external controller | |||
operations are beyond the scope of this document. section 3 | operations are beyond the scope of this document. How to correlate | |||
illustrates use of the SRH.Flags.O-flag for implementing a | the data collected from different nodes at an external controller is | |||
controller-based hybrid OAM mechanism, where the "hybrid" | also outside the scope of the document. Section 3 illustrates use of | |||
classification is based on RFC7799 [RFC7799]. The illustration is | the SRH.Flags.O-flag for implementing a hybrid OAM mechanism, where | |||
different than the In-situ OAM defined in [I.D-draft-ietf-ippm-ioam- | the "hybrid" classification is based on RFC7799 [RFC7799]. | |||
data]. This is because In-situ OAM records operational and telemetry | ||||
information in the packet as the packet traverses a path between two | 2.2. OAM Operations | |||
points in the network [I.D-draft-ietf- ippm-ioam-data]. The | ||||
controller-based OAM mechanism using O-flag illustration in section 3 | IPv6 OAM operations can be performed for any SRv6 SID whose behavior | |||
does not require the recording of OAM data in the packet. | allows Upper Layer Header processing for an applicable OAM payload | |||
(e.g., ICMP, UDP). | ||||
Ping to a SID is used for SID connectivity checks and to validate the | ||||
availability of a SID. Traceroute to a SID is used for hop-by-hop | ||||
fault localization as well as path tracing to a SID. Section 3 | ||||
illustrates the ICMPv6 based ping and the UDP based traceroute | ||||
mechanisms for ping and traceroute to an SRv6 SID. Although this | ||||
document only illustrates ICMP ping and UDP-based traceroute to an | ||||
SRv6 SID, the procedures are equally applicable to other IPv6 OAM | ||||
probing to an SRv6 SID (e.g., Bidirectional Forwarding Detection | ||||
(BFD) [RFC5880], Seamless BFD (SBFD) [RFC7880], Two-Way Active | ||||
Measurement Protocol (TWAMP) [RFC5357], Simple Two-Way Active | ||||
Measurement Protocol (STAMP) [RFC8762], etc.). Specifically, as long | ||||
as local configuration allows the Upper-layer Header processing of | ||||
the applicable OAM payload for SRv6 SIDs, the existing IPv6 OAM | ||||
techniques can be used to target a probe to a (remote) SID. | ||||
IPv6 OAM operations can be performed with the target SID in the IPv6 | ||||
destination address without SRH or with SRH where the target SID is | ||||
the last segment. In general, OAM operations to a target SID may not | ||||
exercise all of its processing depending on its behavior definition. | ||||
For example, ping to an END.X SID (refer [I-D.ietf-spring-srv6- | ||||
network-programming]) at the target node only validates availability | ||||
of the SID and does not validate switching to the correct outgoing | ||||
interface. To exercise the behavior of a target SID, the OAM | ||||
operation SHOULD construct the probe in a manner similar to a data | ||||
packet that exercises the SID behavior, i.e. to include that SID as a | ||||
transit SID in either an SRH or IPv6 DA of an outer IPv6 header or as | ||||
appropriate based on the definition of the SID behavior. | ||||
3. Illustrations | 3. Illustrations | |||
This section shows how some of the existing IPv6 OAM mechanisms can | This section shows how some of the existing IPv6 OAM mechanisms can | |||
be used in an SRv6 network. It also illustrates an OAM mechanism for | be used in an SRv6 network. It also illustrates an OAM mechanism for | |||
performing controllable and predictable flow sampling from segment | performing controllable and predictable flow sampling from segment | |||
endpoints. How centralized OAM technique in [RFC8403] can be | endpoints. How centralized OAM technique in [RFC8403] can be | |||
extended for SRv6 is also described in this Section. | extended for SRv6 is also described in this Section. | |||
3.1. Ping in SRv6 Networks | 3.1. Ping in SRv6 Networks | |||
The following subsections outline some use cases of the ICMP ping in | The following subsections outline some use cases of the ICMP ping in | |||
the SRv6 networks. | the SRv6 networks. | |||
3.1.1. Classic Ping | 3.1.1. Classic Ping | |||
The existing mechanism to query liveliness of a remote IP address, | The existing mechanism to perform the connectivity checks, along the | |||
along the shortest path, continues to work without any modification. | shortest path, continues to work without any modification. The | |||
The initiator may be an SRv6 node or a classic IPv6 node. Similarly, | initiator may be an SRv6 node or a classic IPv6 node. Similarly, the | |||
the egress or transit may be an SRv6 capable node or a classic IPv6 | egress or transit may be an SRv6 capable node or a classic IPv6 node. | |||
node. | ||||
If an SRv6 capable ingress node wants to ping an IPv6 address via an | If an SRv6 capable ingress node wants to ping an IPv6 address via an | |||
arbitrary segment list <S1, S2, S3>, it needs to initiate ICMPv6 ping | arbitrary segment list <S1, S2, S3>, it needs to initiate ICMPv6 ping | |||
with an SR header containing the SID list <S1, S2, S3>. This is | with an SR header containing the SID list <S1, S2, S3>. This is | |||
illustrated using the topology in Figure 1. Assume all the links | illustrated using the topology in Figure 1. Assume all the links | |||
have IGP metric 10 except both links between node2 and node3, which | have IGP metric 10 except both links between node2 and node3, which | |||
have IGP metric set to 100. User issues a ping from node N1 to a | have IGP metric set to 100. User issues a ping from node N1 to a | |||
loopback of node 5, via segment list <2001:DB8:B:2:C31::, | loopback of node 5, via segment list <2001:DB8:B:2:C31::, | |||
2001:DB8:B:4:C52::>. | 2001:DB8:B:4:C52::>. The SID behavior used in the example is End.X | |||
SID (refer [I-D.ietf-spring-srv6-network-programming]) but the | ||||
procedure is equally applicable to any other (transit) SID type. | ||||
Figure 2 contains sample output for a ping request initiated at node | Figure 2 contains sample output for a ping request initiated at node | |||
N1 to the loopback address of node N5 via a segment list | N1 to the loopback address of node N5 via a segment list | |||
<2001:DB8:B:2:C31::, 2001:DB8:B:4:C52::>. | <2001:DB8:B:2:C31::, 2001:DB8:B:4:C52::>. | |||
> ping 2001:DB8:A:5:: via segment-list 2001:DB8:B:2:C31::, | > ping 2001:DB8:A:5:: via segment-list 2001:DB8:B:2:C31::, | |||
2001:DB8:B:4:C52:: | 2001:DB8:B:4:C52:: | |||
Sending 5, 100-byte ICMP Echos to B5::, timeout is 2 seconds: | Sending 5, 100-byte ICMP Echos to B5::, timeout is 2 seconds: | |||
!!!!! | !!!!! | |||
skipping to change at page 8, line 32 ¶ | skipping to change at page 9, line 5 ¶ | |||
All transit nodes process the echo request message like any other | All transit nodes process the echo request message like any other | |||
data packet carrying SR header and hence do not require any change. | data packet carrying SR header and hence do not require any change. | |||
Similarly, the egress node (IPv6 classic or SRv6 capable) does not | Similarly, the egress node (IPv6 classic or SRv6 capable) does not | |||
require any change to process the ICMPv6 echo request. For example, | require any change to process the ICMPv6 echo request. For example, | |||
in the ping example of Figure 2: | in the ping example of Figure 2: | |||
o Node N1 initiates an ICMPv6 ping packet with SRH as follows | o Node N1 initiates an ICMPv6 ping packet with SRH as follows | |||
(2001:DB8:A:1::, 2001:DB8:B:2:C31::) (2001:DB8:A:5::, | (2001:DB8:A:1::, 2001:DB8:B:2:C31::) (2001:DB8:A:5::, | |||
2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::, SL=2, NH = ICMPv6)(ICMPv6 | 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::, SL=2, NH = ICMPv6)(ICMPv6 | |||
Echo Request). If 2001:DB8:B:4:C52:: is a PSP SID, the OAM probes | Echo Request). | |||
encodes the PSP SID in the packet (just mimicking data packets). | ||||
No special consideration is needed to handle PSP SIDs. | ||||
o Node N2, which is an SRv6 capable node, performs the standard SRH | o Node N2, which is an SRv6 capable node, performs the standard SRH | |||
processing. Specifically, it executes the END.X function | processing. Specifically, it executes the END.X behavior | |||
(2001:DB8:B:2:C31::) and forwards the packet on link3 to N3. | (2001:DB8:B:2:C31::) and forwards the packet on link3 to N3. | |||
o Node N3, which is a classic IPv6 node, performs the standard IPv6 | o Node N3, which is a classic IPv6 node, performs the standard IPv6 | |||
processing. Specifically, it forwards the echo request based on | processing. Specifically, it forwards the echo request based on | |||
the DA 2001:DB8:B:4:C52:: in the IPv6 header. | the DA 2001:DB8:B:4:C52:: in the IPv6 header. | |||
o Node N4, which is an SRv6 capable node, performs the standard SRH | o Node N4, which is an SRv6 capable node, performs the standard SRH | |||
processing. Specifically, it observes the END.X function | processing. Specifically, it observes the END.X behavior | |||
(2001:DB8:B:4:C52::) and forwards the packet on link10 towards N5. | (2001:DB8:B:4:C52::) and forwards the packet on link10 towards N5. | |||
If 2001:DB8:B:4:C52:: is a PSP SID, The penultimate node (Node N4) | If 2001:DB8:B:4:C52:: is a PSP SID, The penultimate node (Node N4) | |||
does not, should not and cannot differentiate between the data | does not, should not and cannot differentiate between the data | |||
packets and OAM probes. Specifically, if 2001:DB8:B:4:C52:: is a | packets and OAM probes. Specifically, if 2001:DB8:B:4:C52:: is a | |||
PSP SID, node N4 executes the SID like any other data packet with | PSP SID, node N4 executes the SID like any other data packet with | |||
DA = 2001:DB8:B:4:C52:: and removes the SRH. | DA = 2001:DB8:B:4:C52:: and removes the SRH. | |||
o The echo request packet at N5 arrives as an IPv6 packet with or | o The echo request packet at N5 arrives as an IPv6 packet with or | |||
without an SRH. If N5 receives the packet with SRH, it skips SRH | without an SRH. If N5 receives the packet with SRH, it skips SRH | |||
processing (SL=0). In either case, Node N5 performs the standard | processing (SL=0). In either case, Node N5 performs the standard | |||
IPv6/ ICMPv6 processing on the echo request. | IPv6/ ICMPv6 processing on the echo request. | |||
3.1.2. Pinging a SID | 3.1.2. Pinging a SID | |||
The classic ping described in the previous section applies equally to | The classic ping described in the previous section applies equally to | |||
ping a remote SID function, as explained using an example in the | perform SID connectivity checks and to validate the availability of a | |||
following. | remote SID. This is explained using an example in the following. | |||
The example uses ping to an END SID (refer [I-D.ietf-spring-srv6- | ||||
network-programming]) but the procedure is equally applicable to ping | ||||
any other SID behaviors. | ||||
Consider the example where the user wants to ping a remote SID | Consider the example where the user wants to ping a remote SID | |||
function 2001:DB8:B:4::, via 2001:DB8:B:2:C31::, from node N1. The | 2001:DB8:B:4::, via 2001:DB8:B:2:C31::, from node N1. The ICMPv6 | |||
ICMPv6 echo request is processed at the individual nodes along the | echo request is processed at the individual nodes along the path as | |||
path as follows: | follows: | |||
o Node N1 initiates an ICMPv6 ping packet with SRH as follows | o Node N1 initiates an ICMPv6 ping packet with SRH as follows | |||
(2001:DB8:A:1::, 2001:DB8:B:2:C31::) (2001:DB8:B:4::, | (2001:DB8:A:1::, 2001:DB8:B:2:C31::) (2001:DB8:B:4::, | |||
2001:DB8:B:2:C31::; SL=1; NH=ICMPv6)(ICMPv6 Echo Request). If | 2001:DB8:B:2:C31::; SL=1; NH=ICMPv6)(ICMPv6 Echo Request). | |||
2001:DB8:B:2:C31:: is a PSP SID, the OAM probes encodes the PSP | ||||
SID in the packet (just mimicking data packets). No special | ||||
consideration is needed to handle PSP SIDs. | ||||
o Node N2, which is an SRv6 capable node, performs the standard SRH | o Node N2, which is an SRv6 capable node, performs the standard SRH | |||
processing. Specifically, it executes the END.X function | processing. Specifically, it executes the END.X behavior | |||
(2001:DB8:B:2:C31::) on the echo request packet. If | (2001:DB8:B:2:C31::) on the echo request packet. If | |||
2001:DB8:B:2:C31:: is a PSP SID, node N4 executes the SID like any | 2001:DB8:B:2:C31:: is a PSP SID, node N4 executes the SID like any | |||
other data packet with DA = 2001:DB8:B:2:C31:: and removes the | other data packet with DA = 2001:DB8:B:2:C31:: and removes the | |||
SRH. | SRH. | |||
o Node N3, which is a classic IPv6 node, performs the standard IPv6 | o Node N3, which is a classic IPv6 node, performs the standard IPv6 | |||
processing. Specifically, it forwards the echo request based on | processing. Specifically, it forwards the echo request based on | |||
DA = 2001:DB8:B:4:: in the IPv6 header. | DA = 2001:DB8:B:4:: in the IPv6 header. | |||
o When node N4 receives the packet, it processes the 2001:DB8:B:4:: | o When node N4 receives the packet, it processes the target SID | |||
SID, as described in the pseudocode in [I-D.ietf-spring-srv6- | (2001:DB8:B:4::). | |||
network-programming]. | ||||
o If the 2001:DB8:B:4:: SID is not locally programmed, the packet is | o If the target SID (2001:DB8:B:4::) is not locally instantiated, | |||
discarded | the packet is discarded | |||
o If the target SID (2001:DB8:B:4::) is locally programmed, the node | o If the target SID (2001:DB8:B:4::) is locally instantiated, the | |||
processes the upper layer header. As part of the upper layer | node processes the upper layer header. As part of the upper layer | |||
header processing node N4 respond to the ICMPv6 echo request | header processing node N4 respond to the ICMPv6 echo request | |||
message. | message. | |||
3.2. Traceroute | 3.2. Traceroute | |||
There is no hardware or software change required for traceroute | There is no hardware or software change required for traceroute | |||
operation at the classic IPv6 nodes in an SRv6 network. That | operation at the classic IPv6 nodes in an SRv6 network. That | |||
includes the classic IPv6 node with ingress, egress or transit roles. | includes the classic IPv6 node with ingress, egress or transit roles. | |||
Furthermore, no protocol changes are required to the standard | Furthermore, no protocol changes are required to the standard | |||
traceroute operations. In other words, existing traceroute | traceroute operations. In other words, existing traceroute | |||
skipping to change at page 10, line 31 ¶ | skipping to change at page 10, line 48 ¶ | |||
initiator may be an SRv6 node or a classic IPv6 node. Similarly, the | initiator may be an SRv6 node or a classic IPv6 node. Similarly, the | |||
egress or transit may be an SRv6 node or a classic IPv6 node. | egress or transit may be an SRv6 node or a classic IPv6 node. | |||
If an SRv6 capable ingress node wants to traceroute to IPv6 address | If an SRv6 capable ingress node wants to traceroute to IPv6 address | |||
via an arbitrary segment list <S1, S2, S3>, it needs to initiate | via an arbitrary segment list <S1, S2, S3>, it needs to initiate | |||
traceroute probe with an SR header containing the SID list <S1, S2, | traceroute probe with an SR header containing the SID list <S1, S2, | |||
S3>. That is illustrated using the topology in Figure 1. Assume all | S3>. That is illustrated using the topology in Figure 1. Assume all | |||
the links have IGP metric 10 except both links between node2 and | the links have IGP metric 10 except both links between node2 and | |||
node3, which have IGP metric set to 100. User issues a traceroute | node3, which have IGP metric set to 100. User issues a traceroute | |||
from node N1 to a loopback of node 5, via segment list | from node N1 to a loopback of node 5, via segment list | |||
<2001:DB8:B:2:C31::, 2001:DB8:B:4:C52::>. Figure 3 contains sample | <2001:DB8:B:2:C31::, 2001:DB8:B:4:C52::>. The SID behavior used in | |||
output for the traceroute request. | the example is End.X SID (refer [I-D.ietf-spring-srv6-network- | |||
programming]) but the procedure is equally applicable to any other | ||||
(transit) SID type. Figure 3 contains sample output for the | ||||
traceroute request. | ||||
> traceroute 2001:DB8:A:5:: via segment-list 2001:DB8:B:2:C31::, | > traceroute 2001:DB8:A:5:: via segment-list 2001:DB8:B:2:C31::, | |||
2001:DB8:B:4:C52:: | 2001:DB8:B:4:C52:: | |||
Tracing the route to 2001:DB8:A:5:: | Tracing the route to 2001:DB8:A:5:: | |||
1 2001:DB8:1:2:21:: 0.512 msec 0.425 msec 0.374 msec | 1 2001:DB8:1:2:21:: 0.512 msec 0.425 msec 0.374 msec | |||
DA: 2001:DB8:B:2:C31::, | DA: 2001:DB8:B:2:C31::, | |||
SRH:(2001:DB8:A:5::, 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::, SL=2) | SRH:(2001:DB8:A:5::, 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::, SL=2) | |||
2 2001:DB8:2:3:31:: 0.721 msec 0.810 msec 0.795 msec | 2 2001:DB8:2:3:31:: 0.721 msec 0.810 msec 0.795 msec | |||
DA: 2001:DB8:B:4:C52::, | DA: 2001:DB8:B:4:C52::, | |||
skipping to change at page 11, line 34 ¶ | skipping to change at page 12, line 9 ¶ | |||
on which probe was received as the source address in the ICMPv6 | on which probe was received as the source address in the ICMPv6 | |||
response. ICMP extensions defined in [RFC5837] can be used to also | response. ICMP extensions defined in [RFC5837] can be used to also | |||
display information about the IP interface through which the datagram | display information about the IP interface through which the datagram | |||
would have been forwarded had it been forwardable, and the IP next | would have been forwarded had it been forwardable, and the IP next | |||
hop to which the datagram would have been forwarded, the IP interface | hop to which the datagram would have been forwarded, the IP interface | |||
upon which a datagram arrived, the sub-IP component of an IP | upon which a datagram arrived, the sub-IP component of an IP | |||
interface upon which a datagram arrived. | interface upon which a datagram arrived. | |||
The information about the IP address of the incoming interface on | The information about the IP address of the incoming interface on | |||
which the traceroute probe was received by the reporting node is very | which the traceroute probe was received by the reporting node is very | |||
useful. This information can also be used to verify if SID functions | useful. This information can also be used to verify if SIDs | |||
2001:DB8:B:2:C31:: and 2001:DB8:B:4:C52:: are executed correctly by | 2001:DB8:B:2:C31:: and 2001:DB8:B:4:C52:: are executed correctly by | |||
N2 and N4, respectively. Specifically, the information displayed for | N2 and N4, respectively. Specifically, the information displayed for | |||
hop2 contains the incoming interface address 2001:DB8:2:3:31:: at N3. | hop2 contains the incoming interface address 2001:DB8:2:3:31:: at N3. | |||
This matches with the expected interface bound to END.X function | This matches with the expected interface bound to END.X behavior | |||
2001:DB8:B:2:C31:: (link3). Similarly, the information displayed for | 2001:DB8:B:2:C31:: (link3). Similarly, the information displayed for | |||
hop5 contains the incoming interface address 2001:DB8:4:5::52:: at | hop5 contains the incoming interface address 2001:DB8:4:5::52:: at | |||
N5. This matches with the expected interface bound to the END.X | N5. This matches with the expected interface bound to the END.X | |||
function 2001:DB8:B:4:C52:: (link10). | behavior 2001:DB8:B:4:C52:: (link10). | |||
3.2.2. Traceroute to a SID | 3.2.2. Traceroute to a SID | |||
The classic traceroute described in the previous section applies | The classic traceroute described in the previous section applies | |||
equally to traceroute a remote SID function, as explained using an | equally to traceroute a remote SID behavior, as explained using an | |||
example in the following. | example in the following. The example uses traceroute to an END SID | |||
(refer [I-D.ietf-spring-srv6-network-programming]) but the procedure | ||||
is equally applicable to tracerouting any other SID behaviors. | ||||
Please note that traceroute to a SID function is exemplified using | Please note that traceroute to a SID is exemplified using UDP probes. | |||
UDP probes. However, the procedure is equally applicable to other | However, the procedure is equally applicable to other implementations | |||
implementations of traceroute mechanism. | of traceroute mechanism. | |||
Consider the example where the user wants to traceroute a remote SID | Consider the example where the user wants to traceroute a remote SID | |||
function 2001:DB8:B:4::, via 2001:DB8:B:2:C31::, from node N1. The | 2001:DB8:B:4::, via 2001:DB8:B:2:C31::, from node N1. The traceroute | |||
traceroute probe is processed at the individual nodes along the path | probe is processed at the individual nodes along the path as follows: | |||
as follows: | ||||
o Node N1 initiates a traceroute probe packet with a monotonically | o Node N1 initiates a traceroute probe packet with a monotonically | |||
increasing value of hop count and SRH as follows (2001:DB8:A:1::, | increasing value of hop count and SRH as follows (2001:DB8:A:1::, | |||
2001:DB8:B:2:C31::) (2001:DB8:B:4::, 2001:DB8:B:2:C31::; SL=1; | 2001:DB8:B:2:C31::) (2001:DB8:B:4::, 2001:DB8:B:2:C31::; SL=1; | |||
NH=UDP)(Traceroute probe). If 2001:DB8:B:2:C31:: is a PSP SID, | NH=UDP)(Traceroute probe). | |||
the OAM probes encodes the PSP SID in the packet (just mimicking | ||||
data packets). No special consideration is needed to handle PSP | ||||
SIDs. | ||||
o When node N2 receives the packet with hop-count = 1, it processes | o When node N2 receives the packet with hop-count = 1, it processes | |||
the hop count expiry. Specifically, the node N2 responses with | the hop count expiry. Specifically, the node N2 responses with | |||
the ICMPv6 message (Type: "Time Exceeded", Code: "Time to Live | the ICMPv6 message (Type: "Time Exceeded", Code: "Time to Live | |||
exceeded in Transit"). | exceeded in Transit"). | |||
o When Node N2 receives the packet with hop-count > 1, it performs | o When Node N2 receives the packet with hop-count > 1, it performs | |||
the standard SRH processing. Specifically, it executes the END.X | the standard SRH processing. Specifically, it executes the END.X | |||
function (2001:DB8:B:2:C31::) on the traceroute probe. If | behavior (2001:DB8:B:2:C31::) on the traceroute probe. If | |||
2001:DB8:B:2:C31:: is a PSP SID, node N4 executes the SID like any | 2001:DB8:B:2:C31:: is a PSP SID, node N4 executes the SID like any | |||
other data packet with DA = 2001:DB8:B:2:C31:: and removes the | other data packet with DA = 2001:DB8:B:2:C31:: and removes the | |||
SRH. | SRH. | |||
o When node N3, which is a classic IPv6 node, receives the packet | o When node N3, which is a classic IPv6 node, receives the packet | |||
with hop-count = 1, it processes the hop count expiry. | with hop-count = 1, it processes the hop count expiry. | |||
Specifically, the node N3 responses with the ICMPv6 message (Type: | Specifically, the node N3 responses with the ICMPv6 message (Type: | |||
"Time Exceeded", Code: "Time to Live exceeded in Transit"). | "Time Exceeded", Code: "Time to Live exceeded in Transit"). | |||
o When node N3, which is a classic IPv6 node, receives the packet | o When node N3, which is a classic IPv6 node, receives the packet | |||
with hop-count > 1, it performs the standard IPv6 processing. | with hop-count > 1, it performs the standard IPv6 processing. | |||
Specifically, it forwards the traceroute probe based on DA | Specifically, it forwards the traceroute probe based on DA | |||
2001:DB8:B:4:: in the IPv6 header. | 2001:DB8:B:4:: in the IPv6 header. | |||
o When node N4 receives the packet with DA set to the local SID | o When node N4 receives the packet with DA set to the local SID | |||
2001:DB8:B:4::, it processes the END SID, as described in the | 2001:DB8:B:4::, it processes the END SID. | |||
pseudocode in [I-D.ietf-spring-srv6-network-programming]. | ||||
o If the 2001:DB8:B:4:: SID is not locally programmed, the packet is | o If the target SID (2001:DB8:B:4::) is not locally instantiated, | |||
discarded. | the packet is discarded. | |||
o If the target SID (2001:DB8:B:4::) is locally programmed, the node | o If the target SID (2001:DB8:B:4::) is locally instantiated, the | |||
processes the upper layer header. As part of the upper layer | node processes the upper layer header. As part of the upper layer | |||
header processing node N4 responses with the ICMPv6 message (Type: | header processing node N4 responses with the ICMPv6 message (Type: | |||
Destination unreachable, Code: Port Unreachable). | Destination unreachable, Code: Port Unreachable). | |||
Figure 4 displays a sample traceroute output for this example. | Figure 4 displays a sample traceroute output for this example. | |||
> traceroute 2001:DB8:B:4:C52:: via segment-list 2001:DB8:B:2:C31:: | > traceroute 2001:DB8:B:4:C52:: via segment-list 2001:DB8:B:2:C31:: | |||
Tracing the route to SID function 2001:DB8:B:4:C52:: | Tracing the route to SID 2001:DB8:B:4:C52:: | |||
1 2001:DB8:1:2:21:: 0.512 msec 0.425 msec 0.374 msec | 1 2001:DB8:1:2:21:: 0.512 msec 0.425 msec 0.374 msec | |||
DA: 2001:DB8:B:2:C31::, | DA: 2001:DB8:B:2:C31::, | |||
SRH:(2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; SL=1) | SRH:(2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; SL=1) | |||
2 2001:DB8:2:3:31:: 0.721 msec 0.810 msec 0.795 msec | 2 2001:DB8:2:3:31:: 0.721 msec 0.810 msec 0.795 msec | |||
DA: 2001:DB8:B:4:C52::, | DA: 2001:DB8:B:4:C52::, | |||
SRH:(2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; SL=0) | SRH:(2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; SL=0) | |||
3 2001:DB8:3:4:41:: 0.921 msec 0.816 msec 0.759 msec | 3 2001:DB8:3:4:41:: 0.921 msec 0.816 msec 0.759 msec | |||
DA: 2001:DB8:B:4:C52::, | DA: 2001:DB8:B:4:C52::, | |||
SRH:(2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; SL=0) | SRH:(2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; SL=0) | |||
Figure 4 A sample output for hop-by-hop traceroute to a SID | Figure 4 A sample output for hop-by-hop traceroute to a SID | |||
3.3. A Controller-Based Hybrid OAM Using O-flag | 3.3. A Hybrid OAM Using O-flag | |||
This section illustrates a hybrid OAM mechanism using the the | ||||
SRH.Flags.O-flag. Without loss of the generality, the illustration | ||||
assumes N100 is a centralized controller. | ||||
The illustration is different than the In-situ OAM defined in [I.D- | ||||
draft-ietf-ippm-ioam-data]. This is because In-situ OAM records | ||||
operational and telemetry information in the packet as the packet | ||||
traverses a path between two points in the network [I.D-draft-ietf- | ||||
ippm-ioam-data]. The illustration in section 3 does not require the | ||||
recording of OAM data in the packet. | ||||
The illustration does not assume any formats for exporting the data | ||||
elements or the data elements that needs to be exported. | ||||
Consider the example where the user wants to monitor sampled IPv4 VPN | Consider the example where the user wants to monitor sampled IPv4 VPN | |||
100 traffic going from CE1 to CE2 via a low latency SR policy P | 100 traffic going from CE1 to CE2 via a low latency SR policy P | |||
installed at Node N1. To exercise a low latency path, the SR Policy | installed at Node N1. To exercise a low latency path, the SR Policy | |||
P forces the packet via segments 2001:DB8:B:2:C31:: and | P forces the packet via segments 2001:DB8:B:2:C31:: and | |||
2001:DB8:B:4:C52::. The VPN SID at N7 associated with VPN100 is | 2001:DB8:B:4:C52::. The VPN SID at N7 associated with VPN100 is | |||
2001:DB8:B:7:DT100::. 2001:DB8:B:7:DT100:: is a USP SID. N1, N4, | 2001:DB8:B:7:DT100::. 2001:DB8:B:7:DT100:: is a USP SID. N1, N4, | |||
and N7 are capable of processing SRH.Flags.O-flag but N2 is not | and N7 are capable of processing SRH.Flags.O-flag but N2 is not | |||
capable of processing SRH.Flags.O-flag. N100 is the centralized | capable of processing SRH.Flags.O-flag. N100 is the centralized | |||
controller capable of processing and correlating the copy of the | controller capable of processing and correlating the copy of the | |||
skipping to change at page 14, line 13 ¶ | skipping to change at page 15, line 4 ¶ | |||
partial copy of the packet P1 to the controller N100. The OAM | partial copy of the packet P1 to the controller N100. The OAM | |||
process includes the recorded timestamp, additional OAM | process includes the recorded timestamp, additional OAM | |||
information like incoming and outgoing interface, etc. along with | information like incoming and outgoing interface, etc. along with | |||
any applicable metadata. Node N1 forwards the original packet | any applicable metadata. Node N1 forwards the original packet | |||
towards the next segment 2001:DB8:B:2:C31::. | towards the next segment 2001:DB8:B:2:C31::. | |||
o When node N2 receives the packet with SRH.Flags.O-flag set, it | o When node N2 receives the packet with SRH.Flags.O-flag set, it | |||
ignores the SRH.Flags.O-flag. This is because node N2 is not | ignores the SRH.Flags.O-flag. This is because node N2 is not | |||
capable of processing the O-flag. Node N2 performs the standard | capable of processing the O-flag. Node N2 performs the standard | |||
SRv6 SID and SRH processing. Specifically, it executes the END.X | SRv6 SID and SRH processing. Specifically, it executes the END.X | |||
function (2001:DB8:B:2:C31::) and forwards the packet P1 | (refer [I-D.ietf-spring-srv6-network-programming]) behavior | |||
(2001:DB8:A:1::, 2001:DB8:B:4:C52::) (2001:DB8:B:7:DT100::, | (2001:DB8:B:2:C31::) and forwards the packet P1 (2001:DB8:A:1::, | |||
2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; SL=1; O-flag=1; | 2001:DB8:B:4:C52::) (2001:DB8:B:7:DT100::, 2001:DB8:B:4:C52::, | |||
NH=IPv4)(IPv4 header)(payload) over link 3 towards Node N3. | 2001:DB8:B:2:C31::; SL=1; O-flag=1; NH=IPv4)(IPv4 header)(payload) | |||
over link 3 towards Node N3. | ||||
o When node N3, which is a classic IPv6 node, receives the packet P1 | o When node N3, which is a classic IPv6 node, receives the packet P1 | |||
, it performs the standard IPv6 processing. Specifically, it | , it performs the standard IPv6 processing. Specifically, it | |||
forwards the packet P1 based on DA 2001:DB8:B:4:C52:: in the IPv6 | forwards the packet P1 based on DA 2001:DB8:B:4:C52:: in the IPv6 | |||
header. | header. | |||
o When node N4 receives the packet P1 (2001:DB8:A:1::, | o When node N4 receives the packet P1 (2001:DB8:A:1::, | |||
2001:DB8:B:4:C52::) (2001:DB8:B:7:DT100::, 2001:DB8:B:4:C52::, | 2001:DB8:B:4:C52::) (2001:DB8:B:7:DT100::, 2001:DB8:B:4:C52::, | |||
2001:DB8:B:2:C31::; SL=1; O-flag=1; NH=IPv4)(IPv4 | 2001:DB8:B:2:C31::; SL=1; O-flag=1; NH=IPv4)(IPv4 | |||
header)(payload), it processes the SRH.Flags.O-flag. As part of | header)(payload), it processes the SRH.Flags.O-flag. As part of | |||
processing the O-flag, it sends a timestamped copy of the packet | processing the O-flag, it sends a timestamped copy of the packet | |||
to a local OAM process. The local OAM process sends a full or | to a local OAM process. The local OAM process sends a full or | |||
partial copy of the packet P1 to the controller N100. The OAM | partial copy of the packet P1 to the controller N100. The OAM | |||
process includes the recorded timestamp, additional OAM | process includes the recorded timestamp, additional OAM | |||
information like incoming and outgoing interface, etc. along with | information like incoming and outgoing interface, etc. along with | |||
any applicable metadata. Node N4 performs the standard SRv6 SID | any applicable metadata. Node N4 performs the standard SRv6 SID | |||
and SRH processing on the original packet P1. Specifically, it | and SRH processing on the original packet P1. Specifically, it | |||
executes the END.X function (2001:DB8:B:4:C52::) and forwards the | executes the END.X behavior (2001:DB8:B:4:C52::) and forwards the | |||
packet P1 (2001:DB8:A:1::, 2001:DB8:B:7:DT100::) | packet P1 (2001:DB8:A:1::, 2001:DB8:B:7:DT100::) | |||
(2001:DB8:B:7:DT100::, 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; | (2001:DB8:B:7:DT100::, 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; | |||
SL=0; O-flag=1; NH=IPv4)(IPv4 header)(payload) over link 10 | SL=0; O-flag=1; NH=IPv4)(IPv4 header)(payload) over link 10 | |||
towards Node N5. | towards Node N5. | |||
o When node N5, which is a classic IPv6 node, receives the packet | o When node N5, which is a classic IPv6 node, receives the packet | |||
P1, it performs the standard IPv6 processing. Specifically, it | P1, it performs the standard IPv6 processing. Specifically, it | |||
forwards the packet based on DA 2001:DB8:B:7:DT100:: in the IPv6 | forwards the packet based on DA 2001:DB8:B:7:DT100:: in the IPv6 | |||
header. | header. | |||
skipping to change at page 15, line 21 ¶ | skipping to change at page 16, line 14 ¶ | |||
o The controller N100 processes and correlates the copy of the | o The controller N100 processes and correlates the copy of the | |||
packets sent from nodes N1, N4 and N7 to find segment-by-segment | packets sent from nodes N1, N4 and N7 to find segment-by-segment | |||
delays and provide other hybrid OAM information related to packet | delays and provide other hybrid OAM information related to packet | |||
P1. | P1. | |||
o The process continues for any other sampled packets. | o The process continues for any other sampled packets. | |||
3.4. Monitoring of SRv6 Paths | 3.4. Monitoring of SRv6 Paths | |||
In the recent past, network operators are interested in performing | In the recent past, network operators demonstrated interest in | |||
network OAM functions in a centralized manner. [RFC8403] describes | performing network OAM functions in a centralized manner. [RFC8403] | |||
such a centralized OAM mechanism. Specifically, the document | describes such a centralized OAM mechanism. Specifically, the | |||
describes a procedure that can be used to perform path continuity | document describes a procedure that can be used to perform path | |||
check between any nodes within an SR domain from a centralized | continuity check between any nodes within an SR domain from a | |||
monitoring system, with minimal or no control plane intervene on the | centralized monitoring system. However, the document focuses on SR | |||
nodes. However, the document focuses on SR networks with MPLS data | networks with MPLS data plane. This document describes how the | |||
plane. This document describes how the concept can be used to | concept can be used to perform path monitoring in an SRv6 network | |||
perform path monitoring in an SRv6 network from the centralized | from a centralized controller. | |||
controller. | ||||
In the reference topology in Figure 1, N100 uses an IGP protocol like | In the reference topology in Figure 1, N100 uses an IGP protocol like | |||
OSPF or ISIS to get the topology view within the IGP domain. N100 | OSPF or ISIS to get the topology view within the IGP domain. N100 | |||
can also use BGP-LS to get the complete view of an inter-domain | can also use BGP-LS to get the complete view of an inter-domain | |||
topology. The controller leverages the visibility of the topology to | topology. The controller leverages the visibility of the topology to | |||
monitor the paths between the various endpoints without control plane | monitor the paths between the various endpoints. | |||
intervention required at the monitored nodes. | ||||
The controller N100 advertises an END SID 2001:DB8:B:100:1::. To | The controller N100 advertises an END (refer [I-D.ietf-spring-srv6- | |||
monitor any arbitrary SRv6 paths, the controller can create a | network-programming]) SID 2001:DB8:B:100:1::. To monitor any | |||
loopback probe that originates and terminates on Node N100. For | arbitrary SRv6 paths, the controller can create a loopback probe that | |||
example, in order to verify a segment list <2001:DB8:B:2:C31::, | originates and terminates on Node N100. To distinguish between a | |||
failure in the monitored path and loss of connectivity between the | ||||
controller and the network, Node N100 runs a suitable mechanism to | ||||
monitor its connectivity to the monitored network. | ||||
The loopback probes are exemplified using an example where controller | ||||
N100 needs to verify a segment list <2001:DB8:B:2:C31::, | ||||
2001:DB8:B:4:C52::>: | 2001:DB8:B:4:C52::>: | |||
o N100 generates an OAM packet (2001:DB8:A:100::, | o N100 generates an OAM packet (2001:DB8:A:100::, | |||
2001:DB8:B:2:C31::)(2001:DB8:B:100:1::, 2001:DB8:B:4:C52::, | 2001:DB8:B:2:C31::)(2001:DB8:B:100:1::, 2001:DB8:B:4:C52::, | |||
2001:DB8:B:2:C31::, SL=2)(OAM Payload). The controller routes the | 2001:DB8:B:2:C31::, SL=2)(OAM Payload). The controller routes the | |||
probe packet towards the first segment, which is | probe packet towards the first segment, which is | |||
2001:DB8:B:2:C31::. | 2001:DB8:B:2:C31::. | |||
o Node N2 executes the END.X function (2001:DB8:B:2:C31::) and | o Node N2 executes the END.X behavior (2001:DB8:B:2:C31::) and | |||
forwards the packet (2001:DB8:A:100::, | forwards the packet (2001:DB8:A:100::, | |||
2001:DB8:B:4:C52::)(2001:DB8:B:100:1::, 2001:DB8:B:4:C52::, | 2001:DB8:B:4:C52::)(2001:DB8:B:100:1::, 2001:DB8:B:4:C52::, | |||
2001:DB8:B:2:C31::, SL=1)(OAM Payload) on link3 to N3. | 2001:DB8:B:2:C31::, SL=1)(OAM Payload) on link3 to N3. | |||
o Node N3, which is a classic IPv6 node, performs the standard IPv6 | o Node N3, which is a classic IPv6 node, performs the standard IPv6 | |||
processing. Specifically, it forwards the packet based on the DA | processing. Specifically, it forwards the packet based on the DA | |||
2001:DB8:B:4:C52:: in the IPv6 header. | 2001:DB8:B:4:C52:: in the IPv6 header. | |||
o Node N4 executes the END.X function (2001:DB8:B:4:C52::) and | o Node N4 executes the END.X behavior (2001:DB8:B:4:C52::) and | |||
forwards the packet (2001:DB8:A:100::, | forwards the packet (2001:DB8:A:100::, | |||
2001:DB8:B:100:1::)(2001:DB8:B:100:1::, 2001:DB8:B:4:C52::, | 2001:DB8:B:100:1::)(2001:DB8:B:100:1::, 2001:DB8:B:4:C52::, | |||
2001:DB8:B:2:C31::, SL=0)(OAM Payload) on link10 to N5. | 2001:DB8:B:2:C31::, SL=0)(OAM Payload) on link10 to N5. | |||
o Node N5, which is a classic IPv6 node, performs the standard IPv6 | o Node N5, which is a classic IPv6 node, performs the standard IPv6 | |||
processing. Specifically, it forwards the packet based on the DA | processing. Specifically, it forwards the packet based on the DA | |||
2001:DB8:B:100:1:: in the IPv6 header. | 2001:DB8:B:100:1:: in the IPv6 header. | |||
o Node N100 executes the standard SRv6 END function. It | o Node N100 executes the standard SRv6 END behavior. It | |||
decapsulates the header and consume the probe for OAM processing. | decapsulates the header and consume the probe for OAM processing. | |||
The information in the OAM payload is used to detect any missing | The information in the OAM payload is used to detect any missing | |||
probes, round trip delay, etc. | probes, round trip delay, etc. | |||
The OAM payload type or the information carried in the OAM probe is a | The OAM payload type or the information carried in the OAM probe is a | |||
local implementation decision at the controller and is outside the | local implementation decision at the controller and is outside the | |||
scope of this document. | scope of this document. | |||
4. Implementation Status | 4. Implementation Status | |||
skipping to change at page 17, line 4 ¶ | skipping to change at page 17, line 43 ¶ | |||
5. Security Considerations | 5. Security Considerations | |||
This document does not define any new protocol extensions and relies | This document does not define any new protocol extensions and relies | |||
on existing procedures defined for ICMP. This document does not | on existing procedures defined for ICMP. This document does not | |||
impose any additional security challenges to be considered beyond | impose any additional security challenges to be considered beyond | |||
security considerations described in [RFC4884], [RFC4443], [RFC0792], | security considerations described in [RFC4884], [RFC4443], [RFC0792], | |||
and [RFC8754]. | and [RFC8754]. | |||
6. IANA Considerations | 6. IANA Considerations | |||
6.1. Segment Routing Header Flags | 6.1. Segment Routing Header Flags | |||
This I-D requests to IANA to allocate bit position 2, within the | This I-D requests to IANA to allocate bit position 2, within the | |||
"Segment Routing Header Flags" registry defined in [RFC8754]. | "Segment Routing Header Flags" registry defined in [RFC8754]. | |||
7. Acknowledgements | 7. Acknowledgements | |||
The authors would like to thank Joel M. Halpern, Greg Mirsky, Bob | The authors would like to thank Joel M. Halpern, Greg Mirsky, Bob | |||
Hinden, Loa Andersson and Gaurav Naik for their review comments. | Hinden, Loa Andersson, Gaurav Naik, Ketan Talaulikar and Haoyu Song | |||
for their review comments. | ||||
8. Contributors | 8. Contributors | |||
The following people have contributed to this document: | The following people have contributed to this document: | |||
Robert Raszuk | Robert Raszuk | |||
Bloomberg LP | Bloomberg LP | |||
Email: robert@raszuk.net | Email: robert@raszuk.net | |||
John Leddy | John Leddy | |||
skipping to change at page 18, line 45 ¶ | skipping to change at page 19, line 40 ¶ | |||
[RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | |||
Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
(SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | |||
<https://www.rfc-editor.org/info/rfc8754>. | <https://www.rfc-editor.org/info/rfc8754>. | |||
9.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-spring-srv6-network-programming] | [I-D.ietf-spring-srv6-network-programming] | |||
Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., | Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., | |||
Matsushima, S., and Z. Li, "SRv6 Network Programming", | Matsushima, S., and Z. Li, "SRv6 Network Programming", | |||
draft-ietf-spring-srv6-network-programming-15 (work in | draft-ietf-spring-srv6-network-programming-16 (work in | |||
progress), March 2020. | progress), June 2020. | |||
[I-D.matsushima-spring-srv6-deployment-status] | [I-D.matsushima-spring-srv6-deployment-status] | |||
Matsushima, S., Filsfils, C., Ali, Z., Li, Z., and K. | Matsushima, S., Filsfils, C., Ali, Z., Li, Z., and K. | |||
Rajaraman, "SRv6 Implementation and Deployment Status", | Rajaraman, "SRv6 Implementation and Deployment Status", | |||
draft-matsushima-spring-srv6-deployment-status-07 (work in | draft-matsushima-spring-srv6-deployment-status-07 (work in | |||
progress), April 2020. | progress), April 2020. | |||
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | |||
RFC 792, DOI 10.17487/RFC0792, September 1981, | RFC 792, DOI 10.17487/RFC0792, September 1981, | |||
<https://www.rfc-editor.org/info/rfc792>. | <https://www.rfc-editor.org/info/rfc792>. | |||
skipping to change at page 19, line 26 ¶ | skipping to change at page 20, line 20 ¶ | |||
Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
Protocol Version 6 (IPv6) Specification", STD 89, | Protocol Version 6 (IPv6) Specification", STD 89, | |||
RFC 4443, DOI 10.17487/RFC4443, March 2006, | RFC 4443, DOI 10.17487/RFC4443, March 2006, | |||
<https://www.rfc-editor.org/info/rfc4443>. | <https://www.rfc-editor.org/info/rfc4443>. | |||
[RFC4884] Bonica, R., Gan, D., Tappan, D., and C. Pignataro, | [RFC4884] Bonica, R., Gan, D., Tappan, D., and C. Pignataro, | |||
"Extended ICMP to Support Multi-Part Messages", RFC 4884, | "Extended ICMP to Support Multi-Part Messages", RFC 4884, | |||
DOI 10.17487/RFC4884, April 2007, | DOI 10.17487/RFC4884, April 2007, | |||
<https://www.rfc-editor.org/info/rfc4884>. | <https://www.rfc-editor.org/info/rfc4884>. | |||
[RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. | ||||
Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)", | ||||
RFC 5357, DOI 10.17487/RFC5357, October 2008, | ||||
<https://www.rfc-editor.org/info/rfc5357>. | ||||
[RFC5476] Claise, B., Ed., Johnson, A., and J. Quittek, "Packet | [RFC5476] Claise, B., Ed., Johnson, A., and J. Quittek, "Packet | |||
Sampling (PSAMP) Protocol Specifications", RFC 5476, | Sampling (PSAMP) Protocol Specifications", RFC 5476, | |||
DOI 10.17487/RFC5476, March 2009, | DOI 10.17487/RFC5476, March 2009, | |||
<https://www.rfc-editor.org/info/rfc5476>. | <https://www.rfc-editor.org/info/rfc5476>. | |||
[RFC5837] Atlas, A., Ed., Bonica, R., Ed., Pignataro, C., Ed., Shen, | [RFC5837] Atlas, A., Ed., Bonica, R., Ed., Pignataro, C., Ed., Shen, | |||
N., and JR. Rivers, "Extending ICMP for Interface and | N., and JR. Rivers, "Extending ICMP for Interface and | |||
Next-Hop Identification", RFC 5837, DOI 10.17487/RFC5837, | Next-Hop Identification", RFC 5837, DOI 10.17487/RFC5837, | |||
April 2010, <https://www.rfc-editor.org/info/rfc5837>. | April 2010, <https://www.rfc-editor.org/info/rfc5837>. | |||
[RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | ||||
(BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | ||||
<https://www.rfc-editor.org/info/rfc5880>. | ||||
[RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, | [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, | |||
"Specification of the IP Flow Information Export (IPFIX) | "Specification of the IP Flow Information Export (IPFIX) | |||
Protocol for the Exchange of Flow Information", STD 77, | Protocol for the Exchange of Flow Information", STD 77, | |||
RFC 7011, DOI 10.17487/RFC7011, September 2013, | RFC 7011, DOI 10.17487/RFC7011, September 2013, | |||
<https://www.rfc-editor.org/info/rfc7011>. | <https://www.rfc-editor.org/info/rfc7011>. | |||
[RFC7012] Claise, B., Ed. and B. Trammell, Ed., "Information Model | [RFC7012] Claise, B., Ed. and B. Trammell, Ed., "Information Model | |||
for IP Flow Information Export (IPFIX)", RFC 7012, | for IP Flow Information Export (IPFIX)", RFC 7012, | |||
DOI 10.17487/RFC7012, September 2013, | DOI 10.17487/RFC7012, September 2013, | |||
<https://www.rfc-editor.org/info/rfc7012>. | <https://www.rfc-editor.org/info/rfc7012>. | |||
[RFC7799] Morton, A., "Active and Passive Metrics and Methods (with | [RFC7799] Morton, A., "Active and Passive Metrics and Methods (with | |||
Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, | Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, | |||
May 2016, <https://www.rfc-editor.org/info/rfc7799>. | May 2016, <https://www.rfc-editor.org/info/rfc7799>. | |||
[RFC7880] Pignataro, C., Ward, D., Akiya, N., Bhatia, M., and S. | ||||
Pallagatti, "Seamless Bidirectional Forwarding Detection | ||||
(S-BFD)", RFC 7880, DOI 10.17487/RFC7880, July 2016, | ||||
<https://www.rfc-editor.org/info/rfc7880>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | ||||
Decraene, B., Litkowski, S., and R. Shakir, "Segment | ||||
Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | ||||
July 2018, <https://www.rfc-editor.org/info/rfc8402>. | ||||
[RFC8403] Geib, R., Ed., Filsfils, C., Pignataro, C., Ed., and N. | [RFC8403] Geib, R., Ed., Filsfils, C., Pignataro, C., Ed., and N. | |||
Kumar, "A Scalable and Topology-Aware MPLS Data-Plane | Kumar, "A Scalable and Topology-Aware MPLS Data-Plane | |||
Monitoring System", RFC 8403, DOI 10.17487/RFC8403, July | Monitoring System", RFC 8403, DOI 10.17487/RFC8403, July | |||
2018, <https://www.rfc-editor.org/info/rfc8403>. | 2018, <https://www.rfc-editor.org/info/rfc8403>. | |||
[RFC8762] Mirsky, G., Jun, G., Nydell, H., and R. Foote, "Simple | ||||
Two-Way Active Measurement Protocol", RFC 8762, | ||||
DOI 10.17487/RFC8762, March 2020, | ||||
<https://www.rfc-editor.org/info/rfc8762>. | ||||
Authors' Addresses | Authors' Addresses | |||
Zafar Ali | Zafar Ali | |||
Cisco Systems | Cisco Systems | |||
Email: zali@cisco.com | Email: zali@cisco.com | |||
Clarence Filsfils | Clarence Filsfils | |||
Cisco Systems | Cisco Systems | |||
End of changes. 60 change blocks. | ||||
144 lines changed or deleted | 221 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |