Yntrodusearre Aya bibleteek foar it meitsjen fan eBPF handlers yn Rust

De earste release fan 'e Aya-bibleteek wurdt presintearre, wêrtroch jo eBPF-hannelers kinne meitsje yn' e Rust-taal dy't yn 'e Linux-kernel rinne yn in spesjale firtuele masine mei JIT. Oars as oare eBPF-ûntwikkelingsark, brûkt Aya gjin libbpf en de bcc-kompiler, mar biedt ynstee in eigen ymplemintaasje skreaun yn Rust, dy't it libc-kratpakket brûkt om direkt tagong te krijen ta kernelsysteemoproppen. Aya bouwe hat gjin C-taal-ark of kernel-header-bestannen nedich. De biblioteekkoade wurdt ferspraat ûnder de MIT- en Apache 2.0-lisinsjes.

Key features:

  • Stipe foar BTF (BPF Type Format), dy't typeynformaasje yn BPF-pseudokoade leveret foar typekontrôle en mapping nei typen levere troch de hjoeddeistige kernel. It gebrûk fan BTF makket it mooglik om universele eBPF-hannelers te meitsjen dy't kinne wurde brûkt sûnder opnij kompilaasje mei ferskate ferzjes fan 'e Linux-kernel.
  • Stipe foar "bpf-to-bpf"-oproppen, globale fariabelen en initializers, wêrtroch jo programma's foar eBPF kinne ûntwerpe op in fergelykbere manier as reguliere programma's dy't aya brûke as in runtime dy't funksjes opnij definiearret mei rekkening mei wurk yn eBPF.
  • Stipe foar ferskate kearntypen, ynklusyf reguliere arrays, hashes-kaarten, stapels, wachtrigen, stapelspoaren, lykas struktueren foar socket en prestaasjes folgjen.
  • Mooglikheid om ferskate soarten eBTF-programma's te meitsjen, ynklusyf programma's foar it filterjen en behearen fan ferkear, cgroup-hannelers en ferskate socket-operaasjes, XDP-programma's.
  • Stipe foar platfoarms foar asynchrone fersykferwurking yn net-blokkearjende modus tokio en async-std.
  • Snelle gearstalling, sûnder ferbining mei de kernel-assemblage en kernel-header-bestannen.

It projekt wurdt noch altyd as eksperiminteel beskôge - de API is noch net stabilisearre en bliuwt te ûntwikkeljen. Ek binne alle plande kânsen noch net realisearre. Oan 'e ein fan it jier ferwachtsje de ûntwikkelders de funksjonaliteit fan Aya yn pariteit te bringen mei libbpf, en yn jannewaris 2022 de earste stabile release te meitsjen. D'r binne ek plannen om de dielen fan Aya te kombinearjen dy't nedich binne om Rust-koade te skriuwen foar de Linux-kernel mei de brûkersromte-komponinten dy't wurde brûkt om te laden, te heakjen en te ynteraksje mei eBPF-programma's.

Lit ús ûnthâlde dat eBPF in bytecode-interpreter is ynboud yn 'e Linux-kernel, wêrtroch jo netwurkoperaasjehannelers kinne oanmeitsje, systeemoperaasje kontrolearje, systeemoproppen ûnderskeppe, tagong kontrolearje, eveneminten ferwurkje by it behâld fan timing, de frekwinsje en tiid fan operaasjes berekkenje, útfiere tracing mei help fan kprobes / uprobes / tracepoints. Mei tank oan it brûken fan JIT kompilaasje, bytecode wurdt oerset op 'e fly yn masine ynstruksjes en útfierd mei de prestaasjes fan native koade. XDP leveret ark foar it útfieren fan BPF-programma's op it nivo fan netwurkbestjoerder, mei de mooglikheid om direkt tagong te krijen ta de DMA-pakketbuffer, wêrtroch jo prosessoren mei hege prestaasjes meitsje kinne foar wurkjen ûnder swiere netwurkbelêsting.

Boarne: opennet.ru

Add a comment