[ovs-git] Open vSwitch: tunneling: Allow disabling tunnel header caching. (master)

dev at openvswitch.org dev at openvswitch.org
Wed Sep 22 21:00:34 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, master has been updated
       via  dca9309ae888995f13be5e1bfa607214ca531613 (commit)
       via  842cf6f472b236b6e61be04b41970116245b1759 (commit)
       via  7c79397fe8ff52eb9cfe4d32a9d1f8b2f23c45c8 (commit)
       via  b7a31ec13d0617868378d39a72beb4c4ffcb7e5c (commit)
       via  3976f6d57b1134c5c3ed054c9da4aa6786fbf5bf (commit)
       via  fb8c93473efacd67a50117d0f2a3084f2d96ceca (commit)
       via  560e802229f3028c02273435dd1c6efba33e0949 (commit)
      from  02892690e6866781a0a6c84e25a2c1d277822788 (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 dca9309ae888995f13be5e1bfa607214ca531613
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=dca9309ae888995f13be5e1bfa607214ca531613
Author: Jesse Gross <jesse at nicira.com>
		
tunneling: Allow disabling tunnel header caching.
		
Tunnel header caching significantly improves performance by bypassing
much of the transmit path.  However, in some special cases or for
debugging it may be desirable to traverse the entire IP stack.  This
exposes that as an option (default is to enable header caching).

Signed-off-by: Jesse Gross <jesse at nicira.com>
Reviewed-by: Ben Pfaff <blp at nicira.com>


commit 842cf6f472b236b6e61be04b41970116245b1759
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=842cf6f472b236b6e61be04b41970116245b1759
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Add tunnel header caching.
		
On the transmit path we generate essentially the same tunnel header
for every packet to a given destination.  However, each packet must
have the headers assembled in pieces, lookup the destination in the
routing table, and lookup the flow in OVS.  This avoids that extra
work by caching all of the header and output path information and
only rebuilding it when something actually changes.

This optimization reduces CPU load on transmit by approximately 13%.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Reviewed-by: Ben Pfaff <blp at nicira.com>


commit 7c79397fe8ff52eb9cfe4d32a9d1f8b2f23c45c8
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=7c79397fe8ff52eb9cfe4d32a9d1f8b2f23c45c8
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Backport workqueue functions.
		
An upcoming commit will use some workqueue functions that weren't
available on earlier kernels, so this backports those functions.
The backporting uses timers instead of delayed work queues because
the earlier versions of work queues have some unsafe corner cases.
In addition, this removes some unused work queue backporting code
that is no longer used because it is potentially unsafe.

Note that this commit changes the behavior of work queues: normally
they run in process context but the backported version runs in
softirq context.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Reviewed-by: Ben Pfaff <blp at nicira.com>


commit b7a31ec13d0617868378d39a72beb4c4ffcb7e5c
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=b7a31ec13d0617868378d39a72beb4c4ffcb7e5c
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Move is_frag out of struct ovs_skb_cb.
		
is_frag is only used for communication between two functions, which
means that it doesn't really need to be in the SKB CB.  This wouldn't
necessarily be a problem except that there are also a number of other
paths that lead to this being uninitialized.  This isn't a problem
now but uninitialized memory seems dangerous and there isn't much
upside.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Reviewed-by: Ben Pfaff <blp at nicira.com>


commit 3976f6d57b1134c5c3ed054c9da4aa6786fbf5bf
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=3976f6d57b1134c5c3ed054c9da4aa6786fbf5bf
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Enable usage of cached flows.
		
An upcoming commit will add support for supplying cached flows for
packets entering the datapath.  This adds the code in the datapath
itself to recognize these cached flows and use them instead of
extracting the flow fields and doing a lookup.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Reviewed-by: Ben Pfaff <blp at nicira.com>


commit fb8c93473efacd67a50117d0f2a3084f2d96ceca
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=fb8c93473efacd67a50117d0f2a3084f2d96ceca
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Add ref counting for flows.
		
Currently flows are only used within the confines of one
rcu_read_lock()/rcu_read_unlock() session.  However, with the
addition of header caching we will need to hold references to flows
for longer periods of time.  This adds support for that by adding
refcounts to flows.  RCU is still used for normal packet handling
to avoid a performance impact from constantly updating the refcount.
However, instead of directly freeing the flow after a grace period
we simply decrement the refcount.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Reviewed-by: Ben Pfaff <blp at nicira.com>


commit 560e802229f3028c02273435dd1c6efba33e0949
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=560e802229f3028c02273435dd1c6efba33e0949
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Move flow allocation into a function.
		
As the process to allocate a flow becomes more involved it becomes
more cumbersome for the code to be mixed in with the general
datapath so split it out into a new function.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Reviewed-by: Ben Pfaff <blp at nicira.com>


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

Summary of changes:
 datapath/datapath.c                                |   69 +-
 datapath/datapath.h                                |    4 +-
 datapath/flow.c                                    |   57 +-
 datapath/flow.h                                    |   21 +-
 .../linux-2.6/compat-2.6/include/linux/workqueue.h |   65 +-
 datapath/tunnel.c                                  |  985 ++++++++++++++------
 datapath/tunnel.h                                  |  153 +++-
 datapath/vport-capwap.c                            |   68 +-
 datapath/vport-gre.c                               |   59 +-
 datapath/vport-internal_dev.c                      |    3 +-
 datapath/vport.c                                   |    3 +
 datapath/vport.h                                   |    3 +-
 include/openvswitch/tunnel.h                       |    1 +
 lib/netdev-tunnel.c                                |    5 +
 vswitchd/vswitch.xml                               |   22 +
 15 files changed, 1060 insertions(+), 458 deletions(-)


hooks/post-receive
-- 
Open vSwitch




More information about the git mailing list