mbox series

[iproute2-next,v2,0/4] Support qevents

Message ID cover.1593509090.git.petrm@mellanox.com
Headers show
Series Support qevents | expand

Message

Petr Machata June 30, 2020, 10:14 a.m. UTC
To allow configuring user-defined actions as a result of inner workings of
a qdisc, a concept of qevents was recently introduced to the kernel.
Qevents are attach points for TC blocks, where filters can be put that are
executed as the packet hits well-defined points in the qdisc algorithms.
The attached blocks can be shared, in a manner similar to clsact ingress
and egress blocks, arbitrary classifiers with arbitrary actions can be put
on them, etc.

For example:

# tc qdisc add dev eth0 root handle 1: \
	red limit 500K avpkt 1K qevent early_drop block 10
# tc filter add block 10 \
	matchall action mirred egress mirror dev eth1

This patch set introduces the corresponding iproute2 support. Patch #1 adds
the new netlink attribute enumerators. Patch #2 adds a set of helpers to
implement qevents, and #3 adds a generic documentation to tc.8. Patch #4
then adds two new qevents to the RED qdisc: mark and early_drop.

Changes from v1 to v2:
- Patch #3:
    - s/early/early_drop/ in the example.

Changes from RFC to v1:
- Rename "tail" qevent to "tail_drop".
- Adapt to the new 100-column standard.
- Add a selftest

Petr Machata (4):
  uapi: pkt_sched: Add two new RED attributes
  tc: Add helpers to support qevent handling
  man: tc: Describe qevents
  tc: q_red: Add support for qevents "mark" and "early_drop"

 include/uapi/linux/pkt_sched.h |   2 +
 man/man8/tc-red.8              |  18 ++-
 man/man8/tc.8                  |  19 ++++
 tc/Makefile                    |   1 +
 tc/q_red.c                     |  30 ++++-
 tc/tc_qevent.c                 | 202 +++++++++++++++++++++++++++++++++
 tc/tc_qevent.h                 |  49 ++++++++
 7 files changed, 317 insertions(+), 4 deletions(-)
 create mode 100644 tc/tc_qevent.c
 create mode 100644 tc/tc_qevent.h

Comments

David Ahern July 5, 2020, 3:46 p.m. UTC | #1
On 6/30/20 4:14 AM, Petr Machata wrote:
> To allow configuring user-defined actions as a result of inner workings of
> a qdisc, a concept of qevents was recently introduced to the kernel.
> Qevents are attach points for TC blocks, where filters can be put that are
> executed as the packet hits well-defined points in the qdisc algorithms.
> The attached blocks can be shared, in a manner similar to clsact ingress
> and egress blocks, arbitrary classifiers with arbitrary actions can be put
> on them, etc.
> 
> For example:
> 
> # tc qdisc add dev eth0 root handle 1: \
> 	red limit 500K avpkt 1K qevent early_drop block 10
> # tc filter add block 10 \
> 	matchall action mirred egress mirror dev eth1
> 
> This patch set introduces the corresponding iproute2 support. Patch #1 adds
> the new netlink attribute enumerators. Patch #2 adds a set of helpers to
> implement qevents, and #3 adds a generic documentation to tc.8. Patch #4
> then adds two new qevents to the RED qdisc: mark and early_drop.
> 

applied to iproute2-next. Thanks