lwIP ( lightweight IP ) — це широко використовуваний стек TCP/IP з відкритим кодом, розроблений для вбудованих систем Початково lwIP розробив Адамом Данкельсом у 2001 року у Шведському інституті комп'ютерних наук, а нині розробляється та підтримується всесвітньою мережею розробників.

lwIP використовують багато виробників вбудованих систем, включаючи Intel/Altera, Analog Devices, "Building Complex VDK/LwIP Applications Using Blackfin Processors ", Kaushal Sanghai, Analog Devices Inc. September 2008 Xilinx, TI, ST та Freescale .

Мережевий стек lwIP Реалізація мережевого стека lwIP орієнтована на зменшення використання ресурсів за збереження повноцінного TCP-стека. Це робить lwIP придатним для використання у вбудованих системах із десятками кілобайтів вільної оперативної пам'яті та можливістю розмістити близько 40 кілобайтів коду в ПЗП.

Реалізації протоколів lwIP Окрім TCP/IP-стека, lwIP має кілька інших важливих складових, як-от мережевий інтерфейс, рівень емуляції операційної системи, буфери та підсистему керування пам'яттю. Рівень емуляції операційної системи та мережевий інтерфейс дають змогу перенести мережевий стек в операційну систему, оскільки забезпечують спільний інтерфейс між кодом lwIP та ядром операційної системи.

Мережевий стек lwIP містить реалізацію IP (Internet Protocol) на міжмережевому рівні, яка здатна виконувати пересилання пакетів через кілька мережевих інтерфейсів. Починаючи з lwIP v2.0.0, IPv4 та IPv6 підтримуються у режимі подвійного стека (dual stack). Для обслуговування та діагностики мережі lwIP реалізує ICMP (Internet Control Message Protocol). Для керування багатоадресним трафіком підтримується IGMP (Internet Group Management Protocol). Для підтримки використання IPv6 реалізовано ICMPv6 (зокрема MLD).

lwIP містить реалізацію ARP (Address Resolution Protocol) для IPv4 та Neighbor Discovery Protocol для IPv6 для підтримки Ethernet на канальному рівні. lwIP також може працювати поверх реалізації PPP (Point-to-Point Protocol) на канальному рівні.

На транспортному рівні lwIP реалізує TCP (Transmission Control Protocol) з керуванням перевантаженням, оцінюванням RTT та механізмами швидкого відновлення/швидкої повторної передачі (fast recovery/fast retransmit). UDP (User Datagram Protocol) реалізовано з експериментальними розширеннями UDP-Lite.

API та сокети lwIP надає спеціалізований програмний інтерфейс (API) без копіювання даних (no-copy) для підвищення продуктивності мережевого стека. API сокетів Берклі є необов'язковим. Залежно від використовуваного API надаються неструктуровані сокети (raw sockets) або неструктуровані блоки керування протоколом (raw pcb, protocol control blocks).

Підтримка прикладного рівня На прикладному рівні мережевий стек lwIP може підтримуватися завдяки реалізації наведених далі протоколів. Це DNS (Domain Name System) та агент SNMP (Simple Network Management Protocol) версій v1, v2 чи v3 із підтримкою приватної MIB (бази керівної інформації) та компілятором MIB.

Операційні системи, що реалізують TCP/IP-стек lwIP, можуть надавати низку допоміжних клієнтів і серверів на прикладному рівні. Наприклад, клієнт DHCP (Dynamic Host Configuration Protocol) для IPv4 або локальні адреси каналу IPv4 (AutoIP). До спеціалізованих застосунків на основі raw API належать: HTTP-сервер, клієнт SNTP, клієнт SMTP, сервер імен NetBIOS, відповідач mDNS, клієнт MQTT та сервер TFTP.

Реалізації в ОС lwIP використовується як мережевий стек у ReactOS та Genode, а також може застосовуватися у Minix та GNU Hurd для реалізації мережевих серверів.

Див. також uIP (software)

Примітки

Посилання Розробка lwIP Вікі документації lwIP Документація функцій lwIP Колишня домашня сторінка lwIP (застаріла) Посібник із використання lwIP від Microchip (pdf)