SACSIS 2011 チュートリアル

新ネットワーク制御技術 OpenFlow とその利用方法
2011年5月27日
NEC
システムプラットフォーム研究所
菅原智義

概要
▌ はじめに▌ OpenFlowの概略▌ OpenFlowの仕組み▌ OpenFlowの利用方法▌ OpenFlowによるネットワーク仮想化▌ OpenFlowのプログラマビリティ▌ おわりにPage 2© NEC Corporation 2011

はじめに
▌ OpenFlow
z 新しいネットワークスイッチのアーキテクチャ
z ネットワークの仮想化とプログラマビリティが特徴▌ ネットワーク仮想化
z 物理ネットワーク上にマイ・ネットワークを構築できる▌ プログラマビリティ
z アプリケーションプログラムからネットワークを制御できる『さて、あなたは何をしたいですか。』
Page 3© NEC Corporation 2011▌ はじめに▌OpenFlowの概略▌ OpenFlowの仕組み▌ OpenFlowによるネットワーク仮想化▌ OpenFlowによるネットワーク仮想化▌ OpenFlowのプログラマビリティ▌ おわりにPage 4© NEC Corporation 2011

OpenFlowとは▌ OpenFlowスイッチコンソーシアムが提唱した、ネットワーク制御技術のことである。オープンソースで開発されている。
▌ 従来のネットワーク制御方式は、主にIPアドレスのルーティングによって行われてきたが、OpenFlowではMACアドレスやIPアドレス、ポート番号などの組み合わせによって決定される一連の通信を「フロー」として定義し、フロー単位での経路制御を実現する。これによって、品質の確保やネットワークの利用率向上などが期待できるとされる。
▌ 日本国内ではNECが、OpenFlowスイッチングコンソーシアムの設立当初から参加しており、フロー単位での処理を制御する「プログラマブルフロースイッチ」の試作・製品化や、モバイル通信網へ応用する技術の開発などに取り組んでいる。
（IT用語辞典 「バイナリ」より引用、赤字部分を一部修正）

Page 5© NEC Corporation 2011

OpenFlow.org （旧 OpenFlow Switch Consortium）▌ OpenFlowの情報発信の中心
z 活動の中心は、Stanford大の Prof. Nick McKeownグループ
http://www.openflowswitch.org/
または、「openflow switch」で検索

Page 6© NEC Corporation 2011

Open Networking Foundation▌ Software-Defined Networkingの促進ための組織▌ OpenFlow プロトコルの策定と普及の中心
http://www.opennetworkingfoundation.org/

Page 7© NEC Corporation 2011

OpenFlow Switch Specification▌ OpenFlow SwitchとControllerの間のProtocolを規定▌ 直近のリリースは Ver 1.1.0
http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf▌ 現在は、Ver.1.2の策定中

Page 8© NEC Corporation 2011

OpenFlowの基礎知識： アーキテクチャ
 パケット転送と経路制御の機能をSwitchとControllerに分離
 制御プロトコルはOpenFlow Protocol
 Ｌ１～Ｌ４のヘッダ情報を統合的に見て、スイッチング

OpenFlow Switch
SecureChannel
Rule
Rule

ActionAction© NEC Corporation 2011

OpenFlow
ProtocolServerStatistics
Statistics

Flow Table

Page 9OpenFlowController

パケットの転送経路制御など

OpenFlowの基礎知識： フロースイッチング
従来のネットワーク機器とは異なり、「フロー」 に従い転送制御を行う【従来のネットワーク機器】
L2/L3のレイヤーの宛先アドレスに従って個々の機器毎に転送制御
Ｌ２(MAC)スイッチング

Ingress Dst
PortMAC

Ｌ１

Src
MAC

Ether
Type

Ｌ２

VLAN
ID

（ファイアウォール等）

Ｌ３(IP)ルーティング

VLAN
Priority

Dst
IP

Src
IP

IP
Proto

Ｌ３

IP
ToS

TCP/UDP TCP/UDP
Src Port Dst Port

Data

Ｌ４

【フロースイッチングとは？】
フローとは、L1（物理ポート等）、L2(MAC)、L3(IP)、L4(ポート番号)の各レイヤーの任
意のアドレス／識別子の組み合わせで、通信トラフィックを識別し特定するルール。
そのルールの取り扱いポリシー（アクション）に従い、エンドツーエンドで最適な経路を選択して転送することをフロースイッチングと呼ぶ。
Page 10© NEC Corporation 2011

