Aya, la première librairie à créer des contrôleurs eBPF en Rust

Linus Torvalds ainsi que de nombreux développeurs Noyau et différentes distributions ont exprimé leur appréciation de Rust et même à plus d'une occasion la question de l'implémentation de pilotes dans ce langage de programmation sur le noyau Linux a été présentée.

Et à ce sujet, divers ouvrages sont déjà sortis, dont nous en avons déjà parlé ici sur le blog et on peut citer, par exemple, expérience réussi à partir de l'ensemble alternatif d'utilitaires, coreutils, réécrit en Rust (Cela inclut des utilitaires tels que sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln et ls).

Compte tenu de cela, Linus torvalds n'a pas entièrement donné son point de vue en faveur de cette initiative et a exprimé les points négatifs (vous pouvez consulter les détails Dans le lien suivant.)

Malgré les critiques sévères de Linus, les travaux sur la mise en œuvre Rust in the Kernel n'a pas cessé d'avancer et récemment la première version de la bibliothèque Aya a été présentée, qui vous permet de créer des pilotes eBPF dans Rust qui s'exécutent dans le noyau Linux dans une machine virtuelle JIT spéciale.

Contrairement aux autres outils de développement EBPF, Aya n'utilise pas libbpf et le compilateur BCCmais propose sa propre implémentation écrite en Rust qui utilise le package de tiroir libc pour accéder directement aux appels système du noyau. La construction d'Aya ne nécessite pas d'outils de langage C ou d'en-têtes de noyau.

C'est pour qui ne connaissent pas eBPF, ils doivent savoir qu'il s'agit d'un interpréteur de bytecode intégré au noyau Linux qui vous permet de créer des gestionnaires d'opérations réseau, de surveiller le fonctionnement du système, d'intercepter les appels système, de contrôler l'accès, de traiter les événements avec la synchronisation, de calculer la fréquence et l'heure des opérations et de suivre à l'aide de kprobes/uprobes/tracepoints.

Grâce à la compilation JIT, le bytecode est traduit en instructions machine à la volée et il fonctionne avec les performances du code natif. XDP fournit un moyen d'exécuter des programmes BPF au niveau du pilote réseau, avec un accès direct au tampon de paquets DMA, vous permettant de créer des pilotes hautes performances pour des conditions de charge réseau élevées.

À propos d'Aya

Parmi les principales caractéristiques mentionnées d'Aya, nous pouvons trouver que a le soutien de BTF (format de type BPF), qui fournit des informations de type dans le pseudocode BPF pour vérifier et comparer les types fournis par le noyau actuel. L'utilisation de BTF permet de créer des pilotes eBPF universels qui peuvent être utilisés sans avoir à les recompiler avec différentes versions du noyau Linux.

Aussi bien que prise en charge des appels bpf à bpf, variables globales et initialiseurs, qui permet de concevoir des programmes pour eBPF par analogie avec des programmes classiques utilisant aya comme temps d'exécution, en annulant les fonctions prenant en compte le travail en eBPF.

D'autre part, il a également le prise en charge des types de noyau internes, y compris les tableaux réguliers, les cartes de hachage, les piles, les files d'attente, les traces de pile et les structures pour les sockets et le suivi des performances.

Aussi a la capacité de créer différents types de programmes eBTF, y compris des programmes de filtrage et de gestion du trafic, des groupes de contrôle et divers pilotes de socket, des programmes XDP, ainsi que la prise en charge de la plate-forme pour le traitement des demandes asynchrones en mode tokyo et async-std.
Compilation rapide, sans être lié à la compilation du noyau ou aux en-têtes du noyau.

Il est important de mentionner que le projet est toujours considéré comme expérimental car l'API n'est pas encore stabilisé et continue d'évoluer. De plus, toutes les fonctions conçues n'ont pas encore été implémentées.

D'ici la fin de l'année, les développeurs espèrent amener les fonctionnalités d'Aya à égalité avec libbpf et en janvier 2022 forment la première version stable. Il est également prévu de combiner les parties Aya nécessaires à l'écriture du code Rust pour le noyau Linux avec les composants de l'espace utilisateur utilisés pour charger, attacher et interagir avec les programmes eBPF.

Enfin si vous souhaitez en savoir plus à ce sujet, vous pouvez vérifiez les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.