<?xml version="1.0"?>

<!-- edited. used xml2rfc then strip-id-references.xsl. -->
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc rfcedstyle="yes" ?>
<?rfc toc="yes" ?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc number="XXXX" category="info" obsoletes="" updates="">
  <front>
    <title>Design of the MOBIKE Protocol</title>
    <author initials="T." surname="Kivinen" fullname="Tero Kivinen">
      <organization>Safenet, Inc.</organization>
      <address>
        <postal>
          <street>Fredrikinkatu 47</street>
	  <code>FI-00100</code>
  	  <city>HELSINKI</city>
	  <country>FI</country>
        </postal>
        <email>kivinen@safenet-inc.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="Siemens">Siemens</organization>
      <address>
        <postal>
	  <street>Otto-Hahn-Ring 6</street>
	  <city>Munich</city>
	  <region>Bavaria</region>
	  <code>81739</code>
	  <country>Germany</country>
	</postal>
	<email>Hannes.Tschofenig@siemens.com</email>
	<uri>http://www.tschofenig.com</uri>
      </address>
    </author>
    <date month="July" year="2006"/>
    <area>Security</area>
    <workgroup>IKEv2 Mobility and Multihoming (mobike)</workgroup>
    <abstract>
      <t> The MOBIKE (IKEv2 Mobility and Multihoming) protocol is an
          extension of the Internet Key Exchange Protocol
          version 2 (IKEv2). These extensions should enable an
          efficient management of IKE and IPsec Security Associations
          when a host possesses multiple IP addresses and/or where IP
          addresses of an IPsec host change over time (for example,
          due to mobility).</t>
      <t> This document discusses the involved network entities and
          the relationship between IKEv2 signaling and information
          provided by other protocols. Design decisions for the MOBIKE
          protocol, background information, and discussions within the
          working group are recorded. </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" title="Introduction">
      <t> The purpose of IKEv2 is to mutually authenticate two hosts,
          to establish one or more IPsec Security Associations (SAs)
          between them, and subsequently to manage these SAs (for
          example, by rekeying or deleting). IKEv2 enables the hosts
          to share information that is relevant to both the usage of
          the cryptographic algorithms that should be employed (e.g.,
          parameters required by cryptographic algorithms and session
          keys) and to the usage of local security policies, such as
          information about the traffic that should experience
          protection.</t>
      <t> IKEv2 assumes that an IKE SA is created implicitly between
          the IP address pair that is used during the protocol
          execution when establishing the IKEv2 SA. This means that,
          in each host, only one IP address pair is stored for the
          IKEv2 SA as part of a single IKEv2 protocol session, and,
          for tunnel mode SAs, the host places this single pair in
          the outer IP headers. Existing IPsec documents make no
          provision to change this pair after an IKE SA is created
          (except for dynamic address update of NAT-T).</t>
      <t> There are scenarios where one or both of the IP addresses of
          this pair may change during an IPsec session. In principle,
          the IKE SA and all corresponding IPsec SAs could be
          re-established after the IP address has changed. However,
          this is a relatively expensive operation, and it can be
          problematic when such changes are frequent. Moreover, manual
          user interaction (for example, when using human-operated
          token cards (SecurID)) might be required as part of the
          IKEv2 authentication procedure. Therefore, an automatic
          mechanism is needed that updates the IP addresses associated
          with the IKE SA and the IPsec SAs. The MOBIKE protocol
          provides such a mechanism.
          </t>
      <t> The MOBIKE protocol is assumed to work on top of IKEv2 <xref target="RFC4306" pageno="false" format="default"/>. As IKEv2 is built on the
          architecture described in RFC2401bis <xref target="RFC4301" pageno="false" format="default"/>, all protocols
          developed within the MOBIKE working group must be compatible
          with both IKEv2 and the architecture described in
          RFC4301. This document does not discuss mobility and
          multi-homing support for IKEv1 <xref target="RFC2409" pageno="false" format="default"/> or
          the IPsec architecture described in RFC 2401 <xref target="RFC2401" pageno="false" format="default"/>.</t>
      <t> This document is structured as follows: After 
          some important terms are introduced in <xref target="terminology" pageno="false" format="default"/>, a
          number of relevant usage scenarios are discussed in <xref target="scenarios" pageno="false" format="default"/>. <xref target="scope" pageno="false" format="default"/> describes the
          scope of the MOBIKE protocol. <xref target="design-considerations" pageno="false" format="default"/> discusses design
          considerations affecting the MOBIKE protocol. <xref target="details" pageno="false" format="default"/> investigates details regarding the MOBIKE
          protocol. Finally, this document concludes in <xref target="security-considerations" pageno="false" format="default"/> with security
          considerations.</t>
    </section>
    <section anchor="terminology" title="Terminology">
      <t> This section introduces the terminology that is used in this
          document.</t> 


<?rfc compact="no" ?>
        <list style="hanging">
          <t hangText="Peer">
            <vspace blankLines="1"/>A peer is an IKEv2 endpoint. In
            addition, a peer implements the MOBIKE extensions, defined
            in <xref target="RFC4555" pageno="false" format="default"/>. </t>
	  <t hangText="Available address">
	    <vspace blankLines="1"/> An address is said to be
            available if the following conditions are met:
	    <list style="symbols">  
	      <t> The address has been assigned to an
	          interface.</t> 
	      <t> If the address is an IPv6 address, we additionally
	          require (a) that the address is valid as defined in
	          RFC 2461 <xref target="RFC2461" pageno="false" format="default"/>, and (b) that the
	          address is not tentative as defined in RFC 2462
	          <xref target="RFC2462" pageno="false" format="default"/>. In other words, we require
	          the address assignment to be complete.<vspace blankLines="1"/> Note that this explicitly allows an
	          address to be optimistic as defined in <xref target="RFC4429" pageno="false" format="default"/>.</t>
              <t> If the address is an IPv6 address, it is a global
	          unicast or unique site-local address, as defined in
	          <xref target="RFC4193" pageno="false" format="default"/>.
	          That is, it is not an IPv6 link-local address.</t>
	      <t> The address and interface is acceptable for sending
	          and receiving traffic according to a local
	          policy.</t>
            </list>


            This definition is taken from <xref target="WIP-Ark06" pageno="false" format="default"/> and
	    adapted for the MOBIKE context.
	    </t>
	  <t hangText="Locally operational address">
	    <vspace blankLines="1"/>An address is said to be locally
	    operational if it is available and its use is locally
	    known to be possible and permitted. This definition is
	    taken from <xref target="WIP-Ark06" pageno="false" format="default"/>. </t>
           <t hangText="Operational address pair">
             <vspace blankLines="1"/> A pair of operational addresses
	     are said to be an operational address pair if and only
	     if bidirectional connectivity can be shown between the
	     two addresses. Note that sometimes it is necessary to
	     consider connectivity on a per-flow level between two
	     endpoints. This differentiation might be necessary to
	     address certain Network Address Translation types or
	     specific firewalls. This definition is taken from <xref target="WIP-Ark06" pageno="false" format="default"/> and
	     adapted for the MOBIKE context. Although it is possible
	     to further differentiate unidirectional and bidirectional
	     operational address pairs, only bidirectional
	     connectivity is relevant to this document, and
	     unidirectional connectivity is out of scope. </t>
           <t hangText="Path">
	     <vspace blankLines="1"/>The sequence of routers traversed
	     by the MOBIKE and IPsec packets exchanged between the two
	     peers. Note that this path may be affected not only by
	     the involved source and destination IP addresses, but
	     also by the transport protocol. Since MOBIKE and IPsec
	     packets have a different appearance on the wire, they
	     might be routed along a different path, for example, due
	     to load balancing. This definition is taken from <xref target="RFC2960" pageno="false" format="default"/> and adapted to the MOBIKE context.
	     </t>
           <t hangText="Current path">
             <vspace blankLines="1"/> The sequence of routers
	     traversed by an IP packet that carries the default source
	     and destination addresses is said to be the Current Path.
	     This definition is taken from <xref target="RFC2960" pageno="false" format="default"/>
	     and adapted to the MOBIKE context. </t>
           <t hangText="Preferred address">
             <vspace blankLines="1"/> The IP address of a peer to
	     which MOBIKE and IPsec traffic should be sent by default.
	     A given peer has only one active preferred address at a
	     given point in time, except for the small time period
	     where it switches from an old to a new preferred address.
	     This definition is taken from <xref target="WIP-Nik06" pageno="false" format="default"/> and adapted to the MOBIKE
	     context. </t>
            <t hangText="Peer address set">
	      <vspace blankLines="1"/> We denote the two peers of a
	      MOBIKE session by peer A and peer B. A peer address set
	      is the subset of locally operational addresses of peer A
	      that is sent to peer B. A policy available at peer A
	      indicates which addresses are included in the peer
	      address set. Such a policy might be created either
	      manually or automatically through interaction with other
	      mechanisms that indicate new available addresses. </t>
	    <t hangText="Bidirectional address pair">
	      <vspace blankLines="1"/> The address pair, where traffic
	      can be sent to both directions, simply by reversing
	      the IP addresses. Note that the path of the packets
	      going to each direction might be different. </t>
            <t hangText="Unidirectional address pair">
	      <vspace blankLines="1"/> The address pair, where traffic
	      can only be sent in one direction, and reversing the IP
	      addresses and sending reply back does not work. </t>
        </list>

<?rfc compact="yes" ?>

      <t> For mobility-related terminology (e.g., Make-before-break or
          Break-before-make), see <xref target="RFC3753" pageno="false" format="default"/>.</t>
    </section>
    <section anchor="scenarios" title="Scenarios">
      <t> In this section, we discuss three typical usage scenarios for
          the MOBIKE protocol.</t>
      <section anchor="mobility-scenario" title="Mobility Scenario">
       <t> <xref target="mobility-fig" pageno="false" format="default"/> shows a break-before-make
           mobility scenario where a mobile node (MN) changes its point of
           network attachment. Prior to the change, the mobile node
           had established an IPsec connection with a security gateway
           that offered, for example, access to a corporate network.
           The IKEv2 exchange that facilitated the setup of the IPsec
           SA(s) took place over the path labeled as 'old path'. The
           involved packets carried the MN's "old" IP address and were
           forwarded by the "old" access router (OAR) to the security
           gateway (GW).</t>
       <t> When the MN changes its point of network attachment, it
           obtains a new IP address using stateful or stateless
           address configuration. The goal of MOBIKE, in this
           scenario, is to enable the MN and the GW to continue using
           the existing SAs and to avoid setting up a new IKE SA. A
           protocol exchange, denoted by 'MOBIKE Address Update',
           enables the peers to update their state as necessary. </t>
       <t> Note that in a break-before-make scenario the MN obtains
           the new IP address after it can no longer be reached at the
           old IP address. In a make-before-break scenario, the MN is,
           for a given period of time, reachable at both the old and
           the new IP address. MOBIKE should work in both of the above
           scenarios.
	   <figure anchor="mobility-fig" title="Mobility Scenario">
             <artwork xml:space="preserve" name="" type="" src="" width="" height="">
                       (Initial IKEv2 Exchange)
                 &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;v
    Old IP   +--+        +---+                    v
    address  |MN|------&gt; |OAR| -------------V     v
             +--+        +---+ Old path     V     v
              .                          +----+   v&gt;&gt;&gt;&gt;&gt; +--+
              .move                      | R  | -------&gt; |GW|
              .                          |    |    &gt;&gt;&gt;&gt;&gt; |  |
              v                          +----+   ^      +--+
             +--+        +---+ New path     ^     ^
    New IP   |MN|------&gt; |NAR|--------------^     ^
    address  +--+        +---+                    ^
                 &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;^
                       (MOBIKE Address Update)

           ---&gt; = Path taken by data packets
           &gt;&gt;&gt;&gt; = Signaling traffic (IKEv2 and MOBIKE)
           ...&gt; = End host movement
</artwork>
	   </figure>
	   </t>
      </section>
      <section anchor="multihoming-scenario" title="Multihoming Scenario">
        <t> Another MOBIKE usage scenario is depicted in <xref target="multihoming-fig" pageno="false" format="default"/>. In this scenario, the MOBIKE
	    peers are equipped with multiple interfaces (and multiple
	    IP addresses). Peer A has two interface cards with two IP
	    addresses, IP_A1 and IP_A2, and peer B has two IP
	    addresses, IP_B1 and IP_B2. Each peer selects one of its
	    IP addresses as the preferred address, which is used for
	    subsequent communication. Various reasons (e.g., hardware
	    or network link failures) may require a peer to switch
	    from one interface to another.
	    <figure anchor="multihoming-fig" title="Multihoming Scenario">
	      <artwork xml:space="preserve" name="" type="" src="" width="" height="">
  +------------+                                  +------------+
  | Peer A     |           *~~~~~~~~~*            | Peer B     |
  |            |&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; * Network   *&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;|            |
  |      IP_A1 +--------&gt;+             +---------&gt;+ IP_B1      |
  |            |         |             |          |            |
  |      IP_A2 +********&gt;+             +*********&gt;+ IP_B2      |
  |            |          *           *           |            |
  +------------+           *~~~~~~~~~*            +------------+

           ---&gt; = Path taken by data packets
           &gt;&gt;&gt;&gt; = Signaling traffic (IKEv2 and MOBIKE)
           ***&gt; = Potential future path through the network
                  (if Peer A and Peer B change their preferred
                   address)
</artwork>
	    </figure>
	    </t>
	<t> Note that MOBIKE does not aim to support load balancing
	    between multiple IP addresses. That is, each peer uses
	    only one of the available address pairs at a given point
	    in time. </t>
      </section>
      <section anchor="multihomedlaptop-scenario" title="Multihomed Laptop Scenario">
        <t> The third scenario we consider is about a laptop that
	    has multiple interface cards and therefore several ways to
	    connect to the network. It may, for example, have a fixed
	    Ethernet card, a WLAN interface, a GPRS adaptor, a
	    Bluetooth interface, or USB hardware. Not all interfaces
	    are used for communication all the time for a number of
	    reasons (e.g., cost, network availability, user
	    convenience). The policies that determine which interfaces
	    are connected to the network at any given point in time is
	    outside the scope of the MOBIKE protocol and, as such,
	    this document. However, as the laptop changes its point of
	    attachment to the network, the set of IP addresses under
	    which the laptop is reachable changes too.</t>
	<t> In all of these scenarios, even if IP addresses change due
	    to interface switching or mobility, the IP address
	    obtained via the configuration payloads within IKEv2
	    remain unaffected. The IP address obtained via the IKEv2
	    configuration payloads allow the configuration of the
	    inner IP address of the IPsec tunnel. As such,
	    applications might not detect any change at all.
	    </t>
      </section>
    </section>
    <section anchor="scope" title="Scope of MOBIKE">
      <t> Getting mobility and multihoming actually working requires
          many different components to work together, including
          coordinating decisions between different layers, different
          mobility mechanisms, and IPsec/IKEv2. Most of those aspects
          are beyond the scope of MOBIKE: MOBIKE focuses only on what
          two peers need in order to agree at the IKEv2 level (like new message
          formats and some aspects of their processing) required for
          interoperability. </t>
      <t> The MOBIKE protocol is not trying to be a full mobility
          protocol; there is no support for simultaneous movement or
          rendezvous mechanism, and there is no support for route
          optimization, etc. The design document focuses
          on tunnel mode; everything going inside the tunnel is
          unaffected by the changes in the tunnel header IP address,
          and this is the mobility feature provided by the MOBIKE.
          That is, applications running inside the MOBIKE-controlled
          IPsec tunnel might not detect the movement since their IP
          addresses remain constant. </t>
      <t> The MOBIKE protocol should be able to perform the following
          operations (not all of which are done explictly by the
          current protocol):

<?rfc compact="no" ?>
	  <list style="symbols">
	    <t> Inform the other peer about the peer address set</t>
	    <t> Inform the other peer about the preferred address</t>
	    <t> Test connectivity along a path and thereby detect
	        an outage situation</t>  
	    <t> Change the preferred address</t>
	    <t> Change the peer address set</t>
	    <t> Ability to deal with Network Address Translation
                devices</t>  
	  </list>
<?rfc compact="yes" ?>

          </t>
      <t> <xref target="framework-fig" pageno="false" format="default"/> shows an example protocol
          interaction between a pair of MOBIKE peers. MOBIKE interacts
          with the packet processing module of the IPsec
          implementation using an internal API (such as those based on
          PF_KEY <xref target="RFC2367" pageno="false" format="default"/>). Using this API, the MOBIKE
          module can create entries in the Security Association (SAD)
          and Security Policy Databases (SPD). The packet processing
          module of the IPsec implementation may also interact with
          IKEv2 and MOBIKE module using this API. The content of the
          Security Policy and Security Association Databases
          determines what traffic is protected with IPsec in which
          fashion. MOBIKE, on the other hand, receives information
          from a number of sources that may run both in kernel-mode
          and in user-mode. These sources form the basis on which
          MOBIKE makes decisions regarding the set of available
          addresses, the peer address set, and the preferred address.
          Policies may also affect the selection process.</t>
      <t> The peer address set and the preferred address needs to be
          made available to the other peer. In order to address
          certain failure cases, MOBIKE should perform connectivity
          tests between the peers (potentially over a number of
          different paths). Although a number of address pairs may be
          available for such tests, the most important is the pair
          (source address, destination address) of the current path.
          This is because this pair is selected for sending and
          receiving MOBIKE signaling and IPsec traffic. If a problem
          along this current path is detected (e.g., due to a router
          failure), it is necessary to switch to a new current path. In
          order to be able to do so quickly, it may be helpful to
          perform connectivity tests of other paths periodically. Such
          a technique would also help identify previously
          disconnected paths that become operational again. </t>
      <t> <figure anchor="framework-fig" title="Framework">
            <artwork xml:space="preserve" name="" type="" src="" width="" height="">
  +---------------------+            +----------------+
  |    User-space       |            |                |
  |   Protocols and     |            |   MOBIKE and   |
  | Functions Relevant  |&lt;----------&gt;|  IKEv2 Module  |
  | MOBIKE (e.g., DHCP, |            |                |
  |     policies)       |            +----------------+
  +---------------------+                    ^
             ^                               |
             |                               |        User space
  ++++++++++API++++++++++++++++++++++++++++PF_KEY+++++++++++++++
             |                               |      Kernel space
             |                               v
             |                       +----------------+
             v                       |                |
  +---------------------+            |  IPsec engine  |
  |   Kernel-space      |&lt;----------&gt;| (and databases)|
  |     Protocols       |            |                |
  |    Relevant for     |            +----------------+
  |  MOBIKE (e.g., ND,  |                    ^
  |     DNA, L2)        |&lt;---------------+   |
  +---------------------+                v   v
         ||                          +----------------+
         \/                          |                |
       Inter-  =====================&gt;| IP forwarding, |
       faces   &lt;=====================|input and output|
                                     |                |
                                     +----------------+

      ===&gt; = IP packets arriving/leaving a MOBIKE node
      &lt;-&gt;  = control and configuration operations
</artwork>
          </figure>
          </t>
      <t> Please note that <xref target="framework-fig" pageno="false" format="default"/> illustrates
          an example of how a MOBIKE implementation could work. 
          It serves illustrative purposes only.</t>
    </section>
    <section anchor="design-considerations" title="Design Considerations">
      <t> This section discusses aspects affecting the design of the
          MOBIKE protocol.</t>
      <section title="Choosing Addresses">
        <t> One of the core aspects of the MOBIKE protocol is the
	    selection of the address for the IPsec packets we send.
	    Choosing addresses for the IKEv2 request is a somewhat
	    separate problem. In many cases, they will be the same
	    (and in some design choice they will always be the same
	    and could be forced to be the same by design).
	    </t>
	<section title="Inputs and Triggers">
	  <t> How address changes are triggered is largely beyond the
	      scope of MOBIKE. The triggers can include changes in
	      the set of addresses, various link-layer indications,
	      failing dead peer detection, and changes in preferences
	      and policies. Furthermore, there may be less reliable
	      sources of information (such as lack of IPsec packets
	      and incoming ICMP packets) that do not trigger any
	      changes directly, but rather cause Dead Peer Detection
	      (DPD) to be scheduled earlier and, if it fails, it might
	      cause a change of the preferred address. </t>
	  <t> These triggers are largely the same as for other
	  mobility protocols such as Mobile
	      IP, and they are beyond the scope of MOBIKE. </t>
        </section>
        <section title="Connectivity">
	  <t> There can be two kinds of connectivity "failures": local
	      failures and path failures. Local failures are problems
	      locally at a MOBIKE peer (e.g., an interface error).
	      Path failures are a property of an address pair and
	      failures of nodes and links along this path. MOBIKE does
	      not support unidirectional address pairs. Supporting
	      them would require abandoning the principle of sending
	      an IKEv2 reply to the address from which the request came.
	      MOBIKE decided to deal only with bidirectional address
	      pairs. It does consider unidirectional address pairs as
	      broken and does not use them, but the connection
	      between peers will not break even if unidirectional
	      address pairs are present, provided there is at least
	      one bidirectional address pair MOBIKE can use. </t>
          <t> Note that MOBIKE is not concerned about the
	      actual path used; it cannot even detect if some path is
	      unidirectionally operational if the same address pair
	      has some other unidirectional path back. Ingress filters
	      might still cause such path pairs to be unusable, and in
	      that case MOBIKE will detect that there is no
	      operational address pair. </t>
	  <t> In a sense having both an IPv4 and an IPv6 address is
	      basically a case of partial connectivity (putting both
	      an IPv4 and an IPv6 address in the same IP header does
	      not work). The main difference is that it is known
	      beforehand; there is no need to discover that an
	      IPv4/IPv6 combination does not work. </t>
        </section>

<?rfc needLines="7" ?>
        <section title="Discovering Connectivity">
          <t> To detect connectivity, the MOBIKE protocol needs to
              have a mechanism to test connectivity. If a MOBIKE peer
              receives a reply, it can be sure about the existence of a
              working (bidirectional) address pair. If a MOBIKE peer
              does not see a reply after multiple retransmissions, it
              may assume that the tested address pair is broken. </t>
          <t> The connectivity tests require congestion problems to be
              taken into account because the connection failure might
              be caused by congestion.  The MOBIKE protocol
              should not make the congestion problem worse by sending
              many DPD packets. </t>
        </section>
        <section title="Decision Making">
          <t> One of the main questions in designing the MOBIKE
              protocol was who makes the decisions how to fix a situation
              when failure is detected, e.g., symmetry vs. asymmetry
              in decision making. Symmetric decision making (i.e., both
              peers can make decisions) may cause the different peers
              to make different decisions, thus causing asymmetric
              upstream/downstream traffic. In the mobility case, it is
              desirable that the mobile peer can move both upstream
              and downstream traffic to some particular interface, and
              this requires asymmetric decision making (i.e. only one
              peer makes decisions). </t>
          <t> Working with stateful packet filters and NATs is easier
              if the same address pair is used in both upstream and
              downstream directions. Also, in common cases, only the
              peer behind NAT can actually perform actions to recover
              from the connectivity problems, as the
              other peer might not be able to initiate any connections to
              the peer behind NAT. </t>
        </section>
        <section title="Suggested Approach">
          <t> The working group decided to select a method whereby the
              initiator will decide which addresses are used. As a
              consequence, the outcome is always the same for both
              parties. It also works best with NATs, as the initiator
              is most likely the node that is located behind a NAT.
              </t>
        </section>
      </section>

<?rfc needLines="7" ?>
      <section title="NAT Traversal (NAT-T)">
        <section title="Background and Constraints">
          <t> Another core aspect of MOBIKE is the treatment of
              different NATs and NAPTs. In IKEv2 the tunnel header IP
              addresses are not sent inside the IKEv2 payloads, and
              thus there is no need to do unilateral self-address
              fixing (UNSAF <xref target="RFC3424" pageno="false" format="default"/>). The tunnel
              header IP addresses are taken from the outer IP header
              of the IKE packets; thus, they are already processed by
              the NAT. </t>
          <t> The NAT detection payloads are used to determine whether
              the addresses in the IP header were modified by a NAT
              along the path. Detecting a NAT typically requires UDP
              encapsulation of IPsec ESP packets to be enabled, if
              desired. MOBIKE is not to change how IKEv2 NAT-T works'
              in particular, any kind of UNSAF or explicit interaction
              with NATs (e.g., MIDCOM <xref target="RFC3303" pageno="false" format="default"/> or NSIS
              NATFW NSLP <xref target="WIP-Sti06" pageno="false" format="default"/>)
              is beyond the scope of the MOBIKE protocol. The MOBIKE
              protocol will need to define how MOBIKE and NAT-T are
              used together.
              </t>
          <t> The NAT-T support should also be optional. If the
              IKEv2 implementation does not implement NAT-T, as it is
              not required in some particular environment,
              implementing MOBIKE should not require adding support
              for NAT-T either. </t>
          <t> The property of being behind NAT is actually a property
              of the address pair and thereby of the path taken by a
              packet. Thus, one peer can have multiple IP addresses, and
              some of those might be behind NAT and some might not. </t> 
        </section>
        <section title="Fundamental Restrictions">
          <t> There are some cases that cannot be carried out within
              MOBIKE. One of those cases is when the party
              "outside" a symmetric NAT changes its address to
              something not known by the other peer (and the old
              address has stopped working). It cannot send a packet
              containing the new addresses to the peer because the NAT
              does not contain the necessary state. Furthermore, since
              the party behind the NAT does not know the new IP
              address, it cannot cause the NAT state to be created.
              </t>
          <t> This case could be solved using some rendezvous
              mechanism outside IKEv2, but that is beyond the scope of
              MOBIKE. </t>
        </section>
        <section title="Moving behind a NAT and Back">
          <t> The MOBIKE protocol should provide a mechanism whereby a
              peer that is initially not behind a NAT can move behind
              NAT when a new preferred address is selected. The same
              effect might be accomplished with the change of the
              address pair if more than one path is available (e.g.,
              in the case of a multi-homed host). An impact for the MOBIKE
              protocol is only caused when the currently selected
              address pair causes MOBIKE packets to traverse a NAT.
              </t>
          <t> Similarly, the MOBIKE protocol provides a mechanism to
              detect when a NATed path is changed to a non-NATed path
              with the change of the address pair. </t>
          <t> As we only use one address pair at time, effectively the
              MOBIKE peer is either behind NAT or not behind NAT, but
              each address change can change this situation. Because
              of this, and because the initiator always chooses the
              addresses, it is enough to send keepalive packets only to
              that one address pair. </t>
          <t> Enabling NAT-T involves a few different things. One is
              to enable the UDP encapsulation of ESP packets. Another
              is to change the IKE SA ports from port 500 to port
              4500. We do not want to do unnecessary UDP encapsulation
              unless there is really a NAT between peers, i.e., UDP
              encapsulation should only be enabled when we actually
              detect NAT. On the other hand, as all implementations
              supporting NAT-T must be able to respond to port 4500
              all the time, it is simpler from the protocol point of
              view to change the port numbers from 500 to 4500
              immediately upon detecting that the other end supports
              NAT-T. This way it is not necessary to change ports
              after we later detected NAT, which would have caused
              complications to the protocol. </t>
          <t> If we changed the port only
              after we detected NAT, then the responder would not be
              able to use the IKE and IPsec SAs immediately after
              their address is changed to be behind NAT. Instead, it
              would need to wait for the next packet from the
              initiator to see what IP and port numbers are used after
              the initiator changed its port from 500 to 4500. The
              responder would also not be able to send anything to the
              initiator before the initiator sent something to the
              responder. If we do the port number changing immediately
              after the IKE_SA_INIT and before IKE_AUTH phase, then we
              get the rid of this problem.</t>
        </section>
        <section title="Responder behind a NAT">
          <t> MOBIKE can work in cases where the responder is behind
              static NAT, but the initiator would need to know
              all the possible addresses to which the responder can move.
 That is, the responder cannot move to an address which
              is not known by the initiator, in case initiator
              also moves behind NAT.</t>
          <t> If the responder is behind NAPT, then it might need to
              communicate with the NAT to create a mapping so the
              initiator can connect to it. Those external firewall
              pinhole opening mechanisms are beyond the scope of
              MOBIKE. </t>
          <t> In case the responder is behind NAPT, then finding
              the port numbers used by the responder is outside the
              scope of MOBIKE. </t>
        </section>
        <section title="NAT Prevention" anchor="nat-prevention">
          <t> One new feature created by MOBIKE is NAT prevention.
              If we detect NAT between the peers, we do not allow
              that address pair to be used. This can be used to
              protect IP addresses in cases where the
              configuration knows that there is no NAT between the nodes
              (for example IPv6, or fixed site-to-site VPN). This
              avoids any possibility of on-path attackers modifying
              addresses in headers. This feature means that we
              authenticate the IP address and detect if they were
              changed. As this is done on purpose to break the
              connectivity if NAT is detected, and decided by the
              configuration, there is no need to do UNSAF
              processing.</t>
        </section>
        <section title="Suggested Approach">
          <t> The working group decided that MOBIKE uses NAT-T
              mechanisms from the IKEv2 protocol as much as possible,
              but decided to change the dynamic address update (see
              <xref target="RFC4306" pageno="false" format="default"/>, Section 2.23, second to last
              paragraph) for IKEv2 packets to "MUST NOT" (it would break
              path testing using IKEv2 packets; see <xref target="path-testing" pageno="false" format="default"/>). The working group also decided
              only to send keepalives to the current address pair.
              </t>
        </section>
      </section>
      <section title="Scope of SA Changes">
        <t> Most sections of this document discuss design
            considerations for updating and maintaining addresses in
            the database entries that relate to an IKE SA. However,
            changing the preferred address also affects the entries of
            the IPsec SA database. The outer tunnel header addresses
            (source and destination IP addresses) need to be modified
            according to the current path to allow the IPsec protected
            data traffic to travel along the same path as the MOBIKE
            packets. If the MOBIKE messages and the IPsec protected
            data traffic travel along a different path, then NAT
            handling is severely complicated.</t>
        <t> The basic question is then how the IPsec SAs are changed
            to use the new address pair (the same address pair as the
            MOBIKE signaling traffic). One option is that when the IKE
            SA address is changed, all IPsec SAs associated with
            it are automatically moved along with it to a new address
            pair. Another option is to have a separate exchange to
            move the IPsec SAs separately.</t>
        <t> If IPsec SAs should be updated separately, then a more
            efficient format than the Notify payload is needed to
            preserve bandwidth. A Notify payload can only store one
            SPI per payload. A separate payload could have a list of
            IPsec SA SPIs and the new preferred address. If there is a
            large number of IPsec SAs, those payloads can be quite
            large unless list of ranges of SPI values are supported.
            If we automatically move all IPsec SAs when the IKE SA
            moves, then we only need to keep track of which IKE SA was
            used to create the IPsec SA, and fetch the IP addresses
            from the IKE SA, i.e., there is no need to store IP
            addresses per IPsec SA. Note that IKEv2 <xref target="RFC4306" pageno="false" format="default"/> already requires the
            implementations to keep track of which IPsec SAs are created
            using which IKE SA.</t>
        <t> If we do allow the address set of each IPsec SA to be updated
            separately, then we can support scenarios where the
            machine has fast and/or cheap connections and slow and/or
            expensive connections and wants to allow moving some of
            the SAs to the slower and/or more expensive connection,
            and prevent the move, for example, of the news video
            stream from the WLAN to the GPRS link. </t>
        <t> On the other hand, even if we tie the IKE SA update to the
            IPsec SA update, we can create separate IKE SAs for
            this scenario. For example, we create one IKE SA that has both
            links as endpoints, and it is used for important traffic; then we create another IKE SA which has only the fast
            and/or cheap connection, which is used for that kind
            of bulk traffic.</t>
        <t> The working group decided to move all IPsec SAs implicitly
            when the IKE SA address pair changes. If more granular
            handling of the IPsec SA is required, then multiple IKE
            SAs can be created one for each set of IPsec SAs needed.
            </t>
      </section>
      <section title="Zero Address Set Functionality">
        <t> One of the features that is potentially useful is for the
            peer to announce that it will now disconnect for some
            time, i.e., it will not be reachable at all. For instance,
            a laptop might go to suspend mode. In this case, it could
            send address notification with zero new addresses, which
            would mean that it will not have any valid addresses
            anymore. The responder would
            then acknowledge that notification and could then temporarily disable
            all SAs and therefore stop sending traffic. If any of the
            SAs get any packets, they are simply dropped. This could
            also include some kind of ACK spoofing to keep the TCP/IP
            sessions alive (or simply setting the TCP/IP keepalives
            and timeouts large enough not to cause problems), or it
            could simply be left to the applications, e.g., allow
            TCP/IP sessions to notice if the link is broken. </t>
        <t> The local policy could then indicate how long the peer
            should allow remote peers to remain disconnected.</t>
        <t> From a technical point of view, this would provide
            following two features:

<?rfc compact="no" ?>
            <list style="symbols">
              <t> There is no need to transmit IPsec data traffic.
                  IPsec-protected data can be dropped, which saves
                  bandwidth. This does not provide a functional
                  benefit, i.e., nothing breaks if this feature is not
                  provided. </t>
              <t> MOBIKE signaling messages are also ignored. The
                  IKE SA must not be deleted, and the suspend
                  functionality (realized with the zero address set)
                  may require the IKE SA to be tagged with a lifetime
                  value since the IKE SA should not be kept alive for
                  an undefined period of time. Note that IKEv2 does
                  not require that the IKE SA has a lifetime
                  associated with it. In order to prevent the IKE SA
                  from being deleted, the dead-peer detection mechanism
                  needs to be suspended as well. </t>
            </list>
<?rfc compact="yes" ?>

            </t>
        <t> Due to its complexity and no clear requirement for it, it
	    was decided that MOBIKE does not support this feature.
	    </t>
      </section>
      <section anchor="rrchecks" title="Return Routability Check">
        <t> Changing the preferred address and subsequently using it
            for communication is associated with an authorization
            decision: Is a peer allowed to use this address? Does this
            peer own this address? Two mechanisms have been proposed
            in the past to allow a peer to determine the answer to
            these questions:

<?rfc compact="no" ?>
            <list style="symbols">
              <t> The addresses a peer is using are part of a
                  certificate. <xref target="RFC3554" pageno="false" format="default"/> introduced
                  this approach. If the other peer is, for example, a
                  security gateway with a limited set of fixed IP
                  addresses, then the security gateway may have a
                  certificate with all the IP addresses appearing in
                  the certificate. </t>
              <t> A return routability check is performed by the
                  remote peer before the address is updated in that
                  peer's Security Association Database. This is done
                  in order to provide a certain degree of confidence to
                  the remote peer that the local peer is reachable at the
                  indicated address. </t>
            </list>
<?rfc compact="yes" ?>

            </t>
        <t> Without taking an authorization decision, a malicious peer
            can redirect traffic towards a third party or a black hole.
            </t>
        <t> A MOBIKE peer should not use an IP address provided by
            another MOBIKE peer as a current address without computing
            the authorization decision. If the addresses are part of
            the certificate, then it is not necessary to execute the
            return routability check. The return routability
            check is a form of authorization check, although it
            provides weaker guarantees than the inclusion of the IP
            address as a part of a certificate. If multiple addresses
            are communicated to the remote peer, then some of these
            addresses may be already verified. </t>
        <t> Finally, it would be possible not to execute return
            routability checks at all. In case of indirect change
            notifications (i.e., something we notice from the network,
            not from the peer directly), we only move to the new
            preferred address after successful dead-peer detection
            (i.e., a response to a DPD test) on the new address, which
            is already a return routability check. With a direct
            notification (i.e., notification from the other end
            directly) the authenticated peer may have provided an
            authenticated IP address (i.e., inside IKE encrypted and
            authenticated payload; see <xref target="nat-prevention" pageno="false" format="default"/>). Thus, it is would be possible
            simply to trust the MOBIKE peer to provide a proper IP
            address. In this case, a protection against an internal
            attacker (i.e., the authenticated peer forwarding its
            traffic to the new address) would not provided. On the
            other hand, we know the identity of the peer in that case.
            There might be problems when extensions are added to IKEv2
            that do not require authentication of end points (e.g.,
            opportunistic security using anonymous Diffie-Hellman).
            </t>
        <t> There is also a policy issue of when to schedule a return
            routability check. Before moving traffic? After moving
            traffic?</t>
        <t> The basic format of the return routability check could be
            similar to dead-peer detection, but potential attacks are
            possible if a return routability check does not include
            some kind of a nonce. In these attacks, the valid end point
            could send an address update notification for a third
            party, trying to get all the traffic to be sent there,
            causing a denial-of-service attack. If the return
            routability check does not contain any nonce or other
            random information not known to the other peer, then the other
            peer could reply to the return routability checks even
            when it cannot see the request. This might cause a peer to
            move the traffic to a location where the original
            recipient cannot be reached.</t>
        <t> The IKEv2 NAT-T mechanism does not perform return
            routability checks. It simply uses the last seen source IP
            address used by the other peer as the destination address
	    to which
            to send response packets. An adversary can change those IP
            addresses and can cause the response packets to be sent
            to a wrong IP address. The situation is self-fixing when
            the adversary is no longer able to modify packets and the
            first packet with an unmodified IP address reaches the
            other peer. Mobility environments make this attack more
            difficult for an adversary since the attack requires the
            adversary to be located somewhere on the individual paths
            ({CoA1, ..., CoAn} towards the destination IP address),
            to have a shared path, or, if the adversary is located near
            the MOBIKE client, to follow the user
            mobility patterns. With IKEv2 NAT-T, the genuine client
            can cause third-party bombing by redirecting all the
            traffic pointed to him to a third party. As the MOBIKE
            protocol tries to provide equal or better security than
            IKEv2 NAT-T mechanism, it should protect against these
            attacks.</t>
        <t> There may be return routability information available from
            the other parts of the system too (as shown in <xref target="framework-fig" pageno="false" format="default"/>), but the checks done may have a
            different quality. There are multiple levels for return
            routability checks:

<?rfc compact="no" ?>
            <list style="symbols">
              <t> None; no tests.</t>
              <t> A party willing to answer the return routability
                  check is located along the path to the claimed
                  address. This is the basic form of return
                  routability check. </t>
              <t> There is an answer from the tested address, and that
                  answer was authenticated and integrity- and replay-protected. </t>
              <t> There was an authenticated and integrity- and replay-protected answer from the peer, but it is not
                  guaranteed to originate at the tested address or
                  path to it (because the peer can construct a
                  response without seeing the request).</t>
	    </list>
<?rfc compact="yes" ?>

            </t>
        <t> The return routability checks do not protect against third-party bombing if the attacker is along the path, as the
            attacker can forward the return routability checks to the
            real peer (even if those packets are cryptographically
            authenticated). </t>
        <t> If the address to be tested is carried inside the MOBIKE
            payload, then the adversary cannot forward packets. Thus,
            third-party bombings are prevented (see <xref target="nat-prevention" pageno="false" format="default"/>). </t>
        <t> If the reply packet can be constructed without seeing the
            request packet (for example, if there is no nonce,
            challenge, or similar mechanism to show liveness), then the
            genuine peer can cause third-party bombing, by replying to
            those requests without seeing them at all. </t>
        <t> Other levels might only provide a guarantee that there is
            a node at the IP address that replied to the request.
            There is no indication as to whether or not the reply is
            fresh or whether or not the request may have been
            transmitted from a different source address. </t>

        <section title="Employing MOBIKE Results in Other Protocols">
          <t> If MOBIKE has learned about new locations or verified
              the validity of a remote address through a return
              routability check, can this information be useful for
              other protocols? </t>
          <t> When the basic MOBIKE VPN scenario is considered, the
              answer is no. Transport and application layer protocols
              running inside the VPN tunnel are unaware of the outer
              addresses or their status. </t>
          <t> Similarly, IP-layer tunnel termination at a gateway
              rather than a host endpoint limits the benefits for
              "other protocols" that could be informed -- all
              application protocols at the other side are unaware of
              IPsec, IKE, or MOBIKE. </t>
          <t> However, it is conceivable that future uses or
              extensions of the MOBIKE protocol make such information
              distribution useful. For instance, if transport mode
              MOBIKE and SCTP were made to work together, it would
              potentially be useful for SCTP dynamic address
              reconfiguration <xref target="WIP-Ste06" pageno="false" format="default"/> to learn about the
              new addresses at the same time as MOBIKE. Similarly,
              various IP-layer mechanisms may make use of the fact
              that a return routability check of a specific type has
              been performed. However, care should be exercised in all
              these situations. </t>
          <t> <xref target="WIP-Cro04" pageno="false" format="default"/> discusses the use of
              common locator information pools in a IPv6 multi-homing
              context; it assumes that both transport and IP-layer
              solutions are used in order to support multi-homing, and
              that it would be beneficial for different protocols to
              coordinate their results in some way, for instance, by
              sharing throughput information of address pairs. This
              may apply to MOBIKE as well, assuming it co-exists with
              non-IPsec protocols that are faced with the same or
              similar multi-homing choices.</t>
          <t> Nevertheless, all of this is outside the scope of the
              current MOBIKE base protocol design and may be addressed
              in future work.</t>
        </section>
        <section title="Return Routability Failures">
          <t> If the return routability check fails, we need to tear
              down the IKE SA if we are using IKEv2 INFORMATIONAL
              exchanges to send return routability checks. On the
              other hand, return routability checks can only fail
              permanently if there was an attack by the other end;
              thus, tearing down the IKE SA is a suitable action in
              that case.
              </t>
          <t> There are some cases, where the return routability check
              temporarily fails, that need to be considered here. In
              the first case, there is no attacker, but the selected
              address pair stops working immediately after the address
              update, before the return routability check.
              </t>
          <t> What happens is that the initiator performs the
              normal address update; it succeeds, and then the
              responder starts a return routability check. If the
              address pair has broken down before that, the responder
              will never get back the reply to the return routability
              check. The responder might still be using the old IP
              address pair, which could still work.
              </t>
          <t> The initiator might be still seeing traffic from the
              responder, but using the old address pair. The initiator
              should detect that this traffic is not using the latest
              address pair, and after a while it should start dead
              peer detection on the current address pair. If that
              fails, then it should find a new working address pair
              and update addresses to that. The responder should
              notice that the address pair was updated after the
              return routability check was started and change the
              ongoing return routability check to use the new address
              pair. The result of that return routability check needs
              to be discarded as it cannot be trusted; the packets
              were retransmitted to a different IP address. So
              normally the responder starts a new return routability
              check afterward with the new address pair. </t>
          <t> The second case is where there is an attacker along the
              path modifying the IP addresses. The peers will detect
              this as NAT and will enable NAT-T recovery of changes in
              the NAT mappings. If the attacker is along the path long
              enough for the return routability check to succeed, then
              the normal recovery of changes in the NAT mappings will
              take care of the problem. If the attacker disappears
              before return routability check is finished, but after
              the update, we have a case similar to the last.
              The only difference is that now the dead peer
              detection started by the initiator will succeed because the
              responder will reply to the addresses in the headers,
              not the current address pair. The initiator will then
              detect that the NAT mappings are changed, and it will
              fix the situation by doing an address update.
              </t>
          <t> The important thing for both of these cases is that the
              initiator needs to see that the responder is both alive
              and synchronized with initiator address pair updates.
That is, it is not enough that the responder is sending
              traffic to an initiator; it must also be using the
              correct IP addresses before the initiator can believe it
              is alive and synchronized. From the implementation point
              of view, this means that the initiator must not consider
              packets having wrong IP addresses as packets that prove
              the other end is alive, i.e., they do not reset the
              dead peer detection timers.
	      </t>
        </section>
        <section title="Suggested Approach">
          <t> The working group selected to use IKEv2 INFORMATIONAL
              exchanges as a return routability check, but included a
              random cookie to prevent redirection by an
              authenticated attacker. Return routability checks are
              performed by default before moving the traffic. However,
              these tests are optional. Nodes MAY also perform these
              tests upon their own initiative at other times. </t>
          <t> It is worth noting that the return routability check in
              MOBIKE is different from Mobile IPv6 <xref target="RFC3775" pageno="false" format="default"/>, which does not perform return
              routability operations between the mobile node and its
              home agent at all. </t>
        </section>
      </section>
      <section anchor="tunnelortransport" title="IPsec Tunnel or Transport Mode">
        <t> Current MOBIKE design is focused only on the VPN type
            usage and tunnel mode. Transport mode behavior would also
            be useful and might be discussed in future documents.
 	    </t>
      </section>
    </section>
    <section anchor="details" title="Protocol Details">
      <section title="Indicating Support for MOBIKE">
        <t> In order for MOBIKE to function, both peers must implement
            the MOBIKE extension of IKEv2. If one of the peers does
            not support MOBIKE, then, whenever an IP address changes,
            IKEv2 will have to be re-run in order to create a new IKE
            SA and the respective IPsec SAs. In MOBIKE, a peer needs
            to be confident that its address change messages are
            understood by the other peer. If these messages are not
            understood, it is possible that connectivity between the
            peers is lost.</t>
        <t> One way to ensure that a peer receives feedback on whether
            its messages are understood by the other peer is to use
            IKEv2 messaging for MOBIKE and to mark some messages as
            "critical". According to the IKEv2 specification, either
            such messages have to be understood by the receiver, or
            an error message has to be returned to the sender. </t>
        <t> A second way to ensure receipt of the above-mentioned
            feedback is by using Vendor ID payloads that are exchanged
            during the initial IKEv2 exchange. These payloads would
            then indicate whether or not a given peer supports the
            MOBIKE protocol.</t>
        <t> A third approach would use the Notify payload to indicate
            support of MOBIKE extension. Such Notify payloads are also
            used for indicating NAT traversal support (via
            NAT_DETECTION_SOURCE_IP and NAT_DETECTION_DESTINATION_IP
            payloads).</t>
        <t> Both a Vendor ID and a Notify payload may be used to
            indicate the support of certain extensions. </t>
        <t> Note that a MOBIKE peer could also attempt to execute
            MOBIKE opportunistically with the critical bit set when an
            address change has occurred. The drawback of this approach
            is, however, that an unnecessary message exchange is
            introduced. </t>
        <t> Although Vendor ID payloads and Notify payloads are
            technically equivalent, Notify payloads are already used
            in IKEv2 as a capability negotiation mechanism. Hence,
            Notify payloads are used in MOBIKE to indicate support of
            MOBIKE protocol. </t>
        <t> Also, as the information of the support of MOBIKE is not
            needed during the IKE_SA_INIT exchange, the indication of
            the support is done inside the IKE_AUTH exchange. The
            reason for this is the need to keep the IKE_SA_INIT
            messages as small as possible so that they do not get
            fragmented. IKEv2 allows that the responder can do
            stateless processing of the first IKE_SA_INIT packet and
            request a cookie from the other end if it is under attack.
            To mandate the responder to be able to reassemble initial
            IKE_SA_INIT packets would not allow fully stateless
            processing of the initial IKE_SA_INIT packets.
	   </t>
      </section>
      <section title="Path Testing and Window size" anchor="path-testing">
        <t> As IKEv2 has a window of outgoing messages, and the sender
            is not allowed to violate that window (meaning that if
            the window is full, then the sender cannot send packets),
            it can cause some complications to path testing. Another
            complication created by IKEv2 is that once the message is
            created and sent to the other end, it cannot be modified
            in its future retransmissions. This makes it impossible to
            know what packet actually reached the other end first. We
            cannot use IP headers to find out which packet reached the
            other end first because if the responder gets retransmissions
            of the packet it has already processed and replied to (and
            those replies might have been lost due unidirectional
            address pair), it will retransmit the previous reply using
            the new address pair of the request. Because of this, it
            might be possible that the responder has already used the
            IP address information from the header of the previous
            packet, and the reply packet ending up at the initiator
            has a different address pair.</t>
        <t> Another complication comes from NAT-T. The current IKEv2
            document says that if NAT-T is enabled, the node not behind
            NAT SHOULD detect if the IP address changes in the
            incoming authenticated packets and update the remote
            peers' addresses accordingly. This works fine with NAT-T,
            but it causes some complications in MOBIKE, as MOBIKE
            needs the ability to probe other address pairs without
            breaking the old one. </t>
        <t> One approach to fix this would be to add a completely new
            protocol that is outside the IKE SA message id limitations
            (window code), outside identical retransmission
            requirements, and outside the dynamic address updating of
            NAT-T. </t>
        <t> Another approach is to make the protocol so that it does
            not violate window restrictions and does not require
            changing the packet on retransmissions, and change the
            dynamic address updating of NAT-T to "MUST NOT" for IKE SA
            packets if MOBIKE is used. In order not to violate window
            restrictions, the addresses of the currently ongoing
            exchange need to be changed to test different paths. In
            order not to require that the packet be changed after it is first
            sent requires that the protocol restart from the
            beginning in case the packet was retransmitted to
            different addresses (because the sender does not know
            which packet the responder got first, i.e.,
            which IP addresses it used). </t>
        <t> The working group decided to use normal IKEv2 exchanges for
            path testing and decided to change the dynamic address
            updating of NAT-T to MUST NOT for IKE SA packets; a
            new protocol outside of IKEv2 was not adopted.
	    </t>
      </section>
      <section title="Message Presentation">
        <t> The IP address change notifications can be sent either via
            an informational exchange already specified in IKEv2, or
            via a MOBIKE-specific message exchange. Using an
            informational exchange has the main advantage that it is
            already specified in the IKEv2 protocol and
            implementations can already incorporate the functionality.
            </t>
        <t> Another question is the format of the address update
            notifications. The address update notifications can
            include multiple addresses, of which some may be IPv4 and
            some IPv6 addresses. The number of addresses is most
            likely going to be limited in typical environments (with
            less than 10 addresses). The format may need to indicate a
            preference value for each address. The format could either
            contain a preference number that determines the relative
            order of the addresses or could simply be an ordered
            list of IP addresses. If using preference numbers, then
            two addresses can have the same preference value; an
            ordered list avoids this situation. </t>
        <t> Load balancing is currently outside the scope of MOBIKE;
            however, future work might include support for it. The
            selected format needs to be flexible enough to include
            additional information in future versions of the protocol
            (e.g., to enable load balancing). This may be realized with
            an reserved field, which can later be used to store
            additional information. As other
            information may arise that may have to be tied to an address in the
            future, a reserved field seems like a prudent design in
            any case.</t>
        <t> There are two basic formats that place IP address lists
            into a message. One includes each IP address as separate
            payload (where the payload order indicates the preference
            order, or the payload itself might include the preference
            number).  Alternatively, we can put the IP address list as one payload
            to the exchange, and that one payload will then have an
            internal format that includes the list of IP addresses.
            </t>
        <t> Having multiple payloads, each one carrying one IP
            address, makes the protocol probably easier to parse, as we
            can already use the normal IKEv2 payload parsing
            procedures. It also offers an easy way for the extensions,
            as the payload probably contains only the type of the IP
            address (or the type is encoded to the payload type), and
            the IP address itself. As each payload already has a
            length field associated to it, we can detect if there is
            any extra data after the IP address. Some implementations
            might have problems parsing more than a certain number of
            IKEv2 payloads, but if the sender sends them in the most
            preferred first, the receiver can only use the first
            addresses it was willing to parse. </t>
        <t> Having all IP addresses in one big MOBIKE-specified
            internal format provides more compact encoding and keeps
            the MOBIKE implementation more concentrated to one module.
            </t>
        <t> Another choice is which type of payloads to use. IKEv2
            already specifies a Notify payload. It includes some extra
            fields (SPI size, SPI, protocol, etc.), which gives 4 bytes
            of the extra overhead, and there is the notification data
            field, which could include the MOBIKE-specific data.</t>
        <t> Another option would be to have a custom payload type,
            which would then include the information needed for the MOBIKE
            protocol.</t>
        <t> The working group decided to use IKEv2 Notify payloads, and
            put only one data item per notify. There will be one
            Notify payload for each item to be sent.
	    </t>
      </section>
      <section title="Updating Address Set">
        <t> Because the initiator decides all address updates, the
            initiator needs to know all the addresses used by the
            responder. The responder also needs that list in case it
            happens to move to an address not known by the initiator,
	    and it needs to send an address update notification to the
            initiator. It might need to try different addresses
            for the initiator. </t>
        <t> MOBIKE could send the whole peer address list every time
            any of the IP addresses change (addresses are
            added or removed, the order changes, or the preferred address
            is updated) or an incremental update. Sending incremental
            updates provides more compact packets (meaning we can
            support more IP addresses), but on the other hand this
            approach has more problems in the synchronization and
            packet reordering cases. That is, incremental updates must be
            processed in order, but for full updates we can simply use
            the most recent one and ignore old ones, even if they
            arrive after the most recent one (IKEv2 packets have a
            message ID that is incremented for each packet; thus, it
            is easy to know the sending order).</t>
        <t>The working group decided to use a protocol format where both
            ends send a full list of their addresses to the other end,
            and that list overwrites the previous list. To support
            NAT-T, the IP addresses of the received packet are
            considered as one address of the peer, even when they are not
            present in the list.
           </t> 
      </section>
    </section>
    <section anchor="security-considerations" title="Security Considerations">
      <t> As all the packets are already authenticated by IKEv2, there
          is no risk that any attackers would undetectedly modify the contents of
          the packets. The IP addresses in the IP header of the
          packets are not authenticated; thus, the protocol defined
          must take care that they are only used as an indication that
          something might be different, and that they do not cause any
          direct actions, except when doing NAT traversal.</t>
      <t> An attacker can also spoof ICMP error messages in an effort
          to confuse the peers about which addresses are not working.
          At worst, this causes denial of service and/or the use of
          non-preferred addresses. </t>
      <t> One type of attack that needs to be taken care of in the
          MOBIKE protocol is the bombing attack type. See <xref target="RFC4225" pageno="false" format="default"/> and <xref target="Aur02" pageno="false" format="default"/>
          for more information about flooding attacks.
	  </t>
      <t> See the security considerations section of <xref target="RFC4555" pageno="false" format="default"/> for more 
      	  information about security considerations of the actual
      	  protocol.</t>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t> This document is the result of discussions in the MOBIKE
          working group. The authors would like to thank Jari Arkko,
          Pasi Eronen, Francis Dupont, Mohan Parthasarathy, Paul
          Hoffman, Bill Sommerfeld, James Kempf, Vijay Devarapalli,
          Atul Sharma, Bora Akyol, Joe Touch, Udo Schilcher, Tom
          Henderson, Andreas Pashalidis, and Maureen Stillman for their
          input. </t>
      <t> We would like to particularly thank Pasi Eronen for tracking
          open issues on the MOBIKE mailing list. He helped us make
          good progress on the document.
	  </t>
    </section>
  </middle>
  <back>
    <references title="Normative references">
      <!--  &rfc768; -->
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.4306"?>

<reference anchor="RFC4306">

<front>
<title>Internet Key Exchange (IKEv2) Protocol</title>
<author initials="C." surname="Kaufman" fullname="C. Kaufman">
<organization/></author>
<date year="2005" month="December"/>
<abstract>
<t>&lt;p&gt;This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining security associations (SAs).&lt;/p&gt;&lt;p&gt; This version of the IKE specification combines the contents of what were previously separate documents, including Internet Security Association and Key Management Protocol (ISAKMP, RFC 2408), IKE (RFC 2409), the Internet Domain of Interpretation (DOI, RFC 2407), Network Address Translation (NAT) Traversal, Legacy authentication, and remote address acquisition.&lt;/p&gt;&lt;p&gt; Version 2 of IKE does not interoperate with version 1, but it has enough of the header format in common that both versions can unambiguously run over the same UDP port. [STANDARDS TRACK]&lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="4306"/>
<format type="TXT" octets="250941" target="ftp://ftp.isi.edu/in-notes/rfc4306.txt"/>
</reference>
<?rfc linefile="1311:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.4301"?>

<reference anchor="RFC4301">

<front>
<title>Security Architecture for the Internet Protocol</title>
<author initials="S." surname="Kent" fullname="S. Kent">
<organization/></author>
<author initials="K." surname="Seo" fullname="K. Seo">
<organization/></author>
<date year="2005" month="December"/>
<abstract>
<t>&lt;p&gt;This document describes an updated version of the "Security Architecture for IP", which is designed to provide security services for traffic at the IP layer. This document obsoletes RFC 2401 (November 1998). [STANDARDS TRACK]&lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="4301"/>
<format type="TXT" octets="262123" target="ftp://ftp.isi.edu/in-notes/rfc4301.txt"/>
</reference>
<?rfc linefile="1312:/tmp/CGI3656.2"?>
    </references>
    <references title="Informative References">
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.4555"?>

<reference anchor="RFC4555">

<front>
<title>IKEv2 Mobility and Multihoming Protocol (MOBIKE)</title>
<author initials="P." surname="Eronen" fullname="P. Eronen">
<organization/></author>
<date year="2006" month="June"/>
<abstract>
<t>&lt;p&gt;This document describes the MOBIKE protocol, a mobility and multihoming extension to Internet Key Exchange (IKEv2). MOBIKE allows the IP addresses associated with IKEv2 and tunnel mode IPsec Security Associations to change. A mobile Virtual Private Network (VPN) client could use MOBIKE to keep the connection with the VPN gateway active while moving from one address to another. Similarly, a multihomed host could use MOBIKE to move the traffic to a different interface if, for instance, the one currently being used stops working. [STANDARDS TRACK]&lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="4555"/>
<format type="TXT" octets="78698" target="ftp://ftp.isi.edu/in-notes/rfc4555.txt"/>
</reference>
<?rfc linefile="1315:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-shim6-failure-detection.xml"?>

<reference anchor="WIP-Ark06">
<front>
<title>Failure Detection and Locator Pair Exploration Protocol for IPv6  Multihoming</title>

<author initials="J" surname="Arkko" fullname="Jari Arkko">
    <organization/>
</author>

<author initials="I" surname="Beijnum" fullname="Iljitsch van Beijnum">
    <organization/>
</author>

<date month="June" day="29" year="2006"/>

<abstract><t>This document specifies how the level 3 multihoming shim protocol (SHIM6) detects failures between two communicating hosts. It also specifies an exploration protocol for switching to another pair of interfaces and/or addresses between the same hosts if a failure occurs and an operational pair can be found.</t></abstract>

</front>

<seriesInfo name="Work" value="in Progress"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-shim6-failure-detection-05.txt"/>
<format type="PDF" target="http://www.ietf.org/internet-drafts/draft-ietf-shim6-failure-detection-05.pdf"/>
</reference>
<?rfc linefile="1316:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.2409"?>

<reference anchor="RFC2409">

<front>
<title>The Internet Key Exchange (IKE)</title>
<author initials="D." surname="Harkins" fullname="Dan Harkins">
<organization>cisco Systems</organization>
<address>
<postal>
<street>170 W. Tasman Dr.</street>
<street>San Jose</street>
<street>California</street>
<street>95134-1706</street>
<country>United States of America</country></postal>
<phone>+1 408 526 4000</phone>
<email>dharkins@cisco.com</email></address></author>
<author initials="D." surname="Carrel" fullname="Dave Carrel">
<organization/>
<address>
<postal>
<street>76 Lippard Ave.</street>
<street>San Francisco</street>
<street>CA 94131-2947</street>
<country>United States of America</country></postal>
<phone>+1 415 337 8469</phone>
<email>carrel@ipsec.org</email></address></author>
<date year="1998" month="November"/>
<area>Security</area>
<area>Internet</area>
<keyword>IP security protocol</keyword>
<keyword>authentication</keyword>
<keyword>internet security association and key management protocol</keyword>
<keyword>key exchange</keyword>
<keyword>security</keyword></front>

<seriesInfo name="RFC" value="2409"/>
<format type="TXT" octets="94949" target="ftp://ftp.isi.edu/in-notes/rfc2409.txt"/>
<format type="HTML" octets="110062" target="http://xml.resource.org/public/rfc/html/rfc2409.html"/>
<format type="XML" octets="95451" target="http://xml.resource.org/public/rfc/xml/rfc2409.xml"/>
</reference>
<?rfc linefile="1317:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.2401"?>

<reference anchor="RFC2401">

<front>
<title abbrev="Security Architecture">Security Architecture for the Internet Protocol</title>
<author initials="S." surname="Kent" fullname="Stephen Kent">
<organization>BBN Corporation</organization>
<address>
<postal>
<street>70 Fawcett Street</street>
<street>Cambridge</street>
<street>MA  02140</street>
<country>USA</country></postal>
<phone>+1 (617) 873-3988</phone>
<email>kent@bbn.com</email></address></author>
<author initials="R." surname="Atkinson" fullname="Randall Atkinson">
<organization>@Home Network</organization>
<address>
<postal>
<street>425 Broadway</street>
<street>Redwood City</street>
<street>CA 94063</street>
<country>USA</country></postal>
<phone>+1 (415) 569-5000</phone>
<email>rja@corp.home.net</email></address></author>
<date year="1998" month="November"/>
<area>Security</area>
<keyword>IP security protocol</keyword>
<keyword>IPSEC</keyword>
<keyword>internet protocol version 6</keyword>
<keyword>security</keyword></front>

<seriesInfo name="RFC" value="2401"/>
<format type="TXT" octets="168162" target="ftp://ftp.isi.edu/in-notes/rfc2401.txt"/>
<format type="HTML" octets="186006" target="http://xml.resource.org/public/rfc/html/rfc2401.html"/>
<format type="XML" octets="166999" target="http://xml.resource.org/public/rfc/xml/rfc2401.xml"/>
</reference>
<?rfc linefile="1318:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.4225"?>

<reference anchor="RFC4225">

<front>
<title>Mobile IP Version 6 Route Optimization Security Design Background</title>
<author initials="P." surname="Nikander" fullname="P. Nikander">
<organization/></author>
<author initials="J." surname="Arkko" fullname="J. Arkko">
<organization/></author>
<author initials="T." surname="Aura" fullname="T. Aura">
<organization/></author>
<author initials="G." surname="Montenegro" fullname="G. Montenegro">
<organization/></author>
<author initials="E." surname="Nordmark" fullname="E. Nordmark">
<organization/></author>
<date year="2005" month="December"/>
<abstract>
<t>&lt;p&gt;This document is an account of the rationale behind the Mobile IPv6 (MIPv6) Route Optimization security design. The purpose of this document is to present the thinking and to preserve the reasoning behind the Mobile IPv6 security design in 2001 - 2002.&lt;/p&gt;&lt;p&gt; The document has two target audiences: (1) helping MIPv6 implementors to better understand the design choices in MIPv6 security procedures, and (2) allowing people dealing with mobility or multi-homing to avoid a number of potential security pitfalls in their designs. This memo provides information for the Internet community.&lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="4225"/>
<format type="TXT" octets="98584" target="ftp://ftp.isi.edu/in-notes/rfc4225.txt"/>
</reference>
<?rfc linefile="1319:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-mm.xml"?>

<reference anchor="WIP-Nik06">
<front>
<title>End-Host Mobility and Multihoming with the Host Identity Protocol</title>

<author initials="P" surname="Nikander" fullname="Pekka  Nikander">
    <organization/>
</author>

<date month="June" day="26" year="2006"/>

<abstract><t>This document defines mobility and multihoming extensions to the Host Identity Protocol (HIP). Specifically, this document defines a general "LOCATOR" parameter for HIP messages that allows for a HIP host to notify peers about alternate addresses at which it may be reached. This document also defines elements of procedure for mobility of a HIP host-- the process by which a host dynamically changes the primary locator that it uses to receive packets. While the same LOCATOR parameter can also be used to support end-host multihoming, detailed procedures are left for further study.</t></abstract>

</front>

<seriesInfo name="Work" value="in Progress"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-hip-mm-04.txt"/>
</reference>
<?rfc linefile="1320:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml3/reference.I-D.crocker-celp.xml"?>

<reference anchor="WIP-Cro04">
<front>
<title>Framework for Common Endpoint Locator Pools</title>

<author initials="D" surname="Crocker" fullname="Dave Crocker">
    <organization/>
</author>

<date month="February" day="11" year="2004"/>

<abstract><t>Classic Internet transport protocols use a single source IP Address and a single destination IP Address, as part of the identification for an individual transport data flow. This is problematic for multihomed hosts and for mobile hosts, collectively needing 'multiaddressing' support. The basic goal, then, is to find a method for multiaddressing that makes the smallest possible change to the architecture and to current systems, while maintaining flexibility for different emerging solutions. This draft proposes a framework for methods for creating Common Endpoint Locator Pools that can be used by and among the proposed solutions.</t></abstract>

</front>

<seriesInfo name="Work" value="in Progress"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-crocker-celp-00.txt"/>
</reference>
<?rfc linefile="1321:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.2960"?>

<reference anchor="RFC2960">

<front>
<title>Stream Control Transmission Protocol</title>
<author initials="R." surname="Stewart" fullname="R. Stewart">
<organization/></author>
<author initials="Q." surname="Xie" fullname="Q. Xie">
<organization/></author>
<author initials="K." surname="Morneault" fullname="K. Morneault">
<organization/></author>
<author initials="C." surname="Sharp" fullname="C. Sharp">
<organization/></author>
<author initials="H." surname="Schwarzbauer" fullname="H. Schwarzbauer">
<organization/></author>
<author initials="T." surname="Taylor" fullname="T. Taylor">
<organization/></author>
<author initials="I." surname="Rytina" fullname="I. Rytina">
<organization/></author>
<author initials="M." surname="Kalla" fullname="M. Kalla">
<organization/></author>
<author initials="L." surname="Zhang" fullname="L. Zhang">
<organization/></author>
<author initials="V." surname="Paxson" fullname="V. Paxson">
<organization/></author>
<date year="2000" month="October"/>
<abstract>
<t>&lt;p&gt;This document describes the Stream Control Transmission Protocol (SCTP). [STANDARDS TRACK] &lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="2960"/>
<format type="TXT" octets="297757" target="ftp://ftp.isi.edu/in-notes/rfc2960.txt"/>
</reference>
<?rfc linefile="1322:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.3753"?>

<reference anchor="RFC3753">

<front>
<title>Mobility Related Terminology</title>
<author initials="J." surname="Manner" fullname="J. Manner">
<organization/></author>
<author initials="M." surname="Kojo" fullname="M. Kojo">
<organization/></author>
<date year="2004" month="June"/>
<abstract>
<t>&lt;p&gt;There is a need for common definitions of terminology in the work to be done around IP mobility. This document defines terms for mobility related terminology. The document originated out of work done in the Seamoby Working Group but has broader applicability for terminology used in IETF-wide discourse on technology for mobility and IP networks. Other working groups dealing with mobility may want to take advantage of this terminology. This memo provides information for the Internet community. &lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="3753"/>
<format type="TXT" octets="74143" target="ftp://ftp.isi.edu/in-notes/rfc3753.txt"/>
</reference>
<?rfc linefile="1323:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.3775"?>

<reference anchor="RFC3775">

<front>
<title>Mobility Support in IPv6</title>
<author initials="D." surname="Johnson" fullname="D. Johnson">
<organization/></author>
<author initials="C." surname="Perkins" fullname="C. Perkins">
<organization/></author>
<author initials="J." surname="Arkko" fullname="J. Arkko">
<organization/></author>
<date year="2004" month="June"/>
<abstract>
<t>&lt;p&gt;This document specifies a protocol which allows nodes to remain reachable while moving around in the IPv6 Internet. Each mobile node is always identified by its home address, regardless of its current point of attachment to the Internet. While situated away from its home, a mobile node is also associated with a care-of address, which provides information about the mobile node's current location. IPv6 packets addressed to a mobile node's home address are transparently routed to its care-of address. The protocol enables IPv6 nodes to cache the binding of a mobile node's home address with its care-of address, and to then send any packets destined for the mobile node directly to it at this care-of address. To support this operation, Mobile IPv6 defines a new IPv6 protocol and a new destination option. All IPv6 nodes, whether mobile or stationary, can communicate with mobile nodes. [STANDARDS TRACK] &lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="3775"/>
<format type="TXT" octets="393514" target="ftp://ftp.isi.edu/in-notes/rfc3775.txt"/>
</reference>
<?rfc linefile="1324:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-tsvwg-addip-sctp.xml"?>

<reference anchor="WIP-Ste06">
<front>
<title>Stream Control Transmission Protocol (SCTP) Dynamic Address  Reconfiguration</title>

<author initials="R" surname="Stewart" fullname="Randall Stewart">
    <organization/>
</author>

<date month="June" day="1" year="2006"/>

<abstract><t>This document describes extensions to the Stream Control Transmission Protocol (SCTP) [RFC2960] that provides a method to reconfigure IP address information on an existing association.</t></abstract>

</front>

<seriesInfo name="Work" value="in Progress"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-addip-sctp-15.txt"/>
</reference>
<?rfc linefile="1325:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.3554"?>

<reference anchor="RFC3554">

<front>
<title>On the Use of Stream Control Transmission Protocol (SCTP) with IPsec</title>
<author initials="S." surname="Bellovin" fullname="S. Bellovin">
<organization/></author>
<author initials="J." surname="Ioannidis" fullname="J. Ioannidis">
<organization/></author>
<author initials="A." surname="Keromytis" fullname="A. Keromytis">
<organization/></author>
<author initials="R." surname="Stewart" fullname="R. Stewart">
<organization/></author>
<date year="2003" month="July"/>
<abstract>
<t>&lt;p&gt;This document describes functional requirements for IPsec (RFC 2401) and Internet Key Exchange (IKE) (RFC 2409) to facilitate their use in securing SCTP (RFC 2960) traffic. [STANDARDS TRACK] &lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="3554"/>
<format type="TXT" octets="20102" target="ftp://ftp.isi.edu/in-notes/rfc3554.txt"/>
</reference>
<?rfc linefile="1326:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.4429"?>

<reference anchor="RFC4429">

<front>
<title>Optimistic Duplicate Address Detection (DAD) for IPv6</title>
<author initials="N." surname="Moore" fullname="N. Moore">
<organization/></author>
<date year="2006" month="April"/>
<abstract>
<t>&lt;p&gt;Optimistic Duplicate Address Detection is an interoperable modification of the existing IPv6 Neighbor Discovery (RFC 2461) and Stateless Address Autoconfiguration (RFC 2462) processes. The intention is to minimize address configuration delays in the successful case, to reduce disruption as far as possible in the failure case, and to remain interoperable with unmodified hosts and routers. [STANDARDS TRACK]&lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="4429"/>
<format type="TXT" octets="33123" target="ftp://ftp.isi.edu/in-notes/rfc4429.txt"/>
</reference>
<?rfc linefile="1327:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.4193"?>

<reference anchor="RFC4193">

<front>
<title>Unique Local IPv6 Unicast Addresses</title>
<author initials="R." surname="Hinden" fullname="R. Hinden">
<organization/></author>
<author initials="B." surname="Haberman" fullname="B. Haberman">
<organization/></author>
<date year="2005" month="October"/>
<abstract>
<t>&lt;p&gt;This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet. [STANDARDS TRACK]&lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="4193"/>
<format type="TXT" octets="35908" target="ftp://ftp.isi.edu/in-notes/rfc4193.txt"/>
</reference>
<?rfc linefile="1328:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.1918"?>

<reference anchor="RFC1918">

<front>
<title>Address Allocation for Private Internets</title>
<author initials="Y." surname="Rekhter" fullname="Yakov Rekhter">
<organization>Cisco systems</organization>
<address>
<postal>
<street>170 West Tasman Drive</street>
<city>San Jose</city>
<region>CA</region>
<code>95134-1706</code>
<country>US</country></postal>
<phone>+1 914 528 0090</phone>
<facsimile>+1 408 526 4952</facsimile>
<email>yakov@cisco.com</email></address></author>
<author initials="R." surname="Moskowitz" fullname="Robert G. Moskowitz">
<organization>Chrysler Corporation</organization>
<address>
<postal>
<street>25999 Lawrence Ave</street>
<city>Center Line</city>
<region>MI</region>
<code>48015</code>
<country>US</country></postal>
<phone>+1 810 758 8212</phone>
<facsimile>+1 810 758 8173</facsimile>
<email>rgm3@is.chrysler.com</email></address></author>
<author initials="D." surname="Karrenberg" fullname="Daniel Karrenberg">
<organization>RIPE Network Coordination Centre</organization>
<address>
<postal>
<street>Kruislaan 409</street>
<city>Amsterdam</city>
<region/>
<code>1098 SJ</code>
<country>NL</country></postal>
<phone>+31 20 5925065</phone>
<facsimile>+31 20 5925090</facsimile>
<email>Daniel.Karrenberg@ripe.net</email></address></author>
<author initials="G." surname="Groot" fullname="Geert Jan de Groot">
<organization>RIPE Network Coordination Centre</organization>
<address>
<postal>
<street>Kruislaan 409</street>
<city>Amsterdam</city>
<region/>
<code>1098 SJ</code>
<country>NL</country></postal>
<phone>+31 20 5925065</phone>
<facsimile>+31 20 5925090</facsimile>
<email>GeertJan.deGroot@ripe.net</email></address></author>
<author initials="E." surname="Lear" fullname="Eliot Lear">
<organization>Silicon Graphics, Inc.</organization>
<address>
<postal>
<street>2011 N. Shoreline Blvd.</street>
<street>Mail Stop 15-730</street>
<city>Mountain View</city>
<region>CA</region>
<code>94043-1389</code>
<country>US</country></postal>
<phone>+1 415 960 1980</phone>
<facsimile>+1 415 961 9584</facsimile>
<email>lear@sgi.com</email></address></author>
<date year="1996" month="February"/></front>

<seriesInfo name="BCP" value="5"/>
<seriesInfo name="RFC" value="1918"/>
<format type="TXT" octets="22270" target="ftp://ftp.isi.edu/in-notes/rfc1918.txt"/>
</reference>
<?rfc linefile="1329:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.2367"?>

<reference anchor="RFC2367">

