Esitelty Aya-kirjasto eBPF-käsittelijöiden luomiseen Rustissa

Aya-kirjaston ensimmäinen julkaisu esitellään, jonka avulla voit luoda Rust-kielellä eBPF-käsittelijöitä, jotka toimivat Linux-ytimen sisällä erityisessä virtuaalikoneessa JIT:llä. Toisin kuin muut eBPF-kehitystyökalut, Aya ei käytä libbpf:tä ja bcc-kääntäjää, vaan tarjoaa sen sijaan oman Rust-kielellä kirjoitetun toteutuksen, joka käyttää libc crate -pakettia päästäkseen suoraan ytimen järjestelmäkutsuihin. Ayan rakentaminen ei vaadi C-kielen työkaluja tai ytimen otsikkotiedostoja. Kirjastokoodia jaetaan MIT- ja Apache 2.0 -lisensseillä.

Tärkeimmät ominaisuudet:

  • Tuki BTF:lle (BPF Type Format), joka tarjoaa tyyppitiedot BPF-pseudokoodissa tyypin tarkistamista ja nykyisen ytimen tarjoamien tyyppien yhdistämistä varten. BTF:n käyttö mahdollistaa universaalien eBPF-käsittelijöiden luomisen, joita voidaan käyttää ilman uudelleenkääntämistä Linux-ytimen eri versioiden kanssa.
  • Tuki "bpf-to-bpf" -kutsuille, globaaleille muuttujille ja alustusohjelmille, jonka avulla voit suunnitella ohjelmia eBPF:lle samalla tavalla kuin tavalliset ohjelmat, jotka käyttävät ayaa ajonaikana, joka määrittelee toiminnot uudelleen ottaen huomioon eBPF:n työn.
  • Tuki eri ydintyypeille, mukaan lukien tavalliset taulukot, hajautuskartat, pinot, jonot, pinojäljet ​​sekä socket- ja suorituskyvyn seurantarakenteet.
  • Kyky luoda erilaisia ​​eBTF-ohjelmia, mukaan lukien liikenteen suodatus- ja hallintaohjelmat, cgroup-käsittelijät ja erilaiset socket-toiminnot, XDP-ohjelmat.
  • Tuki alustoille asynkroniseen pyyntöjen käsittelyyn ei-estotilassa tokio ja async-std.
  • Nopea kokoonpano ilman yhteyttä ydinkokoonpanoon ja ytimen otsikkotiedostoihin.

Projektia pidetään edelleen kokeellisena - API ei ole vielä vakiintunut ja kehittyy edelleen. Myöskään kaikkia suunniteltuja mahdollisuuksia ei ole vielä toteutunut. Vuoden loppuun mennessä kehittäjät odottavat saavansa Ayan toiminnallisuuden tasavertaiseksi libbpf:n kanssa ja tammikuussa 2022 luovansa ensimmäisen vakaan julkaisun. Suunnitelmissa on myös yhdistää ne Ayan osat, joita tarvitaan Rust-koodin kirjoittamiseen Linux-ytimelle, käyttäjätilan komponentteihin, joita käytetään eBPF-ohjelmien lataamiseen, liittämiseen ja vuorovaikutukseen niiden kanssa.

Muistetaan, että eBPF on Linux-ytimeen sisäänrakennettu tavukooditulkki, jonka avulla voit luoda verkkotoimintojen käsittelijöitä, valvoa järjestelmän toimintaa, siepata järjestelmäkutsuja, hallita pääsyä, käsitellä tapahtumia ajoitusta säilyttäen, laskea toimintojen tiheyttä ja aikaa, suorittaa jäljitys käyttämällä kprobes/uprobes/tracepoints. JIT-käännöksen käytön ansiosta tavukoodi käännetään lennossa konekäskyiksi ja suoritetaan natiivikoodin suorituskyvyllä. XDP tarjoaa työkaluja BPF-ohjelmien suorittamiseen verkkoajuritasolla sekä mahdollisuuden käyttää suoraan DMA-pakettipuskuria, jonka avulla voit luoda tehokkaita prosessoreita työskentelemään raskaan verkon kuormituksen alla.

Lähde: opennet.ru

Lisää kommentti