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

Justin Pettit jpettit at nicira.com
Tue Apr 26 16:50:09 UTC 2011


I'll start reviewing it today, but it's going to run over a few days...  :-)

--Justin


On Apr 26, 2011, at 9:32 AM, Ben Pfaff wrote:

> 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