[ovs-dev] [PATCH ovn v2 06/10] lflow: Do not cache non-conjunctive flows that use address sets/portgroups.
Mark Michelson
mmichels at redhat.com
Mon Feb 8 22:05:44 UTC 2021
Hi Dumitru, just a small nit below
On 2/4/21 8:25 AM, Dumitru Ceara wrote:
> Caching the conjunction id offset for flows that refer to address sets
> and/or port groups but do not currently generate conjunctive matches,
> e.g., because the port group has only one locally bound port, is wrong.
>
> If ports are later added to the port group and/or addresses are added to
> the address set, this flow will be reconsidered but at this point will
> generate conjunctive matches. We cannot use the cached conjunction id
> offset because it might create collisions with other conjunction ids
> created for unrelated flows.
>
> Fixes: 1213bc827040 ("ovn-controller: Cache logical flow expr matches.")
> Signed-off-by: Dumitru Ceara <dceara at redhat.com>
> ---
> controller/lflow.c | 2 +-
> tests/ovn.at | 12 ++++++++++++
> 2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/controller/lflow.c b/controller/lflow.c
> index 3e3605a..c493652 100644
> --- a/controller/lflow.c
> +++ b/controller/lflow.c
> @@ -884,7 +884,7 @@ consider_logical_flow__(const struct sbrec_logical_flow *lflow,
> lflow_cache_add_expr(l_ctx_out->lflow_cache, lflow,
> conj_id_ofs, cached_expr);
> cached_expr = NULL;
> - } else {
> + } else if (n_conjs) {
> lflow_cache_add_conj_id(l_ctx_out->lflow_cache, lflow,
> conj_id_ofs);
> }
> diff --git a/tests/ovn.at b/tests/ovn.at
> index 0e114cf..4bb92d6 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -22300,6 +22300,18 @@ AT_CHECK([test "$(($conj_id_cnt + 2))" = "$(get_cache_count cache-conj-id)"], [0
> AT_CHECK([test "$expr_cnt" = "$(get_cache_count cache-expr)"], [0], [])
> AT_CHECK([test "$matches_cnt" = "$(get_cache_count cache-matches)"], [0], [])
>
> +AS_BOX([Check no caching caching for non-conjunctive port group/address set matches])
s/caching caching/caching/
> +conj_id_cnt=$(get_cache_count cache-conj-id)
> +expr_cnt=$(get_cache_count cache-expr)
> +matches_cnt=$(get_cache_count cache-matches)
> +
> +check ovn-nbctl acl-add ls1 from-lport 1 'inport == @pg2 && outport == @pg2 && is_chassis_resident("lsp1")' drop
> +check ovn-nbctl --wait=hv sync
> +
> +AT_CHECK([test "$conj_id_cnt" = "$(get_cache_count cache-conj-id)"], [0], [])
> +AT_CHECK([test "$expr_cnt" = "$(get_cache_count cache-expr)"], [0], [])
> +AT_CHECK([test "$matches_cnt" = "$(get_cache_count cache-matches)"], [0], [])
> +
> OVN_CLEANUP([hv1])
> AT_CLEANUP
>
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
More information about the dev
mailing list