(57)【要約】  プロセッサを備えたスイッチと、そのストレージスイッチの帯域を監視する方法である。スイッチには少なくとも１つの物理ポートがあり、少なくとも１つのターゲットと少なくとも１つのイニシエータとを物理ポートによって結合する。監視する方法には、物理ポートで輻輳が発生しているかどうかを判断する工程と、各ターゲットの最小帯域の設定及び最大帯域の設定に基づいて、イニシエータとターゲットとの間で帯域使用量に重みを割り当てる工程とが含まれる。スイッチには更に、ターゲットの各々の最小帯域の設定及び最大帯域の設定に基づいて、前記少なくとも２つのターゲットの各々の帯域使用量を制御する工程が含まれる。
2007536612.tif 000002
【特許請求の範囲】
【請求項１】
データを保存しアクセスするシステムで用いる方法であって、同システムが、少なくとも１つのイニシエータと、少なくとも２つのターゲットと、ポートを持つ少なくとも１つのスイッチと、を具備しており、前記方法が、
前記物理ポートで輻輳が発生しているかどうかを判断する工程と、
前記ターゲットの各々の最小帯域の設定及び最大帯域の設定に基づいて、少なくとも２つのターゲットの各々の帯域使用量を制御する工程と、
からなる方法。
【請求項２】
制御する前記工程が、前記イニシエータから前記２つのターゲットのうち少なくとも一方への追加のコマンド群を拒否する工程、を含む請求項１に記載の方法。
【請求項３】
制御する前記工程が、前記２つのターゲットの各々から前記ポートへ渡るトラフィックを監視する工程と、前記２つのターゲットのどちらかが最大帯域を超えたときにデータ量を記録する工程と、を含む請求項１に記載の方法。
【請求項４】
監視する前記工程が、前記データ量を、帯域が過多な期間に読み込まれたデータの量の分だけインクリメントする工程を含む、請求項３に記載の方法。
【請求項５】
監視する前記工程が、過多なデータ量を記録されたターゲットについての受信したコマンドが拒否されたときに同データ量をデクリメントする工程、を含む請求項３に記載の方法。
【請求項６】
判断する前記工程が、前記物理ポートを輻輳について監視する工程と、前記物理ポートが輻輳しているときに前記制御する工程を実施する工程と、を含む請求項１に記載の方法。
【請求項７】
制御する前記工程が、前記帯域が前記ターゲットに許容されている最大帯域を超えているかどうかを判断する為に前記２つのターゲットの各々からの帯域を監視する工程、を含む請求項１に記載の方法。
【請求項８】
制御する前記工程が、前記ターゲットから前記ポートへのトラフィックが前記ターゲットに許容されている最大帯域を超えたときに各ターゲットに重みを割り当てる工程と、前記２つのターゲットのうち一方へのコマンド群を拒否する工程と、を含む請求項１に記載の方法。
【請求項９】
重みを割り当てる前記工程が、前記ターゲットに関連付けられたレコードに帯域超過量を記録する工程を含む請求項８に記載の方法。
【請求項１０】
帯域超過を記録する前記工程がバイト数を記録する工程を含む請求項９に記載の方法。
【請求項１１】
追加のコマンド群を拒否する前記工程が、前記コマンドから要求されたバイト数を判断する前記工程と、前記記録された帯域超過を前記要求されたバイト数の分だけ低減させる工程と、を含む請求項９に記載の方法。
【請求項１２】
重みを割り当てる前記工程が、２レートのマーカに基づいて前記ターゲットから前記ポートへのトラフィックをマーキングする工程を含む請求項９に記載の方法。
【請求項１３】
重みを割り当てる前記工程が、２レート、３カラーのマーキングシステムを用いて前記トラフィックをマーキングする工程を含む請求項１２に記載の方法。
【請求項１４】
重み付けする前記工程が、赤にマーキングされたトラフィックのすべてを帯域超過として記録する工程を含む請求項１３に記載の方法。
【請求項１５】
重み付けする前記工程が、前記最大帯域を正規化した値の比較結果が乱数を超えている場合に、黄色のトラフィックのすべてを帯域超過として記録する工程を含む請求項９に記載の方法。
【請求項１６】
記録される前記超過が前記黄色のトラフィックフレームのフレームサイズである請求項１５に記載の方法。
【請求項１７】
前記少なくとも２つのターゲットのうち帯域超過が大きい方に向けられたコマンドが、その超過が前記少なくとも２つのターゲットの他方の超過を下回るまで拒否される請求項１５に記載の方法。
【請求項１８】
データを保存しアクセスするシステムで用いる方法であって、前記システムが、少なくとも１つのイニシエータと、少なくとも２つのターゲットと、ポートを持つ少なくとも１つのスイッチとを具備しており、前記方法が、
前記少なくとも２つのターゲットの各々から前記ポートへのトラフィック帯域を監視する工程と、
ターゲットごとの最小帯域及び最大帯域の設定に基づいて、どのターゲットがポートのリソース群にアクセスするべきかを判断する工程と、
判断する前記工程に基づいて前記ターゲットへの追加のコマンド群を拒否することで、前記ターゲット群へのアクセスを制御する工程と、
を含む方法。
【請求項１９】
判断する前記工程が、前記少なくとも２つのターゲットのそれぞれのトラフィックの重み付けに基づいて、各ターゲットに優先権を割り当てる工程を含む請求項１８に記載の方法。
【請求項２０】
重みを割り当てる前記工程が、２レート３カラーのマーカを用いて前記トラフィックをマーキングする工程を含む請求項１９に記載の方法。
【請求項２１】
重みを割り当てる前記工程が、赤にマーキングされたトラフィックのすべてを帯域超過として記録する工程を含む請求項２０に記載の方法。
【請求項２２】
重みを割り当てる前記工程が、前記最大帯域を正規化した値の比較結果が乱数を超えている場合に、黄色のトラフィックのすべてを帯域超過として記録する工程を含む請求項２０に記載の方法。
【請求項２３】
記録される前記超過がフレームサイズである請求項２０に記載の方法。
【請求項２４】
前記少なくとも２つのターゲットのうち帯域超過が大きい方に向けられたコマンドが、その超過が前記少なくとも２つのターゲットの他方の超過を下回るまで拒否される請求項２０に記載の方法。
【請求項２５】
ターゲットごとに仮想ターゲットが少なくとも１つあり、前記仮想ターゲットが少なくとも１つの各自の物理論理ユニットと通信する、請求項１８に記載の方法。
【請求項２６】
監視する前記工程が、前記物理論理ユニットの各々からそれぞれの仮想論理ユニットを介
したトラフィックを監視する工程を含む請求項２５に記載の方法。
【請求項２７】
制御する前記工程が、前記イニシエータから前記仮想ターゲットへのコマンド群を拒否する工程を含む請求項２６に記載の方法。
【請求項２８】
データを保存しアクセスするシステムで用いる方法であって、前記システムが、少なくとも１つのイニシエータと、少なくとも２つの仮想論理ユニットと、少なくとも２つの物理論理ユニットと、ポートを持つ少なくとも１つのスイッチと、を具備しており、前記ポートが前記スイッチを介して各物理論理ユニットにアクセスし、前記方法が、
前記関連の物理論理ユニットからのトラフィックの結果として前記少なくとも２つの仮想ターゲットの各々に消費される前記帯域を監視する工程と、
仮想ターゲットから戻るトラフィックの重み付けに基づいて、どのターゲットがポートのリソース群にアクセスすべきかを判断する工程と、
前記ターゲットの前記重み付けに基づいて前記ターゲットへの追加のコマンド群を拒否することによりアクセスを前記仮想ターゲット群に限る工程と、
を含む方法。
【請求項２９】
判断する前記工程が、仮想ターゲットごとにコンテンションカウントを記録する工程を含む請求項２８に記載の方法。
【請求項３０】
コンテンションカウントを生成する前記工程が、前記物理ターゲットから前記仮想ターゲットへのトラフィックを２レート３カラーのマーカを用いてマーキングする工程を含む請求項２９に記載の方法。
【請求項３１】
コンテンションカウントを生成する前記工程が、前記２レートの一方を前記仮想ターゲットの最大帯域に設定し、前記２レートの他方を前記仮想ターゲットの最小帯域に設定する工程を含む請求項３０に記載の方法。
【請求項３２】
前記仮想ターゲットの最大帯域を正規化した値が、前記正規化した値との比較の為に生成された乱数より大きい場合、黄色にマーキングされたトラフィックがコンテンションカウントとして記録される請求項３０に記載の方法。
【請求項３３】
記録されるコンテンションカウントの数がフレームサイズである請求項３２に記載の方法。
【請求項３４】
緑にマーキングされたトラフィックがコンテンションカウントの低減分として記録される請求項３０に記載の方法。
【請求項３５】
前記ターゲットへの追加のコマンド群を拒否する前記工程が、前記仮想ターゲットごとに記録されたコンテンションカウントの比較結果に基づいている請求項３０に記載の方法。
【請求項３６】
コンテンションカウントの過多量を有する前記仮想ターゲットに対するコマンド群が拒否される請求項３０に記載の方法。
【請求項３７】
コンテンションカウントの前記過多量が、前記ポートにアクセスするあらゆる仮想ターゲットのコンテンションカウントのうちで最小の数である請求項３６に記載の方法。
【請求項３８】
前記過多量を、前記仮想ターゲットの拒否されたコマンドで前記要求されたバイト数の分だけ低減する請求項３７に記載の方法。
【請求項３９】
少なくとも２つのターゲットへのアクセスをもたらす少なくとも１つの物理ポートを持つストレージスイッチであって、
各ターゲットのレコードを保存するメモリを具備し、前記ポートに付属した負荷分散回路と、前記レコードには、前記ターゲットの最小帯域及び最大帯域の配分が含まれており、
前記少なくとも２つのターゲットに対し別個に帯域監視装置を具備し、前記ポートに付属した処理回路と、を含み、前記処理回路が、各ターゲットに用いられた帯域の重み付け済みレコードを維持し、前記物理ポートが輻輳している場合に、前記レコードに基づいて少なくとも１つのターゲットへの追加のコマンド群を拒否する、
スイッチ。
【請求項４０】
前記処理回路が、コンテンションカウント発生装置と、２レート３カラーのメータ及びマーカとを備えた請求項３９に記載のスイッチ。
【請求項４１】
前記コンテンションカウント発生装置が、２レート３カラーマーカによりマーキングされた前記トラフィックの色に応答して前記２つのターゲットのうちの一方のコンテンションカウントレコードをインクリメントする請求項４０に記載のスイッチ。
【請求項４２】
前記マーキングされた色が黄色であり前記最大帯域配分を正規化した値がこの値と比較される乱数より大きい場合、前記コンテンションカウントがインクリメントされる請求項４０に記載のスイッチ。
【請求項４３】
前記マーキングされた色が黄色であり前記最大帯域配分を正規化した値がこの値と比較される乱数未満の場合、前記コンテンションカウントがデクリメントされる請求項４０に記載のスイッチ。
【請求項４４】
マーキングされた色が緑の場合、前記コンテンションカウントがデクリメントされる請求項４０に記載のスイッチ。
【請求項４５】
マーキングされた色が赤の場合、前記コンテンションカウントがインクリメントされる請求項４０に記載のスイッチ。
【請求項４６】
ターゲットごとに仮想ターゲットが少なくとも１つあり、前記仮想ターゲットが少なくとも１つの各自の物理論理ユニットと通信する請求項３９に記載のスイッチ。
【請求項４７】
前記処理回路が、前記重み付け済みレコードに応答する、前記イニシエータから前記仮想ターゲットへのコマンドのコマンド拒否部を備えた請求項４６に記載のスイッチ。
【請求項４８】
ストレージネットワークであって、
イニシエータと、
少なくとも２つのターゲットと、
前記イニシエータに結合された少なくとも１つのポートを具備したスイッチと、前記スイッチが前記ターゲット群へのアクセスをもたらし、前記スイッチが、前記少なくとも２つのターゲットのそれぞれの帯域配分を含むレコードを持ち前記ポートに関連付けられた少なくとも１つのプロセッサと、コードとを具備し、前記コードは前記プロセッサに対して、
前記少なくとも２つのターゲットの各々により消費される帯域を監視することと、
ターゲットから前記ポートへと戻るトラフィックの重み付けに基づいて、どのターゲットがポートのリソース群にアクセスするべきかを判断することと、
前記ターゲットの前記重み付けに基づいて前記ターゲットへの追加のコマンド群を拒否
することで、前記ターゲット群へのアクセスを制御することと
を指示するよう動作可能である、
ネットワーク。
【請求項４９】
前記帯域の監視を監視するよう前記プロセッサに対して指示する前記コードが、前記ターゲットから前記ポートへのトラフィックが前記ターゲットに許容されている最大帯域を超えたときに各ターゲットに重みを割り当てるコードを含み備えた、請求項４８に記載のネットワーク。
【請求項５０】
前記プロセッサに重みを割り当てるよう指示する前記コードが、２レートのマーカに基づいて前記ターゲットから前記ポートへのトラフィックをマーキングするコードを含む、請求項４９に記載のネットワーク。
【請求項５１】
前記プロセッサに重みを割り当てるよう指示する前記コードが、前記プロセッサに、２レート、３カラーのマーキングシステムを用いて前記トラフィックをマーキングするよう指示するコードを含む、請求項５０に記載のネットワーク。
【請求項５２】
前記プロセッサに重みを割り当てるよう指示する前記コードが、前記プロセッサに、赤にマーキングされたトラフィックのすべてを帯域超過として記録するよう指示するコードを含む請求項５０に記載のネットワーク。
【請求項５３】
前記プロセッサに重みを割り当てるよう指示する前記コードが、前記最大帯域を正規化した値の比較結果が乱数を超えた場合に前記プロセッサに黄色のトラフィックを帯域超過としてマーキングするよう指示するコードを含む請求項５０に記載のネットワーク。
【請求項５４】
前記プロセッサに重みを割り当てるよう指示する前記コードが、前記プロセッサに、記録される前記超過をフレームサイズとして記録するよう指示するコードを含む請求項５０に記載のネットワーク。
【請求項５５】
前記プロセッサにアクセスを制御するよう指示する前記コードが、前記プロセッサに対し、前記少なくとも２つのターゲットのうち帯域超過が大きい方に向けられたコマンドを拒否するよう指示するコードを含み、その超過が前記少なくとも２つのターゲットのもう一方の超過を下回るまで、拒否される請求項５０に記載のネットワーク。
【請求項５６】
ストレージスイッチの帯域を監視する方法であって、前記スイッチングが少なくとも１つの物理ポートを具備しており、前記物理ポートが、少なくとも１つのターゲットと少なくとも１つのイニシエータとを前記物理ポートによって結合しており、
前記物理ポートで輻輳が発生しているかどうかを判断する工程と、
各ターゲットの最小帯域の設定及び最大帯域の設定に基づいて、前記イニシエータと前記ターゲットとの間で帯域使用量に重みを割り当てる工程と
を含む方法。
【請求項５７】
重みを割り当てる前記工程が、２レート３カラーのマーカを用いて前記ターゲットからの帯域を監視する前記工程を含む請求項５６に記載の方法。
【請求項５８】
重みを割り当てる前記工程が、赤にマーキングされたトラフィックのすべてを帯域超過として記録する工程を含む請求項５７に記載の方法。
【請求項５９】
重みを割り当てる前記工程が、前記最大帯域を正規化した値の比較結果が乱数を超えている場合に、黄色のトラフィックのすべてを帯域超過として記録する工程を含む請求項５７
に記載の方法。
【請求項６０】
記録される前記超過がフレームサイズである請求項５９に記載の方法。
【請求項６１】
前記少なくとも２つのターゲットのうち帯域超過が大きい方に向けられたコマンドが、その超過が前記少なくとも２つのターゲットのもう一方の超過を下回るまで拒否される請求項５９に記載の方法。
【請求項６２】
重みを割り当てる前記工程が、全ターゲットのうち超過量の最も少ないものを判断する工程と、前記最も少ない超過量を過多量として加算する工程とを含む請求項５６に記載の方法。
【請求項６３】
前記帯域使用量が読み込みコマンドの結果である請求項５６に記載の方法。
【請求項６４】
前記帯域使用量が書き込みコマンドの結果である、請求項５６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージスイッチの帯域制御に関する。
【背景技術】
【０００２】
近年、ストレージエリアネットワーク（ＳＡＮ）の人気が高い。ＳＡＮはＳＮＩＡ（Ｓｔｏｒａｇｅ  Ｎｅｔｗｏｒｋｉｎｇ  Ｉｎｄｕｓｔｒｙ  Ａｓｓｏｃｉａｔｉｏｎ）により、データをコンピュータシステムとストレージエレメントとの間で転送することとストレージエレメント群の中で転送することが主目的のネットワークとして規定されたものである。ストレージエリアネットワーク（ＳＡＮ）は高速の特別な目的のネットワーク（又はサブネットワーク）であり、種々のデータストレージデバイスを、ユーザの大型のネットワークに代わって関連のデータサーバに相互接続する。ストレージデバイスをサーバにＳＣＳＩ接続などで直接的に接続するのとは違い、且つ、ストレージデバイスをＬＡＮにイーサネット（例えばＮＡＳシステム）などのこれまでのインタフェースで付加するのとも違い、ＳＡＮは、直接接続のＳＣＳＩ及びＮＡＳの同等物と同じ帯域制限を持つ傾向のない独立したネットワークを実質的に形成し、更に構成可能性もスケーラビリティも高める。
【０００３】
ＳＡＮ環境では、ストレージデバイス（例えば、テープドライブやＲＡＩＤアレイ）とサーバとが一般に種々のスイッチ及び電気器具によって相互に接続されている。スイッチ及び電気器具との接続は、通常はファイバチャネルである。この構造によって一般に、ＳＡＮのどのサーバもあらゆるストレージデバイスと通信可能になり、逆方向の通信も同様に可能になる。この構造は更に、サーバからストレージデバイスへの代替の経路も提供する。言い換えると、特定のサーバが低速又は完全に利用不能の場合、ＳＡＮの別のサーバによってストレージデバイスへのアクセスを供給できる。ＳＡＮは更に、データのミラー化を可能にするので、多数のコピーが使用可能になり、従ってデータの可用性への信頼も高まる。ストレージを更に多く必要とするときは、特殊なサーバに接続することなく、追加のストレージデバイスをＳＡＮに加えることができる。もっと正確に言えば、新しいデバイスをストレージネットワークに単純に加えることができる上、どこからでもアクセスすることができる。
一般的なＳＡＮ電気器具は切り換える操作を多少は行うものの、サーバが多数ある（３つより多い）場合もあるので、しかも各電気器具のポートが少ない（通常は２つ又は４つしかない）場合もあるので、多くのサーバを少ない電気器具に接続するには別個のスイッチ群が必要になる。それにもかかわらず、一般的なスイッチに組み込まれたインテリジェンスは少なく、一般的なスイッチは選択された電気器具にデータを回送するだけである。
【０００４】
同時係属中の（特許文献１）が開示しているデバイスは、ＳＡＮの使用に伴う問題点の多くを、ストレージスイッチを導入することで解決している。このスイッチには、ＳＡＮで用いられた以前の電気器具に要求された際にデータをバッファせずにデータをイニシエータとターゲットとの間でルーティングする能力がある。例えば、一般的なネットワークスイッチにより生じる待ち時間よりもパケットの待ち時間を長くせずに、データパケット群をルーティングできるストレージスイッチがある。このような、イニシエータとターゲットとの間での、バッファリングされていないデータの転送を、相互接続を行うスイッチによって確実且つ効率的に取り扱わなくてはならない。ストレージスイッチの例が、同時係属中の（特許文献４）にある。
【特許文献１】米国特許出願第１０／０５１，３２１号“ＳＴＯＲＡＧＥ  ＳＷＩＴＣＨ  ＦＯＲ  ＳＴＯＲＡＧＥ  ＡＲＥＡ  ＮＥＴＷＯＲＫ”２００２年１月１８日提出
【特許文献２】米国特許出願第１０／０５１，３３９号“ＥＮＦＯＲＣＩＮＧ  ＱＵＡＬＩＴＹ  ＯＦ  ＳＥＲＶＩＣＥ  ＩＮ  Ａ  ＳＴＯＲＡＧＥ  ＮＥＴＷＯＲＫ”２００２年１月１８日提出
【特許文献３】米国特許出願第１０／０５１，０５３号“ＬＯＡＤ  ＢＡＬＡＮＣＩＮＧ  ＩＮ  Ａ  ＳＴＯＲＡＧＥ”２００２年１月１８日提出
【特許文献４】米国特許出願第１０／０５１，３９６号“ＶＩＲＴＵＡＬＩＺＡＴＩＯＮ  ＩＮ  Ａ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭ”２００２年１月１８日提出
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般的に、イニシエータはスイッチに結合しており、スイッチを介して一つ以上の仮想ターゲット及び物理ターゲットにアクセスする。スイッチを介して結合することに起因する問題点は、ポートでの帯域の過負荷である。ＳＡＮではデータ損失は容認されないので、仮想ターゲットと比べるとこの部分での帯域管理は必須である。
【課題を解決するための手段】
【０００６】
本発明は、大まかに言うと、データを保存しアクセスするシステムで用いる方法に関係する。このシステムには、少なくとも１つのイニシエータと、少なくとも１つのターゲットと、ポートを持つ少なくとも１つのスイッチとがある。本方法は、物理ポートで輻輳が発生しているかどうかを判断する工程と、ターゲットの各々の最小帯域の設定及び最大帯域の設定に基づいて、前記少なくとも２つのターゲットの各々の帯域使用量を制御する工程とを含む。
【０００７】
もう１つの態様では、制御する工程が、イニシエータから２つのターゲットのうち少なくとも一方への追加のコマンド群を拒否する工程を含む。
別の実施形態では、本発明は、データを保存しアクセスするシステムで用いる方法である。このシステムには、少なくとも１つのイニシエータと、少なくとも２つのターゲットと、ポートを持つ少なくとも１つのスイッチとがある。この実施形態では、本方法は、前記少なくとも２つのターゲットの各々からポートへのトラフィック帯域を監視する工程と、ターゲットごとの最小帯域及び最大帯域の設定に基づいて、どのターゲットがポートのリソース群にアクセスするべきかを判断する工程と、及び判断する工程に基づいてターゲットへの追加のコマンド群を拒否することで、前記ターゲット群へのアクセスを制御する工程とを含む。
【０００８】
もう１つの態様では、判断する工程が、前記少なくとも２つのターゲットのそれぞれのトラフィックの重み付け形式に基づいて、各ターゲットに優先権を割り当てる工程を含む。更に、重みを割り当てる工程が、２レート３カラーのマーカを用いてトラフィックをマーキングする工程を含む。
【０００９】
更にもう１つの実施形態では、本発明はデータを保存しアクセスするシステムで用いる方法である。このシステムには、少なくとも１つのイニシエータと、少なくとも１つのターゲットと、少なくとも１つの仮想論理ユニットと、少なくとも１つの物理論理ユニットと、ポートを持つ少なくとも１つのスイッチとがあり、ポートがスイッチを介して各物理論理ユニットにアクセスする。この実施形態では、本方法は、関連の物理論理ユニットからのトラフィックの結果として、前記少なくとも２つの仮想ターゲットの各々に消費される帯域を監視する工程と、仮想ターゲットから戻るトラフィックの重み付けに基づいて、どのターゲットがポートのリソース群にアクセスするべきかを判断する工程と、ターゲットの重み付けに基づいてターゲットへの追加のコマンド群を拒否することによりアクセスを前記仮想ターゲット群に限る工程とを含む。
【００１０】
もう１つの態様では、判断する工程が、仮想ターゲットごとにコンテンションカウント
を記録する工程を含む。
更にもう１つの実施形態では、本発明は、少なくとも１つのターゲットへのアクセスをもたらす少なくとも１つの物理ポートを持つストレージスイッチである。本スイッチには、各ターゲットのレコードを保存するメモリを具備し、ポートに付属した負荷分散回路と、レコードには、仮想論理ユニットの最小帯域及び最大帯域の配分が含まれており、前記少なくとも２つのターゲットに対し別個に帯域監視装置を具備し、ポートに付属した処理回路とがあり、処理回路が、各ターゲットに用いられた帯域の重み付け済みレコードを維持し、物理ポートが輻輳している場合に、レコードに基づいて少なくとも１つのターゲットへの追加のコマンド群を拒否する。
【００１１】
また更にもう１つの実施形態では、本発明はストレージネットワークである。本ストレージネットワークには、イニシエータと、少なくとも１つのターゲットとスイッチとがある。このスイッチには、イニシエータに結合された少なくとも１つのポートがあり、スイッチがターゲット群へのアクセスをもたらし、スイッチが、前記少なくとも２つのターゲットのそれぞれの帯域配分を含むレコードを持ちポートに関連付けられた少なくとも１つのプロセッサを具備している。プロセッサにはコードがあり、このコードはプロセッサに対して、前記少なくとも２つのターゲットの各々により消費される帯域を監視すること、ターゲットからポートへと戻るトラフィックの重み付けに基づいて、どのターゲットがポートのリソース群にアクセスするべきかを判断すること、ターゲットの重み付けに基づいてターゲットへの追加のコマンド群を拒否することで、前記ターゲット群へのアクセスを制御することとを指示するよう動作可能である。
【００１２】
別の態様では、本発明はストレージスイッチの帯域を監視する方法であって、このスイッチングが少なくとも１つの物理ポートを具備しており、物理ポートが、少なくとも１つのターゲットと少なくとも１つのイニシエータとを物理ポートによって結合している。本方法は、物理ポートで輻輳が発生しているかどうかを判断する工程と、各ターゲットの最小帯域の設定及び最大帯域の設定に基づいて、イニシエータとターゲットとの間で帯域使用量に重みを割り当てる工程とを含む。
【００１３】
本発明を達成するには、ハードウェアやソフトウェアを用いるか、ハードウェア及びソフトウェアを組み合わせて用いればよい。本発明に用いられるソフトウェアを保存するのは、一つ以上のプロセッサ可読のストレージ媒体であり、例えば、ハードディスクドライブ、ＣＤ‐ＲＯＭ、ＤＶＤ、光ディスク、フロッピーディスク、テープドライブ、ＲＡＭ、ＲＯＭ、他の好適なストレージデバイスなどである。代替の実施形態では、ソフトウェアの一部又はすべてを、カスタム集積回路、ゲートアレイ、ＦＰＧＡ、ＰＬＤ、専用のコンピュータなどの、専用のハードウェアに取り替えることができる。
【発明を実施するための最良の形態】
【００１４】
本発明のこれらの目的及び利点及び他の目的及び利点は、図面を併用して本発明の好適な実施形態を述べた以下の説明により更に明確になる。
図１には、一実施形態に係るストレージスイッチを持つ典型的なシステム１００が図示されている。システム１００には、サーバ１０２などの複数の起動デバイスがある。当然のことながら、使用できるサーバの数はもっと多くても少なくてもよく、実施形態群には、サーバ１０２に加えて又はサーバ１０２の代わりに任意の好適な物理的なイニシエータがあってもよい。図示してはいないものの、これらのサーバはＬＡＮに結合されていてもよい。図示のように、各サーバ１０２はストレージスイッチ１０４に接続されている。しかし、他の実施形態では、各サーバ１０２は、存在するストレージスイッチ１０４の一部にのみ接続されている場合がある。サーバ群とスイッチ群との間に形成された接続は任意のプロトコルを利用できるが、ある実施形態ではファイバチャネル又はギガビットイーサネット（ｉＳＣＳＩプロトコルに従ってパケットを運ぶ）である。他の実施形態では、イ
ンテル社（Ｉｎｔｅｌ  Ｉｎｃ．）により規定されたＩｎｆｉｎｉｂａｎｄプロトコルや、他のプロトコル又は接続を使用する場合がある。
【００１５】
実施形態によっては、一つ以上のスイッチ１０４がそれぞれ、都市内ネットワーク（ＭＡＮ）か、インターネットなどの広域通信網（ＷＡＮ）１０８に結合されている。ストレージスイッチ１０４とＷＡＮ１０８との間に形成された接続は一般に、ほとんどの実施形態でインターネットプロトコル（ＩＰ）を使用する。ＭＡＮ／ＷＡＮ１０８に直接的に接続されているものとして示されているが、他の実施形態では、スイッチ１０４とＭＡＮ／ＷＡＮ１０８との間の媒介役としてルータ（図示せず）を利用する場合がある。
【００１６】
加えて、管理局１１０それぞれが、各ストレージスイッチ１０４と、各サーバ１０２と、各ストレージデバイス１０６とに接続されている。管理局群は別個のコンピュータであるとして図示されているが、もちろん、それぞれのタイプのデバイスを管理するソフトウェアが集合的に単一のコンピュータ上にあってもよい。
【００１７】
このようなストレージスイッチ１０４は、切り換える機能に加えて、仮想化及びストレージのサービス（例えば、ミラーリング）を提供する。こういったサービスには、一般的に従来のアーキテクチャの電気器具によって提供されるサービスも含まれる。
【００１８】
加えて、本発明の実施形態に係るストレージスイッチのインテリジェンスはすべてのスイッチポートに分配される。この分配されたインテリジェンスによって、システムにスケーラビリティ及び可用性が与えられる。分配されたインテリジェンスによって、実施形態に係るスイッチはデータを「ワイヤスピード」で処理でき、これはつまり、ストレージスイッチ１０４により生じる待ち時間が、一般的なネットワークスイッチにより生じる時間より短いということである。従って、スイッチの「ワイヤスピード」は特定のポートへの接続により測定される。それに応じて、ＯＣ‐４８接続の一実施形態では、ストレージスイッチはＯＣ‐４８の速度（毎ナノ秒２．５ビット）から下がらない。ＯＣ‐４８の速度で移動する２キロバイトのパケット（１バイトごとに１０ビット）がスイッチに入るのにかかるのは、わずか８マイクロ秒である。１キロバイトのパケットの場合にかかるのはわずか４マイクロ秒である。１００バイトの最小のパケットの場合に要するのはほんの４００ナノ秒である。
【００１９】
図１に図示されているようなネットワークを含む種々のストレージエリアネットワークについての更に多くの情報が、米国特許出願第１０／０５１，３９６号“ＶＩＲＴＵＡＬＩＺＡＴＩＯＮ  ＩＮ  Ａ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭ”２００２年１月１８日提出（特許文献４）及び米国特許出願第１０／０５１，３２１号“ＳＴＯＲＡＧＥ  ＳＷＩＴＣＨ  ＦＯＲ  ＳＴＯＲＡＧＥ  ＡＲＥＡ  ＮＥＴＷＯＲＫ”２００２年１月１８日提出（特許文献１）にある。
【００２０】
「仮想化」とは一般に、あるユーザが契約した仮想ターゲット空間を一つ以上の物理ストレージターゲットデバイスの空間にマッピングすることを言う。用語「仮想の」及び「仮想ターゲット」は、契約ごとに配分されたストレージスペースが、ストレージスイッチ１０４に接続されている一つ以上の物理ストレージターゲットデバイスのどこにあってもよいという事実から来ている。この物理空間を、一つ以上の「論理ユニット」（ＬＵ）を含みうる「仮想ターゲット」としてプロビジョニングすることができ、これを本願では「仮想論理ユニット（ＶＬＵ）と呼ぶ。各仮想ターゲットは、一つ以上のＬＵ番号（ＬＵＮ）で識別される一つ以上のＬＵから成り、ＬＵＮはｉＳＣＳＩプロトコル及びＦＣプロトコルで頻繁に用いられている。各論理ユニットは一般に、一つ以上のエクステント、つまり物理デバイスにおけるストレージスペースの連続したスライスから成っている。従って、仮想ターゲットが、ストレージデバイス全体（一つのエクステント）と、単一のストレ
ージデバイス（一つ以上のエクステント）の一部と、多数のストレージデバイス（多数のエクステント）のそれぞれの一部とを占有する場合がある。物理デバイス、ＬＵ、エクステントの数、これらの正確な位置は、重要ではなく契約ユーザには見えない。
【００２１】
ストレージスペースは多数の異なる物理デバイスによってもたらされる場合があり、各仮想ターゲットは種々の実施形態で一つ以上の「プール」に属しており、本願では「ドメイン」と呼ぶことがある。ある実施形態では、同一のドメインのユーザのみがそのドメインの仮想ターゲット群を共有可能である。幾つかのドメインを要素として含むドメインのセットを形成してもよい。ドメインのセットを利用することで、多数のドメインのユーザ達を容易に管理することができ、例えば、一つの会社が５つのドメインを持っているが、サービスを停止することに決める、ドメインのセットを全体的に使用不可にするために要する操作はたった一つである。ドメインのセットの各要素は別のドメインの各要素と同じものでよい。
【００２２】
図２Ａ〜図２Ｃは、仮想ターゲット群をストレージエリアネットワークにプロビジョニングする一つの例を図示している。図２のシステムには、３つの物理デバイスである、１０６１、１０６２、１０６３があり、合計で６つのＬＵ、つまり、ＬＵ１、ＬＵ２、ＬＵ３、ＬＵ４、ＬＵ５、ＬＵ６を備えている。図２Ａでは、各物理デバイスがスイッチに結合されており、２つのイニシエータであるＸ及びＹにアクセスできるプール、即ち「Ｘ‐Ｙユーザプール」に配置されている。
【００２３】
イニシエータＸ及びイニシエータＹがそれぞれ一つの仮想ターゲットを要求する場合、ある実施形態では、図２Ｂに描写されているように、ＬＵ群をプロビジョニングして仮想ターゲットＶＴ１及び仮想ターゲットＶＴ２を形成し、ＶＴ１にはエクステントとしてＬＵ１〜３があり、ＶＴ２にはエクステントとしてＬＵ４〜６がある。ＶＴ１はサーバＸユーザのドメインに配置され及びＶＴ２はサーバＹユーザのドメインに配置されている。イニシエータＸはＶＴ１にはアクセスできるがＶＴ２にはアクセスできず、イニシエータＹはＶＴ２にはアクセスできるがＶＴ１にはアクセスできない。
【００２４】
代わりに、例えば、合計６つのＬＵを有するミラー化された仮想ターゲットＭをイニシエータＹが要求する場合は、ＶＴ１及びＶＴ２を仮想ターゲットＭの要素として作成することができる。図２Ｃに示されているように、ＶＴ１及びＶＴ２をスイッチのＮｏドメイン（物理ターゲット群がユーザ達に直接アクセスできないドメイン）に配置することができ、ＭをＹにアクセスできるようにする。Ｍの要素として、ＶＴ１とＶＴ２とは独立してアクセスできない。ＶＴ１はＬＵ１〜３（物理デバイス１０６１）から成っており、ＶＴ２はＬＵ４〜６（物理デバイス１０６２及び１０６３）から成っている。仮想ターゲットＭにデータを書き込んでほしいという要求を受信したとき、スイッチ１０４は着信データをＶＴ１（物理デバイス１０６１）とＶＴ２（物理デバイス１０６２及び／又は１０６３）の両方にルーティングし、これでデータが少なくとも２つの物理的な位置に保存される。
【００２５】
図３は、本発明の実施形態に係るストレージスイッチ１０４の機能ブロック図を図示している。ストレージスイッチ１０４などのストレージスイッチ及びその動作の詳細に関する更に多くの情報が、米国特許出願第１０／０５１，３２１号“ＳＴＯＲＡＧＥ  ＳＷＩＴＣＨ  ＦＯＲ  ＳＴＯＲＡＧＥ  ＡＲＥＡ  ＮＥＴＷＯＲＫ”２００２年１月１８日提出（特許文献１）にある。ある実施形態では、ストレージスイッチ１０４には、それぞれ複数のラインカードである３０２と、３０４と、３０６と、複数のファブリックカード３０８と、２つのシステム制御カード３１０とがあり、それぞれを以下で更に詳しく記載する。典型的なストレージスイッチが図示されているが、当然のことながら、種々の実施形態に従って非常に多くの他の実装及び構成を使用することができる。
【００２６】
システム制御カード  ２つのシステム制御カード（ＳＣＣ）３１０の各々は、ラインカード３０２、３０４、３０６のそれぞれに接続している。ある実施形態では、この接続が、当該分野で周知のＩ２Ｃ信号により形成され、ＳＣＣによりイーサネット接続を通る。ＳＣＣは出力の上昇を制御し、Ｉ２Ｃ接続により、個々のラインカード並びにファブリックカードを監視する。イーサネット接続にカード間通信を用いると、ＳＣＣは更に種々のストレージサービス、例えば、スナップショットやレプリケートを起動する。
【００２７】
加えて、ＳＣＣはデータベース３１２を維持し、データベース３１２は、ストレージスイッチの構成情報のみならず、スイッチに取り付けられたあらゆる仮想ターゲットとあらゆる物理デバイス、例えば、サーバやストレージデバイスなどの構成情報を追跡する。加えて、データベースは、使用量と、エラーと、アクセスデータとに関する情報も持っており、並びに、仮想ターゲット及びユーザの個別のドメイン及びドメインセットに関する情報を持っている。データベースのレコードを、本願では「オブジェクト（ｏｂｊｅｃｔ）」と呼ぶ場合がある。イニシエータ（例えばサーバ）とターゲット（例えばストレージデバイス）のそれぞれは、当該分野で既知のワールドワイド一意識別子（ＷＷＵＩ）を持っている。データベースはＳＣＣの中のメモリデバイスに維持されており、メモリはある実施形態ではフラッシュメモリで形成されるが、種々の実施形態では他のメモリデバイスを使用することもできる。
【００２８】
ストレージスイッチ１０４に管理局１１０が達するには、ＳＣＣ３１０を介してイーサネット接続を用いればよい。それに応じ、ＳＣＣには管理局に接続する為のイーサネットポートも追加される。管理局の管理者は、ストレージデバイス又は仮想ターゲットの付加又は取り外しを見いだすことに加え、ＳＣＣデータベース３１２に保存されているオブジェクトを事実上すべて問い合わせて更新することもできる。
【００２９】
ファブリックカード  スイッチ１０４のある実施形態では、３つのファブリックカード３０８があるが、他の実施形態では、ファブリックカードがもっと多くても少なくてもよい。各ファブリックカード３０８は、ある実施形態ではラインカード３０２、３０４、３０６の各々に結合されており、ラインカードのすべてをまとめて接続するのに役立つ。ある実施形態では、ファブリックカード３０８はどれも、すべてのラインカードが入っているときに最大のトラフィックを取り扱うことができる。各ラインカードが取り扱うこのようなトラフィック負荷は、ある実施形態では１６０Ｇｂｐｓまでであるが、他の実施形態では、取り扱う最大のトラフィック量はもっと多くても少なくてもよい。ファブリックカード３０８のうちの１つが失敗しても、残存する２つのカードにはまだ、最大限のスイッチトラフィックに十分な帯域がある。ある実施形態では、各ラインカードが２０Ｇｂｐｓのトラフィックを生成し、１０Ｇｂｐｓがイングレスで１０Ｇｂｐｓがエグレスである。しかし、通常の状況では、３つのファブリックカードすべてが同時にアクティブである。各ラインカードからは、データトラフィックが、３つのファブリックカードのうち、データを収容できるどれか一つに送られる。
【００３０】
ラインカード  ラインカードはサーバ群への接続とストレージデバイス群への接続を形成する。ある実施形態では、ストレージスイッチ１０４はラインカードを１６枚まで支持するが、他の実施形態では、サポートするラインカードはさまざまな数でよい。更に、ある実施形態では、３つの異なるタイプのラインカードが利用される。即ち、ギガビットイーサネット（ＧｉｇＥ）カード群３０２と、ファイバチャネル（ＦＣ）カード群３０４と、ＷＡＮカード群３０６とである。他の実施形態では、ラインカードのタイプはもっと多くても少なくてもよい。ＧｉｇＥカード群３０２はイーサネット接続用のものであり、ある実施形態では、ｉＳＣＳＩサーバ群又はｉＳＣＳＩストレージデバイス群のどちらか（あるいは他のイーサネットベースのデバイス群）に接続する。ＦＣカード群３０４はファ
イバチャネル接続用のものであり、ファイバチャネルプロトコル（ＦＣＰ）サーバ群又はＦＣＰストレージデバイス群のどちらかに接続する。ＷＡＮカード群３０６はＭＡＮ又はＷＡＮに接続する為のものである。
【００３１】
図４は、一実施形態に係るストレージスイッチ１０４で用いられる一般的なラインカード４００の機能ブロック図を図示する。ラインカード４００を呈示するのは単に典型的なものを示す為である。実施形態に従って他のラインカードや設計を使用することができる。この実例が示す構成要素は、あらゆるタイプのラインカード、例えば、ＧｉｇＥ３０２や、ＦＣ３０４や、ＷＡＮ３０６などに共通している構成要素である。他の実施形態では、他のタイプのラインカードを利用し、Ｉｎｆｉｎｉｂａｎｄなどの他のプロトコルを用いてデバイス群に接続することもできる。
【００３２】
ポート  ラインカード４００にはそれぞれ、複数のポート４０２がある。各ポートは、サーバ群又はストレージデバイス群のどちらかへのラインカードの接続を形成する。図示の実施形態には８つのポートが示されているが、他の実施形態では用いるポートはもっと多くても少なくてもよい。例えば、ある実施形態では、各ＧｉｇＥカードが１Ｇｂのイーサネットポートを８つまでサポート可能で、各ＦＣカードが１ＧｂのＦＣポートを８つまで又は２ＧｂのＦＣポートを４つまでサポート可能で、各ＷＡＮカードがＯＣ‐４８ポートを４つまで又はＯＣ‐１９２のポートを２つまでサポート可能である。従って、ある実施形態では、最大限の接続はスイッチ１０４ごとに１２８ポートである。各ラインカードのポートはある実施形態では全二重であり、サーバ又は他のクライアントのどちらか、及び／又は、ストレージデバイス又はサブシステムのどちらかに接続する。
【００３３】
加えて、各ポート４０２には関連のメモリ４０３がある。１つのポートに接続されたメモリデバイスは１つだけ示されているが、もちろん、各ポートが独自のメモリデバイスを有していたり、ポートがすべて単一のメモリデバイスに結合されていたりしてもよい。１つのポートに結合されたメモリデバイスが本願では１つだけ示されているのは、実例を分かりやすいものにする為である。
【００３４】
ストレージプロセッサユニット  ある実施形態では、各ポートがストレージプロセッサユニット（ＳＰＵ）４０１に関連付けられている。ある実施形態では、ＳＰＵがデータトラフィックを急速に処理し、ワイヤスピードの動作を可能にする。ある実施形態では、各ＳＰＵにはエレメントが幾つかある。即ち、パケットのアグリゲーション及び分類用エンジン（ＰＡＣＥ）４０４と、パケット処理部（ＰＰＵ）４０６と、ＳＲＡＭ４０５と、ＣＡＭ４０７とである。やはり、他の実施形態では、使用するエレメントがもっと多くても少なくてもよいし、同一の機能性が得られるようエレメントを組み合わせてもよい。例として、ＳＰＵにＰＡＣＥ及びＰＰＵはあるが、メモリエレメント群はＳＰＵ同士で共有している、という実施形態がある。
【００３５】
ＰＡＣＥ  各ポートはパケットのアグリゲーション及び分類用エンジン（ＰＡＣＥ）４０４に結合されている。図示されているように、ＰＡＣＥ４０４は２つのポートを、帯域が２倍の単一のデータチャネルにアグリゲートする。例として、ＰＡＣＥ４０４は１Ｇｂのポート２つを単一の２Ｇｂのデータチャネルにアグリゲートする。ＰＡＣＥは受信したパケットをそれぞれ制御パケット又はデータパケットに分類できる。制御パケットは処理に向けて、ブリッジ４１６によってＣＰＵ４１４に送られる。データパケット群は、ローカルヘッダが付加された状態で、以下に述べるパケット処理部（ＰＰＵ）４０６に送られる。ある実施形態では、ローカルヘッダは１６バイトであり、データ「セル」が６４バイト（１６バイトがヘッダで４８バイトがペイロード）という結果になる。ローカルヘッダは情報を運ぶ為に使用され、内部でスイッチ１０４に用いられる。ローカルヘッダは、パケットがスイッチを出るよりも前に移動させられる。それに応じて、「セル」を、スイッ
チで局所的に用いられる移送の単位にすることができ、「セル」にはローカルヘッダと元のパケットがある（実施形態によっては、元のＴＣＰ／ＩＰヘッダも元のパケットからストリップされている）。それでもなお、本発明の実施形態のすべてがローカルヘッダを作成する又は外部のパケットとは違う「内部のパケット（ｉｎｔｅｒｎａｌ  ｐａｃｋｅｔ）」（セル）を持つというわけではない。それに応じて、用語「パケット」は、本願で用いられているように、「内部の」パケット又は「外部の」パケットのどちらも指し得る。
【００３６】
分類機能は、従来のシステムのストアアンドフォワードモデルを用いずに、スイッチがストレージ仮想化機能及びプロトコル変換機能をワイヤスピードで行えるよう助ける。ＰＰＵ４０６１等のＰＰＵへの経路はＰＡＣＥのそれぞれが専用の経路を持っているが、ＣＰＵ４１４への経路は図示の実施形態の４つのＰＡＣＥすべてに共有の経路であり、ある実施形態では、ＣＰＵ４１４への経路は１０４ＭHz／３２（３．２Ｇｂｐｓ）ビットのデータパスである。
【００３７】
パケット処理部（ＰＰＵ）  ＰＰＵ４０６１などの各ＰＰＵは、仮想化及びプロトコル変換をオンザフライで行う、つまりそういった処理の為にセルをバッファすることはない。ＰＰＵは更に、以下に記載する、スイッチをベースにした他のストレージサービス機能も実施する。ＰＰＵは、ある実施形態では、セルをＯＣ‐４８の速度で又は２．５Ｇｂｐｓでイングレスの方向にもエグレスの方向にも移すことができ、他の実施形態では、セルをＯＣ‐１９２の速度で又は１０Ｇｂｐｓで移せる。ＰＰＵには、ある実施形態では、イングレスＰＰＵ４０６１ｉとエグレスＰＰＵ４０６１ｅとがあり、この両方が同時に動く。イングレスＰＰＵ４０６１ｉはＰＡＣＥ４０４から着信データを受信しデータをトラフィックマネージャ４０８ｉに送り、エグレスＰＰＵ４０６１ｅはデータをトラフィックマネージャ４０８ｅから受信しデータをＰＡＣＥ４０４１に送る。イングレスＰＰＵ４０６１ｉとエグレスＰＰＵ４０６１ｅとを持つＰＰＵ４０６１は図４では１つのみ示されているが、もちろん、ある実施形態ではＰＰＵ４０６のそれぞれにイングレスＰＰＵとエグレスＰＰＵとがあり、イングレスＰＰＵとエグレスＰＰＵとを備えたＰＰＵが図４では１つのみ示されているのは、実例を分かりやすいものにする為である。
【００３８】
多数のストレージ接続（例えば、サーバから仮想ターゲット）を各ポートで同時に確立できる。それでもなお、各接続は仮想ターゲットに一意でありＴＣＰ制御ブロックインデックス（ｉＳＣＳＩ接続の場合）とポート番号とにより一意に識別される。接続が確立されると、ラインカード４００のＣＰＵ４１４は、その接続の仮想ターゲット記述子（ＶＴＤ）を送ることで、アクティブな仮想ターゲットをＰＰＵ４０６に通知する。ＶＴＤには、接続及び仮想ターゲットに関するあらゆる関連情報が含まれ、その情報は、データに対する動作、例えば、仮想化や、変換や、種々のストレージサービスなどをＰＰＵが正しく行う為に必要な情報である。ＶＴＤは、ＳＣＣデータベースのオブジェクトから得られ、通常は情報のサブセットを包含しており、この情報はＳＣＣデータベースの関連オブジェクトに保存されている。
【００３９】
本発明の実施形態では同様に、物理ターゲット記述子（ＰＴＤ）も利用する。ＰＴＤは、実際の物理デバイス群や、そのそれぞれのＬＵや、そのそれぞれのエクステント（ＬＵの隣接している部分又は全体）などを記述するものであり、ＶＴＤの情報と同様な情報を持っている。更に、ＶＴＤと同じように、ＰＴＤもＳＣＣデータベースのオブジェクトから得られる。
【００４０】
ＶＴＤとＰＴＤとを保存しこれらに迅速にアクセスする為に、ある実施形態では、ＰＰＵ４０６１などのＰＰＵがＳＲＡＭ４０５１とＣＡＭ４０７１とに接続されている。ＶＴＤ及びＰＴＤのデータベースをＳＲＡＭ４０５１が保存できる。更に、各ＶＴＤに迅速にアクセスする為にＰＰＵのＣＡＭ４０７１にはＶＴＤ識別子（ＶＴＤ  ＩＤ）群又はアド
レスのリスティングが維持されており、同様にＰＴＤ識別子（ＰＴＤ  ＩＤ）群のリスティングも維持されている。ＶＴＤ  ＩＤ群は、ＴＣＰ制御ブロックインデックス及びＬＵＮを用いて表示される（マッピングされる）。ＰＴＤ  ＩＤ群は、ＶＴＤ  ＩＤを用いて表示されている。加えて、ＩＰルーティングサービスの為に、ＣＡＭ４０７１にはルーティングテーブルがあり、このルーティングテーブルは、ルートが追加又は移動されたときにＣＰＵにより更新される。
【００４１】
種々の実施形態では、図示のように各ＰＰＵが独自のＣＡＭ及びＳＲＡＭのデバイスと接続されたり、ＰＰＵが単一のＣＡＭ及び／又はＳＲＡＭに接続されたりする（図示せず）。
【００４２】
ＰＰＵへの未処理の要求（例えば、読み書き）ごとに、要求のステータスを追跡するべくＰＰＵのＳＲＡＭ４０７にタスク制御ブロックが確立される。ストレージスイッチがイングレスＰＰＵで受信した要求のステータスを追跡するイングレスタスク制御ブロック（ＩＴＣＢ）と、ストレージスイッチからエグレスＰＰＵで送り出された要求のステータスを追跡するエグレスタスク制御ブロック（ＥＴＣＢ）とがある。仮想ターゲットの接続ごとに、並行した要求がたくさんあり、よってタスク制御ブロックも多数ということもある。タスク制御ブロックは、要求が開始した際に配分され、要求が完了した際に解放される。
【００４３】
トラフィックマネージャ  ラインカード４００にはそれぞれ２つのトラフィックマネージャ（ＴＭ）４０８がある。１つのＴＭ４０８ｉはイングレストラフィック用であり及び１つのＴＭ４０８ｅはエグレストラフィック用である。イングレスＴＭは、ある実施形態では、４つのＳＰＵすべてからセルを、６４バイトのデータセルの形で受信する。このような実施形態では、データセルごとに１６バイトのローカルヘッダと４８バイトのペイロードとがある。ヘッダにはＦｌｏｗＩＤが含まれており、ＦｌｏｗＩＤはＴＭにセルの宛先ポートを伝える。実施形態によっては、セルをＴＭに回送するに先立ってＳＰＵが更にセルにＴＭのヘッダを取り付けることもある。実施形態によってはＴＭ又はＳＰＵのどちらかが、ファブリックカードを介して送信する為にセルを更に小さいセルに分割してもよい。
【００４４】
イングレスＴＭは、ある実施形態では１２８ビット１０４ＭHzのインタフェース４１０を介してデータセルをファブリックカードに送る。他の実施形態では、１２５ＭHz又は他の速度で動作する。エグレスＴＭは、ファブリックカードからデータセルを受信して４つのＳＰＵに送り届ける。
【００４５】
イングレスＴＭにもエグレスＴＭにも、送出するセルを待ち行列に入れる為の大型のバッファ４１２がある。イングレスＴＭ及びエグレスＴＭのどちらのバッファ４１２も６４ＭＢであり、スイッチでの内部のフロー制御の為に多数のパケットを待ち行列に入れることができる。セルは、キャッシュされるかバッファされるスイッチの実装に見られるようにはバッファされない。こういったシステムに見られるような移送のレベルの承認はない。セルは、スイッチでフロー制御を維持する為に一時的にバッファされるだけである。セルは自身の元の順番を維持し、ＴＭでセルを高水準処理する段階はない。ＳＰＵは普通、ファブリックカードの発信フローが着信フローと同じくらいの速さであるくらい迅速にセルをイングレスＴＭに送る。それ故に、セルがエグレスＴＭに移るのは迅速である。一方、発信ポートが多数のイングレスラインカードに妨害されたり送り込まれたりするので、エグレスＴＭがバックアップされることがある。このような場合には、エグレスＳＰＵに操作を速くするよう通知するべく、発信セルのヘッダにフラグが設定される。エグレスＴＭも、ストレージアクセスのサービス品質を供給する際に用いられるフローの制御機能を作動させるようにという要求をイングレスＳＰＵに送る。注目されるのは、インターネッ
ト上での通信トラフィックとは違い、ストレージトラフィックに関しては、パケット又はセルを取り落とすことは容認できないことである。従って、バッファのセルの量が指定のしきい値を超えた途端、ＳＰＵは自身のフローの制御機能を作動させ、着信トラフィックを減速させてバッファオーバーフローを回避することができる。
【００４６】
ファブリック接続  ファブリック接続４１０は、ＴＭの２５６ビットの並列信号群（イングレスとエグレスがそれぞれ１２８ビット）を、１６０Ｇｂｐｓのバックプレーンに対し１６ビットのシリアルインタフェース（イングレス８ビット及びエグレス８ビット）にコンバートする。従って、バックプレーンはピンのうち１６分の１で動きしかも１６倍の速さで動いている。このコンバートによって、ピンと電線とを何千箇所も接続することなく、可用性の高いバックプレーンを妥当なコストで構築することが可能になる。更に、ある実施形態ではファブリックカードが３つあるので、ある実施形態ではラインカードごとに高速のコネクタが３つあり、コネクタは各自、８ビットの信号を３つのファブリックカードの一つ一つに接続する。もちろん、他の実施形態では、３つのファブリック接続４１０を必要としないことがある。
【００４７】
ＣＰＵ  どのラインカードにもプロセッサ（ＣＰＵ）６１４があり、これはある実施形態ではＰｏｗｅｒＰＣ７５０Ｃｘｅである。ある実施形態では、ＣＰＵ４１４は各ＰＡＣＥに３．２Ｇｂのバスで接続されており、バスコントローラ４１５とブリッジ４１６とを介している。加えて、ＣＰＵ４１４はＰＰＵにもＣＡＭにもＴＭにも接続されているが、実施形態によってはこの接続は低速になり４０Ｍｂｐｓである。３．２Ｇｂの経路でも４０Ｍｂの経路でも、ＣＰＵはラインカードのほとんどのデバイスと通信できるだけでなく、ラインカードのどのデバイスの内部レジスタ群の読み書きも、マイクロコードのダウンロードも、制御パケットの送受信もできる。
【００４８】
各ラインカードのＣＰＵは、出力の上昇時のすべてのチップの初期化と、マイクロコードのＳＰＵへのそしてマイクロコードを要する各ポートへのダウンロードとを担っている。ラインカードが実行状態に入り次第、ＣＰＵは制御トラフィックを処理する。仮想ターゲットの接続の確立に必要な情報の為に、ＣＰＵはＳＣＣに情報を要求し、そして次にＳＣＣはＳＣＣデータベースの適切なオブジェクトから情報を入手する。
【００４９】
ラインカードのポートの区別  各タイプのラインカードのポート、例えば、ＧｉｇＥやＦＣやＷＡＮのラインカードのポートは、それぞれ別のものであり、ある実施形態では各ラインカードがをサポートするポートのタイプは１つである。他の実施形態では、他のラインカードのポートを、Ｉｎｆｉｎｉｂａｎｄなどの他のプロトコルをサポートするよう設計することも可能である。
【００５０】
ＧｉｇＥポート  ギガビットイーサネットポートがｉＳＣＳＩサーバとストレージデバイスとに接続されている。ＧｉｇＥポートはあらゆる種類のイーサネットトラフィックを支持するものの、本発明の一実施形態に係るワイヤスピードでストレージスイッチ１０４に一般に処理される唯一のネットワークトラフィックは、ＴＣＰ／ＩＰパケットの内部のｉＳＣＳＩのパケットデータユニット（ＰＤＵ）である。それでもなお、他の実施形態では、イーサネット接続に支持されている他のプロトコル（ネットワークファイルシステム（ＮＦＳ）など）に従うパケットが、ＧｉｇＥポートで受信されＳＰＵ及び／又はＣＰＵに処理される場合がある。
【００５１】
ＧｉｇＥポートは仮想ターゲット又はｉＳＣＳＩデバイスのＴＣＰ／ＩＰセグメント群を送受信する。仮想ターゲットのＴＣＰ接続の確立には、ラインカードのＣＰＵ４１４とＳＣＣ３１０の両方が関与する。ＴＣＰパケットが受信され、最初のハンドシェイクが済んだ後で、ＴＣＰ制御ブロックが作成されＧｉｇＥポートメモリ４０３に保存される。接
続を認証し仮想ターゲットの構成を理解する目的で、ＶＴＤもＳＣＣデータベースのオブジェクトから検索されＣＰＵのＳＤＲＡＭ４０５に保存される。ＴＣＰ制御ブロックは、パケットが属している特定のＴＣＰセッション又はｉＳＣＳＩ接続を識別し、ある実施形態では、ＴＣＰセグメント番号と、状態と、ウィンドウサイズとを有しており、場合によっては、接続についての他の情報も有している。加えて、ＴＣＰ制御ブロックはインデックスによって識別され、このインデックスは本願では「ＴＣＰ制御ブロックインデックス」と呼ぶ。接続の為のＶＴＤが作成されＳＰＵのＳＲＡＭ４０５に保存される。ＣＰＵは、自身のＳＤＲＡＭに保存されておりもともとはＳＣＣデータベースから得たＶＴＤ情報を検索することで、ＶＴＤを作成する。ＶＴＤを迅速に参照する為に、ＳＰＵのＣＡＭ４０７のＶＴＤ  ＩＤ群のリストにＶＴＤ  ＩＤが確立される。ＶＴＤ  ＩＤはＴＣＰ制御ブロックインデックスに付属しておりこれにより表示される。
【００５２】
ポートはｉＳＣＳＩのＰＤＵを受信すると、実質的には接続の終端点として働くが、スイッチがターゲットとの新しい接続を起動する。イングレス側でパケットを受信した後、ポートはｉＳＣＳＩのＰＤＵを、特殊なＴＣＰ接続を識別するＴＣＰ制御ブロックインデックスと共にＰＡＣＥへと送り届ける。ＴＣＰパケットでないパケット又はｉＳＣＳＩのＰＤＵを包含していないＴＣＰパケットについては、ポートは接続の終端点としては作動せずパケットを送受信する。一般的に、ポート４０２が通信するのは、ＴＣＰ制御ブロックインデックスを用いることによりｉＳＣＳＩのパケットが送受信されるＰＡＣＥ４０４である。あるパケットのＴＣＰ制御ブロックインデックスが−１のときは、そのパケットはｉＳＣＳＩのパケットではないと識別される。
【００５３】
ＦＣポート  ＦＣポートがサーバとＦＣストレージデバイスとに接続されている。ＦＣポートは、接続しているサーバ群に対するファイバチャネルストレージサブシステム（即ち、ターゲット）として現れる、つまり、仮想ターゲットデバイス群の大きいプールを呈示し、このプールによりイニシエータ（例えばサーバ）は、当該分野では分かっているように、プロセスログイン（ＰＬＯＧＩ又はＰＲＬＩ）を行うことができ、接続が確立される。ＦＣポートはＧＩＤ拡張リンクサービス（ＥＬＳ）を受け入れ、そのイニシエータ（例えばサーバ）がアクセスするのに使用可能なターゲットデバイス群のリストを返す。
【００５４】
ファイバチャネルのストレージデバイスに接続されていると、ポートは、ファイバチャネルのＦ‐ポートとして現れる、つまり、当該分野で既知の通り、ストレージデバイスからファブリックログインを受け入れ、ＧＩＤ要求を受け入れ処理することによりネームサービス機能を提供する。言い換えると、ポートはストレージデバイスに対するイニシエータとして現れる。
［００７３］  加えて、ＦＣポートは別の既存のＳＡＮネットワークへの接続も可能で、その場合には、他のネットワークに対し多くのＬＵを備えたターゲットとして現れる。
【００５５】
ポートを初期化する際、ラインカードのＣＰＵは、ファブリックログインとプロセスログインとＧＩＤとを送る工程も、同一のものを受信する工程も、両方経ることができる。ＳＣＣは、ＦＣのＥＬＳの要求と応答とをｉＳＮＳの要求と応答とにコンバートするアプリケーションをサポートする。この結果、ＳＣＣの同一のデータベースはＦＣイニシエータ（例えばサーバ）及びターゲット（例えばストレージデバイス）の両方について、ｉＳＣＳＩイニシエータ及びターゲットであるかのように、それぞれの経過を追う。
【００５６】
ＦＣ接続を確立するとき、ＧｉｇＥポートの場合とは違って、ＦＣポートがＴＣＰ制御ブロック又はその同等物を作成する必要はない。必要な情報はすべてＦＣヘッダから入手できる。だが、ＶＴＤ（フレームの宛先を識別するＤ＿ＩＤで表示される）は依然として、ＧｉｇＥポートに関して記載された方法と同様の方法で確立される必要がある。
【００５７】
ＦＣポートを１Ｇｂ用に構成してもよいし２Ｇｂ用に構成してもよい。１Ｇｂのポートの場合は、図４に図示のように２つのポートが１つのＰＡＣＥに接続される。しかし、ＦＣポートを２Ｇｂのポートとして構成する実施形態では、ポートトラフィックと、ＳＰＵに収容されるトラフィックとが、ＳＰＵの輻輳を回避すべく釣り合っていなくてはならない。ポートは、ある実施形態ではＰＯＳ／ＰＨＹインタフェースによりＰＡＣＥに接続されている。ポートをそれぞれ別個に構成することができる、即ち、一方のＰＡＣＥには１Ｇｂのポートを２つにし、他方のＰＡＣＥには２Ｇｂのポートを一つだけにしてもよい。
【００５８】
ＷＡＮポート  ＷＡＮラインカードを備えている実施形態の場合、ある実施形態ではＷＡＮラインカードがＯＣ‐４８接続とＯＣ‐１９２接続とをサポートしている。従って、ＷＡＮポートには、ＯＣ‐４８とＯＣ‐１９２という２つのタイプがある。ＯＣ‐４８については、ＳＰＵごとにポートが１つある。ＰＡＣＥにはアグリゲーションの機能はないものの、分類機能がある。ＷＡＮポートはＳＯＮＥＴに接続され、ＧｉｇＥポートと同じように、ＩＣＭＰ、ＲＩＰ、ＢＰＧ、ＩＰ、ＴＣＰなどのネットワークパケットを送受信するなどして働く。ＷＡＮポートは、ある実施形態では、ハードウェアコンポーネント群の追加を要するＶＰＮ及びＩＰＳｅｃによりネットワークセキュリティをサポートする。
【００５９】
ＯＣ‐１９２のワイヤスピードは速いので、ＯＣ‐１９２をサポートする実施形態では、速いＳＰＵが必要になる。
スイッチをベースにしたストレージの動作
当業者はｉＳＣＳＩ及びＦＣプロトコル群について一般知識があるであろう。しかし、ｉＳＣＳＩについての更に多くの情報が、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）のインターネットドラフトであり作業が進行中の「ｄｒａｆｔ‐ｉｅｔｆ‐ｉｐｓ‐ｉＳＣＳＩ‐０９．ｔｘｔ」（２００１年１１月１９日発行）を参照して得られ、このドラフトは参照により本願に組み込まれている。ファイバチャネル（ＦＣ）についての更に多くの情報が、１９９５年１２月４日発行の「Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ  ‐ｄｐＡＮＳ  Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  ＳＣＳＩ」Ｒｅｖ．０１２（米国標準規格に提案されたドラフト）を参照して得られ、このドラフトは参照により本願に組み込まれている。加えて、ｉＳＣＳＩ及びＦＣプロトコル群の両方が、米国特許出願第１０／０５１，３２１号“ＳＴＯＲＡＧＥ  ＳＷＩＴＣＨ  ＦＯＲ  ＳＴＯＲＡＧＥ  ＡＲＥＡ  ＮＥＴＷＯＲＫ”２００２年１月１８日提出（特許文献１）に記載されている。
仮想化
種々のパケットタイプについての典型的なイングレス処理及びエグレス処理は、同時係属中の出願番号１０／０５１，３２１号、１０／０５１，３３９号、１０／０５１，０５３号に記載されている。当然のことながら、種々の実施形態に従って種々のパケットタイプには非常に多くの処理を適用できる。
【００６０】
ある実施形態では、着信パケットがＰＰＵによりデータとして又は制御トラフィックとして分類された後で、ＰＰＵは、データをバッファすることなく、データパケットの仮想化を行うことができる。パケットを受信するたびに、ＰＰＵはパケットのタイプ（例えば、コマンド、Ｒ２Ｔ／ＸＦＥＲ＿ＲＤＹ、データ書き込み、データ読み込み、応答、タスク管理／中断）を判断し、イングレス（パケットがスイッチに入る）のアルゴリズム又はエグレス（パケットがスイッチを出る）のアルゴリズムのどちらかを行って仮想ターゲットを物理ターゲットに又は物理ターゲットを仮想ターゲットに変換する。従って、仮想化機能はイングレスポート及びエグレスポートに分配される。ワイヤスピードでの処理の可能性を更に高める為に、仮想記述子をＣＡＭと共に用いて、アクセスの位置に対する要求の位置をマッピングする。加えて、場合によってはパケットごとに特別に配慮する。例として、パケットが向かう仮想ターゲットを、幾つかの隣接していないエクステントに間隔を置いて配置したり、ミラー化したり、その両方をしたりする。
コマンドパケット（イングレス）
仮想ターゲットと転送のやり取りをするタスクを起動するには、ｉＳＣＳＩのＰＤＵのｉＳＣＳＩイニシエータ又はＦＣＰのＩＵのＦＣイニシエータがＳＣＳＩのコマンドを送る。このようなパケットを（分類の後で）ＰＰＵで受信したら、次にＰＰＵのＣＡＭをチェックして有効なＶＴＤ  ＩＤがあるかを判断し、この際に、ｉＳＣＳＩイニシエータの場合はＴＣＰ制御ブロックインデックスと論理ユニット番号（ＬＵＮ）とを用い、ＦＣイニシエータの場合はＳ＿ＩＤ（フレームのソースの識別）とＬＵＮとを用いる。それぞれの場合のＬＵＮは、それぞれｉＳＣＳＩのＰＤＵ又はＦＣＰのＩＵから探し出される。探し出したＶＴＤ  ＩＤが有効でない場合は、応答パケットはイニシエータに送り返される。探し出したＶＴＤが有効な場合は、工程５０８のように、無効なパラメータに対して検査をする。無効なパラメータがある場合は、応答パケットがｉＳＣＳＩイニシエータ又はＦＣイニシエータに送り返される。
【００６１】
イングレスタスク制御ブロック（ＩＴＣＢ）と共にタスクインデックスが配分される。タスクインデックスはＩＴＣＢを指す即ち識別する。ＩＴＣＢはＦｌｏｗＩＤ（ＶＴＤから得たもの）と、ＶＴＤ  ＩＤと、コマンドシーケンス番号即ちＣｍｄＳＮ（ｉＳＣＳＩのパケットそのものからのもの）とを保存し、加えてイニシエータ（発信側）の識別（例えば、ｉＳＣＳＩのＰＤＵで送られたｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇ又はＦＣＰフレームヘッダのＯＸ＿ＩＤ）も保存する。ＯＸ＿ＩＤはエクスチェンジの発信側（イニシエータ）の識別である。ＩＴＣＢはＰＰＵのＳＲＡＭに保存される。もちろん、進行中のコマンドはいつでもたくさんありうるので、ＰＰＵは特定の時間に多数のＩＴＣＢを保存する場合がある。どのＩＴＣＢも、そのＩＴＣＢのそれぞれのタスクインデックスに参照される。
【００６２】
ＶＴＤは、特定の仮想ターゲットに対する未処理のコマンドの数を追跡するので、新しいＩＴＣＢが確立されると、未処理のコマンドの数をインクリメントする。実施形態によっては、ＶＴＤが、特定の仮想ターゲットのどれか１つに対する未処理の恐れのあるコマンドの最大数を確立する。ＦｌｏｗＩＤも、ＶＴＤ  ＩＤも、タスクインデックスもローカルヘッダへとコピーされる。ＦｌｏｗＩＤはトラフィックマネージャに宛先ラインカードと宛先ポートとを伝える。その後、タスクインデックスはエグレスポートにより返され、パケットの特定のタスクが識別される。最後に、パケットはトラフィックマネージャに送られ次にルーティング用ファブリックに送られ、これにより最終的にエグレスＰＰＵに達する。
コマンドパケット（エグレス）
スイッチファブリックを通過したコマンドＰＤＵ又はＩＵはその後、エグレスポート用のＰＰＵに到着する。ＰＰＵは、パケットが向けられている物理デバイス（単数又は複数）を識別しようとする。識別する為に、ローカルヘッダからのＶＴＤ  ＩＤを用い、ＰＰＵのＣＡＭからＰＴＤ  ＩＤ（物理ターゲット記述識別子）を探索する。ＶＴＤ  ＩＤは、特定のエグレスＰＰＵに関連付けられている特定のＰＴＤ  ＩＤに付属しておりこれを表示する。ＰＴＤは、ＶＴＤと同じように、ＰＰＵのＳＲＡＭに保存され、ＶＴＤにある情報と同様な情報も包含している。探索がうまくいかなかった場合は、このパケットはＣＰＵにより直接的に送られたコマンドパケットでありＰＰＵは追加の処理を要求していないものとし、ローカルヘッダのＦｌｏｗＩＤに基づいてＰＰＵがパケットを正規のエグレスポートに渡す。探索がうまくいった場合は、ＰＴＤ  ＩＤは、仮想ターゲットがマッピングされた物理ターゲット（エクステントも含む）を識別し、この物理ターゲットは、現在そのパケットを処理している特定のエグレスラインカードと通信している。
【００６３】
ＰＰＵは次に、エグレスタスク制御ブロック（ＥＴＣＢ）と共にタスクインデックスを配分する。ある実施形態では、エグレスに用いられるタスクインデックスはイングレスに用いられるタスクインデックスと同一である。タスクインデックスはＥＴＣＢも識別する
。加えて、ＥＴＣＢはコマンドに必要な他の制御情報すべてを保存し、この情報の中にはｉＳＣＳＩのＰＤＵのＣｍｄＳＮやＦＣＰのＩＵのエクスチェンジシーケンスなどがある。
【００６４】
ＰＴＤの内容を用いて、ＰＰＵは仮想ターゲットからのＳＣＳＩのブロックアドレスを物理デバイスのブロックアドレスへとコンバートする。このコンバートは、仮想ターゲットのブロックアドレスをエクステントの最初のブロックオフセットに付加することでなされる。次に、ＰＰＵは正規のｉＳＣＳＩのＣｍｄＳＮ又はＦＣＰシーケンスＩＤを生成して、ｉＳＣＳＩのＰＤＵ又はＦＣＰフレームヘッダに配置する。ＰＰＵは更に、必要ならばＦＣＰフレームヘッダを構築する（実施形態によっては、イングレスＰＰＵがＦＣＰヘッダから必要な情報を読み込んだ後に、イングレスＰＰＵはその情報を移動させるが、他の実施形態ではその情報をそのままにしておき、この工程では必要なフィールドを更新するか変えるだけである）か、ｉＳＣＳＩのターゲットに送られているパケットについては、ＴＣＰ制御ブロックインデックスをＰＴＤからローカルヘッダへとコピーする。加えて、ＰＰＵは、ｉＳＣＳＩ又はＦＣＰヘッダに必要なあらゆるフラグ又は他の変数を供給する。処理済のｉＳＣＳＩのＰＤＵ又はＦＣＰフレームは次に、ＰＡＣＥに送られ、そして次にローカルヘッダをストリップし、パケットを適切なポートに渡す。
Ｒ２Ｔ又はＸＦＥＲ＿ＲＤＹ（イングレス）
前述のようにコマンドがターゲットのストレージデバイスに送られた後で、そのコマンドが書き込みコマンドの場合は、あるストレージデバイスがデータ書き込みを受け入れる準備ができているときにそのストレージデバイスからＲ２Ｔ  ＰＤＵ又はＸＦＥＲ＿ＲＤＹ  ＩＵを受信する。ＰＰＵは、パケットの内部のｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇ又はＯＸ＿ＩＤを用いて、対応するＥＴＣＢを識別する。ｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇ又はＯＸ＿ＩＤが無効なのでＰＰＵが有効なＥＴＣＢを識別できない場合、パケットは廃棄される。そうでない場合、ＥＴＣＢを識別し次第、ＰＰＵがＥＴＣＢからイングレスのタスクインデックス（エグレスのタスクインデックスと異なる場合）とＶＴＤ
ＩＤとを検索する。ＰＰＵは更にＰＴＤからＦｌｏｗＩＤを検索し、ＦｌｏｗＩＤもＥＴＣＢでＰＴＤ  ＩＤにより識別される。ＦｌｏｗＩＤはトラフィックマネージャに元のイニシエータ（イングレス）ポートのラインカードを示す。ＦｌｏｗＩＤと、ＶＴＤ  ＩＤと、タスクインデックスとがパケットのローカルヘッダへとコピーされる。最後に、パケットはトラフィックマネージャ及びスイッチファブリックに送られる。
Ｒ２Ｔ又はＸＦＥＲ＿ＲＤＹ（エグレス）
スイッチファブリックから出現したＲ２Ｔ又はＸＦＥＲ＿ＲＤＹのパケットはその後、ＰＰＵに受信され、イニシエータ（特定のタスク用の元のコマンドを起動したデバイス）に戻されるところである。タスクインデックスはそのＰＰＵの為に、元のｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇとＶＴＤ  ＩＤとが得られるＩＴＣＢを識別する。Ｒ２Ｔ／ＸＦＥＲ＿ＲＤＹの所望のデータ転送長さのフィールド又はＢＵＲＳＴ＿ＬＥＮのフィールドはＩＴＣＢに保存される。ローカルヘッダはＦＣＰのＤ＿ＩＤ又はＴＣＰ接続の為のＴＣＰ制御ブロックインデックスにより更新される。ここで留意すべきは、元のパケットからの保存されているＳ＿ＩＤが、ＩＴＣＢに保存されており、Ｄ＿ＩＤになることである。必要ならば、ＦＣＰフレームヘッダが構築される又はそのフィールドが更新される。ＦｌｏｗＩＤの代わりに宛先ポート番号がローカルヘッダで指定され、ｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇと共にＳＣＳＩのＰＤＵに配置される、又はＦＣ接続の場合には、ＲＸ＿ＩＤとＯＸ＿ＩＤとがＦＣＰフレームに配置される。ＲＸ＿ＩＤのフィールドはエクスチェンジの応答側（ターゲット）を識別するものである。ＰＰＵには更に、ＰＤＵ又はＦＣＰヘッダに配置する必要があるその他のフラグや変数も配置される。パケットはＰＡＣＥに回送され、ＰＡＣＥはローカルヘッダからの発信ポートを識別する。その後でローカルヘッダはストリップされ、送信の為に正規のポートに回送される。
【００６５】
コマンドが二つ以上のエクステントに分かれる場合、例えば、コマンドが１つのエクス
テントで始まり別のエクステントで終わる場合には、ＰＰＵは、イニシエータからのデータ転送を確実に連続させるよう、第１のエクステントへのデータ転送が完了するまで、第２のエクステントのＲ２Ｔ又はＸＦＥＲ＿ＲＤＹを保持している必要がある。加えて、第１のエクステントに転送されたデータの量を付加して、第２のエクステントのＲ２Ｔ又はＸＦＥＲ＿ＲＤＹのデータオフセットを修正する必要もある。
データ書き込みパケット（イングレス）
Ｒ２Ｔ又はＸＦＥＲ＿ＲＤＹのパケットを受信したイニシエータはその後、データ書き込み用パケットを返す。イニシエータからデータ書き込み用のｉＳＣＳＩのＰＤＵ又はＦＣのＩＵを受信したら、パケットが属しているＩＴＣＢが識別される必要がある。通常は、ＩＴＣＢはＲＸ＿ＩＤ又はｔａｒｇｅｔ＿ｔａｓｋ＿ｔａｇを用いて識別でき、ｔａｒｇｅｔ＿ｔａｓｋ＿ｔａｇは実施形態によってはタスクインデックスと同一である。ＳＰＵは更に、受信したパケットが正しい順序であることを識別する。しかし、状況次第で、イニシエータは請求されていないデータを転送する。このデータは、Ｒ２Ｔ又はＸＦＥＲ＿ＲＤＹを受信する前に送られたデータである。このような場合には、ＰＰＵは、特定の仮想ターゲットの未処理のタスクを探索することによりＩＴＣＢを探し出す必要がある。しかしＩＴＣＢを探し出せなかった場合、パケットは廃棄される。ＩＴＣＢを探し出せた場合は、転送されるデータの総量がＩＴＣＢで更新される。ＦｌｏｗＩＤとタスクインデックスとがパケットのローカルヘッダに付加される。その後でパケットはトラフィックマネージャに回送され最終的にスイッチファブリックに回送される。
データ書き込みパケット（エグレス）
スイッチファブリックからデータ書き込み用パケットを受信（トラフィックマネージャによって）したとき、そのパケットのＥＴＣＢを識別する必要がある。一般的に、ＥＴＣＢはローカルヘッダのタスクインデックスを用いて識別できる。ＥＴＣＢが探し出され次第、ＥＴＣＢの内部の情報を用いて、ＰＰＵは正規のｉＳＣＳＩのＤａｔａＳＮ又はＦＣＰシーケンスＩＤを、その他のフラグや変数、例えば、ＰＤＵ又はＦＣＰフレームヘッダのデータオフセットなどと共に生成する。ローカルヘッダはＴＣＰ制御ブロックインデックス又はＰＴＤからのＦＣＰのＤ＿ＩＤにより更新される。ローカルヘッダにはポート番号も付加される。終了したｉＳＣＳＩのＰＤＵ又はＦＣＰフレームはＰＡＣＥに送られ、ＰＡＣＥはローカルヘッダを移動させ、パケットを適切なポートに回送する。
データ読み込みパケット（イングレス）
読み込みコマンドを受信した後で、ターゲットデバイスはデータ読み込み用パケットで応答し、このパケットはＰＰＵで受信される（ＰＡＣＥで分類された後で）。その後でパケットのＥＴＣＢを、ＯＸ＿ＩＤ又はｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇを用いて識別する。ＰＰＵは更に、シーケンス番号を用いて、又はデータオフセットが昇順であることを検証することで、パケットが正しい順序で受信されたか検証する。パケットが正しい順序でなかった場合、読み込みコマンドはエラーに終わる。一方、パケットが正規の順序の場合、ＶＴＤ  ＩＤと、タスクインデックスと、ＦｌｏｗＩＤとがＥＴＣＢ及びＶＴＤから検索されローカルヘッダへとコピーされる。パケットはトラフィックマネージャに送られ最終的にスイッチファブリックに送られる。
【００６６】
データ読み込み用パケットがエクステントの境界を越える場合には、第２のエクステントからのパケットのデータオフセットを修正する必要がある。このオフセットは、通常はエグレス側で行われ、以下に記載するが、ＦｌｏｗＩＤが第２のエクステントからのパケットを識別する。加えて、確実にデータが連続して返されるように、第１のエクステントからの読み込みが完了するまで、第２のエクステントへの読み込みコマンドは送られない。
データ読み込みパケット（エグレス）
スイッチファブリックからデータ読み込み用パケットをＰＰＵが受信したら、パケットのＩＴＣＢを、通常はローカルヘッダのタスクインデックスを用いて識別する。ＩＴＣＢから、ＰＰＵはｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇ又はＯＸ＿ＩＤを検索する。ＩＴ
ＣＢにセーブされているデータを用いて、ＰＰＵは、正規のｉＳＣＳＩのＤａｔａＳＮ又はＦＣＰシーケンスＩＤに加え、ＰＤＵ又はＦＣＰフレームヘッダの他のフラグや変数も生成する。ローカルヘッダはＴＣＰ制御ブロックインデックス又はＶＴＤからのＦＣＰのＳ＿ＩＤにより更新される。しかし、ここで留意すべきは、イニシエータに戻ろうとしているパケットについては、元のパケットからのＳ＿ＩＤが、Ｄ＿ＩＤとして用いられることである。ローカルヘッダには発信ポート番号も付加される。その後でパケットはＰＡＣＥに送られ、ＰＡＣＥはローカルヘッデを移動させ、パケットを適切なポートに回送する。
応答パケット（イングレス）
ターゲットデバイスから応答パケットを受信する。その後でパケットのＥＴＣＢを、パケットのｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇ又はＯＸ＿ＩＤを用いて識別する。実施形態によっては、ｉｎｉｔｉａｔｏｒ＿ｔａｓｋ＿ｔａｇ又はＯＸ＿ＩＤはタスクインデックスと同一である。ＥＴＣＢを探し出せなかった場合、パケットは廃棄される。しかし、ＥＴＣＢを探し出せた場合は、タスクインデックスをＶＴＤ  ＩＤとＦｌｏｗＩＤと共にパケットのローカルヘッダへとコピーする。パケットはトラフィックマネージャに送られ最終的にスイッチファブリックに送られる。最後に、応答パケットはタスクの完了を知らせ、よってタスクのＥＴＣＢは解放される。
応答パケット（エグレス）
スイッチファブリックを通過した応答パケットはその後で、エグレスＰＰＵに受信される。パケットのＩＴＣＢを、ローカルヘッダからのタスクインデックスを用いて識別する。ＩＴＣＢを探し出せなかった場合、パケットは廃棄される。ＩＴＣＢを探し出せた場合は、仮想ターゲットへの未処理のコマンドのカウントがＶＴＤでデクリメントされる。ＰＰＵは、ＩＴＣＢの情報からＬＵＮやｉＳＣＳＩのＥｘｐＳｔａｔＳＮやＦＣＰシーケンスＩＤなどを生成し、必要ならば、正規のＦＣＰヘッダを構築又は更新する。ＰＰＵは、ＰＤＵの為の又はＦＣのフレームヘッダの為の他のフラグ及び変数も構築する。ＰＰＵはローカルヘッダを、ＴＣＰ制御ブロックインデックス又はＶＴＤから検索したＦＣＰのＳ＿ＩＤ（これはＤ＿ＩＤになる）によって更新する。パケットは、工程２３１２でＰＡＣＥに回送され、ＰＡＣＥは工程２３１６でローカルヘッダを移動させ、パケットを適切なポートに回送する。ＰＰＵはＩＴＣＢを解放する。
ストレージプール
図２に示されているように、この物理的な構成では、本発明の実施形態に係るシステムにはスイッチ２０４があり、スイッチ２０４は、一つ以上のサーバ２０２と、一つ以上の物理デバイス２０６、即ち、ストレージデバイス又はサブシステムとに結合されている。物理ターゲットはどれも、一つ以上の論理ユニット（ＬＵ）２０７から成っている。このＬＵから最終的に形成されるのは仮想ターゲット群である。
【００６７】
しかし、仮想ターゲットを作成するよりも前に、又は「プロビジョニングされる（ｐｒｏｖｉｓｉｏｎｅｄ）」よりも前に、スイッチは、取り付けられている及び／又はスイッチがアクセスするのに使用可能な物理ストレージデバイスにもその物理ストレージデバイスの特徴にも「気付く（ａｗａｒｅ）」必要がある。それに応じて、本発明のある実施形態では、スイッチにストレージデバイス又はイニシエータデバイスが接続された又は登録されたとき、スイッチは新しいデバイスの性能特性を学習する必要がある。ある実施形態では、スイッチにはユーティリティプログラムがあり、このユーティリティプログラムは、ストレージアクセス時間と、データ転送速度と、キャッシュサポートと、デバイスへの代替経路の数と、ＲＡＩＤサポートと、物理デバイスのＬＵについて許容される最大限のコマンドとを測定できる。実施形態によっては、スイッチにデバイスが接続され次第、ユーザ又は他のものが介入することなく、ユーティリティプログラムはデバイスを自動的に見いだし必要な情報を自動的に集める。このような実施形態では、ポートへの信号ラインに外乱又はリセットがある際に、スイッチはデバイスの付加／取り外しを「見いだす（ｄｉｓｃｏｖｅｒ）」場合がある。デバイスが「見いだされ」次第、性能特性に関する情報
を集めるべく、種々の照会がデバイスに送られる。例として、転送速度を測定する為に又はアクセス時間を検査する為に読み込み／書き込みコマンドが送られる可能性がある。代案として、実施形態によっては、性能特性の取得を、管理局２１０で管理者に性能特性を入力させることで行い、その後で特徴はスイッチ２０４に供給される。
【００６８】
スイッチによって、サービス品質（ＱｏＳ）ポリシーの多数の構成要素をユーザが定義できる。ＱｏＳポリシーによって、イニシエータ及びターゲットのデータを保存して検索する条件をユーザが選択できる。ある実施形態では、ＱｏＳポリシーは３つのエレメントにより規定される。即ち、仮想ターゲットのプロビジョニング、イニシエータ接続のプロビジョニング、ユーザドメインの定義、の３つである。それでもなお、ＱｏＳポリシーを定義する際に３つのエレメントすべてを必要としない実施形態もある。例として、仮想ターゲットのプロビジョニング及びイニシエータ接続のプロビジョニングは必要だが、ユーザドメインは不要な実施形態がある。他の実施形態では、ＱｏＳポリシーを定義する際に全く違うエレメントが用いられる場合がある。
仮想ターゲットのプロビジョニング
物理デバイス群のＬＵがアクセス可能なプール（即ち、「Ｎｏプール」ではない）に入り次第、そのＬＵから仮想ターゲットを作成することができる。仮想ターゲットをプロビジョニングするべく、本発明のある実施形態では以下のものを含む仮想ターゲットの幾つかの特徴をユーザが選択する。
【００６９】
サイズ（例えば、ギガバイト単位）。
ストレージプール。もっとも、ある実施形態では、ユーザはユーザがアクセスを許可されているストレージプールのみから選択する。
【００７０】
所望の可用性。例えば、常に使用可能であること（データが決定的なものなので使えないことがあってはならない）、通常は使用可能であることなど。
仮想ターゲットのＷＷＵＩ。
【００７１】
バックアッププール。
ユーザ認証データ。
ミラー化する要素の数。
【００７２】
ミラー化する数の位置（例えば、ローカルかリモートか）。
依然として、本発明の他の実施形態では、選択する特徴が、異なっていたり、更に加えられたり、少なかったりしてもよい。
【００７３】
次にスイッチは選択されたプールの使用可能なリソースを分析して仮想ターゲットを形成できるかを判断し、中でも特に、スイッチが判断するのは、仮想ターゲットについてのサイズの要求を満たす多数のＬＵ（又はＬＵの一部）が使用可能かどうかである。可能である場合、仮想ターゲットを一つ以上のエクステントによって作成し、仮想ターゲットとそのエクステントとその特徴とを識別するＳＣＣデータベースに仮想ターゲットのオブジェクトを形成する。４つの仮想ターゲットについてユーザが選択した特徴の例を以下の表１に示す。
表１  仮想ターゲット
【００７４】
【表１】
2007536612.tif 000003
2007536612.tif 000004
新しい仮想ターゲットのプロビジョニングに加え、本発明の実施形態に係るスイッチは、新しい情報又は異なる情報により既存の仮想ターゲットを修正したり、必要のなくなった仮想ターゲットを削除したりできる。
【００７５】
ある実施形態では、ＱｏＳポリシーは一般に、仮想ターゲット（プロビジョニングされた場合）と、イニシエータ接続（プロビジョニングされた場合）と、ユーザドメインとによって規定される。それに応じて、イニシエータ接続及び仮想ターゲットの属性の定義は、イニシエータ接続及び仮想ターゲットの項目がプロビジョニングされた際になされているので、前掲の表１を再び参照すると、表の主要な３つの記載事項、即ち、「イニシエータのＩＤ」と、「仮想ターゲットのＩＤ」と、「ユーザドメインのＩＤ」とが、本質的にＱｏＳポリシーを記述する。例えば、イニシエータ接続の最小帯域及び最大帯域は既に識
別済みである（表２及び表３参照）。ユーザドメインは、例えば、イニシエータ接続又は仮想ターゲットの接続のどちらが遅いかを判断してこの２つのうちの遅いほうにＱｏＳを施行することにより、ポリシーを定義するのを援助する。もちろん、前述のように、ユーザドメインはすべての実施形態に必須ではない。同様に、他の実施形態では、ＳＬＡを定義するのに用いるパラメータは、上掲の表４に示したパラメータよりも多かったり、少なかったり、このパラメータ群とは違うものであったりする。
【００７６】
図５には、ある実施形態の、ＱｏＳを供給可能にする為の、仮想ターゲットと接続とをプロビジョニングする工程をまとめてある。図示のように、本発明の実施形態に係るスイッチが、工程５０２で、スイッチと通信している状態の物理デバイスの特徴を見いだし判断する。次にスイッチは、工程５０４でこのデバイス群を分類し、工程５０４でこのデバイス群を特定のストレージプールに関連付ける。スイッチは、工程５０８でイニシエータ接続についての情報を受信し、それから工程５１０で接続をプロビジョニングして、ＳＣＣデータベースにオブジェクトを作成する。スイッチは、工程５１２で仮想ターゲットについてのパラメータ群も受信し、工程５１４でこのパラメータ群に従って仮想ターゲットをプロビジョニングし、リソース群が使用可能な場合は、ＳＣＣデータベースにオブジェクトを作成する。ここで留意すべきは、工程５０８〜５１４をどの順番でも行うことができ、図５に示した順番は単に典型的なものだということである。仮想ターゲットをプロビジョニングした後で、工程５１６で、ユーザドメインが作成され、ユーザドメインに配置された仮想ターゲット又は仮想ターゲットはもともとあったユーザドメインに配置される。ユーザは、前もってプロビジョニングされた仮想ターゲットへのアクセスを試みることもできる（それ故に、工程５１４はすべての接続に必須ではない）。最後に、本発明の実施形態に係るスイッチは、工程５１８でＳＬＡ／ＱｏＳのパラメータ群を受信する。
スイッチにおける帯域配分の施行
ある実施形態では、各仮想ターゲットを多数の仮想論理ユニットにプロビジョニングし、単一の物理ポートを介してアクセスする論理ユニットごとに最小帯域及び最大帯域の配分を指定することが可能である。単一のイニシエータがスイッチの単一の物理ポートを介してデータを二つ以上の仮想論理ユニットに書き込む又はこれらから読み込む場合は、二つ以上の物理論理ユニットが返答して物理ポートが輻輳する恐れがある。図６Ａが、単一のイニシエータがスイッチ２０４の単一の物理ポート２５０によって２つの仮想論理ユニット（ＶＬＵ）にアクセスするという典型的な状況を示す。そして各ＶＬＵは一つ以上の物理論理ユニット（ＰＬＵ）に結合している。それぞれが１つのＰＬＵと通信しているＶＬＵは、２つのみ示されているが、当然のことながら、物理ポート２５０を介して通信するＶＬＵ及びＰＬＵは多数でもよい。
【００７７】
イニシエータ１０２には、アプリケーション１及びアプリケーション２という２つのアプリケーションがあり、それぞれが仮想論理ユニットの一つ一つにアクセスする。アプリケーション１は仮想化論理ユニットＶＬＵ１を介して物理論理ユニット２０６ａにアクセスし、アプリケーション２は仮想化論理ユニットＶＬＵ２を介して物理論理ユニット２０６ｂにアクセスする。最小帯域及び最大帯域を持つ各ＶＬＵは、前述したようにユーザにより構成される。またここでも、この帯域を、使用可能な物理ポート容量のうちのあるパーセンテージとして構成することができる。本発明に従い、ユーザは、帯域管理の帯域パラメータを各論理ユニットに割り当てる。例えば、ＶＬＵ１が、高帯域のアクセスを必要とするデータへのアクセスを供給し、ＶＬＵ２が、重大でないデータへのアクセスを供給し高帯域を必要としないとする。この状況では、スイッチを、重大でないデータよりも、待ち時間の短いデータの方が物理ポート２５０のリソースに多くアクセスできることを保証するよう構成すればよい。
【００７８】
この帯域制御を実施する為に、本発明のシステムは、各ＶＬＵが用いている帯域を監視し、各ＶＬＵへのアクセスを抑制して物理ポート２５０の帯域全体を制御する。ある実施
形態では、システムは、ＰＬＵからＶＬＵを介し、図６Ａに示す物理ポート２５０を通って来るトラフィックをマーキングする為にトラフィックマーカを用いる。一般に、物理論理ユニット（例えばＰＬＵ２）からのトラフィックが仮想論理ユニット（この場合はＶＬＵ２）に到着したとき、帯域が、ある特定の仮想論理ユニットに許可されている帯域の最大値を超えている場合、過多なバイトの量が仮想論理ユニットに記録される。このようなトラフィックは、アプリケーションへと通過することを許可されているが、この超過の情報を使用して、帯域が設定レベルに低下するまでＶＬＵへの接続を抑制する。イニシエータがＶＬＵ２に、物理論理のユニットへの読み込みコマンドなどの新しいコマンドを発行すると、コマンドの転送長さを使用して、前もって記録した超過量をオフセットする（低減させる）。この新しいコマンド及び場合によっては次のコマンドも、ＶＬＵが自身の帯域の取り分を超えた過多量のすべてがオフセットされるまで、拒否される。ＦＣＰのＳＣＳＩの場合について言えば、例えば、コマンドは、全体の過多量がオフセットされるまで、ＴＡＳＫ−ＳＥＴ−ＦＵＬＬステータスのＦＣＰの応答によって拒否される。物理論理ユニットから仮想論理ユニットへのトラフィックの帯域が、許可されている帯域の最小値未満の場合、仮想論理ユニット（この例では、ＶＬＵ２）に記録される過多量はない。
【００７９】
本発明の帯域バランスアルゴリズムの一般化した説明を以下にもっと詳しく記載する。
ＶＬＵごとに帯域を構成する能力によって、帯域管理構成のシナリオが２つ生じ、これを本願では一般に静的シナリオと動的シナリオと呼ぶ。１つのＶＬＵが、例えば、物理ポートの全帯域のうち非常に低いパーセンテージに限定されるよう、ユーザがＶＬＵの帯域を設定した場合、他の論理ユニットからのトラフィックはポートの帯域のうち高いパーセンテージを保証される。この静的シナリオでは、ポートのリソースは完全には利用されていない。例えば、ＶＬＵ２の最大帯域がポート容量の２０％に限定されている場合、たとえＶＬＵ１を介して動いているトラフィックがなくても、ＶＬＵ２はポート容量の２０％を超えることはない。それ故に、ポートのリソースが無駄になる。
【００８０】
各ＶＬＵが最小帯域及び最大帯域で構成され、ポートにアクセスされたＶＬＵＳのすべての最大帯域のすべてのアグリゲートが物理ポート容量の１００％を超えたときに、動的シナリオが存在する。この動的シナリオでは、ＶＬＵが両方ともトラフィックをそれぞれの許容されている最大の帯域で受信できる場合、ポート２５０のポート容量をオーバーしてしまうので、システムはＰＬＵそれぞれからのトラフィックを抑制する必要がある。ＶＬＵ１の最小帯域が７０％で最大帯域が１００％、ＶＬＵ２の最小帯域が１０％で最大帯域が１００％とする。ＶＬＵ１の最小帯域は７０％なので、どのようなバランスのとり方でもＶＬＵ１に有利であることが望ましい。
【００８１】
本発明に従い、各ＶＬＵのトラフィックを監視しマーキングし、ＶＬＵの一つを介する帯域が設定レベルを下回るまで、イニシエータからＶＬＵへのコマンドをポート２５０で拒否することで抑制されたＶＬＵを介するトラフィック。
【００８２】
本発明の概括的な方法を図７Ａに図示する。本図に図示のように、工程７０２で、物理ポートのトラフィックを監視して、ポートが輻輳しているかどうかを判断する。工程７０４で、トラフィックが輻輳している場合、工程７０６で、ポート２５０を介して通信しているＶＬＵそれぞれへのコマンドを拒否することでトラフィックを抑制し、輻輳を防止し、帯域の構成に基づいてポートを介するアクセスに優先順位をつける。この操作は、ポートのトラフィックの輻輳が検出されなくなるまで続く。
【００８３】
図７Ｂは抑制する工程７０６の１つの実装を示す。本図に図示のように、工程７１０で、各ＰＬＵからストレージスイッチに戻るトラフィックの帯域（通常はビット毎秒（ｂｐｓ）又はバイト毎秒で表される）がＶＬＵに到着した際に監視される。次に、抑制の制御を判断する一連の工程７０５が行われ、ＰＬＵから到着する各ＶＬＵの帯域が許容できる
最大値を超えているかどうかを判断する。超えている場合、この事実を用いて、ＶＬＵと通信している単数又は複数のＰＬＵからのトラフィックを抑制する。ＶＬＵに到着したトラフィックの帯域が許可されているものを下回る場合、データは単純にイニシエータに送信される。工程７２０で、帯域がＶＬＵの最大帯域を超えている場合、工程７３０で過多量はすべてＰＰＵによってＶＬＵに記録される。工程７３０でトラフィックはイニシエータへと通過することを許可され、工程７６５でコマンドはＰＬＵに回送される。
【００８４】
工程７５０で、問題のＶＬＵに対する次のコマンドを受信すると、工程７６０で、システムは、ＶＬＵがその帯域を超えたことを判断し、工程７７０でポートはコマンドを拒否し、コマンドで要求されたデータの量だけ帯域を低減させる。例えば、ＶＬＵ１が３００メガバイト／秒の帯域を配分され、工程７１０でトラフィックが３３０メガバイト／秒であると判断された場合、工程７３０で、工程７３０で記録された問題の期間に読み込まれた過多なバイトの量（３０メガバイト／秒に時間を乗じたもの）。ＶＬＵ１への次の読み込みコマンドが工程７５０で受信されたとき、工程７７０で、コマンドは拒否される（工程７６０は真となる）が、読み込みで要求されたバイトの量が過多分から差し引かれる。この拒否とデクリメントの操作は、工程７６０でＶＬＵ１に不足している帯域がなくなるまで発生し、それから工程７６５で次のコマンドがＰＬＵに回送される。
【００８５】
以下にもっと詳しく説明するように、最小帯域の設定及び最大帯域の設定のどんな構成も可能にする為に、重み付け方式を利用して、所定の時間にどのＶＬＵを抑制するかを判断する。加えて、重み付け処理には最小帯域及び最大帯域を計算に入れなくてはならないので、各ＶＬＵを介するトラフィックを計量する為に２レート３カラーマーカ（ｔｒＴＣＭ）システムを使用する。
【００８６】
図６Ｂは、各ＶＬＵのトラフィックを計量しマーキングする為にＶＬＵ１つにつき２つのバケットを用いる２レート３カラーのマーキングシステムの概念を図示する。図８は、このｔｒＴＣＭマーキングを用いる本発明の重み付けシステムを図示する。
【００８７】
重み付けシステムは、ＶＬＵの最小帯域及び最大帯域の両方の設定のバランスをとる為に、コンテンションカウントの概念を用いる。一般に、トラフィックの実際のバイトを集めて測定する代わりに、トラフィックの色及びＶＬＵで許可された最大帯域と乱数との比較結果に基づいてコンテンションカウントが生成される。同一のスイッチポート２５０のあらゆるＶＬＵの最小のコンテンションカウントを使用してＶＬＵの過多量を判断する。その後、このＶＬＵのコンテンションカウントは、過多量の分だけ減らされる。
【００８８】
コンテンションカウントを判断する為に、ｔｒＴＣＭマーカはパケットストリームを計量し、フレームを緑か黄色か赤のどれかにマーキングする。パケットストリームがピークの情報速度、この場合は、最大帯域を超えた場合、パケットは赤にマーキングされる。そうでない場合には、パケットストリームは、コミットされた情報速度、この場合は、最小帯域を超えているか超えていないかに依存して、黄色又は緑のどちらかにマーキングされる。メータは各パケットを計量してパケットと計量の結果とをマーカに渡す。ＳＳＣでは、ＰＰＵが計量及びマーキングの機能を行うことに加えて、ポート２５０でコマンドを抑制する。コンテンションカウントはＶＬＵごとにＶＴＤに維持される。一般に、ｔｒＴＣＭは、４つのトラフィックパラメータについての値を設定することにより構成され、このトラフィックパラメータ群は、この場合は、最大帯域ＭａｘＢＷと、それに関連したピークのバーストサイズと、最小帯域ＭｉｎＢＷと、それに関連したピークのバーストサイズである。バーストサイズはバイト単位で測定される。
図６Ｂに図示されているように、メータは、ストリームごとに２つのトークンバケット２２０と２２２、２２４と２２６に関して指定される。１つのバケット（バケット２２０、バケット２２４など）が最小帯域用に構成され、１つのバケット（バケット２２２、バケ
ット２２６など）が最大帯域用に構成される。ｔｒＴＣＭの１つの実装では、トークンバケットＭａｘＢＷの最大サイズは最大バーストサイズであり、ＭｉｎＢＷのトークンバケットの最大サイズはそのバーストサイズである。トークンバケットは、最初は満杯に設定され、トークンカウントはそれぞれのバーストサイズに等しい。その後、トークンカウントは、最大バーストサイズになるまで毎秒一種類の最大帯域速度の分だけインクリメントされ、最小帯域バケットのトークンカウントは、最小バーストサイズまで毎秒最小帯域時間の分だけインクリメントされる。この構成では、最小帯域用に低速トークンバケットを構成し、最大帯域用に高速トークンバケットを構成する。両方のトークンバケットを流れるトラフィックは緑にマーキングされるので、保護される。高速トークンバケットを流れるが低速トークンバケットを流れないトラフィックは、黄色にマーキングされ、これを使用してコンテンションカウントを判断する。それ故に、どちらのトークンバケットも流れないトラフィックは赤にマーキングされる。この量を記録し、これを使用してコンテンションカウントを生成し、このコンテンションカウントを使用して次のトラフィックを抑制する。より具体的には、サイズがＢバイトのパケットが時間Ｔに到着すると、最大帯域バケットのトークンカウントからパケットのサイズを引いたものが、ゼロを下回っている場合、パケットは赤にマーキングされる。最小帯域バケットのトークンカウントからパケットのサイズを減じたものがゼロを下回っている場合、パケットは黄色にマーキングされ、最大帯域バケットはＢバイト分デクリメントされ、下回っていない場合にはパケットは緑であり最小帯域も最大帯域バケットもＢバイト分デクリメントされる。認識されるべきは、このマーキング方式の代替の構成が利用される場合があり、この記述はある実施形態の典型的なものにすぎないことである。加えて、最大情報速度と比較して２種類の速度を監視する他のマーキング方式を利用してもよい。
【００８９】
図８は、図７の抑制制御及び帯域測定の工程７０５を実施するある実施形態を詳述する。工程８２０では、工程７１０でトラフィックがＰＬＵ１からＶＬＵに到着した後で、トラフィックのバーストサイズを読み込み、ｔｒＴＣＭに従ってトラフィックを計量しマーキングする。
【００９０】
両方の帯域が１００％に設定されている例では、赤のトラフィックはない。例えば、２つのＶＬＵの一方の最大帯域が１００％未満である場合、最小帯域の大きい方のＶＬＵのトラフィックのうちいくつかが赤にマーキングされ、小さい方のパケットが黄色にマーキングされる。それ故に、上記の例では、ＶＬＵ１が待ち時間の短いデータへのアクセスを供給し、ＶＬＵ１の物理ポートの容量のＭｉｎＢＷは７０％、ＭａｘＢＷは１００％に設定され、ＶＬＵ２のＭａｘＢＷ＝１００％、ＭｉｎＢＷ＝１０％なので、黄色にマーキングされるフレームの数が多くなるのはＶＬＵ２の方である。下記のように、黄色のパケットのみがコンテンションカウントに影響を及ぼすので、特定のポートに割り当てられる優先の重みにも影響を及ぼす。
【００９１】
次に、工程８３０では、トラフィックが赤か緑か黄色かについての判断がなされる。工程８３０でトラフィックが緑の場合、そのパケットには操作をしない。工程８３０でトラフィックが黄色にマーキングされた場合、工程８５０では、トラフィックがコンテンションカウントかどうかの分類がなされる。工程８５０では、ＶＬＵに送られる最大帯域の値を８ビットの値に正規化する。次に、ストリームのフレームごとにランダムな８ビットの値が生成される。このランダムな８ビットの値を、正規化した最大帯域値と比較する。この乱数が正規化した最大帯域値を上回っている場合、黄色のフレームがコンテンションのフレームと見なされる。工程８７０では、システムがコンテンションのカウントをＶＬＵのレコードに加算する。具体的には、ＶＬＵのコンテンションカウントが工程８７０のフレームのサイズの分だけインクリメントされる。このように、最大帯域設定が大きいほど、工程８７０で加算されるコンテンションカウントは少なくなる。同じように、最小帯域が大きいほど、発生する黄色のフレームは小さくなり、よってコンテンションカウントも
少なくなる。このおかげで、ＶＬＵの最小帯域の設定及び最大帯域の設定は大きくなり、抑制されることが少なくなる。工程８３０でトラフィックが赤の場合、工程８４０でトラフィックはＶＬＵの過多量に自動的に加算される。
【００９２】
図６Ｂの物理ポート２５０に測定バケットが追加される。このトークンバケットは、物理ポートにアクセスするあらゆるＶＬＵのアグリゲートトラフィックを測定する。帯域制御の測定には単一速度のトークンバケットが利用される。アグリゲートトラフィックが物理ポート容量を超えたとき、抑制されるＶＬＵとして選択されるのは、コンテンションカウントの数が最も多いＶＬＵである。
【００９３】
表２〜表６が工程７６０及び７７０のある実装を説明し、工程７６０及び７７０は、どのＶＬＵのコンテンションカウントの量が過多であるか、よって、工程７７０でどのＶＬＵを抑制するかの判断を実施する。
【００９４】
表２は、イニシエータＶＬＵ１及びＶＬＵ２のコンテンションカウントの典型的な数を示す。
【００９５】
【表２】
2007536612.tif 000005
表２では、ＶＬＵ２のコンテンションカウントの数はＶＬＵ１より多い。よって、ＶＬＵ２は、自身のコンテンションカウントがＶＬＵ１を下回るまで、要求データのサイズの分だけ抑制される。ＶＬＵの過多量への加算に用いられるのは、同一のポートのあらゆるＶＬＵのうち最小のコンテンションカウントである。その後、このＶＬＵのコンテンションカウントは、この過多量の分だけ減らされる。例えば、アグリゲート帯域がポート容量を超えており、表２に見られるように、ＶＬＵ１のコンテンションカウントは６０でＶＬＵ２のトラフィックのコンテンションカウントは３００だとする。単一速度のバケットが、ポートが輻輳していると判断すると、過多量は同一のポートのあらゆるＶＬＵのうち最小のコンテンションカウントであり、表２では６０である。よって、カウントの状態は表３に示したようになる。
【００９６】
【表３】
2007536612.tif 000006
工程７５０で次のコマンドが受信され、ＶＬＵ２のコマンドは拒否され、過多量はコマンドの要求のサイズの分だけ低減される。例えば、コマンドが読み込みコマンドでありこの読み込みコマンドが４０バイト分であるとすると、ＶＬＵ２に関して結果として生じた過多量は、表４に示したように４０だけ低減される。
【００９７】
【表４】
2007536612.tif 000007
過多量は、表５に示したようにゼロ又はマイナスになるまで、引き続き次のコマンドにオフセットされる。
【００９８】
【表５】
2007536612.tif 000008
トラフィックが抑制された後で、アグリゲート帯域がポート容量未満であった場合、コンテンションカウントを過多量にコンバートしなくてもよい。しかし、コンテンションカウントは経年変化する恐れがある。輻輳がなければ、ｔｒＴＣＭアルゴリズムの原理に従って、経時的に、コンテンションカウントは徐々にゼロに減少する。表６が示す状態は、輻輳していない期間のものである。
【００９９】
【表６】
2007536612.tif 000009
ポート２５０が輻輳したままである限りは、工程７６０と工程７７０で詳述したように、現在のコンテンションカウントをアルゴリズムに用いる。当然のことながら、「カウント」の前述した数と帯域とは単に典型的なものである。輻輳が再度発生した場合は、表２〜表６のサイクルが繰り返される。
【０１００】
本発明の上記の詳細な記述を呈示したのは、図示及び記述の為である。本発明はこの事例に限定されていない。本発明は、ＦＣＰ及びｉＳＣＳＩの読み込みのみならずＦＣＰ及びｉＳＣＳＩの書き込みにも適用される。輻輳しているポートは、イニシエータに接続されたポート又はターゲットへのポートのコネクタのどちらかである可能性がある。トラフィックをイングレスポート又はエグレスポートで監視できるので、トラフィックは、イニシエータからターゲットへ向かうものでもよいし、ターゲットからイニシエータへ向かうものでもよい。網羅的であること又は本発明を開示された形態そのものに制限することは意図していない。上記の教示に照らして多くの修正及び変形が可能である。記載した実施形態を選んだのは、本発明の原理及びその実用例を最もうまく説明する為であり、それによって当業者が本発明を種々の実施形態で最もよく利用でき、且つ、企図した特定の用途に合わせた種々の修正によって最もよく利用できる。本発明の範囲は、本明細書に添付の請求項により規定されることが意図されている。
【図面の簡単な説明】
【０１０１】
【図１】一実施形態に係るストレージスイッチの一般化した機能ブロック図。
【図２Ａ】仮想ターゲット群の典型的なプロビジョニングを図示するストレージエリアネットワークの一般化した機能ブロック図。
【図２Ｂ】仮想ターゲット群の典型的なプロビジョニングを図示するストレージエリアネットワークの一般化した機能ブロック図。
【図２Ｃ】仮想ターゲット群の典型的なプロビジョニングを図示するストレージエリアネットワークの一般化した機能ブロック図。
【図３】一実施形態に係るストレージスイッチを一般化した機能ブロック図。
【図４】一実施形態に係るストレージスイッチで用いられているラインカードを一般化した機能ブロック図。
【図５】本発明の実施形態に係る工程を図示するフロー図。
【図６Ａ】多数の仮想論理ユニットがストレージスイッチの単一の物理ポートによってイニシエータと通信している状態のストレージエリアネットワークを図示するブロック図。
【図６Ｂ】本発明の計量システムを図示する、図６Ａと同様な機能ブロック図。
【図７Ａ】本発明の概括的な実施形態を図示するフローチャート。
【図７Ｂ】スイッチの帯域を制御する本発明の第１の方法を図示するフローチャート。
【図８】本発明のシステムの抑制制御を判断する特殊な方法を含む第２の実施形態を図示するフローチャート。
【図１】
2007536612.tif 000010
【図２Ａ】
2007536612.tif 000011
【図２Ｂ】
2007536612.tif 000012
【図２Ｃ】
2007536612.tif 000013
【図３】
2007536612.tif 000014
【図４】
2007536612.tif 000015
【図５】
2007536612.tif 000016
【図６Ａ】
2007536612.tif 000017
【図６Ｂ】
2007536612.tif 000018
【図７Ａ】
2007536612.tif 000019
【図７Ｂ】
2007536612.tif 000020
【図８】
2007536612.tif 000021
【手続補正書】
【提出日】平成19年1月26日(2007.1.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを保存しアクセスするシステムで用いる方法であって、同システムが、少なくとも１つのイニシエータと、少なくとも２つのターゲットと、ポートを持つ少なくとも１つのスイッチと、を具備しており、前記方法が、
前記物理ポートで輻輳が発生しているかどうかを判断する工程と、
前記物理ポートで輻輳していると判断されると、前記ターゲットの各々の最小帯域の設定及び最大帯域の設定に基づいて、少なくとも２つのターゲットの各々の帯域使用量を制御する工程と、
からなる方法。
【請求項２】
制御する前記工程が、前記ターゲットから前記ポートへのトラフィックが前記ターゲットに許容されている最大帯域を超えたときに各ターゲットに重みを割り当て、前記最大帯域を正規化した値が乱数を超えた場合はターゲットへのコマンドを拒否する、請求項１に記載の方法。  
【請求項３】
前記少なくとも２つのターゲットのうち帯域超過が大きい方に向けられたコマンドが、その超過が前記少なくとも２つのターゲットの他方の超過を下回るまで、拒否される請求項２に記載の方法。
【請求項４】
制御する前記工程が、ターゲットの最大帯域が乱数を超過した場合に、各ターゲットのコンテンションカウントを生成して、最大のコンテンションカウントを有するターゲットへのコマンドを拒絶する請求項３に記載の方法。
【請求項５】
データを保存しアクセスするシステムで用いる方法であって、前記システムが、少なくとも１つのイニシエータと、少なくとも２つのターゲットと、ポートを持つ少なくとも１つのスイッチとを具備しており、前記方法が、
前記少なくとも２つのターゲットの各々から前記ポートへのトラフィック帯域を監視する工程と、
ターゲットごとの最小帯域及び最大帯域の設定に基づいて、どのターゲットがポートにアクセスするべきかを判断する工程と、
判断する前記工程に基づいて、前記ターゲットへのコマンドを拒否することで、前記ターゲット群へのアクセスを制御する工程と、
を含む方法。
【請求項６】
最大帯域の正規化された値が乱数値を超えた場合に超過が起こり、前記少なくとも２つのターゲットのうち帯域超過が大きい方に向けられたコマンドが、その超
過が前記少なくとも２つのターゲットの他方の超過を下回るまで拒否される請求項５に記載の方法。
【請求項７】
データを保存しアクセスするシステムで用いる方法であって、前記システムが、少なくとも１つのイニシエータと、少なくとも２つの仮想論理ユニットと、少なくとも２つの物理論理ユニットと、ポートを持つ少なくとも１つのスイッチと、を具備しており、前記スイッチが前記ポートを介して各物理論理ユニットにアクセスし、前記方法が、
前記関連の物理論理ユニットからのトラフィックによって、前記少なくとも２つの仮想ターゲットの各々に消費される前記帯域を監視する工程と、
仮想ターゲットからのトラフィックの重み付けに基づいて、少なくとも２つの仮想論理ユニットのうちのどちらがポートにアクセスすべきかを判断する工程と、
前記重み付けに基づいて仮想論理ユニットへのコマンドを拒否することにより、アクセスを前記仮想ターゲットによるポートに限定する工程と、
を含む方法。
【請求項８】
判断する前記工程が、前記仮想論理ユニットの最大帯域を基に一方のレートを設定し、前記仮想論理ユニットの最小帯域を基に他方のレートを設定することによって、各仮想論理ユニットのコンテンションカウントを生成し、前記の限定する工程が、前記コンテンションカウントに基づいて論理ユニットへのコマンドを拒否する工程からなる、請求項７に記載の方法。
【請求項９】
少なくとも２つのターゲットへのアクセスをもたらす１つの物理ポートを持つストレージスイッチであって、
各ターゲットのレコードを保存するメモリを具備し、前記ポートに付属した負荷分散回路と、前記レコードには、前記ターゲットの最小帯域及び最大帯域の配分が含まれており、
前記少なくとも２つのターゲットに対し別個に帯域監視装置を具備し、前記ポートに付属した処理回路と、を含み、前記処理回路が、各ターゲットに用いられた帯域の重み付け済みレコードを維持し、前記物理ポートが輻輳している場合に、前記レコードに基づいてターゲットへのコマンドを拒否する、
スイッチ。
【請求項１０】
前記処理回路が、第１の乱数よりも大きな帯域が使用されると増分され、第２の乱数よりも小さな帯域が使用されると減分される、コンテンションカウント発生装置を備える請求項９に記載のスイッチ。
【国際調査報告】
2007536612.tif 000022