Esitletud on Aya teek eBPF- töötlejate loomiseks Rusti keeles

Esitatud on Aya teegi esimene väljaanne, mis võimaldab luua Rusti keeles eBPF töötlejaid, mida käivitatakse Linuxi tuumas spetsiaalses virtuaalmasinas JIT-iga. Erinevalt teistest eBPF programmide arendamiseks mõeldud tööriistadest, ei kasuta Aya libbpf-i ega bcc kompilatorit, vaid pakub oma teostust, mis on kirjutatud Rustis ja kasutab crate-paketti libc tuuma süsteemi kõnede otse kutsumiseks. Aya koostamiseks ei ole vajalik C-keele tööriistade ja tuuma päiste failide olemasolu. Teegi kood on levitatud MIT ja Apache 2.0 litsentside alusel.

Põhifunktsioonid:

  • Toetatakse BTF (BPF Type Format) formaati, mis pakub tüübi teavet BPF pseudokoodis tüüpide kontrollimiseks ja võrdsustamiseks, mida praegune tuum pakub. BTF rakendamine võimaldab luua universaalseid eBPF töötlejaid, mida saab kasutada ilma ümberkompileerimiseta erinevate Linuxi tuumade versioonidega.
  • Toetatakse «bpf-to-bpf» kutsungeid, globaalmuutujaid ja initsialiseerijaid, mis võimaldab kujundada eBPF programme nagu tavalisi programme, kasutades aya kui jooksutegijat, mis ületab funktsioone, arvestades eBPF-i tööd.
  • Toetatakse erinevaid tuuma tüüpe, sealhulgas tavalisi massiive, hash kaartide (hash map) struktuure, stacke, järjekordi, stacki jälgimist, samuti struktuure socketite jaoks ja jõudluse jälgimiseks.
  • Võimalus luua erinevat tüüpi eBTF programme, sealhulgas programmesid liikluse filterdamiseks ja haldamiseks, cgroup töötlejaid ja erinevaid operatsioone socketitega, XDP programme.
  • Toetatakse platvorme asünkroonsete taotluste töötlemiseks mitteblokeerivas režiimis tokio ja async-std.
  • Kiire koostamine, ilma tuuma koostamise ja tuuma päiste failide sidumiseta.

Projekt on praegu katsetamisel — API ei ole veel stabiilne ja jätkab arengut. Samuti ei ole kõik plaanitud võimalused veel teostatud. Arendajad loodavad, et aasta lõpuks jõuab Aya funktsionaalsus libbpf-iga võrdsusele ja jaanuaris 2022 luuakse esimene stabiilne väljaanne. Samuti plaanitakse ühendada Aya komponente, mis on vajalikud Rusti koodide kirjutamiseks Linuxi tuumas, komponentidega, mis töötavad kasutajaruumis ja mida kasutatakse programmide eBPF laadimiseks, kinnitamiseks ja nendega suhtlemiseks.

Tuletame meelde, et eBPF on Linuxi tuuma sisseehitatud baidikoodi tõlgendaja, mis võimaldab luua võrguoperatsioonide töötlejaid, jälgida süsteemide tööd, kinni pidada süsteemikõnesid, kontrollida juurdepääsu, töödelda ajasimisega seotud sündmusi, arvestada operatsioonide sagedust ja kestust ning teostada jälgimist kprobes/uprobes/tracepoints abil. Tänu JIT kompileerimisele tõlgitakse baidikood reaalajas masinakeelsetesse käsklustesse ja täidetakse kohalik koodiga samasuguse jõudlusega. XDP pakub vahendeid BPF-programmide käivitamiseks võrgu draiveri tasemel, otse DMA-pakettide puutepunkti juurde pääsemine, mis võimaldab luua kõrgjõudlusega töötlejaid suure võrgu koormuse tingimustes.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster