svn commit: r306577 - head/sys/netinet

Kubilay Kocak koobs at FreeBSD.org
Sun Oct 30 09:45:33 UTC 2016


On 2/10/2016 12:42 PM, Eric van Gyzen wrote:
> Author: vangyzen Date: Sun Oct  2 01:42:45 2016 New Revision: 306577 
> URL: https://svnweb.freebsd.org/changeset/base/306577
> 
> Log: Add GARP retransmit capability
> 
> A single gratuitous ARP (GARP) is always transmitted when an IPv4 
> address is added to an interface, and that is usually sufficient. 
> However, in some circumstances, such as when a shared address is 
> passed between cluster nodes, this single GARP may occasionally be 
> dropped or lost.  This can lead to neighbors on the network link 
> working with a stale ARP cache and sending packets destined for that
> address to the node that previously owned the address, which may not
> respond.
> 
> To avoid this situation, GARP retransmissions can be enabled by
> setting the net.link.ether.inet.garp_rexmit_count sysctl to a value
> greater than zero.  The setting represents the maximum number of
> retransmissions. The interval between retransmissions is calculated
> using an exponential backoff algorithm, doubling each time, so the
> retransmission intervals are: {1, 2, 4, 8, 16, ...} (seconds).
> 
> Due to the exponential backoff algorithm used for the interval 
> between GARP retransmissions, the maximum number of retransmissions 
> is limited to 16 for sanity.  This limit corresponds to a maximum 
> interval between retransmissions of 2^16 seconds ~= 18 hours. 
> Increasing this limit is possible, but sending out GARPs spaced days
> apart would be of little use.
> 

Thanks for this David & Eric

I presume this is (or would be) quite complementary to D4111 [1]
(Gratuitous ARP's for lagg(4) failover) when it lands? I'm thinking
particularly given the various states upstream switch ports can have
during topology changes.

[1] https://reviews.freebsd.org/D4111

./koobs




More information about the svn-src-all mailing list