<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc rfcedstyle="yes"?>
<rfc submissionType="independent" category="info" number="7422"
     ipr="trust200902">
  <front>
    <title abbrev="deterministic-cgn">Deterministic Address Mapping to Reduce
    Logging in Carrier-Grade NAT Deployments</title>

    <author fullname="Chris Donley" initials="C." surname="Donley">
      <organization>CableLabs</organization>

      <address>
        <postal>
          <street>858 Coal Creek Cir</street>

          <city>Louisville</city>

          <region>CO</region>

          <code>80027</code>

          <country>United States</country>
        </postal>

        <email>c.donley@cablelabs.com</email>
      </address>
    </author>

    <author fullname="Chris Grundemann" initials="C." surname="Grundemann">
      <organization>Internet Society</organization>

      <address>
        <postal>
          <street/>

          <city>Denver</city>

          <region>CO</region>

          <code/>

          <country>United States</country>
        </postal>

        <email>cgrundemann@gmail.com</email>
      </address>
    </author>

    <author fullname="Vikas Sarawat" initials="V." surname="Sarawat">
      <organization>CableLabs</organization>

      <address>
        <postal>
          <street>858 Coal Creek Cir</street>

          <city>Louisville</city>

          <region>CO</region>

          <code>80027</code>

          <country>United States</country>
        </postal>

        <email>v.sarawat@cablelabs.com</email>
      </address>
    </author>

    <author fullname="Karthik Sundaresan" initials="K." surname="Sundaresan">
      <organization>CableLabs</organization>

      <address>
        <postal>
          <street>858 Coal Creek Cir</street>

          <city>Louisville</city>

          <region>CO</region>

          <code>80027</code>

          <country>United States</country>
        </postal>

        <email>k.sundaresan@cablelabs.com</email>
      </address>
    </author>

    <author fullname="Olivier Vautrin" initials="O." surname="Vautrin">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>1194 N Mathilda Avenue</street>

          <city>Sunnyvale</city>

          <region>CA</region>

          <code>94089</code>

          <country>United States</country>
        </postal>

        <email>olivier@juniper.net</email>
      </address>
    </author>

    <date month="December" year="2014"/>


    <abstract>
      <t>In some instances, Service Providers (SPs) have a legal logging requirement
      to be able to map a subscriber&rsquo;s inside address with the address
      used on the public Internet (e.g., for abuse response). Unfortunately,
      many logging solutions for Carrier-Grade NATs (CGNs) require active logging of
      dynamic translations. CGN port assignments are often
      per connection, but they could optionally use port ranges. Research indicates
      that per-connection logging is not scalable in many residential
      broadband services. This document suggests a way to manage CGN
      translations in such a way as to significantly reduce the amount of
      logging required while providing traceability for abuse response. IPv6
      is, of course, the preferred solution. While deployment is in progress,
      SPs are forced by business imperatives to maintain support
      for IPv4. This note addresses the IPv4 part of the network when a
      CGN solution is in use.</t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction">
      <t>It is becoming increasingly difficult to obtain new IPv4 address
      assignments from Regional/Local Internet Registries due to depleting
      supplies of unallocated IPv4 address space. To meet the growing demand
      for Internet connectivity from new subscribers, devices, and service
      types, some operators will be forced to share a single public IPv4
      address among multiple subscribers using techniques such as <xref
      target="RFC6264">Carrier-Grade NAT (CGN)</xref>
      (e.g., <xref target="NAT444">NAT444</xref>, <xref
      target="RFC6333">Dual-Stack Lite (DS-Lite)</xref>, NAT64 <xref target="RFC6146"/>, etc.).
      However, address sharing poses additional challenges to operators when
      considering how they manage service entitlement, public safety requests,
      or attack/abuse/fraud reports <xref target="RFC6269"/>. In order to
      identify a specific user associated with an IP address in response to
      such a request or for service entitlement, an operator will need to map
      a subscriber's internal source IP address and source port with the
      global public IP address and source port provided by the CGN for every
      connection initiated by the user.</t>

      <t>CGN connection logging satisfies the need to identify attackers and
      respond to abuse/public safety requests, but it imposes significant
      operational challenges to operators. In lab testing, we have observed
      CGN log messages to be approximately 150 bytes long for <xref
      target="NAT444">NAT444 </xref> and 175 bytes for <xref
      target="RFC6333">DS-Lite </xref> (individual log messages vary somewhat
      in size). Although we are not aware of definitive studies of connection
      rates per subscriber, reports from several operators in the US sets the
      average number of connections per household at approximately 33,000
      connections per day. If each connection is individually logged, this
      translates to a data volume of approximately 5 MB per subscriber per
      day, or about 150 MB per subscriber per month; however, specific data
      volumes may vary across different operators based on myriad factors.
      Based on available data, a 1-million-subscriber SP will
      generate approximately 150 terabytes of log data per month, or 1.8
      petabytes per year. Note that many SPs compress log data
      after collection; compression factors of 2:1 or 3:1 are common.</t>

      <t>The volume of log data poses a problem for both operators and the
      public safety community. On the operator side, it requires a significant
      infrastructure investment by operators implementing CGN. It also
      requires updated operational practices to maintain the logging
      infrastructure, and requires approximately 23 Mbps of bandwidth between
      the CGN devices and the logging infrastructure per 50,000 users. On the
      public safety side, it increases the time required for an operator to
      search the logs in response to an abuse report, and it could delay
      investigations. Accordingly, an international group of operators and
      public safety officials approached the authors to identify a way to
      reduce this impact while improving abuse response.</t>

      <t>The volume of CGN logging can be reduced by assigning port ranges
      instead of individual ports. Using this method, only the assignment of a
      new port range is logged. This may massively reduce logging volume. The
      log reduction may vary depending on the length of the assigned port
      range, whether the port range is static or dynamic, etc. This has been
      acknowledged in <xref target="RFC6269"/>, which recommends the logging of source ports
      at the server and/or destination logging at the CGN, and <xref
      target="NAT-LOGGING"/>, which describes information
      to be logged at a NAT.</t>

      <t>However, the existing solutions still pose an impact on operators
      and public safety officials for logging and searching. Instead, CGNs
      could be designed and/or configured to deterministically map internal
      addresses to {external address + port range} in such a way as to be able
      to algorithmically calculate the mapping. Only inputs and configuration
      of the algorithm need to be logged. This approach reduces both logging
      volume and subscriber identification times. In some cases, when full
      deterministic allocation is used, this approach can eliminate the need
      for translation logging.</t>

      <t>This document describes a method for such CGN address mapping,
      combined with block port reservations, that significantly reduces the
      burden on operators while offering the ability to map a subscriber's
      inside IP address with an outside address and external port number
      observed on the Internet.</t>

      <t>The activation of the proposed port range allocation scheme is
      compliant with BEHAVE requirements such as the support of Application-specific functions (APP).</t>

    <section title="Requirements Language">
      <t>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 <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </section>
    </section>

    <section title="Deterministic Port Ranges">
      <t>While a subscriber uses thousands of connections per day, most
      subscribers use far fewer resources at any given time. When the
      compression ratio (see Appendix B of <xref
      target="RFC6269">RFC 6269</xref>) is low (e.g., the ratio of the number
      of subscribers to the number of public IPv4 addresses allocated to a CGN
      is closer to 10:1 than 1000:1), each subscriber could expect to have
      access to thousands of TCP/UDP ports at any given time. Thus, as an
      alternative to logging each connection, CGNs could deterministically map
      customer private addresses (received on the customer-facing interface of
      the CGN, a.k.a., internal side) to public addresses extended with port
      ranges (used on the Internet-facing interface of the CGN, a.k.a.,
      external side). This algorithm allows an operator to identify a
      subscriber internal IP address when provided the public side IP and port
      number without having to examine the CGN translation logs. This prevents
      an operator from having to transport and store massive amounts of
      session data from the CGN and then process it to identify a
      subscriber.</t>

      <t>The algorithmic mapping can be expressed as:</t>

      <t>(External IP Address, Port Range) = function 1 (Internal IP
      Address)</t>

      <t>Internal IP Address = function 2 (External IP Address, Port
      Number)</t>

      <t>The CGN SHOULD provide a method for administrators to test both
      mapping functions (e.g., enter an External IP Address + Port Number and
      receive the corresponding Internal IP Address).</t>

      <t>Deterministic Port Range allocation requires configuration of the
      following variables:</t>

      <t><list style="symbols">
          <t>Inside IPv4/IPv6 address range (I);</t>

          <t>Outside IPv4 address range (O);</t>

          <t>Compression ratio (e.g., inside IP addresses I / outside IP
          addresses O) (C);</t>

          <t>Dynamic address pool factor (D), to be added to the compression
          ratio in order to create an overflow address pool;</t>

          <t>Maximum ports per user (M);</t>

          <t>Address assignment algorithm (A) (see below); and</t>

          <t>Reserved TCP/UDP port list (R)</t>
        </list></t>

      <t>Note: The inside address range (I) will be an IPv4 range in NAT444
      operation (<xref target="NAT444">NAT444</xref>) and an
      IPv6 range in DS-Lite operation (<xref
      target="RFC6333">DS-Lite</xref>).</t>

      <t>A subscriber is identified by an internal IPv4 address (e.g., NAT44)
      or an IPv6 prefix (e.g., DS-Lite or NAT64).</t>

      <t>The algorithm may be generalized to <xref
      target="L2NAT">L2-aware NAT </xref>, but this requires
      the configuration of the Internal interface identifiers (e.g., Media Access Control (MAC)
      addresses).</t>

      <t>The algorithm is not designed to retrieve an internal host among
      those sharing the same internal IP address (e.g., in a DS-Lite context,
      only an IPv6 address/prefix can be retrieved using the algorithm while
      the internal IPv4 address used for the encapsulated IPv4 datagram is
      lost).</t>

      <t>Several address-assignment algorithms are possible. Using predefined
      algorithms, such as those that follow, simplifies the process of
      reversing the algorithm when needed. However, the CGN MAY support
      additional algorithms. Also, the CGN is not required to support all
      of the algorithms described below. Subscribers could be restricted to ports
      from a single IPv4 address or could be allocated ports across all
      addresses in a pool, for example. The following algorithms and
      corresponding values of A are as follows:</t>

      <t><list style="hanging" hangIndent="3">
          <t hangText="0:">Sequential (e.g., the first block goes to address
          1, the second block to address 2, etc.).</t>

          <t hangText="1:">Staggered (e.g., for every n between 0 and
          ((65536-R)/(C+D))-1 , address 1 receives ports n*C+R, address 2
          receives ports (1+n)*C+R, etc.).</t>

          <t hangText="2:">Round robin (e.g., the subscriber receives the
          same port number across a pool of external IP addresses. If the
          subscriber is to be assigned more ports than there are in the
          external IP pool, the subscriber receives the next highest port
          across the IP pool, and so on. Thus, if there are 10 IP addresses in
          a pool and a subscriber is assigned 1000 ports, the subscriber would
          receive a range such as ports 2000-2099 across all 10 external IP
          addresses).</t>

          <t hangText="3:">Interlaced horizontally (e.g., each address
          receives every Cth port spread across a pool of external IP
          addresses).</t>

          <t hangText="4:">Cryptographically random port assignment (Section
          2.2 of <xref target="RFC6431">RFC6431</xref>). If this algorithm is
          used, the SP needs to retain the keying material and
          specific cryptographic function to support reversibility.</t>

          <t hangText="5:">Vendor-specific. Other vendor-specific algorithms
          may also be supported.</t>
        </list></t>

      <t>The assigned range of ports MAY also be used when translating ICMP
      requests (when rewriting the Identifier field).</t>

      <t>The CGN then reserves ports as follows:</t>

      <t><list style="numbers">
          <t>The CGN removes reserved ports (R) from the port candidate list
          (e.g., 0-1023 for TCP and UDP). At a minimum, the CGN SHOULD remove
          system ports <xref target="RFC6335"></xref> from the port
          candidate list reserved for deterministic assignment.</t>

          <t>The CGN calculates the total compression ratio (C+D), and
          allocates 1/(C+D) of the available ports to each internal IP
          address. Specific port allocation is determined by the algorithm (A)
          configured on the CGN. Any remaining ports are allocated to the
          dynamic pool. <vspace blankLines="1"/> Note: Setting D to 0 disables
          the dynamic pool. This option eliminates the need for per-subscriber
          logging at the expense of limiting the number of concurrent
          connections that 'power users' can initiate.</t>

          <t>When a subscriber initiates a connection, the CGN creates a
          translation mapping between the subscriber's inside local IP
          address/port and the CGN outside global IP address/port. The CGN
          MUST use one of the ports allocated in step 2 for the translation as
          long as such ports are available. The CGN SHOULD allocate ports
          randomly within the port range assigned by the deterministic
          algorithm. This is to increase subscriber privacy. The CGN MUST use
          the pre-allocated port range from step 2 for Port Control Protocol
          (PCP, <xref target="RFC6887"/>) reservations as long as such ports
          are available. While the CGN maintains its mapping table, it need
          not generate a log entry for translation mappings created in this
          step.</t>

          <t>If D&gt;0, the CGN will have a pool of ports left for dynamic
          assignment. If a subscriber uses more than the range of ports
          allocated in step 2 (but fewer than the configured maximum ports M),
          the CGN assigns a block of ports from the dynamic assignment range
          for such a connection or for PCP reservations. The CGN MUST log
          dynamically assigned port blocks to facilitate subscriber-to-address
          mapping. The CGN SHOULD manage dynamic ports as described in <xref
          target="LOG-REDUCTION"> </xref>.</t>

          <t>Configuration of reserved ports (e.g., system ports) is left to
          operator configuration.</t>
        </list></t>

      <t>Thus, the CGN will maintain translation mapping information for all
      connections within its internal translation tables; however, it only
      needs to externally log translations for dynamically assigned ports.</t>

      <section title="IPv4 Port Utilization Efficiency">
        <t>For SPs requiring an aggressive address-sharing
        ratio, the use of the algorithmic mapping may impact the efficiency of
        the address sharing. A dynamic port range allocation assignment is
        more suitable in those cases.</t>
      </section>

      <section title="Planning and Dimensioning">
        <t>Unlike dynamic approaches, the use of the algorithmic mapping
        requires more effort from operational teams to tweak the algorithm
        (e.g., size of the port range, address sharing ratio, etc.). Dedicated
        alarms SHOULD be configured when some port utilization thresholds are
        fired so that the configuration can be refined.</t>

        <t>The use of algorithmic mapping also affects geolocation. Changes to
        the inside and outside address ranges (e.g., due to growth, address
        allocation planning, etc.) would require external geolocation
        providers to recalibrate their mappings.</t>
      </section>

      <section title="Deterministic CGN Example">
        <t>To illustrate the use of deterministic NAT, let's consider a simple
        example. The operator configures an inside address range (I) of
        198.51.100.0/28 <xref target="RFC6598"/> and outside address (O) of
        192.0.2.1. The dynamic address pool factor (D) is set to '2'. Thus,
        the total compression ratio is 1:(14+2) = 1:16. Only the system ports
        (e.g., ports &lt; 1024) are reserved (R). This configuration causes
        the CGN to pre-allocate ((65536-1024)/16 =) 4032 TCP and 4032 UDP ports
        per inside IPv4 address. For the purposes of this example, let's
        assume that they are allocated sequentially, where 198.51.100.1 maps
        to 192.0.2.1 ports 1024-5055, 198.51.100.2 maps to 192.0.2.1 ports
        5056-9087, etc. The dynamic port range thus contains ports 57472-65535
        (port allocation illustrated in the table below). Finally, the maximum
        ports/subscriber is set to 5040.</t>

        <texttable suppress-title="false">
          <ttcol>Inside Address / Pool</ttcol>

          <ttcol>Outside Address &amp; Port</ttcol>

          <c>Reserved</c>

          <c>192.0.2.1:0-1023</c>

          <c>198.51.100.1</c>

          <c>192.0.2.1:1024-5055</c>

          <c>198.51.100.2</c>

          <c>192.0.2.1:5056-9087</c>

          <c>198.51.100.3</c>

          <c>192.0.2.1:9088-13119</c>

          <c>198.51.100.4</c>

          <c>192.0.2.1:13120-17151</c>

          <c>198.51.100.5</c>

          <c>192.0.2.1:17152-21183</c>

          <c>198.51.100.6</c>

          <c>192.0.2.1:21184-25215</c>

          <c>198.51.100.7</c>

          <c>192.0.2.1:25216-29247</c>

          <c>198.51.100.8</c>

          <c>192.0.2.1:29248-33279</c>

          <c>198.51.100.9</c>

          <c>192.0.2.1:33280-37311</c>

          <c>198.51.100.10</c>

          <c>192.0.2.1:37312-41343</c>

          <c>198.51.100.11</c>

          <c>192.0.2.1:41344-45375</c>

          <c>198.51.100.12</c>

          <c>192.0.2.1:45376-49407</c>

          <c>198.51.100.13</c>

          <c>192.0.2.1:49408-53439</c>

          <c>198.51.100.14</c>

          <c>192.0.2.1:53440-57471</c>

          <c>Dynamic</c>

          <c>192.0.2.1:57472-65535</c>
        </texttable>

        <t>When subscriber 1 using 198.51.100.1 initiates a low volume of
        connections (e.g., &lt; 4032 concurrent connections), the CGN maps the
        outgoing source address/port to the pre-allocated range. These
        translation mappings are not logged.</t>

        <t>Subscriber 2 concurrently uses more than the allocated 4032 ports
        (e.g., for peer-to-peer, mapping, video streaming, or other
        connection-intensive traffic types), the CGN allocates up to an
        additional 1008 ports using bulk port reservations. In this example,
        subscriber 2 uses outside ports 5056-9087, and then 100-port blocks
        between 58000-58999. Connections using ports 5056-9087 are not logged,
        while 10 log entries are created for ports 58000-58099, 58100-58199,
        58200-58299, ..., 58900-58999.</t>

        <t>In order to identify a subscriber behind a CGN (regardless of port
        allocation method), public safety agencies need to collect source
        address and port information from content provider log files. Thus,
        content providers are advised to log source address, source port, and
        timestamp for all log entries, per <xref target="RFC6302"/>. If a
        public safety agency collects such information from a content provider
        and reports abuse from 192.0.2.1, port 2001, the operator can reverse
        the mapping algorithm to determine that the internal IP address
        subscriber 1 has been assigned generated the traffic without
        consulting CGN logs (by correlating the internal IP address with
        DHCP/PPP lease connection records). If a second abuse report comes in
        for 192.0.2.1, port 58204, the operator will determine that port 58204
        is within the dynamic pool range, consult the log file, correlate with
        connection records, and determine that subscriber 2 generated the
        traffic (assuming that the public safety timestamp matches the
        operator timestamp. As noted in <xref target="RFC6292">RFC 6292</xref>,
        accurate timekeeping (e.g., use of NTP or Simple NTP) is vital).</t>

        <t>In this example, there are no log entries for the majority of
        subscribers, who only use pre-allocated ports. Only minimal logging
        would be needed for those few subscribers who exceed their
        pre-allocated ports and obtain extra bulk port assignments from the
        dynamic pool. Logging data for those users will include inside
        address, outside address, outside port range, and timestamp.</t>

        <t>Note that in a production environment, operators are encouraged to
        consider <xref target="RFC6598"/> for assigning inside addresses.</t>
      </section>
    </section>

    <section title="Additional Logging Considerations">
      <t>In order to be able to identify a subscriber based on observed
      external IPv4 address, port, and timestamp, an operator needs to know
      how the CGN was configured with regard to internal and external IP
      addresses, dynamic address pool factor, maximum ports per user, and
      reserved port range at any given time. Therefore, the CGN MUST generate
      a record any time such variables are changed. The CGN SHOULD generate a
      log message any time such variables are changed. The CGN MAY keep such a
      record in the form of a router configuration file. If the CGN does not
      generate a log message, it would be up to the operator to maintain
      version control of router config changes. Also, the CGN SHOULD generate
      such a log message once per day to facilitate quick identification of
      the relevant configuration in the event of an abuse notification.</t>

      <t>Such a log message MUST, at minimum, include the timestamp, inside
      prefix I, inside mask, outside prefix O, outside mask, D, M, A, and
      reserved port list R; for example:</t>

      <t>[Wed Oct 11 14:32:52
      2000]:198.51.100.0:28:192.0.2.0:32:2:5040:0:1-1023,5004,5060.</t>

      <section title="Failover Considerations">
        <t>Due to the deterministic nature of algorithmically assigned
        translations, no additional logging is required during failover
        conditions provided that inside address ranges are unique within a
        given failover domain. Even when directed to a different CGN server,
        translations within the deterministic port range on either the primary
        or secondary server can be algorithmically reversed, provided the
        algorithm is known. Thus, if 198.51.100.1 port 3456 maps to 192.0.2.1
        port 1000 on CGN 1 and 198.51.100.1 port 1000 on Failover CGN 2, an
        operator can identify the subscriber based on outside source address
        and port information.</t>

        <t>Similarly, assignments made from the dynamic overflow pool need to
        be logged as described above, whether translations are performed on
        the primary or failover CGN.</t>
      </section>
    </section>

    <section title="Impact on the IPv6 Transition">
      <t>The solution described in this document is applicable to CGN transition technologies (e.g., NAT444, DS-Lite, and NAT64). As
      discussed in <xref target="RFC7021"/>, the authors acknowledge that
      native IPv6 will offer subscribers a better experience than CGN.
      However, many Customer Premises Equipment (CPE) devices only support IPv4. Likewise, as of October
      2014, only approximately 5.2% of the top 1 million websites were
      available using IPv6. Accordingly, Deterministic CGN should in no way be
      understood as making CGN a replacement for IPv6 service; however, until
      such time as IPv6 content and devices are widely available,
      Deterministic CGN will provide operators with the ability to quickly
      respond to public safety requests without requiring excessive
      infrastructure, operations, and bandwidth to support per-connection
      logging.</t>
    </section>

    <section title="Privacy Considerations">
      <t>The algorithm described above makes it easier for SPs
      and public safety officials to identify the IP address of a subscriber
      through a CGN system. This is the equivalent level of privacy users
      could expect when they are assigned a public IP address and their
      traffic is not translated. However, this algorithm could be used by
      other actors on the Internet to map multiple transactions to a single
      subscriber, particularly if ports are distributed sequentially. While
      still preserving traceability, subscriber privacy can be increased by
      using one of the other values of the Address Assignment Algorithm (A),
      which would require interested parties to know more about the Service
      Provider's CGN configuration to be able to tie multiple connections to a
      particular subscriber.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The security considerations applicable to NAT operation for various
      protocols as documented in, for example, <xref target="RFC4787">RFC
      4787</xref> and <xref target="RFC5382">RFC 5382</xref> also apply to
      this document.</t>

      <t>Note that, with the possible exception of cryptographically based port
      allocations, attackers could reverse-engineer algorithmically derived
      port allocations to either target a specific subscriber or to spoof
      traffic to make it appear to have been generated by a specific
      subscriber. However, this is exactly the same level of security that the
      subscriber would experience in the absence of CGN. CGN is not intended
      to provide additional security by obscurity.</t>
    </section>


  </middle>

  <back>
    <references title="Normative References">


<reference anchor='RFC2119' target='http://www.rfc-editor.org/info/rfc2119'>

<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year='1997' month='March' />
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      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
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='TXT' octets='4723' target='http://www.rfc-editor.org/rfc/rfc2119.txt' />
<format type='HTML' octets='17970' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5777' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>


<reference anchor='RFC4787' target='http://www.rfc-editor.org/info/rfc4787'>

<front>
<title>Network Address Translation (NAT) Behavioral Requirements for Unicast UDP</title>
<author initials='F.' surname='Audet' fullname='F. Audet'>
<organization /></author>
<author initials='C.' surname='Jennings' fullname='C. Jennings'>
<organization /></author>
<date year='2007' month='January' />
<abstract>
<t>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.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract></front>

<seriesInfo name='BCP' value='127' />
<seriesInfo name='RFC' value='4787' />
<format type='TXT' octets='68693' target='http://www.rfc-editor.org/rfc/rfc4787.txt' />
</reference>


 

<reference anchor='RFC6269' target='http://www.rfc-editor.org/info/rfc6269'>

<front>
<title>Issues with IP Address Sharing</title>
<author initials='M.' surname='Ford' fullname='M. Ford'>
<organization /></author>
<author initials='M.' surname='Boucadair' fullname='M. Boucadair'>
<organization /></author>
<author initials='A.' surname='Durand' fullname='A. Durand'>
<organization /></author>
<author initials='P.' surname='Levis' fullname='P. Levis'>
<organization /></author>
<author initials='P.' surname='Roberts' fullname='P. Roberts'>
<organization /></author>
<date year='2011' month='June' />
<abstract>
<t>The completion of IPv4 address allocations from IANA and the Regional Internet Registries (RIRs) is causing service providers around the world to question how they will continue providing IPv4 connectivity service to their subscribers when there are no longer sufficient IPv4 addresses to allocate them one per subscriber. Several possible solutions to this problem are now emerging based around the idea of shared IPv4 addressing. These solutions give rise to a number of issues, and this memo identifies those common to all such address sharing approaches. Such issues include application failures, additional service monitoring complexity, new security vulnerabilities, and so on. Solution-specific discussions are out of scope.&lt;/t>&lt;t> Deploying IPv6 is the only perennial way to ease pressure on the public IPv4 address pool without the need for address sharing mechanisms that give rise to the issues identified herein. This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract></front>

