Die Entwickler der kryptografischen Bibliothek wolfSSL arbeiten an dem TCP/IP-Stack wolfIP, der fĂŒr den Einsatz auf ressourcenbeschrĂ€nkten Embedded-GerĂ€ten und fĂŒr Systeme in Echtzeit sowie fĂŒr Lösungen, die eine hohe ZuverlĂ€ssigkeit (Safety-Critical) erfordern, optimiert ist. Um einen vorhersehbaren Ressourcenverbrauch zu gewĂ€hrleisten, wird in wolfIP keine dynamische Speicherzuweisung verwendet â alle Puffer und Socket-Tabellen haben eine feste GröĂe und werden zur Compile-Zeit konfiguriert. Der Code des Projekts ist in C geschrieben und wird unter der Lizenz GPLv3 vertrieben.
Das Projekt kann als ein im Benutzerspeicher arbeitender TCP/IP-Stack verwendet werden, der den Netzwerkstack von Linux, FreeBSD und macOS ersetzt und auch fĂŒr Embedded-Systeme auf Basis von FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks und QNX geeignet ist. DarĂŒber hinaus können auf der Grundlage von wolfIP eigenstĂ€ndige Netzwerk-Anwendungen erstellt werden, die direkt auf der Hardware (bare-metal) ausgefĂŒhrt werden. In Kombination mit der Bibliothek wolfSSL wird TLS 1.3 unterstĂŒtzt, was die Entwicklung kompakter Embedded-Systeme mit HTTPS ermöglicht.
Hauptmerkmale von wolfIP:
- Verwendung von bei der Verarbeitung von Netzpaketen vorherzugewiesenen Puffern im statischen Speicher. Die Aufrufe von malloc und free werden nicht verwendet.
- Möglichkeit, anstelle der standardmĂ€Ăigen systemmĂ€Ăigen Netzwerk-Stacks auf POSIX-Systemen verwendet zu werden.
- 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 STM32 Ethernet-Netzwerkschnittstellen.
- Möglichkeit, die TAP-Netzwerkschnittstelle zum Testen ohne Hardware zu verwenden.
- Entwicklung mit Fokus auf Systeme mit hohen Sicherheitsanforderungen: deterministische und reproduzierbare Konfiguration; Bereitstellungsmodell, das Sicherheit gewĂ€hrleistet (Secure-by-default); Isolation zwischen Komponenten. UnterstĂŒtzung fĂŒr sichere Versionsupdates; langfristige UnterstĂŒtzung.
- BerĂŒcksichtigung der Anforderungen an hochzuverlĂ€ssige Systeme: keine dynamische Ressourcenverteilung; feste Speichermengen; kontrollierte Ressourcennutzung; vorhersehbares Verhalten; vereinfachte Architektur; UnterstĂŒtzung fĂŒr die Generierung von Artefakten zur Verifizierung.
- 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-Timestamps, RTT-Messung, PAWS, Window Scaling), MSS (Maximum Segment Size), RTO (Retransmission Timeout) und SACK (Selective Acknowledgment). Mehrere Algorithmen zur Ăberlastkontrolle (congestion control).
Zu den EinschrÀnkungen von wolfIP gehört, dass wolfIP nur in der Rolle eines EndgerÀts verwendet werden kann, das in der Lage ist, Verbindungen herzustellen und anzunehmen, jedoch keinen Traffic zwischen Netzwerkschnittstellen routieren kann.
ZusÀtzlich ist die aktive Entwicklung eines Àhnlichen TCP/IP-Stacks namens passt zu erwÀhnen, der im Benutzerspeicher arbeitet und keine dynamische Speicherzuweisung verwendet. Das passt-Projekt wird entwickelt, um eine Kommunikationsverbindung zwischen der Host-Umgebung und den Gastsystemen in QEMU als sicherere Alternative zu libslirp zu schaffen. Der Code von passt ist in C geschrieben, umfasst etwa 5000 Zeilen und wird unter der Lizenz GPLv2+ vertrieben.
Zu den Merkmalen von passt zĂ€hlen: IPv6-UnterstĂŒtzung Neben IPv4 Optimierungen auf Basis von AVX2-Instruktionen, Schutz vor Synflood, 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 zur Blockierung aller ungenutzten Systemaufrufe, UnterstĂŒtzung fĂŒr NAT und die Möglichkeit, als transparente Alternative zu slirp4netns zu fungieren.
Quelle: opennet.ru
