From: "Nicolas de Pesloüan" <nicolas.2p.debian@gmail.com>
To: Jay Vosburgh <fubar@us.ibm.com>, Jiri Pirko <jiri@resnulli.us>
Cc: Chris Friesen <chris.friesen@genband.com>,
netdev <netdev@vger.kernel.org>,
andy@greyhouse.net
Subject: Re: bonding and SR-IOV -- do we need arp_validation for loadbalancing too?
Date: Tue, 24 Jul 2012 23:15:59 +0200 [thread overview]
Message-ID: <500F108F.6020706@gmail.com> (raw)
In-Reply-To: <24104.1343162975@death.nxdomain>
Le 24/07/2012 22:49, Jay Vosburgh a écrit :
[...]
>> In loadbalance mode wouldn't it just work similar to active-backup? If
>> it's a reply then verify that it came from the arp target, if it's a
>> request then check to see if it came from one of the other slaves.
>
> The problem isn't verifying the requests or replies, it's that
> the ARP packets are not distributed across all slaves (because the
> switch ports are in a channel group / aggregator), so some slaves do not
> receive any ARPs.
>
> The bond sends the ARP request as a broadcast. For
> active-backup, this ends up at the inactive slaves because the switch
> sends the broadcast to all ports. For a loadbalance mode, the switch
> won't send the broadcast ARP to the other slaves, because all the slaves
> are in a channel group or lacp aggregator, which is treated by the
> switch as effectively a single switch port for this case.
>
> Similarly, the ARP replies are unicast, and the switch will send
> those unicast replies to only one member of the channel group or
> aggregator. The choice there is usually a hash of some kind, so
> generally only one slave will receive the replies.
I assume team should suffer the exact same problem, because most of this is on the switch side and
out of the control of the host. Jiri, can you confirm?
[...]
> I believe bonding is the main user of last_rx (a search shows a
> couple of drivers using it internally). For bonding use, in current
> mainline last_rx is set by bonding itself, not in the network device
> driver.
If last_rx is set and used internally by bonding and mostly unused elsewhere, can't we remove it
from net_device and move it into private data for the slaves in bonding?
A comment in netdevice.h even recommends not to set it into drivers:
unsigned long last_rx; /* Time of last Rx
* This should not be set in
* drivers, unless really needed,
* because network stack (bonding)
* use it if/when necessary, to
* avoid dirtying this cache line.
*/
Nicolas.
next prev parent reply other threads:[~2012-07-24 21:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-24 15:57 bonding and SR-IOV -- do we need arp_validation for loadbalancing too? Chris Friesen
2012-07-24 16:42 ` Jiri Pirko
2012-07-24 18:13 ` Jay Vosburgh
2012-07-24 20:18 ` Chris Friesen
2012-07-24 20:38 ` Chris Friesen
2012-07-24 20:49 ` Jay Vosburgh
2012-07-24 21:15 ` Nicolas de Pesloüan [this message]
2012-07-24 21:38 ` Chris Friesen
2012-07-27 14:55 ` Andy Gospodarek
2012-07-27 16:15 ` Chris Friesen
2012-07-27 17:13 ` Andy Gospodarek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=500F108F.6020706@gmail.com \
--to=nicolas.2p.debian@gmail.com \
--cc=andy@greyhouse.net \
--cc=chris.friesen@genband.com \
--cc=fubar@us.ibm.com \
--cc=jiri@resnulli.us \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.