In my last column, I explained preparing your network for IPv6 is a good idea. In this edition, we'll peek under the hood of the IPv6 header and see how it's put together.
The IPv6 header is, surprisingly, less complicated than the IPv4 header. This is a credit to its designers, who have substantially improved functionality while reducing complexity.
The length of an IPv4 packet's header varies, and thus requires the use of a header length field. IPv6 uses 40 bytes in an eight-field header. A fixed-length header makes it much easier for routers to process the packet.
Three of the fields are the same in both versions:
Version (4 bits) is used to tell routers what protocol is in use; the default is 6.
Source address and destination address (128 bits each) are the IPv6 addresses of the sending and destination hosts.
The other five fields in the IPv6 header are new. I don't have room to go into great detail; if you're interested in digging deeper, check out the IPv6 RFC.
- The traffic class field (8 bits) allows devices to differentiate between latency-sensitive traffic (like video and voice) and low-priority data (like email and Web traffic). There are several groups currently developing ways to best utilize this field, with the Differentiated Services project currently in the lead.
- The flow label field (20 bits) can be used by a host to request special handling from IPv6-compliant routers. The ability to manage flows -- traffic between end stations -- is important in providing quality of service. This field allows IPv6 to operate in a manner similar to the IPv4 leader in flow management, Multiprotocol Label Switching.
- The next header field (8 bits) alerts routers about additional headers that need to be examined. While the IPv6 header's length is fixed, the protocol can add other headers to the main header. These additional headers provide features such as source routing, encryption, and authentication.
- The payload length field (16 bits) describes the length in octets of the payload (data) portion of the IPv6 packet. The 16-bit field length (2^16) lets version 6 support payloads in excess of 64,000 octets.
- The hop limit field (8 bits) specifies the number of routing hops a packet can take before being discarded. Hop limits provide routing loop protection and keep packets from circulating indefinitely. At 8 bits, this field allows for a maximum of 255 hops, though in today's networks a path would not likely be that long.
This wraps up our discussion of the IPv6 header. In my next -- and final -- column on IPv6, I'll discuss addressing. If you think you have a hard time remembering IPv4 addresses now, just wait until you see what version 6 has in store!