wolfIP : Nouvelle bibliothèque TCP/IP sans allocation de mémoire pour systèmes embarqués

wolfip TCP/IP library no memory allocations

Selon cnx-software, wolfSSL, mieux connu pour sa bibliothèque SSL/TLS open source, a récemment lancé wolfIP, une pile TCP/IP légère et open source, conçue spécifiquement pour les systèmes embarqués qui manquent de ressources. Une des principales caractéristiques de wolfIP est l’absence d’allocation dynamique de mémoire, ce qui en fait une solution particulièrement adaptée aux environnements contraints.

wolfIP et TCP/IP : une approche sans allocation dynamique pour 4 sockets simultanés

wolfIP met en avant sa capacité à fonctionner tant en mode point de terminaison qu’en tant que dispositif de transfert permettant la gestion de plusieurs interfaces. Par défaut, il opère comme un point de terminaison du réseau, mais il peut également être configuré pour transférer les données entre différentes interfaces. Cela garantit une flexibilité dans l’architecture réseau, répondant ainsi à divers besoins d’application.

bibliothèque TCP/IP wolfip aucune allocation de mémoire

Performance réseau : protocoles variés et réglages optimisés selon wolfIP

wolfIP est équipé d’une API de socket non bloquante de type BSD, qui utilise des rappels personnalisés pour optimiser la gestion des connexions. L’absence d’allocation de mémoire dynamique se traduit par un nombre fixe de sockets simultanés, avec des tampons pré-alloués pour le traitement des paquets dans la mémoire statique. Par exemple, les paramètres peuvent être totaux réglés dans le fichier config.h, incluant des directives telles que MAX_TCPSOCKETS fixé à 4, MAX_UDPSOCKETS à 2, et un RXBUF_SIZE de 20 Ko.

En termes de protocoles, wolfIP offre une large gamme de fonctionnalités. Il prend en charge la livraison IPv4, ainsi que plusieurs modalités de transfert avec routage multi-interface. De plus, les fonctionnalités incluent la demande et la réponse ICMP, IPsec, ainsi que des protocoles de transport UDP et TCP. Il convient également de mentionner le support des applications comme DHCP, DNS, et HTTP/HTTPS, qui s’appuient sur wolfSSL pour une meilleure sécurité.

Pour les utilisateurs ayant besoin d’une sécurité accrue, wolfIP propose une mise en œuvre de WireGuard conforme à wolfGuard FIPS, avec des standards de cryptage rigoureux tels que P-256, AES-256-GCM, et SHA-256. Toutefois, il est important de noter que cette solution n’est pas interopérable avec les versions standards de WireGuard.

Le code source de wolfIP, sous licence GPLv3, est disponible sur GitHub, accompagné d’une documentation API détaillée et d’un guide spécifique pour l’intégration sur des microcontrôleurs STM32. Pour ceux qui préfèrent utiliser Rust ou qui ont des exigences d’IPv6, la bibliothèque smoltcp peut également être adaptée pour fonctionner sans allocation dynamique.

Via Adafruit