以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の第1の実施の形態のストレージシステムの構成を示すブロック図である。
本実施の形態のストレージシステムは、複数のストレージ制御部10及び複数のディスクドライブ104によって構成される。
図1には、8個のストレージ制御部10A〜10Hを示すが、本実施の形態のストレージシステムは、任意の数のストレージ制御部10を含むことができる。
ストレージ制御部10は、ホスト計算機(図示省略)、ディスクドライブ104及び他のストレージ制御部10と接続され、ホスト計算機からディスクドライブ104へのアクセス要求を受信すると、そのアクセスを実行する。あるストレージ制御部10が、そのストレージ制御部10に接続されていないディスクドライブ104へのアクセス要求を受信した場合、そのストレージ制御部10は、そのアクセス要求を他のストレージ制御部10に転送する。また、あるストレージ制御部10が、そのストレージ制御部10に接続されていないホスト計算機への応答を受信した場合、そのストレージ制御部10は、その応答を他のストレージ制御部10に転送する。これらの手順については、後で詳細に説明する。
ストレージ制御部10は、ホスト接続制御部101、6ポートスイッチ102及びドライブ制御部103を備える。
ホスト接続制御部101は、ホスト計算機と接続され、それらのホスト計算機との通信を制御する。ホスト接続制御部101とホスト計算機との間で使用される通信プロトコルは、例えば、SCSI又はファイバーチャネル(FC)プロトコルである。あるいは、インターネットプロトコル(IP)又はiSCSI等のプロトコルが使用されてもよい。ホスト接続制御部101の構成については、後で詳細に説明する(図2参照)。
6ポートスイッチ102は、ホスト接続制御部101、ドライブ制御部103及び他のストレージ制御部10内の6ポートスイッチ102と接続され、これらの間の接続を切り替えるスイッチである。6ポートスイッチ102は、6個のポート(図示省略)を備え、各ポートが接続線110を介してそれぞれ一つのホスト接続制御部101、ドライブ制御部103又は他の6ポートスイッチ102と接続される。
例えば、ストレージ制御部10B内の6ポートスイッチ102Bの各ポートには、それぞれ、接続線110A〜110Fが接続される。
接続線110Aは、ストレージ制御部10A内の6ポートスイッチ102Aに接続される。
接続線110Bは、ストレージ制御部10B内のホスト接続制御部101Bに接続される。
接続線110Cは、図1に示さない他のストレージ制御部10内の6ポートスイッチ102に接続される。
接続線110Dは、ストレージ制御部10C内の6ポートスイッチ102Cに接続される。
接続線110Eは、ストレージ制御部10F内の6ポートスイッチ102Fに接続される。
接続線110Fは、ストレージ制御部10B内のドライブ制御部103Bに接続される。
ドライブ制御部103は、ディスクドライブ104と接続され、それらのディスクドライブ104へのアクセスの実行を制御する。ドライブ制御部103とディスクドライブ104との間で使用される通信プロトコルは、例えば、SCSI又はファイバーチャネル(FC)プロトコルである。またはSATA(Serial ATA)やSAS(Serial Attached SCSI)等のプロトコルでもよい。ドライブ制御部103の構成については、後で詳細に説明する(図3参照)。
ディスクドライブ104は、ハードディスクドライブである。ドライブ制御部103には、図1に示すように、複数のディスクドライブ104を接続することができる。これらの複数のディスクドライブ104は、データの信頼性向上のためにRAIDを構成してもよい。また、ディスクドライブ104は、ハードディスクドライブ以外の記憶装置(例えば、光磁気ディスク装置又は半導体記憶装置等)によって構成されてもよい。
本実施の形態の各ディスクドライブ104は、耐障害性を高めるため、二つのインターフェース(図示省略)を備え、各インターフェースがそれぞれ別のドライブ制御部103(例えば、ドライブ制御部103A及び103B)に接続される。
図2は、本発明の第1の実施の形態のホスト接続制御部101の構成を示すブロック図である。
ホスト接続制御部101は、ホストインターフェース(I/F)部201、プロセッサ202、メモリ203及びローカル接続スイッチ部204によって構成される。
ホストI/F部201は、ホスト計算機と接続され、図1において説明した所定のプロトコルによる通信を実行するインターフェースである。各ホスト接続制御部101は、任意の個数のホストI/F部201を備えることができる。本実施の形態では、各ホスト接続制御部101が4個のホストI/F部201を備える。
プロセッサ202は、メモリ203に格納された制御プログラムを実行して、ホスト接続制御部101の動作を制御する。具体的には、プロセッサ202は、各ホストI/F部201によるホスト計算機との通信を制御する。また、ローカル接続スイッチ部204を制御して、ホストI/F部201と6ポートスイッチ102との間の接続を切り替える。
メモリ203には、プロセッサ202によって実行される制御プログラムが格納される。また、プロセッサ202が制御プログラムを実行する際に必要なデータが格納されてもよい。
ローカル接続スイッチ部204は、各ホストI/F部201、プロセッサ202、メモリ203及び6ポートスイッチ102と接続され、これらの間の接続を切り替えるスイッチである。スイッチ102は、ローカル接続スイッチ部204を介して各ホストI/F部201と通信する。
本実施の形態では、ストレージ制御部10が6ポートスイッチ102を備えるため、ローカル接続スイッチ部204は、6ポートスイッチ102に接続されるポートを一つ備えればよい。また、ストレージ制御部が10ポートスイッチを備える場合(本発明第3の実施の形態参照)も、ローカル接続スイッチ部204は、10ポートスイッチに接続されるポートを一つ備えればよい。しかし、ストレージ制御部が8ポートスイッチを備える場合(本発明の第2の実施の形態参照)、ローカル接続スイッチ部204は、8ポートスイッチに接続されるポートを二つ備える必要がある。
図3は、本発明の第1の実施の形態のドライブ制御部103の構成を示すブロック図である。
ドライブ制御部103は、ドライブI/F部301、プロセッサ302、メモリ303及びローカル接続スイッチ部304によって構成される。
ドライブI/F部301は、ディスクドライブ104と接続され、それらのディスクドライブにアクセスするための通信を実行するインターフェースである。この通信には、図1において説明した所定のプロトコルが使用される。各ドライブ制御部103は、任意の個数のドライブI/F部301を備えることができる。本実施の形態では、各ドライブ制御部103が4個のドライブI/F部301を備える。
プロセッサ302は、メモリ303に格納された制御プログラムを実行して、ドライブ制御部103の動作を制御する。具体的には、プロセッサ302は、各ドライブI/F部301によるディスクドライブ104との通信を制御する。また、ローカル接続スイッチ部304を制御して、ドライブI/F部301と6ポートスイッチ102との間の接続を切り替える。
メモリ303には、プロセッサ302によって実行される制御プログラムが格納される。また、プロセッサ302が制御プログラムを実行する際に必要なデータが格納されてもよい。
ローカル接続スイッチ部304は、各ドライブI/F部301、プロセッサ302、メモリ303及び6ポートスイッチ102と接続され、これらの間の接続を切り替えるスイッチである。スイッチ102は、ローカル接続スイッチ部304を介して各ドライブI/F部301と通信する。
本実施の形態では、ストレージ制御部10が6ポートスイッチ102を備えるため、ローカル接続スイッチ部304は、6ポートスイッチ102に接続されるポートを一つ備えればよい。また、ストレージ制御部が10ポートスイッチを備える場合(本発明第3の実施の形態参照)も、ローカル接続スイッチ部304は、10ポートスイッチに接続されるポートを一つ備えればよい。しかし、ストレージ制御部が8ポートスイッチを備える場合(本発明の第2の実施の形態参照)、ローカル接続スイッチ部304は、8ポートスイッチに接続されるポートを二つ備える必要がある。
次に、本実施の形態において、ホスト計算機からディスクドライブ104へのアクセス及びそれに対する応答が伝送される経路を決定するアルゴリズム(ルーティングアルゴリズム)を、図を参照して説明する。
図4は、本発明の第1の実施の形態のストレージシステムの接続の説明図である。
図4は、図1のストレージ制御部10が、接続線110によって二次元の格子状に接続された状態を示す。本実施の形態では、一つのノード40(ストレージノード)が一つのストレージ制御部10に相当する。また、一つのリンク41が一つの接続線110に相当する。ホスト計算機及びディスクドライブ104については、図示を省略する。また、ストレージ制御部10内の構成についても、図示を省略する。
図4の各ノード40に表示された値(0、0)等は、各ノード40の二次元のアドレス(座標)である。二次元の格子状に配置された各ノード40は、二次元のアドレスによって識別される。図4において、あるノード40のアドレスを(x、y)とすると、xの値は、その左側に隣接するノード40のxの値より1だけ大きい。また、あるノード40のyの値は、その下側に隣接するノード40のyの値より1だけ大きい。以下の説明において、各ノード40をアドレスによって識別する必要がある場合は、ノード40(0、0)のようにアドレスを付けて表示する。図4には、ノード40(0、0)からノード40(2、2)まで、9個のノード40を示す。しかし、本実施の形態のストレージシステムは、任意の数のノード40をふくむことができる。
例えば、図4のノード40(1、1)がストレージ制御部10Bである場合、リンク41A、41B、41C及び41Dは、それぞれ、接続線110A、110C、110D及び110Eである。
なお、以下の説明では、便宜上、二次元の格子状に配置されたノード40の横方向の並びを「行」、縦方向の並びを「列」と記載する。例えば、図4において、ノード40(0、1)、(1、1)及び(2、1)は、一つの行を構成し、ノード40(0、0)、(0、1)及び(0、2)は、一つの列を構成する。
また、便宜上、xの値が大きくなる方向を「右側」、xの値が小さくなる方向を「左側」、yの値が大きくなる方向を「上側」、yの値が小さくなる方向を「下側」と記載する。例えば、ノード40(1、0)はノード40(0、0)の右側にあり、ノード40(0、1)はノード40(0、2)の下側にある。
図5は、本発明の第1の実施の形態のストレージシステムにおいて使用されるパケットの説明図である。
本実施の形態において、アクセス要求(読み出し要求又は書き込み要求)及び応答は、パケット50として、ノード40によってリンク41を介して送受信される。
図5A及び図5Bは、アクセス要求(読み出し要求及び書き込み要求)のパケット50の説明図であり、図5C及び図5Dは、応答のパケット50の説明図である。
図5Aは、読み出し要求のパケット50の説明図である。
読み出し要求のパケット50は、行き先アドレス501、迂回マーク502、逆探索マーク503、探索カウント504、要求種別505、タグ506、返送アドレス507、ボリューム番号508、ブロックアドレス509及びデータ長510の領域を含む。
行き先アドレス501は、パケット50の行き先のノード40の二次元のアドレス(a、b)である。具体的には、読み出し要求の対象のデータが格納されたディスクドライブ104が接続されたノード40のアドレスである。
迂回マーク502は、迂回が実行されているか否かを示すフラグである。迂回とは、障害が発生したノード40又はリンク41を避けるようにパケット50を送信する処理である。迂回については、後で詳細に説明する。
迂回マーク502の値は、迂回が実行されているときに「有効」、迂回が実行されていないときに「無効」となる。例えば、迂回マーク502が1ビットの領域であり、その値「1」が「有効」に、値「0」が「無効」に対応してもよい。以下の説明において、迂回マーク502を「有効」にすることを、「迂回マークを付与する」と記載する。また、迂回マーク502を「無効」にすることを、「迂回マークを消去する」と記載する。
逆探索マーク503は、実行されている探索の方向を示すフラグである。探索とは、行き先のノード40に至るリンク41に障害が発生した場合に、行き先のノード40に至る他のリンク41を介してパケット50の送信を試みる処理である。探索については、後で詳細に説明する。
逆探索マーク503の値は、時計回りの探索が実行されているときに「有効」、反時計回りの探索が実行されているときに「無効」となる。例えば、逆探索マーク503が1ビットの領域であり、その値「1」が「有効」に、値「0」が「無効」に対応してもよい。以下の説明において、逆探索マーク503を「有効」にすることを、「逆探索マークを付与する」と記載する。また、逆探索マーク503を「無効」にすることを、「逆探索マークを消去する」と記載する。
探索カウント504は、探索が開始されてからパケット50が送信された回数を示す。探索が開始されていないとき、探索カウント504の値は「0」となる。探索カウント504の値が「8」より大きくなってもなおパケット50が行き先のノード40に到達していない場合、行き先のノード40又はそこに至る全てのリンク41に障害が発生している。
要求種別505は、パケット50が読み出し要求又は書き込み要求のいずれであるかを示す。パケット50が読み出し要求である場合、要求種別505は、読み出し要求を示す値となる。
タグ506は、パケット50に関するアクセス要求を発行したホスト計算機のアクセス要求を識別する一意の識別子である。読み出し要求のパケット50において、タグ506は、読み出し要求を発行したホスト計算機の読出し要求を識別する一意の識別子である。
返送アドレス507は、アクセス要求のパケット50に対する応答のパケット50の返送先のノード40の二次元のアドレス(c、d)である。読み出し要求のパケット50において、返送アドレス507は、読み出し要求を発行したホスト計算機が接続されたノード40のアドレスである。
ボリューム番号508は、アクセス要求の対象のデータが格納されたディスクドライブ104の番号である。ボリューム番号508は、アクセス要求の対象のデータが格納された論理ボリュームの番号であってもよい。論理ボリュームとは、ホスト計算機によって論理的な一つのディスクドライブとして認識される記憶領域である。読み出し要求のパケット50において、ボリューム番号508は、読み出し要求の対象のデータが格納されたディスクドライブ104の番号又は論理ボリュームの番号である。
ブロックアドレス509は、アクセス要求の対象のデータが格納されたディスクドライブ104上または論理ボリューム内の記憶領域(例えば、論理ブロック)を示すアドレスである。読み出し要求のパケット50において、ブロックアドレス509は、読み出し要求の対象のデータが格納されたディスクドライブ104上または論理ボリューム内の論理ブロックのアドレスである。
データ長510は、アクセス要求の対象のデータの長さ(サイズ)である。例えば論理ブロックの数で示してもよい。読み出し要求のパケット50において、データ長510は、読み出し要求の対象のデータの長さである。
図5Bは、書き込み要求のパケット50の説明図である。
書き込み要求のパケット50は、行き先アドレス501、迂回マーク502、逆探索マーク503、探索カウント504、要求種別505、タグ506、返送アドレス507、ボリューム番号508、ブロックアドレス509、データ長510及び書き込みデータ511の領域を含む。以下、書き込み要求のパケット50の各領域について説明する。ただし、読み出し要求のパケット50と同様の部分については、説明を省略する。
行き先アドレス501は、書き込み要求の対象のデータが格納されるディスクドライブ104が接続されたノード40の二次元のアドレスである。
要求種別505は、パケット50が書き込み要求のパケット50であることを示す。
タグ506は、書き込み要求を発行したホスト計算機の書き込み要求を識別する一意の識別子である。
返送アドレス507は、書き込み要求を発行したホスト計算機が接続されたノード40のアドレスである。
ボリューム番号508は、書き込み要求の対象のデータが格納されるディスクドライブ104の番号又は論理ボリュームの番号である。
ブロックアドレス509は、書き込み要求の対象のデータが格納されるディスクドライブ104の番号上または論理ボリューム内の論理ブロックのアドレスである。
データ長510は、書き込み要求の対象のデータの長さである。
書き込みデータ511は、書き込み要求の対象のデータ、すなわち、書き込み要求によって書き込まれるデータである。
図5Cは、読み出し応答のパケット50の説明図である。
読み出し応答のパケット50は、要求された読み出しを実行したノード40(すなわち、読み出し要求の対象のデータをディスクドライブ104から読み出したノード40)によって作成され、要求元のノード40に返送される。
読み出し応答のパケット50は、行き先アドレス501、迂回マーク502、逆探索マーク503、探索カウント504、応答種別512、タグ506、アクセス結果513、データ長510及び読み出しデータ514の領域を含む。以下、読み出し応答のパケット50の各領域について説明する。ただし、アクセス要求のパケット50と同様の部分については、説明を省略する。
行き先アドレス501は、読み出し応答のパケット50に対応する読み出し要求を発行したホスト計算機が接続されたノード40の二次元のアドレスである。具体的には、行き先アドレス501の値は、対応する読み出し要求のパケット50の返送アドレス507の値と同じである。
応答種別512は、応答のパケット50が読み出し応答のパケット50であるか書き込み応答のパケット50であるかを示す。
タグ506は、応答の返送先のホスト計算機の読出し要求を識別する一意の識別子である。具体的には、タグ506の値は、読み出し応答のパケット50に対応する読み出し要求のパケット50のタグ506の値と同じである。
アクセス結果513は、要求されたアクセスが成功したか否かを示す。アクセスが失敗した場合、アクセス結果513は、失敗の状態(エラーの種類)に関する情報を含んでもよい。
読み出しデータ514は、読み出し要求によって読み出されたデータである。
図5Dは、書き込み応答のパケット50の説明図である。
書き込み応答のパケット50は、要求された書き込みを実行したノード40(すなわち、書き込み要求の対象のデータをディスクドライブ104に書き込んだノード40)によって作成され、要求元のノード40に返送される。
書き込み応答のパケット50は、行き先アドレス501、迂回マーク502、逆探索マーク503、探索カウント504、応答種別512、タグ506及びアクセス結果513の領域を含む。以下、書き込み応答のパケット50の各領域について説明する。ただし、読み出し応答のパケット50と同様の部分については、説明を省略する。
行き先アドレス501は、書き込み応答のパケット50に対応する書き込み要求を発行したホスト計算機が接続されたノード40の二次元のアドレスである。具体的には、行き先アドレス501の値は、対応する書き込み要求のパケット50の返送アドレス507の値と同じである。
タグ506は、応答の返送先のホスト計算機の書き込み要求を識別する一意の識別子である。具体的には、タグ506の値は、書き込み応答のパケット50に対応する書き込み要求のパケット50のタグ506の値と同じである。
図6は、本発明の第1の実施の形態の基本的なルーティングアルゴリズムのフローチャートである。
図6のフローチャートは、ノード40が自ノードと接続するホスト計算機からいずれかのディスクドライブ104内のデータへのアクセス要求を受信したとき(601)、ノード40が隣接する他のノード40からいずれかのディスクドライブ104内のデータへのアクセス要求を受信したとき(605)、又は、ノード40が隣接する他のノード40からいずれかのホスト計算機への応答を受信したとき(605)、それらの要求又は応答を受信したノード40によって実行される処理の手順である。この処理は、ノード40及びリンク41に障害が発生していないことを前提とする。
なお、この処理は、ノード40(すなわち、ストレージ制御部10)内のプロセッサによって実行される。具体的には、ホスト接続制御部101のプロセッサ201、ドライブ制御部103のプロセッサ302、6ポートスイッチ102のプロセッサ(図示省略)又は他のプロセッサ(図示省略)のいずれによって実行されてもよい。また、ノード40間のパケット50の送受信は、各ノード内の6ポートスイッチ102によって実行される。
ノード40は、自ノードと接続するホスト計算機からいずれかのディスクドライブ104内のデータへのアクセス(書き込み又は読み出し)要求を受信すると、図6の処理を開始する(601)。この処理が開始すると、ノード40は、アクセス要求の行き先のノード40(すなわち、アクセス要求の対象のデータが格納されている(又は、そのデータが書き込まれる)ディスクドライブ104に接続されたノード40)を特定し、そのノード40のアドレス(a、b)をアクセス要求に付与する(602)。具体的には、そのアクセス要求のパケット50の行き先アドレス501をアドレス(a、b)とする。
次に、ノード40は、自ノード40(すなわち、図6の処理を実行しているノード40自身)のアドレス(A、B)を取得し、そのアドレス(A、B)を、応答の返送先として、アクセス要求に付与する(603)。具体的には、アクセス要求のパケット50の返送アドレス507をアドレス(A、B)とする。
次に、応答を返答するために要求元のホスト計算機を記録する(604)。具体的には、アクセス要求のパケット50のタグ506を、要求元のホスト計算機のアクセス要求を一意に識別する値とする。
次に、ステップ608に進む。
一方、ノード40は、隣接する他のノード40からいずれかのディスクドライブ104内のデータへのアクセス要求を受信したとき、又は、隣接する他のノード40からいずれかのホスト計算機への応答を受信したときにも、図6の処理を開始する(605)。この処理が開始されると、ノード40は、受信した要求又は応答の行き先のノード40のアドレス(a、b)を取得する(606)。具体的には、受信した要求又は応答のパケット50の行き先アドレス501を参照して、その値を取得する。
次に、ノード40は、自ノード40のアドレス(A、B)を取得する(607)。
次に、ステップ608に進む。
ステップ608において、ノード40は、行き先のノード40のアドレス(a、b)と、自ノード40のアドレス(A、B)とを比較する。具体的には、A=aかつB=bであるか否かを判定する。
ステップ608において、A=aかつB=bでない(すなわち、A=aでないか、又は、B=bでない)と判定された場合、自ノード40は、行き先のノード40ではない。このため、受信した要求又は応答の送信先を決定するために、図7のステップ701に進む(1)。
一方、ステップ608において、A=aかつB=bであると判定された場合、自ノード40は、行き先のノード40である。
このため、次に、ノード40は、応答を受信したか、要求を受信したかを判定する(609)。具体的には、ノード40が、ホスト計算機又は隣接する他のノード40からディスクドライブ104内のデータへのアクセス要求を受信した場合(601、605)、ステップ609において、ノード40が要求を受信したと判定される。一方、ノード40が隣接する他のノード40からホスト計算機への応答を受信した場合(605)、ステップ609において、ノード40が応答を受信したと判定される。
ステップ609において、ノード40が応答を受信したと判定された場合、応答の返送先のホスト計算機が自ノード40に接続されている。このため、ノード40は、自ノード40に接続されたホスト計算機から、応答の返送先のホスト計算機を特定する(614)。具体的には、応答のパケット50のタグ506の値を参照して、その値に対応するホスト計算機を特定する。
次に、ノード40は、特定されたホスト計算機に応答を返送して(615)、処理を終了する(616)。
一方、ステップ609において、ノード40が要求を受信したと判定された場合、受信したアクセス要求の対象のデータは、自ノード40に接続されたディスクドライブ104に含まれる。このため、ノード40は、受信したアクセス要求に従って、自ノード40に接続されたディスクドライブ104にアクセスする(610)。
次に、ノード40は、実行したアクセス結果にしたがって、応答のパケット50を作成する(611)。
次に、ノード40は、作成した応答のパケット50の返送先のノード40を特定し、そのノード40のアドレスを新たな行き先のノード40のアドレス(a、b)として、応答のパケット50に付与する(612)。具体的には、実行したアクセスに関するアクセス要求のパケット50の返送アドレス507の値を参照する。そして、その返送アドレス507の値を、作成した応答のパケット50の行き先アドレス501として付与する。このとき、同様にして、アクセス要求のパケット50のタグ506の値を、応答のパケット50のタグ506として付与する。
次に、ノード40は、作成した応答の行き先のノード40のアドレス(a、b)と、自ノード40のアドレス(A、B)とを比較する。具体的には、A=aかつB=bであるか否かを判定する(613)。
ステップ613において、A=aかつB=bでないと判定された場合、自ノード40は、応答の行き先のノード40ではない。このため、当該応答の送信先を決定するために、図7のステップ701に進む(1)。
一方、ステップ613において、A=aかつB=bであると判定された場合、自ノード40は、応答の行き先のノード40である。このため、次に、ステップ614に進む。
ステップ614以降の処理は、既に説明した通りである。
図7は、本発明の第1の実施の形態の基本的なルーティングアルゴリズムにおいて、自ノード40が行き先のノード40でない場合に実行される処理のフローチャートである。
図6のステップ608又はステップ613において、A=aかつB=bでないと判定された場合(1)、ノード40は、A=aであるか否かを判定する(701)。
A=a又はB=bのいずれかを満たす場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ列又は同じ行にある。この場合、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路は、一つのみ存在する。
ステップ701において、A=aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ列にある。このため、ノード40は、B<bであるか否かを判定する(702)。
ステップ702において、B<bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側にある。このとき、自ノード40の上側に隣接するノード40(A、B+1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。すなわち、要求又は応答を自ノード40の上側に隣接するノード40(A、B+1)に送信すれば、その要求又は応答は、行き先のノード40に最も近づく。そこで、ノード40は、要求又は応答を隣接するノード40(A、B+1)に送信する(703)。そして、処理を終了する(704)。
一方、ステップ702において、B<bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側にある。このとき、自ノード40の下側に隣接するノード40(A、B−1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。すなわち、要求又は応答を自ノード40の下側に隣接するノード40(A、B−1)に送信すれば、その要求又は応答は、行き先のノード40に最も近づく。そこで、ノード40は、要求又は応答を隣接するノード40(A、B−1)に送信する(705)。そして、処理を終了する(706)。
ステップ701において、A=aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ列にない。このため、ノード40は、B=bであるか否かを判定する(707)。
ステップ707において、B=bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ行にある。このため、ノード40は、A<aであるか否かを判定する(708)。
ステップ708において、A<aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の右側にある。このとき、自ノード40の右側に隣接するノード40(A+1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。すなわち、要求又は応答を自ノード40の右側に隣接するノード40(A+1、B)に送信すれば、その要求又は応答は、行き先のノード40に最も近づく。そこで、ノード40は、要求又は応答を隣接するノード40(A+1、B)に送信する(709)。そして、処理を終了する(710)。
一方、ステップ708において、A<aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の左側にある。このとき、自ノード40の左側に隣接するノード40(A−1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。すなわち、要求又は応答を自ノード40の左側に隣接するノード40(A−1、B)に送信すれば、その要求又は応答は、行き先のノード40に最も近づく。そこで、ノード40は、要求又は応答を隣接するノード40(A−1、B)に送信する(711)。そして、処理を終了する(712)。
ステップ707において、B=bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ行又は同じ列のいずれにもない。このとき、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路は、二つ存在する。この場合、ノード40は、A<aであるか否かを判定する(713)。
ステップ713において、A<aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の右側(右上側又は右下側)にある。すなわち、右側に隣接するノード40(A+1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路の一方の上にある。このため、ノード40は、右側に隣接するノード40(A+1、B)との間の通信量αを測定する(714)。
次に、ノード40は、B<bであるか否かを判定する(715)。
ステップ715において、B<bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側(右上側又は左上側)にある。すなわち、上側に隣接するノード40(A、B+1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、上側に隣接するノード40(A、B+1)との間の通信量γを測定する(716)。
このとき、ステップ713及び715の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の右上側にある。
このとき、要求又は応答を自ノード40の右側に隣接するノード40(A+1、B)又は上側に隣接するノード40(A、B+1)のいずれに送信しても、その要求又は応答は、行き先のノード40に最も近づく。したがって、ノード40は、要求又は応答を右側に隣接するノード40又は上側に隣接するノード40のいずれに送信してもよい。
しかし、上記の測定された通信量α及びγに差がある場合、通信量が少ない方のノード40に送信した方が、データ伝送速度が向上する。このため、ノード40は、通信量を比較して、通信量が少ない方のノード40を送信先として選択する。
なお、行き先のノード40が自ノード40の右下側、左上側又は左下側にある場合も、同様にして、通信量の少ない方のノード40が送信先として選択される。
ノード40は、通信量α<通信量γであるか否かを判定する(717)。
ステップ717において、α<γであると判定された場合、ノード40は、要求又は応答を、右側に隣接するノード40(A+1、B)に送信する(718)。そして、処理を終了する(719)。
一方、ステップ717において、α<γでない(すなわち、γがα以下である)と判定された場合、ノード40は、要求又は応答を、上側に隣接するノード40(A、B+1)に送信する(720)。そして、処理を終了する(721)。
ステップ715において、B<bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側(右下側又は左下側)にある。すなわち、下側に隣接するノード40(A、B−1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、下側に隣接するノード40(A、B−1)との間の通信量δを測定する(722)。
このとき、ステップ713及び715の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の右下側にある。
このため、ノード40は、通信量α<通信量δであるか否かを判定する(723)。
ステップ723において、α<δであると判定された場合、ノード40は、要求又は応答を、右側に隣接するノード40(A+1、B)に送信する(718)。そして、処理を終了する(719)。
一方、ステップ723において、α<δでない(すなわち、δがα以下である)と判定された場合、ノード40は、要求又は応答を、下側に隣接するノード40(A、B−1)に送信する(724)。そして、処理を終了する(725)。
ステップ713において、A<aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の左側(左上側又は左下側)にある。すなわち、左側に隣接するノード40(A−1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路の一方の上にある。このため、ノード40は、左側に隣接するノード40(A−1、B)との間の通信量βを測定する(726)。
次に、ノード40は、B<bであるか否かを判定する(727)。
ステップ727において、B<bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側(右上側又は左上側)にある。すなわち、上側に隣接するノード40(A、B+1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、上側に隣接するノード40(A、B+1)との間の通信量γを測定する(728)。
このとき、ステップ713及び727の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の左上側にある。
このため、ノード40は、通信量β<通信量γであるか否かを判定する(729)。
ステップ729において、β<γであると判定された場合、ノード40は、要求又は応答を、左側に隣接するノード40(A−1、B)に送信する(730)。そして、処理を終了する(731)。
一方、ステップ729において、β<γでない(すなわち、γがβ以下である)と判定された場合、ノード40は、要求又は応答を、上側に隣接するノード40(A、B+1)に送信する(720)。そして、処理を終了する(721)。
ステップ727において、B<bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側(右下側又は左下側)にある。すなわち、下側に隣接するノード40(A、B−1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、下側に隣接するノード40(A、B−1)との間の通信量δを測定する(732)。
このとき、ステップ713及び727の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の左下側にある。
このため、ノード40は、通信量β<通信量δであるか否かを判定する(733)。
ステップ733において、β<δであると判定された場合、ノード40は、要求又は応答を、左側に隣接するノード40(A−1、B)に送信する(730)。そして、処理を終了する(731)。
一方、ステップ733において、β<δでない(すなわち、δがβ以下である)と判定された場合、ノード40は、要求又は応答を、下側に隣接するノード40(A、B−1)に送信する(724)。そして、処理を終了する(725)。
なお、ステップ703、705、709、711、718、720、724又は730において要求又は応答が送信されたとき、その要求又は応答を受信したノード40は、ステップ605から図6の処理を開始する。
次に、図6及び図7に示したルーティングアルゴリズムを適用した例を、図8及び図9を参照して説明する。
図8は、本発明の第1の実施の形態の基本的なルーティングアルゴリズムの適用例の説明図である。
図8は、行き先のノード40(a、b)が、自ノード40(A、B)と同じ行の右側にある場合を示す。
この場合、ステップ608において、A=aかつB=bでない(すなわち、A=aでないか、又は、B=bでない)と判定される。
ステップ701では、A=aでないと判定される。
ステップ707では、B=bであると判定される。
ステップ708では、A<aであると判定される。
このとき、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路は、一つのみ存在する。そして、自ノード40(A、B)の右側に隣接するノード40(A+1、B)は、その最短経路上にある。
このため、ノード40(A、B)は、右側に隣接するノード40(A+1、B)に要求又は応答を送信する(709)。そして、処理を終了する(710)。
図9は、本発明の第1の実施の形態の基本的なルーティングアルゴリズムの別の適用例の説明図である。
図9は、行き先のノード40(a、b)が、自ノード40(A、B)の右上側にある場合を示す。
この場合、ステップ608において、A=aかつB=bでない(すなわち、A=aでないか、又は、B=bでない)と判定される。
ステップ701では、A=aでないと判定される。
ステップ707では、B=bでないと判定される。
ステップ713では、A<aであると判定される。このため、右側に隣接するノード40(A+1、B)との間の通信量αが計測される(714)。
ステップ715では、B<bであると判定される。このため、上側に隣接するノード40(A、B+1)との間の通信量γが計測される(716)。
このとき、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路は、二つ存在する。そして、自ノード40(A、B)の右側に隣接するノード40(A+1、B)及び上側に隣接するノード40(A、B+1)は、それぞれ、二つの最短経路上にある。
ステップ717では、α<γであるか否かが判定される。図9の例では、α<γであると仮定する。したがって、ステップ717では、α<γであると判定される。
このため、ノード40(A、B)は、右側に隣接するノード40(A+1、B)に要求又は応答を送信する(718)。そして、処理を終了する(719)。
次に、ノード40又はリンク41の障害を考慮したルーティングアルゴリズムについて、図10〜図18を参照して説明する。
図10は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムのフローチャートである。
図10のフローチャートに示す処理は、図6及び図7の処理と同様に、ノード40が自ノードに接続するホスト計算機からいずれかのディスクドライブ104内のデータへのアクセス要求を受信したとき(1001)、ノード40が隣接する他のノード40からいずれかのディスクドライブ104内のデータへのアクセス要求を受信したとき(1005)、又は、ノード40が隣接する他のノード40からいずれかのホスト計算機への応答を受信したとき(1005)、それらの要求又は応答を受信したノード40によって実行される。
なお、この処理は、図6及び図7の処理と同様、ノード40(すなわち、ストレージ制御部10)内のプロセッサによって実行される。具体的には、ホスト接続制御部101のプロセッサ201、ドライブ制御部103のプロセッサ302、6ポートスイッチ102のプロセッサ(図示省略)又はその他のプロセッサ(図示省略)のいずれによって実行されてもよい。また、ノード40間のパケット50の送受信は、各ノード内の6ポートスイッチ102によって実行される。
図10以降の説明において、本実施の形態の基本的なルーティングアルゴリズム(図6〜図9)と同様の部分については、詳細な説明を省略する。
ノード40は、ホスト計算機からディスクドライブ104内のデータへのアクセス(書き込み又は読み出し)要求を受信すると、図10の処理を開始する(1001)。この処理が開始すると、ノード40は、アクセス要求の行き先のノード40(すなわち、アクセス要求の対象のデータが格納されている(又は、そのデータが書き込まれる)ディスクドライブ104に接続されたノード40)を特定し、そのノード40のアドレス(a、b)をアクセス要求に付与する(1002)。具体的には、そのアクセス要求のパケット50の行き先アドレス501をアドレス(a、b)とする。
次に、ノード40は、自ノード40(すなわち、図10の処理を実行しているノード40自身)のアドレス(A、B)を取得し、そのアドレス(A、B)を、応答の返送先として、アクセス要求に付与する(1003)。具体的には、アクセス要求のパケット50の返送アドレス507をアドレス(A、B)とする。
次に、応答を返答するために要求元のホスト計算機を記録する(1004)。具体的には、アクセス要求のパケット50のタグ506の値を、要求元のホスト計算機のアクセス要求を一意に識別する値とする。
次に、ステップ1009に進む。
一方、ノード40は、隣接する他のノード40からいずれかのディスクドライブ104内のデータへのアクセス要求を受信したとき、又は、隣接する他のノード40からいずれかのホスト計算機への応答を受信したときにも、図10の処理を開始する(1005)。
この処理が開始されると、ノード40は、受信した要求又は応答の送信元の隣接ノード40のアドレス(C、D)を記録する(1006)。アドレス(C、D)は、メモリ203、メモリ303又はその他のメモリに記録されてもよい。
次に、ノード40は、受信した要求又は応答の行き先のノード40のアドレス(a、b)を取得する(1007)。具体的には、受信した要求又は応答のパケット50の行き先アドレス501を参照して、その値を取得する。
次に、ノード40は、自ノード40のアドレス(A、B)を取得する(1008)。
次に、ステップ1009に進む。
ステップ1009において、ノード40は、行き先のノード40のアドレス(a、b)と、自ノード40のアドレス(A、B)とを比較する。具体的には、A=aかつB=bであるか否かを判定する。
ステップ1009において、A=aかつB=bでない(すなわち、A=aでないか、又は、B=bでない)と判定された場合、自ノード40は、行き先のノード40ではない。このため、ノード40は、受信した要求又は応答に迂回マーク502が付与されているか否かを判定する(1010)。具体的には、受信した要求又は応答のパケット50を参照し、迂回マーク502が付与されているか否か(すなわち、迂回マーク502の値が有効であるか否か)を判定する。ノード40又はリンク41に発生した障害のため、要求又は応答のパケット50の送信に失敗したとき、その障害を迂回するようにパケット50が再送信される。このとき、再送信されたパケット50に迂回マーク502が付与される。迂回マーク502が付与された場合の処理については、後で詳細に説明する。
ステップ1010において、受信した要求又は応答に迂回マーク502が付与されていると判定された場合、当該要求又は応答は、障害を迂回するように送信されている。ノード40は、このような要求又は応答の送信先を、通常とは異なる方法で決定する必要がある。このため、図18のステップ1801に進む(2)。
一方、ステップ1010において、受信した要求又は応答に迂回マーク502が付与されていないと判定された場合、その要求又は応答の送信先を決定するため、図11のステップ1101に進む(3)。
ステップ1009において、A=aかつB=bであると判定された場合、自ノード40は、行き先のノード40である。
このため、次に、ノード40は、応答を受信したか、要求を受信したかを判定する(1011)。具体的には、ノード40が、自ノードと接続するホスト計算機又は隣接する他のノード40からディスクドライブ104内のデータへのアクセス要求を受信した場合(1001、1005)、ステップ1011において、ノード40が要求を受信したと判定される。一方、ノード40が隣接する他のノード40からホスト計算機への応答を受信した場合(1005)、ステップ1011において、ノード40が応答を受信したと判定される。
ステップ1011において、ノード40が応答を受信したと判定された場合、応答の返送先のホスト計算機が自ノード40に接続されている。このため、ノード40は、自ノード40に接続されたホスト計算機から、応答の返送先のホスト計算機を特定する(1016)。具体的には、応答のパケット50のタグ506の値を参照して、その値に対応するホスト計算機を特定する。
次に、ノード40は、特定されたホスト計算機に応答を返送して(1017)、処理を終了する(1018)。
一方、ステップ1011において、ノード40が要求を受信したと判定された場合、受信したアクセス要求の対象のデータは、自ノード40に接続されたディスクドライブ104に含まれる。このため、ノード40は、受信したアクセス要求に従って、自ノード40に接続されたディスクドライブ104にアクセスする(1012)。
次に、ノード40は、実行したアクセス結果にしたがって、応答のパケット50を作成する(1013)。
次に、ノード40は、作成した応答のパケット50の返送先のノード40を特定し、そのノード40のアドレスを新たな行き先のノード40のアドレス(a、b)として、応答のパケット50に付与する(1014)。具体的には、実行したアクセスに関するアクセス要求のパケット50の返送アドレス507の値を参照する。そして、その返送アドレス507の値を、作成した応答のパケットに行き先アドレス501として付与する。このとき、同様にして、アクセス要求のパケット50のタグ506の値を、応答のパケット50のタグ506として付与する。
次に、ノード40は、行き先のノード40のアドレス(a、b)と、自ノード40のアドレス(A、B)とを比較する。具体的には、A=aかつB=bであるか否かを判定する(1015)。
ステップ1015において、A=aかつB=bでないと判定された場合、自ノード40は、行き先のノード40ではない。このため、当該応答の送信先を決定するために、図11のステップ1101に進む(3)。
一方、ステップ1015において、A=aかつB=bであると判定された場合、自ノード40は、行き先のノード40である。このため、次に、ステップ1016に進む。
ステップ1016以降の処理は、既に説明した通りである。
図11は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて、自ノード40が行き先のノード40でない場合に実行される処理のフローチャートである。
図10のステップ1010において、迂回マーク502が付与されていないと判定された場合、又は、図10のステップ1015において、A=aかつB=bでないと判定された場合(3)、ノード40は、A=aであるか否かを判定する(1101)。
ステップ1101において、A=aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ列にある。このため、ノード40は、要求又は応答を上側又は下側のいずれのノード40に送信するか決定するために、図15のステップ1501に進む(4)。
一方、ステップ1101において、A=aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ列にない。このため、ノード40は、B=bであるか否かを判定する(1102)。
ステップ1102において、B=bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ行にある。このため、ノード40は、要求又は応答を右側又は左側のいずれのノード40に送信するか決定するために、図16のステップ1601に進む(5)。
一方、ステップ1102において、B=bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)と同じ行又は同じ列のいずれにもない。このため、ノード40は、探索カウント>0であるか否かを判定する(1103)。
探索とは、行き先のノード40に至るリンク41に障害が発生したときに、他の使用可能なリンク41を探す動作である。探索カウントは、探索が開始されてから要求又は応答が送信された回数を示す。探索カウント=0のときは、探索が実行されていない。
後で説明するように、要求又は応答に逆探索マーク503が付与されていない場合、使用可能なリンク41を反時計回りに探索する。一方、要求又は応答に逆探索マーク503が付与されている場合、使用可能なリンク41を時計回りに探索する。
例えば、行き先のノード40(a、b)及び自ノード40(A、B)の関係が、a=A、b=B+1である場合、行き先のノード40は、自ノード40の上側に隣接している。これらのノード40の間のリンク41に障害が発生した場合であって逆探索マーク503が付与されてない場合、自ノード40は、要求又は応答を右側に隣接するノード40に送信する。この要求又は応答を受信したノード40は、その要求又は応答を上側に隣接するノード40に送信する。これを受信したノード40は、行き先のノード40に右側に隣接しているため、受信した要求又は応答を左側に隣接するノード40に送信する。この送信が成功すれば、要求又は応答が行き先のノード40に到達する。この送信が失敗した場合、行き先のノード40に到達する残りのリンク41を、反時計回りに探索する。
また、後で説明するように、要求又は応答が行き先のノード40に到達しないまま、探索カウントの値が「8」より大きくなった場合、行き先のノード40に至る全てのリンク41において、送信が失敗している。この場合、障害が報告され、探索が終了する。
ステップ1103において、探索カウント>0であると判定された場合、探索が実行されている。この場合、図13のステップ1301に進む(6)。
一方、ステップ1103において、探索カウント>0でないと判定された場合、探索が実行されていない。このとき、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路は、二つ存在する。この場合、ノード40は、A<aであるか否かを判定する(1104)。
ステップ1104において、A<aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の右側(右上側又は右下側)にある。すなわち、右側に隣接するノード40(A+1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路の一方の上にある。この場合、さらに詳細に行き先のノード40(a、b)の位置を特定するため、図12のステップ1201に進む(7)。
一方、ステップ1104において、A<aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の左側(左上側又は左下側)にある。すなわち、左側に隣接するノード40(A−1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路の一方の上にある。このため、ノード40は、左側に隣接するノード40(A−1、B)との間の通信量βを測定する(1105)。
次に、ノード40は、B<bであるか否かを判定する(1106)。
ステップ1106において、B<bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側(右上側又は左上側)にある。すなわち、上側に隣接するノード40(A、B+1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、上側に隣接するノード40(A、B+1)との間の通信量γを測定する(1107)。
このとき、ステップ1104及び1106の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の左上側にある。
すなわち、要求又は応答を自ノード40の左側に隣接するノード40(A−1、B)又は上側に隣接するノード40(A、B+1)のいずれに送信しても、その要求又は応答は、行き先のノード40に最も近づく。したがって、ノード40は、要求又は応答を左側に隣接するノード40又は上側に隣接するノード40のいずれに送信してもよい。
しかし、上記の測定された通信量β及びγに差がある場合、通信量が少ない方のノード40に送信した方が、データ伝送速度が向上する。このため、ノード40は、通信量を比較して、通信量が少ないほうのノード40を送信先として選択する。
ただし、ノード40又はリンク41の障害等のため、選択されたノード40に要求又は応答を送信することができなかった場合、通信量が多い方のノード40に要求又は応答が送信される。
なお、行き先のノード40が自ノード40の右下側、右上側又は左下側にある場合も、同様にして、通信量の少ない方のノード40が送信先として選択される。また、障害等のため、選択されたノード40に要求又は応答を送信することができなかった場合、通信量が多い方のノード40に要求又は応答が送信される。
このため、ノード40は、通信量β<通信量γであるか否かを判定する(1108)。
ステップ1108において、β<γであると判定された場合、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1109)。
次に、ノード40は、送信が成功したか否かを判定する(1110)。
ステップ1110において、送信が成功したと判定された場合、処理を終了する(1111)。
一方、ステップ1110において、送信が成功しなかったと判定された場合、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1112)。ノード40(A、B+1)は、ノード40(A−1、B)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1113)。
ステップ1113において、送信が成功したと判定された場合、処理を終了する(1114)。
一方、ステップ1113において、送信が成功しなかったと判定された場合、上側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を行き先のノード40に近づく方向に送信することができない。送信も2回失敗している二重障害であり、迂回して伝達可能経路を他に探索することは困難である。このため、ノード40は、伝送不能障害を報告し(1115)、処理を終了する(1116)。
なお、伝送不能障害の報告先は、例えば、ストレージシステム全体の障害を管理する障害管理端末(図示省略)である。あるいは、伝送不能障害は、いずれかのホスト計算機又は全てのホスト計算機であってもよい。
ステップ1108において、β<γでない(すなわち、γがβ以下である)と判定された場合、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1117)。
次に、ノード40は、送信が成功したか否かを判定する(1118)。
ステップ1118において、送信が成功したと判定された場合、処理を終了する(1119)。
一方、ステップ1118において、送信が成功しなかったと判定された場合、上側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1120)。ノード40(A−1、B)は、ノード40(A、B+1)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1113)。
ステップ1113において、送信が成功したと判定された場合、処理を終了する(1114)。
一方、ステップ1113において、送信が成功しなかったと判定された場合、先と同様に、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を行き先のノード40に近づく方向に送信することができない。このため、ノード40は、伝送不能障害を報告し(1115)、処理を終了する(1116)。
ステップ1106において、B<bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側(右下側又は左下側)にある。すなわち、下側に隣接するノード40(A、B−1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、下側に隣接するノード40(A、B−1)との間の通信量δを測定する(1121)。
このとき、ステップ1104及び1106の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の左下側にある。
このため、ノード40は、通信量β<通信量δであるか否かを判定する(1122)。
ステップ1122において、β<δであると判定された場合、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1123)。
次に、ノード40は、送信が成功したか否かを判定する(1124)。
ステップ1124において、送信が成功したと判定された場合、処理を終了する(1125)。
一方、ステップ1124において、送信が成功しなかったと判定された場合、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1126)。ノード40(A、B−1)は、ノード40(A−1、B)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1113)。
ステップ1113において、送信が成功したと判定された場合、処理を終了する(1114)。
一方、ステップ1113において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を、行き先のノード40に近づく方向に送信することができない。このため、ノード40は、伝送不能障害を報告し(1115)、処理を終了する(1116)。
ステップ1122において、β<δでない(すなわち、δがβ以下である)と判定された場合、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1127)。
次に、ノード40は、送信が成功したか否かを判定する(1128)。
ステップ1128において、送信が成功したと判定された場合、処理を終了する(1129)。
一方、ステップ1128において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1130)。ノード40(A−1、B)は、ノード40(A、B−1)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1113)。
ステップ1113において、送信が成功したと判定された場合、処理を終了する(1114)。
一方、ステップ1113において、送信が成功しなかったと判定された場合、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を行き先のノード40に近づく方向に送信することができない。このため、ノード40は、伝送不能障害を報告し(1115)、処理を終了する(1116)。
図12は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて、行き先のノード40が自ノード40の右上側又は右下側にある場合に実行される処理のフローチャートである。
図11のステップ1104において、A<aであると判定された場合(7)、行き先のノード40(a、b)は、自ノード40(A、B)の右側(右上側又は右下側)にある。すなわち、右側に隣接するノード40(A+1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路の一方の上にある。このとき、ノード40は、右側に隣接するノード40(A+1、B)との間の通信量αを測定する(1201)。
次に、ノード40は、B<bであるか否かを判定する(1202)。
ステップ1202において、B<bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側(右上側又は左上側)にある。すなわち、上側に隣接するノード40(A、B+1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、上側に隣接するノード40(A、B+1)との間の通信量γを測定する(1203)。
このとき、ステップ1104及び1202の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の右上側にある。
次に、ノード40は、通信量α<通信量γであるか否かを判定する(1204)。
ステップ1204において、α<γであると判定された場合、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1205)。
次に、ノード40は、送信が成功したか否かを判定する(1206)。
ステップ1206において、送信が成功したと判定された場合、処理を終了する(1207)。
一方、ステップ1206において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1208)。ノード40(A、B+1)は、ノード40(A+1、B)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1209)。
ステップ1209において、送信が成功したと判定された場合、処理を終了する(1210)。
一方、ステップ1209において、送信が成功しなかったと判定された場合、上側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を行き先のノード40に近づく方向に送信することができない。このため、ノード40は、伝送不能障害を報告し(1211)、処理を終了する(1212)。
ステップ1204において、α<γでない(すなわち、γがα以下である)と判定された場合、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1213)。
次に、ノード40は、送信が成功したか否かを判定する(1214)。
ステップ1214において、送信が成功したと判定された場合、処理を終了する(1215)。
一方、ステップ1214において、送信が成功しなかったと判定された場合、上側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1216)。ノード40(A+1、B)は、ノード40(A、B+1)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1209)。
ステップ1209において、送信が成功したと判定された場合、処理を終了する(1210)。
一方、ステップ1209において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を行き先のノード40に近づく方向に送信することができない。このため、ノード40は、伝送不能障害を報告し(1211)、処理を終了する(1212)。
ステップ1202において、B<bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側(右下側又は左下側)にある。すなわち、下側に隣接するノード40(A、B−1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る二つの最短経路のもう一方の上にある。このため、ノード40は、下側に隣接するノード40(A、B−1)との間の通信量δを測定する(1217)。
このとき、ステップ1104及び1202の判定の結果を合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の右下側にある。
このため、ノード40は、通信量α<通信量δであるか否かを判定する(1218)。
ステップ1218において、α<δであると判定された場合、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1219)。
次に、ノード40は、送信が成功したか否かを判定する(1220)。
ステップ1220において、送信が成功したと判定された場合、処理を終了する(1221)。
一方、ステップ1124において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1222)。ノード40(A、B−1)は、ノード40(A+1、B)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1209)。
ステップ1209において、送信が成功したと判定された場合、処理を終了する(1210)。
一方、ステップ1209において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を行き先のノード40に近づく方向に送信することができない。このため、ノード40は、伝送不能障害を報告し(1211)、処理を終了する(1212)。
ステップ1218において、α<δでない(すなわち、δがα以下である)と判定された場合、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1223)。
次に、ノード40は、送信が成功したか否かを判定する(1224)。
ステップ1224において、送信が成功したと判定された場合、処理を終了する(1225)。
一方、ステップ1224において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1226)。ノード40(A+1、B)は、ノード40(A、B−1)と同様、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にあるためである。
次に、ノード40は、送信が成功したか否かを判定する(1209)。
ステップ1209において、送信が成功したと判定された場合、処理を終了する(1210)。
一方、ステップ1209において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。すなわち、ノード40は、要求又は応答を行き先のノード40に近づく方向に送信することができない。このため、ノード40は、伝送不能障害を報告し(1211)、処理を終了する(1212)。
図13は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて実行される探索の処理のフローチャートである。
図11のステップ1103において、探索カウント>0であると判定された場合(6)、探索が実行されている。この場合、ノード40は、探索カウントの値を「1」増加させる(1301)。
次に、ノード40は、A<aであるか否かを判定する(1302)。
ステップ1302において、A<aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の右側(右上側又は右下側)にある。この場合、図14のステップ1401に進む(8)。
一方、ステップ1302において、A<aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の左側(左上側又は左下側)にある。このため、ノード40は、B<bであるか否かを判定する(1303)。
B<bである場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側(右上側又は左上側)にある。すなわち、ステップ1303においてB<bであると判定された場合、ステップ1302の判定の結果と合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の左上側にある。
次に、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1304)。具体的には、受信したアクセス要求又は応答のパケット50の逆探索マーク503の値が有効になっているか否かを判定する。
逆探索マーク503とは、探索の方向を指定する標識である。要求又は応答に逆探索マーク503が付与されていない場合、ノード40は、行き先のノード40に至る使用可能なリンク41を反時計回りに探索するように要求又は応答を送信する。一方、要求又は応答に逆探索マーク503が付与されている場合、ノード40は、行き先のノード40に至る使用可能なリンク41を時計回りに探索するように要求又は応答を送信する。
なお、逆探索マーク503は、探索が開始された時点では付与されていない。反時計回りに探索する過程で、リンク41等の障害のためそれ以上の探索ができなくなった場合に、逆探索マーク503が付与され、時計回りの探索が開始される。
ステップ1304において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1305)。行き先のノード40が自ノード40の左上側に位置するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1306)。
ステップ1306において、送信が成功したと判定された場合、処理を終了する(1307)。
一方、ステップ1307において、送信が成功しなかったと判定された場合、上側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1308)、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1309)。行き先のノード40が自ノード40の左上側に位置するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このように、時計回りの探索が開始される。
ステップ1304において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1305からステップ1308までを実行せず、ステップ1309を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1310)。
ステップ1310において、送信が成功したと判定された場合、処理を終了する(1311)。
一方、ステップ1310において、送信が成功しなかったと判定された場合、反時計回り又は時計回りのいずれの方向の探索も、それ以上することができない。このため、ノード40は、伝送不能障害を報告し(1312)、処理を終了する(1313)。
ステップ1303において、B<bでないと判定された場合、ステップ1302の判定の結果と合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の左下側にある。
次に、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1314)。具体的には、受信したアクセス要求又は応答のパケット50の逆探索マーク503の値が有効になっているか否かを判定する。
ステップ1314において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1315)。行き先のノード40が自ノード40の左下側に位置するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1316)。
ステップ1316において、送信が成功したと判定された場合、処理を終了する(1317)。
一方、ステップ1316において、送信が成功しなかったと判定された場合、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1318)、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1319)。行き先のノード40が自ノード40の左下側に位置するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このように、時計回りの探索が開始される。
ステップ1314において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1315からステップ1318までを実行せず、ステップ1319を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1310)。以後、上記の説明の通り、ステップ1310からステップ1313までを実行する。
図14は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて実行される探索の処理のうち、行き先のノード40(a、b)が自ノード40(A、B)の右上側又は右下側にある場合に実行される処理のフローチャートである。
図13のステップ1302において、A<aであると判定された場合(8)、行き先のノード40(a、b)は、自ノード40(A、B)の右側(右上側又は右下側)にある。この場合、ノード40は、B<bであるか否かを判定する(1401)。
B<bである場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側(右上側又は左上側)にある。すなわち、ステップ1401においてB<bであると判定された場合、ステップ1302の判定の結果と合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の右上側にある。
次に、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1402)。具体的には、受信したアクセス要求又は応答のパケット50の逆探索マーク503の値が有効になっているか否かを判定する。
ステップ1402において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1403)。行き先のノード40が自ノード40の右上側に位置するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1404)。
ステップ1404において、送信が成功したと判定された場合、処理を終了する(1405)。
一方、ステップ1404において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1406)、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1407)。行き先のノード40が自ノード40の右上側に位置するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このようにして、時計回りの探索が開始される。
ステップ1402において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1403からステップ1406までを実行せず、ステップ1407を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1408)。
ステップ1408において、送信が成功したと判定された場合、処理を終了する(1409)。
一方、ステップ1408において、送信が成功しなかったと判定された場合、反時計回り又は時計回りのいずれの方向の探索も、それ以上することができない。このため、ノード40は、伝送不能障害を報告し(1410)、処理を終了する(1411)。
ステップ1401において、B<bでないと判定された場合、ステップ1302の判定の結果と合わせると、行き先のノード40(a、b)は、自ノード40(A、B)の右下側にある。
次に、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1412)。具体的には、受信したアクセス要求又は応答のパケット50の逆探索マーク503の値が有効になっているか否かを判定する。
ステップ1412において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1413)。行き先のノード40が自ノード40の右下側に位置するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1414)。
ステップ1414において、送信が成功したと判定された場合、処理を終了する(1415)。
一方、ステップ1414において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1416)、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1417)。行き先のノード40が自ノード40の右下側に位置するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このように、時計回りの探索が開始される。
ステップ1412において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1413からステップ1416までを実行せず、ステップ1417を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1408)。以後、上記の説明の通り、ステップ1408からステップ1411までを実行する。
図15は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて、行き先のノード40(a、b)が自ノード40(A、B)と同じ列にある場合に実行される処理のフローチャートである。
図11のステップ1101において、A=aであると判定された場合(4)、行き先のノード40(a、b)は、自ノード40(A、B)と同じ列にある。この場合、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路は、一つのみ存在する。ノード40は、要求又は応答を上側又は下側のいずれのノード40に送信するか決定するために、B<bであるか否かを判定する(1501)。
ステップ1501において、B<bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側にある。この場合、上側に隣接するノード40(A、B+1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。このため、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1502)。
次に、ノード40は、送信が成功したか否かを判定する(1503)。
ステップ1503において、送信が成功したと判定された場合、処理を終了する(1504)。
一方、ステップ1503において、送信が成功しなかったと判定された場合、上側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。この場合、ノード40は、B+1=bであるか否かを判定する(1505)。
ステップ1505において、B+1=bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側に隣接する。この場合、行き先のノード40に至る他のリンク41を探索するために、図17のステップ1701に進む(9)。
一方、ステップ1505において、B+1=bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の上側にあるが、隣接しない。この場合、ノード40は、障害が発生したノード40又はリンク41を迂回して要求又は応答を送信するため、ステップ1522に進む。
ステップ1501において、B<bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側にある。この場合、下側に隣接するノード40(A、B−1)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。このため、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1506)。
次に、ノード40は、送信が成功したか否かを判定する(1507)。
ステップ1507において、送信が成功したと判定された場合、処理を終了する(1508)。
一方、ステップ1507において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。この場合、ノード40は、B−1=bであるか否かを判定する(1509)。
ステップ1509において、B−1=bであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側に隣接する。この場合、ノード40は、行き先のノード40に至る他のリンク41を探索するために、探索カウントの値を1増加させる(1510)。
次に、ノード40は、探索カウントの値が8より大きいか否かを判定する(1511)。
ステップ1511において、探索カウントの値が8より大きいと判定された場合、行き先のノード40(a、b)に至る全てのリンク41において送信が失敗している。このため、伝送不能障害を報告して(1520)、処理を終了する(1521)。
一方、ステップ1511において、探索カウントの値が8より大きくないと判定された場合、行き先のノード40(a、b)に至る送信可能なリンク41が残っている可能性がある。このため、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1512)。
ステップ1512において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1513)。行き先のノード40が自ノード40の下側に隣接するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1514)。
ステップ1514において、送信が成功したと判定された場合、処理を終了する(1515)。
一方、ステップ1514において、送信が成功しなかったと判定された場合、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1516)、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1517)。行き先のノード40が自ノード40の下側に隣接するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このようにして、時計回りの探索が開始される。
ノード40(A−1、B)及びノード40(A+1、B)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路(すなわち、最短経路の次に短い経路)上にある。
ステップ1512において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1513からステップ1516までを実行せず、ステップ1517を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1518)。
ステップ1518において、送信が成功したと判定された場合、処理を終了する(1519)。
一方、ステップ1518において、送信が成功しなかったと判定された場合、反時計回り又は時計回りのいずれの方向の探索も、それ以上することができない。このため、ノード40は、伝送不能障害を報告し(1520)、処理を終了する(1521)。
ステップ1509においてB−1=bでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の下側にあるが、隣接しない。この場合、ノード40は、障害が発生したノード40又はリンク41を迂回して要求又は応答を送信する。ステップ1505においてB+1=bでないと判定された場合も同様である。
迂回とは、行き先のノード40が自ノード40と同じ列又は同じ行にあり、かつ、自ノード40と隣接しない場合であって、自ノード40と行き先のノード40との間のノード40又はリンク41に障害が発生した場合に、その障害を避けるために、自ノード40から行き先のノード40に至る二番目に短い経路上のノード40に要求又は応答を送信する処理である。この場合、ノード40は、自ノード40から行き先のノード40に至る最短経路上のノード40にパケット50を送信することができないためである。例えば、行き先のノード40が自ノード40と同じ列の上側にあり、かつ、自ノード40と隣接しない場合であって、自ノード40の上側に隣接するノード40に障害が発生した場合、迂回が開始される。
ステップ1509においてB−1=bでないと判定された場合、及び、ステップ1505においてB+1=bでないと判定された場合、自ノード40の右側に隣接するノード40(A+1、B)及び自ノード40の左側に隣接するノード40(A−1、B)は、自ノード40から行き先のノード40に至る二番目に短い経路上にある。したがって、要求又は応答のパケット50は、自ノード40の右側又は左側に隣接するノード40に送信される。パケット50は、これらのうちいずれのノード40に送信されてもよいが、例えば、通信量が少ない方に送信される。このとき、パケット50に迂回マーク502が付与される。右側又は左側に隣接するノード40は、次に、受信したパケット50を上側に隣接するノード40に送信する。このとき、迂回マーク502が消去され、迂回が終了する。
ノード40は、まず、要求又は応答に迂回マーク502を付与する(1522)。具体的には、ノード40は、要求又は応答のパケット50の迂回マーク502の値を有効にする。
ノード40は、次に、自ノード40(A、B)と右側に隣接するノード40(A+1、B)との間の通信量αを計測する(1523)。
次に、ノード40は、自ノード40(A、B)と左側に隣接するノード40(A−1、B)との間の通信量βを計測する(1524)。
ノード40(A+1、B)及びノード40(A−1、B)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路上にある。
次に、ノード40は、通信量αが通信量βより小さいか否かを判定する(1525)。
ステップ1525において、通信量αが通信量βより小さいと判定された場合、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1526)。
次に、ノード40は、送信が成功したか否かを判定する(1527)。
ステップ1527において、送信が成功したと判定された場合、処理を終了する(1528)。
一方、ステップ1527において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1529)。
次に、ノード40は、送信が成功したか否かを判定する(1518)。ステップ1518以降の処理は、上記で説明した通りである。
ステップ1525において、通信量αが通信量βより小さくないと判定された場合、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1530)。
次に、ノード40は、送信が成功したか否かを判定する(1531)。
ステップ1531において、送信が成功したと判定された場合、処理を終了する(1532)。
一方、ステップ1531において、送信が成功しなかったと判定された場合、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1533)。
次に、ノード40は、送信が成功したか否かを判定する(1518)。ステップ1518以降の処理は、上記で説明した通りである。
図16は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて、行き先のノード40(a、b)が自ノード40(A、B)と同じ行にある場合に実行される処理のフローチャートである。
図11のステップ1102において、B=bであると判定された場合(5)、行き先のノード40(a、b)は、自ノード40(A、B)と同じ行にある。この場合、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路は、一つのみ存在する。ノード40は、要求又は応答を右側又は左側のいずれのノード40に送信するか決定するために、A<aであるか否かを判定する(1601)。
ステップ1601において、A<aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の右側にある。この場合、右側に隣接するノード40(A+1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。このため、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1602)。
次に、ノード40は、送信が成功したか否かを判定する(1603)。
ステップ1603において、送信が成功したと判定された場合、処理を終了する(1604)。
一方、ステップ1603において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。この場合、ノード40は、A+1=aであるか否かを判定する(1605)。
ステップ1605において、A+1=aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の右側に隣接する。この場合、行き先のノード40に至る他のリンク41を探索するために、図17のステップ1713に進む(10)。
一方、ステップ1605において、A+1=aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の右側にあるが、隣接しない。この場合、ノード40は、障害が発生したノード40又はリンク41を迂回して要求又は応答を送信するため、ステップ1622に進む。
ステップ1601において、A<aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の左側にある。この場合、左側に隣接するノード40(A−1、B)は、自ノード40(A、B)から行き先のノード40(a、b)に至る最短経路上にある。このため、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1606)。
次に、ノード40は、送信が成功したか否かを判定する(1607)。
ステップ1607において、送信が成功したと判定された場合、処理を終了する(1608)。
一方、ステップ1607において、送信が成功しなかったと判定された場合、左側に隣接するノード40(A−1、B)又はそこに至るリンク41に障害が発生した可能性がある。この場合、ノード40は、A−1=aであるか否かを判定する(1609)。
ステップ1609において、A−1=aであると判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の左側に隣接する。この場合、ノード40は、行き先のノード40に至る他のリンク41を探索するために、探索カウントの値を1増加させる(1610)。
次に、ノード40は、探索カウントの値が8より大きいか否かを判定する(1611)。
ステップ1611において、探索カウントの値が8より大きいと判定された場合、行き先のノード40(a、b)に至る全てのリンク41において送信が失敗している。このため、伝送不能障害を報告して(1620)、処理を終了する(1621)。
一方、ステップ1611において、探索カウントの値が8より大きくないと判定された場合、行き先のノード40(a、b)に至る送信可能なリンク41が残っている可能性がある。このため、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1612)。
ステップ1612において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1613)。行き先のノード40が自ノード40の左側に隣接するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1614)。
ステップ1614において、送信が成功したと判定された場合、処理を終了する(1615)。
一方、ステップ1614において、送信が成功しなかったと判定された場合、上側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1616)、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1617)。行き先のノード40が自ノード40の左側に隣接するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このようにして、時計回りの探索が開始される。
ノード40(A、B+1)及びノード40(A、B−1)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路上にある。
ステップ1612において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1613からステップ1616までを実行せず、ステップ1617を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1618)。
ステップ1618において、送信が成功したと判定された場合、処理を終了する(1619)。
一方、ステップ1618において、送信が成功しなかったと判定された場合、反時計回り又は時計回りのいずれの方向の探索も、それ以上することができない。このため、ノード40は、伝送不能障害を報告し(1620)、処理を終了する(1621)。
ステップ1609においてA−1=aでないと判定された場合、行き先のノード40(a、b)は、自ノード40(A、B)の左側にあるが、隣接しない。この場合、ノード40は、障害が発生したノード40又はリンク41を迂回して要求又は応答を送信する。ステップ1605においてA+1=aでないと判定された場合も同様である。
ステップ1609においてA−1=aでないと判定された場合、及び、ステップ1605においてA+1=aでないと判定された場合、自ノード40の上側に隣接するノード40(A、B+1)及び自ノード40の下側に隣接するノード40(A、B−1)は、自ノード40から行き先のノード40に至る二番目に短い経路上にある。したがって、要求又は応答のパケット50は、自ノード40の上側又は下側に隣接するノード40に送信される。
ノード40は、まず、要求又は応答に迂回マーク502を付与する(1622)。具体的には、ノード40は、要求又は応答のパケット50の迂回マーク502の値を有効にする。
次に、ノード40は、自ノード40(A、B)と上側に隣接するノード40(A、B+1)との間の通信量γを計測する(1623)。
次に、ノード40は、自ノード40(A、B)と下側に隣接するノード40(A、B−1)との間の通信量δを計測する(1624)。
ノード40(A、B+1)及びノード40(A、B−1)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路上にある。
次に、ノード40は、通信量γが通信量δより小さいか否かを判定する(1625)。
ステップ1625において、通信量γが通信量δより小さいと判定された場合、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1626)。
次に、ノード40は、送信が成功したか否かを判定する(1627)。
ステップ1627において、送信が成功したと判定された場合、処理を終了する(1628)。
一方、ステップ1627において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A、B+1)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1629)。
次に、ノード40は、送信が成功したか否かを判定する(1618)。ステップ1618以降の処理は、上記で説明した通りである。
ステップ1625において、通信量γが通信量δより小さくないと判定された場合、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1630)。
次に、ノード40は、送信が成功したか否かを判定する(1631)。
ステップ1631において、送信が成功したと判定された場合、処理を終了する(1632)。
一方、ステップ1631において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。このため、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1633)。
次に、ノード40は、送信が成功したか否かを判定する(1618)。ステップ1618以降の処理は、上記で説明した通りである。
図17は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて、行き先のノード40(a、b)が自ノード40(A、B)と同じ行又は同じ列にある場合に実行される探索の処理のフローチャートである。
図15のステップ1505において、B+1=bであると判定された場合(9)、行き先のノード40(a、b)は、自ノード40(A、B)の上側に隣接する。この場合、ノード40は、行き先のノード40に至る他のリンク41を探索するために、探索カウントの値を1増加させる(1701)。
次に、ノード40は、探索カウントの値が8より大きいか否かを判定する(1702)。
ステップ1702において、探索カウントの値が8より大きいと判定された場合、行き先のノード40(a、b)に至る全てのリンク41において送信が失敗している。このため、伝送不能障害を報告して(1711)、処理を終了する(1712)。
一方、ステップ1702において、探索カウントの値が8より大きくないと判定された場合、行き先のノード40(a、b)に至る送信可能なリンク41が残っている可能性がある。このため、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1703)。
ステップ1703において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1704)。行き先のノード40が自ノード40の上側に隣接するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1705)。
ステップ1705において、送信が成功したと判定された場合、処理を終了する(1706)。
一方、ステップ1705において、送信が成功しなかったと判定された場合、右側に隣接するノード40(A+1、B)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1707)、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1708)。行き先のノード40が自ノード40の上側に隣接するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このようにして、時計回りの探索が開始される。
ノード40(A+1、B)及びノード40(A−1、B)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路上にある。
ステップ1703において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1704からステップ1707までを実行せず、ステップ1708を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1709)。
ステップ1709において、送信が成功したと判定された場合、処理を終了する(1710)。
一方、ステップ1709において、送信が成功しなかったと判定された場合、反時計回り又は時計回りのいずれの方向の探索も、それ以上することができない。このため、ノード40は、伝送不能障害を報告し(1711)、処理を終了する(1712)。
図16のステップ1605において、A+1=aであると判定された場合(10)、行き先のノード40(a、b)は、自ノード40(A、B)の右側に隣接する。この場合、ノード40は、行き先のノード40に至る他のリンク41を探索するために、探索カウントの値を1増加させる(1713)。
次に、ノード40は、探索カウントの値が8より大きいか否かを判定する(1714)。
ステップ1714において、探索カウントの値が8より大きいと判定された場合、行き先のノード40(a、b)に至る全てのリンク41において送信が失敗している。このため、伝送不能障害を報告して(1711)、処理を終了する(1712)。
一方、ステップ1714において、探索カウントの値が8より大きくないと判定された場合、行き先のノード40(a、b)に至る送信可能なリンク41が残っている可能性がある。このため、ノード40は、要求又は応答に逆探索マーク503が付与されているか否かを判定する(1715)。
ステップ1715において、逆探索マーク503が付与されていないと判定された場合、反時計回りの探索が実行されている。このため、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1716)。行き先のノード40が自ノード40の右側に隣接するため、要求又は応答は、行き先のノード40を反時計回りに周回する方向に送信される。
次に、ノード40は、送信が成功したか否かを判定する(1717)。
ステップ1717において、送信が成功したと判定された場合、処理を終了する(1718)。
一方、ステップ1717において、送信が成功しなかったと判定された場合、下側に隣接するノード40(A、B−1)又はそこに至るリンク41に障害が発生した可能性がある。したがって、ノード40は、それ以上反時計回りの探索をすることができない。そこで、ノード40は、探索カウントの値を「1」とし、逆探索マーク503を付与して(1719)、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1720)。行き先のノード40が自ノード40の右側に隣接するため、要求又は応答は、行き先のノード40を時計回りに周回する方向に送信される。このようにして、時計回りの探索が開始される。
ノード40(A、B+1)及びノード40(A、B−1)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路上にある。
ステップ1715において、逆探索マーク503が付与されていると判定された場合、時計回りの探索が実行されている。このため、ノード40は、ステップ1716からステップ1719までを実行せず、ステップ1720を実行する。
次に、ノード40は、送信が成功したか否かを判定する(1721)。
ステップ1721において、送信が成功したと判定された場合、処理を終了する(1722)。
一方、ステップ1721において、送信が成功しなかったと判定された場合、反時計回り又は時計回りのいずれの方向の探索も、それ以上することができない。このため、ノード40は、伝送不能障害を報告し(1711)、処理を終了する(1712)。
図18は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて、要求又は応答に迂回マーク502が付与されていた場合に実行される処理のフローチャートである。
迂回マーク502が付与された要求又は応答は、障害を回避するように送信されている。しかし、このような要求又は応答を受信したノード40が、通常の処理によって送信先を決定すると、この要求又は応答が、再び元のノード40(迂回マーク502が付与された要求又は応答の送信元のノード40)に戻されてしまう場合がある。したがって、迂回マーク502が付与された要求又は応答を受信したノード40が、受信した要求又は応答を、送信元のノード40に送信しないために、図18の処理が実行される。
図10のステップ1010において、受信した要求又は応答に迂回マーク502が付与されていると判定された場合、当該要求又は応答は、障害を迂回するように送信されている。この場合、ノード40は、付与されている迂回マーク502を消去する(1801)。具体的には、受信した要求又は応答のパケット50の迂回マーク502の値を「無効」にする。
次に、ノード40は、A=aであるか否かを判定する(1802)。
ステップ1802において、A=aであると判定された場合、行き先のノード40は、自ノード40と同じ列にある。しかし、図15のステップ1526、1529、1530及び1533に示すように、迂回マーク502が付与された要求又は応答は、行き先のノード40と異なる列のノード40に送信される。従って、ステップ1802においてA=aであると判定された場合、付与された迂回マーク502は不正なものである。このため、ノード40は、不正な迂回マーク502を報告して(1803)、処理を終了する(1804)。この場合の報告先は、伝送不能障害の報告先と同じであってもよい。
一方、ステップ1802において、A=aでないと判定された場合、行き先のノード40は、自ノード40と異なる列にある。この場合、ノード40は、B=bであるか否かを判定する(1805)。
ステップ1805において、B=bであると判定された場合、行き先のノード40は、自ノード40と同じ行にある。しかし、図16のステップ1626、1629、1630及び1633に示すように、迂回マーク502が付与された要求又は応答は、行き先のノード40と異なる行のノード40に送信される。従って、ステップ1805においてB=bであると判定された場合、付与された迂回マーク502は不正なものである。このため、ノード40は、不正な迂回マーク502を報告して(1803)、処理を終了する(1804)。
一方、ステップ1805において、B=bでないと判定された場合、行き先のノード40は、自ノード40と異なる行にある。この場合、ノード40は、A<aであるか否かを判定する(1806)。
ステップ1806において、A<aであると判定された場合、行き先のノード40は、自ノード40の右側にある。この場合、図19のステップ1901に進む(11)。
一方、ステップ1806において、A<aでないと判定された場合、行き先のノード40は、自ノード40の左側にある。この場合、ノード40は、B<bであるか否かを判定する(1807)。
B<bである場合、行き先のノード40は、自ノード40の上側にある。ステップ1807においてB<bであると判定された場合、ステップ1806でA<aでないと判定されていることから、行き先のノード40は、自ノード40の左上側にある。
この場合、ノード40は、受信した要求又は応答の送信元のノード40を特定する。まず、受信した要求又は応答が自ノード40の左側に隣接するノード40から送信されたか否かを判定する(1808)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A−1、B)であるか否かを判定する。
ステップ1808において、(C、D)=(A−1、B)であると判定された場合、受信した要求又は応答が自ノード40の左側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1809)。その結果、ノード40は、要求又は応答を、送信元のノード40(A−1、B)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1810)。
ステップ1810において、送信が成功したと判定された場合、処理を終了する(1811)。
一方、ステップ1810において、送信が成功しなかったと判定された場合、迂回をすることができないため、伝送不能障害を報告して(1812)、処理を終了する(1813)。
ステップ1808において、(C、D)=(A−1、B)でないと判定された場合、ノード40は、受信した要求又は応答が自ノード40の上側に隣接するノード40から送信されたか否かを判定する(1814)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A、B+1)であるか否かを判定する。
ステップ1814において、(C、D)=(A、B+1)であると判定された場合、受信した要求又は応答が自ノード40の上側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1815)。その結果、ノード40は、要求又は応答を、送信元のノード40(A、B+1)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1810)。ステップ1810以降の処理は、上記で説明した通りであるので、説明を省略する。
ステップ1814において、(C、D)=(A、B+1)でないと判定された場合、受信した要求又は応答が自ノード40の上側に隣接するノード40から送信されていない。
迂回マーク502が付与された要求又は応答は、行き先のノード40と同一の行又は同一の列のノード40から、行き先のノード40と異なる行かつ異なる列のノード40に送信される(図15及び図16参照)。したがって、迂回マーク502が付与された要求又は応答を受信した自ノード40が、行き先のノード40の右下側にある(すなわち、行き先のノード40が自ノード40の左上側にある)場合、その要求又は応答を送信したノード40は、受信した自ノード40の左側又は上側に隣接するはずである。
しかし、ステップ1814において(C、D)=(A、B+1)でないと判定された場合、受信した要求又は応答は、自ノード40の上側に隣接するノード40又は左側に隣接するノード40のいずれから送信されたものでもない。このため、ノード40は、不正な迂回マーク502を報告して(1816)、処理を終了する(1817)。
ステップ1807において、B<bでないと判定された場合、行き先のノード40は、自ノード40の左下側にある。
この場合、ノード40は、受信した要求又は応答の送信元のノード40を特定する。まず、受信した要求又は応答が自ノード40の下側に隣接するノード40から送信されたか否かを判定する(1818)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A、B−1)であるか否かを判定する。
ステップ1818において、(C、D)=(A、B−1)であると判定された場合、受信した要求又は応答が自ノード40の下側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を左側に隣接するノード40(A−1、B)に送信する(1819)。その結果、ノード40は、要求又は応答を、送信元のノード40(A、B−1)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1810)。ステップ1810以降の処理は、上記で説明した通りであるので、説明を省略する。
ステップ1818において、(C、D)=(A、B−1)でないと判定された場合、ノード40は、受信した要求又は応答が自ノード40の左側に隣接するノード40から送信されたか否かを判定する(1820)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A−1、B)であるか否かを判定する。
ステップ1820において、(C、D)=(A−1、B)であると判定された場合、受信した要求又は応答が自ノード40の左側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1821)。その結果、ノード40は、要求又は応答を、送信元のノード40(A−1、B)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1810)。ステップ1810以降の処理は、上記で説明した通りであるので、説明を省略する。
ステップ1820において、(C、D)=(A−1、B)でないと判定された場合、受信した要求又は応答が自ノード40の左側に隣接するノード40から送信されていない。
迂回マーク502が付与された要求又は応答を受信した自ノード40が、行き先のノード40の右上側にある(すなわち、行き先のノード40が自ノード40の左下側にある)場合、その要求又は応答を送信したノード40は、受信した自ノード40の左側又は下側に隣接するはずである。しかし、ステップ1820において(C、D)=(A−1、B)でないと判定された場合、受信した要求又は応答は、自ノード40の左側に隣接するノード40又は下側に隣接するノード40のいずれから送信されたものでもない。このため、ノード40は、不正な迂回マーク502を報告して(1822)、処理を終了する(1823)。
図19は、本発明の第1の実施の形態の障害を考慮したルーティングアルゴリズムにおいて、要求又は応答に迂回マーク502が付与されていた場合であって、行き先のノード40が自ノード40の右側にある場合に実行される処理のフローチャートである。
図18のステップ1806において、A<aであると判定された場合、行き先のノード40は、自ノード40の右側にある。この場合、ノード40は、B<bであるか否かを判定する(1901)。
B<bである場合、行き先のノード40は、自ノード40の上側にある。ステップ1901においてB<bであると判定された場合、ステップ1806でA<aであると判定されていることから、行き先のノード40は、自ノード40の右上側にある。
この場合、ノード40は、受信した要求又は応答の送信元のノード40を特定する。まず、受信した要求又は応答が自ノード40の右側に隣接するノード40から送信されたか否かを判定する(1902)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A+1、B)であるか否かを判定する。
ステップ1902において、(C、D)=(A+1、B)であると判定された場合、受信した要求又は応答が自ノード40の右側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を上側に隣接するノード40(A、B+1)に送信する(1903)。その結果、ノード40は、要求又は応答を、送信元のノード40(A+1、B)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1904)。
ステップ1904において、送信が成功したと判定された場合、処理を終了する(1905)。
一方、ステップ1904において、送信が成功しなかったと判定された場合、迂回をすることができないため、伝送不能障害を報告して(1906)、処理を終了する(1907)。
ステップ1902において、(C、D)=(A+1、B)でないと判定された場合、ノード40は、受信した要求又は応答が自ノード40の上側に隣接するノード40から送信されたか否かを判定する(1908)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A、B+1)であるか否かを判定する。
ステップ1908において、(C、D)=(A、B+1)であると判定された場合、受信した要求又は応答が自ノード40の上側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1909)。その結果、ノード40は、要求又は応答を、送信元のノード40(A、B+1)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1904)。ステップ1904以降の処理は、上記で説明した通りであるので、説明を省略する。
ステップ1908において、(C、D)=(A、B+1)でないと判定された場合、受信した要求又は応答が自ノード40の上側に隣接するノード40から送信されていない。
迂回マーク502が付与された要求又は応答を受信した自ノード40が、行き先のノード40の左下側にある(すなわち、行き先のノード40が自ノード40の右上側にある)場合、その要求又は応答を送信したノード40は、受信した自ノード40の右側又は上側に隣接するはずである。
しかし、ステップ1908において(C、D)=(A、B+1)でないと判定された場合、受信した要求又は応答は、自ノード40の上側に隣接するノード40又は右側に隣接するノード40のいずれから送信されたものでもない。このため、ノード40は、不正な迂回マーク502を報告して(1910)、処理を終了する(1911)。
ステップ1901において、B<bでないと判定された場合、行き先のノード40は、自ノード40の右下側にある。
この場合、ノード40は、受信した要求又は応答の送信元のノード40を特定する。まず、受信した要求又は応答が自ノード40の下側に隣接するノード40から送信されたか否かを判定する(1912)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A、B−1)であるか否かを判定する。
ステップ1912において、(C、D)=(A、B−1)であると判定された場合、受信した要求又は応答が自ノード40の下側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を右側に隣接するノード40(A+1、B)に送信する(1913)。その結果、ノード40は、要求又は応答を、送信元のノード40(A、B−1)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1904)。ステップ1904以降の処理は、上記で説明した通りであるので、説明を省略する。
ステップ1912において、(C、D)=(A、B−1)でないと判定された場合、ノード40は、受信した要求又は応答が自ノード40の右側に隣接するノード40から送信されたか否かを判定する(1914)。具体的には、送信元のノード40のアドレスを(C、D)としたとき、(C、D)=(A+1、B)であるか否かを判定する。
ステップ1914において、(C、D)=(A+1、B)であると判定された場合、受信した要求又は応答が自ノード40の右側に隣接するノード40から送信されている。この場合、ノード40は、要求又は応答を下側に隣接するノード40(A、B−1)に送信する(1915)。その結果、ノード40は、要求又は応答を、送信元のノード40(A+1、B)に送信しない。
次に、ノード40は、送信が成功したか否かを判定する(1904)。ステップ1904以降の処理は、上記で説明した通りであるので、説明を省略する。
ステップ1914において、(C、D)=(A+1、B)でないと判定された場合、受信した要求又は応答が自ノード40の右側に隣接するノード40から送信されていない。
迂回マーク502が付与された要求又は応答を受信した自ノード40が、行き先のノード40の左上側にある(すなわち、行き先のノード40が自ノード40の右下側にある)場合、その要求又は応答を送信したノード40は、受信した自ノード40の右側又は下側に隣接するはずである。しかし、ステップ1914において(C、D)=(A+1、B)でないと判定された場合、受信した要求又は応答は、自ノード40の右側に隣接するノード40又は下側に隣接するノード40のいずれから送信されたものでもない。このため、ノード40は、不正な迂回マーク502を報告して(1916)、処理を終了する(1917)。
図20は、本発明の第1の実施の形態において実行される探索の例の説明図である。
図20は、例として、探索カウント504の値が0より大きく、迂回マーク502が付与されておらず、行き先のノード40(a、b)と自ノード40(A、B)の位置関係がA=a+1かつB=b−1(a=A−1かつb=B+1)である場合のパケット50の送信先を示す。以下の説明において、図10、図11及び図13が参照される。
ノード40(A、B)が隣接するノード40からパケット50を受信すると(1005)、A=aかつB=bを満たさず(1009)、迂回マーク502が付与されていないため(1010)、処理は図11のステップ1101に進む。
探索カウント>0であるため(1103)、処理は図13のステップ1301に進む。
A<aではなく(1302)、B<bである(1303)ため、処理はステップ1304に進む。
パケット50に逆探索マーク503が付与されていない場合(1304)、ノード40(A、B)は、パケット50を上側に隣接するノード40(A、B+1)に送信する(1305)。
一方、パケット50に逆探索マーク503が付与されている場合(1304)、ノード40(A、B)は、パケット50を左側に隣接するノード40(A−1、B)に送信する(1309)。
また、ステップ1305の送信に失敗した場合(1306)、ノード40(A、B)は、パケット50に逆探索マーク503を付与し(1308)、そのパケット50を左側に隣接するノード40(A−1、B)に送信する(1309)。
図21は、本発明の第1の実施の形態において実行される探索の別の例の説明図である。
図21は、例として、探索カウント504の値が0より大きく、迂回マーク502が付与されておらず、行き先のノード40(a、b)と自ノード40(A、B)の位置関係がA=aかつB=b+1(b=B−1)である場合のパケット50の送信先を示す。さらに、図21の例では、行き先のノード40(a、b)と自ノード40(A、B)の間のリンク41に障害が発生している。以下の説明において、図10、図11及び図15が参照される。
なお、自ノード40(A、B)の左側に隣接するノード40(A−1、B)及び右側に隣接するノード40(A+1、B)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路上にある。
ノード40(A、B)が隣接するノード40からパケット50を受信して図10の処理が開始すると(1005)、A=aかつB=bを満たさず(1009)、迂回マーク502が付与されていないため(1010)、処理は図11のステップ1101に進む。
A=aであるため(1101)、処理は図15のステップ1501に進む。
B<bでないため(1501)、ノード40(A、B)は、パケット50を下側に隣接ずるノード40(A、B−1)に送信する(1506)。
ステップ1506の送信に成功すれば処理が終了するが(1507、1508)、図21の例では、リンク41の障害のため、送信に失敗する。
B−1=bであるため(1509)、探索カウント504の値を1増加させる(1510)。
探索カウント504の値が8より大きい場合(1511)、行き先のノード40(a、b)に至る全てのリンク41において送信が失敗したため、伝送不能障害が報告され(1520)、処理が終了する(1521)。
探索カウント504の値が8以下であり(1511)、逆探索マーク503が付与されていない場合(1512)、ノード40(A、B)は、左側に隣接するノード40(A−1、B)にパケット50を送信する(1513)。
一方、逆探索マーク503が付与されている場合(1512)、ノード40(A、B)は、右側に隣接するノード40(A+1、B)にパケット50を送信する(1517)。
ステップ1513の送信に失敗した場合(1514)、ノード40(A、B)は、パケット50に逆探索マーク503を付与し(1516)、右側に隣接するノード40(A+1、B)に送信する(1517)。
図22は、本発明の第1の実施の形態において、ノード40がパケット50に迂回マーク502を付与する処理の説明図である。
図22の例は、行き先のノード40(a、b)が自ノード40(A、B)と同じ行にあり、かつ、隣接しない場合(すなわち、B=b、A<aであり、かつ、A+1=aでない場合)を示す。また、自ノード40(A、B)とその右側に隣接するノード40(A+1、B)の間のリンク41に障害が発生している。さらに、ノード40(A、B)とノード40(A、B+1)との間の通信量γは、ノード40(A、B)とノード40(A、B−1)との間の通信量δより小さい。以下の説明において、図10、図11及び図16が参照される。
なお、自ノード40(A、B)の上側に隣接するノード40(A、B+1)及び下側に隣接するノード40(A、B−1)は、共に、自ノード40(A、B)から行き先のノード40(a、b)に至る二番目に短い経路上にある。
図10の処理が開始すると、A=aかつB=bを満たさず(1009)、迂回マーク502が付与されていないため(1010)、処理は図11のステップ1101に進む。
A=aでないが、B=bであるため、処理は図16のステップ1601に進む。
A<aであるため、ノード40(A、B)は、パケット50を右側に隣接するノード40(A+1、B)に送信する(1602)。
ステップ1602の送信に成功すれば処理が終了するが(1603、1604)、図22の例では、リンク41の障害のため、送信に失敗する。
A+1=aでないため(1605)、ノード40(A、B)は、パケット50に迂回マーク502を付与する(1622)。
通信量γが通信量δより小さいため(1625)、ノード40(A、B)は、上側に隣接するノード40(A、B+1)にパケット50を送信する(1626)。図22の例では、ステップ1626の送信に成功して(1627)、処理が終了する(1628)。
図23は、本発明の第1の実施の形態において、迂回マーク502が付与されたパケット50を受信したノード40が実行する処理の説明図である。
図23の例は、図22の例において送信されたパケット50を受信したノード40によって実行される処理を示す。図23のノード40(A、B)は、図22のノード40(A、B+1)に相当する。以下の説明において、図10、図18及び図19が参照される。
ノード40(A、B)が下側に隣接するノード40(A、B−1)からパケット50を受信して図10の処理が開始すると(1005)、A=aかつB=bを満たさず(1009)、迂回マーク502が付与されているため(1010)、処理は図18のステップ1801に進む。
ノード40(A、B)は、パケット50に付与された迂回マーク502を消去する(1801)。
A=aでなく(1802)、B=bでなく(1805)、A<aである(1806)ため、処理は図19のステップ1901に進む。
B<bでなく(1901)、パケット50はノード40(A、B)の下側に隣接するノード40(A、B−1)から送信されている(1912)。このため、ノード40(A、B)は、パケット50を送信元のノード40(A、B−1)に送信せず、右側に隣接するノード40(A+1、B)に送信する(1913)。
以上の本発明の第1の実施の形態によれば、ホスト計算機及びディスクドライブ104が接続されたノード40が、リンク41によって二次元の格子状に接続される。このため、任意の数のノード40を接続することによって任意の規模のストレージシステムを構成することができる。
図24は、本発明の第2の実施の形態のストレージシステムの構成を示すブロック図である。
本実施の形態のストレージシステムは、複数のストレージ制御部2400及び複数のディスクドライブ104によって構成される。
ストレージ制御部2400は、6ポートスイッチ102の代わりに8ポートスイッチ2401を備えることを除いて、本発明の第1の実施の形態のストレージ制御部10(図1参照)と同じである。このため、本実施の形態において、本発明の第1の実施の形態と同様の部分については、説明を省略する。
図24には、8個のストレージ制御部2400A〜2400Hを示すが、本実施の形態のストレージシステムは、任意の数のストレージ制御部2400を含むことができる。
ストレージ制御部2400は、ホスト接続制御部101、8ポートスイッチ2401及びドライブ制御部103を備える。
8ポートスイッチ2401は、同じストレージ制御部2400内のホスト接続制御部101、同じストレージ制御部2400内のドライブ制御部103、隣接するストレージ制御部2400内のホスト接続制御部101、隣接するストレージ制御部2400内のドライブ制御部103及び他のストレージ制御部2400内の8ポートスイッチ2401と接続され、これらの間の接続を切り替えるスイッチである。8ポートスイッチ2401は、8個のポート(図示省略)を備え、各ポートがそれぞれ一つのホスト接続制御部101、ドライブ制御部103又は他の8ポートスイッチ2401と接続される。
例えば、ストレージ制御部2400B内の8ポートスイッチ2401Bの各ポートには、それぞれ、接続線2410A〜2410Hが接続される。
接続線2410Aは、図24に示さない他のストレージ制御部2400内の8ポートスイッチ2401に接続される。
接続線2410Bは、ストレージ制御部2400A内のホスト接続制御部101Aに接続される。
接続線2410Cは、ストレージ制御部2400B内のホスト接続制御部101Bに接続される。
接続線2410Dは、図24に示さない他のストレージ制御部2400内の8ポートスイッチ2401に接続される。
接続線2410Eは、ストレージ制御部2400D内の8ポートスイッチ2401Dに接続される。
接続線2410Fは、ストレージ制御部2400F内の8ポートスイッチ2401Fに接続される。
接続線2410Gは、ストレージ制御部2400B内のドライブ制御部103Bに接続される。
接続線2410Hは、ストレージ制御部2400A内のドライブ制御部103Aに接続される。
同様にして、ストレージ制御部2400A内の8ポートスイッチ2401Aの各ポートには、それぞれ、接続線2410J〜2410N、2410P〜2410Rが接続される。
接続線2410Jは、図24に示さない他のストレージ制御部2400内の8ポートスイッチ2401に接続される。
接続線2410Kは、図24に示さない他のストレージ制御部2400内の8ポートスイッチ2401に接続される。
接続線2410Lは、ストレージ制御部2400A内のホスト接続制御部101Aに接続される。
接続線2410Mは、ストレージ制御部2400B内のホスト接続制御部101Bに接続される。
接続線2410Nは、ストレージ制御部2400C内の8ポートスイッチ2401Cに接続される。
接続線2410Pは、ストレージ制御部2400B内のドライブ制御部103Bに接続される。
接続線2410Qは、ストレージ制御部2400A内のドライブ制御部103Aに接続される。
接続線2410Rは、ストレージ制御部2400E内の8ポートスイッチ2401Eに接続される。
本実施の形態では、一つのノード40(図4参照)が二つのストレージ制御部2400に相当する。また、一つのリンク41が二つの接続線2410に相当する。
例えば、図4のノード40(1、1)がストレージ制御部2400A及び2400Bに相当する場合、リンク41Aは、接続線2410A及び2410Jに相当する。リンク41Bは、接続線2410D及び2410Kに相当する。リンク41Cは、接続線2410E及び2410Nに相当する。リンク41Dは、接続線2410F及び2410Rに相当する。
この場合、図4のノード40(2、1)は、ストレージ制御部2400C及び2400Dに相当する。このとき、ノード40(1、1)の8ポートスイッチ2401Aは、接続線2410Nによって、ノード40(2、1)の8ポートスイッチ2401Cと接続される。一方、ノード40(1、1)の8ポートスイッチ2401Bは、接続線2410Eによって、ノード40(2、1)の8ポートスイッチ2401Dと接続される。
本実施の形態のノード40は、本発明の第1の実施の形態と同様、パケット50(図5参照)を送受信する。本実施の形態には、本発明の第1の実施の形態と同じルーティングアルゴリズム(図6〜図23参照)が適用される。
本実施の形態によれば、各ノード40及びリンク41が二重化されるため、本発明の第1の実施の形態と比較して、耐障害性が向上する。
図25は、本発明の第3の実施の形態のストレージシステムの構成を示すブロック図である。
本実施の形態のストレージシステムは、複数のストレージ制御部2500及び複数のディスクドライブ104によって構成される。
ストレージ制御部2500は、6ポートスイッチ102の代わりに10ポートスイッチ2501を備えることを除いて、本発明の第1の実施の形態のストレージ制御部10(図1参照)と同じである。このため、本実施の形態において、本発明の第1の実施の形態と同様の部分については、説明を省略する。
図25には、8個のストレージ制御部2500A〜2500Hを示すが、本実施の形態のストレージシステムは、任意の数のストレージ制御部2500を含むことができる。
ストレージ制御部2500は、ホスト接続制御部101、10ポートスイッチ2501及びドライブ制御部103を備える。
10ポートスイッチ2501は、同じストレージ制御部2500内のホスト接続制御部101、同じストレージ制御部2500内のドライブ制御部103及び他のストレージ制御部2500内の10ポートスイッチ2501と接続され、これらの間の接続を切り替えるスイッチである。10ポートスイッチ2501は、10個のポート(図示省略)を備え、各ポートがそれぞれ一つのホスト接続制御部101、ドライブ制御部103又は他の10ポートスイッチ2501と接続される。
例えば、ストレージ制御部2500B内の10ポートスイッチ2501Bの各ポートには、それぞれ、接続線2510A〜2510H、2510J及び2510Kが接続される。
接続線2510Aは、ストレージ制御部2500A内の10ポートスイッチ2501Aに接続される。
接続線2510Bは、図25に示さない他のストレージ制御部2500内の10ポートスイッチ2501に接続される。
接続線2510Cは、ストレージ制御部2500B内のホスト接続制御部101Bに接続される。
接続線2510Dは、図25に示さない他のストレージ制御部2500内の10ポートスイッチ2501に接続される。
接続線2510Eは、図25に示さない他のストレージ制御部2500内の10ポートスイッチ2501に接続される。
接続線2510Fは、ストレージ制御部2500C内の10ポートスイッチ2501Cに接続される。
接続線2510Gは、ストレージ制御部2500G内の10ポートスイッチ2501Gに接続される。
接続線2510Hは、ストレージ制御部2500F内の10ポートスイッチ2501Fに接続される。
接続線2510Jは、ストレージ制御部2500B内のドライブ制御部103Bに接続される。
接続線2510Kは、ストレージ制御部2500E内の10ポートスイッチ2501Eに接続される。
本実施の形態では、一つのノード40(図4参照)が一つのストレージ制御部2500に相当する。また、一つのリンク41が一つの接続線2510に相当する。
例えば、図4のノード40(1、1)がストレージ制御部2500Bに相当する場合、リンク41A、41B、41C及び41Dは、それぞれ、接続線2510A、2510D、2510F及び2510Hに相当する。
さらに、図4には示さないが、接続線2510Bは、ノード40(1、1)とノード40(0、2)とを接続する斜め方向のリンクである。同様に、接続線2510Eはノード40(1、1)とノード40(2、2)とを接続する斜め方向のリンク、接続線2510Gはノード40(1、1)とノード40(2、0)とを接続する斜め方向のリンク、接続線2510Kはノード40(1、1)とノード40(0、0)とを接続する斜め方向のリンクである。
本実施の形態のノード40は、本発明の第1の実施の形態と同様、パケット50(図5参照)を送受信する。
本実施の形態には、本発明の第1の実施の形態と同じルーティングアルゴリズム(図6〜図23参照)が適用されてもよいが、上記の斜め方向のリンクを利用した別のアルゴリズムが適用されてもよい。
本実施の形態によれば、上記の斜め方向のリンクを利用することによって、本発明の第1の実施の形態と比較して、耐障害性が向上する。さらに、斜め方向のノード40が直接接続されることによって、これらのノード40間のデータ転送性能が向上する。
図26は、本発明の第4の実施の形態のストレージシステムの構成を示すブロック図である。
図26の構成は、本発明の第2の実施の形態のストレージ制御部2400の一部をフロントエンド制御部2600によって置き換えたものである。
フロントエンド制御部2600は、ストレージ制御部2400内のドライブ制御部103をホスト接続制御部101によって置き換えたものである。すなわち、フロントエンド制御部2600には、ホスト計算機のみが接続され、ディスクドライブ104は接続されない。
本実施の形態では、各ストレージ制御部2400及び各フロントエンド制御部2600が8ポートスイッチ2401を備える。このため、本発明の第2の実施の形態(図24参照)と同様、二つのストレージ制御部2400が一つのノード40(ストレージノード)を構成する。同様にして、二つのフロントエンド制御部2600が一つのノード40(フロントエンドノード)を構成する。ノード40間の接続の形態は、図4に示す通りである。
本実施の形態のノード40は、本発明の第1の実施の形態と同様、パケット50(図5参照)を送受信する。本実施の形態には、本発明の第1の実施の形態と同じルーティングアルゴリズム(図6〜図23参照)が適用される。
本実施の形態のストレージシステムは、第1の実施の形態と比較して、より多くのホスト計算機と接続することができる。通常、大規模なストレージシステムには多くのホスト計算機が接続されるため、要求されるホストI/F201の数は、要求されるドライブI/Fの数よりずっと多い。本実施の形態によれば、ストレージノードを備えることによって、多くのホスト計算機と容易に接続することができる。
図27は、本発明の第5の実施の形態のストレージシステムの構成を示すブロック図である。
図27の構成は、本発明の第1の実施の形態のストレージ制御部10の全部をフロントエンド制御部2700によって置き換えたものである。
フロントエンド制御部2700は、ストレージ制御部10内のドライブ制御部103をホスト接続制御部101によって置き換えたものである。すなわち、フロントエンド制御部2700には、ホスト計算機のみが接続され、ディスクドライブ104は接続されない。
すなわち、本実施の形態のストレージシステム1は、ディスクドライブ104を含まない。ディスクドライブ104は、フロントエンド制御部2700に接続されたホスト計算機2701に接続される。また、本実施の形態のストレージシステム1には、他のストレージシステム1を接続することもできる。
本実施の形態では、各フロントエンド制御部2700が6ポートスイッチ102を備える。このため、二つのフロントエンド制御部2700が一つのノード40(フロントエンドノード)を構成する。ノード40間の接続の形態は、図4に示す通りである。
本実施の形態のノード40は、本発明の第1の実施の形態と同様、パケット50(図5参照)を送受信する。本実施の形態には、本発明の第1の実施の形態と同じルーティングアルゴリズム(図6〜図23参照)が適用される。
本実施の形態のストレージシステム1は、例えば、SAN(ストレージエリアネットワーク)スイッチとして使用することができる。
本実施の形態のストレージシステム1によれば、ディスクドライブと多数のホスト計算機とを自由に接続することができる。本実施の形態のストレージシステム1は、他のホスト計算機又は他のストレージシステム1のディスクドライブを各ホスト計算機に提供する際に、それらのディスクドライブを各ホスト計算機の論理ボリュームに変換する。このため、各ホスト計算機は、物理的なディスクドライブの位置や構成に関らず、それぞれの論理ボリュームを自由かつ独立に運用することができる。
以上の本発明によれば、ホスト接続制御部及びドライブ制御部がスイッチによって接続された比較的小規模なノードが構成される。そして、任意の数のノードを二次元に数珠つなぎに接続することによって、任意の規模のストレージシステムが構成される。このため、構成されるストレージシステムの規模に制限がない。また、小規模な構成において大規模なスイッチを用意する必要がないため、小規模構成のコストが上昇しない。さらに、大規模な構成においても大規模なスイッチを必要とせず、配線が比較的単純であるため、大規模構成時の配線コストの上昇が抑制される。その結果、記憶容量あたりのコストは、規模に関らず、概ね一定に抑制される。
さらに、多数のノードが二次元の格子状に接続される構成となるため、データ転送が多数のノード間の多数のデータ転送に分散される。このため、データがノード間を伝送される場合の性能の低下が抑制される。また、ホスト計算機が接続されるノードと、アクセスされるドライブが接続されるノードが離れる場合、離れた距離(間に入るノード数)が大きいほどデータの伝達に時間がかかるが,この伝達時間は間に入ってデータ転送を経由するノードの数で決まり、急激に増大することはないため、伝達時間に急激な変化のある不均一性はなく、使い易い。
さらに、各ノードは二次元の格子状に接続されるため、データの伝送経路の冗長性が高。すなわち、伝送経路に障害が発生した場合にも交代経路が多数存在するため、耐障害性が高い。