physical: Fix implementation of logical patch ports.
authorBen Pfaff <blp@nicira.com>
Sat, 17 Oct 2015 06:36:38 +0000 (23:36 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 19 Oct 2015 15:46:18 +0000 (08:46 -0700)
commit0b7da177d1321373728370dae414e10a53fd748a
tree2415ea36ccafd4f74449d612d6dbe8be6119dc92
parentb49708371ed6e8d131958e3d602d49072db59bc1
physical: Fix implementation of logical patch ports.

Logical patch ports do not have a physical location and effectively reside
on every hypervisor.  This is fine for unicast output to logical patch
ports.  However, when a logical patch port is part of a logical multicast
group, lumping them together with the other "local" ports in a multicast
group yields packet duplication, because every hypervisor to which the
packet is tunneled re-outputs it to the logical patch port.

This commit fixes the problem, by treating logical patch ports as remote
rather than local when they are part of a logical multicast group.  This
yields exactly-once semantics.

Found while testing implementation of ARP in OVN logical router.  The
following commit adds a test that fails without this fix.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
ovn/controller/physical.c
ovn/ovn-architecture.7.xml