diff options
author | Ethan Jackson <ethan@nicira.com> | 2012-12-20 15:32:03 -0800 |
---|---|---|
committer | Ethan Jackson <ethan@nicira.com> | 2013-01-24 12:34:07 -0800 |
commit | 0a740f48293efa6162accc385f06def13b15f49b (patch) | |
tree | dfb0d7618f227c74faa5f4fe60d75d39f53ffaec /lib/netdev-vport.h | |
parent | af37354d92f45f1f276bb0bbf754b2851e29d14b (diff) | |
download | openvswitch-0a740f48293efa6162accc385f06def13b15f49b.tar.gz |
ofproto-dpif: Implement patch ports in userspace.
This commit moves responsibility for implementing patch ports from
the datapath to ofproto-dpif. There are two main reasons to do
this.
The first is a matter of design: ofproto-dpif both has more
information than the datapath, and is better suited to handle the
complexity required to implement patch ports.
The second is performance. My setup is a virtual machine with two
basic learning bridges connected by patch ports. I used
ovs-benchmark to ping the virtual router IP residing outside the
VM. Over a 60 second run, "ovs-benchmark rate" improves from
14618.1 to 19311.9 transactions per second, or a 32% improvement.
Similarly, "ovs-benchmark latency" improves from 6ms to 4ms.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Diffstat (limited to 'lib/netdev-vport.h')
-rw-r--r-- | lib/netdev-vport.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/netdev-vport.h b/lib/netdev-vport.h index 31c119870..b372a7448 100644 --- a/lib/netdev-vport.h +++ b/lib/netdev-vport.h @@ -18,9 +18,9 @@ #define NETDEV_VPORT_H 1 #include <stdbool.h> -#include "openvswitch/types.h" struct dpif_linux_vport; +struct dpif_flow_stats; struct netdev; struct netdev_stats; @@ -30,7 +30,15 @@ const struct ofpbuf *netdev_vport_get_options(const struct netdev *); enum ovs_vport_type netdev_vport_get_vport_type(const struct netdev *); const char *netdev_vport_get_netdev_type(const struct dpif_linux_vport *); +bool netdev_vport_is_patch(const struct netdev *); int netdev_vport_get_stats(const struct netdev *, struct netdev_stats *); +const char *netdev_vport_patch_peer(const struct netdev *netdev); + +void netdev_vport_patch_inc_rx(const struct netdev *, + const struct dpif_flow_stats *); +void netdev_vport_patch_inc_tx(const struct netdev *, + const struct dpif_flow_stats *); + #endif /* netdev-vport.h */ |