diff options
Diffstat (limited to 'doc/rfc/rfc3927.txt')
| -rw-r--r-- | doc/rfc/rfc3927.txt | 1851 | 
1 files changed, 1851 insertions, 0 deletions
| diff --git a/doc/rfc/rfc3927.txt b/doc/rfc/rfc3927.txt new file mode 100644 index 0000000..466b9eb --- /dev/null +++ b/doc/rfc/rfc3927.txt @@ -0,0 +1,1851 @@ + + + + + + +Network Working Group                                        S. Cheshire +Request for Comments: 3927                                Apple Computer +Category: Standards Track                                       B. Aboba +                                                   Microsoft Corporation +                                                              E. Guttman +                                                        Sun Microsystems +                                                                May 2005 + + +           Dynamic Configuration of IPv4 Link-Local Addresses + +Status of This Memo + +   This document specifies an Internet standards track protocol for the +   Internet community, and requests discussion and suggestions for +   improvements.  Please refer to the current edition of the "Internet +   Official Protocol Standards" (STD 1) for the standardization state +   and status of this protocol.  Distribution of this memo is unlimited. + +Copyright Notice + +   Copyright (C) The Internet Society (2005). + + +Abstract + +   To participate in wide-area IP networking, a host needs to be +   configured with IP addresses for its interfaces, either manually by +   the user or automatically from a source on the network such as a +   Dynamic Host Configuration Protocol (DHCP) server.  Unfortunately, +   such address configuration information may not always be available. +   It is therefore beneficial for a host to be able to depend on a +   useful subset of IP networking functions even when no address +   configuration is available.  This document describes how a host may +   automatically configure an interface with an IPv4 address within the +   169.254/16 prefix that is valid for communication with other devices +   connected to the same physical (or logical) link. + +   IPv4 Link-Local addresses are not suitable for communication with +   devices not directly connected to the same physical (or logical) +   link, and are only used where stable, routable addresses are not +   available (such as on ad hoc or isolated networks).  This document +   does not recommend that IPv4 Link-Local addresses and routable +   addresses be configured simultaneously on the same interface. + + + + + + + +Cheshire, et al.            Standards Track                     [Page 1] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +Table of Contents + +   1.  Introduction. . . . . . . . . . . . . . . . . . . . . . . . .  3 +       1.1.  Requirements. . . . . . . . . . . . . . . . . . . . . .  3 +       1.2.  Terminology . . . . . . . . . . . . . . . . . . . . . .  3 +       1.3.  Applicability . . . . . . . . . . . . . . . . . . . . .  5 +       1.4.  Application Layer Protocol Considerations . . . . . . .  6 +       1.5.  Autoconfiguration Issues. . . . . . . . . . . . . . . .  7 +       1.6.  Alternate Use Prohibition . . . . . . . . . . . . . . .  7 +       1.7.  Multiple Interfaces . . . . . . . . . . . . . . . . . .  8 +       1.8.  Communication with Routable Addresses . . . . . . . . .  8 +       1.9.  When to configure an IPv4 Link-Local Address. . . . . .  8 +   2.  Address Selection, Defense and Delivery . . . . . . . . . . .  9 +       2.1.  Link-Local Address Selection. . . . . . . . . . . . . . 10 +       2.2.  Claiming a Link-Local Address . . . . . . . . . . . . . 11 +       2.3.  Shorter Timeouts. . . . . . . . . . . . . . . . . . . . 13 +       2.4.  Announcing an Address . . . . . . . . . . . . . . . . . 13 +       2.5.  Conflict Detection and Defense. . . . . . . . . . . . . 13 +       2.6.  Address Usage and Forwarding Rules. . . . . . . . . . . 14 +       2.7.  Link-Local Packets Are Not Forwarded. . . . . . . . . . 16 +       2.8.  Link-Local Packets are Local. . . . . . . . . . . . . . 16 +       2.9.  Higher-Layer Protocol Considerations. . . . . . . . . . 17 +       2.10. Privacy Concerns. . . . . . . . . . . . . . . . . . . . 17 +       2.11. Interaction between DHCPv4 and IPv4 Link-Local +             State Machines. . . . . . . . . . . . . . . . . . . . . 17 +   3.  Considerations for Multiple Interfaces. . . . . . . . . . . . 18 +       3.1.  Scoped Addresses. . . . . . . . . . . . . . . . . . . . 18 +       3.2.  Address Ambiguity . . . . . . . . . . . . . . . . . . . 19 +       3.3.  Interaction with Hosts with Routable Addresses. . . . . 20 +       3.4.  Unintentional Autoimmune Response . . . . . . . . . . . 21 +   4.  Healing of Network Partitions . . . . . . . . . . . . . . . . 22 +   5.  Security Considerations . . . . . . . . . . . . . . . . . . . 23 +   6.  Application Programming Considerations. . . . . . . . . . . . 24 +       6.1.  Address Changes, Failure and Recovery . . . . . . . . . 24 +       6.2.  Limited Forwarding of Locators. . . . . . . . . . . . . 24 +       6.3.  Address Ambiguity . . . . . . . . . . . . . . . . . . . 25 +   7.  Router Considerations . . . . . . . . . . . . . . . . . . . . 25 +   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 +   9.  Constants . . . . . . . . . . . . . . . . . . . . . . . . . . 26 +   10. References. . . . . . . . . . . . . . . . . . . . . . . . . . 26 +       10.1. Normative References. . . . . . . . . . . . . . . . . . 26 +       10.2. Informative References. . . . . . . . . . . . . . . . . 26 +   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 27 +   Appendix A - Prior Implementations. . . . . . . . . . . . . . . . 28 + + + + + + + +Cheshire, et al.            Standards Track                     [Page 2] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +1.  Introduction + +   As the Internet Protocol continues to grow in popularity, it becomes +   increasingly valuable to be able to use familiar IP tools such as FTP +   not only for global communication, but for local communication as +   well.  For example, two people with laptop computers supporting IEEE +   802.11 Wireless LANs [802.11] may meet and wish to exchange files. +   It is desirable for these people to be able to use IP application +   software without the inconvenience of having to manually configure +   static IP addresses or set up a DHCP server [RFC2131]. + +   This document describes a method by which a host may automatically +   configure an interface with an IPv4 address in the 169.254/16 prefix +   that is valid for Link-Local communication on that interface.  This +   is especially valuable in environments where no other configuration +   mechanism is available.  The IPv4 prefix 169.254/16 is registered +   with the IANA for this purpose.  Allocation of IPv6 Link-Local +   addresses is described in "IPv6 Stateless Address Autoconfiguration" +   [RFC2462]. + +   Link-Local communication using IPv4 Link-Local addresses is only +   suitable for communication with other devices connected to the same +   physical (or logical) link.  Link-Local communication using IPv4 +   Link-Local addresses is not suitable for communication with devices +   not directly connected to the same physical (or logical) link. + +   Microsoft Windows 98 (and later) and Mac OS 8.5 (and later) already +   support this capability.  This document standardizes usage, +   prescribing rules for how IPv4 Link-Local addresses are to be treated +   by hosts and routers.  In particular, it describes how routers are to +   behave when receiving packets with IPv4 Link-Local addresses in the +   source or destination address.  With respect to hosts, it discusses +   claiming and defending addresses, maintaining Link-Local and routable +   IPv4 addresses on the same interface, and multi-homing issues. + +1.1.  Requirements + +   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", +   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this +   document are to be interpreted as described in "Key words for use in +   RFCs" [RFC2119]. + +1.2.  Terminology + +   This document describes Link-Local addressing, for IPv4 communication +   between two hosts on a single link.  A set of hosts is considered to +   be "on the same link", if: + + + + +Cheshire, et al.            Standards Track                     [Page 3] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   -  when any host A from that set sends a packet to any other host B +      in that set, using unicast, multicast, or broadcast, the entire +      link-layer packet payload arrives unmodified, and + +   -  a broadcast sent over that link by any host from that set of hosts +      can be received by every other host in that set + +   The link-layer *header* may be modified, such as in Token Ring Source +   Routing [802.5], but not the link-layer *payload*.  In particular, if +   any device forwarding a packet modifies any part of the IP header or +   IP payload then the packet is no longer considered to be on the same +   link.  This means that the packet may pass through devices such as +   repeaters, bridges, hubs or switches and still be considered to be on +   the same link for the purpose of this document, but not through a +   device such as an IP router that decrements the TTL or otherwise +   modifies the IP header. + +   This document uses the term "routable address" to refer to all valid +   unicast IPv4 addresses outside the 169.254/16 prefix that may be +   forwarded via routers.  This includes all global IP addresses and +   private addresses such as Net 10/8 [RFC1918], but not loopback +   addresses such as 127.0.0.1. + +   Wherever this document uses the term "host" when describing use of +   IPv4 Link-Local addresses, the text applies equally to routers when +   they are the source of or intended destination of packets containing +   IPv4 Link-Local source or destination addresses. + +   Wherever this document uses the term "sender IP address" or "target +   IP address" in the context of an ARP packet, it is referring to the +   fields of the ARP packet identified in the ARP specification [RFC826] +   as "ar$spa" (Sender Protocol Address) and "ar$tpa" (Target Protocol +   Address) respectively.  For the usage of ARP described in this +   document, each of these fields always contains an IP address. + +   In this document, the term "ARP Probe" is used to refer to an ARP +   Request packet, broadcast on the local link, with an all-zero 'sender +   IP address'.  The 'sender hardware address' MUST contain the hardware +   address of the interface sending the packet.  The 'target hardware +   address' field is ignored and SHOULD be set to all zeroes.  The +   'target IP address' field MUST be set to the address being probed. + +   In this document, the term "ARP Announcement" is used to refer to an +   ARP Request packet, broadcast on the local link, identical to the ARP +   Probe described above, except that both the sender and target IP +   address fields contain the IP address being announced. + + + + + +Cheshire, et al.            Standards Track                     [Page 4] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   Constants are introduced in all capital letters.  Their values are +   given in Section 9. + +1.3.  Applicability + +   This specification applies to all IEEE 802 Local Area Networks (LANs) +   [802], including Ethernet [802.3], Token-Ring [802.5] and IEEE 802.11 +   wireless LANs [802.11], as well as to other link-layer technologies +   that operate at data rates of at least 1 Mbps, have a round-trip +   latency of at most one second, and support ARP [RFC826].  Wherever +   this document uses the term "IEEE 802", the text applies equally to +   any of these network technologies. + +   Link-layer technologies that support ARP but operate at rates below 1 +   Mbps or latencies above one second may need to specify different +   values for the following parameters: + +   (a) the number of, and interval between, ARP probes, see PROBE_NUM, +       PROBE_MIN, PROBE_MAX defined in Section 2.2.1 + +   (b) the number of, and interval between, ARP announcements, see +       ANNOUNCE_NUM and ANNOUNCE_INTERVAL defined in Section 2.4 + +   (c) the maximum rate at which address claiming may be attempted, see +       RATE_LIMIT_INTERVAL and MAX_CONFLICTS defined in Section 2.2.1 + +   (d) the time interval between conflicting ARPs below which a host +       MUST reconfigure instead of attempting to defend its address, see +       DEFEND_INTERVAL defined in Section 2.5 + +   Link-layer technologies that do not support ARP may be able to use +   other techniques for determining whether a particular IP address is +   currently in use.  However, the application of claim-and-defend +   mechanisms to such networks is outside the scope of this document. + +   This specification is intended for use with small ad hoc networks -- +   a single link containing only a few hosts.  Although 65024 IPv4 +   Link-Local addresses are available in principle, attempting to use +   all those addresses on a single link would result in a high +   probability of address conflicts, requiring a host to take an +   inordinate amount of time to find an available address. + +   Network operators with more than 1300 hosts on a single link may want +   to consider dividing that single link into two or more subnets.  A +   host connecting to a link that already has 1300 hosts, selecting an +   IPv4 Link-Local address at random, has a 98% chance of selecting an +   unused IPv4 Link-Local address on the first try.  A host has a 99.96% + + + + +Cheshire, et al.            Standards Track                     [Page 5] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   chance of selecting an unused IPv4 Link-Local address within two +   tries.  The probability that it will have to try more than ten times +   is about 1 in 10^17. + +1.4.  Application Layer Protocol Considerations + +   IPv4 Link-Local addresses and their dynamic configuration have +   profound implications upon applications which use them.  This is +   discussed in Section 6.  Many applications fundamentally assume that +   addresses of communicating peers are routable, relatively unchanging +   and unique.  These assumptions no longer hold with IPv4 Link-Local +   addresses, or a mixture of Link-Local and routable IPv4 addresses. + +   Therefore while many applications will work properly with IPv4 Link- +   Local addresses, or a mixture of Link-Local and routable IPv4 +   addresses, others may do so only after modification, or will exhibit +   reduced or partial functionality. + +   In some cases it may be infeasible for the application to be modified +   to operate under such conditions. + +   IPv4 Link-Local addresses should therefore only be used where stable, +   routable addresses are not available (such as on ad hoc or isolated +   networks) or in controlled situations where these limitations and +   their impact on applications are understood and accepted.  This +   document does not recommend that IPv4 Link-Local addresses and +   routable addresses be configured simultaneously on the same +   interface. + +   Use of IPv4 Link-Local addresses in off-link communication is likely +   to cause application failures.  This can occur within any application +   that includes embedded addresses, if an IPv4 Link-Local address is +   embedded when communicating with a host that is not on the link. +   Examples of applications that embed addresses include IPsec, Kerberos +   4/5, FTP, RSVP, SMTP, SIP, X-Windows/Xterm/Telnet, Real Audio, H.323, +   and SNMP [RFC3027]. + +   To preclude use of IPv4 Link-Local addresses in off-link +   communication, the following cautionary measures are advised: + +   a. IPv4 Link-Local addresses MUST NOT be configured in the DNS. +      Mapping from IPv4 addresses to host names is conventionally done +      by issuing DNS queries for names of the form, +      "x.x.x.x.in-addr.arpa."  When used for link-local addresses, which +      have significance only on the local link, it is inappropriate to +      send such DNS queries beyond the local link.  DNS clients MUST NOT +      send DNS queries for any name that falls within the +      "254.169.in-addr.arpa." domain. + + + +Cheshire, et al.            Standards Track                     [Page 6] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +      DNS recursive name servers receiving queries from non-compliant +      clients for names within the "254.169.in-addr.arpa." domain MUST +      by default return RCODE 3, authoritatively asserting that no such +      name exists in the Domain Name System. + +   b. Names that are globally resolvable to routable addresses should be +      used within applications whenever they are available.  Names that +      are resolvable only on the local link (such as through use of +      protocols such as Link Local Multicast Name Resolution [LLMNR]) +      MUST NOT be used in off-link communication.  IPv4 addresses and +      names that can only be resolved on the local link SHOULD NOT be +      forwarded beyond the local link.  IPv4 Link-Local addresses SHOULD +      only be sent when a Link-Local address is used as the source +      and/or destination address.  This strong advice should hinder +      limited scope addresses and names from leaving the context in +      which they apply. + +   c. If names resolvable to globally routable addresses are not +      available, but the globally routable addresses are, they should be +      used instead of IPv4 Link-Local addresses. + +1.5.  Autoconfiguration Issues + +   Implementations of IPv4 Link-Local address autoconfiguration MUST +   expect address conflicts, and MUST be prepared to handle them +   gracefully by automatically selecting a new address whenever a +   conflict is detected, as described in Section 2.  This requirement to +   detect and handle address conflicts applies during the entire period +   that a host is using a 169.254/16 IPv4 Link-Local address, not just +   during initial interface configuration.  For example, address +   conflicts can occur well after a host has completed booting if two +   previously separate networks are joined, as described in Section 4. + +1.6.  Alternate Use Prohibition + +   Note that addresses in the 169.254/16 prefix SHOULD NOT be configured +   manually or by a DHCP server.  Manual or DHCP configuration may cause +   a host to use an address in the 169.254/16 prefix without following +   the special rules regarding duplicate detection and automatic +   configuration that pertain to addresses in this prefix.  While the +   DHCP specification [RFC2131] indicates that a DHCP client SHOULD +   probe a newly received address with ARP, this is not mandatory. +   Similarly, while the DHCP specification recommends that a DHCP server +   SHOULD probe an address using an ICMP Echo Request before allocating +   it, this is also not mandatory, and even if the server does this, +   IPv4 Link-Local addresses are not routable, so a DHCP server not +   directly connected to a link cannot detect whether a host on that +   link is already using the desired IPv4 Link-Local address. + + + +Cheshire, et al.            Standards Track                     [Page 7] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   Administrators wishing to configure their own local addresses (using +   manual configuration, a DHCP server, or any other mechanism not +   described in this document) should use one of the existing private +   address prefixes [RFC1918], not the 169.254/16 prefix. + +1.7.  Multiple Interfaces + +   Additional considerations apply to hosts that support more than one +   active interface where one or more of these interfaces support IPv4 +   Link-Local address configuration.  These considerations are discussed +   in Section 3. + +1.8.  Communication with Routable Addresses + +   There will be cases when devices with a configured Link-Local address +   will need to communicate with a device with a routable address +   configured on the same physical link, and vice versa.  The rules in +   Section 2.6 allow this communication. + +   This allows, for example, a laptop computer with only a routable +   address to communicate with web servers world-wide using its +   globally-routable address while at the same time printing those web +   pages on a local printer that has only an IPv4 Link-Local address. + +1.9.  When to configure an IPv4 Link-Local address + +   Having addresses of multiple different scopes assigned to an +   interface, with no adequate way to determine in what circumstances +   each address should be used, leads to complexity for applications and +   confusion for users.  A host with an address on a link can +   communicate with all other devices on that link, whether those +   devices use Link-Local addresses, or routable addresses.  For these +   reasons, a host SHOULD NOT have both an operable routable address and +   an IPv4 Link-Local address configured on the same interface.  The +   term "operable address" is used to mean an address which works +   effectively for communication in the current network context (see +   below).  When an operable routable address is available on an +   interface, the host SHOULD NOT also assign an IPv4 Link-Local address +   on that interface.  However, during the transition (in either +   direction) between using routable and IPv4 Link-Local addresses both +   MAY be in use at once subject to these rules: + +      1. The assignment of an IPv4 Link-Local address on an interface is +         based solely on the state of the interface, and is independent +         of any other protocols such as DHCP.  A host MUST NOT alter its +         behavior and use of other protocols such as DHCP because the +         host has assigned an IPv4 Link-Local address to an interface. + + + + +Cheshire, et al.            Standards Track                     [Page 8] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +      2. If a host finds that an interface that was previously +         configured with an IPv4 Link-Local address now has an operable +         routable address available, the host MUST use the routable +         address when initiating new communications, and MUST cease +         advertising the availability of the IPv4 Link-Local address +         through whatever mechanisms that address had been made known to +         others.  The host SHOULD continue to use the IPv4 Link-Local +         address for communications already underway, and MAY continue +         to accept new communications addressed to the IPv4 Link-Local +         address.  Ways in which an operable routable address might +         become available on an interface include: + +               * Manual configuration +               * Address assignment through DHCP +               * Roaming of the host to a network on which a previously +                 assigned address becomes operable + +      3. If a host finds that an interface no longer has an operable +         routable address available, the host MAY identify a usable IPv4 +         Link-Local address (as described in section 2) and assign that +         address to the interface.  Ways in which an operable routable +         address might cease to be available on an interface include: + +               * Removal of the address from the interface through +                 manual configuration +               * Expiration of the lease on the address assigned through +                 DHCP +               * Roaming of the host to a new network on which the +                 address is no longer operable. + +   The determination by the system of whether an address is "operable" +   is not clear cut and many changes in the system context (e.g., +   router changes) may affect the operability of an address.  In +   particular roaming of a host from one network to another is likely -- +   but not certain -- to change the operability of a configured address +   but detecting such a move is not always trivial. + +   "Detection of Network Attachment (DNA) in IPv4" [DNAv4] provides +   further discussion of address assignment and operability +   determination. + +2.  Address Selection, Defense and Delivery + +   The following section explains the IPv4 Link-Local address selection +   algorithm, how IPv4 Link-Local addresses are defended, and how IPv4 +   packets with IPv4 Link-Local addresses are delivered. + + + + + +Cheshire, et al.            Standards Track                     [Page 9] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   Windows and Mac OS hosts that already implement Link-Local IPv4 +   address auto-configuration are compatible with the rules presented in +   this section.  However, should any interoperability problem be +   discovered, this document, not any prior implementation, defines the +   standard. + +2.1.  Link-Local Address Selection + +   When a host wishes to configure an IPv4 Link-Local address, it +   selects an address using a pseudo-random number generator with a +   uniform distribution in the range from 169.254.1.0 to 169.254.254.255 +   inclusive. + +   The IPv4 prefix 169.254/16 is registered with the IANA for this +   purpose.  The first 256 and last 256 addresses in the 169.254/16 +   prefix are reserved for future use and MUST NOT be selected by a host +   using this dynamic configuration mechanism. + +   The pseudo-random number generation algorithm MUST be chosen so that +   different hosts do not generate the same sequence of numbers.  If the +   host has access to persistent information that is different for each +   host, such as its IEEE 802 MAC address, then the pseudo-random number +   generator SHOULD be seeded using a value derived from this +   information.  This means that even without using any other persistent +   storage, a host will usually select the same IPv4 Link-Local address +   each time it is booted, which can be convenient for debugging and +   other operational reasons.  Seeding the pseudo-random number +   generator using the real-time clock or any other information which is +   (or may be) identical in every host is NOT suitable for this purpose, +   because a group of hosts that are all powered on at the same time +   might then all generate the same sequence, resulting in a never- +   ending series of conflicts as the hosts move in lock-step through +   exactly the same pseudo-random sequence, conflicting on every address +   they probe. + +   Hosts that are equipped with persistent storage MAY, for each +   interface, record the IPv4 address they have selected.  On booting, +   hosts with a previously recorded address SHOULD use that address as +   their first candidate when probing.  This increases the stability of +   addresses.  For example, if a group of hosts are powered off at +   night, then when they are powered on the next morning they will all +   resume using the same addresses, instead of picking different +   addresses and potentially having to resolve conflicts that arise. + + + + + + + + +Cheshire, et al.            Standards Track                    [Page 10] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +2.2.  Claiming a Link-Local Address + +   After it has selected an IPv4 Link-Local address, a host MUST test to +   see if the IPv4 Link-Local address is already in use before beginning +   to use it.  When a network interface transitions from an inactive to +   an active state, the host does not have knowledge of what IPv4 Link- +   Local addresses may currently be in use on that link, since the point +   of attachment may have changed or the network interface may have been +   inactive when a conflicting address was claimed. + +   Were the host to immediately begin using an IPv4 Link-Local address +   which is already in use by another host, this would be disruptive to +   that other host.  Since it is possible that the host has changed its +   point of attachment, a routable address may be obtainable on the new +   network, and therefore it cannot be assumed that an IPv4 Link-Local +   address is to be preferred. + +   Before using the IPv4 Link-Local address (e.g., using it as the +   source address in an IPv4 packet, or as the Sender IPv4 address in an +   ARP packet) a host MUST perform the probing test described below to +   achieve better confidence that using the IPv4 Link-Local address will +   not cause disruption. + +   Examples of events that involve an interface becoming active include: + +      Reboot/startup +      Wake from sleep (if network interface was inactive during sleep) +      Bringing up previously inactive network interface +      IEEE 802 hardware link-state change (appropriate for the +           media type and security mechanisms which apply) indicates +           that an interface has become active. +      Association with a wireless base station or ad hoc network. + +   A host MUST NOT perform this check periodically as a matter of +   course.  This would be a waste of network bandwidth, and is +   unnecessary due to the ability of hosts to passively discover +   conflicts, as described in Section 2.5. + +2.2.1.  Probe details + +   On a link-layer such as IEEE 802 that supports ARP, conflict +   detection is done using ARP probes.  On link-layer technologies that +   do not support ARP other techniques may be available for determining +   whether a particular IPv4 address is currently in use.  However, the +   application of claim-and-defend mechanisms to such networks is +   outside the scope of this document. + + + + + +Cheshire, et al.            Standards Track                    [Page 11] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   A host probes to see if an address is already in use by broadcasting +   an ARP Request for the desired address.  The client MUST fill in the +   'sender hardware address' field of the ARP Request with the hardware +   address of the interface through which it is sending the packet.  The +   'sender IP address' field MUST be set to all zeroes, to avoid +   polluting ARP caches in other hosts on the same link in the case +   where the address turns out to be already in use by another host. +   The 'target hardware address' field is ignored and SHOULD be set to +   all zeroes.  The 'target IP address' field MUST be set to the address +   being probed.  An ARP Request constructed this way with an all-zero +   'sender IP address' is referred to as an "ARP Probe". + +   When ready to begin probing, the host should then wait for a random +   time interval selected uniformly in the range zero to PROBE_WAIT +   seconds, and should then send PROBE_NUM probe packets, each of these +   probe packets spaced randomly, PROBE_MIN to PROBE_MAX seconds apart. +   If during this period, from the beginning of the probing process +   until ANNOUNCE_WAIT seconds after the last probe packet is sent, the +   host receives any ARP packet (Request *or* Reply) on the interface +   where the probe is being performed where the packet's 'sender IP +   address' is the address being probed for, then the host MUST treat +   this address as being in use by some other host, and MUST select a +   new pseudo-random address and repeat the process.  In addition, if +   during this period the host receives any ARP Probe where the packet's +   'target IP address' is the address being probed for, and the packet's +   'sender hardware address' is not the hardware address of the +   interface the host is attempting to configure, then the host MUST +   similarly treat this as an address conflict and select a new address +   as above.  This can occur if two (or more) hosts attempt to configure +   the same IPv4 Link-Local address at the same time. + +   A host should maintain a counter of the number of address conflicts +   it has experienced in the process of trying to acquire an address, +   and if the number of conflicts exceeds MAX_CONFLICTS then the host +   MUST limit the rate at which it probes for new addresses to no more +   than one new address per RATE_LIMIT_INTERVAL.  This is to prevent +   catastrophic ARP storms in pathological failure cases, such as a +   rogue host that answers all ARP probes, causing legitimate hosts to +   go into an infinite loop attempting to select a usable address. + +   If, by ANNOUNCE_WAIT seconds after the transmission of the last ARP +   Probe no conflicting ARP Reply or ARP Probe has been received, then +   the host has successfully claimed the desired IPv4 Link-Local +   address. + + + + + + + +Cheshire, et al.            Standards Track                    [Page 12] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +2.3.  Shorter Timeouts + +   Network technologies may emerge for which shorter delays are +   appropriate than those required by this document.  A subsequent IETF +   publication may be produced providing guidelines for different values +   for PROBE_WAIT, PROBE_NUM, PROBE_MIN and PROBE_MAX on those +   technologies. + +2.4.  Announcing an Address + +   Having probed to determine a unique address to use, the host MUST +   then announce its claimed address by broadcasting ANNOUNCE_NUM ARP +   announcements, spaced ANNOUNCE_INTERVAL seconds apart.  An ARP +   announcement is identical to the ARP Probe described above, except +   that now the sender and target IP addresses are both set to the +   host's newly selected IPv4 address.  The purpose of these ARP +   announcements is to make sure that other hosts on the link do not +   have stale ARP cache entries left over from some other host that may +   previously have been using the same address. + +2.5.  Conflict Detection and Defense + +   Address conflict detection is not limited to the address selection +   phase, when a host is sending ARP probes.  Address conflict detection +   is an ongoing process that is in effect for as long as a host is +   using an IPv4 Link-Local address.  At any time, if a host receives an +   ARP packet (request *or* reply) on an interface where the 'sender IP +   address' is the IP address the host has configured for that +   interface, but the 'sender hardware address' does not match the +   hardware address of that interface, then this is a conflicting ARP +   packet, indicating an address conflict. + +   A host MUST respond to a conflicting ARP packet as described in +   either (a) or (b) below: + +   (a) Upon receiving a conflicting ARP packet, a host MAY elect to +   immediately configure a new IPv4 Link-Local address as described +   above, or + +   (b) If a host currently has active TCP connections or other reasons +   to prefer to keep the same IPv4 address, and it has not seen any +   other conflicting ARP packets within the last DEFEND_INTERVAL +   seconds, then it MAY elect to attempt to defend its address by +   recording the time that the conflicting ARP packet was received, and +   then broadcasting one single ARP announcement, giving its own IP and +   hardware addresses as the sender addresses of the ARP.  Having done +   this, the host can then continue to use the address normally without +   any further special action.  However, if this is not the first + + + +Cheshire, et al.            Standards Track                    [Page 13] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   conflicting ARP packet the host has seen, and the time recorded for +   the previous conflicting ARP packet is recent, within DEFEND_INTERVAL +   seconds, then the host MUST immediately cease using this address and +   configure a new IPv4 Link-Local address as described above.  This is +   necessary to ensure that two hosts do not get stuck in an endless +   loop with both hosts trying to defend the same address. + +   A host MUST respond to conflicting ARP packets as described in either +   (a) or (b) above.  A host MUST NOT ignore conflicting ARP packets. + +   Forced address reconfiguration may be disruptive, causing TCP +   connections to be broken.  However, it is expected that such +   disruptions will be rare, and if inadvertent address duplication +   happens, then disruption of communication is inevitable, no matter +   how the addresses were assigned.  It is not possible for two +   different hosts using the same IP address on the same network to +   operate reliably. + +   Before abandoning an address due to a conflict, hosts SHOULD actively +   attempt to reset any existing connections using that address.  This +   mitigates some security threats posed by address reconfiguration, as +   discussed in Section 5. + +   Immediately configuring a new address as soon as the conflict is +   detected is the best way to restore useful communication as quickly +   as possible.  The mechanism described above of broadcasting a single +   ARP announcement to defend the address mitigates the problem +   somewhat, by helping to improve the chance that one of the two +   conflicting hosts may be able to retain its address. + +   All ARP packets (*replies* as well as requests) that contain a Link- +   Local 'sender IP address' MUST be sent using link-layer broadcast +   instead of link-layer unicast.  This aids timely detection of +   duplicate addresses.  An example illustrating how this helps is given +   in Section 4. + +2.6.  Address Usage and Forwarding Rules + +   A host implementing this specification has additional rules to +   conform to, whether or not it has an interface configured with an +   IPv4 Link-Local address. + +2.6.1.  Source Address Usage + +   Since each interface on a host may have an IPv4 Link-Local address in +   addition to zero or more other addresses configured by other means +   (e.g., manually or via a DHCP server), a host may have to make a + + + + +Cheshire, et al.            Standards Track                    [Page 14] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   choice about what source address to use when it sends a packet or +   initiates a TCP connection. + +   Where both an IPv4 Link-Local and a routable address are available on +   the same interface, the routable address should be preferred as the +   source address for new communications, but packets sent from or to +   the IPv4 Link-Local address are still delivered as expected.  The +   IPv4 Link-Local address may continue to be used as a source address +   in communications where switching to a preferred address would cause +   communications failure because of the requirements of an upper-layer +   protocol (e.g., an existing TCP connection).  For more details, see +   Section 1.7. + +   A multi-homed host needs to select an outgoing interface whether or +   not the destination is an IPv4 Link-Local address.  Details of that +   process are beyond the scope of this specification.  After selecting +   an interface, the multi-homed host should send packets involving IPv4 +   Link-Local addresses as specified in this document, as if the +   selected interface were the host's only interface.  See Section 3 for +   further discussion of multi-homed hosts. + +2.6.2.  Forwarding Rules + +   Whichever interface is used, if the destination address is in the +   169.254/16 prefix (excluding the address 169.254.255.255, which is +   the broadcast address for the Link-Local prefix), then the sender +   MUST ARP for the destination address and then send its packet +   directly to the destination on the same physical link.  This MUST be +   done whether the interface is configured with a Link-Local or a +   routable IPv4 address. + +   In many network stacks, achieving this functionality may be as simple +   as adding a routing table entry indicating that 169.254/16 is +   directly reachable on the local link.  This approach will not work +   for routers or multi-homed hosts.  Refer to section 3 for more +   discussion of multi-homed hosts. + +   The host MUST NOT send a packet with an IPv4 Link-Local destination +   address to any router for forwarding. + +   If the destination address is a unicast address outside the +   169.254/16 prefix, then the host SHOULD use an appropriate routable +   IPv4 source address, if it can.  If for any reason the host chooses +   to send the packet with an IPv4 Link-Local source address (e.g., no +   routable address is available on the selected interface), then it +   MUST ARP for the destination address and then send its packet, with + + + + + +Cheshire, et al.            Standards Track                    [Page 15] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   an IPv4 Link-Local source address and a routable destination IPv4 +   address, directly to its destination on the same physical link.  The +   host MUST NOT send the packet to any router for forwarding. + +   In the case of a device with a single interface and only an Link- +   Local IPv4 address, this requirement can be paraphrased as "ARP for +   everything". + +   In many network stacks, achieving this "ARP for everything" behavior +   may be as simple as having no primary IP router configured, having +   the primary IP router address configured to 0.0.0.0, or having the +   primary IP router address set to be the same as the host's own Link- +   Local IPv4 address.  For suggested behavior in multi-homed hosts, see +   Section 3. + +2.7.  Link-Local Packets Are Not Forwarded + +   A sensible default for applications which are sending from an IPv4 +   Link-Local address is to explicitly set the IPv4 TTL to 1.  This is +   not appropriate in all cases as some applications may require that +   the IPv4 TTL be set to other values. + +   An IPv4 packet whose source and/or destination address is in the +   169.254/16 prefix MUST NOT be sent to any router for forwarding, and +   any network device receiving such a packet MUST NOT forward it, +   regardless of the TTL in the IPv4 header.  Similarly, a router or +   other host MUST NOT indiscriminately answer all ARP Requests for +   addresses in the 169.254/16 prefix.  A router may of course answer +   ARP Requests for one or more IPv4 Link-Local address(es) that it has +   legitimately claimed for its own use according to the claim-and- +   defend protocol described in this document. + +   This restriction also applies to multicast packets.  IPv4 packets +   with a Link-Local source address MUST NOT be forwarded outside the +   local link even if they have a multicast destination address. + +2.8.  Link-Local Packets are Local + +   The non-forwarding rule means that hosts may assume that all +   169.254/16 destination addresses are "on-link" and directly +   reachable.  The 169.254/16 address prefix MUST NOT be subnetted. +   This specification utilizes ARP-based address conflict detection, +   which functions by broadcasting on the local subnet.  Since such +   broadcasts are not forwarded, were subnetting to be allowed then +   address conflicts could remain undetected. + + + + + + +Cheshire, et al.            Standards Track                    [Page 16] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   This does not mean that Link-Local devices are forbidden from any +   communication outside the local link.  IP hosts that implement both +   Link-Local and conventional routable IPv4 addresses may still use +   their routable addresses without restriction as they do today. + +2.9.  Higher-Layer Protocol Considerations + +   Similar considerations apply at layers above IP. + +   For example, designers of Web pages (including automatically +   generated web pages) SHOULD NOT contain links with embedded IPv4 +   Link-Local addresses if those pages are viewable from hosts outside +   the local link where the addresses are valid. + +   As IPv4 Link-Local addresses may change at any time and have limited +   scope, IPv4 Link-Local addresses MUST NOT be stored in the DNS. + +2.10.  Privacy Concerns + +   Another reason to restrict leakage of IPv4 Link-Local addresses +   outside the local link is privacy concerns.  If IPv4 Link-Local +   addresses are derived from a hash of the MAC address, some argue that +   they could be indirectly associated with an individual, and thereby +   used to track that individual's activities.  Within the local link +   the hardware addresses in the packets are all directly observable, so +   as long as IPv4 Link-Local addresses don't leave the local link they +   provide no more information to an intruder than could be gained by +   direct observation of hardware addresses. + +2.11.  Interaction between DHCPv4 client and IPv4 Link-Local State +       Machines + +   As documented in Appendix A, early implementations of IPv4 Link-Local +   have modified the DHCP state machine.  Field experience shows that +   these modifications reduce the reliability of the DHCP service. + +   A device that implements both IPv4 Link-Local and a DHCPv4 client +   should not alter the behavior of the DHCPv4 client to accommodate +   IPv4 Link-Local configuration.  In particular configuration of an +   IPv4 Link-Local address, whether or not a DHCP server is currently +   responding, is not sufficient reason to unconfigure a valid DHCP +   lease, to stop the DHCP client from attempting to acquire a new IP +   address, to change DHCP timeouts or to change the behavior of the +   DHCP state machine in any other way. + +   Further discussion of this issue is provided in "Detection of Network +   Attachment (DNA) in IPv4" [DNAv4]. + + + + +Cheshire, et al.            Standards Track                    [Page 17] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +3.  Considerations for Multiple Interfaces + +   The considerations outlined here also apply whenever a host has +   multiple IP addresses, whether or not it has multiple physical +   interfaces.  Other examples of multiple interfaces include different +   logical endpoints (tunnels, virtual private networks etc.) and +   multiple logical networks on the same physical medium.  This is often +   referred to as "multi-homing". + +   Hosts which have more than one active interface and elect to +   implement dynamic configuration of IPv4 Link-Local addresses on one +   or more of those interfaces will face various problems.  This section +   lists these problems but does no more than indicate how one might +   solve them.  At the time of this writing, there is no silver bullet +   which solves these problems in all cases, in a general way. +   Implementors must think through these issues before implementing the +   protocol specified in this document on a system which may have more +   than one active interface as part of a TCP/IP stack capable of +   multi-homing. + +3.1.  Scoped Addresses + +   A host may be attached to more than one network at the same time.  It +   would be nice if there was a single address space used in every +   network, but this is not the case.  Addresses used in one network, be +   it a network behind a NAT or a link on which IPv4 Link-Local +   addresses are used, cannot be used in another network and have the +   same effect. + +   It would also be nice if addresses were not exposed to applications, +   but they are.  Most software using TCP/IP which await messages +   receives from any interface at a particular port number, for a +   particular transport protocol.  Applications are generally only aware +   (and care) that they have received a message.  The application knows +   the address of the sender to which the application will reply. + +   The first scoped address problem is source address selection.  A +   multi-homed host has more than one address.  Which address should be +   used as the source address when sending to a particular destination? +   This question is usually answered by referring to a routing table, +   which expresses on which interface (with which address) to send, and +   how to send (should one forward to a router, or send directly).  The +   choice is made complicated by scoped addresses because the address +   range in which the destination lies may be ambiguous.  The table may +   not be able to yield a good answer.  This problem is bound up with +   next-hop selection, which is discussed in Section 3.2. + + + + + +Cheshire, et al.            Standards Track                    [Page 18] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   The second scoped address problem arises from scoped parameters +   leaking outside their scope.  This is discussed in Section 7. + +   It is possible to overcome these problems.  One way is to expose +   scope information to applications such that they are always aware of +   what scope a peer is in.  This way, the correct interface could be +   selected, and a safe procedure could be followed with respect to +   forwarding addresses and other scoped parameters.  There are other +   possible approaches.  None of these methods have been standardized +   for IPv4 nor are they specified in this document.  A good API design +   could mitigate the problems, either by exposing address scopes to +   'scoped-address aware' applications or by cleverly encapsulating the +   scoping information and logic so that applications do the right thing +   without being aware of address scoping. + +   An implementer could undertake to solve these problems, but cannot +   simply ignore them.  With sufficient experience, it is hoped that +   specifications will emerge explaining how to overcome scoped address +   multi-homing problems. + +3.2.  Address Ambiguity + +   This is a core problem with respect to IPv4 Link-Local destination +   addresses being reachable on more than one interface.  What should a +   host do when it needs to send to Link-Local destination L and L can +   be resolved using ARP on more than one link? + +   Even if a Link-Local address can be resolved on only one link at a +   given moment, there is no guarantee that it will remain unambiguous +   in the future.  Additional hosts on other interfaces may claim the +   address L as well. + +   One possibility is to support this only in the case where the +   application specifically expresses which interface to send from. + +   There is no standard or obvious solution to this problem.  Existing +   application software written for the IPv4 protocol suite is largely +   incapable of dealing with address ambiguity.  This does not preclude +   an implementer from finding a solution, writing applications which +   are able to use it, and providing a host which can support dynamic +   configuration of IPv4 Link-Local addresses on more than one +   interface.  This solution will almost surely not be generally +   applicable to existing software and transparent to higher layers, +   however. + +   Given that the IP stack must have the outbound interface associated +   with a packet that needs to be sent to a Link-Local destination +   address, interface selection must occur.  The outbound interface + + + +Cheshire, et al.            Standards Track                    [Page 19] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   cannot be derived from the packet's header parameters such as source +   or destination address (e.g., by using the forwarding table lookup). +   Therefore, outbound interface association must be done explicitly +   through other means.  The specification does not stipulate those +   means. + +3.3.  Interaction with Hosts with Routable Addresses + +   Attention is paid in this specification to transition from the use of +   IPv4 Link-Local addresses to routable addresses (see Section 1.5). +   The intention is to allow a host with a single interface to first +   support Link-Local configuration then gracefully transition to the +   use of a routable address.  Since the host transitioning to the use +   of a routable address may temporarily have more than one address +   active, the scoped address issues described in Section 3.1 will +   apply.  When a host acquires a routable address, it does not need to +   retain its Link-Local address for the purpose of communicating with +   other devices on the link that are themselves using only Link-Local +   addresses: any host conforming to this specification knows that +   regardless of source address an IPv4 Link-Local destination must be +   reached by forwarding directly to the destination, not via a router; +   it is not necessary for that host to have a Link-Local source address +   in order to send to a Link-Local destination address. + +   A host with an IPv4 Link-Local address may send to a destination +   which does not have an IPv4 Link-Local address.  If the host is not +   multi-homed, the procedure is simple and unambiguous: Using ARP and +   forwarding directly to on-link destinations is the default route.  If +   the host is multi-homed, however, the routing policy is more complex, +   especially if one of the interfaces is configured with a routable +   address and the default route is (sensibly) directed at a router +   accessible through that interface.  The following example illustrates +   this problem and provides a common solution to it. + +                         i1 +---------+ i2   i3 +-------+ +               ROUTER-------=  HOST1  =---------= HOST2 | +                      link1 +---------+  link2  +-------+ + +   In the figure above, HOST1 is connected to link1 and link2. +   Interface i1 is configured with a routable address, while i2 is an +   IPv4 Link-Local address.  HOST1 has its default route set to ROUTER's +   address, through i1.  HOST1 will route to destinations in 169.254/16 +   to i2, sending directly to the destination. + +   HOST2 has a configured (non-Link-Local) IPv4 address assigned to i3. + + + + + + +Cheshire, et al.            Standards Track                    [Page 20] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   Using a name resolution or service discovery protocol HOST1 can +   discover HOST2's address.  Since HOST2's address is not in +   169.254/16, HOST1's routing policy will send datagrams to HOST2 via +   i1, to the ROUTER.  Unless there is a route from ROUTER to HOST2, the +   datagrams sent from HOST1 to HOST2 will not reach it. + +   One solution to this problem is for a host to attempt to reach any +   host locally (using ARP) for which it receives an unreachable ICMP +   error message (ICMP message codes 0, 1, 6 or 7 [RFC792]).  The host +   tries all its attached links in a round robin fashion.  This has been +   implemented successfully for some IPv6 hosts, to circumvent exactly +   this problem.  In terms of this example, HOST1 upon failing to reach +   HOST2 via the ROUTER, will attempt to forward to HOST2 via i2 and +   succeed. + +   It may also be possible to overcome this problem using techniques +   described in section 3.2, or other means not discussed here.  This +   specification does not provide a standard solution, nor does it +   preclude implementers from supporting multi-homed configurations, +   provided that they address the concerns in this section for the +   applications which will be supported on the host. + +3.4.  Unintentional Autoimmune Response + +   Care must be taken if a multi-homed host can support more than one +   interface on the same link, all of which support IPv4 Link-Local +   autoconfiguration.  If these interfaces attempt to allocate the same +   address, they will defend the host against itself -- causing the +   claiming algorithm to fail.  The simplest solution to this problem is +   to run the algorithm independently on each interface configured with +   IPv4 Link-Local addresses. + +   In particular, ARP packets which appear to claim an address which is +   assigned to a specific interface, indicate conflict only if they are +   received on that interface and their hardware address is of some +   other interface. + +   If a host has two interfaces on the same link, then claiming and +   defending on those interfaces must ensure that they end up with +   different addresses just as if they were on different hosts.  Note +   that some of the ways a host may find itself with two interfaces on +   the same link may be unexpected and non-obvious, such as when a host +   has Ethernet and 802.11 wireless, but those two links are (possibly +   even without the knowledge of the host's user) bridged together. + + + + + + + +Cheshire, et al.            Standards Track                    [Page 21] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +4.  Healing of Network Partitions + +   Hosts on disjoint network links may configure the same IPv4 Link- +   Local address.  If these separate network links are later joined or +   bridged together, then there may be two hosts which are now on the +   same link, trying to use the same address.  When either host attempts +   to communicate with any other host on the network, it will at some +   point broadcast an ARP packet which will enable the hosts in question +   to detect that there is an address conflict. + +   When these address conflicts are detected, the subsequent forced +   reconfiguration may be disruptive, causing TCP connections to be +   broken.  However, it is expected that such disruptions will be rare. +   It should be relatively uncommon for networks to be joined while +   hosts on those networks are active.  Also, 65024 addresses are +   available for IPv4 Link-Local use, so even when two small networks +   are joined, the chance of conflict for any given host is fairly +   small. + +   When joining two large networks (defined as networks with a +   substantial number of hosts per segment) there is a greater chance of +   conflict.  In such networks, it is likely that the joining of +   previously separated segments will result in one or more hosts +   needing to change their IPv4 Link-Local address, with subsequent loss +   of TCP connections.  In cases where separation and re-joining is +   frequent, as in remotely bridged networks, this could prove +   disruptive.  However, unless the number of hosts on the joined +   segments is very large, the traffic resulting from the join and +   subsequent address conflict resolution will be small. + +   Sending ARP replies that have IPv4 Link-Local sender addresses via +   broadcast instead of unicast ensures that these conflicts can be +   detected as soon as they become potential problems, but no sooner. +   For example, if two disjoint network links are joined, where hosts A +   and B have both configured the same Link-Local address, X, they can +   remain in this state until A, B or some other host attempts to +   initiate communication.  If some other host C now sends an ARP +   request for address X, and hosts A and B were to both reply with +   conventional unicast ARP replies, then host C might be confused, but +   A and B still wouldn't know there is a problem because neither would +   have seen the other's packet.  Sending these replies via broadcast +   allows A and B to see each other's conflicting ARP packets and +   respond accordingly. + +   Note that sending periodic gratuitous ARPs in an attempt to detect +   these conflicts sooner is not necessary, wastes network bandwidth, +   and may actually be detrimental.  For example, if the network links +   were joined only briefly, and were separated again before any new + + + +Cheshire, et al.            Standards Track                    [Page 22] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   communication involving A or B were initiated, then the temporary +   conflict would have been benign and no forced reconfiguration would +   have been required.  Triggering an unnecessary forced reconfiguration +   in this case would not serve any useful purpose.  Hosts SHOULD NOT +   send periodic gratuitous ARPs. + +5.  Security Considerations + +   The use of IPv4 Link-Local Addresses may open a network host to new +   attacks.  In particular, a host that previously did not have an IP +   address, and no IP stack running, was not susceptible to IP-based +   attacks.  By configuring a working address, the host may now be +   vulnerable to IP-based attacks. + +   The ARP protocol [RFC826] is insecure.  A malicious host may send +   fraudulent ARP packets on the network, interfering with the correct +   operation of other hosts.  For example, it is easy for a host to +   answer all ARP requests with replies giving its own hardware address, +   thereby claiming ownership of every address on the network. + +   NOTE: There are certain kinds of local links, such as wireless LANs, +   that provide no physical security.  Because of the existence of these +   links it would be very unwise for an implementer to assume that when +   a device is communicating only on the local link it can dispense with +   normal security precautions.  Failure to implement appropriate +   security measures could expose users to considerable risks. + +   A host implementing IPv4 Link-Local configuration has an additional +   vulnerability to selective reconfiguration and disruption.  It is +   possible for an on-link attacker to issue ARP packets which would +   cause a host to break all its connections by switching to a new +   address.  The attacker could force the host implementing IPv4 Link- +   Local configuration to select certain addresses, or prevent it from +   ever completing address selection.  This is a distinct threat from +   that posed by spoofed ARPs, described in the preceding paragraph. + +   Implementations and users should also note that a node that gives up +   an address and reconfigures, as required by section 2.5, allows the +   possibility that another node can easily and successfully hijack +   existing TCP connections. + +   Implementers are advised that the Internet Protocol architecture +   expects every networked device or host must implement security which +   is adequate to protect the resources to which the device or host has +   access, including the network itself, against known or credible +   threats.  Even though use of IPv4 Link-Local addresses may reduce the + + + + + +Cheshire, et al.            Standards Track                    [Page 23] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   number of threats to which a device is exposed, implementers of +   devices supporting the Internet Protocol must not assume that a +   customer's local network is free from security risks. + +   While there may be particular kinds of devices, or particular +   environments, for which the security provided by the network is +   adequate to protect the resources that are accessible by the device, +   it would be misleading to make a general statement to the effect that +   the requirement to provide security is reduced for devices using IPv4 +   Link-Local addresses as a sole means of access. + +   In all cases, whether or not IPv4 Link-Local addresses are used, it +   is necessary for implementers of devices supporting the Internet +   Protocol to analyze the known and credible threats to which a +   specific host or device might be subjected, and to the extent that it +   is feasible, to provide security mechanisms which ameliorate or +   reduce the risks associated with such threats. + +6.  Application Programming Considerations + +   Use of IPv4 Link-Local autoconfigured addresses presents additional +   challenges to writers of applications and may result in existing +   application software failing. + +6.1.  Address Changes, Failure and Recovery + +   IPv4 Link-Local addresses used by an application may change over +   time.  Some application software encountering an address change will +   fail.  For example, existing client TCP connections will be aborted, +   servers whose addresses change will have to be rediscovered, blocked +   reads and writes will exit with an error condition, and so on. + +   Vendors producing application software which will be used on IP +   implementations supporting IPv4 Link-Local address configuration +   SHOULD detect and cope with address change events.  Vendors producing +   IPv4 implementations supporting IPv4 Link-Local address configuration +   SHOULD expose address change events to applications. + +6.2.  Limited Forwarding of Locators + +   IPv4 Link-Local addresses MUST NOT be forwarded via an application +   protocol (for example in a URL), to a destination that is not on the +   same link.  This is discussed further in Sections 2.9 and 3. + +   Existing distributed application software that forwards address +   information may fail.  For example, FTP [RFC959] (when not using +   passive mode) transmits the IP address of the client.  Suppose a +   client starts up and obtains its IPv4 configuration at a time when it + + + +Cheshire, et al.            Standards Track                    [Page 24] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   has only a Link-Local address.  Later, the host gets a global IP +   address, and the client contacts an FTP server outside the local +   link.  If the FTP client transmits its old Link-Local address instead +   of its new global IP address in the FTP "port" command, then the FTP +   server will be unable to open a data connection back to the client, +   and the FTP operation will fail. + +6.3.  Address Ambiguity + +   Application software run on a multi-homed host that supports IPv4 +   Link-Local address configuration on more than one interface may fail. + +   This is because application software assumes that an IPv4 address is +   unambiguous, that it can refer to only one host.  IPv4 Link-Local +   addresses are unique only on a single link.  A host attached to +   multiple links can easily encounter a situation where the same +   address is present on more than one interface, or first on one +   interface, later on another; in any case associated with more than +   one host.  Most existing software is not prepared for this ambiguity. +   In the future, application programming interfaces could be developed +   to prevent this problem.  This issue is discussed in Section 3. + +7.  Router Considerations + +   A router MUST NOT forward a packet with an IPv4 Link-Local source or +   destination address, irrespective of the router's default route +   configuration or routes obtained from dynamic routing protocols. + +   A router which receives a packet with an IPv4 Link-Local source or +   destination address MUST NOT forward the packet.  This prevents +   forwarding of packets back onto the network segment from which they +   originated, or to any other segment. + +8.  IANA Considerations + +   The IANA has allocated the prefix 169.254/16 for the use described in +   this document.  The first and last 256 addresses in this range +   (169.254.0.x and 169.254.255.x) are allocated by Standards Action, as +   defined in "Guidelines for Writing an IANA" (BCP 26) [RFC2434].  No +   other IANA services are required by this document. + + + + + + + + + + + +Cheshire, et al.            Standards Track                    [Page 25] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +9.  Constants + +   The following timing constants are used in this protocol; they are +   not intended to be user configurable. + +   PROBE_WAIT           1 second   (initial random delay) +   PROBE_NUM            3          (number of probe packets) +   PROBE_MIN            1 second   (minimum delay till repeated probe) +   PROBE_MAX            2 seconds  (maximum delay till repeated probe) +   ANNOUNCE_WAIT        2 seconds  (delay before announcing) +   ANNOUNCE_NUM         2          (number of announcement packets) +   ANNOUNCE_INTERVAL    2 seconds  (time between announcement packets) +   MAX_CONFLICTS       10          (max conflicts before rate limiting) +   RATE_LIMIT_INTERVAL 60 seconds  (delay between successive attempts) +   DEFEND_INTERVAL     10 seconds  (minimum interval between defensive +                                    ARPs). + +10.  References + +10.1.  Normative References + +   [RFC792]  Postel, J., "Internet Control Message Protocol", STD 5, RFC +             792, September 1981. + +   [RFC826]  Plummer, D., "Ethernet Address Resolution Protocol: Or +             converting network protocol addresses to 48.bit Ethernet +             address for transmission on Ethernet hardware", STD 37, RFC +             826, November 1982. + +   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate +             Requirement Levels", BCP 14, RFC 2119, March 1997. + +   [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an +             IANA Considerations Section in RFCs", BCP 26, RFC 2434, +             October 1998. + +10.2.  Informative References + +   [802]     IEEE Standards for Local and Metropolitan Area Networks: +             Overview and Architecture, ANSI/IEEE Std 802, 1990. + +   [802.3]   ISO/IEC 8802-3 Information technology - Telecommunications +             and information exchange between systems - Local and +             metropolitan area networks - Common specifications - Part +             3:  Carrier Sense Multiple Access with Collision Detection +             (CSMA/CD) Access Method and Physical Layer Specifications, +             (also ANSI/IEEE Std 802.3- 1996), 1996. + + + + +Cheshire, et al.            Standards Track                    [Page 26] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   [802.5]   ISO/IEC 8802-5 Information technology - Telecommunications +             and information exchange between systems - Local and +             metropolitan area networks - Common specifications - Part +             5: Token ring access method and physical layer +             specifications, (also ANSI/IEEE Std 802.5-1998), 1998. + +   [802.11]  Information technology - Telecommunications and information +             exchange between systems - Local and metropolitan area +             networks - Specific Requirements Part 11:  Wireless LAN +             Medium Access Control (MAC) and Physical Layer (PHY) +             Specifications, IEEE Std. 802.11-1999, 1999. + +   [RFC959]  Postel, J. and J. Reynolds, "File Transfer Protocol", STD +             9, RFC 959, October 1985. + +   [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., +             and E. Lear, "Address Allocation for Private Internets", +             BCP 5, RFC 1918, February 1996. + +   [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, +             March 1997. + +   [RFC2462] Thomson, S. and T. Narten, "IPv6 Stateless Address +             Autoconfiguration", RFC 2462, December 1998. + +   [RFC3027] Holdrege, M. and P. Srisuresh, "Protocol Complications with +             the IP Network Address Translator", RFC 3027, January 2001. + +   [DNAv4]   Aboba, B., "Detection of Network Attachment (DNA) in IPv4", +             Work in Progress, July 2004. + +   [LLMNR]   Esibov, L., Aboba, B. and D. Thaler, "Linklocal Multicast +             Name Resolution (LLMNR)", Work in Progress, June 2004. + +Acknowledgments + +   We would like to thank (in alphabetical order) Jim Busse, Pavani +   Diwanji, Donald Eastlake 3rd, Robert Elz, Peter Ford, Spencer +   Giacalone, Josh Graessley, Brad Hards, Myron Hattig, Hugh Holbrook, +   Christian Huitema, Richard Johnson, Kim Yong-Woon, Mika Liljeberg, +   Rod Lopez, Keith Moore, Satish Mundra, Thomas Narten, Erik Nordmark, +   Philip Nye, Howard Ridenour, Daniel Senie, Dieter Siegmund, Valery +   Smyslov, and Ryan Troll for their contributions. + + + + + + + + +Cheshire, et al.            Standards Track                    [Page 27] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +Appendix A - Prior Implementations + +A.1.  Apple Mac OS 8.x and 9.x. + +   Mac OS chooses the IP address on a pseudo-random basis.  The selected +   address is saved in persistent storage for continued use after +   reboot, when possible. + +   Mac OS sends nine DHCPDISCOVER packets, with an interval of two +   seconds between packets.  If no response is received from any of +   these requests (18 seconds), it will autoconfigure. + +   Upon finding that a selected address is in use, Mac OS will select a +   new random address and try again, at a rate limited to no more than +   one attempt every two seconds. + +   Autoconfigured Mac OS systems check for the presence of a DHCP server +   every five minutes.  If a DHCP server is found but Mac OS is not +   successful in obtaining a new lease, it keeps the existing +   autoconfigured IP address.  If Mac OS is successful at obtaining a +   new lease, it drops all existing connections without warning.  This +   may cause users to lose sessions in progress.  Once a new lease is +   obtained, Mac OS will not allocate further connections using the +   autoconfigured IP address. + +   Mac OS systems do not send packets addressed to a Link-Local address +   to the default gateway if one is present; these addresses are always +   resolved on the local segment. + +   Mac OS systems by default send all outgoing unicast packets with a +   TTL of 255.  All multicast and broadcast packets are also sent with a +   TTL of 255 if they have a source address in the 169.254/16 prefix. + +   Mac OS implements media sense where the hardware (and driver +   software) supports this.  As soon as network connectivity is +   detected, a DHCPDISCOVER will be sent on the interface.  This means +   that systems will immediately transition out of autoconfigured mode +   as soon as connectivity is restored. + +A.2.  Apple Mac OS X Version 10.2 + +   Mac OS X chooses the IP address on a pseudo-random basis.  The +   selected address is saved in memory so that it can be re-used during +   subsequent autoconfiguration attempts during a single boot of the +   system. + + + + + + +Cheshire, et al.            Standards Track                    [Page 28] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   Autoconfiguration of a Link-Local address depends on the results of +   the DHCP process.  DHCP sends two packets, with timeouts of one and +   two seconds.  If no response is received (three seconds), it begins +   autoconfiguration.  DHCP continues sending packets in parallel for a +   total time of 60 seconds. + +   At the start of autoconfiguration, it generates 10 unique random IP +   addresses, and probes each one in turn for 2 seconds.  It stops +   probing after finding an address that is not in use, or the list of +   addresses is exhausted. + +   If DHCP is not successful, it waits five minutes before starting over +   again.  Once DHCP is successful, the autoconfigured Link-Local +   address is given up.  The Link-Local subnet, however, remains +   configured. + +   Autoconfiguration is only attempted on a single interface at any +   given moment in time. + +   Mac OS X ensures that the connected interface with the highest +   priority is associated with the Link-Local subnet.  Packets addressed +   to a Link-Local address are never sent to the default gateway, if one +   is present.  Link-local addresses are always resolved on the local +   segment. + +   Mac OS X implements media sense where the hardware and driver support +   it.  When the network media indicates that it has been connected, the +   autoconfiguration process begins again, and attempts to re-use the +   previously assigned Link-Local address.  When the network media +   indicates that it has been disconnected, the system waits four +   seconds before de-configuring the Link-Local address and subnet.  If +   the connection is restored before that time, the autoconfiguration +   process begins again.  If the connection is not restored before that +   time, the system chooses another interface to autoconfigure. + +   Mac OS X by default sends all outgoing unicast packets with a TTL of +   255.  All multicast and broadcast packets are also sent with a TTL of +   255 if they have a source address in the 169.254/16 prefix. + +A.3.  Microsoft Windows 98/98SE + +   Windows 98/98SE systems choose their IPv4 Link-Local address on a +   pseudo-random basis.  The address selection algorithm is based on +   computing a hash on the interface's MAC address, so that a large +   collection of hosts should obey the uniform probability distribution +   in choosing addresses within the 169.254/16 address space.  Deriving + + + + + +Cheshire, et al.            Standards Track                    [Page 29] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   the initial IPv4 Link-Local address from the interface's MAC address +   also ensures that systems rebooting will obtain the same +   autoconfigured address, unless a conflict is detected. + +   When in INIT state, the Windows 98/98SE DHCP Client sends out a total +   of 4 DHCPDISCOVERs, with an inter-packet interval of 6 seconds.  When +   no response is received after all 4 packets (24 seconds), it will +   autoconfigure an address. + +   The autoconfigure retry count for Windows 98/98SE systems is 10. +   After trying 10 autoconfigured IPv4 addresses, and finding all are +   taken, the host will boot without an IPv4 address. + +   Autoconfigured Windows 98/98SE systems check for the presence of a +   DHCP server every five minutes.  If a DHCP server is found but +   Windows 98 is not successful in obtaining a new lease, it keeps the +   existing autoconfigured IPv4 Link-Local address.  If Windows 98/98SE +   is successful at obtaining a new lease, it drops all existing +   connections without warning.  This may cause users to lose sessions +   in progress.  Once a new lease is obtained, Windows 98/98SE will not +   allocate further connections using the autoconfigured IPv4 Link-Local +   address. + +   Windows 98/98SE systems with an IPv4 Link-Local address do not send +   packets addressed to an IPv4 Link-Local address to the default +   gateway if one is present; these addresses are always resolved on the +   local segment. + +   Windows 98/98SE systems by default send all outgoing unicast packets +   with a TTL of 128.  TTL configuration is performed by setting the +   Windows Registry Key +   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\ +   Parameters\DefaultTTL of type REG_DWORD to the appropriate value. +   However, this default TTL will apply to all packets.  While this +   facility could be used to set the default TTL to 255, it cannot be +   used to set the default TTL of IPv4 Link-Local packets to one (1), +   while allowing other packets to be sent with a TTL larger than one. + +   Windows 98/98SE systems do not implement media sense.  This means +   that network connectivity issues (such as a loose cable) may prevent +   a system from contacting the DHCP server, thereby causing it to +   auto-configure.  When the connectivity problem is fixed (such as when +   the cable is re-connected) the situation will not immediately correct +   itself.  Since the system will not sense the re-connection, it will +   remain in autoconfigured mode until an attempt is made to reach the +   DHCP server. + + + + + +Cheshire, et al.            Standards Track                    [Page 30] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +   The DHCP server included with Windows 98SE Internet Connection +   Sharing (ICS) (a NAT implementation) allocates out of the 192.168/16 +   private address space by default. + +   However, it is possible to change the allocation prefix via a +   registry key, and no checks are made to prevent allocation out of the +   IPv4 Link-Local prefix.  When configured to do so, Windows 98SE ICS +   will rewrite packets from the IPv4 Link-Local prefix and forward them +   beyond the local link.  Windows 98SE ICS does not automatically route +   for the IPv4 Link-Local prefix, so that hosts obtaining addresses via +   DHCP cannot communicate with autoconfigured-only devices. + +   Other home gateways exist that allocate addresses out of the IPv4 +   Link-Local prefix by default.  Windows 98/98SE systems can use a +   169.254/16 IPv4 Link-Local address as the source address when +   communicating with non-Link-Local hosts.  Windows 98/98SE does not +   support router solicitation/advertisement.  Windows 98/98SE systems +   will not automatically discover a default gateway when in +   autoconfigured mode. + +A.4.  Windows XP, 2000, and ME + +   The autoconfiguration behavior of Windows XP, Windows 2000, and +   Windows ME systems is identical to Windows 98/98SE except in the +   following respects: + +   Media Sense +   Router Discovery +   Silent RIP + +   Windows XP, 2000, and ME implement media sense.  As soon as network +   connectivity is detected, a DHCPREQUEST or DHCPDISCOVER will be sent +   on the interface.  This means that systems will immediately +   transition out of autoconfigured mode as soon as connectivity is +   restored. + +   Windows XP, 2000, and ME also support router discovery, although it +   is turned off by default.  Windows XP and 2000 also support a RIP +   listener.  This means that they may inadvertently discover a default +   gateway while in autoconfigured mode. + +   ICS on Windows XP/2000/ME behaves identically to Windows 98SE with +   respect to address allocation and NATing of Link-Local prefixes. + + + + + + + + +Cheshire, et al.            Standards Track                    [Page 31] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +Authors' Addresses + +   Stuart Cheshire +   Apple Computer, Inc. +   1 Infinite Loop +   Cupertino +   California 95014, USA + +   Phone: +1 408 974 3207 +   EMail: rfc@stuartcheshire.org + + +   Bernard Aboba +   Microsoft Corporation +   One Microsoft Way +   Redmond, WA 98052 + +   Phone: +1 425 818 4011 +   EMail: bernarda@microsoft.com + + +   Erik Guttman +   Sun Microsystems +   Eichhoelzelstr. 7 +   74915 Waibstadt Germany + +   Phone: +49 7263 911 701 +   EMail: erik@spybeam.org + + + + + + + + + + + + + + + + + + + + + + + +Cheshire, et al.            Standards Track                    [Page 32] + +RFC 3927                    IPv4 Link-Local                     May 2005 + + +Full Copyright Statement + +   Copyright (C) The Internet Society (2005). + +   This document is subject to the rights, licenses and restrictions +   contained in BCP 78, and except as set forth therein, the authors +   retain all their rights. + +   This document and the information contained herein are provided on an +   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS +   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET +   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, +   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE +   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED +   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + +   The IETF takes no position regarding the validity or scope of any +   Intellectual Property Rights or other rights that might be claimed to +   pertain to the implementation or use of the technology described in +   this document or the extent to which any license under such rights +   might or might not be available; nor does it represent that it has +   made any independent effort to identify any such rights.  Information +   on the procedures with respect to rights in RFC documents can be +   found in BCP 78 and BCP 79. + +   Copies of IPR disclosures made to the IETF Secretariat and any +   assurances of licenses to be made available, or the result of an +   attempt made to obtain a general license or permission for the use of +   such proprietary rights by implementers or users of this +   specification can be obtained from the IETF on-line IPR repository at +   http://www.ietf.org/ipr. + +   The IETF invites any interested party to bring to its attention any +   copyrights, patents or patent applications, or other proprietary +   rights that may cover technology that may be required to implement +   this standard.  Please address the information to the IETF at ietf- +   ipr@ietf.org. + +Acknowledgement + +   Funding for the RFC Editor function is currently provided by the +   Internet Society. + + + + + + + +Cheshire, et al.            Standards Track                    [Page 33] + |