NECにおけるOpenFlowの取り組み▌ いち早くOpenFlow技術に注目し、試作機開発、実証実験などに取り組んできた▌ 2008年にスタンフォード大学と共同で日米間の広帯域ネットワークを使用した実証実験▌ NICTなどと共同で、OpenFlow技術を用いて3D映像配信の実証実験
z 日本の14拠点に加え、韓国、香港の国際迂回回線も活用して、さっぽろ雪まつりのライブ映像および沖縄プロ野球キャンプの映像を伝送

Page 11© NEC Corporation 2011

NECのOpenFlow製品
世界で初めて、新ネットワーク制御技術「OpenFlow」に対応したネットワーク製品「UNIVERGE PFシリーズ（プログラマブルフロー）」を製品化

プログラマブルフロー・コントローラ「UNIVERGE PF6800」

プログラマブルフロー・スイッチ「UNIVERGE PF5240」

Interop Las Vegas 2011の Best of Interop2011（インフラストラクチャー部門）を受賞

Page 12© NEC Corporation 2011▌ はじめに▌ OpenFlowの概略▌OpenFlowの仕組み▌ OpenFlowの利用方法▌ OpenFlowによるネットワーク仮想化▌ OpenFlowのプログラマビリティ▌ おわりにPage 13© NEC Corporation 2011

OpenFlowの構成要素▌ OpenFlow Protocol▌ OpenFlow Switch （Flow Tableを含む）▌ OpenFlow Controller
OpenFlow Switch
SecureChannel
Rule
Rule

ActionAction© NEC Corporation 2011

OpenFlow
ProtocolServerStatistics
Statistics

Flow Table

Page 14

OpenFlow
Controller

パケットの転送

経路制御などOpenFlowの動作例
OpenFlow③経路計算 Controller

Rule

OpenFlow
SwitchPC

OpenFlow
SwitchAction④フローテーブル設定⑤パケット転送②経路問い合わせRule

OpenFlow
ActionSwitchRuleOpenFlow
ActionSwitch①パケット受信パケット

Page 15© NEC Corporation 2011

OpenFlowによる経路設定の例

Page 16© NEC Corporation 2011

OpenFlow Protocol▌ OpenFlow SwitchとOpenFlow Controllerの間の通信とメッセージを規定▌ 主なメッセージの種類
z Switchのスペック、構成、状態などの問い合わせz Switchの状態の報告
z Flow Tableなどの設定
z パケットの入力(packet-in)と出力(packet-out)z 接続確立・死活監視

Page 17© NEC Corporation 2011

OpenFlow Protcolで用いるメッセージタイプ
enum ofp_type {/* Immutable messages. */OFPT_HELLO,/* Symmetric */OFPT_ERROR,/* Symmetric */OFPT_ECHO_REQUEST, /* Symmetric */OFPT_ECHO_REPLY,/* Symmetric */OFPT_EXPERIMENTER, /* Symmetric *//* Switch configuration messages. */OFPT_FEATURES_REQUEST, /* Controller/switch */OFPT_FEATURES_REPLY,/* Controller/switch */OFPT_GET_CONFIG_REQUEST, /* Controller/switch */OFPT_GET_CONFIG_REPLY, /* Controller/switch */OFPT_SET_CONFIG,/* Controller/switch */OFPT_PACKET_IN,/* Async */OFPT_FLOW_REMOVED, /* Async */OFPT_PORT_STATUS,/* Async *//* Controller command messages. */OFPT_PACKET_OUT,/* Controller/switch */OFPT_FLOW_MOD,/* Controller/switch */OFPT_GROUP_MOD,/* Controller/switch */OFPT_PORT_MOD,/* Controller/switch */OFPT_TABLE_MOD,/* Controller/switch */Page 18© NEC Corporation 2011/* Statistics messages. */OFPT_STATS_REQUEST, /* Controller/switch */OFPT_STATS_REPLY,/* Controller/switch *//* Barrier messages. */OFPT_BARRIER_REQUEST, /* Controller/switch */OFPT_BARRIER_REPLY, /* Controller/switch *//* Queue Configuration messages. */OFPT_QUEUE_GET_CONFIG_REQUEST, /* Controller/switch */OFPT_QUEUE_GET_CONFIG_REPLY, /* Controller/switch */};

Flow Tableの定義

Flow 1.

Match Fields(exact & wildcard)

Counters

Instructions

Flow N.

Match Fields(exact & wildcard)CountersInstructions

フロー統計情報
柔軟なフローフィルタ定義(例)(例)
Port, VLAN ID, L2, L3, L4, … パケット数、バイト数、セッション継続時間

