San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
DevSecOps

データプレーンとは?

現代のソリューションは、大量のデータを即時に送信できるほど進化しており、これが組織の中核をなす理由となっている。アプリは、社内外の連携やコミュニケーションを支援する。

アプリ間の通信を担う通信アーキテクチャは、三つの要素から構成される。そのひとつがデータ(転送)プレーンであり、今回はこの要素に焦点を当てる。

著者
データプレーンとは?

データプレーンの定義

データ転送を行う全システムの一部であるデータプレーンは、受信またはユーザー発信のトラフィックを扱い、どの処理を実行するかを決定する。コントロール&マネジメントプレーンと共に、各種コミュニケーションアプリが採用する通信アーキテクチャを構成している。

ルーティングにおいては、接続が有効な状態の間、クライアント間のデータ転送を担う。HTTPなどのプロトコルを利用して遠隔の通信を管理し、関連するトラフィックはルータを通過する。

簡単に言えば、データプレーンはルータがデータパケットの行き先を確認するための表と考えることができる。

通常、その表にはデータパケットの経路情報が記されるが、破棄命令が含まれることもある。ルータがそのような表に遭遇すると、『到達不能』のエラーコードを返す。

実装 

従来のネットワーキング方式を採用するアプリでは、データプレーンの実装はファームウェア上に行われ、コントロール&マネジメントプレーンはソフトウェアコンポーネント内に存在する。しかし、SDNネットワーキングモデルを採用するアプリでは異なる実装がなされる。

データプレーンは何をするか

簡単に言えば、データプレーンはデータトラフィックを運ぶ役割を果たす。例えば、ユーザーがFacebookのアプリにアクセスを要求した場合、データプレーンがその通信を目的地まで運ぶ。

データプレーンはトラフィックのデータパケットを受け取り、ルータを通じて転送する。ルーティングの判断はコントロールパネルで実施され、データプレーンがトラフィックをルータへ渡す際に適用される。

一般的な役割は次の通りである:

  • コントロールプレーンのルーティングロジックの展開 
  • ネットワークへのデータパケット送信/転送 
  • 転送およびルーティングテーブルを活用したトラフィックの行き先判断 

これらの機能で収集された情報は、以下のような処理に利用される:

  • コントロールプレーンのデータに基づいた通信処理の完了 
  • データパケットの移動時の経路指示 

プロセス

データプレーンは、コントロールプレーンに存在するルーティングロジックの助けを借り、転送およびルーティングテーブルの情報を取り出す。得られた情報をもとに、データパケットの送信先と送信方法を決定する。例えば、通信を完結させるためにネットワークインターフェースへ転送する場合がある。

コントロールプレーン対データプレーン 

関連しているか? はい. 

データプレーンは、コントロールプレーンのルーティング決定に従って動作する。両者は、アプリに通信機能を組み込む上で欠かせない存在である。

しかし、同じものか? いいえ. 

両者には大きな違いがある。以下に、コントロールプレーンとデータプレーンの主要な違いを示す。

  • 範囲

データプレーンについての理解は既にあるとする。ここでは、データパケットの経路を決定するすべての処理を含むコントロールプレーンについて解説する。これは、ネットワークトポロジーの骨組みを構築するルータアーキテクチャの一部に関わる。

その役割は、ルーティングプロトコルへの積極的な参加や、ルーティングテーブル、ルーティングルール、転送原則、ネットワークトポロジーなど、効果的なデータプレーン機能に必要な要素を設計することにある。

また、このロジックは、性能が低いあるいは不要なデータパケットを検出し、その処理の終了時期を決定することができる。ルータの実装シナリオにより、コントロールプレーンが参照する転送情報基盤は異なるが、データプレーンは常にその情報に基づいて行動を計画する。

  • 計算能力

コントロールプレーンは、データプレーンの設定や停止を管理するソフトウェア部分である。まるで、料理の手順書が必要なスパイスや調理時間を指示するように、標準化された方法で機能する。

