KernelScript 0.1.0

Esitletud KernelScript — eksperimenteeritud programmeerimiskeel eBPF-programmide, kasutajaliidese laadijate ja Linuxi tuuma laienduste arendamiseks ĂŒhes koodibaasis. Projekt arendab Multikernel Technologies, ettevĂ”te, mis tutvustab split-kernel / multikernel arhitektuuri Linuxile. KernelScript'i tutvustas ettevĂ”tte asutaja Cong Wang Linux Foundationi avatud lĂ€htekoodi tippkohtumisel; projekti kood on avaldatud GitHubis litsentsi alusel Apache 2.0.


eBPF (Extended Berkeley Packet Filter) on tehnoloogia, mis vĂ”imaldab kĂ€ivitada vĂ€ikeseid programme otse Linuxi tuumas, puutumatuks muudetud koodi ja ohustamata sĂŒsteemi stabiilsust. eBPF aitab lahendada mitmeid ĂŒlesandeid, alates jĂ”udluse jĂ€lgimisest kuni turvalisuse ja vĂ”rgu optimeerimiseni. NĂ€iteks eBPF abil saab jĂ€lgida sĂŒsteemikĂ”nesid, vĂ”rgu liiklust ja muid sĂŒndmusi reaalajas. See vĂ”imaldab leida jĂ”udluse kitsaskohti ja optimeerida sĂŒsteemi (Habr).

KernelScript'i idee on teha eBPF arendamine vĂ€hem vaevarikka, kui kasutada C + libbpf kombinatsiooni, ning mitte piirduda ainult jĂ€lgimisega nagu bpftrace. Arendajad kirjeldavad keelt kui tĂŒĂŒbisohked DSL, mis ĂŒhendab eBPF, kasutajaliidese ja kernelspace arendust: ĂŒhest allikafailist peab kompilaator genereerima koodi eBPF-programmide, userspace osa ja integreerimise jaoks kernel moodulitega kfunc kaudu.

KernelScript'i vÀlja kuulutatud vÔimed:

  • Mitme sihiga kompileerimine ĂŒhest failist — funktsioonid, mille atribuudid nĂ€evad vĂ€lja nagu @xdp, @tc, @helper ja @kfunc, suunatakse automaatselt Ă”igesse ossa: XDP/TC programmile, helper-funktsioonile, kernel-funktsioonile vĂ”i tavaliseks userspace koodiks.

  • Tagaautomaatika tail calls — selle asemel, et kĂ€sitsi seadistada program array ja kutsuda bpf_tail_call(), pakuvad arendajad kirjutada tavalisi funktsioonikĂ”nesid, jĂ€ttes madala taseme eBPF koodi genereerimise kompilaatori ĂŒlesandeks.

  • Lihtsustatud töö dynptr ja eBPF kaardiga — keel varjab osa kĂ€sitsi tööst bpf_ringbuf_reserve_dynptr, bpf_dynptr_write ja sarnaste API-dega. eBPF kaarte saab kasutada globaalsetena, millele erinevad programmid pÀÀsevad juurde.

  • Programmide elutsĂŒkli kontroll — eBPF-programmid on esitatud kui tĂŒĂŒbitud vÀÀrtused, mis, autorite kavatsuse kohaselt, peaksid kompilatsiooni etapis ennetama vigu, nagu katse sooritada attach() enne edukat load().

  • Kfunci tugi — KernelScript vĂ”imaldab deklareerida funktsioone @kfunc atribuudi abil, mis kĂ€ivad tuumaruumi ja mida saab kutsuda eBPF programmidega; nende jaoks lubatakse automaatne kernel mooduli ja BTF registrite genereerimine.

  • Peamiste eBPF programmide tĂŒĂŒpide toimetamine — README-s on nĂ€idatud nĂ€iteid XDP, TC, probe-programmide ja perf_event jaoks, sealhulgas töötlus seadme jĂ”udluse arvestitega.

Autorid rÔhutavad eraldi, et KernelScript ei asenda Linuxi kernelit ega ole uus eBPF runtime. See on pigem kompilaator ja tippkeel, mis peaks genereerima tuttavaid madala taseme komponente: eBPF koodi, kasutusruumi laadijaid, Makefile'i ning vajadusel kernel mooduli.

Praegu on projekti mĂ”istmine varases katsefaasis. Repos on selgelt mĂ€rgitud, et KernelScript on beta, sĂŒntaks ja API vĂ”ivad muutuda ilma tagasitoe sĂ€ilitamiseta, ning selle kasutamine tootmises ei ole praegu soovitatav.

Allikas: linux.org.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