Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1791815

Summary: [RFE][OVN] Enable querier for multicast (IGMP) in OVN
Product: Red Hat OpenStack Reporter: Lucas Alvares Gomes <lmartins>
Component: openstack-neutronAssignee: OSP Team <rhos-maint>
Status: CLOSED DEFERRED QA Contact: Eran Kuris <ekuris>
Severity: medium Docs Contact:
Priority: medium    
Version: 17.0 (Wallaby)CC: chrisw, gurpsing, hakhande, jlibosva, mtomaska, rsafrono, scohen, skaplons
Target Milestone: gaKeywords: FutureFeature, Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-10-12 15:49:28 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1575512, 1791787    
Bug Blocks:    

Description Lucas Alvares Gomes 2020-01-16 14:09:47 UTC
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

Comment 2 Roman Safronov 2020-11-18 09:22:56 UTC
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

Comment 3 Roman Safronov 2020-11-18 09:28:51 UTC
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