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

La version 2.0 du projet F-Stack, qui développe une édition de la pile réseau FreeBSD adaptée au fonctionnement isolé en espace utilisateur sous forme de bibliothÚque, a été publiée. 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 langage C et est distribué sous licence BSD. Il prend en charge le fonctionnement sur Linux et FreeBSD. Le projet prend également en charge les éditions Nginx 1.28 et Redis 6.2.6 traduites pour utiliser F-Stack, montrant des performances supérieures aux versions standard fonctionnant au-dessus de la pile réseau systÚme.

F-Stack permet d'utiliser dans les applications sa propre pile rĂ©seau locale, indĂ©pendante de la pile rĂ©seau du systĂšme d'exploitation, fonctionnant en espace utilisateur et travaillant directement avec le matĂ©riel rĂ©seau. F-Stack est positionnĂ© comme une solution permettant d'augmenter les performances des gestionnaires de requĂȘtes rĂ©seau lorsque la pile TCP/IP standard du noyau Linux devient un goulot d'Ă©tranglement et limite l'Ă©volutivitĂ©. ThĂ©oriquement, F-Stack permet d'atteindre le plafond de performance rĂ©seau possible pour la carte rĂ©seau utilisĂ©e et, dans certaines situations, offre la possibilitĂ© d'augmenter considĂ©rablement le nombre de petites requĂȘtes rĂ©seau traitĂ©es.

L'augmentation de la performance est réalisée en éliminant des opérations telles que la copie de paquets réseau, le plan de flux, le traitement des interruptions et les appels systÚme. Pour interagir avec la carte réseau, en contournant les interfaces du noyau de l'os, le framework DPDK (Data Plane Development Kit) est utilisé, développant un ensemble de bibliothÚques pour un travail de bas niveau avec les adaptateurs réseau. DPDK permet de réduire les frais généraux et de respecter 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 Ă  celle de la pile rĂ©seau de FreeBSD 15 et a Ă©tĂ© extraite de ce systĂšme d'exploitation pour ĂȘtre intĂ©grĂ©e dans une bibliothĂšque autonome. Pour le dĂ©veloppement d'applications, l'API standard POSIX (socket, epoll, kqueue) peut ĂȘtre utilisĂ©e, ou bien une interface logicielle propre basĂ©e sur des micro-threads, facilitant la crĂ©ation d'applications rĂ©seau et permettant d'Ă©viter la complexitĂ© de la logique de traitement asynchrone des requĂȘtes. L'utilisation avec des applications non modifiĂ©es via LD_PRELOAD est possible.

Les changements les plus notables dans cette nouvelle version :

  • Les composants de la pile rĂ©seau ont Ă©tĂ© mis Ă  jour pour correspondre Ă  FreeBSD 15 (auparavant, 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 lĂ©ger de fonctionnement (primary_slim) a Ă©tĂ© ajoutĂ©, oĂč le processus principal effectue uniquement les tĂąches d'initialisation de base 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 enfants.
  • Le support du mĂ©canisme d'accĂ©lĂ©ration matĂ©rielle a Ă©tĂ© ajoutĂ©.
    TSO (TCP Segmentation Offload) pour décharger sur la carte réseau les opérations de regroupement de paquets, avec la possibilité de revenir à une implémentation logicielle. Le support de TSO (TCP Segmentation Offload, déchargement vers la carte réseau du traitement des segments de paquets) pour IPv6 a été amélioré.
  • La possibilitĂ© de modifier la taille de MTU (unitĂ© maximale de transmission) a Ă©tĂ© ajoutĂ©e et le support des jumbo frames a Ă©tĂ© mis en Ɠuvre.
  • Les capacitĂ©s de gestion de l'accĂ©lĂ©ration matĂ©rielle des calculs de sommes de contrĂŽle des paquets envoyĂ©s ont Ă©tĂ© Ă©tendues.
  • La fonction ff_zc_recv() a Ă©tĂ© ajoutĂ©e pour recevoir des donnĂ©es avec un zĂ©ro-buffĂ©risation intermĂ©diaire (zero-copy). La fonction correspondante ff_zc_send() pour l'envoi a Ă©tĂ© revue et optimisĂ©e. le support IPv6 La fonction ff_rss_check() a Ă©tĂ© optimisĂ©e et complĂ©tĂ©e.
  • L'option FF_KERNEL_COEXIST a Ă©tĂ© ajoutĂ©e pour travailler en collaboration avec la pile rĂ©seau du noyau.
  • La possibilitĂ© de sauvegarder des informations sur le trafic dans des dumps pcap avec une prĂ©cision en nanosecondes a Ă©tĂ© fournie.
  • 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 une version spĂ©cialisĂ©e de nginx, le support du rechargement de la configuration et de la mise Ă  jour du fichier binaire sans rupture des connexions (graceful_reload=1) a Ă©tĂ© mis en Ɠuvre.

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