<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-6man-zone-ui-10" number="9844" consensus="true" ipr="trust200902" obsoletes="6874" updates="4007, 7622, 8089" submissionType="IETF" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" prepTime="2025-08-22T17:41:52" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-6man-zone-ui-10" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9844" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="IPv6 Zone IDs in UIs">Entering IPv6 Zone Identifiers in User Interfaces</title>
    <seriesInfo name="RFC" value="9844" stream="IETF"/>
    <author initials="B." surname="Carpenter" fullname="Brian Carpenter">
      <organization abbrev="Univ. of Auckland" showOnFrontPage="true"/>
      <address>
        <postal>
          <street>School of Computer Science</street>
          <street>University of Auckland</street>
          <street>PB 92019</street>
          <city>Auckland 1142</city>
          <country>New Zealand</country>
        </postal>
        <email>brian.e.carpenter@gmail.com</email>
      </address>
    </author>
    <author fullname="Robert M. Hinden" initials="R" surname="Hinden">
      <organization showOnFrontPage="true">Check Point Software</organization>
      <address>
        <postal>
          <street>959 Skyway Road</street>
          <city>San Carlos</city>
          <region>CA</region>
          <code>94070</code>
          <country>United States of America</country>
        </postal>
        <email>bob.hinden@gmail.com</email>
      </address>
    </author>
    <date month="08" year="2025"/>
    <area>INT</area>
    <workgroup>6man</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document describes how the zone identifier of an IPv6 scoped address, defined
in the IPv6 Scoped Address Architecture specification (RFC 4007), should be
entered into a user interface. This document obsoletes RFC 6874 and updates RFCs 4007, 7622, and 8089.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9844" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2025 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-cases">Use Cases</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-relationship-to-other-docum">Relationship to Other Documents</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-specification">Specification</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">A number of software tools require or permit the user to
      enter an IPv6 address via a user interface (UI). The standard
      literal text format for an IPv6 address is defined by <xref target="RFC4291" format="default" sectionFormat="of" derivedContent="RFC4291"/>
      and <xref target="RFC5952" format="default" sectionFormat="of" derivedContent="RFC5952"/>.
      The IPv6 Scoped Address Architecture specification <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/>
      extends the text representation of limited-scope IPv6 addresses,
      in particular link-local unicast addresses and multicast addresses with
      less than global scope, such that a zone identifier
      may be concatenated to an address. Note that <xref target="RFC5952" format="default" sectionFormat="of" derivedContent="RFC5952"/> does not mention this extension.</t>
      <t indent="0" pn="section-1-2">Zone identifiers are especially
      useful in contexts in which literal addresses are typically used,
      for example, during fault diagnosis or device configuration
      (where a device may be physical or virtual)
      when it may be essential to
      specify which interface is used for sending to a link-local address. 
      It should be noted that zone identifiers have purely local meaning
      within the node in which they are defined, usually being the same as
      IPv6 interface names. They are completely meaningless
      for any other node. At the time of writing, they are meaningful only when attached
      to link-local unicast and scoped multicast addresses, but it is
      possible that other uses might be defined in the future. </t>
      <t indent="0" pn="section-1-3">Examples of a link-local unicast address qualified by a zone
      identifier are "fe80::1234%eth0" on a Linux host or
      "fe80::4321%7" on a Microsoft Windows host.</t>
      <t indent="0" pn="section-1-4">Such addresses are directly supported by socket API calls
      including "getaddrinfo()" <xref target="RFC3493" format="default" sectionFormat="of" derivedContent="RFC3493"/>.</t>
      <t indent="0" pn="section-1-5">Devices whose network stack does not support
      the model of a human-readable zone identifier described in <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/>
      are out of scope for this document.</t>
    </section>
    <section anchor="uses" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-use-cases">Use Cases</name>
      <t indent="0" pn="section-2-1">Some examples of use cases for entering an address
      that includes a zone identifier
      into a UI are as follows:</t>
      <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-2-2"><li pn="section-2-2.1" derivedCounter="1.">A software tool may be used for simple debugging actions 
   involving link-local addresses on a host with more than one active
   link interface. For example, the functioning of an interface
   and the existence of a device may be checked
   via "ping fe80::1234%eth0". If this succeeds, the user learns
   that the other device is reachable via the interface named "eth0".</li>
        <li pn="section-2-2.2" derivedCounter="2.">A software tool must sometimes be used to configure or reconfigure a
   device that only has a link-local address, again in a host with
   more than one active link interface. For example, a typical home router
   may be configured via a well-known private address <xref target="RFC1918" format="default" sectionFormat="of" derivedContent="RFC1918"/>
   such as "192.168.178.1" but not via "fe80::1%eth0", if the tool in use does
   not support the input of zone identifiers. More generally, link-local addresses
   need to be entered in network management UIs for use in formats
   such as YANG <xref target="RFC6991" format="default" sectionFormat="of" derivedContent="RFC6991"/>.</li>
        <li pn="section-2-2.3" derivedCounter="3.">Using a monitoring tool such as a network sniffer, the user may need to specify
   a given link-local address on a given interface whose traffic is of interest.
   (For example, at the time of writing, Wireshark supports capture from multiple
   interfaces but does not appear to support the zone
   identifier in a display filter.)</li>
        <li pn="section-2-2.4" derivedCounter="4.">The Microsoft Web Services for Devices (WSD) virtual printer
   port mechanism can present the user with an IPv6 link-local address such as
   "fe80::823b:f9ff:fe7b:d9dc%10" in which the zone identifier is present
   but is not recognized by appropriate software.</li>
        <li pn="section-2-2.5" derivedCounter="5.">The National Marine Electronics Association (NMEA) has defined
   the "OneNet Marine IPv6 Ethernet Networking Standard" <xref target="ONE-NET" format="default" sectionFormat="of" derivedContent="ONE-NET"/>, 
   which uses IPv6 link-local addresses exclusively. Proposed improvements to
   the standard include a web page for device configuration using link-local 
   addresses.</li>
      </ol>
      <t indent="0" pn="section-2-3">Such requirements have already spawned
hacks to work around current limitations (e.g., the hack described in <xref target="LL-HACK" format="default" sectionFormat="of" derivedContent="LL-HACK"/>,
which is no longer maintained and has been archived).</t>
      <t indent="0" pn="section-2-4">For all such use cases, it is highly desirable that a complete IPv6 link-local
address can be cut and pasted from one UI (such as the output
from a system command) to another. Since such
addresses may include quite long hexadecimal strings, 
for example, "fe80::8d0f:7f26:f5c8:780b%enx525400d5e0fb", any solution except
cut-and-paste is highly error prone.</t>
    </section>
    <section anchor="rfcrel" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-relationship-to-other-docum">Relationship to Other Documents</name>
      <t indent="0" pn="section-3-1">The use cases listed above apply to relatively simple actions
on end systems. The zone identifiers that can be used are limited
by the host operating system, since <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/> only specifies
that they are text strings, without specifying a maximum length or syntax.
As <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/> explains, each zone identifier corresponds to a
numerical zone index that qualifies a link-local address.</t>
      <t indent="0" pn="section-3-2">It should be noted that whereas some operating systems and network APIs
support a default zone identifier as recommended by <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/>,
others, including Linux, do not, and for them a solution is
particularly important, since a link-local address without
a zone index cannot be used in the Linux socket API.</t>
      <t indent="0" pn="section-3-3">The model in <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/> assumes that the human-readable zone identifier
is mapped by the operating system into a numeric interface index.
Typically, this mapping is performed by the socket API, e.g., by
"getaddrinfo()". The mapping between the human-readable zone identifier
string and the numeric
value is a host-specific function that varies between operating systems. The
present document is concerned only with the human-readable string that is
typically displayed in an operating system's user interface. However, in
most operating systems, it is possible to use the underlying interface number,
represented as a decimal integer, as an equivalent to the human-readable string.
This is recommended by <xref target="RFC4007" section="11.2" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc4007#section-11.2" derivedContent="RFC4007"/>, but it is not required.
This possibility does not affect the UI requirement given in this document.</t>
      <t indent="0" pn="section-3-4">As IPv6 deployment becomes more widespread, the lack of a solution for
handling complete link-local addresses in all tools is becoming an acute
problem for increasing numbers of operational and support personnel.
It will become critical as IPv6-only or IPv6-mostly networks
<xref target="RFC8925" format="default" sectionFormat="of" derivedContent="RFC8925"/> <xref target="I-D.ietf-v6ops-6mops" format="default" sectionFormat="of" derivedContent="IPv6-MOSTLY"/>, with nodes lacking native
IPv4 support, appear. For example, the NMEA use case mentioned above is
an immediate requirement. This is the principal reason for documenting
this requirement now.</t>
      <t indent="0" pn="section-3-5">This document completely obsoletes <xref target="RFC6874" format="default" sectionFormat="of" derivedContent="RFC6874"/>, which implementors
of web browsers have determined is impracticable to support
<xref target="I-D.schinazi-httpbis-link-local-uri-bcp" format="default" sectionFormat="of" derivedContent="LINK-LOCAL-URI"/>, and replaces it
with a generic UI requirement. Note that obsoleting
<xref target="RFC6874" format="default" sectionFormat="of" derivedContent="RFC6874"/> reverts the change that it made to the URI syntax defined by
<xref target="RFC3986" format="default" sectionFormat="of" derivedContent="RFC3986"/>, so <xref target="RFC3986" format="default" sectionFormat="of" derivedContent="RFC3986"/> is no longer updated by <xref target="RFC6874" format="default" sectionFormat="of" derivedContent="RFC6874"/>.
As far as is known, this change will have no significant impact on
non-browser deployments of URIs.</t>
      <t indent="0" pn="section-3-6">This document also updates <xref target="RFC7622" format="default" sectionFormat="of" derivedContent="RFC7622"/> and <xref target="RFC8089" format="default" sectionFormat="of" derivedContent="RFC8089"/>
by deleting their references to <xref target="RFC6874" format="default" sectionFormat="of" derivedContent="RFC6874"/>.</t>
      <t indent="0" pn="section-3-7">It also updates <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/> by adding a new requirement that
user interfaces support the zone identifier as described in <xref target="spec" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
    </section>
    <section anchor="norm" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-requirements-language">Requirements Language</name>
      <t indent="0" pn="section-4-1">
    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 BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <section anchor="spec" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-specification">Specification</name>
      <t indent="0" pn="section-5-1">A user interface (UI) that allows or requires the user to enter an
      IPv6 address other than a global unicast address <bcp14>MUST</bcp14> provide a means 
      for entering a link-local address or a scoped multicast address and
      selecting a zone identifier as specified by <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/> (typically, an
      interface identifier as defined by the operating system).</t>
      <t indent="0" pn="section-5-2">In this case, the UI <bcp14>SHOULD</bcp14> support the complete
      format specified by <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/> (e.g., "fe80::1%eth0").</t>
      <t indent="0" pn="section-5-3">If this is impossible for practical reasons, the UI <bcp14>MAY</bcp14>
support an alternative delimiter in place of "%".
The hyphen ("-") is suggested (e.g., "fe80::1-eth0").</t>
      <t indent="0" pn="section-5-4">If this too is impossible for practical reasons, the UI
 <bcp14>MAY</bcp14> provide two separate input fields (e.g., "fe80::1" in
one box and "eth0" in another), selection from a list of
active zone identifiers,
or a separate command-line parameter for the zone identifier.</t>
      <t indent="0" pn="section-5-5">The program providing the UI will then store the address
and the zone identifier, converting the latter
to an interface index (typically via the socket API).
A faulty zone identifier will be detected when attempting to convert
it, and this should be reported to the user as an error. The
resulting interface index will be used 
for any subsequent socket calls using the link-local address. </t>
      <t indent="0" pn="section-5-6">Note that an address string such as "fe80::1%eth0" cannot be
converted to binary by the POSIX socket API function "inet_pton()"
<xref target="POSIX" format="default" sectionFormat="of" derivedContent="POSIX"/>.
It must be converted either by using "getaddrinfo()" or
by splitting it into two strings and using "inet_pton()"
and "if_nametoindex()" successively, in order to obtain
the required interface index value.</t>
      <t indent="0" pn="section-5-7"> In this model, the zone identifier is considered independently of
