On Wed, Jul 31, 2024 at 3:03 PM Ilya Maximets <[email protected]> wrote:
> On 7/31/24 11:05, Dumitru Ceara wrote: > > From: Ales Musil <[email protected]> > > > > Currently, OVN would generate up to 2 flows per sample, depending > > on the configuration. Add optimization that can reduce the number > > of flows added into the ACL pipeline down to 3 per collector. This > > optimization can be achieved only when the sample action with > > registers is supported in OvS and the sample has only single > > collector. The single collector per sample should be the case > > in most configurations, usually even the same collector > > for all samples which greatly reduces the number of flows per > > ACL with sampling. > > > > If there are more collectors per sample or the OvS feature is not > > supported, the implementation will fall back to flows per sample. > > > > Reported-at: https://issues.redhat.com/browse/FDP-709 > > Signed-off-by: Ales Musil <[email protected]> > > --- > > include/ovn/logical-fields.h | 2 + > > lib/logical-fields.c | 8 + > > northd/northd.c | 256 +++++++++++++++++++------- > > tests/ovn-northd.at | 341 ++++++++++++++++++++++++++++++----- > > tests/ovn.at | 2 + > > tests/system-ovn.at | 10 +- > > 6 files changed, 509 insertions(+), 110 deletions(-) > > Not a full review, but a couple comments inline. > > > > > diff --git a/include/ovn/logical-fields.h b/include/ovn/logical-fields.h > > index ce79b501cf..d6c4a9b6b3 100644 > > --- a/include/ovn/logical-fields.h > > +++ b/include/ovn/logical-fields.h > > @@ -197,6 +197,8 @@ const struct ovn_field *ovn_field_from_name(const > char *name); > > #define OVN_CT_NATTED_BIT 1 > > #define OVN_CT_LB_SKIP_SNAT_BIT 2 > > #define OVN_CT_LB_FORCE_SNAT_BIT 3 > > +#define OVN_CT_OBS_STAGE_1ST_BIT 4 > > +#define OVN_CT_OBS_STAGE_END_BIT 5 > > > > #define OVN_CT_BLOCKED 1 > > #define OVN_CT_NATTED 2 > > diff --git a/lib/logical-fields.c b/lib/logical-fields.c > > index 0c187e1c84..134d2674fd 100644 > > --- a/lib/logical-fields.c > > +++ b/lib/logical-fields.c > > @@ -165,6 +165,14 @@ ovn_init_symtab(struct shash *symtab) > > OVN_CT_STR(OVN_CT_LB_FORCE_SNAT_BIT) > > "]", > > WR_CT_COMMIT); > > + expr_symtab_add_subfield_scoped(symtab, "ct_mark.obs_stage", NULL, > > + "ct_mark[" > > + > OVN_CT_STR(OVN_CT_OBS_STAGE_1ST_BIT) ".." > > + OVN_CT_STR(OVN_CT_OBS_STAGE_END_BIT) > > + "]", > > + WR_CT_COMMIT); > > + expr_symtab_add_subfield_scoped(symtab, "ct_mark.obs_collector_id", > NULL, > > + "ct_mark[16..23]", WR_CT_COMMIT); > > > > expr_symtab_add_field_scoped(symtab, "ct_label", MFF_CT_LABEL, NULL, > > false, WR_CT_COMMIT); > > diff --git a/northd/northd.c b/northd/northd.c > > index 6bf3ca4d8c..fd9cfe82db 100644 > > --- a/northd/northd.c > > +++ b/northd/northd.c > > @@ -144,8 +144,20 @@ static bool vxlan_mode; > > #define REGBIT_ACL_VERDICT_ALLOW "reg8[16]" > > #define REGBIT_ACL_VERDICT_DROP "reg8[17]" > > #define REGBIT_ACL_VERDICT_REJECT "reg8[18]" > > +#define REGBIT_ACL_OBS_STAGE "reg8[19..20]" > > #define REG_ACL_TIER "reg8[30..31]" > > > > +enum acl_observation_stage { > > + ACL_OBS_FROM_LPORT, > > + ACL_OBS_FROM_LPORT_AFTER_LB, > > + ACL_OBS_TO_LPORT, > > + ACL_OBS_STAGE_MAX > > +}; > > Values of this enum end up in the database as part of actions. > It's better to define exact values for them. > Fair point. > > <snip> > > > diff --git a/tests/system-ovn.at b/tests/system-ovn.at > > index 52b2b84d7b..a9cb54b452 100644 > > --- a/tests/system-ovn.at > > +++ b/tests/system-ovn.at > > @@ -7724,7 +7724,7 @@ NS_CHECK_EXEC([sw0-p3], [ping -q -c 10 -i 0.3 -w > 15 10.0.0.2 | FORMAT_PING], \ > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.0.0.2) | \ > > sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | \ > > sed -e > 's/labels=0x4d3[[0-9a-f]]*/labels=0x4d3000000000000000000000000/'], [0], > [dnl > > What's the point of replacing with 24 zeroes? > Maybe just 0x4d3 ? > > Would be nice to check that we matched 24 characters, but > I'm not sure if there is a nice portable way to do that. > Well this sed is not part of this patch actually we can change but rather as follow up change. > > Best regards, Ilya Maximets. > > Thanks, Ales -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> [email protected] <https://red.ht/sig> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
