RFC 5213
Proxy Mobile IPv6
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 ๐.
Mobile Node's Home Link ๐๏ธ
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 ๐.
Mobile Node Link-layer Identifier (MN-LL-Identifier) ๐
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 ofALL_ZEROis not considered a valid identifier and cannot be used as an interface identifier. NoALL_ZEROfor 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 ๐ฅ
- 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 ๐๏ธ.
- 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 ๐.
- 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 ๐.
- 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๏ธโฃ. - 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 ๐ก๏ธ.
- 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) ๐ค. - 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) ๐คทโโ๏ธ. - 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) ๐ช. - 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 โฑ๏ธ.
- 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) ๐ซ . - 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) ๐ โโ๏ธ. - 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) ๐ต. - 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 ๐ถโโ๏ธ.
- 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) ๐
- 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 ๐ฆ. - 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) ๐ต.
- 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_ZEROvalue), 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 toNOT_AUTHORIZED_FOR_HOME_NETWORK_PREFIX(mobile node not authorized for one or more of the requesting home network prefixes) ๐ท. - 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 ๐ฏ.
- 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 ๐ ๏ธ.
- 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 ๐ฆ.
- 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) โณ
- 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 ๐.
- 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 ๐
- 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. ๐
- 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). ๐งน
- 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. ๐ธ
- 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. โจ
- 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 ๐ซถ
- 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. ๐ โโ๏ธ
- 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. โจ
- 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. ๐
- 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. ๐ธ
- 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). ๐ซ - 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). ๐ - 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.
- 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. ๐ง
5.4.1.2. Mobile Node Link-layer Identifier Option Present in the Request
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. ๐
- 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. ๐
- 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. ๐
- 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. ๐ซถ
- 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
MaxDelayBeforeNewBCEAssignamount 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. โณ
- 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
- 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. ๐
5.4.1.3. Mobile Node Link-layer Identifier Option Not Present in the Request โจ
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 ๐ฆ.
- 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 ๐.
- 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 ๐ธ.
- 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 โ๏ธโจ.
- 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:
- 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 ๐ง.
- 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 ๐.
- 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.
- 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) ๐.
- 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 ๐.
- 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
TimestampValidityWindowamount of time difference) to the local mobility anchor's time-of-day clock. However, if the flagMobileNodeGeneratedTimestampInUseis 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 ๐.
- The timestamp value in the Timestamp option MUST be close enough (within
- If the timestamp value in the received Proxy Binding Update is valid (validity as specified in the above considerations) or if the flag
MobileNodeGeneratedTimestampInUseis 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 ๐. - 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 ๐ฅฒ. - 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:
- 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 ๐.
- An implementation MUST support the Sequence-Number-based scheme, as specified in [RFC3775] ๐ซถ.
- 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-CoAandLMAA. However, when using IPv4 transport, the endpoints of the tunnel areIPv4-LMAAandIPv4-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)orECT(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)orECT(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 toCE๐ฅ. 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 ๐
6.3. Supported Access Link Types
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 ๐.
6.8. Link-local and Global Address Uniqueness
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
- 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 ๐.
- The Proxy Binding Update message MUST include the Mobile Node Identifier option [RFC4283] ๐, carrying the MN-Identifier so the mobile node can be identified.
- 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 ๐
- 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 ๐คทโโ๏ธ.
- 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 ๐ซถ.
- 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. - 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 ๐ โโ๏ธ. - 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 ๐.
- The Link-local Address option MUST be present in the Proxy Binding Update message only if the configuration variable
FixedMAGLinkLocalAddressOnAllAccessLinksis set to a value ofALL_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_ZEROvalue. This basically asks the LMA for the link-local address it can use on the access link shared with the node ๐ฅน.
- 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
- The Proxy Binding Update message MUST be constructed as specified in Section 6.9.1.5 ๐.
- 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:
- 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. ๐ - 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. ๐งพ
- 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. โฑ๏ธ
- 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. ๐
- 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. ๐ฏ
- If the received Proxy Binding Acknowledgement message has any one or more of the following options,
Handoff Indicatoroption,Access Technology Typeoption,Mobile Node Link-layer Identifieroption,Mobile Node Identifieroption, 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. ๐ซ - If the received Proxy Binding Acknowledgement message has the
Statusfield value set toPROXY_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. ๐ฅฒ - If the received Proxy Binding Acknowledgement message has the
Statusfield value set toTIMESTAMP_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. ๐ฐ๏ธ - If the received Proxy Binding Acknowledgement message has the
Statusfield value set toTIMESTAMP_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. ๐ โโ๏ธโฐ - If the received Proxy Binding Acknowledgement message has the
Statusfield value set toNOT_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 toALL_ZERO. ๐ - If the received Proxy Binding Acknowledgement message has the
Statusfield 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. ๐ - If the received Proxy Binding Acknowledgement message has the
Statusfield 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. ๐ - 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. ๐ฃ๏ธ
- 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. ๐ข
- If the received Proxy Binding Acknowledgement message has the address in the
Link-local Addressoption set to aNON_ZEROvalue, 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 theLink-local Addressoption. ๐ซถ
6.9.1.3. Extending Binding Lifetime ๐๐
- 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. โจ
- 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. ๐
- The
Handoff Indicatorfield in theHandoff Indicatoroption 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 ๐๐ธ
- 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. ๐งณ
- 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. ๐ฆ
- The
Handoff Indicatorfield in theHandoff Indicatoroption 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: ๐ฅน
- It MUST remove the Binding Update List entry for the mobile node from its Binding Update List. ๐๏ธ
- It MUST remove the created routing state for tunneling the mobile node's traffic. ๐งน
- 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. ๐ซง
- 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.
- 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 โจ
- 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 ๐
- 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.
- 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 ๐
- 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 ๐ซถ
- 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 ๐ข
- 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
EnableMAGLocalRoutingto 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
6.11. Supporting DHCP-Based Address Configuration on the Access Link โจ
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_Serversmulticast 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-addressfield 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-addressfield 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-addressfield 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 thelink-addressfield 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-addressfield 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")
8.6. Mobile Node Link-layer Identifier Option ๐ชช
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 ๐ โโ๏ธ
8.7. Link-local Address Option ๐
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 nodeNOT_LMA_FOR_THIS_MOBILE_NODE:153: not local mobility anchor for this mobile nodeMAG_NOT_AUTHORIZED_FOR_PROXY_REG:154: the mobile access gateway is not authorized to send proxy binding updatesNOT_AUTHORIZED_FOR_HOME_NETWORK_PREFIX:155: the mobile node is not authorized for one or more of the requesting home network prefixesTIMESTAMP_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 valueMISSING_HOME_NETWORK_PREFIX_OPTION:158: missing home network prefix optionBCE_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 PBUMISSING_MN_IDENTIFIER_OPTION:160: missing mobile node identifier optionMISSING_HANDOFF_INDICATOR_OPTION:161: missing handoff indicator optionMISSING_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 accepted128: Reason unspecified129: Administratively prohibited130: 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 of0. during that wait, if the local mobility anchor gets a Proxy Binding Update for the same mobility binding with a lifetime value greater than0, 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 to1, all the mobile access gateways in that domain MUST apply the timestamp-based considerations listed in Section 5.5. when it's set to0, the sequence-number-based considerations listed in Section 5.5 MUST be applied. the default value is1, 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 to1, 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 anALL_ZEROvalue, 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 anALL_ZEROvalue ๐ซถ
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
Full Copyright Statement ๐
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
- ietf: rfc5213 2008-08
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms