(57)【要約】【課題】ファイバチャネル通信において、エラーフレームのフレームヘッダが壊れていた場合に、壊れているフレームヘッダの修正を行ない得る、ファイバチャネル制御システム、管理装置、ファイバチャネルの制御方法、及びプログラムを提供する。【解決手段】ファイバチャネル制御システム１０は、スイッチ装置３と管理装置１とを備える。スイッチ装置３は、エラーフレームを管理装置１に送信する。管理装置１は、エラーフレームを受信するフレーム受信部１２と、サーバ装置２から取得したエクスチェンジの送信元のポートアドレス、送信先のポートアドレス及びエクスチェンジ番号で、エラーフレームのヘッダの送信元のポートアドレス、送信先のポートアドレス及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、これとエラーフレームのＣＲＣとが一致すると、スイッチ装置３に置換後のフレームを送信させるフレーム修復部１３とを備える。【選択図】図１
2018159988.tif 000002
【特許請求の範囲】
【請求項１】
ファイバチャネルによって接続されているサーバ装置とストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、管理装置とを備え、
前記スイッチ装置は、
フレームエラーを検出すると、前記フレームエラーが発生したフレームを前記管理装置に送信する、エラーフレーム通知部を備え、
前記管理装置は、
前記スイッチ装置から送信されてきた、前記フレームエラーが発生したフレームを受信する、フレーム受信部と、
前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、フレーム修復部と、
を備えている、ことを特徴とするファイバチャネル制御システム。
【請求項２】
前記管理装置が、算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致していない場合に、前記フレームエラーが発生したフレームの送信元のサーバ装置を特定し、特定したサーバ装置に、フレームの再送を指示する、開始機器特定部を、更に備えている、
請求項１に記載のファイバチャネル制御システム。
【請求項３】
前記管理装置が、
前記サーバ装置から、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を取得し、これらを１つのエントリとして、管理テーブルに登録する、機器情報管理部を更に備え、
前記フレーム修復部が、前記エントリ毎に、置換を行なって、置換後のフレームのＣＲＣを算出する、
請求項１または２に記載のファイバチャネル制御システム。
【請求項４】
サーバ装置と、ファイバチャネルによって前記サーバ装置に接続されているストレージ装置と、前記サーバ装置と前記ストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、を管理するための装置であって、
前記スイッチ装置によって、フレームエラーが検出され、前記フレームエラーが発生したフレームが送信されてきた際に、前記フレームエラーが発生したフレームを受信する、フレーム受信部と、
前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、フレーム修復部と、
を備えている、ことを特徴とする管理装置。
【請求項５】
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致していない場合に、前記フレームエラーが発生したフレームの送信元のサーバ装置を特定し、特定したサーバ装置に、フレームの再送を指示する、開始機器特定部を、更に備えている、
請求項４に記載の管理装置。
【請求項６】
前記サーバ装置から、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を取得し、これらを１つのエントリとして、管理テーブルに登録する、機器情報管理部を更に備え、
前記フレーム修復部が、前記エントリ毎に、置換を行なって、置換後のフレームのＣＲＣを算出する、
請求項４または５に記載の管理装置。
【請求項７】
ファイバチャネルによって接続されているサーバ装置とストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、管理装置とを用い、
（ａ）前記スイッチ装置によって、
フレームエラーを検出すると、前記フレームエラーが発生したフレームを前記管理装置に送信する、ステップと、
（ｂ）前記管理装置によって、前記スイッチ装置から送信されてきた、前記フレームエラーが発生したフレームを受信する、ステップと、
（ｃ）前記管理装置によって、前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、ステップと、
を有する、ことを特徴とするファイバチャネルの制御方法。
【請求項８】
コンピュータによって、サーバ装置と、ファイバチャネルによって前記サーバ装置に接続されているストレージ装置と、前記サーバ装置と前記ストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、を管理するためのプログラムであって、
前記コンピュータに、
（ａ）前記スイッチ装置によって、フレームエラーが検出され、前記フレームエラーが発生したフレームが送信されてきた際に、前記フレームエラーが発生したフレームを受信する、ステップと、
（ｂ）前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイバチャネル通信を制御するための、ファイバチャネル制御システム、管理装置、及びファイバチャネルの制御方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【０００２】
ファイバチャネル（以下「FC（Fibre Channel）」と表記する。）通信は、データ転送方式の１つであり、主に、高速な回線を必要とするサーバ装置とストレージとの接続に利用されている。また、FC通信には、データ転送の制御の違いにより、サービスクラスが規定されている。サービスクラスには、１、２、３、４、６、Ｆが存在する。このうち、サービスクラス３が現在の主流となっている。
【０００３】
ここで、図１７及び図１８を用いて、従来からのFC通信について説明する。図１７は、従来からのファイバチャネル通信の仕組みを示す図である。図１８は、ファイバチャネル通信で用いられるフレームヘッダの構造を示す図である。
【０００４】
図１７に示すように、FC通信では、サーバがストレージに対してRead又はWriteを指示する場合、「エクスチェンジ」と呼ばれる単位で指示が行なわれる。また、１つのエクスチェンジは、複数のシーケンスで構成され、１つのシーケンスは、複数のフレーム（図１８参照）で構成される。
【０００５】
ところで、サービスクラス３では、通信経路上でCRC(Cyclic Redundancy Check)エラーが発生した場合に、そのフレームは破棄されるが、送信元へのエラー通知は行なわれない仕様となっている。このため、上位のプロトコルレイヤーのタイムアウトによる再送が行われるまで、エラーリカバリ処理は行われず、その間、サーバとストレージとの間でのデータの送受信（I/O）が停止するという問題が発生してしまう。
【０００６】
このような問題に対応するため、例えば、特許文献１は、図１９に示すシステムを提案している。図１９は、特許文献１に開示されたシステムの構成を示す図である。図２０は、図１９に示すシステムにおいてエクスチェンジの先頭フレームが検出された際の動作を示す図である。図２１は、図１９に示すシステムにおいてフレームエラーが検出された際の動作を示す図である。
【０００７】
図１９に示すように、特許文献１に開示されたシステムは、サーバとストレージとがFCスイッチを介して接続されたFC通信環境を備え、管理コントローラが、ＬＡＮを経由して、サーバとFCスイッチとに接続されている。
【０００８】
図２０に示すように、サーバは、ファブリック接続時に取得したサーバのポート番号と、接続先のストレージのポート番号と、サーバのIPアドレスとを、管理コントローラに送信する。管理コントローラは、これらの情報を管理テーブルに保持する。
【０００９】
また、図２０に示すように、FCスイッチは、エクスチェンジの先頭フレームを検出すると、先頭フレームのヘッダを管理コントローラに送信する。管理コントローラは、先頭フレームヘッダのS_ID（フレーム送信元のポート番号）とＤ_ID（フレーム送信先のポート番号）との組から管理テーブルのエントリを検索して、見つかったエントリに先頭フレームヘッダを格納する。
【００１０】
更に、図２１に示すように、FCスイッチは、CRCエラーなどのフレームエラーを検出すると、エラーフレームのヘッダを管理コントローラに送信し、エラーフレームは破棄する。管理コントローラは、エラーフレームのヘッダと、管理テーブルに保持しているS_ID、D_ID、及びエクスチェンジの先頭ヘッダに含まれるOX_IDを比較して、これらが一致するエントリを検索する。なお、OX_IDは、エクスチェンジごとに一意に与えられる値であり、エクスチェンジ番号を示している（図１８参照）
【００１１】
エントリが見つかった場合、管理コントローラは、IPアドレスがエントリに登録されているサーバ（エラーフレームの発信元サーバ）に対して、再送指示を発行する。エントリが見つからなかった場合、管理コントローラは、エラーフレームの処理を中止する。（したがってこのエラーフレームは破棄扱いになる）
【００１２】
このように、特許文献１に開示されたシステムでは、伝送中のフレームでエラーが発生した場合に、エラーフレームのヘッダのＳ_ID、Ｄ_ID、及びＯＸ_IDと、エクスチェンジ開始時のフレームのヘッダのS_ID、D_ID、及びOX_IDとを比較する。そして、特許文献１に開示されたシステムは、比較の結果から、エラーフレームの送信元のサーバを特定し、再送指示を発行する。つまり、特許文献１に開示されたシステムは、エクスチェンジ内の全てのフレームのヘッダのS_ID、D_ID、OX_IDが同一の値になるという特徴を利用して、エラー発生時の再送までの時間を短縮化している。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１４−１８２７３９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、特許文献１に開示されたシステムは、エラーフレームの送信元サーバを特定するために、エラーフレームヘッダのS_ID、D_ID、及びOX_IDをキーにして管理テーブルを検索している。このため、特許文献１に開示されたシステムでは、エラーフレームヘッダのS_ID、D_ID、OX_IDが壊れていた場合に、管理テーブルからエラーフレームの送信元サーバを特定できず、再送指示を出すことができないという問題が発生してしまう。
【００１５】
本発明の目的の一例は、上記問題を解消し、ファイバチャネル通信において、エラーフレームのフレームヘッダが壊れていた場合に、壊れているフレームヘッダの修正を行ない得る、ファイバチャネル制御システム、管理装置、ファイバチャネルの制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、本発明の一側面におけるファイバチャネル制御システムは、ファイバチャネルによって接続されているサーバ装置とストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、管理装置とを備え、
前記スイッチ装置は、
フレームエラーを検出すると、前記フレームエラーが発生したフレームを前記管理装置に送信する、エラーフレーム通知部を備え、
前記管理装置は、
前記スイッチ装置から送信されてきた、前記フレームエラーが発生したフレームを受信する、フレーム受信部と、
前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、フレーム修復部と、
を備えている、ことを特徴とする。
【００１７】
上記目的を達成するため、本発明の一側面における管理装置は、サーバ装置と、ファイバチャネルによって前記サーバ装置に接続されているストレージ装置と、前記サーバ装置と前記ストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、を管理するための装置であって、
前記スイッチ装置によって、フレームエラーが検出され、前記フレームエラーが発生したフレームが送信されてきた際に、前記フレームエラーが発生したフレームを受信する、フレーム受信部と、
前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、フレーム修復部と、
を備えていることを特徴とする。
【００１８】
また、上記目的を達成するため、本発明の一側面におけるファイバチャネルの制御方法は、ファイバチャネルによって接続されているサーバ装置とストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、管理装置とを用い、
（ａ）前記スイッチ装置によって、
フレームエラーを検出すると、前記フレームエラーが発生したフレームを前記管理装置に送信する、ステップと、
（ｂ）前記管理装置によって、前記スイッチ装置から送信されてきた、前記フレームエラーが発生したフレームを受信する、ステップと、
（ｃ）前記管理装置によって、前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、ステップと、
を有する、ことを特徴とする。
【００１９】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって、サーバ装置と、ファイバチャネルによって前記サーバ装置に接続されているストレージ装置と、前記サーバ装置と前記ストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、を管理するためのプログラムであって、
前記コンピュータに、
（ａ）前記スイッチ装置によって、フレームエラーが検出され、前記フレームエラーが発生したフレームが送信されてきた際に、前記フレームエラーが発生したフレームを受信する、ステップと、
（ｂ）前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００２０】
以上のように、本発明によれば、ファイバチャネル通信において、エラーフレームのフレームヘッダが壊れていた場合に、壊れているフレームヘッダの修正を行なうことができる。
【図面の簡単な説明】
【００２１】
【図１】図１は、本発明の実施の形態におけるファイバチャネル制御システム及び管理装置の概略構成を示すブロック図である。
【図２】図２は、本発明の実施の形態におけるファイバチャネル制御システム及び管理装置の具体的構成を示すブロック図である。
【図３】図３は、本発明の実施の形態における管理装置が備える管理テーブルの一例を示す図である。
【図４】図４は、本発明の実施の形態におけるファイバチャネル制御システムにおいてフレームエラーが復旧された場合の動作を示す図である。
【図５】図５は、本発明の実施の形態におけるファイバチャネル制御システムにおいてフレームエラーが復旧されなかった場合の動作を示す図である。
【図６】図６は、本発明の実施の形態におけるサーバ装置のストレージ装置との通信を開始する前の動作を示すフロー図である。
【図７】図７は、本発明の実施の形態における管理装置がサーバ装置の処理に応じて行なう動作を示すフロー図である。
【図８】図８は、本発明の実施の形態におけるスイッチ装置が管理装置に対して行なう動作を示すフロー図である。
【図９】図９は、本発明の実施の形態における管理装置がスイッチ装置の処理に応じて行なう動作を示すフロー図である。
【図１０】図１０は、本発明の実施の形態におけるスイッチ装置のフレームエラー発生時の動作を示すフロー図である。
【図１１】図１１は、本発明の実施の形態における管理装置のフレーム受信部における動作を示すフロー図である。
【図１２】図１２は、本発明の実施の形態における管理装置のフレーム修復部における動作を示すフロー図である。
【図１３】図１３は、本発明の実施の形態におけるスイッチ装置のエラーフレームが修復された場合の動作を示すフロー図である。
【図１４】図１４は、本発明の実施の形態における管理装置の開始機器特定部における動作を示すフロー図である。
【図１５】図１５は、本発明の実施の形態において管理装置からサーバ装置に再送が指示された場合のサーバ装置における動作を示すフロー図である。
【図１６】図１６は、本発明の実施の形態における管理装置を実現するコンピュータの一例を示すブロック図である。
【図１７】図１７は、従来からのファイバチャネル通信の仕組みを示す図である。
【図１８】図１８は、ファイバチャネル通信で用いられるフレームヘッダの構造を示す図である。
【図１９】図１９は、特許文献１に開示されたシステムの構成を示す図である。
【図２０】図２０は、図１９に示すシステムにおいてエクスチェンジの先頭フレームが検出された際の動作を示す図である。
【図２１】図２１は、図１９に示すシステムにおいてフレームエラーが検出された際の動作を示す図である。
【発明を実施するための形態】
【００２２】
（発明の概要）
本発明では、FCスイッチは、フレームエラーを検出すると、エラーフレーム全体（最大２１４８バイト）を管理装置に送信する。これにより、管理装置は、管理テーブルにおける、エクスチェンジの先頭フレームヘッダを格納する全てのエントリそれぞれ毎に、送信元のポートアドレスS_ID、送信先のポートアドレスD_ID、及びエクスチェンジの先頭ヘッダに含まれるエクスチェンジ番号OX_IDを取り出す。
【００２３】
そして、管理装置は、エントリ毎に、取り出した、送信元のポートアドレスS_ID、送信先のポートアドレスD_ID、及びエクスチェンジの先頭ヘッダに含まれるエクスチェンジ番号OX_IDをエラーフレームに埋め込み、エラーフレームのCRCを計算する。
【００２４】
そして、いずれかのエントリにおいて、計算したCRCの値が、エラーフレーム内のCRCの値と一致した場合は、管理装置は、その場合のS_ID、D_ID、及びOX_IDが補完されたフレームをFCスイッチに送信する。これにより、FCスイッチは、次段にフレームを送信する。
【００２５】
一方、いずれのエントリにおいても、計算したCRCの値が、エラーフレーム内のCRCの値と一致しなかった場合は、管理装置は、フレームの破損個所はS_ID、D_ID、OX_IDではないと判断する。そして、管理装置は、エラーフレームのヘッダと、管理テーブルに保持されている全てのS_ID、D_ID及びOX_IDとを比較して、両者が一致するエントリを検索する。いずれかのエントリにおいて両者が一致する場合、管理装置は、一致しているエントリにおいてIPアドレスが登録されたサーバに対して、再送指示を発行する。
【００２６】
このように、本発明では、ファイバチャネル通信において、エラーフレームのフレームヘッダの S_ID、D_ID、OX_ID のいずれかが壊れていたとしても、フレームヘッダを修正することができる。
【００２７】
（実施の形態）
以下、本発明の実施の形態における、ファイバチャネル制御システム、管理装置、ファイバチャネルの制御方法、及びプログラムについて、図１〜図１７を参照しながら説明する。
【００２８】
［システム構成］
最初に、本実施の形態における、ファイバチャネル制御システムの概略構成について説明する。図１は、本発明の実施の形態におけるファイバチャネル制御システム及び管理装置の概略構成を示すブロック図である。
【００２９】
図１に示す本実施の形態におけるファイバチャネル制御システム１０は、サーバ装置２とストレージ装置４とがスイッチ装置３を介して接続されたFC通信環境において、サーバ装置２とストレージ装置４との間のデータ通信を制御するためのシステムである。
【００３０】
なお、図１の例では、サーバ装置２及びスイッチ装置３は、それぞれ１つであるが、本実施の形態はこの態様に限定されることはない。本実施の形態では、１台の管理装置１は、任意の台数のサーバ装置２とスイッチ装置３とを管理できる。また、ストレージ装置４の数も特に限定されることはない。
【００３１】
また、図１に示すように、実施の形態におけるファイバチャネル制御システム１０は、スイッチ装置３と、管理装置１とを備えている。スイッチ装置３は、FCスイッチであり、サーバ装置２とストレージ装置４とはファイバチャネルによって接続されている。また、スイッチ装置３は、サーバ装置２とストレージ装置４との間で、フレームを含むエクスチェンジを仲介している。
【００３２】
更に、スイッチ装置３は、エラーフレーム通知部３２を備えている。エラーフレーム通知部３２は、フレームエラーを検出すると、フレームエラーが発生したフレームを管理装置１に送信する。
【００３３】
管理装置１は、LAN(Local Area Network)５を経由して、サーバ装置２とスイッチ装置３とに接続されている。また、管理装置１は、フレーム受信部１２と、フレーム修復部１３とを備えている。このうち、フレーム受信部１２は、スイッチ装置３から送信されてきた、フレームエラーが発生したフレームを受信する。
【００３４】
フレーム修復部１３は、サーバ装置２から取得した、エクスチェンジの送信元のポートアドレスS_ID、送信先のポートアドレスD_ID、及びエクスチェンジ番号OX_IDで、フレームエラーが発生したフレーム（以下「エラーフレーム」と表記する。）のヘッダにおける、送信元のポートアドレスS_ID、送信先のポートアドレスD_ID、及びエクスチェンジ番号OX_IDを置換する。また、フレーム修復部１３は、置換後のフレームのCRCを算出する。更に、フレーム修復部１３は、算出したCRCとエラーフレームのCRCとが一致している場合に、スイッチ装置３に、置換後のフレームを次段（送信先の装置）へと送信させる。
【００３５】
このように、本実施の形態では、管理装置１は、保持しているエクスチェンジの送信元のポートアドレスS_ID、送信先のポートアドレスD_ID、及びエクスチェンジ番号OX_IDを用いて、エラーフレームを補完することができる。本実施の形態によれば、ファイバチャネル通信において、エラーフレームのフレームヘッダの S_ID、D_ID、OX_ID のいずれかが壊れていたとしても、フレームヘッダを修正することができる。
【００３６】
続いて、図２〜図５を用いて、本実施の形態におけるファイバチャネル制御システム１０をより具体的に説明する。図２は、本発明の実施の形態におけるファイバチャネル制御システム及び管理装置の具体的構成を示すブロック図である。図３は、本発明の実施の形態における管理装置が備える管理テーブルの一例を示す図である。図４は、本発明の実施の形態におけるファイバチャネル制御システムにおいてフレームエラーが復旧された場合の動作を示す図である。図５は、本発明の実施の形態におけるファイバチャネル制御システムにおいてフレームエラーが復旧されなかった場合の動作を示す図である。
【００３７】
［管理装置の構成］
図２に示すように、管理装置１は、上述したフレーム受信部１２及びフレーム修復部１３に加えて、機器情報管理部１１と、開始機器特定部１４と、エラーフレームバッファ１５と、フレーム修復バッファ１６と、フレームヘッダバッファ１７と、管理テーブル１８とを備えている。
【００３８】
機器情報管理部１１は、サーバ装置２の機器情報通知部２１から、サーバ装置２のIPアドレスと、サーバ装置２のHBA(Host Bus Adapter)のポート番号と、そのHBAの通信先のストレージ装置４のポートのポート番号とを、組データとして受け取る。また、機器情報管理部１１は、図３に示すように、管理テーブル１８に新規エントリを作成し、受け取った組データを新規エントリとして格納する。なお、図３において、管理テーブル１８の「エクスチェンジの先頭フレームヘッダ」フィールドは、エントリ作成時においては、空となっている。
【００３９】
また、機器情報管理部１１は、スイッチ装置３のフレームヘッダ通知部３１から、LAN５を経由して、エクスチェンジの先頭フレームのヘッダを受け取り、受け取った先頭フレームのヘッダを、フレームヘッダバッファ１７に格納する。
【００４０】
その後、機器情報管理部１１は、フレームヘッダバッファ１７に格納されたフレームヘッダのS_ID及びD_IDと、管理テーブル１８の「サーバ装置のポート番号」フィールド及び「ストレージのポート番号」フィールドそれぞれの値とを比較する。そして、機器情報管理部１１は、比較結果に基づいて、これらが一致するエントリを検索する。その後、機器情報管理部１１は、見つかったエントリの「エクスチェンジの先頭フレームヘッダ」フィールドに、フレームヘッダバッファ１７に格納されているフレームヘッダを格納する。
【００４１】
フレーム受信部１２は、本実施の形態では、スイッチ装置３のエラーフレーム通知部３２から、エラーフレーム全体を受け取り、これを、エラーフレームバッファ１５とフレーム修復バッファ１６とに格納する。その後、フレーム受信部１２は、フレーム修復部１３に修復開始指示を発行する。
【００４２】
フレーム修復部１３は、図４に示すように、本実施の形態では、まず、管理テーブル１８のエントリのうち、「エクスチェンジの先頭フレームヘッダ」フィールドにヘッダが格納されているエントリの１つを参照する。
【００４３】
次に、フレーム修復部１３は、図４に示すように、参照しているエントリの「サーバ装置のポート番号」フィールドの値と、「ストレージ装置のポート番号」フィールドの値と、「エクスチェンジの先頭フレームヘッダ」フィールドに格納されたヘッダのOX_IDの値とを取得する。続いて、フレーム修復部１３は、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のS_IDに「サーバ装置のポート番号」を埋め込み、D_IDに「ストレージ装置のポート番号」を埋め込む。また、フレーム修復部１３は、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のOX_IDには、「エクスチェンジの先頭フレームヘッダ」のOX_IDを埋め込む。そして、フレーム修復部１３は、埋め込みが行なわれたフレームのCRCを計算する。
【００４４】
そして、CRCの計算結果が、フレーム修復バッファ１６に格納されたフレームのCRCと一致しなかった場合、フレーム修復部１３は、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のS_ID、D_IDに埋め込まれている値を入れ替える。つまり、フレーム修復部１３は、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のS_IDに「ストレージ装置のポート番号」を埋め込み、D_IDに「サーバ装置のポート番号」を埋め込む。続いて、フレーム修復部１３は、再度CRCを計算する。
【００４５】
再度のCRCの計算結果でも、フレーム修復バッファ１６に格納されたフレームのCRCと一致しなかった場合は、フレーム修復部１３は、管理テーブル１８の他のエントリを参照し、他のエントリの値を使用して、同様の処理を行う。
【００４６】
一方、いずれかのエントリにおいて、CRCの計算結果が、フレーム修復バッファ１６に格納されたフレームのCRCと一致した場合、フレーム修復部１３は、図４に示すように、フレーム修復バッファ１６に格納されているフレームを、スイッチ装置３の修復フレーム受信部３３にLAN５を経由して送信する。
【００４７】
また、管理テーブル１８の全てのエントリにおいて、CRCの計算結果が、フレーム修復バッファ１６に格納されたフレームのCRCと一致しなかった場合、フレーム修復部１３は、開始機器特定部１４に処理開始指示を発行する。
【００４８】
開始機器特定部１４は、フレーム修復部１３から処理開始指示を受け取ると、図５に示す、処理を開始する。開始機器特定部１４は、まず、エラーフレームバッファ１５に格納されたフレームのヘッダ部分のS_IDと、管理テーブル１８の「サーバ装置のポート番号」フィールドの値とを比較し、更に、ヘッダ部分のD_IDと、管理テーブル１８の「ストレージのポート番号」フィールドの値とを比較する。また、開始機器特定部１４は、ヘッダ部分のOX_IDと、管理テーブル１８の「エクスチェンジの先頭フレームヘッダ」フィールドに格納されたヘッダのOX_IDの値とも比較する。そして、開始機器特定部１４は、比較の結果から、全てが一致するエントリを検索する。
【００４９】
エントリが見つからなかった場合、比較するS_IDとD_IDとを入れ替えて、エントリを検索する。すなわち、開始機器特定部１４は、エラーフレームバッファ１５の格納されたフレームのヘッダ部分のS_IDと、管理テーブル１８の「ストレージ装置のポート番号」フィールドの値とを比較し、更に、ヘッダ部分のD_IDと、管理テーブル１８の「サーバ装置のポート番号」フィールドの値とを比較する。そして、開始機器特定部１４は、ヘッダ部分のOX_IDと、管理テーブル１８の「エクスチェンジの先頭フレームヘッダ」フィールドに格納されたヘッダのOX_IDの値とも比較する。そして、開始機器特定部１４は、比較の結果から、全てが一致するエントリを検索する。
【００５０】
管理テーブル１８からエントリが見つかった場合、開始機器特定部１４は、図５に示すように、エントリの「サーバ装置のIPアドレス」フィールドのIPアドレスを特定し、特定したIPアドレスのサーバ装置２の再送コマンド発行部２２に対して、LAN５を経由して、再送指示を発行する。
【００５１】
一方、管理テーブル１８からエントリが見つからなかった場合、開始機器特定部１４は、エラーフレームバッファ１５とフレーム修復バッファ１６との内容を破棄し、処理を終了する。
【００５２】
エラーフレームバッファ１５は、スイッチ装置３のエラーフレーム通知部３２から受け取ったフレームが格納されるバッファである。管理装置１は、エラーフレームバッファ１５を複数個備えていても良い。また、エラーフレームバッファ１５は、開始機器特定部１４の処理対象のバッファである。
【００５３】
フレーム修復バッファ１６は、スイッチ装置３のエラーフレーム通知部３２から受け取ったフレームと、フレームを送信したスイッチ装置３のIPアドレスとが、格納されているバッファである。管理装置１は、フレーム修復バッファ１６も複数個備えていても良い。また、フレーム修復バッファ１６は、フレーム修復部１３の処理対象のバッファである。
【００５４】
管理テーブル１８は、サーバ装置２の機器情報通知部２１から受け取った、サーバ装置２のIPアドレスと、サーバ装置のHBAのポート番号と、そのHBAの通信先のストレージ装置４のポート番号とが、組データとして格納されるテーブルである。また、管理テーブル１８には、スイッチ装置３のフレームヘッダ通知部３１から受け取ったエクスチェンジの先頭フレームヘッダも格納される。管理装置１は、管理テーブル１８については１つだけ備えている。
【００５５】
［サーバ装置の構成］
図２に示すように、サーバ装置２は、本実施の形態では、機器情報通知部２１と、再送コマンド発行部２２とを備えている。
【００５６】
機器情報通知部２１は、サーバ装置２を管理装置１に接続するためのネットワークインタフェースのIPアドレスと、サーバ装置２のHBAのポート番号と、そのHBAの通信先のストレージ装置４のポート番号との組データを、管理装置１の機器情報管理部１１にLAN５を経由して送信する。
【００５７】
サーバ装置２に複数個のHBAが実装されている場合は、実装されている複数個のHBAそれぞれ毎に、上述した情報が、管理装置１の機器情報管理部１１に送信される。
【００５８】
再送コマンド発行部２２は、管理装置１の開始機器特定部１４から再送指示を受けると、SCSIプロトコルレイヤーに対して、再送要求を発行する。
【００５９】
［スイッチ装置の構成］
図２に示すように、本実施の形態では、スイッチ装置３は、上述したエラーフレーム通知部３２に加えて、フレームヘッダ通知部３１と、修復フレーム受信部３３と、修復フレーム送信部３４と、修復フレームバッファ３５とを備えている。
【００６０】
フレームヘッダ通知部３１は、スイッチ装置３が、前段の装置（送信元の装置）から受信したフレームのヘッダが、エクスチェンジの先頭フレームかどうかを判別する。エクスチェンジの先頭フレームである場合は、フレームヘッダ通知部３１は、フレームヘッダを管理装置１の機器情報管理部１１にLAN５を経由して送信する。
【００６１】
また、フレームヘッダ通知部３１は、以下の条件（１）及び（２）を全て満たしている場合に、エクスチェンジの先頭フレームであると判断する。
条件（１）：フレームヘッダのF_CTLのFirstSequenceビットが１である。
条件（２）：フレームヘッダのRX_IDの値が0xFFFFである。
【００６２】
エラーフレーム通知部３２は、本実施の形態では、スイッチ装置３が、前段の装置から受信したフレームに基づいてCRCエラー等のエラーを検出した場合に、起動する。その際、エラーフレーム通知部３２は、受信したフレーム全体と、スイッチ装置３を管理装置１に接続するためのネットワークインタフェースのIPアドレスとを、管理装置１のフレーム受信部１２にLAN５を経由して送信する。また、エラーフレーム通知部３２は、管理装置１にエラーフレームを送信した後、エラーフレームを破棄する。
【００６３】
修復フレーム受信部３３は、管理装置１のフレーム修復部１３からLAN５を経由してフレームを受け取ると、受け取ったフレームを修復フレームバッファ３５に格納する。そして、修復フレーム受信部３３は、修復フレーム送信部３４に対して、格納したフレームの送信指示を発行する。
【００６４】
修復フレーム送信部３４は、修復フレームバッファ３５に格納されているフレームが、フレームヘッダのD_IDのポート番号の装置に到着するように、スイッチ装置３に接続された次段の装置に送信する。修復フレームバッファ３５は、管理装置１のフレーム修復部１３から受け取った修復済フレームが格納されるバッファである。
【００６５】
本実施の形態において、ストレージ装置４は、サーバ装置２にファイバチャネルによって接続可能なストレージ装置であれば良く、既存のストレージ装置であっても良い。
【００６６】
［システム動作］
次に、本発明の実施の形態におけるファイバチャネル制御システムの動作について図６〜図１６を用いて説明する。以下の説明においては、適宜図１〜図５を参酌する。また、本実施の形態では、ファイバチャネル制御システム１０を動作させることによって、ファイバチャネルの制御方法が実施される。よって、本実施の形態におけるファイバチャネルの制御方法の説明は、以下のファイバチャネル制御システム１０の動作説明に代える。
【００６７】
［サーバ装置とストレージ装置との通信開始前の動作］
最初に、サーバ装置２とストレージ装置４との通信が開始される前のサーバ装置２及び管理装置１の動作について、図６及び図７を用いて説明する。
【００６８】
まず、前提として、ファイバチャネルでは、サーバ装置２は、データ伝送を始める前に行うログイン手順により、HBAに動的に割り当てられるポート番号を取得し、接続先のストレージのポート情報を取得する。即ち、サーバ装置２がスイッチ装置３に接続され、ストレージ４と通信を行う場合、サーバ装置２が実行するログイン手順により、サーバ装置２のHBAに動的にポート番号が割り当てられ、サーバ装置２はストレージ装置４のHBAのポート番号を取得する。
【００６９】
そして、図６に示すように、サーバ装置２においては、ログイン手順の実行後、機器情報通知部２１は、サーバ装置２と管理装置１を接続するネットワークインタフェースのIPアドレスを取得する（ステップＡ１）。
【００７０】
次に、機器情報通知部２１は、サーバ装置２のHBAのポート番号と、そのHBAの通信先のストレージ装置４のポート番号との組データを取得する（ステップＡ２）。
【００７１】
次に、機器情報通知部２１は、ステップＡ１及びＡ２で取得した情報を、管理装置１の機器情報管理部１１に対して、LAN５を経由して送信する（ステップＡ３）。
【００７２】
続いて、機器情報通知部２１は、サーバ装置２に複数個のHBAが実装されている場合は、全てのHBAについて同様の情報を管理装置１の「機器情報管理部１１」に送信したかどうかを判定する（ステップＡ４）。
【００７３】
ステップＡ４の判定の結果、全てのHBAについて情報を送信していない場合は、機器情報通知部２１は、再度ステップＡ２を実行する。一方、ステップＡ４の判定の結果、全てのHBAについて情報を送信している場合は、サーバ装置２における処理は終了する。
【００７４】
図７に示すように、管理装置１においては、最初に、機器情報管理部１１は、サーバ装置２から送信されてきた、サーバ装置２のIPアドレスと、サーバ装置２のHBAのポート番号と、そのHBAの通信先のストレージ装置４のポート番号との組データを受信する（ステップＢ１）。
【００７５】
次に、機器情報管理部１１は、管理テーブル１８に新規エントリを作成する（ステップＢ２）。続いて、機器情報管理部１１は、受信した情報を新規エントリの各フィールドに格納する（ステップＢ３）。なお、「管理テーブル１８」の「エクスチェンジの先頭フレームヘッダ」フィールドは、テーブルのエントリ作成時には空である。
【００７６】
［エクスチェンジの先頭フレームの送信時の動作］
続いて、サーバ装置２とストレージ装置４との間で通信が行なわれている場合のスイッチ装置３と管理装置１との動作について、図８及び図９を用いて説明する。図８は、本発明の実施の形態におけるスイッチ装置が管理装置に対して行なう動作を示すフロー図である。図９は、本発明の実施の形態における管理装置がスイッチ装置の処理に応じて行なう動作を示すフロー図である。
【００７７】
図８に示すように、最初に、スイッチ装置３において、サーバ装置２及びストレージ装置４のいずれかが送信したフレームが受信されると、フレームヘッダ通知部３１は、受信したフレームがエクスチェンジの先頭フレームであるかどうかを判定する（ステップＣ１）。
【００７８】
具体的には、フレームヘッダ通知部３１は、フレームヘッダ（図１８参照）の内容が、上述した条件（１）及び（２）を全て満たしているかどうかを判定する。
【００７９】
ステップＣ１の判定の結果、受信したフレームが先頭フレームでない場合は、スイッチ装置３における処理は終了する。一方、ステップＣ１の判定の結果、受信したフレームが先頭フレームである場合は、フレームヘッダ通知部３１は、フレームヘッダを管理装置１の機器情報管理部１１にLAN５を経由して送信する（ステップＣ２）。
【００８０】
図９に示すように、最初に、管理装置１において機器情報管理部１１は、ステップＣ２で送信されたフレームヘッダを受信すると、受信したフレームヘッダをフレームヘッダバッファ１７に格納する（ステップＤ１）。
【００８１】
次に、機器情報管理部１１は、フレームヘッダバッファ１７に格納されたフレームヘッダのS_ID及びD_IDと、管理テーブル１８の「サーバ装置のポート番号」フィールド及び「ストレージのポート番号」フィールドそれぞれの値とを比較して、これらが一致するエントリを検索する（ステップＤ２）。
【００８２】
次に、機器情報管理部１１は、ステップＤ２で検索されたエントリの「エクスチェンジの先頭フレームヘッダ」フィールドに、フレームヘッダバッファ１７に格納されたフレームヘッダを格納する（ステップＤ３）
【００８３】
［フレームエラー検出時の動作］
続いて、フレームエラーが発生した場合のスイッチ装置３と管理装置１との動作について図１０〜図１５を用いて説明する。
【００８４】
図１０は、本発明の実施の形態におけるスイッチ装置のフレームエラー発生時の動作を示すフロー図である。図１０に示すように、最初に、スイッチ装置３が、前段の装置からフレームを受信する（ステップＥ１）。
【００８５】
次に、エラーフレーム通知部３２は、受信したフレームにエラーが発生しているかどうかを判定する（ステップＥ２）。
【００８６】
ステップＥ２の判定の結果、CRCエラー等のエラーが発生している場合は、エラーフレーム通知部３２は、受信したフレーム全体と、スイッチ装置３を管理装置１に接続するためのネットワークインタフェースのIPアドレスとを、管理装置１のフレーム受信部１２にLAN５経由して送信する（ステップＥ３）。また、ステップＥ３の実行後、エラーフレーム通知部３２は、エラーフレームを破棄する。
【００８７】
一方、ステップＥ２の判定の結果、エラーが発生していない場合は、スイッチ装置３は、フレームを次段の機器に送信する（ステップＥ４）。
【００８８】
図１１は、本発明の実施の形態における管理装置のフレーム受信部における動作を示すフロー図である。図１１に示すように、エラーフレームがLAN５を経由してスイッチ装置３から送信されてくると、管理装置１において、フレーム受信部１２は、エラーフレームを受信する（ステップＦ１）。
【００８９】
次に、フレーム受信部１２は、スイッチ装置３から受け取ったエラーフレームを、エラーフレームバッファ１５とフレーム修復バッファ１６とに格納する（ステップＦ２）。
【００９０】
次に、フレーム受信部１２は、フレーム修復部１３に対して、修復開始指示を発行する（ステップＦ３）。これにより、図１２に示す各ステップが実行される。
【００９１】
図１２は、本発明の実施の形態における管理装置のフレーム修復部における動作を示すフロー図である。図１２に示すように、最初に、フレーム修復部１３は、管理テーブル１８のエントリのうち、「エクスチェンジの先頭フレームヘッダ」フィールドにヘッダが格納されているエントリの１つを参照する（ステップＧ１）。
【００９２】
次に、フレーム修復部１３は、最終のエントリまで参照したかどうかを判定する（ステップＧ２）。ステップＧ２の判定の結果、最終のエントリまで参照している場合は、フレーム修復部１３は、後述するステップＧ１１を実行する。
【００９３】
一方、ステップＧ２の判定の結果、最終のエントリまで参照していない場合は、フレーム修復部１３は、管理テーブル１８の「エクスチェンジの先頭フレームヘッダ」フィールドにヘッダが格納されているかどうかを判定する（ステップＧ３）。
【００９４】
ステップＧ３の判定の結果、ヘッダが格納されていない場合は、フレーム修復部１３は、再度ステップＧ１を実行する。一方、ステップＧ３の判定の結果、ヘッダが格納されている場合は、フレーム修復部１３は、エントリの「サーバ装置のポート番号」フィールドの値と、「ストレージのポート番号」フィールドの値と、「エクスチェンジの先頭フレームヘッダ」フィールドに格納されたヘッダのOX_IDの値とを取得する。そして、フレーム修復部１３は、取得した値を、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のS_ID、D_ID、OX_IDに埋め込む（ステップＧ４）。
【００９５】
具体的には、ステップＧ４では、フレーム修復部１３は、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のS_IDに「サーバ装置のポート番号」を埋め込み、D_IDに「ストレージ装置のポート番号」を埋め込む。また、フレーム修復部１３は、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のOX_IDには、「エクスチェンジの先頭フレームヘッダ」のOX_IDを埋め込む。
【００９６】
次に、フレーム修復部１３は、ステップＧ４による埋め込みが行なわれたフレームのCRCを計算する（ステップＧ５）。
【００９７】
次に、フレーム修復部１３は、CRCの計算結果がフレーム修復バッファ１６に格納されたフレームのCRCと一致しているかどうかを判定する（ステップＧ６）。ステップＧ６の判定の結果、一致している場合は、フレーム修復部１３は、後述のステップＧ１０を実行する。
【００９８】
一方、ステップＧ６の判定の結果、一致していない場合は、フレーム修復部１３は、「フレーム修復バッファ１６」に格納されたフレームのヘッダ部分のS_ID、D_IDに埋め込んだ値を入れ替える（ステップＧ７）。
【００９９】
具体的には、フレーム修復部１３は、フレーム修復バッファ１６に格納されたフレームのヘッダ部分のS_IDに「ストレージ装置のポート番号」を埋め込み、D_IDに「サーバ装置のポート番号」を埋め込む。
【０１００】
次に、フレーム修復部１３は、ステップＧ７の実行後のフレームに対して、CRCを計算する（ステップＧ８）。
【０１０１】
次に、フレーム修復部１３は、ステップＧ８のCRCの計算結果がフレーム修復バッファ１６に格納されたフレームのCRCと一致しているかどうかを判定する（ステップＧ９）。ステップＧ９の判定の結果、一致していない場合は、フレーム修復部１３は、再度ステップＧ１を実行する。
【０１０２】
一方、ステップＧ８のCRCの計算結果がフレーム修復バッファ１６に格納されたフレームのCRCと一致している場合は、フレーム修復部１３は、ステップＧ１０を実行する。
【０１０３】
ステップＧ１０では、フレーム修復部１３は、フレーム修復バッファ１６のフレームを、スイッチ装置３の修復フレーム受信部３３に、LAN５を経由して送信する。
【０１０４】
上述のステップＧ２において、Ｙｅｓと判定される場合は、管理テーブル１８の全てのエントリにおいて、CRCの計算結果がフレーム修復バッファ１６に格納されたフレームのCRCと一致しなかった場合である。よって、ステップＧ１１では、フレーム修復部１３は、開始機器特定部１４に対して、処理開始指示を発行する。
【０１０５】
図１３は、本発明の実施の形態におけるスイッチ装置のエラーフレームが修復された場合の動作を示すフロー図である。図１３は、図１２に示したステップＧ１０が実行された場合にスイッチ装置３で行なわれる動作を示している。
【０１０６】
図１３に示すように、管理装置１のフレーム修復部１３によるフレーム修復が成功し、ステップＧ１０が実行されると、スイッチ装置３において、修復フレーム受信部３３は、送信されてきたフレームを受信し、これを修復フレームバッファ３５に格納する（ステップＨ１）。
【０１０７】
次に、修復フレーム受信部３３は、修復フレーム送信部３４に送信指示を発行する（ステップＨ２）。
【０１０８】
次に、スイッチ装置３の修復フレーム送信部３４は、修復フレームバッファ３５に格納されているフレームを、フレームヘッダのD_IDのポート番号の装置に到着するように、スイッチ装置３に接続された次段の装置に送信する（ステップＨ３）。
【０１０９】
図１４は、本発明の実施の形態における管理装置の開始機器特定部における動作を示すフロー図である。図１４は、図１２に示したステップＧ１１が実行された場合、即ち、フレーム修復部１３によるフレーム修復が失敗していた場合に管理装置１で行なわれる動作を示している。
【０１１０】
図１４に示すように、最初に、管理装置１において、開始機器特定部１４は、管理テーブル１８のエントリのうち、「エクスチェンジの先頭フレームヘッダ」フィールドにヘッダが格納されているエントリの１つを参照する（ステップＩ１）。
【０１１１】
次に、開始機器特定部１４は、最終のエントリまで参照したかどうかを判定する（ステップＩ２）。ステップＩ２の判定の結果、最終のエントリまで参照している場合は、開始機器特定部１４は、後述するステップＩ９を実行する。
【０１１２】
一方、ステップＩ２の判定の結果、最終のエントリまで参照していない場合は、開始機器特定部１４は、管理テーブル１８の「エクスチェンジの先頭フレームヘッダ」フィールドにヘッダが格納されているかどうかを判定する（ステップＩ３）。
【０１１３】
ステップＩ３の判定の結果、ヘッダが格納されていない場合は、開始機器特定部１４は、再度ステップＩ１を実行する。一方、ステップＩ３の判定の結果、ヘッダが格納されている場合は、開始機器特定部１４は、エラーフレームバッファ１５に格納されたフレームのヘッダ部分のS_ID、D_ID、OX_IDと、管理テーブル１８の「サーバ装置のポート番号」フィールドの値と、「ストレージのポート番号」フィールドの値と、「エクスチェンジの先頭フレームヘッダ」フィールドに格納されたヘッダのOX_IDの値とを比較する（ステップＩ４）。
【０１１４】
具体的には、開始機器特定部１４は、エラーフレームバッファ１５に格納されたフレームのヘッダ部分のS_IDと、管理テーブル１８の「サーバ装置のポート番号」フィールドの値とを比較し、更に、ヘッダ部分のD_IDと、管理テーブル１８の「ストレージのポート番号」フィールドの値とを比較する。また、開始機器特定部１４は、ヘッダ部分のOX_IDと、管理テーブル１８の「エクスチェンジの先頭フレームヘッダ」フィールドに格納されたヘッダのOX_IDの値とも比較する。
【０１１５】
次に、開始機器特定部１４は、ステップＩ４の比較の結果に基づき、全てが一致しているかどうかを判定する（ステップＩ５）。ステップＩ５の判定の結果、全てが一致している場合は、開始機器特定部１４は、後述するステップＩ８を実行する。
【０１１６】
一方、ステップＩ５の判定の結果、全てが一致していない場合は、開始機器特定部１４は、比較するS_IDとD_IDを入れ替えて、再度、比較を実行する（ステップＩ６）。
【０１１７】
具体的には、開始機器特定部１４は、エラーフレームバッファ１５の格納されたフレームのヘッダ部分のS_IDと、管理テーブル１８の「ストレージ装置のポート番号」フィールドの値とを比較し、更に、ヘッダ部分のD_IDと、管理テーブル１８の「サーバ装置のポート番号」フィールドの値とを比較する。そして、開始機器特定部１４は、ヘッダ部分のOX_IDと、管理テーブル１８の「エクスチェンジの先頭フレームヘッダ」フィールドに格納されたヘッダのOX_IDの値とも比較する。
【０１１８】
次に、開始機器特定部１４は、ステップＩ６の比較の結果に基づき、全てが一致しているかどうかを判定する（ステップＩ７）。ステップＩ７の判定の結果、全てが一致していない場合は、開始機器特定部１４は、再度ステップＩ１を実行する。一方、ステップＩ７の判定の結果、全てが一致している場合は、開始機器特定部１４は、ステップＩ８を実行する。
【０１１９】
ステップＩ８では、開始機器特定部１４は、ステップＩ５またはＩ７で一致していると判定されたエントリの「サーバ装置のIPアドレス」フィールドのIPアドレスのサーバ装置２を特定する。そして、開始機器特定部１４は、そのサーバ装置２の再送コマンド発行部２２に対して、再送指示を、LAN５を経由して発行する（ステップＩ８）。
【０１２０】
上述のステップＩ２において、Ｙｅｓと判定された場合は、管理テーブル１８の全てのエントリにおいて、対応するエントリが見つからなかった場合である。従って、ステップＩ９では、開始機器特定部１４は、エラーフレームバッファ１５とフレーム修復バッファ１６との内容を破棄し、処理を終了する。
【０１２１】
図１５は、本発明の実施の形態において管理装置からサーバ装置に再送が指示された場合のサーバ装置における動作を示すフロー図である。図１４に示したステップＩ８が実行されると、図１５に示す各ステップは、実行される。
【０１２２】
図１５に示すように、サーバ装置２において、再送コマンド発行部２２は、図１４に示したステップＩ８が実行されると、管理装置１の開始機器特定部１４からの再送指示を受信する（ステップＪ１）。
【０１２３】
次に、再送コマンド発行部２２は、SCSIプロトコルレイヤーに対して、再送要求を発行する（ステップＪ２）。
【０１２４】
（実施の形態における効果）
「発明が解決しようとする課題」の欄で述べたように、特許文献１に開示されたシステムでは、エラーフレームのヘッダの S_ID、D_ID、OX_ID のいずれかが壊れていた場合、エラーフレームを復旧することは不可能である。これに対して、本実施の形態では、S_ID、D_ID、OX_ID のいずれかが壊れていた場合でもエラーフレームを復旧することができるので、送信元のサーバ装置に再送処理を行わせることなく、フレーム送信を継続することができる。また、エラーフレームを復旧できた場合は、スイッチ装置と管理装置との間で処理が完結するため、特許文献１に開示されたシステムに比べて、該当フレームのエラーリカバリ時間を短縮できる。
【０１２５】
［プログラム］
本実施の形態におけるプログラムは、コンピュータに、図９に示すステップＤ１〜Ｄ３、図１１に示すステップＦ１〜Ｆ３、図１２に示すステップＧ１〜Ｇ１１、及び図１４に示すステップＩ１〜Ｉ９を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における管理装置とファイバチャネルの制御方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、機器情報管理部１１、フレーム受信部１２、フレーム修復部１３、及び開始機器特定部１４として機能し、処理を行なう。
【０１２６】
また、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、機器情報管理部１１、フレーム受信部１２、フレーム修復部１３、及び開始機器特定部１４のいずれかとして機能しても良い。
【０１２７】
ここで、本実施の形態におけるプログラムを実行することによって、管理装置１を実現するコンピュータについて図１６を用いて説明する。図１６は、本発明の実施の形態における管理装置を実現するコンピュータの一例を示すブロック図である。
【０１２８】
図１６に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【０１２９】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【０１３０】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【０１３１】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【０１３２】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記録媒体が挙げられる。
【０１３３】
なお、本実施の形態における管理装置１は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、管理装置１は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【０１３４】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１２）によって表現することができるが、以下の記載に限定されるものではない。
【０１３５】
（付記１）
ファイバチャネルによって接続されているサーバ装置とストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、管理装置とを備え、
前記スイッチ装置は、
フレームエラーを検出すると、前記フレームエラーが発生したフレームを前記管理装置に送信する、エラーフレーム通知部を備え、
前記管理装置は、
前記スイッチ装置から送信されてきた、前記フレームエラーが発生したフレームを受信する、フレーム受信部と、
前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、フレーム修復部と、
を備えている、ことを特徴とするファイバチャネル制御システム。
【０１３６】
（付記２）
前記管理装置が、算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致していない場合に、前記フレームエラーが発生したフレームの送信元のサーバ装置を特定し、特定したサーバ装置に、フレームの再送を指示する、開始機器特定部を、更に備えている、
付記１に記載のファイバチャネル制御システム。
【０１３７】
（付記３）
前記管理装置が、
前記サーバ装置から、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を取得し、これらを１つのエントリとして、管理テーブルに登録する、機器情報管理部を更に備え、
前記フレーム修復部が、前記エントリ毎に、置換を行なって、置換後のフレームのＣＲＣを算出する、
付記１または２に記載のファイバチャネル制御システム。
【０１３８】
（付記４）
サーバ装置と、ファイバチャネルによって前記サーバ装置に接続されているストレージ装置と、前記サーバ装置と前記ストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、を管理するための装置であって、
前記スイッチ装置によって、フレームエラーが検出され、前記フレームエラーが発生したフレームが送信されてきた際に、前記フレームエラーが発生したフレームを受信する、フレーム受信部と、
前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、フレーム修復部と、
を備えている、ことを特徴とする管理装置。
【０１３９】
（付記５）
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致していない場合に、前記フレームエラーが発生したフレームの送信元のサーバ装置を特定し、特定したサーバ装置に、フレームの再送を指示する、開始機器特定部を、更に備えている、
付記４に記載の管理装置。
【０１４０】
（付記６）
前記サーバ装置から、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を取得し、これらを１つのエントリとして、管理テーブルに登録する、機器情報管理部を更に備え、
前記フレーム修復部が、前記エントリ毎に、置換を行なって、置換後のフレームのＣＲＣを算出する、
付記４または５に記載の管理装置。
【０１４１】
（付記７）
ファイバチャネルによって接続されているサーバ装置とストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、管理装置とを用い、
（ａ）前記スイッチ装置によって、
フレームエラーを検出すると、前記フレームエラーが発生したフレームを前記管理装置に送信する、ステップと、
（ｂ）前記管理装置によって、前記スイッチ装置から送信されてきた、前記フレームエラーが発生したフレームを受信する、ステップと、
（ｃ）前記管理装置によって、前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、ステップと、
を有する、ことを特徴とするファイバチャネルの制御方法。
【０１４２】
（付記８）
（ｄ）前記管理装置によって、算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致していない場合に、前記フレームエラーが発生したフレームの送信元のサーバ装置を特定し、特定したサーバ装置に、フレームの再送を指示する、ステップを、更に有する、
付記７に記載のファイバチャネルの制御方法。
【０１４３】
（付記９）
（ｅ）前記管理装置によって、前記サーバ装置から、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を取得し、これらを１つのエントリとして、管理テーブルに登録する、ステップを更に有し、
前記（ｃ）のステップにおいて、前記エントリ毎に、置換を行なって、置換後のフレームのＣＲＣを算出する、
付記７または８に記載のファイバチャネルの制御方法。
【０１４４】
（付記１０）
コンピュータによって、サーバ装置と、ファイバチャネルによって前記サーバ装置に接続されているストレージ装置と、前記サーバ装置と前記ストレージ装置との間で、フレームを含むエクスチェンジを仲介するスイッチ装置と、を管理するためのプログラムであって、
前記コンピュータに、
（ａ）前記スイッチ装置によって、フレームエラーが検出され、前記フレームエラーが発生したフレームが送信されてきた際に、前記フレームエラーが発生したフレームを受信する、ステップと、
（ｂ）前記サーバ装置から取得した、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号で、前記フレームエラーが発生したフレームのヘッダにおける、送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を置換し、置換後のフレームのＣＲＣを算出し、
算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致している場合に、前記スイッチ装置に置換後のフレームを送信させる、ステップと、
を実行させるプログラム。
【０１４５】
（付記１１）
前記コンピュータに、
（ｃ）算出したＣＲＣと前記フレームエラーが発生したフレームのＣＲＣとが一致していない場合に、前記フレームエラーが発生したフレームの送信元のサーバ装置を特定し、特定したサーバ装置に、フレームの再送を指示する、ステップを更に実行させる、
付記１０に記載のプログラム。
【０１４６】
（付記１２）
前記コンピュータに、
（ｄ）前記サーバ装置から、エクスチェンジの送信元のポートアドレス、送信先のポートアドレス、及びエクスチェンジ番号を取得し、これらを１つのエントリとして、管理テーブルに登録する、ステップを更に実行させ、
前記（ｂ）のステップにおいて、前記エントリ毎に、置換を行なって、置換後のフレームのＣＲＣを算出する、
付記１０または１１に記載のプログラム。
【産業上の利用可能性】
【０１４７】
以上のように、本発明によれば、ファイバチャネル通信において、エラーフレームのフレームヘッダが壊れていた場合に、壊れているフレームヘッダの修正を行なうことができる。本発明は、ファイバチャネル通信が用いられる種々のシステムに有用である。
【符号の説明】
【０１４８】
１  管理装置
２  サーバ装置
３  スイッチ装置
４  ストレージ装置
５  ＬＡＮ
１０  ファイバチャネル制御システム
１１  機器情報管理部
１２  フレーム受信部
１３  フレーム修復部
１４  開始機器特定部
１５  エラーフレームバッファ
１６  フレーム修復バッファ
１７  フレームヘッダバッファ
１８  管理テーブル
２１  機器情報通知部
２２  再送コマンド発行部
３１  フレームヘッダ通知部
３２  エラーフレーム通知部
３３  修復フレーム受信部
３４  修復フレーム送信部
３５  修復フレームバッファ
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
2018159988.tif 000003
【図２】
2018159988.tif 000004
【図３】
2018159988.tif 000005
【図４】
2018159988.tif 000006
【図５】
2018159988.tif 000007
【図６】
2018159988.tif 000008
【図７】
2018159988.tif 000009
【図８】
2018159988.tif 000010
【図９】
2018159988.tif 000011
【図１０】
2018159988.tif 000012
【図１１】
2018159988.tif 000013
【図１２】
2018159988.tif 000014
【図１３】
2018159988.tif 000015
【図１４】
2018159988.tif 000016
【図１５】
2018159988.tif 000017
【図１６】
2018159988.tif 000018
【図１７】
2018159988.tif 000019
【図１８】
2018159988.tif 000020
【図１９】
2018159988.tif 000021
【図２０】
2018159988.tif 000022
【図２１】
2018159988.tif 000023