1*5d5fbe79SDavid van MoolenbroekINTRODUCTION 2*5d5fbe79SDavid van Moolenbroek 3*5d5fbe79SDavid van MoolenbroeklwIP is a small independent implementation of the TCP/IP protocol 4*5d5fbe79SDavid van Moolenbroeksuite that has been developed by Adam Dunkels at the Computer and 5*5d5fbe79SDavid van MoolenbroekNetworks Architectures (CNA) lab at the Swedish Institute of Computer 6*5d5fbe79SDavid van MoolenbroekScience (SICS). 7*5d5fbe79SDavid van Moolenbroek 8*5d5fbe79SDavid van MoolenbroekThe focus of the lwIP TCP/IP implementation is to reduce the RAM usage 9*5d5fbe79SDavid van Moolenbroekwhile still having a full scale TCP. This making lwIP suitable for use 10*5d5fbe79SDavid van Moolenbroekin embedded systems with tens of kilobytes of free RAM and room for 11*5d5fbe79SDavid van Moolenbroekaround 40 kilobytes of code ROM. 12*5d5fbe79SDavid van Moolenbroek 13*5d5fbe79SDavid van Moolenbroek 14*5d5fbe79SDavid van MoolenbroekFEATURES 15*5d5fbe79SDavid van Moolenbroek 16*5d5fbe79SDavid van Moolenbroek * IP (Internet Protocol, IPv4 and IPv6) including packet forwarding over 17*5d5fbe79SDavid van Moolenbroek multiple network interfaces 18*5d5fbe79SDavid van Moolenbroek * ICMP (Internet Control Message Protocol) for network maintenance and debugging 19*5d5fbe79SDavid van Moolenbroek * IGMP (Internet Group Management Protocol) for multicast traffic management 20*5d5fbe79SDavid van Moolenbroek * MLD (Multicast listener discovery for IPv6). Aims to be compliant with 21*5d5fbe79SDavid van Moolenbroek RFC 2710. No support for MLDv2 22*5d5fbe79SDavid van Moolenbroek * ND (Neighbor discovery and stateless address autoconfiguration for IPv6). 23*5d5fbe79SDavid van Moolenbroek Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862 24*5d5fbe79SDavid van Moolenbroek (Address autoconfiguration) 25*5d5fbe79SDavid van Moolenbroek * UDP (User Datagram Protocol) including experimental UDP-lite extensions 26*5d5fbe79SDavid van Moolenbroek * TCP (Transmission Control Protocol) with congestion control, RTT estimation 27*5d5fbe79SDavid van Moolenbroek and fast recovery/fast retransmit 28*5d5fbe79SDavid van Moolenbroek * raw/native API for enhanced performance 29*5d5fbe79SDavid van Moolenbroek * Optional Berkeley-like socket API 30*5d5fbe79SDavid van Moolenbroek * DNS (Domain names resolver) 31*5d5fbe79SDavid van Moolenbroek 32*5d5fbe79SDavid van Moolenbroek 33*5d5fbe79SDavid van MoolenbroekAPPLICATIONS 34*5d5fbe79SDavid van Moolenbroek 35*5d5fbe79SDavid van Moolenbroek * HTTP server with SSI and CGI 36*5d5fbe79SDavid van Moolenbroek * SNMPv2c agent with MIB compiler (Simple Network Management Protocol) 37*5d5fbe79SDavid van Moolenbroek * SNTP (Simple network time protocol) 38*5d5fbe79SDavid van Moolenbroek * NetBIOS name service responder 39*5d5fbe79SDavid van Moolenbroek * MDNS (Multicast DNS) responder 40*5d5fbe79SDavid van Moolenbroek * iPerf server implementation 41*5d5fbe79SDavid van Moolenbroek 42*5d5fbe79SDavid van Moolenbroek 43*5d5fbe79SDavid van MoolenbroekLICENSE 44*5d5fbe79SDavid van Moolenbroek 45*5d5fbe79SDavid van MoolenbroeklwIP is freely available under a BSD license. 46*5d5fbe79SDavid van Moolenbroek 47*5d5fbe79SDavid van Moolenbroek 48*5d5fbe79SDavid van MoolenbroekDEVELOPMENT 49*5d5fbe79SDavid van Moolenbroek 50*5d5fbe79SDavid van MoolenbroeklwIP has grown into an excellent TCP/IP stack for embedded devices, 51*5d5fbe79SDavid van Moolenbroekand developers using the stack often submit bug fixes, improvements, 52*5d5fbe79SDavid van Moolenbroekand additions to the stack to further increase its usefulness. 53*5d5fbe79SDavid van Moolenbroek 54*5d5fbe79SDavid van MoolenbroekDevelopment of lwIP is hosted on Savannah, a central point for 55*5d5fbe79SDavid van Moolenbroeksoftware development, maintenance and distribution. Everyone can 56*5d5fbe79SDavid van Moolenbroekhelp improve lwIP by use of Savannah's interface, Git and the 57*5d5fbe79SDavid van Moolenbroekmailing list. A core team of developers will commit changes to the 58*5d5fbe79SDavid van MoolenbroekGit source tree. 59*5d5fbe79SDavid van Moolenbroek 60*5d5fbe79SDavid van MoolenbroekThe lwIP TCP/IP stack is maintained in the 'lwip' Git module and 61*5d5fbe79SDavid van Moolenbroekcontributions (such as platform ports) are in the 'contrib' Git module. 62*5d5fbe79SDavid van Moolenbroek 63*5d5fbe79SDavid van MoolenbroekSee doc/savannah.txt for details on Git server access for users and 64*5d5fbe79SDavid van Moolenbroekdevelopers. 65*5d5fbe79SDavid van Moolenbroek 66*5d5fbe79SDavid van MoolenbroekThe current Git trees are web-browsable: 67*5d5fbe79SDavid van Moolenbroek http://git.savannah.gnu.org/cgit/lwip.git 68*5d5fbe79SDavid van Moolenbroek http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git 69*5d5fbe79SDavid van Moolenbroek 70*5d5fbe79SDavid van MoolenbroekSubmit patches and bugs via the lwIP project page: 71*5d5fbe79SDavid van Moolenbroek http://savannah.nongnu.org/projects/lwip/ 72*5d5fbe79SDavid van Moolenbroek 73*5d5fbe79SDavid van MoolenbroekContinuous integration builds (GCC, clang): 74*5d5fbe79SDavid van Moolenbroek https://travis-ci.org/yarrick/lwip-merged 75*5d5fbe79SDavid van Moolenbroek 76*5d5fbe79SDavid van Moolenbroek 77*5d5fbe79SDavid van MoolenbroekDOCUMENTATION 78*5d5fbe79SDavid van Moolenbroek 79*5d5fbe79SDavid van MoolenbroekSelf documentation of the source code is regularly extracted from the current 80*5d5fbe79SDavid van MoolenbroekGit sources and is available from this web page: 81*5d5fbe79SDavid van Moolenbroek http://www.nongnu.org/lwip/ 82*5d5fbe79SDavid van Moolenbroek 83*5d5fbe79SDavid van MoolenbroekThere is now a constantly growing wiki about lwIP at 84*5d5fbe79SDavid van Moolenbroek http://lwip.wikia.com/wiki/LwIP_Wiki 85*5d5fbe79SDavid van Moolenbroek 86*5d5fbe79SDavid van MoolenbroekAlso, there are mailing lists you can subscribe at 87*5d5fbe79SDavid van Moolenbroek http://savannah.nongnu.org/mail/?group=lwip 88*5d5fbe79SDavid van Moolenbroekplus searchable archives: 89*5d5fbe79SDavid van Moolenbroek http://lists.nongnu.org/archive/html/lwip-users/ 90*5d5fbe79SDavid van Moolenbroek http://lists.nongnu.org/archive/html/lwip-devel/ 91*5d5fbe79SDavid van Moolenbroek 92*5d5fbe79SDavid van MoolenbroeklwIP was originally written by Adam Dunkels: 93*5d5fbe79SDavid van Moolenbroek http://dunkels.com/adam/ 94*5d5fbe79SDavid van Moolenbroek 95*5d5fbe79SDavid van MoolenbroekReading Adam's papers, the files in docs/, browsing the source code 96*5d5fbe79SDavid van Moolenbroekdocumentation and browsing the mailing list archives is a good way to 97*5d5fbe79SDavid van Moolenbroekbecome familiar with the design of lwIP. 98*5d5fbe79SDavid van Moolenbroek 99*5d5fbe79SDavid van MoolenbroekAdam Dunkels <adam@sics.se> 100*5d5fbe79SDavid van MoolenbroekLeon Woestenberg <leon.woestenberg@gmx.net> 101