Rust dilinde çekirdek tabanlı eBPF işleyicileri yazmanıza olanak sağlayan Aya kütüphanesinin ilk sürümü yayınlandı. Linux JIT ile çalışan özel bir sanal makinede çalışır. Diğer eBPF geliştirme araçlarından farklı olarak, Aya libbpf veya bcc derleyicisini kullanmaz, bunun yerine çekirdek sistem çağrılarına doğrudan erişmek için libc crate paketini kullanan Rust dilinde yazılmış kendi uygulamasını sunar. Aya'yı derlemek için C araç zincirlerine veya çekirdek başlık dosyalarına gerek yoktur. Kütüphane kodu MIT ve Apache 2.0 lisansları altında dağıtılmaktadır.
Anahtar özellikler:
- BTF (BPF Tip Biçimi) desteği, mevcut çekirdek tarafından sağlanan tiplerle tip kontrolü ve eşleştirme için BPF sözde kodunda tip bilgisi sağlar. BTF kullanımı, farklı çekirdek sürümlerinde yeniden derleme gerektirmeden kullanılabilen evrensel eBPF işleyicilerinin oluşturulmasını sağlar. Linux.
- eBPF'deki çalışmaları dikkate alarak işlevleri yeniden tanımlayan bir çalışma zamanı olarak aya'yı kullanan normal programlara benzer şekilde eBPF programları tasarlamanıza olanak tanıyan "bpf'den bpf'ye" çağrıları, genel değişkenler ve başlatıcılar desteği.
- Normal diziler, karma haritalar, yığınlar, kuyruklar, yığın izlemelerin yanı sıra soket ve performans izleme yapıları da dahil olmak üzere çeşitli çekirdek türleri için destek.
- Trafiği filtreleme ve yönetme programları, grup işleyicileri ve çeşitli soket işlemleri, XDP programları dahil olmak üzere çeşitli türlerde eBTF programları oluşturma yeteneği.
- Tokio ve async-std'de engellemesiz modda eşzamansız istek işleme platformları desteği.
- Çekirdek derlemesine ve çekirdek başlık dosyalarına herhangi bir bağlantı olmadan hızlı montaj.
Proje şu anda deneysel olarak değerlendiriliyor; API henüz istikrara kavuşmadı ve hala gelişme aşamasında. Ayrıca, planlanan tüm özellikler henüz uygulanmadı. Geliştiriciler yıl sonuna kadar Aya'nın işlevselliğini libbpf ile eşdeğer hale getirmeyi ve Ocak 2022'de ilk kararlı sürümü yayınlamayı umuyorlar. Ayrıca, çekirdek için Rust kodu yazmak için gereken Aya bölümlerini entegre etmeyi planlıyorlar. Linux Kullanıcı alanında çalışan ve eBPF programlarını yüklemek, bağlamak ve bunlarla etkileşim kurmak için kullanılan bileşenlerle.
Hatırlatmak gerekirse, eBPF çekirdeğe entegre bir yazılımdır. Linux Ağ işlemleri işleyicileri oluşturmanıza, sistem etkinliğini izlemenize, sistem çağrılarını yakalamanıza, erişimi kontrol etmenize, zamanlama ile olayları işlemenize, işlemlerin sıklığını ve süresini hesaplamanıza ve kprobe/uprobe/tracepoint kullanarak izleme yapmanıza olanak tanıyan bir bayt kodu yorumlayıcısıdır. Anlık derleme (JIT) sayesinde, bayt kodu anında makine komutlarına çevrilir ve yerel kod performansı ile yürütülür. XDP, DMA paket arabelleğine doğrudan erişimle ağ sürücüsü düzeyinde BPF programları çalıştırma olanağı sağlar ve ağır ağ yükleri için yüksek performanslı işleyiciler oluşturmayı mümkün kılar.
Kaynak: opennet.ru
