idnits 2.17.1 draft-ietf-v6ops-v6onbydefault-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 261: '... [HOSTREQS] document, in section 4.2.3.9., states that TCP MUST NOT...' RFC 2119 keyword, line 265: '...ute failed), and SHOULD abort connecti...' Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year -- 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 (June 2003) is 7619 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) ** Obsolete normative reference: RFC 3484 (ref. 'ADDRSEL') (Obsoleted by RFC 6724) ** Obsolete normative reference: RFC 2461 (ref. 'ND') (Obsoleted by RFC 4861) -- Obsolete informational reference (is this intentional?): RFC 2462 (ref. 'AUTOCONF') (Obsoleted by RFC 4862) Summary: 5 errors (**), 0 flaws (~~), 2 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group S. Roy 3 Internet-Draft A. Durand 4 Expires: November 30, 2003 J. Paugh 5 Sun Microsystems, Inc. 6 June 2003 8 Dual Stack IPv6 on by Default 9 draft-ietf-v6ops-v6onbydefault-00.txt 11 Status of this Memo 13 This document is an Internet-Draft and is in full conformance with 14 all provisions of Section 10 of RFC2026. 16 Internet-Drafts are working documents of the Internet Engineering 17 Task Force (IETF), its areas, and its working groups. Note that other 18 groups may also distribute working documents as Internet-Drafts. 20 Internet-Drafts are draft documents valid for a maximum of six months 21 and may be updated, replaced, or obsoleted by other documents at any 22 time. It is inappropriate to use Internet-Drafts as reference 23 material or to cite them other than as "work in progress." 25 The list of current Internet-Drafts can be accessed at http:// 26 www.ietf.org/ietf/1id-abstracts.txt. 28 The list of Internet-Draft Shadow Directories can be accessed at 29 http://www.ietf.org/shadow.html. 31 This Internet-Draft will expire on November 30, 2003. 33 Copyright Notice 35 Copyright (C) The Internet Society (2003). All Rights Reserved. 37 Abstract 39 This document discusses problems that can occur when dual stack nodes 40 that have IPv6 enabled by default are deployed in IPv4 or mixed IPv4 41 and IPv6 environments. The problems include application connection 42 delays, poor connectivity, and network security. Its purpose is to 43 raise awareness of these problems so that they can be fixed or worked 44 around. 46 Table of Contents 48 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 49 2. No IPv6 Router . . . . . . . . . . . . . . . . . . . . . . . 4 50 2.1 Problems with Default Address Selection for IPv6 . . . . . . 4 51 2.2 Neighbor Discovery's On-Link Assumption Considered 52 Harmful . . . . . . . . . . . . . . . . . . . . . . . . . . 5 53 2.2.1 Other Problems with the On-Link Assumption . . . . . . . . . 6 54 2.3 Transport Protocol Robustness . . . . . . . . . . . . . . . 7 55 3. Other Problematic Scenarios . . . . . . . . . . . . . . . . 9 56 3.1 IPv6 Network of Smaller Scope . . . . . . . . . . . . . . . 9 57 3.1.1 Alleviating the Scope Problem . . . . . . . . . . . . . . . 9 58 3.2 Poor IPv6 Network Performance . . . . . . . . . . . . . . . 9 59 3.2.1 Dealing with Poor IPv6 Network Performance . . . . . . . . . 10 60 3.3 Security . . . . . . . . . . . . . . . . . . . . . . . . . . 10 61 3.3.1 Mitigating Security Risks . . . . . . . . . . . . . . . . . 11 62 4. Application Robustness . . . . . . . . . . . . . . . . . . . 12 63 5. Security Considerations . . . . . . . . . . . . . . . . . . 13 64 Normative References . . . . . . . . . . . . . . . . . . . . 14 65 Informative References . . . . . . . . . . . . . . . . . . . 15 66 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 15 67 A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 16 68 Intellectual Property and Copyright Statements . . . . . . . 17 70 1. Introduction 72 This document specifically addresses operating system implementations 73 that implement the dual stack IPv6 model, and would ship with IPv6 74 enabled by default. It addresses the case where such a system is 75 installed and placed in an IPv4 only or mixed IPv4 and IPv6 76 environment, and documents potential problems that users on such 77 systems could experience if the IPv6 connectivity is non-existent or 78 sub-optimal. 80 It begins in Section 2 by examining problems within IPv6 81 implementations that defeat the destination address selection 82 mechanism defined in [ADDRSEL] and contribute to poor IPv6 83 connectivity. Starting with Section 3 it then examines other issues 84 that network software engineers and network and systems 85 administrators should be aware of when deploying dual stack systems 86 with IPv6 enabled. 88 2. No IPv6 Router 90 Consider a scenario in which a dual stack system has IPv6 enabled and 91 placed on a link with no IPv6 routers. The system is using IPv6 92 Stateless Address Autoconfiguration [AUTOCONF], so it only has a 93 link-local IPv6 address configured. It also has a single IPv4 94 address that happens to be a private address as defined in 95 [PRIVADDR]. 97 An application on this system is trying to communicate with a 98 destination whose name resolves to public and global IPv4 and IPv6 99 addresses. The application uses an address resolution API that 100 implements the destination address selection mechanism described in 101 Default Address Selection for IPv6 [ADDRSEL]. The application will 102 attempt to connect to each address returned in order until one 103 succeeds. Since the system has no off-link IPv6 routes, the optimal 104 scenario would be if the IPv4 addresses returned were ordered before 105 the IPv6 addresses. The following sections describe where things can 106 go wrong with this scenario. 108 2.1 Problems with Default Address Selection for IPv6 110 The Default Address Selection for IPv6 [ADDRSEL] destination address 111 selection mechanism could save the application a few useless 112 connection attempts by placing the IPv4 addresses in front of the 113 IPv6 addresses. This would be desired since all IPv6 destinations in 114 this scenario are unreachable (there's no route to them), and the 115 system's only IPv6 source address is inadequate to communicate with 116 off-link destinations even if it did have an off-link route. 118 Let's examine how the destination address selection mechanism behaves 119 in the face of this scenario when given one IPv4 destination and one 120 IPv6 destination. 122 The first rule, "Avoid unusable destinations", could prefer the IPv4 123 destination over the IPv6 destination, but only if the IPv6 124 destination is determined to be unreachable. The unreachability 125 determination for a destination as it pertains to this rule is an 126 implementation detail. One implementable method is to do a simple 127 forwarding table lookup on the destination, and to deem the 128 destination as reachable if the lookup succeeds. The Neighbor 129 Discovery on-link assumption mentioned in Section 2.2 makes this 130 method somewhat irrelevant, however, as an implementation of the 131 assumption could simply be to insert an IPv6 default on-link route 132 into the system's forwarding table when the default router list is 133 empty. The side-effect is that the rule would always determine that 134 all IPv6 destinations are reachable. Therefore, this rule will not 135 necessarily prefer one destination over the other. 137 The second rule, "Prefer matching scope", could prefer the IPv4 138 destination over the IPv6 destination, but only if the IPv4 139 destination's scope matches the scope of the system's IPv4 source 140 address. Since [ADDRSEL] considers private addresses (as defined in 141 [PRIVADDR]) of site-local scope, then this rule will not prefer 142 either destination over the other. The link-local IPv6 source 143 doesn't match the global IPv6 destination, and the site-local IPv4 144 source doesn't match the global IPv4 destination. The tie-breaking 145 rule in this case is rule 6, "Prefer higher precedence". Since IPv6 146 destinations are of higher precedence than IPv4 destinations in the 147 default policy table, the IPv6 destination will be preferred. 149 The solution in this case could be to add a new rule after rule 2 150 (rule 2.5) that avoids non-link-local IPv6 destinations whose source 151 addresses are link-local. Of course, if the host is manually 152 assigned a global IPv6 source address, then rule 2 will automatically 153 prefer the IPv6 destination, and there is no fix other than to make 154 sure rule 1 considers IPv6 destinations unreachable in this scenario. 156 Fixing the destination address selection mechanism by adding such a 157 rule is only a mitigating factor if applications use standard name 158 resolution API's that implement this mechanism, and these 159 applications try addresses in the order returned. This may not be an 160 acceptable assumption in some cases, as there are applications that 161 use hard coded addresses and address search orders (DNS resolver is 162 one example), and/or literal addresses passed in from the user. Such 163 applications will obviously be subject to whatever connection delays 164 are associated with attempting a connection to an unreachable 165 destination. This is discussed in more detail in the next few 166 sections. 168 2.2 Neighbor Discovery's On-Link Assumption Considered Harmful 170 Let's assume that the application described in Section 2 is 171 attempting a connection to an IPv6 address first, either because the 172 destination address selection mechanism described in Section 2.1 173 returned the addresses in that order, or because the application 174 isn't trying the addresses in the order returned. Regardless, the 175 user expects that the application will quickly connect to the 176 destination. It is therefore important that the system quickly 177 determine that the IPv6 destination is unreachable so that the 178 application can try the IPv4 destination. 180 Neighbor Discovery's [ND] conceptual sending algorithm dictates that 181 when sending a packet to a destination, if a host's default router 182 list is empty, then the host assumes that the destination is on-link. 184 For an IPv6 enabled host deployed on a network that has no IPv6 185 routers as is the case in this scenario, the result is that 186 link-layer address resolution must be performed on all IPv6 addresses 187 to which the host sends packets. The Application will not receive 188 acknowledgment of the unreachability of destinations that are not 189 on-link until at least address resolution has failed, which is no 190 less than three seconds (MAX_MULTICAST_SOLICIT * RETRANS_TIMER), plus 191 any transport layer connection timeouts which could be minutes in the 192 case of TCP. The delay with respect to TCP is discussed later in 193 Section 2.3. 195 On a network that has no IPv6 routing and no IPv6 neighbors, making 196 the assumption that every IPv6 destination is on-link will be a 197 costly and incorrect assumption. If an application has a list of 198 addresses associated with a destination and the first 15 are IPv6 199 addresses, then the application won't be able to successfully send a 200 packet to the destination until the attempts to resolve each IPv6 201 address have failed (45 seconds), which could be compounded by any 202 transport timeouts associated with each connection attempt. 204 If IPv6 hosts don't assume that destinations are on-link as described 205 above, then communication with destinations that are not on-link and 206 unreachable will immediately fail. The IPv6 implementation should be 207 able to immediately notify applications that it has no route to such 208 IPv6 destinations, and applications won't waste time waiting for 209 address resolution to fail. 211 If hosts need to communicate with on-link destinations, then then 212 they need to be explicitly configured to have on-link routes for 213 those destinations. 215 2.2.1 Other Problems with the On-Link Assumption 217 The on-link assumption is problematic in ways not directly related to 218 the scenario described, but they should still be briefly mentioned 219 here. 221 One problem is that default routes are not special. The on-link 222 assumption as stated in [ND] would have a host assume that all 223 destinations are on-link when its default router list is empty. 224 Clearly it shouldn't make this assumption if it has an off-link route 225 that covers the destination and that route isn't a default route. 226 The absence of a default route does not mean that destinations are 227 not reachable through more specific routes. 229 Another problem is that the on-link assumption behavior is undefined 230 on multi-homed hosts. When such a host has no default routers and it 231 is trying to reach a destination to which it has no route, should it 232 try NUD on all interfaces at once? Should it simply realize that the 233 destination is unreachable? The latter is the simplest solution. 234 Determining that a destination is unreachable when there is no route 235 to that destination is the simple solution for all cases, not just 236 the multi-homed case. 238 2.3 Transport Protocol Robustness 240 Making the same set of assumptions as Section 2.2, regardless of how 241 long the network layer takes to determine that the IPv6 destination 242 is unreachable, the delay associated with a connection attempt to an 243 unreachable destination can be compounded by the transport layer. In 244 order for our application to quickly fail from an unreachable address 245 to a potentially reachable one, the transport layer should notify the 246 application by failing a connection attempt, or passing ICMPv6 errors 247 up to the application, etc... 249 In the case of a socket application attempting a connection via TCP, 250 it would be unreasonable for the connect() function to block even 251 after the system has received notification that the address is 252 unreachable via an ICMPv6 Destination Unreachable message. Therefore, 253 TCP should abort connections in SYN-SENT or SYN-RECEIVED state when 254 it receives an ICMPv6 Destination Unreachable message. This helps the 255 cases mentioned in Section 2 in which a node has no default routers 256 and NUD fails for destinations assumed to be on-link, and when 257 firewalls or other systems that enforce scope boundaries send such 258 ICMPv6 errors as described in Section 3.1 and Section 3.3. 260 It should be noted that the Requirements for Internet Hosts 261 [HOSTREQS] document, in section 4.2.3.9., states that TCP MUST NOT 262 abort connections when receiving ICMP Destination Unreachable 263 messages that indicate "soft errors", where soft errors are defined 264 as ICMP codes 0 (network unreachable), 1 (host unreachable), and 5 265 (source route failed), and SHOULD abort connections upon receiving 266 the other codes (which are considered "hard errors"). ICMPv6 didn't 267 exist when that document was written, but one could extrapolate the 268 concept of soft errors to ICMPv6 Type 1 codes 0 (no route to 269 destination) and 3 (address unreachable), and hard errors to the 270 other codes. 272 When [HOSTREQS] was written, hosts were usually assigned a single 273 address, and applications would mostly only try one address when 274 establishing communication with a destination. Not aborting a 275 connection was a sane thing to do if re-trying a single address was a 276 better alternative over quitting the application altogether. With 277 IPv6, and especially on dual stack systems, destinations are often 278 assigned multiple addresses (at least one IPv4 and one IPv6 address), 279 and applications iterate through destination addresses when 280 attempting connections. Since soft errors conditions are those that 281 would entice an application to continue iterating to another address, 282 TCP shouldn't make the distinction between ICMPv6 soft errors and 283 hard errors when in SYN-SENT or SYN-RECEIVED state. It should abort a 284 connection in those states when receiving any ICMPv6 Destination 285 Unreachable message. It should make this distinction when a 286 connection is in any other state. 288 Many TCP implementations already behave this way, but others do not. 289 This should be noted as a best current practice in this case. 291 3. Other Problematic Scenarios 293 This section describes problems that could arise for a dual stack 294 system with IPv6 enabled when placed on a network with IPv6 295 connectivity. 297 3.1 IPv6 Network of Smaller Scope 299 A network that has a smaller scope of connectivity for IPv6 as it 300 does for IPv4 could be a problem in some cases. If applications have 301 access to name to address mapping information that is of greater 302 scope than the connectivity to those addresses, there is obvious 303 potential for suboptimal network performance. Hosts will attempt to 304 communicate with IPv6 destinations that are outside the scope of the 305 IPv6 routing, and depending on how the scope boundaries are enforced, 306 applications may not be notified that packets are being dropped at 307 the scope boundary. 309 If applications aren't immediately notified of the lack of 310 reachability to IPv6 destinations, then they aren't able to 311 efficiently fall back to IPv4. They then have to rely on transport 312 layer timeouts which can be minutes in the case of TCP. 314 An example of such a network is an enterprise network that has both 315 IPv4 and IPv6 routing within the enterprise and has a firewall 316 configured to allow some IPv4 communication, but no IPv6 317 communication. 319 3.1.1 Alleviating the Scope Problem 321 To allow applications to correctly fall back to IPv4 when IPv6 322 packets are destined beyond their allowed scope, the devices 323 enforcing the scope boundary should send ICMPv6 Destination 324 Unreachable messages back to senders of such packets. The sender's 325 transport layer should act on these errors as described in Section 326 2.3. 328 3.2 Poor IPv6 Network Performance 330 By default in dual stack nodes, applications will try IPv6 331 destinations first. If the IPv6 connectivity to those destinations 332 is poor while the IPv4 connectivity is better (i.e., the IPv6 traffic 333 experiences higher latency, lower throughput, or more lost packets 334 than IPv4 traffic), applications will still communicate over IPv6 at 335 the expense of network performance. There is no information 336 available to applications in this case to advise them to try another 337 destination address. 339 An example of such a situation is a node which obtains IPv4 340 connectivity natively through an ISP, but whose IPv6 connectivity is 341 obtained through a configured tunnel whose other endpoint is 342 topologically such that most IPv6 communication is done through 343 triangular routes. Operational experience on the 6bone shows that 344 IPv6 RTT's are poor in such situations. 346 3.2.1 Dealing with Poor IPv6 Network Performance 348 There are few options from the end node's perspective. One is to 349 configure each node to prefer IPv4 destinations over IPv6. If hosts 350 implement the Default Address Selection for IPv6 [ADDRSEL] policy 351 table, IPv4 mapped addresses could be assigned higher precedence, 352 resulting in applications trying IPv4 for communication first. This 353 has the negative side-effect that these nodes will almost never use 354 IPv6 unless the only address published in the DNS for a given name is 355 IPv6, presumably because of this phenomenon. 357 Disabling IPv6 on the end nodes is another solution. The idea would 358 be that enabling IPv6 on dual stack nodes is a manual process that 359 would be done when the administrator knows that IPv6 connectivity is 360 adequate. 362 3.3 Security 364 Enabling IPv6 on a host implies that the services on the host may be 365 open to IPv6 communication. If the service itself is insecure and 366 depends on security policy enforced somewhere else on the network 367 (such as from a firewall), then there is potential for new attacks 368 against the service. 370 A firewall, for example, may not be enforcing the same policy for 371 IPv4 as for IPv6 traffic. One possibility is that the firewall could 372 have more relaxed policy for IPv6, perhaps by letting all IPv6 373 packets pass through, or by letting all IPv4 protocol 41 packets pass 374 through. In this scenario, the dual stack hosts within the protected 375 network could be subject to different attacks than for IPv4. 377 Even if a firewall has a stricter policy or identical policy for IPv6 378 traffic than for IPv4 (the extreme case being that it drops all IPv6 379 traffic), IPv6 packets could go through the network untouched if 380 tunneled over a transport layer. This could open the host to direct 381 IPv6 attacks. 383 A similar problem could exist for VPN software. A VPN could protect 384 all IPv4 packets but drop all others onto the local subnet 385 unprotected. At least one widely used VPN behaves this way. This is 386 problematic on a dual stack host that has IPv6 enabled on its local 387 network. It establishes its VPN link and attempts to communicate 388 with destinations that resolve to both IPv4 and IPv6 addresses. The 389 destination address selection mechanism prefers the IPv6 destination 390 so the application sends packets to an IPv6 address. The VPN doesn't 391 know about IPv6, so instead of protecting the packets and sending 392 them to the remote end of the VPN, it passes such packets in the 393 clear to the local network. 395 3.3.1 Mitigating Security Risks 397 Establishing a security policy that is the same for IPv4 and IPv6 398 would help mitigate this risk. 400 There is still a risk that IPv6 packets could be tunneled over a 401 transport layer such as UDP, implicitly bypassing security policy. 402 Some more complex mechanism could be implemented to apply the correct 403 policy to such packets. This could be easy to do if tunnel endpoints 404 are co-located with a firewall, but more difficult if internal nodes 405 do their own IPv6 tunneling. 407 4. Application Robustness 409 Enabling IPv6 on a dual stack node is only useful if applications 410 that support IPv6 on that node properly cycle through addresses 411 returned from name lookups and fall back to IPv4 when IPv6 412 communication fails. Simply cycling through the list of addresses 413 returned from a name lookup when attempting connections works in most 414 cases for most applications, but there are still cases where that's 415 not enough. Applications also need to be aware that the fact that a 416 dual stack destination's IPv6 address is published in the DNS does 417 not necessarily imply that all services on that destination function 418 over IPv6. 420 One example is an application that resolves a destination name to a 421 list of addresses with the intent to contact multiple services at 422 that destination (i.e., http and IMAP). The application tries to 423 contact the first service via the first IPv6 address in the list and 424 succeeds. The success of the connection results in the application 425 throwing away the list of addresses it was given by the name lookup 426 and remembering this single IPv6 address as the usable address for 427 the destination. The second service it tries, however, is only 428 implemented for IPv4. The application tries to communicate to the 429 second service using the same IPv6 address, the connection fails, and 430 no fall back to IPv4 occurs because the application is outside of the 431 context of cycling through the list of addresses returned from the 432 name lookup. 434 Applications should not assume that because a service is reachable at 435 an IPv6 address, that other services at that destination are also 436 reachable via that IPv6 address. 438 5. Security Considerations 440 This document raises security concerns in Section 3.3. 442 Normative References 444 [ADDRSEL] Draves, R., "Default Address Selection for Internet 445 Protocol version 6 (IPv6)", RFC 3484, February 2003. 447 [ND] Narten, T., Nordmark, E. and W. Simpson, "Neighbor 448 Discovery for IP Version 6 (IPv6)", RFC 2461, December 449 1998. 451 Informative References 453 [AUTOCONF] 454 Thomson, S. and T. Narten, "IPv6 Stateless Address 455 Autoconfiguration", RFC 2462, December 1998. 457 [HOSTREQS] 458 Braden, R., "Requirements for Internet Hosts -- 459 Communication Layers", STD 3, RFC 1122, October 1989. 461 [PRIVADDR] 462 Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. 463 and E. Lear, "Address Allocation for Private Internets", 464 BCP 5, RFC 1918, February 1996. 466 Authors' Addresses 468 Sebastien Roy 469 Sun Microsystems, Inc. 470 1 Network Drive 471 UBUR02-212 472 Burlington, MA 01801 474 EMail: sebastien.roy@sun.com 476 Alain Durand 477 Sun Microsystems, Inc. 478 17 Network Circle 479 UMPK17-202 480 Menlo Park, CA 94025 482 EMail: alain.durand@sun.com 484 James Paugh 485 Sun Microsystems, Inc. 486 17 Network Circle 487 UMPK17-202 488 Menlo Park, CA 94025 490 EMail: james.paugh@sun.com 492 Appendix A. Acknowledgments 494 The authors gratefully acknowledge the contributions of Jim Bound, 495 Mika Liljeberg, Erik Nordmark, Pekka Savola, and Ronald van der Pol. 497 Intellectual Property Statement 499 The IETF takes no position regarding the validity or scope of any 500 intellectual property or other rights that might be claimed to 501 pertain to the implementation or use of the technology described in 502 this document or the extent to which any license under such rights 503 might or might not be available; neither does it represent that it 504 has made any effort to identify any such rights. Information on the 505 IETF's procedures with respect to rights in standards-track and 506 standards-related documentation can be found in BCP-11. Copies of 507 claims of rights made available for publication and any assurances of 508 licenses to be made available, or the result of an attempt made to 509 obtain a general license or permission for the use of such 510 proprietary rights by implementors or users of this specification can 511 be obtained from the IETF Secretariat. 513 The IETF invites any interested party to bring to its attention any 514 copyrights, patents or patent applications, or other proprietary 515 rights which may cover technology that may be required to practice 516 this standard. Please address the information to the IETF Executive 517 Director. 519 Full Copyright Statement 521 Copyright (C) The Internet Society (2003). All Rights Reserved. 523 This document and translations of it may be copied and furnished to 524 others, and derivative works that comment on or otherwise explain it 525 or assist in its implementation may be prepared, copied, published 526 and distributed, in whole or in part, without restriction of any 527 kind, provided that the above copyright notice and this paragraph are 528 included on all such copies and derivative works. However, this 529 document itself may not be modified in any way, such as by removing 530 the copyright notice or references to the Internet Society or other 531 Internet organizations, except as needed for the purpose of 532 developing Internet standards in which case the procedures for 533 copyrights defined in the Internet Standards process must be 534 followed, or as required to translate it into languages other than 535 English. 537 The limited permissions granted above are perpetual and will not be 538 revoked by the Internet Society or its successors or assignees. 540 This document and the information contained herein is provided on an 541 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 542 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 543 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 544 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 545 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 547 Acknowledgment 549 Funding for the RFC Editor function is currently provided by the 550 Internet Society.