(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を参照しながら詳細に説明する。
[第1の実施形態]
まず、第1の実施形態の通信システムについて
図1を用いて説明する。
図1は、第1の実施形態の通信システムの構成の一例を示す図である。
【0011】
通信システム1は、通信装置2と、通信装置2と通信可能に接続する通信装置3を含む。通信システム1は、通信装置2を送信元とし、通信装置3を通信装置2の送信先とする。たとえば、通信システム1は、ストレージネットワークを構成するFC−SAN(Fibre Channel − Storage Area Network)であり、通信装置2,3は、通信を中継するFCスイッチ(中継装置)である。
【0012】
通信装置2は、所定単位(たとえば、フレーム単位)のデータを送信可能数2cの範囲で通信装置3に送信する。
通信装置2は、記憶部2aと制御部2bを含む。記憶部2aは、送信可能数2cを記憶する。送信可能数2cは、通信装置2が通信装置3に送信できる所定単位のデータ数を示す。たとえば、送信可能数2cは、通信装置3が用意する受信バッファのサイズに対応する。
【0013】
制御部2bは、データの送信により送信可能数2cからデータの送信数を減算して送信可能数2cを更新する。また、制御部2bは、データの送達確認により送信可能数2cにデータの送達確認数を加算して送信可能数2cを更新する。これにより、通信装置2は、送信可能数2cの範囲で所定単位のデータを通信装置3に送信できる。
【0014】
たとえば、送信可能数2cが「3」であるとき、制御部2bは、通信装置2から通信装置3宛てに3単位のデータ4a,4b,4cを送信できる。制御部2bは、1単位のデータ4aを送信することで送信可能数2cから「1」を減算して送信可能数2cを「3」から「2」に更新する。同様にして、制御部2bは、データ4b,4cの送信により送信可能数2cを「2」から「1」、さらに「1」から「0」に更新する。制御部2bは、データ4a,4b,4cのいずれかの送達確認5aにより送信可能数2cに「1」を加算して送信可能数2cを「0」から「1」に更新する。
【0015】
なお、図示しないが、制御部2bは、データ4a,4b,4cに対応する送達確認を順次受信すれば、送信可能数2cに「1」を加算して送信可能数2cを「2」に、さらに「3」へと更新する。
【0016】
制御部2bは、送信可能数2cを監視する。制御部2bは、送信可能数2cの監視により、所定の減少状態を検出できる。たとえば、制御部2bは、送信可能数2cが「0」と「1」とを推移して「2以上」に復帰しない状態を所定の減少状態として検出できる。このような状態は、通信装置2から通信装置3宛ての送信量を制限することとなり、通信性能が低下した状態である。
【0017】
制御部2bは、送信可能数2cの所定の減少状態を検出した場合に、ダミーデータを送信する。ダミーデータは、制御部2bが通信装置3宛てに送信しても、送信可能数2cからデータの送信数を減算する対象としないデータである。なお、ダミーデータは、通信装置3によって破棄されてもよいデータである。
【0018】
たとえば、送信可能数2cが「1」であるとき、制御部2bは、通信装置2から通信装置3宛てに2単位のダミーデータ6a,6bを送信できる。制御部2bは、2単位のダミーデータ6a,6bを送信するが、送信可能数2cを「1」のままにして更新しない。
【0019】
制御部2bは、ダミーデータの送達確認により送信可能数2cにダミーデータの送達確認数を加算して更新する。たとえば、制御部2bは、ダミーデータ6a,6bのいずれかの送達確認7aにより送信可能数2cに「1」を加算して送信可能数2cを「2」に更新し、さらなる送達確認7bにより送信可能数2cを「3」に更新する。
【0020】
このようにして、通信装置2は、送信可能数2cの所定の減少状態に起因して通信性能が低下した状態から復帰できる。
[第2の実施形態]
次に、第2の実施形態のストレージシステムについて
図2を用いて説明する。
図2は、第2の実施形態のストレージシステムの構成の一例を示す図である。
【0021】
ストレージシステム10は、FC−SANである。ストレージシステム10は、サーバ11,12と、FCスイッチ20,21と、FCスイッチ20とFCスイッチ21とを接続するFCケーブル13と、ストレージアレイ14,15とを含む。ストレージアレイ14,15は、大容量の記憶装置である。サーバ11,12は、FCスイッチ20,21を介してストレージアレイ14,15にアクセスできる。
【0022】
次に、第2の実施形態のFCスイッチ20,21について
図3を用いて説明する。
図3は、第2の実施形態のFCスイッチの構成の一例を示す図である。FCスイッチ20,21は、通信装置の一形態である。なお、FCスイッチ20を例示して説明するが、FCスイッチ21もFCスイッチ20と同様の構成を有する。
【0023】
FCスイッチ20は、全体制御部20aと、通信制御部22と、フラッシュメモリ23と、管理用LAN(Local Area Network)ポート24と、複数のFCポート200a,200b,200c,200dを含む。全体制御部20aは、FCスイッチ20を統括的に制御する。全体制御部20aは、ユーザからの命令(コマンド)を受け付けて、通信制御部22が実現する各種機能を動作させる。全体制御部20aは、管理用LANポート24を介して操作用端末装置と接続し、操作用端末装置からユーザが入力する命令を受け付けることができる。たとえば、ユーザは、操作用端末装置からFCスイッチ20にアクセスし、telnet、http(Hypertext Transfer Protocol)、SSH(Secure Shell)などのプロトコルを用いてゾーニング(Zoning)設定を含む各種設定をおこなうことができる。
【0024】
フラッシュメモリ23は、不揮発性のメモリであり、ゾーニングデータベース23aやネームサーバ23bなどの情報を保持する。全体制御部20aは、ゾーニングデータベース23aやネームサーバ23bなどの情報を生成または更新できる。
【0025】
ゾーニングデータベース23aは、ユーザが設定したアクセス制御の定義情報を保持するデータベースである。ゾーニングデータベース23aは、アクセスを許可するデバイス間の組み合わせを保持する。ゾーニングデータベース23aは、たとえば、アクセスを許可するデバイス間の組み合わせとして、「FCポート200a、FCポート200c」、「FCポート200b、FCポート200d」を保持する。
【0026】
ネームサーバ23bは、FCスイッチ20に接続されたデバイスの識別情報、製造ベンダー名、製品型名などの情報を保持するデータベースである。ネームサーバ23bは、FCスイッチ20内での転送に用いるアドレス情報を付与してデバイスを登録する。
【0027】
通信制御部22は、通信制御およびゾーニング制御をおこなう。通信制御部22は、ゾーニング制御として、ユーザが設定したゾーニングデータベース23aのゾーニング情報にもとづいてアクセス制限をおこなう。通信制御部22は、受信バッファにデータを一時的に格納した後、ゾーニング制御によりアクセス制御情報と通信データ内の宛先情報とを照合して、適切な宛先ポートの送信バッファに転送する。これにより、通信制御部22は、通信元から通信先へのデータ転送をおこなうことができるとともに、不正なアクセスを制限することができる。
【0028】
通信制御部22は、通信データ内の宛先情報から適切な送信先を選択し、選択した送信先宛てにデータを転送する。通信制御部22は、ネームサーバ23bが保持するアドレス情報を用いてFCスイッチ20内でのデータ通信を制御できる。
【0029】
通信制御部22は、送受信のための一時的なデータを格納する格納領域として通信バッファを有する。通信バッファは、FCスイッチ20が送受信するデータを格納するためのメモリ領域である。通信制御部22は、FCポート200a,200b,200c,200dごとの通信バッファを内部メモリに用意する。通信バッファは、受信データを格納する受信バッファと、送信データを格納する送信バッファとを含む。なお、通信制御部22は、通信バッファに加えて、受信バッファの空き領域の大きさを示すクレジット(第1の実施形態の送信可能数2cに相当)を受信バッファごとに内部メモリに用意する。
【0030】
次に、通信制御部22のハードウェア構成について
図4を用いて説明する。
図4は、第2の実施形態の通信制御部のハードウェア構成の一例を示す図である。
通信制御部22は、プロセッサ100と、バス101と、RAM(Random Access Memory)102と、フラッシュメモリ103と、外部インタフェース104を含む。
【0031】
プロセッサ100は、通信制御部22の制御部として機能する。プロセッサ100には、バス101を介して、RAM102とフラッシュメモリ103と外部インタフェース104が接続されている。プロセッサ100は、2以上のプロセッサからなるマルチコアプロセッサであってもよい。
【0032】
プロセッサ100は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。なお、通信制御部22は、プロセッサ100に限らず、通信制御部22が含む構成要素の一部または全部をASICによって実現するものであってもよい。
【0033】
RAM102とフラッシュメモリ103は、通信制御部22の記憶部として機能する。フラッシュメモリ103には、OS(Operating System)のプログラム、アプリケーションプログラム、および各種データが格納される。
【0034】
RAM102には、プロセッサ100に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時格納される。また、RAM102には、プロセッサ100による処理に必要な各種データが格納される。また、RAM102は、プロセッサ100のキャッシュメモリや、FCポート200a,200b,200c,200dの通信バッファとして機能する。また、RAM102は、FCポート200a,200b,200c,200dのクレジットを記憶する。
【0035】
なお、外部インタフェース104は、全体制御部20aとFCポート200a,200b,200c,200dを接続する他、通信制御部22に周辺機器を接続するための通信インタフェースである。たとえば、外部インタフェース104には、図示しないメモリ装置やメモリリーダライタを接続することができる。メモリ装置は、外部インタフェース104との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しをおこなう装置である。メモリカードは、たとえば、カード型の記録媒体である。
【0036】
また、外部インタフェース104には、図示しないモニタを接続してもよい。その場合、外部インタフェース104は、プロセッサ100からの命令にしたがって、画像をモニタの画面に表示させるグラフィック処理機能を有する。
【0037】
また、外部インタフェース104は、図示しないキーボードやマウスを接続してもよい。その場合、外部インタフェース104は、キーボードやマウスから送られてくる信号をプロセッサ100に送信する。なお、マウスは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0038】
また、外部インタフェース104は、図示しない光学ドライブ装置を接続してもよい。光学ドライブ装置は、レーザ光などを利用して、光ディスクに記録されたデータの読み取りをおこなう。光ディスクは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0039】
以上のようなハードウェア構成によって、第2の実施形態の通信制御部22の処理機能を実現することができる。
なお、全体制御部20aや第1の実施形態に示した通信装置2も、
図4に示した通信制御部22と同様のハードウェアにより実現することができる。
【0040】
通信制御部22は、たとえば、コンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施形態の処理機能を実現する。通信制御部22に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、通信制御部22に実行させるプログラムをフラッシュメモリ103に格納しておくことができる。プロセッサ100は、フラッシュメモリ103内のプログラムの少なくとも一部をRAM102にロードし、プログラムを実行する。また、通信制御部22に実行させるプログラムを、光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ100からの制御により、フラッシュメモリ103にインストールされた後、実行可能となる。またプロセッサ100が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0041】
次に、FCスイッチ20,21の通信バッファについて
図5を用いて説明する。
図5は、第2の実施形態のFCスイッチの通信バッファの一例を示す図である。
FCスイッチ20が有するFCポート200aは、FCスイッチ21が有するFCポート210aとFCケーブル13で接続する。FCケーブル13は、送信ライン(TX)と受信ライン(RX)とを含み、光信号が相互干渉しないように設計されている。FCポート200aのTX200dは、FCポート210aのRX210eと接続し、FCポート200aのRX200eは、FCポート210aのTX210dと接続する。
【0042】
FCポート200aは、FCポート200a用の通信バッファとして送信バッファ201aと受信バッファ202aを、FCスイッチ20のRAM102に有する。FCポート210aは、FCポート210a用の通信バッファとして送信バッファ211aと受信バッファ212aを、FCスイッチ21のRAM102に有する。
【0043】
送信バッファ201a,211aは、FIFO(First In First Out)バッファであり、送信対象のフレームを一時的に格納する。一時格納されたフレームは、通信相手(送信先)への送信後に送信バッファ201a,211aからクリアされる。
【0044】
受信バッファ202a,212aは、FIFOバッファであり、通信相手(送信元)から受信したフレームを一時的に格納する。一時格納されたフレームは、FCスイッチ20,21内で読み出された後に受信バッファ202a,212aからクリアされる。
【0045】
次に、クレジット監視処理について
図6を用いて説明する。
図6は、第2の実施形態のクレジット監視処理のフローチャートを示す図である。
クレジット監視処理は、クレジットの設定条件や更新条件を監視して、クレジットの設定や更新をおこなう処理である。クレジット監視処理は、FCスイッチ20,21間の通信開始時に、データ送信側の通信制御部22が実行する処理である。
【0046】
[ステップS11]通信制御部22は、通信相手(たとえば、FCスイッチ21)からクレジット値を受信する。通信制御部22は、受信したクレジット値を初期値として記憶する。なお、クレジットの初期値は、クレジットの最大値である。
【0047】
[ステップS12]通信制御部22は、通信相手に向けてフレーム(1単位のデータ)を送信したか否かを判定する。通信制御部22は、通信相手に向けてフレームを送信した場合にステップS13にすすみ、通信相手に向けてフレームを送信していない場合にステップS15にすすむ。
【0048】
[ステップS13]通信制御部22は、送信したフレームがダミーフレームであるか否かを判定する。通信制御部22は、送信したフレームがダミーフレームである場合にステップS17にすすみ、送信したフレームがダミーフレームでない場合、すなわち通常フレームである場合にステップS14にすすむ。
【0049】
[ステップS14]通信制御部22は、通信相手に向けて通常フレームを送信したことから、クレジット値から「1」減算する。すなわち、通信制御部22は、送信したフレームが通常フレームである場合にクレジット値から「1」を減算し、送信したフレームがダミーフレームである場合にステップS14をパスしてクレジット値を更新しない。
【0050】
なお、通信制御部22は、クレジット値が「1以上」の場合に通信相手に向けて通常フレームを送信し、クレジット値が「0以上」の場合に通信相手に向けてダミーフレームを送信するので、クレジット値は常に「0以上」である。
【0051】
[ステップS15]通信制御部22は、通信相手から応答フレームの受信があったか否かを判定する。応答フレームの受信は、通常フレームの送信に対する応答フレームの受信と、ダミーフレームの送信に対する応答フレームの受信とがある。通信制御部22は、通信相手から応答フレームの受信があった場合にステップS16にすすみ、通信相手から応答フレームの受信がない場合にステップS17にすすむ。
【0052】
[ステップS16]通信制御部22は、通信相手から応答フレームの受信があったことから、クレジット値に「1」加算する。すなわち、通信制御部22は、通信相手から応答フレームの受信があった場合に、通常フレームの送信に対する応答フレームの受信であるか、ダミーフレームの送信に対する応答フレームの受信であるかにかかわらず、クレジット値に「1」を加算する。
【0053】
これにより、通常フレームの送信に対する応答フレームの受信によるクレジット値への「1」加算は、通常フレームの送信によるクレジット値からの「1」減算と相殺する。すなわち、正常に通信がおこなえた場合、クレジット値は、通信終了時に初期値に復帰する。
【0054】
一方、ダミーフレームの送信に対する応答フレームの受信によるクレジット値への「1」加算は、ダミーフレームによるクレジット値からの「1」減算がないことから、クレジット値を増大させる作用を有する。したがって、何らかの通信異常によりクレジット値が小さな値となってしまった場合に、通信制御部22は、ダミーフレームの送信によってクレジット値の復旧を図ることができる。
【0055】
[ステップS17]通信制御部22は、通信終了であるか否かを判定する。通信制御部22は、通信終了である場合にクレジット監視処理を終了し、通信終了でない場合にステップS18にすすむ。
【0056】
[ステップS18]通信制御部22は、所定のリカバリ条件の成立を判定する。リカバリは、異常な通信状態からの復帰処理である。リカバリ条件は、リカバリ実行契機の判定条件である。たとえば、リカバリ条件は、所定の監視時間中、クレジット値が「0」の状態を検出することである。このリカバリ条件は、通信相手から一切の応答フレームを受信できないときに成立し得る。通信制御部22は、所定のリカバリ条件が成立した場合にステップS19にすすみ、所定のリカバリ条件が成立しない場合にステップS12にすすむ。
【0057】
[ステップS19]通信制御部22は、リカバリをおこなう。たとえば、通信制御部22は、通信バッファ内のフレームを破棄して処理中の通信をクリアすることで、クレジット値を初期値に復帰させる。
【0058】
このように、通信制御部22は、クレジット値を管理することができる。これにより、通信制御部22は、受信側で受信可能なフレーム数を認識して、送信するフレーム数を制御することができ、ストレージシステム10におけるフレームロストしないデータ転送を実現する。
【0059】
次に、正常な通信時のクレジット値の更新について
図7を用いて説明する。
図7は、第2の実施形態の正常な通信におけるクレジット値の更新シーケンスの一例を示す図である。
【0060】
[シーケンスsq11]通信制御部22は、FCスイッチ21のFCポート210aからクレジット値の通知を受けてFCスイッチ20のFCポート200aのクレジット値を初期化する。これにより、FCポート200aのクレジット値とFCポート210aのクレジット値とは、通信開始時において「4」で一致する。なお、初期値となるクレジット値は、FCポート200aとFCポート210aとの間のネゴシエーションによって決定される。
【0061】
[シーケンスsq12]通信制御部22は、FCポート200aからFCポート210aに通常フレームを送信し、クレジット値を「3」に更新する。このとき、FCポート210aのクレジット値は、受信した通常フレームが受信バッファ212aに格納されることから「3」に更新される。
【0062】
[シーケンスsq13]通信制御部22は、FCポート200aからFCポート210aに通常フレームを送信し、クレジット値を「2」に更新する。このとき、FCポート210aのクレジット値は、「2」に更新される。
【0063】
[シーケンスsq14]通信制御部22は、シーケンスsq12で送信した通常フレームに対応する応答フレームをFCポート210aから受信することにより、クレジット値を「3」に更新する。FCポート210aのクレジット値は、応答フレームの送信とともに受信バッファ212aのフレーム格納領域が1つクリアされて「3」に更新される。
【0064】
[シーケンスsq15]通信制御部22は、シーケンスsq13で送信した通常フレームに対応する応答フレームをFCポート210aから受信することにより、クレジット値を「4」に更新する。FCポート210aのクレジット値は、応答フレームの送信とともに受信バッファ212aのフレーム格納領域が1つクリアされて「4」に更新される。
【0065】
[シーケンスsq16]通信制御部22は、FCポート200aからFCポート210aに通常フレームを送信し、クレジット値を「3」に更新する。このとき、FCポート210aのクレジット値は、「3」に更新される。
【0066】
このように、正常な通信時のクレジット値は、送信元と送信先とで同期して更新される。したがって、送信元となるFCスイッチ20は、受信できない量のフレームを、送信先となるFCスイッチ21に送信することを防止できる。
【0067】
次に、通常フレームをフレームロストした通信時のクレジット値の更新について
図8を用いて説明する。
図8は、第2の実施形態の通常フレームをフレームロストした通信におけるクレジット値の更新シーケンスの一例を示す図である。
【0068】
[シーケンスsq21]通信制御部22は、FCポート200aからFCポート210aに通常フレームを送信し、クレジット値を「3」から「2」に更新する。FCポート200aから送信された通常フレームが何らかの理由でフレームロストする。FCポート210aのクレジット値は、FCポート210aが通常フレームを受信することがないのでクレジット値を「3」のままとする。
【0069】
[シーケンスsq22]通信制御部22は、送信した通常フレームに対応する応答フレームを監視時間t1の経過前に受信しない場合に、FCポート200aからFCポート210aに通常フレームをリトライ送信する。通信制御部22は、リトライ送信時にクレジット値を更新しない。FCポート210aのクレジット値は、リトライ送信された通常フレームの受信によって「3」から「2」に更新される。
【0070】
[シーケンスsq23]通信制御部22は、シーケンスsq22で送信した通常フレームに対応する応答フレームをFCポート210aから受信することにより、クレジット値を「2」から「3」に更新する。FCポート210aのクレジット値は、応答フレームの送信とともに受信バッファ212aのフレーム格納領域が1つクリアされて「2」から「3」に更新される。
【0071】
このように、通常フレームをフレームロストすることがあっても、送信元のクレジット値と送信先のクレジット値とは、送信した通常フレームに対応する応答時に一致する。
次に、通常フレームに対する応答フレームをフレームロストした通信時のクレジット値の更新について
図9を用いて説明する。
図9は、第2の実施形態の通常フレームに対する応答フレームをフレームロストした通信におけるクレジット値の更新シーケンスの一例を示す図である。
【0072】
[シーケンスsq31]通信制御部22は、FCポート200aからFCポート210aに通常フレームを送信し、クレジット値を「1」から「0」に更新する。このとき、FCポート210aのクレジット値は、「1」から「0」に更新される。
【0073】
[シーケンスsq32]FCポート210aから送信された応答フレームが何らかの理由でフレームロストする。FCポート210aのクレジット値は、応答フレームの送信とともに受信バッファ212aのフレーム格納領域が1つクリアされて「0」から「1」に更新される。一方、通信制御部22は、FCポート200aが応答フレームを受信することがないのでクレジット値を「0」のままとする。
【0074】
監視時間t2中にFCポート200aが応答フレームを受信することがない場合、通信制御部22は、リカバリをおこなう。なお、通信制御部22は、リカバリに至る前に後述するクレジット復旧処理によって通信状態の回復を図ることができる。
【0075】
次に、クレジット復旧処理について
図10を用いて説明する。
図10は、第2の実施形態のクレジット復旧処理のフローチャートを示す図である。
クレジット復旧処理は、クレジット値が減少したままの状態を検出して、減少したクレジット値を復旧する処理である。クレジット復旧処理は、FCスイッチ20,21間の通信開始時に、データ送信側の通信制御部22によって実行される。
【0076】
[ステップS21]通信制御部22は、復旧監視タイマをスタートする。復旧監視タイマは、クレジット値が減少したままの状態の検出期間の設定に用いるタイマである。
[ステップS22]通信制御部22は、クレジット値を監視する。
【0077】
[ステップS23]通信制御部22は、復旧監視タイマがタイムアップ(たとえば、復旧監視タイマのスタートから500ms経過)したか否かを判定する。通信制御部22は、復旧監視タイマがタイムアップした場合にステップS24にすすみ、復旧監視タイマがタイムアップしていない場合にステップS22にすすむ。
【0078】
[ステップS24]通信制御部22は、クレジットの初期値と監視期間中のクレジットの最大値とを比較して差分が「1」より大きいか否かを判定する。差分が「1」より大きい状態は、復旧監視タイマがタイムアップするまでの間、クレジット値が減少したままの状態であり、クレジット値が「初期値−1」まで復帰しない状態であることを示す。
【0079】
通信制御部22は、差分が「1」より大きい場合にステップS25にすすみ、差分が「1」より大きくない場合にステップS21にすすむ。
[ステップS25]通信制御部22は、ダミーフレームを送信してステップS21にすすむ。ダミーフレームは、受信側によって破棄されてもよいデータであり、たとえば、SCSI(Small Computer System Interface)やFCP(Fibre Channel Protocol)が提供するコマンドである。なお、ダミーフレームの送信数は、クレジット値が減少したままの状態を検出するごとに「1」とする。
【0080】
これにより、通信制御部22は、ダミーフレームに対応する応答フレームの受信によるクレジット値の復旧を期待できる。また、通信制御部22が受信側のクレジット値を超えてダミーフレームを送信しても、ダミーフレームが受信側によって破棄されるだけである。
【0081】
なお、通信制御部22は、ダミーフレームの送信条件、すなわちクレジット値が減少したままの状態から、差分が「1」に等しい場合を除外する。これは、通常フレームとダミーフレームがバッティングして受信側によって通常フレームが破棄されることを防止するためである。
【0082】
また、ダミーフレームの送信数は、クレジット値が減少したままの状態を検出するごとに「1」としたが、差分が「n」より大きい状態をクレジット値が減少したままの状態とすることでダミーフレームの送信数を「n」としてもよい。ただし、「n」は、クレジットの初期値より小さい自然数とする。
【0083】
次に、応答フレームをフレームロストした通信時のクレジット値の復旧について説明する。まず、クレジット値が減少したままの状態(クレジット値減少状態)の検出について
図11を用いて説明する。
図11は、第2の実施形態のクレジット値非減少状態とクレジット値減少状態における通信シーケンスの一例を示す図である。
【0084】
通信制御部22は、タイミングt11で復旧監視タイマをスタートし、タイミングt12で復旧監視タイマがタイムアップするまでクレジット値を監視する。なお、クレジット値の初期値は、「4」である。通信制御部22は、タイミングt11からタイミングt12までの監視期間中に、シーケンスsq41からsq43における通常フレームの送信と応答フレームの受信とによって、クレジット値を「4」、「3」、「4」、「3」と更新する。通信制御部22は、監視期間中のクレジット値の最大値が「4」であることから、クレジット値の初期値「4」との差分が「1」を超えないことを判定する。したがって、通信制御部22は、タイミングt11からタイミングt12までの監視期間中のクレジット値減少状態を検出しない。
【0085】
一方、通信制御部22は、タイミングt13で復旧監視タイマをスタートし、タイミングt14で復旧監視タイマがタイムアップするまでクレジット値を監視する。通信制御部22は、タイミングt13からタイミングt14までの監視期間中に、シーケンスsq44からsq46における通常フレームの送信と応答フレームの受信とによって、クレジット値を「1」、「0」、「1」、「0」と更新する。
【0086】
FCポート200aのクレジット値は、タイミングt13からタイミングt14までの監視期間中、応答フレームのフレームロストによりFCポート210aのクレジット値と不一致となっている。また、FCポート200aのクレジット値は、「1」までしか復帰しないため、通信制御部22は、送信できるフレーム数に制約を受ける。このような状態は、FCポート200aとFCポート210aとの間の通信性能が低下した状態である。
【0087】
通信制御部22は、タイミングt13からタイミングt14までの監視期間中のクレジット値の最大値が「1」であることから、クレジット値の初期値「4」との差分が「1」を超えることを判定する。したがって、通信制御部22は、タイミングt13からタイミングt14までの監視期間中のクレジット値減少状態を検出する。
【0088】
次に、ダミーフレームの送信によるクレジット値減少状態からの復旧について
図12を用いて説明する。
図12は、第2の実施形態のダミーフレームの送信によるクレジット値減少状態からの復旧時における通信シーケンスの一例を示す図である。
【0089】
[シーケンスsq51]通信制御部22は、クレジット値減少状態にあることを検出して、FCポート200aからFCポート210aにダミーフレームを送信する。このとき、FCポート200aのクレジット値は、更新されず、FCポート210aのクレジット値は、ダミーフレームの受信により「3」から「2」に更新される。
【0090】
[シーケンスsq52]通信制御部22は、シーケンスsq51で送信したダミーフレームに対応する応答フレームをFCポート210aから受信することにより、クレジット値を「1」から「2」に更新する。FCポート210aのクレジット値は、応答フレームの送信とともに受信バッファ212aのフレーム格納領域が1つクリアされて「2」から「3」に更新される。
【0091】
このように、通信制御部22は、クレジット値をクレジット値減少状態から「1」だけ復旧する。なお、通信制御部22は、未だクレジット値減少状態にあることを検出した場合、ダミーフレームを再度送信する。
【0092】
[シーケンスsq53]通信制御部22は、クレジット値減少状態にあることを検出して、FCポート200aからFCポート210aにダミーフレームを送信する。このとき、FCポート200aのクレジット値は、更新されず、FCポート210aのクレジット値は、ダミーフレームの受信により「3」から「2」に更新される。
【0093】
[シーケンスsq54]通信制御部22は、シーケンスsq52で送信したダミーフレームに対応する応答フレームをFCポート210aから受信することにより、クレジット値を「2」から「3」に更新する。FCポート210aのクレジット値は、応答フレームの送信とともに受信バッファ212aのフレーム格納領域が1つクリアされて「2」から「3」に更新される。
【0094】
これにより、通信制御部22は、クレジット値減少状態を解消したクレジット値の範囲で通常フレームを送信することができる(シーケンスsq55からsq57)。このようにして、通信制御部22は、ダミーフレームの送信を繰返すことによって、クレジット値減少状態を解消し、通信性能が低下した状態から復帰できる。
【0095】
なお、通信制御部22は、クレジット値減少状態にあることを検出して、ダミーフレームを1つ送信するようにしたが、クレジット値減少状態に応じて2以上のダミーフレームを送信するものであってもよい。
【0096】
次に、クレジット復旧処理におけるクレジット値減少状態の監視と判定のタイミングについて
図13を用いて説明する。
図13は、第2の実施形態のクレジット復旧処理におけるクレジット値減少状態の監視と判定のタイミングチャートの一例を示す図である。
【0097】
通信制御部22は、復旧監視タイマをタイミングt21にスタートし、復旧監視タイマがタイムアップするタイミングt22までのクレジット値を監視し、タイミングt22を判定タイミングとする。通信制御部22は、タイミングt21からタイミングt22までの監視期間中にクレジット値に「4」または「3」があることから、クレジット値減少状態を検出しない。通信制御部22は、タイミングt22を始期としてタイミングt23を終期として次の監視期間を設定する。以降、通信制御部22は、間断なくクレジット値を監視する。
【0098】
[第3の実施形態]
次に、第3の実施形態のストレージシステムについて説明する。第3の実施形態のストレージシステムは、ダミーフレームの送信基準が第2の実施形態と異なる。具体的には、第2の実施形態の通信制御部22が実行するクレジット復旧処理に代えて、第3の実施形態の通信制御部22は、第2クレジット復旧処理を実行する点で相違する。以下、第3の実施形態の説明では、第2の実施形態と同様の構成について符号を同じにして説明を省略する。
【0099】
まず、第2クレジット復旧処理について
図14を用いて説明する。
図14は、第3の実施形態の第2クレジット復旧処理のフローチャートを示す図である。第2クレジット復旧処理は、クレジット値が減少したままの状態を検出して、減少したクレジット値を復旧する処理である。第2クレジット復旧処理は、FCスイッチ20,21間の通信開始時に、データ送信側の通信制御部22によって実行される。
【0100】
[ステップS31]通信制御部22は、第1監視タイマをスタートする。第1監視タイマは、クレジット値が減少したままの状態の検出期間の設定に用いるタイマである。
[ステップS32]通信制御部22は、クレジット値を監視する。
【0101】
[ステップS33]通信制御部22は、第1監視タイマがタイムアップ(たとえば、第1監視タイマのスタートから500ms経過)したか否かを判定する。通信制御部22は、第1監視タイマがタイムアップした場合にステップS34にすすみ、第1監視タイマがタイムアップしていない場合にステップS32にすすむ。
【0102】
[ステップS34]通信制御部22は、クレジットの初期値と監視期間中のクレジットの最大値とを比較して差分が「1以上」であるか否かを判定する。差分が「1以上」である状態は、第1監視タイマがタイムアップするまでの間、クレジット値が減少したままの状態、あるいはクレジット値が「初期値(最大値)」まで復帰しない状態であることを示す。
【0103】
通信制御部22は、差分が「1以上」の場合にステップS35にすすみ、差分が「1以上」でない場合にステップS31にすすむ。
なお、第3の実施形態は、差分が「1」の場合を含めて、クレジット値が減少したままの状態と判定する点で、第2の実施形態と相違する。第2の実施形態は、差分が「1」の場合を、クレジット値が減少したままの状態と判定しないことで、通常フレームの送信とダミーフレームの送信のバッティングを防止した。第3の実施形態は、以下の処理によって通常フレームの送信とダミーフレームの送信のバッティングを防止する。
【0104】
[ステップS35]通信制御部22は、ダミーフレームを送信する。なお、ダミーフレームの送信数は、クレジット値が減少したままの状態を検出するごとに「1」とする。
これにより、通信制御部22は、ダミーフレームに対応する応答フレームの受信によるクレジット値の復旧を期待できる。また、通信制御部22が受信側のクレジット値を超えてダミーフレームを送信しても、ダミーフレームが受信側によって破棄されるだけである。
【0105】
[ステップS36]通信制御部22は、第2監視タイマをスタートする。第2監視タイマは、ダミーフレーム送信後の通常フレームの送信待ち合わせに用いるタイマである。
[ステップS37]通信制御部22は、通常フレームの送信を待機する。これにより、通信制御部22は、通常フレームの送信とダミーフレームの送信のバッティングを防止し、通常フレームが受信側によって破棄されることを防止する。
【0106】
[ステップS38]通信制御部22は、ダミーフレームに対する応答フレームを受信したか否かを判定する。通信制御部22は、応答フレームを受信した場合にステップS44にすすみ、応答フレームを受信していない場合にステップS39にすすむ。
【0107】
[ステップS39]通信制御部22は、第2監視タイマがタイムアップ(たとえば、第2監視タイマのスタートから100ms経過)したか否かを判定する。通信制御部22は、第2監視タイマがタイムアップした場合にステップS40にすすみ、第2監視タイマがタイムアップしていない場合にステップS38にすすむ。これにより、通信制御部22は、ダミーフレームに対する応答フレームの受信を、最大で第2監視タイマの監視時間だけ待ち合わせることができる。
【0108】
[ステップS40]通信制御部22は、ダミーフレームが破棄されたと判断して、ダミーフレームをリトライ送信する。
[ステップS41]通信制御部22は、第2監視タイマをスタートする。
【0109】
[ステップS42]通信制御部22は、リトライ送信したダミーフレームに対する応答フレームを受信したか否かを判定する。通信制御部22は、応答フレームを受信した場合にステップS44にすすみ、応答フレームを受信していない場合にステップS43にすすむ。
【0110】
[ステップS43]通信制御部22は、第2監視タイマがタイムアップしたか否かを判定する。通信制御部22は、第2監視タイマがタイムアップした場合にステップS44にすすみ、第2監視タイマがタイムアップしていない場合にステップS42にすすむ。
【0111】
なお、リトライ送信したダミーフレームに対する応答がない場合、FCスイッチ20,21は、クレジットが枯渇した状態から復旧できない、あるいは経路異常によりダミーフレームが相手側に届いていない状態である可能性がある。このような場合、通信制御部22は、FCスイッチ20より上位のデバイス(たとえば、図示しない管理装置)による復旧に委ねるものとして、上位のデバイスに所要の状態情報を報知するようにしてもよい。
【0112】
[ステップS44]通信制御部22は、通常フレームの送信待機を解除して、ステップS31にすすむ。
これにより、通信制御部22は、通常フレームの送信とダミーフレームの送信のバッティングを防止しながら、ダミーフレームに対応する応答フレームの受信によるクレジット値の復旧を期待できる。また、第3の実施形態の通信制御部22は、差分が「1」の場合を含めて、クレジット値が減少したままの状態と判定することで、第2の実施形態の通信制御部22よりも早くクレジット値が減少したままの状態を検出して早期の復帰を図ることができる。
【0113】
次に、第2クレジット復旧処理におけるクレジット値減少状態の監視と判定のタイミングについて
図15を用いて説明する。
図15は、第3の実施形態の第2クレジット復旧処理におけるクレジット値減少状態の監視と判定のタイミングチャートの一例を示す図である。
【0114】
通信制御部22は、第1監視タイマをタイミングt31にスタートし、第1監視タイマがタイムアップするタイミングt32までのクレジット値を監視し、タイミングt32を判定タイミングとする。通信制御部22は、タイミングt31からタイミングt32までの監視期間中にクレジット値に「4」があることから、クレジット値減少状態を検出しない。
【0115】
通信制御部22は、第1監視タイマをタイミングt32にスタートし、第1監視タイマがタイムアップするタイミングt33までのクレジット値を監視し、タイミングt33を判定タイミングとする。通信制御部22は、タイミングt32からタイミングt33までの監視期間中にクレジット値に「4」がないことから、クレジット値減少状態を検出して、ダミーフレームを送信する。通信制御部22は、第2監視タイマをタイミングt33にスタートし、第2監視タイマがタイムアップすることで、またはダミーフレームに対する応答フレームを受信することで、タイミングt34をクレジット値減少状態の次の監視期間とする。
【0116】
なお、第2の実施形態および第3の実施形態において、通信制御部22は、クレジットの初期値と監視期間中のクレジットの最大値とを比較して両者の差分によりクレジット値が減少したままの状態を検出した。しかしながら、差分によるクレジット値が減少したままの状態の検出は、一例であってこれに限らず、その他の方法によって検出するものであってもよい。たとえば、通信制御部22は、クレジットの最大値がクレジットの初期値まで復帰しない状態と、スループットの低下状態などその他の条件との組み合わせにより、クレジット値が減少したままの状態を検出してもよい。
【0117】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、通信装置2,3、全体制御部20aおよび通信制御部22が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
【0118】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0119】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【0120】
また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLDなどの電子回路で実現することもできる。