Le stack réseau F-Stack 2.0 a été publié, fonctionnant dans l'espace utilisateur

Le projet F-Stack 2.0, qui développe une version de la pile réseau FreeBSD adaptée à un fonctionnement isolé dans l'espace utilisateur sous la forme d'une bibliothèque, a été lancé. Ce projet a été créé par la plus grande entreprise de télécommunications en Chine, Tencent, et est utilisé dans ses produits et services. Le code est écrit en C et distribué sous la licence BSD. Il prend en charge Linux et FreeBSD. Le projet prend également en charge les versions traduites de Nginx 1.28 et de la base de données Redis 6.2.6 utilisant F-Stack, démontrant des performances supérieures aux versions typiques fonctionnant au-dessus de la pile réseau système.

F-Stack permet d'utiliser une pile réseau locale propre dans les applications, indépendante de la pile réseau du système d'exploitation, fonctionnant dans l'espace utilisateur et interagissant directement avec le matériel réseau. F-Stack se positionne comme une solution permettant d'améliorer les performances des gestionnaires de requêtes réseau lorsque la pile TCP/IP native du noyau Linux devient un goulot d'étranglement et limite la scalabilité. En théorie, F-Stack permet d'atteindre le plafond de performance réseau possible pour la carte réseau utilisée et, dans certaines situations, peut multiplier par plusieurs le nombre de petites requêtes réseau traitées.

L'augmentation de performance est obtenue en éliminant des opérations telles que la copie de paquets réseau, la planification de flux, le traitement des interruptions et les appels système. Pour interagir avec la carte réseau, en contournant les interfaces du noyau du système d'exploitation, le framework DPDK (Data Plane Development Kit) est utilisé, qui développe un ensemble de bibliothèques pour un travail de bas niveau avec des adaptateurs réseau. DPDK permet de réduire les frais généraux et de rester dans un nombre minimal de cycles CPU lors de la réception ou de l'envoi de paquets réseau.

La fonctionnalité de la pile TCP/IP correspond à la pile réseau FreeBSD 15 et a été extraite de ce système d'exploitation dans une bibliothèque indépendante. Pour le développement d'applications, il est possible d'utiliser l'API standard POSIX (socket, epoll, kqueue) ou une interface logicielle propre basée sur des micro-threads, simplifiant la création d'applications réseau et permettant d'éviter la logique complexe de traitement asynchrone des requêtes. L'utilisation avec des applications non modifiées est possible via le chargement avec LD_PRELOAD.

Les changements les plus notables dans cette nouvelle version :

  • Les composants de la pile réseau ont été mis à jour vers l'état FreeBSD 15 (précédemment, FreeBSD 13 était utilisé).
  • Un mode de fonctionnement multithreadé (thread_mode=1) a été implémenté dans un seul processus, complétant le mode multiprocessus précédemment disponible.
  • Un mode de fonctionnement léger (primary_slim) a été ajouté, dans lequel le processus principal exécute uniquement les tâches de base d'initialisation et de coordination, tandis que la réception de paquets et le traitement des files d'attente de réception/ transmission (rx/tx) se font uniquement du côté des processus fils.
  • Ajout du support du mécanisme d'accélération matérielle.
    TSO (TCP Segmentation Offload) pour décharger vers la carte réseau les opérations de regroupement de paquets, avec la possibilité de revenir à une mise en œuvre logicielle. Amélioration du support TSO (TCP Segmentation Offload, décharge vers la carte réseau du traitement des segments de paquets) pour IPv6.
  • Ajout de la possibilité de modifier la taille MTU (Maximum Transmission Unit) et mise en œuvre du support des jumbo-frames.
  • Amélioration des capacités de gestion de l'accélération matérielle du calcul des sommes de contrôle des paquets envoyés.
  • Ajout de la fonction ff_zc_recv() pour recevoir des données sans mise en mémoire tampon intermédiaire (zero-copy). La fonction analogous ff_zc_send() pour l'envoi a été retravaillée. Optimisée et complétée. le support IPv6 La fonction ff_rss_check() a été ajoutée.
  • Ajout de l'option FF_KERNEL_COEXIST pour coexister avec la pile réseau du noyau.
  • Offre la possibilité de sauvegarder des informations sur le trafic dans des dumps pcap avec une précision en nanosecondes.
  • De nouveaux paramètres idle_loop_interval, extra_eal_args, drain_ring_size, reload_heartbeat_timeout_ms et reload_udp_idle_ms ont été ajoutés dans config.ini.
  • Dans la version spécialisée de nginx, support de la rechargement de configuration et mise à jour du fichier binaire sans rupture de connexion (graceful_reload=1).

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