diff options
Diffstat (limited to 'doc/rfc/rfc4787.txt')
| -rw-r--r-- | doc/rfc/rfc4787.txt | 1627 | 
1 files changed, 1627 insertions, 0 deletions
| diff --git a/doc/rfc/rfc4787.txt b/doc/rfc/rfc4787.txt new file mode 100644 index 0000000..00219c7 --- /dev/null +++ b/doc/rfc/rfc4787.txt @@ -0,0 +1,1627 @@ + + + + + + +Network Working Group                                      F. Audet, Ed. +Request for Comments: 4787                               Nortel Networks +BCP: 127                                                     C. Jennings +Category: Best Current Practice                            Cisco Systems +                                                            January 2007 + + +       Network Address Translation (NAT) Behavioral Requirements +                            for Unicast UDP + +Status of This Memo + +   This document specifies an Internet Best Current Practices for the +   Internet Community, and requests discussion and suggestions for +   improvements.  Distribution of this memo is unlimited. + +Copyright Notice + +   Copyright (C) The IETF Trust (2007). + +Abstract + +   This document defines basic terminology for describing different +   types of Network Address Translation (NAT) behavior when handling +   Unicast UDP and also defines a set of requirements that would allow +   many applications, such as multimedia communications or online +   gaming, to work consistently.  Developing NATs that meet this set of +   requirements will greatly increase the likelihood that these +   applications will function properly. + + + + + + + + + + + + + + + + + + + + + + +Audet & Jennings         Best Current Practice                  [Page 1] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +Table of Contents + +   1.  Applicability Statement  . . . . . . . . . . . . . . . . . . .  3 +   2.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3 +   3.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  4 +   4.  Network Address and Port Translation Behavior  . . . . . . . .  5 +     4.1.  Address and Port Mapping . . . . . . . . . . . . . . . . .  5 +     4.2.  Port Assignment  . . . . . . . . . . . . . . . . . . . . .  9 +       4.2.1.  Port Assignment Behavior . . . . . . . . . . . . . . .  9 +       4.2.2.  Port Parity  . . . . . . . . . . . . . . . . . . . . . 11 +       4.2.3.  Port Contiguity  . . . . . . . . . . . . . . . . . . . 11 +     4.3.  Mapping Refresh  . . . . . . . . . . . . . . . . . . . . . 12 +     4.4.  Conflicting Internal and External IP Address Spaces  . . . 13 +   5.  Filtering Behavior . . . . . . . . . . . . . . . . . . . . . . 15 +   6.  Hairpinning Behavior . . . . . . . . . . . . . . . . . . . . . 16 +   7.  Application Level Gateways . . . . . . . . . . . . . . . . . . 17 +   8.  Deterministic Properties . . . . . . . . . . . . . . . . . . . 18 +   9.  ICMP Destination Unreachable Behavior  . . . . . . . . . . . . 19 +   10. Fragmentation of Outgoing Packets  . . . . . . . . . . . . . . 20 +   11. Receiving Fragmented Packets . . . . . . . . . . . . . . . . . 20 +   12. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 21 +   13. Security Considerations  . . . . . . . . . . . . . . . . . . . 24 +   14. IAB Considerations . . . . . . . . . . . . . . . . . . . . . . 25 +   15. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 26 +   16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26 +     16.1. Normative References . . . . . . . . . . . . . . . . . . . 26 +     16.2. Informative References . . . . . . . . . . . . . . . . . . 26 + + + + + + + + + + + + + + + + + + + + + + + + +Audet & Jennings         Best Current Practice                  [Page 2] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +1.  Applicability Statement + +   The purpose of this specification is to define a set of requirements +   for NATs that would allow many applications, such as multimedia +   communications or online gaming, to work consistently.  Developing +   NATs that meet this set of requirements will greatly increase the +   likelihood that these applications will function properly. + +   The requirements of this specification apply to Traditional NATs as +   described in [RFC2663]. + +   This document is meant to cover NATs of any size, from small +   residential NATs to large Enterprise NATs.  However, it should be +   understood that Enterprise NATs normally provide much more than just +   NAT capabilities; for example, they typically provide firewall +   functionalities.  A comprehensive description of firewall behaviors +   and associated requirements is specifically out-of-scope for this +   specification.  However, this specification does cover basic firewall +   aspects present in NATs (see Section 5). + +   Approaches using directly signaled control of middle boxes are out of +   scope. + +   UDP Relays (e.g., Traversal Using Relay NAT [TURN]) are out of scope. + +   Application aspects are out of scope, as the focus here is strictly +   on the NAT itself. + +   This document only covers aspects of NAT traversal related to Unicast +   UDP [RFC0768] over IP [RFC0791] and their dependencies on other +   protocols. + +2.  Introduction + +   Network Address Translators (NATs) are well known to cause very +   significant problems with applications that carry IP addresses in the +   payload (see [RFC3027]).  Applications that suffer from this problem +   include Voice Over IP and Multimedia Over IP (e.g., SIP [RFC3261] and +   H.323 [ITU.H323]), as well as online gaming. + +   Many techniques are used to attempt to make realtime multimedia +   applications, online games, and other applications work across NATs. +   Application Level Gateways [RFC2663] are one such mechanism.  STUN +   [RFC3489bis] describes a UNilateral Self-Address Fixing (UNSAF) +   mechanism [RFC3424].  Teredo [RFC4380] describes an UNSAF mechanism +   consisting of tunnelling IPv6 [RFC2460] over UDP/IPv4.  UDP Relays +   have also been used to enable applications across NATs, but these are +   generally seen as a solution of last resort.  Interactive + + + +Audet & Jennings         Best Current Practice                  [Page 3] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   Connectivity Establishment [ICE] describes a methodology for using +   many of these techniques and avoiding a UDP relay, unless the type of +   NAT is such that it forces the use of such a UDP relay.  This +   specification defines requirements for improving NATs.  Meeting these +   requirements ensures that applications will not be forced to use UDP +   relay. + +   As pointed out in UNSAF [RFC3424], "From observations of deployed +   networks, it is clear that different NAT box implementations vary +   widely in terms of how they handle different traffic and addressing +   cases".  This wide degree of variability is one factor in the overall +   brittleness introduced by NATs and makes it extremely difficult to +   predict how any given protocol will behave on a network traversing +   NAT.  Discussions with many of the major NAT vendors have made it +   clear that they would prefer to deploy NATs that were deterministic +   and caused the least harm to applications while still meeting the +   requirements that caused their customers to deploy NATs in the first +   place.  The problem NAT vendors face is that they are not sure how +   best to do that or how to document their NATs' behavior. + +   The goals of this document are to define a set of common terminology +   for describing the behavior of NATs and to produce a set of +   requirements on a specific set of behaviors for NATs. + +   This document forms a common set of requirements that are simple and +   useful for voice, video, and games, which can be implemented by NAT +   vendors.  This document will simplify the analysis of protocols for +   deciding whether or not they work in this environment and will allow +   providers of services that have NAT traversal issues to make +   statements about where their applications will work and where they +   will not, as well as to specify their own NAT requirements. + +3.  Terminology + +   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", +   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this +   document are to be interpreted as described in [RFC2119]. + +   Readers are urged to refer to [RFC2663] for information on NAT +   taxonomy and terminology.  Traditional NAT is the most common type of +   NAT device deployed.  Readers may refer to [RFC3022] for detailed +   information on traditional NAT.  Traditional NAT has two main +   varieties -- Basic NAT and Network Address/Port Translator (NAPT). + +   NAPT is by far the most commonly deployed NAT device.  NAPT allows +   multiple internal hosts to share a single public IP address +   simultaneously.  When an internal host opens an outgoing TCP or UDP +   session through a NAPT, the NAPT assigns the session a public IP + + + +Audet & Jennings         Best Current Practice                  [Page 4] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   address and port number, so that subsequent response packets from the +   external endpoint can be received by the NAPT, translated, and +   forwarded to the internal host.  The effect is that the NAPT +   establishes a NAT session to translate the (private IP address, +   private port number) tuple to a (public IP address, public port +   number) tuple, and vice versa, for the duration of the session.  An +   issue of relevance to peer-to-peer applications is how the NAT +   behaves when an internal host initiates multiple simultaneous +   sessions from a single (private IP, private port) endpoint to +   multiple distinct endpoints on the external network.  In this +   specification, the term "NAT" refers to both "Basic NAT" and "Network +   Address/Port Translator (NAPT)". + +   This document uses the term "session" as defined in RFC 2663: "TCP/ +   UDP sessions are uniquely identified by the tuple of (source IP +   address, source TCP/UDP ports, target IP address, target TCP/UDP +   Port)". + +   This document uses the term "address and port mapping" as the +   translation between an external address and port and an internal +   address and port.  Note that this is not the same as an "address +   binding" as defined in RFC 2663. + +   This document uses IANA terminology for port ranges, i.e., "Well +   Known Ports" is 0-1023, "Registered" is 1024-49151, and "Dynamic +   and/or Private" is 49152-65535, as defined in +   http://www.iana.org/assignments/port-numbers. + +   STUN [RFC3489] used the terms "Full Cone", "Restricted Cone", "Port +   Restricted Cone", and "Symmetric" to refer to different variations of +   NATs applicable to UDP only.  Unfortunately, this terminology has +   been the source of much confusion, as it has proven inadequate at +   describing real-life NAT behavior.  This specification therefore +   refers to specific individual NAT behaviors instead of using the +   Cone/Symmetric terminology. + +4.  Network Address and Port Translation Behavior + +   This section describes the various NAT behaviors applicable to NATs. + +4.1.  Address and Port Mapping + +   When an internal endpoint opens an outgoing session through a NAT, +   the NAT assigns the session an external IP address and port number so +   that subsequent response packets from the external endpoint can be +   received by the NAT, translated, and forwarded to the internal +   endpoint.  This is a mapping between an internal IP address and port +   IP:port and external IP:port tuple.  It establishes the translation + + + +Audet & Jennings         Best Current Practice                  [Page 5] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   that will be performed by the NAT for the duration of the session. +   For many applications, it is important to distinguish the behavior of +   the NAT when there are multiple simultaneous sessions established to +   different external endpoints. + +   The key behavior to describe is the criteria for reuse of a mapping +   for new sessions to external endpoints, after establishing a first +   mapping between an internal X:x address and port and an external +   Y1:y1 address tuple.  Let's assume that the internal IP address and +   port X:x are mapped to X1':x1' for this first session.  The endpoint +   then sends from X:x to an external address Y2:y2 and gets a mapping +   of X2':x2' on the NAT.  The relationship between X1':x1' and X2':x2' +   for various combinations of the relationship between Y1:y1 and Y2:y2 +   is critical for describing the NAT behavior.  This arrangement is +   illustrated in the following diagram: + +                                      E +   +------+                 +------+  x +   |  Y1  |                 |  Y2  |  t +   +--+---+                 +---+--+  e +      | Y1:y1            Y2:y2  |     r +      +----------+   +----------+     n +                 |   |                a +         X1':x1' |   | X2':x2'        l +              +--+---+-+ +   ...........|   NAT  |............... +              +--+---+-+              I +                 |   |                n +             X:x |   | X:x            t +                ++---++               e +                |  X  |               r +                +-----+               n +                                      a +                                      l + +                         Address and Port Mapping + +   The following address and port mapping behavior are defined: + +      Endpoint-Independent Mapping: + +         The NAT reuses the port mapping for subsequent packets sent +         from the same internal IP address and port (X:x) to any +         external IP address and port.  Specifically, X1':x1' equals +         X2':x2' for all values of Y2:y2. + + + + + + +Audet & Jennings         Best Current Practice                  [Page 6] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +      Address-Dependent Mapping: + +         The NAT reuses the port mapping for subsequent packets sent +         from the same internal IP address and port (X:x) to the same +         external IP address, regardless of the external port. +         Specifically, X1':x1' equals X2':x2' if and only if, Y2 equals +         Y1. + +      Address and Port-Dependent Mapping: + +         The NAT reuses the port mapping for subsequent packets sent +         from the same internal IP address and port (X:x) to the same +         external IP address and port while the mapping is still active. +         Specifically, X1':x1' equals X2':x2' if and only if, Y2:y2 +         equals Y1:y1. + +   It is important to note that these three possible choices make no +   difference to the security properties of the NAT.  The security +   properties are fully determined by which packets the NAT allows in +   and which it does not.  This is determined by the filtering behavior +   in the filtering portions of the NAT. + +   REQ-1:  A NAT MUST have an "Endpoint-Independent Mapping" behavior. + +   Justification:  In order for UNSAF methods to work, REQ-1 needs to be +      met.  Failure to meet REQ-1 will force the use of a UDP relay, +      which is very often impractical. + +   Some NATs are capable of assigning IP addresses from a pool of IP +   addresses on the external side of the NAT, as opposed to just a +   single IP address.  This is especially common with larger NATs.  Some +   NATs use the external IP address mapping in an arbitrary fashion +   (i.e., randomly): one internal IP address could have multiple +   external IP address mappings active at the same time for different +   sessions.  These NATs have an "IP address pooling" behavior of +   "Arbitrary".  Some large Enterprise NATs use an IP address pooling +   behavior of "Arbitrary" as a means of hiding the IP address assigned +   to specific endpoints by making their assignment less predictable. +   Other NATs use the same external IP address mapping for all sessions +   associated with the same internal IP address.  These NATs have an "IP +   address pooling" behavior of "Paired".  NATs that use an "IP address +   pooling" behavior of "Arbitrary" can cause issues for applications +   that use multiple ports from the same endpoint, but that do not +   negotiate IP addresses individually (e.g., some applications using +   RTP and RTCP). + + + + + + +Audet & Jennings         Best Current Practice                  [Page 7] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   REQ-2:  It is RECOMMENDED that a NAT have an "IP address pooling" +      behavior of "Paired".  Note that this requirement is not +      applicable to NATs that do not support IP address pooling. + +   Justification:  This will allow applications that use multiple ports +      originating from the same internal IP address to also have the +      same external IP address.  This is to avoid breaking peer-to-peer +      applications that are not capable of negotiating the IP address +      for RTP and the IP address for RTCP separately.  As such it is +      envisioned that this requirement will become less important as +      applications become NAT-friendlier with time.  The main reason why +      this requirement is here is that in a peer-to-peer application, +      you are subject to the other peer's mistake.  In particular, in +      the context of SIP, if my application supports the extensions +      defined in [RFC3605] for indicating RTP and RTCP addresses and +      ports separately, but the other peer does not, there may still be +      breakage in the form of the stream losing RTCP packets.  This +      requirement will avoid the loss of RTP in this context, although +      the loss of RTCP may be inevitable in this particular example.  It +      is also worth noting that RFC 3605 is unfortunately not a +      mandatory part of SIP [RFC3261].  Therefore, this requirement will +      address a particularly nasty problem that will prevail for a +      significant period of time. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Audet & Jennings         Best Current Practice                  [Page 8] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +4.2.  Port Assignment + +4.2.1.  Port Assignment Behavior + +   This section uses the following diagram for reference. + +                                      E +   +-------+               +-------+  x +   |  Y1   |               |  Y2   |  t +   +---+---+               +---+---+  e +       | Y1:y1          Y2:y2  |      r +       +---------+   +---------+      n +                 |   |                a +         X1':x1' |   | X2':x2'        l +              +--+---+--+ +   ...........|   NAT   |............... +              +--+---+--+             I +                 |   |                n +       +---------+   +---------+      t +       | X1:x1           X2:x2 |      e +   +---+---+               +---+---+  r +   |  X1   |               |  X2   |  n +   +-------+               +-------+  a +                                      l + +                              Port Assignment + +   Some NATs attempt to preserve the port number used internally when +   assigning a mapping to an external IP address and port (e.g., x1=x1', +   x2=x2').  This port assignment behavior is referred to as "port +   preservation".  In case of port collision, these NATs attempt a +   variety of techniques for coping.  For example, some NATs will +   overridden the previous mapping to preserve the same port.  Other +   NATs will assign a different IP address from a pool of external IP +   addresses; this is only possible as long as the NAT has enough +   external IP addresses; if the port is already in use on all available +   external IP addresses, then these NATs will pick a different port +   (i.e., they don't do port preservation anymore). + +   Some NATs use "Port overloading", i.e., they always use port +   preservation even in the case of collision (i.e., X1'=X2' and +   x1=x2=x1'=x2').  Most applications will fail if the NAT uses "Port +   overloading". + +   A NAT that does not attempt to make the external port numbers match +   the internal port numbers in any case is referred to as "no port +   preservation". + + + + +Audet & Jennings         Best Current Practice                  [Page 9] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   When NATs do allocate a new source port, there is the issue of which +   IANA-defined range of port to choose.  The ranges are "well-known" +   from 0 to 1023, "registered" from 1024 to 49151, and "dynamic/ +   private" from 49152 through 65535.  For most protocols, these are +   destination ports and not source ports, so mapping a source port to a +   source port that is already registered is unlikely to have any bad +   effects.  Some NATs may choose to use only the ports in the dynamic +   range; the only downside of this practice is that it limits the +   number of ports available.  Other NAT devices may use everything but +   the well-known range and may prefer to use the dynamic range first, +   or possibly avoid the actual registered ports in the registered +   range.  Other NATs preserve the port range if it is in the well-known +   range.  [RFC0768] specifies that the source port is set to zero if no +   reply packets are expected.  In this case, it does not matter what +   the NAT maps it to, as the source port will not be used.  However, +   many common OS APIs do not allow a user to send from port zero, +   applications do not use port zero, and the behavior of various +   existing NATs with regards to a packet with a source of port zero is +   unknown.  This document does not specify any normative behavior for a +   NAT when handling a packet with a source port of zero which means +   that applications cannot count on any sort of deterministic behavior +   for these packets. + +   REQ-3:  A NAT MUST NOT have a "Port assignment" behavior of "Port +      overloading". + +      a) If the host's source port was in the range 0-1023, it is +         RECOMMENDED the NAT's source port be in the same range.  If the +         host's source port was in the range 1024-65535, it is +         RECOMMENDED that the NAT's source port be in that range. + +   Justification:  This requirement must be met in order to enable two +      applications on the internal side of the NAT both to use the same +      port to try to communicate with the same destination.  NATs that +      implement port preservation have to deal with conflicts on ports, +      and the multiple code paths this introduces often result in +      nondeterministic behavior.  However, it should be understood that +      when a port is randomly assigned, it may just randomly happen to +      be assigned the same port.  Applications must, therefore, be able +      to deal with both port preservation and no port preservation. + +      a) Certain applications expect the source UDP port to be in the +         well-known range.  See the discussion of Network File System +         port expectations in [RFC2623] for an example. + + + + + + + +Audet & Jennings         Best Current Practice                 [Page 10] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +4.2.2.  Port Parity + +   Some NATs preserve the parity of the UDP port, i.e., an even port +   will be mapped to an even port, and an odd port will be mapped to an +   odd port.  This behavior respects the [RFC3550] rule that RTP use +   even ports, and RTCP use odd ports.  RFC 3550 allows any port numbers +   to be used for RTP and RTCP if the two numbers are specified +   separately; for example, using [RFC3605].  However, some +   implementations do not include RFC 3605, and do not recognize when +   the peer has specified the RTCP port separately using RFC 3605.  If +   such an implementation receives an odd RTP port number from the peer +   (perhaps after having been translated by a NAT), and then follows the +   RFC 3550 rule to change the RTP port to the next lower even number, +   this would obviously result in the loss of RTP.  NAT-friendly +   application aspects are outside the scope of this document.  It is +   expected that this issue will fade away with time, as implementations +   improve.  Preserving the port parity allows for supporting +   communication with peers that do not support explicit specification +   of both RTP and RTCP port numbers. + +   REQ-4:  It is RECOMMENDED that a NAT have a "Port parity +      preservation" behavior of "Yes". + +   Justification:  This is to avoid breaking peer-to-peer applications +      that do not explicitly and separately specify RTP and RTCP port +      numbers and that follow the RFC 3550 rule to decrement an odd RTP +      port to make it even.  The same considerations apply, as per the +      IP address pooling requirement. + +4.2.3.  Port Contiguity + +   Some NATs attempt to preserve the port contiguity rule of RTCP=RTP+1. +   These NATs do things like sequential assignment or port reservation. +   Sequential port assignment assumes that the application will open a +   mapping for RTP first and then open a mapping for RTCP.  It is not +   practical to enforce this requirement on all applications. +   Furthermore, there is a problem with glare if many applications (or +   endpoints) are trying to open mappings simultaneously.  Port +   preservation is also problematic since it is wasteful, especially +   considering that a NAT cannot reliably distinguish between RTP over +   UDP and other UDP packets where there is no contiguity rule.  For +   those reasons, it would be too complex to attempt to preserve the +   contiguity rule by suggesting specific NAT behavior, and it would +   certainly break the deterministic behavior rule. + +   In order to support both RTP and RTCP, it will therefore be necessary +   that applications follow rules to negotiate RTP and RTCP separately, +   and account for the very real possibility that the RTCP=RTP+1 rule + + + +Audet & Jennings         Best Current Practice                 [Page 11] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   will be broken.  As this is an application requirement, it is outside +   the scope of this document. + +4.3.  Mapping Refresh + +   NAT mapping timeout implementations vary, but include the timer's +   value and the way the mapping timer is refreshed to keep the mapping +   alive. + +   The mapping timer is defined as the time a mapping will stay active +   without packets traversing the NAT.  There is great variation in the +   values used by different NATs. + +   REQ-5:  A NAT UDP mapping timer MUST NOT expire in less than two +      minutes, unless REQ-5a applies. + +      a) For specific destination ports in the well-known port range +         (ports 0-1023), a NAT MAY have shorter UDP mapping timers that +         are specific to the IANA-registered application running over +         that specific destination port. + +      b) The value of the NAT UDP mapping timer MAY be configurable. + +      c) A default value of five minutes or more for the NAT UDP mapping +         timer is RECOMMENDED. + +   Justification:  This requirement is to ensure that the timeout is +      long enough to avoid too-frequent timer refresh packets. + +      a) Some UDP protocols using UDP use very short-lived connections. +         There can be very many such connections; keeping them all in a +         connections table could cause considerable load on the NAT. +         Having shorter timers for these specific applications is, +         therefore, an optimization technique.  It is important that the +         shorter timers applied to specific protocols be used sparingly, +         and only for protocols using well-known destination ports that +         are known to have a shorter timer, and that are known not to be +         used by any applications for other purposes. + +      b) Configuration is desirable for adapting to specific networks +         and troubleshooting. + +      c) This default is to avoid too-frequent timer refresh packets. + +   Some NATs keep the mapping active (i.e., refresh the timer value) +   when a packet goes from the internal side of the NAT to the external +   side of the NAT.  This is referred to as having a NAT Outbound +   refresh behavior of "True". + + + +Audet & Jennings         Best Current Practice                 [Page 12] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   Some NATs keep the mapping active when a packet goes from the +   external side of the NAT to the internal side of the NAT.  This is +   referred to as having a NAT Inbound Refresh Behavior of "True". + +   Some NATs keep the mapping active on both, in which case, both +   properties are "True". + +   REQ-6:  The NAT mapping Refresh Direction MUST have a "NAT Outbound +      refresh behavior" of "True". + +      a) The NAT mapping Refresh Direction MAY have a "NAT Inbound +         refresh behavior" of "True". + +   Justification:  Outbound refresh is necessary for allowing the client +      to keep the mapping alive. + +      a) Inbound refresh may be useful for applications with no outgoing +         UDP traffic.  However, allowing inbound refresh may allow an +         external attacker or misbehaving application to keep a mapping +         alive indefinitely.  This may be a security risk.  Also, if the +         process is repeated with different ports, over time, it could +         use up all the ports on the NAT. + +4.4.  Conflicting Internal and External IP Address Spaces + +   Many NATs, particularly consumer-level devices designed to be +   deployed by nontechnical users, routinely obtain their external IP +   address, default router, and other IP configuration information for +   their external interface dynamically from an external network, such +   as an upstream ISP.  The NAT, in turn, automatically sets up its own +   internal subnet in one of the private IP address spaces assigned to +   this purpose in [RFC1918], typically providing dynamic IP +   configuration services for hosts on this internal network. + +   Auto-configuration of NATs and private networks can be problematic, +   however, if the NAT's external network is also in RFC 1918 private +   address space.  In a common scenario, an ISP places its customers +   behind a NAT and hands out private RFC 1918 addresses to them.  Some +   of these customers, in turn, deploy consumer-level NATs, which, in +   effect, act as "second-level" NATs, multiplexing their own private +   RFC 1918 IP subnets onto the single RFC 1918 IP address provided by +   the ISP.  There is no inherent guarantee, in this case, that the +   ISP's "intermediate" privately-addressed network and the customer's +   internal privately-addressed network will not use numerically +   identical or overlapping RFC 1918 IP subnets.  Furthermore, customers +   of consumer-level NATs cannot be expected to have the technical + + + + + +Audet & Jennings         Best Current Practice                 [Page 13] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   knowledge to prevent this scenario from occurring by manually +   configuring their internal network with non-conflicting RFC 1918 +   subnets. + +   NAT vendors need to design their NATs to ensure that they function +   correctly and robustly even in such problematic scenarios.  One +   possible solution is for the NAT to ensure that whenever its external +   link is configured with an RFC 1918 private IP address, the NAT +   automatically selects a different, non-conflicting RFC 1918 IP subnet +   for its internal network.  A disadvantage of this solution is that, +   if the NAT's external interface is dynamically configured or re- +   configured after its internal network is already in use, then the NAT +   may have to renumber its entire internal network dynamically if it +   detects a conflict. + +   An alternative solution is for the NAT to be designed so that it can +   translate and forward traffic correctly, even when its external and +   internal interfaces are configured with numerically overlapping IP +   subnets.  In this scenario, for example, if the NAT's external +   interface has been assigned an IP address P in RFC 1918 space, then +   there might also be an internal node I having the same RFC 1918 +   private IP address P.  An IP packet with destination address P on the +   external network is directed at the NAT, whereas an IP packet with +   the same destination address P on the internal network is directed at +   node I.  The NAT therefore needs to maintain a clear operational +   distinction between "external IP addresses" and "internal IP +   addresses" to avoid confusing internal node I with its own external +   interface.  In general, the NAT needs to allow all internal nodes +   (including I) to communicate with all external nodes having public +   (non-RFC 1918) IP addresses, or having private IP addresses that do +   not conflict with the addresses used by its internal network. + +   REQ-7:  A NAT device whose external IP interface can be configured +      dynamically MUST either (1) automatically ensure that its internal +      network uses IP addresses that do not conflict with its external +      network, or (2) be able to translate and forward traffic between +      all internal nodes and all external nodes whose IP addresses +      numerically conflict with the internal network. + +   Justification:  If a NAT's external and internal interfaces are +      configured with overlapping IP subnets, then there is, of course, +      no way for an internal host with RFC 1918 IP address Q to initiate +      a direct communication session to an external node having the same +      RFC 1918 address Q, or to other external nodes with IP addresses +      that numerically conflict with the internal subnet.  Such nodes +      can still open communication sessions indirectly via NAT traversal +      techniques, however, with the help of a third-party server, such +      as a STUN server having a public, non-RFC 1918 IP address.  In + + + +Audet & Jennings         Best Current Practice                 [Page 14] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +      this case, nodes with conflicting private RFC 1918 addresses on +      opposite sides of the second-level NAT can communicate with each +      other via their respective temporary public endpoints on the main +      Internet, as long as their common, first-level NAT (e.g., the +      upstream ISP's NAT) supports hairpinning behavior, as described in +      Section 6. + +5.  Filtering Behavior + +   This section describes various filtering behaviors observed in NATs. + +   When an internal endpoint opens an outgoing session through a NAT, +   the NAT assigns a filtering rule for the mapping between an internal +   IP:port (X:x) and external IP:port (Y:y) tuple. + +   The key behavior to describe is what criteria are used by the NAT to +   filter packets originating from specific external endpoints. + +      Endpoint-Independent Filtering: + +         The NAT filters out only packets not destined to the internal +         address and port X:x, regardless of the external IP address and +         port source (Z:z).  The NAT forwards any packets destined to +         X:x.  In other words, sending packets from the internal side of +         the NAT to any external IP address is sufficient to allow any +         packets back to the internal endpoint. + +      Address-Dependent Filtering: + +         The NAT filters out packets not destined to the internal +         address X:x.  Additionally, the NAT will filter out packets +         from Y:y destined for the internal endpoint X:x if X:x has not +         sent packets to Y:any previously (independently of the port +         used by Y).  In other words, for receiving packets from a +         specific external endpoint, it is necessary for the internal +         endpoint to send packets first to that specific external +         endpoint's IP address. + +      Address and Port-Dependent Filtering: + +         This is similar to the previous behavior, except that the +         external port is also relevant.  The NAT filters out packets +         not destined for the internal address X:x.  Additionally, the +         NAT will filter out packets from Y:y destined for the internal +         endpoint X:x if X:x has not sent packets to Y:y previously.  In +         other words, for receiving packets from a specific external +         endpoint, it is necessary for the internal endpoint to send +         packets first to that external endpoint's IP address and port. + + + +Audet & Jennings         Best Current Practice                 [Page 15] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   REQ-8:  If application transparency is most important, it is +      RECOMMENDED that a NAT have an "Endpoint-Independent Filtering" +      behavior.  If a more stringent filtering behavior is most +      important, it is RECOMMENDED that a NAT have an "Address-Dependent +      Filtering" behavior. + +      a) The filtering behavior MAY be an option configurable by the +         administrator of the NAT. + +   Justification:  The recommendation to use Endpoint-Independent +      Filtering is aimed at maximizing application transparency; in +      particular, for applications that receive media simultaneously +      from multiple locations (e.g., gaming), or applications that use +      rendezvous techniques.  However, it is also possible that, in some +      circumstances, it may be preferable to have a more stringent +      filtering behavior.  Filtering independently of the external +      endpoint is not as secure: An unauthorized packet could get +      through a specific port while the port was kept open if it was +      lucky enough to find the port open.  In theory, filtering based on +      both IP address and port is more secure than filtering based only +      on the IP address (because the external endpoint could, in +      reality, be two endpoints behind another NAT, where one of the two +      endpoints is an attacker).  However, such a policy could interfere +      with applications that expect to receive UDP packets on more than +      one UDP port.  Using Endpoint-Independent Filtering or Address- +      Dependent Filtering instead of Address and Port-Dependent +      Filtering on a NAT (say, NAT-A) also has benefits when the other +      endpoint is behind a non-BEHAVE compliant NAT (say, NAT-B) that +      does not support REQ-1.  When the endpoints use ICE, if NAT-A uses +      Address and Port-Dependent Filtering, connectivity will require a +      UDP relay.  However, if NAT-A uses Endpoint-Independent Filtering +      or Address-Dependent Filtering, ICE will ultimately find +      connectivity without requiring a UDP relay.  Having the filtering +      behavior being an option configurable by the administrator of the +      NAT ensures that a NAT can be used in the widest variety of +      deployment scenarios. + +6.  Hairpinning Behavior + +   If two hosts (called X1 and X2) are behind the same NAT and +   exchanging traffic, the NAT may allocate an address on the outside of +   the NAT for X2, called X2':x2'.  If X1 sends traffic to X2':x2', it +   goes to the NAT, which must relay the traffic from X1 to X2.  This is +   referred to as hairpinning and is illustrated below. + + + + + + + +Audet & Jennings         Best Current Practice                 [Page 16] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +     NAT +   +----+ from X1:x1 to X2':x2'   +-----+ X1':x1' +   | X1 |>>>>>>>>>>>>>>>>>>>>>>>>>>>>>--+--- +   +----+                         |  v  | +                                  |  v  | +                                  |  v  | +                                  |  v  | +   +----+ from X1':x1' to X2:x2   |  v  | X2':x2' +   | X2 |<<<<<<<<<<<<<<<<<<<<<<<<<<<<<--+--- +   +----+                         +-----+ + +                           Hairpinning Behavior + +   Hairpinning allows two endpoints on the internal side of the NAT to +   communicate even if they only use each other's external IP addresses +   and ports. + +   More formally, a NAT that supports hairpinning forwards packets +   originating from an internal address, X1:x1, destined for an external +   address X2':x2' that has an active mapping to an internal address +   X2:x2, back to that internal address, X2:x2.  Note that typically X1' +   is the same as X2'. + +   Furthermore, the NAT may present the hairpinned packet with either an +   internal (X1:x1) or an external (X1':x1') source IP address and port. +   Therefore, the hairpinning NAT behavior can be either "External +   source IP address and port" or "Internal source IP address and port". +   "Internal source IP address and port" may cause problems by confusing +   implementations that expect an external IP address and port. + +   REQ-9:  A NAT MUST support "Hairpinning". + +      a) A NAT Hairpinning behavior MUST be "External source IP address +         and port". + +   Justification:  This requirement is to allow communications between +      two endpoints behind the same NAT when they are trying each +      other's external IP addresses. + +      a) Using the external source IP address is necessary for +         applications with a restrictive policy of not accepting packets +         from IP addresses that differ from what is expected. + +7.  Application Level Gateways + +   Certain NATs have implemented Application Level Gateways (ALGs) for +   various protocols, including protocols for negotiating peer-to-peer +   sessions, such as SIP. + + + +Audet & Jennings         Best Current Practice                 [Page 17] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   Certain NATs have these ALGs turned on permanently, others have them +   turned on by default but allow them to be turned off, and others have +   them turned off by default but allow them be turned on. + +   NAT ALGs may interfere with UNSAF methods or protocols that try to be +   NAT-aware and therefore must be used with extreme caution. + +   REQ-10:  To eliminate interference with UNSAF NAT traversal +      mechanisms and allow integrity protection of UDP communications, +      NAT ALGs for UDP-based protocols SHOULD be turned off.  Future +      standards track specifications that define ALGs can update this to +      recommend the defaults for the ALGs that they define. + +      a) If a NAT includes ALGs, it is RECOMMENDED that the NAT allow +         the NAT administrator to enable or disable each ALG separately. + +   Justification:  NAT ALGs may interfere with UNSAF methods. + +      a) This requirement allows the user to enable those ALGs that are +         necessary to aid in the operation of some applications without +         enabling ALGs, which interfere with the operation of other +         applications. + +8.  Deterministic Properties + +   The classification of NATs is further complicated by the fact that, +   under some conditions, the same NAT will exhibit different behaviors. +   This has been seen on NATs that preserve ports or have specific +   algorithms for selecting a port other than a free one.  If the +   external port that the NAT wishes to use is already in use by another +   session, the NAT must select a different port.  This results in +   different code paths for this conflict case, which results in +   different behavior. + +   For example, if three hosts X1, X2, and X3 all send from the same +   port x, through a port preserving NAT with only one external IP +   address, called X1', the first one to send (i.e., X1) will get an +   external port of x, but the next two will get x2' and x3' (where +   these are not equal to x).  There are NATs where the External NAT +   mapping characteristics and the External Filter characteristics +   change between the X1:x and the X2:x mapping.  To make matters worse, +   there are NATs where the behavior may be the same on the X1:x and +   X2:x mappings, but different on the third X3:x mapping. + +   Another example is that some NATs have an "Endpoint-Independent +   Mapping", combined with "Port Overloading", as long as two endpoints +   are not establishing sessions to the same external direction, but +   then switch their behavior to "Address and Port-Dependent Mapping" + + + +Audet & Jennings         Best Current Practice                 [Page 18] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   without "Port Preservation" upon detection of these conflicting +   sessions establishments. + +   Any NAT that changes the NAT Mapping or the Filtering behavior +   without configuration changes, at any point in time, under any +   particular conditions, is referred to as a "non-deterministic" NAT. +   NATs that don't are called "deterministic". + +   Non-deterministic NATs generally change behavior when a conflict of +   some sort happens, i.e., when the port that would normally be used is +   already in use by another mapping.  The NAT mapping and External +   Filtering in the absence of conflict is referred to as the Primary +   behavior.  The behavior after the first conflict is referred to as +   Secondary and after the second conflict is referred to as Tertiary. +   No NATs have been observed that change on further conflicts, but it +   is certainly possible that they exist. + +   REQ-11:  A NAT MUST have deterministic behavior, i.e., it MUST NOT +      change the NAT translation (Section 4) or the Filtering +      (Section 5) Behavior at any point in time, or under any particular +      conditions. + +   Justification:  Non-deterministic NATs are very difficult to +      troubleshoot because they require more intensive testing.  This +      non-deterministic behavior is the root cause of much of the +      uncertainty that NATs introduce about whether or not applications +      will work. + +9.  ICMP Destination Unreachable Behavior + +   When a NAT sends a packet toward a host on the other side of the NAT, +   an ICMP message may be sent in response to that packet.  That ICMP +   message may be sent by the destination host or by any router along +   the network path.  The NAT's default configuration SHOULD NOT filter +   ICMP messages based on their source IP address.  Such ICMP messages +   SHOULD be rewritten by the NAT (specifically, the IP headers and the +   ICMP payload) and forwarded to the appropriate internal or external +   host.  The NAT needs to perform this function for as long as the UDP +   mapping is active.  Receipt of any sort of ICMP message MUST NOT +   destroy the NAT mapping.  A NAT that performs the functions described +   in the paragraph above is referred to as "support ICMP Processing". + +   There is no significant security advantage to blocking ICMP +   Destination Unreachable packets.  Additionally, blocking ICMP +   Destination Unreachable packets can interfere with application +   failover, UDP Path MTU Discovery (see [RFC1191] and [RFC1435]), and +   traceroute.  Blocking any ICMP message is discouraged, and blocking +   ICMP Destination Unreachable is strongly discouraged. + + + +Audet & Jennings         Best Current Practice                 [Page 19] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   REQ-12:  Receipt of any sort of ICMP message MUST NOT terminate the +      NAT mapping. + +      a) The NAT's default configuration SHOULD NOT filter ICMP messages +         based on their source IP address. + +      b) It is RECOMMENDED that a NAT support ICMP Destination +         Unreachable messages. + +   Justification:  This is easy to do and is used for many things +      including MTU discovery and rapid detection of error conditions, +      and has no negative consequences. + +10.  Fragmentation of Outgoing Packets + +   When the MTU of the adjacent link is too small, fragmentation of +   packets going from the internal side to the external side of the NAT +   may occur.  This can occur if the NAT is doing Point-to-Point over +   Ethernet (PPPoE), or if the NAT has been configured with a small MTU +   to reduce serialization delay when sending large packets and small +   higher-priority packets, or for other reasons. + +   It is worth noting that many IP stacks do not use Path MTU Discovery +   with UDP packets. + +   The packet could have its Don't Fragment bit set to 1 (DF=1) or 0 +   (DF=0). + +   REQ-13:  If the packet received on an internal IP address has DF=1, +      the NAT MUST send back an ICMP message "Fragmentation needed and +      DF set" to the host, as described in [RFC0792]. + +      a) If the packet has DF=0, the NAT MUST fragment the packet and +         SHOULD send the fragments in order. + +   Justification:  This is as per RFC 792. + +      a) This is the same function a router performs in a similar +         situation [RFC1812]. + +11.  Receiving Fragmented Packets + +   For a variety of reasons, a NAT may receive a fragmented packet.  The +   IP packet containing the header could arrive in any fragment, +   depending on network conditions, packet ordering, and the +   implementation of the IP stack that generated the fragments. + + + + + +Audet & Jennings         Best Current Practice                 [Page 20] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   A NAT that is capable only of receiving fragments in order (that is, +   with the header in the first packet) and forwarding each of the +   fragments to the internal host is described as "Received Fragments +   Ordered". + +   A NAT that is capable of receiving fragments in or out of order and +   forwarding the individual fragments (or a reassembled packet) to the +   internal host is referred to as "Receive Fragments Out of Order". +   See the Security Considerations section of this document for a +   discussion of this behavior. + +   A NAT that is neither of these is referred to as "Receive Fragments +   None". + +   REQ-14:  A NAT MUST support receiving in-order and out-of-order +      fragments, so it MUST have "Received Fragment Out of Order" +      behavior. + +      a) A NAT's out-of-order fragment processing mechanism MUST be +         designed so that fragmentation-based DoS attacks do not +         compromise the NAT's ability to process in-order and +         unfragmented IP packets. + +   Justification:  See Security Considerations. + +12.  Requirements + +   The requirements in this section are aimed at minimizing the +   complications caused by NATs to applications, such as realtime +   communications and online gaming.  The requirements listed earlier in +   the document are consolidated here into a single section. + +   It should be understood, however, that applications normally do not +   know in advance if the NAT conforms to the recommendations defined in +   this section.  Peer-to-peer media applications still need to use +   normal procedures, such as ICE [ICE]. + +   A NAT that supports all the mandatory requirements of this +   specification (i.e., the "MUST"), is "compliant with this +   specification".  A NAT that supports all the requirements of this +   specification (i.e., including the "RECOMMENDED") is "fully compliant +   with all the mandatory and recommended requirements of this +   specification". + + + + + + + + +Audet & Jennings         Best Current Practice                 [Page 21] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   REQ-1:  A NAT MUST have an "Endpoint-Independent Mapping" behavior. + +   REQ-2:  It is RECOMMENDED that a NAT have an "IP address pooling" +      behavior of "Paired".  Note that this requirement is not +      applicable to NATs that do not support IP address pooling. + +   REQ-3:  A NAT MUST NOT have a "Port assignment" behavior of "Port +      overloading". + +      a) If the host's source port was in the range 0-1023, it is +         RECOMMENDED the NAT's source port be in the same range.  If the +         host's source port was in the range 1024-65535, it is +         RECOMMENDED that the NAT's source port be in that range. + +   REQ-4:  It is RECOMMENDED that a NAT have a "Port parity +      preservation" behavior of "Yes". + +   REQ-5:  A NAT UDP mapping timer MUST NOT expire in less than two +      minutes, unless REQ-5a applies. + +      a) For specific destination ports in the well-known port range +         (ports 0-1023), a NAT MAY have shorter UDP mapping timers that +         are specific to the IANA-registered application running over +         that specific destination port. + +      b) The value of the NAT UDP mapping timer MAY be configurable. + +      c) A default value of five minutes or more for the NAT UDP mapping +         timer is RECOMMENDED. + +   REQ-6:  The NAT mapping Refresh Direction MUST have a "NAT Outbound +      refresh behavior" of "True". + +      a) The NAT mapping Refresh Direction MAY have a "NAT Inbound +         refresh behavior" of "True". + +   REQ-7  A NAT device whose external IP interface can be configured +      dynamically MUST either (1) Automatically ensure that its internal +      network uses IP addresses that do not conflict with its external +      network, or (2) Be able to translate and forward traffic between +      all internal nodes and all external nodes whose IP addresses +      numerically conflict with the internal network. + +   REQ-8:  If application transparency is most important, it is +      RECOMMENDED that a NAT have "Endpoint-Independent Filtering" +      behavior.  If a more stringent filtering behavior is most +      important, it is RECOMMENDED that a NAT have "Address-Dependent +      Filtering" behavior. + + + +Audet & Jennings         Best Current Practice                 [Page 22] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +      a) The filtering behavior MAY be an option configurable by the +         administrator of the NAT. + +   REQ-9:  A NAT MUST support "Hairpinning". + +      a) A NAT Hairpinning behavior MUST be "External source IP address +         and port". + +   REQ-10:  To eliminate interference with UNSAF NAT traversal +      mechanisms and allow integrity protection of UDP communications, +      NAT ALGs for UDP-based protocols SHOULD be turned off.  Future +      standards track specifications that define an ALG can update this +      to recommend the ALGs on which they define default. + +      a) If a NAT includes ALGs, it is RECOMMENDED that the NAT allow +         the NAT administrator to enable or disable each ALG separately. + +   REQ-11:  A NAT MUST have deterministic behavior, i.e., it MUST NOT +      change the NAT translation (Section 4) or the Filtering +      (Section 5) Behavior at any point in time, or under any particular +      conditions. + +   REQ-12:  Receipt of any sort of ICMP message MUST NOT terminate the +      NAT mapping. + +      a) The NAT's default configuration SHOULD NOT filter ICMP messages +         based on their source IP address. + +      b) It is RECOMMENDED that a NAT support ICMP Destination +         Unreachable messages. + +   REQ-13  If the packet received on an internal IP address has DF=1, +      the NAT MUST send back an ICMP message "Fragmentation needed and +      DF set" to the host, as described in [RFC0792]. + +      a) If the packet has DF=0, the NAT MUST fragment the packet and +         SHOULD send the fragments in order. + +   REQ-14:  A NAT MUST support receiving in-order and out-of-order +      fragments, so it MUST have "Received Fragment Out of Order" +      behavior. + +      a) A NAT's out-of-order fragment processing mechanism MUST be +         designed so that fragmentation-based DoS attacks do not +         compromise the NAT's ability to process in-order and +         unfragmented IP packets. + + + + + +Audet & Jennings         Best Current Practice                 [Page 23] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +13.  Security Considerations + +   NATs are often deployed to achieve security goals.  Most of the +   recommendations and requirements in this document do not affect the +   security properties of these devices, but a few of them do have +   security implications and are discussed in this section. + +   This document recommends that the timers for mapping be refreshed on +   outgoing packets (see REQ-6) and does not make recommendations about +   whether or not inbound packets should update the timers.  If inbound +   packets update the timers, an external attacker can keep the mapping +   alive forever and attack future devices that may end up with the same +   internal address.  A device that was also the DHCP server for the +   private address space could mitigate this by cleaning any mappings +   when a DHCP lease expired.  For unicast UDP traffic (the scope of +   this document), it may not seem relevant to support inbound timer +   refresh; however, for multicast UDP, the question is harder.  It is +   expected that future documents discussing NAT behavior with multicast +   traffic will refine the requirements around handling of the inbound +   refresh timer.  Some devices today do update the timers on inbound +   packets. + +   This document recommends that the NAT filters be specific to the +   external IP address only (see REQ-8) and not to the external IP +   address and UDP port.  It can be argued that this is less secure than +   using the IP and port.  Devices that wish to filter on IP and port do +   still comply with these requirements. + +   Non-deterministic NATs are risky from a security point of view.  They +   are very difficult to test because they are, well, non-deterministic. +   Testing by a person configuring one may result in the person thinking +   it is behaving as desired, yet under different conditions, which an +   attacker can create, the NAT may behave differently.  These +   requirements recommend that devices be deterministic. + +   This document requires that NATs have an "external NAT mapping is +   endpoint independent" behavior.  This does not reduce the security of +   devices.  Which packets are allowed to flow across the device is +   determined by the external filtering behavior, which is independent +   of the mapping behavior. + +   When a fragmented packet is received from the external side, and the +   packets are out of order so that the initial fragment does not arrive +   first, many systems simply discard the out-of-order packets. +   Moreover, since some networks deliver small packets ahead of large +   ones, there can be many out-of-order fragments.  NATs that are +   capable of delivering these out-of-order packets are possible, but +   they need to store the out-of-order fragments, which can open up a + + + +Audet & Jennings         Best Current Practice                 [Page 24] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   Denial-of-Service (DoS) opportunity, if done incorrectly. +   Fragmentation has been a tool used in many attacks, some involving +   passing fragmented packets through NATs, and others involving DoS +   attacks based on the state needed to reassemble the fragments.  NAT +   implementers should be aware of [RFC3128] and [RFC1858]. + +14.  IAB Considerations + +   The IAB has studied the problem of "Unilateral Self Address Fixing", +   which is the general process by which a client attempts to determine +   its address in another realm on the other side of a NAT through a +   collaborative protocol reflection mechanism [RFC3424]. + +   This specification does not, in itself, constitute an UNSAF +   application.  It consists of a series of requirements for NATs aimed +   at minimizing the negative impact that those devices have on peer-to- +   peer media applications, especially when those applications are using +   UNSAF methods. + +   Section 3 of UNSAF lists several practical issues with solutions to +   NAT problems.  This document makes recommendations to reduce the +   uncertainty and problems introduced by these practical issues with +   NATs.  In addition, UNSAF lists five architectural considerations. +   Although this is not an UNSAF proposal, it is interesting to consider +   the impact of this work on these architectural considerations. + +   Arch-1:  The scope of this is limited to UDP packets in NATs like the +            ones widely deployed today.  The "fix" helps constrain the +            variability of NATs for true UNSAF solutions such as STUN. + +   Arch-2:  This will exit at the same rate that NATs exit.  It does not +            imply any protocol machinery that would continue to live +            after NATs were gone, or make it more difficult to remove +            them. + +   Arch-3:  This does not reduce the overall brittleness of NATs, but +            will hopefully reduce some of the more outrageous NAT +            behaviors and make it easer to discuss and predict NAT +            behavior in given situations. + +   Arch-4:  This work and the results [RESULTS] of various NATs +            represent the most comprehensive work at IETF on what the +            real issues are with NATs for applications like VoIP.  This +            work and STUN have pointed out, more than anything else, the +            brittleness NATs introduce and the difficulty of addressing +            these issues. + + + + + +Audet & Jennings         Best Current Practice                 [Page 25] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   Arch-5:  This work and the test results [RESULTS] provide a reference +            model for what any UNSAF proposal might encounter in +            deployed NATs. + +15.  Acknowledgments + +   The editor would like to acknowledge Bryan Ford, Pyda Srisuresh, and +   Dan Kegel for their multiple contributions on peer-to-peer +   communications across a NAT.  Dan Wing contributed substantial text +   on IP fragmentation and ICMP behavior.  Thanks to Rohan Mahy, +   Jonathan Rosenberg, Mary Barnes, Melinda Shore, Lyndsay Campbell, +   Geoff Huston, Jiri Kuthan, Harald Welte, Steve Casner, Robert +   Sanders, Spencer Dawkins, Saikat Guha, Christian Huitema, Yutaka +   Takeda, Paul Hoffman, Lisa Dusseault, Pekka Savola, Peter Koch, Jari +   Arkko, and Alfred Hoenes for their contributions. + +16.  References + +16.1.  Normative References + +   [RFC0768]     Postel, J., "User Datagram Protocol", STD 6, RFC 768, +                 August 1980. + +   [RFC0791]     Postel, J., "Internet Protocol", STD 5, RFC 791, +                 September 1981. + +   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate +                 Requirement Levels", BCP 14, RFC 2119, March 1997. + +16.2.  Informative References + +   [RFC0792]     Postel, J., "Internet Control Message Protocol", STD 5, +                 RFC 792, September 1981. + +   [RFC1191]     Mogul, J. and S. Deering, "Path MTU discovery", +                 RFC 1191, November 1990. + +   [RFC1435]     Knowles, S., "IESG Advice from Experience with Path MTU +                 Discovery", RFC 1435, March 1993. + +   [RFC1812]     Baker, F., "Requirements for IP Version 4 Routers", +                 RFC 1812, June 1995. + +   [RFC1858]     Ziemba, G., Reed, D., and P. Traina, "Security +                 Considerations for IP Fragment Filtering", RFC 1858, +                 October 1995. + + + + + +Audet & Jennings         Best Current Practice                 [Page 26] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   [RFC1918]     Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., +                 and E. Lear, "Address Allocation for Private +                 Internets", BCP 5, RFC 1918, February 1996. + +   [RFC2460]     Deering, S. and R. Hinden, "Internet Protocol, Version +                 6 (IPv6) Specification", RFC 2460, December 1998. + +   [RFC2623]     Eisler, M., "NFS Version 2 and Version 3 Security +                 Issues and the NFS Protocol's Use of RPCSEC_GSS and +                 Kerberos V5", RFC 2623, June 1999. + +   [RFC2663]     Srisuresh, P. and M. Holdrege, "IP Network Address +                 Translator (NAT) Terminology and Considerations", +                 RFC 2663, August 1999. + +   [RFC3022]     Srisuresh, P. and K. Egevang, "Traditional IP Network +                 Address Translator (Traditional NAT)", RFC 3022, +                 January 2001. + +   [RFC3027]     Holdrege, M. and P. Srisuresh, "Protocol Complications +                 with the IP Network Address Translator", RFC 3027, +                 January 2001. + +   [RFC3128]     Miller, I., "Protection Against a Variant of the Tiny +                 Fragment Attack (RFC 1858)", RFC 3128, June 2001. + +   [RFC3261]     Rosenberg, J., Schulzrinne, H., Camarillo, G., +                 Johnston, A., Peterson, J., Sparks, R., Handley, M., +                 and E. Schooler, "SIP: Session Initiation Protocol", +                 RFC 3261, June 2002. + +   [RFC3424]     Daigle, L. and IAB, "IAB Considerations for UNilateral +                 Self-Address Fixing (UNSAF) Across Network Address +                 Translation", RFC 3424, November 2002. + +   [RFC3489]     Rosenberg, J., Weinberger, J., Huitema, C., and R. +                 Mahy, "STUN - Simple Traversal of User Datagram +                 Protocol (UDP) Through Network Address Translators +                 (NATs)", RFC 3489, March 2003. + +   [RFC3550]     Schulzrinne, H., Casner, S., Frederick, R., and V. +                 Jacobson, "RTP: A Transport Protocol for Real-Time +                 Applications", STD 64, RFC 3550, July 2003. + +   [RFC3605]     Huitema, C., "Real Time Control Protocol (RTCP) +                 attribute in Session Description Protocol (SDP)", +                 RFC 3605, October 2003. + + + + +Audet & Jennings         Best Current Practice                 [Page 27] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +   [RFC4380]     Huitema, C., "Teredo: Tunneling IPv6 over UDP through +                 Network Address Translations (NATs)", RFC 4380, +                 February 2006. + +   [RFC3489bis]  Rosenberg, J., "Simple Traversal Underneath Network +                 Address Translators (NAT) (STUN)", Work in Progress, +                 October 2006. + +   [ICE]         Rosenberg, J., "Interactive Connectivity Establishment +                 (ICE): A Methodology for Network Address Translator +                 (NAT) Traversal for Offer/Answer Protocols", Work +                 in Progress, October 2006. + +   [RESULTS]     Jennings, C., "NAT Classification Test Results", Work +                 in Progress, October 2006. + +   [TURN]        Rosenberg, J., "Obtaining Relay Addresses from Simple +                 Traversal Underneath NAT (STUN)", Work in Progress, +                 October 2006. + +   [ITU.H323]    "Packet-based Multimedia Communications Systems", ITU- +                 T Recommendation H.323, July 2003. + +Authors' Addresses + +   Francois Audet (editor) +   Nortel Networks +   4655 Great America Parkway +   Santa Clara, CA  95054 +   US + +   Phone: +1 408 495 2456 +   EMail: audet@nortel.com + + +   Cullen Jennings +   Cisco Systems +   170 West Tasman Drive +   MS: SJC-21/2 +   San Jose, CA  95134 +   US + +   Phone: +1 408 902 3341 +   EMail: fluffy@cisco.com + + + + + + + +Audet & Jennings         Best Current Practice                 [Page 28] + +RFC 4787              NAT UDP Unicast Requirements          January 2007 + + +Full Copyright Statement + +   Copyright (C) The IETF Trust (2007). + +   This document is subject to the rights, licenses and restrictions +   contained in BCP 78, and except as set forth therein, the authors +   retain all their rights. + +   This document and the information contained herein are provided on an +   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS +   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND +   THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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. + +Intellectual Property + +   The IETF takes no position regarding the validity or scope of any +   Intellectual Property Rights or other rights that might be claimed to +   pertain to the implementation or use of the technology described in +   this document or the extent to which any license under such rights +   might or might not be available; nor does it represent that it has +   made any independent effort to identify any such rights.  Information +   on the procedures with respect to rights in RFC documents can be +   found in BCP 78 and BCP 79. + +   Copies of IPR disclosures made to the IETF Secretariat and any +   assurances of licenses to be made available, or the result of an +   attempt made to obtain a general license or permission for the use of +   such proprietary rights by implementers or users of this +   specification can be obtained from the IETF on-line IPR repository at +   http://www.ietf.org/ipr. + +   The IETF invites any interested party to bring to its attention any +   copyrights, patents or patent applications, or other proprietary +   rights that may cover technology that may be required to implement +   this standard.  Please address the information to the IETF at +   ietf-ipr@ietf.org. + +Acknowledgement + +   Funding for the RFC Editor function is currently provided by the +   Internet Society. + + + + + + + +Audet & Jennings         Best Current Practice                 [Page 29] + |