lwIP – pile IP légère
(nongnu.org)- Même sur des appareils embarqués, il est possible d’exécuter TCP/IP : lwIP 2.1.0 fournit une implémentation autonome et compacte de la suite de protocoles TCP/IP
- Le projet vise à offrir un TCP complet tout en ciblant des environnements disposant de quelques dizaines de Ko de RAM et d’environ 40 Ko de ROM de code
- La prise en charge couvre largement IPv4/IPv6, ICMP, IGMP, MLD, IPv6 Neighbor Discovery, DHCP, UDP, TCP, l’API raw/native, l’API socket de style Berkeley, altcp, PPP, DNS et 6LoWPAN
- Parmi les applications fournies figurent un serveur HTTP, un agent SNMPv2c, SNTP, un répondeur de service de noms NetBIOS, un répondeur mDNS, un serveur iPerf et un client MQTT
- Proposé sous licence BSD, le projet est développé et maintenu par un réseau mondial de développeurs via le dépôt Git et la mailing list de Savannah
Conception d’une pile TCP/IP pour l’embarqué
- lwIP est une implémentation autonome et compacte de la suite de protocoles TCP/IP
- Son objectif de conception est de réduire l’usage de la RAM tout en fournissant un TCP complet
- Il convient aux systèmes embarqués disposant de quelques dizaines de Ko de RAM libre
- Il part du principe d’un espace de ROM de code d’environ 40 Ko
- Il a été initialement développé par Adam Dunkels au Computer and Networks Architectures lab du Swedish Institute of Computer Science, et il est aujourd’hui maintenu par un réseau mondial de développeurs
-
Protocoles réseau et API
- La couche IP prend en charge IPv4 et IPv6 et permet aussi le transfert de paquets entre plusieurs interfaces réseau
- ICMP est fourni pour la maintenance et le débogage du réseau, et IGMP pour la gestion du trafic multicast
- Les fonctions liées à IPv6 incluent MLD et ND
- MLD vise la conformité à la RFC 2710, mais MLDv2 n’est pas pris en charge
- ND vise la conformité à la découverte de voisins RFC 4861 et à l’autoconfiguration d’adresses RFC 4862
- Pour la configuration d’adresses et la résolution de noms, lwIP fournit DHCP, AutoIP/APIPA, DHCPv6 sans état, DNS et mDNS
- La couche de transport comprend UDP et TCP
- UDP inclut l’extension expérimentale UDP-lite
- TCP prend en charge le contrôle de congestion, l’estimation du RTT, fast recovery, fast retransmit et la transmission SACK
- Côté API et extensions, lwIP prend en charge l’API raw/native, l’API socket optionnelle de style Berkeley, la couche TCP hiérarchique optionnelle altcp, PPPoS, PPPoE et 6LoWPAN
- altcp fournit un TLS quasiment transparent pour les protocoles basés sur TCP
-
Applications incluses
- Le serveur HTTP prend en charge SSI et CGI, et HTTPS est fourni via altcp
- L’agent SNMPv2c inclut un compilateur MIB, et la v3 est fournie via altcp
- lwIP inclut SNTP, un répondeur de service de noms NetBIOS et un répondeur mDNS
- Il inclut aussi une implémentation de serveur iPerf et un client MQTT, avec prise en charge de TLS pour MQTT via altcp
Participation au développement et documentation
- lwIP est librement proposé sous licence BSD
- Le développement est hébergé sur Savannah, et il est possible de contribuer à son amélioration via l’interface Savannah, Git et les mailing lists
- L’équipe principale de développement commit les modifications dans l’arborescence source Git
- La pile TCP/IP est maintenue dans le module Git
lwip - Les contributions comme les ports de plateforme se trouvent dans le module Git
contrib
- La pile TCP/IP est maintenue dans le module Git
- L’arborescence Git actuelle peut être consultée sur le Web
- Les patchs et bugs sont soumis via la page du projet lwIP
- Des builds d’intégration continue pour GCC et clang sont fournis sur Travis CI
- La documentation intégrée au code source est actuellement extraite régulièrement des sources Git et publiée sur le site Web de lwIP
- La documentation et les ressources d’apprentissage sont disponibles sur le wiki, les mailing lists, les archives consultables, les fichiers
docs/et la documentation du code source
Aucun commentaire pour le moment.