<front>
<title abbrev="PF_KEY">PF_KEY Key Management API, Version 2</title>
<author initials="D.L." surname="McDonald" fullname="Daniel L. McDonald">
<organization>Sun Microsystems, Inc.</organization>
<address>
<postal>
<street>901 San Antonio Road</street>
<street>MS UMPK17-202</street>
<street>Palo Alto</street>
<street>CA 94303</street></postal>
<phone>+1 650 786 6815</phone>
<email>danmcd@eng.sun.com</email></address></author>
<author initials="C." surname="Metz" fullname="Craig Metz">
<organization>(for Code 5544)</organization>
<address>
<postal>
<street>U.S. Naval Research Laboratory</street>
<street>4555 Overlook Ave. SW</street>
<street>Washington</street>
<street>DC 20375</street></postal>
<phone>(DSN) 754-8590</phone>
<email>cmetz@inner.net</email></address></author>
<author initials="B.G." surname="Phan" fullname="Bao G. Phan">
<organization>U. S. Naval Research Laboratory</organization>
<address>
<email>phan@itd.nrl.navy.mil</email></address></author>
<date year="1998" month="July"/>
<area>Internet</area>
<area>Security</area>
<keyword>IP security protocol</keyword>
<keyword>application program interface</keyword>
<keyword>internet security association and key management protocol</keyword>
<keyword>key management</keyword>
<keyword>security</keyword>
<abstract>
<t>
   A generic key management API that can be used not only for IP
   Security  but also for other network
   security services is presented in this document.  Version 1 of this
   API was implemented inside 4.4-Lite BSD as part of the U. S. Naval
   Research Laboratory's freely distributable and usable IPv6 and IPsec
   implementation.  It is documented here for the benefit of
   others who might also adopt and use the API, thus providing increased
   portability of key management applications (e.g. a manual keying
   application, an ISAKMP daemon, a GKMP daemon , a
   Photuris daemon, or a SKIP certificate discovery protocol daemon).
</t></abstract></front>

<seriesInfo name="RFC" value="2367"/>
<format type="TXT" octets="146754" target="ftp://ftp.isi.edu/in-notes/rfc2367.txt"/>
<format type="HTML" octets="142924" target="http://xml.resource.org/public/rfc/html/rfc2367.html"/>
<format type="XML" octets="129001" target="http://xml.resource.org/public/rfc/xml/rfc2367.xml"/>
</reference>
<?rfc linefile="1330:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.2462"?>

<reference anchor="RFC2462">

<front>
<title>IPv6 Stateless Address Autoconfiguration</title>
<author initials="S." surname="Thomson" fullname="Susan Thomson">
<organization>Bellcore</organization>
<address>
<postal>
<street>445 South Street</street>
<street>Morristown</street>
<region>NJ</region>
<code>07960</code>
<country>USA</country></postal>
<phone>+1 201 829 4514</phone>
<email>set@thumper.bellcore.com</email></address></author>
<author initials="T." surname="Narten" fullname="Thomas Narten">
<organization>IBM Corporation</organization>
<address>
<postal>
<street>P.O. Box 12195</street>
<street>Research Triangle Park</street>
<region>NC</region>
<code>27709-2195</code>
<country>USA</country></postal>
<phone>+1 919 254 7798</phone>
<email>narten@raleigh.ibm.com</email></address></author>
<date year="1998" month="December"/>
<area>Internet</area>
<keyword>configuration</keyword>
<keyword>internet protocol version 6</keyword>
<abstract>
<t>
   This document specifies the steps a host takes in deciding how to
   autoconfigure its interfaces in IP version 6. The autoconfiguration
   process includes creating a link-local address and verifying its
   uniqueness on a link, determining what information should be
   autoconfigured (addresses, other information, or both), and in the
   case of addresses, whether they should be obtained through the
   stateless mechanism, the stateful mechanism, or both.  This document
   defines the process for generating a link-local address, the process
   for generating site-local and global addresses via stateless address
   autoconfiguration, and the Duplicate Address Detection procedure. The
   details of autoconfiguration using the stateful protocol are
   specified elsewhere.
</t></abstract></front>

<seriesInfo name="RFC" value="2462"/>
<format type="TXT" octets="61210" target="ftp://ftp.isi.edu/in-notes/rfc2462.txt"/>
<format type="HTML" octets="76182" target="http://xml.resource.org/public/rfc/html/rfc2462.html"/>
<format type="XML" octets="65932" target="http://xml.resource.org/public/rfc/xml/rfc2462.xml"/>
</reference>
<?rfc linefile="1331:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.2461"?>

<reference anchor="RFC2461">

<front>
<title abbrev="Neighbor Discovery for IPv6">Neighbor Discovery for IP Version 6 (IPv6)</title>
<author initials="T." surname="Narten" fullname="Thomas Narten">
<organization>IBM Corporation</organization>
<address>
<postal>
<street>P.O. Box 12195</street>
<street>Research Triangle Park</street>
<region>NC</region>
<code>27709-2195</code>
<country>USA</country></postal>
<phone>+1 919 254 7798</phone>
<email>narten@raleigh.ibm.com</email></address></author>
<author initials="E." surname="Nordmark" fullname="Erik Nordmark">
<organization>Sun Microsystems, Inc.</organization>
<address>
<postal>
<street>901 San Antonio Road</street>
<street>Palo Alto</street>
<region>CA</region>
<code>94303</code>
<country>USA</country></postal>
<phone>+1 650 786 5166</phone>
<facsimile>+1 650 786 5896</facsimile>
<email>nordmark@sun.com</email></address></author>
<author initials="W.A." surname="Simpson" fullname="William Allen Simpson">
<organization>Daydreamer, Computer Systems Consulting Services</organization>
<address>
<postal>
<street>1384 Fontaine</street>
<street>Madison Heights</street>
<region>Michigan</region>
<code>48071</code>
<country>USA</country></postal>
<email>bsimpson@MorningStar.com</email></address></author>
<date year="1998" month="December"/>
<area>Routing</area>
<keyword>discovery</keyword>
<keyword>internet protocol version 6</keyword>
<keyword>IPv6</keyword>
<abstract>
<t>
   This document specifies the Neighbor Discovery protocol for IP
   Version 6.  IPv6 nodes on the same link use Neighbor Discovery to
   discover each other's presence, to determine each other's link-layer
   addresses, to find routers and to maintain reachability information
   about the paths to active neighbors.
</t></abstract></front>

<seriesInfo name="RFC" value="2461"/>
<format type="TXT" octets="222516" target="ftp://ftp.isi.edu/in-notes/rfc2461.txt"/>
<format type="HTML" octets="252162" target="http://xml.resource.org/public/rfc/html/rfc2461.html"/>
<format type="XML" octets="239316" target="http://xml.resource.org/public/rfc/xml/rfc2461.xml"/>
</reference>
<?rfc linefile="1332:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.3424"?>

<reference anchor="RFC3424">

<front>
<title>IAB Considerations for UNilateral Self-Address Fixing (UNSAF) Across Network Address Translation</title>
<author initials="L." surname="Daigle" fullname="L. Daigle">
<organization/></author>
<author>
<organization>IAB</organization></author>
<date year="2002" month="November"/>
<abstract>
<t>&lt;p&gt;As a result of the nature of Network Address Translation (NAT) Middleboxes, communicating endpoints that are separated by one or more NATs do not know how to refer to themselves using addresses that are valid in the addressing realms of their (current and future) peers. Various proposals have been made for "UNilateral Self-Address Fixing (UNSAF)" processes. These are processes whereby some originating endpoint attempts to determine or fix the address (and port) by which it is known to another endpoint - e.g., to be able to use address data in the protocol exchange, or to advertise a public address from which it will receive connections. This document outlines the reasons for which these proposals can be considered at best as short term fixes to specific problems and the specific issues to be carefully evaluated before creating an UNSAF proposal. This memo provides information for the Internet community. &lt;/p&gt;</t></abstract></front>

<seriesInfo name="RFC" value="3424"/>
<format type="TXT" octets="18165" target="ftp://ftp.isi.edu/in-notes/rfc3424.txt"/>
</reference>
<?rfc linefile="1333:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml/reference.RFC.3303"?>

<reference anchor="RFC3303">

<front>
<title>Middlebox communication architecture and framework</title>
<author initials="P." surname="Srisuresh" fullname="P. Srisuresh">
<organization/></author>
<author initials="J." surname="Kuthan" fullname="J. Kuthan">
<organization/></author>
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg">
<organization/></author>
<author initials="A." surname="Molitor" fullname="A. Molitor">
<organization/></author>
<author initials="A." surname="Rayhan" fullname="A. Rayhan">
<organization/></author>
<date year="2002" month="August"/></front>

<seriesInfo name="RFC" value="3303"/>
<format type="TXT" octets="91209" target="ftp://ftp.isi.edu/in-notes/rfc3303.txt"/>
</reference>
<?rfc linefile="1334:/tmp/CGI3656.2"?>
      <?rfc linefile="1:http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-nsis-nslp-natfw.xml"?>

<reference anchor="WIP-Sti06">
<front>
<title>NAT/Firewall NSIS Signaling Layer Protocol (NSLP)</title>

<author initials="M" surname="Stiemerling" fullname="Martin Stiemerling">
    <organization/>
</author>

<date month="June" day="29" year="2006"/>

<abstract><t>This memo defines the NSIS Signaling Layer Protocol (NSLP) for Network Address Translators (NATs) and firewalls. This NSLP allows hosts to signal on the data path for NATs and firewalls to be configured according to the needs of the application data flows. It enables hosts behind NATs to obtain a public reachable address and hosts behind firewalls to receive data traffic. The overall architecture is given by the framework and requirements defined by the Next Steps in Signaling (NSIS) working group. The network scenarios, the protocol itself, and examples for path-coupled signaling are given in this memo.</t></abstract>

</front>

<seriesInfo name="Work" value="in Progress"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-nsis-nslp-natfw-12.txt"/>
</reference>
<?rfc linefile="1335:/tmp/CGI3656.2"?>
      <reference anchor="Aur02">
        <front>
	  <title>Security of Internet Location Management</title>
	  <author initials="T." surname="Aura" fullname="Tuomas Aura">
	    <organization>Microsoft Research</organization>
	  </author>
	  <author initials="M." surname="Roe" fullname="Michael Roe">
	    <organization>Microsoft Research</organization>
	  </author>
	  <author initials="J." surname="Arkko" fullname="Jari Arkko">
	    <organization>Ericsson Research Nomadic Lab</organization>
	  </author>
	  <date month="December" year="2002"/>
	</front>
	<seriesInfo name="In Proc." value="18th Annual Computer Security Applications Conference, pages 78-87, Las Vegas, NV USA"/>
	<format type="TXT" target="http://research.microsoft.com/users/tuomaura/Publications/aura-roe-arkko-acsac02.pdf"/>
      </reference>
    </references>
  </back>
</rfc>
