The EID-to-RLOC Map-Version number consists of an unsigned 12-bit integer. The version number is assigned on a per-mapping basis, meaning that different mappings have different version numbers, which are updated independently. An update in the version number (i.e., a newer version)
MUST consist of an increment of the older version number (the only exception is for the Null Map-Version as explained in at the end of
Section 6.1).
The space of version numbers has a circular order where half of the version numbers are considered greater (i.e., newer) than the current Map-Version number and the other half of the version numbers are considered smaller (i.e., older) than the current Map-Version number. This is basically a serial number on which the arithmetic described in [
RFC 1982] applies. The ordering enables different reactions to "older" and "newer" Map-Version numbers, whereby "older" numbers are discarded and "newer" numbers trigger Map-Requests (see
Section 7 for further details). In a formal way, assuming that we have two version numbers (V1 and V2), both different from the special value Null Map-Version (see
Section 6.1), and that the numbers are expressed on 12 bits, the following steps
MUST be performed (in the same order shown below) to strictly define their order:
-
V1 = V2 : The Map-Version numbers are the same.
-
V2 > V1 : if and only if
V2 > V1 AND (V2 - V1) <= 2(12-1)
OR
V1 > V2 AND (V1 - V2) > 2(12-1)
-
V1 > V2 : otherwise.
Using 12 bits and assuming a Map-Version value of 69, Map-Version numbers in the range [70; 69 + 2048] are greater than 69, while Map-Version numbers in the range [69 + 2049; (69 + 4095) mod 4096] are smaller than 69.
The initial Map-Version number of a new EID-to-RLOC mapping
SHOULD be assigned randomly, but it
MUST NOT be set to the Null Map-Version value (0x000), because the Null Map-Version number has a special meaning (see
Section 6.1). Optionally, the initial Map-version number may be configured.
Upon reboot, an ETR will use mappings configured in its EID-to-RLOC Database. If those mappings have a Map-Version number, it will be used according to the mechanisms described in this document. ETRs
MUST NOT automatically generate and assign Map-Version numbers to mappings in the EID-to-RLOC Database.
The value 0x000 (zero) is a special Map-Version number indicating that there is actually no version number associated to the EID-to-RLOC mapping. Such a value is used for special purposes and is named the Null Map-Version number.
Map Records that have a Null Map-Version number indicate that there is no Map-Version number associated with the mapping. This means that LISP-encapsulated packets destined to the EID-Prefix referred to by the Map Record
MUST NOT contain any Map-Version numbers (V-bit set to 0). If an ETR receives LISP-encapsulated packets with the V-bit set, when the original mapping in the EID-to-RLOC Database has the version number set to the Null Map-Version value, then those packets
MUST be silently dropped.
The Null Map-Version may appear in the LISP-specific header as a Source Map-Version number (
Section 7.2). When the Source Map-Version number is set to the Null Map-Version value, it means that no map version information is conveyed for the source site. This means that if a mapping exists for the source EID in the EID-to-RLOC Map-Cache, then the ETR
MUST NOT compare the received Null Map-Version with the content of the EID-to-RLOC Map-Cache (
Section 7.2).
The fact that the 0 value has a special meaning for the Map-Version number implies that, when updating a Map-Version number because of a change in the mapping, if the next value is 0, then the Map-Version number
MUST be incremented by 2 (i.e., set to 1 (0x001), which is the next valid value).