draft-ietf-6man-spring-srv6-oam-02.txt | draft-ietf-6man-spring-srv6-oam-03.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: May 23, 2020 S. Matsushima | Expires: June 20, 2020 S. Matsushima | |||
Softbank | Softbank | |||
D. Voyer | D. Voyer | |||
Bell Canada | Bell Canada | |||
M. Chen | M. Chen | |||
Huawei | Huawei | |||
November 20, 2019 | December 18, 2019 | |||
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-02 | draft-ietf-6man-spring-srv6-oam-03 | |||
Abstract | Abstract | |||
This document defines building blocks for Operations, Administration, | This document defines building blocks for Operations, Administration, | |||
and Maintenance (OAM) in Segment Routing Networks with IPv6 Dataplane | and Maintenance (OAM) in Segment Routing Networks with IPv6 Dataplane | |||
(SRv6). The document also describes some SRv6 OAM mechanisms. | (SRv6). The document also describes some SRv6 OAM mechanisms. | |||
Requirements Language | Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
skipping to change at page 1, line 45 ¶ | skipping to change at page 1, line 45 ¶ | |||
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 May 23, 2020. | This Internet-Draft will expire on June 20, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 30 ¶ | skipping to change at page 2, line 30 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | |||
2.1. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.2. Terminology and Reference Topology . . . . . . . . . . . 3 | 2.2. Terminology and Reference Topology . . . . . . . . . . . 3 | |||
3. OAM Building Blocks . . . . . . . . . . . . . . . . . . . . . 5 | 3. OAM Building Blocks . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1. O-flag in Segment Routing Header . . . . . . . . . . . . 5 | 3.1. O-flag in Segment Routing Header . . . . . . . . . . . . 5 | |||
3.1.1. O-flag Processing . . . . . . . . . . . . . . . . . . 6 | 3.1.1. O-flag Processing . . . . . . . . . . . . . . . . . . 6 | |||
3.2. OAM Segments . . . . . . . . . . . . . . . . . . . . . . 6 | 3.2. OAM Segments . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.3. End.OP: OAM Endpoint with Punt . . . . . . . . . . . . . 6 | 3.3. End.OP: OAM Endpoint with Punt . . . . . . . . . . . . . 7 | |||
3.4. End.OTP: OAM Endpoint with Timestamp and Punt . . . . . . 7 | 3.4. End.OTP: OAM Endpoint with Timestamp and Punt . . . . . . 7 | |||
3.5. SRH TLV . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. OAM Mechanisms . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4. OAM Mechanisms . . . . . . . . . . . . . . . . . . . . . . . 8 | ||||
4.1. Ping . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.1. Ping . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1.1. Classic Ping . . . . . . . . . . . . . . . . . . . . 8 | 4.1.1. Classic Ping . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1.2. Pinging a SID Function . . . . . . . . . . . . . . . 10 | 4.1.2. Pinging a SID . . . . . . . . . . . . . . . . . . . . 9 | |||
4.1.3. Error Reporting . . . . . . . . . . . . . . . . . . . 12 | 4.2. Traceroute . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.2. Traceroute . . . . . . . . . . . . . . . . . . . . . . . 13 | 4.2.1. Classic Traceroute . . . . . . . . . . . . . . . . . 11 | |||
4.2.1. Classic Traceroute . . . . . . . . . . . . . . . . . 13 | 4.2.2. Traceroute to a SID . . . . . . . . . . . . . . . . . 12 | |||
4.2.2. Traceroute to a SID Function . . . . . . . . . . . . 15 | 4.3. Monitoring of SRv6 Paths . . . . . . . . . . . . . . . . 15 | |||
4.3. Monitoring of SRv6 Paths . . . . . . . . . . . . . . . . 18 | 5. Implementation Status . . . . . . . . . . . . . . . . . . . . 16 | |||
5. Implementation Status . . . . . . . . . . . . . . . . . . . . 19 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 7.1. ICMPv6 type Numbers RegistrySEC . . . . . . . . . . . . . 16 | |||
7.1. ICMPv6 type Numbers RegistrySEC . . . . . . . . . . . . . 20 | 7.2. SRv6 OAM Endpoint Types . . . . . . . . . . . . . . . . . 16 | |||
7.2. SRv6 OAM Endpoint Types . . . . . . . . . . . . . . . . . 20 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 20 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 18 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 10.2. Informative References . . . . . . . . . . . . . . . . . 19 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 22 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
1. Introduction | 1. Introduction | |||
This document defines building blocks for Operations, Administration, | This document defines building blocks for Operations, Administration, | |||
and Maintenance (OAM) in Segment Routing Networks with IPv6 Dataplane | and Maintenance (OAM) in Segment Routing Networks with IPv6 Dataplane | |||
(SRv6). The document also describes some SRv6 OAM mechanisms. | (SRv6). The document also describes some SRv6 OAM mechanisms. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
2.1. Abbreviations | 2.1. Abbreviations | |||
skipping to change at page 3, line 29 ¶ | skipping to change at page 3, line 29 ¶ | |||
SL: Segment Left. | SL: Segment Left. | |||
SR: Segment Routing. | SR: Segment Routing. | |||
SRH: Segment Routing Header. | SRH: Segment Routing Header. | |||
SRv6: Segment Routing with IPv6 Data plane. | SRv6: Segment Routing with IPv6 Data plane. | |||
TC: Traffic Class. | TC: Traffic Class. | |||
ICMPv6: multi-part ICMPv6 messages [RFC4884]. | ICMPv6: ICMPv6 Specification [RFC4443]. | |||
2.2. Terminology and Reference Topology | 2.2. Terminology and Reference Topology | |||
This document uses the terminology defined in [I-D.ietf- spring-srv6- | This document uses the terminology defined in [I-D.ietf- spring-srv6- | |||
network-programming]. The readers are expected to be familiar with | network-programming]. The readers are expected to be familiar with | |||
the same. | the same. | |||
Throughout the document, the following simple topology is used for | Throughout the document, the following simple topology is used for | |||
illustration. | illustration. | |||
skipping to change at page 6, line 7 ¶ | skipping to change at page 6, line 7 ¶ | |||
O-flag: OAM flag. When set, it indicates that this packet is an | O-flag: OAM flag. When set, it indicates that this packet is an | |||
operations and management (OAM) packet. This document defines the | operations and management (OAM) packet. This document defines the | |||
usage of the O-flag in the SRH.Flags. | usage of the O-flag in the SRH.Flags. | |||
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. | |||
3.1.1. O-flag Processing | 3.1.1. O-flag Processing | |||
The SRH.Flags.O-flag implements the "punt a timestamped copy and | The SRH.Flags.O-flag implements the "punt a timestamped copy of the | |||
forward" behavior. | packet" behavior. This enables an SRv6 Endpoint node to send a | |||
timestamped copy of the packets marked with o-flag to a local OAM | ||||
process. To prevent multiple evaluations of the datagram, the OAM | ||||
process MUST NOT respond to any upper-layer header (like ICMP, UDP, | ||||
etc.) payload. However, the OAM process MAY export the time-stamped | ||||
copy of the packet to a controller using e.g., IPFIX [RFC7011]. To | ||||
avoid hitting any performance impact, the processing node SHOULD | ||||
rate-limit the number of packets punted to the OAM process. | ||||
Specification of the OAM process or the external controller | ||||
operations are beyond the scope of this document. | ||||
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. It is also | the O-flag, then upon reception it simply ignores it. | |||
possible that a node is capable of supporting the O-bit but based on | ||||
a local decision it MAY ignore it during processing on some local | ||||
SIDs. | ||||
If a node supports the O-flag, it can optionally advertise its | If a node supports the O-flag, it can optionally advertise its | |||
potential via node capability advertisement in IGP [I-D.ietf-isis- | potential via node capability advertisement in IGP [I-D.ietf-isis- | |||
srv6- extensions] and BGP-LS [I-D.ietf-idr-bgpls-srv6-ext]. | srv6- extensions] and BGP-LS [I-D.ietf-idr-bgpls-srv6-ext]. | |||
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 | |||
pseudo-code associated with the SID S, as defined in section 4.3.1.1 | line S01 of the the pseudo-code associated with the SID S, as defined | |||
of [I-D.ietf-6man-segment-routing-header], is modified as follows for | in section 4.3.1.1 of [I-D.ietf-6man-segment-routing-header], is | |||
the O-flag processing. | modified as follows for the O-flag processing. | |||
S01.1. IF SRH.Flags.O-flag is set and local configuration permits | S01.1. IF SRH.Flags.O-flag is set and local configuration permits | |||
O-flag processing THEN | O-flag processing THEN | |||
a. Make a copy of the packet. | a. Make a copy of the packet. | |||
b. Send the copied packet, along with an accurate timestamp | b. Send the copied packet, along with a timestamp | |||
to the OAM process. ;; Ref1, Ref2 | to the OAM process. ;; Ref1 | |||
Ref1: An implementation SHOULD copy and record the timestamp as soon as | Ref1: An implementation SHOULD copy and record the timestamp as soon as | |||
possible during packet processing. Timestamp is not carried in the packet | possible during packet processing. Timestamp is not carried in the packet | |||
forwarded to the next hop. | forwarded to the next hop. | |||
Ref2: An implementation SHOULD NOT generate ICMP error during | ||||
local SID S processing. If local SID S processing requires generation | ||||
of an ICMP error, the error is generated by the local OAM process. | ||||
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. | |||
3.2. OAM Segments | 3.2. OAM Segments | |||
OAM Segment IDs (SIDs) is another component of the SRv6 OAM building | The presence of an OAM SID in the Destination address of the IPv6 | |||
Blocks. This document defines a couple of OAM SIDs. | header instructs the segment endpoint implementing the OAM SID that | |||
the content of the packet is of interest to the node and to process | ||||
the upper-layer payload, accordingly. | ||||
3.3. End.OP: OAM Endpoint with Punt | 3.3. End.OP: OAM Endpoint with Punt | |||
Many scenarios require punting of SRv6 OAM packets at the desired | ||||
nodes in the network. The "OAM Endpoint with Punt" function (End.OP | ||||
for short) represents a particular OAM function to implement the punt | ||||
behavior for an OAM packet. It is described using the pseudocode as | ||||
follows: | ||||
When N receives a packet destined to S and S is a local End.OP SID, N | When N receives a packet destined to S and S is a local End.OP SID, N | |||
does: | does: | |||
1. Send the packet to the OAM process ;; Ref1 | S01. Send the packet to the OAM process | |||
Ref1: The local OAM process SHOULD NOT generate ICMP error during | ||||
local SID S processing. | ||||
Please note that in an SRH containing END.OP SID, it is RECOMMENDED | The local OAM process further processes the packet, this MAY involve | |||
to set the SRH.Flags.O-flag = 0. | processing protocol layers above IPv6. For example, ping and | |||
traceroute will require ICMP or UDP protocol processing. Once the | ||||
packet leaves the IPv6 layer the processing is considered host | ||||
processing and the upper layer protocols MUST be processed as such. | ||||
3.4. End.OTP: OAM Endpoint with Timestamp and Punt | 3.4. End.OTP: OAM Endpoint with Timestamp and Punt | |||
Scenarios demanding performance management of an SR policy/ path | ||||
requires hardware timestamping before hardware punts the packet to | ||||
the software for OAM processing. The "OAM Endpoint with Timestamp | ||||
and Punt" function (End.OTP for short) represents an OAM SID function | ||||
to implement the timestamp and punt behavior for an OAM packet. It | ||||
is described using the pseudocode as follows: | ||||
When N receives a packet destined to S and S is a local End.OTP SID, | When N receives a packet destined to S and S is a local End.OTP SID, | |||
N does: | N does: | |||
1. Timestamp the packet ;; Ref1 | S01.1. Timestamp the packet ;; Ref1 | |||
S01.2. Send the packet, along with a timestamp, to the | ||||
2. Send the packet, along with an accurate timestamp, to the | OAM process | |||
OAM process ;; Ref2 | ||||
Ref1: Timestamping SHOULD be done in hardware, as soon as possible | Ref1: Timestamping SHOULD be done in hardware, as soon as possible | |||
during the packet processing. | during the packet processing. | |||
Ref2: The local OAM process SHOULD NOT generate ICMP error during | ||||
local SID S processing. | ||||
Please note that in an SRH containing END.OTP SID, it is RECOMMENDED | The local OAM process further processes the packet, this MAY involve | |||
to set the SRH.Flags.O-flag = 0. | processing protocol layers above IPv6. For example, ping and | |||
traceroute will require ICMP or UDP protocol processing. Once the | ||||
3.5. SRH TLV | packet leaves the IPv6 layer the processing is considered host | |||
processing and the upper layer protocols MUST be processed as such. | ||||
[I-D.ietf-6man-segment-routing-header] defines TLVs of the Segment | ||||
Routing Header. | ||||
SRH TLV plays an important role in carrying OAM and Performance | ||||
Management (PM) metadata. | ||||
4. OAM Mechanisms | 4. OAM Mechanisms | |||
This section describes how OAM mechanisms can be implemented using | This section describes how OAM mechanisms can be implemented using | |||
the OAM building blocks described in the previous section. | the OAM building blocks described in the previous section. | |||
Additional OAM mechanisms will be added in a future revision of the | ||||
document. | ||||
[RFC4443] describes Internet Control Message Protocol for IPv6 | [RFC4443] describes Internet Control Message Protocol for IPv6 | |||
(ICMPv6) that is used by IPv6 devices for network diagnostic and | (ICMPv6) that is used by IPv6 devices for network diagnostic and | |||
error reporting purposes. As Segment Routing with IPv6 data plane | error reporting purposes. As Segment Routing with IPv6 data plane | |||
(SRv6) simply adds a new type of Routing Extension Header, existing | (SRv6) simply adds a new type of Routing Extension Header, existing | |||
ICMPv6 ping mechanisms can be used in an SRv6 network. This section | ICMPv6 ping mechanisms can be used in an SRv6 network. This section | |||
describes the applicability of ICMPv6 in the SRv6 network and how the | describes the applicability of ICMPv6 in the SRv6 network and how the | |||
existing ICMPv6 mechanisms can be used for providing OAM | existing ICMPv6 mechanisms can be used for providing OAM | |||
functionality. | functionality. | |||
The document does not propose any changes to the standard ICMPv6 | The document does not propose any changes to the standard ICMPv6 | |||
[RFC4443], [RFC4884] or standard ICMPv4 [RFC792]. | [RFC4443], [RFC4884] or standard ICMPv4 [RFC792]. | |||
4.1. Ping | 4.1. Ping | |||
There is no hardware or software change required for ping operation | ||||
at the classic IPv6 nodes in an SRv6 network. That includes the | ||||
classic IPv6 node with ingress, egress or transit roles. | ||||
Furthermore, no protocol changes are required to the standard ICMPv6 | ||||
[RFC4443], [RFC4884] or standard ICMPv4 [RFC792]. In other words, | ||||
existing ICMP ping mechanisms work seamlessly in the 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. | |||
4.1.1. Classic Ping | 4.1.1. Classic Ping | |||
The existing mechanism to ping a remote IP prefix, along the shortest | The existing mechanism to ping a remote IP prefix, along the shortest | |||
path, continues to work without any modification. The initiator may | path, continues to work without any modification. The initiator may | |||
be an SRv6 node or a classic IPv6 node. Similarly, the egress or | 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. | transit may be an SRv6 capable node or a classic IPv6 node. | |||
skipping to change at page 10, line 7 ¶ | skipping to change at page 9, line 20 ¶ | |||
processing. Specifically, it observes the END.X function | processing. Specifically, it observes the END.X function | |||
(B:4:C52) with PSP (Penultimate Segment POP) on the echo request | (B:4:C52) with PSP (Penultimate Segment POP) on the echo request | |||
packet and removes the SRH and forwards the packet across link10 | packet and removes the SRH and forwards the packet across link10 | |||
to N5. | to N5. | |||
o The echo request packet at N5 arrives as an IPv6 packet without an | o The echo request packet at N5 arrives as an IPv6 packet without an | |||
SRH. Node N5, which is a classic IPv6 node, performs the standard | SRH. Node N5, which is a classic IPv6 node, performs the standard | |||
IPv6/ ICMPv6 processing on the echo request and responds, | IPv6/ ICMPv6 processing on the echo request and responds, | |||
accordingly. | accordingly. | |||
4.1.2. Pinging a SID Function | 4.1.2. Pinging a SID | |||
The classic ping described in the previous section cannot be used to | The classic ping described in the previous section cannot be used to | |||
ping a remote SID function, as explained using an example in the | ping a remote SID function, as explained using an example in the | |||
following. | following. | |||
Consider the case where the user wants to ping the remote SID | Consider the case where the user wants to ping the remote SID | |||
function B:4:C52, via B:2:C31, from node N1. Node N1 constructs the | function B:4:C52 from node N1. Node N1 constructs the ping packet | |||
ping packet (A:1::, B:2:C31)(B:4:C52, B:2:C31, SL=1; | (A:1::, B:4:C52)(ICMPv6 Echo Request). The ping fails because the | |||
NH=ICMPv6)(ICMPv6 Echo Request). The ping fails because the node N4 | node N4 receives the ICMPv6 echo request with DA set to B:4:C52 but | |||
receives the ICMPv6 echo request with DA set to B:4:C52 but the next | the next header is ICMPv6, instead of SRH. | |||
header is ICMPv6, instead of SRH. To solve this problem, the | ||||
initiator needs to mark the ICMPv6 echo request as an OAM packet. | ||||
The OAM packets are identified either by setting the O-flag in SRH or | To perform ICMPv6 ping to a target SID an echo request message is | |||
by inserting the END.OP/ END.OTP SIDs at an appropriate place in the | generated by the initiator with the END.OP or END.OTP SID in the | |||
SRH. The following illustration uses END.OTP SID but the procedures | segment-list of the SRH immediately preceding the target SID. There | |||
are equally applicable to the END.OP SID. | MAY or MAY NOT be additional segments preceding the END.OP/ END.OTP | |||
SID. | ||||
In an SRv6 network, the user can exercise two flavors of the ping: | When the node instantiating a SID S of type END.OP or END.OTP | |||
end-to-end ping or segment-by-segment ping, as outlined in the | receives a packet with S in the destination address of the IPv6 | |||
following subsection. | header it sends it to the OAM process. The OAM process verifies the | |||
segment following S is a locally instantiated SID. It then processes | ||||
the Upper layer header of the packet, as a host, responding to the | ||||
echo request message in the ICMPv6 payload. | ||||
4.1.2.1. End-to-end ping using END.OP/ END.OTP | When the segment following S is not verified by the OAM process an | |||
ICMPv6 error message type 4 (parameter problem) code 0 (erroneous | ||||
header field encountered) with pointer set to the segment following S | ||||
(the target SID) is generated for the packet and the packet is | ||||
discarded. | ||||
The end-to-end ping illustration uses the END.OTP SID but the | An implementation of the OAM process SID verification SHOULD do the | |||
following: | ||||
o Verify that the SID is locally instantiated. | ||||
o Verify that the SID is instantiated in the data plane (this may | ||||
include verification of the SID in NPUs or forwarding hardware, as | ||||
applicable). | ||||
4.1.2.1. Ping using END.OP/ END.OTP | ||||
This section uses END.OTP SID for the ping illustration but the | ||||
procedures are equally applicable to the END.OP SID. | procedures are equally applicable to the END.OP SID. | |||
Consider the same example where the user wants to ping a remote SID | Consider the example where the user wants to ping a remote SID | |||
function B:4:C52, via B:2:C31, from node N1. To force a punt of the | function B:4:C52, via B:2:C31, from node N1. To force a punt of the | |||
ICMPv6 echo request at the node N4, node N1 inserts the END.OTP SID | ICMPv6 echo request at the node N4, node N1 inserts the END.OTP SID | |||
just before the target SID B:4:C52 in the SRH. The ICMPv6 echo | just before the target SID B:4:C52 in the SRH. The ICMPv6 echo | |||
request is processed at the individual nodes along the path as | 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 | |||
(A:1::, B:2:C31)(B:4:C52, B:4:OTP, B:2:C31; SL=2; | (A:1::, B:2:C31)(B:4:C52, B:4:OTP, B:2:C31; SL=2; | |||
NH=ICMPv6)(ICMPv6 Echo Request). | NH=ICMPv6)(ICMPv6 Echo Request). | |||
skipping to change at page 11, line 11 ¶ | skipping to change at page 10, line 40 ¶ | |||
o Node N3 receives the packet as follows (A:1::, B:4:OTP)(B:4:C52, | o Node N3 receives the packet as follows (A:1::, B:4:OTP)(B:4:C52, | |||
B:4:OTP, B:2:C31 ; SL=1; NH=ICMPv6)(ICMPv6 Echo Request). Node | B:4:OTP, B:2:C31 ; SL=1; NH=ICMPv6)(ICMPv6 Echo Request). Node | |||
N3, which is a classic IPv6 node, performs the standard IPv6 | 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 B:4:OTP in the IPv6 header. | DA B:4:OTP in the IPv6 header. | |||
o When node N4 receives the packet (A:1::, B:4:OTP)(B:4:C52, | o When node N4 receives the packet (A:1::, B:4:OTP)(B:4:C52, | |||
B:4:OTP, B:2:C31 ; SL=1; NH=ICMPv6)(ICMPv6 Echo Request), it | B:4:OTP, B:2:C31 ; SL=1; NH=ICMPv6)(ICMPv6 Echo Request), it | |||
processes the END.OTP SID, as described in the pseudocode in | processes the END.OTP SID, as described in the pseudocode in | |||
Section 3. The packet gets time-stamped and punted to the ICMPv6 | Section 3. The packet gets time-stamped and punted to the OAM | |||
process for processing. The ICMPv6 process checks if the next SID | process for processing. The OAM process checks if the next SID in | |||
in SRH (the target SID B:4:C52) is locally programmed. | SRH (the target SID B:4:C52) is locally programmed. | |||
o If the target SID is not locally programmed, N4 responses with the | ||||
ICMPv6 message (Type: "SRv6 OAM (TBA)", Code: "SID not locally | ||||
implemented (TBA)"); otherwise a success is returned. | ||||
4.1.2.2. Segment-by-segment ping using O-flag (Proof of Transit) | ||||
Consider the same example where the user wants to ping a remote SID | ||||
function B:4:C52, via B:2:C31, from node N1. However, in this ping, | ||||
the node N1 wants to get a response from each segment node in the SRH | ||||
as a "proof of transit". In other words, in the segment-by-segment | ||||
ping case, the node N1 expects a response from node N2 and node N4 | ||||
for their respective local SID function. When a response to O-bit is | ||||
desired from the last SID in a SID-list, it is the responsibility of | ||||
the ingress node to use USP as the last SID. E.g., in this example, | ||||
the target SID B:4:C52 is a USP SID. | ||||
To force a punt of the ICMPv6 echo request at node N2 and node N4, | ||||
node N1 sets the O-flag in SRH. The ICMPv6 echo request is processed | ||||
at the individual nodes along the path as follows: | ||||
o Node N1 initiates an ICMPv6 ping packet with SRH as follows | ||||
(A:1::, B:2:C31)(B:4:C52, B:2:C31; SL=1, Flags.O=1; | ||||
NH=ICMPv6)(ICMPv6 Echo Request). | ||||
o When node N2 receives the packet (A:1::, B:2:C31)(B:4:C52, | ||||
B:2:C31; SL=1, Flags.O=1; NH=ICMPv6)(ICMPv6 Echo Request) packet, | ||||
it processes the O-flag in SRH, as described in the pseudocode in | ||||
Section 3. A time-stamped copy of the packet gets punted to the | ||||
ICMPv6 process for processing. Node N2 continues to apply the | ||||
B:2:C31 SID function on the original packet and forwards it, | ||||
accordingly. As B:4:C52 is a USP SID, N2 does not remove the SRH. | ||||
The ICMPv6 process at node N2 checks if its local SID (B:2:C31) is | ||||
locally programmed or not and responds to the ICMPv6 Echo Request. | ||||
o If the target SID is not locally programmed, N4 responses with the | ||||
ICMPv6 message (Type: "SRv6 OAM (TBA)", Code: "SID not locally | ||||
implemented (TBA)"); otherwise a success is returned. Please note | ||||
that, as mentioned in Section 3, if node N2 does not support the | ||||
O-flag, it simply ignores it and process the local SID, B:2:C31. | ||||
o Node N3, which is a classic IPv6 node, performs the standard IPv6 | ||||
processing. Specifically, it forwards the echo request based on | ||||
DA B:4:C52 in the IPv6 header. | ||||
o When node N4 receives the packet (A:1::, B:4:C52)(B:4:C52, | ||||
B:2:C31; SL=0, Flags.O=1; NH=ICMPv6)(ICMPv6 Echo Request), it | ||||
processes the O-flag in SRH, as described in the pseudocode in | ||||
Section 3. A time-stamped copy of the packet gets punted to the | ||||
ICMPv6 process for processing. The ICMPv6 process at node N4 | ||||
checks if its local SID (B:4:C52) is locally programmed or not and | ||||
responds to the ICMPv6 Echo Request. | ||||
o If the target SID is not locally programmed, N4 responses with the | ||||
ICMPv6 message (Type: "SRv6 OAM (TBA)", Code: "SID not locally | ||||
implemented (TBA)"); otherwise a success is returned. | ||||
Support for O-flag is part of node capability advertisement. That | ||||
enables node N1 to know which segment nodes are capable of responding | ||||
to the ICMPv6 echo request. Node N1 processes the echo responses and | ||||
presents data to the user, accordingly. | ||||
Please note that segment-by-segment ping can be used to address proof | ||||
of transit use-case. | ||||
4.1.3. Error Reporting | ||||
Any IPv6 node can use ICMPv6 control messages to report packet | ||||
processing errors to the host that originated the datagram packet. | ||||
To name a few such scenarios: | ||||
o If the router receives an undeliverable IP datagram, or | ||||
o If the router receives a packet with a Hop Limit of zero, or | ||||
o If the router receives a packet such that if the router decrements | ||||
the packet's Hop Limit it becomes zero, or | ||||
o If the router receives a packet with problem with a field in the | ||||
IPv6 header or the extension headers such that it cannot complete | ||||
processing the packet, or | ||||
o If the router cannot forward a packet because the packet is larger | o If the next SID is not locally programmed, the OAM process returns | |||
than the MTU of the outgoing link. | an ICMPv6 error message type 4 (parameter problem) code 0 | |||
(erroneous header field encountered) with pointer set to the | ||||
target SID B:4:C52 and the packet is discarded. | ||||
In the scenarios listed above, the ICMPv6 response also contains the | o If the next SID is locally programmed, the node processes the | |||
IP header, IP extension headers and leading payload octets of the | upper layer header. As part of the upper layer header (ICMPv6) | |||
"original datagram" to which the ICMPv6 message is a response. | processing node N4 sends the ICMPv6 Echo Reply message [RFC4443]. | |||
Specifically, the "Destination Unreachable Message", "Time Exceeded | ||||
Message", "Packet Too Big Message" and "Parameter Problem Message" | ||||
ICMPV6 messages can contain as much of the invoking packet as | ||||
possible without the ICMPv6 packet exceeding the minimum IPv6 MTU | ||||
[RFC4443], [RFC4884]. In an SRv6 network, the copy of the invoking | ||||
packet contains the SR header. The packet originator can use this | ||||
information for diagnostic purposes. For example, traceroute can use | ||||
this information as detailed in the following subsection. | ||||
4.2. Traceroute | 4.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 | |||
mechanisms work seamlessly in the SRv6 networks. | mechanisms work seamlessly in the SRv6 networks. | |||
skipping to change at page 14, line 7 ¶ | skipping to change at page 11, line 36 ¶ | |||
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 <B:2:C31, | from node N1 to a loopback of node 5, via segment list <B:2:C31, | |||
B:4:C52>. Figure 3 contains sample output for the traceroute | B:4:C52>. Figure 3 contains sample output for the traceroute | |||
request. | request. | |||
> traceroute A:5:: via segment-list B:2:C31, B:4:C52 | > traceroute A:5:: via segment-list B:2:C31, B:4:C52 | |||
Tracing the route to B5:: | Tracing the route to 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 | |||
SRH: (A:5::, B:4:C52, B:2:C31, SL=2) | SRH: (A:5::, B:4:C52, 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 | |||
SRH: (A:5::, B:4:C52, B:2:C31, SL=1) | SRH: (A:5::, B:4:C52, 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 | |||
SRH: (A:5::, B:4:C52, B:2:C31, SL=1) | SRH: (A:5::, B:4:C52, 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 | |||
Figure 3 A sample traceroute output at an SRv6 capable node | Figure 3 A sample traceroute output at an SRv6 capable node | |||
skipping to change at page 15, line 9 ¶ | skipping to change at page 12, line 39 ¶ | |||
useful. This information can also be used to verify if SID functions | useful. This information can also be used to verify if SID functions | |||
B:2:C31 and B:4:C52 are executed correctly by N2 and N4, | B:2:C31 and B:4:C52 are executed correctly by N2 and N4, | |||
respectively. Specifically, the information displayed for hop2 | respectively. Specifically, the information displayed for hop2 | |||
contains the incoming interface address 2001:DB8:2:3:31:: at N3. | 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 function | |||
B:2:C31 (link3). Similarly, the information displayed for hop5 | B:2:C31 (link3). Similarly, the information displayed for hop5 | |||
contains the incoming interface address 2001:DB8:4:5::52:: at N5. | contains the incoming interface address 2001:DB8:4:5::52:: at N5. | |||
This matches with the expected interface bound to the END.X function | This matches with the expected interface bound to the END.X function | |||
B:4:C52 (link10). | B:4:C52 (link10). | |||
4.2.2. Traceroute to a SID Function | 4.2.2. Traceroute to a SID | |||
The classic traceroute described in the previous section cannot be | The classic traceroute described in the previous section cannot be | |||
used to traceroute a remote SID function, as explained using an | used to traceroute a remote SID function, as explained using an | |||
example in the following. | example in the following. | |||
Consider the case where the user wants to traceroute the remote SID | Consider the case where the user wants to traceroute the remote SID | |||
function B:4:C52, via B:2:C31, from node N1. The trace route fails | function B:4:C52 from node N1. The trace route fails at N4. This is | |||
at N4. This is because the node N4 trace route probe where next | because the node N4 receives a trace route probe where next header is | |||
header is UDP or ICMPv6, instead of SRH (even though the hop limit is | UDP or ICMPv6, instead of SRH (even though the hop limit is set to | |||
set to 1). To solve this problem, the initiator needs to mark the | 1). | |||
ICMPv6 echo request as an OAM packet. | ||||
The OAM packets are identified either by setting the O-flag in SRH or | To traceroute a target SID a probe message is generated by the | |||
by inserting the END.OP or END.OTP SID at an appropriate place in the | initiator with the END.OP or END.OTP SID in the segment-list of the | |||
SRH. | SRH immediately preceding the target SID. There MAY or MAY NOT be | |||
additional segments preceding the END.OP/ END.OTP SID. | ||||
In an SRv6 network, the user can exercise two flavors of the | The node instantiating a SID S of type END.OP or END.OTP receives a | |||
traceroute: hop-by-hop traceroute or overlay traceroute. | packet with S in the destination address of the IPv6 header and sends | |||
it to the OAM process (before processing the TTL). The OAM process | ||||
verifies the segment following S is a locally instantiated SID. It | ||||
then processes the Upper layer header of the packet, as a host, | ||||
responding to the probe message. | ||||
o In hop-by-hop traceroute, user gets responses from all nodes | When the segment following S is not verified by the OAM process an | |||
including classic IPv6 transit nodes, SRv6 capable transit nodes | ICMPv6 error message type 4 (parameter problem) code 0 (erroneous | |||
as well as SRv6 capable segment endpoints. E.g., consider the | header field encountered) with pointer set to the segment following S | |||
example where the user wants to traceroute to a remote SID | (the target SID) is generated for the packet and the packet is | |||
function B:4:C52, via B:2:C31, from node N1. The traceroute | discarded. | |||
output will also display information about node3, which is a | ||||
transit (underlay) node. | ||||
o The overlay traceroute, on the other hand, does not trace the | An implementation of the OAM process SID verification SHOULD do the | |||
underlay nodes. In other words, the overlay traceroute only | following: | |||
displays the nodes that acts as SRv6 segments along the route. | ||||
I.e., in the example where the user wants to traceroute to a | ||||
remote SID function B:4:C52, via B:2:C31, from node N1, the | ||||
overlay traceroute would only display the traceroute information | ||||
from node N2 and node N4; it will not display information from | ||||
node 3. | ||||
4.2.2.1. Hop-by-hop traceroute using END.OP/ END.OTP | o Verify that the SID is locally instantiated. | |||
o Verify that the SID is instantiated in the data plane (this may | ||||
include verification of the SID in NPUs or forwarding hardware, as | ||||
applicable). | ||||
4.2.2.1. Traceroute using END.OP/ END.OTP | ||||
In this section, hop-by-hop traceroute to a SID function is | In this section, hop-by-hop traceroute to a SID function is | |||
exemplified using UDP probes. However, the procedure is equally | exemplified using UDP probes. However, the procedure is equally | |||
applicable to other implementation of traceroute mechanism. | applicable to other implementation of traceroute mechanism. | |||
Furthermore, the illustration uses the END.OTP SID but the procedures | Furthermore, the illustration uses the END.OTP SID but the procedures | |||
are equally applicable to the END.OP SID. | are equally applicable to the END.OP SID. | |||
Consider the same example where the user wants to traceroute to a | Consider the same example where the user wants to traceroute to a | |||
remote SID function B:4:C52, via B:2:C31, from node N1. To force a | remote SID function B:4:C52, via B:2:C31, from node N1. To force a | |||
punt of the traceroute probe only at the node N4, node N1 inserts the | punt of the traceroute probe only at the node N4, node N1 inserts the | |||
END.OTP SID just before the target SID B:4:C52 in the SRH. The | END.OTP SID just before the target SID B:4:C52 in the SRH. The | |||
traceroute probe is processed at the individual nodes along the path | traceroute probe is processed at the individual nodes along the path | |||
as follows: | as follows: | |||
skipping to change at page 16, line 44 ¶ | skipping to change at page 14, line 29 ¶ | |||
Transit"). | 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 B:4:OTP | Specifically, it forwards the traceroute probe based on DA B:4:OTP | |||
in the IPv6 header. | in the IPv6 header. | |||
o When node N4 receives the packet (A:1::, B:4:OTP)(B:4:C52, | o When node N4 receives the packet (A:1::, B:4:OTP)(B:4:C52, | |||
B:4:OTP, B:2:C31 ; SL=1; HC=1, NH=UDP)(Traceroute probe), it | B:4:OTP, B:2:C31 ; SL=1; HC=1, NH=UDP)(Traceroute probe), it | |||
processes the END.OTP SID, as described in the pseudocode in | processes the END.OTP SID, as described in the pseudocode in | |||
Section 3. The packet gets timestamped and punted to the | Section 3. Before hop-limit processing, the packet gets | |||
traceroute process for processing. The traceroute process checks | timestamped and punted to the OAM process for processing. The OAM | |||
if the next SID in SRH (the target SID B:4:C52) is locally | process checks if the next SID in SRH (the target SID B:4:C52) is | |||
programmed. | locally programmed. | |||
o If the target SID B:4:C52 is locally programmed, node N4 responses | o If the next SID is not locally programmed, the OAM process returns | |||
with the ICMPv6 message (Type: Destination unreachable, Code: Port | an ICMPv6 error message type 4 (parameter problem) code 0 | |||
Unreachable). If the target SID B:4:C52 is not a local SID, node | (erroneous header field encountered) with pointer set to the | |||
N4 silently drops the traceroute probe. | target SID B:4:C52 and the packet is discarded. | |||
o If the next SID is locally programmed, the node processes the | ||||
upper layer header. As part of the upper layer header processing | ||||
node N4 responses with the ICMPv6 message (Type: 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 srv6 B:4:C52 via segment-list B:2:C31 | > traceroute srv6 B:4:C52 via segment-list B:2:C31 | |||
Tracing the route to SID function B:4:C52 | Tracing the route to SID function 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 | |||
SRH: (B:4:C52, B:4:OTP, B:2:C31; SL=2) | SRH: (B:4:C52, B:4:OTP, 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 | |||
SRH: (B:4:C52, B:4:OTP, B:2:C31; SL=1) | SRH: (B:4:C52, B:4:OTP, 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 | |||
SRH: (B:4:C52, B:4:OTP, B:2:C31; SL=1) | SRH: (B:4:C52, B:4:OTP, B:2:C31; SL=1) | |||
Figure 4 A sample output for hop-by-hop traceroute to a SID function | Figure 4 A sample output for hop-by-hop traceroute to a SID function | |||
4.2.2.2. Tracing SRv6 Overlay | ||||
The overlay traceroute does not trace the underlay nodes, i.e., only | ||||
displays the nodes that acts as SRv6 segments along the path. This | ||||
is achieved by setting the SRH.Flags.O bit. | ||||
In this section, overlay traceroute to a SID function is exemplified | ||||
using UDP probes. However, the procedure is equally applicable to | ||||
other implementation of traceroute mechanism. | ||||
Consider the same example where the user wants to traceroute to a | ||||
remote SID function B:4:C52, via B:2:C31, from node N1. | ||||
o Node N1 initiates a traceroute probe with SRH as follows (A:1::, | ||||
B:2:C31)(B:4:C52, B:2:C31; HC=64, SL=1, Flags.O=1; | ||||
NH=UDP)(Traceroute Probe). Please note that the hop-count is set | ||||
to 64 to skip the underlay nodes from tracing. The O-flag in SRH | ||||
is set to make the overlay nodes (nodes processing the SRH) | ||||
respond. | ||||
o When node N2 receives the packet (A:1::, B:2:C31)(B:4:C52, | ||||
B:2:C31; SL=1, HC=64, Flags.O=1; NH=UDP)(Traceroute Probe), it | ||||
processes the O-flag in SRH, as described in the pseudocode in | ||||
Section 3. A time-stamped copy of the packet gets punted to the | ||||
traceroute process for processing. Node N2 continues to apply the | ||||
B:2:C31 SID function on the original packet and forwards it, | ||||
accordingly. The traceroute process at node N2 checks if its | ||||
local SID (B:2:C31) is locally programmed. If the SID is not | ||||
locally programmed, it silently drops the packet. Otherwise, it | ||||
performs the egress check by looking at the SL value in SRH. | ||||
o As SL is not equal to zero (i.e., it's not egress node), node N2 | ||||
responses with the ICMPv6 message (Type: "SRv6 OAM (TBA)", Code: | ||||
"O-flag punt at Transit (TBA)"). Please note that, as mentioned | ||||
in Section 3, if node N2 does not support the O-flag, it simply | ||||
ignores it and processes the local SID, B:2:C31. | ||||
o When node N3 receives the packet (A:1::, B:4:C52)(B:4:C52, | ||||
B:2:C31; SL=0, HC=63, Flags.O=1; NH=UDP)(Traceroute Probe), | ||||
performs the standard IPv6 processing. Specifically, it forwards | ||||
the traceroute probe based on DA B:4:C52 in the IPv6 header. | ||||
Please note that there is no hop-count expiration at the transit | ||||
nodes. | ||||
o When node N4 receives the packet (A:1::, B:4:C52)(B:4:C52, | ||||
B:2:C31; SL=0, HC=62, Flags.O=1; NH=UDP)(Traceroute Probe), it | ||||
processes the O-flag in SRH, as described in the pseudocode in | ||||
Section 3. A time-stamped copy of the packet gets punted to the | ||||
traceroute process for processing. The traceroute process at node | ||||
N4 checks if its local SID (B:2:C31) is locally programmed. | ||||
o If the SID is not locally programmed, it silently drops the | ||||
packet. Otherwise, it performs the egress check by looking at the | ||||
SL value in SRH. As SL is equal to zero (i.e., N4 is the egress | ||||
node), node N4 tries to consume the UDP probe. As UDP probe is | ||||
set to access an invalid port, the node N4 responses with the | ||||
ICMPv6 message (Type: Destination unreachable, Code: Port | ||||
Unreachable) | ||||
Figure 5 displays a sample overlay traceroute output for this | ||||
example. Please note that the underlay node N3 does not appear in | ||||
the output. | ||||
Tracing the route to SID function B:4:C52 | ||||
1 2001:DB8:1:2:21:: 0.512 msec 0.425 msec 0.374 msec | ||||
SRH: (B:4:C52, B:4:OTP, B:2:C31; SL=1) | ||||
2 2001:DB8:3:4::41:: 0.921 msec 0.816 msec 0.759 msec | ||||
SRH: (B:4:C52, B:4:OTP, B:2:C31; SL=0) | ||||
Figure 5 A sample output for overlay traceroute to a SID function | ||||
4.3. Monitoring of SRv6 Paths | 4.3. Monitoring of SRv6 Paths | |||
In the recent past, network operators are interested in performing | In the recent past, network operators are interested in performing | |||
network OAM functions in a centralized manner. Various data models | network OAM functions in a centralized manner. Various data models | |||
like YANG are available to collect data from the network and manage | like YANG are available to collect data from the network and manage | |||
it from a centralized entity. | it from a centralized entity. | |||
SR technology enables a centralized OAM entity to perform path | SR technology enables a centralized OAM entity to perform path | |||
monitoring from centralized OAM entity without control plane | monitoring from centralized OAM entity without control plane | |||
intervention on monitored nodes. [RFC 8403] describes such a | intervention on monitored nodes. [RFC 8403] describes such a | |||
skipping to change at page 22, line 25 ¶ | skipping to change at page 18, line 39 ¶ | |||
[I-D.ietf-6man-segment-routing-header] | [I-D.ietf-6man-segment-routing-header] | |||
Filsfils, C., Dukes, D., Previdi, S., Leddy, J., | Filsfils, C., Dukes, D., Previdi, S., Leddy, J., | |||
Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
(SRH)", draft-ietf-6man-segment-routing-header-26 (work in | (SRH)", draft-ietf-6man-segment-routing-header-26 (work in | |||
progress), October 2019. | progress), October 2019. | |||
[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-05 (work in | draft-ietf-spring-srv6-network-programming-06 (work in | |||
progress), October 2019. | progress), December 2019. | |||
[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>. | |||
10.2. Informative References | 10.2. Informative References | |||
[I-D.matsushima-spring-srv6-deployment-status] | [I-D.matsushima-spring-srv6-deployment-status] | |||
Matsushima, S., Filsfils, C., Ali, Z., and Z. Li, "SRv6 | Matsushima, S., Filsfils, C., Ali, Z., and Z. Li, "SRv6 | |||
Implementation and Deployment Status", draft-matsushima- | Implementation and Deployment Status", draft-matsushima- | |||
spring-srv6-deployment-status-02 (work in progress), | spring-srv6-deployment-status-04 (work in progress), | |||
October 2019. | December 2019. | |||
[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>. | |||
[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>. | |||
End of changes. 47 change blocks. | ||||
312 lines changed or deleted | 149 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/ |