RFC 6747

Address Resolution Protocol (ARP) for the Identifier-Locator Network Protocol for IPv4 (ILNPv4)

πŸ“… published November 2012, from ietf

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 (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:

  1. 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)
  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