RFC 6743

ICMP Locator Update Message for the Identifier-Locator Network Protocol for IPv6 (ILNPv6)

πŸ“… published November 2012, from ietf

ICMP Locator Update Message for the Identifier-Locator Network Protocol for IPv6 (ILNPv6) ✨

okay bestie, this is RFC 6743 πŸ’– It was published in November 2012 as part of the IRTF (Internet Research Task Force) πŸŽ€. The authors are RJ Atkinson (a consultant) and SN Bhatti (from U. St Andrews) πŸ¦‹. It's marked Experimental with ISSN 2070-1721, and the title block doesn't list anything it obsoletes or updates πŸ’…

Abstract

This note specifies an experimental ICMPv6 message type for use with the Identifier-Locator Network Protocol (ILNP) 🧚. ILNP is an experimental, evolutionary enhancement to IP ⭐. This message is used to dynamically update Identifier/Locator bindings for a session that already exists πŸ”₯. It's a product of the IRTF Routing Research Group 🌈.

Status of This Memo

this one's a big "not a standard yet" energy moment πŸ’€. This document is not an Internet Standards Track specification. It's published so people can examine it, try out experimental implementations, and evaluate it πŸ”¬

It defines an Experimental Protocol for the Internet community and is a product of the Internet Research Task Force (IRTF) 🌸. The IRTF shares results from Internet-related research and development, but those results might not be ready for deployment πŸ™ˆ. This RFC is one or more Routing Research Group members speaking for themselves, not an official group opinion πŸ’œ. Documents the IRSG approves for publication are not candidates for any level of Internet Standard. See Section 2 of RFC 5741 for the details πŸ“š

For the current status, any errata, and how to send feedback, check http://www.rfc-editor.org/info/rfc6743 πŸ“

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved πŸŽ€

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which are found at http://trustee.ietf.org/license-info and apply on the date this document was published. Read those carefully, because they spell out your rights and restrictions for this document πŸ“œ

No modifications are allowed, and you can't make derivative works of it. The only exceptions are formatting it for publication as an RFC or translating it into languages other than English πŸ’…

Table of Contents

1. Introduction ....................................................3
   1.1. Document Roadmap ...........................................3
   1.2. ICMPv6 Locator Update ......................................4
   1.3. Terminology ................................................5
2. Syntax ..........................................................5
   2.1. Example ICMPv6 Locator Update Message ......................7
3. Transport Protocol Effects ......................................8
4. Implementation Considerations ...................................8
5. Backwards Compatibility .........................................8
6. Security Considerations .........................................9
7. IANA Considerations .............................................9
8. References .....................................................10
   8.1. Normative References ......................................10
   8.2. Informative References ....................................10
9. Acknowledgements ...............................................11

1. Introduction ✨

so this doc is part of the ILNP document set, and the IRTF Routing RG reviewed it extensively πŸ”. ILNP is one of the recommendations the RG Chairs made. Several refereed research papers on ILNP have also been published this decade, so the ideas here have been reviewed way beyond the RG πŸ“–. The Routing RG found the views here controversial, but the group still reached consensus that the document should be published 😭. Honestly, the Routing RG has had remarkably little consensus on anything, so basically all of their outputs count as controversial πŸ’€

Right now, the Internet research and development community is looking at different ways to evolve the Internet Architecture πŸ¦‹. The goals include (but aren't limited to) scalability of inter-domain routing [RFC4984]. Other live issues are site multihoming, node multihoming, site/subnet mobility, and node mobility 🌈. There are a few classes of evolution being considered. One is often called "Map and Encapsulate," where traffic gets mapped and then tunnelled through the inter-domain core of the Internet 🧚. Another is sometimes called "Identifier/Locator Split." This document is about a proposal in that second class πŸ’œ

1.1. Document Roadmap

This document defines a new ICMPv6 Locator Update message. An ILNP node uses it to tell its correspondent nodes about changes to its set of valid Locators πŸŽ€

The ILNP architecture can have more than one engineering instantiation. You could imagine a "clean-slate" engineering design based on it, for example 🌸. The authors describe two specific engineering instances of ILNP in separate documents. The term "ILNPv6" refers precisely to the instance based on IPv6 and backwards compatible with it. The term "ILNPv4" refers precisely to the instance based on IPv4 and backwards compatible with it πŸ“

Many engineering aspects common to both ILNPv4 and ILNPv6 are described in [RFC6741]. A full engineering specification for either ILNPv6 or ILNPv4 is beyond the scope of this document πŸ™ˆ

For details this document doesn't cover, check out the other related ILNP documents:

  • 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) [RFC6744] defines a new IPv6 Nonce Destination Option used by ILNPv6 nodes. It does two jobs: (1) it tells ILNP correspondent nodes, by being included in the initial packets of an ILNP session, that the node is running in ILNP mode, and (2) it prevents off-path attacks against ILNP ICMP messages. This Nonce is used, for example, with all ILNP ICMPv6 Locator Update messages exchanged among ILNP correspondent nodes πŸ”
  • e) [RFC6745] defines a new ICMPv4 Locator Update message used by an ILNP node to tell its correspondent nodes about changes to its set of valid Locators πŸŒ™
  • f) [RFC6746] defines a new IPv4 Nonce Option that ILNPv4 nodes use to carry a security nonce, which prevents off-path attacks against ILNP ICMP messages. It also defines a new IPv4 Identifier Option used by ILNPv4 nodes πŸ›‘οΈ
  • g) [RFC6747] describes extensions to the Address Resolution Protocol (ARP) for use with ILNPv4 🧩
  • h) [RFC6748] describes optional engineering and deployment functions for ILNP. These aren't required for ILNP to operate or be used, and they're offered as extra options 🎁

1.2. ICMPv6 Locator Update

As described in [RFC6740] and [RFC6741], an ILNP for IPv6 (ILNPv6) node might need to tell its correspondent ILNPv6 nodes about changes to the set of valid Locator values πŸ¦‹. The new ICMPv6 Locator Update message in this document lets an ILNP-capable node update its correspondents on the currently valid set of Locators they can use to reach the node sending the message [RFC2460] [RFC4443] ✨

This new ICMPv6 message MUST ONLY be used for ILNPv6 sessions. Authentication is always required, as the Security Considerations section later in this note explains πŸ”

Some folks think any use of ICMP is a bad idea, and that's valid πŸ’… This spec uses ICMP because it's a control message, but there's no architectural difference between using ICMP and using some other framing, like UDP 🫢

1.3. 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 [RFC2119] πŸ“šβœ¨

(part 2 up next 🧚)

2. Syntax ✨

okay so this is the really juicy part πŸ’… The ICMPv6 message here has ICMP Type 156 and is used ONLY with a current ILNPv6 session πŸ¦‹ It lets an ILNPv6 node tell its correspondent nodes when the active Locator set for the node sending it has changed πŸ’– And bestie, this particular ICMPv6 message MUST ONLY be used with ILNPv6 sessions πŸ™ˆ

This particular ICMPv6 message MUST ONLY be used with ILNPv6 sessions. The Checksum field gets calculated the exact same way as for any other ICMPv6 message 🧚

Here's the layout πŸŽ€

   ICMPv6 Locator Update message

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Num of Locs  |   Operation   |           RESERVED            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Locator [1]                             /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Preference [1]         |           Lifetime [1]        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Locator [2]                             /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Preference [2]         |           Lifetime [2]        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               .                               |
   |                               .                               |
   |                               .                               |

