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