GCC artık eBPF'ye derleme için bir arka uç içeriyor

GCC derleyici paketine dahildir tarafından kabul edilen Linux çekirdeğinde yerleşik bayt kodu yorumlayıcısı için programların derlenmesine yönelik kod eGMP. JIT derlemesinin kullanımı sayesinde, çekirdek bayt kodu anında makine talimatlarına çevrilir ve yerel kodun performansıyla yürütülür. eBPF destekli yamalar kabul edilmiş GCC 10 sürümünün geliştirildiği şubeye.

Bayt kodu oluşturmaya yönelik bir arka uca ek olarak GCC, eBPF için bir libgcc bağlantı noktası ve çekirdek tarafından sağlanan yükleyicileri kullanarak eBPF sanal makinesinde kod yürütmeyi mümkün kılan ELF dosyaları oluşturmaya yönelik araçlar içerir. GCC'de eBPF'yi destekleyen yamalar, Oracle mühendisleri tarafından hazırlandı. sağlanan GNU binutils'te eBPF desteği. GDB için bir simülatör ve yamalar da geliştirme aşamasındadır; bu, eBPF programlarını çekirdeğe yüklemeden hata ayıklamanıza olanak tanır.

eBPF programları C dilinin bir alt kümesinde tanımlanabilir, derlenebilir ve çekirdeğe yüklenebilir. Yürütmeden önce, eBPF yorumlayıcısı bayt kodunu izin verilen talimatların kullanımı açısından kontrol eder ve koda belirli kurallar koyar (örneğin, döngü yok).
Başlangıçta eBPF'yi Linux'ta derlemek için LLVM tabanlı araçlar kullanıldı. GCC'deki eBPF desteği ilginçtir çünkü ek bağımlılıklar kurmadan Linux çekirdeğini ve eBPF programlarını oluşturmak için tek bir araç seti kullanmanıza olanak tanır.

eBPF programları biçiminde, ağ operasyon işleyicileri oluşturabilir, trafiği filtreleyebilir, bant genişliğini yönetebilir, sistemleri izleyebilir, sistem çağrılarını engelleyebilir, erişimi kontrol edebilir, operasyonların sıklığını ve zamanını sayabilir ve kprobes/uprobes/tracepoints kullanarak izleme gerçekleştirebilirsiniz.

Kaynak: opennet.ru

Yorum ekle