lwIP – Leichtgewichtiger IP-Stack
(nongnu.org)- Damit auch eingebettete Geräte TCP/IP nutzen können, stellt lwIP 2.1.0 die TCP/IP-Protokollfamilie als kleine, eigenständige Implementierung bereit
- Der Fokus liegt darauf, vollwertiges TCP bereitzustellen und dabei Umgebungen mit einigen zehn KB RAM und etwa 40 KB Code-ROM zu adressieren
- Der unterstützte Umfang ist breit und reicht von IPv4/IPv6, ICMP, IGMP, MLD, IPv6 Neighbor Discovery, DHCP, UDP, TCP, raw/native API, Berkeley-artiger socket API, altcp, PPP, DNS bis hin zu 6LoWPAN
- Zu den mitgelieferten Anwendungen gehören HTTP-Server, SNMPv2c-Agent, SNTP, NetBIOS-Namensdienst-Responder, mDNS-Responder, iPerf-Server und MQTT-Client
- Es wird unter der BSD-Lizenz bereitgestellt und von einem weltweiten Entwicklernetzwerk über das Git-Repository und die Mailinglisten von Savannah entwickelt und gepflegt
Entwurf eines TCP/IP-Stacks für Embedded-Systeme
- lwIP ist eine kleine, eigenständige Implementierung der TCP/IP-Protokollfamilie
- Das Entwicklungsziel ist es, den RAM-Verbrauch zu senken und zugleich vollwertiges TCP bereitzustellen
- Geeignet für eingebettete Systeme mit einigen zehn KB freiem RAM
- Für Code-ROM werden etwa 40 KB vorausgesetzt
- Ursprünglich wurde es von Adam Dunkels im Computer and Networks Architectures Lab des Swedish Institute of Computer Science entwickelt; heute wird es von einem weltweiten Entwicklernetzwerk gepflegt
-
Netzwerkprotokolle und APIs
- Die IP-Schicht unterstützt IPv4 und IPv6 und ermöglicht auch Packet Forwarding zwischen mehreren Netzwerkschnittstellen
- Für Netzwerkpflege und Debugging steht ICMP zur Verfügung, für das Management von Multicast-Traffic IGMP
- Zu den IPv6-bezogenen Funktionen gehören MLD und ND
- MLD zielt auf Konformität mit RFC 2710 ab, unterstützt jedoch kein MLDv2
- ND zielt auf Konformität mit RFC 4861 Neighbor Discovery und RFC 4862 Address Autoconfiguration ab
- Für Adresskonfiguration und Namensauflösung werden DHCP, AutoIP/APIPA, stateless DHCPv6, DNS und mDNS bereitgestellt
- Die Transportschicht umfasst UDP und TCP
- UDP enthält die experimentelle Erweiterung UDP-lite
- TCP unterstützt Congestion Control, RTT-Schätzung, Fast Recovery, Fast Retransmit und SACK-Übertragung
- Bei APIs und Erweiterungen werden raw/native API, optionale Berkeley-artige socket API, das optionale geschichtete TCP altcp, PPPoS, PPPoE und 6LoWPAN unterstützt
- altcp bietet nahezu transparentes TLS für TCP-basierte Protokolle
-
Enthaltene Anwendungen
- Der HTTP-Server unterstützt SSI und CGI, HTTPS wird über altcp bereitgestellt
- Der SNMPv2c-Agent enthält einen MIB-Compiler, v3 wird über altcp bereitgestellt
- Enthalten sind außerdem SNTP, ein NetBIOS-Namensdienst-Responder und ein mDNS-Responder
- Ebenfalls enthalten sind eine iPerf-Server-Implementierung und ein MQTT-Client; TLS-Unterstützung für MQTT wird über altcp bereitgestellt
Entwicklung und Dokumentation
- lwIP wird unter der BSD-Lizenz frei bereitgestellt
- Die Entwicklung wird bei Savannah gehostet; über die Savannah-Oberfläche, Git und Mailinglisten kann man sich an Verbesserungen beteiligen
- Das Kernentwicklungsteam commitet Änderungen in den Git-Source-Tree
- Der TCP/IP-Stack wird im Git-Modul
lwipgepflegt - Beiträge wie Plattform-Ports befinden sich im Git-Modul
contrib
- Der TCP/IP-Stack wird im Git-Modul
- Der aktuelle Git-Tree kann im Web eingesehen werden
- Patches und Bugs werden über die lwIP project page eingereicht
- Continuous-Integration-Builds für GCC und clang werden auf Travis CI bereitgestellt
- Die interne Dokumentation des Source Codes wird derzeit regelmäßig aus den Git-Quellen extrahiert und auf der lwIP-Webseite bereitgestellt
- Dokumentation und Lernmaterialien finden sich im Wiki, in den Mailinglisten, durchsuchbaren Archiven, in den Dateien unter
docs/und in der Source-Code-Dokumentation
Noch keine Kommentare.