The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

14.03.2026 11:08 (MSK)

Разработчики криптографической библиотеки 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.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Выпуск криптографической библиотеки wolfSSL 5.0.0
  3. OpenNews: Intel представил сокращённый вариант сетевого стека для Linux
  4. OpenNews: Проект LibOS развивает вариант ядра Linux с сетевым стеком в форме библиотеки
  5. OpenNews: Выпуск сетевого стека F-Stack 1.24, выполняемого в пространстве пользователя
  6. OpenNews: Доступен открытый Wi-Fi стек OpenWifi 1.4
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64989-wolfip
Ключевые слова: wolfip, tpcip, wolfssl
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:54, 14/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Странно, почему весь критический код не пишется подобным образом. :)
     
     
  • 2.8, шолб (?), 13:40, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда не получится делать важное табло с надутыми щоками, которое очень нужно для залезания на табурет и декламирования "посмотрите какую сложную уробору я сделяль, как мощны мои лапищи." Современное программирование с технической стороны не про практичность, а про самоутверждение. А если и условия потребуют практичности, то она будет уровня "от сохи". Зато с апломбом.
     

  • 1.2, Аноним (2), 12:56, 14/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Использование при обработке сетевых пакетов предварительно выделенных в статической памяти буферов. Вызовы malloc и free не используются.

    Жаль, что это не спасет от других тысячи способов получить UB на этом прекрасном языке.

     
     
  • 2.5, шолб (?), 13:19, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    а если попробовать думать перед жмаканием кнопок? а не кяух-кяух и прочий эджайла.
     
  • 2.6, Аноним (6), 13:31, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Жаль, что это не спасет от других тысячи способов получить UB на этом прекрасном языке.

    На этом прекрасном языке написали легковесный TCP/IP стек, в отличие от...

     
     
  • 3.10, Аноним (2), 13:41, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Плохая попытка.
    https://github.com/smoltcp-rs/smoltcp
     
     
  • 4.13, Аноним (13), 14:20, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ls -lh smoltcp/target/release/libsmoltcp.rlib
    17M авг  1  2022
     
  • 3.11, Аноним (11), 13:56, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Правильно писать: на этом прекрасном языке написали вагон и маленькую тележку стеков которыми пользуются все, в отличие от... Ожидаемо что и UB в штуках которыми не пользуются никого не интересуют. А если начинают пользоваться, то там тоже всякого вылазит, но чаще всего "ну мы прост не реализовали эту штуку реализованную ВЕЗДЕ, во всех других ЯП, потому что нишмагли"
     

  • 1.3, Аноним (3), 13:13, 14/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Код проекта написан на языке Си и распространяется под лицензией GPLv3.

    зумеры - о боже, они используют древнюю магию, мы не сможем ее контролировать! Срочно закопать!

     
     
  • 2.4, Аноним (3), 13:18, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Срочно закопать!

    НЕТ! Закопанное найдут! Нобходимо расщепить на байты и распылить по интернету. А тех кто это видел...ну вы поняли.

     
  • 2.7, Аноним (7), 13:38, 14/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Так, ведь, найдутся же переписывающие на безопасТном.
     

  • 1.9, Аноним (7), 13:40, 14/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь из этих проектов добавит, наконец, SCTP для микроконтроллеров?
     
  • 1.12, Аноним (12), 14:13, 14/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > оптимизации на базе инструкций AVX2

    Наверняка в QEMU внедрят и дропнут кору дуба.

     
  • 1.14, Аноним (14), 14:36, 14/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > требующих повышенной надёжности (Safety-Critical)
    > написан на языке Си

    Классика жанра. 🤦 Пишем софт для "повышенной надежности" с использованием языка, в котором эта надежность максимально скомпрометирована by design.

    В их списке вулнов полно классических сишечных выходов за пределы буфера, но выводов такие ребята традиционно не делают:

    https://www.wolfssl.com/docs/security-vulnerabilities/

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру