Nedia What's up!

ネディアのエンジニアによるIT技術やサービスの紹介・検証などをお届け!

第1回 MidoNetでネットワークの仮想化 ~MidoNet・ネットワークの仮想化とは~

今回からMidoNetを使用したネットワークの仮想化についてご説明致します。

~ネットワークの仮想化とは?~
「ネットワークの回線やネットワークの機器を仮想化すること。または物理的にではなくソフトウェアの制御により、ネットワークを構築すること。
例えば、1台のサーバ上に構成された複数の仮想マシンを接続するためのネットワークを論理的に構築するために必要な機器、アダプタ、MACアドレス、IPアドレスなどを自由に構成することが可能になる。サーバなどの仮想マシンの個性変更に合わせて、物理ネットワークを変更することなく柔軟にネットワーク構成を再構築することができる。」

~ITトレンドより抜粋~

これから紹介するMidoNetはネットワークの仮想化を実現するための一つの技術です。

MidoNetの特徴

  • 以前は商用だったが、2014年にオープンソース化
  • オーバーレイ型のネットワーク仮想化を実現できる。
  • 分散型の設計方針
  • MidoNetの機能をOpenstack上で利用できる
  • 完全に仮想化されたL2、L3そしてL4のネットワーキング(機能については今後紹介していきます。)

MidoNetが動作する階層を図で表しています。MidoNetの場合ハイパーバイザーKVM。クラウド管理システムにOpenstackが当てはまります。

mido3

MidoNetを構成している主なアプリケーションは下記になります。(Openstackに含まれるアプリケーションは一部を除いて省略しています)

Neutron Plugin
シンプルなネットワーク構成だけでなく、SDN(Software-Defined Network) のような複雑な構成、ネットワーク機器のベンダーなどが提供する様々なネットワーキングソリューションを利用できるプラグインです。

NSDB(Network State Database)
仮想ネットワークのトポロジ(構成)を保存しておくための場所です。ZooKeeperがこれに当たります。

Datapath
名前の通り、datapathは各ホストに存在しVM間やホスト外部のネットワークと接続されているパケットの通り道になります。

ZooKeeper
仮想ネットワークのトポロジ(構成)を保存しておくための場所です。MidoNetの特徴である分散型のアプリケーションを構築する上で必要となる同期、設定管理、グルーピング、名前管理、などの機能を提供します。ZooKeeperはOpenStackにアプリケーションとして含まれています。

Cassandra
NoSQLの1つです。NoSQLとは、幅広い種類の膨大な量のデータを高速かつ動的に整理し分析することを可能にする、非リレーショナルな広域分散データベースシステムです。

Midolman
Midolmanは各ホスト上に存在するagentで、NSDBの情報をキャッシュしており、ホスト上のVMからのトラフィックが通過するdatapathを制御します。

その他に、MidoNetを使用するためのAPI、CLIなどが用意されています。

Midonetのアーキテクチャ(構造)

実際にMidoNetを導入して仮想化した場合のイメージとして下記の図を参照ください。緑の枠で覆った部分が仮想化される範囲、VMが仮想マシンを表しています。それぞれの物理サーバの中にMidoNetがインストールされ仮想ネットワークを構成しています。VMからVMへの通信、VMから物理サーバへの通信する際に仮想ネットワークの設定を受けることができます。図の物理ネットワークの部分は仮想ネットワークの設定を受けることはできません。物理サーバの中にMidoNetとVMは共存できるようになっています。

mido04

続いて下記の図をご覧ください。MidoNetを使用して仮想化した際のネットワーク構成図を仮想構成図と物理構成図に分けて考えた場合の図です。緑枠で囲った部分に注目してください。下記の図の左側、仮想構成図を見てみると緑枠で囲った中にルータやブリッジが設置され仮想ネットワークが構築されている状態です。実際にVM同士やインターネットに通信をする場合、ルータAやルータBの設定の影響を受けることになります。ですが右側の物理構成図を見た場合、実際にはルータやブリッジは設置されておらず、MidoNetがインストールされているハードウェアで構成することができます。MidoNetで仮想化することによってルータやブリッジなどのネットワーク機器を物理的に用意せずに、仮想ネットワークで構成された機器の設定を受けることができます。

mido01

設計思想、通信の流れとしては・・

  1. ネットワーク設定(静的情報)とサービスのステート(動的情報)をMidoNetがインストールされている全マシンで共有する。
  2. 各サーバが入力パケットについて出力先(最終処理対象)ホストを確定する。
  3. そこに対してダイレクトな経路をトンネルとして作成し通信しする。
  4.  それによって土台は単なる L2 ネットワークだが、トンネル(オーバレイ)網として仮想ネットワークが構築される。

MidoNetがインストールされているサーバは、個々でネットワーク情報を持つことにより、負荷分散型のネットワークを実現しています。メリットとしては下記の通りです。

  • ネットワークのリソースを増やす場合、MidoNetをインストールしたサーバを追加すればよいため、拡張が容易。
  • 障害が発生した場合、問題となっているサーバを切り離すことができる。個々にネットワーク設定情報を持っているため影響を受けない。
  • 仮想ネットワークの全体ではなく、局所的に設定をすることが可能になる。

まとめ

MidoNet以外にもネットワークの仮想化をする技術としてOpenFlowがあります。OpenFlowにもメリット、デメリットがありますがどちらがより適しているかを考える必要があります。今回紹介したネットワークの仮想化は比較的新しい技術です。特にMidoNetに関しては情報が少ないため、これから少しでも参考になるように伝えていきたいと思います。