TL;DR

eBPF không phải "tcpdump phiên bản xịn". Nó là một máy ảo an toàn chạy ngay trong kernel Linux (và giờ là Windows). Ai đó đã dùng nó để thay thế CPU scheduler của Linux, build load balancer L4 hàng chục triệu pps, đọc lưu lượng TLS đã giải mã mà không cần MITM, enforce security policy runtime, offload compute xuống SSD, và viết rootkit gần như vô hình với công cụ phát hiện kernel-module cổ điển. Nếu bạn vẫn chỉ dùng nó để chạy bpftrace one-liner, bạn đang bỏ qua khoảng 90% sức mạnh.

What's new

Ba dấu mốc khiến 2025–2026 là thời điểm eBPF bước ra khỏi góc "observability tool":

  • sched_ext được merge vào mainline Linux kernel từ phiên bản 6.12 — lần đầu tiên bạn có thể viết CPU scheduler bằng BPF và nạp nóng từ userspace, không cần build lại kernel.
  • BPF LSM (Linux Security Module qua BPF) có sẵn từ kernel 5.7, và đến giờ được các runtime security platform như Tetragon khai thác để enforce (không chỉ detect) từ không gian kernel.
  • eBPF-for-Windows của Microsoft hỗ trợ Windows 11 và Server 2022 trở lên. Chưa production-signed, nhưng rõ ràng "linux-only era" đã kết thúc — eBPF đang thành chuẩn universal cho "safe code in kernel".

Why it matters

Trước eBPF, muốn đổi behavior kernel bạn có hai lựa chọn: patch + rebuild + reboot, hoặc nạp kernel module (rủi ro cao, Secure Boot chặn, mất tín hiệu lockdown). eBPF đưa ra lối thứ ba: chương trình được verifier kiểm tra tĩnh để chắc chắn terminate và không truy cập bộ nhớ sai, JIT compile xuống native code, nạp nóng từ userspace, fallback an toàn khi fail. Đây là lần đầu tiên một platform cho phép bạn "lập trình kernel" với risk profile gần bằng userspace code.

Technical facts — 7 bề mặt đang bị khai thác

1. sched_ext — viết CPU scheduler bằng BPF

Thay thế CFS/EEVDF bằng logic của bạn. Nếu BPF scheduler stall hoặc bạn bấm SysRq-S, kernel tự revert về default — an toàn mặc định. Meta đang mass-deploy scx_layered (hybrid BPF + Rust userspace) cho workload web. scx_rusty tối ưu cho gaming và tác vụ latency-sensitive. Ubuntu, CachyOS, openSUSE đã ship tooling sẵn.

2. XDP + Katran — zero-hop L4 load balancer

Katran của Meta chạy BPF trên XDP — packet được xử lý trước cả khi kernel alloc skb. Hiệu năng scale tuyến tính theo số NIC RX queue, design cho datacenter với hàng triệu pps mỗi máy. Cloudflare cũng chạy BPF khắp nơi trong kiến trúc của họ — họ có bài "BPF eats the world" nói thẳng chuyện đó.

3. SO_REUSEPORT + BPF — chọn socket nào nhận packet

Với hook sk_reuseport và flag SO_ATTACH_REUSEPORT_EBPF, bạn override default round-robin để làm consistent-hashing load balancing không cần proxy. Cloudflare open-source công cụ udpgrm dựa trên kỹ thuật này để zero-downtime restart UDP service bằng khái niệm "generations" của socket group.

4. uprobes trên SSL_read/SSL_write — xem TLS plaintext không MITM

Attach uprobe vào SSL_read, SSL_write (OpenSSL) hoặc gnutls_record_send (GnuTLS) ngay trong process. Bạn đọc được plaintext trước khi mã hoá / sau khi giải mã, không cần cài cert, không cần proxy, không break pinned cert. Overhead mỗi probe khoảng 0.2µs. Công cụ: Pixie, Kubeshark, snoopy, spliff.

5. BPF LSM — kernel security policy là một chương trình

