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:
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 of4000::/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 only2000::/3
(i.e. address bits starting with001
).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 bits000
, like::ffff:0:0/96
(IPv4-mapped IPv6 addresses) or64:ff9b::/96
(for IPv4/IPv6 address translation, see RFC 6052). They allow Interface Identifiers with less than 64 bits. But all addresses starting with001
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."