[ovs-dev] [PATCH ovs V2 00/21] Introducing HW offload support for openvswitch

Paul Blakey paulb at mellanox.com
Sun Dec 25 11:39:28 UTC 2016


This patch series introduces rule offload functionality to dpif-netlink 
via netdev ports new flow offloading API. The user can specify whether to
enable rule offloading or not via OVS configuration. Netdev providers
are able to implement netdev flow offload API in order to offload rules.

This patch series also implements one offload scheme for netdev-linux,
using TC flower classifier, which was chosen because its sort of natrual to
state OVS DP rules for this classifier. However, the code can be extended
to support other classifiers such as U32, eBPF, etc which support offload as well.

The use-case we are currently addressing is the newly sriov switchdev mode in the
linux kernel which was introduced in version 4.8 [1][2]. this series was tested against sriov vfs
vports representors of the Mellanox 100G ConnectX-4 series exposed by the mlx5 kernel driver.

changes from V1
    - Added generic netdev flow offloads API.
    - Implemented relevant flow API in netdev-linux (and netdev-vport).
    - Added a other_config hw-offload option to enable offloading (defaults to false).
    - Fixed coding style to conform with OVS.
    - Policy removed for now. (Will be discussed how best implemented later).

Paul Blakey (21):
  tc: Add tc flower interface
  netdev: Adding a new netdev api to be used for offloading flows
  other-config: Add hw-offload switch to control netdev flow offloading
  other-config: Add skip-hw switch to control tc flower flag
  dpif: Save added ports in a port map for netdev flow api use
  netdev-vport: Add get ifindex implementation
  dpif-netlink: Flush added ports using netdev flow api
  netdev-tc-offloads: Implement netdev flow flush using tc interface
  dpif-netlink: Dump netdevs flows on flow dump
  netdev-tc-offloads: Add ufid to tc/netdev map
  netdev-tc-offloads: Implement netdev flow dump api using tc interface
  dpif-netlink: Use netdev flow put api to insert a flow
  netdev-tc-offloads: Add flower mask to priority map
  netdev-tc-offloads: Netdev flow put implementation using tc api
  dpif-netlink: delete a flow from netdev
  netdev-tc-offloads: netdev flow del using tc interface
  dpif-netlink: Use netdev flow get api to query a flow
  netdev-tc-offloads: Implement flow get using tc interface
  dpctl: read vswitch config on start
  netdev-linux: always add ingress qdisc
  netdev-vport: use common offloads interface

 lib/automake.mk          |   4 +
 lib/dpctl.c              |  44 +++
 lib/dpctl.h              |   2 +
 lib/dpif-netlink.c       | 506 +++++++++++++++++++++++-
 lib/dpif.c               |  25 ++
 lib/netdev-bsd.c         |   9 +
 lib/netdev-dummy.c       |   9 +
 lib/netdev-linux.c       |  55 ++-
 lib/netdev-provider.h    |  29 ++
 lib/netdev-tc-offloads.c | 625 +++++++++++++++++++++++++++++
 lib/netdev-tc-offloads.h |  40 ++
 lib/netdev-vport.c       |  40 +-
 lib/netdev.c             | 253 ++++++++++++
 lib/netdev.h             |  32 ++
 lib/tc.c                 | 996 +++++++++++++++++++++++++++++++++++++++++++++++
 lib/tc.h                 | 107 +++++
 utilities/ovs-dpctl.c    |   2 +
 vswitchd/bridge.c        |   4 +
 vswitchd/vswitch.xml     |  25 ++
 19 files changed, 2787 insertions(+), 20 deletions(-)
 create mode 100644 lib/netdev-tc-offloads.c
 create mode 100644 lib/netdev-tc-offloads.h
 create mode 100644 lib/tc.c
 create mode 100644 lib/tc.h

-- 
1.8.3.1



More information about the dev mailing list