With the design and implementation of the fewer fields and 64-bit aligned fields, IPv6 is able to take advantage of the upcoming 64-bit processors for faster and efficient processing.
IPv6 basic header has a fixed length of 40 bytes.
Since most current link-layer technologies are relatively reliable and perform error detection, the IP header checksum is considered redundant and hence has been removed. Without the IP header checksum, both the connection and connectionless transport layer protocols are required to perform error detection and recovery. The removal of the IP checksum field further reduces the network layer processing time, as routers can concentrate solely on forwarding packets.
If checksuming is required, it can be done via an AH header which provides cryptographically strong authentication and eventually a checksum for the whole packet.
IPv6 Datagram Format
The IPv6 header comprises of the following 8 fields:
|Version||Indicates the IP version. Always contains 0110 (6 in decimal – IPv6).|
|Traffic Class||Similar and functions the same as the Type of Service field in IPv4. Used to tag the packet with a traffic class that can be used in Differentiated Class of Service (DiffServ). IPv6 allows this field to be rewritten at each router hop.|
|Flow Label||A new field introduced in IPv6 used to tag or label packets in a particular traffic flow – packets that are not just originated from the same source to the same destination, but belong to the same application at the source or destination. This allows faster identification and differentiation of packets at the network layer – routers no longer required to process the application data to identify the flow, as the information is available in the packet header. An advantage of differentiating traffic flows is that when load balancing traffic across multiple paths, the packets that belong to the same flow are always forwarded across the same path to prevent possible packet reordering at the destination. It can also be used for multilayer switching techniques and achieve faster packet-switching performance, eg: QoS for IPsec-encrypted packets.|
|Payload Length||Similar to the Total Length field in IPv4. Used to indicate the total length of application data (IP Payload). |
Note: Finding the payload length in an IPv4 packet requires the subtraction of the Header Length field from the Total Length field.
Note: The IPv4 Total Length field is 16 bit; the IPv6 Payload Length field is 20 bits. Theoretically IPv6 packets are capable of carrying larger payload (1,048,575 bytes in IPv6 vs 65,535 bytes in IPv4).
|Next Header||Similar to the Protocol field in IPv4. Used to specify the type of header following the basic header – a transport layer (TCP, UDP) header, or an IPv6 extension header. IPv6 uses extension headers to manage optional header information. Refer to the next section for more info.|
|Hop Limit||Similar to the TTL field in IPv4. Used to specify the maximum number of hops that a packet can pass through before it is considered invalid. Each router decrements the value by 1 without recalculating the checksum (there is no checksum field in the IPv6 header). Recalculation costs processing time on IPv4 routers.|
|Source Address||Indicates the source address of an IPv6 packet.|
|Destination Address||Indicates the destination address of an IPv6 packet.|