Ang librarya sa Aya alang sa paghimo sa mga tigdumala sa eBPF sa Rust gipaila

Gipresentar ang unang pagpagawas sa librarya sa Aya, nga nagtugot kanimo sa paghimo sa mga tigdumala sa eBPF sa Rust nga pinulongan nga nagdagan sulod sa Linux kernel sa usa ka espesyal nga virtual machine nga adunay JIT. Dili sama sa uban nga mga himan sa pagpalambo sa eBPF, si Aya wala mogamit sa libbpf ug sa bcc compiler, apan sa baylo nagtanyag sa kaugalingon nga pagpatuman nga gisulat sa Rust, nga naggamit sa libc crate package aron direktang ma-access ang mga tawag sa kernel system. Ang pagtukod sa Aya wala magkinahanglan og C language tooling o kernel header files. Ang code sa librarya giapod-apod ubos sa MIT ug Apache 2.0 nga mga lisensya.

Pangunang mga bahin:

  • Suporta para sa BTF (BPF Type Format), nga naghatag ug type nga impormasyon sa BPF pseudocode para sa type checking ug mapping sa mga tipo nga gihatag sa kasamtangang kernel. Ang paggamit sa BTF nagpaposible sa paghimo sa unibersal nga mga tigdumala sa eBPF nga magamit nga wala’y pag-recompilation sa lainlaing mga bersyon sa Linux kernel.
  • Suporta alang sa "bpf-to-bpf" nga mga tawag, global variables ug initializers, nga nagtugot kanimo sa pagdesinyo sa mga programa alang sa eBPF sa susama nga paagi sa regular nga mga programa nga naggamit ug aya isip usa ka runtime nga nag-redefine sa mga function nga gikonsiderar ang trabaho sa eBPF.
  • Suporta alang sa lain-laing matang sa kernel, lakip na ang regular nga mga arrays, hash maps, stack, queues, stack traces, ingon man socket ug performance tracking structures.
  • Abilidad sa paghimo sa lain-laing mga matang sa mga programa sa eBTF, lakip na ang mga programa alang sa pagsala ug pagdumala sa trapiko, cgroup handler ug lain-laing mga operasyon sa socket, XDP nga mga programa.
  • Suporta alang sa mga plataporma alang sa asynchronous nga pagproseso sa hangyo sa non-blocking mode tokio ug async-std.
  • Paspas nga asembliya, nga walay koneksyon sa kernel assembly ug kernel header files.

Ang proyekto giisip gihapon nga eksperimento - ang API wala pa mapalig-on ug nagpadayon sa pag-uswag. Dugang pa, ang tanan nga giplano nga mga oportunidad wala pa matuman. Sa katapusan sa tuig, ang mga developers gilauman nga dad-on ang functionality sa Aya sa parity sa libbpf, ug sa Enero 2022 sa paghimo sa unang stable release. Adunay usab mga plano sa paghiusa sa mga bahin sa Aya nga gikinahanglan sa pagsulat Rust code alang sa Linux kernel uban sa user-space component nga gigamit sa load, attach, ug pakig-uban sa mga programa sa eBPF.

Atong hinumdoman nga ang eBPF usa ka bytecode interpreter nga gitukod sa Linux kernel, nga nagtugot kanimo sa paghimo sa mga tigdumala sa operasyon sa network, pagmonitor sa operasyon sa sistema, pag-intercept sa mga tawag sa sistema, pagkontrol sa pag-access, pagproseso sa mga panghitabo samtang nagmintinar sa timing, pagkalkulo sa frequency ug oras sa mga operasyon, paghimo pagsubay gamit ang kprobes/uprobes/tracepoints. Salamat sa paggamit sa JIT compilation, ang bytecode gihubad sa langaw ngadto sa mga instruksyon sa makina ug gipatuman uban sa paghimo sa lumad nga code. Naghatag ang XDP og mga himan alang sa pagpadagan sa mga programa sa BPF sa lebel sa drayber sa network, nga adunay katakus nga direktang ma-access ang DMA packet buffer, nga nagtugot kanimo sa paghimo og mga high-performance nga mga processor alang sa pagtrabaho ubos sa bug-at nga load sa network.

Source: opennet.ru

Idugang sa usa ka comment