ITの教科書検索
入門・発展ページ読了 約12分

SDNとは ― OpenFlowの仕組みとNFVとの違い

SDNとは、機器から経路を決める役割を切り離し、1か所のソフトウェアからまとめて制御する仕組みです。OpenFlowのフローテーブルの読み方とNFVとの違いを、図と、動かせる表で確かめます。

目次
  1. SDNとは
  2. 従来の機器:制御と転送が1台に入っている
  3. コントロールプレーンとデータプレーンの分離
  4. OpenFlowとフローテーブル
  5. 動かして確かめる:フローテーブルの照合
  6. SDNのメリットと注意点
  7. NFVとは:SDNとの違い
  8. 仮想ネットワークの例との関係
  9. 練習問題

SDNとは、ネットワークの制御をソフトウェアに集める仕組み

SDN(Software-Defined Networking)は、ネットワーク機器から経路を決める役割を切り離し、1か所のソフトウェアからまとめて制御する仕組みです。

切り離した役割を受け持つソフトウェアをSDNコントローラと呼びます。コントローラが各スイッチに転送の決まりを書き込むときに使う代表的なプロトコルが、OpenFlowです。機器を1台ずつ設定しなくても、ネットワーク全体の経路や設定をまとめて変えられます。

従来のネットワーク機器:制御と転送が1台に入っている

ルータは、届いたパケットを宛先に応じて次の機器へ送り出します。送り先は、経路の一覧表であるルーティングテーブルを見て決めます。この表は、管理者が書き込むか、ルータ自身が隣のルータと経路情報を交換して作ります。

つまり、1台のルータの中では2種類の処理が動いています。1つは、経路情報をやり取りして表を作る処理です。もう1つは、表を参照して、パケットを出力ポートへ送り出す処理です。

表を作る処理をコントロールプレーン、表に従ってパケットを送り出す処理をデータプレーンと呼びます。RFC 7426では、データプレーンにあたる部分をForwarding Planeと呼んでいます。

従来のネットワークでは、各機器がこの2つを持っています。そのため、ネットワーク全体の動きを変えたいときは、機器を1台ずつ設定し直します。機器が数百台あれば、その数だけ設定の作業が必要です。

SDNの仕組み:コントロールプレーンとデータプレーンを分ける

SDNでは、コントロールプレーンを機器から取り出し、SDNコントローラに集めます。スイッチの中には、データプレーンだけが残ります。

従来のネットワークコントロールプレーンデータプレーン機器Aコントロールプレーンデータプレーン機器Bコントロールプレーンデータプレーン機器C経路情報を交換パケット経路情報を交換パケットSDNSDNコントローラコントロールプレーンデータプレーンスイッチAデータプレーンスイッチBデータプレーンスイッチCパケットパケットOpenFlowでフローエントリを書き込む
従来の機器は、経路を決めるコントロールプレーンと、パケットを送り出すデータプレーンを1台の中に持ちます。SDNでは、コントロールプレーンをコントローラに集めます。スイッチは、書き込まれた表に従って転送だけを行います。

コントローラは、ネットワーク全体の構成を1か所で把握し、各スイッチに転送の決まりを書き込みます。スイッチは、書き込まれた決まりに従ってパケットを送り出すだけです。

SDNの仕様の策定を進めてきた業界団体に、ONF(Open Networking Foundation)があります。ONFが2012年に公開した白書は、SDNの特徴を次の3つにまとめています。

  • コントロールプレーンとデータプレーンを分けること
  • ネットワークの制御と状態を、論理的に1か所へ集めること
  • アプリケーションから、下にある機器の違いを隠すこと

論理的に1か所とは、利用する側から1つに見えるという意味です。実際のコントローラは、故障に備えて複数台で動かすことがあります。

ノースバウンドAPIとサウスバウンドAPI

ONFの白書は、SDNを3つの層に分けて描いています。上から、アプリケーション層・コントロール層・インフラストラクチャ層です。コントローラは真ん中の層にあり、上下の層とそれぞれ決まった窓口(API)でやり取りします。

層入るもの下の層との関係
アプリケーション層業務アプリ、ネットワークのサービスノースバウンドAPIで、コントローラに要求を出す
コントロール層SDNコントローラサウスバウンドAPIで、スイッチに指示する
インフラストラクチャ層スイッチなどのネットワーク機器指示に従って、パケットを転送する

コントローラから見て上向きの窓口をノースバウンドAPI、下向きの窓口をサウスバウンドAPIと呼びます。サウスバウンドAPIの代表が、次に説明するOpenFlowです。

ノースバウンドAPIは、REST APIの形で公開されることが多く、構成管理ツールなどの自動化の仕組みから呼び出されます。REST APIの操作方法は、ネットワーク自動化の記事で説明しています。

