1*858ea5e5SAndroid Build Coastguard Worker.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*858ea5e5SAndroid Build Coastguard Worker 3*858ea5e5SAndroid Build Coastguard Worker================ 4*858ea5e5SAndroid Build Coastguard Workerbpftool-net 5*858ea5e5SAndroid Build Coastguard Worker================ 6*858ea5e5SAndroid Build Coastguard Worker------------------------------------------------------------------------------- 7*858ea5e5SAndroid Build Coastguard Workertool for inspection of networking related bpf prog attachments 8*858ea5e5SAndroid Build Coastguard Worker------------------------------------------------------------------------------- 9*858ea5e5SAndroid Build Coastguard Worker 10*858ea5e5SAndroid Build Coastguard Worker:Manual section: 8 11*858ea5e5SAndroid Build Coastguard Worker 12*858ea5e5SAndroid Build Coastguard Worker.. include:: substitutions.rst 13*858ea5e5SAndroid Build Coastguard Worker 14*858ea5e5SAndroid Build Coastguard WorkerSYNOPSIS 15*858ea5e5SAndroid Build Coastguard Worker======== 16*858ea5e5SAndroid Build Coastguard Worker 17*858ea5e5SAndroid Build Coastguard Worker **bpftool** [*OPTIONS*] **net** *COMMAND* 18*858ea5e5SAndroid Build Coastguard Worker 19*858ea5e5SAndroid Build Coastguard Worker *OPTIONS* := { |COMMON_OPTIONS| } 20*858ea5e5SAndroid Build Coastguard Worker 21*858ea5e5SAndroid Build Coastguard Worker *COMMANDS* := 22*858ea5e5SAndroid Build Coastguard Worker { **show** | **list** | **attach** | **detach** | **help** } 23*858ea5e5SAndroid Build Coastguard Worker 24*858ea5e5SAndroid Build Coastguard WorkerNET COMMANDS 25*858ea5e5SAndroid Build Coastguard Worker============ 26*858ea5e5SAndroid Build Coastguard Worker 27*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **net** { **show** | **list** } [ **dev** *NAME* ] 28*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **net attach** *ATTACH_TYPE* *PROG* **dev** *NAME* [ **overwrite** ] 29*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **net detach** *ATTACH_TYPE* **dev** *NAME* 30*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **net help** 31*858ea5e5SAndroid Build Coastguard Worker| 32*858ea5e5SAndroid Build Coastguard Worker| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* } 33*858ea5e5SAndroid Build Coastguard Worker| *ATTACH_TYPE* := { **xdp** | **xdpgeneric** | **xdpdrv** | **xdpoffload** } 34*858ea5e5SAndroid Build Coastguard Worker 35*858ea5e5SAndroid Build Coastguard WorkerDESCRIPTION 36*858ea5e5SAndroid Build Coastguard Worker=========== 37*858ea5e5SAndroid Build Coastguard Worker **bpftool net { show | list }** [ **dev** *NAME* ] 38*858ea5e5SAndroid Build Coastguard Worker List bpf program attachments in the kernel networking subsystem. 39*858ea5e5SAndroid Build Coastguard Worker 40*858ea5e5SAndroid Build Coastguard Worker Currently, device driver xdp attachments, tcx, netkit and old-style tc 41*858ea5e5SAndroid Build Coastguard Worker classifier/action attachments, flow_dissector as well as netfilter 42*858ea5e5SAndroid Build Coastguard Worker attachments are implemented, i.e., for 43*858ea5e5SAndroid Build Coastguard Worker program types **BPF_PROG_TYPE_XDP**, **BPF_PROG_TYPE_SCHED_CLS**, 44*858ea5e5SAndroid Build Coastguard Worker **BPF_PROG_TYPE_SCHED_ACT**, **BPF_PROG_TYPE_FLOW_DISSECTOR**, 45*858ea5e5SAndroid Build Coastguard Worker **BPF_PROG_TYPE_NETFILTER**. 46*858ea5e5SAndroid Build Coastguard Worker 47*858ea5e5SAndroid Build Coastguard Worker For programs attached to a particular cgroup, e.g., 48*858ea5e5SAndroid Build Coastguard Worker **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, 49*858ea5e5SAndroid Build Coastguard Worker **BPF_PROG_TYPE_SOCK_OPS** and **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, 50*858ea5e5SAndroid Build Coastguard Worker users can use **bpftool cgroup** to dump cgroup attachments. 51*858ea5e5SAndroid Build Coastguard Worker For sk_{filter, skb, msg, reuseport} and lwt/seg6 52*858ea5e5SAndroid Build Coastguard Worker bpf programs, users should consult other tools, e.g., iproute2. 53*858ea5e5SAndroid Build Coastguard Worker 54*858ea5e5SAndroid Build Coastguard Worker The current output will start with all xdp program attachments, followed by 55*858ea5e5SAndroid Build Coastguard Worker all tcx, netkit, then tc class/qdisc bpf program attachments, then flow_dissector 56*858ea5e5SAndroid Build Coastguard Worker and finally netfilter programs. Both xdp programs and tcx/netkit/tc programs are 57*858ea5e5SAndroid Build Coastguard Worker ordered based on ifindex number. If multiple bpf programs attached 58*858ea5e5SAndroid Build Coastguard Worker to the same networking device through **tc**, the order will be first 59*858ea5e5SAndroid Build Coastguard Worker all bpf programs attached to tcx, netkit, then tc classes, then all bpf programs 60*858ea5e5SAndroid Build Coastguard Worker attached to non clsact qdiscs, and finally all bpf programs attached 61*858ea5e5SAndroid Build Coastguard Worker to root and clsact qdisc. 62*858ea5e5SAndroid Build Coastguard Worker 63*858ea5e5SAndroid Build Coastguard Worker **bpftool** **net attach** *ATTACH_TYPE* *PROG* **dev** *NAME* [ **overwrite** ] 64*858ea5e5SAndroid Build Coastguard Worker Attach bpf program *PROG* to network interface *NAME* with 65*858ea5e5SAndroid Build Coastguard Worker type specified by *ATTACH_TYPE*. Previously attached bpf program 66*858ea5e5SAndroid Build Coastguard Worker can be replaced by the command used with **overwrite** option. 67*858ea5e5SAndroid Build Coastguard Worker Currently, only XDP-related modes are supported for *ATTACH_TYPE*. 68*858ea5e5SAndroid Build Coastguard Worker 69*858ea5e5SAndroid Build Coastguard Worker *ATTACH_TYPE* can be of: 70*858ea5e5SAndroid Build Coastguard Worker **xdp** - try native XDP and fallback to generic XDP if NIC driver does not support it; 71*858ea5e5SAndroid Build Coastguard Worker **xdpgeneric** - Generic XDP. runs at generic XDP hook when packet already enters receive path as skb; 72*858ea5e5SAndroid Build Coastguard Worker **xdpdrv** - Native XDP. runs earliest point in driver's receive path; 73*858ea5e5SAndroid Build Coastguard Worker **xdpoffload** - Offload XDP. runs directly on NIC on each packet reception; 74*858ea5e5SAndroid Build Coastguard Worker 75*858ea5e5SAndroid Build Coastguard Worker **bpftool** **net detach** *ATTACH_TYPE* **dev** *NAME* 76*858ea5e5SAndroid Build Coastguard Worker Detach bpf program attached to network interface *NAME* with 77*858ea5e5SAndroid Build Coastguard Worker type specified by *ATTACH_TYPE*. To detach bpf program, same 78*858ea5e5SAndroid Build Coastguard Worker *ATTACH_TYPE* previously used for attach must be specified. 79*858ea5e5SAndroid Build Coastguard Worker Currently, only XDP-related modes are supported for *ATTACH_TYPE*. 80*858ea5e5SAndroid Build Coastguard Worker 81*858ea5e5SAndroid Build Coastguard Worker **bpftool net help** 82*858ea5e5SAndroid Build Coastguard Worker Print short help message. 83*858ea5e5SAndroid Build Coastguard Worker 84*858ea5e5SAndroid Build Coastguard WorkerOPTIONS 85*858ea5e5SAndroid Build Coastguard Worker======= 86*858ea5e5SAndroid Build Coastguard Worker .. include:: common_options.rst 87*858ea5e5SAndroid Build Coastguard Worker 88*858ea5e5SAndroid Build Coastguard WorkerEXAMPLES 89*858ea5e5SAndroid Build Coastguard Worker======== 90*858ea5e5SAndroid Build Coastguard Worker 91*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net** 92*858ea5e5SAndroid Build Coastguard Worker 93*858ea5e5SAndroid Build Coastguard Worker:: 94*858ea5e5SAndroid Build Coastguard Worker 95*858ea5e5SAndroid Build Coastguard Worker xdp: 96*858ea5e5SAndroid Build Coastguard Worker eth0(2) driver id 198 97*858ea5e5SAndroid Build Coastguard Worker 98*858ea5e5SAndroid Build Coastguard Worker tc: 99*858ea5e5SAndroid Build Coastguard Worker eth0(2) htb name prefix_matcher.o:[cls_prefix_matcher_htb] id 111727 act [] 100*858ea5e5SAndroid Build Coastguard Worker eth0(2) clsact/ingress fbflow_icmp id 130246 act [] 101*858ea5e5SAndroid Build Coastguard Worker eth0(2) clsact/egress prefix_matcher.o:[cls_prefix_matcher_clsact] id 111726 102*858ea5e5SAndroid Build Coastguard Worker eth0(2) clsact/egress cls_fg_dscp id 108619 act [] 103*858ea5e5SAndroid Build Coastguard Worker eth0(2) clsact/egress fbflow_egress id 130245 104*858ea5e5SAndroid Build Coastguard Worker 105*858ea5e5SAndroid Build Coastguard Worker| 106*858ea5e5SAndroid Build Coastguard Worker| **# bpftool -jp net** 107*858ea5e5SAndroid Build Coastguard Worker 108*858ea5e5SAndroid Build Coastguard Worker:: 109*858ea5e5SAndroid Build Coastguard Worker 110*858ea5e5SAndroid Build Coastguard Worker [{ 111*858ea5e5SAndroid Build Coastguard Worker "xdp": [{ 112*858ea5e5SAndroid Build Coastguard Worker "devname": "eth0", 113*858ea5e5SAndroid Build Coastguard Worker "ifindex": 2, 114*858ea5e5SAndroid Build Coastguard Worker "mode": "driver", 115*858ea5e5SAndroid Build Coastguard Worker "id": 198 116*858ea5e5SAndroid Build Coastguard Worker } 117*858ea5e5SAndroid Build Coastguard Worker ], 118*858ea5e5SAndroid Build Coastguard Worker "tc": [{ 119*858ea5e5SAndroid Build Coastguard Worker "devname": "eth0", 120*858ea5e5SAndroid Build Coastguard Worker "ifindex": 2, 121*858ea5e5SAndroid Build Coastguard Worker "kind": "htb", 122*858ea5e5SAndroid Build Coastguard Worker "name": "prefix_matcher.o:[cls_prefix_matcher_htb]", 123*858ea5e5SAndroid Build Coastguard Worker "id": 111727, 124*858ea5e5SAndroid Build Coastguard Worker "act": [] 125*858ea5e5SAndroid Build Coastguard Worker },{ 126*858ea5e5SAndroid Build Coastguard Worker "devname": "eth0", 127*858ea5e5SAndroid Build Coastguard Worker "ifindex": 2, 128*858ea5e5SAndroid Build Coastguard Worker "kind": "clsact/ingress", 129*858ea5e5SAndroid Build Coastguard Worker "name": "fbflow_icmp", 130*858ea5e5SAndroid Build Coastguard Worker "id": 130246, 131*858ea5e5SAndroid Build Coastguard Worker "act": [] 132*858ea5e5SAndroid Build Coastguard Worker },{ 133*858ea5e5SAndroid Build Coastguard Worker "devname": "eth0", 134*858ea5e5SAndroid Build Coastguard Worker "ifindex": 2, 135*858ea5e5SAndroid Build Coastguard Worker "kind": "clsact/egress", 136*858ea5e5SAndroid Build Coastguard Worker "name": "prefix_matcher.o:[cls_prefix_matcher_clsact]", 137*858ea5e5SAndroid Build Coastguard Worker "id": 111726, 138*858ea5e5SAndroid Build Coastguard Worker },{ 139*858ea5e5SAndroid Build Coastguard Worker "devname": "eth0", 140*858ea5e5SAndroid Build Coastguard Worker "ifindex": 2, 141*858ea5e5SAndroid Build Coastguard Worker "kind": "clsact/egress", 142*858ea5e5SAndroid Build Coastguard Worker "name": "cls_fg_dscp", 143*858ea5e5SAndroid Build Coastguard Worker "id": 108619, 144*858ea5e5SAndroid Build Coastguard Worker "act": [] 145*858ea5e5SAndroid Build Coastguard Worker },{ 146*858ea5e5SAndroid Build Coastguard Worker "devname": "eth0", 147*858ea5e5SAndroid Build Coastguard Worker "ifindex": 2, 148*858ea5e5SAndroid Build Coastguard Worker "kind": "clsact/egress", 149*858ea5e5SAndroid Build Coastguard Worker "name": "fbflow_egress", 150*858ea5e5SAndroid Build Coastguard Worker "id": 130245, 151*858ea5e5SAndroid Build Coastguard Worker } 152*858ea5e5SAndroid Build Coastguard Worker ] 153*858ea5e5SAndroid Build Coastguard Worker } 154*858ea5e5SAndroid Build Coastguard Worker ] 155*858ea5e5SAndroid Build Coastguard Worker 156*858ea5e5SAndroid Build Coastguard Worker| 157*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net attach xdpdrv id 16 dev enp6s0np0** 158*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net** 159*858ea5e5SAndroid Build Coastguard Worker 160*858ea5e5SAndroid Build Coastguard Worker:: 161*858ea5e5SAndroid Build Coastguard Worker 162*858ea5e5SAndroid Build Coastguard Worker xdp: 163*858ea5e5SAndroid Build Coastguard Worker enp6s0np0(4) driver id 16 164*858ea5e5SAndroid Build Coastguard Worker 165*858ea5e5SAndroid Build Coastguard Worker| 166*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net attach xdpdrv id 16 dev enp6s0np0** 167*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net attach xdpdrv id 20 dev enp6s0np0 overwrite** 168*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net** 169*858ea5e5SAndroid Build Coastguard Worker 170*858ea5e5SAndroid Build Coastguard Worker:: 171*858ea5e5SAndroid Build Coastguard Worker 172*858ea5e5SAndroid Build Coastguard Worker xdp: 173*858ea5e5SAndroid Build Coastguard Worker enp6s0np0(4) driver id 20 174*858ea5e5SAndroid Build Coastguard Worker 175*858ea5e5SAndroid Build Coastguard Worker| 176*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net attach xdpdrv id 16 dev enp6s0np0** 177*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net detach xdpdrv dev enp6s0np0** 178*858ea5e5SAndroid Build Coastguard Worker| **# bpftool net** 179*858ea5e5SAndroid Build Coastguard Worker 180*858ea5e5SAndroid Build Coastguard Worker:: 181*858ea5e5SAndroid Build Coastguard Worker 182*858ea5e5SAndroid Build Coastguard Worker xdp: 183