lwIP – 軽量IPスタック
(nongnu.org)- 組み込みデバイスでも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スタックは
lwipGitモジュールで保守される - プラットフォーム移植などの貢献は
contribGitモジュールにある
- TCP/IPスタックは
- 現在のGitツリーはWebで閲覧可能
- パッチとバグはlwIP project pageを通じて提出する
- 継続的インテグレーションビルドはGCCとclangを対象にTravis CIで提供される
- ソースコードの自己文書化されたドキュメントは、現在のGitソースから定期的に抽出され、lwIP Webページで提供される
- ドキュメントと学習資料はwiki、メーリングリスト、検索可能なアーカイブ、
docs/ファイル、ソースコードドキュメントで確認できる
まだコメントはありません。