Open Flow を用いた遠隔ライブマイグレーションの提案
2009SE037 原 起知

2009SE224 岡田 幸大

指導教員： 青山 幹雄

はじめに

1ションの様子を図 2 に示す．

近年，クラウドコンピューティングの発達により，ネットワークを利用して様々なサービスを得ることができる．仮想化した OS のことを VM (Virtual Machine) と呼び，クラウドサービスを提供するサーバは，VM 上で稼働できる．
また VM は別のホスト上に移動できる．これをマイグレーションと呼ぶ．本研究ではマイグレーションを効率良く行うことを目的とする．

OS を仮想化することによって，１台のホスト上で複数のVM を稼働できる．ホストの稼働台数を抑えることができ，初期コストや運用コストを削減できる．また，VM のリソース不足時に簡単にリソースの割当を変更できる．しかし，VM が稼働しているホストのリソース不足時や，障害発生時においてマイグレーションを行う必要がある．

研究課題

3

クライアント

移動元ホスト

NFSサーバ

メモリ転送

VM
Xen

移動先ホストデータ共有

図 2 ライブマイグレーション

4.1.1 マイグレーション時のデータ引き継ぎ

研究の背景

2VM
Xen

仮想化ソフトウェアは Xen を使用する[2]．Xen を用いて手動でマイグレーションを実行する場合，xm コマンドを用い，VM 名，移動先 IP アドレスを指定する．マイグレーションは通常 LAN 内で行われることを想定している．

VM は通常の OS と同じく，主記憶装置と補助記憶装置から成り立つ．したがって，マイグレーションを行うにあたり，この 2 つのデータに注目する．
主記憶装置内のデータは，ネットワークを経由して転送する．VM の主記憶装置の容量分を，移動先ホストのXen に転送する．
補助記憶装置はメモリに対して容量が大きいため，そのまま転送を行うと多大な時間を要する．一般的に，補助記憶装置のデータをそのまま転送する方法はとられていない．例として，ネットワーク上のデータにアクセスできる
NFS (Network File System) サーバを用いて，データを転送せずにディスクデータを引き継ぐ．

LAN 内で行われるマイグレーションを図 1 に示す．

4.1.2 ライブマイグレーションの動作

マイグレーショ ンホストVM
OSXen

ホスト
VM
OSXen

移動元ホスト

移動先ホスト

ライブマイグレーションは次の 6 ステップから成る．
(1) 機能要件のチェック
ライブマイグレーションが可能であるかどうか，プロクライアント

図１ LAN 内のマイグレーション
LAN 間でマイグレーションを行おうとすると，VM に接続しているクライアントがアクセスできなくなる．IP アドレスやサブネットマスクなどの設定も引き継ぐため，変更を行う必要がある．
本研究では，オープンソースのソフトウェアを用いてLAN 間でマイグレーションを行う仕組みを提案する．

4

関連技術

4.1

ライブマイグレーション

マイグレーションはあるホスト上で稼働する VM を，別のホスト上へ移し替える技術である．特に，クライアントとVM との接続が途切れることなくマイグレーションを行うことをライブマイグレーションと呼ぶ[1]．ライブマイグレー

セッサの互換性，移動先ホスト上に必要な空きメモリがあるかをチェックする．
(2) 移動先ホストの VM 構成
移動先の仮想マシンのメモリ領域を確保し，メモリ転送の受け入れ準備を行う．
(3) メモリの転送
移動元ホストから移動先ホストへ，メモリデータを転送する．一度転送が終了してもその間にメモリの変更が発生するため，差分ブロックを再転送する．移動元と移動先が同期するまでブロック単位で転送する．
(4) 移動元ホストの VM 停止
メモリ同期完了後，VM を停止する．
(5) 移動先ホストの VM 再開
移動先ホストは，メモリを受け取っており，ディスクデータにもアクセス可能なため，そのまま VM を再開する．同時にネットワークスイッチに対して，MAC アドレステーブルを更新する．

(6) 移動元ホストの VM 構成の削除
VM 構成を削除してマイグレーションが終了する．

4.2

アクセスをあたかもローカルにアクセスしているかのように設定できる．Open vSwitch を用いたトネリングの構成を図 4 に示す．

OpenFlow

OpenFlow とは，ネットワークパケット転送の流れをソフトウェアを用いて制御する技術である[4]．

VM
VIF

信する．

4.2.2 フロー制御
OpenFlow スイッチは，フローエントリを用いてパケットの転送を制御する．フローエントリは，ヘッダーフィールド，アクション，統計情報から成り立つ．
(1) ヘッダーフィールド
ヘッダーフィールドでは，スイッチが受信したパケットのレイヤ 1 からレイヤ 4 での情報の組み合わせを元に，パケットの識別をする．
(2) アクション
アクションでは，ヘッダーフィールドに一致するパケットを受信した場合に行う動作を定義する．
(3) 統計情報
統計情報では，ヘッダーフィールドに一致した通信の量を管理する．この管理されている情報は，コントローラからアクセスできる．

4.2.3 OpenFlowProtocol
スイッチがパケットを受信すると，スイッチ内に記録されているフローエントリのヘッダーフィールドを元にアクションを決定する．ヘッダーフィールドの条件に一致しないパケットを受信した場合は，スイッチからコントローラに問い合わせを行い，スイッチに新しいフローエントリを書き込む．スイッチとコントローラの通信に用いる．

VM
VIF

Open vSwitch
PIF

4.2.1 OpenFlow の構成
OpenFlow は OpenFlowSwitch （ 以 下 ス イ ッ チ ） とOpenFlowController （以下コントローラ）から構成される．
スイッチとコントローラは OpenFlow Protocol を用いて通VM
VIF

VM
VIF

トネリング

VM
VIF

VM
VIF

Open vSwitch
PIF

図 4Open vSwitch を用いたトネリング

4.2.5 Trema
Trema とは，コントローラを開発するためのプラットフォームを提供するオープンソースのソフトウェアである．
Trema には，コントローラを実行するライブラリが含まれている．ユーザは，C 言語もしくは Ruby を用いてコントローラとなるアプリケーションを開発する．コントローラとスイッチが接続された状態で，Trema コマンドを用いコントロー
ラを実行することで，仮想ネットワークを構築できる．

4.3

OpenStack

OpenStack[3]は，クラウドを構成する仮想マシンや物理サーバの運用管理を実行し，それを効率的に行うためのオープンソースソフトウェアである．OpenStack の利用者（ クラ ウ ド利 用 者） は， KVM や Xen で 構 成される
Hypervisor 上で動作する仮想マシンに外部ネットワークからアクセスし，CPU，メモリ，HDD，IP アドレス等の計算資源を利用する．
OpenStack は複数のコンポーネントから構成され，これらのコンポーネントが連携することで IaaS のサービスを提供するアーキテクチャである．各コンポーネントの機能は次のとおりである．
(1) Compute(Nova) ：「計算資源管理」「計算資源割り当て」「メッセージ通信」を行う．
(a) 計算資源管理
OpenStack が管理する物理サーバの CPU，メモリ

Open vSwitch とは OpenSwitch をソフトウェアで実現したオープンソースの仮想ソフトウェアスイッチである．仮想サイズ等を管理する．
(b) 計算資源割り当て管理されている物理マシンからクラウド利用者が利用する計算資源を決定する．

化 ソ フ ト ウ ェ ア と と も に 利 用 さ れ る こ と が 多 い ． OpenvSwitch を 用 い る と ， PIF (Physical Interface) と OpenvSwitch が接続する．また，Open vSwitch は VIF (VirtualInterface) を介して VM と接続する．Open vSwitch を用(c) メッセージ通信
仮想マシンの起動，停止等，クラウド利用者によるさまざまな制御メッセージを送受信する．
(2) Object Storage(Swift)：利用可能な仮想マシンの VMいることで，VM と PIF 間のスイッチングを行うことが可能になる．

イメージを保管する．
(3) Image Registry（Glance）：Compute が決定した物理マ
シンや VM イメージの内容に基づき，VM イメージを

4.2.4 Open vSwitch

また Open vSwitch のトネリング機能を用いて，仮想ネットワークを作成することができる．これにより，既存のネットワーク構成を変更することなく，遠隔地へのObject Storage から読み出し物理マシンに送信する．
(4) Identity Service(Keystone)：クラウド利用者やクラウド管理者の ID，パスワードを管理する．また，個人認証

および各コンポーネントの処理内容確認を行う．

cord Examination）が組み込まれている． GRE トンネリン(5) Dashboard(Horizon)：クラウド利用者に WebGUI を提供する．
OpenStack の構成を図 5 に示す．

グを用いて，Open vSwitch 同士でライブマイグレーションを実行する[5]．

6.2

OpenStack

システムの実行のシーケンスを図 7 に示す．
OpenStack のコンポーネントである Compute がマイグ

(2) Object Storage (Swift)(4) Identity Service(Keystore)(3) Image Registry (Glance)(1) Compute (Nova)

レーション要求を受け取る．次に，移動先の物理マシンを決定し，移動先の仮想マシンを起動する．
Quantum サーバは，起動された Xen の VIF 情報を取

(5) Dashboard (Horizon)

図 5 OpenStack のアーキテクチャ

アプローチ

5

システムの挙動

本稿では OpenStack，OpenFlow を用いて，ソフトウェアによる仮想ネットワークを構築することで，簡易なオペレーションのマイグレーションを実現するアーキテクチャを提案する．
OpenFlow を用いることで，L2 ネットワークを意識せずに マ イ グ レ ー シ ョ ン を 実 現 す る こ と が で き る ． OpenvSwitch 同士のトンネリングを用いた仮想ネットワークを構得し，OpenStack が Open vSwitch のポートと VIF を接続する．コントローラは，Quantum サーバから VIF 情報を取得し，移動先と移動元の Open vSwitch 間で GRE トンネ
リングを用いて， ライブマイグレーションを実行する．
Quantum 移動元
移動元
Xen
Open vSwitch
Server

VIF情報
取得

Xenの起動移動元Open vSwitchの起動

6.1

システム構成NetworkMigration指示

ネットワーク情報取得
NFS

Quantum
DB
Common-rpc
TremaController

Agent

VIF情報
取得

VIF情報送信Open vSwitch
へVMと接続指示
接続

トンネルの設定

VMのマイグレーションを指示
VMをライブマイグレーション
VMの削除

図 7 マイグレーションのシーケンス図

システム構成を図 6 に示す．
QuantumServer
Quantum Plugin

Xenの起動移動先Open vSwitchの起動

GREトネリング指示のネットワーク接続を行うことができる．そのため，容易にマイグレーションを行うネットワークが構築できる．

提案アーキテクチャ

移動先
移動先
Open vSwitch
Xen

OpenStack

VIF情報送信

築し，同一 LAN 内と同様にマイグレーションを実行する
ことができる．
また，Quantum サーバが Open vSwitch と仮想マシン

6TremaController

VM
VIF

Open vSwitch
Xen

OpenStackNova
libvirt ovs driver

Agent
GRE
Live Migration

VM
VIF

7

プロトタイプ7.1

プロトタイプの構成

Xen を起動した移動元，移動先ホストにおいて，OpenvSwitch を利用する．移動元ホストにおいてはゲストを起動する．また，Xen は NFS サーバを用いてゲスト OS のディスクデータを共有する．コントローラとなるホスト上でTrema を利用し，Open vSwitch と接続する．クライアントはゲストに接続する．プロトタイプの構成を図 8 に示す．
マイグレーショ ン指示

Open vSwitch
Xen

移動元ホスト

図 6 システム構成

Open vSwitch

し， Open vSwitch を制御できる．Quantum サーバはOpenStack と連携し，起動された仮想マシンの VIF 情報を取得，仮想ネットワークの構成，機器の接続を行う．
コントローラは，Quantum サーバから VIF 情報を取得

Open vSwitch はオープンソースの仮想ソフトウェアスイッチであり，トンネリングプロトコルの GRE（Graduate Re-ホストOS
VM

Open vSwitchXen(Hyperviser)
ハードウェ アコントローラは Quantum サーバと REST を用いて連携する．そして，コントローラから Open vSwitch へ指示される移動先仮想マシンの VIF 情報は，OpenFlow Protocolによって定義される．

移動先ホストホストOS

コントローラVM

Xen(Hyperviser)
ハードウェ アクライアントTrema

NFSサーバNFS Server

L2スイッチ機能

