Home FAQ/Intro TODO List
During the long, long transition from IPv4 to IPv6, it will be necessary for IPv6-only systems to communicate with IPv4-only systems. Obviously, this will require some sort of translation. There are many methods for this, including NAT-PT and SOCKS proxies, but TRT is one of the easiest to implement and understand.
Here are some specific examples of uses for TRT:
pTRTd is able to achieve platform independence by including a completely self-contained IPv6 stack. The internal stack is used to communicate with IPv6 nodes, and the host system's stack is used for IPv4 connections.
In its early development stages, pTRTd is only known to work on Linux systems, although it should be easy to port to BSD and Solaris systems. The only real OS dependency, other than a Posix-like API with BSD sockets, is the tuntap interface, which is included in the Linux kernel and comes precompiled as a module with most Linux distributions. The tuntap driver is necessary to get packets into and out of pTRTd, although it would be possible to implement other interfaces for platforms on which tuntap is not available.
Like other translation methods, TRT "maps" part or all of the IPv4 address space into a single IPv6 prefix. This prefix is taken from either a site's own address allocation or the site-local block. All traffic to this prefix is routed to the TRT box, which pretends to be all of the hosts in the IPv4 space and accepts connections to any address in the prefix. The TRT then makes an IPv4 connection to the real destination, and transparently passes all traffic between the two sessions, creating the illusion that the IPv4 destination is actually on the IPv6 network.
The problem is that the IPv6 hosts must know the translated addresses of each of the IPv4 hosts they may need to contact. If the number of IPv4 hosts is small, the translated addresses can be placed in DNS. However, if the TRT will be used to translate the entire IPv4 address space, keeping a translated version of all the DNS records in the world is infeasible, so another method is needed.
The best method to provide translated addresses is to use a DNS proxy, like totd. The proxy acts as a regular caching DNS server, except that it translates IPv4 addresses in DNS replies into IPv6 addresses in the TRT prefix. Thus, hosts using the proxy see only IPv6 addresses, even for IPv4-only hosts.