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