lwIP の概要
紹介
- lwIP は独立した小型 TCP/IP プロトコルスタックの実装
- RAM 使用量を抑えつつ、フルスケールの TCP を維持することに重点を置いている
- 組み込みシステムでの利用に適しており、数十キロバイトの RAM と約 40 キロバイトのコード ROM を必要とする
- もともとは Adam Dunkels によって開発され、現在は世界中の開発者ネットワークによって保守されている
機能
- IP(インターネットプロトコル、IPv4 および IPv6): 複数のネットワークインターフェース間でのパケット転送を含む
- ICMP(インターネット制御メッセージプロトコル): ネットワーク保守とデバッグ
- IGMP(インターネットグループ管理プロトコル): マルチキャストトラフィック管理
- MLD(マルチキャストリスナー検出): IPv6 向け、RFC 2710 準拠を目標
- ND(近隣探索およびステートレスアドレス自動設定): RFC 4861 および RFC 4862 準拠を目標
- DHCP、AutoIP/APIPA(Zeroconf)および(ステートレス)DHCPv6
- UDP(ユーザーデータグラムプロトコル): 実験的な UDP-lite 拡張を含む
- TCP(伝送制御プロトコル): 輻輳制御、RTT 推定、高速回復/高速再送、および SACK 送信
- raw/ネイティブ API: パフォーマンス向上
- オプションの Berkeley 互換ソケット API
- TLS: ほぼ透過的な TLS のためのオプション階層 TCP("altcp")(mbedTLS にポーティング済み)
- PPPoS および PPPoE(シリアル/Ethernet 経由の Point-to-Point Protocol)
- DNS(ドメイン名リゾルバ、mDNS を含む)
- 6LoWPAN(IEEE 802.15.4、BLE または ZEP 経由)
アプリケーション
- HTTP サーバー: SSI および CGI を含む(altcp 経由の HTTPS)
- SNMPv2c エージェント: MIB コンパイラを含み、v3 は altcp 経由でサポート
- SNTP(簡易ネットワーク時刻プロトコル)
- NetBIOS 名サービスレスポンダ
- MDNS(マルチキャスト DNS)レスポンダ
- iPerf サーバー実装
- MQTT クライアント: TLS サポートは altcp 経由で利用可能
ライセンス
- lwIP は BSD ライセンスの下で無償提供されている
開発
- lwIP は組み込み機器向けの優れた TCP/IP スタックへと成長してきた
- 開発者はバグ修正、改善、追加機能を提出し、スタックの有用性をさらに高めている
- 開発は Savannah でホストされており、Git とメーリングリストを通じて誰でも lwIP の改善に貢献できる
- lwIP TCP/IP スタックは
lwip Git モジュールで保守され、コントリビューションは contrib Git モジュールにある
- Git サーバーへのアクセスの詳細は doc/savannah.txt を参照
- 現在の Git ツリーは Web で閲覧可能: lwip, lwip-contrib
- パッチおよびバグ報告の提出: lwIP プロジェクトページ
- 継続的インテグレーションビルド: Travis CI
ドキュメント
GN⁺ のまとめ
- lwIP は組み込みシステム向けに効率的な TCP/IP スタックを提供し、メモリ使用量を最小限に抑える
- 多様なネットワークプロトコルとアプリケーションをサポートし、柔軟性と拡張性を提供する
- 開発者コミュニティの活発な参加により継続的に改善されている
- 類似機能を持つプロジェクトとしては FreeRTOS+TCP、uIP などがある
1件のコメント
Hacker Newsの意見
数年前のプロジェクトで LwIP を使って、システムテストを効果的に実施した
IP スタックという表現では過小評価されている
LwIP のような選択肢を探している人には、NetXDuo と、その対応物である ThreadX、FileX、LevelX、UsbX を検討することを勧める
Adam Dunkels は Protothreads の大部分を書いた
nongnu.org とは何で、gnu.org とどういう関係があるのか気になる
リソース制約のあるデバイスで最も多く使われている TCP/IP スタックかもしれない
LWIP が気に入っている理由は、Ethernet MAC DMA によって割り当てられた同じメモリブロックを、パケットの寿命の間ずっと使えるようにしてくれること
独自の軽量 TCP/IP スタックを実装しようとしている人にとって、Jeremy Bentham の著書 <i>TCP/IP Lean</i> は素晴らしい資料
記事からの抜粋:
Pico W はこれを使っている