idnits 2.17.00 (12 Aug 2021) /tmp/idnits21281/draft-xiao-6man-icmpv6-ioam-conf-state-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- (Using the creation date from RFC4884, updated by this document, for RFC5378 checks: 2005-09-19) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (25 April 2022) is 19 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 0 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 6MAN Working Group X. Min 3 Internet-Draft ZTE Corp. 4 Updates: 4884 (if approved) G. Mirsky 5 Intended status: Standards Track Ericsson 6 Expires: 27 October 2022 25 April 2022 8 ICMPv6 Echo Request/Reply for Enabled In-situ OAM Capabilities 9 draft-xiao-6man-icmpv6-ioam-conf-state-01 11 Abstract 13 This document describes the ICMPv6 IOAM Echo functionality, which 14 uses the ICMPv6 IOAM Echo Request/Reply messages, allowing the IOAM 15 encapsulating node to discover the enabled IOAM capabilities of each 16 IOAM transit and decapsulating node. 18 This document updates RFC 4884. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on 27 October 2022. 37 Copyright Notice 39 Copyright (c) 2022 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 44 license-info) in effect on the date of publication of this document. 45 Please review these documents carefully, as they describe your rights 46 and restrictions with respect to this document. Code Components 47 extracted from this document must include Revised BSD License text as 48 described in Section 4.e of the Trust Legal Provisions and are 49 provided without warranty as described in the Revised BSD License. 51 Table of Contents 53 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 54 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 55 3. ICMPv6 IOAM Echo Request . . . . . . . . . . . . . . . . . . 3 56 4. ICMPv6 IOAM Echo Reply . . . . . . . . . . . . . . . . . . . 5 57 4.1. IOAM Capabilities Objects . . . . . . . . . . . . . . . . 6 58 4.2. Examples of IOAM Echo Reply . . . . . . . . . . . . . . . 7 59 5. ICMPv6 Message Processing . . . . . . . . . . . . . . . . . . 10 60 5.1. Code Field Processing . . . . . . . . . . . . . . . . . . 11 61 6. Updates to RFC 4884 . . . . . . . . . . . . . . . . . . . . . 12 62 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 63 8. Security Considerations . . . . . . . . . . . . . . . . . . . 14 64 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 65 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 66 10.1. Normative References . . . . . . . . . . . . . . . . . . 15 67 10.2. Informative References . . . . . . . . . . . . . . . . . 16 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 70 1. Introduction 72 IPv6 encapsulation for In-situ OAM (IOAM) data is defined in 73 [I-D.ietf-ippm-ioam-ipv6-options], which uses IPv6 hop-by-hop options 74 and destination option to carry IOAM data. 76 As specified in [I-D.ietf-ippm-ioam-conf-state], echo request/reply 77 can be used for the IOAM encapsulating node to discover the enabled 78 IOAM capabilities at IOAM transit and decapsulating nodes. 80 As specified in [RFC4443], the Internet Control Message Protocol for 81 IPv6 (ICMPv6) is an integral part of IPv6, and the base protocol MUST 82 be fully implemented by every IPv6 node. ICMPv6 messages include 83 error messages and informational messages, and the latter are 84 referred to as ICMPv6 Echo Request/Reply messages. [RFC4884] defines 85 ICMPv6 Extension Structure by which multi-part ICMPv6 error messages 86 are supported. [RFC8335] defines ICMPv6 Extended Echo Request/Reply 87 messages, and the ICMPv6 Extended Echo Request contains an ICMPv6 88 Extension Structure customized for this message. Both [RFC4884] and 89 [RFC8335] provide sound principles and examples on how to extend 90 ICMPv6 error messages and echo request/reply messages. 92 This document describes the ICMPv6 IOAM Echo functionality, which 93 uses the ICMPv6 IOAM Echo Request/Reply messages, allowing the IOAM 94 encapsulating node to discover the enabled IOAM capabilities of each 95 IOAM transit and decapsulating node. 97 The IOAM encapsulating node sends an ICMPv6 IOAM Echo Request message 98 to each IOAM transit and decapsulating node, then each receiving node 99 executes access control procedures, and if access is granted, each 100 receiving node returns an ICMPv6 IOAM Echo Reply message which 101 indicates the enabled IOAM capabilities of the receiving node. The 102 ICMPv6 IOAM Echo Reply message contains an ICMPv6 Extension Structure 103 exactly customized to this message, and the ICMPv6 Extension 104 Structure contains one or more IOAM Capabilities Objects. 106 Note that before the IOAM encapsulating node sends the ICMPv6 IOAM 107 Echo Request messages, it needs to know the IPv6 address of each node 108 along the transport path of a data packet to which IOAM data would be 109 added. That can be achieved by executing ICMPv6 traceroute or 110 provisioning explicit path at the IOAM encapsulating node. 112 2. Conventions Used in This Document 114 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 115 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 116 "OPTIONAL" in this document are to be interpreted as described in BCP 117 14 [RFC2119] [RFC8174] when, and only when, they appear in all 118 capitals, as shown here. 120 3. ICMPv6 IOAM Echo Request 122 The ICMPv6 IOAM Echo Request message is encapsulated in an IPv6 123 header [RFC8200], like any ICMPv6 message. 125 The ICMPv6 IOAM Echo Request message has the following format: 127 0 1 2 3 128 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 129 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 130 | Type | Code | Checksum | 131 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 132 | Identifier |Sequence Number| Num of NS-IDs | 133 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 134 . IOAM Capabilities Query Container Payload . 135 . as specified in . 136 . Section 3.1 of draft-ietf-ippm-ioam-conf-state . 137 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 139 Figure 1: ICMPv6 IOAM Echo Request Message 141 IPv6 Header fields: 143 * Source Address: The Source Address identifies the IOAM 144 encapsulating node. It MUST be a valid IPv6 unicast address. 146 * Destination Address: The Destination Address identifies the IOAM 147 transit or decapsulating node. It MUST be a valid IPv6 unicast 148 address. 150 ICMPv6 fields: 152 * Type: IOAM Echo Request. The value is TBD1. 154 * Code: MUST be set to 0 and MUST be ignored upon receipt. 156 * Checksum: The same as defined in [RFC4443]. 158 * Identifier: An Identifier aids in matching IOAM Echo Replies to 159 IOAM Echo Requests. It may be zeroed. 161 * Sequence Number: A Sequence Number to aid in matching IOAM Echo 162 Replies to IOAM Echo Requests. It may be zeroed. 164 * Num of NS-IDs: Number of Namespace-IDs within the payload. 166 * Following the IOAM Echo Request header, it's a List of Namespace- 167 IDs, which is also called IOAM Capabilities Query Container 168 Payload in Section 3.1 of [I-D.ietf-ippm-ioam-conf-state]. If the 169 payload would not otherwise terminate on a 4-octet boundary, it 170 MUST be padded with zeroes. 172 4. ICMPv6 IOAM Echo Reply 174 The ICMPv6 IOAM Echo Reply message is encapsulated in an IPv6 header 175 [RFC8200], like any ICMPv6 message. 177 The ICMPv6 IOAM Echo Reply message has the following format: 179 0 1 2 3 180 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 181 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 182 | Type | Code | Checksum | 183 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 184 | Identifier |Sequence Number| Num of NS-IDs | 185 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 186 . IOAM Capabilities Response Container Payload . 187 . as specified in . 188 . Section 3.2 of draft-ietf-ippm-ioam-conf-state . 189 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 191 Figure 2: ICMPv6 IOAM Echo Reply Message 193 IPv6 Header fields: 195 * Source Address: Copied from the Destination Address field of the 196 invoking IOAM Echo Request packet. 198 * Destination Address: Copied from the Source Address field of the 199 invoking IOAM Echo Request packet. 201 ICMPv6 fields: 203 * Type: IOAM Echo Reply. The value is TBD2. 205 * Code: Values are (0) No Error, (1) Malformed Query, (2) No Matched 206 Namespace-ID, and (3) Exceed the minimum IPv6 MTU. 208 * Checksum: The same as defined in [RFC4443]. 210 * Identifier: Copied from the Identifier field of the invoking IOAM 211 Echo Request message. 213 * Sequence Number: Copied from the Sequence Number field of the 214 invoking IOAM Echo Request message. 216 * Num of NS-IDs: Number of different Namespace-IDs within the 217 payload, its value MUST be no more than the Num of NS-IDs field of 218 the invoking IOAM Echo Request message. 220 * Following the IOAM Echo Reply header, it's a List of IOAM 221 Capabilities Objects, which is also called IOAM Capabilities 222 Response Container Payload in Section 3.2 of 223 [I-D.ietf-ippm-ioam-conf-state]. 225 * Section 7 of [RFC4884] defines the ICMP Extension Structure. As 226 per RFC 4884, the Extension Structure contains exactly one 227 Extension Header followed by one or more objects. When applied to 228 the ICMPv6 IOAM Echo Reply message, the ICMP Extension Structure 229 MUST contain one or more IOAM Capabilities Objects. 231 4.1. IOAM Capabilities Objects 233 All ICMPv6 IOAM Capabilities Objects are encapsulated in an ICMPv6 234 IOAM Echo Reply message. 236 Each ICMPv6 IOAM Capabilities Object has the following format: 238 0 1 2 3 239 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 240 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 241 | Length | Class-Num | C-Type | 242 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 243 . IOAM Capabilities Object Payload . 244 . as specified in . 245 . Section 3.2.x of draft-ietf-ippm-ioam-conf-state . 246 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 248 Figure 3: IOAM Capabilities Object 250 Object fields: 252 * Class-Num: IOAM Capabilities Objects. The values are listed as 253 the following: 255 Value Object Name 256 ----- ----------- 257 TBD3 IOAM Tracing Capabilities Object 258 TBD4 IOAM Proof-of-Transit Capabilities Object 259 TBD5 IOAM Edge-to-Edge Capabilities Object 260 TBD6 IOAM DEX Capabilities Object 261 TBD7 IOAM End-of-Domain Object 263 * C-Type: Values are listed as the following: 265 Class-Num C-Type C-Type Name 266 --------- ------ ----------- 267 TBD3 0 Reserved 268 1 Pre-allocated Tracing 269 2 Incremental Tracing 270 TBD4 0 Reserved 271 TBD5 0 Reserved 272 TBD6 0 Reserved 273 TBD7 0 Reserved 275 * Length: Length of the object, measured in octets, including the 276 Object Header and Object Payload. 278 * Following the IOAM Capabilities Object Header, it's the IOAM 279 Capabilities Object Payload, which is defined respectively in 280 Section 3.2.1, Section 3.2.2, Section 3.2.3, Section 3.2.4, 281 Section 3.2.5 and Section 3.2.6 of 282 [I-D.ietf-ippm-ioam-conf-state]. 284 4.2. Examples of IOAM Echo Reply 286 The format of ICMPv6 IOAM Echo Reply can vary from deployment to 287 deployment. 289 In a deployment where only the default Namespace-ID is used, the IOAM 290 Pre-allocated Tracing Capabilities and IOAM Proof-of-Transit 291 Capabilities are enabled at the IOAM transit node that received 292 ICMPv6 IOAM Echo Request message, the ICMPv6 IOAM Echo Reply message 293 is depicted as the following: 295 0 1 2 3 296 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 297 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 298 | Type | Code | Checksum | 299 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 300 | Identifier |Sequence Number| Num of NS-IDs | 301 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 302 | Length | Class-Num | C-Type | 303 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 304 | IOAM-Trace-Type | Reserved |W| 305 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 306 | Namespace-ID | Ingress_MTU | 307 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 308 | Ingress_if_id (short or wide format) ...... | 309 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 310 | Length | Class-Num | C-Type | 311 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 312 | Namespace-ID | IOAM-POT-Type |SoP| Reserved | 313 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 315 Figure 4: Example 1 of IOAM Echo Reply 317 In a deployment where two Namespace-IDs (Namespace-ID1 and Namespace- 318 ID2) are used, for both Namespace-ID1 and Namespace-ID2 the IOAM Pre- 319 allocated Tracing Capabilities and IOAM Proof-of-Transit Capabilities 320 are enabled at the IOAM transit node that received ICMPv6 IOAM Echo 321 Request message, the ICMPv6 IOAM Echo Reply message is depicted as 322 the following: 324 0 1 2 3 325 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 326 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 327 | Type | Code | Checksum | 328 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 329 | Identifier |Sequence Number| Num of NS-IDs | 330 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 331 | Length | Class-Num | C-Type | 332 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 333 | IOAM-Trace-Type | Reserved |W| 334 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 335 | Namespace-ID1 | Ingress_MTU | 336 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 337 | Ingress_if_id (short or wide format) ...... | 338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 339 | Length | Class-Num | C-Type | 340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 341 | Namespace-ID1 | IOAM-POT-Type |SoP| Reserved | 342 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 343 | Length | Class-Num | C-Type | 344 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 345 | IOAM-Trace-Type | Reserved |W| 346 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 347 | Namespace-ID2 | Ingress_MTU | 348 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 349 | Ingress_if_id (short or wide format) ...... | 350 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 351 | Length | Class-Num | C-Type | 352 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 353 | Namespace-ID2 | IOAM-POT-Type |SoP| Reserved | 354 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 356 Figure 5: Example 2 of IOAM Echo Reply 358 In a deployment where only the default Namespace-ID is used, the IOAM 359 Pre-allocated Tracing Capabilities, IOAM Proof-of-Transit 360 Capabilities and IOAM Edge-to-Edge Capabilities are enabled at the 361 IOAM decapsulating node that received ICMPv6 IOAM Echo Request 362 message, the ICMPv6 IOAM Echo Reply message is depicted as the 363 following: 365 0 1 2 3 366 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 367 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 368 | Type | Code | Checksum | 369 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 370 | Identifier |Sequence Number| Num of NS-IDs | 371 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 372 | Length | Class-Num | C-Type | 373 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 374 | IOAM-Trace-Type | Reserved |W| 375 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 376 | Namespace-ID | Ingress_MTU | 377 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 378 | Ingress_if_id (short or wide format) ...... | 379 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 380 | Length | Class-Num | C-Type | 381 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 382 | Default Namespace-ID | IOAM-POT-Type |SoP| Reserved | 383 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 384 | Length | Class-Num | C-Type | 385 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 386 | Namespace-ID | IOAM-E2E-Type | 387 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 388 |TSF| Reserved | MBZ | 389 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 391 Figure 6: Example 3 of IOAM Echo Reply 393 Note that when an ICMPv6 IOAM Echo Request message or IOAM Echo Reply 394 message is received, the Payload Length field of IPv6 Header 395 [RFC8200] indicates the message length. 397 5. ICMPv6 Message Processing 399 When a node receives an ICMPv6 IOAM Echo Request and any of the 400 following conditions apply, the node MUST silently discard the 401 incoming message: 403 * The node does not recognize the ICMPv6 IOAM Echo Request message. 405 * The node has not explicitly enabled ICMPv6 IOAM Echo 406 functionality. 408 * The incoming ICMPv6 IOAM Echo Request carries a Source Address 409 that is not explicitly authorized. 411 * The Source Address of the incoming message is not a unicast 412 address. 414 * The Destination Address of the incoming message is a multicast 415 address. 417 Otherwise, when a node receives an ICMPv6 IOAM Echo Request, it MUST 418 format an ICMPv6 IOAM Echo Reply as follows: 420 * Set the Hop Limit to 255. 422 * Set the DiffServ codepoint to CS0 [RFC4594]. 424 * Copy the Destination Address from the IOAM Echo Request to the 425 Source Address of the IOAM Echo Reply. 427 * Copy the Source Address from the IOAM Echo Request to the 428 Destination Address of the IOAM Echo Reply. 430 * Set the Next Header to (58) ICMPv6. 432 * Set the ICMPv6 Type to (TBD2) IOAM Echo Reply. 434 * Copy the Identifier from the IOAM Echo Request to the IOAM Echo 435 Reply. 437 * Copy the Sequence Number from the IOAM Echo Request to the IOAM 438 Echo Reply. 440 * Set the Code field as described in Section 5.1. 442 * If the Code field is equal to (0) No Error, then add one or more 443 objects as described in Section 4.1. 445 * Set the Checksum appropriately. 447 * Forward the ICMPv6 IOAM Echo Reply to its destination. 449 5.1. Code Field Processing 451 The Code field MUST be set to (1) Malformed Query if any of the 452 following conditions apply: 454 * The ICMPv6 IOAM Echo Request does not include any Namespace-ID. 456 * The value of Num of NS-IDs field does not match the contained list 457 of Namespace-IDs. 459 * The query is otherwise malformed. 461 The Code field MUST be set to (2) No Matched Namespace-ID if none of 462 the contained list of Namespace-IDs is recognized. 464 The Code field MUST be set to (3) Exceed the minimum IPv6 MTU if the 465 formatted ICMPv6 IOAM Echo Reply exceeds the minimum IPv6 MTU (i.e., 466 1280 octets). In this case, all objects MUST be stripped before 467 forwarding the ICMPv6 Echo Reply to its destination. 469 Otherwise, the Code field MUST be set to (0) No Error. 471 6. Updates to RFC 4884 473 Section 4.6 of [RFC4884] provides a list of extensible ICMP messages 474 (i.e., messages that can carry the ICMP Extension Structure). This 475 document adds the ICMPv6 IOAM Echo Request message and the ICMPv6 476 IOAM Echo Reply message to that list. 478 7. IANA Considerations 480 This document requests the following IANA actions: 482 * Add the following to the "ICMPv6 'type' Numbers" registry: 484 - TBD1 IOAM Echo Request 486 - As ICMPv6 distinguishes between informational and error 487 messages, and this is an informational message, the value must 488 be assigned from the range 128-255. 490 * Add the following to the "Type TBD1 - IOAM Echo Request" sub- 491 registry: 493 - (0) No Error 495 * Add the following to the "ICMPv6 'type' Numbers" registry: 497 - TBD2 IOAM Echo Reply 499 - As ICMPv6 distinguishes between informational and error 500 messages, and this is an informational message, the value must 501 be assigned from the range 128-255. 503 * Add the following to the "Type TBD2 - IOAM Echo Reply" sub- 504 registry: 506 - (0) No Error 508 - (1) Malformed Query 509 - (2) No Matched Namespace-ID 511 - (3) Exceed the minimum IPv6 MTU 513 * Add the following to the "ICMP Extension Object Classes and Class 514 Sub-types" registry: 516 - (TBD3) IOAM Tracing Capabilities Object 518 * Add the following C-types to the "Sub-types - Class TBD3 - IOAM 519 Tracing Capabilities Object" sub-registry: 521 - (0) Reserved 523 - (1) Pre-allocated Tracing 525 - (2) Incremental Tracing 527 - C-Type values are assigned on a First Come First Serve (FCFS) 528 basis with a range of 0-255. 530 * Add the following to the "ICMP Extension Object Classes and Class 531 Sub-types" registry: 533 - (TBD4) IOAM Proof-of-Transit Capabilities Object 535 * Add the following C-types to the "Sub-types - Class TBD4 - IOAM 536 Proof-of-Transit Capabilities Object" sub-registry: 538 - (0) Reserved 540 - C-Type values are assigned on an FCFS basis with a range of 541 0-255. 543 * Add the following to the "ICMP Extension Object Classes and Class 544 Sub-types" registry: 546 - (TBD5) IOAM Edge-to-Edge Capabilities Object 548 * Add the following C-types to the "Sub-types - Class TBD5 - IOAM 549 Edge-to-Edge Capabilities Object" sub-registry: 551 - (0) Reserved 553 - C-Type values are assigned on an FCFS basis with a range of 554 0-255. 556 * Add the following to the "ICMP Extension Object Classes and Class 557 Sub-types" registry: 559 - (TBD6) IOAM DEX Capabilities Object 561 * Add the following C-types to the "Sub-types - Class TBD6 - IOAM 562 DEX Capabilities Object" sub-registry: 564 - (0) Reserved 566 - C-Type values are assigned on an FCFS basis with a range of 567 0-255. 569 * Add the following to the "ICMP Extension Object Classes and Class 570 Sub-types" registry: 572 - (TBD7) IOAM End-of-Domain Object 574 * Add the following C-types to the "Sub-types - Class TBD7 - IOAM 575 End-of-Domain Object" sub-registry: 577 - (0) Reserved 579 - C-Type values are assigned on an FCFS basis with a range of 580 0-255. 582 All codes mentioned above are assigned on an FCFS basis with a range 583 of 0-255. 585 8. Security Considerations 587 Securiy issues discussed in [I-D.ietf-ippm-ioam-conf-state] apply to 588 this document. 590 This document recommends using IP Authentication Header [RFC4302] or 591 IP Encapsulating Security Payload Header [RFC4303] to provide 592 integrity protection for IOAM Capabilities information. 594 This document recommends using IP Encapsulating Security Payload 595 Header [RFC4303] to provide privacy protection for IOAM Capabilities 596 information. 598 This document recommends that the network operators establish 599 policies that restrict access to ICMPv6 IOAM Echo functionality. In 600 order to enforce these policies, nodes that support ICMPv6 IOAM Echo 601 functionality MUST support the following configuration options: 603 * Enable/disable ICMPv6 IOAM Echo functionality. By default, ICMPv6 604 IOAM Echo functionality is disabled. 606 * Define enabled Namespace-IDs. By default, all Namespace-IDs 607 except the default one (i.e., Namespace-ID 0x0000) are disabled. 609 * For each enabled Namespace-ID, define the prefixes from which 610 ICMPv6 IOAM Echo Request messages are permitted. 612 When a node receives an ICMPv6 IOAM Echo Request message that it is 613 not configured to support, it MUST silently discard the message. See 614 Section 5 for details. 616 In order to protect local resources, implementations SHOULD rate- 617 limit incoming ICMPv6 IOAM Echo Request messages. 619 9. Acknowledgements 621 TBA. 623 10. References 625 10.1. Normative References 627 [I-D.ietf-ippm-ioam-conf-state] 628 Min, X., Mirsky, G., and L. Bo, "Echo Request/Reply for 629 Enabled In-situ OAM Capabilities", Work in Progress, 630 Internet-Draft, draft-ietf-ippm-ioam-conf-state-03, 26 631 January 2022, . 634 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 635 Requirement Levels", BCP 14, RFC 2119, 636 DOI 10.17487/RFC2119, March 1997, 637 . 639 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 640 Control Message Protocol (ICMPv6) for the Internet 641 Protocol Version 6 (IPv6) Specification", STD 89, 642 RFC 4443, DOI 10.17487/RFC4443, March 2006, 643 . 645 [RFC4884] Bonica, R., Gan, D., Tappan, D., and C. Pignataro, 646 "Extended ICMP to Support Multi-Part Messages", RFC 4884, 647 DOI 10.17487/RFC4884, April 2007, 648 . 650 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 651 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 652 May 2017, . 654 10.2. Informative References 656 [I-D.ietf-ippm-ioam-ipv6-options] 657 Bhandari, S. and F. Brockners, "In-situ OAM IPv6 Options", 658 Work in Progress, Internet-Draft, draft-ietf-ippm-ioam- 659 ipv6-options-07, 6 February 2022, 660 . 663 [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, 664 DOI 10.17487/RFC4302, December 2005, 665 . 667 [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", 668 RFC 4303, DOI 10.17487/RFC4303, December 2005, 669 . 671 [RFC4594] Babiarz, J., Chan, K., and F. Baker, "Configuration 672 Guidelines for DiffServ Service Classes", RFC 4594, 673 DOI 10.17487/RFC4594, August 2006, 674 . 676 [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 677 (IPv6) Specification", STD 86, RFC 8200, 678 DOI 10.17487/RFC8200, July 2017, 679 . 681 [RFC8335] Bonica, R., Thomas, R., Linkova, J., Lenart, C., and M. 682 Boucadair, "PROBE: A Utility for Probing Interfaces", 683 RFC 8335, DOI 10.17487/RFC8335, February 2018, 684 . 686 Authors' Addresses 688 Xiao Min 689 ZTE Corp. 690 Nanjing 691 China 692 Phone: +86 25 88013062 693 Email: xiao.min2@zte.com.cn 694 Greg Mirsky 695 Ericsson 696 United States of America 697 Email: gregimirsky@gmail.com