(57)【要約】【課題】  ＮＩＣの過負荷等の現象を減らすようにネットワーク接続をフェイルバックする時、１つ以上の機能できるＮＩＣへ上記接続を転送すること。【解決手段】  本発明の一形態の、コンピューティング装置のＮＩＣへネットワーク接続をフェイルバックする方法は、上記装置内のフェイルした又は信頼できないＮＩＣを監視する工程、そのようなＮＩＣの回復を決定する工程、上記装置内の機能できるＮＩＣが過負荷であることを決定する工程、過負荷ＮＩＣで通信している第１の接続セットを選択する工程及び回復ＮＩＣへ上記接続セットを転送する工程を含む。この方法では、回復ＮＩＣへのネットワーク接続セットのフェイルバックの是非を、過負荷ＮＩＣ及び回復ＮＩＣのトラフィック負荷を基に知能的に効果的に行える。上記装置内の機能できるＮＩＣに亘ってトラフィックをバランスさせる上記方法により、全性能を従来技術より改善可能である。【選択図】      図２Ｂ
2008293492.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング装置内のネットワークインターフェースカード（ＮＩＣ）へネットワーク接続をフェイルバックするための方法において、
前記コンピューティング装置内のフェイルした又は信頼できないＮＩＣを監視するステップと、
前記フェイルした又は信頼できないＮＩＣが回復したことを決定するステップと、
前記コンピューティング装置内の機能できるＮＩＣが過負荷であることを決定するステップと、
前記過負荷なＮＩＣを通して通信している第１の接続セットを選択するステップと、
前記第１の接続セットを前記回復したＮＩＣへ転送するステップと、
を備える方法。
【請求項２】
前記第１の接続を転送するステップは、学習パケットを前記回復したＮＩＣを通してネットワークスイッチへ送信するステップを含む、請求項１に記載の方法。
【請求項３】
前記第１の接続セットは、前記回復したＮＩＣを通して初期に通信されていたものであり、前記第１の接続セットを転送するステップは、前記回復したＮＩＣのメディアアクセス制御（ＭＡＣ）アドレスを前記過負荷なＮＩＣに関連付けられたマルチキャストから取り除くステップを更に含む、請求項２に記載の方法。
【請求項４】
前記第１の接続セットを前記回復したＮＩＣに関連付けられたハードウエアオフロードエンジンへオフロードするステップを更に備える、請求項３に記載の方法。
【請求項５】
前記第１の接続セットは、前記回復したＮＩＣを通して初期に通信されていなかったものであり、前記第１の接続セットを転送するステップは、前記第１の接続セットが初期に通信されたときに通るＮＩＣのＭＡＣアドレスを、前記過負荷なＮＩＣに関連付けられたマルチキャストリストから取り除くステップを更に含む、請求項２に記載の方法。
【請求項６】
プロセッサによって実行されるとき、前記プロセッサが、
前記コンピューティング装置内のフェイルした又は信頼できないＮＩＣを監視するステップと、
前記フェイルした又は信頼できないＮＩＣが回復したことを決定するステップと、
前記コンピューティング装置内の機能できるＮＩＣが過負荷であることを決定するステップと、
前記過負荷なＮＩＣを通して通信している第１の接続セットを選択するステップと、
前記第１の接続セットを前記回復したＮＩＣへ転送するステップと、
を行うことにより、コンピューティング装置内のネットワークインターフェースカード（ＮＩＣ）へネットワーク接続をフェイルバックするようにさせる命令を記憶しているコンピュータ読み取り可能な媒体。
【請求項７】
前記第１の接続を転送するステップは、学習パケットを前記回復したＮＩＣを通してネットワークスイッチへ送信するステップを含む、請求項６に記載のコンピュータ読み取り可能な媒体。
【請求項８】
前記第１の接続セットは、前記回復したＮＩＣを通して初期に通信されていたものであり、前記第１の接続セットを転送するステップは、前記回復したＮＩＣのメディアアクセス制御（ＭＡＣ）アドレスを前記過負荷なＮＩＣに関連付けられたマルチキャストから取り除くステップを更に含む、請求項７に記載のコンピュータ読み取り可能な媒体。
【請求項９】
前記第１の接続セットは、前記回復したＮＩＣを通して初期に通信されていなかったものであり、前記第１の接続セットを転送するステップは、前記第１の接続セットが初期に通信されたときに通るＮＩＣのＭＡＣアドレスを、前記過負荷なＮＩＣに関連付けられたマルチキャストリストから取り除くステップを更に含む、請求項７に記載のコンピュータ読み取り可能な媒体。
【請求項１０】
ネットワークインターフェースカード（ＮＩＣ）へネットワーク接続をフェイルバックするように構成されたコンピューティングシステムにおいて、
処理装置と、
１つ以上のネットワーク接続が通信されるときに通る複数のＮＩＣと、
前記処理装置に結合され、ソフトウエアドライバを記憶しているメモリと、
を備え、前記ソフトウエアドライバは、
前記コンピューティング装置内のフェイルした又は信頼できないＮＩＣを監視し、
前記フェイルした又は信頼できないＮＩＣが回復したことを決定し、
前記コンピュータ装置内の機能できるＮＩＣが過負荷であることを決定し、
前記過負荷なＮＩＣを通して通信している第１の接続セットを選択し、
前記第１の接続セットを前記回復したＮＩＣへ転送する、
ように構成される、コンピューティングシステム。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明の実施形態は、一般的に、ネットワーク通信に係り、より詳細には、ロードバランス型ネットワーク環境においてネットワーク接続をインテリジェントフェイルバックするためのシステム及び方法に係る。
【関連技術の説明】
【０００２】
[0002]性能及び信頼性は、現代のコンピュータネットワークのための重要な必要条件である。ネットワークインターフェースカード（「ＮＩＣ」）がフェイルする又は信頼できないものとなり、それから十分に機能できる状態へと戻るとき、コンピューティング装置は、ネットワーク接続を現在機能できるＮＩＣへ再分散することにより、ネットワーク性能を改善することができる。より具体的には、もし、特定のＮＩＣが過負荷である又は過負荷となる場合には、ネットワーク性能は、回復されるＮＩＣを含むコンピューティング装置における機能できるＮＩＣの間にネットワーク接続を再分散することにより改善することができる。しかしながら、コンピューティング装置内の機能できるＮＩＣの間にトラフィックを再分散することによって得られる性能改善よりも、１つのＮＩＣから別のＮＩＣへ接続を転送することに関連したオーバーヘッドの方がより大きくなってしまうことがある。このような場合、全ネットワーク性能は、ネットワーク接続を再分散しようとすることにより減少させられてしまう。更にまた、転送される接続により、効率的に動作しているＮＩＣがオーバーロードとなってしまうことがあり、それにより、ＮＩＣの性能及び信頼性が減少させられてしまうことがある。
【０００３】
[0003]前述したように、当業分野において必要とされているものは、全システム性能を悪くしてしまうようなＮＩＣが過負荷となる又はその他の現象が発生する可能性を減少させるようにして、ネットワーク接続をフェイルバックするときに、コンピューティング装置における１つ以上の機能できるＮＩＣへとネットワーク接続を転送するための技法である。
【発明の概要】
【０００４】
[0004]本発明の一実施形態によれば、コンピューティング装置内のネットワークインターフェースカード（ＮＩＣ）へネットワーク接続をフェイルバックするための方法が提供される。この方法は、前記コンピューティング装置内のフェイルした又は信頼できないＮＩＣを監視するステップと、前記フェイルした又は信頼できないＮＩＣが回復したことを決定するステップと、前記コンピュータ装置内の機能できるＮＩＣが過負荷であることを決定するステップと、前記過負荷なＮＩＣを通して通信している第１の接続セットを選択するステップと、前記第１の接続セットを前記回復したＮＩＣへ転送するステップと、を含む。
【０００５】
[0005]前述した方法の１つの効果は、過負荷となったＮＩＣに係る接続セットをリハッシュすることにより、ネットワーク接続セットを回復したＮＩＣへフェイルバックするかについての判断を、過負荷なＮＩＣ及び回復したＮＩＣに係るトラフィックロードに基づいて、知能的に行うことができることである。コンピューティング装置内の機能できるＮＩＣに亘ってネットワークトラフィックをバランスさせるこのような方法により、従来技術に比べて全性能を実質的に改善することができる。
【０００６】
[0006]本発明の前述したような特徴を詳細に理解できるように、概要について簡単に前述したような本発明につき、幾つかを添付図面に例示している実施形態を参照して、以下により詳細に説明する。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示するものであり、従って、本発明の範囲をそれに限定するものではなく、本発明には、他の均等の効果を発揮する実施形態が含まれることに注意されたい。
【詳細な説明】
【０００７】
[0009]過負荷なＮＩＣから１つ以上の十分に機能できるＮＩＣへのネットワーク接続のインテリジェントフェイルバックは、各ＮＩＣを通しての接続の数と送信及び受信トラフィックの量とを含むネットワーク統計量を追跡するハッシュエンジン、及び各ネットワーク接続がそれを通して初期に通信するＮＩＣを追跡するＴＣＰ／ＩＰスタックを使用することにより達成される。フェイルした又は信頼できないＮＩＣが再び十分に機能的に動作できるように回復するとき、もし、システム内の別のＮＩＣが過負荷となる場合には、過負荷となったＮＩＣに係る幾つかのネットワーク接続は、以前に過負荷となっていたＮＩＣがもはや過負荷ではないようになるまで、回復したＮＩＣへと自動的にフェイルバックされる。このような転送により、１つ以上の付加的なネットワーク接続が、代替的なＮＩＣにより、そのＮＩＣの容量を超えることなく、取り扱われるようになり、従って、コンピューティング装置の全性能を減少させてしまうような接続再分散パラダイムを回避することができる。過負荷なＮＩＣから接続を転送することは、過負荷なＮＩＣ内のハードウエアオフロードエンジンからそれら接続をアンオフロードし、その後、それら接続が転送される回復したＮＩＣ内のハードウエアオフロードエンジンへとそれら接続をオフロードすることも含むことができる。
【０００８】
[0010]図１Ａから図１Ｃは、本発明の１つ以上の態様を実施することのできるコンピューティング装置１００を例示している。図示されるように、コンピューティング装置１００は、主メモリ１０２、メモリコントローラ１０４、マイクロプロセッサ１０６、入出力コントローラ（I/O controller）１０８及びＮＩＣ１１０、１１１及び１１６を含む。ＮＩＣ１１０は、マルチキャストリスト１１４及びハードウエアオフロードエンジン（「ＨＯＥ」）１１２を含む。ＮＩＣ１１１は、マルチキャストリスト１１５及びＨＯＥ１１３を含む。ＮＩＣ１１６は、マルチキャストリスト１２０及びＨＯＥ１１８を含む。ＨＯＥ１１２、１１３及び１１８は、ＮＩＣ１１０、１１１及び１１６へ選択的にオフロードされる１つ以上のリモートネットワークコンピューティング装置（図示していない）とコンピューティング装置１００との間のネットワーク接続に関連したネットワークフレームを処理するように構成されたロジックを含む。従来行われていたようにホストソフトウエアＴＣＰ／ＩＰスタックにてネットワークフレームを処理する機能（ある場合には、「ソフトウエアによる接続の取扱い」と称される）を実施するのではなく、ＨＯＥ１１２、１１３及び１１８でネットワークフレームを処理すること（ある場合には、「ハードウエアによる接続の取扱い」と称される）により、ＮＩＣ１１０、１１１及び１１６とマイクロプロセッサ１０６との間の通信及びマイクロプロセッサ１０６によって行われる計算量を実質的に減ずることができる。
【０００９】
[0011]メモリコントローラ１０４は、主メモリ１０２及びマイクロプロセッサ１０６に結合されており、入出力コントローラ１０８は、マイクロプロセッサ１０６及びＮＩＣ１１０、１１１及び１１６に結合されている。本発明の一実施形態では、マイクロプロセッサ１０６は、入出力コントローラ１０８へ命令又はデータを書き込むことにより、命令又はデータをＮＩＣ１１０、１１１及び１１６へ送信する。このような命令又はデータが入出力コントローラ１０８へ書き込まれるとき、入出力コントローラ１０８は、随意に、ターゲットＮＩＣが理解できるようなフォーマットへとそれら命令又はデータを変換し、命令又はデータをターゲットＮＩＣへと通信する。同様に、ＮＩＣ１１０、１１１及び１１６は、命令又はデータを入出力コントローラ１０８へ書き込むことにより、命令又はデータをマイクロプロセッサ１０６へ送信し、入出力コントローラ１０８は、随意に、マイクロプロセッサ１０６が理解できるようなフォーマットへと命令又はデータを変換し、その命令又はデータをマイクロプロセッサ１０６へと通信する。前述したような結合は、ＰＣＩ（商標）バスの如きメモリバス若しくは入出力バス又はそれらの組合せとして実施することができ、或いは、別の仕方として、任意の他の技術的に可能な方法で実施することができる。
【００１０】
[0012]図１Ｂにより詳細に示されるように、主メモリ１０２は、オペレーティングシステム１２２及びソフトウエアドライバ１２４を含む。ソフトウエアドライバ１２４は、ロードバランシング及びフェイルオーバー（「ＬＢＦＯ」）モジュール１２６及びＴＣＰ／ＩＰスタック１３０を含む。ＬＢＦＯモジュール１２６は、各ＮＩＣについてのネットワーク統計量（例えば、各ＮＩＣに係る接続の数、各ＮＩＣによって送受信されるパケットの数）を追跡し、ネットワーク接続がそのコンピューティング装置１００内の１つのＮＩＣから別のＮＩＣへと移される時に、ＴＣＰ／ＩＰスタック１３０と通信する。ＬＢＦＯモジュール１２６は、ハッシュエンジン１２８を含み、ハッシュエンジン１２８は、前述したようなネットワーク統計量に基づいて、ネットワーク接続がコンピューティング装置１００における別の機能できるＮＩＣに亘ってどのように分散されるべきかを知能的に決定するものである。ハッシュエンジン１２８の機能については、２００７年５月１８日に出願され、ＵＳＳＮ１１／７５０，９１９及び代理人管理番号ＮＶＤＡ/Ｐ００１８８３を有し、「Intelligent Load Balancing and Failover of Network Traffic」と題する関連米国特許出願明細書に記載されているところである。従って、この関連特許出願明細書の記載は、ここに援用される。
【００１１】
[0013]図１Ｃにより詳細に示されるように、ハッシュエンジン１２８は、送信ハッシュテーブル１３８及び受信ハッシュテーブル１４０を含む。送信ハッシュテーブル１３８の目的は、ＬＢＦＯモジュール１２６により送信ハッシュテーブル１３８へ与えられるデータに基づいて、ネットワーク接続に関連したパケットを送信するためのコンピューティング装置１００内の機能できるＮＩＣを選択することである。送信ハッシュテーブル１３８は、複数のハッシュテーブルエントリー（例えば、ハッシュテーブルエントリー１３４）及びソフトウエアハッシュ関数（図示していない）を含む。更にまた、各ハッシュテーブルエントリーは、テーブルインデックス（例えば、テーブルインデックス１３２）及びテーブル値（例えば、テーブル値１３６）を含む。ＬＢＦＯモジュール１２６は、ＴＣＰ／ＩＰ接続データを送信ハッシュテーブル１３８におけるソフトウエアハッシュ関数へ通信するハッシュエンジン１２８へＴＣＰ／ＩＰ接続データを通信することにより、ハッシュエンジン１２８にコンピューティング装置１００内の送信ＮＩＣを選択するように指示する。それに応答して、ソフトウエアハッシュ関数は、そのＴＣＰ／ＩＰ接続データに基づいて、送信ハッシュテーブル１３８内のテーブルインデックスを選択する。このような選択されたテーブルインデックスから、送信ハッシュテーブル１３８は、対応するテーブル値を識別し、ハッシュエンジン１２８は、その識別されたテーブル値をＬＢＦＯモジュール１２６へと通信し返す。ソフトウエアハッシュ関数の設計及び動作については、当業者にはよく知られているので、これらのことについては、ここでは論じないこととする。一実施形態では、ＬＢＦＯモジュール１２６は、次の４つのＴＣＰ／ＩＰデータ、即ち、クライアントインターネットプロトコル（「ＩＰ」）アドレス、サーバーＩＰアドレス、サーバーＴＣＰポート、クライアントＴＣＰポート及び仮想ローカルエリアネットワーク（「ＶＬＡＮ」）接続ＩＤをハッシュエンジン１２８へ通信する。他の実施形態では、ＬＢＦＯモジュール１２６は、任意の技術的に可能なＴＣＰ／ＩＰパラメータをハッシュエンジン１２８へ通信することができる。
【００１２】
[0014]受信ハッシュテーブル１４０の目的は、ＬＢＦＯモジュール１２６により受信ハッシュテーブル１４０へ与えられるデータに基づいて、ネットワーク接続に関連したパケットを受信するためのコンピューティング装置１００内の機能できるＮＩＣを選択することである。送信ハッシュテーブル１３８と同様に、受信ハッシュテーブル１４０は、複数のハッシュテーブルエントリー及びソフトウエアハッシュ関数（図示していない）を含み、各ハッシュテーブルエントリーは、テーブルインデックス及びテーブル値を含む。ここでもまた、ＬＢＦＯモジュール１２６は、受信ハッシュテーブル１４０におけるソフトウエアハッシュ関数へＴＣＰ／ＩＰ接続データを通信するハッシュエンジン１２８へＴＣＰ／ＩＰ接続データを通信することにより、ハッシュエンジン１２８にコンピューティング装置１００内の受信ＮＩＣを選択するように指示する。これに応答して、ソフトウエアハッシュ関数は、そのＴＣＰ／ＩＰ接続データに基づいて、受信ハッシュテーブル１４０内のテーブルインデックスを選択する。このように選択されたテーブルインデックスから、受信ハッシュテーブル１４０は、対応するテーブル値を識別し、そして、ハッシュエンジン１２８は、識別されたテーブル値をＬＢＦＯモジュール１２６へと通信し返す。一実施形態では、ＬＢＦＯモジュール１２６がハッシュエンジン１２８へ通信するＴＣＰ／ＩＰデータは、サーバーＩＰアドレスを含む。他の実施形態では、ＬＢＦＯモジュール１２６は、任意の技術的に可能なＴＣＰ／ＩＰデータをハッシュエンジン１２８へ通信することができる。
【００１３】
[0015]コンピューティング装置１００は、デスクトップコンピュータ、サーバー、ラップトップコンピュータ、手のひらサイズのコンピュータ、携帯情報端末、タブレットコンピュータ、ゲームコンソール、セルラー電話又は情報を処理する任意の他のタイプの同様の装置であってよい。
【００１４】
[0016]図２Ａから図２Ｄは、本発明の一実施形態による、ネットワーク接続を過負荷なＮＩＣから回復したＮＩＣへとフェイルバックするための方法ステップ２００のフローチャートを例示している。この方法はコンピューティング装置１００に関して説明されるのであるが、当業者には、これら方法ステップを任意の順序にて行うように構成された任意のシステムも本発明の範囲内に入るものであることは理解されよう。
【００１５】
[0017]図示されるように、ネットワーク接続をフェイルバックするための方法は、ステップ２０２にて開始され、このステップ２０２において、ＬＢＦＯモジュール１２６は、あるフェイルした又は信頼できないＮＩＣが回復したこと（すなわち、フェイルした又は信頼できないＮＩＣがもはや十分に機能すること）を指示するため、各ＮＩＣの状態を監視する。一実施形態では、ＮＩＣは、２つの状態が存在するときに回復したとみなされる。その第１の状態は、以前に切断されたネットワークケーブルが現在再接続されたことを示唆するようなフェイルした又は信頼できないＮＩＣについてのリンク接続があることを、フェイルした又は信頼できないＮＩＣについてのリンク指示に基づいて、ＬＢＦＯモジュール１２６が決定するときである。第２の状態は、コンピューティング装置１００におけるＮＩＣの間に送信されるキープアライブパケットが、フェイルした又は信頼できないＮＩＣによって信頼性をもって受信されていることを、ＬＢＦＯモジュール１２６が決定するときである。２００５年１２月１５日に出願され、ＵＳＳＮ１１/３０３，２８５及び代理人管理番号ＮＶＤＡ/Ｐ００１８７９を有し、「Technique for Identifying a Failed Network Interface Card Within aTeam of Network Interface Cards」と題する関連米国特許出願明細書に記載されているように、コンピューティング装置内のフェイルした又は機能できるＮＩＣは、各ＮＩＣがどのようにしてキープアライブパケットを送信及び／又は受信しているかに基づいて識別される。従って、この関連特許出願明細書の記載は、ここに援用される。これら２つの状態を監視することにより、ＬＢＦＯモジュール１２６は、フェイルした又は信頼できないＮＩＣが回復したかどうかを、決定することができる。
【００１６】
[0018]ステップ２０４において、ＬＢＦＯモジュール１２６は、ステップ２０２にて監視されているフェイルした又は信頼できないＮＩＣが回復したかどうかを決定する。もし、フェイルした又は信頼できないＮＩＣが回復していない場合には、この方法は、ステップ２０２に戻り、そこで、ＬＢＦＯモジュール１２６は、フェイルした又は信頼できないＮＩＣを監視し続ける。しかしながら、もし、ステップ２０４にて、フェイルした又は信頼できないＮＩＣが回復したとＬＢＦＯモジュール１２６が決定する場合には、この方法は、ステップ２０６へと進む。説明のためだけであるが、ＮＩＣ１１０が以前にフェイルし又は信頼できないものとなっており、そして、今現在回復していること、ＮＩＣ１１０がフェイルしたときにＮＩＣ１１０を通して初期に通信していた１つ以上の接続セットがＮＩＣ１１６へ転送されていること、及び、ＮＩＣ１１６が現在過負荷となっていることが仮定されている。ここで使用する用語「接続セット」は、共通のＮＩＣを通して初期に通信している複数の接続を意味している。重要なことは、個々の接続でなく、接続セットをフェイルバックＮＩＣへ転送することにより、所定のＭＡＣアドレスについての接続が１つより多いＮＩＣへと割り当てられてしまうのを防止することができるということである。
【００１７】
[0019]ステップ２０６において、ＬＢＦＯモジュール１２６は、ＮＩＣ１１０が回復したことを知らせる信号をＴＣＰ／ＩＰスタック１３０に送る。ステップ２０８において、ＬＢＦＯモジュール１２６は、ＮＩＣ１１０が回復したことを知らせる信号をハッシュエンジン１２８に送る。ステップ２０９において、ハッシュエンジン１２８は、ネットワーク接続がコンピューティング装置１００内の機能できるＮＩＣに亘ってどのように分散されるべきかについての判断をなすとき、送信ハッシュテーブル１３８及び受信ハッシュテーブル１４０をコンフィギュレーションして、接続が再びそのＮＩＣ１１０へと割り当てられるようにすることができる。
【００１８】
[0020]ステップ２１０において、ＬＢＦＯモジュール１２６は、十分に機能できるＮＩＣ１１０、１１１及び１１６を監視し、これらのＮＩＣのうちのいずれかが過負荷であるかどうかを決定する。一実施形態では、あるＮＩＣは、そのＮＩＣの送信容量又は受信容量に対する割合として表されるようなＮＩＣの利用度が特定のしきい値を越えたときに過負荷であるとみなされる。別の実施形態では、あるＮＩＣは、そのＮＩＣについてのエラー率が特定のしきい値を越えたときに過負荷であるとみなされる。更に別の実施形態では、あるＮＩＣが過負荷であるかどうかを決定するため、利用度とエラー率とを組み合わせたものを使用することができる。ステップ２１２において、ＬＢＦＯモジュール１２６は、ステップ２１０にて監視されているＮＩＣ１１０、１１１及び１１６のうちのいずれかが過負荷であるかどうかを、各ＮＩＣの利用度及び／又はＮＩＣのエラー率に基づいて決定する。もし、ＬＢＦＯモジュール１２６が監視しているＮＩＣのどれも過負荷となっていないことを見出す場合には、この方法は、ステップ２１０へ戻り、ＬＢＦＯモジュール１２６は、ＮＩＣ１１０、１１１及び１１６を監視し続ける。
【００１９】
[0021]しかしながら、もし、ステップ２１２にて、あるＮＩＣ（例えば、ＮＩＣ１１６）が過負荷であることが見出された場合には、この方法は、ステップ２１４−２３８へと進み、そこで、過負荷なＮＩＣ１１６に係るネットワークトラフィックを減ずるように、過負荷なＮＩＣ１１６に係る複数の「接続セット」が「リハッシュ」される。ここで、接続セットのリハッシュすることは、その接続セットについての「初期ＮＩＣ」を決定すること、及び、回復したＮＩＣ１１０へとその接続セットを転送することを含む。ここで使用される用語「初期ＮＩＣ」は、接続が元々そこを通して通信されていたＮＩＣを指している。ステップ２１４において、ＬＢＦＯモジュール１２６は、リハッシュするため、過負荷なＮＩＣ１１６に係る接続セットを選択する。ステップ２１６において、必要ならば、ＬＢＦＯモジュール１２６は、選択された接続セットをＨＯＥ１１８からＴＣＰ／ＩＰスタック１３０へアンオフロードする。２００７年５月１８日に出願され、ＵＳＳＮ１１／７５０，９０３及び代理人管理番号ＮＶＤＡ/Ｐ００１８８０を有し、「Intelligent Failover in a Load-Balanced Networking Environment」と題する関連米国特許出願明細書に記載されているように、接続は、それぞれ、ＮＩＣ１１０、１１１及び１１６内のハードウエアオフロードエンジン１１２、１１３及び１１８へとオフロード又はアンオフロードされる。従って、この関連特許出願明細書の記載は、ここに援用される。
【００２０】
[0022]ステップ２１７において、ＬＢＦＯモジュール１２６は、上記選択された接続セットが転送されるべき新しいＮＩＣとして回復したＮＩＣ（この場合においては、回復したＮＩＣ１１０）を識別する。重要なことは、ＬＢＦＯモジュール１２６が、選択された接続セットについての新しいＮＩＣとして回復したＮＩＣ１１０を識別するとき、ＬＢＦＯモジュール１２６は、オペレーティングシステム１２２からリモートコンピューティング装置（図示していない）へと通信されるパケットをインターセプトするように、自身をコンフィギュレーションし、そのインターセプトしたパケットの元のＭＡＣアドレスを回復したＮＩＣ１１０のＭＡＣアドレスに対応するようにリライトするということである。接続セットのパケットの元のＭＡＣアドレスをリライトすることにより、確実に、その接続セットについての受信トラフィックが、スイッチによって、回復したＮＩＣ１１０へと正しく分散されるようになる。ステップ２１８において、ＬＢＦＯモジュール１２６は、コンピューティング装置１００内のどのＮＩＣが上記選択された接続セットについての初期ＮＩＣであったかを決定する。一実施形態では、各接続セットについての初期ＮＩＣの識別子は、ＴＣＰ／ＩＰスタック１３０に記憶されており、ＬＢＦＯモジュール１２６は、どんな接続セットに対しても初期ＮＩＣの識別子についてＴＣＰ／ＩＰスタック１３０に問い合わせることができる。ステップ２１９において、ＴＣＰ／ＩＰスタック１３０は、回復したＮＩＣに学習パケットをネットワークスイッチ（図示していない）へ送るように指示する。この学習パケットは、初期ＮＩＣのＭＡＣアドレスを含む任意の技術的に可能なパケットタイプであってよい。よく知られているように、このようなパケットを回復したＮＩＣ１１０から送ることにより、選択された接続セットに対する初期ＮＩＣ（ここでは、回復したＮＩＣ１１０）のＭＡＣアドレスに向けられたその後に続くパケットを過負荷なＮＩＣ１１６でなく現時点のＮＩＣ１１０へとルーティングするように、スイッチが自身をリコンフィギュレーションするようにさせられる。従って、回復したＮＩＣ１１０へ転送されるべき選択された接続セットに関連した全てのネットワークトラフィックは、その後、回復したＮＩＣ１１０によって受信される。
【００２１】
[0023]ステップ２２０において、ＬＢＦＯモジュール１２６は、ステップ２１８において決定された初期ＮＩＣの識別子に基づいて、選択された接続セットについての初期ＮＩＣが、回復したＮＩＣであったかどうかを決定する。もし、選択された接続セットについての初期ＮＩＣは、回復したＮＩＣ（この場合には、ＮＩＣ１１０）であったと、ＬＢＦＯモジュール１２６が決定する場合には、この方法は、ステップ２２２に進み、そこで、ソフトウエアドライバ１２４は、その選択された接続セットについての初期ＮＩＣのＭＡＣアドレスを過負荷なＮＩＣ１１６のマルチキャストリストから取り除く。マルチキャストリストからこのＭＡＣアドレスを取り除くことにより、過負荷なＮＩＣ１１６が、初期ＮＩＣ（ここでは、ＮＩＣ１１０）のＭＡＣアドレスへ送信されるべきパケットを受信しないようにすることができる。ステップ２３２において、ＬＢＦＯモジュール１２６は、もし、オフロードによるパフォーマンス利益がそのような動作を是認すると決定する場合には、随意に、その選択された接続セットを回復したＮＩＣ１１０内のＨＯＥ１１２へとオフロードする。
【００２２】
[0024]ステップ２３４において、ＬＢＦＯモジュール１２６は、過負荷なＮＩＣ１１６に係る十分な数の接続セットがリハッシュされ、ＮＩＣ１１６がもはや過負荷でないと決定する。もし、ＮＩＣ１１６がもはや過負荷ではないとＬＢＦＯモジュール１２６が決定する場合には、この方法は、ステップ２３８にて終了する。しかしながら、もし、ＮＩＣ１１６が依然として過負荷である場合には、この方法は、ステップ２３６へ進み、そこで、ＬＢＦＯモジュール１２６は、ステップ２１６へ戻る前に、リハッシュするため過負荷なＮＩＣ１１６に係る別の接続セットを選択する。
【００２３】
[0025]ステップ２２０へ戻り、もし、選択された接続セットについての初期ＮＩＣが回復したＮＩＣ１１０でなかったと、即ち、（i）選択された接続セットが以前のロードバランシング動作においてＮＩＣ１１０以外の機能できるＮＩＣから過負荷なＮＩＣ１１６へ転送されていたと、又は（ii）過負荷なＮＩＣ１１６が、選択された接続セットについての初期ＮＩＣであったと、ＬＢＦＯモジュール１２６が決定する場合には、この方法は、ステップ２２６へと進む。ステップ２２６において、もし、選択された接続セットが以前のロードバランシング動作においてＮＩＣ１１０以外の機能できるＮＩＣから過負荷なＮＩＣ１１６へと転送されていた場合には、ソフトウエアドライバ１２４は、初期ＮＩＣのＭＡＣアドレスを過負荷なＮＩＣ１１６のマルチキャストリストから取り除く。
【００２４】
[0026]ステップ２２８において、ソフトウエアドライバ１２４は、選択された接続セットについての初期ＮＩＣのＭＡＣアドレスを、回復したＮＩＣ１１０のマルチキャストリストに加え、これにより、ＮＩＣ１１０は、初期ＮＩＣのＭＡＣアドレスへ送信されるべき、選択された接続セットに関連付けられたパケットを受信できるようになる。それから、この方法は、前述したように、ステップ２３２へと進む。
【００２５】
[0027]前述した方法の１つの効果は、過負荷なＮＩＣに係る接続セットをリハッシュすることにより、過負荷なＮＩＣ及び回復したＮＩＣに係るトラフィックロードに基づいて、ネットワーク接続セットを回復したＮＩＣへフェイルバックするかどうかについての判断を知能的に行うことができるということである。コンピューティング装置内の機能できるＮＩＣに亘ってネットワークトラフィックをバランシングさせるこのような方法によれば、従来技術に比べて全性能を実質的に改善することができる。
【００２６】
[0028]本発明の幾つかの実施形態について前述したのであるが、本発明の基本的範囲から逸脱せずに、本発明の他の更に別の実施形態を考えることができるものである。例えば、本発明の態様は、ハードウエア又はソフトウエア、又はハードウエアとソフトウエアとの組合せにて実施することができるものである。本発明の一実施形態は、コンピュータシステムに使用するためのプログラム製品として実施することができる。そのようなプログラム製品のプログラムは、それら実施形態（ここに説明した方法を含む）の機能を定義しており、種々なコンピュータ読み取り可能な記憶媒体に含ませることができるものである。コンピュータ読み取り可能な記憶媒体の例としては、これらに限定されるものではないが、（ｉ）情報が永久的に記憶される非書き込み可能記憶媒体（例えば、ＣＤ-ＲＯＭドライブにより読み取られるＣＤ-ＲＯＭディスクの如きコンピュータ内のリードオンリーメモリ装置、フラッシュメモリ、ＲＯＭチップ又は任意のタイプの固体不揮発性半導体メモリ）、及び（ii）変更可能情報が記憶される書き込み可能記憶媒体（例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意のタイプの固体ランダムアクセス半導体メモリ）がある。このようなコンピュータ読み取り可能な記憶媒体は、本発明の機能を指示するコンピュータ読み取り可能な命令を担持するとき、本発明の実施形態である。従って、本発明の範囲は、特許請求の範囲の記載により決定されるものである。
【図面の簡単な説明】
【００２７】
【図１Ａ】本発明の１つ以上の態様を実施することができるコンピューティング装置を例示している。
【図１Ｂ】本発明の１つ以上の態様を実施することができるコンピューティング装置を例示している。
【図１Ｃ】本発明の１つ以上の態様を実施することができるコンピューティング装置を例示している。
【図２Ａ】本発明の一実施形態による、コンピューティング装置において１つ以上の機能できるＮＩＣへ過負荷なＮＩＣからネットワーク接続をフェイルバックするための方法ステップのフローチャートを例示している。
【図２Ｂ】本発明の一実施形態による、コンピューティング装置において１つ以上の機能できるＮＩＣへ過負荷なＮＩＣからネットワーク接続をフェイルバックするための方法ステップのフローチャートを例示している。
【図２Ｃ】本発明の一実施形態による、コンピューティング装置において１つ以上の機能できるＮＩＣへ過負荷なＮＩＣからネットワーク接続をフェイルバックするための方法ステップのフローチャートを例示している。
【図２Ｄ】本発明の一実施形態による、コンピューティング装置において１つ以上の機能できるＮＩＣへ過負荷なＮＩＣからネットワーク接続をフェイルバックするための方法ステップのフローチャートを例示している。
【符号の説明】
【００２８】
１００・・・コンピューティング装置、１０２・・・主メモリ、１０４・・・メモリコントローラ、１０６・・・マイクロプロセッサ、１０８・・・入出力コントローラ、１１０・・・ネットワークインターフェースカード（ＮＩＣ）、１１１・・・ネットワークインターフェースカード（ＮＩＣ）、１１２・・・ハードウエアオフロードエンジン（ＨＯＥ）、１１３・・・ハードウエアオフロードエンジン（ＨＯＥ）、１１４・・・マルチキャスト、１１５・・・マルチキャストリスト、１１６・・・ネットワークインターフェースカード（ＮＩＣ）、１１８・・・ハードウエアオフロードエンジン（ＨＯＥ）、１２０・・・マルチキャストリスト、１２２・・・オペレーティングシステム、１２４・・・ソフトウエアドライバ、１２６・・・ロードバランシング及びフェイルオーバー（ＬＢＦＯ）モジュール、１２８・・・ハッシュエンジン、１３０・・・ＴＣＰ／ＩＰスタック、１３２・・・テーブルインデックス、１３４・・・ハッシュテーブルエントリー、１３６・・・テーブル値、１３８・・・送信ハッシュテーブル、１４０・・・受信ハッシュテーブル
【図１Ａ】
2008293492.tif 000003
【図１Ｂ】
2008293492.tif 000004
【図１Ｃ】
2008293492.tif 000005
【図２Ａ】
2008293492.tif 000006
【図２Ｂ】
2008293492.tif 000007
【図２Ｃ】
2008293492.tif 000008
【図２Ｄ】
2008293492.tif 000009
【外国語明細書】
2008293492000001.pdf