XDP Packet Processing
Rate Limiting ve IP Blocklist
XDP ile rate limiting ve IP blocklist - DDoS engine’inizin temel yapı taşları.
Rate Limiting
Lab: eBPF Rate Limiting
Bu lab’da öğrenecekleriniz:
- Client bazında state tutma (
BPF_MAP_TYPE_HASHveyaBPF_MAP_TYPE_LRU_HASH) bpf_ktime_get_ns()ile zaman ölçümü- Token bucket tarzı mantık
XDP_DROPile paket düşürme
Token Bucket Pattern
struct rate_state {
u64 last_seen;
u64 tokens;
};
// Her gelen paket için:
// 1. Geçen süreyi hesapla
// 2. Token'ları yenile (geçen süreye göre)
// 3. Token varsa geçir (XDP_PASS); yoksa düşür (XDP_DROP)
Not: Bu lab ICMPv6 rate limiting uygular. Siz bunu DNS (UDP port 53) için uyarlayacaksınız.
IP Blocklist ve LPM_TRIE
Lab: eBPF Firewall
Bu lab’da öğrenecekleriniz:
BPF_MAP_TYPE_LPM_TRIE(CIDR block desteği)- Longest prefix matching
struct bpf_lpm_trie_key- Firewall mantığı: whitelist vs blacklist
LPM_TRIE Kullanımı
struct lpm_key {
__u32 prefixlen; // CIDR prefix length
__u32 addr; // IP address
};
struct {
__uint(type, BPF_MAP_TYPE_LPM_TRIE);
__uint(max_entries, 1024);
__type(key, struct lpm_key);
__type(value, __u32);
__uint(map_flags, BPF_F_NO_PREALLOC);
} blocklist SEC(".maps");
DDoS Engine için kritik: IP aralığı tabanlı blocklist/allowlist.
Okuma: Facebook BPF Firewall - production XDP firewall kullanımı.