Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Sep 2016 16:52:35 +0100
From:      Steven Hartland <killing@multiplay.co.uk>
To:        Gleb Smirnoff <glebius@FreeBSD.org>
Cc:        Ryan Stone <rysto32@gmail.com>, Kubilay Kocak <koobs@freebsd.org>, freebsd-net <freebsd-net@freebsd.org>, Karl Pielorz <kpielorz_lst@tdx.co.uk>
Subject:   Re: lagg Interfaces - don't do Gratuitous ARP?
Message-ID:  <0c678da4-bf72-5a81-aee1-d82a873661b7@multiplay.co.uk>
In-Reply-To: <20160922154144.GO1018@cell.glebi.us>
References:  <0D84203FAAFD0A8E7BBB24A3@10.12.30.106> <bc33560b-59bc-01be-6a5d-7994ac121258@multiplay.co.uk> <6E574F1B61786E6032824A88@10.12.30.106> <2c62f5f0-3fb4-f513-2a8f-02de3a1d552f@FreeBSD.org> <20160921235703.GG1018@cell.glebi.us> <CAFMmRNwZBEJ9Me4FSh=W7fRNjm4344jiUGuJqX8KUB_0sWcajA@mail.gmail.com> <20160922025856.GH1018@cell.glebi.us> <348d534d-ef87-f90c-aa43-cc65c2f6283c@multiplay.co.uk> <20160922150940.GK1018@cell.glebi.us> <f4100561-4977-0b19-c245-0cd09438943d@multiplay.co.uk> <20160922154144.GO1018@cell.glebi.us>

next in thread | previous in thread | raw e-mail | index | archive | help
On 22/09/2016 16:41, Gleb Smirnoff wrote:
> On Thu, Sep 22, 2016 at 04:34:03PM +0100, Steven Hartland wrote:
> S> On 22/09/2016 16:09, Gleb Smirnoff wrote:
> S> > On Thu, Sep 22, 2016 at 08:21:08AM +0100, Steven Hartland wrote:
> S> > S> On 22/09/2016 03:58, Gleb Smirnoff wrote:
> S> > S> > On Wed, Sep 21, 2016 at 09:12:11PM -0400, Ryan Stone wrote:
> S> > S> > R> > IMHO, the original patch was absolutely evil hack touching multiple
> S> > S> > R> > layers, for the sake of a very special problem.
> S> > S> > R> >
> S> > S> > R> > I think, that in order to kick forwarding table on switches, lagg
> S> > S> > R> > should:
> S> > S> > R> >
> S> > S> > R> > - allocate an mbuf itself
> S> > S> > R> > - set its source hardware address to its own
> S> > S> > R> > - set destination hardware to broadcast
> S> > S> > R> > - put some payload in there, to make packet of valid size. Why should it be
> S> > S> > R> >   gratuitous ARP? A machine can be running IPv6 only, or may even use
> S> > S> > R> > whatever
> S> > S> > R> >   higher level protocol, e.g. PPPoE. We shouldn't involve IP into this
> S> > S> > R> > Layer 2
> S> > S> > R> >   problem at all.
> S> > S> > R> > - Finally, send the prepared mbuf down the lagg member(s).
> S> > S> > R> >
> S> > S> > R> > And please don't hack half of the network stack to achieve that :)
> S> > S> > R>
> S> > S> > R> The original report in this thread is about a system where it takes almost
> S> > S> > R> 15 minutes for the network to start working again after a failover.  That
> S> > S> > R> does not sound to me like a switch problem.  That sounds to me like the ARP
> S> > S> > R> cache on the remote system.  To fix such a case we have to touch L3.
> S> > S> >
> S> > S> > Does lagg(4) hardware address change when it failovers?
> S> > S> >
> S> > S> It moves the address between interfaces which typically moves it between
> S> > S> switches too.
> S> >
> S> > So, the address doesn't change, which means ARP cache doesn't need to
> S> > change as well. If it moves between switches, all that needs to be done
> S> > is to send whatever packet from proper hardware address to broadcast.
> S> >
> S> That would be nice but unfortunately in the wild that won't work as
> S> without GARP devices can and do ignore :(
>
> You can create a fake gratious ARP packet, if you want. Switches must not
> require IP addresses matching the reality in the packet.
>
> P.S. I always read GARP as Generic Attribute Registration Protocol.
>
We could but then what happens when its IPv6 or $other protocol that 
needs to know? That would require lagg to be edited with all the special 
cases instead of allowing the protocol to handle it they way it needs.

Overall, while the proposed change (https://reviews.freebsd.org/D4111) 
does involve changes to multiple layers it still feels like the right 
approach as it has the right layer dealing with the change instead of 
hard-coded assumptions.

     Regards
     Steve



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0c678da4-bf72-5a81-aee1-d82a873661b7>