Publication de la pile réseau F-Stack 1.13, exécutée dans l'espace utilisateur

Après un an et demi de développement a eu lieu lancement du projet F-Stack 1.13, développant une pile réseau haute performance fonctionnant dans l'espace utilisateur, basée sur le framework DPDK et la pile TCP/IP de FreeBSD (F-Stack n'est pas lié à FreeBSD et considère Linux comme la plateforme primaire pour son application). Le projet est utilisé dans divers produits et services Tencent, la plus grande entreprise de télécommunications en Chine. Code est distribué sous licence BSD. Il prend en charge les systèmes Linux et FreeBSD.

F-Stack permet d'organiser l'interaction réseau dans les applications, en utilisant sa propre pile réseau plutôt que celle fournie par le système d'exploitation, fonctionnant dans l'espace utilisateur et interagissant directement avec le matériel réseau. Des éditions spécialisées de Nginx et Redis sont fournies, adaptées à l'utilisation de F-Stack.

Pour le développement d'applications est pris en charge comme l'API Posix standard (Socket, Epoll, Kqueue), simplifiant la migration des applications existantes vers F-Stack, ainsi qu'une interface logicielle propre basée sur des coroutines (micro-threads), facilitant la création d'applications réseau et permettant d'éviter une logique complexe de traitement asynchrone des requêtes. F-Stack fournit également des outils pour simplifier son utilisation dans des applications avec une architecture multi-processus.

Pour interagir avec la carte réseau, en contournant les interfaces du noyau du système d'exploitation, un framework est utilisé DPDK (Data Plane Development Kit), fournissant un ensemble de bibliothèques pour des opérations de bas niveau avec des adaptateurs réseau, l'interaction dans des systèmes multicœurs, l'utilisation de buffers circulaires et de grandes pages mémoire («huge page»). L'utilisation de DPDK permet d'accepter et d'envoyer des paquets réseau avec un minimum de cycles CPU (environ 80 cycles par paquet) et de développer des composants hautes performances pour la pile réseau. La fonctionnalité de la pile TCP/IP est directement empruntée à FreeBSD 11.1 et isolée dans une bibliothèque indépendante du système d'exploitation.

F-Stack est présenté comme une solution pouvant être utilisée pour améliorer les performances des gestionnaires de requêtes réseau lorsque le fonctionnement de la pile TCP/IP standard du noyau Linux devient un goulot d'étranglement et limite l'évolutivité. L'utilisation de F-Stack permet d'obtenir une optimisation significative et dans certains cas, d'augmenter le nombre de requêtes traitées de manière exponentielle.

Publication de la pile réseau F-Stack 1.13, exécutée dans l'espace utilisateur

Publication de la pile réseau F-Stack 1.13, exécutée dans l'espace utilisateur

L'augmentation des performances est obtenue en excluant des opérations telles que la copie des paquets réseau, la planification des flux, le traitement des interruptions et l'utilisation d'appels système. F-Stack permet d'atteindre le plafond de performance réseau possible pour la carte réseau utilisée. Par exemple, des solutions basées sur F-Stack ont démontré la possibilité de traiter 10 millions de connexions parallèles, 5 millions de requêtes par seconde et 1 million de connexions par seconde.

Dans cette nouvelle version :

  • Prise en charge des VLAN ajoutée;
  • Possibilité de fonctionner dans des conteneurs isolés basés sur Docker assurée;
  • Interfaces ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd et ff_setsockopt_freebsd implémentées;
  • Ajout du paramètre « idle_sleep » pour réduire la charge CPU en l'absence de paquets entrants.
  • Ajout du support de la construction pour l'architecture ARM64;
  • Dans l'édition Nginx convertie sur F-Stack, les gestionnaires getpeername, getsockname et shutdown ont été remplacés;
  • Un passage à la nouvelle version DPDK 17.11.4 LTS a été réalisé;
  • Ajout d'un utilitaire traffic pour afficher le trafic actuel traité par les applications basées sur F-Stack (similaire à trafshow).

Les plans futurs incluent on note le support IPv6, la fourniture d'API pour les langages Python, PHP et Go, le support de l'API Cyptodev (Intel QAT), l'utilisation de zerocopy lors de l'envoi de paquets, le support SPDK et la possibilité de démarrer en tant que processus en arrière-plan.

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