<?xml version="1.0" encoding="US-ASCII"?>
<!-- This is built from a template for a generic Internet Draft. Suggestions for
     improvement welcome - write to Brian Carpenter, brian.e.carpenter @ gmail.com 
     This can be converted using the Web service at http://xml.resource.org/ -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<!-- You want a table of contents -->
<?rfc symrefs="yes"?>
<!-- Use symbolic labels for references -->
<?rfc sortrefs="yes"?>
<!-- This sorts the references -->
<?rfc iprnotified="no" ?>
<!-- Change to "yes" if someone has disclosed IPR for the draft -->
<?rfc compact="yes"?>
<!-- This defines the specific filename and version number of your draft (and inserts the appropriate IETF boilerplate -->
<rfc category="std" docName="draft-carpenter-6man-whats-global-00" ipr="trust200902">
  <front>
    <title abbrev="What's Global?">What does 'global' mean in IPv6?</title>

    <author fullname="Brian Carpenter" initials="B. E." surname="Carpenter">
      <organization abbrev="Univ. of Auckland"/>

      <address>
        <postal>
          <street>Department of Computer Science</street>
          <street>University of Auckland</street>
          <street>PB 92019</street>
          <city>Auckland</city>
          <region/>
          <code>1142</code>
          <country>New Zealand</country>
        </postal>

        <email>brian.e.carpenter@gmail.com</email>
      </address>
    </author>

  

    <!---->

    <date day="8" month="June" year="2016"/>

    <abstract>
      <t>The word 'global' is used in two different ways in various IPv6-related
      RFCs and an IANA registry. This document describes the resulting problem.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="problem" title="Problem description">
      <t>As defined in the IPv6 Addressing Architecture <xref target="I-D.ietf-6man-rfc4291bis"/>,
      most of the IPv6 address space is reserved for Global Unicast addresses. The high order
      bits of such addresses are named 'global routing prefix'. However, the word 'global'
      is not itself defined in the context of unicast addresses. </t>
      
      <t>One subset of Global Unicast address space is defined for Unique Local Addresses <xref target="RFC4193"/>.
      One can quarrel with something being called 'global' and 'local' at the same time, but RFC 4193 is categorical:</t>
      
      <t><figure>
          <artwork align="center"><![CDATA[
This document defines an IPv6 unicast address format that is globally
unique and is intended for local communications, usually inside of a
site.  These addresses are not expected to be routable on the global
Internet.
...
      - Globally unique prefix (with high probability of uniqueness).
...
      - In practice, applications may treat these addresses like global
        scoped addresses.
...
By default, the scope of these addresses is global.  That is, they
are not limited by ambiguity like the site-local addresses defined in
[ADDARCH].  Rather, these prefixes are globally unique, and as such,
their applicability is greater than site-local addresses.  Their
limitation is in the routability of the prefixes, which is limited to
a site and any explicit routing agreements with other sites to
propagate them...
]]></artwork>
      </figure></t>
      <t>In summary: ULAs are defined in these standards track documents as 'global'.</t>
      <t>However, the IANA registry for special-purpose IPv6 addresses
      <eref target="http://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml"/>,
      and the RFC that
      controls it <xref target="RFC6890"/> use the following definition:</t>
      <t><figure>
          <artwork align="center"><![CDATA[
o    Global - A boolean value indicating whether an IP datagram whose
     destination address is drawn from the allocated special-purpose
     address block is forwardable beyond a specified administrative
     domain.
]]></artwork>
      </figure></t>
      <t>It is evident, even from the last sentence quoted above from RFC 4193, that ULAs
      do not meet this definition of 'global'. As a result, they are marked in the registry
      with Global = False. The registry also assigns them the property Forwardable = True,
      which is of course valid, but the fact remains that some RFCs say that ULAs are global,
      but RFC 6890 and the registry say that they are not.</t>
      
      <t>This inconsistency has consequences. Of course, it is always possible for code that manipulates
      IPv6 addresses to determine with certainty that a given address is, or is not, a ULA. But any code
      that uses the property 'global' from the IANA registry as a decision criterion might be wrong.</t>
      
      <t>As an example, consider the Python 'ipaddress' module
      <eref target="https://docs.python.org/3.4/library/ipaddress.html#ipaddress.IPv4Address.is_private"/>,
      which explicitly cites the IANA registry. It provides the property 'is_global'
      which tests False for ULAs. A reader of RFC 4193 would expect True. The correct test in Python
      (apart from an explicit match with fc00::/7) is (is_private and not is_link_local). </t>

    </section>

    <section anchor="fixes" title="Possible fixes">
    <t><list style="numbers">
    <t>Do nothing.</t>
    <t>Change the registry entry for ULAs to Global=True (and update text and RFC 6890 accordingly).</t>
    <t>That, plus rename the registry column from 'Global' to 'Global scope'.</t>
    <t>Change the registry entry for ULAs to Global=Undefined (and update text and RFC 6890 accordingly).</t>
    <t>Rename the registry column from 'Global' to 'Globally reachable' (and update text and RFC 6890 accordingly).</t>
    <t>That, plus add a registry column for 'Global scope'.</t>
    <t>Your suggestion goes here.</t>
    </list></t>
    
    </section>

    <section anchor="security" title="Security Considerations">
      <t>Misclassification of a ULA as non-global might cause it to be used for a purpose that should
      be limited to link-local addresses for security reasons.</t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>If any changes are made as a result of this discussion, they will require IANA actions.</t>

      <t/>
    </section>


  </middle>
  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.4193'?>
      <?rfc include='reference.RFC.6890'?>
      <?rfc include='reference.I-D.ietf-6man-rfc4291bis'?>

    </references>

    <!-- <references title="Informative References">


    </references> -->
  </back>
</rfc>
