<システムの一例>
以下、図面を参照して、実施形態について説明する。図1は、実施形態のシステムの一例を示している。図1のシステム1は、拠点2と局舎3とデータセンター4とのそれぞれにノードが設置されている。
ノードは、バッファを備えるコンピュータである。図1の例では、5つのノードN1〜N5が設置されている。以下、ノードN1〜N5を含むノードを総称して、ノードNと称することがある。ノードNには処理が配備される。
拠点2は、例えば企業の拠点である。拠点2のフロア1にはノードN1が設置され、フロア2にはノードN2が設置されている。局舎3は、例えば通信事業者の施設である。局舎3には、ノードN3とノードN4とが設置されている。拠点2と局舎3との間は、ネットワーク5により接続されている。
データセンター4は、例えばクラウドサービスを実現するサーバが設置された施設である。データセンター4には、ノードN5が設置されている。局舎3とデータセンター4とはネットワーク6により接続されている。
実施形態では、データセンター4に設置されるノードN5のハードウェア資源が多いものとする。局舎3に設置されるノードN3およびノードN4のハードウェア資源は、ノードN5より少ないものとする。拠点2に設置されるノードN1およびノードN2のハードウェア資源は、ノードN3およびN4よりも少ないものとする。
図1のシステム1は一例であり、システム1は図1の例には限定されない。システム1は、拠点2、局舎3およびデータセンター4以外の施設を含んでもよい。また、各施設に備えられるノードNの数は図1の例には限定されない。また、各ノードNのハードウェア資源は上記の例には限定されない。
図2は、処理の移動およびデータの流れの一例を示している。実施形態では、1つのアプリケーションの機能は複数の処理に分割されている。例えば、アプリケーションAの機能は、処理A1と処理A2と処理A3とに分割されている。また、アプリケーションBの機能は、処理B1と処理B2と処理B3とに分割されている。
図2の例では、各処理は、複数のノードに分散して配備されている。例えば、処理A1はノードN1に配備され、処理A2はノードN3に配備され、処理A3はノードN5に配備されている。また、処理B1はノードN1に配備され、処理B2はノードN3に配備されている。
例えば、アプリケーションAは、カメラ7が撮影した映像を動画データとして記憶するアプリケーションであってもよい。処理A1は、カメラ7が撮影した映像の映像データを処理A2に送信し、処理A2は受信した映像データに画像処理を行い、処理A3は画像処理が行われた映像データをノードN5の記憶装置に記憶してもよい。この場合、処理A1と処理A2と処理A3とが連携してアプリケーションAの機能が実現する。
例えば、アプリケーションBは、カメラ7が撮影したカメラ映像に基づいて年齢層を分析し、広告内容を決定する機能を実現するアプリケーションであってもよい。この場合、アプリケーションBの処理B1は、カメラ7から映像を収集し、年齢を分析する処理であってもよい。
また、処理B2は、処理B1から送信されたデータの集計を行い、年齢層に応じて広告内容を決定する処理であってもよい。この場合、処理B1と処理B2とが連携して、アプリケーションBの機能が実現する。図2の例では、処理間を移動されるデータの通信経路は実線で示される。
複数のノードに分散して配備された処理は、ノード間を移動する。例えば、ノードNの状態や処理の状態等に応じて、処理の配備先を変更した方が、システムの全体のパフォーマンスが向上する場合がある。この場合、処理はノード間を移動する。
例えば、図2の例では、局舎3のノードN3で実行されている処理B2は、データセンター4のノードN5に配備された方がアプリケーションBのパフォーマンスが向上する場合がある。この場合、処理B2は、ノードN3からノードN5に移動される。図2の例では、処理がノード間を移動する経路を破線で示している。
データの送信元の処理は第1処理の一例であり、データの送信先の処理は第2処理の一例である。第1ノードは、データの送信元の処理(第1処理)を実行するノードの一例である。第2ノードは、データの送信先の処理(第2処理)を実行するノードの一例である。第3ノードは、第2処理の移動先のノードの一例である。
例えば、図2の例の場合、処理B1は処理B2にデータを送信する。この場合、処理B1は第1処理であり、処理B2は第2処理になる。また、ノードN1が処理B1を実行している場合、ノードN1は第1ノードになる。ノードN3が処理B2を実行している場合、ノードN3は第2ノードになる。処理B2がノードN3からノードN5に移動される場合、ノードN5は第3ノードになる。
実施形態では、アプリケーションの機能が複数の処理に分割されている例について説明する。ただし、1つの処理が1つのアプリケーションであってもよい。例えば、アプリケーションAおよびアプリケーションBをそれぞれ1つの処理として、両者が連携して1つの機能を実現してもよい。
<データのオーバーフローの一例>
図3は、データがオーバーフローする場合の例とオーバーフローしない例とを示している。図3の例では、処理B1は、処理B2にデータを送信する。また、処理B2は、ノードN3からノードN5に移動されるものとする。処理の移動はフローの切り替えと称されることもある。
図3の例では、各ノードNは、所定の情報量のデータを4個分蓄積するバッファを有するものとする。処理B2がノードN3からノードN5に移動するとき、処理B1は、処理B2が移動するか否かにかかわらず、処理B2に対して、データを送信する。
処理B2は、ノードN3からノードN5に移動を開始してから完了するまで、処理B1が送信したデータを受信しない。処理B1は、処理B2が配備されていたノードN3にデータを送信する。従って、処理B1が送信したデータは、ノードN3のバッファB3に蓄積される。
処理B2の移動が完了するまで、処理B1が送信したデータは、ノードN3のバッファBF3に蓄積され続ける。バッファBFがバッファフルの状態になった後は、処理B1は、ノードN1のバッファBF1にデータを出力する。従って、ノードN1のバッファBF1にデータが蓄積され続ける。
処理B2の移動が完了する前に、バッファBF1およびバッファBF3がバッファフルになると、処理B1が処理B2に送信したデータは溢れる。溢れたデータは、廃棄される。図3の例では、処理B1が9番目に処理B2に送信したデータは、バッファBF1およびバッファBF3には蓄積されないため、溢れる。このため、溢れたデータは廃棄される。
図3のオーバーフローしない例は、データの転送経路(パスとも称される)が変更された例を示している。変更後のデータの転送経路は、ノードN2を経由した転送経路になっている。
この場合、処理B1が送信したデータは、ノードN2を経由して、ノードN3に送信される。従って、処理B1が出力したデータは、バッファBF3に蓄積される。バッファBF3の空き容量がなくなると、バッファBF3はバッファフルになる。
バッファBF3がバッファフルになると、処理B1が送信したデータはノードN2のバッファBF2に蓄積される。バッファBF2がバッファフルになると、処理B1が出力したデータはノードN1のバッファBF1に蓄積される。
図3の例の場合、バッファBF2およびバッファBF3はバッファフルになっている。ただし、バッファBF1はデータを蓄積する余裕がある。従って、処理B1が出力した9番目のデータは、バッファBF1に蓄積されるため、該データはオーバーフローしない。このため、処理B1が出力したデータは廃棄されない。
<転送制御部の一例>
図4は、転送制御部11、配備プランナ12および各ノードNの機能ブロックの一例を示している。転送制御部11は、ノード間で処理を移動するときの転送経路の変更等の制御を行う。
配備プランナ12は、各処理を各ノードNに分散して配備する。例えば、配備プランナ12は、アプリケーションのパフォーマンスが向上するように、適切なノードNにアプリケーションの処理を分散して配備する。
配備プランナ12は、処理を随時、適切なノードNに移動する制御を行う。転送制御部11および配備プランナ12は、コンピュータにより実現されてもよい。転送制御部11は、データ転送制御装置の一例である。
転送制御部11は、データ量算出部21とバッファ残量合計部22と第1の経路決定部23と第2の経路決定部24とパス変更判定部25とパス変更部26とネットワーク状態記憶部27とバッファ残量記憶部28とテーブル記憶部29とを備える。
データ量算出部21は、送信元の処理と送信先の処理とのセット(以下、処理セットと称することもある)ごとに、送信先の処理をノード間で移動する間における送信元の処理が送信先の処理に送信するデータのデータ量を算出する。この算出したデータ量は移動中蓄積データ量と称されることもある。
データ量算出部21は、処理の移動を開始してから移動が完了するまでの時間(以下、処理の移動時間と称することもある)と処理の通信速度とを積算した値を上記のデータ量としてもよい。データ量算出部21は、算出部の一例である。
データ量算出部21は、処理の移動を開始してから移動が完了するまでの間に送信元の処理が実際に送信したデータ量の値を、送信元の処理の配備先ノードから収集し、その値を上記のデータ量としてもよい。
バッファ残量合計部22は、パス変更部26が変更した転送経路の経路上の複数のノードNのバッファ残量を取得し、取得したバッファ残量を合計する。バッファ残量合計部22が合計の対象とするノードNは、処理の移動元のノードNと処理の移動先のノードNとを含む。
第1の経路決定部23は、所定の品質要件を満たすように、送信元の処理から送信先の処理にデータを移動するときの転送経路を決定する。所定の品質要件を満たす転送経路は、第1の経路の一例である。第1の経路は、品質確保型経路とも称される。
上記の品質要件としては、例えば、Quality of Experience(QoE)やQuality of Service(QoS)等がある。例えば、処理間でデータが転送されるときの遅延や帯域等は、品質要件を判定する基準となる。
実施形態では、第1の経路決定部23は、処理間でデータが転送されるときの遅延が少ない転送経路を第1の経路に決定する。送信元の処理のノードNと送信先の処理のノードNとの間には1以上の転送経路がある。
例えば、送信元の処理のノードNと送信先の処理のノードNとの間に複数の転送経路がある場合、第1の経路決定部23は、遅延が最少となる転送経路を第1の経路に決定してもよい。
第2の経路決定部24は、バッファ残量合計部22が合計したバッファ残量の合計が、データ量算出部21が算出したデータ量以上となる転送経路を決定する。この転送経路は、第2の経路の一例である。第2の経路は、バッファ量確保型経路とも称される。
第2の経路決定部24が複数の転送経路を決定した場合、所定の条件を満たす1つの転送経路を決定する。例えば、第2の経路決定部24は、上記のデータ量以上となる複数の転送経路のうち、データの通信時間が最短の転送経路を第2の経路として決定してもよい。
パス変更判定部25は、転送経路の変更を行うか否かを判定する。パス変更判定部25が転送経路の変更を行うと判定した場合、処理セットの現在の転送経路を第2の経路決定部24が決定した第2の経路に変更すると決定する。
パス変更部26は、パス変更判定部25が転送経路の変更を決定した場合、処理セットの転送経路を変更する。例えば、パス変更部26は、変更する転送経路にあるノードNに対して、転送経路の情報を送信する。パス変更部26は、変更部の一例である。
ネットワーク状態記憶部27は、ノード間のネットワーク状態をノードとノードとのセット(以下、ノードセットと称することもある)ごとに記憶する。ネットワーク状態記憶部27は、各ノードNからネットワーク状態の情報を取得するごとに情報の更新を行う。なお、図4以降では、ネットワークを「NW」と略して表記している。
ネットワーク状態は、ノードとノードとの間の接続状態を含む。各ノードNは、自身のノードNに接続されているノードNの情報をネットワーク接続情報として転送制御部11に通知する。ネットワーク状態記憶部27は、ネットワーク接続情報を含むネットワーク状態を記憶する。
次に、配備プランナ12について説明する。配備プランナ12は、処理フロー記憶部31とアプリ特性記憶部32と配備制御部33とを備える。処理フロー記憶部31は、処理セットごとに、送信元の処理と送信先の処理とをセットで記憶する。
アプリ特性記憶部32は、アプリケーションの特性を記憶する。例えば、アプリケーションの処理ごとの通信速度は、アプリケーションの特性の一例である。また、データの廃棄が許容されるか否かも、アプリケーションの特性の一例である。アプリケーションの特性は、処理の特性でもある。
例えば、装置の稼働状況を監視するアプリケーションの場合、装置に異常が生じたことを示すログデータは、廃棄が許容されない。また、統計処理を行うアプリケーションの処理の場合、分析対象のデータは廃棄が許容されない。
例えば、動画を再生するアプリケーションは、データの廃棄が許容される場合がある。動画データの一部のデータがバッファフルにより廃棄されたとしても、廃棄されたデータを再取得できる場合がある。このような場合、データの廃棄が許容される。
配備制御部33は、アプリケーションの各処理を各ノードNに配備する制御を行う。例えば、配備制御部33は、アプリケーションのパフォーマンスが向上するように、各処理をそれぞれ適切なノードNに配備する。配備制御部33は、各処理を何れのノードNに配備したかの情報を転送制御部11に出力する。
次に、ノードNについて説明する。ノードNは、移動時間計測部41とバッファ残量取得部42と転送部43とネットワーク状態計測部44とを備える。移動時間計測部41は、移動元ノードから移動先ノードに処理を移動するときの移動時間を計測する。
例えば、移動時間計測部41は、あるノードNが自身のノードNに処理の送信を開始した時刻を取得し、自身のノードNへの移動が完了した時刻を取得する。移動時間計測部41は、取得した時刻に基づいて、処理の移動時間を計測してもよい。
バッファ残量取得部42は、自身のノードNのバッファ残量を取得する。バッファ残量は、バッファの空き容量でもある。バッファ残量取得部42は、バッファ残量の情報を転送制御部11に通知する。
転送部43は、受信したデータの転送先のノードNを決定する。自身のノードNが転送経路の最後のノードである場合、転送部43は、処理のエンドポイント(例えば、Uniform Resource Locator(URL))等を決定する。
ネットワーク状態計測部44は、自身のノードNと隣接するノードNとの間のネットワーク状態を計測する。計測するネットワーク状態としては、例えば、遅延や帯域、揺らぎ等がある。ネットワーク状態計測部44は、ネットワーク状態およびネットワーク接続状態を含むネットワーク状態情報を転送制御部11に通知する。
<データ量算出の一例>
次に、図5を参照して、送信先の処理を移動する間に送信元の処理から送信先の処理に送信されるデータのデータ量を算出するフローの一例について説明する。このデータ量は、処理の移動が開始してから完了するまでの過渡期に送信元の処理が送信先の処理に送信するデータのデータ量である。
データの転送経路上にある複数のノードNのバッファ残量の合計が上記のデータ量以上であれば、バッファフルによるオーバーフローは生じない。図5の例のフローは、上記のデータ量を得るフローである。
図5の例のフローは、システム1が運用される前に行われる。従って、実際にシステム1が稼働する前に上記のデータ量の値が得られる。このため、システム1の運用を開始するときには、データ量の値は既知の値となる。
図5の例において、配備プランナ12は、ノードN1に処理B1を配備し、ノードN3に処理B2を配備している。また、処理B1は処理B2にデータを送信する。配備プランナ12の配備制御部33は、処理B2をノードN3からノードN5に移動する指示を転送制御部11に出力しているものとする。
配備プランナ12の配備制御部33は、処理フロー記憶部31が記憶している各処理フローおよびアプリケーション特性記憶32が記憶しているアプリ特性情報を転送制御部11に送信する(ステップSC1)。
配備制御部33は、上述したように、処理B1をノードN1に配備し、処理B2をノードN3に配備する(ステップSC2)。次に、配備制御部33は、処理B2の移動元のノードN3および移動先のノードN5に処理B2を移動する移動時間を計測する指示をノードN3およびノードN5に対して送信する(ステップSC3)。
ノードN3は、処理B2をノードN5に移動すると共に、移動を開始した開始時刻をノードN5に通知する。ノードN5の移動時間計測部41は、処理B2の移動が完了した時刻と通知された開始時刻との差分を移動時間として計測する。処理B2の移動先のノードN5は、処理B2の移動時間を転送制御部11に通知する。なお、処理の移動時間の計測は、上述した例には限定されない。
転送制御部11は、アプリケーションの特性を配備プランナ12から取得している。上述したように、アプリケーションの特性は、通信速度を含む。通信速度は、例えば、単位時間あたりの通信量である。
また、転送制御部11は、処理B2の移動時間をノードN5から受信している。データ量算出部21は、通信速度と移動時間とを積算する。演算結果は、上述したデータ量になる。これにより、処理B2をノードN3からノードN5に移動する間に該処理が受信するデータ量の算出が行われる(ステップSC4)。
図6は、テーブル記憶部29に記憶される各種テーブルの一例を示している。アプリ特性テーブルは、アプリケーションごとの特性を示している。アプリ特性テーブルは、配備プランナ12から送信されるアプリ特性情報に基づくテーブルである。
アプリIDはアプリケーションを識別する識別子である。なお、IDはIdentificationの略称である。廃棄要件は、廃棄を許容するか否かを示す。品質要件は、上述した品質要件である。通信速度は、アプリケーションごとの通信速度である。
処理フローテーブルは、送信元の処理と送信先の処理とを示す各処理セットをアプリケーションごとに示している。図6の例では、アプリケーションBの各処理セットのうち、データの送信元の処理B1と送信先の処理B2とを示している。
アプリケーションBは、処理B1および処理B2以外の処理を含んでいる場合がある。その場合、処理セットごとに、アプリIDがアプリケーションBの送信元処理と送信元処理とが処理フローテーブルに記憶される。処理フローは、アプリ特性情報に基づいて生成される。
データ量テーブルは、処理セットごとに、処理の移動中に流れるデータのデータ量を示すテーブルである。例えば、移動時間計測部41が計測した移動時間が2秒であり、アプリ特性テーブルのアプリケーションBの通信速度は5Mbyte/sであるものとする。この場合、処理B1および処理B2の処理セットのデータ量は、移動時間と通信速度とを積算した10Mbyteになる。
上述した各テーブルは、システム1の運用前に行われる。よって、システム1の運用を開始した後には、各テーブルには、それぞれ値が記憶されている。従って、送信先の処理を移動する間に送信先の処理に送信されるデータのデータ量はシステム1の運用前にテーブル記憶部29のテーブルに記憶される。
<第1の経路の設定の一例>
次に、第1の経路の設定の一例について説明する。上述したように、第1の経路は、送信元の処理から送信先の処理に送信されるデータの転送経路が所定の品質を満たす転送経路である。
実施形態では、第1の経路は、複数の転送経路のうち、最も遅延が少ない転送経路であるものとする。ただし、第1の経路は、遅延が最少の経路でなくてもよい。例えば、遅延が所定の値以下の転送経路のうち任意の転送経路が第1の経路であってもよい。
図7は、第1の経路の設定の一例を示すシーケンスチャートである。転送制御部11は、各ノードNからネットワーク状態を収集する(ステップSC5)。上述したように、ネットワーク状態としては、ネットワークの接続状態と遅延や帯域、揺らぎ等の状態とがある。
各ノードNのネットワーク状態計測部44は、ネットワーク状態を計測し、計測したネットワーク状態を転送制御部11に通知する。転送制御部11は、各ノードNが通知したネットワーク状態をネットワーク状態記憶部27に記憶する。
配備プランナ12の配備制御部33は、転送制御部11に各処理の配備の情報(以下、配備先ノード情報と称することもある)を通知する。転送制御部11の第1の経路決定部23は、上述した品質要件を満たす第1の経路を決定する(ステップSC6)。
図8の各種テーブルの例を参照して、第1の経路決定部23が第1の経路を決定する例について説明する。アプリ特性テーブルは、図6で説明したアプリ特性テーブルである。ネットワーク状態情報テーブルは、ノード間の遅延および接続状態を示している。接続状態は、直接接続または間接接続を示している。
直接接続は、ノード同士が直接的に接続されていることを示す。例えば、ノードN1とノードN3とは直接的に接続されている。間接接続は、他のノードNを介して、ノード同士が接続されていることを示す。例えば、ノードN1とノードN5とは、ノードN3またはノードN4を介して接続されている。
処理セット経路テーブルは、処理セットごとに、経路IDおよびバッファ不足フラグを示している。バッファ不足フラグについては、後述する。経路IDには、経路リストの中から決定された転送経路の経路IDが割り当てられる。
経路リストは、ノード間の経路の遅延を示している。経路リストは、ネットワーク状態情報テーブルに基づいて、生成される。図8の例では、ノードN1からノードN3までの転送経路の遅延は10msであり、この転送経路には、1番の経路IDが割り当てられている。
実施形態では、ノードN1からノードN3に至る転送経路は複数であるものとし、各転送経路に経路IDが割り当てられる。上述したように、ノードN1からノードN3に至る転送経路としては、ノードN1とノードN3とを直接的に接続する転送経路がある。
また、ノードN1からノードN3に至る転送経路としては、ノードN1からノードN2を経由してノードN3に至る転送経路がある。この転送経路の場合、接続状態は、間接接続になる。
また、この場合の遅延は、ノードN1からノードN2までの遅延とノードN2からノードN3までの遅延との合計である15msとなる。ノードN2を経由した転送経路にも経路IDが割り当てられる。
処理フローテーブルは、図6で説明した処理フローテーブルにノードNを関連付けたテーブルである。つまり、処理フローテーブルは、送信元の処理が配備されているノードNと送信先の処理が配備されているノードNとを示している。
上述したように、第1の経路決定部23は、遅延が最少となる転送経路を第1の経路として決定する。よって、第1の経路決定部23は、処理フローテーブルを参照して、遅延が最も少ない1番の経路IDの転送経路を第1の経路に決定する(ステップSC6)。
第1の経路決定部23は、ノードN1およびノードN3に第1の経路を設定する指示を送信する。ノードN1およびノードN3は、両者を接続する転送経路を設定する。これにより、第1の経路が設定される。
<バッファ残量不足の事前検知の一例>
次に、図9を参照して、実際にシステム1の運用を開始した後のフローにおけるバッファ残量不足の事前検知の一例を説明する。配備プランナ12の配備制御部33は、アプリケーションの処理を各ノードNに配備する。
実施形態では、配備制御部33は、アプリケーションBの処理B1をノードN1に配備し、処理B2をノードN3に配備する。各ノードNのバッファ残量取得部42は、自身のノードNのバッファ残量の情報を取得する。
各ノードNは、バッファ残量の情報を転送制御部11に通知する。各ノードNは、定期的にバッファ残量を転送制御部11に通知してもよい。各ノードNは、バッファ残量取得部42が取得する自身のノードNのバッファ残量に変化が生じたときに、バッファ残量を通知してもよい。この場合、バッファ残量に変化がなければ、バッファ残量の通知は行われない。バッファ残量の通知が行われなければ、データの通信量が低減される。
バッファ残量合計部22は、第1の経路決定部23が決定した第1の経路の転送経路上にある各ノードNのバッファ残量を合計した合計バッファ残量を算出する。データ量算出部21が算出したデータ量が合計バッファ残量を超過すると、処理を移動する際にオーバーフローが生じることを意味する(以降、オーバーフローを、バッファ残量の不足とも記す)。オーバーフローが生じると、溢れたデータは廃棄される。
転送制御部11のパス変更判定部25は、データ量と合計バッファ残量とに基づいて、バッファ残量が不足するか否かを判定する(ステップSC7)。合計バッファ残量がデータ量未満の場合、パス変更判定部25はバッファ残量が不足すると判定する。
バッファ残量が不足するとパス変更判定部25が判定した場合(ステップSC7でYES)、パス変更部26はデータの転送経路を変更する(ステップSC8)。バッファ残量が不足しないとパス変更判定部25が判定した場合、データの転送経路は変更されない。
図10は、バッファ残量が不足するか否かを判定するための各種テーブルの例を示している。上述したように、処理B1と処理B2との処理セットには、1番の経路IDが割り当てられている。1番の経路IDは、ノードN1からノードN3までの経路である。
バッファ残量テーブルは、バッファ残量記憶部28に記憶されているノードNごとのバッファ残量を示している。1番の経路IDは、ノードN1からノードN3の転送経路である。
バッファ残量合計部22は、ノードN1のバッファ残量とノードN3のバッファ残量とを合計する。図10の例の場合、バッファ残量の合計は8Mbyteになる。バッファ残量合計部22は、処理セットごとに、転送経路上のバッファ残量の合計を算出する。
現経路の合計バッファ残量テーブルは、現在の転送経路におけるバッファ残量の合計を処理セットとごとに示している。データ量テーブルは、処理セットごとに、処理を移動している間に送信元の処理から送信先の処理に送信されるデータのデータ量を示している。
パス変更判定部25は、処理セットごとに、バッファ不足が生じると判定した場合には、処理セットごと経路テーブルの処理セットおよび経路IDに対応するバッファ不足フラグを1にする。
バッファ不足フラグが1の経路IDの転送経路では、送信先の処理を移動している間にデータのオーバーフローが生じる。この場合、第2の経路決定部24は、バッファ不足が生じる処理セットのバッファ不足フラグを1にする。
<第2の経路の設定の一例>
次に、第2の経路の設定の一例について説明する。図11は、第2の経路の設定の流れの一例を示すシーケンスチャートである。転送制御部11のパス変更判定部25は、配備プランナ12から取得したアプリケーションの特性を参照して、廃棄要件が許容であるか否かを判定する(ステップSC9)。
廃棄要件が許容である場合(ステップSC9でYES)、オーバーフローが生じたとしても、データの廃棄が許容される。この場合、転送経路の変更は行われなくてもよい。この場合、データの転送経路は、第1の経路から変更されない。ただし、データの廃棄が許容される場合でも、転送経路の変更が行われてもよい。
一方、廃棄要件が許容されない場合(ステップSC9でNO)、転送経路の変更が行われる。パス変更判定部25が転送経路の変更を行うと判定した場合、パス変更判定部25は、第2の経路決定部24に第2の経路を決定する指示を出す(ステップSC10)。
第2の経路決定部24は、この指示に基づいて、第2の経路を決定する(ステップSC11)。第2の経路は、処理を移動している間に送信元の処理から送信先の処理に送信されるデータのデータ量が合計バッファ残量以上となる転送経路である。上述したように、処理B1が第1の経路で第2の経路にデータを転送する場合、処理B2をノードN3からノードN5に移動するときにオーバーフローが生じる。
これは、上述したように、処理B2を第1の経路でノードN3からノードN5に移動する移動時間とアプリケーションBの通信速度とを積算した値であるデータ量が10Mbyteであり、第1の経路の合計バッファ残量が8Mbyteであるためである。
一方、ノードN1からノードN2を経由して、ノードN3に至る転送経路の合計バッファ残量は、15Mbyteになる。よって、データ量が合計残バッファ量未満となるため、データのオーバーフローは生じない。
従って、例えば、第2の経路決定部24は、ノードN1からノードN2を経由してノードN3に至る転送経路を第2の経路に決定する。処理を移動している間に送信元の処理から送信先の処理に送信されるデータのデータ量が合計残バッファ量未満となる転送経路が複数ある場合、第2の経路決定部24は、任意の転送経路を第2の経路に決定してよい。
第2の経路決定部24が第2の経路を決定すると、決定した第2の経路にある各ノードNに対して、経路設定の指示を送信する(ステップSC12)。例えば、第2の経路決定部24が上述した転送経路を第2の経路に決定した場合、第2の経路決定部24は、ノードN1、ノードN2およびノードN3に対して、経路設定の指示を送信する。
データ量が合計残バッファ量未満となる転送経路が複数ある場合、第2の経路決定部24は任意の1つの転送経路を第2の経路に決定する。実施形態では、第2の経路を決定する方法は、2つある。
1つ目は、バッファ残量を優先し、品質要件を考慮しない方法である。この方法を残量優先型決定方法とする。2つ目は、バッファ残量と品質要件とを両立する方法である。この方法を両立型決定方法とする。
図12は、残量優先型決定方法の一例である。上述したように、処理B1と処理B2との処理セットについて、経路IDが1番の場合、バッファ不足フラグが1になっている。この場合、第2の経路決定部24は、第2の経路を決定する。
第2の経路決定部24は、バッファ残量記憶部28のノードごとバッファ残量テーブルを参照して、最もバッファ残量が大きいノードを経由する転送経路を選択する。図12の例の場合、最もバッファ残量が大きいノードは、ノードN5である。
よって、第2の経路決定部24は、ノードN5を経由する転送経路を選択する。上述したように、送信先の処理B2がノードN3からノードN5に移動される間に処理B2が受信するデータのデータ量は10Mbyteである。
従って、上記のデータ量は合計バッファ残量未満となり、オーバーフローが生じない。実施形態の場合、ハードウェア資源が最も多いノードは、データセンター4に設置されるノードN5である。
このため、ノードN1からノードN5を経由して、ノードN3に至る転送経路をデータが転送される時間は長くなる。データの転送時間が長くなると、所定の品質要件を満たさなくなる場合がある。
次に、図13の例を参照して、両立型決定方法による第2の経路の決定について説明する。送信元の処理B1はノードN1に配備され、送信先の処理B2はノードN3に配備されている。アプリケーションBの品質要件は、遅延少である。
図13には、ネットワーク状態記憶部27に記憶される各ノード間のネットワーク状態情報およびバッファ残量記憶部28に記憶されるノードごとのバッファ残量が示されている。
第2の経路決定部24は、移動先の処理B2を移動する間に処理B1が処理B2に送信するデータのデータ量が合計バッファ残量未満となり、且つ遅延が少ない転送経路を第2の経路として決定する。
第2の経路決定部24は、ノードN1からノードN3に至るまでに経由する他のノードNの数を1つずつ増やして、その中で、上記のデータ量が合計バッファ残量以下となり、且つ遅延が最少となる転送経路を第2の経路として決定する。
第2の経路決定部24が第2の経路を決定する場合、現状の第1の経路(経由段数がゼロ)では、合計バッファ残量は上記のデータ量未満となる。そこで、第2の経路決定部24は、経由段数を「1」に設定する。
経由段数が1の場合、ノードN1からノードN3に至るまでの他のノードNの経路候補としては、ノードN2、ノードN4およびノードN5を経由する3つの転送経路がある。図13の例に示すように、3つの転送経路の合計バッファ残量は、上記のデータ量(10Mbyte)を超過している。
第2の経路決定部24は、3つの転送経路のうち、遅延が最少となる転送経路を第2の経路として決定する。図13の例に示すように、ノードN2を経由する転送経路の遅延が最も少ない。
従って、第2の経路決定部24は、ノードN2を経由する転送経路を第2の経路に決定する。このとき、第2の経路決定部24は、決定した第2の経路にIDを割り当てる。図13の例の場合、第2の経路決定部24は、100番のIDを第2の経路に割り当てている。
第2の経路は、同じ経由段数の複数の経路候補のうち、遅延が最少となる転送経路には限定されない。例えば、第2の経路決定部24は、複数の経路候補のうち、合計バッファ残量が上述したデータ量以上となることを条件に、遅延が所定量以下となる転送経路を第2の経路に決定してもよい。
図14は、第2の経路の設定の一例を示すフローチャートである。図14は、両立型決定方法により第2の経路を決定するフローチャートの例を示している。第2の経路決定部24は、移動対象である処理の送信元のノードNと送信先のノードNとを抽出する(ステップS1)。
第2の経路決定部24は、図13で示した処理セットごとデータ量テーブルを参照して、送信元および送信先のノードNを抽出する。例えば、第2の経路決定部24は、移動対象である処理B2の送信元のノードN1および送信先のノードN3を抽出する。
次に、第2の経路決定部24は、経由段数を1にセットする(ステップS2)。第2の経路決定部24は、経由段数に応じて、全ての経路候補を遅延が少ない順にソートする(ステップS3)。そして、バッファ残量合計部22は、ソートした順番に合計バッファ残量を演算する(ステップS4)。
第2の経路決定部24は、ソートした順番に、現在の経由段数の経路候補の合計バッファ残量がデータ量未満であるか否かを判定する(ステップS5)。合計バッファ残量がデータ量未満でない場合(ステップS5でNO)、第2の経路決定部24は、現在の経由段数の経路候補が残っているか否かを判定する(ステップS6)。
現在の経由段数の経路候補が残っている場合(ステップS6でYES)、バッファ残量合計部22は、ソートされた次の経路候補の合計バッファ残量を演算する(ステップS7)。その後、フローはステップS5に戻る。
現在の経由段数の経路候補が残っていない場合(ステップS6でNO)、第2の経路決定部24は、現在の経由段数Nに2を加算した値が全ノード数未満であるか否かを判定する(ステップS8)。
現在の経由段数Nに加算する値である2は、送信元のノードNおよび送信先のノードNである。経由段数Nは、送信元のノードNと送信先のノードNとの間にあるノードNの数を示す。
従って、現在の経由段数Nに2を加算した値が全ノード数以上の場合(ステップS8でNO)、第2の経路決定部24は、第2の経路がないと判定する(ステップS9)。一方、現在の経由段数Nに2を加算した値が全ノード数未満の場合(ステップS8でYES)、第2の経路決定部24は、N(Nは自然数)をインクリメントする(ステップS10)。そして、フローは、ステップS3に戻る。
ステップS5において、第2の経路決定部24が経路候補の合計バッファ残量がデータ量未満であると判定した場合(ステップS5でYES)、第2の経路決定部24は、該経路候補を第2の経路として決定する(ステップS11)。
従って、第2の経路決定部24は、経由段数を1つずつ増やしながら、複数の経路候補のうち、合計バッファ残量が、処理を移動している間に送信元の処理から送信先の処理に送信されるデータのデータ量未満である転送経路を検索する。
検索の結果、複数の転送経路が該当する場合、第2の経路決定部24は、遅延が最も少ない転送経路を第2の経路に決定する。これにより、第2の経路決定部24は、バッファ残量が不足することを抑制し、且つ品質要件を満たす両立型の転送経路を第2の経路として決定する。
実施形態では、図13の例に示すように、経由段数が1の3つの経路候補のうち、バッファ残量が不足することなく、且つ遅延が最も少ない経路候補は、ノードN2を経由する転送経路である。よって、第2の経路は、ノードN1からノードN2を経由して、ノードN3に至る転送経路になる。
<処理の移動の一例>
上述した流れは、処理の移動が開始される前に行われる。次に、処理の移動の一例について説明する。図15の例に示すように、配備プランナ12の配備制御部33は、処理の移動を指示するための処理移動指示を転送制御部11に送信する。第2の経路決定部24は、上記のステップS24で第2の経路がないと判定した場合、処理セットごとに設定されるバッファ不足フラグは1になる。
第2の経路決定部24は、処理セットのバッファ不足フラグが1の場合(ステップS13でYES)、処理の移動を中止する決定を行う(ステップSC14)。従って、オーバーフローが発生することを示すバッファ不足フラグが1の場合、第2の経路決定部24が処理の移動を中止するため、データのオーバーフローが発生することが抑制される。
転送制御部11は、処理の移動を中止する移動中止指示を送信する。この通知を受信すると、配備プランナ12の配備制御部33は、処理の移動を中止する(ステップSC15)。ステップSC13でバッファ不足フラグが1でない場合(ステップSC13でNO)、フローは「X」に進む。
図16は、図15のフローの続きのフローの例を示すシーケンスチャートである。上記のように、フローが「X」に進むと、転送制御部11は、配備プランナ12に処理の移動を開始する処理移動開始指示を配備プランナ12に送信する。なお、この場合、バッファ不足フラグが1でないため、処理の移動を行っても、オーバーフローは発生しない。
そして、転送制御部11のパス変更部26は、第2の経路決定部24が決定した第2の経路の各ノードNにデータの蓄積を開始する蓄積開始指示を送信する(ステップSC16)。上述したように、第2の経路決定部24は、ノードN1からノードN2を経由して、ノードN3に至る経路を第2の経路として決定している。
従って、パス変更部26は、ノードN1、ノードN2およびノードN3に対して、蓄積開始指示を送信する。これにより、ノードN1、ノードN2およびノードN3は、自身のバッファに受信したデータを蓄積する。
配備プランナ12の配備制御部33は、処理B2をノードN3からノードN5に移動する処理移動指示をノードN3およびノードN5に送信する。この処理移動指示に基づいて、処理B2は、ノードN3からノードN5に移動する。
ノードN1に配備されている処理B1は、処理B2の移動にかかわらず、処理B2に対して、データを送信する。ただし、処理B2が移動している間は、処理B2は処理B1が送信したデータを受信しない。処理B1が送信したデータは、第2の経路のノードN1、ノードN2およびノードN3の各バッファに蓄積される。
図17は、図16のフローの続きのフローの例を示すシーケンスチャートである。図17の例で、ノードN1の処理B1は、移動前の処理B2を実行していたノードN3にデータを送信する。ノードN3のバッファBF3は、受信したデータを蓄積する。
バッファBF3がバッファフルになると、ノードN3はデータの受信を停止する(ステップSC17)。なお、処理B2の移動が完了するまでは、ノードN3はノードN5にデータの送信を行わない。
ノードN3がデータの受信を停止すると、ノードN3は、受信を停止する受信停止通知を第2の経路のノードN2に送信する。ノードN2は、受信停止通知を受信すると、処理B1が送信したデータを自身のバッファBF2に蓄積する。
処理B1を実行するノードN1は、ノードN2にデータを送信する。ノードN2のバッファBF2がバッファフルになると、ノードN2は受信を停止する(ステップSC18)。ノードN2は、データの受信を停止すると、受信停止通知をノードN1に送信する。
ノードN1は、ノードN2から受信停止通知を受信すると、ノードN1のバッファBF1に処理B1が出力するデータを蓄積する。第2の経路は、処理B2を移動している間にオーバーフローを生じない転送経路であるため、バッファBF1がバッファフルになる前に処理B2の移動は完了する。
転送制御部11は、蓄積されたデータの転送経路を設定する。処理B2はノードN3からノードN5に移動されるため、転送制御部11は、蓄積されたデータの転送経路をノードN3からノードN5までの経路に設定する。
転送制御部11は、第1の経路を設定する。第1の経路は、バッファ残量にかかわらず、所定の品質要件を満たす経路である。実施形態では、第1の経路は、データの送信元の処理B1から送信先の処理B2にデータが送信されるときに、遅延が最少となる経路である。
送信先の処理B2はノードN5に移動される。従って、送信元の処理B1はノードN1であり、送信先の処理B2はノードN3からノードN5に変更される。ノードN1からノードN5に至る転送経路は、ノードN3を経由する転送経路とノードN4を経由する転送経路とがある。
実施形態では、ノードN3とノードN4との何れの経路を経由しても、遅延は同じになる。ここでは、転送制御部11は、ノードN4を経由する転送経路を第1の経路に設定する。ただし、処理B2の移動が完了するまでは、第1の経路の設定は有効にしない。
処理B2の移動が完了すると、ノードN3およびノードN5は、配備プランナ12に処理B2の移動が完了したことを示す処理移動完了通知を送信する。配備プランナ12は、処理移動完了通知を転送制御部11に送信する。
転送制御部11は、処理B2の移動が完了したため、第2の経路上にあるノードN1、ノードN2およびノードN3に対して蓄積解除指示を送信する。この通知に基づいて、ノードN1、ノードN2およびノードN3は、それぞれのバッファBFに蓄積されていたデータを処理B2の移動先のノードN5に転送する。
ノードN3は、蓄積解除指示の通知を受信するまで、データの送信を停止している。このため、ノードN3は、自身のバッファBF3に蓄積されているデータの送信を実行しようとしても、データの送信は行われない。
例えば、ノードN3は、定期的にデータの送信の実行を試み、蓄積解除指示を受信したタイミングで、バッファBF3に蓄積されているデータをノードN5に送信してもよい。また、転送制御部11は、蓄積解除指示を第2の経路のノードN1、ノードN2およびノードN5に送信してもよい。これにより、ノードN1、ノードN2およびノードN5は、バッファBFに蓄積していたデータをノードN5に送信する。
図17の例では、ノードN3が蓄積解除指示を受信することで、ノードN3、ノードN2およびノードN1に蓄積されていたデータが順次ノードN5に送信される。これにより、移動後の処理B2は、処理B2の移動中に処理B1が送信したデータを受信する。
転送制御部11のパス変更部26は、設定していた第1の経路を有効化する。第1の経路は、事前に設定されているため、パス変更部26が第1の経路を有効化するだけで、データの転送経路が第1の経路に変更される。これにより、転送経路の切り替え時間が短縮される。
パス変更部26が第1の経路を有効化することで、ノードN5で実行される処理B2は、ノードN1で実行される処理B1が送信するデータを受信する。以降、処理B1から処理B2にデータの転送が行われる。
配備プランナ12は、処理の移動制御を行う。処理の移動が発生するよりも前に、転送制御部11が第2の経路にデータの転送経路を変更することで、オーバーフローを生じることなく、処理の移動が行われる。
<転送部の各テーブルの一例>
図18は、各ノードNの転送部43の各テーブルの一例を示している。各ノードNは、識別テーブルと転送先決定テーブルと処理振分テーブルとを有している。識別テーブルは、送信元IDと転送経路IDと廃棄要件IDと送信状態との項目を有している。
送信元IDは、データの送信元を識別する識別子である。転送経路IDは、転送経路を識別する識別子である。廃棄要件は、上述したように、廃棄が許容されるか否かを示す。送信状態は、ノードNのデータの送信が中継されている状態であるか、停止されている状態であるかを示す。
送信状態が中継の場合は、ノードNは、データの送信を行う。送信状態が停止の場合は、ノードNは、データの送信を中止する。例えば、図18の例では、送信元IDが処理A1の場合、送信状態は中継となる。
上述したように、廃棄要件が許容の場合、処理を移動している間にデータの廃棄が許容される。このため、送信元IDが処理A1の場合、オーバーフローが生じるか否かにかかわらず、送信状態は中継になる。
一方、処理B1は、廃棄要件が非許容である。従って、処理を移動している間にオーバーフローが生じないようにする。このため、処理を移動している間は、送信状態は停止になる。
転送先決定テーブルは、転送経路IDと次ノードとの項目を有している。次ノードは、次に転送されるノードを示す。転送経路IDが1番(送信元IDが処理A1)の場合、オーバーフローが許容されるため、次ノードは処理A2を実行しているノードN3になる。
転送経路IDが100番(送信元IDが処理B1)の転送経路は、オーバーフローが許容されない転送経路である。よって、転送経路は第1の経路から第2の経路に変更される。このため、ノードN1からノードN2を経由して、ノードN3にデータが転送されるように、次ノードが設定される。なお、ノードN3の次ノードである「local」は、最終ノードであることを示す。
処理振分テーブルは、転送先決定テーブルの次ノードが「local」になっているノードNにある処理にデータを振り分ける。識別子がA1であれば、最終ノードN3にある処理A2にノードN1から送信されたデータが振り分けられる。識別子がB1であれば、最終ノードN3にある処理B2にノードN1から送信されたデータが振り分けられる。
<処理移動前の転送制御部のフローの一例>
次に、処理移動前の転送制御部11のフローについて、図19のフローチャートの例を参照して説明する。転送制御部11は、配備プランナ12からアプリ特性情報を取得する(ステップS11)。
転送制御部11は、アプリ特性情報を参照して、移動する処理のアプリケーションの廃棄要件が非許容であるか否かを判定する(ステップS12)。廃棄要件が非許容である場合(ステップS12でYES)、データ量算出部21は、アプリ特性情報を参照して、処理間の通信速度を取得する(ステップS13)。通信速度は、単位時間あたりのデータの通信量である。
データ量算出部21は、ノードNの移動時間計測部41が計測した処理の移動時間を取得する(ステップS14)。データ量算出部21は、処理セットごとに、通信速度と移動時間とを積算して、送信先の処理を他のノードに移動している間に、送信元の処理から送信先の処理に送信するデータのデータ量を算出する(ステップS15)。
第1の経路決定部23は、所定の品質要件を満たすように、送信元の処理から送信先の処理にデータを移動するときの転送経路を第1の経路に決定する(ステップS16)。なお、ステップS12で、アプリ特性が廃棄許容である場合(ステップS12でNO)、ステップS13〜ステップS15は実行されない。
以上は、システム1を運用する前のフローである。次に、システム1の運用が開始される(ステップS17)。転送制御部11は、各ノードNからバッファ残量を取得する(ステップS18)。
転送制御部11は、バッファ残量を取得したノードNに廃棄要件が非許容の処理があるか否かを判定する(ステップS19)。廃棄要件が非許容の処理がない場合(ステップS19でNO)、オーバーフローが許容されるため、ステップS20以降の各ステップは実行されない。このため、フローは、ステップS18に戻る。
バッファ残量を取得したノードNに廃棄要件が非許容の処理がある場合(ステップS19でYES)、転送制御部11は、処理を移動している間にバッファ不足を生じるか否かを判定する(ステップS20)。
データの送信元の処理を実行しているノードNのバッファ残量とデータの送信先の処理を実行しているノードNのバッファ残量との合計が、ステップS16で算出したデータ量未満の場合、転送制御部11は、バッファ不足と判定する。
処理移動時にバッファ不足が生じない場合(ステップS20でNO)、ステップS21の各ステップは実行されない。処理移動時にバッファ不足が生じる場合(ステップS20でYES)、第2の経路決定部24は、第2の経路を検索する(ステップS21)。
上述したように、第2の経路を決定する方法は、残量優先型決定方法と両立型決定方法との2つがある。何れの方法でも、第2の経路は、合計バッファ残量がステップS16で算出したデータ量以上となる転送経路である。
第2の経路がある場合(ステップS21でYES)、第2の経路決定部24は第2の経路を決定する。そして、転送制御部11は、第2の経路を設定する(ステップS23)。そして、転送制御部11は、処理を移動する前であっても、設定した第2の経路に転送経路を変更する(ステップS24)。そして、フローは、ステップS18に戻る。
第2の経路がない場合(ステップS22でNO)、転送制御部11は、処理セットのバッファ不足フラグを1にする(ステップS25)。この場合、転送制御部11は、第2の経路を設定しない。
<転送制御部の処理移動時のフローの一例>
次に、処理移動時の転送制御部11のフローについて、図20のフローチャートの例を参照して説明する。転送制御部11は、配備プランナ12から配備先ノード情報を取得する(ステップS31)。これにより、転送制御部11は、処理の移動先を認識する。
転送制御部11は、移動対象の処理の廃棄要件が非許容であるか否かを判定する(ステップS32)。移動対象の処理の廃棄要件が非許容の場合(ステップS32でYES)、転送制御部11は、第2の経路が設定済みであるか否かを判定する(ステップS33)。
第2の経路が設定済みの場合(ステップS33)、送信元の処理が送信先の処理に対して送信するデータを蓄積する蓄積開始指示を第2の経路にある各ノードNに送信する(ステップS34)。
転送制御部11は、移動対象の処理を実行しているノードNから該処理の移動先のノードNまでの転送経路を設定する(ステップS35)。転送制御部11は、データの送信元の処理のノードNから該データの送信先の処理の移動先のノードNまでの第1の経路を決定する(ステップS36)。第1の経路は、上述したように、所定の品質要件を満たす経路である。
転送制御部11は、ステップS36で決定した第1の経路を設定する(ステップS37)。このため、転送制御部11は、第1の経路にある各ノードNの転送部43に第1の経路を設定する指示を送信する。
例えば、転送制御部11は、各ノードNの転送部43の転送先決定テーブルに第1の経路を辿る設定を行うことで、第1の経路が設定される。このとき、転送制御部11は、転送先決定テーブルの送信状態を停止に設定することで、第1の経路の各ノードNはデータの送信を行わない。
転送制御部11は、配備プランナ12から処理移動完了通知を受信したか否かを判定する(ステップS38)。転送制御部11が処理移動完了通知を受信しない場合(ステップS38でNO)、次のステップには進まない。
転送制御部11が処理移動完了通知を受信した場合(ステップS38でYES)、転送制御部11は、処理の移動元のノードNに対して蓄積解除指示を送信する(ステップS39)。これにより、第2の経路の各ノードNのバッファBFに蓄積されていたデータが、処理Bの移動先のノードNに転送される。
転送制御部11は、第2の経路の各ノードNのバッファBFに蓄積されていたデータが処理Bの移動先のノードNに転送された後に、第1の経路を有効にする(ステップS40)。このため、転送制御部11は、第1の経路の各ノードNの転送先決定テーブルの送信状態を中継にする。
ステップS33で、第2の経路が設定済みでない場合(ステップS33でNO)、処理の移動を行うと、オーバーフローを生じる可能性がある。このため、転送制御部11は、配備プランナ12に対して、処理の移動を中止する移動中止指示を送信する(ステップS41)。配備プランナ12は、この通知を受信すると、処理の移動を中止する。これにより、オーバーフローが生じることが抑制される。
ステップS32で、移動対象の処理の廃棄要件が許容の場合、オーバーフローが許容される。このため、転送制御部11は、所定の品質要件を満たす第1の経路を設定し(ステップS42)、第1の経路を有効にする(ステップS43)。これにより、移動元の処理から第1の経路を経由して、データが送信される。
<データ蓄積時のノードの制御の一例>
次に、図21のフローチャートを参照して、ノードNがデータをバッファBFに蓄積し、蓄積したデータを転送するときの制御の一例について説明する。ノードNは、移動する処理について、転送制御部11からデータの蓄積を開始する蓄積開始指示を受信したか否かを判定する(ステップS51)。ノードNが蓄積開始指示を受信しなければ(ステップS51でNO)、次のステップには進まない。
ノードNが蓄積開始指示を受信すると(ステップS51でYES)、ノードNは、移動する処理に送信されるデータをバッファBFに蓄積する(ステップS52)。そして、ノードNは、転送制御部11からデータの蓄積を解除する蓄積解除指示を受信したか否かを判定する(ステップS53)。
ノードNが蓄積解除指示を受信しなければ(ステップS53でNO)、次のステップには進まない。ノードNが蓄積解除指示を受信した場合(ステップS53でYES)、ノードNはバッファBFに蓄積されているデータを第2の経路に沿って転送する(ステップS54)。
<ノードの制御の一例>
次に、図22のフローチャートを参照して、ノードNの制御の一例について説明する。ノードNは、データを受信する(ステップS70)。ノードNは、データの送信元の処理の廃棄要件を識別テーブルに基づいて識別し、受信したデータの処理の廃棄要件が非許容であるか否かを判定する(ステップS71)。
受信したデータの処理の廃棄要件が許容の場合(ステップS71でNO)、ノードNは、バッファBFのバッファ残量があるか否かを判定する(ステップS72)。つまり、ノードNは、バッファBFに空き容量があるか否かを判定する。
バッファBFに残量がない場合(ステップS72でNO)、オーバーフローが生じる。このため、オーバーフローしたデータは廃棄される(ステップS73)。そして、制御は終了する。
バッファBFにバッファ残量がある場合(ステップS72でYES)、受信したデータは一時的にバッファBFに蓄積される。ノードNは、転送部43の転送先決定テーブルを参照して、データを送信する次のノードを決定する(ステップS74)。
ノードNは、自ノードが送信先であるか否かを判定する(ステップS75)。転送部43の転送先決定テーブルがlocalになっている場合は、自ノードが送信先である。それ以外は、自ノードは送信先ではない。
自ノードが送信先でない場合(ステップS75でNO)、ノードNは、転送部43の転送先決定テーブルを参照して、バッファBFに蓄積されているデータを次のノードに転送する(ステップS76)。
なお、後述するように、この時点で、送信状態は停止から中継になっている。従って、バッファBFに蓄積されているデータは次のノードに転送される。そして、ノードNの制御は終了する。
自ノードが送信先である場合(ステップS75でYES)、ノードNは、振分先テーブルを参照して、受信したデータの振分先の処理を決定する(ステップS77)。そして、ノードNは、受信したデータを決定した処理に振り分ける。その後、ノードNの制御は終了する。
ステップS71で、受信したデータの処理の廃棄要件が非許容である場合(ステップS71でYES)、ノードNは、バッファ残量があるか否かを判定する(ステップS79)。
バッファ残量がある場合(ステップS79でYES)、つまりバッファBFの空き容量がある場合、ノードNは、受信したデータをバッファBFに蓄積する(ステップS80)。ノードNは、転送部43の識別テーブルの送信状態が停止であるか否かを判定する(ステップS81)。
送信状態が停止の場合(ステップS81でYES)、次のステップに進まない。送信状態が中継の場合(ステップS81でNO)、フローはステップS74に進む。従って、フローがステップS74に進んだ時点で、識別テーブルの送信状態は中継に変化している。
ステップS79で、バッファ残量がない場合(ステップS79でNO)、廃棄要件が非許容の処理のデータが廃棄される可能性がある。このため、ノードNは、処理の送信元のノードNに対して、受信停止通知を送信する(ステップS82)。これにより、該ノードNでオーバーフローが生じることが抑制される。
<転送制御部のハードウェア構成の一例>
次に、図23の例を参照して、転送制御部11のハードウェア構成の一例を説明する。図23の例に示すように、バス100に対して、CPU111とRAM112とROM113と補助記憶装置114と媒体接続部115と通信インタフェース116とが接続されている。
CPU111は任意の処理回路である。CPU111はRAM112に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の処理を行うプログラムを適用してもよい。ROM113はRAM112に展開されるプログラムを記憶する不揮発性の記憶装置である。
補助記憶装置114は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置114に適用してもよい。媒体接続部115は、可搬型記録媒体118と接続可能に設けられている。
可搬型記録媒体118としては、可搬型のメモリや光学式ディスク(例えば、Compact Disk(CD)やDigital Versatile Disk(DVD)等)を適用してもよい。この可搬型記録媒体118に実施形態の処理を行うプログラムが記録されていてもよい。
転送制御部11の各種記憶部以外の各部は、CPU111により実現されてもよい。転送制御部11の各種記憶部は、RAM111または補助記憶装置114により実現されてもよい。
RAM112、ROM113および補助記憶装置114は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
<ノードのハードウェア構成の一例>
次に、図24の例を参照して、ノードNのハードウェア構成の一例を説明する。図24の例に示すように、バス200に対して、CPU211とRAM212とROM213と補助記憶装置214と媒体接続部215と通信インタフェース216とが接続されている。
RAM212以外の各部は、上述した転送制御部11と同様である。RAM212は、バッファBFのための記憶領域を有している。図24の例では、バッファBFはRAM212の一部の領域であるが、バッファBFは別途の記憶装置であってもよい。
<その他>
上述した実施形態では、データの送信先の処理を移動するときに、転送制御部11は、送信元の処理から送信先の処理に移動している間の過渡期のデータ量を算出する。そして、データの送信元の処理を実行するノードNとデータの送信先の処理を実行するノードNとのバッファのバッファ残量の合計が算出したデータ量未満となる場合に、転送制御部11は、第2の経路に転送経路を変更している。
この点、上記のバッファ残量の合計および算出したデータ量にかかわらず、転送制御部11は、第2の経路に転送経路を変更してもよい。転送制御部11が第2の経路に転送経路を変更することで、データのオーバーフローは生じなくなる。
ただし、上記のバッファ残量の合計が算出したデータ量以上となる場合、現在の転送経路でもオーバーフローを生じない。このため、バッファ残量の合計が算出したデータ量未満となる場合に、第2の経路に転送経路を変更することで、転送経路の変更する頻度が低下する。
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
第2ノードで実行する第2処理を第3ノードへ移動する間に第1ノードで実行される第1処理が前記第2処理へ送信するデータのデータ量、を算出し、
ノード間の接続状態とノードごとのバッファ残量とに基づいて、バッファ残量の合計が前記データ量以上となる経路に前記データの転送経路の変更を行う、
処理をコンピュータが実行するデータ転送制御方法。
(付記2)
前記第1ノードのバッファ残量と前記第2ノードのバッファ残量との合計が前記データ量未満の場合に、前記データの転送経路の変更を行う、
処理を前記コンピュータが実行する付記1記載のデータ転送制御方法。
(付記3)
前記第2処理を前記第2ノードから前記第3ノードに移動する時間と前記第2処理が受信するデータの通信速度とに基づいて、前記データ量を算出する、
処理を前記コンピュータが実行する付記1記載のデータ転送制御方法。
(付記4)
前記第2処理の移動が発生する前に、前記データの転送経路を設定し、
前記第2処理を前記第3ノードに移動するときに、設定した前記データ転送経路に変更する、
処理を前記コンピュータが実行する付記1記載のデータ転送制御方法。
(付記5)
1以上の他のノードを経由して前記第1ノードと前記第2ノードとを接続する複数の経路の中で、前記バッファ残量の合計が前記データ量以上なる経路であり、且つ前記データの転送時間が最短の経路に前記データの転送経路を変更する、
処理を前記コンピュータが実行する付記1記載のデータ転送制御方法。
(付記6)
1以上の他のノードを経由して前記第1ノードと前記第2ノードとを接続する複数の経路の中で、経由する前記他のノードの段数をインクリメントしながら、前記バッファ残量の合計が前記データ量以上となる経路の検索を行い、
前記経路の検索の結果、複数の経路が該当する場合、前記データの転送時間が最短の経路に前記データの転送経路を変更する、
処理を前記コンピュータが実行する付記1記載のデータ転送制御方法。
(付記7)
前記第1ノードと前記第2ノードとの間の他のノードと、前記第1ノードと、前記第2ノードとのうち何れかからバッファ残量に変化を生じた通知を受信したときに、前記データ量の算出を行う、
処理を前記コンピュータが実行する付記5記載のデータ転送制御方法。
(付記8)
前記バッファ残量の合計が前記データ量以上となる経路がない場合、前記第2処理の移動を中止する制御を行う、
処理を前記コンピュータが実行する付記1記載のデータ転送制御方法。
(付記9)
第2ノードで実行する第2処理を第3ノードへ移動する間に第1ノードで実行される第1処理が前記第2処理へ送信するデータのデータ量、を算出し、
前記第1ノードのバッファ残量が前記データ量未満の場合、ノード間の接続状態とノードごとのバッファ残量とに基づいて、バッファ残量の合計が前記データ量以上となる経路に前記データの転送経路を変更する、
処理をコンピュータに実行させるためのデータ転送制御プログラム。
(付記10)
第2ノードで実行する第2処理を第3ノードへ移動する間に第1ノードで実行される第1処理が前記第2処理へ送信するデータのデータ量、を算出する算出部と、
ノード間の接続状態とノードごとのバッファ残量とに基づいて、バッファ残量の合計が前記データ量以上となる経路に前記データの転送経路の変更を行う変更部と、
を備えるデータ転送制御装置。