<?xml version="1.0" encoding="iso-8859-1"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="std" ipr="trust200902" docName="draft-ietf-6man-icmpv6-ioam-conf-state-01" updates="4620, 4884" consensus="true" submissionType="IETF">

<front>
  <title abbrev="IPv6 Query for IOAM Capabilities"> IPv6 Query for Enabled In-situ OAM Capabilities </title>

  <author fullname="Xiao Min" initials="X" surname="Min">
      <organization>ZTE Corp.</organization>
     <address>
       <postal>
         <street></street>

         <!-- Reorder these if your country does things differently -->

         <city>Nanjing</city>

         <region></region>

         <code></code>

         <country>China</country>
       </postal>

       <phone>+86 25 88013062</phone>

       <email>xiao.min2@zte.com.cn</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

  <author fullname="Greg Mirsky" initials="G" surname="Mirsky">
      <organization>Ericsson</organization>
     <address>
       <postal>
         <street></street>

         <!-- Reorder these if your country does things differently -->

         <city></city>

         <region></region>

         <code></code>

         <country>United States of America</country>
       </postal>

       <phone></phone>

       <email>gregimirsky@gmail.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

    <date year="2023"/>
	
    <area>Internet</area>
    <workgroup>6MAN Working Group</workgroup>

    <keyword>Request for Comments</keyword>
    <keyword>RFC</keyword>
    <keyword>Internet Draft</keyword>
    <keyword>I-D</keyword>

    <abstract>
  <t> This document describes the IPv6 Node IOAM Information Query functionality, which uses the IPv6 Node Information messages, 
  allowing the IOAM encapsulating node to discover the enabled IOAM capabilities of each IOAM transit and decapsulating node.</t>
  <t> This document updates RFCs 4620 and 4884.</t>
    </abstract>
    
</front>
  
<middle>

  <section title="Introduction">

  <t> IPv6 encapsulation for In-situ OAM (IOAM) data is defined in <xref target="I-D.ietf-ippm-ioam-ipv6-options"/>, which uses 
  IPv6 hop-by-hop and destination options to carry IOAM data fields (<xref target="RFC9197"/>, <xref target="RFC9326"/>).</t>
  
  <t> As specified in <xref target="RFC9359"/>, echo request/reply can be used by the IOAM encapsulating node to discover the 
  enabled IOAM capabilities at the IOAM transit and decapsulating nodes.</t>

  <t> As specified in <xref target="RFC4443"/>, the Internet Control Message Protocol for IPv6 (ICMPv6) is an integral part of 
  IPv6, and the base protocol MUST be fully implemented by every IPv6 node. ICMPv6 messages defined in <xref target="RFC4443"/> 
  include error messages and informational messages, and the latter are referred to as ICMPv6 Echo Request/Reply messages. 
  <xref target="RFC4884"/> defines ICMPv6 Extension Structure by which multi-part ICMPv6 error messages are supported. 
  <xref target="RFC8335"/> defines ICMPv6 Extended Echo Request/Reply messages, and the ICMPv6 Extended Echo Request contains 
  an ICMPv6 Extension Structure customized for this message. Both <xref target="RFC4884"/> and <xref target="RFC8335"/> provide 
  sound principles and examples on how to extend ICMPv6 messages.</t>
  
  <t> As specified in <xref target="RFC4620"/>, two types of IPv6 Node Information messages, the Node Information Query (or NI 
  Query) and the Node Information Reply (or NI Reply), also known as ICMPv6 messages, are used for a Querier node to query 
  information of a Responder node.</t>
  
  <t> This document describes the IPv6 Node IOAM Information Query functionality, which uses the IPv6 Node Information messages, 
  allowing the IOAM encapsulating node to discover the enabled IOAM capabilities of each IOAM transit and decapsulating node.</t>
  
  <t> The IOAM encapsulating node sends a NI Query to each IOAM transit and decapsulating node, then each receiving node executes 
  access control procedures, and if access is granted, each receiving node returns a NI Reply which indicates the enabled IOAM 
  capabilities of the receiving node. The NI Reply contains an ICMPv6 Extension Structure exactly customized to this message, and 
  the ICMPv6 Extension Structure contains one or more IOAM Capabilities Objects.</t>
  
  <t> Note that before the IOAM encapsulating node sends the NI Query, it needs to know the IPv6 address of each node along the 
  transport path of a data packet to which IOAM data would be added. That can be achieved by executing ICMPv6/UDP traceroute or 
  provisioning explicit path at the IOAM encapsulating node. In an Equal-Cost Multipath (ECMP) scenario, the same value or values 
  in any ECMP affecting fields (e.g., the 3-tuple of the Flow Label, Source Address, and Destination Address fields <xref target="RFC6437"/>) 
  of IOAM data packets MUST be populated in the NI Query, ensuring the fate sharing between the NI Query and IOAM data packets.</t>
       
  </section>
  
   <section title="Conventions Used in This Document">

	<t> The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", 
	"RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as 
	described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear 
	in all capitals, as shown here.</t>
	
   </section>

  <section title="Node IOAM Information Query">

	<t> The Node IOAM Information Query message is encapsulated in an IPv6 header <xref target="RFC8200"/>, 
	like any ICMPv6 message.</t>
	
	<t> The Node IOAM Information Query message has the following format:</t>
	 
     <figure anchor="Figure_1" title="Node IOAM Information Query Message">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Qtype             |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             Nonce                             +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
