(57)【特許請求の範囲】
【請求項１】
スイッチ及び宛先ノードと通信するための方法であって、
使用可能でない前記宛先ノードを示すテスト経路要求に応答して、前記スイッチに配信不能通知を戻させるために配信不能通知サービスを要求するテスト・サービス・パラメータを含む、前記スイッチによるログインを開始するステップと、
前記スイッチが前記配信不能通知サービスを伴ったログインを受諾するという前記スイッチからの応答を受け取ることに応答して、前記ログインにおいて前記テスト・サービスが使用可能であることを示すステップと、
前記スイッチのログインにおいて前記配信不能通知サービスが使用可能であると判断することに応答して、前記テスト経路要求を前記スイッチに送り、前記宛先ノードが使用可能であるかどうかを判断するステップと、
前記テスト経路要求が向けられる前記宛先ノードが使用可能でないと前記スイッチが判断することに応答して、前記スイッチから前記配信不能通知を受け取るステップと、
を含む方法。
【請求項２】
前記テスト経路要求は、前記スイッチを介して前記宛先ノードに送られる、請求項１に記載の方法。
【請求項３】
前記宛先ノードに関する状態変化通知を受け取ることをさらに含み、前記テスト経路要求は、前記状態変化通知を受け取ること及び前記配信不能通知サービスが使用可能であると判断することに応答して送られる、請求項２に記載の方法。
【請求項４】
前記配信不能通知サービスが使用可能でないと判断することに応答して、前記宛先ノードが使用可能であるかどうかを判断するためのクエリを送るステップと、
前記クエリが送られたときからのタイムアウト時間の後に、前記宛先ノードが使用可能であることを示す前記クエリへの応答を受け取らないことに応答して、使用可能でないものとして前記宛先ノードを示すステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記テスト・サービスを要求する前記ログインは、ファイバーチャネルのクラス３サービスの一部として開始される、請求項１に記載の方法。
【請求項６】
前記テスト経路要求は、前記テスト経路要求を前記宛先ノードに配信することができない、前記スイッチを含むいずれかの転送者が、前記配信不能通知を前記スイッチと前記転送者との間の次の中間エンティティに戻すように要求する、配信不能通知パラメータを含む、請求項２に記載の方法。
【請求項７】
前記テスト経路要求は前記スイッチを介してファブリック・コントローラに送られ、前記ファブリック・コントローラは前記宛先ノードが使用可能であるかどうかを判断し、かつ、前記宛先ノードについての前記配信不能通知を戻し、前記配信不能通知は前記スイッチを介して前記ファブリック・コントローラから受け取られる、請求項１に記載の方法。
【請求項８】
アダプタ及び宛先ノードと通信するための方法であって、
前記アダプタから、配信不能通知サービスを要求するテスト・サービス・パラメータを含むログイン要求を受け取るステップと、
前記配信不能通知がサポートされていると判断することに応答して、前記アダプタにおいて使用可能であるものとして前記配信不能通知サービスを示すステップと、
前記アダプタから、前記宛先ノードへのテスト経路要求を受け取るステップと、
前記テスト経路要求を前記宛先ノードに転送するステップと、
前記テスト経路要求が向けられる前記宛先ノードが使用可能でないと判断するステップと、
前記宛先ノードが使用可能でないと判断することに応答して、前記アダプタにおいて前記配信不能通知サービスが使用可能であるかどうかを判断するステップと、
前記アダプタにおいて前記配信不能通知サービスが使用可能であると判断することに応答して、前記宛先ノードについての配信不能通知を前記アダプタに送るステップと、
を含む方法。
【請求項９】
前記アダプタにおいて前記配信不能通知が使用可能でないと判断することに応答して、前記宛先ノードが使用可能でないことを示す前記配信不能通知を前記アダプタに送らないステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記配信不能通知サービスは、ファイバーチャネルのクラス３のプロトコルでサポートされている、請求項８に記載の方法。
【請求項１１】
スイッチ及び宛先ノードと通信状態にあるシステムであって、
前記スイッチ及び前記宛先ノードと通信するためのアダプタを含み、前記アダプタは、請求項１から請求項７までのいずれかのステップを実行するように動作可能であるシステム。
【請求項１２】
デバイス・アダプタ及び宛先ノードと通信状態にあるスイッチであって、
前記デバイス・アダプタ及び前記宛先ノードと通信するためのスイッチ・アダプタを含み、前記スイッチ・アダプタは、請求項８から請求項１０までのいずれかのステップを実行するように動作可能であるスイッチ。
【請求項１３】
請求項１から請求項１０の何れか１つの記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークにおけるスイッチとデバイスの間の配信不能通知（non-delivery notification）をサポートするための方法、システム及びコンピュータ・プログラムに関する。
【背景技術】
【０００２】
ファイバーチャネル・ストレージ・エリア・ネットワーク（Storage Area Network、ＳＡＮ）において、ファイバーチャネル・ファブリックは、幾つかのスイッチと、イニシエータ（例えば、サーバ）Ｎｘ＿ＰｏｒｔとターゲットＮｘ＿Ｐｏｒｔ（例えば、ストレージ・デバイス）との間の相互接続部とからなることができる。２つのＮｘ＿Ｐｏｒｔ間の経路におけるいずれかの物理ファイバーチャネル・リンクが故障したとき、或いはサービス措置、リセット又は他の回復措置のためにオフラインにされたとき、通信中のＮｘ＿Ｐｏｒｔは、これらの間の通信経路全体の状態を迅速に判断して、より高レベルのアプリケーション又はオペレーティング・システムが故障した経路を使用し、非常に長いタイムアウト回復を経験する前に、故障に対する措置をとり、この通信経路を回復すること、又は、別の使用可能な経路を使い始めることができるようにしなければならない。
【０００３】
ネットワークにおけるサーバ又は他のデバイスは、クエリ・フレームを送ることによって、別のノードへの経路の状態を判断することができる。ファイバーチャネルの実装において、状態を判断したいと思うデバイスは、ＰＤＩＳＣ拡張リンク・サービス（Extended Link Service、ＥＬＳ）要求を、第１のＮｘ＿Ｐｏｒｔから第２の宛先Ｎｘ＿Ｐｏｒｔに送り、タイムアウト時間内の応答又は応答の欠如を用いて、経路の状態を判断することができる。代替的に、デバイスは、クエリをネームサーバに送り、ターゲット・デバイスが、デバイスにおけるリンクの故障又はリンクのオフライン状況のために、ネームサーバから登録を取り消されたかどうかを判断することができる。これらの方法の各々は、このデバイスからの通信に影響を与え得るファブリックの状態の変化を示す登録状態変化通知（Registered State Change Notification、ＲＳＣＮ）をファブリックから受信したときに開始することができる。
【０００４】
ファイバーチャネルのクラス２サービスは、フレーム又は要求の受信確認付き（acknowledged）配信、及び、フレーム又は要求を配信できなかった場合のファブリックによる要求側への通知を要求することによって、デバイスの可用性についての情報を提供する。例えば、ファイバーチャネルのクラス２サービスにおいて、要求が１つのＮｘ＿Ｐｏｒｔから別のＮｘ＿Ｐｏｒｔに送られ、ファブリックにおけるいずれの特定の地点においても要求をターゲットに配信できない場合、要求を配信できなかったスイッチは、ファブリック拒否（Ｆ＿ＲＪＴ）又はファブリック・ビジー（Ｆ＿ＢＳＹ）応答を要求側に送らなければならない。これにより、経路の一部が故障しているという表示が、要求側に即時に（マイクロ秒で）与えられる。開始プログラム（initiator）が現在ファブリック又はネームサーバにそれぞれログインされていない場合には、クラス２サービスをさらに用いて、ネームサーバに照会し、即時のＦ＿ＲＪＴ又はＰ＿ＲＪＴ（ポート拒否）が受信されるようにすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ファイバーチャネルのクラス２サービスは、ファイバーチャネルのスイッチ及びホストバス・アダプタに実装するには高価であり、非エンタープライズ・クラスのファイバーチャネル・デバイスには広く用いられていない。配信通知の確認を必要としないファイバーチャネルのクラス３サービスの使用が、より一般的である。配信できなかったクラス３クエリは、要求側に通知されずに削除される。ファイバーチャネルのクラス３環境においては、ファイバーチャネル経路の状態を判断したいと思うデバイスは、クエリを宛先ノードに送り、応答のないタイムアウト時間の満了を待ち、テストされている宛先ノードへの経路が使用可能でないことを判断する必要がある。経路の状態を判断するためにタイムアウト時間を待つために、経路の故障をタイムリーに判断することはできない。例えば、要求側は、２秒−１０秒のオーダーであるタイムアウト時間を待たなければならないだけでなく、幾つかの実施においては、経路が故障したと判断する前に、もう一度クエリ及びタイムアウトを再試行しなければならないことがある。何らかの他のエラー又はファブリック輻輳が原因でタイムアウトが生じることもあるので、この判断が正確であるという保証はない。
【課題を解決するための手段】
【０００６】
ネットワークにおけるスイッチとデバイスの間の配信不能通知をサポートするためのコンピュータ・プログラム、システム、及び方法が提供される。使用可能でない宛先ノードを示すテスト経路要求に応答して、スイッチに配信不能通知を戻させるために配信不能通知サービスを要求するテスト・サービス・パラメータを含む、スイッチによるログインを開始する。スイッチが配信不能通知サービスを伴ったログインを受諾するというスイッチからの応答を受け取ることに応答して、ログインにおいてテスト・サービスが使用可能であることを示す。スイッチのログインにおいて配信不能通知サービスが使用可能であると判断することに応答して、テスト経路要求をスイッチに送り、宛先ノードが使用可能であるかどうかを判断する。テスト経路要求が向けられる宛先ノードが使用可能でないとスイッチが判断することに応答して、スイッチから配信不能通知を受け取る。
【０００７】
ネットワークにおけるスイッチとデバイスの間の配信不能通知をサポートするためのコンピュータ・プログラム、システム、及び方法が提供される。配信不能通知サービスを要求するテスト・サービス・パラメータを含むログイン要求をアダプタから受け取る。配信不能通知がサポートされていると判断することに応答して、アダプタにおいて使用可能であるものとして配信不能通知サービスを示す。アダプタから、宛先ノードへのテスト経路要求を受け取る。テスト経路要求を宛先ノードに転送する。テスト経路要求が向けられる宛先ノードが使用可能でないと判断する。宛先ノードが使用可能でないと判断することに応答して、アダプタにおいて配信不能通知サービスが使用可能であるかどうかを判断する。アダプタにおいて配信不能通知サービスが使用可能であると判断することに応答して、宛先ノードについての配信不能通知をアダプタに送る。
【０００８】
ここで本発明の実施形態が、添付図面を参照して単なる例として説明される。
【図面の簡単な説明】
【０００９】
【図１】ネットワーク・コンピューティング環境の実施形態を示す。
【図２】デバイス・ログイン要求の実施形態を示す。
【図３】デバイス・ログイン情報の実施形態を示す。
【図４】スイッチ・ログイン情報の実施形態を示す。
【図５】テスト経路要求の実施形態を示す。
【図６】スイッチとデバイスの間に配信不能通知サービスを伴ったログインを確立するための、デバイス及びスイッチ内で実行される動作の実施形態を示す。
【図７】配信不能通知サービスを用いて宛先ノードの可用性を判断するための、デバイス及びスイッチ内で実行される動作の実施形態を示す。
【発明を実施するための形態】
【００１０】
図１は、ネットワーク７において、デバイス２が、スイッチ６を介して宛先ノード４に接続される実施形態を示す。デバイス２、宛先ノード４及びスイッチ６は、ストレージ・エリア・ネットワーク（ＳＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、イントラネット、インターネット、広域エリア・ネットワーク（ＷＡＮ）、無線ネットワーク等のような、スイッチ、デバイス、及びストレージ・システムの１つ又は複数のファブリックを含むより大きいネットワーク７の一部とすることができる。宛先ノード４は、ネットワーク７内の他のデバイスにパケットを送ると共に、パケットを受信することができる。さらに、宛先ノード４は、デバイス２が通信することができる、ネットワーク７内のいずれかのデバイスを表わす。
【００１１】
デバイス２は、プロセッサ８と、メモリ１０と、アダプタ１２とを含むことができる。メモリ１０は、オペレーティング・システム１４と、デバイス２の動作とアダプタ１２のハードウェアとの間のインターフェースを提供するアダプタ・デバイス・ドライバ１６とを含む。アダプタ１２は、アダプタ・コントローラ１８と、３つが示されている１つ又は複数のポート２０ａ、２０ｂ、２０ｃとを含む。アダプタ・コントローラ１８は、アダプタ１２及びポート２０ａ、２０ｂ、２０ｃの動作を管理する。デバイス２は、ホスト、ストレージ・デバイス又は他のネットワーク・コンポーネントを含むことができる。
【００１２】
スイッチ６は、アダプタ２２の動作を制御するためのアダプタ・コントローラ２４と、ファイバーチャネル・ファブリックのようなネットワーク内のデバイスへの相互接続を与えるための１つ又は複数のポート２６ａ、２６ｂ、２６ｃとを含む。スイッチ６は、プロセッサ２８と、プロセッサ２８により実行されるオペレーティング・システム３２及びアダプタ・デバイス・ドライバ３４プログラムを有するメモリ３０とを含む。アダプタ・デバイス・ドライバ３４は、スイッチ・コンポーネントとアダプタ２２との間のインターフェースを提供する。デバイス２上のポート２０ｃは、スイッチ・アダプタ２２上のポート２６ｂに接続され、スイッチ・ポート２６ａは、宛先ノード４内のアダプタ（図示せず）に接続される。スイッチ６は、他のスイッチ、ホスト、ストレージ・デバイス等を含む、ネットワーク内のデバイスの間の相互接続を提供するために、複数のポートを有する複数のアダプタを含むことができる。
【００１３】
デバイス２及びスイッチ６は、コードを実行するプロセッサ８、２８を含むように示される。代替的な実施形態においては、デバイス２及びスイッチ６のコード及び論理は、ハードウェア・デバイスとして実装することができる。メモリ・デバイス１０、３０は、揮発性又は不揮発性のコンピュータ・メモリ・デバイスを含むことができる。
【００１４】
ネットワーク内のデバイス２、６、８は、スイッチド（switched）ファブリック構成で接続することができる。代替的な実施形態においては、デバイスは、アービトレート型ループ又はポイントツーポイント構成で接続することができる。ファイバーチャネルの実装において、デバイス２及び宛先ノード４は、Ｎｘ＿ｐｏｒｔを含むことができる。特定の実装において、スイッチ６は、該スイッチを通してパケットを宛先ノードに送る接続されたデバイスに成功又は失敗の受信確認（acknowledgement）を自動的には戻さない、クラス３のファイバー・チャネル・サービスを用いて、スイッチ６がデバイス２及び宛先ノード４に接続することができる。
【００１５】
図２は、デバイス２のようなネットワーク７内のデバイスが、スイッチ６を用いたログイン及びこれとのセッションの確立を実行し、デバイス２が、スイッチ６に直接的又は間接的に接続されたネットワーク７内の他のデバイスと通信するのを可能にする、デバイス・ログイン要求５０の実施形態を示す。この要求５０は、ログイン要求パラメータ５２と、デバイス２がテスト経路要求を送った場合に、スイッチ６が宛先ノード４に配信できないという配信不能通信を与えるようにデバイス２がスイッチ６に要求する、配信不能通知（non-delivery notification、ＮＤＮ）フラグ５４とを含む。ファイバーチャネルの実装において、ＮＤＮフラグ５４を含むデバイス・ログイン要求５０は、ファブリック・ログイン（Fabric Login、ＦＬＯＧＩ）拡張リンク・サービス（Extended LinkService、ＥＬＳ）要求を含むことができる。デバイス２及びスイッチ６が、サービス・パラメータ５４を交換して、配信不能通知サービスを確立し、そこでスイッチ６は、宛先ノードに配信することができないという配信不能通知が、テスト経路要求に対して与えられることを確認する。
【００１６】
１つのファイバーチャネルの実装において、ＮＤＮフラグ５４は、例えば、フレームに配信できないことを即時に通知する機能へのサポートを具体的に記述する新しいＥＬＳサービスへのサポートを示す、ファイバーチャネルのクラス３サービスについてのクラスサービス・パラメータのワード０（現在予約されている、ワード０ビット２０のような）内の配信不能通知（ＮＤＮ）サービス・オプションを含むことができる。スイッチ６のアダプタ２２は、クラス３サービス・パラメータのサービス・オプション・ワードにおけるＮＤＮサポートを示すＬＳ＿ＡＣＣ（リンクサービスの受諾）によりＦＬＯＧＩに応答し、ファブリック７全体がこの新しい機能をサポートすることを示すことができる。スイッチ間リンク（ＩＳＬ）を通して相互接続されるスイッチは、例えば、リンク確立パラメータ（Establish Link Parameter、ＥＬＰ）のスイッチ間リンク・サービスを用いて交換されるクラス３のポート相互接続パラメータにおいて新しいビットを定義することによって、接続されたスイッチにおけるこの機能へのサポートを判断することができる。
【００１７】
ファイバーチャネルの実装において、スイッチ６は、テスト経路要求を廃棄することでき、ＮＤＮサービスがサポートされているとき、Ｆ＿ＲＪＴ（ファブリック拒否）ファイバーチャネル・リンク制御フレーム又はＬＳ＿ＲＪＴ（リンクサービス拒否）ＥＬＳ応答シーケンスの形で、配信不能通知を戻す。配信不能通知は、テスト経路要求フレームを配信することができない理由（宛先ポートがオフラインである、宛先がログインされていない、ソースがログインされていない等）を示す理由コードを含むことができる。
【００１８】
非ファイバーチャネルの実装又は他のタイプのファイバーチャネルの実装のような代替的な実施形態においては、異なるワード、パラメータ、及び他のプロトコルを用いて、ログイン中の配信不能通知へのサポートを確立することができる。
【００１９】
図３は、例えばポート２６ａ、２６ｂ、２６ｃなどのスイッチ・アダプタ・ポート６２と、識別されたスイッチ・ポート６２に送られたテスト経路要求に対して配信不能通知が与えられるかどうかを示す配信不能通知（ＮＤＮ）フラグ６４とを示すためにデバイス２が保持するデバイス・ログイン情報６０の実施形態を示す。デバイス・ログイン情報６０は、アダプタ・デバイス・ドライバ１６、アダプタ・コントローラ１８、及び／又は他のデバイス２のコードによって保持することができる。
【００２０】
図４は、例えばポート２０ａ、２０ｂ、２０ｃなどのデバイス・アダプタ・ポート７２と、識別されたデバイス・ポート７２からのテスト経路要求に対して配信不能通知が与えられるかどうかを示す配信不能通知（ＮＤＮ）フラグ７４とを示すようにスイッチ６が保持するスイッチ・ログイン情報７０の実施形態を示す。スイッチ・ログイン情報７０は、アダプタ・デバイス・ドライバ３４、アダプタ・コントローラ２４、及び／又は他のスイッチ６のコードによって保持することができる。
【００２１】
図５は、メッセージをテスト経路要求として識別するテスト経路要求パラメータ８２と、宛先ノードがテスト経路要求に応答していないことを検知したときに、スイッチ６に信号を送って配信不能通知を与える配信不能通知フラグ８４とを含んだ、宛先ノード４に関する状態変化通知を受け取ることに応答してデバイス・アダプタ１２がスイッチ６を介して宛先ノード４に送るテスト経路要求８０の実施形態を示す。このように、スイッチ・アダプタ２２及びデバイス・アダプタ１２が、要求に対して配信不能通知を与えないファイバーチャネルのクラス３サービスのようなプロトコルを用いて通信したとしても配信不能通知を与えるように、スイッチ６に信号が送られる。
【００２２】
図６は、デバイス・アダプタ１２とスイッチ・アダプタ２２との間のログインを開始して、テスト経路要求の配信不能通知を与えるために、デバイス２及びスイッチ６において、具体的には、デバイス２及びスイッチ６のアダプタ・デバイス・ドライバ１６、３４及び／又はアダプタ・コントローラ１８、２４において実行される動作の実施形態を示す。動作１００、１０２、１１４、１１６、１１８及び１２０は、デバイスのアダプタ・コントローラ１８及び／又はアダプタ・デバイス・ドライバ１６によって実行することができ、動作１０４、１０６、１０８、１１０及び１１２は、スイッチのアダプタ・コントローラ２４及び／又はアダプタ・デバイス・ドライバ３４によって実行することができる。デバイスのアダプタ・デバイス・ドライバ１６及び／又はアダプタ・コントローラ１８は、テスト経路要求に対する配信不能通知を要求するテスト・サービス・パラメータ５４を伴うデバイス・ログイン要求５０を送ることによって（ブロック１０２において）、スイッチ６によるログインを開始する（ブロック１００において）。配信不能通知を要求するように設定されたテスト・サービス・パラメータ５４を含むログイン要求５０をデバイス・アダプタ１２から受け取ると（ブロック１０４において）、ログインを処理するスイッチのアダプタ・コントローラ２４及び／又はデバイス・ドライバ３４は、配信不能通知サービス（ＮＤＮ）がサポートされているかどうかを判断する（ブロック１０６において）。（ブロック１０６において）ＮＤＮサービスがサポートされていない場合には、スイッチのアダプタ・コントローラ２４及び／又はデバイス・ドライバ３４は、ＮＤＮサービスがサポートされていることを示さずに、ログインへの受諾を戻す（ブロック１０８において）。（ブロック１０６において）ＮＤＮサービスがサポートされている場合には、スイッチのアダプタ・コントローラ２４及び／又はデバイス・ドライバ３４は、ログインを受け取ったアダプタ・ポート２０ｃに使用可能であるものとしてＮＤＮサービスを示す（ブロック１１０において）。この表示は、フィールド７２におけるデバイス・アダプタ・ポート２０ｃを識別し、サポートされているものとしてＮＤＮサービスを示すように配信不能通知サービス７４フラグを設定するスイッチ・ログイン情報７０（図４）を作成することによって、行うことができる。ＮＤＮサービスがサポートされている場合には、ログインの受諾がデバイスのアダプタ・ポートに戻され（ブロック１１２において）、ＮＤＮサービスが使用可能であるという表示を伴ってログイン及びセッションを確立する。
【００２３】
ログイン要求への応答を受け取ると（ブロック１１４において）、デバイスのアダプタ・コントローラ１８及び／又はデバイス・ドライバ１６は、ログインが確立されたフィールド６２（図３）におけるスイッチ・ポート２６ｂを識別し、かつ、フィールド６４において配信不能通知サービスがサポートされているかどうか示す、デバイス・ログイン情報６０を示すが、これは、ログインへのスイッチの応答が、ＮＤＮサービスがサポートされていることを示すかどうかによって決まる。
【００２４】
図７は、宛先ノード４が使用可能であるかどうかをデバイス・アダプタ１２が判断するとき、デバイス２及びスイッチ６において、具体的には、デバイス２及びスイッチ６のアダプタ・デバイス・ドライバ１６、３４及び／又はアダプタ・コントローラ１８、２４において実行される動作の実施形態を示す。動作２００、２０２、２０４、２１８、２２０及び２２２は、デバイスのアダプタ・コントローラ１８及び／又はアダプタ・デバイス・ドライバ１６によって実行することができ、動作２０６、２０８、２１０、２１２、２１４及び２１６は、スイッチのアダプタ・コントローラ２４及びアダプタ・デバイス・ドライバ３４によって実行することができる。デバイスのアダプタ・デバイス・ドライバ１６及び／又はアダプタ・コントローラ１８が、スイッチ６から、宛先ノードに関する状態変化通知を受け取ると（ブロック２００において）、デバイスのアダプタ・デバイス・ドライバ１６及び／又はアダプタ・コントローラ１８は、状態変化通知が送られたスイッチ・アダプタ２２においてＮＤＮサービスがサポートされているかどうかを判断する。この判断は、スイッチに関するデバイス・ログイン情報６０を処理し、フィールド７２において識別されたスイッチ・ポートに関するＮＤＮサービス・フラグ７４が、ＮＤＮサービスがサポートされていることを示すかどうかを判断することによって、行うことができる。（ブロック２０２において）状態変化通知を受け取るスイッチ・ポート２６ｂにおいてＮＤＮサービスがサポートされている場合、デバイスのアダプタ・デバイス・ドライバ１６及び／又はアダプタ・コントローラ１８は、宛先ノード４が使用可能であるかどうかを判断するために、ＮＤＮサービスを要求するように設定された配信不能通知パラメータ８４伴って、テスト経路要求８０（図５）を宛先ノード４に送る（ブロック２０４において）。
【００２５】
デバイス・アダプタ１２から宛先ノード４へのテスト経路要求を受け取ると、スイッチのアダプタ・デバイス・ドライバ３４及び／又はアダプタ・コントローラ２４は、テスト経路要求を宛先ノード４に転送する（ブロック２０８において）。テスト経路要求８０が向けられる宛先ノード４が使用可能でないと判断することに応答して（ブロック２１０において）、スイッチのアダプタ・デバイス・ドライバ３４及び／又はアダプタ・コントローラ２４は、テスト経路要求８０を開始したアダプタ１２において配信不能通知（ＮＤＮ）サービスが使用可能であるかどうかを判断する（ブロック２１２において）。このことは、フィールド７２において識別された、テスト経路要求を開始したデバイス・ポート２０ａ、２０ｂ、２０ｃに関するスイッチ・ログイン情報７０を処理し、配信不能通知がサポートされていることをＮＤＮフラグ７４が示すかどうかを判断することによって、判断することができる。（ブロック２１２において）テスト要求を送るデバイス・アダプタ１２においてＮＤＮサービスがサポートされていない場合には、配信不能通知は、デバイス・アダプタ１２に送られず（ブロック２１４において）、制御は終了する。他の場合には、（ブロック２１２において）ＮＤＮサービスがサポートされている場合、スイッチのアダプタ・デバイス・ドライバ３４及び／又はアダプタ・コントローラ２４は、配信不能通知（ＮＤＮ）を、テスト経路要求を開始するアダプタ１２に送り、宛先ノードへの配信不能に関する情報を提供する（ブロック２１６において）。スイッチのアダプタ・デバイス・ドライバ３４及び／又はアダプタ・コントローラ２４は、テスト経路要求を廃棄することができる。特定の実施形態において、ＮＤＮ通知は、宛先ノード４が、サービス措置、リセット、又は他の回復措置等のためにオフラインにされている可能性があることを示すなど、宛先ノード４への配信不能の理由を示すコードを含むことができる。次に、デバイスのアダプタ・コントローラ１８及び／又はアダプタ・デバイス・ドライバ１６は、配信不能通知を処理し、宛先ノード４への要求を異なる経路に経路変更する、又は、宛先ノード４への要求を休止するといった措置をとることができる。デバイス・アダプタ１２は、経路を用いたより高レベルのアプリケーション又はオペレーティング・システムが非常に長いタイムアウト回復を開始する前に、故障に対する措置をとり、配信不能通知を受け取った経路を回復させること、又は別の使用可能な経路を使用し始めることができる。
【００２６】
（ブロック２０２において）デバイスのアダプタ・コントローラ１８及び／又はアダプタ・デバイス・ドライバ１６が、状態変化通知を与えるスイッチのアダプタ・ポート２６ｂにおいてＮＤＮサービスがサポートされていないと判断した場合、デバイスのアダプタ・コントローラ１８及び／又はアダプタ・デバイス・ドライバ１６は、クエリを宛先ノード４に送って、宛先ノード４が使用可能であるかどうかを判断することができる（ブロック２２０において）。デバイスのアダプタ・コントローラ１８及び／又はアダプタ・デバイス・ドライバ１６は、クエリを送ったときからのタイムアウト時間の後に宛先ノードが使用可能であることを示す、クエリへの応答を受け取らなかったことに応答して、宛先ノードを使用可能でないものとして示す（ブロック２２２において）。配信不能通知サービスがサポートされていない場合、スイッチ６は、宛先ノード４が使用可能でない又は応答しないと判断したら、配信不能通知を戻さない。
【００２７】
図７のスイッチ動作を、スイッチ６と宛先ノード４との間のいずれかの中間スイッチによって行い、配信不能通知を前のスイッチに、又はテスト経路要求を中間スイッチに転送した他のエンティティに戻すことができる。例えば、テスト経路要求を受け取るいずれのスイッチも、テスト経路要求を宛先ノード４又はファブリック７における次の中間エンティティに配信することができない場合、その中間スイッチ又はエンティティは、テスト経路要求を廃棄し、配信不能通知を、別のスイッチ又は開始デバイス２とすることができる、要求を転送した前のエンティティに送ることができる。このように、宛先ノード４とデバイス２との間の各々の中間エンティティが図７の動作を実行し、ＮＤＮ通知を前のエンティティに戻し、最終的にデバイス２に到達させる。
【００２８】
説明される実施形態において、図７の動作は、デバイス２が状態変化通知を受け取ることに応答して実行される。代替的な実施形態において、動作は、状態変化通知以外のイベントに応答して実行され得る。
【００２９】
図６及び図７における動作は、ファイバーチャネルのクラス３サービスにおける場合のように、一般に、スイッチ・アダプタ２２が、配信の成功又は配信の失敗の受信確認をデバイス４に提供しないプロトコルに従って、スイッチ・アダプタ及びデバイス・アダプタが通信するときに実行される。説明される実施形態は、他の方法で配信又は配信不能の受信確認を提供しないプロトコルにおいて配信不能通知サービスをサポートするために、スイッチ・アダプタのための技術を提供する。
【００３０】
テスト経路要求を宛先に送ることの代替技術である代替的な実施形態において、デバイス２は、テスト経路要求を、スイッチ６内に実装することができる又はネットワークにおける別個のコンポーネントを含むことができるファブリック・コントローラに送ることができる。こうした実施形態において、ファブリック・コントローラは、ネームサーバ、又は宛先ノード４への経路の状態を判断する他の何らかの手段を用いて、宛先ポートの状態を判断する。このことは、特定のテスト経路要求のスヌーピング（snooping）及び要求の宛先ではないポートにおいて応答を作成する必要性を回避するという利点をもつ。１つの実装において、ファブリック・コントローラは、ＬＳ−ＡＣＣ応答において、宛先ノードの状態についての結果をもたらすことができる。
【００３１】
特定のファブリック・コントローラの実装において、デバイス２は、スイッチ６を介して要求をファブリック・コントローラに送ることができ、ファブリック・コントローラがスイッチ６の外部に実装されている場合には、次に、スイッチ６は、テスト要求をファブリック・コントローラに転送し、ファブリック・コントローラからの応答を配信不能通知の形で戻すことができる。ファブリック・コントローラがスイッチ６内に実装されている場合には、スイッチ６は、配信不能通知をデバイス２に戻す。
【００３２】
説明される動作は、ソフトウェア、ファームウェア、ハードウェア又はそれらの任意の組み合わせを生成するための標準的なプログラミング技術及び／又はエンジニアリング技術を用いて、方法、装置、又はコンピュータ・プログラムとして実装することができる。従って、実施形態の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、これらは全て、本明細書において、一般的に「回路」、「モジュール」又は「システム」と呼ばれることがある。さらに、実施形態の態様は、媒体上に具体化されたコンピュータ可読プログラム・コードを有する１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラムの形態をとることができる。
【００３３】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子的、磁気的、光学的、電磁気的、赤外線又は半導体のシステム、装置、デバイス又は前述のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）は、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク型読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は前述のいずれかの適切な組み合わせを含む。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらと接続して用いるために、プログラムを収容し、又は格納することができる任意の有形媒体とすることができる。
【００３４】
コンピュータ可読信号媒体は、例えば、ベースバンド内の、又は、搬送波の一部としての、内部に具体化されたコンピュータ可読プログラム・コードを有する、伝搬されるデータ信号を含むことができる。このような伝搬される信号は、これらに限定されるものではないが、電磁気、光、又はこれらの任意の適切な組み合わせを含む、種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって、又はこれらと接続して用いるために、プログラムを通信し、伝搬し、又は転送することができる、任意のコンピュータ可読媒体とすることができる。
【００３５】
コンピュータ可読媒体上に具体化されるプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は前述のいずれかの適切な組み合せを含む、いずれかの適切な媒体を用いて伝送することができる。
【００３６】
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語又は同様なプログラミング言語のような、従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。プログラム・コードは、全体がユーザのコンピュータ上で実行される場合もあり、独立したソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオの場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部のコンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００３７】
本発明の態様は、本発明の実施形態による方法、装置（システム）、及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照して、上述されている。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実施することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを生産し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するための手段を作り出すようにすることができる。
【００３８】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能するように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施する命令を含む製品を製造するようにすることもできる。
【００３９】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードして、コンピュータ、他のプログラム可能装置、又は他のデバイス上でコンピュータ実装プロセスを生成するための一連の動作ステップを実行させ、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００４０】
「１つの実施形態（an embodiment）」、「実施形態（embodiment）」、「複数の実施形態（embodiments）」、「当該の実施形態（the embodiment）」、「当該の複数の実施形態（the embodiments）」、「１つ又は複数の実施形態（one or more embodiments）」、「幾つかの実施形態（someembodiments）」、「一実施形態（one embodiment）」という用語は、特に明示されない限り、「本発明の１つ又は複数の（全てではない）実施形態」を意味する。
【００４１】
「含む（including）」、「備える（comprising）」、「有する（having）」という用語、及びその変形は、特に明示されない限り、「含むが、これらに限定されるものではない」ことを意味する。
【００４２】
列挙された項目のリストは、特に明示されない限り、項目のいずれか又は全てが相互に排他的であることを意味するものではない。
【００４３】
「１つの（a）」、「１つの（an）」及び「その（the）」という用語は、特に明示されない限り、「１つ又は複数（one or more）」という意味である。
【００４４】
互いに通信を行うデバイスは、特に明示されない限り、互いに連続的に通信を行うものである必要はない。さらに、互いに通信を行うデバイスは、直接的に通信を行うことも、１つ又は複数の中間物を通して間接的に通信を行うこともできる。
【００４５】
互いに通信を行う幾つかのコンポーネントを伴う実施形態の記述は、そのような全てのコンポーネントが必要であることを意味するものではない。これに反して、本発明の幅広い可能な実施形態を示すために、種々の随意的なコンポーネントが説明される。
【００４６】
さらに、プロセス・ステップ、方法ステップ、アルゴリズムなどは、逐次的な順序で説明されることがあるが、そうしたプロセス、方法及びアルゴリズムは、代替的な順序で機能するように構成することができる。言い換えれば、説明される場合があるステップのあらゆる配列又は順序は、必ずしもステップがその順序で行われなければならないという要件を示しているとは限らない。本明細書において説明されるプロセスのステップは、実際のいずれかの順序で行うこともできる。さらに、幾つかのステップは、同時に実行してもよい。
【００４７】
本明細書において単一のデバイス又は物品が説明されるときは、２つ以上のデバイス／物品を（それらが協働しているかどうかに関わりなく）、単一のデバイス／物品の代わりに用い得ることが容易に明らかであろう。同様に、本明細書において２つ以上のデバイス又は物品が（それらが協働しているかどうかに関わりなく）説明される場合は、２つ以上のデバイス又は物品の代わりに、単一のデバイス／物品を用いることができ、又は、示される数のデバイス又はプログラムの代わりに、異なる数のデバイス／物品を用いることができることが容易に明らかであろう。デバイスの機能及び／又は特徴は、代替的に、そのような機能／特徴を有すると明示的に説明されない１つ又は複数の他のデバイスによって具体化することができる。従って、本発明の他の実施形態が、デバイス自体を含む必要はない。
【００４８】
図６及び図７に示される動作は、特定の順序で行われる特定のイベントを示す。代替的な実施形態においては、特定の動作を異なる順序で行っても、修正しても、又は除去してもよい。さらに、ステップを上述した論理に加えてもよく、ステップが、依然として説明される実施形態に適合してもよい。さらに、本明細書で説明される動作を逐次的に行ってもよく、又は、特定の動作を並行して処理してもよい。さらにまた、単一の処理ユニット又は分散された処理ユニットにより、動作を実行することができる。
【００４９】
本発明の種々の実施形態の上記の説明は、例証及び説明のために与えられている。上記の説明は、網羅的であるように、又は本発明を開示された正確な形態に制限するように意図されるものではない。上記の教示に照らして多くの修正及び変形が可能である。本発明の範囲は、この詳細な説明ではなく、むしろここに添付された特許請求の範囲によって制限されることが意図されている。上記の仕様、例、及びデータは、本発明の構成の製造及び使用を十分に説明するものである。本発明の範囲から逸脱することなく、本発明の多くの実施形態を行うことができるので、本発明は、以下に添付される特許請求の範囲内にある。
【符号の説明】
【００５０】
２：デバイス
４：宛先ノード
６：スイッチ
７：ネットワーク
８、２８：プロセッサ
１０、３０：メモリ
１２、２２：アダプタ
１４、３２：オペレーティング・システム
１６、３４：アダプタ・デバイス・ドライバ
１８、２４：アダプタ・コントローラ
２０ａ、２０ｂ、２０ｃ、２６ａ、２６ｂ、２６ｃ：ポート
５０：デバイス・ログイン要求
５２：ログイン要求パラメータ
５４、６４、７４、８４：配信不能通知フラグ
６０：デバイス・ログイン情報
６２：スイッチ・アダプタ・ポート
７０：スイッチ・ログイン情報
７２：デバイス・アダプタ・ポート
８０：テスト経路要求
８２：テスト経路要求パラメータ
【図１】
0005579846.tif 000002
【図２】
0005579846.tif 000003
【図３】
0005579846.tif 000004
【図４】
0005579846.tif 000005
【図５】
0005579846.tif 000006
【図６】
0005579846.tif 000007
【図７】
0005579846.tif 000008