IPv6

Introduction

The reasons for IPv6 are as many and varied as the people that use the Internet, but they could briefly be summarized as:

With that in mind, our interestes in IPv6 are primarily comparitive; how does it differ from IPv4 and why? Specifically:

Packet Format

The packet format for IPv6 is:

Address Space

One clear difference in IPv6 is the 128-bit addresses. In addition, a standard representation has been formulated (similar to the dotted-decimal notation) which uses hexadecimal digits and colon separators between 16-bit chunks. For example,

800A:0000:0000:03C2:1C25:8314:0000:3105

As with IPv4, there is an underlying format of the form:

This doesn't look like it contains much power, but each prefix defines a different format that can have its own properties. By not limiting the prefix part to a specific number of bits, it is possible for each defined format to use all the available bits. The predefined prefixes are:

The unicast addresses are what a typical host address might be under IPv6. The format is:

As you can see, each field is variable in size, which provides for the ultimate in flexibility. The Registry ID is to be used to identify specific parties that are allowed to release blocks of addresses. There is a default registry known as the Internet Assigned Number Authority (IANA) which will broad geographic domains (us, tw, de, ...). This registry is ID 10000. In addition, there are currently three other registries; RIPE NCC (01000), INTERNIC (11000) and APNIC (00100). Each registry will be allowed assign the rest of the address space according to its charter. The first part of the remaining address will be the provider ID, which is the entity that has acquired permission from the registry to manage a block of addresses. For example, if you decided to become an Internet service provider, you would go to one of the registries and pay a fee to get a chunk of address space. For example, you might have high hopes and say that you need 10 million addresses.  They would provide sufficient address space for you based on the format that they use for the rest of the address space, and they would assign a provider ID to you that might have, for example, 32 bits, allowing for over 4 billion providers.

You , as a provider, would then allocate space to entity that contracts with you for service. For each of these, you would given them a Subscriber ID. Again, the format is probably up to you. If you expect lots of big customers, you would use a small Subscriber ID; for many customers, you would need a larger Subscriber ID. These Subscriber ID's are similar to the domains in the IPv4 addressing scheme.

What is left in the address is called the intra-subscriber part (the part before this is often called the Subscriber Prefix), and while shown as consisting of a Subnet ID and an Interface ID, it could be organized in many ways. A large organization might have the need for several levels of addressing hierarchy and could further subdivide the address space. One recommendation is for the Subscriber Prefix to be 64 bits, the Subnet ID to be 16 bits and the Interface ID to be 48 bits, so that you could use the 48-bit IEEE 802 MAC address as the local ID of the node.

One possible advantage is the ability to easily boot a device that has no operating system and assign it an IP address, and another is that address resolution on local networks is no longer needed.

Flow Labels and Switching

An IPv6 packet can have a 28-bit flow label that is non-zero, where a zero indicates no flow label. Packets without flow labels are legal and are handled like packets are currently handled under IPv4. Flow labels are similar to virtual circuits; they are instantiated by the originator of a flow (or stream or circuit or whatever you want to call it) sending a message with a unique flow label and source address combination. Routers will see the new flow label and not only do the routing based on the TCLASS field, but store that information in a switching table. Future packets with that flow lable will simply be switched without having to worry about routing. The obvious advantages are faster switching service, the ability to segment traffic into time-dependent and non-time-dependent streams and less load on the routers.

Option Fields

IPv6 has a different options structure than IPv4. The Next Header field is either zero of non-zero. A zero entry indicates no options, but a non-zero entry indicates what the type of the first option. The option types are:
  1. Hop-by-hop options - type of service stuff for routers
  2. Routing - source routing
  3. Fragmentation - fragmentation information
  4. Authentication - validation of senders id
  5. Encrypted security payload - encryption keys and other data
  6. Destination Options - information for the destination

So if the first option is Fragmentation, Next Header would contain the number 3.

The format for the options is:

Each specifies the next option header, or zero for none. Since each option has a length that is either constant or specified in the option data, a router can easily find the data that it needs. In addition, the options that are present in a packet must be in numeric order by type. For example, if the Authentication option is present, it must appear after any option types 1,2 or 3 and before any option types 5 or 6. An example would be a packet that has hop-by-hop options, routing options, and encryption options; the format of the packet would be:

Controversies

As you might expect, not everyone is delighted with the IPv6 switching model. Some wanted longer addresses. One complaint was that the maximum payload length was too short, so one of the hop-by-hop options is for a Jumbogram with a maximum length of 4 gigabytes. Some think that the 8-bit hop count is too small, but others believe that if you can't get it there in 256 hops, you have a significant network design problem. Some believe that security options don't belong in the network layer, and some think that removing the checksum was a mistake. So, we will have to wait and see how this works out in the next few years.