paint-brush
Les géants du cloud dépensent une fortune en équilibreurs de charge : cette étude pourrait changer la donnepar@loadbalancer
Nouvelle histoire

Les géants du cloud dépensent une fortune en équilibreurs de charge : cette étude pourrait changer la donne

par Load Balancer5m2025/02/14
Read on Terminal Reader

Trop long; Pour lire

Les chercheurs ont optimisé l'équilibrage de charge de la couche 7 à l'aide de SmartNIC programmables pour améliorer l'efficacité, les coûts et la consommation d'énergie dans les centres de données cloud.
featured image - Les géants du cloud dépensent une fortune en équilibreurs de charge : cette étude pourrait changer la donne
Load Balancer HackerNoon profile picture
0-item

Auteurs:

(1) Tianyi Cui, Université de Washington ([email protected]);

(2) Chenxingyu Zhao, Université de Washington ([email protected]) ;

(3) Wei Zhang, Microsoft ([email protected]) ;

(4) Kaiyuan Zhang, Université de Washington ([email protected]).

Note de l'éditeur : il s'agit de la première partie d'une étude sur six détaillant les tentatives d'optimisation de l'équilibrage de charge de la couche 7. Lisez la suite ci-dessous.

Table des liens

Abstrait

Les équilibreurs de charge sont largement utilisés dans les clouds actuels pour distribuer de manière évolutive les requêtes réseau sur les serveurs des centres de données. Compte tenu de l'utilisation intensive des équilibreurs de charge et des coûts d'exploitation associés, plusieurs efforts se sont concentrés sur l'amélioration de leur efficacité en implémentant une logique d'équilibrage de charge de couche 4 dans le noyau ou en utilisant l'accélération matérielle. Ce travail explore si la capacité d'équilibrage de charge de couche 7, plus complexe et orientée connexion, peut également bénéficier de l'accélération matérielle. En particulier, nous ciblons le déchargement de la capacité d'équilibrage de charge sur des SmartNIC programmables. Nous exploitons pleinement le coût et l'efficacité énergétique des SmartNIC en utilisant trois idées clés. Tout d'abord, nous soutenons qu'une pile TCP/IP complète et complexe n'est pas requise pour les équilibreurs de charge de couche 7 et proposons à la place un agent de transfert léger sur le SmartNIC. Deuxièmement, nous développons des structures de données de gestion de connexion avec un degré élevé de concurrence avec une synchronisation minimale lorsqu'elles sont exécutées sur des SmartNIC multi-cœurs. Enfin, nous décrivons comment la logique d'équilibrage de charge pourrait être accélérée à l'aide d'accélérateurs de traitement de paquets personnalisés sur les SmartNIC. Nous avons réalisé un prototype de Laconic sur deux types de matériel SmartNIC, atteignant un débit de plus de 150 Gbit/s en utilisant tous les cœurs sur BlueField-2, tandis qu'un seul cœur SmartNIC atteint un débit 8,7 fois supérieur et une latence comparable à Nginx sur un seul cœur x86.

1 Introduction

Les équilibreurs de charge sont un élément fondamental des centres de données car ils équilibrent la charge de service sur des ensembles de serveurs d'applications [38, 45, 46]. Les équilibreurs de charge ont été initialement conçus comme des appareils matériels spécialisés, mais sont désormais généralement déployés sous forme de logiciels exécutés sur des serveurs ou des machines virtuelles standard. Ce modèle de déploiement offre un degré de personnalisation et d'adaptabilité plus élevé que les anciennes conceptions basées sur le matériel, mais il peut également entraîner des coûts élevés pour les fournisseurs de cloud et les services d'application, compte tenu des coûts d'achat et de la consommation d'énergie des serveurs à usage général [8]. Les services d'application font souvent de gros efforts pour consolider et réduire leur utilisation d'équilibreurs de charge afin d'obtenir les économies de coûts souhaitées [2, 4, 5].


Étant donné l'utilisation et le coût importants des équilibreurs de charge, plusieurs efforts ont été consacrés à l'amélioration de leur efficacité, en particulier les équilibreurs de charge de couche 4 (L4), en intégrant la logique d'équilibrage de charge dans une couche inférieure, éventuellement accélérée par le matériel. Katran [16] est accéléré à l'aide du code eBPF à l'intérieur du noyau Linux, interceptant et traitant ainsi les paquets dans le noyau et minimisant le nombre de transitions vers le code d'équilibrage de charge au niveau utilisateur. ClickNP [32] aborde certains aspects de la logique d'équilibrage de charge L4 (en particulier les capacités de type NAT) sur un SmartNIC compatible FPGA et exploite les capacités de traitement parallèle des périphériques FPGA. SilkRoad [38] utilise une combinaison d'un commutateur programmable et d'un hôte final pour stocker l'état associé aux équilibreurs de charge L4 et effectuer les transformations du plan de données liées à l'opération d'équilibrage de charge dans un pipeline de commutation.


Bien que ces efforts aient permis des gains considérables dans l'optimisation de l'équilibrage de charge L4 qui équilibre le trafic au niveau de la couche réseau, les services de centre de données s'appuient souvent sur des capacités d'équilibrage de charge de couche application que l'on trouve uniquement dans les équilibreurs de charge de couche 7 (L7). En particulier, les services souhaitent acheminer les flux en fonction des attributs de la demande client, préserver l'affinité de session pour les demandes client, fournir un contrôle d'accès, etc. [7]. Mais ces fonctionnalités rendent plus difficile pour les équilibreurs de charge L7 d'adopter les techniques d'accélération matérielle utilisées pour les équilibreurs de charge L4. Un défi fondamental est que l'opération d'équilibrage de charge L7 est basée sur des informations intégrées dans des protocoles de transport orientés connexion, ce qui semble nécessiter un agent de traitement réseau complet sur l'équilibreur de charge pour gérer les connexions TCP/HTTP. Par conséquent, les équilibreurs de charge L7 actuels sont des solutions logicielles génériques entraînant des coûts de traitement élevés sur les serveurs de base.


Dans ce travail, nous examinons si nous pouvons améliorer l'efficacité des équilibreurs de charge L7 en utilisant du matériel réseau programmable. Nous nous concentrons sur les SmartNIC qui fournissent des cœurs de calcul à usage général augmentés de matériel de traitement de paquets. Les SmartNIC sont des cibles particulièrement attrayantes car leurs cœurs de calcul peuvent héberger une logique de protocole arbitraire tandis que leurs accélérateurs de traitement de paquets peuvent effectuer efficacement des transformations de plan de données. Un SmartNIC combine ainsi les capacités de l'informatique hôte traditionnelle avec les capacités émergentes des commutateurs programmables et constitue une cible appropriée pour les équilibreurs de charge L7. Notre travail est également en partie motivé par le déploiement croissant de SmartNIC dans les centres de données en tant que substrat informatique rentable et économe en énergie pour les tâches de réseau.


Plusieurs défis doivent être relevés pour décharger la fonctionnalité d'équilibrage de charge sur les SmartNIC. Tout d'abord, les cœurs SmartNIC sont fragiles, équipés d'une mémoire limitée et inefficaces pour exécuter des calculs à usage général. Dans la mesure du possible, nous devrions utiliser des piles réseau légères au lieu de piles génériques à fonctionnalités complètes présentes dans les noyaux des systèmes d'exploitation. Deuxièmement, un traitement multicœur efficace sur les SmartNIC suppose une synchronisation légère pour l'accès aux structures de données concurrentes, ce qui est particulièrement pertinent lorsque nous réduisons la logique de traitement du réseau. Troisièmement, l'utilisation efficace d'accélérateurs pour les transformations de paquets est nécessaire pour améliorer la capacité de calcul des SmartNIC.


Nous concevons et mettons en œuvre Laconic , un équilibreur de charge déchargé SmartNIC qui répond aux défis soulevés ci-dessus. Un composant clé de notre système est une pile réseau légère qui représente une co-conception de la logique d'équilibrage de charge de la couche application avec les tâches de la couche transport. Cette pile réseau légère effectue un traitement complexe des paquets uniquement sur un sous-ensemble des paquets transmis via l'équilibreur de charge. Pour le reste des paquets, la pile réseau effectue une réécriture simple des paquets et s'appuie sur le client et le serveur pour fournir une fiabilité de bout en bout et un contrôle de congestion. Pour les SmartNIC avec accélérateurs de traitement de paquets, cette conception permet de traiter la plupart des paquets à l'aide de moteurs de traitement de flux basés sur le matériel, offrant ainsi des gains d'efficacité significatifs. Nous développons également des structures de données de gestion de connexion qui sont hautement concurrentes et minimisent les opérations d'exclusion mutuelle coûteuses. Nous notons que certaines de nos contributions de conception s'appliquent également à une conception générique basée sur un serveur, mais elles ont un effet multiplicateur sur les SmartNIC en factorisant un chemin rapide qui peut être exécuté sur les moteurs de paquets matériels.


Nous avons conçu Laconic et l'avons adapté à deux types différents de SmartNIC : Marvell LiquidIO3 et Nvidia BlueField-2. Laconic fournit à la fois des fonctionnalités de couche 4 et de couche 7 et implémente la logique d'interposition de couche 7 couramment utilisée pour équilibrer les connexions aux services back-end. Pour les messages volumineux, Laconic exécuté sur BlueField-2 avec un seul cœur ARM peut atteindre un débit jusqu'à 8,7 fois supérieur à celui de Nginx largement utilisé exécuté sur un cœur x86 plus puissant. Pour les petits messages, Laconic sur BlueField-2 peut atteindre un débit plus élevé avec une latence comparable, voire inférieure, par rapport à Nginx. Sur LiquidIO3, le débit de Laconic est 4,5 fois supérieur à celui de Nginx x86. Nous démontrons également les performances de Laconic avec une charge de travail réelle et présentons des microbenchmarks détaillés sur les avantages des idées clés.


Figure 1 : Architectures SmartNIC courantes


Cet article est disponible sur arxiv sous licence CC BY-NC-ND 4.0 DEED.