Ieviesta Aya bibliotēka eBPF apstrādātāju izveidei Rust

Tiek prezentēts pirmais Aya bibliotēkas laidiens, kas ļauj izveidot eBPF apdarinātājus Rust valodā, kas darbojas Linux kodola iekšpusē īpašā virtuālajā mašīnā ar JIT. Atšķirībā no citiem eBPF izstrādes rīkiem, Aya neizmanto libbpf un bcc kompilatoru, bet tā vietā piedāvā savu Rust valodā rakstītu ieviešanu, kas izmanto libc crate pakotni, lai tieši piekļūtu kodola sistēmas izsaukumiem. Aya izveidei nav nepieciešami C valodas rīki vai kodola galvenes faili. Bibliotēkas kods tiek izplatīts saskaņā ar MIT un Apache 2.0 licencēm.

Galvenās iezīmes:

  • Atbalsts BTF (BPF tipa formātam), kas nodrošina tipa informāciju BPF pseidokodā tipa pārbaudei un kartēšanai ar pašreizējā kodola nodrošinātajiem tipiem. BTF izmantošana ļauj izveidot universālus eBPF apdarinātājus, kurus var izmantot bez pārkompilācijas ar dažādām Linux kodola versijām.
  • Atbalsts “bpf-to-bpf” zvaniem, globālajiem mainīgajiem un inicializatoriem, kas ļauj izstrādāt programmas eBPF līdzīgi kā parastajām programmām, kas izmanto aya kā izpildlaiku, kas pārdefinē funkcijas, ņemot vērā darbu eBPF.
  • Atbalsts dažādiem kodola tipiem, tostarp parastajiem masīviem, jaucējkartēm, skursteņiem, rindām, steku pēdām, kā arī ligzdu un veiktspējas izsekošanas struktūrām.
  • Iespēja izveidot dažāda veida eBTF programmas, tai skaitā trafika filtrēšanas un pārvaldības programmas, cgroup apdarinātājus un dažādas ligzdas operācijas, XDP programmas.
  • Atbalsts platformām asinhronai pieprasījumu apstrādei nebloķējošā režīmā tokio un async-std.
  • Ātra montāža bez savienojuma ar kodola komplektu un kodola galvenes failiem.

Projekts joprojām tiek uzskatīts par eksperimentālu - API vēl nav stabilizējies un turpina attīstīties. Tāpat visas plānotās iespējas vēl nav realizētas. Līdz gada beigām izstrādātāji plāno līdzināties Aya funkcionalitātei ar libbpf un 2022. gada janvārī izveidot pirmo stabilo versiju. Ir arī plānots apvienot Aya daļas, kas nepieciešamas, lai rakstītu Rust kodu Linux kodolam, ar lietotāja telpas komponentiem, ko izmanto eBPF programmu ielādei, pievienošanai un mijiedarbībai ar tām.

Atgādināsim, ka eBPF ir Linux kodolā iebūvēts baitkoda tulks, kas ļauj izveidot tīkla operāciju apdarinātājus, pārraudzīt sistēmas darbību, pārtvert sistēmas zvanus, kontrolēt piekļuvi, apstrādāt notikumus, saglabājot laiku, aprēķināt operāciju biežumu un laiku, veikt izsekošana, izmantojot kprobes/uprobes/tracepoints. Pateicoties JIT kompilācijas izmantošanai, baitkods tiek nekavējoties pārtulkots mašīnas instrukcijās un izpildīts ar vietējā koda veiktspēju. XDP nodrošina rīkus BPF programmu palaišanai tīkla draivera līmenī ar iespēju tieši piekļūt DMA pakešu buferim, kas ļauj izveidot augstas veiktspējas procesorus darbam ar lielu tīkla slodzi.

Avots: opennet.ru

Pievieno komentāru