The basics of ICMPv6, a very critical protocol in IPv6 for many core services. In IPv4 the ICMP procotol is a very helpful tool for, among other purposes, troubleshooting tasks, but IPv4 could in theory exist without ICMP, but ICMPv6 is unconditional for a functional IPv6 network.
The first article in a long while on the blog and the first of several intended IPv6 posts to be published.
Compared to IPv4 several protocols could be said to have been incorporated into ICMPv6. For example ICMPv4, ARP, IGMP and some address autoconfiguration tasks, is in IPv6 all done by ICMPv6.
The basic format of a ICMPv6 packet:
The Ethernet header contains the Ethertype 86DD for the network interface card to deliver the frame content to IPv6, as well as the ordinary Source and Destination MAC address field, not displayed for simplicity.
The IPv6 header has the Next Header field set to 58, which instructs IPv6 to give the packet content to the ICMPv6 module. The IPv6 header also contains several other fields, e.g. source and destination IPv6 address, hop limit, length, not displayed here for simplicity.
The ICMPv6 header has these three fields:
Type (8 bits) : defines the type of ICMPv6 message.
Code (8 bits) : is used for some TYPE to add granularity to the message.
Checksum (16 bits) : calculated checksum of the ICMPv6 packet.
Following the 4 byte ICMPv6 header a payload could follow, which will be depending in size and content of the specific TYPE set in the ICMPv6 header.
The TYPE field of 8 bits could hold a decimal value between 0-255 and is divided into two major parts (depending of the bit value of the very first bit).
Low values, in decimal between 0-127, of the TYPE field are error messages used to signal e.g. Time Exceeded, Packet Too Big or Destination Unreachable problems.
High values, in decimal between 128-255, of TYPE are several very different informational messages, for example classic Echo Request and Reply, Multicast reports, Router and Neighbor Advertisements.
Other articles will explore many of these functions in IPv6 and ICMPv6.