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