jamal wrote:
On Fri, 2006-31-03 at 15:26 -0800, David Daney wrote:

From: David Daney

Greetings,

When an internet host joins a network where there is no DHCP server,
it may auto-allocate an IP address by the method described in RFC
3927.  There are several user space daemons available that implement
most of the protocol (zcip, busybox, ...).  The kernel's APR driver
should function in the normal manner except that it is required to
broadcast all ARP packets that it originates in the link local address
space (169.254.0.0/16).  RFC 3927 section 2.5 explains the requirement.

The current ARP code is non-compliant because it does not broadcast
some ARP packets as required by RFC 3927.



While the patch does seem reasonable - given the link local addresses
are well defined, I am curious why is this not being done in the user
space apps you mention?

The user space apps do broadcast for the portion of the protocol used to probe and claim an address. The kernel ARP driver is relied on to satisfy normal arp requests.

The only time linux ever sends unicast ARPs is when it is pretty much
established who owns the IP address i.e neighbor is reachable.
> Broadcasts are always sent at the beginning when it hasnt been
> validated if things are sane. In other words, conflict resolution
> is achievable from user space (ex look at iproute2/ip/ifcfg).
>

This is the key. RFC 3927 section 2.5 requires broadcast on the 169.254.0.0/16 network when normally ARP would unicast.

On a switched network that has been partitioned but then healed, you may never see an address conflict unless *all* ARP packets are broadcast. For better or worse the RFC requires broadcast.

The alternative would be to disable ARP on an interface if it were configured on the 169.254.0.0/16 network and handle the entire (slightly modified) ARP protocol from a user space daemon. The current daemons do *not* do it this way.

The patch adds 13 bytes (6 machine instructions) to arp.o on on i686, from an efficiency point of view it make sense to do it in the kernel driver and not duplicate the entire ARP in user space.

I suppose one could add a configure option to conditionally include this code, but I would not go so far as to suggest it.

Thanks,
David Daney
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to