SDN(基礎)

目次

SDNとは何か

SDN(Software Defined Networking、ソフトウェア定義ネットワーク)とは、ネットワーク機器の動作を一元的に管理・制御する仕組みのことを指します。これまでのネットワークは、ルータやスイッチ、ファイアウォールといった機器ごとに個別設定を行い、場合によってはケーブルの抜き差しなど物理的な作業も必要でした。しかし、SDNでは専用のソフトウェア(SDNコントローラ)が全体をまとめて制御するため、物理的な作業なしにネットワークの設定や構成を動的に変更できます。

イメージとしては、家中の電気を各部屋のスイッチで操作する従来の方法と、スマホのアプリからまとめて操作できるスマートホームの違いに近いものです。ネットワークを「ソフトウェアで定義」することで、効率的で柔軟な運用が可能になります。

なお、一部では「SDN=ネットワーク仮想化」と説明されることもありますが、厳密には両者は同じものではありません。ネットワーク仮想化はSDNを活用して実現できる一手段であり、SDNそのものはあくまで「制御をソフトウェアで集約する技術の総称」と覚えておくのが正確です。試験でもこの違いを問う問題が出るため、しっかり区別して理解する必要があります。

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

SDNの根幹にあるのが「データ転送機能」と「制御機能」の分離です。これをそれぞれ以下のように呼びます。

  • データプレーン:実際にデータを受け取り、宛先へ転送する処理を担う部分
  • コントロールプレーン:どの経路でデータを転送するかといった制御情報を作成・管理する部分

従来のネットワーク機器には、この2つの機能が両方とも組み込まれていました。そのため、ルータやスイッチごとに個別に設定を加える必要があり、規模が大きくなるほど管理が煩雑になりました。

一方、SDNではコントロールプレーンを機器から切り離し、SDNコントローラに集中させます。これにより、ネットワーク全体の制御を一元化でき、各機器にはデータプレーンだけを残して動作させる仕組みになります。これがSDNの大きな特徴であり、試験でも「プレーンの分離」と「集中制御」というキーワードが重要になります。

SDNのアーキテクチャ

SDNは大きく3つの層に分けられます。これらの関係性を押さえることが、全体像を理解するうえで欠かせません。

インフラストラクチャ層

ここは実際にデータ転送を行うルータやスイッチなどの機器が属する層です。これらの機器を制御する際には、OpenFlowやNETCONFといった標準プロトコル、またはベンダーごとに用意されたAPIを使います。この層で使われるAPIを Southbound API(サウスバウンドAPI) と呼びます。別名で SBI(Southbound Interface) とも表現されます。

コントロール層

この層はSDNの頭脳部分であり、インフラストラクチャ層の機器をSouthbound API経由で制御します。さらに、抽象化されたネットワーク機能をアプリケーション層に提供する役割も持ちます。この層とアプリケーション層をつなぐAPIを Northbound API(ノースバウンドAPI) と言い、別名 NBI(Northbound Interface) とも呼ばれます。

アプリケーション層

ここでは、ネットワークを操作するアプリケーションが稼働します。例えば「トラフィックを最適化するアプリ」や「セキュリティポリシーを管理するアプリ」などです。これらはNorthbound APIを通じてSDNコントローラに指示を送り、ネットワーク全体を柔軟に制御します。

CCNA試験においてSDNが登場する際には、特に以下の点が問われやすいです。

・SDNとは「制御と転送の分離」に基づく仕組みであること
・データプレーンとコントロールプレーンの役割の違い
・アーキテクチャにおける3つの層(インフラ、コントロール、アプリケーション)
・Southbound APIとNorthbound APIの意味と位置づけ

これらは丸暗記ではなく、実際のネットワークを「分業して集中管理しているイメージ」で理解すると定着しやすくなります。

SDNの方式:ホップバイホップとオーバーレイ

SDNにはいくつかの実装方式がありますが、代表的なのは ホップバイホップ方式オーバーレイ方式 の2つです。両者は仕組みや用途が大きく異なるため、試験でも比較を意識して学ぶ必要があります。

ホップバイホップ方式

ホップバイホップ方式のSDNは、OpenFlowというプロトコルを前提に設計されています。ここでの「ホップ」とは、パケットが通過するスイッチやルータといった中継点のことを指します。この方式では、パケットがスイッチを通過するたびに、そのスイッチはSDNコントローラから与えられたルールに従って転送を行います。

つまり、ネットワークを構成するすべてのスイッチの転送動作をSDNコントローラが一元的に決定し、各スイッチはその指示どおりにデータを運ぶだけの存在になります。これにより、非常に細かい制御が可能となり、経路選択や帯域管理なども正確に行えます。

試験対策としては「OpenFlow=ホップバイホップ方式の代表的プロトコル」という点を必ず押さえておきましょう。

オーバーレイ方式

一方、オーバーレイ方式は既存の物理ネットワークの上に「仮想的なネットワーク(オーバーレイ)」を構築する方法です。サーバに導入されているハイパーバイザーに組み込まれた仮想スイッチを活用し、仮想スイッチ間をトンネリングで結ぶことで、物理ネットワークを直接変更せずに仮想ネットワークを実現します。

この方式の特徴は、物理ネットワークを大幅に作り直さなくても導入できる点です。すでにサーバ仮想化環境が整っている場合、新しい機器をほとんど追加せずに運用を始められるメリットがあります。ただし、ホップバイホップ方式と比べると、経路制御や帯域制御などの細かな調整は苦手です。代表例として VMware NSX があり、仮想ネットワークをコントローラからまとめて管理できる仕組みを提供しています。

オーバーレイ方式では、イーサネットフレームをIPパケットの中に「カプセル化」して送ります。これにより、通常のIPパケットとして既存のルータやスイッチを通過できるため、既存機器を流用できるのです。
このカプセル化に使われる代表的なプロトコルが VXLAN(Virtual Extensible LAN) です。VXLANではUDPパケットの中にイーサネットフレームを入れ込み、仮想的にL2ネットワークを延長します。他にも NVGRESTT といったプロトコルが存在し、いずれも「仮想ネットワークを物理ネットワーク上に重ねて展開する」仕組みを担います。

・ホップバイホップ方式は OpenFlow を前提とし、コントローラがすべての転送制御を決定する方式
・オーバーレイ方式は 既存ネットワークを流用し、トンネル技術で仮想ネットワークを構築する方式
・オーバーレイ方式で使われる代表プロトコルは VXLAN(他にNVGRE、STTもある)
・VMware NSX はオーバーレイ方式を用いた代表的な製品

この2つの方式の違いは、CCNA試験で「方式の分類」「代表プロトコルや製品」といった形で出題されやすいため、仕組みと具体例をセットで覚えることが合格への近道です。

OpenFlowとは

OpenFlowはSDNを実現するための代表的な技術のひとつであり、ネットワーク機器を中央のコントローラから一括して制御できる仕組みを提供します。これにより、従来は機器ごとに個別設定していた転送制御や経路の変更を、集中管理のもとで柔軟に行えるようになります。標準化は ONF(Open Networking Foundation) という団体によって進められており、GoogleやFacebookなどの大手企業も参加しています。

OpenFlowの基本的な考え方は、従来のネットワーク機器に内蔵されていた 制御機能(コントロールプレーン)転送機能(データプレーン) を分離することです。具体的には、制御は「OpenFlowコントローラ」が担い、データの転送は「OpenFlowスイッチ」が行います。

試験では「OpenFlow=プレーンの分離を前提としたSDN技術」という理解が重要です。

OpenFlowの仕組み

