Defining an IPv6 address plan is an important process. Whatever you create will live on for years. Some analysis and thought up front can save time and pain later.
Before we dive into addressing plans, it is useful to look at the actual structure of an IPv6 address. While there’s lots of talk of “340,282,366,920,938,000,000,000,000,000,000,000,000 unique IP addresses”, that sort-of assumes that all addresses are usable (for any purpose).
Creating an address plan for all that would be a truly daunting task 🙂 Fortunately (for our purposes) a lot of the space is reserved and there’s some internal structure that we can take advantage of to simplify creating an address plan.
Over the years, many kinds and flavors of IPv6 addresses have been defined and some later removed (“deprecated”), such as “Site-local Unicast”. Also, restrictions or better definitions have been made for some address parts, such as the “Interface Identifier”, which will become important below.
Before we start, go read RFC4291. Go ahead, I’ll wait. Really, go read (or at least skim) it. You want to get a few things from this RFC… First, the standard hex notation for IPv6 addresses (Sec 2.2). Second, the prefix notation (Sec 2.3). And third, which will become important later, is Section 2.5.1, which specifically defines the size of the Interface ID as 64 bits.
Now let’s look at a regular old IPv6 address. From RFC4291:
The general format for IPv6 Global Unicast addresses is as follows: | n bits | m bits | 128-n-m bits | +------------------------+-----------+----------------------------+ | global routing prefix | subnet ID | interface ID | +------------------------+-----------+----------------------------+
Where does the global routing prefix come from? This is the address assignment for your network which comes from either your ISP for provider aggregatable address space (PA-space), or from a Regional Internet Registry (RIR) for a provider independent address space (PI-space) assignment.
If you’re a home user, IPv6 tunnel user, or a (small) end point business, you’re likely to have your address assigned from the pool that was assigned to the upstream ISP, provider (aggregatable) space. The drawback here is that if you change providers, your IPv6 addresses are going to change.
If you’re an ISP, not-small company or any organization that is multi-homed through multiple ISPs, you’re going to want provider independent space. Each RIR has different policies for address assignments, including the size of the assignment.
The important thing about that prefix is that you have no real control over it, either its size or its content. It is assigned to you and that’s it.
So, the Interface ID is always 64 bits, and the global routing prefix is fixed and assigned. That means that all you really need to worry about to create an IPv6 addressing plan is the subnet ID. Everything else is of a predetermined size, and in the case of the prefix, the content is also fixed.
The IPv6 address plan is really about how big your subnet ID is, and how it is broken down by purpose, location or any other information you may want to encode. Which is we’ll look at next time.