> I sent out a patch for formal review:
>        http://openvswitch.org/pipermail/dev/2016-May/070666.html

Thanks Ben. I tested on master and it fixes the mdb problem.

The next problem is that any existing flows don't seem to get updated
or invalidated after the mdb gets another entry for a group. I'm using
OpenStack with a Neutron VLAN provider network. Multicast is enabled
on br-int and not on the physical bridge. The physical switch has an
IGMP querier running on the VLAN.
And other_config:mcast-snooping-disable-flood-unregistered=true.

Here are the steps to reproduce:
On another node iperf is sending to a mcast group on the VLAN:
# iperf -c 226.94.1.1 -u -b 1M -t 3600

On a VM start iperf listening to the group:
$ iperf -s -u -B 226.94.1.1

It appears in the mdb:
# ovs-appctl mdb/show br-int
 port  VLAN  GROUP                Age
    3     1  226.94.1.1           2
   19     1  querier              20

The VM starts receiving packets and there is a flow:

# ovs-dpctl dump-flows | grep 01:00:5e:5e:01:01
in_port(19),eth(src=fa:16:3e:da:c1:08,dst=01:00:5e:5e:01:01),eth_type(
0x8100),vlan(vid=32,pcp=0),encap(eth_type(0x0800),ipv4(dst=226.94.1.1,
proto=17,frag=no)), packets:2694, bytes:4073328, used:0.004s,
actions:8,pop_vlan,7

Now in another VM on the same host, start another iperf listening on
the same group. The mdb gets updated and shows 2 ports

# ovs-appctl mdb/show br-int
 port  VLAN  GROUP                Age
    1     1  226.94.1.1           9
    3     1  226.94.1.1           7
   19     1  querier              17

But the new VM does not receive packets and the flow did not get
updated.

in_port(19),eth(src=fa:16:3e:da:c1:08,dst=01:00:5e:5e:01:01),eth_type(
0x8100),vlan(vid=32,pcp=0),encap(eth_type(0x0800),ipv4(dst=226.94.1.1,
proto=17,frag=no)), packets:10835, bytes:16382520, used:0.000s,
actions:8,pop_vlan,7

Stop the sending iperf and the flow expires after 10 seconds.
Now with both VMs listening, start the sending iperf, and both VMs
start receiving and the flow has both ports:

# ovs-dpctl dump-flows | grep 01:00:5e:5e:01:01
in_port(19),eth(src=fa:16:3e:da:c1:08,dst=01:00:5e:5e:01:01),eth_type(
0x8100),vlan(vid=32,pcp=0),encap(eth_type(0x0800),ipv4(dst=226.94.1.1,
proto=17,frag=no)), packets:365, bytes:551880, used:0.013s,
actions:8,pop_vlan,7,9

Also stopping an iperf listener causes its port to be removed from the
flow immediately.

root@pod30-cp1-comp0004-mgmt:/home/stack# ovs-dpctl show
...
        port 7: qvof52d0100-c2
        port 8: br-bond1 (internal)
        port 9: qvobcaee33d-39
...
# ovs-ofctl show br-int
...
 1(qvobcaee33d-39)
 3(qvof52d0100-c2)
 19(int-br-bond1)
...

Thanks,
Darragh.
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to