If the length of an IPV6 address looks scary and you think that the learning curve to ramp up to IPV6 will be too steep, take a deep breathe. Learning IPV4 concepts was JUST as hard originally.
After a few hours, it all makes sense. IPV6 will be no different. In fact, IPV6 can actually end up being simpler than IPV4. As a result, it is easier to configure and maintain.
Formatting of IPV6
IPV4 addresses have their limits – each Octal ( IPV4 addresses contain 4 Octals, hence 32 bits – 4 x 8 ) has a range of 0-255 which equals 256 numbers. We thus only have 256 to the power of 4 (256x256x256x256) which gives us 4294967296 or about 4,295 million addresses. We have used up most of these on the current internet and the Internet of Things (IoT) is demanding a lot more. Every person who is online in some way or another typically consumes at least 2 and usually more IP addresses (just think – laptop + mobile). Smart TV’s, Amazon devices, GPS trackers, CCTV – all these will be needing some form of addressing. IPV6 has the answer.
Being 128 bits long, IPV6 allows us the use of 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses (3.4X10^38 or approximately 340 undecillion). Therefore, we need an easy way to write them down. IPv6 addresses follow a specific architecture and use the above-described textual representation.
This is defined in (RFC 4291).
128-bit IPV6 addresses are presented as 8 sections (hextets), separated by colons “:”. When written in full format, an IPV6 address appears as follows:
Each hextet uses four hexadecimal digits (0-9, A-F) to write the 16 bits. The eight sections of 16 bits each sum to the 128 bits of the address. The address can be shortened or “compressed” for readability by removing leading zeros in each section or segment. After this, the above address would look as follows:
A further compression (once-only) of multiple segments of continuous zeros is done by concatenating the resultant colons (:::: above) into a double colon. Thus, the address finally looks like this:
A special class of addresses is reserved for use in documentation ONLY! (RFC 3849)
Types or classes of address
As with IPV4’s public, private (RFC 1918), and Automatic Private IP Addressing (APIPA) addresses (169.254.0.0/16), IPv6 has four primary address types, each with its own specific function:
- 2000::/3 = Global Unicast Addresses (GUA). You can think of these as public Internet-usable addresses for node-to-node direct unicast communications.
- FC00::/7 = Unique Local Addresses (ULA). These are private addresses never to be used on the Internet and not NATed.
- FE80::/10 = Link-Local Addresses. Used only for internal LAN-based communications, never forwarded by routers.
- FF00::/8 = Multicast addresses. Used for the one-to-many dissemination of packets to a scope of the network.
We are going to focus on Global Unicast Addresses as these are what we will use in practice for both internet facing systems AND systems within your perimeter (LAN). There is NO NAT functionality needed for IPV6 because we always have more than enough addresses (RFC 4864)
What’s more, unique Local Addresses (ULA) (RFC 4193) are NOT recommended for internal enterprise networks. Link-local IPV6 addresses and multicast addresses are a whole other topic which we will not look at here.
Global Unicast Addresses (GUA) are always in the range of 2000::/3 (remember compression) and start with the hex digit “2” or “3” in the most significant hex digit. The structure is:
| n bits | m bits | 128-n-m bits | +------------------------+-----------+----------------------------+ | global routing prefix | subnet ID | interface ID | +------------------------+-----------+----------------------------+
The global routing prefix is assigned to a site (a cluster of subnets/links).
The subnet ID is an identifier of a link within the site (or gateway).
The interface ID is basically what will point to the host or device.
In our next article, we will continue with address block assignments and special IPV4 to IPV6 addresses.