[ovs-git] Open vSwitch: ofproto: Drop flows from datapath more quickly under heavy load. (citrix)

dev at openvswitch.org dev at openvswitch.org
Fri Oct 8 05:00:45 UTC 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Open vSwitch".

The branch, citrix has been updated
       via  9590517842ef5153c3cb44675d84ce63a24e7931 (commit)
       via  f4c7a286680a8e9bf197d088268eff37dc2b086c (commit)
       via  84bc40190e9ac69b1fcbd7674195f19e9095a986 (commit)
       via  dd13db63b809ac2e64f7b0ea6b5d74525748bdcd (commit)
       via  c9ce320c9e0334b438d6c253edc44021e785c7a7 (commit)
       via  2ed561a5d933217b38e91f84314a31788f7c9eec (commit)
       via  47a6f94f91050bc9f2a02e144e018b12918cf3d5 (commit)
       via  fa0d5349c39593656e75bdc82330bf04e9f612f7 (commit)
      from  f22a24b7b3b8aec61f6778bf9c8e6e7c5514039a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 9590517842ef5153c3cb44675d84ce63a24e7931
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=9590517842ef5153c3cb44675d84ce63a24e7931
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Drop flows from datapath more quickly under heavy load.
		
In normal operation it makes sense to keep track of all of the flows that
have been seen recently and to cache all of them in the kernel.  Under
unusual conditions, such as those caused by network scanning tools or by an
actual targeted DoS attack against the vswitch, the number of flows can
explode to extremely high numbers (hundreds of thousands or more).  In such
a situation the vswitch needs to guard against memory exhaustion by
expiring flows more quickly and more often.  This commit implements an
inexpensive technique for determining which flows should be dropped in such
a situation.


commit f4c7a286680a8e9bf197d088268eff37dc2b086c
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=f4c7a286680a8e9bf197d088268eff37dc2b086c
Author: Ben Pfaff <blp at nicira.com>
		
classifier: Introduce macros for iterating exact-match flows.
		
This special case of iterating through flows is easier and presumably
faster to implement using a macro.


commit 84bc40190e9ac69b1fcbd7674195f19e9095a986
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=84bc40190e9ac69b1fcbd7674195f19e9095a986
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Iterate through exact-match rules first during expiration.
		
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.)


commit dd13db63b809ac2e64f7b0ea6b5d74525748bdcd
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=dd13db63b809ac2e64f7b0ea6b5d74525748bdcd
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Drop unneeded poll_immediate_wake().
		
This poll_immediate_wake() is unnecessary because netflow_run() is always
called afterward within the same poll loop.  It's better to delete it, to
avoid wasting CPU.


commit c9ce320c9e0334b438d6c253edc44021e785c7a7
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c9ce320c9e0334b438d6c253edc44021e785c7a7
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Fix effective memory leak for uninstallable flows.
		
In one or two corner cases, flows cannot be installed because every packet
in the flow must be processed by userspace.  The code to expire rules was
ignoring these uninstallable rules, and thus they would never get freed,
even after they became idle.  This commit fixes the problem.


commit 2ed561a5d933217b38e91f84314a31788f7c9eec
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=2ed561a5d933217b38e91f84314a31788f7c9eec
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Factor conditional out of loop in send_flow_removed().
		


commit 47a6f94f91050bc9f2a02e144e018b12918cf3d5
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=47a6f94f91050bc9f2a02e144e018b12918cf3d5
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Group functions related to flow expiration together.
		
This should be a purely stylistic change, with no effect on behavior.

This commit changes the callback pointer passed to the
classifier_for_each() from a pointer to an ofproto to a pointer to a
structure that includes an ofproto.  Future commits planned will add
more members to this new structure.


commit fa0d5349c39593656e75bdc82330bf04e9f612f7
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=fa0d5349c39593656e75bdc82330bf04e9f612f7
Author: Ethan Jackson <ethan at nicira.com>
		
xenserver: ovs-external-ids log to file instead of syslog
		
ovs-external-ids was crashing on startup because it was brought up
before /dev/log exists.  The simplest solution to this problem is
to have it log to /var/log/openvswitch/ovs-external-ids.log .  This
is consistent with vswitchd and ovsdb-server.

Signed-off-by: Ethan Jackson <ethan at nicira.com>


-----------------------------------------------------------------------

Summary of changes:
 lib/classifier.c                                   |    5 +-
 lib/classifier.h                                   |    6 +
 ofproto/ofproto.c                                  |  471 +++++++++++++-------
 .../usr_share_openvswitch_scripts_ovs-external-ids |    6 +-
 4 files changed, 327 insertions(+), 161 deletions(-)


hooks/post-receive
-- 
Open vSwitch




More information about the git mailing list