lwIP

lwIP (lightweight IP) is a widely used open-source TCP/IP stack designed for embedded systems. lwIP was originally developed by Adam Dunkels at the Swedish Institute of Computer Science and is now developed and maintained by a worldwide network of developers.

LwIP
Original author(s)Adam Dunkels
Developer(s)lwIP developers group
Stable release
2.1.2 / 22 November 2018 (2018-11-22)
Repository
Written inC
Operating systemmultiple
Platformembedded systems
TypeIP stack
LicenseModified BSD license
Websitewww.nongnu.org/lwip/

lwIP is used by many manufacturers of embedded systems. Examples include Altera (in the Nios II operating system), Analog Devices (for the Blackfin DSP chip),[1] Xilinx,[2] Honeywell (for some of their FAA certified avionics systems) and Freescale Semiconductor (Ethernet Streaming SW for Automotive microcontrollers).

lwIP network stack

The focus of the lwIP network stack implementation is to reduce resource usage while still having a full-scale TCP stack.[3] This makes lwIP suitable for use in embedded systems with tens of kilobytes of free RAM and room for around 40 kilobytes of code ROM.

lwIP protocol implementations

Aside from the TCP/IP stack, lwIP has several other important parts, such as a network interface, an operating system emulation layer, buffers and a memory management section. The operating system emulation layer and the network interface allow the network stack to be transplanted into an operating system, as it provides a common interface between lwIP code and the operating system kernel.[3]

The network stack of lwIP includes an IP (Internet Protocol) implementation at the Internet layer that can handle packet forwarding over multiple network interfaces.[3] Both IPv4 and IPv6 are supported dual stack since lwIP v2.0.0 .[4] For network maintenance and debugging, lwIP implements ICMP (Internet Control Message Protocol).[3] IGMP (Internet Group Management Protocol) is supported for multicast traffic management. While ICMPv6 (including MLD) is implemented to support the use of IPv6.

lwIP includes an implementation of IPv4 ARP (Address Resolution Protocol) and IPv6 Neighbor Discovery Protocol to support Ethernet at the data link layer. lwIP may also be operated on top of a PPP (Point-to-Point Protocol) implementation at the data link layer.

At the transport layer lwIP implements TCP (Transmission Control Protocol) with congestion control, RTT estimation and fast recovery/fast retransmit.[3] UDP (User Datagram Protocol) is implemented with experimental UDP-Lite extensions.

APIs and sockets

lwIP provides a specialized no-copy application programming interface (API) for enhanced network stack performance. The Berkeley socket API is optional.[3] Raw sockets, or raw pcbs, are provided depending on the API used.[5]

Application layer support

At the application layer the lwIP network stack may be supported through the implementation of the following protocols. The DNS (Domain Name System), an SNMP (Simple Network Management Protocol) agent, in v1, v2 or v3, with private MIB (management information base) support and MIB compiler.

Operating systems that implement the lwIP TCP/IP stack may provide a range of supporting clients and servers at the application layer. Such as an IPv4 DHCP (Dynamic Host Configuration Protocol) client or IPv4 Link-local addresses (aka. AutoIP). Specialized raw API applications include: an HTTP server, a SNTP client, a SMTP client, a NetBIOS nameserver, a mDNS responder, a MQTT client and a TFTP server.

OS implementations

lwIP is used as network stack in ReactOS and Genode[6] and can be used in Minix and GNU Hurd to implement network servers.

gollark: It is, at this point, somewhat politic*ized*, at least, and there are a bunch of organizations and stuff involved in it. Hold on while I refresh so I can see exactly what it says.
gollark: I don't see how [ANY POLITICAL VIEW WHICH MY PEER GROUP CONSIDERS OBVIOUSLY TRUE] is a political view.
gollark: They probably just want to virtue-signal "yes look at us we are very progressive".
gollark: It's basically an advert, which I already do not like, unclosable (allegedly a bug, but who knows), and is whinily trying to shove political views at people.
gollark: I still do not like such things.

See also

References


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.