Ces cinq dernières années, Microsoft, qui, au début de ce millénaire, voyait encore Linux comme le cancer de l'industrie informatique, s'est littéralement transformé en un fan incontesté du noyau, et parallèlement un grand adepte de l'open source. Avec WSL, il a ouvert la voie à plusieurs applications sur Windows, en permettant aux administrateurs système et aux programmeurs d'utiliser des outils et services Linux directement depuis Windows sans avoir à virtualiser quoi que ce soit d'autre ou monter des infrastructures complexes. WSL 2 est entièrement intégré à Windows, de sorte que les deux systèmes peuvent interagir l'un avec l'autre.
Désormais, Microsoft choisit d'ajouter eBPF à Windows. eBPF est une technologie bien connue pour sa programmabilité et son agilité, en particulier pour l'extension du noyau d'un système d'exploitation, pour des cas d'utilisation tels que la protection contre les attaques de type DoS et l'observabilité. C'est une machine virtuelle à base de registres conçue pour fonctionner sur une architecture RISC 64 bits personnalisée via une compilation JIT dans le noyau Linux. En tant que tels, les programmes eBPF sont particulièrement bien adaptés au débogage et à l'analyse du système, comme le suivi des appels du système de fichiers et du registre.
La relation d'eBPF avec le noyau Linux a été comparée à la relation de JavaScript avec les pages Web, il permet de modifier le comportement du noyau Linux en chargeant un programme eBPF qui est exécuté, et ce sans modifier le code source du noyau ou charger un module du noyau. eBPF représente l'une des plus grandes innovations du noyau Linux de la dernière décennie. Et comme l'adaptation de la technologie à d'autres systèmes d'exploitation a suscité un certain intérêt, Microsoft a décidé de donner une chance au logiciel sous Windows. Le projet, baptisé ebpf-for-windows, est open source et est disponible sur GitHub.
« Le projet ebpf-for-windows vise à permettre aux développeurs d'utiliser les chaînes d'outils et les interfaces de programmation d'applications (API) familières d'eBPF sur les versions existantes de Windows », ont expliqué dans un billet de blogue lundi Dave Thaler, ingénieur logiciel partenaire chez Microsoft, et Poorna Gaddehosur, ingénieur logiciel principal chez Microsoft. « S'appuyant sur le travail des autres, ce projet prend plusieurs projets open source eBPF existants et ajoute la couche intermédiaire pour les faire fonctionner au-dessus de Windows ». L'entreprise n'appelle pas cela un fork d'eBPF.
De ce fait, les développeurs Windows pourront utiliser des outils tels que clang pour générer le bytecode eBPF à partir du code source qui peut être inséré dans n'importe quelle application ou utilisé avec la ligne de commande netsh de Windows. Selon l'entreprise, cela se fait via une bibliothèque partagée qui utilise les API Libbpf. La bibliothèque fait passer le bytecode eBPF par le vérificateur statique PREVAIL dans un environnement de sécurité Windows qui permet à un composant du noyau de faire confiance à un démon en mode utilisateur signé avec une clé de confiance. Le bytecode approuvé peut alors être exécuté
Les ingénieurs de Microsoft affirment que le projet vise à offrir la compatibilité du code eBPF en utilisant des crochets et des aides qui existent à la fois sur Linux et Windows. « Linux fournit de nombreux hooks et helpers, dont certains sont très spécifiques à Linux (utilisation de structures de données internes à Linux, par exemple) qui ne seraient pas applicables à d'autres plateformes », ont-ils déclaré.
« D'autres hooks et helpers sont applicables de manière générique, et l'intention est de les prendre en charge pour les programmes eBPF », ont-ils ajouté. Jusqu'à présent, deux hooks – XDP et socket bind – ont été ajoutés pour gérer les événements et communiquer avec les API d'aide mises à disposition par la couche eBPF qui enveloppe les API publiques du noyau Windows. L'équipe estime qu'il y en aura d'autres avec le temps.
Sources : Annonce de Microsoft, Référentiel GitHub du projet
Et vous ?
Que pensez-vous du projet ebpf-for-windows ?
Voir aussi
Premières impressions sur WSL 2 : 13 fois plus rapide que WSL 1 et introduit une nouvelle ère pour le développement Web sous Windows, selon un développeur
Build 2020 : DirectX arrive sur le sous-système Windows pour Linux, Microsoft apporte les API DxCore, D3D12 et DirectML à Linux lors de l'exécution en WSL
Microsoft publie la version 0.9 de Rust for Windows, avec un support complet de l'API Windows et une prise en charge plus naturelle et idiomatique des interfaces COM
Windows 10 "Sun Valley" supprime les icônes de l'ère Windows 95, mais les résultats sont plus subtils que ce que l'on pourrait attendre d'une mise à jour visuelle vieille de plus de 25 ans