Numri i parë i biblioteks Aya, i cili lejon krijimin e procesorëve eBPF në gjuhën Rust që ekzekutohen brenda bërthamës Linux në një makinë virtuale speciale me JIT, u publikua. Ndryshe nga mjetet e tjera për zhvillimin e programeve eBPF, Aya nuk përdor libbpf dhe kompilatorin bcc, por ofron një zbatim të sajin, e shkruar në Rust, që përdor paketën crate libc për të qasur drejtpërdrejt në thirrjet sistemore të bërthamës. Nuk kërkohet ndonjë mjet për gjuhën C dhe skedarët e titujve të bërthamës për ndërtimin e Ayas. Kodi i bibliotekës shpërndahet nën licencat MIT dhe Apache 2.0.
Karakteristikat kryesore:
- Mbështetje për formatin BTF (BPF Type Format), i cili ofron informacion mbi tipet në pseudokodin BPF për verifikimin e tipeve dhe përputhjen me tipet e ofruara nga bërthama aktuale. Përdorimi i BTF sjell mundësinë për të krijuar procesorë eBPF universalë që mund të përdoren pa rivedhësim me versione të ndryshme të bërthamës Linux.
- Mbështetje për thirrjet «bpf-to-bpf», variablat globale dhe inicializuesit, që lejon formësimin e programeve për eBPF në përputhje me programet e zakonshme duke përdorur Aya si runtime, që anashkalon funksionet duke marrë në konsideratë operimin në eBPF.
- Mbështetje për lloje të ndryshme bërthamash, duke përfshirë array të zakonshme, harta me hash (hash map), steka, radhë, gjurmime të stekave, si dhe struktura për socket dhe monitorimin e performancës.
- Mundësi për të krijuar lloje të ndryshme programash eBTF, duke përfshirë programe për filtrimin dhe menaxhimin e trafik, procesorë cgroup dhe operacione të ndryshme me socket, programe XDP.
- Mbështetje për platforma për përpunimin asinkron të kërkesave në modalitetin jo bllokues tokio dhe async-std.
- Ndërtim i shpejtë, pa varësi nga ndërtimi i bërthamës dhe skedarët e titujve të bërthamës.
Projekti ende konsiderohet eksperimental â API ende nuk Ă«shtĂ« stabilizuar dhe vazhdon tĂ« zhvillohet. Gjithashtu, nuk janĂ« zbatuar tĂ« gjitha mundĂ«sitĂ« e menduara. Deri nĂ« fund tĂ« vitit, zhvilluesit presin tĂ« arrijnĂ« funksionalitetin e Ayas nĂ« paritet me libbpf, dhe nĂ« janar 2022 tĂ« formojnĂ« lĂ«shimin e parĂ« stabil. Po ashtu, planifikohet tĂ« kombinohen pjesĂ«t e Ayas, tĂ« nevojshme pĂ«r tĂ« shkruar kod nĂ« Rust pĂ«r bĂ«rthamĂ«n Linux me komponentĂ«t qĂ« punojnĂ« nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit dhe pĂ«rdoren pĂ«r ngarkim, lidhje dhe ndĂ«rveprim me programet eBPF.
Kujtojmë se eBPF është një interpreter i kodit të bajtëve i integruar në bërthamën Linux, që lejon krijimin e trajtuesve të operacioneve rrjetë, monitorimin e punës të sistemeve, kapjen e thirrjeve të sistemeve, kontrollin e aksesit, përpunimin e ngjarjeve me ruajtjen e kronometrimit, numërimin e frekuencës dhe kohës së ekzekutimit të operacioneve, dhe realizimin e gjurmëve duke përdorur kprobes/uprobes/tracepoints. Falë përdorimit të kompilimit JIT, kodi i bajtëve shndërrohet në instruccionet makinë dhe ekzekutohet me performancën e kodit natyror. XDP ofron mjete për të ekzekutuar programet BPF në nivelin e drejtuesit të rrjetit, me mundësi të qasjes direkte në DMA-buferin e paketave, gjë që lejon krijimin e trajtuesve me performancë të lartë për punë në kushte ngarkese të madhe rrjetë.
Burimi: opennet.ru
