1 puntos por GN⁺ 2024-09-08 | 1 comentarios | Compartir por WhatsApp

Resumen de lwIP

Introducción
  • lwIP es una implementación independiente de una pila de protocolos TCP/IP pequeña
  • Se enfoca en mantener un TCP de tamaño completo mientras reduce el uso de RAM
  • Es adecuado para su uso en sistemas embebidos y requiere varias decenas de kilobytes de RAM y alrededor de 40 kilobytes de ROM de código
  • Originalmente fue desarrollado por Adam Dunkels y actualmente es mantenido por una red global de desarrolladores
Funciones
  • IP (protocolo de Internet, IPv4 e IPv6): incluye el reenvío de paquetes entre múltiples interfaces de red
  • ICMP (protocolo de mensajes de control de Internet): mantenimiento y depuración de red
  • IGMP (protocolo de administración de grupos de Internet): gestión de tráfico multicast
  • MLD (Multicast Listener Discovery): para IPv6, con objetivo de cumplir con RFC 2710
  • ND (descubrimiento de vecinos y autoconfiguración de direcciones sin estado): con objetivo de cumplir con RFC 4861 y RFC 4862
  • DHCP, AutoIP/APIPA (Zeroconf) y DHCPv6 (sin estado)
  • UDP (protocolo de datagramas de usuario): incluye la extensión experimental UDP-lite
  • TCP (protocolo de control de transmisión): control de congestión, estimación de RTT, fast recovery/fast retransmit y transmisión SACK
  • API raw/nativa: mejora del rendimiento
  • API de sockets opcional similar a Berkeley
  • TLS: capa TCP opcional ("altcp") para TLS casi transparente (portada a mbedTLS)
  • PPPoS y PPPoE (Point-to-Point Protocol sobre serial/Ethernet)
  • DNS (resolvedor de nombres de dominio, incluyendo mDNS)
  • 6LoWPAN (a través de IEEE 802.15.4, BLE o ZEP)
Aplicaciones
  • Servidor HTTP: incluye SSI y CGI (HTTPS mediante altcp)
  • Agente SNMPv2c: incluye compilador MIB, v3 compatible mediante altcp
  • SNTP (protocolo simple de tiempo de red)
  • Respondedor de servicio de nombres NetBIOS
  • Respondedor MDNS (DNS multicast)
  • Implementación de servidor iPerf
  • Cliente MQTT: soporte TLS disponible mediante altcp
Licencia
  • lwIP se ofrece gratuitamente bajo licencia BSD
Desarrollo
  • lwIP ha crecido hasta convertirse en una excelente pila TCP/IP para dispositivos embebidos
  • Los desarrolladores envían correcciones de errores, mejoras y funciones adicionales para aumentar aún más la utilidad de la pila
  • El desarrollo se aloja en Savannah y cualquiera puede contribuir a mejorar lwIP mediante Git y listas de correo
  • La pila TCP/IP de lwIP se mantiene en el módulo Git lwip, y las contribuciones están en el módulo Git contrib
  • Para más detalles sobre el acceso al servidor Git, consulta doc/savannah.txt
  • El árbol Git actual puede verse en la web: lwip, lwip-contrib
  • Envío de parches y bugs: página del proyecto lwIP
  • Builds de integración continua: Travis CI
Documentación

Resumen de GN⁺

  • lwIP ofrece una pila TCP/IP eficiente para sistemas embebidos y minimiza el uso de memoria
  • Soporta diversos protocolos de red y aplicaciones, proporcionando flexibilidad y escalabilidad
  • Sigue mejorando de forma continua gracias a la participación activa de la comunidad de desarrolladores
  • Proyectos con funciones similares incluyen FreeRTOS+TCP y uIP

1 comentarios

 
GN⁺ 2024-09-08
Comentarios en Hacker News
  • Hace algunos años usé LwIP en un proyecto para realizar pruebas del sistema de manera efectiva

    • Era un proyecto en el que varios microcontroladores se comunicaban a través de una LAN interna
    • Se usaba un kernel embebido llamado MicroCOS y la pila IP LwIP
    • Se configuraron herramientas de compilación multiplataforma para compilar y ejecutar de forma nativa o como código x64 en la máquina del desarrollador
    • Se simuló la parte de la capa de enlace más baja de LwIP para usar TCP/IP estándar
    • Se escribió un pequeño servidor TCP para que la aplicación del microcontrolador se comunicara en la máquina del desarrollador como si fuera el sistema real
    • Esta configuración funcionó muy bien y se usó durante años durante el desarrollo del proyecto
  • "Pila IP" es una descripción que se queda corta

    • Puede usarse como cliente HTTP, servidor HTTP o cliente MQTT
    • Es como el busybox del networking embebido, pero con una licencia mucho más conveniente
  • A quienes buscan opciones como LwIP, les recomendaría considerar NetXDuo y sus equivalentes ThreadX, FileX, LevelX y UsbX

    • Ha sido una de las pilas de red de RTOS comerciales usadas durante 20 años
    • Su propiedad cambió varias veces, y actualmente cuenta con el respaldo de Eclipse Foundation y tiene licencia MIT
    • Recomendaría usar NetXDuo en lugar de LwIP
    • Enlace a NetXDuo
  • Adam Dunkels escribió la mayor parte de Protothreads

  • Me pregunto qué es nongnu.org y cómo se relaciona con gnu.org

    • savannah.gnu.org es el sitio de hosting para el software GNU "oficial" patrocinado por la Free Software Foundation
    • savannah.nongnu.org es el sitio de hosting para proyectos "comunitarios" no patrocinados por la FSF
    • Enlace relacionado
  • Probablemente sea la pila TCP/IP más usada en dispositivos con recursos limitados

  • Lo que me gusta de LWIP es que permite usar el mismo bloque de memoria asignado por Ethernet MAC DMA durante toda la vida útil del paquete

    • Se puede optimizar el "pool" de memoria para reducir la cantidad de memcpy
  • Para quienes quieran implementar su propia pila TCP/IP ligera, el libro <i>TCP/IP Lean</i> de Jeremy Bentham es un excelente recurso

  • Extraído del artículo:

    • "Esto hace que lwIP sea adecuado para su uso en sistemas embebidos con decenas de kilobytes de RAM libre y alrededor de 40 kilobytes de ROM de código"
  • Pico W usa esto