This change to xlate_normal_mcast_send_mrouters() seems to fix it:

--- ./ofproto/ofproto-dpif-xlate.c.orig 2016-11-04 15:41:12.733632616 +0000
+++ ./ofproto/ofproto-dpif-xlate.c      2016-11-04 15:43:41.494137689 +0000
@@ -2326,7 +2326,8 @@
     xcfg = ovsrcu_get(struct xlate_cfg *, &xcfgp);
     LIST_FOR_EACH(mrouter, mrouter_node, &ms->mrouter_lru) {
         mcast_xbundle = xbundle_lookup(xcfg, mrouter->port);
-        if (mcast_xbundle && mcast_xbundle != in_xbundle) {
+        if (mcast_xbundle && mcast_xbundle != in_xbundle
+            && mrouter->vlan == vlan) {
             xlate_report(ctx, "forwarding to mcast router port");
             output_normal(ctx, mcast_xbundle, vlan);
         } else if (!mcast_xbundle) {


Thanks,
Darragh.

> -----Original Message-----
> From: discuss [mailto:discuss-boun...@openvswitch.org] On Behalf Of O'Reilly,
> Darragh
> Sent: 03 November 2016 17:40
> To: b...@openvswitch.org
> Subject: [ovs-discuss] Duplicate multicast packets
> 
> Hi,
> 
> I'm running OVS 2.5.0 @be3f39c94, and I see duplicate multicast packets in the
> following scenario.
> 
> # ovs-vsctl add-br br0
> # ovs-vsctl add-port br0 bond1
> # ovs-vsctl set Bridge br0 mcast_snooping_enable=true
> # ovs-vsctl set Bridge br0 other_config:mcast-snooping-disable-flood-
> unregistered=true
> 
> Bond1 is connected to a physical switch trunk port, and 2 vlans are running
> IGMPv3 queriers. So this looks as expected:
> 
> # ovs-appctl mdb/show br0
>  port  VLAN  GROUP                Age
>     1  1725  querier              11
>     1  1728  querier               3
> 
> Now create a port on vlan 1725 to send multicast packets from:
> 
> # ovs-vsctl add-port br0 p1725 tag=1725 -- set Interface p1725 type=internal
> # ip address add 172.17.25.25/24 dev p1725
> # ip link set dev p1725 up
> # ip route add 224.0.0.0/4 dev p1725
> 
> # iperf -c 226.94.1.1 -u
> ------------------------------------------------------------
> Client connecting to 226.94.1.1, UDP port 5001
> Sending 1470 byte datagrams
> Setting multicast TTL to 1
> UDP buffer size:  208 KByte (default)
> ------------------------------------------------------------
> [  3] local 172.17.25.25 port 49108 connected with 226.94.1.1 port 5001
> [ ID] Interval       Transfer     Bandwidth
> [  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec
> [  3] Sent 893 datagrams
> 
> 
> Tcpdump on bond1 shows that ovs forwards each multicast packet twice to
> bond1.
> The kernel flow shows bond1 (15) twice in the action:
> 
> # ovs-dpctl dump-flows | grep 01:00:5e:5e:01:01
> recirc_id(0),in_port(18),eth(src=66:d1:17:8e:c8:eb,dst=01:00:5e:5e:01:01),eth_t
> ype(0x0800),ipv4(proto=17,frag=no), packets:893, bytes:1350216, used:3.612s,
> actions:push_vlan(vid=1725,pcp=0),15,15
> 
> # ovs-dpctl show | egrep "18|15"
>         port 15: bond1
>         port 18: p1725 (internal)
> 
> 
> The problem does not happen if there is only one VLAN running a IGMP querier.
> The problem does not happen if other_config:mcast-snooping-disable-flood-
> unregistered = false.
> 
> I will build and test 2.6.1 tomorrow.
> 
> Thanks,
> Darragh.
> _______________________________________________
> discuss mailing list
> discuss@openvswitch.org
> http://openvswitch.org/mailman/listinfo/discuss
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to