Biblioteket Aya har presenterats för att skapa eBPF-handlers i sprÄket Rust

Den första versionen av Aya-biblioteket har presenterats, vilket möjliggör skapande av eBPF-handlers pÄ Rust-sprÄket som körs inuti Linux-kÀrnan i en speciell virtuell maskin med JIT. Till skillnad frÄn andra verktyg för utveckling av eBPF-program anvÀnder Aya inte libbpf eller bcc-kompilatorn, utan erbjuder en egen implementation, skriven i Rust, som anvÀnder crate-paketet libc för att direkt anropa kÀrnans systemanrop. För att bygga Aya krÀvs ingen C-kompilator eller kÀrnans header-filer.

Key features:

  • Stöd för BTF-formatet (BPF Type Format), som tillhandahĂ„ller typinformation i BPF-pseudokod för typkontroll och matchning med de typer som tillhandahĂ„lls av den aktuella kĂ€rnan. AnvĂ€ndningen av BTF möjliggör skapandet av universella eBPF-handlers som kan anvĂ€ndas utan omkompilering med olika versioner av Linux-kĂ€rnan.
  • Stöd för 'bpf-to-bpf'-anrop, globala variabler och initialiserare, vilket gör det möjligt att utforma eBPF-program pĂ„ samma sĂ€tt som vanliga program, dĂ€r aya fungerar som en runtime som omdefinierar funktioner med hĂ€nsyn till att de körs i eBPF.
  • Stöd för olika kĂ€rntyper, inklusive vanliga arrayer, hashkartor, stackar, köer, stackspĂ„rning, samt strukturer för sockets och prestandaövervakning.
  • Möjlighet att skapa olika typer av eBTF-program, inklusive program för filtrering och trafikhantering, cgroup-handlers och olika operationer med sockets, samt XDP-program.
  • Stöd för plattformar för asynkron bearbetning av förfrĂ„gningar i icke-blockerande sĂ€tt med tokio och async-std.
  • Snabb byggnation, oberoende av kĂ€rnbyggnad och kĂ€rnans header-filer.

Projektet betraktas fortfarande som experimentellt — API:et Ă€r Ă€nnu inte stabiliserat och fortsĂ€tter att utvecklas. Inte alla planerade funktioner har heller genomförts. Innan Ă„rets slut förvĂ€ntar sig utvecklarna att Ayas funktionalitet uppnĂ„r paritet med libbpf, och i januari 2022 planeras den första stabila versionen att formuleras. Det planeras ocksĂ„ att kombinera delar av Aya som krĂ€vs för att skriva Rust-kod för Linux-kĂ€rnan med komponenter som arbetar i anvĂ€ndarutrymmet och anvĂ€nds för att ladda, bifoga och interagera med eBPF-program.

Vi pÄminner om att eBPF Àr en inbyggd tolk för bytekod i Linux-kÀrnan som gör det möjligt att skapa hanterare för nÀtverksoperationer, övervaka systemets arbete, fÄnga systemanrop, kontrollera Ätkomst, bearbeta hÀndelser med tidsstÀmpling, rÀkna frekvens och exekveringstid, samt utföra spÄrning med hjÀlp av kprobes/uprobes/tracepoints. Tack vare anvÀndningen av JIT-kompilering översÀtts bytekoden i realtid till maskininstruktioner och utförs med prestanda som Àr jÀmförbar med den för nativ kod. XDP erbjuder verktyg för att köra BPF-program pÄ nivÄ med nÀtverksdrivrutinen, med möjlighet till direkt Ätkomst till DMA-paketbuffertar, vilket möjliggör skapande av högpresterande hanterare som fungerar under hög nÀtverksbelastning.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster