Date: Fri, 8 Oct 1999 19:00:06 -0500 (CDT) From: Mohit Aron <aron@cs.rice.edu> To: freebsd-bugs@freebsd.org Cc: freebsd-net@freebsd.org, alc@cs.rice.edu (Alan Cox) Subject: arp errors on machines with two interfaces Message-ID: <199910090000.TAA28762@cs.rice.edu>
next in thread | raw e-mail | index | archive | help
Hi,
whenever I have a FreeBSD machine containing two interfaces connected
to switched 100Mbps Ethernet, I keep getting arp errors of the form:
arp: 128.42.1.30 is on fxp0 but got reply from 08:00:20:87:90:92 on fxp1
Here's an output of 'uname -a' on my machine:
FreeBSD idli.cs.rice.edu 3.3-RELEASE FreeBSD 3.3-RELEASE #7: Fri Oct 8
17:31:12 CDT 1999 aron@idli.cs.rice.edu:/usr/users/aron/FreeBSD-3.3-src/sys/compile/IDLI i386
I managed to find the source of these error reports. The steps below outline
what happens.
1) The FreeBSD machine in question is idli.cs.rice.edu and has two
network interfaces fxp0 and fxp1. The routing tables are set such that
all packets to machine cs.rice.edu (128.42.1.30) are routed through
interface fxp0.
2) Any communication between idli.cs.rice.edu and cs.rice.edu results in
cs.rice.edu's address to be stored in the arp cache of
idli.cs.rice.edu. Lets assume that this has happened.
3) Assume now that someone on cs.rice.edu does a login to a 3rd machine
foo.cs.rice.edu. cs.rice.edu sends an arp broadcast on the network
asking for foo.cs.rice.edu's ethernet address. This broadcast is
received on both the interfaces of idli.cs.rice.edu.
4) Upon getting arp packets from cs.rice.edu, idli.cs.rice.edu gets a
chance to refresh the address of cs.rice.edu in its arp cache (although
idli.cs.rice.edu won't reply to the arp query). The processing for the
arp packet received on interface fxp0 happens without any problem.
5) However, the processing for the arp packet received on interface fxp1
raises an arp error. This is because the routing table entry indicates
that arp packets from cs.rice.edu should arrive on interface fxp0.
This raises the arp errors that keep flooding the message log. The
code in question is in sys/netinet/if_ether.c in the function
in_arpinput().
Is there a better way to fix the problem other than simply turning the
error report off ?
- Mohit
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199910090000.TAA28762>