.                  List of IOAM Namespace-IDs                   .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>

      <t>IPv6 Header fields:</t>

      <t><list style="symbols">
          <t>Source Address: The Source Address identifies the IOAM encapsulating node. 
		  It MUST be a valid IPv6 unicast address.</t>

          <t>Destination Address: The Destination Address identifies the IOAM transit or 
		  decapsulating node. It MUST be a valid IPv6 unicast address.</t>
        </list></t>

      <t>ICMPv6 fields:</t>

      <t><list style="symbols">
          <t>Type: NI Query. The value is 139 as allocated for <xref target="RFC4620"/>.</t>

          <t>Code: The value is (TBD1) the Data field contains a List of IOAM Namespace-IDs which is the 
		  Subject of this Query.</t>

          <t>Checksum: The ICMPv6 checksum.</t>

          <t>Qtype: The value is TBD2, which indicates the NI Query is a node IOAM capabilities query.</t>
		  
          <t>Flags: The same as defined in <xref target="RFC4620"/>. Flags are Qtype-specific, the NI Query 
		  Qtype used in this document has no defined flags.</t>

          <t>Nonce: The same as defined in <xref target="RFC4620"/>.</t>

          <t>Data: Following the NI Query header, the Data field is a List of IOAM Namespace-IDs, which is 
		  also called IOAM Capabilities Query Container payload in Section 3.1 of <xref target="RFC9359"/>.</t>
        </list></t>		
	 
	<section title="Examples of the Node IOAM Information Query">
        
     <t> The format of a Node IOAM Information Query can vary from deployment to deployment.</t> 
	 
     <t> In a deployment where only the default Namespace-ID is used, the Node IOAM Information Query 
	 is depicted as the following:</t> 
	 
     <figure anchor="Figure_2" title="Example 1 of the Node IOAM Information Query">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Qtype             |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             Nonce                             +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          |          Zero-padded          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>
	 
     <t> In a deployment where two Namespace-IDs (Namespace-ID1 and Namespace-ID2) are used, the Node 
	 IOAM Information Query is depicted as the following:</t> 
	 
     <figure anchor="Figure_3" title="Example 2 of the Node IOAM Information Query">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Qtype             |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             Nonce                             +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID1         |         Namespace-ID2         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>
        
     <t> Note that when a Node IOAM Information Query message is received, the message length is indicated by 
	 the Payload Length field of IPv6 Header <xref target="RFC8200"/>.</t> 
	
    </section> 	 
  </section> 
   
  <section title="Node IOAM Information Reply">

	<t> The Node IOAM Information Reply message is encapsulated in an IPv6 header <xref target="RFC8200"/>, 
	like any ICMPv6 message.</t>
	
	<t> The Node IOAM Information Reply message has the following format:</t>
	 
     <figure anchor="Figure_4" title="Node IOAM Information Reply Message">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Qtype             |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             Nonce                             +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
