Esitletud on Aya raamatukogu eBPF töötlejatena Rust keeles.

Esitleme esimese Aya raamatukogu väljaande, mis võimaldab luua Rusti keeles eBPF töötlejaid, mis käivituvad Linuxi kerneli sees spetsiaalses JIT-virtuaalmasinas. Erinevalt teistest eBPF-programmide arendamiseks mõeldud tööriistadest ei kasuta Aya libbpf-i ega bcc kompilaatorit, vaid pakub oma teostust, mis on loodud Rustis ja kasutab crate-paketti libc, et otse süsteemikutsungitele juurde pääseda. Aya koostamiseks ei ole C keele tööriistade või kerneli päiste failide olemasolu vajalik. Raamatukogu kood on litsenseeritud MIT ja Apache 2.0 litsentside alusel.

Põhifunktsioonid:

  • BTF (BPF Tüübi Formaat) toe pakkumine, mis annab teavet tüüpide kohta BPF pseudokoodis tüüpide kontrollimiseks ja nende vastavuse kontrollimiseks, mida pakub praegune kerneli. BTF rakendamine võimaldab luua universaalseid eBPF-töötlejaid, mida saab kasutada ilma erinevate Linuxi kerneli versioonide jaoks uuesti kompileerimata.
  • Toetab 'bpf-to-bpf' kutsungite, globaalsete muutujate ja initsialiseerijate kasutamist, mis võimaldab eBPF programme kujundada analooge tavaprogrammidele, kasutades aya-t runtime'ina, mis ületab funktsioonid arvestades eBPF-i tööd.
  • Toetab erinevaid tuuma tüüpe, sealhulgas tavalisi massiive, hash-kaarte, kuhje, järjekordi, jälgimispuude, samuti soklite ja jõudluse jälgimise struktuure.
  • Võimalus luua erinevaid eBTF programme, sealhulgas programme liiklusfiltreerimiseks ja haldamiseks, cgroup'i käsitlejate ning erinevate soklitöötluste jaoks, samuti XDP programme.
  • Toetab platvorme asünkroonsete päringute töötlemiseks mitteblokeerivas režiimis tokio ja async-std.
  • Kiire kogumine, ilma sõltuvuseta tuuma kogumisest ja tuuma päisefailidest.

Projekt on hetkel eksperimentaalne — API ei ole veel stabiliseerunud ja jätkab arendamist. Samuti pole kõiki kavandatud funktsioone veel rakendatud. Aasta lõpuks loodavad arendajad viia Aya funktsionaalsuse libbpf'iga võrdsesse seisu ja jaanuaris 2022 luua esimese stabiilse versiooni. Samuti on plaanis ühendada need Aya osad, mis on vajalikud Linuxi tuuma jaoks Rustis koodi kirjutamiseks, kasutajaruumi komponentidega, mida kasutatakse programmide eBPF laadimiseks, kinnitamiseks ja nendega suhtlemiseks.

Tulet meelde, et eBPF on Linuxi tuumas sisseehitatud bytecode'i tõlgendaja, mis võimaldab luua võrgutegevuste käsitlejaid, jälgida süsteemide tööd, vahele võtta süsteemikõnesid, kontrollida ligipääsu, töötlema sündmusi ajatempli säilitamisega, arvutama toimingute sagedust ja kestust, teostama jälgimist kprobes'i/uprobes'i/track points'i abil. JIT-kompileerimise kasutamise tõttu tõlgitakse bytecode reaalajas masiinijuhisteks ja seda täidetakse kohaliku koodi jõudlusega. XDP pakub võimalusi BPF-programmide käivitamiseks võrgudraiveri tasemel, võimaldades otsest juurdepääsu DMA-pakettide puhvrile, mis võimaldab luua suure jõudlusega töötlejaid suure võrgu koormuse tingimustes.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster