RFC 5213

Proxy Mobile IPv6

๐Ÿ“… published August 2008, from ietf

Proxy Mobile IPv6 ๐ŸŽ€

RFC 5213</pick>, okay bestie, this is the one. ๐Ÿ’–

  • Title: Proxy Mobile IPv6
  • Authors: S. Gundavelli, Ed. (Cisco), K. Leung (Cisco), V. Devarapalli (Wichorus), K. Chowdhury (Starent Networks), B. Patil (Nokia)
  • Category: Standards Track
  • Date: August 2008
  • Obsoletes / Updates: this title block has no Obsoletes or Updates entry, so it doesn't replace or update anything else ๐Ÿงš

Network Working Group is the group that put this out. The series is Request for Comments, which is why it's called an RFC. ๐ŸŒธ


Status of This Memo โœจ

This document is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements. ๐Ÿ’… If you want the current standardization state and status of this protocol, check the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited. ๐Ÿฆ‹

Abstract ๐Ÿ’œ

Network-based mobility management gives a host IP mobility without the host having to join in on any mobility-related signaling. ๐Ÿซถ The network handles IP mobility for the host. The mobility entities in the network track where the host moves and start the mobility signaling it needs, all on its behalf. This spec describes a network-based mobility management protocol called Proxy Mobile IPv6. โœจ

Table of Contents ๐Ÿ“

1.  Introduction .................................................  4
2.  Conventions and Terminology  .................................  5
  2.1.  Conventions Used in This Document  .......................  5
  2.2.  Terminology  .............................................  5
3.  Proxy Mobile IPv6 Protocol Overview  .........................  9
4.  Proxy Mobile IPv6 Protocol Security  ......................... 15
  4.1.  Peer Authorization Database (PAD) Example Entries  ....... 16
  4.2.  Security Policy Database (SPD) Example Entries ........... 17
5.  Local Mobility Anchor Operation  ............................. 17
  5.1.  Extensions to Binding Cache Entry Data Structure ......... 18
  5.2.  Supported Home Network Prefix Models ..................... 19
  5.3.  Signaling Considerations ................................. 20
    5.3.1.  Processing Proxy Binding Updates ..................... 20
    5.3.2.  Initial Binding Registration (New Mobility Session) .. 22
    5.3.3.  Binding Lifetime Extension (No Handoff)  ............. 23
    5.3.4.  Binding Lifetime Extension (After Handoff) ........... 24
    5.3.5.  Binding De-Registration  ............................. 24
    5.3.6.  Constructing the Proxy Binding Acknowledgement
            Message  ............................................. 25
  5.4.  Multihoming Support  ..................................... 27
    5.4.1.  Binding Cache Entry Lookup Considerations  ........... 28
  5.5.  Timestamp Option for Message Ordering  ................... 34
  5.6.  Routing Considerations ................................... 37
    5.6.1.  Bi-Directional Tunnel Management ..................... 37
    5.6.2.  Forwarding Considerations  ........................... 38
    5.6.3.  Explicit Congestion Notification (ECN)
            Considerations for Proxy Mobile IPv6 Tunnels ......... 39
  5.7.  Local Mobility Anchor Address Discovery  ................. 40
  5.8.  Mobile Prefix Discovery Considerations ................... 40
  5.9.  Route Optimization Considerations  ....................... 41
6.  Mobile Access Gateway Operation  ............................. 41
  6.1.  Extensions to Binding Update List Entry Data Structure ... 42
  6.2.  Mobile Node's Policy Profile ............................. 43
  6.3.  Supported Access Link Types  ............................. 44
  6.4.  Supported Address Configuration Modes  ................... 44
  6.5.  Access Authentication and Mobile Node Identification ..... 45
  6.6.  Acquiring Mobile Node's Identifier ....................... 45
  6.7.  Home Network Emulation ................................... 46
  6.8.  Link-local and Global Address Uniqueness ................. 46
  6.9.  Signaling Considerations ................................. 48
    6.9.1.  Binding Registrations  ............................... 48
    6.9.2.  Router Solicitation Messages ......................... 56
    6.9.3.  Default-Router ....................................... 57
    6.9.4.  Retransmissions and Rate Limiting  ................... 58
    6.9.5.  Path MTU Discovery ................................... 59
  6.10. Routing Considerations ................................... 60

    6.10.1. Transport Network  ................................... 60
    6.10.2. Tunneling and Encapsulation Modes  ................... 61
    6.10.3. Local Routing  ....................................... 62
    6.10.4. Tunnel Management  ................................... 62
    6.10.5. Forwarding Rules ..................................... 62
  6.11. Supporting DHCP-Based Address Configuration on the
        Access Link  ............................................. 64
  6.12. Home Network Prefix Renumbering  ......................... 66
  6.13. Mobile Node Detachment Detection and Resource Cleanup  ... 66
  6.14. Allowing Network Access to Other IPv6 Nodes  ............. 67
7.  Mobile Node Operation  ....................................... 67
  7.1.  Moving into a Proxy Mobile IPv6 Domain ................... 67
  7.2.  Roaming in the Proxy Mobile IPv6 Domain  ................. 69
8.  Message Formats  ............................................. 69
  8.1.  Proxy Binding Update Message ............................. 69
  8.2.  Proxy Binding Acknowledgement Message  ................... 71
  8.3.  Home Network Prefix Option ............................... 72
  8.4.  Handoff Indicator Option ................................. 73
  8.5.  Access Technology Type Option  ........................... 74
  8.6.  Mobile Node Link-layer Identifier Option ................. 76
  8.7.  Link-local Address Option  ............................... 77
  8.8.  Timestamp Option ......................................... 77
  8.9.  Status Values  ........................................... 78
9.  Protocol Configuration Variables ............................. 80
  9.1.  Local Mobility Anchor - Configuration Variables  ......... 80
  9.2.  Mobile Access Gateway - Configuration Variables  ......... 81
  9.3.  Proxy Mobile IPv6 Domain - Configuration Variables ....... 82
10. IANA Considerations  ......................................... 83
11. Security Considerations  ..................................... 84
12. Acknowledgements ............................................. 85
13. References ................................................... 86
  13.1. Normative References ..................................... 86
  13.2. Informative References ................................... 87
Appendix A.  Proxy Mobile IPv6 Interactions with AAA
             Infrastructure  ..................................... 89
Appendix B.  Routing State ....................................... 89

1. Introduction โœจ

Okay so, IP mobility for IPv6 hosts is specified in Mobile IPv6 [RFC3775]. ๐ŸŒˆ Mobile IPv6 needs client functionality in the IPv6 stack of a mobile node. The mobile node and its home agent swap signaling messages to create and keep up a binding between its home address and its care-of address. ๐Ÿ’œ Mobility under [RFC3775] means the IP host has to send IP mobility management signaling messages to the home agent, which sits in the network. ๐Ÿ˜ญ

Network-based mobility is a different approach to the same IP mobility problem. ๐Ÿฆ‹ IPv6 nodes can get mobility without any host involvement, by extending Mobile IPv6 [RFC3775] signaling messages between a network node and a home agent. ๐Ÿซถ The mobile node doesn't have to take part in the signaling between itself and the home agent. Instead, a proxy mobility agent in the network does the signaling with the home agent and handles mobility management on behalf of the mobile node attached to the network. ๐Ÿงš Because it uses and extends Mobile IPv6 signaling and home agent functionality, this protocol is called Proxy Mobile IPv6 (PMIPv6). ๐Ÿ‘‘

Network deployments built for mobility don't care what the IPv6 stack of the nodes they serve can do. ๐Ÿ’… Nodes with mobile IP client functionality in their IPv6 stack get mobility, and nodes without it do too, just by turning on Proxy Mobile IPv6 functionality in the network. โœจ The perks of building a network-based mobility protocol on top of Mobile IPv6 are:

  • Reuse of home agent functionality and the messages/format used in mobility signaling. Mobile IPv6 is a mature protocol with several implementations that have gone through interoperability testing. ๐Ÿ“
  • A common home agent serves as the mobility agent for all types of IPv6 nodes. ๐Ÿ’–

The problem statement and the need for a network-based mobility protocol solution were written up in [RFC4830]. ๐ŸŽ€ Proxy Mobile IPv6 is the solution that addresses those issues and requirements. ๐Ÿ”ฅ

2. Conventions and Terminology ๐Ÿ’œ

2.1. Conventions Used in This Document ๐ŸŒธ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. ๐Ÿซถ

2.2. Terminology ๐Ÿ’…

Okay bestie, let's get into the vocab ๐Ÿงš All the general mobility terms in this doc mean what they mean in the Mobile IPv6 base spec [RFC3775] ๐ŸŽ€. This doc also borrows LMA and MAG from the NETLMM Goals doc [RFC4831] โœจ. It adds some context-specific explanations for the terms below, so let's go!

Proxy Mobile IPv6 Domain (PMIPv6-Domain) ๐ŸŒธ

So the Proxy Mobile IPv6 domain is the network where a mobile node's mobility gets handled using the Proxy Mobile IPv6 protocol as defined in this spec ๐Ÿ’œ. It includes local mobility anchors and mobile access gateways that can set up security associations with each other, and it makes sure they're authorized to send Proxy Binding Updates on behalf of the mobile nodes ๐Ÿ”.

Local Mobility Anchor (LMA) ๐Ÿ‘‘

The LMA is the home agent for the mobile node in a Proxy Mobile IPv6 domain ๐Ÿ . It's the topological anchor point for the mobile node's home network prefix(es), and it's the entity that manages the mobile node's binding state ๐Ÿซถ. It has the functional capabilities of a home agent from the Mobile IPv6 base spec [RFC3775], plus the extra capabilities needed to support Proxy Mobile IPv6 as defined in this spec โœจ.

Mobile Access Gateway (MAG) ๐Ÿฆ‹

The MAG is a function on an access router that manages the mobility-related signaling for a mobile node attached to its access link ๐Ÿ“ก. It's responsible for tracking the mobile node's movements to and from the access link, and for signaling the mobile node's local mobility anchor ๐Ÿงญ.

Mobile Node (MN) ๐Ÿ“

In this doc, "mobile node" means an IP host or router whose mobility is managed by the network ๐Ÿ’–. It can be an IPv4-only node, an IPv6-only node, or a dual-stack node ๐ŸŒˆ. It is not required to participate in any IP mobility related signaling to get mobility for an IP address obtained in that Proxy Mobile IPv6 domain ๐Ÿ˜Œ.

LMA Address (LMAA) ๐ŸŒŠ

The LMAA is the global address configured on the interface of the local mobility anchor. It's the transport endpoint of the bi-directional tunnel between the LMA and the MAG ๐Ÿš‡. This is the address the MAG sends the Proxy Binding Update messages to ๐Ÿ“จ. When you're supporting IPv4 traversal (so the network between the LMA and the MAG is an IPv4 network), this address will be an IPv4 address and gets called IPv4-LMAA, as specified in [IPV4-PMIP6] ๐ŸŒท.

Proxy Care-of Address (Proxy-CoA) ๐ŸŽ€

The Proxy-CoA is the global address configured on the egress interface of the MAG ๐Ÿ›ฐ๏ธ. It's the transport endpoint of the tunnel between the LMA and the MAG ๐Ÿ”—. The LMA sees this address as the care-of address of the mobile node, and it registers it in the Binding Cache entry for that mobile node ๐Ÿ—‚๏ธ. When the transport network between the MAG and the LMA is an IPv4 network, and the care-of address registered at the LMA is an IPv4 address, the term IPv4-Proxy-CoA is used, as specified in [IPV4-PMIP6] ๐Ÿ’….

Mobile Node's Home Network Prefix (MN-HNP) ๐Ÿก

The MN-HNP is a prefix assigned to the link between the mobile node and the MAG ๐Ÿงƒ. More than one prefix can be assigned to that link, in which case all of the assigned prefixes are managed as a set associated with a mobility session ๐ŸŽ. The mobile node configures its interface with one or more addresses from its home network prefix(es) ๐Ÿ’ซ.

If the mobile node connects to the Proxy Mobile IPv6 domain through multiple interfaces at the same time, each attached interface gets its own unique set of home network prefixes ๐Ÿช„. All the prefixes given to one interface of a mobile node get managed under one mobility session ๐Ÿ’œ. For example, home network prefixes P1 and P2 assigned to interface I1 are managed under one mobility session, while prefixes P3, P4, and P5 assigned to interface I2 of the mobile node are managed under a different mobility session ๐ŸŒธ. Also, in some configurations, the assigned prefix can have a 128-bit prefix length ๐Ÿคฏ.

Mobile Node's Home Address (MN-HoA) ๐Ÿ 

MN-HoA is an address from a mobile node's home network prefix ๐ŸŒท. The mobile node can use this address as long as it's attached to the access network in the scope of that Proxy Mobile IPv6 domain ๐ŸŒ. If the mobile node uses more than one address from its home network prefix(es), any one of those addresses is called the mobile node's home address ๐Ÿซง.

Here's the tea: unlike Mobile IPv6, where the home agent knows the mobile node's home address, in Proxy Mobile IPv6 the mobility entities only know the mobile node's home network prefix(es) ๐Ÿ‘€. They aren't always aware of the exact address(es) the mobile node configured on its interface from those prefixes ๐Ÿ™ˆ. But in some configurations, and depending on the address configuration modes enabled on the access link, the mobility entities in the network can be certain about the exact address(es) the mobile node configured ๐Ÿ”.

This is the link where the mobile node got its layer-3 address configuration for the attached interface after it moved into that Proxy Mobile IPv6 domain ๐Ÿงญ. It's the link that conceptually follows the mobile node ๐Ÿฃ. The network makes sure the mobile node always sees this link with respect to its layer-3 network configuration, no matter which access link it attaches to in that Proxy Mobile IPv6 domain ๐Ÿซถ.

Multihomed Mobile Node ๐ŸŒˆ

A mobile node that connects to the same Proxy Mobile IPv6 domain through more than one interface, and uses those interfaces simultaneously, is called a multihomed mobile node ๐Ÿชฉ.

Mobile Node Identifier (MN-Identifier) ๐Ÿชช

This is the identity of a mobile node in the Proxy Mobile IPv6 domain ๐Ÿ’–. It's the stable identifier that the mobility entities in the domain can always acquire and use to predictably identify a mobile node โœจ. It's typically an identifier such as a Network Access Identifier (NAI) [RFC4282] or another identifier such as a Media Access Control (MAC) address ๐ŸŽ€.

This is an identifier that identifies the attached interface of a mobile node ๐Ÿ“Ž. For interfaces that have a link-layer identifier, this identifier can be based on it ๐Ÿงธ. In some cases, the link-layer identifier is generated by the mobile node and conveyed to the mobile access gateway ๐Ÿ“ฌ. The identifier of the attached interface must be stable, as seen by any of the MAGs in a given Proxy Mobile IPv6 domain ๐Ÿ”’. In other cases, there might not be any link-layer identifier associated with the mobile node's interface ๐Ÿคทโ€โ™€๏ธ.

An identifier value of ALL_ZERO is not considered a valid identifier and cannot be used as an interface identifier. No ALL_ZERO for you, bestie ๐Ÿ™…โ€โ™€๏ธ๐Ÿ’…

Policy Profile ๐Ÿ“‹

Policy Profile is an abstract term for a set of configuration parameters configured for a given mobile node ๐ŸŽจ. The mobility entities in the Proxy Mobile IPv6 domain need access to these parameters to provide mobility management to that mobile node ๐Ÿซง. The specific details on how the network entities get this policy profile are outside the scope of this document ๐Ÿšซ.

Proxy Binding Update (PBU) ๐Ÿ“จ

This is a request message a MAG sends to a mobile node's LMA to establish a binding between the mobile node's home network prefix(es) assigned to a given interface of the mobile node and its current care-of address (Proxy-CoA) ๐ŸŒธ.

Proxy Binding Acknowledgement (PBA) ๐Ÿ’Œ

This is a reply message an LMA sends in response to a Proxy Binding Update it received from a MAG ๐Ÿซถ.

Per-MN-Prefix and Shared-Prefix Models ๐Ÿงฉ

The Per-MN-Prefix model refers to an addressing model where there's a unique network prefix (or prefixes) assigned for each node ๐ŸŒŸ. The Shared-Prefix model refers to an addressing model where the prefix(es) are shared by more than one node ๐Ÿ‘ฏ. This spec supports the Per-MN-Prefix model and does not support the Shared-Prefix model ๐Ÿ™…โ€โ™€๏ธ.

Mobility Session ๐Ÿฆ‹

In the context of the Proxy Mobile IPv6 spec, a mobility session refers to the creation or existence of state associated with the mobile node's mobility binding on the LMA and on the serving MAG ๐Ÿ’œ.

DHCP ๐ŸŒฌ๏ธ

Throughout this doc, the acronym DHCP refers to DHCP for IPv6, as defined in [RFC3315] ๐Ÿ’ซ.

ALL_ZERO and NON_ZERO ๐Ÿ”ข

Protocol message fields initialized with the value 0 in each byte of the field are called ALL_ZERO. For example, that's an 8-byte link-layer identifier field with the value set to 0 in each of the 8 bytes, or an IPv6 address with the value 0 in all of the 16 bytes ๐Ÿงฎ. The term NON_ZERO refers to any value other than an ALL_ZERO value ๐ŸŒˆ.


3. Proxy Mobile IPv6 Protocol Overview โœจ

Okay so this spec describes a network-based mobility management protocol ๐Ÿ›ธ. It's called Proxy Mobile IPv6, and it's based on Mobile IPv6 [RFC3775] ๐Ÿ’–.

Proxy Mobile IPv6 is meant to give network-based IP mobility management support to a mobile node, without the mobile node having to participate in any IP mobility related signaling ๐Ÿ™Œ. The mobility entities in the network track the mobile node's movements, start the mobility signaling, and set up the required routing state ๐Ÿ—บ๏ธ.

The core functional entities in the NETLMM infrastructure are the LMA and the MAG ๐Ÿ‘‘๐Ÿฆ‹. The LMA is responsible for maintaining the mobile node's reachability state, and it's the topological anchor point for the mobile node's home network prefix(es) ๐Ÿฐ. The MAG performs the mobility management on behalf of a mobile node, and it lives on the access link where the mobile node is anchored ๐Ÿ“. The MAG is responsible for detecting the mobile node's movements to and from the access link, and for starting binding registrations to the mobile node's LMA ๐Ÿ“ฃ. There can be multiple LMAs in a Proxy Mobile IPv6 domain, each serving a different group of mobile nodes ๐ŸŽ€. The architecture of a Proxy Mobile IPv6 domain is shown in Figure 1 ๐ŸŒท.

Okay so picture this: a whole Proxy Mobile IPv6 domain, and from the mobile node's point of view it's giving ONE big link ๐Ÿงšโœจ

              +----+                +----+
              |LMA1|                |LMA2|
              +----+                +----+
       LMAA1 -> |                      | <-- LMAA2
                |                      |
                \\                    //\\
                 \\                  //  \\
                  \\                //    \\
               +---\\------------- //------\\----+
              (     \\  IPv4/IPv6 //        \\    )
              (      \\  Network //          \\   )
               +------\\--------//------------\\-+
                       \\      //              \\
                        \\    //                \\
                         \\  //                  \\
             Proxy-CoA1--> |                      | <-- Proxy-CoA2
                        +----+                 +----+
                        |MAG1|-----{MN2}       |MAG2|
                        +----+    |            +----+
                          |       |               |
             MN-HNP1 -->  |     MN-HNP2           | <-- MN-HNP3, MN-HNP4
                        {MN1}                   {MN3}

                    Figure 1: Proxy Mobile IPv6 Domain

So here's the deal ๐ŸŽ€. When a mobile node walks into a Proxy Mobile IPv6 domain and plugs into an access link, the mobile access gateway on that link is the one who first figures out who the mobile node is and grabs its identity ๐Ÿ”. Then it checks whether that mobile node is actually allowed to use the network-based mobility management service. Iconic behaviour from the gateway, honestly ๐Ÿ’…

If the network says "yep, you're authorized" โœ…, then the network makes sure the mobile node can get its address configuration on the connected interface, using whichever address configuration mechanisms the network allows, AND move ANYWHERE in that domain ๐Ÿฆ‹. That address configuration includes the addresses from its home network prefix(es), the default-router address on the link, and other related configuration parameters. And the best part? From each mobile node's perspective the whole domain looks like one single link. The network keeps everything so the mobile node doesn't notice any change to its layer-3 attachment, even after it switches its point of attachment ๐Ÿ˜ญ๐Ÿซถ

The mobile node can be an IPv4-only node, an IPv6-only node, or a dual-stack (IPv4/v6) node ๐ŸŒˆ. Depending on the policy profile info, which says what kind of address or prefixes the mobile node should get, it can end up with an IPv4 address, an IPv6 address, or both, and still roam around the domain. BUT (and this is important bestie ๐Ÿšจ) this specification ONLY supports IPv6 address/prefix mobility, with the transport network being IPv6. IPv4 addressing or an IPv4 transport network is covered in the companion document [IPV4-PMIP6], so go read that one if you need it ๐Ÿ“š

If the mobile node connects through multiple interfaces and over multiple access networks, the network gives each connected interface its own unique set of home network prefixes ๐Ÿ“. The mobile node can then configure addresses on those interfaces from the matching home network prefix(es). Now here's the tea โ˜•. If the mobile node hands off by moving its address configuration from one interface to the other, AND the local mobility anchor gets a handoff hint from the serving mobile access gateway about it, then the local mobility anchor assigns the SAME home network prefix(es) it gave out before the handoff. Consistency is everything ๐Ÿ’œ

The mobile node can also hand off by switching from one mobile access gateway to a different one while using the same interface, and it keeps its address configuration on that attached interface the whole time ๐ŸŒธ

  +-----+                +-----+                +-----+
  | MN  |                | MAG |                | LMA |
  +-----+                +-----+                +-----+
     |                      |                      |
 MN Attached                |                      |
     |                      |                      |
     |       MN Attached Event from MN/Network     |
     |        (Acquire MN-Id and Profile)          |
     |                      |                      |
     |--- Rtr Sol --------->|                      |
     |                      |                      |
     |                      |--- PBU ------------->|
     |                      |                      |
     |                      |                  Accept PBU
     |                      | (Allocate MN-HNP(s), Setup BCE and Tunnel)
     |                      |                      |
     |                      |<------------- PBA ---|
     |                      |                      |
     |                 Accept PBA                  |
     |          (Set Up Tunnel and Routing)        |
     |                      |                      |
     |                      |==== Bi-Dir Tunnel ===|
     |                      |                      |
     |<--------- Rtr Adv ---|                      |
     |                      |                      |
  IP Address                |                      |
 Configuration              |                      |
     |                      |                      |

          Figure 2: Mobile Node Attachment - Signaling Call Flow

Figure 2 is the signaling call flow for when the mobile node enters the domain ๐Ÿฆ‹โœจ. The Router Solicitation message from the mobile node can show up at any time after the mobile node attaches, and it has no strict ordering relationship with the other messages in the flow, so don't stress about the order ๐Ÿ™ˆ

Now, to keep the LMA updated on where the mobile node currently is, the mobile access gateway sends a Proxy Binding Update message to the mobile node's local mobility anchor ๐Ÿ“ฎ. Once the LMA accepts that PBU, it sends back a Proxy Binding Acknowledgement message that includes the mobile node's home network prefix(es). It also creates the Binding Cache entry and sets up its end of the bi-directional tunnel to the mobile access gateway ๐Ÿ”ฅ

When the mobile access gateway gets that PBA, it sets up ITS end of the bi-directional tunnel to the local mobility anchor, and it sets up forwarding for the mobile node's traffic too ๐Ÿ’–. At this point the mobile access gateway has everything it needs to emulate the mobile node's home link ๐Ÿ‘‘. It then sends Router Advertisement messages to the mobile node on the access link, advertising the mobile node's home network prefix(es) as hosted on-link prefix(es) โœจ

The mobile node gets those Router Advertisements on the access link and tries to configure its interface using stateful or stateless address configuration, depending on which modes the access link permits as indicated in those RAs ๐ŸŽ€. After a successful address configuration, the mobile node has one or more addresses from its home network prefix(es) ๐Ÿฅณ

Once address configuration is done, the mobile node has one or more valid addresses from its home network prefix(es) at its current point of attachment ๐Ÿ’…. The serving mobile access gateway and the local mobility anchor also have the right routing state to handle traffic sent to and from the mobile node using any one or more of those addresses ๐Ÿงš

The local mobility anchor is the topological anchor point for the mobile node's home network prefix(es), so it receives any packets sent to the mobile node by any node, whether inside or outside the Proxy Mobile IPv6 domain ๐ŸŒˆ. The LMA forwards those packets to the mobile access gateway through the bi-directional tunnel. The MAG at the other end of the tunnel removes the outer header and forwards the packet on the access link to the mobile node ๐Ÿ’œ. BUT, in some cases, traffic from a correspondent node that is locally connected to the mobile access gateway might never reach the LMA and could instead be routed locally by the MAG (see Section 6.10.3) ๐Ÿ‘€

The mobile access gateway acts as the default router on the point-to-point link it shares with the mobile node ๐Ÿซถ. Any packet the mobile node sends to any correspondent node is received by the MAG and sent to its LMA through the bi-directional tunnel. The LMA on the other end removes the outer header and routes the packet to its destination ๐Ÿš€. Again though, in some cases traffic going to a correspondent node that's locally connected to the MAG may be routed locally by the MAG instead (see Section 6.10.3) ๐Ÿ™ˆ

    +-----+          +-----+          +-----+          +-----+
    | MN  |          |p-MAG|          | LMA |          |n-MAG|
    +-----+          +-----+          +-----+          +-----+
       |                |                |                |
       |                |==Bi-Dir Tunnel=|                |
   MN Detached          |                |                |
       |         MN Detached Event       |                |
       |                |                |                |
       |                |-- DeReg PBU -->|                |
       |                |                |                |
       |                |            Accept PBU           |
       |                |   (Start MinDelayBeforeBCEDelete Timer)
       |                |                |                |
       |                |<-------- PBA --|                |
       |                |                |                |
   MN Attached          |                |                |
       |                |                |   MN Attached event received
       |                |                |     from MN or from network
       |                |                |   (Acquire MN-Id and Profile)
       |                |                |                |
       |--- Rtr Sol ------------------------------------->|
                               ....
                                    Registration steps as in Fig. 2.
                               ....
       |                |                |==Bi-Dir Tunnel=|
       |                |                |                |
       |<------------------------------------ Rtr Adv ----|
       |                |                |                |
   MN retains HoA/HNP(s)
       |                |                |                |

            Figure 3: Mobile Node Handoff - Signaling Call Flow

Last one, Figure 3 ๐ŸŒŸ is the handoff call flow, going from the previously attached mobile access gateway (p-MAG) to the newly attached one (n-MAG). Heads up though: this diagram only shows ONE possible message ordering ๐Ÿฟ. It's totally possible the registration message from the n-MAG arrives BEFORE the de-registration message from the p-MAG does, so don't be shocked if the order flips on you ๐Ÿ˜ญ๐Ÿ’•

After the first address config in the Proxy Mobile IPv6 domain, say the mobile node hops to a new point of attachment. The mobile access gateway on the previous link notices it has left, signals the local mobility anchor, and removes the binding and routing state for that mobile node ๐Ÿฆ‹. The local mobility anchor identifies which mobility session the request belongs to and accepts it, then waits a set amount of time so the mobile access gateway on the new link can update the binding. If no Proxy Binding Update message shows up in that window, it deletes the binding cache entry. Bestie, the timing is everything ๐Ÿ’…

The mobile access gateway on the new access link spots the mobile node and signals the local mobility anchor to update the binding state ๐Ÿ”ฅ. Once that signaling is done, the serving mobile access gateway sends Router Advertisements carrying the mobile node's home network prefix(es). The mobile node doesn't notice any change to the layer-3 attachment of its interface, which is so seamless it's giving magic โœจ


4. Proxy Mobile IPv6 Protocol Security โœจ

Security is literally the vibe check of this whole protocol ๐Ÿ”’ The Proxy Binding Update and Proxy Binding Acknowledgement messages, the signaling exchanged between the mobile access gateway and the local mobility anchor, MUST be protected using end-to-end security association(s) that offer integrity and data origin authentication. No shortcuts, periodt ๐Ÿ’–

The mobile access gateway and the local mobility anchor MUST implement IPsec for protecting the Proxy Mobile IPv6 signaling messages [RFC4301]. IPsec is a mandatory-to-implement security mechanism ๐Ÿซถ Additional documents may specify alternative mechanisms, though, and the mobility entities can turn on a specific mechanism for securing the signaling messages, either through static configuration or after a dynamic negotiation using any standard security negotiation protocols. Same energy as Mobile IPv6 [RFC3775]: using IPsec to protect a mobile node's data traffic is optional ๐ŸŒธ

IPsec Encapsulating Security Payload (ESP) [RFC4303] in transport mode with mandatory integrity protection SHOULD be used for protecting the signaling messages. Confidentiality protection of these messages is not required, so no need to encrypt those ๐Ÿงš

IPsec ESP [RFC4303] in tunnel mode MAY be used to protect the mobile node's tunneled data traffic, if protection of data traffic is required ๐Ÿ“

Internet Key Exchange Protocol version 2 (IKEv2) [RFC4306] SHOULD be used to set up security associations between the mobile access gateway and the local mobility anchor, protecting the Proxy Binding Update and Proxy Binding Acknowledgement messages. The mobile access gateway and the local mobility anchor can use any of the authentication mechanisms specified in [RFC4306] for mutual authentication ๐Ÿ”

Okay, so the Mobile IPv6 specification [RFC3775] requires the home agent to stop a mobile node from creating security associations or binding cache entries for another mobile node's home address ๐Ÿ™ˆ In this protocol, though, the mobile node isn't involved in creating security associations for protecting the signaling messages or in sending binding updates. That's why the local mobility anchor MUST restrict the creation and manipulation of proxy bindings to specifically authorized mobile access gateways and prefixes. The local mobility anchor MUST be locally configurable so it can authorize those specific combinations ๐Ÿ‘‘ A policy store or Authentication, Authorization, and Accounting (AAA) may be employed too, but those are outside the scope of this specification.

Unlike in Mobile IPv6 [RFC3775], these signaling messages do not carry either the Home Address destination option or the Type 2 Routing header. So the policy entries and security association selectors stay the same and need no special IPsec-related considerations. Zero extra drama ๐Ÿ’…

4.1. Peer Authorization Database (PAD) Example Entries

This section covers PAD entries [RFC4301] on the mobile access gateway and the local mobility anchor. These are only example configurations, bestie ๐Ÿฆ‹ The PAD is a logical concept, so a particular mobile access gateway or local mobility anchor implementation can build the PAD in any implementation-specific manner. The PAD state may also be spread across various databases in a specific implementation ๐ŸŒˆ

In the example below, the identity of the local mobility anchor is assumed to be lma_identity_1 and the identity of the mobile access gateway is assumed to be mag_identity_1.

       mobile access gateway PAD:
         - IF remote_identity = lma_identity_1
              Then authenticate (shared secret/certificate/EAP)
              and authorize CHILD_SAs for remote address lma_address_1

       local mobility anchor PAD:
         - IF remote_identity = mag_identity_1
              Then authenticate (shared secret/certificate/EAP)
              and authorize CHILD_SAs for remote address mag_address_1

                           Figure 4: PAD Entries

The list of authentication mechanisms in the examples above isn't exhaustive. Other credentials used for authentication could be stored in the PAD too ๐Ÿงš

4.2. Security Policy Database (SPD) Example Entries

This section covers the security policy entries [RFC4301] on the mobile access gateway and the local mobility anchor that are needed to protect the Proxy Mobile IPv6 signaling messages ๐Ÿ”ฅ The SPD entries are only example configurations. A particular mobile access gateway or local mobility anchor implementation could configure different SPD entries, as long as they still provide the required security ๐Ÿ’–

In the example below, the identity of the mobile access gateway is assumed to be mag_identity_1, the address of the mobile access gateway is assumed to be mag_address_1, and the address of the local mobility anchor is assumed to be lma_address_1. The acronym MH stands for the protocol number of the Mobility Header [RFC3775], while local_mh_type and remote_mh_type stand for local mobility header type and remote mobility header type, respectively ๐ŸŽ€

      mobile access gateway SPD-S:
        - IF local_address = mag_address_1 &
             remote_address = lma_address_1 &
             proto = MH & (local_mh_type = BU | remote_mh_type = BA)
          Then use SA ESP transport mode
          Initiate using IDi = mag_identity_1 to address lma_address_1

      local mobility anchor SPD-S:
        - IF local_address = lma_address_1 &
             remote_address = mag_address_1 &
             proto = MH & (local_mh_type = BA | remote_mh_type = BU)
          Then use SA ESP transport mode

                           Figure 5: SPD Entries

5. Local Mobility Anchor Operation ๐Ÿ’œ

The local mobility anchor MUST support the home agent function defined in [RFC3775], along with the extensions defined in this specification. A home agent with these modifications and enhanced capabilities for supporting the Proxy Mobile IPv6 protocol is called a local mobility anchor ๐Ÿ‘‘

This section walks through the operational details of the local mobility anchor ๐ŸŒธ

5.1. Extensions to Binding Cache Entry Data Structure

Every local mobility anchor MUST maintain a Binding Cache entry for each currently registered mobile node. A Binding Cache entry is a conceptual data structure, described in Section 9.1 of [RFC3775] ๐Ÿงš

To support this specification, the Binding Cache Entry data structure needs these extra fields:

  • A flag indicating whether or not this Binding Cache entry was created due to a proxy registration. This flag is set to value 1 for Binding Cache entries that are proxy registrations, and set to value 0 for all other entries.
  • The identifier of the registered mobile node, MN-Identifier. This identifier is obtained from the Mobile Node Identifier Option [RFC4283] present in the received Proxy Binding Update message.
  • The link-layer identifier of the mobile node's connected interface on the access link. This identifier can be acquired from the Mobile Node Link-layer Identifier option, present in the received Proxy Binding Update message. If the option was not present in the request, this variable length field MUST be set to two (octets) and MUST be initialized to a value of ALL_ZERO ๐Ÿ“
  • The link-local address of the mobile access gateway on the point-to-point link shared with the mobile node. The local mobility anchor generates this after accepting the initial Proxy Binding Update message.
  • A list of IPv6 home network prefixes assigned to the mobile node's connected interface. The home network prefix(es) may have been statically configured in the mobile node's policy profile, or dynamically allocated by the local mobility anchor. Each prefix entry also includes the corresponding prefix length ๐ŸŒˆ
  • The tunnel interface identifier (tunnel-if-id) of the bi-directional tunnel between the local mobility anchor and the mobile access gateway where the mobile node is currently anchored. This is internal to the local mobility anchor, and it's acquired during tunnel creation ๐Ÿฆ‹
  • The access technology type by which the mobile node is currently attached. This is obtained from the Access Technology Type option, present in the Proxy Binding Update message.
  • The 64-bit timestamp value of the most recently accepted Proxy Binding Update message sent for this mobile node. This is the time of day on the local mobility anchor when the message was received. If the Timestamp option is not present in the Proxy Binding Update message (i.e., when the sequence-number-based scheme is in use), the value MUST be set to ALL_ZERO โญ

Typically, any one of the mobile node's home network prefixes from its mobility session can be used as a key for finding its Binding Cache entry, except when the mobility session has been handed off to a new mobile access gateway that doesn't know the home network prefix(es) assigned to that session. In those handoff cases, the Binding Cache entry can be located under the considerations specified in Section 5.4.1 ๐Ÿซถ

5.2. Supported Home Network Prefix Models ๐ŸŽ€

okay so this spec supports the Per-MN-Prefix model and does not support the Shared-Prefix model ๐Ÿ’…. In the Per-MN-Prefix model, the home network prefix(es) given to a mobile node belong to that mobile node alone ๐Ÿงš. No other node shares an address from that prefix, except the Subnet-Router anycast address [RFC4291] that the mobile access gateway hosting the prefix on that link uses ๐ŸŒธ.

A given interface of the mobile node can have more than one prefix. All of those assigned prefixes MUST be unique to that mobile node, and they are all part of exactly one mobility session โœจ. If the mobile node attaches to the Proxy Mobile IPv6 domain at the same time through multiple interfaces, each attached interface MUST be assigned one or more unique prefixes ๐Ÿฆ‹. Prefixes that are not assigned to the same interface MUST NOT be managed under the same mobility session ๐Ÿ’œ.

The mobile node's home network prefix(es) for a given interface (part of a mobility session) will be hosted on the access link where the mobile node is attached, using that interface ๐ŸŒˆ. The local mobility anchor is not required to perform any proxy Neighbor Discovery (ND) operations [RFC4861] to defend the mobile node's home address(es), because the prefixes are not hosted locally on the local mobility anchor ๐Ÿ™ˆ. Routing-wise though, the home network prefix(es) is topologically anchored on the local mobility anchor ๐Ÿ‘‘.

5.3. Signaling Considerations ๐Ÿ’Œ

This section gives you the rules for processing signaling messages ๐Ÿ“ฎ. The processing rules in this section and the other related sections are chained together and happen in a specific order ๐Ÿ”—. When you apply these considerations to signaling messages, the specified order MUST be maintained ๐Ÿซถ.

5.3.1. Processing Proxy Binding Updates ๐Ÿ”ฅ

  1. The received Proxy Binding Update message (a Binding Update message with the (P) flag set to value of 1, format specified in Section 8.1) MUST be authenticated as described in Section 4 ๐Ÿ”. When IPsec is used for message authentication, the Security Parameter Index (SPI) in the IPsec header [RFC4306] of the received packet is needed to locate the security association used to authenticate the Proxy Binding Update message ๐Ÿ—๏ธ.
  2. The local mobility anchor MUST observe the rules described in Section 9.2 of [RFC3775] when processing the Mobility Header in the received Proxy Binding Update message ๐Ÿ“œ.
  3. The local mobility anchor MUST ignore the check, specified in Section 10.3.1 of [RFC3775], related to the presence of the Home Address destination option in the Proxy Binding Update message ๐Ÿ™ƒ.
  4. The local mobility anchor MUST identify the mobile node from the identifier present in the Mobile Node Identifier option [RFC4283] of the Proxy Binding Update message ๐Ÿชช. If the Mobile Node Identifier option is not present in the Proxy Binding Update message, the local mobility anchor MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to MISSING_MN_IDENTIFIER_OPTION (Missing Mobile Node Identifier option) ๐Ÿšซ. The identifier in the Mobile Node Identifier option carried in the message MUST be set to a zero length identifier 0๏ธโƒฃ.
  5. The local mobility anchor MUST apply the required policy checks, as explained in Section 4, to verify that the sender is a trusted mobile access gateway authorized to send Proxy Binding Update messages on behalf of this mobile node ๐Ÿ›ก๏ธ.
  6. If the local mobility anchor determines that the requesting node is not authorized to send Proxy Binding Update messages for the identified mobile node, it MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to MAG_NOT_AUTHORIZED_FOR_PROXY_REG (not authorized to send proxy binding updates) ๐Ÿ˜ค.
  7. If the local mobility anchor cannot identify the mobile node based on the identifier present in the Mobile Node Identifier option [RFC4283] of the Proxy Binding Update message, it MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to NOT_LMA_FOR_THIS_MOBILE_NODE (Not a local mobility anchor for this mobile node) ๐Ÿคทโ€โ™€๏ธ.
  8. If the local mobility anchor determines that the mobile node is not authorized for the network-based mobility management service, it MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to PROXY_REG_NOT_ENABLED (Proxy Registration not enabled) ๐Ÿšช.
  9. The local mobility anchor MUST apply the considerations specified in Section 5.5 for processing the Sequence Number field and the Timestamp option (if present) in the Proxy Binding Update message โฑ๏ธ.
  10. If there is no Home Network Prefix option(s) (with any value) present in the Proxy Binding Update message, the local mobility anchor MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to MISSING_HOME_NETWORK_PREFIX_OPTION (Missing Home Network Prefix option) ๐Ÿซ .
  11. If the Handoff Indicator option is not present in the Proxy Binding Update message, the local mobility anchor MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to MISSING_HANDOFF_INDICATOR_OPTION (Missing Handoff Indicator option) ๐Ÿ™…โ€โ™€๏ธ.
  12. If the Access Technology Type option is not present in the Proxy Binding Update message, the local mobility anchor MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to MISSING_ACCESS_TECH_TYPE_OPTION (Missing Access Technology Type option) ๐Ÿ“ต.
  13. Considerations specified in Section 5.4.1 MUST be applied for performing the Binding Cache entry existence test ๐Ÿ”. If those checks specified in Section 5.4.1 result in associating the received Proxy Binding Update message to a new mobility session creation request, considerations from Section 5.3.2 (Initial Binding Registration - New Mobility Session), MUST be applied ๐Ÿ†•. If those checks result in associating the request to an existing mobility session, the following checks determine the next set of processing rules that need to be applied ๐Ÿงฉ.
    • If the received Proxy Binding Update message has the lifetime value of zero, considerations from Section 5.3.5 (Binding De-Registration) MUST be applied ๐Ÿ‘‹.
    • If the Proxy-CoA in the Binding Cache entry matches the source address of the request (or the address in the Alternate Care-of Address option, if the option is present), considerations from Section 5.3.3 (Binding LIfetime Extension - No handoff) MUST be applied ๐Ÿ .
    • For all other cases, considerations from Section 5.3.4 (Binding Lifetime Extension - After handoff) MUST be applied ๐Ÿšถโ€โ™€๏ธ.
  14. When sending the Proxy Binding Acknowledgement message with any Status field value, the message MUST be constructed as specified in Section 5.3.6 ๐Ÿ’….

5.3.2. Initial Binding Registration (New Mobility Session) ๐ŸŒŸ

  1. If there is at least one instance of the Home Network Prefix option present in the Proxy Binding Update message with the prefix value set to ALL_ZERO, the local mobility anchor MUST allocate one or more home network prefixes to the mobile node and assign it to the new mobility session created for the mobile node ๐ŸŽ. The local mobility anchor MUST ensure the allocated prefix(es) is not in use by any other node or mobility session ๐Ÿ”’. The decision on how many prefixes to allocate for the attached interface can be based on a global policy or a policy specific to that mobile node ๐Ÿงฎ. However, when stateful address autoconfiguration using DHCP is supported on the link, considerations from Section 6.11 MUST be applied for the prefix assignment ๐Ÿ“ฆ.
  2. If the local mobility anchor is unable to allocate any home network prefix for the mobile node, it MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to 130 (Insufficient resources) ๐Ÿ˜ต.
  3. If there are one or more Home Network Prefix options present in the Proxy Binding Update message (with each of the prefixes set to a NON_ZERO value), the local mobility anchor, before accepting that request, MUST ensure each one of those prefixes is owned by the local mobility anchor, and further that the mobile node is authorized to use these prefixes ๐Ÿง. If the mobile node is not authorized to use any one or more of those prefixes, the local mobility anchor MUST reject the request and send a Proxy Binding Acknowledgement message with the Status field set to NOT_AUTHORIZED_FOR_HOME_NETWORK_PREFIX (mobile node not authorized for one or more of the requesting home network prefixes) ๐Ÿšท.
  4. Upon accepting the request, the local mobility anchor MUST create a Binding Cache entry for the mobile node ๐Ÿ“. It has to set the fields in the Binding Cache entry to the accepted values for that registration ๐ŸŽฏ.
  5. If there is no existing bi-directional tunnel to the mobile access gateway that sent the request, the local mobility anchor MUST establish a bi-directional tunnel to that mobile access gateway ๐Ÿš‡. Considerations from Section 5.6.1 MUST be applied for managing the dynamically created bi-directional tunnel ๐Ÿ› ๏ธ.
  6. The local mobility anchor MUST create a prefix route(s) over the tunnel to the mobile access gateway for forwarding any traffic received for the mobile node's home network prefix(es) associated with this mobility session ๐Ÿ›ฃ๏ธ. The created tunnel and the routing state MUST result in the forwarding behavior on the local mobility anchor as specified in Section 5.6.2 ๐Ÿฆ‹.
  7. The local mobility anchor MUST send the Proxy Binding Acknowledgement message with the Status field set to 0 (Proxy Binding Update Accepted) ๐ŸŽ‰. The message MUST be constructed as specified in Section 5.3.6 โœจ.

5.3.3. Binding Lifetime Extension (No Handoff) โณ

  1. Upon accepting the Proxy Binding Update message for extending the binding lifetime, received from the same mobile access gateway (if the Proxy-CoA in the Binding Cache entry is the same as the Proxy-CoA in the request) that last updated the binding, the local mobility anchor MUST update the Binding Cache entry with the accepted registration values ๐Ÿ”.
  2. The local mobility anchor MUST send the Proxy Binding Acknowledgement message with the Status field set to 0 (Proxy Binding Update Accepted) ๐Ÿ’–. The message MUST be constructed as specified in Section 5.3.6 ๐Ÿซถ.

5.3.4. Binding Lifetime Extension (After Handoff) ๐Ÿฆ‹

okay so this is the handoff version of extending a lifetime, and the LMA has a whole checklist ๐Ÿ’…

  1. Once the LMA accepts a Proxy Binding Update that extends the binding lifetime, and it came from a new mobile access gateway (the Proxy-CoA in the Binding Cache entry doesn't match the Proxy-CoA in the request, which means the mobile node's mobility session got handed off), the local mobility anchor MUST update the Binding Cache entry with the accepted registration values. ๐Ÿ’–
  2. The local mobility anchor MUST remove the previously created route(s) for the mobile node's home network prefix(es) tied to this mobility session. Also, if no other mobile nodes share the dynamically created bi-directional tunnel to the previous mobile access gateway, the tunnel SHOULD be deleted, applying considerations from section 5.6.1 (if the tunnel is a dynamically created tunnel and not a fixed pre-established tunnel). ๐Ÿงน
  3. If there's no existing bi-directional tunnel to the mobile access gateway that sent the request, the local mobility anchor MUST establish a bi-directional tunnel to that gateway. Considerations from Section 5.6.1 MUST be applied for managing the dynamically created bi-directional tunnel. ๐ŸŒธ
  4. The local mobility anchor MUST create prefix route(s) over the tunnel to the mobile access gateway, so it can forward any traffic received for the mobile node's home network prefix(es) tied to that mobility session. The created tunnel and routing state MUST result in the forwarding behavior on the local mobility anchor as specified in Section 5.6.2. โœจ
  5. The local mobility anchor MUST send the Proxy Binding Acknowledgement message with the Status field set to 0 (Proxy Binding Update Accepted). The message MUST be constructed as specified in Section 5.3.6. ๐ŸŽ€

5.3.5. Binding De-Registration ๐Ÿซถ

  1. If the received Proxy Binding Update message with a lifetime value of zero has a Source Address in the IPv6 header (or the address in the Alternate Care-of Address option, if that option is present) that's different from what's in the Proxy-CoA field in the Binding Cache entry, the local mobility anchor MUST ignore the request. ๐Ÿ™…โ€โ™€๏ธ
  2. When the local mobility anchor accepts a Proxy Binding Update message with a lifetime value of zero, it MUST wait for the amount of time set by MinDelayBeforeBCEDelete before it deletes the Binding Cache entry. However, it MUST send the Proxy Binding Acknowledgement message with the Status field set to 0 (Proxy Binding Update Accepted). The message MUST be constructed as specified in Section 5.3.6. โณ
    • During this wait period, the local mobility anchor SHOULD drop the mobile node's data traffic. ๐Ÿšซ
    • During this wait period, if the local mobility anchor receives a valid Proxy Binding Update message for the same mobility session with a lifetime value greater than zero, and that request is accepted, then the Binding Cache entry MUST NOT be deleted. Instead it must be updated with the newly accepted registration values, and the wait period should end. ๐Ÿ™Œ
    • By the end of this wait period, if the local mobility anchor didn't receive any valid Proxy Binding Update messages for this mobility session, it MUST delete the Binding Cache entry and remove the routing state created for that mobility session. The local mobility anchor can potentially reassign the prefix(es) tied to this mobility session to other mobile nodes. ๐Ÿ‘‹

5.3.6. Constructing the Proxy Binding Acknowledgement Message ๐Ÿ‘‘

  • The local mobility anchor, when sending the Proxy Binding Acknowledgement message to the mobile access gateway, MUST construct the message as specified below.
          IPv6 header (src=LMAA, dst=Proxy-CoA)
            Mobility header
               - BA    /* P flag must be set to value of 1 */
              Mobility Options
               - Mobile Node Identifier option            (mandatory)
               - Home Network Prefix option(s)            (mandatory)
               - Handoff Indicator option                 (mandatory)
               - Access Technology Type option            (mandatory)
               - Timestamp option                         (optional)
               - Mobile Node Link-layer Identifier option (optional)
               - Link-local Address option                (optional)

Figure 6: Proxy Binding Acknowledgement Message Format ๐Ÿ“ฆ

  • The Source Address field in the IPv6 header of the message MUST be set to the destination address of the received Proxy Binding Update message. ๐ŸŒŠ
  • The Destination Address field in the IPv6 header of the message MUST be set to the source address of the received Proxy Binding Update message. When there is no Alternate Care-of Address option in the request, the destination address is the same as the Proxy-CoA. Otherwise, the address may not be the same as the Proxy-CoA. ๐ŸŽฏ
  • The Mobile Node Identifier option [RFC4283] MUST be present. The identifier field in the option MUST be copied from the Mobile Node Identifier option in the received Proxy Binding Update message. If the option wasn't present in the request, the identifier in the option MUST be set to a zero length identifier. ๐Ÿชช
  • At least one Home Network Prefix option MUST be present. ๐Ÿ 
    • If the Status field is set to a value greater than or equal to 128 (meaning the Proxy Binding Update is rejected), all the Home Network Prefix options that were present in the request (along with their prefix values) MUST be present in the reply. But if there was no Home Network Prefix option in the request, then there MUST be only one Home Network Prefix option, with the value in the option set to ALL_ZERO. ๐Ÿฅฒ
    • For all other cases, there MUST be a Home Network Prefix option for each of the assigned home network prefixes (for that mobility session), with the prefix value in the option set to the allocated prefix value. ๐Ÿ“
  • The Handoff Indicator option MUST be present. The handoff indicator field in the option MUST be copied from the Handoff Indicator option in the received Proxy Binding Update message. If the option wasn't present in the request, the value in the option MUST be set to zero. ๐Ÿ”
  • The Access Technology Type option MUST be present. The access technology type field in the option MUST be copied from the Access Technology Type option in the received Proxy Binding Update message. If the option wasn't present in the request, the value in the option MUST be set to zero. ๐Ÿ“ก
  • The Timestamp option MUST be present only if the same option was present in the received Proxy Binding Update message, and MUST NOT be present otherwise. Considerations from Section 5.5 must be applied for constructing the Timestamp option. โฐ
  • The Mobile Node Link-layer Identifier option MUST be present only if the same option was present in the received Proxy Binding Update message, and MUST NOT be present otherwise. The link-layer identifier value MUST be copied from the Mobile Node Link-layer Identifier option in the received Proxy Binding Update message. ๐Ÿ”—
  • The Link-local Address option MUST be present only if the same option was present in the received Proxy Binding Update message, and MUST NOT be present otherwise. If the Status field in the reply is set to a value greater than or equal to 128 (the Proxy Binding Update is rejected), the link-local address from the request MUST be copied to the Link-local Address option in the reply. Otherwise, the following considerations apply. ๐Ÿ’ซ
    • If the received Proxy Binding Update message has the Link-local Address option with an ALL_ZERO value, and there is an existing Binding Cache entry associated with this request, the link-local address from the Binding Cache entry MUST be copied to the Link-local Address option in the reply. ๐Ÿง 
    • If the received Proxy Binding Update message has the Link-local Address option with an ALL_ZERO value, and there is no existing Binding Cache entry associated with this request, the local mobility anchor MUST generate the link-local address that the mobile access gateway can use on the point-to-point link shared with the mobile node. This generated address MUST be copied to the Link-local Address option in the reply. The same address MUST also be copied to the link-local address field of the Binding Cache entry created for this mobility session. ๐Ÿ› ๏ธ
    • If the received Proxy Binding Update message has the Link-local Address option with a NON_ZERO value, the link-local address from the request MUST be copied to the Link-local Address option in the reply. The same address MUST also be copied to the link-local address field of the Binding Cache entry associated with this request (after creating the Binding Cache entry, if one doesn't exist). ๐Ÿช„
  • If IPsec is used for protecting the signaling messages, the message MUST be protected using the security association existing between the local mobility anchor and the mobile access gateway. ๐Ÿ”
  • Unlike in Mobile IPv6 [RFC3775], the Type 2 Routing header MUST NOT be present in the IPv6 header of the packet. ๐Ÿšซ

5.4. Multihoming Support ๐ŸŒˆ

This specification lets mobile nodes connect to a Proxy Mobile IPv6 domain through multiple interfaces for simultaneous access. Here are the key parts of this multihoming support ๐Ÿซง

  • When a mobile node connects to a Proxy Mobile IPv6 domain through multiple interfaces for simultaneous access, the local mobility anchor MUST allocate a mobility session for each of the attached interfaces. Each mobility session should be managed under a separate Binding Cache entry, with its own lifetime. ๐Ÿงฉ
  • The local mobility anchor MAY allocate more than one home network prefix for a given interface of the mobile node. However, all the prefixes associated with a given interface MUST be managed as part of one mobility session, associated with that interface. ๐ŸŽ€
  • The local mobility anchor MUST allow for a handoff between two different interfaces of a mobile node. In that scenario, all the home network prefixes associated with one interface (part of one mobility session) will be associated with a different interface of the mobile node. The decision on when to create a new mobility session and when to update an existing one MUST be based on the Handover hint present in the Proxy Binding Update message, and under the considerations specified in this section. ๐Ÿ”„

5.4.1. Binding Cache Entry Lookup Considerations ๐Ÿ”

There can be multiple Binding Cache entries for a given mobile node. When doing a lookup for a mobile node's Binding Cache entry while processing a received Proxy Binding Update message, the local mobility anchor MUST apply the following multihoming considerations (in the order specified below, starting with Section 5.4.1.1). These rules are chained with the processing rules specified in Section 5.3. ๐Ÿฆ„

5.4.1.1. Home Network Prefix Option (NON_ZERO Value) Present in the Request

okay bestie, this is where the LMA becomes a detective ๐Ÿ•ต๏ธโ€โ™€๏ธโœจ it's hunting for the right Binding Cache entry using the home network prefixes, and it's giving main character energy ๐Ÿ’…

 +=====================================================================+
 |                Registration/De-Registration Message                 |
 +=====================================================================+
 |             At least one HNP Option with NON_ZERO Value             |
 +=====================================================================+
 |                                 ATT                                 |
 +=====================================================================+
 |   MN-LL-Identifier Opt Present   | MN-LL-Identifier Opt Not Present |
 +=====================================================================+
 |                                 HI                                  |
 +==================================+==================================+
 | BCE Lookup Key: Any of the Home Network Prefixes from the request   |
 +=====================================================================+

Figure 7: Binding Cache Entry (BCE) Lookup Using Home Network Prefix

So if there's at least one Home Network Prefix option in the request with a NON_ZERO prefix value, the following considerations MUST be applied, and it doesn't matter whether the Mobile Node Link-layer Identifier option is there or not ๐Ÿ™ˆ If there is more than one instance of the Home Network Prefix option, any one of the Home Network Prefix options present in the request (with NON_ZERO prefix value) can be used for locating the Binding Cache entry. โœจ

  1. The local mobility anchor MUST verify if there is an existing Binding Cache entry with one of its home network prefixes matching the prefix value in one of the Home Network Prefix options of the received Proxy Binding Update message. ๐Ÿ‘€
  2. If a Binding Cache entry does not exist (with one of its home network prefixes in the Binding Cache entry matching the prefix value in one of the Home Network Prefix options of the received Proxy Binding Update message), the request MUST be considered as a request for creating a new mobility session. ๐ŸŒธ
  3. If there exists a Binding Cache entry (with one of its home network prefixes in the Binding Cache entry matching the prefix value in one of the Home Network Prefix options of the received Proxy Binding Update message), but if the mobile node identifier in the entry does not match the mobile node identifier in the Mobile Node Identifier option of the received Proxy Binding Update message, the local mobility anchor MUST reject the request with the Status field value set to NOT_AUTHORIZED_FOR_HOME_NETWORK_PREFIX (mobile node is not authorized for one or more of the requesting home network prefixes). ๐Ÿšซ
  4. If there exists a Binding Cache entry (matching MN-Identifier and one of its home network prefixes in the Binding Cache entry matching the prefix value in one of the Home Network Prefix options of the received Proxy Binding Update message), but if all the prefixes in the request do not match all the prefixes in the Binding Cache entry, or if they do not match in count, then the local mobility anchor MUST reject the request with the Status field value set to BCE_PBU_PREFIX_SET_DO_NOT_MATCH (all the home network prefixes listed in the BCE do not match all the prefixes in the received PBU). ๐Ÿ’€
  5. If there exists a Binding Cache entry (matching MN-Identifier and all the home network prefixes in the Binding Cache entry matching all the home network prefixes in the received Proxy Binding Update message) and if any one or more of these below stated conditions are true, the request MUST be considered as a request for updating that Binding Cache entry. ๐Ÿ”ฅ
    • If there is a Mobile Node Link-layer Identifier option present in the request and if the link-layer identifier in the option matches the link-layer identifier of the Binding Cache entry and the access technology type in the Access Technology Type option present in the request matches the access technology type in the Binding Cache entry.
    • If the Handoff Indicator field in the Handoff Indicator option present in the request is set to a value of 2 (Handoff between two different interfaces of the mobile node).
    • If there is no Mobile Node Link-layer Identifier option present in the request, the link-layer identifier value in the Binding Cache entry is set to ALL_ZERO, the access technology type field in the Access Technology Type option present in the request matches the access technology type in the Binding Cache entry, and if the Handoff Indicator field in the Handoff Indicator option present in the request is set to a value of 3 (Handoff between mobile access gateways for the same interface).
    • If the Proxy-CoA in the Binding Cache entry matches the source address of the request (or the address in the Alternate Care-of Address option, if the option is present) and if the access technology type field in the Access Technology Type option present in the request matches the access technology type in the Binding Cache entry.
  6. For all other cases, the message MUST be considered as a request for creating a new mobility session. However, if the received Proxy Binding Update message has the lifetime value of zero and if the request cannot be associated with any existing mobility session, the message MUST be silently ignored. ๐Ÿงš

now the detective switches to a different clue ๐Ÿ” this time there's no NON_ZERO home network prefix, so the LMA leans on the Mobile Node Link-layer Identifier option instead ๐Ÿฆ‹

 +=====================================================================+
 |                   Registration/De-Registration Message              |
 +=====================================================================+
 |                  No HNP option with a NON_ZERO Value                |
 +=====================================================================+
 |                                 ATT                                 |
 +=====================================================================+
 |         MN-LL-Identifier Option Present (NON_ZERO Value)            |
 +=====================================================================+
 |                                 HI                                  |
 +==================================+==================================+
 |  BCE Lookup Keys: (MN-Identifier + ATT + MN-LL-Identifier)          |
 +=====================================================================+

Figure 8: BCE Lookup Using Link-layer Identifier

If there is no Home Network Prefix option present in the request with a NON_ZERO prefix value, but there is a Mobile Node Link-layer Identifier option present in the request, then the following considerations MUST be applied for locating the Binding Cache entry. ๐ŸŽ€

  1. The local mobility anchor MUST verify if there is an existing Binding Cache entry, with the mobile node identifier matching the identifier in the received Mobile Node Identifier option, access technology type matching the value in the received Access Technology Type option, and the link-layer identifier value matching the identifier in the received Mobile Node Link-layer Identifier option. ๐Ÿ‘€
  2. If there exists a Binding Cache entry (matching MN-Identifier, Access Technology Type (ATT), and MN-LL-Identifier), the request MUST be considered as a request for updating that Binding Cache entry. ๐ŸŒˆ
  3. If there does not exist a Binding Cache entry (matching MN-Identifier, ATT, and MN-LL-Identifier) and the Handoff Indicator field in the Handoff Indicator option present in the request is set to a value of 2 (Handoff between two different interfaces of the mobile node), the local mobility anchor MUST apply the following additional considerations.
    • The local mobility anchor MUST verify if there exists one and only one Binding Cache entry with the mobile node identifier matching the identifier in the Mobile Node Identifier option present in the request and for any link-layer identifier value. If there exists only one such entry (matching the MN-Identifier), the request MUST be considered as a request for updating that Binding Cache entry. ๐Ÿซถ
  4. If there does not exist a Binding Cache entry (matching MN-Identifier, ATT, and MN-LL-Identifier) and if the Handoff Indicator field in the Handoff Indicator option present in the request is set to a value of 4 (Handoff state unknown), the local mobility anchor MUST apply the following additional considerations.
    • The local mobility anchor MUST verify if there exists one and only one Binding Cache entry with the mobile node identifier matching the identifier in the Mobile Node Identifier option present in the request and for any link-layer identifier value. If there exists only one such entry (matching the MN-Identifier), the local mobility anchor SHOULD wait until the existing Binding Cache entry is de-registered by the previously serving mobile access gateway, before the request can be considered as a request for updating that Binding Cache entry. However, if there is no de-registration message that is received within MaxDelayBeforeNewBCEAssign amount of time, the local mobility anchor, upon accepting the request, MUST consider the request as a request for creating a new mobility session. The local mobility anchor MAY also choose to create a new mobility session without waiting for a de-registration message, and this should be configurable on the local mobility anchor. โณ
  5. For all other cases, the message MUST be considered as a request for creating a new mobility session. However, if the received Proxy Binding Update message has the lifetime value of zero and if the request cannot be associated with any existing mobility session, the message MUST be silently ignored. ๐Ÿ’–

Okay bestie, this is the "nobody sent me any clues" case ๐Ÿ•ต๏ธโ€โ™€๏ธ๐Ÿ’…. So what happens when the Proxy Binding Update has no Home Network Prefix option with a non-zero prefix, AND there's no Mobile Node Link-layer Identifier option either? Then the only thing the LMA has to look up the Binding Cache entry with is the mobile node identifier. Here's the lookup table, iykyk ๐ŸŽ€:

 +=====================================================================+
 |                 Registration/De-Registration Message                |
 +=====================================================================+
 |                 No HNP option with a NON_ZERO Value                 |
 +=====================================================================+
 |                                 ATT                                 |
 +=====================================================================+
 |                 MN-LL-Identifier Option Not Present                 |
 +=====================================================================+
 |                                 HI                                  |
 +==================================+==================================+
 |                   BCE Lookup Key: (MN-Identifier)                   |
 +=====================================================================+

             Figure 9: BCE Lookup Using Mobile Node Identifier

So when there's no HNP option with a NON_ZERO prefix and no MN-LL-Identifier option, the LMA MUST go through these checks to find the Binding Cache entry ๐Ÿฆ‹.

  1. The LMA MUST verify that there exists one and only one Binding Cache entry whose mobile node identifier matches the identifier in the Mobile Node Identifier option in the request. Only one, periodt ๐Ÿ’œ.
  2. If there's exactly one such entry (matching the MN-Identifier) and the Handoff Indicator field in the Handoff Indicator option is set to 2 (Handoff between two different interfaces of the mobile node) or 3 (Handoff between mobile access gateways for the same interface), then the request MUST be treated as a request to update that Binding Cache entry ๐ŸŒธ.
  3. If there's exactly one such entry (matching the MN-Identifier) and the Handoff Indicator field is set to 4 (Handoff state unknown), the LMA SHOULD wait until the existing Binding Cache entry gets de-registered by the previously serving mobile access gateway before treating the request as an update to that entry ๐Ÿ™ˆ. BUT, if no de-registration message arrives within MaxDelayBeforeNewBCEAssign amount of time, the LMA MUST, upon accepting the request, treat it as a request for creating a new mobility session ๐Ÿ’€. The LMA MAY also choose to create a new mobility session without waiting for a de-registration message, and this SHOULD be configurable on the LMA โš™๏ธโœจ.
  4. For all other cases, the message MUST be considered as a request for creating a new mobility session ๐Ÿงš. However, if the received Proxy Binding Update has a lifetime value of zero AND the request can't be associated with any existing mobility session, the message MUST be silently ignored ๐Ÿซถ.

5.5. Timestamp Option for Message Ordering โฐ

okay so Mobile IPv6 [RFC3775] uses the Sequence Number field in binding registration messages so the home agent can process binding updates in the order the mobile node sent them ๐Ÿ“ฌ. The home agent and the mobile node are required to manage this counter over the lifetime of a binding. But in Proxy Mobile IPv6 ๐Ÿ’…, the mobile node hops from one mobile access gateway to another, and without something like context transfer between those gateways, the serving mobile access gateway can't figure out which sequence number it's supposed to use in its signaling messages ๐Ÿ˜ญ. So the sequence number scheme from [RFC3775] just isn't enough for Proxy Mobile IPv6.

If the local mobility anchor can't tell what order the Proxy Binding Update messages were sent in, it might process an older message from a mobile access gateway where the mobile node used to be anchored ๐Ÿ™ˆ. That message could show up late, and then the mobile node's Binding Cache entry gets updated wrongly, and you end up with a routing state that tunnels the mobile node's traffic to the previous mobile access gateway. not it ๐Ÿ’€

To fix this, this specification adopts two alternative solutions ๐Ÿฆ‹. One is based on timestamps, and the other is based on sequence numbers, as defined in [RFC3775].

The core idea behind timestamps in binding registration messages is simple โœจ. The node that generates the message puts in the current time of day, and the node that receives it checks that this timestamp is greater than all previously accepted timestamps. The timestamp-based solution may be used when the serving mobile access gateways in a Proxy Mobile IPv6 domain can't obtain the last sequence number that was sent in a Proxy Binding Update message for updating a given mobile node's binding ๐ŸŒธ.

Clock drift makes the timestamp mechanism less effective ๐Ÿซ . The reconnection time is the total of the time the mobile node takes to roam between two mobile access gateways and the time the serving mobile access gateway takes to detect the mobile node on its access link and construct the Proxy Binding Update message. If the clock skew on either of two neighboring mobile access gateways (relative to the common time source used for clock synchronization) is more than half this reconnection time, the timestamp solution won't predictably work in all cases, so it SHOULD NOT be used ๐Ÿšซ.

As the alternative to the timestamp approach, the specification also allows a Sequence-Number-based scheme, as specified in [RFC3775] ๐Ÿ”ข. But for this scheme to work, the serving mobile access gateway in a Proxy Mobile IPv6 domain MUST have the ability to obtain the last sequence number that was sent in a binding registration message for that mobility session ๐ŸŽ€. The sequence number MUST be maintained on a mobile node's per mobility session basis and MUST be available to the serving mobile access gateway. This may be achieved by using context transfer schemes or by maintaining the sequence number in a policy store. However, how exactly the mobile node's sequence number gets to the serving mobile access gateway before it sends the Proxy Binding Update message is outside the scope of this document ๐Ÿ“„.

Using the Timestamp-Based Approach:

  1. A local mobility anchor implementation MUST support the Timestamp option. If the Timestamp option is present in the received Proxy Binding Update message, then the local mobility anchor MUST include a valid Timestamp option in the Proxy Binding Acknowledgement message that it sends to the mobile access gateway ๐Ÿงš.
  2. All the mobility entities in a Proxy Mobile IPv6 domain that exchange binding registration messages using the Timestamp option MUST have adequately synchronized time-of-day clocks. This is the essential requirement for this solution to work. If this requirement isn't met, the solution won't predictably work in all cases ๐Ÿ‘‘.
  3. The mobility entities in a Proxy Mobile IPv6 domain SHOULD synchronize their clocks to a common time source. To do that, the nodes MAY use the Network Time Protocol [RFC4330]. Deployments MAY also adopt other approaches that suit that specific deployment. Alternatively, if there's a mobile node generated timestamp that increases at every attachment to the access link, and that timestamp is available to the mobile access gateway (for example, the Timestamp option in the SEND [RFC3971] messages that the mobile node sends), the mobile access gateway can use this timestamp or sequence number in the Proxy Binding Update messages and doesn't have to depend on any external clock source ๐Ÿ•ฐ๏ธ. However, how this is achieved is outside the scope of this document.
  4. When generating the timestamp value for building the Timestamp option, the mobility entities MUST ensure that the generated timestamp is the elapsed time past the same reference epoch, as specified in the format for the Timestamp option (Section 8.8) ๐Ÿ“.
  5. If the Timestamp option is present in the received Proxy Binding Update message, the local mobility anchor MUST ignore the sequence number field in the message. However, it MUST copy the sequence number from the received Proxy Binding Update message to the Proxy Binding Acknowledgement message ๐ŸŒˆ.
  6. Upon receipt of a Proxy Binding Update message with the Timestamp option, the local mobility anchor MUST check the timestamp field for validity. For it to be considered valid, the following MUST be true ๐Ÿ”.
    • The timestamp value in the Timestamp option MUST be close enough (within TimestampValidityWindow amount of time difference) to the local mobility anchor's time-of-day clock. However, if the flag MobileNodeGeneratedTimestampInUse is set to a value of 1, the local mobility anchor MUST ignore this check and perform only the following check.
    • The timestamp MUST be greater than all previously accepted timestamps in the Proxy Binding Update messages sent for that mobile node ๐Ÿ’œ.
  7. If the timestamp value in the received Proxy Binding Update is valid (validity as specified in the above considerations) or if the flag MobileNodeGeneratedTimestampInUse is set to a value of 1, the local mobility anchor MUST return the same timestamp value in the Timestamp option included in the Proxy Binding Acknowledgement message that it sends to the mobile access gateway ๐ŸŽ‰.
  8. If the timestamp value in the received Proxy Binding Update is lower than the previously accepted timestamp in the Proxy Binding Update messages sent for that mobility binding, the local mobility anchor MUST reject the Proxy Binding Update message and send a Proxy Binding Acknowledgement message with the Status field set to TIMESTAMP_LOWER_THAN_PREV_ACCEPTED (Timestamp lower than previously accepted timestamp). The message MUST also include the Timestamp option with the value set to the current time of day on the local mobility anchor ๐Ÿฅฒ.
  9. If the timestamp value in the received Proxy Binding Update is not valid (validity as specified in the above considerations), the local mobility anchor MUST reject the Proxy Binding Update and send a Proxy Binding Acknowledgement message with the Status field set to TIMESTAMP_MISMATCH (Timestamp mismatch). The message MUST also include the Timestamp option with the value set to the current time of day on the local mobility anchor ๐Ÿšจ.

Using the Sequence-Number-Based Approach:

  1. If the Timestamp option is not present in the received Proxy Binding Update message, the local mobility anchor MUST fall back to the Sequence-Number-based scheme. It MUST process the sequence number field as specified in [RFC3775]. Also, it MUST NOT include the Timestamp option in the Proxy Binding Acknowledgement messages that it sends to the mobile access gateway ๐Ÿ”„.
  2. An implementation MUST support the Sequence-Number-based scheme, as specified in [RFC3775] ๐Ÿซถ.
  3. The Sequence-Number-based approach can be used only when there's some mechanism (such as a context transfer procedure between mobile access gateways) that lets the serving mobile access gateway obtain the last sequence number that was sent in a Proxy Binding Update message for updating a given mobile node's binding ๐Ÿฆ‹.

5.6. Routing Considerations ๐Ÿ›ฃ๏ธ

5.6.1. Bi-Directional Tunnel Management ๐Ÿš‡

the bi-directional tunnel MUST be used for routing the mobile node's data traffic between the mobile access gateway and the local mobility anchor ๐Ÿ’–. A tunnel hides the topology and lets a mobile node use address(es) from its home network prefix(es) from any access link in that Proxy Mobile IPv6 domain ๐ŸŒ. A tunnel may be created dynamically when it's needed and removed when it isn't. However, implementations MAY choose to use static pre-established tunnels instead of creating and tearing them down as needed โœจ. The following considerations MUST be applied when using dynamically created tunnels ๐Ÿ“‹.

  • A bi-directional tunnel MUST be established between the local mobility anchor and the mobile access gateway, and the local mobility anchor uses IPv6-in-IPv6 encapsulation, as described in [RFC2473] ๐ŸŽ€. The tunnel endpoints are the Proxy-CoA and LMAA. However, when using IPv4 transport, the endpoints of the tunnel are IPv4-LMAA and IPv4-Proxy-CoA, with the encapsulation mode specified in [IPV4-PMIP6] ๐ŸŒท.
  • Implementations MAY use a software timer to manage the tunnel lifetime and a counter to keep a count of all the mobile nodes sharing the tunnel โฑ๏ธ. The timer value can be set to the accepted binding lifetime and can be updated after each periodic re-registration to extend the lifetime. If the tunnel is shared by multiple mobile nodes, the tunnel lifetime must be set to the highest binding lifetime granted to any one of those mobile nodes sharing that tunnel ๐Ÿ’….
  • The tunnel SHOULD be deleted when either the tunnel lifetime expires or when there are no mobile nodes sharing the tunnel ๐Ÿงน.

5.6.2. Forwarding Considerations

Intercepting Packets Sent to the Mobile Node's Home Network:

  • okay so when the local mobility anchor is serving a mobile node, it MUST be able to receive packets that are sent to the mobile node's home network ๐Ÿ“ฌ. To actually get those packets, it MUST advertise a connected route into the Routing Infrastructure for the mobile node's home network prefix(es), or for an aggregated prefix with a larger scope ๐Ÿ›ฃ๏ธ. This basically lets IPv6 routers in that network spot the local mobility anchor as the last-hop router for the mobile node's home network prefix(es) ๐Ÿฆ‹.

Forwarding Packets to the Mobile Node:

  • when a packet comes in from a correspondent node with a destination address that matches a mobile node's home network prefix(es), the local mobility anchor MUST forward it through the bi-directional tunnel that was set up for that mobile node ๐Ÿš‡โœจ.
  • here's what the tunneled packet looks like. Considerations from [RFC2473] MUST be applied for IPv6 encapsulation ๐ŸŽ€. However, when using IPv4 transport, the format of the packet is as described in [IPV4-PMIP6] ๐ŸŒธ.
  IPv6 header (src= LMAA, dst= Proxy-CoA  /* Tunnel Header */
     IPv6 header (src= CN, dst= MN-HOA )  /* Packet Header */
        Upper layer protocols             /* Packet Content*/

Figure 10: Tunneled Packet from LMA to MAG

  • and this is the version when payload protection using IPsec is enabled for the mobile node's data traffic ๐Ÿ”. Again, when using IPv4 transport, the format of the packet is as described in [IPV4-PMIP6] ๐Ÿ’….
  IPv6 header (src= LMAA, dst= Proxy-CoA     /* Tunnel Header */
     ESP Header in tunnel mode               /* ESP Header */
        IPv6 header (src= CN, dst= MN-HoA )  /* Packet Header */
           Upper layer protocols             /* Packet Content*/

Figure 11: Tunneled Packet from LMA to MAG with Payload Protection

Forwarding Packets Sent by the Mobile Node:

  • all the reverse tunneled packets that the local mobility anchor got from the mobile access gateway MUST be routed to the destination in the inner packet header, once the tunnel header is removed ๐Ÿ”. These routed packets will have the Source Address field set to the mobile node's home address ๐Ÿก. Considerations from [RFC2473] MUST be applied for IPv6 decapsulation ๐Ÿ’œ.

5.6.3. Explicit Congestion Notification (ECN) Considerations for Proxy Mobile IPv6 Tunnels

This section is all about how the ECN info gets handled by the mobility agents at the tunnel entry and exit points ๐Ÿšฆ. The ECN considerations for IP tunnels are specified in [RFC3168], and the same considerations apply to Proxy Mobile IPv6 tunnels (using IPv6-in-IPv6 encapsulation mode) ๐Ÿงš. Specifically, the full-functionality option MUST be supported ๐Ÿ‘‘. The relevant ECN considerations from [RFC3168] are summarized here for convenience ๐Ÿ“.

Encapsulation Considerations:

  • if the Explicit Congestion Notification (ECN) field in the inner header is set to ECT(0) or ECT(1), where ECT stands for ECN-Capable Transport (ECT) ๐Ÿ™ˆ, the ECN field from the inner header MUST be copied to the outer header. Additionally, when payload protection using IPsec is enabled for the mobile node's data traffic, the ECN considerations from [RFC4301] MUST be applied ๐Ÿ”’.

Decapsulation Considerations:

  • if the Explicit Congestion Notification (ECN) field in the inner header is set to ECT(0) or ECT(1), and the ECN field in the outer header is set to Congestion Experienced (CE), then the ECN field in the inner header MUST be set to CE ๐Ÿ”ฅ. Otherwise, the ECN field in the inner header MUST NOT be modified ๐Ÿซถ. Additionally, when payload protection using IPsec is enabled for the mobile node's data traffic, the ECN considerations from [RFC4301] MUST be applied ๐Ÿ’–.

5.7. Local Mobility Anchor Address Discovery

Dynamic Home Agent Address Discovery (DHAAD), as explained in Section 10.5 of [RFC3775], lets a mobile node find all the home agents on its home link ๐Ÿ”. It does this by sending an ICMP Home Agent Address Discovery Request message to the Mobile IPv6 Home Agent's anycast address, which is derived from its home network prefix ๐Ÿงญ.

The DHAAD message in its current form can't be used in Proxy Mobile IPv6 to discover the address of the mobile node's local mobility anchor ๐Ÿ˜ญ. In Proxy Mobile IPv6, the local mobility anchor won't be able to receive any messages sent to the Mobile IPv6 Home Agent's anycast address for the mobile node's home network prefix(es), because those prefix(es) aren't hosted on any of its interfaces ๐Ÿ™…โ€โ™€๏ธ. Also, the mobile access gateway won't be able to reliably locate the serving local mobility anchor that has the mobile node's binding cache entry ๐ŸŒ€. So this specification does not support Dynamic Home Agent Address Discovery protocol ๐Ÿ’€.

In Proxy Mobile IPv6, the mobility access gateway entity can find the address of the local mobility anchor that's configured to serve a mobile node through other means ๐Ÿ—บ๏ธ. The LMA that gets assigned to a mobile node may be a configured entry in the mobile node's policy profile, or it may be obtained through mechanisms outside the scope of this document โœจ.


5.8. Mobile Prefix Discovery Considerations

This specification does not support mobile prefix discovery ๐Ÿ™ƒ. The mobile prefix discovery mechanism specified in [RFC3775] is not applicable to Proxy Mobile IPv6 ๐Ÿšซ.


5.9. Route Optimization Considerations

The Route Optimization in Mobile IPv6, as defined in [RFC3775], lets a mobile node talk to a correspondent node directly using its care-of address ๐Ÿƒโ€โ™€๏ธ. The Return Routability procedure then gives the correspondent node reasonable trust that the mobile node is reachable at both its home address and its care-of address ๐Ÿค.

This specification does not support the Route Optimization specified in Mobile IPv6 [RFC3775] ๐Ÿ™…โ€โ™€๏ธ. However, this specification does support another form of route optimization, as specified in Section 6.10.3 ๐Ÿฆ„.


6. Mobile Access Gateway Operation ๐Ÿงš

The Proxy Mobile IPv6 protocol described in this document introduces a new functional entity, the mobile access gateway (MAG) ๐ŸŒŸ. The mobile access gateway is the entity responsible for detecting the mobile node's movements to and from the access link, and for sending the Proxy Binding Update messages to the local mobility anchor ๐Ÿ“จ. Basically, the mobile access gateway does mobility management on behalf of a mobile node ๐Ÿซถ.

The mobile access gateway is a function that typically runs on an access router ๐Ÿ›œ. However, implementations MAY choose to split this function and run it across multiple systems ๐Ÿฐ. The specifics on how that's achieved, or the signaling interactions between those functional entities, are beyond the scope of this document ๐Ÿ™ˆ.

The mobile access gateway has the following key functional roles:

  • It is responsible for detecting the mobile node's movements on the access link, and for initiating the mobility signaling with the mobile node's local mobility anchor ๐Ÿ‘€.
  • It emulates the mobile node's home link on the access link by sending Router Advertisement messages containing the mobile node's home network prefix(es), with each prefix carried using the Prefix Information option [RFC4861] ๐Ÿ“ฃ.
  • It is responsible for setting up the forwarding so the mobile node can configure one or more addresses from its home network prefix(es) and use them from the attached access link ๐ŸŽ€.

6.1. Extensions to Binding Update List Entry Data Structure

Every mobile access gateway MUST maintain a Binding Update List ๐Ÿ“‹. Each entry in the Binding Update List represents a mobile node's mobility binding with its local mobility anchor ๐Ÿ’œ. The Binding Update List is a conceptual data structure, described in Section 11.1 of [RFC3775] ๐Ÿง .

To support this specification, the conceptual Binding Update List entry data structure needs to be extended with the following additional fields ๐Ÿงฉ.

  • The identifier of the attached mobile node, MN-Identifier. This identifier is acquired during the mobile node's attachment to the access link through mechanisms outside the scope of this document ๐Ÿชช.
  • The link-layer identifier of the mobile node's connected interface. This can be acquired from the received Router Solicitation messages from the mobile node, or during the mobile node's attachment to the access network ๐Ÿ“ก. This is typically a link-layer identifier conveyed by the mobile node; however, the specifics of how that's conveyed are out of scope for this specification ๐Ÿคทโ€โ™€๏ธ. If this identifier is not available, this variable length field MUST be set to two (octets) and MUST be initialized to a value of ALL_ZERO ๐Ÿซ .
  • A list of IPv6 home network prefixes assigned to the mobile node's connected interface ๐ŸŒˆ. The home network prefix(es) may have been statically configured in the mobile node's policy profile, or may have been dynamically allocated by the local mobility anchor ๐Ÿช„. Each of these prefix entries also includes the corresponding prefix length ๐Ÿ“.
  • The Link-local address of the mobile access gateway on the access link shared with the mobile node ๐Ÿ”—.
  • The IPv6 address of the local mobility anchor serving the attached mobile node ๐Ÿ . This address is acquired from the mobile node's policy profile or from other means โœจ.
  • The interface identifier (if-id) of the point-to-point link between the mobile node and the mobile access gateway ๐Ÿชข. This is internal to the mobile access gateway, and is used to associate the Proxy Mobile IPv6 tunnel with the access link where the mobile node is attached ๐ŸŽฏ.
  • The tunnel interface identifier (tunnel-if-id) of the bi-directional tunnel between the mobile node's local mobility anchor and the mobile access gateway ๐Ÿš‡. This is internal to the mobile access gateway. The tunnel interface identifier is acquired during the tunnel creation ๐Ÿ› ๏ธ.

6.2. Mobile Node's Policy Profile โœจ

okay so a mobile node's policy profile is basically the cheat sheet ๐Ÿ“‹ of essential operational settings that network entities need to run its mobility service. These profiles get stored in a local or remote policy store. The mobile access gateway and the local mobility anchor MUST be able to get a mobile node's policy profile ๐Ÿ’–. The profile MAY also be handed over to a serving mobile access gateway as part of a context transfer procedure during a handoff, or the serving mobile access gateway MAY be able to generate it dynamically ๐Ÿฆ‹. How exactly that happens is outside the scope of this doc, but this spec does require that a mobile access gateway serving a mobile node MUST have access to its policy profile ๐Ÿซถ.

The mandatory fields of the policy profile are:

  • The mobile node's identifier (MN-Identifier)
  • The IPv6 address of the local mobility anchor (LMAA)

The optional fields of the policy profile are:

  • The mobile node's IPv6 home network prefix(es) assigned to the mobile node's connected interface. These prefixes have to be maintained on a per-interface basis ๐ŸŒธ. There can be multiple unique entries for each interface of the mobile node. How the network keeps track of the association between the prefix set and the interfaces, especially during a mobility session handoff between interfaces, is outside the scope of this document ๐Ÿ™ˆ.
  • The mobile node's IPv6 home network Prefix lifetime. This lifetime is the same for all the hosted prefixes on the link, since they're all part of one mobility session โœจ. This value can also be the same for all the mobile node's mobility sessions.
  • Supported address configuration procedures (Stateful, Stateless, or both) for the mobile node in the Proxy Mobile IPv6 domain ๐ŸŽ€

okay this one's giving simple ๐Ÿ’…. This specification only supports point-to-point access link types, so it assumes that the mobile node and the mobile access gateway are the only two nodes on the access link ๐Ÿฆ‹. The link is assumed to have multicast capability.

This protocol can also be used on other link types, as long as the link is configured to emulate point-to-point delivery between the mobile node and the mobile access gateway for all the protocol traffic ๐Ÿงš.

It's also necessary to be able to identify mobile nodes attaching to the link. The requirements for this are covered in Section 6.6 ๐ŸŒˆ.

Finally, this specification can work without link-layer indications of node attachment and detachment to the link ๐Ÿ’œ. Still, having those indications on either the network side or the mobile node side makes the performance better โญ.

6.4. Supported Address Configuration Modes

main character energy here ๐Ÿ‘‘. A mobile node in the Proxy Mobile IPv6 domain can configure one or more global IPv6 addresses on its interface, from the hosted prefix(es) on that link. It can do this with Stateless or Stateful address autoconfiguration, or with manual address configuration ๐Ÿ“. The Router Advertisement messages sent on the access link say which address configuration methods are allowed on that link for that mobile node. The advertised flags for address configuration stay consistent for a mobile node on any of the access links in that Proxy Mobile IPv6 domain ๐Ÿซถ. Usually these settings come from the domain-wide policy or from a policy specific to each mobile node.

When stateless address autoconfiguration is supported on the access link, the mobile node can generate one or more IPv6 addresses from the hosted prefix(es) using standard IPv6 mechanisms like Stateless Autoconfiguration [RFC4862] or Privacy extensions [RFC4941] ๐Ÿ”ฅ.

When stateful address autoconfiguration is supported on the link, the mobile node can get its address configuration from the DHCP server in the Proxy Mobile IPv6 domain, using standard DHCP mechanisms as specified in [RFC3315] ๐Ÿ’€. The addresses it gets will come from its home network prefix(es). Section 6.11 has the details on how this configuration works.

Other address configuration mechanisms specific to the access link between the mobile node and the mobile access gateway may also be used to deliver address configuration to the mobile node. This specification doesn't change how any of the standard IPv6 address configuration mechanisms behave ๐ŸŒธ.

6.5. Access Authentication and Mobile Node Identification

be so for real, security first ๐Ÿ”. When a mobile node attaches to an access link connected to the mobile access gateway, the access security protocols deployed on that link SHOULD make sure the network-based mobility management service is only offered after the mobile node has been authenticated and authorized for that service ๐Ÿ’–. The exact specifics of how this is done, or how the mobile access gateway and the access security service interact, are outside the scope of this document. This specification goes with the stated assumption that there's already an established trust between the mobile node and the mobile access gateway before the protocol operation begins ๐Ÿซถ.

6.6. Acquiring Mobile Node's Identifier

this section is literally about knowing who's who ๐Ÿชช. All the network entities in a Proxy Mobile IPv6 domain MUST be able to identify a mobile node using its MN-Identifier. This identifier MUST be stable and unique across the Proxy Mobile IPv6 domain. The mobility entities in the Proxy Mobile IPv6 domain MUST be able to use this identifier in the signaling messages and unambiguously identify a given mobile node ๐Ÿงš. Here are some considerations about this MN-Identifier:

  • The MN-Identifier is usually obtained as part of access authentication or from a notified network attachment event. If the user identifier authenticated during access authentication uniquely identifies a mobile node, the MN-Identifier MAY be the same as the user identifier. But the user identifier MUST NOT be used if it identifies a user account that can be used from more than one mobile node operating in the same Proxy Mobile IPv6 domain ๐Ÿšซ.
  • Sometimes the identifier obtained during access authentication is a temporary one, and that temporary identifier might be different at each re-authentication ๐ŸŒ€. In that case the mobile access gateway MUST be able to use this temporary identifier and get the mobile node's stable identifier from the policy store. For example, in AAA-based systems the Remote Authentication Dial-In User Service (RADIUS) attribute Chargeable-User-Identifier [RFC4372] may be used, as long as it uniquely identifies a mobile node and not a user account that can be used with multiple mobile nodes ๐ŸŽ€.
  • For privacy reasons, the MN-Identifier that the policy store delivers to the mobile access gateway might not be the true identifier of the mobile node ๐Ÿ™ˆ. Even so, the mobility access gateway MUST be able to use this identifier in the signaling messages exchanged with the local mobility anchor.
  • The mobile access gateway MUST be able to identify the mobile node by its MN-Identifier, and it MUST be able to associate that identity with the point-to-point link shared with the mobile node ๐Ÿฆ‹.

6.7. Home Network Emulation

one of the iconic jobs of a mobile access gateway is to pretend it's the mobile node's home network ๐ŸŽญ. It's a whole vibe. The mobile access gateway must make sure the mobile node doesn't notice any change in its layer-3 attachment, even after it changes its point of attachment in that Proxy Mobile IPv6 domain โœจ.

To copy the mobile node's home link onto the access link, the mobile access gateway must be able to send Router Advertisement messages that advertise the mobile node's home network prefix(es). Those prefixes are carried using the Prefix Information option(s) [RFC4861], along with other address configuration parameters that match its home link properties ๐Ÿ’…. Usually these settings come from the domain-wide policy or from a policy specific to each mobile node.

Typically, the mobile access gateway learns the mobile node's home network prefix(es) details from the received Proxy Binding Acknowledgement message. Or it might get them from the mobile node's policy profile ๐Ÿ“. Still, the mobile access gateway SHOULD only send the Router Advertisements advertising the mobile node's home network prefix(es) after it has successfully finished the binding registration with the mobile node's local mobility anchor ๐Ÿ”ฅ.

When advertising the home network prefix(es) in Router Advertisement messages, the mobile access gateway MAY set the prefix lifetime for the advertised prefix(es) to any value it likes, at its own discretion ๐ŸŒˆ. An implementation MAY choose to tie the prefix lifetime to the mobile node's binding lifetime ๐Ÿซถ. The prefix lifetime can also be an optional configuration parameter in the mobile node's policy profile ๐Ÿ’œ.

okay so bestie, picture this ๐Ÿฆ‹ a mobile node in the Proxy Mobile IPv6 domain hops from one mobile access gateway to another, and it still thinks it's home. no cap, it does not notice any change in its layer-3 attachment โœจ every single time it plugs into a new link, the interface state change is literally the trigger that makes it run Duplicate Address Detection (DAD) on its link-local and global address(es). ๐Ÿ’… BUT if the mobile node is Detecting Network Attachment in IPv6 (DNAv6) enabled, as [DNAV6] describes, it might skip noticing the link change because of those DNAv6 optimizations ๐Ÿ™ˆ so it may not kick off DAD for the addresses it already has, and that could lead to address collisions after the handoff to a new link. ๐Ÿ˜ญ

the global addresses are lowkey fine though ๐ŸŒธ the assigned home network prefix(es) belong only to this mobile node, so no other node shares an address from them (except the Subnet-Router anycast address that the mobile access gateway configures). uniqueness for the mobile node's global address is assured on the access link. slay ๐Ÿ‘‘

the link-local addresses are where the drama is ๐ŸŽ€ the mobile access gateway and the mobile node both get their link-local addresses from the same prefix, FE80::/64. that leaves room for a link-local address collision between the two neighbors (the mobile node and the mobile access gateway) on that access link. ๐Ÿ™ˆ to fix this, this specification requires that the link-local address the mobile access gateway configures on the point-to-point link shared with a given mobile node gets generated by the local mobility anchor and stored in the mobile node's Binding Cache entry. โœจ that address won't change for the whole mobility session, and it can be handed to the serving mobile access gateway at every handoff as part of the Proxy Mobile IPv6 signaling messages. how the local mobility anchor actually generates that address is out of scope for this specification, so that's a different story ๐Ÿงš

it's highly desirable that the access link on the mobile access gateway shared with the mobile node is set up so that the mobile access gateway already knows the link-local address the local mobility anchor gave it to use on that link before the mobile node finishes DAD [RFC4862] on its link-local address ๐Ÿ’– that basically means the Proxy Mobile IPv6 signaling by the mobile access gateway has to succeed before the mobile node completes DAD. one way to make that happen is to hold off link-layer attachment until the Proxy Mobile IPv6 signaling is done. ๐Ÿซถ another option is to provision network and local mobility anchor capacity, plus signaling retransmission timers, so the signaling will likely finish within the default waiting period for DAD. ๐ŸŒˆ

okay but this one is a big deal: the signaling has to be finished before DAD wraps up, or the gateway might be using a link-local address it doesn't know about yet. ๐Ÿ˜ญ๐Ÿ”ฅ

and optionally, implementations MAY choose to configure one fixed link-local address across all the access links in a Proxy Mobile IPv6 domain ๐Ÿงš this way there's no need to carry that address from the local mobility anchor to the mobile access gateway in the Proxy Mobile IPv6 signaling messages. the configuration variable FixedMAGLinkLocalAddressOnAllAccessLinks decides whether that mode is enabled in the domain ๐Ÿ’œ


6.9. Signaling Considerations

6.9.1. Binding Registrations

6.9.1.1. Mobile Node Attachment and Initial Binding Registration โœจ

okay so this is the moment the MAG first spots a brand-new mobile node on its access link ๐Ÿฆ‹ here's the vibe, step by step

  1. Once the mobile access gateway detects a new mobile node, it MUST identify that node and grab its MN-Identifier ๐Ÿชช. If it decides the network-based mobility management service needs to be offered to the node, it MUST send a Proxy Binding Update message to the local mobility anchor ๐Ÿ’–.
  2. The Proxy Binding Update message MUST include the Mobile Node Identifier option [RFC4283] ๐ŸŽ€, carrying the MN-Identifier so the mobile node can be identified.
  3. The Home Network Prefix option(s) MUST be present in the Proxy Binding Update message ๐ŸŒธ. If the MAG learns the mobile node's home network prefix(es), either from its policy store or from other means, it MAY ask the local mobility anchor to allocate those specific prefixes by including a Home Network Prefix option for each one. It MAY also include just one Home Network Prefix option with the prefix value of ALL_ZERO, which asks the LMA to do the prefix assignment itself ๐Ÿงš.
โš ๏ธ when a Home Network Prefix option has the prefix value of ALL_ZERO, there MUST be only one instance of the Home Network Prefix option in the request ๐Ÿ™ˆ
  1. The Handoff Indicator option MUST be present in the Proxy Binding Update message ๐Ÿ”ฅ. The Handoff Indicator field in that option MUST be set to a value that indicates the handoff hint ๐Ÿ‘‘.
    • The Handoff Indicator field MUST be set to 1 (Attachment over a new interface) if the MAG determines, using the Handoff Indicator considerations in this section, that the node's current attachment over this interface is not a result of a handoff of an existing mobility session (over the same interface or through a different one), but a result of an attachment over a new interface. This basically asks the LMA to create a brand-new mobility session and not update any existing Binding Cache entry for the same mobile node connected through a different interface ๐Ÿ’….
    • The Handoff Indicator field MUST be set to 2 (Handoff between two different interfaces of the mobile node) if the MAG definitively knows the node's current attachment is due to a handoff of an existing mobility session between two different interfaces of the node ๐Ÿฆ‹.
    • The Handoff Indicator field MUST be set to 3 (Handoff between mobile access gateways for the same interface) if the MAG definitively knows the node's current attachment is due to a handoff of an existing mobility session between two mobile access gateways and for the same interface of the node ๐ŸŒˆ.
    • The Handoff Indicator field MUST be set to 4 (Handoff state unknown) if the MAG cannot determine whether the node's current attachment is due to a handoff of an existing mobility session ๐Ÿคทโ€โ™€๏ธ.
  2. The MAG MUST apply the considerations below when choosing the value for the Handoff Indicator field ๐Ÿง .
    • The MAG can choose to use value 2 (Handoff between two different interfaces of the mobile node) only when it knows the node has, on purpose, switched from one interface to another and the previous interface is going to be disabled ๐Ÿ”„. It may know this for a number of reasons. For instance, most cellular networks have controlled handovers, where the network knows the host is moving from one attachment to another. In that case the link layer can tell the mobility functions "yep, this is movement, not a new attachment" ๐Ÿ“ฑ.
    • Some link layers have link-layer identifiers that can tell apart (a) the movement of a particular interface to a new attachment from (b) the attachment of a new interface from the same host ๐Ÿ”. Value 3 (Handoff between mobile access gateways for the same interface) is the right pick for case (a), and value 1 (Attachment over a new interface) is the right pick for case (b).
    • The MAG MUST NOT set the option value to 2 (Handoff between two different interfaces of the mobile node) or 3 (Handoff between mobile access gateways for the same interface) if it cannot be determined that the mobile node can move the address between the interfaces involved in the handover, or that it is the same interface that has moved. Otherwise, Proxy Mobile IPv6-unaware hosts that have multiple physical interfaces to the same domain may suffer unexpected failures ๐Ÿ˜ญ.
    • Where no support from the link layer exists, the host and the network would need to inform each other about the intended movement. The Proxy Mobile IPv6 protocol does not specify this and simply requires that knowledge about movements can be derived either from the link layer or from somewhere else. The method for doing that is outside the scope of this specification ๐Ÿซถ.
  3. Either the Timestamp option or a valid sequence number maintained on a per mobile node's mobility session basis, as specified in [RFC3775] (if the Sequence-Number-based scheme is in use), MUST be present โฐ. Which one applies is determined by the configuration flag TimestampBasedApproachInUse. When the Timestamp option is added to the message, the MAG SHOULD also set the Sequence Number field to a monotonically increasing counter, maintained at each MAG and not to be confused with the per mobile node sequence number specified in [RFC3775] ๐Ÿ”ข. The local mobility anchor will ignore this field when a Timestamp option is present in the request, but will return the same value in the Proxy Binding Acknowledgement message ๐ŸŽฏ. That's what makes it useful for matching the reply to the request.
  4. The Mobile Node Link-layer Identifier option, carrying the link-layer identifier of the currently attached interface, MUST be present in the Proxy Binding Update message if the MAG is aware of it ๐Ÿ”—. If the link-layer identifier of the currently attached interface is not known, or the identifier value is ALL_ZERO, this option MUST NOT be present ๐Ÿ™…โ€โ™€๏ธ.
  5. The Access Technology Type option MUST be present in the Proxy Binding Update message ๐Ÿ“ก. The access technology type field in the option SHOULD be set to the type of access technology by which the mobile node is currently attached to the MAG ๐Ÿ’œ.
  6. The Link-local Address option MUST be present in the Proxy Binding Update message only if the configuration variable FixedMAGLinkLocalAddressOnAllAccessLinks is set to a value of ALL_ZERO. Otherwise, the Link-local Address option MUST NOT be present in the request ๐ŸŒธ. Considerations from Section 6.8 MUST be applied when using the Link-local Address option.
    • For querying the local mobility anchor to provide the link-local address it should use on the point-to-point link shared with the mobile node, this option MUST be set to ALL_ZERO value. This basically asks the LMA for the link-local address it can use on the access link shared with the node ๐Ÿฅน.
  7. The Proxy Binding Update message MUST be constructed as specified in Section 6.9.1.5 ๐Ÿ’Œ.
  8. If there is no existing Binding Update List entry for that mobile node, the MAG MUST create a Binding Update List entry for the mobile node upon sending the Proxy Binding Update message ๐Ÿ“.

6.9.1.2. Receiving Proxy Binding Acknowledgement ๐Ÿ“ฌโœจ

okay so when a Proxy Binding Acknowledgement message (format in Section 8.2) comes back from the local mobility anchor ๐Ÿ’Œ, the mobile access gateway MUST process it like this:

  1. The received Proxy Binding Acknowledgement message (a Binding Acknowledgement message with the (P) flag set to value of 1) MUST be authenticated as described in Section 4. When IPsec is used for message authentication, the SPI in the IPsec header [RFC4306] of the received packet is needed for locating the security association, for authenticating the Proxy Binding Acknowledgement message. ๐Ÿ”
  2. The mobile access gateway MUST observe the rules described in Section 9.2 of [RFC3775] when processing Mobility Headers in the received Proxy Binding Acknowledgement message. ๐Ÿงพ
  3. The mobile access gateway MUST apply the considerations specified in Section 5.5 for processing the Sequence Number field and the Timestamp option (if present) in the message. โฑ๏ธ
  4. The mobile access gateway MUST ignore any checks, specified in [RFC3775], related to the presence of a Type 2 Routing header in the Proxy Binding Acknowledgement message. ๐Ÿ™ˆ
  5. The mobile access gateway MAY use the mobile node identifier present in the Mobile Node Identifier option for matching the response to the request messages that it sent recently. However, if there is more than one request message in its request queue for the same mobile node, the sequence number field can be used for identifying the exact message from those messages. There are other ways to achieve this and implementations are free to adopt the best approach that suits their implementation. Additionally, if the received Proxy Binding Acknowledgement message does not match any of the Proxy Binding Update messages that it sent recently, the message MUST be ignored. ๐ŸŽฏ
  6. If the received Proxy Binding Acknowledgement message has any one or more of the following options, Handoff Indicator option, Access Technology Type option, Mobile Node Link-layer Identifier option, Mobile Node Identifier option, carrying option values that are different from the option values present in the corresponding request (Proxy Binding Update) message, the message MUST be ignored as the local mobility anchor is expected to echo back all these listed options and with the same option values in the reply message. In this case, the mobile access gateway MUST NOT retransmit the Proxy Binding Update message until an administrative action is taken. ๐Ÿšซ
  7. If the received Proxy Binding Acknowledgement message has the Status field value set to PROXY_REG_NOT_ENABLED (Proxy registration not enabled for the mobile node), the mobile access gateway SHOULD NOT send a Proxy Binding Update message again for that mobile node until an administrative action is taken. It MUST deny the mobility service to that mobile node. ๐Ÿฅฒ
  8. If the received Proxy Binding Acknowledgement message has the Status field value set to TIMESTAMP_LOWER_THAN_PREV_ACCEPTED (Timestamp value lower than previously accepted value), the mobile access gateway SHOULD try to register again to reassert the mobile node's presence on its access link. The mobile access gateway is not specifically required to synchronize its clock upon receiving this error code. ๐Ÿ•ฐ๏ธ
  9. If the received Proxy Binding Acknowledgement message has the Status field value set to TIMESTAMP_MISMATCH (Invalid timestamp value), the mobile access gateway SHOULD try to register again only after it has synchronized its clock to a common time source that is used by all the mobility entities in that domain for their clock synchronization. The mobile access gateway SHOULD NOT synchronize its clock to the local mobility anchor's system clock, based on the timestamp present in the received message. ๐Ÿ™…โ€โ™€๏ธโฐ
  10. If the received Proxy Binding Acknowledgement message has the Status field value set to NOT_AUTHORIZED_FOR_HOME_NETWORK_PREFIX (The mobile node is not authorized for one or more of the requesting home network prefixes), the mobile access gateway SHOULD NOT request the same prefix(es) again, but MAY request the local mobility anchor to do the assignment of prefix(es) by including only one Home Network Prefix option with the prefix value set to ALL_ZERO. ๐ŸŒ
  11. If the received Proxy Binding Acknowledgement message has the Status field value set to any value greater than or equal to 128 (i.e., if the binding is rejected), the mobile access gateway MUST NOT advertise the mobile node's home network prefix(es) in the Router Advertisement messages sent on that access link and MUST deny the mobility service to the mobile node by not forwarding any packets received from the mobile node using an address from the home network prefix(es). It MAY also tear down the point-to-point link shared with the mobile node. ๐Ÿ’…
  12. If the received Proxy Binding Acknowledgement message has the Status field value set to 0 (Proxy Binding Update accepted), the mobile access gateway MUST establish a bi-directional tunnel to the local mobility anchor (if there is no existing bi-directional tunnel to that local mobility anchor). Considerations from Section 5.6.1 MUST be applied for managing the dynamically created bi-directional tunnel. ๐Ÿš‡
  13. The mobile access gateway MUST set up the route for forwarding the packets received from the mobile node using address(es) from its home network prefix(es) through the bi-directional setup for that mobile node. The created tunnel and the routing state MUST result in the forwarding behavior on the mobile access gateway as specified in Section 6.10.5. ๐Ÿ›ฃ๏ธ
  14. The mobile access gateway MUST also update the Binding Update List entry to reflect the accepted binding registration values. It MUST also advertise the mobile node's home network prefix(es) as the hosted on-link prefixes, by including them in the Router Advertisement messages that it sends on that access link. ๐Ÿ“ข
  15. If the received Proxy Binding Acknowledgement message has the address in the Link-local Address option set to a NON_ZERO value, the mobile access gateway SHOULD configure that link-local address on that point-to-point link and SHOULD NOT configure any other link-local address without performing a DAD operation [RFC4862]. This will avoid any potential link-local address collisions on that access link. However, if the link-local address generated by the local mobility anchor happens to be already in use by the mobile node on that link, the mobile access gateway MUST NOT use that address, but SHOULD configure a different link-local address. It SHOULD also upload this link-local address to the local mobility anchor by immediately sending a Proxy Binding Update message and by including this address in the Link-local Address option. ๐Ÿซถ

6.9.1.3. Extending Binding Lifetime ๐Ÿ”„๐Ÿ’–

  1. For extending the lifetime of a currently registered mobile node (i.e., after a successful initial binding registration from the same mobile access gateway), the mobile access gateway can send a Proxy Binding Update message to the local mobility anchor with a new lifetime value. This re-registration message MUST be constructed with the same set of options as the initial Proxy Binding Update message, under the considerations specified in Section 6.9.1.1. However, the following exceptions apply. โœจ
  2. There MUST be a Home Network Prefix option for each of the assigned home network prefixes assigned for that mobility session and with the prefix value in the option set to that respective prefix value. ๐Ÿ 
  3. The Handoff Indicator field in the Handoff Indicator option MUST be set to a value of 5 (Handoff state not changed - Re-Registration). ๐ŸŽ€

6.9.1.4. Mobile Node Detachment and Binding De-Registration ๐Ÿ‘‹๐ŸŒธ

  1. If at any point the mobile access gateway detects that the mobile node has moved away from its access link, or if it decides to terminate the mobile node's mobility session, it SHOULD send a Proxy Binding Update message to the local mobility anchor with the lifetime value set to zero. This de-registration message MUST be constructed with the same set of options as the initial Proxy Binding Update message, under the considerations specified in Section 6.9.1.1. However, the following exceptions apply. ๐Ÿงณ
  2. There MUST be a Home Network Prefix option for each of the assigned home network prefixes assigned for that mobility session and with the prefix value in the option set to the respective prefix value. ๐Ÿ“ฆ
  3. The Handoff Indicator field in the Handoff Indicator option MUST be set to a value of 4 (Handoff state unknown). ๐Ÿคทโ€โ™€๏ธ

Either upon receipt of a Proxy Binding Acknowledgement message from the local mobility anchor with the Status field set to 0 (Proxy Binding Update Accepted), or after INITIAL_BINDACK_TIMEOUT [RFC3775] timeout waiting for the reply, the mobile access gateway MUST do the following: ๐Ÿฅน

  1. It MUST remove the Binding Update List entry for the mobile node from its Binding Update List. ๐Ÿ—‘๏ธ
  2. It MUST remove the created routing state for tunneling the mobile node's traffic. ๐Ÿงน
  3. If there is a dynamically created tunnel to the mobile node's local mobility anchor and if there are not other mobile nodes for which the tunnel is being used, then the tunnel MUST be deleted. ๐Ÿซง
  4. It MUST tear down the point-to-point link shared with the mobile node. This action will force the mobile node to remove any IPv6 address configuration on the interface connected to this point-to-point link. ๐Ÿ’ซ

6.9.1.5. Constructing the Proxy Binding Update Message โœจ

Okay so when the mobile access gateway sends a Proxy Binding Update message to the local mobility anchor, it MUST build the message exactly like this ๐Ÿ’…

IPv6 header (src=Proxy-CoA, dst=LMAA)
   Mobility header
      - BU /* P & A flags MUST be set to value 1 */
     Mobility Options
      - Mobile Node Identifier option            (mandatory)
      - Home Network Prefix option(s)            (mandatory)
      - Handoff Indicator option                 (mandatory)
      - Access Technology Type option            (mandatory)
      - Timestamp option                         (optional)
      - Mobile Node Link-layer Identifier option (optional)
      - Link-local Address option                (optional)

       Figure 12: Proxy Binding Update Message Format
  • The Source Address field in the IPv6 header MUST be set to the global address configured on the egress interface of the mobile access gateway. If there's no Alternate Care-of Address option in the request, this address counts as the Proxy-CoA for this Proxy Binding Update message. But if there IS an Alternate Care-of Address option in the request, this address will be not be considered as the Proxy-CoA, and the address inside the Alternate Care-of Address option becomes the Proxy-CoA instead. Plot twist ๐ŸŽ€
  • The Destination Address field in the IPv6 header MUST be set to the local mobility anchor address.
  • The Mobile Node Identifier option [RFC4283] MUST be present.
  • At least one Home Network Prefix option MUST be present.
  • The Handoff Indicator option MUST be present.
  • The Access Technology Type option MUST be present.
  • The Timestamp option MAY be present.
  • The Mobile Node Link-layer Identifier option MAY be present.
  • The Link-local Address option MAY be present.
  • If IPsec is used for protecting the signaling messages, the message MUST be protected, using the security association existing between the local mobility anchor and the mobile access gateway. ๐Ÿ”
  • Unlike in Mobile IPv6 [RFC3775], the Home Address option [RFC3775] MUST NOT be present in the IPv6 Destination Options extension header of the Proxy Binding Update message. Not allowed here, bestie ๐Ÿ™…โ€โ™€๏ธ

6.9.2. Router Solicitation Messages ๐ŸŒธ

A mobile node may send a Router Solicitation message on the access link it shares with the mobile access gateway. The Router Solicitation message the mobile node sends is as specified in [RFC4861]. The mobile access gateway, when it receives that Router Solicitation message or before it sends a Router Advertisement message, MUST apply the following considerations.

  1. The mobile access gateway, on receiving the Router Solicitation message, SHOULD send a Router Advertisement message containing the mobile node's home network prefix(es) as the on-link prefix(es). Before sending that Router Advertisement, though, it SHOULD complete the binding registration process with the mobile node's local mobility anchor. Registration first, then the glow-up โœจ
  2. If the local mobility anchor rejects the Proxy Binding Update message, or if the mobile access gateway failed to complete the binding registration process for whatever reason, the mobile access gateway MUST NOT advertise the mobile node's home network prefix(es) in the Router Advertisement messages it sends on the access link. However, it MAY choose to advertise a local visited network prefix so the mobile node can still get regular IPv6 access. Not the vibe, but there's a backup plan ๐Ÿ’–
  3. The mobile access gateway SHOULD add the MTU option, as specified in [RFC4861], to the Router Advertisement messages it sends on the access link. This makes sure the mobile node on the link uses the advertised MTU value. The MTU value SHOULD reflect the tunnel MTU for the bi-directional tunnel between the mobile access gateway and the local mobility anchor. Considerations from Section 6.9.5 SHOULD be applied when figuring out the tunnel MTU value ๐Ÿ“

6.9.3. Default-Router ๐Ÿฆ‹

In Proxy Mobile IPv6, the mobile access gateway is the IPv6 default-router for the mobile node on the access link. But here's the thing: as the mobile node moves from one access link to another, the serving mobile access gateway on each of those links is the one sending the Router Advertisement messages. If those Router Advertisements use a different link-local address or a different link-layer address, the mobile node will detect a brand new default-router after every single handoff, which is so chaotic ๐Ÿ˜ญ

To fix this, this specification requires all the mobile access gateways in the Proxy Mobile IPv6 domain to use the same link-local and link-layer address on any of the access links wherever the mobile node attaches. These addresses can be fixed across the entire Proxy Mobile IPv6 domain, and all the mobile access gateways can use these globally fixed addresses on any of the point-to-point links. The configuration variables FixedMAGLinkLocalAddressOnAllAccessLinks and FixedMAGLinkLayerAddressOnAllAccessLinks SHOULD be used for this purpose. The specification also lets the local mobility anchor generate the link-local address and hand it to the mobile access gateway inside the signaling messages.

However, both of these approaches (a link-local address generated by the local mobility anchor, or a globally fixed link-local address) have implications for the deployment of SEcure Neighbor Discovery (SEND) [RFC3971]. In SEND, routers have certificates and public key pairs, and their Router Advertisements are signed with the private keys of those key pairs. When a number of different routers use the same addresses, the routers either all have to be able to construct these signatures for the same key pair, or the used key pair and the router's cryptographic identity must change after a movement. Both approaches are problematic. Sharing private key information across multiple nodes in a PMIP6 domain is poor design from a security perspective. And changing even the cryptographic identity of the router goes against the general idea of Proxy Mobile IPv6 being as invisible to the hosts as possible. Big oof ๐Ÿ™ˆ

There is, however, ongoing work in the IETF to revise the SEND specifications. It's suggested that these revisions also address the above problem. Other revisions are needed to deal with other problematic cases (such as Neighbor Discovery proxies) before wide-spread deployment of SEND. Still cooking ๐Ÿณ

6.9.4. Retransmissions and Rate Limiting ๐ŸŒˆ

The mobile access gateway is responsible for retransmitting and rate limiting the Proxy Binding Update messages it sends to the local mobility anchor. The retransmission and rate limiting rules are as specified in [RFC3775]. However, the following considerations MUST be applied.

  1. When the mobile access gateway sends a Proxy Binding Update message, it should use the constant, INITIAL_BINDACK_TIMEOUT [RFC3775], for configuring the retransmission timer, as specified in Section 11.8 [RFC3775]. However, the mobile access gateway is not required to use the longer retransmission interval of InitialBindackTimeoutFirstReg, as specified in [RFC3775], for the initial Proxy Binding Update message. Flexible, but make it make sense ๐Ÿ’…
  2. If the mobile access gateway fails to receive a valid matching response for a registration or re-registration message within the retransmission interval, it SHOULD retransmit the message until a response is received. However, the mobile access gateway MUST ensure the mobile node is still attached to the connected link before retransmitting the message. Check the vibe first, then resend ๐Ÿซถ
  3. As specified in Section 11.8 of [RFC3775], the mobile access gateway MUST use an exponential back-off process in which the timeout period is doubled upon each retransmission, until either the node receives a response or the timeout period reaches the value MAX_BINDACK_TIMEOUT [RFC3775]. The mobile access gateway MAY continue to send these messages at this slower rate indefinitely. Patience is a whole aesthetic ๐Ÿข
  4. If the Timestamp-based scheme is in use, the retransmitted Proxy Binding Update messages MUST use the latest timestamp. If the Sequence Number scheme is in use, the retransmitted Proxy Binding Update messages MUST use a Sequence Number value greater than that was used for the previous transmission of this Proxy Binding Update message, just as specified in [RFC3775]. Always newer, never repeat ๐Ÿ‘‘

6.9.5. Path MTU Discovery ๐Ÿ“

okay bestie, MTUs are SO important ๐Ÿ˜ญ the mobile node, the mobile access gateway, and the local mobility anchor all need a correct understanding of them. When the mobile node uses the right MTU, it can send packets that don't go over the local link MTU, and the tunneled packets coming out of the mobile access gateway don't get fragmented. That matters for efficiency, and it stops those hard-to-diagnose MTU problems that are literally the worst ๐Ÿ’€ Here are some of the things to think about with Path MTU discovery:

  • The local mobility anchor and mobile access gateway MAY use the Path MTU discovery mechanisms, as specified in [RFC1981] or in [RFC4821], for determining the Path MTU (PMTU) for the (LMA-MAG) paths. The specific discovery mechanism used in a given deployment can be configurable ๐ŸŽ€
  • The mobility entities MUST implement and SHOULD support the ICMP-based Path MTU discovery mechanism, as specified in [RFC1981]. However, this mechanism may not work correctly if the Proxy Mobile IPv6 network does not deliver or process ICMP Packet Too Big messages ๐Ÿ™ˆ
  • The mobility entities MAY implement Packetization Layer Path MTU discovery mechanisms, as specified in [RFC4821], and use any application traffic as a payload for the PMTU discovery. Neither the Proxy Mobile IPv6 protocol nor the tunnel between the mobile access gateway and local mobility agent can easily be used for this purpose. However, implementations SHOULD support at least the use of an explicit ICMP Echo Request/Response for this purpose ๐Ÿฆ‹
  • The mobility entities MAY choose to perform Path MTU discovery for all the (LMA-MAG) paths at boot time, and may repeat this operation periodically to make sure the Path MTU values haven't changed for those paths. If the dynamic PMTU discovery mechanisms fail to determine the Path MTU, an administratively configured default value MUST be used ๐Ÿงš
  • The IPv6 tunnel MTU for an established tunnel between the local mobility anchor and the mobile access gateway MUST be computed based on the determined Path MTU value for that specific path, and the computation should be as specified in Section 6.7 of [RFC2473] โœจ
  • The mobile access gateway SHOULD use the determined tunnel Path MTU value (for the tunnel established with the mobile node's local mobility anchor) as the MTU value in the MTU option that it sends in the Router Advertisements on the access link shared with the mobile node. But if the MTU value of the access link shared with the mobile node is lower than the determined Path MTU value, then the MTU of the access link MUST be used in the MTU option ๐Ÿ‘‘
  • If the mobile access gateway detects a change in the MTU value for any of the paths (LMA-MAG), at any point in time, the corresponding tunnel MTU value MUST be updated to reflect the change in Path MTU value. The adjusted tunnel MTU value (the lower of the Path MTU and the access link MTU) SHOULD be notified to the impacted mobile nodes by sending additional Router Advertisement messages. Additionally, the adjusted tunnel MTU value MUST be used in all the subsequent Router Advertisement messages as well. it's giving "keep everyone updated" energy ๐Ÿ’…

6.10. Routing Considerations ๐Ÿ›ฃ๏ธ

This section is all about how the mobile access gateway handles traffic to and from the mobile node that's attached to one of its access interfaces ๐ŸŒธ

                 Proxy-CoA                   LMAA
                    |                          |
    +--+          +---+                      +---+          +--+
    |MN|----------|MAG|======================|LMA|----------|CN|
    +--+          +---+                      +---+          +--+
                            IPv6 Tunnel

Figure 13: Proxy Mobile IPv6 Tunnel

6.10.1. Transport Network ๐Ÿš‡

As per this specification, the transport network between the local mobility anchor and the mobile access gateway is an IPv6 network. The document [IPV4-PMIP6] specifies the required extensions for negotiating IPv4 transport and the corresponding encapsulation mode ๐Ÿซถ

6.10.2. Tunneling and Encapsulation Modes ๐ŸŽ

An IPv6 address that a mobile node uses from its home network prefix(es) is topologically anchored at the local mobility anchor. For a mobile node to use this address from an access network attached to a mobile access gateway, proper tunneling techniques have to be in place. Tunneling hides the network topology and lets the mobile node's IPv6 datagram get encapsulated as the payload of another IPv6 packet, so it can be routed between the local mobility anchor and the mobile access gateway. The Mobile IPv6 base specification [RFC3775] defines the use of IPv6-over-IPv6 tunneling [RFC2473] between the home agent and the mobile node, and this specification extends that same tunneling mechanism to be used between the local mobility anchor and the mobile access gateway ๐Ÿฆ‹

On most operating systems, a tunnel is implemented as a virtual point-to-point interface. The source and destination addresses of the two endpoints of this virtual interface, along with the encapsulation mode, are specified for this virtual interface. Any packet routed over this interface gets encapsulated with the outer header specified for that point-to-point tunnel interface ๐Ÿ’œ

For creating a point-to-point tunnel to any local mobility anchor, the mobile access gateway may implement a tunnel interface with the Source Address field set to a global address on its egress interface (Proxy-CoA) and the destination address field set to the global address of the local mobility anchor (LMAA) ๐ŸŒˆ

The following is the supported packet encapsulation mode that can be used by the mobile access gateway and the local mobility anchor for routing the mobile node's IPv6 datagrams ๐Ÿ“ฆ

  • IPv6-In-IPv6 - IPv6 datagram encapsulated in an IPv6 packet [RFC2473].

The companion document [IPV4-PMIP6] specifies other encapsulation modes for supporting IPv4 transport ๐Ÿ“

  • IPv6-In-IPv4 - IPv6 datagram encapsulation in an IPv4 packet. The details on how this mode is negotiated are specified in [IPV4-PMIP6].
  • IPv6-In-IPv4-UDP - IPv6 datagram encapsulation in an IPv4 UDP packet. This mode is specified in [IPV4-PMIP6].
  • IPv6-In-IPv4-UDP-TLV - IPv6 datagram encapsulation in an IPv4 UDP packet with a TLV header. This mode is specified in [IPV4-PMIP6].

6.10.3. Local Routing ๐Ÿ 

If there's data traffic between a visiting mobile node and a correspondent node that's locally attached to an access link connected to the mobile access gateway, the mobile access gateway MAY optimize delivery by routing the packets locally, and not reverse tunneling them to the mobile node's local mobility anchor. The flag EnableMAGLocalRouting MAY be used for controlling this behavior. However, in some systems this may have an implication on the mobile node's accounting and policy enforcement, since the local mobility anchor isn't in the path for that traffic and won't be able to apply any traffic policies or do any accounting for those flows ๐Ÿ™ˆ

This path optimization decision SHOULD be based on the policy configured on the mobile access gateway, but enforced by the mobile node's local mobility anchor. The specific details on how this is achieved are beyond the scope of this document ๐Ÿ’…

6.10.4. Tunnel Management ๐Ÿ› ๏ธ

All the considerations mentioned in Section 5.6.1 for tunnel management on the local mobility anchor apply to the mobile access gateway as well ๐Ÿซถ

6.10.5. Forwarding Rules ๐Ÿšฆ

Forwarding Packets Sent to the Mobile Node's Home Network:

  • On receiving a packet from the bi-directional tunnel established with the mobile node's local mobility anchor, the mobile access gateway MUST use the destination address of the inner packet for forwarding it on the interface where the destination network prefix is hosted. The mobile access gateway MUST remove the outer header before forwarding the packet. Considerations from [RFC2473] MUST be applied for IPv6 decapsulation. If the mobile access gateway cannot find the connected interface for that destination address, it MUST silently drop the packet. For reporting an error in such a scenario, in the form of an ICMP control message, the considerations from [RFC2473] MUST be applied ๐Ÿ“จ
  • On receiving a packet from a correspondent node that is connected to the mobile access gateway as a regular IPv6 host (see Section 6.14) and destined to a mobile node that is also locally attached, the mobile access gateway MUST check the flag EnableMAGLocalRouting to determine if the packet can be delivered directly to the mobile node. If the mobile access gateway is not allowed to route the packet directly, it MUST route the packet towards the local mobility anchor where the destination address is topologically anchored; otherwise, it can route the packet directly to the mobile node ๐Ÿงญ

Forwarding Packets Sent by the Mobile Node:

  • On receiving a packet from a mobile node connected to its access link, the mobile access gateway MUST ensure there is an established binding for that mobile node with its local mobility anchor before forwarding the packet directly to the destination or before tunneling the packet to the mobile node's local mobility anchor ๐Ÿ”
  • On receiving a packet from a mobile node connected to its access link for a destination that is locally connected, the mobile access gateway MUST check the flag EnableMAGLocalRouting, to ensure the mobile access gateway is allowed to route the packet directly to the destination. If the mobile access gateway is not allowed to route the packet directly, it MUST route the packet through the bi-directional tunnel established between itself and the mobile node's local mobility anchor. Otherwise, it MUST route the packet directly to the destination ๐ŸŽฏ
  • On receiving a packet from a mobile node connected to its access link, to a destination that is not directly connected, the packet MUST be forwarded to the local mobility anchor through the bi-directional tunnel established between itself and the mobile node's local mobility anchor. However, packets that are sent with the link-local source address MUST NOT be forwarded ๐Ÿšซ
  • The format of the tunneled packet is shown below. Considerations from [RFC2473] MUST be applied for IPv6 encapsulation. However, when using IPv4 transport, the format of the tunneled packet is as described in [IPV4-PMIP6] ๐ŸŽ€
  IPv6 header (src= Proxy-CoA, dst= LMAA  /* Tunnel Header */
     IPv6 header (src= MN-HoA, dst= CN )  /* Packet Header */
        Upper layer protocols             /* Packet Content*/

Figure 14: Tunneled Packet from MAG to LMA

  • The format of the tunneled packet is shown below when payload protection using IPsec is enabled for the mobile node's data traffic. However, when using IPv4 transport, the format of the packet is as described in [IPV4-PMIP6] ๐Ÿ”’
  IPv6 header (src= Proxy-CoA, dst= LMAA     /* Tunnel Header */
     ESP Header in tunnel mode               /* ESP Header */
        IPv6 header (src= MN-HoA, dst= CN )  /* Packet Header */
           Upper layer protocols             /* Packet Content*/

Figure 15: Tunneled Packet from MAG to LMA with Payload Protection

okay so this section is all about how Stateful Address Configuration using DHCP can work in a Proxy Mobile IPv6 domain ๐ŸŽ€ It also lays out what needs to be set up in both the DHCP side and the mobility side, plus how these two systems talk to each other ๐Ÿ’…

  • okay so for Stateful Address Configuration using DHCP to work, the DHCP relay agent [RFC3315] service MUST be supported on all the mobile access gateways in the Proxy Mobile IPv6 domain ๐Ÿซถ also, as Section 20 of [RFC3315] says, the DHCP relay agent should be configured with a list of destination addresses. That list MAY include unicast addresses, the All_DHCP_Servers multicast address, or other addresses that make sense for a given deployment ๐Ÿฆ‹
  • the DHCP infrastructure needs to be set up to hand out addresses from each of the prefixes assigned to a link in that Proxy Mobile IPv6 domain ๐ŸŒธ the DHCP relay agent tells the server which link the mobile node is on by putting an IPv6 address from any of that link's prefixes into the link-address field of the Relay Forward message. so for every link in the Mobile IPv6 domain, the DHCP infrastructure will:
    • be configured with a list of all of the prefixes associated with that link ๐Ÿ“
    • figure out which link the mobile node is attached to by looking up the prefix in the link-address field of the Relay Forward message in the list of prefixes associated with each link ๐Ÿ”
    • assign to the host an address from each prefix associated with the link the mobile node is attached to ๐Ÿงš

this DHCP configuration requirement is exactly the same as in other IPv6 networks ๐Ÿ™ˆ the only difference is that DHCP messages from a mobile node can arrive through different relay agents (MAGs) over time. other than that, the DHCP infrastructure has no idea whether the mobile node supports mobility, ngl

  • the local mobility anchor needs to have the same understanding of the links and their associated prefixes in a Proxy Mobile IPv6 domain ๐Ÿ’œ when a local mobility anchor assigns prefix(es) to a mobile node, it MUST assign all the prefixes associated with a given link, and all of those assigned prefixes stay as the home network prefixes for that mobile node for the entire life of that mobility session ๐Ÿ‘‘ the serving mobile access gateway hosting these prefixes is physically connected to that link and can act as the DHCP relay agent. this shared understanding between the DHCP and mobility entities about all the links in the domain and their prefixes is what keeps everything coordinated ๐Ÿซง it lets the mobility entities assign prefixes to a mobile node dynamically, while the DHCP infrastructure still assigns addresses to that mobile node only from its home network prefixes. iconic, honestly ๐Ÿ˜ญ
  • when a mobile node sends a DHCP request message, the DHCP relay agent function on the mobile access gateway sets the link-address field in the DHCP message to an address in the mobile node's home network prefix (any one of the home network prefixes assigned to that mobile node's attached interface) ๐ŸŒˆ the mobile access gateway can generate an autoconfiguration address from one of the mobile node's home network prefixes [RFC4862] and use that address in the link-address option, which gives the DHCP Server a hint for identifying the link ๐Ÿ’– the DHCP server, after receiving the request from the mobile node, allocates addresses from all the prefixes associated with that link (identified using the link-address field of the request) โœจ
  • once the mobile node has obtained address(es), moves to a different link, and sends a DHCP request (at any time) to extend the DHCP lease, the DHCP relay agent on the new link sets the link-address field in the DHCP Relay Forward message to one of the mobile node's home network prefixes ๐Ÿฆ‹ the DHCP server identifies the client from the Client-DUID option, identifies the link from the link-address option in the request, and allocates the same address(es) as before. main character energy, really ๐Ÿ‘‘
  • for network-based mobility management to work correctly, where the host doesn't take part in any mobility management, the mobile node MUST always be assigned an identical set of IPv6 addresses no matter which access link it is attached to ๐Ÿซถ for example, the mobile access gateways in the Proxy Mobile IPv6 domain should be configured so that DHCP messages from a mobile node are always handled by the same DHCP server, or by a server from the same group of coordinated DHCP servers serving that domain ๐Ÿ“ DHCP-based address configuration is not recommended for deployments where the local mobility anchor and the mobile access gateway are in different administrative domains. not it ๐Ÿ™…โ€โ™€๏ธ

6.12. Home Network Prefix Renumbering ๐ŸŒธ

okay so what happens if the mobile node's home network prefix(es) get renumbered or become invalid in the middle of a mobility session? ๐Ÿ˜ญ the mobile access gateway MUST withdraw those prefix(es) by sending a Router Advertisement message on the access link with a zero prefix lifetime for the prefix(es) being renumbered ๐Ÿ’… and the local mobility anchor and the mobile access gateway MUST both delete the routing state they created for the renumbered prefix(es) ๐Ÿงน the specifics of how the local mobility anchor tells the mobile access gateway about the renumbering of the mobile node's home network prefix(es) are outside the scope of this document, so we're leaving that one alone ๐Ÿซง


6.13. Mobile Node Detachment Detection and Resource Cleanup ๐Ÿ”

bestie, before the mobile access gateway sends a Proxy Binding Update message to the local mobility anchor to extend the lifetime of a binding that already exists for a mobile node, it MUST make sure the mobile node is still attached to the connected link using some reliable method ๐Ÿ›ก๏ธ if the mobile access gateway can't predictably detect the mobile node on the connected link, it MUST NOT try to extend that mobile node's registration lifetime ๐Ÿ’€ in that situation, the mobile access gateway SHOULD end the mobile node's binding by sending a Proxy Binding Update message to the mobile node's local mobility anchor with the lifetime value set to 0 ๐ŸŒ™ it MUST also remove any local state, like the Binding Update List entry created for that mobile node ๐Ÿงผ

the specific way of detecting that a visiting mobile node has left the connected link depends on the access link between the mobile node and the mobile access gateway, so it's outside the scope of this document ๐Ÿฆ‹ usually there are different link-layer-specific events for each access technology that the mobile access gateway can rely on to spot a lost node. in general, the mobile access gateway can use one or more of these methods to detect the presence of the mobile node on the connected link:

  • link-layer event specific to the access technology โšก
  • session termination event on point-to-point link types ๐Ÿ”Œ
  • IPv6 Neighbor Unreachability Detection event from IPv6 stack ๐Ÿง 
  • notification event from the local mobility anchor ๐Ÿ“ฃ

6.14. Allowing Network Access to Other IPv6 Nodes ๐ŸŽ€

some Proxy Mobile IPv6 deployments let network operators set up the mobile access gateway to offer network-based mobility management service only to some visiting mobile nodes, while other nodes just get regular IP access ๐Ÿ’– that means the network needs control over when it turns on network-based mobility management service for a mobile node and when it turns on regular IPv6 access instead ๐Ÿซถ this specification doesn't rule out that kind of setup โœจ

after detecting a mobile node on its access link, and after considering policy, the mobile access gateway MUST decide whether network-based mobility management service should be offered to that mobile node ๐Ÿ”ฅ if the mobile node is entitled to network-based mobility management service, then the mobile access gateway must make sure the mobile node doesn't notice any change to its layer-3 attachment, as explained in the various sections of this specification ๐Ÿฆ‹

if the mobile node isn't entitled to network-based mobility management service, as decided by the policy considerations, the mobile access gateway MAY choose to offer regular IPv6 access to it. in that case, the normal IPv6 considerations apply ๐ŸŒˆ if IPv6 access is enabled, the mobile node SHOULD be able to get IPv6 address(es) using the normal IPv6 address configuration procedures ๐Ÿ’… the address(es) it gets must be from local visitor network prefix(es). this basically makes sure that the mobile access gateway acts as a normal access router to a mobile node attached to its access link, without messing with its host-based mobility protocol operation ๐Ÿงš


7. Mobile Node Operation ๐Ÿฆ‹

this non-normative section explains how the mobile node operates in a Proxy Mobile IPv6 domain ๐Ÿ’œ

7.1. Moving into a Proxy Mobile IPv6 Domain ๐Ÿงณโœจ

okay so when a mobile node walks into a Proxy Mobile IPv6 domain and plugs into an access network, the mobile access gateway on that access link notices it's there and finishes the binding registration with the mobile node's local mobility anchor ๐Ÿฆ‹. if that binding update works out, the gateway sets up the state and the forwarding for the mobile node's data traffic. main character energy, honestly ๐Ÿ’…

so when a mobile node attaches to the access link, it will usually send a Router Solicitation message [RFC4861] ๐Ÿ™‹โ€โ™€๏ธ. the mobile access gateway on that link answers with a Router Advertisement message ๐Ÿ“ฃ. that Router Advertisement carries the mobile node's home network prefix(es), the default-router address, and other address configuration parameters ๐ŸŽ€

now, here's the tea ๐Ÿซ–. if the mobile access gateway gets that Router Solicitation before it's done signaling with the mobile node's local mobility anchor, it might not know the mobile node's home network prefix(es) yet, so it may not be able to fake the home link on the access link ๐Ÿ˜ฌ. in that case the mobile node might notice a delay before the Router Advertisement shows up. this also hits mobile nodes that can handle their own mobility, and mobile nodes that don't need to keep the same IP address while they move around ๐Ÿ™ˆ

if the Router Advertisement has the Managed Address Configuration flag set, the mobile node does what it normally does and sends a DHCP Request [RFC3315] ๐Ÿ“ฌ. the DHCP relay service on that access link makes sure the mobile node can get one or more addresses from its home network prefix(es) ๐Ÿ’–

if the Router Advertisement does not have the Managed Address Configuration flag set, and the mobile node is allowed to use autoconfigured address(es), then it can grab IPv6 address(es) from each of its home network prefixes using any of the standard IPv6 address configuration mechanisms allowed for that mode ๐ŸŒˆ

if the mobile node is IPv4-enabled and the network allows it, it can also get its IPv4 address configuration, as described in the companion document [IPV4-PMIP6] ๐ŸŒธ

once the address configuration is all sorted, the mobile node can keep using it for as long as it's attached to a network inside that Proxy Mobile IPv6 domain's scope โœจ


7.2. Roaming in the Proxy Mobile IPv6 Domain ๐Ÿšถโ€โ™€๏ธ๐Ÿ’จ

so after the mobile node gets its address configuration inside the Proxy Mobile IPv6 domain, it can keep moving around and switch from one mobile access gateway to another, and it still gets to keep the same address configuration ๐Ÿฅน. as long as the access link it's on is in scope for that domain, the mobile node will always detect the same router, the one acting as its default-router and advertising its home network prefix(es) on each connected link ๐ŸŽฏ. and if the mobile node got its address configuration over DHCP, it can hang onto that configuration and extend the lease lifetime ๐Ÿ’œ


8. Message Formats ๐Ÿ“จ

This section defines extensions to the Mobile IPv6 [RFC3775] protocol messages. ๐Ÿซถ

8.1. Proxy Binding Update Message ๐Ÿ’Œ

       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
                                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                      |            Sequence #         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |A|H|L|K|M|R|P|  Reserved       |            Lifetime           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                        Mobility options                       .
      .                                                               .

      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

okay so a Binding Update message that a mobile access gateway sends to a local mobility anchor is called the "Proxy Binding Update" message ๐Ÿท๏ธ. it gets a brand new flag, the (P) flag ๐Ÿšฉ. everything else about the Binding Update message stays the same as in [RFC3775], plus the extra (R) and (M) flags from [RFC3963] and [RFC4140] respectively ๐Ÿงฉ

Proxy Registration Flag (P) ๐Ÿšฉ

the new (P) flag tells the local mobility anchor that this Binding Update is a proxy registration ๐Ÿ“ฃ. the flag MUST be set to the value of 1 for proxy registrations, and it MUST be set to 0 for direct registrations sent by a mobile node ๐Ÿ™…โ€โ™€๏ธโœจ

Mobility Options ๐ŸŽ

this is a variable-length field, sized so the whole Mobility Header ends up being an integer multiple of 8 octets long ๐Ÿ“. it holds zero or more TLV-encoded mobility options ๐Ÿง. the encoding and format of the defined options are described in Section 6.2 of [RFC3775] ๐Ÿ“–. the local mobility anchor MUST ignore and skip any options it doesn't understand ๐Ÿ™ˆ

per this spec, these mobility options are valid in a Proxy Binding Update message ๐Ÿ’…. they can show up in any order ๐Ÿ”€. you can have one or more Home Network Prefix options in there ๐Ÿก, but you can't have more than one of any of the following:

  • Mobile Node Identifier option
  • Home Network Prefix option
  • Handoff Indicator option
  • Access Technology Type option
  • Timestamp option
  • Mobile Node Link-layer Identifier option
  • Link-local Address option

and there can be one or more instances of the Vendor-Specific Mobility option [RFC5094] ๐ŸŒŸ

for descriptions of the other fields in this message, check Section 6.1.7 of [RFC3775] ๐Ÿ”

8.2. Proxy Binding Acknowledgement Message ๐Ÿ’ซ

       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
                                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                      |   Status      |K|R|P|Reserved |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Sequence #            |           Lifetime            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                        Mobility options                       .
      .                                                               .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

a Binding Acknowledgement that a local mobility anchor sends to a mobile access gateway is called the "Proxy Binding Acknowledgement" message ๐Ÿ“ฌ. it gets a new (P) flag too ๐Ÿšฉ. the rest of the message is the same as in [RFC3775], with the extra (R) flag from [RFC3963] ๐Ÿงฉ

Proxy Registration Flag (P) ๐Ÿšฉ

this new (P) flag tells the mobile access gateway that the local mobility anchor which handled the matching Proxy Binding Update supports proxy registrations ๐Ÿค. the flag is set to 1 only if the matching Proxy Binding Update had its Proxy Registration Flag (P) set to 1 โœจ

Mobility Options ๐ŸŽ

this is a variable-length field, again sized so the complete Mobility Header is an integer multiple of 8 octets long ๐Ÿ“. it holds zero or more TLV-encoded mobility options ๐Ÿง. the encoding and format are described in Section 6.2 of [RFC3775] ๐Ÿ“–. the mobile access gateway MUST ignore and skip any options it doesn't understand ๐Ÿ™ˆ

per this spec, these mobility options are valid in a Proxy Binding Acknowledgement message ๐Ÿ’…. they can show up in any order ๐Ÿ”€. there can be one or more Home Network Prefix options ๐Ÿก, but there can't be more than one of any of these:

  • Mobile Node Identifier option
  • Home Network Prefix option
  • Handoff Indicator option
  • Access Technology Type option
  • Timestamp option
  • Mobile Node Link-layer Identifier option
  • Link-local Address option

and there can be one or more instances of the Vendor-Specific Mobility option [RFC5094] ๐ŸŒŸ

Status ๐Ÿšฆ

an 8-bit unsigned integer that tells you what happened to the Proxy Binding Update ๐ŸŽฏ. if the Status value is less than 128, the local mobility anchor accepted the Proxy Binding Update โœ…. if it's greater than or equal to 128, the local mobility anchor rejected it ๐Ÿ™…โ€โ™€๏ธ. Section 8.9 defines the Status values you can use in a Proxy Binding Acknowledgement message ๐Ÿ“š

for descriptions of the other fields in this message, check Section 6.1.8 of [RFC3775] ๐Ÿ”

8.3. Home Network Prefix Option ๐Ÿ โœจ

okay so this one is the Home Network Prefix option and it's brand new ๐ŸŽ€ It's made for the Proxy Binding Update and Proxy Binding Acknowledgement messages that get passed between a local mobility anchor and a mobile access gateway. Its whole job is carrying the mobile node's home network prefix info. Also, one message can hold multiple Home Network Prefix options, so you can bring a whole squad ๐Ÿ’…

The Home Network Prefix Option has an alignment requirement of 8n+4. Here's the layout ๐Ÿ‘‡

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Type     |   Length      |   Reserved    | Prefix Length |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                    Home Network Prefix                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here's the breakdown ๐Ÿงš

  • Type: 22 ๐Ÿฆ‹
  • Length: an 8-bit unsigned integer that tells you the length of the option in octets, not counting the type and length fields. This field MUST be set to 18. Bestie, that number is not a suggestion ๐Ÿ˜ญ
  • Reserved (R): this 8-bit field is unused for now. The value MUST be initialized to 0 by the sender and MUST be ignored by the receiver. Basically it's a placeholder that's just chilling ๐ŸŒธ
  • Prefix Length: an 8-bit unsigned integer that tells you the prefix length of the IPv6 prefix inside the option ๐Ÿ’œ
  • Home Network Prefix: a sixteen-byte field holding the mobile node's IPv6 Home Network Prefix. The main character of the whole option ๐Ÿ‘‘

8.4. Handoff Indicator Option ๐Ÿฆ‹

So the Handoff Indicator option is also new, and it's also for Proxy Binding Update and Proxy Binding Acknowledgement messages going between a local mobility anchor and a mobile access gateway. It carries the mobile node's handoff-related hints, which is lowkey the tea about how the move went ๐Ÿซ–

This one has no alignment requirement. Format:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Type     |   Length      |  Reserved (R) |       HI      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 23 โœจ
  • Length: an 8-bit unsigned integer for the option length in octets, not counting the type and length fields. This field MUST be set to 2.
  • Reserved (R): 8 bits, unused for now. The value MUST be initialized to 0 by the sender and MUST be ignored by the receiver. Same energy as before, no drama ๐Ÿซถ
  • Handoff Indicator (HI): an 8-bit field that specifies the type of handoff. IANA is going to allocate and manage the values (0 - 255) ๐Ÿ“‹ For now these ones are defined:
0: Reserved
1: Attachment over a new interface
2: Handoff between two different interfaces of the mobile node
3: Handoff between mobile access gateways for the same interface
4: Handoff state unknown
5: Handoff state not changed (Re-registration)

8.5. Access Technology Type Option ๐Ÿ“ถ

Next up is the Access Technology Type option, which is also brand new ๐ŸŒˆ It's for the same Proxy Binding Update and Proxy Binding Acknowledgement messages between a local mobility anchor and a mobile access gateway. Its job is to share what kind of access technology the mobile node is currently attached through to the mobile access gateway. Like, how is it connecting, bestie ๐Ÿค”

It has no alignment requirement. Format:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Type     |   Length      |  Reserved (R) |      ATT      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 24 ๐Ÿ’–
  • Length: an 8-bit unsigned integer for the option length in octets, not counting the type and length fields. This field MUST be set to 2.
  • Reserved (R): 8 bits, unused for now. The value MUST be initialized to 0 by the sender and MUST be ignored by the receiver. ๐ŸŒธ
  • Access Technology Type (ATT): an 8-bit field that names the access technology the mobile node is connected through to the access link on the mobile access gateway. IANA allocates and manages the values (0 - 255), and these ones are reserved for the access technology types below:
0: Reserved         ("Reserved")
1: Virtual          ("Logical Network Interface")
2: PPP              ("Point-to-Point Protocol")
3: IEEE 802.3       ("Ethernet")
4: IEEE 802.11a/b/g ("Wireless LAN")
5: IEEE 802.16e     ("WIMAX")

Okay so the Mobile Node Link-layer Identifier option is new too (we are in a brand new era ๐Ÿ’…). It's for the Proxy Binding Update and Proxy Binding Acknowledgement messages between a local mobility anchor and a mobile access gateway, and it carries the mobile node's link-layer identifier. Simple, iconic ๐Ÿฆ‹

Here's the format of the Link-layer Identifier option. Depending on how big the identifier is, the option MUST be aligned appropriately, following the mobility option alignment requirements in [RFC3775]. Be precise, bestie ๐Ÿ™ˆ

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |    Length     |          Reserved             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                        Link-layer Identifier                  +
   .                              ...                              .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 25 ๐Ÿงš
  • Length: an 8-bit unsigned integer for the option length in octets, not counting the type and length fields.
  • Reserved: unused for now. The value MUST be initialized to 0 by the sender and MUST be ignored by the receiver. Reserved is giving "nothing to see here" ๐Ÿซ 
  • Link-layer Identifier: a variable-length field holding the mobile node's link-layer identifier. Its content and format (including byte and bit ordering) follow Section 4.6 of [RFC4861] for carrying link-layer addresses. Heads up though: on some access links, the link-layer address isn't used or can't be figured out, and in that case this option can't be used ๐Ÿ™…โ€โ™€๏ธ

Here's the Link-local Address option, which is brand new as well ๐ŸŒŸ It's for the Proxy Binding Update and Proxy Binding Acknowledgement messages between a local mobility anchor and a mobile access gateway, and it carries the link-local address of the mobile access gateway.

This one has an alignment requirement of 8n+6. Format:

    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
                                   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                   |   Type        |    Length     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                  Link-local Address                           +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 26 ๐Ÿ’œ
  • Length: an 8-bit unsigned integer for the option length in octets, not counting the type and length fields. This field MUST be set to 16. That's the whole vibe ๐ŸŽฏ
  • Link-local Address: a sixteen-byte field holding the link-local address ๐Ÿฆ‹

8.8. Timestamp Option โฐ

Last but absolutely not least, the Timestamp option ๐ŸŽ€ It's brand new and it's used in the Proxy Binding Update and Proxy Binding Acknowledgement messages. It has an alignment requirement of 8n+2. Format:

  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
                                 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                 |      Type     |   Length      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  +                          Timestamp                            +
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 27 โœจ
  • Length: an 8-bit unsigned integer for the option length in octets, not counting the type and length fields. The value for this field MUST be set to 8. ๐Ÿ’…
  • Timestamp: a 64-bit unsigned integer field holding a timestamp. The value is the number of seconds since January 1, 1970, 00:00 UTC, in a fixed point format. The integer number of seconds lives in the first 48 bits of the field, and the remaining 16 bits are the number of 1/65536 fractions of a second. So it's basically a time stamp with extra precision, and honestly that's so cute ๐Ÿ•ฐ๏ธ๐ŸŒˆ

8.9. Status Values ๐Ÿ’…

okay bestie, this section is where the status codes live ๐Ÿงš these new Status values are for Proxy Binding Acknowledgement messages, and they come from the same number space defined in Section 6.1.8 of [RFC3775] ๐ŸŽ€

the rule is simple: a status under 128 means the local mobility anchor accepted the Proxy Binding Update, and a status over 128 means it got rejected ๐Ÿ™ˆ

  • PROXY_REG_NOT_ENABLED: 152: proxy registration not enabled for the mobile node
  • NOT_LMA_FOR_THIS_MOBILE_NODE: 153: not local mobility anchor for this mobile node
  • MAG_NOT_AUTHORIZED_FOR_PROXY_REG: 154: the mobile access gateway is not authorized to send proxy binding updates
  • NOT_AUTHORIZED_FOR_HOME_NETWORK_PREFIX: 155: the mobile node is not authorized for one or more of the requesting home network prefixes
  • TIMESTAMP_MISMATCH: 156: invalid timestamp value (the clocks are out of sync) โฐ
  • TIMESTAMP_LOWER_THAN_PREV_ACCEPTED: 157: the timestamp value is lower than the previously accepted value
  • MISSING_HOME_NETWORK_PREFIX_OPTION: 158: missing home network prefix option
  • BCE_PBU_PREFIX_SET_DO_NOT_MATCH: 159: all the home network prefixes listed in the BCE do not match all the prefixes in the received PBU
  • MISSING_MN_IDENTIFIER_OPTION: 160: missing mobile node identifier option
  • MISSING_HANDOFF_INDICATOR_OPTION: 161: missing handoff indicator option
  • MISSING_ACCESS_TECH_TYPE_OPTION: 162: missing access technology type option

the Status values from [RFC3775] can also show up in a Proxy Binding Acknowledgement message, so don't forget those too โœจ

  • 0: Proxy Binding Update accepted
  • 128: Reason unspecified
  • 129: Administratively prohibited
  • 130: Insufficient resources

9. Protocol Configuration Variables ๐ŸŽ€

9.1. Local Mobility Anchor - Configuration Variables ๐ŸŒธ

the local mobility anchor MUST let system management configure the variables below ๐Ÿ’… and those configured values MUST survive server reboots and service restarts, no excuses ๐Ÿ˜ญ

  • MinDelayBeforeBCEDelete: this one is the amount of time in milliseconds the local mobility anchor MUST wait before it deletes a Binding Cache entry of a mobile node, after getting a Proxy Binding Update message from a mobile access gateway with a lifetime value of 0. during that wait, if the local mobility anchor gets a Proxy Binding Update for the same mobility binding with a lifetime value greater than 0, then it must update the binding cache entry with the accepted binding values. by the end of the wait, if the local mobility anchor did not get any valid Proxy Binding Update message for that mobility binding, it MUST delete the Binding Cache entry. this delay basically makes sure a mobile node's Binding Cache entry doesn't get deleted too fast, and gives the new mobile access gateway some time to finish the signaling for the mobile node ๐Ÿซถ

the default value is 10000 milliseconds.

  • MaxDelayBeforeNewBCEAssign: this is the amount of time in milliseconds the local mobility anchor MUST wait for the de-registration message for an existing mobility session before it decides to create a new mobility session.

the default value is 1500 milliseconds.

okay, important bit ๐Ÿ‘€ this value is connected to the retransmission algorithm for Proxy Binding Updates. the retransmissions need to happen before MaxDelayBeforeNewBCEAssign runs out. otherwise, a de-registration from a previous mobile access gateway could get lost, and the local mobility anchor would needlessly create a new mobility session and new prefixes for the mobile node ๐Ÿ’€ this mostly matters when there's no information from the lower layers about the type of handoff or other parameters that could be used to identify the mobility session.

  • TimestampValidityWindow: this is the maximum amount of time difference in milliseconds between the timestamp in the received Proxy Binding Update message and the current time of day on the local mobility anchor, that the local mobility anchor still allows for the received message to count as valid โฑ๏ธ

the default value is 300 milliseconds. this variable must be adjusted to suit the deployments ๐Ÿ“

9.2. Mobile Access Gateway - Configuration Variables ๐Ÿฆ‹

the mobile access gateway MUST let system management configure the variables below, and those configured values MUST survive server reboots and service restarts ๐Ÿ’œ

  • EnableMAGLocalRouting: this flag says whether or not the mobile access gateway is allowed to turn on local routing for the traffic between a visiting mobile node and a correspondent node that's locally connected to one of the mobile access gateway's interfaces. the correspondent node can be another visiting mobile node too, or a local fixed node ๐Ÿงš

the default value for this flag is 0, which means the mobile access gateway MUST reverse tunnel all the traffic to the mobile node's local mobility anchor.

when this flag is set to 1, the mobile access gateway MUST route the traffic locally.

this aspect of local routing MAY be defined as policy on a per mobile basis, and when it's present it takes precedence over this flag โœจ

9.3. Proxy Mobile IPv6 Domain - Configuration Variables ๐ŸŒˆ

all the mobile entities (local mobility anchors and mobile access gateways) in a Proxy Mobile IPv6 domain MUST let system management configure the variables below ๐Ÿ”ฅ those configured values MUST survive server reboots and service restarts too. these variables MUST be globally fixed for a given Proxy Mobile IPv6 domain, so the same values get enforced on every mobility entity in that domain. no mixing and matching ๐Ÿ‘‘

  • TimestampBasedApproachInUse: this flag says whether or not the timestamp-based approach for message ordering is being used in that Proxy Mobile IPv6 domain. when this flag is set to 1, all the mobile access gateways in that domain MUST apply the timestamp-based considerations listed in Section 5.5. when it's set to 0, the sequence-number-based considerations listed in Section 5.5 MUST be applied. the default value is 1, which means the timestamp-based mechanism is in use in that domain ๐ŸŽ€
  • MobileNodeGeneratedTimestampInUse: this flag says whether or not the mobile-node-generated timestamp approach is in use in that Proxy Mobile IPv6 domain. when it's set to 1, the local mobility anchors and mobile access gateways in that domain MUST apply the mobile node generated timestamp considerations specified in Section 5.5.

this flag only matters when the timestamp-based approach is in use. the value for this flag MUST NOT be set to 1 if the value of the TimestampBasedApproachInUse flag is set to 0.

the default value is 0, meaning the mobile node generated timestamp mechanism is not in use in that domain ๐Ÿ™ˆ

  • FixedMAGLinkLocalAddressOnAllAccessLinks: this variable holds the link-local address value that all the mobile access gateways SHOULD use on any of the access links shared with any of the mobile nodes in that domain. if this variable is set to an ALL_ZERO value, that means fixed link-local address mode is not enabled for that domain ๐Ÿ“
  • FixedMAGLinkLayerAddressOnAllAccessLinks: this variable holds the link-layer address value that all the mobile access gateways SHOULD use on any of the access links shared with any of the mobile nodes in that domain. for access technologies where there's no link-layer address, this variable MUST be initialized to an ALL_ZERO value ๐Ÿซถ

10. IANA Considerations ๐Ÿงš

this document defines six new Mobility Header options: the Home Network Prefix Option, Handoff Indicator Option, Access Technology Type Option, Mobile Node Link-layer Identifier Option, Link-local Address Option, and Timestamp Option ๐Ÿ’– they're described in Section 8, and their Type values come from the same numbering space as the other mobility options, as defined in [RFC3775].

the Handoff Indicator Option (Section 8.4 of this document) brings in a brand new Handoff Indicator (HI) numbering space, and this document reserves values 0 to 5 in it. new Handoff Indicator type values get approved through IANA Expert Review ๐Ÿ”ฅ

the Access Technology Type Option (Section 8.5 of this document) brings in a new Access Technology type (ATT) numbering space, and this document reserves values 0 to 5 in it too. new Access Technology type values also get approved through IANA Expert Review ๐ŸŒธ

this document also defines new Binding Acknowledgement status values, described in Section 8.9. the status values MUST be assigned from the same number space used for Binding Acknowledgement status values, as defined in [RFC3775]. the allocated values for each of these status values must be greater than 128 ๐Ÿ‘‘

this document creates a new registry for the flags in the Binding Update message, called the "Binding Update Flags" ๐ŸŽ€ the following flags are reserved:

(A) 0x8000 [RFC3775]
(H) 0x4000 [RFC3775]
(L) 0x2000 [RFC3775]
(K) 0x1000 [RFC3775]
(M) 0x0800 [RFC4140]
(R) 0x0400 [RFC3963]

this document reserves a new flag (P) as follows:

(P) 0x0200

the rest of the values in the 16-bit field are reserved. new values can be assigned by Standards Action or IESG approval ๐Ÿฆ‹

this document also creates a new registry for the flags in the Binding Acknowledgment message, called the "Binding Acknowledgment Flags" ๐Ÿ’œ the following values are reserved:

(K) 0x80 [RFC3775]
(R) 0x40 [RFC3963]

this document reserves a new flag (P) as follows:

(P) 0x20

the rest of the values in the 8-bit field are reserved. new values can be assigned by Standards Action or IESG approval โœจ

11. Security Considerations ๐Ÿ›ก๏ธ

Okay, bestie, so the scary threats to any network-based mobility management protocol are all written up in [RFC4832] ๐Ÿ˜ฐ. This section is where Proxy Mobile IPv6 shows how it protects itself from them. Let's go ๐Ÿ’…

Proxy Mobile IPv6 recommends that the signaling messages, Proxy Binding Update and Proxy Binding Acknowledgement, exchanged between the mobile access gateway and the local mobility anchor be protected using IPsec, using the security association already set up between them ๐Ÿ”. Basically this kills the threats of somebody impersonating the mobile access gateway or the local mobility anchor. Iconic behavior, honestly โœจ

This specification lets a mobile access gateway send binding registration messages on behalf of a mobile node. Now, if there aren't proper authorization checks in place, a malicious node could hijack a mobile node's mobility session or pull off a denial-of-service attack ๐Ÿ˜ฑ Not it! To stop that, this specification requires the local mobility anchor to allow only authorized mobile access gateways that are part of that Proxy Mobile IPv6 domain to send Proxy Binding Update messages on behalf of a mobile node ๐Ÿšซ

Now for the link between the mobile access gateway and the mobile node! This specification requires an established trust between the mobile access gateway and the mobile node, and it requires the mobile node to be authenticated and authorized before it's allowed to access the network ๐ŸŽ€ On top of that, the authentication mechanisms enabled on that access link make sure there's a secure binding between the mobile node's identity and its link-layer address ๐Ÿ”‘ The mobile access gateway can definitively identify the mobile node from the packets it receives on that access link. No sus behavior allowed ๐Ÿ‘‘

Next, the threat from a compromised mobile access gateway ๐Ÿฅ€ Before accepting a Proxy Binding Update message for a given mobile node, the local mobility anchor may check that the mobile node is actually attached to the mobile access gateway that sent that Proxy Binding Update message. This may be done by contacting a trusted entity that is able to track the mobile node's current point of attachment ๐Ÿ•ต๏ธโ€โ™€๏ธ However, the specific details of how to actually do that are outside the scope of this document, so you'd need to look elsewhere for that one ๐Ÿ™ˆ


12. Acknowledgements ๐Ÿซถ

The authors specially thank Jari Arkko, Julien Laganier, Christian Vogt, Dave Thaler, Pasi Eronen, Pete McCann, Brian Haley, Ahmad Muhanna, JinHyeock Choi, and Elwyn Davies for their thorough reviews of this document ๐Ÿ’–

The authors also thank Alex Petrescu, Alice Qinxia, Alper Yegin, Ashutosh Dutta, Behcet Sarikaya, Charles Perkins, Domagoj Premec, Fred Templin, Genadi Velev, George Tsirtsis, Gerardo Giaretta, Henrik Levkowetz, Hesham Soliman, James Kempf, Jean-Michel Combes, John Jason Brzozowski, Jun Awano, John Zhao, Jong-Hyouk Lee, Jonne Soininen, Jouni Korhonen, Kalin Getov, Kilian Weniger, Lars Eggert, Magnus Westerlund, Marco Liebsch, Mohamed Khalil, Nishida Katsutoshi, Pierrick Seite, Phil Roberts, Ralph Droms, Ryuji Wakikawa, Sangjin Jeong, Suresh Krishnan, Tero Kauppinen, Uri Blumenthal, Ved Kafle, Vidya Narayanan, Youn-Hee Han, and many others ๐ŸŒธ for their passionate discussions on the working group mailing list about localized mobility management solutions. Those discussions sparked a lot of the thinking and shaped the document into its current form, and they are acknowledged ๐Ÿ™Œ

The authors also thank Ole Troan, Akiko Hattori, Parviz Yegani, Mark Grayson, Michael Hammer, Vojislav Vucetic, Jay Iyer, Tim Stammers, Bernie Volz, and Josh Littlefield for their input on this document ๐Ÿงš


13. References ๐Ÿ“š

13.1. Normative References

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in IPv6 Specification", RFC 2473, December 1998.
  • [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, September 2001.
  • [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3315, July 2003.
  • [RFC3775] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support in IPv6", RFC 3775, June 2004.
  • [RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The Network Access Identifier", RFC 4282, December 2005.
  • [RFC4283] Patel, A., Leung, K., Khalil, M., Akhtar, H., and K. Chowdhury, "Mobile Node Identifier Option for Mobile IPv6 (MIPv6)", RFC 4283, November 2005.
  • [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, February 2006.
  • [RFC4301] Kent, S. and K. Seo, "Security Architecture for the Internet Protocol", RFC 4301, December 2005.
  • [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC 4303, December 2005.
  • [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, September 2007.

13.2. Informative References

  • [RFC1981] McCann, J., Deering, S., and J. Mogul, "Path MTU Discovery for IP version 6", RFC 1981, August 1996.
  • [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, "Remote Authentication Dial In User Service (RADIUS)", RFC 2865, June 2000.
  • [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. Arkko, "Diameter Base Protocol", RFC 3588, September 2003.
  • [RFC3963] Devarapalli, V., Wakikawa, R., Petrescu, A., and P. Thubert, "Network Mobility (NEMO) Basic Support Protocol", RFC 3963, January 2005.
  • [RFC3971] Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure Neighbor Discovery (SEND)", RFC 3971, March 2005.
  • [RFC4140] Soliman, H., Castelluccia, C., El Malki, K., and L. Bellier, "Hierarchical Mobile IPv6 Mobility Management (HMIPv6)", RFC 4140, August 2005.
  • [RFC4306] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", RFC 4306, December 2005.
  • [RFC4330] Mills, D., "Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI", RFC 4330, January 2006.
  • [RFC4372] Adrangi, F., Lior, A., Korhonen, J., and J. Loughney, "Chargeable User Identity", RFC 4372, January 2006.
  • [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU Discovery", RFC 4821, March 2007.
  • [RFC4830] Kempf, J., "Problem Statement for Network-Based Localized Mobility Management (NETLMM)", RFC 4830, April 2007.
  • [RFC4831] Kempf, J., "Goals for Network-Based Localized Mobility Management (NETLMM)", RFC 4831, April 2007.
  • [RFC4832] Vogt, C. and J. Kempf, "Security Threats to Network-Based Localized Mobility Management (NETLMM)", RFC 4832, April 2007.
  • [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless Address Autoconfiguration", RFC 4862, September 2007.
  • [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy Extensions for Stateless Address Autoconfiguration in IPv6", RFC 4941, September 2007.
  • [RFC5094] Devarapalli, V., Patel, A., and K. Leung, "Mobile IPv6 Vendor Specific Option", RFC 5094, December 2007.
  • [IPV4-PMIP6] Wakikawa, R. and S. Gundavelli, "IPv4 Support for Proxy Mobile IPv6", Work in Progress, May 2008.
  • [DNAV6] Narayanan, S., Ed., "Detecting Network Attachment in IPv6 Networks (DNAv6)", Work in Progress, February 2008.

Appendix A. Proxy Mobile IPv6 Interactions with AAA Infrastructure ๐Ÿ—‚๏ธ

Every mobile node that roams in a Proxy Mobile IPv6 domain is typically identified by an identifier, MN-Identifier ๐Ÿชช That identifier has an associated policy profile, and the profile says which home network prefix(es) the mobile node gets on a per-interface basis, which address configuration modes are permitted, its roaming policy, and other parameters that are essential for providing network-based mobility management service โœจ This information is typically configured in AAA. In some cases, though, the home network prefix(es) may be dynamically assigned to the mobile node's interface after its initial attachment to the Proxy Mobile IPv6 domain over that interface, so they may not be in the mobile node's policy profile at all ๐Ÿคทโ€โ™€๏ธ

The network entities in the Proxy Mobile IPv6 domain, while serving a mobile node, have access to that mobile node's policy profile, and they can query this information using the RADIUS [RFC2865] or DIAMETER [RFC3588] protocols ๐Ÿ“ก


Appendix B. Routing State ๐Ÿ›ค๏ธ

The following section explains the routing state created for a mobile node on the mobile access gateway ๐Ÿ’ซ This routing state reflects only one specific way of implementing things, and one MAY choose to implement it in other ways ๐Ÿฆ‹ The policy-based route defined below acts as a traffic selection rule for routing a mobile node's traffic through a specific tunnel between the mobile access gateway and that mobile node's local mobility anchor, using the specific encapsulation mode that was negotiated.

The example below identifies the routing state for two visiting mobile nodes, MN1 and MN2, along with their respective local mobility anchors, LMA1 and LMA2 ๐Ÿ‘ฏโ€โ™€๏ธ

For all traffic from the mobile node, identified by the mobile node's MAC address, ingress interface, or source prefix (MN-HNP), sent to _ANY_DESTINATION_, route via interface tunnel0, next-hop LMAA.

   +==================================================================+
   |  Packet Source    | Destination Address  | Destination Interface |
   +==================================================================+
   | MAC_Address_MN1,  | _ANY_DESTINATION_    |     Tunnel0           |
   | (IPv6 Prefix or   |----------------------------------------------|
   |  Input Interface) | Locally Connected    |     Tunnel0           |
   +------------------------------------------------------------------+
   | MAC_Address_MN2,  | _ANY_DESTINATION_    |     Tunnel1           |
   + (IPv6 Prefix or   -----------------------------------------------|
   |  Input Interface  | Locally Connected    |     direct            |
   +------------------------------------------------------------------+

                    Example - Policy-Based Route Table
   +==================================================================+
   | Interface | Source Address | Destination Address | Encapsulation |
   +==================================================================+
   | Tunnel0   |   Proxy-CoA    |        LMAA1         | IPv6-in-IPv6 |
   +------------------------------------------------------------------+
   | Tunnel1   |   Proxy-CoA    |        LMAA2         | IPv6-in-IPv6 |
   +------------------------------------------------------------------+

                     Example - Tunnel Interface Table

Authors' Addresses โœจ

Meet the squad! ๐Ÿ’– These are the people who wrote this spec, and how to reach each of them:

Sri Gundavelli (editor)
Cisco
170 West Tasman Drive
San Jose, CA  95134
USA

EMail: sgundave@cisco.com


Kent Leung
Cisco
170 West Tasman Drive
San Jose, CA  95134
USA

EMail: kleung@cisco.com


Vijay Devarapalli
Wichorus
3590 North First Street
San Jose, CA  95134
USA

EMail: vijay@wichorus.com


Kuntal Chowdhury
Starent Networks
30 International Place
Tewksbury, MA

EMail: kchowdhury@starentnetworks.com


Basavaraj Patil
Nokia
6000 Connection Drive
Irving, TX  75039
USA

EMail: basavaraj.patil@nokia.com

Okay, the legal bit, but make it cute ๐ŸŽ€ The copyright line is Copyright (C) The IETF Trust (2008). โœจ

This document is covered by the rights, licenses and restrictions in BCP 78. Except for what BCP 78 says, the authors keep all their rights. ๐Ÿฆ‹

The document and everything in it come "AS IS," and the contributor, the organization they represent or are sponsored by (if any), the Internet Society, the IETF Trust, and the Internet Engineering Task Force all say no to warranties. That covers express and implied ones, including no promise that using the info won't infringe anyone's rights, and no implied promise of merchantability or fitness for a particular purpose. ๐Ÿ’€

Intellectual Property ๐ŸŒธ

The IETF doesn't take a side on whether any intellectual property rights claimed over the tech in this document are valid or how far they reach. It also doesn't say whether a license to those rights is available, and it hasn't made any independent effort to find out what rights exist. ๐Ÿ” If you want the procedures for rights in RFC documents, check BCP 78 and BCP 79. ๐Ÿ“š

Copies of IPR disclosures sent to the IETF Secretariat are a thing, and so are any assurances of licenses, or the results of anyone trying to get a general license or permission to use those proprietary rights. You can find all of that in the IETF online IPR repository at http://www.ietf.org/ipr. ๐Ÿ”ฅ

The IETF also invites anyone to flag any copyrights, patents, patent applications, or other proprietary rights that might cover tech needed to implement this standard. Send that to the IETF at ietf-ipr@ietf.org. ๐Ÿซถ


๐Ÿ“ฆ where this page comes from