idnits 2.17.1 draft-farinacci-lisp-simple-nat-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 1 instance of lines with multicast IPv4 addresses in the document. If these are generic example addresses, they should be changed to use the 233.252.0.x range defined in RFC 5771 Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (May 18, 2020) is 1439 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Outdated reference: A later version (-19) exists of draft-ermagan-lisp-nat-traversal-16 == Outdated reference: A later version (-15) exists of draft-farinacci-lisp-name-encoding-09 == Outdated reference: A later version (-38) exists of draft-ietf-lisp-rfc6830bis-32 == Outdated reference: A later version (-31) exists of draft-ietf-lisp-rfc6833bis-27 ** Obsolete normative reference: RFC 1700 (Obsoleted by RFC 3232) Summary: 1 error (**), 0 flaws (~~), 6 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group D. Farinacci 3 Internet-Draft lispers.net 4 Intended status: Informational May 18, 2020 5 Expires: November 19, 2020 7 A Simple LISP NAT-Traversal Implementation 8 draft-farinacci-lisp-simple-nat-00 10 Abstract 12 This informational draft documents the lispers.net LISP NAT-Traversal 13 implementation. 15 Status of This Memo 17 This Internet-Draft is submitted in full conformance with the 18 provisions of BCP 78 and BCP 79. 20 Internet-Drafts are working documents of the Internet Engineering 21 Task Force (IETF). Note that other groups may also distribute 22 working documents as Internet-Drafts. The list of current Internet- 23 Drafts is at https://datatracker.ietf.org/drafts/current/. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference 28 material or to cite them other than as "work in progress." 30 This Internet-Draft will expire on November 19, 2020. 32 Copyright Notice 34 Copyright (c) 2020 IETF Trust and the persons identified as the 35 document authors. All rights reserved. 37 This document is subject to BCP 78 and the IETF Trust's Legal 38 Provisions Relating to IETF Documents 39 (https://trustee.ietf.org/license-info) in effect on the date of 40 publication of this document. Please review these documents 41 carefully, as they describe your rights and restrictions with respect 42 to this document. Code Components extracted from this document must 43 include Simplified BSD License text as described in Section 4.e of 44 the Trust Legal Provisions and are provided without warranty as 45 described in the Simplified BSD License. 47 Table of Contents 49 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 50 2. Definition of Terms . . . . . . . . . . . . . . . . . . . . . 4 51 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 6 52 4. Protocol Messages . . . . . . . . . . . . . . . . . . . . . . 7 53 5. xTR Map-Registering and Map-Server Proxy Map-Replying . . . . 10 54 6. Packet Flow from ITR-behind-NAT to RTR . . . . . . . . . . . 11 55 7. Packet Flow from Remote ITR to RTR . . . . . . . . . . . . . 11 56 8. Packet Flow from RTR to ETR-behind-NAT . . . . . . . . . . . 11 57 9. Design Observations . . . . . . . . . . . . . . . . . . . . . 13 58 10. Security Considerations . . . . . . . . . . . . . . . . . . . 14 59 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 60 12. Normative References . . . . . . . . . . . . . . . . . . . . 14 61 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 15 62 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15 64 1. Introduction 66 This draft documents the LISP messages and protocol procedures for a 67 simple mechanism for the NAT Traversal problem. A subset of message 68 definitions and protocol procedures are taken from 69 [I-D.ermagan-lisp-nat-traversal]. This design was first implemented 70 in the lispers.net LISP implementation dating back to January 2014. 72 The procedures described in this document are performed by LISP 73 compliant [I-D.ietf-lisp-rfc6830bis] [I-D.ietf-lisp-rfc6833bis] xTRs 74 that reside on the private side of one or more NAT devices that 75 connect them to the public side of the network. 77 The solution is applicable to the following xTR deployments: 79 o A physical ITR/ETR device that is directly connected or multiple 80 hops away from a NAT device. 82 o A LISP-MN acting as an ITR/ETR device on an cellular service where 83 a mobile provider is providing a NAT function. 85 o A logical ITR/ETR that resides in a VM that is behind a NAT device 86 managed by a hypervisor or cloud provider. 88 o A logical ITR/ETR that resides in a container where a NAT function 89 is provided by the container service. 91 o The above xTR deployments can operate through multiple levels of 92 NATs. 94 o The above deployments are also applicable to RTR and PxTR devices 95 that may reside behind NAT devices. 97 o The lispers.net lig [RFC6835] implementation uses the protocol 98 messaging defined in this draft so any system behind a NAT (either 99 running as a LISP xTR or not running LISP at all), can query the 100 mapping system to obtain mappings for network maintenance and 101 troubleshooting. 103 2. Definition of Terms 105 Routing Locator (RLOC): an RLOC address is a routable address on the 106 public Internet. It is used by LISP to locate where EIDs are 107 topologically located and appears in the outer header of LISP 108 encapsulated packets. With respect to this design, an RLOC can be 109 a private or public address. Private RLOCs can be registered to 110 the LISP mapping system so they can be used by other LISP xTRs 111 which reside in the same private network. Public RLOCs can be 112 registered to the LISP mapping system and are used by LISP xTRs 113 that are on the public side of the network. 115 Network Address Translator (NAT): is a router type device that 116 isolates a private network from a public network. The addresses 117 used on the private side of a network are known as private 118 addresses and are not routable on the public side of the network. 119 Therefore, a NAT device must translate private addresses to public 120 addresses. In this document, xTRs that reside on the private side 121 of the network use private RLOCs. These RLOCs must be translated 122 to public addresses so they can be registered in the LISP mapping 123 system. 125 Private RLOC: is the IP address of the interface of an xTR that 126 faces outbound towards a NAT device. This address is typically 127 translated to a public RLOC address before the packet appears on 128 the public side of the network. 130 Ephemeral Port: is the UDP source port in a LISP data-plane or 131 control-plane message. This address is typically translated by a 132 NAT device when the packet goes from the private side of the NAT 133 device to the public side of the network. 135 Global RLOC: is an address that has been translated by a NAT device. 136 The Private RLOC is translated to a Global RLOC and is registered 137 to the mapping system. This RLOC will be the source address in 138 LISP encapsulated packets on the public side of the network. 140 Translated Port: is the Ephemeral Port that is translated by a NAT 141 device. For an xTR outgoing packet, the source Ephemeral Port is 142 translated to a source Translated Port seen by the public side of 143 the network. For an incoming packet, the NAT device translates 144 the destination Translated Port to the destination Ephemeral Port. 146 Re-encapsulating Tunnel Router (RTR): is a LISP network element that 147 receives a LISP encapsulated packet, strips the outer header and 148 prepends a new outer header. With respect to this NAT-Traversal 149 design, an ITR (either behind a NAT device or on the public 150 network) encapsulates a packet to the RTR's RLOC address. The RTR 151 strips this ITR prepended header and then prepends a its own new 152 outer header and sends packet to the RLOC address of an ETR that 153 registered the EID that appears as the destination address from 154 the inner header. 156 NAT Info Cache: is a data structure managed by an RTR to track xTR 157 hostname, Global RLOC and Translated Port information. The RTR 158 uses this table so it knows what is the destination port to be 159 used for LISP encapsulated packets that much travel through a NAT 160 device. 162 Address Family Identifier (AFI): a term used to describe an address 163 encoding in a packet [AFI] and [RFC1700]. All LISP control 164 messages use AFI encoded addresses. The AFI value is 16-bits in 165 length and precedes all LISP encoded addresses. In this document, 166 the design calls for AFI encodings for IPv4 and IPv6 addresses as 167 well as Distinguished-Name [I-D.farinacci-lisp-name-encoding] and 168 LCAF [RFC8060] address formats. 170 3. Overview 172 The following sequence of actions describes at a high-level how the 173 lispers.net implementation performs NAT-Traversal and is the basis 174 for a simplified NAT-Traversal protocol design. 176 1. An xTR sends a Info-Request message to port 4342 to its 177 configured Map-Servers so it can get a list of RTRs to be used 178 for NAT-Traversal. 180 2. The Map-Servers return an Info-Reply message with the list of 181 RTRs. 183 3. The xTR then sends an Info-Request message to port 4341 to each 184 RTR. 186 4. Each RTR caches the translated RLOC address and port in a NAT 187 Info Cache. At this point, the NAT device has created state to 188 allow the RTR to send encapsulated packets from port 4341 to the 189 translated port. 191 5. The RTR returns an Info-Reply message so the xTR can learn its 192 translated Global RLOC address and Translated Port. 194 6. The xTR registers its EID-prefixes with an RLOC-set that 195 contains all its global RLOCs as well as the list of RTRs it has 196 learned from Info-Reply messages. 198 7. The Map-Servers are configured to proxy Map-Reply for these 199 registered EID-prefixes. 201 8. When a remote ITR sends a Map-Request for an EID that matches 202 one of these EID-prefixes, the Map-Server returns a partial 203 RLOC-set which contain only the list of RTRs. The remote ITR 204 encapsulates packets to the RTRs. 206 9. When one of the RTRs send a Map-Request for an EID that matches 207 one of these EID-prefixes, the Map-Server returns a partial 208 RLOC-set which contain only the global RLOCs so the RTR can 209 encapsulate packets that will make it through the NAT device to 210 the xTR. 212 10. The xTR behind a NAT device only stores default map-cache 213 entries with an RLOC-set that contain the list of RTRs the Map- 214 Server supplied it with. The xTR load-splits traffic across the 215 RTRs based on the 5-tuple hash algorithm detailed in 216 [I-D.ietf-lisp-rfc6830bis]. 218 4. Protocol Messages 220 The lispers.net implementation uses the Info-Request and Info-Reply 221 messages from [I-D.ermagan-lisp-nat-traversal] as well as the NAT- 222 Traversal LISP Canonical Address Format (LCAF) from [RFC8060]. 224 0 1 2 3 225 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 226 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 227 |Type=7 |0| Reserved | 228 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 229 | Nonce . . . | 230 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 231 | . . . Nonce | 232 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 233 | Key ID | Authentication Data Length | 234 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 235 ~ Authentication Data ~ 236 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 237 | TTL | 238 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 239 | Reserved | EID mask-len | EID-prefix-AFI | 240 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 241 | EID-prefix | 242 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 243 | AFI = 0 | | 244 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 246 LISP Info-Request Message Format 248 The lispers.net implementation will send an Info-Request message to 249 each configured Map-Server. The message is sent to UDP destination 250 port 4342 which is the control-plane port for LISP 251 [I-D.ietf-lisp-rfc6833bis] from a UDP ephemeral source port. The 252 source address is its Private RLOC. When the xTR is multi-homed to 253 more than one NAT device, it sends the Info-Request on all interfaces 254 facing NAT devices. 256 A randomized 64-bit nonce is selected for the message and no 257 authentication is used. The EID-prefix AFI is 17 according to the 258 encoding format in [I-D.farinacci-lisp-name-encoding] and the EID- 259 prefix is the hostname of the xTR encoded as a string null 260 terminated. 262 An Info-Request is sent out each outgoing interface, with the address 263 of that interface as the Private RLOC, leading to a NAT device. The 264 port pair in the UDP message is the same for each outgoing interface. 266 When the xTR receives an Info-Reply message from the Map-Server in 267 response to this control-plane Info-Request, it caches a list of RTRs 268 from the Info-Reply. If the list of RTRs are different from each 269 Map-Server, the lists are merged. The xTR stores the merged list as 270 the RLOC-set for 4 default map-cache entries. The map-cache entries 271 have the following EID-prefixes: 273 IPv4 unicast: 0.0.0.0/0 274 IPv4 multicast: (0.0.0.0/0, 224.0.0.0/4) 275 IPv6 unicast: 0::/0 276 IPv6 multicast: (0::/0, ff00::/8) 278 Now that the xTR has a list of RTRs, it sends a data-plane Info- 279 Request to each RTR to UDP destination port 4341 from a UDP ephemeral 280 source port. The data-plane Info-Request is sent out each interface 281 just like the control-plane Info-Request was sent for the multi-homed 282 NAT device case. 284 When Map-Servers and RTRs return an Info-Reply message to xTRs behind 285 NAT devices, the format of the Info-Reply message is the following: 287 0 1 2 3 288 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 289 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 290 |Type=7 |1| Reserved | 291 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 292 | Nonce . . . | 293 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 294 | . . . Nonce | 295 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 296 | Key ID | Authentication Data Length | 297 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 298 ~ Authentication Data ~ 299 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 300 | TTL | 301 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 302 | Reserved | EID mask-len | EID-prefix-AFI | 303 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 304 | EID-prefix | 305 +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 306 | | AFI = 16387 | Rsvd1 | Flags | 307 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 308 | | Type = 7 | Rsvd2 | 4 + n | 309 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 310 N | MS UDP Port Number | ETR UDP Port Number | 311 A +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 312 T | AFI = x | Global ETR RLOC Address ... | 313 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 314 L | AFI = x | MS RLOC Address ... | 315 C +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 316 A | AFI = x | Private ETR RLOC Address ... | 317 F +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 318 | | AFI = x | RTR RLOC Address 1 ... | 319 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 320 | | AFI = x | RTR RLOC Address n ... | 321 +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 323 LISP Info-Reply Message Format 325 The information returned is the same information that was sent in the 326 Info-Request message except the Info-Reply bit is set (the bit next 327 to Type=7) and the NAT Traversal LCAF encoding is appended. 329 When a Map-Server returns the Info-Reply, the MS UDP Port Number and 330 ETR UDP Port Number is set to 0. All Address fields are empty by 331 using AFI equal to 0. Except for the RTR RLOC address fields which 332 the Map-Server is configured to return to xTRs behind NAT devices. 334 When an RTR returns the Info-Reply, the MS UDP Port Number is set to 335 0 and the ETR UDP Port Number is set to the UDP source port the RTR 336 received from the Info-Request message. The Global ETR RLOC Address 337 is set to the source address received by the RTR in the Info-Request 338 message. All other address fields are empty by using AFI equal to 0. 340 5. xTR Map-Registering and Map-Server Proxy Map-Replying 342 EID-prefixes registered by an xTR behind a NAT include all the global 343 RLOCs and RTR RLOCs it learns. The xTR can use the unicast priority 344 to control ingress packet flow as described in 345 [I-D.ietf-lisp-rfc6833bis]. The RTR RLOCs must be registered with a 346 unicast priority of 254 so the Map-Server can identify xTR global 347 RLOCs from RTR RLOCs when proxy Map-Replying. 349 The Global RLOCs are encoded in a RLOC-record using the AFI-List LCAF 350 encoding [RFC8060]. There are two AFI encoded addresses in the list, 351 one being AFI=1 which encodes the IPv4 translated NAT address and 352 other being the Distinguished-Name AFI=17 353 [I-D.farinacci-lisp-name-encoding] which encodes the hostname of the 354 xTR. When the xTR is multi-homed, the hostname is appended by a 355 unique interface name. For example, for an xTR behind a NAT that has 356 two interfaces facing the same or two different NAT devices, the 357 Distinguished-Name for each RLOC-record could be "dino-xtr-eth0" and 358 "dino-xtr-eth1" for an xTR configured to be named "dino-xtr". 360 Encoding a Distinguished-Name in an RLOC-record is important so an 361 RTR can use the Global RLOC registered to the mapping system with the 362 translated port stored in its NAT Info Cache. See Section 8 for more 363 details. 365 When a remote ITR sends a Map-Request for a unicast or multicast EID 366 registered by a xTR behind a NAT, the Map-Server returns a partial 367 RLOC-set that contains all the RTRs (RLOC-records with unicast 368 priority 254) in the proxied Map-Reply message. 370 When a RTR sends a Map-Request for a unicast or multicast EID 371 registered by a xTR behind a NAT, the Map-Server returns a partial 372 RLOC-set that contains all the Global RLOCs of the xTR behind the NAT 373 in the proxied Map-Reply message. 375 6. Packet Flow from ITR-behind-NAT to RTR 377 All packets received by the ITR from the private side of the NAT will 378 use one of the 4 default map-cache entries. There is a unicast and 379 multicast IPv4 default EID-prefix and a unicast and multicast IPv6 380 default EID-prefix. The RLOC-set is the same for all 4 entries. The 381 RLOC-set contains the globally reachable RLOCs of the RTRs. 5-tuple 382 hashing is used to load-split traffic across the RTRs. RLOC-Probing 383 is used to avoid encapsulating to unreachable RTRs. 385 7. Packet Flow from Remote ITR to RTR 387 A remote ITR will get a list of RTRs from the mapping system in a 388 proxy Map-Reply when it sends a Map-Request for a unicast or 389 multicast EID that is registered by an xTR behind a NAT device. The 390 remote ITR will load split traffic across the RTRs from the RLOC-set. 391 Those RTRs can get packets through the NAT devices destined for the 392 xTR behind the NAT since an Info-Request/Info-Reply exchange had 393 already happened between the xTR behind the NAT and the list of RTRs. 395 There can be a reachability situation where an RTR cannot reach the 396 xTR behind a NAT but a remote ITR may 5-tuple hash to this RTR. 397 Which means packets can travel from the remote ITR to the RTR but 398 then get dropped on the path from the RTR to the xTR behind the NAT. 399 To avoid this situation, the xTR behind the NAT RLOC-probes RTRs and 400 when they become unreachable, they are not included in the xTR 401 registrations. 403 8. Packet Flow from RTR to ETR-behind-NAT 405 The RTR will receive a list of Global RLOCs in a proxy Map-Reply from 406 the mapping system for the xTR behind the NAT. The RTR 5-tuple load- 407 splits packets across the RLOC-set of Global RLOCs that can travel 408 through one or more NAT devices along the path to the ETR behind the 409 NAT device. 411 When the RTR selects a Global RLOC to encapsulate to it must select 412 the correct Translated Port for the UDP destination port in the 413 encapsulation header. The RTR needs to use the same Translated 414 Address and Translated Port pair a NAT device used to translate the 415 Info-Request message otherwise the encapsulated packet will be 416 dropped. The NAT Info Cache contains an entry for every hostname 417 (and optionally appended interface name), translated address and port 418 cached when processing Info-Request messages. The RTR obtains the 419 correct Translated Port from the NAT Info Cache by using the Global 420 RLOC and RLOC-record hostname from the registered RLOC-set. 422 The RTR can test reachability for xTRs behind NATs by encapsulating 423 RLOC-Probe requests in data packets where the UDP source port is set 424 to 4341 and the UDP destination port is set to the Translated Port. 425 The outer header destination address is the Global RLOC for the xTR. 427 9. Design Observations 429 The following benefits and observations can be attributed to this 430 design: 432 o An ITR behind a NAT virtually runs no control-plane and a very 433 simple data-plane. All it does is RLOC-probe the RTRs in the 434 common RLOC-set for each default map-cache entry. And maintains a 435 very small map-cache of 4 entries per instance-ID it supports. 437 o An xTR behind a NAT can tell if another xTR is behind the same set 438 of NAT devices and use Private RLOCs to reach each other on a 439 short-cut path. It does this by comparing the Global RLOC 440 returned from RTRs in Info-Reply messages. 442 o An xTR behind a NAT is free to send a Map-Request to the mapping 443 system for any EID to test to see if there is a direct path to the 444 LISP site versus potentially using a sub-optimal path through an 445 RTR. This happens when xTRs exist that are not behind NAT devices 446 where their RLOCs are global RLOCs. 448 o By sending Info-Requests to Map-Servers, an xTR behind a NAT can 449 tell if they are reachable and if those Map-Servers also act as 450 Map-Resolvers, the xTR behind the NAT can avoid sending Map- 451 Requests to unreachable Map-Resolvers. 453 o Enhanced data-plane security can be used via LISP-Crypto 454 mechanisms detailed in [RFC8061] using this NAT-Traversal design 455 so both unicast and multicast traffic are encrypted. 457 o This design allows for the minimum amount of NAT device state 458 since only RTRs are encapsulating to ETRs behind NAT devices. 459 Therefore, the number of ITRs sending packets to EIDs behind NAT 460 devices is aggregated out for scale. Scale is also achieved when 461 xTRs behind NATs roam and RLOC-set changes need to update only RTR 462 map-caches. 464 o The protocol procedures in this document can be used when a LISP 465 site has multiple xTRs each connected via separate NAT devices to 466 the public network. Each xTR registers their Global RLOCs and 467 RTRs with merge semantics to the mapping system so remote ITRs can 468 load-split traffic across a merged RTR set as well as RTRs across 469 each xTR behind different NAT devices. 471 10. Security Considerations 473 There are no security considerations at this time. 475 However, the lispers.net implementation can be enhanced easily to 476 allow the same authentication xTRs use with Map-Register messages for 477 Info-Request messages when they send to Map-Servers. 479 For authentication of Info-Requests to RTRs, more work is required to 480 maintain key management associations between xTR behind NATs and 481 RTRs. It is not trivial to make this happen with a dynamic list of 482 RTRs that can change as the xTR behind a NAT roams to other parts of 483 the network and desire shorter paths to RTRs. 485 11. IANA Considerations 487 The code-point values in this specification are already allocated in 488 [AFI] or [RFC8060]. 490 12. Normative References 492 [AFI] "Address Family Identifier (AFIs)", ADDRESS FAMILY 493 NUMBERS http://www.iana.org/numbers.html, Febuary 2007. 495 [I-D.ermagan-lisp-nat-traversal] 496 Ermagan, V., Farinacci, D., Lewis, D., Maino, F., 497 Portoles-Comeras, M., Skriver, J., and C. White, "NAT 498 traversal for LISP", draft-ermagan-lisp-nat-traversal-16 499 (work in progress), June 2019. 501 [I-D.farinacci-lisp-name-encoding] 502 Farinacci, D., "LISP Distinguished Name Encoding", draft- 503 farinacci-lisp-name-encoding-09 (work in progress), March 504 2020. 506 [I-D.ietf-lisp-rfc6830bis] 507 Farinacci, D., Fuller, V., Meyer, D., Lewis, D., and A. 508 Cabellos-Aparicio, "The Locator/ID Separation Protocol 509 (LISP)", draft-ietf-lisp-rfc6830bis-32 (work in progress), 510 March 2020. 512 [I-D.ietf-lisp-rfc6833bis] 513 Farinacci, D., Maino, F., Fuller, V., and A. Cabellos- 514 Aparicio, "Locator/ID Separation Protocol (LISP) Control- 515 Plane", draft-ietf-lisp-rfc6833bis-27 (work in progress), 516 January 2020. 518 [RFC1700] Reynolds, J. and J. Postel, "Assigned Numbers", RFC 1700, 519 DOI 10.17487/RFC1700, October 1994, 520 . 522 [RFC6835] Farinacci, D. and D. Meyer, "The Locator/ID Separation 523 Protocol Internet Groper (LIG)", RFC 6835, 524 DOI 10.17487/RFC6835, January 2013, 525 . 527 [RFC8060] Farinacci, D., Meyer, D., and J. Snijders, "LISP Canonical 528 Address Format (LCAF)", RFC 8060, DOI 10.17487/RFC8060, 529 February 2017, . 531 [RFC8061] Farinacci, D. and B. Weis, "Locator/ID Separation Protocol 532 (LISP) Data-Plane Confidentiality", RFC 8061, 533 DOI 10.17487/RFC8061, February 2017, 534 . 536 Appendix A. Acknowledgments 538 The author would like to thank the authors of the LISP NAT-Traversal 539 specification [I-D.ermagan-lisp-nat-traversal] for their initial 540 ideas and prototyping to allow a simpler form of NAT-Traversal to be 541 designed. 543 Author's Address 545 Dino Farinacci 546 lispers.net 547 San Jose, CA 548 USA 550 Email: farinacci@gmail.com