Note: This is a VERY short introduction to IPv6, if you need more information about IPv6 I would recommend you to read “Understanding IPv6, 3rd Edition” or/and “IPv6 Fundamentals: A Straightforward Approach to Understanding IPv6”
Since published in 1981 (RFC 791) IPv4 has not been substantially changed. IPv4 has proven to be robust, easy to implement and interoperable. However, the initial design did not anticipate the following:
- Address space exhaustion
- The growth of the Internet and the ability of Internet backbone routers to maintain large routing tables.
- The need for simpler configuration.
- The requirement for security at the IP level.
- The need for better support for real-time delivery of data.
To address these concerns with IPv4, the Internet Engineering Task Force (IETF) has developed a suite of protocols and standards known as IP version 6 (IPv6). This new version, previously called IP-The Next Generation (IPng), incorporates the concepts of many proposed methods for updating the IPv4 protocol. The design of IPv6 is intentionally targeted for minimal impact on upper and lower layer protocols by avoiding the random addition of new features.
From Windows Server 2008, Windows TCP/IP was completely redesigned to support both Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6) to meet the connectivity and performance needs of today’s varied networking environments and technologies.
Internet Protocol version 6 (IPv6) is the replacement for Internet Protocol version 4 (IPv4), the Internet layer of the TCP/IP protocol stack used around the world on the Internet and on private networks. IPv6 restores end-to-end connectivity and ensures the growth of the Internet.
IPv6 Address Syntax
IPv4 addresses are represented in dotted-decimal format. This 32-bit address is divided along 8-bit boundaries. Each set of 8 bits is converted to its decimal equivalent and separated by periods. For IPv6, the 128-bit address is divided along 16-bit boundaries, and each 16-bit block is converted to a 4-digit hexadecimal number and separated by colons. The resulting representation is called colon-hexadecimal.
The following is an IPv6 address in binary form:
The 128-bit address is divided along 16-bit boundaries:
0010000000000001 0000110110111000 0000000000000000 0010111100111011 0000001010101010 0000000011111111 1111111000101000 1001110001011010
Each 16-bit block is converted to hexadecimal and delimited with colons. The result is:
IPv6 representation can be further simplified by removing the leading zeros within each 16-bit block. However, each block must have at least a single digit. With leading zero suppression, the address representation becomes:
Some types of addresses contain long sequences of zeros. To further simplify the representation of IPv6 addresses, a contiguous sequence of 16-bit blocks set to 0 in the colon hexadecimal format can be compressed to “::”, known as double-colon.
The address of FE80:0:0:0:2AA:FF:FE9A:4CA2
Can be compressed to FE80::2AA:FF:FE9A:4CA2
The address FF02:0:0:0:0:0:0:2
Can be compressed to FF02::2
Zero compression can only be used to compress a single contiguous series of 16-bit blocks expressed in colon hexadecimal notation. You cannot use zero compression to include part of a 16-bit block.
You cannot express FF02:30:0:0:0:0:0:5 as FF02:3::5. The correct representation is FF02:30::5.
Zero compression can only be used once in a given address. Otherwise, you could not determine the number of 0 bits represented by each instance of “::”.
Types of IPv6 Addresses
There are three types of IPv6 addresses:
A unicast address identifies a single interface within the scope of the type of unicast address.
A multicast address identifies multiple interfaces. With the appropriate multicast routing topology, packets addressed to a multicast address are delivered to all interfaces that are identified by the address. A multicast address is used for one-to-many communication, with delivery to multiple interfaces.
An anycast address identifies multiple interfaces. With the appropriate routing topology, packets addressed to an anycast address are delivered to a single interface, the nearest interface that is identified by the address. The “nearest” interface is defined as being closest in terms of routing distance. An anycast address is used for one-to-one-of-many communication, with delivery to a single interface.
Note that IPv6 does not define a broadcast address. All types of IPv4 broadcast addressing are performed in IPv6 using multicast addresses.
The loopback address (0:0:0:0:0:0:0:1 or ::1) is used to identify a loopback interface, enabling a node to send packets to itself. It is equivalent to the IPv4 loopback address of 127.0.0.1.
The unspecified address (0:0:0:0:0:0:0:0 or ::) is only used to indicate the absence of an address. It is equivalent to the IPv4 unspecified address of 0.0.0.0. The unspecified address is typically used as a source address for packets attempting to verify the uniqueness of a tentative address. The unspecified address is never assigned to an interface or used as a destination address.
Global Unicast Addresses
Global unicast addresses are equivalent to public IPv4 addresses. They are globally routable and reachable on the IPv6 portion of the Internet. Unlike the current IPv4-based Internet, which is a mixture of both flat and hierarchical routing, the IPv6-based Internet has been designed from its foundation to support efficient, hierarchical addressing and routing.
Link-local addresses are used by nodes when communicating with neighboring nodes on the same link. (A node is identified by any unicast address assigned to one interface).
For example, on a single link IPv6 network with no router, link-local addresses are used to communicate between hosts on the link. IPv6 link-local addresses are equivalent to IPv4 link-local addresses defined in RFC 3927 that use the 169.254.0.0/16 prefix. IPv4 link-local addresses are known as Automatic Private IP Addressing (APIPA) addresses for computers running current Microsoft Windows operating systems. The scope of a link-local address is the local link.
A link-local address is required for Neighbor Discovery processes and is always automatically configured, even in the absence of all other unicast addresses.
Link-local addresses always begin with FE80. An IPv6 router never forwards link-local traffic beyond the link.
Site-local addresses are equivalent to the IPv4 private address space (10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16). For example, private intranets that do not have a direct, routed connection to the IPv6 Internet can use site-local addresses without conflicting with global unicast addresses. Site-local addresses are not reachable from other sites, and routers must not forward site-local traffic outside the site. The scope of a site-local address is the site.
Unlike link-local addresses, site-local addresses are not automatically configured and must be assigned either through an address configuration processes.
Unique Local Addresses
Site-local addresses provide a private addressing alternative to using global addresses for intranet traffic. However, because the site-local address prefix can be used to address multiple sites within an organization, a site-local address prefix address can be duplicated. The ambiguity of site-local addresses in an organization adds complexity and difficulty for applications, routers, and network managers.
To replace site-local addresses with a new type of address that is private to an organization, yet unique across all of the sites of the organization, RFC 4193 defines unique local IPv6 unicast addresses.
In October 2005, RFC 4193 was published, reserving the address block fc00::/7 for use in private IPv6 networks.
The address block fc00::/7 is divided into two /8 groups:
The block fc00::/8 has not been defined yet. It has been proposed to be managed by an allocation authority, but this has not gained acceptance in the IETF.
The block fd00::/8 is defined for /48 prefixes, formed by setting the 40 least-significant bits of the prefix to a randomly generated bit string.
Multicast IPv6 Addresses
In IPv6, multicast traffic operates in the same way that it does in IPv4. Arbitrarily located IPv6 nodes can listen for multicast traffic on an arbitrary IPv6 multicast address. IPv6 nodes can listen to multiple multicast addresses at the same time. Nodes can join or leave a multicast group at any time.
IPv6 multicast addresses have the first eight bits set to 1111 1111. An IPv6 address is easy to classify as multicast because it always begins with “FF”. Multicast addresses cannot be used as source addresses or as intermediate destinations in a Routing extension header.
For the current list of permanently assigned IPv6 multicast addresses, see http://www.iana.org/assignments/ipv6-multicast-addresses.