1 ポイント 投稿者 GN⁺ 2024-09-08 | まだコメントはありません。 | WhatsAppで共有
  • 組み込みデバイスでもTCP/IPを載せられるように、lwIP 2.1.0はTCP/IPプロトコルスイートを小さな独立実装として提供
  • 数十KBのRAMと約40KBのコードROM程度の環境を想定しつつ、フルスケールのTCPを提供することに重点を置く
  • サポート範囲はIPv4/IPv6、ICMP、IGMP、MLD、IPv6 Neighbor Discovery、DHCP、UDP、TCP、raw/native API、Berkeley風socket API、altcp、PPP、DNS、6LoWPANまで幅広い
  • 標準搭載アプリケーションとして、HTTPサーバー、SNMPv2cエージェント、SNTP、NetBIOS名前サービスレスポンダー、mDNSレスポンダー、iPerfサーバー、MQTTクライアントを含む
  • BSDライセンスで提供され、SavannahのGitリポジトリとメーリングリストを通じて世界中の開発者ネットワークが開発・保守している

組み込み向けTCP/IPスタック設計

  • lwIPはTCP/IPプロトコルスイートの小さな独立実装
  • 設計目標は、RAM使用量の削減とフルスケールのTCP提供を両立すること
    • 数十KBの空きRAMがある組み込みシステムに適している
    • コードROMは約40KBの領域を前提とする
  • もともとはAdam DunkelsがSwedish Institute of Computer ScienceのComputer and Networks Architectures labで開発し、現在は世界中の開発者ネットワークが保守している
  • ネットワークプロトコルとAPI

    • IP層はIPv4とIPv6をサポートし、複数のネットワークインターフェース間でのパケット転送も可能
    • ネットワーク保守とデバッグにはICMPを、マルチキャストトラフィック管理にはIGMPを提供
    • IPv6関連機能としてMLDとNDを含む
      • MLDはRFC 2710準拠を目指すが、MLDv2はサポートしない
      • NDはRFC 4861 Neighbor DiscoveryとRFC 4862アドレス自動設定への準拠を目指す
    • アドレス設定と名前解決機能としてDHCP、AutoIP/APIPA、stateless DHCPv6、DNS、mDNSを提供
    • トランスポート層はUDPとTCPを含む
      • UDPは実験的なUDP-lite拡張を含む
      • TCPは輻輳制御、RTT推定、fast recovery、fast retransmit、SACK送信をサポート
    • APIと拡張機能としてraw/native API、オプションのBerkeley風socket API、オプションの階層型TCP altcp、PPPoS、PPPoE、6LoWPANをサポート
      • altcpはTCPベースのプロトコルにほぼ透過的なTLSを提供
  • 同梱アプリケーション

    • HTTPサーバーはSSIとCGIをサポートし、HTTPSはaltcpを通じて提供される
    • SNMPv2cエージェントはMIBコンパイラを含み、v3はaltcpを通じて提供される
    • SNTP、NetBIOS名前サービスレスポンダー、mDNSレスポンダーを含む
    • iPerfサーバー実装とMQTTクライアントを含み、MQTTのTLSサポートはaltcpを通じて提供される

開発参加とドキュメント

  • lwIPはBSDライセンスで自由に提供される
  • 開発はSavannahでホストされており、Savannahインターフェース、Git、メーリングリストを通じて改善に参加できる
  • コア開発チームがGitソースツリーに変更をコミットする
    • TCP/IPスタックはlwip Gitモジュールで保守される
    • プラットフォーム移植などの貢献はcontrib Gitモジュールにある
  • 現在のGitツリーはWebで閲覧可能
  • パッチとバグはlwIP project pageを通じて提出する
  • 継続的インテグレーションビルドはGCCとclangを対象にTravis CIで提供される
  • ソースコードの自己文書化されたドキュメントは、現在のGitソースから定期的に抽出され、lwIP Webページで提供される
  • ドキュメントと学習資料はwiki、メーリングリスト、検索可能なアーカイブ、docs/ファイル、ソースコードドキュメントで確認できる

まだコメントはありません。

まだコメントはありません。