1852 lines
81 KiB
Plaintext
1852 lines
81 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
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]
|
||
|