<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc768 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0768.xml'>
<!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY rfc2362 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2362.xml'>
<!ENTITY rfc2401 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2401.xml'>
<!ENTITY rfc2409 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2409.xml'>
<!ENTITY rfc2460 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2460.xml'>
<!ENTITY rfc2473 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2473.xml'>
<!ENTITY rfc2578 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2578.xml'>
<!ENTITY rfc2784 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2784.xml'>
<!ENTITY rfc2960 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2960.xml'>
<!ENTITY rfc3031 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3031.xml'>
<!ENTITY rfc2710 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2710.xml'>
<!ENTITY rfc3692 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3692.xml'>
<!ENTITY rfc3753 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3753.xml'>
<!ENTITY rfc3971 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3971.xml'>
<!ENTITY rfc3973 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3973.xml'>
<!ENTITY rfc4282 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4282.xml'>
<!ENTITY rfc4302 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4302.xml'>
<!ENTITY rfc4303 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4303.xml'>
<!ENTITY rfc4306 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4306.xml'>
<!ENTITY rfc4330 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4330.xml'>

<!ENTITY netlmmps  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-nohost-ps.xml'>
<!ENTITY netlmmgoals  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-nohost-req.xml'>
<!ENTITY netlmmthreats  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-threats.xml'>
<!ENTITY netlmmattach  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-mn-ar-if.xml'>
<!ENTITY netlmmproto  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.giaretta-netlmm-dt-protocol.xml'>
<!ENTITY certprofile    PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-pki4ipsec-ikecert-profile-11.xml'>
<!ENTITY multilink    PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.thaler-intarea-multilink-subnet-issues.xml'>
]>

<?rfc toc="yes"?>
<?rfc tocdepth="2"?>
<?rfc tocnarrow="no"?>
<?rfc tocompact="yes"?>
<?rfc compact="yes"?>
<?rfc strict="yes" ?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc subcompact="no"?>
<?rfc iprnotified="no" ?>

<!-- Revision: 00 -->
<!-- -+-

-+- -->

<rfc ipr="full3978" category="info">
   <front>
      <title abbrev="The NBLM Protocol">
	 Network-Based Localised Mobility Management Protocol (NBLM)
      </title>

      <author initials="H." surname="Levkowetz"
              fullname="Henrik Levkowetz"
              role="editor">
         <organization abbrev="">Ericsson</organization>
         <address>
            <postal>
               <street>Torsgatan 71</street>
               <code>S-113 37</code>
               <city>Stockholm</city>
               <country>SWEDEN</country>
            </postal>
            <phone>+46 708 32 16 08</phone>
            <email>henrik@levkowetz.com</email>
         </address>
      </author>

      <author fullname="Phil Roberts" initials="P." surname="Roberts">
         <organization>Motorola</organization>
         <address>
            <postal>
               <street>1301 E Algonquin Rd</street>
               <city>Schaumberg</city>
               <region>IL</region>
               <code>60196</code>
               <country>USA</country>
            </postal>
            <email>phil.roberts@motorola.com</email>
         </address>
      </author>

      <!--
      <author fullname="Marco Liebsch" initials="M." surname="Liebsch">
         <organization abbrev="NEC">NEC Network Laboratories   </organization>
         <address>
            <postal>
               <street>Kurfuersten-Anlage 36  </street>
               <city>Heidelberg</city>
               <region></region>
               <code>69115</code>
               <country>Germany</country>
            </postal>
            <phone>+49 6221-90511-46   </phone>
            <email>marco.liebsch@netlab.nec.de</email>
         </address>
      </author>
      -->

      <date year="2007"/>
      <area>Internet</area>
      <keyword>Internet-Draft</keyword>
      <abstract>
         <t>

            This document specifies an Internet protocol that allows mobile nodes to
            move around in a local mobility domain, changing their point of
            attachment within the domain, but without ever being aware at the IP
            layer that their point of attachment has changed, and maintaining
            seamless communication in the presence of such changes.  It
            defines two protocol entities, a Mobile Access Gateway and a Local
            Mobility Anchor, and a set of messages between them, that together make
            these mobility events transparent to the mobile nodes at the IP layer,
            as long as they remain within the local mobility domain.

         </t>
      </abstract>
   </front>
   <middle>


      <!-- ============================================================ -->

      <section anchor="introduction" title="Introduction">
         <t> 

            This document specifies a protocol that allows nodes to move around in an
            access network, attaching to various points of the network while
            maintaining an IP layer configuration that does not change as the mobile
            nodes' points of attachment change.  

         </t>
         <t> 

            This protocol is not intended to solve all the problems of network-based IP mobility.
            Over the past decade many companies and forums have provided many, many staff
            years of research, development, and standardisation to realize all IP mobile
            networks and no doubt many more years of effort are ahead to deliver
            improvements to realize all the envisioned usage of such technology.  Such
            systems have added technology for specific link layers, and carrying IP
            packets over those link layers, support for AAA infrastructures, and mobile
            security to name a few.  Challenges still lie ahead in the form of for instance
            mobile QoS, power management and paging, and management of changing network
            conditions in the face of various mobility events.

         </t>
         <t> 

            The protocol described in this memo was developed in response to the <xref
            target="I-D.ietf-netlmm-nohost-ps">problem statement for network-based localised
            mobility</xref> and attempts to satisfy the goals in <xref
            target="I-D.ietf-netlmm-nohost-req">the NetLMM goals document</xref>.  It is
            intended basically to solve the problem of packet forwarding to nodes that change
            their point of attachment to the network without the use of any protocol support at
            the IP layer on the mobile node to support that mobility.

         </t>
         <t> 

            This document defines operation of the protocol for use in an IPv6
            infrastructure and in support of IPv6 nodes, but the authors envision that
            with modifications the protocol could be used with an IPv4
            infrastructure or to support IPv4 nodes.  The document refers conscientiously
            to mobile nodes rather than mobile hosts because its operation is not limited
            in any way to host only support.

         </t>
         <t> 

            This protocol has both some similarities and some clear differences with
            various IP mobility protocols the
            IETF has standardised in the past.  It is similar in that it continues the
            tradition of maintaining address continuity to mobile nodes regardless of the
            fact that those nodes have changed their points of attachment in the network.
            It differs in that it does not require any operational changes in protocol
            operation between the mobile node and the network at the IP layer, in that it
            supports an infrastructure that embraces network controlled mobility
            operation, and in that its operation is limited in scope rather than globally
            applicable.  

         </t>
         <t> 

            The differences between this protocol and previous mobility protocols are
            complementary rather than contradictory.  It is quite possible to conceive of
            deployments in which mobile IP is used in a wide area to provide mobility services
            across multiple interface types or separate local mobility domains while NetLMM is
            used within a single type of access network or a single local mobility domain to
            facilitate mobility without involving the mobile.

         </t>
      <section anchor="intro.contrib" title="Contributors">
         <t>

	    The first version of the protocol described here was developed by the NetLMM
	    working group design team between January and November of 2006, and described
	    in <xref target="I-D.giaretta-netlmm-dt-protocol" />.  The continuation of that
	    work, contained in this document, is based squarely on the good work of the
	    design team.  The design team members, and authors of the design team protocol
	    document, were:

         </t>
         <t>

	    Kent Leung,
	    Cisco,
	    170 W. Tasman Drive,
	    San Jose, CA  95134,
	    USA.
	    <vspace blankLines="0"/>
	    Phone: +1 408 853 9580,
	    Email: kleung@cisco.com


	 </t>
	 <t>

	    Gerardo Giaretta,
	    Telecom Italia,
	    via Reiss Romoli 274,
	    10148  Torino,
	    Italy.
	    <vspace blankLines="0"/>
	    Phone: +39 011 228 6904,
	    Email: gerardo.giaretta@telecomitalia.it


	 </t>
	 <t>

	    Marco Liebsch,
	    NEC Network Laboratories,
	    Kurfuersten-Anlage 36,
	    69115,   Heidelberg
	    Germany.
	    <vspace blankLines="0"/>
	    Phone: +49 6221-90511-46,
	    Email: marco.liebsch@netlab.nec.de


	 </t>
	 <t>

	    Katsutoshi Nishida,
	    NTT DoCoMo Inc.,
	    3-5 Hikarino-oka, Yokosuka-shi,
	    Kanagawa,
	    Japan.
	    <vspace blankLines="0"/>
	    Phone: +81 46 840 3545
	    Email: nishidak@nttdocomo.co.jp


	 </t>
	 <t>

	    Hidetoshi Yokota,
	    KDDI R&amp;D Laboratories, Inc.,
	    2-1-15 Ohara, Fujimino,
	    356-8502 Saitama,   
	    Japan.
	    <vspace blankLines="0"/>
	    Phone: +81 49 278 7894,
	    Email: yokota@kddilabs.jp


	 </t>
	 <t>

	    Mohan Parthasarathy,
	    Nokia,
	    <vspace blankLines="0"/>
	    Email: mohan.parthasarathy@nokia.com

	 </t>
	 <t>



	    Phil Roberts,
	    Motorola,
	    1301 E Algonquin Rd,
	    Schaumberg, IL  60196,
	    USA.
	    <vspace blankLines="0"/>
	    Email: phil.roberts@motorola.com

	 </t>
	 <t>

	    Henrik Levkowetz (editor),
	    Ericsson,
	    Torsgatan 71,
	    Stockholm  S-113 37,
	    Sweden.
	    <vspace blankLines="0"/>
	    Phone: +46 708 32 16 08
	    Email: henrik@levkowetz.com

	 </t>
      </section>
      </section>
      <section anchor="terminology" title="Terminology">
         <t>

            In this document, several words are used to signify the requirements of
            the specification.  These words are often capitalised.  The key words
            "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
            NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this document are to be
            interpreted as described in <xref target="RFC2119"/>.

         </t>
         <t>

            Mobility terminology in this document follows that in RFC 3753,
            "Mobility Related Terminology" <xref target="RFC3753"/>, with
            the added specification of some terms as they are used in this particular document:

            <list style="hanging">
               <t hangText="IP Link"><vspace blankLines="0"/>

                  A set of routers, mobile nodes, and wireless access points that share 
                  link broadcast capability or its functional equivalent.  This definition 
                  covers one or multiple access points under one or several access 
                  routers.  In the past, such a set has been called a subnet, but this 
                  term is not strictly correct for IPv6, since multiple subnet prefixes 
                  can be assigned to an IP link in IPv6. 

               </t>
               <t hangText="Access Network (revised)"><vspace blankLines="0"/>

                  An Access Network consists of following three components: wireless or 
                  other access points, access routers, access network gateways which form 
                  the boundary to other networks and may shield other networks from the 
                  specialised routing protocols (if any) run in the Access Network; and 
                  (optionally) other internal access network routers which may also be 
                  needed in some cases to achieve a specialised routing protocol. 

               </t>
               <t hangText="Local Mobility (revised)"><vspace blankLines="0"/>

                  Local Mobility is mobility over a restricted area of the network 
                  topology.  Note that, although the area of network topology over which 
                  the mobile node moves may be restricted, the actual geographic area 
                  could be quite large, depending on the mapping between the network 
                  topology and the wireless coverage area. 

               </t>
               <t hangText="Localised Mobility Management"><vspace blankLines="0"/>

                  Localised Mobility Management is a generic term for protocols dealing 
                  with  IP  mobility management confined within the access network.  
                  Localised Mobility Management signalling is not routed outside the 
                  access network, although a  hand-over may trigger Global Mobility 
                  Management signalling.  Localised Mobility Management protocols exploit 
                  the locality of movement by confining movement related changes to the 
                  access network. 

               </t>
               <t hangText="Localised Mobility Management Protocol"><vspace blankLines="0"/>

                  A protocol that supports localised mobility management. 

               </t>
               <t hangText="Intra-Link Mobility"><vspace blankLines="0"/>

                  Intra-Link Mobility is mobility between wireless access points within 
                  an IP Link.  Typically, this kind of mobility only involves Layer 2 
                  mechanisms, so Intra-Link Mobility is often called Layer 2 mobility.  No 
                  IP link configuration is required upon movement since the link does not 
                  change, but some IP signalling may be required for the mobile node to 
                  confirm whether or not the change of wireless access point also 
                  resulted in a change of IP link.  If the IP link consists of a single 
                  access point/router combination, then this type of mobility is 
                  typically absent.

               </t>
               <t hangText="Mobile Access Gateway (MAG)"><vspace blankLines="0"/>

                  A Mobile Access Gateway (MAG) is a router embedded in a device that terminates
                  a specific link layer technology to which mobile nodes attach themselves.  It
                  terminates one end of the MAG of the connection to one or more Local Mobility
                  Anchors and participates in the NetLMM protocol exchange.

               </t>
               <t hangText="Local Mobility Anchor (LMA)"><vspace blankLines="0"/>

                  A local mobility anchor (LMA) is a router that terminates connections to multiple
                  Mobile Access Gateways, services mobility requests for mobile nodes moving within
                  a NetLMM system, and participates in the NetLMM protocol exchange.

               </t>
               <t hangText="NetLMM Domain"><vspace blankLines="0"/>

                  A NetLMM domain is a set of multiple MAGs and a set of one or more LMAs interconnected
                  within an access network that provides mobility operations for attached mobile nodes
                  through the execution of the NetLMM protocol.

               </t>
               <t hangText="NetLMM Address"><vspace blankLines="0"/>

                  The invariant IP address of the MN inside the NetLMM domain.
                  For IPv6 it is assumed that this is an invariant routable IP address with
                  global scope.

               </t>
               <t hangText="NetLMM Network Prefix"><vspace blankLines="0"/>

                  The NetLMM Network Prefix (NNP) is the IPv6 link prefix of the NetLMM address.

               </t>
            </list>
         </t>
      </section>
      <section anchor="entities" title="Functional Entities">
         <t>

            The principal functional entities in a NetLMM infrastructure are the Mobile
            Access Gateway (MAG) and the Local Mobility Anchor (LMA).  An access network
            with NetLMM based mobility support may also have other nodes which support
            various other functionality such as AAA, routing, DNS, etc., and the
            functionality of these nodes may be used by the MAG and the LMA, but the
            operation of such additional nodes need not be changed in any way for the proper
            operation of the NetLMM protocol.

         </t>
         <t>
            <figure>
               <artwork><![CDATA[
           +---------+                    +---------+
           | LMA La1 | (other LMAs)       | LMA Lb1 | (other LMAs)
           +---------+                    +---------+
             @    @                           @
            @      @                          @
           @        @                         @   (other routers)
          @          @                        @
         @            @                       @
        @              @                      @
    +-------+       +-------+             +-------+
    |MAG Ra1|       |MAG Ra2|(other MAGs) |MAG Rb1|  (other MAGs)
    +-------+       +-------+             +-------+
        *             *                       *
       * *            *                      * *
      *   *           *                     *   *
     *     *          *                    *     *
    *       *         *                   *       *
   *         *        * (other APs)      *         * (other APs)
  /\         /\       /\                /\         /\
 /AP\       /AP\     /AP\              /AP\       /AP\
/ Pa1\     / Pa2\   / Pa3\            / Pb1\     / Pb2\
------     ------   ------            ------     ------

   +--+      +--+      +--+            +--+
   |MN|----->|MN|----->|MN|----------->|MN|
   +--+      +--+      +--+            +--+
 Intra-link      Local        Global
 (Layer 2)      Mobility     Mobility
  Mobility

]]>
               </artwork>
	       <postamble>Figure 1</postamble>
            </figure>
         </t>
         <t>
            <list style="hanging">
               <t hangText="The Mobile Access Gateway"><vspace blankLines="0"/>

                  The Mobile Access Gateway (MAG) is a router that a mobile node is attached to as
                  the first hop router in the NetLMM infrastructure.  The MAG is connected to the mobile node over some specific
                  link provided by a link layer but the NetLMM infrastructure is agnostic about the link layer technology that
                  is used.  Each MAG has its own identifier used in NetLMM protocol messaging between the MAG and the LMA.
                  The important interfaces between link layer specific functions and the NetLMM function reside on the MAG.
                  There are multiple MAGs in a NetLMM infrastructure.
               </t>
               <t hangText="The Local Mobility Anchor"><vspace blankLines="0"/>

                  The local mobility anchor (LMA) is a router that maintains reachability to
                  a mobile node's address while the mobile node moves around within the
                  NetLMM infrastructure.  It is responsible for maintaining forwarding
                  information for the mobile nodes which includes a set of mappings to
                  associate mobile nodes by their identifiers with their address
                  information, associating the mobile nodes with their serving MAGs and the
                  relationship between the LMA and the MAGs.  There may be one or more LMAs
                  in a NetLMM infrastructure.

               </t>
            </list>
         </t>
      </section>
      <section anchor="overview" title="Protocol Overview">
         <t>

            The protocol consists of two groups of messages.  The first group provides the basic
            mobility support, which is the end purpose of the protocol, while the second group
            provides necessary support for maintaining and managing association and connectivity
            between the LMAs and MAGs.  

         </t>
         <t>

            It is not assumed that a MAG is associated with only a single LMA.  If there exists
            multiple LMAs in a NetLMM Domain, each MAG would most likely be associated with, and
            potentially communicate with all the LMAs rather than only a single LMA.

         </t>
         <t>

            However, the same is not true for mobile nodes.  As they move around, and their
            traffic is routed through various MAGs, their routing state is handled by one
            specific LMA; the serving LMA does not change.  As for the relationship between
	    an MN and a MAG, this should preferably be seen as a relationship between the
	    MN's identity (ID) or IDs and the MAG or MAGs.  From the viewpoint of the NetLMM
	    protocol, each MN ID, rather than each MN, is treated as a separate entity.
	    Normally, each MN ID is associated with one MAG, and traffic related to that MN
	    ID is routed through one MAG; but during hand-over, especially in the case of
	    make-before-break hand-over, an MN ID may be associated with multiple MAGs.  

         </t>
         <t>

	    Note that the MN ID used by the NetLMM protocol is not necessarily or maybe not
	    even mostly the same as the ID the MN uses when authenticating.  It could be a
	    technology-specific ID assigned by the network, or it could be something like
	    the SEND key.

         </t>
         <section anchor="overview.mm" title="Mobility Management">
         <t>

            The NetLMM infrastructure uses 3 messages pairs to manage the
            attachment, departure, mobility, and other activities of mobile nodes within the
            infrastructure:

	 </t>
	 <t>
	    
            <?rfc subcompact="yes"?>
            <list style="symbols">
	       <!-- <t>LMA Allocation</t> -->
               <t>Location Registration / Ack</t>
               <t>Location Deregistration / Ack</t>
	       <!--
               <t>Routing Setup</t>
               <t>Routing Removal</t>
               <t>MN Address Setup</t>
               <t>MN Address Removal</t>
	       -->
            </list>
            <?rfc subcompact="no"?>

         </t>
	 <!--
         <t>

            When a mobile node is to receive service, a policy decision point entity may
            send an LMA Allocation Request to the LMA creating state for the mobile node.
            The LMA allocation request authorizes service for a particular Mobile Node ID.
            This message may contain policy information for the mobile node.  The LMA
            acknowledges the request with an Acknowledgement.  It is possible
            that an LMA is configured to authorize service for any mobile node and in such a
            situation the LMA Allocation Request message is not
            necessary.

         </t>
	 -->
	 <t>
	    
	    When a mobile node first attaches to a NetLMM enabled network,
	    the network needs to determine if the mobile node should be provided service.
	    This can be a pre-set policy of providing service to all attaching nodes, or
	    it could be a more selective policy requiring some authentication and authorisation.
	    The mechanics of authentication and authorisation is out of scope for this document.

	 </t>
	 <t>

	    In order not to keep state in the network, the LMA does no AAA access
	    to verify whether it may provide service or not - that is done at the
	    time of authentication, and the information goes to the MAG, not to the
	    LMA.  The MAG is the gateway to NetLMM service, and screens for
	    authorisation; if authorisation is given, it signals the LMA, which
	    simply effectuates the commands from the MAG.
	    
	 </t>
         <t>

            The mobile node then needs to acquire an address (see Figure 2).
	    Whether it is using stateful or stateless address
            configuration, the serving LMA needs to be involved in the address allocation
            process.

         </t>
         <t>

	    This specification assumes that a separate subnet prefix is allocated to each
	    mobile node, and does not cover the case of the whole NetLMM domain being
	    organised as a multi-link subnet common to all mobile nodes in the domain.


         </t>
         <t>

	    As a result of the mobile node connecting, the MAG sends a Location
	    Registration message to an LMA containing its own ID, the LMA's ID and the
	    Mobile Node's ID. If no error is found, the LMA responds to the message with a
	    Location Registration Ack message.  If the MAG obtains a NetLMM subnet
	    prefix for the MN first, the MAG transfers this prefix to the LMA via the
	    Location Registration message.  This can happen for instance if the MN acquires
	    its address or delegated prefix through the use of DHCP, with the MAG acting
	    as a DHCP relay.  The MAG would then see the DHCP response, whereas the LMA
	    would not.  

         </t>
         <t>

	    On the other hand, if the LMA obtains the
	    NetLMM subnet prefix for the MN, the LMA transfers the prefix to the MAG via
	    the Location Registration Ack.
	    The LMA creates forwarding state for packets
	    based on the subnet prefix allocated to the MN.

         </t>
         <t>

	    This document assumes
	    that the NetLMM prefix is unique to each MN (per-MN subnet); therefore, the
	    MAG and the LMA can route packets destined for the MN by the NetLMM subnet
	    prefix.  The case for the shared prefix mode requires additional messages
	    which are not specified in this memo.

         </t>
         <t>

	    At any time while it is attached to the network, the MN may acquire
	    additional addresses, through DHCP or link-specific means.  If this
	    occurs, the MAG needs to update the routing state by sending a new
	    Location Registration message to inform the LMA about the current set
	    of addresses and prefixes allocated and / or delegated to the MN.  Such
	    a Location Registration message MUST contain all the valid addresses
	    and prefixes associated with the MN, not only the newly acquired address
	    or prefix.

         </t>
         <t>

	    The MAG, when receiving a successful Acknowledgement to the Location
            Registration message, creates forwarding state for packets destined to the
            mobile node, also based on the subnet prefix.  In the case of stateless address
	    configuration being used, the MAG also sends a router advertisement to the
	    attached mobile.  

            

         </t>
         <figure>
            <artwork><![CDATA[
  +-----+             +-----+             +-----+             +-----+
  | MN  |             | MAG |             | LMA |             | PDP |
  +-----+             +-----+             +-----+             +-----+
     |                   |                   |                   |
     * 1.MN Attachment   |                   |                   |
     |                   |                   |                   |
     |        2."MN_Access_Network API"      |                   |
     |        (MN ID,LMA handle)             |                   |
     |                   |                   |                   |
     |                   *                   |                   |
     |                   |                   |                   |
     |                   |3.Location Reg.    |                   |
     |                   |(MN ID,MAG handle,LMA handle,{Prefix}) |
     |                   |------------------>|                   |
     |                   |                   |                   |
     |                   |4.Acknowledgement  |                   |
     |                   |(MN ID,MAG handle,LMA handle,          |
     |                   | Prefix, Status)   |                   |
     |                   |<------------------|                   |
     .                   .                   .                   .
     .                   .                   .                   .
     .                   .                   .                   .
     |                   |                   |                   |
     |5.Router Advertisement                 |                   |
     |  (Prefix)         |                   |                   |
     |<==================|                   |                   |
     |                   |                   |                   |
     |6.IP Address DAD   |                   |                   |
     |  (Address)        |                   |                   |
     |==================>|                   |                   |

      -----  NetLMM signalling
      =====  Link-Layer signalling
      {Xxxx} Optional parameter
]]>
            </artwork>
	    <postamble>Figure 2</postamble>
         </figure>
	 <!--
	 <t>
	    
            When a mobile node then leaves the NetLMM infrastructure, the MAG sends a
            Location Deregistration message to the LMA including the Mobile Node's ID and
            the MAG's ID.  The LMA cleans up all state for the mobile node identified in the
            message and sends an acknowledgement.

         </t>
	 -->
         <t>

            It is possible for the LMA to remove a mobile node from the network.  This
            could be done for a number of policy specific reasons in the network.  The 
            two messages used are Location Deregistration and the associated
            Acknowledgement, initiated by the LMA and acknowledged by the MAG.
	    The MAG disconnects the mobile and removes all mobile state in
            response to this message.

         </t>
         <t>

            When a mobile node moves from one MAG to another MAG (see Figure 3), the new MAG
	    (nMAG) sends a Location Registration message to the LMA with the MAG handle, LMA
            handle and the MN ID.  The LMA responds by sending an acknowledgement to the
            nMAG that includes the MN ID, the MAG handle, the LMA handle, and prefix information
            that the nMAG uses in the router advertisement for the MN, and then sends a
            Location Deregistration message to the old MAG to have it remove the state it has
	    which is related to the MN.


         </t>
         <figure>
            <artwork><![CDATA[
  +-----+            +-------+           +-------+            +-----+
  | MN  |            |old MAG|           |new MAG|            | LMA |
  +-----+            +-------+           +-------+            +-----+
     |                   |                   |                   |
     * 1.MN Attachment   |                   |                   |
     |                   |                   |                   |
     |                   |       2."MN_Access_Network API"       |
     |                   |        (MN ID,LMA handle,Prefix)      |
     |                   |                   |                   |
     |                   |                   *                   |
     |                   |                   |                   |
     |                   |                   |3.Location Registration
     |                   |              (MN ID,MAG handle,LMA handle,
     |                   |                   |  {Prefix} )       |
     |                   |                   |------------------>|
     |                   |                   |                   |
     |                   |                   |4.Acknowledgement  |
     |                   |              (MN ID,MAG handle,LMA handle,
     |                   |                   |  Prefix,Status)   |
     |                   |                   |<------------------|
     |                   |                   |                   |
     |                   | 5.Location Deregistration             |
     |                   |   (MN ID, MAG handle,LMA handle)      |
     |                   |<--------------------------------------|
     |                   |                   |                   |
     |                   | 6.Acknowledgement |                   |
     |                   | (MN ID,MAG handle,LMA handle,Status)  |
     |                   |-------------------------------------->|
     |                   |                   |                   |
]]>
            </artwork>
	    <postamble>Figure 3</postamble>
         </figure>
	 <!--
         <t>

            The mobile node can at any time configure new IP addresses for itself using
            stateless address auto-configuration and this operation is supported in NetLMM.
            When the mobile issues a new address DAD request, the MAG sends a MN Address
            Setup Request to the LMA with the mobile node's ID and the new NetLMM address.
            The LMA validates the usability of the address, updates forwarding state, and
            acknowledges the request with an Acknowledgement to
            the serving MAG which then replies to the MN DAD operation.  The means through
            which the NetLMM infrastructure knows that the mobile node is attached, leaving,
            or moving is beyond the scope of this protocol specification.  It is envisioned
            that this information is largely access network specific and that the MAG uses
            an API to trigger much of the operation described herein.

         </t>
	 -->
         </section>
         <section title="Setup and Node Association">
         <t>

            The NetLMM infrastructure uses 3 message pairs to establish and
            maintain associations between the MAGs and the LMAs:

         </t>
         <t>
            <?rfc subcompact="yes"?>
            <list style="symbols">
               <t>Association Request / Ack</t>
               <t>Disassociation Request / Ack</t>
               <t>Heartbeat / Ack</t>
            </list>
            <?rfc subcompact="no"?>
         </t>
         <t>

            A MAG associates itself with an LMA by sending an Association Request message (see
            Figure 4) that
            includes its MAG handle and the supported data forwarding modes (such as IPv6-in-IPv6)
            <xref target="RFC2473" />.
            In response the LMA creates an association with the MAG and populates
            state information about the association.  The LMA responds, providing 
            an agreed upon data forwarding mode to the MAG.  The MAG can undo the relationship
            with the LMA through sending a Disassociation Request, to which the LMA responds with
            an acknowledgement.  Heartbeat messages MAY be sent between the MAG and LMA to
            determine the current status of the reachability of the other entity.  All of these
            messages may be sent optionally over an IPsec connection if additional security is
            desired.

         </t>
         <figure>
            <artwork><![CDATA[
   +-----+                                   +-----+
   | MAG |                                   | LMA |
   +-----+                                   +-----+
      |                                         |
      | Association Request                     |
      | (MAG handle, LMA handle, DataTransport) |
      |---------------------------------------->|
      |                                         |
      | Acknowledgement                         |
      | (MAG handle,LMA handle, Data-Transport, Status) 
      |<----------------------------------------|
      .                                         .
      .                                         .
      .    (Regular operation message flows,    .
      .     optionally Heartbeats)              .
      .                                         .
      | Disssociation Request                   |
      | (MAG handle, LMA handle)                |
      |---------------------------------------->|
      |                                         |
      | Acknowledgement                         |
      | (MAG handle,LMA handle, Status)         |
      |<----------------------------------------|
]]>
            </artwork>
	    <postamble>Figure 4</postamble>
         </figure>
         </section>
         <section anchor="msg.transport" title="Message Transport">
            <t>

               The NetLMM control messages defined in this document are carried by the
               User Datagram Protocol <xref target="RFC0768">RFC 768</xref> using well known port
               number NETLMM_UDP_PORT (TBD -- assigned by IANA -- please replace 'NETLMM_UDP_PORT
	       with the actual port number here and below).

            </t>
	    <t>

	       Any implementation of the NetLMM protocol MUST include support for IPsec
	       protected transport, using Encapsulating Security Payload <xref target="RFC4303"/>
	       in transport mode.  IPsec SHOULD be used unless other means of protecting the
	       NetLMM control signalling provide enough security within the NETLMM domain.  If
	       IPsec is used, it MUST use a non-NULL authentication algorithm to provide data
	       origin authentication.

	    </t>
            <t>

               The message sender SHOULD include a non-zero UDP Checksum.  The recipient
               of the message MUST process and check the UDP checksum.  A Zero checksum
               SHOULD be accepted by the recipient.

            </t>
            <t>

               The sender and initiator of a message exchange MUST use the following
               UDP ports:

               <list style="symbols">
                  <t>
                     Source Port: variable
                  </t>
                  <t>
                     Destination Port: NETLMM_UDP_PORT 

                  </t>
               </list>

               When the recipient of a NetLMM message sends an Acknowledgement, the following
               UDP ports MUST be used:

            </t>
            <t>

               <list style="symbols">
                  <t>
                     Source Port: variable
                  </t>
                  <t>
                     Destination Port: Copied from the source port of the received message.
                  </t>
               </list>
            </t>
	    <section anchor="msg.transport.retransmit" title="Message Retransmission">
	       <t>


		  To ensure reliable delivery of control messages, NetLMM 
		  requires a positive acknowledgement from the receiver and 
		  retransmission by the sender for an unacknowledged message.

	       </t>
	       <t>

		  Each request message has a corresponding acknowledgement message,
		  which must be used to acknowledge receipt of the request message.

		  In the acknowledgements, NetLMM entities can append message options
		  (defined in <xref target="options"/>) according
		  to the protocol operation (<xref target="overview" /> and <xref
		  target="messages" />).

	       </t>
	       <t>

		  NetLMM entities maintain a retransmission timer T-rtx
		  and MUST support the basic back-off scheme described below for the
		  retransmission timeout (RTO).

	       </t>
	       <t>

		  After a NetLMM control message has been sent, the NetLMM entity
		  initialises T-rtx with an RTO value of RTO_INIT.  If the
		  acknowledgement of the associated NetLMM control message is received
		  before T-rtx has expired, T-rtx is stopped.  If T-rtx expires before
		  the acknowledgement is received, the NetLMM entity retransmits the
		  packet using the same sequence number as for the original packet.

	       </t>
	       <t>

		  For each retransmission, the NetLMM entity should set the new RTO
		  value to twice the previous RTO duration (e.g. new_RTO = 2 * previous_RTO).
		  The RTO value SHOULD not exceed the limit of RTO_MAX seconds.
		  The value for RTO_INIT and RTO_MAX should be configurable, with a
		  resolution better than 1 second (such as 1 ms, for instance).

	       </t>
	       <t>

		  In case a NetLMM entity has multiple associations, an individual
		  RTO must be maintained for each associated NetLMM peer entity.

	       </t>
	       <t>

		  Optionally, NetLMM entities MAY use more enhanced schemes to
		  dynamically re-calculate and adjust the RTO. As an example, the RTO
		  could be derived from periodic round trip time (RTT) measurements
		  and RTT deviations, as utilised by the Stream Control Transport
		  Protocol (SCTP) <xref target="RFC2960" />. If no enhanced approach for RTO
		  derivation is supported, NetLMM entities MUST use the basic
		  approach as described above. 

	       </t>
	       <t>

		  Heartbeat messages are not considered NetLMM control messages in the
		  context of this section; they are handled according to
		  <xref target="msg.heartbeat.handling" /> and are not
		  re-transmitted.

	       </t>
	       <t>

		  The default values for RTO_INIT and RTO_MAX are defined as follows:

		  <list>
		     <t>RTO_INIT =  1 second</t>
		     <t>RTO_MAX  = 64 seconds</t>
		  </list>
	       </t>
	    </section>
	    <section anchor="msg.transport.reorder" title="Message Re-ordering">
	       <t>

		  If messages from a MAG regarding a specific MN are received out-of-order,
		  there are cases where an MN may be left without service unless care is taken
		  to ensure processing of messages in the correct order.

	       </t>
	       <t>

		  One example of such a situation is if a mobile node acquires multiple
		  prefixes through DHCP, but the initial Location Registration message, indicating
		  only one allocated prefix, is
		  lost and subsequently re-transmitted.  Another Location Registration message,
		  generated after a second prefix allocation or delegation has taken place,
		  will indicate both prefixes.  If the initial Location Registration message is
		  processed after the second Location Registration message, the Routing Cache at
		  the LMA will only contain routing information for the initial prefix, not for
		  the later prefix.

	       </t>
	       <t>

		  To avoid problems due to out-of-order processing of messages, the MAG MUST
		  ensure that no message pertaining to a given MN or sets of MNs are sent
		  until any previous message pertaining to the same MN or MNs has been acknowledged
		  by the LMA.

	       </t>
	    </section>	    
	    <section anchor="msg.transport.rate" title="Message Rate-Limitation">
	       <t>

		  In addition to the retransmission mechanism, NetLMM entities MUST
		  implement a configurable rate limitation, so that situations where
		  message storms may occur, there is an upper limit on the number of
		  messages per second that may be originated by an entity towards another.
		  The message rate limitation SHOULD be dynamic, so that when for instance
		  the heartbeat mechanism indicates that the peer is heavily loaded, the
		  rate limit is lowered.

	       </t>
	    </section>
         </section>
         <section anchor="overview.idsplit" title="Identity - Locator Split">
	    <t>

	       The protocol has been explicitly designed to support the use of NetLMM node
	       identifiers which are separate from the node locators (addresses).  In
	       addition to what some may claim is a philosophically pleasing separation of
	       distinct and separate functions, this provides some direct practical benefits:

	    </t>
	    <t>

	       <list>
		  <t>

		     With nodes always being identified by their identities (called handles in
		     this document) rather than by their address, the protocol has the potential
		     of running unchanged on infrastructure using different IP addresses types,
		     or even mixing multiple address types.

		  </t>
		  <t>

		     A node identified by one identifier may have multiple addresses, belonging
		     to multiple interfaces.  This makes it easier to design high-availability
		     and high-performance hardware for the NetLMM nodes, without the nodes
		     having to be individually configured with knowledge of the multiple interfaces
		     and addresses which may belong to each of its peers.

		  </t>
	       </list>

	    </t>
	    <t>

	       Note that this document does not prescribe which kind of identifiers should
	       be used as LMA and MAG identifiers, and does not prescribe a mechanism to resolve
	       identifiers to addresses.  By default, the simplest possible resolver mechanism
	       and identifier choice is assumed:  The use of a node's global IPv6 address as
	       identifier, with the identity to location resolver function being to use the
	       identity as locator.

	    </t>
         </section>
         <section anchor="overview.linklocals" title="Handling of Link-Local Addresses">
	    <t>

	       Depending on how link-local addresses are handled, their existence may
	       cause trouble for applications.

	    </t>
	    <t>

	       There are a number of different ways that link-local addresses could be handled
	       within a network with NetLMM mobility support:

	    </t>
	    <t>
	       <list style="letters">
		  <t>
		     Link-local addresses may have network-wide scope.  This is discussed at
		     length in <xref target="I-D.thaler-intarea-multilink-subnet-issues" />, and
		     is not to be recommended.
		  </t>
		  <t>
		     Link-local addresses may have MAG-wide scope; i.e., all MNs attached to
		     the same MAG will have link-local reachability to each other.  The consequence
		     of this is that nodes may discover they have link-local reachability at one
		     instant in time, but be deprived of it at the next instant.  In other words,
		     because of node movements, nothing can really be assumed about the
		     reachability of other nodes through link-local addresses from one moment
		     to another.
		  </t>
		  <t>
		     Link-local addresses have MN-scope only, or put in a different way,
		     the MN has a point-to-point link with the MAG.  In this case, the
		     MN will never discover link-local addresses belonging to other MNs,
		     and applications on the MN will not be in a position of being able
		     to make erroneous assumptions about link-local reachability of other
		     nodes.
		     
		  </t>
	       </list>
	    </t>
	    <t>

	       This document also assumes that link-local addresses are handled according to
	       method c. above, which is effectively the same manner as global addresses are
	       handled: The link-local addresses are unique to each MN, or expressed with
	       different words, the link between the MN and the MAG is effectively a
	       point-to-point link, with no other nodes than the MN and the MAG on the link.

	    </t>
	 </section>


      </section>
      <section anchor="messages" title="Message Format and Message Types">
         <section anchor="msg.format" title="Message Format">
            <t>

               An NetLMM message consists of a header followed by one or more
               options.  The message header is common and messages are
               distinguished by Type field in the header.  NetLMM options are
               in TLV format and 8-octet aligned, with a Type field divided into
               two parts; Option Type and Option Sub-Type.  All option payloads whose length is not a
               unit of 8 octets must be padded to the correct alignment.

            </t>
            <t> 
               All NetLMM messages start with the following common header.  Parameters for each message are contained in the option format (see following sections).
            </t>
            <figure>
               <artwork><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Version   |      Type     |         Sequence Number       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Reserved                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                         Src ID Option                         .
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                         Dst ID Option                         .
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                                                               .
   .                            Options                            .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  ]]>
               </artwork>
            </figure>
            <t>
               <list style="hanging">
                  <t hangText="Version"><vspace blankLines="0"/>
                     An 8-bit number, indicating the NetLMM protocol version.
                     The version of the NetLMM protocol specified in this document is 1. 
                  </t>
                  <t hangText="Type"><vspace blankLines="0"/>

                     8-bit value indicating the NetLMM message type.
                     The message types are specified below, in following sections.
		     <!--
                     The message type values defined in this document are:

                     <?rfc subcompact="yes"?>
                     <list>
                        <t hangText="0:"> LMA Allocation Request / Ack</t>
                        <t hangText="1:"> Association Request / Ack</t>
                        <t hangText="2:"> Disassociation Request / Ack</t>
                        <t hangText="3:"> Location Registration / Ack</t>
                        <t hangText="4:"> Location Deregistration / Ack</t>
                        <t hangText="9:"> Heartbeat / Ack</t>
                        <t hangText="10:"> Acknowledgement / Ack</t>
                     </list>
		     -->
                     <?rfc subcompact="no"?>

                  </t>
                  <t hangText="Sequence Number"><vspace blankLines="0"/>

                     16-bit length, used to ensure the correspondence of request and
                     acknowledgement messages between the MAG and the LMA. The
                     sequence number is exchanged between given MAG and LMA, and configured
                     when MAG has joined to a NetLMM domain through the exchange of Association
                     Request/Acknowledgement messages.  Sequence Number comparisons MUST be
                     performed modulo 2^16, i.e., the number is a free running counter
                     represented modulo 65536. A Sequence Number in a received message is
                     considered less than or equal to the last received number if its value
                     lies in the range of the last received number and the preceding 32768
                     values, inclusive.  For instance, if the last received sequence number
                     was 15, then messages with sequence numbers 0 through 15, as well as
                     32783 through 65535, would be considered 'less than or equal'.
		     <vspace blankLines="1"/>
		     Sequence numbers are unique to a MAG-LMA association, based on
		     the MAG handle and LMA handle.  If a MAG or an LMA has multiple
		     IP addresses, they all share one sequence number series.

                  </t>
                  <t hangText="Reserved"><vspace blankLines="0"/>

                     32-bit field reserved for future use.  The value MUST be initialised to
                     zero by the sender, and MUST be ignored by the receiver.

                  </t>
                  <t hangText="Src ID Option"><vspace blankLines="0"/>

		     An ID Option (<xref target="formats.option.id" />) giving the ID of the
		     source of the message

                  </t>
                  <t hangText="Dst ID Option"><vspace blankLines="0"/>

		     An ID Option giving the ID of the destination of the message.

                  </t>
                  <t hangText="Options"><vspace blankLines="0"/>

		     Any other options associated with the message.

                  </t>
               </list>
            </t>
         </section>

	 <!--
	 Message            parameters
	 =======	    ==========

	 (Messages for the initiation phase)

	 LMA Allocation     [MN]
	 LMA Alloc Ack      [(MN), Status]
	 Assoc Req          [MAG, (LMA), DataTrans]
	 Assoc Req Ack      [(MAG), LMA, DataTrans, Status]
	 Disassoc           [MAG, (LMA)]
	 Disassoc Req Ack   [(MAG), LMA, Status]
	 Heartbeat          [MAG, LMA, heartbeat#]
	 Heartbeat Ack      [MAG, LMA, heartbeat#, Status]

	 (Messages for the operational phase)
	 Loc Reg            [MN, MAG, LMA. (Prefix)]
	 Loc Reg Ack        [MN, MAG, LMA, (Prefix), Status]
	 Loc Dereg          [MN, MAG, LMA, Timer]
	 Loc Dereg Ack      [MN, MAG, LMA, Timer, Status]

	 MN Addr Setup      [MN, MAG, LMA, Address]
	 MN Addr Setup Ack  [MN, MAG, LMA, Status]
	 MN Addr Remove     [MN, MAG, LMA, Address]
	 MN Addr Remov Ack  [MN, MAG, LMA, Status]
	 Routing Setup      [MN, MAG, LMA, Address]
	 Routing Setup Ack  [MN, MAG, LMA, Status]
	 Routing Remove     [MN, MAG, LMA, Address]
	 Routing Remove Ack [MN, MAG, LMA, Status]

	 -->
	 <!--
         <section anchor="mgs.allocation" title="LMA Allocation Request">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: 0</t>
		  <t>Required options: Sender ID, LMA handle, MN ID</t>
		  <t></t>
		  <t>Acknowledgement Message Type: 64</t>
		  <t>Required options: Status</t>
		  
		  <t>Implementation: Mandatory</t>
		  <t>Use: Optional</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               The LMA Allocation Request message MAY be used to allocate an LMA for
               the MN that is initially attached to the network so that subsequent
               Location Registration messages from MAGs to which the
               MN is attached can be validated.  This message containing the MN ID is sent to the
               selected LMA and may come from various nodes such as the MAG to
               which the MN is attached or the PDP that is involved in the
               authentication of the MN.  The LMA Allocation Request is optional
               and the LMA may be allocated by other means (e.g., static allocation)
               and can be configured to serve the MN without this message.

            </t>
            <t>

               An Acknowledgement of the The LMA Allocation message is sent from the LMA to
               the source of the LMA Allocation Request message to indicate the status of the
               request (success or error code).

            </t>

         </section>
	 -->
         <section anchor="msg.location-reg" title="Location Registration">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: 1</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Timestamp</t>
		  <t></t>
		  <t>Acknowledgement Message Type: 65</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               The Location Registration message is sent from the MAG to the LMA when the
               MAG detects the MN having accessed the network without an IP address, or when
               an MN obtains another prefix/IP address.  The mobility state of the MN, in
	       the MAG and LMA, is created or updated using this message.  The message may
	       contain multiple Prefix Allocation (<xref target="formats.option.address" />)
	       and Prefix Delegation (<xref target="formats.option.delegation" />) Options.

            </t>
            <t>

	       The forwarding
	       state for a MN is fully defined by the Prefix Allocation and Delegation
	       Options if any are present.  On receipt of a Location Registration message
	       containing one or more Prefix Allocation and / or Prefix Delegation Options,
	       any old forwarding state is replaced by the forwarding state defined by the
	       latest received prefix options.  If the Location Registration does not
	       contain any Prefix Allocation or Prefix Delegation Option, the forwarding
	       state is unchanged, and Prefix Allocation and Prefix Delegation Options
	       describing the state are returned from the LMA to the MAG in the Location
	       Registration Acknowledgement.

	       <!--
	       The IP address of the MN is not known at this point
               and the MN Address Setup message must follow to update the mobility
               state and to set up the routing for the MN. This message contains
               the MN ID, MAG handle and LMA handle.
	       -->
	       


            </t>
            <t>

               The Location Registration Acknowledgement is sent from the LMA to the
               MAG to acknowledge the receipt of the Location Registration message.
               If the registration is successful, the LMA sends the NetLMM prefix
               on this message, which in turn is used for the Router Advertisement
               sent by the MAG.

            </t>
         </section>
         <section anchor="msg.location-dereg" title="Location Deregistration">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: 2</t>
		  <t>Required options: MAG handle, LMA handle, MN ID</t>
		  <t></t>
		  <t>Acknowledgement Message Type: 66</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               The Location Deregistration message is sent from the LMA to a MAG to delete
               the mobility state of the MN.  The LMA sends this message when it determines
               that the MN is at a new location.  This message contains the MN ID, MAG handle,
               LMA handle and may contain a Deregistration Timeout option, providing a delayed
	       deregistration.

            </t>
            <t>

               An Acknowledgement message is sent back to the source of the Location
               Deregistration message to acknowledge the receipt of the Location
               Deregistration message.  This message may contain the applied
	       deregistration delay time.

            </t>
         </section>
	 <!--
         <section anchor="msg.address-set" title="MN Address Setup">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Address </t>
		  <t></t>
		  <t>Acknowledgement Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               When the MAG determines that the MN has obtained its NetLMM address
               by for example the neighbor advertisement (the DAD procedure) or the
               DHCP server, the MAG sends he MN Address Setup message to the LMA to
               update the mobility state and to create a routing entry for the MN on the
               LMA. This message contains the MAG handle, LMA handle and one or more MN
               ID(s) and NetLMM address(es) assigned to the MN(s). 

            </t>
            <t>

               An Acknowledgement is sent from the LMA to the MAG to acknowledge the receipt
               of the MN Address Setup message and to notify the MAG if the NetLMM
               address(es) contained in the MN Address Setup message are accepted (the DAD
               procedure). 

            </t>
         </section>
         <section anchor="msg.address-remove" title="MN Address Remove">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Address</t>
		  <t></t>
		  <t>Acknowledgement Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               When the MAG determines that one of the MN's
               NetLMM address(es) is no longer valid or used, the MAG sends the MN Address
               Remove message to the LMA to delete the corresponding mobility state and routing
               entry in the LMA. This message contains the MN ID, MAG handle, LMA handle and
               corresponding NetLMM address.

            </t>
            <t>

               An Acknowledgement is sent from the MAG to the LMA to
               acknowledge the receipt of the MN Address Remove message.

            </t>
         </section>
         <section anchor="msg.routing-set" title="Routing Setup">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Address</t>
		  <t></t>
		  <t>Acknowledgement Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               When the MN moves from the previous MAG to the new MAG (inter-MAG handover), the
               LMA, which already has the mobility state for the MN, sends the Routing Setup
               message to the new MAG in response to the Location Registration message from the
               new MAG. This message is used to update the routing on the new MAG and contains
               the MN ID, MAG handle, LMA handle and one or more NetLMM address(es) assigned to the MN.

            </t>
            <t>

               An Acknowledgement message is sent from the MAG to the LMA to
               acknowledge the receipt of the Routing Setup message.  
            </t>
         </section>
         <section anchor="msg.routing-remove" title="Routing Remove">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Address</t>
		  <t></t>
		  <t>Acknowledgement Message Type: TBD</t>
		  <t>Required options: MAG handle, LMA handle, MN ID, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               When the LMA determines that one or more NetLMM address(es) is/are
               no longer valid by for example the DHCP server, the LMA sends the
               Routing Remove message to the MAG to delete the corresponding
               routing entry/entries on the MAG. This message contains the MN ID,
               MAG handle, LMA handle and NetLMM address(es) of the MN.

            </t>
            <t>

               An Acknowledgement is sent from the MAG to the LMA to acknowledge
               of the receipt of the Routing Remove message.

            </t>
         </section>
	 -->
         <section anchor="msg.associate" title="Association Request">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: 16</t>
		  <t>Required options: MAG handle, LMA handle, Data Transport</t>
		  <t></t>
		  <t>Acknowledgement Message Type: 80</t>
		  <t>Required options: MAG handle, LMA handle, Data Transport, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               The Association Request is used to set up the control and data plane
               relationship between the MAG and LMA. This message is sent from the MAG
               to the LMA in the MAGs initiation phase, before it enters the operational
               phase and handles MN Location Registration.  The message
               contains the sender's ID, its functional capabilities and supported data
               forwarding modes.  The
               data forwarding mode specifies the tunnel method of the data plane (e.g.,
               IP-in-IP). The tunnel between the MAG and LMA is bidirectional, which is
               achieved by establishing two unidirectional tunnels in opposite
               directions.

            </t>
            <t>

               An acknowledgement to the the Associate Request message is sent from the LMA
               to the MAG to indicate the status of the request (success or error code). If
               the request is successful, the receiver of the request also sends back one
	       choice from each set of capabilities specified in the Association Request,
	       indicating for each capability the method which will be used by the two nodes.  

            </t>
         </section>
         <section anchor="msg.disassociate" title="Disassociation Request">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: 17</t>
		  <t>Required options: MAG handle, LMA handle</t>
		  <t></t>
		  <t>Acknowledgement Message Type: 81</t>
		  <t>Required options: MAG handle, LMA handle, Status</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Mandatory</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>


               The Disassociation Request message is sent from the MAG to the LMA or vice versa to
               tear down the control and data plane relationship between them.  This
               message contains the MAG handle and LMA handle.

            </t>
            <t>

               An acknowledgement of the the Disassociate Request message is sent from the
               LMN to the MAG or vice versa to indicate the status of the request (success
               or error code).

            </t>
         </section>
         <section anchor="msg.heartbeat" title="Heartbeat">
            <t>
	       <?rfc subcompact="yes"?>
	       <list>
		  <t>Request Message Type: 18</t>
		  <t>Required options: MAG handle, LMA handle</t>
		  <t></t>
		  <t>Acknowledgement Message Type: 82</t>
		  <t>Required options: MAG handle, LMA handle</t>
		  <t></t>
		  <t>Implementation: Mandatory</t>
		  <t>Use: Optional</t>
	       </list>
	       <?rfc subcompact="no"?>
            </t>
            <t>

               The Heartbeat message is sent from the MAG to LMA or vice versa to
               obtain the connectivity status.  This message contains the MAG handle and the
               LMA handle.  It MAY contain other options, such as a Timestamp Option.
	       Contrary to the case for other NetLMM messages, Heartbeat messages
	       are never re-transmitted.

            </t>
            <t>

               The Heartbeat Ack is sent back from the node that received the
               Heartbeat message to its peer.  This message contains the MAG handle and the LMA
               ID.  It MAY contain other options, such as a Timestamp Option.

            </t>
	    <section anchor="msg.heartbeat.handling" title="Heartbeat Handling">
	       <t>

		  If used, Heartbeats are sent at a fixed, configurable rate, determined
		  by the HEARTBEAT_SEND_INTERVAL, and a history is kept for the last
		  HEARTBEAT_HISTORY_SIZE heartbeats.  The history has a number of slots
		  (equal to HEARTBEAT_HISTORY_SIZE), and each slots holds the Sequence
		  Number of the Heartbeat message sent in that time-slot, the time at
		  which the Heartbeat message was sent, and the number of Heartbeat
		  Acknowledgements that were received during that time-slot.  

	       </t>
	       <t>

		  The following algorithm is used to detect connectivity and load problems:

	       </t>
	       <t>

		  Each time a Heartbeat message is sent, the message sequence number is
		  registered in the heartbeat history.  A count is also made of the
		  number of received Heartbeat Acknowledgements recorded in the heartbeat
		  history.  Except during startup, when the number of heartbeats recorded
		  in the history is less than HEARTBEAT_HISTORY_SIZE, the heartbeat loss
		  ratio is calculated as (heartbeats_sent - received_acks) /
		  (heartbeats_sent).  If the ratio is larger than a configurable value
		  HEARTBEAT_LOSS_THRESHOLD, an alarm should be raised, and the event MUST
		  be logged.  (The heartbeat loss rate can be derived from the heartbeat
		  loss ratio as loss_rate = loss_ratio / HEARTBEAT_SEND_INTERVAL).
		  
	       </t>
	       <t>

		  When a Heartbeat message is received by the destination node, it MUST respond
		  with a Heartbeat Ack with the same Sequence Number as the received Heartbeat
		  message.

	       </t>
	       <t>

		  When a Heartbeat Ack is received, the count of received acknowledgements
		  is increased for the current history time-slot and the time since the
		  corresponding Heartbeat message was sent is calculated.  If the
		  corresponding heartbeat's Sequence Number is no longer on record in the
		  heartbeat history, the value (HEARTBEAT_SEND_INTERVAL *
		  HEARTBEAT_HISTORY_SIZE is used).  If this calculated delay is larger
		  than a configurable value HEARTBEAT_DELAY_THRESHOLD, an alarm should be
		  raised, and the event MUST be logged.

	       </t>
	       <t>

		  The Heartbeat loss rate is primarily an indication of the quality of the
		  communication link, while the Heartbeat delay is primarily an indication
		  of the load of the peer.  A sudden overload situation can also manifest
		  as an apparent sudden in crease in loss rate, but in the absence of link
		  problems, a steady state high load situation will show an acceptable
		  loss rate, but a large heartbeat delay.

	       </t>
	       <t>

		  An implementation of the NetLMM protocol may adjust its resend timeout
		  value (RTO) based on both the heartbeat loss rate and the average
		  heartbeat delay.  For instance, a RTO which is lower than the average
		  heartbeat delay will result in unnecessary re-sends and added load in a
		  high-load situation.

	       </t>
	    </section>
         </section>
         <section anchor="msg.acknowledgement" title="Acknowledgements">
            <t>

               An acknowledgement MUST be sent in response to any
               non-Acknowledgement message.  It is sent from the node that received the
               initial message to the originator of that message.  It indicates that the
               initial message has been received, and also carries a status value which
               indicates the result of the operation requested by the initial message.
               
            </t>
            <t>

               The Sequence Number field of an acknowledgement message MUST be set to the
               same value as the Sequence Number of the message which it acknowledges, in
               order to support the message re-send mechanism described in <xref
               target="msg.transport" />.

            </t>
            <t>

               The acknowledgement message MUST contain at least the Status Option
               (<xref target="formats.option.status" />) except in the case of the
	       Heartbeat Acknowledgement, but may also contain
               other options which are appropriate in response to the initial message.

            </t>
         </section>
         <section anchor="msg.statuscodes" title="Message Status Codes">
            <t>
               The status codes used by the NetLMM protocol are used when acknowledging
               a message, to indicate the result of processing the associated request message.
               The status code is carried in the Status Option (<xref target="formats.option.status" />).

            </t>
            <t>

               The status codes are allocated in ranges,
               depending on their usage.  The defined ranges are as follows:
               <list style="hanging">
                  <t hangText="0 - 63: Generic Status"><vspace blankLines="0"/>
                     This range is used for status codes which are of a generic
                     nature, and not specific to MAG or LMA.
                  </t>
                  <t hangText="64 - 127: LMA-specific Status"><vspace blankLines="0"/>
                     This range is used for status codes which are specific to the LMAs.
                  </t>
                  <t hangText="128 - 191: MAG-Specific Status"><vspace blankLines="0"/>
                     This range is used for status codes which are specific to the LMAs.
                  </t>
                  <t hangText="192 - 255: Reserved"><vspace blankLines="0"/>
                     This range is reserved for future use.
                  </t>
               </list>

            </t>
            <t>

               The following values are defined by this document:

               <list>
                  <t>
                     <list style="hanging">
                        <t hangText="0: Not Applicable (N/A)"><vspace blankLines="0"/>
                           The status code is not applicable for the message.
                        </t>
                        <t hangText="1: Success"><vspace blankLines="0"/>
                           The associated request message was successfully processed.
                        </t>
                        <t hangText="2: Administratively Prohibited"><vspace blankLines="0"/>
                           An action was refused due to administrative policy reasons.
                        </t>
                        <t hangText="3: Lack of Resources"><vspace blankLines="0"/>

                           The resources needed to provide the requested service was
                           not available.

                        </t>
                        <t hangText="4: Invalid Message"><vspace blankLines="0"/>

                           The NetLMM Request message was invalid or malformed.

                        </t>
                        <t hangText="62: Vendor-Specific Status (Generic)"><vspace blankLines="0"/>

                           For use with vendor-specific messages.  Additional status detail may
                           be provided for instance in vendor-specific options.

                        </t>
                        <t hangText="63: Experimental Status (Generic)"><vspace blankLines="0"/>

                           For use during experimental implementation of new protocol
                           features, according to <xref target="RFC3692">"Assigning Experimental and Testing Numbers Considered Useful"</xref>


                        </t>
                        <t hangText="65: Duplicate Prefix"><vspace blankLines="0"/>

                           Used by the LMA when an Location Registration contains an IP
                           address or prefix that is duplicated in the same NetLMM domain.  The
                           specific invalid addresses/prefixes MUST be specified in Address
                           Options.

                        </t>
                        <t hangText="66: Invalid Prefix"><vspace blankLines="0"/>

                           Used by the LMA when an Location Registration contains an IP
                           address or prefix that is invalid in the same NetLMM domain.  The
                           specific invalid addresses/prefixes MUST be specified in Address
                           Options.

                        </t>
                        <t hangText="67: Over IP Address Limit"><vspace blankLines="0"/>

                           Used by the LMA on receipt of a Location Registration message,
			   if the maximum number of IP addresses or prefixes allowed for a
                           MN has been exceeded.  The specific addresses/prefixes which
			   were disallowed MUST be specified in Address Options.
			   
                        </t>
                        <t hangText="68: Invalid Tunnelling Method"><vspace blankLines="0"/>

                           The proposed tunnel method is not supported or unavailable.

                        </t>
                        <t hangText="69: Already Associated"><vspace blankLines="0"/>

                           The LMA already had the requesting MAG listed as associated.

                        </t>
                        <t hangText="70: Not Associated"><vspace blankLines="0"/>

                           The LMA received a Disassociate request from a MAG which was not
			   in its MAG list.

                        </t>
                        <t hangText="126: Vendor-Specific Status (LMA-specific)"><vspace blankLines="0"/>

                           For use with vendor-specific messages.  Additional status detail may
                           be provided for instance in vendor-specific options.

                        </t>
                        <t hangText="127: Experimental Status (LMA-specific)"><vspace blankLines="0"/>

                           For use during experimental implementation of new protocol
                           features, according to RFC 3692.


                        </t>
                        <t hangText="128: Requested Timeout Modified"><vspace blankLines="0"/>

			   Indicates that MAG could not comply with the timeout time
			   indicated by the LMA in a Location Deregistration message.
			   A message containing this error code should also contain a
			   Deregistration Timeout Option indicating the timeout that will be applied.


                        </t>
                        <t hangText="190: Vendor-Specific Status (MAG-Specific)"><vspace blankLines="0"/>

                           For use with vendor-specific messages.  Additional status detail may
                           be provided for instance in vendor-specific options.

                        </t>
                        <t hangText="191: Experimental Status (MAG-specific)"><vspace blankLines="0"/>

                           For use during experimental implementation of new protocol
                           features, according to RFC 3692.

                        </t>
                     </list>
                  </t>
               </list>
            </t>
         </section>
	 <!--
         <section anchor="msg.optimization" title="Message Optimization">
            <t>

               In order to minimize routing establishment delays, e.g., handover times, it may
               be important to achieve routing setup or routing changes with an absolute minimum
               number of messaging roundtrips between the MAG and the LMA.  However, given the
               messages described earlier in this section, there are several cases where 2
               messaging round-trips are needed in order to complete a routing setup.  

            </t>
            <t>

               Future versions of this document will propose optimizations which reduce the
               number of messages that must be sent in order to achieve routing setup or routing
               changes.  It is however deemed important to have agreement on the base
               functionality and the base messages before such optimizations are discussed.

            </t>
         </section>
	 -->
      </section>
      <section anchor="options" title="Option Format and Option Types">
         <section title="Option Format">
         <t>

            NetLMM defines a general extension mechanism using options to allow
            optional information to be carried in the control messages.  The options
            are encoded in a Type-Length-Value format, and are described in
            detail in the following.  The options carry additional information used
            for processing the message.  Up-to-date values for the option types are
            maintained in the online IANA registry of assigned numbers.  Each option
	    is uniquely identified by its combination of Option Type and Option Sub-Type.

         </t>
         <t>

            Format:
         </t>
            <figure>
               <artwork>
<![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|           Length              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Option-specific data                      |
   .                     (up to option length)                     .
   .                                                               .
   .                                                               .
   . . . .
]]>
               </artwork>
            </figure>
         <t>
            <list style="hanging">
               <t hangText="Option Type"><vspace blankLines="0"/>

                  This field identifies the particular type of option serving a
                  specified function.

                  <vspace blankLines="1"/>

                  The Type field in the NetLMM option is split into two ranges: Type values of
                  0
                  through 127 (inclusive) for not skippable options and 128 through 255 (inclusive)
                  for skippable options.  The recipient of a message with an unrecognised
                  non-skippable option MUST silently discard the message.  Otherwise, if no
                  unrecognised non-skippable options are found, the
                  message MUST be processed with any unrecognised skippable option
                  bypassed (i.e. move to next option using the Length field of
                  the unrecognised option) during processing by the receiver.

               </t>
               <t hangText="Option Sub-Type"><vspace blankLines="0"/>

                  This field indicates the sub-type of the option, and provides for up
                  to 256 related Option Sub-Types with the same Option Type field.  

               </t>
               <t hangText="Length"><vspace blankLines="0"/>

                  The value represents the length of the "Data" portion of the option, 
                  in unit of octets.

               </t>
            </list>
         </t>
         </section>
         <section title="Option Alignment">
         <t>

            Options are always aligned to start on an 8-octet aligned boundary, relative to
            the start of the message header.  The first 4 octets of an option has a fixed
            format, giving the Option type, sub-type, and length in octets.  When assembling
            a message, for an option which has a length in octets which is not a multiple of
            8, zero octets are added after the option up to the next 8-octet-aligned
            boundary.  The option length is not adjusted to include the padding.  When
            parsing the options of a message, any octets between the end of one option and
            the next 8-octet-aligned boundary are discarded.

         </t>
         <t>

            In other words, if we include the padding in the figure showing option field
            layout, we get the following for an option of total length N*8+3.  (Total length
            N*8+3 implies that the Length field has the value (N*8+3)-4, as the length field
            indicates the length of the option data, i.e., does not include the first 4
            octets):

            <figure>
               <artwork>
<![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|           Length              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Option-specific data                      |
   .                     (up to option length)                     .
   .                                                               .
   .                                               +-+-+-+-+-+-+-+-+
   |                                               |   Padding...  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         ...Padding                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]>
               </artwork>
            </figure>
         </t>
         </section>
         <section anchor="formats.option.id" title="ID Option">
            <t>

               The ID option carries various types of identifiers.  All messages
               related to a specific MN must include an ID option providing the MN ID.
               Multiple ID options can be included in an message.  For the purpose of the
               ID option, the ID itself is viewed as an octet sequence, but to avoid
               ID collisions, the ID is prefixed with an ID type.  An example for the
               MN ID is a NAI <xref target="RFC4282"/>.

               <figure>
                  <artwork>
<![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|           Length              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            ID-Type            |          Identifier...        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |                                                               |
   .                                                               .
   .                                                               .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     0
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

		     0

                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

                     The length of the option in octets,
                     excluding the Type, Sub-Type and Length fields.

                  </t>
                  <t hangText="ID-Type"><vspace blankLines="0"/>
                     This field indicates the type of ID carried in the remainder of
                     the option.
                     <vspace blankLines="0"/>
                     *** Note: Check whether there already exists an
                     applicable IANA registry for ID types which we could use here ***

                     <list style="hanging">
                        <t hangText="0:"> SEND <xref target="RFC3971" /> public key.</t>
                        <t hangText="1:"> NAI according to <xref target="RFC4282"/></t>
                        <t hangText="2:"> Ethernet MAC Address </t>
                     </list>

		     Additional ID-Types based on cryptographically generated identifiers
		     are expected to be used, but in order to allocate ID-Type values for
		     such identifiers it must be clearly specified exactly what goes into
		     the Identifier field in each case, to ensure interoperability.
                  </t>
                  <t hangText="Identifier"><vspace blankLines="0"/>

                     This is a variable-length octet sequence, which is expected to
                     hold an identifier of the type indicated by the ID-Type field.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.handle" title="Handle Option">
            <t>

               The handle option carries LMA and MAG handle entities called handles.
               For the purpose of the
	       handle option, the handle itself is viewed as an octet sequence, but to avoid
               handle collisions, the handle is prefixed with an handle type.


               <figure>
                  <artwork>
<![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|           Length              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Handle-Type          |          Identifier...        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |                                                               |
   .                                                               .
   .                                                               .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     0
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

                     This field indicates what the handle in this option refers to.
                     It is expected that additional Sub-Types may be defined in the future.

                     <list style="hanging">
                        <t hangText="1:">LMA handle</t>
                        <t hangText="2:">MAG handle</t>
                     </list>
                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

                     The length of the option in octets,
                     excluding the Type, Sub-Type and Length fields.

                  </t>
                  <t hangText="Handle-Type"><vspace blankLines="0"/>
                     This field indicates the type of handle carried in the remainder of
                     the option.
                     <vspace blankLines="0"/>
                     *** Note: Check whether there already exists an
                     applicable IANA registry for handle types which we could use here ***

                     <list style="hanging">
                        <t hangText="0:"> SEND <xref target="RFC3971" /> public key.</t>
                        <t hangText="1:"> NAI according to <xref target="RFC4282"/></t>
                        <t hangText="2:"> Ethernet MAC Address </t>
                        <t hangText="3:"> IPv6 Address </t>
                     </list>

		     Additional Handle-Types based on cryptographically generated identifiers
		     are expected to be used, but in order to allocate Handle-Type values for
		     such identifiers it must be clearly specified exactly what goes into
		     the Identifier field in each case, to ensure interoperability.

                  </t>
                  <t hangText="Identifier"><vspace blankLines="0"/>

                     This is a variable-length octet sequence, which is expected to
                     hold an identifier of the type indicated by the Handle-Type field.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.address" title="Prefix Allocation Option">
            <t>

               This option defines the address or prefix which has been allocated to a
               mobile node.  If the address prefix length is the same as the full address
               length, it describes a single address, otherwise it describes a prefix
               allocated to the MN.  The address or prefix can be either IPv4 and IPv6.


               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Prefix    |                    Reserved                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Address (IPv6 case)                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     1
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>
                     <list style="hanging">
                        <t hangText="0:">
                           <!-- (for IPv6) -->

                           Indicates that the data in the Address field is an IPv6 address or
                           address range.  If the Address Prefix Length is 128 this is an address,
                           otherwise it is an address range with span determined by the
                           given prefix length.

                        </t>
                        <t hangText="1:">
                           <!-- (for IPv4) -->

                           Indicates that the data in the Address field is an IPv4 address.

                        </t>
                     </list>
                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

                     The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.  When the Option Sub-Type is 0, the Length is 20, and
		     when the Sub-Type is 1, the length is 8.

                  </t>
                  <t hangText="Prefix"><vspace blankLines="0"/>

                     The number of leading bits in the Address that are valid
                     as a subnet prefix.

                  </t>
                  <t hangText="Address Prefix"><vspace blankLines="0"/>

                     Variable.  The value indicates the prefix length of the prefix or
                     address allocated to the mobile node.  If the prefix
                     length is equal to the full address length, the option describes an
                     address allocation, otherwise it describes a prefix allocation.

                  </t>
                  <t hangText="Reserved"><vspace blankLines="0"/>

                     Reserved for future use.  The value MUST be initialised to
                     zero by the sender, and MUST be ignored by the receiver.

                  </t>
                  <t hangText="Address:"><vspace blankLines="0"/>

                     If the Option Sub-Type is 0, the value is an IPv6 address, while if
                     the type is 1, the value is an IPv4 address.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.delegation" title="Prefix Delegation Option">
            <t>

               This option defines a prefix which has been 
               delegated to a mobile node.  It is used by the MAG to inform the LMA
	       about a prefix delegation to the MN which has been done through for
	       instance DHCP.  The prefix can be either IPv4 and IPv6.

	    </t>
	    <t>

	       Typically, there will be one address or prefix allocation (communicated by the
	       presence of the Prefix Allocation Option, (<xref target="formats.option.address" />)
	       taking place when a mobile node first attaches to the network through a MAG), with
	       address delegations acquired later, for instance by the use of DHCP, and communicated
	       by the use of the Prefix Delegation Option.  The LMA handles routing in the same
	       way for allocated and delegated prefixes, but needs to correctly communicate to a
	       new MAG the allocated and delegated prefixes so that the MAG can construct its
	       Routing Advertisements correctly, if such are used.

               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Prefix    |                    Reserved                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Address (IPv6 case)                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     1
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>
                     <list style="hanging">
                        <t hangText="2:">
                           <!-- (for IPv6) -->

                           Indicates that the data in the Address field is an IPv6 address or
                           address range.

                        </t>
                        <t hangText="3:">
                           <!-- (for IPv4) -->

                           Indicates that the data in the Address field is an IPv4 address.

                        </t>
                     </list>
                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

                     The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.  When the Option Sub-Type is 2, the Length is 20, and
		     when the Sub-Type is 3, the length is 8.

                  </t>
                  <t hangText="Prefix"><vspace blankLines="0"/>

                     The number of leading bits in the Address that are valid
                     as a subnet prefix.

                  </t>
                  <t hangText="Address Prefix"><vspace blankLines="0"/>

                     Variable.  The value indicates the prefix length of the prefix
                     delegated to the mobile node. 

                  </t>
                  <t hangText="Reserved"><vspace blankLines="0"/>

                     Reserved for future use.  The value MUST be initialised to
                     zero by the sender, and MUST be ignored by the receiver.

                  </t>
                  <t hangText="Address:"><vspace blankLines="0"/>

                     If the Option Sub-Type is 2, the value is an IPv6 address, while if
                     the type is 3, the value is an IPv4 address.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.transport" title="Data Transport Option">
            <t>

               This option contains data transport methods capabilities that the MAG or LMA
               has.  This option is used by Association Request message and Acknowledgement
               to negotiate the data transport method between MAG and LMA. Multiple methods
               can be contained in the field with the order of preference.  The mandatory
               transport method is IPv6-in-IPv6 <xref target="RFC2473" />, which must be
               listed.

               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Data Transport Method 1                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                                                               ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Data Transport Method n                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     2
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

		     0

                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

                     The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.
		     <vspace blankLines="1"/>
                     The number of Data Transport Method fields is equal to the Length
                     divided by the size, in octets, of the Data Transport Method field.

                  </t>
                  <t hangText="Data Transport Method"><vspace blankLines="0"/>

                     Indicates the data transport methods available at the sender in the
		     case of the Association Request message.  The methods are listed in
                     order of preference.  In the case of the Association Request
		     Acknowledgement, only one method would be listed, indicating the chosen
		     data transport method.
		     <vspace blankLines="1"/>
		     The following values are defined for the data transport method field
		     by this memo:

                     <list style="hanging">
                        <t hangText="0:"> IPv6-in-IPv6</t>
                        <t hangText="1:"> GRE</t>
                        <t hangText="2:"> IPv4-in-IPv6</t>
                     </list>
                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.timer" title="Deregistration Timeout Option">
            <t>

               This option indicates the length, in milliseconds, to keep the forwarding
               state of a given MN active after a hand-over.  When used, this option is
	       included in the Location Deregistration message and its acknowledgement.  The
               timeout time in the Location Deregistration Ack is copied from that given in
               the Timeout Option of the Location Deregistration.  If the MAG can not keep
               the MN state alive as long as the LMA has requested for some reason, the MAG
	       can indicate the preferred timeout time and return error code "Requested Timeout
	       Modified" instead of
               copying the original value.

               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Timeout Time                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     3
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

		     0
		     
                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

		     4. The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.

                  </t>
                  <t hangText="Timeout Time"><vspace blankLines="0"/>

		     Indicates the preferred delay before deleting the MN forwarding state from
		     the previous MAG during hand-over.  The value is in milliseconds.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.time" title="Timestamp Option">
            <t>

               This option contains the timestamp value in the format of an NTP timestamp (RFC
               4330, Section 3 <xref target="RFC4330" />), and records the time when the
               message is sent.  This option can be used to detect an overtaking message in
               a race condition by comparing the timestamp values of messages.  Especially during
	       hangovers, if the network suffers from a sudden propagation delay for
               some reason or the MN moves rapidly between MAGs, the timestamp may be used
               to facilitate in-order messages processing regardless of message arrival
               order.  The use of this option requires
               a reliable time distribution method, such as NTP or GPS time synchronisation,
	       with sufficient accuracy to support fast moving MNs.

            </t>
            <t>

	       If a Location Registration message received from a MAG has a timestamp
	       which is earlier than the timestamp of the most recently received message
	       pertaining to the same MN, special processing has to be done.  If the two
	       messages are from the same MAG it indicates an error condition, as the lock-step
	       message sending described in <xref target="msg.transport.reorder" /> should prevents
	       this from happening.  If the two messages are from different MAGs, the most
	       recently received message, which has a timestamp older than some previously
	       received message pertaining to the same mobile node, MUST be discarded and
	       the event logged.

            </t>
            <t>

               LMA and MAG nodes MUST support and use message timestamps in the Location
	       Registration messages.

            </t>
            <t>

	       Acknowledgements of these messages should however not carry a timestamp option.

            </t>
            <t>

	       Heartbeat messages and acknowledgements may optionally contain a timestamp
	       option for informational or diagnostic purposes.

            </t>
            <t>

               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Timestamp                           |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     4
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

		     0
		     
                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

		     8. The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.

                  </t>
                  <t hangText="Timestamp"><vspace blankLines="0"/>

		     A timestamp in the 64 bit format defined for NTP timestamps <xref target="RFC4330"/>.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.vendor" title="Vendor-Specific Option">
            <t>

               This option can be used by any vendor or organisation that has an
               IANA-allocated SMI Network Management Private Enterprise Code.
               Details of the meaning of value field is
               entirely up to the defining vendor or organisation. 







               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Vendor/Org-ID                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                             Value                             .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     5
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

		     0.

		     <vspace blankLines="1"/>

                     This field may not be assigned
                     any value different from zero by the organisations using the option;
                     only the Value field may be freely used.

                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

                     The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.

                  </t>
                  <t hangText="Vendor/Org-ID"><vspace blankLines="0"/>

                     The high-order octet is 0 and the low-order 3 octets are the SMI Network
                     Management Private Enterprise Number <xref target="RFC2578"/>, <xref
                     target="ENTERPRISE-NUM"/>, of the Vendor in network byte order.

                  </t>
                  <t hangText="Value"><vspace blankLines="0"/>

                     Variable.  Details defined by individual Vendors / Organisations.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.lifetime" title="Registration Lifetime Option">
            <t>

               This option MAY be used to indicate a limited lifetime for the state
               created as a result of <xref target="msg.location-reg" >Location Registration</xref>
	       <!-- and <xref target="msg.routing-set" >Routing Setup</xref> -->
	       messages.
               If no Registration Lifetime Option is used, the lifetime of the state
               is to be taken as "Infinite", but with the reservation that in cases
               where a node experiences an impending lack of resources, the Least
               Recently Used (LRU) states may be removed (garbage collected), to recover
               resources for continued operation.

               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Lifetime                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     6
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

		     0
		     
                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

		     4. The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.

                  </t>
                  <t hangText="Lifetime"><vspace blankLines="0"/>

                     The lifetime in seconds, with a value between 1 and 2^32 - 2.
                     The values 0 and 2^32 - 1 are reserved, and MUST NOT be used.

                  </t>
               </list>
            </t>
         </section>
         <section anchor="formats.option.status" title="Status Option">
            <t>

               This option MUST be used in Acknowledgements to indicate the status result of
               the acknowledged message.

               <figure>
                  <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Option Type   |Option Sub-Type|             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Status     |                    Reserved                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]>
                  </artwork>
               </figure>
               <list style="hanging">
                  <t hangText="Option Type"><vspace blankLines="0"/>
                     7
                  </t>
                  <t hangText="Option Sub-Type"><vspace blankLines="0"/>

		     0
		     
                  </t>
                  <t hangText="Length"><vspace blankLines="0"/>

		     8. The length of the option in octets, excluding the Type, Sub-Type and
                     Length fields.

                  </t>
                  <t hangText="Status"><vspace blankLines="0"/>

                     An 8-bit number, which indicates the Status result of handling the
                     acknowledged message.  Individual status codes are defined in
                     <xref target="msg.statuscodes" />.

                  </t>
                  <t hangText="Reserved"><vspace blankLines="0"/>

                     24-bit field reserved for future use.  The value MUST be initialised to
                     zero by the sender, and MUST be ignored by the receiver.

                  </t>
               </list>
            </t>
         </section>
      </section>
      <section anchor="specification" title="Protocol Specification">
         <section anchor="mag" title="Mobile Access Gateway Operation">
            <section anchor="mag.cds" title="Conceptual Data Structures">
               <t>

                  Each MAG MUST maintain a NetLMM Routing Cache and an LMA List.

               </t>
               <t>

                  Each MAG Routing Cache entry conceptually contains the following fields
                  for each attached MN:

               </t>
               <t>
                  <list style="symbols">
                     <t>

                        The MN ID of the attached MN. This identifier is acquired during the attach
                        procedure and is used from the MAG to identify the attached MN in the
                        Location Registration message, which is sent to the selected LMA.

                     </t>
                     <t>

                        One or more global IP addresses or address prefixes of an attached
                        MN. Each IP address or prefix is acquired from an LMA through the
			Location Registration Acknowledgement or by means of local
			operation, such as when acting as a DHCP relay (see <xref
                        target="overview.mm" /> and <xref target="msg.transport.reorder"
                        />).  According to the context of the received message or local
                        indication, an IP address is set up, updated or removed from the
                        Routing Cache.

                     </t>
                     <t>

                        The LMA handle of the LMA serving an attached MN. The serving LMA and its
                        LMA handle is acquired from the LMA selection policy, which is out of
                        scope of this specification.

                     </t>
                  </list>
               </t>
               <t>

                  Each MAG MUST maintain an LMA List, which identifies all LMAs
                  with which the MAG is associated.  The LMA List is used to perform 
                  heartbeat tests and to map an LMA handle to the associated LMA's IP address(es).
                  The LMA List also supports the procedure of bulk deregistrations at
                  all or a subset of LMAs.

               </t>
               <t>

                  The LMA List also indicates the forwarding approach which has been
                  selected for an association between the MAG and a particular LMA.  During
                  the association procedure, an LMA selects a forwarding approach from the
                  MAG's full set of forwarding capabilities.  For this the MAG appends a
                  Data Transport option, which indicates its supported forwarding
                  capabilities in decreasing order of preference, to the Association
                  message.  The Data Transport option received back from the LMA in the
                  resulting Association Acknowledgement indicates a single, selected
                  forwarding approach in one Data Transport Method field.

               </t>
               <t>

                  The LMA List conceptually contains the following fields for each LMA entry:

               </t>
               <t>
                  <list style="symbols">
                     <t>
			The LMA handle of the LMA.
                     </t>
                     <t>

                        One or more IP address(es) of the LMA. The LMA's IP address information
                        is acquired through the LMA selection policy, which is out of scope of
                        this specification.  Availability of multiple LMA IP addresses could
                        support operation of multi-homed LMAs. Details about how to handle
                        multiple LMA IP addresses is out of scope of this specification.  Message
			sequence numbers are per MAG - LMA association, based on MAG and LMA
			handles, not per IP address.

                     </t>
                     <t>

                        The selected forwarding approach for the association with an LMA. This
                        field is needed in case a single forwarding approach is set up for
                        the association with an LMA.

                     </t>
                  </list>
               </t>
               <t>

                  Each MAG MAY maintain a list of available LMAs. Such a list
                  can support the LMA selection procedure and the MAG's association
                  procedure.

               </t>
               <t>

                  The list of available LMAs comprises conceptually the following
                  fields for each LMA:

               </t>
               <t>
                  <list style="symbols">
                     <t>
			The LMA handle of the LMA.
                     </t>
                     <t>

                        One or more IP address(es) of the LMA. Availability of multiple
                        IP addresses could support the operation of multi-homed LMAs.
                        Details about how to handle multiple IP addresses is out of
                        scope of this specification.

                     </t>
                  </list>
               </t>
            </section>
            <section anchor="mag.headers" title="Processing NetLMM Headers">
               <t>
                  <list style="symbols">
                     <t>

                        The Type field MUST have a known value (<xref
                        target="msg.format"/>).  Otherwise, the receiving node MUST discard
                        the message and respond with an Error message with Status field set
                        to "Invalid Message" ).

                     </t>
                  </list>
               </t>
            </section>
               <section anchor="mag.associate" title="Association Procedure">
                  <t>

                     Each Mobile Access Gateway sends an Association Request message in
                     order to set up the control and data plane relationship with a given
                     local mobility anchor.  The actual trigger for this message is out of
                     scope of this document and may depend on network
                     configuration peculiarities.  For example, the Association Request
                     message may be sent during the MAG start up procedure.

                  </t>
                  <t>
                     The Association Request message MUST include:
                  </t>
                  <t>
                     <list style="symbols">
                        <t>

                           the MAG handle included in a NetLMM ID option.  This
                           identifier is used by the peer to identify the MAG and is
                           included in all subsequent messages.

                        </t>
                        <t>

                           the MAG's capabilities in terms of support of data transport
                           methods included in a NetLMM Data Transport Option.  The MAG MUST
                           insert in this option all possible tunnelling methods that can be
                           used with the peer LMA. Based on configuration, it is possible
                           that some tunnelling methods are used only with some LMAs: in this
                           case, the Association Request message MUST contain only the
                           tunnelling methods that are administratively permitted with that
                           specific LMA.

                        </t>
                     </list>
                  </t>
                  <t>

                     When sending an Association Request, the MAG MAY create a tentative
                     entry in its LMA List, including the LMA handle, IP address of the
                     LMA and the proposed forwarding capabilities.  However it may be that
                     the MAG does not know these data during the association procedure: in this
                     case, it does not create any tentative entry in the LMA List.

                  </t>
                  <t>

                     In order to complete the NetLMM association, the MAG MUST receive an
                     Association Acknowledgement from the peer LMA with status 1, "Success".
                     In this case, the MAG MUST create an entry in its LMA List (or update
                     the tentative entry created earlier), with the messages sent by the LMA
                     in the acknowledgement.  The MAG MUST also update the forwarding method
                     to the one indicated in the acknowledgement.

                  </t>
               </section>
               <section anchor="mag.disassociate" title="Disassociate Procedure">
                  <t>

                     The Disassociation Request can be sent both by the MAG and by the LMA
                     in order to tear down the control and data plane relationship between
		     MAG and LMA.  The event that triggers this message is out of the scope
                     of this specification; for example, the MAG may send a Disassociation
                     Request to all the LMAs present in its LMA List just before shutting
                     down.

                  </t>
                  <t>

                     In case the Disassociate Procedure is initiated by the MAG, 
                     the MAG MUST include an ID Option with the its identity in the
                     Disassociation Request.  When sending the Disassociation Request, the MAG
                     MAY set the LMA entry related to the specific LMA as tentative.  When
                     it receives an acknowledgement with status 1, "Success", the MAG
                     MUST delete the correspondent entry in its LMA List.  

                  </t>
                  <t>

                     In case the Disassociate Procedure is initiated by the LMA,
                     when the MAG receives a Disassociation Request message, it MUST
                     validate it.  If it is correct, it MUST delete the related entry in
                     its LMA List and send an acknowledgement with status 1, "Success".
                     As in all NetLMM messages, the MAG MUST include the ID option with
                     its identity.

                  </t>
               </section>
               <section anchor="mag.access" title="MN network access procedure">
                  <t>

                     When a new MN attaches to the network, the Mobile Access Gateway
                     receives an indication.  This indication can be received by very
                     different means (e.g., L2 mechanisms, AAA infrastructure) that are
                     out of scope of this specification.  In any case, regardless how this
                     is accomplished, the MAG receives a MN_Access_Network API event that
                     carries the MN identifier (e.g., MAC address of the MN, NAI) and the
                     LMA handle.

                  </t>
                  <t>

                     Upon the API notification, the MAG MUST send a Location Registration
                     message to the LMA including its own handle, the handle of the LMA, and
                     the identity of the MN. How the MAG resolves the LMA handle received in
                     the API into the LMA IP address is out of scope of this specification
                     and is part of the NetLMM bootstrapping procedure.  Viable options are
                     pre-configuration or DNS resolution (in case the LMA handle is the FQDN
                     of the LMA). In case there is only one LMA in the local domain, this
                     issue does not exist.

                  </t>
                  <t>

                     If the location registration is successfully performed, the MAG
                     receives an Location Registration Acknowledgement message from the LMA
                     with Status 1, "Success".  This message also may include a NetLMM
                     Network Prefix that the MAG MUST use for any mechanism it provides
		     for MN address allocation, e.g., when building a Router Advertisement
		     if IPv6 stateless address configuration is used.
		     (See <xref target="I-D.ietf-netlmm-mn-ar-if" /> for a more detailed description of this case).

                  </t>
                  <t>

		     The MN can acquire an address through stateless address assignment, or
		     acquire an address or prefix delegation trough stateful address
		     assignment, for instance DHCP.  When using DHCP, the MAG SHOULD be
		     configured to act as a DHCP relay.  In this case, the MAG may have to
		     add DHCP options to ensure that address allocation or prefix delegation
		     is done from the correct address pool, and to ensure that there is a
		     known binding between the MN ID and the allocated address or delegated
		     prefix.  If DHCP address allocation with the MAG as DHCP relay occurs
		     after the initial Location Registration message, the MAG has to send a
		     supplementary Location Registration message which informs the LMA about
		     the additional address allocation or prefix delegation received from
		     the DHCP server.

                  </t>
               </section>
	       <!--
               <section anchor="mag.address" title="MN IP address notification procedure">
                  <t>

                     The NetLMM protocol specification is agnostic of how the IP address
                     is assigned to the MN in the local domain.  However, the MAG needs to
                     know the IP address assigned or auto-configured by the MN in order to
                     update the routing at the LMA. For this purpose, the MAG needs to
                     play an active role in the DHCP exchange or needs to receive a
                     trigger after the MN has configured an IP address via stateless
                     auto-configuration.  How this is done is described later in this
                     section.

                  </t>
                  <t>

                     As soon as the MAG knows that a specific IP address has been
                     assigned to a MN, it MUST send a MN Address Setup message to the
                     serving LMA, including three ID options (MN ID, MAG handle, LMA handle), a
                     NetLMM Address option containing the address assigned to (or
                     configured by) the MN.  This message is a request to the LMA to
                     start forwarding the packets destined to that IP address to the MAG.
                     The MAG MAY also add the new IP address to the Routing Cache entry
                     related to that MN.

                  </t>
                  <t>

                     When it receives an Acknowledgement message with status 1, "Success",
                     the MAG MUST add the new IP address to the Routing Cache entry of the
                     MN (or set it as non tentative if previously updated) and update its
                     forwarding state.  In case the message contains a different Status
                     value (Values 5 or 6), it MUST reject the assignment of the IP address
                     to the MN, depending on the method used by the MN to request the
                     address (i.e., DHCP or stateless auto-configuration).

                  </t>
                  <t>

                     In case DHCP is used, the MAG MUST act as DHCP Relay Agent in order
                     to have an active role in the DHCP exchange.  The MAG then receives
                     from the DHCP server the IP address assigned to the MN in a DHCP
                     Relay-reply message and updates the routing at the LMA and at the
                     same time can send a DHCP Reply message to the MN with the assigned
                     address.  It is important that in the DHCP-Relay-forward message,
                     the MAG includes the identifier of the LMA that is in charge of
                     serving that MN so that the DHCP server can select the IP address
                     accordingly (i.e., from the IP subnet of the LMA). In case the MAG
                     receives an acknowledgement message with Status 5 or
                     6, it MUST send a DHCP Reply message, refusing the IP address
                     assignment to the MN.

                  </t>
                  <t>

                     In case stateless auto-configuration is performed, the trigger to
                     update the routing at the LMA is the DAD procedure.  The DAD
                     procedure is performed on the MAG link, but the MAG needs to verify
                     the address uniqueness at the LMA; for this purpose, it sends the MN
                     Address Setup message.  If the LMA replies with a Status value equal
                     to 5 or 6, the MAG MUST send a Neighbor Advertisement in order to
                     fake an IP address duplication.

                  </t>
               </section>
	       -->
               <section anchor="mag.handover" title="MAG to MAG handover procedure">
                  <t>

                     When a MN hands over from one MAG to another, the new MAG may not know
                     if the event occurred is a hand-over or a network attach.  This is
                     because the base protocol specified in this document is agnostic with
		     respect to any MAG to MAG communication that may be in place.  Due to
                     this reason, as for network attach, the MAG will just receive a trigger
                     that a new MN has attached to the link; this trigger, referred to as a
                     MN_Access_Network API event carries the MN ID and the LMA handle.  As
                     mentioned above, this API event can be for example based on an AAA
                     exchange.

                  </t>
                  <t>

                     After receiving this API event, the MAG performs the same procedure as
                     described for network access (see <xref target="mag.access"/>):
                     it sends a Location Registration message containing the MN ID, the MAG
                     handle and the LMA handle and receives the Acknowledgement of the
                     Location Registration message, which includes the Prefixes allocated
		     to and delegated to the MN.

                  </t>
               </section>
               <section anchor="mag.revocation" title="Resource Revocation">
                  <t>

                     If the MAG receives a Location Deregistration message from the LMA, it
                     MUST delete the entry related to the MN specified in the MN ID Option
                     in its Routing Cache.  Moreover, the MAG MUST remove any forwarding
                     state for the MN. After doing that, the MAG MUST send an acknowledgement
                     of the Location Deregistration message to the LMA with Status 1,
                     "Success".

                  </t>
                  <t>

                     In case the Location Deregistration contains a Deregistration Timeout
		     option, the MAG MAY keep forwarding uplink packets to the LMA for the
                     MN. This may be useful in case of make before break link layer
                     technologies.  The adopted timeout cannot be greater than the one
                     suggested by the LMA and MUST be sent back to the LMA in the Location
                     Deregistration message Acknowledgement.

                  </t>
               </section>
               <section anchor="mag.detachment" title="Network Detachment">
                  <t>

		     A MAG does not take any action if it detects that a mobile node
		     detaches, but instead waits for a Location Deregistration message from
		     the LMA, which will be sent by the LMA once the mobile node has
		     attached through another MAG.  There will however be cases where a
		     mobile node is taken out of operation, and never re-attaches to another
		     MAG.  In order to handle such cases, a MAG MUST implement some form of
		     garbage collection of mobile node related state on a Least Recently
		     Used (LRU) basis.  This may be done by simply purging the oldest mobile
		     node state entries, but this is not recommended.  It is RECOMMENDED to
		     instead purge state for mobile nodes which has least recently sent or
		     received user traffic, and to do this when the remaining available
		     resources fall below a threshold, rather than after fixed or configurable
		     time has elapsed.

                  </t>
               </section>
	       <!--
               <section anchor="mag.detachment" title="Network Detachment">
                  <t>

                     In case the MAG has an indication that the MN has detached from the
                     network (e.g., via AAA architecture), the MAG MUST (Note: if the
                     protocol is stateful and we do not have a lifetime in the location
                     registration, this is a MUST, otherwise it can be a SHOULD) send a
                     Location Deregistration message with an ID option containing the MN ID.
                     After receiving the Acknowledgement of the Location Deregistration
                     message, the MAG MUST remove any mobility and forwarding state in its
                     Routing Cache related to that MN.

                  </t>
               </section>
	       -->
	       <!--
               <section anchor="mag.no-ip" title="IP address no longer in use">
                  <t>

                     In case the MAG has an indication that an IP address is no longer
                     used by the MN, it MUST send a MN Address Remove message to the LMA,
                     including the MN ID and the NetLMM Address that needs to be removed
                     in a NetLMM Address option.  How the MAG detects that an IP address
                     is no longer used is out of the scope of this document.

                  </t>
               </section>
	       -->
	       <!--
               <section anchor="mag.link-avail" title="Link availability test">
                  <t>

                     MAGs should ensure availability of their link to LMAs. To test link
                     availability, each MAG should periodically send a Heartbeat message
                     to each LMA with which it has associated according to the entries in
                     the LMA List.  If the Heartbeat Acknowledgement from the LMA is received
                     within HEARTBEAT_TIMEOUT seconds, availability of the link to the LMA
                     is proven.  If the MAG does not receive the Heartbeat Acknowledgement within
                     HEARTBEAT_TIMEOUT seconds, the MAG should send HEARTBEAT_RETRY_MAX further
                     Heartbeat messages with incremented sequence number.  In case none of
                     these Heartbeat messages is returned by the LMA, the MAG should
                     raise an alarm.  Optionally, the MAG can inform an external OAM function
                     about the broken link.

                  </t>
                  <t>

                     To avoid superfluous bandwidth consumption, MAGs should send Heartbeat
                     messages to an LMA only in case there was no traffic on the associated
                     link for LINK_ACTIVITY_TIMEOUT seconds.  MAGs should perform Heartbeat
                     tests according to the following rule:

                  </t>
                  <t>

                     In case there was no signaling activity on a link to an LMA for
                     LINK_ACTIVITY_TIMEOUT seconds, the MAG waits for an additional random
                     delay time between HEARTBEAT_DELAY_MIN and HEARTBEAT_DELAY_MAX seconds.
                     After the delay has expired, the MAG sends the Heartbeat message to the
                     LMA. In case the MAG receives a Heartbeat message from the LMA while
                     waiting for the additional random delay, the MAG should reset the delay
                     timer and refrain from sending the Heartbeat message, but MUST
                     return the Heartbeat message using the same sequence number
                     as in the received message.

                  </t>
               </section>
	       -->
	    </section>
	    <section anchor="lma" title="Local Mobility Anchor Operation">
	       <section anchor="lma.cds" title="Conceptual Data Structures">
		  <t>

		     Each LMA MUST maintain a NetLMM Routing Cache and a MAG List.

		  </t>
		  <t>

		     Each LMA Routing Cache entry conceptually contains the following fields
		     for each MN:

		  </t>
		  <t>
		     <list style="symbols">
			<t>

			   The MN ID of the registered MN. This Identifier is acquired through the
			   Location Registration message, which registers an attached MN.
			   <!--
			   Optionally, the MN ID is acquired though the LMA Allocation message
			   beforehand, which could enable service authorization for this
			   particular MN ID at the LMA.
			   -->

			</t>
			<t>

			   The MAG handle of the registered MN's serving MAG. This identifier is acquired
			   through the Location Registration message, which registers an attached
			   MN. Dependent on the context of this message, the MAG handle entry is either 
			   initialised, or updated in case of a hand-over.  The MAG handle can be
			   linked to the associated MAG's IP address with the help of the MAG List.

			</t>
			<t>

			   One or more global IP addresses or address prefixes of a
			   registered MN. Each IP address or prefix is allocated by
			   the LMA or on request of the LMA.  The MAG is informed about
			   the allocated address or prefix in the Location Registration Ack
			   message.

			   <!--
			   acquired from an MN Address Setup
			   message.  According to the context of the received message, the IP
			   address is set up, updated or removed from the Routing Cache.
			   -->
			</t>
		     </list>
		  </t>
		  <t>

		     Each LMA MUST maintain a MAG List, which refers to associated MAG
		     entities.  The list of associated MAGs is used to perform heartbeat
		     tests and to map the Routing Cache's MAG handle entries to the associated
		     MAG's IP address(es). The MAG List also supports the procedure of bulk
		     deregistrations towards all or a subset of associated MAGs.

		  </t>
		  <t>

		     The MAG List also indicates the forwarding approach which has been
		     selected for the association between the LMA and a particular MAG.
		     During the association procedure, an LMA selects a forwarding
		     approach from the MAG's full set of forwarding capabilities.  The LMA
		     receives a MAG's full set of forwarding capabilities in decreasing
		     order of preferences in a Data Transport option with the Association
		     message.  The LMA could selects the first forwarding approach which suits
		     the LMA's forwarding capabilities, starting with the MAG's most
		     preferable forwarding approach as indicated in the first Data
		     Transport Method field of the Data Transport option.  Other selection
		     schemes are allowed and optional.  The LMA indicates the selected
		     forwarding approach back to the MAG in the Association Acknowledgement,
		     which carries a Data Transport option with a single Data Transport
		     Method field. 

		  </t>
		  <t>

		     The MAG List conceptually contains the following fields for each
		     associated MAG:

		  </t>
		  <t>
		     <list style="symbols">
			<t>

			   The MAG handle of the associated MAG.

			</t>
			<t>

			   One or more IP address(es) of the associated MAG. The MAG's IP address
			   information is acquired through the Associate message.
			   Availability of multiple MAG IP addresses could
			   support operation of multi-homed MAGs. Details about how to handle
			   multiple MAG IP addresses is out of scope of this specification.  Message
			   sequence numbers are per MAG - LMA association, based on MAG and LMA
			   handles, not per IP address.

			</t>
			<t>

			   The forwarding capabilities of the associated MAG. This capability list is
			   acquired from a particular MAG through the Associate message.  From the
			   list of supported forwarding approaches, the LMA enters only the
			   approaches to the capabilities which are supported by the LMA.

			</t>
			<t>

			   The forwarding setting for the associated MAG. This field is needed in case
			   the LMA configures a single forwarding approach per MAG association. 

			</t>
		     </list>
		  </t>
	       </section>
	       <section anchor="lma.headers" title="Processing NetLMM Headers">
		  <t>

		     All NetLMM local mobility anchors MUST observe the rules described in
		     <xref target="mag.headers"/> when processing NetLMM Headers.

		  </t>
	       </section>
	       <section anchor="lma.associate" title="Association Procedure">
		  <t>

		     When a LMA receives an Association Request message, it MUST look up
		     in its MAG list the MAG handle contained in the ID
		     option included in the request.  If an entry for that MAG handle is
		     already present in the MAG list, the LMA MUST send an 
		     acknowledgement to the MAG with status "Already Associated", and
		     log the event.
		     
		  </t>
		  <t>

		     If an entry for the MAG handle contained in the ID option does not
		     exist, the LMA MUST create it, including the parameters contained in
		     the Association Request message (MAG handle, MAG IP address). Based on
		     internal policy (e.g., pre-configuration) the LMA MAY accept the
		     data forwarding methods proposed by the MAG or MAY indicate a specific
		     method in the Acknowledgement.  After creating the entry, the LMA MUST
		     send an acknowledgement with STATUS value 1 ("Success")
		     with the content described below.
		  </t>
		  <t>
		     The Acknowledgement to the received Association Request message MUST include:
		  </t>
		  <t>
		     <list style="symbols">
			<t>

			   the LMA handle included in a NetLMM ID option.  This
			   identifier is used by the peer to identify the LMA and is included
			   in all subsequent messages.

			</t>
			<t>

			   the MAG handle as received from the requesting MAG in the
			   Association Request message.
			</t>
			<t>


			   the Data Transport option with the selected data transport method.
			   The LMA MUST select one forwarding approach from the list of
			   capabilities as received in the Association Request message.

			</t>
			<t>

			   the Status option, indicating the result of processing the
			   Association Request message. 			
			</t>
		     </list>
		  </t>
	       </section>
	       <section anchor="lma.disassociate" title="Disassociation Procedure">
		  <t>

		     In case the Disassociate procedure is initiated by the MAG,
		     the LMA MUST validate any Disassociation Request message it receives.
		     If it is correct, it MUST delete the related entry in
		     its MAG List, mark related MN entries in its Routing Cache as
		     unroutable, and send an Acknowledgement with status 1, "Success".
		     As in all NetLMM messages, the LMA MUST include the ID option with
		     its identity.  If the LMA does not have an entry in the MAG list,
		     it MUST respond with status "Not Associated", and log the event.

		  </t>
		  <t>

		     In case the Disassociate Procedure is initiated by the LMA 
		     the LMA MUST include an ID Option with the its identity in the
		     Disassociation Request.  When sending the Disassociation Request, the LMA
		     MAY set the MAG entry related to the specific MAG as tentative.  When
		     it receives an acknowledgement with status 1, "Success", the LMA
		     MUST delete the correspondent entry in its MAG List, and mark all
		     related MN entries in its Routing Cache as unroutable.

		  </t>
	       </section>
	       <section anchor="lma.access" title="MN network access procedure">
		  <t>

		     When the local mobility anchor receives a Location Registration
		     message, it MUST validate it.  If the LMA does not have an entry the
		     MAG list, it MUST respond with status "Not Associated", and log the
		     event.  If the message is badly formed, it MUST respond with status
		     "Invalid Message" and log the event.  If the message is valid, it MUST
		     check if an entry for the MN identifier included in the Location
		     Registration is present.  If an entry is already present, it means that
		     a MAG to MAG hand-over has occurred: the detailed procedure for this
		     event is described in <xref target="lma.handover"/>.

		  </t>
		  <t>

		     If an entry for that MN identifier is not present, the LMA MUST create
		     a new entry with the MN ID and the MAG handle.  After creating the
		     entry, it MUST send an acknowledgement of the Location Registration
		     message, with status 1, "Success", including MN ID, LMA handle, MAG
		     handle.  If the Location Registration message contained one or more
		     Prefix Allocation or Prefix Delegation Options the LMA registers these
		     in the Routing Cache, otherwise it allocates a prefix which it
		     associates with the MN ID and returns this prefix to the MAG as part of
		     the Location Registration Acknowledgement.  In this case, the returned
		     prefix MUST be used by the MAG for any mechanism it provides for MN
		     address allocation, e.g., when building a Router Advertisement if IPv6
		     stateless address configuration is used.  (See <xref
		     target="I-D.ietf-netlmm-mn-ar-if" /> for a more detailed description of
		     this case).

		  </t>
		  <t>

		     In case the Location Registration is not valid or the registration
		     procedure cannot be completed successfully, the LMA MUST send a
		     Acknowledgement with an appropriate Status
		     value.

		  </t>
	       </section>
	       <section anchor="lma.address" title="MN IP address notification procedure">
	       <t>

		  At any time while it is attached to the network, the MN may also acquire
		  additional addresses, through DHCP or link-specific means.  If this
		  occurs, the MAG will send a new Location Registration message to inform
		  the LMA about the current set of addresses and prefixes allocated and / or
		  delegated to the MN.  When receiving such a Location Registration message,
		  the LMA replaces the existing set of Routing Cache entries for the given
		  MN ID with the new set taken from the Location Registration message.

		  </t>
	       </section>

	       <!--
	       <section anchor="lma.address" title="MN IP address notification procedure">
	       <t>

	       When the MN tries to configure a new IP address on the local domain,
	       the local mobility anchor receives a MN Address Setup message from
	       the MAG which the MN is connected to.  This message contains the IP
	       address the MN is trying to configure in a NetLMM Address option.
	       (Note: in the slides there is also a tunnel ID but I am not sure
	       this is actually needed).

	       </t>
	       <t>

	       When it receives this message, the LMA MUST check if the IP address
	       in the NetLMM Address option is already assigned to another MN. If
	       the address is a duplicated one, it MUST send an Acknowledgement of the
	       MN Address Setup
	       message with Status 5 "INVALID IP ADDRESS". If the
	       address is not assigned to any other MN, the LMA MUST check if the
	       number of addresses assigned to that MN does not exceed the maximum
	       number of addresses that the MN can configure.  This check is
	       performed in the LMA Routing Cache; the maximum number of allowed IP
	       addresses is a per MN variable that is pre-configured at the LMA. If
	       the number of IP addresses exceeds the allowed one, the LMA MUST
	       send an acknowledgement with Status 6 "OVER
	       IP ADDRESS LIMIT". (Note: the first check is mainly performed for
	       the stateless configuration case and may be skipped in case DHCP is
	       used.  However the LMA does not know if the address is configured
	       using DHCP or stateless so I would keep this check in any case)

	       </t>
	       <t>

	       If the IP address is not a duplicated one and the maximum number of
	       allowed IP addresses is not reached, the LMA MUST update the Routing
	       Cache entry indexed by the MN ID contained in the MN Address Setup
	       message with the new IP address and MUST update its forwarding
	       state, depending on the tunneling mechanism used.

	       </t>
	       </section>
	       -->
	       <section anchor="lma.handover" title="MAG to MAG handover procedure">
		  <t>

		     When the LMA receives a Location Registration message, it MUST check
		     in its Routing Cache if an entry for the MN ID carried in the message
		     is already present.  If it is not, that means that the MN is
		     accessing the network for the first time (see <xref
		     target="lma.access"/>).  If an entry is already present in the
		     Routing Cache, a hand-over has occurred.  In either case, the LMA MUST
		     send back an Acknowledgement of the Location Registration message
		     with Status value set to 1, "Success", including Prefix options which
		     specifies the prefixes allocated and /or delegated to the MN.

		  </t>
	       </section>
	       <section anchor="lma.revocation" title="Resource Revocation">
		  <t>

		     There are cases (e.g., due to administrative reasons) where the
		     forwarding state of a specific MN must be purged so that the MN is no
		     more able to use the resources provided by the network.  In this case,
		     based on a trigger received from the network (e.g. AAA), the LMA MUST
		     send a Location Deregistration message to the peer MAG, including the
		     MN ID, the LMA handle and the MAG handle.  Optionally, the LMA MAY include a
		     Deregistration Timeout option specifying the remaining time to keep the
		     state of the MN in the MAG.

		  </t>
		  <t>

		     The revocation procedure terminates when the LMA receives an
		     Acknowledgement of the Resource Revocation message with status 1,
		     "Success".

		  </t>
	       </section>
	       <section anchor="lma.detachment" title="Network Detachment">
		  <t>

		     If a mobile node is taken out of operation, and never re-attaches to
		     another MAG, the routing state of the LMA will by default remain
		     unchanged and un-purged.  In order to handle such cases, a LMA MUST implement
		     some form of garbage collection of mobile node related state on a
		     Least Recently Used (LRU) basis.  This may be done by simply purging
		     the oldest mobile node state entries, but this is not recommended.
		     It is RECOMMENDED to instead purge state for mobile nodes which has
		     least recently sent or received user traffic, and to do this when the
		     remaining available resources fall below a threshold, rather than
		     after fixed or configurable time has elapsed.


		  </t>
	       </section>
	       <!--
	       <section anchor="lma.detachment" title="Network Detachment">
		  <t>

		     When the LMA receives a Location Deregistration message from the peer
		     MAG, it MUST remove in its Routing Cache the entry of the MN indicated
		     by the MN ID in the Location Deregistration message.  After that, it
		     MUST send an Acknowledgement of the Location Deregistration message
		     with status 1, "Success", including the MN ID, the MAG handle and the LMA
		     ID.

		  </t>
	       </section>
	       -->
	       <!--
	       <section anchor="lma.no-ip" title="IP address no longer in use">
	       <t>

	       When the LMA receives a MN Address Remove message, it MUST remove 
	       the NetLMM Address included in the NetLMM Address option from the entry
	       in its Routing Cache related to the MN indicated in the message.  After that,
	       the LMA MUST respond with an Acknowledgement of the MN Address Remove message with
	       status 1, "Success".

	       </t>
	       </section>
	       -->
	       <!--
	       <section anchor="lma.link-avail" title="Link availability test">
	       <t>
	       LMAs should ensure availability of their link to MAGs. To test link
	       availability, each LMA should periodically send a Heartbeat message
	       to each associated MAG according to the entries in the MAG List.  If
	       the Heartbeat Acknowledgement from the MAG is received within
	       HEARTBEAT_TIMEOUT seconds, availability of the link to the MAG is proven.
	       If the LMA does not receive the Heartbeat Acknowledgement within
	       HEARTBEAT_TIMEOUT seconds, the LMA should send HEARTBEAT_RETRY_MAX further
	       Heartbeat messages with incremented sequence number.  In case none of
	       these Heartbeat messages is acknowledged by the MAG, the LMA should
	       raise an alarm.  Optionally, the LMA can inform an external OAM function
	       about the broken link.

	       </t>
	       <t>

	       To avoid superfluous bandwidth consumption, LMAs should send Heartbeat
	       messages to a MAG only in case there was no traffic on the associated
	       link for LINK_ACTIVITY_TIMEOUT seconds.  LMAs should perform Heartbeat
	       tests according to the following rule:

	       </t>
	       <t>

	       In case there was no signaling activity on a link to a MAG  for
	       LINK_ACTIVITY_TIMEOUT seconds, the LMA waits for an additional random
	       delay time between HEARTBEAT_DELAY_MIN and HEARTBEAT_DELAY_MAX seconds.
	       After the delay has expired, the LMA sends the Heartbeat message to the
	       MAG. In case the LMA receives a Heartbeat message from a MAG while
	       waiting for the additional random delay, the LMA should reset the
	       delay timer and refrain from sending the Heartbeat message, but MUST
	       respond to the Heartbeat message using the same sequence number
	       as in the received message.

	       </t>
	       </section>
	       -->
         </section>	       
      </section>
      <section title="Data Transport" anchor="transport">
         <t>

            As soon as a particular MAG has associated with an LMA and an
            attached MN has been registered with the LMA, the LMA node and the
            MAG node are responsible for forwarding the MN's data traffic correctly
            within the NetLMM domain.  Associated location and forwarding information
            is maintained within the LMA's and the MAG's Routing Cache.  Different
            forwarding mechanisms between the LMA node and a particular MAG node
            might be supported and set up during the MAG's association procedure.

         </t>
         <t>

            Network entities which have Version 1 of the NetLMM protocol implemented, MUST
            support IPv6-in-IPv6 encapsulation <xref target="RFC2473" /> to tunnel data
            packets between an LMA node and an associated MAG node.  Support of other
            forwarding approaches are for future extensions.

         </t>
         <section title="Forwarding of Unicast Data Packets" anchor="transport.unicast">
            <section title="Handling of hop limit field in IPv6 data packets" anchor="transport.hop-limit">
               <t>

                  According to the NetLMM default mechanism for forwarding data packets between
                  a particular LMA and a MAG by means of encapsulation, LMA nodes and MAG
                  nodes serve as tunnel entry-points and tunnel exit-points respectively.
                  LMAs and MAGs have to decrement the hop limit field
                  of the encapsulated IPv6 header properly.  The MAG serves as the
                  default gateway for an attached MN and forwards all packets from
                  the MN into the tunnel, which in turn encapsulates the packet
                  towards the LMA. The LMA on receiving the packet from the MAG
                  decapsulates and forwards the packet using normal forwarding
                  procedures.  The packets destined towards the MN are forwarded
                  in a similar fashion.  The procedure of forwarding the packet
                  decrements the hop limit.  Hence, the hop limit will get decremented
                  twice for any packet traversing the tunnel between LMA and MAG,
		  once at the LMA
		  and once at the MAG.

               </t>
            </section>
            <section title="IPv6-in-IPv6 tunnel" anchor="transport.">
               <t>

                  LMA and MAG nodes MUST support IPv6-in-IPv6 encapsulation according to
                  <xref target="RFC2473" >RFC 2473</xref> for forwarding
                  packets within the NetLMM domain.  Support of other forwarding schemes
                  is optional.  When an LMA node receives an IPv6 packet destined for a
                  registered MN and IPv6-in-IPv6 tunnelling has been selected as
                  forwarding approach, it serves as tunnel entry-point.  The LMA node
                  decrements the hop limit of the data packet's IPv6 header by one and
                  encapsulates the packet in the tunnel IPv6 header.  The tunnel IPv6
                  header might carry one or more extension headers.  The LMA node forwards the
                  tunnel packet to the MAG node, using its own address as source address
                  and the MAG node's address as destination address in the outer IPv6 header.
                  The MAG node terminates the tunnel and MUST process relevant Extension
                  Headers, which might follow the encapsulating IPv6 header.  The MAG node
                  forwards the data packet towards the MN after decapsulation. 

               </t>
               <t>

                  To forward uplink packets, the MAG node serves as tunnel entry-point and
                  decrements the data packet's hop limit field by one before it encapsulates the
                  packet in the tunnel IPv6 header.  The tunnel IPv6 header might carry one or
                  more extension headers.  The MAG node forwards the tunnel packet to the LMA
                  node, using its own address as source address and the LMA node's address as
                  destination address in the outer IPv6 header.  The LMA node terminates the
                  tunnel and MUST process relevant Extension Headers, which might follow the
                  encapsulating IPv6 header.  The LMA node forwards the data packet towards its
                  final destination after decapsulation.

               </t>
            </section>
         </section>
         <section title="Forwarding of Multicast Data Packets" anchor="transport.multicast">
            <section title="Link Local Multicast" anchor="transport.multicast.link-local">
               <t>

                  The scope of link local multicast packets is confined to the link
                  between MNs and the associated MAG node.

               </t>
            </section>
            <section title="IP Multicast" anchor="transport.multicast.ip">
               <t>

		  The following options have been identified to support IP multicast within
		  a NetLMM domain.

               </t>
               <t>
                  <list>
                     <t>

			Native mode: This option implies that MAG nodes are multicast-enabled 
			routers and support for IP multicast is orthogonal to the NetLMM protocol
			operation.  According to native multicast support, access routers
			terminate a multicast tree and the LMA node does not play any
			multicast-specific role in forwarding of IP multicast traffic. 

                     </t>
                     <t>

			Tunnel mode: This option implies that MAG nodes and LMA nodes are both 
			multicast-enabled routers and the IP multicast traffic is tunnelled 
			via the two NetLMM nodes.  IP Multicast protocol is used on the
			tunnel between the MAG nodes and LMA nodes to set up the multicast
			forwarding path.

                     </t>
                  </list>
               </t>
               <t>

		  MAG nodes must coordinate multicast listeners according to MLD operation
		  <xref target="RFC2710"/> and communicate with other multicast-enabled
		  routers using IP Multicast protocol (e.g. PIM, based on RFC 2362).  The MAG
		  nodes send multicast control messages in the tunnel or on the
		  connected interface to reach the LMA nodes or other routers, respectively.
		  This establishes the multicast forwarding path for directing multicast
		  packets to the listeners.  An example of a IP multicast join procedure is
		  illustrated in Figure 5.  By default,
		  the native mode of operation is REQUIRED.

               </t>
               <t>
                  <figure>
                     <artwork><![CDATA[
   +--+          +---+            +---+              +--+
   |MN|          |MAG|            |LMA|              |MR|
   +--+          +---+            +---+              +--+
   |              |                |                  |
   |              |                |                  |
   |-MLD Report-->|                |                  |
   |              |====PIM Join===>|                  |
   |              |                |----PIM Join----.>|
   /              /                /                  /
   /              /                /                  /
   |<-------------|<===============|<-----------------|<--MC Data
   |              |                |                  |
]]>
                     </artwork>
		     <postamble>
			Figure 5: Example of IP multicast join procedure for the Tunnel
			Mode.  The MR is a multicast-enabled router between the multicast source
			and the LMA node.
		     </postamble>
                  </figure>

               </t>
               <t>

		  The mobile node may be a multicast sender.  The MAG nodes allow multicast
		  packets to be received on the interface of the mobile node by successfully
		  passing any Reverse Path Forwarding (RPF) check.  All multicast packets
		  that are sourced from the mobile node are tunnelled to the LMA nodes.  The
		  RPF check on the LMA nodes should allow these packets to be received on
		  the tunnel as well.  The multicast packets are forwarded by the LMA nodes
		  based on the multicast forwarding table, set up by IP Multicast protocol
		  used among the routers.  An example of a IP multicast source sending
		  multicast packet to the group is illustrated in Figure 6.

               </t>
               <t>

                  <figure>
                     <artwork><![CDATA[
   +--+          +---+            +---+              +--+
   |MN|          |MAG|            |LMA|              |MR|
   +--+          +---+            +---+              +--+
   |              |                |                  |
   |              |                |<----PIM Join-----|
   /              /                /                  /
   /              /                /                  /
   |              |                | forward to group |
   |-- MC Data--.>|===============>|----------------.>|--.>
   |              |                |                  |
]]>
                     </artwork>
		     <postamble>
			Figure 6: Example of a mobile node sourcing multicast packets to the group.
		     </postamble>
                  </figure>

               </t>
            </section>
         </section>
         <section title="Forwarding of Broadcast Data Packets" anchor="transport.broadcast">
            <t>

               Version 1 of the NetLMM protocol specification does not consider
               forwarding of broadcast data packets. 

            </t>
         </section>
      </section>
      <section title="Protocol Constants and Configuration Variables" anchor="constants">
      </section>
      <section title="Security Considerations" anchor="security">
	 <t>

	    The NetLMM protocol consists of messages between MAG and LMA nodes.  The
	    messages are used to create, update and delete mobility state in MAGs
	    and LMAs. The threats are described in <xref target="I-D.ietf-netlmm-threats"/>.
	    To address these threats, NetLMM protocol must support data origin
	    authentication, integrity and replay protection on a per-packet basis.
	    IPsec <xref target="RFC2401" /> MUST be implemented and SHOULD be used.

	 </t>
	 <t>

	    There are several details that should be considered when IPsec is used
	    for protecting the messages.

	    <list style="hanging">

	       <t hangText="Selectors">
		  <vspace blankLines="0"/>

		  The IP addresses and NETLMM-UDP-PORT SHOULD be used as selectors
		  for identifying the control messages.  By including the port,
		  only control messages are protected with IPsec.

	       </t>
	       <t hangText="Mode">
		  <vspace blankLines="0"/>

		  IPsec MUST be used in transport mode between MAG and LMA. Though
		  AH <xref target="RFC4302" /> provides protection for the addresses in the IP header, ESP
		  <xref target="RFC4303" /> provides the same by checking the IP address against the
		  selectors in the SAD <xref target="RFC2401" />. Thus, ESP <xref target="RFC4303" /> with non-NULL
		  authentication is sufficient to provide the necessary protection for
		  the control messages.

	       </t>
	       <t hangText="Key Management">
		  <vspace blankLines="0"/>

		  IPsec can provide anti-replay protection when dynamic
		  keying is used.  IPsec does not guarantee correct ordering
		  of packets, only that they have not been replayed.  Hence,
		  when dynamic keying is used along with the sequence numbers in
		  the NetLMM messages, replay and re-ordering attacks can
		  be prevented.  Note that the re-ordering attack makes sense
		  only if the messages that are re-ordered relates to the
		  same mobile node.

		  IKE <xref target="RFC2409" /> MUST be used for dynamic keying.  IKEv2 <xref target="RFC4306" />
		  MAY be supported.

	       </t>
	       <t hangText="Authentication">
		  <vspace blankLines="0"/>

		  Dynamic keying <xref target="RFC2409" />, <xref target="RFC4306" /> supports several authentication
		  mechanisms.  Pre-shared keys are difficult to configure and
		  maintain when the number of nodes (MAG and LMA) are large as
		  there needs to be one pre-shared key between any possible
		  combination of LMA and MAG. Hence, certificate based IKE 
		  authentication SHOULD be supported.  This does not require a
		  global PKI. The certificates may be signed by the local
		  operator that deploys the NetLMM service.
		  The use of IKE with certificates including the various identities
		  is described in <xref target="I-D.ietf-pki4ipsec-ikecert-profile" />

	       </t>
	       <t hangText="Security Policy">
		  <vspace blankLines="0"/>


		  MAG can dynamically associate with any LMA in the NetLMM domain.
		  If the LMA knows the IP addresses of all the MAG in the NetLMM
		  domain a priori before the IKE session is setup, then the
		  appropriate SPD entries can be setup beforehand which can be
		  consulted before engaging in the IKE session.  Even if the LMA
		  does not have any knowledge about the IP addresses of the MAG,
		  it can use the named SPD entry <xref target="RFC2401" /> and later when the
		  IKE negotiation is successfully completed, the
		  SPD entry can be added.

	       </t>
	    </list>

	    IPsec provides data origin authentication based on the identity verified
	    when the IPsec security association is setup using IKE. The identity
	    carried within IKE is different from the ID described in this document.
	    As part of IPsec processing, the receiver of an IPsec protected datagram
	    verifies that the selectors from the IP header matches against the values
	    stored in the SAD that were established during IKE. In the case of NETLMM, the
	    IP address and the port number would be verified to be consistent with
	    the ones that was presented during SA establishment.  But this verification
	    is not sufficient to authorise the node (LMA or MAG) to send arbitrary
	    NetLMM messages.

	 </t>
	 <t>

	    When the NetLMM message is processed, the source ID should be mapped to
	    the corresponding IP address using whatever mechanism available (not
	    described in this document) and matched against what was received in
	    the packet.  If there is a mismatch-match, the packet should be dropped.
	    Additionally, the following checks should be performed.


	    <list style="symbols">
	       <t>

		  The Location registration can be originated only by the MAG. Hence, the
		  MAG MUST drop all Location Registration messages originated by the LMA.

	       </t>
	       <t>

		  The Location deregistration message may be originated by the MAG or LMA
		  to delete the forwarding state.  Proper authorisation checks must be
		  performed to make sure that the forwarding state is deleted only by the entity
		  (LMA or MAG) that created it.  There are two cases.

		  <list style="symbols">
		     <t>

			In the hand-over scenario, the deregistration message comes from the LMA
			towards the old/previous MAG. The MAG MUST check to see if the LMA handle
			in the deregistration request matches the value stored in the MAG Routing
			cache entry for the given MN-ID.

		     </t>
		     <t>

			In case where the MAG detects that the MN has detached, it sends the
			deregistration message to the LMA. The LMA MUST check to see if the
			MAG-ID in the deregistration request matches the value stored in the
			LMA Routing cache entry for the given MN-ID.

		     </t>
		  </list>

	       </t>
	       <t>

		  The MAG MUST drop all associate messages coming from LMA.

	       </t>
	       <t>

		  It is possible to filter the signalling messages at the edge of the
		  network so that a rogue MN or rogue node on the Internet cannot
		  source such messages.  If this is done, any messages exchanged
		  between the MAG and LMA can only come from within the network.  This
		  level of security may be sufficient for some deployments, precluding
		  the need for protecting the signalling messages.  In such cases,
		  IPsec may not need to be used to protect the signalling messages.

	       </t>
	    </list>
	 </t>

      </section>
      <section title="IANA Considerations">
      </section>
      <!-- ============================================================= -->
      <section title="Contributors">
         <t>

            This contribution is a joint effort of the NetLMM design team of the NetLMM WG.
            The members include Kent Leung, Gerardo Giaretta, Phil Roberts, Marco Liebsch,
            Katsutoshi Nishida, Hidetoshi Yokota, Henrik Levkowetz, and Mohan Parthasarathy.

         </t>
      </section>
      <section title="Acknowledgments">
         <t>
         </t>
      </section>
   </middle>
   <back>
      <references title="Normative References">
         &rfc768;
         &rfc2119;
         &rfc2473;
         &rfc2578;
	 <!-- &rfc2784; -->
	 <!-- &rfc3031; -->
         &rfc2710;
         &rfc3753;
         &rfc3971;
         &rfc4282;
         &rfc4302;
         &rfc4303;
         &rfc4306;
         &rfc4330;
         &netlmmps;
         &netlmmgoals;
      </references>

      <references title="Informative References">
         &rfc2401;
         &rfc2409;
         &rfc2960;
         &rfc3692;
	 &certprofile;
         &multilink;
         &netlmmthreats;
         &netlmmattach;
	 &netlmmproto;
        <reference anchor="ENTERPRISE-NUM">
            <front>
                <title>
                    IANA Enterprise Numbers Registry"
                </title>
                <author>
                   <organization>
                      IANA
                   </organization>
                </author>
                <date year="2006"/>
            </front>
            <format type="TXT" target="http://www.iana.org/assignments/enterprise-numbers"/>
        </reference>
      </references>
      <section anchor="mn-ar" title="MN-AR Interface considerations">
         <t>
            This document assumes that the MN-AR interface document will
            describe the following in more detail:

            <list style="symbols">
               <t>
                  - A mechanism for indicating duplicate address to the MN

               </t>
               <t>

                  - No redirects should be sent by MAG to MN even if the destination
                  is directly connected to MAG

               </t>
               <t>

                  - Trigger for IP address configuration

               </t>
               <t>

                  - MN Identifier option in the trigger ?

               </t>
               <t>

                  - If SEND is used, Proxy SEND details are needed for defending
                  the address in the case of a duplicate

               </t>
               <t>

                  - Router advertisement details : unicast only, what else does it
                  contain etc."

               </t>
            </list>
         </t>
      </section>
      <section title="Issues with omitting the MN Address Setup and Routing Setup">
         <t>

            The design team currently considers optimisation of the
            hand-over related signalling.  This focuses in particular on reducing
            the hand-over signalling from two handshakes to one handshake
            between the nMAG and the LMA.  The 00 version of the draft specifies
            different messages to notify the arrival of an MN to the LMA by
            means of indicating the MNID (Location Registration) and to setup
            routing states by means of indicating the MN's IP address
            information (MN Address Setup and Routing Setup). 

         </t>
         <t>

            In most hand-over cases, explicit signalling of the MN's IP address
            by means of the MN Address Setup and Routing Setup is not required
            in case the Location Registration Req/Ack could append IP Address
            options.  This brings up the question whether or not NetLMM operation
            needs the MN Address Setup message at all. 

         </t>
         <t>

            The MN Address Setup has been specified in particular to notify an MN's IP
            address from a MAG to the LMA, which includes adding new IP addresses to an
            existing state at the LMA. Referring to the agreed per-MN Prefix addressing
            model for NetLMM, the LMA and MAG could take routing decisions solely based on
            the MN's prefix.  Since delegation of the MN's prefix is performed through the
            LMA, which notifies the MN through the MAG about the assigned prefix, the LMA
            is aware of the MN's (delegated) prefix after having sent the Location
            Registration Acknowledgement.  Sending the MN's full IP address back to the LMA by means
            of the MN Address Setup message is required only if the LMA takes routing
            decisions on the full IP address.  Other reasons might exist.

         </t>
         <t>

            As taking routing decisions on the LMA based on the full IP address is
            only mandatory for the shared prefix addressing model, which is not
            supported in the base NetLMM protocol, the design team considers
            omitting the MN Address Setup message.  However, explicit notification of
            the  MN's full IP address could still be done by means of appending the
            NetLMM Address option to an existing message, such as the
            Location Registration message.  Such an approach conceptually overloads
            the Location Registration message and eliminates the conceptual split
            between messages handling IDs and routing information.  The design team
            should take a decision from the following approaches:

         </t>
         <t>
            <list style="numbers">
               <t>

                  Keep MN Address Setup and Routing Setup messages and specify an
                  approach to piggyback these messages with a Location Registration Req/Ack.

               </t>
               <t>

                  Keep MN Address Setup and Routing Setup messages to be flexible for
                  specific scenarios, such as notification of the full MN IP address to the
                  LMA, but allow overloading the Location Registration (append NetLMM Address
                  options).

               </t>
               <t>

                  Omit the MN Address Setup message and allow overload the
                  Location Registration message (append NetLMM Address options).   

               </t>
               <t>

                  Other alternatives.
               </t>
            </list>
         </t>
      </section>
      <section title="Out of scope">
         <t>
            <list style="symbols">
               <t>Inter-MAP hand-over</t>
               <t>Fast hand-over</t>
               <t>Hierarchical MAP</t>
            </list>
         </t>
      </section>
   </back>
</rfc>
