O que é o protocolo leve da Internet (LwIP)?

¿Qué es el Protocolo ligero de Internet (LwIP)?

Conectar microcontroladores integrados a Internet es una tarea crucial en las aplicaciones modernas. Los controladores integrados, especialmente en dispositivos de consumo y portátiles, ahora esencialmente requieren ping en línea. Esto es más importante a medida que los dispositivos se vuelven más inteligentes. Conectarse a Internet no sólo es una tarea crucial sino también difícil. La pila TCP/IP típica requiere demasiados recursos para implementarla en bare metal. Los microcontroladores nunca pueden implementar la pila TCP/IP debido a la poca memoria, RAM y potencia informática, por lo que requieren algo liviano para emular la misma funcionalidad.

El Protocolo ligero de Internet (LwIP) es una implementación pequeña e independiente de un conjunto de protocolos TCP/IP para sistemas integrados. Desarrollado originalmente por Adam Dunkels en el Instituto Sueco de Ciencias de la Computación (SICS), LwIP es una pila TCP/IP gratuita y de código abierto que ahora se mantiene en Savannah. Varios fabricantes de sistemas integrados de renombre han adoptado LwIP, como Texas Instruments, Altera Corporation, Xilinx, STMicroelectronics, Freescale y Analog Devices, para sus controladores de red de dispositivos integrados. El protocolo incluso lo utilizan Arduino Ethernet Shield y placas de desarrollo WiFi como ESP32 y ESP8266 para implementar funciones de red. Cualquier fabricante de hardware puede utilizar el protocolo con el sistema operativo o controlador de red de su plataforma como protocolo abierto bajo la licencia BSD modificada. El protocolo también se puede utilizar en aplicaciones siempre que el sistema operativo subyacente admita el puerto LwIP. La fuente LwIP está disponible como repositorio Git.

LwIP le permite implementar una pila TCP/IP completa en sistemas integrados mientras consume recursos y memoria mínimos del sistema. La pila incluso se modifica para adaptarse a las bibliotecas de Arduino. La pila requiere sólo 40 kb de memoria ROM/flash y consume sólo decenas de kilobytes de RAM durante el tiempo de ejecución. Incluso hay disponible una API personalizada para la pila que no requiere copia de datos.

¿De qué es capaz LwIP?
LwIP permite una pila TCP/IP completa en un espacio menor a 40 kb. Se puede utilizar para implementar los siguientes protocolos de red en una aplicación integrada.

Protocolo de Internet (IP) : LwIP permite la manipulación de direcciones IPv4 e IPv6 y el reenvío de paquetes a través de múltiples interfaces de red (netifs). Puede asignar una dirección IP estática a la interfaz de red, obtener una dirección IP del servidor DHCP o elegir una dirección IP de la subred local. Incluso puedes asignar una dirección IP a una interfaz de red.

Protocolo de mensajes de control de Internet (ICMP) : LwIP permite el mantenimiento y la depuración de la red a través del protocolo ICMP. Los protocolos admitidos incluyen Respuesta de eco/ping, Destino inalcanzable y Tiempo excedido.

Descubrimiento de vecinos (ND) : LwIP permite el descubrimiento de vecinos sin estado y la configuración automática de direcciones para IPv6 de conformidad con los estándares RFC 4861 (para descubrimiento de vecinos) y RFC 4862 (para configuración automática de direcciones).

Descubrimiento de escuchas de multidifusión para IPv6 (MLD) : LwIP proporciona detección de escuchas de multidifusión para IPv6 de conformidad con el estándar RFC 2710. Sin embargo, no es compatible con MLDv2.

Protocolo de datagramas de usuario (UDP) : LwIP incluye extensiones experimentales UDP-lite que cumplen con los estándares RFC 768 (UDP) y RFC 3828 (UDP ligero).

Protocolo de control de transmisión (TCP) : LwIP habilita el protocolo TCP compatible con RFC 793 (Protocolo de control de transmisión), RFC 1122 (Requisitos para hosts de Internet), RFC 2001 (Algoritmos de inicio lento de TCP, evitación de congestión, retransmisión rápida y recuperación rápida), RFC 2581 (Control de congestión de TCP), Estándares RFC 3390 (Aumento de la ventana inicial de TCP).

Protocolo de administración de grupos de Internet (IGMP) : LwIP permite la administración del tráfico de multidifusión que admite IGMP versión 0, IGMP versión 1, IGMP versión 2 e IGMP versión 3.

Protocolo de resolución de direcciones (ARP) : LwIP le permite traducir la dirección de hardware en una dirección de capa de red para Ethernet.

Protocolo punto a punto (PPP) : LwIP permite el protocolo punto a punto a través de Ethernet (PPPoE) y también a través de Serial (PPPoS).

LwIP puede configurar el cliente DHCP, el cliente DNS y el cliente SNMP en una plataforma. Además, le permite configurar un controlador como servidor HTTP/HTTPS, cliente SMTP/SMTPS, cliente MQTT, cliente SNTP, servidor de nombres NetBIOS, servidor TFTP o respondedor mDNS. Inicialmente, LwIP fue diseñado para ejecutarse en entornos de un solo subproceso; Finalmente se le agregó soporte para subprocesos múltiples. La funcionalidad de sus diversos módulos, incluidos api.h, sockets.h, sys.h, netbuf.h, pppapi.h, netifapi.h y netdb.h, se puede ejecutar de forma segura en subprocesos separados. Esto significa que puede ejecutar múltiples protocolos, incluidos IPv4/IPv6, PPP, etc. simultáneamente en el controlador integrado. Las interfaces de red (IoT y redes) admitidas por LwIP incluyen WiFi (puente IEEE 802.1D), LPWAN ((6LoWPAN), Bluetooth (6LoWPAN sobre BLE), interfaces PPP, interfaces SLIP y Zigbee (ZEP).

Aplicaciones LwIP
La pila LwIP le ayuda a implementar redes integradas. Una aplicación común de LwIP es la implementación de redes WiFi integradas en bare metal (microcontroladores). Las placas de desarrollo WiFi populares como ESP8266 y ESP32 utilizan la pila LwIP para funcionalidades de redes inalámbricas. Las plataformas de microcontroladores como Arduino utilizan la pila para comunicarse a través de Ethernet.

A muchos desarrolladores les resulta más fácil implementar funciones de red en Linux integrado o RTOS. Sin embargo, incluso los micro-RTO pueden resultar excesivos para las aplicaciones WiFi integradas. Con un poco de programación de red en la pila LwIP, se pueden desarrollar aplicaciones TCP/IP completas en plataformas de microcontroladores. Estas aplicaciones pueden ejecutar protocolos de capa de aplicación como HTTP, TCP y UDP en un cliente pequeño como un microcontrolador.

Por ejemplo, vea cómo el ESP8266/ESP32 se puede configurar como un cliente/servidor TCP capaz de cargar o alojar una página HTML.

Para muchos casos de uso de IoT, ejecutar protocolos de capa de aplicación en un microcontrolador puede ser una situación beneficiosa para todos en comparación con confiar en protocolos como MQTT o CoAP, que solo son capaces de enviar mensajes latentes a través de Internet. La pila LwIP le permite configurar un microcontrolador como cliente HTTP, servidor HTTP, cliente MQTT, MDNS, cliente SMTP, SNTP, respondedor NetBIOS, servidor Iperf, agente SNMP y servidor TFTP. Si una aplicación de red integrada no requiere escalamiento ni tiene que lidiar con problemas de seguridad de red o limitaciones de tiempo, la pila LwIP puede ser la mejor opción. Aún así, un desarrollador debe cuidar las expectativas de la aplicación integrada prevista y elegir sabiamente si la pila LwIP es suficiente o si la pila de red Linux/BSD subyacente es adecuada. La mayoría de los desarrolladores de redes integradas encuentran cómoda la pila LwIP porque ya están familiarizados con la suite TCP/IP y 802.11 PHY.

LwIP tiene mucho que ofrecer en el espacio de redes integradas que los principales fabricantes integrados han adoptado para sus controladores Ethernet y WiFi. LwIP es una pila de redes en sistemas operativos como ReactOS y Genode. En algunos sistemas operativos basados ​​en Linux/Unix, la pila se utiliza para implementar servidores de red.

Para plataformas integradas populares como Arduino y ESP8266/ESP32, LwIP está disponible a través de la API de sockets BSD. Por lo tanto, los entusiastas de la electrónica pueden integrar funciones LwIP en una aplicación integrada accediendo al módulo API, como el módulo de socket. Muchos sistemas operativos en tiempo real (RTOS) dependen de la pila LwIP para implementar funciones de red.

Los diseñadores integrados pueden encontrar controladores de dispositivos basados ​​en LwIP que ya están disponibles para muchas plataformas. De lo contrario, pueden utilizar la pila LwIP dentro de un sistema operativo o controlador de red para implementar redes integradas en una plataforma específica. Si una plataforma ejecuta un sistema operativo que contiene una pila LwIP, los desarrolladores pueden utilizar la pila directamente en el código de la aplicación.

Implementación de la pila LwIP
La pila LwIP está disponible a través de tres tipos de interfaces de programación de aplicaciones: API sin formato, API de estilo en línea y API de socket estilo BSD. Las API sin formato son API de bajo nivel y no seguras para subprocesos que se pueden utilizar para integrar LwIP en el sistema operativo o en el nivel del kernel. Estas API le permiten realizar devoluciones de llamadas optimizadas para obtener el máximo rendimiento con el mínimo espacio. Las API de estilo en línea proporcionan funciones de bloqueo que se pueden invocar en subprocesos TCP/IP. Las API de socket de estilo BSD proporcionan funciones seguras para subprocesos que se invocan en subprocesos que no son TCP/IP. Las API sin copia no sobrecargan la plataforma subyacente (controlador).

Para plataformas de microcontroladores como Arduino y ESP, puede encontrar la pila LwIP ya implementada en algunas bibliotecas. Las bibliotecas específicas de la plataforma pueden implementar la pila de forma intrínseca o como un controlador LwIP explícito. Algunos firmware integrados, como MicroPython, también utilizan y admiten la pila LwIP.

LwIP con Arduino
La biblioteca Ethernet para la plataforma Arduino se basa en la pila LwIP. La biblioteca puede funcionar con tarjetas de red basadas en Arduino Ethernet Shield, Arduino Ethernet Shield 2, Leonardo Ethernet y W5100/W5200/W5500. Para utilizar explícitamente la pila LwIP en Arduino para funciones de red, también está disponible una fuente LwIP modificada según las bibliotecas de Arduino. Una biblioteca Ethernet STM32 para Arduino también se basa en la pila LwIP y sigue la API Ethernet de Arduino. Se puede utilizar para programar aplicaciones Ethernet en placas basadas en STM32. Algunas otras bibliotecas de Arduino basadas en la pila LwIP incluyen las siguientes.

lwIP: un puerto de la biblioteca LWIP para Arduino.
ESP8266-ping: se utiliza para enviar y recibir mensajes de ping en ESP8266.
QNEthernet: biblioteca Ethernet basada en lwIP para Teensy 4.1.
AsyncWebServer_Ethernet: biblioteca de servidor HTTP y WebSocket asíncrono para ESP8266.
InqPortal: se utiliza para el servidor IoT completo en ESP8266.
RTT-Ethernet: se utiliza para conectar placas STM32 con Ethernet.

LwIP con ESP8266 y ESP32
La pila LwIP está disponible para ESP-IDF como API de socket BSD. La API se puede utilizar para configurar ESP8266/ESP32 como cliente TCP, servidor TCP, cliente UDP, servidor UDP, multidifusión UDP y cliente HTTP ESP. Algunas bibliotecas Arduino también están disponibles para ESP8266 (mencionadas anteriormente), que se basan en la pila LwIP. Estas bibliotecas pueden configurar el ESP8266 para Ethernet o como un servidor IoT.

Controladores de dispositivo LwIP
Los desarrolladores profesionales de sistemas integrados ahora pueden encontrar controladores de dispositivos LwIP para varias plataformas. Los controladores están disponibles para CS8900A, MCF5223X, STM32F107xx, STM32F217, Altera NIOS II TSE, TI Stellaris LM3S, ARM Cortex-M3 FM3 MB9BD10S/T, MB9B610S/T, MB9B210S/T, TI RM48xx/RM46xx/TMS570xxx/RM57xx/TMS570LC x, Microcontroladores de dispositivos analógicos Blackfin 526/527/536/537, TI C674x, ARM Cortex-M(3), STM32F4x7 y PIC32MX795H512L. También está disponible un controlador de capa de enlace LwIP genérico para chips Ethernet. Si una plataforma requiere la integración de la pila LwIP en el kernel Linux/BSD o un controlador de red, los desarrolladores pueden consultar el manual para desarrolladores de la plataforma LwIP. Para integrar la pila LwIP en una aplicación, la guía disponible es el Manual para desarrolladores de aplicaciones LwIP.

LwIP en sistemas operativos en tiempo real
Muchos sistemas operativos en tiempo real, como FreeRTOS, RTLinux, QP, mbed, eCos y eCos Pro, incluyen un puerto LwIP junto con una pila de red derivada de BSD. Un monitor de arranque Micromonitor/uMon también utiliza una pila LwIP como complemento.

Conteúdo Relacionado

Cómo solucionar problemas comunes de ESP32-CAM
ESP32-CAM es un módulo de cámara compacto que combina...
¿Cuál es el papel de los sensores automotrices en los vehículos modernos?
En cada vehículo hay una red de sensores integrada...
Cómo elegir un controlador de bicicleta eléctrica
El controlador del motor es uno de los componentes...
Una guía de estándares USB desde 1.0 hasta USB4
La evolución de los estándares USB ha sido fundamental...
Schurter mejora la serie de selectores de voltaje con revestimiento de plata
SCHURTER anuncia una mejora de su popular serie SWZ...
Los versátiles tubos de luz rígidos de 3 mm de VCC, que se ofrecen en versión de montaje inverso
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A interface serial PCI fornece conectividade confiável em ambientes extremos
A Sealevel Systems anuncia o lançamento da Interface Serial...
STMicroelectronics expande portfólio de conversão de energia com diodos Trench Schottky de 100 V
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
O que são Sistemas Globais de Navegação por Satélite (GNSS) e como são usados?
Determinar uma localização precisa é necessário em várias indústrias...
O conversor GaN de 50 W da STMicroelectronics permite projetos de energia de alta eficiência
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
Samsung e Red Hat farão parceria em software de memória de próxima geração
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
Primeiro MPU single-core com interface de câmera MIPI CSI-2 e áudio
O mercado embarcado tem uma necessidade de soluções de...
A influência de diferentes enrolamentos de armadura CC no desempenho
O impacto dos enrolamentos da armadura CC no desempenho...
Decodificación fluida en motor de inducción para mejor rendimiento.
Probablemente se haya encontrado con el término " resistencia...
Comprensión de los aisladores de soporte en sistemas eléctricos
Probablemente tenga un aislante de soporte si ha notado...
Explore Stay Insulator: seguridad, instalación y mantenimiento
Probablemente haya visto un aislante colocado en postes de...
Más seguridad y eficiencia con el aislador de grilletes
Probablemente hayas visto aisladores de grillete entronizados en postes...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.