What is it?
IPv6 is the Internet Protocol, version 6, a new internet protocol standard, supposed to eventually replace IPv4. Main reason IPv6 has been created was because the useable IPv4 addresses are running out. So for addressing IPv6 uses 128 bits instead of the 32 bits ipv4 currently uses. This allows for a huge number of different addresses. For example, ipv4 has 4,294,967,296 possible addresses (many of these are reserved reducing the number further), ipv6 has 340,282,366,920,938,463,463,374,607,431,768,211,456 (2 to the 128 power) possible addresses. Next to this, it also adds better security and auto-configuration methods.
An IPv6 address uses 128 bits, the common 'human-readable' notion is in 16-bit hexadecimal numbers separated by colons. For example:
2001:200:0:8002:203:47ff:fea5:3085 Leading zeros can be left out, so ::::::: is the address of all zeroes.
Two colons means as many zeros as needed:
- fe80::abc is the same as fe80:0:0:0:0:0:0:abc
- ::1 is the same as :::::::1 or 0:0:0:0:0:0:0:1
- Only one "::" may be used; as otherwise the number of zeroes for each "::" would be ambiguous.
Recent 2.4 and 2.6 kernels support ipv6 networking. The module name that supplies this is called 'ipv6'. So 'native' ipv6 connection (a connection to an ipv6 network, normally provided by a ISP) is supported out-of-the-box on most distributions. Also see radvd for configuring Linux to act as ipv6 router with auto-configuration.
To help in the transition from ipv4 to ipv6, tunneling is used to provide ipv6 connectivity to systems that don't have a native ipv6 link available. Tunneling means that ipv6 packets are send through (encapsulated in ipv4 packets) an ipv4 network. There are different methods to do this:
- Configured tunneling - Tunneling with a specific tunnel set up.
- Automatic tunneling - Tunneling where the tunnel is dynamically set up, see 6to4 for the easiest way to get ipv6 on linux.
Many applications have be converted to support ipv6. Examples are:
- iproute - support configuring network in linux
- mozilla - web browsing (it supports urls like http://[2001:200:0:8002:203:47ff:fea5:3085]/ to access ipv6 sites on ip addresses instead of through DNS names)
- OpenSSH - Secure Shell
- Many important network services - such as DNS