LSM hook nhận dữ liệu thật của kernel. Tetragon (Cilium/Isovalent) dùng bpf_send_signal() để kill process ngay trong kernel khi matching một TracingPolicy — đây là enforcement thực sự, không phải "alert rồi chạy đuổi theo". Falco thiên về detection, Tetragon thiên về enforcement. SELinux chỉ ngồi nhìn.

6. Computational storage — eBPF chạy trên chính cái SSD

Delilah (IT-University of Copenhagen) là prototype công khai đầu tiên của một Computational Storage Device offload eBPF. Proposal NVMe đã định nghĩa "downloadable programs" bằng eBPF. Ý tưởng: đẩy filter/search/agg xuống gần byte, chỉ trả kết quả cuối về host — tiết kiệm băng thông PCIe và memory bus.

7. eBPF rootkits — defensive tech cũng là offensive tech

ebpfkit, TripleCross, bad-bpf, boopkit là PoC rootkit khai thác eBPF: syscall hijack, hide process, C2 traffic, library injection, persistence qua cron.d/sudoers.d. Điểm đáng sợ: chúng không nạp kernel module nên LKM scanner truyền thống không thấy, và bypass Secure Boot vì không cần module out-of-tree.

Comparison — eBPF vs cách cũ

Bài toánCách cũCách eBPF
Đổi CPU schedulerPatch + rebuild kernelsched_ext, hot-reload từ userspace
L4 load balancingIPVS / HAProxy / nginxXDP (Katran) — trước cả skb, 1–2 bậc pps cao hơn
Xem TLS trafficMITM proxy + cài certuprobe libssl, ~0.2µs overhead, không break pinning
Kernel security policySELinux / AppArmorBPF LSM + Tetragon, enforcement động, K8s-aware
Near-data computeFPGA / custom firmwareeBPF trên NVMe SSD (Delilah)

Use cases — ai đang dùng

  • Meta: Katran L4LB và scx_layered scheduler cho web workloads.
  • Cloudflare: BPF khắp edge, udpgrm cho zero-downtime UDP restart.
  • Isovalent / Cilium (Cisco mua năm 2024): Tetragon + BPF LSM cho Kubernetes runtime security.
  • Pixie / Kubeshark: observability không cần instrument code, thấy được cả TLS RPC.
  • Gaming / HFT / AI training: custom sched_ext schedulers (scx_rusty, scx_lavd) khi latency tail quan trọng hơn throughput.

Limitations & caveats

  • sched_ext cho workload cực kỳ perf-critical vẫn có thể thua scheduler in-kernel chỉ-BPF vì offload một phần quyết định lên userspace.
  • eBPF-for-Windows chưa production-signed — chỉ chạy được khi có kernel debugger hoặc test-signing mode, nghĩa là dev-only.
  • Rootkit eBPF khó phát hiện bằng tool LKM cổ điển — đẩy nhu cầu về memory-forensics và VMI-based detection.
  • BPF LSM cần kernel ≥ 5.7, sched_ext cần ≥ 6.12 — distro cũ hết cửa.
  • Offensive và defensive dùng cùng một tech — trust chain cho BPF program trở thành vấn đề supply-chain thực sự.

What's next

eBPF đang nhanh chóng trở thành substrate universal "safe code in kernel": Linux 6.12 đóng dấu sched_ext, Windows 11/Server 2022 có ebpf-for-windows, NVMe spec định nghĩa downloadable eBPF programs trên SSD, và vendor NIC/DPU đang đẩy code xuống phần cứng cùng model. Nếu bạn là platform/infra engineer và vẫn nghĩ eBPF là "tcpdump thông minh" — đây là lúc đổi mental model. Repo awesome-ebpf là điểm khởi đầu tốt để map ra toàn bộ hệ sinh thái.

Nguồn: kernel.org sched-ext, sched-ext/scx, Meta Engineering — Katran, Cloudflare — BPF eats the world, Pixie — eBPF OpenSSL tracing, Cilium Tetragon, Microsoft eBPF for Windows, Delilah (ACM DaMoN 2023), TripleCross.