lwIP
startFeatures
-
Dual-stack IPv4 and IPv6 support with packet forwarding over multiple network interfaces.
-
Full TCP implementation featuring congestion control, RTT estimation, fast recovery, and fast retransmit.
-
UDP and experimental UDP-lite extensions for low-overhead transport.
-
ICMP and ICMPv6 support for network maintenance and diagnostic functions.
-
IGMP and MLDv1 support for managing multicast traffic and listener discovery.
-
Neighbor Discovery (ND) and stateless address autoconfiguration for IPv6 compliance (RFC 4861/4862).
-
Comprehensive IP addressing via DHCP, DHCPv6, AutoIP/APIPA (Zeroconf), and Address Conflict Detection (ACD).
-
DNS client including support for mDNS (Multicast DNS) responder.
-
Layered TCP (altcp) abstraction for transparent TLS integration, typically ported to mbedTLS.
-
Point-to-Point Protocol support including PPPoS (over Serial) and PPPoE (over Ethernet).
-
6LoWPAN adaptation layer for low-power wireless networks like IEEE 802.15.4 and BLE.
-
Integrated HTTP/HTTPS server with support for Server Side Includes (SSI) and CGI.
-
SNMPv2c/v3 agent with an included MIB compiler for network management.
-
MQTT client with optional TLS encryption for secure IoT messaging.
-
SNTP (Simple Network Time Protocol) implementation for clock synchronization.
-
NetBIOS name service responder and iPerf server for network performance testing.
Architecture
lwIP is designed with a modular architecture that balances the need for a layered protocol stack with the performance requirements of resource-constrained hardware. The core stack is contained within the src directory, while platform-specific ports and optional applications reside in the contrib directory. A central feature of its architecture is the pbuf (packet buffer) structure, which allows for zero-copy data handling as packets move through the various layers of the stack, significantly reducing CPU and memory overhead.
To accommodate different system designs, lwIP provides three distinct Application Programming Interfaces (APIs):
- Raw API: A callback-based, event-driven interface that provides the highest performance and lowest memory footprint by running directly in the TCP/IP thread.
- Netconn API: A sequential, thread-safe API that requires an operating system (RTOS) and provides a simplified programming model.
- Socket API: A BSD-compatible socket layer built on top of the Netconn API, facilitating the porting of existing standard networking code.
Use Cases
This library is ideal for:
- IoT End-Nodes: Small, battery-powered sensors using 6LoWPAN or BLE to communicate with gateways.
- Industrial Automation: PLCs and industrial controllers requiring reliable TCP/IP communication for Modbus/TCP or Ethernet/IP protocols.
- Embedded Web Servers: Devices providing local configuration or monitoring dashboards via HTTP or HTTPS.
- Network Gateways: Systems bridging traffic between different physical layers, such as Ethernet to Serial (PPP) or WiFi to 6LoWPAN.
- Resource-Constrained Systems: Microcontrollers with limited RAM (e.g., 20KB-50KB) that still require a full-featured, standards-compliant network stack.
Getting Started
Developers can begin by exploring the src directory for the core protocol implementations and the contrib directory for existing ports to various hardware and operating systems. The stack requires a header file named lwipopts.h to be defined by the user, which configures the stack’s features and memory limits at compile-time. For systems using an RTOS, a system abstraction layer (sys_arch) must be implemented to handle threading and synchronization. Comprehensive self-documentation extracted from the source code is available at the official lwIP documentation site, and development is centrally managed via the Savannah Git repository.
Related Projects (272)
View All 272 Projects →
OttoClaw
OttoClaw is an AI-powered desktop humanoid robot system built on the ESP32-S3 and FreeRTOS. It features a local lightweight agent that handles conversation, memory, and autonomous physical movements through six servos without relying on cloud servers, utilizing LVGL for its graphical interface and SPIFFS for local data persistence.
ESP32 RISC-V Bare-Metal SDK
A minimal bare-metal SDK for Espressif RISC-V microcontrollers, specifically the ESP32-C6 and ESP32-P4, designed to operate independently of the ESP-IDF framework. It provides low-level hardware access through direct register-level programming, custom startup code, and linker scripts while integrating the lwIP and NimBLE stacks for networking and Bluetooth functionality.
ESP32-CAM MJPEG Streaming and SD Capture
A robust ESP-IDF project for the AI-Thinker ESP32-CAM module featuring real-time MJPEG streaming and automated microSD storage. It provides a web interface and REST API for remote monitoring and control using the FreeRTOS-based ESP-IDF framework.
WiFi Remote Display ADV
An ultra-low latency screen mirroring tool for the M5Stack Cardputer that utilizes USB HID injection to deploy a Python-based UDP streaming engine. It features adaptive bitrate management, flicker-free display rendering, and robust WiFi handling on the ESP32 platform.
ESP32 Network Scanner
An energy-efficient network discovery tool for the ESP32 that utilizes ARP (Address Resolution Protocol) to identify devices on a LAN. Built using ESP-IDF and lwIP, it provides a real-time web interface to monitor device connectivity, bypassing the limitations of traditional ICMP ping scans.
TankSync
TankSync is a solar-powered, local-first smart water monitoring system built on ESP32 and ESP32-C3 hardware using the ESP-IDF framework. It utilizes long-range LoRa communication to bridge rooftop sensors with an indoor hub, offering Home Assistant integration and offline reliability via FreeRTOS-based firmware.
DCF77 Transmitter
An ESP8266-based signal generator that synchronizes radio-controlled clocks by mimicking the German DCF77 longwave time station. It fetches precise time via NTP over Wi-Fi and uses PWM harmonics to broadcast a localized 77.5 kHz signal.
Ameba RTOS SDK
A comprehensive IoT development framework for Realtek Ameba series SoCs, providing a robust environment for building connected applications. It primarily leverages the FreeRTOS kernel and integrates essential networking stacks like lwIP, Wi-Fi, and Bluetooth. The SDK supports a wide range of Realtek chips, including the RTL8730E and RTL8721Dx, with tools for both CLI and VS Code-based development.