[ovs-git] Open vSwitch: Implement new fragment handling policy. (master)

dev at openvswitch.org dev at openvswitch.org
Fri Oct 21 22:17:12 UTC 2011


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  7257b535ab8e5fafd811c5f6788205eefdd44948 (commit)
      from  4edb9ae90e4092f5f56b9d914d2b88783c49860d (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 7257b535ab8e5fafd811c5f6788205eefdd44948
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=7257b535ab8e5fafd811c5f6788205eefdd44948
Author: Ben Pfaff <blp at nicira.com>
		
Implement new fragment handling policy.
		
Until now, OVS has handled IP fragments more awkwardly than necessary.  It
has not been possible to match on L4 headers, even in fragments with offset
0 where they are actually present.  This means that there was no way to
implement ACLs that treat, say, different TCP ports differently, on
fragmented traffic; instead, all decisions for fragment forwarding had to
be made on the basis of L2 and L3 headers alone.

This commit improves the situation significantly.  It is still not possible
to match on L4 headers in fragments with nonzero offset, because that
information is simply not present in such fragments, but this commit adds
the ability to match on L4 headers for fragments with zero offset.  This
means that it becomes possible to implement ACLs that drop such "first
fragments" on the basis of L4 headers.  In practice, that effectively
blocks even fragmented traffic on an L4 basis, because the receiving IP
stack cannot reassemble a full packet when the first fragment is missing.

This commit works by adding a new "fragment type" to the kernel flow match
and making it available through OpenFlow as a new NXM field named
NXM_NX_IP_FRAG.  Because OpenFlow 1.0 explicitly says that the L4 fields
are always 0 for IP fragments, it adds a new OpenFlow fragment handling
mode that fills in the L4 fields for "first fragments".  It also enhances
ovs-ofctl to allow users to configure this new fragment handling mode and
to parse the new field.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Bug #7557.


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

Summary of changes:
 NEWS                          |    8 ++
 datapath/datapath.c           |  222 ++++++++++++++++++++---------------------
 datapath/datapath.h           |    5 -
 datapath/flow.c               |  148 ++++++++++++++++++++++-----
 datapath/flow.h               |   10 ++-
 datapath/tunnel.c             |    5 +-
 include/linux/openvswitch.h   |   38 ++++----
 include/openflow/nicira-ext.h |   49 +++++++++
 include/openflow/openflow.h   |    1 +
 lib/classifier.c              |   50 ++++++++--
 lib/classifier.h              |    2 +
 lib/dpif-linux.c              |   40 --------
 lib/dpif-netdev.c             |   28 +-----
 lib/dpif-provider.h           |   10 --
 lib/dpif.c                    |   27 -----
 lib/dpif.h                    |    3 -
 lib/flow.c                    |  117 ++++++++++++++--------
 lib/flow.h                    |   37 ++++---
 lib/meta-flow.c               |  124 +++++++++++++++++++++--
 lib/meta-flow.h               |    4 +-
 lib/nx-match.c                |   70 +++++++++++--
 lib/nx-match.def              |    1 +
 lib/odp-util.c                |  123 +++++++++++++++++++----
 lib/ofp-print.c               |   18 +---
 lib/ofp-util.c                |   60 +++++++++--
 lib/ofp-util.h                |    3 +
 ofproto/netflow.c             |    2 +-
 ofproto/ofproto-dpif.c        |   76 ++++++++++----
 ofproto/ofproto-provider.h    |   40 ++++++--
 ofproto/ofproto.c             |   38 +++----
 tests/flowgen.pl              |   25 ++---
 tests/odp.at                  |   38 +++++---
 tests/ofproto-dpif.at         |   49 ++++++++-
 tests/ovs-ofctl.at            |   52 ++++++++++
 tests/test-classifier.c       |   19 ++--
 tests/test-flows.c            |    3 +
 utilities/ovs-dpctl.c         |    9 +-
 utilities/ovs-ofctl.8.in      |   54 ++++++++++
 utilities/ovs-ofctl.c         |  105 ++++++++++++++++++--
 39 files changed, 1203 insertions(+), 510 deletions(-)


hooks/post-receive
-- 
Open vSwitch



More information about the git mailing list