Subject: WG Action - ACCEPT LL18: Host with LL address MUST ARP for all addresses

From: Erik Guttman <[email-masked]>
Date: Thu, 11 Sep 2003 11:56:20 +0200

Action: Accept LL18

I am attempting to collate everyone's suggestions.

[1] LL18 says
  Requested Change:

The proposed change is as follows:

In Section 2.6 Change:

"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 has one. If the host does not have a routable source
address, then it MAY choose to ARP for the destination address and then
send its packet, with a Link-Local IPv4 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."

To:

"If the destination address is a unicast address outside the
169.254/16 prefix, then the host SHOULD use an appropriate routable
source address, if it has one. If the host has no appropriate
routable source address, then it MUST ARP for the destination address
and then send its packet, with a link-local source IP address and a
routable destination IP address, directly to the 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 only a link-local
address, this requirement can be paraphrased as "ARP for everything".
In many network stacks, achieving this "ARP for everything" behaviour
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 IP address."

[2] Mika suggested, with broad support

Change:
MUST ARP
To:
SHOULD ARP

[3] Bernard suggested

I'd suggest that perhaps the multi-homing issue should be explicitly
addressed in the paragraph.  For example:

"If the host has no appropriate routable source address, but is not
multi-homed, then it SHOULD ARP for the destination address and then 
send its packet, with a link-local source IP address and a routable 
destination IP address, directly to the destination on the same physical 
link."

[4] Robert Elz (with support from all other posters) revised this to

A multi-homed host needs to select an outgoing interface.
Details of that process are beyond the scope of this specification.
After selecting an interface, the multi-homed host should send
packets involving link-local addresses as specified in this
document, as if the selected interface were the host's only interface.

[5] Philip Nye suggested replacing 2.6.2 with text close to the
     below - which Bernard cleaned up to avoid repetition.

=======================================================================
Is everyone happy with the following?

Replace 2.6.1 and 2.6.2 text with

2.6.1 Source Address Usage

Since each interface on a host may have a Link-Local IPv4 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
choice about what source address to use when it sends a packet or
initiates a TCP connection.

The host SHOULD use a routable address in preference to a Link-Local
IPv4 address except for communication to peers for which the host has
an existing TCP connection at the time in which the host obtained a
routable address configuration.  For more details, see Section 1.7.

A multi-homed host needs to select an outgoing interface whether or
not the destination is a 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 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 (including the 169.254.255.255 broadcast address),
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.

The host MUST NOT send a packet with a Link-Local IPv4 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 a Link-Local source address (e.g. no routable address is
available on the selected interface), then it SHOULD ARP for the
destination address and then send its packet, with a Link-Local IPv4
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 only a link-local address, this requirement
can be paraphrased as "ARP for everything".

In many network stacks, achieving this "ARP for everything" behaviour 
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 IP address.
---------------------------------------------------------------------------
Thanks,

Erik