Bug 2006306

Summary: IGMP multicast relay not working with router distributed gateway ports
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Dumitru Ceara <dceara>
Component: OVNAssignee: Dumitru Ceara <dceara>
Status: CLOSED ERRATA QA Contact: ying xu <yinxu>
Severity: high Docs Contact:
Priority: high    
Version: FDP 21.HCC: ctrautma, jiji, kfida, trozet
Target Milestone: ---   
Target Release: FDP 21.I   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: ovn21.09-21.09.0-19.el8fdp Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-12-09 15:37:29 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:    
Bug Blocks: 2006325    

Description Dumitru Ceara 2021-09-21 13:17:59 UTC
Description of problem:
When IP multicast relay is enabled on a logical router that contains distributed gateway ports, multicast traffic is not forwarded correctly on the distributed gateway port.

Version-Release number of selected component (if applicable):
ovn21.09-21.09.0-18.el8fdp
ovn2.13-20.12.0-178.el7fdp

How reproducible:
Always.

Steps to Reproduce:

# Logical network:
# Two logical switches (sw1-sw2) connected to a logical router (rtr).
# with distributed gateway ports configured towards the logical switches. 
# sw1:
#   - subnet 10.0.0.0/8
#   - 1 ports bound on hv1 (sw1-p1)
# sw2:
#   - subnet 20.0.0.0/8
#   - 1 port bound on hv2 (sw2-p2)
#   - IGMP Querier from 20.0.0.254

ovn-nbctl ls-add sw1 \
    -- lsp-add sw1 sw1-p1

ovn-nbctl ls-add sw2 \
    -- lsp-add sw2 sw2-p2

ovn-nbctl lr-add rtr                                       \
    -- lrp-add rtr rtr-sw1 00:00:00:00:01:00 10.0.0.254/24 \
    -- lrp-add rtr rtr-sw2 00:00:00:00:02:00 20.0.0.254/24

ovn-nbctl lsp-add sw1 sw1-rtr                      \
    -- lsp-set-type sw1-rtr router                 \
    -- lsp-set-addresses sw1-rtr 00:00:00:00:01:00 \
    -- lsp-set-options sw1-rtr router-port=rtr-sw1
ovn-nbctl lsp-add sw2 sw2-rtr                      \
    -- lsp-set-type sw2-rtr router                 \
    -- lsp-set-addresses sw2-rtr 00:00:00:00:02:00 \
    -- lsp-set-options sw2-rtr router-port=rtr-sw2
ovn-nbctl lrp-set-gateway-chassis rtr-sw1 hv1 10
ovn-nbctl lrp-set-gateway-chassis rtr-sw2 hv2 10

# Bind sw1-p1 to an OVS port on hypervisor hv1.
# Bind sw2-p2 to an OVS port on hypervisor hv2.

# Send an IGMP join on sw2-p2, e.g., with iperf:
iperf -s -B 224.3.3.3 -u -T 2 -t 3000 -i 5

# Send IP multicast traffic on sw1-p1, e.g., with iperf:
iperf -c 224.3.3.3 -u -T 2 -t 3000 -i 5

Actual results:
Traffic doesn't get properly tunneled (geneve) from hv1 to hv2 and is not delivered to sw2-p2.

Expected results:
Traffic should be tunneled between hv1 and hv2 and then delivered to sw2-p2.

Additional information:
This breaks IP multicast functionality in ovn-kubernetes since https://github.com/ovn-org/ovn-kubernetes/commit/09af6537438fe6a244e057b0d318bff08b00d6b7

Comment 1 Dumitru Ceara 2021-09-21 13:52:15 UTC
Fix sent for review: http://patchwork.ozlabs.org/project/ovn/list/?series=263327&state=*

Comment 5 ying xu 2021-10-25 06:53:57 UTC
Hi, 
I am sorry I can't reproduce it on version:ovn2.13-20.12.0-178.el8fdp.x86_64 and  ovn-2021-21.06.0-29.el8fdp

# ovn-nbctl show
switch f5af0060-d450-4393-bc86-a219d3329f3a (ls2)
    port ls2p1
        addresses: ["00:00:00:01:01:02"]
    port ls2-lr1
        type: router
        addresses: ["00:de:ad:ff:01:02"]
        router-port: lr1-ls2
switch d56cbaa1-9af0-455f-aea5-05bb0668793d (ls1)
    port ls1-lr1
        type: router
        addresses: ["00:de:ad:ff:01:01"]
        router-port: lr1-ls1
    port ls1p1
        addresses: ["00:00:00:01:00:02"]
router ecb76a96-411d-453b-ad5a-0dbc5e686567 (lr1)
    port lr1-ls1
        mac: "00:de:ad:ff:01:01"
        networks: ["172.16.1.254/24", "2000:1::254/64"]
        gateway chassis: [hv0]
    port lr1-ls2
        mac: "00:de:ad:ff:01:02"
        networks: ["172.16.2.254/24", "2000:2::254/64"]
        gateway chassis: [hv1]

# ovn-nbctl list logical_router
_uuid               : ecb76a96-411d-453b-ad5a-0dbc5e686567
enabled             : []
external_ids        : {}
load_balancer       : []
name                : lr1
nat                 : []
options             : {mcast_relay="true"}
policies            : []
ports               : [826a8a1c-d68f-46b9-a4b1-b5c69dec16c9, ee9826b2-950f-4047-9d35-e3c4d65cf3a5]
static_routes       : []


then join group 224.1.1.1 from ls1p1,and send traffic from ls2p1 to ls1p1. works fine!

Can you help me with it?

Comment 6 ying xu 2021-11-03 08:35:52 UTC
I talked with dceara,my test is right for this bug. so set verified.

Comment 7 Dumitru Ceara 2021-11-03 09:12:44 UTC
Right, sorry for the late notice, the test looks good to me, thanks!

Comment 9 errata-xmlrpc 2021-12-09 15:37:29 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (ovn bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:5059