Page 19© NEC Corporation 2011

フローに対する処理定義(例)
ユニキャスト,マルチキャスト, 帯域制御, 廃棄制御, 負荷分散制御、障害回復制御,仮想ポート(Tunnel)転送制御,

フローフィルタ定義（OpenFlow Switch Specification version 1.1.0 implementedより引用）
struct ofp_match {uint16_t type;/* One of OFPMT_* */uint16_t length;/* Length of ofp_match */uint32_t in_port;/* Input switch port. */uint32_t wildcards;/* Wildcard fields. */uint8_t dl_src[OFP_ETH_ALEN];/* Ethernet source address. */uint8_t dl_src_mask[OFP_ETH_ALEN];/* Ethernet source address mask. */uint8_t dl_dst[OFP_ETH_ALEN];/* Ethernet destination address. */uint8_t dl_dst_mask[OFP_ETH_ALEN];/* Ethernet destination address mask. */uint16_t dl_vlan;/* Input VLAN id. */uint8_t dl_vlan_pcp;/* Input VLAN priority. */uint8_t pad1[1];/* Align to 32-bits */uint16_t dl_type;/* Ethernet frame type. */uint8_t nw_tos;/* IP ToS (actually DSCP field, 6 bits). */uint8_t nw_proto;/* IP protocol or lower 8 bits of* ARP opcode. */uint32_t nw_src;/* IP source address. */uint32_t nw_src_mask;/* IP source address mask. */uint32_t nw_dst;/* IP destination address. */uint32_t nw_dst_mask;/* IP destination address mask. */uint16_t tp_src;/* TCP/UDP/SCTP source port. */uint16_t tp_dst;/* TCP/UDP/SCTP destination port. */uint32_t mpls_label;/* MPLS label. */uint8_t mpls_tc;/* MPLS TC. */uint8_t pad2[3];/* Align to 64-bits */uint64_t metadata;/* Metadata passed between tables. */uint64_t metadata_mask;/* Mask for metadata. */};
Page 20© NEC Corporation 2011

フローに対する処理定義▌ Output （必須）z 指定した物理ポートにパケットを転送する▌ Drop （必須）z 何もアクションしない（パケットは捨てられる）▌ Group （必須）z 指定したグループを通してパケットを処理する▌ Push-Tag/Pop-Tag
z VLANタグやMPLSタグを付加・削除する▌ Set-Queuez パケットにキューIDを付加する（QoS制御のために使用）▌ Set-Fieldz パケットのフィールドを変更する
Page 21© NEC Corporation 2011

フロー統計情報
下記は、Counter名とサイズ（bit）を表す
Per Table
Reference count (active entries) 32
Packet Lookups
64
Packet Matches
64
Per Flow
Received Packets
64
Received Bytes
64
Duration (seconds)
32
Duration (nanoseconds)
Per Port
Received Packets
Transmitted Packets
Received Bytes
Transmitted Bytes
Receive Drops
Transmit Drops

Page 22

64
64
64
64
64
64

© NEC Corporation 2011

Receive Errors
64Transmit Errors
64
Receive Frame Alignment Errors
Receive Overrun Errors 64
Receive CRC Errors
64
Collisions
64

64

Per Queue
Transmit Packets
64
Transmit Bytes
64
Transmit Overrun Errors64
32
Per Group
Reference Count (flow entries)
Packet Count
64
Byte Count64
Per Bucket
Packet Count
Byte Count

64
64

32

OpenFlow Switch▌ 1つ以上の flow table と 1つの group tablez パケットの検索、転送、統計に利用▌ Secure channelz OpenFlow Controllerとの通信用

Page 23© NEC Corporation 2011

SecureChannel

Group
Table

Flow
Table

Flow
Table

→・・・→

OpenFlowスイッチの種類▌ L2スイッチベース
z 最も一般的なOpenFlowスイッチの形態
z 既存のL2スイッチをベースにファームウエアの改造によってOpenFlow機能を持たせたものが多い
z L2～L4のヘッダを処理
z NEC, HP, Juniper, Quanta, Arista等▌ ソフトウエアスイッチ
z OpenFlowスイッチをソフトウエアとしてホストに内蔵したもの
z Open vSwitch, Stanford Reference Switch等▌ トランスポートノードベース
z トランスポートノードのパス設定をOpenFlowプロトコルで操作可能としたもの
z Cienna, Fujitsu America等▌ ワイヤレスz WiFi-APやWiMAX-BS/ASNGWにOpenFlow機能を付加したもの
Page 24© NEC Corporation 2011