OpenFlowとは:コントローラがスイッチの表を書き換えるプロトコル

OpenFlowは、SDNコントローラとスイッチの間で使うプロトコルです。ONFの白書によると、コントロールの層と転送の層の間に定められた最初の標準のインターフェースです。OpenFlowに対応したスイッチを、OpenFlowスイッチと呼びます。

スイッチとコントローラはTCPでつながり、この接続はTLSで暗号化することもできます。ふつうはスイッチの側から接続し、宛先のポート番号は標準で6653番です。

フローテーブルとフローエントリ

OpenFlowスイッチは、転送の決まりをフローテーブルという表に持ちます。表の1行を、フローエントリと呼びます。コントローラは、OpenFlowでこのフローエントリを追加・変更・削除します。

1つのフローエントリには、次の項目があります。仕様書 OpenFlow Switch Specification 1.5.1 の5.2節にある項目のうち、主なものを選びました。

項目中身
マッチフィールド一致の条件。受信したポート、MACアドレス、IPアドレス、ポート番号など
優先度複数のエントリに一致したとき、どれを使うかを決める数
カウンタ一致したパケットの数などの集計
インストラクション一致したパケットの扱い。どのポートへ出すか、ヘッダの書き換えなど
タイムアウトエントリを消すまでの時間。使われない時間で決めることもできる

ルーティングテーブルは、ふつう宛先IPアドレスで行を選びます。一方、フローテーブルは、MACアドレス・IPアドレス・ポート番号を組み合わせて条件にできるので、第2層から第4層までの情報を見て扱いを決められます。

動かして確かめる:フローテーブルの照合

次の図のスイッチには、4つのフローエントリが入っています。ポート2の先にはWebサーバの203.0.113.50が、ポート3の先には2台目のサーバの203.0.113.60がつながっています。パケットを選ぶと、どのエントリが一致し、どれが使われるかを確かめられます。

スイッチのフローテーブル
No優先度一致の条件動作
1300宛先IP 203.0.113.50・TCP宛先ポート 22破棄
2200宛先IP 203.0.113.50ポート2へ出力
3200宛先IP 203.0.113.60ポート3へ出力
40条件なし(テーブルミス)コントローラへ送る
P1:Webサーバ(203.0.113.50)へのHTTPS
送信元 198.51.100.20 → 宛先 203.0.113.50(TCP 443)
  1. エントリ1一致しない
  2. エントリ2一致・優先度が最も高い:これを使う
  3. エントリ3一致しない
  4. エントリ4一致するが、優先度が低い
結果:ポート2へ出力

エントリ1は、宛先ポートが22ではないので一致しません。エントリ2が一致し、ポート2の先のWebサーバへ送られます。テーブルミスのエントリ4も一致しますが、優先度が0なので使われません。

一致したエントリが複数あるときは、優先度が最も高いものだけを使います。表の中の並び順は関係ありません。この点が、上から順に照合するファイアウォールのルール表とは違います。

エントリ4は条件を何も指定しておらず、優先度は0です。このようなエントリをテーブルミスエントリと呼び、どれにも一致しなかったパケットの扱いを決めます。テーブルミスエントリは最初から入っているわけではなく、コントローラが書き込んでいなければ、どれにも一致しなかったパケットは既定では捨てられます。

パケットが届いてから書き込む方式と、先に書き込む方式

動かせる表のパケットP4では、スイッチがパケットをコントローラへ送りました。このときスイッチが送るメッセージをPacket-Inと呼びます。コントローラは、送られてきたパケットを見て扱いを決め、必要なら、その宛先用のフローエントリをスイッチに書き込みます。

この方式では、最初のパケットだけがコントローラを経由します。一方、通信が始まる前に必要なエントリを書き込んでおく方式もあります。OpenFlowの仕様は、この両方を認めています。

SDNのメリットと注意点

SDNのメリットは、ネットワーク全体の設定を1か所から変えられることです。機器を1台ずつ設定し直す代わりに、コントローラに方針を渡せば、コントローラが関係するスイッチすべてに書き込みます。

ONFの白書は、メーカーの違う機器をまとめて管理できることも利点に挙げています。OpenFlowに対応していれば、メーカーが違っても同じ手順で制御できるからです。

全体の構成を1か所で把握できることは、機器の構成情報を管理する構成管理にも役立ちます。構成管理は、SNMPの記事で説明している運用管理の3分類の1つです。

注意点は、制御がコントローラに集中することです。コントローラと通信できなくなると、スイッチは新しい通信の扱いを指示してもらえません。OpenFlowの仕様は、すべてのコントローラとの接続が切れたスイッチの動作を2通り定めています。

  • 書き込み済みのエントリだけで動き続けます。コントローラ宛てのパケットは捨てます。
  • 従来のスイッチやルータとして動きます。ふつうは、両方の動きができる機種だけが選べます。

