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

Justin Pettit jpettit at nicira.com
Tue Apr 26 16:29:27 UTC 2011


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