diff options
| author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 | 
|---|---|---|
| committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 | 
| commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
| tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2766.txt | |
| parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) | |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2766.txt')
| -rw-r--r-- | doc/rfc/rfc2766.txt | 1179 | 
1 files changed, 1179 insertions, 0 deletions
| diff --git a/doc/rfc/rfc2766.txt b/doc/rfc/rfc2766.txt new file mode 100644 index 0000000..7371030 --- /dev/null +++ b/doc/rfc/rfc2766.txt @@ -0,0 +1,1179 @@ + + + + + + +Network Working Group                                         G. Tsirtsis +Request for Comments: 2766                                             BT +Category: Standards Track                                    P. Srisuresh +                                                    Campio Communications +                                                            February 2000 + + +      Network Address Translation - Protocol Translation (NAT-PT) + +Status of this Memo + +   This document specifies an Internet standards track protocol for the +   Internet community, and requests discussion and suggestions for +   improvements.  Please refer to the current edition of the "Internet +   Official Protocol Standards" (STD 1) for the standardization state +   and status of this protocol.  Distribution of this memo is unlimited. + +Copyright Notice + +   Copyright (C) The Internet Society (2000).  All Rights Reserved. + +Abstract + +   This document specifies an IPv4-to-IPv6 transition mechanism, in +   addition to those already specified in [TRANS]. This solution +   attempts to provide transparent routing, as defined in [NAT-TERM], to +   end-nodes in V6 realm trying to communicate with end-nodes in V4 +   realm and vice versa. This is achieved using a combination of Network +   Address Translation and Protocol Translation. The scheme described +   does not mandate dual-stacks (i.e., IPv4 as well as V6 protocol +   support) or special purpose routing requirements (such as requiring +   tunneling support) on end nodes. This scheme is based on a +   combination of address translation theme as described in [NAT-TERM] +   and V6/V4 protocol translation theme as described in [SIIT]. + +Acknowledgements + +   Special thanks to Pedro Marques for reviewing an earlier version of +   this memo.  Also, many thanks to Alan O'Neill and Martin Tatham, as +   the mechanism described in this document was initially developed +   through discussions with them. + + + + + + + + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 1] + +RFC 2766                         NAT-PT                    February 2000 + + +Table of Contents + +   1. Introduction..................................................  2 +   2. Terminology...................................................  3 +      2.1 Network Address Translation (NAT).........................  4 +      2.2 NAT-PT flavors............................................  4 +         2.2.1 Traditional-NAT-PT...................................  4 +         2.2.2 Bi-directional-NAT-PT................................  5 +      2.3 Protocol Translation (PT).................................  5 +      2.4 Application Level Gateway (ALG)...........................  5 +      2.5 Requirements..............................................  5 +   3. Traditional-NAT-PT operation (V6 to V4).......................  6 +      3.1 NAT-PT Outgoing Sessions..................................  6 +      3.2 NAPT-PT Outgoing Sessions.................................  7 +   4. Use of DNS-ALG for Address assignment.........................  8 +      4.1 V4 Address Assignment for Incoming Connections (V4 to V6).  9 +      4.2 V4 Address Assignment for Outgoing Connections (V6 to V4). 11 +   5. Protocol Translation Details.................................. 12 +      5.1 Translating IPv4 Headers to IPv6 Headers.................. 13 +      5.2 Translating IPv6 Headers to IPv4 Headers.................. 13 +      5.3 TCP/UDP/ICMP Checksum Update.............................. 13 +   6. FTP Application Level Gateway (FTP-ALG) Support............... 14 +      6.1 Payload modifications for V4 originated FTP sessions...... 15 +      6.2 Payload modifications for V6 originated FTP sessions...... 16 +      6.3 Header updates for FTP control packets.................... 16 +   7. NAT-PT Limitations and Future Work............................ 17 +      7.1 Topology Limitations...................................... 17 +      7.2 Protocol Translation Limitations.......................... 17 +      7.3 Impact of Address Translation............................. 18 +      7.4 Lack of End-to-End Security............................... 18 +      7.5 DNS Translation and DNSSEC................................ 18 +   8. Applicability Statement....................................... 18 +   9. Security Considerations....................................... 19 +   10. References................................................... 19 +   Authors' Addresses............................................... 20 +   Full Copyright Statement......................................... 21 + +1. Introduction + +   IPv6 is a new version of the IP protocol designed to modernize IPv4 +   which was designed in the 1970s. IPv6 has a number of advantages over +   IPv4 that will allow for future Internet growth and will simplify IP +   configuration and administration. IPv6 has a larger address space +   than IPv4, an addressing model that promotes aggressive route +   aggregation and a powerful autoconfiguration mechanism.  In time, it +   is expected that Internet growth and a need for a plug-and-play +   solution will result in widespread adoption of IPv6. + + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 2] + +RFC 2766                         NAT-PT                    February 2000 + + +   There is expected to be a long transition period during which it will +   be necessary for IPv4 and IPv6 nodes to coexist and communicate.  A +   strong, flexible set of IPv4-to-IPv6 transition and coexistence +   mechanisms will be required during this transition period. + +   The SIIT proposal [SIIT] describes a protocol translation mechanism +   that allows communication between IPv6-only and IPv4-only nodes via +   protocol independent translation of IPv4 and IPv6 datagrams, +   requiring no state information for the session. The SIIT proposal +   assumes that V6 nodes are assigned a V4 address for communicating +   with V4 nodes, and does not specify a mechanism for the assignment of +   these addresses. + +   NAT-PT uses a pool of V4 addresses for assignment to V6 nodes on a +   dynamic basis as sessions are initiated across V4-V6  boundaries. The +   V4 addresses are assumed to be globally unique. NAT-PT with private +   V4 addresses is outside the scope of this document and for further +   study.  NAT-PT binds addresses in V6 network with addresses in V4 +   network and vice versa to provide transparent routing [NAT-TERM] for +   the datagrams traversing between address realms. This requires no +   changes to end nodes and IP packet routing is completely transparent +   [NAT-TERM] to end nodes. It does, however, require NAT-PT to track +   the sessions it supports and mandates that inbound and outbound +   datagrams pertaining to a session traverse the same NAT-PT router. +   You will note that the topology restrictions on NAT-PT are the same +   with those described for V4 NATs in [NAT-TERM]. Protocol translation +   details specified in [SIIT] would be used to extend address +   translation with protocol syntax/semantics translation. A detailed +   applicability statement for NAT-PT may be found at the end of this +   document in section 7. + +   By combining SIIT protocol translation with the dynamic address +   translation capabilities of NAT and appropriate ALGs, NAT-PT provides +   a complete solution that would allow a large number of commonly used +   applications to interoperate between IPv6-only nodes and IPv4-only + +   A fundamental assumption for NAT-PT is only to be use when no other +   native IPv6 or IPv6 over IPv4 tunneled means of communication is +   possible. In other words the aim is to only use translation between +   IPv6 only nodes and IPv4 only nodes, while translation between IPv6 +   only nodes and the IPv4 part of a dual stack node should be avoided +   over other alternatives. + +2. Terminology + +   The majority of terms used in this document are borrowed almost as is +   from [NAT-TERM]. The following lists terms specific to this document. + + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 3] + +RFC 2766                         NAT-PT                    February 2000 + + +2.1 Network Address Translation (NAT) + +   The term NAT in this document is very similar to the IPv4 NAT +   described in [NAT-TERM], but is not identical. IPv4 NAT translates +   one IPv4 address into another IPv4 address. In this document, NAT +   refers to translation of an IPv4 address into an IPv6 address and +   vice versa. + +   While the V4 NAT [NAT-TERM] provides routing between private V4 and +   external V4 address realms, NAT in this document provides routing +   between a V6 address realm and an external V4 address realm. + +2.2 NAT-PT flavors + +   Just as there are various flavors identified with V4 NAT in [NAT- +   TERM], the following NAT-PT variations may be identified in this +   document. + +2.2.1 Traditional NAT-PT + +   Traditional-NAT-PT would allow hosts within a V6 network to access +   hosts in the V4 network. In a traditional-NAT-PT, sessions are uni- +   directional, outbound from the V6 network.  This is in contrast with +   Bi-directional-NAT-PT, which permits sessions in both inbound and +   outbound directions. + +   Just as with V4 traditional-NAT, there are two variations to +   traditional-NAT-PT, namely Basic-NAT-PT and NAPT-PT. + +   With Basic-NAT-PT, a block of V4 addresses are set aside for +   translating addresses of V6 hosts as they originate sessions to the +   V4 hosts in external domain. For packets outbound from the V6 domain, +   the source IP address and related fields such as IP, TCP, UDP and +   ICMP header checksums are translated.  For inbound packets, the +   destination IP address and the checksums as listed above are +   translated. + +   NAPT-PT extends the notion of translation one step further by also +   translating transport identifier (e.g., TCP and UDP port numbers, +   ICMP query identifiers). This allows the transport identifiers of a +   number of V6 hosts to be multiplexed into the transport identifiers +   of a single assigned V4 address.  NAPT-PT allows a set of V6 hosts to +   share a single V4 address. Note that NAPT-PT can be combined with +   Basic-NAT-PT so that a pool of external addresses are used in +   conjunction with port translation. + + + + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 4] + +RFC 2766                         NAT-PT                    February 2000 + + +   For packets outbound from the V6 network, NAPT-PT would translate the +   source IP address, source transport identifier and related fields +   such as IP, TCP, UDP and ICMP header checksums. Transport identifier +   can be one of TCP/UDP port or ICMP query ID. For inbound packets, the +   destination IP address, destination transport identifier and the IP +   and transport header checksums are translated. + +2.2.2  Bi-Directional-NAT-PT + +   With Bi-directional-NAT-PT, sessions can be initiated from hosts in +   V4 network as well as the V6 network. V6 network addresses are bound +   to V4 addresses, statically or dynamically as connections are +   established in either direction.  The name space (i.e., their Fully +   Qualified Domain Names) between hosts in V4 and V6 networks is +   assumed to be end-to-end unique.  Hosts in V4 realm access V6-realm +   hosts by using DNS for address resolution. A DNS-ALG [DNS-ALG] must +   be employed in conjunction with Bi-Directional-NAT-PT to facilitate +   name to address mapping.  Specifically, the DNS-ALG must be capable +   of translating V6 addresses in DNS Queries and responses into their +   V4-address bindings, and vice versa, as DNS packets traverse between +   V6 and V4 realms. + +2.3 Protocol Translation (PT) + +   PT in this document refers to the translation of an IPv4 packet into +   a semantically equivalent IPv6 packet and vice versa.  Protocol +   translation details are described in [SIIT]. + +2.4 Application Level Gateway (ALG) + +   Application Level Gateway (ALG) [NAT-TERM] is an application specific +   agent that allows a V6 node to communicate with a V4 node and vice +   versa. Some applications carry network addresses in payloads. NAT-PT +   is application unaware and does not snoop the payload. ALG could work +   in conjunction with NAT-PT to provide support for many such +   applications. + +2.5 Requirements + +   The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, +   SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this +   document, are to be interpreted as described in [KEYWORDS]. + + + + + + + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 5] + +RFC 2766                         NAT-PT                    February 2000 + + +3. Traditional-NAT-PT Operation (V6 to V4) + +   NAT-PT offers a straight forward solution based on transparent +   routing [NAT-TERM] and address/protocol translation, allowing a large +   number of applications in V6 and V4 realms to inter-operate without +   requiring any changes to these applications. + +   In the following paragraphs we describe the operation of +   traditional-NAT-PT and the way that connections can be initiated from +   a host in IPv6 domain to a host in IPv4 domain through a +   traditional-NAT-PT + +3.1 Basic-NAT-PT Operation + +          [IPv6-B]-+ +                   |                  +==============+ +          [IPv6-A]-+-[NAT-PT]---------| IPv4 network |--[IPv4-C] +                        |             +==============+ +                 (pool of v4 addresses) + +                     Figure 1: IPv6 to IPv4 communication +           Node IPv6-A has an IPv6 address -> FEDC:BA98::7654:3210 +           Node IPv6-B has an IPv6 address -> FEDC:BA98::7654:3211 +              Node IPv4-C has an IPv4 address -> 132.146.243.30 + +   NAT-PT has a pool of addresses including the IPv4 subnet +   120.130.26/24 + +   The V4 addresses in the address pool could be allocated one-to-one to +   the V6 addresses of the V6 end nodes in which case one needs as many +   V4 addresses as V6 end points. In this document we assume that the V6 +   network has less V4 addresses than V6 end nodes and thus dynamic +   address allocation is required for at least some of them. + +   Say the IPv6 Node A wants to communicate with the IPv4 Node C.  Node +   A creates a packet with: + +      Source Address, SA=FEDC:BA98::7654:3210 and Destination +      Address, DA = PREFIX::132.146.243.30 + +   NOTE: The prefix PREFIX::/96 is advertised in the stub domain by the +   NAT-PT, and packets addressed to this PREFIX will be routed to the +   NAT-PT. The pre-configured PREFIX only needs to be routable within +   the IPv6 stub domain and as such it can be any routable prefix that +   the network administrator chooses. + +   The packet is routed via the NAT-PT gateway, where it is translated +   to IPv4. + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 6] + +RFC 2766                         NAT-PT                    February 2000 + + +   If the outgoing packet is not a session initialisation packet, the +   NAT-PT SHOULD already have stored some state about the related +   session, including assigned IPv4 address and other parameters for the +   translation.  If this state does not exist, the packet SHOULD be +   silently discarded. + +   If the packet is a session initialisation packet, the NAT-PT locally +   allocates an address (e.g: 120.130.26.10)  from  its pool of +   addresses and the packet is translated to IPv4. The translation +   parameters are cached for the duration of the session and the IPv6 to +   IPv4 mapping is retained by NAT-PT. + +   The resulting IPv4 packet has SA=120.130.26.10 and DA=132.146.243.30. +   Any returning traffic will be recognised as belonging to the same +   session by NAT-PT. NAT-PT will use the state information to translate +   the packet, and the resulting  addresses will be +   SA=PREFIX::132.146.243.30, DA=FEDC:BA98::7654:3210.  Note that this +   packet can now be routed inside the IPv6-only stub network as normal. + +3.2 NAPT-PT Operation + +   NAPT-PT, which stands for "Network Address Port Translation + +   Protocol Translation", would allow V6 nodes to communicate with the +   V4 nodes transparently using a single V4 address. The TCP/UDP ports +   of the V6 nodes are translated into TCP/UDP ports of the registered +   V4 address. + +   While NAT-PT support is limited to TCP, UDP and other port +   multiplexing type of applications, NAPT-PT solves a problem that is +   inherent with NAT-PT. That is, NAT-PT would fall flat when the pool +   of V4 addresses assigned for translation purposes is exhausted. Once +   the address pool is exhausted, newer V6 nodes cannot establish +   sessions with the outside world anymore. NAPT-PT, on the other hand, +   will allow for a maximum of 63K TCP and 63K UDP sessions per IPv4 +   address before having no TCP and UDP ports left to assign. + +   To modify the example sited in figure 1, we could have NAPT-PT on the +   border router (instead of NAT-PT) and all V6 addresses could be +   mapped to a single v4 address 120.130.26.10. + +   IPv6 Node A would establish a TCP session with the IPv4 Node C as +   follows: + +   Node A creates a packet with: + +   Source Address, SA=FEDC:BA98::7654:3210 , source TCP port = 3017 and +   Destination Address, DA = PREFIX::132.146.243.30, destination TCP +   port = 23. + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 7] + +RFC 2766                         NAT-PT                    February 2000 + + +   When the packet reaches the NAPT-PT box, NAPT-PT would assign one of +   the TCP ports from the assigned V4 address to translate the tuple of +   (Source Address, Source TCP port) as follows: + +      SA=120.130.26.10, source TCP port = 1025  and +      DA=132.146.243.30, destination TCP port = 23. + +   The returning traffic from 132.146.243.30, TCP port 23 will be +   recognised as belonging to the same session and will be translated +   back to V6 as follows: + +      SA = PREFIX::132.146.243.30, source TCP port = 23; +      DA = FEDC:BA98::7654:3210 , destination TCP port = 3017 + +   Inbound NAPT-PT sessions are restricted to one server per service, +   assigned via static TCP/UDP port mapping. For example, the Node +   [IPv6-A] in figure 1 may be the only HTTP server (port 80) in the V6 +   domain. Node [IPv4-C] sends a packet: + +      SA=132.146.243.30, source TCP port = 1025  and +      DA=120.130.26.10, destination TCP port = 80 + +   NAPT-PT will translate this packet to: + +      SA=PREFIX::132.146.243.30, source TCP port = 1025 +      DA=FEDC:BA98::7654:3210, destination TCP port = 80 + +   In the above example, note that all sessions which reach NAPT-PT with +   a destination port of 80 will be redirected to the same node [IPv6- +   A]. + +4. Use of DNS-ALG for Address Assignment + +   An IPv4 address is assigned by NAT-PT to a V6 node when NAT-PT +   identifies the start of session, inbound or outbound. Identification +   of the start of a new inbound session is performed differently than +   for outbound sessions. However, the same V4 address pool is used for +   assignment to V6 nodes, irrespective of whether a session is +   initiated outbound from a V6 node or initiated inbound from a V4 +   node. + +   Policies determining what type of sessions are allowed and in which +   direction and from/to which nodes is out of the scope of this +   document. + + + + + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 8] + +RFC 2766                         NAT-PT                    February 2000 + + +   IPv4 name to address mappings are held in the DNS with "A" records. +   IPv6 name to address mappings are at the moment held in the DNS with +   "AAAA" records. "A6" records have also been defined but at the time +   of writing they are neither fully standardized nor deployed. + +   In any case, the DNS-ALG's principle of operation described in this +   section is the same with either "AAAA" or "A6" records. The only +   difference is that a name resolution using "A6" records may require +   more than one query - reply pairs. The DNS-ALG SHOULD, in that case, +   track all the replies in the transaction before translating an "A6" +   record to an "A" record. + +   One of the aims of NAT-PT design is to only use translation when +   there is no other means of communication, such as native IPv6 or some +   form of tunneling. For the following discussion NAT-PT, in addition +   to the IPv4 connectivity that it has it may also have a native IPv6 +   and/or a tunneled IPv6 connection. + +4.1 V4 Address assignment for incoming connections (V4 to V6) + +        [DNS]--+ +               |              [DNS]------[DNS]-------[DNS] +      [IPv6-B]-+                           |           | +               |                  +==============+     | +      [IPv6-A]-+----[NAT-PT]------| IPv4 network |--[IPv4-C] +                       |          +==============+ +                 (pool of v4 addresses) + +                     Figure 2: IPv4 to IPv6 communication +           Node IPv6-A has an IPv6 address -> FEDC:BA98::7654:3210 +           Node IPv6-B has an IPv6 address -> FEDC:BA98::7654:3211 +              Node IPv4-C has an IPv4 address -> 132.146.243.30 + +   NAT-PT  has a pool of addresses including the IPv4 subnet +   120.130.26/24 + +   In figure 2 above, when Node C's name resolver sends a name look up +   request for Node A, the lookup query is directed to the DNS server on +   the V6 network. Considering that NAT-PT is residing on the border +   router between V4 and V6 networks, this request datagram would +   traverse through the NAT-PT router. The DNS-ALG on the NAT-PT device +   would modify DNS Queries for A records going into the V6 domain as +   follows: (Note that a TCP/UDP DNS packet is recognised by the fact +   that its source or destination port number is 53) + +      a) For Node Name to Node Address Query requests:  Change the Query +         type from "A" to "AAAA" or "A6". + + + + +Tsirtsis & Srisuresh        Standards Track                     [Page 9] + +RFC 2766                         NAT-PT                    February 2000 + + +      b) For Node address to Node name query requests:  Replace the +         string "IN-ADDR.ARPA" with the string "IP6.INT".  Replace the +         V4 address octets (in reverse order) preceding the string "IN- +         ADDR.ARPA" with the corresponding V6 address (if there exists a +         map) octets in reverse order. + +   In the opposite direction, when a DNS response traverses from the DNS +   server on the V6 network to the V4 node, the DNS-ALG once again +   intercepts the DNS packet and would: + +      a) Translate DNS responses for "AAAA" or "A6" records into "A" +         records, (only translate "A6" records when the name has +         completely been resolved) +      b) Replace the V6 address resolved by the V6 DNS with the V4 +         address internally assigned by the NAT-PT router. + +   If a V4 address is not previously assigned to this V6 node, NAT-PT +   would assign one at this time. As an example say IPv4-C attempts to +   initialise a session with node IPv6-A by making a name lookup ("A" +   record) for Node-A . The name query goes to the local DNS and from +   there it is propagated to the DNS server of the IPv6 network.  The +   DNS-ALG intercepts and translates the "A" query to "AAAA" or "A6" +   query and then forwards it to the DNS server in the IPv6 network +   which replies as follows: (The example uses AAAA records for +   convenience) + +      Node-A    AAAA     FEDC:BA98::7654:3210, + +   this is returned by the DNS server and gets intercepted and +   translated by the DNS-ALG to: + +      Node-A     A      120.130.26.1 + +   The DNS-ALG also holds the mapping between FEDC:BA98::7654:3210 and +   120.130.26.1 in NAT-PT. The "A" record is then returned to Node-C. +   Node-C can now  initiate a session as follows: + +      SA=132.146.243.30, source TCP port = 1025  and +      DA=120.130.26.1, destination TCP port = 80 + +   the packet will be routed to NAT-PT, which since it already holds a +   mapping between  FEDC:BA98::7654:3210 and 120.130.26.1 can translate +   the packet to: + +      SA=PREFIX::132.146.243.30, source TCP port = 1025 +      DA=FEDC:BA98::7654:3210, destination TCP port = 80 + +   the communication can now proceed as normal. + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 10] + +RFC 2766                         NAT-PT                    February 2000 + + +   The TTL values on all DNS resource records (RRs) passing through +   NAT-PT SHOULD be set to 0 so that DNS servers/clients do not cache +   temporarily assigned RRs. Note, however, that due to some buggy DNS +   client implementations a value of 1 might in some cases work better. +   The TTL values should be left unchanged for statically mapped +   addresses. + +   Address mappings for incoming sessions, as described above, are +   subject to denial of service attacks since one can make multiple +   queries for nodes residing in the V6 network causing the DNS-ALG to +   map all V4 addresses in NAT-PT and thus block legitimate incoming +   sessions. Thus, address mappings for incoming sessions should time +   out to minimise the effect of denial of service attacks. +   Additionally, one IPv4 address (using NAPT-PT, see 3.2) could be +   reserved for outgoing sessions only to minimise the effect of such +   attacks to outgoing sessions. + +4.2 V4 Address assignment for outgoing connections (V6 to V4) + +   V6 nodes learn the address of V4 nodes from the DNS server in the V4 +   domain or from the DNS server internal to the V6 network. We +   recommend that DNS servers internal to V6 domains maintain a mapping +   of names to IPv6 addresses for internal nodes and possibly cache +   mappings for some external nodes. In the case where the DNS server in +   the v6 domain contains the mapping for external V4 nodes, the DNS +   queries will not cross the V6 domain and that would obviate the need +   for DNS-ALG intervention. Otherwise, the queries will cross the V6 +   domain and are subject to DNS-ALG intervention.  We recommend +   external DNS servers in the V4 domain cache name mapping for external +   nodes (i.e., V4 nodes) only. Zone transfers across IPv4 - IPv6 +   boundaries are strongly discouraged. + +   In the case of NAPT-PT, a TCP/UDP source port is assigned from the +   registered V4 address upon detection of each new outbound session. + +   We saw that a V6 node that needs to communicate with a V4 node needs +   to use a specific prefix (PREFIX::/96) in front of the IPv4 address +   of the V4 node. The above technique allows the use of this PREFIX +   without any configuration in the nodes. + +   To create another example from Figure 2 say Node-A wants to set up a +   session with Node-C. For this Node-A starts by making a name look-up +   ("AAAA" or "A6" record) for Node-C. + +   Since Node-C may have IPv6 and/or IPv4 addresses, the DNS-ALG on the +   NAT-PT device forwards the original AAAA/A6 query to the external DNS +   system unchanged, as well as an A query for the same node. If an +   AAAA/A6 record exists for the destination, this will be returned to + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 11] + +RFC 2766                         NAT-PT                    February 2000 + + +   NAT-PT which will forward it, also unchanged, to the originating +   host. + +   If there is an A record for Node-C the reply also returns to the +   NAT-PT. The DNS-ALG then, translates the reply adding the appropriate +   PREFIX and forwards it to the originating device with any IPv6 +   addresses that might have learned. So, if the reply is + +      NodeC    A     132.146.243.30, it is translated to +      NodeC   AAAA   PREFIX::132.146.243.30 or to +      NodeC    A6    PREFIX::132.146.243.30 + +   Now Node A can use this address like any other IPv6 address and the +   V6 DNS server can even cache it as long as the PREFIX does not +   change. + +   An issue here is how the V6 DNS server in the V6 stub domain talks to +   the V4 domain outside the V6 stub domain. Remember that there are no +   dual stack nodes here. The external V4 DNS server needs to point to a +   V4 address, part of the V4 pool of addresses, available to NAT-PT. +   NAT-PT keeps a one-to-one mapping between this V4 address and the V6 +   address of the internal V6 DNS server. In the other direction, the V6 +   DNS server points to a V6 address formed by the IPv4 address of the +   external V4 DNS servers and the prefix (PREFIX::/96) that indicates +   non IPv6 nodes.  This mechanism can easily be extended to accommodate +   secondary DNS servers. + +   Note that the scheme described in this section impacts DNSSEC. See +   section 7.5 of this document for details. + +5. Protocol Translation Details + +   The IPv4 and ICMPv4 headers are similar to their V6 counterparts but +   a number of field are either missing, have different meaning or +   different length. NAT-PT SHOULD translate all IP/ICMP headers from v4 +   to v6 and vice versa in order to make end-to-end IPv6 to IPv4 +   communication possible. Due to the address translation function and +   possible port multiplexing, NAT-PT SHOULD also make appropriate +   adjustments to the upper layer protocol (TCP/UDP) headers. A separate +   section on FTP-ALG describes the changes FTP-ALG would make to FTP +   payload as an FTP packet traverses from V4 to V6 realm or vice versa. + +   Protocol Translation details are described in [SIIT], but there are +   some modifications required to SIIT because of the fact that NAT-PT +   also performs Network Address Translation. + + + + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 12] + +RFC 2766                         NAT-PT                    February 2000 + + +5.1 Translating IPv4 headers to IPv6 headers + +   This is done exactly the same as in SIIT apart from the following +   fields: + +      Source Address: +         The low-order 32 bits is the IPv4 source address. The high- +         order 96 bits is the designated PREFIX for all v4 +         communications. Addresses using this PREFIX will be routed +         to the NAT-PT gateway (PREFIX::/96) + +      Destination Address: +         NAT-PT retains a mapping between the IPv4 destination +         address and the IPv6 address of the destination node. The +         IPv4 destination address is replaced by the IPv6 address +         retained in that mapping. + +5.2 Translating IPv6 headers to IPv4 headers + +   This is done exactly the same as in SIIT apart from the Source +   Address which should be determined as follows: + +      Source Address: +         The NAT-PT retains a mapping between the IPv6 source address +         and an IPv4 address from the pool of IPv4 addresses +         available. The IPv6 source address is replaced by the IPv4 +         address retained in that mapping. + +      Destination Address: +         IPv6 packets that are translated have a destination address +         of the form PREFIX::IPv4/96. Thus the low-order 32 bits of +         the IPv6 destination address is copied to the IPv4 +         destination address. + +5.3 TCP/UDP/ICMP Checksum Update + +   NAT-PT retains mapping between IPv6 address and an IPv4 address from +   the pool of IPv4 addresses available. This mapping is used in the +   translation of packets that go through NAT-PT. + +   The following sub-sections describe TCP/UDP/ICMP checksum update +   procedure in NAT-PT, as packets are translated from V4 to V6 and vice +   versa. + + + + + + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 13] + +RFC 2766                         NAT-PT                    February 2000 + + +5.3.1 TCP/UDP/ICMP Checksum Update from IPv4 to IPv6 + +   UDP checksums, when set to a non-zero value, and TCP checksum SHOULD +   be recalculated to reflect the address change from v4 to v6. The +   incremental checksum adjustment algorithm may be borrowed from [NAT]. +   In the case of NAPT-PT, TCP/UDP checksum should be adjusted to +   account for the address and TCP/UDP port changes, going from V4 to V6 +   address. + +   When the checksum of a V4 UDP packet is set to zero, NAT-PT MUST +   evaluate the checksum in its entirety for the V6-translated UDP +   packet. If a V4 UDP packet with a checksum of zero arrives in +   fragments, NAT-PT MUST await all the fragments until they can be +   assembled into a single non-fragmented packet and evaluate the +   checksum prior to forwarding the translated V6 UDP packet. + +   ICMPv6, unlike ICMPv4, uses a pseudo-header, just like UDP and TCP +   during checksum computation. As a result, when the ICMPv6 header +   checksum is computed [SIIT], the checksum needs to be adjusted to +   account for the additional pseudo-header. Note, there may also be +   adjustments required to the checksum due to changes in the source and +   destination addresses (and changes in TCP/UDP/ICMP identifiers in the +   case of NAPT-PT) of the payload carried within ICMP. + +5.3.2 TCP/UDP/ICMP Checksum Update from IPv6 to IPv4 + +   TCP and UDP checksums SHOULD be recalculated to reflect the address +   change from v6 to v4. The incremental checksum adjustment algorithm +   may be borrowed from [NAT]. In the case of NAPT-PT, TCP/UDP checksums +   should be adjusted to account for the address and TCP/UDP port +   changes, going from V6 to V4 addresses. For UDP packets, optionally, +   the checksum may simply be changed to zero. + +   The checksum calculation for a V4 ICMP header needs to be derived +   from the V6 ICMP header by running the checksum adjustment algorithm +   [NAT] to remove the V6 pseudo header from the computation. Note, the +   adjustment must additionally take into account changes to the +   checksum as a result of updates to the source and destination +   addresses (and transport ports in the case of NAPT-PT) made to the +   payload carried within ICMP. + +6. FTP Application Level Gateway (FTP-ALG) Support + +   Because an FTP control session carries, in its payload, the IP +   address and TCP port information for the data session, an FTP-ALG is +   required to provide application level transparency for this popular +   Internet application. + + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 14] + +RFC 2766                         NAT-PT                    February 2000 + + +   In the FTP application running on a legacy V4 node, arguments to the +   FTP PORT command and arguments in PASV response(successful) include +   an IP V4 address and a TCP port, both represented in ASCII as +   h1,h2,h3,h4,p1,p2. However, [FTP-IPV6] suggests EPRT and EPSV command +   extensions to FTP, with an intent to eventually retire the use of +   PORT and PASV commands. These extensions may be used on a V4 or V6 +   node. FTP-ALG, facilitating transparent FTP between V4 and V6 nodes, +   works as follows. + +6.1 Payload modifications for V4 originated FTP sessions + +   A V4 host may or may not have the EPRT and EPSV command extensions +   implemented in its FTP application. If a V4 host originates the FTP +   session and uses PORT or PASV command, the FTP-ALG will translate +   these commands into EPRT and EPSV commands respectively prior to +   forwarding to the V6 node. Likewise, EPSV response from V6 nodes will +   be translated into PASV response prior to forwarding to V4 nodes. +   The format of EPRT and EPSV commands and EPSV response may be +   specified as follows[FTP-IPV6]. + +      EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d> +      EPSV<space><net-prt> +            (or) +      EPSV<space>ALL + +      Format of EPSV response(Positive): 229 <text indicating +      extended passive mode> (<d><d><d><tcp-port><d>) + +   PORT command from a V4 node is translated into EPRT command, by +   setting the protocol <net-prt> field to AF #2 (IPV6) and translating +   the V4 host Address (represented as h1,h2,h3,h4) into its NAT-PT +   assigned V6 address in string notation, as defined in [V6ADDR] in the +   <net-addr> field.  TCP port represented by p1,p2 in PORT command must +   be specified as a decimal <tcp-port> in the EPRT command. Further, +   <tcp-port> translation may also be required in the case of NAPT-PT. +   PASV command from a V4 node is be translated into a EPSV command with +   the <net-prt> argument set to AF #2.  EPSV response from a V6 node is +   translated into PASV response prior to forwarding to the target V4 +   host. + +   If a V4 host originated the FTP session and was using EPRT and EPSV +   commands, the FTP-ALG will simply translate the parameters to these +   commands, without altering the commands themselves. The protocol +   Number <net-prt> field will be translated from AF #1 to AF #2. +   <net-addr> will be translated from the V4 address in ASCII to its +   NAT-PT assigned V6 address in string notation as defined in [V6ADDR]. +   <tcp-port> argument in EPSV response requires translation only in the +   case of NAPT-PT. + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 15] + +RFC 2766                         NAT-PT                    February 2000 + + +6.2 Payload modifications for V6 originated FTP sessions + +   If a V6 host originates the FTP session, however, the FTP-ALG has two +   approaches to pursue. In the first approach, the FTP-ALG will leave +   the command strings "EPRT" and "EPSV" unaltered and simply translate +   the <net-prt>, <net-addr> and <tcp-port> arguments from V6 to its +   NAT-PT (or NAPT-PT) assigned V4 information. <tcp-port> is translated +   only in the case of NAPT-PT. Same goes for EPSV response from V4 +   node. This is the approach we recommend to ensure forward support for +   RFC 2428.  However, with this approach, the V4 hosts are mandated to +   have their FTP application upgraded to support EPRT and EPSV +   extensions to allow access to V4 and V6 hosts, alike. + +   In the second approach, the FTP-ALG will translate the command +   strings "EPRT" and "EPSV" and their parameters from the V6 node into +   their equivalent NAT-PT assigned V4 node info and attach to "PORT" +   and "PASV" commands prior to forwarding to V4 node.  Likewise, PASV +   response from V4 nodes is translated into EPSV response prior to +   forwarding to the target V6 nodes.  However, the FTP-ALG would be +   unable to translate the command "EPSV<space>ALL" issued by V6 nodes. +   In such a case, the V4 host, which receives the command, may return +   an error code indicating unsupported function. This error response +   may cause many RFC 2428 compliant FTP applications to simply fail, +   because EPSV support is mandated by RFC 2428. The benefit of this +   approach, however, is that is does not impose any FTP upgrade +   requirements on V4 hosts. + +6.3 Header updates for FTP control packets + +   All the payload translations considered in the previous sections are +   based on ASCII encoded data.  As a result, these translations may +   result in a change in the size of packet. + +   If the new size is the same as the previous, only the TCP checksum +   needs adjustment as a result of the payload translation.  If the new +   size is different from the previous, TCP sequence numbers should also +   be changed to reflect the change in the length of the FTP control +   session payload. The IP packet length field in the V4 header or the +   IP payload length field in the V6 header should also be changed to +   reflect the new payload size. A table is used by the FTP-ALG to +   correct the TCP sequence and acknowledgement numbers in the TCP +   header for control packets in both directions. + +   The table entries should have the source address, source data port, +   destination address and destination data port for V4 and V6 portions +   of the session, sequence number delta for outbound control packets +   and sequence number delta for inbound control packets. + + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 16] + +RFC 2766                         NAT-PT                    February 2000 + + +   The sequence number for an outbound control packet is increased by +   the outbound sequence number delta, and the acknowledgement number +   for the same outbound packet is decreased by the inbound sequence +   number delta.  Likewise, the sequence number for an inbound packet is +   increased by the inbound sequence number delta and the +   acknowledgement number for the same inbound packet is decreased by +   the outbound sequence number delta. + +7. NAT-PT Limitations and Future Work + +   All limitations associated to NAT [NAT-TERM] are also associated to +   NAT-PT.  Here are the most important of them in detail, as well as +   some unique to NAT-PT. + +7.1 Topology limitations + +   There are limitations to using the NAT-PT translation method. It is +   mandatory that all requests and responses pertaining to a session be +   routed via the same NAT-PT router. One way to guarantee this would be +   to have NAT-PT based on a border router that is unique to a stub +   domain, where all IP packets are either originated from the domain or +   destined to the domain. This is a generic problem with NAT and it is +   fully described in [NAT-TERM]. + +   Note, this limitation does not apply to packets originating from or +   directed to dual-stack nodes that do not require packet translation. +   This is because in a dual-stack set-up, IPv4 addresses implied in a +   V6 address can be identified from the address format PREFIX::x.y.z.w +   and a dual-stack router can accordingly route a packet between v4 and +   dual-stack nodes without tracking state information. + +   This should also not affect IPv6 to IPv6 communication and in fact +   only actually use translation when no other means of communication is +   possible.  For example NAT-PT may also have a native IPv6 connection +   and/or some kind of tunneled IPv6 connection. Both of the above +   connections should be preferred over translation when possible. The +   above makes sure that NAT-PT is a tool only to be used to assist +   transition to native IPv6 to IPv6 communication. + +7.2 Protocol Translation Limitations + +   A number of IPv4 fields have changed meaning in IPv6 and translation +   is not straightforward. For example, the option headers semantics and +   syntax have changed significantly in IPv6.  Details of IPv4 to IPv6 +   Protocol Translation can be found in [SIIT]. + + + + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 17] + +RFC 2766                         NAT-PT                    February 2000 + + +7.3 Impact of Address Translation + +   Since NAT-PT performs address translation, applications that carry +   the IP address in the higher layers will not work.  In this case +   Application Layer Gateways (ALG) need to be incorporated to provide +   support for those applications. This is a generic problem with NAT +   and it is fully described in [NAT-TERM]. + +7.4 Lack of end-to-end security + +   One of the most important limitations of the NAT-PT proposal is the +   fact that end-to-end network layer security is not possible.  Also +   transport and application layer security may not be possible for +   applications that carry IP addresses to the application layer. This +   is an inherent limitation of the Network Address Translation +   function. + +   Independent of NAT-PT, end-to-end IPSec security is not possible +   across different address realms. The two end-nodes that seek IPSec +   network level security must both support one of IPv4 or IPv6. + +7.5 DNS Translation and DNSSEC + +   The scheme described in section 4.2 involves translation of DNS +   messages.  It is clear that this scheme can not be deployed in +   combination with secure DNS.  I.e., an authoritative DNS name server +   in the V6 domain cannot sign replies to queries that originate from +   the V4 world.  As a result, an V4 end-node that demands DNS replies +   to be signed will reject replies that have been tampered with by +   NAT-PT. + +   The good news, however, is that only servers in V6 domain that need +   to be accessible from the V4 world pay the price for the above +   limitation, as V4 end-nodes may not access V6 servers due to DNS +   replies not being signed. + +   Also note that zone transfers between DNS-SEC servers within the same +   V6 network are not impacted. + +   Clearly, with DNS SEC deployment in DNS servers and end-host +   resolvers, the scheme suggested in this document would not work. + +8. Applicability Statement + +   NAT-PT can be a valuable transition tool at the border of a stub +   network that has been deployed as an IPv6 only network when it is +   connected to an Internet that is either V4-only or a combination of +   V4 and V6. + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 18] + +RFC 2766                         NAT-PT                    February 2000 + + +   NAT-PT, in its simplest form, without the support of DNS-ALG, +   provides one way connectivity between an IPv6 stub domain and the +   IPv4  world meaning  that only sessions initialised by IPv6 nodes +   internal to the IPv6 stub domain can be translated, while sessions +   initiated by  IPv4 nodes  are dropped. This makes NAT-PT a useful +   tool to IPv6 only stub networks that need to be able to maintain +   connectivity with the  IPv4 world without the need to deploy servers +   visible to the IPv4 world. + +   NAT-PT  combined  with a DNS-ALG provides bi-directional connectivity +   between the IPv6 stub domain and the IPv4 world allowing sessions  to +   be  initialised  by  IPv4  nodes  outside the IPv6 stub domain.  This +   makes NAT-PT useful for IPv6 only stub  networks that need to  deploy +   servers visible to the IPv4 world. + +   Some applications count on a certain degree of address stability for +   their operation. Dynamic address reuse by NAT-PT might not be +   agreeable for these applications. For hosts running such address +   critical applications, NAT-PT may be configured to provide static +   address mapping between the host's V6 address and a specific V4 +   address. This will ensure that address related changes by NAT-PT do +   not become a significant source of operational failure. + +9. Security Considerations + +   Section 7.4 of this document states that end-to-end network and +   transport layer security are not possible when a session is +   intercepted by a NAT-PT.  Also application layer security may not be +   possible for applications that carry IP addresses in the application +   layer. + +   Section 7.5 of this document states that the DNS-ALG can not be +   deployed in combination with secure DNS. + +   Finally, all of the security considerations described in [NAT-TERM] +   are applicable to this document as well. + +10. REFERENCES + +   [DNS-ALG]  Srisuresh, P., Tsirtsis, G., Akkiraju, P. and A. +              Heffernan, "DNS extensions to Network Address Translators +              (DNS_ALG)", RFC 2694, September 1999. + +   [DNSSEC]   Eastlake, D., "Domain Name System Security Extensions", +              RFC 2065, March 1999. + +   [FTP-IPV6] Allman, M., Ostermann, S. and C. Metz, "FTP Extensions for +              IPv6 and NATs", RFC 2428, September 1998. + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 19] + +RFC 2766                         NAT-PT                    February 2000 + + +   [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate +              Requirement Levels", BCP 14, RFC 2119, March 1997. + +   [NAT]      Egevang, K. and P. Francis, "The IP Network Address +              Translator (NAT)", RFC 1631, May 1994. + +   [NAT-TERM] Srisuresh, P. and M. Holdrege, "IP Network Address +              Translator (NAT) Terminology and Considerations", RFC +              2663, August 1999. + +   [SIIT]     Nordmark, E., "Stateless IP/ICMP Translator (SIIT)", RFC +              2765, February 2000. + +   [TRANS]    Gilligan, R. and  E. Nordmark, "Transition Mechanisms for +              IPv6 Hosts and Routers", RFC 1933, April 1996. + +   [V6ADDR]   Hinden, R. and S. Deering, "IP Version 6 Addressing +              Architecture", RFC 2373, July 1998. + +Authors' Addresses + +   George Tsirtsis +   Internet Futures +   B29 Room 129 +   BT Adastral Park +   IPSWICH IP5 3RE +   England + +   Phone: +44 181 8260073 +   Fax:   +44 181 8260073 +   EMail: george.tsirtsis@bt.com +   EMail (alternative): gtsirt@hotmail.com + + +   Pyda Srisuresh +   630 Alder Drive +   Milpitas, CA 95035 +   U.S.A. + +   Phone: (408) 519-3849 +   EMail: srisuresh@yahoo.com + + + + + + + + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 20] + +RFC 2766                         NAT-PT                    February 2000 + + +Full Copyright Statement + +   Copyright (C) The Internet Society (2000).  All Rights Reserved. + +   This document and translations of it may be copied and furnished to +   others, and derivative works that comment on or otherwise explain it +   or assist in its implementation may be prepared, copied, published +   and distributed, in whole or in part, without restriction of any +   kind, provided that the above copyright notice and this paragraph are +   included on all such copies and derivative works.  However, this +   document itself may not be modified in any way, such as by removing +   the copyright notice or references to the Internet Society or other +   Internet organizations, except as needed for the purpose of +   developing Internet standards in which case the procedures for +   copyrights defined in the Internet Standards process must be +   followed, or as required to translate it into languages other than +   English. + +   The limited permissions granted above are perpetual and will not be +   revoked by the Internet Society or its successors or assigns. + +   This document and the information contained herein is provided on an +   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + +   Funding for the RFC Editor function is currently provided by the +   Internet Society. + + + + + + + + + + + + + + + + + + + +Tsirtsis & Srisuresh        Standards Track                    [Page 21] + |