また、コントロールプレーンを『頭脳』、データプレーンを『身体』と例えることができる。頭脳が状況に応じて行動を決め、身体に指示を出すように、コントロールプレーンがルータの処理を決定し、データプレーンがそれを実行する。

  • 主要な機能

コントロールプレーンは意思決定を行い、データプレーンはその実行役として機能する。コントロールプレーンがルーティングを担い、データプレーンはスイッチングを担当する。

ルータはこれら二つのプレーンに対して異なる動作を行う。例えば、コントロールプレーン向けのパケットを生成する一方、データプレーン向けのパケットは生成せず、単に通過を許可する。

  • パケットスイッチングにおける役割

データプレーンは、コントロールプレーンで収集された情報を用いて、指示通りにデータパケットの運搬および転送を行う。

長年にわたり、開発者やIT専門家はこれら二つの概念を明確に分離しようとしてきた。Unixはその好例であり、基本操作の『開く』『閉じる』はコントロールプレーン向け、データの読み書きはデータプレーン向けに行われる。

  • ネットワーク最適化の目標 

データプレーンは、高速な処理とシンプルな運用を実現するために最適化されている。

一方、コントロールプレーンは設定の容易さと複雑な状況への継続的な対応を目指しており、その結果、データプレーンの処理が迅速に行われるとともに、効果的なポリシー対応が可能となる。

  • 依存関係

コントロールプレーンは完全に独立しており、外部の影響を受けず動作する。これに対し、データプレーンは主にコントロールプレーンに依存し、自ら判断してデータパケットの送信方法を決定することはなく、コントロールプレーンの指示に従う。

  • 技術スタック

両者は処理に用いる技術スタックが異なる。例えば、コントロールプレーンはSTP(スパニングツリープロトコル)、RIP(ルーティング情報プロトコル)、ARP(アドレス解決プロトコル)に依存し、データプレーンはIPヘッダーのチェックサムやTTLを扱う。

  • Kubernetesにおける場合

Kubernetesでは、コントロールプレーンは標準化されたクラスタ判断を行うコンポーネント群であり、データプレーンはワーカーノードの集合である。これには対応するコンテナやpodも含まれる。

  • Service Meshの場合

Service Meshでは、コントロールプレーンがポリシーの適用と設定を担い、データプレーンはその設定情報を伝達するサイドカープロキシで構成される。

お急ぎですか? 表をご覧ください。

コントロールプレーンデータプレーン
基本的な定義データパケットが進む経路を決定するためのあらゆる処理、タスク、ワークフローの総体である。送信元から受信先へデータパケットを運ぶためのワークフロー、プロセス、処理の総体である。
担当する役割主にデータプレーン用のIPルーティングテーブルの維持管理や、データパケット転送方法の決定を担う。データプレーンの主な役割は、IPパケットを転送し、正しい受信先に届けることである。
実装アプリのアーキテクチャに応じ、ファームウェアまたはソフトウェアで実装される。データプレーンは常にファームウェア上で実装される。
ルータの役割コントロールプレーン向けのデータパケットを生成する。データプレーンのパケットが通過するのを許可する。
状態完全に独立コントロールプレーンのロジックとデータに完全に依存
計算処理での役割データプレーンの設定や停止を決める。計算処理において、データ要求を処理する。
ネットワークでの役割ネットワークトポロジーの構築を担う。受信トラフィックの処理を決定し、コントロールプレーンのロジックに基づいて転送先や宛先を判断する。
含まれるプロセスSTP、ARP、DHCP、RIPIPヘッダーのチェックサムとTTL
働き方頭脳のような意思決定者身体のような実行者
実行する動作ルーティングスイッチング

Kubernetesにおけるデータプレーン 

クラウドネイティブアプリ向けには、Kubernetesが非常に好まれる選択肢のひとつである。KubernetesのAPIは開発者向けに増え続け、その効果的な管理が求められている。

