Blog
Thoughts on engineering, design, and building great products.
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.
Program Type và Hook: Gắn Vào Đâu, Thấy Được Gì
Một chương trình eBPF không chạy lơ lửng — nó gắn vào một hook trong nhân, và loại hook đó quyết định ba thứ: chương trình chạy lúc nào, nhận context gì, và được gọi helper nào. Bài này liệt kê các program type nhân hỗ trợ, rồi gắn một tracepoint vào syscall openat để thấy nó chạy thật trên mỗi lần mở file — tương phản với XDP nhận gói tin ở bài trước, để thấy vì sao cùng là eBPF mà mỗi loại thấy một thế giới khác nhau.