IPv6 Core Protocols Implementation

The basic operational principles are not different between IPv4 and IPv6. From operational experiences of IPv4, however, IPv6 introduces some remarkable changes. One major revision is the introduction of extension headers. Unlike the IPv4 options, each extension header is realized as if it were a separate upper layer protocol, thereby enlarging the possible number and size of options.
Other types of optional information are also implemented using the framework of extension headers. For example, packet fragmentation and source routing are implemented with dedicated extension headers. As a result of the introduction of extension headers, the base IPv6 header has been simplified and only contains essential information for common operation.
Another important change with IPv6 is the source address selection of outgoing IPv6 packets. As explained in Chapter 2, IPv6 provides various types of addresses with different properties: addresses of different scopes or different lifetimes. Selecting a reasonable source address for a given destination is not a matter of preference or optimization; it sometimes affects interoperability.
In this chapter, we discuss such IPv6 specific issues regarding the network layer operations in detail. We first provide an overview of IPv6 extension headers based on [RFC2460]. We then discuss the default address selection algorithm defined in [RFC3484]. While main interest of this chapter is source address selection, we also describe the destination address selection algorithm, since these algorithms share the same basic principle.
A detailed description of KAME s IPv6 implementation of these specifications follow. This part is roughly separated into two...