[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