Predstavljena knjižnica Aya za ustvarjanje upravljavcev eBPF v Rustu

Predstavljena je prva izdaja knjižnice Aya, ki omogoča ustvarjanje upravljavcev eBPF v jeziku Rust, ki se izvajajo znotraj jedra Linuxa v posebnem virtualnem stroju z JIT. Za razliko od drugih razvojnih orodij eBPF Aya ne uporablja libbpf in prevajalnika bcc, ampak namesto tega ponuja lastno implementacijo, napisano v Rustu, ki uporablja paket libc crate za neposreden dostop do sistemskih klicev jedra. Gradnja Aya ne zahteva orodja jezika C ali datotek glave jedra. Koda knjižnice se distribuira pod licencama MIT in Apache 2.0.

Ključne značilnosti:

  • Podpora za BTF (BPF Type Format), ki zagotavlja informacije o tipih v psevdo kodi BPF za preverjanje tipa in preslikavo v tipe, ki jih zagotavlja trenutno jedro. Uporaba BTF omogoča ustvarjanje univerzalnih upravljavcev eBPF, ki jih je mogoče uporabljati brez ponovnega prevajanja z različnimi različicami jedra Linuxa.
  • Podpora za klice »bpf-to-bpf«, globalne spremenljivke in inicializatorje, ki vam omogoča oblikovanje programov za eBPF na podoben način kot običajni programi, ki uporabljajo aya kot izvajalno okolje, ki na novo definira funkcije ob upoštevanju dela v eBPF.
  • Podpora za različne tipe jedra, vključno z običajnimi nizi, zemljevidi zgoščenih vrednosti, skladi, čakalnimi vrstami, sledmi skladov ter strukturami za sledenje vtičnic in zmogljivosti.
  • Sposobnost ustvarjanja različnih vrst programov eBTF, vključno s programi za filtriranje in upravljanje prometa, upravljalniki cgroup in različnimi operacijami vtičnic, programi XDP.
  • Podpora za platforme za asinhrono obdelavo zahtev v načinu brez blokiranja tokio in async-std.
  • Hitro sestavljanje, brez povezave s sestavom jedra in datotekami glave jedra.

Projekt še vedno velja za eksperimentalni - API še ni stabiliziran in se še naprej razvija. Prav tako še niso uresničene vse načrtovane priložnosti. Do konca leta razvijalci pričakujejo, da bodo funkcionalnost Aya uskladili z libbpf in januarja 2022 ustvarili prvo stabilno izdajo. Obstajajo tudi načrti za združitev delov Aya, potrebnih za pisanje kode Rust za jedro Linuxa, s komponentami uporabniškega prostora, ki se uporabljajo za nalaganje, pripenjanje in interakcijo s programi eBPF.

Naj spomnimo, da je eBPF tolmač bajtne kode, vgrajen v jedro Linuxa, ki vam omogoča ustvarjanje upravljavcev omrežnih operacij, spremljanje delovanja sistema, prestrezanje sistemskih klicev, nadzor dostopa, obdelavo dogodkov ob ohranjanju časa, izračun frekvence in časa operacij, izvajanje sledenje z uporabo kprobes/uprobes /tracepoints. Zahvaljujoč uporabi prevajanja JIT se bajtna koda sproti prevaja v strojna navodila in izvaja z zmogljivostjo izvorne kode. XDP ponuja orodja za izvajanje programov BPF na ravni omrežnega gonilnika z možnostjo neposrednega dostopa do medpomnilnika paketov DMA, kar vam omogoča ustvarjanje visoko zmogljivih procesorjev za delo pod veliko obremenitvijo omrežja.

Vir: opennet.ru

Dodaj komentar