Prezantoi bibliotekën Aya për krijimin e mbajtësve eBPF në Rust

Prezantohet lëshimi i parë i bibliotekës Aya, i cili ju lejon të krijoni mbajtës eBPF në gjuhën Rust që funksionojnë brenda kernelit Linux në një makinë virtuale speciale me JIT. Ndryshe nga mjetet e tjera të zhvillimit të eBPF, Aya nuk përdor libbpf dhe përpiluesin bcc, por në vend të kësaj ofron zbatimin e vet të shkruar në Rust, i cili përdor paketën libc crate për të aksesuar drejtpërdrejt thirrjet e sistemit kernel. Ndërtimi i Aya nuk kërkon vegla të gjuhës C ose skedarë të kokës së kernelit. Kodi i bibliotekës shpërndahet nën licencat MIT dhe Apache 2.0.

Karakteristikat kryesore:

  • Mbështetje për BTF (BPF Type Format), i cili ofron informacione për llojin në pseudokodin BPF për kontrollimin e tipit dhe hartimin e llojeve të ofruara nga kerneli aktual. Përdorimi i BTF bën të mundur krijimin e mbajtësve universalë eBPF që mund të përdoren pa rikompilim me versione të ndryshme të kernelit Linux.
  • Mbështetje për thirrjet "bpf-to-bpf", variabla globale dhe inicializues, i cili ju lejon të hartoni programe për eBPF në një mënyrë të ngjashme me programet e rregullta që përdorin aya si një kohë ekzekutimi që ripërcakton funksionet duke marrë parasysh punën në eBPF.
  • Mbështetje për lloje të ndryshme të kernelit, duke përfshirë grupe të rregullta, harta hash, rafte, radhë, gjurmë stek, si dhe struktura të përcjelljes së prizës dhe performancës.
  • Aftësia për të krijuar lloje të ndryshme të programeve eBTF, duke përfshirë programe për filtrimin dhe menaxhimin e trafikut, cgroup handlers dhe operacione të ndryshme socket, programe XDP.
  • Mbështetje për platformat për përpunimin asinkron të kërkesave në modalitetin jo-bllokues tokio dhe async-std.
  • Montim i shpejtë, pa asnjë lidhje me asamblenë e kernelit dhe skedarët e kokës së kernelit.

Projekti konsiderohet ende eksperimental - API ende nuk është stabilizuar dhe vazhdon të zhvillohet. Gjithashtu, të gjitha mundësitë e planifikuara ende nuk janë realizuar. Deri në fund të vitit, zhvilluesit presin të sjellin funksionalitetin e Aya në barazi me libbpf, dhe në janar 2022 të krijojnë lëshimin e parë të qëndrueshëm. Ka gjithashtu plane për të kombinuar pjesët e Aya të nevojshme për të shkruar kodin Rust për kernelin Linux me komponentët e hapësirës së përdoruesit të përdorur për të ngarkuar, bashkuar dhe ndërvepruar me programet eBPF.

Le të kujtojmë se eBPF është një përkthyes bajtkodi i integruar në kernelin Linux, i cili ju lejon të krijoni mbajtës të operacioneve të rrjetit, të monitoroni funksionimin e sistemit, të përgjoni thirrjet e sistemit, të kontrolloni aksesin, të përpunoni ngjarjet duke ruajtur kohën, të llogaritni frekuencën dhe kohën e operacioneve, të kryeni gjurmimi duke përdorur ksonda/uprobe/pika gjurmë. Falë përdorimit të përpilimit JIT, bytekodi përkthehet menjëherë në instruksionet e makinës dhe ekzekutohet me performancën e kodit vendas. XDP ofron mjete për ekzekutimin e programeve BPF në nivelin e drejtuesit të rrjetit, me aftësinë për të hyrë drejtpërdrejt në buferin e paketave DMA, i cili ju lejon të krijoni procesorë me performancë të lartë për të punuar nën ngarkesë të madhe të rrjetit.

Burimi: opennet.ru

Shto një koment