OpenFlowコントローラは複数のOpenFlowスイッチを統括し、ネットワーク全体の制御を行います。管理者はスイッチの動作を記述した フローテーブル を作成し、コントローラがOpenFlowプロトコルを用いて各スイッチに配布します。スイッチは受け取ったフローテーブルに従い、データ転送・破棄・宛先書き換えなどを実行します。

フローテーブルに記述できる条件は幅広く、以下のような情報を組み合わせて細かな転送制御が可能です。

  • 物理ポート番号
  • 送信元・宛先MACアドレス
  • VLAN ID
  • MPLSラベル
  • 送信元・宛先IPアドレス
  • TCP/UDPポート番号

このように「フロー単位で柔軟に制御できる」点が、従来のルーティングやスイッチングと異なる特徴です。なお、文献や試験問題では OFC(OpenFlow Controller)OFS(OpenFlow Switch) と略されることもあります。

OpenFlowによるネットワーク機器の拡張

OpenFlowスイッチは単なるL2スイッチではありません。プログラマブルであるため、従来はファイアウォールやロードバランサといった専用アプライアンスで実現していた機能も、ソフトウェア的に実装できます。この柔軟性こそがOpenFlowの強みです。

OpenFlowとSouthbound/Northbound API

OpenFlowはSDNアーキテクチャの中で Southbound API(サウスバウンドAPI) として機能します。具体的には、OpenFlowコントローラとスイッチ間で通信する際にOpenFlowプロトコルが使われます。
一方で、Northbound API(ノースバウンドAPI) はコントローラとSDNアプリケーション間で用いられるAPIであり、ネットワーク管理や制御を実現するための仕組みを提供します。

試験では「OpenFlowはSouthbound APIで利用されるプロトコル」と整理して覚えるのが効果的です。

OpenFlow導入における課題とNFV・SFCの活用

OpenFlowを導入するには、対応機能を持つスイッチに置き換える必要があり、コストが高いという課題があります。また、複雑なフロールールを設定すると、フローテーブルの処理に負荷がかかり、性能低下の原因となる場合もあります。

この解決策の一つが、NFV(Network Function Virtualization)SFC(Service Function Chaining) の活用です。ネットワーク機器の機能を仮想マシン(VM)上に実装し、必要に応じて柔軟に起動・停止させながら、OpenFlowやオーバーレイ技術を用いて機器間のパケット転送を制御します。これにより、専用機器への依存を減らし、より柔軟で効率的な運用が可能になります。

OpenFlowで利用されるメッセージ

OpenFlowでは、コントローラとスイッチ間で様々なメッセージがやり取りされます。代表的なものを以下に整理します。

送信元メッセージ説明
コントローラ → スイッチPacket Outスイッチから特定のパケットを出力させる
Flow Mod新しいフローをスイッチへ送信
Port Modポート状態を変更
Set Configコンフィグパラメータを設定
コントローラ ⇄ スイッチFeatures Request/Replyスイッチの機能情報を取得
Stats Request/Reply統計情報を取得
Get Config Request/Replyコンフィグパラメータを取得
Barrier Request/Reply要求処理の完了を確認
Queue Get Config Request/Replyキュー設定を取得
スイッチ → コントローラPacket In受信したパケットを送信
Flow Removedフローが削除されたことを通知
Port Statusポート状態の変化を通知
双方Hello接続開始時のメッセージ
Echo Request/Reply接続の死活監視
Errorエラー通知
Vendorベンダー独自定義の拡張メッセージ

・OpenFlowは コントロールプレーンとデータプレーンを分離する仕組み
OpenFlow=Southbound APIで使われる代表的プロトコル
・フローテーブルに基づく「フロー単位の制御」が特徴
・課題点(高コスト・フローテーブルの負荷)と、その解決策である NFV・SFC も理解しておく
・OpenFlowでやり取りされるメッセージの種類と役割は要暗記

このあたりがCCNA試験で狙われやすい部分なので、仕組みの理解と用語の正確な整理を心がけましょう。

◆まとめスライド

目次