On Wed, Aug 14, 2013 at 12:40:19PM -0700, Peter Wemm wrote: > On Wed, Aug 14, 2013 at 11:11 AM, Adrian Chadd <adr...@freebsd.org> wrote: > > On 14 August 2013 04:47, Lev Serebryakov <l...@freebsd.org> wrote: > > > > > >> And we should invalidate this info on ARP/route changes, or connection > >> will be lost in such cases, am I right?.. So, on each such event code > >> should look into all sockets and check, if routing/ARP information is > >> still > >> valid for them. Or we should store lists of sockets in routing and ARP > >> tables... I don't know, what is worse. > >> > > > > .. or per-CPU copies of the ARP table.. ? > > Local cache at each consumer and check a generation number to see if > it needs to be re-validated before using. The obvious problem with > this though is that big networks tend to kill your caches.
if you expect this to be problematic you can partition the entries and use a different generation number per cluster. Anyways if you really want to be guaranteed you need atomic reads on the generation numbers (or ticks), which I have heard are expensive on !i386/amd64 machines. This is why I would probably try to live with races (which for arp are a non problem). cheers luigi _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"