summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9302.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9302.txt')
-rw-r--r--doc/rfc/rfc9302.txt729
1 files changed, 729 insertions, 0 deletions
diff --git a/doc/rfc/rfc9302.txt b/doc/rfc/rfc9302.txt
new file mode 100644
index 0000000..ec6d396
--- /dev/null
+++ b/doc/rfc/rfc9302.txt
@@ -0,0 +1,729 @@
+
+
+
+
+Internet Engineering Task Force (IETF) L. Iannone
+Request for Comments: 9302 Huawei Technologies France
+Obsoletes: 6834 D. Saucez
+Category: Standards Track Inria
+ISSN: 2070-1721 O. Bonaventure
+ Universite catholique de Louvain
+ October 2022
+
+
+ Locator/ID Separation Protocol (LISP) Map-Versioning
+
+Abstract
+
+ This document describes the Locator/ID Separation Protocol (LISP)
+ Map-Versioning mechanism, which provides in-packet information about
+ Endpoint-ID-to-Routing-Locator (EID-to-RLOC) mappings used to
+ encapsulate LISP data packets. This approach is based on associating
+ a version number to EID-to-RLOC mappings and transporting such a
+ version number in the LISP-specific header of LISP-encapsulated
+ packets. LISP Map-Versioning is particularly useful to inform
+ communicating Ingress Tunnel Routers (ITRs) and Egress Tunnel Routers
+ (ETRs) about modifications of the mappings used to encapsulate
+ packets. The mechanism is optional and transparent to
+ implementations not supporting this feature, since in the LISP-
+ specific header and in the Map Records, bits used for Map-Versioning
+ can be safely ignored by ITRs and ETRs that do not support or do not
+ want to use the mechanism.
+
+ This document obsoletes RFC 6834, which is the initial experimental
+ specifications of the mechanisms updated by this document.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9302.
+
+Copyright Notice
+
+ Copyright (c) 2022 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
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Revised BSD License text as described in Section 4.e of the
+ Trust Legal Provisions and are provided without warranty as described
+ in the Revised BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Requirements Notation
+ 3. Definitions of Terms
+ 4. LISP-Specific Header and Map-Version Numbers
+ 5. Map Record and Map-Version
+ 6. EID-to-RLOC Map-Version Number
+ 6.1. The Null Map-Version
+ 7. Dealing with Map-Version Numbers
+ 7.1. Handling Dest Map-Version Number
+ 7.2. Handling Source Map-Version Number
+ 8. Security Considerations
+ 9. Deployment Considerations
+ 10. IANA Considerations
+ 11. References
+ 11.1. Normative References
+ 11.2. Informative References
+ Appendix A. Benefits and Case Studies for Map-Versioning
+ A.1. Map-Versioning and Unidirectional Traffic
+ A.2. Map-Versioning and Interworking
+ A.2.1. Map-Versioning and Proxy-ITRs
+ A.2.2. Map-Versioning and LISP-NAT
+ A.2.3. Map-Versioning and Proxy-ETRs
+ A.3. RLOC Shutdown/Withdraw
+ Authors' Addresses
+
+1. Introduction
+
+ This document describes the Map-Versioning mechanism used to provide
+ information on changes in the Endpoint-ID-to-Routing-Locator (EID-to-
+ RLOC) mappings used in the Locator/ID Separation Protocol (LISP)
+ [RFC9300] [RFC9301] context to perform packet encapsulation. The
+ mechanism is totally transparent to Ingress and Egress Tunnel Routers
+ (xTRs) not supporting or not using such functionality. The
+ architecture of LISP is described in [RFC9299]. The reader is
+ expected to be familiar with this introductory document.
+
+ This document obsoletes [RFC6834], which is the initial experimental
+ specification that describes the mechanisms updated by this document.
+
+ The basic mechanism is to associate a Map-Version number to each LISP
+ EID-to-RLOC mapping and transport such a version number in the LISP-
+ specific header. When a mapping changes, a new version number is
+ assigned to the updated mapping. A change in an EID-to-RLOC mapping
+ can be a modification in the RLOCs set, such as addition of, removal
+ of, or change in the priority or weight of one or more RLOCs.
+
+ When Map-Versioning is used, LISP-encapsulated data packets contain
+ the version number of the two mappings used to select the RLOCs in
+ the outer header (i.e., both source and destination RLOCs). This
+ information has two uses:
+
+ 1. Map-Versioning enables the Egress Tunnel Router (ETR) receiving
+ the packet to know if the Ingress Tunnel Router (ITR) is using
+ the latest mapping version for the destination EID. If this is
+ not the case, the ETR can directly send a Map-Request containing
+ the updated mapping to the ITR to notify it of the latest
+ version. The ETR can also solicit the ITR to trigger a Map-
+ Request to obtain the latest mapping by sending a Solicit Map-
+ Request (SMR) message. Both options are defined in [RFC9301].
+
+ 2. Map-Versioning enables an ETR receiving the packet to know if it
+ has in its EID-to-RLOC Map-Cache the latest mapping for the
+ source EID. If this is not the case, a Map-Request can be sent.
+
+ Considerations about the deployment of LISP Map-Versioning are
+ discussed in Section 9.
+
+ The benefits of Map-Versioning in some common LISP-related use cases
+ are discussed in Appendix A.
+
+2. Requirements Notation
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+3. Definitions of Terms
+
+ This document uses terms already defined in the main LISP
+ specifications ([RFC9300] and [RFC9301]). Here, we define the terms
+ that are specific to the Map-Versioning mechanism. Throughout the
+ whole document, big-endian bit ordering is used.
+
+ Map-Version number: An unsigned 12-bit integer is assigned to an
+ EID-to-RLOC mapping, indicating its version number (Section 6).
+
+ Null Map-Version: A Map-Version number with a value of 0x000 (zero),
+ which is used to signal that the Map-Version feature is not used
+ and no Map-Version number is assigned to the EID-to-RLOC mapping
+ (Section 6.1).
+
+ Dest Map-Version number: Map-Version of the mapping in the EID-to-
+ RLOC Map-Cache used by the ITR to select the RLOC present in the
+ 'Destination Routing Locator' field of the outer IP header of LISP-
+ encapsulated packets (Section 7.1).
+
+ Source Map-Version number: Map-Version of the mapping in the EID-to-
+ RLOC Database used by the ITR to select the RLOC present in the
+ 'Source Routing Locator' field of the outer IP header of LISP-
+ encapsulated packets (Section 7.2).
+
+4. LISP-Specific Header and Map-Version Numbers
+
+ In order for the versioning approach to work, the LISP-specific
+ header has to carry both the Source Map-Version number and Dest Map-
+ Version number. This is done by setting the V-bit in the LISP-
+ specific header as specified in [RFC9300] and shown in the example in
+ Figure 1. All permissible combinations of the flags when the V-bit
+ is set to 1 are described in [RFC9300]. Not all of the LISP-
+ encapsulated packets need to carry version numbers. When the V-bit
+ is set, the LISP-specific header has the following encoding:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |N|L|E|V|I|R|K|K| Source Map-Version | Dest Map-Version |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Instance ID/Locator-Status-Bits |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: LISP-Specific Header Example When Map-Versioning Is in Use
+
+ Source Map-Version number (12 bits): See Section 3.
+
+ Dest Map-Version number (12 bits): See Section 3.
+
+5. Map Record and Map-Version
+
+ To accommodate the mechanism, the Map Records that are transported in
+ Map-Request/Map-Reply/Map-Register messages need to carry the Map-
+ Version number as well. For reference, the Map Record (specified in
+ [RFC9301]) is reported here as an example in Figure 2. This memo
+ does not change the operation of Map-Request/Map-Reply/Map-Register
+ messages; they continue to be used as specified in [RFC9301].
+
+ 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
+ +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | | Record TTL |
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ R | Locator Count | EID mask-len | ACT |A| Reserved |
+ e +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ c | Rsvd | Map-Version Number | EID-Prefix-AFI |
+ o +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ r | EID-Prefix |
+ d +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | /| Priority | Weight | M Priority | M Weight |
+ | L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | o | Unused Flags |L|p|R| Loc-AFI |
+ | c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | \| Locator |
+ +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Map-Record Format Example
+
+ Map-Version Number: Map-Version of the mapping contained in the
+ Record. As explained in Section 6.1, this field can be zero (0),
+ meaning that no Map-Version is associated to the mapping.
+
+ This packet format is backward compatible with xTRs that do not
+ support Map-Versioning, since they can simply ignore those bits.
+
+ A Map-Server receiving a message with an unexpected Map-Version
+ number, for instance an old one, MUST silently drop the message and
+ an appropriate log action SHOULD be taken.
+
+6. EID-to-RLOC Map-Version Number
+
+ The EID-to-RLOC Map-Version number consists of an unsigned 12-bit
+ integer. The version number is assigned on a per-mapping basis,
+ meaning that different mappings have different version numbers, which
+ are updated independently. An update in the version number (i.e., a
+ newer version) MUST consist of an increment of the older version
+ number (the only exception is for the Null Map-Version as explained
+ in at the end of Section 6.1).
+
+ The space of version numbers has a circular order where half of the
+ version numbers are considered greater (i.e., newer) than the current
+ Map-Version number and the other half of the version numbers are
+ considered smaller (i.e., older) than the current Map-Version number.
+ This is basically a serial number on which the arithmetic described
+ in [RFC1982] applies. The ordering enables different reactions to
+ "older" and "newer" Map-Version numbers, whereby "older" numbers are
+ discarded and "newer" numbers trigger Map-Requests (see Section 7 for
+ further details). In a formal way, assuming that we have two version
+ numbers (V1 and V2), both different from the special value Null Map-
+ Version (see Section 6.1), and that the numbers are expressed on 12
+ bits, the following steps MUST be performed (in the same order shown
+ below) to strictly define their order:
+
+ 1. V1 = V2 : The Map-Version numbers are the same.
+
+ 2. V2 > V1 : if and only if
+
+ V2 > V1 AND (V2 - V1) <= 2^(12-1)
+
+ OR
+
+ V1 > V2 AND (V1 - V2) > 2^(12-1)
+
+ 3. V1 > V2 : otherwise.
+
+ Using 12 bits and assuming a Map-Version value of 69, Map-Version
+ numbers in the range [70; 69 + 2048] are greater than 69, while Map-
+ Version numbers in the range [69 + 2049; (69 + 4095) mod 4096] are
+ smaller than 69.
+
+ The initial Map-Version number of a new EID-to-RLOC mapping SHOULD be
+ assigned randomly, but it MUST NOT be set to the Null Map-Version
+ value (0x000), because the Null Map-Version number has a special
+ meaning (see Section 6.1). Optionally, the initial Map-version
+ number may be configured.
+
+ Upon reboot, an ETR will use mappings configured in its EID-to-RLOC
+ Database. If those mappings have a Map-Version number, it will be
+ used according to the mechanisms described in this document. ETRs
+ MUST NOT automatically generate and assign Map-Version numbers to
+ mappings in the EID-to-RLOC Database.
+
+6.1. The Null Map-Version
+
+ The value 0x000 (zero) is a special Map-Version number indicating
+ that there is actually no version number associated to the EID-to-
+ RLOC mapping. Such a value is used for special purposes and is named
+ the Null Map-Version number.
+
+ Map Records that have a Null Map-Version number indicate that there
+ is no Map-Version number associated with the mapping. This means
+ that LISP-encapsulated packets destined to the EID-Prefix referred to
+ by the Map Record MUST NOT contain any Map-Version numbers (V-bit set
+ to 0). If an ETR receives LISP-encapsulated packets with the V-bit
+ set, when the original mapping in the EID-to-RLOC Database has the
+ version number set to the Null Map-Version value, then those packets
+ MUST be silently dropped.
+
+ The Null Map-Version may appear in the LISP-specific header as a
+ Source Map-Version number (Section 7.2). When the Source Map-Version
+ number is set to the Null Map-Version value, it means that no map
+ version information is conveyed for the source site. This means that
+ if a mapping exists for the source EID in the EID-to-RLOC Map-Cache,
+ then the ETR MUST NOT compare the received Null Map-Version with the
+ content of the EID-to-RLOC Map-Cache (Section 7.2).
+
+ The fact that the 0 value has a special meaning for the Map-Version
+ number implies that, when updating a Map-Version number because of a
+ change in the mapping, if the next value is 0, then the Map-Version
+ number MUST be incremented by 2 (i.e., set to 1 (0x001), which is the
+ next valid value).
+
+7. Dealing with Map-Version Numbers
+
+ The main idea of using Map-Version numbers is that whenever there is
+ a change in the mapping (e.g., adding/removing RLOCs, a change in the
+ weights due to Traffic Engineering policies, or a change in the
+ priorities) or a LISP site realizes that one or more of its own RLOCs
+ are no longer reachable from a local perspective (e.g., through IGP
+ or policy changes), the LISP site updates the mapping and also
+ assigns a new Map-Version number. Only the latest Map-Version number
+ has to be considered valid. Mapping updates and their corresponding
+ Map-Version Number must be managed so that a very old version number
+ will not be confused as a new version number (because of the circular
+ numbering space). To this end, simple measures can be taken, like
+ updating a mapping only when all active traffic is using the latest
+ version, or waiting a sufficient amount of time to be sure that the
+ mapping in LISP caches expires, which means waiting at least as long
+ as the mapping Time To Live (TTL) (as defined in [RFC9301]).
+
+ An ETR receiving a LISP packet with Map-Version numbers checks the
+ following predicates:
+
+ 1. The ITR that has sent the packet has an up-to-date mapping in its
+ EID-to-RLOC Map-Cache for the destination EID and is performing
+ encapsulation correctly. See Section 7.1 for details.
+
+ 2. In the case of bidirectional traffic, the mapping in the local
+ ETR EID-to-RLOC Map-Cache for the source EID is up to date. See
+ Section 7.2 for details.
+
+7.1. Handling Dest Map-Version Number
+
+ When an ETR receives a packet, the Dest Map-Version number relates to
+ the mapping for the destination EID for which the ETR is an RLOC.
+ This mapping is part of the ETR EID-to-RLOC Database. Since the ETR
+ is authoritative for the mapping, it has the correct and up-to-date
+ Dest Map-Version number. A check on this version number MUST be
+ done, where the following cases can arise:
+
+ 1. The packet arrives with the same Dest Map-Version number stored
+ in the EID-to-RLOC Database. This is the regular case. The ITR
+ sending the packet has, in its EID-to-RLOC Map-Cache, an up-to-
+ date mapping. No further actions are needed.
+
+ 2. The packet arrives with a Dest Map-Version number newer (as
+ defined in Section 6) than the one stored in the EID-to-RLOC
+ Database. Since the ETR is authoritative on the mapping, meaning
+ that the Map-Version number of its mapping is the correct one,
+ the packet carries a version number that is not considered valid.
+ Therefore, the packet MUST be silently dropped and an appropriate
+ log action SHOULD be taken.
+
+ 3. The packet arrives with a Dest Map-Version number older (as
+ defined in Section 6) than the one stored in the EID-to-RLOC
+ Database. This means that the ITR sending the packet has an old
+ mapping in its EID-to-RLOC Map-Cache containing stale
+ information. The ETR MAY choose to normally process the
+ encapsulated datagram according to [RFC9300]; however, the ITR
+ sending the packet MUST be informed that a newer mapping is
+ available, respecting rate-limitation policies described in
+ [RFC9301]. This is done with a Map-Request message sent back to
+ the ITR, as specified in [RFC9301]. One feature introduced by
+ Map-Version numbers is the possibility of blocking traffic not
+ using the latest mapping. This can happen if an ITR is not
+ updating the mapping for which the ETR is authoritative, or it
+ might be some form of attack. According to the rate-limitation
+ policy defined in [RFC9301] for Map-Request messages, after 10
+ retries, Map-Requests are sent every 30 seconds; if after the
+ first 10 retries the Dest Map-Version number in the packets is
+ not updated, the ETR SHOULD drop packets with a stale Map-Version
+ number. Operators can configure exceptions to this
+ recommendation, which are outside the scope of this document.
+
+ The rule in the third case MAY be more restrictive. If the Record
+ TTL of the previous mapping has already expired, all packets arriving
+ with an old Map-Version MUST be silently dropped right away without
+ issuing any Map-Request. Such action is permitted because, if the
+ new mapping with the updated version number has been unchanged for at
+ least the same amount of time as the Record TTL of the older mapping,
+ all the entries in the EID-to-RLOC Map-Caches of ITRs must have
+ expired. Indeed, all ITRs sending traffic should have refreshed the
+ mapping according to [RFC9301].
+
+ It is a protocol violation for LISP-encapsulated packets to contain a
+ Dest Map-Version number equal to the Null Map-Version number (see
+ Section 6.1).
+
+7.2. Handling Source Map-Version Number
+
+ When an ETR receives a packet, the Source Map-Version number relates
+ to the mapping for the source EID for which the ITR that sent the
+ packet is authoritative. If the ETR has an entry in its EID-to-RLOC
+ Map-Cache for the source EID, then a check MUST be performed, and the
+ following cases can arise:
+
+ 1. The packet arrives with the same Source Map-Version number as
+ that stored in the EID-to-RLOC Map-Cache. This is the regular
+ case. The ETR has in its EID-to-RLOC Map-Cache an up-to-date
+ copy of the mapping. No further actions are needed.
+
+ 2. The packet arrives with a Source Map-Version number newer (as
+ defined in Section 6) than the one stored in the local EID-to-
+ RLOC Map-Cache. This means that the ETR has in its EID-to-RLOC
+ Map-Cache a mapping that is stale and needs to be updated. A
+ Map-Request MUST be sent to get the new mapping for the source
+ EID, respecting rate-limitation policies described in [RFC9301].
+
+ 3. The packet arrives with a Source Map-Version number older (as
+ defined in Section 6) than the one stored in the local EID-to-
+ RLOC Map-Cache. Note that if the mapping is already present in
+ the EID-to-RLOC Map-Cache, this means that an explicit Map-
+ Request has been sent and a Map-Reply has been received from an
+ authoritative source. In this situation, the packet SHOULD be
+ silently dropped. Operators can configure exceptions to this
+ recommendation, which are outside the scope of this document.
+
+ If the ETR does not have an entry in the EID-to-RLOC Map-Cache for
+ the source EID, then the Source Map-Version number MUST be ignored.
+ See Appendix A.1 for an example of when this situation can arise.
+
+8. Security Considerations
+
+ This document builds on the specification and operation of the LISP
+ control and data planes. The Security Considerations of [RFC9300]
+ and [RFC9301] apply. As such, Map-Versioning MUST NOT be used over
+ the public Internet and MUST only be used in trusted and closed
+ deployments. A thorough security analysis of LISP is documented in
+ [RFC7835].
+
+ Attackers can try to trigger a large number of Map-Requests by simply
+ forging packets with random Map-Versions. The Map-Requests are rate
+ limited as described in [RFC9301]. With Map-Versioning, it is
+ possible to filter packets carrying invalid version numbers before
+ triggering a Map-Request, thus helping to reduce the effects of DoS
+ attacks. However, it might not be enough to really protect against a
+ DDoS attack.
+
+ The present memo includes log action to be taken upon certain events.
+ It is recommended that implementations include mechanisms (which are
+ beyond the scope of this document) to avoid log resource exhaustion
+ attacks.
+
+ The specifications in the present memo are relatively conservative in
+ the sense that, in several cases, the packets are dropped. Such an
+ approach is the outcome of considerations made about the possible
+ risks that control plane actions that are triggered by the data plane
+ can be used to carry out attacks. There exists corner cases where,
+ even with an invalid Map-Version number, forwarding the packet might
+ be potentially considered safe; however, system manageability has
+ been given priority with respect to having to put in place more
+ machinery to be able to identify legitimate traffic.
+
+9. Deployment Considerations
+
+ LISP requires multiple ETRs within the same site to provide identical
+ mappings for a given EID-Prefix. Map-Versioning does not require
+ additional synchronization mechanisms. Clearly, all the ETRs have to
+ reply with the same mapping, including the same Map-Version number;
+ otherwise, there can be an inconsistency that creates additional
+ control traffic, instabilities, and traffic disruptions.
+
+ There are two ways Map-Versioning is helpful with respect to
+ synchronization. On the one hand, assigning version numbers to
+ mappings helps in debugging, since quick checks on the consistency of
+ the mappings on different ETRs can be done by looking at the Map-
+ Version number. On the other hand, Map-Versioning can be used to
+ control the traffic toward ETRs that announce the latest mapping.
+
+ As an example, let's consider the topology of Figure 3 where ITR A.1
+ of Domain A is sending unidirectional traffic to Domain B, while A.2
+ of Domain A exchanges bidirectional traffic with Domain B. In
+ particular, ITR A.2 sends traffic to ETR B, and ETR A.2 receives
+ traffic from ITR B.
+
+ +-----------------+ +-----------------+
+ | Domain A | | Domain B |
+ | +---------+ | |
+ | | ITR A.1 |--- | |
+ | +---------+ \ +---------+ |
+ | | ------->| ETR B | |
+ | | ------->| | |
+ | +---------+ / | | |
+ | | ITR A.2 |--- -----| ITR B | |
+ | | | / +---------+ |
+ | | ETR A.2 |<----- | |
+ | +---------+ | |
+ | | | |
+ +-----------------+ +-----------------+
+
+ Figure 3: Example Topology
+
+ Obviously, in the case of Map-Versioning, both ITR A.1 and ITR A.2 of
+ Domain A must use the same value; otherwise, the ETR of Domain B will
+ start to send Map-Requests.
+
+ The same problem can, however, arise without Map-Versioning, for
+ instance, if the two ITRs of Domain A send different Locator-Status-
+ Bits. In this case, either the traffic is disrupted if ETR B does
+ not verify reachability or if ETR B will start sending Map-Requests
+ to confirm each change in reachability.
+
+ So far, LISP does not provide any specific synchronization mechanism
+ but assumes that synchronization is provided by configuring the
+ different xTRs consistently. The same applies for Map-Versioning.
+ If in the future any synchronization mechanism is provided, Map-
+ Versioning will take advantage of it automatically, since it is
+ included in the Map Record format, as described in Section 5.
+
+10. IANA Considerations
+
+ This document has no IANA actions.
+
+11. References
+
+11.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC9300] Farinacci, D., Fuller, V., Meyer, D., Lewis, D., and A.
+ Cabellos, Ed., "The Locator/ID Separation Protocol
+ (LISP)", RFC 9300, DOI 10.17487/RFC9300, October 2022,
+ <https://www.rfc-editor.org/info/rfc9300>.
+
+ [RFC9301] Farinacci, D., Maino, F., Fuller, V., and A. Cabellos,
+ Ed., "Locator/ID Separation Protocol (LISP) Control
+ Plane", RFC 9301, DOI 10.17487/RFC9301, October 2022,
+ <https://www.rfc-editor.org/info/rfc9301>.
+
+11.2. Informative References
+
+ [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982,
+ DOI 10.17487/RFC1982, August 1996,
+ <https://www.rfc-editor.org/info/rfc1982>.
+
+ [RFC6832] Lewis, D., Meyer, D., Farinacci, D., and V. Fuller,
+ "Interworking between Locator/ID Separation Protocol
+ (LISP) and Non-LISP Sites", RFC 6832,
+ DOI 10.17487/RFC6832, January 2013,
+ <https://www.rfc-editor.org/info/rfc6832>.
+
+ [RFC6834] Iannone, L., Saucez, D., and O. Bonaventure, "Locator/ID
+ Separation Protocol (LISP) Map-Versioning", RFC 6834,
+ DOI 10.17487/RFC6834, January 2013,
+ <https://www.rfc-editor.org/info/rfc6834>.
+
+ [RFC7835] Saucez, D., Iannone, L., and O. Bonaventure, "Locator/ID
+ Separation Protocol (LISP) Threat Analysis", RFC 7835,
+ DOI 10.17487/RFC7835, April 2016,
+ <https://www.rfc-editor.org/info/rfc7835>.
+
+ [RFC9299] Cabellos, A. and D. Saucez, Ed., "An Architectural
+ Introduction to the Locator/ID Separation Protocol
+ (LISP)", RFC 9299, DOI 10.17487/RFC9299, October 2022,
+ <https://www.rfc-editor.org/info/rfc9299>.
+
+Appendix A. Benefits and Case Studies for Map-Versioning
+
+ In the following sections, we provide more discussion on various
+ aspects and uses of Map-Versioning. Security observations are
+ grouped in Section 8.
+
+A.1. Map-Versioning and Unidirectional Traffic
+
+ When using Map-Versioning, the LISP-specific header carries two Map-
+ Version numbers for both source and destination mappings. This can
+ raise the question on what will happen in the case of unidirectional
+ flows, for instance, in the case presented in Figure 4, since the
+ LISP specifications do not mandate that the ETR have a mapping from
+ the source EID.
+
+ +-----------------+ +-----------------+
+ | Domain A | | Domain B |
+ | +---------+ +---------+ |
+ | | ITR A |----------->| ETR B | |
+ | +---------+ +---------+ |
+ | | | |
+ +-----------------+ +-----------------+
+
+ Figure 4: Unidirectional Traffic between LISP Domains
+
+ An ITR is able to put both the source and destination version numbers
+ in the LISP-specific header since the Source Map-Version number is in
+ its database, while the Dest Map-Version number is in its cache.
+
+ The ETR checks only the Dest Map-Version number, ignoring the Source
+ Map-Version number as specified in the final sentence of Section 7.2.
+
+A.2. Map-Versioning and Interworking
+
+ Map-Versioning is compatible with the LISP interworking between LISP
+ and non-LISP sites as defined in [RFC6832]. LISP interworking
+ defines three techniques to allow communication LISP sites and non-
+ LISP sites, namely: Proxy-ITR, LISP-NAT, and Proxy-ETR. The
+ following text describes how Map-Versioning relates to these three
+ mechanisms.
+
+A.2.1. Map-Versioning and Proxy-ITRs
+
+ The purpose of the Proxy-ITR (PITR) is to encapsulate traffic
+ originating in a non-LISP site in order to deliver the packet to one
+ of the ETRs of the LISP site (cf. Figure 5). This case is very
+ similar to the unidirectional traffic case described in Appendix A.1;
+ hence, similar rules apply.
+
+ +----------+ +-------------+
+ | LISP | | non-LISP |
+ | Domain A | | Domain B |
+ | +-------+ +-----------+ | |
+ | | ETR A |<-------| Proxy-ITR |<-------| |
+ | +-------+ +-----------+ | |
+ | | | |
+ +----------+ +-------------+
+
+ Figure 5: Unidirectional Traffic from Non-LISP Domain to LISP Domain
+
+ The main difference is that a Proxy-ITR does not have any mapping,
+ since it just encapsulates packets arriving from the non-LISP site,
+ and thus cannot provide a Source Map-Version. In this case, the
+ Proxy-ITR will just put the Null Map-Version value as the Source Map-
+ Version number, while the receiving ETR will ignore the field.
+
+ With this setup, LISP Domain A is able to check whether the PITR is
+ using the latest mapping. In the Dest Map-Version Number of the
+ LISP-specific header, the Proxy-ITR will put the version number of
+ the mapping it is using for encapsulation; the ETR A can use such
+ value as defined in Section 7.1.
+
+A.2.2. Map-Versioning and LISP-NAT
+
+ The LISP-NAT mechanism is based on address translation from non-
+ routable EIDs to routable EIDs and does not involve any form of
+ encapsulation. As such, Map-Versioning does not apply in this case.
+
+A.2.3. Map-Versioning and Proxy-ETRs
+
+ The purpose of the Proxy-ETR (PETR) is to decapsulate traffic
+ originating in a LISP site in order to deliver the packet to the non-
+ LISP site (cf. Figure 6). One of the main reasons to deploy PETRs
+ is to bypass Unicast Reverse Path Forwarding checks on the domain.
+
+ +----------+ +-------------+
+ | LISP | | non-LISP |
+ | Domain A | | Domain B |
+ | +-------+ +-----------+ | |
+ | | ITR A |------->| Proxy-ETR |------->| |
+ | +-------+ +-----------+ | |
+ | | | |
+ +----------+ +-------------+
+
+ Figure 6: Unidirectional Traffic from LISP Domain to Non-LISP Domain
+
+ A Proxy-ETR does not have any mapping, since it just decapsulates
+ packets arriving from the LISP site. In this case, the ITR can
+ interchangeably put a Map-Version value or the Null Map-Version value
+ as the Dest Map-Version number, since the receiving Proxy-ETR will
+ ignore the field.
+
+ With this setup, the Proxy-ETR, by looking at the Source Map-Version
+ Number, is able to check whether the mapping of the source EID has
+ changed. This is useful to perform source RLOC validation. In the
+ example above, traffic coming from the LISP domain has to be LISP
+ encapsulated with a source address being an RLOC of the domain. The
+ Proxy-ETR can retrieve the mapping associated to the LISP domain and
+ check if incoming LISP-encapsulated traffic is arriving from a valid
+ RLOC. A change in the RLOC-Set that can be used as source addresses
+ can be signaled via the version number, with the Proxy-ETR able to
+ request the latest mapping if necessary as described in Section 7.2.
+
+A.3. RLOC Shutdown/Withdraw
+
+ Map-Versioning can also be used to perform a graceful shutdown or to
+ withdraw a specific RLOC. This is achieved by simply issuing a new
+ mapping, with an updated Map-Version number where the specific RLOC
+ to be shut down is withdrawn or announced as unreachable (via the
+ R-bit in the Map Record; see [RFC9301]) but without actually turning
+ it off.
+
+ Upon updating the mapping, the RLOC will receive less and less
+ traffic because remote LISP sites will request the updated mapping
+ and see that it is disabled. At least one TTL, plus a little time
+ for traffic transit, after the mapping is updated, it should be safe
+ to shut down the RLOC gracefully, because all sites actively using
+ the mapping should have been updated.
+
+ Note that a change in ETR for a flow can result in the reordering of
+ the packet in the flow just as any other routing change could cause
+ reordering.
+
+Authors' Addresses
+
+ Luigi Iannone
+ Huawei Technologies France
+ Email: luigi.iannone@huawei.com
+
+
+ Damien Saucez
+ Inria
+ 2004 route des Lucioles - BP 93
+ Sophia Antipolis
+ France
+ Email: damien.saucez@inria.fr
+
+
+ Olivier Bonaventure
+ Universite catholique de Louvain
+ Email: olivier.bonaventure@uclouvain.be