On Thu, Oct 16, 2025 at 12:17:40PM +0200, Dumitru Ceara wrote:
> On 10/16/25 10:40 AM, Felix Huettner via dev wrote:
> > On Tue, Oct 07, 2025 at 05:27:43PM +0300, Alexandra Rukomoinikova wrote:
> >> Restore inter-AZ connectivity during OVN upgrades by allowing
> >> legacy routes (without lr-id) from different availability zones
> >> to be learned. Previously, updated nodes skipped all routes
> >> without lr-id, breaking connectivity to non-upgraded AZs.
> >>
> >> The fix checks availability zone for legacy routes instead of
> >> skipping them entirely, maintaining backward compatibility.
> > 
> > Hi Alexandra,
> > 
> > sorry for taking so long to take a look.
> > That seems reasonable to me.
> > 
> > However there seems to be some issue with applying the patch in the CI.
> > Still take this:
> > Signed-off-by: Felix Huettner <[email protected]>
> > 
> 
> Hi Felix,
> 
> Hmm, I'm a bit confused about this.
> 
> This patch from Alexandra was already accepted:
> https://github.com/ovn-org/ovn/commit/951d992
> 
> Do you mean to say you should've been co-author or did you actually want
> to ack the patch?

Hi Dumitru,

i'm sorry i was probably too tired yesterday. I actually wanted to ack
it and did not realized it was already accepted.

Sorry for the confusion.

> 
> There's a backport patch available for review for branches <= 25.03:
> 
> https://patchwork.ozlabs.org/project/ovn/patch/[email protected]/
> 
> That's because there were too many non-trivial conflicts when I tried to
> backport the original fix to older branches, see:
> https://mail.openvswitch.org/pipermail/ovs-dev/2025-October/426866.html
> 
> Thanks,
> Dumitru
> 
> > Thanks,
> > Felix
> > 
> >>
> >> Fixes: b1f8d726390e ("ovn-ic: support learning routes in same AZ")
> >> Signed-off-by: Alexandra Rukomoinikova <[email protected]>
> >> Tested-by: Evgeniy Kovalev <[email protected]>
> >> ---
> >>  ic/ovn-ic.c     | 17 ++++++++++-------
> >>  tests/ovn-ic.at | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
> >>  2 files changed, 61 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/ic/ovn-ic.c b/ic/ovn-ic.c
> >> index fa4a6b118..f989f91cc 100644
> >> --- a/ic/ovn-ic.c
> >> +++ b/ic/ovn-ic.c
> >> @@ -1702,15 +1702,18 @@ sync_learned_routes(struct ic_context *ctx,
> >>  
> >>          ICSBREC_ROUTE_FOR_EACH_EQUAL (isb_route, isb_route_key,
> >>                                        ctx->icsbrec_route_by_ts) {
> >> +            /* Filters ISSB routes, skipping those that either belong to
> >> +             * current logical router or are legacy routes from the 
> >> current
> >> +             * availability zone (withoud lr-id).
> >> +             */
> >>              const char *lr_id = smap_get(&isb_route->external_ids, 
> >> "lr-id");
> >> -            if (lr_id == NULL) {
> >> -                continue;
> >> -            }
> >>              struct uuid lr_uuid;
> >> -            if (!uuid_from_string(&lr_uuid, lr_id)) {
> >> -                continue;
> >> -            }
> >> -            if (uuid_equals(&ic_lr->lr->header_.uuid, &lr_uuid)) {
> >> +            if (lr_id) {
> >> +                if (!uuid_from_string(&lr_uuid, lr_id)
> >> +                    || uuid_equals(&ic_lr->lr->header_.uuid, &lr_uuid)) {
> >> +                    continue;
> >> +                }
> >> +            } else if (isb_route->availability_zone == ctx->runned_az) {
> >>                  continue;
> >>              }
> >>  
> >> diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at
> >> index 74ea3bad2..d2c2d70ed 100644
> >> --- a/tests/ovn-ic.at
> >> +++ b/tests/ovn-ic.at
> >> @@ -4047,3 +4047,54 @@ OVN_CLEANUP_IC([az1], [az2], [az3])
> >>  AT_CLEANUP
> >>  ])
> >>  
> >> +AT_BANNER([Learning routes backward compatibility])
> >> +OVN_FOR_EACH_NORTHD([
> >> +AT_SETUP([ovn-ic -- Backward compatibility of learning routes in the same 
> >> AZ])
> >> +
> >> +ovn_init_ic_db
> >> +ovn_start az1
> >> +
> >> +# Enable route learning at AZ level
> >> +check ovn-nbctl set nb_global . options:ic-route-learn=true
> >> +# Enable route advertising at AZ level
> >> +check ovn-nbctl set nb_global . options:ic-route-adv=true
> >> +
> >> +# Create a fake availability zone to announce a route from.
> >> +# This route will not have an lr-id in its external_ids, simulating
> >> +# the behavior of the legacy code. The system is expected to
> >> +# learn this route to maintain backward compatibility.
> >> +ovn-ic-sbctl create Availability_Zone name=fake_az
> >> +fake_az_uuid=$(fetch_column ic-sb:availability-zone _uuid name="fake_az")
> >> +ovn-ic-sbctl create Gateway name=fake_az_gw 
> >> availability_zone=$fake_az_uuid \
> >> +    encap=@encap -- --id=@encap create encap type=geneve ip="192.168.0.2"
> >> +
> >> +check ovn-ic-nbctl ts-add ts1
> >> +check ovn-ic-nbctl ts-add ts2
> >> +
> >> +check ovn-nbctl lr-add lr1
> >> +check ovn-nbctl lrp-add lr1 lrp-lr1-ts1 aa:aa:aa:aa:aa:02 169.254.100.1/24
> >> +check ovn-nbctl lsp-add ts1 lsp-ts1-lr1 -- \
> >> +    lsp-set-addresses lsp-ts1-lr1 router -- \
> >> +    lsp-set-type lsp-ts1-lr1 router -- \
> >> +    lsp-set-options lsp-ts1-lr1 router-port=lrp-lr1-ts1
> >> +
> >> +# Check ISB
> >> +check_row_count ic-sb:Datapath_Binding 1 transit_switch=ts1
> >> +check_row_count ic-sb:Datapath_Binding 1 transit_switch=ts2
> >> +
> >> +ovn-ic-sbctl create Route availability_zone=$fake_az_uuid 
> >> ip_prefix="172.31.0.0/24" nexthop="169.254.100.2" origin=connected 
> >> transit_switch=ts1
> >> +
> >> +AT_CHECK([ovn-ic-sbctl find Route nexthop="169.254.100.2" | grep 
> >> external_ids], [0], [dnl
> >> +external_ids        : {}
> >> +])
> >> +
> >> +AT_CHECK([ovn-nbctl lr-route-list lr1], [0], [dnl
> >> +IPv4 Routes
> >> +Route Table <main>:
> >> +            172.31.0.0/24             169.254.100.2 dst-ip (learned)
> >> +])
> >> +
> >> +OVN_CLEANUP_IC([az1])
> >> +AT_CLEANUP
> >> +])
> >> +
> >> -- 
> >> 2.48.1
> >>
> >> _______________________________________________
> >> dev mailing list
> >> [email protected]
> >> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> > _______________________________________________
> > dev mailing list
> > [email protected]
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> > 
> 
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to