Tech Sketch Bucket of Technical Chips by TIS Inc.

OpenVNetの紹介

Pocket

 近年、ネットワークの構成をソフトウェアから制御するSoftware Defined Networkという考え方が広まっています。このSoftware Defined Networkを実現する方法の一つがネットワークの仮想化です。今回の記事では、物理的なネットワークの構成に縛られない、動的で柔軟なネットワークの構築を行うことができるオープンソースのネットワーク仮想化ソフトウェアであるOpenVNetについて紹介します。

OpenVNetとは

 OpenVNetとは株式会社あくしゅが公開した仮想的なネットワークを構築するためのオープンソースソフトウェアで、同じく株式会社あくしゅが公開しているオープンソースソフトウェアであるWakame-VDCの開発プロジェクトから派生したものです。Wakame-VDCはデータセンターの仮想化を行うソフトウェアで、データセンターに必要なマシン、ストレージ、ネットワークの3つの要素の仮想化を行っています。OpenVNetはこの中のネットワークに関する技術を取り出し、単独で動作するようにしたものです。OpenVNetはネットワークの設定・変更をOpenVNetが提供するAPIを通じて行うことができます。そのため、OpenVNetで作成されるネットワークはSoftware Defined Networkであるといえます。

OpenVNetの仕組み

OpenFlow

 まずはOpenVNetが仮想ネットワークを構築するために用いているOpenFlow技術について説明します。  OpenFlowはプログラムできるネットワークの実現を目的にスタンフォード大学により開発が開始され、Open Networking Foundationにより標準化が進められているプロトコルです。近年ではOpenFlowに対応したネットワーク製品もあります。OpenFlowでは従来のネットワークとは異なり、ルーターやスイッチなどの各機器で経路制御とパケット転送を行っていたものを分離し、スイッチではパケット転送のみを行い、ネットワーク上に設置されたコントローラーがスイッチの経路制御を行うことでネットワークを構築します。このOpenFlowの仕組みに対応したスイッチをOpenFlow switch、そしてコントローラーをOpenFlow controllerと呼びます。OpenFlow switchはflow tableというものを持ちます。このflow tableにはOpenFlow switchがパケットを受け取った時のそのパケットに対するアクションが記述されていて、flow tableに記述されていないパケットを受け取った場合、OpenFlow switchはOpenFlow controllerに問い合わせを行います。問い合わせを受けるとOpenFlow controllerはそのパケットに対するアクションが記述されたflowをOpenFlow switchに送り、OpenFlow switchはflow tableを更新します。このようにして構成されたflow tableをもとに、OpenFlow switchがパケットの転送を行いネットワークが構築されます。OpenFlowについて詳しくはこちらをご覧ください。

OpenVNet

 OpenVNetは以下のもので構成されます。

  • vnmgr : ネットワーク全体の構成を管理する。
  • vna : OpenFlow controllerが内包されていて、vnmgrに管理される。
  • webapi : vnmgrとの対話に用いる

 OpenVNetでは各ノードにvnaとOpenFlow switchとして動作する仮想スイッチであるOpenvSwitchを各マシンに配置します。そして、各マシンに配置されたvnaはネットワーク上のマシンのどれかに配置されているvnmgrによって管理されています。このvnmgrはデータベースによってネットワーク全体の構成を管理し、vnaやデータベースなどOpenVNetに対し何らかのアクションがあった時にこれを受けてデータベースを更新し各vnaに指示を出しネットワークの制御を行います。また、ユーザはwebapiやこのwebapiを使っているvnctlコマンドによりvnmgrに指示をだすことができます。

OVN01

OpenVNetの機能

 2015/11/5時点でのOpenVNetによって実現できる機能は以下のものになります。

完全に独立した仮想ネットワークの生成

 OpenVNetでは複数の仮想ネットワークを同じ環境に作成できます。この時に仮想ネットワークはそれぞれ独立したものとして作成できるので、同一環境上に同じIPアドレス帯域を持つ仮想ネットワークを作成できます。

MAC2MAC、GREトンネルによる通信

 OpenVNetで作成される仮想ネットワークは物理的なネットワークに関係なくL2スイッチでつながったようなネットワークを構築できます。この時、物理的なネットワークが間にインターネットやL3スイッチなどがある環境の場合、GREトンネルを用いて通信を行います。また、物理的にも同一のネットワーク間の通信の場合は高速に通信できる独自プロトコルであるMAC2MACを使用して通信を行います。さらに、GREトンネルを使うのかMAC2MACを使うのかという判断はOpenVNetが自動で行うのでユーザは環境の違いを意識せず利用できます。

仮想ルーター機能

 上記の通り、OpenVNetでは物理的なネットワーク上では同一のネットワーク上に独立した複数の仮想ネットワークを作成することができます。この仮想ネットワーク間にOpenVNetで定義した仮想のルーターを作成することができます。さらに将来的には仮想ネットワークと物理ネットワーク間のルーティングもサポートされる予定です。

セキュリティグループ機能

 仮想ネットワークの作成を行うときに、OpenVNetでは仮想のインターフェースを定義します。そして、その仮想インターフェースにはセキュリティグループに関する設定項目があり、これをtrueに設定することでセキュリティグループを使用することができます。OpenVNetのセキュリティグループはホワイトリスト方式で、ルールを定義し、それを任意の仮想インターフェースに設定することでセキュリティグループを使用できます。

OpenVNetの利点

 OpenVNetを使用することで以下のような利点があります。

物理的なネットワークの導入・メンテナンスのコストの削減

 複雑なネットワークを構成する場合、それに合わせ、様々なネットワーク機器が必要となり、また、それらのメンテナンスのために多くの労力を必要とします。しかし、OpenVNetは複雑なネットワーを仮想ネットワークで作成することができるため、物理的なネットワーク機器は少なく、またシンプルな構成でネットワークを組むことができます。また、ソフトウェアから制御できる仮想ネットワークを作成する場合、それに対応した特別なネットワーク機器が必要な場合があります。しかし、OpenVNetはネットワーク上のエッジにあるマシン上でOpenvSwitchを用いてパケットの制御を行うため、既存のネットワーク機器をそのまま活用できます。

自由かつ簡単なネットワークの組み換え

 ネットワークの組み換えを行う場合、配線を組み替えそれぞれのマシンの設定を変更する必要があります。しかし、OpenVNetにより作成された仮想ネットワークは物理ネットワークの構成に依存しません。そのため、ネットワークの構成の変更に物理的な配線の組み換えなどは必要ありません。また、OpenVNetではvnmgrがネットワークの全体を管理しています。このvnmgrとの対話のためのwebapiが用意されていて、vnctlコマンドでこれを行うことができます。そのため、OpenVNetではあらかじめネットワークの構成情報を保存しておけば、その構成への変更は素早く行うことができ、また、webapiを利用したプログラムによるネットワークの自動構築も可能です。そのため、頻繁なネットワークの組み換えや一時的な変更にも素早く、簡単に対応することができます。

最後に

 OpenVNetはSoftware Defined Networkを実現できるソフトウェアであり、これを導入することで、様々なコストを削減できる可能性があります。一方、OpenVNetは発展途上であり、最新版はこちらのgithubリポジトリで確認できます。また、OpenVNetに関する情報はまだ少ないのが現状です。しかし、OpenVNetの公式サイトにあるインストールマニュアルやこちらのテストスペックを参考にすることでOpenVNetの様々な機能を利用することができます。今回はOpenVNetの紹介を行いましたが、次回はOpenVNetの簡単な使い方について説明します。

エンジニア採用中!私たちと一緒に働いてみませんか?