Aya, pierwsza biblioteka do tworzenia kontrolerów eBPF w Rust

Linus torvalds i wielu programistów Kernel i różne dystrybucje wyrazili sympatię do Rusta a nawet niejednokrotnie prezentowana była kwestia implementacji sterowników w tym języku programowania na jądrze Linux.

I na tym wydano już różne dzieła, z których wspomnieliśmy już tutaj na blogu i możemy wymienić na przykład eksperyment udany z alternatywnego zestawu narzędzi, coreutils, przepisanych w Rust (Dotyczy to narzędzi takich jak sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln i ls).

Biorąc to pod uwagę, Linus torvalds nie wypowiedział się w pełni na korzyść tej inicjatywy i wyraził negatywne punkty (możesz zapoznać się ze szczegółami W poniższym linku.)

Pomimo ostrej krytyki ze strony Linusa, prace o wdrożeniu Rdza w jądrze nie przestała się przemieszczać a ostatnio zaprezentowano pierwszą wersję biblioteki Aya, który pozwala na tworzenie sterowników eBPF w Rust, które działają wewnątrz jądra Linux na specjalnej maszynie wirtualnej JIT.

W przeciwieństwie do innych narzędzi programistycznych EBPF, Aya nie używa libbpf i kompilatora BCC, ale oferuje własną implementację napisaną w Rust który używa pakietu szuflady libc do bezpośredniego dostępu do wywołań systemowych jądra. Budowanie Ayi nie wymaga narzędzi języka C ani nagłówków jądra.

Dla kogo to jest nie wiedzą o eBPF, powinni wiedzieć, że jest to interpreter kodu bajtowego wbudowany w jądro systemu Linux, który pozwala tworzyć programy obsługi operacji sieciowych, monitorować działanie systemu, przechwytywać wywołania systemowe, kontrolować dostęp, przetwarzać zdarzenia z czasem, obliczać częstotliwość i czas operacji oraz śledzić za pomocą kprobes / uprobes / tracepoints.

Dzięki kompilacji JIT kod bajtowy jest w locie tłumaczony na instrukcje maszynowe i działa z wydajnością kodu natywnego. XDP zapewnia środki do uruchamiania programów BPF na poziomie sterownika sieciowego, z bezpośrednim dostępem do bufora pakietów DMA, co pozwala na tworzenie wydajnych sterowników dla warunków dużego obciążenia sieci.

O Aya

Spośród wymienionych kluczowych cech od Aya możemy to znaleźć ma wsparcie dla BTF (format typu BPF), który dostarcza informacje o typie w pseudokodzie BPF w celu sprawdzenia i porównania typów dostarczanych przez bieżące jądro. Korzystanie z BTF umożliwia tworzenie uniwersalnych sterowników eBPF, których można używać bez konieczności ponownej kompilacji z różnymi wersjami jądra Linux.

Tak dobrze jak obsługa połączeń bpf-to-bpf, zmienne globalne i inicjatory, co pozwala na projektowanie programów dla eBPF przez analogię do konwencjonalnych programów wykorzystujących aya jako czas wykonania, anulując funkcje uwzględniające pracę w eBPF.

Z drugiej strony ma również obsługa wewnętrznych typów jądra, w tym zwykłe tablice, mapy haszujące, stosy, kolejki, ślady stosu i struktury dla gniazd i śledzenia wydajności.

Również posiada umiejętność tworzenia różnego rodzaju programów eBTF, w tym programy do filtrowania i zarządzania ruchem, cgroup i różne sterowniki gniazd, programy XDP, a także obsługa platformy dla nieblokującego asynchronicznego przetwarzania żądań w trybie tokio i async-std.
Szybka kompilacja bez wiązania się z kompilacją jądra lub nagłówkami jądra.

Należy o tym wspomnieć projekt jest nadal uważany za eksperymentalny, ponieważ API nie jest jeszcze ustabilizowane i nadal się rozwija. Ponadto nie wszystkie wymyślone funkcje zostały jeszcze zaimplementowane.

Do końca roku programiści mają nadzieję, że funkcjonalność Ayi zrówna się z libbpf a w styczniu 2022 r. tworzą pierwszą stabilną wersję. Planowane jest również połączenie części Aya potrzebnych do napisania kodu Rust dla jądra Linuksa z komponentami przestrzeni użytkownika używanymi do ładowania, dołączania i interakcji z programami eBPF.

W końcu jeśli chcesz wiedzieć więcej o tym możesz sprawdź szczegóły w poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.