OpenStackとSDN
はじめに
OpenStackのネットワークコンポーネントNeutronには、標準的な選択肢としてOpen vSwitchプラグインがあり、以前の連載「OpenStack(RHEL-OSP6)で試す分散仮想ルータ」でご紹介したDVR機能等、さまざまな技術が投入されています。また、ネットワークエコシステムにも、魅力的な技術が数多く存在します。その中の一つMidoNetは、オーバレイ型のSDN(Software Defined Network)として注目を集めていましたが、昨年末にOSS化されて大きな話題を呼びました。本連載では、RDO版OpenStack KiloとOSS版MidoNetを用いたOpenStack×SDN環境構築の手順と、その挙動についてご紹介します。
第1回となる今回は、OpenStackとSDNの関係性についてご紹介します。
サーバ仮想化時代におけるネットワーク管理の課題
少し昔の話をします。OpenStackをはじめとするクラウド基盤構築ソフトウェアは、サーバ仮想化の技術からスタートしました。そして仮想サーバ複数台をまとめて管理する仕組みが出てくると、VMやテナントを複数サーバ上で横断的に使うようになりました。
複数のVMやテナントを複数の仮想サーバ上で横断して動かすためには、ネットワークを隔離する必要があります。それを実現するために、カプセル化(VLAN)が使われていました。VLANの設定は、仮想サーバ内の仮想スイッチだけでなく、物理スイッチ側にも必要です(図1)。
このように、VLAN設定はシステム全体に適用する必要があります。仮想サーバの台数が増加した場合でも、すべての仮想サーバ内の仮想スイッチと物理スイッチへVLANの設定をする必要があります。既存テナントにVMを追加する場合なら、VMに該当テナント用のVLANネットワークを関連づけするだけでよいのですが、テナント自体を追加・削除する場合、すべてのサーバとスイッチへの変更が必要となってしまいます(図2)。
ある程度の管理ツールがあるとはいえ、サーバエンジニア、ネットワークエンジニアの負担は大きくなってしまいます。台数が少ないうちは、それでも何とか運用でカバーできました。しかし、クラウド基盤構築ソフトウェアを使い、サーバ台数が数千台規模となり、スイッチの台数や段数も増加してくると難しいです。そこで、ネットワークの構成を柔軟・動的に変更するための技術、つまりSDNが必要となります。
SDN導入による運用の変化
それではSDNを導入することで、どのような変化が起きるのでしょうか。
ここでは一般的なSDNのお話ではなく、クラウド基盤構築ソフトウェアとの組み合わせという観点で説明します。SDNはHop by Hop方式とオーバレイ方式の2種類に大別されます。
Hop by Hop方式
Hop by Hop方式では、ネットワーク全体を管理するコントローラが、すべての物理スイッチ、仮想スイッチの設定をフロー制御します(図3)。
物理スイッチ、仮想スイッチをコントローラ管理下に設定しておけば、管理者が設定を投入する対象はコントローラのみとなるため、管理負荷が激減します。またコントローラを、クラウド基盤側管理ツールと連携できる場合もあります。その半面、仮想スイッチだけでなく、物理スイッチもコントローラに対応している必要があり、導入の敷居が高いのが実情です。
オーバレイ方式
一方、オーバレイ方式では物理ネットワーク上で仮想的なネットワークを構成します。具体的には、仮想サーバ上の仮想スイッチが、L2パケットをL3ネットワークでGRE、VXLAN等を用いてカプセル化します。仮想スイッチの制御は、コントローラが担います(図4)。
カプセル化されたパケットは、通常のL3パケットとなるため、どのような物理スイッチでも使えるのが特徴です。物理ネットワークの要件は、L3で相互につながっていることのみです。オーバレイ方式でも、コントローラとクラウド基盤側の管理ツールと連携することで、ネットワーク観点の運用負荷を激減することが可能です。
MidoNetとは
MidoNetは、オーバレイ方式のSDNシステムです。OpenStackに対応しており、Neutronのプラグインとして動作します。オーバレイ方式で物理ネットワーク上に仮想ネットワークを構築するため、物理ハードウェアや物理スイッチの制約は少なめです。従来は商用版のみだったのですが、2014年11月にOSS化されました。商用版はMidokura Enterprise MidoNet(MEM)という製品名で継続していますが、OSS版が提供されたことで、評価や挙動解析の敷居が格段に下がりました。
MidoNet最大の特徴は、コントローラにあたるものが単一ではなく、制御機構が分散されていることです。つまり、SPoF(Single Point of Failure)やボトルネックを回避することが可能なアーキテクチャとなっています。
OpenStack × MidoNet
OpenStackとMidoNetを組み合わせた場合の、コンポーネントや役割について説明します。
OpenStackでMidoNetを使う場合、下記のサーバが必要となります。
名称 | 用途 |
---|---|
Controllerサーバ | OpenStackのController + MidoNet API、etc |
Computeサーバ | OpenStackのCompute + MidoNet Agent |
Network State Database(NSDB)サーバ | MidoNet Network全体の情報を保持するDatabase |
Gateway(GW)サーバ | MidoNetのBGP Daemon |
Controllerサーバ、ComputeサーバといったOpenStack関連サーバの他、NSDBサーバ、GWサーバといったMidoNetならではのサーバもあります。RDOのWebページには、これをAll in Oneで構成する手順が掲載されていますが、この場合MidoNetの特徴的な挙動を確認するのが難しいため、本連載では上記すべてを分散して構築する手順をご紹介します。
役割をイメージしやすくするため、次回の構築手順で使用する構成図を図6に示します。
Controller、Compute、GWの各サーバは、Guest(Tunnel)Networkのインタフェース経由で、Tunnel Zoneへ参加します。Tunnel Zoneは、仮想的なネットワークを作るためのベースとなる部分であり、GREやVXLANでカプセル化されます。物理Network上でTunnel Zoneが構成され、さらにその上で「複数」の仮想的なTenant Networkが構成されます。
図6に、MidoNetによる仮想ネットワークを投影すると、図7のようになります。
Controllerサーバには、OpenStackのController機能に加えて、MidoNet連携のためのMidoNet API等をインストールします。
Computeサーバには、OpenStackのNova Compute機能に加えて、MidoNet Agentをインストールします。VMは、Tunnel Zone上に構成された仮想ネットワークであるTenant Networkに存在します。VMから出たパケットの経路計算は、これらのサーバが自立分散的に処理します。
GWサーバには、BGP Daemon及びMidoNet Agentをインストールします。このサーバ上でMidoNet Provider Routerが構成されます。MidoNet Provider Routerは、上流ネットワークとの接続経路であるBGP用インタフェース、Floating IP用のExternal Networkのインタフェース、内部ネットワークであるTenant Network用のインタフェースを有します。MidoNet Provider Routerは複数のGWサーバ上で一つの仮想ルータとして存在しており、Active/Activeでパケットを処理しています。そのため、特定のGWサーバに障害が発生しても、システム全体がダウンすることはありません。
NSDBサーバには、Zookeeper及びCassandraをインストールします。トポロジ情報を保持し、IP/MACテーブル等のネットワーク全体の情報を保持します。本ノードは、一般的なオーバレイ方式SDNでいうところのコントローラノードではありません。
このように、MidoNetでは仮想ネットワークを構成するための情報及び経路は、特定のコントローラで集中計算されるのではなく分散計算・処理され、その情報がNSDBサーバへ保存されるというアーキテクチャをとっています。
今回はSDNとOpenStackの観点からMidoNetについてご説明しました。次回は、OpenStack Kilo(RDO版)とMidoNet(v2015.06)を使い、OpenStack & MidoNet環境を構築する手順を、OSインストールからStep by Stepで、はまりどころも含めて詳細にご説明していきます。
- Linuxは、Linus Torvalds氏の日本およびその他の国における登録商標または商標です。
- MidoNetは、Midokura SARLの登録商標です。
- OpenStack®の文字表記とOpenStackのロゴは、米国とその他の国におけるOpenStack Foundationの登録商標/サービスマークまたは商標/サービスマークのいずれかであり,OpenStack Foundationの許諾を得て使用しています。日立製作所は,OpenStack FoundationやOpenStackコミュニティの関連企業ではなく、また支援や出資を受けていません。
- Red Hat、Red Hat Enterprise Linuxは、米国およびその他の国におけるRed Hat, Inc. の登録商標です。
- その他、記載の商標やロゴは、各社の商標または登録商標です。
【参考文献】
MidoNet Documentation(アクセス:2015/08)
OpenStackNetworking Plug-in 比較 -OVS と MidoNet-(アクセス:2015/08)
http://www.osca-jp.com/solution.html
完全分散エッジ処理で実現するNeutron仮想ネットワーク(アクセス:2015/08)
http://www.slideshare.net/enakai/midonet-technology-internalsv10