]> git.proxmox.com Git - mirror_ovs.git/commit - lib/tc.c
lib/tc: add ingress ratelimiting support for tc-offload
authorPieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Fri, 1 Feb 2019 10:19:32 +0000 (10:19 +0000)
committerSimon Horman <simon.horman@netronome.com>
Mon, 4 Mar 2019 16:22:34 +0000 (17:22 +0100)
commite7f6ba220e10c0b560da097185514b6e33e2dc71
treeeef2d563d14ddae282d8b4eeca2a66be19a72e8b
parent6455316bd23ba34132bd548b00605eb16568a13b
lib/tc: add ingress ratelimiting support for tc-offload

Firstly this patch introduces the notion of reserved priority, as the
filter implementing ingress policing would require the highest priority.
Secondly it allows setting rate limiters while tc-offloads has been
enabled. Lastly it installs a matchall filter that matches all traffic
and then applies a police action, when configuring an ingress rate
limiter.

An example of what to expect:

OvS CLI:
ovs-vsctl set interface <netdev_name> ingress_policing_rate=5000
ovs-vsctl set interface <netdev_name> ingress_policing_burst=100

Resulting TC filter:
filter protocol ip pref 1 matchall chain 0
filter protocol ip pref 1 matchall chain 0 handle 0x1
  not_in_hw
action order 1:  police 0x1 rate 5Mbit burst 125Kb mtu 64Kb
action drop/continue overhead 0b
        ref 1 bind 1 installed 3 sec used 3 sec
        Action statistics:
        Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
        backlog 0b 0p requeues 0

MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to
10.0.0.200 () port 0 AF_INET : demo
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec

131072  16384  16384    60.13       4.49

ovs-vsctl list interface <netdev_name>
_uuid               : 2ca774e8-8b95-430f-a2c2-f8f742613ab1
admin_state         : up
...
ingress_policing_burst: 100
ingress_policing_rate: 5000
...
type                : ""

Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
include/linux/pkt_cls.h
lib/netdev-linux.c
lib/netdev-tc-offloads.c
lib/tc.c
lib/tc.h