RFC 2374
An IPv6 Aggregatable Global Unicast Address Format
RFC 2374: An IPv6 Aggregatable Global Unicast Address Format π¦
This one was written by R. Hinden (Nokia), M. O'Dell (UUNET), and S. Deering (Cisco) for the Network Working Group, and it's dated July 1998. It's a Standards Track doc, and it obsoletes RFC 2073. Okay, let's get into it! π
Status of this Memo
Okay so this is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements π«Ά If you want the current standardization state and status, check the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited β¨
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved. πΈ
1.0 Introduction β¨
This doc defines an IPv6 aggregatable global unicast address format for use on the Internet π It's consistent with the IPv6 Protocol [IPV6] and the "IPv6 Addressing Architecture" [ARCH], and it's designed to make scalable Internet routing easier π
It replaces RFC 2073, "An IPv6 Provider-Based Unicast Address Format," which is going to become historic π This format is a major glow-up from RFC 2073. The big changes are: the registry bits are gone (they weren't needed for route aggregation), it supports EUI-64 based interface identifiers, it supports provider and exchange based aggregation, it separates public and site topology, and it comes with new aggregation based terminology π₯
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119]. Important bestie stuff, so read it carefully π
2.0 Overview of the IPv6 Address π§
IPv6 addresses are 128-bit identifiers for interfaces and sets of interfaces π There are three types: Unicast, Anycast, and Multicast. This document only defines one specific type of Unicast address, so we're zooming in on that one β
Fields in addresses get specific names here, like "subnet." When the name is paired with "ID" (for "identifier"), as in "subnet ID," it refers to the contents of that field. When it's paired with "prefix," as in "subnet prefix," it refers to all of the addressing bits to the left of this field and including it π¦
IPv6 unicast addresses are designed around the idea that the Internet routing system makes forwarding decisions with a "longest prefix match" algorithm on arbitrary bit boundaries. Routing doesn't know anything about the internal structure of IPv6 addresses. That structure exists for assignment and allocation, not for routing π The only exception is the distinction between unicast and multicast addresses. Iconic restraint, honestly π
The specific type of an IPv6 address is shown by its leading bits. That variable-length field of leading bits is called the Format Prefix (FP) πΈ
This document defines an address format for the 001 (binary) Format Prefix for Aggregatable Global Unicast addresses. The same format could be used with other Format Prefixes, as long as those prefixes also identify IPv6 unicast addresses. Only the "001" Format Prefix is defined here, so that's the only one we're talking about π«Ά
3.0 IPv6 Aggregatable Global Unicast Address Format π
This document defines an address format for IPv6 aggregatable global unicast address assignment. The authors think this format will be widely used by IPv6 nodes connected to the Internet, and ngl that's a very real prediction π₯ It's built to support both the current provider-based aggregation and a new kind of exchange-based aggregation. Together they give efficient routing aggregation for sites that connect directly to providers and for sites that connect to exchanges. Sites get to choose which type of aggregation entity they connect to π
Even though this format supports exchange-based aggregation on top of the current provider-based aggregation, it doesn't depend on exchanges for its overall route aggregation properties. It still gives efficient route aggregation with only provider-based aggregation π¦
Aggregatable addresses are organized into a three level hierarchy:
- Public Topology
- Site Topology
- Interface Identifier
Public topology is the collection of providers and exchanges that provide public Internet transit services. Site topology is local to a specific site or organization that doesn't provide public transit service to nodes outside the site. Interface identifiers identify interfaces on links β¨
Here's the picture of how it all fits together:
______________ ______________
--+/ \+--------------+/ \+----------
( P1 ) +----+ ( P3 ) +----+
+\______________/ | |----+\______________/+--| |--
| +--| X1 | +| X2 |
| ______________ / | |-+ ______________ / | |--
+/ \+ +-+--+ \ / \+ +----+
( P2 ) / \ +( P4 )
--+\______________/ / \ \______________/
| / \ | |
| / | | |
| / | | |
_|_ _/_ _|_ _|_ _|_
/ \ / \ / \ / \ / \
( S.A ) ( S.B ) ( P5 ) ( P6 )( S.C )
\___/ \___/ \___/ \___/ \___/
| / \
_|_ _/_ \ ___
/ \ / \ +-/ \
( S.D ) ( S.E ) ( S.F )
\___/ \___/ \___/
As the figure shows, the aggregatable address format is built to support long-haul providers (shown as P1, P2, P3, and P4), exchanges (shown as X1 and X2), multiple levels of providers (shown at P5 and P6), and subscribers (shown as S.x) π Unlike current NAPs, FIXes, etc., exchanges will allocate IPv6 addresses π
Organizations that connect to these exchanges will also subscribe to long-haul service from one or more long-haul providers, either directly or indirectly through the exchange. Doing that gets them addressing independence from long-haul transit providers π They can change long-haul providers without renumbering their organization. They can also be multihomed through the exchange to more than one long-haul provider without needing address prefixes from each of them. Note that the mechanisms for this type of provider selection and portability are not discussed in this document π§
3.1 Aggregatable Global Unicast Address Structure π
The aggregatable global unicast address format looks like this:
| 3| 13 | 8 | 24 | 16 | 64 bits |
+--+-----+---+--------+--------+--------------------------------+
|FP| TLA |RES| NLA | SLA | Interface ID |
| | ID | | ID | ID | |
+--+-----+---+--------+--------+--------------------------------+
<--Public Topology---> Site
<-------->
Topology
<------Interface Identifier----->
Here's what each piece means:
FP Format Prefix (001)
TLA ID Top-Level Aggregation Identifier
RES Reserved for future use
NLA ID Next-Level Aggregation Identifier
SLA ID Site-Level Aggregation Identifier
INTERFACE ID Interface Identifier
The following sections specify each part of the IPv6 Aggregatable Global Unicast address format π
3.2 Top-Level Aggregation ID π
Top-Level Aggregation Identifiers (TLA ID) are the top level of the routing hierarchy. Default-free routers must have a routing table entry for every active TLA ID, and they'll probably have additional entries that provide routing information for the TLA ID they're located in. They may have additional entries to optimize routing for their specific topology, but the routing topology at all levels must be designed to minimize the number of additional entries fed into the default-free routing tables π₯
This addressing format supports 8,192 (2^13) TLA IDs. More TLA IDs can be added by growing the TLA field to the right into the reserved field, or by using this format for additional format prefixes π¦
The issues relating to TLA ID assignment are beyond the scope of this document. They'll be described in a document that's still under preparation π«Ά
3.3 Reserved πΈ
The Reserved field is reserved for future use and must be set to zero π
The Reserved field allows for future growth of the TLA and NLA fields as appropriate. For a discussion of that, see section 4.0 π Part 2 is coming up next, so stay tuned, bestie! π§β¨
3.4 Next-Level Aggregation Identifier β¨
Okay bestie, so NLA IDs are what organizations with a TLA ID use to build their own addressing hierarchy πΈ and to identify sites. The org gets to decide how the top part of the NLA ID is arranged so it fits their network, and the leftover bits in the field are for the sites they want to serve π
| n | 24-n bits | 16 | 64 bits |
+-----+--------------------+--------+-----------------+
|NLA1 | Site ID | SLA ID | Interface ID |
+-----+--------------------+--------+-----------------+
Every org with a TLA ID gets 24 bits of NLA ID space π. That's enough for each org to serve roughly as many organizations as the current IPv4 Internet can support total networks. Literally iconic π
TLA orgs can also hand out NLA IDs inside their own Site ID space π¦. This lets them serve orgs that provide public transit service and orgs that don't. The orgs that receive an NLA ID MAY also choose to use their own Site ID space to support other NLA IDs, so it can keep nesting, like the diagrams show π§
| n | 24-n bits | 16 | 64 bits |
+-----+--------------------+--------+-----------------+
|NLA1 | Site ID | SLA ID | Interface ID |
+-----+--------------------+--------+-----------------+
| m | 24-n-m | 16 | 64 bits |
+-----+--------------+--------+-----------------+
|NLA2 | Site ID | SLA ID | Interface ID |
+-----+--------------+--------+-----------------+
| o |24-n-m-o| 16 | 64 bits |
+-----+--------+--------+-----------------+
|NLA3 | Site ID| SLA ID | Interface ID |
+-----+--------+--------+-----------------+
The bit layout of the NLA ID space for a specific TLA ID is up to the org responsible for that TLA ID π. Same deal one level down: the layout of the next-level NLA ID is up to the NLA ID above it. It is RECOMMENDED that orgs handing out NLA address space use "slow start" allocation procedures similar to [RFC2050] π
Designing an NLA ID plan is a tradeoff between routing aggregation efficiency and flexibility π. Making hierarchies gives you more aggregation and smaller routing tables. Flat NLA ID assignment is easier to allocate and gives more attachment flexibility, but the routing tables get bigger π
3.5 Site-Level Aggregation Identifier β¨
The SLA ID field is how an org builds its own local addressing hierarchy and identifies its subnets π. It's kind of like subnets in IPv4, except every org gets a way bigger number of subnets. The 16 bit SLA ID field supports 65,535 individual subnets π€―
Orgs can route their SLA ID "flat" (meaning no logical relationship between the SLA identifiers, which results in bigger routing tables), or they can make a two or more level hierarchy in the SLA ID field, which results in smaller routing tables π¦ The hierarchy version looks like this:
| n | 16-n | 64 bits |
+-----+------------+-------------------------------------+
|SLA1 | Subnet | Interface ID |
+-----+------------+-------------------------------------+
| m |16-n-m | 64 bits |
+----+-------+-------------------------------------+
|SLA2|Subnet | Interface ID |
+----+-------+-------------------------------------+
How you structure the SLA ID field is totally up to the individual org π
The number of subnets this address format supports SHOULD be enough for all but the largest orgs π. If an org needs more subnets, it can work with the organization it gets Internet service from to obtain additional site identifiers and use those to create more subnets π«Ά
3.6 Interface ID β¨
Interface identifiers are used to identify interfaces on a link π§ They are REQUIRED to be unique on that link. They MAY also be unique over a broader scope. Often an interface identifier is the same as, or based on, the interface's link-layer address π Interface IDs used in the aggregatable global unicast address format are REQUIRED to be 64 bits long and to be built in IEEE EUI-64 format [EUI-64] πΈ These identifiers MAY have global scope when a global token (like an IEEE 48bit MAC) is available, or MAY have local scope when no global token is available (for example serial links or tunnel end-points) π₯
The "u" bit (the universal/local bit in IEEE EUI-64 terminology) in the EUI-64 identifier MUST be set correctly, as defined in [ARCH], to show whether the scope is global or local π
The procedures for creating EUI-64 based Interface Identifiers are defined in [ARCH] π The details on forming interface identifiers are in the appropriate "IPv6 over <link>" spec, such as "IPv6 over Ethernet" [ETHER], "IPv6 over FDDI" [FDDI], and so on β¨
4.0 Technical Motivation π
Okay so the sizes of the fields in the aggregatable address format weren't random at all π§ They were picked to meet a bunch of technical requirements, and we're about to go through them bestie π«Ά
The Top-Level Aggregation Identifier is 13 bits, which allows for 8,192 TLA IDs π This size was chosen to make sure the default-free routing table in top level routers stays within the limits of current routing technology, with a reasonable margin. That margin matters because default-free routers also carry a significant number of longer (more-specific) prefixes for optimizing paths inside a TLA and between TLAs π
The real issue isn't only how big the default-free routing table is, but how complicated the topology is, since that decides how many copies of the default-free routes a router has to look at while building a forwarding table π§ With IPv4 right now, it's super common to see a prefix announced fifteen times via different paths π
Internet topology is very likely to get more complex in the future π It's important that IPv6 default-free routing can handle that extra complexity, plus a way bigger internet π
For comparison, at the time of this writing (spring, 1998), the IPv4 default-free routing table had around 50,000 prefixes π That shows it's possible to support more routes than 8,192, but whether IPv4's prefix count is already too high for current routing technology is up for debate π There are serious issues with route stability, and some providers aren't supporting all top level prefixes either π The technical goal was to pick a TLA ID size that sits below what's being done with IPv4, with a reasonable margin β¨
13 bits for the TLA field was an engineering compromise π¦ Fewer bits wouldn't have supported enough top level orgs. More bits would've gone past what can reasonably be handled, with a reasonable margin, by current routing technology, given the issues in the paragraphs above π ββοΈ
If routing technology gets better in the future and can support more top level routes in the default-free routing tables, there are two ways to increase the number of TLA IDs. The first is to expand the TLA ID field into the reserved field, which would get you to approximately 2 million TLA IDs π€© The second is to allocate another format prefix (FP) for this address format. Either one, or a combo of both, lets the number of TLA IDs grow a lot πΈ
The Reserved field is 8 bits. That size was picked to allow significant growth of either the TLA ID or the NLA ID fields π
The Next-Level Aggregation Identifier field is 24 bits π
That allows for approximately sixteen million NLA IDs if they're used in a flat way π³ Used hierarchically, it allows for a complexity roughly equal to the IPv4 address space (assuming an average network size of 254 interfaces) π§ If more room for complexity is needed in the NLA ID later, it can be accommodated by extending the NLA ID into the Reserved field π
The Site-Level Aggregation Identifier field is 16 bits, which supports 65,535 individual subnets per site π¦ The design goal was to make it enough for all but the largest orgs. Orgs that need more subnets can work with their Internet service provider to get additional site identifiers and use those to create more subnets π«Ά
The SLA ID field got a fixed size so that the length of every prefix identifying a particular site would be the same, which is 48 bits π₯ That makes it easier to move sites around the topology, like changing service providers or multi-homing to several providers π
The Interface ID field is 64 bits. This size was chosen to meet the requirement in [ARCH] to support EUI-64 based Interface Identifiers π
5.0 Acknowledgments π«Ά
The authors would like to say a huge thank you to Thomas Narten, Bob Fink, Matt Crawford, Allison Mankin, Jim Bound, Christian Huitema, Scott Bradner, Brian Carpenter, John Stewart, and Daniel Karrenberg for reviewing and leaving constructive comments π You all are iconic β¨
6.0 References π
- [ALLOC] IAB and IESG, "IPv6 Address Allocation Management", RFC 1881, December 1995.
- [ARCH] Hinden, R., "IP Version 6 Addressing Architecture", RFC 2373, July 1998.
- [AUTH] Atkinson, R., "IP Authentication Header", RFC 1826, August 1995.
- [AUTO] Thompson, S., and T. Narten., "IPv6 Stateless Address Autoconfiguration", RFC 1971, August 1996.
- [ETHER] Crawford, M., "Transmission of IPv6 Packets over Ethernet Networks", Work in Progress.
- [EUI64] IEEE, "Guidelines for 64-bit Global Identifier (EUI-64) Registration Authority", http://standards.ieee.org/db/oui/tutorials/EUI64.html, March 1997.
- [FDDI] Crawford, M., "Transmission of IPv6 Packets over FDDI Networks", Work in Progress.
- [IPV6] Deering, S., and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 1883, December 1995.
- [RFC2050] Hubbard, K., Kosters, M., Conrad, D., Karrenberg, D., and J. Postel, "Internet Registry IP Allocation Guidelines", BCP 12, RFC 1466, November 1996.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
7.0 Security Considerations π¨
IPv6 addressing documents do not have any direct impact on Internet infrastructure security. Authentication of IPv6 packets is defined in [AUTH] π So the big security stuff lives in that doc, not here, so go check it out before you ship anything bestie π
8.0 Authors' Addresses β¨
Okay bestie, here's who to message if you have questions about this one π Three legends wrote it, and their contact info is right here π«Ά
Robert M. Hinden
Nokia
232 Java Drive
Sunnyvale, CA 94089
USA
Phone: 1 408 990-2004
EMail: hinden@iprg.nokia.com
Mike O'Dell
UUNET Technologies, Inc.
3060 Williams Drive
Fairfax, VA 22030
USA
Phone: 1 703 206-5890
EMail: mo@uunet.uu.net
Stephen E. Deering
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
USA
Phone: 1 408 527-8213
EMail: deering@cisco.com
9.0 Full Copyright Statement π
Now for the legal stuff, which we are NOT paraphrasing because it has to stay exactly as written π Here it is in full:
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. π
π¦ where this page comes from
- ietf: rfc2374 1998-07
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms