draft-ietf-lisp-map-versioning-09.txt | rfc6834.txt | |||
---|---|---|---|---|
Network Working Group L. Iannone | Internet Engineering Task Force (IETF) L. Iannone | |||
Internet-Draft Telekom Innovation Laboratories | Request for Comments: 6834 Telecom ParisTech | |||
Intended status: Experimental D. Saucez | Category: Experimental D. Saucez | |||
Expires: September 2, 2012 INRIA Sophia Antipolis | ISSN: 2070-1721 INRIA Sophia Antipolis | |||
O. Bonaventure | O. Bonaventure | |||
Universite catholique de Louvain | Universite catholique de Louvain | |||
March 1, 2012 | January 2013 | |||
LISP Map-Versioning | Locator/ID Separation Protocol (LISP) Map-Versioning | |||
draft-ietf-lisp-map-versioning-09.txt | ||||
Abstract | Abstract | |||
This document describes the LISP (Locator/ID Separation Protocol) | This document describes the LISP (Locator/ID Separation Protocol) | |||
Map-Versioning mechanism, which provides in-packet information about | Map-Versioning mechanism, which provides in-packet information about | |||
Endpoint-ID to Routing Locator (EID-to-RLOC) mappings used to | Endpoint ID to Routing Locator (EID-to-RLOC) mappings used to | |||
encapsulate LISP data packets. The proposed approach is based on | encapsulate LISP data packets. The proposed approach is based on | |||
associating a version number to EID-to-RLOC mappings and transport | associating a version number to EID-to-RLOC mappings and the | |||
such a version number in the LISP specific header of LISP- | transport of such a version number in the LISP-specific header of | |||
encapsulated packets. LISP Map-Versioning is particularly useful to | LISP-encapsulated packets. LISP Map-Versioning is particularly | |||
inform communicating Ingress Tunnel Routers (ITRs) and Egress Tunnel | useful to inform communicating Ingress Tunnel Routers (ITRs) and | |||
Routers (ETRs) about modifications of the mappings used to | Egress Tunnel Routers (ETRs) about modifications of the mappings used | |||
encapsulate packets. The mechanism is transparent to implementations | to encapsulate packets. The mechanism is transparent to | |||
not supporting this feature, since in the LISP-specific header and in | implementations not supporting this feature, since in the LISP- | |||
the Map Records, bits used for Map-Versioning can be safely ignored | specific header and in the Map Records, bits used for Map-Versioning | |||
by ITRs and ETRs that do not support the mechanism. | can be safely ignored by ITRs and ETRs that do not support the | |||
mechanism. | ||||
Status of this Memo | ||||
This Internet-Draft is submitted in full conformance with the | Status of This Memo | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This document is not an Internet Standards Track specification; it is | |||
Task Force (IETF). Note that other groups may also distribute | published for examination, experimental implementation, and | |||
working documents as Internet-Drafts. The list of current Internet- | evaluation. | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document defines an Experimental Protocol for the Internet | |||
and may be updated, replaced, or obsoleted by other documents at any | community. This document is a product of the Internet Engineering | |||
time. It is inappropriate to use Internet-Drafts as reference | Task Force (IETF). It represents the consensus of the IETF | |||
material or to cite them other than as "work in progress." | community. It has received public review and has been approved for | |||
publication by the Internet Engineering Steering Group (IESG). Not | ||||
all documents approved by the IESG are a candidate for any level of | ||||
Internet Standard; see Section 2 of RFC 5741. | ||||
This Internet-Draft will expire on September 2, 2012. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc6834. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2012 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction ....................................................3 | |||
2. Requirements Notation . . . . . . . . . . . . . . . . . . . . 4 | 2. Requirements Notation ...........................................4 | |||
3. Definitions of Terms . . . . . . . . . . . . . . . . . . . . . 4 | 3. Definitions of Terms ............................................4 | |||
4. EID-to-RLOC Map-Version number . . . . . . . . . . . . . . . . 4 | 4. EID-to-RLOC Map-Version Number ..................................4 | |||
4.1. The Null Map-Version . . . . . . . . . . . . . . . . . . . 5 | 4.1. The Null Map-Version .......................................5 | |||
5. Dealing with Map-Version numbers . . . . . . . . . . . . . . . 6 | 5. Dealing with Map-Version Numbers ................................6 | |||
5.1. Handling Destination Map-Version number . . . . . . . . . 7 | 5.1. Handling Destination Map-Version Number ....................7 | |||
5.2. Handling Source Map-Version number . . . . . . . . . . . . 9 | 5.2. Handling Source Map-Version Number .........................9 | |||
6. LISP header and Map-Version numbers . . . . . . . . . . . . . 10 | 6. LISP Header and Map-Version Numbers ............................10 | |||
7. Map Record and Map-Version . . . . . . . . . . . . . . . . . . 11 | 7. Map Record and Map-Version .....................................11 | |||
8. Benefits and case studies for Map-Versioning . . . . . . . . . 11 | 8. Benefits and Case Studies for Map-Versioning ...................12 | |||
8.1. Map-Versioning and unidirectional traffic . . . . . . . . 12 | 8.1. Map-Versioning and Unidirectional Traffic .................12 | |||
8.2. Map-Versioning and interworking . . . . . . . . . . . . . 12 | 8.2. Map-Versioning and Interworking ...........................12 | |||
8.2.1. Map-Versioning and Proxy-ITRs . . . . . . . . . . . . 12 | 8.2.1. Map-Versioning and Proxy-ITRs ......................13 | |||
8.2.2. Map-Versioning and LISP-NAT . . . . . . . . . . . . . 13 | 8.2.2. Map-Versioning and LISP-NAT ........................13 | |||
8.2.3. Map-Versioning and Proxy-ETRs . . . . . . . . . . . . 13 | 8.2.3. Map-Versioning and Proxy-ETRs ......................14 | |||
8.3. RLOC shutdown/withdraw . . . . . . . . . . . . . . . . . . 14 | 8.3. RLOC Shutdown/Withdraw ....................................14 | |||
8.4. Map-Version for lightweight LISP implementation . . . . . 14 | 8.4. Map-Version for Lightweight LISP Implementation ...........15 | |||
9. Incremental deployment and implementation status . . . . . . . 15 | 9. Incremental Deployment and Implementation Status ...............15 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 10. Security Considerations .......................................16 | |||
10.1. Map-Versioning against traffic disruption . . . . . . . . 15 | 10.1. Map-Versioning against Traffic Disruption ................16 | |||
10.2. Map-Versioning against reachability information DoS . . . 16 | 10.2. Map-Versioning against Reachability Information DoS ......17 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 11. Open Issues and Considerations ................................17 | |||
12. Open Issues and Considerations . . . . . . . . . . . . . . . . 17 | 11.1. Lack of Synchronization among ETRs .......................17 | |||
12.1. Lack of Synchronization among ETRs . . . . . . . . . . . . 17 | 12. Acknowledgments ...............................................19 | |||
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 18 | 13. References ....................................................19 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 13.1. Normative References .....................................19 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . . 19 | 13.2. Informative References ...................................19 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . . 19 | Appendix A. Estimation of Time before Map-Version Wrap-Around .....21 | |||
Appendix A. Estimation of time before Map-Version wrap-around . . 19 | ||||
Appendix B. Document Change Log . . . . . . . . . . . . . . . . . 20 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
1. Introduction | 1. Introduction | |||
This document describes the Map-Versioning mechanism used to provide | This document describes the Map-Versioning mechanism used to provide | |||
information on changes in the EID-to-RLOC (Endsystem ID to Routing | information on changes in the EID-to-RLOC (Endpoint ID to Routing | |||
LOCator) mappings used in the LISP (Locator/Id Separation Protocol | Locator) mappings used in the LISP (Locator/ID Separation Protocol | |||
[I-D.ietf-lisp]) context to perform packet encapsulation. The | [RFC6830]) context to perform packet encapsulation. The mechanism is | |||
mechanism is totally transparent to xTRs (Ingress and Egress Tunnel | totally transparent to xTRs (Ingress and Egress Tunnel Routers) not | |||
Routers) not supporting such functionality. It is not meant to | supporting such functionality. It is not meant to replace any | |||
replace any existing LISP mechanism, but rather to extend them | existing LISP mechanisms but rather to extend them by providing new | |||
providing new functionalities. If for any unforseen reason a | functionalities. If for any unforeseen reason a normative conflict | |||
normative conflict between the present document and the LISP main | between this document and the LISP main specifications is found, the | |||
specifications is found, the latter ([I-D.ietf-lisp]) has precedence | latter ([RFC6830]) has precedence over this document. | |||
on the present document. | ||||
The basic mechanism is to associate a Map-Version number to each LISP | 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- | EID-to-RLOC mapping and transport such a version number in the LISP- | |||
specific header. When a mapping changes, a new version number is | specific header. When a mapping changes, a new version number is | |||
assigned to the updated mapping. A change in an EID-to-RLOC mapping | assigned to the updated mapping. A change in an EID-to-RLOC mapping | |||
can be a change in the RLOCs set, by adding or removing one or more | can be a change in the RLOCs set, by adding or removing one or more | |||
RLOCs, but it can also be a change in the priority or weight of one | RLOCs, but it can also be a change in the priority or weight of one | |||
or more RLOCs. | or more RLOCs. | |||
When Map-Versioning is used, LISP-encapsulated data packets contain | When Map-Versioning is used, LISP-encapsulated data packets contain | |||
skipping to change at page 3, line 39 | skipping to change at page 3, line 38 | |||
the outer header (i.e., both source and destination). These version | the outer header (i.e., both source and destination). These version | |||
numbers are encoded in the 24 low-order bits of the first longword of | numbers are encoded in the 24 low-order bits of the first longword of | |||
the LISP header and indicated by a specific bit in the flags (first 8 | the LISP header and indicated by a specific bit in the flags (first 8 | |||
high-order bits of the first longword of the LISP header). Note that | high-order bits of the first longword of the LISP header). Note that | |||
not all packets need to carry version numbers. | not all packets need to carry version numbers. | |||
When an ITR (Ingress Tunnel Router) encapsulates a data packet, with | When an ITR (Ingress Tunnel Router) encapsulates a data packet, with | |||
a LISP header containing the Map-Version numbers, it puts in the | a LISP header containing the Map-Version numbers, it puts in the | |||
LISP-specific header two version numbers: | LISP-specific header two version numbers: | |||
1. The version number assigned to the mapping (contained in the EID- | 1. The version number assigned to the mapping (contained in the | |||
to-RLOC Database) used to select the source RLOC. | EID-to-RLOC Database) used to select the source RLOC. | |||
2. The version number assigned to the mapping (contained in the EID- | 2. The version number assigned to the mapping (contained in the | |||
to-RLOC Cache) used to select the destination RLOC. | EID-to-RLOC Cache) used to select the destination RLOC. | |||
This operation is two-fold. On the one hand, it enables the ETR | This operation is two-fold. On the one hand, it enables the ETR | |||
(Egress Tunnel Router) receiving the packet to know if the ITR has | (Egress Tunnel Router) receiving the packet to know if the ITR has | |||
the latest version number that any ETR at the destination EID site | the latest version number that any ETR at the destination EID site | |||
has provided to the ITR in a Map-Reply. If it is not the case the | has provided to the ITR in a Map-Reply. If this is not the case, the | |||
ETR can send to the ITR a Map-Request containing the updated mapping | ETR can send to the ITR a Map-Request containing the updated mapping | |||
or soliciting a Map-Request from the ITR (both cases are already | or solicit a Map-Request from the ITR (both cases are already defined | |||
defined in [I-D.ietf-lisp]). In this way the ITR can update its EID- | in [RFC6830]). In this way, the ITR can update its EID-to-RLOC | |||
to-RLOC Cache. On the other hand, it enables an ETR receiving such a | Cache. On the other hand, it enables an ETR receiving such a packet | |||
packet to know if it has in its EID-to-RLOC Cache the latest mapping | to know if it has in its EID-to-RLOC Cache the latest mapping for the | |||
for the source EID (in case of bidirectional traffic). If it is not | source EID (in the case of bidirectional traffic). If this is not | |||
the case a Map-Request can be sent. | the case, a Map-Request can be sent. | |||
Issues and concerns about the deployment of LISP for Internet traffic | Issues and concerns about the deployment of LISP for Internet traffic | |||
are discussed in [I-D.ietf-lisp]. Section 12 provides additional | are discussed in [RFC6830]. Section 11 provides additional issues | |||
issues and concerns raised by this document. In particular, | and concerns raised by this document. In particular, Section 11.1 | |||
Section 12.1 provides details about the ETRs' synchronization issue | provides details about the ETRs' synchronization issue in the context | |||
in the context of Map-Versioning. | of Map-Versioning. | |||
2. Requirements Notation | 2. Requirements Notation | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
3. Definitions of Terms | 3. Definitions of Terms | |||
The present document uses terms already defined in main LISP | This document uses terms already defined in the main LISP | |||
specification [I-D.ietf-lisp]. Hereafter are defined only the terms | specification [RFC6830]. Here, we define the terms that are specific | |||
that are specific to the Map-Versioning mechanism. Throughout the | to the Map-Versioning mechanism. Throughout the whole document, Big | |||
whole document Big Endian bit ordering is used. | Endian bit ordering is used. | |||
Map-Version number: An unsigned 12-bits assigned to an EID-to-RLOC | Map-Version number: An unsigned 12-bit integer is assigned to an | |||
mapping, not including the value 0 (0x000). | EID-to-RLOC mapping, not including the value 0 (0x000). | |||
Null Map-Version: The 12-bits null value of 0 (0x000) is not used as | Null Map-Version: The 12-bit null value of 0 (0x000) is not used as | |||
Map-Version number. It is used to signal that no Map-Version | a Map-Version number. It is used to signal that no Map-Version | |||
number is assigned to the EID-to-RLOC mapping. | number is assigned to the EID-to-RLOC mapping. | |||
Source Map-Version number: Map-Version number of the EID-to-RLOC | Source Map-Version number: This Map-Version number of the | |||
mapping used to select the source address (RLOC) of the outer IP | EID-to-RLOC mapping is used to select the source address (RLOC) | |||
header of LISP-encapsulated packets. | of the outer IP header of LISP-encapsulated packets. | |||
Destination Map-Version number: Map-Version number of the EID-to- | Destination Map-Version number: This Map-Version number of the | |||
RLOC mapping used to select the destination address (RLOC) of the | EID-to-RLOC mapping is used to select the destination address | |||
outer IP header of LISP-encapsulated packets. | (RLOC) of the outer IP header of LISP-encapsulated packets. | |||
4. EID-to-RLOC Map-Version number | 4. EID-to-RLOC Map-Version Number | |||
The EID-to-RLOC Map-Version number consists in an unsigned 12-bits | The EID-to-RLOC Map-Version number consists of an unsigned 12-bit | |||
integer. The version number is assigned on a per-mapping basis, | integer. The version number is assigned on a per-mapping basis, | |||
meaning that different mappings have a different version number, | meaning that different mappings have a different version number, | |||
which is also updated independently. An update in the version number | which is also updated independently. An update in the version number | |||
(i.e., a newer version) consists in incrementing by one the older | (i.e., a newer version) consists of incrementing by one the older | |||
version number. Appendix A contains a rough estimation of the wrap- | version number. Appendix A contains a rough estimation of the | |||
around time for the Map-Version number. | wrap-around time for the Map-Version number. | |||
The space of version numbers has a circular order where half of the | The space of version numbers has a circular order where half of the | |||
version numbers is greater(i.e., newer) than the current Map-Version | version numbers are greater (i.e., newer) than the current | |||
number and the other half is smaller (i.e., older) than current Map- | Map-Version number and the other half of the version numbers are | |||
Version number. In a more formal way, assuming we have two version | smaller (i.e., older) than the current Map-Version number. In a more | |||
numbers V1 and V2 and that the numbers are expressed on N bits, the | formal way, assuming that we have two version numbers V1 and V2 and | |||
following steps MUST be performed (in the same order as hereafter) to | that the numbers are expressed in N bits, the following steps MUST be | |||
strictly define their order: | performed (in the same order as shown below) to strictly define their | |||
order: | ||||
1. V1 = V2 : The map-version number are the same. | 1. V1 = V2 : The Map-Version numbers are the same. | |||
2. V2 > V1 : if and only if | 2. V2 > V1 : if and only if | |||
V2 > V1 AND (V2 - V1) <= 2**(N-1) | V2 > V1 AND (V2 - V1) <= 2**(N-1) | |||
OR | OR | |||
V1 > V2 AND (V1 - V2) > 2**(N-1) | V1 > V2 AND (V1 - V2) > 2**(N-1) | |||
3. V1 > V2 : otherwise. | 3. V1 > V2 : otherwise. | |||
Using 12 bits, as defined in this document, and assuming a Map- | Using 12 bits, as defined in this document, and assuming a | |||
Version value of 69, Map-Version numbers in the range [70; 69 + 2048] | Map-Version value of 69, Map-Version numbers in the range | |||
are greater than 69, while Map-Version numbers in the range [69 + | [70; 69 + 2048] are greater than 69, while Map-Version numbers in the | |||
2049; (69 + 4096) mod 4096] are smaller than 69. | range [69 + 2049; (69 + 4096) mod 4096] are smaller than 69. | |||
Map-version number are assigned to mappings by configuration. The | Map-Version numbers are assigned to mappings by configuration. The | |||
initial Map-Version number of a new EID-to-RLOC mapping SHOULD be | 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 | assigned randomly, but it MUST NOT be set to the Null Map-Version | |||
value (0x000), because it has a special meaning (see Section 4.1). | value (0x000), because the Null Map-Version number has a special | |||
meaning (see Section 4.1). | ||||
Upon reboot, an ETR will use mappings configured in its EID-to-RLOC | 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 | Database. If those mappings have a Map-Version number, it will be | |||
used according to the mechnisms described in this document. ETRs | used according to the mechanisms described in this document. ETRs | |||
MUST NOT automatically generate and assign Map-Version numbers to | MUST NOT automatically generate and assign Map-Version numbers to | |||
mappings in the EID-to-RLOC Database. | mappings in the EID-to-RLOC Database. | |||
4.1. The Null Map-Version | 4.1. The Null Map-Version | |||
The value 0x000 (zero) is not a valid Map-Version number indicating | The value 0x000 (zero) is not a valid Map-Version number indicating | |||
the version of the EID-to-RLOC mapping. Such a value is used for | the version of the EID-to-RLOC mapping. Such a value is used for | |||
special purposes and is named the Null Map-Version number. | special purposes and is named the Null Map-Version number. | |||
The Null Map-Version MAY appear in the LISP specific header as either | The Null Map-Version MAY appear in the LISP-specific header as either | |||
Source Map-Version number (cf. Section 5.2) or Destination Map- | a Source Map-Version number (cf. Section 5.2) or a Destination | |||
Version number (cf. Section 5.1). When the Source Map-Version number | Map-Version number (cf. Section 5.1). When the Source Map-Version | |||
is set to the Null Map-version value it means that no map version | number is set to the Null Map-Version value, it means that no map | |||
information is conveyed for the source site. This means that if a | version information is conveyed for the source site. This means that | |||
mapping exists for the source EID in the EID-to-RLOC Cache, then the | if a mapping exists for the source EID in the EID-to-RLOC Cache, then | |||
ETR MUST NOT compare the received Null Map-Version with the content | the ETR MUST NOT compare the received Null Map-Version with the | |||
of the EID-to-RLOC Cache. When the Destination Map-version number is | content of the EID-to-RLOC Cache. When the Destination Map-Version | |||
set to the Null Map-version value it means that no map version | number is set to the Null Map-Version value, it means that no map | |||
information is conveyed for the destination site. This means that | version information is conveyed for the destination site. This means | |||
the ETR MUST NOT compare the value with the Map-Version number of the | that the ETR MUST NOT compare the value with the Map-Version number | |||
mapping for the destination EID present in the EID-to-RLOC Database. | of the mapping for the destination EID present in the EID-to-RLOC | |||
Database. | ||||
The other use of the Null Map-Version number is in the Map Records, | The other use of the Null Map-Version number is in the Map Records, | |||
which are part of the Map-Request, Map-Reply and Map-Register | which are part of the Map-Request, Map-Reply, and Map-Register | |||
messages (defined in [I-D.ietf-lisp]). Map Records that have a Null | messages (defined in [RFC6830]). Map Records that have a Null | |||
Map-Version number indicate that there is no Map-Version number | Map-Version number indicate that there is no Map-Version number | |||
associated with the mapping. This means that LISP encapsulated | associated with the mapping. This means that LISP-encapsulated | |||
packets, destined to the EID-Prefix the Map Record refers to, MUST | packets destined to the EID-Prefix referred to by the Map Record MUST | |||
either not contain any Map-Version numbers (V bit set to 0), or if it | either not contain any Map-Version numbers (V-bit set to 0) or, if | |||
contains Map-Version numbers (V bit set to 1) then the destination | they contain Map-Version numbers (V-bit set to 1), then the | |||
Map-Version number MUST be set to the Null Map-Version number. Any | destination Map-Version number MUST be set to the Null Map-Version | |||
value different from zero means that Map-Versioning is supported and | number. Any value different from zero means that Map-Versioning is | |||
MAY be used. | supported and MAY be used. | |||
The fact that the 0 value has a special meaning for the Map-Version | 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 | number implies that, when updating a Map-Version number because of a | |||
change in the mapping, if the next value is 0 then Map-Version number | change in the mapping, if the next value is 0, then the Map-Version | |||
MUST be incremented by 2 (i.e., set to 1, which is the next valid | number MUST be incremented by 2 (i.e., set to 1, which is the next | |||
value). | valid value). | |||
5. Dealing with Map-Version numbers | 5. Dealing with Map-Version Numbers | |||
The main idea of using Map-Version numbers is that whenever there is | 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 | a change in the mapping (e.g., adding/removing RLOCs, a change in the | |||
weights due to TE policies, or a change in the priorities) or a LISP | weights due to Traffic Engineering policies, or a change in the | |||
site realizes that one or more of its own RLOCs are not reachable | priorities) or a LISP site realizes that one or more of its own RLOCs | |||
anymore from a local perspective (e.g., through IGP, or policy | are not reachable anymore from a local perspective (e.g., through | |||
changes) the LISP site updates the mapping also assigning a new Map- | IGP, or policy changes) the LISP site updates the mapping, also | |||
Version number. | assigning a new Map-Version number. | |||
To each mapping, a version number is associated and changes each time | To each mapping, a version number is associated and changes each time | |||
the mapping is changed. Note that map-versioning does not introduce | the mapping is changed. Note that Map-Versioning does not introduce | |||
new problems concerning the coordination of different ETRs of a | new problems concerning the coordination of different ETRs of a | |||
domain. Indeed, ETRs belonging to the same LISP site must return for | domain. Indeed, ETRs belonging to the same LISP site must return for | |||
a specific EID-prefix the same mapping, including the same Map- | a specific EID-Prefix the same mapping, including the same | |||
Version number. In principle this is orthogonal to whether or not | Map-Version number. In principle, this is orthogonal to whether or | |||
map-versioning is used. The synchronization problem and its | not Map-Versioning is used. The synchronization problem and its | |||
implication on the traffic is out of the scope of this document (see | implication on the traffic are out of the scope of this document (see | |||
Section 12). | Section 11). | |||
In order to announce in a data-driven fashion that the mapping has | In order to announce in a data-driven fashion that the mapping has | |||
been updated, Map-Version numbers used to create the outer IP header | been updated, Map-Version numbers used to create the outer IP header | |||
of the LISP-encapsulated packet are embedded in the LISP-specific | of the LISP-encapsulated packet are embedded in the LISP-specific | |||
header. This means that the header needs to contain two Map-Version | header. This means that the header needs to contain two Map-Version | |||
numbers: | numbers: | |||
o The Source Map-Version number of the EID-to-RLOC mapping in the | o The Source Map-Version number of the EID-to-RLOC mapping in the | |||
EID-to-RLOC Database used to select the source RLOC. | EID-to-RLOC Database used to select the source RLOC. | |||
o The Destination Map-Version number of the EID-to-RLOC mapping in | o The Destination Map-Version number of the EID-to-RLOC mapping in | |||
the EID-to-RLOC Cache used to select the destination RLOC. | the EID-to-RLOC Cache used to select the destination RLOC. | |||
By embedding both Source Map-Version number and Destination Map- | By embedding both the Source Map-Version number and the Destination | |||
Version number an ETR receiving a LISP packet with Map-Version | Map-Version number, an ETR receiving a LISP packet with Map-Version | |||
numbers, can perform the following checks: | numbers can perform the following checks: | |||
1. The ITR that has sent the packet has an up-to-date mapping in its | 1. The ITR that has sent the packet has an up-to-date mapping in its | |||
EID-to-RLOC Cache for the destination EID and is performing | EID-to-RLOC Cache for the destination EID and is performing | |||
encapsulation correctly. | encapsulation correctly. | |||
2. In case of bidirectional traffic, the mapping in the local ETR | 2. In the case of bidirectional traffic, the mapping in the local | |||
EID-to-RLOC Cache for the source EID is up-to-date. | ETR EID-to-RLOC Cache for the source EID is up to date. | |||
If one or both of the above conditions do not hold, the ETR can send | If one or both of the above conditions do not hold, the ETR can send | |||
a Map-Request either to make the ITR aware that a new mapping is | a Map-Request either to make the ITR aware that a new mapping is | |||
available (see Section 5.1) or to update the mapping in the local | available (see Section 5.1) or to update the mapping in the local | |||
EID-to-RLOC Cache (see Section 5.2). | EID-to-RLOC Cache (see Section 5.2). | |||
5.1. Handling Destination Map-Version number | 5.1. Handling Destination Map-Version Number | |||
When an ETR receives a packet, the Destination Map-Version number | When an ETR receives a packet, the Destination Map-Version number | |||
relates to the mapping for the destination EID for which the ETR is a | relates to the mapping for the destination EID for which the ETR is | |||
RLOC. This mapping is part of the ETR EID-to-RLOC Database. Since | an RLOC. This mapping is part of the ETR EID-to-RLOC Database. | |||
the ETR is authoritative for the mapping, it has the correct and up- | Since the ETR is authoritative for the mapping, it has the correct | |||
to-date Destination Map-Version number. A check on this version | and up-to-date Destination Map-Version number. A check on this | |||
number can be done, where the following cases can arise: | version number can be done, where the following cases can arise: | |||
1. The packets arrive with the same Destination Map-Version number | 1. The packet arrives with the same Destination Map-Version number | |||
stored in the EID-to-RLOC Database. This is the regular case. | stored in the EID-to-RLOC Database. This is the regular case. | |||
The ITR sending the packet has in its EID-to-RLOC Cache an up-to- | The ITR sending the packet has in its EID-to-RLOC Cache an | |||
date mapping. No further actions are needed. | up-to-date mapping. No further actions are needed. | |||
2. The packet arrives with a Destination Map-Version number greater | 2. The packet arrives with a Destination Map-Version number greater | |||
(i.e., newer) than the one stored in the EID-to-RLOC Database. | (i.e., newer) than the one stored in the EID-to-RLOC Database. | |||
Since the ETR is authoritative on the mapping, meaning that the | Since the ETR is authoritative on the mapping, meaning that the | |||
Map-Version number of its mapping is the correct one, this | Map-Version number of its mapping is the correct one, this | |||
implies that someone is not behaving correctly with respect to | implies that someone is not behaving correctly with respect to | |||
the specifications. In this case the packet carries a version | the specifications. In this case, the packet carries a version | |||
number that is not valid, otherwise the ETR would have the same, | number that is not valid; otherwise, the ETR would have the same | |||
and SHOULD be silently dropped. | number, and the packet SHOULD be silently dropped. | |||
3. The packets arrive with a Destination Map-Version number smaller | 3. The packets arrive with a Destination Map-Version number smaller | |||
(i.e., older) than the one stored in the EID-to-RLOC Database. | (i.e., older) than the one stored in the EID-to-RLOC Database. | |||
This means that the ITR sending the packet has an old mapping in | This means that the ITR sending the packet has an old mapping in | |||
its EID-to-RLOC Cache containing stale information. The ETR MAY | its EID-to-RLOC Cache containing stale information. The ETR MAY | |||
choose to normally process the encapsulated datagram according to | choose to normally process the encapsulated datagram according to | |||
[I-D.ietf-lisp], however, the ITR sending the packet has to be | [RFC6830]; however, the ITR sending the packet has to be informed | |||
informed that a newer mapping is available. This is done with a | that a newer mapping is available. This is done with a | |||
Map-Request message sent back to the ITR. The Map-Request will | Map-Request message sent back to the ITR. The Map-Request will | |||
either trigger a Map-Request back using the Solicit-Map-Request | either trigger a Map-Request back using the Solicit-Map-Request | |||
(SMR) bit or it will piggyback the newer mapping. These are not | (SMR) bit or it will piggyback the newer mapping. These are not | |||
new mechanisms; how to SMR or piggyback mappings in Map-Request | new mechanisms; how to use the SMR bit or how to piggyback | |||
messages is already described in [I-D.ietf-lisp], while their | mappings in Map-Request messages is already described in | |||
security is discussed in [I-D.ietf-lisp-threats]. These Map- | [RFC6830], while their security is discussed in [LISP-THREATS]. | |||
Request messages should be rate limited (rate limitation policies | These Map-Request messages should be rate-limited | |||
are also described in [I-D.ietf-lisp]). The feature introduced | (rate-limitation policies are also described in [RFC6830]). The | |||
by Map-Version numbers is the possibility of blocking traffic not | feature introduced by Map-Version numbers is the possibility of | |||
using the latest mapping. Indeed, after a certain number of | blocking traffic not using the latest mapping. Indeed, after a | |||
retries, if the Destination Map-Version number in the packets is | certain number of retries, if the Destination Map-Version number | |||
not updated, the ETR MAY drop packets with a stale Map-Version | in the packets is not updated, the ETR MAY drop packets with a | |||
number while strongly reducing the rate of Map-Request messages. | stale Map-Version number while strongly reducing the rate of | |||
This because either the ITR is refusing to use the mapping for | Map-Request messages. This is because either the ITR is refusing | |||
which the ETR is authoritative or (worse) it might be some form | to use the mapping for which the ETR is authoritative, or (worse) | |||
of attack. Another case might be that the control-plane is | it might be some form of attack. Another case might be that the | |||
experiencing transient failures so the Map-Requests cannot reach | control plane is experiencing transient failures, so the | |||
that ITR. By keeping sending Map-Requests at very low rate it is | Map-Requests cannot reach that ITR. By continually sending | |||
possible to recover from this situation. | Map-Requests at a very low rate, it is possible to recover from | |||
this situation. | ||||
The rule in the third case MAY be more restrictive. If the mapping | The rule in the third case MAY be more restrictive. If the mapping | |||
has been the same for a period of time as long as the TTL (defined in | has been the same for a period of time as long as the Time to Live | |||
[I-D.ietf-lisp]) of the previous version of the mapping, all packets | (TTL) (defined in [RFC6830]) of the previous version of the mapping, | |||
arriving with an old Map-Version SHOULD be silently dropped right | all packets arriving with an old Map-Version SHOULD be silently | |||
away without issuing any Map-Request. The reason that allows such | dropped right away without issuing any Map-Request. Such action is | |||
action is the fact that if the new mapping with the updated version | permitted because if the new mapping with the updated version number | |||
number has been unchanged for at least the same time as the TTL of | has been unchanged for at least the same time as the TTL of the older | |||
the older mapping, all the entries in the EID-to-RLOC Caches of ITRs | mapping, all the entries in the EID-to-RLOC Caches of ITRs must have | |||
must have expired. Hence, all ITRs sending traffic should have | expired. Hence, all ITRs sending traffic should have refreshed the | |||
refreshed the mapping according to [I-D.ietf-lisp]. If packets with | mapping according to [RFC6830]. If packets with old Map-Version | |||
old Map-Version number are still received, then either someone has | numbers are still received, then either someone has not respected the | |||
not respected the TTL, or it is a form of spoof/attack. In both | TTL or it is a form of spoof/attack. In both cases, this is not | |||
cases this is not valid behavior with respect to the specifications | valid behavior with respect to the specifications and the packet | |||
and the packet SHOULD be silently dropped. | SHOULD be silently dropped. | |||
LISP-encapsulated packets with the V-bit set, when the original | LISP-encapsulated packets with the V-bit set, when the original | |||
mapping in the EID-to-RLOC Database has version number set to the | mapping in the EID-to-RLOC Database has the version number set to the | |||
Null Map-Version value, MAY be silently dropped. As explained in | Null Map-Version value, MAY be silently dropped. As explained in | |||
Section 4.1, if an EID-to-RLOC mapping has a Null Map-Version, it | Section 4.1, if an EID-to-RLOC mapping has a Null Map-Version, it | |||
means that ITRs, using the mapping for encapsulation, MUST NOT use | means that ITRs, using the mapping for encapsulation, MUST NOT use a | |||
Map-Version number in the LISP-specific header. | Map-Version number in the LISP-specific header. | |||
For LISP-encapsulated packets with the V-bit set, when the original | For LISP-encapsulated packets with the V-bit set, when the original | |||
mapping in the EID-to-RLOC Database has version number set to a value | mapping in the EID-to-RLOC Database has the version number set to a | |||
different from the Null Map-Version value, a Destination Map-Version | value different from the Null Map-Version value, a Destination | |||
number equal to the Null Map-Version value means that the Destination | Map-Version number equal to the Null Map-Version value means that the | |||
Map-Version number MUST be ignored. | Destination Map-Version number MUST be ignored. | |||
5.2. Handling Source Map-Version number | 5.2. Handling Source Map-Version Number | |||
When an ETR receives a packet, the Source Map-Version number relates | 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 | 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 | packet is authoritative. If the ETR has an entry in its EID-to-RLOC | |||
Cache for the source EID, then a check can be performed and the | Cache for the source EID, then a check can be performed and the | |||
following cases can arise: | following cases can arise: | |||
1. The packet arrives with the same Source Map-Version number stored | 1. The packet arrives with the same Source Map-Version number as | |||
in the EID-to-RLOC Cache. This is the correct regular case. The | that stored in the EID-to-RLOC Cache. This is the correct | |||
ITR has in its EID-to-RLOC Cache an up-to-date copy of the | regular case. The ITR has in its EID-to-RLOC Cache an up-to-date | |||
mapping. No further actions are needed. | copy of the mapping. No further actions are needed. | |||
2. The packet arrives with a Source Map-Version number greater | 2. The packet arrives with a Source Map-Version number greater | |||
(i.e., newer) than the one stored in the local EID-to-RLOC Cache. | (i.e., newer) than the one stored in the local EID-to-RLOC Cache. | |||
This means that ETR has in its EID-to-RLOC Cache a mapping that | This means that the ETR has in its EID-to-RLOC Cache a mapping | |||
is stale and needs to be updated. A Map-Request SHOULD be sent | that is stale and needs to be updated. A Map-Request SHOULD be | |||
to get the new mapping for the source EID. This is a normal Map- | sent to get the new mapping for the source EID. This is a normal | |||
Request message sent through the mapping system and MUST respect | Map-Request message sent through the mapping system and MUST | |||
the specifications in [I-D.ietf-lisp], including rate limitation | respect the specifications in [RFC6830], including rate- | |||
policies. | limitation policies. | |||
3. The packet arrives with a Source Map-Version number smaller | 3. The packet arrives with a Source Map-Version number smaller | |||
(i.e., older) than the one stored in the local EID-to-RLOC Cache. | (i.e., older) than the one stored in the local EID-to-RLOC Cache. | |||
Such a case is not valid with respect to the specifications. | Such a case is not valid with respect to the specifications. | |||
Indeed, if the mapping is already present in the EID-to-RLOC | Indeed, if the mapping is already present in the EID-to-RLOC | |||
Cache, this means that an explicit Map-Request has been sent and | Cache, this means that an explicit Map-Request has been sent and | |||
a Map-Reply has been received from an authoritative source. | a Map-Reply has been received from an authoritative source. | |||
Assuming that the mapping system is not corrupted anyhow, the | Assuming that the mapping system is not corrupted, the | |||
Map-Version in the EID-to-RLOC Cache is the correct one, while | Map-Version in the EID-to-RLOC Cache is the correct one, while | |||
the one carried by the packet is stale. In this situation the | the one carried by the packet is stale. In this situation, the | |||
packet MAY be silently dropped. | packet MAY be silently dropped. | |||
If the ETR does not have an entry in the EID-to-RLOC Cache for the | If the ETR does not have an entry in the EID-to-RLOC Cache for the | |||
source EID (e.g., in case of unidirectional traffic) then the Source | source EID (e.g., in the case of unidirectional traffic), then the | |||
Map-Version number can be safely ignored. | Source Map-Version number can be safely ignored. | |||
For LISP-encapsulated packets with the V-bit set, if the Source Map- | For LISP-encapsulated packets with the V-bit set, if the Source | |||
Version number is the Null Map-Version value, it means that the | Map-Version number is the Null Map-Version value, it means that the | |||
Source Map-Version number MUST be ignored. | Source Map-Version number MUST be ignored. | |||
6. LISP header and Map-Version numbers | 6. LISP Header and Map-Version Numbers | |||
In order for the versioning approach to work, the LISP specific | In order for the versioning approach to work, the LISP-specific | |||
header has to carry both Source Map-Version number and Destination | header has to carry both the Source Map-Version number and | |||
Map-Version number. This is done by setting the V-bit in the LISP | Destination Map-Version number. This is done by setting the V-bit in | |||
specific header as defined in [I-D.ietf-lisp] Section 5.3. When the | the LISP-specific header as defined in [RFC6830] Section 5.3. When | |||
V-bit is set the low-order 24-bits of the first longword are used to | the V-bit is set, the low-order 24 bits of the first longword are | |||
transport both source and destination Map-Version numbers. In | used to transport both the source and destination Map-Version | |||
particular the first 12 bits are used for Source Map-Version number | numbers. In particular, the first 12 bits are used for the Source | |||
and the second 12 bits for the Destination Map-Version number. | Map-Version number and the second 12 bits for the Destination | |||
Map-Version number. | ||||
Hereafter is the example of LISP header carrying version numbers in | Below is an example of a LISP header carrying version numbers in the | |||
the case of IPv4-in-IPv4 encapsulation. The same setting can be used | case of IPv4-in-IPv4 encapsulation. The same setting can be used for | |||
for any other case (IPv4-in-IPv6, IPv6-in-IPv4, and IPv6-in-IPv6). | any other case (IPv4-in-IPv6, IPv6-in-IPv4, and IPv6-in-IPv6). | |||
0 1 2 3 | 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 | 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|flags| Source Map-Version |Destination Map-Version| | / |N|L|E|V|I|flags| Source Map-Version |Destination Map-Version| | |||
LISP+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LISP+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
\ | Instance ID/Locator Status Bits | | \ | Instance ID/Locator-Status-Bits | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Source Map-Version number (12 bits): Map-Version of the mapping used | Source Map-Version number (12 bits): Map-Version of the mapping used | |||
by the ITR to select the RLOC present in the "Source Routing | by the ITR to select the RLOC present in the 'Source Routing | |||
Locator" field. How to set on transmission and handle on | Locator' field. Section 5.2 describes how to set this value on | |||
reception this value is described in Section 5.2. | transmission and handle it on reception. | |||
Destination Map-Version number (12 bits): Map-Version of the mapping | Destination Map-Version number (12 bits): Map-Version of the mapping | |||
used by the ITR to select the RLOC present in the "Destination | used by the ITR to select the RLOC present in the 'Destination | |||
Routing Locator" field. How to set on transmission and handle on | Routing Locator' field. Section 5.1 describes how to set this | |||
reception this value is described in Section 5.1. | value on transmission and handle it on reception. | |||
The present document just specifies how to use the low-order 24-bits | This document only specifies how to use the low-order 24 bits of the | |||
of the first longword of the LISP-specific header when the V-bit is | first longword of the LISP-specific header when the V-bit is set to | |||
set to 1. All other cases, including the bit fields of the rest of | 1. All other cases, including the bit fields of the rest of the | |||
the LISP-specific header and the whole LISP packet format are | LISP-specific header and the whole LISP packet format, are specified | |||
specified in [I-D.ietf-lisp]. Not all of the LISP encapsulated | in [RFC6830]. Not all of the LISP-encapsulated packets need to carry | |||
packets need to carry version numbers. When Map-Version numbers are | version numbers. When Map-Version numbers are carried in these | |||
carried the V-bit MUST be set to 1. All legal combinations of the | packets, the V-bit MUST be set to 1. All permissible combinations of | |||
flags, when the V-bit is set to 1, are described in [I-D.ietf-lisp]. | the flags when the V-bit is set to 1 are described in [RFC6830]. | |||
7. Map Record and Map-Version | 7. Map Record and Map-Version | |||
To accommodate the proposed mechanism, the Map Records that are | To accommodate the proposed mechanism, the Map Records that are | |||
transported on Map-Request/Map-Reply/Map-Register messages need to | transported in Map-Request/Map-Reply/Map-Register messages need to | |||
carry the Map-Version number as well. For this purpose the 12-bits | carry the Map-Version number as well. For this purpose, the 12 bits | |||
before the EID-AFI field in the Record that describe a mapping is | before the 'EID-Prefix-AFI' field in the Record that describes a | |||
used. This is defined in Section 6.1.4 of [I-D.ietf-lisp] and | mapping are used. This is defined in Section 6.1.4 of [RFC6830] and | |||
reported here as example. | reported here as an example. | |||
0 1 2 3 | 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 | 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 | | | | Record TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
R | Locator Count | EID mask-len | ACT |A| Reserved | | R | Locator Count | EID mask-len | ACT |A| Reserved | | |||
e +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | e +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
c | Rsvd | Map-Version Number | EID-prefix-AFI | | c | Rsvd | Map-Version Number | EID-Prefix-AFI | | |||
o +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | o +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
r | EID-prefix | | r | EID-Prefix | | |||
d +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | d +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| /| Priority | Weight | M Priority | M Weight | | | /| Priority | Weight | M Priority | M Weight | | |||
| L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| o | Unused Flags |L|p|R| Loc-AFI | | | o | Unused Flags |L|p|R| Loc-AFI | | |||
| c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| \| Locator | | | \| Locator | | |||
+-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Map-Version Number: Map-Version of the mapping contained in the | Map-Version Number: Map-Version of the mapping contained in the | |||
Record. As explained in Section 4.1 this field can be zero (0), | Record. As explained in Section 4.1, this field can be zero (0), | |||
meaning that no Map-Version is associated to the mapping, hence | meaning that no Map-Version is associated to the mapping; hence, | |||
packets that are LISP-encapsulated using this mapping MUST NOT | packets that are LISP encapsulated using this mapping MUST NOT | |||
contain Map-Version numbers in the LISP specific header and the | contain Map-Version numbers in the LISP-specific header, and the | |||
V-bit MUST be set to 0. | V-bit MUST be set to 0. | |||
This packet format works perfectly with xTRs that do not support Map- | This packet format works perfectly with xTRs that do not support | |||
Versioning, since they can simply ignore those bits. | Map-Versioning, since they can simply ignore those bits. | |||
8. Benefits and case studies for Map-Versioning | 8. Benefits and Case Studies for Map-Versioning | |||
In the following sections we provide more discussion on various | In the following sections, we provide more discussion on various | |||
aspects and use of the Map-Versioning. Security observations are | aspects and uses of Map-Versioning. Security observations are | |||
instead grouped in Section 10. | grouped in Section 10. | |||
8.1. Map-Versioning and unidirectional traffic | 8.1. Map-Versioning and Unidirectional Traffic | |||
When using Map-Versioning the LISP specific header carries two Map- | When using Map-Versioning, the LISP-specific header carries two | |||
Version numbers, for both source and destination mappings. This can | Map-Version numbers, for both source and destination mappings. This | |||
raise the question on what will happen in the case of unidirectional | can raise the question on what will happen in the case of | |||
flows, like for instance in the case presented in Figure 1, since | unidirectional flows, for instance, in the case presented in | |||
LISP specification do not mandate for ETR to have a mapping for the | Figure 1, since the LISP specification does not mandate that the ETR | |||
source EID. | have a mapping for the source EID. | |||
+-----------------+ +-----------------+ | +-----------------+ +-----------------+ | |||
| Domain A | | Domain B | | | Domain A | | Domain B | | |||
| +---------+ +---------+ | | | +---------+ +---------+ | | |||
| | ITR A |----------->| ETR B | | | | | ITR A |----------->| ETR B | | | |||
| +---------+ +---------+ | | | +---------+ +---------+ | | |||
| | | | | | | | | | |||
+-----------------+ +-----------------+ | +-----------------+ +-----------------+ | |||
Figure 1 | Figure 1: Unidirectional Traffic between LISP Domains | |||
For what concerns the ITR, it is able to put both source and | In the case of the ITR, the ITR is able to put both the source and | |||
destination version number in the LISP header since the Source Map- | destination version number in the LISP header, since the Source | |||
Version number is in ITR's database, while the Destination Map- | Map-Version number is in the ITR's database, while the Destination | |||
Version number is in ITR's cache. | Map-Version number is in the ITR's cache. | |||
For what concerns the ETR, it simply checks only the Destination Map- | In the case of the ETR, the ETR simply checks only the Destination | |||
Version number in the same way as described in Section 5, ignoring | Map-Version number in the same way as that described in Section 5, | |||
the Source Map-Version number. | ignoring the Source Map-Version number. | |||
8.2. Map-Versioning and interworking | 8.2. Map-Versioning and Interworking | |||
Map-Versioning is compatible with the LISP interworking between LISP | Map-Versioning is compatible with the LISP interworking between LISP | |||
and non-LISP sites as defined in [I-D.ietf-lisp-interworking]. LISP | and non-LISP sites as defined in [RFC6832]. LISP interworking | |||
interworking defines three techniques to make LISP sites and non-LISP | defines three techniques to make LISP sites and non-LISP sites, | |||
sites, namely Proxy-ITR, LISP-NAT, and Proxy-ETR. Hereafter it is | namely Proxy-ITR, LISP-NAT, and Proxy-ETR. The following text | |||
described how Map-Versioning relates to these three mechanisms. | describes how Map-Versioning relates to these three mechanisms. | |||
8.2.1. Map-Versioning and Proxy-ITRs | 8.2.1. Map-Versioning and Proxy-ITRs | |||
The purpose of the Proxy-ITR (PITR) is to encapsulate traffic | 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 | originating in a non-LISP site in order to deliver the packet to one | |||
of the ETRs of the LISP site (cf. Figure 2). This case is very | of the ETRs of the LISP site (cf. Figure 2). This case is very | |||
similar to the unidirectional traffic case described in Section 8.1, | similar to the unidirectional traffic case described in Section 8.1; | |||
hence similar rules apply. | hence, similar rules apply. | |||
+----------+ +-------------+ | +----------+ +-------------+ | |||
| LISP | | non-LISP | | | LISP | | non-LISP | | |||
| Domain A | | Domain B | | | Domain A | | Domain B | | |||
| +-------+ +-----------+ | | | | +-------+ +-----------+ | | | |||
| | ETR A |<-------| Proxy ITR |<-------| | | | | ETR A |<-------| Proxy-ITR |<-------| | | |||
| +-------+ +-----------+ | | | | +-------+ +-----------+ | | | |||
| | | | | | | | | | |||
+----------+ +-------------+ | +----------+ +-------------+ | |||
Figure 2 | Figure 2: Unidirectional Traffic from Non-LISP Domain to LISP Domain | |||
The main difference is that a Proxy-ITR does not have any mapping, | The main difference is that a Proxy-ITR does not have any mapping, | |||
since it just encapsulate packets arriving from non-LISP site, thus | since it just encapsulates packets arriving from the non-LISP site | |||
cannot provide a Source Map-Version. In this case, the proxy-ITR | and thus cannot provide a Source Map-Version. In this case, the | |||
will just put the Null Map-Version value as Source Map-Version | Proxy-ITR will just put the Null Map-Version value as the Source | |||
number, while the receiving ETR will ignore the field. | Map-Version number, while the receiving ETR will ignore the field. | |||
With this setup the LISP Domain A is able to check whether or not the | With this setup, LISP Domain A is able to check whether or not the | |||
PITR is using the latest mapping. If this is not the case the | PITR is using the latest mapping. If this is not the case, the | |||
mapping for LISP Domain A on the PITR can be updated using one of the | mapping for LISP Domain A on the PITR can be updated using one of the | |||
mechanisms defined in [I-D.ietf-lisp] and | mechanisms defined in [RFC6830] and [RFC6832]. | |||
[I-D.ietf-lisp-interworking]. | ||||
8.2.2. Map-Versioning and LISP-NAT | 8.2.2. Map-Versioning and LISP-NAT | |||
The LISP-NAT mechanism is based on address translation from non- | The LISP-NAT mechanism is based on address translation from | |||
routable EIDs to routable EIDs and does not involve any form of | non-routable EIDs to routable EIDs and does not involve any form of | |||
encapsulation. As such Map-Versioning does not apply in this case. | encapsulation. As such, Map-Versioning does not apply in this case. | |||
8.2.3. Map-Versioning and Proxy-ETRs | 8.2.3. Map-Versioning and Proxy-ETRs | |||
The purpose of the Proxy-ETR (PETR) is to decapsulate traffic | 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- | originating in a LISP site in order to deliver the packet to the | |||
LISP site (cf. Figure 3). One of the main reasons of deploy PETRs is | non-LISP site (cf. Figure 3). One of the main reasons to deploy | |||
to bypass uRPF (Unicast Reverse Path Forwarding) checks on the | PETRs is to bypass uRPF (Unicast Reverse Path Forwarding) checks on | |||
provider edge. | the provider edge. | |||
+----------+ +-------------+ | +----------+ +-------------+ | |||
| LISP | | non-LISP | | | LISP | | non-LISP | | |||
| Domain A | | Domain B | | | Domain A | | Domain B | | |||
| +-------+ +-----------+ | | | | +-------+ +-----------+ | | | |||
| | ITR A |------->| Proxy ETR |------->| | | | | ITR A |------->| Proxy-ETR |------->| | | |||
| +-------+ +-----------+ | | | | +-------+ +-----------+ | | | |||
| | | | | | | | | | |||
+----------+ +-------------+ | +----------+ +-------------+ | |||
Figure 3 | Figure 3: Unidirectional Traffic from LISP Domain to Non-LISP Domain | |||
A Proxy-ETR does not have any mapping, since it just decapsulates | A Proxy-ETR does not have any mapping, since it just decapsulates | |||
packets arriving from LISP site. In this case, the ITR will just put | packets arriving from the LISP site. In this case, the ITR will just | |||
the Null Map-Version value as Destination Map-Version number, while | put the Null Map-Version value as the Destination Map-Version number, | |||
the receiving Proxy-ETR will ignore the field. | while the receiving Proxy-ETR will ignore the field. | |||
With this setup the Proxy-ETR is able to check whether or not the | With this setup, the Proxy-ETR is able to check whether or not the | |||
mapping has changed. If this is the case the mapping for LISP Domain | mapping has changed. If this is the case, the mapping for LISP | |||
A on the PETR can be updated using one of the mechanisms defined in | Domain A on the PETR can be updated using one of the mechanisms | |||
[I-D.ietf-lisp] and [I-D.ietf-lisp-interworking]. | defined in [RFC6830] and [RFC6832]. | |||
8.3. RLOC shutdown/withdraw | 8.3. RLOC Shutdown/Withdraw | |||
Map-Versioning can be even used to perform a graceful shutdown or | Map-Versioning can also be used to perform a graceful shutdown or | |||
withdraw of a specific RLOC. This is achieved by simply issuing a | withdraw of a specific RLOC. This is achieved by simply issuing a | |||
new mapping, with an updated Map-Version number, where the specific | new mapping, with an updated Map-Version number where the specific | |||
RLOC to be shut down is withdrawn or announced as unreachable (R bit | RLOC to be shut down is withdrawn or announced as unreachable (via | |||
in the Map Record, see [I-D.ietf-lisp]), but without actually turning | the R-bit in the Map Record; see [RFC6830]), but without actually | |||
it off. | turning it off. | |||
Once no more traffic is received by the RLOC, it can be shut down | Once no more traffic is received by the RLOC, it can be shut down | |||
gracefully, because at least all sites actively using the mapping | gracefully, because all sites actively using the mapping have | |||
have updated it. | updated it. | |||
It should be pointed out that for frequent up/down changes such a | It should be pointed out that for frequent up/down changes such a | |||
mechanism should not be used since this can generate excessive load | mechanism should not be used, since this can generate excessive load | |||
on the Mapping System. | on the mapping system. | |||
8.4. Map-Version for lightweight LISP implementation | 8.4. Map-Version for Lightweight LISP Implementation | |||
The use of Map-Versioning can help in developing a lightweight | The use of Map-Versioning can help in developing a lightweight | |||
implementation of LISP. This comes with the price of not supporting | implementation of LISP. However, this comes with the price of not | |||
Loc-Status-Bit, which are useful in some contexts. | supporting the Locator-Status-Bit, which is useful in some contexts. | |||
In the current LISP specifications the set of RLOCs must always be | In the current LISP specifications, the set of RLOCs must always be | |||
maintained ordered and consistent with the content of the Loc Status | maintained ordered and consistent with the content of the | |||
Bits (see section 6.5 of [I-D.ietf-lisp]). With Map-Versioning such | Locator-Status-Bits (see Section 6.5 of [RFC6830]). With | |||
type of mechanisms can be avoided. When a new RLOC is added to a | Map-Versioning, such types of mechanisms can be avoided. When a new | |||
mapping, it is not necessary to "append" new locators to the existing | RLOC is added to a mapping, it is not necessary to "append" new | |||
ones as explained in Section 6.5 of [I-D.ietf-lisp]. A new mapping | Locators to the existing ones as explained in Section 6.5 of | |||
with a new Map-Version number will be issued, and since the old | [RFC6830]. A new mapping with a new Map-Version number will be | |||
locators are still valid the transition will be with no disruptions. | issued, and since the old Locators are still valid, the transition | |||
The same applies for the case a RLOC is withdrawn. There is no need | will occur with no disruptions. The same applies for the case where | |||
to maintain holes in the list of locators, as is the case when using | an RLOC is withdrawn. There is no need to maintain holes in the list | |||
Locator Status Bits, for sites that are not using the RLOC that has | of Locators, as is the case when using Locator-Status-Bits, for sites | |||
been withdrawn the transition will be with no disruptions. | that are not using the RLOC that has been withdrawn; in this case, | |||
the transition will occur with no disruptions. | ||||
All of these operations, as already stated, do not need to maintain | All of these operations, as already stated, do not need to maintain | |||
any consistency among Locator Status Bits, and the way RLOC are | any consistency among Locator-Status-Bits and in the way that the | |||
stored in the EID-to-RLOC Cache. | RLOCs are stored in the EID-to-RLOC Cache. | |||
Further, Map-Version can be used to substitute the "clock sweep" | Further, Map-Versioning can be used as a substitute for the "clock | |||
operation described in Section 6.5.1 of [I-D.ietf-lisp]. Indeed, | sweep" operation described in Section 6.6.1 of [RFC6830]. Indeed, | |||
every LISP site communicating to a specific LISP site that has | every LISP site communicating to a specific LISP site that has | |||
updated the mapping will be informed of the available new mapping in | updated the mapping will be informed of the available new mapping in | |||
a data-driven manner. | a data-driven manner. | |||
Note that what is proposed in the present section is just an example | Note that what is proposed in this section is just an example and | |||
and MUST NOT be considered as specifications for a lightweight LISP | MUST NOT be considered as specifications for a lightweight LISP | |||
implementation. In case the IETF decides to undertake such a work, | implementation. If the IETF decides to undertake such work, it will | |||
it will be documented elsewhere. | be documented elsewhere. | |||
9. Incremental deployment and implementation status | 9. Incremental Deployment and Implementation Status | |||
Map-Versioning can be incrementally deployed without any negative | Map-Versioning can be incrementally deployed without any negative | |||
impact on existing LISP elements (e.g., xTRs, Map-Servers, Proxy- | impact on existing LISP elements (e.g., xTRs, Map-Servers, | |||
ITRs, etc). Any LISP element that does not support Map-Versioning | Proxy-ITRs, etc.). Any LISP element that does not support | |||
can safely ignore them. Further, there is no need of any specific | Map-Versioning can safely ignore Map-Version numbers carried in the | |||
mechanism to discover if an xTR supports or not Map-Versioning. This | LISP header. Further, there is no need of any specific mechanism to | |||
discover whether or not an xTR supports Map-Versioning. This | ||||
information is already included in the Map Record. | information is already included in the Map Record. | |||
Map-Versioning is currently implemented in OpenLISP | Map-Versioning is currently implemented in OpenLISP [OPENLISP]. | |||
[I-D.iannone-openlisp-implementation]. | ||||
Note that the reference document for LISP implementation and | Note that the reference document for LISP implementations and | |||
interoperability tests remains [I-D.ietf-lisp]. | interoperability tests remains [RFC6830]. | |||
10. Security Considerations | 10. Security Considerations | |||
Map-Versioning does not introduce any security issue concerning both | Map-Versioning does not introduce any security issues concerning both | |||
the data-plane and the control-plane. On the contrary, as described | the data plane and the control plane. On the contrary, as described | |||
in the following, if Map-Versioning may be used also to update | below, if Map-Versioning may also be used to update mappings in the | |||
mappings in case of change in the reachability information (i.e., | case of change in the reachability information (i.e., instead of the | |||
instead of the Locator Status Bits) it is possible to reduce the | Locator-Status-Bits), it is possible to reduce the effects of some | |||
effects of some DoS or spoofing attacks that can happen in an | DoS or spoofing attacks that can happen in an untrusted environment. | |||
untrusted environment. | ||||
Robustness of the Map-Versioning mechanism leverages on a trusted | Robustness of the Map-Versioning mechanism leverages on a trusted | |||
Mapping Distribution System. A thorough security analysis of LISP is | Mapping Distribution System. A thorough security analysis of LISP is | |||
documented in [I-D.ietf-lisp-threats]. | documented in [LISP-THREATS]. | |||
10.1. Map-Versioning against traffic disruption | 10.1. Map-Versioning against Traffic Disruption | |||
An attacker can try to disrupt ongoing communications by creating | An attacker can try to disrupt ongoing communications by creating | |||
LISP encapsulated packets with wrong Locator Status Bits. If the xTR | LISP-encapsulated packets with wrong Locator-Status-Bits. If the xTR | |||
blindly trusts the Locator Status Bits it will change the | blindly trusts the Locator-Status-Bits, it will change the | |||
encapsulation accordingly, which can result in traffic disruption. | encapsulation accordingly, which can result in traffic disruption. | |||
This does not happen in the case of Map-Versioning. As described in | This does not happen in the case of Map-Versioning. As described in | |||
Section 5, upon a version number change the xTR first issues a Map- | Section 5, upon a version number change the xTR first issues a | |||
Request. The assumption is that the mapping distribution system is | Map-Request. The assumption is that the mapping distribution system | |||
sufficiently secure that Map-Request and Map-Reply messages and their | is sufficiently secure that Map-Request and Map-Reply messages and | |||
content can be trusted. Security issues concerning specific mapping | their content can be trusted. Security issues concerning specific | |||
distribution system are out of the scope of this document. In the | mapping distribution systems are out of the scope of this document. | |||
case of Map-Versioning the attacker should "guess" a valid version | In the case of Map-Versioning, the attacker should "guess" a valid | |||
number that triggers a Map-Request, as described in Section 5, | version number that triggers a Map-Request as described in Section 5; | |||
otherwise the packet is simply dropped. Nevertheless, guessing a | otherwise, the packet is simply dropped. Nevertheless, guessing a | |||
version number that generates a Map-Request is easy, hence it is | version number that generates a Map-Request is easy; hence, it is | |||
important to follow the rate limitations policies described in | important to follow the rate-limitation policies described in | |||
[I-D.ietf-lisp] in order to avoid DoS attacks. | [RFC6830] in order to avoid DoS attacks. | |||
Note that a similar level of security can be obtained with Loc Status | ||||
Bits, by simply making mandatory to verify any change through a Map- | ||||
Request. However, in this case Locator Status Bits loose their | ||||
meaning, because, it does not matter anymore which specific bits has | ||||
changed, the xTR will query the mapping system and trust the content | ||||
of the received Map-Reply. Furthermore there is no way to perform | ||||
filtering as in the Map-Versioning in order to drop packets that do | ||||
not carry a valid Map-Version number. In the case of Locator Status | ||||
Bits, any random change can trigger a Map-Request (unless rate | ||||
limitation is enabled which raise another type of attack discussed in | ||||
Section 10.2). | ||||
10.2. Map-Versioning against reachability information DoS | ||||
Attackers can try to trigger a large amount of Map-Request by simply | Note that a similar level of security can be obtained with | |||
forging packets with random Map-Version or random Locator Status | Locator-Status-Bits by simply making it mandatory to verify any | |||
Bits. In both cases the Map-Requests are rate limited as described | change through a Map-Request. However, in this case | |||
in [I-D.ietf-lisp]. However, differently from Locator Status Bit | Locator-Status-Bits lose their meaning, because it does not matter | |||
where there is no filtering possible, in the case of Map-Versioning | anymore which specific bits have changed; the xTR will query the | |||
is possible to filter not valid version numbers before triggering a | mapping system and trust the content of the received Map-Reply. | |||
Map-Request, thus helping in reducing the effects of DoS attacks. In | Furthermore, there is no way to perform filtering as in | |||
other words the use of Map-Versioning enables a fine control on when | Map-Versioning in order to drop packets that do not carry a valid | |||
to update a mapping or when to notify that a mapping has been | Map-Version number. In the case of Locator-Status-Bits, any random | |||
updated. | change can trigger a Map-Request (unless rate limitation is enabled, | |||
which raises another type of attack as discussed in Section 10.2). | ||||
It is clear, that Map-Versioning does not protect against DoS and | 10.2. Map-Versioning against Reachability Information DoS | |||
DDoS attacks, where an xTR looses processing power doing checks on | ||||
the LISP header of packets sent by attackers. This is independent | ||||
from Map-Versioning and is the same for Loc Status Bits. | ||||
11. IANA Considerations | Attackers can try to trigger a large amount of Map-Requests by simply | |||
forging packets with random Map-Versions or random | ||||
Locator-Status-Bits. In both cases, the Map-Requests are | ||||
rate-limited as described in [RFC6830]. However, in contrast to the | ||||
Locator-Status-Bit, where there is no filtering possible, in the case | ||||
of Map-Versioning it is possible to filter invalid version numbers | ||||
before triggering a Map-Request, thus helping to reduce the effects | ||||
of DoS attacks. In other words, the use of Map-Versioning enables a | ||||
fine control on when to update a mapping or when to notify someone | ||||
that a mapping has been updated. | ||||
This document has no actions for IANA. | It is clear that Map-Versioning does not protect against DoS and DDoS | |||
attacks, where an xTR loses processing power when doing checks on the | ||||
LISP header of packets sent by attackers. This is independent of | ||||
Map-Versioning and is the same for Locator-Status-Bits. | ||||
12. Open Issues and Considerations | 11. Open Issues and Considerations | |||
There are a number of implications of the use of Map-Versioning that | There are a number of implications of the use of Map-Versioning that | |||
are not yet completely explored. Among these are: | are not yet completely explored. Among these are: | |||
o Performance of the convergence time when an EID-to-RLOC mapping | o Performance of the convergence time when an EID-to-RLOC mapping | |||
changes, i.e., how much time is needed to update mappings in the | changes, i.e., how much time is needed to update mappings in the | |||
EID-to-RLOC Cache of the ITRs currently sending traffic to ETRs | EID-to-RLOC Cache of the ITRs currently sending traffic to ETRs | |||
for the EID whose mapping has been changed. | for the EID whose mapping has been changed. | |||
o Support to ETR synchronization. The implications that a temporary | o Support for ETR synchronization. The implications that a | |||
lack of synchronization may have on the traffic is yet to be fully | temporary lack of synchronization may have on the traffic are yet | |||
explored. Details on how to keep synchronization are presented in | to be fully explored. Details on how to maintain synchronization | |||
Section 6.6 of [I-D.ietf-lisp]. Section 12.1 hereafter discusses | are presented in Section 6.6 of [RFC6830]. Section 11.1 discusses | |||
the issue in further details with respect to the Map-Versioning | the issue in further detail with respect to the Map-Versioning | |||
mechanism. | mechanism. | |||
The authors expect that experimentation will help assess the | The authors expect that experimentation will help assess the | |||
performance and the limitations of the Map-Versioning mechanism. | performance and limitations of the Map-Versioning mechanism. Issues | |||
Issues and concerns about the deployment of LISP for Internet traffic | and concerns about the deployment of LISP for Internet traffic are | |||
are discussed in [I-D.ietf-lisp]. | discussed in [RFC6830]. | |||
12.1. Lack of Synchronization among ETRs | 11.1. Lack of Synchronization among ETRs | |||
Even without Map-Versioning, LISP ([I-D.ietf-lisp]) requires ETRs to | Even without Map-Versioning, LISP ([RFC6830]) requires ETRs to | |||
announce the same mapping for the same EID-Prefix to a requester. | announce the same mapping for the same EID-Prefix to a requester. | |||
The implications that a temporary lack of synchronization may have on | The implications that a temporary lack of synchronization may have on | |||
the traffic is yet to be fully explored. | the traffic are yet to be fully explored. | |||
Map-Versioning does not require additional synchronization mechanism | Map-Versioning does not require additional synchronization mechanisms | |||
compared to the normal functioning of LISP without Map-Versioning. | as compared to the normal functioning of LISP without Map-Versioning. | |||
Clearly all the ETRs have to reply with the same Map-Version number, | Clearly, all the ETRs have to reply with the same Map-Version number; | |||
otherwise there can be an inconsistency that creates additional | otherwise, there can be an inconsistency that creates additional | |||
control traffic, instabilities, traffic disruptions. It is the same | control traffic, instabilities, and traffic disruptions. It is the | |||
without Map-Versioning, with ETRs that have to reply with the same | same without Map-Versioning, with ETRs that have to reply with the | |||
mapping, otherwise the same problems can arise. | same mapping; otherwise, the same problems can arise. | |||
There are two ways Map-Versioning is helpful with respect to the | There are two ways Map-Versioning is helpful with respect to the | |||
synchronization problem. On the one hand, assigning version numbers | synchronization problem. On the one hand, assigning version numbers | |||
to mappings helps in debugging, since quick checks on the consistency | 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- | of the mappings on different ETRs can be done by looking at the | |||
Version number. On the other hand, Map-Versioning can be used to | Map-Version number. On the other hand, Map-Versioning can be used to | |||
control the traffic toward ETRs that announce the latest mapping. | control the traffic toward ETRs that announce the latest mapping. | |||
As an example, let's consider the topology of Figure 4 where ITR A.1 | As an example, let's consider the topology of Figure 4 where ITR A.1 | |||
of domain A is sending unidirectional traffic to the domain B, while | of Domain A is sending unidirectional traffic to Domain B, while A.2 | |||
A.2 of domain A exchanges bidirectional traffic with domain B. In | of Domain A exchanges bidirectional traffic with Domain B. In | |||
particular, ITR A.2 sends traffic to ETR B and ETR A.2 receives | particular, ITR A.2 sends traffic to ETR B, and ETR A.2 receives | |||
traffic from ITR B. | traffic from ITR B. | |||
+-----------------+ +-----------------+ | +-----------------+ +-----------------+ | |||
| Domain A | | Domain B | | | Domain A | | Domain B | | |||
| +---------+ | | | | +---------+ | | | |||
| | ITR A.1 |--- | | | | | ITR A.1 |--- | | | |||
| +---------+ \ +---------+ | | | +---------+ \ +---------+ | | |||
| | ------->| ETR B | | | | | ------->| ETR B | | | |||
| | ------->| | | | | | ------->| | | | |||
| +---------+ / | | | | | +---------+ / | | | | |||
| | ITR A.2 |--- -----| ITR B | | | | | ITR A.2 |--- -----| ITR B | | | |||
| | | / +---------+ | | | | | / +---------+ | | |||
| | ETR A.2 |<----- | | | | | ETR A.2 |<----- | | | |||
| +---------+ | | | | +---------+ | | | |||
| | | | | | | | | | |||
+-----------------+ +-----------------+ | +-----------------+ +-----------------+ | |||
Figure 4 | Figure 4: Example Topology | |||
Obviously in the case of Map-Versioning both ITR A.1 and ITR A.2 of | 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 | Domain A must use the same value; otherwise, the ETR of Domain B will | |||
start to send Map-Requests. | start to send Map-Requests. | |||
The same problem can, however, arise without Map-Versioning. For | The same problem can, however, arise without Map-Versioning, for | |||
instance, if the two ITRs of domain A send different Locator Status | instance, if the two ITRs of Domain A send different | |||
Bits. In this case either the traffic is disrupted, if the ETR B | Locator-Status-Bits. In this case, either the traffic is disrupted | |||
trusts the Locator Status Bits, or if ETR B does not trust the | if ETR B trusts the Locator-Status-Bits, or if ETR B does not trust | |||
Locator Status Bits it will start sending Map-Requests to confirm the | the Locator-Status-Bits it will start sending Map-Requests to confirm | |||
each change in the reachability. | each change in reachability. | |||
So far, LISP does not provide any specific synchronization mechanism, | So far, LISP does not provide any specific synchronization mechanism | |||
but assumes that synchronization is provided by configuring the | but assumes that synchronization is provided by configuring the | |||
different xTRs consistently (see Section 6.6 in [I-D.ietf-lisp]). | different xTRs consistently (see Section 6.6 in [RFC6830]). The same | |||
The same applies for Map-Versioning. If in the future any | applies for Map-Versioning. If in the future any synchronization | |||
synchronization mechanism is provided, Map-Versioning will take | mechanism is provided, Map-Versioning will take advantage of it | |||
advantage of it automatically since it is included in the Record | automatically, since it is included in the Record format, as | |||
format, as described in Section 7. | described in Section 7. | |||
13. Acknowledgements | 12. Acknowledgments | |||
The authors would like to thank Alia Atlas, Jesper Skriver, Pierre | The authors would like to thank Alia Atlas, Jesper Skriver, Pierre | |||
Francois, Noel Chiappa, Dino Farinacci for their comments and review. | Francois, Noel Chiappa, and Dino Farinacci for their comments and | |||
review. | ||||
This work has been partially supported by the INFSO-ICT-216372 | This work has been partially supported by the INFSO-ICT-216372 | |||
TRILOGY Project (www.trilogy-project.org). | TRILOGY Project (http://www.trilogy-project.org). | |||
14. References | ||||
14.1. Normative References | ||||
[I-D.ietf-lisp] | 13. References | |||
Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, | ||||
"Locator/ID Separation Protocol (LISP)", | ||||
draft-ietf-lisp-22 (work in progress), February 2012. | ||||
[I-D.ietf-lisp-interworking] | 13.1. Normative References | |||
Lewis, D., Meyer, D., Farinacci, D., and V. Fuller, | ||||
"Interworking LISP with IPv4 and IPv6", | ||||
draft-ietf-lisp-interworking-05 (work in progress), | ||||
February 2012. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
14.2. Informative References | [RFC6830] Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The | |||
Locator/ID Separation Protocol (LISP)", RFC 6830, | ||||
[I-D.iannone-openlisp-implementation] | January 2013. | |||
Iannone, L., Saucez, D., and O. Bonaventure, "OpenLISP | ||||
Implementation Report", | ||||
draft-iannone-openlisp-implementation-01 (work in | ||||
progress), July 2008. | ||||
[I-D.ietf-lisp-alt] | [RFC6832] Lewis, D., Meyer, D., Farinacci, D., and V. Fuller, | |||
Fuller, V., Farinacci, D., Meyer, D., and D. Lewis, "LISP | "Interworking between Locator/ID Separation Protocol | |||
Alternative Topology (LISP+ALT)", draft-ietf-lisp-alt-10 | (LISP) and Non-LISP Sites", RFC 6832, January 2013. | |||
(work in progress), December 2011. | ||||
[I-D.ietf-lisp-ms] | 13.2. Informative References | |||
Fuller, V. and D. Farinacci, "LISP Map Server Interface", | ||||
draft-ietf-lisp-ms-15 (work in progress), January 2012. | ||||
[I-D.ietf-lisp-threats] | [LISP-THREATS] | |||
Saucez, D., Iannone, L., and O. Bonaventure, "LISP Threats | Saucez, D., Iannone, L., and O. Bonaventure, "LISP Threats | |||
Analysis", draft-ietf-lisp-threats-00 (work in progress), | Analysis", Work in Progress, October 2012. | |||
July 2011. | ||||
Appendix A. Estimation of time before Map-Version wrap-around | [OPENLISP] Iannone, L., Saucez, D., and O. Bonaventure, "Implementing | |||
the Locator/ID Separation Protocol: Design and | ||||
experience", Computer Networks Vol. 55, Number 4, | ||||
Pages 948-958, March 2011. | ||||
The present section proposes an estimation of the wrap-around time | Appendix A. Estimation of Time before Map-Version Wrap-Around | |||
for the 12 bits size of the Map-Version number. | ||||
Using a granularity of seconds and assuming as worst-case that a new | This section proposes an estimation of the wrap-around time for the | |||
12-bit size of the Map-Version number. | ||||
Using a granularity of seconds and assuming as worst case that a new | ||||
version is issued each second, it takes slightly more than 1 hour | version is issued each second, it takes slightly more than 1 hour | |||
before the version wraps around. Note that the granularity of | before the version wraps around. Note that the granularity of | |||
seconds is in line with the rate limitation policy for Map-Request | seconds is in line with the rate-limitation policy for Map-Request | |||
messages, as proposed in the LISP main specifications | messages, as proposed in the LISP main specifications ([RFC6830]). | |||
([I-D.ietf-lisp]). | ||||
Alternatively a granularity of minutes can also be used, as for the | Alternatively, a granularity of minutes can also be used, as for the | |||
TTL of the Map-Reply ([I-D.ietf-lisp]). In this case the worst | TTL of the Map-Reply ([RFC6830]). In this case, the worst-case | |||
scenario is when a new version is issued every minute, leading to a | scenario is when a new version is issued every minute, leading to a | |||
much longer time before wrap-around. In particular, when using 12 | much longer time before wrap-around. In particular, when using | |||
bits, the wrap-around time is almost 3 days. | 12 bits, the wrap-around time is almost 3 days. | |||
For general information, hereafter there is a table with a rough | ||||
estimation of the time before wrap-around in the worst-case scenario, | ||||
considering different sizes (bits length) of the Map-Version number | ||||
and different time granularity. | ||||
Since even in the case of high mapping change rate (1 per second) the | ||||
wrap around time using 12 bits is far larger then any reasonable | ||||
Round-Trip-Time (RTT), there is no risk of race conditions. | ||||
+---------------+--------------------------------------------+ | ||||
|Version Number | Time before wrap around | | ||||
| Size (bits) +---------------------+----------------------+ | ||||
| |Granularity: Minutes | Granularity: Seconds | | ||||
| | (mapping changes | (mapping changes | | ||||
| | every 1 minute) | every 1 second) | | ||||
+-------------------------------------+----------------------+ | ||||
| 32 | 8171 Years | 136 Years | | ||||
| 30 | 2042 Years | 34 Years | | ||||
| 24 | 31 Years | 194 Days | | ||||
| 16 | 45 Days | 18 Hours | | ||||
| 15 | 22 Days | 9 Hours | | ||||
| 14 | 11 Days | 4 Hours | | ||||
| 13 | 5.6 Days | 2.2 Hours | | ||||
| 12 | 2.8 Days | 1.1 Hours | | ||||
+---------------+---------------------+----------------------+ | ||||
Figure 5: Estimation of time before wrap-around | ||||
Appendix B. Document Change Log | ||||
o Version 09 Posted March 2012. | ||||
* Text in Section 5.1 made more explicit in the case of smaller | ||||
(i.e., older) Destination Map-Version Number, as pointed out by | ||||
Ralph E. Droms. | ||||
o Version 08 Posted Ferbruary 2012. | ||||
* Clarifications added to Appendix A as requested by S. Bryant. | ||||
o Version 07 Posted January 2012. | ||||
* Moved Subsection 8.1 in Section 12 as requested by R. Bonica. | ||||
* Added explicit reference to the discussion about ETR | ||||
synchronization at the end of the Introduction, as requested by | ||||
R. Bonica. | ||||
* Added cross-reference to Section 6.6 in [I-D.ietf-lisp] as | ||||
requested by R. Bonica. | ||||
* Moved [I-D.ietf-lisp-interworking] as normative reference as | ||||
requested by R. Droms. | ||||
* Added long version of all acronyms in the Introduction as | ||||
requested by S. Bryant. | ||||
o Version 06 Posted October 2011. | ||||
* Added disclaimer in the Introduction about general issues | ||||
concerning LISP as requested by A. Farrel. | ||||
* Fixed sentence about legacy systems in the abstract as | ||||
requested by A. Farrel. | ||||
* Added Section 12 as requested by A. Farrel. | ||||
o Version 05 Posted October 2011. | ||||
* Added sentence in Section 3 on the use of Big Endian, as for | ||||
comment of P. Resnick. | ||||
* Extended the end of Section 4 in order to clarify that Map- | ||||
Version numbers are assigned to mappings by configuration and | ||||
not automatically generated by ETRs, as for comments of R. | ||||
Sparks | ||||
* Changed formal definition of Map-Version order (greater vs. | ||||
smaller) in Section 4 as for comments from R. Housley and R. | ||||
Sparks. | ||||
* Added disclaimer in Section 1 stating that in case of unforseen | ||||
conflict with the main spec the base document has precedence on | ||||
the present one, as for comment from Sthephen Farrell. | ||||
o Version 04 Posted September 2011. | ||||
* Added clarifications in Section 1, Section 4, Section 5.2, and | ||||
Section 5.1 to address Stephen Farrell's comments. | ||||
* Used the term LISP Site instead of ISP in Section 5 as | ||||
suggested by Stephen Farrell. | ||||
* Deleted "(usually contains the nonce)" from Section 6 because | ||||
confusing, as suggested by Stephen Farrell. | ||||
* Fixed several typos pointed out by Stephen Farrell. | ||||
o Version 03 Posted September 2011. | ||||
* Added reference in Section 7 toward the main lisp documents | ||||
specifying the section, as requested by Jari Arkko. | ||||
* Fixed all typos and editorial issues pointed out by Jari Arkko. | ||||
* Added clarification in Section 8.3 as requested by Jari Arkko. | ||||
* Extentend all acronyms in the abstract as requested by Jari | ||||
Arkko. | ||||
* Clarified silent drop polocy in Section 5.2 as requested by | ||||
both Richard Barnes and Jari Arkko. | ||||
* Fixed typos pointed out by Richard Barnes. | ||||
o Version 02 Posted July 2011. | ||||
* Added text in Section 5 about ETR synchronization, as suggested | ||||
by Alia Atlas. | ||||
* Modified text in Section 8.4 concerning lightweight LISP | ||||
implementation, as suggested by Alia Atlas. | ||||
* Deleted text concerning old versions of [I-D.ietf-lisp-ms] and | ||||
[I-D.ietf-lisp-alt] in Section 7, as pointed out by Alia Atlas. | ||||
* Fixed section 4.1 to be less restrictive, as suggested by | ||||
Jesper Skriver. | ||||
o Version 01 Posted March 2011. | ||||
* Changed the wording from "Map-Version number 0" to "Null Map- | ||||
Version. | ||||
* Clarification of the use of the Null Map-Version value as | ||||
Source Map-Version Number and Destination Map-Version Number. | ||||
* Extended the section describing Map-Versioning and LISP | ||||
Interworking co-existence. | ||||
* Reduce packet format description to avoid double definitions | ||||
with the main specs. | ||||
o Version 00 Posted September 2010. | ||||
* Added Section "Definitions of Terms". | For general information, Figure 5 below provides a rough estimation | |||
of the time before wrap-around in the worst-case scenario, | ||||
considering different sizes (length in bits) of the Map-Version | ||||
number and different time granularities. | ||||
* Editorial polishing of all sections. | Since even in the case of a high mapping change rate (1 per second) | |||
the wrap-around time using 12 bits is far larger than any reasonable | ||||
Round-Trip Time (RTT), there is no risk of race conditions. | ||||
* Added clarifications in section "Dealing with Map-Version | +---------------+--------------------------------------------+ | |||
numbers" for the case of the special Map-Version number 0. | |Version Number | Time before Wrap-Around | | |||
| Size (bits) +---------------------+----------------------+ | ||||
| |Granularity: Minutes | Granularity: Seconds | | ||||
| | (mapping changes | (mapping changes | | ||||
| | every 1 minute) | every 1 second) | | ||||
+-------------------------------------+----------------------+ | ||||
| 32 | 8171 years | 136 years | | ||||
| 30 | 2042 years | 34 years | | ||||
| 24 | 31 years | 194 days | | ||||
| 16 | 45 days | 18 hours | | ||||
| 15 | 22 days | 9 hours | | ||||
| 14 | 11 days | 4 hours | | ||||
| 13 | 5.6 days | 2.2 hours | | ||||
| 12 | 2.8 days | 1.1 hours | | ||||
+---------------+---------------------+----------------------+ | ||||
* Rename of draft-iannone-mapping-versioning-02.txt. | Figure 5: Estimation of Time before Wrap-Around | |||
Authors' Addresses | Authors' Addresses | |||
Luigi Iannone | Luigi Iannone | |||
Telekom Innovation Laboratories | Telecom ParisTech | |||
Ernst-Reuter Platz 7 | ||||
Berlin | ||||
Germany | ||||
Email: luigi@net.t-labs.tu-berlin.de | EMail: luigi.iannone@telecom-paristech.fr | |||
Damien Saucez | Damien Saucez | |||
INRIA Sophia Antipolis | INRIA Sophia Antipolis | |||
2004 route des Lucioles - BP 93 | 2004 route des Lucioles - BP 93 | |||
Sophia Antipolis | Sophia Antipolis | |||
France | France | |||
Email: damien.saucez@inria.fr | EMail: damien.saucez@inria.fr | |||
Olivier Bonaventure | Olivier Bonaventure | |||
Universite catholique de Louvain | Universite catholique de Louvain | |||
Place St. Barbe 2 | Place St. Barbe 2 | |||
Louvain-la-Neuve | Louvain-la-Neuve | |||
Belgium | Belgium | |||
Email: olivier.bonaventure@uclouvain.be | EMail: olivier.bonaventure@uclouvain.be | |||
End of changes. 156 change blocks. | ||||
687 lines changed or deleted | 543 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |