bond: Sending learning packets on active-backup.
authorEthan Jackson <ethan@nicira.com>
Mon, 25 Jun 2012 22:46:44 +0000 (15:46 -0700)
committerEthan Jackson <ethan@nicira.com>
Thu, 5 Jul 2012 22:03:34 +0000 (15:03 -0700)
Suppose we have an active bond with two ports, eth1 and eth2,
attached to a standard L2 learning switch which does not know it's
participating in a bond (i.e. isn't running LACP).  Suppose eth1 is
active and therefore the L2 learning switch is forwarding traffic
to eth1 as instructed by its learning table.  Now suppose, for some
reason, OVS fails over from eth1 to eth2.  For each destination
MAC, the L2 learning switch will continue sending traffic to eth1,
which will be dropped, until either traffic from that MAC appears
on eth2, or the learning table entries expire.

To alleviate this issue, this patch sends learning packets on newly
active interfaces in active-backup bonds in order to educate the
upstream network of the change.

Requested-by: Frido Roose <fr.roose@gmail.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
AUTHORS
lib/bond.c

diff --git a/AUTHORS b/AUTHORS
index bf8c149..dec478b 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -99,6 +99,7 @@ DK Moon                 dkmoon@nicira.com
 Edwin Chiu              echiu@nicira.com
 Eivind Bulie Haanaes
 Eric Lopez              elopez@nicira.com
+Frido Roose             fr.roose@gmail.com
 Gaetano Catalli         gaetano.catalli@gmail.com
 George Shuklin          amarao@desunote.ru
 Ghanem Bahri            bahri.ghanem@gmail.com
index b9d58b4..4d711c0 100644 (file)
@@ -488,7 +488,6 @@ static bool
 may_send_learning_packets(const struct bond *bond)
 {
     return bond->lacp_status == LACP_DISABLED
-        && bond->balance != BM_AB
         && bond->balance != BM_STABLE
         && bond->active_slave;
 }