]> git.proxmox.com Git - mirror_iproute2.git/commit
tc: Add support for the sample tc action
authorYotam Gigi <yotamg@mellanox.com>
Sun, 5 Feb 2017 07:58:52 +0000 (09:58 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Mon, 6 Feb 2017 22:24:52 +0000 (14:24 -0800)
commit0b1abd84fba51c2aa1d9f070e88c79aee5c1e802
treea6cb0b9aca5433a10ba006849b23bef2346c5c2f
parent818a10a77fae8c1828ebdb1257aa2515ed3bdeb5
tc: Add support for the sample tc action

The sample tc action allows sampling packets matching a classifier. It
peeks randomly packets, and samples them using the psample netlink
channel. The user can specify the psample group, which the packet will be
sampled to, the sampling rate and the packet truncation (to save
kernel-user traffic).

The sampled packets contain informative metadata, for example, the input
interface and the original packet length.

The action syntax:
tc filter add [...] \
action sample rate <RATE> group <GROUP> [trunc <SIZE>]
[...]

Where:
  RATE := The sampling rate which is the ratio of packets observed at the
  data source to the samples generated
  GROUP := the psample module sampling group
  SIZE := optional truncation size

An example for a common usecase of the sample tc action: to sample ingress
traffic from interface eth1, one may use the commands:

tc qdisc add dev eth1 handle ffff: ingress

tc filter add dev eth1 parent ffff: \
       matchall action sample rate 12 group 4

Where the first command adds an ingress qdisc and the second starts
sampling randomly with an average of one sampled packet per 12 packets
on dev eth1 to psample group 4.

Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Yotam Gigi <yotamg@mellanox.com>
bash-completion/tc
include/linux/tc_act/tc_sample.h [new file with mode: 0644]
tc/Makefile
tc/m_sample.c [new file with mode: 0644]