RFC 2921
6BONE pTLA and pNLA Formats (pTLA)
Part 1 of 2 π
Network Working Group π
Request for Comments: 2921 Title: 6BONE pTLA and pNLA Formats (pTLA) Author: B. Fink (Bob Fink), ESnet, Lawrence Berkeley National Lab Category: Informational Date: September 2000 Obsoletes / Updates: none listed in this header
okay bestie, RFC 2921 is about how the 6bone (the IPv6 testbed) carved up its address space into pretend top-level and next-level chunks. it's giving "experimental prototype" and it's honestly so cute π§
Status of This Memo β¨
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.
Copyright Notice πΈ
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract π¦
This memo explains how the 6bone uses the 3FFE::/16 IPv6 address prefix, which was handed out in RFC 2471, "IPv6 Testing Address Allocation", [6BONE-TLA], to make up pseudo Top-Level Aggregation Identifiers (pTLA's) and pseudo Next-Level Aggregation Identifiers (pNLA's). β¨
Acknowledgements π«Ά
The address formats in here came from lots of early participants in the 6bone testbed project, plus folks from the IPng and NGtrans IETF working groups. thank you besties π
Table of Contents π
1. Introduction................................................. 1
2. 6BONE pTLA/pNLA Format....................................... 2
3. Security Considerations...................................... 6
References....................................................... 6
Author's Address................................................. 6
Full Copyright Statement......................................... 7
1. Introduction π
okay so this memo is the one that explains how the 6bone uses the 3FFE::/16 IPv6 address prefix, which was allocated in RFC 2471 [6BONE-TLA], to make pseudo Top-Level Aggregation Identifiers (pTLA) and pseudo Next-Level Aggregation Identifiers (pNLA). it's literally the main character of this whole doc π
the big guiding specs for IPv6 addressing (and for the pTLA and pNLA formats too) are "IP Version 6 Addressing Architecture" [ADDRARCH] and "An IPv6 Aggregatable Global Unicast Address Format" [AGGR]. so those are the ones you read first, obviously π
why make pretend TLA and NLA formats at all? ngl it's super smart. the goal was to build a prototype of the real TLA and NLA formats, the ones production IPv6 networks might actually use later. to do that cheaply, without eating up a ton of real production IPv6 address space, IANA (the Internet Assigned Numbers Authority) reserved a single TLA, 3FFE::/16, just for testing on the 6bone. so they needed a pretend TLA and NLA structure to live under that 3FFE::/16 prefix. that's the pseudo TLA and NLA situation π
here's the fun part. the 48-bit IPv6 Aggregatable Global Unicast Address external routing prefix (the bit that holds the TLA and NLA identifiers) has enough room to stretch the TLA ID so it can hold a pTLA, and to shrink the NLA ID so it becomes a pNLA. this document specifies exactly that β¨
then in early 1999 the 6bone decided to change its pTLA format so the testbed could grow way bigger, so it could fit more than the original 256 pTLA-s. so now there are two 6bone pTLA and pNLA formats, and this document specifies both of them π
2. 6BONE pTLA and pNLA Formats π
2.1 Original 8-bit pTLA and 24-bit pNLA Format π¦
the original pTLA and pNLA format was built to fit 256 pTLA-s, which are backbone networks carrying IPv6 transit traffic. iconic, honestly π
the original TLA and NLA ID-s from [AGGR] look like this:
| 3 | 13 | 32 | 16 | 64 bits |
+---+-----+---------------------+--------+-----------------+
|001| TLA | NLA ID | SLA ID | Interface ID |
+---+-----+---------------------+--------+-----------------+
the TLA value 1FFE was given to the 6bone. if you look at it with the 3-bit format prefix written in prefix notation, that's 3FFE::/16 β¨
the first 8 bits of the NLA ID space become the pTLA, which is the top level of aggregation (the backbone) for the 6bone. that gives you 256 6bone backbone networks, or pTLA-s, and leaves a 24-bit pNLA ID for each pTLA to hand out however it needs π
| 16 | 8 | 24 | 16 | 64 bits |
+-+---------+-----+-------------+--------+-----------------+
| 0x3FFE |pTLA | pNLA | SLA ID | Interface ID |
+-+---------+-----+-------------+--------+-----------------+
in prefix notation the pTLA is 3FFE:nn00::/24, where nn is the pTLA assignment π
the leftover NLA ID space is what each pTLA uses for its downward aggregated delegation:
| n | 24-n bits | 16 | 64 bits |
+-----+--------------------+--------+-----------------+
|pNLA1| Site | SLA ID | Interface ID |
+-----+--------------------+--------+-----------------+
| m | 24-n-m | 16 | 64 bits |
+-----+--------------+--------+-----------------+
|pNLA2| Site | SLA ID | Interface ID |
+-----+--------------+--------+-----------------+
| o |24-n-m-o| 16 | 64 bits |
+-----+--------+--------+-----------------+
|pNLA3| Site | SLA ID | Interface ID |
+-----+--------+--------+-----------------+
pNLA delegation works the same way as in [AGGR]. pTLA's are required to take on registry duties for the pNLA's below them, pNLA1's for the ones below them, and so on π
2.2 New 12-bit pTLA and 20-bit pNLA Format πΈ
once it was clear the 6bone would be a useful testbed for transition (on top of its early job as a testbed for specs and implementations), the 6bone community decided to make the pTLA ID bigger π
a few big decisions came out of this pTLA expansion:
- leave the currently allocated 8-bit pTLA-s in use until the space is actually needed, so a range value check is what tells you which format you're looking at,
- use a modulo 4-bit sized pTLA ID so reverse path entry into the DNS is easier,
- because of 2. above, keep the pTLA ID as small as possible so it doesn't restrict the pNLA ID size.
so the first 12 bits of the NLA ID space become the pTLA, which is the top level of aggregation (backbone) for the 6bone. eventually that gives 4096 6bone backbone networks, or pTLA-s, and leaves a 20-bit pNLA ID for each pTLA to assign as needed π
| 16 | 12 | 20 | 16 | 64 bits |
+-+---------+-------+-----------+--------+-----------------+
| 0x3FFE | pTLA | pNLA | SLA ID | Interface ID |
+-+---------+-------+-----------+--------+-----------------+
in prefix notation the pTLA is 3FFE:nnn0::/28, where nnn is the pTLA assignment. but since the existing 8-bit pTLA's are staying in use for now, the nnn value starts at 0x800 for the time being, so you only get 2048 pTLA's in this new format π₯Ί
the leftover NLA ID space works like this for each pTLA's downward aggregated delegation:
| n | 20-n bits | 16 | 64 bits |
+-----+--------------------+--------+-----------------+
|pNLA1| Site | SLA ID | Interface ID |
+-----+--------------------+--------+-----------------+
| m | 20-n-m | 16 | 64 bits |
+-----+--------------+--------+-----------------+
|pNLA2| Site | SLA ID | Interface ID |
+-----+--------------+--------+-----------------+
| o |20-n-m-o| 16 | 64 bits |
+-----+--------+--------+-----------------+
|pNLA3| Site | SLA ID | Interface ID |
+-----+--------+--------+-----------------+
just like with the original pTLA format, pNLA delegation follows [AGGR]. pTLA's are required to take on registry duties for the pNLA's below them, pNLA1's for the ones below them, and so on π
2.3 Example Format For pNLA's π§
this is an example of how the pNLA space can be used, to show what's reasonable and possible. don't assume this means the pNLA space has to be used this exact way ngl π since the new pTLA and pNLA format is now the default, this example uses the 20-bit pNLA format.
this example makes room for up to 255 intermediate transit ISP's (called pNLA1 below). a pNLA1 value of zero means there's no intermediate transit ISP between the backbone pTLA network and the end user site π
|<-----20-bit pNLA ID----->|
| |
| 8 | 12 bits | 16 | 64 bits |
+-----+--------------------+--------+-----------------+
|pNLA1| Site ID | SLA ID | Interface ID |
+-----+--------------------+--------+-----------------+
intermediate transit networks (pNLA1's) would assign unique Site ID's for each end user site they serve π
let's do an example. say the backbone pTLA is 0x800, there's no intermediate transit ISP (so the pNLA1 is 0x00), and the site ID is sequential, counting from the right edge, starting at 0x0001. then the routing prefix for the first site looks like this:
3FFE:8000:0001/48
6bone _|||| |||| ||||___site
|||| |
b/b site____|||| |
| |
transit________|_|
here's another one. same backbone pTLA of 0x800, but this time there's an intermediate transit ISP under it (numbered from the left edge) with a pNLA1 of 0x80, and the sequential site ID is 0x0001. then the routing prefix for the first connected site looks like this:
3FFE:0180:0001/48
6bone _|||| |||| ||||___site
||||
b/b site____||||
||
transit_______||
Note 1: the two sites numbered 0x001 in the examples above are actually two different sites, because the pNLA1 authority above each of them is different. (in the first case there's no transit, so the site connects straight to the pTLA backbone ISP. in the second case the site connects straight to intermediate transit ISP 0x80.) π¦
Note 2: nothing stops a pNLA1 transit site from going further and allocating pNLA's below it. but that's up to the policy of the pTLA and the pNLA's above them to sort out π
Note 3: the 6bone registry is a RIPE-style database for documenting IPv6 sites connected to the 6bone, and it has an "inet6num" object so you can document all the IPv6 addresses that get allocated π
Full Copyright Statement β¨
okay so this is the legal stuff, and honestly it's giving very clear rules π Copyright (C) The Internet Society (2000). All Rights Reserved. π
Anyone can copy and share this document, including translations of it. You can also write derivative works that comment on it, explain it, or help people implement it, and you can prepare, copy, publish, and distribute those in whole or in part with no restriction of any kind. The one condition is that the above copyright notice and this paragraph have to be included on every copy and every derivative work π
The document itself is a different story π It may not be modified in any way. That means you can't remove the copyright notice or the references to the Internet Society or other Internet organizations. There are two exceptions: you can modify it when needed for developing Internet standards, in which case the copyright procedures in the Internet Standards process must be followed, or when you need to translate it into a language other than English π
The limited permissions above are perpetual, and the Internet Society or its successors or assigns will never revoke them. Forever and ever π¦π
Now the disclaimer, which is in all caps because it's serious π This document and the information in it are 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.
Read that last bit carefully, bestie π Nobody is promising the info won't infringe rights, or that it's merchantable or fit for a particular purpose.
Acknowledgement
Funding for the RFC Editor function is currently provided by the Internet Society. Thank you, Internet Society, you're literally keeping the lights on πΈπ«Ά
π¦ where this page comes from
- ietf: rfc2921 2000-09
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms