eBPF (genişletilmiş Berkeley Paket Filtresi) Linux çekirdeğinde çeşitli noktalarda özel programları çalıştırmanıza izin veren güçlü ve esnek bir özelliktir. Linux 3.15’te tanıtıldı ve o zamandan beri Linux ekosisteminin önemli bir parçası haline geldi ve kullanım alanları ve araçları hızla artmaktadır.
eBPF programları, C programlama dili için sınırlı bir sürümü kullanılarak yazılır ve çalışma zamanında çekirdeğe yüklenen bayt koduna derlenir. Çekirdek içinde güvenli bir ortamda çalışır ve çekirdeğe özel kancalara, Programları olarak adlandırılan kancalara bağlanır. Bu kancalar, bir ağ paketinin alınması, bir sistem çağrısının tamamlanması veya bir zamanlayıcının sona ermesi gibi çeşitli olaylar tarafından tetiklenebilir.
eBPF’nin önemli avantajlarından biri çok yönlülüğüdür. Paket filtreleme, izleme ve manipülasyon gibi çeşitli amaçlar için kullanılabilir. Örneğin, eBPF’yi kullanarak ağ trafiğini izleyebilir ve daha fazla analiz için paketleri yakalayabilir veya sistem çağrıları ve diğer olaylar üzerinden sistem performansını izleyebilirsiniz. Sistem çağrılarını ve diğer çekirdek işlevlerini yaka ve değiştirerek çekirdeğin davranışını da değiştirebilir.
eBPF’nin diğer bir avantajı ise performansıdır. Programları çekirdek alanında çalıştığı için, sisteme tam erişimleri var ve kullanıcı alanı programlarından çok daha hızlı çalışabilirler. Bu, paket filtreleme ve manipülasyon gibi yüksek performans gerektiren görevler için özellikle yararlıdır.
eBPF programları nasıl yazılır?
eBPF doğrudan değil, eBPF’nin üzerinde bir soyutlama sağlayan ve doğrudan program yazmayı gerektirmeyen ancak bunun yerine amaca dayalı tanımları belirleme yeteneği sunan Cilium , bcc veya bpftrace gibi projeler aracılığıyla dolaylı olarak kullanılır. daha sonra eBPF ile uygulanır.

Daha üst düzey bir soyutlama yoksa, programların doğrudan yazılması gerekir. Linux çekirdeği, eBPF programlarının bayt kodu biçiminde yüklenmesini bekler. Doğrudan bayt kodu yazmak elbette mümkün olsa da, daha yaygın geliştirme uygulaması sözde C kodunu eBPF bayt koduna derlemek için LLVM gibi bir derleyici paketinden yararlanmaktır.
eBPF ile alakalı orjinal kaynağa bu adresten erişebilirsiniz.