[ovs-dev] [PATCH 0/6] offload Linux LAG devices to the TC datapath

John Hurley john.hurley at netronome.com
Thu Jun 21 13:35:55 UTC 2018

This patchset extends OvS TC and the linux-netdev implementation to
support the offloading of Linux Link Aggregation devices (LAG) and their
slaves. TC blocks are used to provide this offload. Blocks, in TC, group
together a series of qdiscs. If a filter is added to one of these qdiscs
then it applied to all. Similarly, if a packet is matched on one of the
grouped qdiscs then the stats for the entire block are increased. The
basis of the LAG offload is that the LAG master (attached to the OvS
bridge) and slaves that may exist outside of OvS are all added to the same
TC block. OvS can then control the filters and collect the stats on the
slaves via its interaction with the LAG master.

The TC API is extended within OvS to allow the addition of a block id to
ingress qdisc adds. Block ids are then assigned to each LAG master that is
attached to the OvS bridge. The linux netdev netlink socket is used to
monitor slave devices. If a LAG slave is found whose master is on the bridge
then it is added to the same block as its master. If the underlying slaves
belong to an offloadable device then the Linux LAG device can be offloaded
to hardware.

John Hurley (6):
  tc: allow offloading of block ids
  netdev-provider: add class op to get block_id
  rtnetlink: extend parser to include kind of master and slave
  netdev-linux: indicate if netdev is a LAG master
  netdev-linux: assign LAG devs to tc blocks
  netdev-linux: monitor and offload LAG slaves to TC

 lib/netdev-bsd.c         |   3 +-
 lib/netdev-dpdk.c        |   3 +-
 lib/netdev-dummy.c       |   3 +-
 lib/netdev-linux.c       | 128 ++++++++++++++++++++++++++++++++++++++++++++---
 lib/netdev-provider.h    |   4 ++
 lib/netdev-tc-offloads.c |  82 +++++++++++++++++++++++-------
 lib/netdev-vport.c       |   3 +-
 lib/netdev.c             |  10 ++++
 lib/netdev.h             |   1 +
 lib/rtnetlink.c          |  43 ++++++++++++++++
 lib/rtnetlink.h          |   4 ++
 lib/tc.c                 |  60 +++++++++++++++-------
 lib/tc.h                 |  12 ++---
 13 files changed, 305 insertions(+), 51 deletions(-)
 mode change 100644 => 100755 lib/rtnetlink.h


More information about the dev mailing list