Supriya Ghosh (Editor)

LwIP

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Original author(s)
  
Adam Dunkels

Development status
  
active

Operating system
  
multiple

Developer(s)
  
lwIP developers group

Written in
  
C

Stable release
  
2.0.1 / 10 January 2017; 38 days ago (2017-01-10)

lwIP (lightweight IP) is a widely used open source TCP/IP stack designed for embedded systems. lwIP was originally developed by Adam Dunkels at the Swedish Institute of Computer Science and is now developed and maintained by a worldwide network of developers.

lwIP is used by many manufacturers of embedded systems. Examples include Altera (in the Nios II operating system), Analog Devices (for the Blackfin DSP chip), Xilinx, Honeywell (for some of their FAA certified avionics systems) and Freescale Semiconductor (Ethernet Streaming SW for Automotive microcontrollers).

The focus of the lwIP TCP/IP implementation is to reduce resource usage while still having a full-scale TCP. This makes lwIP suitable for use in embedded systems with tens of kilobytes of free RAM and room for around 40 kilobytes of code ROM.

lwIP features

Internet layer

  • IP (Internet Protocol) including packet forwarding over multiple network interfaces
  • ICMP (Internet Control Message Protocol) for network maintenance and debugging
  • IGMP (Internet Group Management Protocol) for multicast traffic management
  • Transport layer

  • UDP (User Datagram Protocol) including experimental UDP-Lite extensions
  • TCP (Transmission Control Protocol) with congestion control, RTT estimation and fast recovery/fast retransmit
  • Application layer

  • DNS (Domain Name System)
  • SNMP (Simple Network Management Protocol)
  • DHCP (Dynamic Host Configuration Protocol)
  • Link layer

  • PPP (Point-to-Point Protocol)
  • ARP (Address Resolution Protocol) for Ethernet
  • Other

  • Specialized raw/native API for enhanced performance
  • Optional Berkeley-like socket API
  • AUTOIP / Link-local address (for IPv4, conforms with RFC 3927)
  • References

    LwIP Wikipedia