On Mon, Aug 8, 2022 at 11:29 PM Vladislav Odintsov <[email protected]> wrote:
>
> Hi Numan,
>
> thanks for the review.
> My comments below.
>
> Regards,
> Vladislav Odintsov
>
> > On 8 Aug 2022, at 03:24, Numan Siddique <[email protected]> wrote:
> >
> > On Wed, Jul 20, 2022 at 12:15 AM Vladislav Odintsov <[email protected] 
> > <mailto:[email protected]>> wrote:
> >>
> >> This is used when traffic from HW VTEP goes to
> >> routable networks and logical switch to which VTEP
> >> logical port is attached also needs to support
> >> distributed routing features such as NAT and others.
> >>
> >> Signed-off-by: Vladislav Odintsov <[email protected] 
> >> <mailto:[email protected]>>
> >
> > Thanks for the patch.
> >
> > IMO,  the option "is_distributed" is very confusing.  By default, all
> > the logical routers (and router ports) are distributed in OVN unless
> > the logical router is a gateway router or if the router port has a
> > gateway chassis set.  And the default value of "is_distributed" is
> > false,
> > which makes it even more confusing.
> >
> > I'd suggest renaming the option to something more relevant - which
> > indicates that this option is applicable only for gateway ports and
> > if the user/CMS wants to allow admission on all chassis.
> >
>
> I agree with your point about naming. Will think about better one.

>
> > But before that, my question is why does the CMS need to set the
> > gateway chassis for the router ports ? Can't it just not set it ?
> >
>
> As I mentioned in ovn-nb manpage this is useful for GW LRPs, which are used 
> in routed
> HW VTEP-attached setups (LR with LS with LSP type==vtep).
>
> Generally this option must be set for all LRPs, which are connected to LS 
> with vtep LSP.
> I didn’t want to grow up pipeline adding new flow to lr_in_admission, which 
> has same
> content as original flow plus match on reg0[14] and without 
> is_chassis_redirect() part.
>
> The initial problem is that user may want to create simple topology:
>
> <vm1> - <ls1 192.168.0.0/24> - <LR> - <ls2 192.168.1.0/24> - <vm2>
>
> And add VTEP LSP to ls2 (setting GW chassis to LRP in ls2).
> If user wants to add GW services to this setup, VMs from ls2 will not be able 
> to access
> external network due to lr_in_admission rules.
>
> Let me know if my explanation is clear or I should give more details.
>
> So the proposed change allows a CMS to indicate that we such LRP may be not 
> only limited
> to its GW chassis, where CR port resides.
> Technically this can be done automatically somehow in another way. Maybe add 
> some helper
> which checks if specified LRP’s LS has attached VTEP LSP and 
> is_chassis_resident(%s) part
> should be omitted.
>
> What do you think?


Thanks for the explanation.  Seems like it's better to do this
automatically by checking if the
logical switch has vtep ports.  Maybe you can add "has_vtep_ports"
bool to the ovn_datapath struct ?
You need  to make sure that it is synced properly when a vtep port is
deleted.  If you find this to be
hard or if it is inefficient to do this, then an option seems ok to me.

Thanks
Numan


>
>
> > Thanks
> > Numan
> >
> >> ---
> >> northd/northd.c |  8 +++++++-
> >> ovn-nb.xml      | 10 ++++++++++
> >> 2 files changed, 17 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/northd/northd.c b/northd/northd.c
> >> index d31cb1688..0be45e22a 100644
> >> --- a/northd/northd.c
> >> +++ b/northd/northd.c
> >> @@ -1674,6 +1674,12 @@ is_cr_port(const struct ovn_port *op)
> >>     return op->l3dgw_port;
> >> }
> >>
> >> +static bool
> >> +is_distributed(const struct ovn_port *op)
> >> +{
> >> +    return smap_get_bool(&op->nbrp->options, "distributed", false);
> >> +}
> >> +
> >> static void
> >> destroy_routable_addresses(struct ovn_port_routable_addresses *ra)
> >> {
> >> @@ -10920,7 +10926,7 @@ build_adm_ctrl_flows_for_lrouter_port(
> >>         ds_clear(match);
> >>         ds_put_format(match, "eth.dst == %s && inport == %s",
> >>                       op->lrp_networks.ea_s, op->json_key);
> >> -        if (is_l3dgw_port(op)) {
> >> +        if (is_l3dgw_port(op) && !is_distributed(op)) {
> >>             /* Traffic with eth.dst = l3dgw_port->lrp_networks.ea_s
> >>              * should only be received on the gateway chassis. */
> >>             ds_put_format(match, " && is_chassis_resident(%s)",
> >> diff --git a/ovn-nb.xml b/ovn-nb.xml
> >> index e26afd83c..d4b454791 100644
> >> --- a/ovn-nb.xml
> >> +++ b/ovn-nb.xml
> >> @@ -2976,6 +2976,16 @@
> >>           <ref column="options" key="gateway_mtu"/> option.
> >>         </p>
> >>       </column>
> >> +
> >> +      <column name="options" key="distributed" type='{"type": "boolean"}'>
> >> +        If <var>true</var>, indicates, that flow for current LRP in
> >> +        lr_in_admission must be installed on all chassis, even if it has
> >> +        associated chassisredirect port.
> >> +        Usable when traffic from HW VTEP goes to routable networks and 
> >> logical
> >> +        switch to which VTEP logical port is attached also needs to 
> >> support
> >> +        distributed routing features such as NAT, Load Balancing and 
> >> others.
> >> +        Empty value (default) means false.
> >> +      </column>
> >>     </group>
> >>
> >>     <group title="Attachment">
> >> --
> >> 2.26.3
> >>
> >> _______________________________________________
> >> dev mailing list
> >> [email protected] <mailto:[email protected]>
> >> https://mail.openvswitch.org/mailman/listinfo/ovs-dev 
> >> <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