[ovs-dev] [flow-compat 6/7] ofproto-dpif: Factor NetFlow active timeouts out of flow expiration.

Jesse Gross jesse at nicira.com
Mon Nov 7 05:56:10 UTC 2011


On Fri, Nov 4, 2011 at 4:43 PM, Ben Pfaff <blp at nicira.com> wrote:
> NetFlow active timeouts were only mixed in with flow expiration for
> convenience: both processes need to iterate all the facets.  But
> an upcoming commit will change flow expiration to work in terms of
> a new "subfacet" entity, so they will no longer fit together well.
>
> This change could be seen as an optimization, since NetFlow active
> timeouts don't ordinarily have to run as often as flow expiration,
> especially when the flow expiration rate is stepped up due to a
> large volume of flows.

This has a pretty significant effect on the accuracy of the timeouts
that I'm not sure is intended.  Currently, active timeouts are done on
a per-flow basis starting from time of first use.  However, this
essentially starts a per-bridge timer on first configuration that must
first expire in order to check the per-flow timer.  So with the
default timeout of 10 minutes, the first active timeout will occur
somewhere between 10 and 20 minutes after first use.  This only
happens for the first one though since they will tend to synchronize.
However, I think that there is a potential for the two timers to
desynchronize, resulting in apparently random doubling of intervals.
For example, netflow_run() is also called from gen_netflow_rec() when
it fills up a packet but does not check the return code, skipping the
active timeout if a timer tick occurred in that window.  Finally, the
current active timeout code distributes reporting over a large span of
time but this concentrates all of them at once, which could cause a
load spike in the collector if a number of switches are brought up at
the same time.



More information about the dev mailing list