Commit Graph

24 Commits

Author SHA1 Message Date
Jesper Dangaard Brouer
91432fe471 tc-policy: Update README with info on inspecting loaded BPF-progs
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 15:30:17 +01:00
Jesper Dangaard Brouer
71d1479d1d tc-policy: Add more advanced bpftrace script
Digging into the return value of netdev_pick_tx().
Want to be able to debug the case where a socket
selects another queue_id.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 14:49:47 +01:00
Jesper Dangaard Brouer
ba2c114db0 tc-policy: Take into account locally generated traffic
The BPF-prog "not_txq_zero" also needed to take into account
that skb->queue_mapping usually isn't set for locally
generated traffic.

I worry that sockets can set another queue id that could
override our (BPF choice) in netdev_pick_tx().
See sk_tx_queue_set() and sk_tx_queue_get().

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 13:28:20 +01:00
Jesper Dangaard Brouer
a3af1bb99c tc-policy: Implement new BPF section that disallow using TXQ zero
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 13:11:31 +01:00
Jesper Dangaard Brouer
741205e13c tc-policy: Mention XPS need to be disabled
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 12:40:14 +01:00
Jesper Dangaard Brouer
f33789e4c6 tc-policy: rename xps_setup.sh to xps_setup_ash.sh
This version of the XPS script have been modified to
work with the shell ash.  As bash was not avail on
the Yocto target host.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 12:33:49 +01:00
Jesper Dangaard Brouer
cf5ecd6999 tc-policy: Adjust README for GitHub rendering
The bpftrace oneliner was getting rendered wrong in GitHub html view.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 12:16:19 +01:00
Jesper Dangaard Brouer
e72d309789 tc-policy: Monitor TXQ usage with bpftrace script
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-02-01 11:56:32 +01:00
Jesper Dangaard Brouer
520d2e6109 tc-policy: Add README documentation
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 21:40:18 +01:00
Jesper Dangaard Brouer
1bc9b91e3f tc-policy: Verbose info when flushing TC-BPF programs
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 18:29:03 +01:00
Jesper Dangaard Brouer
c45bdfddfa tc-policy: No need to call bpf_tc_query after bpf_tc_attach
The attach_egress.prog_id have already been provided
after calling bpf_tc_attach.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 18:25:32 +01:00
Jesper Dangaard Brouer
a00ed96ed6 tc-policy: Be more verbose, but add --quiet option
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 17:29:52 +01:00
Jesper Dangaard Brouer
78515fdd2e tc-policy: Now --unload only remove our own TC-BPF prog
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 16:43:01 +01:00
Jesper Dangaard Brouer
665f26e06b tc-policy: Make more clear that destroying hook kill all progs
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 15:55:06 +01:00
Jesper Dangaard Brouer
9fba4b12ac tc-policy: Fix issue of too many TC-BPF filter prog attached multi
This seems to be a common occuring issue with tc cmdline.
And the C-code have inherited the issue in the API.

Trying to replace a TC-BPF prog often result in appending a new prog
(as a new tc filter instance).

Be careful to set both handle and prio and the replace flag.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 15:20:38 +01:00
Jesper Dangaard Brouer
5917dbff3f tc-policy: Add teardown --unload functionality
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 14:59:51 +01:00
Jesper Dangaard Brouer
17c3aa7661 tc-policy: Attach to TC egress hook as libbpf C-code
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 13:37:14 +01:00
Jesper Dangaard Brouer
9e5ab8f4fb tc-policy: Use bpftool skeleton header generate feature
The reason for going this route is that this allow us to
create a user binary that contains the BPF object file.
Thus, we can avoid having to load the BPF file from
a specific location or having to be in same dir as file.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 12:39:31 +01:00
Jesper Dangaard Brouer
dcdceea90c tc-policy: Add C-code boilerplate tc_txq_policy.c
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 12:10:45 +01:00
Jesper Dangaard Brouer
b1efd37ed5 tc-policy: Adapt XPS script to work with ash on Yocto
The Yocto build this is intended for doesn't have /bin/bash
adapt script.

External program "getopt" not avail.

The 'sort' tool is also different, as it comes from busybox.
Adapt the cmdline options for 'sort'.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 10:11:40 +01:00
Jesper Dangaard Brouer
fb84a226b0 tc-policy: Manuel setup steps via tc cmdline
Yocto build have a problem with loading this via tc

 # tc filter replace dev eth1 egress prio 0xC000 handle 1 bpf da obj tc_txq_policy_kern.o
 Continuing without mounted eBPF fs. Too old kernel?
 mkdir (null)/globals failed: No such file or directory
 Unable to load program

It can be worked around via mounting BPF file-system manually:

 # mount -t bpf bpf /sys/fs/bpf/

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 09:17:09 +01:00
Jesper Dangaard Brouer
ae52ac2140 tc-policy: Add script for disabling XPS
Taken from xdp-cpumap-tc git repo:
 https://github.com/xdp-project/xdp-cpumap-tc/blob/master/bin/xps_setup.sh

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-31 09:12:35 +01:00
Jesper Dangaard Brouer
8fbccb90ab tc-policy: Simple approach static map to TXq 4
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-28 17:25:08 +01:00
Jesper Dangaard Brouer
ceb3fd80e7 tc-policy: Add Makefile
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2022-01-28 16:37:06 +01:00