Hi Lorenzo,

Thanks for your review.

I see at least two scenarios:
1 - For old versions of OVN, to announce VIPs (LB) in ovn-ic, you must to
create a static route
for VIP with any next hop, but it has a problem, each packet to VIP could
generate a arp-resolve in chassis,
a way to allow the create the static route yet and avoid arp-resolve
packets in ovn-controller is configuring the static route
with next-hop discard. Remember that patch [0]
modifies ovn-ic-sb.ovsschema and for use it, you must update all ovn-hosts.

2 - Without the current patch, in a scenario with N AZs, if you want to
discard a prefix, you must configure the
same static route in each AZ, I don't see this as scalable.

[0]
https://github.com/ovn-org/ovn/commit/137ed00a66043d492ee60434dd1bdb72318a14ee


Regards,
Lucas


Em sex., 17 de out. de 2025 às 11:59, Lorenzo Bianconi <
[email protected]> escreveu:

> > Add advertise from static discard routes via ovn-ic
> > for work similar to BGP null route.
> >
> > Signed-off-by: Lucas Vargas Dias <[email protected]>
>
> Hi Lucas,
>
> some comments inline. Can you please describe the use-case for this patch?
> E.g
> discard the traffic on the remote az.
>
> Regards,
> Lorenzo
>
> > ---
> >  ic/ovn-ic.c     |  3 ++-
> >  tests/ovn-ic.at | 54 +++++++++++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 56 insertions(+), 1 deletion(-)
> >
> > diff --git a/ic/ovn-ic.c b/ic/ovn-ic.c
> > index 13e5534e7..c5ee6707f 100644
> > --- a/ic/ovn-ic.c
> > +++ b/ic/ovn-ic.c
> > @@ -1018,7 +1018,8 @@ parse_route(const char *s_prefix, const char
> *s_nexthop,
> >      }
> >
> >      unsigned int nlen;
> > -    if (!ip46_parse_cidr(s_nexthop, nexthop, &nlen)) {
> > +    if (strcmp(s_nexthop, "discard") != 0 &&
>
> here you can do:
>
>         if (strcmp(s_nexthop, "discard") && ..)
>
> > +        !ip46_parse_cidr(s_nexthop, nexthop, &nlen)) {
> >          return false;
> >      }
> >
> > diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at
> > index 2d92f3adf..2290c47ca 100644
> > --- a/tests/ovn-ic.at
> > +++ b/tests/ovn-ic.at
> > @@ -4251,3 +4251,57 @@ ovn_as az1 check ovn-nbctl remove
> logical_router_port lrp-lr11-ts1 options ic-ro
> >  OVN_CLEANUP_IC([az1], [az2])
> >  AT_CLEANUP
> >  ])
> > +
> > +OVN_FOR_EACH_NORTHD([
> > +AT_SETUP([ovn-ic -- Advertise discard static routes])
> > +
> > +ovn_init_ic_db
> > +
> > +for i in 1 2; do
> > +    ovn_start az$i
> > +    ovn_as az$i
> > +
> > +    # 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
> > +done
> > +
> > +# Create new transit switches and LRs. Test topology is next:
> > +#
> > +# logical router (lr11) -   transit switch (ts11) - logical router
> (lr12)
> > +#
> > +
> > +# Create lr11, lr12 and ts11 and connect them
> > +for i in 1 2; do
> > +    ovn_as az$i
> > +
> > +    lr=lr1$i
> > +    check ovn-nbctl lr-add $lr
> > +
> > +    for j in 1; do
>
> why do you need this for loop here?
>
> > +        ts=ts1$j
> > +        check ovn-ic-nbctl --wait=sb --may-exist ts-add $ts
> > +
> > +        lrp=lrp-$lr-$ts
> > +        lsp=lsp-$ts-$lr
> > +        # Create LRP and connect to TS
> > +        check ovn-nbctl lrp-add $lr $lrp aa:aa:aa:aa:a$j:0$i
> 169.254.10$j.$i/24
> > +        check ovn-nbctl lsp-add $ts $lsp \
> > +                -- lsp-set-addresses $lsp router \
> > +                -- lsp-set-type $lsp router \
> > +                -- lsp-set-options $lsp router-port=$lrp
> > +    done
> > +done
> > +
> > +# Create directly-connected route in lr11
> > +check ovn_as az2 ovn-nbctl lr-route-add lr12 192.168.0.0/24 discard
> > +OVS_WAIT_FOR_OUTPUT([ovn_as az1 ovn-nbctl lr-route-list lr11 | grep
> 192.168 |
> > +             grep learned | awk '{print $1, $2}' | sort ], [0], [dnl
> > +192.168.0.0/24 169.254.101.2
> > +])
> > +
> > +OVN_CLEANUP_IC([az1], [az2])
> > +
> > +AT_CLEANUP
> > +])
> > --
> > 2.43.0
> >
> >
> > --
> >
> >
> >
> >
> > _'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
> >
>

-- 




_‘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