Unique local address
A unique local address (ULA) is an IPv6 address in the block fc00::/7, defined in RFC 4193. It is the approximate IPv6 counterpart of the IPv4 private address. Unique local addresses are available for use in private networks, e.g. inside a single site or organization or spanning a limited number of sites or organizations. They are not routable in the global IPv6 Internet.
Originally, in 1995, RFC 1884 reserved the block fec0::/10 for site-local addresses, that could be used within a "site" for private IPv6 networks. However, insufficient definition of the term site led to confusion over the resulting routing rules. RFC 3879 (September 2004) deprecated this address range and postulated solutions to its problems.
Subsequently, in October 2005, RFC 4193 was published, reserving the address block fc00::/7 for use in private IPv6 networks and defining the associated term unique local addresses.
The address block fc00::/7 is divided into two /8 groups:
- The block fc00::/8 has not been defined yet. It has been proposed to be managed by an allocation authority, but this has not gained acceptance in the IETF. This block is also used by the cjdns mesh network.
- The block fd00::/8 is defined for /48 prefixes, formed by setting the 40 least-significant bits of the prefix to a randomly generated bit string. This results in the format fdxx:xxxx:xxxx:: for a prefix in this range. RFC 4193 offers a suggestion for generating the random identifier to obtain a minimum-quality result if the user does not have access to a good source of random numbers.
As an example, a routing prefix in the fd00::/8 range would be constructed by generating a random 40-bit hexadecimal string, taken to be e48dba82e1 in this example. The string is appended to the fd00::/8 prefix. This forms the 48-bit routing prefix fde4:8dba:82e1::/48. With this prefix, 65536 subnets of size /64 are available for the private network: fde4:8dba:82e1::/64 to fde4:8dba:82e1:ffff::/64.
Prefixes in the fd00::/8 range have similar properties as those of the IPv4 private address ranges:
- They are not allocated by an address registry and may be used in networks by anyone without outside involvement.
- They are not guaranteed to be globally unique.
- Reverse Domain Name System (DNS) entries (under ip6.arpa) for fd00::/8 ULAs cannot be delegated in the global DNS.
As fd00::/8 ULAs are not meant to be routed outside their administrative domain (site or organization), administrators of interconnecting networks normally do not need to worry about the uniqueness of ULA prefixes. However, if networks require routing ULAs between each other in the event of a merger, for example, the risk of address collision is extremely small if the RFC 4193 selection algorithm was used.
Attempts of registration and allocation
For ULA prefixes, SixXS used to maintain a voluntary registration database to reduce the risk of duplicates. As such a database is neither standardized nor mandated, it reduces the risk of duplicates, but it can never eliminate it altogether. When the SixXS services were discontinued per 6 June 2017, the database became readonly.
For the fc00::/8 range, different design decisions have been proposed, trading the non-uniqueness for the requirement that the range be managed by a central allocation authority. However, such attempts at standardizing this range have not resulted in a Request for Comments.
- Internet Draft "Centrally Assigned Unique Local IPv6 Unicast Addresses". IETF. 2004–2007.
- Internet Draft "An Analysis of Centrally Assigned Unique Local Addresses". IETF. 2007.
- Internet Draft "Centrally Assigned IPv6 Unicast Unique Local Address Prefixes". IETF. 2009–2010.
- SIXXS voluntary database
- Stockebrand, Benedikt (2006). IPv6 in Practice. ISBN 3-540-24524-3.
- "Public ULA registration database (readonly since SixXS sunset, 6 June 2017)". SixXS.
- "The shell script used by KAME and SixXS for generating a ULA".
- "ULA draft proposal" (PDF). ARIN. 2004.
- Internet Draft "Analysis and recommendation for the ULA usage". IETF. 2012.