<?xml version='1.0'?>
<?xml-stylesheet type='text/xsl' 
href='http://xml.resource.org/authoring/rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd' [
<!ENTITY rfc1918 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1918.xml'>
<!ENTITY rfc2119 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY rfc2131 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2131.xml'>
<!ENTITY rfc2464 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2464.xml'>
<!ENTITY rfc3344 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3344.xml'>
<!ENTITY rfc3748 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3748.xml'>
<!ENTITY rfc5193 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5193.xml'>
<!ENTITY rfc5191 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5191.xml'>
<!ENTITY rfc5872 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5872.xml'>
] >
<?rfc iprnotified="yes" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc inline="no"?>

<rfc ipr='trust200811' category='std' docName='draft-yegin-pana-unspecified-addr-03'>
  <front>
    <title abbrev="PANA with IPv4 Unspecified Address">
      Protocol for Carrying Authentication for Network Access (PANA) with IPv4 Unspecified Address
    </title>

    <author initials="A." surname="Yegin"
    fullname="Alper Yegin">
    <organization abbrev="Samsung">
      Samsung
    </organization>
    <address>
	<postal>
	  <city>Istanbul</city>
	  <country>Turkey</country>
	</postal>
	<email>alper.yegin@yegin.org</email>
      </address>
    </author>

  <author initials="Y." surname="Ohba"
    fullname="Yoshihiro Ohba">
    <organization abbrev="Toshiba">
      Toshiba Corporate Research and Development Center
    </organization>
    <address>
	<postal>
	  <street>1 Komukai-Toshiba-cho</street>
	  <city>Saiwai-ku, Kawasaki</city>
	  <region>Kanagawa</region>
	  <code>212-8582</code>
	  <country>Japan</country>
	</postal>
	<phone>+81 44 549 2230</phone>
	<email>yoshihiro.ohba@toshiba.co.jp</email>
    </address>
  </author>

  <author initials="L." surname="Morand"
    fullname="Lionel Morand">
    <organization abbrev="Orange Labs">
      Orange Labs
    </organization>
    <address>
	<phone>+33 1 4529 62 57</phone>
	<email>Lionel.morand@orange-ftgroup.com</email>
    </address>
  </author>

  <author initials="J." surname="Kaippallimalil"
    fullname="John Kaippallimalil">
    <organization abbrev="Huawei USA">
      Huawei USA
    </organization>
    <address>
	<postal>
	  <street>1700 Alma Dr., Suite 500</street>
	  <city>Plano</city>
	  <region>TX</region>
	  <code>75082</code>
	  <country>USA</country>
	</postal>
	<phone>+1 214 606 2005</phone>
	<email>jkaippal@huawei.com</email>
    </address>
  </author>

    <date month="September" year="2010"/>
    <workgroup>Network Working Group</workgroup>

    <abstract>
      <t>
         This document defines how PANA client (PaC) can perform PANA authentication prior to configuring an IP address. 
      </t>
    </abstract>
  </front>
  <middle>
    <section title='Introduction'>
      <t>
        PANA (Protocol for carrying Authentication for Network Access) <xref target='RFC5191'/> as a UDP-based protocol operates with the assumption that the PANA client (PaC) is already configured with an IP address.  Private IPv4, globally-routable IPv4 <xref target='RFC1918'/> or IPv6, IPv4 or IPv6 link-local are the types of addresses that can be configured by PaCs prior to running PANA <xref target='RFC5193'/>.
      </t>
      <t>
        In case the PaC and the PANA Authentication Agent (PAA) are on the same IP subnet where all hosts in the subnet can be reached in one routing hop, the PaC can run PANA with the PAA prior to configuring an IP address. 
      </t>
      <t>
        This document defines an extension of PANA to allow the PaC to use 
IPv4 unspecified address (0.0.0.0) until it gets authenticated/authorized; and configures an IP address afterwards (possibly using DHCP).  Such a feature is already available in Mobile IPv4 <xref target='RFC3344'/> where MN can use unspecified IPv4 address with Mobile IP protocol until it is assigned a home address, and also DHCP <xref target='RFC2131'/>.
      </t>
      <t>
