idnits 2.17.1 draft-linkova-6man-grand-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 : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([RFC4861], [RFC4862]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. -- The abstract seems to indicate that this document updates RFC4862, but the header doesn't have an 'Updates:' line to match this. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year (Using the creation date from RFC4861, updated by this document, for RFC5378 checks: 2004-07-16) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (November 26, 2019) is 1605 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC4941' is defined on line 419, but no explicit reference was found in the text == Outdated reference: A later version (-05) exists of draft-ietf-v6ops-nd-cache-init-00 -- Obsolete informational reference (is this intentional?): RFC 4941 (Obsoleted by RFC 8981) Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 4 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IPv6 Maintenance J. Linkova 3 Internet-Draft Google 4 Updates: 4861 (if approved) November 26, 2019 5 Intended status: Standards Track 6 Expires: May 29, 2020 8 Gratuitous Neighbor Discovery: Creating Neighbor Cache Entries on First- 9 Hop Routers 10 draft-linkova-6man-grand-01 12 Abstract 14 Neighbor Discovery (RFC4861) is used by IPv6 nodes to determine the 15 link-layer addresses of neighboring nodes as well as to discover and 16 maintain reachability information. This document updates [RFC4861] 17 to allow routers to proactively create a Neighbor Cache entry when a 18 new IPv6 address is assigned to a host. It also updates [RFC4862] 19 and recommends hosts to send unsolicited Neighbor Advertisements upon 20 assigning a new IPv6 address. The proposed change will minimize the 21 delay and packet loss when a host initiate connections to off-link 22 destination from a new IPv6 address. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at https://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on May 29, 2020. 41 Copyright Notice 43 Copyright (c) 2019 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (https://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 59 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 60 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 61 2. Proposed Changes to Neighbor Discovery . . . . . . . . . . . 4 62 2.1. Hosts Sending Gratuitous Neighbor Advertisements . . . . 4 63 2.2. Routers Creating Cache Entries Upon Receiving Unsolicited 64 Neighbor Advertisements . . . . . . . . . . . . . . . . . 4 65 3. Avoiding Disruption . . . . . . . . . . . . . . . . . . . . . 5 66 3.1. Neighbor Cache Entry Exists in Any State Other That 67 INCOMPLETE . . . . . . . . . . . . . . . . . . . . . . . 5 68 3.2. Neighbor Cache Entry Does Not Exist . . . . . . . . . . . 5 69 3.3. Neighbor Cache Entry is in INCOMPLETE state . . . . . . . 6 70 4. Modifications to RFC-Mandated Behavior . . . . . . . . . . . 6 71 4.1. Modification to RFC4861 Neighbor Discovery for IP version 72 6 (IPv6) . . . . . . . . . . . . . . . . . . . . . . . . 6 73 4.1.1. Modification to the section 7.2.5 . . . . . . . . . . 6 74 4.1.2. Modification to the section 7.2.6 . . . . . . . . . . 7 75 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 76 6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 77 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 78 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 79 8.1. Normative References . . . . . . . . . . . . . . . . . . 9 80 8.2. Informative References . . . . . . . . . . . . . . . . . 9 81 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 83 1. Introduction 85 The Neighbor Discovery state machine defined in [RFC4861] implies 86 that communications between IPv6 nodes are in most cases bi- 87 directional and if a host A is trying to communicate to its neighbor, 88 host B, the return traffic flows could be expected. So when the host 89 A starts the address resolution process, the target host would also 90 create an entry for the host A address in its neighbor cache. That 91 entry will be used for sending the return traffic to the host A. 93 However when a host sends traffic to off-link destinations the 94 different scenario is observed. After receiving a Router 95 Advertisement the host populates its neighbor cache with the default 96 router IPv6 and link-layer addresses and is able to send traffic to 97 off-link destinations. At the same time the router does not have any 98 cache entries for the host global addresses yet and only starts 99 address resolution upon receiving the first packet of the return 100 traffic flow. While waiting for the resolution to complete routers 101 only keep a very small number of packets in the queue (as recommended 102 in [RFC4861] Section 7.2.2. All subsequent packets arriving before 103 the resolution process finishes are likely to be dropped. It might 104 cause user-visible packet loss and performance degradation 106 The detailed problem statement and various solution approaches could 107 be found in [I-D.ietf-v6ops-nd-cache-init]. This document summarized 108 the proposed neighbor discovery updates to address the issue. 110 1.1. Requirements Language 112 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 113 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 114 "OPTIONAL" in this document are to be interpreted as described in BCP 115 14 [RFC2119] [RFC8174] when, and only when, they appear in all 116 capitals, as shown here. 118 1.2. Terminology 120 ND: Neighbor Discovery, [RFC4861]. 122 SLAAC: IPv6 Stateless Address Autoconfiguration, [RFC4862]. 124 NS: Neighbor Solicitation, [RFC4861]. 126 NA: Neighbor Advertisement, [RFC4861]. 128 RS: Router Solicitation, [RFC4861]. 130 RA: Router Advertisement, [RFC4861]. 132 LLA: Link-Layer Address. 134 SLLA: Source link-layer Address, an option in the ND packets 135 containing the link-layer address of the sender of the packet 136 ([RFC4861]). 138 TLLA: Target link-layer Address, an option in the ND packets 139 containing the link-layer address of the target ([RFC4861]). 141 GUA: Global Unicast Address ([RFC4291]). 143 DAD: Duplicate Address Detection, [RFC4862]. 145 Optimistic DAD: a modification of DAD, [RFC4429]. 147 2. Proposed Changes to Neighbor Discovery 149 The following changes are proposed to minimize the delay in creating 150 new entries in a router neighbor cache 152 o A host SHOULD send unsolicited NAs upon assigning a new IPv6 153 address to its interface. 155 o A router SHOULD create a new cache entry upon receiving an 156 unsolicited NA from a host. 158 The following sections discuss these changes in more detail. 160 2.1. Hosts Sending Gratuitous Neighbor Advertisements 162 The section 7.2.6 of [RFC4861] discusses using unsolicited Neighbor 163 Advertisement to inform node neighbors of the new link-layer address 164 quickly. The same mechanism could be used to notify the host 165 neighbors about the new network-layer address as well: the host can 166 send gratuitous unsolicited Neighbor Advertisements upon assigning a 167 new global IPv6 address to its interface. 169 To minimize the potential disruption in case of duplicate addresses 170 the host SHOULD NOT set the Override flag for a preferred address and 171 MUST NOT set the Override flag if the address is in Optimistic 172 [RFC4429] state. 174 As the main purpose of sending unsolicited NAs upon configuring a new 175 address is to proactively create a Neighbor Cache entry on the first- 176 hop routers, the gratuitous NAs SHOULD be sent to all-routers 177 multicast address (ff02::2). Limiting the recipients to routers only 178 would help reduce the multicast noise level. 180 2.2. Routers Creating Cache Entries Upon Receiving Unsolicited Neighbor 181 Advertisements 183 The section 7.2.5 of [RFC4861] states: "When a valid Neighbor 184 Advertisement is received (either solicited or unsolicited), the 185 Neighbor Cache is searched for the target's entry. If no entry 186 exists, the advertisement SHOULD be silently discarded. There is no 187 need to create an entry if none exists, since the recipient has 188 apparently not initiated any communication with the target". 190 The reasoning behind dropping unsolicited Neighbor Advertisements 191 ("the recipient has apparently not initiated any communication with 192 the target") is valid for onlink host-to-host communication but, as 193 discussed in [I-D.ietf-v6ops-nd-cache-init] does not really apply for 194 the scenario when the host is announcing its address to routers. 195 Therefore it would be beneficial to allow routers creating new 196 entries upon receiving an unsolicited Neighbor Advertisement. 198 This document suggests that routers SHOULD create a new Neighbor 199 Cache entry when receive an unsolicited Neighbor Advertisement. 201 3. Avoiding Disruption 203 If hosts following the recommendations in this document are using the 204 DAD mechanism defined in [RFC4862], they would send unsolicited NA as 205 soon as the address changes the state from tentative to preferred 206 (after its uniqueness has been verified). However hosts willing to 207 minimize network stack configuration delays might be using optimistic 208 addresses, which means there is a possibility of the address not 209 being unique on the link. The section 2.2 of [RFC4429] discusses 210 measures to ensure that ND packets from the optimistic address do not 211 override any existing neighbor cache entries as it would cause 212 traffic interruption of the rightful address owner in case of address 213 conflict. As hosts willing to speed up their network stack 214 configuration are most likely to be affected by the problem outlined 215 in this document it seems reasonable for such hosts to advertise 216 their optimistic GUAs by sending unsolicited NAs. The main question 217 to consider is the potential risk of overriding the cache entry for 218 the rightful address owner if the optimistic address happens to be 219 duplicated. 221 3.1. Neighbor Cache Entry Exists in Any State Other That INCOMPLETE 223 If the router Neighbor Cache entry for the target address already 224 exists in any state other than INCOMPLETE, then as per section 7.2.5 225 of [RFC4861] an unsolicited NA with the Override flag cleared would 226 change the entry state from REACHABLE to STALE but would not update 227 the entry in any other way. Therefore even if the host sends an 228 unsolicited NA from the its Optimistic address the router cache entry 229 would not be updated with the new Link-Layer address and no impact to 230 the traffic for the rightful address owner is expected. 232 3.2. Neighbor Cache Entry Does Not Exist 234 If there is no entry then it would be created/updated with the 235 supplied LLA and its state set to STALE. In that case as soon as the 236 entry is used for sending traffic to the host, the entry state will 237 be changed to DELAY and the Neighbor Unreachability Detection would 238 be started and the rightful owner LLA will be entered in the cache. 239 So in the scenario when the rightful owner does not use the address 240 for communication then it might be a short (a few seconds) period of 241 time when the data packets sent from the outside could reach the host 242 with the optimistic address. However it seems likely that hosts 243 using Optimistic DAD would start sending/receiving traffic right 244 away, so the first return packet would trigger the NUD process and 245 rewrite the cache. 247 3.3. Neighbor Cache Entry is in INCOMPLETE state 249 Another corner case is the INCOMPLETE cache entry for the address. 250 If the host sends an unsolicited NA from the Optimistic address it 251 would update the entry with the host LLA and set the entry to the 252 STALE state. As the INCOMPLETE entry means that the router has 253 started the ND process for the address and the multicast NS has been 254 sent, the rightful owner is expected to reply with solicited NA with 255 the Override flag set. Upon receiving a solicited NA with the 256 Override flag the cache entry will be updated with the TLLA supplied 257 and (as the NA has the Solicited flag set), the entry state will be 258 set to REACHABLE. IT would would recover the cache entry and set the 259 LLA to the one of the rightful owner. The only potential impact 260 would be for packets arriving to the router after the unsolicited NA 261 from the host but before the rightful owner responded with the 262 solicited NA. Those packets would be sent to the host with the 263 optimistic address instead of its rightful owner. However those 264 packets would have been dropped anyway as until the solicited NA is 265 received the router can not send the traffic. 267 4. Modifications to RFC-Mandated Behavior 269 All normative text in this memo is contained in this section. 271 4.1. Modification to RFC4861 Neighbor Discovery for IP version 6 (IPv6) 273 4.1.1. Modification to the section 7.2.5 275 This document proposes the following changes to the section 7.2.5 of 276 [RFC4861]: 278 ------------------------------------------------------------------ 280 OLD TEXT: 282 When a valid Neighbor Advertisement is received (either solicited or 283 unsolicited), the Neighbor Cache is searched for the target's entry. 284 If no entry exists, the advertisement SHOULD be silently discarded. 285 There is no need to create an entry if none exists, since the 286 recipient has apparently not initiated any communication with the 287 target. 289 NEW TEXT: 291 When a valid Neighbor Advertisement is received (either solicited or 292 unsolicited), the Neighbor Cache is searched for the target's entry. 293 If no entry exists, hosts SHOULD silently discard the advertisement. 294 There is no need to create an entry if none exists, since the 295 recipient has apparently not initiated any communication with the 296 target. Routers SHOULD create a new entry for the target address 297 with the link-layer address set to the Target link-layer address 298 option (if supplied). The entry its reachability state MUST also be 299 set to STALE. If the received Neighbor Advertisement does not 300 contain the Target link-layer address option the advertisement SHOULD 301 be silently discarded. 303 ------------------------------------------------------------------ 305 4.1.2. Modification to the section 7.2.6 307 This document proposes the following changes to the section 7.2.6 of 308 [RFC4861]: 310 OLD TEXT: 312 In such cases, a node MAY send up to MAX_NEIGHBOR_ADVERTISEMENT 313 unsolicited Neighbor Advertisement messages to the all-nodes 314 multicast address. These advertisements MUST be separated by at 315 least RetransTimer seconds. 317 NEW TEXT: 319 In such cases, a node MAY send up to MAX_NEIGHBOR_ADVERTISEMENT 320 unsolicited Neighbor Advertisement messages to the all-nodes 321 multicast address. These advertisements MUST be separated by at 322 least RetransTimer seconds. 324 A host may also wish to notify its first-hop routers when it 325 configures a new global IPv6 address so the routers can proactively 326 populate their neighbor caches with the corresponding entries. In 327 such cases a host SHOULD send up to MAX_NEIGHBOR_ADVERTISEMENT 328 Neighbor Advertisement messages. If the address is preferred then 329 the Override flag SHOULD NOT be set. If the address is in the 330 Optimistic state then the Override flag MUST NOT be set. The 331 destination address SHOULD be set to the all-routers multicast 332 address. These advertisements MUST be separated by at least 333 RetransTimer seconds. The first advertisement SHOULD be sent as soon 334 as one of the following events happens: 336 o if Optimistic DAD [RFC4429] is used: a new Optimistic GUA is 337 assigned to the host interface. 339 o if Optimistic DAD is not used: a GUA changes the state from 340 tentative to preferred. 342 ------------------------------------------------------------------ 344 5. IANA Considerations 346 This memo asks the IANA for no new parameters. 348 6. Security Considerations 350 One of the potential attack vectors to consider is a cache spoofing 351 when the attacker might try to install a cache entry for the victim's 352 IPv6 address and the attacker's Link-Layer address. However it 353 should be noted that this document does not propose any changes for 354 the scenario when the ND cache for the given IPv6 address already 355 exists. Therefore it is not possible for the attacker to override 356 any existing cache entry. 358 A malicious host could attempt to exhaust the neighbor cache on the 359 router by creating a large number of STALE entries. However this 360 attack vector is not new and this document does not increase the risk 361 of such an attack: the attacker could do it, for example, by sending 362 a NS or RS packet with SLLAO included. All recommendations from 363 [RFC6583] still apply. 365 Announcing a new address to all-routers multicast address may inform 366 an on-link attacker about IPv6 addresses assigned to the host. 367 However hiding information about the specific IPv6 address should not 368 be considered a security measure as it falls into 'Security through 369 obscurity' category. If peer-to-peer onlink communications are not 370 desirable they should be prevented by proper layer2 security 371 mechanisms. Therefore the risk of allowing hosts to send unsolicited 372 Neighbor Advertisements to all-routers multicast address is low. 374 7. Acknowledgements 376 Thanks to the following people (in alphabetical order) for their 377 comments, review and feedback: Lorenzo Colitti, Tatuya Jinmei, Erik 378 Kline, Warren Kumari, Erik Nordmark, Michael Richardson, Dave Thaler, 379 Pascal Thubert, Loganaden Velvindron, Eric Vyncke. 381 8. References 383 8.1. Normative References 385 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 386 Requirement Levels", BCP 14, RFC 2119, 387 DOI 10.17487/RFC2119, March 1997, 388 . 390 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 391 Architecture", RFC 4291, DOI 10.17487/RFC4291, February 392 2006, . 394 [RFC4429] Moore, N., "Optimistic Duplicate Address Detection (DAD) 395 for IPv6", RFC 4429, DOI 10.17487/RFC4429, April 2006, 396 . 398 [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, 399 "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, 400 DOI 10.17487/RFC4861, September 2007, 401 . 403 [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless 404 Address Autoconfiguration", RFC 4862, 405 DOI 10.17487/RFC4862, September 2007, 406 . 408 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 409 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 410 May 2017, . 412 8.2. Informative References 414 [I-D.ietf-v6ops-nd-cache-init] 415 Linkova, J., "Neighbor Cache Entries on First-Hop Routers: 416 Operational Considerations", draft-ietf-v6ops-nd-cache- 417 init-00 (work in progress), October 2019. 419 [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy 420 Extensions for Stateless Address Autoconfiguration in 421 IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, 422 . 424 [RFC6583] Gashinsky, I., Jaeggli, J., and W. Kumari, "Operational 425 Neighbor Discovery Problems", RFC 6583, 426 DOI 10.17487/RFC6583, March 2012, 427 . 429 Author's Address 431 Jen Linkova 432 Google 433 1 Darling Island Rd 434 Pyrmont, NSW 2009 435 AU 437 Email: furry@google.com