wolfIP a passt — lehké TCP/IP zásobníky fungující bez dynamického přidělování paměti

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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster