idnits 2.17.1 draft-farinacci-lisp-simple-nat-02.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 11, 2021) is 1080 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-11 == Outdated reference: A later version (-38) exists of draft-ietf-lisp-rfc6830bis-36 == Outdated reference: A later version (-31) exists of draft-ietf-lisp-rfc6833bis-30 ** 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 11, 2021 5 Expires: November 12, 2021 7 A Simple LISP NAT-Traversal Implementation 8 draft-farinacci-lisp-simple-nat-02 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 12, 2021. 32 Copyright Notice 34 Copyright (c) 2021 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-02 . . . . . . 15 64 B.2. Changes to draft-farinacci-lisp-simple-nat-01 . . . . . . 15 65 B.3. Changes to draft-farinacci-lisp-simple-nat-00 . . . . . . 15 66 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16 68 1. Introduction 70 This draft documents the LISP messages and protocol procedures for a 71 simple mechanism for the NAT Traversal problem. A subset of message 72 definitions and protocol procedures are taken from 73 [I-D.ermagan-lisp-nat-traversal]. This design was first implemented 74 in the lispers.net LISP implementation dating back to January 2014. 76 The procedures described in this document are performed by LISP 77 compliant [I-D.ietf-lisp-rfc6830bis] [I-D.ietf-lisp-rfc6833bis] xTRs 78 that reside on the private side of one or more NAT devices that 79 connect them to the public side of the network. 81 The solution is applicable to the following xTR deployments: 83 o A physical ITR/ETR device that is directly connected or multiple 84 hops away from a NAT device. 86 o A LISP-MN acting as an ITR/ETR device on an cellular service where 87 a mobile provider is providing a NAT function. 89 o A logical ITR/ETR that resides in a VM that is behind a NAT device 90 managed by a hypervisor or cloud provider. 92 o A logical ITR/ETR that resides in a container where a NAT function 93 is provided by the container service. 95 o The above xTR deployments can operate through multiple levels of 96 NATs. 98 o The above deployments are also applicable to RTR and PxTR devices 99 that may reside behind NAT devices. 101 o The lispers.net lig [RFC6835] implementation uses the protocol 102 messaging defined in this draft so any system behind a NAT (either 103 running as a LISP xTR or not running LISP at all), can query the 104 mapping system to obtain mappings for network maintenance and 105 troubleshooting. 107 2. Definition of Terms 109 Routing Locator (RLOC): an RLOC address is a routable address on the 110 public Internet. It is used by LISP to locate where EIDs are 111 topologically located and appears in the outer header of LISP 112 encapsulated packets. With respect to this design, an RLOC can be 113 a private or public address. Private RLOCs can be registered to 114 the LISP mapping system so they can be used by other LISP xTRs 115 which reside in the same private network. Public RLOCs can be 116 registered to the LISP mapping system and are used by LISP xTRs 117 that are on the public side of the network. 119 Network Address Translator (NAT): is a router type device that 120 isolates a private network from a public network. The addresses 121 used on the private side of a network are known as private 122 addresses and are not routable on the public side of the network. 123 Therefore, a NAT device must translate private addresses to public 124 addresses. In this document, xTRs that reside on the private side 125 of the network use private RLOCs. These RLOCs must be translated 126 to public addresses so they can be registered in the LISP mapping 127 system. 129 Private RLOC: is the IP address of the interface of an xTR that 130 faces outbound towards a NAT device. This address is typically 131 translated to a public RLOC address before the packet appears on 132 the public side of the network. 134 Ephemeral Port: is the UDP source port in a LISP data-plane or 135 control-plane message. This address is typically translated by a 136 NAT device when the packet goes from the private side of the NAT 137 device to the public side of the network. 139 Global RLOC: is an address that has been translated by a NAT device. 140 The Private RLOC is translated to a Global RLOC and is registered 141 to the mapping system. This RLOC will be the source address in 142 LISP encapsulated packets on the public side of the network. 144 Translated Port: is the Ephemeral Port that is translated by a NAT 145 device. For an xTR outgoing packet, the source Ephemeral Port is 146 translated to a source Translated Port seen by the public side of 147 the network. For an incoming packet, the NAT device translates 148 the destination Translated Port to the destination Ephemeral Port. 150 Re-encapsulating Tunnel Router (RTR): is a LISP network element that 151 receives a LISP encapsulated packet, strips the outer header and 152 prepends a new outer header. With respect to this NAT-Traversal 153 design, an ITR (either behind a NAT device or on the public 154 network) encapsulates a packet to the RTR's RLOC address. The RTR 155 strips this ITR prepended header and then prepends a its own new 156 outer header and sends packet to the RLOC address of an ETR that 157 registered the EID that appears as the destination address from 158 the inner header. 160 NAT Info Cache: is a data structure managed by an RTR to track xTR 161 hostname, Global RLOC and Translated Port information. The RTR 162 uses this table so it knows what is the destination port to be 163 used for LISP encapsulated packets that much travel through a NAT 164 device. 166 Address Family Identifier (AFI): a term used to describe an address 167 encoding in a packet [AFI] and [RFC1700]. All LISP control 168 messages use AFI encoded addresses. The AFI value is 16-bits in 169 length and precedes all LISP encoded addresses. In this document, 170 the design calls for AFI encodings for IPv4 and IPv6 addresses as 171 well as Distinguished-Name [I-D.farinacci-lisp-name-encoding] and 172 LCAF [RFC8060] address formats. 174 3. Overview 176 The following sequence of actions describes at a high-level how the 177 lispers.net implementation performs NAT-Traversal and is the basis 178 for a simplified NAT-Traversal protocol design. 180 1. An xTR sends a Info-Request message to port 4342 to its 181 configured Map-Servers so it can get a list of RTRs to be used 182 for NAT-Traversal. 184 2. The Map-Servers return an Info-Reply message with the list of 185 RTRs. 187 3. The xTR then sends an Info-Request message to port 4341 to each 188 RTR. 190 4. Each RTR caches the translated RLOC address and port in a NAT 191 Info Cache. At this point, the NAT device has created state to 192 allow the RTR to send encapsulated packets from port 4341 to the 193 translated port. 195 5. The RTR returns an Info-Reply message so the xTR can learn its 196 translated Global RLOC address and Translated Port. 198 6. The xTR registers its EID-prefixes with an RLOC-set that 199 contains all its global RLOCs as well as the list of RTRs it has 200 learned from Info-Reply messages. 202 7. The Map-Servers are configured to proxy Map-Reply for these 203 registered EID-prefixes. 205 8. When a remote ITR sends a Map-Request for an EID that matches 206 one of these EID-prefixes, the Map-Server returns a partial 207 RLOC-set which contain only the list of RTRs. The remote ITR 208 encapsulates packets to the RTRs. 210 9. When one of the RTRs send a Map-Request for an EID that matches 211 one of these EID-prefixes, the Map-Server returns a partial 212 RLOC-set which contain only the global RLOCs so the RTR can 213 encapsulate packets that will make it through the NAT device to 214 the xTR. 216 10. The xTR behind a NAT device only stores default map-cache 217 entries with an RLOC-set that contain the list of RTRs the Map- 218 Server supplied it with. The xTR load-splits traffic across the 219 RTRs based on the 5-tuple hash algorithm detailed in 220 [I-D.ietf-lisp-rfc6830bis]. 222 4. Protocol Messages 224 The lispers.net implementation uses the Info-Request and Info-Reply 225 messages from [I-D.ermagan-lisp-nat-traversal] as well as the NAT- 226 Traversal LISP Canonical Address Format (LCAF) from [RFC8060]. 228 0 1 2 3 229 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 230 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 231 |Type=7 |0| Reserved | 232 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 233 | Nonce . . . | 234 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 235 | . . . Nonce | 236 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 237 | Key ID | Authentication Data Length | 238 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 239 ~ Authentication Data ~ 240 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 241 | TTL | 242 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 243 | Reserved | EID mask-len | EID-prefix-AFI | 244 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 245 | EID-prefix | 246 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 247 | AFI = 0 | | 248 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 250 LISP Info-Request Message Format 252 The lispers.net implementation will send an Info-Request message to 253 each configured Map-Server. The message is sent to UDP destination 254 port 4342 which is the control-plane port for LISP 255 [I-D.ietf-lisp-rfc6833bis] from a UDP ephemeral source port. The 256 source address is its Private RLOC. When the xTR is multi-homed to 257 more than one NAT device, it sends the Info-Request on all interfaces 258 facing NAT devices. 260 A randomized 64-bit nonce is selected for the message and no 261 authentication is used. The EID-prefix AFI is 17 according to the 262 encoding format in [I-D.farinacci-lisp-name-encoding] and the EID- 263 prefix is the hostname of the xTR encoded as a string null 264 terminated. 266 An Info-Request is sent out each outgoing interface, with the address 267 of that interface as the Private RLOC, leading to a NAT device. The 268 port pair in the UDP message is the same for each outgoing interface. 270 When the xTR receives an Info-Reply message from the Map-Server in 271 response to this control-plane Info-Request, it caches a list of RTRs 272 from the Info-Reply. If the list of RTRs are different from each 273 Map-Server, the lists are merged. The xTR stores the merged list as 274 the RLOC-set for 4 default map-cache entries. The map-cache entries 275 have the following EID-prefixes: 277 IPv4 unicast: 0.0.0.0/0 278 IPv4 multicast: (0.0.0.0/0, 224.0.0.0/4) 279 IPv6 unicast: 0::/0 280 IPv6 multicast: (0::/0, ff00::/8) 282 Now that the xTR has a list of RTRs, it sends a data-plane Info- 283 Request to each RTR to UDP destination port 4341 from a UDP ephemeral 284 source port. The data-plane Info-Request is sent out each interface 285 just like the control-plane Info-Request was sent for the multi-homed 286 NAT device case. 288 When Map-Servers and RTRs return an Info-Reply message to xTRs behind 289 NAT devices, the format of the Info-Reply message is the following: 291 0 1 2 3 292 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 293 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 294 |Type=7 |1| Reserved | 295 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 296 | Nonce . . . | 297 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 298 | . . . Nonce | 299 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 300 | Key ID | Authentication Data Length | 301 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 302 ~ Authentication Data ~ 303 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 304 | TTL | 305 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 306 | Reserved | EID mask-len | EID-prefix-AFI | 307 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 308 | EID-prefix | 309 +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 310 | | AFI = 16387 | Rsvd1 | Flags | 311 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 312 | | Type = 7 | Rsvd2 | 4 + n | 313 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 314 N | MS UDP Port Number | ETR UDP Port Number | 315 A +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 316 T | AFI = x | Global ETR RLOC Address ... | 317 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 318 L | AFI = x | MS RLOC Address ... | 319 C +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 320 A | AFI = x | Private ETR RLOC Address ... | 321 F +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 322 | | AFI = x | RTR RLOC Address 1 ... | 323 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 324 | | AFI = x | RTR RLOC Address n ... | 325 +->+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 327 LISP Info-Reply Message Format 329 The information returned is the same information that was sent in the 330 Info-Request message except the Info-Reply bit is set (the bit next 331 to Type=7) and the NAT Traversal LCAF encoding is appended. 333 When a Map-Server returns the Info-Reply, the MS UDP Port Number and 334 ETR UDP Port Number is set to 0. All Address fields are empty by 335 using AFI equal to 0. Except for the RTR RLOC address fields which 336 the Map-Server is configured to return to xTRs behind NAT devices. 338 When an RTR returns the Info-Reply, the MS UDP Port Number is set to 339 0 and the ETR UDP Port Number is set to the UDP source port the RTR 340 received from the Info-Request message. The Global ETR RLOC Address 341 is set to the source address received by the RTR in the Info-Request 342 message. All other address fields are empty by using AFI equal to 0. 344 5. xTR Map-Registering and Map-Server Proxy Map-Replying 346 EID-prefixes registered by an xTR behind a NAT include all the global 347 RLOCs and RTR RLOCs it learns. The xTR can use the unicast priority 348 to control ingress packet flow as described in 349 [I-D.ietf-lisp-rfc6833bis]. The RTR RLOCs must be registered with a 350 unicast priority of 254 so the Map-Server can identify xTR global 351 RLOCs from RTR RLOCs when proxy Map-Replying. 353 The Global RLOCs are encoded in a RLOC-record using the AFI-List LCAF 354 encoding [RFC8060]. There are two AFI encoded addresses in the list, 355 one being AFI=1 which encodes the IPv4 translated NAT address and 356 other being the Distinguished-Name AFI=17 357 [I-D.farinacci-lisp-name-encoding] which encodes the hostname of the 358 xTR. When the xTR is multi-homed, the hostname is appended by a 359 unique interface name. For example, for an xTR behind a NAT that has 360 two interfaces facing the same or two different NAT devices, the 361 Distinguished-Name for each RLOC-record could be "dino-xtr-eth0" and 362 "dino-xtr-eth1" for an xTR configured to be named "dino-xtr". 364 Encoding a Distinguished-Name in an RLOC-record is important so an 365 RTR can use the Global RLOC registered to the mapping system with the 366 translated port stored in its NAT Info Cache. See Section 8 for more 367 details. 369 When a remote ITR sends a Map-Request for a unicast or multicast EID 370 registered by a xTR behind a NAT, the Map-Server returns a partial 371 RLOC-set that contains all the RTRs (RLOC-records with unicast 372 priority 254) in the proxied Map-Reply message. 374 When a RTR sends a Map-Request for a unicast or multicast EID 375 registered by a xTR behind a NAT, the Map-Server returns a partial 376 RLOC-set that contains all the Global RLOCs of the xTR behind the NAT 377 in the proxied Map-Reply message. 379 6. Packet Flow from ITR-behind-NAT to RTR 381 All packets received by the ITR from the private side of the NAT will 382 use one of the 4 default map-cache entries. There is a unicast and 383 multicast IPv4 default EID-prefix and a unicast and multicast IPv6 384 default EID-prefix. The RLOC-set is the same for all 4 entries. The 385 RLOC-set contains the globally reachable RLOCs of the RTRs. 5-tuple 386 hashing is used to load-split traffic across the RTRs. RLOC-Probing 387 is used to avoid encapsulating to unreachable RTRs. 389 7. Packet Flow from Remote ITR to RTR 391 A remote ITR will get a list of RTRs from the mapping system in a 392 proxy Map-Reply when it sends a Map-Request for a unicast or 393 multicast EID that is registered by an xTR behind a NAT device. The 394 remote ITR will load split traffic across the RTRs from the RLOC-set. 395 Those RTRs can get packets through the NAT devices destined for the 396 xTR behind the NAT since an Info-Request/Info-Reply exchange had 397 already happened between the xTR behind the NAT and the list of RTRs. 399 There can be a reachability situation where an RTR cannot reach the 400 xTR behind a NAT but a remote ITR may 5-tuple hash to this RTR. 401 Which means packets can travel from the remote ITR to the RTR but 402 then get dropped on the path from the RTR to the xTR behind the NAT. 403 To avoid this situation, the xTR behind the NAT RLOC-probes RTRs and 404 when they become unreachable, they are not included in the xTR 405 registrations. 407 8. Packet Flow from RTR to ETR-behind-NAT 409 The RTR will receive a list of Global RLOCs in a proxy Map-Reply from 410 the mapping system for the xTR behind the NAT. The RTR 5-tuple load- 411 splits packets across the RLOC-set of Global RLOCs that can travel 412 through one or more NAT devices along the path to the ETR behind the 413 NAT device. 415 When the RTR selects a Global RLOC to encapsulate to it must select 416 the correct Translated Port for the UDP destination port in the 417 encapsulation header. The RTR needs to use the same Translated 418 Address and Translated Port pair a NAT device used to translate the 419 Info-Request message otherwise the encapsulated packet will be 420 dropped. The NAT Info Cache contains an entry for every hostname 421 (and optionally appended interface name), translated address and port 422 cached when processing Info-Request messages. The RTR obtains the 423 correct Translated Port from the NAT Info Cache by using the Global 424 RLOC and RLOC-record hostname from the registered RLOC-set. 426 The RTR can test reachability for xTRs behind NATs by encapsulating 427 RLOC-Probe requests in data packets where the UDP source port is set 428 to 4341 and the UDP destination port is set to the Translated Port. 429 The outer header destination address is the Global RLOC for the xTR. 431 9. Design Observations 433 The following benefits and observations can be attributed to this 434 design: 436 o An ITR behind a NAT virtually runs no control-plane and a very 437 simple data-plane. All it does is RLOC-probe the RTRs in the 438 common RLOC-set for each default map-cache entry. And maintains a 439 very small map-cache of 4 entries per instance-ID it supports. 441 o An xTR behind a NAT can tell if another xTR is behind the same set 442 of NAT devices and use Private RLOCs to reach each other on a 443 short-cut path. It does this by comparing the Global RLOC 444 returned from RTRs in Info-Reply messages. 446 o An xTR behind a NAT is free to send a Map-Request to the mapping 447 system for any EID to test to see if there is a direct path to the 448 LISP site versus potentially using a sub-optimal path through an 449 RTR. This happens when xTRs exist that are not behind NAT devices 450 where their RLOCs are global RLOCs. 452 o By sending Info-Requests to Map-Servers, an xTR behind a NAT can 453 tell if they are reachable and if those Map-Servers also act as 454 Map-Resolvers, the xTR behind the NAT can avoid sending Map- 455 Requests to unreachable Map-Resolvers. 457 o Enhanced data-plane security can be used via LISP-Crypto 458 mechanisms detailed in [RFC8061] using this NAT-Traversal design 459 so both unicast and multicast traffic are encrypted. 461 o This design allows for the minimum amount of NAT device state 462 since only RTRs are encapsulating to ETRs behind NAT devices. 463 Therefore, the number of ITRs sending packets to EIDs behind NAT 464 devices is aggregated out for scale. Scale is also achieved when 465 xTRs behind NATs roam and RLOC-set changes need to update only RTR 466 map-caches. 468 o The protocol procedures in this document can be used when a LISP 469 site has multiple xTRs each connected via separate NAT devices to 470 the public network. Each xTR registers their Global RLOCs and 471 RTRs with merge semantics to the mapping system so remote ITRs can 472 load-split traffic across a merged RTR set as well as RTRs across 473 each xTR behind different NAT devices. 475 10. Security Considerations 477 There are no security considerations at this time. 479 However, the lispers.net implementation can be enhanced easily to 480 allow the same authentication xTRs use with Map-Register messages for 481 Info-Request messages when they send to Map-Servers. 483 For authentication of Info-Requests to RTRs, more work is required to 484 maintain key management associations between xTR behind NATs and 485 RTRs. It is not trivial to make this happen with a dynamic list of 486 RTRs that can change as the xTR behind a NAT roams to other parts of 487 the network and desire shorter paths to RTRs. 489 11. IANA Considerations 491 The code-point values in this specification are already allocated in 492 [AFI] or [RFC8060]. 494 12. Normative References 496 [AFI] "Address Family Identifier (AFIs)", ADDRESS FAMILY 497 NUMBERS http://www.iana.org/numbers.html, Febuary 2007. 499 [I-D.ermagan-lisp-nat-traversal] 500 Ermagan, V., Farinacci, D., Lewis, D., Maino, F., Comeras, 501 M. P., Skriver, J., White, C., Lopez, A., and A. Cabellos, 502 "NAT traversal for LISP", draft-ermagan-lisp-nat- 503 traversal-18 (work in progress), November 2020. 505 [I-D.farinacci-lisp-name-encoding] 506 Farinacci, D., "LISP Distinguished Name Encoding", draft- 507 farinacci-lisp-name-encoding-11 (work in progress), 508 November 2020. 510 [I-D.ietf-lisp-rfc6830bis] 511 Farinacci, D., Fuller, V., Meyer, D., Lewis, D., and A. 512 Cabellos, "The Locator/ID Separation Protocol (LISP)", 513 draft-ietf-lisp-rfc6830bis-36 (work in progress), November 514 2020. 516 [I-D.ietf-lisp-rfc6833bis] 517 Farinacci, D., Maino, F., Fuller, V., and A. Cabellos, 518 "Locator/ID Separation Protocol (LISP) Control-Plane", 519 draft-ietf-lisp-rfc6833bis-30 (work in progress), November 520 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-02 551 o Posted May 2021. 553 o Update document timer. 555 B.2. Changes to draft-farinacci-lisp-simple-nat-01 557 o Posted November 2020. 559 o Update document timer. 561 B.3. Changes to draft-farinacci-lisp-simple-nat-00 563 o Posted May 2020. 565 o Initial posting. 567 Author's Address 569 Dino Farinacci 570 lispers.net 571 San Jose, CA 572 USA 574 Email: farinacci@gmail.com