<seriesInfo name='RFC' value='6269' />
<format type='TXT' octets='71660' target='http://www.rfc-editor.org/rfc/rfc6269.txt' />
</reference>



<reference anchor='RFC5382' target='http://www.rfc-editor.org/info/rfc5382'>

<front>
<title>NAT Behavioral Requirements for TCP</title>
<author initials='S.' surname='Guha' fullname='S. Guha'>
<organization /></author>
<author initials='K.' surname='Biswas' fullname='K. Biswas'>
<organization /></author>
<author initials='B.' surname='Ford' fullname='B. Ford'>
<organization /></author>
<author initials='S.' surname='Sivakumar' fullname='S. Sivakumar'>
<organization /></author>
<author initials='P.' surname='Srisuresh' fullname='P. Srisuresh'>
<organization /></author>
<date year='2008' month='October' />
<abstract>
<t>This document defines a set of requirements for NATs that handle TCP that would allow many applications, such as peer-to-peer applications and online games to work consistently.  Developing NATs that meet this set of requirements will greatly increase the likelihood that these applications will function properly.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract></front>

<seriesInfo name='BCP' value='142' />
<seriesInfo name='RFC' value='5382' />
<format type='TXT' octets='50306' target='http://www.rfc-editor.org/rfc/rfc5382.txt' />
</reference>




<reference anchor='RFC6264' target='http://www.rfc-editor.org/info/rfc6264'>

<front>
<title>An Incremental Carrier-Grade NAT (CGN) for IPv6 Transition</title>
<author initials='S.' surname='Jiang' fullname='S. Jiang'>
<organization /></author>
<author initials='D.' surname='Guo' fullname='D. Guo'>
<organization /></author>
<author initials='B.' surname='Carpenter' fullname='B. Carpenter'>
<organization /></author>
<date year='2011' month='June' />
<abstract>
<t>Global IPv6 deployment was slower than originally expected. As IPv4 address exhaustion approaches, IPv4 to IPv6 transition issues become more critical and less tractable. Host-based transition mechanisms used in dual-stack environments cannot meet all transition requirements. Most end users are not sufficiently expert to configure or maintain host-based transition mechanisms. Carrier-Grade NAT (CGN) devices with integrated transition mechanisms can reduce the operational changes required during the IPv4 to IPv6 migration or coexistence period.&lt;/t>&lt;t> This document proposes an incremental CGN approach for IPv6 transition. It can provide IPv6 access services for IPv6 hosts and IPv4 access services for IPv4 hosts while leaving much of a legacy ISP network unchanged during the initial stage of IPv4 to IPv6 migration. Unlike CGN alone, incremental CGN also supports and encourages smooth transition towards dual-stack or IPv6-only ISP networks. An integrated configurable CGN device and an adaptive home gateway (HG) device are described. Both are reusable during different transition phases, avoiding multiple upgrades. This enables IPv6 migration to be incrementally achieved according to real user requirements. This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract></front>

