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 
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 
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.

freebsd-net@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to