xref: /btstack/3rd-party/lwip/core/README (revision 97dc5e692c7d94a280158af58036a0efee5b0e56)
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