XDP (ou Express Data Path) est un utilitaire réseau disponible dans le noyau Linux. XDP est utilisé dans de nombreuses entreprises populaires pour résoudre certains problèmes de réseau sérieux auxquels elles sont confrontées tout en traitant des millions de requêtes par seconde. Il s’agit d’un programme open source sous licence MIT fusionné dans le noyau Linux à partir de la version 4.8.

XDP est un processeur de paquets de données réseau performant et programmable. Il existe pour atténuer certains problèmes graves côté serveur tels que les attaques DDoS (Distributed Denial-of-Service) ou en tant qu’équilibreur de charge.

Besoin de XDP

Le besoin d’un chemin de données réseau performant est toujours une fonctionnalité requise pour les serveurs Linux. Mais la programmabilité de ces chemins de données devrait également être là pour que les développeurs en fassent quelque chose d’utilisable. Bien que XDP ait un chemin d’apprentissage assez raide, en raison du développement récent de nombreux outils et frameworks, l’écriture de code XDP est assez accessible de nos jours.

L’énorme avantage de XDP est sa vitesse. La fonctionnalité principale de XDP est que les développeurs peuvent créer de nouvelles fonctionnalités pour filtrer les packages sans modifier le noyau lui-même.

Il existe certains scénarios dans lesquels un paquet n’a pas besoin de parcourir l’ensemble de la pile réseau pour décider simplement de transférer ou de supprimer le paquet. Cela devrait être fait sur la première couche de la pile réseau en plaçant des filtres. Ces filtres doivent être programmés de telle sorte qu’ils puissent facilement reconnaître un paquet malveillant et le déposer juste au début de la pile. Cela peut économiser beaucoup de temps et de puissance de traitement.

Avec XDP, cette filtration est possible juste à l’avant de la pile réseau.

Désormais, en utilisant XDP, le développeur peut filtrer tous les paquets pouvant être envoyés par un pirate informatique pour effectuer une attaque DDoS. Cela peut réduire une grande partie de la surcharge dans la pile réseau normale du noyau. Cette fonctionnalité a été récemment démontrée par Cloudflare dans sa démonstration de protection DDoS.

Xdp 1

Certaines fonctionnalités notables de XDP sont les suivantes :

  1. Il ne nécessite aucun matériel spécialisé : XDP peut exécuter n’importe quel matériel que vous lui lancez. Oui, la vitesse peut être compromise si vous ne disposez pas du périphérique optimisé ou de ses pilotes, mais à des fins de test, vous n’avez pas besoin de matériel spécialisé.
  2. Il ne nécessite pas de contournement du noyau : XDP s’exécute avant que le paquet n’atteigne la pile réseau du noyau. Une fonction de rappel est déclenchée lorsqu’un paquet est reçu et XDP le traite aussi rapidement que possible.
  3. Il ne remplace pas la pile TCP/IP : XDP est présent au niveau le plus bas de la pile réseau. Lorsqu’il passe le paquet, le paquet entre dans la pile réseau normale du noyau qui inclut la pile TCP/IP.
  4. Il fonctionne en conjonction avec TCP/IP avec toutes les fonctionnalités BPF (Berkeley Packet Filter) : XDP ne remplace rien. Il utilise même eBPF pour traiter les paquets et permettre au développeur d’écrire plus facilement du code.

Pourquoi XDP est très rapide

XDP est un chemin de données réseau programmable hautes performances basé sur eBPF dans le noyau Linux. Le gain de performances de XDP est dû au traitement des paquets sans système d’exploitation au niveau le plus bas de la pile logicielle. Cela signifie que le paquet de données provenant du réseau atteint le XDP en premier avant tout autre processus du noyau.

Par conséquent, les ingénieurs peuvent programmer le XDP pour l’optimiser pour divers cas d’utilisation. De la protection DDoS à l’équilibreur de charge.

XDP est chargé directement sur la pile réseau. Lorsqu’un paquet est reçu par la pile réseau, elle reçoit un rappel et traite les paquets aussi rapidement que possible. XDP peut supprimer 26 millions de paquets par seconde par cœur dans le matériel de base.

La principale raison pour laquelle XDP est très rapide est que l’utilisateur est autorisé à lire ou à modifier directement les données des paquets réseau et à prendre des décisions sur la manière de gérer le paquet à un stade précoce. Cela nécessite une charge de processus très inférieure et une meilleure vitesse qui en résulte.

Connecter la pile réseau avec XDP

