IPv6 Core Protocols Implementation

The Internet Control Message Protocol for IPv6 (ICMPv6) is similar to ICMP for IPv4 [RFC792]. [RFC2463] defines the basic ICMPv6 protocol messages. These messages defined in [RFC2463] are for purposes of error reporting and network diagnostics. For example, a node sends ICMPv6 messages to notify a packet source that the node has encountered errors while processing the packet. In addition, a node can utilize the ICMPv6 messages to perform a simple network reachability test.
Different from ICMP for IPv4, ICMPv6 provides a lot of important functions that are necessary for the IPv6 protocol operation. For example, the Neighbor Discovery Protocol, described in the next chapter, operates over ICMPv6, which performs a rich set of functions such as automatic address configuration and link-layer address resolution. Therefore, any node that supports IPv6 must fully implement ICMPv6.
Unlike other upper layer protocols, like TCP or UDP, ICMP for IPv4 and ICMP for IPv6 are completely different protocols. The packet format of TCP or UDP and its algorithms are the same regardless of the IP version. Because of this, IPv4 nodes and IPv6 nodes can communicate with each other to a certain level by using the address translation mechanism. However, it is difficult to provide interoperability for ICMP between IPv4 and IPv6.
In this chapter, we will describe the basic ICMPv6 protocol as defined in [RFC2463]. We will explain ICMPv6-related protocol data structures and the implementation. We will also describe the Path MTU (Maximum Transmission Unit) discovery mechanism, which is performed using...