Bug 2028981

Summary: [RFE] Support multicasting (static forwarding) in OVN interconnection
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Numan Siddique <nusiddiq>
Component: OVNAssignee: Dumitru Ceara <dceara>
Status: VERIFIED --- QA Contact: ying xu <yinxu>
Severity: unspecified Docs Contact:
Priority: high    
Version: FDP 21.KCC: ctrautma, dceara, jiji, mmichels
Target Milestone: ---Keywords: FutureFeature
Target Release: FDP 22.C   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: ovn22.03-22.03.0-7.el8fdp Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 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:

Description Numan Siddique 2021-12-03 21:49:54 UTC
Description of problem:

When OVN deployments are interconnected using ovn-ic,  multicast traffic doesn't  cross the boundary.  This feature can be supported.




Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 2 Dumitru Ceara 2022-01-19 13:41:01 UTC
Not necessarily a full solution but in order to support static IP multicast flooding across IC AZs we need:

http://patchwork.ozlabs.org/project/ovn/list/?series=281827&state=*

Comment 3 Dumitru Ceara 2022-01-20 11:53:35 UTC
Bug 2042952 has been opened to implement "dynamic" multicast support (with IGMP/MLD) in OVN-IC deployments.

We'll continue to use the current bug to track support for "static" multicast support (with static multicast flooding) in OVN-IC deployments.  Updating the title accordingly.

Comment 4 Dumitru Ceara 2022-04-11 08:29:22 UTC
Feature available in ovn22.03-22.03.0-7.el8fdp

Comment 5 Dumitru Ceara 2022-04-11 08:33:10 UTC
Upstream commit: https://github.com/ovn-org/ovn/commit/974618c61de8a451f1ecd6515e2e2414f6d4c04f

Comment 9 ying xu 2022-04-20 03:18:11 UTC
verified on version:
# rpm -qa|grep ovn
ovn22.03-host-22.03.0-9.el8fdp.x86_64
ovn22.03-22.03.0-9.el8fdp.x86_64
ovn22.03-central-22.03.0-9.el8fdp.x86_64


set env as below:
az2:

# ovn-nbctl show
switch cc5a80c8-c520-4942-b9ba-2ec053ea6b52 (ts1)
    port ts1-lr1
        type: remote
        addresses: ["aa:aa:aa:aa:aa:01 169.254.100.1/24"]
    port ts1-lr2
        type: router
        router-port: lr2-ts1
switch 8f7f9c2b-4b87-42a5-b2bf-0c469568aec3 (ls2)
    port ls2-lr2
        type: router
        addresses: ["00:00:00:00:02:00"]
        router-port: lr2-ls2
    port ls2p1
        addresses: ["00:00:00:00:02:01 172.16.2.1 172:16:2::1"]
    port ls2p2
        addresses: ["00:00:00:00:02:02 172.16.2.2 172:16:2::2"]
router 537c45e9-0e43-4e55-b011-7091c92793cc (lr2)
    port lr2-ts1
        mac: "aa:aa:aa:aa:aa:02"
        networks: ["169.254.100.2/24"]
        gateway chassis: [hv1]
    port lr2-ls2
        mac: "00:00:00:00:02:00"
        networks: ["172.16.2.254/24", "172:16:2::a/64"]

az1:
# ovn-nbctl show
switch f9e7fb44-6310-4280-a71f-59bc4212075a (ls1)
    port ls1p1
        addresses: ["00:00:00:00:01:01 172.16.1.1 172:16:1::1"]
    port ls1-lr1
        type: router
        router-port: lr1-ls1
    port ls1p2
        addresses: ["00:00:00:00:01:02 172.16.1.2 172:16:1::2"]
switch 4c33b8fd-8f86-459d-be06-2acb556e45d7 (ts1)
    port ts1-lr1
        type: router
        router-port: lr1-ts1
    port ts1-lr2
        type: remote
        addresses: ["aa:aa:aa:aa:aa:02 169.254.100.2/24"]
router 20c8fdeb-4325-4681-8f03-36732ea985a3 (lr1)
    port lr1-ls1
        mac: "00:00:00:00:01:00"
        networks: ["172.16.1.254/24", "172:16:1::a/64"]
    port lr1-ts1
        mac: "aa:aa:aa:aa:aa:01"
        networks: ["169.254.100.1/24"]
        gateway chassis: [hv0]

on az1:
ovn-nbctl set logical_switch ls1 other_config:mcast_snoop="true" other_config:mcast_flood_unregistered="true"
ovn-nbctl set logical_router lr1 options:mcast_relay="true"
ovn-nbctl set logical_router_port lr1-ls1 options:mcast_flood="true"

on az2:
ovn-nbctl set logical_switch ls2 other_config:mcast_snoop="true" other_config:mcast_flood_unregistered="true"
ovn-nbctl set logical_router lr2 options:mcast_relay="true"
ovn-nbctl set logical_router_port lr2-ts1 options:mcast_flood="true"

then ,send multicast packets from ls2p1 to ls1p1:
#! /usr/bin/python

import sys
from scapy.all import *

def main():
    # query
    sendp(Ether(src="00:00:00:00:02:01", dst="01:00:5e:00:01:44")/IP(src="172.16.2.1", dst="239.0.1.68", proto=17)/('a'*128) , iface="ls2p1")
if __name__ == "__main__":
        main()

tcpdump on ls1p1:
# ip netns exec ls1p1 tcpdump -i any -nnle
21:19:09.385327   M 00:00:00:00:01:00 ethertype IPv4 (0x0800), length 164: 172.16.2.1.24929 > 239.0.1.68.24929: UDP, bad length 24921 > 120