(57)【要約】【課題】エッジノードのフォワーディングの負担を軽減する。【解決手段】  ネットワークアドレス管理部（２１０）は、第１エッジノード（１００ａ）の物理的構成が反映された第１ネットワークアドレス（５００）を第１エッジノードに割り当てる。また、ネットワークアドレス管理部は、第２エッジノード（１００ｂ）が第１エッジノードに接続された場合、第２のエッジノードについて第１エッジノードの物理的構成が反映された第２ネットワークアドレス（５１０）を、第１エッジノードに割り当てる。第１エッジノードは、宛先ネットワークアドレスとして第１または第２ネットワークアドレスが指定されたパケットを受信した場合、受信したパケットで指定されている宛先ネットワークアドレスから、受信したパケットを第２エッジノードに転送するか否か、および、第１エッジノード内の転送先経路を判別する。【選択図】図１
2015115630.tif 000002
【特許請求の範囲】
【請求項１】
複数のエッジノードとエッジノード間の通信を中継する中間ノードとで構成されたネットワークシステムと、
前記複数のエッジノードのうちのいずれかのエッジノードである第１エッジノードの物理的構成が反映された第１ネットワークアドレスを前記第１エッジノードに割り当てるネットワークアドレス管理部と
を有し、
前記ネットワークアドレス管理部が、追加のエッジノードである第２エッジノードが前記第１エッジノードに接続された場合、前記第２のエッジノードについて前記第１エッジノードの物理的構成が反映された第２ネットワークアドレスを、前記第１エッジノードに割り当てる、
計算機システム。
【請求項２】
前記ネットワークアドレス管理部が、前記第１エッジノード内の前記中間ノードに接続された第１経路のＩＤである第１経路ＩＤを受信し、
前記ネットワークアドレス管理部が、第１割当て要求を受信し、前記第１経路ＩＤを含んだ前記第１ネットワークアドレスを生成し、
前記ネットワークアドレス管理部が、前記第１エッジノード内の前記第２ストレージに接続された第２経路のＩＤである第２経路ＩＤが指定された第２割当て要求を受信し、前記第２経路ＩＤを含んだ前記第２ネットワークアドレスを生成する、
請求項１記載の計算機システム。
【請求項３】
前記ネットワークアドレス管理部が、前記第１エッジノードのＩＤである第１ノードＩＤを受信し、
前記ネットワークアドレス管理部が、前記第１経路ＩＤの他に前記第１ノードＩＤを含んだ前記第１ネットワークアドレスを生成し、
前記第２割当て要求は、前記第２経路ＩＤの他に前記第２ノードのＩＤである第２ノードＩＤが指定されており、
前記ネットワークアドレス管理部が、前記第２経路ＩＤの他に前記第２ノードＩＤを含んだ前記第２ネットワークアドレスを生成する、
請求項２記載の計算機システム。
【請求項４】
前記ネットワークアドレス管理部が、前記複数のエッジノードにそれぞれ複数の第１ネットワークアドレスを割り当て、
前記複数の第１ネットワークアドレスおよび前記第２ネットアークアドレスの各々が、前記複数の第１ネットワークアドレスおよび前記第２ネットアークアドレスにおいてユニークな情報であるユニーク情報を含む、
請求項３記載の計算機システム。
【請求項５】
前記第１エッジノードが、前記複数のエッジノードのうちの前記第１エッジノード以外のいずれかのエッジノードである第３エッジノードから、宛先ネットワークアドレスとして前記第１または第２ネットワークアドレスが指定されたパケットを、前記中間ノードを介して受信し、前記受信したパケットで指定されている宛先ネットワークアドレス中のノードＩＤが前記第２ノードＩＤであるか前記第１ノードＩＤであるかに応じて、前記受信したパケットを前記第２エッジノードに転送するか否かを判断し、且つ、前記受信したパケットで指定されている宛先ネットワークアドレス中の経路ＩＤから前記第１エッジノード内の転送先経路を判別する、
請求項３記載の計算機システム。
【請求項６】
前記第１及び第２経路ＩＤは、いずれも、前記第１エッジノード内部のPCI expressバスのスロットＩＤである、
請求項２記載の計算機システム。
【請求項７】
前記第１及び第２ネットワークアドレスの各々は、Fibre ChannelネットワークのポートＩＤである、
請求項１記載の計算機システム。
【請求項８】
前記第１エッジノードと前記第２エッジノードの接続に、PCI expressバスとバス直結デバイスが用いられる、
請求項１記載の計算機システム。
【請求項９】
前記バス直結デバイスは、ＮＴＢ（NON-Transparent Bridge）である、
請求項８記載の計算機システム。
【請求項１０】
前記中間ノードが前記ネットワークアドレス管理部を有する、
請求項１記載の計算機システム。
【請求項１１】
前記複数のエッジノードの各々を管理する管理装置を有し、
前記管理装置が前記ネットワークアドレス管理部を有する、
請求項１記載の計算機システム。
【請求項１２】
前記第１及び第２エッジノードは、ストレージであり、
前記複数のエッジノードのうちの前記第１エッジノード以外の２以上のエッジノードが、入出力要求を送信するサーバである、
請求項１記載の計算機システム。
【請求項１３】
ネットワークシステムが有する複数のエッジノードの各々に接続されたインターフェイス部と、
前記インターフェイス部に接続された制御部と
を有し、
前記制御部が、
前記複数のエッジノードのうちのいずれかのエッジノードである第１エッジノードの物理的構成が反映された第１ネットワークアドレスを前記第１エッジノードに割り当て、
追加のエッジノードである第２エッジノードが前記第１エッジノードに接続された場合、前記第２のエッジノードについて前記第１エッジノードの物理的構成が反映された第２ネットワークアドレスを、前記第１エッジノードに割り当てる、
アドレス管理装置。
【請求項１４】
ネットワークシステムが有する複数のエッジノードのうちのいずれかのエッジノードであって、
前記ネットワークシステムが有する中間ノードまたは前記複数のエッジノードの各々を管理する管理装置であるアドレス管理装置に接続される第１のインターフェイス部と、
前記ネットワークシステム外の追加のエッジノードが接続される第２のインターフェイス部と、
前記第１および第２のインターフェイス部に接続された制御部と
を有し、
前記制御部が、
エッジノードの物理的構成を表す情報を前記アドレス管理装置に送信し、
第１の割当て要求を前記アドレス管理装置に送信し、前記第１の割当て要求に応答して、前記情報が表す物理的構成が反映された第１ネットワークアドレスの割当てを受け、
前記追加のエッジノードが前記第２のインターフェイス部に接続された場合、前記追加のエッジノードについてエッジノードの物理的構成を表す情報を関連付けた第２の割当て要求を前記アドレス管理装置に送信し、前記第２の割当て要求に応答して、前記第２の割当て要求に関連付けられた情報が表す物理的構成が反映された第２ネットワークアドレスの割当てを受け、
前記複数のエッジノードのいずれかから、宛先ネットワークアドレスとして第１または第２ネットワークアドレスが指定されたパケットを受信した場合、受信したパケットで指定されている宛先ネットワークアドレスから、受信したパケットを前記追加のエッジノードに転送するか否か、および、エッジノード内の転送先経路を判別する、
エッジノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ノード間のフォワーディングに関する。
【背景技術】
【０００２】
一般に、計算機システムは、複数のノードで構成されたネットワークシステムを有し、複数のノードは、複数のエッジノードと、１以上の中間ノードとを含む。「中間ノード」は、ノード間の橋渡しを行うノードであり、一般に、ネットワークスイッチのようなスイッチ装置である。本明細書において、ノード間の橋渡しを「フォワーディング」（またはルーティング）と呼ぶことにする。フォワーディングは、例えば、フォワーディング先のノード（エッジノードまたは別の中間ノード）を検索する処理と、検索処理により見つかったノードにパケット（データまたはコマンド）を転送する処理とを含む。「エッジノード」は、中間ノード以外のノードである。
【０００３】
サーバ装置（以下、サーバ）およびストレージ装置（以下、ストレージ）をそれぞれエッジノードとしたネットワークシステムが知られている。一般に、サーバの演算性能の向上に対し、ストレージの入出力性能（例えばアクセス遅延時間またはバンド幅）の向上の度合は大きくない。そのため、入出力性能がネットワークシステム全体の性能ボトルネックになってきている。特に、ストレージとサーバがネットワークを介して接続されている場合には、ネットワークの速度が入出力性能の上限となり、これが、ボトルネックとなる。
【０００４】
入出力性能を向上させることを目的とし、サーバとストレージを密に結合した閉じたネットワーク（例えばＳＡＮ（Storage Area Network）を構成することが考えられる。
【０００５】
しかし、閉じたネットワークは、追加ノードをネットワークに直接参加させることができない。なぜなら、「閉じたネットワーク」とは、いずれの中間ノードにも追加ノードを接続することができないネットワークだからである。「いずれの中間ノードにも追加ノードを接続することができない」ことの例としては、全ての中間ノードの全てのポートが使用されている（いずれの中間ノードも空きポートを有しない）、または、中間ノードが拡張不可能に構成されている（例えば、中間ノードがチップ化されていて予め配線が決められている）を挙げることができる。
【０００６】
そこで、追加ノードを閉じたネットワークに参加させるためには、追加ノードを間接的にネットワークに参加させることになる。具体的には、閉じたネットワークに参加しているエッジノードに追加ノードを接続し（例えば追加ノードがストレージであれば、閉じたネットワークに参加しているストレージに追加のストレージを接続し）、追加ノードが接続されたエッジノードが、フォワーディングをする必要がある。エッジノードが行うフォワーディングの負荷は、可能な限り低いことが望ましい。なぜなら、フォワーディングは、エッジノードが本来行うべき処理ではなく、フォワーディングの負荷が重いと、エッジノードが本来行うべき処理（例えばエッジノードがストレージであれば、本来行うべき処理は入出力処理）の性能が低下してしまうからである。
【０００７】
同様の課題は、大規模なネットワークについてもあり得る。ネットワークに参加するノードが多くなると、フォワーディングのために、ノードの接続位置について大量の情報を管理したりその大量の情報から転送先を特定したりする必要がある。これらの処理の負荷を軽減するために、特許文献１および非特許文献１は、ネットワークの構成を、ノードに関連付けるアドレスに反映することを開示している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第５２１４００７号
【非特許文献】
【０００９】
【非特許文献１】“PortLand: AScalable Fault-Tolerant Layer 2 Data Center Network Fabric”, Radhika NiranjanMysore et al, SIGCOMM’09, 2009.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１および非特許文献１のいずれも、フォワーディングを行うのはスイッチ装置（例えばルータ装置）のような中間ノードである。このため、フォワーディングの負荷が重くなっても、エッジノードが直接的に影響を受けることは少ない。追加のノードは、中間ノードに接続すればよい。
【００１１】
しかし、閉じたネットワークでは、追加のノードはいずれかのエッジノードに接続する必要があるため、フォワーディングの負荷が、追加ノードが接続されたエッジノードの性能に影響を与えることになる。フォワーディングの負荷は、受信したパケットが転送すべきパケットであるか否かを判定する処理と、転送が必要な場合には転送先を特定する処理が主である。これらの処理のためには、一般に、宛先として指定されたネットワークアドレスと転送先との対応関係を表した転送管理表（「ルーティングテーブル」と呼ばれることがある）が必要である。転送管理表のために、転送管理表を記憶する領域を確保しなければならず、また、フォワーディングを行うエッジノードは、パケットを受信する度に、転送管理表を参照して処理を決定しなければならない。
【課題を解決するための手段】
【００１２】
転送管理表無しにエッジノードがフォワーディングする。具体的には、ネットワークアドレス管理部が備えられる。ネットワークアドレス管理部は、第１エッジノードの物理的構成が反映された第１ネットワークアドレスを第１エッジノードに割り当てる。また、ネットワークアドレス管理部は、第２エッジノードが第１エッジノードに接続された場合、第２のエッジノードについて第１エッジノードの物理的構成が反映された第２ネットワークアドレスを、第１エッジノードに割り当てる。第１エッジノードは、第３エッジノードから、宛先ネットワークアドレスとして第１または第２ネットワークアドレスが指定されたパケットを受信した場合、受信したパケットで指定されている宛先ネットワークアドレスから、受信したパケットを第２エッジノードに転送するか否か、および、第１エッジノード内の転送先経路を判別できる。
【００１３】
ネットワークアドレス管理部は、例えば、ネットワークシステムにおける中間ノードが有してもよいし、各エッジノードを管理する管理装置が有してもよい。この場合、中間ノードまたは管理装置のような、ネットワークアドレス管理部を有する装置を、アドレス管理装置と呼ぶことができる。
【発明の効果】
【００１４】
第１エッジノードにおいて、転送管理表のための領域が不要になり、且つ、パケットを受信する度に転送管理表を参照することも不要になるので、第１エッジノードが本来行うべき処理の性能の低下を軽減することができる。
【図面の簡単な説明】
【００１５】
【図１】複数の実施例の共通概念を示す。
【図２】実施例１に係る計算機システムの構成を示す。
【図３】実施例１に係る計算機システムの一変形例の構成を示す。
【図４】初期状態を示す。
【図５】閉じたＳＡＮ内の各サーバ及びストレージに通常ポートＩＤが割り当てられたシステムを示す。
【図６】追加ストレージが接続されたストレージにプロキシポートＩＤが割り当てられる前のシステムを示す。
【図７】追加ストレージが接続されたストレージにプロキシポートＩＤが割り当てられた後のシステムを示す。
【図８】パケットの構成を示す。
【図９】サーバから追加ストレージへのパケット（コマンド）の流れを示す。
【図１０】追加ストレージからサーバへのパケット（レスポンス）の流れを示す。
【図１１】サーバからストレージへのパケット（コマンド）の流れを示す。
【図１２】ストレージからサーバへのパケット（レスポンス）の流れを示す。
【図１３】実施例１に係るシステムの詳細な構成例を示す。
【図１４】電源投入時からのストレージの動作フローを示す。
【図１５】ストレージに追加ストレージが接続されたときのストレージの動作フローを示す。
【図１６】ストレージに追加ストレージが接続されたときの追加ストレージの動作フローを示す。
【図１７】スイッチの詳細な構成例を示す。
【図１８】電源投入時からのスイッチの動作フローを示す。
【図１９】電源投入時からのサーバの動作フローを示す。
【図２０】実施例２に係る計算機システムの構成を示す。
【図２１】追加ストレージがストレージに接続される前の状態を示す画面を示す。
【図２２】追加ストレージがストレージに接続された後の状態を示す画面の第１の例を示す。
【図２３】追加ストレージがストレージに接続された後の状態を示す画面の第２の例を示す。
【図２４】追加ストレージがストレージに接続された後の状態を示す画面の第３の例を示す。
【図２５】実施例３に係る計算機システムの詳細な構成例を示す。
【図２６】実施例３に係る計算機システムの構成例を示す。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、幾つかの実施例を説明する。
【００１７】
なお、以下の実施例では、閉じたネットワークは、閉じたＳＡＮであり、ネットワークアドレスを、「ポートＩＤ」と呼ぶことにする。ポートＩＤ（後述の通常ポートＩＤおよびプロキシポートＩＤ）は、Fibre ChannelネットワークのポートＩＤでよい。また、閉じたＳＡＮに、エッジノードとしてサーバ装置（以下、サーバ）およびストレージ装置（以下、ストレージ）が混在し、追加ノードはストレージであり、追加ストレージがいずれかのストレージに接続され、追加ストレージが接続されたストレージがフォワーディングを行うこととする。しかし、いずれかのサーバに追加のサーバが接続され、追加サーバが接続されたサーバが、ストレージのフォワーディングと同様の手順でフォワーディングを行ってもよい。
【００１８】
また、以下の説明では、同種の要素に割り振られた参照番号は共通の親番号と異なる子符号とを含む。同種の要素を区別して説明する場合には、参照番号の全てを使用し（例えばサーバ（３００ａ）、サーバ（３００ｂ））、同種の要素を区別しないで説明する場合には、参照番号のうちの共通の親番号のみを使用する（例えばサーバ（３００））ことがある。
【００１９】
また、以下の説明では、要素（ストレージ、経路等）の識別情報（ＩＤ）として番号が使用されるが、番号に代えてまたは加えて他種の情報がＩＤとして使用されてもよい。また、以下の説明では、閉じたＳＡＮを単に「ＳＡＮ」と言うこともある。
【００２０】
また、以下の説明において、経路番号が表す「経路」は、バスであってもよいし、バスに代えてまたは加えてバス上のデバイスであってもよい。
【００２１】
図１は、複数の実施例の共通概念を示す。
【００２２】
エッジノードとして、サーバ（３００ａ）およびストレージ（１００）があり、中継ノードとして、スイッチ装置（以下、スイッチ）（２００）がある。閉じたＳＡＮ（２０１ａ）が、サーバ（３００ａおよび３００ｂ）と、ストレージ（１００ａ）と、それらが接続されたスイッチ（２００ａ）で構成されている。閉じたＳＡＮ（２０１ｂ）が、サーバ（３００ｃおよび３００ｄ）と、ストレージ（１００ａ）と、それらが接続されたスイッチ（２００ｂ）で構成されている。
【００２３】
また、ポートＩＤ割当て部（２１０）とフォワーディング部（１１０）がある。ポートＩＤ割当て部（２１０）は、各スイッチ（２００ａ、２００ｂ）に設けられてもよいし（２１０ａ、２１０ｂ）、各サーバ（３００）および各ストレージ（１００）と通信可能に接続された管理装置（４１０）に設けられてもよい（２１０ｃ）。フォワーディング部（１１０）は、少なくとも、追加ストレージ（１００ｂ）が接続されるストレージ（１００ａ）に設けられる。ポートＩＤ割当て部（２１０）およびフォワーディング部（１１０）のうちの少なくとも一方は、プログラムがプロセッサにより実行されることで実現される機能であってもよいし、そのようなプロセッサと専用ハードウェアとの両方により実現されてもよいし、専用ハードウェアのみで実現されてもよい。
【００２４】
ポートＩＤとして、通常のポートＩＤ（５００）の他に、プロキシポートＩＤ（５１０）が設けられる。通常のポートＩＤ（５００）は、閉じたＳＡＮ（２１０）に参加しているエッジノード、例えばストレージ（１００ａ）を宛先としたポートＩＤであり、プロキシポートＩＤ（５１０）は、追加ノードを宛先としたポートＩＤ、例えば追加ストレージ（１００ｂ）を宛先としたポートＩＤである。
【００２５】
ポートＩＤ（５００、５１０）のいずれも、少なくとも３つの要素、すなわち、ストレージ番号（５０１、５１１）、経路番号（５０２、５１２）およびユニーク番号（５０３、５１３）を含む。すなわち、ポートＩＤ（５００、５１０）は、ストレージ番号（５０１、５１１）が設定されるフィールドと、経路番号（５０２、５１２）が設定されるフィールドと、ユニーク番号（５０３、５１３）が設定されるフィールドとを有する。ストレージ番号（５０１、５１１）は、ストレージ（１００）の識別番号であり、経路番号（５０２、５１２）は、ストレージ（１００）内部の経路の識別番号であり、ユニーク番号（５０３、５１３）は、スイッチ（２００）が接続されている閉じたＳＡＮ（２０１）内でユニークな番号（重複しない番号）である（例えば、ユニーク番号は、ポートＩＤが生成される都度に更新（例えばインクリメント）される番号である）。ユニーク番号をポートＩＤが含んでいるので、閉じたＳＡＮ（２１０）において重複したポートＩＤが存在することがない。なお、追加ノードおよび追加ノードが接続されるエッジノードがそれぞれストレージでなくてもよい場合、ストレージ番号はノード番号でよい。ポートＩＤは、ノード種別を表す識別番号を含んでもよい。また、ポートＩＤ（５００）における番号（５０１）〜（５０３）の並び順と、プロキシポートＩＤ（５１０）における番号（５１１）〜（５１３）の並び順は、同じであっても異なっていてもよい。後者の場合、各ポートＩＤ（５００、５１０）は、ポートＩＤの種別を表す識別番号を含んでもよい。以下の実施例では、ポートＩＤ（５００）における番号（５０１）〜（５０３）の並び順と、プロキシポートＩＤ（５１０）における番号（５１１）〜（５１３）の並び順は、同じであり、ストレージ（１００ａ）のストレージ番号が“０”であり、ストレージ（１００ｂ）のストレージ番号“１”であり、それらの番号の違いから、フォワーディング部（１１０）が、受信したパケット（６００）（図８参照）をストレージ（１００ｂ）に転送するか否かを判別できる。なお、パケット（６００）は、宛先領域（６０１）、発信元領域（６０２）およびデータ領域（６０３）を含む。宛先領域（６０１）には、宛先としてのポートＩＤ（５００または５１０）が設定され、発信元領域（６０２）には、パケット（６００）を送信した装置に割り当てられているポートＩＤ（５００）が設定され、データ領域（６０３）には、データまたはコマンドが設定される。
【００２６】
ポートＩＤ割当て部（２１０）は、ポートＩＤ（５００）を以下のように生成する。すなわち、ポートＩＤ割当て部（２１０）は、ＳＡＮ（２０１）に接続されているストレージ（１００ａ）のストレージ番号と、そのストレージ（１００ａ）の内部でＳＡＮ（２０１）とつながっている経路の経路番号とを取得する。取得されたストレージ番号および経路番号は、通常のポートＩＤ割当て操作によって割り当てられるポートＩＤ（５００）の中に、ストレージ番号（５０１）および経路番号（５０２）として組み込まれる。このほかに、ポートＩＤ割当て部（２１０）は、スイッチ（２００）が接続されているＳＡＮ（２０１）内で一意となる番号を生成し、その番号をユニーク番号（５０３）としてポートＩＤ（５００）の中に含める。通常のポートＩＤ（５００）は、サーバ（３００ａ〜３００ｄ）にそれぞれ割り当てられ（５００ａ〜５００ｄ）、また、ストレージ（１００ａ）に割り当てられる（５００ｅおよび５００ｆ）。なお、通常のポートＩＤ（５００）の割当ては、通常ポートＩＤの割当て要求に応答して行われてよい。割当て要求は、第１割当て要求の一例である。
【００２７】
ポートＩＤ割当て部（２１０）は、プロキシポートＩＤ（５１０）を以下のように生成する。すなわち、ポートＩＤ割当て部（２１０）は、ストレージ（１００ａ）から、転送先ストレージ番号と転送先ストレージ（１００ｂ）が接続されている経路の経路識号とが指定された（関連付けられた）ポートＩＤ割当て要求（以下、特殊割当て要求）を受け、特殊割当て要求に応答して、転送先ストレージ番号（５１１）と転送先ストレージ（１００ｂ）が接続されている経路の経路番号（５１２）とを含んだプロキシポートＩＤ（５１０）を、特殊割当て要求の送信元ストレージ（１００ａ）に割り当てる。なお、特殊割当て要求は、第２割当て要求の一例である。
【００２８】
ストレージ（１００ａ）は、閉じたＳＡＮ（２０１）に接続されていない別のストレージ（１００ｂ）にフォワーディングを行う設定を受けたとき、ポート割当て部（２１０）を含んだ装置、すなわち、ストレージ（１００ａ）が属する全てのＳＡＮ（２０１ａ、２０１ｂ）のスイッチ（２００ａ、２００ｂ）、または、管理装置（４１０）に対して、上述の特殊割当て要求を送信する。ポート割当て部（２１０）は、特殊割当て要求で指定されている転送先ストレージ番号（５１１）および経路番号（５１２）と、ＳＡＮ（２１０）内で一意となる番号（５１３）とを含んだプロキシポートＩＤ（５１０）を生成し、そのプロキシポートＩＤ（５１０）を、特殊割当て要求の送信元ストレージ（１００ａ）に割り当てる。
【００２９】
フォワーディング部（１１０）は、パケット（６００）をストレージ（１００ａ）が受信した場合、そのパケット（６００）の宛先ポートＩＤ（宛先領域（６０１）におけるポートＩＤ）が通常のポートＩＤ（５００）であるかプロキシポートＩＤ（５１０）であるかを、そのポートＩＤ中のストレージ番号から判別する。この判別を容易とするために、通常ポートＩＤ（５００）のストレージ番号（５０１）の位置（ポートＩＤ（５００）の先頭からのオフセット）とプロキシポートＩＤ（５１０）の転送先ストレージ番号（５１１）の位置（プロキシポートＩＤ（５１０）の先頭からのオフセット）が一致していてもよい。
【００３０】
フォワーディング部（１１０）は、受信したパケット（６００）の宛先ポートＩＤが通常ポートＩＤ（５００）であると判断し、且つ、宛先ポートＩＤが自ストレージ（１００ａ）に割り当てられている通常ポートＩＤ（５００ｅまたは５００f）と一致した場合、受信したパケット（６００）が自ストレージ（１００ａ）に対する要求であると判断する。
【００３１】
フォワーディング部（１１０）は、受信したパケット（６００）の宛先ポートＩＤが通常ポートＩＤ（５００）であると判断し、且つ、宛先ポートＩＤが自ストレージ（１００ａ）に割り当てられているいずれの通常ポートＩＤ（５００ｅ、５００f）とも不一致の場合、そのパケット（６００）は別のＳＡＮ（２０１ｂ）内のサーバ（３００ｃまたは３００ｄ）宛てに送られたものと判断し、宛先ポートＩＤ（通常ポートＩＤ（５００））から経路番号（５０２）を取得し、その経路番号（５０２）に接続されている経路経由でパケット（６００）を転送する。
【００３２】
フォワーディング部（１１０）は、受信したパケット（６００）の宛先ポートＩＤがプロキシポートＩＤ（５１０）であると判断した場合、宛先ポートＩＤ（プロキシポートＩＤ（５１０））から経路番号（５１２）を取得し、その経路番号（５１２）が表す経路に接続されている装置（つまりストレージ（１００ｂ））にパケット（６００）を転送する。
【００３３】
以上の処理によれば、ストレージ（１００ａ）は、受信したパケットが有する宛先ポートＩＤ中のストレージ番号から、そのパケットを自ストレージ（１００ａ）で処理するのか別ストレージに転送するのかを判別し、その宛先ポートＩＤ中の経路番号から転送先を判別することができる。つまり、ストレージ（１００ａ）は転送管理表無しにフォワーディングを行うことができる。このため、フォワーディングの負荷は軽く、故に、ストレージ（１００ａ）の入出力性能の低下を軽減することができる。また、ストレージ（１００ａ）に、転送管理表を記憶するための領域を確保する必要が無い。
【００３４】
なお、閉じたＳＡＮ（２０１ａ）において、プロキシポートＩＤがストレージ（１００ａ）に割り当てられた場合、所定の通知（ポートＩＤ状態変更の通知）が、閉じたＳＡＮ（２０１ａ）内の他の全てのエッジノードに送信される。その通知を受けたエッジノード（ここでサーバ（３００ａおよび３００ｂ））が、ポートＩＤ一覧をスイッチ（２００ａ）（又は管理装置（４１０））に要求することで、上記割り当てられたプロキシポートＩＤを認識することができる。その後、サーバ（３００ａおよび３００ｂ）は、そのプロキシポートＩＤを宛先ポートＩＤとしたパケットを送信することができる。
【００３５】
また、ポートＩＤの構成は、閉じたＳＡＮ（２０１）において一意であり（重複せず）、且つ、ストレージ（１００ａ）の物理的構成が反映された構成となっている。一例として、前述したように、ポートＩＤは、ストレージ番号及び経路番号と、ユニーク番号とを含んでいる。ユニーク番号が閉じたＳＡＮ（２０１）において一意であるので、ポートＩＤが閉じたＳＡＮ（２０１）において一意であることが担保される。また、経路番号から、パケット（またはパケット内のコマンド）の転送先経路（デバイス）が一意に特定される。また、ストレージ番号から、パケット内のコマンドを取り出し自ストレージが処理するか、或いは、パケットを他ストレージに転送するかの判断が可能である。
【００３６】
以上が、複数の実施例の共通概念である。以下、各実施例を詳細に説明する。
【実施例１】
【００３７】
図２は、実施例１に係る計算機システムの構成を示す。
【００３８】
１台のサーバストレージシステム筐体（４００）内の中でストレージ（１００ａ）と２台以上のサーバ（３００ａ〜３００ｄ）が１以上の閉じたＳＡＮ（２０１ａおよび２０１ｂ）によって接続されている。筐体（４００）外にＳＡＮ（２０１）を引き出すことはできず、筐体（４００）内において設計上定められたサーバ台数以上はＳＡＮ（２０１）に接続できない。
【００３９】
サーバ（３００）は、物理的なサーバであってもよいし、図３に示すように、物理的なサーバ（３００ａ）内の仮想的なサーバ（３００ｅ、３００f）であってもよい。なお、図３では、ＳＡＮを１つしか示しておらず、ほかのＳＡＮおよびそのＳＡＮに接続されているスイッチとサーバは省略されている。また、ＳＡＮ内のスイッチ（２００）は、仮想的なスイッチでもよい。仮想的なスイッチは、サーバ内で仮想的に実現されてもよいし、サーバ外で物理的に存在する別の装置上で仮想的に実現されてもよい。また、サーバ（３００）に代えてまたは加えて、ストレージ（１００）も、物理的なストレージに限らず、仮想的なストレージ（例えば、物理的なストレージを論理的に区切ることで生成された仮想ストレージ）であってもよい。
【００４０】
ポートＩＤ割当て部（２１０）は、スイッチ（２００ａ、２００ｂ）に設けられている（２１０ａ、２１０ｂ）。
【００４１】
図２の構成例を用いて、実施例１で行われる動作を説明する。なお、本動作は、ストレージ（１００ａ）に接続されているＳＡＮ（２０１ａ、２０１ｂ）すべてに対して等しく実行されるため、図３以降では１つのＳＡＮ（２０１ａ）を示し、他のＳＡＮ（２０１ｂ）を省略する。
【００４２】
＜動作例１＞基本構成における通常ポートＩＤの割り当て
【００４３】
図４は、初期状態、すなわち、追加ストレージ（１００ｂ）がまだストレージ（１００ａ）に接続されておらず、閉じたＳＡＮ（２０１ａ）においてサーバ（３００ａ、３００ｂ）およびストレージ（１００ａ）にポートＩＤが割り当てられていない状態を示す。この状態から、通常ポートＩＤ（５００）がサーバ（３００）およびストレージ（１００）に割り当てられる動作を説明する。
【００４４】
（１．１）スイッチ（２００ａ）に搭載されているポートＩＤ割当て部（２１０ａ）は、ポートＩＤを割り当てる動作を開始する前に、スイッチ（２００ａ）に接続されているストレージ（１００ａ）のストレージ番号と、ストレージ内部でＳＡＮ（２０１ａ）への入出力経路を識別する経路番号とを取得する。例えば、ストレージ（１００ａ）が、ストレージ番号と経路番号とをスイッチ（２００ａ）に通知する。ストレージ番号は、後からフォワーディング先となるストレージ（１００ｂ）が接続された際に、２台以上になったストレージ（１００ａ、１００ｂ）を判別可能な一意の番号である必要がある。ストレージ（１００ａ）に対してポートＩＤを割り当てる動作の前に、ポートＩＤ割当て部（２１０ａ）が、ストレージ（１００ａ）（または前述の管理装置（４１０））から、ストレージ（１００ａ）のストレージ番号とストレージ（１００ａ）内の経路（スイッチ（２００ａ）に接続されている経路）の経路番号を受信する。本例では、ストレージ（１００ａ）のストレージ番号を“０”とし、スイッチ（２００ａ）に接続されている経路の経路番号を“０”とする。
【００４５】
（１．２）ポートＩＤ割当て部（２１０ａ）は、通常ポートＩＤ（５００）に、ストレージ番号“０”をストレージ番号（５０１）として設定し、経路番号“０”を経路番号（５０２）として設定する。設定完了後、スイッチ（２００ａ）（ポートＩＤ割当て部（２１０ａ））は、ポートＩＤ割り当てを受け付ける動作（例えば、ポートＩＤの割当て要求の受付）を開始する。
【００４６】
（１．３）ＳＡＮ（２０１ａ）に接続されているサーバ（３００ａ、３００ｂ）およびストレージ（１００ａ）は、それぞれ、スイッチ（２００ａ）に対してポートＩＤの割当て要求を送信する。
【００４７】
（１．４）スイッチ（２００ａ）は、割当て要求を受信する都度に、ポートＩＤ割当て部（２１０ａ）に、ポートＩＤの割り当てを指示する。ポートＩＤ割当て部（２１０ａ）は、ＳＡＮ（２０１ａ）において一意に識別可能な番号を、ユニーク番号（５０３）として、先に設定されたストレージ番号（５０１）および経路番号（５０２）を有する通常ポートＩＤ（５００）に設定し、図５に示すように、番号（５０１）〜（５０３）を含んだポートＩＤ（５００）を、割当て要求の送信元装置（サーバ（３００）またはストレージ（１００ａ））に割り当てる。
【００４８】
以上の（１．１）〜（１．４）により、図５に示すように、ＳＡＮ（２０１ａ）において重複しない通常ポートＩＤ（５００ａ、５００ｂ、５００ｅ）が割り当てられ、閉じたＳＡＮ（２０１ａ）内では、一般的な通信手順に基づいて通信可能となる。
【００４９】
＜動作例２＞追加ストレージ（１００ｂ）のストレージ（１００ａ）への接続時動作
【００５０】
動作例１が完了後、ストレージ（１００ｂ）を接続してストレージ（１００ａ）がフォワーディング準備完了となるまでの動作例を、図６及び図７を参照して説明する。
【００５１】
（２．１）図６に示すように、追加ストレージ（１００ｂ）がストレージ（１００ａ）に接続される。そして、双方にフォワーディングを行う準備動作が指示される。本指示は、ストレージ（１００ａおよび（１００ｂ）が電気的物理接続および論理接続を検出したことであってもよいし、前述した管理装置（４０１）（またはストレージ（１００ａおよび１００ｂ）がそれぞれ有する入力部）から出されてもよい。ストレージ（１００ａ）および追加ストレージ（１００ｂ）は、相互のストレージ番号およびフォワーディングに必要な情報の交換を行う。追加ストレージ（１００ｂ）のストレージ番号は、ストレージ（１００ａ）に接続した時に、ストレージ（１００ａ）のストレージ番号に重複しない番号をストレージ（１００ａ）が割り当ててよい。または、追加ストレージ（１００ｂ）をストレージ（１００ａ）に接続する前に管理装置（４１０）から追加ストレージ（１００ｂ）のストレージ番号が割り当てられてもよい。管理装置（４１０）は、ＳＡＮ内のストレージのストレージ番号を管理していて、追加ストレージが生じた場合には、管理しているストレージ番号と重複しない番号（例えば通し番号）を生成しその番号を追加ストレージに割り当てることができる。本例では、追加ストレージ（１００ｂ）のストレージ番号を“１”とする。
【００５２】
（２．２）ストレージ（１００ａ）は、スイッチ（２００ａ）に対して、転送先ストレージ番号（５１１）と転送先ストレージ（１００ｂ）が接続されている経路（ストレージ（１００ａ）内の経路）の経路番号（５１２）とを指定した特殊割当て要求を送信する。本例では、転送先ストレージ番号（５１１）は“１”であり、経路番号（５１２）は“１”であるとする。
【００５３】
（２．３）スイッチ（２００ａ）は、特殊割当て要求を受信し、ポートＩＤ割当て部（２１０ａ）にプロキシポートＩＤの割り当てを指示する。ポートＩＤ割当て部（２１０ａ）は、プロキシポートＩＤ（５１０）に、転送先ストレージ番号（５１１）として番号“１”を設定し、経路番号（５１２）として番号“１”を設定し、閉じたＳＡＮ（２０１ａ）内で一意な番号をユニーク番号（５１３）として設定し、それにより、プロキシポートＩＤ（５１０）が完成する。ポートＩＤ割当て部（２１０ａ）は、特殊割当て要求の送信元ストレージ（１００ａ）に、生成したプロキシポートＩＤ（５１０）を割り当てる。図６の例によれば、ユニーク番号（５１３）として番号“０”〜“２”が発行済のため、プロキシポートＩＤ（５１０）のユニーク番号（５１３）として、一意な番号“３”が設定される（図７参照）。
【００５４】
（２．４）ストレージ（１００ａ）は、スイッチ（２００ａ）のポートＩＤ割当て部（２１０ａ）からプロキシポートＩＤ（５１０）の割り当てを受けた後、フォワーディング部（１１０）に対して、パケット（６００）を受信した場合にはそのパケット（６００）が通常ポートＩＤ（５００）宛てかプロキシポートＩＤ（５１０）宛てかを判別させるように設定する。
【００５５】
（２．５）追加ストレージ（１００ｂ）は、ストレージ（１００ａ）からフォワーディングされるパケット（６００）の受信に備えて内部の設定を行う。
【００５６】
以上の動作により、図７に示すように、プロキシポートＩＤ（５１０）がストレージ（１００ａ）に割り当てられ、閉じたＳＡＮ（２０１ａ）内のサーバ（３００ａ、３００ｂ）から、追加ストレージ（１００ｂ）へパケット（６００）が到達する経路が確立される。以上の動作を、ストレージ（１００ａ）に接続されている他の閉じたＳＡＮ（２０１ｂ）に対しても行う。なお、サーバ（３００ａおよび３００ｂ）は、ストレージ（２００ａ）に割り当てられている通常ポートＩＤ（５００）を認識しているが、この動作例２が完了した場合に、プロキシポートＩＤ（５１０）を認識する。
【００５７】
＜動作例３＞フォワーディング時（往路）
【００５８】
動作例２が完了した状態では、閉じたＳＡＮ（２０１）に接続されているサーバ（３００）は、プロキシポートＩＤ（５１０）を宛先として指定することで、追加ストレージ（１００ｂ）にアクセス可能な状態である。この状態でサーバ（３００）から追加ストレージ（１００ｂ）にコマンドを送る場合の動作例を、図９を参照して説明する。
【００５９】
（３．１）サーバ（３００ｂ）は、追加ストレージ（１００ｂ）にコマンドを送信するために、パケット（６００ａ）の宛先領域（６０１）にプロキシポートＩＤ（５１０）を設定し、パケット（６００ａ）の発信元領域（６０２）にサーバ（３００ｂ）の通常ポートＩＤ（５００ｂ）を設定し、パケット（６００ａ）のデータ領域（６０３）にコマンドを設定する。サーバ（３００ｂ）は、生成したパケット（６００ａ）をスイッチ（２００ａ）に送る。
【００６０】
（３．２）スイッチ（２００ａ）は、パケット（６００ａ）を受信し、通常のルーティング動作により、宛先領域（６０１）中のポートＩＤに基づいてパケット（６００ａ）の転送先ストレージ（１００ａ）を特定し、ストレージ（１００ａ）にパケット（６００ａ）を転送する。
【００６１】
（３．３）ストレージ（１００ａ）は、パケット（６００ａ）を受信し、受信したパケット（６００ａ）をフォワーディング部（１１０）に渡す。フォワーディング部（１１０）は、パケット（６００ａ）の宛先領域（６０１）中のポートＩＤがプロキシポートＩＤ（５１０）であることを特定する。例えば、フォワーディング部（１１０）が、宛先のポートＩＤ中のストレージ番号（５０１または５１１）が、自ストレージ（１００ａ）のストレージ番号と一致する場合、宛先ポートＩＤが通常ポートＩＤ（５００）と判断し、それらのストレージ番号が不一致の場合、宛先ポートＩＤがプロキシポートＩＤ（５１０）と判断する。
【００６２】
（３．４）フォワーディング部（１１０）は、プロキシポートＩＤ（５１０）から経路番号（５１２）を取得し、取得した経路番号が表す経路へパケット（６００ａ）を転送する。これにより、パケット（６００ａ）が追加ストレージ（１００ｂ）へ転送される。
【００６３】
（３．５）追加ストレージ（１００ｂ）は、ストレージ（１００ａ）からパケット（６００ａ）を受信する。追加ストレージ（１００ｂ）は、受信したパケット（６００ａ）中のデータ領域（６０３）に含まれるコマンドを取り出しそのコマンドに従う処理を行う。
【００６４】
以上の課程を経て、サーバ（３００ｂ）から追加ストレージ（１００ｂ）にコマンドが格納されたパケット（６００ａ）が到着する。
【００６５】
＜動作例４＞フォワーディング時（復路）
【００６６】
動作例３の後、追加ストレージ（１００ｂ）は、コマンドの処理結果をサーバ（３００ｂ）に返すために、結果が含まれたパケット（６００）を送信する。コマンドに対する結果を返す動作例を、図１０を参照して説明する。本動作例では、結果が含まれるパケット（６００ｂ）を追加ストレージ（１００ｂ）からサーバ（３００ｂ）に送る動作を説明する。
【００６７】
（４．１）追加ストレージ（１００ｂ）は、コマンドの処理結果をパケット（６００ｂ）のデータ領域（６０３）に設定し、コマンドが格納されていたパケット（６００ａ）中の宛先ポートＩＤをパケット（６００ｂ）の発信元領域（６０２）に設定し、パケット（６００ａ）中の発信元ポートＩＤをパケット（６００）の宛先領域（６０１）に設定する。それにより、新たなパケット（６００ｂ）が生成される。追加ストレージ（１００ｂ）は、パケット（６００ｂ）をストレージ（１００ａ）に送信する。
【００６８】
（４．２）ストレージ（６００ａ）は、パケット（６００ｂ）を受信し、受信したパケット（６００ｂ）をフォワーディング部（１１０）に渡す。フォワーディング部（１１０）は、パケット（６００ｂ）の宛先が通常ポートＩＤ（５００）であることを識別し、ストレージ（１００ａ）に割り当てられた通常ポートＩＤ（５００ｅ、
５００f）と比較する。ここではそれらのポートＩＤは一致しないので、フォワーディング部（１１０）は、宛先としての通常ポートＩＤ（５００）から経路番号（５０２）を取得し、取得した経路番号が表す経路へパケット（６００ｂ）を転送する。これにより、パケット（６００ｂ）がスイッチ（２００ａ）へ転送される。
【００６９】
（４．３）スイッチ（２００ａ）は、パケット（６００ｂ）を受信し、通常のルーティング動作により、サーバ（３００ｂ）にパケット（６００ｂ）を転送する。
【００７０】
（４．４）サーバ（３００ｂ）は、パケット（６００ｂ）を受信し、送信したコマンドの実行結果に対して適切な処理を実行する。
【００７１】
＜動作例５＞通常時
【００７２】
ストレージ（１００ａ）とストレージ（１００ａ）にＳＡＮ（２０１ａ）経由で接続されているサーバ（３００ａ）の往路時の通信手順を、図１１を参照して説明する。
【００７３】
（５．１）サーバ（３００ａ）は、ストレージ（１００ａ）が持つ通常ポートＩＤ（５００ｅ）を宛先ポートＩＤとしたパケット（６００ｃ）を、スイッチ（２００ａ）に送信する。
【００７４】
（５．２）スイッチ（２００ａ）は、宛先ポートＩＤが割り当てられているストレージ（１００ａ）に、パケット（６００ｃ）を転送する。
【００７５】
（５．３）ストレージ（１００ａ）は、受信したパケット（６００ｃ）をフォワーディング部（１１０）に送る。フォワーディング部（１１０）は、パケット（６００ｃ）の宛先ポートＩＤが通常ポートＩＤ（５００）であることを識別し、ストレージ（１００ａ）に割り当てられているポートＩＤ（５００ｅ）と比較する。両者のポートＩＤ（５００）が一致するので、フォワーディング部（１１０）は、パケット（６００ｃ）は自ストレージ（１００ａ）宛てであると判断し、ストレージ（１００ａ）に対してコマンドを転送する。具体的には、例えば、フォワーディング部（１１０）は、宛先ポートＩＤから経路番号（５０２）を取得し、取得した経路番号が表す経路にパケット（６００ｃ）中のコマンドを転送する。
【００７６】
（５．４）ストレージ（１００ａ）は、コマンドを処理する。
【００７７】
次に、コマンドに対する結果を含んだパケットの復路時の通信手順を、図１２を参照して説明する。
【００７８】
（５．５）ストレージ（１００ａ）は、コマンドに対する結果を含むパケット（６００ｄ）を生成する。パケット（６００ｄ）は、宛先ポートＩＤとしてサーバ（３００ａ）の通常ポートＩＤ（５００ａ）を含み、発信元ポートＩＤとしてストレージ（１００ａ）の通常ポートＩＤ（５００ｅ）を含む。ストレージ（１００ａ）は、生成したパケット（６００ｄ）を、宛先ポートＩＤ中の経路番号（５０２）が表す経路に送信する。これにより、パケット（６００ｄ）がスイッチ（２００ａ）に送信される。
【００７９】
（５．６）スイッチ（２００ａ）は、パケット（６００ｄ）を受信し、パケット（６００ｄ）の宛先ポートＩＤ（５００ａ）に基づいて、サーバ（３００ａ）にパケット（６００ｄ）を転送する。
【００８０】
（５．７）サーバ（３００ａ）は、パケット（６００ｄ）を受信し、パケット（６００ｄ）中のコマンド実行結果に対して適切な処理を実行する。
【００８１】
図１３は、実施例１に係るシステムの詳細な構成例を示す。
【００８２】
ストレージ（１００）同士を接続するデバイスは、バス直結デバイスであり、バス直結デバイスの一例として、ＮＴＢ（NON-Transparent Bridge）（３２２）が採用されている。すなわち、ストレージ（１００ａ）と追加ストレージ（１００ｂ）の間の接続媒体として、PCI expressバスとＮＴＢ（３２２）とが用いられる。ストレージ（１００）は、外部装置が接続可能なインターフェイス（例えばポート）（３１２０）を有していて、ストレージ（１００ａおよび１００ｂ）のインターフェイス（３１２０ａおよび３１２０ｂ）間を、ＮＴＢ（３２２）を介して接続できる。ＮＴＢ（３２２）を介して、PCI expressのＲＣ（Root Complex）（３１２ａおよび３１２ｂ）を接続した場合、双方のＣＰＵ（Central Processing Unit）（３１０ａ及び３１０ｂ）から相手側へ一対一の通信路を作ることができる。ＮＴＢ（３２２）のようなバス直結デバイスを採用した１つの理由は次の通りである。すなわち、バス直結デバイスではなくネットワーク経由でストレージ（１００ａ）に追加ストレージ（１００ｂ）を接続すると、ストレージ（１００ａ）が、ＩＰアドレスのようなネットワークアドレスを取得する等のネットワーク管理を行う必要、つまり、ネットワークルータの役割をする必要が生じる。経路番号（５１２）を使用するだけでフォワーディングを実現することが望ましい。そこで、バス直結デバイスを使用することで、経路番号（５１２）（例えばバス番号）を使用するだけで、パケットの転送が可能となっている。なお、ＲＣ（３１２）もバス直結デバイスの一種であるが、ＲＣ（３１２ａ）およびＲＣ（３１２ｂ）同士を直接接続すると両者がイニシエータとなってしまうので、イニシエータ／ターゲットの関係を構築するためにＮＴＢ（３２２）が介在する。
【００８３】
ストレージ（１００ａ）のＣＰＵ（３１０ａ）は、ＲＣ（３１２ａ）に接続されているＴＢＡ（Target Bus Adaptor）（３２１ａおよび３２１ｂ）、ＮＴＢ（３２２）およびディスクコントローラ（３１３ａ）のようなデバイスを、ストレージ（１００ａ）内で一意に割り当てられるデバイス番号で識別できる。ＲＣ（３１２ａ）であれば、デバイス番号を経路番号として用いることが可能である。経路番号は、例えば、ストレージ（１００）のPCI expressバスのスロットＩＤでよい（PCI expressは、登録商標）。フォワーディング部（１１０）は、本例では、プログラムをストレージ（１００）のＣＰＵ（３１０）で実行されることにより実現される。そのため、フォワーディング部（１１０）の実体であるプログラムはストレージ（１００）のメインメモリ（３１１）上にあるとする。また、ディスクコントローラ（３１３ａ）は、ストレージコントローラの一例であり、不揮発性記憶デバイスの一例としてのディスク（３１４）に対するデータの入出力を制御する。ディスク（３１４）は、例えばＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）である。ＴＢＡ（３２１）は、ストレージが有するインターフェイスデバイスの一例である。
【００８４】
ちなみに、サーバ（３００）も、ＲＣ（３１２）を有する。ＲＣ（３１２）に、ＣＰＵ（３１０）およびＨＢＡ（Host Bus adaptor）（３２０）が接続されている。ＣＰＵ（３１０）がメインメモリ（３１１）を使用する。ＨＢＡ（３２０）は、サーバが有するインターフェイスデバイスの一例である。また、スイッチ（２００）は、例えば、ＦＣ（Fibre Channel）スイッチである。また、図示しないが、ストレージ（１００）および各サーバ（３００）が、ＮＩＣ（Network Interface Card）のようなインターフェイスを有していて、そのインターフェイスを介して、管理装置（４１０）に接続可能である。
【００８５】
図１７は、スイッチ（２００）の詳細な構成例を示す。
【００８６】
スイッチ（２００）は、複数のポート（物理ポート）（２１３）と、ポート（２１３）間のルーティングを行うスイッチ部（２１４）と、転送管理表であるルーティングテーブル（２１２）を記憶した記憶領域と、ルーティングテーブル（２１２）を基にスイッチ部（２１４）の動作を制御するコントローラ（２１１）とを有しており、このようなスイッチ（２００）に、更に、ポートＩＤ割当て部（２１０）が組み込まれている。スイッチ部（２１４）が、コントローラ（２１１）による制御の下で、ポート（２１３）から入ってきたパケット（６００）に含まれる宛先ポートＩＤと、ルーティングテーブル（２１２）とに基づいて、転送先ポート（２１３）を特定し、特定したポート（２１３）にパケット（６００）を転送する。ポートＩＤ割当て部（１１０）は、物理的な機構（ハードウェア）として実装されていてもよいし、コントローラ（２１１）によりプログラムが実行されることで実現されてもよい。
【００８７】
ストレージ（１００）、スイッチ（２００）およびサーバ（３００）の動作を、図１４〜図１９を参照して説明する。
【００８８】
＜ストレージの動作例＞
【００８９】
図１４は、電源投入時からのストレージ（１００）の動作フローを示す。ストレージ（１００）の電源投入により、本フローが開始される。また、以下の説明では、ＣＰＵ（３１０）が１以上のプログラムを実行することにより、制御部（図示せず）と、フォワーディング部（１１０）が実現されるとする。
【００９０】
制御部が、ストレージ（１００）のストレージ番号（５０１）とスイッチ（２００ａ）に接続する経路の経路番号（５０２）とを、その経路の先につながっているスイッチ（２００）に対して通知する（ステップ１００１）。本通知方法はスイッチ（２００）との間の通信の一部として行われる。制御部が、スイッチ（２００）に対して、ポートＩＤ（５００）の割当て要求を送信し、通常ポートＩＤ（５００）の割り当てを受ける（ステップ１００２）。このステップ１００１および１００２は、初期化処理において行われてよい。
【００９１】
制御部は、パケット（６００）を受信したか否かを判断する（ステップ１０２０）。その判断結果が偽の場合（ステップ１０２０：Ｎｏ）、再度ステップ１０２０が行われる。
【００９２】
パケット（６００）を受信した場合（ステップ１０２０：Ｙｅｓ）、制御部が、フォワーディング部（１１０）を呼び出し、フォワーディング部（１１０）が、パケット（６００）の宛先ポートＩＤがプロキシポートＩＤ（５１０）であるか否かを判断する（ステップ１０２１）。
【００９３】
ステップ１０２１の判断結果が偽の場合（ステップ１０２１：Ｎｏ）、フォワーディング部１１０が、パケット（６００）中の宛先ポートＩＤがステップ１００２で割り当てられたポートＩＤ（５００）と一致するか否かを判断する（ステップ１０２２）。
【００９４】
ステップ１０２２の判断結果が真の場合（ステップ１０２２：Ｙｅｓ）、制御部が、パケット（６００）からコマンドを取得し、そのコマンドに従う処理（例えばディスク（３１４）に対するＩ／Ｏ（Input/Output）処理）を実行する（ステップ１００３）。制御部は、処理したコマンドを含んでいたパケット（６００）中の発行元ポートＩＤを宛先ポートＩＤとして含み且つステップ１００３の処理結果を含んだパケット（６００）を生成する（ステップ１００４）。制御部は、そのパケット（６００）中の宛先ポートＩＤから経路番号（５０２）を取得し、その経路番号が表す経路（デバイス）にそのパケット（６００）を送る（ステップ１００５）。これにより、パケット（６００）が、コマンドを含んでいたパケット（６００）の発行元装置に送られる。
【００９５】
ステップ１０２２の判断結果が偽の場合（ステップ１０２２：Ｎｏ）、制御部が、パケット（６００）中の宛先ポートＩＤから経路番号（５０２）を取得し、その経路番号が表す経路（デバイス）にそのパケット（６００）を送る（ステップ１００５）。
【００９６】
ステップ１０２１の判断結果が真の場合（ステップ１０２１：Ｙｅｓ）、フォワーディング部１１０が、パケット（６００）中のプロキシポートＩＤ（５１０）における転送先ストレージ番号（５１０）が自ストレージ（２００）のストレージ番号と一致するか否かを判断する（ステップ１０２３）。
【００９７】
ステップ１０２３の判断結果が真の場合（ステップ１０２３：Ｙｅｓ）、それは、このストレージが追加ストレージ（１００ｂ）であることを意味する。この場合、制御部が、パケット（６００）からコマンドを取得し、そのコマンドに従う処理を行う（ステップ１００６）。制御部が、処理したコマンドを含んでいたパケット（６００）中の発行元ポートＩＤを宛先ポートＩＤとして含み且つステップ１００６の処理結果を含んだパケット（６００）を生成する（ステップ１００７）。制御部が、そのパケット（６００）を、コマンドを含んでいたパケット（６００）が転送されてきた経路（デバイス）に対して送り返す。つまり、そのパケット（６００）が、追加ストレージ（１００ｂ）へパケット（６００）を転送してきたストレージ（１００ａ）に返される。
【００９８】
ステップ１０２３の判断結果が偽の場合（ステップ１０２３：Ｎｏ）、それは、このストレージが、追加ストレージ（１００ｂ）が接続されたストレージ（１００ａ）であることを意味する。この場合、フォワーディング部（１１０）が、パケット（６００）中のプロキシポートＩＤ（５１０）から経路番号（５１２）を取得し、その経路番号が表す経路（デバイス）にそのパケット（６００）を送る。これにより、パケット（６００）が追加ストレージに転送される。
【００９９】
図１５は、ストレージ（１００ａ）に追加ストレージ（１００ｂ）が接続されたときのストレージ（１００ａ）の動作フローを示す。本フローは、追加ストレージ（１００ｂ）が接続されたことがストレージ（１００ａ）により検出された場合（追加ストレージ（１００ｂ）又は別の外部装置から何らかの信号が与えられた場合）に開始される。
【０１００】
ＣＰＵ（３１０ａ）が、追加ストレージ（１００ｂ）のストレージ番号を取得し（ステップ１１０１）、追加ストレージ（１００ｂ）への経路（デバイス）を識別する経路番号を取得する（ステップ１１０２）。ＣＰＵ（３１０ａ）が、ステップ１１０１で取得したストレージ番号とステップ１１０２で取得した経路番号をそれぞれ転送先ストレージ番号（５１１）と転送先経路番号（５１２）として指定された特殊割当て要求を、未だその要求の送信先となっていないスイッチ（２００）に対して送信する（ステップ１１０３）。その要求に応答して、ＣＰＵ（３１０ａ）が、追加ストレージ（１００ｂ）のプロキシポートＩＤ（５１０）の割当てを受ける（ステップ１１０３）。
【０１０１】
ＣＰＵ（３１０ａ）は、ストレージ（１００ａ）に接続されているすべてのスイッチ（２００）についてステップ１１０３が行われた場合（ステップ１１２０：Ｙｅｓ）、本フローを終了し、未だステップ１１０３が行われていないスイッチ（２００）がある場合、そのスイッチ（２００）についてステップ（１１０３）を行う。
【０１０２】
図１６は、ストレージ（１００ａ）に追加ストレージ（１００ｂ）が接続されたときの追加ストレージ（１００ｂ）の動作フローを示す。本フローは、追加ストレージ（１００ｂ）がストレージ（１００ａ）に接続されたことが追加ストレージ（１００ｂ）により検出された場合（ストレージ（１００ａ）又は別の外部装置から何らかの信号が与えられた場合）に開始される。
【０１０３】
ＣＰＵ（３１０ｂ）が、ストレージ（１００ａ）へ自ストレージ番号を通知し（ステップ１２０１）、ストレージ（１００ａ）へ接続している経路（デバイス）から受信したパケットに対する返答は、その経路（デバイス）に送るような設定を行う（ステップ１２０２）。
【０１０４】
＜スイッチの動作例＞
【０１０５】
図１８は、電源投入時からのスイッチ（２００）の動作フローを示す。スイッチ（２００）の電源投入により、本フローが開始される。
【０１０６】
スイッチ（２００）のコントローラ（２１１）が、ストレージ（１００ａ）のストレージ番号（５０１）とストレージ（１００ａ）内でこのスイッチ（２００）につながる経路（デバイス）を識別する経路番号（５０２）とを、ストレージ（１００ａ）との通信によって取得する（ステップ２００１）。ステップ２００１は、初期化処理において行われてよい。なお、コントローラ（２１１）は、メモリを有し、受信したストレージ番号（５０１）および経路番号（５０２）をメモリに格納する。その後、通常のポートＩＤの割当て要求を受信した場合、コントローラ（２１１）は、そのメモリ内のストレージ番号および経路番号と、生成したユニーク番号とを含んだポートＩＤを、割当て要求の送信元に送信することができる。
【０１０７】
コントローラ（２１１）が、パケット（６００）を受信したか否かを判断する（ステップ２０２０）。この判断結果が偽の場合（ステップ２０２０：Ｎｏ）、再度ステップ２０２０が行われる。
【０１０８】
ステップ２０２０の判断結果が真の場合（ステップ２０２０：Ｙｅｓ）、コントローラ（２１１）が、パケット（６００）の宛先ポートＩＤがスイッチ（２００）宛てのポートＩＤであるか否かを判断する（ステップ２０２１）。
【０１０９】
ステップ２０２１の判断結果が偽の場合（ステップ２０２１：Ｎｏ）、コントローラ（２１１）が、ルーティングテーブル（２１２）を参照し、転送先ポート（２１３）を特定し、受信したパケット（６００）を転送先ポート（２１３）へ転送する（ステップ２００２）。
【０１１０】
ステップ２０２１の判断結果が真の場合（ステップ２０２１：Ｙｅｓ）、コントローラ（２１１）が、受信したパケット（６００）に含まれるコマンドが通常のポートＩＤの割当て要求であるか否かを判断する（ステップ２０２２）。
【０１１１】
ステップ２０２２の判断結果が真の場合（ステップ２０２２：Ｙｅｓ）、コントローラ（２１１）が、ステップ２００１で取得したストレージ番号（５０１）と経路番号（５０２）を含む通常ポートＩＤ（５００）を生成する（ステップ２００６）。コントローラ（２１１）は、その通常ポートＩＤ（５００）の割り当て返答を含むパケット（６００）を生成し（ステップ２００７）、そのパケット（６００）を、割当て要求元に接続されているポート（２１３）に送る。コントローラ（２１１）は、このスイッチ（２００）に接続されている装置に、ポートＩＤ状態変更があったことを示す通知を含んだパケットを送信する（ステップ２００９）。
【０１１２】
ステップ２０２２の判断結果が偽の場合（ステップ２０２２：Ｎｏ）、コントローラ（２１１）が、受信したパケット（６００）に含まれるコマンドが特殊割当て要求であるか否かを判断する（ステップ２０２３）。
【０１１３】
ステップ２０２３の判断結果が真の場合（ステップ２０２３：Ｙｅｓ）、コントローラ（２１１）が、特殊割当て要求に含まれている転送先ストレージ番号（５１１）と経路番号（５１２）を取得し、これら２つの番号を含んだプロキシポートＩＤ（５１０）を生成する。コントローラ（２１１）は、そのプロキシポートＩＤ（５１０）の割り当て返答を含むパケット（６００）を生成し（ステップ２００７）、その後、ステップ２００８及び２００９を行う。
【０１１４】
ステップ２０２３の判断結果が偽の場合（ステップ２０２３：Ｎｏ）、コントローラ（２１１）が、パケット（６００）中のコマンド（スイッチ（２００）へのコマンド）を処理し、返答を作成し（ステップ２００３）、その返答を含んだパケット（６００）を、受信したパケット（６００）の送信元が接続されているポート（２１３）に送る（ステップ２００４）。
【０１１５】
＜サーバの動作例＞
【０１１６】
図１９は、電源投入時からのサーバ（３００）の動作フローを示す。サーバ（３００）の電源投入により、本フローが開始される。
【０１１７】
ＣＰＵ（３１０ｃ）が、スイッチ（２００）に通常ポートＩＤ（５００）の割当て要求を含んだパケットを送信し、それに応答して通常ポートＩＤ（５００）を取得する（ステップ３００２）。
【０１１８】
ＣＰＵ（３１０ｃ）が、スイッチ（２００）からポート変更通知を含むパケットを受信した場合（ステップ３００１）、スイッチ（２００）に接続されている装置のポートＩＤ一覧の要求を含んだパケットをスイッチ（２００）に送信し、それに応答して、スイッチ（２００）に接続されている装置のポートＩＤ一覧を取得する（ステップ３００３）。
【０１１９】
ＣＰＵ（３１０ｃ）が、アクセス可能なＬＵ（Logical Unit）のＬＵＮの一覧を取得する（ステップ３００４）。例えば、ＣＰＵ（３１０ｃ）が、ストレージの通常ポートＩＤを宛先ポートＩＤとして含み且つＬＵ一覧要求を含んだパケットを生成し送信するか、或いは、ＬＵ探索処理（例えばInquiryコマンドを含んだパケットのブロードキャスト送信）を実行する。
【０１２０】
ＣＰＵ（３１０ｃ）が、ＣＰＵ（３１０ｃ）が実行するアプリケーションによるＩ／Ｏ要求があるか否かを判断する（ステップ３０２０）。この判断結果が偽の場合（ステップ３０２０：Ｎｏ）、再度ステップ３０２０が行われる。
【０１２１】
ステップ３０２０の判断結果が真の場合（ステップ３０２０：Ｙｅｓ）、ＣＰＵ（３１０ｃ）が、ストレージのポートＩＤを宛先ポートＩＤとして含み且つＩ／Ｏ要求を含んだパケットを送信する（ステップ３００５）。
【０１２２】
ＣＰＵ（３１０ｃ）が、Ｉ／Ｏ要求を含んだパケットの応答としてのパケットが返ってきたか否かを判断する（ステップ３０２１）。この判断結果が偽の場合（ステップ３０２１：Ｎｏ）、再度ステップ３０２１が行われる。
【０１２３】
ステップ３０２１の判断結果が真の場合（ステップ３０２１：Ｙｅｓ）、ＣＰＵ（３１０ｃ）が、返ってきたパケット中の結果（Ｉ／Ｏ要求に対する応答）に従う処理を行い、その処理結果を、Ｉ／Ｏ要求送信元のアプリケーションに返す（ステップ３００６）。
【実施例２】
【０１２４】
複数のＳＡＮの管理を容易とするために、管理装置と管理経路が用いられる。本実施例では、管理装置と管理経理を含んだシステムによりストレージ番号と経路番号をスイッチに伝える方法を、図２０を参照して説明する。
【０１２５】
図２０は、実施例２に係る計算機システムの構成を示す。
【０１２６】
管理装置（４１０）は、計算機（例えばサーバと同等の計算機）であるか、または専用構成を持つ装置でもよい。管理装置（４１０）は、サーバ（３００）、スイッチ（２００）およびストレージ（１００）に、ＳＡＮ（２０１）とは独立した管理経路（４１１）を介して接続され、それらの装置を管理する。
【０１２７】
実施例１では、ストレージ（１００）のストレージ番号（５０１）と経路番号（５０２）が、ストレージ（１００）とスイッチ（２００）の間の通信によって伝達していたが、本実施例では、ストレージ（１００）のストレージ番号（５０１）および経路番号（５０２）を管理装置（４１０）が管理しており、管理装置（４１０）が、それらの番号を、管理経路（４１１）を介して配布する。
【０１２８】
以下、実施例１と異なる点を主に説明する。
【０１２９】
＜ストレージの動作例＞
【０１３０】
図１４の動作フローとの相違点をあげる。ステップ１００１では、スイッチ（２００）が、ストレージ（１００）のストレージ番号（５０１）を、管理経路（４１１）を通じて管理装置（４１０）より受ける。その他は、実施例１と同様である。
【０１３１】
図１５の動作フローとの相違点をあげる。ＣＰＵ（３１０ａ）が、ストレージ（１００ａ）に追加ストレージ（１００ｂ）が接続されたこと示す通知を、管理装置（４１０）から受ける。ステップ１１０１では、ＣＰＵ（３１０ａ）が、追加ストレージのストレージ番号を管理装置（４１０）より受ける。その他は、実施例１と同様である。
【０１３２】
図１６の動作フローとの相違点をあげる。ＣＰＵ（３１０ｂ）が、追加ストレージ（１００ｂ）がストレージ（１００ａ）に接続されたことを示す通知を、管理経路（４１１）を通じて管理装置（４１０）より受ける。ステップ１２０１が無い。その他は、実施例１と同様である。
【０１３３】
＜スイッチの動作例＞
【０１３４】
図１８の動作フローとの相違点を挙げる。ステップ２００１で、コントローラ（２１１）が、ストレージ（１００ａ）のストレージ番号（５０１）と経路番号（５０２）を、管理経路（４１１）を通じて管理装置（４１０）から受ける。その他は、実施例１と同様である。
【０１３５】
さて、管理装置（４１０）は、管理者に対してＳＡＮ（２０１）の接続状態を表す情報（例えば画面）を表示する。ここで言う「表示する」とは、管理装置（４１０）が有する表示デバイスに情報を表示することであってもよいし、管理装置（４１０）に接続されている遠隔の表示用計算機に表示用の情報を送信することであってもよい。管理装置（４１０）が表示する画面の変化を、図２１〜図２４を参照して説明する。
【０１３６】
図２１は、追加ストレージ（１００ｂ）がストレージ（１００ａ）に接続される前の状態（図５の状態）を示す画面を示し、図２２は、追加ストレージ（１００ｂ）がストレージ（１００ａ）に接続された後の状態（図７の状態）を示す画面を示す。
図２１と図２２を比べればわかるように、追加ストレージ（１００ｂ）の接続が完了した場合に、画面上では、ストレージ（１００ａ）にプロキシポートＩＤ（５１０）に対応する新しい接続経路が追加されたように見える。
【０１３７】
なお、追加ストレージ（１００ｂ）のポートはＳＡＮ（２０１）内に無いため、管理装置（４１０）は、画面上に追加ストレージ（１００ｂ）を表示しないが、図２３に示すように、ＳＡＮ内にポートを持たない追加ストレージ（１００ｂ）を表すオブジェクトを表示してもよい。または、管理装置（４１０）は、図２４に示すように、プロキシポートＩＤが追加ストレージへの経路として見えるように表示してもよい。
【実施例３】
【０１３８】
実施例３は、閉じたＳＡＮ（２０１）が１つのＬＳＩ（Large Scale Integration）によって論理的に実施された例である。通常のＳＡＮ（２０１）では、サーバ（３００）に搭載されるＨＢＡ（３２０）およびストレージ（１００）に搭載されるＴＢＡ（３２１）が別々の装置に存在する。本実施例では、ＨＢＡ（３２０）とＴＢＡ（３２１）の両方の機能を持つような装置（３３０）が存在し、サーバ（３００）とストレージ（１００）を接続している、
【０１３９】
図２５は、実施例３に係る計算機システムの詳細な構成例を示す。
【０１４０】
ＨＢＡ（３２０）とＴＢＡ（３２１）の両方の機能を持つ装置として、ＳＡＮ
ＬＳＩ（３３０）が採用される。ＳＡＮ ＬＳＩ（３３０）は、中継ノードの一例である。なお、本例において、サーバ（３００）は仮想サーバでもよく、その場合には、ＳＡＮ
ＬＳＩ（３３０）が、仮想的な複数のハードウェアインターフェイスを１台の物理サーバ（３００）に提供し、物理サーバ（３００）内の仮想化管理ソフト（例えばハイパバイザ）が、物理サーバ（３００）内の仮想サーバ（３００）に仮想的なハードウェアインターフェイスを割り当てる。サーバ（３００）とストレージ（１００ａ）が、PCI-Expressで通信可能に接続されていてもよい。
【０１４１】
本例において、ＳＡＮ
ＬＳＩ（３３０）は、サーバ（３００）にＨＢＡ（３２０）と同様のハードウェアインターフェイスを提供し、ストレージ（１００）にはＴＢＡ（３２１）と同様のハードウェアインターフェイスを提供しているため、動作フローにおいて変更はない。ＳＡＮのスイッチは、ＬＳＩ（３３０）の内部で仮想的に実現される。ポートＩＤ割当て部（２１０）は、ＳＡＮ
ＬＳＩ（３３０）の一機構としてハードウェア的またはＳＡＮ ＬＳＩ内部のプロセッサによるプログラムによって当該機能が実現されてよい。
【０１４２】
実施例２において、スイッチ（２００）に対して管理装置（４１０）により管理経路（４１１）経由でストレージ（１００ａ）のストレージ番号および経路番号が与えられるが、本実施例では、図２６に示すように、ＳＡＮ
ＬＳＩ（３３０）に直接接続されている管理経路（４１１）が存在しない。そのため、実施例３では、管理装置（４１０）からサーバ（３００）経由でストレージ番号および経路番号がＳＡＮ
ＬＳＩ（３３０）に与えられる。
【０１４３】
以下、スイッチ（ＳＡＮ
ＬＳＩ（３３０））の動作フローについて、実施例２のスイッチ（２００）の動作フローとの相違点をあげる。ステップ２００１で、ＬＳＩ（３３０）が、ストレージ（１００ａ）のストレージ番号（５０１）と経路番号（５０２）を、サーバ（３００）との間のインターフェイス初期化処理において、管理装置（４１０）から受ける。その他は、実施例２と同様である。
【０１４４】
実施例３におけるＳＡＮ
ＬＳＩ（３３０）に代えて、ＳＡＮ以外のネットワークのＬＳＩ（サーバのインターフェイスとストレージのインターフェイスとの両方を持つ装置）が採用されてよい。
【０１４５】
以上、幾つかの実施例を説明したが、本発明はそれらの実施例に限られない。
【０１４６】
例えば、ネットワークシステムにエッジノードとしてサーバおよびストレージが混在することに代えて、ネットワークシステムに含まれる全てのエッジノードがサーバであってもよいしストレージであってもよい。
【０１４７】
また、例えば、ストレージ（１００ａ）に、第１追加ストレージ（１００ｂ）に加えて第２追加ストレージが接続されてもよい。その場合、ストレージ（１００ａ）に、第１追加ストレージ（１００ｂ）用の第１プロキシポートＩＤに加えて、第２追加ストレージ用の第２プロキシポートＩＤが割り当てられる。
【０１４８】
また、例えば、第２追加ストレージ（１００ｂ）は、ストレージ（１００ａ）ではなく第１追加ストレージ（１００ｂ）に接続されてもよい（フォワーディング部は各ストレージ（１００）が有していてよい）。つまり、ストレージ（１００ａ）、第１追加ストレージ（１００ｂ）及び第２追加ストレージが直列に接続されてもよい。この場合、第２追加ストレージ用の第２プロキシポートＩＤは、第２追加ストレージよりも上流側の全てのストレージ（１００ａおよび１００ｂ）に割り当てられてよい。
【０１４９】
また、例えば、追加ノードの種類と同じ種類のエッジノードに追加ノードが接続されてもよいし、追加ノードの種類と異なる種類のエッジノードに追加ノードが接続されてもよい。前者のケースでは、例えば、追加ノードがストレージであれば、ストレージに追加のストレージが接続され、後者のケースでは、例えば、追加ノードがストレージであれば、サーバに追加のストレージが接続される。
【０１５０】
また、例えば、追加ノードは、中間ノードでもよい。すなわち、閉じたネットワークのエッジノードに、間接的にエッジノードが接続されてもよい。具体的には、閉じたネットワークのエッジノードに中間ノードが接続され、その中間ノードに、１以上のエッジノードが接続されてもよい。
【符号の説明】
【０１５１】
１００：ストレージ装置、１１０：フォワーディング部、２００：スイッチ装置、２０１：閉じたＳＡＮ、２１０：ポートＩＤ割当て部、３００：サーバ装置、５００：通常ポートＩＤ、５１０：プロキシポートＩＤ
【図１】
2015115630.tif 000003
【図２】
2015115630.tif 000004
【図３】
2015115630.tif 000005
【図４】
2015115630.tif 000006
【図５】
2015115630.tif 000007
【図６】
2015115630.tif 000008
【図７】
2015115630.tif 000009
【図８】
2015115630.tif 000010
【図９】
2015115630.tif 000011
【図１０】
2015115630.tif 000012
【図１１】
2015115630.tif 000013
【図１２】
2015115630.tif 000014
【図１３】
2015115630.tif 000015
【図１４】
2015115630.tif 000016
【図１５】
2015115630.tif 000017
【図１６】
2015115630.tif 000018
【図１７】
2015115630.tif 000019
【図１８】
2015115630.tif 000020
【図１９】
2015115630.tif 000021
【図２０】
2015115630.tif 000022
【図２１】
2015115630.tif 000023
【図２２】
2015115630.tif 000024
【図２３】
2015115630.tif 000025
【図２４】
2015115630.tif 000026
【図２５】
2015115630.tif 000027
【図２６】
2015115630.tif 000028