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
| Ihtiyac | Cozum | Notlar |
|---|---|---|
| Bir listeden IP’leri engelleme | IP key’leri ile BPF_MAP_TYPE_HASH | DDoS engine ve IP blocklist’te kullanilir |
| Kaynak basina paket sayma | BPF_MAP_TYPE_PERCPU_HASH veya BPF_MAP_TYPE_LRU_HASH | Per-CPU variant lock contention’i onler |
| Rate limiting | BPF_MAP_TYPE_HASH + BPF’te token bucket | Her key icin timestamp ve token sayisi saklayin |
| Round-robin backend secimi | BPF_MAP_TYPE_ARRAY + atomic counter | __sync_fetch_and_add ile backend array’e index |
| Consistent hashing | 5-tuple hash, mod N backend | jhash veya benzeri kullanin; referans icin Katran’a bakin |
| DNS query inceleme | L3/L4 header’lardan sonra UDP payload’i parse edin | DNS wire format’taki QNAME field’i uzerinde eslestirme |
| Paketi kernel stack’e gecirme | XDP_PASS return edin | Islem gerekmediginde varsayilan davranis |
| Paketi dusurme | XDP_DROP return edin | Kernel’deki en hizli discard path |
| Baska bir interface’e yonlendirme | bpf_redirect() + XDP_REDIRECT return | Load balancer forwarding icin gerekli |
| MAC adreslerini yeniden yazma | xdp_md->data uzerinden dogrudan header degisikligi | Dogru L2 header’i ayarlamak icin redirect sonrasi gerekli |
| XDP ve user space arasinda state paylasimi | BPF_MAP_TYPE_HASH veya BPF_MAP_TYPE_ARRAY | Program reload’lari arasinda kalicilik icin map’leri BPFFS’e pinleyin |
| Baska bir BPF programina tail call | BPF_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_TRIE | Subnet seviyesinde engelleme icin longest prefix match |
| DNS query log | BPF_MAP_TYPE_RINGBUF + Go consumer | Polling olmadan event’leri userspace’e stream etme |
| Debug output | bpf_printk() + bpftool prog trace | Kernel trace pipe; yalnizca gelistirme sirasinda kullanin |
| Routing lookup | bpf_fib_lookup() | Kernel FIB’den next-hop MAC ve interface cozumleme |
| String karsilastirma | bpf_strncmp() | Degisken string’i bir sabit ile karsilastirma |
| Substring arama | bpf_strstr() (kernel 6.x+) | Bir buffer icinde bir alt string bulma |
| Kernel memory okuma | bpf_probe_read_kernel_str() | Kernel adres alanindan guvenli okuma |
| User memory okuma | bpf_probe_read_user_str() | User adres alanindan guvenli okuma |
| Process adini alma | bpf_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
Ek Kaynaklar
- Load Balancer Challenge - L4 LB eBPF-XDP load balancer
- Deep Dive into Cloudflare’s Cache Mechanism - Cloudflare cache ic yapisi
- Scratch to Success LB - Adim adim LB yapimi
- VLAN Filter Support - Bridge VLAN filtering
- Edge-FaaS Scheduling