wolfSSL SSL/TLS เป็นที่รู้จักกันดีจากไลบรารีแบบโอเพ่นซอร์ส และบริษัท wolfSSL ได้เปิดตัว wolfIP ซึ่งเป็นสแตก TCP/IP แบบโอเพ่นซอร์สที่มีน้ำหนักเบา (lightweight) โดยออกแบบมาให้ไม่มีการจัดสรรหน่วยความจำแบบไดนามิก (เช่น ไม่มีการเรียกใช้ malloc) เหมาะสำหรับระบบฝังตัว (embedded systems) ที่มีทรัพยากรจำกัด
ทางบริษัทระบุว่า wolfIP รองรับทั้งโหมดใช้งานแบบปลายทางเท่านั้น (endpoint-only) และรองรับหลายอินเทอร์เฟซแบบเต็มรูปแบบ พร้อมตัวเลือกสำหรับการส่งต่อแพ็กเก็ต (IP forwarding) โดยค่าเริ่มต้นจะทำงานเป็นอุปกรณ์ปลายทางของเครือข่าย แต่สามารถตั้งค่าให้ทำหน้าที่ส่งต่อทราฟฟิกระหว่างอินเทอร์เฟซเครือข่ายหลายตัวได้
คุณสมบัติเด่นของ wolfIP:
- API แบบซ็อกเก็ตลักษณะคล้าย BSD รองรับการทำงานแบบไม่บล็อก (non-blocking) พร้อม callback ที่ปรับแต่งได้
- ไม่มีการจัดสรรหน่วยความจำแบบไดนามิก
- กำหนดจำนวนซ็อกเก็ตที่ใช้งานพร้อมกันได้แบบคงที่
- ใช้บัฟเฟอร์ที่จัดเตรียมไว้ล่วงหน้าสำหรับการประมวลผลแพ็กเก็ตในหน่วยความจำแบบสแตติก
- สามารถปรับแต่งพารามิเตอร์ต่าง ๆ ได้ในไฟล์ config.h:
12345#define MAX_TCPSOCKETS 4#define MAX_UDPSOCKETS 2#define MAX_ICMPSOCKETS 2#define RXBUF_SIZE (20 * 1024)#define TXBUF_SIZE (32 * 1024)
- โปรโตคอลที่รองรับ
- Data Link – IEEE 802.3 Ethernet II frame encapsulation, ARP address resolution, request/reply
- Network
- การรับส่งข้อมูลแบบ IPv4
- รองรับการส่งต่อ IPv4 (IPv4 forwarding) แบบเลือกใช้ พร้อมการทำ routing หลายอินเทอร์เฟซ
- ICMP echo request/reply
- IPsec
- Transport – โปรโตคอล UDP และ TCP
- Applications – DHCP (เฉพาะ client ), DNS (เฉพาะ client) และ HTTP/HTTPS (ใช้งานร่วมกับ wolfSSL)
- VPN – wolfGuard ซึ่งเป็นการใช้งาน WireGuard ที่สอดคล้องกับมาตรฐาน FIPS (ใช้ P-256, AES-256-GCM, SHA-256); หมายเหตุ: ไม่สามารถใช้งานร่วมกับ WireGuard มาตรฐานได้
- รองรับการพอร์ตใช้งานกับ FreeRTOS
ไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์ที่ใช้ในระบบฝังตัว (embedded systems) ไม่เพียงมีทรัพยากรจำกัดเท่านั้น แต่ยังมักไม่มีหน่วยจัดการหน่วยความจำ (MMU) และมีพื้นที่ heap ที่จำกัด ทำให้การจัดสรรหน่วยความจำแบบไดนามิกเป็นเรื่องท้าทาย และอาจนำไปสู่การล่มของระบบได้ การไม่ต้องพึ่งพา malloc จึงอาจช่วยให้ระบบมีความเสถียรมากยิ่งขึ้น
คุณสามารถค้นหาซอร์สโค้ด (ภาษา C) ที่เผยแพร่ภายใต้สัญญาอนุญาตแบบ GPLv3 รวมถึงเอกสาร API (docs/API.md), คู่มือการใช้งาน wolfIP บนไมโครคอนโทรลเลอร์ STM32 ที่มี Ethernet โดยใช้ STM32CubeMX และแพ็กเกจ wolfIP CMSIS, รวมถึงเครื่องมือต่าง ๆ ได้บน GitHub ถ้าคุณต้องการใช้ภาษาโปรแกรม Rust หรือจำเป็นต้องรองรับ IPv6, smoltcp library ก็สามารถตั้งค่าให้ไม่ใช้การจัดสรรหน่วยความจำแบบไดนามิกได้เช่นกัน
แปลจากบทความ : wolfIP – An open-source, lightweight TCP/IP stack with no dynamic memory allocations for embedded systems

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT

