Pristatyta Aya biblioteka, skirta kurti eBPF tvarkykles „Rust“.

Pristatomas pirmasis Aya bibliotekos leidimas, leidžiantis sukurti eBPF tvarkykles Rust kalba, kurios veikia Linux branduolio viduje specialioje virtualioje mašinoje su JIT. Skirtingai nuo kitų eBPF kūrimo įrankių, Aya nenaudoja libbpf ir bcc kompiliatoriaus, o siūlo savo įgyvendinimą, parašytą Rust, kuris naudoja libc crate paketą tiesiogiai pasiekti branduolio sistemos iškvietimus. Aya kūrimui nereikia C kalbos įrankių ar branduolio antraštės failų. Bibliotekos kodas platinamas pagal MIT ir Apache 2.0 licencijas.

Pagrindinės savybės:

  • BTF (BPF tipo formato) palaikymas, kuris teikia tipo informaciją BPF pseudokode, kad būtų galima patikrinti tipą ir susieti su dabartinio branduolio teikiamais tipais. Naudojant BTF galima sukurti universalias eBPF tvarkykles, kurias galima naudoti neperkompiliuojant su skirtingomis Linux branduolio versijomis.
  • „bpf-to-bpf“ skambučių, visuotinių kintamųjų ir inicializatorių palaikymas, leidžiantis kurti eBPF programas panašiai kaip įprastoms programoms, kurios naudoja „aya“ kaip vykdymo laiką, kuris iš naujo apibrėžia funkcijas, atsižvelgiant į darbą eBPF.
  • Įvairių tipų branduolių palaikymas, įskaitant įprastus masyvus, maišos žemėlapius, krūvas, eiles, dėklo pėdsakus, taip pat lizdų ir našumo stebėjimo struktūras.
  • Galimybė kurti įvairaus tipo eBTF programas, įskaitant srauto filtravimo ir valdymo programas, cgroup tvarkykles ir įvairias lizdų operacijas, XDP programas.
  • Platformų palaikymas asinchroniniam užklausų apdorojimui neblokuojančiu režimu tokio ir async-std.
  • Greitas surinkimas, be jokio ryšio su branduolio komplektu ir branduolio antraštės failais.

Projektas vis dar laikomas eksperimentiniu – API dar nėra stabilizuota ir toliau vystosi. Taip pat dar nerealizuotos visos suplanuotos galimybės. Iki metų pabaigos kūrėjai tikisi suderinti Aya funkcijas su libbpf, o 2022 m. sausį sukurti pirmąjį stabilų leidimą. Taip pat planuojama sujungti „Aya“ dalis, reikalingas „Rust“ kodui „Linux“ branduoliui parašyti, su vartotojo erdvės komponentais, naudojamais eBPF programoms įkelti, prijungti ir sąveikauti su jomis.

Prisiminkime, kad eBPF yra Linux branduolyje įmontuotas baitinio kodo interpretatorius, leidžiantis kurti tinklo operacijų tvarkykles, stebėti sistemos veikimą, perimti sistemos skambučius, kontroliuoti prieigą, apdoroti įvykius išlaikant laiką, apskaičiuoti operacijų dažnumą ir laiką, atlikti sekimas naudojant kprobes/uprobes/tracepoints. Naudojant JIT kompiliavimą, baitinis kodas yra verčiamas į mašinos instrukcijas ir vykdomas naudojant vietinį kodą. XDP suteikia įrankius, skirtus BPF programoms paleisti tinklo tvarkyklės lygiu, su galimybe tiesiogiai pasiekti DMA paketų buferį, kuris leidžia sukurti didelio našumo procesorius darbui esant didelei tinklo apkrovai.

Šaltinis: opennet.ru

Добавить комментарий