1 Punkte von GN⁺ 2024-09-08 | Noch keine Kommentare. | Auf WhatsApp teilen
  • 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 lwip gepflegt
    • Beiträge wie Plattform-Ports befinden sich im Git-Modul contrib
  • 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.

Noch keine Kommentare.