Now the field-by-field breakdown πŸ”

   ICMPv6 Locator Update fields:

      Type                  156

      Code                  0

      Checksum              The 16-bit one's complement of the one's
                            complement sum of the ICMP message, starting
                            with the ICMP Type.  For computing the
                            checksum, the Checksum field is set to 0.

      Num of Locs           The number of 64-bit Locator values that are
                            advertised in this message.  This field MUST
                            NOT be zero.

      Locator[i],           The 64-bit Locator values currently
       i = 1..Num of Locs   valid for the sending ILNPv6 node.

      Preference[i],        The preferability of each Locator[i],
       i = 1..Num of Locs   relative to other valid Locator[i] values.
                            The Preference numbers here are identical,
                            both in syntax and semantics, to the
                            Preference values for L64 records as
                            specified by [RFC6742].

      Lifetime[i]           The maximum number of seconds that this
       i = 1..Num of Locs   particular Locator may be considered valid.
                            Normally, this is identical to the DNS
                            lifetime of the corresponding L64 record, if
                            one exists.

      Operation             The value in this field indicates whether
                            this is a Locator Update Advertisement
                            (0x01) or a Locator Update Acknowledgement
                            (0x02).

      RESERVED              A field reserved for possible future use.
                            At present, the sender MUST initialise this
                            field to zero.  Receivers should ignore this
                            field at present.  The field might be used
                            for some protocol function in future.

So the Operation field is the mood setter 🎭 It has value 1 (hexadecimal 0x01) for a Locator Update Advertisement, and value 2 (hexadecimal 0x02) for a Locator Update Acknowledgement. Every other Operation value is reserved for future use by future revisions of this specification 🌈

Now the rules, and these are important 🚨 A node whose set of valid Locators has changed MUST send Locator Update Advertisement messages to each correspondent node for each active unicast ILNP session. For unicast ILNP sessions, the receiver of a valid Locator Update Advertisement (e.g., authentication checks all passed; advertisement is received from a current correspondent node) addressed to the receiver MUST send a Locator Update Acknowledgement back to the sender of the Locator Update Advertisement. The Acknowledgement message body is identical to the received Advertisement message body, except for the Operation value 🫢

All ILNPv6 ICMP Locator Update messages MUST contain a valid ILNPv6 Identifier option and MUST contain an ILNPv6 Nonce Option. No skipping this, periodt πŸ’€

ILNPv6 ICMP Locator Update messages also MAY be protected using IP Security for ILNP [RFC6741] [RFC4301]. Deployments in high-threat environments SHOULD also protect ILNPv6 ICMP Locator Update messages using IPsec. While IPsec Encapsulating Security Payload (ESP) can protect a payload, no form of IPsec ESP is able to protect an IPv6 option that appears prior to the ESP header 😭

Note that even when IP Security for ILNP is in use, the ILNP Nonce Option still MUST be present. This simplifies protocol processing, and it also means that a receiver can perform the inexpensive check of the Nonce value before performing any (potentially expensive) cryptographic calculation πŸ‘‘

2.1. Example ICMPv6 Locator Update Message

Here's a lowkey cute example where 2 Locator values are being indicated πŸ“

    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 of Locs  |    RESERVED   |           RESERVED            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Locator [1]                             /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Preference [1]         |           Lifetime [1]        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Locator [2]                             /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Preference [2]         |           Lifetime [2]        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3. Transport Protocol Effects πŸ¦‹

This message has no impact on any transport protocol. Zero drama πŸ™Œ

It can affect where packets for a given transport-layer session are sent, but an ILNP design objective is to decouple transport-layer protocols and transport-layer session information from network-layer changes. That decoupling is the whole main character energy of ILNP ✨

4. Implementation Considerations ✨

Implementers may use any internal implementation they wish, provided that the external appearance is the same as this implementation approach 🧚

To support ILNPv6, and to retain the incremental deployability and backwards compatibility needed, the network layer needs a mode bit in the Transport Control Block (or its equivalent) to track which IP sessions are using the classic IPv6 mode and which IP sessions are using the Identifier/Locator Split mode πŸ’œ

Further, when supporting ILNPv4, nodes will need to support an Identifier Locator Communication Cache (ILCC) in the network layer as described in [RFC6741] πŸŽ€

A node sending an ICMP Locator Update message MUST include all currently valid Locator values in that message. A node receiving a valid ICMP Locator Update message MUST replace the previously current set of Locator values for that correspondent node in its own ILCC with the newly received set of Locator values πŸ’…

Every implementation needs to support a large number of Locator values being sent or received in a single ICMP Locator Update message, because a multihomed node or multihomed site might have a large number of upstream links to different service providers, each with its own Locator value 🌸

5. Backwards Compatibility 🌈

This ICMPv6 message uses the same checksum calculations as any other ICMPv6 message. Consistent is cute πŸ“

When ILNPv6 is not in use, the receiving IPv6 mode MUST discard the ICMP Locator Update packet without processing the packet. This is standard behaviour for a non-ILNPv6 node when receiving an ICMPv6 message with an unknown header field value πŸ™ˆ

6. Security Considerations πŸ”₯

Security considerations for the overall ILNP architecture are described in [RFC6740]. Additional common security considerations are described in [RFC6741]. This section describes security considerations specific to ILNPv6 topics discussed in this document. Read this part with your whole chest 😭

The ICMPv6 Locator Update message MUST ONLY be used for ILNPv6 sessions.

The ILNP Nonce Destination Option [RFC6744] MUST be present in packets containing an ICMPv6 Locator Update message. Further, the received Nonce Destination Option MUST contain the correct nonce value for the packet to be accepted by the recipient and then passed to the ICMPv6 protocol for processing. If either of these requirements are not met, the received packet MUST be discarded as a forgery, and a security event SHOULD be logged by the system receiving the non-authentic packet 🚨

ILNP sessions operating in higher risk environments SHOULD use IP Security for ILNP [RFC6741] [RFC4301] in addition to the ILNPv6 Nonce Destination Option. Use of IP Security for ILNP to protect a packet does NOT permit the packet to be sent without the Nonce Destination Option πŸ”

Implementations need to support the case where a single ICMP Locator Update message contains a large number of Locator and Preference values and ought not develop a security fault (e.g., stack overflow) due to a received message containing more Locator values than expected πŸ’€

If the ILNP Nonce value is predictable, then an off-path attacker might be able to forge data or control packets. This risk also is mitigated by the existing common practice of IP Source Address filtering [RFC2827] [RFC3704] πŸ‘‘

7. IANA Considerations 🧚

Consistent with the procedures of [RFC4443], IANA has assigned the value 156 to the ICMP Type listed in Section 2 πŸŽ€

8. References πŸ“š

8.1. Normative References

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. πŸ’–
  • [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998. 🌸
  • [RFC3704] Baker, F. and P. Savola, "Ingress Filtering for Multihomed Networks", BCP 84, RFC 3704, March 2004. πŸ¦‹
  • [RFC4301] Kent, S. and K. Seo, "Security Architecture for the Internet Protocol", RFC 4301, December 2005. πŸ”₯
  • [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", RFC 4443, March 2006. ✨
  • [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. πŸŽ€
  • [RFC6744] Atkinson, R. and S. Bhatti, "IPv6 Nonce Destination Option for the Identifier-Locator Network Protocol for IPv6 (ILNPv6)", RFC 6744, November 2012. πŸ’…

8.2. Informative References

  • [RFC2827] 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. 🌈
  • [RFC4984] Meyer, D., Ed., Zhang, L., Ed., and K. Fall, Ed., "Report from the IAB Workshop on Routing and Addressing", RFC 4984, September 2007. πŸ‘‘
  • [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. 🌸
  • [RFC6747] Atkinson, R. and S. Bhatti, "Address Resolution Protocol (ARP) Extension for the Identifier-Locator Network Protocol for IPv4 (ILNPv4)", RFC 6747, November 2012. ⭐
  • [RFC6748] Atkinson, R. and S. Bhatti, "Optional Advanced Deployment Scenarios for the Identifier-Locator Network Protocol (ILNP)", RFC 6748, November 2012. πŸ¦‹

9. Acknowledgements 🫢

Okay bestie, the people who helped make this document happen are: 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 (in alphabetical order). They gave review and feedback on earlier versions of this document. πŸ’– Steve Blake gave an especially thorough review of an early version of the entire ILNP document set, and it was extremely helpful. ✨ We 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 sides of DNS issues. He's literally iconic 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
πŸ“¦ where this page comes from