1 points par GN⁺ 2024-09-08 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Même sur des appareils embarqués, il est possible d’exécuter TCP/IP : lwIP 2.1.0 fournit une implémentation autonome et compacte de la suite de protocoles TCP/IP
  • Le projet vise à offrir un TCP complet tout en ciblant des environnements disposant de quelques dizaines de Ko de RAM et d’environ 40 Ko de ROM de code
  • La prise en charge couvre largement IPv4/IPv6, ICMP, IGMP, MLD, IPv6 Neighbor Discovery, DHCP, UDP, TCP, l’API raw/native, l’API socket de style Berkeley, altcp, PPP, DNS et 6LoWPAN
  • Parmi les applications fournies figurent un serveur HTTP, un agent SNMPv2c, SNTP, un répondeur de service de noms NetBIOS, un répondeur mDNS, un serveur iPerf et un client MQTT
  • Proposé sous licence BSD, le projet est développé et maintenu par un réseau mondial de développeurs via le dépôt Git et la mailing list de Savannah

Conception d’une pile TCP/IP pour l’embarqué

  • lwIP est une implémentation autonome et compacte de la suite de protocoles TCP/IP
  • Son objectif de conception est de réduire l’usage de la RAM tout en fournissant un TCP complet
    • Il convient aux systèmes embarqués disposant de quelques dizaines de Ko de RAM libre
    • Il part du principe d’un espace de ROM de code d’environ 40 Ko
  • Il a été initialement développé par Adam Dunkels au Computer and Networks Architectures lab du Swedish Institute of Computer Science, et il est aujourd’hui maintenu par un réseau mondial de développeurs
  • Protocoles réseau et API

    • La couche IP prend en charge IPv4 et IPv6 et permet aussi le transfert de paquets entre plusieurs interfaces réseau
    • ICMP est fourni pour la maintenance et le débogage du réseau, et IGMP pour la gestion du trafic multicast
    • Les fonctions liées à IPv6 incluent MLD et ND
      • MLD vise la conformité à la RFC 2710, mais MLDv2 n’est pas pris en charge
      • ND vise la conformité à la découverte de voisins RFC 4861 et à l’autoconfiguration d’adresses RFC 4862
    • Pour la configuration d’adresses et la résolution de noms, lwIP fournit DHCP, AutoIP/APIPA, DHCPv6 sans état, DNS et mDNS
    • La couche de transport comprend UDP et TCP
      • UDP inclut l’extension expérimentale UDP-lite
      • TCP prend en charge le contrôle de congestion, l’estimation du RTT, fast recovery, fast retransmit et la transmission SACK
    • Côté API et extensions, lwIP prend en charge l’API raw/native, l’API socket optionnelle de style Berkeley, la couche TCP hiérarchique optionnelle altcp, PPPoS, PPPoE et 6LoWPAN
      • altcp fournit un TLS quasiment transparent pour les protocoles basés sur TCP
  • Applications incluses

    • Le serveur HTTP prend en charge SSI et CGI, et HTTPS est fourni via altcp
    • L’agent SNMPv2c inclut un compilateur MIB, et la v3 est fournie via altcp
    • lwIP inclut SNTP, un répondeur de service de noms NetBIOS et un répondeur mDNS
    • Il inclut aussi une implémentation de serveur iPerf et un client MQTT, avec prise en charge de TLS pour MQTT via altcp

Participation au développement et documentation

  • lwIP est librement proposé sous licence BSD
  • Le développement est hébergé sur Savannah, et il est possible de contribuer à son amélioration via l’interface Savannah, Git et les mailing lists
  • L’équipe principale de développement commit les modifications dans l’arborescence source Git
    • La pile TCP/IP est maintenue dans le module Git lwip
    • Les contributions comme les ports de plateforme se trouvent dans le module Git contrib
  • L’arborescence Git actuelle peut être consultée sur le Web
  • Les patchs et bugs sont soumis via la page du projet lwIP
  • Des builds d’intégration continue pour GCC et clang sont fournis sur Travis CI
  • La documentation intégrée au code source est actuellement extraite régulièrement des sources Git et publiée sur le site Web de lwIP
  • La documentation et les ressources d’apprentissage sont disponibles sur le wiki, les mailing lists, les archives consultables, les fichiers docs/ et la documentation du code source

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.