The IPv6 Protocol
This chapter gives a brief overview of the IPv6 protocol itself. It is
not meant to be a complete description; there are better generic references
elsewhere.
In the early days of IPv4, the IP addresses were put into various classes
(A, B, C, then followed by D and E). They described the partition between
the network portion and the host portion of an IP address.
IPv6 addresses are split into various classes although the word "class" itself
cannot be used for most of them.
Scope is the topological span of an address. That is the amount of network
real estate where this address is guaranteed to be unique. RFC 3513 describes
the various IPv6 address scopes and their prefixes.
Unicast addresses have the following scope:
- Link-local
- is for a single link. In other words the subnet the
interface is on. Link-local addresses start with any prefix from FE80::
to FEBF::
- Site-local
- is for an entire enterprise. It is defined by system
administrators who would put a configuration into their routers to define
the boundary. Site-local addresses start with the prefixes FEC0:: to FEFF::
- Global
- is everywhere, this is what all IPv4 addresses are. The prefix
for a global unicast address cannot start with FE or FF but can be
anything else. There are some special addresses that start with 00 such
as unspecified (::/128) and Loopback (::1/128).
Multicast addresses have the same scopes as unicast, but with additional
ones:
- interface-local
- is essentially a loopback device attached to a physical
interface.
- others
- There are about 10 site-local type scopes for multicast, so
you can limit multicast to, say, a department. Like the site-local, they
are defined by the system administrators. Multicast addresses can and prefix
from FF00:: to FF7F::
The last type of cast for an IPv6 address is the anycast address. Where
multicast means "every item from a set", anycasr means "any one item
from a set". Another way to look at this is the old IPX GNS (Get Nearest
Server) request. The client didn't care what Novell server they got, they
just wanted one of them to reply. This is roughly how anycast works.
Quite often an entity that is working in IPv6 land will need to address or
handle an IPv4 entity. To do this requires there to be a mapping between
IPv4 and IPv6 addresses.
As the size of IPv6 addresses are much larger than
the IPv4 ones (128 bits versus 32) the IPv4 addresses can be easily mapped
into the IPv6 address space. In fact, they are mapped in several different
methods depending on the application.
The first way is called Embedding. The IPv4 address is ORed with ::/128 or,
if you like, 96 0 bits are prepended to the IPv4 address. These addresses
are usually written with the IPv4 part still as the traditional dotted
quad. For example, 10.32.100.8 when embedded is written as ::10.32.100.8
The second way is called IPv4-mapping. It is similiar to embedding except
the IPv4 address is ORed with ::FFFF:0000 (FIXME check prefix, 0-80, 1-16 32-v4)
The third way is 6to4, (FIXME RFC and what address format it uses,)