Subject: ARP problems.
To: None <tech-net@netbsd.org>
From: None <ragge@ludd.luth.se>
List: tech-net
Date: 03/19/2004 19:02:06
The ARP implementation in NetBSD will delete an existing ARP entry
after arpt_keep seconds (20 minutes), regardless whether there are 
traffic on the interface or not, and do a new ARP request if a new 
packet is sent out for that route.  While this is OK for slow links,
it is a disaster for high-speed long-distance communications.

As an example, when the ARP entry on the path of a TCP flow running
at 4Gbit over a distance of > 10000km times out, it may take 5-10ms
for the entry to be renewed, and during that time ~1500 packets may
be lost, which will effectively stop the transfer.

A solution to this is to send out a new ARP request some time before
the entry is removed (if the routing entry has been active since the
last ARP update), and let the reply refresh the ARP entry, hence 
avoid the arp entry update delay time.

I plan to implement this and send out patches unless someone else
have another better way of solving the ARP problem.

-- Ragge