(thanks to Tony Gale for major contributions to this section)
IP version 6 (IPv6) is a new version of the Internet Protocol, designed as a successor to IP version 4 (IPv4) [RFC-791].
The changes from IPv4 to IPv6 fall primarily into the following categories:
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. And a new type of address called an 'anycast address' is defined, used to send a packet to any one of a group of nodes.
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.
Changes in the way IP header options are encoded allows for more efficient forwarding, less stringent limits on the length of options, and greater flexibility for introducing new options in the future.
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.
Extensions to support authentication, data integrity, and (optional) data confidentiality are specified for IPv6.
The core Linux IPv6 code is currently being maintained by David Miller and Eric Schenk.
Read on for more details!
The best starting point for IPv6 and 6bone information that I've seen is IP Next Generation (IPng).
You may also want to check out NASA's IPv6 at the NAS.
Kevin Rae has put his thesis - " Digital Audio & IPv6 " - on the Web. It's got a nice side-by-side comparison of IPv4 and IPv6, and an introduction to IPv6 QoS fields.
There are (at my count) 55 RFCs dealing with IPv6 out there, including pre-IPv6 proposals like CATNIP and TUBA. Some of the more relevant RFCs include:
There are also many internet drafts. These change rapidly, but as of 7/14/97 here's a list of some useful ones:
This books section is pretty weak right now, and could bear with some improvement. However, here's a few pointers to get you started:
A classic book on TCP/IP, the 3rd edition has an introductory section about IPv6.
A good book overall on data communications, this has a few pages of useful, no-nonsense coverage on IPv6 and ICMPv6.
I don't own a copy of this yet (very hard to find, for some reason), but knowing the reputation of its author, this book would at least be worth a look-see.
The 6bone is an Internet-wide IPv6-over-IPv4 encapsulation project.
For more 6bone info, check the 6bone home page.
There's also a 6bone mailing list - see IPv6 - 6bone Mailing List.
IPv6 addresses are 128 bits long, and there are three types:Unicast, Anycast and Multicast. Unicast addresses are used to identify an individual interface. Anycast addresses indicate a set of interfaces, but packets sent to an Anycast address are delivered to one of the interfaces indicated by the address, ie. the nearest one. Multicast addresses also indicate a set of interfaces, but packets sent to a Multicast address are delivered to all interfaces indicated by the address. Multicast address superseed broadcast addresses.
The preferred form of representing an IPv6 address is:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
Addresses will often have a number of zeros in them, such as:
FF01:0:0:0:0:0:0:43
A special syntax is available for representing groups of zeros to allow the address to be compressed. The use of '::' indicates multiple groups of 16-bits of zeros. For example, the address above may be represented as:
FF01::43
Another form of address is available for use within a mixed IPv4 and IPv6 environment. An address such as:
::10.5.27.200
will send IPv6-in-IPv4 packets.
The specific type of an IPv6 address is indicated by the leading bits in the address. The variable-length field comprising these leading bits is called the Format Prefix (FP). The initial allocation of these prefixes is as follows:
Allocation Prefix Fraction of
(binary) Address Space
Reserved 0000 0000 1/256
Unassigned 0000 0001 1/256
Reserved for NSAP Allocation 0000 001 1/128
Reserved for IPX Allocation 0000 010 1/128
Unassigned 0000 011 1/128
Unassigned 0000 1 1/32
Unassigned 0001 1/16
Unassigned 001 1/8
Provider-Based Unicast Address 010 1/8
Unassigned 011 1/8
Reserved for Geographic-based 100 1/8
Unicast Addresses
Unassigned 101 1/8
Unassigned 110 1/8
Unassigned 1110 1/16
Unassigned 1111 0 1/32
Unassigned 1111 10 1/64
Unassigned 1111 110 1/128
Unassigned 1111 1110 0 1/512
Link Local Use Addresses 1111 1110 10 1/1024
Site Local Use Addresses 1111 1110 11 1/1024
Multicast Addresses 1111 1111 1/256
15% of the address space is intially allocated, leaving 85% reserved for future use.
[RFC-1897] describes a method for allocating test IPv6 addresses over the 6bone. The addresses allocated under this plan are temporary and will be reclaimed in the future.