Tunneling
In most deployment scenarios, the IPv6 routing infrastructure will be
built up over time. While the IPv6 routing infrastructure is being
deployed, the existing IPv4 routing infrastructure can remain
functional and can be used to carry IPv6 traffic.
Tunneling provides a way to utilize the existing IPv4 routing
infrastructure to carry IPv6 traffic. IPv6/IPv4 hosts and routers can
tunnel IPv6 datagrams over regions of IPv4 routing topology by
encapsulating them within IPv4 packets.
IPv6 defines numerous techniques to accomplish tunneling. Based on
usability, flexibility, and perceived popularity, many implementations
(Nucleus IPv6) have been designed to support two such tunneling
techniques: Configured Tunneling and 6to4 Tunneling.
Configured
Tunneling. In configured tunneling, the tunnel endpoint address
is determined from configuration information in the encapsulating node.
For each tunnel, the encapsulating node must store the tunnel endpoint
address.
When an IPv6 packet is transmitted over a tunnel, the tunnel
endpoint configured for that tunnel is used as the destination address
for the encapsulating IPv4 header. Configured tunneling uses IPv6
native addresses as the source and destination addresses of the IPv6
packet.
6to4 Tunneling.
The IANA has permanently assigned
the prefix 2002::/16 for the 6to4 scheme. The subscriber site is then
deemed to have the address prefix 2002:V4ADDR::/48, where V4ADDR is the
globally unique 32-bit IPv4 address.
Within the subscriber site, this prefix is used exactly like any
other IPv6 prefix. The 6to4 address is used as the source address of
all communications via the 6to4 tunnel.
DNS For IPv6
To support the storage of IPv6 addresses, the following extensions have
been defined:
* A new resource record type, AAAA, is defined to map a domain name
to an IPv6 address
* A new domain, ip6.int, is defined to support lookups based on address
IPv6 Extension Headers
Unlike in IPv4, the IPv6 header is a fixed length. Any additional
information that needs to be provided to the IP layer is contained in
extension headers appended to the basic IPv6 header.
Ancillary Data
Ancillary data is used to transfer IPv6 Extension Headers and
additional control information between the application and the network
stack via socket options and the SendMessage/RecieveMessage routines
provided by the IPv6 networking provider. This additional data is used
by the local IPv6 stack, intermediate IPv6 stacks responsible for
packet routing and the destination IPv6 stack to properly process the
IPv6 packet as is required by the sending application.
In Conclusion
With the imminent exhaustion of the IPv4 address space, and a mounting
number of embedded devices pushing the limits, the need for a new
protocol is upon us. Fortunately, IPv6 has the necessary prerequisites
to move the industry forward, enabling new and innovative functionality
on a variety of devices that just a few years ago were unimaginable.
Rex Smith is a Product Manager for
the Embedded Systems Division of Mentor Graphics where he is responsible for Nucleus OS
and related products. Rex has spent more than 12 years working with
embedded systems. Smith earned a Bachelors of Science in Electrical
Engineering from University of Alabama. You can email Rex at:
rex_smith@mentor.com.