Dezvoltatorii bibliotecii criptografice wolfSSL dezvoltă stiva TCP/IP wolfIP, optimizată pentru utilizarea pe dispozitive integrate cu resurse limitate, precum și pentru sisteme care funcționează în timp real și soluții care necesită o fiabilitate sporită (Safety-Critical). Pentru un consum predictibil de resurse, wolfIP nu folosește alocare dinamică a memoriei — toate buferii și tabelele de socket-uri au dimensiuni fixe și sunt configurate în etapa de compilare. Codul proiectului este scris în limbajul C și se distribuie sub licența GPLv3.
Proiectul poate fi utilizat ca un stivă TCP/IP funcțională în spațiul utilizatorului, care înlocuiește stiva de rețea a Linux, FreeBSD și macOS, precum și fiind potrivit pentru utilizarea în sisteme integrate bazate pe FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks și QNX. În plus, pe baza wolfIP pot fi create aplicații de rețea autonome, care rulează pe hardware (bare-metal). Împreună cu biblioteca wolfSSL, se oferă suport pentru TLS 1.3, ceea ce permite crearea de sisteme integrate compacte, care suportă HTTPS.
Caracteristici principale ale wolfIP:
- Utilizarea buferilor pre-alocate în memorie statică pentru procesarea pachetelor de rețea. Apelurile malloc și free nu sunt utilizate.
- Posibilitatea de a folosi în locul stivelor de rețea sistemice standard în sistemele POSIX.
- Suport pentru BSD-socket-uri în mod neblocat și blocat.
- Dimensiune compactă (4200 de linii de cod, de 4 ori mai mic decât stiva TCP/IP lwIP).
- Suport pentru interfețele de rețea STM32 Ethernet.
- Posibilitatea de a utiliza interfața de rețea TAP pentru testarea funcționalității fără hardware.
- Dezvoltare având în vedere sisteme cu cerințe ridicate de securitate: configurație deterministă și reproducibilă; model de desfășurare sigur (Secure-by-default); izolare între componente. Suport pentru actualizări de versiuni sigure; întreținere pe termen lung.
- Considerarea cerințelor pentru sisteme de înaltă fiabilitate: absența alocării dinamice a resurselor; grupuri de memorie fixe; utilizare controlată a resurselor; comportament predictibil; arhitectură simplificată; suport pentru generarea de artefacte pentru verificare.
- Implementarea IPv4, UDP, TCP, IPSEC, ARP, ICMP, client DHCP, client DNS și server HTTP/HTTPS. Suport pentru implementarea TCP RFC 7323 (Timestamps TCP, măsurarea RTT, PAWS, Scalarea ferestrei), MSS (Maximum Segment Size), RTO (Retransmission timeout) și SACK (Selective Acknowledgment). Mai multe algoritme de control al congestiei.
Din limitările wolfIP se menționează că poate fi utilizat doar ca nod final, capabil să primească și să stabilească conexiuni, dar fără a suporta rutarea traficului între interfețele de rețea.
De asemenea, se remarcă dezvoltarea activă de către un angajat Red Hat a unui stiv TCP/IP similar, numit passt, care funcționează în spațiul utilizatorului și nu folosește alocarea dinamică a memoriei. Proiectul passt este dezvoltat pentru a organiza un canal de comunicație între mediu gazdă și sistemele oaspete în QEMU ca o înlocuire mai sigură pentru libslirp. Codul passt este scris în C, are aproximativ 5000 de linii și este distribuit sub licența GPLv2+.
Printre caracteristicilepasst se numără: suportul IPv6 pe lângă IPv4, optimizări bazate pe instrucțiuni AVX2, protecție împotriva synflood, suport încorporat pentru QEMU, libvirt și Podman, pachete pentru toate distribuțiile populare, serviciu ARP proxy, servere DHCPD, DHCPv6 și NDP minimaliste, profil seccomp pentru blocarea tuturor apelurilor de sistem neutilizate, suport NAT, posibilitatea utilizării ca înlocuire transparentă a slirp4netns.
Sursa: opennet.ro
