eBPF ve XDP - Paket Daha Kernel'a Girmeden Ne Yapabilirsiniz?
eBPF ve XDP ile ağ paketlerinin kernel networking stack'in başında nasıl işlendiğine bakıyoruz.
Hakan E. · · Akademi

XDP, bir Ethernet frame'i Linux networking stack boyunca uzun bir geziye çıkmadan önce onu karşılayabileceğiniz en erken noktalardan biridir. eBPF programı NIC sürücüsüne çok yakın bir yerde çalışır ve paket için XDP_PASS, XDP_DROP, XDP_TX veya yönlendirme benzeri kararlar verebilir. Bu yüzden yüksek paket hızlarında klasik firewall zincirlerinden çok daha erken müdahale edebilirsiniz. Paket daha çayını söylemeden kapıdan çevrilebilir.
Asıl güç eBPF map'leri, verifier ve helper fonksiyonlarıyla gelir. Program kernel içinde çalışır ama verifier sayesinde keyfi pointer aritmetiği ve sonsuz döngü gibi kernel'ı üzebilecek davranışlar sınırlandırılır. Map'ler kullanıcı alanı ile kernel alanı arasında state paylaşmayı sağlar. Böylece sayaç, blacklist, flow tablosu veya load-balancing kararı gibi bilgiler program yeniden yüklenmeden güncellenebilir.
İleri kullanımda mesele yalnızca paket düşürmek değildir. XDP ile DDoS filtreleme, telemetry, L4 load balancing ve özel forwarding mantıkları kurulabilir. Fakat her şeyi eBPF'ye koymak da iyi mimari değildir. Bir yerde üç satır iptables kuralı yetiyorsa 900 satır verifier hatası üretmek yalnızca karakter gelişimidir.