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