the IPv6 address itself. However, this does not in itself resolve
the difficulties in considering the zone identifier as part of the 
HTTP origin model <xref target="RFC6454" format="default" sectionFormat="of" derivedContent="RFC6454"/>. Therefore, this approach
does not resolve the issue of how browsers should support link-local
addresses, which is discussed further in
<xref target="I-D.schinazi-httpbis-link-local-uri-bcp" format="default" sectionFormat="of" derivedContent="LINK-LOCAL-URI"/>.
Because of this, the recommendations and normative statements in this
document do not apply to URIs fetched by web browsers.</t>
    </section>
    <section anchor="security" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">As explained in <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/>, zone identifiers
         are of local significance only and must not be sent on the wire.
         In particular, see the final security consideration
         of <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/>, which indicates that software
         should not trust packets that contain textual non-global
         addresses as data. Therefore, software that obtains 
         a zone identifier through
         a UI should not transmit it further.
      </t>
      <t indent="0" pn="section-6-2">There is no formal limit on the length of the zone identifier
      string in <xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/>. A UI implementation should apply an appropriate
      length limit when inputting a zone identifier, in order
      to minimize the risk of a buffer overrun. Typically, this limit
      would be the same as the host operating system's limit on interface names.</t>
      <t indent="0" pn="section-6-3"><xref target="RFC4007" format="default" sectionFormat="of" derivedContent="RFC4007"/> does not specify or restrict the character set allowed in a zone
      identifier. Therefore, each implementation processing zone identifiers needs
      to make checks appropriate for the environment it is used in. For example,
      a UI implementation should not allow ASCII NUL characters in a zone identifier
      string as this could cause inconsistencies in subsequent string processing.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.schinazi-httpbis-link-local-uri-bcp" to="LINK-LOCAL-URI"/>
    <displayreference target="I-D.ietf-6man-rfc6874bis" to="RFC6874bis"/>
    <displayreference target="I-D.ietf-v6ops-6mops" to="IPv6-MOSTLY"/>
    <references pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC4007" target="https://www.rfc-editor.org/info/rfc4007" quoteTitle="true" derivedAnchor="RFC4007">
          <front>
            <title>IPv6 Scoped Address Architecture</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <author fullname="T. Jinmei" initials="T." surname="Jinmei"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="B. Zill" initials="B." surname="Zill"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">This document specifies the architectural characteristics, expected behavior, textual representation, and usage of IPv6 addresses of different scopes. According to a decision in the IPv6 working group, this document intentionally avoids the syntax and usage of unicast site-local addresses. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4007"/>
          <seriesInfo name="DOI" value="10.17487/RFC4007"/>
        </reference>
        <reference anchor="RFC4291" target="https://www.rfc-editor.org/info/rfc4291" quoteTitle="true" derivedAnchor="RFC4291">
          <front>
            <title>IP Version 6 Addressing Architecture</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="February" year="2006"/>
            <abstract>
              <t indent="0">This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
              <t indent="0">This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4291"/>
          <seriesInfo name="DOI" value="10.17487/RFC4291"/>
        </reference>
        <reference anchor="RFC5952" target="https://www.rfc-editor.org/info/rfc5952" quoteTitle="true" derivedAnchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t indent="0">As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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>
      <references pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-v6ops-6mops" target="https://datatracker.ietf.org/doc/html/draft-ietf-v6ops-6mops-01" quoteTitle="true" derivedAnchor="IPv6-MOSTLY">
          <front>
            <title>IPv6-Mostly Networks: Deployment and Operations Considerations</title>
            <author fullname="Nick Buraglio" initials="N." surname="Buraglio">
              <organization showOnFrontPage="true">Energy Sciences Network</organization>
            </author>
            <author fullname="Ondřej Caletka" initials="O." surname="Caletka">
              <organization showOnFrontPage="true">RIPE NCC</organization>
            </author>
            <author fullname="Jen Linkova" initials="J." surname="Linkova">
              <organization showOnFrontPage="true">Google</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t indent="0">This document discusses a deployment scenario called "an IPv6-Mostly network", when IPv6-only and IPv4-enabled endpoints coexist on the same network (network segment, VLAN, SSID etc).</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-6mops-01"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.schinazi-httpbis-link-local-uri-bcp" target="https://datatracker.ietf.org/doc/html/draft-schinazi-httpbis-link-local-uri-bcp-03" quoteTitle="true" derivedAnchor="LINK-LOCAL-URI">
          <front>
            <title>Best Practices for Link-Local Connectivity in URI-Based Protocols</title>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization showOnFrontPage="true">Google LLC</organization>
            </author>
            <date day="22" month="February" year="2024"/>
            <abstract>
              <t indent="0">Link-local IP connectivity allows hosts on the same network to communicate with each other without the need for centralized IP addressing infrastructure. The IP prefixes 169.254.0.0/16 and fe80::/10 were reserved for this purpose. However, both IP versions have limitations that make link-local addresses unideal for usage with URI-based protocols. This document provides guidance for how best to enable link-local connectivity in such protocols. This document also obsoletes RFC 6874, a previous attempt at solving this issue.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schinazi-httpbis-link-local-uri-bcp-03"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="LL-HACK" target="https://web.archive.org/web/20210725030713/https://website.peterjin.org/wiki/Snippets:IPv6_link_local_connect_hack" quoteTitle="true" derivedAnchor="LL-HACK">
          <front>
            <title>Snippets: IPv6 link-local connect hack</title>
            <author fullname="Peter Jin"/>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="ONE-NET" target="https://www.nmea.org/nmea-onenet.html" quoteTitle="true" derivedAnchor="ONE-NET">
          <front>
            <title>OneNet Marine IPv6 Ethernet Networking Standard</title>
            <author fullname="NMEA"/>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="POSIX" target="https://doi.org/10.1109/IEEESTD.2024.10555529" quoteTitle="true" derivedAnchor="POSIX">
          <front>
            <title>IEEE/Open Group Standard for Information Technology--Portable Operating System Interface (POSIX(TM)) Base Specifications, Issue 8</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date year="2024" month="June"/>
          </front>
          <seriesInfo name="IEEE Std" value="1003.1-2024"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2024.10555529"/>
        </reference>
        <reference anchor="RFC1918" target="https://www.rfc-editor.org/info/rfc1918" quoteTitle="true" derivedAnchor="RFC1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="B. Moskowitz" initials="B." surname="Moskowitz"/>
            <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
            <author fullname="G. J. de Groot" initials="G. J." surname="de Groot"/>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <date month="February" year="1996"/>
            <abstract>
              <t indent="0">This document describes address allocation for private internets. 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="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
        <reference anchor="RFC3493" target="https://www.rfc-editor.org/info/rfc3493" quoteTitle="true" derivedAnchor="RFC3493">
          <front>
            <title>Basic Socket Interface Extensions for IPv6</title>
            <author fullname="R. Gilligan" initials="R." surname="Gilligan"/>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="J. Bound" initials="J." surname="Bound"/>
            <author fullname="J. McCann" initials="J." surname="McCann"/>
            <author fullname="W. Stevens" initials="W." surname="Stevens"/>
            <date month="February" year="2003"/>
            <abstract>
              <t indent="0">The de facto standard Application Program Interface (API) for TCP/IP applications is the "sockets" interface. Although this API was developed for Unix in the early 1980s it has also been implemented on a wide variety of non-Unix systems. TCP/IP applications written using the sockets API have in the past enjoyed a high degree of portability and we would like the same portability with IPv6 applications. But changes are required to the sockets API to support IPv6 and this memo describes these changes. These include a new socket address structure to carry IPv6 addresses, new address conversion functions, and some new socket options. These extensions are designed to provide access to the basic IPv6 features required by TCP and UDP applications, including multicasting, while introducing a minimum of change into the system and providing complete compatibility for existing IPv4 applications. Additional extensions for advanced IPv6 features (raw sockets and access to the IPv6 extension headers) are defined in another document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3493"/>
          <seriesInfo name="DOI" value="10.17487/RFC3493"/>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" quoteTitle="true" derivedAnchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t indent="0">A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC6454" target="https://www.rfc-editor.org/info/rfc6454" quoteTitle="true" derivedAnchor="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t indent="0">This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="RFC6874" target="https://www.rfc-editor.org/info/rfc6874" quoteTitle="true" derivedAnchor="RFC6874">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="February" year="2013"/>
            <abstract>
              <t indent="0">This document describes how the zone identifier of an IPv6 scoped address, defined as in the IPv6 Scoped Address Architecture (RFC 4007), can be represented in a literal IPv6 address and in a Uniform Resource Identifier that includes such a literal address. It updates the URI Generic Syntax specification (RFC 3986) accordingly.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6874"/>
          <seriesInfo name="DOI" value="10.17487/RFC6874"/>
        </reference>
        <reference anchor="I-D.ietf-6man-rfc6874bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-6man-rfc6874bis-09" quoteTitle="true" derivedAnchor="RFC6874bis">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="Brian E. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="Stuart Cheshire" initials="S." surname="Cheshire">
              <organization showOnFrontPage="true">Apple Inc.</organization>
            </author>
            <author fullname="Bob Hinden" initials="R." surname="Hinden">
              <organization showOnFrontPage="true">Check Point Software</organization>
            </author>
            <date day="2" month="July" year="2023"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-6man-rfc6874bis-09"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC6991" target="https://www.rfc-editor.org/info/rfc6991" quoteTitle="true" derivedAnchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t indent="0">This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC7622" target="https://www.rfc-editor.org/info/rfc7622" quoteTitle="true" derivedAnchor="RFC7622">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Address Format</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="September" year="2015"/>
            <abstract>
              <t indent="0">This document defines the address format for the Extensible Messaging and Presence Protocol (XMPP), including support for code points outside the ASCII range. This document obsoletes RFC 6122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7622"/>
          <seriesInfo name="DOI" value="10.17487/RFC7622"/>
        </reference>
        <reference anchor="RFC8089" target="https://www.rfc-editor.org/info/rfc8089" quoteTitle="true" derivedAnchor="RFC8089">
          <front>
            <title>The "file" URI Scheme</title>
            <author fullname="M. Kerwin" initials="M." surname="Kerwin"/>
            <date month="February" year="2017"/>
            <abstract>
              <t indent="0">This document provides a more complete specification of the "file" Uniform Resource Identifier (URI) scheme and replaces the very brief definition in Section 3.10 of RFC 1738.</t>
              <t indent="0">It defines a common syntax that is intended to interoperate across the broad spectrum of existing usages. At the same time, it notes some other current practices around the use of file URIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8089"/>
          <seriesInfo name="DOI" value="10.17487/RFC8089"/>
        </reference>
        <reference anchor="RFC8925" target="https://www.rfc-editor.org/info/rfc8925" quoteTitle="true" derivedAnchor="RFC8925">
          <front>
            <title>IPv6-Only Preferred Option for DHCPv4</title>
            <author fullname="L. Colitti" initials="L." surname="Colitti"/>
            <author fullname="J. Linkova" initials="J." surname="Linkova"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Mrugalski" initials="T." surname="Mrugalski"/>
            <date month="October" year="2020"/>
            <abstract>
              <t indent="0">This document specifies a DHCPv4 option to indicate that a host supports an IPv6-only mode and is willing to forgo obtaining an IPv4 address if the network provides IPv6 connectivity. It also updates RFC 2563 to specify DHCPv4 server behavior when the server receives a DHCPDISCOVER not containing the Auto-Configure option but containing the new option defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8925"/>
          <seriesInfo name="DOI" value="10.17487/RFC8925"/>
        </reference>
      </references>
    </references>
    <section anchor="ack" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">This document owes a lot to the previous discussions that led to <xref target="RFC6874" format="default" sectionFormat="of" derivedContent="RFC6874"/> and to the expired Internet-Draft <xref target="I-D.ietf-6man-rfc6874bis" format="default" sectionFormat="of" derivedContent="RFC6874bis"/>.</t>
      <t indent="0" pn="section-appendix.a-2">Useful comments were received from <contact fullname="Erik       Auerswald"/>, <contact fullname="Nick Buraglio"/>, <contact fullname="Martin J. Dürst"/>, <contact fullname="Toerless Eckert"/>,
      <contact fullname="David Farmer"/>, <contact fullname="Brian       Haberman"/>, <contact fullname="Nate Karstens"/>, <contact fullname="Tero Kivinen"/>, <contact fullname="Erik Kline"/>, <contact fullname="Jen Linkova"/>, <contact fullname="Eduard Metz"/>, <contact fullname="Gyan Mishra"/>,  <contact fullname="David Schinazi"/>, <contact fullname="Jürgen Schönwälder"/>,
      <contact fullname="Michael Sweet"/>, <contact fullname="Martin       Thomson"/>, <contact fullname="Ole Troan"/>, <contact fullname="Éric Vyncke"/>, <contact fullname="Magnus       Westerlund"/>, and other participants in the 6MAN WG.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="B." surname="Carpenter" fullname="Brian Carpenter">
        <organization abbrev="Univ. of Auckland" showOnFrontPage="true"/>
        <address>
          <postal>
            <street>School of Computer Science</street>
            <street>University of Auckland</street>
            <street>PB 92019</street>
            <city>Auckland 1142</city>
            <country>New Zealand</country>
          </postal>
          <email>brian.e.carpenter@gmail.com</email>
        </address>
      </author>
      <author fullname="Robert M. Hinden" initials="R" surname="Hinden">
        <organization showOnFrontPage="true">Check Point Software</organization>
        <address>
          <postal>
            <street>959 Skyway Road</street>
            <city>San Carlos</city>
            <region>CA</region>
            <code>94070</code>
            <country>United States of America</country>
          </postal>
          <email>bob.hinden@gmail.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
