<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.0.2) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bonica-intarea-icmp-exten-hdr-len-00" category="std" consensus="true" updates="RFC 4884" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="icmp-eh-len">ICMP Extension Header Length Field</title>
    <seriesInfo name="Internet-Draft" value="draft-bonica-intarea-icmp-exten-hdr-len-00"/>
    <author initials="R." surname="Bonica" fullname="Ron Bonica">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>rbonica@juniper.net</email>
      </address>
    </author>
    <author initials="X." surname="He" fullname="Xiaoming He">
      <organization>China Telecom</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>hexm4@chinatelecom.cn</email>
      </address>
    </author>
    <author initials="X." surname="Min" fullname="Xiao Min">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>xiao.min2@zte.com.cn</email>
      </address>
    </author>
    <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>tal.mizrahi.phd@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="10"/>
    <area>Internet</area>
    <workgroup>INTAREA Group</workgroup>
    <keyword>ICMP</keyword>
    <abstract>
      <?line 47?>

<t>The ICMP Extension Structure does not have a length field. Therefore, unless the length of the Extension Structure can be inferred from other data in the ICMP message, the Extension Structure must be the last item in the ICMP message.</t>
      <t>This document defines a length field for the ICMP Extension Structure. When length information is provided, receivers can use it to parse ICMP messages. Specifically, receivers can use length information to determine the offset at which the item after the ICMP Extension Structure begins.</t>
    </abstract>
  </front>
  <middle>
    <?line 54?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The ICMP Extension Structure <xref target="RFC4884"/> does not have a length field. Therefore, unless the length of the Extension Structure can be inferred from other data in the ICMP message, the Extension Structure must be the last item in the ICMP message.</t>
      <t>This document defines a length field for the ICMP Extension Structure. When length information is provided, receivers can use it to parse ICMP messages. Specifically, receivers can use length information to determine the offset at which the item after the ICMP Extension Structure begins.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="the-icmp-extension-structure">
      <name>The ICMP Extension Structure</name>
      <t><xref target="box-fig"/>  depicts the ICMP Extension Header.</t>
      <figure anchor="box-fig">
        <name>ICMP Extension Header</name>
        <artwork><![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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |Version|Rsv|      Length       |           Checksum            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>Version: 4 bits</t>
      <ul spacing="normal">
        <li>
          <t>Defined in <xref target="RFC4884"/></t>
        </li>
      </ul>
      <t>Reserved (Rsv): 2 bits</t>
      <ul spacing="normal">
        <li>
          <t>Defined in <xref target="RFC4884"/></t>
        </li>
      </ul>
      <t>Length: 10 bits</t>
      <ul spacing="normal">
        <li>
          <t>This field represents the total length of all options contained in the ICMP Extension Structure. It does not include the length of the Extension Header. The length is measured in bytes. Legacy implementations set this field to 0.</t>
        </li>
      </ul>
      <t>Checksum: 16 bits</t>
      <ul spacing="normal">
        <li>
          <t>Defined in <xref target="RFC4884"/></t>
        </li>
      </ul>
    </section>
    <section anchor="backwards-compatibility">
      <name>Backwards Compatibility</name>
      <t>Legacy implementations set the length field to 0. When the length field is set to 0, it conveys no useful information and cannot be used to parse the ICMP packet.</t>
      <t>In these cases, one of the following statements <bcp14>MUST</bcp14> be true:</t>
      <ul spacing="normal">
        <li>
          <t>The ICMP Extension Structure is the final item in the ICMP packet.</t>
        </li>
        <li>
          <t>The length of the ICMP Extension Structure can be inferred from other fields in the packet.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requires no IANA actions.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document introduces no security vulnerabilities.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC4884">
        <front>
          <title>Extended ICMP to Support Multi-Part Messages</title>
          <author fullname="R. Bonica" initials="R." surname="Bonica"/>
          <author fullname="D. Gan" initials="D." surname="Gan"/>
          <author fullname="D. Tappan" initials="D." surname="Tappan"/>
          <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
          <date month="April" year="2007"/>
          <abstract>
            <t>This document redefines selected ICMP messages to support multi-part operation. A multi-part ICMP message carries all of the information that ICMP messages carried previously, as well as additional information that applications may require.</t>
            <t>Multi-part messages are supported by an ICMP extension structure. The extension structure is situated at the end of the ICMP message. It includes an extension header followed by one or more extension objects. Each extension object contains an object header and object payload. All object headers share a common format.</t>
            <t>This document further redefines the above mentioned ICMP messages by specifying a length attribute. All of the currently defined ICMP messages to which an extension structure can be appended include an "original datagram" field. The "original datagram" field contains the initial octets of the datagram that elicited the ICMP error message. Although the original datagram field is of variable length, the ICMP message does not include a field that specifies its length. Therefore, in order to facilitate message parsing, this document allocates eight previously reserved bits to reflect the length of the "original datagram" field.</t>
            <t>The proposed modifications change the requirements for ICMP compliance. The impact of these changes on compliant implementations is discussed, and new requirements for future implementations are presented.</t>
            <t>This memo updates RFC 792 and RFC 4443. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4884"/>
        <seriesInfo name="DOI" value="10.17487/RFC4884"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1XbXMaNxD+rl+xtb+0qY8Bx02cmzQxwU7tjl9SwG3STKYj
7hZO8Z10lXRggvNf+lv6y7qSDgM2wdNpv7V4PJz2tPtoHz3aFVEUsUSlQo5i
qOww2l+MTMRNIgRjVtgcYzjpnL2Bo2uL0ggl4Rh5ihpOUY5sBq8F5injg4HG
cQwiKcoIsyhHyVKVSF6Qf6r50EYDJUXCIyEt10jffqYLGmWpdg5Rs8kSbnGk
9DQGY1NWlSmNTQzd1x3Y29/fY8xYLtPfeK4kBZ6iYaWI4b1VyQ4Ypa3GoaGn
aREeElUUKK35wJgodQxWV8buNpvPmrvMrYJykxa1RMsmlPnJeb/dPWrDD1pV
JbuahNQZ45XNlI4ZQET/AEK6NTXglU/Jm0KmXaJnyag0Bf2xkqIkvs7RTpS+
Mv5NoippXZqXvbY3YMFFHoMOLB18DE4Nt7IV1LcN4n8J8a3gqqBtm1s9ZCcT
kkMfcyQCVvH8q2XEDK+LvYPEmW1waCTyHuaZkHdAb00e8df+EXSULpXmljTy
AOY1+Tdo1bsHnyw21kH2HeQnzTOxBNvn+YrVIx9XfIJiFfDEaI75MqLlOQF6
10aZpQcjZ3bIjD5RFAEfGKt5YhnrZ3hX8T3STWIrjZAqNCCVhYyPETjk4RAM
3SFoALmS7pTGHahkjsaApWD1HDX0o3VREy5hgJT5ELXGFIZaFaBotgY6AJxe
eFe/qoLC8hEhfClYQRJ30Tw0p2dhsVgXouFyFYZySip3SiDFoZCU32paQAkt
fNcgNuCXDOXch5JQuvAqAApeajUWKaY7oDFBMUZtfLqVoXwtWAUl12Z1YaYB
vRITMaSTkOfTda5rwChUinSYSVcheTUcGrTALUwykWTe5rmgaoSbUyL+RqTD
Ri2OQqRpjoxtu3KhVUqT3PTZtnDDzw9oZjb7iuqXK1+fP/8voP+agLapLsox
sUPviRmZwqFjSfhxUM4VToFaQ2pg6+yy19/aCd9wfuGfu0c/XZ50jw7dc++4
fXp6+8DqGb3ji8vTw8XTwrNzcXZ2dH4YnMkKKya2ddZ+R2/cqrYu3vRPLs7b
p1thq5f3lVqlY8crjDIvNdGUAjcsRZNoMaAB+bzqvPnzj9ZerffdVusZ6T0M
9ltPnfgntM0BTcl8Wg+JxinjZYlcuyi0YbRJpaCKTQ2cGzCZmkhwB4PYfPTe
MfMhhueDpGztvagNLuEV45yzFaPn7L7lnnMgcY1pDcwtmyv2O0yvrrf9bmU8
533J+Pxl7jQYtfZfvmBOQpvqC2Oz2UBdR0MxIopJwqVIrFmnznBxIxYhfJpw
/9NaY9tdY3u8CNKiCY9hD76DJ/AU9uHZ37HVYb6N/uFfHefmZzrklOtN14xv
gqm+p9bvl1LoZJhcmapYTuvmX1vPLIbtelvA36O/31q7HVvUPupFx0TOQFiq
Co9CkQjnaja7bR+MddGgHtOLrynDb2Ki9CGPkH8MrebtVF+1Q23WSKfZuDuy
V4xVdO6WGo47jaoMtStRdHWfQ2yu5yd20eiETPIqxY2drFam1/m8Mhuq5txU
OuANptaV9VMc8WQKoihzdKWJh6W5Mm0XSVGtapLM5xtMuT95kKZteMWTqwl3
ZbijipIiD0Qu7NQxuAEUV3udhw797N47UfvQlB3XuxLXGKaOJdeShlW+0o5c
maRu5SikwksT0kWzu2W/pDWjpVxPPJ5xVwGDVDjp99Gc5qHKczVxvxHox5P1
GRjwVdM1eV1hHDSxoZuJoA5ijtRx7zowX8Sj5f2rwb8YcsOVxbNl5hC3KdLt
q33edu3U0IUg/NAwd68gGn+vhPbSC9O5v6uFTtzDpNK0pQ/EEPUlL0Qxc6dx
lUty8aoQ6CL+BdKkVhJEDwAA

-->

</rfc>
