IPv6 Deployment and Planning Information
Posted by Kevin Stange, Last modified by Kevin Stange on 21 June 2012 04:43 PM
This article provides details about IPv6 and the reasons it is important to deploy it, as well as various considerations and caveats when using IPv6 on production server environments.
What is IPv6?
IPv6 (Internet Protocol version 6) is a replacement for IPv4 (Internet Protocol version 4). IPv4 is the widely deployed protocol that provides your computer with a familiar 4-segment dotted IP address and allows you to reach everything on the Internet. Due to the limited amount of address space IPv4 provides, IPv6 was standardized in 1998 to provide a much larger address pool and to deal with other limitations and faults of IPv4. IPv4 addresses are 32 bits in length, which provides 2^32 (about 4.3 billion) possible addresses. IPv6 addresses are 128 bits in length, which means 2^128 (about 340 undecillion) possible addresses, or the entire size of the IPv4 address pool to the fourth power. While the standard has existed for over a decade, the prospect of running out of IPv4 space seemed to be far into the future, so very little had been done to adopt IPv6 until recently. Since IPv6 is not compatible with IPv4, all network-capable software and hardware needs to be re-engineered in order to make use of IPv6.
Now, as the IPv4 pool is almost completely depleted, some providers, engineers and developers are beginning to realize the urgency of making a change to support IPv6 and adoption is beginning to pick up. IPv4 will need to continue to exist while IPv6 is being adopted, but eventually when it becomes impossible to obtain IPv4 addresses any longer, some content may be available via only IPv6 and getting started on IPv6 before that day comes is the best way to avoid becoming cut off and needing to scramble to adjust. All Steadfast Networks customers are eligible for IPv6 connectivity for no additional charge as part of all standard service offerings.
Anatomy of an IPv6 Address
An IPv6 address is 128 bits, which means that representing it in 8-bit segments as an IPv4 address is would result in unwieldy numbers. To allow for shorter addresses that are easier to read and remember, the numbers are instead represented in hexadecimal, with eight 16-bit segments separated by colons, and there are rules that allow collapsing an address down to essential information by removing implied zeros. For example, here's a full-length IPv6 address:
There are several places we can reduce this address. First, we can collapse consecutive segments that are entirely zeros into "::" This can only be done one time in the address because if "::" appeared more than once, it would not be possible to tell how many segments were removed from each instance. With one instance, you can count the number of segments on the left and right of "::" to know how many missing segments it represents. For this rule, the above address becomes:
We can also remove the leading zeros in any segment, because they can be assumed. We can't remove other zeros because we wouldn't be able to tell where they belong. The result is:
IPv6 Subnets: CIDR ("slash notation")
Many people still refer to IPv4 addresses using the "class system" in which a class C is a block of 256 IP addresses. This system was deprecated in 1993 and replaced with the CIDR (Classless Inter-Domain Routing) system, because it more concisely represents all possible subnet sizes. IPv6 uses CIDR as well. CIDR is notated by a slash "/" after an IP address, followed by a number. It represents the "prefix length" or number of invariable bits in the address allocation for the given subnet. A class C in IPv4 is now known as a /24 (32 bits minus the 24-bit prefix length is 8 variable bits; 2^8 = 256). The standard allocation for an IPv6 subnet is a /64. Since an IPv6 address is 128 bits, and the prefix is 64 bits long, the number of remaining bits used for the network address (128 bits minus the 64-bit prefix length) is 64, and thus 2^64 addresses exist in the subnet.
IPv6 resources cannot be directly accessed using IPv4 resources, nor vice versa. In order to access both, you need addresses and connections to a network with both protocols enabled. The preferred method, known as "dual stacking," is an implementation in which a system has both a public IPv4 and IPv6 address and connects through a provider that makes both protocols available from the system all the way to the Internet. Alternative methods include use of tunnels, which permit you to request IPv6 content by routing your request through a special server that has access to both protocols. The server converts the requests for you, then relays the responses back to you. This is not an optimal solution because it adds the delay and overhead of relaying all of your communications through a third party, but it permits IPv6 access when IPv4 is the only option at your end. Tunnels that allow IPv6 users to reach IPv4 exist as well and will become more popular when it becomes difficult to obtain IPv4 addresses in the future.
Steadfast Networks provides customers with native, dual stacked networking. This means you are able to access IPv6 and IPv4 content from your server without any special routing, as long as your server has both protocols enabled. This also means that, with some work, you can serve content to both IPv6 and IPv4 end-users. The subsequent sections of this article will explain some basic principles for accessing and serving IPv6 content.
If your home ISP does not yet support IPv6, which is still most likely, you can use a tunnel like those described above to access IPv6 content to try out some of these concepts. If you have an Apple home networking device, it may have come pre-configured with an IPv6 tunnel system to allow you to do this already.
Enabling IPv6 on your server
If you have a colocation account or custom VLAN configuration, you need to contact our IP allocations department to request an allocation. This is available at no charge. If you have a dedicated server with a standard network configuration, IPv6 connectivity is available already and there are two steps to the process:
This process gives you a single IPv6 address useful for allowing your server to reach IPv6 content, but we discourage using this address for serving content because it is not "yours" and does not stay with your account if you change servers or service types. If for any reason you need help configuring your server for IPv6 connectivity, you can contact our IP allocation or support departments and we can help you get basic IPv6 access working.
Hosting via IPv6
As we've noted in the previous section, you should not use your primary IPv6 address for hosting. This means that the first step in setting up your server to host content available via IPv6 is to get a secondary allocation for your server. This allocation will give you 2^64 addresses you can use however you like and the allocation is yours as long as you are a customer, so it can be moved around to other servers or service offerings later at any time. To obtain your secondary allocation, please open a ticket with our IP allocations department and let us know you want to start hosting content over IPv6.
Hosting via IPv6 requires support in the underlying hosting software. At this time, Apache, LiteSpeed and IIS web servers do support IPv6, as does the BIND DNS server. However, without patches and adjustments from vendors and software developers, supporting software such as your email server may not be able to provide IPv6 functionality. Additionally, many domain registrars do not yet allow registration of name servers that run on IPv6 addresses. Due to the fact that the DNS system uses multiple tiers of caching and end users rarely directly contact your server for information, this limitation can be worked around easily at the ISP level and most likely will not be a problem for many years.
If you're ready to begin serving web content to IPv6 clients right now, the following control panel versions can provide you with IPv6 management:
cPanel has promised complete IPv6 support for version 11.36. Until then, setting up sites to work via IPv6 in cPanel requires manual modification of configuration files.
Our support staff can assist you in making small system configuration changes to activate your web and DNS servers on IPv6 addresses to let IPv6 clients see your content over the IPv6 protocol, even if your control panel does not support it. However, to avoid problems as IPv6 support is implemented in the future, we recommend avoiding this approach right now. There is not much harm in giving software a bit more time to catch up and implement IPv6. Our staff will of course remain available down to the wire to help bring sites online via IPv6 if the vendors don't make it by the time your users expect it. We'll also keep watching the implementation of IPv6 on your behalf across the Internet and revise our recommendations if things change to ensure you're prepared.
Making a site point to an IPv6 address
The Domain Name System (DNS) helps a computer find out what IP address to go to when attempting to access content for a domain. The IPv4 address is stored in a record called an "A" record. This provides a direct mapping from something like "steadfast.net" to our IPv4 address 22.214.171.124. For IPv6, a new record type called an "AAAA" record was created in order to allow IPv6 users to find IPv6 addresses instead. The name is a play on the fact that an IPv6 address is four times the length of an IPv4 address. You can publish both an "A" and"AAAA" for a domain name and systems with IPv6 connectivity will automatically check first for an IPv6 AAAA record and try to connect, then fall back to an IPv4 A record if IPv4 connectivity is available, but IPv6 is not. Please note that publishing an AAAA record before ensuring the web server and other services are functioning on the IPv6 address will either cause an IPv6-enabled user to have to wait for the IPv6 attempt to fail or may be unable to access the content at all. Publishing an AAAA record is the last step once all other software is ready to serve content via IPv6.
References and Help
There are a number of useful resources that explain more about what IPv6 is and how it works. From Wikipedia:
As always, our support staff will be happy to help you get started with IPv6 and answer any questions you have!