De temps à autre, une technologie prometteuse atteint un point d’inflexion où les besoins réels des entreprises rejoignent ses points forts. Elle devient alors non seulement envisageable, mais aussi concrètement exploitable. Berkeley Packet Filter (BPF) a récemment atteint ce stade auprès des développeurs Linux. BPF constitue un point d’interception et de traitement extrêmement efficace sur un hôte Linux, et devrait s’étendre aux serveurs Windows dans un avenir proche. La quantité de données disponibles est considérable et contribue directement à la visibilité sur l’ensemble de la pile pour les tâches opérationnelles d’ingénierie de la fiabilité des sites (SRE). Cette technologie se prête également tout naturellement à la résolution des problématiques liées à la sécurité et à la gestion du trafic. La gamme de points d’accroche est tout aussi vaste et offre aux applications BPF un éventail intéressant de points de déclenchement utiles aux spécialistes de l’observabilité, de la sécurité et des réseaux. BPF est la technologie idéale pour assurer l’observabilité sans se ruiner. Et tout commence par l’observabilité.
La conception fondamentale de BPF en fait une méthode de calcul quasiment aussi efficace que possible (en dollars par watt). Mieux encore, les chaînes d’outils génèrent le bytecode à votre place, ce qui vous permet de vous concentrer sur le résultat souhaité plutôt que sur une programmation de bas niveau de type langage assembleur. Comment ? BPF se distingue grâce à ces deux caractéristiques de conception :
Conception du jeu d’instructions
La conception logicielle de BPF s’est délibérément inspirée de celle des architectures de processeurs modernes alors émergentes. La terminologie propre aux processeurs est d’ailleurs utilisée, car elle décrit avec précision les éléments de BPF et leur utilisation. BPF dispose de registres et d’instructions, conçus pour être directement traités par les processeurs. Fondé sur la conception du BSD Packet Filter (1992), BPF est une machine de filtrage de capture de paquets repensée pour mieux s’adapter aux architectures actuelles de processeurs à registres. Cette conception a naturellement bénéficié d’un nouvel élan en 2014, lorsque l’« Enhanced Berkeley Packet Filter », ou eBPF, a été intégré à la version v3.18 du noyau Linux. Dans les premières années suivant sa sortie, il était important de distinguer eBPF du Classic Berkeley Packet Filter (cBPF). Aujourd’hui, cette distinction est moins essentielle, puisque toutes les versions prises en charge du noyau intègrent les améliorations apportées en 2014. Celles-ci méritent néanmoins d’être mentionnées : des registres plus larges (le passage de 32 à 64 bits permet d’effectuer davantage de travail par ligne de cache ou cycle d’horloge), des registres plus nombreux (le passage de 2 à 10 permet une correspondance plus directe avec les registres des processeurs modernes et les ABI du noyau), ainsi que plusieurs améliorations supplémentaires du jeu d’instructions qui rendent les programmes BPF plus sûrs et plus utiles.
Couche liaison
BPF se compose d’une sonde réseau et d’un filtre de paquets. La sonde intervient au niveau de la couche liaison de données lorsque les paquets arrivent par le réseau sur une interface donnée. Elle copie les paquets afin que le filtre puisse les analyser. Ce point d’insertion lui offre une visibilité complète sur le chemin réseau de l’hôte Linux. Pour le trafic entrant, il se situe avant que le processeur de l’hôte ne commence à le traiter ; pour le trafic sortant, juste avant que les paquets ne soient transmis sur le réseau pour quitter l’hôte. Ce schéma montre l’interception par BPF du chemin des paquets entrants au niveau de la couche liaison de données.

La vaste gamme de données disponibles contribue directement à une visibilité complète sur l’ensemble de la pile pour les tâches opérationnelles SRE. Dans cet exemple, nous nous concentrons sur certains des champs les plus couramment utilisés de l’en-tête IPv4.

À partir de ces données, il est possible de définir des stratégies afin de personnaliser le filtrage des paquets. La stratégie suivante filtre les paquets TCP destinés à une adresse IP de destination spécifique.
L’utilisation d’eBPF à des fins d’observabilité offre un avantage « deux pour le prix d’un » : les données recueillies peuvent servir à d’autres usages que l’observation, par exemple au routage du trafic ou à la sécurité.
Pour revenir au jeu de données que nous avons présenté précédemment, certains éléments utilisés pour observer le chemin du trafic entrant sur un hôte Linux peuvent également servir à d’autres fins. Par exemple, l’adresse IP source, l’adresse IP de destination, l’hôte de destination et le port sont utiles aussi bien pour acheminer le trafic entrant que pour en limiter l’accès.
Quel que soit l’usage, tout commence par la copie du paquet effectuée par le point de capture BPF. Une fois la copie réalisée, les données peuvent être placées en mémoire (pour en savoir plus, consultez les maps BPF), puis exportées sous forme de flux de télémétrie, tout en étant exploitées simultanément par d’autres programmes BPF qui définissent des règles et des actions de filtrage. C’est à ce stade que l’observabilité se décline en gestion du trafic et en sécurité. Pour tirer parti de l’extrême efficacité de BPF, il faut commencer par déterminer clairement quelles données sont nécessaires et comment elles seront utilisées. Dans le prochain article de cette série, mon collègue Muhammad Waseem Sarwar examinera les différentes possibilités de programmation BPF à divers endroits de la pile réseau Linux.
À propos de l’auteur

Articles de blog associés

Pourquoi devriez-vous vous intéresser à WebAssembly ?
WebAssembly (Wasm) est un jeu d’instructions binaires portable, rapide et sécurisé, qui permet d’exécuter des applications hautes performances sur n’importe quelle plateforme.
Trois choses à savoir sur les applications d’IA
Les applications d’IA sont des applications modernes, mais elles présentent certaines particularités. Découvrez les points essentiels à connaître sur les applications basées sur l’IA.
État des lieux de la stratégie applicative 2022 : il est temps de moderniser les opérations
Il est devenu évident que, pour maintenir la dynamique de leur transformation numérique, les organisations doivent recentrer leurs efforts sur les fonctions métier. Si les expériences destinées aux clients restent prioritaires, il est également indispensable de permettre la numérisation de fonctions telles que les services juridiques, les ressources humaines et la finance. Les DSI prennent donc les commandes, tandis que la transformation numérique passe de la modernisation des applications à celle des opérations.
Clouds multiples ou multicloud : faciliter la transition
La gestion et la sécurisation des charges de travail deviennent complexes à mesure que les entreprises adoptent une stratégie de cloud connecté. Découvrez comment F5 répond au besoin d’une nouvelle approche de la mise en réseau multicloud.
L’expérience client dépend de la visibilité
Une enquête menée par Dimensional Research auprès de plus de 3 000 utilisateurs d’applications mobiles a confirmé ce que beaucoup d’entre nous pensent des attentes actuelles des clients.
Transformation numérique et explosion du portefeuille d’applications
La transformation numérique stimule la croissance des portefeuilles d’applications et modifie la manière dont celles-ci sont développées, déployées, intégrées et, en définitive, utilisées.