(57)【特許請求の範囲】
【請求項１】
それぞれ他のスイッチ装置に接続する２つのカスケードポートと、
それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、
前記ダイレクトポートに接続するすべての記憶媒体のアドレスに、それぞれの記憶媒体に接続するダイレクトポートを示す情報を対応付けて記憶する記憶手段と、
一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定手段と、
前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力手段と、
前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームをダイレクトポートに出力することを決定する決定手段と、
前記決定手段によってフレームをダイレクトポートに出力することが決定された場合に、前記記憶手段によって記憶された自装置のダイレクトポートを示す情報において、前記フレームの送信先アドレスに対応する出力ポートを検索する検索手段とを有し、
前記検索手段は、
前記記憶手段によって記憶されたダイレクトポートを示す情報およびカスケードポートを示す情報のうち、自装置のダイレクトポートを示す情報のみを検索範囲としてフレームの送信先アドレスに対応する出力ポートを検索することを特徴とするスイッチ装置。
【請求項２】
前記判定手段は、
フレームに格納されたホップ数情報を参照して、フレームの送信元において前記規定数に等しい値に設定された後はフレームがスイッチ装置を経由するたびに１ずつ減算されるホップ数が１に等しいか否かを判定し、
前記出力手段は、
前記判定手段による判定の結果、ホップ数が１より大きい場合に、前記検索手段による検索を行うことなく、フレームを前記他方のカスケードポートから出力する
ことを特徴とする請求項１記載のスイッチ装置。
【請求項３】
前記出力手段は、
フレームに格納されたホップ数情報が示すホップ数を１減算した上で、当該フレームを前記他方のカスケードポートから出力することを特徴とする請求項２記載のスイッチ装置。
【請求項４】
前記判定手段は、
フレームに格納されたホップ数情報および閾値情報を参照して、フレームの送信元において０に設定された後はフレームがスイッチ装置を経由するたびに１ずつ加算されるホップ数が、閾値情報に含まれる前記規定数に等しいか否かを判定し、
前記出力手段は、
前記判定手段による判定の結果、ホップ数が前記規定数未満である場合に、前記検索手段による検索を行うことなく、フレームを前記他方のカスケードポートから出力する
ことを特徴とする請求項１記載のスイッチ装置。
【請求項５】
前記判定手段は、
フレームに格納されたホップ数情報が示すホップ数を１加算した上で、１を加算後のホップ数が前記規定数に等しいか否かを判定することを特徴とする請求項４記載のスイッチ装置。
【請求項６】
前記記憶手段は、
自装置とは異なるスイッチ装置に配下にある記憶媒体のアドレスに、それぞれ前記２つのカスケードポートのいずれか一方を示す情報を対応付けて記憶することを特徴とする請求項１記載のスイッチ装置。
【請求項７】
前記検索手段は、
フレームが強制ルーティング指示情報を含む場合には、前記決定手段による決定とは無関係に、前記記憶手段によって記憶される記憶媒体の全アドレスから前記フレームの送信先アドレスを検索することにより、当該フレームを出力するダイレクトポートを決定することを特徴とする請求項１記載のスイッチ装置。
【請求項８】
互いに接続してフレームを転送する複数のスイッチ装置と、各スイッチ装置に接続する記憶媒体とを備えるストレージシステムであって、
前記スイッチ装置は、
それぞれ他のスイッチ装置に接続する２つのカスケードポートと、
それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、
前記ダイレクトポートに接続するすべての記憶媒体のアドレスに、それぞれの記憶媒体に接続するダイレクトポートを示す情報を対応付けて記憶する記憶手段と、
一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定手段と、
前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力手段と、
前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームをダイレクトポートに出力することを決定する決定手段と、
前記決定手段によってフレームをダイレクトポートに出力することが決定された場合に、前記記憶手段によって記憶された自装置のダイレクトポートを示す情報において、前記フレームの送信先アドレスに対応する出力ポートを検索する検索手段と
を有し、
前記検索手段は、
前記記憶手段によって記憶されたダイレクトポートを示す情報およびカスケードポートを示す情報のうち、自装置のダイレクトポートを示す情報のみを検索範囲としてフレームの送信先アドレスに対応する出力ポートを検索し、
前記記憶媒体は、
前記検索手段による検索により決定された出力ポートから出力されるフレームに含まれるデータを記憶する
ことを特徴とするストレージシステム。
【請求項９】
それぞれ他のスイッチ装置に接続する２つのカスケードポートと、それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、前記ダイレクトポートに接続するすべての記憶媒体のアドレスに、それぞれの記憶媒体に接続するダイレクトポートを示す情報を対応付けて記憶する記憶手段とを備えるスイッチ装置におけるルーティング方法であって、
一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定ステップと、
前記判定ステップにおける判定の結果、前記フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力ステップと、
前記判定ステップにおける判定の結果、前記フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームをダイレクトポートに出力することを決定する決定ステップと、
前記決定ステップにてフレームをダイレクトポートに出力することが決定された場合に、前記記憶手段によって記憶された自装置のダイレクトポートを示す情報において、前記フレームの送信先アドレスに対応する出力ポートを検索する検索ステップとを有し、
前記検索ステップは、
前記記憶手段によって記憶されたダイレクトポートを示す情報およびカスケードポートを示す情報のうち、自装置のダイレクトポートを示す情報のみを検索範囲としてフレームの送信先アドレスに対応する出力ポートを検索することを特徴とするルーティング方法。
【請求項１０】
それぞれ他のスイッチ装置に接続する２つのカスケードポートと、
それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、
自装置および他のスイッチ装置の配下にあるすべての記憶媒体のアドレスそれぞれと前記カスケードポートまたは前記ダイレクトポートとを対応付けて記憶する記憶手段と、
一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定手段と、
前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力手段と、
前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置を既に経由している場合に、前記記憶手段によって記憶される記憶媒体の全アドレスのうち前記ダイレクトポートに対応するアドレスを検索範囲に設定し、設定された検索範囲から前記フレームの送信先アドレスを検索することにより、当該フレームを出力するダイレクトポートを決定する決定手段と
を有することを特徴とするスイッチ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチ装置、ストレージシステム、およびルーティング方法に関し、特に、フレーム転送の遅延を削減し、記憶媒体へのデータの書き込みおよび記憶媒体からのデータの読み出しを高速化することができるスイッチ装置、ストレージシステム、およびルーティング方法に関する。
【背景技術】
【０００２】
近年、複数の記憶媒体を用いて大容量のデータ記憶を実現するストレージシステムが一般的になっている。ストレージシステムでは、データを処理するサーバやストレージコントローラなどの計算装置とデータを記憶するハードディスクドライブなどの記憶媒体との間に、スイッチやケーブルによるネットワークが構築される。そして、データやコマンドを含むフレームが計算装置と記憶媒体の間のネットワーク上を通信されることにより、データの書き込みや読み出しが行われる。このとき、計算装置は、イニシエータとして、データの書き込みまたは読み出しのターゲットとなる記憶媒体へコマンドを送信する。すなわち、計算装置がストレージシステム内の処理を主導しており、記憶媒体は、受動的に動作する。
【０００３】
ところで、計算装置と記憶媒体の間に設けられるスイッチは、それぞれ計算装置、記憶媒体、または他のスイッチと接続するポートを備えている。ポートは、例えばＳＡＳ（Serial attached SCSI）などの規格に準拠したインタフェースであり、計算装置または記憶装置から送信されたフレームは、スイッチのポートを介して転送される。すなわち、スイッチは、入力されたフレームの出力ポートを切り替えることにより、フレームの転送経路を制御している。
【０００４】
スイッチに備えられるポートには、大きく分けてダイレクトポートとカスケードポートとの２種類がある。ダイレクトポートは、計算装置や配下にある記憶媒体に直接接続するポートであり、カスケードポートは、他のスイッチに接続するポートである。したがって、計算装置または記憶媒体から送信されたフレームは、ダイレクトポートを介して初段のスイッチに入力され、カスケードポートを介して他のスイッチへ出力される。そして、フレームは、いくつかのスイッチによって転送された後、最終的に、フレームの送信先となっている記憶媒体または計算装置に接続するスイッチのダイレクトポートから出力される。
【０００５】
このようなスイッチによるフレームの転送の際には、ルーティングテーブルが参照されるのが一般的である。ルーティングテーブルは、ネットワークの初期化時などに、各スイッチにおいて別々に作成されるテーブルであり、フレームの送信先アドレスと出力ポートとの対応関係を記憶している。すなわち、ルーティングテーブルは、フレームを送信先アドレスへ転送するためには、スイッチ内のどのポートから出力すれば良いかを記憶している。そこで、スイッチは、フレームが入力されると、フレームのヘッダ部から送信先アドレスを確認し、送信先アドレスに対応する出力ポートをルーティングテーブルから検索する。そして、スイッチは、ルーティングテーブルの検索により決定された出力ポートからフレームを出力する。
【０００６】
【特許文献１】特開２００５−２６７３２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したスイッチによるフレームのルーティングにおいては、スイッチがルーティングテーブルを参照して出力ポートを決定する処理に時間を要し、記憶媒体へのデータの書き込みや記憶媒体からのデータの読み出しが遅延するという問題がある。通常、ルーティングテーブルには、ストレージシステム内のすべての計算装置および記憶媒体のアドレスについて、対応する出力ポートが記憶されている。したがって、ルーティングテーブルを参照して出力ポートを決定するには、スイッチは、多くのアドレスの中からフレームの送信先アドレスに一致するアドレスを検索する必要がある。このような検索は、フレームの送信元から送信先までの経路上にあるすべてのスイッチで行われるため、フレームの送信先までフレームが転送される際には遅延が生じる。
【０００８】
また、最近では、ハードディスクドライブの小型化などに伴って、１つのストレージシステム内に、より多くの記憶媒体が備えられるようになっている。このため、ルーティングテーブルは、多数のアドレスと出力ポートとの対応関係を記憶する必要があり、ルーティングテーブルの規模が拡大する傾向がある。結果として、フレームの送信先アドレスに一致するアドレスの検索には、さらに多くの時間を要することとなり、スイッチにおけるフレーム転送の遅延は増加している。
【０００９】
本発明はかかる点に鑑みてなされたものであり、フレーム転送の遅延を削減し、記憶媒体へのデータの書き込みおよび記憶媒体からのデータの読み出しを高速化することができるスイッチ装置、ストレージシステム、およびルーティング方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、スイッチ装置は、それぞれ他のスイッチ装置に接続する２つのカスケードポートと、それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、前記ダイレクトポートに接続するすべての記憶媒体のアドレスに、それぞれの記憶媒体に接続するダイレクトポートを示す情報を対応付けて記憶する記憶手段と、一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定手段と、前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力手段と、前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームをダイレクトポートに出力することを決定する決定手段と、前記決定手段によってフレームをダイレクトポートに出力することが決定された場合に、前記記憶手段によって記憶された自装置のダイレクトポートを示す情報において、前記フレームの送信先アドレスに対応する出力ポートを検索する検索手段とを有し、前記検索手段は、前記記憶手段によって記憶されたダイレクトポートを示す情報およびカスケードポートを示す情報のうち、自装置のダイレクトポートを示す情報のみを検索範囲としてフレームの送信先アドレスに対応する出力ポートを検索する構成を採る。
【００１１】
また、ストレージシステムは、互いに接続してフレームを転送する複数のスイッチ装置と、各スイッチ装置に接続する記憶媒体とを備えるストレージシステムであって、前記スイッチ装置は、それぞれ他のスイッチ装置に接続する２つのカスケードポートと、それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、前記ダイレクトポートに接続するすべての記憶媒体のアドレスに、それぞれの記憶媒体に接続するダイレクトポートを示す情報を対応付けて記憶する記憶手段と、一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定手段と、前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力手段と、前記判定手段による判定の結果、前記フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームをダイレクトポートに出力することを決定する決定手段と、前記決定手段によってフレームをダイレクトポートに出力することが決定された場合に、前記記憶手段によって記憶された自装置のダイレクトポートを示す情報において、前記フレームの送信先アドレスに対応する出力ポートを検索する検索手段とを有し、前記検索手段は、前記記憶手段によって記憶されたダイレクトポートを示す情報およびカスケードポートを示す情報のうち、自装置のダイレクトポートを示す情報のみを検索範囲としてフレームの送信先アドレスに対応する出力ポートを検索し、前記記憶媒体は、前記検索手段による検索により決定された出力ポートから出力されるフレームに含まれるデータを記憶する構成を採る。
【００１２】
また、ルーティング方法は、それぞれ他のスイッチ装置に接続する２つのカスケードポートと、それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、前記ダイレクトポートに接続するすべての記憶媒体のアドレスに、それぞれの記憶媒体に接続するダイレクトポートを示す情報を対応付けて記憶する記憶手段とを備えるスイッチ装置におけるルーティング方法であって、一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定ステップと、前記判定ステップにおける判定の結果、前記フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力ステップと、前記判定ステップにおける判定の結果、前記フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームをダイレクトポートに出力することを決定する決定ステップと、前記決定ステップにてフレームをダイレクトポートに出力することが決定された場合に、前記記憶手段によって記憶された自装置のダイレクトポートを示す情報において、前記フレームの送信先アドレスに対応する出力ポートを検索する検索ステップとを有し、前記検索ステップは、前記記憶手段によって記憶されたダイレクトポートを示す情報およびカスケードポートを示す情報のうち、自装置のダイレクトポートを示す情報のみを検索範囲としてフレームの送信先アドレスに対応する出力ポートを検索するようにした。
【００１３】
これらによれば、フレームが規定数のスイッチ装置をまだ経由していない場合には、無条件にフレームを隣接するスイッチ装置へ出力することができ、ポートを決定する処理を実行する必要がない。換言すれば、フレームの送信先に直接接続するスイッチ装置以外のスイッチ装置では、フレームが経由したスイッチ装置の数に対する判定のみで、フレームを出力するポートを決定することができる。したがって、フレーム転送の遅延を削減し、記憶媒体へのデータの書き込みおよび記憶媒体からのデータの読み出しを高速化することができる。
【発明の効果】
【００１４】
本明細書に開示されたスイッチ装置、ストレージシステム、およびルーティング方法によれば、フレーム転送の遅延を削減し、記憶媒体へのデータの書き込みおよび記憶媒体からのデータの読み出しを高速化することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。以下においては、複数の計算装置と複数の記憶媒体がそれぞれスイッチを介して接続されたストレージシステムについて説明する。また、本実施の形態に係るストレージシステムにおいては、計算装置と記憶媒体との間で双方向にフレームが送受信されるが、以下では、主に計算装置から記憶媒体へフレームが送信される場合を中心に説明する。ただし、記憶媒体から計算装置へフレームが送信される場合にも、本発明を同様に適用することができる。
【００１６】
図１は、本実施の形態に係るストレージシステムの概略構成を示すブロック図である。同図に示すストレージシステムにおいては、計算装置１００−１、１００−２がルートスイッチ２００を介して複数の記憶装置３００に接続されている。各記憶装置３００は、それぞれスイッチ３１０およびディスク部３２０を備えている。
【００１７】
計算装置１００−１、１００−２は、記憶装置３００のディスク部３２０にデータを書き込むコマンドやデータそのものをフレームに格納して送信したり、記憶装置３００のディスク部３２０からデータを読み出すコマンドをフレームに格納して送信したりする。このとき、計算装置１００−１、１００−２は、フレーム送信先となるディスク部３２０内の記憶媒体のアドレスを送信先アドレスとしてフレームのヘッダ部に格納する。
【００１８】
また、計算装置１００−１、１００−２は、フレーム送信先となるディスク部３２０内の記憶媒体までの経路上にあるスイッチ（ルートスイッチ２００およびスイッチ３１０）の数をホップ数としてフレームのヘッダ部に格納する。このとき、計算装置１００−１、１００−２は、ネットワークの初期化時などに作成したホップ数テーブルを参照して、フレーム送信先に対応するホップ数をフレームのヘッダ部に格納する。すなわち、計算装置１００−１、１００−２は、ネットワークの初期化時などに、各スイッチ３１０において作成されるルーティングテーブルを参照し、例えば図２に示すようなホップ数テーブルをそれぞれ作成しておく。
【００１９】
ここで、例えば計算装置１００−１が図２に示すホップ数テーブルを作成した場合、計算装置１００−１といずれかのディスク部３２０内にあるディスクＤ11との間には、ルートスイッチ２００を含めてスイッチが３つあることがわかる。同様に、計算装置１００−１とディスクＤmnの間には、スイッチが４つあることになる。このようなホップ数テーブルは、計算装置１００−１、１００−２がストレージシステム全体におけるスイッチ３１０とディスク部３２０内の記憶媒体との接続関係をルーティングテーブルから把握することにより、作成することが可能である。
【００２０】
そして、ホップ数テーブルが作成された後の通常運用時には、計算装置１００−１、１００−２は、例えば図３に示すようなフレーム構成のフレームを送信する。図３に示すフレームは、先頭から順にＳＯＦ（Start Of Frame）４１０、ヘッダ部４２０、データ部４３０、ＣＲＣ（Cyclic Redundancy Check）４４０、およびＥＯＦ（End Of Frame）４５０の５つの領域を有している。
【００２１】
ＳＯＦ４１０は、フレームの始端を示す部分であり、ＥＯＦ４５０は、フレームの終端を示す部分である。これらのＳＯＦ４１０およびＥＯＦ４５０によって、フレームごとの境界が示されている。
【００２２】
ヘッダ部４２０は、フレームの転送に関する制御情報を含む部分であり、具体的には、ＤＡ（Destination Address：送信先アドレス）４２１、ＳＡ（Source Address：送信元アドレス）４２２、およびホップ数４２３を含んでいる。ＤＡ４２１およびＳＡ４２２は、それぞれフレームの送信先および送信元のアドレスであり、計算装置１００−１、１００−２のアドレスやディスク部３２０内の記憶媒体のアドレスが格納されている。ホップ数４２３は、フレームが送信先へ到達するまでに経由するスイッチ（ルートスイッチ２００およびスイッチ３１０）の数を示しており、上述したホップ数テーブルにおいて送信先の記憶媒体に対応するホップ数が格納されている。すなわち、計算装置１００−１、１００−２においてフレームに格納されるホップ数４２３は、フレームの送信元と送信先の組み合わせに固有の規定数であり、ストレージシステム内のネットワークのトポロジー構成から定まる。
【００２３】
データ部４３０は、送信すべきデータの本体を含む部分であり、フレームの送信先となっている記憶媒体に書き込むデータや記憶媒体からデータを読み出すコマンドなどが格納されている。ＣＲＣ４４０は、フレームの転送中に発生した誤りを検出するための保護チェックコードである。
【００２４】
図１に戻って、ルートスイッチ２００は、計算装置１００−１、１００−２と各記憶装置３００とを接続するスイッチであり、計算装置１００−１、１００−２から送信されたフレームを、フレームの送信先となっている記憶媒体を備える記憶装置３００に接続するポートへ出力する。同様に、ルートスイッチ２００は、記憶装置３００から送信されたフレームを、フレームの送信先となっている計算装置１００−１、１００−２に接続するポートへ出力する。このとき、ルートスイッチ２００は、ネットワーク初期化時などに作成したルーティングテーブルを参照し、フレームの送信先アドレスに対応するポートへフレームを出力する。
【００２５】
また、ルートスイッチ２００は、フレームをポートから出力する際、フレームのヘッダ部に格納されたホップ数を１減算した上で格納しなおす。すなわち、ルートスイッチ２００は、フレームが送信先に到達するまでに経由するスイッチの数に等しいホップ数から、自己の分に相当する１を減算して転送する。したがって、ルートスイッチ２００から出力されたフレームのホップ数は、フレームがルートスイッチ２００以降送信先に到達するまでに経由するスイッチ３１０の数に等しくなっている。
【００２６】
なお、図１においては、ルートスイッチ２００が４つのポートを有し、２つのポートにそれぞれ計算装置１００−１、１００−２が接続され、残りの２つのポートにそれぞれ記憶装置３００が接続されるものとしたが、接続関係はこれに限定されない。すなわち、ルートスイッチ２００は、２つ以上のポートを有していれば良く、それぞれのポートに計算装置および記憶装置のどちらが接続されるかは任意で良い。ただし、本実施の形態においては、計算装置から記憶装置へフレームが転送されるため、ルートスイッチ２００の少なくとも１つのポートには計算装置が接続されており、少なくとも１つの他のポートには記憶装置が接続されているものとする。
【００２７】
記憶装置３００は、１つの筐体内にスイッチ３１０およびディスク部３２０を備えており、スイッチ３１０によってルートスイッチ２００または他の記憶装置３００に接続されている。なお、図１において、異なる筐体に対応する複数の記憶装置３００が一体的に構成されても良く、さらに計算装置１００−１、１００−２およびルートスイッチ２００を含めたストレージシステム全体が一体的に構成されても良い。また、個々の記憶装置３００は、必ずしも１つの筐体に対応する必要はないが、本実施の形態においては、互いに直接接続されたスイッチ３１０およびディスク部３２０の組み合わせが同一筐体内に配置されるものとする。すなわち、各スイッチ３１０は、配下にあるディスク部３２０とともに同一筐体内に配置されるものとする。
【００２８】
スイッチ３１０は、２つのカスケードポート（以下「Ｃポート」と略記する）を介してルートスイッチ２００または他のスイッチ３１０に接続するとともに、ダイレクトポート（以下「Ｄポート」と略記する）を介して配下にある同一筐体内のディスク部３２０に接続する。そして、スイッチ３１０は、一方のＣポートから入力されたフレームのホップ数が２以上の場合は、ホップ数を１減算した上で、他方のＣポートからフレームを出力する。また、一方のＣポートから入力されたフレームのホップ数が１の場合は、スイッチ３１０は、ルーティングテーブルを参照して、送信先アドレスに対応するＤポートからフレームを出力する。スイッチ３１０の構成および動作については、後に詳述する。
【００２９】
ディスク部３２０は、少なくとも１つのハードディスクドライブ（以下「ＨＤＤ」と略記する）などの記憶媒体を備えており、各記憶媒体は、スイッチ３１０のＤポートから出力されたフレームに格納されたデータを記憶する。また、ディスク部３２０は、スイッチ３１０のＤポートから出力されたフレームにデータを読み出すコマンドが格納されている場合は、記憶媒体に記憶された読み出し対象のデータをフレーム化してスイッチ３１０へ出力する。
【００３０】
図４は、本実施の形態に係る記憶装置３００の要部構成を示すブロック図である。同図において、記憶装置３００は、図１と同様にスイッチ３１０およびディスク部３２０を備えている。そして、スイッチ３１０は、Ｃポート３１１、ホップ数判定部３１２、Ｃポート３１３、ルーティングテーブル３１４、ポート決定部３１５、およびＤポート３１６−１〜３１６−ｎ（ｎは１以上の整数）を有している。また、ディスク部３２０は、フレーム処理部３２１−１〜３２１−ｎおよびＨＤＤ３２２−１〜３２２−ｎを有している。
【００３１】
まず、スイッチ３１０の構成を説明すると、Ｃポート３１１は、ルートスイッチ２００または他のスイッチ３１０に接続するカスケードポートであり、データやコマンドを含むフレームを入出力する。ここでは、Ｃポート３１１は、図４に示す記憶装置３００よりも計算装置１００−１、１００−２に近い側に設置されたルートスイッチ２００またはスイッチ３１０に接続しているものとする。
【００３２】
ホップ数判定部３１２は、Ｃポート３１１またはＣポート３１３から入力されたフレームのヘッダ部に格納されたホップ数が２以上であるか否かを判定する。そして、ホップ数判定部３１２は、ホップ数が２以上である場合は、ホップ数から１を減算した上でフレームのヘッダ部に格納しなおし、フレームが入力されたＣポートに対向するＣポート３１３またはＣポート３１１から出力する。つまり、ホップ数判定部３１２は、ホップ数が２以上である場合は、フレームが送信先に到達するまでに自スイッチ３１０を含めて２つ以上のスイッチを経由することを意味するため、フレームの送信先が同一筐体内のディスク部３２０には属さないと判断する。このため、ホップ数判定部３１２は、自スイッチ３１０の分に相当する１をホップ数から減算した上で、入力されたＣポートとは反対のＣポート３１３またはＣポート３１１からフレームを他のスイッチ３１０へ出力する。
【００３３】
このとき、ホップ数判定部３１２は、ルーティングテーブル３１４を参照したルーティングなどを行う必要がなく、フレームのヘッダ部に格納されたホップ数に関する判定のみで即座にフレームをＣポート３１３またはＣポート３１１から出力することができる。したがって、フレームがスイッチ３１０を通過する際の遅延を最小限に抑制することができ、フレーム転送の遅延を削減することができる。
【００３４】
一方、ホップ数判定部３１２は、ホップ数が１である場合は、フレームをポート決定部３１５へ出力する。すなわち、ホップ数判定部３１２は、ホップ数が１である場合は、フレームが送信先に到達するまでに自スイッチ３１０のみを経由することを意味するため、フレームの送信先が同一筐体内のディスク部３２０に属すると判断する。このため、ホップ数判定部３１２は、ルーティングテーブル３１４を参照したルーティングを実行させるために、フレームをポート決定部３１５へ出力する。
【００３５】
さらに、ホップ数判定部３１２は、ホップ数が０である場合は、強制的にルーティングテーブル３１４を参照したルーティングを実行させるために、フレームをポート決定部３１５へ出力する。上述したように、計算装置１００−１、１００−２は、ホップ数テーブルを参照してフレームのヘッダ部にホップ数を格納するが、例えば特殊なコマンドなどをデータ部に格納する特殊なフレームについては、ホップ数テーブルとは無関係にホップ数を０とする。すなわち、計算装置１００−１、１００−２は、ホップ数テーブルに記憶された実際のホップ数の代わりに、強制的なルーティングを指示する強制ルーティング指示情報として０をフレームのヘッダ部に格納する。
【００３６】
こうすることにより、ホップ数判定部３１２は、ホップ数として０を格納している特殊なフレームをすべてポート決定部３１５へ出力し、強制的にルーティングテーブル３１４を参照したルーティングを実行させる。したがって、すべてのスイッチにおいてルーティングテーブルを参照する従来と同様のルーティングを実行することも可能であり、特殊なフレームに関しては、確実なルーティングを行うことができる。なお、強制ルーティング指示情報としては、０以外にも例えば空白データなどを使用しても良い。要するに、１以上の数値とは異なる無効な値を強制ルーティング指示情報として用いることが可能である。
【００３７】
Ｃポート３１３は、他のスイッチ３１０に接続するカスケードポートであり、データやコマンドを含むフレームを入出力する。ここでは、Ｃポート３１３は、図４に示す記憶装置３００よりも計算装置１００−１、１００−２から離れた側に設置されたスイッチ３１０に接続しているものとする。
【００３８】
ルーティングテーブル３１４は、ストレージシステム内のすべての計算装置１００−１、１００−２およびＨＤＤ３２２−１〜３２２−ｎなどの装置のアドレスとこれらの装置に対応するポートとを関連付けて記憶している。具体的には、例えば図５に示すように、ルーティングテーブル３１４は、計算装置１００−１、１００−２のアドレスには、Ｃポート３１１を関連付けて記憶している。また、図５に示すルーティングテーブル３１４は、同一の記憶装置３００内のディスク部３２０に属するディスク（ＨＤＤ）３２２−１〜３２２−ｎのアドレスには、それぞれのディスクに接続するＤポート３１６−１〜３１６−ｎを関連付けて記憶している。さらに、図５に示すルーティングテーブル３１４は、他の記憶装置内のディスク部に属するディスクＤ11、Ｄ12などのアドレスには、Ｃポート３１３を関連付けて記憶している。
【００３９】
なお、図５において、ディスクＤ11、Ｄ12は、記憶装置３００よりも計算装置１００−１、１００−２から離れた側に設置された記憶装置内に配置されているものとしているため、対応するポートがＣポート３１３となっている。同様に考えて、記憶装置３００よりも計算装置１００−１、１００−２に近い側に設置された記憶装置内に配置されたディスクのアドレスには、Ｃポート３１１が関連付けて記憶されていることとなる。
【００４０】
ポート決定部３１５は、ホップ数判定部３１２から出力されたフレームのヘッダ部から送信先アドレスを取得し、ルーティングテーブル３１４を参照して、送信先アドレスに対応するポートをフレームの出力ポートに決定する。すなわち、ポート決定部３１５は、ルーティングテーブル３１４を使用したルーティングにより、ヘッダ部に格納されたホップ数が１または０のフレームの出力ポートを決定する。そして、ポート決定部３１５は、決定した出力ポートからフレームを出力する。
【００４１】
ところで、ポート決定部３１５に入力されたフレームのうちホップ数が１のフレームは、送信先が必ず記憶装置３００内のＨＤＤ３２２−１〜３２２−ｎのいずれかである。そこで、ポート決定部３１５は、ホップ数が１の場合、ルーティングテーブル３１４においてＨＤＤ３２２−１〜３２２−ｎのアドレスのみを検索範囲とし、フレームの送信先アドレスと一致するアドレスを検索しても良い。こうすることにより、ポート決定部３１５がルーティングテーブル３１４を参照してルーティングを実行する際にも、あらかじめ検索範囲を限定して送信先アドレスの検索に要する時間を短縮することができる。結果として、フレーム転送の遅延を削減することができる。
【００４２】
また、ポート決定部３１５は、ネットワークの初期化時などに、ディスク部３２０から出力されたフレームを計算装置１００−１、１００−２へ転送する場合のホップ数テーブルを作成する。すなわち、ポート決定部３１５は、計算装置１００−１、１００−２によって作成されたホップ数テーブルから、同一の記憶装置３００内のＨＤＤ３２２−１〜３２２−ｎに対応するホップ数を計算装置１００−１、１００−２それぞれに関するホップ数として抽出する。そして、ポート決定部３１５は、例えば図６に示すように、抽出されたホップ数をそれぞれの計算装置１００−１、１００−２に対応付け、ホップ数テーブルとして記憶する。
【００４３】
ポート決定部３１５に記憶されたホップ数テーブルは、ＨＤＤ３２２−１〜３２２−ｎに記憶されたデータを計算装置１００−１、１００−２へ送信する際に用いられる。すなわち、ポート決定部３１５は、Ｄポート３１６−１〜３１６−ｎを介して自スイッチ３１０に入力されたフレームのヘッダ部から送信先アドレスを取得し、ホップ数テーブルを参照して送信先アドレスに対応するホップ数をフレームのヘッダ部に格納する。その後、ポート決定部３１５は、ルーティングテーブル３１４を参照して、フレームの送信先アドレスに対応するポートをフレームの出力ポートに決定する。ここでは、フレームの送信先が計算装置１００−１、１００−２であるため、Ｃポート３１１が出力ポートに決定される。そして、ポート決定部３１５は、自スイッチ３１０の分に相当する１をヘッダ部のホップ数から減算した上で、出力ポートに決定されたＣポート３１１からフレームを出力する。
【００４４】
Ｄポート３１６−１〜３１６−ｎは、それぞれディスク部３２０のＨＤＤ３２２−１〜３２２−ｎに接続するダイレクトポートであり、データやコマンドを含むフレームを入出力する。すなわち、Ｄポート３１６−１〜３１６−ｎは、配下にあるＨＤＤ３２２−１〜３２２−ｎに接続し、ＨＤＤ３２２−１〜３２２−ｎとの間でデータやコマンドをやり取りする。
【００４５】
次に、ディスク部３２０の構成を説明すると、フレーム処理部３２１−１〜３２１−ｎは、スイッチ３１０のＤポート３１６−１〜３１６−ｎを介して出力されたフレームに対して所定の処理を施す。具体的には、フレーム処理部３２１−１〜３２１−ｎは、フレームの末尾に付加されたＣＲＣなどの保護チェックコードを用いて、転送中にフレームの誤りが発生していないことを確認する。そして、フレーム処理部３２１−１〜３２１−ｎは、対応するＨＤＤ３２２−１〜３２２−ｎにフレームのデータ部に格納されたデータを書き込む。
【００４６】
また、フレーム処理部３２１−１〜３２１−ｎは、フレームのデータ部にデータの読み出しを指示するコマンドが格納されている場合には、対応するＨＤＤ３２２−１〜３２２−ｎからデータを読み出し、読み出したデータをフレーム化する。このとき、フレーム処理部３２１−１〜３２１−ｎは、計算装置１００−１、１００−２が送信するフレームと同様のフレーム構成（図３参照）のフレームを生成する。ただし、ヘッダ部のホップ数については、上述したように、後にポート決定部３１５がホップ数テーブルを参照して格納する。フレーム処理部３２１−１〜３２１−ｎは、ＨＤＤ３２２−１〜３２２−ｎから読み出されたデータを含むフレームをＤポート３１６−１〜３１６−ｎを介してスイッチ３１０へ入力する。
【００４７】
ＨＤＤ３２２−１〜３２２−ｎは、それぞれデータを記憶する記憶媒体であり、ストレージシステム内のすべての記憶媒体を一意に識別するアドレスがそれぞれに付与されている。
【００４８】
次いで、上記のように構成されたスイッチ３１０の動作について、図７に示すフロー図を参照しながら説明する。以下においては、ネットワークの初期化時における動作とネットワークの通常運用時における動作との両方について説明する。また、ネットワークの通常運用時の動作としては、計算装置１００−１からストレージシステム内のいずれかの記憶媒体へフレームが送信された場合の動作を中心に説明する。
【００４９】
ネットワークの初期化時には、計算装置１００−１、１００−２や記憶媒体のアドレスと出力ポートとが対応付けられたルーティングテーブル３１４がスイッチ３１０内に作成される（ステップＳ１０１）。ルーティングテーブル３１４は、スイッチ３１０を含むストレージシステム内のすべてのスイッチによって作成される。そして、計算装置１００−１、１００−２によって、各スイッチが作成したルーティングテーブルが参照され、計算装置１００−１、１００−２それぞれから各記憶媒体へのホップ数を保持するホップ数テーブルが作成される。
【００５０】
計算装置１００−１、１００−２によってそれぞれ作成されたホップ数テーブルの情報は、スイッチ３１０にも通知され、ポート決定部３１５によって、ＨＤＤ３２２−１〜３２２−ｎから計算装置１００−１、１００−２へのホップ数を保持するホップ数テーブルが作成される（ステップＳ１０２）。すなわち、ポート決定部３１５によって、ＨＤＤ３２２−１〜３２２−ｎから読み出されたデータを含むフレームが計算装置１００−１、１００−２に到達するまでに経由するスイッチの数がそれぞれホップ数テーブルに記憶される。これにより、ネットワークの通常運用が可能となり、計算装置１００−１、１００−２による記憶媒体へのデータの書き込みや記憶媒体からのデータの読み出しが開始される。
【００５１】
ネットワークの通常運用時には、計算装置１００−１からデータやコマンドを含むフレームが送信される。送信されたフレームは、ルートスイッチ２００などのスイッチを経由して、スイッチ３１０のＣポート３１１に受信される（ステップＳ１０３）。受信されたフレームは、ホップ数判定部３１２へ出力され、ホップ数判定部３１２によって、フレームのヘッダ部に格納されたホップ数が２以上であるか否かが判定される（ステップＳ１０４）。
【００５２】
この判定の結果、ホップ数が２以上であれば（ステップＳ１０４Ｙｅｓ）、ホップ数判定部３１２によって、フレームのヘッダ部に格納されたホップ数から１が減算された上で（ステップＳ１０５）、フレームがＣポート３１３へ出力される（ステップＳ１０６）。すなわち、Ｃポート３１１からスイッチ３１０へ入力されたフレームのホップ数が２以上である場合は、このフレームの送信先が記憶装置３００内のＨＤＤ３２２−１〜３２２−ｎではないため、フレームは、即座にＣポート３１３を介して他のスイッチへ出力される。このとき、ホップ数判定部３１２によって、自スイッチ３１０に相当する１がホップ数から減算され、減算によりホップ数が更新されたフレームが他のスイッチへ出力される。
【００５３】
このように、ホップ数が２以上の場合は、ルーティングテーブル３１４を参照したルーティングが実行されることなく、フレームがスイッチ３１０を通過するのに要する時間が最小限に抑制される。したがって、フレーム転送の遅延を削減することができる。また、ホップ数から自スイッチ３１０の分に相当する１が減算されるため、スイッチ３１０から出力されたフレームのホップ数は、スイッチ３１０以降フレームが送信先に到達するまでに経由するスイッチの数に等しくなっている。この結果、スイッチ３１０以降にフレームが経由するスイッチにおいても、スイッチ３１０と同様にホップ数に応じたルーティングを実行することができる。
【００５４】
一方、ホップ数が２以上であるか否かの判定の結果、ホップ数が２未満であれば（ステップＳ１０４Ｎｏ）、引き続きホップ数判定部３１２によって、ホップ数が１であるか否かが判定される（ステップＳ１０７）。
【００５５】
この判定の結果、ホップ数が１であれば（ステップＳ１０７Ｙｅｓ）、フレームは、ホップ数判定部３１２からポート決定部３１５へ出力され、ポート決定部３１５によってルーティングテーブル３１４が参照され、フレームを出力するＤポートが決定される（ステップＳ１０８）。すなわち、ポート決定部３１５によって、フレームの送信先アドレスに対応付けてルーティングテーブル３１４に記憶されたポートが出力ポートに決定される。ここでは、ホップ数が１であるため、フレームの送信先は、ＨＤＤ３２２−１〜３２２−ｎのいずれかであることになり、ポート決定部３１５によって、Ｄポート３１６−１〜３１６−ｎのいずれかが出力ポートに決定される。
【００５６】
このとき、フレームの送信先がＨＤＤ３２２−１〜３２２−ｎに限定されていることから、ポート決定部３１５によって、ルーティングテーブル３１４の一部のアドレスを検索範囲とした検索が行われるようにしても良い。具体的には、ＨＤＤ３２２−１〜３２２−ｎのアドレスのみを検索範囲として、フレームの送信先アドレスに一致するアドレスが検索されるようにしても良い。こうすることにより、ホップ数が１である場合にも、フレームがスイッチ３１０を通過するのに要する時間を短縮することができる。
【００５７】
出力ポートの決定後、フレームは、出力ポートとなったＤポートへ出力され（ステップＳ１０９）、Ｄポートを介してディスク部３２０へ出力される。ディスク部３２０では、出力ポートとなったＤポートに対応するフレーム処理部３２１−１〜３２１−ｎによって、フレームの誤り検出などの処理が実行される。その後、出力ポートとなったＤポートに対応する記憶媒体（ＨＤＤ３２２−１〜３２２−ｎ）を対象として、フレームのデータ部に格納されたデータの書き込みや、フレームのデータ部に格納されたコマンドが指定するデータの読み出しが行われる。
【００５８】
また、ホップ数が１であるか否かの判定の結果、ホップ数が１でなければ（ステップＳ１０７Ｎｏ）、ホップ数は、強制ルーティング指示情報に相当する０などの無効な値となっていることになる。このため、フレームは、ホップ数判定部３１２からポート決定部３１５へ出力され、ポート決定部３１５によって強制的にルーティングテーブル３１４を参照したルーティングが実行される（ステップＳ１１０）。すなわち、ポート決定部３１５によって、フレームの送信先アドレスに対応付けてルーティングテーブル３１４に記憶されたポートが出力ポートに決定される。ここでは、ホップ数が０などの無効な値であるため、フレームの送信先は、ＨＤＤ３２２−１〜３２２−ｎとは限らず、ポート決定部３１５によって、入力ポートであるＣポート３１１以外のＣポート３１３およびＤポート３１６−１〜３１６−ｎのいずれかが出力ポートに決定される。
【００５９】
このとき、ホップ数が１の場合とは異なり、フレームの送信先が限定されていないため、ポート決定部３１５によって、ルーティングテーブル３１４のすべてのアドレスを検索範囲とした検索が行われる。ただし、ホップ数が０などの無効な値となるのは、例えばフレームが特殊なコマンドを含む場合や、ストレージシステム内のいずれかの記憶装置がスイッチ３１０と同様のスイッチを備えていない場合などの希少なケースに限られる。したがって、強制的なルーティングが頻繁に実行されることはなく、ホップ数が１以上の場合の動作により、確実にデータの書き込みや読み出しの高速化が図られる。
【００６０】
出力ポートの決定後、フレームは、出力ポートとなったＣポート３１３またはＤポート３１６−１〜３１６−ｎから他のスイッチまたはディスク部３２０へ転送される（ステップＳ１１１）。フレームが他のスイッチへ転送された場合は、ホップ数が０であるため、他のスイッチにおいても強制的にルーティングテーブルを使用したルーティングが実行される。また、フレームがディスク部３２０へ転送された場合は、ホップ数が１である場合と同様に、ＨＤＤ３２２−１〜３２２−ｎを対象として、データの書き込みや読み出しが行われる。
【００６１】
なお、図７においては省略したが、ＨＤＤ３２２−１〜３２２−ｎから読み出されたデータが計算装置１００−１、１００−２へ送信される場合には、フレーム処理部３２１−１〜３２１−ｎによって、読み出されたデータがフレーム化される。そして、得られたフレームがＤポート３１６−１〜３１６−ｎを介してスイッチ３１０へ入力されると、ポート決定部３１５によって、ネットワークの初期化時に作成されたホップ数テーブルが参照され、フレームのヘッダ部に送信先の計算装置に対応するホップ数が格納される。さらに、ポート決定部３１５によって、ルーティングテーブル３１４が参照され、フレームの送信先の計算装置に対応する出力ポートが決定される。ここでは、計算装置１００−１、１００−２のアドレスは、いずれもＣポート３１１に対応付けられているため、ポート決定部３１５によって、出力ポートがＣポート３１１に決定される。そして、ポート決定部３１５によって、自スイッチ３１０の分に相当する１がヘッダ部のホップ数から減算された上で、Ｃポート３１１からフレームが出力される。
【００６２】
次に、本実施の形態に係るフレームのルーティングについて、さらに具体的に例を挙げながら説明する。図８は、本実施の形態に係る記憶装置の接続を模式的に示す図である。同図においては、２つの記憶装置３００−１、３００−２がスイッチ３１０−１、３１０−２によって接続されている。そして、スイッチ３１０−１、３１０−２は、それぞれカスケードポートとしてポートＰ0、Ｐn+1を有しており、ダイレクトポートとしてポートＰ1〜Ｐnを有している。なお、図８において、フレームを送信する計算装置は、スイッチ３１０−１のポートＰ0側に接続されているものとする。
【００６３】
スイッチ３１０−１は、ポートＰn+1を介してスイッチ３１０−２に接続されており、ポートＰ1〜Ｐnを介して、それぞれディスク部３２０−１に属するディスクＤ1〜Ｄnに接続されている。同様に、スイッチ３１０−２は、ポートＰ0を介してスイッチ３１０−１に接続されており、ポートＰ1〜Ｐnを介して、それぞれディスク部３２０−２に属するディスクＤn+1〜Ｄ2nに接続されている。
【００６４】
このような接続関係が成立している場合、スイッチ３１０−１、３１０−２は、それぞれ図９に示すようなルーティングテーブルを作成して保持することになる。すなわち、スイッチ３１０−１は、計算装置にポートＰ0を対応付けるエントリ５０１と、ディスクＤ1〜ＤnにポートＰ1〜Ｐnを対応付けるエントリ５０２と、ディスクＤn+1〜Ｄ2nにポートＰn+1を対応付けるエントリ５０３とを含むルーティングテーブルを保持する。また、スイッチ３１０−２は、計算装置にポートＰ0を対応付けるエントリ５１１と、ディスクＤ1〜ＤnにポートＰ0を対応付けるエントリ５１２と、ディスクＤn+1〜Ｄ2nにポートＰ1〜Ｐnを対応付けるエントリ５１３とを含むルーティングテーブルを保持する。
【００６５】
ここでは、１つ目の例として、計算装置が記憶装置３００−２のディスクＤ2nへフレームを送信する場合のルーティングについて説明する。
【００６６】
計算装置から送信されたフレームは、ポートＰ0を介してスイッチ３１０−１に入力される。スイッチ３１０−１では、フレームのヘッダ部に格納されたホップ数が２以上であるか否かが判定される。フレームの送信先は、スイッチ３１０−２に接続されたディスクＤ2nであるため、フレームがスイッチ３１０−１に入力された時点では、フレームのヘッダ部にはホップ数として２が格納されている。したがって、ホップ数が２以上であるため、スイッチ３１０−１は、フレームが入力されたカスケードポートＰ0とは異なるカスケードポートＰn+1から即座にフレームを出力する。
【００６７】
すなわち、スイッチ３１０−１は、図９に示したルーティングテーブルを参照することなく、ホップ数から自スイッチ３１０−１に相当する１を減算した上で、フレームをポートＰn+1から出力する。このとき、ホップ数から１が減算されたため、ポートＰn+1から出力されたフレームのホップ数は１となっている。
【００６８】
スイッチ３１０−１から出力されたフレームは、ポートＰ0を介してスイッチ３１０−２に入力される。スイッチ３１０−２では、スイッチ３１０−１と同様に、フレームのヘッダ部に格納されたホップ数が２以上であるか否かが判定される。上述したように、フレームがスイッチ３１０−２に入力された時点では、フレームのヘッダ部にはホップ数として１が格納されている。したがって、ホップ数が２未満であるため、スイッチ３１０−２は、図９に示したルーティングテーブルを参照してルーティングを実行する。
【００６９】
すなわち、スイッチ３１０−２は、フレームのヘッダ部に格納されている送信先アドレスと一致するアドレスをルーティングテーブルから検索し、該当するアドレスに対応するポートをフレームの出力ポートに決定する。このとき、ホップ数が１であることから、フレームの送信先は、必ずディスクＤn+1〜Ｄ2nのいずれかであることになり、ルーティングテーブルのエントリ５１３のみが検索範囲とされる。つまり、エントリ５１１、５１２は、検索範囲から除外され、ディスクＤn+1〜Ｄ2nのアドレスのみの中からフレームの送信先アドレスが検索される。このため、ルーティングテーブルからフレームの送信先アドレスに一致するアドレスを検索するのに要する時間を短縮することができる。
【００７０】
送信先アドレスの検索の結果、出力ポートがディスクＤ2nに対応するポートＰnに決定されると、フレームは、出力ポートとなったポートＰnから出力され、例えばフレームのデータ部に格納されたデータがディスクＤ2nに書き込まれる。ここまでの過程において、スイッチ３１０−１では、ルーティングテーブルを用いた送信先アドレスの検索が一切不要であり、スイッチ３１０−２では、ルーティングテーブルの一部のエントリ５１３を検索範囲とした送信先アドレスの検索が実行されている。したがって、それぞれのスイッチ３１０−１、３１０−２においてルーティングテーブルのすべてのエントリを検索範囲とした送信先アドレスの検索が実行される場合と比較すると、大幅にフレーム転送の遅延が削減されることがわかる。
【００７１】
次に、２つ目の例として、計算装置が記憶装置３００−１のディスクＤnへフレームを送信する場合のルーティングについて説明する。
【００７２】
計算装置から送信されたフレームは、ポートＰ0を介してスイッチ３１０−１に入力される。スイッチ３１０−１では、フレームのヘッダ部に格納されたホップ数が２以上であるか否かが判定される。フレームの送信先は、スイッチ３１０−１に接続されたディスクＤnであるため、フレームがスイッチ３１０−１に入力された時点で、フレームのヘッダ部にはホップ数として１が格納されている。したがって、ホップ数が２未満であるため、スイッチ３１０−１は、図９に示したルーティングテーブルを参照してルーティングを実行する。
【００７３】
すなわち、スイッチ３１０−１は、フレームのヘッダ部に格納されている送信先アドレスと一致するアドレスをルーティングテーブルから検索し、該当するアドレスに対応するポートをフレームの出力ポートに決定する。このとき、ホップ数が１であることから、フレームの送信先は、必ずディスクＤ1〜Ｄnのいずれかであることになり、ルーティングテーブルのエントリ５０２のみが検索範囲とされる。つまり、エントリ５０１、５０３は、検索範囲から除外され、ディスクＤ1〜Ｄnのアドレスのみの中からフレームの送信先アドレスが検索される。このため、ルーティングテーブルからフレームの送信先アドレスに一致するアドレスを検索するのに要する時間を短縮することができる。
【００７４】
送信先アドレスの検索の結果、出力ポートがディスクＤnに対応するポートＰnに決定されると、フレームは、出力ポートとなったポートＰnから出力され、例えばフレームのデータ部に格納されたデータがディスクＤnに書き込まれる。ここまでの過程において、スイッチ３１０−１では、ルーティングテーブルの一部のエントリ５０２を検索範囲とした送信先アドレスの検索が実行されている。したがって、スイッチ３１０−１においてルーティングテーブルのすべてのエントリを検索範囲とした送信先アドレスの検索が実行される場合と比較すると、フレーム転送の遅延が削減されることがわかる。
【００７５】
以上のように、本実施の形態によれば、フレームが送信先に到達するまでに経由するスイッチの数に等しいホップ数がフレームのヘッダ部に格納されており、各スイッチでは、ホップ数が２以上であれば、ホップ数から１を減算した上で無条件に隣接するスイッチへフレームが転送される。そして、ホップ数が１となっている場合に、ルーティングテーブルが参照され、同一の記憶装置内に配置された記憶媒体のアドレスを検索範囲として、フレームの送信先アドレスに一致するアドレスが検索される。このため、スイッチに入力されたフレームのホップ数が２以上であれば、このフレームが即座にスイッチから出力され、スイッチに入力されたフレームのホップ数が１であれば、迅速にフレームの出力ポートが決定される。したがって、フレームが転送経路にあるスイッチを通過するのに要する時間を短縮することができる。結果として、フレーム転送の遅延を削減し、記憶媒体へのデータの書き込みおよび記憶媒体からのデータの読み出しを高速化することができる。
【００７６】
なお、上記一実施の形態においては、フレームのヘッダ部に格納されたホップ数が、スイッチ３１０のホップ数判定部３１２によって１ずつ減算されるものとした。しかし、フレームがスイッチを通過するたびに、ホップ数を１ずつ加算することによっても本発明を実現することができる。この場合には、各スイッチにおいて、フレームのヘッダ部に格納されたホップ数と閾値とが比較されるようにし、ホップ数と閾値が等しくなったスイッチにおいてのみ、ルーティングテーブルを使用したルーティングが実行されるようにすれば良い。
【００７７】
具体的には、ホップ数を加算する場合のフレーム構成は、例えば図１０に示すもののようになる。図１０において、図３と同じ部分には同じ符号を付している。ホップ数を減算する場合（図３）との違いは、フレームのヘッダ部４２０にホップ数６０１および閾値６０２が含まれている点である。
【００７８】
ホップ数６０１は、フレームが送信されてから現在までに経由したスイッチの数を示している。すなわち、フレームが最初に送信される時点では、ホップ数６０１には０が格納されており、フレームがスイッチを通過するたびに、ホップ数６０１に１が加算されていく。
【００７９】
閾値６０２は、フレームが送信先へ到達するまでに経由するスイッチの合計数を示しており、ホップ数テーブルにおいて送信先の記憶媒体に対応するホップ数が格納されている。つまり、ホップ数を加算する場合には、ホップ数を減算する場合（図３）のホップ数４２３と同じ値が閾値６０２に格納されることになる。
【００８０】
このようなフレーム構成となっているため、各記憶装置のスイッチでは、フレームが入力されると、ヘッダ部のホップ数６０１に１が加算される。そして、加算後のホップ数６０１と閾値６０２とが比較され、ホップ数６０１が閾値６０２未満であれば、無条件に隣接するスイッチへフレームが転送される。一方、ホップ数６０１が閾値６０２に等しければ、ルーティングテーブルが参照され、同一の記憶装置内に配置された記憶媒体のアドレスを検索範囲として、フレームの送信先アドレスに一致するアドレスが検索される。
【００８１】
このように、ホップ数を１ずつ加算する場合には、フレームのヘッダ部にホップ数の閾値を格納しておき、各スイッチがホップ数と閾値の比較を行うことにより、上記一実施の形態と同様の効果が得られる。つまり、ホップ数を１ずつ減算する場合と１ずつ加算する場合のいずれにおいても、フレームのヘッダ部に格納されるホップ数は、フレームが送信元から転送される間に経由したスイッチの数を表している。そして、ホップ数に対する判定は、ネットワークのトポロジー構成上フレームの送信元と送信先の間に配置される規定数のスイッチをフレームが既に経由したか否かの判定に他ならない。
【００８２】
また、上記一実施の形態においては、ネットワークの初期化時に、ストレージシステム内のすべての計算装置および記憶媒体のアドレスと出力ポートとを対応付けたルーティングテーブルが作成されるものとした。しかし、フレームのホップ数が１であると判定されたスイッチにおいては、同一の記憶装置内に配置された記憶媒体のアドレスのみが検索範囲となるため、これらの記憶媒体のアドレスと出力ポートを対応付けたルーティングテーブルが作成されるようにしても良い。すなわち、スイッチにおけるルーティングテーブルを使用したルーティングの際に、必要となるアドレスは、スイッチと同一筐体内に配置された記憶媒体のアドレスのみである。そこで、各スイッチによって、同一筐体内に配置された記憶媒体のアドレスのみに関するルーティングテーブルが作成されるようにしても本発明を実現することができる。
【００８３】
以上の実施の形態に関して、さらに以下の付記を開示する。
【００８４】
（付記１）それぞれ他のスイッチ装置に接続する２つのカスケードポートと、
それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、
一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定手段と、
前記判定手段による判定の結果、フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力手段と、
前記判定手段による判定の結果、フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームを出力するダイレクトポートを決定する決定手段と
を有することを特徴とするスイッチ装置。
【００８５】
（付記２）前記判定手段は、
フレームに格納されたホップ数情報を参照して、フレームの送信元において前記規定数に等しい値に設定された後はフレームがスイッチ装置を経由するたびに１ずつ減算されるホップ数が１に等しいか否かを判定し、
前記出力手段は、
前記判定手段による判定の結果、ホップ数が１より大きい場合に、フレームを前記他方のカスケードポートから出力する
ことを特徴とする付記１記載のスイッチ装置。
【００８６】
（付記３）前記出力手段は、
フレームに格納されたホップ数情報が示すホップ数を１減算した上で、当該フレームを前記他方のカスケードポートから出力することを特徴とする付記２記載のスイッチ装置。
【００８７】
（付記４）前記判定手段は、
フレームに格納されたホップ数情報および閾値情報を参照して、フレームの送信元において０に設定された後はフレームがスイッチ装置を経由するたびに１ずつ加算されるホップ数が、閾値情報に含まれる前記規定数に等しいか否かを判定し、
前記出力手段は、
前記判定手段による判定の結果、ホップ数が前記規定数未満である場合に、フレームを前記他方のカスケードポートから出力する
ことを特徴とする付記１記載のスイッチ装置。
【００８８】
（付記５）前記判定手段は、
フレームに格納されたホップ数情報が示すホップ数を１加算した上で、１を加算後のホップ数が前記規定数に等しいか否かを判定することを特徴とする付記４記載のスイッチ装置。
【００８９】
（付記６）前記決定手段は、
前記ダイレクトポートに接続するすべての記憶媒体のアドレスに、それぞれの記憶媒体に接続するダイレクトポートを対応付けて記憶する記憶手段を含み、
フレームの送信先アドレスに対応付けて前記記憶手段に記憶されたダイレクトポートをフレームの出力ポートに決定することを特徴とする付記１記載のスイッチ装置。
【００９０】
（付記７）前記記憶手段は、
前記ダイレクトポートに接続しない装置のアドレスに、それぞれ前記２つのカスケードポートのいずれか一方を対応付けて記憶することを特徴とする付記６記載のスイッチ装置。
【００９１】
（付記８）前記決定手段は、
前記記憶手段によって記憶されたダイレクトポートおよびカスケードポートのうち、前記ダイレクトポートのみを検索範囲としてフレームの送信先アドレスに対応する出力ポートを検索することを特徴とする付記７記載のスイッチ装置。
【００９２】
（付記９）前記決定手段は、
フレームが強制ルーティング指示情報を含む場合には、前記判定手段による判定の結果とは無関係に、前記２つのカスケードポートおよび前記ダイレクトポートの中からフレームを出力するポートを決定することを特徴とする付記１記載のスイッチ装置。
【００９３】
（付記１０）互いに接続してフレームを転送する複数のスイッチ装置と、各スイッチ装置に接続する記憶媒体とを備えるストレージシステムであって、
前記スイッチ装置は、
それぞれ他のスイッチ装置に接続する２つのカスケードポートと、
それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートと、
一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定手段と、
前記判定手段による判定の結果、フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力手段と、
前記判定手段による判定の結果、フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームを出力するダイレクトポートを決定する決定手段と
を有し、
前記記憶媒体は、
前記決定手段によって決定されたダイレクトポートから出力されるフレームに含まれるデータを記憶する
ことを特徴とするストレージシステム。
【００９４】
（付記１１）それぞれ他のスイッチ装置に接続する２つのカスケードポートと、それぞれ自装置の配下にある記憶媒体に接続する少なくとも１つのダイレクトポートとを備えるスイッチ装置におけるルーティング方法であって、
一方のカスケードポートから入力されたフレームが、当該フレームの送信元から送信先の間の転送経路に配置される規定数のスイッチ装置を既に経由したか否かを判定する判定ステップと、
前記判定ステップにおける判定の結果、フレームが規定数のスイッチ装置をまだ経由していない場合に、当該フレームを他方のカスケードポートから出力する出力ステップと、
前記判定ステップにおける判定の結果、フレームが規定数のスイッチ装置を既に経由している場合に、当該フレームを出力するダイレクトポートを決定する決定ステップと
を有することを特徴とするルーティング方法。
【図面の簡単な説明】
【００９５】
【図１】一実施の形態に係るストレージシステムの概略構成を示すブロック図である。
【図２】一実施の形態に係るホップ数テーブルの一例を示す図である。
【図３】一実施の形態に係るフレーム構成の一例を示す図である。
【図４】一実施の形態に係る記憶装置の要部構成を示すブロック図である。
【図５】一実施の形態に係るルーティングテーブルの一例を示す図である。
【図６】一実施の形態に係る他のホップ数テーブルの一例を示す図である。
【図７】一実施の形態に係るスイッチの動作を示すフロー図である。
【図８】一実施の形態に係る記憶装置の接続を模式的に示す図である。
【図９】図８のスイッチに係るルーティングテーブルを示す図である。
【図１０】他の実施の形態に係るフレーム構成の一例を示す図である。
【符号の説明】
【００９６】
３１０  スイッチ
３１１、３１３  カスケードポート（Ｃポート）
３１２  ホップ数判定部
３１４  ルーティングテーブル
３１５  ポート決定部
３１６−１〜３１６−ｎ  ダイレクトポート（Ｄポート）
３２０  ディスク部
３２１−１〜３２１−ｎ  フレーム処理部
３２２−１〜３２２−ｎ  ハードディスクドライブ（ＨＤＤ）
【図１】
0004712069.tif 000002
【図２】
0004712069.tif 000003
【図３】
0004712069.tif 000004
【図４】
0004712069.tif 000005
【図５】
0004712069.tif 000006
【図６】
0004712069.tif 000007
【図７】
0004712069.tif 000008
【図８】
0004712069.tif 000009
【図９】
0004712069.tif 000010
【図１０】
0004712069.tif 000011