Vous pouvez vous connecter à la mise en réseau avec XDP par divers moyens, mais je mentionne ici certaines méthodes populaires.

  1. XDP générique: Dans ce processus, XDP est chargé dans le noyau, mais obtient très peu d’avantages en termes de performances. C’est le moyen le plus simple d’exécuter un programme XDP sans aucune prise en charge par le matériel.
  2. XDP natif: XDP natif est chargé par le pilote réseau lui-même. Il nécessite le support du pilote de la carte réseau.

Types d’opérations effectuées par XDP

Certaines des opérations que XDP peut effectuer une fois qu’un paquet est reçu par l’interface réseau sont :

  1. XDP_DROP: Il supprime les paquets et ne les traite pas. Utilisation d’un programme eBPF pour analyser le modèle de trafic et peut supprimer des paquets en temps réel.
  2. XDP_PASS: Il transmet les paquets à la pile réseau pour un traitement ultérieur. Il peut modifier le contenu du paquet avant qu’il ne se produise.
  3. XDP_ABORTED: Il supprime le paquet de données réseau, laissant une exception de point de trace.
  4. XDP_TX: transmet les paquets à la même interface réseau qui les reçoit. Les paquets peuvent être modifiés sur non modifiés.
  5. XDP_REDIRECT: Redirigez le paquet vers un autre NIC (contrôleur d’interface réseau).
Xdp 2 1

XDP et eBPF

eBPF est la version étendue de Berkeley Packet Filter. C’est comme une machine virtuelle abstraite fonctionnant à l’intérieur du noyau Linux. eBPF est utilisé pour exécuter un programme défini par l’utilisateur dans un environnement sandbox dans le noyau Linux. Généralement, il est utilisé pour exécuter des outils de mise en réseau et de surveillance sur des serveurs Linux afin de garantir des performances optimales.

XDP est un framework utilisé pour écrire le traitement de paquets à très haute vitesse dans les applications BPF. Pour le rendre encore plus rapide, XDP exécute BPF immédiatement après la réception d’un paquet par la pile réseau.

XDP a une courbe d’apprentissage très raide. Par conséquent, les développeurs créent des outils et des frameworks pour faciliter la programmation à l’aide d’eBPF. Il facilite l’écriture de code pour traiter le traitement de réseau à très haute fréquence à l’aide de XDP et eBPF. Le principal avantage de XDP est qu’il ne vous oblige pas à modifier le noyau, ce qui était un énorme casse-tête pour les ingénieurs.

Mais comme les gens l’ont dit, un grand pouvoir s’accompagne d’une grande responsabilité. Comme XDP exécute eBPF le plus tôt possible avant que les paquets ne soient analysés par le noyau lui-même, les programmes eBPF doivent effectuer eux-mêmes toute l’analyse et ne peuvent pas compter sur le noyau pour faire quoi que ce soit à leur place.

En tant que programmeur, vous travaillez la plupart du temps avec un terminal. Ceci est un guide pour décorer l’invite de votre terminal. Vérifiez-le.

Cas d’utilisation courants de XDP et eBPF

  1. Attaque DDoS: Le principal cas d’utilisation de XDP est la protection DDoS (Distributed Denial of Service). Lors de l’attaque DDoS, l’attaquant essaie d’utiliser autant de ressources du serveur que possible en ne laissant aucun processus à l’utilisateur final. En utilisant XDP comme couche très rapide de la pile réseau, aucun coût de traitement n’est associé à la suppression d’un paquet de données réseau. Après le filtrage XDP, le paquet passe par toutes les autres méthodes de filtrage fournies par le noyau Linux.
  2. Équilibreur de charge: XDP est également utilisé comme équilibreur de charge pour gérer une énorme quantité de trafic vers le serveur. Y compris Facebook, de nombreuses entreprises technologiques géantes utilisent cette technologie. Auparavant, les ingénieurs utilisaient un serveur dédié comme équilibreur de charge. Ce qui est très difficile à gérer et doit très bien fonctionner pour servir des millions de clients. Mais imaginez utiliser la couche XDP comme équilibreur de charge sans serveur central, par conséquent, sans point de défaillance unique.
  3. Pare-feu: XDP avec eBPF peut être utilisé pour écrire diverses règles de pare-feu afin de protéger le système avec une surcharge très minime.

Questions fréquemment posées

Qu’est-ce que BCC est eBPF ?

BCC est basé sur eBPF. Il s’agit d’une boîte à outils ou d’un cadre pour les programmes de traçage et de manipulation du noyau qui est livré avec une interface de ligne de commande très utile. BCC aide à écrire l’instruction Kernal en C. Il inclut également un wrapper autour de LLVM.

Qu’est-ce que libBPF ?

LibBPF est un ensemble alternatif d’outils pour créer une application BPF. Il est écrit en langage de programmation C.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici