wolfIP e passt — stack TCP/IP leggeri, che funzionano senza allocazione dinamica della memoria

Gli sviluppatori della libreria crittografica wolfSSL stanno sviluppando lo stack TCP/IP wolfIP, ottimizzato per l'uso su dispositivi embedded con risorse limitate, oltre che per sistemi in tempo reale e soluzioni che richiedono un'elevata affidabilità (Safety-Critical). Per un consumo prevedibile delle risorse, wolfIP non utilizza l'allocazione dinamica della memoria: tutti i buffer e le tabelle dei socket hanno dimensioni fisse e sono configurati in fase di compilazione. Il codice del progetto è scritto in linguaggio C e distribuito sotto licenza GPLv3.

Il progetto può essere utilizzato come stack TCP/IP funzionante in user space, sostituendo lo stack di rete di Linux, FreeBSD e macOS, ed è adatto per applicazioni su sistemi embedded basati su FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks e QNX. Inoltre, sulla base di wolfIP possono essere creati applicativi di rete autonomi, eseguiti sopra l'hardware (bare-metal). In combinazione con la libreria wolfSSL, offre supporto per TLS 1.3, consentendo la creazione di sistemi embedded compatti che supportano HTTPS.

Caratteristiche principali di wolfIP:

  • Utilizzo di buffer pre-allocati in memoria statica per la gestione dei pacchetti di rete. Non vengono utilizzate chiamate a malloc e free.
  • Possibilità di utilizzare al posto degli stack di rete di sistema standard sui sistemi POSIX.
  • Supporto per socket BSD in modalità non bloccante e bloccante.
  • Dimensioni compatte (4200 righe di codice, 4 volte meno dello stack TCP/IP lwIP).
  • Supporto per interfacce di rete STM32 Ethernet.
  • Possibilità di utilizzare l'interfaccia di rete TAP per testare il funzionamento senza hardware.
  • Sviluppo con attenzione ai sistemi con elevate necessità di sicurezza: configurazione deterministica e ripetibile; modello di distribuzione che garantisce sicurezza (Secure-by-default); isolamento tra componenti. Supporto per aggiornamenti di versione sicuri; supporto a lungo termine.
  • Considerazione delle esigenze per sistemi ad alta affidabilità: assenza di allocazione dinamica delle risorse; pool di memoria fissi; utilizzo controllato delle risorse; comportamento prevedibile; architettura semplificata; supporto per la generazione di artefatti per la verifica.
  • Implementazione di IPv4, UDP, TCP, IPSEC, ARP, ICMP, client DHCP, client DNS e server HTTP/HTTPS. Supporto nella realizzazione del TCP RFC 7323 (Timestamp TCP, misurazione RTT, PAWS, Window Scaling), MSS (Maximum Segment Size), RTO (Retransmission timeout) e SACK (Selective Acknowledgment). Diversi algoritmi di controllo della congestione.

Tra le limitazioni di wolfIP c'è la possibilità di utilizzare wolfIP solo come nodo finale, capace di accettare e stabilire connessioni, ma non in grado di instradare il traffico tra le interfacce di rete.

In aggiunta, si segnala lo sviluppo attivo da parte di un dipendente di Red Hat di un stack TCP/IP simile chiamato passt, che opera nello spazio utente e non utilizza l'allocazione dinamica della memoria. Il progetto passt si sviluppa per creare un canale di comunicazione tra l'ambiente host e i sistemi guest in QEMU come sostituto più sicuro di libslirp. Il codice di passt è scritto in C, conta circa 5000 righe e viene distribuito con licenza GPLv2+.

Tra le caratteristiche di passt si possono notare: supporto IPv6 oltre a IPv4, ottimizzazioni basate su istruzioni AVX2, protezione da synflood, supporto integrato per QEMU, libvirt e Podman, pacchetti per tutte le distribuzioni popolari, servizio ARP proxy, server DHCPD, DHCPv6 e NDP minimalisti, profilo seccomp per bloccare tutte le chiamate di sistema non utilizzate, supporto NAT, possibilità di utilizzo come sostituto trasparente di slirp4netns.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster