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.
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. 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.
- 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 (pseudo-)randomly generating a 40-bit hexadecimal string, taken to be fedcba9876 in this example. The 40-bit string is then appended to the fd00::/8 prefix. This forms the 48-bit routing prefix fdfe:dcba:9876::/48. Using this prefix, 65536 subnets of size /64 are available for use in the private network: fdfe:dcba:9876::/64 to fdfe:dcba:9876:ffff::/64.
It should be noted that the 40-bit string from this example was (obviously) not randomly generated. The prefix above is therefore in fact not a validly generated ULA routing prefix according to the standard. The standard requires that the 40-bit string be (pseudo-)randomly generated e.g. by using the algorithm specified in the standard. Any other (non-random) prefix has a high risk of being non-unique and thus cause a prefix collision.
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 is known to maintain a voluntary registration database to reduce the risk of duplicates. As such a database is neither standardized nor mandated, it will reduce the risk of duplicates, but it can never eliminate it altogether.
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