Figure 1 illustrates the protocol stack in a dual stack node. The common transport layer components support two network layer components (IPv4 and IPv6), allowing applications on the node to communicate with both IPv4 and IPv6 applications. A dual stack node should be configured with both IPv4 and IPv6 addresses.

Dual stack is the most straightforward technique that allows interoperation between IPv6 applications and IPv4 applications. IPv6-aware applications such as telnet, ftp, DNS, Web Servers deployed on dual stack nodes can service existing IPv4-only nodes and new IPv6 nodes avoiding the need to run two separate applications for the same purpose.

IPv6-aware applications running on dual stack nodes communicate with IPv4 applications running on IPv4-only nodes using a special IPv6 address called an IPv4-mapped IPv6 address [1]. The IPv4-mapped IPv6 address with the format “::ffff:a.b.c.d” contains the IPv4 address in the low-order 32 bits.

When an IPv4 client application sends a request to an IPv6 server application bound to a wildcard address, the dual stack node presents the client address as a 128 bit IPv4-mapped IPv6 address to the IPv6 application. This allows the IPv6 application to service the request as a regular IPv6 request. While transmitting the response, the dual stack node will properly interpret the IPv4-mapped IPv6 address as an IPv4 address and the packets exchanged between the two nodes will be IPv4 packets.

5. Tunneling

Tunneling is a key transition mechanism strategy that allows isolated IPv6 nodes or networks to communicate with each other using a virtual link created over the existing IPv4 infrastructure. The IPv6 nodes that act as tunnel endpoints should be dual stack nodes. The tunnel entry-point node encapsulates each IPv6 packet with an IPv4 header and transmits the encapsulated IPv4 packet using the existing IPv4 routing infrastructure. The tunnel exit-point node receives the encapsulated packet, decapsulates it, and passes it to its final destination.

Tunnel configuration can be either manual (configured) or automatic, they primarily differ in how the IPv4 tunnel end-point is determined.

The manually configured tunnels are point-to-point tunnels; the tunnel configuration is done on both the tunnel entry-point node and exit-point node. The encapsulating node determines the IPv4 tunnel endpoint from the configuration information.

The automatic tunnels are point-to-multipoint tunnels, and they require no manual configuration. They use a special IPv6 address with an embedded IPv4 tunnel endpoint address. 6to4 is an example of automatic tunneling mechanism.

Tunneling can be used in different scenarios, as discussed in the following sections.

5.1 Host-to-Host

In a host-to-host configuration, the tunnel endpoints are IPv6/IPv4 (dual stack) hosts that are interconnected by an IPv4 infrastructure. This tunnel configuration enables newly deployed isolated IPv6/IPv4 hosts to communicate with each other by creating an IPv6-in-IPv4 tunnel. In this case, the tunnel spans the entire end-to-end path that the packet takes.

4