What does 'global' mean in IPv6?Department of Computer ScienceUniversity of AucklandPB 92019Auckland1142New Zealandbrian.e.carpenter@gmail.comThe word 'global' is used in two different ways in various IPv6-related
RFCs and an IANA registry. This document describes the resulting problem.As defined in the IPv6 Addressing Architecture ,
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. One subset of Global Unicast address space is defined for Unique Local Addresses .
One can quarrel with something being called 'global' and 'local' at the same time, but RFC 4193 is categorical:In summary: ULAs are defined in these standards track documents as 'global'.However, the IANA registry for special-purpose IPv6 addresses
,
and the RFC that
controls it use the following definition: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.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.As an example, consider the Python 'ipaddress' module
,
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). Do nothing.Change the registry entry for ULAs to Global=True (and update text and RFC 6890 accordingly).That, plus rename the registry column from 'Global' to 'Global scope'.Change the registry entry for ULAs to Global=Undefined (and update text and RFC 6890 accordingly).Rename the registry column from 'Global' to 'Globally reachable' (and update text and RFC 6890 accordingly).That, plus add a registry column for 'Global scope'.Your suggestion goes here.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.If any changes are made as a result of this discussion, they will require IANA actions.