wolfIP и passt - легковесные стеки TCP/IP, работающие без динамического выделения памяти

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 1154
Зарегистрирован: 20.08.2022

#

wolfIP и passt - легковесные стеки TCP/IP, работающие без динамического выделения памяти
Дата публикации:Sat, 14 Mar 2026 11:08:23 +0300

Разработчики криптографической библиотеки wolfSSL развивают TCP/IP стек wolfIP, оптимизированный для использования на встраиваемых устройствах, имеющих ограниченные ресурсы, а также для систем, работающих в режиме реального времени, и решений, требующих повышенной надёжности (Safety-Critical). Для предсказуемого потребления ресурсов в wolfIP не используется динамическое выделение памяти - все буферы и таблицы сокетов имеют фиксированный размер и настраиваются на этапе компиляции. Код проекта написан на языке Си и распространяется под лицензией GPLv3.
Проект может использоваться в качестве работающего в пользовательском пространстве TCP/IP-стека, подменяющего сетевой стек Linux, FreeBSD и macOS, а также пригодного для применения во встраиваемых системах на базе FreeRTOS, SafeRTOS, Zephyr, Azure RTOS ThreadX, NuttX, RTEMS, VxWorks и QNX. Помимо этого на базе wolfIP могут создаваться самодостаточные сетевые приложения, запускаемые поверх оборудования (bare-metal). В сочетании с библиотекой wolfSSL предоставляется поддержка TLS 1.3, что позволяет создавать компактные встраиваемые системы, поддерживающие HTTPS.
Основные особенности wolfIP:
  • Использование при обработке сетевых пакетов предварительно выделенных в статической памяти буферов. Вызовы malloc и free не используются. Возможность использования вместо штатных системных сетевых стеков на POSIX-системах. Поддержка BSD-сокетов в неблокирующем и блокирующем режиме. Компактный размер (4200 строк кода, в 4 раза меньше TCP/IP стека lwIP). Поддержка сетевых интерфейсов STM32 Ethernet. Возможность использования сетевого интерфейса TAP для тестирования работы без оборудования. Разработка с оглядкой на системы с повышенными требованиями к безопасности: детерминированная и воспроизводимая конфигурация; модель развёртывания, обеспечивающая безопасность (Secure-by-default); изоляция между компонентами. Поддержка безопасного обновления версий; длительное сопровождение. Учёт требований к высоконадёжным системам: отсутствие динамического выделения ресурсов; фиксированные пулы памяти; контролируемое использование ресурсов; предсказуемое поведение; упрощённая архитектура; поддержка генерации артефактов для верификации. Реализация IPv4, UDP, TCP, IPSEC, ARP, ICMP, DHCP-клиента, DNS-клиента и HTTP/HTTPS-сервера. Поддержка в реализации TCP RFC 7323 (TCP Timestamps, RTT measurement, PAWS, Window Scaling), MSS (Maximum Segment Size), RTO (Retransmission timeout) и SACK (Selective Acknowledgment). Несколько алгоритмов контроля перегрузки (congestion control).
Из ограничений wolfIP отмечается возможность использования wolfIP только в роли конечного узла, способного принимать и устанавливать соединения, но не поддерживающего маршрутизацию трафика между сетевыми интерфейсами.
В дополнение можно отметить активное развитие сотрудником Red Hat похожего TCP/IP стека passt, работающего в пользовательском пространстве и не использующего динамическое выделение памяти. Проект passt развивается для организации канала связи между хост-окружением и гостевыми системами в QEMU в качестве более безопасной замены libslirp. Код passt написан на языке Си, насчитывает около 5000 строк и распространяется под лицензией GPLv2+.
Из особенностей passt можно отметить: поддержка IPv6 помимо IPv4, оптимизации на базе инструкций AVX2, защита от synflood, встроенная поддержка QEMU, libvirt и Podman, пакеты для всех популярных дистрибутивов, сервис ARP proxy, минималистичные серверы DHCPD, DHCPv6 и NDP, seccomp-профиль для блокирования всех неиспользуемых системных вызовов, поддержка NAT, возможность использования в качестве прозрачной замены slirp4netns.

Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=64989

Жизнь за Нер'зула!

Ответить