| < draft-ietf-6man-spring-srv6-oam-09.txt | draft-ietf-6man-spring-srv6-oam-10.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: August 23, 2021 S. Matsushima | Expires: October 10, 2021 S. Matsushima | |||
| Softbank | Softbank | |||
| D. Voyer | D. Voyer | |||
| Bell Canada | Bell Canada | |||
| M. Chen | M. Chen | |||
| Huawei | Huawei | |||
| February 19, 2021 | April 8, 2021 | |||
| 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-09 | draft-ietf-6man-spring-srv6-oam-10 | |||
| Abstract | Abstract | |||
| This document describes how the existing IPv6 mechanisms for ping and | This document describes how the existing IPv6 mechanisms for ping and | |||
| traceroute can be used in an SRv6 network. The document also | traceroute can be used in an SRv6 network. The document also | |||
| specifies the OAM flag in the Segment Routing Header (SRH) for | specifies the OAM flag in the Segment Routing Header (SRH) for | |||
| performing controllable and predictable flow sampling from segment | performing controllable and predictable flow sampling from segment | |||
| endpoints. In addition, the document describes how a centralized | endpoints. In addition, the document describes how a centralized | |||
| monitoring system performs a path continuity check between any nodes | monitoring system performs a path continuity check between any nodes | |||
| within an SRv6 domain. | within an SRv6 domain. | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| 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 August 23, 2021. | This Internet-Draft will expire on October 10, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| 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 . . . . . . . . . . . 4 | |||
| 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 . . . . . . . . . . . . . . . . . . 6 | |||
| 2.2. OAM Operations . . . . . . . . . . . . . . . . . . . . . 7 | 2.2. OAM Operations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.1. Ping in SRv6 Networks . . . . . . . . . . . . . . . . . . 8 | 3.1. Ping in SRv6 Networks . . . . . . . . . . . . . . . . . . 8 | |||
| 3.1.1. Classic Ping . . . . . . . . . . . . . . . . . . . . 8 | 3.1.1. Classic Ping . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.1.2. Pinging a SID . . . . . . . . . . . . . . . . . . . . 10 | 3.1.2. Pinging a SID . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.2. Traceroute . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.2. Traceroute . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.2.1. Classic Traceroute . . . . . . . . . . . . . . . . . 11 | 3.2.1. Classic Traceroute . . . . . . . . . . . . . . . . . 11 | |||
| 3.2.2. Traceroute to a SID . . . . . . . . . . . . . . . . . 12 | 3.2.2. Traceroute to a SID . . . . . . . . . . . . . . . . . 13 | |||
| 3.3. A Hybrid OAM Using O-flag . . . . . . . . . . . . . . . . 14 | 3.3. A Hybrid OAM Using O-flag . . . . . . . . . . . . . . . . 15 | |||
| 3.4. Monitoring of SRv6 Paths . . . . . . . . . . . . . . . . 16 | 3.4. Monitoring of SRv6 Paths . . . . . . . . . . . . . . . . 17 | |||
| 4. Implementation Status . . . . . . . . . . . . . . . . . . . . 18 | 4. Implementation Status . . . . . . . . . . . . . . . . . . . . 18 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 18 | 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 21 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 20 | 9.2. Informative References . . . . . . . . . . . . . . . . . 21 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 1. Introduction | 1. Introduction | |||
| As Segment Routing with IPv6 data plane (SRv6) [RFC8402] simply adds | As Segment Routing with IPv6 data plane (SRv6) [RFC8402] simply adds | |||
| a new type of Routing Extension Header, existing IPv6 OAM mechanisms | a new type of Routing Extension Header, existing IPv6 OAM mechanisms | |||
| can be used in an SRv6 network. This document describes how the | can be used in an SRv6 network. This document describes how the | |||
| existing IPv6 mechanisms for ping and trace route can be used in an | existing IPv6 mechanisms for ping and traceroute can be used in an | |||
| SRv6 network. This includes illustrations of pinging an SRv6 SID for | SRv6 network. This includes illustrations of pinging an SRv6 SID to | |||
| the SID connectivity checks and to validate the availability of a | verify that the SID is reachable and is locally programmed at the | |||
| SID. This also includes illustrations for tracerouting to an SRv6 | target node. This also includes illustrations for tracerouting to an | |||
| SID for hop-by-hop fault localization as well as path tracing to a | SRv6 SID for hop-by-hop fault localization as well as path tracing to | |||
| SID. | a SID. | |||
| The document also introduces enhancements for OAM mechanism for SRv6 | The document also introduces enhancements for OAM mechanism for SRv6 | |||
| networks for performing controllable and predictable flow sampling | networks for performing controllable and predictable flow sampling | |||
| from segment endpoints using, e.g., IP Flow Information Export | from segment endpoints using, e.g., IP Flow Information Export | |||
| (IPFIX) protocol [RFC7011]. Specifically, the document specifies the | (IPFIX) protocol [RFC7011]. Specifically, the document specifies the | |||
| O-flag in SRH as a marking-bit in the user packets to trigger the | O-flag in SRH as a marking-bit in the user packets to trigger the | |||
| telemetry data collection and export at the segment endpoints. | telemetry data collection and export at the segment endpoints. | |||
| The document also outlines how centralized OAM technique in [RFC8403] | The document also outlines how centralized OAM technique in [RFC8403] | |||
| can be extended for SRv6 to perform a path continuity check between | can be extended for SRv6 to perform a path continuity check between | |||
| skipping to change at page 3, line 47 ¶ | skipping to change at page 3, line 47 ¶ | |||
| SR: Segment Routing. | SR: Segment Routing. | |||
| SRH: Segment Routing Header [RFC8754]. | 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]. | |||
| IS-IS: Intermediate System to Intermediate System | ||||
| OSPF: Open Shortest Path First protocol [RFC2328] | ||||
| IGP: Interior Gateway Protocols (e.g., OSPF, IS-IS). | ||||
| BGP-LS: Border Gateway Protocol - Link State Extensions [RFC8571] | ||||
| 1.3. Terminology and Reference Topology | 1.3. Terminology and Reference Topology | |||
| Throughout the document, the following terminology and simple | Throughout the document, the following terminology and simple | |||
| topology is used for illustration. | 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|| | |||
| || ||------|| ||------| |------|| ||------| |---|| || | || ||------|| ||------| |------|| ||------| |---|| || | |||
| skipping to change at page 4, line 21 ¶ | skipping to change at page 4, line 28 ¶ | |||
| | | | | | | | | | | |||
| ---+-- | ------ | --+--- | ---+-- | ------ | --+--- | |||
| |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 IPv6 loopback address 2001:db8::A:k::/128. | |||
| Nodes N1, N2, N4 and N7 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 | CE1 and CE2 are Customer Edge devices of any data plane capability | |||
| (e.g., IPv4, IPv6, L2, etc.). | (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 i and j at the i | The IPv6 address of the nth Link between node i and j at the i | |||
| side is represented as 2001:DB8:i:j:in::, e.g., the IPv6 address | side is represented as 2001:db8:i:j:in::, 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 SID (refer | 2001:db8:B:k:Cij:: is explicitly allocated as the END.X SID at | |||
| [I-D.ietf-spring-srv6-network-programming]) at node k towards | node k towards neighbor node i via jth Link between node i and | |||
| neighbor node i via jth Link between node i and node k. e.g., | node k. e.g., 2001:db8:B:2:C31:: represents END.X at N2 towards | |||
| 2001:DB8:B:2:C31:: represents END.X at N2 towards N3 via link3 | N3 via link3 (the 1st link between N2 and N3). Similarly, | |||
| (the 1st link between N2 and N3). Similarly, 2001:DB8:B:4:C52:: | 2001:db8:B:4:C52:: represents the END.X at N4 towards N5 via | |||
| represents the END.X at N4 towards N5 via link10. | link10. Please refer to [RFC8986] for description of END.X SID. | |||
| 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 5, line 31 ¶ | skipping to change at page 5, line 38 ¶ | |||
| * (payload) represents the the payload of the packet. | * (payload) represents the the payload of the packet. | |||
| 2. OAM Mechanisms | 2. OAM Mechanisms | |||
| This section defines OAM enhancement for the SRv6 networks. | This section defines OAM enhancement for the SRv6 networks. | |||
| 2.1. O-flag in Segment Routing Header | 2.1. O-flag in Segment Routing Header | |||
| [RFC8754] describes the Segment Routing Header (SRH) and how SR | [RFC8754] describes the Segment Routing Header (SRH) and how SR | |||
| capable nodes use it. The SRH contains an 8-bit "Flags" field. This | capable nodes use it. The SRH contains an 8-bit "Flags" field. | |||
| document defines the following bit in the SRH.Flags to carry the | ||||
| O-flag: | This document defines the following bit in the SRH Flags field to | |||
| carry the O-flag: | ||||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| | |O| | | | |O| | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Where: | Where: | |||
| O-flag: OAM flag. | O-flag: OAM flag in the SRH Flags field defined in [RFC8754] . | |||
| 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 | ||||
| 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. | |||
| This document does not specify the data elements that need to be | This document does not specify the data elements that need to be | |||
| exported and the associated configurations. Similarly, this document | exported and the associated configurations. Similarly, this document | |||
| does not define any formats for exporting the data elements. | does not define any formats for exporting the data elements. | |||
| skipping to change at page 6, line 29 ¶ | skipping to change at page 6, line 29 ¶ | |||
| are configured by the management plane through data set templates | are configured by the management plane through data set templates | |||
| (e.g., as in IPFIX [RFC7012]). | (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 plane protocol(s). | control plane 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 appended as follows for the O-flag | |||
| processing. | processing. | |||
| S01.1. IF SRH.Flags.O-flag is set and local configuration permits | S01.1. IF O-flag is set and local configuration permits | |||
| O-flag processing THEN | O-flag processing { | |||
| a. Make a copy of the packet. | a. Make a copy of the packet. | |||
| b. Send the copied packet, along with a timestamp | b. Send the copied packet, along with a timestamp | |||
| to the OAM process for telemetry data collection | to the OAM process for telemetry data collection | |||
| and export. ;; Ref1 | and export. ;; Ref1 | |||
| } | ||||
| Ref1: An implementation SHOULD copy and record the timestamp as | Ref1: An implementation SHOULD copy and record the timestamp as | |||
| soon as possible during packet processing. Timestamp or any other | soon as possible during packet processing. Timestamp or any other | |||
| metadata is not | metadata is not | |||
| carried in the packet forwarded to the next hop. | carried in the packet forwarded to the next hop. | |||
| Please note that the O-flag processing happens before execution of | Please note that the O-flag processing happens before execution of | |||
| regular processing of the local SID S. | regular processing of the local SID S. Specifically, the line S01.1 | |||
| of the pseudo-code specified in this document is inserted between | ||||
| line S01 and S02 of the pseudo-code defined in section 4.3.1.1 of | ||||
| [RFC8754]. | ||||
| Based on the requested information elements configured by the | Based on the requested information elements configured by the | |||
| management plane through data set templates [RFC7012], the OAM | management plane through data set templates [RFC7012], the OAM | |||
| process exports the requested information elements. The information | process exports the requested information elements. The information | |||
| elements include parts of the packet header and/or parts of the | elements include parts of the packet header and/or parts of the | |||
| packet payload for flow identification. The OAM process uses | packet payload for flow identification. The OAM process uses | |||
| information elements defined in IPFIX [RFC7011] and PSAMP [RFC5476] | information elements defined in IPFIX [RFC7011] and PSAMP [RFC5476] | |||
| for exporting the requested sections of the mirrored packets. | for exporting the requested sections of the mirrored packets. | |||
| If the telemetry data from the ultimate segment in the segment-list | If the telemetry data from the ultimate segment in the segment-list | |||
| is required, a penultimate segment SHOULD NOT be a Penultimate | is required, a penultimate segment SHOULD NOT be a Penultimate | |||
| Segment Pop (PSP) SID. When the penultimate segment is a PSP SID, | Segment Pop (PSP) SID. When the penultimate segment is a PSP SID, | |||
| the SRH will be removed and the O-bit will not be processed at the | the SRH will be removed and the O-flag will not be processed at the | |||
| ultimate segment. | ultimate segment. | |||
| 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 a configurable rate. This is to avoid hitting any | |||
| performance impact on the OAM and the telemetry collection processes. | ||||
| Failure in implementing the rate limit can lead to a denial-of- | ||||
| service attack, as detailed in Section 5. | ||||
| 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. How to correlate | operations are beyond the scope of this document. How to correlate | |||
| the data collected from different nodes at an external controller is | the data collected from different nodes at an external controller is | |||
| also outside the scope of the document. Section 3 illustrates use of | also outside the scope of the document. Section 3 illustrates use of | |||
| the SRH.Flags.O-flag for implementing a hybrid OAM mechanism, where | the O-flag for implementing a hybrid OAM mechanism, where the | |||
| the "hybrid" classification is based on RFC7799 [RFC7799]. | "hybrid" classification is based on RFC7799 [RFC7799]. | |||
| 2.2. OAM Operations | 2.2. OAM Operations | |||
| IPv6 OAM operations can be performed for any SRv6 SID whose behavior | IPv6 OAM operations can be performed for any SRv6 SID whose behavior | |||
| allows Upper Layer Header processing for an applicable OAM payload | allows Upper Layer Header processing for an applicable OAM payload | |||
| (e.g., ICMP, UDP). | (e.g., ICMP, UDP). | |||
| Ping to a SID is used for SID connectivity checks and to validate the | Ping to an SRv6 SID is used to verify that the SID is reachable and | |||
| availability of a SID. Traceroute to a SID is used for hop-by-hop | is locally programmed at the target node. Traceroute to a SID is | |||
| fault localization as well as path tracing to a SID. Section 3 | used for hop-by-hop fault localization as well as path tracing to a | |||
| illustrates the ICMPv6 based ping and the UDP based traceroute | SID. Section 3 illustrates the ICMPv6 based ping and the UDP based | |||
| mechanisms for ping and traceroute to an SRv6 SID. Although this | traceroute mechanisms for ping and traceroute to an SRv6 SID. | |||
| document only illustrates ICMP ping and UDP-based traceroute to an | Although this document only illustrates ICMPv6 ping and UDP based | |||
| SRv6 SID, the procedures are equally applicable to other IPv6 OAM | traceroute to an SRv6 SID, the procedures are equally applicable to | |||
| probing to an SRv6 SID (e.g., Bidirectional Forwarding Detection | other IPv6 OAM probing to an SRv6 SID (e.g., Bidirectional Forwarding | |||
| (BFD) [RFC5880], Seamless BFD (SBFD) [RFC7880], TWAMP Light and STAMP | Detection (BFD) [RFC5880], Seamless BFD (SBFD) [RFC7880], STAMP probe | |||
| probe message processing as described in [I-D.gandhi-spring-twamp- | message processing [I-D.gandhi-spring-stamp-srpm], etc.). | |||
| srpm] and [I-D.gandhi-spring-stamp-srpm], respectively, etc.). | ||||
| Specifically, as long as local configuration allows the Upper-layer | Specifically, as long as local configuration allows the Upper-layer | |||
| Header processing of the applicable OAM payload for SRv6 SIDs, the | Header processing of the applicable OAM payload for SRv6 SIDs, the | |||
| existing IPv6 OAM techniques can be used to target a probe to a | existing IPv6 OAM techniques can be used to target a probe to a | |||
| (remote) SID. | (remote) SID. | |||
| IPv6 OAM operations can be performed with the target SID in the IPv6 | 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 | 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 | the last segment. In general, OAM operations to a target SID may not | |||
| exercise all of its processing depending on its behavior definition. | exercise all of its processing depending on its behavior definition. | |||
| For example, ping to an END.X SID (refer [I-D.ietf-spring-srv6- | For example, ping to an END.X SID [RFC8986] only validates the SID is | |||
| network-programming]) at the target node only validates availability | locally programmed at the target node and does not validate switching | |||
| of the SID and does not validate switching to the correct outgoing | to the correct outgoing interface. To exercise the behavior of a | |||
| interface. To exercise the behavior of a target SID, the OAM | target SID, the OAM operation SHOULD construct the probe in a manner | |||
| operation SHOULD construct the probe in a manner similar to a data | similar to a data packet that exercises the SID behavior, i.e. to | |||
| packet that exercises the SID behavior, i.e. to include that SID as a | include that SID as a transit SID in either an SRH or IPv6 DA of an | |||
| transit SID in either an SRH or IPv6 DA of an outer IPv6 header or as | outer IPv6 header or as appropriate based on the definition of the | |||
| appropriate based on the definition of the SID behavior. | 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 ICMPv6 ping | |||
| the SRv6 networks. | in the SRv6 networks. | |||
| 3.1.1. Classic Ping | 3.1.1. Classic Ping | |||
| The existing mechanism to perform the connectivity checks, along the | The existing mechanism to perform the reachability checks, along the | |||
| shortest path, continues to work without any modification. The | shortest path, continues to work without any modification. The | |||
| 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 capable node or a classic IPv6 node. | egress or transit may be an SRv6-capable node or a classic IPv6 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 N2 and N3, which have | have IGP metric 10 except both links between N2 and N3, which have | |||
| IGP metric set to 100. User issues a ping from node N1 to a loopback | 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::, 2001:DB8:B:4:C52::>. | of node 5, via segment list <2001:db8:B:2:C31::, 2001:db8:B:4:C52::>. | |||
| The SID behavior used in the example is End.X SID (refer [I-D.ietf- | The SID behavior used in the example is End.X SID, as described in | |||
| spring-srv6-network-programming]) but the procedure is equally | [RFC8986], but the procedure is equally applicable to any other | |||
| applicable to any other (transit) SID type. | (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 ICMPv6 Echos to B5::, timeout is 2 seconds: | |||
| !!!!! | !!!!! | |||
| Success rate is 100 percent (5/5), round-trip min/avg/max = 0.625 | Success rate is 100 percent (5/5), round-trip min/avg/max = 0.625 | |||
| /0.749/0.931 ms | /0.749/0.931 ms | |||
| Figure 2 A sample ping output at an SRv6 capable node | Figure 2 A sample ping output at an SRv6-capable node | |||
| 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). | Echo Request). | |||
| 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 behavior | 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 behavior | 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 and responds with the | ICMPv6 processing on the echo request and responds with the echo | |||
| echo reply message. The echo reply message is IP routed. | reply message to N1. The echo reply message is IP routed. | |||
| 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 | |||
| perform SID connectivity checks and to validate the availability of a | perform SID reachability check and to validate the SID is locally | |||
| remote SID. This is explained using an example in the following. | programmed at the target node. This is explained using an example in | |||
| The example uses ping to an END SID (refer [I-D.ietf-spring-srv6- | the following. The example uses ping to an END SID, as described in | |||
| network-programming]) but the procedure is equally applicable to ping | [RFC8986], but the procedure is equally applicable to ping any other | |||
| any other SID behaviors. | 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 | |||
| 2001:DB8:B:4::, via 2001:DB8:B:2:C31::, from node N1. The ICMPv6 | 2001:db8:B:4::, via 2001:db8:B:2:C31::, from node N1. The ICMPv6 | |||
| echo request is processed at the individual nodes along the path as | echo request is processed at the individual nodes along the 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). | 2001:db8:B:2:C31::; SL=1; NH=ICMPv6)(ICMPv6 Echo Request). | |||
| 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 behavior | 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 target SID | o When node N4 receives the packet, it processes the target SID | |||
| (2001:DB8:B:4::). | (2001:db8:B:4::). | |||
| o If the target SID (2001:DB8:B:4::) is not locally instantiated, | o If the target SID (2001:db8:B:4::) is not locally instantiated, | |||
| the packet is discarded | the packet is discarded | |||
| o If the target SID (2001:DB8:B:4::) is locally instantiated, the | o If the target SID (2001:db8:B:4::) is locally instantiated, the | |||
| node 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 and responds with the echo reply message. The echo reply | message and responds with the echo reply message. The echo reply | |||
| message is IP routed. | message is IP routed. | |||
| 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. | |||
| skipping to change at page 11, line 17 ¶ | skipping to change at page 11, line 24 ¶ | |||
| The following subsections outline some use cases of the traceroute in | The following subsections outline some use cases of the traceroute in | |||
| the SRv6 networks. | the SRv6 networks. | |||
| 3.2.1. Classic Traceroute | 3.2.1. Classic Traceroute | |||
| The existing mechanism to traceroute a remote IP address, along the | The existing mechanism to traceroute a remote IP address, along the | |||
| shortest path, continues to work without any modification. The | shortest path, continues to work without any modification. The | |||
| 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 N2 and N3, | the links have IGP metric 10 except both links between N2 and N3, | |||
| which have IGP metric set to 100. User issues a traceroute from node | which have IGP metric set to 100. User issues a traceroute from node | |||
| N1 to a loopback of node 5, via segment list <2001:DB8:B:2:C31::, | N1 to a loopback of node 5, via segment list <2001:db8:B:2:C31::, | |||
| 2001:DB8:B:4:C52::>. The SID behavior used in the example is End.X | 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 | SID, as described in [RFC8986], but the procedure is equally | |||
| procedure is equally applicable to any other (transit) SID type. | applicable to any other (transit) SID type. Figure 3 contains sample | |||
| Figure 3 contains sample output for the traceroute request. | 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::, | |||
| SRH:(2001:DB8:A:5::, 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::, SL=1) | SRH:(2001:db8:A:5::, 2001:db8:B:4:C52::, 2001:db8:B:2:C31::, SL=1) | |||
| 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:A:5::, 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::, SL=1) | SRH:(2001:db8:A:5::, 2001:db8:B:4:C52::, 2001:db8:B:2:C31::, SL=1) | |||
| 4 2001:DB8:4:5::52:: 0.879 msec 0.916 msec 1.024 msec | 4 2001:db8:4:5::52:: 0.879 msec 0.916 msec 1.024 msec | |||
| DA: 2001:DB8:A:5:: | DA: 2001:db8:A:5:: | |||
| Figure 3 A sample traceroute output at an SRv6 capable node | Figure 3 A sample traceroute output at an SRv6-capable node | |||
| In the sample traceroute output, the information displayed at each | In the sample traceroute output, the information displayed at each | |||
| hop is obtained using the contents of the "Time Exceeded" or | hop is obtained using the contents of the "Time Exceeded" or | |||
| "Destination Unreachable" ICMPv6 responses. These ICMPv6 responses | "Destination Unreachable" ICMPv6 responses. These ICMPv6 responses | |||
| are IP routed. | are IP routed. | |||
| Please note that information for hop2 is returned by N3, which is a | In the sample traceroute output, the information for link3 is | |||
| classic IPv6 node. Nonetheless, the ingress node is able to display | returned by N3, which is a classic IPv6 node. Nonetheless, the | |||
| SR header contents as the packet travels through the IPv6 classic | ingress node is able to display SR header contents as the packet | |||
| node. This is because the "Time Exceeded Message" ICMPv6 message can | travels through the IPv6 classic node. This is because the "Time | |||
| contain as much of the invoking packet as possible without the ICMPv6 | Exceeded Message" ICMPv6 message can contain as much of the invoking | |||
| packet exceeding the minimum IPv6 MTU [RFC4443]. The SR header is | packet as possible without the ICMPv6 packet exceeding the minimum | |||
| also included in these ICMPv6 messages initiated by the classic IPv6 | IPv6 MTU [RFC4443]. The SR header is also included in these ICMPv6 | |||
| transit nodes that are not running SRv6 software. Specifically, a | messages initiated by the classic IPv6 transit nodes that are not | |||
| node generating ICMPv6 message containing a copy of the invoking | running SRv6 software. Specifically, a node generating ICMPv6 | |||
| packet does not need to understand the extension header(s) in the | message containing a copy of the invoking packet does not need to | |||
| invoking packet. | understand the extension header(s) in the invoking packet. | |||
| The segment list information returned for the first hop is returned | The segment list information returned for the first hop is returned | |||
| by N2, which is an SRv6 capable node. Just like for the second hop, | by N2, which is an SRv6-capable node. Just like for the second hop, | |||
| the ingress node is able to display SR header contents for the first | the ingress node is able to display SR header contents for the first | |||
| hop. | hop. | |||
| There is no difference in processing of the traceroute probe at an | There is no difference in processing of the traceroute probe at an | |||
| IPv6 classic node and an SRv6 capable node. Similarly, both IPv6 | IPv6 classic node and an SRv6-capable node. Similarly, both IPv6 | |||
| classic and SRv6 capable nodes may use the address of the interface | classic and SRv6-capable nodes may use the address of the interface | |||
| 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. ICMPv6 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 IP address of the interface on which the traceroute probe was | |||
| which the traceroute probe was received by the reporting node is very | received is useful. This information can also be used to verify if | |||
| useful. This information can also be used to verify if SIDs | SIDs 2001:db8:B:2:C31:: and 2001:db8:B:4:C52:: are executed correctly | |||
| 2001:DB8:B:2:C31:: and 2001:DB8:B:4:C52:: are executed correctly by | by N2 and N4, respectively. Specifically, the information displayed | |||
| N2 and N4, respectively. Specifically, the information displayed for | for the second hop contains the incoming interface address | |||
| the second hop contains the incoming interface address | 2001:db8:2:3:31:: at N3. This matches with the expected interface | |||
| 2001:DB8:2:3:31:: at N3. This matches with the expected interface | bound to END.X behavior 2001:db8:B:2:C31:: (link3). Similarly, the | |||
| bound to END.X behavior 2001:DB8:B:2:C31:: (link3). Similarly, the | ||||
| information displayed for hop5 contains the incoming interface | information displayed for hop5 contains the incoming interface | |||
| address 2001:DB8:4:5::52:: at N5. This matches with the expected | address 2001:db8:4:5::52:: at N5. This matches with the expected | |||
| interface bound to the END.X behavior 2001:DB8:B:4:C52:: (link10). | interface bound to the END.X 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 behavior, as explained using an | equally to traceroute a remote SID behavior, as explained using an | |||
| example in the following. The example uses traceroute to an END SID | example in the following. The example uses traceroute to an END SID, | |||
| (refer [I-D.ietf-spring-srv6-network-programming]) but the procedure | as described in [RFC8986], but the procedure is equally applicable to | |||
| is equally applicable to tracerouting any other SID behaviors. | tracerouting any other SID behaviors. | |||
| Please note that traceroute to a SID is exemplified using UDP probes. | Please note that traceroute to a SID is exemplified using UDP probes. | |||
| However, the procedure is equally applicable to other implementations | However, the procedure is equally applicable to other implementations | |||
| of traceroute mechanism. | of traceroute mechanism. The UDP encoded message to traceroute a SID | |||
| uses the UDP ports assigned by IANA for "traceroute use". | ||||
| Consider the example where the user wants to traceroute a remote SID | Consider the example where the user wants to traceroute a remote SID | |||
| 2001:DB8:B:4::, via 2001:DB8:B:2:C31::, from node N1. The traceroute | 2001:db8:B:4::, via 2001:db8:B:2:C31::, from node N1. The traceroute | |||
| probe is processed at the individual nodes along the path as follows: | probe is processed at the individual nodes along the path 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). | NH=UDP)(Traceroute probe). | |||
| 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: "Hop limit | the ICMPv6 message (Type: "Time Exceeded", Code: "Hop limit | |||
| exceeded in transit"). The ICMPv6 response is IP routed. | exceeded in transit"). The ICMPv6 response is IP routed. | |||
| 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 | |||
| behavior (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: "Hop limit exceeded in Transit"). The | "Time Exceeded", Code: "Hop limit exceeded in Transit"). The | |||
| ICMPv6 response is IP routed. | ICMPv6 response is IP routed. | |||
| 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. | 2001:db8:B:4::, it processes the END SID. | |||
| o If the target SID (2001:DB8:B:4::) is not locally instantiated, | o If the target SID (2001:db8:B:4::) is not locally instantiated, | |||
| the packet is discarded. | the packet is discarded. | |||
| o If the target SID (2001:DB8:B:4::) is locally instantiated, the | o If the target SID (2001:db8:B:4::) is locally instantiated, the | |||
| node 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). The ICMPv6 | Destination unreachable, Code: Port Unreachable). The ICMPv6 | |||
| response is IP routed. | response is IP routed. | |||
| 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 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 Hybrid OAM Using O-flag | 3.3. A Hybrid OAM Using O-flag | |||
| This section illustrates a hybrid OAM mechanism using the the | This section illustrates a hybrid OAM mechanism using the the O-flag. | |||
| SRH.Flags.O-flag. Without loss of the generality, the illustration | Without loss of the generality, the illustration assumes N100 is a | |||
| assumes N100 is a centralized controller. | centralized controller. | |||
| The illustration is different than the In-situ OAM defined in [I.D- | 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 | draft-ietf-ippm-ioam-data]. This is because In-situ OAM records | |||
| operational and telemetry information in the packet as the packet | operational and telemetry information in the packet as the packet | |||
| traverses a path between two points in the network [I.D-draft-ietf- | 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 | ippm-ioam-data]. The illustration in this subsection does not | |||
| recording of OAM data in the packet. | require the recording of OAM data in the packet. | |||
| The illustration does not assume any formats for exporting the data | The illustration does not assume any formats for exporting the data | |||
| elements or the data elements that need to be exported. | elements or the data elements that need 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 | |||
| 999 traffic going from CE1 to CE2 via a low latency SR policy P | 999 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 VPN 999 is | 2001:db8:B:4:C52::. The VPN SID at N7 associated with VPN 999 is | |||
| 2001:DB8:B:7:DT999::. 2001:DB8:B:7:DT999:: is a USP SID. N1, N4, | 2001:db8:B:7:DT999::. 2001:db8:B:7:DT999:: 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 O-flag but N2 is not capable of | |||
| capable of processing SRH.Flags.O-flag. N100 is the centralized | processing O-flag. N100 is the centralized controller capable of | |||
| controller capable of processing and correlating the copy of the | processing and correlating the copy of the packets sent from nodes | |||
| packets sent from nodes N1, N4, and N7. N100 is aware of | N1, N4, and N7. N100 is aware of O-flag processing capabilities. | |||
| SRH.Flags.O-flag processing capabilities. Controller N100 with the | Controller N100 with the help from nodes N1, N4, N7 and implements a | |||
| help from nodes N1, N4, N7 and implements a hybrid OAM mechanism | hybrid OAM mechanism using the O-flag as follows: | |||
| using the SRH.Flags.O-flag as follows: | ||||
| o A packet P1:(IPv4 header)(payload) is sent from CE1 to Node N1. | o A packet P1:(IPv4 header)(payload) is sent from CE1 to Node N1. | |||
| o Node N1 steers the packet P1 through the Policy P. Based on a | o Node N1 steers the packet P1 through the Policy P. Based on a | |||
| local configuration, Node N1 also implements logic to sample | local configuration, Node N1 also implements logic to sample | |||
| traffic steered through policy P for hybrid OAM purposes. | traffic steered through policy P for hybrid OAM purposes. | |||
| Specification for the sampling logic is beyond the scope of this | Specification for the sampling logic is beyond the scope of this | |||
| document. Consider the case where packet P1 is classified as a | document. Consider the case where packet P1 is classified as a | |||
| packet to be monitored via the hybrid OAM. Node N1 sets | packet to be monitored via the hybrid OAM. Node N1 sets O-flag | |||
| SRH.Flags.O-flag during encapsulation required by policy P. As | during encapsulation required by policy P. As part of setting the | |||
| part of setting the SRH.Flags.O-flag, node N1 also sends a | O-flag, node N1 also sends a timestamped copy of the packet P1: | |||
| timestamped copy of the packet P1: (2001:DB8:A:1::, | (2001:db8:A:1::, 2001:db8:B:2:C31::) (2001:db8:B:7:DT999::, | |||
| 2001:DB8:B:2:C31::) (2001:DB8:B:7:DT999::, 2001:DB8:B:4:C52::, | 2001:db8:B:4:C52::, 2001:db8:B:2:C31::; SL=2; O-flag=1; | |||
| 2001:DB8:B:2:C31::; SL=2; O-flag=1; NH=IPv4)(IPv4 header)(payload) | NH=IPv4)(IPv4 header)(payload) to a local OAM process. The local | |||
| to a local OAM process. The local OAM process sends a full or | OAM process sends a full or partial copy of the packet P1 to the | |||
| partial copy of the packet P1 to the controller N100. The OAM | controller N100. The OAM process includes the recorded timestamp, | |||
| process includes the recorded timestamp, additional OAM | additional OAM information like incoming and outgoing interface, | |||
| information like incoming and outgoing interface, etc. along with | etc. along with any applicable metadata. Node N1 forwards the | |||
| any applicable metadata. Node N1 forwards the original packet | 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 O-flag set, it ignores the | |||
| ignores the SRH.Flags.O-flag. This is because node N2 is not | O-flag. This is because node N2 is not capable of processing the | |||
| capable of processing the O-flag. Node N2 performs the standard | O-flag. Node N2 performs the standard SRv6 SID and SRH | |||
| SRv6 SID and SRH processing. Specifically, it executes the END.X | processing. Specifically, it executes the END.X behavior | |||
| (refer [I-D.ietf-spring-srv6-network-programming]) behavior | (2001:db8:B:2:C31::) as described in [RFC8986] and forwards the | |||
| (2001:DB8:B:2:C31::) and forwards the packet P1 (2001:DB8:A:1::, | packet P1 (2001:db8:A:1::, 2001:db8:B:4:C52::) | |||
| 2001:DB8:B:4:C52::) (2001:DB8:B:7:DT999::, 2001:DB8:B:4:C52::, | (2001:db8:B:7:DT999::, 2001:db8:B:4:C52::, 2001:db8:B:2:C31::; | |||
| 2001:DB8:B:2:C31::; SL=1; O-flag=1; NH=IPv4)(IPv4 header)(payload) | SL=1; O-flag=1; NH=IPv4)(IPv4 header)(payload) over link 3 towards | |||
| over link 3 towards Node N3. | 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:DT999::, 2001:DB8:B:4:C52::, | 2001:db8:B:4:C52::) (2001:db8:B:7:DT999::, 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 O-flag. As part of processing | |||
| processing the O-flag, it sends a timestamped copy of the packet | the O-flag, it sends a timestamped copy of the packet to a local | |||
| to a local OAM process. The local OAM process sends a full or | OAM process. The local OAM process sends a full or partial copy | |||
| partial copy of the packet P1 to the controller N100. The OAM | of the packet P1 to the controller N100. The OAM process includes | |||
| process includes the recorded timestamp, additional OAM | the recorded timestamp, additional OAM information like incoming | |||
| information like incoming and outgoing interface, etc. along with | and outgoing interface, etc. along with any applicable metadata. | |||
| any applicable metadata. Node N4 performs the standard SRv6 SID | Node N4 performs the standard SRv6 SID and SRH processing on the | |||
| and SRH processing on the original packet P1. Specifically, it | original packet P1. Specifically, it executes the END.X behavior | |||
| executes the END.X behavior (2001:DB8:B:4:C52::) and forwards the | (2001:db8:B:4:C52::) and forwards the packet P1 (2001:db8:A:1::, | |||
| packet P1 (2001:DB8:A:1::, 2001:DB8:B:7:DT999::) | 2001:db8:B:7:DT999::) (2001:db8:B:7:DT999::, 2001:db8:B:4:C52::, | |||
| (2001:DB8:B:7:DT999::, 2001:DB8:B:4:C52::, 2001:DB8:B:2:C31::; | 2001:db8:B:2:C31::; SL=0; O-flag=1; NH=IPv4)(IPv4 header)(payload) | |||
| SL=0; O-flag=1; NH=IPv4)(IPv4 header)(payload) over link 10 | 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:DT999:: in the IPv6 | forwards the packet based on DA 2001:db8:B:7:DT999:: in the IPv6 | |||
| header. | header. | |||
| o When node N7 receives the packet P1 (2001:DB8:A:1::, | o When node N7 receives the packet P1 (2001:db8:A:1::, | |||
| 2001:DB8:B:7:DT999::) (2001:DB8:B:7:DT999::, 2001:DB8:B:4:C52::, | 2001:db8:B:7:DT999::) (2001:db8:B:7:DT999::, 2001:db8:B:4:C52::, | |||
| 2001:DB8:B:2:C31::; SL=0; O-flag=1; NH=IPv4)(IPv4 | 2001:db8:B:2:C31::; SL=0; O-flag=1; NH=IPv4)(IPv4 | |||
| header)(payload), it processes the SRH.Flags.O-flag. As part of | header)(payload), it processes the O-flag. As part of processing | |||
| processing the O-flag, it sends a timestamped copy of the packet | the O-flag, it sends a timestamped copy of the packet to a local | |||
| to a local OAM process. The local OAM process sends a full or | OAM process. The local OAM process sends a full or partial copy | |||
| partial copy of the packet P1 to the controller N100. The OAM | of the packet P1 to the controller N100. The OAM process includes | |||
| process includes the recorded timestamp, additional OAM | the recorded timestamp, additional OAM information like incoming | |||
| information like incoming and outgoing interface, etc. along with | and outgoing interface, etc. along with any applicable metadata. | |||
| any applicable metadata. Node N4 performs the standard SRv6 SID | Node N4 performs the standard SRv6 SID and SRH processing on the | |||
| and SRH processing on the original packet P1. Specifically, it | original packet P1. Specifically, it executes the VPN SID | |||
| executes the VPN SID (2001:DB8:B:7:DT999::) and based on lookup in | (2001:db8:B:7:DT999::) and based on lookup in table 100 forwards | |||
| table 100 forwards the packet P1 (IPv4 header)(payload) towards CE | the packet P1 (IPv4 header)(payload) towards CE 2. | |||
| 2. | ||||
| 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 | |||
| skipping to change at page 17, line 11 ¶ | skipping to change at page 17, line 32 ¶ | |||
| networks with MPLS data plane. This document describes how the | networks with MPLS data plane. This document describes how the | |||
| concept can be used to perform path monitoring in an SRv6 network | concept can be used to perform path monitoring in an SRv6 network | |||
| from a centralized controller. | from a centralized 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. | monitor the paths between the various endpoints. | |||
| The controller N100 advertises an END (refer [I-D.ietf-spring-srv6- | The controller N100 advertises an END SID [RFC8986] | |||
| network-programming]) SID 2001:DB8:B:100:1::. To monitor any | 2001:db8:B:100:1::. To monitor any arbitrary SRv6 paths, the | |||
| arbitrary SRv6 paths, the controller can create a loopback probe that | controller can create a loopback probe that originates and terminates | |||
| originates and terminates on Node N100. To distinguish between a | on Node N100. To distinguish between a failure in the monitored path | |||
| failure in the monitored path and loss of connectivity between the | and loss of connectivity between the controller and the network, Node | |||
| controller and the network, Node N100 runs a suitable mechanism to | N100 runs a suitable mechanism to monitor its connectivity to the | |||
| monitor its connectivity to the monitored network. | monitored network. | |||
| The loopback probes are exemplified using an example where controller | The loopback probes are exemplified using an example where controller | |||
| N100 needs to verify a segment list <2001:DB8:B:2:C31::, | 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 behavior (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 behavior (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 behavior. 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 | |||
| This section is to be removed prior to publishing as an RFC. | This section is to be removed prior to publishing as an RFC. | |||
| See [I-D.matsushima-spring-srv6-deployment-status] for updated | See [I-D.matsushima-spring-srv6-deployment-status] for updated | |||
| deployment and interoperability reports. | deployment and interoperability reports. | |||
| 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 ICMPv6. | |||
| impose any additional security challenges to be considered beyond | ||||
| security considerations described in [RFC4884], [RFC4443], [RFC0792], | [RFC8754] defines the notion of an SR domain and use of SRH within | |||
| and [RFC8754]. | the SR domain. The use of OAM procedures described in this document | |||
| is restricted to an SR domain. For example, similar to the SID | ||||
| manipulation, O-flag manipulation is not considered as a threat | ||||
| within the SR domain. Procedures for securing an SR domain are | ||||
| defined the section 5.1 and section 7 of [RFC8754]. | ||||
| As noted in section 7.1 of [RFC8754], compromised nodes within the SR | ||||
| domain may mount attacks. The O-flag may be set by an attacking node | ||||
| attempting a denial-of-service attack on the OAM process at the | ||||
| segment endpoint node. An implementation correctly implementing the | ||||
| rate limiting in section 2.1.1 is not susceptible to that denial-of- | ||||
| service attack. Additionally, SRH Flags are protected by the HMAC | ||||
| TLV, as described in Section 2.1.2.1 of [RFC8754]. | ||||
| This document does not impose any additional security challenges to | ||||
| be considered beyond security threats described in [RFC4884], | ||||
| [RFC4443], [RFC0792], and [RFC8754]. | ||||
| 6. IANA Considerations | 6. IANA Considerations | |||
| This document requests that IANA allocate the following registrations | This document requests that IANA allocate the following registrations | |||
| in the "Segment Routing Header Flags" sub-registry for the "Internet | in the "Segment Routing Header Flags" sub-registry for the "Internet | |||
| Protocol Version 6 (IPv6) Parameters" registry maintained by IANA: | Protocol Version 6 (IPv6) Parameters" registry maintained by IANA: | |||
| +-------+------------------------------+---------------+ | +-------+------------------------------+---------------+ | |||
| | Bit | Description | Reference | | | Bit | Description | Reference | | |||
| +=======+==============================+===============+ | +=======+==============================+===============+ | |||
| skipping to change at page 20, line 4 ¶ | skipping to change at page 20, line 33 ¶ | |||
| Germany | Germany | |||
| Email: fbrockne@cisco.com | Email: fbrockne@cisco.com | |||
| Darren Dukes | Darren Dukes | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: ddukes@cisco.com | Email: ddukes@cisco.com | |||
| Cheng Li | Cheng Li | |||
| Huawei | Huawei | |||
| Email: chengli13@huawei.com | Email: chengli13@huawei.com | |||
| Faisal Iqbal | Faisal Iqbal | |||
| Individual | Individual | |||
| Email: faisal.ietf@gmail.com | Email: faisal.ietf@gmail.com | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [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.gandhi-spring-stamp-srpm] | [I-D.gandhi-spring-stamp-srpm] | |||
| Gandhi, R., Filsfils, C., Voyer, D., Chen, M., and B. | Gandhi, R., Filsfils, C., Voyer, D., Chen, M., and B. | |||
| Janssens, "Performance Measurement Using Simple TWAMP | Janssens, "Performance Measurement Using Simple TWAMP | |||
| (STAMP) for Segment Routing Networks", draft-gandhi- | (STAMP) for Segment Routing Networks", draft-gandhi- | |||
| spring-stamp-srpm-04 (work in progress), January 2021. | spring-stamp-srpm-04 (work in progress), January 2021. | |||
| [I-D.gandhi-spring-twamp-srpm] | [I-D.ietf-ippm-ioam-data] | |||
| Gandhi, R., Filsfils, C., Voyer, D., Chen, M., and B. | Brockners, F., Bhandari, S., and T. Mizrahi, "Data Fields | |||
| Janssens, "Performance Measurement Using TWAMP Light for | for In-situ OAM", draft-ietf-ippm-ioam-data-11 (work in | |||
| Segment Routing Networks", draft-gandhi-spring-twamp- | progress), November 2020. | |||
| srpm-11 (work in progress), October 2020. | ||||
| [I-D.ietf-spring-srv6-network-programming] | ||||
| Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., | ||||
| Matsushima, S., and Z. Li, "SRv6 Network Programming", | ||||
| draft-ietf-spring-srv6-network-programming-28 (work in | ||||
| progress), December 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-10 (work in | draft-matsushima-spring-srv6-deployment-status-10 (work in | |||
| progress), December 2020. | progress), December 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>. | |||
| [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | ||||
| DOI 10.17487/RFC2328, April 1998, | ||||
| <https://www.rfc-editor.org/info/rfc2328>. | ||||
| [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
| 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>. | |||
| skipping to change at page 22, line 15 ¶ | skipping to change at page 23, line 10 ¶ | |||
| [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | |||
| Decraene, B., Litkowski, S., and R. Shakir, "Segment | Decraene, B., Litkowski, S., and R. Shakir, "Segment | |||
| Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | |||
| July 2018, <https://www.rfc-editor.org/info/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>. | |||
| [RFC8571] Ginsberg, L., Ed., Previdi, S., Wu, Q., Tantsura, J., and | ||||
| C. Filsfils, "BGP - Link State (BGP-LS) Advertisement of | ||||
| IGP Traffic Engineering Performance Metric Extensions", | ||||
| RFC 8571, DOI 10.17487/RFC8571, March 2019, | ||||
| <https://www.rfc-editor.org/info/rfc8571>. | ||||
| [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, | ||||
| D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 | ||||
| (SRv6) Network Programming", RFC 8986, | ||||
| DOI 10.17487/RFC8986, February 2021, | ||||
| <https://www.rfc-editor.org/info/rfc8986>. | ||||
| 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. 103 change blocks. | ||||
| 292 lines changed or deleted | 323 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||