Utvecklarna av kryptografibiblioteket wolfSSL utvecklar TCP/IP-stacken wolfIP, optimerad för anvÀndning pÄ inbyggda enheter med begrÀnsade resurser, samt för system som arbetar i realtid och lösningar som krÀver ökad tillförlitlighet (Safety-Critical). För förutsÀgbart resursutnyttjande anvÀnds ingen dynamisk minnesallokering i wolfIP - alla buffertar och socket-tabeller har fast storlek och konfigureras vid kompilering. Projektets kod Àr skriven i C och distribueras under GPLv3-licens.
Projektet kan anvÀndas som en TCP/IP-stack som körs i anvÀndarutrymme, som ersÀtter nÀtverksstacken i Linux, FreeBSD och macOS, samt Àr lÀmpad för inbyggda system baserade pÄ FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks och QNX. Dessutom kan sjÀlvstÀndiga nÀtverksapplikationer byggas ovanpÄ hÄrdvaran (bare-metal) med wolfIP. I kombination med biblioteket wolfSSL stöds TLS 1.3, vilket möjliggör skapandet av kompakta inbyggda system som stöder HTTPS.
Huvudfunktioner i wolfIP:
- AnvÀndning av förhandsallokerade buffertar i statiskt minne för bearbetning av nÀtverkspaket. Anrop av malloc och free anvÀnds inte.
- Möjlighet att anvÀnda istÀllet för standard systemnÀtverksstackar pÄ POSIX-system.
- Stöd för BSD-sockets i icke-blockerande och blockerande lÀge.
- Kompakt storlek (4200 rader kod, 4 gÄnger mindre Àn TCP/IP-stacken lwIP).
- Stöd för nÀtverksgrÀnssnitt STM32 Ethernet.
- Möjlighet att anvÀnda TAP-nÀtverksgrÀnssnittet för testning utan hÄrdvara.
- Utvecklat med hÀnsyn till system med högre sÀkerhetskrav: deterministisk och reproducerbar konfiguration; en distributionsmodell som sÀkerstÀller sÀkerhet (Secure-by-default); isolering mellan komponenter. Stöd för sÀker versionuppdatering; lÄngsiktig support.
- Beaktande av kraven för högpÄlitliga system: ingen dynamisk resursallokering; fasta minnespooler; kontrollerad anvÀndning av resurser; förutsÀgbart beteende; förenklad arkitektur; stöd för generering av artefakter för verifiering.
- Genomförande av IPv4, UDP, TCP, IPSEC, ARP, ICMP, DHCP-klient, DNS-klient och HTTP/HTTPS-server. Stöd för implementering av TCP RFC 7323 (TCP-tidsstÀmpel, RTT-mÀtning, PAWS, fönster-skala), MSS (Maximal segmentstorlek), RTO (à teröverföringstid) och SACK (Selektiv bekrÀftelse). Flera algoritmer för överbelastningskontroll.
Bland begrÀnsningarna för wolfIP Àr det vÀrt att notera att wolfIP endast kan anvÀndas som en slutpunkt som kan ta emot och etablera anslutningar, men som inte stödjer trafikrutning mellan nÀtverksgrÀnssnitt.
Det bör ocksÄ nÀmnas att en anstÀlld pÄ Red Hat aktivt utvecklar en liknande TCP/IP-stack, passt, som fungerar i anvÀndarrummet och inte anvÀnder dynamisk minnesallokering. Projektet passt utvecklas för att organisera kommunikationskanalen mellan vÀrdmiljön och gÀstsystemen i QEMU som en sÀkrare ersÀttning för libslirp. Koden för passt Àr skriven i C och bestÄr av cirka 5000 rader, och distribueras under licensen GPLv2+.
Bland funktionerna hos passt kan man nÀmna: stöd för IPv6 förutom IPv4, optimeringar baserade pÄ AVX2-instruktioner, skydd mot synflood, inbyggt stöd för QEMU, libvirt och Podman, paket för alla populÀra distributioner, ARP-proxyservice, minimalistiska servrar DHCPD, DHCPv6 och NDP, seccomp-profil för att blockera alla oanvÀnda systemanrop, stöd för NAT, möjlighet att fungera som en transparent ersÀttning för slirp4netns.
KĂ€lla: opennet.ru