こうした事態に備えて、1台のスイッチを複数のコントローラにつなぐことができます。また、コントローラはネットワーク全体の転送を書き換えられるので、コントローラ自体と、スイッチとの通信を保護する必要があります。

NFVとは:SDNとの違い

NFV(Network Functions Virtualization)は、ルータやファイアウォールなどの機能を、汎用サーバの上で動くソフトウェアにする技術です。

これまで、こうした機能は機能ごとに専用の機器を用意していました。NFVでは、仮想化の技術を使って、汎用サーバの上で複数の機能を動かします。

専用の機器で用意するルータ専用の機器ソフトウェアにする仮想ルータファイアウォール専用の機器ソフトウェアにする仮想ファイアウォールロードバランサ専用の機器ソフトウェアにする仮想ロードバランサ仮想化ソフトウェア汎用サーバ・ストレージ・スイッチVNFNFVI
NFVでは、ルータやファイアウォールの機能を、汎用サーバの上で動くソフトウェアにします。3つの機能が、共通の基盤の上で動きます。

NFVは、2012年に世界の通信事業者13社が公開した白書から始まりました。白書には、専用の機器が増え続け、置き場所と電力の確保が難しくなっていると書かれています。その後の仕様の策定は、ETSI(欧州電気通信標準化機構)で進められています。

ETSIの仕様 GS NFV 002 は、NFVの全体を次の3つに分けています。

  • VNF:ソフトウェアにしたネットワーク機能です。仮想ルータや仮想ファイアウォールがあたります。
  • NFVI:VNFを動かす基盤です。汎用サーバなどの機器と、それを仮想化するソフトウェアを含みます。
  • MANO:VNFとNFVIを管理する仕組みです。VNFの起動や停止、台数の増減を受け持ちます。

SDNとNFVの違い

SDNは、制御を機器から切り離す考え方で、NFVは、機能を専用の機器から切り離す考え方です。どちらも機器から何かを切り離しますが、切り離すものが違います。

観点SDNNFV
何を変えるか制御を機器から切り離し、1か所に集める機能を専用の機器から、汎用サーバ上のソフトウェアに移す
主な対象スイッチやルータの転送の決め方ルータ・ファイアウォール・ロードバランサなどの機能
関係する用語SDNコントローラ、OpenFlowVNF、NFVI、MANO
仕様をまとめる団体ONFETSI

SDNとNFVは、どちらか一方だけでも使えます。NFVの白書にも、2つは互いに補い合うものの、依存はしないと書かれています。組み合わせ方の例として、NFVの基盤の上でSDNのソフトウェアを動かす使い方が挙げられています。

仮想ネットワークの例:VLAN・VPN・オーバーレイとの関係

SDNとNFVは、仮想ネットワークに含まれる技術です。仮想ネットワークは、物理的な配線とは別に、論理的なネットワークを作る技術をまとめた呼び方です。SDN以外にも、次のような例があります。

  • VLAN:1台のスイッチを論理的に分けて、別々のネットワークとして使います。仕組みはVLANの記事にあります。
  • VPN:共有のネットワークの上にトンネルを作り、離れた拠点を専用線のようにつなぎます。VPNの記事で、トンネリングの仕組みを説明しています。
  • オーバーレイネットワーク:既存のIPネットワークの上に、カプセル化で別の論理ネットワークを重ねます。代表例はVXLANで、第2層のネットワークを第3層のネットワークの上に重ねます。仕様はRFC 7348です。
  • SD-WAN:拠点間のWANを、1本以上の回線の上に重ねて作るオーバーレイのサービスです。アプリケーションごとの方針で、通す回線を選びます。MEF 70という標準が定義しています。

VLAN・VPN・VXLANはSDNとは別の技術で、SDNがなくても使えます。ただし、SDNのコントローラからVLANやオーバーレイの設定をまとめて配る形で、組み合わせて使うことがあります。

MEF 70の改訂版のMEF 70.1によると、SD-WANを提供する側の網にはコントローラも含まれます。制御を1か所に集める点で、SD-WANはSDNの考え方に近いサービスです。

練習問題(全5問)

Q1SDNの説明として正しいものは?
Q2データプレーンの役割として正しいものは?
Q3OpenFlowスイッチのフローテーブルで、届いたパケットが2つのエントリに一致した。一方は優先度300、もう一方は優先度200である。使われるのは?
Q4OpenFlowスイッチに、どのフローエントリにも一致しないパケットが届いた。テーブルミスエントリには「コントローラへ送る」が書かれている。スイッチの動作として正しいものは?
Q5NFVとSDNの関係として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す