[ovs-dev] [overload 5/7] ofproto: Iterate through exact-match rules first during expiration.

Justin Pettit jpettit at nicira.com
Thu Oct 7 06:55:47 UTC 2010


Looks good.

--Justin


On Sep 30, 2010, at 5:17 PM, Ben Pfaff wrote:

> A wildcarded flow is idle only if all of its subrules have expired because
> they were idle, so unless we expire exact-match rules first it is possible
> that a wildcarded flow fails to expire as soon as it should.
> 
> (The current implementation of classifier_for_each() iterates through
> exact-match rules before wildcarded rules, but nothing in the interface
> guarantees that.)
> ---
> ofproto/ofproto.c |    8 ++++++--
> 1 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> index 52f3ee7..0f07b23 100644
> --- a/ofproto/ofproto.c
> +++ b/ofproto/ofproto.c
> @@ -4202,9 +4202,13 @@ ofproto_expire(struct ofproto *ofproto)
>     /* Update 'used' for each flow in the datapath. */
>     ofproto_update_used(ofproto);
> 
> -    /* Expire idle flows. */
> +    /* Expire idle flows.
> +     *
> +     * A wildcarded flow is idle only when all of its subrules have expired due
> +     * to becoming idle, so iterate through the exact-match flows first. */
>     cbdata.ofproto = ofproto;
> -    classifier_for_each(&ofproto->cls, CLS_INC_ALL, rule_expire, &cbdata);
> +    classifier_for_each(&ofproto->cls, CLS_INC_EXACT, rule_expire, &cbdata);
> +    classifier_for_each(&ofproto->cls, CLS_INC_WILD, rule_expire, &cbdata);
> 
>     /* Let the hook know that we're at a stable point: all outstanding data
>      * in existing flows has been accounted to the account_cb.  Thus, the
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org





More information about the dev mailing list