wolfIP e passt — stack TCP/IP leggeri che operano senza allocazione dinamica di memoria

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

Il progetto può essere utilizzato come stack TCP/IP in spazio utente, in sostituzione dello stack di rete di Linux, FreeBSD e macOS, ed è adatto all'uso in sistemi embedded basati su FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks e QNX. Inoltre, su base wolfIP possono essere creati applicativi di rete autonomi, eseguibili direttamente sull'hardware (bare-metal). In combinazione con la libreria wolfSSL, è supportato TLS 1.3, permettendo la creazione di sistemi embedded compatti che supportano HTTPS.

Caratteristiche principali di wolfIP:

  • Utilizzo di buffer pre-allocati in memoria statica durante l'elaborazione dei pacchetti di rete. Non vengono utilizzate chiamate a malloc e free.
  • Possibilità di utilizzo in sostituzione degli stack di rete di sistema standard su sistemi POSIX.
  • Supporto per i socket BSD in modalità non bloccante e bloccante.
  • Dimensioni compatte (4200 righe di codice, 4 volte più piccolo 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 un occhio di riguardo per i sistemi con elevati requisiti di sicurezza: configurazione deterministica e riproducibile; modello di distribuzione sicuro (Secure-by-default); isolamento tra i componenti. Supporto per aggiornamenti di versione sicuri; lungo periodo di supporto.
  • Considerazione dei requisiti 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 nell'implementazione TCP secondo RFC 7323 (TCP Timestamps, misurazione RTT, PAWS, Window Scaling), MSS (Maximum Segment Size), RTO (Retransmission timeout) e SACK (Selective Acknowledgment). Diversi algoritmi di controllo della congestione.

Tra i limiti di wolfIP si segnala la possibilità di utilizzare wolfIP solo come nodo finale, in grado di accettare e stabilire connessioni, ma non supporta il routing del traffico tra interfacce di rete.

Inoltre, vale la pena notare lo sviluppo attivo, da parte di un dipendente di Red Hat, di uno stack TCP/IP simile chiamato passt, funzionante in spazio utente e non utilizzando allocazione dinamica della memoria. Il progetto passt è in fase di sviluppo per organizzare 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, ammonta a circa 5000 righe e distribuito con licenza GPLv2+.

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

Fonte: opennet.ru

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