Core OVN supports IGMP querier we should also add support for it in the OVN driver in Neutron. In order to enable it via the OVN driver in neutron one should set: other_config:mcast_querier='true', other_config:mcast_eth_src=<smac_to_be_used_for_queries>, other_config:mcast_ip4_src=<src_ip_to_be_used_for_queries> For the smac and sip I would use the values from the logical router port connected to the switch if any. Otherwise, just set mcast_snoop as in [0] [0] https://bugzilla.redhat.com/show_bug.cgi?id=1791787
I tested igmp snooping basic scenario on RHOS-16.1-RHEL-8-20201110.n.1 (python3-networking-ovn-7.3.1-1.20200902233413.el8ost.noarch, ovn2.13-20.09.0-2.el8fdp.x86_64) with querier enabled and configured as specified in the description. IGMP snooping worked reliable. See some details below. Tested with VMs on the external network. Configured querier as follows: ovn-nbctl set Logical_Switch 620f6ceb-23d4-4cd8-b356-6ce614e46f18 other_config:mcast_eth_src=fa:16:3e:c4:31:a1 ovn-nbctl set Logical_Switch 620f6ceb-23d4-4cd8-b356-6ce614e46f18 other_config:mcast_ip4_src=10.0.0.210 After this I've seen queries each 150 seconds (half of the idle_timeout, see below) as expected. Clients were responding to the requests and were able to remain subscribed for a long time (note: without querier clients subscription was expiring automatically after idle_timeout of 300 seconds) [heat-admin@controller-0 ~]$ ovn-nbctl show switch 620f6ceb-23d4-4cd8-b356-6ce614e46f18 (neutron-2cd400a5-7ae4-430c-97d2-67a800d3821c) (aka nova) port provnet-0177dc61-3610-40f0-ab87-80c53e51b9f9 type: localnet addresses: ["unknown"] port bce25bd5-d29f-4683-9d0f-4f41d559b644 type: localport addresses: ["fa:16:3e:c4:31:a1 10.0.0.210"] port 015ae70e-c931-40e4-bc02-65c734c9ccb1 addresses: ["fa:16:3e:d3:12:12 10.0.0.240 2620:52:0:13b8::1000:53"] port 38794e02-d68d-46f4-a6d0-01ffc3b23a32 addresses: ["fa:16:3e:ff:19:05 10.0.0.219 2620:52:0:13b8::1000:95"] port 22c23731-1562-496b-a178-6ea7f6411f3d addresses: ["fa:16:3e:ba:ae:15 10.0.0.217 2620:52:0:13b8::1000:48"] port 50e05fb0-5d96-43f1-bb9c-8aa83772a637 addresses: ["fa:16:3e:30:5a:f3 10.0.0.241 2620:52:0:13b8::1000:68"] [heat-admin@controller-0 ~]$ ovn-nbctl list logical_switch _uuid : 620f6ceb-23d4-4cd8-b356-6ce614e46f18 acls : [] dns_records : [] external_ids : {"neutron:mtu"="1500", "neutron:network_name"=nova, "neutron:revision_number"="4"} forwarding_groups : [] load_balancer : [] name : neutron-2cd400a5-7ae4-430c-97d2-67a800d3821c other_config : {mcast_eth_src="fa:16:3e:c4:31:a1", mcast_flood_unregistered="false", mcast_ip4_src="10.0.0.210", mcast_snoop="true"} ports : [3d7b766f-1cd7-4024-8c69-f281c3baff4a, 50dc46c1-5f6b-4381-bf50-239d4c0d58eb, 73a32d4f-7abc-4c11-9fd3-d0c78b4840e4, 8d818d45-ddbe-49bd-8235-abf6c3365635, 9d333c4b-7972-4a31-bf50-628f6c835778, c7cae370-6fb4-4a47-a5b7-5358926402f1] qos_rules : [] [heat-admin@controller-0 ~]$ ovn-sbctl list ip_multicast _uuid : 3ce47104-3805-4aee-81fa-268b05bbe7d3 datapath : 01eabea6-a967-41ec-ad6f-32c2a037c063 enabled : true eth_src : "fa:16:3e:c4:31:a1" idle_timeout : 300 ip4_src : "10.0.0.210" ip6_src : "" querier : true query_interval : 150 query_max_resp : 1 seq_no : 0 table_size : 2048
A small addition to the previous comment. I also had to configure the following: ovn-nbctl set Logical_Switch 620f6ceb-23d4-4cd8-b356-6ce614e46f18 other_config:mcast_flood_unregistered="false" In order to workaround the BZ https://bugzilla.redhat.com/show_bug.cgi?id=1898052