クラウドネイティブアプリの管理においては、データプレーン、コントロールプレーン、マネジメントプレーンの存在が、アプリの将来を左右する。

Kubernetesのデータプレーンは、従来のものと異なり、単にデータパケットの行き先を決めるだけでなく、アプリの円滑な動作に必要なすべての要素を管理する。

例えば、レイテンシ、ユーザーエクスペリエンス、SLA、ポリシー、顧客行動のトリガーといった主要なパフォーマンス指標を含む。データプレーンの応答性が高いほど、アプリの動作はより良好になる。

Kubernetesにおけるデータプレーンは、構成面で従来のデータプレーンと異なる。一般的なデータプレーンがデータパケットで構成されるのに対し、Kubernetesではワーカーノードが主体となる。なお、ワーカーノードは単独では存在せず、ワーカ―コンテナ、pod、kubeletも含まれる。

ここでは、コンテナとpodがkubeletエージェントを用いてデータを送信する。kubeletエージェントは状態や条件をデータベースと共有し、コンテナエンジニアがその管理を担う。

各モードのpod管理には異なる仕様があり、コンテナエンジニアごとに制約が異なる。Kubernetesが設計された主な目的はオンプレミスアプリの管理であったため、podスケーリングが基本機能として提供された。しかし、クラウドネイティブへの採用が進む中で、自動podスケーリングは実現していなかった。

この問題を解決するため、Kubernetesは適合するクラスタ登録済みノードにpodを配置するようになった。この手法は、ノードの健全性を保証し、podの実行が可能になることを期待されたが、同時にクラスタ全体の非効率性を招いた。

Kubernetesのデータプレーンは、ワークロード、スケールされたpod、インフラコンポーネントで構成され、ほとんどの計算処理を担当する。無駄の削減を図るなら、Kubernetesを利用する組織はデータプレーンに注目すべきである。

kubeletはすべてのモードに含まれ、コントロールプレーンまたはAPIサーバからの設定指示を受け入れる。従来のKubernetesクラスタではデータプレーンにetcdが使用されるが、現代のクラスタではMariaDB、MySQL、SQLiteに置き換えられている。

コントロールプレーンとデータプレーンの配置パターンは予測しにくく、一部のクラスタでは同一場所に配置され、また別のクラスタでは異なる場所に実装される。

クラスタが高度なフォールトトレランスを必要とする場合、最低2台のコントロールプレーンノードと3台のデータプレーンノードが必須である。

しかし、使用するコントロールプレーンノードの数に応じ、データプレーンノードは5台または7台となることもある.  

結論

クラウドネイティブアプリへの移行が進む中、パフォーマンス向上、迅速な伝送、エンドツーエンドの管理が最重要課題となっている。通信アーキテクチャの要素であるデータプレーンは、データパケット伝送において重要な役割を果たす。本記事で多くの点を学んだ。振り返ってみよう。

  • データプレーンが存在することで、データパケットは方向性を持たない状態となる。
  • 実装は主にファームウェア上で行われる。
  • データプレーンは、処理の判断にコントロールパネルのデータを必要とする。
  • Kubernetesのデータプレーンは、従来とは異なり、ワーカーノードが中心となっている。

これらの内容を通して、データプレーンの概要、その重要性、そしてコントロールプレーンとの違いについて理解が深まったことと思う。データプレーンを正しく把握できれば、残る二つのプレーンで、通信機能に優れたモダンなアプリの開発も円滑に進むだろう。

FAQ

Open
データプレーンとコントロールプレーンの違いは何ですか?
Open
ネットワークにおけるデータプレーンとは何ですか?
Open
データプレーンで使用される一般的なプロトコルにはどのようなものがありますか?
Open
ネットワーク性能を向上させるために、データプレーンをどのように最適化できるか?

参考資料

Dataplane application - Github repository

Dataplane - Github topics

最新情報を購読

更新日:
February 27, 2025
学習目標
最新情報を購読
購読
関連トピック