Subject: LL17 Hosts with configured addresses MUST ARP for v4 LL addresses

From: Stuart Cheshire <[email-masked]>
Date: Tue, 11 Feb 2003 19:35:15 -0800

Thomas Narten pointed out the ambiguity in the following text:

> If the destination address is in the 169.254/16 prefix (including the
> 169.254.255.255 broadcast address), the host SHOULD use its link-
> local source address, if it has one. If the host does not have a
> link-local source address, then it MUST ARP for the destination
> address and then send its packet, with a routable source IP address
> and a link-local destination IP address, directly to the destination
> on the same physical link. 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 destination address
> to any router for forwarding.

I propose the following text instead:

   If the destination address is in the 169.254/16 prefix (including
   the 169.254.255.255 broadcast address), the host SHOULD use its
   link-local source address, if it has one. If the host does not
   have a link-local source address, then it SHOULD use an
   appropriate routable source IP address, if it has one. In
   either case, the host MUST use ARP in the usual way to map the
   destination IP address to a destination hardware address address,
   and then send its packet directly to the destination on the same
   physical link. 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
   destination address to any router for forwarding.

Some have proposed splitting the text into two sections.
I do not think this is necessary, but I would not oppose it.

Stuart

---

From: Keith Moore <[email-masked]>
Date: Wed, 12 Feb 2003 11:54:15 -0500

>    link-local source address, if it has one. 

strongly disagree.  SHOULD always use a routable source address in
preference to a LL source address.

---

From: "s. goswami" <[email-masked]>
Date: Wed, 12 Feb 2003 12:52:52 -0500 (EST)

In the above two  issues it is mentioned

"The host MUST NOT send the packet to any router for forward"

at several places.

These issues are not really resolved unless the following
are addressed.

i.  How does the v4LL interface know which is a router ?
ii. How does the v4LL interface implement the "NOT send the packet to any
router" scheme ?

In LL17 Erik has provided a hint on how to manipulate routing
table to make sure routable IP addresses are  indeed on the
link. A similar clarification for  "NOT send the packet to any router"
is required.

Subrata

---

From: "Philip Nye" <[email-masked]>
Date: Wed, 12 Feb 2003 21:52:50 -0000

> From: "s. goswami" <[email-masked]>
>

There is a difference between sending a packet to a host which happens to be
a router (i.e. communicating with the host) and sending it to that router
*for forwarding*.
In the first case the packet's destination address is the router's own IP
address. In the second case the packet's destination address is different
and the hope is that the router will forward it to eventually reach it's
true destination. It is quite OK to communicate with the router itself.

So whether or not you know which hosts are routers doesn't really matter.
Just don't send packets with LL destination (or source) addresses anywhere
other than their true destination which must be on the local link. If the
destination is not on the local link you have to discard the packet and the
communication fails.

The rules for proper routable IP addresses are different.

Philip

---

From: "s. goswami" <[email-masked]>
Date: Wed, 12 Feb 2003 17:48:05 -0500 (EST)

See my comments inline.

> true destination. It is quite OK to communicate with the router itself.

So this also precludes a router between two 169.254/16 networks, right ?

> destination is not on the local link you have to discard the packet and the

This  is basically covered in ARP requirement (LL17)- why do we need
to say the same thing multiple times in different words ?

We can also say that the route table should have an entry as the
following (assuming 169.254.0.11 is the IP address on the LL interface)

Network Destination        Netmask          Gateway       Interface
169.254.0.0		255.255.0.0	   169.254.0.11	 169.254.0.11

This also would impact existing IP nodes, as in them it would be possible
to set a 169.254.x.x address and forward that to the  existing router
(which by the way would happily forward it).

---

From: Robert Elz <[email-masked]>
Date: Thu, 13 Feb 2003 17:21:46 +0700

Date:        Wed, 12 Feb 2003 12:52:52 -0500 (EST)
    From:        "s. goswami" <[email-masked]>
    Message-ID:  <[email-masked]>

  | "The host MUST NOT send the packet to any router for forward"

What this is really trying to say is that the node must not deliberately
send packets to something it knows is not the final intended destination,
with the expectation that that other node will send the packets to the
destination (LL nodes should send directly to the destination in all cases).

That's all it is trying to say - perhaps different wording to achieve
the same effect could be found (to me it is clear enough and obvious
enough as it is).

kre