SDN・ネットワーク仮想化

OpenFlow おーぷんふろー

SDNフローテーブルコントローラースイッチネットワーク仮想化ONF
OpenFlowについて教えて

簡単に言うとこんな感じ!

ネットワークのスイッチを「頭脳と体を分離する」しくみだよ!普通のスイッチは自分で考えて自分でパケットを転送するけど、OpenFlowは「コントローラー(頭脳)」が一括して経路を決めて、スイッチ(体)はその指示通りに動くだけ。これでネットワーク全体をソフトウェアで自由に制御できるってこと!


OpenFlowとは

OpenFlowは、ネットワーク機器(スイッチやルーター)の「制御機能(コントロールプレーン)」と「転送機能(データプレーン)」を分離し、ソフトウェアでネットワークを集中管理するためのオープンな通信プロトコルです。SDN(Software Defined Networking:ソフトウェア定義ネットワーク) を実現する代表的な技術として知られています。

従来のネットワーク機器は、経路を計算する知性と、パケットを実際に転送する処理が一体化していました。OpenFlowはこの2つを切り離し、SDNコントローラーと呼ばれる中央サーバーがネットワーク全体の経路決定を担い、各スイッチはコントローラーから受け取った「フローテーブル(転送ルール表)」に従って機械的にパケットを転送します。

この仕組みにより、ネットワーク管理者はソフトウェアの設定変更だけでトラフィックの流れを柔軟に変えられるようになります。データセンターや大規模クラウド環境でのネットワーク運用自動化動的なリソース管理を可能にする基盤技術として、2008年頃から注目を集めました。


OpenFlowの仕組みと構造

コントロールプレーンとデータプレーンの分離

役割従来のスイッチOpenFlow
経路計算(頭脳)スイッチ内部で処理SDNコントローラーが担当
パケット転送(体)スイッチ内部で処理OpenFlowスイッチが担当
管理方法機器ごとに個別設定コントローラーから一括制御
柔軟性ベンダー依存・変更困難ソフトウェアで即時変更可

フローテーブルの仕組み

OpenFlowスイッチはフローテーブルというルール表を持っています。パケットが届くと、このテーブルを照合して転送先を決定します。

パケット到着


┌─────────────────────────────────────┐
│           フローテーブル             │
│  マッチ条件         アクション        │
│  ─────────────────────────────────  │
│  送信元IP: 192.168.1.x → ポート3へ  │
│  宛先IP: 10.0.0.5   → ポート7へ    │
│  VLANタグ: 100      → ポート2へ    │
│  マッチなし         → コントローラへ │
└─────────────────────────────────────┘


指定ポートへ転送

マッチするルールが見つからない場合(テーブルミス)、スイッチはパケットをコントローラーに送り、コントローラーが新しいルールを作成してスイッチに返します。

OpenFlowの主要コンポーネント

コンポーネント役割具体例
SDNコントローラーネットワーク全体の頭脳。フローを一元管理OpenDaylight、ONOS、Ryu
OpenFlowスイッチフローテーブルに従いパケットを転送対応スイッチ(NEC、HP等)
OpenFlowチャネルコントローラーとスイッチ間の通信路(TLS/TCP)ポート6633/6653
フローテーブルスイッチ上のパケット転送ルール表マッチ条件+アクション

覚え方

「指揮官(コントローラー)と兵士(スイッチ)の分業」

コントローラーは作戦を立てるだけ、スイッチは命令通りに動くだけ。中央集権的な軍隊組織をイメージするとわかりやすい!


歴史と背景

  • 2006年頃 — スタンフォード大学の Nick McKeown 教授らが、実験的なネットワーク研究のために「プログラマブルなスイッチ」の概念を研究開始
  • 2008年 — OpenFlowプロトコルの最初の論文「OpenFlow: Enabling Innovation in Campus Networks」が発表。大学キャンパスネットワークでの実験が始まる
  • 2011年ONF(Open Networking Foundation:オープンネットワーキング財団) 設立。Google、Facebook、Microsoft、Deutsche Telekomなど大手が参加し、OpenFlowの標準化・普及を推進
  • 2011年 — OpenFlow 1.1仕様公開。複数フローテーブルのサポートなど機能拡張
  • 2012年 — Google が自社の広域ネットワーク(B4)でOpenFlowを本番運用していると発表。業界に衝撃を与え普及が加速
  • 2012〜2015年 — OpenFlow 1.2〜1.5と仕様が進化。NEC・HP・Brocadeなどハードウェアベンダーも対応製品を投入
  • 2013年以降 — OpenDaylight、ONOSなどのオープンソースSDNコントローラーが登場し、エコシステムが拡大
  • 2016年以降 — より柔軟なP4(プログラマブルデータプレーン言語)やNETCONF/YANGなど後継・補完技術が台頭。OpenFlow単体への依存は薄まりつつも、SDNの概念普及に決定的な役割を果たした技術として評価

SDNアーキテクチャにおけるOpenFlowの位置づけ

SDN全体のアーキテクチャの中で、OpenFlowはコントローラーとスイッチの間をつなぐ「サウスバウンドAPI」 として機能します。

アプリケーション層(SDNアプリ) 負荷分散 / ファイアウォール / トラフィックエンジニアリング ▲ ノースバウンドAPI(REST等)▲ コントロール層(SDNコントローラー) OpenDaylight / ONOS / Ryu / Floodlight サウスバウンドAPI:OpenFlow インフラ層(OpenFlowスイッチ) SW-A SW-B SW-C SW-D アプリ層 コントロール層 OpenFlow(API) インフラ層 OpenFlowはコントローラーとスイッチをつなぐサウスバウンドAPIとして機能

OpenFlow vs 従来ネットワーク vs 他のSDNアプローチ

比較軸従来ネットワークOpenFlowNETCONF/YANGP4
制御の集中度分散(機器ごと)集中(コントローラー)分散〜集中集中(柔軟)
ベンダー依存高い低い(標準化)低い低い
データプレーンの柔軟性固定限定的固定完全にプログラマブル
導入難易度低い中〜高
普及時期~2010年代2011〜現在2015〜現在2017〜現在
主なユースケース一般企業LANデータセンター、研究大規模WAN管理次世代DC・5G

関連する規格・RFC

規格・RFC番号内容
OpenFlow Switch Specification v1.5.1ONFが策定するOpenFlowの公式仕様。フローテーブル・メッセージ形式を定義
RFC 7426SDNのレイヤーとアーキテクチャを整理した概念定義RFC
RFC 7149SDNにおけるソフトウェア定義ネットワーキングの要件定義
RFC 6241NETCONF(OpenFlowと並ぶサウスバウンドAPIプロトコル)

関連用語

  • SDN(Software Defined Networking) — ネットワーク全体をソフトウェアで制御する設計思想。OpenFlowはその実装手段
  • フローテーブル — OpenFlowスイッチが持つパケット転送ルールの一覧表
  • SDNコントローラー — OpenFlowを通じてスイッチを集中管理する頭脳サーバー
  • VLAN — ネットワークを論理的に分割する技術。OpenFlowで動的に制御される対象の一つ
  • NFV(Network Functions Virtualization) — ルーターやFWなどネットワーク機能を仮想化する技術。SDNと組み合わせて使われる
  • NETCONF — OpenFlowと並ぶネットワーク機器管理プロトコル。設定変更に特化
  • P4 — データプレーン自体をプログラムできる次世代言語。OpenFlowの後継技術の一つ
  • オーバーレイネットワークVXLANなど仮想的なネットワーク層。SDN/OpenFlowと組み合わせてデータセンターで活用