lwIP-Überblick
Einführung
- lwIP ist eine eigenständige Implementierung eines kleinen TCP/IP-Protokoll-Stacks
- Der Schwerpunkt liegt darauf, den RAM-Verbrauch zu reduzieren und gleichzeitig vollwertiges TCP beizubehalten
- Es eignet sich für den Einsatz in Embedded-Systemen und benötigt einige Dutzend Kilobyte RAM sowie etwa 40 Kilobyte Code-ROM
- Ursprünglich wurde es von Adam Dunkels entwickelt und wird heute von einem weltweiten Netzwerk von Entwicklern gepflegt
Funktionen
- IP (Internet Protocol, IPv4 und IPv6): einschließlich Paketweiterleitung zwischen mehreren Netzwerkschnittstellen
- ICMP (Internet Control Message Protocol): für Netzwerkwartung und Debugging
- IGMP (Internet Group Management Protocol): Verwaltung von Multicast-Datenverkehr
- MLD (Multicast Listener Discovery): für IPv6, mit dem Ziel der RFC-2710-Konformität
- ND (Neighbor Discovery und zustandslose Adress-Autokonfiguration): mit dem Ziel der RFC-4861- und RFC-4862-Konformität
- DHCP, AutoIP/APIPA (Zeroconf) und (zustandsloses) DHCPv6
- UDP (User Datagram Protocol): einschließlich der experimentellen UDP-lite-Erweiterung
- TCP (Transmission Control Protocol): Staukontrolle, RTT-Schätzung, Fast Recovery/Fast Retransmit und SACK-Übertragung
- Raw-/native API: für bessere Performance
- Optionale Berkeley-ähnliche Socket-API
- TLS: optionale geschichtete TCP-Schicht ("altcp") für nahezu transparentes TLS (auf mbedTLS portiert)
- PPPoS und PPPoE (Point-to-Point Protocol über seriell/Ethernet)
- DNS (Domain Name Resolver, einschließlich mDNS)
- 6LoWPAN (über IEEE 802.15.4, BLE oder ZEP)
Anwendungen
- HTTP-Server: einschließlich SSI und CGI (HTTPS über altcp)
- SNMPv2c-Agent: mit MIB-Compiler, v3 wird über altcp unterstützt
- SNTP (Simple Network Time Protocol)
- NetBIOS Name Service Responder
- MDNS (Multicast DNS) Responder
- iPerf-Server-Implementierung
- MQTT-Client: TLS-Unterstützung ist über altcp möglich
Lizenz
- lwIP wird kostenlos unter der BSD-Lizenz bereitgestellt
Entwicklung
- lwIP hat sich zu einem hervorragenden TCP/IP-Stack für Embedded-Geräte entwickelt
- Entwickler reichen Bugfixes, Verbesserungen und zusätzliche Funktionen ein und steigern damit den Nutzen des Stacks weiter
- Die Entwicklung wird auf Savannah gehostet, und jeder kann über Git und Mailinglisten zur Verbesserung von lwIP beitragen
- Der lwIP-TCP/IP-Stack wird im Git-Modul
lwip gepflegt, Beiträge befinden sich im Git-Modul contrib
- Details zum Zugriff auf den Git-Server finden sich in
doc/savannah.txt
- Die aktuellen Git-Bäume können im Web eingesehen werden: lwip, lwip-contrib
- Patches und Bugmeldungen: lwIP-Projektseite
- Continuous-Integration-Builds: Travis CI
Dokumentation
Zusammenfassung von GN⁺
- lwIP bietet einen effizienten TCP/IP-Stack für Embedded-Systeme und minimiert den Speicherverbrauch
- Es unterstützt verschiedene Netzwerkprotokolle und Anwendungen und bietet damit Flexibilität und Erweiterbarkeit
- Durch die aktive Beteiligung der Entwickler-Community wird es kontinuierlich verbessert
- Ähnliche Projekte mit vergleichbaren Funktionen sind FreeRTOS+TCP, uIP und weitere
1 Kommentare
Hacker-News-Kommentare
Vor einigen Jahren wurde LwIP in einem Projekt verwendet, um Systemtests effektiv durchzuführen
IP-Stack ist eine untertriebene Bezeichnung
Allen, die nach Optionen wie LwIP suchen, wird empfohlen, NetXDuo und die zugehörigen Gegenstücke ThreadX, FileX, LevelX und UsbX in Betracht zu ziehen
Adam Dunkels hat den Großteil von Protothreads geschrieben
Es wird gefragt, was nongnu.org ist und wie es mit gnu.org zusammenhängt
Es dürfte der am häufigsten verwendete TCP/IP-Stack auf Geräten mit begrenzten Ressourcen sein
Ein Grund, warum LWIP geschätzt wird: Es erlaubt, denselben vom Ethernet-MAC-DMA zugewiesenen Speicherblock über die gesamte Lebensdauer eines Pakets hinweg zu verwenden
memcpys zu reduzierenFür alle, die einen eigenen leichtgewichtigen TCP/IP-Stack implementieren möchten, ist Jeremy Benthams Buch <i>TCP/IP Lean</i> eine hervorragende Ressource
Auszug aus dem Artikel:
Der Pico W verwendet das