A translator located in the network layer in the protocol stack is called a “header translator”. Such mechanisms translate IPv4 datagram headers into IPv6 datagram headers or vice versa. A model that can be used when implementing this mechanism is presented in RFC 2765 [RFC2765]: “SIIT Stateless IP/ICMP Translation Algorithm”.
Network Address Translation with Protocol Translation (NAT-PT), defined in RFC 2766 [RFC2766], is a service that can be used to translate data sent between IP-heterogeneous nodes. NAT-PT translates an IPv4 datagram into, as far as possible, a semantically equivalent IPv6 datagram or vice versa. For this service to work it has to be at the interconnection point between the IPv4 network and the IPv6 network.
Just like existing NATs in the IPv4 world translate between (usually) private IPv4 addresses and globally routable IPv4 addresses, the NAT part of NAT-PT translates between a globally routable IPv4 address to an IPv6 address or vice versa as well as from a private IPv4 address to a global IPv6 address. The PT part of the NAT-PT handles the interpretation and translation of the semantically equivalent IP headers, either from IPv4 to IPv6 or from IPv6 to IPv4. Like NAT, NAT-PT also uses a pool of addresses, which it dynamically assigns to the translated datagrams.
Dual-stack and tunnel-based mechanisms do not alter any of the data contained in the IP datagram. This is true both for IPv4 and IPv6 since the communication is end-to-end using only one protocol. NAT-PT (and NAPT-PT as described below) on the other hand translates the header of the datagram from IPv6 to IPv4 or vice versa. The result is a new header which is semantically equivalent to the original header but not equal. It is therefore likely that some of the information is lost during translation. For example it may happen that a service, which is only available for one protocol, is lost when converted to another protocol.
RFC2766 also specifies a service called Network Address Port Translation + Packet Translation (NAPT-PT). This service enables IPv6 nodes to communicate transparently using only one IPv4 address. NAPT-PT maintains a set of port numbers, which it dynamically assigns to sockets located on the recipient side of the NAPT-PT node.
NAT-PT shares many of the problems normal NAT or the TRT mechanism have, e.g. handling or rather failing to handle IP addresses embedded in application protocol payloads.
The IETF is currently deprecating NAT-PT (see [AD05] for the rationale), but may rework it to a more acceptable format. It should be seen as a transition method of last resort. It is highly preferable that at least one ‘side’ of the networking scenario is dual-stack so that a common, non-translated, network protocol can be used (IPv4 or IPv6). If this is not possible, and performance permits, an ALG should be preferred (see below).
