Netmap

summary:

Netmap[/ˈnɛtmæp/]とは,FreeBSDおよびLinux上において,カーネル空間とユーザ空間の間で高速なパケットI/Oを実現するための汎用フレームワークである.従来のsocket APIや標準ネットワークスタックを通さずに,ユーザ空間からNICのパケットリングバッファへ直接アクセスすることで,桁違いのパケットスループットと低レイテンシを実現するものである.

Netmapは,LinuxおよびFreeBSDのネットワークスタックに対して,軽量な改変[hook]を導入することで,高速なパケット入出力を可能にしている.DPDKのようにNICをユーザ空間に直接バインドして完全に占有するのではなく,最小限のカーネルパスバイパスを通じて柔軟性を保ちつつ高速化を達成している.このアプローチにより,DPDKほどの絶対的なパフォーマンスは得られないものの,システムの他の部分との互換性と共存性を維持できる利点がある.

Netmapは,NICの送受信リングバッファと同様の構造を持つ共有メモリリングバッファを,ユーザ空間とカーネル空間でマッピング共有する.これにより,パケット転送時のコピーを不要とし,ゼロコピー・低オーバーヘッドな通信を実現している.パケットバッファ自体は事前に割り当てられたメモリプールから提供され,これによってメモリ割り当てのオーバーヘッドも削減している.

Netmapの特徴は,標準的なNICドライバの拡張として動作可能であり,OSの通常のネットワークスタックとも共存が可能である点にある.これにより,DPDKのようにNICを完全に占有することなく,既存アプリケーションとの互換性をある程度維持できる.Netmapモードとネイティブモードの切り替えも動的に行うことが可能である.一方,DPDKは使用中のNICを通常のネットワーク操作には使用できない制約がある.

Netmapは,従来のread()/write[]/poll[]ioctl[]などのシステムコールをベースとしたシンプルなAPIを提供している.DPDKが独自のAPIセットと複雑なライブラリを必要とするのに対し,Netmapは開発の複雑さを抑え,少ない変更でアプリケーションに組み込むことができる.C言語で数百行程度のコードでも,1コアあたり10Mpps[毎秒1000万パケット]級のパケット処理が可能である.また,バッチ処理によりシステムコールのオーバーヘッドを削減する設計となっている.

Netmapには,仮想化支援モジュールも存在する.VALE[Virtual Local Ethernet]は高性能な仮想スイッチとして機能し,仮想インターフェース間の高速通信を実現する.また,Netmap pipesはプロセス間通信[IPC]や仮想NIC間の通信に使用可能である.これらにより,ユーザ空間内での高速なネットワーク処理やシミュレーションにも対応できる.

Netmapは,2011年にイタリアのLuigi Rizzo教授[University of Pisa]によって発表された.彼はFreeBSDカーネルのネットワーク機構に深く関わっていた研究者であり,Netmapは彼のFreeBSDに関する研究成果の延長線上で開発された.一方,DPDKはIntel主導で開発され,現在はLinux Foundationのプロジェクトとなっている.どちらもオープンソースで,BSDライクなライセンスで提供されている点は共通している.

当初はFreeBSD向けのフレームワークとして開発されたが,後にLinux対応が進み,汎用性が高まった.2012年にはLinuxカーネルへの対応が実装され,より広い環境で利用可能となった.2013年以降,Netmapは高速なパケットキャプチャツール[代替:PF_RING, DPDK],ソフトウェアルータ・ファイアウォールの高速化[VALEベース],学術研究における低レベルネットワーク評価などの用途で注目を集めた.

Netmapは完全なオープンソース[BSDライセンス]として配布されており,学術・産業双方で活用が進んでいる.また,多くの標準的なネットワークハードウェアに対応しており,特殊なハードウェアを必要としない点も普及の要因となっている.近年では,NFV[Network Function Virtualization]やSDN[Software-Defined Networking]の高速化基盤としても応用されている.パフォーマンスと柔軟性のバランスを重視するアプリケーションにとって,NetmapはDPDKの代替として適切な選択肢となり得る.

Mathematics is the language with which God has written the universe.





















Netmap TDM パス制御 アドドロップマルチプレクサ Time Series Transformer Avro