Skip to main content

> çekirdek_düzeyinde_gözlemlenebilirlik:_ebpf_ağ_paketi_düşme_tespiti_ve_tc/xdp_filtreleri

Çekirdek Düzeyinde Gözlemlenebilirlik: eBPF Ağ Paketi Düşme Tespiti ve TC/XDP Filtreleri

Geleneksel uygulama APM ajanları düşük seviyeli ağ paketi düşmelerini ve gecikme uçurumlarını neden tespit edemez; eBPF çekirdek paket yaşam döngüsünü mikrosaniyenin altında yük ile nasıl izler?

Principal/Architect (L7+)

ÖZET VE TEKNİK CEVAP

Geleneksel kullanıcı alanı (user-space) gözlemlenebilirlik araçları (APM ajanları, OpenTelemetry, log toplayıcılar) yalnızca uygulama çalışma zamanının içini görebilir: Bir mikroserviste Linux çekirdeğindeki TCP paket tekrarları (retransmission), `conntrack` tablosu doyumları veya ağ kartı ring buffer taşmaları yüzünden 500 ms'lik gecikme patlamaları yaşandığında, APM araçları yalnızca 'Veritabanı çağrısı 500 ms sürdü' der ve asıl kök nedeni asla gösteremez. Canlı sistemde `tcpdump` çalıştırmak ise büyük CPU yükü ve güvenlik riski yaratır. eBPF (Extended Berkeley Packet Filter), güvenli ve JIT ile derlenen C programlarının doğrudan Linux çekirdeği içinde çalışmasına izin vererek bu sorunu kökten çözer. `kfree_skb` (çekirdek paket silme) ve `tcp_retransmit_skb` kancalarına takılan eBPF programları, düşen her tekil ağ paketinin tam neden kodunu (reason code) mikrosaniyenin altında bir yükle ve tek satır uygulama koduna dokunmadan yakalar.

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

eBPF çekirdek gözlemlenebilirliği 4 bileşenden oluşur: (1) Çekirdek İçi Doğrulayıcı (Verifier): eBPF doğrulayıcısı kod yüklenmeden önce bellek güvenliğini ve sonsuz döngü olmadığını garanti eder, çekirdek çöküşlerini (kernel panic) imkansız kılar. (2) Dinamik Kanca (Hook) Bağlantısı: eBPF çekirdek izleme noktalarına (`kfree_skb`), kprobe'lara ve Ağ Trafik Kontrolü (TC) katmanına dışarıdan bağlanır. (3) Sıfır-Kopyalama Halka Tamponları (Ring Buffers): Kilit içermeyen dairesel tamponlar üzerinden çekirdek olayları kullanıcı alanı ajanlarına (Cilium, Pixie) gerçek zamanlı aktarılır. (4) XDP Donanım Hızlandırması: eXpress Data Path, eBPF kodunu çekirdek daha bellek ayırmadan doğrudan Ağ Kartı (NIC) sürücüsünde çalıştırarak saniyede milyonlarca DDoS paketini hat hızında filtreler.

2. Doğru Kullanım Senaryosu

Kubernetes servis ağı altyapıları (Cilium), kod değiştirmeden dağıtık izleme, çekirdek ağ paketi düşme teşhisleri, ağ güvenlik duvarları ve sürekli CPU profil çıkarma (Parca / Pyroscope).

3. Prodüksiyon Arıza Modları

Saniyede 10 milyondan fazla çalışan yüksek frekanslı çekirdek fonksiyonlarına verimsiz kprobe bağlayıp çekirdek CPU'sunu boğmak; devasa ağ fırtınalarında eBPF harita belleğinin dolup telemetri olaylarını kaçırması.

4. Teşhis ve Telemetri Sinyalleri

`bpftool` komutunda aktif eBPF programlarının listelenmesi; Cilium telemetrisinde kesin çekirdek düşme nedenlerinin (`SKB_DROP_REASON_NETFILTER_DROP` - conntrack tablosu taşması) yakalanması; p99 gecikme artışlarının eBPF TCP retransmit sayacıyla birebir örtüşmesi.

5. Önleme ve Mimari Bariyerler

