1*10465441SEvalZeroINTRODUCTION 2*10465441SEvalZero 3*10465441SEvalZerolwIP is a small independent implementation of the TCP/IP protocol 4*10465441SEvalZerosuite that has been developed by Adam Dunkels at the Computer and 5*10465441SEvalZeroNetworks Architectures (CNA) lab at the Swedish Institute of Computer 6*10465441SEvalZeroScience (SICS). 7*10465441SEvalZero 8*10465441SEvalZeroThe focus of the lwIP TCP/IP implementation is to reduce the RAM usage 9*10465441SEvalZerowhile still having a full scale TCP. This making lwIP suitable for use 10*10465441SEvalZeroin embedded systems with tens of kilobytes of free RAM and room for 11*10465441SEvalZeroaround 40 kilobytes of code ROM. 12*10465441SEvalZero 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 * UDP (User Datagram Protocol) including experimental UDP-lite extensions 26*10465441SEvalZero * TCP (Transmission Control Protocol) with congestion control, RTT estimation 27*10465441SEvalZero and fast recovery/fast retransmit 28*10465441SEvalZero * raw/native API for enhanced performance 29*10465441SEvalZero * Optional Berkeley-like socket API 30*10465441SEvalZero * DNS (Domain names resolver) 31*10465441SEvalZero 32*10465441SEvalZero 33*10465441SEvalZeroAPPLICATIONS 34*10465441SEvalZero 35*10465441SEvalZero * HTTP server with SSI and CGI 36*10465441SEvalZero * SNMPv2c agent with MIB compiler (Simple Network Management Protocol) 37*10465441SEvalZero * SNTP (Simple network time protocol) 38*10465441SEvalZero * NetBIOS name service responder 39*10465441SEvalZero * MDNS (Multicast DNS) responder 40*10465441SEvalZero * iPerf server implementation 41*10465441SEvalZero 42*10465441SEvalZero 43*10465441SEvalZeroLICENSE 44*10465441SEvalZero 45*10465441SEvalZerolwIP is freely available under a BSD license. 46*10465441SEvalZero 47*10465441SEvalZero 48*10465441SEvalZeroDEVELOPMENT 49*10465441SEvalZero 50*10465441SEvalZerolwIP has grown into an excellent TCP/IP stack for embedded devices, 51*10465441SEvalZeroand developers using the stack often submit bug fixes, improvements, 52*10465441SEvalZeroand additions to the stack to further increase its usefulness. 53*10465441SEvalZero 54*10465441SEvalZeroDevelopment of lwIP is hosted on Savannah, a central point for 55*10465441SEvalZerosoftware development, maintenance and distribution. Everyone can 56*10465441SEvalZerohelp improve lwIP by use of Savannah's interface, Git and the 57*10465441SEvalZeromailing list. A core team of developers will commit changes to the 58*10465441SEvalZeroGit source tree. 59*10465441SEvalZero 60*10465441SEvalZeroThe lwIP TCP/IP stack is maintained in the 'lwip' Git module and 61*10465441SEvalZerocontributions (such as platform ports) are in the 'contrib' Git module. 62*10465441SEvalZero 63*10465441SEvalZeroSee doc/savannah.txt for details on Git server access for users and 64*10465441SEvalZerodevelopers. 65*10465441SEvalZero 66*10465441SEvalZeroThe current Git trees are web-browsable: 67*10465441SEvalZero http://git.savannah.gnu.org/cgit/lwip.git 68*10465441SEvalZero http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git 69*10465441SEvalZero 70*10465441SEvalZeroSubmit patches and bugs via the lwIP project page: 71*10465441SEvalZero http://savannah.nongnu.org/projects/lwip/ 72*10465441SEvalZero 73*10465441SEvalZeroContinuous integration builds (GCC, clang): 74*10465441SEvalZero https://travis-ci.org/yarrick/lwip-merged 75*10465441SEvalZero 76*10465441SEvalZero 77*10465441SEvalZeroDOCUMENTATION 78*10465441SEvalZero 79*10465441SEvalZeroSelf documentation of the source code is regularly extracted from the current 80*10465441SEvalZeroGit sources and is available from this web page: 81*10465441SEvalZero http://www.nongnu.org/lwip/ 82*10465441SEvalZero 83*10465441SEvalZeroThere is now a constantly growing wiki about lwIP at 84*10465441SEvalZero http://lwip.wikia.com/wiki/LwIP_Wiki 85*10465441SEvalZero 86*10465441SEvalZeroAlso, there are mailing lists you can subscribe at 87*10465441SEvalZero http://savannah.nongnu.org/mail/?group=lwip 88*10465441SEvalZeroplus searchable archives: 89*10465441SEvalZero http://lists.nongnu.org/archive/html/lwip-users/ 90*10465441SEvalZero http://lists.nongnu.org/archive/html/lwip-devel/ 91*10465441SEvalZero 92*10465441SEvalZerolwIP was originally written by Adam Dunkels: 93*10465441SEvalZero http://dunkels.com/adam/ 94*10465441SEvalZero 95*10465441SEvalZeroReading Adam's papers, the files in docs/, browsing the source code 96*10465441SEvalZerodocumentation and browsing the mailing list archives is a good way to 97*10465441SEvalZerobecome familiar with the design of lwIP. 98*10465441SEvalZero 99*10465441SEvalZeroAdam Dunkels <[email protected]> 100*10465441SEvalZeroLeon Woestenberg <[email protected]> 101