オープンなIaaSプラットフォーム構築の本命といわれるOpenStack。そのネットワーク部分の管理を担うコンポーネントであるNeutronはどのようなものでしょうか。基本的な構成や内部の動作、実践的なネットワークの構成方法を解説します。
ユニアデックスでSDNエバンジェリストを担当している吉本です。今回から本連載を担当いたします。よろしくお願いいたします。
現在、オープンなIaaSプラットフォーム構築基盤として「OpenStack」が注目を集めています。OpenStackは、さまざまなソフトウェアモジュールを組み合わせてクラウド基盤を実現しています。例えば、インスタンス(仮想サーバー)の制御を行う「Nova」、WebGUIを実現する「Horizon」、ストレージの制御は「Cinder」や「Swift」などを組み合わせています。
ネットワークも同様であり、2014年11月現在、OpenStackでネットワークを制御するには、以下の二つのソフトウェアのいずれかを選択することになります。
「Nova-Network」はOpenStack開発当初から存在しており、シンプルなネットワーク構成のみをサポートするモジュールです。「Neutron」はシンプルなネットワーク構成だけでなく、プラグイン機能を通じてSDNコントローラーなどの外部ネットワーク製品と連携し、多くのシステム要件を満たす複雑なネットワーク構成をサポートします。
本連載は、このNeutronについてより深く理解していただくことを目的としています。まず、第1回はNeutronが構成できるネットワークのうち、基本的なネットワークの内部構造を解説します。第2回ではNeutron自身の内部動作をステップごとに解説します。第3回ではSDNプラグインを用いた複雑なネットワーク構成を解説する予定です*。
* なお、本連載は日本仮想化技術主催のOpenStack最新情報セミナー(2014年10月8日開催)の内容を元にしており、OpenStackの9番目のリリースである「Icehouse」をベースとしています。2014年10月中旬に公開された10番目のリリースである本稿執筆時点での最新版「Juno」でも基本実装に大きな変更はありませんが、オプション機能のDVR(Distributed Virtual Router)を有効にするとComputeノードでルーターが動作するなど一部実装が変更されています。JunoでのNeutron実装については連載第2回で解説を予定しています。
Nova-Networkはその名の通り、インスタンス(仮想サーバー)の実行をつかさどる「Nova」が提供するネットワーク機能です。NovaはOpenStackでも最古参となるプロジェクトであり、その意味でNova-Networkは旧来からあるネットワーク機能です。OpenStackのマニュアルには、Nova-Networkを「“レガシー”ネットワーク」と紹介しているほどです。
対して、NeutronはNova-Networkを置き換えるべく新しく作られたプロジェクトで、当初は「Quantum」という名称でした。商標権の問題から、2013年時点でNeutronと名前を変えています。さらに、OpenStackの7番目のリリースである「Havana」(2013年10月)からは、OpenStack開発プロジェクトの中でも「コア」プロジェクトとして位置付けられています。
Neutronが提供するネットワーク機能は、非常に高度なものを目指しており、テナント分割や、GREやVXLANなどのL3トンネリングをサポート、LBaaS(Load Balancer as a Service)、VPNaaS(VPN as a Service)、FWaaS(Fire Wall as a Service)、分散ルーティング機能などの実装を行っています。また、各SDNベンダーがNeutronと連携するためのプラグインを用意しており、より複雑で高度なネットワーク構成を行うことができるようになっています。
2014年秋にパリ(フランス)で行われた「OpenStack Summit」で発表されているサーベイ結果では、プロダクション環境の半数以上でNeutronが採用されており、Nova-Networkを置き換える存在としてNeutronが大きな位置を占めていることが分かります。
このように、OpenStackにおけるネットワーク機能は、大きな流れとしてはNova-NetworkからNeutronへと移行していく情勢となっています。現状のNeutronは発展途上であり、一方のNova-Networkは十分に「枯れて」いて動作実績やWeb上での情報も豊富です。しかし、これからOpenStackを始めるのであれば今後の主流となるであろうNeutronをお勧めします。
それでは、Neutronの機能と内部構造を解説していきます。
OpenStackのネットワークを語る上でまず避けて通れないのは「マルチテナント」です。OpenStackは複数のテナントをサポートし、各テナントに対してそれぞれネットワークを提供します。マルチテナントネットワークの要件を明確にするため、まずは物理環境で実現するには何が必要かを考えてみましょう。
ネットワークの観点から見たテナント分離とは、各テナントに専用のネットワークを設け、他のテナントとは完全に分離したネットワーク環境を用意することです。完全に分離することで、例えば、全てのテナントが192.168.0.0/24という重複したネットワークを利用しても、問題なく動作します。この分離を実現することで、各テナントにネットワーク管理を委譲することができます。
管理委譲されたネットワークセグメントには、独自のDHCPサーバー、DNSサーバーが必要になります。また、上記のようにアドレスが重複した各テナントが外部ネットワークとの間で通信するには、NAT処理のできるルーターが必須です。さらに、これらのルーターやサーバーを接続するスイッチやケーブルが必要になります。
要件 | 機能 |
---|---|
テナント分離 | テナント間での厳密なネットワーク分離 |
テナントへのネットワーク管理委譲 | テナントごとに独立したDHCPサーバー、DNSサーバーの提供 |
テナントと外部ネットワーク間の通信 | マルチテナントに対応した外部接続用ルーターやNAT |
その他 | 各サーバー、ルーター間の接続 |
Copyright © ITmedia, Inc. All Rights Reserved.