U prezantua edicioni i parë i bibliotekës Aya, e cila lejon krijimin e përpunuesve eBPF në gjuhën Rust, të cilat ekzekutohen brenda bërthamës Linux në një makinë virtuale të veçantë me JIT. Ndryshe nga mjetet e tjera për zhvillimin e programeve eBPF, Aya nuk përdor libbpf dhe kompilatorin bcc, por ofron një zbatim të vetin, e shkruar në Rust, e cila përdor paketën crate libc për qasje direkte në thirrjet sistemore të bërthamës. Për ndërtimin e Aya nuk kërkohet një mjet për gjuhën C dhe skedarët për headers të bërthamës.
Funksionalitetet kryesore:
- Mbështetje për formatin BTF (BPF Type Format), i cili ofron informacion mbi llojet në pseudokodin BPF për verifikimin e llojeve dhe përputhjen me llojet që ofrohen nga bërthama aktuale. Përdorimi i BTF mundëson krijimin e përpunuesve eBPF universale, të cilët mund të përdoren pa ripompim me versione të ndryshme të bërthamës Linux.
- Mbështetje për thirrjet «bpf-to-bpf», variablave globale dhe inicializatorëve, duke mundësuar ndërtimin e programeve për eBPF në mënyrë të ngjashme me programet normale, duke përdorur aya si runtime, duke ri-definuar funksionet duke marrë parasysh funksionimin në eBPF.
- Mbështetje për lloje të ndryshme bërthamash, duke përfshirë array standarde, harta hash, stack, queues, gjurmimin e stack-ut, si dhe struktura për soketë dhe gjurmimin e performancës.
- Mundësia për të krijuar lloje të ndryshme eBTF-programesh, duke përfshirë programe për filtrimin dhe menaxhimin e trafikut, përpunues të cgroup dhe operacione të ndryshme me soketë, programe XDP.
- Mbështetje për platforma për përpunimin asinkron të kërkesave në mënyrë jo-bllokuese tokio dhe async-std.
- Ndërtim i shpejtë, pa varësi nga ndërtimi i bërthamës dhe skedarët për headers të bërthamës.
Projekti aktualisht konsiderohet si eksperimental â API akoma nuk Ă«shtĂ« stabilizuar dhe vazhdon tĂ« zhvillohet. Gjithashtu, nuk janĂ« realizuar tĂ« gjitha funksionalitetet e planifikuara. Deri nĂ« fund tĂ« vitit, zhvilluesit shpresojnĂ« tĂ« arrijnĂ« funksionalitetin e Aya nĂ« njĂ« nivel tĂ« barabartĂ« me libbpf, dhe nĂ« janar 2022 tĂ« krijojnĂ« versionin e parĂ« stabil. Gjithashtu, planifikohet tĂ« integrohen pjesĂ« tĂ« Aya, tĂ« nevojshme pĂ«r shkruarjen e kodit 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 ngarkimin, lidhjen dhe bashkĂ«veprimin me programet eBPF.
Kujtojmë se eBPF përbën një interpreter të kodit bajt të ndërtuar në bërthamën Linux, i cili lejon krijimin e përpunuesve të operacioneve rrjet, monitorimin e punës së sistemeve, kapjen e thirrjeve sistemore, kontrollin e aksesit, përpunimin e ngjarjeve me ruajtjen e kohëzgjatjes, numërimin e frekuencës dhe kohës së ekzekutimit të operacioneve, dhe realizimin e gjurmimit duke përdorur kprobes/uprobes/tracepoints. Falë përdorimit të JIT-kompilimit, kodi bajt përkthehet në instruksione makinë në kohë reale dhe ekzekutohet me performancë të kodit natyror. XDP ofron mjete për ekzekutimin e programeve BPF në nivelin e drejtuesit të rrjetit, me mundësinë e qasjes direkte në buferin DMA të paketimeve, duke mundësuar krijimin e përpunuesve me performancë të lartë për punë në kushte të ngarkesës së madhe rrjet.
Burimi: opennet.ru