<seriesInfo name='RFC' value='6264' />
<format type='TXT' octets='31881' target='http://www.rfc-editor.org/rfc/rfc6264.txt' />
</reference>

    </references>

    <references title="Informative References">


<reference anchor='RFC6333' target='http://www.rfc-editor.org/info/rfc6333'>

<front>
<title>Dual-Stack Lite Broadband Deployments Following IPv4 Exhaustion</title>
<author initials='A.' surname='Durand' fullname='A. Durand'>
<organization /></author>
<author initials='R.' surname='Droms' fullname='R. Droms'>
<organization /></author>
<author initials='J.' surname='Woodyatt' fullname='J. Woodyatt'>
<organization /></author>
<author initials='Y.' surname='Lee' fullname='Y. Lee'>
<organization /></author>
<date year='2011' month='August' />
<abstract>
<t>This document revisits the dual-stack model and introduces the Dual- Stack Lite technology aimed at better aligning the costs and benefits of deploying IPv6 in service provider networks.  Dual-Stack Lite enables a broadband service provider to share IPv4 addresses among customers by combining two well-known technologies: IP in IP (IPv4- in-IPv6) and Network Address Translation (NAT). [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name='RFC' value='6333' />
<format type='TXT' octets='65622' target='http://www.rfc-editor.org/rfc/rfc6333.txt' />
</reference>



<reference anchor='RFC6887' target='http://www.rfc-editor.org/info/rfc6887'>

<front>
<title>Port Control Protocol (PCP)</title>
<author initials='D.' surname='Wing' fullname='D. Wing'>
<organization /></author>
<author initials='S.' surname='Cheshire' fullname='S. Cheshire'>
<organization /></author>
<author initials='M.' surname='Boucadair' fullname='M. Boucadair'>
<organization /></author>
<author initials='R.' surname='Penno' fullname='R. Penno'>
<organization /></author>
<author initials='P.' surname='Selkirk' fullname='P. Selkirk'>
<organization /></author>
<date year='2013' month='April' />
<abstract>
<t>The Port Control Protocol allows an IPv6 or IPv4 host to control how incoming IPv6 or IPv4 packets are translated and forwarded by a Network Address Translator (NAT) or simple firewall, and also allows a host to optimize its outgoing NAT keepalive messages.</t></abstract></front>

<seriesInfo name='RFC' value='6887' />
<format type='TXT' octets='221314' target='http://www.rfc-editor.org/rfc/rfc6887.txt' />
</reference>




<reference anchor='RFC6292' target='http://www.rfc-editor.org/info/rfc6292'>

<front>
<title>Requirements for a Working Group Charter Tool</title>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'>
<organization /></author>
<date year='2011' month='June' />
<abstract>
<t>The IETF intends to provide a new tool to Area Directors for the creation, re-chartering, and closing of Working Groups.  The tool will also allow the IETF community to view the status of the chartering process.  This document describes the requirements for the proposed new tool, and it is intended as input to a later activity for the design and development of such a tool.  This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract></front>

<seriesInfo name='RFC' value='6292' />
<format type='TXT' octets='23701' target='http://www.rfc-editor.org/rfc/rfc6292.txt' />
</reference>



<reference anchor='RFC6146' target='http://www.rfc-editor.org/info/rfc6146'>

<front>
<title>Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers</title>
<author initials='M.' surname='Bagnulo' fullname='M. Bagnulo'>
<organization /></author>
<author initials='P.' surname='Matthews' fullname='P. Matthews'>
<organization /></author>
<author initials='I.' surname='van Beijnum' fullname='I. van Beijnum'>
<organization /></author>
<date year='2011' month='April' /></front>

<seriesInfo name='RFC' value='6146' />
<format type='TXT' octets='107954' target='http://www.rfc-editor.org/rfc/rfc6146.txt' />
</reference>



<reference anchor='RFC6335' target='http://www.rfc-editor.org/info/rfc6335'>

<front>
<title>Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry</title>
<author initials='M.' surname='Cotton' fullname='M. Cotton'>
<organization /></author>
<author initials='L.' surname='Eggert' fullname='L. Eggert'>
<organization /></author>
<author initials='J.' surname='Touch' fullname='J. Touch'>
<organization /></author>
<author initials='M.' surname='Westerlund' fullname='M. Westerlund'>
<organization /></author>
<author initials='S.' surname='Cheshire' fullname='S. Cheshire'>
<organization /></author>
<date year='2011' month='August' />
<abstract>
<t>This document defines the procedures that the Internet Assigned Numbers Authority (IANA) uses when handling assignment and other requests related to the Service Name and Transport Protocol Port Number registry. It also discusses the rationale and principles behind these procedures and how they facilitate the long-term sustainability of the registry.&lt;/t>&lt;t> This document updates IANA's procedures by obsoleting the previous UDP and TCP port assignment procedures defined in Sections 8 and 9.1 of the IANA Allocation Guidelines, and it updates the IANA service name and port assignment procedures for UDP-Lite, the Datagram Congestion Control Protocol (DCCP), and the Stream Control Transmission Protocol (SCTP). It also updates the DNS SRV specification to clarify what a service name is and how it is registered. This memo documents an Internet Best Current Practice.</t></abstract></front>

<seriesInfo name='BCP' value='165' />
<seriesInfo name='RFC' value='6335' />
<format type='TXT' octets='79088' target='http://www.rfc-editor.org/rfc/rfc6335.txt' />
</reference>



<reference anchor='RFC6431' target='http://www.rfc-editor.org/info/rfc6431'>

<front>
<title>Huawei Port Range Configuration Options for PPP IP Control Protocol (IPCP)</title>
<author initials='M.' surname='Boucadair' fullname='M. Boucadair'>
<organization /></author>
<author initials='P.' surname='Levis' fullname='P. Levis'>
<organization /></author>
<author initials='G.' surname='Bajko' fullname='G. Bajko'>
<organization /></author>
<author initials='T.' surname='Savolainen' fullname='T. Savolainen'>
<organization /></author>
<author initials='T.' surname='Tsou' fullname='T. Tsou'>
<organization /></author>
<date year='2011' month='November' />
<abstract>
<t>This document defines two Huawei IPCP (IP Control Protocol) options used to convey a set of ports.  These options can be used in the context of port range-based solutions or NAT-based solutions for port delegation and forwarding purposes.  This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract></front>

<seriesInfo name='RFC' value='6431' />
<format type='TXT' octets='33981' target='http://www.rfc-editor.org/rfc/rfc6431.txt' />
</reference>



<reference anchor='RFC7021' target='http://www.rfc-editor.org/info/rfc7021'>

<front>
<title>Assessing the Impact of Carrier-Grade NAT on Network Applications</title>
<author initials='C.' surname='Donley' fullname='C. Donley'>
<organization /></author>
<author initials='L.' surname='Howard' fullname='L. Howard'>
<organization /></author>
<author initials='V.' surname='Kuarsingh' fullname='V. Kuarsingh'>
<organization /></author>
<author initials='J.' surname='Berg' fullname='J. Berg'>
<organization /></author>
<author initials='J.' surname='Doshi' fullname='J. Doshi'>
<organization /></author>
<date year='2013' month='September' />
<abstract>
<t>NAT444 is an IPv4 extension technology being considered by Service Providers as a means to continue offering IPv4 service to customers while transitioning to IPv6.  This technology adds an extra Carrier- Grade NAT (CGN) in the Service Provider network, often resulting in two NATs.  CableLabs, Time Warner Cable, and Rogers Communications independently tested the impacts of NAT444 on many popular Internet services using a variety of test scenarios, network topologies, and vendor equipment.  This document identifies areas where adding a second layer of NAT disrupts the communication channel for common Internet applications.  This document was updated to include the Dual-Stack Lite (DS-Lite) impacts also.</t></abstract></front>

<seriesInfo name='RFC' value='7021' />
<format type='TXT' octets='66150' target='http://www.rfc-editor.org/rfc/rfc7021.txt' />
</reference>



<reference anchor='RFC6302' target='http://www.rfc-editor.org/info/rfc6302'>

<front>
<title>Logging Recommendations for Internet-Facing Servers</title>
<author initials='A.' surname='Durand' fullname='A. Durand'>
<organization /></author>
<author initials='I.' surname='Gashinsky' fullname='I. Gashinsky'>
<organization /></author>
<author initials='D.' surname='Lee' fullname='D. Lee'>
<organization /></author>
<author initials='S.' surname='Sheppard' fullname='S. Sheppard'>
<organization /></author>
<date year='2011' month='June' />
<abstract>
<t>In the wake of IPv4 exhaustion and deployment of IP address sharing techniques, this document recommends that Internet-facing servers log port number and accurate timestamps in addition to the incoming IP address.  This memo documents an Internet Best Current Practice.</t></abstract></front>

<seriesInfo name='BCP' value='162' />
<seriesInfo name='RFC' value='6302' />
<format type='TXT' octets='10039' target='http://www.rfc-editor.org/rfc/rfc6302.txt' />
</reference>


<!--<?rfc include='reference.I-D.draft-miles-behave-l2nat-00'?> Expired-->




<reference anchor='L2NAT'>
<front>
<title>Layer2-Aware NAT</title>

<author initials='D' surname='Miles' fullname='David Miles'>
    <organization />
</author>

<author initials='M' surname='Townsley' fullname='Mark Townsley'>
    <organization />
</author>

<date month='March' day='4' year='2009' />

<abstract><t>This document describes a "Layer2-Aware" IPv4-to-IPv4 (NAT44) Service Provider NAT function that identifies subscriber traffic based on IP- independent methods such as a link-layer address, VLAN, PPP session, tunnel, etc. in order to allow one to either avoid "double-NAT" (NAT444) of subscriber IP traffic altogether, the need for additional "Shared Service-Provider" IPv4 address space, or partitioning of RFC 1918 space between subscribers.  While the mechanisms described in this document may be applicable to a variety of network architectures, the primary focus is on residential "fixed-line" Internet access.</t></abstract>

</front>

<seriesInfo name='Work in Progress,' value='draft-miles-behave-l2nat-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-miles-behave-l2nat-00.txt' />
</reference>


<reference anchor='RFC6598' target='http://www.rfc-editor.org/info/rfc6598'>

<front>
<title>IANA-Reserved IPv4 Prefix for Shared Address Space</title>
<author initials='J.' surname='Weil' fullname='J. Weil'>
<organization /></author>
<author initials='V.' surname='Kuarsingh' fullname='V. Kuarsingh'>
<organization /></author>
<author initials='C.' surname='Donley' fullname='C. Donley'>
<organization /></author>
<author initials='C.' surname='Liljenstolpe' fullname='C. Liljenstolpe'>
<organization /></author>
<author initials='M.' surname='Azinger' fullname='M. Azinger'>
<organization /></author>
<date year='2012' month='April' />
<abstract>
<t>This document requests the allocation of an IPv4 /10 address block to be used as Shared Address Space to accommodate the needs of Carrier- Grade NAT (CGN) devices. It is anticipated that Service Providers will use this Shared Address Space to number the interfaces that connect CGN devices to Customer Premises Equipment (CPE).&lt;/t>&lt;t> Shared Address Space is distinct from RFC 1918 private address space because it is intended for use on Service Provider networks. However, it may be used in a manner similar to RFC 1918 private address space on routing equipment that is able to do address translation across router interfaces when the addresses are identical on two different interfaces. Details are provided in the text of this document.&lt;/t>&lt;t> This document details the allocation of an additional special-use IPv4 address block and updates RFC 5735. This memo documents an Internet Best Current Practice.</t></abstract></front>

<seriesInfo name='BCP' value='153' />
<seriesInfo name='RFC' value='6598' />
<format type='TXT' octets='22055' target='http://www.rfc-editor.org/rfc/rfc6598.txt' />
</reference>


<!--      <?rfc include="reference.I-D.draft-shirasaki-nat444-06"?>; Expired -->



<reference anchor='NAT444'>
<front>
<title>NAT444</title>

<author initials='I' surname='Yamagata' fullname='Ikuhei Yamagata'>
    <organization />
</author>

<author initials='Y' surname='Shirasaki' fullname='Yasuhiro Shirasaki'>
    <organization />
</author>

<author initials='A' surname='Nakagawa' fullname='Akira Nakagawa'>
    <organization />
</author>

<author initials='J' surname='Yamaguchi' fullname='Jiro Yamaguchi'>
    <organization />
</author>

<author initials='H' surname='Ashida' fullname='Hiroyuki Ashida'>
    <organization />
</author>

<date month='July' day='5' year='2012' />

<abstract><t>This document describes one of the network models that are designed for smooth transition to IPv6.  It is called NAT444 model.  NAT444 model is composed of IPv6, and IPv4 with Carrier Grade (CGN).  NAT444 is the only scheme not to require replacing Customer Premises Equipment (CPE) even if IPv4 address exhausted.  But it must be noted that NAT444 has serious restrictions i.e. it limits the number of sessions per CPE so that rich applications such as AJAX and RSS feed cannot work well.  Therefore, IPv6 which is free from such a difficulty has to be introduced into the network at the same time.  In other words, NAT444 is just a tool to make IPv6 transition easy to be swallowed.  It is designed for the days IPv4 and IPv6 co-existence.</t></abstract>

</front>

<seriesInfo name='Work in Progress,' value='draft-shirasaki-nat444-06' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-shirasaki-nat444-06.txt' />
</reference>



<!--      <?rfc include="reference.I-D.draft-tsou-behave-natx4-log-reduction-04"?>; Exists -->

<reference anchor='LOG-REDUCTION'>
<front>
<title>Port Management To Reduce Logging In Large-Scale NATs</title>

<author initials='T' surname='Tsou' fullname='Tina Tsou'>
    <organization />
</author>

<author initials='W' surname='Li' fullname='Weibo Li'>
    <organization />
</author>

<author initials='T' surname='Taylor' fullname='Tom Taylor'>
    <organization />
</author>

<author initials='J' surname='Huang' fullname='Jing Huang'>
    <organization />
</author>

<date month='July' day='2' year='2013' />

<abstract><t>Various IPv6 transition strategies require the introduction of large- scale NATs (e.g. AFTR, NAT64) to share the limited supply of IPv4 addresses available in the network until transition is complete. There has recently been debate over how to manage the sharing of ports between different subscribers sharing the same IPv4 address. One factor in the discussion is the operational requirement to log the assignment of transport addresses to subscribers.  It has been argued that dynamic assignment of individual ports between subscribers requires the generation of an excessive volume of logs. This document suggests a way to achieve dynamic port sharing while keeping log volumes low.</t></abstract>

</front>

<seriesInfo name='Work in Progress,' value='draft-tsou-behave-natx4-log-reduction-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-tsou-behave-natx4-log-reduction-04.txt' />
</reference>


<!--      <?rfc include="reference.I-D.draft-sivakumar-behave-nat-logging-06"?>; Expired-->

<reference anchor='NAT-LOGGING'>

<front>
<title>IPFIX Information Elements for logging NAT Events</title>

<author initials='S' surname='Sivakumar' fullname='Senthil Sivakumar'>
    <organization />
</author>

<author initials='R' surname='Penno' fullname='Reinaldo Penno'>
    <organization />
</author>

<date month='July' day='2' year='2014' />

<abstract><t>Network operators expect NAT devices to log events like creation and deletion of translations and information about the resources it is managing.  The logs are essential in many cases to identify an attacker or a host that was used to launch malicious attacks and/or for various other purposes of accounting.  Since there is no standard way of logging this information, different NAT devices log the information using proprietary formats and hence it is difficult to expect a consistent behavior.  The lack of a consistent way to log the data makes it difficult to write the collector applications that would receive this data and process it to present useful information. This document describes the formats for logging of NAT events.</t></abstract>

</front>

<seriesInfo name='Work in Progress,' value='draft-ietf-behave-ipfix-nat-logging-04' />

</reference>


<!--[rfced] We note that draft-sivakumar-behave-nat-logging-06 has been replaced by draft-ietf-behave-ipfix-nat-logging.  Please let us know if/how this reference should be updated.

-->


    </references>

<!--[rfced] FYI - the following updates will be applied in
post-xml2rfc processing in accordance with RFC 7322.

- Removal of the "Appendix" designation from the heading of a
Contributors or Acknowledgements section.

- Addition of the Author(s) Address(es) section to the ToC.

-->


    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank the following people for their
      suggestions and feedback: Bobby Flaim, Lee Howard, Wes George,
      Jean-Francois Tremblay, Mohammed Boucadair, Alain Durand, David Miles,
      Andy Anchev, Victor Kuarsingh, Miguel Cros Cecilia, Fred Baker, Brian
      Carpenter, and Reinaldo Penno.</t>
    </section>
  </back>
</rfc>
