Hi Ales, Rosemarie

Thanks for the patch.
The patch itself fixes the north issue causing a continuous insert/delete
conflict between ovn-controller-vtep and ovn-northd.
However, a similar issue (a continuous insert/delete loop) also exists, in
some cases, with controller-vtep alone.
Since this might be considered a different issue, I'll give an Ack and will
send a vtep-related patch and some tests highlighting the issue later today.

Acked-by: Xavier Simonart <[email protected]>
Thanks
Xavier


On Mon, Oct 19, 2026 at 9:38 PM Rosemarie O'Riorden via dev <
[email protected]> wrote:

> Thank you Ales!
>
> Acked-by: Rosemarie O'Riorden <[email protected]>
>
> On 10/19/26 3:25 PM, Ales Musil via dev wrote:
> > Do not attempt to remove FDB learned via VTEP LSP with no address,
> > otherwise we end up in a loop where the FDBs are learned through VTEP
> > and removed right away.
> >
> > Fixes: 03fd372c879b ("northd: Properly cleanup FDB entries.")
> > Signed-off-by: Ales Musil <[email protected]>
> > ---
> >   northd/northd.c              | 13 +++++++++----
> >   tests/ovn-controller-vtep.at |  7 +++++++
> >   2 files changed, 16 insertions(+), 4 deletions(-)
> >
> > diff --git a/northd/northd.c b/northd/northd.c
> > index 7c4cb5a62..27683fdd4 100644
> > --- a/northd/northd.c
> > +++ b/northd/northd.c
> > @@ -1314,6 +1314,13 @@ lsp_disable_arp_nd_rsp(const struct
> nbrec_logical_switch_port *nbsp)
> >       return smap_get_bool(&nbsp->options, "disable_arp_nd_rsp", false);
> >   }
> >
> > +static bool
> > +port_can_learn_fdb(const struct ovn_port *op)
> > +{
> > +    return op->nbsp && lsp_is_enabled(op->nbsp) &&
> > +           (op->has_unknown || lsp_is_vtep(op->nbsp));
> > + }
> > +
> >   static bool
> >   lsp_is_type_changed(const struct sbrec_port_binding *sb,
> >                   const struct nbrec_logical_switch_port *nbsp,
> > @@ -4367,9 +4374,7 @@ ovn_port_add_tnlid(struct ovn_port *op, uint32_t
> tunnel_key)
> >               op->od->port_key_hint = tunnel_key;
> >           }
> >
> > -        /* Track the assigned tunnel_key for enabled LSP
> > -         * with unknown address. */
> > -        if (op->nbsp && lsp_is_enabled(op->nbsp) && op->has_unknown) {
> > +        if (port_can_learn_fdb(op)) {
> >               ovs_assert(ovn_add_tnlid(&op->od->fdb_ports_tnlids,
> tunnel_key));
> >           }
> >       }
> > @@ -4425,7 +4430,7 @@ ovn_port_allocate_key(struct ovn_port *op)
> >               return false;
> >           }
> >
> > -        if (op->nbsp && lsp_is_enabled(op->nbsp) && op->has_unknown) {
> > +        if (port_can_learn_fdb(op)) {
> >               ovs_assert(ovn_add_tnlid(&op->od->fdb_ports_tnlids,
> >                                        op->tunnel_key));
> >           }
> > diff --git a/tests/ovn-controller-vtep.at b/tests/ovn-controller-vtep.at
> > index 0e8a1e008..aa8da62a6 100644
> > --- a/tests/ovn-controller-vtep.at
> > +++ b/tests/ovn-controller-vtep.at
> > @@ -620,7 +620,11 @@ OVS_WAIT_UNTIL([vtep-ctl list Ucast_Macs_Local |
> grep -q aa:bb:cc:dd:ff:02])
> >
> >   # Check that first MACs is propagated to FDB table
> >   wait_row_count fdb 1 mac='"aa:bb:cc:dd:ff:01"'
> > +uuid1=$(fetch_column fdb _uuid mac='"aa:bb:cc:dd:ff:01"')
> > +check test -n "$uuid1"
> >   wait_row_count fdb 1 mac='"aa:bb:cc:dd:ff:02"'
> > +uuid2=$(fetch_column fdb _uuid mac='"aa:bb:cc:dd:ff:02"')
> > +check test -n "$uuid2"
> >
> >   # Switch context
> >   as
> > @@ -632,6 +636,9 @@ OVS_WAIT_WHILE([vtep-ctl list-remote-macs lswitch1 |
> grep -q aa:bb:cc:dd:ff:01])
> >   OVS_WAIT_UNTIL([vtep-ctl list-remote-macs lswitch1 | grep -q
> aa:bb:cc:dd:ff:02])
> >   OVS_WAIT_WHILE([vtep-ctl list-remote-macs lswitch0 | grep -q
> aa:bb:cc:dd:ff:02])
> >
> > +check test "$uuid1" = "$(fetch_column fdb _uuid
> mac='"aa:bb:cc:dd:ff:01"')"
> > +check test "$uuid2" = "$(fetch_column fdb _uuid
> mac='"aa:bb:cc:dd:ff:02"')"
> > +
> >   # Switch context to br-vtep1
> >   as br-vtep1
> >
>
> _______________________________________________
> 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