RFC 2921

6BONE pTLA and pNLA Formats (pTLA)

πŸ“… published September 2000, from ietf

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 (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:

  1. 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,
  2. use a modulo 4-bit sized pTLA ID so reverse path entry into the DNS is easier,
  3. 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 πŸ’œ

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