Our Linux IP offload guy was testing our Solaris offload
stuff (that I helped port from Linux) on snv_111a. One of the
things that can be problematic in some cases is address
resolution, so one of his test scripts clears the arp
table.
He was testing on 2 machines with the IP addresses 10.0.0.1
and 10.0.0.2, and his script did (on *both*):
arp -d 10.0.0.1
arp -d 10.0.0.2
Prior to his script running, arp -an would show the following
on 10.0.0.1:
myri0 10.0.0.2 255.255.255.255 00:60:dd:47:7d:ce
myri0 10.0.0.1 255.255.255.255 SPLA 00:60:dd:47:e1:db
myri0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00
After his script:
myri0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00
After that, all normal IP connectivity was lost between
the machines. Running snoop on 10.0.0.1 when it was
trying to ping 10.0.0.2 would show no packets even
being sent.
Fiddling with the network configuration (as simple as ifconfig
myri0 down; ifconfig myri0 up) restored the local (marked SPLA)
arp entries, and connectivity was restored.
So.. Is it intentional that deleting an interface's local arp
entry is possible, or is it a side effect of some Solaris
implementation detail? Solaris seems to be the only major OS
that allows this sort of foot shooting.
On Linux, for example, it seems that arp entries for local interfaces
are not even included in arp -a output, so it is impossible to shoot
your foot in this manner. On BSD, they're there, but deleting them
seems to succeed, but actually does nothing.
From FreeBSD 8:
# arp -an | grep mxge
? (192.168.1.15) at 00:60:dd:46:d4:d0 on mxge0 permanent [ethernet]
? (192.168.1.16) at 00:60:dd:46:d4:a4 on mxge0 [ethernet]
# arp -d 192.168.1.15
192.168.1.15 (192.168.1.15) deleted
# arp -d 192.168.1.16
192.168.1.16 (192.168.1.16) deleted
# ping 192.168.1.16
PING 192.168.1.16 (192.168.1.16): 56 data bytes
64 bytes from 192.168.1.16: icmp_seq=0 ttl=64 time=0.130 ms
^C
--- 192.168.1.16 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.130/0.130/0.130/0.000 ms
# arp -an | grep mxge
? (192.168.1.15) at 00:60:dd:46:d4:d0 on mxge0 permanent [ethernet]
? (192.168.1.16) at 00:60:dd:46:d4:a4 on mxge0 [ethernet]
It seems like the BSD behavior might be preferrable here..
Thanks,
Drew
_______________________________________________
networking-discuss mailing list
[email protected]