IPv6 Aggregatable Global Unicast Addresses – Overview and Usage

ipipv6rfcroute-summarization

Studying IPv6 addressing I haven't understood IPv6 aggregable global unicast addresses, I mean on RFC 4291 there is a generic scheme:

|         n bits         |   m bits  |       128-n-m bits         |
+------------------------+-----------+----------------------------+
| global routing prefix  | subnet ID |       interface ID         |
+------------------------+-----------+----------------------------+

But looking for formats used I see in my book(Halsall) the format used is this:

|  3  | 5  |  8   |    32          |       16      |          64                    |
+-----+----+------+----------------+---------------+--------------------------------+
| 010 | reg| TLA  |  NLA           |  SLA          |  interface ID                  |
+-----+----+------+----------------+---------------+--------------------------------+

and in the web, for example on the microsoft site, the format used is this:

|  3  |     13    |     8    |       24      |    16     |      64                  |
+-----+----+------+----------+---------------+-----------+--------------------------+
| 001 |    TLA    | reserved |    NLA        |    SLA    |        interface ID      |
+-----+----+------+----------+---------------+-----------+--------------------------+

My questions are:

  • why is there more than one format of aggregatable global unicast addresses?
  • Are there other formats or these 2 are the only 2 defined?

Thanks.

Best Answer

TLA/NLA structure for IPv6 addresses

The TLA/NLA allocation structure has been deprecated in RFC 3587, August 2003:

2. TLA/NLA Made Historic

The TLA/NLA scheme has been replaced by a coordinated allocation policy defined by the Regional Internet Registries (RIRs) [IPV6RIR].

Part of the motivation for obsoleting the TLA/NLA structure is technical; for instance, there is concern that TLA/NLA is not the technically best approach at this stage of the deployment of IPv6. Moreover, the allocation of IPv6 addresses is related to policy and to the stewardship of the IP address space and routing table size, which the RIRs have been managing for IPv4. It is likely that the RIRs' policy will evolve as IPv6 deployment proceeds.

The IETF has provided technical input to the RIRs (for example, [RFC3177]), which the RIRs have taken into account when defining their address allocation policy.

RFC 2374 was the definition of addresses for Format Prefix 001 (2000::/3) which is formally made historic by this document. Even though currently only 2000::/3 is being delegated by the IANA, implementations should not make any assumptions about 2000::/3 being special. In the future, the IANA might be directed to delegate currently unassigned portions of the IPv6 address space for the purpose of Global Unicast as well.

The Subnet Local Aggregator (SLA) field in RFC 2374 remains in function but with a different name in [ARCH]. Its new name is "subnet ID".

As can be seen in the last paragraph, the SLA has survived from the three, now being called subnet ID.

I think they should have obsoleted RFC 2450 together with RFC 2374 in RFC 3587. It does not make sense anymore, but it was only informational anyway.

Global Unicast prefixes

Your book is certainly wrong on the prefix. A bit prefix of 010 would mean the address space of 4000::/3, which is indeed Global Unicast as to RFC 4291, but does not identify the whole Global Unicast range, and is not even the one currently assigned by IANA, which is only 2000::/3 (i.e. address bits starting with 001).

In fact, almost all addresses before fc00::/128 (which starts the Unique Local Unicast address range) are Global Unicast, with the exceptions of the unspecified address :: and the loopback address ::1. There are some special ranges starting with the bits 000, like ::ffff:0:0/96 (IPv4-mapped IPv6 addresses) or 64:ff9b::/96 (for IPv4/IPv6 address translation, see RFC 6052). They allow Interface Identifiers with less than 64 bits. But all addresses starting with 001 have a 64 bit Interface Identifier (see RFC 4291, section 2.5.4, right from where you cited).

As I can see, the definition of the address structure from RFC 4291 is the most current one. There are three RFCs updating 4291 (RFC 5952, RFC 6052, RFC 7136), but none of them changes this structure.

Please note that the [IPV6RIR] reference points to the IPv6 registry policies, currently being ripe-589 which is "developed through joint discussions among the APNIC, ARIN and RIPE communities."