A long-standing topic that has existed in the IPv4 world has been subnetting. This is something that is often taught at the beginning of network training, and it is often one of the topics that people have the largest problem wrapping their mind around. To those that are familiar and comfortable with IPv4 subnetting, the topic of IPv6 subnetting will not really be that hard to follow. But for those new to networking it would probably be best to concentrate on the IPv4 subnetting fundamentals before attempting to jump into IPv6. I’ll tackle IPv4 first.
The term “subnetting” originated from the further dividing of the classful addresses and address ranges that came along from the initial implementation of IPv4. Three main ranges exist that allowed the governing authorities the ability to divide the available space so that those organizations that needed large ranges could get them (Class A) and those that were smaller could get smaller ranges (Class B and Class C).
What became obvious after the initial allocation of these addresses and the quick growth of those organizations that wanted to connect was that an allocation problem was going to occur rapidly. To avoid this problem, subnetting was developed, which allowed further division of these three main ranges. For example, instead of having 8-bit, 16-bit and 24-bit network divisions, an 8- through 30-bit network division was now possible. However, as most of us now know, even with using subnetting and various other technologies (NAT) the allocation problem still exists — it was just pushed off for a number of years. Now IPv6 has been developed as a permanent solution to the address allocation problem. With IPv6, the address space has been increased from 32 bits to 128 bits; this raises the total available address space from 4,294,967,296 (over 4 billion) addresses to 3.40 X 1038 (over 340 undecillion [yes, that is a word!]) addresses.
Read More: IPv6 Launch Day Round-Up
The first thing to note is that with IPv6 the term “subnetting” is really inaccurate, as there is no initial network (classful) that we are separating. IPv6 is just normal address allocation, and there is a 128-bit address space that can be split in a number of ways. For instance, as of this writing all address that begin with the binary digits “001” are referred to as Global Unicast addresses. It is from this range that current regional Internet registries (RIR) allocate IPv6 addresses from.
Another thing that will evolve over time is how addresses from these global addresses are allocated to Regional Internet registries (RIRs) — there may be several divisions of RIRs — and then to Internet Service Providers (ISP), and then to end sites. As of this writing, the allocation of IPv6 addresses to specific RIRs (for example, American Registry for Internet Numbers [ARIN]) starts around a /23. From these address blocks the RIRs allocate and assign IPv6 addreses to ISPs depending on demand. Addresses assigned this way typically start around /32). For an end site (customer site), the general rule as of this writing is to allocate somewhere between a /48 and a /56 and to use the last 64 bits of the range for host ID. What this means is that an end organization is given between 8 to 16 bits of subnetting space (from the 49th bit to 64th bit, or from the 57th bit to 64th bit) for internal address organization. A visual representation of this is shown below.
The way that IPv6 is divided will most likely change over time as the demand for addresses increases and a better idea of how the addresses are being used evolves. Each RIR is provided the ability to alter the method of their allocation, so the exact way that addresses are allocated depends on the specific RIR that is responsible for each region.
IPv4 and IPv6 subnetting principles are not really all that different — the only real difference is scale. The thing to really remember is to think of these addresses in binary form. Often just looking at the hexadecimal notation that is used for IPv6 can glaze the eyes of many new to networking!