idnits 2.17.1 draft-farinacci-lisp-simple-nat-01.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 (November 14, 2020) is 1256 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-18 == Outdated reference: A later version (-15) exists of draft-farinacci-lisp-name-encoding-10 == Outdated reference: A later version (-38) exists of draft-ietf-lisp-rfc6830bis-35 == Outdated reference: A later version (-31) exists of draft-ietf-lisp-rfc6833bis-29 ** 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 November 14, 2020 5 Expires: May 18, 2021 7 A Simple LISP NAT-Traversal Implementation 8 draft-farinacci-lisp-simple-nat-01 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 May 18, 2021. 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 Appendix B. Document Change Log . . . . . . . . . . . . . . . . 15 63 B.1. Changes to draft-farinacci-lisp-simple-nat-01 . . . . . . 15 64 B.2. Changes to draft-farinacci-lisp-simple-nat-00 . . . . . . 15 65 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15 67 1. Introduction 69 This draft documents the LISP messages and protocol procedures for a 70 simple mechanism for the NAT Traversal problem. A subset of message 71 definitions and protocol procedures are taken from 72 [I-D.ermagan-lisp-nat-traversal]. This design was first implemented 73 in the lispers.net LISP implementation dating back to January 2014. 75 The procedures described in this document are performed by LISP 76 compliant [I-D.ietf-lisp-rfc6830bis] [I-D.ietf-lisp-rfc6833bis] xTRs 77 that reside on the private side of one or more NAT devices that 78 connect them to the public side of the network. 80 The solution is applicable to the following xTR deployments: 82 o A physical ITR/ETR device that is directly connected or multiple 83 hops away from a NAT device. 85 o A LISP-MN acting as an ITR/ETR device on an cellular service where 86 a mobile provider is providing a NAT function. 88 o A logical ITR/ETR that resides in a VM that is behind a NAT device 89 managed by a hypervisor or cloud provider. 91 o A logical ITR/ETR that resides in a container where a NAT function 92 is provided by the container service. 94 o The above xTR deployments can operate through multiple levels of 95 NATs. 97 o The above deployments are also applicable to RTR and PxTR devices 98 that may reside behind NAT devices. 100 o The lispers.net lig [RFC6835] implementation uses the protocol 101 messaging defined in this draft so any system behind a NAT (either 102 running as a LISP xTR or not running LISP at all), can query the 103 mapping system to obtain mappings for network maintenance and 104 troubleshooting. 106 2. Definition of Terms 108 Routing Locator (RLOC): an RLOC address is a routable address on the 109 public Internet. It is used by LISP to locate where EIDs are 110 topologically located and appears in the outer header of LISP 111 encapsulated packets. With respect to this design, an RLOC can be 112 a private or public address. Private RLOCs can be registered to 113 the LISP mapping system so they can be used by other LISP xTRs 114 which reside in the same private network. Public RLOCs can be 115 registered to the LISP mapping system and are used by LISP xTRs 116 that are on the public side of the network. 118 Network Address Translator (NAT): is a router type device that 119 isolates a private network from a public network. The addresses 120 used on the private side of a network are known as private 121 addresses and are not routable on the public side of the network. 122 Therefore, a NAT device must translate private addresses to public 123 addresses. In this document, xTRs that reside on the private side 124 of the network use private RLOCs. These RLOCs must be translated 125 to public addresses so they can be registered in the LISP mapping 126 system. 128 Private RLOC: is the IP address of the interface of an xTR that 129 faces outbound towards a NAT device. This address is typically 130 translated to a public RLOC address before the packet appears on 131 the public side of the network. 133 Ephemeral Port: is the UDP source port in a LISP data-plane or 134 control-plane message. This address is typically translated by a 135 NAT device when the packet goes from the private side of the NAT 136 device to the public side of the network. 138 Global RLOC: is an address that has been translated by a NAT device. 139 The Private RLOC is translated to a Global RLOC and is registered 140 to the mapping system. This RLOC will be the source address in 141 LISP encapsulated packets on the public side of the network. 143 Translated Port: is the Ephemeral Port that is translated by a NAT 144 device. For an xTR outgoing packet, the source Ephemeral Port is 145 translated to a source Translated Port seen by the public side of 146 the network. For an incoming packet, the NAT device translates 147 the destination Translated Port to the destination Ephemeral Port. 149 Re-encapsulating Tunnel Router (RTR): is a LISP network element that 150 receives a LISP encapsulated packet, strips the outer header and 151 prepends a new outer header. With respect to this NAT-Traversal 152 design, an ITR (either behind a NAT device or on the public 153 network) encapsulates a packet to the RTR's RLOC address. The RTR 154 strips this ITR prepended header and then prepends a its own new 155 outer header and sends packet to the RLOC address of an ETR that 156 registered the EID that appears as the destination address from 157 the inner header. 159 NAT Info Cache: is a data structure managed by an RTR to track xTR 160 hostname, Global RLOC and Translated Port information. The RTR 161 uses this table so it knows what is the destination port to be 162 used for LISP encapsulated packets that much travel through a NAT 163 device. 165 Address Family Identifier (AFI): a term used to describe an address 166 encoding in a packet [AFI] and [RFC1700]. All LISP control 167 messages use AFI encoded addresses. The AFI value is 16-bits in 168 length and precedes all LISP encoded addresses. In this document, 169 the design calls for AFI encodings for IPv4 and IPv6 addresses as 170 well as Distinguished-Name [I-D.farinacci-lisp-name-encoding] and 171 LCAF [RFC8060] address formats. 173 3. Overview 175 The following sequence of actions describes at a high-level how the 176 lispers.net implementation performs NAT-Traversal and is the basis 177 for a simplified NAT-Traversal protocol design. 179 1. An xTR sends a Info-Request message to port 4342 to its 180 configured Map-Servers so it can get a list of RTRs to be used 181 for NAT-Traversal. 183 2. The Map-Servers return an Info-Reply message with the list of 184 RTRs. 186 3. The xTR then sends an Info-Request message to port 4341 to each 187 RTR. 189 4. Each RTR caches the translated RLOC address and port in a NAT 190 Info Cache. At this point, the NAT device has created state to 191 allow the RTR to send encapsulated packets from port 4341 to the 192 translated port. 194 5. The RTR returns an Info-Reply message so the xTR can learn its 195 translated Global RLOC address and Translated Port. 197 6. The xTR registers its EID-prefixes with an RLOC-set that 198 contains all its global RLOCs as well as the list of RTRs it has 199 learned from Info-Reply messages. 201 7. The Map-Servers are configured to proxy Map-Reply for these 202 registered EID-prefixes. 204 8. When a remote ITR sends a Map-Request for an EID that matches 205 one of these EID-prefixes, the Map-Server returns a partial 206 RLOC-set which contain only the list of RTRs. The remote ITR 207 encapsulates packets to the RTRs. 209 9. When one of the RTRs send a Map-Request for an EID that matches 210 one of these EID-prefixes, the Map-Server returns a partial 211 RLOC-set which contain only the global RLOCs so the RTR can 212 encapsulate packets that will make it through the NAT device to 213 the xTR. 215 10. The xTR behind a NAT device only stores default map-cache 216 entries with an RLOC-set that contain the list of RTRs the Map- 217 Server supplied it with. The xTR load-splits traffic across the 218 RTRs based on the 5-tuple hash algorithm detailed in 219 [I-D.ietf-lisp-rfc6830bis]. 221 4. Protocol Messages 223 The lispers.net implementation uses the Info-Request and Info-Reply 224 messages from [I-D.ermagan-lisp-nat-traversal] as well as the NAT- 225 Traversal LISP Canonical Address Format (LCAF) from [RFC8060]. 227 0 1 2 3 228 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 229 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 230 |Type=7 |0| Reserved | 231 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 232 | Nonce . . . | 233 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 234 | . . . Nonce | 235 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 236 | Key ID | Authentication Data Length | 237 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 238 ~ Authentication Data ~ 239 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 240 | TTL | 241 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 242 | Reserved | EID mask-len | EID-prefix-AFI | 243 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 244 | EID-prefix | 245 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 246 | AFI = 0 | | 247 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 249 LISP Info-Request Message Format 251 The lispers.net implementation will send an Info-Request message to 252 each configured Map-Server. The message is sent to UDP destination 253 port 4342 which is the control-plane port for LISP 254 [I-D.ietf-lisp-rfc6833bis] from a UDP ephemeral source port. The 255 source address is its Private RLOC. When the xTR is multi-homed to 256 more than one NAT device, it sends the Info-Request on all interfaces 257 facing NAT devices. 259 A randomized 64-bit nonce is selected for the message and no 260 authentication is used. The EID-prefix AFI is 17 according to the 261 encoding format in [I-D.farinacci-lisp-name-encoding] and the EID- 262 prefix is the hostname of the xTR encoded as a string null 263 terminated. 265 An Info-Request is sent out each outgoing interface, with the address 266 of that interface as the Private RLOC, leading to a NAT device. The 267 port pair in the UDP message is the same for each outgoing interface. 269 When the xTR receives an Info-Reply message from the Map-Server in 270 response to this control-plane Info-Request, it caches a list of RTRs 271 from the Info-Reply. If the list of RTRs are different from each 272 Map-Server, the lists are merged. The xTR stores the merged list as 273 the RLOC-set for 4 default map-cache entries. The map-cache entries 274 have the following EID-prefixes: 276 IPv4 unicast: 0.0.0.0/0 277 IPv4 multicast: (0.0.0.0/0, 224.0.0.0/4) 278 IPv6 unicast: 0::/0 279 IPv6 multicast: (0::/0, ff00::/8) 281 Now that the xTR has a list of RTRs, it sends a data-plane Info- 282 Request to each RTR to UDP destination port 4341 from a UDP ephemeral 283 source port. The data-plane Info-Request is sent out each interface 284 just like the control-plane Info-Request was sent for the multi-homed 285 NAT device case. 287 When Map-Servers and RTRs return an Info-Reply message to xTRs behind 288 NAT devices, the format of the Info-Reply message is the following: 290 0 1 2 3 291 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 292 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 293 |Type=7 |1| Reserved | 294 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 295 | Nonce . . . | 296 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 297 | . . . Nonce | 298 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 299 | Key ID | Authentication Data Length | 300 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 301 ~ Authentication Data ~ 302 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 303 | TTL | 304 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 305 | Reserved | EID mask-len | EID-prefix-AFI | 306 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 307 | EID-prefix | 308 +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 309 | | AFI = 16387 | Rsvd1 | Flags | 310 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 311 | | Type = 7 | Rsvd2 | 4 + n | 312 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 313 N | MS UDP Port Number | ETR UDP Port Number | 314 A +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 315 T | AFI = x | Global ETR RLOC Address ... | 316 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 317 L | AFI = x | MS RLOC Address ... | 318 C +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 319 A | AFI = x | Private ETR RLOC Address ... | 320 F +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 321 | | AFI = x | RTR RLOC Address 1 ... | 322 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 323 | | AFI = x | RTR RLOC Address n ... | 324 +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 326 LISP Info-Reply Message Format 328 The information returned is the same information that was sent in the 329 Info-Request message except the Info-Reply bit is set (the bit next 330 to Type=7) and the NAT Traversal LCAF encoding is appended. 332 When a Map-Server returns the Info-Reply, the MS UDP Port Number and 333 ETR UDP Port Number is set to 0. All Address fields are empty by 334 using AFI equal to 0. Except for the RTR RLOC address fields which 335 the Map-Server is configured to return to xTRs behind NAT devices. 337 When an RTR returns the Info-Reply, the MS UDP Port Number is set to 338 0 and the ETR UDP Port Number is set to the UDP source port the RTR 339 received from the Info-Request message. The Global ETR RLOC Address 340 is set to the source address received by the RTR in the Info-Request 341 message. All other address fields are empty by using AFI equal to 0. 343 5. xTR Map-Registering and Map-Server Proxy Map-Replying 345 EID-prefixes registered by an xTR behind a NAT include all the global 346 RLOCs and RTR RLOCs it learns. The xTR can use the unicast priority 347 to control ingress packet flow as described in 348 [I-D.ietf-lisp-rfc6833bis]. The RTR RLOCs must be registered with a 349 unicast priority of 254 so the Map-Server can identify xTR global 350 RLOCs from RTR RLOCs when proxy Map-Replying. 352 The Global RLOCs are encoded in a RLOC-record using the AFI-List LCAF 353 encoding [RFC8060]. There are two AFI encoded addresses in the list, 354 one being AFI=1 which encodes the IPv4 translated NAT address and 355 other being the Distinguished-Name AFI=17 356 [I-D.farinacci-lisp-name-encoding] which encodes the hostname of the 357 xTR. When the xTR is multi-homed, the hostname is appended by a 358 unique interface name. For example, for an xTR behind a NAT that has 359 two interfaces facing the same or two different NAT devices, the 360 Distinguished-Name for each RLOC-record could be "dino-xtr-eth0" and 361 "dino-xtr-eth1" for an xTR configured to be named "dino-xtr". 363 Encoding a Distinguished-Name in an RLOC-record is important so an 364 RTR can use the Global RLOC registered to the mapping system with the 365 translated port stored in its NAT Info Cache. See Section 8 for more 366 details. 368 When a remote ITR sends a Map-Request for a unicast or multicast EID 369 registered by a xTR behind a NAT, the Map-Server returns a partial 370 RLOC-set that contains all the RTRs (RLOC-records with unicast 371 priority 254) in the proxied Map-Reply message. 373 When a RTR sends a Map-Request for a unicast or multicast EID 374 registered by a xTR behind a NAT, the Map-Server returns a partial 375 RLOC-set that contains all the Global RLOCs of the xTR behind the NAT 376 in the proxied Map-Reply message. 378 6. Packet Flow from ITR-behind-NAT to RTR 380 All packets received by the ITR from the private side of the NAT will 381 use one of the 4 default map-cache entries. There is a unicast and 382 multicast IPv4 default EID-prefix and a unicast and multicast IPv6 383 default EID-prefix. The RLOC-set is the same for all 4 entries. The 384 RLOC-set contains the globally reachable RLOCs of the RTRs. 5-tuple 385 hashing is used to load-split traffic across the RTRs. RLOC-Probing 386 is used to avoid encapsulating to unreachable RTRs. 388 7. Packet Flow from Remote ITR to RTR 390 A remote ITR will get a list of RTRs from the mapping system in a 391 proxy Map-Reply when it sends a Map-Request for a unicast or 392 multicast EID that is registered by an xTR behind a NAT device. The 393 remote ITR will load split traffic across the RTRs from the RLOC-set. 394 Those RTRs can get packets through the NAT devices destined for the 395 xTR behind the NAT since an Info-Request/Info-Reply exchange had 396 already happened between the xTR behind the NAT and the list of RTRs. 398 There can be a reachability situation where an RTR cannot reach the 399 xTR behind a NAT but a remote ITR may 5-tuple hash to this RTR. 400 Which means packets can travel from the remote ITR to the RTR but 401 then get dropped on the path from the RTR to the xTR behind the NAT. 402 To avoid this situation, the xTR behind the NAT RLOC-probes RTRs and 403 when they become unreachable, they are not included in the xTR 404 registrations. 406 8. Packet Flow from RTR to ETR-behind-NAT 408 The RTR will receive a list of Global RLOCs in a proxy Map-Reply from 409 the mapping system for the xTR behind the NAT. The RTR 5-tuple load- 410 splits packets across the RLOC-set of Global RLOCs that can travel 411 through one or more NAT devices along the path to the ETR behind the 412 NAT device. 414 When the RTR selects a Global RLOC to encapsulate to it must select 415 the correct Translated Port for the UDP destination port in the 416 encapsulation header. The RTR needs to use the same Translated 417 Address and Translated Port pair a NAT device used to translate the 418 Info-Request message otherwise the encapsulated packet will be 419 dropped. The NAT Info Cache contains an entry for every hostname 420 (and optionally appended interface name), translated address and port 421 cached when processing Info-Request messages. The RTR obtains the 422 correct Translated Port from the NAT Info Cache by using the Global 423 RLOC and RLOC-record hostname from the registered RLOC-set. 425 The RTR can test reachability for xTRs behind NATs by encapsulating 426 RLOC-Probe requests in data packets where the UDP source port is set 427 to 4341 and the UDP destination port is set to the Translated Port. 428 The outer header destination address is the Global RLOC for the xTR. 430 9. Design Observations 432 The following benefits and observations can be attributed to this 433 design: 435 o An ITR behind a NAT virtually runs no control-plane and a very 436 simple data-plane. All it does is RLOC-probe the RTRs in the 437 common RLOC-set for each default map-cache entry. And maintains a 438 very small map-cache of 4 entries per instance-ID it supports. 440 o An xTR behind a NAT can tell if another xTR is behind the same set 441 of NAT devices and use Private RLOCs to reach each other on a 442 short-cut path. It does this by comparing the Global RLOC 443 returned from RTRs in Info-Reply messages. 445 o An xTR behind a NAT is free to send a Map-Request to the mapping 446 system for any EID to test to see if there is a direct path to the 447 LISP site versus potentially using a sub-optimal path through an 448 RTR. This happens when xTRs exist that are not behind NAT devices 449 where their RLOCs are global RLOCs. 451 o By sending Info-Requests to Map-Servers, an xTR behind a NAT can 452 tell if they are reachable and if those Map-Servers also act as 453 Map-Resolvers, the xTR behind the NAT can avoid sending Map- 454 Requests to unreachable Map-Resolvers. 456 o Enhanced data-plane security can be used via LISP-Crypto 457 mechanisms detailed in [RFC8061] using this NAT-Traversal design 458 so both unicast and multicast traffic are encrypted. 460 o This design allows for the minimum amount of NAT device state 461 since only RTRs are encapsulating to ETRs behind NAT devices. 462 Therefore, the number of ITRs sending packets to EIDs behind NAT 463 devices is aggregated out for scale. Scale is also achieved when 464 xTRs behind NATs roam and RLOC-set changes need to update only RTR 465 map-caches. 467 o The protocol procedures in this document can be used when a LISP 468 site has multiple xTRs each connected via separate NAT devices to 469 the public network. Each xTR registers their Global RLOCs and 470 RTRs with merge semantics to the mapping system so remote ITRs can 471 load-split traffic across a merged RTR set as well as RTRs across 472 each xTR behind different NAT devices. 474 10. Security Considerations 476 There are no security considerations at this time. 478 However, the lispers.net implementation can be enhanced easily to 479 allow the same authentication xTRs use with Map-Register messages for 480 Info-Request messages when they send to Map-Servers. 482 For authentication of Info-Requests to RTRs, more work is required to 483 maintain key management associations between xTR behind NATs and 484 RTRs. It is not trivial to make this happen with a dynamic list of 485 RTRs that can change as the xTR behind a NAT roams to other parts of 486 the network and desire shorter paths to RTRs. 488 11. IANA Considerations 490 The code-point values in this specification are already allocated in 491 [AFI] or [RFC8060]. 493 12. Normative References 495 [AFI] "Address Family Identifier (AFIs)", ADDRESS FAMILY 496 NUMBERS http://www.iana.org/numbers.html, Febuary 2007. 498 [I-D.ermagan-lisp-nat-traversal] 499 Ermagan, V., Farinacci, D., Lewis, D., Maino, F., 500 Portoles-Comeras, M., Skriver, J., White, C., Bresco, A., 501 and A. Cabellos-Aparicio, "NAT traversal for LISP", draft- 502 ermagan-lisp-nat-traversal-18 (work in progress), November 503 2020. 505 [I-D.farinacci-lisp-name-encoding] 506 Farinacci, D., "LISP Distinguished Name Encoding", draft- 507 farinacci-lisp-name-encoding-10 (work in progress), August 508 2020. 510 [I-D.ietf-lisp-rfc6830bis] 511 Farinacci, D., Fuller, V., Meyer, D., Lewis, D., and A. 512 Cabellos-Aparicio, "The Locator/ID Separation Protocol 513 (LISP)", draft-ietf-lisp-rfc6830bis-35 (work in progress), 514 September 2020. 516 [I-D.ietf-lisp-rfc6833bis] 517 Farinacci, D., Maino, F., Fuller, V., and A. Cabellos- 518 Aparicio, "Locator/ID Separation Protocol (LISP) Control- 519 Plane", draft-ietf-lisp-rfc6833bis-29 (work in progress), 520 September 2020. 522 [RFC1700] Reynolds, J. and J. Postel, "Assigned Numbers", RFC 1700, 523 DOI 10.17487/RFC1700, October 1994, 524 . 526 [RFC6835] Farinacci, D. and D. Meyer, "The Locator/ID Separation 527 Protocol Internet Groper (LIG)", RFC 6835, 528 DOI 10.17487/RFC6835, January 2013, 529 . 531 [RFC8060] Farinacci, D., Meyer, D., and J. Snijders, "LISP Canonical 532 Address Format (LCAF)", RFC 8060, DOI 10.17487/RFC8060, 533 February 2017, . 535 [RFC8061] Farinacci, D. and B. Weis, "Locator/ID Separation Protocol 536 (LISP) Data-Plane Confidentiality", RFC 8061, 537 DOI 10.17487/RFC8061, February 2017, 538 . 540 Appendix A. Acknowledgments 542 The author would like to thank the authors of the LISP NAT-Traversal 543 specification [I-D.ermagan-lisp-nat-traversal] for their initial 544 ideas and prototyping to allow a simpler form of NAT-Traversal to be 545 designed. 547 Appendix B. Document Change Log 549 B.1. Changes to draft-farinacci-lisp-simple-nat-01 551 o Posted November 2020. 553 o Update document timer. 555 B.2. Changes to draft-farinacci-lisp-simple-nat-00 557 o Posted May 2020. 559 o Initial posting. 561 Author's Address 563 Dino Farinacci 564 lispers.net 565 San Jose, CA 566 USA 568 Email: farinacci@gmail.com