Die Entwickler der kryptografischen Bibliothek wolfSSL arbeiten an dem fĂŒr eingebettete GerĂ€te mit begrenzten Ressourcen optimierten TCP/IP-Stack wolfIP, der auch fĂŒr Echtzeitsysteme und Lösungen mit hohen ZuverlĂ€ssigkeitsanforderungen (Safety-Critical) geeignet ist. Um eine vorhersehbare Ressourcennutzung zu gewĂ€hrleisten, wird in wolfIP keine dynamische Speicherzuweisung verwendet â alle Puffer und Socket-Tabellen haben eine feste GröĂe und werden zur Kompilierungszeit konfiguriert. Der Projektcode ist in C geschrieben und wird unter der GPLv3-Lizenz verbreitet.
Das Projekt kann als im Benutzerspace arbeitender TCP/IP-Stack verwendet werden, der den Netzwerkstack von Linux, FreeBSD und macOS ersetzt und eignet sich auch fĂŒr eingebettete Systeme auf der Basis von FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks und QNX. DarĂŒber hinaus können auf der Basis von wolfIP autarke Netzwerkapplikationen erstellt werden, die direkt auf der Hardware (bare-metal) ausgefĂŒhrt werden. In Verbindung mit der Bibliothek wolfSSL wird die UnterstĂŒtzung fĂŒr TLS 1.3 bereitgestellt, wodurch kompakte eingebettete Systeme ermöglicht werden, die HTTPS unterstĂŒtzen.
Die Hauptmerkmale von wolfIP:
- Verwendung von im Voraus in statischem Speicher allozierten Puffern bei der Verarbeitung von Netzwerkpaketen. Die Aufrufe von malloc und free werden nicht verwendet.
- Möglichkeit der Nutzung anstelle der standardmĂ€Ăigen systembedingten Netzwerkstacks auf POSIX-Systemen.
- UnterstĂŒtzung von BSD-Sockets im blockierenden und nicht blockierenden Modus.
- Kompakte GröĂe (4200 Codezeilen, viermal kleiner als der TCP/IP-Stack lwIP).
- UnterstĂŒtzung von Netzwerk-Interfaces fĂŒr STM32 Ethernet.
- Möglichkeit, das TAP-Netzwerkinterface fĂŒr Tests ohne Hardware zu verwenden.
- Entwicklung mit Fokus auf Systeme mit erhöhten Sicherheitsanforderungen: deterministische und reproduzierbare Konfiguration; ein Bereitstellungsmodell, das Sicherheit bietet (Secure-by-default); Isolation zwischen Komponenten. UnterstĂŒtzung fĂŒr sicheres Versions-Upgrade; langfristige UnterstĂŒtzung.
- BerĂŒcksichtigung der Anforderungen an hochzuverlĂ€ssige Systeme: keine dynamische Ressourcenallokation; feste Pools von Speicher; kontrollierte Ressourcennutzung; vorhersehbares Verhalten; vereinfachte Architektur; UnterstĂŒtzung der Generierung von Artefakten zur Verifikation.
- Implementierung von IPv4, UDP, TCP, IPSEC, ARP, ICMP, DHCP-Client, DNS-Client und HTTP/HTTPS-Server. UnterstĂŒtzung fĂŒr die Implementierung von TCP RFC 7323 (TCP-Zeitstempel, RTT-Messung, PAWS, Fenster-Skalierung), MSS (MaximalgröĂe des Segments), RTO (Retransmission Timeout) und SACK (Selective Acknowledgment). Mehrere Algorithmen zur Kontrolle der Ăberlastung.
Zu den EinschrĂ€nkungen von wolfIP gehört die Möglichkeit, wolfIP nur als Endpunkt zu verwenden, der Verbindungen annehmen und herstellen kann, jedoch keine Datenverkehrsweiterleitung zwischen Netzwerkschnittstellen unterstĂŒtzt.
ZusÀtzlich kann die aktive Entwicklung des Mitarbeiters von Red Hat eines Àhnlichen TCP/IP-Stacks namens passt erwÀhnt werden, der im Benutzerspeicher arbeitet und keine dynamische Speicherzuweisung verwendet. Das Projekt passt wird entwickelt, um eine Kommunikationsverbindung zwischen der Host-Umgebung und den Gastsystemen in QEMU als sicherere Alternative zu libslirp zu bieten. Der Code von passt ist in C geschrieben, umfasst etwa 5000 Zeilen und wird unter der Lizenz GPLv2+ verbreitet.
Zu den Besonderheiten von passt gehören: IPv6-UnterstĂŒtzung neben IPv4, Optimierung basierend auf AVX2-Instruktionen, Schutz vor SYN-Flood, integrierte UnterstĂŒtzung fĂŒr QEMU, libvirt und Podman, Pakete fĂŒr alle gĂ€ngigen Distributionen, ARP-Proxy-Service, minimalistische DHCPD-, DHCPv6- und NDP-Server, seccomp-Profil zum Blockieren aller ungenutzten Systemaufrufe, UnterstĂŒtzung fĂŒr NAT, Möglichkeit der Nutzung als transparente Alternative zu slirp4netns.
Quelle: opennet.ru
