About to embark on deploying IPv6? First, you need to know some key differences in IPv6 address formats.
Don’t be deterred by the intimidating appearance of those long IP version 6 (IPv6) addresses. Instead, think back to that steep learning curve you conquered with IPv4 setup – all those complicated subnetting rules and awkward /27s and /29s. After a few hours it all made sense, and it will be the same with IPv6 – except this time you’ll discover that IPv6 can actually be simpler than IPv4 and, as a result, easier to configure and maintain.
[ Check out our step-by-step IPv6 deployment guide. ]
IPv6 Address Format
Let’s start with the way that IPv6 addresses are written. Whereby IPv4 addresses are 32-bit numbers represented in quad-dotted-decimal notation, IPv6 addresses are much longer and have their own unique format. With IPv6 addresses being 128 bits in length, this allows for 2128 addresses or 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses (3.4X1038 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 that is defined in RFC 4291. The format of a 128-bit IPv6 address is presented for us humans to read as 8 segments (hextets) each separated by a colon ":". When written in fully-expanded format, an IPv6 address would appear like the following:
2001:0DB8:0012:0034:0000:0000:0000:1111
Each of the address’s 8 hextets is separated by a colon. 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 IPv6 address can be compressed for readability by removing leading zeros within each segment, and by performing a once-only compression of multiple segments of continuous zeros into a double-colon "::". For example, if the above address was to use these compression techniques,it would be more cleanly written as the following:
2001:DB8:12:34::1111
Note: the IPv6 addresses that we are using here are from the IPv6 Address Prefix Reserved for Documentation (RFC 3849).
IPv6 Address Types
IPv6 also may seem complicated because there are different types of addresses. Similar to 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 one-to-many dissemination of packets to a scope of the network.
Let’s focus our attention on the global addresses, because those are what you are going to use for your Internet-facing systems as well as networks and systems within your Internet perimeter. There is no NAT functionality needed for IPv6 (see RFC 4864) because we have an abundance of addresses.
Unique Local Addresses (ULA) (RFC 4193) are not recommended for internal enterprise networks. Link-local IPv6 addresses and multicast addresses can be easily researched on your own.
IPv6 Global Addresses
IPv6 Global Unicast Addresses (GUA) are always in the range of 2000::/3 and start with the hex digit “2” or “3” in the most significant hex digit.
For these global unicast addresses, it is common for the left-most high-order 64 bits of the address to represent the network segment that is used for a link. The right-most low-order 64 bits of the address represent the unique node on that network.