Internet Protocol version 6
In the late 1980s, the IETF recognized that the useful life of the current version of IP, Internet Protocol Version 4 (IPv4), would not last forever. Address space, in particular, was cited as IPv4’s biggest weakness; although a 32 bit address should allow us to identify up to four billion hosts, hierarchical address structures, such as the one used with IP, have inefficiencies that result in addresses running out. In 1991, work began on the next generation of IP, dubbed IPng. The goal of the IPng work was to define a successor to IPv4. While still quite usable and implemented on the current Internet, IPv4 has been showing its age in a number of areas and a replacement protocol is needed. Through many iterations and proposals, IP Version 6 (IPv6) was officially entered into the Internet Standards Track in December, 1995.
According to the IPv6 specification, the changes from IPv4 to IPv6 fall primarily into the categories listed below.
- Expanded Addressing Capabilities: IPv6 increases the IP address size from 32 bits to 128 bits to support more levels of addressing hierarchy, a much greater number of addressable nodes, and simpler auto-configuration of addresses. The scalability of multicast routing is improved by adding a Scope field to multicast addresses. A new type of address, called an anycast address, is defined; it is used to send a packet to any one of a group of routers.
- Header Format Simplification: Some IPv4 header fields have been dropped or made optional, to reduce the common-case processing cost of packet handling and to limit the bandwidth cost of the IPv6 header.
- Improved Support for Extensions and Options: Changes in the way IP header options are encoded allow more efficient forwarding, less stringent limits on the length of options, and greater flexibility for introducing new options in the future.
- Flow Labeling Capability: A new capability is added to enable the labeling of packets belonging to particular traffic flows for which the sender requests special handling, such as non-default quality of service or real-time service.
- Authentication and Privacy Capabilities: Extensions to support authentication, data integrity, and data confidentiality are specified for IPv6. These features will increase security while actually reducing the security effort. Authentication performed on an end-to-end basis during session establishment will actually provide more secure communications, even in the absence of firewall routers.
To accommodate almost unlimited growth and a variety of addressing formats, IPv6 addresses are 128 bits long. One IETF member has suggested that this address space is sufficient to uniquely address every molecule in our solar system! There are three types of IPv6 addresses.
An address for a single interface. A packet sent to a unicast address is delivered to the interface identified by that address.
An address for a set of interfaces (typically belonging to different nodes). A packet sent to an anycast address is delivered to one of the interfaces identified by that address; usually the “nearest” one according to the routing protocol’s measure of distance.
An identifier for a set of interfaces (typically belonging to different nodes). A packet sent to a multicast address is delivered to all interfaces identified by that address.
There are no broadcast addresses in IPv6 since their function is provided by multicast addresses.
IPv6 multicast addresses provide an identifier for a group of nodes. A node can belong to any number of multicast groups. Multicast addresses might not be used as a source address in IPv6 datagrams or appear in any routing header.
Multicast addresses, as shown on the accompanying visual, begin with eight ones (0xFF). The next four bits are a set of flag bits; the three high-order bits are set to zero and the fourth bit (T-bit) indicates a permanently assigned (“well-known”) multicast address (T=0) or a non-permanently assigned (“transient”) multicast address (T=1). The following four bits are the scope, used to limit the extent of the multicast group; assigned scope definitions (and hex values) are reserved (0 or F), node-local (1), link-local (2), site-local (5), organization-local (8), or global (E).
The remaining 112 bits are the group identifier, which identifies the multicast group, either permanent or transient, within the given scope. The “meaning” of a permanently assigned multicast address is independent of the scope value. For example, if the “SMTP servers group” is assigned a permanent multicast address with a group ID of 0x43, then:
- FF01:0:0:0:0:0:0:43 means all SMTP servers on the same node as the sender.
- FF02:0:0:0:0:0:0:43 means all SMTP servers on the same link as the sender.
- FF05:0:0:0:0:0:0:43 means all SMTP servers at the same site as the sender.
- FF0E:0:0:0:0:0:0:43 means all SMTP servers in the Internet.
A number of well-known multicast addresses are predefined, including those listed below.
- Reserved Multicast Addresses: Reserved and never assigned to any multicast group. These addresses have the form FF0x:0:0:0:0:0:0:0, where x is any hex digit.
- All Nodes Addresses: Identify the group of all IPv6 nodes within the given scope. These addresses are of the form FF0t:0:0:0:0:0:0:1, where t =1 (node-local) or 2 (link-local).
- All Routers Addresses: Identify the group of all IPv6 routers within the given scope. These addresses are of the form FF0t:0:0:0:0:0:0:2, where t =1 (node-local) or 2 (link-local).
- The DHCP Server/Relay-Agent Address: Identifies the group of all IPv6 DHCP servers and relay agents with the link-local scope; this address is FF02:0:0:0:0:0:0:C.
IPv4 Addresses in IPv6
Although it is not certain when the Internet will move to IPv6, it is certain that when it does the Internet will slowly migrate to IPv6 addressing.
The IPv6 transition mechanisms include a technique for hosts and routers to dynamically tunnel IPv6 packets over the IPv4 routing infrastructure. IPv6 nodes that utilize this technique are assigned special IPv6 unicast addresses that carry an IPv4 address in the low-order 32 bits, as shown on the accompanying visual.
IPv4 addresses are carried in a 128 bit IPv6 address space that begins with 80 zeros (0:0:0:0:0). The next 16 bits indicate the IPv4–IPv6 address compatibility, or the way in which the host/router handles IPv4 and IPv6 addresses.
If the device can handle either IPv4 or IPv6 addresses, the compatibility bits are all set to zeros (0); this type of address is termed an “IPv4-compatible IPv6 address.” If the address represents an IPv4-only node (i.e., one that does not support IPv6), the compatibility bits are all set to one (FFFF) and the address is termed an “IPv4-mapped IPv6 address.”
An IPv6 mapped address is an IPv4 address transported over an IPv6 network. If a user with a machine configured for IPv4 wants to communicate with a server on the Internet that is using IPv6, the packet reaching the server contains an IPv6 mapped address. A compatible address, on the other hand, is an IPv6 address that is meant to be used when communicating with an IPv4 network. In this example, the user uses an IPv6 protocol stack trying to communicate with a server running IPv4. In this case the IPv6 address must either be compatible from the start, or be translated at some point into an IPv6-compatible address.
The remaining 32 address bits contain a 32 bit IPv4 address in dotted decimal notation.
IPv6: The Reality
While IPv6 was developed to address a number of Internet deficiencies, it probably will not be adopted as the standard implementation of IP anytime soon. The major concern about IPv4 was the depletion of address space, but classless interdomain routing (CIDR), Dynamic Host Configuration Protocol (DHCP) and Network Address Translation (NAT) have all played a part in reducing the rate of address depletion. IPv6 offers several other advantages over IPv4, many of which can be migrated into IPv4. While this might be costly, it will likely be less costly than changing to IPv6. Fred Baker, chairman of the IETF, once indicated there could be another (better) replacement for IPv4 by the time address depletion becomes a real problem.
In the meantime, several tools are available to help organizations migrate to IPv6. These include translation systems to map IPv6 to/from IPv4 at a gateway between the two. Many vendors are still pushing IPv6 technology despite the lackluster response from the Internet world.
An IPv6 worldwide testbed called the 6bone has been operating since 1996. You can find more information about the 6bone on the Internet at http://www.6bone.net.
Microsoft made the technical preview of IPv6 available for software developers for use with Windows 2000. The code and related information were made available for download in March 2000.
IPv6 Header Format
- Version: Internet Protocol version number; coded 0x6 (4 bits).
- Traffic Classes: Enables a source and/or forwarding router to identify and distinguish among different classes or priorities of IPv6 packets.
- Flow Label: How a source identifies packets that need special handling, such as non-default quality of service or real-time service (20 bits). A control protocol such as the Resource * * * Reservation Protocol (RSVP) or information within the flow packets themselves, such as hop-by-hop option, might convey the nature of the special handling to the network routers. There may be multiple active flows from a source to a destination, as well as traffic that is not associated with any flow (i.e., Flow Label = 0). The combination of a source address and a nonzero flow label uniquely identifies a flow.
- Payload Length: Payload length (i.e., the portion of the packet following the header), in octets (16 bits). Its maximum value is 65,535; if this field is zero, it means that a larger payload is enclosed and the actual payload length value is carried in a Jumbo Payload, hop-by-hop option.
- Next Header: Identifies the type of header immediately following the IPv6 header; uses the same values as the IPv4 Protocol field, where applicable (8 bits). Possible values include 1 (ICMP), 6 (TCP), 17 (UDP), 58 (ICMPv6), and 89 (OSPF).
- Hop Limit: Specifies the maximum number of hops that a packet may take before it is discarded (8 bits). It is set by the source and decremented by 1 by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero. This field was renamed from IPv4’s Time to Live (TTL) field because the value limits the number of hops, not the amount of time that a packet can stay in the network.
- Source Address: IPv6 address of the originator of the packet (128 bits).
- Destination Address: IPv6 address of the intended recipient of the packet (128 bits).
IPv6 Address Representation
There are three conventional forms for writing out IPv6 addresses. The preferred, or regular, form is to write out the hexadecimal values of the eight 16 bit blocks of the address, separated by colons (:), in the form x:x:x:x:x:x:x:x, where each x represents a 16 bit hexadecimal value. An example might be 1080:805:FF32:5:17:200C:7654:20. Note that it is not necessary to write leading zeros in a field, but there must be at least one numeral in every field.
Because of the way in which addresses are allocated in IPv6, addresses will frequently contain long strings of zeros. To make the task of writing addresses containing many zero bits less onerous, a shorthand syntax, or compressed format, has been defined. Specifically, the double colon (::) string can be used to indicate multiple groups of 16 bits of zeros. As an example, the address FF01:0:0:0:0:0:0:43 could be written as FF01::43. To avoid ambiguity, the “::” can only appear once in an address.
Finally, an alternative format for mixed IPv6/IPv4 addresses has been defined to make it more convenient (and less error prone) when representing an IPv4 address in an IPv6 environment. Specifically, the first 96 address bits (six groups of 16) are represented in the standard IPv6 format (x:x:x:x:x:x), the remaining 32 address bits are represented in common IPv4 dotted decimal; this is denoted x:x:x:x:x:x:d.d.d.d where each x represents a 16 bit hex value and each d represents an 8 bit decimal value. Examples of this nomenclature include 0:0:0:0:0:0:22.214.171.124 or ::FFFF:126.96.36.199.
|<mp3>http://podcast.hill-vt.com/podsnacks/2007q3/ipv6.mp3%7Cdownload</mp3> | IP version 6 (IPv6)|