以下、本発明を実施する形態について図を用いながら説明する。
まず、本発明における構成を図1〜図4を用いて説明する。
図1は、本実施例のネットワークシステムのトポロジ情報を示すブロック図である。
本実施例のネットワークシステムには、ネットワーク100、サーバ101、及び、端末102〜107が備わる。ネットワーク100は、スイッチ108〜113を備える。サーバ101、端末102〜107、及び、スイッチ108〜113は、リンク114〜128によって接続される。
ネットワーク100には、ネットワーク100に備わる一部のリンク及びスイッチによって、仮想ネットワークが構成される。例えば、サーバ101、端末102、端末103、スイッチ108、スイッチ109、スイッチ113、リンク114〜116、リンク122、及び、リンク123は、一つの仮想ネットワークを構成する。
ネットワーク100に含まれる仮想ネットワークには、仮想ネットワークを識別するための識別子があらかじめ割り当てられる。また、ネットワーク100における通信は、全て仮想ネットワークに従って行われる。
また、サーバ101は、後述する処理において、転送遅延が大きい原因の箇所を測定するために仮想ネットワークを新しく生成したり削除したりする。この際に、新しく生成される仮想ネットワークは、あらかじめ設定されていてもよい。具体的には、サーバ101は、通信に使用されていた仮想ネットワークから、あらかじめ設定されていた仮想ネットワークに通信を切り替えることによって、新たな仮想ネットワークにおける通信の転送遅延が測定されるようにしてもよい。
サーバ101は、図1に示すような、ネットワーク100に接続される端末102〜107に関する情報、及び、ネットワーク100の構成情報をあらかじめ保持する。具体的には、いずれのスイッチがいずれのリンクに接続され、いずれの端末がいずれのリンクに接続されるかなどのトポロジ情報を保持する。
また、サーバ101は、各端末102〜107が通信するフローに関する情報として、各フロー(パケットが送信される経路)における送信側端末、受信側端末、及び、各フローが従う仮想ネットワークを識別するフロー情報を保持する。
端末102〜107は、例えば、汎用PCでもよく、また、組込機器であってもよい。また、図1に示す端末102〜107は、6台のみであるが、本実施例において、少なくとも二つの端末がネットワーク100に接続されればよい。
各端末102〜107は、サーバ101、及び、他の端末との通信機能を持つ。また、各端末102〜107は、サーバ101から制御命令を受信した場合、受信した制御命令に従って他の端末に測定パケットを送信する機能を持つ。
さらに、端末102〜107は、他の端末から測定パケットを受信した場合、受信した測定パケットによる測定結果を、サーバ101に送信する機能を持つ。他にも、端末102〜107は、端末間の通信における転送遅延が要件を満たさなくなった場合に要件が満たされない旨をサーバ101に通知する機能を持つ。
スイッチ108〜113は、仮想ネットワーク機能を持つネットワーク中継装置であり、例えば、VLAN、及び、OpenFlowに対応したスイッチである。図1に示すスイッチ108〜113は、6台のみであるが、本実施例において、少なくとも三つのスイッチがネットワーク100の可用性を確保するために、ネットワーク100に備わればよい。なお、ネットワーク100には、スイッチ108〜113の各々の代わりに、ルータが備わってもよい。
なお、サーバ101及び端末102〜107は、SNTP、又は、IEEE1588などによって、相互に時刻同期を図る時刻同期機能を持つ。
図2は、本実施例のサーバ101の物理的な構成及び論理的な構成を示すブロック図である。
サーバ101は、ハードウェア201を備える計算機である。また、サーバ101は、ハードウェア201によってソフトウェア200の各機能を実行する。
ハードウェア201は、プロセッサ205、揮発性メモリ206、画面表示部207、通信インタフェース208、及び、記憶装置209を含む。プロセッサ205は、中央演算装置(CPU)等の演算装置であり、揮発性メモリ206に展開されたプログラムを実行することによって、ソフトウェア200を実装する。
揮発性メモリ206は、データ及びプログラム等が一時的に格納される記憶装置である。画面表示部207は、ユーザに情報を表示するための装置であり、例えば、ディスプレイ、又は、プリンタ等である。通信インタフェース208は、スイッチ113と通信するためのインタフェースである。
記憶装置209は、データ及びプログラム等が格納される記憶装置である。記憶装置209は、経路テーブル210と、初期遅延テーブル211と、遅延テーブル212と、ネットワークテーブル213と、トポロジ情報214とを有する。
経路テーブル210は、ネットワーク100に接続される端末間のすべての経路を示す情報を含む。初期遅延テーブル211は、ネットワーク100におけるトラヒックが少量であり、ネットワーク100が正常状態である場合に測定された転送遅延を示す情報を含む。
遅延テーブル212は、各経路において測定された転送遅延を示す情報を含む。ネットワークテーブル213は、仮想ネットワークに関する情報を含む。
トポロジ情報214は、ネットワーク100における端末102〜107、スイッチ108〜113、及び、リンク114〜126の接続情報を含む。トポロジ情報214は、図1に示すような情報を含めば、いかなるフォーマットによって接続情報を含んでもよい。
また、図2に示すトポロジ情報214は、記憶装置209にあらかじめ含まれるが、本実施例のトポロジ情報214は、サーバ101以外の情報サーバから必要に応じて転送され、揮発性メモリ206に格納されてもよい。
ソフトウェア200は、初期情報取得機能202、遅延箇所特定機能203、及び、遅延回避設定機能204を有する。ソフトウェア200の各機能に対応するプログラムは、揮発性メモリ206又は記憶装置209に格納される。
初期情報取得機能202は、初期遅延テーブル211に値を格納するための機能である。遅延箇所特定機能203は、転送遅延が所定の閾値を超過する原因の箇所を特定するための機能である。遅延回避設定機能204は、遅延箇所特定機能203によって特定された箇所を回避するように、仮想ネットワークを設定する機能である。
なお、ソフトウェア200の各機能の全体又は一部をソフトウェアPLC等の物理的な装置によって実装してもよい。また、各機能に相当するプログラム又は物理的な装置を、一つのプログラム又は一つの物理的な装置によって実装してもよいし、各機能に含まれる複数の処理を、異なるプログラム又は異なる物理的な装置によって実装してもよい。さらに、各機能において実行される同じ処理は、共通のプログラム又は共通の物理的な装置によって実装されてもよい。
図3は、本実施例の経路テーブル210を示す説明図である。
経路テーブル210は、端末102〜107のうちの二つの端末を結ぶ経路を識別するための情報を格納する。経路テーブル210の値は、ネットワークの初期情報取得機能202によって設定される。
経路識別子301は、経路を一意に識別するための識別子である。識別子は文字列又は数字で表現される。経路テーブル210において、経路識別子301の値は一意な値である。
端末1(302)は、端末102〜107のうち、経路識別子301が示す経路の送信側端末となる端末を示す。また、端末2(303)は、端末102〜107のうち、経路識別子301が示す経路の受信側端末となる端末を示す。
端末1(302)及び端末2(303)には、例えば端末名及び端末のMACアドレスといった、端末を識別するための情報が設定される。また、端末1(302)及び端末2(303)の組み合わせが、二以上の行に格納されてもよい。すなわち、送信側端末と受信側端末との組み合わせが同じであり、かつ、異なる経路を示す行が、経路テーブル210に複数格納されてもよい。
列304は、複数の列を含み、各列は、ホップ1、ホップ2、・・・、及び、ホップNのいずれかのスイッチを示す。列304は、端末1(302)が示す端末から、端末2(303)までに通過するスイッチを示す。
端末1(302)が示す端末から送信されたパケットは、最初に列304が示すホップ1のスイッチを通過し、次にホップ2のスイッチを通過する。パケットが、ホップI(I:自然数)のスイッチの次に端末2(302)が示す端末に送信される場合、列304のホップ(I+1)以降の列にはnull値が格納される。
例えば、行305は、図1に示す経路を示す。行305は、端末102から端末104までにパケットが送信される場合、パケットが通過する経路の一つには、スイッチ108、スイッチ109、及びスイッチ110を通過する経路があることを示し、その経路の識別子が経路1であることを示す。
なお、経路テーブル210の列304に、ホップ情報の代わりにリンクを識別するリンク識別子が格納されてもよい。また、経路テーブル210は、経路を通過するスイッチの情報以外にも、経路を識別するために必要な情報を含んでもよい。
図4は、本実施例の初期遅延テーブル211及び遅延テーブル212を示す説明図である。
初期遅延テーブル211の値は、ネットワーク100の初期情報取得機能202による処理によって設定される。また、遅延テーブル212の値は遅延箇所特定機能203による処理によって更新される。
経路識別子401は、経路を識別する識別子であり、経路テーブル210の経路識別子301と同じ値が設定される。経路識別子401と経路識別子301とは、対応する。また、初期遅延テーブル211における経路識別子401と、遅延テーブル212における経路識別子401とには同じ値が含まれる。各識別子は各テーブルにおいて一意である。
遅延402は、経路識別子401が示す経路におけるデータの転送遅延を示す。遅延402には、転送遅延の値が格納される。
なお、初期遅延テーブル211及び遅延テーブル212は、図4に示す転送遅延の時間以外にも、転送遅延に関する情報、例えば、転送遅延が発生した時間帯等の情報を含んでもよい。
また、本実施例において、経路テーブル210と、初期遅延テーブル211と、遅延テーブル212とは、異なるテーブルであるが、必要に応じて一つ、又は二つに統合されてもよい。例えば、経路識別子ごとの行を含む一つのテーブルが、経路テーブル210と、初期遅延テーブル211と、遅延テーブル212とが含む値を含んでもよい。
図5は、本実施例のネットワークテーブル213を示す説明図である。
ネットワークテーブル213は、ネットワーク100に含まれる仮想ネットワークを構成するリンクを示すテーブルである。ネットワークテーブル213は、仮想ネットワーク識別子501と、列502と、フロー情報503とを含む。
ネットワークテーブル213は、あらかじめユーザによって設定された仮想ネットワークを示す行を保持する。また、初期情報取得機能202、遅延箇所特定機能203及び遅延回避設定機能204によって、新しい仮想ネットワークが生成され、また、古い仮想ネットワークが削除される場合、ネットワークテーブル213は更新される。
仮想ネットワーク識別子501は、仮想ネットワークを識別する識別子である。仮想ネットワーク識別子501の識別子は、文字列又は数字で表現され、ネットワークテーブル213において一意である。
例えば、VLAN環境においては、仮想ネットワーク識別子501に格納される値は、VLAN−IDに相当する。仮想ネットワーク識別子501に格納される値によって、各スイッチは仮想ネットワークに従ってパケットを転送することができる。
列502には、リンク114〜128を各々示す複数の列が含まれる。列502は、仮想ネットワーク識別子501が示す仮想ネットワークに含まれるリンクを示す。列502には、各リンクが含まれるか否かを示す情報が格納される。
例えば、列502において"○"が格納されるリンクは、"○"が格納される行が示す仮想ネットワークに含まれることを示す。また、列502において"×"が格納されるリンクは、"×"が格納される行が示す仮想ネットワークに含まれないことを示す。なお、仮想ネットワークに含まれるか否かは、"○"又は"×"以外の他の表現方法によって表現されてもよい。
フロー情報503は、仮想ネットワーク識別子501が示す仮想ネットワークに従って通信が行われるフローを示す。本実施例におけるフローとは、端末間の通信である。ユーザは、フロー情報503にもあらかじめ値を格納する。フロー情報503には、いずれの端末が送信側端末であり、又は、受信側端末であるかを示す情報が含まれてもよい。
なお、ネットワークテーブル213は、図5に示すリンクの情報以外にも、転送遅延に関する情報を含んでもよい。
また、経路テーブル210と、初期遅延テーブル211と、遅延テーブル212と、ネットワークテーブル213とは、本実施例においてテーブルによって情報を保持するが、情報を保持できればいずれのフォーマットでもよい。例えば、経路テーブル210は、経路記憶部210であってもよく、経路記憶部210は、CSV形式によって情報を保持してもよい。
図6は、本実施例の初期情報取得機能202の処理を示すフローチャートである。
図6に示す処理は、サーバ101が起動した時、又は、ネットワーク100が構築された後等、ネットワーク100におけるトラヒック量が十分に小さい場合に実行される。例えば、図6に示す処理は、ネットワーク100におけるトラヒック量が小さいために、ネットワーク100における通信はすべて正常であるとユーザが判断され、ネットワーク100において正常な通信が行われていることを示す情報を、初期情報取得機能202がユーザから入力された場合、図6に示す処理が開始されてもよい。
また、ネットワーク100の各スイッチが自らを通過するトラヒックの量を測定する機能を有し、さらに、各スイッチにおけるトラヒック量があらかじめユーザに与えられた閾値より低く、ネットワーク100において正常な通信が行われていることを示す情報を、初期情報取得機能202が取得した場合、図6に示す処理が開始されてもよい。
初期情報取得機能202は、ネットワーク100の初期状態における転送遅延を取得する機能である。本実施例において、ネットワーク100が初期状態である場合とは、例えば、ネットワーク100が構築された直後である。ネットワーク100は、各端末間のトラヒック量等を考慮されて構築されるため、ネットワーク100が構築された直後においては、ネットワーク100において通信されるトラヒック量は、ネットワーク100の要件に対して十分に小さいものとする。
そして、ネットワーク100におけるトラヒック量が十分に小さい場合、いずれの端末間においても転送遅延の要件を下回る転送要件によってパケットが送受信されるものとする。このため、サーバ101は、初期情報取得機能202を用い、ネットワークのトラヒック量が十分に小さい時の転送遅延、すなわち、転送遅延が正常時の転送遅延を測定する。
ネットワーク100の初期状態において測定された転送遅延は、遅延箇所特定機能203において、転送遅延超過の原因であると推定した箇所が真に転送遅延超過の原因であるか否かを特定するために用いられる。
初期情報取得機能202は、まず、端末102〜107から二つの端末を、送信側端末及び受信側端末として任意に選択する(601)。以下において、初期情報取得機能202は、ステップ601において、図1に示す端末102を送信側端末として選択し、端末104を受信側端末として選択した場合を例に説明する。
ステップ601の後、初期情報取得機能202は、ステップ601において選択された二つの端末間の経路を、ネットワーク100のトポロジ情報214から全て抽出し、さらに、抽出された経路の中から一つを選択する(602)。例えば、図1に示す端末102からスイッチ108〜110を通過して端末104に到達する経路を選択する。ここで、端末102から端末104までの他の経路には、例えば、スイッチ108、スイッチ112、及びスイッチ110を通過する経路がある。
ステップ602の後、初期情報取得機能202は、ネットワークテーブル213とトポロジ情報214とに基づいて、ステップ602において選択された経路が、一意な経路として含まれる仮想ネットワークが既に存在するか否かを判定する(603)。ここで、選択された経路が一意な経路として含まれる仮想ネットワークとは、ステップ601において選択された二つの端末が、ステップ602において選択された経路以外の経路によって通信しないような仮想ネットワークという意味である。なお、初期情報取得機能202は、ネットワーク100に経路が一つのみしか存在しない場合、ステップ603においていずれの仮想ネットワークを選択してもよい。
ステップ603において、初期情報取得機能202は、具体的には、ステップ602において選択された経路に含まれるリンクを、トポロジ情報214に基づいて特定する。そして、初期情報取得機能202は、特定されたリンクを示す列のすべてに"○"が格納され、かつ、特定されていないリンクを示す列にすべて"×"が格納される、ネットワークテーブル213の行を抽出する。そして、初期情報取得機能202は、ネットワークテーブル213から行が抽出できた場合、選択された経路が、一意な経路として含まれる仮想ネットワークが既に存在すると判定する。
ステップ603において、経路が一意な経路として含まれる仮想ネットワークが存在しないと判定された場合(図6に示すステップ603において"No")、初期情報取得機能202は、ステップ602において選択された経路が一意な経路として含まれる仮想ネットワークを、新たに生成する(604)。
ステップ604において、初期情報取得機能202は、具体的には、仮想ネットワーク識別子501の新たな値(例えば、VLAN−ID)を、新たに生成する仮想ネットワークに割り当てる。そして、初期情報取得機能202は、ステップ602において選択された経路が一意な経路である新たな仮想ネットワークを、選択された経路に含まれる各スイッチに設定する。
例えば、スイッチ108〜113がVLANスイッチである場合、初期情報取得機能202は、VLANスイッチが有するWebサーバの機能を用い、ステップ602において選択された経路に含まれる各スイッチに、新たに割り当てられたVLAN−IDのVLANを設定する。
初期情報取得機能202は、ステップ604において新たな仮想ネットワークを生成した後、ネットワークテーブル213に新しい行を追加し、追加された行に新たに生成された仮想ネットワークに対応する値を格納する。具体的には、新たに生成された仮想ネットワークの識別子を仮想ネットワーク識別子501に格納し、新たに生成された仮想ネットワークに含まれるリンクに相当する列502に、"○"を格納する。
ステップ603において、ステップ602において選択された経路が、一意な経路として含まれる仮想ネットワークが既に存在すると判定された場合(図6に示すステップ603において"Yes")、又は、ステップ604の後、初期情報取得機能202は、データ送信要求を送信側端末に通知する(605)。ここで、データ送信要求には、選択された経路が、一意な経路として含まれる仮想ネットワークの識別子と、受信側端末を示す情報(識別子)と、測定パケットの送信要求とを含む。
さらに、ステップ605における送信側端末及び受信側端末とは、ステップ601において選択された送信側端末及び受信側端末である。また、データ送信要求に含まれる仮想ネットワークの識別子とは、仮想ネットワーク識別子501の値である。
また、受信側端末を示す情報とは、受信側端末のMACアドレスでもよいし、受信側端末のIPアドレスでもよいし、受信側端末の識別子(端末2(303)に相当)でもよい。また、データ送信要求には、受信側端末に測定パケットを送信するために必要な他の情報を含んでもよい。
データ送信要求を送ることによって、初期情報取得機能202は、送信側端末に、選択された経路が、一意な経路として含まれる仮想ネットワークを用いて、測定パケットを受信側端末に送信することを命令できる。
送信側端末は、データ送信要求を受信した場合、データ送信要求が示す仮想ネットワークを用いて、データ送信要求が示す受信側端末に、測定パケットを送信する。この時、測定パケットには、データ送信要求が示す仮想ネットワークの識別子、及び、送信側端末が測定パケットを送信する時刻(送信側端末のタイムスタンプ)が含まれる。
例えば、ネットワーク100がVLAN環境であれば、測定パケットのVLANヘッダにVLAN−IDが格納され、送信側端末におけるタイムスタンプが、測定パケットのアプリケーションデータに格納される。この測定パケットを送信するプロトコルはいずれのプロトコルでもよく、例えばVLANヘッダの後に直接アプリケーションデータ格納されるようなパケットのプロトコルでもよいし、VLANヘッダの上位にUDP/IPのヘッダが格納されるようなパケットのプロトコルでもよい。また、測定パケットには、測定に必要な他の情報が含まれてもよい。
受信側端末は、測定パケットを受信した場合、測定パケットを自らが受信した時刻、及び、測定パケットに含まれる送信側端末のタイムスタンプから、測定パケットの転送遅延を算出する。その後、受信側端末は、算出された転送遅延、送信側端末を示す情報、受信側端末を示す情報、及び、仮想ネットワークの識別子を含む測定結果を、サーバ101に送信する。
この時、測定結果には、測定パケットに関する他の情報が含まれてもよい。例えば、送信側端末は、所定の時間間隔ごとに、測定パケットを受信側端末に送信し、受信側端末は、受信した複数の測定パケットに従って、転送遅延の平均値及び最大値を算出してもよい。そして、受信側端末は、測定結果に転送遅延の平均値及び最大値を含めてもよい。
また、受信側端末は、測定パケットに含まれる情報と、受信側端末が測定パケットを受信した時刻を示すタイムスタンプとを含めてもよい。この場合、初期情報取得機能202は、受信した測定結果から、各経路の転送遅延を算出する。
なお、送信側端末及び受信側端末に、前述の測定パケットの送受信と転送遅延の算出とを行わせる方法には、例えば、変電所システムの通信規格であるIEC61850におけるGOOSE通信を用いる方法がある。IEC61850には、タイムスタンプを含んだデータを一方向に送信させるGOOSE通信、及び、サーバ及び端末間で要求応答を行うMMS通信などが規格される。
また、IEC61850では、MMS通信を用いてGOOSE通信を制御するパラメータを設定することにより、サーバ101が端末のGOOSE通信の開始及び終了を制御することが可能である。このため、サーバ101がGOOSE通信を制御するパラメータに、仮想ネットワークの識別子、及び、受信側端末のあて先アドレス等を含めることによって、サーバ101は、測定パケットを送信側端末から受信側端末へGOOSE通信によって送信させることが可能である。
初期情報取得機能202は、受信側端末から測定結果を受信した場合、初期遅延テーブル211に新しい行を追加し、受信した測定結果に基づいて、経路識別子401及び遅延402に値を設定する(606)。また、ステップ606において、初期情報取得機能202は、測定結果を得られた端末間の経路を示す情報を、経路テーブル210に格納する。
ステップ606において初期情報取得機能202は、具体的には、まず、初期遅延テーブル211に追加された行の遅延402に、受信した測定結果に含まれる転送遅延の値を格納する。そして、転送遅延を格納した行の経路識別子401に、初期遅延テーブル211のすべての経路識別子401の値の中で一意な値を格納する。
そして、ステップ606において初期情報取得機能202は、受信した測定結果に含まれる仮想ネットワークの識別子を仮想ネットワーク識別子501が示すネットワークテーブル213の行を特定し、特定された行から仮想ネットワークに含まれるリンクを抽出する。そして、初期情報取得機能202は、トポロジ情報214に基づいて、抽出されたリンクを通過する経路と当該経路が通過するスイッチを特定する。
そして、初期情報取得機能202は、経路テーブル210に新たな行を追加する。そして、新たな行の列304に抽出されたスイッチのうち、送信側端末に接続されるスイッチを"ホップ1"の列に格納し、その他のスイッチも経路に従って順に列304に格納する。また、初期情報取得機能202は、新たな行の経路識別子301に、初期遅延テーブル211における新たな行の経路識別子401と同じ値を格納する。
また、初期情報取得機能202は、新たな行の端末1(302)に、送信側端末を示す識別子を格納し、端末2(303)に、受信側端末を示す識別子を格納する。
ステップ606の後、初期情報取得機能202は、ステップ601において選択された二つの端末間に、転送遅延が測定されていない経路が他に存在するか否か判定する(607)。転送遅延が測定されていない経路が他に存在する場合(図6に示すステップ607の"No")、初期情報取得機能202は、ステップ602に戻り、転送遅延が測定されていない他の経路を選択する。
ステップ601において選択された二つの端末間の経路の転送遅延が、全て測定された場合(図6に示すステップ607の"Yes")、初期情報取得機能202は、ステップ601において選択されていない二つの端末の組み合わせが他に存在するか否かを判定する(608)。選択されていない二つの端末の組み合わせが他に存在する場合(図6に示すステップ608の"No")、初期情報取得機能202は、ステップ601に戻り、選択されていなかった二つの端末の組み合わせから、端末の組み合わせを一つ選択する。
選択されていない二つの端末の組み合わせが存在しない場合(図6に示すステップ608の"Yes")、初期情報取得機能202は、必要ない仮想ネットワークを削除する(609)。必要ない仮想ネットワークとは、ステップ604において生成された仮想ネットワークである。
ステップ609において、初期情報取得機能202は、ステップ604において仮想ネットワークを生成した方法と同様に仮想ネットワークを削除する。例えば、ネットワーク100のスイッチがVLANスイッチである場合、初期情報取得機能202は、VLANスイッチが有するWebサーバを介して、仮想ネットワーク識別子501(VLAN−ID)が示す仮想ネットワークを削除する。
さらに、ステップ609において、初期情報取得機能202は、ネットワークテーブル213から、削除された仮想ネットワークを示す行を削除する。
なお、ステップ604において生成された仮想ネットワークを、図6に示す処理の後に用いることが想定される場合、初期情報取得機能202は、ステップ609を行わずに仮想ネットワークを削除しなくてもよい。この場合、ユーザは、初期情報取得機能202に、ステップ604において生成された仮想ネットワークを削除しないようあらかじめ指示する。
ステップ609の後、初期情報取得機能202は、図6に示す処理を終了する。図6に示す処理によって、初期情報取得機能202は、端末102〜107のうちの二つの端末が相互に接続されるすべての経路について、初期状態における転送遅延を取得することができる。また、初期情報取得機能202は、経路テーブル210及び初期遅延テーブル211に、すべての経路に関する情報を格納する。
図7は、本実施例の遅延箇所特定機能203の処理を示すフローチャートである。
遅延箇所特定機能203は、初期情報取得機能202の処理が完了した後、図7に示す処理を常に行う。具体的には、遅延箇所特定機能203は、ユーザ等によって指示された時間間隔において定期的に、図7に示す処理を実行してもよいし、ユーザ等による指示によって図7に示す処理を実行してもよい。
また、遅延箇所特定機能203が終了し、遅延箇所特定機能203によって転送遅延超過の原因となるスイッチが特定された場合、遅延回避設定機能204による処理が開始される。遅延箇所特定機能203によって転送遅延超過の原因となるスイッチが特定されない場合、遅延箇所特定機能203の図7に示す処理が後述のステップ700から開始される。また、遅延回避設定機能204の処理が終了した場合、遅延箇所特定機能203による図7に示す処理が開始される。
端末102〜107は、相互にデータを通信中に、各通信における転送遅延が転送遅延の要件に相当する所定の閾値を超えたことを検出した場合、転送遅延の閾値を超えたことを示す通知(以下、異常通知)を、サーバ101に送信する。異常通知には、転送遅延が閾値を超えた通信に関する情報が含まれ、具体的には、送信側端末及び受信端末の識別情報(例えば、MACアドレス)、並びに、通信に用いられていた仮想ネットワークの識別子(例えば、VLAN−ID)などの情報が含まれる。端末102〜107は、転送遅延が閾値を超えた通信において受信したパケットから、異常通知に含める情報を抽出する。
なお、端末102〜107は、転送遅延の要件に相当する所定の閾値を、前述のステップ605において初期情報取得機能202から送信されてもよいし、遅延箇所特定機能203の開始時に遅延箇所特定機能203から送信されてもよい。また、ネットワーク100を構築したネットワーク管理者等が、端末102〜107の各々に、転送遅延の要件に相当する所定の閾値をあらかじめ設定してもよい。
また、端末102〜107が転送遅延を判定するために保持する所定の閾値は、転送遅延の要件を示す値であってもよいし、転送遅延の要件を示す値に各端末に従った値を加算又は減算した値でもよい。
遅延箇所特定機能203は、図7に示す処理において、遅延テーブル212の初期化処理として、遅延テーブル212に格納される値を全て削除する(700)。そして、遅延箇所特定機能203は、端末102〜107から、サーバ101の通信インタフェース208が、異常通知を受信したか否かを判定する(701)。
端末102〜107のいずれかから、異常通知を受信していない場合(図7に示すステップ701の"No")、遅延箇所特定機能203は、処理701を繰り返す。
端末102〜107のいずれかから、異常通知を受信した場合(図7に示すステップ701の"Yes")、遅延箇所特定機能203は、受信した異常通知に含まれる情報に従って、転送遅延が増加した通信においてパケットが通過した可能性のあるスイッチを抽出する(702)。
具体的には、遅延箇所特定機能203は、受信した異常通知に含まれる、転送遅延が増加した通信における送信側端末、受信側端末、及び仮想ネットワークの識別子を抽出する。さらに、遅延箇所特定機能203は、ネットワークテーブル213を参照し、抽出された仮想ネットワークの識別子を仮想ネットワーク識別子501が含むネットワークテーブル213の行を抽出する。
そして、ネットワークテーブル213の行を抽出することによって、遅延箇所特定機能203は、送信側端末及び受信側端末間の通信が通過する可能性のある経路を全て抽出でき、さらに、抽出された経路に含まれるスイッチを全て抽出できる。
なお、遅延箇所特定機能203は、異常通知に含まれる送信側端末及び受信側端末を示す情報を、異常通知に含まれる仮想ネットワークを示すネットワークテーブル213の行のフロー情報503に、蓄積してもよい。これによって、新たにフローが追加された場合に、ネットワークテーブル213を更新することができる。
ステップ702の後、遅延箇所特定機能203は、ステップ702において抽出された各スイッチを通過する経路から、転送遅延を測定する経路(測定用経路)を抽出する(703)。
具体的には、ステップ703において遅延箇所特定機能203は、ステップ702において抽出された各スイッチを通過し、かつ、経路のホップ数がNになるような経路を全て、測定用経路として抽出する。ここでNは、遅延箇所特定機能203にあらかじめユーザによって設定される値である。
ステップ703における測定用経路の抽出方法には、例えば、遅延箇所特定機能203が、ステップ702において抽出された各スイッチから一つのスイッチを任意で選択し、選択されたスイッチから送信側端末までのホップ数A、又は、選択されたスイッチから受信側端末までのホップ数Bが0〜Nのいずれかの値となる経路を特定する方法がある。この方法において、遅延箇所特定機能203は、選択されたスイッチから、ホップ数A及びホップ数Bの関係が(A+B=N)になる二つの経路を組み合わせ、組み合わされた経路を一つの測定用経路として抽出する。そして、遅延箇所特定機能203は、ステップ702において抽出されたスイッチを、すべて選択することによって、すべての測定用経路を抽出する。
また、ステップ703における測定用経路の抽出方法には、例えば、遅延箇所特定機能203が、経路テーブル210を用いて抽出する方法がある。この方法は、具体的には、遅延箇所特定機能203が、列304にステップ702において抽出されたスイッチのうち少なくとも一つが含まれ、かつ、列304にN個のスイッチを示す値が含まれる行を、測定用経路として、経路テーブル210からすべて抽出する方法である。
これによって、遅延箇所特定機能203は、ステップ702において特定された各スイッチを通過し、かつ、経路のホップ数がNになるような経路を、測定用経路として全て抽出できる。
遅延箇所特定機能203は、ステップ703において、ホップ数が同じ経路を抽出することによって、転送遅延の大きさの比較を容易にできる。また、前述において、経路のホップ数が一定値である経路を抽出したが、前述の方法によって抽出される経路数が少ない場合、遅延箇所特定機能203は、例えば、ホップ数がN−2〜N+2の範囲になるような経路を抽出してもよい。
ステップ703の後、遅延箇所特定機能203は、ステップ703において抽出された経路の中から順に一つの経路を選択する(704)。
ステップ704の後、遅延箇所特定機能203は、ネットワークテーブル213に基づいて、選択された経路が、一意な経路として含まれる仮想ネットワークが既に存在するか否かを判定する(705)。ステップ705における処理は、図6に示すステップ603における処理と同じである。
選択された経路が、一意な経路として含まれる仮想ネットワークが存在しない場合(図7に示すステップ705の"No")、遅延箇所特定機能203は、仮想ネットワークを新しく生成する(706)。ステップ706における処理は、図6に示すステップ604における処理と同じである。
選択された経路が、一意な経路として含まれる仮想ネットワークが存在する場合(図7に示すステップ705の"Yes")、又は、ステップ706において仮想ネットワークが新しく生成された後、遅延箇所特定機能203は、選択された経路の送信側端末に、データ送信要求を通知する(707)。ステップ707における処理は、図6に示すステップ605における処理と同じである。
送信側端末は、データ送信要求を受信した場合、図7に示すステップ605においてデータ送信要求を受信した場合と同じく、データ送信要求に含まれる仮想ネットワークの情報を用いて、測定パケットを受信側端末に送信する。そして、受信側端末は、測定結果をサーバ101に送信する。
遅延箇所特定機能203は、受信側端末から測定結果を受信した場合、遅延テーブル212に新しい行を追加し、受信した測定結果に従って、遅延402に転送遅延の値を格納する(708)。ここで、遅延箇所特定機能203は、ステップ704において選択された経路に相当する行を、経路テーブル210から抽出し、抽出された経路テーブル210行の経路識別子301を、遅延テーブル212の新たな行の経路識別子401に格納する。
ステップ708の後、遅延箇所特定機能203は、ステップ703において特定された測定用経路の中に、まだ転送遅延が測定されていない経路が存在するか否かを判定する(709)。転送遅延が測定されていない経路が存在する場合(図7に示すステップ709の"No")、遅延箇所特定機能203は、ステップ704に戻り、処理を繰り返す。
測定用経路の中に測定されていない経路が存在しない場合(図7に示すステップ709の"Yes")、遅延箇所特定機能203は、ステップ706において生成された仮想ネットワークのうち、必要ない仮想ネットワークを削除し、さらに、必要ない仮想ネットワークを示すネットワークテーブル213の行も削除する(710)。ステップ710における処理は、図7に示すステップ609と同じである。なお、遅延箇所特定機能203は、ステップ706において生成された仮想ネットワークが必要であると、ユーザによって指示された場合、ステップ706において生成された仮想ネットワークを削除しなくてもよい。
ステップ710の後、遅延箇所特定機能203は、遅延箇所の推定及び検証処理(711)を実行する。そして、ステップ711が終了した後、図7に示す処理を終了する。ステップ711の詳細を後述する。
図8は、本実施例の遅延箇所の推定及び検証処理を示すフローチャートである。
遅延箇所特定機能203は、ステップ702〜710によって値が設定された遅延テーブル212の行を、遅延402に格納された値が大きい順にソートする(801)。そして、遅延箇所特定機能203は、ソートされた遅延テーブル212の上位M行を抽出することによって、転送遅延が大きい上位M個の経路を抽出する。ここで、Mは、遅延箇所特定機能203にあらかじめユーザによって設定されるパラメータである。
ステップ801の後、遅延箇所特定機能203は、転送遅延が大きい上位M個の経路が通過するスイッチを抽出し、抽出されたスイッチを転送遅延超過の原因となるスイッチとして推定する(802)。ここで推定されるスイッチは、後述する原因スイッチの候補である。
具体的には、ステップ802において遅延箇所特定機能203は、遅延テーブル212から抽出されたM個の経路を示す行の経路識別子401と、経路識別子301とが一致する経路テーブル210の行をすべて抽出する。そして、ステップ802において遅延箇所特定機能203は、抽出されたすべての行の列304に含まれる値毎に、抽出されたすべての行の列304において出現する数をカウントする。これによって、遅延箇所特定機能203は、転送遅延が大きい上位M個の経路に含まれるスイッチ毎に、当該スイッチを通過する転送遅延が大きい経路の数を算出できる。このため、算出された数が多いスイッチは、転送遅延超過の原因である可能性が高い。
遅延箇所特定機能203は、算出された数が最も多いスイッチ、すなわち、転送遅延が大きい上位M個の経路が共通して通過したスイッチを抽出し、抽出されたスイッチが転送遅延超過の原因であると推定する。
遅延箇所特定機能203は、ステップ802において抽出されたスイッチを、転送遅延超過の原因であると推定するが、ステップ803以降の処理において、転送超過の原因であると推定されたスイッチ(以下、推定スイッチ)が転送遅延超過の原因であるか否かをさらに検証する。
ステップ802において抽出された推定スイッチが転送遅延超過の原因である場合、推定スイッチを通過する経路の転送遅延は、ネットワーク100の初期状態における転送遅延と比較して増加すると想定される。以下の処理において、このような想定に基づいて、推定スイッチが転送遅延超過の原因であるか否かを検証する。
ステップ802の後、遅延箇所特定機能203は、推定スイッチを通過する経路(以下、検証用経路)を示す行を、経路テーブル210に基づいて、抽出する(803)。具体的には、ステップ803において遅延箇所特定機能203は、経路テーブル210の列304に、推定スイッチが含まれる行を抽出する。
なお、ステップ803において、遅延箇所特定機能203は、推定スイッチが含まれる行を、経路テーブル210からすべて抽出してもよいし、一部の行のみを抽出してもよい。抽出される行の数(すなわち、検証用経路の数)は、ステップ802における推定を検証する精度に従って、ユーザによって定められる。
ステップ803の後、遅延箇所特定機能203は、測定用経路の転送遅延を測定したステップ704〜709における処理と同様の方法によって、ステップ803において抽出された検証用経路の転送遅延を測定する(804〜809)。ただし、ステップ808において、遅延箇所特定機能203が遅延テーブル212に何も設定しない点において、ステップ808とステップ708とは異なる。
ステップ809においてすべての検証用経路の転送遅延が測定されたと判定された場合、遅延箇所特定機能203は、ステップ808において取得されたすべての測定結果に基づいて、初期遅延テーブル211の遅延402の値と比較して転送遅延が増加した経路があり、かつ、転送遅延が増加した検証用経路が所定の指標と比較して多いか否かを、後述する方法によって判定する(810)。
具体的には、ステップ810において遅延箇所特定機能203は、初期遅延テーブル211から、転送遅延が測定された各検証用経路を示す経路識別子401を含む行の、遅延402の値を抽出する。そして、遅延箇所特定機能203は、抽出された遅延402の値とステップ808において測定された各検証用経路の転送遅延とを比較する。
そして、ステップ810において遅延箇所特定機能203は、転送遅延が増加した検証用経路が多いか否かを判定する。遅延箇所特定機能203は、例えば、各検証用経路において転送遅延が、初期状態の転送遅延よりα倍(α>1)になっている経路数をカウントし、カウントされた結果の経路数が、ステップ803において抽出された検証用経路数に占める割合を算出する。そして、遅延箇所特定機能203は、算出された割合がβ(0<β≦1)以上である場合、転送遅延が増加した経路が多いと判定する。ここでα及びβは、遅延箇所特定機能203にあらかじめ設定されるパラメータである。
このような方法によって、遅延箇所特定機能203は、転送遅延が一定の割合で増加した検証用経路が、転送遅延を測定された検証用経路全体において一定の割合を超えたことを判定することによって、検証用経路が共通して通過する推定スイッチが、転送遅延超過の原因であることを検証できる。
なお、前述の方法以外の方法でも、転送遅延が増加した検証用経路が多いか否かを定量的に判定できれば、遅延箇所特定機能203が、いかなる方法によって転送遅延が増加した経路が多いか否かを判定してもよい。
転送遅延が増加した検証用経路が多いと判定された場合(図8に示すステップ810の"Yes")、遅延箇所特定機能203は、推定スイッチが、転送遅延超過の原因であると判定する(811)。そして、推定スイッチを、転送遅延超過の原因のスイッチであると特定する。
一方、転送遅延が増加した経路が多くないと判定された場合(図8に示すステップ810の"No")、遅延箇所特定機能203は、推定スイッチが、転送遅延超過の原因ではないと判定する。そして、転送遅延が大きい経路が通過する数が、ステップ810において転送遅延超過の原因でないと判定された推定スイッチの次に多いスイッチが、存在するか否かを判定する(812)。
スイッチが存在すると判定された場合(図8に示すステップ812の"Yes")、遅延箇所特定機能203は、ステップ802に戻り、転送遅延が大きい経路が通過する数が、ステップ810において転送遅延超過の原因でないと判定された推定スイッチの次に多いスイッチを、新たな推定スイッチとして抽出する。
スイッチが存在しないと判定された場合(図8に示すステップ812の"No")、遅延箇所特定機能203は、転送遅延超過の原因は不明であると判定する(813)。この時、遅延箇所特定機能203は、画面表示部207に転送遅延が閾値を超えた通信に関する情報、及び、転送遅延超過の原因は不明であることを示す情報を表示してもよい。なお、この場合の転送遅延が大きい原因としては、例えばネットワークトラヒック量が一時的に増加したことが考えられる。
ステップ811又はステップ813の後、遅延箇所特定機能203は、ステップ806において生成された仮想ネットワークのうち、必要のない仮想ネットワークを削除し、さらに、必要ない仮想ネットワークを示すネットワークテーブル213の行も削除する(814)。ステップ814における処理は、図7に示すステップ609と同じである。なお、遅延箇所特定機能203は、ステップ806において生成された仮想ネットワークが必要であると、ユーザによって指示された場合、ステップ806において生成された仮想ネットワークを削除しなくてもよい。
ステップ814の後、遅延箇所特定機能203は、図8に示す遅延箇所の推定及び検証処理を終了する。
ステップ803〜812の処理によって、遅延箇所特定機能203は、転送遅延超過の原因となるスイッチを精度よく特定することができる。
図9は、本実施例の遅延回避設定機能204の処理を示すフローチャートである。
前述の通り、遅延箇所特定機能203が終了し、遅延箇所特定機能203によって転送遅延超過の原因となるスイッチが判定された場合、遅延回避設定機能204による処理が開始される。
図9に示す処理において、遅延回避設定機能204は、転送遅延超過の原因として特定されたスイッチ(以下、原因スイッチ)を通過するフローの一部の経路を変更することによって、転送遅延が閾値より大きいという問題を回避する。
まず、遅延回避設定機能204は、原因スイッチを通過するフローを抽出する(901)。ここで、遅延回避設定機能204は、図9に示す処理の開始時において、あらかじめフローに関する情報を保持しているものとする。
ステップ901において、具体的には、遅延回避設定機能204は、原因スイッチに接続されるリンクに"○"が格納されるネットワークテーブル213の行を抽出する。そして、遅延回避設定機能204は、抽出された行のフロー情報503から少なくとも一つのフローを示す値を抽出する。
ステップ901において抽出される値が示すフローには、図7に示すステップ701において受信側端末から異常通知が送信された際に、転送遅延が閾値を超えた端末間の通信を少なくとも含む。
ステップ901の後、遅延回避設定機能204は、ステップ901において値が抽出されたフローの中から、選択可能なフローが存在するか否かを判定する(902)。選択可能なフローとは、ステップ901において抽出されたフローのうち、ステップ905の処理が実行されていないフローである。
選択可能なフローが存在しない場合(図9に示すステップ902の"No")、遅延回避設定機能204は、転送遅延が閾値より大きいという問題を回避できないフローがあると判定し(903)、画面表示部207に原因スイッチに関する情報を表示し、図9に示す処理を終了する。
例えば、ステップ903の後、画面表示部207は、図1に示すネットワークのトポロジをディスプレイ等に表示し、さらに、原因スイッチを示す印をトポロジ内に表示してもよい。また、画面表示部207は、原因スイッチの名称、又は、原因スイッチのMACアドレスなどの識別情報を表示してもよい。
ステップ902において、選択可能なフローが存在すると判定された場合、遅延回避設定機能204は、ステップ901において抽出されたフローの中から一つのフローを、経路変更させるフローの候補(以下、フロー候補)として、選択する(904)。
ステップ904の後、遅延回避設定機能204は、選択されたフロー候補に代替経路が存在するか否か判定する(905)。
具体的には、ステップ905において遅延回避設定機能204は、フロー候補が通過する仮想ネットワークを示すネットワークテーブル213の行を抽出する。そして、遅延回避設定機能204は、抽出された行の列502のリンクを示す情報と、フロー候補の送信側端末及び受信側端末の情報とから、送信側端末及び受信側端末の間の経路を示す行に、原因スイッチを示す値が含まれない行がある場合、代替経路が存在すると判定する。
なお、ステップ905において、遅延回避設定機能204は、ネットワークの可用性を維持するために、原因スイッチを含まない代替経路が二つ以上存在するか否かを判定してもよい。
代替経路が存在しない場合(図9に示すステップ905の"No")、遅延回避設定機能204は、ステップ902に戻り、他のフローを、フロー候補として選択する。
一方、代替経路が存在すると判定された場合(図9に示すステップ905の"Yes")、遅延回避設定機能204は、フロー候補の代替経路の中から、一つの代替経路を選択する(906)。
ステップ906の後、遅延回避設定機能204は、処理704〜709における測定用経路の転送遅延を測定する処理と同様に、すべての代替経路の転送遅延を測定する(907〜911)。ただし、ステップ910は、遅延回避設定機能204が、遅延テーブル212に何も値を設定しない点において、ステップ708と処理が異なる。
すべての代替経路の転送遅延が測定された場合、遅延回避設定機能204は、測定された代替経路の転送遅延に問題があるか否かを判定する(912)。
例えば、ステップ912において遅延回避設定機能204は、初期遅延テーブル211の遅延402が示す転送遅延と、測定された代替経路の転送遅延とを比較する。そして、比較の結果、測定された代替経路の転送遅延が、初期遅延テーブル211が示す転送遅延のγ倍以下である場合、遅延回避設定機能204は、測定された代替経路の転送遅延に問題がないと判定する。ここでγは、遅延回避設定機能204にあらかじめ設定されるパラメータである。
前述のような方法によって、遅延回避設定機能204は、初期遅延テーブル211が示す転送遅延に、測定された代替経路の転送遅延が近い場合、経路を変更した場合も転送遅延が大きくならないため、フロー候補の経路を変更させても問題ないと判定する。なお、遅延回避設定機能204は、前述の方法以外の方法によって、代替経路の転送遅延に問題がないかを判定してもよい。
代替経路の転送遅延に問題があると判定された場合(図9に示すステップ912の"No")、遅延回避設定機能204は、ステップ902に戻り、他のフローをフロー候補として選択する。
少なくとも一つの代替経路の転送遅延に問題がないと判定された場合(図9に示すステップ912の"Yes")、遅延回避設定機能204は、ステップ912において問題がないと判定された代替経路の一つを特定し、フロー候補が特定された代替経路を通過するように、仮想ネットワークの構成を変更する。さらに、遅延回避設定機能204は、ステップ908において生成された仮想ネットワークのうち、必要ない仮想ネットワークを削除する(913)。
ステップ913における仮想ネットワークの削除処理は、ステップ609と同じである。なお、ステップ908において生成された仮想ネットワークが今後必要であると、ユーザによって指示された場合、ステップ908において生成された仮想ネットワークを削除しなくてもよい。
また、代替経路を通るように仮想ネットワークの構築を変更する方法は、例えば、そのフローが流れる仮想ネットワークを、原因スイッチを含まず、かつ、代替経路を含むような仮想ネットワークに変更する。この方法はステップ604における仮想ネットワークの生成方法と同様に実現できる。
ステップ913の後、遅延回避設定機能204は、ステップ901において値が抽出されたフローの中から、選択可能なフローが存在するか否かを判定する(914)。すなわち、遅延回避設定機能204は、代替経路を選択すべきフローが他にあるか否かを判定する。ステップ914において選択可能なフローが存在すると判定された場合、遅延回避設定機能204は、ステップ904に戻る。
ステップ914において選択可能なフローが存在しないと判定された場合、遅延回避設定機能204は、図9に示す処理を終了する。
図9に示す処理によれば、図7及び図8の遅延箇所特定機能203の処理によって原因スイッチを特定した後に、一部のフローの経路を切り替えることにより、ネットワーク100における転送遅延の要件を満たすようにすることをできる。
次に、図10を用いて本発明の具体的な動作を簡単に説明する。
図10は、本実施例の具体的な動作を説明するためのネットワーク1000を示す説明図である。
ネットワーク1000は、物理ネットワークを含み、また、ネットワーク1000には、一つの仮想ネットワークが構成される。ネットワーク1000には、可用性を実現するために複数の経路が設定される。ネットワーク1000にはサーバ101及び端末1001〜1004が接続される。また、ネットワーク1000にはスイッチ1005〜1011が備わる。
さらに、仮想ネットワーク1012は、以下に示す例において生成される仮想ネットワークである。
まず、サーバ101は、ネットワーク1000が構築された直後に初期情報取得機能202によって、ネットワーク1000の端末1001〜1004のうち二つの端末間の転送遅延を測定する。具体的には、ステップ601において、端末1001及び端末1002が選択され、ステップ602において端末1001及び端末1002を接続する経路の一つが選択される。ここでは、初期情報取得機能202が、端末1001からスイッチ1005、スイッチ1006、及びスイッチ1007を通過し、端末1002に到達する経路を、ステップ602において選択するものとする。
しかし、ネットワーク1000には、端末1001からスイッチ1005、スイッチ1009、及びスイッチ1007を通過して端末1002に到達する経路も存在するため、初期情報取得機能202は、ステップ603において経路が一意に定まる仮想ネットワークが存在しないと判定する。そして、初期情報取得機能202は、ステップ604において端末1001からスイッチ1005、ステップ1006、及びステップ1007を通過して端末1002に到達する経路によって構成される仮想ネットワーク1012を生成する。
なお、この仮想ネットワーク1012が事前に設定されている場合、ステップ603において、一意に定まる仮想ネットワークが存在すると判定されるため仮想ネットワーク1012は新たに生成されない。
初期情報取得機能202は、ステップ605において、仮想ネットワーク1012を示す仮想ネットワーク識別子(仮想ネットワーク識別子501の値に相当)、及び、受信側端末として端末1002の識別子を含むデータ送信通知を、端末1001に送信する。
端末1001は、サーバからデータ送信通知を受信した場合、仮想ネットワーク1012に従い、端末1002に測定パケットを送信する。この測定パケットには、端末1001が測定パケットを送信したタイムスタンプが格納される。
そして、端末1002は、測定パケットを受信した場合、端末1002の受信時刻及び測定パケットに含まれる送信時刻のタイムスタンプに基づいて、端末1001と端末1002との間の転送遅延を算出する。端末1002は、算出された転送遅延を含む測定結果を、サーバ101に送信する。
サーバ101が、測定結果を受信した場合、初期情報取得機能202は、ステップ606において、測定結果が示す転送遅延の値を、初期遅延テーブル211に格納する。
次に、初期情報取得機能202は、ステップ607において、ステップ601において選択された二つの端末の間に、他の経路が存在するか否かを判定する。端末1001からスイッチ1005、スイッチ1009、及びスイッチ1007を通過し、端末1002に到達する経路に、ステップ603の処理を行っていないため、初期情報取得機能202は、ステップ602に戻る。
初期情報取得機能202が端末1001と端末1002との間の全ての経路の転送遅延を測定した場合、初期情報取得機能202は、全ての端末の組み合わせに、ステップ602を実行したか否かを判定する。端末1001及び端末1003の組み合わせにステップ602を実行していないため、初期情報取得機能202は、ステップ601に戻る。
すべての二つの端末の組み合わせに、ステップ601〜ステップ608を実行することによって、端末1001〜1004のうち二つの端末間の全ての経路の転送遅延の情報が、初期遅延テーブル211に設定される。なお、仮想ネットワーク1012は、ステップ609において削除されてもよい。
ここで、以下の例における条件として、端末1001と端末1002とが通信しており、端末1001と端末1002との間の転送遅延の要件が6ms以下であり、また、転送遅延の閾値も6msであるものとする。また、各リンクの初期状態における転送遅延は1msであるとする。
前述の条件において、端末1001がネットワーク1000に相当する仮想ネットワークに従って端末1002にデータを送信し、端末1002において測定されたデータの転送遅延が8msである場合、端末1002は、転送遅延が閾値を超えたことを示す異常通知をサーバ101に送信する。ここでは、スイッチ1006が転送遅延超過の原因であると仮定する。
遅延箇所特定機能203は、ステップ701において転送遅延が閾値を超えたことを示す異常通知を受信した場合、ステップ702において端末1001と端末1002との通信において通過する可能性があるスイッチとして、スイッチ1005〜1010を抽出する。
次に、遅延箇所特定機能203は、ステップ703において、測定用経路を抽出する。例えば、スイッチ1006を通過する経路には、端末1001からスイッチ1005、スイッチ1006、及びスイッチ1007を通過し端末1002に到着する経路1、端末1001からスイッチ1005、スイッチ1009、及びスイッチ1007を通過し端末1002に到着する経路2、端末1001からスイッチ1005、スイッチ1006、スイッチ1008、スイッチ1009、及びスイッチ1007を通過し端末1002に到着する経路3、端末1001からスイッチ1005、スイッチ1006、スイッチ1010、スイッチ1009、及びスイッチ1007を通過し端末1002に到着する経路4、が存在する。
遅延箇所特定機能203は、ステップ703において、経路1〜経路4の中で、ホップ数Nの経路のみを測定用経路として抽出する。例えば、ホップ数Nが4であれば、経路1、及び経路2が測定用経路である。
次に、遅延箇所特定機能203は、ステップ704〜709において、測定用経路が、一意な経路として含まれるような仮想ネットワークを生成しつつ、測定用経路の転送遅延を測定する。例えば、前述の経路1を、ステップ704において選択した場合、遅延箇所特定機能203は、ステップ706において仮想ネットワーク1012を新たに生成し、ステップ707及び708において転送遅延を測定する。
遅延箇所特定機能203は、ステップ801において、ステップ704〜709において設定された遅延テーブル212の行を転送遅延(遅延402の値)が大きい順にソートする。ここで、前述の通りスイッチ1006が転送遅延超過の原因であるため、スイッチ1006を含む経路を示す行は上位に移動される。すなわち、ステップ802において、ソートされた遅延テーブル212の上位の行に相当する経路テーブル210の行において、スイッチ1006が列304に出現する数は多くなる。このため、遅延箇所特定機能203は、転送遅延超過の原因はスイッチ1006であると推定する。
次に、遅延箇所特定機能203は、ステップ803において、スイッチ1006を通過する経路を抽出し、ステップ804〜809において抽出された各経路の転送遅延を測定する。その結果、例えば、スイッチ1006を通過するホップ数Nが4の経路のほとんどについて、初期遅延テーブル211に設定される遅延402の値が4msであり、かつ、ステップ804〜809における測定結果が8msである場合、ステップ810において、遅延箇所特定機能203は、転送遅延が増加した経路が多いと判定し、ステップ811においてスイッチ1006が転送遅延超過の原因であると判定する。
さらに遅延回避設定機能204は、ステップ901においてスイッチ1006を通過するフローを、あらかじめ保持するフロー情報から抽出する。ここで遅延回避設定機能204は、他の端末のフローを把握していない場合、端末1001と端末1002とがネットワーク1000に相当する仮想ネットワーク上で通信するフローのみを抽出する。
遅延回避設定機能204は、ステップ902及び904において、スイッチ1006を通過しないフローを特定する。遅延回避設定機能204は、例えば、端末1001からスイッチ1005、スイッチ1009、及びスイッチ1007を通過して端末1002に到着する経路のフロー候補を特定する。このため、ステップ905において代替経路が存在すると判定され、遅延回避設定機能204は、ステップ906を実行する。
さらに、遅延回避設定機能204は、ステップ906〜911において代替経路の転送遅延を測定する。測定結果が4msである場合、代替経路の転送遅延は、初期遅延テーブル211の遅延402の4ms(初期状態の一つのリンクにおいて、1msの転送遅延が発生すると仮定)と比較し、ほとんど差がない。このため、遅延回避設定機能204は、ステップ912において代替経路の転送遅延に問題はないと判定し、ステップ913においてネットワーク1000に相当する仮想ネットワークの構成を、代替経路を通過するように設定する。
本実施例によれば、複数の経路が存在するネットワークにおいて、各端末間の転送遅延が要件を満たさない場合、転送遅延超過の原因となるスイッチを推定し、さらに検証することによって原因スイッチを精度よく特定することができる。
また、本実施例の遅延箇所特定機能203は、ネットワークにおけるトラヒック量が少ない初期状態において測定された転送遅延を用いて原因スイッチであるか否かを検証するため、精度よく原因スイッチを特定できる。
また、本実施例の遅延箇所特定機能203は、要件を満たさない転送遅延の通信が通過した可能性のあるスイッチを抽出し、抽出されたスイッチを通過する測定用経路を抽出する。そして、測定用経路のうち、転送遅延が大きい経路に共通して含まれるスイッチを、原因スイッチであると推定するため、精度よく原因スイッチである可能性があるスイッチの候補を抽出することができる。
また、本実施例の遅延箇所特定機能203は、推定された原因スイッチの候補を通過する検証用経路において、転送遅延が増加する経路が多いか否かを判定することによって、推定された原因スイッチの候補が、原因スイッチであるか否かを精度よく特定することができる。
さらに、本実施例の遅延回避設定機能204は、原因スイッチを通過するフローの経路を、原因スイッチを通過せず、かつ、転送遅延が改善される経路に変更するため、各端末間の転送遅延を速やかに改善することができる。
また、サーバ101の各機能は、経路が一意な仮想ネットワークを各スイッチに設定することによって、各経路の転送遅延を測定することができる。
なお、本発明は前述の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、前述の各構成、機能、処理手順等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、各機能を実現するプログラム、テーブル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。