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
Constant blinding - PowerPC644.9b7b7013cac55

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.90515e5999a46
Hardware offload for tc's cls_bpf4.9332ae8e2f6ec
Verifier exposure and internal hooks4.913a27dfc6697
BPF attached to cgroups for socket filtering4.10
Lightweight tunnel encapsulation4.10
eBPF support for xt_bpf module (iptables)4.10

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
Pre-alloc maps memory4.66c90598174322
cgroup array4.84ed8ec521ed5
LRU hash4.10
LRU per-CPU hash4.10
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.986994156c736
QLogic (Cavium) qed* drivers4.10
virtio_net driver?
Intel i40e driver?

Helpers

Alphabetical order

HelperKernel versionCommit
BPF_FUNC_clone_redirect()4.23896d655f4d4
BPF_FUNC_csum_diff()4.67d672345ed29
BPF_FUNC_csum_update()4.936bbef52c7eb
BPF_FUNC_current_task_under_cgroup()4.960d20f9195b2
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_numa_node_id()4.10
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.97a4b28c6cc9f
BPF_FUNC_skb_change_head()4.10
BPF_FUNC_skb_change_proto()4.86578171a7ff0
BPF_FUNC_skb_change_tail()4.95293efe62df8
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.936bbef52c7eb
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
BPF_FUNC_xdp_adjust_head()4.10