wolfIP؛ استک TCP/IP بدون تخصیص حافظهٔ پویا
خلاصهٔ کاملتر
به گفتهٔ صفحهٔ پروژه، wolfIP یه استک TCP/IP ـه که هدف اصلیش اجرا روی سیستمهای نهفتهٔ کممنبعه و مهمترین ویژگیش اینه که هیچ تخصیص حافظهٔ پویایی انجام نمیده. یعنی تعداد سوکتهای همزمان ثابته و بافرهای پردازش بستهها از قبل توی حافظهٔ ایستا رزرو شدن؛ همین رفتار رو برای دستگاههای محدود قابلپیشبینی و امنتر میکنه.
بهطور پیشفرض بهعنوان یه نقطهٔپایانیِ شبکه کار میکنه، ولی میشه طوری تنظیمش کرد که ترافیک رو بین چند رابط شبکه فوروارد کنه. یه API سوکتِ غیرمسدودکننده و شبیه BSD با callbackهای سفارشی ارائه میده و انواع سوکت TCP، UDP، ICMP و سوکتهای خام IPv4 و لایهٔپیوند رو پوشش میده.
از نظر پروتکلها دامنهش گستردهست: از ARP و IPv4 و ICMP و IGMPv3 تا یه پیادهسازیِ نسبتاً کامل از TCP با مذاکرهٔ MSS، برچسبهای زمانی، پنجرهٔ لغزان، محاسبهٔ RTO، SACK و کنترل ازدحام. سمت کاربرد هم کلاینت DHCP و DNS و یه سرور HTTP/HTTPS با پشتیبانی TLS از طریق wolfSSL داره. یه ماژول TFTPِ بدون تخصیص و یه supplicant وایفای داخلی با WPA2 و WPA3 هم اضافه شده.
یکی از نکتههای قابلتوجه، درایور بومیِ wolfGuard ـه؛ یه پیادهسازیِ سازگار با FIPS از پروتکل WireGuard که کاملاً داخل خود استک اجرا میشه. wolfGuard بهجای پکیجِ رمزنگاریِ استاندارد WireGuard، از اولیههای گواهیشدهٔ wolfSSL استفاده میکنه؛ مثلاً بهجای Curve25519 از ECDH روی P-256 و بهجای ChaCha20-Poly1305 از AES-256-GCM. به همین دلیل با پیرهای استاندارد WireGuard سازگار نیست و فقط با نمونههای wolfGuard دیگه کار میکنه.
پروژه ابزار تست هم فراهم کرده. با یه shim مبتنیبر POSIX میشه کتابخونه رو جلوی ابزارهای میزبان تزریق کرد تا فراخوانیهای سوکتشون بهجای هستهٔ سیستمعامل به wolfIP بره و از طریق یه دستگاه TAP سرویس بگیره. تستهای تعاملی برای wolfGuard، مالتیکست و ICMP هم گنجونده شده.
یه پورت اختصاصی برای FreeRTOS هم اضافه شده که همون مدل wrapper نسخهٔ POSIX رو دنبال میکنه: یه تسک پسزمینه روی حلقهٔ poll میچرخه، دسترسی به استک با mutex سریال میشه و عملیات مسدودکننده بهجای poll مداوم، منتظر بیدارباشِ callbackمحور میمونه. پروژه تحت مجوز GPLv3 منتشر شده.
نکات کلیدی:
- استک TCP/IP بدون هیچ تخصیص حافظهٔ پویا، مناسب سیستمهای نهفتهٔ کممنبع
- API سوکتِ غیرمسدودکنندهٔ شبیه BSD با پشتیبانی از چند رابط و فورواردینگ IPv4
- پیادهسازیِ نسبتاً کامل TCP بههمراه کلاینت DHCP/DNS و سرور HTTPS
- wolfGuard: نسخهٔ WireGuardِ سازگار با FIPS که با پیرهای استاندارد سازگار نیست
- پورت FreeRTOS و ابزار تست با shimِ POSIX و دستگاه TAP




