svn commit: r331098 - in head/sys: net netinet netinet6

Alexander V. Chernikov melifaro at freebsd.org
Thu Mar 29 23:25:09 UTC 2018


30.03.2018, 02:10, "Bjoern A. Zeeb" <bzeeb-lists at lists.zabbadoz.net>:
> On 17 Mar 2018, at 17:05, Alexander V. Chernikov wrote:
>
>>  Author: melifaro
>>  Date: Sat Mar 17 17:05:48 2018
>>  New Revision: 331098
>>  URL: https://svnweb.freebsd.org/changeset/base/331098
>>
>>  Log:
>>    Fix outgoing TCP/UDP packet drop on arp/ndp entry expiration.
>>
>>    Current arp/nd code relies on the feedback from the datapath
>>  indicating
>>     that the entry is still used. This mechanism is incorporated into
>>  the
>>     arpresolve()/nd6_resolve() routines. After the inpcb route cache
>>     introduction, the packet path for the locally-originated packets
>>  changed,
>>     passing cached lle pointer to the ether_output() directly. This
>>  resulted
>>     in the arp/ndp entry expire each time exactly after the configured
>>  max_age
>>     interval. During the small window between the ARP/NDP request and
>>  reply
>>     from the router, most of the packets got lost.
>>
>>    Fix this behaviour by plugging datapath notification code to the
>>  packet
>>     path used by route cache. Unify the notification code by using
>>  single
>>     inlined function with the per-AF callbacks.
>>
>>    Reported by: sthaug at nethelp.no
>>    Reviewed by: ae
>>    MFC after: 2 weeks
>
> Does this mean that we now take an extra lock per-packet again?
No. This codepath is triggered only when ARP/NDP state machine requires datapath feedback, e.g. at most once per second per LLE. 
>
> /bz


More information about the svn-src-head mailing list