<?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.24 (Ruby 3.2.3) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-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.28.0 -->
  <front>
    <title abbrev="icmp-eh-len">ICMP Extension Header Length Field</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-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="2025" month="March" day="15"/>
    <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>
      <t>New implementations <bcp14>SHOULD</bcp14> aways include the length field, even though it is not needed when the ICMP message ends with an ICMP Extension Structure.</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|  Rsvd |     Length    |           Checksum            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>Version: 4 bits</t>
      <ul spacing="normal">
        <li>
          <t>Defined in <xref target="RFC4884"/></t>
        </li>
      </ul>
      <t>Reserved (Rsvd): 4 bits</t>
      <ul spacing="normal">
        <li>
          <t>Defined in <xref target="RFC4884"/></t>
        </li>
      </ul>
      <t>Length: 8 bits</t>
      <ul spacing="normal">
        <li>
          <t>This field represents the length of the ICMP Extension Structure, including all options and optional padding, but excluding the ICMP Extension Header. The length is measured in 4-byte words. 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>
      <t>The ICMP Extension Structure <bcp14>MUST</bcp14> be zero-padded so that it ends on a 4-byte boundary.</t>
    </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 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>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Tom Herbert and Michael Welzl for their review and helpful suggestion.</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:
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
vOxXOZhqQDubs67J/gQK3Z95lRAAAA==

-->

</rfc>