Modern Linux çekirdekleri ($ge 5.10$ LTS) kullanın; sıfırdan güvensiz C yazmak yerine endüstri standardı eBPF platformlarını (Cilium, Pixie, Coroot) tercih edin; `bpftool prog profile` ile eBPF programlarının CPU tüketimini düzenli denetleyin.

6. Mimari Ödünleşimler (Trade-offs)

eBPF uygulama kodunu değiştirmeden benzersiz bir çekirdek şeffaflığı ve hat hızında paket işleme gücü sağlar; ancak modern Linux çekirdeği ve root/CAP_BPF sistem yetkisi gerektirir.

Vaka İncelemesi (TinyCTO Örneği)

Bir Kubernetes ödeme servisi her 10 dakikada bir rastgele 1.000 ms'lik gecikme patlamaları yaşıyordu. APM araçları sadece PostgreSQL sorgusunun yavaş olduğunu söylüyordu. SRE ekibi `kfree_skb` üzerine hafif bir eBPF kancası yerleştirdi. 5 dakika içinde eBPF asıl sebebi buldu: Linux netfilter bağlantı takip tablosu (`nf_conntrack`) 262.144 sınırına ulaşıyor ve gelen TCP paketlerinin %0,3'ünü sessizce düşürerek istemcide 1 saniyelik retransmission beklemelerine yol açıyordu. `nf_conntrack_max` 1 milyona çıkarıldığında tüm gecikme patlamaları anında yok oldu.

İnteraktif Konsept Alıştırmaları

2 Alıştırma
Q1

eBPF (Extended Berkeley Packet Filter) nedir?

Özel ve güvenliği doğrulanmış programların Linux çekirdeği içinde, sıfır kod değişikliği ve mikrosaniye seviyesinde yük ile doğrudan çalışmasını sağlayan çekirdek teknolojisidir.
Q2

Ağ paketi düşmelerini tespit etmede eBPF neden kullanıcı alanı APM ajanlarından üstündür?

Çünkü eBPF doğrudan çekirdek ağ olaylarına (`kfree_skb`) bağlanır ve düşen paketlerin kesin neden kodunu (conntrack dolması, bozuk sağlama vb.) anında yakalar.

Çekirdek Düzeyinde Gözlemlenebilirlik: eBPF Ağ Paketi Düşme Tespiti ve TC/XDP Filtreleri — Sıkça Sorulan Sorular

Linux eBPF Doğrulayıcısı (Verifier) sistem güvenliğini nasıl garanti eder?

Program yüklenmeden önce tüm çalışma yollarını inceler; geçersiz işaretçi erişimlerini, yetkisiz bellek okumalarını ve sonsuz döngüleri engelleyerek sistemin çökmesini imkansız kılar.

eBPF ekosisteminde XDP (eXpress Data Path) nedir?

Çekirdek daha pakete bellek ayırmadan doğrudan Ağ Kartı (NIC) sürücüsünde çalışan ve DDoS saldırılarını hat hızında filtreleyen en alt eBPF katmanıdır.

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • eBPF runs verified, sandboxed bytecode directly inside the Linux kernel.
  • Traces kernel packet lifecycle (`kfree_skb`, `tcp_retransmit_skb`) with sub-microsecond overhead.
  • Uncovers silent kernel network issues (conntrack saturation, buffer overflow) invisible to APMs.
  • Powers modern Kubernetes networking and observability platforms like Cilium and Pixie.

Yaygın Yanılgılar

  • Yanılgı: eBPF can cause Linux kernel panics and server crashes (Gerçek: The in-kernel verifier strictly rejects unsafe code before execution).
  • Yanılgı: eBPF requires writing complex low-level C for every dashboard (Gerçek: Enterprise tools like Cilium and Coroot provide turnkey eBPF observability out-of-the-box).

Karar Kılavuzu & Önceliklendirme

Adopt Cilium as the default Kubernetes CNI for high-performance eBPF networking and tracing. Use eBPF drop tracing (`kfree_skb`) whenever application APMs show unexplained network latency cliffs.

Doğrulanmış Kaynaklar & Referanslar