xref: /aosp_15_r20/external/bpftool/docs/bpftool-net.rst (revision 858ea5e570667251cdc31d3fe7b846b591105938)
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