KernelScript 0.1.0

Presented KernelScript — një gjuhë eksperimentale programimi për zhvillimin e programeve eBPF, bootloader-eve të personalizuara dhe zgjerimeve të bërthamës Linux nga një bazë e vetme kode. Projekti zhvillon Multikernel Technologies, një kompani që promovon arkitekturën split-kernel / multikernel për Linux. Rreth KernelScript foli themeluesi i kompanisë Cong Wang në Samitin e Burimeve të Hapura të Fondacionit Linux; kodi i projektit është publikuar në GitHub nën licencën Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — është një teknologji që lejon ekzekutimin e programeve të vogla direkt në bërthamën Linux, pa prekur kodin e saj dhe pa rrezikuar stabilitetin e sistemit. eBPF ndihmon në zgjidhjen e shumë detyrave, nga monitorimi i performancës deri te sigurimi dhe optimizimi i rrjetit. Për shembull, me anë të eBPF është e mundur të monitorohen thirrjet sistemike, trafiku rrjet dhe ngjarje të tjera në kohë reale. Kjo lejon identifikimin e ngushticave në performancë dhe optimizimin e sistemit (Habr).

Ideja e KernelScript është të bëjë zhvillimin e eBPF më pak të dhimbshme sesa përdorimi i nënpaketes C + libbpf, dhe në të njëjtën kohë të mos kufizohet vetëm në gjurmim, si bpftrace. Zhvilluesit e përshkruajnë gjuhën si një DSL të sigurisë së tipit, e cila bashkon eBPF, zhvillimin në hapësirën e përdoruesit dhe në bërthamë: nga një skedë burimi, kompajleri duhet të gjenerojë kod për programet e eBPF, pjesën e hapësirës së përdoruesit dhe integrimin me modulat e bërthamës përmes kfunc.

Aftësitë e shpallura të KernelScript:

  • Kompilimi për qëllime të ndryshme nga një skedë — funksionet me atribute si @xdp, @tc, @helper dhe @kfunc automatikisht i përkasin pjesës përkatëse: programit XDP/TC, funksionit ndihmës, funksioneve të bërthamës ose kodit të zakonshëm të hapësirës së përdoruesit.

  • Automatizimi i thirrjeve tail — në vend që të konfigurojnë manualisht programin array dhe thirrjet bpf_tail_call(), zhvilluesi ofrohet të shkruajë një thirrje të zakonshme të funksionit tjetër, ndërsa gjeneratën e kodit të poshtëm eBPF ta lërë kompajlerit.

  • Punë e thjeshtuar me dynptr dhe harta eBPF — gjuha fsheh një pjesë të punës manuale me bpf_ringbuf_reserve_dynptr, bpf_dynptr_write dhe API të ngjashme. Harta eBPF mund të përdoren si variabla globale, të disponueshme për programe të ndryshme.

  • Kontrolli i ciklit të jetës së programeve — programet e eBPF paraqiten si vlera të tipizuara, që, sipas ideve të autorëve, lejojnë parandalimin e gabimeve si përpjekja për të ekzekutuar attach() para ngarkimit të suksesshëm.

  • Mbështetje për kfunc — KernelScript lejon të shpallë funksione me atributin @kfunc, që ekzekutohen në hapësirën e kernelit dhe mund të thirren nga programet e eBPF; për to është premtuar gjenerim automatik të kernel module dhe regjistrimeve BTF.

  • Mbështetje për tipet kryesore të programeve eBPF — në README jepen shembuj për XDP, TC, programe probe dhe perf_event, duke përfshirë punën me numëruesit e harduerit për performancën.

Autorët theksojnë se KernelScript nuk është një zëvendësim për kernelin Linux ose një runtime të ri eBPF. Është më shumë një kompiler dhe një gjuhë e nivelit të lartë, e cila duhet të gjenerojë komponentët e zakonshëm të niveleve të ulëta: kodi eBPF, ngarkuesit e userspace, Makefile dhe, nëse është e nevojshme, kernel module.

Aktualisht projekti duhet të perceptohet si një eksperiment fillestar. Në depo është thënë qartë se KernelScript është në fazën beta, sintaksa dhe API mund të ndryshojnë pa mbajtur përputhshmëri të prapme, dhe përdorimi i tij në production nuk rekomandohet ende.

Burimi: linux.org.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster