On 2/6/25 3:19 PM, Felix Huettner via dev wrote:
> northd allows us to announce host routes instead of connected routes of
> LRs.
>
> For the host routes we also know the LSP that host the address.
> We can then check if this LSP is pointing to a LRP that is also local to
> the current chassis, so if a LR is chained behind an LR and both use
> chassisredirect ports.
> In this case we can announce the route with a more preferable priority
> than otherwise.
>
> This helps in the following case:
> * the backend router is bound on only a single chassis
> * the frontend router is bound to multiple chassis (with multiple LRPs)
> * one of the chassis of the frontend router matches the backend router
>
> In this case it would be preferable if the network fabric sends the
> traffic to the chassis that hosts both the frontend and backend router.
> Other chassis would work as well, but then OVN would redirect the
> traffic from one chassis to the other.
> So this allows us to skip tunneling traffic in one case.
>
> Acked-by: Lorenzo Bianconi <[email protected]>
> Acked-by: Dumitru Ceara <[email protected]>
> Signed-off-by: Felix Huettner <[email protected]>
> ---
Hi Felix,
> @@ -5089,6 +5126,24 @@ route_sb_port_binding_data_handler(struct engine_node
> *node, void *data)
> return false;
> }
>
> + if (sset_contains(&re_data->tracked_ports_local,
> + sbrec_pb->logical_port)) {
> + if (!route_exchange_find_port(sbrec_port_binding_by_name,
> chassis,
> + &rt_data->active_tunnels, sbrec_pb))
> {
Nit: indentation, &rt_data should be under sbrec_..
> + /* The port was previously local but now it no longer is. */
> + return false;
> + }
> + }
> +
> + if (sset_contains(&re_data->tracked_ports_remote,
> + sbrec_pb->logical_port)) {
> + if (route_exchange_find_port(sbrec_port_binding_by_name, chassis,
> + &rt_data->active_tunnels, sbrec_pb)) {
Nit: indentation, &rt_data should be under sbrec_..
> + /* The port was previously remote but now we bound it. */
> + return false;
> + }
> + }
> +
> }
> return true;
> }
[...]
> diff --git a/controller/route.h b/controller/route.h
> index 9115ba438..ac57ed22c 100644
> --- a/controller/route.h
> +++ b/controller/route.h
> @@ -42,6 +42,13 @@ struct route_ctx_in {
>
> struct route_ctx_out {
> struct hmap *tracked_re_datapaths;
> +
> + /* Contains the tracked_ports that in the last run were bound locally. */
> + struct sset *tracked_ports_local;
> +
> + /* Contains the tracked_ports that in the last run were not bound local.
> */
s/local./locally./
With these fixed, my ack stands:
Acked-by: Dumitru Ceara <[email protected]>
Thanks,
Dumitru
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev