Referans

Hizli Referans ve Kaynaklar

BPF primitive’leri, helper fonksiyonlar ve ek kaynaklar icin toplu referans. BPF’te belirli bir gorevi nasil yapacaginizi hizlica bulmak icin bu sayfayi kullanin.

Hizli Referans

IhtiyacCozumNotlar
Bir listeden IP’leri engellemeIP key’leri ile BPF_MAP_TYPE_HASHDDoS engine ve IP blocklist’te kullanilir
Kaynak basina paket saymaBPF_MAP_TYPE_PERCPU_HASH veya BPF_MAP_TYPE_LRU_HASHPer-CPU variant lock contention’i onler
Rate limitingBPF_MAP_TYPE_HASH + BPF’te token bucketHer key icin timestamp ve token sayisi saklayin
Round-robin backend secimiBPF_MAP_TYPE_ARRAY + atomic counter__sync_fetch_and_add ile backend array’e index
Consistent hashing5-tuple hash, mod N backendjhash veya benzeri kullanin; referans icin Katran’a bakin
DNS query incelemeL3/L4 header’lardan sonra UDP payload’i parse edinDNS wire format’taki QNAME field’i uzerinde eslestirme
Paketi kernel stack’e gecirmeXDP_PASS return edinIslem gerekmediginde varsayilan davranis
Paketi dusurmeXDP_DROP return edinKernel’deki en hizli discard path
Baska bir interface’e yonlendirmebpf_redirect() + XDP_REDIRECT returnLoad balancer forwarding icin gerekli
MAC adreslerini yeniden yazmaxdp_md->data uzerinden dogrudan header degisikligiDogru L2 header’i ayarlamak icin redirect sonrasi gerekli
XDP ve user space arasinda state paylasimiBPF_MAP_TYPE_HASH veya BPF_MAP_TYPE_ARRAYProgram reload’lari arasinda kalicilik icin map’leri BPFFS’e pinleyin
Baska bir BPF programina tail callBPF_MAP_TYPE_PROG_ARRAY + bpf_tail_call()Katran’in xdp_root.c dosyasinda program chaining icin kullanilir
IP blocklist (CIDR aralik)BPF_MAP_TYPE_LPM_TRIESubnet seviyesinde engelleme icin longest prefix match
DNS query logBPF_MAP_TYPE_RINGBUF + Go consumerPolling olmadan event’leri userspace’e stream etme
Debug outputbpf_printk() + bpftool prog traceKernel trace pipe; yalnizca gelistirme sirasinda kullanin
Routing lookupbpf_fib_lookup()Kernel FIB’den next-hop MAC ve interface cozumleme
String karsilastirmabpf_strncmp()Degisken string’i bir sabit ile karsilastirma
Substring aramabpf_strstr() (kernel 6.x+)Bir buffer icinde bir alt string bulma
Kernel memory okumabpf_probe_read_kernel_str()Kernel adres alanindan guvenli okuma
User memory okumabpf_probe_read_user_str()User adres alanindan guvenli okuma
Process adini almabpf_get_current_comm()Calisan task’in comm (ad) degerini dondurur
Port donusumu (network to host)bpf_ntohs()16-bit network byte order’dan host byte order’a
IP donusumu (network to host)bpf_ntohl()32-bit network byte order’dan host byte order’a

Okuma Materyalleri

KaynakReferans Verildigi Yer
Computer Networking FundamentalsStruct, Memory Layout ve Byte Order
XDP PaperXDP Temelleri
Cilium BPF ArchitectureProgram Type’lar ve Derin Dalis
Cilium Network ConceptsProgram Type’lar ve Derin Dalis
Unimog BlogPacket Rewriting ve Load Balancing
Facebook BPF FirewallRate Limiting ve IP Blocklist
Cilium Performance TuningObservability

Ek Kaynaklar