[ovs-dev] [next 00/35] Refactor OVS to better support hardware.

Ben Pfaff blp at nicira.com
Tue Apr 26 16:32:59 UTC 2011


I had to look at the headers carefully to check that that wasn't from
Justin Petbot, you joker you.

On Tue, Apr 26, 2011 at 09:29:27AM -0700, Justin Pettit wrote:
> Looks good.
> 
> --Justin
> 
> 
> On Apr 26, 2011, at 9:24 AM, Ben Pfaff wrote:
> 
> > Until now, OVS's datapath model has assumed datapath supports only
> > exact-match flows.  This works well for a software switch, in which
> > the datapath can most efficiently look up flows using a hash table,
> > but it does not work well for hardware switches that support wildcards
> > in hardware using a TCAM.
> > 
> > This series refactors the OVS userspace to support datapaths with
> > wildcards.  I expect that this series reflects the future direction of the
> > OVS master branch, but for now it is only on a new branch named "next".
> > Before it can be merged into "master", it will need to be tested.  It also
> > needs some more documentation; the final commit adds some, but probably not
> > enough, and some of the comments that *are* in that commit are inaccurate.
> > 
> > I'm not yet sure whether this branch should be rebased against master
> > or merged with it.  Advice on that is welcome.
> > 
> > Anyone have comments?
> > 
> > Thanks,
> > 
> > Ben.
> > 
> > Ben Pfaff (35):
> >  ovs-controller: Honor --wildcard option.
> >  bridge: Move logic for flushing flows and standalone mode into
> >    connmgr.
> >  vlan-bitmap: New data structure.
> >  mac-learning: Change mac_learning_set_flood_vlans() to not take
> >    ownership.
> >  mac-learning: Avoid unnecessary call to free().
> >  bridge: Avoid extra iteration through all "struct iface"s.
> >  bridge: Inline iterate_and_prune_ifaces() and remove it.
> >  bridge: Use bridge name, instead of dpif name, in log messages.
> >  ofproto: Make ofproto_send_packet() static.
> >  ofproto: Group struct cfm forward declaration with the rest of them.
> >  ofproto: Maintain ofp_phy_port for each ofport in network byte order.
> >  Convert remaining network-byte-order "uint<N>_t"s into "ovs_be<N>"s.
> >  bridge: Change 'iface_by_name' from shash to hmap.
> >  bridge: Eliminate direct dependencies on dpif.
> >  bridge: Change all_bridges from list to hmap (indexed by name).
> >  bridge: Get rid of bridge_get_all_ifaces(), bridge_fetch_dp_ifaces().
> >  bridge: Factor code out of bridge_reconfigure().
> >  dpif: New function dpif_normalize_type().
> >  bridge: Reorder configuration.
> >  ofproto: Move private definitions to separate header.
> >  ofproto: Rename ofproto_iface_*() functions to ofproto_port_*().
> >  ofproto: Add 'name' field to struct ofproto and use hmap instead of
> >    shash.
> >  bond: New function bond_slave_set_netdev().
> >  hmapx: New data structure.
> >  dpif: Better log unusual errors in dpif_port_query_by_name().
> >  ofproto: Initialize ports immediately upon ofproto creation.
> >  ofproto: Add a pointer to the owning ofproto to struct ofport.
> >  ofproto: Update ports immediately upon ofproto_port_add() too.
> >  bridge: Move packet processing functionality into ofproto.
> >  dpif: Improve abstraction by making 'run' and 'wait' functions
> >    per-dpif.
> >  dpif: Make dp_parse_name() normalize its returned type.
> >  ofproto: Improve abstraction by adding function ofproto_parse_name().
> >  ofproto: Improve abstraction by using OpenFlow port numbers in
> >    interface.
> >  ofproto: Complete abstraction by adding enumeration and deletion
> >    functions.
> >  ofproto: Break apart into generic and hardware-specific parts.
> > 
> > PORTING                    |  352 +++--
> > lib/automake.mk            |    4 +
> > lib/bitmap.h               |    8 +-
> > lib/bond.c                 |   14 +
> > lib/bond.h                 |    1 +
> > lib/byte-order.h           |   41 +-
> > lib/classifier.c           |    7 +-
> > lib/dhcp.h                 |   14 +-
> > lib/dpif-linux.c           |    4 +-
> > lib/dpif-netdev.c          |   56 +-
> > lib/dpif-provider.h        |   15 +-
> > lib/dpif.c                 |   88 +-
> > lib/dpif.h                 |    7 +-
> > lib/flow.c                 |    6 +-
> > lib/flow.h                 |    2 +-
> > lib/hmapx.c                |  197 +++
> > lib/hmapx.h                |   71 +
> > lib/mac-learning.c         |   28 +-
> > lib/mac-learning.h         |    2 +-
> > lib/netdev-linux.c         |    4 +-
> > lib/netdev-provider.h      |    3 +-
> > lib/netdev.c               |    2 +-
> > lib/netdev.h               |    3 +-
> > lib/nx-match.c             |    8 +-
> > lib/odp-util.c             |    5 +-
> > lib/ofp-parse.c            |    3 -
> > lib/ofp-print.c            |    2 +-
> > lib/ofp-util.c             |   24 +-
> > lib/ofp-util.h             |    4 +-
> > lib/rconn.c                |    8 +-
> > lib/rconn.h                |    9 +-
> > lib/socket-util.c          |    6 +-
> > lib/socket-util.h          |    3 +-
> > lib/vconn.h                |    4 +-
> > lib/vlan-bitmap.c          |   60 +
> > lib/vlan-bitmap.h          |   47 +
> > ofproto/automake.mk        |    5 +-
> > ofproto/connmgr.c          |   38 +-
> > ofproto/fail-open.c        |    1 +
> > ofproto/in-band.c          |    1 +
> > ofproto/names.c            |   35 +
> > ofproto/netflow.c          |   40 +-
> > ofproto/ofproto-dpif.c     | 3878 ++++++++++++++++++++++++++++++++++++++++++++
> > ofproto/ofproto.c          | 3316 +++++++++----------------------------
> > ofproto/ofproto.h          |  155 ++-
> > ofproto/pktbuf.c           |    8 +-
> > ofproto/private.h          |  514 ++++++
> > tests/ofproto-macros.at    |    2 +-
> > tests/ofproto.at           |    2 +-
> > tests/ovs-ofctl.at         |   18 +-
> > tests/test-classifier.c    |    2 +-
> > utilities/automake.mk      |    5 +-
> > utilities/ovs-controller.c |    1 +
> > utilities/ovs-ofctl.c      |   37 +-
> > utilities/ovs-openflowd.c  |   22 +-
> > vswitchd/bridge.c          | 2909 ++++++++++-----------------------
> > vswitchd/ovs-vswitchd.c    |    3 -
> > 57 files changed, 7075 insertions(+), 5029 deletions(-)
> > create mode 100644 lib/hmapx.c
> > create mode 100644 lib/hmapx.h
> > create mode 100644 lib/vlan-bitmap.c
> > create mode 100644 lib/vlan-bitmap.h
> > create mode 100644 ofproto/names.c
> > create mode 100644 ofproto/ofproto-dpif.c
> > create mode 100644 ofproto/private.h
> > 
> > -- 
> > 1.7.4.4
> > 
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> 



More information about the dev mailing list