This extension is defined only as a solution for use cases in which
PANA authentication is required prior to any kind of IP address
allocation or configuration.  It is not intended to become the default
mode of operation for PANA.
</t>
      <section title="Specification of Requirements">
        <t>
          In this document, several words are used to signify the
          requirements of the specification.  These words are often
          capitalized.  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>
      </section>
    </section>
    <section anchor='section-details' title='Details'>
      <t>
        <xref target='figure-call-flow'/> is an example call flow that illustrates use of unspecified IPv4 address with the PaC during PANA authentication.  Note that there can be other ways for combining DHCP and PANA call flows.
      </t>
      <figure anchor='figure-call-flow' 
	title='Example Call Flow for PANA with IPv4 Unspecified Address'>
        <artwork xml:space="preserve"><![CDATA[
           PaC                                  PAA                  AAA

            |                                    |                    |
            |                                    |                    |
            |                                    |                    |
            |--1. PANA Client initiation(Token)->|                    |
            |                                    |                    |
            |<-2. PANA Auth Req(Token)-----------|                    |
            |                                    |                    |
            |--3. PANA Auth Ans ---------------->|                    |
            |                                    |                    |
            |                                    |-4. RADIUS Access ->|
            |                                    |    Request (EAP)   |
            |                                    |                    |
            |                                    |<-5. RADIUS Access--|
            |                                    |     (EAP Success)  |
            |<-6. PANA Auth Req -----------------|                    |
            |                                    |                    |
            |--7. PANA Auth Ans ---------------->|                    |
            |                                    |                    |
            |--8. DHCP Discover----------------->|                    |
            |                                    |                    |
            |<-9. DHCP Offer---------------------|                    |
            |                                    |                    |
            |--10. DHCP Request----------------->|                    |
            |                                    |                    |
            |<-11. DHCP Ack----------------------|                    |
            |                                    |                    |
            |<-12. IP session data traffic---------------->           |
            |                                    |                    |
]]>
        </artwork>
      </figure>
      <t>
        Step 1: The PaC initiates PANA by sending a broadcasted PCI carrying 
a Token  AVP that contains a random value generated by the PaC.
      </t>
      <t>
        The source IPv4 address of the PCI is set to 0.0.0.0.  The
      destination IPv4 address is set to 255.255.255.255.
      </t>
      <t>
        Step 2: The PAA responds with a PAR message that includes the token 
   generated by the PaC.  The PAR message has its source IPv4 address set to the PAA's IP address, and the destination IPv4 address is set to 255.255.255.255.  If the PAA is capable of retrieving the PaC's L2 address from incoming PCI, then the PAR is L2-unicast using that L2 address.  Otherwise, the PAR message will be L2-broadcast.
      </t>
      <t>
        The PaC discovers the PAA's IPv4 address when it receives the PAR
      message.
      </t>
      <t>
        Step 3: The PaC sends the PAN message to the PAA's newly discovered
      IPv4 address.
      </t>
      <t>
        Steps 4-7: PANA and RADIUS carrying out the selected EAP method.
      </t>
      <t>
        Steps 8-11: Now that the PaC is authenticated, it
      proceeds to configuring service IP address using DHCPv4.  As soon
      as the new IPv4 address is confirmed by the DHCPACK, the PaC
      can stop using the unspecified address.  
      </t>
      <t>
        Step 12: The PaC can transmit and receive IP data packets
      using its IP address.
      </t>
      <t>
        A PAA implementation may not be capable of retrieving the PaC's L2
   address from L2 header of the incoming PANA messages, or be able to
   send a L2-unicast even if it could retrieve the address.  In such a
   case, the PAA sends PANA messages as L2-broadcast.  In order to
   prevent other PaCs from processing the messages destined for a
   specific PaC, each PaC is required to supply a randomly generated token as a
   payload AVP to PCI and expect it to be echoed back by the PAA in the
   initial PAR.  Token AVP is defined for this purpose.  
      </t>
      <t>
        Note that any message beyond Step 2 would include the PAA-assigned
   and PaC-acknowledged PANA Session Id, hence use of Token AVP is 
   not needed for those messages.
      </t>
    </section>
    <section anchor='section-pac-behavir' title='PaC Behavior'>
      <t>
        A PaC SHALL use unspecified address as its source IP address until it configures another IP address.  The PaC SHALL send a PCI carrying a Token AVP.  The PaC SHOULD NOT include a Token AVP in any other message. 
      </t>
      <t>
        The PaC SHALL silently drop any PAR that carries a Token AVP whose token value does not match the one contained in the PCI sent by the PaC.
      </t>
      <t>
        The PaC, before it sends the first PAN to the PAA, SHALL silently drop any PAR that is L2-broadcast and without carrying a Token AVP.
      </t>
      <t>
        Any legacy PaC that does not implement this specification will automatically drop the incoming PAR that carries the Token AVP as this is an unrecognized AVP. This is the standard behavior defined in <xref target='RFC5191'/>.
      </t>
    </section>
    <section anchor='section-paa-behavir' title='PAA Behavior'>
      <t>
        If a PAA receives a PCI whose source IP address is unspecified but that does not carry a Token AVP, then it SHALL drop the PCI.  The PAA SHALL ignore a Token AVP if it is contained in any message other than PCI.  
      </t>
      <t>
        When the PAA needs to send a packet to a PaC that is using an unspecified IP address, then the PAA shall set the destination IP address to 255.255.255.255. The PAA SHOULD set the destination L2 address to the source L2 address retrieved from the incoming PaC packet, when possible; otherwise set to L2 broadcast address.  If this is the very first PAR message sent to L2 broadcast address in response to a PCI message containing a Token AVP, then the PAA SHALL include a Token AVP copied from the PCI.  The PAA SHOULD NOT include a Token AVP in any other PANA message, as an already-assigned PANA Session Id serves the need.  
      </t>
      <t>
        The PAA SHALL set the 'I' (IP Reconfiguration) bit of PAR messages in authentication and authorization phase so that the PaC proceeds to IP address configuration.
      </t>
      <t>
        Any legacy PAA that does not implement this specification would automatically drop the incoming PCI that carries the Token AVP as this is an unrecognized AVP. This is the standard behavior defined in <xref target='RFC5191'/>.
      </t>
    </section>
    <section anchor='section-avp' title='AVP Definition'>
      <t>
        This document defines one new AVP as described below.
      </t>
      <section anchor='section-token-avp' title='Token AVP'>
        <t>
          The Token AVP (AVP Code TBD) is of type Unsigned64 containing a random value generated by the PaC.  
        </t>
      </section>
    </section>
    <section title='Message Size Considerations'>
      <t>
        Since IP fragmentation for IP packets using unspecified
