Cloudflare eBPF Serisi 2: Linux Ağ Yığınındaki Boşluklar Nasıl Dolduruldu
Cloudflare'in eBPF serisinin 2. bölümü: L4Drop, xdpcap, Tubular ve cbpfc ile Linux ağ API'lerindeki kritik boşluklar nasıl dolduruldu.
Cloudflare, sekiz yıllık eBPF yolculuğunu anlattığı serinin ikinci bölümünde, standart Linux ağ API'lerinin ölçek, görünürlük ve güvenilirlik açısından yetersiz kaldığı somut noktaları ve bu boşlukları kapatmak için geliştirdiği araçları paylaşıyor. Şirket, 3.8 Tbps'lik rekor bir DDoS saldırısını eBPF tabanlı sistemlerle otomatik olarak durdurdu.
L4Drop, XDP kancasını kullanarak paketleri NIC sürücü seviyesinde, çekirdek ağ yığınına hiç dokunmadan düşürüyor ve tek çekirdekte saniyede 10 milyondan fazla paketi yalnızca %10 CPU yüküyle eleyebiliyor. Bu düşük seviyeli işlem görünürlüğü kaybettirdiği için ekip, tcpdump uyumlu filtreleme sunan xdpcap aracını geliştirdi. Ayrıca, standart bind() API'sinin yetersiz kaldığı milyonlarca IP ve 65.535 port senaryosu için çekirdeğe sk_lookup kancasını katkıda bulunup Tubular'ı inşa ettiler; bu sayede servisler yeniden başlatılmadan dinamik olarak yönlendirilebiliyor.
cbpfc derleyicisi, karmaşık p0f imzaları ve çapraz başlık karşılaştırmaları gibi eBPF map'leriyle ifade edilemeyen kuralları klasik BPF sözdiziminden eBPF bytecode'a çeviriyor. flowtrackd ise asimetrik yönlendirmede iptables conntrack'in çalışmadığı senaryolar için tek yönlü TCP akış takibini donanım bağımsız şekilde gerçekleştiriyor.
Bu mühendislik detayları, büyük ölçekte ağ altyapısı işleten ekipler için eBPF'in sadece bir performans aracı değil, çekirdek seviyesinde programlanabilir bir platform olarak nasıl kullanılabileceğine dair somut bir referans sunuyor.
Bu sentez, kaynağından yapay zeka tarafından üretildi; insan editör ya da elle onay adımı yoktur. Nasıl çalışıyoruz