idnits 2.17.1 draft-templin-6man-rio-redirect-04.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 'Updates: ' line in the draft header should list only the _numbers_ of the RFCs which will be updated by this document (if approved); it should not include the word 'RFC' in the list. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (August 16, 2017) is 2444 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: 'RFC0791' is defined on line 688, but no explicit reference was found in the text == Unused Reference: 'RFC2460' is defined on line 697, but no explicit reference was found in the text == Unused Reference: 'RFC4443' is defined on line 705, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2460 (Obsoleted by RFC 8200) -- Obsolete informational reference (is this intentional?): RFC 3633 (Obsoleted by RFC 8415) Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group F. Templin, Ed. 3 Internet-Draft Boeing Research & Technology 4 Updates: rfc4191 (if approved) J. Woodyatt 5 Intended status: Standards Track Google 6 Expires: February 17, 2018 August 16, 2017 8 Route Information Options in IPv6 Neighbor Discovery 9 draft-templin-6man-rio-redirect-04.txt 11 Abstract 13 The IPv6 Neighbor Discovery (ND) protocol allows nodes to discover 14 neighbors on the same link. Router Advertisement (RA) messages can 15 also convey routing information by including 1) a non-zero (default) 16 Router Lifetime, and/or 2) Route Information Options (RIOs). This 17 document specifies backward-compatible extensions that permit nodes 18 to include RIOs in other IPv6 ND messages to support the discovery of 19 more-specific routes. 21 Status of This Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at http://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on February 17, 2018. 38 Copyright Notice 40 Copyright (c) 2017 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 4. Route Information Options (RIOs) in IPv6 Neighbor Discovery 59 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . 5 60 4.1. RIO Update . . . . . . . . . . . . . . . . . . . . . . . 5 61 4.2. RIO Requirements . . . . . . . . . . . . . . . . . . . . 7 62 4.3. Classic Redirection Scenario . . . . . . . . . . . . . . 8 63 4.4. RIO Redirection Scenario . . . . . . . . . . . . . . . . 9 64 4.4.1. Router Specification . . . . . . . . . . . . . . . . 10 65 4.4.2. Source Specification . . . . . . . . . . . . . . . . 10 66 4.4.3. Target Specification . . . . . . . . . . . . . . . . 11 67 4.5. Operation Without Redirects . . . . . . . . . . . . . . . 12 68 4.6. Multiple RIOs . . . . . . . . . . . . . . . . . . . . . . 12 69 4.7. Multicast . . . . . . . . . . . . . . . . . . . . . . . . 12 70 4.8. Backward Compatibility . . . . . . . . . . . . . . . . . 13 71 4.9. Why NS/NA? . . . . . . . . . . . . . . . . . . . . . . . 13 72 5. Implementation Status . . . . . . . . . . . . . . . . . . . . 14 73 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 74 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 75 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 76 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 77 9.1. Normative References . . . . . . . . . . . . . . . . . . 15 78 9.2. Informative References . . . . . . . . . . . . . . . . . 16 79 Appendix A. Link-layer Address Changes . . . . . . . . . . . . . 17 80 Appendix B. Interfaces with Multiple Link-Layer Addresses . . . 17 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 83 1. Introduction 85 "Neighbor Discovery for IP version 6 (IPv6)" [RFC4861] (IPv6 ND) 86 provides a Router Solicitation (RS) function allowing nodes to 87 solicit a Router Advertisement (RA) response from an on-link router, 88 a Neighbor Solicitation (NS) function allowing nodes to solicit a 89 Neighbor Advertisement (NA) response from an on-link neighbor, and a 90 Redirect function allowing routers to inform nodes of a better next 91 hop neighbor on the link toward the destination. Further guidance 92 for processing Redirect messages is given in "First-Hop Router 93 Selection by Hosts in a Multi-Prefix Network" [RFC8028]. 95 "Default Router Preferences and More-Specific Routes" [RFC4191] 96 specifies a Route Information Option (RIO) that routers can include 97 in RA messages to inform recipients of more-specific routes (section 98 1 of that document provides rationale for the use of RA messages 99 instead of an adjunct routing protocol). This document specifies a 100 backward-compatible and incrementally-deployable extension to allow 101 nodes to include RIOs in other IPv6 ND messages to support the 102 dynamic discovery of more-specific routes. This allows nodes to 103 discover a better neighbor for more-specific routes to both increase 104 performance and reduce the workload on default routers. 106 This approach applies to any link type on which there may be many 107 nodes that are holders of more-specific routes and do not act as 108 default routers. These nodes can either be routers that forward 109 packets on behalf of their downstream-attached networks, or hosts 110 that use a delegated prefix for their own multi-addressing purposes 111 [RFC7934]. 113 This work benefits from the experience of [RFC6706] - an experimental 114 protocol that uses UDP-based "pseudo-ND" messages instead of actual 115 ICMPv6 message codes. That experience has shown that using 116 synthesized UDP messages in conjunction with the IPv6 ND messaging 117 already present on the link is inefficient. Furthermore, the UDP 118 approach is neither backward-compatible nor incrementally-deployable, 119 since sending UDP messages blindly to a node that does not have the 120 port open can trigger excessive "Port Unreachable" messages and 121 (worse) could be mis-interpreted as indications of a UDP port scan 122 attack. This specification avoids these issues by using the already- 123 present and natural IPv6 ND messaging available on the link, as 124 specified in this document. 126 2. Terminology 128 The terminology in the normative references applies. 130 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 131 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 132 document are to be interpreted as described in [RFC2119]. Lower case 133 uses of these words are not to be interpreted as carrying RFC2119 134 significance. 136 3. Motivation 138 An example of a good application for RIO is the local-area subnets 139 served by the routers described in "Basic Requirements for IPv6 140 Customer Edge Routers" [RFC7084]. While many customer edge routers 141 are capable of operating in a mode with a dynamic routing protocol 142 operating in the local-area network, the default mode of operation is 143 typically designed for unmanaged operation without any dynamic 144 routing protocol. On these networks, the only means for any node to 145 learn about routers on the link is by using the Router Discovery 146 protocol described in [RFC4861]. 148 Nevertheless, hosts on unmanaged home subnets may use "IPv6 Prefix 149 Options for DHCPv6" [RFC3633] (DHCPv6 PD) to receive IPv6 routing 150 prefixes for additional subnets allocated from the space provided by 151 the service provider, and operate as routers for other links where 152 hosts in delegated subnets are attached. Hosts may even learn about 153 more specific routes than the default route by processing RIOs in RA 154 messages as described in [RFC4191]. 156 However, due to perceptions of the security considerations for hosts 157 in processing RIOs on unmanaged networks, the default configuration 158 for common host IPv6 implementations is to ignore RIOs. Accordingly, 159 on typical home networks the forwarding path from hosts on one subnet 160 to destinations on every off-link local subnet always passes through 161 the customer edge router, even when a shorter path would otherwise be 162 available through an on-link router. This adds costs for 163 retransmission on shared LAN media, often adding latency and jitter 164 with queuing delay and delay variability. This is not materially 165 different under the scenarios described in "IPv6 Home Networking 166 Architecture Principles" [RFC7368] except that routers may use an 167 interior dynamic routing protocol to coordinate sending of RIOs in RA 168 messages, which as explained above, are not processed by typical 169 hosts. 171 In increasingly common practice, a node that receives a prefix 172 delegation can use the prefix for its own multi-addressing purposes 173 or can connect an entourage of "Internet of Things" back end devices 174 (an approach sometimes known as "tethering" [RFC7934]). On many link 175 types, the number of such nodes may be quite large which would make 176 running a dynamic routing protocol between the nodes impractical. 177 Example use cases include: 179 o IETF conference, airport, and hotel WiFi networks, where large 180 numbers of nodes on the link could receive IPv6 prefix 181 delegations. Using the extensions described in this document, the 182 nodes could dynamically discover more-specific routes to enable 183 direct neighbor-to-neighbor communications. 185 o Mobile enterprise devices that connect into a corporate network 186 via VPN links. Using the extensions described in this document, 187 mobile devices could dynamically establish pair-wise VPN links 188 between themselves without having to use the enterprise network as 189 transit. 191 o Civil aviation networks where an aircraft holds an IPv6 prefix 192 derived from the identification value assigned to it by the 193 International Civil Aviation Organization (ICAO). Using the 194 extensions described in this document, direct paths between the 195 aircraft and Air Traffic Control (ATC) can be established to 196 provide a more direct route for communications. 198 By using RIOs in IPv6 ND messages, the forwarding path between 199 subnets can be shortened while accepting a much narrower opening of 200 attack surfaces on general purpose hosts related to the Router 201 Discovery protocol. The basic idea is simple: hosts normally send 202 packets for off-link destinations to their default router unless they 203 receive ND Redirect messages designating another on-link node as the 204 target. This document allows ND Redirects additionally to suggest 205 another on-link node as the target for one or more routing prefixes, 206 including one with the destination. Hosts that receive RIOs in ND 207 Redirect messages then send NS messages to the target containing 208 those RIOs, and process the NA messages the target sends in reply. 209 If hosts only process RIOs in NA messages when they have previously 210 sent them in NS messages to the targets of received ND Redirect 211 messages, then hosts only process RIO at the initiative of routers 212 they already accept as authoritative. 214 4. Route Information Options (RIOs) in IPv6 Neighbor Discovery Messages 216 The RIO is specified for inclusion in RA messages in Section 2.3 of 217 [RFC4191], while the neighbor discovery functions are specified in 218 [RFC4861]. This specification permits routers to include RIOs in 219 other IPv6 ND messages so that recipients can discover a better next 220 hop for a destination *prefix* instead of just a specific destination 221 address. This specification therefore updates [RFC4191] as discussed 222 in the following sections. 224 4.1. RIO Update 226 The RIO format given in Section 2.3 of [RFC4191] is updated by this 227 specification as shown in Figure 1: 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 | Length | Prefix Length |Ver|S|Prf|Resvd| 233 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 234 | Route Lifetime | 235 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 236 | Prefix (Variable Length) | 237 . . 238 . . 239 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 240 | Attributes ... 241 +-+-+-+-+-+-+-+-+-+-+-+- 243 Figure 1: Updated RIO Format 245 This format introduces a new Ver field, a new S flag and variable- 246 length Attributes. The fields of the main body of the RIO are set as 247 follows: 249 o Type, Prefix Length, Prf, Route Lifetime and Prefix are set 250 exactly as specified in Section 2.3 of [RFC4191]. 252 o Length MUST be initialized to exactly 1 when Prefix Length is 0, 253 to exactly 2 when Prefix Length is between 1 and 64, and to 254 exactly 3 when Prefix Length is greater than 64; Length is then 255 incremented by the length of all included Attributes in units of 256 8-octets (see below). 258 o Ver is set to '01' to indicate that this is Version 1 of the RIO 259 format ([RFC4191] is considered as the Version 0 format). 261 o S is set to '1' to "Solicit" route information or to '0' (i.e., 262 the default value) to "Assert" route information. 264 o Resvd is reserved and MUST be set to '0'. 266 Attributes MAY be included as ancillary route information. Each 267 Attribute is formatted in the same manner as specified for IPv6 ND 268 options in Section 4.6 of [RFC4861] and as shown in Figure 2: 270 0 1 2 3 271 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 272 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 273 | Type | Length | ... | 274 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 275 ~ ... ~ 276 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 278 Figure 2: RIO Attribute Format 280 This document defines the NULL Attribute with Type '0'. Other 281 Attribute Types are assigned through IANA action. 283 When Type is '0', Length MUST be set to the total number of 8-octet 284 blocks in the Attribute, and the Attribute body MUST include a 285 corresponding number of '0' octets. For example, for Lengths of 1, 286 2, 3, etc., the Attribute body includes 6, 14, 22, etc. '0' octets, 287 respectively. 289 Receivers ignore any NULL, unknown or malformed Attributes and 290 continue to process any other Attributes in the RIO that follow. 292 4.2. RIO Requirements 294 This specification updates [RFC4191] by allowing RIOs to appear in 295 any IPv6 ND messages with the following requirements: 297 o The RIOs of all IPv6 ND messages that conform to this 298 specification MUST set Ver to '01'. Any RIOs with Ver set to '00' 299 in RA messages are accepted as legacy RIOs that MUST conform to 300 the specification in [RFC4191]. Any RIOs in IPv6 ND messages that 301 encode any other value in the Ver field MUST be silently ignored. 303 o Redirect, NA and RA messages MUST NOT include RIOs with the S flag 304 set to '1'; any RIOs received in Redirect, NA and RA messages with 305 S set to '1' MUST be silently ignored. 307 o NS and RS messages MAY include some RIOs with S set to '1' and 308 others with S set to '0'. 310 o NA/RA responses to RIOs in NS/RS messages with S set to '1' MUST 311 include RIOs with the solicited route information and with S set 312 to '0'. (If the route information solicited by the NS/RS message 313 is incorrect or unrecognized, however, the RIO MUST be silently 314 ignored.) 316 o Asserted route information in any RIOs received with S set to '0' 317 SHOULD be considered as "unconfirmed" until the assertion can be 318 verified. Assertion verification can be through a trust anchor 319 such as a trusted on-link router, through a static routing table, 320 or through some other means outside the scope of this document. 321 Any route information that cannot be verified SHOULD be rejected. 323 The following sections present the classic redirection scenario 324 illustrating an exchange where a trusted on-link router is used to 325 verify RIO assertions. Other IPv6 ND messaging scenarios that can 326 employ some other means of verifying RIO assertions are also 327 acceptable. 329 4.3. Classic Redirection Scenario 331 In the classical redirection scenario there are three actors, namely 332 the Source, Router and Target as shown in Figure 3: 334 +-------------------+ 335 | | 336 | Router | 337 | | 338 +---------+---------+ 339 | 340 | 341 X---------+----------------+---------------+---------X 342 | Link | 343 | | 344 +---------+---------+ +----------+--------+ 345 | | | | 346 | Source | | Target | 347 | | | | 348 +-------------------+ +---------+---------+ 349 | 350 2001:db8::/N 351 | 352 X-+----+--+-------+-X 353 | | | 354 +--+ +--+ +--+ 355 |H1| |H2| .... |Hn| 356 +--+ +--+ +--+ 358 Figure 3: Classical Redirection Scenario 360 In addition, the Target may be a router that connects an arbitrarily- 361 complex set of IPv6 networks (e.g., as depicted by 2001:db8::/N in 362 the figure) with hosts H(i). 364 In this scenario, the Source initially has no route for 2001:db8::/N 365 and must send initial packets destined to correspondents H(i) via a 366 first-hop Router. Upon receiving the packets, the Router forwards 367 the packets to the Target and may also send a Redirect message back 368 to the Source with the Destination Address field set to the 369 destination of the packet that triggered the Redirect, the Target 370 Address field set to the target link-local address and with a Target 371 Link Layer Address Option (TLLAO) that includes the target link-layer 372 address. After receiving the message, the Source may begin sending 373 packets destined to H(i) directly to the Target, which will then 374 forward them to its connected networks. 376 This specification augments the classical Redirection scenario by 377 allowing the Router to include entire prefixes (e.g., 2001:db8::/N) 378 in RIOs in the Redirect message, and thereafter allowing the Source 379 to include RIOs in an NS message and the Target to include RIOs in 380 its NA response. The following sections present this "augmented" RIO 381 redirection scenario. 383 4.4. RIO Redirection Scenario 385 In the RIO redirection scenario, the Source sends initial packets via 386 the Router the same as in the classical scenario. When the Router 387 receives the packets, it searches its routing tables for a route that 388 is assigned to the Target and that covers the destination address of 389 the packet. The Router then includes the route in an RIO in a 390 Redirect message to send back to the Source. The Router sets the S 391 flag in the RIO to '0' to indicate that a prefix is being asserted. 393 When the Source receives the Redirect message, it prepares an NS 394 message that includes the route information received in the RIO from 395 the Redirect message and with S set to '1 to indicate that route 396 information is being solicited. At the same time, if the Source 397 needs to assert any route information to the Target, it includes the 398 information in RIOs with S set to '0'. The Source then sends the NS 399 message to the Target. 401 When the Target receives the NS message, it records any route 402 information in RIOs with S set to '0' as unconfirmed route 403 information for the Source pending verification. At the same time, 404 it determines whether the route information included in any RIOs with 405 S set to '1' matches one of its own routes. If so, the Target 406 includes the route information in an RIO with S set to '0' to return 407 in an NA message reply to the Source. 409 When the Source receives the NA message it can install any RIO 410 information that matches the Redirect RIOs in its routing table. The 411 following sections present more detailed specifications for the 412 Router, Source and Target. 414 4.4.1. Router Specification 416 When the Router receives a packet from the Source it searches its 417 routing table for a prefix that covers the destination address (e.g., 418 2001:db8::/N as depicted in Figure 1), where prefix could be 419 populated in the routing table during DHCPv6 Prefix Delegation 420 [RFC3633], via manual configuration, etc. If the next hop for the 421 prefix is on-link (i.e., a "Target" in the terms of [RFC4861]), the 422 Router then prepares a Redirect message with the Destination Address 423 field set to the packet's IPv6 destination address, with the Target 424 Address field set to the link-local address of the Target, with a 425 TLLAO set to the link-layer address of the Target, and with an RIO 426 that includes route information for the prefix with Route Lifetime, 427 Prf, and S set to 0. The Router then sends the Redirect message to 428 the Source (subject to rate limiting). 430 4.4.2. Source Specification 432 According to [RFC4861], a Source that receives a valid Redirect 433 message updates its destination cache per the Destination Address and 434 its neighbor cache per the Target Address. According to [RFC4191], 435 Sources can be classified as Type "A", "B" or "C" based on how they 436 process RIOs, where a Type "C" Source updates its routing table per 437 any RIO elements included in an RA message. Finally, according to 438 [RFC8028], a Type "C" Source operating on a Multi-Prefix Network with 439 multiple default routes can make source address selection decisions 440 based on information in its routing table decorated with information 441 derived from the source of the RIO element. 443 In light of these considerations, this document introduces a new Type 444 "D" behavior for Sources with the same behavior as a Type "C" Source, 445 but which also process RIO elements in other IPv6 ND messages. Type 446 "D" Sources process Redirect messages with RIO elements by first 447 verifying that the Prefix in the first RIO matches the Destination 448 Address. If the Destination Address does not match the Prefix, the 449 Source discards the Redirect message. Otherwise, the Source updates 450 its neighbor cache per the Target Address and its destination cache 451 per the Destination Address the same as for classical redirection. 452 Next, the Source MAY send an NS message to the Target containing an 453 RIO with the Prefix and Prefix Length and with S set to '1' to elicit 454 an NA response (at the same time, the Source MAY include RIOs with S 455 set to '0' if it needs to assert any route information to the 456 Target). 458 When the Type 'D' Source receives the solicited NA message from the 459 Target, if the NA includes an RIO with S set to '0' and with a Prefix 460 corresponding to the one received in the Redirect message, the Source 461 installs the route information in its routing table with the Target's 462 address as the next hop. (Note that the Prefix Length received in 463 the NA message MAY be different than the Prefix Length received in 464 the Redirect message. If the Prefix Length in the NA is the same or 465 longer, the Source accepts the Prefix as verified by the Router; if 466 the Prefix Length is shorter, the Source considers the Prefix as 467 unconfirmed.) 469 After the Source installs the route information in its routing table, 470 it MAY begin sending packets with destination addresses that match 471 the Prefix directly to the Target Instead of sending them to the 472 Router. The Source SHOULD decrement the Route Lifetime and MAY send 473 new NS messages to receive a fresh Route Lifetime (if the Route 474 Lifetime decrements to 0, the Source instead deletes the route 475 information from its routing table). The Source MAY furthermore 476 delete the route information at any time and again allow packets to 477 flow through the Router which may send a fresh Redirect. The Source 478 SHOULD then again test the route by performing an NS/NA exchange with 479 the Target the same as described above. 481 After updating its routing table, the Source MAY receive an 482 unsolicited NA message from the Target with an RIO with new route 483 information. If the RIO Prefix is in its routing table, and if the 484 RIO Route Lifetime value is 0, the Source deletes the corresponding 485 route. 487 After updating its routing table, the Source MAY subsequently receive 488 a Destination Unreachable message from the Target with Code '0' ("no 489 route to destination"). If so, the Source again deletes the 490 corresponding route information from its routing table. 492 4.4.3. Target Specification 494 When the Target receives an NS message from the Source containing an 495 RIO with S set to '1', it examines the Prefix and Prefix Length to 496 see if it matches one of the prefixes in its routing table. If so, 497 the Target prepares an NA message with an RIO including a Prefix and 498 Prefix Length, any necessary route information, and with S set to 499 '0'. The Target then sends the NA message back to the Source. 501 If the NS included any RIO options with S set to '0', the Target 502 SHOULD employ a suitable means to verify the asserted route 503 information, and SHOULD reject any route information that cannot be 504 verified. 506 At some later time, the Target may either alter or deprecate one of 507 its routes. If the Target has asserted route information in RIOs to 508 one or more Sources, the Target SHOULD send (unsolicited) NA messages 509 with RIOs that assert new route information to alter the route (where 510 a new Route Lifetime value of '0' deprecates the route). If the 511 Target receives a packet with a destination addresses for which there 512 is no matching route for one of its downstream-attached networks, the 513 Target sends a Destination Unreachable message to the Source with 514 Code '0' ("no route to destination"), subject to rate limiting. 516 4.5. Operation Without Redirects 518 If the Source has some way to determine the Target's link-local 519 address without receiving a Redirect message from the Router, the 520 Source MAY send an NS message with an RIO directly to the Target with 521 S set to 1, Prefix set to the destination address of an IPv6 packet, 522 Prefix Length set to 128 and all other route information is set to 0. 524 When the Target receives the NS message, it prepares an NA response 525 with an RIO that includes route information for one of its prefixes 526 that covers the destination address. The Target then sends the NA 527 message to the Source. 529 When the Source receives the NA message, it SHOULD consider the route 530 information asserted in the RIO as unconfirmed until it can verify 531 the Target's claim (i.e., as described in Section 4.2). 533 Any node may also assert route information at any time by sending 534 unsolicited IPv6 ND messages with RIOs with S set to 0. Recipients 535 of such messages SHOULD consider the route information as unconfirmed 536 until the information can be verified. 538 4.6. Multiple RIOs 540 If a Redirect includes multiple RIOs, the Source only checks the 541 destination address for a match against the Prefix in the first RIO. 543 If an NS/RS message includes multiple RIOs with S set to '1', the 544 neighbor only responds to those RIOs which match entries in its 545 routing table. 547 If an NS/NA/RS/RA message includes multiple RIOs with S set to '0', 548 the neighbor considers all of the route information as unconfirmed 549 until the information can be verified. 551 4.7. Multicast 553 Nodes MAY send IPv6 ND messages with RIOs to link-scoped multicast 554 destination addresses including All Nodes, All Routers, and 555 Solicited-Node multicast (see: [RFC4291]. As an example, a node 556 could send unsolicited NA messages to the All Nodes multicast address 557 to alter or deprecate a route it had previously asserted to one or 558 more neighbors. 560 Nodes MUST be conservative in their use of multicast IPv6 ND 561 messaging to avoid unnecessarily disturbing other nodes on the link. 563 4.8. Backward Compatibility 565 [RFC4191] only allows RIOs to appear in RA messages, and requires 566 that the bits corresponding to the Ver field in this specification be 567 set to '00'. In cases where legacy Type 'C' hosts may be on the 568 link, implementation of this protocol SHOULD only send multicast RAs 569 with RIOs formatted per [RFC4191]. RA responses to RS messages with 570 RIOs formatted per this specificaiton SHOULD be sent as unicast and 571 SHOULD include RIOs formatted per this specifcation. 573 4.9. Why NS/NA? 575 Since [RFC4191] already specifies the inclusion of RIOs in RA 576 messages, a natural question is why use NS/NA instead of RS/RA? 578 First, NS/NA exchanges used by the IPv6 Neighbor Unreachability 579 Detection (NUD) procedure are unicast-based whereas RA responses to 580 RS messages are typically sent as multicast. Since this mechanism 581 must support unicast operation, the use of unicast exchanges is 582 required. 584 Second, the IPv6 ND specification places restrictions on minimum 585 delays between RA messages. Since this mechanism expects an 586 immediate advertisement from the Target in response to the Source's 587 solicitation, only the NS/NA exchange can satisfy this property. 589 Third, the RA message is the "swiss army knife" of the IPv6 ND 590 protocol. RA messages carry numerous configuration parameters for 591 the link, including Cur Hop Limit, M/O flags, Router Lifetime, 592 Reachable Time, Retrans Time, Prefix Information Options, MTU 593 options, etc. The Target must not advertise any of this information 594 to the soliciting Source. 596 Fourth, RIOs in legacy RA messages cannot encode attributes and 597 therefore may be limited in the route information they can carry. 599 Finally, operators are deeply concerned about the security of RA 600 messages - so much so that they deploy link security mechanisms that 601 drop RA messages originating from nodes claiming to be an 602 authoritative router for the link [RFC6105]. 604 5. Implementation Status 606 The IPv6 ND functions and RIOs are widely deployed in IPv6 607 implementations, however these implementations do not currently 608 include RIOs in IPv6 ND messages other than RAs. 610 An experimental implementation of [RFC6706] exists, and demonstrates 611 how the Redirect function can be used to carry route information. 613 6. IANA Considerations 615 IANA is instructed to create a registry for "RIO Attributes" as 616 discussed in Section 4.1. The registry includes the following 617 initial entry: 619 0 - the NULL Attribute [draft-templin-6man-rio-redirect] 621 Other Attribute types are defined through standards action or expert 622 review. 624 7. Security Considerations 626 The Redirect message validation rules in Section 8.1 of [RFC4861] 627 require recipients to verify that the IP source address of the 628 Redirect is the same as the current first-hop router for the 629 specified ICMP Destination Address. Recipients therefore naturally 630 reject any Redirect message with an incorrect source address. 632 Other security considerations for IPv6 ND messages that include RIOs 633 are the same as specified in Section 11 of [RFC4861]. Namely, the 634 protocol must take measures to secure IPv6 ND messages on links where 635 spoofing attacks are possible. 637 A spoofed ND message containing no RIOs could cause corruption in the 638 recipient's destination cache, while a spoofed ND message containing 639 RIOs could corrupt the host's routing tables. While the latter would 640 seem to be a more onerous result, the possibility for corruption is 641 unacceptable in either case. 643 "IPv6 ND Trust Models and Threats" [RFC3756] discusses spoofing 644 attacks, and states that: "This attack is not a concern if access to 645 the link is restricted to trusted nodes". "SEcure Neighbor Discovery 646 (SEND)" [RFC3971] provides one possible mitigation for other cases. 647 In some scenarios, it may be sufficient to include only the Timestamp 648 and Nonce options defined for SEND without implementing other aspects 649 of the protocol. 651 "IPv6 Router Advertisement Guard" [RFC6105] ("RA Guard") describes a 652 layer-2 filtering technique intended for network operators to use in 653 protecting hosts from receiving RA messages sent by nodes that are 654 not among the set of routers regarded as legitimate by the network 655 operator. 657 Nodes must have some form of trust basis for knowing that the sender 658 of an ND message is authoritative for the prefixes it asserts in 659 RIOs. For example, when an NS/NA exchange is triggered by the 660 receipt of a Redirect, the soliciting node can verify that the RIOs 661 in the NA message match the ones it received in the Redirect message 662 (which originally came from a trusted router). 664 8. Acknowledgements 666 Joe Touch suggested a standalone draft to document this approach in 667 discussions on the intarea list. The work was subsequently 668 transferred to the 6man list, where the following individuals 669 provided valuable feedback: Mikael Abrahamsson, Zied Bouziri, Brian 670 Carpenter, Steinar Haug, Christian Huitema, Tatuya Jinmei, Tomoyuki 671 Sahara. 673 Discussion with colleagues during the "bits-and-bites" session at 674 IETF98 helped shape this document. Those colleagues are gratefully 675 acknowledged for their contributions. 677 This work was sponsored through several ongoing initiatives, 678 including 1) the NASA Safe Autonomous Systems Operation (SASO) 679 program under NASA contract number NNA16BD84C, 2) the FAA SE2025 680 contract number DTFAWA-15-D-00030, 3) the Boeing Information 681 Technology (BIT) MobileNet program, and 4) the Boeing Research & 682 Technology (BR&T) enterprise autonomy program. 684 9. References 686 9.1. Normative References 688 [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, 689 DOI 10.17487/RFC0791, September 1981, 690 . 692 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 693 Requirement Levels", BCP 14, RFC 2119, 694 DOI 10.17487/RFC2119, March 1997, 695 . 697 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 698 (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, 699 December 1998, . 701 [RFC4191] Draves, R. and D. Thaler, "Default Router Preferences and 702 More-Specific Routes", RFC 4191, DOI 10.17487/RFC4191, 703 November 2005, . 705 [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet 706 Control Message Protocol (ICMPv6) for the Internet 707 Protocol Version 6 (IPv6) Specification", STD 89, 708 RFC 4443, DOI 10.17487/RFC4443, March 2006, 709 . 711 [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, 712 "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, 713 DOI 10.17487/RFC4861, September 2007, 714 . 716 9.2. Informative References 718 [RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic 719 Host Configuration Protocol (DHCP) version 6", RFC 3633, 720 DOI 10.17487/RFC3633, December 2003, 721 . 723 [RFC3756] Nikander, P., Ed., Kempf, J., and E. Nordmark, "IPv6 724 Neighbor Discovery (ND) Trust Models and Threats", 725 RFC 3756, DOI 10.17487/RFC3756, May 2004, 726 . 728 [RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, 729 "SEcure Neighbor Discovery (SEND)", RFC 3971, 730 DOI 10.17487/RFC3971, March 2005, 731 . 733 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 734 Architecture", RFC 4291, DOI 10.17487/RFC4291, February 735 2006, . 737 [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. 738 Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, 739 DOI 10.17487/RFC6105, February 2011, 740 . 742 [RFC6706] Templin, F., Ed., "Asymmetric Extended Route Optimization 743 (AERO)", RFC 6706, DOI 10.17487/RFC6706, August 2012, 744 . 746 [RFC7084] Singh, H., Beebee, W., Donley, C., and B. Stark, "Basic 747 Requirements for IPv6 Customer Edge Routers", RFC 7084, 748 DOI 10.17487/RFC7084, November 2013, 749 . 751 [RFC7368] Chown, T., Ed., Arkko, J., Brandt, A., Troan, O., and J. 752 Weil, "IPv6 Home Networking Architecture Principles", 753 RFC 7368, DOI 10.17487/RFC7368, October 2014, 754 . 756 [RFC7934] Colitti, L., Cerf, V., Cheshire, S., and D. Schinazi, 757 "Host Address Availability Recommendations", BCP 204, 758 RFC 7934, DOI 10.17487/RFC7934, July 2016, 759 . 761 [RFC8028] Baker, F. and B. Carpenter, "First-Hop Router Selection by 762 Hosts in a Multi-Prefix Network", RFC 8028, 763 DOI 10.17487/RFC8028, November 2016, 764 . 766 Appendix A. Link-layer Address Changes 768 Type "D" hosts send unsolicited NAs to announce link-layer address 769 changes per standard neighbor discovery [RFC4861]. Link-layer 770 address changes may be due to localized factors such as hot-swap of 771 an interface card, but could also occur during movement to a new 772 point of attachment on the same link. 774 Appendix B. Interfaces with Multiple Link-Layer Addresses 776 Type "D" host interfaces may have multiple connections to the link; 777 each with its own link-layer address. Type "D" nodes can therefore 778 include multiple link-layer address options in IPv6 ND messages. 779 Neighbors that receive these messages can cache and select link-layer 780 addresses in a manner outside the scope of this specification. 782 Authors' Addresses 784 Fred L. Templin (editor) 785 Boeing Research & Technology 786 P.O. Box 3707 787 Seattle, WA 98124 788 USA 790 Email: fltemplin@acm.org 791 James Woodyatt 792 Google 793 3400 Hillview Ave 794 Palo Alto, CA 94304 795 USA 797 Email: jhw@google.com