図 8 プロトタイプの構成

7.2

コントローラの構成

Trema を用い，L2 スイッチと通信量測定機能を持つコントローラを開発した．コントローラの構成を図 9 に示す．

ため時間がかかる．また，マイグレーション中，クライアンコントローラ (Trema)

スイッチ(Open vSwitch)
コントローラ本体

Traffic Monitor
クラス

FDBクラス

アドレス記録Conterクラス

通信量記録

9

図 9 コントローラの構成

7.3

コントローラの振る舞い

このコントローラを用いた振る舞いを図 10 に示す．
host1

host2

スイッチ

Traffic Monitor

宛先 = 0x2

FDB

Counter

記録「ポート番号1はMACアドレス0x1」

packet-in

パケット送信「宛先ポート番号は？」ポート番号1以外に packet-out
FLOOD
パケット転送host1のカウントを進める「不明」

パケット受信
記録「ポート番号2はMACアドレス0x2」

packet-in「宛先ポート番号は？」ポート番号1にパケット転送「1番」

packet-mod

パケット受信host2のカウントを進める

フローエントリに従ってスイッチから転送する

プロトタイプの実行結果確認した．

プロトタイプの実行時間

ライブマイグレーションとブロックマイグレーションの処
理時間を比較した．メモリ量は 512MB として測定し，HDD はデータ量に応じて 4 通り測定した．図 11 にその結果を示す．
140
ブロッ クマイグレーション

100

y = 0.023x + 22.93

転送時間 [s]80604002000

3000

4000

メモリ量 [MB]図 11 マイグレーション完了時間の比較

8継続性を確認する．

11 まとめ本研究では OSS のみを用いたアーキテクチャを提案した． Open Flow を用いて，ソフトウェアによる仮想ネットワークを構築し，Open Stack を用いて簡易なオペレーションでマイグレーションを実現する．また Quantum がOpenStack と連携することで，遠隔マイグレーションにおけるネットワーク構成を行い，マイグレーション後でも自動的にネットワークを構築できる．

[1] C．Clark，et al.，Live Migration of Virtual Machines，
Proc. NSDI ’05，May 2005，pp. 273-286．

201000

仮想ネットワークを構築し，遠隔ライブマイグレーションを実現する．
(2) 通信継続性を確認
遠隔マイグレーションにおけるの通信継続性を確認す

参考文献

y = 460

ネットワークを自動構成できるため，システムの運用が容易になる．

また，Open vSwitch 同士がトネリングを行いライブマイグレーションが可能になり，マイグレーション後も通信経路を確保する．

ラ イブマイグレーション

120ションを行うネットワークを構築できる．また，従来の遠隔ライブマイグレーションアーキテクチャよりも，短い処理時間でマイグレーションを完了することができる．さらに，る．遠隔ライブマイグレーションでは共有サーバが LAN外に存在するため，LAN 内のみの通信よりも遅延が発生する．マイグレーション中やマイグレーション後の．通信

プロトタイプを用いて，Trema を用いた仮想ネットワー
ク環境の下，VM のライブマイグレーションが行えることを

7.5

本研究では OSS のみで実現する，遠隔ライブマイグレーションアーキテクチャを提案した．そのため，ライセンス費用などをかけずに，低コストで遠隔ライブマイグレー(1) 遠隔マイグレーションの実現
Open vSwitch の機能である GRE トネリングを用いて

図 10 コントローラの振る舞い

7.4

考察

10 今後の課題

宛先 = 0x1
パケット送信トは VM にアクセスすることはできない点がある．

評価ライブマイグレーション時間はメモリデータ同期のため再転送を行うが，マイグレーション中のクライアントは VMにアクセスが可能である．ブロックマイグレーションはメモリデータを一斉に転送するが，ディスクデータも転送する[2] 宮本 久仁男，ほか，Xen 徹底入門 第 2 版，翔泳社，2009．
[3] 日本 OpenStack ユーザ会，http://openstack.jp/．
[4] OpenFlow，http://www.openflow.org/．
[5] P．S．Pisa，et al.，OpenFlow and Xen-Based Virtual
Network Migration ，Proc. IFIP Advances Information and Communication Technology，Sep. 2010，
pp. 170-181．