On Tue, Jun 18, 2024 at 4:32 PM Dumitru Ceara <[email protected]> wrote:

> 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
>
>
looks good to me, thanks Dumitru.

Acked-by: Mohammad Heib <[email protected]>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to