IPv6 Core Protocols Implementation

A network layer protocol often needs to access link-layer information when communication takes place at the network layer among different nodes. For example, a node connected to an Ethernet link needs to know the Ethernet address of a remote node when it communicates with that remote node at the network layer. IPv4 uses the Address Resolution Protocol (ARP) for this purpose. While ARP works quite well, several drawbacks have been pointed out from operational experiences, such as the dependency on expensive link-level broadcasting.
The internet user base has grown dramatically over the past decade and so has the network complexity. Configuring network and networked devices has become even more of a challenge, despite the existence of mechanisms such as the Dynamic Host Configuration Protocol (DHCP) for automating the configuration procedure. It is unrealistic to expect users of new Internet applications and network appliances to have enough networking knowledge to perform such tasks.
One of the design goals of IPv6 was to meet these challenges. The IETF developed the Neighbor Discovery Protocol (ND) and the Stateless Address Autoconfiguration mechanism to automate the configuration process and to ease user intervention. ND handles various types of information needed for communication within a single link, including link-layer address resolution, Router Discovery, and route Redirection. While similar mechanisms exist in IPv4, ND was designed based on operational experiences to work better than the IPv4 counterparts. For example, link-layer address resolution utilizes link-level multicasting and is less disturbing than ARP; Router Discovery is a...