lwIP

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

lwIP
Тип стек TCP/IP
Автор Adam Dunkels
Разработчик lwIP developers group
Написана на C
Операционная система Кроссплатформенное программное обеспечение
Аппаратная платформа Встраиваемые системы
Последняя версия 2.1.3 (2021-11-10[1])
Репозиторий git.savannah.nongnu.org/…
Лицензия Модифицированная лицензия BSD
Сайт savannah.nongnu.org/proj…

lwIP (англ. lightweight IP) широко используемый TCP/IP-стек с открытым исходным кодом, предназначенный для встраиваемых систем. LwIP был первоначально разработан Адамом Дункельсом[англ.] в Шведском институте компьютерных наук и в настоящее время разрабатывается и поддерживается командой разработчиков.

Центром внимания реализации LwIP TCP/IP является сокращение использования ресурсов и при этом сохранение полномасштабной TCP. Это делает LwIP возможным для использования во встраиваемых системах с десятками килобайт свободной оперативной памяти и с местом для около 40 килобайт кода ROM.

LwIP используется многими производителями встраиваемых систем, например, Alteraоперационных системах для архитектуры Nios II)[2], Analog Devices (процессоры Blackfin)[3][4], Xilinx[5] и Honeywell (системы авионики). Также на основе lwIP создан TCP/IP драйвер операционной системы ReactOS[6].

Вместе с lwIP Адам Дункелс создал ещё один TCP/IP стек — uIP. Этот стек оптимизировали для минимизации используемой памяти, в нём не используется динамическое выделение памяти (куча).

LwIP предлагает три различных API-интерфейса, предназначенных для различных целей:

  • Raw API является основной API LwIP. Этот API направлен на обеспечение наилучших характеристик при использовании минимального размера кода. Один из недостатков этого API является то, что он обрабатывает асинхронные события с использованием обратных вызовов, которые усложняют разработку приложений.
  • Netconn API представляет собой последовательный API интерфейс построенный на базе Raw API. Это позволяет выполнять многопоточную обработку данных, следовательно, требуется наличие операционной системы. Это проще в использовании, чем Raw API за счет более низкой реализации исполнения и увеличения объема памяти.
  • BSD API сокеты, сокеты Беркли, как сокет реализации (Posix / BSD), построенный на базе API Netconn. Данный факт повышает переносимость кода. Он имеет те же недостатки, что и API Netconn.

Возможности LwIP

[править | править код]
  • IP, включая пересылку пакетов через несколько сетевых интерфейсов
  • ICMP
  • IGMP
  • UDP, включая экспериментальные расширения UDP Lite
  • TCP с поддержкой управления перегрузкой, оценкой RTT и быстрым восстановлением / быстрым повтором
  • Специализированные API для повышения производительности
  • Поддержка API сокетов Беркли
  • DNS
  • SNMP
  • DHCP
  • AutoIP / Link-local address (для IPv4, RFC 3927)
  • PPP
  • ARP

Примечания

[править | править код]
  1. lwIP 2.1.3 released. Дата обращения: 17 декабря 2021. Архивировано 17 декабря 2021 года.
  2. Using Lightweight IP with the Nios II Processor Tutorial. Дата обращения: 9 февраля 2012. Архивировано 16 ноября 2011 года.
  3. «Building Complex VDK/LwIP Applications Using Blackfin Processors», Kaushal Sanghai, Analog Devices Inc. September 2008. Дата обращения: 9 февраля 2012. Архивировано 20 марта 2012 года.
  4. Создание сложных VDK/LwIP приложений на процессорах Blackfin. Дата обращения: 9 февраля 2012. Архивировано 3 мая 2012 года.
  5. «LightWeight IP (lwIP) Application Examples», Siva Velusamy, Xilinx Inc. June 2009. Дата обращения: 9 февраля 2012. Архивировано 1 марта 2012 года.
  6. ReactOS 0.3.14 Changelog. Дата обращения: 9 февраля 2012. Архивировано 9 февраля 2012 года.