Hi Dumitru
Thanks.

Em seg., 10 de ago. de 2026 às 09:12, Dumitru Ceara <[email protected]>
escreveu:

> On 7/15/26 8:26 PM, Lucas Vargas Dias wrote:
> > If logical router has more than one LRP as gateway router port
> > and dynamic routing configured, dynamic-routing-port-name could be
> > used to specify the LRP that will be used to dynamic routing.
> > However, if all LRPs learning routes, routes from LRP without
> > dynamic-routing-port-name must be flushed.
> > This happens when LRPs are scheduled in the same chassis.
> >
> > Signed-off-by: Lucas Vargas Dias <[email protected]>
> > ---
>
> Hi Lucas,
>
> Thanks for this version and sorry for the delay in reviewing it.
>
> >  controller/ovn-controller.c      |  15 ++++
> >  controller/route-exchange.c      |  68 +++++++++++++--
> >  controller/route-exchange.h      |   1 +
> >  tests/multinode.at               | 142 +++++++++++++++++++++++++++++++
> >  tests/ovn-inc-proc-graph-dump.at |   2 +
> >  tests/system-ovn.at              | 133 +++++++++++++++++++++++++++++
> >  6 files changed, 355 insertions(+), 6 deletions(-)
> >
>
> [...]
> > diff --git a/tests/system-ovn.at b/tests/system-ovn.at
> > index 17b4dcb3d..8c31bd0c6 100644
> > --- a/tests/system-ovn.at
> > +++ b/tests/system-ovn.at
> > @@ -21998,3 +21998,136 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query
> port patch-.*/d
> >
> >  AT_CLEANUP
> >  ])
> > +
> > +OVN_FOR_EACH_NORTHD([
> > +AT_SETUP([dynamic-routing - BGP learned routes with router filter name
> and multiple DGPs])
> > +
> > +# This test validates that BGP learned routes work correctly:
> > +# 1. Routes added to the VRF appear in Learned_Route table
> > +# 2. Remove routes learned in LRPs in same hypervisor when configure
> dynamic-routing-port-name
> > +# 3. Keep learned route just in LRP with dynamic-routing-port-name
> configured.
> > +#
> > +# Topology:
> > +#    +---------+
> > +#    | public  |
> > +#    +----+----+
> > +#         |
> > +#    +----+---+     +---------------+
> > +#    | lr-frr |-----| lrp-dgp-dummy | (dynamic-routing-port-name NOT
> configured (hv1))
> > +#    +----+---+     +---------------+
> > +#         |
> > +#  +------+-----------+
> > +#  |lrp-local-bgp-port| (dynamic-routing-port-name configured (hv1))
> > +#  +------------------+
> > +
> > +ovn_start
> > +OVS_TRAFFIC_VSWITCHD_START()
> > +ADD_BR([br-int])
> > +ADD_BR([br-ex])
> > +
> > +check ovs-ofctl add-flow br-ex action=normal
> > +
> > +# Set external-ids in br-int needed for ovn-controller
> > +check ovs-vsctl \
> > +    -- set Open_vSwitch . external-ids:system-id=hv1 \
> > +    -- set Open_vSwitch .
> external-ids:ovn-remote=unix:$ovs_base/ovn-sb/ovn-sb.sock \
> > +    -- set Open_vSwitch . external-ids:ovn-encap-type=geneve \
> > +    -- set Open_vSwitch . external-ids:ovn-encap-ip=169.0.0.1 \
> > +    -- set bridge br-int fail-mode=secure
> other-config:disable-in-band=true
> > +
> > +# Configure bridge mappings for localnet.
> > +check ovs-vsctl set Open_vSwitch .
> external-ids:ovn-bridge-mappings=phys:br-ex
> > +
> > +vrf=10
> > +VRF_RESERVE([$vrf])
> > +
> > +# Start ovn-controller.
> > +start_daemon ovn-controller
> > +
> > +check ip link add vrf-$vrf type vrf table $vrf
> > +on_exit "ip link del vrf-$vrf"
> > +check ip link set vrf-$vrf up
> > +
> > +# Create public logical switch with localnet port.
> > +check ovn-nbctl ls-add public
> > +check ovn-nbctl lsp-add-localnet-port public ln_port phys
> > +
> > +# Create lr-frr with dynamic routing in VRF $vrf.
> > +check ovn-nbctl lr-add lr-frr \
> > +    -- set Logical_Router lr-frr \
> > +        options:dynamic-routing=true \
> > +        options:dynamic-routing-vrf-id=$vrf \
> > +        options:dynamic-routing-redistribute=static
> > +
> > +check ovn-nbctl lrp-add lr-frr lrp-local-bgp-port 00:00:00:00:00:03
> 20.0.0.3/24 \
> > +    -- set Logical_Router_Port lrp-local-bgp-port
> options:dynamic-routing-maintain-vrf=false \
> > +    -- set Logical_Router_Port lrp-local-bgp-port
> options:routing-protocol-redirect=local-bgp-port
> > +
> > +check ovn-nbctl lrp-set-gateway-chassis lrp-local-bgp-port hv1
> > +check ovn-nbctl lsp-add-router-port public public-lr-frr
> lrp-local-bgp-port
> > +
> > +check ovn-nbctl lrp-add lr-frr lrp-dgp-dummy 00:00:00:00:00:04
> 20.0.1.3/24
> > +check ovn-nbctl lrp-set-gateway-chassis lrp-dgp-dummy hv1
> > +check ovn-nbctl ls-add ls-dummy
> > +check ovn-nbctl lsp-add-router-port ls-dummy lsp-dummy lrp-dgp-dummy
> > +
> > +# Create local-bgp-port in VRF 10.
> > +check ovs-vsctl add-port br-int local-bgp-port \
> > +    -- set Interface local-bgp-port type=internal \
> > +    -- set Interface local-bgp-port external_ids:iface-id=local-bgp-port
> > +
> > +check ovn-nbctl lsp-add public local-bgp-port \
> > +    -- lsp-set-addresses local-bgp-port unknown
> > +
> > +# Configure local-bgp-port interface and add to VRF.
> > +check ip link set local-bgp-port master vrf-$vrf
> > +check ip link set local-bgp-port address 00:00:00:00:00:03
> > +check ip addr add dev local-bgp-port 20.0.0.3/24
> > +check ip link set local-bgp-port up
> > +
> > +# Wait for everything to be ready.
> > +wait_for_ports_up
> > +check ovn-nbctl --wait=hv sync
> > +
> > +# Check lrp-local-bgp-port has dynamic-routing option set.
> > +check_row_count Port_Binding 1 logical_port=cr-lrp-local-bgp-port
> 'options:dynamic-routing=true'
> > +check_row_count Port_Binding 1 logical_port=cr-lrp-dgp-dummy
> 'options:dynamic-routing=true'
> > +
> > +# Add static routes.
> > +check ovn-nbctl lr-route-add lr-frr 10.10.2.1 20.0.0.42
> lrp-local-bgp-port
> > +
> > +# Verify advertised routes exist.
> > +AS_BOX([Advertised_Route])
> > +wait_row_count Advertised_Route 1 ip_prefix=10.10.2.1
> > +
> > +# Add a route to the VRF (simulating BGP learning a route).
> > +check ip route add 10.10.3.1 via 20.0.0.25 vrf vrf-$vrf proto zebra
> > +
> > +# Verify learned route appears in SB database.
> > +check_row_count Learned_Route 2 ip_prefix=10.10.3.1
>
> This is racy, there's no guarantee ovn-controller had a chance to run.
> Let's use wait_row_count instead.
>
> I took care of that and applied the patch to main and 26.03.
>
> Thanks.


> There are some conflicts when trying to cherry pick this to 25.09.  In
> theory we could backport it there too because that branch is still
> supported and this is a bug fix.  If you need it there, could you please
> post a 25.09 specific backport patch?
>
>
Yes, I can.

Regards,
Lucas


> Regards,
> Dumitru
>
>

-- 




_‘Esta mensagem é direcionada apenas para os endereços constantes no 
cabeçalho inicial. Se você não está listado nos endereços constantes no 
cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa 
mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão 
imediatamente anuladas e proibidas’._


* **‘Apesar do Magazine Luiza tomar 
todas as precauções razoáveis para assegurar que nenhum vírus esteja 
presente nesse e-mail, a empresa não poderá aceitar a responsabilidade por 
quaisquer perdas ou danos causados por esse e-mail ou por seus anexos’.*



_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to