.               List of IOAM Capabilities Objects               .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>

      <t>IPv6 Header fields:</t>

      <t><list style="symbols">
          <t>Source Address: Copied from the Destination Address field of the
          invoking Node IOAM Information Query packet.</t>

          <t>Destination Address: Copied from the Source Address field of the
          invoking Node IOAM Information Query packet.</t>
        </list></t>

      <t>ICMPv6 fields:<list style="symbols">
          <t>Type: NI Reply. The value is 140 as allocated for <xref target="RFC4620"/>.</t>

          <t>Code: The values are (TBD3) No Matched Namespace-ID, and (TBD4) Exceed the minimum IPv6 MTU. See 
		  <xref target="code"/> for details.</t>
		  
          <t>Checksum: The ICMPv6 checksum.</t>

          <t>Qtype: Copied from the Qtype field of the invoking Node IOAM Information Query.</t>
		  
          <t>Flags: The same as defined in <xref target="RFC4620"/>. Flags are Qtype-specific, the NI Reply 
		  Qtype used in this document has no defined flags.</t>
		  
          <t>Nonce: Copied from the Nonce field of the invoking Node IOAM Information Query.</t>

          <t>Data: Following the NI Reply header, the Data field is a List of IOAM Capabilities Objects, which is also 
		  called IOAM Capabilities Response Container payload in Section 3.2 of <xref target="RFC9359"/>. Section 
		  7 of <xref target="RFC4884"/> defines the ICMP Extension Structure. As per RFC 4884, the Extension 
		  Structure contains exactly one Extension Header followed by one or more objects. When applied to the 
		  Node IOAM Information Reply message, the ICMP Extension Structure MUST contain one or more IOAM Capabilities 
		  Objects.</t>
        </list></t>
	 
	<section  anchor="objects" title="IOAM Capabilities Objects">

	<t> All ICMPv6 IOAM Capabilities Objects are encapsulated in a Node IOAM Information Reply message.</t>
	
	<t> Each ICMPv6 IOAM Capabilities Object has the following format:</t>
	 
     <figure anchor="Figure_5" title="IOAM Capabilities Object">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
.                IOAM Capabilities Object Payload               .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>
	 
      <t>Object fields:<list style="symbols">
          <t>Class-Num: IOAM Capabilities Objects. The values are listed as the following:</t>
        </list></t>
		
        <figure>
          <artwork><![CDATA[
   Value         Object Name
   -----         -----------
   TBD5          IOAM Tracing Capabilities Object
   TBD6          IOAM Proof of Transit Capabilities Object
   TBD7          IOAM Edge-to-Edge Capabilities Object
   TBD8          IOAM DEX Capabilities Object
   TBD9          IOAM End-of-Domain Object   
        ]]></artwork>
        </figure>
		
        <t><list style="symbols">
          <t>C-Type: Values are listed as the following:</t>
        </list></t>
		
        <figure>
          <artwork><![CDATA[
   Class-Num     C-Type     C-Type Name          
   ---------     ------     -----------          
   TBD5          0          Reserved             
                 1          Pre-allocated Tracing
   TBD6          0          Reserved             
   TBD7          0          Reserved             
   TBD8          0          Reserved             
   TBD9          0          Reserved             
        ]]></artwork>
        </figure>
		
        <t><list style="symbols">		
          <t>Length: Length of the object, measured in octets, including the Object Header and payload.</t>

          <t>Object payload: Following the IOAM Capabilities Object Header, it's the IOAM Capabilities Object payload, 
		  which is defined respectively in Section 3.2.1, Section 3.2.3, Section 3.2.4, Section 3.2.5 
		  and Section 3.2.6 of <xref target="RFC9359"/>.</t>
        </list></t>
	
    </section> 
	 
	<section title="Examples of the Node IOAM Information Reply">
        
     <t> The format of a Node IOAM Information Reply can vary from deployment to deployment.</t> 
	 
     <t> In a deployment where only the default Namespace-ID is used, the IOAM Pre-allocated Tracing 
	 Capabilities and IOAM Proof of Transit Capabilities are enabled at the IOAM transit node that received 
	 a Node IOAM Information Query, the Node IOAM Information Reply is depicted as the following:</t> 
	 
     <figure anchor="Figure_6" title="Example 1 of the Node IOAM Information Reply">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Qtype             |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             Nonce                             +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               IOAM-Trace-Type                 |  Reserved   |W|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          |          Ingress_MTU          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Ingress_if_id (short or wide format)         ......          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          | IOAM-POT-Type |SoP| Reserved  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>
	 
     <t> In a deployment where two Namespace-IDs (Namespace-ID1 and Namespace-ID2) are used, for both 
	 Namespace-ID1 and Namespace-ID2 the IOAM Pre-allocated Tracing Capabilities and IOAM Proof of Transit 
	 Capabilities are enabled at the IOAM transit node that received a Node IOAM Information Query, the 
	 Node IOAM Information Reply is depicted as the following:</t> 
	 
     <figure anchor="Figure_7" title="Example 2 of the Node IOAM Information Reply">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Qtype             |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             Nonce                             +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               IOAM-Trace-Type                 |  Reserved   |W|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID1         |          Ingress_MTU          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Ingress_if_id (short or wide format)         ......          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID1         | IOAM-POT-Type |SoP| Reserved  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               IOAM-Trace-Type                 |  Reserved   |W|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID2         |          Ingress_MTU          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Ingress_if_id (short or wide format)         ......          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID2         | IOAM-POT-Type |SoP| Reserved  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>
	 
     <t> In a deployment where only the default Namespace-ID is used, the IOAM Pre-allocated Tracing Capabilities, 
	 IOAM Proof of Transit Capabilities and IOAM Edge-to-Edge Capabilities are enabled at the IOAM decapsulating 
	 node that received a Node IOAM Information Query, the Node IOAM Information Reply is depicted as the following:</t> 
	 
     <figure anchor="Figure_8" title="Example 3 of the Node IOAM Information Reply">
     <artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Qtype             |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             Nonce                             +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               IOAM-Trace-Type                 |  Reserved   |W|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          |          Ingress_MTU          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Ingress_if_id (short or wide format)         ......          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          | IOAM-POT-Type |SoP| Reserved  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Length            |   Class-Num   |   C-Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          |         IOAM-E2E-Type         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|TSF|         Reserved          |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ]]></artwork>
     </figure>
        
     <t> Note that when a Node IOAM Information Reply message is received, the message length is indicated by 
	 the Payload Length field of IPv6 Header <xref target="RFC8200"/>.</t> 
	
    </section> 
  </section> 
   
  <section anchor="code" title="Code Field Processing">

     <t>The Code field in the Node IOAM Information Reply MUST be set to (TBD3) No Matched Namespace-ID if any of the
     following conditions apply:<list style="symbols">
         <t>The Node IOAM Information Query does not include any Namespace-ID.</t>

         <t>None of the contained list of IOAM Namespace-IDs is recognized.</t>

         <t>None of the contained list of IOAM Namespace-IDs is enabled.</t>
       </list></t>

     <t>The Code field in the Node IOAM Information Reply MUST be set to (TBD4) Exceed the minimum IPv6 MTU if the formatted 
	NI Reply packet exceeds the minimum IPv6 MTU (i.e., 1280 octets). In this case, all objects MUST be stripped before 
	forwarding the Node IOAM Information Reply to its destination.</t>

  </section> 

  <section title="Updates to RFC 4884"> 
  
  <t> Section 4.6 of <xref target="RFC4884"/> provides a list of extensible ICMP messages 
  (i.e., messages that can carry the ICMP Extension Structure). This document adds the IPv6 
  Node Information Query message and the IPv6 Node Information Reply message to that list.</t>
  
  </section>

  <section title="IANA Considerations"> 
  <t> This document requests the following IANA actions:
		  
          <list style="symbols">
          <t> Add the following Code to the "Type 139 - ICMP Node Information Query" sub-registry:
          
		  <list>
          <t> (TBD1) The Data field contains a List of IOAM Namespace-IDs which is the Subject of this Query</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">
          <t> Add the following to the "Qtypes" registry:
          
		  <list>
          <t> TBD2 Node IOAM Capabilities</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">
          <t> Add the following Codes to the "Type 140 - ICMP Node Information Response" sub-registry:
          
		  <list>
          <t> (TBD3) No Matched Namespace-ID</t>
          <t> (TBD4) Exceed the minimum IPv6 MTU</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">

          <t> Add the following to the "ICMP Extension Object Classes and Class
          Sub-types" registry:
		  
		  <list>
          <t> (TBD5) IOAM Tracing Capabilities Object</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">
          <t> Add the following C-types to the "Sub-types - Class TBD5 -
      IOAM Tracing Capabilities Object" sub-registry:
          
		  <list>
          <t> (0) Reserved</t>
          <t> (1) Pre-allocated Tracing</t>
		  </list></t>
		  </list>	

          <list style="symbols">

          <t> Add the following to the "ICMP Extension Object Classes and Class
          Sub-types" registry:
		  
		  <list>
          <t> (TBD6) IOAM Proof of Transit Capabilities Object</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">
          <t> Add the following C-types to the "Sub-types - Class TBD6 -
      IOAM Proof of Transit Capabilities Object" sub-registry:
          
		  <list>
          <t> (0) Reserved</t>
		  </list></t>
		  </list>	

          <list style="symbols">

          <t> Add the following to the "ICMP Extension Object Classes and Class
          Sub-types" registry:
		  
		  <list>
          <t> (TBD7) IOAM Edge-to-Edge Capabilities Object</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">
          <t> Add the following C-types to the "Sub-types - Class TBD7 -
      IOAM Edge-to-Edge Capabilities Object" sub-registry:
          
		  <list>
          <t> (0) Reserved</t>
		  </list></t>
		  </list>	

          <list style="symbols">
          <t> Add the following to the "ICMP Extension Object Classes and Class
          Sub-types" registry:
		  
		  <list>
          <t> (TBD8) IOAM DEX Capabilities Object</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">
          <t> Add the following C-types to the "Sub-types - Class TBD8 -
      IOAM DEX Capabilities Object" sub-registry:
          
		  <list>
          <t> (0) Reserved</t>
		  </list></t>
		  </list>

          <list style="symbols">
          <t> Add the following to the "ICMP Extension Object Classes and Class
          Sub-types" registry:
		  
		  <list>
          <t> (TBD9) IOAM End-of-Domain Object</t>
		  </list></t>
		  </list>
		  
          <list style="symbols">
          <t> Add the following C-types to the "Sub-types - Class TBD9 -
      IOAM End-of-Domain Object" sub-registry:
          
		  <list>
          <t> (0) Reserved</t>
		  </list></t>
		  </list>
		  
        </t>

      <t>All codes mentioned above are assigned on a First Come First Serve (FCFS) basis with a range of 0-255.</t>
	  
  </section>
  
  <section title="Security Considerations">
  
  <t> Securiy issues discussed in <xref target="RFC4620"/> and <xref target="RFC9359"/> apply to this document.</t>
  
  <t> This document recommends using IP Authentication Header <xref target="RFC4302"/> or IP Encapsulating Security 
  Payload Header <xref target="RFC4303"/> to provide integrity protection for IOAM capabilities information.</t>
  
  <t> This document recommends using IP Encapsulating Security Payload Header <xref target="RFC4303"/> to provide 
  privacy protection for IOAM capabilities information.</t>
  
  <t> This document recommends that the network operators establish policies that restrict access to IPv6 Node IOAM 
  Information Query functionality. In order to enforce these policies, nodes that support IPv6 Node IOAM Information 
  Query functionality MUST support the following configuration options:</t>

  <t><list style="symbols">
      <t>Enable/disable IPv6 Node IOAM Information Query functionality. By default, IPv6 Node IOAM Information Query 
	  functionality is disabled.</t>

      <t>Define enabled Namespace-IDs. By default, all Namespace-IDs except the default one (i.e., Namespace-ID 
	  0x0000) are disabled.</t>

      <t>For each enabled Namespace-ID, define the prefixes from which Node IOAM Information Query messages are 
	  permitted.</t>
  </list></t>

  <t>In order to protect local resources, implementations SHOULD rate-limit incoming Node IOAM Information Query messages.</t>
  
  </section>
  
  <section title="Acknowledgements">
  
  <t> The authors would like to acknowledge Eric Vyncke and Erik Kline for their valuable suggestions on using IPv6 Node 
  Information Queries as the basis.</t>
  <t> The authors would like to acknowledge Bob Hinden for his valuable suggestions on the ICMPv6 message format.</t>
  <t> The authors would like to acknowledge Chongfeng Xie and Zhenqiang Li for their review and helpful comments.</t>
  
  </section>  
  
</middle>
  
<back>

    <references title="Normative References">
     <?rfc include="reference.RFC.2119"?>
     <?rfc include="reference.RFC.8174"?>
     <?rfc include="reference.RFC.4443"?>
     <?rfc include="reference.RFC.4620"?>
     <?rfc include="reference.RFC.4884"?>
     <?rfc include="reference.RFC.9359"?>
     <?rfc include="reference.I-D.ietf-ippm-ioam-ipv6-options"?>
    </references>

	<references title="Informative References">
     <?rfc include="reference.RFC.9197"?>
     <?rfc include="reference.RFC.9326"?>
     <?rfc include="reference.RFC.8200"?>
     <?rfc include="reference.RFC.8335"?>
     <?rfc include="reference.RFC.6437"?>
     <?rfc include="reference.RFC.4302"?>
     <?rfc include="reference.RFC.4303"?>
    </references>
	
</back>
</rfc>

