(57)【要約】【課題】本発明は、実行中のタスクに関係したボトルネックを正確に検出し、新たなボトルネックを誘発しない並列分散処理システムを提供する。【解決手段】並列分散処理システム１は、ＯｐｅｎＦｌｏｗによりスイッチ３０に対する経路制御を行うと共に、タスクの実行を、少なくとも情報処理端末装置が２台以上で並列化されるようにサーバ２０に命令する管理装置１０において、ネットワークに関する情報だけでなく、プロセスに関する情報も考慮して、実行中のタスクでボトルネックが発生したか否かの判定と、タスクを実行中のプロセスで使用しているフローの迂回経路の計算とを行う。【選択図】図３
2014082650.tif 000002
【特許請求の範囲】
【請求項１】
データを蓄積する端末装置である送信元端末装置と、前記送信元端末装置に蓄積されたデータに所定の情報処理を施す前記端末装置である情報処理端末装置と、前記情報処理端末装置で情報処理が施されたデータを蓄積する前記端末装置である送信先端末装置と、ＯｐｅｎＦｌｏｗにより前記端末装置の間で前記データを転送するスイッチとを備える並列分散処理システムに用いられ、前記ＯｐｅｎＦｌｏｗにより前記スイッチに対する経路制御を行うと共に、前記送信元端末装置のデータに前記情報処理端末装置で情報処理を施して前記送信先端末装置に送信するタスクの実行を、少なくとも前記情報処理端末装置が２台以上で並列化されるように前記端末装置に命令する管理装置であって、
前記端末装置及び前記スイッチから、互いに接続された前記スイッチ又は端末装置を示すノード情報を受信し、受信した前記ノード情報に基づいて、前記端末装置及び前記スイッチの接続形態であるネットワークトポロジを検出するネットワークトポロジ検出手段と、
前記ネットワークトポロジに基づいて、前記タスクを実行する端末装置で起動するプロセスのポート番号で特定され、かつ、前記ＯｐｅｎＦｌｏｗの経路制御単位であるフロー毎に、前記端末装置の間を結ぶ最短経路又は最小コスト経路を主要経路として計算し、計算した当該主要経路を示す経路情報を生成する経路計算手段と、
前記経路計算手段で生成した経路情報を前記スイッチに送信する経路制御手段と、
前記タスクを実行する端末装置の識別情報が含まれるタスク情報を入力するタスク入力手段と、
前記タスク情報に基づいて、前記タスクを実行する端末装置を決定する端末装置決定手段と、
前記端末装置決定手段で決定された端末装置の識別情報と、前記フロー毎に固有のプロセスのポート番号とを対応付けた転送コネクション情報を生成し、前記プロセスの起動と、前記転送コネクションの作成とを前記端末装置に命令する端末装置制御手段と、
前記転送コネクション情報と、前記経路情報と、前記タスク完了情報と、前記ノード情報と、前記データ転送量情報とに基づいて、実行中の前記タスクでボトルネックが発生したか否かを判定するボトルネック判定手段と、を備え、
前記経路計算手段は、
前記実行中のタスクでボトルネックが発生した場合、前記転送コネクション情報と、前記経路情報と、前記タスク完了情報と、前記ノード情報とに基づいて、前記タスクを実行中のプロセスで使用しているフローの迂回経路を計算して、計算した当該迂回経路を示す迂回経路情報を生成することを特徴とする管理装置。
【請求項２】
前記ネットワークトポロジ検出手段は、
前記ネットワークトポロジの差分により、前記ネットワークトポロジが変更されたか否かを判定し、前記ネットワークトポロジが変更された場合、前記経路情報に基づいて、前記主要経路が削除されたか否かを判定し、
前記経路計算手段は、
前記主要経路が削除された場合、変更された前記ネットワークトポロジに基づいて、削除された前記主要経路の代わりとなる主要経路を計算することを特徴とする請求項１に記載の管理装置。
【請求項３】
前記経路制御手段は、予め設定された数の前記フローについて、前記経路計算手段が生成した迂回経路情報を前記スイッチに送信することを特徴とする請求項１又は請求項２に記載の管理装置。
【請求項４】
前記経路計算手段は、前記迂回経路の計算結果に基づいて、前記迂回経路が存在するか否かを判定し、前記迂回経路が存在しない場合、予め設定されたネットワークリソースの追加を提案するメッセージを提示することを特徴とする請求項１から請求項３の何れか一項に記載の管理装置。
【請求項５】
データを蓄積する端末装置である送信元端末装置と、前記送信元端末装置に蓄積されたデータに所定の情報処理を施す前記端末装置である情報処理端末装置と、前記情報処理端末装置で情報処理が施されたデータを蓄積する前記端末装置である送信先端末装置と、ＯｐｅｎＦｌｏｗにより前記端末装置の間で前記データを転送するスイッチとを備える並列分散処理システムに用いられ、前記ＯｐｅｎＦｌｏｗにより前記スイッチに対する経路制御を行うと共に、前記送信元端末装置のデータに前記情報処理端末装置で情報処理を施して前記送信先端末装置に送信するタスクの実行を、少なくとも前記情報処理端末装置が２台以上で並列化されるように前記端末装置に命令するために、コンピュータを、
前記端末装置及び前記スイッチから、互いに接続された前記スイッチ又は端末装置を示すノード情報を受信し、受信した前記ノード情報に基づいて、前記端末装置及び前記スイッチの接続形態であるネットワークトポロジを検出するネットワークトポロジ検出手段、
前記ネットワークトポロジに基づいて、前記タスクを実行する端末装置で起動するプロセスのポート番号で特定され、かつ、前記ＯｐｅｎＦｌｏｗの経路制御単位であるフロー毎に、前記端末装置の間を結ぶ最短経路又は最小コスト経路を主要経路として計算し、計算した当該主要経路を示す経路情報を生成する経路計算手段、
前記経路計算手段で生成した経路情報を前記スイッチに送信する経路制御手段、
前記タスクを実行する端末装置の識別情報が含まれるタスク情報を入力するタスク入力手段、
前記タスク情報に基づいて、前記タスクを実行する端末装置を決定する端末装置決定手段、
前記端末装置決定手段で決定された端末装置の識別情報と、前記フロー毎に固有のプロセスのポート番号とを対応付けた転送コネクション情報を生成し、前記プロセスの起動と、前記転送コネクションの作成とを前記端末装置に命令する端末装置制御手段、
前記転送コネクション情報と、前記経路情報と、前記タスク完了情報と、前記ノード情報と、前記データ転送量情報とに基づいて、実行中の前記タスクでボトルネックが発生したか否かを判定するボトルネック判定手段、として機能させ、
前記経路計算手段は、
前記実行中のタスクでボトルネックが発生した場合、前記転送コネクション情報と、前記経路情報と、前記タスク完了情報と、前記ノード情報とに基づいて、前記タスクを実行中のプロセスで使用しているフローの迂回経路を計算して、計算した当該迂回経路を示す迂回経路情報を生成することを特徴とするボトルネック判定・経路制御プログラム。
【請求項６】
データを蓄積する送信元端末装置、前記送信元端末装置に蓄積されたデータに所定の情報処理を施す情報処理端末装置、又は、前記情報処理端末装置で情報処理が施されたデータを蓄積する送信先端末装置のうち、何れか１以上の役割を担う端末装置と、
ＯｐｅｎＦｌｏｗにより前記端末装置の間で前記データを転送するスイッチと
請求項１に記載の管理装置と、
を備えることを特徴とする並列分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯｐｅｎＦｌｏｗにより経路制御を行うと共に、端末装置が２台以上で並列化されるようにタスクを実行する管理装置、ボトルネック判定・経路制御プログラム、及び、並列分散処理システムに関する。
【背景技術】
【０００２】
高精細な映像の加工処理など、大量のデータ処理の高速化のためには、専用で高価な計算装置やネットワーク装置が必要とされていた。だが近年、これら装置の高性能化、低廉化が進み、一般的なＩＡ（Intel Architecture）サーバ（つまり、ＰＣ：（Personal Computer）サーバ）と、イーサネット（登録商標）機器とを用いた並列分散処理により、データ処理の高速化が可能となりつつある。
【０００３】
従来の並列分散処理システムは、サーバの数を増やすことで処理速度を向上させる一方、多数のサーバを集約して処理することにより、サーバ間トラヒックでネットワークが輻輳することがある（例えば、非特許文献１）。そのため、従来の並列分散処理システムは、サーバの数を増やしたり、サーバの性能を向上させたりしても、ネットワークがボトルネックになり、処理速度が上がらない場合がある。
【０００４】
ここで、従来の並列分散処理システムは、イーサネット機器を用いると、比較的、安価にネットワークを構築することができる。このイーサネット機器を用いた場合、レイヤ２ネットワークでは、ブロードキャストストームによるループ問題を回避するため、スパニングツリープロトコルを利用することが多い。しかし、このスパニングツリープロトコルは、レイヤ２ネットワークに存在する複数の経路のうち、主となる一つの経路以外の冗長な経路を、障害が発生するまで論理的にブロックするため、帯域を有効活用することができない。
【０００５】
そこで、レイヤ２ネットワークにおいて、複数の経路を有効活用できる方式として、ＴＲＩＬＬやＯｐｅｎＦｌｏｗが提案されている（例えば、非特許文献２，３）。このＴＲＩＬＬは、複数の経路で長さが異なるときは最短経路を選択し、複数の経路で長さが同じときは予め設定されたアルゴリズムで経路を選択する。これによって、ＴＲＩＬＬは、ネットワーク負荷を分散すると共に、ブロックして使わない経路を無くすことができる。
【０００６】
また、ＯｐｅｎＦｌｏｗでは、従来のネットワークスイッチで行っていた経路制御及びパケット転送制御のうち、パケット転送制御のみをＯｐｅｎＦｌｏｗ対応スイッチで行い、経路制御をＯｐｅｎＦｌｏｗコントローラで行う。このとき、ＯｐｅｎＦｌｏｗでは、予め設定されたアルゴリズムにより、フロー単位で経路を変えることができる。
なお、フローとは、入力スイッチポート（物理ポート）、送信元／宛先ＭＡＣアドレス、送信元／宛先ＩＰアドレス、送信元／宛先ポート番号等の識別子を任意に組み合わせたものである。
【０００７】
さらに、ＯｐｅｎＦｌｏｗコントローラは、ＯｐｅｎＦｌｏｗ対応スイッチとの間でＬＬＤＰ（Link Layer Discovery Protocol）パケットを交換することで、ネットワークトポロジを検出することができる（例えば、非特許文献４）。このＬＬＤＰは、隣接ノードを発見するためのプロトコルであり、ネットワーク上の隣接ノードに対し、自装置に関する情報を通知すると共に、他装置に関する情報を取得するものである。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】黄他、“処理速度を保証可能な並列分散処理手法の検討”、電子情報通信学会ソサイエティ大会、B-7-60、2011
【非特許文献２】IETF RFC5556,“Transparent Interconnection of Lots of Links (TRILL): Problem and Applicability Statement”
【非特許文献３】The OpenFlow Switch Consortium(http://www.Openflowswitch.org/)
【非特許文献４】IEEE802.1AB,“Station and Media Access Control Connectivity Discovery”
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来の並列分散処理システムでは、ＯｐｅｎＦｌｏｗ等の経路制御技術を適用しても、ネットワークに関する情報しか考慮しないため、実行中のタスクに関係したボトルネックを正確に検出できない。さらに、従来の並列分散処理システムでは、ネットワークに関する情報しか考慮しないため、ボトルネックを回避するための経路制御が、実行中のタスクで使用している他のフローに影響を与え、新たなボトルネックを誘発することがある。
【００１０】
そこで、本発明は、実行中のタスクに関係したボトルネックを正確に検出し、新たなボトルネックを誘発しない管理装置、ボトルネック判定・経路制御プログラム、及び、並列分散処理システムを提供することを課題とする。
【課題を解決するための手段】
【００１１】
前記した課題を解決するため、本願第１発明に係る管理装置は、データを蓄積する端末装置である送信元端末装置と、送信元端末装置に蓄積されたデータに所定の情報処理を施す端末装置である情報処理端末装置と、情報処理端末装置で情報処理が施されたデータを蓄積する端末装置である送信先端末装置と、ＯｐｅｎＦｌｏｗにより端末装置の間で前記データを転送するスイッチとを備える並列分散処理システムに用いられ、ＯｐｅｎＦｌｏｗによりスイッチに対する経路制御を行うと共に、送信元端末装置のデータに情報処理端末装置で情報処理を施して送信先端末装置に送信するタスクの実行を、少なくとも情報処理端末装置が２台以上で並列化されるように端末装置に命令する管理装置であって、ネットワークトポロジ検出手段と、経路計算手段と、経路制御手段と、タスク入力手段と、端末装置決定手段と、端末装置制御手段と、ボトルネック判定手段と、を備えることを特徴とする。
【００１２】
かかる構成によれば、管理装置は、ネットワークトポロジ検出手段によって、端末装置から、端末装置に接続されたスイッチを示すノード情報を受信すると共に、スイッチから、スイッチに接続された端末装置又は他のスイッチを示すノード情報を受信し、端末装置及びスイッチから受信したノード情報に基づいて、端末装置及びスイッチの接続形態であるネットワークトポロジを検出する。
【００１３】
また、管理装置は、経路計算手段によって、ネットワークトポロジに基づいて、タスクを実行する端末装置で起動するプロセスのポート番号で特定され、かつ、ＯｐｅｎＦｌｏｗの経路制御単位であるフロー毎に、端末装置の間を結ぶ最短経路又は最小コスト経路を主要経路として計算し、計算した主要経路を示す経路情報を生成する。
【００１４】
また、管理装置は、経路制御手段によって、経路計算手段で生成した経路情報をスイッチに送信する。そして、管理装置は、タスク入力手段によって、タスクを実行する端末装置の識別情報が含まれるタスク情報を入力する。さらに、管理装置は、端末装置決定手段によって、タスク情報に基づいて、タスクを実行する端末装置を決定する。
【００１５】
また、管理装置は、端末装置制御手段によって、端末装置決定手段で決定された端末装置の識別情報と、フロー毎に固有のプロセスのポート番号とを対応付けた転送コネクション情報を生成し、プロセスの起動と、転送コネクションの作成とを端末装置に命令する。
【００１６】
また、管理装置は、ボトルネック判定手段によって、ネットワークに関する情報だけでなく、プロセスに関する情報も考慮して、実行中のタスクでボトルネックが発生したか否かを判定する。
プロセスに関する情報とは、転送コネクション情報及びタスク完了情報のことである。
ネットワークに関する情報とは、経路情報、ノード情報及びデータ転送量情報のことである。
【００１７】
また、管理装置は、経路計算手段によって、実行中のタスクでボトルネックが発生していると判定された場合、ネットワークに関する情報だけでなく、プロセスに関する情報も考慮して、タスクを実行中のプロセスで使用しているフローの迂回経路を計算して、計算した迂回経路を示す迂回経路情報を生成する。
【００１８】
また、本願第２発明に係る管理装置は、ネットワークトポロジ検出手段が、ネットワークトポロジの差分により、ネットワークトポロジが変更されたか否かを判定し、ネットワークトポロジが変更された場合、経路情報に基づいて、主要経路が削除されたか否かを判定し、経路計算手段が、主要経路が削除された場合、変更されたネットワークトポロジに基づいて、削除された主要経路の代わりとなる主要経路を計算することを特徴とする。
かかる構成によれば、管理装置は、主要経路が削除された場合でも、最適な主要経路を計算することができる。
【００１９】
また、本願第３発明に係る管理装置は、経路制御手段が、予め設定された数のフローについて、迂回経路情報をスイッチに送信することを特徴とする。
かかる構成によれば、管理装置は、ボトルネックとなっているフローの経路を全て一度に迂回させて、ボトルネックが発生していなかったフローの経路にも、大量の通信がなだれ込み、新たなボトルネックが誘発することを防止できる。
【００２０】
また、本願第４発明に係る管理装置は、経路計算手段が、迂回経路の計算結果に基づいて、迂回経路が存在するか否かを判定し、迂回経路が存在しない場合、予め設定されたネットワークリソースの追加を提案するメッセージを提示することを特徴とする。
かかる構成によれば、管理装置は、迂回経路が存在しない場合、並列分散処理システムの利用者にネットワークリソースの追加を提案することができる。
【００２１】
また、前記した課題を解決するため、本願第５発明に係る並列分散処理システムは、データを蓄積する送信元端末装置、送信元端末装置に蓄積されたデータに所定の情報処理を施す情報処理端末装置、又は、情報処理端末装置で情報処理が施されたデータを蓄積する送信先端末装置のうち、何れか１以上の役割を担う端末装置と、ＯｐｅｎＦｌｏｗにより端末装置の間で前記データを転送するスイッチと、本願第１発明に係る管理装置と、を備えることを特徴とする。
【００２２】
かかる構成によれば、並列分散処理システムは、管理装置によって、ネットワークに関する情報だけでなく、プロセスに関する情報も考慮して、実行中のタスクでボトルネックが発生したか否かを判定する。
【００２３】
また、並列分散処理システムは、管理装置によって、実行中のタスクでボトルネックが発生していると判定された場合、ネットワークに関する情報だけでなく、プロセスに関する情報も考慮して、タスクを実行中のプロセスで使用しているフローの迂回経路を計算して、計算した迂回経路を示す迂回経路情報を生成する。
【００２４】
なお、本願第１発明に係る管理装置は、コンピュータが備えるＣＰＵ、メモリ、ハードディスクなどのハードウェア資源を、ネットワークトポロジ検出手段、経路計算手段、経路制御手段、タスク入力手段、端末装置決定手段、端末装置制御手段、ボトルネック判定手段として機能させるためのボトルネック判定・経路制御プログラムによって実現することもできる（本願第６発明）。このプログラムは、通信回線を介して配布してもよく、ＣＤ−ＲＯＭやフラッシュメモリ等の記録媒体に書き込んで配布してもよい。
【発明の効果】
【００２５】
本発明によれば、以下のような優れた効果を奏する。
本願第１，５，６発明によれば、プロセスに関する情報と、ネットワークに関する情報との両方を用いるため、ボトルネックを正確に検出できると共に、新たなボトルネックを発生させずに経路制御を行うことができる。
本願第２発明によれば、主要経路が削除された場合でも、最適な主要経路を計算できるため、新たなボトルネックを発生させずに経路制御を行うことができる。
【００２６】
本願第３発明によれば、ボトルネックが発生していないフローの経路に、大量の通信トラフィックがなだれ込むことを防止できるため、新たなボトルネックの発生を抑制することができる。
本願第４発明によれば、迂回経路が存在しない場合、並列分散処理システムの利用者にネットワークリソースの追加を提案することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施形態に係る並列分散処理システムの概略図である。
【図２】従来のＯｐｅｎＦｌｏｗを説明する説明図である。
【図３】図１の並列分散処理システムの構成を示すブロック図である。
【図４】（ａ）〜（ｃ）は、図１の並列分散処理システムにおける、ネットワークトポロジの変更を説明する説明図である。
【図５】図１の並列分散処理システムにおける、主要経路を説明する説明図である。
【図６】図１の並列分散処理システムの動作を示すシーケンス図である。
【図７】図６のネットワークトポロジの変更判定・経路制御処理のフローチャートである。
【図８】図６の並列プロセス制御処理のフローチャートである。
【図９】図６のボトルネックの検出・迂回経路制御処理のフローチャートである。
【発明を実施するための形態】
【００２８】
［並列分散処理システムの概略］
以下、本発明の実施形態について、適宜図面を参照しながら詳細に説明する。
図１を参照し、本発明の実施形態に係る並列分散処理システム１の概略について、説明する。
【００２９】
並列分散処理システム１は、処理装置２を使用してデータの並列分散処理を行うものであり、処理装置２と、管理装置１０とを備える。
処理装置２は、管理装置１０からの制御に応じて並列分散処理を行うものであり、サーバ（端末装置）２０と、スイッチ３０と、通信回線４０とを備える。
【００３０】
管理装置１０は、並列分散処理に必要な情報を処理装置２から収集して管理すると共に、処理装置２を制御するものである。具体的には、管理装置１０は、後記するネットワークトポロジの変更判定、経路制御、並列プロセス制御、ボトルネックの検出、及び、迂回経路制御といった処理を行う（図６）。
【００３１】
サーバ２０は、送信元端末装置２０１、情報処理端末装置２０２、又は、送信先端末装置２０３のうち、何れかの１以上の役割を担うものである。
送信元端末装置２０１は、並列分散処理の対象となるデータを蓄積すると共に、蓄積したデータを予め指定されたサイズ（粒度）で分割してパケット化し、情報処理端末装置２０２に送信するサーバ２０である。
情報処理端末装置２０２は、送信元端末装置２０１から受信したデータのパケットに情報処理を施して、処理結果を送信先端末装置２０３に送信するサーバ２０である。
送信先端末装置２０３は、情報処理端末装置２０２から受信したデータのパケットを所定の順番で配列することでデータを復元し、蓄積するサーバ２０である。
【００３２】
スイッチ３０は、サーバ２０の間でパケット転送制御を行うものである。本実施形態では、経路制御技術としてＯｐｅｎＦｌｏｗを用いるため、スイッチ３０は、ＯｐｅｎＦｌｏｗ対応スイッチであることとする。
通信回線４０は、例えば、サーバ２０及びスイッチ３０を接続するＬＡＮ（Local Area Network）ケーブルである。
【００３３】
＜情報処理の一例＞
以下、並列分散処理システム１で行われる情報処理の一例について、説明する。
並列分散処理システム１は、例えば、情報処理として、映像データに対し、トランスコーディング等の映像加工処理を行うことができる。すなわち、並列分散処理システム１は、送信元端末装置２０１に蓄積された映像データを分割してパケット化し、各情報処理端末装置２０２に送信する。また、並列分散処理システム１は、各情報処理端末装置２０２が、この映像データのパケットに映像加工処理を並列で施し、映像加工処理が施された映像データのパケットを送信先端末装置２０３に送信する。そして、並列分散処理システム１は、送信先端末装置２０３が、映像加工処理が施された映像データのパケットを所定の順番で配列することで映像加工処理済みのデータを復元し、蓄積する。
なお、本発明での情報処理は、映像加工処理に限定されないことは言うまでもない。
【００３４】
＜ＯｐｅｎＦｌｏｗの説明＞
図２を参照し、並列分散処理システム１で用いるＯｐｅｎＦｌｏｗについて、具体的に説明する。
なお、図２では、ＯｐｅｎＦｌｏｗコントローラを「コントローラ」と略記し、ＯｐｅｎＦｌｏｗ対応スイッチ３０を「スイッチ」と略記した。
また、図２では、ＯｐｅｎＦｌｏｗコントローラ１０とＯｐｅｎＦｌｏｗ対応スイッチ３０との間において、経路制御に伴う信号及び情報の入出力を、一点鎖線で図示した。
本実施形態では、図１の管理装置１０が、ＯｐｅｎＦｌｏｗコントローラ１０に相当する。また、図１のスイッチ３０がＯｐｅｎＦｌｏｗ対応スイッチ３０に相当する。
【００３５】
図２に示すように、ＯｐｅｎＦｌｏｗ対応スイッチ３０は、従来のネットワークスイッチにおける経路制御とパケット転送制御のうち、パケット転送制御のみを行う。一方、ＯｐｅｎＦｌｏｗコントローラ１０は、ＯｐｅｎＦｌｏｗ対応スイッチ３０に対して、経路の集中制御を行う。
【００３６】
ＯｐｅｎＦｌｏｗでは、フローが経路制御単位であり、各フローに、アクションと、統計情報と、マッチングルールという概念が適用されている。
本実施形態では、宛先ポート番号で識別される一つのデータ転送処理がフローである。言い換えるなら、各フローは、タスクを実行するサーバ２０で起動するプロセスのポート番号（宛先ポート番号）で特定できる。従って、宛先ポート番号の値により、出力するスイッチポートを、フロー毎に切り換えることとする。
アクションとは、マッチングルール毎に予め設定された処理定義のことである。例えば、アクションでは、出力するスイッチポートの指定や宛先ＭＡＣアドレスの書き換えによって、サーバ２０とスイッチ３０との間で直接経路を設定することができる。
統計情報は、例えば、フロー毎のデータ転送量（バイト数）である。ここで、コントローラ１０は、隣接する２つのスイッチ３０の統計情報を用いて、パケットロスの発生を判定できる。
【００３７】
マッチングルールとは、入力スイッチポート、送信元／宛先ＭＡＣ（Media Access Control）アドレス、送信元／宛先ＩＰ（Internet Protocol）アドレス、送信元／宛先ポート番号等の識別情報により、フローを識別する規則である。ここで、パケットＡ（入力スイッチポート番号１、宛先ポート番号１００００）、パケットＢ（入力スイッチポート番号２、宛先ポート番号１００００）、パケットＣ（入力スイッチポート番号１、宛先ポート番号１０００１）という３つのパケットがある場合を考える。この場合、“入力スイッチポート＝１”がマッチングルールであれば、パケットＡ，Ｃが同一フローとなる。また、“宛先ポート番号＝１００００”がマッチングルールであれば、パケットＡ，Ｂが同一フローとなる。このように、ＯｐｅｎＦｌｏｗ対応スイッチは、パケットを受信すると、保存している経路情報のマッチングルールに一致するパケットの通信について、マッチングルールに対応して定められたアクションを実行する。その結果、ＯｐｅｎＦｌｏｗでは、フロー毎に経路５０を制御することができる。さらに、ＯｐｅｎＦｌｏｗでは、あるパケットが複数のマッチングルールに一致する場合、優先度が高いマッチングルールに対応して定められたアクションを実行する。
【００３８】
ここで、フローとプロセスとの関係について、補足する。
前記したように、フローとプロセスとが対応することから、サーバ２０で起動したプロセス間でのデータ転送処理が１フローとなる。例えば、送信元端末装置２０１で起動したプロセスと情報処理端末装置２０２で起動したプロセスとの間でのデータ転送処理が１フローとなり、情報処理端末装置２０２で起動したプロセスと送信先端末装置２０３で起動したプロセスとの間でのデータ転送処理が１フローとなる。
【００３９】
［管理装置の構成］
図３を参照し、管理装置１０の構成について、説明する。
なお、図３では、並列分散処理に必要な情報の入出力を分かり易くするため、管理装置１０とサーバ２０との間で直接、各情報の入出力を示す矢印を図示したが、実際には、スイッチ３０を介して各情報が入出力される。
【００４０】
図３に示すように、管理装置１０は、タスク入力手段１１０と、情報管理手段１２０と、情報表示手段１３０と、並列プロセス計算手段（端末装置決定手段）１４０と、並列プロセス制御手段（端末装置制御手段）１５０と、経路計算手段１６０と、経路制御手段１７０とを備える。
【００４１】
タスク入力手段１１０は、利用者がタスク情報を入力するものである。例えば、タスク入力手段１１０は、ウェブブラウザのようなインターフェースを介して、利用者にタスク情報を入力させてもよく、テキストファイルにタスク情報の内容を記述させてもよい。そして、タスク入力手段１１０は、入力されたタスク情報を、並列プロセス計算手段１４０に出力する。
利用者とは、例えば、並列分散処理システム１の管理者や使用者のことである。
【００４２】
タスク情報とは、並列分散処理に必要な情報であり、例えば、タスクを実行するサーバ２０の識別情報と、並列分散処理を行う数（並列化数）と、データの分割サイズ（粒度）、並列分散処理に用いるデータ（ファイル）へのパスが含まれる。
【００４３】
例えば、サーバ２０の識別情報には、送信元端末装置２０１としてタスクを実行するサーバ２０のＩＰアドレスと、送信先端末装置２０３としてタスクを実行するサーバ２０のＩＰアドレスとが含まれる。
【００４４】
また、並列化数には、並列分散処理を行う数、つまり、情報処理端末装置２０２で起動するプロセスの数が含まれる。例えば、並列化数は、ある映像の色を変える映像加工処理を場合、その映像加工処理を行う情報処理端末装置２０２で起動されるプロセスの数を示す。
【００４５】
なお、プロセスとは、サーバ２０の役割に応じた情報処理を実行するプログラムのことであり、後記する並列処理実行手段２３０により起動される（不図示）。本実施形態では、送信元端末装置２０１、情報処理端末装置２０２及び送信先端末装置２０３の何れの役割であっても、各サーバ２０がプロセスを１つだけ起動することとする。
【００４６】
情報管理手段１２０は、並列分散処理に必要な情報を管理（蓄積）するものであり、ネットワークトポロジ検出手段１２１と、ボトルネック判定手段１２２と、タスク完了判定手段１２３と、蓄積手段１２４とを備える。
【００４７】
ネットワークトポロジ検出手段１２１は、後記する蓄積手段１２４に蓄積されたノード情報に基づいて、ネットワークトポロジを検出するものである。また、ネットワークトポロジ検出手段１２１は、検出したネットワークトポロジの差分により、ネットワークトポロジが変更されたか否かを判定する。そして、ネットワークトポロジ検出手段１２１は、ネットワークトポロジが変更された場合、変更後のネットワークトポロジを示すネットワークトポロジ情報を生成し、蓄積手段１２４に蓄積する。
【００４８】
＜ネットワークトポロジの変更＞
図４を参照し、ネットワークトポロジの変更について、具体的に説明する（適宜図３参照）。
なお、図４では、スイッチ３０ａ，３０ｂに接続されたサーバ２０の図示を省略した。
【００４９】
ネットワークトポロジとは、処理装置２に含まれるノード（サーバ２０及びスイッチ３０）の接続形態のことである。
ここで、ノード情報は、サーバ２０に接続されたスイッチ３０や、スイッチ３０に接続されたサーバ２０又は他のスイッチ３０を示す。このため、ネットワークトポロジ検出手段１２１は、全ノードのノード情報を用いれば、各ノードに接続された他のノードが分かるため、ノード同士の接続形態を把握することができる。
【００５０】
経路５０とは、１以上のスイッチ３０及び通信回線４０により形成された、２台のサーバ２０を接続する通信路のことである。本実施形態では、フロー毎に経路５０が設定される。
【００５１】
図４（ａ）に示すように、３台のスイッチ３０ａ，３０ｂ，３０ｃがネットワーク内に存在することとする。そして、スイッチ３０ａ，３０ｂが通信回線４０で接続され、スイッチ３０ｂ，３０ｃが別の通信回線４０で接続されていることとする。この場合、ネットワークトポロジ検出手段１２１は、図４（ａ）のネットワークトポロジを検出し、検出したネットワークトポロジを示すネットワークトポロジ情報を生成し、蓄積手段１２４に蓄積する。さらに、ネットワークトポロジ検出手段１２１は、ネットワークトポロジが存在しない状態において、図４（ａ）のネットワークトポロジを検出したため、ネットワークトポロジが変更されたと判定する。
なお、図４（ａ）では、スイッチ３０ａ，３０ｂを直接接続する経路５０１が１本存在することになる。
【００５２】
図４（ｂ）に示すように、図４（ａ）のネットワークトポロジに、スイッチ３０ａ，３０ｃの間に別の通信回線４０を追加したこととする。この場合、ネットワークトポロジ検出手段１２１は、図４（ｂ）のネットワークトポロジを検出し、検出したネットワークトポロジを示すネットワークトポロジ情報を生成する。そして、ネットワークトポロジ検出手段１２１は、蓄積手段１２４に蓄積されている図４（ａ）のネットワークトポロジを示すネットワークトポロジ情報を、図４（ｂ）のネットワークトポロジを示すネットワークトポロジ情報で更新する。さらに、ネットワークトポロジ検出手段１２１は、図４（ａ）及び図４（ｂ）のネットワークトポロジに差分があるため、ネットワークトポロジが変更されたと判定する。
なお、図４（ｂ）では、スイッチ３０ａ，３０ｂを直接接続する経路５０１と、スイッチ３０ａ，３０ｃ，３０ｂの順で経由する経路５０２との計２本存在がすることになる。
【００５３】
図４（ｃ）に示すように、図４（ｂ）のネットワークトポロジから、スイッチ３０ａ，３０ｂの間で通信回線４０を削除したこととする。この場合、ネットワークトポロジ検出手段１２１は、図４（ｃ）のネットワークトポロジを検出し、検出したネットワークトポロジを示すネットワークトポロジ情報を生成する。そして、ネットワークトポロジ検出手段１２１は、蓄積手段１２４に蓄積されている図４（ｂ）のネットワークトポロジを示すネットワークトポロジ情報を、図４（ｃ）のネットワークトポロジを示すネットワークトポロジ情報で更新する。さらに、ネットワークトポロジ検出手段１２１は、図４（ｂ）及び図４（ｃ）のネットワークトポロジに差分があるため、ネットワークトポロジが変更されたと判定する。
なお、図４（ｃ）では、スイッチ３０ａ，３０ｃ，３０ｂの順で経由する経路５０２が１本存在することになる。このように、ネットワークトポロジの変更に従い、通信可能な経路５０が変動することになる。
【００５４】
さらに、ネットワークトポロジ検出手段１２１は、図４（ａ）〜図４（ｃ）のように、ネットワークトポロジが変更された場合、以下の処理を行う。
ネットワークトポロジ検出手段１２１は、蓄積手段１２４に蓄積された経路情報に基づいて、ネットワークトポロジの変更により主要経路の通信回線４０が削除されたか否かを判定する。例えば、図４（ｂ）の経路５０１が主要経路であり、その後、図４（ｃ）のようにスイッチ３０ａ，３０ｂの間で通信回線４０が削除された場合を考える。この場合、ネットワークトポロジ検出手段１２１は、主要経路である経路５０１に含まれる通信回線４０が削除されたため、削除された通信回線４０の識別情報を、通信回線削除情報として、経路計算手段１６０に出力する。
【００５５】
＜主要経路の説明＞
図５を参照し、主要経路６０について、具体的に説明する。
主要経路６０とは、２台のサーバ２０を接続する１以上の経路５０（図４）のうち、テータ転送に最適な経路５０のことである。例えば、２台のサーバ２０が４本の経路５０で接続されている場合、４本の経路５０のうち、最適な１本の経路５０が、主要経路６０となる（不図示）。
なお、主要経路６０の計算手法は、経路計算手段１６０で説明する。
【００５６】
さらに、図５に示すように、２台のサーバ２０が送信元端末装置２０１の役割を担い、３台のサーバ２０が情報処理端末装置２０２の役割を担い、１台のサーバ２０が送信先端末装置２０３の役割を担う場合を考える。
なお、図５では、サーバ２０の間に配置されるスイッチ３０の図示を省略した。
【００５７】
この場合、２台の送信元端末装置２０１と、３台の情報処理端末装置２０２との間では、主要経路６０が、両装置の台数とを乗じた６本となる。さらに、３台の情報処理端末装置２０２と、１台のサーバ２０が送信先端末装置２０３との間では、主要経路６０が、両装置の台数とを乗じた３本となる。つまり、図５の例では、主要経路６０が合計９本となる。
【００５８】
図３に戻り、管理装置１０の構成について、説明を続ける。
ボトルネック判定手段１２２は、後記する転送コネクション情報と、経路情報と、タスク完了情報と、ノード情報と、データ転送量情報とに基づいて、実行中のタスクでボトルネックが発生したか否かを判定するものである。つまり、ボトルネック判定手段１２２は、ネットワークに関する情報だけでなく、プロセスに関する情報も考慮して、実行中のタスクでボトルネックが発生したか否かを判定する。
【００５９】
＜ボトルネックの判定＞
ボトルネックの判定について、具体的に説明する。
具体的には、ボトルネック判定手段１２２は、スイッチ３０から送信されたデータ転送量情報に基づいて、２台のスイッチ３０の間で発生したパケットロスを検出する。そして、ボトルネック判定手段１２２は、パケットロスが検出された場合、それらスイッチ３０の間に接続された通信回線４０にボトルネックが発生したと判定する。
【００６０】
通信回線４０にボトルネックが発生した場合、ボトルネック判定手段１２２は、経路情報及びノード情報に基づいて、何れのフローでボトルネックが発生したかを特定する。つまり、ボトルネック判定手段１２２は、経路情報がフロー毎の主要経路を示し、ノード情報がネットワークトポロジを示すため、ボトルネックが発生した通信回線４０を使用しているフロー（つまり、ボトルネックとなるフロー）を特定することができる。
【００６１】
ボトルネックとなるフローを特定できた場合、ボトルネック判定手段１２２は、転送コネクション情報及びタスク完了情報に基づいて、実行中のタスクでボトルネックが発生したか否かを判定する。つまり、ボトルネック判定手段１２２は、転送コネクション情報がタスクとプロセスとフローとの対応関係を示し、タスク完了情報がタスクの完了又は実行中を示すため、ボトルネックとなるフローを使用している実行中のタスクを特定することができる。
【００６２】
ここで、ボトルネック判定手段１２２は、実行中のタスクでボトルネックが発生した場合、ボトルネックが発生した通信回線４０の識別情報と、その通信回線４０を使用しているフローの識別情報とを、ボトルネック情報として、経路計算手段１６０に出力すると共に、蓄積手段１２４に蓄積する。
【００６３】
一方、ボトルネック判定手段１２２は、通信回線４０にボトルネックが発生していない場合、何の処理も行わない。
さらに、ボトルネックとなるフローを特定できない場合、又は、実行中のタスクでボトルネックが発生していない場合もある。この場合も、ボトルネック判定手段１２２は、ボトルネックが発生した通信回線４０がフローで使用されていないため、ボトルネックを放置してもタスクの実行に影響がなく、何の処理も行わない。
【００６４】
タスク完了判定手段１２３は、サーバ２０から入力されたタスク完了情報に基づいて、タスクが完了したか否かを判定するものである。つまり、タスク完了判定手段１２３は、タスク完了情報が入力された場合、そのタスクが完了したと判定する。そして、タスクが完了した場合、タスク完了判定手段１２３は、完了したタスクの転送コネクション情報を、蓄積手段１２４から削除する。
【００６５】
また、タスク完了判定手段１２３は、蓄積手段１２４に蓄積された転送コネクション情報に基づいて、実行中のタスクが有るか無いかを判定する。つまり、タスク完了判定手段１２３は、蓄積手段１２４に転送コネクション情報が蓄積されている場合、実行中のタスクが有ると判定する。一方、タスク完了判定手段１２３は、蓄積手段１２４に転送コネクション情報が蓄積されていない場合、実行中のタスクが無いと判定する。そして、実行中のタスクが無い場合、タスク完了判定手段１２３は、経路計算指示を経路計算手段１６０に出力する。
【００６６】
蓄積手段１２４は、並列プロセス制御手段１５０が生成した転送コネクション情報と、経路計算手段１６０が生成した経路情報及び迂回経路情報と、ネットワークトポロジ検出手段１２１が生成したネットワークトポロジ情報と、ボトルネック判定手段１２２が生成したボトルネック情報とを蓄積するメモリ、ハードディスク等の記憶装置である。
【００６７】
情報表示手段１３０は、蓄積手段１２４に蓄積されたネットワークトポロジ情報、経路情報、及び、ボトルネック情報を、利用者に提示するものである。また、情報表示手段１３０は、経路計算手段１６０から入力されたメッセージを利用者に提示する。例えば、情報表示手段１３０は、ネットワークトポロジ情報、経路情報、ボトルネック情報及びメッセージを、図示を省略したディスプレイに表示する。
【００６８】
並列プロセス計算手段１４０は、タスク入力手段１１０から入力されたタスク情報に基づいて、タスクを実行するサーバ２０を決定するものである。
例えば、並列プロセス計算手段１４０は、タスクを実行するサーバ２０を、以下のように決定する。
この場合、並列プロセス計算手段１４０は、タスク情報の識別情報を参照し、送信元端末装置２０１及び送信先端末装置２０３を決定する。また、並列プロセス計算手段１４０は、送信元端末装置２０１及び送信先端末装置２０３として決定されなかった残りサーバ２０のうち、タスク情報の並列化数と同じ台数のサーバ２０を、ラウンドロビンにより、情報処理端末装置２０２として決定する。
【００６９】
そして、並列プロセス計算手段１４０は、決定したサーバ２０の識別情報と、各サーバ２０で起動するプロセスの数とを示すサーバ特定情報を、並列プロセス制御手段１５０に出力する。
【００７０】
並列プロセス制御手段１５０は、並列プロセス計算手段１４０から入力されたサーバ特定情報に従って、プロセスの起動と、転送コネクションの作成とをサーバ２０に命令し、並列分散処理に必要なパラメータを通知するものである。このとき、並列プロセス制御手段１５０は、プロセス毎に別の宛先ポート番号を付与し、かつ、プロセスを複数起動できるため、データの転送処理や映像加工処理を並列化することができる。
なお、パラメータとは、例えば、映像加工処理におけるトランスコードの有無やビットレートのことである。
【００７１】
また、並列プロセス制御手段１５０は、前記したサーバ特定情報に従って、タスク開始により転送コネクション情報を生成し、生成した転送コネクション情報を蓄積手段１２４に蓄積する。
転送コネクション情報とは、例えば、タスクの識別情報と、サーバ特定情報に含まれるサーバ２０の識別情報と、フローの識別情報と、フロー毎に固有のプロセスのポート番号とを対応付けた情報である。
例えば、タスクの識別情報と、並列分散処理システム１で固有に付けられたタスクのＩＤ（IDentification）である。
また、例えば、フローの識別情報とは、並列分散処理システム１で固有に付けられたフローのＩＤである。
【００７２】
経路計算手段１６０は、経路を計算するものである。
本実施形態では、経路計算手段１６０は、全ての主要経路の計算（図７のステップＳ１７）と、削除された主要経路の代わりとなる新たな主要経路の計算（図７のステップＳ１４）と、迂回経路の計算（図９のステップＳ３１）という、３種類の経路計算を行う。以下、３種類の経路計算について、順に説明する。
【００７３】
＜１種類目：全ての主要経路の計算＞
経路計算手段１６０は、蓄積手段１２４に蓄積されているネットワークトポロジ情報に基づいて、フローが発生する全てのサーバ２０について、これらサーバ２０の間を結ぶ最短経路を主要経路として計算する。例えば、経路計算手段１６０は、ダイクストラ法での最短経路を主要経路として計算する。そして、経路計算手段１６０は、計算した主要経路を示す経路情報を生成し、生成した経路情報を経路制御手段１７０に出力すると共に、蓄積手段１２４に蓄積する。
【００７４】
このダイクストラ法は、例えば、参考文献「E.W.Dijkstra, ”A note on two problems in connexion with graphs”, Numerische Mathematik, （1959）, Volume 1, Number 1,pp.269-271」に記載されている。
【００７５】
＜２種類目：新たな主要経路の計算＞
経路計算手段１６０は、ネットワークトポロジ検出手段１２１から通信回線削除情報が入力された場合、蓄積手段１２４に蓄積されているネットワークトポロジ情報に基づいて、新たな主要経路を計算する。このネットワークトポロジ情報は、ネットワークトポロジの変更が反映されている。例えば、経路計算手段１６０は、通信回線削除情報が示す通信回線４０を使用していた主要経路に代わりに、ダイクストラ法での最短経路を新たな主要経路として計算する。そして、経路計算手段１６０は、計算した新たな主要経路を示す経路情報を生成し、生成した経路情報を経路制御手段１７０に出力すると共に、蓄積手段１２４に蓄積する。
【００７６】
＜３種類目：迂回経路の計算＞
経路計算手段１６０は、ボトルネック判定手段１２２からボトルネック情報が入力された場合、転送コネクション情報と、経路情報と、タスク完了情報と、ノード情報とに基づいて、タスクを実行中のプロセスで使用しているフローを迂回可能な迂回経路を計算する。つまり、経路計算手段１６０は、ネットワークに関する情報だけでなく、プロセスに関する情報も考慮して、迂回経路を計算する。
【００７７】
具体的には、経路計算手段１６０は、転送コネクション情報及びタスク完了情報に基づいて、実行中のタスクが使用しているプロセス及びフローを特定する。つまり、経路計算手段１６０は、転送コネクション情報がタスクとプロセスとフローとの対応関係を示し、タスク完了情報がタスクの完了又は実行中を示すため、実行中のタスクが使用しているプロセス及びフローを特定することができる。
【００７８】
次に、経路計算手段１６０は、経路情報及びノード情報に基づいて、実行中のタスクが使用しているフローや、重要度の高いタスク（例えば、ストリーム処理タスク）に影響を与えないように迂回経路を計算する。例えば、経路計算手段１６０は、蓄積手段１２４に蓄積されているネットワークトポロジ情報から、ボトルネック情報が示す通信回線４０を除いた仮想ネットワークトポロジを用いて、ダイクストラ法での最短経路を迂回経路として計算する。
【００７９】
そして、経路計算手段１６０は、迂回経路が存在する場合に迂回可能と判定し、迂回経路が存在しない場合に迂回不可能と判定する。例えば、経路計算手段１６０は、２台のサーバ２０の間で１本の経路しか存在せず、その１本の経路でボトルネックが検出された場合、迂回不能と判定する。
【００８０】
迂回可能な場合、経路計算手段１６０は、計算した迂回経路を示す迂回経路情報を生成し、生成した迂回経路情報を経路制御手段１７０に出力すると共に、蓄積手段１２４に蓄積する。
一方、迂回不可能な場合、経路計算手段１６０は、情報表示手段１３０を介して、予め設定されたメッセージを利用者に提示する。このメッセージは、並列分散処理システム１の利用者にネットワークリソースの追加を提案するメッセージである。
【００８１】
経路制御手段１７０は、経路計算手段１６０から入力された経路情報を、この経路情報が示す主要経路上のスイッチ３０に対して送信すると共に、蓄積手段１２４に蓄積するものである。つまり、平常状態では、経路計算手段１６０は、フローが主要経路を通るように経路制御することになる。
【００８２】
また、経路制御手段１７０は、経路計算手段１６０から入力された迂回経路情報を、この迂回経路情報が示す経路上のスイッチ３０に対して送信すると共に、蓄積手段１２４に蓄積する。ここで、フローを迂回経路に迂回させる際、経路制御手段１７０は、ＯｐｅｎＦｌｏｗにおける優先度を高くすることで、迂回経路を通るように経路制御できる。
【００８３】
ボトルネックとなっているフローの経路を全て一度に迂回させると、ボトルネックが発生していなかったフローの経路にも、大量の通信がなだれ込み、新たなボトルネックを誘発することがある。これを防止するため、経路制御手段１７０は、予め設定された数のフロー（例えば、１個のフロー）について、迂回経路情報をスイッチに送信する。
【００８４】
さらに、経路制御手段１７０は、迂回経路情報に生存時間を付加して、生存時間が経過すると、迂回経路情報を無効にしてもよい。この場合、経路制御手段１７０は、迂回前の経路情報を再び使用すると共に、無効になった迂回経路情報を蓄積手段１２４から削除してもよい。
【００８５】
［サーバの構成］
以下、サーバ２０の構成について、説明する。
図３に示すように、サーバ２０は、命令実行手段２１０と、情報収集手段２２０と、並列処理実行手段２３０と、蓄積手段２４０とを備える。
命令実行手段２１０は、管理装置１０から命令を受信し、受信した命令を並列処理実行手段２３０に出力することで、この命令を並列処理実行手段２３０に実行させるものである。
【００８６】
情報収集手段２２０は、ＡＲＰ（Address Resolution Protocol）パケットやＬＬＤＰパケットの交換により、隣接するノードを発見するものである。そして、情報収集手段２２０は、発見したノード情報を、サーバ２０の識別情報と共に、管理装置１０に送信する。
【００８７】
並列処理実行手段２３０は、命令実行手段２１０から入力される命令に従って、並列処理を実行するものである。具体的には、並列処理実行手段２３０は、この命令に従って、タスクの実行に必要なプロセスを起動し、転送コネクションを作成する。
【００８８】
具体的には、並列処理実行手段２３０は、送信元端末装置２０１、情報処理端末装置２０２及び送信先端末装置２０３の役割に応じたプロセスを起動し、命令を実行する。
例えば、このサーバ２０が送信元端末装置２０１として動作する場合、並列処理実行手段２３０は、映像データのパケットを送信するプロセスを起動する。そして、並列処理実行手段２３０は、起動したプロセスにより、蓄積手段２４０に蓄積されているデータを分割してパケット化し、情報処理端末装置２０２に送信する。
また、例えば、このサーバ２０が情報処理端末装置２０２として動作する場合、並列処理実行手段２３０は、映像加工処理を施すプロセスを起動する。そして、並列処理実行手段２３０は、起動したプロセスにより、送信元端末装置２０１から受信したデータのパケットに情報処理を施して、処理結果を送信先端末装置２０３に送信する。
また、例えば、このサーバ２０が送信先端末装置２０３として動作する場合、並列処理実行手段２３０は、映像加工処理が施された映像データのパケットを受信し、所定の順番で配列して復元するプロセスを起動する。そして、並列処理実行手段２３０は、起動したプロセスにより、情報処理端末装置２０２から受信したデータのパケットを、所定の順番で配列することで情報処理済みのデータを復元し、蓄積手段２４０に蓄積する。
【００８９】
また、並列処理実行手段２３０は、予め設定されたタスク完了条件を満たす場合、タスクの完了を示すタスク完了情報を管理装置１０に送信する。
このタスク完了条件とは、タスクが完了したことを示す条件である。例えば、タスク完了条件は、このサーバ２０が送信先端末装置２０３として動作する場合、送信先端末装置２０３が情報処理端末装置２０２から、情報処理後のデータを全て受信したという条件である。
【００９０】
蓄積手段２４０は、並列分散処理の対象となるデータを蓄積するメモリ、ハードディスク等の記憶装置である。
【００９１】
［スイッチの構成］
図３に示すように、スイッチ３０は、命令実行手段３１０と、情報収集手段３２０と、パケット転送手段（データ転送手段）３３０とを備える。
命令実行手段３１０は、管理装置１０から経路情報を受信し、受信した経路情報に従ってパケット転送手段３３０にパケットの転送処理を実行させるものである。
【００９２】
情報収集手段３２０は、ＯｐｅｎＦｌｏｗの統計情報として、スイッチ３０のデータ転送量を収集し、収集したデータ転送量を示すデータ転送量情報を管理装置１０に送信するものである。
また、情報収集手段３２０は、ＡＲＰパケットやＬＬＤＰパケットの交換により、隣接するノードを発見する。そして、情報収集手段３２０は、発見したノード情報を、管理装置１０に送信する。
【００９３】
パケット転送手段３３０は、命令実行手段３１０から入力された経路情報に従い、受信したデータのパケットを転送するものである。また、パケット転送手段３３０は、並列分散処理に必要な情報を、管理装置１０とサーバ２０との間で転送する。
【００９４】
［並列分散処理システムの動作］
以下、図６を参照し、並列分散処理システム１の動作について、説明する（適宜図３参照）。
管理装置１０は、処理装置２（サーバ２０及びスイッチ３０）から送信されたノード情報を用いて、ネットワークトポロジの変更判定・経路制御処理を行い、経路情報を処理装置２（スイッチ３０）に送信する（ステップＳ１）。
【００９５】
管理装置１０は、入力されたタスク情報に従って、並列プロセス制御処理を行い、命令を処理装置２（サーバ２０）に送信する（ステップＳ２）。
管理装置１０は、処理装置２（スイッチ３０）から送信されたデータ転送量情報を用いて、ボトルネックの検出・迂回経路制御処理を行い、迂回経路情報を処理装置２（スイッチ３０）に送信する（ステップＳ３）。
【００９６】
［ネットワークトポロジの変更判定・経路制御処理］
図７を参照して、ネットワークトポロジの変更判定・経路制御処理について、具体的に説明する（適宜図３参照）。
【００９７】
管理装置１０は、情報管理手段１２０によって、サーバ２０及びスイッチ３０から、ノード情報を収集（受信）する。
管理装置１０は、ネットワークトポロジ検出手段１２１によって、ノード情報に基づいて、ネットワークトポロジを検出する。
管理装置１０は、ネットワークトポロジ検出手段１２１によって、検出したネットワークトポロジの差分により、ネットワークトポロジが変更されたか否かを判定する（ステップＳ１０）。
【００９８】
ネットワークトポロジが変更された場合（ステップＳ１０でＹｅｓ）、管理装置１０は、ステップＳ１１の処理に進む。
管理装置１０は、ネットワークトポロジ検出手段１２１によって、蓄積手段１２４に蓄積されているネットワークトポロジ情報を、変更後のネットワークトポロジを示すネットワークトポロジ情報で更新する（ステップＳ１１）。
管理装置１０は、情報表示手段１３０によって、ネットワークトポロジ情報、経路情報、及び、ボトルネック情報を利用者に提示する（ステップＳ１２）。
【００９９】
管理装置１０は、ネットワークトポロジ検出手段１２１によって、経路情報に基づいて、主要経路上の通信回線４０が削除されたか否かを判定する（ステップＳ１３）。
主要経路上の通信回線４０が削除された場合（ステップＳ１３でＹｅｓ）、管理装置１０は、ステップＳ１４の処理に進む。
【０１００】
管理装置１０は、ネットワークトポロジ検出手段１２１によって、通信回線削除情報を生成すると共に、削除された通信回線４０を使用している経路情報を蓄積手段１２４から削除する。
管理装置１０は、経路計算手段１６０によって、変更後のネットワークトポロジ情報に基づいて、通信回線削除情報が示す通信回線４０を使用していた主要経路に代わりに、新たな主要経路を計算し、計算した新たな主要経路を示す経路情報を生成する（ステップＳ１４）。
【０１０１】
管理装置１０は、経路制御手段１７０によって、ステップＳ１４で生成した経路情報を、この経路情報が示す主要経路上のスイッチ３０に対して送信すると共に、蓄積手段１２４に蓄積する（ステップＳ１５）。
【０１０２】
管理装置１０は、タスク完了判定手段１２３によって、並列プロセス制御手段１５０から入力された転送コネクション情報に基づいて、実行中のタスクが有るか無いかを判定する（ステップＳ１６）。
【０１０３】
実行中のタスクが有る場合（ステップＳ１６でＹｅｓ）、管理装置１０は、ステップＳ１６の処理に戻り、実行中のタスクが終了するのを待つ。これによって、経路制御により、転送中のフローの経路が大幅に変わり、新たなボトルネックの誘発を防止できる。
一方、実行中のタスクが無い場合（ステップＳ１６でＮｏ）、管理装置１０は、ステップＳ１７の処理に進む。
【０１０４】
管理装置１０は、経路計算手段１６０によって、ネットワークトポロジ情報に基づいて、フローが発生し得る全てのサーバ２０について主要経路を計算し、計算した主要経路を示す経路情報を生成する（ステップＳ１７）。
【０１０５】
管理装置１０は、経路制御手段１７０によって、ステップＳ１７で生成した経路情報を、この経路情報が示す主要経路上のスイッチ３０に対して送信すると共に、蓄積手段１２４に蓄積する（ステップＳ１８）。
【０１０６】
ネットワークトポロジが変更されていない場合（ステップＳ１０でＮｏ）、又は、ステップＳ１８の後、管理装置１０は、ネットワークトポロジの変更判定・経路制御処理を終了する。
【０１０７】
［並列プロセス制御処理］
図８を参照して、並列プロセス制御処理について、具体的に説明する（適宜図３参照）。
この図８では、タスク情報の入力前に、各サーバ２０の間で主要経路の計算と経路制御とが完了していることとする。
【０１０８】
管理装置１０は、タスク入力手段１１０によって、タスク情報が入力され、入力されたタスク情報を並列プロセス計算手段１４０に出力する（ステップＳ２０）。
管理装置１０は、並列プロセス計算手段１４０によって、タスク情報に基づいて、タスクを実行するサーバ２０を決定して、サーバ特定情報を生成する（ステップＳ２１：並列プロセス計算）。
【０１０９】
管理装置１０は、並列プロセス制御手段１５０によって、サーバ特定情報に従って、タスク開始により転送コネクション情報を生成すると共に、プロセスの起動と、転送コネクションの作成とをサーバ２０に命令する（ステップＳ２２：並列プロセス制御）。
管理装置１０は、並列プロセス制御手段１５０によって、転送コネクション情報を蓄積手段１２４に蓄積する（ステップＳ２３）。
【０１１０】
管理装置１０は、タスク完了判定手段１２３によって、タスクが完了したか否かを判定する（ステップＳ２４）。
タスクが完了していない場合（ステップＳ２４でＮｏ）、管理装置１０は、ステップＳ２４の処理に戻る。
【０１１１】
タスクが完了した場合（ステップＳ２４でＹｅｓ）、管理装置１０は、ステップＳ２５の処理に進む。
管理装置１０は、タスク完了判定手段１２３によって、完了したタスクの転送コネクション情報を、蓄積手段１２４から削除する（ステップＳ２５）。
【０１１２】
［ボトルネックの検出・迂回経路制御処理］
図９を参照して、ボトルネックの検出・迂回経路制御について、具体的に説明する（適宜図３参照）。
管理装置１０は、ボトルネック判定手段１２２によって、実行中のタスクでボトルネックが発生したか否かを判定する（ステップＳ３０）。
【０１１３】
実行中のタスクでボトルネックが発生した場合（ステップＳ３０でＹｅｓ）、管理装置１０は、ステップＳ３１の処理に進む。
一方、実行中のタスクでボトルネックが発生していない場合（ステップＳ３０でＮｏ）、管理装置１０は、ボトルネックの検出・迂回経路制御処理を終了する。
【０１１４】
管理装置１０は、ボトルネック判定手段１２２によって、ボトルネック情報を経路計算手段１６０に出力する。
管理装置１０は、経路計算手段１６０によって、ボトルネック情報に基づいて迂回経路を計算し、迂回経路の計算結果に基づいて、迂回可能か否かを判定する（ステップＳ３１）。
【０１１５】
迂回可能な場合（ステップＳ３１でＹｅｓ）、管理装置１０は、ステップＳ３２の処理に進む。
管理装置１０は、経路計算手段１６０によって、経路制御手段１７０に迂回経路情報を出力する。
管理装置１０は、経路制御手段１７０によって、経路情報を、この経路情報が示す主要経路上のスイッチ３０に対して送信すると共に、蓄積手段１２４に蓄積し（ステップＳ３２）、ステップＳ３０の処理に戻る。
【０１１６】
一方、迂回不可能な場合（ステップＳ３１でＮｏ）、管理装置１０は、ステップＳ３３の処理に進む。
管理装置１０は、経路計算手段１６０によって、ネットワークリソースの追加を提案するメッセージを出力し（ステップＳ３３）、ステップＳ３０の処理に戻る。
つまり、管理装置１０は、実行中のタスクでボトルネックが発生していないと判定されるまで、ボトルネックの検出・迂回経路制御処理を繰り返す。
【０１１７】
以上のように、本発明の実施形態に係る管理装置１０は、プロセスに関する情報と、ネットワークに関する情報との両方を用いるため、ボトルネックを正確に検出できると共に、新たなボトルネックを誘発させずに経路制御を行うことができる。
また、管理装置１０は、主要経路が削除された場合でも、最適な主要経路を計算できるため、新たなボトルネックを誘発させずに経路制御を行うことができる。
また、管理装置１０は、メッセージにより、並列分散処理システムの利用者にネットワークリソースの追加を提案することができる。
【０１１８】
本発明は、実施形態に限定されず、その趣旨を逸脱しない範囲で様々な変形を加えることができる。以下、本発明の変形例について、具体的に説明する。
【０１１９】
（変形例１）
前記した実施形態では、ステップＳ１４（図７）のように、主要経路上の通信回線４０が削除されたときに、新たな主要経路を計算しているが、本発明は、これに限定されない。
例えば、経路計算手段１６０は、下記参考文献に記載の経路計算手法により、事前に複数の主要経路を計算し、計算した主要経路を示す経路情報を、蓄積手段１２４に蓄積させてもよい。
参考文献：J.Y.Yen.,”Finding the K shortest loopless paths in a network.”,Management Science, 17:712-716, 1971
【０１２０】
（変形例２）
前記した実施形態では、ステップＳ３１（図９）のように、ボトルネックの検出後、迂回経路を計算しているが、本発明は、これに限定されない。
例えば、経路計算手段１６０は、ステップＳ１７で事前に迂回経路を計算し、計算した迂回経路を示す迂回経路情報を、蓄積手段１２４に蓄積してもよい。
【０１２１】
（変形例３）
前記した実施形態では、ネットワークトポロジを表示するとしているが、本発明は、これに限定されない。
例えば、蓄積手段１２４に蓄積されている情報を用いて、プロセス毎のフローをネットワークトポロジに関連付けて表示してもよい。これによって、利用者は、ネットワークリソースの配置の偏りや、削減可能なネットワークリソースの有無を、容易に判断することができる。
【０１２２】
（変形例４）
前記した実施形態では、宛先ポート番号をマッチングルールとして用いることとしたが、このマッチングルールは、ＯｐｅｎＦｌｏｗで利用可能であれば、宛先ポート番号に限定されない。
【０１２３】
（変形例５）
前記した実施形態では、サーバ２０が、送信元端末装置２０１、情報処理端末装置２０２、又は、送信先端末装置２０３の何れかの役割を担うものとして説明したが、本発明は、これに限定されない。
つまり、サーバ２０は、決まった役割を予め与える必要はない。また、サーバ２０は、送信元端末装置２０１及び送信先端末装置２０３を兼用するなど、複数の役割を同時に担ってもよい。
【０１２４】
（変形例６）
前記した実施形態では、サーバ２０又はスイッチ３０が定期的にノード情報を送信することとして説明したが、本発明は、これに限定されない。
例えば、サーバ２０又はスイッチ３０が、隣接ノードが変更されたときにノード情報を送信し、このノード情報に基づいて、ネットワークトポロジ検出手段１２１が、ネットワークトポロジの変更を判定してもよい。
【０１２５】
（変形例７）
前記した実施形態では、経路計算手段１６０がダイクストラ法で経路計算を行うこととして説明したが、本発明は、これに限定されない。
例えば、経路計算手段１６０は、利用者が予め設定した通信回線４０毎のコスト値に基づいて、最小コストとなる経路を主要経路として計算してもよい。
【０１２６】
（変形例８）
並列プロセス計算手段１４０は、タスクの実行中に、蓄積手段１２４に蓄積されたプロセス進行情報を元に、並列化数を増減させてもよい。例えば、並列プロセス計算手段１４０は、予め設定した目標よりプロセス進行状況が遅れている場合に並列化数を増加させ、プロセス進行状況が目標を達成している場合に並列化数を減少させる。この場合、並列プロセス制御手段１５０は、並列化数の増減に応じて、増減したフローの転送コネクション情報を生成し、蓄積手段１２４に蓄積する。
この場合、情報収集手段２２０は、サーバ２０でのプロセスの進行状況を収集し、収集したプロセスの進行状況を示すプロセス進行情報を管理装置１０に送信する。そして、管理装置１０は、サーバ２０から送信されたプロセス進行情報を蓄積手段１２４に蓄積する。
【符号の説明】
【０１２７】
１  並列分散処理システム
２  処理装置
１０  管理装置
１１０  タスク入力手段
１２０  情報管理手段
１２１  ネットワークトポロジ検出手段
１２２  ボトルネック判定手段
１２３  タスク完了判定手段
１２４  蓄積手段
１３０  情報表示手段
１４０  並列プロセス計算手段（端末装置決定手段）
１５０  並列プロセス制御手段（端末装置制御手段）
１６０  経路計算手段
１７０  経路制御手段
２０  サーバ（端末装置）
２１０  命令実行手段
２２０  情報収集手段
２３０  並列処理実行手段
２４０  蓄積手段
２０１  送信元端末装置
２０２  情報処理端末装置
２０３  送信先端末装置
３０  スイッチ
３１０  命令実行手段
３２０  情報収集手段
３３０  パケット転送手段（データ転送手段）
４０  通信回線
５０  経路
６０  主要経路
【図１】
2014082650.tif 000003
【図２】
2014082650.tif 000004
【図３】
2014082650.tif 000005
【図４】
2014082650.tif 000006
【図５】
2014082650.tif 000007
【図６】
2014082650.tif 000008
【図７】
2014082650.tif 000009
【図８】
2014082650.tif 000010
【図９】
2014082650.tif 000011