lwIP Wiki
Register
Advertisement

Over the last few years, the interest for connecting computers and computer supported devices to wireless networks has steadily increased. Computers are becoming more and more seamlessly integrated with everyday equipment and prices are dropping. At the same time wireless networking technologies, such as Bluetooth and IEEE 802.11b/g ("wifi"), have become commonplace. This gives rise to many new fascinating scenarios in areas such as health care, safety and security, transportation, and processing industry. Small devices such as sensors can be connected to an existing network infrastructure such as the global Internet, and monitored from anywhere.

The Internet technology has proven itself flexible enough to incorporate the changing network environments of the past few decades. While originally developed for low speed networks such as the ARPANET, the Internet technology today runs over a large spectrum of link technologies with vastly different characteristics in terms of bandwidth and bit error rate. It is highly advantageous to use the existing Internet technology in the wireless networks of tomorrow since a large number of applications using the Internet technology have been developed. Also, the large connectivity of the global Internet is a strong incentive. Since small devices such as sensors are often required to be physically small and inexpensive, an implementation of the Internet protocols will have to deal with having limited computing resources and memory.

lwIP, a light-weight TCP/IP stack[]

This documentation describes the design and implementation of a small TCP/IP stack called lwIP that is small enough to be used in minimal systems. lwIP is designed to be completely modular. The core stack is an IP implementation, on top of which the user can choose to also add TCP, UDP, DHCP, and many other protocols, including various features of each of these protocols (for example, IP fragmentation and reassembly). More features comes at the cost of increased code size and complexity, and this is fully tunable to the user's needs.

Further, lwIP is designed to operate with or without an OS, and with or without support for threads. It works on 8-bit microprocessors and 32-bit microprocessors, and supports both little- and big-endian systems.

lwIP directory structure[]

The following list is a brief overview of the file and directory structure for lwIP:

lwip/src
lwip/src/api - the Netconn API, Socket API, and the tcpip thread
lwip/src/core - core code: DHCP, TCP, UDP, and support code (memory, netif, etc)
lwip/src/core/ipv4 - IPv4, ICMPv4
lwip/src/core/ipv6 - IPv6, ICMPv6
lwip/src/core/snmp - SNMP
lwip/src/include - all headers and includes
lwip/src/netif - ARP and sample Ethernet driver
lwip/src/netif/ppp - PPP

To get the code for lwIP, see the main Savannah project page.

Advertisement