Présentation de la bibliothèque Aya pour créer des gestionnaires eBPF en Rust

Le premier module de la bibliothèque Aya a été présenté, permettant de créer des gestionnaires eBPF en Rust, exécutés dans un noyau Linux au sein d'une machine virtuelle spéciale avec JIT. Contrairement à d'autres outils de développement de programmes eBPF, Aya ne s'appuie pas sur libbpf et le compilateur bcc, mais propose sa propre implémentation, écrite en Rust, qui utilise le paquet crate libc pour un accès direct aux appels système du noyau. Aucun outil de développement C et aucun fichier d'en-tête du noyau ne sont nécessaires pour compiler Aya. Le code de la bibliothèque est distribué sous les licences MIT et Apache 2.0.

Fonctionnalités principales :

  • Prise en charge du format BTF (BPF Type Format), qui fournit des informations de type dans du pseudocode BPF pour la vérification de types et la correspondance avec les types fournis par le noyau actuel. L'utilisation de BTF permet de créer des gestionnaires eBPF universels pouvant être utilisés sans recompilation avec différentes versions du noyau Linux.
  • Support des appels « bpf-to-bpf », des variables globales et des initialiseurs, ce qui permet de formuler des programmes eBPF de manière similaire aux programmes ordinaires, utilisant Aya comme runtime, redéfinissant les fonctions en tenant compte du fonctionnement en eBPF.
  • Prise en charge de divers types de noyaux, notamment des tableaux ordinaires, des hachages (hash map), des piles, des files d'attente, des traçages de pile, ainsi que des structures pour les sockets et le suivi des performances.
  • Possibilité de créer divers types de programmes eBTF, y compris des programmes pour le filtrage et la gestion du trafic, des gestionnaires de cgroup et diverses opérations sur les sockets, des programmes XDP.
  • Prise en charge des plateformes pour le traitement asynchrone des requêtes en mode non-bloquant tokio et async-std.
  • Compilation rapide, sans dépendance à la compilation du noyau et aux fichiers d'en-tête du noyau.

Le projet est encore considéré comme expérimental - l'API n'est pas encore stabilisée et continue d'évoluer. De plus, toutes les fonctionnalités envisagées ne sont pas encore mises en œuvre. D'ici la fin de l'année, les développeurs espèrent amener la fonctionnalité d'Aya au parité avec libbpf, et en janvier 2022, former le premier release stable. Il est également prévu de combiner des parties d'Aya nécessaires pour écrire du code en Rust pour le noyau Linux avec des composants fonctionnant dans l'espace utilisateur et utilisés pour charger, attacher et interagir avec des programmes eBPF.

Rappelons que l'eBPF est un interpréteur de bytecode intégré au noyau Linux, permettant de créer des gestionnaires d'opérations réseau, de surveiller le fonctionnement des systèmes, d'intercepter des appels système, de contrôler l'accès, de traiter des événements tout en conservant le chronométrage, de compter la fréquence et le temps d'exécution des opérations, d'effectuer des traces à l'aide de kprobes/uprobes/tracepoints. Grâce à l'utilisation de la compilation JIT, le bytecode est traduit à la volée en instructions machine et exécuté avec la performance d'un code natif. XDP fournit des moyens pour exécuter des programmes BPF au niveau du pilote réseau, offrant un accès direct au buffer DMA des paquets, ce qui permet de créer des gestionnaires à haute performance pour fonctionner dans des conditions de charge réseau élevée.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster