RFC 3344
IP Mobility Support for IPv4
RFC 3344: IP Mobility Support for IPv4 ๐ฆ
Part 1 of 22 ๐
Okay, bestie, the paperwork first ๐ This is RFC 3344, written by C. Perkins, Ed. from the Nokia Research Center. It's a Standards Track doc from the Network Working Group, dated August 2002. It obsoletes RFC 3220. ๐ธ
Status of this Memo โจ
This doc is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited. ๐
Copyright Notice ๐ฅ
Copyright (C) The Internet Society (2002). All Rights Reserved.
Abstract ๐ง
This doc is all about protocol upgrades that let IP datagrams get routed transparently to mobile nodes on the Internet. Each mobile node is always known by its home address, no matter where it's currently plugged in ๐ While it's away from home, a mobile node also has a care-of address, which tells you about its current point of attachment to the Internet. The protocol lets the mobile node register that care-of address with a home agent. The home agent then sends datagrams meant for the mobile node through a tunnel to the care-of address. Once they reach the end of the tunnel, each datagram gets delivered to the mobile node. It's giving magic ๐ชโจ
Contents ๐
1. Introduction 3
1.1. Protocol Requirements . . . . . . . . . . . . . . . . . 4
1.2. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Assumptions . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Applicability . . . . . . . . . . . . . . . . . . . . . 5
1.5. New Architectural Entities . . . . . . . . . . . . . . 5
1.6. Terminology . . . . . . . . . . . . . . . . . . . . . . 6
1.7. Protocol Overview . . . . . . . . . . . . . . . . . . . 9
1.8. Message Format and Protocol Extensibility . . . . . . . 13
1.9. Type-Length-Value Extension Format for Mobile IP
Extensions . . . . . . . . . . . . . . . . . . . . . 15
1.10. Long Extension Format . . . . . . . . . . . . . . . . . 16
1.11. Short Extension Format . . . . . . . . . . . . . . . . 16
2. Agent Discovery 17
2.1. Agent Advertisement . . . . . . . . . . . . . . . . . . 18
2.1.1. Mobility Agent Advertisement Extension . . . . 20
2.1.2. Prefix-Lengths Extension . . . . . . . . . . . 22
2.1.3. One-byte Padding Extension . . . . . . . . . . 22
2.2. Agent Solicitation . . . . . . . . . . . . . . . . . . 23
2.3. Foreign Agent and Home Agent Considerations . . . . . . 23
2.3.1. Advertised Router Addresses . . . . . . . . . . 24
2.3.2. Sequence Numbers and Rollover Handling . . . . 24
2.4. Mobile Node Considerations . . . . . . . . . . . . . . 25
2.4.1. Registration Required . . . . . . . . . . . . . 26
2.4.2. Move Detection . . . . . . . . . . . . . . . . 26
2.4.3. Returning Home . . . . . . . . . . . . . . . . 27
2.4.4. Sequence Numbers and Rollover Handling . . . . 28
3. Registration 28
3.1. Registration Overview . . . . . . . . . . . . . . . . . 29
3.2. Authentication . . . . . . . . . . . . . . . . . . . . 30
3.3. Registration Request . . . . . . . . . . . . . . . . . 30
3.4. Registration Reply . . . . . . . . . . . . . . . . . . 33
3.5. Registration Extensions . . . . . . . . . . . . . . . . 36
3.5.1. Computing Authentication Extension Values . . . 36
3.5.2. Mobile-Home Authentication Extension . . . . . 37
3.5.3. Mobile-Foreign Authentication Extension . . . . 37
3.5.4. Foreign-Home Authentication Extension . . . . . 38
3.6. Mobile Node Considerations . . . . . . . . . . . . . . 38
3.6.1. Sending Registration Requests . . . . . . . . . 40
3.6.2. Receiving Registration Replies . . . . . . . . 44
3.6.3. Registration Retransmission . . . . . . . . . . 47
3.7. Foreign Agent Considerations . . . . . . . . . . . . . 47
3.7.1. Configuration and Registration Tables . . . . . 48
3.7.2. Receiving Registration Requests . . . . . . . . 49
3.7.3. Receiving Registration Replies . . . . . . . . 52
3.8. Home Agent Considerations . . . . . . . . . . . . . . . 54
3.8.1. Configuration and Registration Tables . . . . . 55
3.8.2. Receiving Registration Requests . . . . . . . . 56
3.8.3. Sending Registration Replies . . . . . . . . . 59
4. Routing Considerations 62
4.1. Encapsulation Types . . . . . . . . . . . . . . . . . . 62
4.2. Unicast Datagram Routing . . . . . . . . . . . . . . . 62
4.2.1. Mobile Node Considerations . . . . . . . . . . 62
4.2.2. Foreign Agent Considerations . . . . . . . . . 63
4.2.3. Home Agent Considerations . . . . . . . . . . . 64
4.3. Broadcast Datagrams . . . . . . . . . . . . . . . . . . 66
4.4. Multicast Datagram Routing . . . . . . . . . . . . . . 66
4.5. Mobile Routers . . . . . . . . . . . . . . . . . . . . 67
4.6. ARP, Proxy ARP, and Gratuitous ARP . . . . . . . . . . 69
5. Security Considerations 73
5.1. Message Authentication Codes . . . . . . . . . . . . . 73
5.2. Areas of Security Concern in this Protocol . . . . . . 73
5.3. Key Management . . . . . . . . . . . . . . . . . . . . 74
5.4. Picking Good Random Numbers . . . . . . . . . . . . . . 74
5.5. Privacy . . . . . . . . . . . . . . . . . . . . . . . . 74
5.6. Ingress Filtering . . . . . . . . . . . . . . . . . . . 75
5.7. Replay Protection for Registration Requests . . . . . . 75
5.7.1. Replay Protection using Timestamps . . . . . . 75
5.7.2. Replay Protection using Nonces . . . . . . . . 77
6. IANA Considerations 77
6.1. Mobile IP Message Types . . . . . . . . . . . . . . . . 78
6.2. Extensions to RFC 1256 Router Advertisement . . . . . . 78
6.3. Extensions to Mobile IP Registration Messages . . . . . 79
6.4. Code Values for Mobile IP Registration Reply
Messages. . . . . . . . . . . . . . . . . . . . . . 79
7. Acknowledgments 80
A. Patent Issues 82
B. Link-Layer Considerations 82
C. TCP Considerations 83
C.1. TCP Timers . . . . . . . . . . . . . . . . . . . . . . 83
C.2. TCP Congestion Management . . . . . . . . . . . . . . . 83
D. Example Scenarios 84
D.1. Registering with a Foreign Agent Care-of Address . . . 84
D.2. Registering with a Co-Located Care-of Address . . . . . 84
D.3. Deregistration . . . . . . . . . . . . . . . . . . . . 85
E. Applicability of Prefix-Lengths Extension 86
F. Interoperability Considerations 86
G. Changes since RFC 2002 87
G.1. Major Changes . . . . . . . . . . . . . . . . . . . . . 87
G.2. Minor Changes . . . . . . . . . . . . . . . . . . . . . 89
G.3. Changes since revision 04 of RFC2002bis . . . . . . . . 91
H. Example Messages 92
H.1. Example ICMP Agent Advertisement Message Format . . . . 92
H.2. Example Registration Request Message Format . . . . . . 93
H.3. Example Registration Reply Message Format . . . . . . . 94
References . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 98
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . 99
1. Introduction โจ
Okay so IP version 4 assumes that a node's IP address uniquely identifies where that node is plugged into the Internet ๐ That means a node MUST be located on the network its IP address points to, or else datagrams meant for it are undeliverable. ๐ So if a node wants to change its point of attachment and still be able to talk, currently one of these two mechanisms MUST typically be employed:
- a) the node MUST change its IP address whenever it changes its point of attachment, or
- b) host-specific routes MUST be propagated throughout much of the Internet routing fabric.
Both of these are often unacceptable ๐ญ The first one makes it impossible for a node to keep its transport and higher-layer connections alive when it changes location. The second one has obvious and severe scaling problems, especially considering the explosive growth in sales of notebook (mobile) computers ๐
A new, scalable mechanism is REQUIRED for accommodating node mobility within the Internet. This document defines exactly that: a mechanism that lets nodes change their point of attachment to the Internet without changing their IP address. Main character energy ๐
Changes between this revised specification for Mobile IP and the original specifications (see [33, 32, 34, 43, 8]) are detailed in the appendix section G. ๐
1.1. Protocol Requirements ๐
A mobile node MUST be able to communicate with other nodes after changing its link-layer point of attachment to the Internet, yet without changing its IP address. ๐ฆ
A mobile node MUST be able to communicate with other nodes that do not implement these mobility functions. No protocol enhancements are REQUIRED in hosts or routers that are not acting as any of the new architectural entities introduced in Section 1.5. ๐ธ
All messages used to update another node as to the location of a mobile node MUST be authenticated in order to protect against remote redirection attacks. Lowkey the most important rule in this whole section ๐ฅ
1.2. Goals ๐ง
The link by which a mobile node is directly attached to the Internet may often be a wireless link. This link may thus have a substantially lower bandwidth and higher error rate than traditional wired networks. Moreover, mobile nodes are likely to be battery powered, and minimizing power consumption is important. Therefore, the number of administrative messages sent over the link by which a mobile node is directly attached to the Internet SHOULD be minimized, and the size of these messages SHOULD be kept as small as is reasonably possible. Battery life is literally everything ๐๐
1.3. Assumptions ๐
The protocols defined in this document place no additional constraints on the assignment of IP addresses. That is, a mobile node can be assigned an IP address by the organization that owns the machine. No drama, no extra hoops โจ
This protocol assumes that mobile nodes will generally not change their point of attachment to the Internet more frequently than once per second. ๐
This protocol assumes that IP unicast datagrams are routed based on the destination address in the datagram header (and not, for example, by source address). It's giving destination-address energy only ๐
1.4. Applicability
Okay so, Mobile IP is built to let nodes hop from one IP subnet to another ๐ฆ It's just as slay for moving across the same kind of network as it is for moving across different kinds. Mobile IP makes it easy to go from one Ethernet segment to another, and it's equally happy when you go from an Ethernet segment to a wireless LAN, as long as the mobile node's IP address stays the same after the move โจ
One way to think about it is that Mobile IP handles the "macro" mobility management problem ๐ธ It's less of a fit for "micro" mobility management stuff, like handing off between wireless transceivers that each only cover a tiny area ๐ As long as the node doesn't move between points of attachment on different IP subnets, link-layer mechanisms for mobility (aka link-layer handoff) may be faster to converge and way less overhead than Mobile IP ๐
1.5. New Architectural Entities
Mobile IP brings in these new functional entities ๐ง
Mobile Node
A host or router that changes its point of attachment from one network or subnetwork to another. A mobile node may change its location without changing its IP address. It can keep talking to other Internet nodes from any location using its (constant) IP address, assuming link-layer connectivity to a point of attachment is available ๐
Home Agent
A router on a mobile node's home network that tunnels datagrams for delivery to the mobile node when it's away from home, and keeps current location information for the mobile node ๐
Foreign Agent
A router on a mobile node's visited network that provides routing services to the mobile node while it's registered. The foreign agent detunnels and delivers datagrams to the mobile node that were tunneled by the mobile node's home agent. For datagrams sent by a mobile node, the foreign agent may serve as a default router for registered mobile nodes ๐
A mobile node gets a long-term IP address on a home network. This home address is administered the same way a "permanent" IP address is given to a stationary host, so it's very much a forever-address energy ๐ When the node is away from its home network, a "care-of address" is associated with the mobile node and reflects its current point of attachment. The mobile node uses its home address as the source address of all IP datagrams that it sends, except where this document describes otherwise for datagrams sent for certain mobility management functions (e.g., as in Section 3.6.1.1) ๐ซถ
1.6. Terminology
Okay this is the glossary bit, but make it cute ๐ 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 [4]. ๐
Also, this document uses the following terms a lot ๐
Authorization-enabling extension
An authentication which makes a (registration) message acceptable to the ultimate recipient of the registration message. An authorization-enabling extension MUST contain an SPI ๐ฅ
In this document, every use of authorization-enabling extension refers to authentication extensions that make the Registration Request message acceptable to the home agent. Using additional protocol structures specified outside of this document, it may be possible for the mobile node to provide authentication of its registration to the home agent, by way of another authenticating entity within the network that the home agent accepts (for example, see RFC 2794 [6]) ๐ฆ
Agent Advertisement
An advertisement message built by attaching a special Extension to a router advertisement [10] message ๐ฃ
Authentication
The process of verifying (using cryptographic techniques, for all applications in this specification) the identity of the originator of a message ๐
Care-of Address
The termination point of a tunnel toward a mobile node, for datagrams forwarded to the mobile node while it's away from home. The protocol can use two different types of care-of address: a "foreign agent care-of address" is an address of a foreign agent with which the mobile node is registered, and a "co-located care-of address" is an externally obtained local address which the mobile node has associated with one of its own network interfaces ๐ก
Correspondent Node
A peer with which a mobile node is communicating. A correspondent node may be either mobile or stationary ๐ค
Foreign Network
Any network other than the mobile node's Home Network ๐
Gratuitous ARP
An ARP packet sent by a node in order to spontaneously cause other nodes to update an entry in their ARP cache [45]. See section 4.6 ๐ฎ
Home Address
An IP address that is assigned for an extended period of time to a mobile node. It stays unchanged no matter where the node is attached to the Internet ๐
Home Network
A network, possibly virtual, having a network prefix matching that of a mobile node's home address. Note that standard IP routing mechanisms will deliver datagrams destined to a mobile node's Home Address to the mobile node's Home Network ๐ โจ
Link
A facility or medium over which nodes can communicate at the link layer. A link underlies the network layer ๐
Link-Layer Address
The address used to identify an endpoint of some communication over a physical link. Typically, the Link-Layer address is an interface's Media Access Control (MAC) address ๐ชช
Mobility Agent
Either a home agent or a foreign agent ๐งโโ๏ธ
Mobility Binding
The association of a home address with a care-of address, along with the remaining lifetime of that association โณ
Mobility Security Association
A collection of security contexts, between a pair of nodes, which may be applied to Mobile IP protocol messages exchanged between them. Each context indicates an authentication algorithm and mode (Section 5.1), a secret (a shared key, or appropriate public/private key pair), and a style of replay protection in use (Section 5.7) ๐
Node
A host or a router ๐ป
Nonce
A randomly chosen value, different from previous choices, inserted in a message to protect against replays ๐ฒ
Security Parameter Index (SPI)
An index identifying a security context between a pair of nodes among the contexts available in the Mobility Security Association. SPI values 0 through 255 are reserved and MUST NOT be used in any Mobility Security Association. Hard rule, bestie ๐ซ
Tunnel
The path followed by a datagram while it is encapsulated. The model is that, while it's encapsulated, a datagram is routed to a knowledgeable decapsulating agent, which decapsulates the datagram and then correctly delivers it to its ultimate destination ๐
Virtual Network
A network with no physical instantiation beyond a router (with a physical network interface on another network). The router (e.g., a home agent) generally advertises reachability to the virtual network using conventional routing protocols ๐
Visited Network
A network other than a mobile node's Home Network, to which the mobile node is currently connected ๐ฌ
Visitor List
The list of mobile nodes visiting a foreign agent ๐
1.7. Protocol Overview โจ
okay so Mobile IP has three support services, bestie ๐ง
- Agent Discovery ๐: home agents and foreign agents can advertise that they're around on each link they serve. A newly arrived mobile node can send a solicitation on the link to find out if any prospective agents are there ๐
- Registration ๐: when the mobile node is away from home, it registers its care-of address with its home agent. Depending on how it's attached, it either registers directly with the home agent, or through a foreign agent that forwards the registration along ๐
- silently discard ๐คซ: the implementation drops the datagram without any further processing and doesn't report an error back to the sender. It SHOULD be able to log the error, including the contents of the discarded datagram, and SHOULD record the event in a statistics counter.
here's the rough step-by-step of how Mobile IP works ๐
- Mobility agents (foreign agents and home agents) advertise their presence through Agent Advertisement messages (Section 2). A mobile node can optionally ask any locally attached mobility agents for one by sending an Agent Solicitation message.
- The mobile node gets these Agent Advertisements and figures out whether it's on its home network or a foreign one.
- When it realizes it's on its home network, it just operates without mobility services ๐ . If it's coming back home after being registered somewhere else, it deregisters with its home agent by exchanging a Registration Request and Registration Reply message with it.
- When it moves to a foreign network, it gets a care-of address on that network. That address can be a foreign agent care-of address (taken from the foreign agent's advertisements), or come from some external assignment mechanism such as DHCP [13] (a co-located care-of address) ๐
- The mobile node operating away from home then registers its new care-of address with its home agent through a Registration Request and Registration Reply exchange. It might do this via a foreign agent (Section 3) โจ
- Datagrams sent to the mobile node's home address get intercepted by its home agent, tunneled by the home agent to the care-of address, received at the tunnel endpoint (either the foreign agent or the mobile node itself), and then delivered to the mobile node (Section 4.2.3) ๐ฆ
- In the other direction, datagrams from the mobile node usually go to their destination through standard IP routing, and they don't necessarily pass through the home agent ๐
when the mobile node is away from home, Mobile IP uses protocol tunneling to hide its home address from the routers in between its home network and where it currently is ๐ The tunnel ends at the mobile node's care-of address. The care-of address has to be an address that datagrams can reach through conventional IP routing. Once there, the original datagram is pulled out of the tunnel and delivered to the mobile node ๐
Mobile IP gives you two options for getting a care-of address ๐
- a) A "foreign agent care-of address" is a care-of address that a foreign agent hands out through its Agent Advertisement messages. In this case, the care-of address is an IP address of the foreign agent. The foreign agent is the tunnel endpoint, so when it gets tunneled datagrams, it decapsulates them and delivers the inner datagram to the mobile node. This mode is preferred because lots of mobile nodes can share the same care-of address, so it doesn't put unnecessary pressure on the already limited IPv4 address space ๐ง
- b) A "co-located care-of address" is a care-of address the mobile node acquires as a local IP address through some external means, which it then associates with one of its own network interfaces. The address might be dynamically acquired as a temporary address by the mobile node, such as through DHCP [13], or it might be a long-term address the mobile node owns and only uses while visiting some foreign network. Specific external methods of acquiring a local IP address for use as a co-located care-of address are beyond the scope of this document. When a co-located care-of address is in use, the mobile node is the tunnel endpoint and decapsulates the datagrams tunneled to it itself ๐
the co-located mode has the perk that a mobile node can work without a foreign agent, for example in networks that haven't deployed one yet ๐ BUT it does add extra strain on the IPv4 address space, because a pool of addresses in the foreign network has to be made available to visiting mobile nodes. And it's hard to efficiently maintain address pools for every subnet that a mobile node might visit ๐ญ
the care-of address and the foreign agent are NOT the same thing, so don't mix them up ๐ The care-of address is just the endpoint of the tunnel. It might be a foreign agent's address (a foreign agent care-of address), or it might be an address the mobile node temporarily picked up (a co-located care-of address). A foreign agent, on the other hand, is a mobility agent that provides services to mobile nodes. See Sections 3.7 and 4.2.2 for more details.
here's figure 1, which shows how datagrams get routed to and from a mobile node that's away from home, once it has registered with its home agent. In this figure, the mobile node is using a foreign agent care-of address, not a co-located one ๐ผ๏ธ
2) Datagram is intercepted 3) Datagram is
by home agent and detunneled and
is tunneled to the delivered to the
care-of address. mobile node.
+-----+ +-------+ +------+
|home | =======> |foreign| ------> |mobile|
|agent| | agent | <------ | node |
+-----+ +-------+ +------+
1) Datagram to /|\ /
mobile node | / 4) For datagrams sent by the
arrives on | / mobile node, standard IP
home network | / routing delivers each to its
via standard | |_ destination. In this figure,
IP routing. +----+ the foreign agent is the
|host| mobile node's default router.
+----+
Figure 1: Operation of Mobile IPv4
a home agent MUST be able to attract and intercept datagrams destined for the home address of any of its registered mobile nodes ๐งฒ Using the proxy and gratuitous ARP mechanisms described in Section 4.6, this requirement can be met if the home agent has a network interface on the link indicated by the mobile node's home address. Other placements of the home agent relative to the mobile node's home location MAY also be possible, using other mechanisms for intercepting datagrams destined to the mobile node's home address. But those placements are beyond the scope of this document ๐ธ
same energy for the foreign agent ๐ซถ A mobile node and a prospective or current foreign agent MUST be able to exchange datagrams without relying on standard IP routing mechanisms. That means the mechanisms that make forwarding decisions based on the network prefix of the destination address in the IP header. This requirement can be met if the foreign agent and the visiting mobile node have an interface on the same link. In that case, they just skip their normal IP routing when sending datagrams to each other, and address the underlying link-layer packets to their respective link-layer addresses. Other placements of the foreign agent relative to the mobile node MAY also be possible, using other mechanisms to exchange datagrams between these nodes, but those placements are beyond the scope of this document ๐
last one, and it's important ๐ค If a mobile node is using a co-located care-of address (as described in (b) above), the mobile node MUST be located on the link identified by the network prefix of this care-of address. Otherwise, datagrams destined to the care-of address would be undeliverable ๐
1.8. Message Format and Protocol Extensibility ๐
okay so Mobile IP has its own set of brand new control messages ๐ They get sent with UDP [37] on the well-known port number 434. Only two message types are defined in this document:
1 Registration Request
3 Registration Reply
Up-to-date values for the message types for Mobile IP control messages are specified in the most recent "Assigned Numbers" [40] โจ
For Agent Discovery, Mobile IP also borrows the Router Advertisement and Router Solicitation messages that already exist for ICMP Router Discovery [10] ๐ฆ
Mobile IP also has a general Extension mechanism so optional information can ride along inside Mobile IP control messages or ICMP Router Discovery messages. Some extensions are encoded in the simple Type-Length-Value format from Section 1.9 ๐ซถ
Extensions can carry variable amounts of information in each datagram. The end of the list of Extensions is marked by the total length of the IP datagram ๐
Mobile IP uses two separate sets of numbering spaces for allocating Extension Type values, and these sets are kept apart from each other ๐
- The first set is for Extensions that may appear only in Mobile IP control messages (the ones sent to and from UDP port number 434). In this document, these Types are defined for Extensions appearing in Mobile IP control messages:
32 Mobile-Home Authentication
33 Mobile-Foreign Authentication
34 Foreign-Home Authentication
- The second set is for Extensions that may appear only in ICMP Router Discovery messages [10]. In this document, these Types are defined for Extensions appearing in ICMP Router Discovery messages:
0 One-byte Padding (encoded with no Length nor Data field)
16 Mobility Agent Advertisement
19 Prefix-Lengths
Every individual Extension gets its own detailed section later in this document. Up-to-date values for these Extension Type numbers are specified in the most recent "Assigned Numbers" [40] ๐
Because these two sets are separate (orthogonal), two Extensions defined at a later date could end up with identical Type values, as long as one is only used in Mobile IP control messages and the other is only used in ICMP Router Discovery messages. It's giving "different lanes, same number" ๐ฃ๏ธ
The type field in the Mobile IP extension structure can support up to 255 uniquely identifiable extensions, both skippable and not skippable ๐ข When an Extension numbered in either of these sets within the range 0 through 127 is encountered but not recognized, the message containing that Extension MUST be silently discarded. When an Extension numbered in the range 128 through 255 is encountered and not recognized, that particular Extension is ignored, but the rest of the Extensions and message data MUST still be processed. The Length field of the Extension is used to skip the Data field when searching for the next Extension ๐
Unless additional structure is used for the extension types, new developments or additions to Mobile IP might need so many new extensions that the space for extension types runs out ๐ญ Two new extension structures are proposed to solve this. Certain types of extensions can be grouped together, using subtypes to identify the exact extension, the same way the Generic Authentication Keys extensions [35] do it. In many cases this can slow down how fast new values of the type field get allocated ๐
Since the new extension structures make much more efficient use of the extension type space, it is recommended that new Mobile IP extensions follow one of the two new extension formats whenever related extensions could be grouped together ๐ง
The following subsections describe three distinct structures for Mobile IP extensions:
- The simple extension format
- The long extension format
- The short extension format
1.9. Type-Length-Value Extension Format for Mobile IP Extensions ๐ธ
The Type-Length-Value format shown in figure 2 is used for extensions specified in this document. This simple extension structure doesn't encourage the most efficient use of the extension type space, so it is recommended that new Mobile IP extensions follow one of the two new extension formats in sections 1.10 or 1.11 whenever related extensions could be grouped together ๐
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Type | Length | Data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Figure 2: Type-Length-Value extension format for Mobile IPv4
- Type indicates the particular type of Extension.
- Length indicates the length (in bytes) of the data field within this Extension. The length does NOT include the Type and Length bytes.
- Data is the particular data associated with this Extension. This field may be zero or more bytes in length. The format and length of the data field are determined by the type and length fields.
1.10. Long Extension Format ๐ฆ
This format is for non-skippable extensions that carry more than 256 bytes of information.
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 | Sub-Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data .....
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Long Extension format requires that the following fields be specified as the first fields of the extension:
- Type is the type, which describes a collection of extensions that share a common data type.
- Sub-Type is a unique number given to each member of the aggregated type.
- Length indicates the length (in bytes) of the data field within this Extension. It does NOT include the Type, Length and Sub-Type bytes.
- Data is the data associated with the subtype of this extension. This specification does not place any additional structure on the subtype data.
Since the Length field is 16 bits wide, the extension data can exceed 256 bytes in length ๐
1.11. Short Extension Format ๐
This format is compatible with the skippable extensions defined in section 1.9. It isn't meant for extensions that need more than 256 bytes of data. For those, use the format described in section 1.10 ๐ โโ๏ธ
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 | Sub-Type | Data ....
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Short Extension format requires that the following fields be specified as the first fields of the extension:
- Type is the type, which describes a collection of extensions that share a common data type.
- Sub-Type is a unique number given to each member of the aggregated type.
- Length is an 8-bit unsigned integer. It is the length of the extension, in bytes, excluding the extension Type and extension Length fields. This field MUST be set to 1 plus the total length of the data field.
- Data is the data associated with this extension. This specification does not place any additional structure on the subtype data.
2. Agent Discovery ๐
Agent Discovery is how a mobile node figures out whether it is currently connected to its home network or to a foreign network ๐ It's also how a mobile node can tell when it has moved from one network to another. When it's connected to a foreign network, the methods in this section also let the mobile node find out the foreign agent care-of address offered by each foreign agent on that network ๐
Mobile IP extends ICMP Router Discovery [10] as its main mechanism for Agent Discovery. An Agent Advertisement is made by including a Mobility Agent Advertisement Extension in an ICMP Router Advertisement message (Section 2.1). An Agent Solicitation message is the same as an ICMP Router Solicitation, except that its IP TTL MUST be set to 1 (Section 2.2). This section describes the message formats and the procedures that mobile nodes, foreign agents, and home agents use together to make Agent Discovery work โจ
Agent Advertisement and Agent Solicitation may not be needed for link layers that already provide this functionality ๐ซถ How mobile nodes set up link-layer connections with prospective agents is outside the scope of this document (but see Appendix B). The procedures below assume that this link-layer connectivity has already been established.
No authentication is required for Agent Advertisement and Agent Solicitation messages ๐ They MAY be authenticated using the IP Authentication Header [22], which is unrelated to the messages described in this document. Further specification of how Advertisement and Solicitation messages may be authenticated is outside the scope of this document ๐
2.1. Agent Advertisement
okay so Agent Advertisements are how a mobility agent shows off its services on a link ๐ Mobile nodes read these to figure out where they currently are on the Internet ๐ธ An Agent Advertisement is basically an ICMP Router Advertisement with a glow-up: it also carries a Mobility Agent Advertisement Extension (Section 2.1.1) and, optionally, a Prefix-Lengths Extension (Section 2.1.2), a One-byte Padding Extension (Section 2.1.3), or other Extensions that might be defined in the future โจ
ok so within an Agent Advertisement, the ICMP Router Advertisement fields have to follow some extra specs too ๐ no skipping!
- Link-Layer Fields ๐
- Destination Address: The link-layer destination address of a unicast Agent Advertisement MUST be the same as the source link-layer address of the Agent Solicitation which prompted the Advertisement.
- IP Fields ๐
- TTL: The TTL for all Agent Advertisements MUST be set to 1.
- Destination Address: As specified for ICMP Router Discovery [10], the IP destination address of an multicast Agent Advertisement MUST be either the "all systems on this link" multicast address (
224.0.0.1) [11] or the "limited broadcast" address (255.255.255.255). The subnet-directed broadcast address of the form<prefix>.<-1>cannot be used since mobile nodes will not generally know the prefix of the foreign network. When the Agent Advertisement is unicast to a mobile node, the IP home address of the mobile node SHOULD be used as the Destination Address.
- ICMP Fields ๐งพ
- Code: The Code field of the agent advertisement is interpreted as follows:
0: The mobility agent handles common traffic. That is, it acts as a router for IP datagrams not necessarily related to mobile nodes.16: The mobility agent does not route common traffic. However, all foreign agents MUST (minimally) forward to a default router any datagrams received from a registered mobile node (Section 4.2.2).
- Lifetime: The maximum length of time that the Advertisement is considered valid in the absence of further Advertisements.
- Router Address(es): See Section 2.3.1 for a discussion of the addresses that may appear in this portion of the Agent Advertisement.
- Num Addrs: The number of Router Addresses advertised in this message. Note that in an Agent Advertisement message, the number of router addresses specified in the ICMP Router Advertisement portion of the message MAY be set to 0. See Section 2.3.1 for details.
- Code: The Code field of the agent advertisement is interpreted as follows:
If sent periodically, the nominal interval at which Agent Advertisements are sent SHOULD be no longer than 1/3 of the advertisement Lifetime given in the ICMP header. This interval MAY be shorter than 1/3 the advertised Lifetime. This allows a mobile node to miss three successive advertisements before deleting the agent from its list of valid agents. The actual transmission time for each advertisement SHOULD be slightly randomized [10] in order to avoid synchronization and subsequent collisions with other Agent Advertisements that may be sent by other agents (or with other Router Advertisements sent by other routers). Note that this field has no relation to the "Registration Lifetime" field within the Mobility Agent Advertisement Extension defined below. ๐ฆ
2.1.1. Mobility Agent Advertisement Extension
the Mobility Agent Advertisement Extension follows the ICMP Router Advertisement fields ๐ It's how an ICMP Router Advertisement message tells everyone it's also an Agent Advertisement being sent by a mobility agent. 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 | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Registration Lifetime |R|B|H|F|M|G|r|T| reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| zero or more Care-of Addresses |
| ... |
- Type:
16 - Length:
(6 + 4*N), where 6 accounts for the number of bytes in the Sequence Number, Registration Lifetime, flags, and reserved fields, and N is the number of care-of addresses advertised. - Sequence Number: The count of Agent Advertisement messages sent since the agent was initialized (Section 2.3.2).
- Registration Lifetime: The longest lifetime (measured in seconds) that this agent is willing to accept in any Registration Request. A value of
0xffffindicates infinity. This field has no relation to the "Lifetime" field within the ICMP Router Advertisement portion of the Agent Advertisement. - R: Registration required. Registration with this foreign agent (or another foreign agent on this link) is required even when using a co-located care-of address.
- B: Busy. The foreign agent will not accept registrations from additional mobile nodes.
- H: Home agent. This agent offers service as a home agent on the link on which this Agent Advertisement message is sent.
- F: Foreign agent. This agent offers service as a foreign agent on the link on which this Agent Advertisement message is sent.
- M: Minimal encapsulation. This agent implements receiving tunneled datagrams that use minimal encapsulation [34].
- G: GRE encapsulation. This agent implements receiving tunneled datagrams that use GRE encapsulation [16].
- r: Sent as zero; ignored on reception. SHOULD NOT be allocated for any other uses.
- T: Foreign agent supports reverse tunneling [27].
- reserved: Sent as zero; ignored on reception.
- Care-of Address(es): The advertised foreign agent care-of address(es) provided by this foreign agent. An Agent Advertisement MUST include at least one care-of address if the 'F' bit is set. The number of care-of addresses present is determined by the Length field in the Extension.
A home agent MUST always be prepared to serve the mobile nodes for which it is the home agent. A foreign agent may at times be too busy to serve additional mobile nodes; even so, it must continue to send Agent Advertisements, so that any mobile nodes already registered with it will know that they have not moved out of range of the foreign agent and that the foreign agent has not failed. A foreign agent may indicate that it is "too busy" to allow new mobile nodes to register with it, by setting the 'B' bit in its Agent Advertisements. An Agent Advertisement message MUST NOT have the 'B' bit set if the 'F' bit is not also set. Furthermore, at least one of the 'F' bit and the 'H' bit MUST be set in any Agent Advertisement message sent.
When a foreign agent wishes to require registration even from those mobile nodes which have acquired a co-located care-of address, it sets the 'R' bit to one. Because this bit applies only to foreign agents, an agent MUST NOT set the 'R' bit to one unless the 'F' bit is also set to one. ๐ซถ
2.1.2. Prefix-Lengths Extension
the Prefix-Lengths Extension MAY follow the Mobility Agent Advertisement Extension ๐ง It tells you how many bits of network prefix apply to each Router Address listed in the ICMP Router Advertisement portion of the Agent Advertisement. Heads up: the prefix lengths given DO NOT apply to care-of address(es) listed in the Mobility Agent Advertisement Extension. The Prefix-Lengths Extension looks like this:
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 | Prefix Length | ....
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Type:
19(Prefix-Lengths Extension) - Length:
N, where N is the value (possibly zero) of the Num Addrs field in the ICMP Router Advertisement portion of the Agent Advertisement. - Prefix Length(s): The number of leading bits that define the network number of the corresponding Router Address listed in the ICMP Router Advertisement portion of the message. The prefix length for each Router Address is encoded as a separate byte, in the order that the Router Addresses are listed in the ICMP Router Advertisement portion of the message.
See Section 2.4.2 for information about how the Prefix-Lengths Extension MAY be used by a mobile node when determining whether it has moved. See Appendix E for implementation details about the use of this Extension. ๐
2.1.3. One-byte Padding Extension
some IP protocol implementations insist on padding ICMP messages to an even number of bytes ๐ If the ICMP length of an Agent Advertisement is odd, this Extension MAY be included to make the ICMP length even. Note that this Extension is NOT intended to be a general-purpose Extension for word- or long-aligning the various fields of the Agent Advertisement. An Agent Advertisement SHOULD NOT include more than one One-byte Padding Extension, and if present, this Extension SHOULD be the last Extension in the Agent Advertisement.
Unlike other Extensions used in Mobile IP, the One-byte Padding Extension is encoded as a single byte, with no "Length" nor "Data" field present. Here's the layout:
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| Type |
+-+-+-+-+-+-+-+-+
- Type:
0(One-byte Padding Extension)
2.2. Agent Solicitation
an Agent Solicitation is identical to an ICMP Router Solicitation ๐ with the extra rule that the IP TTL Field MUST be set to 1. ๐
2.3. Foreign Agent and Home Agent Considerations โจ
okay bestie, so any mobility agent that can't be found by a link-layer protocol MUST send Agent Advertisements ๐ฃ. An agent that can be found by a link-layer protocol SHOULD also implement Agent Advertisements ๐
. The advertisements don't have to actually go out, though, except when site policy requires registration with the agent (aka the 'R' bit is set) or when they're a response to a specific Agent Solicitation ๐ซถ. All mobility agents MUST process packets addressed to the Mobile-Agents multicast group at address 224.0.0.11 ๐. A mobile node MAY send an Agent Solicitation to 224.0.0.11 ๐ฆ. All mobility agents SHOULD respond to Agent Solicitations ๐.
The same procedures, defaults, and constants are used for Agent Advertisement messages and Agent Solicitation messages as for ICMP Router Discovery [10], with a few plot twists ๐:
- a mobility agent MUST limit the rate at which it sends broadcast or multicast Agent Advertisements; the maximum rate SHOULD be chosen so that the Advertisements do not eat a significant amount of network bandwidth, AND
- a mobility agent that receives a Router Solicitation MUST NOT require that the IP Source Address is the address of a neighbor (i.e., an address that matches one of the router's own addresses on the arrival interface, under the subnet mask associated with that address of the router). ๐
- a mobility agent MAY be configured to send Agent Advertisements only in response to an Agent Solicitation message. โจ
If the home network is not a virtual network, then the home agent for any mobile node SHOULD be located on the link identified by the mobile node's home address, and Agent Advertisement messages sent by the home agent on this link MUST have the 'H' bit set. This is the whole point ๐ : mobile nodes on their own home network can figure out that they are indeed at home. Any Agent Advertisement messages sent by the home agent on another link it may be attached to (if it is a mobility agent serving more than one link) MUST NOT have the 'H' bit set, unless the home agent also serves as a home agent (to other mobile nodes) on that other link. A mobility agent MAY use different settings for each of the 'R', 'H', and 'F' bits on different network interfaces. ๐ง
If the home network is a virtual network, the home network has no physical realization external to the home agent itself. So there's no physical network link to send Agent Advertisement messages on to advertise the home agent. Mobile nodes whose home network is this are always treated as being away from home ๐ฅฒ.
On a particular subnet, either all mobility agents MUST include the Prefix-Lengths Extension or all of them MUST NOT include this Extension. It is prohibited for some agents on a given subnet to include the Extension while others don't ๐ซ. Otherwise, one of the move detection algorithms designed for mobile nodes will not function properly (Section 2.4.2). ๐
2.3.1. Advertised Router Addresses
The ICMP Router Advertisement portion of the Agent Advertisement MAY contain one or more router addresses ๐. An agent SHOULD only put its own addresses, if any, in the advertisement. Whether or not its own address appears in the Router Addresses, a foreign agent MUST route datagrams it receives from registered mobile nodes (Section 4.2.2). ๐
2.3.2. Sequence Numbers and Rollover Handling
The sequence number in Agent Advertisements ranges from 0 to 0xffff ๐ข. After booting, an agent MUST use the number 0 for its first advertisement. Each subsequent advertisement MUST use the sequence number one greater, with the exception that the sequence number 0xffff MUST be followed by sequence number 256. This is how mobile nodes can tell apart a drop in the sequence number that happens after a reboot from a drop that's just rollover after it hits 0xffff ๐ง โจ.
2.4. Mobile Node Considerations ๐ฑ
Every mobile node MUST implement Agent Solicitation. Solicitations SHOULD only be sent in the absence of Agent Advertisements and when a care-of address has not been determined through a link-layer protocol or other means ๐. The mobile node uses the same procedures, defaults, and constants for Agent Solicitation as for ICMP Router Solicitation messages [10], except that the mobile node MAY solicit more often than once every three seconds, and that a mobile node that is currently not connected to any foreign agent MAY solicit more times than MAX_SOLICITATIONS ๐
.
The rate at which a mobile node sends Solicitations MUST be limited by the mobile node. The mobile node MAY send three initial Solicitations at a maximum rate of one per second while searching for an agent. After this, the rate at which Solicitations are sent MUST be reduced so as to limit the overhead on the local link. Subsequent Solicitations MUST be sent using a binary exponential backoff mechanism, doubling the interval between consecutive Solicitations, up to a maximum interval. The maximum interval SHOULD be chosen appropriately based upon the characteristics of the media over which the mobile node is soliciting. This maximum interval SHOULD be at least one minute between Solicitations โณ. Okay, the vibe here is "don't spam, babe" ๐.
While still searching for an agent, the mobile node MUST NOT increase the rate at which it sends Solicitations unless it has received a positive indication that it has moved to a new link. After successfully registering with an agent, the mobile node SHOULD also increase the rate at which it will send Solicitations when it next begins searching for a new agent to register with. The increased solicitation rate MAY revert to the maximum rate, but then MUST be limited in the manner described above. In all cases, the recommended solicitation intervals are nominal values. Mobile nodes MUST randomize their solicitation times around these nominal values as specified for ICMP Router Discovery [10] ๐ฒ.
Mobile nodes MUST process received Agent Advertisements. A mobile node can tell an Agent Advertisement apart from other uses of the ICMP Router Advertisement message by checking the number of advertised addresses and the IP Total Length field. When the IP total length says the ICMP message is longer than needed for the number of advertised addresses, the leftover data is read as one or more Extensions ๐งฉ. The presence of a Mobility Agent Advertisement Extension is what identifies the advertisement as an Agent Advertisement ๐ชช.
If there is more than one advertised address, the mobile node SHOULD pick the first address for its initial registration attempt. If the registration attempt fails with a status Code indicating rejection by the foreign agent, the mobile node MAY retry the attempt with each subsequent advertised address in turn ๐.
When multiple methods of agent discovery are in use, the mobile node SHOULD first attempt registration with agents that include Mobility Agent Advertisement Extensions in their advertisements, in preference to those discovered by other means. This preference maximizes the likelihood that the registration will be recognized, which minimizes the number of registration attempts ๐ฏ.
A mobile node MUST ignore reserved bits in Agent Advertisements, as opposed to discarding such advertisements. That way, new bits can be defined later without messing up the ability of mobile nodes to use the advertisements, even when the newly defined bits aren't understood ๐ธ.
2.4.1. Registration Required
When the mobile node receives an Agent Advertisement with the 'R' bit set, the mobile node SHOULD register through the foreign agent, even when the mobile node might be able to acquire its own co-located care-of address. This feature exists so sites can enforce visiting policies (such as accounting) that require exchanges of authorization ๐ฎโโ๏ธ.
If formerly reserved bits require some kind of monitoring or enforcement at the foreign link, foreign agents implementing the new specification for the formerly reserved bits can set the 'R' bit. This forces the mobile node to register through the foreign agent, so the foreign agent can then monitor or enforce the policy ๐.
2.4.2. Move Detection
Two primary mechanisms are provided for mobile nodes to detect when they have moved from one subnet to another. Other mechanisms MAY also be used. When the mobile node detects that it has moved, it SHOULD register (Section 3) with a suitable care-of address on the new foreign network. However, the mobile node MUST NOT register more frequently than once per second on average, as specified in Section 3.6.3 ๐โโ๏ธ๐จ.
2.4.2.1. Algorithm 1
The first method of move detection is based upon the Lifetime field within the main body of the ICMP Router Advertisement portion of the Agent Advertisement. A mobile node SHOULD record the Lifetime received in any Agent Advertisements, until that Lifetime expires. If the mobile node fails to receive another advertisement from the same agent within the specified Lifetime, it SHOULD assume that it has lost contact with that agent ๐. If the mobile node has previously received an Agent Advertisement from another agent whose Lifetime field has not yet expired, the mobile node MAY immediately attempt registration with that other agent. Otherwise, the mobile node SHOULD attempt to discover a new agent to register with ๐ต๏ธโโ๏ธ.
2.4.2.2. Algorithm 2
The second method uses network prefixes. The Prefix-Lengths Extension MAY be used in some cases by a mobile node to determine whether or not a newly received Agent Advertisement was received on the same subnet as the mobile node's current care-of address. If the prefixes differ, the mobile node MAY assume that it has moved. If a mobile node is currently using a foreign agent care-of address, the mobile node SHOULD NOT use this method of move detection unless both the current agent and the new agent include the Prefix-Lengths Extension in their respective Agent Advertisements. If this Extension is missing from one or both of the advertisements, this method of move detection SHOULD NOT be used. Similarly, if a mobile node is using a co-located care-of address, it SHOULD not use this method of move detection unless the new agent includes the Prefix-Lengths Extension in its Advertisement and the mobile node knows the network prefix of its current co-located care-of address ๐บ๏ธ. On the expiration of its current registration, if this method indicates that the mobile node has moved, rather than re-registering with its current care-of address, a mobile node MAY choose instead to register with a the foreign agent sending the new Advertisement with the different network prefix. The Agent Advertisement on which the new registration is based MUST NOT have expired according to its Lifetime field โฐ.
2.4.3. Returning Home
A mobile node can detect that it has returned to its home network when it receives an Agent Advertisement from its own home agent ๐ก. If so, it SHOULD deregister with its home agent (Section 3). Before attempting to deregister, the mobile node SHOULD configure its routing table appropriately for its home network (Section 4.2.1). In addition, if the home network is using ARP [36], the mobile node MUST follow the procedures described in Section 4.6 with regard to ARP, proxy ARP, and gratuitous ARP. It's giving homecoming queen ๐๐.
2.4.4. Sequence Numbers and Rollover Handling ๐ธ
okay bestie, so if a mobile node spots two back-to-back sequence numbers in the Agent Advertisements from its foreign agent, and the second one is smaller than the first but still sits somewhere between 0 and 255, it SHOULD register again ๐. but if the second number is smaller than the first and is 256 or higher, the mobile node SHOULD assume the sequence number wrapped around after hitting its max (0xffff) โจ, so it doesn't need to reregister (Section 2.3) ๐ .
3. Registration ๐
Mobile IP registration is the flexible little system that lets mobile nodes tell their home agent where they currently are ๐. It's how mobile nodes:
- request forwarding services when they're visiting a foreign network,
- let their home agent know their current care-of address,
- renew a registration that's about to expire, and/or
- deregister when they get back home ๐ .
Registration messages pass info between a mobile node, (optionally) a foreign agent, and the home agent ๐ง. Registration makes or updates a mobility binding at the home agent, which links the mobile node's home address to its care-of address for the specified Lifetime ๐.
There are also some other (optional) extras you can get through registration, letting a mobile node:
- find out its home address, if it wasn't configured with that info ๐.
- keep multiple simultaneous registrations going, so a copy of each datagram gets tunneled to every active care-of address ๐ฆ.
- deregister specific care-of addresses but keep its other mobility bindings, and
- find the address of a home agent, if it wasn't configured with that info ๐บ๏ธ.
3.1. Registration Overview ๐
okay so Mobile IP has two registration procedures ๐ฏ. one goes through a foreign agent that relays the registration to the mobile node's home agent, and the other goes straight to the home agent. these rules decide which one to use in any situation ๐ง :
- If a mobile node is registering a foreign agent care-of address, the mobile node MUST register via that foreign agent.
- If a mobile node is using a co-located care-of address, and receives an Agent Advertisement from a foreign agent on the link where it's using this care-of address, the mobile node SHOULD register via that foreign agent (or via another foreign agent on this link) if the 'R' bit is set in the received Agent Advertisement message ๐จ.
- If a mobile node is otherwise using a co-located care-of address, the mobile node MUST register directly with its home agent.
- If a mobile node has returned to its home network and is (de)registering with its home agent, the mobile node MUST register directly with its home agent ๐ก.
both procedures use Registration Request and Registration Reply messages (Sections 3.3 and 3.4) ๐. when registering through a foreign agent, there are four messages in the flow:
a) The mobile node sends a Registration Request to the prospective foreign agent to kick off the registration ๐.
b) The foreign agent processes the Registration Request and then relays it to the home agent.
c) The home agent sends a Registration Reply to the foreign agent to grant or deny the Request โ โ.
d) The foreign agent processes the Registration Reply and then relays it to the mobile node so it knows what happened to its Request ๐ฌ.
if the mobile node registers straight with its home agent instead, there are only two messages:
a) The mobile node sends a Registration Request to the home agent.
b) The home agent sends a Registration Reply to the mobile node, granting or denying the Request ๐ซ.
the registration messages in Sections 3.3 and 3.4 ride on the User Datagram Protocol (UDP) [37] ๐. a nonzero UDP checksum SHOULD be included in the header, and it MUST be checked by the recipient ๐. a zero UDP checksum SHOULD be accepted by the recipient. and how the mobile node and the home agent handle accepting packets with zero UDP checksums SHOULD be defined as part of the mobility security association between them ๐ค.
3.2. Authentication ๐
every mobile node, foreign agent, and home agent MUST be able to support a mobility security association for mobile entities, indexed by their SPI and IP address ๐๏ธ. for a mobile node, that address must be its Home Address. check Section 5.1 for the requirements on supporting authentication algorithms ๐. registration messages between a mobile node and its home agent MUST be authenticated with an authorization-enabling extension, like the Mobile-Home Authentication Extension (Section 3.5.2) โจ. that extension MUST be the first authentication extension, and other foreign agent-specific extensions MAY be added to the message after the mobile node computes the authentication ๐ .
3.3. Registration Request ๐
a mobile node uses a Registration Request message to register with its home agent, so the home agent can make or change a mobility binding for it (like giving it a new lifetime) ๐งธ. the Request may be relayed to the home agent by the foreign agent the mobile node is registering through, or it may be sent straight to the home agent when the mobile node is registering a co-located care-of address ๐ฏ.
IP fields:
- Source Address: Typically the interface address the message is sent from.
- Destination Address: Typically that of the foreign agent or the home agent.
check Sections 3.6.1.1 and 3.7.2.2 for the details ๐. UDP fields:
Source Port variable
Destination Port 434
after the UDP header come the Mobile IP fields, shown below ๐งฉ:
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 |S|B|D|M|G|r|T|x| Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Agent |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Care-of Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Identification +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Extensions ...
+-+-+-+-+-+-+-+-
the fields, one by one ๐ :
- Type:
1(Registration Request) ๐ฎ. - S: Simultaneous bindings. if
Sis set, the mobile node is asking the home agent to keep its prior mobility bindings, as described in Section 3.6.1.2 ๐ซถ. - B: Broadcast datagrams. if
Bis set, the mobile node asks the home agent to tunnel over any broadcast datagrams it receives on the home network, as described in Section 4.3 ๐ก. - D: Decapsulation by mobile node. if
Dis set, the mobile node will decapsulate the datagrams sent to the care-of address itself. so basically, the mobile node is using a co-located care-of address ๐. - M: Minimal encapsulation. if
Mis set, the mobile node asks its home agent to use minimal encapsulation [34] for the datagrams tunneled to it ๐. - G: GRE encapsulation. if
Gis set, the mobile node asks its home agent to use GRE encapsulation [16] for the datagrams tunneled to it ๐. - r: Sent as zero; ignored on reception. SHOULD NOT be allocated for any other uses ๐.
- T: Reverse Tunneling requested; see [27] ๐.
- x: Sent as zero; ignored on reception ๐ซง.
- Lifetime: the number of seconds left before the registration is considered expired โณ. a value of zero means "please deregister me" ๐, and a value of 0xffff means infinity โพ๏ธ.
- Home Address: the IP address of the mobile node ๐ .
- Home Agent: the IP address of the mobile node's home agent ๐งโโ๏ธ.
- Care-of Address: the IP address for the end of the tunnel ๐.
- Identification: a 64-bit number made by the mobile node ๐ชช. it's used for matching Registration Requests with Registration Replies, and for protecting against replay attacks of registration messages ๐ก๏ธ. see Sections 5.4 and 5.7.
- Extensions: the fixed part of the Registration Request is followed by one or more of the Extensions listed in Section 3.5 ๐. an authorization-enabling extension MUST be included in all Registration Requests ๐. and for the relative order that different extensions MUST be placed in a Registration Request message (when present), check Sections 3.6.1.3 and 3.7.2.2 ๐๏ธ.
3.4. Registration Reply โจ
Okay so, a mobility agent sends a Registration Reply back to a mobile node that sent a Registration Request (Section 3.3) ๐. If the mobile node is asking a foreign agent for service, that foreign agent is the one who gets the Reply from the home agent and passes it along to the mobile node. The Reply carries the codes that tell the mobile node how its Request went, plus the lifetime the home agent granted, which MAY be smaller than the original Request. ๐ฆ
The foreign agent MUST NOT increase the Lifetime the mobile node picked in the Registration Request. The Lifetime is covered by an authentication extension that lets the home agent authorize things, and that extension holds authentication data the foreign agent can't correctly (re)compute ๐ โโ๏ธ. The home agent MUST NOT increase the Lifetime the mobile node picked either, because that could push it past the maximum Registration Lifetime the foreign agent allows ๐. If the Lifetime in the Reply is greater than the one in the Request, the Lifetime in the Request MUST be used. If the Lifetime in the Reply is less than the one in the Request, the Lifetime in the Reply MUST be used. Lowkey just pick the smaller one, bestie ๐ซถ.
IP fields:
Source Address: Typically copied from the destination address of the Registration Request that the agent is replying to. See Sections 3.7.2.3 and 3.8.3.1 for complete details.Destination Address: Copied from the source address of the Registration Request that the agent is replying to.
UDP fields:
Source Port:<variable>Destination Port: Copied from the source port of the corresponding Registration Request (Section 3.7.1).
The UDP header is followed by the Mobile IP fields ๐ธ:
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 | Code | Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Agent |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Identification +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Extensions ...
+-+-+-+-+-+-+-+-+-
Type:3(Registration Reply)Code: A value indicating the result of the Registration Request. See below for a list of currently defined Code values.Lifetime: If the Code field says the registration was accepted, this is the number of seconds left before the registration counts as expired. A value of0means the mobile node has been deregistered. A value of0xffffmeans infinity โพ๏ธ. If the Code field says the registration was denied, the contents of the Lifetime field are unspecified and MUST be ignored on reception ๐.Home Address: The IP address of the mobile node.Home Agent: The IP address of the mobile node's home agent.Identification: A 64-bit number used for matching Registration Requests with Registration Replies, and for protecting against replay attacks of registration messages. The value is based on the Identification field from the Registration Request message from the mobile node, and on the style of replay protection used in the security context between the mobile node and its home agent (defined by the mobility security association between them, and the SPI value in the authorization-enabling extension). See Sections 5.4 and 5.7.Extensions: The fixed portion of the Registration Reply is followed by one or more of the Extensions listed in Section 3.5. An authorization-enabling extension MUST be included in all Registration Replies returned by the home agent ๐. See Sections 3.7.2.2 and 3.8.3.3 for rules on placing extensions in Reply messages.
Here's the list of values that can go in the Code field ๐:
Registration successful:
0 registration accepted
1 registration accepted, but simultaneous mobility
bindings unsupported
Registration denied by the foreign agent:
64 reason unspecified
65 administratively prohibited
66 insufficient resources
67 mobile node failed authentication
68 home agent failed authentication
69 requested Lifetime too long
70 poorly formed Request
71 poorly formed Reply
72 requested encapsulation unavailable
73 reserved and unavailable
77 invalid care-of address
78 registration timeout
80 home network unreachable (ICMP error received)
81 home agent host unreachable (ICMP error received)
82 home agent port unreachable (ICMP error received)
88 home agent unreachable (other ICMP error received)
Registration denied by the home agent:
128 reason unspecified
129 administratively prohibited
130 insufficient resources
131 mobile node failed authentication
132 foreign agent failed authentication
133 registration Identification mismatch
134 poorly formed Request
135 too many simultaneous mobility bindings
136 unknown home agent address
Up-to-date values of the Code field are specified in the most recent "Assigned Numbers" [40]. ๐
3.5. Registration Extensions ๐
3.5.1. Computing Authentication Extension Values
Okay, this part is super important. The Authenticator value computed for each authentication Extension MUST protect the following fields from the registration message ๐:
- the UDP payload (that is, the Registration Request or Registration Reply data),
- all prior Extensions in their entirety, and
- the Type, Length, and SPI of this Extension.
The default authentication algorithm uses HMAC-MD5 [23] to compute a 128-bit "message digest" of the registration message. The data the HMAC is computed over is defined as:
- the UDP payload (that is, the Registration Request or Registration Reply data),
- all prior Extensions in their entirety, and
- the Type, Length, and SPI of this Extension.
Note that the Authenticator field itself and the UDP header are NOT included in the computation of the default Authenticator value ๐. See Section 5.1 for information about support requirements for message authentication codes, which are to be used with the various authentication Extensions.
The Security Parameter Index (SPI) within any of the authentication Extensions defines the security context used to compute the Authenticator value, and the receiver MUST use it to check that value ๐ง . Specifically, the SPI picks the authentication algorithm and mode (Section 5.1) and the secret (a shared key, or an appropriate public/private key pair) used in computing the Authenticator. To keep different implementations of the Mobile IP protocol interoperating, an implementation MUST be able to associate any SPI value with any authentication algorithm and mode that it implements. On top of that, all implementations of Mobile IP MUST implement the default authentication algorithm (HMAC-MD5) specified above ๐ฏ.
3.5.2. Mobile-Home Authentication Extension
Exactly one authorization-enabling extension MUST be present in all Registration Requests, and also in all Registration Replies generated by the Home Agent. ๐ The Mobile-Home Authentication Extension is always the authorization-enabling extension for the registration messages specified in this document. This requirement exists to eliminate problems [2] caused by the uncontrolled propagation of remote redirects in the Internet ๐. The location of the extension marks the end of the authenticated data.
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 | SPI ....
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
... SPI (cont.) | Authenticator ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type:32Length:4plus the number of bytes in the Authenticator.SPI: Security Parameter Index (4 bytes). An opaque identifier (see Section 1.6).Authenticator: (variable length) (See Section 3.5.1.)
3.5.3. Mobile-Foreign Authentication Extension
This Extension MAY be included in Registration Requests and Replies in cases where a mobility security association exists between the mobile node and the foreign agent ๐ฆ. See Section 5.1 for information about support requirements for message authentication codes.
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 | SPI ....
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
... SPI (cont.) | Authenticator ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type:33Length:4plus the number of bytes in the Authenticator.SPI: Security Parameter Index (4 bytes). An opaque identifier (see Section 1.6).Authenticator: (variable length) (See Section 3.5.1.)
3.5.4. Foreign-Home Authentication Extension
This Extension MAY be included in Registration Requests and Replies in cases where a mobility security association exists between the foreign agent and the home agent ๐ธ. See Section 5.1 for information about support requirements for message authentication codes.
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 | SPI ....
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
... SPI (cont.) | Authenticator ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type:34Length:4plus the number of bytes in the Authenticator.SPI: Security Parameter Index (4 bytes). An opaque identifier (see Section 1.6).Authenticator: (variable length) (See Section 3.5.1.)
3.6. Mobile Node Considerations โจ
okay bestie, this is where the mobile node gets its main character moment ๐ ๐ฆ A mobile node MUST be configured with a netmask and a mobility security association for each of its home agents. ngl that's the non-negotiable starter pack ๐ On top of that, a mobile node MAY be configured with its home address and the IP address of one or more of its home agents. If it doesn't have those, it MAY discover a home agent using the procedures in Section 3.6.1.2 ๐ง
If the mobile node isn't configured with a home address, it MAY use the Mobile Node NAI extension [6] to introduce itself ๐ซถ It sets the Home Address field of the Registration Request to 0.0.0.0, and then, and this is the important part, it MUST be able to assign its home address after pulling that info out of the Registration Reply from the home agent ๐ญ that's a whole glow-up arc
For each pending registration, the mobile node keeps track of:
- the link-layer address of the foreign agent the Registration Request was sent to, if applicable,
- the IP destination address of the Registration Request,
- the care-of address used in the registration,
- the Identification value sent in the registration,
- the originally requested Lifetime, and
- the remaining Lifetime of the pending registration.
A mobile node SHOULD initiate a registration whenever it detects a change in its network connectivity ๐ธ See Section 2.4.2 for the ways mobile nodes MAY figure that out. When it's away from home, its Registration Request lets the home agent create or modify a mobility binding for it. When it's back home, its (de)Registration Request lets the home agent delete any previous mobility binding(s) for it. And when it's at home, the mobile node operates without the support of mobility functions, which is so chill ๐
There are other moments when the mobile node SHOULD (re)register with its foreign agent ๐ For example, when it notices the foreign agent has rebooted (as specified in Section 2.4.4), or when the current registration's Lifetime is close to expiring โฐ
In the absence of link-layer indications of changes in point of attachment, Agent Advertisements from new agents SHOULD NOT cause a mobile node to attempt a new registration, IF its current registration hasn't expired AND it's still receiving Agent Advertisements from the foreign agent it's currently registered with. Also, without link-layer indications, a mobile node MUST NOT attempt to register more often than once per second ๐ slow down, bestie!
A mobile node MAY register with a different agent when transport-layer protocols show excessive retransmissions ๐ฅ But a mobile node MUST NOT treat receiving an ICMP Redirect from a foreign agent that's currently serving it as a reason to switch to a new foreign agent ๐ Within these limits, the mobile node MAY register again at any time โจ
Appendix D has examples of how the fields in registration messages get set up in some typical scenarios ๐
3.6.1. Sending Registration Requests
okay so this part spells out the values the mobile node MUST put in the fields of Registration Request messages ๐
3.6.1.1. IP Fields
this section has the exact rules for how mobile nodes pick values for the IP header fields of a Registration Request ๐ฆ
IP Source Address:
- When registering on a foreign network with a co-located care-of address, the IP source address MUST be the care-of address.
- Otherwise, if the mobile node doesn't have a home address, the IP source address MUST be
0.0.0.0. - In all other circumstances, the IP source address MUST be the mobile node's home address.
IP Destination Address:
- When the mobile node has found the agent it's registering with through some means (e.g., link-layer) that doesn't give the agent's IP address (so the IP address is unknown to the mobile node), then the "All Mobility Agents" multicast address (
224.0.0.11) MUST be used ๐ In this case, the mobile node MUST use the agent's link-layer unicast address to make sure the datagram gets to the right agent. - When registering with a foreign agent, the address of the agent learned from the IP source address of the matching Agent Advertisement MUST be used ๐ This MAY be an address that doesn't show up as an advertised care-of address in the Agent Advertisement. Also, when sending this Registration Request message, the mobile node MUST use a link-layer destination address copied from the link-layer source address of the Agent Advertisement message where it learned this foreign agent's IP address.
- When the mobile node is registering directly with its home agent and knows the home agent's (unicast) IP address, the destination address MUST be set to this address ๐
- If the mobile node is registering directly with its home agent but doesn't know the home agent's IP address, the mobile node may use dynamic home agent address resolution to figure it out automatically (Section 3.6.1.2) ๐ง In this case, the IP destination address is set to the subnet-directed broadcast address of the mobile node's home network. This address MUST NOT be used as the destination IP address if the mobile node is registering via a foreign agent, although it MAY be used as the Home Agent address in the body of the Registration Request when registering via a foreign agent ๐
IP Time to Live:
- The IP TTL field MUST be set to
1if the IP destination address is set to the "All Mobility Agents" multicast address as described above ๐ฅ Otherwise, a suitable value should be chosen in accordance with standard IP practice [38] ๐ซถ
3.6.1.2. Registration Request Fields โจ
okay so this section is basically the cheat sheet for how a mobile node fills in the fixed part of a Registration Request ๐ let's go bestie.
A mobile node MAY set the 'S' bit to ask its home agent to keep the prior mobility binding(s) around ๐ฆ Otherwise, the home agent deletes any previous binding(s) and replaces them with the new one from the Registration Request. Multiple simultaneous bindings are lowkey super useful when a mobile node with at least one wireless interface wanders into range of more than one foreign agent ๐ก IP explicitly allows duplicate datagrams, so when the home agent allows simultaneous bindings, it tunnels a separate copy of each arriving datagram to each care-of address. That means the mobile node gets multiple copies of everything addressed to it. iykyk ๐
The mobile node SHOULD set the 'D' bit if it's registering with a co-located care-of address. Otherwise, the 'D' bit MUST NOT be set. ๐
A mobile node MAY set the 'B' bit to ask its home agent to forward a copy of the broadcast datagrams it receives from the home network ๐ป How the home agent does this depends on the type of care-of address, which the 'D' bit tells you:
- If the 'D' bit is set, the mobile node has said it will decapsulate any datagrams tunneled to this care-of address itself (it's using a co-located care-of address). So the home agent MUST tunnel the broadcast datagram to this care-of address. The mobile node de-tunnels it the same way as any other datagram tunneled directly to it ๐
- If the 'D' bit is NOT set, the mobile node is using a foreign agent care-of address, so the foreign agent will decapsulate arriving datagrams before forwarding them. In this case, the home agent MUST first encapsulate the broadcast datagram in a unicast datagram addressed to the mobile node's home address. Then it MUST tunnel that resulting datagram to the mobile node's care-of address.
- When the foreign agent decapsulates it, the inner datagram is a unicast IP datagram addressed to the mobile node. That tells the foreign agent exactly where the encapsulated broadcast was meant to go, and it gets delivered like any other tunneled datagram for the mobile node ๐ง
- The foreign agent MUST NOT decapsulate the encapsulated broadcast datagram, and it MUST NOT use a local network broadcast to send it to the mobile node. So the mobile node MUST decapsulate the encapsulated broadcast datagram itself. That means it MUST NOT set the 'B' bit in its Registration Request in this case, unless it's capable of decapsulating datagrams ๐ โโ๏ธ
The mobile node MAY ask for other forms of encapsulation by setting the 'M' bit and/or the 'G' bit ๐ But it can only do that if it's decapsulating its own datagrams (it's using a co-located care-of address), or if its foreign agent has said it supports those forms by setting the matching bits in the Mobility Agent Advertisement Extension of an Agent Advertisement the mobile node received. Otherwise, the mobile node MUST NOT set these bits.
The Lifetime field gets picked like this โฐ
- If the mobile node is registering with a foreign agent, the Lifetime SHOULD NOT exceed the value in the Registration Lifetime field of the Agent Advertisement message it got from that foreign agent.
- When the way the care-of address was learned doesn't include a Lifetime, the default ICMP Router Advertisement Lifetime (1800 seconds) MAY be used.
- The mobile node MAY ask a home agent to delete a particular mobility binding. It does this by sending a Registration Request with the care-of address for that binding and the Lifetime field set to zero (Section 3.8.2) ๐๏ธ
- Likewise, a Lifetime of zero is used when the mobile node deregisters all of its care-of addresses, like when it's back home ๐
The Home Address field MUST be set to the mobile node's home address, if that info is known. Otherwise, the Home Address MUST be set to zeroes ๐ค
The Home Agent field MUST be set to the address of the mobile node's home agent, if the mobile node knows it. If it doesn't, the mobile node MAY use dynamic home agent address resolution to find out where its home agent is. In that case, the mobile node MUST set the Home Agent field to the subnet-directed broadcast address of its home network. Each home agent that gets a Registration Request with a broadcast destination address MUST reject the mobile node's registration, and it SHOULD send back a rejection Registration Reply with its unicast IP address so the mobile node can use it in a future registration attempt ๐ฌ
The Care-of Address field MUST be set to the particular care-of address the mobile node wants to (de)register. The special case is when a mobile node wants to deregister all of its care-of addresses. Then it MUST set this field to its home address ๐ซถ
The mobile node picks the Identification field based on the style of replay protection it uses with its home agent. That's part of the mobility security association the mobile node shares with its home agent. See Section 5.7 for how the mobile node computes the Identification field ๐
3.6.1.3. Extensions ๐งฉ
this part is all about the order a mobile node sticks Extensions onto a Registration Request. Mandatory and optional ones both have their spot, so let's line them up ๐ The following ordering MUST be followed:
- a) The IP header, then the UDP header, then the fixed-length portion of the Registration Request, followed by
- b) If present, any non-authentication Extensions expected to be used by the home agent (which may or may not also be useful to the foreign agent), followed by
- c) An authorization-enabling extension, followed by
- d) If present, any non-authentication Extensions used only by the foreign agent, followed by
- e) The Mobile-Foreign Authentication Extension, if present.
Note that items (a) and (c) MUST appear in every Registration Request sent by the mobile node. Items (b), (d), and (e) are optional. However, item (e) MUST be included when the mobile node and the foreign agent share a mobility security association ๐ฅ
3.6.2. Receiving Registration Replies ๐ฉ
Registration Replies come back to the mobile node in response to its Registration Requests ๐ Generally, they fall into three buckets:
- the registration was accepted,
- the registration was denied by the foreign agent, or
- the registration was denied by the home agent.
The rest of this section walks through how a mobile node handles a Registration Reply in each of those three cases ๐
3.6.2.1. Validity Checks ๐
Registration Replies with an invalid, non-zero UDP checksum MUST be silently discarded ๐๏ธ
Also, the low-order 32 bits of the Identification field in the Registration Reply MUST be compared to the low-order 32 bits of the Identification field in the most recent Registration Request sent to the replying agent. If they don't match, the Reply MUST be silently discarded ๐
The Registration Reply MUST also be checked for an authorization-enabling extension. For every Registration Reply with a Status Code that shows status from the Home Agent, the mobile node MUST check for an authorization-enabling extension, and it acts based on the Code field in the Reply. Here's how it goes ๐
- a) If the mobile node and the foreign agent share a mobility security association, exactly one Mobile-Foreign Authentication Extension MUST be present in the Registration Reply, and the mobile node MUST check the Authenticator value in that Extension. If no Mobile-Foreign Authentication Extension is found, or if more than one is found, or if the Authenticator is invalid, the mobile node MUST silently discard the Reply and SHOULD log the event as a security exception ๐จ
- b) If the Code field says service is denied by the home agent, or if the Code field says the registration was accepted by the home agent, exactly one Mobile-Home Authentication Extension MUST be present in the Registration Reply, and the mobile node MUST check the Authenticator value in that Extension. If the Registration Reply was generated by the home agent but no Mobile-Home Authentication Extension is found, or if more than one is found, or if the Authenticator is invalid, the mobile node MUST silently discard the Reply and SHOULD log the event as a security exception ๐จ
๐ฅบ Heads up, this one's serious: if the Code field indicates an authentication failure, at either the foreign agent or the home agent, then it's quite possible that the authenticators in the Registration Reply are also wrong. For example, this could happen if the shared secret between the mobile node and the home agent was configured incorrectly. The mobile node SHOULD log such errors as security exceptions.
3.6.2.2. Registration Request Accepted
okay so if the Code field says the request was accepted, the mobile node SHOULD configure its routing table for wherever it's currently attached (Section 4.2.1) ๐บ๏ธโจ
if the mobile node is heading back home and that home network implements ARP, it MUST follow the procedures in Section 4.6 for ARP, proxy ARP, and gratuitous ARP. the ARP stuff is so specific I'm obsessed ๐
if the mobile node has registered on a foreign network, it SHOULD re-register before its registration Lifetime runs out. ๐ as Section 3.6 explains, for each pending Registration Request, the mobile node MUST keep track of two things: the remaining lifetime of that pending registration, and the original Lifetime from the Registration Request. when a valid Registration Reply arrives, the mobile node MUST shrink its view of the remaining lifetime by however much the home agent cut the originally requested Lifetime.
this is giving "start the timer early" energy โฐ. it works out to the mobile node starting a timer for the granted Lifetime at the moment it sent the Registration Request, even though it doesn't actually know the granted Lifetime until the Reply shows up. the Request is definitely sent before the home agent starts its own clock (also based on the granted Lifetime), so the mobile node re-registers before the home agent expires and deletes the registration. this holds even if transmission delays for the original Request and Reply were non-negligible, which is iconic ๐
3.6.2.3. Registration Request Denied
if the Code field says service is being denied, the mobile node SHOULD log the error. ๐ in certain cases the mobile node might be able to "repair" the error. these include:
Code 69:(Denied by foreign agent, Lifetime too long)
ok so in this one, the Lifetime field in the Registration Reply holds the maximum Lifetime value that foreign agent is willing to accept in any Registration Request. the mobile node MAY try registering with this same agent again, using a Lifetime in the Registration Request that MUST be less than or equal to the value in the Reply. ๐ธ
Code 133:(Denied by home agent, Identification mismatch)
this one's giving sync issues ๐ญ. the Identification field in the Registration Reply holds a value that lets the mobile node sync up with the home agent, based on the style of replay protection in effect (Section 5.7). the mobile node MUST adjust the parameters it uses to compute the Identification field using the info in the Registration Reply, before sending any future Registration Requests. ๐ฅ
Code 136:(Denied by home agent, Unknown home agent address)
this code comes back from a home agent when the mobile node is doing dynamic home agent address resolution, as described in Sections 3.6.1.1 and 3.6.1.2. here the Home Agent field in the Reply holds the unicast IP address of the home agent that sent the Reply. the mobile node MAY then try registering with this home agent in future Registration Requests. on top of that, the mobile node SHOULD adjust the parameters it uses to compute the Identification field, based on the matching field in the Registration Reply, before issuing any future Registration Requests. ๐ง
3.6.3. Registration Retransmission
when no Registration Reply has come back within a reasonable time, another Registration Request MAY be sent. ๐จ when timestamps are used, a new registration Identification gets chosen for each retransmission, so it counts as a brand-new registration. when nonces are used, the unanswered Request gets retransmitted unchanged, so the retransmission does NOT count as a new registration (Section 5.7). the nonce version is lowkey so clever, because the home agent doesn't have to resync by issuing another nonce when the original Request got lost on the way, instead of the Reply ๐ฆ
the maximum time until a new Registration Request is sent SHOULD be no greater than the requested Lifetime of the Registration Request. the minimum value SHOULD be big enough to cover the size of the messages, twice the round trip time to the home agent, and at least an extra 100 milliseconds for processing before responding. the round trip time to the home agent will be at least as long as it takes to transmit the messages at the link speed of the mobile node's current point of attachment. some circuits add another 200 milliseconds of satellite delay to the total round trip time to the home agent. ๐ฐ๏ธ
the minimum time between Registration Requests MUST NOT be less than 1 second. โฑ๏ธ and each successive retransmission timeout period SHOULD be at least twice the previous period, as long as that's still less than the maximum specified above. exponential backoff, bestie ๐
3.7. Foreign Agent Considerations
the foreign agent has a mostly passive role in Mobile IP registration, honestly kind of a background character ๐งโโ๏ธ. it relays Registration Requests between mobile nodes and home agents, and when it provides the care-of address, it decapsulates datagrams for delivery to the mobile node. it SHOULD also send periodic Agent Advertisement messages to advertise its presence, as described in Section 2.3, if that can't be detected by link-layer means. ๐ข
a foreign agent MUST NOT transmit a Registration Request except when relaying a Registration Request received from a mobile node, to that mobile node's home agent. a foreign agent MUST NOT transmit a Registration Reply except when relaying a Registration Reply received from a mobile node's home agent, or when replying to a Registration Request received from a mobile node in the case where the foreign agent is denying service to that mobile node. ๐ซ
and this is the big one: a foreign agent MUST NOT generate a Registration Request or Reply just because a mobile node's registration Lifetime has expired. a foreign agent also MUST NOT originate a Registration Request message asking for deregistration of a mobile node. however, it MUST relay valid (de)Registration Requests originated by a mobile node. ๐ โโ๏ธ๐
3.7.1. Configuration and Registration Tables
each foreign agent MUST be configured with a care-of address. ๐ on top of that, for each pending or current registration, the foreign agent MUST maintain a visitor list entry containing the following info, pulled from the mobile node's Registration Request:
- the link-layer source address of the mobile node
- the IP Source Address (the mobile node's Home Address) or its co-located care-of address (see the description of the 'R' bit in Section 2.1.1)
- the IP Destination Address (as specified in 3.6.1.1)
- the UDP Source Port
- the Home Agent address
- the Identification field
- the requested registration Lifetime, and
- the remaining Lifetime of the pending or current registration.
if the mobile node's Home Address is zero in the Registration Request message, the foreign agent MUST follow the procedures in RFC 2794 [6]. ๐งพ specifically, if the foreign agent can't manage pending registration request records with such a zero Home Address, it MUST return a Registration Reply with a Code indicating NONZERO_HOMEADDR_REQD (see [6]).
the foreign agent MAY configure a maximum number of pending registrations it's willing to maintain (typically 5). after that, additional registrations SHOULD be rejected with code 66. ๐ the foreign agent MAY delete any pending Registration Request that's been pending for more than 7 seconds. in that case, the foreign agent SHOULD reject the Request with code 78 (registration timeout). โณ
as with any node on the Internet, a foreign agent MAY also share mobility security associations with other nodes. ๐ when relaying a Registration Request from a mobile node to its home agent, if the foreign agent shares a mobility security association with the home agent, it MUST add a Foreign-Home Authentication Extension to the Request. it MUST also check the required Foreign-Home Authentication Extension in the Registration Reply from the home agent (Sections 3.3 and 3.4). similarly, when receiving a Registration Request from a mobile node, if the foreign agent shares a mobility security association with that mobile node, it MUST check the required Mobile-Foreign Authentication Extension in the Request, and it MUST add a Mobile-Foreign Authentication Extension to the Registration Reply sent to the mobile node. ๐ซถ
3.7.2. Receiving Registration Requests
if the foreign agent accepts a Registration Request from a mobile node, it checks that the indicated home agent address doesn't belong to any network interface of the foreign agent. ๐ if it doesn't, the foreign agent MUST relay the Request to the indicated home agent. otherwise, if the foreign agent denies the Request, it MUST send a Registration Reply to the mobile node with an appropriate denial Code. the exception is cases where the foreign agent would have to send out more than one such denial per second to the same mobile node. the following sections go through this behavior in more detail. ๐
if the foreign agent has configured one of its network interfaces with the IP address the mobile node specified as its home agent address, the foreign agent MUST NOT forward the request again. if the foreign agent serves the mobile node as a home agent, it follows the procedures in Section 3.8.2. otherwise, if the foreign agent does NOT serve the mobile node as a home agent, it rejects the Registration Request with code 136 (unknown home agent address). ๐จ
if a foreign agent receives a Registration Request from a mobile node that's already in its visitor list, the existing visitor list entry SHOULD NOT be deleted or modified until the foreign agent gets a valid Registration Reply from the home agent with a Code indicating success. the foreign agent MUST record the new pending Request as a separate part of the existing visitor list entry for that mobile node. ๐๏ธ if the Registration Request asks for deregistration, the existing visitor list entry SHOULD NOT be deleted until the foreign agent has received a successful Registration Reply. and if the Registration Reply says the Request (for registration or deregistration) was denied by the home agent, the existing visitor list entry MUST NOT be modified just because that Reply came in. ๐
3.7.2.1. Validity Checks โจ
Okay bestie, the foreign agent is the bouncer ๐ซถ, and it checks everything before letting a request in. A Registration Request with an invalid, non-zero UDP checksum MUST be silently discarded ๐. If it has non-zero bits in reserved fields, it MUST be rejected with code 70 (poorly formed request) ๐. And if the D bit is set to 0 and the care-of address isn't one the foreign agent offered, it MUST be rejected with code 77 (invalid care-of address) ๐ซ.
Also, the authentication in the Registration Request MUST be checked ๐. If the foreign agent and the mobile node share a mobility security association, exactly one Mobile-Foreign Authentication Extension MUST be present in the Registration Request, and the foreign agent MUST check the Authenticator value in the Extension. If there's no Mobile-Foreign Authentication Extension, or there's more than one, or the Authenticator is invalid, the foreign agent MUST silently discard the Request and SHOULD log the event as a security exception ๐จ. The foreign agent also SHOULD send a Registration Reply to the mobile node with Code 67. Not a vibe.
3.7.2.2. Forwarding a Valid Request to the Home Agent ๐
If the foreign agent accepts the mobile node's Registration Request, it MUST relay the Request to the mobile node's home agent, as specified in the Home Agent field of the Registration Request. The foreign agent MUST NOT modify any of the fields beginning with the fixed portion of the Registration Request up through and including the Mobile-Home Authentication Extension, or any other authentication extension the mobile node supplied as an authorization-enabling extension for the home agent. Otherwise, an authentication failure is very likely to occur at the home agent. So hands off! ๐ Then the foreign agent does the following:
- It MUST process and remove any Extensions following the Mobile-Home Authentication Extension,
- It MAY append any of its own non-authentication Extensions of relevance to the home agent, if applicable, and
- It MUST append the Foreign-Home Authentication Extension, if the foreign agent shares a mobility security association with the home agent.
Specific fields within the IP header and the UDP header of the relayed Registration Request MUST be set as follows:
IP Source Address: The foreign agent's address on the interface from which the message will be sent.IP Destination Address: Copied from the Home Agent field within the Registration Request.UDP Source Port:<variable>UDP Destination Port:434
After forwarding a valid Registration Request to the home agent, the foreign agent MUST begin timing the remaining lifetime of the pending registration, based on the Lifetime in the Registration Request. If this lifetime expires before a valid Registration Reply shows up, the foreign agent MUST delete its visitor list entry for this pending registration. Timers are everything ๐ฐ๏ธ.
3.7.2.3. Denying Invalid Requests ๐ โโ๏ธ
If the foreign agent denies the mobile node's Registration Request for any reason, it SHOULD send the mobile node a Registration Reply with a suitable denial Code. In that case, the Home Address, Home Agent, and Identification fields within the Registration Reply are copied from the matching fields of the Registration Request. ๐
If the Reserved field is nonzero, the foreign agent MUST deny the Request and SHOULD return a Registration Reply with status code 70 to the mobile node. If the Request is being denied because the requested Lifetime is too long, the foreign agent sets the Lifetime in the Reply to the maximum Lifetime value it's willing to accept in any Registration Request, and sets the Code field to 69. Otherwise, the Lifetime SHOULD be copied from the Lifetime field in the Request. ๐
Specific fields within the IP header and the UDP header of the Registration Reply MUST be set as follows:
IP Source Address: Copied from the IP Destination Address of Registration Request, unless the "All Agents Multicast" address was used. In this case, the foreign agent's address (on the interface from which the message will be sent) MUST be used.IP Destination Address: If the Registration Reply is generated by the Foreign Agent in order to reject a mobile node's Registration Request, and the Registration Request contains a Home Address which is not0.0.0.0, then the IP Destination Address is copied from the Home Address field of the Registration Request. Otherwise, if the Registration Reply is received from the Home Agent, and contains a Home Address which is not0.0.0.0, then the IP Destination Address is copied from the Home Address field of the Registration Reply. Otherwise, the IP Destination Address of the Registration Reply is set to be255.255.255.255.UDP Source Port:434UDP Destination Port: Copied from the UDP Source Port of the Registration Request.
3.7.3. Receiving Registration Replies ๐ฌ
The foreign agent updates its visitor list when it receives a valid Registration Reply from a home agent. Then it relays the Registration Reply to the mobile node. The following sections describe this behavior in more detail. ๐ง
If, upon relaying a Registration Request to a home agent, the foreign agent receives an ICMP error message instead of a Registration Reply, then the foreign agent SHOULD send the mobile node a Registration Reply with an appropriate "Home Agent Unreachable" failure Code (within the range 80-95, inclusive). See Section 3.7.2.3 for details on building the Registration Reply.
3.7.3.1. Validity Checks ๐
Registration Replies with an invalid, non-zero UDP checksum MUST be silently discarded.
When a foreign agent receives a Registration Reply message, it MUST search its visitor list for a pending Registration Request with the same mobile node home address as indicated in the Reply. If no such pending Request is found, and the Registration Reply doesn't correspond with any pending Registration Request with a zero mobile node home address (see section 3.7.1), the foreign agent MUST silently discard the Reply. The foreign agent MUST also silently discard the Reply if the low-order 32 bits of the Identification field in the Reply don't match those in the Request. Matching is everything ๐ฏ.
Also, the authentication in the Registration Reply MUST be checked. If the foreign agent and the home agent share a mobility security association, exactly one Foreign-Home Authentication Extension MUST be present in the Registration Reply, and the foreign agent MUST check the Authenticator value in the Extension. If no Foreign-Home Authentication Extension is found, or more than one is found, or the Authenticator is invalid, the foreign agent MUST silently discard the Reply and SHOULD log the event as a security exception. The foreign agent also MUST reject the mobile node's registration and SHOULD send a Registration Reply to the mobile node with Code 68. ๐ซ๐
3.7.3.2. Forwarding Replies to the Mobile Node ๐ฆ
A Registration Reply which satisfies the validity checks of Section 3.8.2.1 is relayed to the mobile node. The foreign agent MUST also update its visitor list entry for the mobile node to reflect the results of the Registration Request, as indicated by the Code field in the Reply. If the Code indicates that the home agent has accepted the registration and the Lifetime field is nonzero, the foreign agent SHOULD set the Lifetime in the visitor list entry to the minimum of the following two values:
- the value specified in the Lifetime field of the Registration Reply, and
- the foreign agent's own maximum value for allowable registration lifetime.
If, instead, the Code indicates that the Lifetime field is zero, the foreign agent MUST delete its visitor list entry for the mobile node. Finally, if the Code indicates that the registration was denied by the home agent, the foreign agent MUST delete its pending registration list entry, but not its visitor list entry, for the mobile node.
The foreign agent MUST NOT modify any of the fields beginning with the fixed portion of the Registration Reply up through and including the Mobile-Home Authentication Extension. Otherwise, an authentication failure is very likely to occur at the mobile node. Again, hands off ๐.
In addition, the foreign agent SHOULD perform the following additional procedures:
- It MUST process and remove any Extensions following the Mobile-Home Authentication Extension,
- It MAY append its own non-authentication Extensions of relevance to the mobile node, if applicable, and
- It MUST append the Mobile-Foreign Authentication Extension, if the foreign agent shares a mobility security association with the mobile node.
Specific fields within the IP header and the UDP header of the relayed Registration Reply are set according to the same rules specified in Section 3.7.2.3.
After forwarding a valid Registration Reply to the mobile node, the foreign agent MUST update its visitor list entry for this registration as follows. If the Registration Reply indicates that the home agent accepted the registration, the foreign agent resets its timer of the registration lifetime to the Lifetime granted in the Registration Reply. Unlike the mobile node's timing of the registration lifetime described in Section 3.6.2.2, the foreign agent considers this lifetime to begin when it forwards the Registration Reply message, which ensures the foreign agent won't expire the registration before the mobile node does. ๐ฅน On the other hand, if the Registration Reply indicates that the home agent rejected the registration, the foreign agent deletes its visitor list entry for this attempted registration. ๐
3.8. Home Agent Considerations ๐
Home agents play a reactive role in the registration process. The home agent receives Registration Requests from the mobile node (perhaps relayed by a foreign agent), updates its record of the mobility bindings for this mobile node, and issues a suitable Registration Reply in response to each one. ๐
A home agent MUST NOT transmit a Registration Reply except when replying to a Registration Request received from a mobile node. In particular, the home agent MUST NOT generate a Registration Reply to indicate that the Lifetime has expired. No random replies, bestie ๐ โโ๏ธ๐
3.8.1. Configuration and Registration Tables ๐๏ธ
okay so first things first, each home agent MUST be configured with an IP address and the prefix size for the home network ๐ . It also MUST get the mobility security association of every authorized mobile node it's serving as a home agent for ๐.
when the home agent accepts a valid Registration Request from a mobile node it serves, it MUST create or modify that mobile node's entry in its mobility binding list ๐. Each entry has:
- the mobile node's home address
- the mobile node's care-of address
- the Identification field from the Registration Reply
- the remaining Lifetime of the registration
the home agent MAY optionally offer a way to dynamically associate a home address to a mobile node when it gets a Registration Request from that node ๐ฆ. how that home address gets allocated is beyond the scope of this document, but see [6] if you're curious. once the home agent makes that association, it MUST put that home address into the Home Address field of the Registration Reply ๐.
the home agent MAY also keep mobility security associations with various foreign agents ๐ค. when a Registration Request comes in from a foreign agent, and the home agent shares a mobility security association with that foreign agent, the home agent MUST check the Authenticator in the required Foreign-Home Authentication Extension, based on that association โ . same vibe going the other way: when sending a Registration Reply to a foreign agent, and they share an association, the home agent MUST include a Foreign-Home Authentication Extension, based on that association ๐ซถ.
3.8.2. Receiving Registration Requests ๐ฌ
if the home agent accepts an incoming Registration Request, it MUST update its record of the mobile node's mobility binding(s) and SHOULD send a Registration Reply with a suitable Code ๐. otherwise (the home agent denies the Request), it SHOULD send a Registration Reply with an appropriate Code saying why the Request got denied ๐ โโ๏ธ. the next sections go deeper into all of this. and if the home agent does not support broadcasts (see section 4.3), it MUST ignore the 'B' bit, as opposed to rejecting the Registration Request ๐.
3.8.2.1. Validity Checks ๐
Registration Requests with an invalid, non-zero UDP checksum MUST be silently discarded by the home agent ๐.
the authentication in the Registration Request MUST be checked, and that involves a few things:
- a) the home agent MUST check for the presence of an authorization-enabling extension and perform the indicated authentication. exactly one authorization-enabling extension MUST be present in the Registration Request. the home agent MUST either check the Authenticator value in the extension, or verify that another agent it has a security association with already checked it. if no authorization-enabling extension is found, or more than one is found, or the Authenticator is invalid, the home agent MUST reject the mobile node's registration and SHOULD send a Registration Reply to the mobile node with Code 131. then the home agent MUST discard the Request and SHOULD log the error as a security exception ๐จ.
- b) the home agent MUST check that the registration Identification field is correct, using the context selected by the SPI within the authorization-enabling extension. see Section 5.7 for how that's done. if it's incorrect, the home agent MUST reject the Request and SHOULD send a Registration Reply to the mobile node with Code 133, including an Identification field computed according to the rules in Section 5.7. the home agent MUST do no further processing with such a Request, though it SHOULD log the error as a security exception ๐.
- c) if the home agent shares a mobility security association with the foreign agent, the home agent MUST check for the presence of a valid Foreign-Home Authentication Extension. exactly one Foreign-Home Authentication Extension MUST be present in the Registration Request in this case, and the home agent MUST check the Authenticator value in the Extension. if no Foreign-Home Authentication Extension is found, or more than one is found, or the Authenticator is invalid, the home agent MUST reject the mobile node's registration and SHOULD send a Registration Reply to the mobile node with Code 132. then the home agent MUST discard the Request and SHOULD log the error as a security exception ๐งฏ.
on top of checking authentication, home agents MUST deny Registration Requests that are sent to the subnet-directed broadcast address of the home network (instead of being unicast to the home agent) ๐ก. the home agent MUST discard the Request and SHOULD return a Registration Reply with a Code of 136. in this case the Registration Reply carries the home agent's unicast address, so the mobile node can re-issue the Registration Request with the correct home agent address ๐ฏ.
โจ bestie, this one's a plot twist: some routers change the IP destination address of a datagram from a subnet-directed broadcast address to255.255.255.255before injecting it into the destination subnet. so home agents that try to pick up dynamic home agent discovery requests by binding a socket explicitly to the subnet-directed broadcast address won't see those packets ๐. home agent implementors should be prepared for both the subnet-directed broadcast address and255.255.255.255if they want to support dynamic home agent discovery ๐.
3.8.2.2. Accepting a Valid Request ๐
if the Registration Request passes the validity checks in Section 3.8.2.1, and the home agent is able to accommodate the Request, the home agent MUST update its mobility binding list for the requesting mobile node and MUST return a Registration Reply to the mobile node ๐ฅณ.
in this case the Reply Code will be either 0 if the home agent supports simultaneous mobility bindings, or 1 if it doesn't. see Section 3.8.3 for how to build the Registration Reply message ๐งฉ.
the home agent updates its record of the mobile node's mobility bindings like this, based on the fields in the Registration Request ๐๏ธ:
- if the Lifetime is zero and the Care-of Address equals the mobile node's home address, the home agent deletes all of the entries in the mobility binding list for the requesting mobile node. this is how a mobile node asks its home agent to stop providing mobility services ๐.
- if the Lifetime is zero and the Care-of Address does not equal the mobile node's home address, the home agent deletes only the entry containing the specified Care-of Address. any other active entries with other care-of addresses stay active ๐ธ.
- if the Lifetime is nonzero, the home agent adds an entry containing the requested Care-of Address to the mobility binding list for the mobile node. if the 'S' bit is set and the home agent supports simultaneous mobility bindings, the previous mobility binding entries are kept. otherwise, the home agent removes all previous entries in the mobility binding list for the mobile node ๐.
in every case, the home agent MUST send a Registration Reply to the source of the Registration Request, which might be a different foreign agent than the one whose care-of address is being (de)registered ๐จ. if the home agent shares a mobility security association with the foreign agent whose care-of address is being deregistered, and that foreign agent is different from the one that relayed the Registration Request, the home agent MAY additionally send a Registration Reply to the foreign agent whose care-of address is being deregistered ๐. the home agent MUST NOT send such a Reply if it doesn't share a mobility security association with that foreign agent ๐ซ. if no Reply is sent, the foreign agent's visitor list will expire naturally when the original Lifetime runs out โณ.
the home agent MUST NOT increase the Lifetime above what the mobile node asked for in the Registration Request. however, it's not an error for the mobile node to ask for a Lifetime longer than the home agent is willing to accept ๐. in that case the home agent just reduces the Lifetime to a permissible value and returns that value in the Registration Reply. the Lifetime in the Registration Reply tells the mobile node how long its registration was granted for, which tells it when it SHOULD re-register to keep service going ๐. after that registration lifetime expires, the home agent MUST delete its entry for this registration in its mobility binding list ๐งน.
if the Registration Request duplicates an accepted current Registration Request, the new Lifetime MUST NOT extend beyond the Lifetime originally granted ๐ โโ๏ธ. a Registration Request counts as a duplicate if the home address, care-of address, and Identification fields all match those of an accepted current registration ๐ฏ.
also, if the home network implements ARP [36], and the Registration Request asks the home agent to create a mobility binding for a mobile node that previously had no binding (the mobile node was previously assumed to be at home), then the home agent MUST follow the procedures in Section 4.6 about ARP, proxy ARP, and gratuitous ARP ๐ก. if the mobile node already had a previous mobility binding, the home agent MUST keep following the rules for proxy ARP described in Section 4.6 ๐ง .
3.8.2.3. Denying an Invalid Request ๐ซ
if the Registration Reply does not satisfy all of the validity checks in Section 3.8.2.1, or the home agent is unable to accommodate the Request, the home agent SHOULD return a Registration Reply to the mobile node with a Code that shows the reason for the error ๐. if a foreign agent was involved in relaying the Request, this lets the foreign agent delete its pending visitor list entry ๐งฝ. it also tells the mobile node what went wrong, so it can try to fix the error and send another Request ๐ง.
this section lists a bunch of reasons the home agent might reject a Request, plus the Code value it should use for each one. see Section 3.8.3 for more details on building the Registration Reply message ๐.
a lot of reasons for rejecting a registration are administrative. for example, a home agent can limit the number of simultaneous registrations for a mobile node by rejecting any registrations that would push it over the limit, and returning a Registration Reply with error code 135 ๐ง. a home agent may also refuse service to mobile nodes that have wandered into unauthorized service areas, by returning a Registration Reply with a Code of 129 ๐บ๏ธ.
Requests with non-zero bits in reserved fields MUST be rejected with code 134 (poorly formed request) ๐ .
3.8.3. Sending Registration Replies ๐
okay so if the home agent accepts a Registration Request, it MUST update its record of the mobile node's mobility binding(s) and SHOULD send a Registration Reply with a suitable Code ๐. Otherwise (the home agent has denied the Request), it SHOULD send a Registration Reply with an appropriate Code saying why the Request got denied ๐. The next sections give extra detail on the values the home agent MUST supply in the fields of Registration Reply messages โจ.
3.8.3.1. IP/UDP Fields ๐ฆ
This part is the exact rulebook for how home agents pick values for the IP and UDP header fields of a Registration Reply ๐.
IP Source Address: Copied from the IP Destination Address of the Registration Request, unless a multicast or broadcast address was used. If the IP Destination Address of the Registration Request was a broadcast or multicast address, the IP Source Address of the Registration Reply MUST be set to the home agent's (unicast) IP address ๐ธ.IP Destination Address: Copied from the IP Source Address of the Registration Request ๐.UDP Source Port: Copied from the UDP Destination Port of the Registration Request โจ.UDP Destination Port: Copied from the UDP Source Port of the Registration Request ๐ซถ.
Okay, now the deregistration plot twist ๐ญ. When a Registration Reply answers a Registration Request that asks to deregister the mobile node (the Lifetime is zero and the Care-of Address equals the mobile node's home address), and the IP Source Address was also set to the mobile node's home address (this is the normal way a mobile node deregisters when it gets back home), the IP Destination Address in the Registration Reply will be set to the mobile node's home address, copied from the IP Source Address of the Request ๐ .
In this case, when the home agent transmits the Reply, it MUST send it directly onto the home network as if the mobile node were at home, bypassing any mobility binding list entry that may still exist at the home agent for the destination mobile node ๐. Like, for a mobile node returning home after being registered with a care-of address, if its new Registration Request is not accepted by the home agent, the mobility binding list entry will still say datagrams for the mobile node should be tunneled to its registered care-of address. When sending the Reply that rejects this Request, this existing binding list entry MUST be ignored, and the home agent MUST transmit this Reply as if the mobile node were at home ๐ ๐.
3.8.3.2. Registration Reply Fields ๐
This part spells out how home agents fill in the fixed portion of a Registration Reply ๐ง.
The Code field is chosen using the rules from the earlier sections ๐ฅ. When replying to an accepted registration, a home agent SHOULD respond with Code 1 if it does not support simultaneous registrations ๐.
The Lifetime field MUST be copied from the matching field in the Registration Request, unless the requested value is greater than the maximum length of time the home agent is willing to provide the service. In that case, the Lifetime MUST be set to the length of time the home agent will actually provide the service โณ. This reduced Lifetime SHOULD be the maximum Lifetime the home agent allows (for this mobile node and care-of address) ๐.
If the Home Address field of the Registration Request is nonzero, it MUST be copied into the Home Address field of the Registration Reply ๐ก. Otherwise, if the Home Address field of the Registration Request is zero as specified in section 3.6, the home agent SHOULD arrange for a home address to be selected for the mobile node, and put the selected address into the Home Address field of the Registration Reply โจ. For more on the case where mobile nodes identify themselves with an NAI instead of their IP home address, see [6] ๐ฆ.
If the Home Agent field in the Registration Request contains a unicast address of this home agent, then that field MUST be copied into the Home Agent field of the Registration Reply ๐. Otherwise, the home agent MUST set the Home Agent field in the Registration Reply to its unicast address. In this latter case, the home agent MUST reject the registration with a suitable code (e.g., Code 136) so the mobile node can't end up registered with two or more home agents at once ๐๐ซ.
3.8.3.3. Extensions ๐งฉ
This part describes the order of any required and any optional Mobile IP Extensions that a home agent tacks onto a Registration Reply. The following ordering MUST be followed ๐:
- (a) The IP header, followed by the UDP header, followed by the fixed-length portion of the Registration Reply,
- (b) If present, any non-authentication Extensions used by the mobile node (which may or may not also be used by the foreign agent),
- (c) The Mobile-Home Authentication Extension,
- (d) If present, any non-authentication Extensions used only by the foreign agent, and
- (e) The Foreign-Home Authentication Extension, if present.
Note that items (a) and (c) MUST appear in every Registration Reply sent by the home agent ๐. Items (b), (d), and (e) are optional. However, item (e) MUST be included when the home agent and the foreign agent share a mobility security association ๐ซถ.
4. Routing Considerations ๐บ๏ธ
This section is all about how mobile nodes, home agents, and (possibly) foreign agents work together to route datagrams to and from mobile nodes that are connected to a foreign network ๐. The mobile node tells its home agent where it currently is using the registration procedure from Section 3 ๐ฌ. For how the mobile node's home address sits relative to its home agent, and the mobile node itself relative to any foreign agent it might try to register with, check the protocol overview in Section 1.7 ๐.
4.1. Encapsulation Types ๐ฆ
Home agents and foreign agents MUST support tunneling datagrams using IP in IP encapsulation [32] ๐. Any mobile node that uses a co-located care-of address MUST support receiving datagrams tunneled using IP in IP encapsulation ๐. Minimal encapsulation [34] and GRE encapsulation [16] are alternate encapsulation methods which MAY optionally be supported by mobility agents and mobile nodes ๐. When the mobile node asks for one of these alternatives, using it is otherwise up to the home agent ๐ฆ.
4.2. Unicast Datagram Routing ๐ฃ๏ธ
4.2.1. Mobile Node Considerations ๐ฑ
When a mobile node is connected to its home network, it runs without any mobility services ๐ . It acts just like any other (fixed) host or router, bestie ๐ . How a mobile node picks a default router when it's home, or away from home using a co-located care-of address, is outside the scope of this document ๐. ICMP Router Advertisement [10] is one such method โจ.
When a mobile node is registered on a foreign network, it picks a default router using these rules ๐งญ:
- If the mobile node is registered using a foreign agent care-of address, it MAY use its foreign agent as a first-hop router ๐ท. The foreign agent's MAC address can be learned from Agent Advertisement. Otherwise, the mobile node MUST choose its default router from among the Router Addresses advertised in the ICMP Router Advertisement portion of that Agent Advertisement message ๐.
- If the mobile node is registered directly with its home agent using a co-located care-of address, then the mobile node SHOULD choose its default router from among those advertised in any ICMP Router Advertisement message it receives, where its externally obtained care-of address and the Router Address match under the network prefix ๐. If the mobile node's externally obtained care-of address matches the IP source address of the Agent Advertisement under the network prefix, the mobile node MAY also consider that IP source address as another possible choice for the IP address of a default router ๐ญ. The network prefix MAY be obtained from the Prefix-Lengths Extension in the Router Advertisement, if present โจ. The prefix MAY also be obtained through other mechanisms beyond the scope of this document ๐ฎ.
Here's the vibe check ๐ซ : while they're away from the home network, mobile nodes MUST NOT broadcast ARP packets to find the MAC address of another Internet node ๐ซ. So the (possibly empty) list of Router Addresses from the ICMP Router Advertisement portion of the message isn't useful for picking a default router, unless the mobile node has some way that doesn't involve broadcast ARP (and isn't specified in this document) to get the MAC address of one of the routers in the list ๐ง. Similarly, without unspecified mechanisms for getting MAC addresses on foreign networks, the mobile node MUST ignore redirects to other routers on foreign networks ๐ โโ๏ธ.
4.2.2. Foreign Agent Considerations ๐ก๏ธ
When a foreign agent receives an encapsulated datagram sent to its advertised care-of address, it MUST compare the inner destination address to the entries in its visitor list ๐. If the destination doesn't match the address of any mobile node in the visitor list, the foreign agent MUST NOT forward the datagram without modifications to the original IP header, because otherwise a routing loop is likely to result ๐. The datagram SHOULD be silently discarded ๐คซ. ICMP Destination Unreachable MUST NOT be sent when a foreign agent can't forward an incoming tunneled datagram ๐. Otherwise, the foreign agent forwards the decapsulated datagram to the mobile node ๐.
The foreign agent MUST NOT advertise to other routers in its routing domain, or to any other mobile node, the presence of a mobile router (Section 4.5) or mobile node in its visitor list ๐ค.
The foreign agent MUST route datagrams it receives from registered mobile nodes ๐. At a minimum, this means the foreign agent must verify the IP Header Checksum, decrement the IP Time To Live, recompute the IP Header Checksum, and forward such datagrams to a default router โ .
A foreign agent MUST NOT use broadcast ARP for a mobile node's MAC address on a foreign network ๐ข๐ซ. It may get the MAC address by copying the information from an Agent Solicitation or a Registration Request sent by a mobile node ๐งพ. A foreign agent's ARP cache entry for the mobile node's IP address MUST NOT be allowed to expire before the mobile node's visitor list entry expires, unless the foreign agent has some way other than broadcast ARP to refresh the MAC address associated with the mobile node's IP address โฐ.
Each foreign agent SHOULD support the mandatory features for reverse tunneling [27] ๐๐.
4.2.3. Home Agent Considerations โจ
okay so the home agent MUST be able to intercept any datagrams on the home network that are addressed to the mobile node while it's registered away from home ๐ โ๏ธ. Proxy and gratuitous ARP MAY be used to make that interception happen, as specified in Section 4.6. ๐ฆ
The home agent must check the IP Destination Address of every arriving datagram to see if it matches the home address of any of its mobile nodes that are registered away from home ๐. If it does, the home agent tunnels the datagram to the mobile node's currently registered care-of address (or addresses) ๐. If the home agent supports the optional capability of multiple simultaneous mobility bindings, it tunnels a copy to each care-of address in the mobile node's mobility binding list ๐. If the mobile node has no current mobility bindings, the home agent MUST NOT attempt to intercept datagrams destined for the mobile node, so it won't generally receive those datagrams either ๐.
BUT here's the plot twist ๐ญ: if the home agent is also a router handling common IP traffic, it's possible it will still receive those datagrams and be asked to forward them onto the home network. In that case, the home agent MUST assume the mobile node is at home and simply forward the datagram directly onto the home network ๐ก๐.
For multihomed home agents, the source address in the outer IP header of the encapsulated datagram MUST be the address sent to the mobile node in the home agent field of the registration reply. Basically, the home agent cannot use the address of some other network interface as the source address ๐ซ๐ .
See Section 4.1 for the methods of encapsulation that can be used for tunneling ๐ง. Nodes implementing tunneling SHOULD also implement the "tunnel soft state" mechanism [32], which lets ICMP error messages returned from the tunnel get reflected back correctly to the original senders of the tunneled datagrams ๐โจ.
Home agents MUST decapsulate packets addressed to themselves that were sent by a mobile node for the purpose of maintaining location privacy, as described in Section 5.5 ๐ต๏ธโโ๏ธ๐. This feature is also required for supporting reverse tunneling [27] ๐.
If the Lifetime for a given mobility binding expires before the home agent has received another valid Registration Request for that mobile node, that binding gets deleted from the mobility binding list ๐๏ธ. The home agent MUST NOT send any Registration Reply message just because the mobile node's binding has expired ๐ โโ๏ธ. The entry in the visitor list of the mobile node's current foreign agent will expire naturally, probably at around the same time the binding expires at the home agent โฐ. When a mobility binding's lifetime expires, the home agent MUST delete that binding, but it MUST retain any other (non-expired) simultaneous mobility bindings it holds for the mobile node ๐.
When a home agent receives a datagram that it intercepted for one of its mobile nodes registered away from home, the home agent MUST examine the datagram to check whether it's already encapsulated ๐ง. If it is, special rules apply to forwarding that datagram to the mobile node:
- If the inner (encapsulated) Destination Address is the same as the outer Destination Address (the mobile node), then the home agent MUST also examine the outer Source Address of the encapsulated datagram (the source address of the tunnel). If this outer Source Address is the same as the mobile node's current care-of address, the home agent MUST silently discard that datagram to prevent a likely routing loop ๐๐ซ. If, instead, the outer Source Address is NOT the same as the mobile node's current care-of address, then the home agent SHOULD forward the datagram to the mobile node. To forward it in this case, the home agent MAY simply alter the outer Destination Address to the care-of address, rather than re-encapsulating the datagram ๐ช.
- Otherwise (the inner Destination Address is NOT the same as the outer Destination Address), the home agent SHOULD encapsulate the datagram again (nested encapsulation), with the new outer Destination Address set equal to the mobile node's care-of address ๐ช. So the home agent forwards the entire datagram to the mobile node the same way it would any other datagram, whether it's already encapsulated or not ๐ซถ.
4.3. Broadcast Datagrams ๐ฃ
When a home agent receives a broadcast datagram, it MUST NOT forward that datagram to any mobile nodes in its mobility binding list other than the ones that have requested forwarding of broadcast datagrams ๐ โโ๏ธ. A mobile node MAY request forwarding of broadcast datagrams by setting the 'B' bit in its Registration Request message (Section 3.3) ๐โโ๏ธ. For each such registered mobile node, the home agent SHOULD forward received broadcast datagrams to it. Which specific categories of broadcast datagrams get forwarded is a matter of configuration at the home agent ๐๏ธโจ.
If the 'D' bit was set in the mobile node's Registration Request message, which means the mobile node is using a co-located care-of address, the home agent simply tunnels the appropriate broadcast IP datagrams to the mobile node's care-of address ๐ฏ. Otherwise (the 'D' bit was NOT set), the home agent first encapsulates the broadcast datagram in a unicast datagram addressed to the mobile node's home address, and then tunnels that encapsulated datagram to the foreign agent ๐ฆ๐ฆ. This extra layer of encapsulation is required so the foreign agent can figure out which mobile node should receive the datagram after it's decapsulated ๐ต๏ธโโ๏ธ. When the foreign agent gets the unicast encapsulated datagram, it detunnels it and delivers it to the mobile node like any other datagram ๐ . In either case, the mobile node must decapsulate the datagram it receives in order to recover the original broadcast datagram ๐.
4.4. Multicast Datagram Routing ๐ธ
As mentioned previously, a mobile node that's connected to its home network functions the same way as any other (fixed) host or router ๐ . So when it's at home, a mobile node works identically to other multicast senders and receivers. This section therefore describes how a mobile node visiting a foreign network behaves ๐งณโจ.
In order to receive multicasts, a mobile node MUST join the multicast group in one of two ways ๐ก. First, a mobile node MAY join the group via a (local) multicast router on the visited subnet. This option assumes there's a multicast router on the visited subnet ๐ฐ๏ธ. If the mobile node is using a co-located care-of address, it SHOULD use that address as the source IP address of its IGMP [11] messages. Otherwise, it MAY use its home address ๐ชช.
Alternatively, a mobile node that wants to receive multicasts MAY join groups via a bi-directional tunnel to its home agent, assuming the home agent is a multicast router ๐. The mobile node tunnels IGMP messages to its home agent, and the home agent forwards multicast datagrams down the tunnel to the mobile node ๐. For packets tunneled to the home agent, the source address in the IP header SHOULD be the mobile node's home address ๐.
The rules for delivering multicast datagrams to mobile nodes in this case are identical to the ones for broadcast datagrams (Section 4.3) ๐ฏโโ๏ธ. Namely, if the mobile node is using a co-located care-of address (the 'D' bit was set in its Registration Request), then the home agent SHOULD tunnel the datagram to that care-of address. Otherwise, the home agent MUST first encapsulate the datagram in a unicast datagram addressed to the mobile node's home address, and then MUST tunnel the resulting datagram (nested tunneling) to the mobile node's care-of address ๐ช. For this reason, the mobile node MUST be capable of decapsulating packets sent to its home address in order to receive multicast datagrams using this method ๐.
A mobile node that wants to send datagrams to a multicast group also has two options: (1) send directly on the visited network, or (2) send via a tunnel to its home agent ๐บ๏ธ. Because multicast routing in general depends on the IP source address, a mobile node that sends multicast datagrams directly on the visited network MUST use a co-located care-of address as the IP source address ๐ฏ. Similarly, a mobile node that tunnels a multicast datagram to its home agent MUST use its home address as the IP source address of both the (inner) multicast datagram and the (outer) encapsulating datagram ๐. This second option assumes the home agent is a multicast router ๐.
4.5. Mobile Routers ๐ขโจ
Okay bestie, so a mobile node can literally be a router ๐ซ that's responsible for moving one or more whole networks around together. We're talking airplane, ship, train, automobile, bicycle, or even a kayak ๐ถ. The nodes connected to a network served by the mobile router can be fixed nodes, mobile nodes, or routers themselves ๐ . In this doc, we call these networks "mobile networks" ๐ฆ.
A mobile router MAY act as a foreign agent and provide a foreign agent care-of address to mobile nodes connected to the mobile network ๐ซถ. Here's how routing to a mobile node through a mobile router works in this case, step by step ๐:
a) A laptop computer gets disconnected from its home network and later plugged into a network port in the seat back of an aircraft ๐ปโ๏ธ. The laptop uses Mobile IP to register on this foreign network. It gets a foreign agent care-of address from an Agent Advertisement sent by the aircraft's foreign agent ๐.
b) The aircraft network is mobile too ๐ญ. Say the node acting as the foreign agent on the aircraft is also the default router that connects the aircraft network to the rest of the Internet ๐. When the aircraft is at home, this router is attached to some fixed network at the airline's headquarters, and that's the router's home network ๐ข. While the aircraft is in flight, this router keeps registering over its radio link with a series of foreign agents on the ground below ๐ก. This router's home agent is a node on the fixed network at the airline's headquarters ๐ง.
c) A correspondent node sends a datagram to the laptop, addressed to the laptop's home address ๐. This datagram is first routed to the laptop's home network ๐ .
d) The laptop's home agent intercepts the datagram on the home network and tunnels it to the laptop's care-of address ๐. In this example, that care-of address belongs to the node acting as router and foreign agent on the aircraft โ๏ธ. Normal IP routing sends the datagram to the fixed network at the airline's headquarters ๐ข.
e) The aircraft router and foreign agent's home agent there intercepts the datagram and tunnels it to its current care-of address ๐. In this example, that care-of address belongs to a foreign agent on the ground below the aircraft ๐. At this point, the original datagram from the correspondent node has been encapsulated twice: once by the laptop's home agent, and again by the aircraft's home agent ๐คฏ.
f) The foreign agent on the ground decapsulates the datagram ๐ง . What's left is a datagram that's still encapsulated by the laptop's home agent, with a destination address of the laptop's care-of address ๐ฆ. The ground foreign agent sends that datagram over its radio link to the aircraft ๐ก.
g) The foreign agent on the aircraft decapsulates the datagram, which gives back the original datagram from the correspondent node, now with a destination address of the laptop's home address ๐. The aircraft foreign agent then delivers the datagram over the aircraft network to the laptop's link-layer address ๐.
So that example showed the case where a mobile node is attached to a mobile network. The mobile node is mobile with respect to the network, and the network is itself mobile too (here, with respect to the ground) ๐. Now, if the node is instead fixed with respect to the mobile network (meaning the mobile network is the fixed node's home network), then either of two methods may be used to get datagrams from correspondent nodes routed to the fixed node ๐ฏ.
A home agent MAY be configured to have a permanent registration for the fixed node. That registration indicates the mobile router's address as the fixed host's care-of address ๐. The mobile router's home agent will usually be used for this purpose ๐ฆ. The home agent is then responsible for advertising connectivity to the fixed node using normal routing protocols ๐ฃ. Any datagrams sent to the fixed node will therefore use nested tunneling, as described above ๐ช.
Alternatively, the mobile router MAY advertise connectivity to the entire mobile network using normal IP routing protocols, through a bi-directional tunnel to its own home agent ๐ค๏ธ. This method avoids the need for nested tunneling of datagrams ๐โจ.
4.6. ARP, Proxy ARP, and Gratuitous ARP โจ
okay so ARP [36] is the thing that turns an IP address into a link-layer address, and it gets messy once wireless or mobile nodes are involved ๐ so this part has special rules. These requirements apply to all home networks where ARP is used for address resolution ๐ซถ
besides the normal ARP lookup (asking "who has this IP?" and getting a link-layer address back), this document cares about two special uses ๐
- Proxy ARP [39] is when one node sends an ARP Reply on behalf of another node that can't or won't answer its own ARP Requests ๐ The proxy reverses the
Sender Protocol AddressandTarget Protocol Addressfields as described in [36], but puts in some configured link-layer address (usually its own) in theSender Hardware Addressfield. The node that gets the Reply then links that link-layer address to the IP address of the original target, so it sends future datagrams for that target to the proxy ๐ฆ - Gratuitous ARP [45] is an ARP packet a node sends on its own, out of nowhere, to make other nodes update an entry in their ARP cache ๐ธ A gratuitous ARP MAY use either an ARP Request or an ARP Reply packet. Either way, the
ARP Sender Protocol AddressandARP Target Protocol Addressare both set to the IP address of the cache entry being updated, and theARP Sender Hardware Addressis set to the link-layer address that entry should now point to. When it's an ARP Reply, theTarget Hardware Addressis also set to that link-layer address (this field isn't used in an ARP Request) โญ
for a gratuitous ARP, no matter which packet type, the ARP packet MUST be sent as a local broadcast on the local link ๐ข As [36] says, any node that receives any ARP packet (Request or Reply) MUST update its local ARP cache with the Sender Protocol and Hardware Addresses from that packet, but only if it already has an entry for that IP address ๐ This applies even to ARP Request packets, and to ARP Reply packets that don't match any ARP Request the receiving node sent [36] (main character energy for the cache, honestly) ๐
while a mobile node is registered on a foreign network, its home agent uses proxy ARP [39] to answer any ARP Requests asking for the mobile node's link-layer address ๐ง When the home agent gets an ARP Request, it MUST check the target IP address of the Request. If that IP matches the home address of any mobile node it has a registered mobility binding for, the home agent MUST transmit an ARP Reply on the mobile node's behalf ๐ After swapping the sender and target addresses in the packet [39], the home agent MUST set the sender link-layer address in the packet to the link-layer address of its own interface that the Reply will go out on ๐ฅ
when a mobile node leaves its home network and registers a binding on a foreign network, its home agent uses gratuitous ARP to update the ARP caches of nodes on the home network ๐ซง That makes those nodes link the home agent's link-layer address to the mobile node's home (IP) address. If the home agent had no binding for the mobile node before (the mobile node was assumed to be at home), the home agent MUST transmit a gratuitous ARP on the mobile node's behalf ๐ This gratuitous ARP packet MUST go out as a broadcast on the link where the mobile node's home address lives. Broadcasts on the local link (like Ethernet) aren't always reliable, so the gratuitous ARP SHOULD be retransmitted a few times to boost its reliability ๐
when the mobile node goes back home, the mobile node and its home agent both use gratuitous ARP so every node on the home network updates its ARP cache and links the mobile node's own link-layer address to its home (IP) address again ๐ Before the mobile node sends its (de)Registration Request to the home agent, it MUST send this gratuitous ARP on its home network as a local broadcast on this link ๐ฃ The gratuitous ARP packet SHOULD be retransmitted a few times for reliability, but those retransmissions SHOULD happen in parallel with sending and processing the (de)Registration Request ๐โโ๏ธ
once the home agent receives and accepts that (de)Registration Request, it MUST also send a gratuitous ARP on the mobile node's home network ๐ This one links the mobile node's home address to the mobile node's own link-layer address. Both the mobile node and its home agent send gratuitous ARPs, because with wireless interfaces, the area in range of the mobile node is likely different from the area in range of its home agent ๐ก The home agent's ARP packet MUST be sent as a local broadcast on the mobile node's home link, and SHOULD be retransmitted a few times for reliability. Those retransmissions SHOULD, however, happen in parallel with sending and processing the (de)Registration Reply ๐ซ
while the mobile node is away from home, it MUST NOT send any broadcast ARP Request or ARP Reply messages ๐ โโ๏ธ It also MUST NOT reply to ARP Requests whose target IP address is its own home address, unless the ARP Request is unicast by a foreign agent it's trying to register with, or by a foreign agent it has an unexpired registration with. In that second case, the mobile node MUST use a unicast ARP Reply to answer the foreign agent ๐ซถ Also, if the mobile node is using a co-located care-of address and gets an ARP Request whose target IP address is that care-of address, the mobile node SHOULD reply to that ARP Request โจ One more thing: when sending a Registration Request on a foreign network, a mobile node may find a foreign agent's link-layer address by storing the address it gets in that foreign agent's Agent Advertisement, but NOT by sending a broadcast ARP Request message ๐ง
the exact order of all these ARP, proxy ARP, and gratuitous ARP rules, compared with sending and processing the mobile node's Registration Request and Registration Reply when leaving or returning home, really matters for the protocol to work right ๐ฏ
to sum it all up, when a mobile node leaves its home network, these steps MUST be done in this order ๐
- The mobile node decides to register away from home, maybe because it got an Agent Advertisement from a foreign agent and hasn't recently gotten one from its home agent.
- Before sending the Registration Request, the mobile node turns off its own future processing of any ARP Requests it might get asking for the link-layer address that matches its home address, except as needed to talk to foreign agents on visited networks.
- The mobile node sends its Registration Request.
- When the mobile node's home agent receives and accepts the Registration Request, it does a gratuitous ARP on the mobile node's behalf and starts using proxy ARP to answer ARP Requests asking for the mobile node's link-layer address. In that gratuitous ARP, the
ARP Sender Hardware Addressis set to the home agent's link-layer address. If the home agent rejects the Registration Request instead, the home agent does no ARP processing at all (neither gratuitous nor proxy).
when a mobile node later returns to its home network, these steps MUST be done in this order ๐ก
- The mobile node decides to register at home, maybe because it got an Agent Advertisement from its home agent.
- Before sending the Registration Request, the mobile node turns its own future processing of ARP Requests asking for its link-layer address back on.
- The mobile node does a gratuitous ARP for itself. In this gratuitous ARP, the
ARP Sender Hardware Addressis set to the mobile node's link-layer address. - The mobile node sends its Registration Request.
- When the mobile node's home agent receives and accepts the Registration Request, it stops using proxy ARP to answer ARP Requests asking for the mobile node's link-layer address, and then does a gratuitous ARP on the mobile node's behalf. In this gratuitous ARP, the
ARP Sender Hardware Addressis set to the mobile node's link-layer address. If the home agent rejects the Registration Request instead, the home agent MUST NOT change how it does ARP processing (gratuitous or proxy) for the mobile node. In that case, the home agent should act as if the mobile node hasn't returned home, and keep doing proxy ARP for it ๐ฅน
5. Security Considerations ๐จ
okay this part is SERIOUS bestie ๐ญ the mobile computing environment is potentially super different from ordinary computing. A lot of the time, mobile computers connect to the network over wireless links, and those links are especially vulnerable to passive eavesdropping, active replay attacks, and other active attacks ๐
5.1. Message Authentication Codes ๐
home agents and mobile nodes MUST be able to do authentication ๐ซถ The default algorithm is HMAC-MD5 [23], with a key size of 128 bits. The foreign agent MUST also support authentication using HMAC-MD5 with key sizes of 128 bits or greater, using manual key distribution. Keys with arbitrary binary values MUST be supported ๐๏ธ
the "prefix+suffix" use of MD5 to protect data and a shared secret is considered vulnerable to attack by the cryptographic community ๐ So if backward compatibility with existing Mobile IP implementations that use that mode is needed, new implementations SHOULD include keyed MD5 [41] as one of the extra authentication algorithms for producing and verifying the authentication data that comes with Mobile IP registration messages. For example, that's in the extensions specified in sections 3.5.2, 3.5.3, and 3.5.4 ๐
more authentication algorithms, algorithm modes, key distribution methods, and key sizes MAY also be supported for all of these extensions ๐
5.2. Areas of Security Concern in this Protocol ๐จ
okay bestie, this part is where the security stakes get real ๐ญ. The registration protocol here sends a mobile node's traffic over to its care-of address, aka a tunnel. That tunnel is a huge vulnerability if the registration isn't authenticated ๐. Redirecting traffic like this is widely seen as a security problem on today's Internet when it isn't authenticated [2]. Also, ARP has no authentication at all, so someone could potentially use it to steal another host's traffic ๐. And using "Gratuitous ARP" (Section 4.6) comes with all the same risks that ARP already has. Not me getting nervous about this ๐ซ .
5.3. Key Management ๐
this spec REQUIRES a strong authentication mechanism, which is keyed MD5, and that shuts down a lot of attacks against the Mobile IP registration protocol ๐. BUT key distribution is hard without a network key management protocol, so messages with the foreign agent aren't all required to be authenticated. In a commercial setting though, it could matter a lot to authenticate all messages between the foreign agent and the home agent. That way billing works, and service providers don't serve people who aren't legit customers ๐ .
5.4. Picking Good Random Numbers ๐ฒ
the strength of any authentication mechanism depends on a bunch of stuff: how strong the algorithm is, how secret the key is, how strong the key is, and how well the implementation was built ๐ฅ. This spec requires keyed MD5 to be implemented, but it doesn't rule out other authentication algorithms and modes โจ. For keyed MD5 to actually be useful, the 128-bit key must be both secret (known only to authorized parties) and pseudo-random ๐ง. If nonces are used for replay protection, they must be picked carefully too. Eastlake, et al. [14] has more info on generating pseudo-random numbers ๐.
5.5. Privacy ๐ซฃ
if you have sensitive data you don't want anyone peeking at, you should use mechanisms outside this document, like encryption, to protect it ๐. If you're worried about traffic analysis, you should consider appropriate use of link encryption. If you want absolute location privacy, the mobile node can make a tunnel to its home agent ๐ฆ. Then datagrams headed to correspondent nodes look like they're coming from the home network, so it can be harder to pinpoint where the mobile node actually is ๐ธ. All of these mechanisms are beyond the scope of this document, so that's a whole other story, bestie ๐.
5.6. Ingress Filtering ๐ง
lots of routers use security policies like "ingress filtering" [15], which block packets whose Source Address looks topologically wrong ๐ โโ๏ธ. In places where that's a problem, mobile nodes may use reverse tunneling [27] with the foreign agent supplied care-of address as the Source Address ๐. Reverse tunneled packets can pass through those routers normally, and the ingress filtering rules can still find the packet's true topological source, same as with packets from non-mobile nodes โจ.
5.7. Replay Protection for Registration Requests ๐
the Identification field lets the home agent check that a registration message was freshly made by the mobile node, and that an attacker didn't just replay an old one ๐ต๏ธโโ๏ธ. This section describes two methods: timestamps (mandatory) and "nonces" (optional). All mobile nodes and home agents MUST implement timestamp-based replay protection ๐. These nodes MAY also implement nonce-based replay protection, but see Appendix A ๐.
Which style of replay protection is in use between a mobile node and its home agent is part of the mobile security association ๐ซถ. A mobile node and its home agent MUST agree on which method they're using. How the Identification field gets read depends on the method, as explained in the subsections below ๐ง.
No matter which method you pick, the low-order 32 bits of the Identification MUST be copied unchanged from the Registration Request to the Reply ๐. The foreign agent uses those bits, plus the mobile node's home address, to match Registration Requests with their replies ๐ฅ. The mobile node MUST verify that the low-order 32 bits of any Registration Reply match what it sent in the Registration Request ๐ .
A new Registration Request's Identification MUST NOT be the same as the one in the request right before it, and SHOULD NOT repeat while the same security context is in use between the mobile node and the home agent ๐. Retransmission as in Section 3.6.3 is allowed โจ.
5.7.1. Replay Protection using Timestamps โฐ
the main idea of timestamp replay protection is simple: the sender puts the current time of day into the message, and the receiver checks that the timestamp is close enough to its own time of day ๐ซง. Unless the security association between the nodes says otherwise, a default value of 7 seconds MAY be used to limit the time difference. That value SHOULD be greater than 3 seconds ๐. Obviously the two nodes need time-of-day clocks that are adequately synchronized ๐ฐ๏ธ. As with any messages, time synchronization messages may be protected against tampering by an authentication mechanism, decided by the security context between the two nodes ๐.
If timestamps are used, the mobile node MUST set the Identification field to a 64-bit value formatted as the Network Time Protocol [26] specifies ๐. The low-order 32 bits of the NTP format are fractional seconds. Any of those bits that a time source can't supply SHOULD be generated from a good source of randomness ๐ธ. But here's the catch, bestie: with timestamps, the 64-bit Identification in a Registration Request from the mobile node MUST be greater than the one in any previous Registration Request. The home agent uses this field as a sequence number too ๐ข. Without that, a delayed duplicate of an earlier Registration Request could show up at the home agent (still within the clock sync the home agent needs), get applied out of order, and mess up the mobile node's current registered care-of address ๐ญ.
When a Registration Request with an authorization-enabling extension comes in, the home agent MUST check the Identification field for validity ๐ง. To be valid, the timestamp in the Identification field MUST be close enough to the home agent's time of day clock, and it MUST be greater than all previously accepted timestamps from that mobile node ๐ . Time tolerances and resynchronization details are specific to each mobility security association ๐ฆ.
If the timestamp is valid, the home agent copies the entire Identification field into the Registration Reply it sends back to the mobile node ๐ฅฐ. If the timestamp is NOT valid, the home agent copies only the low-order 32 bits into the Registration Reply, and fills in the high-order 32 bits from its own time of day. In this second case, the home agent MUST reject the registration by returning Code 133 (identification mismatch) in the Registration Reply ๐ซ.
As described in Section 3.6.2.1, the mobile node MUST verify that the low-order 32 bits of the Identification in the Registration Reply match the ones in the rejected registration attempt. Only after that can it use the high-order bits for clock resynchronization โณโจ.
5.7.2. Replay Protection using Nonces ๐ฒ
the core idea of nonce replay protection: node A includes a new random number in every message to node B, and checks that node B sends that same number back in its next message to node A ๐. Both messages use an authentication code to guard against tampering by an attacker ๐. Node B can also send its own nonces in all of its messages to node A, and node A echoes them back, so B can check that it's getting fresh messages too ๐ซถ.
The home agent may be expected to have the resources for computing pseudo-random numbers that work as nonces [14] ๐ง . It puts a new nonce into the high-order 32 bits of the Identification field in every Registration Reply ๐. It copies the low-order 32 bits of the Identification from the Registration Request into the low-order 32 bits of the Identification in the Reply ๐ฌ. When the mobile node gets an authenticated Registration Reply from the home agent, it saves the high-order 32 bits so it can use them as the high-order 32 bits of its next Registration Request ๐.
The mobile node is responsible for the low-order 32 bits of the Identification in each Registration Request. Ideally it should generate its own random nonces, but it may use any expedient method, including reusing the random value the home agent sent ๐. The method only matters to the mobile node, since it's the one checking for valid values in the Registration Reply ๐. The high-order and low-order 32 bits of the chosen Identification SHOULD both differ from their previous values ๐ฅ. So the home agent uses a new high-order value and the mobile node uses a new low-order value for every registration message โจ. The foreign agent uses the low-order value (plus the mobile host's home address) to match registration replies with pending Requests (Section 3.7.1) ๐ง.
If a registration message gets rejected because of an invalid nonce, the Reply always gives the mobile node a new nonce to use in the next registration. So the nonce protocol is self-synchronizing, which is honestly iconic ๐๐ซถ.
6. IANA Considerations ๐งพ
Mobile IP sets up several new number spaces for values used in different message fields ๐ธ. Those number spaces include the following:
- Mobile IP message types sent to UDP port
434, as defined in section 1.8. - types of extensions to Registration Request and Registration Reply messages (see sections 3.3 and 3.4, and also consult [27, 29, 6, 7, 12])
- values for the
Codein the Registration Reply message (see section 3.4, and also consult [27, 29, 6, 7, 12]) - Mobile IP defines so-called Agent Solicitation and Agent Advertisement messages. These are actually Router Discovery messages [10] with Mobile IP-specific extensions added. So they don't define a new name space, but they do define additional Router Discovery extensions as described below in Section 6.2. Also see Section 2.1 and consult [7, 12] ๐
There are additional Mobile IP numbering spaces specified in [7] ๐ฆ.
Info about assigning mobile-ip numbers that come from specs outside this document is given by IANA at http://www.iana.org/numbers.html. From that URL, follow the hyperlinks to [M] within the "Directory of General Assigned Numbers," and then go to the specific section for "Mobile IP Numbers" ๐โจ
6.1. Mobile IP Message Types ๐ฌ
okay bestie, so Mobile IP messages are defined as the ones sent to a message recipient at port 434 (UDP or TCP) ๐. The number space for them is in Section 1.8. New extension numbers need Expert Review, and you also need a specification ๐ [30]. Here are the message types standardized so far:
Type Name Section
---- -------------------------------------------- ---------
1 Registration Request 3.3
3 Registration Reply 3.4
6.2. Extensions to RFC 1256 Router Advertisement ๐ฐ๏ธ
RFC 1256 defines two ICMP message types, Router Advertisement and Router Solicitation. Mobile IP gets its own number space for extensions to Router Advertisement, and other protocols could use it too ๐. These are the extension types standardized for Mobile IP:
Type Name Reference
---- -------------------------------------------- ---------
0 One-byte Padding 2.1.3
16 Mobility Agent Advertisement 2.1.1
19 Prefix-Lengths 2.1.2
Approval of new extension numbers for Mobile IP is subject to Expert Review, and a specification is required [30] ๐ .
6.3. Extensions to Mobile IP Registration Messages ๐
The Mobile IP messages in this document, the ones listed in sections 1.8 and 6.1, can have extensions โจ. Here's the tea: every Mobile IP message extension shares one number space, even when they're applied to different messages ๐ซถ. That number space is specified within this document. New extension numbers need Expert Review, and a specification is required [30].
Type Name Reference
---- -------------------------------------------- ---------
0 One-byte Padding
32 Mobile-Home Authentication 3.5.2
33 Mobile-Foreign Authentication 3.5.3
34 Foreign-Home Authentication 3.5.4
6.4. Code Values for Mobile IP Registration Reply Messages ๐
The Mobile IP Registration Reply message, from section 3.4, has a Code field. The number space for those Code values is also specified in Section 3.4 ๐ฅ. The Code space is split up by how the registration went: a success, a denial from the foreign agent, or a denial from the home agent. It's laid out like this:
0-8 Success Codes
9-63 No allocation guidelines currently exist
64-127 Error Codes from the Foreign Agent
128-192 Error Codes from the Home Agent
193-255 No allocation guidelines currently exist
New Code values need Expert Review [30] ๐ง.
7. Acknowledgments ๐ซถ
Special thanks to Steve Deering (Xerox PARC), along with Dan Duchamp and John Ioannidis (JI) (Columbia University), for forming the working group, chairing it, and putting so much love into its early days ๐. Columbia's early Mobile IP work is in [18, 19, 17].
Thanks also to Kannan Alaggapan, Greg Minshall, Tony Li, Jim Solomon, Erik Nordmark, Basavaraj Patil, and Phil Roberts, who kept the group going while they were chairing, and for all their super useful comments ๐ธ.
Thanks to the active members of the Mobile IP Working Group, especially the ones who contributed text, listed here in alphabetical order ๐:
- Ran Atkinson (Naval Research Lab),
- Samita Chakrabarti (Sun Microsystems)
- Ken Imboden (Candlestick Networks, Inc.)
- Dave Johnson (Carnegie Mellon University),
- Frank Kastenholz (FTP Software),
- Anders Klemets (KTH),
- Chip Maguire (KTH),
- Alison Mankin (ISI)
- Andrew Myles (Macquarie University),
- Thomas Narten (IBM)
- Al Quirt (Bell Northern Research),
- Yakov Rekhter (IBM), and
- Fumio Teraoka (Sony).
- Alper Yegin (NTT DoCoMo)
Thanks to Charlie Kunzinger and Bill Simpson, the editors who wrote the first drafts of this document based on the Working Group's discussions. A lot of the new text in the later revisions before RFC 2002 came from Jim Solomon and Dave Johnson ๐ฆ.
Thanks to Greg Minshall (Novell), Phil Karn (Qualcomm), Frank Kastenholz (FTP Software), and Pat Calhoun (Sun Microsystems) for their generous support in hosting interim Working Group meetings ๐.
Sections 1.10 and 1.11, which specify new extension formats for aggregatable extension types, came from a specification document called "Mobile IP Extensions Rationalization (MIER)", written by:
- Mohamed M.Khalil, Nortel Networks
- Raja Narayanan, nVisible Networks
- Haseeb Akhtar, Nortel Networks
- Emad Qaddoura, Nortel Networks
Thank you to these authors, and also to the people who did extra MIER work: Basavaraj Patil, Pat Calhoun, Neil Justusson, N. Asokan, and Jouni Malinen ๐.
A. Patent Issues โ๏ธ
The IETF has been notified of intellectual property rights claimed in regard to some or all of the specification in this document. For more information, consult the online list of claimed rights.
The IETF takes no position on the validity or scope of any intellectual property or other rights that might be claimed to apply to the implementation or use of the technology described in this document, or on whether any license under those rights might or might not be available. It also doesn't claim to have tried to identify any such rights. Information on the IETF's procedures for rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication, any assurances of licenses to be made available, or the result of an attempt to get a general license or permission to use such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology required to practice this standard. Please send that information to the IETF Executive Director.
B. Link-Layer Considerations ๐
The mobile node MAY use link-layer mechanisms to decide that its point of attachment has changed. Those indications include the Down/Testing/Up interface status [24], and changes in cell or administration ๐ถ. The mechanisms are specific to the particular link-layer technology and are outside the scope of this document.
The Point-to-Point-Protocol (PPP) [42] and its Internet Protocol Control Protocol (IPCP) [25] negotiate the use of IP addresses ๐ค. The mobile node SHOULD first try to specify its home address, so that if it's attaching to its home network, the unrouted link will work properly. When the peer doesn't accept the home address, but a transient IP address is dynamically assigned to the mobile node, and the mobile node can support a co-located care-of address, the mobile node MAY register that address as a co-located care-of address. When the peer specifies its own IP address, that address MUST NOT be assumed to be a foreign agent care-of address or the IP address of a home agent โ ๏ธ.
PPP extensions for Mobile IP are specified in RFC 2290 [44]. For more details on handling care-of address assignment from PPP in a more efficient way, check out that document ๐.
C. TCP Considerations ๐งต
C.1. TCP Timers โฑ๏ธ
When high-delay links (like SATCOM) or low-bandwidth links (like High-Frequency Radio) are in use, some TCP stacks may have retransmission timeouts that aren't adaptive enough (they're non-standard) ๐ฌ. Spurious retransmission timeouts can happen even when the link and network are working fine, just with high delay because of the medium in use. That can make it impossible to create or maintain TCP connections over those links, and it can cause unneeded retransmissions that eat up already scarce bandwidth. Vendors are encouraged to follow the algorithms in RFC 2988 [31] when implementing TCP retransmission timers. Vendors of systems designed for low-bandwidth, high-delay links should consult RFCs 2757 and 2488 [28, 1]. Designers of applications for mobile nodes should be sensitive to the possibility of timer-related difficulties ๐ซ .
C.2. TCP Congestion Management ๐ฆ
Mobile nodes often use media that are more likely to introduce errors, which effectively causes more packets to be dropped ๐. That creates a conflict with the congestion management mechanisms in modern versions of TCP [21]. When a packet is dropped, the correspondent node's TCP implementation is likely to react as if there were network congestion, and start the slow-start mechanisms [21] designed for that problem. Those mechanisms aren't appropriate for overcoming errors introduced by the links themselves, though, and they end up magnifying the discontinuity caused by the dropped packet. This problem has been analyzed by Caceres, et al. [5]. TCP approaches to handling errors that might interfere with congestion management are discussed in documents from the [pilc] working group [3, 9]. Those approaches are beyond the scope of this document, but they show that giving mobile nodes performance transparency means understanding mechanisms outside the network layer ๐ก. Higher media error rates also mean we should avoid designs that systematically drop packets. Those designs might otherwise look good when making engineering tradeoffs ๐.
D. Example Scenarios ๐
This section shows example Registration Requests for several common scenarios ๐ฌ.
D.1. Registering with a Foreign Agent Care-of Address ๐๏ธ
Here, the mobile node gets an Agent Advertisement from a foreign agent and wants to register with that agent using the advertised foreign agent care-of address. The mobile node only wants IP-in-IP encapsulation, doesn't want broadcasts, and doesn't want simultaneous mobility bindings ๐:
IP fields:
Source Address = mobile node's home address
Destination Address = copied from the IP source address of the
Agent Advertisement
Time to Live = 1
UDP fields:
Source Port = <any>
Destination Port = 434
Registration Request fields:
Type = 1
S=0,B=0,D=0,M=0,G=0
Lifetime = the Registration Lifetime copied from the
Mobility Agent Advertisement Extension of the
Router Advertisement message
Home Address = the mobile node's home address
Home Agent = IP address of mobile node's home agent
Care-of Address = the Care-of Address copied from the
Mobility Agent Advertisement Extension of the
Router Advertisement message
Identification = Network Time Protocol timestamp or Nonce
Extensions:
An authorization-enabling extension (e.g., the
Mobile-Home Authentication Extension)
D.2. Registering with a Co-Located Care-of Address ๐
okay so picture this: the mobile node walks into a foreign network with no foreign agents at all ๐ so it goes to a DHCP server [13] and grabs an address to use as its co-located care-of address. It's also giving full main character energy, because it supports every form of encapsulation (IP-in-IP, minimal encapsulation, and GRE) ๐ and it wants a copy of the broadcast datagrams from its home network. It also does not want simultaneous mobility bindings ๐
IP fields:
Source Address = care-of address obtained from DHCP server
Destination Address = IP address of home agent
Time to Live = 64
UDP fields:
Source Port = <any>
Destination Port = 434
Registration Request fields:
Type = 1
S=0,B=1,D=1,M=1,G=1
Lifetime = 1800 (seconds)
Home Address = the mobile node's home address
Home Agent = IP address of mobile node's home agent
Care-of Address = care-of address obtained from DHCP server
Identification = Network Time Protocol timestamp or Nonce
Extensions:
The Mobile-Home Authentication Extension
D.3. Deregistration ๐ง
this one is the homecoming arc ๐ก the mobile node is back on its home network and wants to deregister all of its care-of addresses with its home agent. bye bestie, we're done here ๐
IP fields:
Source Address = mobile node's home address
Destination Address = IP address of home agent
Time to Live = 1
UDP fields:
Source Port = <any>
Destination Port = 434
Registration Request fields:
Type = 1
S=0,B=0,D=0,M=0,G=0
Lifetime = 0
Home Address = the mobile node's home address
Home Agent = IP address of mobile node's home agent
Care-of Address = the mobile node's home address
Identification = Network Time Protocol timestamp or Nonce
Extensions:
An authorization-enabling extension (e.g., the
Mobile-Home Authentication Extension)
E. Applicability of Prefix-Lengths Extension ๐ก
okay this part is giving caution tape ๐ง the Prefix-Lengths Extension gets a little sus over wireless links, because wireless coverage areas are super irregular. so two foreign agents can advertise the same prefix and still give prospective mobile nodes totally different connectivity ๐ญ which is why the Prefix-Lengths Extension SHOULD NOT be included in the advertisements those agents send in that kind of setup.
foreign agents on different wireless interfaces would have to cooperate through special protocols to get identical coverage in space, and only then could they claim their wireless interfaces sit on the same subnetwork ๐ฆ on wired interfaces it's simpler: a mobile node that disconnects and then connects to a new point of attachment may well send a new Registration Request, whether or not the new advertisement is on the same medium as the last one it recorded. and finally, in areas packed with foreign agents, it would seem unwise to require routing protocols to propagate the subnet prefix of every single wireless foreign agent. that could quickly run out of space in routing tables, add unwarranted time to processing routing updates, and make route selection slower if routes (which are almost always unnecessary) get stored for wireless "subnets" ๐ฅด
F. Interoperability Considerations ๐ซถ
this revision of the spec is basically a glow-up of RFC 2002 โจ it fixes ambiguities from the earlier text so things work better together. implementations that do authentication with the new, more precisely specified algorithm can still play nice with earlier implementations that did what was originally expected when producing authentication data. that used to be a major source of non-interoperability, so this is a big win ๐
BUT, and this is a big but ๐ some new features can cause interoperability problems with older implementations if you actually use them. everything from RFC 2002 works with the new implementations except V-J compression [20] ๐ here are the spots where things might get messy when a node following this revised spec tries to talk to a node following RFC 2002:
- A client that expects some of the newly mandatory features (like reverse tunneling) from a foreign agent is still interoperable, as long as it pays attention to the
T'bit. - Mobile nodes that use the NAI extension to identify themselves would not work with old mobility agents.
- Mobile nodes that use a zero home address and expect to receive their home address in the Registration Reply would not work with old mobility agents.
- Mobile nodes that attempt to authenticate themselves without using the Mobile-Home authentication extension will be unable to successful register with their home agent.
the good news is that a robust, well-configured mobile node can usually recover in all of these cases ๐ซก if it takes reasonable action when it gets a Registration Reply with an error code that explains why it was rejected. for example, if a mobile node sends a registration request that gets rejected because it had the wrong kind of authentication extension, it could retry the registration with a mobile-home authentication extension, because the foreign agent and/or home agent in that case won't be configured to demand the alternative authentication data ๐
G. Changes since RFC 2002 ๐
this section is the tea โ it spills all the differences between the original Mobile IP base specification (RFC 2002 and ff.) and this revised protocol spec for Mobile IP. buckle up ๐ข
G.1. Major Changes ๐
- the Destination IP address of a Registration Reply sent from a Foreign Agent now has a spec, so it can never end up going to IP address 0.0.0.0 ๐ โโ๏ธ
- two new formats for Mobile IP extensions are specified, based on the ideas in MIER ๐งฉ
- the SPI of the MN-HA authentication extension is now part of the data the authentication algorithm has to be computed over ๐
- the Van-Jacobson Compression feature got eliminated ๐ (bye V-J)
- foreign agents MAY send advertisements faster than once per second, as long as they're chosen so the advertisements don't burden the capacity of the local link ๐๏ธ for simplicity, the foreign agent now MAY send advertisements at an interval less than 1/3 the advertised ICMP Lifetime
- foreign agents SHOULD support reverse tunneling, and home agents MUST support decapsulation of reverse tunnels ๐
- the preconfiguration requirements in section 3.6 for the mobile node got updated to match the capability from RFC 2794 [6], where the mobile node can identify itself using its NAI and then get a home address from the Registration Reply ๐ชช
- section 3.7.3.1 changed so a foreign agent is not required to discard Registration Replies whose Home Address field doesn't match any pending Registration Request ๐
- registrations can now be authenticated with a security association between the mobile node and a suitable authentication entity that the home agent accepts ๐ค the spec also defines the "Authorization-enabling Extension," which is an authentication extension that makes a registration message acceptable to the recipient. this is needed according to the specification in [6]
- HMAC-MD5 is now mandated instead of the "prefix+suffix" mode of MD5 that RFC 2002 originally mandated ๐
- the mobile node SHOULD take the first care-of address in a list offered by a foreign agent, and MAY try each subsequent advertised address in turn if the attempted registrations get rejected by the foreign agent ๐
- a mobility agent SHOULD only put its own addresses into the initial (i.e., not mobility-related) list of routers in the mobility advertisement. RFC 2002 suggests that a mobility agent might advertise other default routers, so this clears that up ๐งน
- a mobile node MUST ignore reserved bits in Agent Advertisements, instead of discarding those advertisements. that way new bits can be defined later without messing up a mobile node's ability to use the advertisements, even when the newly defined bits aren't understood ๐ฑ foreign agents can also set the `R' bit so the new bits get handled by themselves instead of some legacy mobility agent ๐ก๏ธ
- the foreign agent now checks that the indicated home agent address doesn't belong to any of its network interfaces before relaying a Registration Request ๐ต๏ธโโ๏ธ if that check fails and the foreign agent is not the mobile node's home agent, the foreign agent rejects the request with code 136 (unknown home agent address) โ
- while they're away from the home network, mobile nodes MUST NOT broadcast ARP packets to find the MAC address of another Internet node ๐ so the (possibly empty) list of Router Addresses from the ICMP Router Advertisement portion of the message isn't useful for picking a default router, unless the mobile node has some means that doesn't involve broadcast ARP, and that isn't specified in this document, for getting the MAC address of one of the routers in the list. similarly, without unspecified mechanisms for getting MAC addresses on foreign networks, the mobile node MUST ignore redirects to other routers on foreign networks ๐บ๏ธ
- a foreign agent MUST NOT use broadcast ARP for a mobile node's MAC address on a foreign network. it can get the MAC address by copying the information from an Agent Solicitation or a Registration Request sent from a mobile node ๐
- a foreign agent's ARP cache entry for the mobile node's IP address MUST NOT be allowed to expire before the mobile node's visitor list entry expires, unless the foreign agent has some way other than broadcast ARP to refresh the MAC address associated with the mobile node's IP address โณ
- at the end of section 4.6, it's clarified that a home agent MUST NOT make any changes to the way it performs proxy ARP after it rejects an invalid deregistration request ๐ซ
- in section 4.2.3, multihomed home agents MUST use the the address sent to the mobile node in the home agent field of the registration reply as the source address in the outer IP header of the encapsulated datagram ๐ฆ
- the 'T' bit got inserted into its proper place in the Registration Request message format (section 3.3) ๐งท
G.2. Minor Changes
- okay so registration replies can now be processed by the mobile node even when there's no Mobile-Home Authentication extension ๐ซถ, as long as they're carrying a rejection code from the foreign agent ๐
- the foreign agent MAY set a max number of pending registrations it's willing to keep track of (typically 5) ๐ง. Any extra registrations SHOULD then get rejected with code 66. The foreign agent MAY also delete a pending Registration Request once it's been pending for more than 7 seconds, and if it does, it SHOULD reject that Request with code 78 (registration timeout) โฐ
- the rule got relaxed a bit ๐ธ. When a mobile node has joined a multicast group at the router on the foreign network, the mobile node MUST still use its home address as the source IP address for multicast packets
- a mobility agent MAY use different settings for each of the
'R','H', and'F'bits on different network interfaces ๐ฆ - "recursive tunneling" is now called "nested tunneling" ๐ช
- the mobile node MAY use the IP source address of an agent advertisement as its default router address ๐
- keys with arbitrary binary values MUST be supported as part of mobility security associations ๐
- the default value may be chosen as 7 seconds for allowable time skews between a home agent and a mobile node that use timestamps for replay protection. This value SHOULD be greater than 3 seconds โฑ๏ธ
- Registration Requests with the
'D'bit set to 0, and specifying a care-of address the foreign agent didn't offer, MUST be rejected with code 77 (invalid care-of address) ๐ โโ๏ธ - the foreign agent SHOULD consider its own maximum value when handling the Lifetime field of the Registration Reply ๐ฏ
- the home agent MUST ignore the
'B'bit (instead of rejecting the Registration Request) if it doesn't support broadcasts ๐ก - there's advice that dynamic home agent discovery just isn't possible when routers change the IP destination address of a datagram from a subnet-directed broadcast address to 255.255.255.255 before injecting it into the destination subnet ๐
- when an Agent Advertisement is unicast to a mobile node, the specific IP home address of that mobile node MAY be used as the destination IP address ๐
- there's a reference to RFC 2290 in appendix B, which covers PPP operation ๐
- the IANA Considerations section was born ๐
- in section 3.8.3, a home agent SHOULD arrange the selection of a home address for a mobile node when the Registration Reply contains a zero Home Address ๐
G.3. Changes since revision 04 of RFC2002bis
okay this part is for the RFC editor to delete later ๐งน. It lists what changed between this version (...-06.txt) and the previous one (...-04.txt) ๐
- HMAC-MD5 should be considered for use in place of the "prefix+suffix" mode of MD5 that RFC 2002 originally mandated ๐
- there's a reference to RFC 2290 in appendix B, which covers PPP operation ๐
- the IANA Considerations section got a glow-up ๐
- the Changes section got a glow-up too โจ
- the Patents section got swapped out for wording mandated by RFC 2026 ๐
- citations got updated ๐
H. Example Messages ๐
H.1. Example ICMP Agent Advertisement Message Format
Here's the ICMP Agent Advertisement layout, 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 | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Num Addrs |Addr Entry Size| Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router Address[1] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Preference Level[1] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router Address[2] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Preference Level[2] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 16 | Length | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Registration Lifetime |R|B|H|F|M|G|r|T| reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Care-of Address[1] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Care-of Address[2] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: Optional Extensions :
: .... ...... ...... :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H.2. Example Registration Request Message Format
After the UDP header comes the Mobile IP fields, shown below ๐ฆ
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 = 1 |S|B|D|M|G|r|T|x| Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Agent |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Care-of Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Identification +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional Non-Auth Extensions for HA ... |
| ( variable length ) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type =32 | Length | SPI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SPI (cont..) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
: MN-HA Authenticator ( variable length ) :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: Optional Non-Auth Extensions for FA .........
: Optional MN-FA Authentication Extension...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H.3. Example Registration Reply Message Format
Same deal here: the UDP header comes first, then the Mobile IP fields ๐
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 = 3 | Code | Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Home Agent |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Identification +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional HA Non-Auth Extensions ... |
| ( variable length ) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type =32 | Length | SPI |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SPI (cont...) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
: MN-HA Authenticator ( variable length ) :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: Optional Extensions used by FA.........
: Optional MN-FA Authentication Extension...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
References ๐โจ
Okay bestie, here's the whole bibliography, every single source, no cap ๐
- [1] Allman, M., Glover, D. and L. Sanchez, "Enhancing TCP Over Satellite Channels using Standard Mechanisms", BCP 28, RFC 2488, January 1999.
- [2] S. M. Bellovin. Security Problems in the TCP/IP Protocol Suite. ACM Computer Communications Review, 19(2), March 1989.
- [3] Border, J., Kojo, M., Griner, J., Montenegro, G. and Z. Shelby, "Performance Enhancing Proxies", RFC 3135, June 2001.
- [4] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [5] Ramon Caceres and Liviu Iftode. Improving the Performance of Reliable Transport Protocols in Mobile Computing Environments. IEEE Journal on Selected Areas in Communications, 13(5):850--857, June 1995.
- [6] Calhoun P. and C. Perkins, "Mobile IP Network Access Identifier Extension for IPv4", RFC 2794, January 2000.
- [7] Calhoun, P. and C. Perkins, "Mobile IP Foreign Agent Challenge/Response Extension", RFC 3012, December 2000.
- [8] Cong, D., Hamlen, M. and C. Perkins, "The Definitions of Managed Objects for IP Mobility Support using SMIv2", RFC 2006, October 1996.
- [9] Dawkins, S., Montenegro, G., Kojo, M., Magret, V. and N. Vaidya, "End-to-end Performance Implications of Links with Errors", BCP 50, RFC 3155, August 2001.
- [10] Deering, S., "ICMP Router Discovery Messages", RFC 1256, September 1991.
- [11] Deering, S., "Host Extensions for IP Multicasting", STD 5, RFC 1112, August 1989.
- [12] Dommety, G. and K. Leung, "Mobile IP Vendor/Organization-Specific Extensions", RFC 3115, April 2001.
- [13] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, March 1997.
- [14] Eastlake, D., Crocker, S. and J. Schiller, "Randomness Recommendations for Security", RFC 1750, December 1994.
- [15] Ferguson P. and D. Senie, "Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing", BCP 38, RFC 2827, May 2000.
- [16] Hanks, S., Li, T., Farinacci, D. and P. Traina, "Generic Routing Encapsulation (GRE)", RFC 1701, October 1994.
- [17] J. Ioannidis. Protocols for Mobile Internetworking. PhD Dissertation - Columbia University in the City of New York, July 1993.
- [18] John Ioannidis, Dan Duchamp, and Gerald Q. Maguire Jr. IP-Based Protocols for Mobile Internetworking. In Proceedings of the SIGCOMM '91 Conference: Communications Architectures & Protocols, pages 235--245, September 1991.
- [19] John Ioannidis and Gerald Q. Maguire Jr. The Design and Implementation of a Mobile Internetworking Architecture. In Proceedings of the Winter USENIX Technical Conference, pages 489--500, January 1993.
- [20] Jacobson, V., "Compressing TCP/IP headers for low-speed serial links", RFC 1144, February 1990.
- [21] Jacobson, V., "Congestion Avoidance and Control. In Proceedings, SIGCOMM '88 Workshop, pages 314--329. ACM Press, August 1988. Stanford, CA.
- [22] Kent, S. and R. Atkinson, "IP Authentication Header", RFC 2402, November 1998.
- [23] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, February 1997.
- [24] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000.
- [25] McGregor, G., "The PPP Internet Protocol Control Protocol (IPCP)", RFC 1332, May 1992.
- [26] Mills, D., "Network Time Protocol (Version 3) Specification, Implementation", RFC 1305, March 1992.
- [27] Montenegro, G., "Reverse Tunneling for Mobile IP (revised)", RFC 3024, January 2001.
- [28] Montenegro, G., Dawkins, S., Kojo, M., Magret, V. and N. Vaidya, "Long Thin Networks", RFC 2757, January 2000.
- [29] Montenegro, G. and V. Gupta, "Sun's SKIP Firewall Traversal for Mobile IP", RFC 2356, June 1998.
- [30] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", RFC 2434, October 1998.
- [31] Paxson, V. and M. Allman, "Computing TCP's Retransmission Timer", RFC 2988, November 2000.
- [32] Perkins, C., "IP Encapsulation within IP", RFC 2003, October 1996.
- [33] Perkins, C., "IP Mobility Support", RFC 2002, October 1996.
- [34] Perkins, C., "Minimal Encapsulation within IP", RFC 2004, October 1996.
- [35] Perkins, C. and P. Calhoun, "AAA Registration Keys for Mobile IP", Work in Progress, July 2001.
- [36] Plummer, D., "Ethernet Address Resolution Protocol: Or converting network protocol addresses to 48.bit Ethernet address for transmission on Ethernet hardware", STD 37, RFC 826, November 1982.
- [37] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980.
- [38] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981.
- [39] Postel, J., "Multi-LAN Address Resolution", RFC 925, October 1984.
- [40] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994.
- [41] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April 1992.
- [42] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, July 1994.
- [43] Solomon, J., "Applicability Statement for IP Mobility Support" RFC 2005, October 1996.
- [44] Solomon J. and S. Glass, "Mobile-IPv4 Configuration Option for PPP IPCP", RFC 2290, February 1998.
- [45] Stevens, W., "TCP/IP Illustrated, Volume 1: The Protocols" Addison-Wesley, Reading, Massachusetts, 1994.
Authors' Addresses ๐
The working group can be reached through its current chairs, and questions about this memo can go to the editor. Here are all their deets:
Basavaraj Patil
Nokia
6000 Connection Dr.
Irving, TX. 75039
USA
Phone: +1 972-894-6709
EMail: Basavaraj.Patil@nokia.com
Phil Roberts
Megisto Corp. Suite 120
20251 Century Blvd
Germantown MD 20874
USA
Phone: +1 847-202-9314
EMail: PRoberts@MEGISTO.com
Questions about this memo can also be directed to the editor:
Charles E. Perkins
Communications Systems Lab
Nokia Research Center
313 Fairchild Drive
Mountain View, California 94043
USA
Phone: +1-650 625-2986
EMail: charliep@iprg.nokia.com
Fax: +1 650 625-2502
Full Copyright Statement โ๏ธ
Copyright (C) The Internet Society (2002). All Rights Reserved.
Here's the legal bit, and it matters, so read it carefully ๐ซถ
This document and translations of it may be copied and furnished to others. Derivative works that comment on or otherwise explain it, or help with implementing it, may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind. The one condition is that the above copyright notice and this paragraph are included on all such copies and derivative works.
However, this document itself may not be modified in any way, such as by removing the copyright notice or the references to the Internet Society or other Internet organizations. The exceptions are when it's needed to develop Internet standards, in which case the procedures for copyrights defined in the Internet Standards process must be followed, or when it's needed to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. โจ
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society. Thank you, Internet Society ๐ซถ๐
๐ฆ where this page comes from
- ietf: rfc3344 2002-08
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms