Tutvustatakse Aya raamatukogu eBPF-i töötlejate loomiseks Rustis

Esitletakse Aya teegi esimest väljalaset, mis võimaldab luua eBPF-i töötlejaid Rust-keeles, mis jooksevad Linuxi tuuma sees spetsiaalses JIT-iga virtuaalmasinas. Erinevalt teistest eBPF-i arendustööriistadest ei kasuta Aya libbpf-i ja bcc-kompilaatorit, vaid pakub selle asemel oma Rustis kirjutatud teostust, mis kasutab kerneli süsteemikutstele otse juurdepääsuks paketti libc crate. Aya loomine ei nõua C-keele tööriistu ega kerneli päisefaile. Teegi koodi levitatakse MIT ja Apache 2.0 litsentside all.

Põhijooned:

  • BTF-i (BPF-tüüpi vormingu) tugi, mis pakub tüübiteavet BPF-i pseudokoodis tüübi kontrollimiseks ja praeguse kerneli pakutavate tüüpidega vastendamiseks. BTF-i kasutamine võimaldab luua universaalseid eBPF-käsitlejaid, mida saab kasutada ilma ümberkompileerimiseta Linuxi kerneli erinevate versioonidega.
  • Toetus "bpf-to-bpf" kõnedele, globaalsetele muutujatele ja initsialiseerijatele, mis võimaldab teil kujundada eBPF-i jaoks programme sarnaselt tavaliste programmidega, mis kasutavad aya't käitusajaga, mis määratleb funktsioonid ümber, võttes arvesse tööd eBPF-is.
  • Tugi erinevatele kernelitüüpidele, sealhulgas tavalised massiivid, räsikaardid, virnad, järjekorrad, virnajäljed, aga ka sokli- ja jõudluse jälgimise struktuurid.
  • Võimalus luua erinevat tüüpi eBTF-i programme, sh liikluse filtreerimise ja haldamise programme, cgroup-käitlejaid ja erinevaid soklioperatsioone, XDP-programme.
  • Asünkroonse päringu töötlemise platvormide tugi mitteblokeerivas režiimis tokio ja async-std.
  • Kiire kokkupanek, ilma ühenduseta kerneli koostu ja tuuma päisefailidega.

Projekti peetakse endiselt eksperimentaalseks - API ei ole veel stabiliseerunud ja areneb edasi. Samuti pole veel realiseerunud kõik planeeritud võimalused. Aasta lõpuks loodavad arendajad viia Aya funktsionaalsuse võrdväärseks libbpf-iga ja 2022. aasta jaanuaris luua esimene stabiilne väljalase. Samuti on kavas ühendada Aya osad, mis on vajalikud Linuxi kerneli Rust-koodi kirjutamiseks, kasutajaruumi komponentidega, mida kasutatakse eBPF-programmide laadimiseks, kinnitamiseks ja nendega suhtlemiseks.

Tuletagem meelde, et eBPF on Linuxi kernelisse sisseehitatud baitkooditõlk, mis võimaldab luua võrguoperatsioonide töötlejaid, jälgida süsteemi tööd, pealt kuulata süsteemikõnesid, kontrollida juurdepääsu, töödelda sündmusi ajastades, arvutada toimingute sagedust ja aega, teostada. jälgimine kprobes/uprobes/tracepoints abil. Tänu JIT-i kompileerimise kasutamisele tõlgitakse baitkood käigult masinakäskudeks ja täidetakse algkoodi jõudlusega. XDP pakub tööriistu BPF-programmide käitamiseks võrgudraiveri tasemel koos võimalusega otse juurde pääseda DMA pakettpuhvrile, mis võimaldab teil luua suure jõudlusega protsessoreid töötamiseks suure võrgukoormusega.

Allikas: opennet.ru

Lisa kommentaar