[ovs-dev] [PATCH ovn] ovn-northd: Set stage-hint for Forwarding_Group, ECMP and SNAT

Numan Siddique numans at ovn.org
Wed Feb 5 10:50:56 UTC 2020


On Wed, Feb 5, 2020 at 2:32 PM Dumitru Ceara <dceara at redhat.com> wrote:
>
> Commit 217cc5e9a0bc ("ovn-northd: Set stage-hint for all applicable
> flows.") added ovn_lflow_add_with_hint() which sets the stage hint in
> the logical flow records for most Northbound DB entities. However a few
> cases were missed:
> - newly added ECMP routes.
> - newly added Forwarding Groups.
> - newly added NAT rules.
>
> Address these cases too and add support in ovn-detrace to decode
> Forwarding_Group records.
>
> Signed-off-by: Dumitru Ceara <dceara at redhat.com>

Thanks.
I applied this patch to master.

Numan

> ---
>  northd/ovn-northd.c      | 21 +++++++++++++--------
>  utilities/ovn-detrace.in | 11 +++++++++++
>  2 files changed, 24 insertions(+), 8 deletions(-)
>
> diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
> index 6e113b3..815c727 100644
> --- a/northd/ovn-northd.c
> +++ b/northd/ovn-northd.c
> @@ -5638,8 +5638,9 @@ build_fwd_group_lflows(struct ovn_datapath *od, struct hmap *lflows)
>              "output;",
>              fwd_group->vmac, fwd_group->vmac, fwd_group->vip);
>
> -        ovn_lflow_add(lflows, od, S_SWITCH_IN_ARP_ND_RSP, 50,
> -                      ds_cstr(&match), ds_cstr(&actions));
> +        ovn_lflow_add_with_hint(lflows, od, S_SWITCH_IN_ARP_ND_RSP, 50,
> +                                ds_cstr(&match), ds_cstr(&actions),
> +                                &fwd_group->header_);
>
>          /* L2 lookup for the forwarding group's virtual MAC */
>          ds_clear(&match);
> @@ -5659,8 +5660,9 @@ build_fwd_group_lflows(struct ovn_datapath *od, struct hmap *lflows)
>
>          ds_clear(&actions);
>          ds_put_format(&actions, "fwd_group(%s);", ds_cstr(&group_ports));
> -        ovn_lflow_add(lflows, od, S_SWITCH_IN_L2_LKUP, 50,
> -                      ds_cstr(&match), ds_cstr(&actions));
> +        ovn_lflow_add_with_hint(lflows, od, S_SWITCH_IN_L2_LKUP, 50,
> +                                ds_cstr(&match), ds_cstr(&actions),
> +                                &fwd_group->header_);
>      }
>
>      ds_destroy(&match);
> @@ -7332,8 +7334,9 @@ build_ecmp_route_flow(struct hmap *lflows, struct ovn_datapath *od,
>                        lrp_addr_s,
>                        out_port->lrp_networks.ea_s,
>                        out_port->json_key);
> -        ovn_lflow_add(lflows, od, S_ROUTER_IN_IP_ROUTING_ECMP, 100,
> -                      ds_cstr(&match), ds_cstr(&actions));
> +        ovn_lflow_add_with_hint(lflows, od, S_ROUTER_IN_IP_ROUTING_ECMP, 100,
> +                                ds_cstr(&match), ds_cstr(&actions),
> +                                &route->header_);
>      }
>      ds_destroy(&match);
>      ds_destroy(&actions);
> @@ -8784,8 +8787,10 @@ build_lrouter_flows(struct hmap *datapaths, struct hmap *ports,
>                      &actions, "eth.dst = %s; next;",
>                      distributed ? nat->external_mac :
>                      od->l3dgw_port->lrp_networks.ea_s);
> -                ovn_lflow_add(lflows, od, S_ROUTER_IN_ARP_RESOLVE, 100,
> -                                ds_cstr(&match), ds_cstr(&actions));
> +                ovn_lflow_add_with_hint(lflows, od, S_ROUTER_IN_ARP_RESOLVE,
> +                                        100, ds_cstr(&match),
> +                                        ds_cstr(&actions),
> +                                        &nat->header_);
>              }
>
>              /* Egress UNDNAT table: It is for already established connections'
> diff --git a/utilities/ovn-detrace.in b/utilities/ovn-detrace.in
> index 87a8d57..9ab2b66 100755
> --- a/utilities/ovn-detrace.in
> +++ b/utilities/ovn-detrace.in
> @@ -157,6 +157,16 @@ class DHCPOptionsHintHandler(CookieHandlerByUUUID):
>          print_h('DHCP Options: cidr %s options (%s)' % (
>                      dhcp_opt.cidr, dhcp_opt.options))
>
> +class ForwardingGroupHintHandler(CookieHandlerByUUUID):
> +    def __init__(self, ovnnb_db):
> +        super(ForwardingGroupHintHandler, self).__init__(ovnnb_db,
> +                                                         'Forwarding_Group')
> +
> +    def print_record(self, fwd_group):
> +        print_h('Forwarding Group: name %s vip %s vmac %s liveness %s child ports (%s)' % (
> +                    fwd_group.name, fwd_group.vip, fwd_group.vmac,
> +                    fwd_group.liveness, fwd_group.child_port))
> +
>  class LSPHintHandler(CookieHandlerByUUUID):
>      def __init__(self, ovnnb_db):
>          super(LSPHintHandler, self).__init__(ovnnb_db, 'Logical_Switch_Port')
> @@ -225,6 +235,7 @@ class LogicalFlowHandler(CookieHandlerByUUUID):
>          self._hint_handlers = [
>              ACLHintHandler(ovnnb_db),
>              DHCPOptionsHintHandler(ovnnb_db),
> +            ForwardingGroupHintHandler(ovnnb_db),
>              LSPHintHandler(ovnnb_db),
>              LRPHintHandler(ovnnb_db),
>              LRPolicyHandler(ovnnb_db),
> --
> 1.8.3.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>


More information about the dev mailing list