[ovs-dev] [PATCH] INTERNALS: Describe SLB bonding.

Ian Campbell ijc at hellion.org.uk
Mon Jul 25 09:42:26 UTC 2011


FWIW with my "implemented the Linux Bridge version of much of this mess"
hat on this looks good to me.

Acked-by: Ian Campbell <ian.campbell at citrix.com>

On Fri, 2011-07-22 at 13:57 -0700, Ben Pfaff wrote:
> ---
>  vswitchd/INTERNALS |   78 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 78 insertions(+), 0 deletions(-)
> 
> diff --git a/vswitchd/INTERNALS b/vswitchd/INTERNALS
> index 6c1bdc1..86db369 100644
> --- a/vswitchd/INTERNALS
> +++ b/vswitchd/INTERNALS
> @@ -129,3 +129,81 @@ least 0.1.
>  Currently, "significantly more loaded" means that H must carry at
>  least 1 Mbps more traffic, and that traffic must be at least 3%
>  greater than L's.
> +
> +Bond Balance Modes
> +------------------
> +
> +Each bond balancing mode has different considerations, described
> +below.
> +
> +LACP Bonding
> +------------
> +
> +LACP bonding requires the remote switch to implement LACP, but it is
> +otherwise very simple in that, after LACP negotiation is complete,
> +there is no need for special handling of received packets.
> +
> +SLB Bonding
> +-----------
> +
> +SLB bonding allows a limited form of load balancing without the remote
> +switch's knowledge or cooperation.  The basics of SLB are simple.  SLB
> +assigns each source MAC+VLAN pair to a link and transmits all packets
> +from that MAC+VLAN through that link.  Learning in the remote switch
> +causes it to send packets to that MAC+VLAN through the same link.
> +
> +SLB bonding has the following complications:
> +
> +   1. When the remote switch receives a multicast or broadcast packet
> +      from a port not on the SLB bond, it will forward it to all of
> +      the links in the SLB bond.  This would cause packet duplication
> +      if not handled specially.
> +
> +      Open vSwitch avoids packet duplication by accepting multicast
> +      and broadcast packets on only the active slave, and dropping
> +      multicast and broadcast packets on all other slaves.
> +
> +   2. When Open vSwitch forwards a multicast or broadcast packet to a
> +      link in the SLB bond other than the active slave, the remote
> +      switch will forward it to all of the other links in the SLB
> +      bond, including the active slave.  Without special handling,
> +      this would mean that Open vSwitch would forward a second copy of
> +      the packet to each switch port (other than the bond), including
> +      the port that originated the packet.
> +
> +      Open vSwitch deals with this case by dropping packets received
> +      on any SLB bonded link that have a source MAC+VLAN that has been
> +      learned on any other port.  (This means that SLB as implemented
> +      in Open vSwitch relies critically on MAC learning.  Notably, SLB
> +      is incompatible with the "flood_vlans" feature.)
> +
> +   3. Suppose that a MAC+VLAN moves to an SLB bond from another port
> +      (e.g. when a VM is migrated from this hypervisor to a different
> +      one).  Without additional special handling, Open vSwitch will
> +      not notice until the MAC learning entry expires, up to 60
> +      seconds later as a consequence of rule #2.
> +
> +      Open vSwitch avoids a 60-second delay by listening for
> +      gratuitous ARPs, which VMs commonly emit upon migration.  As an
> +      exception to rule #2, a gratuitous ARP received on an SLB bond
> +      is not dropped and updates the MAC learning table in the usual
> +      way.  (If a move does not trigger a gratuitous ARP, or if the
> +      gratuitous ARP is lost in the network, then a 60-second delay
> +      still occurs.)
> +
> +   4. Suppose that a MAC+VLAN moves from an SLB bond to another port
> +      (e.g. when a VM is migrated from a different hypervisor to this
> +      one), that the MAC+VLAN emits a gratuitous ARP, and that Open
> +      vSwitch forwards that gratuitous ARP to a link in the SLB bond
> +      other than the active slave.  The remote switch will forward the
> +      gratuitous ARP to all of the other links in the SLB bond,
> +      including the active slave.  Without additional special
> +      handling, this would mean that Open vSwitch would learn that the
> +      MAC+VLAN was located on the SLB bond, as a consequence of rule
> +      #3.
> +
> +      Open vSwitch avoids this problem by "locking" the MAC learning
> +      table entry for a MAC+VLAN from which a gratuitous ARP was
> +      received from a non-SLB bond port.  For 5 seconds, a locked MAC
> +      learning table entry will not be updated based on a gratuitous
> +      ARP received on a SLB bond.

-- 
Ian Campbell

There are no answers, only cross-references.
		-- Weiner




More information about the dev mailing list