自 作 OpenFlowコントローラlilyと Quantumについて 2012/3/23 宮 下 一 博 @kamakura_bakufu miyakz1192@gmail.com
自 己 紹 介 某 電 機 メーカ 勤 務 入 社 以 来 サーバのNIC 冗 長 化 ドライバ クラウドイ ンフラ 管 理 ソフトウェア 等 々 ネット 系 のソフトウェア 開 発 に 従 事 #nwstudyに 二 回 参 加 勉 強 会 参 加 者 の 自 宅 ラボ 同 士 をL2-VPNで 接 続 するイ ンフラを 紹 介 #sdnstudy OpenFlow 勉 強 会 その1を 開 催 2 回 目 は 近 日
データセンタネットワークの 課 題 仮 想 化 集 約 するとネットワークが 複 雑 になる 短 納 期 なのにネットワークの 設 計 構 築 が 大 変 様 々な 技 術 が 絡 むためトラブルシューティングが 困 難 で 時 間 がかかる RSTP 802.1q LACP 仮 想 スイッチ VNICなど 全 自 動 化 を 目 指 すと もっと 多 くの 知 識 の 習 得 が 必 要 AMPP VXLAN これだけではない もっとたくさん 課 題 がある
全 自 動 化 が 技 術 の 流 れ 現 在 のネットワークは 様 々なプロトコルのジグソー パズル スイッチ/ルータのインタフェースは 統 一 さ れていない
OpenFlowへの 期 待 感
OpenFlowを 用 いたSDNも 実 現 モデル
OpenFlowやOpenFlow SDNの 動 向
OpenFlowスイッチの 状 況 Cisco Nexus 3000 IBM BNT RackSwitch G8264 NEC UNIVERGE PFシリーズ HP OpenFlow 使 用 可 能 にするファームウェア Open Vswitch(Xen/KVM) NEC Hyper-V 仮 想 スイッチ Juniper Junos OS 上 のSDKで 対 応 Pronto BigSwitch
OpenFlowコントローラの 状 況 アプリケーションフレームワーク 型 ( 単 体 ではネット 制 御 機 能 を 持 たない OSS) Beacon(Java) NOX(python) Trema(C/ruby) などなど 製 品 ( 単 体 でネット 制 御 機 能 を 持 つ) Nicira Networks(NVP) NEC プログラマブルフロー コントローラ UNIVERGE PF6800 ミドクラ(Midonet)
Nicira Virtulization Platform(NVP) VM 間 のL2セグメントをL3のトンネリングで 実 現 ( 既 存 の 物 理 ス イッチを 使 用 可 能 VMホストの 業 務 LAN 間 がIP 到 達 可 能 であ ればNVPを 使 用 可 ) VMマイグレーションに 対 応 http://www.atmarkit.co.jp/news/201202/23/nicira.html
NEC PF6800コントローラ http://www.nec.co.jp/datanet/pflow/index.html
NEC PF6800コントローラ 1 台 のコントローラで 管 理 できるスイッチの 個 数 は25 台 まで フロー 数 は50 万 フローまで コントローラの 冗 長 化 はサポート アクティブスタン バイ 構 成 大 規 模 なネットワークを 構 成 できるわけではないと のこと
midonet 物 理 ネットワーク 構 成 から 分 離 された 仮 想 化 ネットワーク が フレキシビリティーを 実 現 します 現 状 お 使 いのIPネットワークの 上 で 機 能 します 実 装 されたネットワークサービスにより 高 価 なネットワー ク 機 器 を 不 要 にします 完 全 に 分 散 されたアーキテクチャーになっており 単 一 障 害 点 (Single Point of Failure)がありません 必 要 な 時 に 必 要 なだけコモディディー 機 器 でネットワーク サービスをスケールアウトで 拡 充 する 事 が 可 能 です 集 中 管 理 で 運 用 コストを 削 減 する 事 ができます マルチテナントシステムにより 効 率 的 なシステムの 拡 張 管 理 が 可 能 です 技 術 的 な 詳 細 は 不 明 http://www.midokura.com/j/midonet_j.html
PF6800/NVP/Midonetの 違 い PF6800 NEC OpenFlowスイッチを 使 用 して 物 理 的 なL2ネット 全 体 を 仮 想 化 既 存 機 器 は 使 用 できない(OpenFlowスイッチで 置 き 換 え) NVP Nicira OpenFlowはコントローラとOpenVswitch 間 の 連 携 のみ 使 用 L2をL3でカプセリング 既 存 機 器 をそのまま 使 用 可 能 Midonet ミドクラ OpenFlowを 使 用 (OpenFlow 勉 強 会 から) L2をL3でカプセリングしている 様 子 ( 予 測 ) 既 存 機 器 をそのまま 使 用 可 能 ( 予 測 )
OpenStack Quantum OpenStackのネットワーク 制 御 を 担 当 するコンポー ネント ネットワークの 管 理 を 抽 象 化 している プラグイン 構 造 をとっており 様 々なネットワークの 制 御 方 式 に 対 応 APIも 備 えており 汎 用 性 が 高 い
OpenStack Quantumアーキテクチャ Cisco Nicira NEC/Ryu Plugin Frame work(python) Quantum Netconf Quantum-API OpenFlow OpenStack nova CLI Nexus agent Open Vswitch OpenFlow SW VMHOS T
Quantumのネットワーク 抽 象 化 モデル Attachment Portに 対 する 論 理 的 なオブジェクト のプラグ/アンプラグ Port Networkに 対 する 論 理 的 な Portの 作 成 / 削 除 Network 論 理 的 なネットワーク の 生 成 / 削 除
QuantumとNovaの 管 理 分 担 および 実 リソースとの 関 連 instance Attachment Port VM VIF vport Nova 分 担 Quantum 分 担 OpenVswitchプラグイン 例 1)Networkを 作 る(Quantum) 2)instanceを 起 動 (Nova) 3)Networkに 対 応 する スイッチを 決 定 ( 決 め 打 ち)(Nova) 4)OVSのvPort 作 成 (Nova) 5)AttachmentとVIFを 関 連 付 け(Nova) 6)VM 作 成 (Nova) 7)Attachment(=VIF)をどのVLANに 属 させるのかの 設 定 (Quantum) Network OpenVswitch
自 作 OpenFlowコントローラのゴール Openで 機 能 拡 張 ができる トラブルシューティングが 簡 単 最 適 経 路 選 択 VMマイグレーション 追 跡 障 害 迂 回 論 理 ネット 分 割 などのリッチな 機 能 導 入 が 簡 単 適 当 に 配 線 しても 動 作 し 既 存 ネットとの 統 合 も 容 易 故 障 時 のスイッチ 交 換 も 簡 単
lilyの 特 徴 MACアドレスベースVLAN( 完 ) 物 理 ネットワークトポロジの 自 動 検 出 ( 完 ) ループの 自 動 検 出 ( 完 ) 最 短 パス 検 索 ( 完 ) 障 害 箇 所 の 迂 回 ( 完 ) 帯 域 制 御 (OpenVswitch)( 完 ) 帯 域 プール( 完 ) OpenStack Quantum API 1.0 対 応 (50%) CLIによる 操 作 (90%)
アーキテクチャ lily CLI REST-API lilyプラグイン API ハンドラ Webrick MAC-VLAN 最 適 経 路 最 短 パス 帯 域 管 理 ループ 検 出 トポロジ 検 索 Active support/active Record Sqlite3 REST-API Quantum Quantum-API OpenStack nova Trema-API(Ruby) Trema lily agent Open Vswitch OpenFlow protocol VMHOST OpenFlow-SW
Quantum-API 対 応 状 況 API APIハンドラ( 本 体 ) プラグイン List Networks List Networks Detail Show Network Show Network Detail Create Network Update Network Delete Network List Ports List Ports Detail Show Port Show Port Detail Create Port Update Port Delete Port Show Attachment for Port Plug Attachment into Port Unplug Attachment from Port
スイッチ 一 覧 表 示 [root@lily cli]#./lily.rb sw name dpid role ip address(port no) -----------+ -----------+ --------------- -------------------- a1 161 ACCESS 127.0.0.1/59022 a2 162 ACCESS 127.0.0.1/59023 a4 164 ACCESS 127.0.0.1/59025 a3 163 ACCESS 127.0.0.1/59024 d1 209 DISTRIBUTION 127.0.0.1/59026 c1 193 CORE 127.0.0.1/59028 d2 210 DISTRIBUTION 127.0.0.1/59027 [root@lily cli]# CORE DISTRIBUTION DISTRIBUTION ACCESS ACCESS ACCESS ACCESS
トポロジ 表 示 [root@lily cli]#./lily.rb topo a1:3 <-> d1:3 a1:2 <-> d1:2 a2:1 <-> d1:4 a4:2 <-> d2:3 a3:2 <-> d2:4 a3:1 <-> d2:2 d2:1 <-> c1:2 d1:1 <-> c1:1 ACCESS LINK=>[a1:1] ACCESS LINK=>[a4:1] [root@lily cli]#
帯 域 プール [root@lily cli]#./lily bw name band width(mbps) ---------+ --------------- a1 20000 a2 10000 a4 10000 a3 20000 band width pool(system total) = 60000Mbps [root@lily cli]#
論 理 ネット 作 成 表 示 変 更 削 除 作 成 root@lily:/home/miyakz/trema/src/examples/lsw/cli#./lily network create --name net1 <network id="03cde507-518e-885f-2ace-10f645c0f961"/> 表 示 root@lily:/home/miyakz/trema/src/examples/lsw/cli#./lily network list --detail <networks> <network name="net1" id="03cde507-518e-885f-2ace-10f645c0f961"/> </networks> 変 更 root@lily:/home/miyakz/trema/src/examples/lsw/cli#./lily network modify --name net1 --new_name new_net1 削 除 root@lily:/home/miyakz/trema/src/examples/lsw/cli#./lily network delete --name new_net1 INFO: deleting new_net1, detail(id=03cde507-518e-885f-2ace-10f645c0f961) root@lily:/home/miyakz/trema/src/examples/lsw/cli#
lilyの 課 題 MACアドレスベースVLANであり VM 間 の 通 信 フローを1つ1つ 定 義 するため フロー 数 が 爆 発 (OpenFlowコントローラ 共 通 の 問 題 ) MPLS/802.1qを 使 用 する OpenFlowコンソーシアムへの 働 きかけ ライブマイグレーション 未 対 応 (Quantum 対 応 で 解 決?) 性 能 (ruby)/スケールしない( 作 りの 問 題 ) GUI 信 頼 性 帯 域 プール+OpenStack(or ROR) Quantum APIの 残 りへの 対 応
SDN 勉 強 会 ( 主 催 ) 最 後 に SDN/OpenFlowを 一 緒 に 研 究 しませんか https://groups.google.com/forum/?fromgroups#!forum/ sdnstudy クラウドネットワーク 研 究 会 http://kokucheese.com/event/index/27170/ 皆 さんのお 知 恵 やアドバイスを 結 集 して OpenFlow 界 のLinuxみたいなコントローラを 作 ってみませんか