目次
はじめに
今回も、応用情報技術者試験の過去問を解いていきます。
今回のテーマは、SDN(Software-Defined Networking)とOpenFlowです。
SDNは、ネットワークの制御機能をデータ転送機能から分離し、ソフトウェアによってネットワークを柔軟に制御しようという考え方です。
この問題では、OpenFlowを使ったSDNがどのような仕組みなのかを理解しているかが問われています。
ポイントとなるのは、
「制御する部分」と「実際にデータを転送する部分」を分ける
という考え方です。
それでは問題を見ていきましょう。
問題
次のうち、OpenFlowを使ったSDN(Software-Defined Networking)の説明として適切なものはどれか。
| 選択肢 | 内容 |
|---|---|
| ア | 単一の物理サーバ内の仮想サーバ同士が、外部のネットワーク機器を経由せずに仮想スイッチを経由して通信する方式 |
| イ | データを転送するネットワーク機器とは分離したソフトウェアによって、ネットワーク機器を集中制御・管理するアーキテクチャ |
| ウ | プロトコルの文法を形式言語で厳密に定義する、ISOで標準化された通信プロトコルの規格 |
| エ | ルータやスイッチ内部で動作するソフトウェアをOSSで実装する方式 |
解答
イ
解説
この問題を理解するために重要なのが、
「Control Plane(制御プレーン)」と「Data Plane/Forwarding Plane(データプレーン/転送プレーン)」
という二つの役割です。
ネットワーク機器の働きを大きく分けると、次のように考えることができます。
| 役割 | 内容 |
| Control Plane | パケットをどのように転送するかなどを判断・制御する |
| Data Plane / Forwarding Plane | 制御側から与えられたルールなどに基づいて実際にパケットを処理・転送する |
従来型のネットワークでは、こうした制御機能が各ネットワーク機器に密接に組み込まれていました。
イメージすると次のようになります。
【従来型ネットワーク】
┌──────────────┐
│ ルータA │
│ 制御 + 転送 │
└──────────────┘
┌──────────────┐
│ スイッチB │
│ 制御 + 転送 │
└──────────────┘
┌──────────────┐
│ ルータC │
│ 制御 + 転送 │
└──────────────┘
一方、SDNではネットワークの制御機能を転送機能から分離します。
【SDN】
┌────────────────┐
│ SDNコントローラ │
│ 主に制御 │
└───────┬────────┘
│
OpenFlow
│
┌───────┴────────┐
↓ ↓
┌────────────┐ ┌────────────┐
│ スイッチA │ │ スイッチB │
│ 主に転送 │ │ 主に転送 │
└────────────┘ └────────────┘
SDNコントローラ側にネットワーク全体の制御機能を論理的に集中させることで、ネットワークをソフトウェアからプログラム可能にするわけです。
ここで重要なのが「論理的に集中」という点です。
必ずしも1台のコンピュータだけですべてを制御するという意味ではありません。
実際のシステムでは複数のコントローラで構成することもできますが、ネットワークを論理的には一元的な視点から制御できるようにします。
OpenFlowは何をしているのか
ここで登場するのがOpenFlowです。
OpenFlowは、SDNアーキテクチャにおいて、制御側と転送側の間で通信するために定義された代表的な標準インターフェース/プロトコルです。
簡単に表すと、
SDNコントローラ
│
│「この条件の通信は
│ このように処理して」
↓
OpenFlow
↓
OpenFlow対応スイッチ
│
↓
ルールに従ってパケットを処理
という関係です。
ただし、
「SDN=OpenFlow」ではありません。
SDNはネットワークをソフトウェアによってプログラム可能にするための、より広いアーキテクチャ上の考え方です。
OpenFlowは、そのSDNを実現するために利用される代表的な技術の一つです。
各選択肢の解説
ア:仮想スイッチを利用した仮想マシン間通信
誤りです。
この選択肢は、一つの物理サーバ上で動作する仮想サーバ(仮想マシン)同士が、ソフトウェアで実現された仮想スイッチを経由して通信する仕組みを説明しています。
イメージすると、
物理サーバ
┌─────────────────────┐
│ │
│ 仮想サーバA │
│ │ │
│ ↓ │
│ 仮想スイッチ │
│ ↓ │
│ 仮想サーバB │
│ │
└─────────────────────┘
という構成です。
これは仮想化環境における仮想ネットワークの説明であり、OpenFlowを使ったSDNそのものの説明ではありません。
ここでは、
「仮想スイッチを使っている=SDNではない」
と覚えておきましょう。
イ:ソフトウェアによるネットワーク機器の集中制御
正解です。
SDNでは、ネットワークの制御機能と転送機能を分離します。
そして、SDNコントローラなどのソフトウェアからネットワーク機器を論理的に集中制御します。
今回の問題では、ここが最大のポイントです。
制御
↓
SDNコントローラ
↓
OpenFlow
↓
ネットワーク機器
↓
主にパケット転送
したがってイが正解です。
ウ:プロトコルの形式的な仕様記述
誤りです。
形式言語を利用して通信プロトコルの仕様などを厳密に記述するという内容であり、SDNの特徴である「制御機能と転送機能の分離」を説明したものではありません。
OpenFlowを使ったSDNの説明には該当しません。
エ:ネットワーク機器内部のソフトウェアをOSS化
誤りです。
ルータやスイッチ内部で動作するソフトウェアをOSS(Open Source Software)で実装することと、SDNは別の概念です。
SDNの重要なポイントは、
「ソフトウェアがOSSかどうか」ではなく、「ネットワークの制御機能と転送機能を分離してプログラム可能にすること」
です。
したがってエも誤りです。
問題の用語解説
SDN(Software-Defined Networking)
SDNとは、ネットワークの制御機能とデータ転送機能を分離し、ネットワークをソフトウェアによってプログラム可能にする考え方です。
主な特徴を整理すると次のようになります。
| 特徴 | 内容 |
| 制御と転送の分離 | Control PlaneとForwarding Planeを分離する |
| 論理的な集中制御 | SDNコントローラからネットワーク全体を制御しやすくする |
| プログラム可能 | ソフトウェアからネットワークの動作を変更できる |
| 自動化 | ネットワーク設定や管理を自動化しやすい |
OpenFlow
OpenFlowは、SDNにおける制御側と転送側の間で利用される代表的な標準インターフェース/プロトコルです。
SDNコントローラからOpenFlow対応スイッチなどの転送動作を制御できます。
SDN
│
├─ 制御側
│ └─ SDNコントローラ
│
│ ↓ OpenFlow
│
└─ 転送側
└─ OpenFlow対応スイッチなど
試験対策では、
「OpenFlow=SDNで制御側と転送側をつなぐ代表的なプロトコル」
と押さえておくと理解しやすいでしょう。
フローテーブル
OpenFlowを理解する上でもう一つ重要なのがフローテーブルです。
OpenFlow対応スイッチでは、通信を識別するための条件と、その条件に一致した場合の処理などをフローエントリとして管理します。
非常に単純化すると、次のようなイメージです。
| マッチ条件の例 | アクションの例 |
| 宛先IPアドレスがA | ポート1へ転送 |
| 宛先IPアドレスがB | ポート2へ転送 |
| 特定の条件に一致 | パケットを破棄 |
つまり、
パケット到着
↓
フローテーブルを確認
↓
条件に一致?
┌──┴──┐
↓ ↓
転送 破棄
など
といった形で、設定されたルールに基づいてパケットを処理します。
なぜSDNが必要なのか
ここまで仕組みを見てきましたが、
「そもそも、なぜ制御と転送を分ける必要があるの?」
という疑問が出てきます。
従来型のネットワークでは、多数のネットワーク機器をそれぞれ設定・管理しなければならない場合があります。
例えば100台のスイッチがあった場合を考えてみます。
従来型
管理者
↓
スイッチ1を設定
↓
スイッチ2を設定
↓
スイッチ3を設定
↓
・・・
↓
スイッチ100を設定
規模が大きくなるほど管理が複雑になります。
そこでSDNでは、ネットワークの制御をソフトウェアからプログラム可能にします。
管理者
↓
SDNコントローラ
↓
┌─────────┼─────────┐
↓ ↓ ↓
スイッチ1 スイッチ2 スイッチ3
↓ ↓ ↓
・・・
これによって、ネットワーク全体の設定変更や自動化などを行いやすくできます。
体系的位置づけ
今回のテーマをネットワーク分野の中で整理すると、次のようになります。
ネットワーク
│
├─ ネットワークアーキテクチャ
│
├─ ネットワーク仮想化
│
└─ SDN
│
├─ Control Plane
│
├─ Forwarding / Data Plane
│
├─ SDNコントローラ
│
└─ OpenFlow
│
└─ フローテーブル
SDNを単独の用語として暗記するのではなく、
SDN
↓
制御と転送の分離
↓
SDNコントローラ
↓
OpenFlow
↓
フローテーブル
という流れで理解すると覚えやすくなります。
今回の問題の重要ポイント
今回の問題では、次の3点を押さえておきましょう。
① SDNは「制御」と「転送」を分離する
最重要ポイントです。
【従来型】
ネットワーク機器
├─ 制御
└─ 転送
【SDN】
SDNコントローラ
└─ 主に制御
↓
ネットワーク機器
└─ 主に転送
「制御と転送の分離」というキーワードが出てきたら、SDNを思い出しましょう。
② 制御機能は論理的に集中化される
SDNでは、ソフトウェアベースのSDNコントローラによってネットワークを論理的に集中制御します。
ただし、
「集中制御=必ず1台のサーバで制御する」
という意味ではありません。
実際のコントローラが複数に分散していても、論理的には一元的なネットワーク制御を実現できます。
③ OpenFlowはSDNを実現する代表的な技術
OpenFlowは、SDNの制御側と転送側の間で利用される代表的なプロトコルです。
ただし、
SDN = OpenFlow
ではありません。
正しくは、
SDN
└─ 実現するための代表的技術の一つ
└─ OpenFlow
という関係です。
この違いは押さえておきましょう。
まとめ
今回の問題のポイントを整理します。
| 項目 | 内容 |
| SDN | ネットワークをソフトウェアによってプログラム可能にする考え方 |
| SDNの重要な特徴 | 制御機能と転送機能の分離 |
| Control Plane | パケットをどのように処理・転送するかなどを制御 |
| Forwarding / Data Plane | 指示されたルールなどに基づいてパケットを処理・転送 |
| SDNコントローラ | ネットワークを論理的に集中制御 |
| OpenFlow | 制御側と転送側をつなぐ代表的なプロトコル |
| フローテーブル | 条件とアクションなどのルールを保持 |
| 正解 | イ |
今回の問題で最も重要なのは、
「SDN=制御と転送の分離」
です。
さらに、
「SDNコントローラ → OpenFlow → スイッチ」
という関係まで理解しておけば、OpenFlowに関する問題にも対応しやすくなります。
単に「OpenFlow=SDN」と暗記するのではなく、
制御と転送を分ける
↓
制御側をソフトウェアで
論理的に集中管理する
↓
OpenFlowなどを利用して
転送側を制御する
という仕組みで覚えておきましょう。

コメント