Introduċiet il-librerija Aya għall-ħolqien ta 'handlers eBPF f'Rut

L-ewwel rilaxx tal-librerija Aya hija ppreżentata, li tippermettilek toħloq handlers eBPF fil-lingwa Rust li jimxu ġewwa l-qalba tal-Linux f'magna virtwali speċjali b'JIT. B'differenza għodod oħra ta 'żvilupp eBPF, Aya ma tużax libbpf u l-kompilatur bcc, iżda minflok toffri l-implimentazzjoni tagħha stess miktuba b'Rud, li juża l-pakkett libc crate biex jaċċessa direttament is-sejħiet tas-sistema tal-kernel. Bini Aya ma jeħtieġx għodda tal-lingwa C jew fajls tal-header tal-kernel. Il-kodiċi tal-librerija huwa mqassam taħt il-liċenzji MIT u Apache 2.0.

Karatteristiċi ewlenin:

  • Appoġġ għal BTF (BPF Type Format), li jipprovdi informazzjoni tat-tip fil-psewdocode BPF għall-iċċekkjar tat-tip u l-immappjar għal tipi pprovduti mill-kernel attwali. L-użu ta 'BTF jagħmilha possibbli li jinħolqu handlers eBPF universali li jistgħu jintużaw mingħajr rikompilazzjoni ma' verżjonijiet differenti tal-kernel Linux.
  • Appoġġ għal sejħiet "bpf-to-bpf", varjabbli globali u initializers, li jippermettilek tfassal programmi għall-eBPF b'mod simili għal programmi regolari li jużaw aya bħala runtime li tiddefinixxi mill-ġdid il-funzjonijiet b'kont meħud tax-xogħol fl-eBPF.
  • Appoġġ għal diversi tipi ta 'kernel, inklużi arrays regolari, mapep ta' hashes, munzelli, kjuwijiet, traċċi ta 'munzell, kif ukoll strutturi ta' traċċar ta 'sockets u prestazzjoni.
  • Kapaċità li toħloq diversi tipi ta 'programmi eBTF, inklużi programmi għall-iffiltrar u l-ġestjoni tat-traffiku, cgroup handlers u diversi operazzjonijiet ta' socket, programmi XDP.
  • Appoġġ għal pjattaformi għall-ipproċessar asinkroniku tat-talbiet fil-modalità mhux imblukkata tokio u async-std.
  • Assemblaġġ veloċi, mingħajr ebda konnessjoni mal-assemblaġġ tal-qalba u l-fajls tal-header tal-qalba.

Il-proġett għadu meqjus bħala sperimentali - l-API għadha ma ġietx stabbilizzata u qed tkompli tiżviluppa. Ukoll, l-opportunitajiet ippjanati kollha għadhom ma ġewx realizzati. Sal-aħħar tas-sena, l-iżviluppaturi jistennew li jġibu l-funzjonalità ta 'Aya għal parità ma' libbpf, u f'Jannar 2022 biex joħolqu l-ewwel rilaxx stabbli. Hemm ukoll pjanijiet biex jgħaqqdu l-partijiet ta 'Aya meħtieġa biex tikteb il-kodiċi Rust għall-qalba tal-Linux mal-komponenti tal-ispazju tal-utent użati biex jgħabbi, iwaħħlu, u jinteraġixxu ma' programmi eBPF.

Ejja nfakkru li eBPF huwa interpretu tal-bytecode mibni fil-kernel tal-Linux, li jippermettilek toħloq handlers tal-operat tan-netwerk, timmonitorja l-operat tas-sistema, interċetta sejħiet tas-sistema, tikkontrolla l-aċċess, tipproċessa l-avvenimenti filwaqt li żżomm il-ħin, tikkalkula l-frekwenza u l-ħin tal-operazzjonijiet, twettaq traċċar bl-użu ta 'kprobes/uprobes/tracepoints. Grazzi għall-użu tal-kumpilazzjoni JIT, bytecode jiġi tradott fuq il-fly f'struzzjonijiet tal-magni u esegwit bil-prestazzjoni tal-kodiċi nattiv. XDP jipprovdi għodod għat-tħaddim ta 'programmi BPF fil-livell tas-sewwieq tan-netwerk, bil-kapaċità li taċċessa direttament il-buffer tal-pakkett DMA, li jippermettilek toħloq proċessuri ta' prestazzjoni għolja biex taħdem taħt tagħbija qawwija tan-netwerk.

Sors: opennet.ru

Żid kumment