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