This reverts commit 85ca2b75369c9a73f4750d5914666a54ebb3f2e0. The commit above breaks inter-AZ IP multicast for the case when one of the multicast receivers is co-located in the same zone as the sender. In those cases traffic is not correctly forwarded to other receivers that joined the group in other AZs.
This is often the case in ovn-kubernetes deployments (with IC enabled). The current "interconnection - IGMP/MLD multicast" unit test failed to cover such topologies. CC: Mohammad Heib <[email protected]> Fixes: 85ca2b75369c ("northd: Don't skip transit switch LSP when creating mcast groups.") Reported-at: https://issues.redhat.com/browse/FDP-656 Signed-off-by: Dumitru Ceara <[email protected]> --- northd/northd.c | 8 +++----- northd/northd.h | 6 ------ tests/ovn-ic.at | 10 ---------- 3 files changed, 3 insertions(+), 21 deletions(-) diff --git a/northd/northd.c b/northd/northd.c index 3c1affb02f..7e474a7b89 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -5434,13 +5434,11 @@ ovn_igmp_group_get_ports(const struct sbrec_igmp_group *sb_igmp_group, continue; } - /* If this is already a port of a router on which relay is enabled - * and it's not a transit switch to router port, skip it for the - * group. Traffic is flooded there anyway. + /* If this is already a port of a router on which relay is enabled, + * skip it for the group. Traffic is flooded there anyway. */ if (port->peer && port->peer->od && - port->peer->od->mcast_info.rtr.relay && - !ovn_datapath_is_transit_switch(port->od)) { + port->peer->od->mcast_info.rtr.relay) { continue; } diff --git a/northd/northd.h b/northd/northd.h index 146139bebc..fd884c851e 100644 --- a/northd/northd.h +++ b/northd/northd.h @@ -362,12 +362,6 @@ ovn_datapath_is_stale(const struct ovn_datapath *od) return !od->nbr && !od->nbs; }; -static inline bool -ovn_datapath_is_transit_switch(const struct ovn_datapath *od) -{ - return od->tunnel_key >= OVN_MIN_DP_KEY_GLOBAL; -} - /* Pipeline stages. */ /* The two purposes for which ovn-northd uses OVN logical datapaths. */ diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at index 1666e77295..20409f70ac 100644 --- a/tests/ovn-ic.at +++ b/tests/ovn-ic.at @@ -2042,20 +2042,10 @@ wait_row_count IGMP_Group 2 address=239.0.1.68 wait_row_count IGMP_Group 2 address='"ff0a:dead:beef::1"' check ovn-nbctl --wait=hv sync -#Validate that Multicast Group contains all registered ports for -# specific igmp group. -ts_dp=$(fetch_column datapath_binding _uuid external_ids:name=ts) -ports=$(fetch_column multicast_group ports name="239.0.1.68" datapath=$ts_dp) -check test X2 = X$(echo $ports | wc -w) - - ovn_as az2 wait_row_count IGMP_Group 2 address=239.0.1.68 wait_row_count IGMP_Group 2 address='"ff0a:dead:beef::1"' check ovn-nbctl --wait=hv sync -ts_dp=$(fetch_column datapath_binding _uuid external_ids:name=ts) -ports=$(fetch_column multicast_group ports name="239.0.1.68" datapath=$ts_dp) -check test X2 = X$(echo $ports | wc -w) # Send an IP multicast packet from LSP2, it should be forwarded # to lsp1 and lsp3. -- 2.44.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
