Vývojáři kryptografické knihovny wolfSSL vyvíjejí TCP/IP zásobník wolfIP, optimalizovaný pro použití na vestavěných zařízeních s omezenými zdroji, jakož i pro systémy fungující v reálném čase a pro řešení vyžadující vyšší spolehlivost (Safety-Critical). Pro předvídatelnou spotřebu zdrojů není ve wolfIP používáno dynamické přidělování paměti — všechny buffery a tabulky soketů mají fixní velikost a jsou konfigurovány během kompilace. Kód projektu je napsán v jazyce C a je distribuován pod licencí GPLv3.
Projekt může být použit jako TCP/IP zásobník běžící v uživatelském prostoru, nahrazující síťový zásobník Linuxu, FreeBSD a macOS, a také je vhodný pro použití ve vestavěných systémech založených na FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks a QNX. Kromě toho lze na základě wolfIP vytvářet samostatné síťové aplikace běžící na hardwaru (bare-metal). V kombinaci s knihovnou wolfSSL poskytuje podporu TLS 1.3, což umožňuje vytváření kompaktních vestavěných systémů podporujících HTTPS.
Hlavní vlastnosti wolfIP:
- Použití předem alokovaných bufferů ve statické paměti při zpracování síťových paketů. Volání malloc a free nejsou používána.
- Možnost použití místo standardních systémových síťových zásobníků na systémech POSIX.
- Podpora BSD soketů v neblokujícím a blokujícím režimu.
- Kompaktní velikost (4200 řádků kódu, 4krát méně než TCP/IP zásobník lwIP).
- Podpora síťových rozhraní STM32 Ethernet.
- Možnost použití síťového rozhraní TAP pro testování v režimu bez hardwaru.
- Vývoj zaměřený na systémy s vysokými bezpečnostními požadavky: deterministická a reprodukovatelná konfigurace; model nasazení zajišťující bezpečnost (Secure-by-default); izolace mezi komponentami. Podpora bezpečných aktualizací verzí; dlouhá podpora.
- Zohlednění požadavků na vysoce spolehlivé systémy: žádné dynamické přidělování zdrojů; fixní paměťové pooly; kontrolované používání zdrojů; předvídatelné chování; zjednodušená architektura; podpora generování artefaktů pro verifikaci.
- Implementace IPv4, UDP, TCP, IPSEC, ARP, ICMP, DHCP klienta, DNS klienta a HTTP/HTTPS serveru. Podpora v implementaci TCP RFC 7323 (TCP časové razítka, měření RTT, PAWS, Window Scaling), MSS (Maximum Segment Size), RTO (Retransmission timeout) a SACK (Selective Acknowledgment). Různé algoritmy řízení přetížení (congestion control).
Mezi omezeními wolfIP se uvádí, že wolfIP může být použito pouze v roli koncového uzlu schopného přijímat a navazovat spojení, ale nepodporuje směrování provozu mezi síťovými rozhraními.
Dále lze zmínit aktivní vývoj podobného TCP/IP stacku passt zaměstnancem Red Hat, který funguje v uživatelském prostoru a nevyžaduje dynamické přidělování paměti. Projekt passt se vyvíjí za účelem zajištění komunikačního kanálu mezi hostitelským prostředím a hostitelskými systémy v QEMU jako bezpečnější alternativa k libslirp. Kód passt je napsán v jazyce C, obsahuje přibližně 5000 řádků a je distribuován pod licencí GPLv2+.
Mezi vlastnostmi passt lze zmínit: podpora IPv6 kromě IPv4, optimalizace na základě instrukcí AVX2, ochrana proti synfloodu, vestavěná podpora QEMU, libvirt a Podman, balíčky pro všechny populární distribuce, služba ARP proxy, minimalistické servery DHCPD, DHCPv6 a NDP, seccomp profil pro blokaci všech nevyužívaných systémových volání, podpora NAT, možnost použití jako transparentní náhrada slirp4netns.
Zdroj: opennet.ru
