- eBPF là một VM nhỏ nằm trong kernel.
- Nếu bạn vẫn chỉ dùng nó cho bpftrace one-liner, bạn đang bỏ phí 90% sức mạnh: pluggable CPU scheduler, zero-proxy load balancer 10M+ pps, xem TLS plaintext không cần MITM, kernel security enforcement, compute trên SSD, và cả rootkit.
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án | Cách cũ | Cách eBPF |
|---|---|---|
| Đổi CPU scheduler | Patch + rebuild kernel | sched_ext, hot-reload từ userspace |
| L4 load balancing | IPVS / HAProxy / nginx | XDP (Katran) — trước cả skb, 1–2 bậc pps cao hơn |
| Xem TLS traffic | MITM proxy + cài cert | uprobe libssl, ~0.2µs overhead, không break pinning |
| Kernel security policy | SELinux / AppArmor | BPF LSM + Tetragon, enforcement động, K8s-aware |
| Near-data compute | FPGA / custom firmware | eBPF 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,
udpgrmcho 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.


