seccomp-bpf: BPF Cổ Điển Lọc Syscall Tro...
SecurityContainer

seccomp-bpf: BPF Cổ Điển Lọc Syscall Trong Mọi Container

Trước eBPF có cBPF — BPF cổ điển, thứ tcpdump dùng. Và nó vẫn đang chạy: seccomp-bpf lọc syscall bằng cBPF, là lớp sandbox nền của container. Bài này phân biệt cBPF với eBPF, soi seccomp thật trên cụm (pause container và CSI sidecar bị giới hạn, pod privileged thì không, systemd-resolved chồng 28 filter), rồi tự viết một filter cBPF chặn mkdir bằng EPERM — tám lệnh thao tác trên struct seccomp_data, cài bằng prctl, chặn thật trong khi printf vẫn chạy.

K
KaiMay 24, 2026· 2 views
tc/sched_cls và Mổ Datapath Cilium Đang ...
NetworkingKubernetes

tc/sched_cls và Mổ Datapath Cilium Đang Chạy

Sau XDP là tc — hook nơi gói đã có sk_buff, thấy được cả ingress lẫn egress, và là nơi Cilium đặt gần như toàn bộ datapath của nó. Bài này không viết tc mẫu cho có; nó mổ thẳng 74 chương trình sched_cls đang chạy thật trên một node của cụm: chúng gắn vào đâu (card mạng, từng pod), gọi nhau qua tail call thế nào, và tra những BPF map nào để cân bằng tải một Service hay áp NetworkPolicy. Load balancing kube-proxy-less hóa ra chỉ là một lần tra map.

K
KaiMay 24, 2026· 1 views
XDP: Xử Lý Gói Ở Điểm Sớm Nhất, Viết Một...
NetworkingLinux

XDP: Xử Lý Gói Ở Điểm Sớm Nhất, Viết Một Firewall

XDP gắn chương trình eBPF vào driver mạng, chạy trên mỗi gói tới trước cả khi nhân cấp phát sk_buff — điểm sớm nhất có thể đụng vào một gói. Nó trả về một verdict: PASS, DROP, TX, REDIRECT. Bài này dựng một XDP firewall nhỏ drop ICMP trên một interface thật, gắn vào card mạng của node bằng bptool, rồi xem ping rớt từ 0% lên 100% loss trong khi SSH vẫn sống — và thấy nó nằm trước datapath tc của Cilium trên cùng interface ra sao.

K
KaiMay 24, 2026· 2 views
cilium/ebpf: Nạp eBPF Từ Go
KuberneteseBPF

cilium/ebpf: Nạp eBPF Từ Go

Bài 9 dựng execsnoop bằng C với libbpf. Bài này viết lại đúng công cụ đó nhưng nạp từ Go bằng thư viện cilium/ebpf — cách hệ sinh thái Kubernetes (Cilium, Tetragon, Falco) build ứng dụng eBPF. Phía nhân không đổi; bpf2go biên dịch nó và nhúng thẳng object vào mã Go, rồi một chương trình Go gắn tracepoint và đọc ring buffer. Kết quả là một binary tĩnh duy nhất, không phụ thuộc libbpf.so — và ta gặp đúng những cái bẫy thật khi dựng nó.

K
KaiMay 24, 2026· 3 views
libbpf và CO-RE: Tự Viết Một Công Cụ eBP...
LinuxeBPF

libbpf và CO-RE: Tự Viết Một Công Cụ eBPF

bpftrace hợp cho câu hỏi nhanh. Khi cần một công cụ thật — đóng gói, phân phối, chạy lâu dài — ta viết chương trình eBPF bằng C với libbpf và CO-RE. Bài này dựng execsnoop từ đầu: chương trình nhân đẩy sự kiện exec qua ring buffer, bpftool sinh skeleton, một loader C dùng libbpf nạp và đọc sự kiện. Build đủ chuỗi clang → skeleton → link libbpf, rồi chạy thấy từng lần exec trên cụm hiện ra với pid, ppid, tên file — kèm một cái bẫy buffer thật.

K
KaiMay 24, 2026· 2 views
uprobe, USDT và Soi Pod Từ Host
LinuxKubernetes

uprobe, USDT và Soi Pod Từ Host

Tới giờ ta gắn vào nhân. eBPF còn với được vào userspace: uprobe gắn vào hàm của một chương trình hay thư viện thường, USDT gắn vào điểm tracepoint mà ứng dụng cài sẵn. Bài này trace hàm getaddrinfo trong libc để thấy chương trình nào đang phân giải tên miền gì, rồi dùng đúng kỹ thuật đó soi một pod thật trên cụm từ phía host — thấy nó gọi syscall gì mà không cần đụng vào pod. Đây là lý do eBPF thành nền quan sát cho Kubernetes.

K
KaiMay 24, 2026· 5 views
bpftrace: Maps, Đếm và Histogram
LinuxPerformance

bpftrace: Maps, Đếm và Histogram

In từng dòng ngập màn hình khi sự kiện dày. Sức mạnh thật của bpftrace là gộp dữ liệu ngay trong nhân: đếm theo khóa, lập biểu đồ phân phối, rồi chỉ trả về bản tóm tắt nhỏ. Bài này dùng map @ của bpftrace để đếm syscall theo tiến trình, rồi dựng một histogram độ trễ vfs_read thật bằng cặp kprobe/kretprobe — thấy phân phối với cột ASCII, gồm cả cái đuôi chậm mà số trung bình sẽ giấu mất.

K
KaiMay 24, 2026· 2 views