Rust-da eBPF işləyiciləri yaratmaq üçün Aya kitabxanası təqdim edildi

JIT ilə xüsusi virtual maşında Linux nüvəsi daxilində işləyən Rust dilində eBPF işləyiciləri yaratmağa imkan verən Aya kitabxanasının ilk buraxılışı təqdim olunur. Digər eBPF inkişaf alətlərindən fərqli olaraq, Aya libbpf və bcc kompilyatorundan istifadə etmir, əksinə, kernel sistemi zənglərinə birbaşa daxil olmaq üçün libc crate paketindən istifadə edən Rust dilində yazılmış öz tətbiqini təklif edir. Aya qurmaq üçün C dili alətləri və ya nüvə başlıq faylları tələb olunmur. Kitabxana kodu MIT və Apache 2.0 lisenziyaları altında paylanır.

Əsas xüsusiyyətlər:

  • Növün yoxlanılması və cari kernel tərəfindən təmin edilən növlərə uyğunlaşdırılması üçün BPF psevdokodunda növ məlumatı təmin edən BTF (BPF Tip Format) üçün dəstək. BTF-dən istifadə Linux nüvəsinin müxtəlif versiyaları ilə təkrar kompilyasiya edilmədən istifadə oluna bilən universal eBPF işləyiciləri yaratmağa imkan verir.
  • “bpf-to-bpf” zəngləri, qlobal dəyişənlər və başlatıcılar üçün dəstək, bu sizə eBPF üçün proqramları eBPF-də işi nəzərə alaraq funksiyaları yenidən təyin edən icra müddəti kimi istifadə edən adi proqramlara bənzər şəkildə tərtib etməyə imkan verir.
  • Adi massivlər, hash xəritələri, yığınlar, növbələr, yığın izləri, həmçinin yuva və performans izləmə strukturları daxil olmaqla müxtəlif nüvə növlərinə dəstək.
  • Müxtəlif növ eBTF proqramlarını, o cümlədən trafikin süzülməsi və idarə edilməsi üçün proqramlar, qrup işləyiciləri və müxtəlif soket əməliyyatları, XDP proqramları yaratmaq bacarığı.
  • Bloklanmayan rejimdə asinxron sorğunun emalı üçün platformalar üçün dəstək tokio və async-std.
  • Kernel assemblies və kernel header faylları ilə heç bir əlaqə olmadan sürətli montaj.

Layihə hələ də eksperimental hesab olunur - API hələ sabitləşməyib və inkişaf etməyə davam edir. Həm də planlaşdırılan bütün imkanlar hələ də həyata keçirilməyib. İlin sonuna qədər tərtibatçılar Aya-nın funksionallığını libbpf ilə paritetə ​​gətirməyi və 2022-ci ilin yanvarında ilk stabil buraxılışı yaratmağı gözləyirlər. Linux nüvəsi üçün Rust kodunu yazmaq üçün lazım olan Aya hissələrini eBPF proqramlarını yükləmək, əlavə etmək və onlarla qarşılıqlı əlaqədə olmaq üçün istifadə olunan istifadəçi məkanı komponentləri ilə birləşdirmək planları da var.

Yada salaq ki, eBPF Linux nüvəsinə quraşdırılmış bayt kodu tərcüməçisidir ki, bu da sizə şəbəkə əməliyyatlarının idarəediciləri yaratmağa, sistemin işinə nəzarət etməyə, sistem zənglərini ələ keçirməyə, girişi idarə etməyə, vaxtı saxlayarkən hadisələri emal etməyə, əməliyyatların tezliyini və vaxtını hesablamağa, yerinə yetirməyə imkan verir. kprobes/uprobes/tracepoints istifadə edərək izləmə. JIT kompilyasiyasının istifadəsi sayəsində bayt kodu tez bir zamanda maşın təlimatlarına çevrilir və yerli kodun icrası ilə yerinə yetirilir. XDP, DMA paket buferinə birbaşa daxil olmaq imkanı ilə şəbəkə sürücüsü səviyyəsində BPF proqramlarını idarə etmək üçün alətlər təqdim edir ki, bu da sizə ağır şəbəkə yükü altında işləmək üçün yüksək məhsuldar prosessorlar yaratmağa imkan verir.

Mənbə: opennet.ru

Добавить комментарий