<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?rfc compact="yes"?>
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-perreault-softwire-lw4over6-pcp-00" category="std">

  <front>

    <title abbrev="Provisioning lw4o6 with PCP">Provisioning Lightweight 4over6
      (lw4o6) with the Port Control Protocol (PCP)</title>

    <author fullname="Chongfeng Xie" initials="C." surname="Xie">
      <organization>China Telecom</organization>
      <address>
        <postal>
          <street>Room 708 No.118, Xizhimenneidajie</street>
          <city>Beijing</city>
          <region></region>
          <code>100035</code>
          <country>P.R.China</country>
        </postal>
        <email>xiechf@ctbri.com.cn</email>
      </address>
    </author>

    <author initials="S." surname="Perreault" fullname="Simon Perreault">
      <organization>Viagénie</organization>
      <address>
        <postal>
          <street>246 Aberdeen</street>
          <city>Québec</city>
          <region>QC</region>
          <code>G1R 2E1</code>
          <country>Canada</country>
        </postal>
        <phone>+1 418 656 9254</phone>
        <email>simon.perreault@viagenie.ca</email>
        <uri>http://viagenie.ca</uri>
      </address>
    </author>

    <author fullname="Cathy Zhou" initials="C." surname="Zhou">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Bantian, Longgang District</street>
          <city>Shenzhen</city>
          <code>518129</code>
          <country>P.R. China</country>
        </postal>
        <phone></phone>
        <email>cathy.zhou@huawei.com</email>
      </address>
    </author>

    <date/>

    <abstract>
      <t>This memo defines the procedures that a Lightweight B4 uses for
        provisioning its parameters with the Port Control Protocol.</t>
    </abstract>

  </front>

  <middle>

    <section title="Introduction">

      <t>Lightweight 4over6 (lw4o6) <xref target="I-D.ietf-softwire-lw4over6"/>
        defines a model for providing IPv4 access over an IPv6 network in which
        the Network Address Translation (NAT) function is performed by the
        Customer-Premises Equipment (CPE) instead of being centralized on a
        Carrier-Grade NAT (CGN).</t>

      <t>Separately, the Port Control Protocol <xref target="RFC6887"/> is used
        to manipulate port mappings in a NAT, firewall, port range router, or
        similar equipment. It is extended in <xref
          target="I-D.ietf-pcp-port-set"/> with the ability to manipulate sets
        of ports instead of individual ports.</t>

      <t>This document describes how PCP is used to provision a Lightweight B4
        (lwB4) with its port set and how to establish a tunnel to the
        Lightweight AFTR (lwAFTR).</t>

    </section>

    <section title="Terminology">

      <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"/>.</t>

      <t>Terminology defined in <xref target="I-D.ietf-softwire-lw4over6"/> is
        used extensively in this document.</t>

    </section>

    <section title="Lightweight B4 Provisioning with PCP">

      <t>The elements that are needed for lwB4 provisioning are listed in
        Section 5.1 of <xref target="I-D.ietf-softwire-lw4over6"/>.

        <list>
          <t>Note (to be removed before publication): These elements can be
            provisioned with plain mode or encapsulation mode.</t>
          <t>In the plain mode, PCP port-set request is sent using native IPv6
            packet, while in the encapsulation mode, PCP Port-set request is
            sent using ip-in-ip tunnel. In this draft, encapsulation mode is
            recommended to guarantee that the same lwAFTR/PCP server would be
            selected for PCP requests and subsequent ip-in-ip traffic.</t>
        </list>
      </t>

      <section title="Setting Up the Tunnel">

        <t>The lwB4 initiates the provisioning procedure by requesting the
          OPTION_AFTR_NAME DHCPv6 option as indicated in <xref
            target="RFC6334"/>.  This option provides the IPv6 address for the
          lwAFTR.</t>

        <t>Once this address is known, the lwB4 sets up an IPv4-in-IPv6 tunnel
          with the following characteristics:
          <list style="hanging">
            <t hangText="IPv6 destination:">value of OPTION_AFTR_NAME, after
              resolution of the name</t>
            <t hangText="IPv6 source:">derived from the IPv6 destination by
              applying Default Address Selection <xref target="RFC3484"/></t>
            <t hangText="IPv4 source:">192.0.0.2</t>
            <t hangText="IPv4 destination:">192.0.0.1</t>
          </list>
        </t>

        <t>The IPv4 addresses correspond to the well-known B4 and AFTR addresses
          defined in Section 5.7 of <xref target="RFC6333"/>.</t>

      </section>

      <section title="Configuration of the NAT44">

        <t>Once the tunnel is up, the lwB4 sends a PCP MAP request with a
          PORT_SET option. The request is sent inside the tunnel to 192.0.0.1.
          The source is accordingly set to 192.0.0.2.</t>

        <t>The MAP request's Internal Port is set to 1 and the PORT_SET option's
          Port Set Size field is set to 65535, indicating that the lwB4 is
          prepared to accept a maximal size port set.  Practically, the server
          will reply with a port set size corresponding to its
          configuration.
          <list style="hanging">
            <t hangText="Note:">Since there is no NAT in the lwAFTR, the
              internal port is always equal to the external port. The PCP server
              cannot change the internal port that the client sends. How can we
              overcome this? Add an offset parameter in the PORT_SET option?</t>
          </list>
        </t>

        <t>The PORT_SET option's P bit is set to 0.</t>

        <t>When a success response is received from the PCP server, the lwB4
          extracts the external IPv4 address and port set from the response and
          uses them to configure its NAT44 function as described in <xref
            target="I-D.ietf-softwire-lw4over6"/>. The lwB4 is now
          provisioned.</t>

        <t>The lwB4 needs to periodically refresh the port set it obtained with
          PCP as described in <xref target="RFC6887"/> section 15 for as long as
          the lw4over6 tunnel is to be operational.</t>

      </section>

      <section title="PCP Proxy">

        <t>The lwB4 SHOULD implement a back-to-back PCP server-client. The PCP
          port-set client in lwB4 would get a public address and port-set from
          the PCP port-set server, and then the PCP server in the lwB4 will
          setup the mapping for the host behind the lwB4 and response with PCP
          client.</t>

        <t>The lwB4 MAY also implement a PCP proxy in case the host initiates a
          port-set request directly. It would forward the port-set request to
          PCP server to get a new port-set mapping or refresh an existing
          mapping.</t>

      </section>
      
      <section title="Failover Mechanism">
        <t>This document considers two failover mechanisms: ICMP and PCP ANNOUNCE. 
       In the ICMP case, when the lwB4 receives an ICMP error message from the lwAFTR, 
       the lwB4 MAY re-initiate the dynamic port-restricted provisioning process. 
       The detailed ICMP processing is introduced in <xref
       target="I-D.ietf-softwire-lw4over6"/>. </t>
       
       <t>In the PCP case, when the lwAFTR receives traffic it doesn't have before, 
       lwAFTR MAY send back a PCP unicast ANNOUNCE message. The lwB4 then will re-initiate 
       the PCP Port-set request after receiving the ANNOUNCE message. In the case when 
       there are large amount of lwB4s, an optimization of this mechanism MAY be needed to
       achieve fast failure recovery. Since it is layer 2 network between lwB4 and BNG, 
       A BNG device MAY act a PCP proxy to receive unicast ANNOUNCE message from lwAFTR. 
       It will then replace the unicast address of itself with the lwb4's multicast 
       address and sends multicast ANNOUNCE message to the lwB4s.</t>
 
     </section>    
    </section>

    <section title="Security Considerations">

      <t>TO BE COMPLETED</t>
      <!-- Tina says: refert to RFC6887 section 18 -->

    </section>

    <section title="IANA Considerations">

      <t>This document has no IANA actions.</t>

    </section>

    <section title="Acknowledgements">

      <t>Special thanks to Qiong Sun for her many contributions to this
        document.</t>

      <t>The authors would like to thank the following individuals who have
        participated in the drafting, review, and discussion of this memo:
        Jean-Philippe Dionne, Marc Blanchet, and Tina Tsou.</t>

    </section>

  </middle>

  <back>

    <references title="Normative References">

      <reference anchor='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='17491' 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='RFC3484'>

        <front>
          <title>Default Address Selection for Internet Protocol version 6 (IPv6)</title>
          <author initials='R.' surname='Draves' fullname='R. Draves'>
            <organization /></author>
          <date year='2003' month='February' />
          <abstract>
            <t>This document describes two algorithms, for source address selection and for destination address selection.  The algorithms specify default behavior for all Internet Protocol version 6 (IPv6) implementations.  They do not override choices made by applications or upper-layer protocols, nor do they preclude the development of more advanced mechanisms for address selection.  The two algorithms share a common context, including an optional mechanism for allowing administrators to provide policy that can override the default behavior.  In dual stack implementations, the destination address selection algorithm can consider both IPv4 and IPv6 addresses - depending on the available source addresses, the algorithm might prefer IPv6 addresses over IPv4 addresses, or vice-versa.  All IPv6 nodes, including both hosts and routers, must implement default address selection as defined in this specification. [STANDARDS-TRACK]</t></abstract></front>

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

      <reference anchor='RFC6334'>

        <front>
          <title>Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite</title>
          <author initials='D.' surname='Hankins' fullname='D. Hankins'>
            <organization /></author>
          <author initials='T.' surname='Mrugalski' fullname='T. Mrugalski'>
            <organization /></author>
          <date year='2011' month='August' />
          <abstract>
            <t>This document specifies a DHCPv6 option that is meant to be used by a Dual-Stack Lite Basic Bridging BroadBand (B4) element to discover the IPv6 address of its corresponding Address Family Transition Router (AFTR). [STANDARDS-TRACK]</t></abstract></front>

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

      <reference anchor='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='I-D.ietf-pcp-port-set'>
        <front>
          <title>Port Control Protocol (PCP) Extension for Port Set Allocation</title>

          <author initials='Q' surname='Sun' fullname='Qiong Sun'>
            <organization />
          </author>

          <author initials='M' surname='Boucadair' fullname='Mohamed Boucadair'>
            <organization />
          </author>

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

          <author initials='C' surname='Zhou' fullname='Cathy Zhou'>
            <organization />
          </author>

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

          <author initials='S' surname='Perreault' fullname='Simon Perreault'>
            <organization />
          </author>

          <date month='March' day='31' year='2013' />

          <abstract><t>This document defines an extension to PCP allowing clients to manipulate sets of ports as a whole.  This is accomplished by a new MAP option: PORT_SET.</t></abstract>

        </front>

        <seriesInfo name='Internet-Draft' value='draft-ietf-pcp-port-set-00' />
        <format type='TXT'
          target='http://www.ietf.org/internet-drafts/draft-ietf-pcp-port-set-00.txt' />
      </reference>

      <reference anchor='I-D.ietf-softwire-lw4over6'>
        <front>
          <title>Lightweight 4over6: An Extension to the DS-Lite Architecture</title>

          <author initials='Y' surname='Cui' fullname='Yong Cui'>
            <organization />
          </author>

          <author initials='Q' surname='Sun' fullname='Qiong Sun'>
            <organization />
          </author>

          <author initials='M' surname='Boucadair' fullname='Mohamed Boucadair'>
            <organization />
          </author>

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

          <author initials='Y' surname='Lee' fullname='Yiu Lee'>
            <organization />
          </author>

          <author initials='I' surname='Farrer' fullname='Ian Farrer'>
            <organization />
          </author>

          <date month='April' day='10' year='2013' />

          <abstract><t>DS-Lite [RFC6333] describes an architecture for transporting IPv4 packets over an IPv6 network.  This document specifies an extension to DS-Lite called Lightweight 4over6 which moves the Network Address Translation function from the DS-Lite AFTR to the B4, removing the requirement for a Carrier Grade NAT function in the AFTR.  This reduces the amount of centralized state that must be held to a per- subscriber level.  In order to delegate the NAPT function and make IPv4 Address sharing possible, port-restricted IPv4 addresses are allocated to the B4s.</t></abstract>

        </front>

        <seriesInfo name='Internet-Draft' value='draft-ietf-softwire-lw4over6-00' />
        <format type='TXT'
          target='http://www.ietf.org/internet-drafts/draft-ietf-softwire-lw4over6-00.txt' />
      </reference>

    </references>

    <references title="Informative References">

      <reference anchor='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>

    </references>

  </back>

</rfc>
