[457] | 1 | INTRODUCTION
|
---|
| 2 |
|
---|
| 3 | lwIP is a small independent implementation of the TCP/IP protocol suite.
|
---|
| 4 |
|
---|
| 5 | The focus of the lwIP TCP/IP implementation is to reduce the RAM usage
|
---|
| 6 | while still having a full scale TCP. This making lwIP suitable for use
|
---|
| 7 | in embedded systems with tens of kilobytes of free RAM and room for
|
---|
| 8 | around 40 kilobytes of code ROM.
|
---|
| 9 |
|
---|
| 10 | lwIP was originally developed by Adam Dunkels at the Computer and Networks
|
---|
| 11 | Architectures (CNA) lab at the Swedish Institute of Computer Science (SICS)
|
---|
| 12 | and is now developed and maintained by a worldwide network of developers.
|
---|
| 13 |
|
---|
| 14 | FEATURES
|
---|
| 15 |
|
---|
| 16 | * IP (Internet Protocol, IPv4 and IPv6) including packet forwarding over
|
---|
| 17 | multiple network interfaces
|
---|
| 18 | * ICMP (Internet Control Message Protocol) for network maintenance and debugging
|
---|
| 19 | * IGMP (Internet Group Management Protocol) for multicast traffic management
|
---|
| 20 | * MLD (Multicast listener discovery for IPv6). Aims to be compliant with
|
---|
| 21 | RFC 2710. No support for MLDv2
|
---|
| 22 | * ND (Neighbor discovery and stateless address autoconfiguration for IPv6).
|
---|
| 23 | Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862
|
---|
| 24 | (Address autoconfiguration)
|
---|
| 25 | * DHCP, AutoIP/APIPA (Zeroconf) and (stateless) DHCPv6
|
---|
| 26 | * UDP (User Datagram Protocol) including experimental UDP-lite extensions
|
---|
| 27 | * TCP (Transmission Control Protocol) with congestion control, RTT estimation
|
---|
| 28 | fast recovery/fast retransmit and sending SACKs
|
---|
| 29 | * raw/native API for enhanced performance
|
---|
| 30 | * Optional Berkeley-like socket API
|
---|
| 31 | * TLS: optional layered TCP ("altcp") for nearly transparent TLS for any
|
---|
| 32 | TCP-based protocol (ported to mbedTLS) (see changelog for more info)
|
---|
| 33 | * PPPoS and PPPoE (Point-to-point protocol over Serial/Ethernet)
|
---|
| 34 | * DNS (Domain name resolver incl. mDNS)
|
---|
| 35 | * 6LoWPAN (via IEEE 802.15.4, BLE or ZEP)
|
---|
| 36 |
|
---|
| 37 |
|
---|
| 38 | APPLICATIONS
|
---|
| 39 |
|
---|
| 40 | * HTTP server with SSI and CGI (HTTPS via altcp)
|
---|
| 41 | * SNMPv2c agent with MIB compiler (Simple Network Management Protocol), v3 via altcp
|
---|
| 42 | * SNTP (Simple network time protocol)
|
---|
| 43 | * NetBIOS name service responder
|
---|
| 44 | * MDNS (Multicast DNS) responder
|
---|
| 45 | * iPerf server implementation
|
---|
| 46 | * MQTT client (TLS support via altcp)
|
---|
| 47 |
|
---|
| 48 |
|
---|
| 49 | LICENSE
|
---|
| 50 |
|
---|
| 51 | lwIP is freely available under a BSD license.
|
---|
| 52 |
|
---|
| 53 |
|
---|
| 54 | DEVELOPMENT
|
---|
| 55 |
|
---|
| 56 | lwIP has grown into an excellent TCP/IP stack for embedded devices,
|
---|
| 57 | and developers using the stack often submit bug fixes, improvements,
|
---|
| 58 | and additions to the stack to further increase its usefulness.
|
---|
| 59 |
|
---|
| 60 | Development of lwIP is hosted on Savannah, a central point for
|
---|
| 61 | software development, maintenance and distribution. Everyone can
|
---|
| 62 | help improve lwIP by use of Savannah's interface, Git and the
|
---|
| 63 | mailing list. A core team of developers will commit changes to the
|
---|
| 64 | Git source tree.
|
---|
| 65 |
|
---|
| 66 | The lwIP TCP/IP stack is maintained in the 'lwip' Git module and
|
---|
| 67 | contributions (such as platform ports) are in the 'contrib' Git module.
|
---|
| 68 |
|
---|
| 69 | See doc/savannah.txt for details on Git server access for users and
|
---|
| 70 | developers.
|
---|
| 71 |
|
---|
| 72 | The current Git trees are web-browsable:
|
---|
| 73 | http://git.savannah.gnu.org/cgit/lwip.git
|
---|
| 74 | http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git
|
---|
| 75 |
|
---|
| 76 | Submit patches and bugs via the lwIP project page:
|
---|
| 77 | http://savannah.nongnu.org/projects/lwip/
|
---|
| 78 |
|
---|
| 79 | Continuous integration builds (GCC, clang):
|
---|
| 80 | https://travis-ci.org/yarrick/lwip-merged
|
---|
| 81 |
|
---|
| 82 |
|
---|
| 83 | DOCUMENTATION
|
---|
| 84 |
|
---|
| 85 | Self documentation of the source code is regularly extracted from the current
|
---|
| 86 | Git sources and is available from this web page:
|
---|
| 87 | http://www.nongnu.org/lwip/
|
---|
| 88 |
|
---|
| 89 | There is now a constantly growing wiki about lwIP at
|
---|
| 90 | http://lwip.wikia.com/wiki/LwIP_Wiki
|
---|
| 91 |
|
---|
| 92 | Also, there are mailing lists you can subscribe at
|
---|
| 93 | http://savannah.nongnu.org/mail/?group=lwip
|
---|
| 94 | plus searchable archives:
|
---|
| 95 | http://lists.nongnu.org/archive/html/lwip-users/
|
---|
| 96 | http://lists.nongnu.org/archive/html/lwip-devel/
|
---|
| 97 |
|
---|
| 98 | lwIP was originally written by Adam Dunkels:
|
---|
| 99 | http://dunkels.com/adam/
|
---|
| 100 |
|
---|
| 101 | Reading Adam's papers, the files in docs/, browsing the source code
|
---|
| 102 | documentation and browsing the mailing list archives is a good way to
|
---|
| 103 | become familiar with the design of lwIP.
|
---|
| 104 |
|
---|
| 105 | Adam Dunkels <adam@sics.se>
|
---|
| 106 | Leon Woestenberg <leon.woestenberg@gmx.net>
|
---|