(57)【特許請求の範囲】
【請求項１】
仮想ネットワークの性能条件が与えられ、該性能条件を満たす物理ノード配置、および、物理リンク配置の組が複数存在する場合に、該物理ノード又は該物理リンクの少なくとも一方のコストが最小となる組を選択する仮想ネットワークの物理ネットワークへの配置装置であって、
Cycle構造を有する仮想ネットワークの仮想ノードのリスト（仮想ノードリスト）を格納した仮想ノードリスト記憶手段と、
前記仮想ノードリストを読み出して、前記仮想ネットワークを最小次数に応じて誘導部分グラフに分けるグラフ分割手段と、
次数の低い（小さい）誘導部分グラフから先に配置計算を行う簡約処理手段と、
を有し、
前記簡約処理手段は、
複数の仮想ノードからなる誘導部分グラフＨと、該誘導部分グラフＨを包含する誘導部分グラフＫを既存の方法により配置計算し、該誘導部分グラフＨの物理ノードへの配置の組Ｚが、該誘導部分グラフＫから該誘導部分グラフＨを除いた誘導部分グラフの物理ノードへの配置のうち、最小コストを与える組Ｙを決定する際に、該誘導部分グラフＫを該誘導部分グラフＨに置き換える手段を含む
ことを特徴とする仮想ネットワークの物理ネットワークへの配置装置。
【請求項２】
前記簡約処理手段は、
前記仮想ノードリストの仮想ノードの次数の最小値が仮想ノードの次数の最大値と異なり、かつ、該仮想ノードリストの仮想ノードの次数の最小値が１である場合は、Tree構造を有する誘導部分グラフ、ノードとリンクが直線的に接続されたLine構造を有する誘導部分グラフ、１つのノードに３つ以上のノードがリンクで直接接続されたStar構造を有する誘導部分グラフの簡約処理を行う第１の簡約処理手段と、
前記仮想ノードリストの仮想ノードの次数の最小値が仮想ノードの次数の最大値と異なり、かつ、該仮想ノードリストの仮想ノードの次数の最小値が２である場合は、次数３以上の誘導部分グラフが一つ存在するかもしくは存在しないCycle構造の簡約処理、及び、次数３以上の仮想ノードが２つ以上存在するCycle構造の簡約処理を行う第２の簡約処理手段と、
前記仮想ノードリストの仮想ノードの次数の最小値が仮想ノードの次数の最大値と異なり、かつ、該仮想ノードリストの仮想ノードの次数の最小値が３である場合には、高次数の誘導部分グラフの簡約処理を行う第３の簡約処理手段と、
前記仮想ノードリストの仮想ノードの次数の最小値が仮想ノードの次数の最大値と等しい場合は、フルメッシュ構造の誘導部分グラフの簡約を行う第４の簡約処理を行う第４の簡約処理手段と、
を含む請求項１記載の仮想ネットワークの物理ネットワークへの配置装置。
【請求項３】
前記第１の簡約処理手段は、
次数１の仮想ノードとその接続仮想リンクを全て取り除く操作を繰り返して残る次数２以上の仮想ノードであり、かつ、次数１の仮想ノードとその接続仮想リンクを全て取り除く操作を行う前にTreeが接続されていた仮想ノードを根とするTreeを選択し、配置計算により該根の全ての候補となる物理ノードへの経路の最小コストを求め、該最小コストの物理ノードを一次元配列として記憶手段に格納する手段を含む
請求項２記載の仮想ネットワークの物理ネットワークへの配置装置。
【請求項４】
前記第２の簡約処理手段は、
次数３以上の仮想ノードが一つ存在するか、または、存在しないCycle構造において、
次数３以上の仮想ノードが一つ存在する場合は、該仮想ノードを起点仮想ノードとし、存在しなければ任意の仮想ノードを起点仮想ノードとし、該起点仮想ノードに割り当てる物理ノードを一つ選択する手段と、
前記起点仮想ノードから２つの方路のうち、任意の方路を選択し、該起点仮想ノードを起点とする周回路について、配置計算により最小コストとなる物理ノードの組を求める処理を、該起点仮想ノードの割り当て候補となる物理ノードに対して繰り返す手段と、
前記起点仮想ノードの割り当て候補の物理ノードに対する最小コストを一次元配列として記憶手段に格納する手段を含む
請求項２記載の仮想ネットワークの物理ネットワークへの配置装置。
【請求項５】
前記第２の簡約処理手段は、
次数３以上の仮想ノードが２つ以上存在するCycle構造において、
次数２の仮想ノードのLineの両端となる次数３以上の仮想ノード２つをそれぞれ起点仮想ノードＡと起点仮想ノードＢとする手段と、
前記起点仮想ノードＡへの配置候補となる物理ノードを一つ選び、前記起点仮想ノードＢに向かう方路について、配置計算により最小コストを計算する処理を該起点仮想ノードＡへの配置候補となる物理ノード全てに対して行う手段と、
前記起点仮想ノードＡと前記起点仮想ノードＢへの物理ノード配置の組に対する最小コストを２次元配列として記憶手段に格納する手段を含む
請求項２記載の仮想ネットワークの物理ネットワークへの配置装置。
【請求項６】
前記第３の簡約手段は、
最低次数の仮想ノードを簡約仮想ノードとして一つ選択し、該簡約仮想ノードの接続先仮想ノードから物理ノード配置の組を一つ選択し、該物理ノード配置の組から配置計算により最小コストを与える該簡約仮想ノードの物理ノード配置を一つ選択する処理を、全ての物理ノード配置の組に対して行い、各組に対するコストをＤ次元配列として記憶手段に格納する手段を含む
請求項２記載の仮想ネットワークの物理ネットワークへの配置装置。
【請求項７】
前記第４の簡約手段は、
仮想ノードを一つ選択し、該仮想ノードを中心とするStar構造とみなして、配置計算により最小コストを与える物理ノードの組を算出する処理を全ての仮想ノードに対して行い、最小コストを|VL|個の一次元配列として記憶手段に格納する手段を含む
請求項２記載の仮想ネットワークの物理ネットワークへの配置装置。
【請求項８】
仮想ネットワークの性能条件が与えられ、該性能条件を満たす物理ノードの組が複数存在する場合に、該物理ノードのコストが最小となる組を選択する仮想ネットワークの物理ネットワークへの配置方法であって、
Cycle構造を有する仮想ネットワークの仮想ノードのリスト（仮想ノードリスト）を格納した仮想ノードリスト記憶手段と、
グラフ分割手段と、簡約処理手段と、を有する装置において、
前記グラフ分割手段が、前記仮想ノードリストを読み出して、前記仮想ネットワークを低次、高次の誘導部分グラフに分割するグラフ分割ステップと、
前記簡約処理手段が、複数の仮想ノードからなる誘導部分グラフＨと、該誘導部分グラフＨを包含する誘導部分グラフＫを既存の方法により配置計算し、該誘導部分グラフＨの物理ノードへの配置の組Ｚが、該誘導部分グラフＫから該誘導部分グラフＨを除いた誘導部分グラフの物理ノードへの配置のうち、最小コストを与える組Ｙを決定する際に、該誘導部分グラフＫを該誘導部分グラフＨに置き換える簡約処理ステップと、
を行うことを特徴とする仮想ネットワークの物理ネットワークへの配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ネットワークの物理ネットワークへの配置装置及び方法に係り、特に、仮想ネットワークの性能条件が与えられ、当該性能条件を満たす物理資源の組が複数存在する場合に、物理資源の使用量、もしくは物理資源を使用する際の費用（コスト）が最小となる組を選択するための仮想ネットワークの物理ネットワークへの配置装置及び方法に関する。
【背景技術】
【０００２】
従来、資源要求量を満たす物理ノードと物理リンクを選択して仮想ネットワークを生成する方法として、仮想ネットワークを誘導部分グラフに分けて配置計算を行うことで計算量を低減する方法である、漸次的簡約解法がある（例えば、非特許文献1参照）。
【０００３】
以下に、漸次的簡約解法について説明する。
【０００４】
なお、以下では、物理ノードと物理リンクは複数種類の資源を持ち、例えば、物理ノードではプロセッサ、揮発メモリ、不揮発ストレージ、周辺機器などを有し、物理リンクではキュー、信号周波数、タイムスロットなどがあり得る。また、プロセッサなどは命令セットなどによっても資源の種類が細分化され得る。要求される種類の資源を持たない物理ノードもしくは物理リンクは当該資源の資源量が０であることと等価に扱われる。
【０００５】
また、仮想ネットワークが使用するリソース量（例えば、物理リンク数）、もしくは、その量に応じて必要なコストをなるべく少なくするように仮想ネットワークの物理ネットワークへの配置を決定したい（以降では、目的関数コストで統一するものとする）。
【０００６】
当該解法では、例えば図１に示す仮想ネットワーク例aが与えられ、当該仮想ネットワーク例aを図１に示す物理ネットワーク例bに配置する場合において、コストが最小となる物理ノード（及び物理リンク）配置の組を計算するにあたり、仮想ネットワーク例aを、仮想ノードｖ６をRoot（根ノード、もしくは根）とするTree構造として捉え、図２（Ａ）、（Ｂ）に示すように、Line構造とStar構造といった、Tree構造よりも最小コストを与える物理ノード配置の組を計算するコストが小さな誘導部分グラフに分解し、それぞれの誘導部分グラフについて最小コストを与える物理ノード配置を計算して、それら誘導部分グラフ毎に算出された最小コストを与える物理ノードの配置を統合することを繰り返すことで、Tree構造の最小コストを与える物理ノード配置の組をそのまま計算するよりも少ない計算量で、最小コストを与える物理ノード配置の組を算出する。なお、図２の各矢印の意味は、ある仮想ノード（例えば、図２（Ａ）の仮想ノードｖ３）について、矢印の先が指し示す配置候補の物理ノード（例えば図２（Ａ）の仮想ノードｖ３の配置候補の物理ノードｐ３）を、当該仮想ノードの配置先として選択した場合に、矢印の元は、当該仮想ノードの隣接仮想ノード（例えば、図２（Ａ）の仮想ノードｖ２）の候補最小コスト（例では、最小ホップ数）の物理リンクを与える物理ノード配置の組を示す。
【０００７】
図２（Ａ），（Ｂ）の各誘導部分グラフについて最小コストを与える物理ノード配置の組を算出し、更にｖ５とｖ６における最小コストを与える物理ノード配置の組を算出することで、最小コストを与える根（ｖ６）の物理ノードが算出され、これによって、最小コストを与える仮想ネットワークaの物理ノード配置の組が全て決定する。最小コストを与える根の物理ノードが最小コストの経路となる。｜VP|を物理ノード数、｜EL|を仮想リンク数とすると、この当該解法の計算量はO（|VP|2|EL|）となる。ただし、当該解法は、事前に全ての物理ノード間のコスト計算が必要であり、その計算量はＯ(|VP|3)となる。
【０００８】
以下に、仮想ネットワークは図１の仮想ネットワーク例aを例とし、物理ネットワークは図１の物理ネットワーク例ｂを例として、図２の仮想ノードｖ１、ｖ２、ｖ３、ｖ４、ｖ５に対する漸次的簡約解法について詳細に説明する。
【０００９】
なお、Tree構造はどの点を根としても必ずTree構造となることに留意されたい。
【００１０】
ここでは、事前準備として、図１の物理ノード間のコストの表のように、全ての物理ノード間の最小コストを与える経路をdijkstra法などにより予め計算しておくものとする。当該解法は以下の４つの手順からなる。
【００１１】
（１）まず、仮想ネットワーク（例えば図１の仮想ネットワーク例ａ）から任意の仮想ノード（例えば図１のｖ６）を選択して根とする。
【００１２】
（２）最小コストを与える物理ノード配置の計算が未完了の仮想ノードの集合とそれらの仮想ノードの隣接仮想ノードの集合からなる誘導部分グラフにおいて、次数１の仮想ノードと次数２の仮想ノードのみの連結からなる構造（Line構造）の誘導部分グラフのそれぞれに対し、最小コストを与える物理ノード（および物理リンク）配置を計算する。
【００１３】
（３）最小コストを与える物理ノード配置の計算が未完了の仮想ノードの集合とそれらの仮想ノードの隣接仮想ノードの集合からなる誘導部分グラフにおいて、次数１の仮想ノード複数と次数３以上の仮想ノード一つの連結からなる構造（Star構造）の誘導部分グラフのそれぞれに対して、最小コストを与える物理ノード（および物理リンク）配置を計算する。
【００１４】
（４）上記の手順（２）と（３）を全ての仮想ノードの最小コストを与える物理ノード配置の組の計算が終了するまで繰り返す。
【００１５】
手順（２）を補足すると、葉側の仮想ノードからの根側の仮想ノードに向かい、各仮想リンク配置について、最小のコストを与える物理ノード配置の組をホップ毎に選択（等コストのものが複数ある場合はいずれかを任意に選択）していく。前ホップの最小コストの計算結果ｃ'を次ホップの最小コストｃの計算結果に利用する。コストは物理リンクのホップ数や物理リンク容量に基づく重み値、物理ノードのプロセッシング速度に基づく重み値などを様々な係数値が考えられるが、本明細書では、説明を明瞭にするために物理リンクのホップ数だけを考慮する。
【００１６】
図３のLine構造部分グラフの計算例１，Line構造部分グラフの計算例２は、ｖ１→ｖ２の仮想リンク配置と、ｖ２→ｖ３の仮想リンク配置について、物理ノード（および物理リンク）配置の組に対するコストを計算した結果を例示したものであり、例えば仮想ノードｖ１とｖ２の組への物理ノード配置を、物理ノードｐ６とｐ４にそれぞれした時（図３のLine構造部分グラフの計算例１のハッチ部分）の物理ノード間（物理リンク）のコストは、図１の物理ノード間のコストの表の物理ノードｐ６とｐ４の間のコストより３が入力される。仮想ノードｖ２の配置を物理ノードｐ２に固定して、仮想ノードｖ１の物理ノード配置のうち最小コストのものを選択すると、ｐ６となる。仮想ノードｖ２の配置を物理ノードｐ３に固定して、仮想ノードｖ１の物理ノード配置のうち最小コストのものを選択する場合のように、候補となる物理ノードの複数が最小コストとなるような場合には、いずれかを任意に選択し、例えば本明細では物理ノード名の下付き文字が小さいものを選択することとする。
【００１７】
仮想ネットワークの物理ネットワークへの配置に関して、明示的に指定がされない限り、前ホップと次ホップの仮想ノード同士は、別の物理ノードに割り当てる。つまり、仮想ネットワークの物理ネットワークへの配置を計算するアルゴリズム、およびその実装装置に対して、ある複数の仮想ノードを同一物理筐体（例えば仮想マシンサーバ）の物理ノード（例えば仮想マシン）へ割り当てるための命令を与えない限り、複数の仮想ノードが同一物理筐体の物理ノードへ割り当てることは禁止し、コストの計算結果も、例えば図３Line構造部分グラフの計算例２のｖ２とｖ３をともにｐ３に配置する場合のコストの計算結果のように、ＮＡ（Not available）などを付与する。
【００１８】
物理ノードと物理リンクの資源量と仮想ノードと仮想リンクの資源要求量とを比較して、資源要求量が資源量より大きくなるような組は割り当て候補から除外する。
【００１９】
手順（３）を補足すると、根側の仮想ノードで次数３以上のものに直結する葉側の仮想ノードで次数１のもの全ての仮想リンク配置について、最小コストを与える物理ノード配置の組を選択（等コストのものが複数ある場合はいずれかを任意に選択）する。
【００２０】
図３のStar構造部分グラフの計算例は、仮想ノードｖ５の物理ノード配置をある物理ノード（例えばｐ５）に固定した時に、ｖ３→ｖ５の仮想リンク配置とｖ４→ｖ５の仮想リンク配置について、物理ノード（および物理リンク）の配置の組に対するコストを計算した結果を例示したものであり、例えば、ｖ３への物理ノード配置を選んだ場合にｖ１とｖ２の最小コストを与える物理ノード配置が図３のLine構造誘導部分グラフの計算例１と２によって決定しているため、これらの計算結果がｃ'として利用されており、例えば、ｖ３をｐ３、ｖ４をｐ６に配置するとそれぞれコスト９となり、それらの合計で１８のコストがかかることを示しており、例えばｖ５をｐ５に配置する場合にはｖ３とｖ４をｐ３とｐ６に配置すると最小コストであることを示している。
【００２１】
図１の仮想ネットワーク例aについて、手順の（２）と（３）を繰り返して、根の仮想ノード（ｖ６）の最小コストを与える物理ノードが決定すると、仮想ネットワーク例aの最小コストを与える物理ノード配置の組も計算過程を辿ることで決定できる。
【００２２】
隣り合った２つの仮想ノードの物理ノード配置の仕方は、｜VP|×｜VP|＝|VP|2通りであり、漸次的簡約解法において仮想ネットワークを物理ネットワークへ配置するための計算は、隣り合った２つ仮想ノード同士の配置（|VP|2通り）を仮想リンク数｜EL|回だけ繰り返すことから計算量がO（|VP|2|EL|）となり、加えて、Dijkstra法で全ての物理ノード間の最短経路とその距離・コストを予め計算しておくための計算量Ｏ(|VP|3)が必要であるため、漸次的簡約解法全体の計算量はO（|VP|2|EL|+|VP|3）となる。
【先行技術文献】
【非特許文献】
【００２３】
【非特許文献１】Khanh-Toan Tran, N. Agoulmine, Y. Iraqi, "Cost-effective complex service mapping in cloud infrastructures", Network Operations and Management Symposium (NOMS), 2012.
【発明の概要】
【発明が解決しようとする課題】
【００２４】
しかしながら、従来における漸次的簡約解法は、Tree構造、Line構造、もしくStar構造といったCycle（閉路）構造を持たないトポロジの仮想ネットワークを物理ネットワークへ配置する計算には適用できるが、Cycle構造を持つトポロジの仮想ネットワークを物理ネットワークへ配置する計算に適用しようすると計算対象の仮想ノードが循環し、計算が終了しないため適用できないという問題がある。循環を検知して計算を終了することは可能であるが、最小コストの物理ノード配置となることが保証されない。
【００２５】
図４にCycle構造のある仮想ネットワークの例を４つ示す。一般的に商用ネットワークは冗長構成を採り、図４のようなCycle構造が現れるため、仮想ネットワークの物理ネットワークへの配置アルゴリズムにおいて、Cycle構造への対応は重要な課題である。
【００２６】
本発明は、上記の点に鑑みなされたもので、Cycle構造をもつような仮想ネットワークの物理ネットワークへの配置において、仮想リンクのコストを最小化できる仮想ネットワークの物理ネットワークへの配置装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２７】
一態様によれば、仮想ネットワークの性能条件が与えられ、該性能条件を満たす物理ノードと物理リンクの組が複数存在する場合に、該物理ノードと該物理リンクのコストが最小となる組を選択する仮想ネットワークの物理ネットワークへの配置装置であって、
Cycle構造を有する仮想ネットワークの仮想ノードのリスト（仮想ノードリスト）を格納した仮想ノードリスト記憶手段と、
前記仮想ノードリストを読み出して、前記仮想ネットワークを低次、高次の誘導部分グラフに分割するグラフ分割手段と、
低次の誘導部分グラフから先に配置計算を行う簡約処理手段と、
を有し、
前記簡約処理手段は、
複数の仮想ノードからなる誘導部分グラフＨと、該誘導部分グラフＨを包含する誘導部分グラフＫを既存の方法により配置計算し、該誘導部分グラフＨの物理ノードへの配置の組Ｚが、該誘導部分グラフＫから該誘導部分グラフＨを除いた誘導部分グラフの物理ノードへの配置のうち、最小コストを与える組Ｙを決定する際に、該誘導部分グラフＫを該誘導部分グラフＨに置き換える手段を含む仮想ネットワークの物理ネットワークへの配置装置が提供される。
【発明の効果】
【００２８】
一態様によれば、仮想ネットワークの誘導部分グラフのうち、最小次数が２の仮想ノードからなるCycle構造のものについて、１仮想ノードの物理ノード配置を一つ選択して固定し、その仮想ノードから周回する方路の一方に向かって１周するように最小コストを与える物理ノード配置の組を計算することで、従来のアルゴリズムでは計算が終了しないCycle構造の誘導部分グラフのうち、最高次数が２の仮想ノードからなるものについて、最小コストを与える物理ノード配置を、計算量O（｜VP|3|EL|）にて計算することが可能となる。また、仮想ネットワークの誘導部分グラフのうち、最小次数がＤ（３以上）の仮想ノードからなるCycle構造のものについても、最低次数の仮想ノードを簡約仮想ノードとして一つ選択し、該簡約仮想ノードの接続先仮想ノードから物理ノード配置の組を一つ選択し、該物理ノード配置の組から前記配置計算により最小コストを与える該簡約仮想ノードの物理ノード配置を一つ選択する処理を、全ての物理ノード配置の組に対して行い、各組に対するコストをＤ次元配列として記憶手段に格納することによって、最小コストを与える物理ノード配置を計算量Ｏ（｜VP|D+1|EL|）にて計算することが可能となる。また、仮想ネットワークの誘導部分グラフのうち、フルメッシュ構造となるものについても、仮想ノードを一つ選択し、該仮想ノードを中心とするStar構造とみなして、最小コストを与える物理ノード配置の組を算出する処理を、全ての仮想ノードに対してそれぞれ行い、各仮想ノードを中心とするStar構造における物理ノード配置のコストの最小値を相互に比較して、コストの最小値が最も小さくなるような物理ノード配置の組を選ぶことによって、当該仮想ネットワークの誘導部分グラフの物理ノード配置の組のうち最小コストを与えるものを、計算量Ｏ（｜VP|2|EL|）にて計算できる。仮想ネットワークを次数の低い仮想ノードからなる誘導部分グラフに分け、前記最小次数に応じた誘導部分グラフの最小コストを与える物理ノード配置の組を計算する方法を順次実施し、最小コストを与える物理ノード配置の組の算出が完了した仮想ノードを当該仮想ネットワークから取り除く操作を繰り返すことで、計算量が大きな高次の仮想ノードに対する最小コストを与える物理ノード配置の組の算出の計算量を小さくすることができる。
【図面の簡単な説明】
【００２９】
【図１】仮想ネットワークの例である。
【図２】従来の漸次的簡約解法である。
【図３】従来の漸次的簡約解法によるLine構造とStar構造の誘導部分グラフの計算例である。
【図４】Cycle構造のある仮想ネットワーク例である。
【図５】本発明の一実施の形態における仮想ネットワーク配置装置の構成例である。
【図６】本発明の一実施の形態における仮想ネットワーク配置装置の全体動作のフローチャートである。
【図７】本発明の一実施の形態における次数１誘導部分グラフの簡約処理部の処理概要のフローチャートである。
【図８】本発明の一実施の形態における次数１誘導部分グラフ簡約の例（その１）である。
【図９】本発明の一実施の形態における次数１誘導部分グラフの簡約の例（その２）である。
【図１０】本発明の一実施の形態における次数１誘導部分グラフの簡約処理のTree-root判定処理のフローチャートである。
【図１１】本発明の一実施の形態における次数２誘導部分グラフの簡約処理のフローチャートである。
【図１２】本発明の一実施の形態における次数２誘導部分グラフの簡約（次数３以上の仮想ノードが一つ存在するかもしくは存在しないCycle構造の簡約）の例である。
【図１３】本発明の一実施の形態における図１１のステップ１６０の詳細フローチャートである。
【図１４】本発明の一実施の形態における次数２誘導部分グラフの簡約（次数３以上の仮想ノードが２つ以上存在するCycle構造の簡約）の例である。
【図１５】本発明の一実施の形態における図１３のステップ１６０４の処理の例である。
【図１６】本発明の一実施の形態における図１１のステップ１６６の詳細フローチャートである。
【図１７】本発明の一実施の形態における図６のステップ１７０の詳細処理（次数Ｄが３以上（高次）の非フルメッシュ構造の誘導部分グラフの簡約処理）である。
【図１８】本発明の一実施の形態における図６のステップ１８０の詳細処理（フルメッシュの簡約処理）である。
【発明を実施するための形態】
【００３０】
以下、図面と共に本発明の実施の形態を説明する。
【００３１】
本発明は、Cycle構造の誘導部分グラフの１仮想ノードの物理ノード配置を一つ選択して固定し、その仮想ノードから周回する方路の一方に向かって１周するように最小コストを与える物理ノード配置の組を計算することで、従来のアルゴリズムでは計算が終了しないCycle構造の誘導部分グラフの最小コストを与える物理ノード配置を計算できるようにするものである。
【００３２】
最初に、以下で用いる用語について説明する。
【００３３】
・Ｐ２（３）：物理ノード２を経由する場合の累積コストの値が３という意味である。
【００３４】
・コスト：リンクやノードが使う資源の量やそれを使うために掛かる費用、ホップ数（ホップ数で例示しているが、ホップ数以外であってもよい）等。
【００３５】
・リソース：CPUやメモリや帯域などの演算や通信などに必要な資源。
【００３６】
・リソースの使用量：資源を使用する量。
【００３７】
・誘導部分グラフ：グラフのノード（頂点）集合の部分集合を取り出して、両端点が取り出したノード集合に属する全てのリンク（辺）をリンク集合とするグラフ。
【００３８】
・次数：ノードに接続されたリンクの数。
【００３９】
・Cycle（Cycle構造）：ノードに接続されたリンクを折り返すことなく辿ることで元のノードにたどり着くことができるような構造を持つグラフ。
【００４０】
・Line（Line構造）：ノードとリンクが直線的に接続されたグラフ。より厳密には、２つの次数１のノードと０つ以上の次数２のノードの連結によってなるグラフ。
【００４１】
・Star（Star構造）：ある１つのノードに３つ以上のノードがリンクで直接接続されたStar構造グラフ。より厳密には、３つ以上の次数１のノードと１つ以上の次数３位上のノードの連結によってなるグラフ。
【００４２】
・Tree（Tree構造）：Cycleを持たないような２つ以上のノードからなるグラフ。Tree構造はLine構造とStar構造を包含する。  
・葉：Tree構造のグラフにおける葉（葉ノード）。
【００４３】
・根：Tree構造のグラフにおける根（根ノード）。
【００４４】
・フルメッシュ（フルメッシュ構造、もしくは、完全グラフ）：グラフの任意の２頂点間に辺があるグラフ。
【００４５】
・多重辺：２頂点間に複数の辺があるときのそれらの辺。本発明では、多重辺の仮想リンクは、それぞれの仮想リンクのコストを重ねあわせて単一辺として扱う。
【００４６】
まず、本発明の概要を説明する。
【００４７】
本発明は、Cycle構造から高次の仮想ノード（図１２のｖ１)を基準点として取り出し、その基準点から任意の方向で周回する方路（例えば、（ｖ１，ｖ２，ｖ３，ｖ１））の最小コストを計算する。最小コストの計算に際しては、基準点の候補物理ノード一つずつに対して、方路の向きへ非特許文献１のアルゴリズムを適用する。この操作により、基準点の各候補物理ノードを選択した際の最小コストを与える組（ｖ１，ｖ２，ｖ３)＝{（ｐ１，ｐ３，ｐ２），（ｐ６，ｐ４，ｐ３）}が得られる。これをｖ１の計算結果ｖ'として保存する。後述する図１２に示すように、ｖ１に他のCycle構造（ｖ１，ｖ２，ｖ５，ｖ１）が接続されている場合には、ｖ１の計算結果ｖ'を用いてｖ１に接続された残りのCycle構造を図１２の方法で逐次計算し、最小コストを与える物理ノード配置の組を算出することができる。
【００４８】
上記の処理では、非特許文献１のアルゴリズムをO（｜VP|）回繰り返すため、本発明の処理による計算量はO（｜VP|3|EL|））である。
【００４９】
図５は、本発明の一実施の形態における仮想ネットワーク配置装置の構成例を示す。
【００５０】
同図示す仮想ネットワーク配置装置は、仮想ノードリスト作成部１０、仮想ノードリスト記憶部２０、仮想ノード次数判定部３０、次数１仮想ノード簡約処理部４０、次数２仮想ノード簡約処理部５０、高次数仮想ノード簡約処理部６０、フルメッシュ処理部７０、メモリ８０を有する。メモリ８０には、１次元配列記憶領域、２次元配列記憶領域、Ｄ次元配列記憶領域、フルメッシュ物理ノード記憶領域があるものとする。
【００５１】
図６は、本発明の一実施の形態における仮想ネットワーク配置装置の全体動作のフローチャートである。
【００５２】
以下の処理を行う前に、仮想ネットワークのグラフの作成を行っておく。具体的には、仮想リンクをその両端点となる２つの仮想ノードで表したリスト形式のデータ[{仮想リンクe1の端点仮想ノードv1、仮想リンクe2の端点仮想ノードv2}，…]を何らかの記憶手段（例えば、仮想ノードリスト記憶部２０、もしくは、メモリ８０）に格納する。また、各処理部のステップに含まれる誘導部分グラフのデータや複製グラフのデータは、上記のデータ列と同じリスト形式であり、メモリ８０に保管する。
【００５３】
ステップ１１０）  まず、仮想ノードリスト作成部１０は、入力された仮想ノードの情報に基づいて仮想ノードリストを生成し、仮想ノードリスト記憶部２０に格納する。仮想ノードリストは、例えば、リスト形式のデータ[｛仮想ノード名ｖ1，仮想ノード次数3，仮想ノードスペック｝，｛仮想ノード名ｖ2，仮想ノード次数1｝，…]のような構成を有する。なお、各簡略処理部４０，５０，６０から参照され、変数（ｖ，ｖ'，ｖ"など）は各簡略処理にて生成される。
【００５４】
ステップ１２０）  仮想ノード次数判定部３０が、仮想ノードリスト記憶部２０の仮想ノードリストを読み込み、当該仮想ノードリストの仮想ノード次数の最小値と仮想ノード次数最大値が同じであるか否かを判定する。同じである場合には、ステップ１８０に移行し、異なる場合は、ステップ１３０に移行する。
【００５５】
ステップ１３０）  仮想ノード次数判定部３０は、次に、仮想ノードリストの仮想ノード度次数の最小値が"１"、"２"、または、それ以外の高次数であるかを判定し、次数＝１である場合はステップ１４０に移行し、次数＝２である場合はステップ１５０に移行し、次数＝高次数である場合にはステップ１６０に移行する。
【００５６】
ステップ１４０）  次数１仮想ノード簡約処理部４０が図５に示す処理を行う。
【００５７】
ステップ１５０）  次数２仮想ノード簡約処理部５０が、図１１に示す処理を行う。
【００５８】
ステップ１７０）  高次数仮想ノード簡約処理部６０が、図１７に示す処理を行なう。
【００５９】
ステップ１８０）  フルメッシュ処理部７０が、図１８に示す処理を行なう。
【００６０】
＜次数１仮想ノード簡約処理部４０＞
次数１仮想ノード簡約処理部４０は、Tree、Line、Starとなる誘導部分グラフを簡約する。
【００６１】
図７は、本発明の一実施の形態における次数１誘導部分グラフ簡約処理部の全体のフローチャートである。
【００６２】
ステップ１４１）  まず、次数１仮想ノード簡約処理部４０は、図８に示す簡約対象の誘導部分グラフの根(以下、Tree-root、図中Ｔ)とする。
【００６３】
1)  次数１の仮想ノードを取り除いて次数２以上となる部分（仮想ネットワークのCycle構造箇所）を取り出す。
【００６４】
2)  取り出された仮想ノードにTree、Line、Starのいずれかの誘導部分グラフが接続されている場合、その仮想ノードはTree-rootとなる。
【００６５】
ステップ１４２）  次数１仮想ノード簡約処理部１４０は、非特許文献１の技術によって簡約対象の誘導部分グラフのそれぞれにおいて、最小コストを与える物理ノード配置の組を計算する。詳細は後述する。
【００６６】
ステップ１４３）  簡約対象の誘導部分グラフをTree-rootによって置き換える。
【００６７】
図９の例では、ｖ５をTree-rootとし、Tree-root（ｖ５）を根として最小コストを与える物理ノード配置の組を計算する。Tree-rootへの割り当ての候補の物理ノードに対する最小コスト（図７のｖ５の値）を一次元配列（ｖ５'）として記憶する。
【００６８】
上記のステップ１４１の処理を詳細に説明する。
【００６９】
図１０は、本発明の一実施の形態における次数１誘導部分グラフの簡約におけるTree-root判定処理のフローチャートである。
【００７０】
ステップ１４１１）  次数１仮想ノード簡約処理部１４０は、グラフを複製（複製グラフ）し、何らかの記憶手段（例えばメモリ８０）に格納する。
【００７１】
ステップ１４１２）  仮想ノードリスト記憶部２０の仮想ノードリストを読み込んで複製し、メモリ（図示せず）に格納する。
【００７２】
ステップ１４１３）  仮想ノードリストの複製（複製リスト）の仮想ノードの次数の最小値が０，１，または、２以上であるかを判断する。１である場合はステップ１４１４に移行し、０である場合はステップ１４１８に移行し、２以上である場合はステップ１４１９に移行する。
【００７３】
ステップ１４１４）  複製リストの仮想ノードの次数の最小値＝１である場合は、複製リストから次数１の仮想ノードを一つ取り出してｖとする。
【００７４】
ステップ１４１５）  ｖに隣接する仮想ノードを複製リストにてマークする。
【００７５】
ステップ１４１６）複製グラフからｖを削除する。
【００７６】
ステップ１５１７）  複製リストからｖを削除し、ステップ１４１３の処理に戻る。
【００７７】
ステップ１４１８）  複製リストの仮想ノードの次数の最小値＝１である場合は、複製リストに含まれる仮想ノードをTree-rootと判定し、図６の処理に移行する。
【００７８】
ステップ１４１９）  複製リストの仮想ノードの次数の最小値≧２である場合は、複製リストに残った仮想ノードでマークされたものをTree-rootと判定し、図６の処理に移行する。
【００７９】
次に、次数２仮想ノード簡約処理部５０及び図６のステップ１５０の次数２誘導部分グラフの簡約処理について説明する。
【００８０】
図１１は、本発明の一実施の形態における次数２誘導部分グラフの簡約処理のフローチャートである。
【００８１】
ステップ１５１）  次数２仮想ノード簡約処理部５０は、仮想ノードリスト記憶部２０から仮想ノードリストを読み出し、複製してメモリ（図示せず）に格納する。
【００８２】
ステップ１５２）  複製リストから次数２の仮想ノードを任意に一つ選択してｖとする。
【００８３】
ステップ１５３）  ｖに隣接する二つの仮想ノードのうち一方をｖ'もう一方をｖ"とする。
【００８４】
ステップ１５４）  複製リストのｖ、ｖ'、ｖ"をマークする。
【００８５】
ステップ１５５）  上記のｖ'の次数について、ｖ'の次数が２、または、ｖ'の次数が３以上であるかを判定する。ｖ'＝２の場合はステップ１５６に移行し、ｖ'≧３である場合はステップ１６１に移行する。
【００８６】
ステップ１５６）  ｖ'＝２の場合は、ｖ'の隣接可能ノードを新たにｖ'とする。
【００８７】
ステップ１５７）  複製リストにおいてｖ'をマークする。
【００８８】
ステップ１５８）  ｖ'とｖ"の次数が等しいか（ｖ'＝ｖ"）を判定する。ｖ'＝ｖ"であればステップ１５９に移行し、ｖ'≠ｖ"であればステップ１５５に戻る。
【００８９】
ステップ１５９）  ｖ'をｕとする。
【００９０】
ステップ１６０）  次数３以上の仮想ノードが一つ存在するか、もしくは、存在Cycle構造の簡約処理を行い、ステップ１６７に移行する。詳細については、図１３で説明する。
【００９１】
ステップ１６１）  ステップ１５５において、ｖ'の次数が３以上の場合（ｖ'≧３）は、ｖ"の次数が２（ｖ"＝２）であるか３以上（ｖ"≧３）であるかを判定し、ｖ"＝２の場合はステップ１６２に移行し、そうでない場合はステップ１６５に移行する。
【００９２】
ステップ１６２）  ｖ"＝２の場合は、ｖ"の隣接仮想ノードを新たにｖ"とする。
【００９３】
ステップ１６３）  複製リストにてｖ"をマークする。
【００９４】
ステップ１６４）  ｖ'の次数とｖ"の次数が等しいか（ｖ'＝ｖ")を判定し、ｖ'＝ｖ"であれば、ステップ１５９に移行し、ｖ'≠ｖ"である場合はステップ１６１に戻る。
【００９５】
ステップ１６５）  ステップ１６１において、ｖ"の次数が３以上の場合は、ｖ'とｖ"をそれぞれ、u1、u2とし、ステップ１６６に移行する。
【００９６】
ステップ１６６）  次数が３以上の仮想ノードが２つ以上存在するCycle構造の簡約処理を行い、ステップ１６７に移行する。
【００９７】
ステップ１６７）  メモリ上の仮想ノードのリストから次数２の計算済み仮想ノードを削除する。
【００９８】
上記のステップ１６０の次数２部分の簡約を行うにあたり、次数３以上の仮想ノードが一つ存在するか、もしくは、存在しないCycle構造の簡約について図１２に沿って説明する。
【００９９】
1)  次数３以上の仮想ノードが一つ存在するか、もしくは、存在しないCycle構造において、次数３以上の仮想ノードが一つ存在する場合は、その仮想ノードを起点仮想ノードとし、存在しなければ任意の仮想ノードを起点仮想ノードとする。図１２の例ではｖ１を起点仮想ノードとする。
【０１００】
2)  起点仮想ノードへ割り当てる物理ノードを一つ選択する。図１２の例では、p1またはp6を選択する。
【０１０１】
3)  起点仮想ノードから２つの方路のうち任意の方路を選び、起点仮想ノードを起点とする周回路について、非特許文献１のアルゴリズムにより最小コストを与える物理ノード配置の組を計算する。
【０１０２】
4)  上記の2)、3)を起点仮想ノードの割り当て候補となる全ての物理ノードについて行う。
【０１０３】
5)  起点仮想ノードへの割り当て候補の物理ノードに対する最小コストを１次元配列として記憶する。
【０１０４】
図１３は、本発明の一実施の形態における図１１のステップ１６０の詳細フローチャートであり、次数２誘導部分グラフの簡約処理において、次数３以上の仮想ノードが一つ存在するか、もしくは、存在しないCycle構造の簡約処理を示す。
【０１０５】
ステップ１６０１）  次数２仮想ノード簡約処理部５０は、複製リストにてマークされた仮想ノードからなる誘導部分グラフをHとする。
【０１０６】
ステップ１６０２）  ステップ１５９におけるuへの配置候補となる物理ノードから配置計算がなされていないものを一つ選択する。
【０１０７】
ステップ１６０３）  uから２つの方路のうち任意の方路を選ぶ。
【０１０８】
ステップ１６０４）  uを起点とする誘導部分グラフHの周回路について、非特許文献１のアルゴリズムにより、最小コストを与える物理ノード配置の組を計算する。
【０１０９】
ステップ１６０５）  uへの配置候補となる物理ノードが全て配置計算済みかを確認し、計算が済んでいない場合は、ステップ１６０２に戻り、計算済みの場合はステップ１６０６に移行する。
【０１１０】
ステップ１６０６）  uへの物理ノード配置の組に対する最小コストを２次元配列としてメモリ（図示せず）に記憶する。
【０１１１】
上記の次数２誘導部分グラフの簡約処理における、次数３以上の仮想ノードが２つ以上存在するCycle構造の簡約について、図１４にその例を示す。なお、同図中の"＊"はコスト未決定を示している。
【０１１２】
1)  次数３以上の仮想ノードが２つ以上存在するCycle構造において、次数２の仮想ノードのLineの両端点となる次数３以上の仮想ノードを２つそれぞれ起点仮想ノード1と起点仮想ノード２とする。
【０１１３】
2)  起点仮想ノード１への配置候補となる物理ノード全てに対して行う。
【０１１４】
3)  2)を起点仮想ノード１への配置候補となる物理ノード全てに対して行う。
【０１１５】
4)  起点仮想ノード１と起点仮想ノード２への配置物理ノードの組に対する最小コストを２次元配列として、メモリ８０の２次元配列記憶領域に記憶する。
【０１１６】
次に、図１３における、ステップ１６０４の次数２誘導部分グラフの簡約において、次数３以上の仮想ノードが２つ以上存在するCycle構造の簡約処理において、２次元配列領域に記憶された２次元配列を用いた配置計算は、図１５に示すように、物理ノード配置の組に対するコストを計算するときにおいて、物理ノード間を直接結んだ時のコストの代わりに２次元配列記憶部５５に記憶された２次元配列を用いる。
【０１１７】
図１６は、本発明の一実施の形態における図１１のステップ１６６の詳細フローチャートであり、次数２誘導部分グラフ簡約処理において、次数３以上の仮想ノードが２つ以上存在するCycle構造の簡約を行うものである。
【０１１８】
ステップ１６６１）  複製リストにてマークされた仮想ノードからなる誘導部分グラフをHとする。
【０１１９】
ステップ１６６２）  ｕ１への配置候補となる物理ノードから配置計算がなされていないものを一つ選択する。
【０１２０】
ステップ１６６３）  誘導部分グラフHにおけるｕ１からｕ２に向かう方路について、非特許文献１のアルゴリズムにより、最小コストを与える物理ノード配置の組を計算する。
【０１２１】
ステップ１６６４）  ｕ１への配置候補となる物理ノードの組に対する最小コストを２次元配列としてメモリ８０の２次元配列記憶領域に記憶する。
【０１２２】
次に、図６のステップ１２０において、仮想ノードリストの仮想ノード次数の最小値が仮想ノード次数の最大値と異なり、かつ、仮想ノードリストの仮想ノード次数の最小値が＝３である場合に高時点仮想ノード簡約処理部６０が実行するステップ１７０の処理について説明する。
【０１２３】
図１７は、本発明の一実施の形態における図６のステップ１７０の詳細処理(次数Ｄが３以上（高次）の非フルメッシュ構造の誘導部分グラフの簡約処理)を示す。
【０１２４】
ステップ１２０において、仮想ノードリストの仮想ノード次数の最小値と仮想ノードの次数の最大値が等しく、次数（Ｄ）が３以上の場合の誘導部分グラフの簡約処理は以下のように行う。
【０１２５】
1)  最低次数Ｄの仮想ノード（図１７の例では、例えば、ｖ１）を簡約仮想ノードとして一つ選ぶ。
【０１２６】
2)  簡約仮想ノードの接続先仮想ノード（ｖ２，ｖ３，ｖ４）から物理ノード配置の組を一つ選び、そのときに最小コストを与える簡約仮想ノードの物理ノードを一つ選ぶ。
【０１２７】
3)  2)を全ての物理ノード配置の組にて行い、それぞれの組に対するコストをメモリ８０のＤ次元配列記憶領域に格納する。図１７の例では、ｖ２とｖ３とｖ４の物理ノード配置を決定するとｖ１の物理ノード配置のうち最小コストを与えるものが決定するので，そのときのコストを３次元配列として例えば、Ｃ[v2=p1; v3=p2; v4=p3]=3をＤ時点配列記憶部６５に記憶する。
【０１２８】
次に、図６のステップ１２０において、仮想ノードリストの仮想次数ノードの最小値と仮想ノード次数の最大値が等しい場合に実行されるフルメッシュ処理について説明する。
【０１２９】
図１８は、本発明の一実施の形態における図６のステップ１８０の詳細処理であり、次数Ｄが３以上のフルメッシュ構造の誘導部分グラフの簡約処理（フルメッシュ処理）の例を示す。
【０１３０】
当該ケースは、仮想ネットワークが降るメッシュ構造となる場合、もしくは仮想ネットワークの簡約を繰り返して現れた誘導部分グラフがフルメッシュ構造となる場合の簡約法である。
【０１３１】
フルメッシュ処理部７０は、配置を行う仮想ネットワークの仮想ノードを一つ選び、その仮想ノードを中心とするStar構造とみなして、非特許文献１の配置アルゴリズムを適用して最小コストを与える物理ノード配置の組を算出する。同様に他の全ての仮想ノードを中心とするStar構造に対して、非特許文献１の配置アルゴリズムを適用して最小コストを与える物理ノード配置の組を算出し、各仮想ノードを中心とするStar構造に対する最小コストを与える物理ノード配置の組によって与えられる最小コストをそれぞれ比較して、それらの最小コストのうち最も小さい組が、当該仮想ネットワークの最小コストを与える物理ノード配置の組となる。
【０１３２】
なお、このようにして簡約を繰り返してフルメッシュ構造となる仮想ネットワークをStar構造とみなした場合のスパニング部分（図１８の点線部分）のコストを計算せずともフルメッシュの最小コストを保証することができる。この場合の計算量はO（｜VP|2|EL|）となる。つまり、仮想ノード数を| VL |として、各Star構造の計算量がＯ（（| VL |−1）|VP|2）であり、それを|VL|回繰り返すため、
Ｏ（|VL|（|VL|−1）|VP|2）=Ｏ（２（（|VL|（|VL|−1））／２）|VP|2）＝Ｏ（２|EL||VP|2）＝Ｏ（|EL||VP|2）
となる。ただし、フルメッシュにおいて|VL|（|VL|−1））／２＝|EL|となることを用いた。
【０１３３】
図１８において、フルメッシュ構造の最小コストを与える物理ノード配置の組を求める場合、以下の処理を行う。以下では、図１８（Ａ）に示す仮想ネットワーク、同図（Ｂ）に示す物理ノードを用いるものとする。
【０１３４】
1)  図１８（Ａ）の各仮想ノードを中心とするStar構造とみなして、非特許文献１の配置アルゴリズムを適用し、最小コストを与える物理ノード配置の組を計算する。
【０１３５】
2)  図１８（Ｂ）の各Star構造で算出した最小コスト同士で最小なものを与える物理ノード配置の組（図１８（Ｂ）の例では、Star構造３にてコストが１２となる物理ノード配置の組）がフルメッシュ構造の最小コストを与える物理ノード配置の組となるのでそれを計算結果としてメモリ８０のフルメッシュ記憶領域に格納する。
【０１３６】
なお、図５に示す仮想ネットワーク配置装置の構成要素の動作をプログラムとして構築し、仮想ネットワーク配置装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１３７】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【０１３８】
１０  仮想ノードリスト作成部
２０  仮想ノードリスト記憶部
３０  仮想ノード次数判定部
４０  次数１仮想ノード簡約処理部
５０  次数２仮想ノード簡約処理部
６０  高次数仮想ノード簡約処理部
７０  フルメッシュ処理部
８０  メモリ
【要約】
【課題】  Cycle構造をもつような仮想ネットワークの配置において、仮想リンクのコストを最小化する。
【解決手段】  本発明は、仮想ノードリストを読み出して、仮想ネットワークを低次、高次の誘導部分グラフにし、複数の仮想ノードからなる誘導部分グラフＨと、該誘導部分グラフを包含する誘導部分グラフＫを既存の方法により配置計算し、該誘導部分グラフＨの物理ノードへの配置の組Ｚが、該誘導部分グラフＫから該誘導部分グラフＨを除いた誘導部分グラフの物理ノードへの配置のうち、最小コストを与える組Ｙを決定する際に、該誘導部分グラフＫを誘導部分グラフＨに置き換える。
【選択図】  図６【図１】
0005636078.tif 000002
【図２】
0005636078.tif 000003
【図３】
0005636078.tif 000004
【図４】
0005636078.tif 000005
【図５】
0005636078.tif 000006
【図６】
0005636078.tif 000007
【図７】
0005636078.tif 000008
【図８】
0005636078.tif 000009
【図９】
0005636078.tif 000010
【図１０】
0005636078.tif 000011
【図１１】
0005636078.tif 000012
【図１２】
0005636078.tif 000013
【図１３】
0005636078.tif 000014
【図１４】
0005636078.tif 000015
【図１５】
0005636078.tif 000016
【図１６】
0005636078.tif 000017
【図１７】
0005636078.tif 000018
【図１８】
0005636078.tif 000019