I'm doing some work with network drivers, and have run across some strangeARP behavior in testing that seems to stem from the IPv4 stack. ARP repliesseem to ignore any mapping between devices and IP addresses, so that as longas an IP is assigned to one interface all the interfaces on a given machinewill respond to the ARP request.

As a simple example, if a server has two Ethernet cards connected to thesame network configured as 10.0.0.1 and 10.0.0.2. From a client machine,say 10.0.0.3, pinging both server addresses seems to work, but looking atthe ARP cache reveals that often one interface has responded to both ARPrequests. More interesting, if one interface is brought down the other willcontinue to respond to ARP requests and any other network traffic for thedowned adapters IP address.

In a situation where multiple adapters are on the same network segment, theLinux IPv4 stack behaves as if a many-to-many mapping of a pool of IPaddresses onto a pool of network adapters exists.

While this does provide some basic fail-over capabilities, I can't imaginethat this is expected or desired behavior. If this is the intendedbehavior, I'd be interested in hearing why ARP was implemented this way. Ifnot, I may have time to try and change this and submit a patch.

(note: I'm having trouble sending to the list from my Intel account, pleaseignore the fact that I'm sending from my mail.com account)