Visão geral do lwIP
Introdução
- lwIP é uma implementação independente de uma pequena pilha de protocolos TCP/IP
- O foco é manter um TCP completo enquanto reduz o uso de RAM
- É adequado para uso em sistemas embarcados e requer algumas dezenas de kilobytes de RAM e cerca de 40 kilobytes de ROM de código
- Foi originalmente desenvolvido por Adam Dunkels e atualmente é mantido por uma rede global de desenvolvedores
Funcionalidades
- IP (Protocolo de Internet, IPv4 e IPv6): inclui encaminhamento de pacotes entre várias interfaces de rede
- ICMP (Protocolo de Mensagens de Controle da Internet): manutenção e depuração de rede
- IGMP (Protocolo de Gerenciamento de Grupos da Internet): gerenciamento de tráfego multicast
- MLD (Multicast Listener Discovery): para IPv6, com meta de conformidade com a RFC 2710
- ND (Neighbor Discovery e autoconfiguração de endereço stateless): com meta de conformidade com as RFC 4861 e RFC 4862
- DHCP, AutoIP/APIPA (Zeroconf) e DHCPv6 (stateless)
- UDP (Protocolo de Datagrama do Usuário): inclui a extensão experimental UDP-lite
- TCP (Protocolo de Controle de Transmissão): controle de congestionamento, estimativa de RTT, fast recovery/fast retransmit e transmissão SACK
- API bruta/nativa: melhor desempenho
- API de soquetes opcional semelhante à Berkeley
- TLS: camada TCP opcional ("altcp") para TLS quase transparente (portado para mbedTLS)
- PPPoS e PPPoE (Point-to-Point Protocol sobre serial/Ethernet)
- DNS (resolvedor de nomes de domínio, incluindo mDNS)
- 6LoWPAN (via IEEE 802.15.4, BLE ou ZEP)
Aplicações
- Servidor HTTP: inclui SSI e CGI (HTTPS via altcp)
- Agente SNMPv2c: inclui compilador MIB, com suporte a v3 via altcp
- SNTP (Simple Network Time Protocol)
- Respondedor de serviço de nomes NetBIOS
- Respondedor MDNS (Multicast DNS)
- Implementação de servidor iPerf
- Cliente MQTT: suporte a TLS disponível via altcp
Licença
- O lwIP é oferecido gratuitamente sob a licença BSD
Desenvolvimento
- O lwIP evoluiu para uma excelente pilha TCP/IP para dispositivos embarcados
- Desenvolvedores enviam correções de bugs, melhorias e recursos adicionais, aumentando ainda mais a utilidade da pilha
- O desenvolvimento é hospedado no Savannah, e qualquer pessoa pode contribuir para melhorar o lwIP por meio de Git e listas de discussão
- A pilha TCP/IP lwIP é mantida no módulo Git
lwip, e as contribuições ficam no módulo Git contrib
- Para detalhes sobre acesso ao servidor Git, consulte
doc/savannah.txt
- A árvore Git atual pode ser navegada na web: lwip, lwip-contrib
- Envio de patches e bugs: página do projeto lwIP
- Build de integração contínua: Travis CI
Documentação
Resumo do GN⁺
- O lwIP fornece uma pilha TCP/IP eficiente para sistemas embarcados, minimizando o uso de memória
- Suporta diversos protocolos de rede e aplicações, oferecendo flexibilidade e escalabilidade
- Continua sendo aprimorado graças à participação ativa da comunidade de desenvolvedores
- Projetos com funcionalidades semelhantes incluem FreeRTOS+TCP, uIP e outros
1 comentários
Comentários do Hacker News
Há alguns anos, usei o LwIP em um projeto para realizar testes de sistema de forma eficaz
Chamar isso de pilha IP é até subestimar
Para quem procura opções como o LwIP, recomendo considerar o NetXDuo e seus equivalentes ThreadX, FileX, LevelX e UsbX
Adam Dunkels escreveu a maior parte do Protothreads
Fico curioso sobre o que é nongnu.org e como ele se relaciona com gnu.org
Parece ser a pilha TCP/IP mais usada em dispositivos com recursos limitados
O que eu gosto no LWIP é que ele permite usar o mesmo bloco de memória alocado pelo Ethernet MAC DMA durante toda a vida útil do pacote
memcpyPara quem quer implementar sua própria pilha leve de TCP/IP, o livro <i>TCP/IP Lean</i>, de Jeremy Bentham, é um excelente recurso
Trecho do artigo:
O Pico W usa isso