RFC 6747
Address Resolution Protocol (ARP) for the Identifier-Locator Network Protocol for IPv4 (ILNPv4)
Address Resolution Protocol (ARP) for the Identifier-Locator Network Protocol for IPv4 (ILNPv4) π
Request for Comments: RFC 6747 π¦ Stream: Internet Research Task Force (IRTF) π Authors: RJ Atkinson (Consultant) and SN Bhatti (U. St Andrews) π Category: Experimental π§ͺ ISSN: 2070-1721 Date: November 2012 π Obsoletes or updates: the title block doesn't list any, so this one isn't replacing or changing anything else π
Abstract β¨
okay so this doc defines an Address Resolution Protocol (ARP) extension that supports ILNPv4 π ILNP is an experimental, evolutionary upgrade to IP, so it's giving "new and improved" energy π and this doc is a product of the IRTF Routing Research Group π«Ά
Status of This Memo π
bestie, this is not an Internet Standards Track spec π ββοΈ it's published so people can examine it, try it out in experimental implementations, and evaluate it π§ͺ
it defines an Experimental Protocol for the Internet community β¨ it comes from the Internet Research Task Force (IRTF), which publishes results of Internet-related research and development π¬ those results might not be ready for deployment, so don't ship it to prod π this RFC represents the individual opinion(s) of one or more members of the Routing Research Group of the IRTF π£οΈ and docs approved for publication by the IRSG are not a candidate for any level of Internet Standard, see Section 2 of RFC 5741 π
for info on the current status, any errata, and how to give feedback, check http://www.rfc-editor.org/info/rfc6747 π
Copyright Notice π
Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. π
this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which are at http://trustee.ietf.org/license-info and apply on the date of publication π please read them carefully, since they spell out your rights and restrictions for this doc π
this document may not be modified, and derivative works of it may not be created, except to format it for publication as an RFC or to translate it into languages other than English π«βοΈ
Table of Contents ποΈ
1. Introduction ....................................................3
1.1. ILNP Document Roadmap ......................................3
1.2. Terminology ................................................5
2. ARP Extensions for ILNPv4 .......................................5
2.1. ILNPv4 ARP Request Packet Format ...........................5
2.2. ILNPv4 ARP Reply Packet Format .............................7
2.3. Operation and Implementation of ARP for ILNPv4 .............8
3. Security Considerations .........................................9
4. IANA Considerations .............................................9
5. References .....................................................10
5.1. Normative References ......................................10
5.2. Informative References ....................................11
6. Acknowledgements ...............................................11
1. Introduction π§
this doc is part of the ILNP document set, which got a LOT of review inside the IRTF Routing RG π ILNP is one of the recommendations the RG Chairs made π on top of that, various refereed research papers on ILNP have been published during this decade π so the ideas here have had way broader review than just the Routing RG πΈ
now, the views in this doc were considered controversial by the Routing RG π but the RG still reached a consensus that it should be published π€ the Routing RG has had remarkably little consensus on anything, so basically all Routing RG outputs are considered controversial π iconic, honestly π
rn the Internet R&D community is exploring different ways to evolve the Internet Architecture to fix a bunch of issues, including (but not limited to) scalability of inter-domain routing [RFC4984] β¨ other issues like site multihoming, node multihoming, site/subnet mobility, and node mobility are also active concerns right now π there are several different classes of evolution on the table πΊοΈ one class is often called "Map and Encapsulate", where traffic gets mapped and then tunnelled through the inter-domain core of the Internet π another class is sometimes known as "Identifier/Locator Split" π this doc is about a proposal in that second class π
the Identifier Locator Network Protocol (ILNP) is a proposal for evolving the Internet Architecture π¦ the big difference from the current architecture is that it deprecates the concept of an IP Address π± instead it defines two new objects, each with crisp syntax and semantics β¨ the first is the Locator, a topology-dependent name for a subnetwork π the second is the Identifier, a topology-independent name for a node πͺͺ
1.1. ILNP Document Roadmap πΊοΈ
this doc describes extensions to ARP for use with ILNPv4 π
the ILNP architecture can have more than one engineering instantiation π οΈ for example, you could imagine a "clean-slate" engineering design based on the ILNP architecture π§Ό in separate docs, the authors describe two specific engineering instances of ILNP π― the term ILNPv6 refers precisely to an instance of ILNP that is based upon, and backwards compatible with, IPv6 π the term ILNPv4 refers precisely to an instance of ILNP that is based upon, and backwards compatible with, IPv4 πΈ
many engineering aspects common to both ILNPv4 and ILNPv6 are described in [RFC6741] π a full engineering spec for either ILNPv6 or ILNPv4 is beyond the scope of this doc π ββοΈ
for details not covered here, go check these related ILNP docs π
a) [RFC6740] is the main architectural description of ILNP, including the concept of operations ποΈ
b) [RFC6741] describes engineering and implementation considerations that are common to both ILNPv4 and ILNPv6 π οΈ
c) [RFC6742] defines additional DNS resource records that support ILNP π
d) [RFC6743] defines a new ICMPv6 Locator Update message used by an ILNP node to inform its correspondent nodes of any changes to its set of valid Locators π¨
e) [RFC6744] defines a new IPv6 Nonce Destination Option used by ILNPv6 nodes (1) to indicate to ILNP correspondent nodes (by inclusion within the initial packets of an ILNP session) that the node is operating in the ILNP mode, and (2) to prevent off-path attacks against ILNP ICMP messages π this Nonce is used, for example, with all ILNP ICMPv6 Locator Update messages that are exchanged among ILNP correspondent nodes π«Ά
f) [RFC6745] defines a new ICMPv4 Locator Update message used by an ILNP node to inform its correspondent nodes of any changes to its set of valid Locators π¬
g) [RFC6746] defines a new IPv4 Nonce Option used by ILNPv4 nodes to carry a security nonce to prevent off-path attacks against ILNP ICMP messages, and also defines a new IPv4 Identifier Option used by ILNPv4 nodes πͺͺπ
h) [RFC6748] describes optional engineering and deployment functions for ILNP π these are not required for the operation or use of ILNP and are provided as additional options β¨
1.2. Terminology π
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this doc are to be interpreted as described in [RFC2119] π―
2. ARP Extensions for ILNPv4 π₯
ILNP for IPv4 (ILNPv4) is basically just a different instantiation of the ILNP architecture πͺ so it keeps the crisp distinction between the Locator and the Identifier π just like ILNPv6, only the Locator values are used for routing and forwarding ILNPv4 packets [RFC6740] π and, same as ILNP for IPv6 (ILNPv6), when ILNPv4 is used for a network-layer session, the upper-layer protocols (e.g., TCP/UDP pseudo-header checksum, IPsec Security Association) bind only to the Identifiers, never to the Locators [RFC6741] πͺͺ never the Locators, iykyk π
however, the packet format for IPv4 is different from IPv6, so the engineering details for ILNPv4 are different too π ILNPv6 is carefully engineered to be fully backwards-compatible with IPv6 Neighbor Discovery π§© but ILNPv4 relies on an extended version of the Address Resolution Protocol (ARP) [RFC826], and that extension is what this doc defines β¨ ILNPv4 could have been engineered to avoid changing ARP, but that would have required the ILNPv4 Locator (i.e., L32) to have slightly different semantics, and that was architecturally undesirable π ββοΈ
the packet formats used are direct extensions of the existing, widely deployed ARP Request (OP code 1) and ARP Reply (OP code 2) packet formats π¦ this design was chosen for practical engineering reasons (i.e., to maximise code reuse), rather than for maximum protocol design purity π οΈ it's giving pragmatic queen energy π
we anticipate that ILNPv6 is much more likely to be widely implemented and deployed than ILNPv4 π but having a clear definition of ILNPv4 helps demonstrate the difference between architecture and engineering π§ it also shows that the common ILNP architecture can be instantiated in different ways with different existing network-layer protocols π main character energy, literally β¨
2.1. ILNPv4 ARP Request Packet Format π
Okay so the ILNPv4 ARP Request is basically a souped-up version of the classic ARP Request (OP code 1) that everyone already uses β¨. For experimentation purposes, its OP code is decimal 24. Bestie, this part is SO important: decimal 24 is a pre-defined, shared-use experimental OP code for ARP [RFC5494]. It is NOT uniquely assigned to ILNPv4 ARP Requests, so other experiments can be using it too π. The big upgrade is that this extension lets the Node Identifier (NID) values ride along in the ARP message, next to the node's 32-bit Locator (L32) values [RFC6742]. Main character energy π
0 7 15 23 31
+--------+--------+--------+--------+
| HT | PT |
+--------+--------+--------+--------+
| HAL | PAL | OP |
+--------+--------+--------+--------+
| S_HA (bytes 0-3) |
+--------+--------+--------+--------+
| S_HA (bytes 4-5)|S_L32 (bytes 0-1)|
+--------+--------+--------+--------+
|S_L32 (bytes 2-3)|S_NID (bytes 0-1)|
+--------+--------+--------+--------+
| S_NID (bytes 2-5) |
+--------+--------+--------+--------+
|S_NID (bytes 6-7)| T_HA (bytes 0-1)|
+--------+--------+--------+--------+
| T_HA (bytes 3-5) |
+--------+--------+--------+--------+
| T_L32 (bytes 0-3) |
+--------+--------+--------+--------+
| T_NID (bytes 0-3) |
+--------+--------+--------+--------+
| T_NID (bytes 4-7) |
+--------+--------+--------+--------+
Figure 2.1: ILNPv4 ARP Request packet format
So here's the field rundown from Figure 2.1 πΈ:
HT Hardware Type (*)
PT Protocol Type (*)
HAL Hardware Address Length (*)
PAL Protocol Address Length (uses new value 12)
OP Operation Code (uses experimental value OP_EXP1=24)
S_HA Sender Hardware Address (*)
S_L32 Sender L32 (* same as Sender IPv4 address for ARP)
S_NID Sender Node Identifier (8 bytes)
T_HA Target Hardware Address (*)
T_L32 Target L32 (* same as Target IPv4 address for ARP)
T_NID Target Node Identifier (8 bytes)
The changed OP code is how you tell it's ILNPv4 and not IPv4 π¦. Otherwise the semantics and usage of the ILNPv4 ARP Request are identical to the existing ARP Request (OP code 2) (yes, the RFC literally writes "OP code 2" there, and I'm keeping it exactly as written π). The only real difference is that an ILNPv4 ARP Request is sent only by nodes that support ILNPv4. No ILNPv4 support, no ILNPv4 ARP Request, periodt π
The fields marked with "*" should have the same values as they do for ARP as used for IPv4.
2.2. ILNPv4 ARP Reply Packet Format π§
The ILNPv4 ARP Reply is the glow-up of the widely deployed ARP Reply (OP code 2) π. For experimentation purposes, the ILNPv4 ARP Request OP code uses decimal value 25. Yes, the RFC says "Request" right there in this section, so I'm keeping it exactly as written π. The important bit is that decimal value 25 is a pre-defined, shared-use experimental OP code for ARP [RFC5494], and is not uniquely assigned to ILNPv4 ARP Requests. Same vibe as before: someone else might be using it too. Like the Request, the ILNPv4 ARP Reply extension lets the Node Identifier (NID) values be carried in the ARP message, alongside the node's 32-bit Locator (L32) values [RFC6742].
0 7 15 23 31
+--------+--------+--------+--------+
| HT | PT |
+--------+--------+--------+--------+
| HAL | PAL | OP |
+--------+--------+--------+--------+
| S_HA (bytes 0-3) |
+--------+--------+--------+--------+
| S_HA (bytes 4-5)|S_L32 (bytes 0-1)|
+--------+--------+--------+--------+
|S_L32 (bytes 2-3)|S_NID (bytes 0-1)|
+--------+--------+--------+--------+
| S_NID (bytes 2-5) |
+--------+--------+--------+--------+
|S_NID (bytes 6-7)| T_HA (bytes 0-1)|
+--------+--------+--------+--------+
| T_HA (bytes 3-5) |
+--------+--------+--------+--------+
| T_L32 (bytes 0-3) |
+--------+--------+--------+--------+
| T_NID (bytes 0-3) |
+--------+--------+--------+--------+
| T_NID (bytes 4-7) |
+--------+--------+--------+--------+
Figure 2.2: ILNPv4 ARP Reply packet format
And the field list for Figure 2.2 π«Ά:
HT Hardware Type (*)
PT Protocol Type (*)
HAL Hardware Address Length (*)
PAL Protocol Address Length (uses new value 12)
OP Operation Code (uses experimental value OP_EXP2=25)
S_HA Sender Hardware Address (*)
S_L32 Sender L32 (* same as Sender IPv4 address for ARP)
S_NID Sender Node Identifier (8 bytes)
T_HA Target Hardware Address (*)
T_L32 Target L32 (* same as Target IPv4 address for ARP)
T_NID Target Node Identifier (8 bytes)
Same deal as the Request: the changed OP code is what marks it as ILNPv4 and not IPv4 β¨. The semantics and usage of the ILNPv4 ARP Reply are identical to the existing ARP Reply (OP code 2), except that it is sent only by nodes that support ILNPv4 π.
The fields marked with "*" should have the same values as they do for ARP as used for IPv4.
2.3. Operation and Implementation of ARP for ILNPv4 π
Here's the tea β: the operation of ARP for ILNPv4 is almost identical to IPv4 ARP. The key differences are:
- Where an IPv4 ARP Request would use IPv4 addresses, an ILNPv4 ARP Request MUST use:
- a 32-bit L32 value (_L32 suffixes in Figures 2.1 and 2.2)
- a 64-bit NID value (_NID suffixes in Figures 2.1 and 2.2)
- Where an IPv4 ARP Reply would use IPv4 addresses, an ILNPv4 ARP Reply MUST use:
- a 32-bit L32 value (_L32 suffixes in Figures 2.1 and 2.2)
- a 64-bit NID value (_NID suffixes in Figures 2.1 and 2.2)
So the OP codes 24 and 25 are different from IPv4 ARP, but the packet formats in Figures 2.1 and 2.2 are basically extended versions of the regular ARP packets, which is so clean π¦. It should be possible to implement this extension by extending existing ARP implementations, instead of writing a whole new ILNPv4 implementation from scratch π. BUT, and this is a big but π, OP codes 24 and 25 are for experimental use as defined in [RFC5494], so other experimental protocols could be using these same OP codes at the same time.
3. Security Considerations π₯
Okay, serious mode activated π«Ά. Security considerations for the overall ILNP architecture are described in [RFC6740]. Additional common security considerations that apply to ILNP are described in [RFC6741]. This section covers the security considerations specific to the ILNPv4 topics in this document.
The widely deployed Address Resolution Protocol (ARP) for IPv4 is a link-layer protocol, so it is NOT vulnerable to off-link attackers π‘οΈ. That makes it a bit different from IPv6 Neighbor Discovery (ND), which is a subset of the Internet Control Message Protocol (ICMP) and runs over IPv6.
BUT ARP has zero authentication built in π, so current ARP deployments are vulnerable to a range of attacks from on-link nodes. For example, one node on a link can forge an ARP packet that claims to be from another node, thereby "stealing" that node's IPv4 address. Yikes. [RFC5227] describes several of these risks, plus some measures an ARP implementation can use to reduce the chance of accidental IPv4 address misconfiguration and to detect it if it happens anyway.
This extension does not change the security risks that are inherent in using ARP π.
If you need extra protection against on-link attackers (for example, in high-risk operational environments), the IEEE standards for link-layer security [IEEE-802.1-AE] SHOULD be implemented and deployed π.
Implementers of this specification need to understand that the two OP code values used for these 2 extensions are not uniquely assigned to ILNPv4. Other experimenters might be using the same two OP code values at the same time for different ARP-related experiments. Unless all the users of a particular IP subnetwork have coordinated beforehand, different experiments might be happening on the same IP subnetwork. So implementations of these two ARP extensions ought to be especially defensively coded π§.
4. IANA Considerations πΈ
This document makes no request of IANA.
If the IETF decides in the future to standardise ILNPv4, then allocating unique ARP OP codes for the two extensions above would be sensible as part of that standardisation process π.
5. References β
5.1. Normative References
[IEEE-802.1-AE] IEEE, "Media Access Control (MAC) Security", IEEE
Standard 802.1 AE, 18 August 2006, IEEE, New York,
NY, 10016, USA.
[RFC826] 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.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5227] Cheshire, S., "IPv4 Address Conflict Detection", RFC
5227, July 2008.
[RFC5494] Arkko, J. and C. Pignataro, "IANA Allocation
Guidelines for the Address Resolution Protocol
(ARP)", RFC 5494, April 2009.
[RFC6740] Atkinson, R. and S. Bhatti, "Identifier Locator
Network Protocol (ILNP) Architectural Description",
RFC 6740, November 2012.
[RFC6741] Atkinson, R. and S. Bhatti, "Identifier-Locator
Network Protocol (ILNP) Engineering and
Implementation Considerations", RFC 6741, November
2012.
[RFC6742] Atkinson, R., Bhatti, S., and S. Rose, "DNS Resource
Records for the Identifier-Locator Network Protocol
(ILNP)", RFC 6742, November 2012.
[RFC6745] Atkinson, R. and S. Bhatti, "ICMP Locator Update
Message for the Identifier-Locator Network Protocol
for IPv4 (ILNPv4)", RFC 6745, November 2012.
[RFC6746] Atkinson, R. and S.Bhatti, "IPv4 Options for the
Identifier-Locator Network Protocol (ILNP)", RFC
6746, November 2012.
5.2. Informative References
[RFC4984] Meyer, D., Ed., Zhang, L., Ed., and K. Fall, Ed.,
"Report from the IAB Workshop on Routing and
Addressing", RFC 4984, September 2007.
[RFC6743] Atkinson, R. and S. Bhatti, "ICMPv6 Locator Update
Message", RFC 6743, November 2012.
[RFC6744] Atkinson, R. and S. Bhatti, "IPv6 Nonce Destination
Option for the Identifier-Locator Network Protocol
for IPv6 (ILNPv6)", RFC 6744, November 2012.
[RFC6748] Atkinson, R. and S. Bhatti, "Optional Advanced
Deployment Scenarios for the Identifier-Locator
Network Protocol (ILNP)", RFC 6748, November 2012.
6. Acknowledgements π
okay bestie, time for the shoutouts! π Steve Blake, Stephane Bortzmeyer, Mohamed Boucadair, Noel Chiappa, Wes George, Steve Hailes, Joel Halpern, Mark Handley, Volker Hilt, Paul Jakma, Dae-Young Kim, Tony Li, Yakov Rehkter, Bruce Simpson, Robin Whittle, and John Wroclawski all gave review and feedback on earlier versions of this doc. they're listed in alphabetical order π no one gets ranked above anyone else β¨
Steve Blake was literally the MVP π with an especially thorough review of an early version of the entire ILNP document set. the whole squad was so helpful, and we're obsessed π«Ά The authors also want to thank the anonymous reviewers of the various ILNP papers for their feedback. π¦
Roy Arends gave expert guidance on the technical and procedural side of DNS issues. he's an absolute legend for that π§ β¨
Authors' Addresses π
RJ Atkinson πΈ Consultant San Jose, CA, 95125 USA
EMail: rja.lists@gmail.com
SN Bhatti π School of Computer Science University of St Andrews North Haugh, St Andrews, Fife KY16 9SX Scotland, UK
EMail: saleem@cs.st-andrews.ac.uk
and that's the whole RFC, bestie ππ
π¦ where this page comes from
- ietf: rfc6747 2012-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms