(57)【特許請求の範囲】
【請求項１】
ネットワーク接続をホストソフトウエアモジュールからフェイルオーバーネットワークインターフェースカード（ＮＩＣ）に含まれる第１のハードウエア解放エンジンへ解放するための方法であって、該第１のハードウエア解放エンジンがネットワークフレームを処理する、該方法において、
複数の機能的ＮＩＣによって受信されるパケットを監視するステップであって、前記ネットワーク接続を介して送信されたパケットが前記複数の機能的ＮＩＣにおける第１のＮＩＣによって受信される、ステップと、
前記ネットワーク接続を介して送信されたパケットが前記複数の機能的ＮＩＣにおける第２のＮＩＣによって受信されたことを検出し、前記第２のＮＩＣを前記フェイルオーバーＮＩＣとして識別するステップと、
フェイルオーバーＮＩＣのアイデンティティを決定するために使用されるハッシュアルゴリズムを実行するハッシュエンジンへ前記フェイルオーバーＮＩＣのアイデンティティを通信するステップと、
前記第１のハードウエア解放エンジンに含まれる第１の候補接続テーブルに、前記ネットワーク接続についての接続状態を示す情報を含むエントリーを設定するステップと、
前記ネットワーク接続に対応する前記ホストソフトウエアモジュールに含まれる接続テーブルに、前記ネットワーク接続を介して送信または受信されたパケットが前記第１のハードウエア解放エンジンを通して処理されることを示すハードウエア識別子を設定するステップと、
を備える方法。
【請求項２】
前記ネットワーク接続は、スイッチ依存型ネットワーク環境において確立され、前記スイッチは、前記ネットワーク接続を介してパケットを前記第１のＮＩＣへ送信することを停止し、前記ネットワーク接続を介してパケットを前記第２のＮＩＣへ送信することを開始する、
請求項１に記載の方法。
【請求項３】
前記ネットワーク接続は、スイッチ独立型ネットワーク環境において確立され、外部コンピューティング装置は、前記ネットワーク接続を介してパケットを前記第１のＮＩＣへ送信することを停止し、前記ネットワーク接続を介してパケットを前記第２のＮＩＣへ送信することを開始する、請求項１に記載の方法。
【請求項４】
前記ネットワーク接続は、送信制御プロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）接続であり、前記ホストソフトウエアモジュールは、ＴＣＰ／ＩＰスタックである、請求項１に記載の方法。
【請求項５】
前記第１のＮＩＣに含まれる第２のハードウエア解放エンジンから前記ネットワーク接続を強制的に解放するステップを更に備える、請求項１に記載の方法。
【請求項６】
前記ハッシュアルゴリズムの出力により一時的に選択される一時ＮＩＣのアイデンティティを決定するステップを更に備える、請求項５に記載の方法。
【請求項７】
前記一時ＮＩＣを介してパケットを送信するステップを更に備える、請求項６に記載の方法。
【請求項８】
前記ネットワーク接続を介して送信されたパケットが前記第２のＮＩＣによって受信されたことを検出したときに、前記一時ＮＩＣを介してのパケット送信を停止するステップを更に備える、請求項７に記載の方法。
【請求項９】
前記第１のＮＩＣに含まれる前記第２のハードウエア解放エンジンから前記ネットワーク接続を強制的に解放するステップは、
前記第１のＮＩＣが機能しなくなった又は信頼できないものとなったことを検出し、そのことを知らせる信号を送る段階と、
前記第１のＮＩＣが機能しなくなった又は信頼できないものとなったことを、前記ハッシュアルゴリズムを実行するハッシュエンジンに知らせる段階と、
前記第２のハードウエア解放エンジンに含まれる第２の候補接続テーブルにおける、前記ネットワーク接続についての接続状態を示す情報を含むエントリーを無効とする段階と、
前記ネットワーク接続に対応する前記ホストソフトウエアモジュールに含まれる前記接続テーブルにおいて、前記ネットワーク接続を介して送信または受信されたパケットが前記ホストソフトウエアモジュールを通して処理されることを示すハードウエア識別子を無効とする段階と、
を含む、請求項５に記載の方法。
【請求項１０】
前記第２のハードウエア解放エンジンから前記ネットワーク接続を強制的に解放するステップは、前記第２の候補接続テーブルのエントリーにおける前記ネットワーク接続についての接続状態と、前記ホストソフトウエアモジュールに含まれる前記接続テーブルにおける前記ネットワーク接続についての接続状態とを同期する段階を更に含む、請求項９に記載の方法。
【請求項１１】
前記ネットワーク接続は、送信制御プロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）接続であり、前記ホストソフトウエアモジュールは、ＴＣＰ／ＩＰスタックである、請求項１０に記載の方法。
【請求項１２】
ネットワーク接続をネットワークプロトコルモジュールからフェイルオーバーネットワークインターフェースカード（ＮＩＣ）に含まれる第１のハードウエア解放エンジンへ解放するように構成されたコンピューティング装置であり、該第１のハードウエア解放エンジンがネットワークフレームを処理する、該装置であって、
前記フェイルオーバーＮＩＣを含む複数のＮＩＣと、
ホストプロセッサと、
前記ホストプロセッサに結合され、ハッシュエンジンを含むロードバランシングフェイルオーバー（ＬＢＦＯ）モジュールと接続テーブルを含む前記ネットワークプロトコルモジュールとを有するソフトウエアドライバを記憶するように構成されたホストメモリと、
を備え、
前記ＬＢＦＯモジュールは、複数の機能的ＮＩＣにより受信されるパケットを監視するように構成され、前記ネットワーク接続を介して送信されたパケットが前記複数の機能的ＮＩＣにおける第１のＮＩＣによって受信され、
前記ＬＢＦＯモジュールは、更に、前記ネットワーク接続を介して送信されたパケットが前記複数の機能的ＮＩＣにおける第２のＮＩＣによって受信されたことを検出し、前記第２のＮＩＣを前記フェイルオーバーＮＩＣとして識別するように構成され、
前記ＬＢＦＯモジュールは、更に、フェイルオーバーＮＩＣのアイデンティティを決定するのに使用されるハッシュエンジンを実行する前記ハッシュエンジン及び前記ネットワークプロトコルモジュールへ前記フェイルオーバーＮＩＣのアイデンティティを通信するように構成され、
前記ネットワークプロトコルモジュールは、前記フェイルオーバーＮＩＣのアイデンティティを学習したときに、前記第１のハードウエア解放エンジンに、前記ネットワーク接続についての接続状態を示す情報を含むエントリーを前記第１のハードウエア解放エンジンに含まれる第１の候補接続テーブルに設定させ、
前記ネットワークプロトコルモジュールは、更に、前記ネットワーク接続に対応する前記接続テーブルに、前記ネットワーク接続を介して送信または受信されたパケットが前記第１のハードウエア解放エンジンを通して処理されることを示すハードウエア識別子を設定するように構成される、
コンピューティング装置。
【請求項１３】
前記ネットワーク接続は、スイッチ依存型ネットワーク環境において確立され、前記スイッチは、前記ネットワーク接続を介してパケットを前記第１のＮＩＣへ送信することを停止し、前記ネットワーク接続を介してパケットを前記第２のＮＩＣへ送信することを開始する、
請求項１２に記載のコンピューティング装置。
【請求項１４】
前記ネットワーク接続は、スイッチ独立型ネットワーク環境において確立され、外部コンピューティング装置は、前記ネットワーク接続を介してパケットを前記第１のＮＩＣへ送信することを停止し、前記ネットワーク接続を介してパケットを前記第２のＮＩＣへ送信することを開始する、請求項１２に記載のコンピューティング装置。
【請求項１５】
前記ネットワーク接続は、送信制御プロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）接続であり、前記ネットワークプロトコルモジュールは、ＴＣＰ／ＩＰスタックである、請求項１２に記載のコンピューティング装置。
【請求項１６】
前記ネットワーク接続は、前記第１のＮＩＣに含まれる第２のハードウエア解放エンジンから強制的に解放されている、請求項１２に記載のコンピューティング装置。
【請求項１７】
前記ＬＢＦＯモジュールは、前記ハッシュエンジンによって実行された前記ハッシュアルゴリズムの出力により一時的に選択される一時ＮＩＣのアイデンティティを決定するように構成される、請求項１６に記載のコンピューティング装置。
【請求項１８】
１つ以上のパケットが前記一時ＮＩＣを介して送信される、請求項１７に記載のコンピューティング装置。
【請求項１９】
前記ＬＢＦＯモジュールは、前記ネットワーク接続を介して送信されたパケットが前記第２のＮＩＣによって受信されたことを検出したときに、前記一時ＮＩＣを介してのパケット送信を停止するように構成される、請求項１８に記載のコンピューティング装置。
【請求項２０】
前記第１のＮＩＣに含まれる前記第２のハードウエア解放エンジンから前記ネットワーク接続を強制的に解放するステップは、
前記ＬＢＦＯモジュールが、前記第１のＮＩＣが機能しなくなった又は信頼できないものとなったことを検出し、前記第１のＮＩＣが機能しなくなった又は信頼できないものとなったことを知らせる信号を前記ネットワークプロトコルモジュールに送るように構成され、
前記ＬＢＦＯモジュールが、更に、前記第１のＮＩＣが機能しなくなった又は信頼できないものとなったことを、前記ハッシュエンジンに知らせるように構成され、
前記ネットワークプロトコルモジュールが、前記第２のハードウエア解放エンジンに含まれる第２の候補接続テーブルにおいて前記ネットワーク接続についての接続状態を示す情報を含むエントリーを無効とするように前記第２のハードウエア解放エンジンに通信するように構成され、
前記第２のハードウエア解放エンジンが、前記ネットワークプロトコルモジュールからの前記通信に応答して、前記第２の候補接続テーブルにおいて前記エントリーを無効とするように構成され、
前記ネットワークプロトコルモジュールが、更に、前記ネットワーク接続に対応する前記接続テーブルにおいて、前記ネットワーク接続を介して送信または受信されたパケットが前記ネットワークプロトコルモジュールを通して処理されることを示すハードウエア識別子を無効とするように構成される、
ことを含む、請求項１６に記載のコンピューティング装置。
【請求項２１】
前記ネットワークプロトコルモジュールは、更に、前記第２の候補接続テーブルのエントリーにおける前記ネットワーク接続についての接続状態と、前記接続テーブルにおける前記ネットワーク接続についての接続状態とを同期するように構成される、請求項２０に記載のコンピューティング装置。
【請求項２２】
前記ネットワーク接続は、送信制御プロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）接続であり、前記ネットワークプロトコルモジュールは、ＴＣＰ／ＩＰスタックである、請求項２１に記載のコンピューティング装置。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明の実施形態は、一般的に、ネットワーク通信に係り、より詳細には、ロードバランス型ネットワーク環境においてネットワーク接続を知的にフェイルオーバーするためのシステム及び方法に係る。
【関連技術の説明】
【０００２】
[0002]性能及び信頼性は、現代のコンピュータネットワークのための重要な必要条件である。コンピューティング装置に関するネットワークインターフェース（「ＮＩＣ」）の信頼性がなくなるとき、そのＮＩＣのネットワーク性能は、可能性として実質的に零にまで低下してしまうことがあるものである。このような状況において、現在の解決策としては、ネットワーク接続を、信頼できないＮＩＣから同じコンピューティング装置における他の信頼できるＮＩＣへとリダイレクトするものがあり、この技法は、「フェイルオーバー」と称されている。フェイルオーバーは、信頼できないＮＩＣの存在によって直ぐに生ずる問題を軽減することができるのであるが、フェイルオーバー接続からのその他の信頼できるＮＩＣに対する付加的なネットワークトラフィックにより、その他の信頼できるＮＩＣのうちの１つ以上のものが過負荷となってしまうことがあり、それらインターフェースの性能が低減されてしまうことがある。更に又、その他の信頼できるＮＩＣに対する付加的なネットワークトラフィックにより、そのコンピューティング装置によって行われるネットワーク処理が実質的に増大してしまい、それにより、そのコンピューティング装置の性能が減ぜられてしまう。
【０００３】
[0003]前述したように、当業分野において必要とされているものは、全体的なシステム性能を悪くしてしまうようなＮＩＣの過負荷などの現象が発生する可能性を減少させるように、ネットワーク接続を１つ以上の信頼できるＮＩＣへとフェイルオーバーするための技法である。
【発明の概要】
【０００４】
[0004]本発明の一実施形態によれば、スイッチ独立型ネットワーク環境において、ネットワーク接続を、ホストソフトウエアモジュールからフェイルオーバーネットワークインターフェースカード（ＮＩＣ）に含まれる第１のハードウエア解放エンジンへと解放するための方法が提供される。この方法は、前記フェイルオーバーＮＩＣのアイデンティティを要求するステップと、ハッシュアルゴリズムの出力から前記フェイルオーバーＮＩＣのアイデンティティを決定するステップと、前記第１のハードウエア解放エンジンに含まれる第１の候補接続テーブルに、前記ネットワーク接続についての接続状態を含むエントリーを設定するステップと、前記ネットワーク接続に対応する前記ホストソフトウエアモジュールに含まれる接続テーブルに、前記ネットワーク接続が前記第１のハードウエア解放エンジンを通して実行されていることを示すハードウエア識別子を設定するステップと、を含む。
【０００５】
[0005]前述した方法の１つの効果は、ネットワーク接続をフェイルオーバーするときに、ネットワークインターフェースの過負荷の如き問題をより容易に回避でき、従って、従来技術に比べて全体的なシステム性能を改善できることである。
【０００６】
[0006]本発明の前述したような特徴を詳細に理解できるように、概要について簡単に前述したような本発明につき、幾つかを添付図面に例示している実施形態を参照して、以下により特定的に説明する。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示し、従って、本発明の範囲をそれに限定しようとするものではなく、本発明には、他の均等の効果を発揮する実施形態が含まれることに注意されたい。
【詳細な説明】
【０００７】
[0011]機能しなくなったＮＩＣから１つ以上の動作できるＮＩＣへのネットワーク接続のインテリジェントフェイルオーバーは、スイッチ独立型ネットワーク環境（即ち、コンピューティング装置１００のＮＩＣを外部ネットワークへ結合するスイッチが８０２．３ａｄモードで動作しないようなネットワーク環境）における各ＮＩＣを通しての接続の数及び送信及び受信トラフィックの量を含むネットワーク統計量を追跡するハッシュエンジンを使用することにより達成される。機能しなくなった又は信頼できないＮＩＣが検出されたとき、ハッシュエンジンは、十分に利用されていない代替ＮＩＣ、又は機能しなくなったＮＩＣからそれら接続を別の仕方で受け入れることのできる代替ＮＩＣについての問い合わせを受ける。このような問い合わせにより、その代替ＮＩＣの容量を越えずに、１つ以上の付加的ネットワーク接続をその代替ＮＩＣによって取り扱うことができるようになり、それにより、ＮＩＣに関連付けられたコンピューティング装置のネットワーク性能を大幅に低下させるフェイルオーバー操作が回避される。機能しなくなったＮＩＣ内のハードウエア解放エンジンから接続を強制的に解放し、その後、それら接続を１つ以上のフェイルオーバーＮＩＣ内のハードウエア解放エンジンへ解放することにより、付加的なネットワーク性能の利点を実現することができる。
【０００８】
[0012]本発明の別の実施形態では、フェイルオーバーＮＩＣの選択は、コンピューティング装置の外部にて、可能性としては、スイッチ依存型ネットワーク環境（即ち、コンピューティング装置１００のＮＩＣを外部ネットワークへ結合するスイッチが８０２．３ａｄモードにて動作するようなネットワーク環境）におけるスイッチにより、又は、スイッチ独立型ネットワーク環境における外部コンピューティング装置により、行われる。この実施形態においてフェイルオーバーＮＩＣを選択するための処理は、スイッチ独立型環境においてＮＩＣを選択する処理とは異なるので、この実施形態は、別に考察される。又、ネットワーク接続をソフトウエアＴＣＰ／ＩＰ（送信制御プロトコル及びインターネットプロトコル）スタックからハードウエア解放エンジンへと解放することによる利点は当業者にはよく知られているので、これらの問題については、ここでは論じないこととする。
【０００９】
[0013]図１Ａ及び図１Ｂは、本発明の１つ以上の態様を実施することのできるコンピューティング装置１００を例示している。図示されるように、このコンピューティング装置１００は、主メモリ１０２、メモリコントローラ１０４、マイクロプロセッサ１０６、入出力コントローラ１０８及びＮＩＣ１１０、１１８を含む。ＮＩＣ１１０は、マルチキャストリスト１１６及びハードウエア解放エンジン（「ＨＯＥ」）１１２を含み、そのハードウエア解放エンジン１１２は、候補接続テーブル（「ＤＣＴ」）１１４を含む。ＮＩＣ１１８は、マルチキャストリスト１２４及びＨＯＥ１２０を含み、このＨＯＥ１２０は、ＤＣＴ１２２を含む。ＨＯＥ１１２、１２０は、ＮＩＣ１１０、１１８へ選択的に解放された１つ以上のリモートネットワークコンピューティング装置（図示していない）とコンピューティング装置１００との間のネットワーク接続に関連したネットワークフレームを処理するロジックを含む。従来行われていたようにホストソフトウエアＴＣＰ／ＩＰスタックにてそれらの処理機能（ある場合には、「ソフトウエアによる接続の取扱い」と称される）を実施するのではなく、ＮＩＣ１１０、１１８におけるロジックでネットワークフレームを処理すること（ある場合には、「ハードウエアによる接続の取扱い」と称される）により、ＮＩＣ１１０、１１８とマイクロプロセッサ１０６との間の通信並びにマイクロプロセッサ１０６によって行われる計算量を実質的に減ずることができる。
【００１０】
[0014]ＤＣＴ１１４、１２２は、複数の候補接続テーブルエントリーを含むように構成され、その各エントリーは、その特定のＤＣＴを含むＨＯＥによりフレームが処理されるネットワーク接続に対応している。本発明の一実施形態では、各ＤＣＴエントリーは、各候補接続についての次の状態情報、即ち、送信先（即ち、リモートコンピューティング装置）インターネットプロトコル（「ＩＰ」）アドレス、送信先ポート番号、送信元（コンピューティング装置１００）ポート番号及びその候補接続をハードウエアにより実行するに必要な特定のＴＣＰ／ＩＰ接続状態を含む。
【００１１】
[0015]メモリコントローラ１０４は、主メモリ１０２及びマイクロプロセッサ１０６に結合されており、入出力コントローラ１０８は、マイクロプロセッサ１０６及びＮＩＣ１１０、１１８に結合されている。本発明の一実施形態では、マイクロプロセッサ１０６は、入出力コントローラ１０８へ命令又はデータを書き込むことにより、命令又はデータをＮＩＣ１１０、１１８へ送信する。このような命令又はデータが入出力コントローラ１０８へ書き込まれると、その入出力コントローラ１０８は、任意的に、ターゲットＮＩＣが理解できるようなフォーマットへとそれら命令又はデータを変換し、それら命令又はデータをそのターゲットＮＩＣへと通信する。同様に、ＮＩＣ１１０、１１８は、命令又はデータを入出力コントローラ１０８へ書き込むことにより、命令又はデータをマイクロプロセッサ１０６へ送信し、入出力コントローラ１０８は、任意的に、マイクロプロセッサ１０６が理解できるようなフォーマットへとそれら命令又はデータを変換し、それら命令又はデータをマイクロプロセッサ１０６へと通信する。前述したような結合は、ＰＣＩ（商標）バスの如きメモリバス、入出力バス、又はそれらの組合せとして実施することができ、あるいは、別の仕方として、任意の他の技術的に可能な方法で実施することができる。
【００１２】
[0016]図１Ｂにより詳細に示されるように、主メモリ１０２は、オペレーティングシステム１２６及びソフトウエアドライバ１２８を含む。ソフトウエアドライバ１２８は、ロードバランシング及びフェイルオーバー（「ＬＢＦＯ」）モジュール１３０及びＴＣＰ／ＩＰスタック１３４を含む。ＬＢＦＯモジュール１３０は、各ＮＩＣについてのネットワーク状態を追跡し（例えば、各ＮＩＣのリンク状態、各ＮＩＣに関する送信エラー及び受信エラーの数及び／又は各ＮＩＣがキープアライブパケットを送信及び受信しているか、を監視することにより）、機能しなくなったＮＩＣからソフトウエアへ、又はソフトウエアからフェイルオーバーＮＩＣへネットワークトラフィックが移される時に、ＴＣＰ／ＩＰスタック１３４と通信する。ＬＢＦＯモジュール１３０は、ハッシュエンジン１３２を含み、このハッシュエンジン１３２は、前述したようなネットワーク統計量に基づいて、ネットワーク接続がそのコンピューティング装置１００における異なる機能的ＮＩＣに亘ってどのように分散されるべきかを知能的に決定するものであり、このことについては、２００７年５月１８日に出願され、代理人管理番号ＮＶＤＡ/Ｐ００１８８２を有し、「Intelligent Failback in a Load-Balanced Networking Environment」と題する関連米国特許出願第１１/５０，９１４号明細書に記載されているところである。従って、この関連特許出願明細書の記載は、ここに援用される。ＴＣＰ／ＩＰスタック１３４は、接続テーブル１３６を含み、この接続テーブル１３６は、複数の接続テーブルエントリーを含み、これらの各エントリーは、コンピューティング装置１００とリモートコンピューティング装置との間のネットワーク接続に対応している。一実施形態では、各接続テーブルエントリーは、各接続についての次のような状態情報、即ち、送信先ＩＰアドレス、送信先ポート番号、送信元ＩＰアドレス、送信元ポート番号及びその接続についてのハードウエア識別子並びに欠損パケットを取り扱うのに十分なＴＣＰ／ＩＰ状態等を含む。重要なことは、特定の接続についてのハードウエア識別子は、もしあるならば、どのＨＯＥがハードウエアによりその接続を処理しているかを示していることである。一実施形態では、ハードウエアにより処理されている各接続についての接続状態は、その接続を処理することを課せられているＨＯＥ内の候補接続テーブルから接続テーブル１３６へと定期的にコピーされる。例えば、その状態情報は、繰り返しタイマーを使用してコピーされる。このようにして、各候補接続についての接続状態の更新コピーを、ＴＣＰ／ＩＰスタック１３４が使用する接続テーブル１３６に維持しておくことができる。
【００１３】
[0017]コンピューティング装置１００は、デスクトップコンピュータ、サーバー、ラップトップコンピュータ、手のひらサイズコンピュータ、携帯情報端末、タブレットコンピュータ、ゲームコンソール、セルラー電話、又は情報を処理する任意の他のタイプの同様の装置であってよい。
【００１４】
[0018]図２は、本発明の一実施形態による、機能しなくなったＮＩＣからソフトウエアへとネットワーク接続を強制的に解放するための方法ステップ２００のフローチャートを例示している。この方法はコンピューティング装置１００に関して説明されるのであるが、当業者には、これら方法ステップを任意の順序にて行うように構成された任意のシステムも本発明の範囲内に入るものであることは理解されよう。
【００１５】
[0019]図示されるように、ネットワーク接続を強制的に解放するための方法は、ステップ２０２にて開始され、このステップ２０２において、ＬＢＦＯモジュール１３０は、ＮＩＣのうちの１つが機能しなくなった又は信頼できないものとなったことを指示するため、各ＮＩＣ１１０、１１８の状態を監視する。一実施形態では、ＮＩＣは、３つの状態のうちのいずれかが存在するときに、機能しなくなった又は信頼できないものとなったと決定される。その第１の状態は、ネットワークケーブルが切断されたことを示唆するようなそのＮＩＣについてのリンク切断があることを、そのＮＩＣについてのリンク指示に基づいて、ＬＢＦＯモジュール１３０が決定するときである。第２の状態は、そのＮＩＣによって送信されたパケットの相当の数又は割合のものが失われたことを、そのＮＩＣによって送られたパケットの数と、それらパケットが送信されたリモートコンピューティング装置によって確認されたパケットの数との比較に基づいて、ＬＢＦＯモジュール１３０が決定するときである。第３の状態は、コンピューティング装置１００においてＮＩＣ１１０、１１８の間に送信されたキープアライブパケットが失われていると、ＬＢＦＯモジュール１３０が決定するときである。２００５年１２月１５日に出願され、代理人管理番号ＮＶＤＡ/Ｐ００１８７９を有し、「Technique for Identifying a Failed Network Interface Card Within aTeam of Network Interface Cards」と題する関連米国特許出願第１１/３０３，２８５号明細書に記載されているように、機能しなくなったＮＩＣは、各ＮＩＣがどのようにしてキープアライブパケットを送信及び／又は受信しているかに基づいて識別される。従って、この関連特許出願明細書の記載は、ここに援用される。これらの指示のタイプについて各ＮＩＣを監視することにより、ＬＢＦＯモジュール１３０は、機能しなくなった又は信頼できないＮＩＣを、信頼性良く検出することができる。
【００１６】
[0020]ステップ２０４にて、ＬＢＦＯモジュール１３０は、ＮＩＣが機能しなくなった又は信頼できないものとなったかを、ステップ２０２にて監視されている指示に基づいて決定する。もし、障害がなにも起きなかったとＬＢＦＯモジュール１３０が決定した場合には、この方法はステップ２０２へと戻り、そこで、ＬＢＦＯモジュール１３０は、障害についてそれらＮＩＣ１１０、１１８を監視することを続ける。
【００１７】
[0021]しかしながら、もし、あるＮＩＣが機能しなくなった又は信頼できないものとなったことが見出された場合には、この方法は、ステップ２０６−２１４の処理へと進み、そこで、そのＮＩＣを通して実行されている接続をソフトウエアへ強制的に解放する。説明上、ＮＩＣ１１０が機能しなくなったと仮定する。ステップ２０６にて、ＬＢＦＯモジュール１３０は、ＮＩＣ１１０が機能しなくなった又は信頼できないものとなったことを知らせる信号を、ＴＣＰ／ＩＰスタック１３４に送る。ステップ２０８にて、ＬＢＦＯモジュール１３０は、ＮＩＣ１１０が機能しなくなった又は信頼できないものとなったことを知らせる信号を、ハッシュエンジン１３２に送り、その機能しなくなったＮＩＣ１１０へ新しい接続が割り当てられてしまうのを避けるようにする。このような信号を受信すると、ハッシュエンジン１３２は、その機能しなくなったＮＩＣ１１０に新しい接続が割り当てられないように、その内部ロードバランシングアルゴリズムを調整する。
【００１８】
[0022]ステップ２１０にて、機能しなくなったＮＩＣ１１０を通して実行されている各接続について、その機能しなくなったＮＩＣに対するＨＯＥ（例えば、ＨＯＥ１１２）は、その接続に対応するＤＣＴ（例えば、ＤＣＴ１１４）におけるエントリーを無効とする。一実施形態では、そのＤＣＴエントリーは、ＴＣＰ／ＩＰスタック１３４がそのＤＣＴエントリーを無効とする命令をＨＯＥ１１２へ送り、ＨＯＥ１１２がその命令を受信してそのＤＣＴエントリーを無効とし、そして、そのＨＯＥ１１２がＴＣＰ／ＩＰスタック１３４に対してこの動作の完了を応答することにより、無効とされる。ステップ２１２にて、機能しなくなったＮＩＣ１１０から強制的に解放される各接続について、もし、その接続に対するＤＣＴ１１４における接続状態が接続テーブル１３６における接続状態と整合しない場合には、ＴＣＰ／ＩＰスタック１３４は、その接続についての接続状態をＤＣＴ１１４から接続テーブル１３６へとコピーする。ステップ２１４にて、機能しなくなったＮＩＣ１１０から強制的に解放される各接続について、ＴＣＰ／ＩＰスタック１３４は、接続テーブル１３６におけるその接続のためのハードウエア識別子を無効とする。このハードウエア識別子を無効とすることは、その接続がＴＣＰ／ＩＰスタック１３４を通して実行されることを示す。重要なことは、ある接続についての接続状態がＤＣＴ１１４にて無効とされ且つその接続についてのハードウエア識別子が接続テーブル１３６にて無効とされたときには、その接続にて送信され又は受信されるどのパケットも、その後は、ＨＯＥ１１２を通してハードウエアにより処理されるのでなく、ＴＣＰ／ＩＰスタック１３４を通してソフトウエアにより処理されるということである。機能しなくなったＮＩＣ１１０に関する全ての接続が、このようにしてハードウエアからソフトウエアへと強制的に解放されたとき、この方法は、ステップ２１６において終了する。
【００１９】
[0023]図３Ａ及び図３Ｂは、本発明の一実施形態による、スイッチ独立型ネットワーク環境においてネットワーク接続をソフトウエアからフェイルオーバーＮＩＣへと解放するための方法ステップのフローチャートを例示している。この方法はコンピューティング装置１００に関して説明されるのであるが、当業者には、任意の順序でこれら方法ステップを行うように構成された任意のシステムが本発明の範囲内に入るものであることは理解されよう。重要なことは、スイッチ独立型ネットワーク環境において、ＬＢＦＯモジュール１３０が、図２において前述したように、ソフトウエアへと強制的に解放された各接続についてのフェイルオーバーＮＩＣを識別するということである。
【００２０】
[0024]図示されるように、単一のネットワーク接続をソフトウエアからフェイルオーバーＮＩＣへと解放するための方法は、ステップ３０２−３１２に記述されている。これらのステップは、方法２００にてソフトウエアへと強制的に解放された各接続に対して繰り返され、強制的に解放された接続のすべてがソフトウエアから１つ以上のフェイルオーバーＮＩＣへと最終的に解放されるようにする。ステップ３０２にて、ＴＣＰ／ＩＰスタック１３４は、現在の強制的に解放された接続が解放されるべきＮＩＣを識別するようにＬＢＦＯモジュール１３０に要求する。また、ステップ２０８にて論ぜられたように、ハッシュエンジン１３２は、コンピューティング装置１００における各ＮＩＣの状態を追跡し、あるＮＩＣがフェイルし又は信頼できないものとなるときに、その接続割当てアルゴリズムを調整して、その機能しなくなった又は信頼できないＮＩＣへ新しい又は既存の接続が解放されてしまうのを避けるようにする。ステップ３０４にて、ＬＢＦＯモジュール１３０は、現在の接続が解放されるべき適当なＮＩＣを識別するようにハッシュエンジン１３２に問い合わせる。説明のためだけであるが、現在の接続（機能しなくなったＮＩＣ１１０から以前に強制的に解放された接続）が解放されるべきＮＩＣとしてフェイルオーバーＮＩＣ１１８を識別すると仮定する。
【００２１】
[0025]ステップ３０６にて、ソフトウエアドライバ１２８は、機能しなくなったＮＩＣ１１０のＭＡＣアドレスをフェイルオーバーＮＩＣ１１８のマルチキャストリスト１２４に加え、これにより、フェイルオーバーＮＩＣ１１８は、機能しなくなったＮＩＣ１１０のＭＡＣアドレスへ宛てられたパケットを受信できるようになる。ステップ３０８にて、ＴＣＰ／ＩＰスタック１３４は、学習パケットをそのスイッチへ送るようにフェイルオーバーＮＩＣ１１８に指示する。学習パケットは、機能しなくなったＮＩＣ１１０のＭＡＣアドレスを含む任意の技術的に可能なパケットタイプであってよい。よく知られるように、フェイルオーバーＮＩＣ１１８からこのようなパケットを送ることにより、そのスイッチは、機能しなくなったＮＩＣ１１０のＭＡＣアドレスに行き先指定されたその後に続くパケットをフェイルオーバーＮＩＣ１１８へ伝送するように再構成させられる。従って、フェイルオーバーＮＩＣ１１８へ解放される現在の接続に関連した全てのネットワークトラフィックは、その後は、そのフェイルオーバーＮＩＣ１１８によって受信される。代理人管理番号ＮＶＤＡ/Ｐ００１８８２を有する前述の関連特許出願明細書により詳細に記載されているように、このような方法の結果として、特定の機能しなくなったＮＩＣからの全ての接続は同じフェイルオーバーＮＩＣへ解放されることになる。
【００２２】
[0026]ステップ３１０にて、ＨＯＥ１２０は、解放される現在の接続に対応するＤＣＴ１２２に接続状態を設定する。また、ＤＣＴエントリーにおける接続状態の設定は、その送信先ＩＰアドレス、送信先ポート番号、送信元ポート番号及び解放される接続についての特定のＴＣＰ／ＩＰ状態の設定を含む。一実施形態では、ＤＣＴエントリーは、そのＴＣＰ／ＩＰスタック１３４がその接続状態を設定するように命令をＨＯＥ１２０へ送り、ＨＯＥ１２０がその命令を受け取りその接続状態を設定し、ＨＯＥ１２０がこの動作の完了をＴＣＰ／ＩＰスタック１３４に応答することにより、設定される。ステップ３１２において、解放される接続について、ＴＣＰ／ＩＰスタック１３４は、フェイルオーバーＮＩＣ１１８のＨＯＥ１２０を表すデバイスハンドルに対して接続テーブル１３６内のハードウエア識別子を設定する。そのハードウエア識別子は、その接続がＨＯＥ１２０を通して実行されることを示している。重要なことは、ある接続についてのハードウエア識別子が特定のＨＯＥのためのデバイスハンドルに対して設定されると、その接続にて送信又は受信されるどのパケットも、その後は、そのＨＯＥを通してハードウエアにより処理されるということである。
【００２３】
[0027]ステップ３１４にて、ＴＣＰ／ＩＰスタック１３４は、機能しなくなったＮＩＣ１１０についての全ての強制的に解放された接続がフェイルオーバーＮＩＣへ解放されたかを決定する。もし、強制的に解放された接続のすべてがフェイルオーバーＮＩＣへ解放されていない場合には、この方法は、ステップ３０２−３１２の処理へ戻り、そこで、解放されていない別の強制的に解放された接続がフェイルオーバーＮＩＣへ解放される。しかしながら、もし、全ての強制的に解放された接続がフェイルオーバーＮＩＣへ解放されている場合は、この方法はステップ３１６にて終了する。
【００２４】
[0028]図４は、本発明の一実施例による、ネットワーク接続が外部手段により新しいＮＩＣへ移されるときに、そのネットワーク接続をその新しいＮＩＣへ解放するための方法ステップのフローチャートを例示している。この方法はコンピューティング装置１００に関して説明されるのであるが、当業者には、任意の順序にてこれら方法ステップを行うように構成されたどのようなシステムも本発明の範囲内に入るものであることは理解されよう。
【００２５】
[0029]前述したように、フェイルオーバーは、少なくとも２つの状態において接続が古いＮＩＣから新しいＮＩＣ（即ち、フェイルオーバーＮＩＣ）へと移されるときに起こる。１つの状態は、あるＮＩＣが機能しなくなった又は信頼できないものとなったと、スイッチが決定し、従って、その機能しなくなった又は信頼できないＮＩＣに関連したいくつかの又は全ての接続を１つ以上のフェイルオーバーＮＩＣへと移すようなスイッチ依存型ネットワーク環境にある。もう１つ別の状態は、ある接続についてコンピューティング装置１００によって受信されるパケットが古いＮＩＣ以外のあるＮＩＣ（即ち、新しい／フェイルオーバーＮＩＣ）へ宛てられていてそれにより受信されるようなスイッチ独立型ネットワーク環境にある。ここでは、コンピューティング装置１００以外のネットワークにおけるいくつかのコンピューティング装置は、その接続に関連したパケットをその新しいＮＩＣへ送信するのに主導権を握っている。両状態において、ＬＢＦＯモジュール１３０は、ある接続に対するパケットが古いＮＩＣ以外のＮＩＣにて受信されていることを検出すると、新しいＮＩＣがその接続に対して選択されたと認識する。以下により詳細に説明するように、ＬＢＦＯモジュール１３０は、入来パケットについてＮＩＣを監視し、接続が移されたことを入来パケットが示しているかを決定し、移された接続をその古いＮＩＣから強制的に解放し、そして、移された接続を新しいＮＩＣに解放する。説明のためだけであるが、ＮＩＣ１１０がその古いＮＩＣであると仮定する。
【００２６】
[0030]図示されるように、ネットワーク接続を解放するための方法はステップ４０２で開始され、そこでは、ＬＢＦＯモジュール１３０は、前述したように、ネットワークトラフィックについてＮＩＣを監視している。ステップ４０４にて、ある所定の接続について、ＬＢＦＯモジュール１３０は、その接続に対するパケットが古いＮＩＣ１１０ではなく新しいＮＩＣにて受信されていることを検出する。ここでも又、このようなことは、少なくとも２つ状態において起こる。第１の状態は、スイッチ依存型ネットワーク環境において、スイッチが、機能しなくなった又は信頼できないＮＩＣを検出し、その接続をフェイルオーバーＮＩＣへ移すような場合である。第２の状態は、スイッチ独立型ネットワーク環境において、コンピューティング装置がある接続に対するパケットを、その接続に対するそれらパケットを当初は受信していた古いＮＩＣ以外のあるＮＩＣへと送り始めるような場合である。説明のためだけではあるが、ステップ４０４において識別される新しいＮＩＣはＮＩＣ１１８であると仮定する。ステップ４０６にて、ソフトウエアドライバ１２８は、図２に関して前述したように、その接続を古いＮＩＣ１１０からソフトウエアへと強制的に解放する。
【００２７】
[0031]ステップ４０８において、ＬＢＦＯモジュール１３０は、新しいＮＩＣ１１８のアイデンティティをハッシュエンジン１３２へ通信し、それにより、ハッシュエンジン１３２は、その新しいＮＩＣ１１８におけるその付加的接続のためその内部データ構造を更新する。ステップ４１０にて、ＨＯＥ１２０は、ＮＩＣ１１８へ解放される接続に対応するＤＣＴ１２２に接続状態を設定する。ここでも又、ＤＣＴエントリーにおけるその接続状態の設定は、その送信先ＩＰアドレス、送信先ポート番号、送信元ポート番号及び解放される接続についての特定のＴＣＰ／ＩＰ状態の設定を含む。一実施形態では、そのＤＣＴエントリーは、ＴＣＰ／ＩＰスタック１３４がその接続状態を設定するように命令をＨＯＥ１２０へ送り、ＨＯＥ１２０がその命令を受信してその接続状態を設定し、ＨＯＥ１２０がＴＣＰ／ＩＰスタック１３４に対してその動作の完了を応答することにより、設定される。ステップ４１２にて、解放される接続について、ＴＣＰ／ＩＰスタック１３４は、ステップ４０２へ戻る前に、接続テーブル１３６内のハードウエア識別子を、新しいＮＩＣ１１８のＨＯＥ１２０を表すデバイスハンドルに設定する。ここでも又、ハードウエア識別子は、そのネットワーク接続がＨＯＥ１２０を通して実行されることを示している。前述したように、ある接続についてのハードウエア識別子が特定のＨＯＥのためのデバイスハンドルへ設定されるとき、その接続にて送信され又は受信されるいずれのパケットも、その後は、そのＨＯＥを通してハードウエアにより取り扱われる。
【００２８】
[0032]ここで注意すべきは、古いＮＩＣ１１０に関連した接続がこの方法２００に従ってソフトウエアへ強制的に解放された後であるが、その接続が方法４００に従って新しいＮＩＣへ解放される前に、コンピューティング装置１００は、その接続に対するパケットを、ソフトウエアから、ハッシュエンジン１３２により一時的に選択されたＮＩＣに送信することができるということである。一般的には、一時ＮＩＣの選択は、付加的接続に関連したパケットの送信によりそのＮＩＣにおける既存の接続の送信性能が実質的に低下させられないようなレベルにある送信性能を現在有しているＮＩＣについて、ＬＢＦＯモジュール１３０がハッシュエンジン１３２に問い合わせることにより行われる。ソフトウエアの管理下から外された強制的に解放された接続に関連するパケットが前述したように新しいＮＩＣにて受信されたことを、ＬＢＦＯエンジン１３０が検出すると、その一時ＮＩＣにおける接続に対するパケットの送信は停止され、その接続は、方法４００に従って、送信及び受信パケットのためにその新しいＮＩＣへ解放される。
【００２９】
[0033]前述した方法の１つの効果は、スイッチ独立型ネットワーク環境において接続をフェイルオーバーするときに、ハッシュエンジンを使用してコンピューティング装置１００における異なる機能的ＮＩＣの間に亘ってネットワークトラフィックを知能的に分散させることにより、従来技術の解決方法に比べてネットワーク性能を大幅に改善できるということである。前述した方法のもう１つ別の効果は、ネットワーク接続をフェイルオーバーＮＩＣへ移すときに、そのネットワーク接続をそのフェイルオーバーＮＩＣへ解放することにより、従来技術の解決方法に比べてコンピューティング装置の性能を大幅に改善できるということである。
【００３０】
[0034]本発明の実施形態は上述のとおりであるが、本発明の基本的な範囲から逸脱せずに、本発明の他の更なる実施形態を考えることが可能である。本発明の範囲は、特許請求の範囲の記載によって定められる。
【図面の簡単な説明】
【００３１】
【図１Ａ】本発明の１つ以上の態様を実施することができるコンピューティング装置を例示している。
【図１Ｂ】本発明の１つ以上の態様を実施することができるコンピューティング装置を例示している。
【図２】ネットワーク接続を機能しなくなったＮＩＣからソフトウエアへ強制的に解放するための方法ステップのフローチャートを例示している。
【図３Ａ】スイッチ独立型ネットワーク環境において、ネットワーク接続をソフトウエアからフェイルオーバーＮＩＣへと解放するための方法ステップのフローチャートを例示している。
【図３Ｂ】スイッチ独立型ネットワーク環境において、ネットワーク接続をソフトウエアからフェイルオーバーＮＩＣへと解放するための方法ステップのフローチャートを例示している。
【図４】ネットワーク接続が外部手段により新しいＮＩＣへと移されるときに、そのネットワーク接続をその新しいＮＩＣへ解放するための方法ステップのフローチャートを例示している。
【符号の説明】
【００３２】
１００・・・コンピューティング装置、１０２・・・主メモリ、１０４・・・メモリコントローラ、１０６・・・マイクロプロセッサ、１０８・・・入出力コントローラ、１１０・・・ネットワークインターフェースカード（ＮＩＣ）、１１２・・・ハードウエア解放エンジン（ＨＯＥ）、１１４・・・候補接続テーブル（ＤＣＴ）、１１６・・・マルチキャストリスト、１１８・・・ネットワークインターフェースカード（ＮＩＣ）、１２０・・・ハードウエア解放エンジン（ＨＯＥ）、１２２・・・候補接続テーブル（ＤＣＴ）、１２４・・・マルチキャストリスト、１２６・・・オペレーティングシステム、１２８・・・ソフトウエアドライバ、１３０・・・ロードバランシング及びフェイルオーバー（ＬＢＦＯ）モジュール、１３２・・・ハッシュエンジン、１３４・・・ソフトウエアＴＣＰ／ＩＰ（送信制御プロトコル及びインターネットプロトコル）スタック、１３６・・・接続テーブル
【図１ａ】
0005272263.tif 000002
【図１ｂ】
0005272263.tif 000003
【図２】
0005272263.tif 000004
【図３ａ】
0005272263.tif 000005
【図３ｂ】
0005272263.tif 000006
【図４】
0005272263.tif 000007