xref: /openbmc/linux/samples/bpf/tcp_bpf.readme (revision d78e3f06)
1aaf151b9SLawrence BrakmoThis file describes how to run the tcp_*_kern.o tcp_bpf (or socket_ops)
2aaf151b9SLawrence Brakmoprograms. These programs attach to a cgroupv2. The following commands create
3aaf151b9SLawrence Brakmoa cgroupv2 and attach a bash shell to the group.
4aaf151b9SLawrence Brakmo
5aaf151b9SLawrence Brakmo  mkdir -p /tmp/cgroupv2
6aaf151b9SLawrence Brakmo  mount -t cgroup2 none /tmp/cgroupv2
7aaf151b9SLawrence Brakmo  mkdir -p /tmp/cgroupv2/foo
8aaf151b9SLawrence Brakmo  bash
9aaf151b9SLawrence Brakmo  echo $$ >> /tmp/cgroupv2/foo/cgroup.procs
10aaf151b9SLawrence Brakmo
11ea9b6362SJakub KicinskiAnything that runs under this shell belongs to the foo cgroupv2. To load
12aaf151b9SLawrence Brakmo(attach) one of the tcp_*_kern.o programs:
13aaf151b9SLawrence Brakmo
14ea9b6362SJakub Kicinski  bpftool prog load tcp_basertt_kern.o /sys/fs/bpf/tcp_prog
15ea9b6362SJakub Kicinski  bpftool cgroup attach /tmp/cgroupv2/foo sock_ops pinned /sys/fs/bpf/tcp_prog
16ea9b6362SJakub Kicinski  bpftool prog tracelog
17aaf151b9SLawrence Brakmo
18ea9b6362SJakub Kicinski"bpftool prog tracelog" will continue to run printing the BPF log buffer.
19ea9b6362SJakub KicinskiThe tcp_*_kern.o programs use special print functions to print logging
20ea9b6362SJakub Kicinskiinformation (if enabled by the ifdef).
21aaf151b9SLawrence Brakmo
22aaf151b9SLawrence BrakmoIf using netperf/netserver to create traffic, you need to run them under the
23aaf151b9SLawrence Brakmocgroupv2 to which the BPF programs are attached (i.e. under bash shell
24aaf151b9SLawrence Brakmoattached to the cgroupv2).
25aaf151b9SLawrence Brakmo
26aaf151b9SLawrence BrakmoTo remove (unattach) a socket_ops BPF program from a cgroupv2:
27aaf151b9SLawrence Brakmo
28d78e3f06SStanislav Fomichev  bpftool cgroup detach /tmp/cgroupv2/foo sock_ops pinned /sys/fs/bpf/tcp_prog
29