Definition:data plane
データプレーンとは、ネットワーク機器または通信システムにおいて、入力されたデータ単位(パケット等)を、制御プレーンによって設定された転送状態に従って処理し、適切な出力インタフェースへ高速に転送する機能領域である。
この領域は経路計算やポリシー決定を行わず、既存の転送規則に基づく実行処理に特化する。
データプレーン(data plane)は、フォワーディングプレーン(forwarding plane)と呼ばれることもある。その本質は、コントロールプレーンによってあらかじめ生成・設定された状態情報(転送テーブル、ラベル情報、ACL、QoS設定など)を用い、それに基づいて個々のデータ処理を高速かつ決定論的に実行する点にある。
このとき重要になるのは、データプレーンが自律的に経路計算やネットワーク全体の最適化判断を行うのではなく、あくまで「与えられたルールを実行する機能領域」であるという点である。ルーティングやポリシーの決定はコントロールプレーン側で行われ、その結果として生成された転送テーブルやラベル情報がデータプレーンに渡される。データプレーンはそれを参照しながら、受信したパケットごとに処理を完結させる。
実装の観点から見ると、データプレーンは単純な逐次的ソフトウェア処理ではなく、パケット処理のパイプラインとして設計されることが多い。パケットは入力ポートで受信された後、ヘッダ解析(パース)、テーブル参照(ルックアップ)、フィルタリング、ヘッダ書き換え(リライト)、キューイング・スケジューリングといった複数の処理段階を経て、最終的に出力ポートへと送出される。これらの処理は可能な限り並列化・ハードウェア化されており、遅延を最小化しつつ極めて高いスループットを実現するよう設計されている。
またデータプレーンは、ハードウェアからソフトウェアへと実装形態を拡張してきた歴史を持つ。従来は専用ASIC(またはネットワークプロセッサ、NPU)による高速処理が中心であったが、近年ではDPDKやeBPF、XDP、SmartNIC/DPUといった技術によって汎用CPUやNIC上でも高速なデータプレーン処理が可能になり、柔軟性とプログラマビリティが大きく向上している。さらにP4のようなプログラマブルデータプレーン記述言語の登場により、転送動作そのものをソフトウェア的に定義・変更できる環境も普及してきている。
クラウド環境やSDN(Software-Defined Networking)においては、仮想スイッチ(Open vSwitchなど)やコンテナネットワークの形で論理的に分離されたデータプレーンが構成され、OpenFlowなどのプロトコルを介してコントロールプレーンから動的に制御される形態が一般的になっている。このようにコントロールプレーンとデータプレーンを分離するアーキテクチャ思想は、SDNの中核的な設計原理の一つでもある。
なお、データプレーン・コントロールプレーンに加えて、機器自体の管理・監視を担うマネジメントプレーン(management plane)を区別する三層モデルも広く用いられる。
形式的に捉えるならば、データプレーンはパケットと状態情報を入力とし、転送結果(出力先、書き換え後のヘッダ、ドロップ/通過などの判定)を出力する状態依存関数として表現できる。この関数は極めて高速かつ大量に繰り返し評価されることで、ネットワーク全体のリアルタイムなパケット転送を支えている。
Mathematics is the language with which God has written the universe.