Razvijači kriptografsku knjižnicu wolfSSL razvijaju TCP/IP stek wolfIP, optimiziran za korištenje na ugrađenim uređajima s ograničenim resursima, kao i za sustave koji rade u stvarnom vremenu i rješenja koja zahtijevaju visoku pouzdanost (Safety-Critical). Za predvidivu potrošnju resursa u wolfIP se ne koristi dinamička dodjela memorije — svi baferi i tablice soketa imaju fiksnu veličinu i konfiguriraju se tijekom kompilacije. Kod projekta napisan je u jeziku C i distribuira se pod GPLv3 licencom.
Projekt se može koristiti kao TCP/IP stek koji radi u korisničkom prostoru, zamjenjujući mrežni stek Linuxa, FreeBSD-a i macOS-a, a također je pogodan za aplikacije u ugrađenim sustavima temeljenim na FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks i QNX. Uz to, na temelju wolfIP-a mogu se razvijati samostalne mrežne aplikacije koje se pokreću iznad hardvera (bare-metal). U kombinaciji s knjižnicom wolfSSL pruža podršku za TLS 1.3, što omogućuje izradu kompaktnim ugrađenim sustavima koji podržavaju HTTPS.
Osnovne značajke wolfIP:
- Korištenje unaprijed dodijeljenih bafera u statičkoj memoriji za obradu mrežnih paketa. Pozivi malloc i free se ne koriste.
- Mogućnost korištenja umjesto standardnih sustavnih mrežnih stekova na POSIX sustavima.
- Podrška za BSD sokete u neblokirajućem i blokirajućem načinu rada.
- Kompaktna veličina (4200 linija koda, 4 puta manje od TCP/IP steka lwIP).
- Podrška za mrežne sučelje STM32 Ethernet.
- Mogućnost korištenja mrežnog sučelja TAP za testiranje rada bez opreme.
- Razvoj s fokusom na sustave s povećanim zahtjevima za sigurnost: deterministička i reproducibilna konfiguracija; model implementacije koji osigurava sigurnost (Secure-by-default); izolacija između komponenti. Podrška za sigurno ažuriranje verzija; dugotrajna podrška.
- Uzimanje u obzir zahtjeva za visoko pouzdane sustave: nema dinamičke dodjele resursa; fiksni bazeni memorije; kontrolirana potrošnja resursa; predvidljivo ponašanje; pojednostavljena arhitektura; podrška za generiranje artefakata za verifikaciju.
- Implementacija IPv4, UDP, TCP, IPSEC, ARP, ICMP, DHCP klijenta, DNS klijenta i HTTP/HTTPS servera. Podrška za implementaciju TCP RFC 7323 (TCP Timestamps, mjerenje RTT, PAWS, Window Scaling), MSS (Maksimalna veličina segmenta), RTO (Vrijeme ponovnog slanja) i SACK (Selektivno priznavanje). Više algoritama kontrole preopterećenja.
Među ograničenjima wolfIP ističe se mogućnost korištenja wolfIP-a samo kao krajnje točke koja može primati i uspostavljati veze, ali ne podržava usmjeravanje prometa između mrežnih sučelja.
Osim toga, može se istaknuti aktivni razvoj sličnog TCP/IP stoga passt od strane zaposlenika Red Hat, koji radi u korisničkom prostoru i ne koristi dinamičko dodjeljivanje memorije. Projekt passt se razvija za organizaciju komunikacijskog kanala između host okruženja i gostujućih sustava u QEMU kao sigurnija zamjena za libslirp. Kod passt-a napisan je u C-u, ima oko 5000 redaka i distribuira se pod GPLv2+ licencom.
Među značajkama passt-a može se istaknuti: podrška za IPv6 uz IPv4, optimizacija bazirana na AVX2 instrukcijama, zaštita od synflood-a, ugrađena podrška za QEMU, libvirt i Podman, paketi za sve popularne distribucije, ARP proxy servis, minimalistički DHCPD, DHCPv6 i NDP serveri, seccomp profil za blokiranje svih neiskorištenih sistemskih poziva, podrška za NAT, mogućnost korištenja kao prozirna zamjena za slirp4netns.
Izvor: opennet.ru