OpenFlow Controller▌ PCサーバなどで実行されるプログラムz 経路制御、トポロジー管理などの上位のネットワーク制御を行う▌ オープンソース
z NOX
最も歴史が古く、利用者も多いコントローラ
z SNACNOXの改良版でGUIが特徴
z Beacon Java版のControllerz Trema
OpenFlow Controllerのフレームワーク▌ 製品
z プログラマブルフロー・コントローラ （NEC）

Page 25© NEC Corporation 2011

Trema▌ NECが研究開発した、OpenFlow Controller用ソフト
ウェアプラットフォームをオープンソースとして、githubに公開
http://trema.github.com/trema/▌プラットフォームであり、経路制御などは上位モジュールとして、利用者（開発者）が記述する
z サンプルコードは付属する▌RubyとCで上位モジュールを記述できる▌ライセンスは、GPL ver.2Page 26© NEC Corporation 2011▌ はじめに▌ OpenFlowの概略▌ OpenFlowの仕組み▌OpenFlowの利用方法▌ OpenFlowによるネットワーク仮想化▌ OpenFlowのプログラマビリティ▌ おわりにPage 27© NEC Corporation 2011

OpenFlowを何に使うか▌ 新しいネットワーク制御の試作・実験
z 経路制御やQoS制御など上位のネットワーク制御を自分で実装する
z パケットスイッチなど下位のネットワーク制御は実装しなくてよいz すでに、学術実験網での利用が始まっている▌ 仮想ネットワークの実現
z VLANのように数の制約を受けずに、自由に仮想的なネットワークを構築する
z すでに、プログラマブルフロー・コントローラが仮想ネットワーク機能を提供▌ ITとネットワークの統合制御の実現
z プログラムの要求に合わせてネットワークを制御する
z HPC分野などでの利用拡大が予想される

Page 28© NEC Corporation 2011

OpenFlowの学術実験網での利用▌ 仮想化／（ユーザー）プログラマブルネットワークの実現
z Computer & network integrated programmable network nodez Optical dynamic circuit switch
z Programmable radio & dynamic mobility▌ OpenFlowテストベットに関する各国の取り組み
z 米国 NSF-GENIz EU FP7-OFELIAz 日本-JGN2plus/JGN-X

EU: FP7-OFELIA Project
Page 29© NEC Corporation 2011

USA: NSF GENI ProjectJGN2plus上での映像伝送実証実験▌NECとNICTの共同でＪＧＮ２Ｐｌｕｓ上にＯｐｅｎＦｌｏｗ通信網を構築（2010年3月）▌広域映像伝送の実証実験を実施し、さっぽろ雪まつり・沖縄プロ野球キャンプ映像伝送に成功

Page 30© NEC Corporation 2011▌ はじめに▌ OpenFlowの概略▌ OpenFlowの仕組み▌ OpenFlowの利用方法▌OpenFlowによるネットワーク仮想化▌ OpenFlowのプログラマビリティ▌ おわりにPage 31© NEC Corporation 2011

仮想化とは▌ 抽象化（abstraction）
z エミュレータ、シミュレータ
z オペレーティングシステム（プロセス、ファイル、ソケット）
z Javaなどの仮想マシン▌ 多重化（multiplexing）
z VMwareなどの仮想マシン（VM）
z ハードディスクなどのパーティション▌ 集約化（aggregation）
z グリッドz RAID、論理ボリュームマネージャ（LVM）
Page 32© NEC Corporation 2011

ネットワーク仮想化とは▌ 抽象化 （abstraction）
z Virtual Private Network (VPN)z ネットワークアドレス変換 (NAT)▌ 多重化 （multiplexing）
z VLAN（Virtual LAN）
z 単一スイッチの仮想多重化▌ 集約化 （aggregation）
z 複数スイッチの統合仮想化
z チャネルボンディング
Page 33© NEC Corporation 2011

OpenFlowによるネットワーク仮想化
OpenFlowコントローラ
集約化

論理ネットワーク制御

集中制御
物理ネットワーク

OpenFlowスイッチ
L2-L4スイッチ

抽象化
Rule
Rule

ActionActionStatistics
Statistics

Flow Table

ＤＡＴＡ

Page 34© NEC Corporation 2011

ＩＰ
Ｌ４
Ｌ４
送信元
送信元宛先
ポート番号 ポート番号 アドレス

ＩＰ
宛先アドレス

ＶＬＡＮ
タグ

ＭＡＣ
送信元アドレス

ＭＡＣ
宛先アドレス

多重化
フロースイッチング

OpenFlowによるネットワーク仮想化の課題▌ 端末＆サーバーのモビリティ実現
z 端末が動く、サーバも動くz アドレス/サブネットの仮想化▌ ネットワークリソースの利用効率向上
z シームレスなスケールアウト
z ネットワークリソースの共有
z 部分的なリソースの休止▌ サーバーとネットワークの一括管理
z 仮想スイッチ（vSwitch）とネットワークスイッチの連携
z サーバー＆ネットワークの一括運用監視制御
Page 35© NEC Corporation 2011

端末＆サーバーのモビリティ実現▌ 端末やサーバーの移動に合わせて、フローを追従させる
広域ネットワーク

データセンターSW

データセンター
VM VM

VM VM

端末の移動

SW

サーバ（VM)の移動
VM

VM

VM

VM

VM

サーバ（VM）の移動
Page 36© NEC Corporation 2011

ネットワークリソースの利用効率向上
ネットワーク・スケールアウト
部分的なリソースの休止
ネットワークリソースの共有

仮想テナントＡ
仮想テナントＢ＝・・・

Power-OFF省電力仮想テナントＣ

仮想テナントＮ

スケーラビリティ

Page 37© NEC Corporation 2011

効率的利用

サーバーとネットワークの一括管理
従来と異なりサーバとネットワークの境界線が曖昧なものになりつつある。
→ OpenFlowコントローラによるサーバとネットワークの一括管理
サーバ

サーバ

AP

AP

従来

サーバ管理

ITとNWの境界
L2/L3 SW

サーバ
AP

仮想化
導入後

VM

AP

ネットワーク管理

L2/L3 SW

サーバとネットワークの管理がオーバラップ

サーバ
AP

VM VM
vSwitch

AP

AP

AP

VM VM VM
vSwitch

サーバ管理

一括管理

ネットワーク管理 コントローラ
L2/L3 SW
Page 38© NEC Corporation 2011

L2/L3 SW▌ はじめに▌ OpenFlowの概略▌ OpenFlowの仕組み▌ OpenFlowの利用方法▌ OpenFlowによるネットワーク仮想化▌OpenFlowのプログラマビリティ▌ おわりにPage 39© NEC Corporation 2011

ジョブスケジューラ連携制御
ジョブスケジューラの指示により、適切な経路設定をOpenFlow
Switch に指示し、ジョブが要求する通信性能やセキュリティを確保

ジョブスケ
ジューラ
大規模計算／大量データ転送
大量転送

大量データ転送を伴う大規模計算
は計算も通信も隔離（占有）

インターネット
OpenFlow
OpenFlow
SwitchSwitchOpenFlow
Controller
大規模計算／大量データ転送
大量転送

その他
計算／データ／コマンド

その他
計算／データ／コマンド

その他は計算も通信も資源を共有し、従来の仕組みで安全を確保① 投入されるジョブの特性に応じて、適切な経路（フロー）を選択② ファイアウォールなしでも、優先される経路（フロー）を隔離
Page 40© NEC Corporation 2011

ユーザ（端末）認証連携制御
ユーザ（端末）認証の結果に基づいて、経路設定の可否を判断
認証サーバ

OpenFlow Controller

転送判断

転送許可
認証
転送設定

パケット破棄OpenFlow
SW

OpenFlowSW

転送不可
Page 41© NEC Corporation 2011

転送設定

転送設定

OpenFlowSW

OpenFlowベースのファイアウォール／ロードバランサ
 ファイアウォール（FW）／ロードバランサ（LB）等の機能をOpenFlowで実現
z サーバを追加してもFW/LBの再配置、接続構成変更が不要
従来のＤＣ

OpenFlowベースのＤＣ

The Internet

The Internet

ルータ

ＯＦＳ

FW機能
LB機能

FW

OFC

OFC

ＯＦＳ

LB

FW, LBの専用装置が必要でコストが増大
Page 42© NEC Corporation 2011

専用の装置を置かずにOFS/OFCにより、 FW, LB同等機能を実現

おわりに▌ 新ネットワーク制御技術である OpenFlow と、その利用方法、特に、ネットワーク仮想化とプログラマビリティの利用方法について紹介しました。

『さて、あなたは何をしたいですか。』▌ OpenFlowの利用技術の研究開発は始まったばかりです。
あなたもOpenFlowを利用した研究開発に参加してください。
▌ 問い合わせ先NEC システムプラットフォーム研究所
菅原智義 tom-sugawara@ap.jp.nec.com

Page 43© NEC Corporation 2011

Page 44