BPF Features by Linux Kernel Version

eBPF support

Kernel versionCommit
3.15bd4cf0ed331a

JIT compiling

Feature / ArchitectureKernel versionCommit
x86_643.16622582786c9e
ARM643.18e54bcde3d69d
s3904.1054623105728
Constant blinding for JIT machines4.74f3446bb809f
PowerPC644.8156d0e290e96

Main features

FeatureKernel versionCommit
AF_PACKET (libpcap/tcpdump, cls_bpf classifier, netfilter's xt_bpf, team driver's load-balancing modeā€¦)3.15bd4cf0ed331a
Kernel helpers3.15bd4cf0ed331a
bpf() syscall3.1899c55f7d47c0
Tables (a.k.a. Maps; details below)3.1899c55f7d47c0
BPF attached to sockets3.1989aa075832b0
BPF attached to kprobes4.12541517c32be
cls_bpf / act_bpf for tc4.1e2e9b6541dd4
Tail calls4.204fd61ab36ec
Non-root programs on sockets4.41be7f75d1668
Persistent maps and programs (virtual FS)4.4b2197755b263
tc's direct_action (da) mode4.4045efa82ff56
tc's clsact qdisc4.51f211a1b929c
BPF attached to tracepoints4.798b5c2c65c29
Direct packet access4.7969bf05eb3ce
XDP (see below)4.86a773a15a1e8
BPF attached to perf events4.9

Tables (a.k.a. Maps)

Table typeKernel versionCommit
Hash3.190f8e4bd8a1fc
Array3.1928fbcfa08d8e
Tail call (PROG_ARRAY)4.204fd61ab36ec
Perf events4.3ea317b267e9d
Per-CPU hash4.6824bd0ce6c7c
Per-CPU array4.6a10423b87a7e
Stack trace4.6d5a3b1f69186
cgroup array4.84ed8ec521ed5
Text stringTo be done?
Variable-length mapsTo be done?

XDP

Feature / DriverKernel versionCommit
XDP core architecture4.86a773a15a1e8
Action: drop4.86a773a15a1e8
Action: pass on to stack4.86a773a15a1e8
Action: direct forwarding (on same port)4.86ce96ca348a9
Direct packet data write4.84acf6c0b84c9
Mellanox mlx4 driver4.847a38e155037
Mellanox mlx5 driver4.9
e1000 driver?

Helpers

Alphabetical order

HelperKernel versionCommit
BPF_FUNC_clone_redirect()4.23896d655f4d4
BPF_FUNC_csum_diff()4.67d672345ed29
BPF_FUNC_csum_update()4.9
BPF_FUNC_current_task_under_cgroup()4.9
BPF_FUNC_get_cgroup_classid()4.38d20aabe1c76
BPF_FUNC_get_current_comm()4.2ffeedafbf023
BPF_FUNC_get_current_pid_tgid()4.2ffeedafbf023
BPF_FUNC_get_current_task()4.8606274c5abd8
BPF_FUNC_get_current_uid_gid()4.2ffeedafbf023
BPF_FUNC_get_hash_recalc()4.813c5c240f789
BPF_FUNC_get_prandom_u32()4.103e69b508b6f
BPF_FUNC_get_route_realm()4.4c46646d0484f
BPF_FUNC_get_smp_processor_id()4.1c04167ce2ca0
BPF_FUNC_get_stackid()4.6d5a3b1f69186
BPF_FUNC_ktime_get_ns()4.1d9847d310ab4
BPF_FUNC_l3_csum_replace()4.191bc4822c3d6
BPF_FUNC_l4_csum_replace()4.191bc4822c3d6
BPF_FUNC_map_delete_elem()3.19d0003ec01c66
BPF_FUNC_map_lookup_elem()3.19d0003ec01c66
BPF_FUNC_map_update_elem()3.19d0003ec01c66
BPF_FUNC_perf_event_output()4.4a43eec304259
BPF_FUNC_perf_event_read()4.335578d798400
BPF_FUNC_probe_read()4.12541517c32be
BPF_FUNC_probe_write_user()4.896ae52279594
BPF_FUNC_redirect()4.427b29f63058d
BPF_FUNC_set_hash_invalid()4.9
BPF_FUNC_skb_change_proto()4.86578171a7ff0
BPF_FUNC_skb_change_tail()4.9
BPF_FUNC_skb_change_type()4.8d2485c4242a82
BPF_FUNC_skb_get_tunnel_key()4.3d3aa45ce6b94
BPF_FUNC_skb_get_tunnel_opt()4.614ca0751c96f
BPF_FUNC_skb_load_bytes()4.505c74e5e53f6
BPF_FUNC_skb_pull_data()4.9
BPF_FUNC_skb_set_tunnel_key()4.3d3aa45ce6b94
BPF_FUNC_skb_set_tunnel_opt()4.614ca0751c96f
BPF_FUNC_skb_store_bytes()4.191bc4822c3d6
BPF_FUNC_skb_under_cgroup()4.84a482f34afcc
BPF_FUNC_skb_vlan_pop()4.34e10df9a60d9
BPF_FUNC_skb_vlan_push()4.34e10df9a60d9
BPF_FUNC_tail_call()4.204fd61ab36ec
BPF_FUNC_trace_printk()4.19c959c863f82