(57)【要約】【課題】  ストレージネットワークのファブリックスイッチにおいて、ポート毎にフレームバッファ容量を可変とすることで障害発生時の信頼性や通信性能を向上させる。【解決手段】  本発明は、ストレージネットワークのデータ転送経路上に配置され、各ポートのバッファとフレームを宛先ポートに転送するルーティング回路とを備えたファブリックスイッチに監視、各ポートの通信状況を監視し、当該通信状況に応じて各ポートのバッファを補充するバッファ数を決定するポート監視部と、ルーティング回路と各ポートの送信側バッファとの間に介在し、決定されたバッファ数を各ポートに振り分けて一定容量内で動的に変更可能に構成するスプールメモリを設けたことを特徴とする。【選択図】図５
2008271017.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算装置と複数の記憶装置からなるストレージネットワークのデータ転送経路上に配置され、フレームを一時的に保持する各ポートのバッファと該フレームを解析して宛先ポートに転送するルーティング回路とを備えたファブリックスイッチであって、
前記各ポートの通信状況を監視し、当該通信状況に応じて各ポートのバッファを補充するバッファ数を決定するポート監視部と、
前記ルーティング回路と前記各ポートの送信側バッファとの間に介在し、前記決定されたバッファ数を各ポートに振り分けて一定容量内で動的に変更可能に構成されたスプールメモリと、
を具備することを特徴とするファブリックスイッチ。
【請求項２】
前記スプールメモリ内の各ポート用のバッファ数は、前記ポート監視部によって監視された送信バッファの使用率にしたがってポート毎の増減が設定されることを特徴とする請求項１に記載のファブリックスイッチ。
【請求項３】
前記スプールメモリ内の各ポート用のバッファ数において、前記計算装置の前記記憶装置に対するリード／ライトの比率を表すアクセスパターン情報をポート監視部に予め通知し、当該アクセスパターン情報をもとに当該ポートのバッファ数の増減が設定されることを特徴とする請求項１に記載のファブリックスイッチ。
【請求項４】
複数の計算装置と複数の記憶装置からなるストレージネットワークのデータ転送経路上に配置され、フレームを一時的に保持する各ポートのバッファと該フレームを解析して宛先ポートに転送するルーティング回路とを備えたファブリックスイッチにおけるバッファ容量制御方法であって、
前記各ポートの通信状況を監視し、当該通信状況に応じて各ポートのバッファを補充するバッファ数を決定するポート監視ステップと、
前記ルーティング回路と前記ポート毎の送信側バッファとの間に介在させたスプールメモリに、決定された前記各ポートのバッファ数を一定容量内で動的に変更可能に設定するステップと、
を有することを特徴とするバッファ容量制御方法。
【請求項５】
複数の計算装置と複数の記憶装置からなるストレージネットワークのデータ転送経路上に配置され、フレームを一時的に保持する各ポートのバッファと該フレームを解析して宛先ポートに転送するルーティング回路とを備えたファブリックスイッチにおけるバッファ容量制御プログラムであって、
ファブリックスイッチに、
前記各ポートの通信状況を監視し、当該通信状況に応じて各ポートのバッファを補充するバッファ数を決定するポート監視ステップと、
前記ルーティング回路と前記ポート毎の送信側バッファとの間に介在させたスプールメモリに、決定された前記各ポートのバッファ数を一定容量内で動的に変更可能に設定するステップと、
を実行させるバッファ容量制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージネットワークのファブリックスイッチにおいて、ポート毎にフレームバッファ容量を変更可能な構造とし、その容量制御を行うことにより障害発生時の信頼性や通信性能を向上させる技術に関する。
【背景技術】
【０００２】
従来、ファイバチャネル（ＦＣ）と呼ばれるインターフェースを使用する各装置には、通信時にポートにフレームを一時的に格納するフレームバッファ（ＲＸ：受信用、ＴＸ：送信用）を有してデータを転送するストア＆フォワード方式がある（例えば、特許文献１参照）。
【０００３】
図１に、従来のファブリックスイッチによる通信制御の構成を示す。計算機装置（計算機装置１、２、３・・・）、ファブリックスイッチ、および記憶装置（ハードディスク装置：ＨＤＤ１、ＨＤＤ２、ＨＤＤ３・・・）の各ポート（Ｐ００、Ｐ０１、Ｐ０２・・・Ｐ１０、Ｐ１１、Ｐ１２・・・）には、受信用バッファ（ＲＸ）と送信用バッファ（ＴＸ）が内蔵され、計算機装置から送信されたフレーム信号は一時的にフレームバッファに蓄えられ、ファブリックスイッチのルーティング回路によってポートが選択されて記憶装置に送信される。
【０００４】
各ポートのフレームバッファは、一種の記憶素子であり容量がある。この容量の大きさによって何個のフレームを格納できるかが決まる。格納できる個数が多ければ多いほど、障害発生時の信頼性や通信性能は向上するが、ＬＳＩ(Large Scale Integration）チップ内に構成できる記憶素子の容量には制限があるため、十分な数が確保されない現状にある。
【０００５】
ポートのバッファ内におけるフレームの移動は、図２のように行われる。フレームがＮ個格納できる容量のバッファだとすると、フレームバッファはＮ個の区画に区切られ、始めに受信したフレームは、アドレスの０番地格納され、順次処理（前にあるフレームが処理されるまでは移動されない) するファーストイン・ファーストアウト（ＦＩＦＯ）のルールにしたがって移動し、Ｎ番地に到達した時点で他回路に送られる。
【０００６】
図３は、各ポートのフレームバッファにおけるデータ移動のフローを示す。（ａ）は、送信バッファの処理であり、（ｂ）は、受信バッファの処理を示している。送信バッファでは、０番地において、１番目のバッファが空であるか否かを確認し、データが未だあるときには、バッファを移動せずそのアドレスにとどめ、空となった場合に、順次、次ぎのアドレスに進み、２番目以降のバッファの空きを確認しつつ、フレームを移動し、Ｎ番地において、送信許可が確認されたらフレームを他装置に出力する。受信バッファにおいても同様な順次処理が施され、フレームはファブリックスイッチ内部のブロックに出力される。以上のように、装置間の通信は、フレームが各ポートのバッファを移動することにより行われる。
【０００７】
さらに、例えば、図４に示すように、計算装置から記憶装置へフレームを送信する場合、以下のような手順でフレームがバッファ間を移動する。なお、図４は、ファブリックスイッチにおけるフレームの遷移状態を表しており、（ａ）は、計算装置から記憶装置へのデータの流れを示し、（ｂ）は、記憶装置からウエイト要求が発行された状態を示している。
（１）計算装置：送信フレームを自装置のポートに備わる送信用（ＴＸ）バッファの０番地に入力。
（２）計算装置：ＴＸバッファ内において、フレームが０番地からＮ番地に移動する。
（３）計算装置：ＴＸバッファからファブリックスイッチのポートに備わる受信用（ＲＸ）バッファの０番地に入力される。
（４）ファブリックスイッチ：ＲＸバッファ内において、フレームが０番地からＮ番地に移動する。
（５）ファブリックスイッチ：ＲＸバッファからルーティング回路に入力される。
（６）ファブリックスイッチ：ルーティング回路がフレームの送信先を解析し、フレームを送信ポートのＴＸバッファの０番地に入力する。
（７）ファブリックスイッチ：ＴＸバッファ内で、フレームが０番地からＮ番地に移動する。
（８）ファブリックスイッチ：ＴＸバッファから記憶装置のポートに備わる受信用（ＲＸ）バッファの０番地に入力される。
（９）記憶装置：ＲＸバッファ内において、フレームが０番地からＮ番地に移動する。
（１０）記憶装置：フレームを受信する。
【０００８】
これらの処理は、順次処理される。装置のフレームバッファ間でフレームのやり取りする際に、相手側装置のフレームバッファが処理中で、すべて使用中（バッファフルの状態) となっている場合には、相手側装置からウェイト要求が送られ、送信を停止させるようなフロー制御の仕組を持っている。
【０００９】
例えば、ポートＰ１１に接続される記憶装置で障害が発生し、記憶装置側のＲＸバッファがフル状態になると、ポートＰ１１のファブリックスイッチ側のＴＸバッファに対し、ウェイト要求が送信される。このとき、他ポートからポートＰ１１にフレームが送られてくると、当該フレームは記憶装置に送れない状態にあるため、フレームがバッファ内に長時間とどまることになる。これがバッファ数以上行われるとポートＰ１１のＴＸバッファもフル状態となってしまう。
【００１０】
したがって、ポートＰ１１のＴＸバッファがフルになると、そのポートにフレームを送る必要のあるポートがすべて処理が行なえず、そのポートのＲＸバッファもフル状態となる。ファブリックポートのＲＸバッファがフル状態になると、ファブリックポートから接続装置にウェイト要求が送られて、その装置もすべてのフレームを送信できず通信を行うことができなくなる。この状態は最初の障害が取り除かれるまで継続する。
【００１１】
このように、バッファ内をフロー制御でフレームが移動していく方式の通信の場合、１ポートで障害がおきると、その影響が他ポートまで伝播し、障害が発生している箇所以外のポートでも送信先にかかわらず、通信性能の低下や通信のタイムアウトが発生する。
【特許文献１】特開２００２−９８２７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記してきたように、フレームをバッファ間でフロー制御しながら送信する場合は、ファブリックスイッチに接続されているいずれかの装置内で通信遅延等が起こると、その影響が接続されているすべての装置に及ぶ問題がある。
【００１３】
そこで、本発明では、ストレージネットワークにおいてデータ転送経路上に配置されるファブリックスイッチに、ポート毎にフレームバッファを用意でき、そのバッファ数を一定容量内で変更可能な構成ができるスプールメモリを内蔵することによって、特定ポートのフレームのバッファフル状態により他ポートの転送が阻害される影響を軽減するファブリックスイッチにおけるフレームバッファ容量制御方法、フレームバッファ容量制御プログラム、およびフレームバッファ容量制御装置を提供する。
【課題を解決するための手段】
【００１４】
第一の発明は、複数の計算装置と複数の記憶装置からなるストレージネットワークのデータ転送経路上に配置され、フレームを一時的に保持する各ポートのバッファと該フレームを解析して宛先ポートに転送するルーティング回路とを備えたファブリックスイッチであって、前記各ポートの通信状況を監視し、当該通信状況に応じて各ポートのバッファを補充するバッファ数を決定するポート監視部と、前記ルーティング回路と前記各ポートの送信側バッファとの間に介在し、前記決定されたバッファ数を各ポートに振り分けて一定容量内で動的に変更可能に構成されたスプールメモリと、を具備することを特徴とするファブリックスイッチに関する。
【００１５】
すなわち、第一の発明によれば、ポート監視部が、各ポートの通信状況を監視して、使用率などの通信状況に応じてポートのバッファを補充するバッファ数を決定し、スプールメモリを、ルーティング回路と各ポートの送信側バッファとの間に介在させ、決定されたバッファ数を各ポートに一定容量内で振り分けて可変とする構成をとることによって、スプールメモリが、ポートのバッファの通信状況による過不足を補うこととなり、スプールメモリ内の分で各ポート用の送信バッファ数が多くなり、他のポートに及ぼす影響を遅延させ、障害発生時の耐性が向上する。また、バッファ数が多くなることで、一度に通信可能なフレームが多くなり通信性能も向上する。
【００１６】
第二の発明は、前記スプールメモリ内の各ポート用のバッファ数は、前記ポート監視部によって監視された送信バッファの使用率にしたがってポート毎の増減が設定されることを特徴とする上記第一の発明に記載のファブリックスイッチに関する。
【００１７】
すなわち、第二の発明によれば、ポートの通信状況として送信バッファの使用率を取得し、当該使用率にしたがってポート毎の増減が調整され、ポートの送信バッファを補充するバッファが、スプールメモリ内の各ポート用のバッファ数として設定される構成をとることによって、障害発生時の耐性が向上することができ、通信効率の向上を図ることができる。
【００１８】
第三の発明は、前記スプールメモリ内の各ポート用のバッファ数において、前記計算装置の前記記憶装置に対するリード／ライトの比率を表すアクセスパターン情報をポート監視部に予め通知し、当該アクセスパターン情報をもとに当該ポートのバッファ数の増減が設定されることを特徴とする上記第一の発明に記載のファブリックスイッチに関する。
【００１９】
すなわち、第三の発明によれば、計算装置からファブリックスイッチ内のポート監視部にアクセスできる通信経路を設け、ポート監視部が、リード／ライトのアクセスパターン情報を予め受信し、当該アクセスパターン情報をもとにスプールメモリ内の各ポートのバッファ数を増減する構成をとることによって、ポートのフレームが多くなる場合を事前にバッファ数を増やす対応が可能となり、通信性能や障害発生時の耐性を向上させることができる。
【発明の効果】
【００２０】
以上、上記してきた発明により以下の効果が生まれる。
（１）ポート監視部が、各ポートの通信状況を監視して、使用率などの通信状況に応じてポートのバッファを補充するバッファ数を決定し、スプールメモリを、ルーティング回路と各ポートの送信側バッファとの間に介在させ、決定されたバッファ数を各ポートに一定容量内で振り分けて可変とする構成をとることによって、スプールメモリが、ポートのバッファの通信状況による過不足を補うこととなり、スプールメモリ内の分で各ポート用の送信バッファ数が多くなり、他のポートに及ぼす影響を遅延させ、障害発生時の耐性が向上する。また、バッファ数が多くなることで、一度に通信可能なフレームが多くなり通信性能も向上する。
（２）ポートの通信状況として送信バッファの使用率を取得し、当該使用率にしたがってポート毎の増減が調整され、ポートの送信バッファを補充するバッファが、スプールメモリ内の各ポート用のバッファ数として設定される構成をとることによって、障害発生時の耐性が向上することができ、通信効率の向上を図ることができる。
（３）計算装置からファブリックスイッチ内のポート監視部にアクセスできる通信経路を設け、ポート監視部が、リード／ライトのアクセスパターン情報を予め受信し、当該アクセスパターン情報をもとにスプールメモリ内の各ポートのバッファ数を増減する構成をとることによって、ポートのフレームが多くなる場合を事前にバッファ数を増やす対応が可能となり、通信性能や障害発生時の耐性を向上させることができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面にもとづいて本発明の実施形態を説明する。
【００２２】
図５は、本発明の実施の形態になるフレームのバッファ容量制御の構成例（その１）を示す。ストレージネットワークは、複数の計算装置１（装置１、装置２、装置３・・・）、ファブリックスイッチ２、および複数の記憶装置３（ハードディスク装置：ＨＤＤ１、ＨＤＤ２、ＨＤＤ３・・・）で構成されている。計算装置１、ファブリックスイッチ２、および記憶装置３のポート（Ｐ００、Ｐ０１、Ｐ０２・・・Ｐ１０、Ｐ１１、Ｐ１２・・・）には、それぞれフレームのバッファ（受信（ＲＸ）バッファおよび送信（ＴＸ）バッファ）が備わり、入力されたフレームがＦＩＦＯにしたがって順次処理される。
【００２３】
ファブリックスイッチ２は、入力されたフレームのヘッダ情報を解析して、宛先ポートに転送するルーティング回路２１、ルーティング回路２１と各ポートの送信バッファとの間に介在し、ポートバッファを補充する調整用のバッファがポート毎に容量可変に設けられたスプールメモリ２２、およびポートの通信状況を監視してバッファの使用率などを取得し、通信状況（バッファ使用率等）に応じてポート毎の補充用バッファを決定し、スプールメモリ２２のバッファ構成を設定するポート監視部２３を内蔵している。
【００２４】
すなわち、ファブリックスイッチ２は、従来のルーティング回路２１と各ポートの送信（ＴＸ）バッファの間にスプールメモリ、各ポートのバッファ使用率が監視可能なポート監視部が追加された構成を有している。以下に個々の機能の詳細を説明する。
【００２５】
スプールメモリ２２は、フレームをバッファする機能があり、一定の容量を持っている。メモリ容量に対して、全バッファ数をＭ個とすると、このＭ個のバッファをポート毎に振り分ける機構を持ち、かつ各ポートに振り分けられるバッファ数Ｍｘｘ（ｘｘはポートの番号）を自由に変更できる機能を持っている。
【００２６】
ただし、バッファ数には以下の制約がある。
【００２７】
Ｍ＝Ｍ００＋Ｍ０１Ｍ＋Ｍ０２＋・・・＋Ｍ１０＋Ｍ１１＋Ｍ１２＋・・・
上記ポート監視部２３は、ファブリックスイッチ２内の、各ポートのＴＸバッファの使用率を取得することができ、当該使用率をもとにスプールメモリ２２内の各ポート用のバッファ数Ｍｘｘを設定する機能を持っている。実施例では、ある所定周期を単位としてバッファ使用率が取得されることを想定している。
【００２８】
例えば、ポート監視部２３は、以下のような条件で、各ポート用のバッファ数を設定する。
（１）使用率が多いポートは多くバッファを設定する。
（２）使用率が低いポートは少なくバッファを設定する。
【００２９】
上記のごとく制御することにより、一定容量のバッファを通信状態に応じて効率よく構成できる。
【００３０】
また、ルーティング回路２１から出力されたフレームは、スプールメモリ２２内の各ポート用のバッファに入り、順次処理される。これにより、スプールメモリ２２内の分で各ポート用の送信（ＴＸ）バッファ数が多くなり、他ポートに影響を及ぼす時間が長くなり、障害発生時の耐性が向上することとなる。また、バッファ数が多くなれば、一度に通信可能なフレームが多くなり通信性能も向上する。
【００３１】
例えば、ポートＰ１１のＴＸバッファの使用率が高い場合は、ポート監視部２３がそれを検出し、スプールメモリ２２内のＰ１１用のバッファ数を多く設定し直す。これにより、ポートＰ１１のＴＸバッファ数が多くなり、記憶装置３側からウェイト要求がきても、バッファ数の増加分だけバッファフルの状態を起しにくくなり、バッファフルの状態が起きた場合の他ポートへの影響を軽減することができる。
【００３２】
図６は、本発明の実施の形態になるフレームのバッファ容量制御の構成例（その２）を示す。図５の実施例の構成に、計算装置１からファブリックスイッチ２内のポート監視部２３にアクセスできる通信経路を設ける。また、計算装置１には、通信する内容にしたがい、ポート監視部２３にその情報を予め送信する制御を設ける。
【００３３】
さらに、ポート監視部２３には、計算装置１からの情報によりスプールメモリ２２内のバッファ数の割当を変化させる機能を追加する。計算装置１の記憶装置３に対するリード（Ｒｅａｄ）／ライト（Ｗｒｉｔｅ）の比率を表すアクセスパターン情報をポート監視部２３に予め通知し、当該アクセスパターン情報をもとに当該ポートのバッファ数の増減が設定される機能である。
【００３４】
例えば、連続の書込み（Ｗｒｉｔｅ）命令などによって、計算装置１からＰ１０のハードディスクＨＤＤ１に向かうフレームが多くなる場合には、命令を発行する前に、計算装置１からポート監視部２３にその情報を通知し、それを受けたポート監視部２３は、スプールメモリ２２のＰ１０用のバッファ数を増加させる。これにより通信性能や障害発生時の耐性が向上することとなる。
【００３５】
以上のように、ファブリックスイッチ２において、上記のフレームのフロー制御を適用すれば、計算装置１が行う通信の内容によって、通信経路内のファブリックスイッチ２２内のバッファ数を最適化できるとともに、通信が計算装置１から記憶装置３へというような一方向に偏った場合にも、それにともなうバッファフルの状態が発生する可能性を軽減することができる。また、ポート監視部は、各ポートの状況と計算装置１からの情報を収集する機能を持ち、以下の図７に示すポート状況管理テーブルを作成する。
【００３６】
図７は、本発明の実施の形態になるポート状況管理テーブルを示す。ポート状況管理テーブルは、「ポート番号」、「バッファ数」、「容量割当率（％）」、および「ポートの状況（バッファ使用率）」の項目からなる複数のレコードで構成されている。
【００３７】
ここで、「バッファ数」の合計はＭとなる。Ｍはスプールメモリの容量により決められる。「容量割当率（％）」は、全メモリ容量をそのポートに何％割り当てるかを示し、これによりバッファ数が決まり、ポート監視部２３が、各ポートの状況の項目に重みを付けて合計し、ポート間で比較して決定される。実施例では、状況項目としてバッファ使用率（ある周期における全バッファに対する対象バッファの使用率）を掲げた。
【００３８】
他に状況項目としては、リード率、エラー発生状況等が考えられる。リード率は、例えば、計算装置１から記憶装置３に対しアクセスした場合のリード／ライトの比率（アクセスパターン情報）として表される。また、エラー発生状況は、例えば、記憶装置３で問題が発生し、送信（ＴＸ）バッファのＮ番地からフレームが送信できなくなった状況において、フレームがバッファ内にとどまっている時間として表される。
【００３９】
ポート監視部２３は、このポート状況管理テーブルの情報によって動的にバッファ数を決定する。決定されたバッファ数は、スプールメモリ２２に送られ、スプールメモリ２２は、これにしたがって内部のバッファを動的に構成することになる。
【００４０】
図８は、本発明の実施の形態になるファブリックスイッチにおけるポート監視部の処理フローを示す。
ステップＳ１１：まず、各ポートの通信状況を所定周期で監視し、各ポートのバッファ使用率を取得する。
ステップＳ１２：ポートの使用率は適正か否かを判定する。バッファ使用率の基準値を設定しておき、当該基準値との比較によって判断する。バッファ使用率が適正になっていなければ、ステップＳ13に進み、適正であれば、本処理フローを終了する。
ステップＳ１３：バッファが不足していれば、スプールメモリ２２内の対象ポートのバッファ数を増加させ、また、バッファが過剰であれば、増加させるよう各ポートのバッファ数を調整する。
ステップＳ１４：調整したバッファ数によって、スプールメモリ２２内の各ポートのバッファ構成を変更する。
ステップＳ１５：ポート監視部のポート状況管理テーブルの内容を更新する。
【００４１】
図９は、本発明の実施の形態になるファブリックスイッチにおけるフレームの転送処理フローを示す。
ステップＳ２１：計算装置１から送信されてきたフレームが、ファブリックスイッチ２のポートの受信バッファに入力。
ステップＳ２２：ルーティング回路によって入力フレームのヘッダ情報を解析され、宛先ポートが特定される。
ステップＳ２３：特定されたポート番号をスプールメモリに通知する。
ステップＳ２４：スプールメモリにおいて特定されたポート番号を検知し、当該ポートのバッファにおいてフレームを順次処理する。
ステップＳ２５：引き続き、当該ポートの送信バッファに移り、フレームが順次処理される。
【図面の簡単な説明】
【００４２】
【図１】従来のフレームバッファ制御方式（ストア＆フォワード）を示す図である。
【図２】各ポートに備わるフレームバッファにおけるデータ移動の模式図である。
【図３】各ポートのフレームバッファにおけるデータ移動の流れを示す図である。
【図４】ファブリックスイッチにおけるフレームの遷移状態を表す図である。
【図５】本発明の実施の形態になるフレームのバッファ容量制御の構成例（その１）を示す図である。
【図６】本発明の実施の形態になるフレームのバッファ容量制御の構成例（その２）を示す図である。
【図７】本発明の実施の形態になる各ポートの状況管理テーブルである。
【図８】本発明の実施の形態になるファブリックスイッチにおけるポート監視部の処理フローを示す図である。
【図９】本発明の実施の形態になるファブリックスイッチにおけるフレームの転送処理フローを示す図である。
【符号の説明】
【００４３】
１  計算装置
２  ファブリックスイッチ
３  記憶装置
２１  ルーティング回路
２２  スプールメモリ
【図１】
2008271017.tif 000003
【図２】
2008271017.tif 000004
【図３】
2008271017.tif 000005
【図４】
2008271017.tif 000006
【図５】
2008271017.tif 000007
【図６】
2008271017.tif 000008
【図７】
2008271017.tif 000009
【図８】
2008271017.tif 000010
【図９】
2008271017.tif 000011