Présentation de lwIP
Introduction
- lwIP est une implémentation indépendante d’une petite pile de protocoles TCP/IP
- Elle met l’accent sur la réduction de l’utilisation de la RAM tout en conservant un TCP complet
- Elle convient à une utilisation dans les systèmes embarqués et nécessite quelques dizaines de kilo-octets de RAM ainsi qu’environ 40 kilo-octets de ROM de code
- Développé à l’origine par Adam Dunkels, le projet est aujourd’hui maintenu par un réseau mondial de développeurs
Fonctionnalités
- IP (Internet Protocol, IPv4 et IPv6) : y compris le transfert de paquets entre plusieurs interfaces réseau
- ICMP (Internet Control Message Protocol) : maintenance et débogage du réseau
- IGMP (Internet Group Management Protocol) : gestion du trafic multicast
- MLD (Multicast Listener Discovery) : pour IPv6, avec l’objectif de conformité à la RFC 2710
- ND (Neighbor Discovery et autoconfiguration d’adresse sans état) : avec l’objectif de conformité aux RFC 4861 et RFC 4862
- DHCP, AutoIP/APIPA (Zeroconf) et DHCPv6 (sans état)
- UDP (User Datagram Protocol) : avec l’extension expérimentale UDP-lite
- TCP (Transmission Control Protocol) : contrôle de congestion, estimation RTT, fast recovery/fast retransmit et transmission SACK
- API brute/native : amélioration des performances
- API de sockets optionnelle de type Berkeley
- TLS : couche TCP optionnelle ("altcp") pour un TLS presque transparent (porté sur mbedTLS)
- PPPoS et PPPoE (Point-to-Point Protocol sur série/Ethernet)
- DNS (résolveur de noms de domaine, avec mDNS)
- 6LoWPAN (via IEEE 802.15.4, BLE ou ZEP)
Applications
- Serveur HTTP : avec SSI et CGI (HTTPS via altcp)
- Agent SNMPv2c : avec compilateur MIB, v3 pris en charge via altcp
- SNTP (Simple Network Time Protocol)
- Répondeur de nom NetBIOS
- Répondeur MDNS (Multicast DNS)
- Implémentation de serveur iPerf
- Client MQTT : prise en charge de TLS possible via altcp
Licence
- lwIP est disponible gratuitement sous licence BSD
Développement
- lwIP est devenu une excellente pile TCP/IP pour les appareils embarqués
- Les développeurs soumettent des corrections de bugs, des améliorations et des fonctionnalités supplémentaires, ce qui renforce encore l’utilité de la pile
- Le développement est hébergé sur Savannah, et chacun peut contribuer à l’amélioration de lwIP via Git et les mailing lists
- La pile TCP/IP lwIP est maintenue dans le module Git
lwip, et les contributions se trouvent dans le module Git contrib
- Pour plus de détails sur l’accès au serveur Git, voir
doc/savannah.txt
- L’arborescence Git actuelle peut être consultée sur le Web : lwip, lwip-contrib
- Soumission de patchs et de bugs : page du projet lwIP
- Builds d’intégration continue : Travis CI
Documentation
Le résumé de GN⁺
- lwIP fournit une pile TCP/IP efficace pour les systèmes embarqués, en minimisant l’utilisation de la mémoire
- Il prend en charge divers protocoles réseau et applications, offrant flexibilité et extensibilité
- Il est continuellement amélioré grâce à la participation active de la communauté de développeurs
- Parmi les projets aux fonctionnalités similaires figurent FreeRTOS+TCP, uIP, etc.
1 commentaires
Avis sur Hacker News
Il y a quelques années, j’ai utilisé LwIP dans un projet pour effectuer efficacement les tests du système
Dire que c’est une pile IP est réducteur
À ceux qui cherchent des options comme LwIP, je recommande aussi d’examiner NetXDuo et ses équivalents ThreadX, FileX, LevelX et UsbX
Adam Dunkels a écrit l’essentiel de Protothreads
Je me demande ce qu’est nongnu.org et quel est son lien avec gnu.org
C’est probablement la pile TCP/IP la plus utilisée sur les appareils aux ressources limitées
Ce que j’aime avec LWIP, c’est qu’il permet d’utiliser le même bloc mémoire alloué par l’Ethernet MAC DMA pendant toute la durée de vie du paquet
memcpyPour ceux qui veulent implémenter leur propre pile TCP/IP légère, le livre <i>TCP/IP Lean</i> de Jeremy Bentham est une excellente ressource
Extrait de l’article :
Le Pico W utilise cela