A widely used Network Layer Protocol designed to address the shortcoming of earlier developed IPv4 which had a 32-bit address space, which was quickly being used up.

IPv4 can be transitioned to IPv6 by using Tunnelling.

Datagram Format

The key fields in the IPv6 Datagram are:

  • Version: 4 bits that identifies the IP versions number. The value 6 in this field indicate IPv6.
  • Traffic class: 8 bits that, like the TOS field in IPv4, can be used to give priority to certain datagrams in flow (see below) like voice-over-IP.
  • Flow label: 20 bits for identifying a flow of datagrams.
  • Payload length: 16 bits treated as an unsigned integer giving the number of bytes of the Data field (payload) that follows the 40-byte header.
  • Next header: 8 bits to identify the protocol to which the Data field is delivered (e.g. TCP or UDP). It use the same values to identify protocols as the protocol field in IPv4.
  • Hop limit: 8 bits that are decremented by one each time a Router forwards the datagram. If this value reaches zero, the router must discard the datagram.
  • Source- and Destination address: Various formats of the IPv6 128-bit address described in RFC 4291.
  • Data: The payload portion. When a datagram reaches its destination this payload is removed from the datagram and passed on to the protocol specified in the next header field.

Fields from IPv4 not included in IPv6

Several fields from IPv4 are not present in IPv6:

  • Fragmentation/reassembly: IPv6 does not allow for fragmentation and reassembly at intermediary Routers. This can only be done at source and destination. If a router receives a datagram too large to Forward it drop the packet and sends a “packet too big” ICMP error message to the sender.
  • Header checksum: Checksums are already performed by Transport Layer Protocols (like TCP and UDP).
  • Options: Removed to result in a fixed-length 40-byte header. Options can still be implemented by using the next header to point to an options field.