ARP handling in case of having multiple interfaces on same segment
Sometime, we have setting like following (say, in the migration process of changing IP networks, or perhaps wrong way of load balancing):
+----------+
|eth0 eth1 |
+----------+
| |
-------+---+------------Current implementation of Linux doesn't handle this case. The problem is ARP handling. When ARP broadcast packet comes to the host, both interfaces receive the packet, and regardless of the device, we reply to that packet. I think that we should not reply if the packet is not related to that interface. If the ARP request is for eth1's address, we should not send reply from eth0.
IIRC, I had fixed this issue six years ago, but now see same thing. Kind a dejagnu...
How do you think? For me, this is bug.
Quoted 11 lines · NIIBE Yutaka
Sometime, we have setting like following (say, in the migration process of changing IP networks, or perhaps wrong way of load balancing):
+----------+ |eth0 eth1 | +----------+ | | -------+---+------------
Quoted 6 lines
Current implementation of Linux doesn't handle this case. The problem is ARP handling. When ARP broadcast packet comes to the host, both interfaces receive the packet, and regardless of the device, we reply to that packet. I think that we should not reply if the packet is not related to that interface. If the ARP request is for eth1's address, we should not send reply from eth0.
Under later 2.2 kernels there is something called arp_filter that can be enabled to give the exact behaviour you want. Apparently it is not yet in 2.4, but I think that it should definately be added.
See the "ARP responses broken!" thread for more on this.
Chris
Signature · 4 lines
Chris Friesen | MailStop: 043/33/F10 Nortel Networks | work: (613) 765-0557 3500 Carling Avenue | fax: (613) 765-2986 Nepean, ON K2H 8E9 Canada | email: [email protected]