address is prohibited, link-layer MTU needs to be no less
than the IP packet size carrying the largest PANA message in the case where EAP message size is the same as the minimum EAP MTU size (i.e., 1020 octets <xref target='RFC3748'/>).  Such a PANA message is the very first PANA-Auth-Request message in Authentication and Authorization phase carrying the following AVPs.
      </t>
      <list style='symbols'>
        <t>
          An EAP-Payload AVP that carries an EAP-Request of size being
equal to the minimum EAP MTU size.  The size of such an AVP is 1020 + 8 = 1028 octets.
        </t>
        <t>
          A Nonce AVP that carries the largest nonce of size 256
octets.  The size of such an AVP is 256 + 8 = 264 octets.
        </t>
        <t>
          An Integrity-Algorithm AVP (12 octets) 
        </t>
        <t>
          A PRF-Algorithm AVP (12 octets) 
        </t>
        <t>
          A Token AVP (16 octets)
        </t>
      </list>
      <t>
        In this case, the PANA message size including PANA header (16 octets), UDP header (8 octets) and IPv4 header (20 octets) is 1028 + 264 + 12 + 12 + 16 + 16 + 8 + 20 = 1376 octets.  Therefore, the link-layer MTU size for IP packets MUST be no less than 1376 octets when unspecified IPv4 address is used for PANA.  Note that Ethernet (MTU = 1500 octets) meets this requirement.
      </t>
      <t>
        PANA as an EAP lower-layer reports the EAP MTU to the EAP layer, so that EAP
methods can perform appropriate fragmentation <xref target='RFC3748'/>.  The EAP MTU is calculated as follows:
      </t>
      <t>
        EAP_MTU = L2_MTU - 356
      </t>
      <t>
        In the above formula, the value of 356 is the PANA overhead (IP, UDP and PANA headers, and PANA AVPs except for the EAP-Payload AVP payload).
      </t>
    </section>
    <section title='Security Considerations'>
    <t>
      When the PAA is not capable of L2-unicasting PANA messages to the target PaC, other nodes on the same subnet can receive those messages. This may pose a risk if there is any confidential data exposed in the messages. Typically no such exposure exists as PANA, EAP, an EAP methods are defined in a way they can also be used in wireless networks where snooping is always a possibility.
    </t>
    </section>
    <section title='IANA Considerations'>
      <t>
        As described in <xref target='section-token-avp'/> and
        following the new IANA allocation policy on PANA message <xref
        target='RFC5872'/>, a new AVP Code for Token AVP needs to be assigned by IANA.
      </t>
    </section>
    <section title='Acknowledgments'>
      <t>
        TBD.
      </t>
    </section>
  </middle>
  <back>
    <references title='Normative References'>
      &rfc5191; &rfc5193; &rfc3748; &rfc5872;
    </references>
    <references title='Informative References'>
      &rfc1918; &rfc2119; &rfc2131; &rfc2464; &rfc3344;
    </references>
  </back>
</rfc>
