MIPv6 Experiments: Mobile IPv6 Experimental Messages
Spare message and option types so people can experiment with Mobile IPv6 without grabbing real code points.
Devarapalli, V., "Mobile IPv6 Experimental Messages", RFC 5096, DOI 10.17487/RFC5096, December 2007, <https://www.rfc-editor.org/info/rfc5096>.
@misc{rfc5096,
series = {Request for Comments},
number = 5096,
howpublished = {RFC 5096},
publisher = {RFC Editor},
doi = {10.17487/RFC5096},
url = {https://www.rfc-editor.org/info/rfc5096},
author = {V. Devarapalli},
title = {{Mobile IPv6 Experimental Messages}},
pagetotal = 7,
year = 2007,
month = dec,
} RFC text
Contents
Network Working Group V. Devarapalli
Request for Comments: 5096 Azaire Networks
Category: Standards Track December 2007
Mobile IPv6 Experimental Messages
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
This document defines a new experimental Mobility Header message and
a Mobility option that can be used for experimental extensions to the
Mobile IPv6 protocol.
Table of Contents
1. Introduction ....................................................1
2. Terminology .....................................................2
3. Experimental Mobility Header Message ............................3
4. Experimental Mobility Option ....................................3
5. Security Considerations .........................................4
6. IANA Considerations .............................................5
7. Acknowledgements ................................................5
8. References ......................................................5
8.1. Normative References .......................................5
8.2. Informative References .....................................5
1. Introduction
When experimenting with a protocol or defining a new extension to a
protocol, one needs either a protocol number, a new message, or an
option to carry the information related to the experiment. Most
implementations end up using unassigned values for the new messages.
Many times this creates problems when the same value is assigned
through the IETF standards action, by IANA, or if the implementation
gets deployed with these messages. Therefore, it is considered a
good practice to set aside some code points that identify the
experimental protocols or messages for experimental purposes. The
need for experimental messages is shown in [3].
This document defines new messages for experimenting with extensions
to the Mobile IPv6 protocol. These messages should be strictly used
for experiments. Experiments that are successful should be
standardized in the IETF. An implementation MUST NOT be released or
deployed with the experimental messages.
This document defines a new Mobility Header message, which is the
Experimental Mobility message that can be sent at any time by the
mobile node, the home agent or the correspondent node. Since
Mobility Header messages cannot be combined and sent in one packet,
there is always only one Mobility Header message in any Mobile IPv6
packet. Home agent or correspondent node implementations that do not
recognize the mobility message type, discard the message and send a
Binding Error message as described in [2], with the Status field set
to 2 (unrecognized MH Type value). Mobile nodes that do not
recognize the mobility message type should discard the message and
send an ICMP Parameter problem with code 0.
This document also defines a new mobility option, the Experimental
Mobility option, which can be carried in any Mobility Header message.
Mobility options, by definition, can be skipped if an implementation
does not recognize the mobility option type [2].
The messages defined in this document can also be used for Network
Mobility (NEMO) [4] and Proxy Mobile IPv6 [5] since these protocols
also use Mobility Header messages.
Experimental code points could potentially disrupt a deployed network
when experiments using these code points are performed in the
network. Therefore, the network scope of support for experimental
values should carefully be evaluated before deploying any experiment
across extended network domains, such as the public Internet.
Experimental mechanisms should only be used for actual
experimentation. By design, only a single code point is allocated
for the message and another one for the option. This limits the
number of experiments among a set of peers to one at a time. When
experimental mechanisms are shown to be useful, and there is a desire
to deploy them beyond the experiment they should be standardized and
given new code points.
2. Terminology
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 [1].
3. Experimental Mobility Header Message
The Experimental Mobility Header message is based on the Mobility
Header message defined in Section 6.1 of RFC 3775 [2]. There are no
fields in the message beyond the required fields in the Mobility
Header. The 'MH Type' field in the Mobility Header indicates that it
is an Experimental Mobility Header message.
If no data is present in the message, two bytes of padding are
required. The 'Header Len' field in the Mobility Header is set to 0
since the first 8 octets are excluded while calculating the length of
the Mobility Header message.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Proto | Header Len | MH Type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
. .
. Message Data .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
See RFC 3775 [2] for a description of the 'Payload Proto', 'Header
Len', 'MH Type', 'Reserved', and 'Checksum' fields.
The 'Message Data' field carries the data specific to the
experimental protocol extension. The total length of the message is
indicated by the 'Header Len' field in the Mobility Header.
4. Experimental Mobility Option
The Experimental Mobility option can be included in any Mobility
Header message. If the Mobility Header message includes a Binding
Authorization Data option [2], then the Experimental Mobility option
should appear before the Binding Authorization Data option.
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 | Data .....
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
An 8-bit field indicating that it is an experimental mobility
option.
Length
An 8-bit field indicating the length of the option in octets
excluding the Type and Length fields.
Data
Data related to the experimental protocol extension.
5. Security Considerations
Protection for the Experimental Mobility Header message and Mobility
option depends on the experiment that is being carried out and the
kind of information that is being carried in the messages. If these
messages carry information that should not be revealed on the wire,
or that can affect the binding cache entry at the home agent or the
correspondent node, they should be protected in a manner similar to
Binding Updates and Binding Acknowledgements.
Security analyzers such as firewalls and network intrusion detection
monitors often rely on unambiguous interpretations of the fields
described in this document. As new values for the fields are
assigned, existing security analyzers that do not understand the new
values may fail, resulting in either loss of connectivity, if the
analyzer declines to forward the unrecognized traffic, or in loss of
security if it does forward the traffic and the new values are used
as part of an attack.
When experimental code points are deployed within an administratively
self-contained network domain, it must be ensured that each code
point is used consistently to avoid interference between experiments.
When experimental code points are used in traffic that crosses
multiple administrative domains, the experimenters should assume that
there is a risk that the same code points will be used simultaneously
by other experiments and that there is a possibility that the
experiments will interfere. Particular attention should be given to
security threats that such interference might create. Please see RFC
4727 for more details [6].
6. IANA Considerations
The Experimental Mobility Header message, defined in Section 3, has
been assigned the type value (11), allocated from the same space as
the 'MH Type' field in the Mobility Header [2].
The Experimental Mobility option, defined in Section 4, has been
assigned the type value (18), allocated from the same space as
Mobility Options [2].
7. Acknowledgements
The author would like to thank Jari Arkko and Basavaraj Patil with
whom the contents of this document were discussed first.
8. References
8.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[2] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support in
IPv6", RFC 3775, June 2004.
8.2. Informative References
[3] Narten, T., "Assigning Experimental and Testing Numbers
Considered Useful", BCP 82, RFC 3692, January 2004.
[4] Devarapalli, V., Wakikawa, R., Petrescu, A., and P. Thubert,
"Network Mobility (NEMO) Basic Support Protocol", RFC 3963,
January 2005.
[5] Gundavelli, S., "Proxy Mobile IPv6", Work in Progress, March
2007.
[6] Fenner, B., "Experimental Values In IPv4, IPv6, ICMPv4, ICMPv6,
UDP, and TCP Headers", RFC 4727, November 2006.
Author's Address
Vijay Devarapalli
Azaire Networks
4800 Great America Pkwy
Santa Clara, CA 95054
USA
EMail: vijay.devarapalli@azairenet.com
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
AI ELI5
On this page
§1Why Reserve Experimental Code Points
To experiment with a protocol, you need a protocol number, a new message or an option to carry your data. Most implementations pick unassigned values, which causes trouble when the same value is later assigned through IETF standards action or by IANA, or when the implementation is deployed. So the RFC says it is good practice to set aside code points for experimental use. The need is shown in RFC 3692.
This document does that for Mobile IPv6. The messages should be used strictly for experiments, successful experiments should be standardized in the IETF, and an implementation MUST NOT be released or deployed with the experimental messages.
If everyone scribbles their test ideas on any blank page they find, they will overwrite each other. So this sets aside one page just for testing.
§1.1How the Messages Behave
The Experimental Mobility message can be sent at any time by the mobile node, the home agent or the correspondent node. Mobility Header messages cannot be combined, so there is always only one in any Mobile IPv6 packet.
A home agent or correspondent node that does not recognize the message type discards it and sends a Binding Error message (RFC 3775) with the Status field set to 2 (unrecognized MH Type value). A mobile node that does not recognize it should discard it and send an ICMP Parameter problem with code 0. Mobility options can be skipped if not recognized.
The messages can also be used for Network Mobility (NEMO, RFC 3963) and Proxy Mobile IPv6, since those also use Mobility Header messages.
If a device does not understand the test message, it just ignores it politely, and some devices send back a short note saying so.
§3The Experimental Mobility Header Message
The message is based on the Mobility Header of Section 6.1 of RFC 3775. It has no fields beyond the required Mobility Header ones: Payload Proto, Header Len, MH Type, Reserved and Checksum, which RFC 3775 describes. The MH Type value marks it as experimental.
The Message Data field carries data specific to the experiment. If no data is present, two bytes of padding are required, and Header Len is set to 0 because the first 8 octets are excluded when calculating the length.
It is a normal Mobile IPv6 envelope with a label saying "experiment", and an empty space inside for whatever you want to test.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
PAYLOAD-PROTO | Payload Proto | 1 byte | Standard Mobility Header field, described in RFC 3775. | |
HEADER-LEN | Header Len | 1 byte | 0 | Set to 0 when there is no data, since the first 8 octets are excluded. |
MH-TYPE | MH Type | 1 byte | 11 | Marks the message as an Experimental Mobility Header message. |
RESERVED | Reserved | 1 byte | Standard Mobility Header field, described in RFC 3775. | |
CHECKSUM | Checksum | 2 bytes | Standard Mobility Header field, described in RFC 3775. | |
MESSAGE-DATA | Message Data | 2 bytes | Variable-length data for the experiment; two bytes of padding if there is none. |
§4The Experimental Mobility Option
The Experimental Mobility option can be included in any Mobility Header message. If the message also has a Binding Authorization Data option, the experimental option should appear before it.
It has three parts: Type, an 8-bit field marking an experimental mobility option; Length, an 8-bit field giving the option length in octets, excluding the Type and Length fields; and Data, which relates to the experimental extension.
If the message is a letter, the option is a sticky note you can attach to any letter to carry extra test information.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
TYPE | Type | 1 byte | 18 | Indicates an experimental mobility option. |
LENGTH | Length | 1 byte | Option length in octets, excluding Type and Length. | |
DATA | Data | 2 bytes | Data related to the experimental extension; variable length. |
§5Security Considerations
Protection depends on the experiment. If the messages carry information that should not be revealed or that can affect the binding cache entry at the home agent or correspondent node, they should be protected like Binding Updates and Binding Acknowledgements.
Firewalls and intrusion detection monitors rely on unambiguous readings of these fields. An analyzer that does not understand new values may fail, either losing connectivity if it drops unrecognized traffic, or losing security if it forwards it and the values are used in an attack.
Within one administrative domain, each code point must be used consistently. Across several domains, experimenters should assume other experiments may use the same code points at once and interfere. See RFC 4727.
Test messages can still be dangerous if they carry secrets or confuse guards. Because only one test slot exists, other people's tests may bump into yours.
§6Assigned Values
The Experimental Mobility Header message has been assigned type value 11, from the same space as the MH Type field in the Mobility Header. The Experimental Mobility option has been assigned type value 18, from the same space as Mobility Options.
By design only a single code point is allocated for the message and another for the option, which limits experiments among a set of peers to one at a time.
The test envelope is number 11 and the test sticky note is number 18. There is only one of each, so only one test at a time.