(57)【要約】  様々な例示的な実施形態は、以下の１つまたは複数を含む方法および関連するネットワークノードに関する：ネットワークノードにおいて第１の子リンクアグリゲーショングループ（ＣＬＡＧ）を確立するステップであって、第１のＣＬＡＧが第１のダウンストリームノードへの少なくとも１つのリンクを含むステップ、ネットワークノードにおいて第２のＣＬＡＧを確立するステップであって、第２のＣＬＡＧが第２のダウンストリームノードへの少なくとも１つのリンクを含むステップ、ネットワークノードにおいて親リンクアグリゲーショングループ（ＰＬＡＧ）を確立するステップであって、ＰＬＡＧが第１のＣＬＡＧおよび第２のＣＬＡＧを含むステップ、ネットワークノードにおいてパケットの宛先のアドレスを含むパケットを受信するステップ、パケットの宛先がＰＬＡＧと関連付けされることを決定するステップ、ならびに第１のＣＬＡＧおよび第２のＣＬＡＧの両方を介してパケットを送信するステップ。
2013502840.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークノードによって通信ネットワークの中でパケットをルーティングする方法であって、
ネットワークノードにおいて第１の子リンクアグリゲーショングループ（ＣＬＡＧ）を確立するステップであって、第１のＣＬＡＧが第１のダウンストリームノードへの少なくとも１つのリンクを含むステップと、
ネットワークノードにおいて第２のＣＬＡＧを確立するステップであって、第２のＣＬＡＧが第２のダウンストリームノードへの少なくとも１つのリンクを含むステップと、
ネットワークノードにおいて親リンクアグリゲーショングループ（ＰＬＡＧ）を確立するステップであって、ＰＬＡＧが第１のＣＬＡＧおよび第２のＣＬＡＧを含むステップと、
ネットワークノードにおいてパケットの宛先のアドレスを含むパケットを受信するステップと、
パケットの宛先がＰＬＡＧと関連付けされることを決定するステップと、
第１のＣＬＡＧおよび第２のＣＬＡＧの両方を介してパケットを送信するステップとを含む、方法。
【請求項２】
パケットがユニキャストパケットである、請求項１に記載の方法。
【請求項３】
レイヤ２アドレスをＰＬＡＧと関連付けするステップと、
第１のダウンストリームノードのアドレスをレイヤ２アドレスと関連付けするステップと、
第２のダウンストリームノードのアドレスをレイヤ２アドレスと関連付けするステップと
をさらに含み、
パケットの宛先がＰＬＡＧと関連付けされることを決定するステップが、パケットの宛先のアドレスがレイヤ２アドレスと関連付けされることを決定するステップを含み、第１のダウンストリームノードのアドレスを関連付けするステップおよび第２のダウンストリームノードのアドレスをレイヤ２アドレスと関連付けするステップの両方が、アドレス解決プロトコル（ＡＲＰ）表を変更するステップを含み、パケットの宛先のアドレスがレイヤ２アドレスと関連付けされることを決定するステップが、パケットの宛先のアドレスと関連付けされる、ＡＲＰ表のエントリを読み取るステップを含む、請求項１に記載の方法。
【請求項４】
第１のＣＬＡＧおよび第２のＣＬＡＧの両方を介してパケットを送信するステップが
第１のＣＬＡＧの中に含まれる少なくとも１つのリンクから第１の選択リンクを選択するステップと、
第２のＣＬＡＧの中に含まれる少なくとも１つのリンクから第２の選択リンクを選択するステップと、
パケット、および第１の選択リンクと関連付けされたアドレスを含む第１のフレームを構築するステップと、
パケット、および第２の選択リンクと関連付けされたアドレスを含む第２のフレームを構築するステップと、
第１のフレームを、第１の選択リンクを介して第１のダウンストリームノードに転送するステップと、
第２のフレームを、第２の選択リンクを介して第２のダウンストリームノードに転送するステップと
を含む、請求項１に記載の方法。
【請求項５】
第１のダウンストリームノードにおいて、
ＰＬＡＧを経由してフレームを受信する全てのダウンストリームノードのリストを受信するステップと、
リストからダウンストリームノードの総数を決定するステップと、
ネットワークノードから第１のフレームを受信するステップと、
第１のフレームから１個の情報を導出するステップと、
ダウンストリームノードの総数を使用して１個の情報に数学的演算を実施して、結果のインデックスを得るステップと、
結果のインデックスが第１のダウンストリームノードに対応するかどうかを決定するステップと、
結果のインデックスが第１のダウンストリームノードに対応するとき、第１のフレームに応答するステップと、
結果のインデックスが第１のダウンストリームノードに対応しないとき、第１のフレームを廃棄するステップとをさらに含む、請求項１に記載の方法。
【請求項６】
第１のダウンストリームノードにおいて、全てのダウンストリームノードのリストを、各ダウンストリームノードに関連付けされたノード識別子の昇順配列に配置するステップをさらに含み、
結果のインデックスが第１のダウンストリームノードに対応するかどうかを決定するステップが、
結果のインデックスと等しいインデックスを有する要素を配列から読み取るステップと、
要素が第１のダウンストリームノードの識別情報を含むかどうかを決定するステップと
を含む、請求項５に記載の方法。
【請求項７】
数学的演算がモジュロ演算である、請求項５に記載の方法。
【請求項８】
フレームから１個の情報を導出するステップが、フレームの少なくとも１つのフィールドからハッシュ値を計算するステップを含み、フレームの少なくとも１つのフィールドが、ソースＩＰアドレスを含む、請求項５に記載の方法。
【請求項９】
第１のダウンストリームノードおよび第２のダウンストリームノードに接続された、通信ネットワークの中のパケットをルーティングするためのネットワークノードであって、
宛先アドレスを含むパケットを受信するインターフェイスと、
第１のダウンストリームノードに接続された少なくとも１つのインターフェイス、および第２のダウンストリームノードに接続された少なくとも１つのインターフェイスを含む複数のインターフェイスと、
第１の子リンクアグリゲーショングループ（ＣＬＡＧ）識別子、および第１のダウンストリームノードに接続される複数のインターフェイスのうちの少なくとも１つのインターフェイスの指示を含む第１のＣＬＡＧレコード、
第２のＣＬＡＧ識別子、および第２のダウンストリームノードに接続される複数のインターフェイスのうちの少なくとも１つのインターフェイスの指示を含む第２のＣＬＡＧレコード、ならびに
親リンクアグリゲーショングループ（ＰＬＡＧ）識別子、第１のＣＬＡＧ識別子、および第２のＣＬＡＧ識別子を含むＰＬＡＧレコード
を記憶するリンクアグリゲーション制御ストレージと、
パケットの宛先アドレスがＰＬＡＧ識別子と関連付けされることを決定するアドレス解決モジュールと、
リンクアグリゲーション制御ストレージからＰＬＡＧレコードを取り出すことによって、ＰＬＡＧ識別子が第１のＣＬＡＧ識別子および第２のＣＬＡＧ識別子と関連付けされることを決定し、
第１のＣＬＡＧレコードのインターフェイスの少なくとも１つの指示から第１の選択インターフェイスを選択し、
第２のＣＬＡＧレコードのインターフェイスの少なくとも１つの指示から第２の選択インターフェイスを選択し、
第１の選択インターフェイスおよび第２の選択インターフェイスを介してパケットを転送する
リンクアグリゲーションモジュールと
を備える、ネットワークノード。
【請求項１０】
第１のダウンストリームノードのアドレスによって識別され、ＰＬＡＧ識別子を含む第１のアドレス解決レコードと、
第２のダウンストリームノードのアドレスによって識別され、ＰＬＡＧ識別子を含む第２のアドレス解決レコードと
を記憶するアドレス解決ストレージをさらに備え、
パケットの宛先アドレスがＰＬＡＧ識別子と関連付けされることを決定する際に、アドレス解決モジュールが、パケットの宛先アドレスによって識別されるアドレス解決レコードを取り出す、請求項９に記載のネットワークノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される様々な例示的な実施形態は、一般に、通信ネットワーク中のパケットのルーティングおよびサーバ負荷の均衡化に関する。
【背景技術】
【０００２】
ＩＰテレビジョン（ＩＰＴＶ）など、多くのクライアント−サーバアプリケーションにおいて、特定のサービスを必要とするクライアントの数は、非常に多いことがある。いかなるコンピュータも処理能力は有限であるので、サービス品質が容認できないレベルに低下する前に、サーバは、限られた数のクライアントにサービスを提供することしかできない。最も自明な解決策、すなわち単により速いサーバ構成要素を提供することでは、極めて高価となり、アクティブなクライアントの数が増えるにつれて、技術的に不可能となる可能性がある。したがって、多くのクライアント−サーバアプリケーションでは、全てのクライアントの要求に対応するために、複数の冗長なサーバを設ける。この場合、クライアントの要求を満たす際に、どの単一のサーバも動きが全くとれなくなることがないことを保証するために、負荷均衡化の様々な形が使用される。
【０００３】
負荷均衡化の初歩的な形では、複数のサーバが設けられる場合があり、クライアントは単に、１つのサーバを選択して、要求を処理することができる。これは、ファイルミラーリングなどのアプリケーションに見られる場合があり、要求されるファイルを供給する複数のコンピュータのリストがユーザに提示され、そしてユーザは単にダウンロードするサーバを選ぶ。サーバの現在の状態または地理的な位置など、他の情報が提供される場合があるが、この情報を処理し、通知されたサーバの選択をおこなう責任はユーザにある。選択されたサーバがクライアントによって期待されたサービス品質を提供しない場合、異なるサーバが選択され得る。
【０００４】
サーバ負荷均衡化の別の形では、クライアントは、複数のサーバに複数の要求を送信し、到着する第１の応答を単に受け入れ、後に到着する応答をどれも廃棄する場合がある。やはりこれは、要求が複製され複数のアドレスに送信されなければならないので、クライアントの側により多くの作業を必要とする。マルチキャストプロトコルが複数の宛先に単一の要求を送るために使用される場合があるが、やはりこの方法は、クライアント、サーバおよびネットワークに負担をかける。サーバ（複数可）が、サーバのサービスする各クライアントを知り、クライアントによってホストされるマルチキャストグループに参加する必要があることになる。これは、実用的ではない。
【０００５】
負荷均衡化のより高度な形では、そのサーバからクライアントがサービスを受けることになる中央サーバが調停する場合がある。この方法によれば、クライアントが、中央サーバにクライアントの要求を送ることができ、次いで中央サーバが、クライアントにサービスを提供する適切なワーキングサーバを決定することになる。次いで、中央サーバは、割り当てられたワーキングサーバのアドレスを伴ってクライアントに応答すること、またはワーキングサーバに直接最初の要求を手渡すことのいずれかをおこなうことができる。したがって、この方法は、クライアントに不必要なセッション確立の実行を要求する可能性があり、クライアントを、サーバシステムの内部作業の少なくとも一部にさらす。この方法は、また、例えばサービス拒否攻撃などの攻撃に対し、サーバシステムをより脆弱なままにする追加の欠点を持つ恐れがある。
【０００６】
加えて、中央サーバは、任意の他のコンピューティングシステムと同じ制限を有することになり、中央サーバが、同様にあまりに多くの確立要求を受信するので、効率的に処理できない恐れがある。したがって、特にクライアントの量が多いアプリケーションでは、複数の中央サーバが必要とされる可能性があり、問題は再帰的となる。この場合、中央サーバが効率的に処理できるよりも多い要求を中央サーバは受信しないことを保証するため、負荷均衡化の別の形が実施されなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
サービスを要求することにおいて、クライアントデバイスによって実行される方法を不必要に複雑化することなく、複数のサーバ間でサーバ負荷を均衡化させる方法が必要とされている。加えて、クライアントデバイスにはほとんど不可視の方式で、サーバ負荷を均衡化する方法の必要がある。
【０００８】
任意のネットワークシステムが機能停止する可能性のある別の点は、ネットワークノードを接続するリンクにある。参照により本明細書に組み込まれるＩＥＥＥ８０２．１ＡＸは、この可能性に立ち向かうリンクアグリゲーショングループ（ＬＡＧ）を提供する。ＬＡＧは、同一の２つのノード間の複数のリンクからなる。パケットをＬＡＧを介して送るとき、送信ノードは、単に、ＬＡＧを構成するリンクのうちの１つを選択し、選択されたリンクの１つを介してパケットを送信する。ＬＡＧは、その構成要素のリンクのうちの１つのＭＡＣアドレスなどの識別子を与えられる。この方式では、パケットは、ＬＡＧの両端の２つのデバイス以外の全てのデバイスにはほとんど不可視である方式で、複数のリンクのうちの１つを介してパケットの宛先に送信され得る。１つのリンクが機能停止した場合、それでもなおパケットは、ＬＡＧ中の残りのリンクを介して送信され得る。
【０００９】
リンク機能停止に立ち向かうことおよび送信速度を増加することに有効である一方で、ＬＡＧは、多くの他の問題には有用でない。ＬＡＧの動作は非常に単純であり、高度にカスタマイズ可能なものではない。したがって、ネットワークの問題を解決し性能を向上させる、新規で独創的な方法を考案するときには、ＬＡＧは特に有用ではない。したがって、ＬＡＧの実施がより高度な機能性およびカスタマイズを可能にする、さらなる必要がある。
【課題を解決するための手段】
【００１０】
本発明の上記の目的および利点は、様々な例示的な実施形態によって達成され得る本発明の目的および利点を例示しており、実現され得る可能性のある利点を包括したり制限したりすることを意図していない。したがって、様々な例示的な実施形態のこれらおよび他の目的および利点は、本明細書の説明から明らかとなり、または、本明細書で具現化されるときもしくは当業者には明らかであり得る任意の変形形態に鑑みて変更されるときの両方で、様々な例示的な実施形態を実施することから学ぶことができる。したがって、本発明は、本明細書中の様々な実施形態において示され記載される新規の方法、配置、組合せ、および改善の中に存在する。
【００１１】
クライアントデバイスにはほとんど不可視の方式で複数の冗長サーバ間でサーバ負荷を均衡化する方法についての現在の必要に照らして、様々な例示的な実施形態の簡単な概要が提示される。いくつかの簡略化および省略が以下の概要でなされる場合があるが、概要は、様々な例示的な実施形態のいくつかの態様を強調して紹介することを意図しており、本発明の範囲を限定することを意図していない。当業者が発明概念を製作および使用することを可能にするために適切な、好ましい例示的な実施形態の詳細な説明は、後のセクションで続くことになる。
【００１２】
様々な例示的な実施形態は、以下の１つまたは複数を含む方法および関連するネットワークノードに関する：ネットワークノードにおいて第１の子リンクアグリゲーショングループ（ＣＬＡＧ）を確立するステップであって、第１のＣＬＡＧが第１のダウンストリームノードへの少なくとも１つのリンクを含むステップ、ネットワークノードにおいて第２のＣＬＡＧを確立するステップであって、第２のＣＬＡＧが第２のダウンストリームノードへの少なくとも１つのリンクを含むステップ、ネットワークノードにおいて親リンクアグリゲーショングループ（ＰＬＡＧ）を確立するステップであって、ＰＬＡＧが第１のＣＬＡＧおよび第２のＣＬＡＧを含むステップ、ネットワークノードにおいてパケットの宛先のアドレスを含むパケットを受信するステップ、パケットの宛先がＰＬＡＧと関連付けされることを決定するステップ、ならびに第１のＣＬＡＧおよび第２のＣＬＡＧの両方を介してパケットを送信するステップ。
【００１３】
この方式において、様々な例示的な実施形態が、任意のパケットをサーバのグループのそれぞれにルーティングすること、およびどのサーバが受信したパケットを処理し、かつ／または応答するか決定することを可能にすることが明らかであろう。具体的には、ＰＬＡＧに含まれるあらゆるＣＬＡＧを介してパケットを送ることによって、そのようなＣＬＡＧに接続された各サーバがパケットのコピーを受信することになる。したがって、様々な例示的な実施形態は、クライアントデバイスにはほとんど不可視の方式で、パケットを複数のサーバに送信することを可能にする。
【００１４】
様々な例示的な実施形態をより良く理解するために、添付図面への参照がなされる。
【図面の簡単な説明】
【００１５】
【図１】ユニキャストパケットまたはマルチキャストパケットを複数のサーバにルーティングするための例示的なネットワークの概略図である。
【図２】ユニキャストパケットまたはマルチキャストパケットを複数のサーバにルーティングするための例示的なルーティングノードの概略図である。
【図３】ＩＰアドレス解決に関するデータを記憶するための例示的なデータ配置の概略図である。
【図４】子リンクアグリゲーショングループ構成を記憶するための例示的なデータ配置の概略図である。
【図５】親リンクアグリゲーショングループ構成を記憶するための例示的なデータ配置の概略図である。
【図６】複数のサーバ間で負荷均衡化をおこなうための例示的なネットワークの概略図である。
【図７】現在アクティブなサーバのインデックス付けされたリストを記憶するための例示的なデータ配置の概略図である。
【図８】ユニキャストパケットまたはマルチキャストパケットを複数のサーバにルーティングするための、例示的な方法の流れ図である。
【図９】複数のサーバ間で負荷均衡化をおこなうための例示的な方法の流れ図である。
【発明を実施するための形態】
【００１６】
ここで図面を参照すると、図面中では同様の番号は同様の構成要素またはステップを参照しており、様々な例示的な実施形態の幅広い態様が開示されている。様々な例では様々なネットワークアドレスを示すために文字を使用するが、これらの文字はプレースホルダとして働き、実際の動作では、適切な基準にしたがって形成される有効なネットワークアドレスがおそらく存在するであろうということは留意されるべきである。加えて、本明細書中では、様々な実施形態が特にＩＰパケットをルーティングするよう記載されているが、本開示は決してこのプロトコルに限定されるものではない。
【００１７】
図１は、ユニキャストパケットまたはマルチキャストパケットを複数のサーバにルーティングするための例示的なネットワーク１００の概略図である。例示的なネットワーク１００は、送信ノード１１０、通信ネットワーク１２０、ルーティングノード１３０、および複数の受信ノード１４０ａ、１４０ｂ、１４０ｃを含むことができる。
【００１８】
送信ノード１１０は、受信ノード１４０ａ、１４０ｂ、１４０ｃと通信するデバイスであってよい。例えば、送信ノード１１０は、クライアントデバイスとしての役割を果たし、ユーザに受信ノード１４０ａ、１４０ｂ、１４０ｃによって提供され得るサービスへのアクセスを可能にする。より具体的には、様々な例示的な実施形態において、送信ノード１１０は、パーソナルコンピュータまたはラップトップコンピュータ、無線電子メールデバイス、セル電話、テレビジョンセットトップボックス、またはパケットを別のネットワークデバイスに送信可能な任意の他のデバイスである。送信ノード１１０は、「Ｄ」などのＩＰアドレスと関連付けされ得る。送信ノード１１０は、ＭＡＣアドレスとも関連付けされ得る。
【００１９】
通信ネットワーク１２０は、送信ノード１１０とルータノード１３０の間にデータ通信を提供する任意のネットワークであり得る。通信ネットワーク１２０は、パケット交換または回線交換であり得る。さらに、通信ネットワーク１２０は、例えば、通信ネットワーク１２０と通信する様々なユーザデバイスに、電話およびインターネットサービスを提供することができる。
【００２０】
ルーティングノード１３０は、パケットの宛先アドレスにしたがって、パケットを受信し再送信するデバイスであり得る。より具体的には、様々な例示的な実施形態において、ルーティングノード１３０は、パケットルータ、ネットワークスイッチ、マルチレイヤスイッチ、サーバ、またはアドレスを読み取ってアドレスに関連付けされるポートを介してパケットを転送できる任意の他のデバイスである。ルーティングノード１３０は少なくとも１つのＭＡＣアドレス「Ｔ」と関連付けされ得る。ルーティングノード１３０は複数のＭＡＣアドレスと関連付けされる可能性があるが、簡単のために、ルーティングノード１３０と関連付けされるＭＡＣアドレスのうちの任意の適切なＭＡＣアドレスを参照するために、本明細書中ではＴが使用されることになる。
【００２１】
受信ノードＡ−Ｃ  １４０ａ、１４０ｂ、１４０ｃは、送信ノード１１０と通信するネットワークデバイスであり得る。受信ノードＡ−Ｃ  １４０ａ、１４０ｂ、１４０ｃは、ユーザノード１１０にサービスを提供するサーバデバイス、例えば、ＩＰテレビジョンまたはファイルアクセスなどであり得る。より具体的には、様々な例示的な実施形態において、受信ノードＡ−Ｃ  １４０ａ、１４０ｂ、１４０ｃのそれぞれは、サーバ、パーソナルコンピュータまたはラップトップコンピュータ、無線電子メールデバイス、セル電話、テレビジョンセットトップボックス、またはパケットを別のネットワークデバイスから受信可能な任意の他のデバイスであり得る。
【００２２】
受信ノードＡ  １４０ａは、ＩＰアドレスＡおよび複数のＭＡＣアドレス、ＵおよびＶなどと関連付けされ得る。受信ノードＢ  １４０ｂは、ＩＰアドレスＢおよび複数のＭＡＣアドレス、Ｗ、Ｘ、およびＹなどと関連付けされ得る。受信ノードＣ  １４０ｃは、ＩＰアドレスＣおよび複数のＭＡＣアドレス、Ｚなどと関連付けされ得る。受信ノードＡ−Ｃ  １４０ａ、１４０ｂ、１４０ｃのそれぞれは、任意の数のネットワークインターフェイスを有することができ、したがって、例示的な受信ノードＣ  １４０ｃの場合のように、単一のＭＡＣアドレスを含む任意の数のＭＡＣアドレスを有することができることは明らかであろう。受信ノードＡ−Ｃ  １４０ａ、１４０ｂ、１４０ｃは、ルーティングノード１３０に結合されない追加のネットワークインターフェイスを含むことができるが、本明細書に記載される例示の目的では、ＭＡＣアドレスＵ、Ｖ、Ｗ、Ｘ、Ｙ、およびＺは、ルーティングノード１３０に接続されるネットワークインターフェイスとそれぞれ関連付けされる。
【００２３】
ネットワーク１００の構成要素を記載してきたが、ネットワーク１００の動作の簡単な概要が提供される。以下の説明は、ネットワーク１００の動作の概要を提供するために意図され、したがって、いくつかの点において簡略化となっていることは明らかであろう。ネットワーク１００の詳細な動作は、図２−図５および図８に関連して、以下でさらに詳細に記載されることになる。
【００２４】
様々な例示的な実施形態によれば、送信ノードは、通信ネットワーク１２０を介してパケットを送信することができる。パケットは、ＩＰアドレスＡ（すなわち、受信ノードＡ  １４０ａと関連付けされたＩＰアドレス）にアドレス指定され、フレーム１５０ａの内側で、通信ネットワーク１２０の中の次のデバイスへ搬送され得る。次いで、ルーティングノード１３０が、ＭＡＣアドレスＴにアドレス指定されたフレーム１５０ｂの内側のパケットを受信することができる。どのポートを介してパケットが転送されるべきか決定する際に、ルーティングノード１３０は、パケットのＩＰアドレスを読み、パケットの構成を調べて、パケットを処理する方法を決定することができる。この例では、ルーティングノード１３０は、ＩＰアドレスＡにアドレス指定されたパケットを、受信ノード１４０ａ、１４０ｂ、１４０ｃの３つ全てに送信するように構成されたことを決定することができる。次いで、ルーティングノード１３０は受信ノードＡ  １４０ａにパケットを送信するために介するリンク、受信ノードＢ  １４０ｂにパケットを送信するために介するリンク、および受信ノードＣ  １４０ｃにパケットを送信するために介するリンクを選択することができる。最後に、ルーティングノード１３０は、ＭＡＣアドレスＵを有するインターフェイスにフレーム１５０ｃを、ＭＡＣアドレスＹを有するインターフェイスにフレーム１５０ｄを、ＭＡＣアドレスＺを有するインターフェイスにフレーム１５０ｅを送信することができる。
【００２５】
したがって、送信ノード１１０によってＩＰアドレスＡに送られたパケットは、送信ノード１１０の側で特別な動作をすることなく、各受信ノード１４０ａ、１４０ｂ、１４０ｃにおいて受信された。受信ノード１４０ａ、１４０ｂ、１４０ｃが、たとえあったとしても、受信ノード１４０ａ、１４０ｂ、１４０ｃのうちのどれがパケットに応答しなければならないか決定することは、今やない。どのノードがそのようなパケットに応答するべきか決定するための例示的な方法は、本明細書中で図６−図７および図９を参照して記載される。この処理は、特にＩＰに関係していない様々な実施形態に対しても、同様であり得る。これらの実施形態において、ルーティングノード１３０によって受信されるフレームのペイロードは、それが何であっても、受信ノード１４０ａ、１４０ｂ、１４０ｃのそれぞれに送信され得る。
【００２６】
図２は、ユニキャストパケットまたはマルチキャストパケットを複数のサーバにルーティングするための例示的なルーティングノード２００の概略図である。例示的なルーティングノード２００は、ルーティングノード１３０に対応することができ、第１のインターフェイス２１０、アドレス解決モジュール２２０、アドレス解決ストレージ２３０、リンクアグリゲーションモジュール２４０、リンクアグリゲーション制御ストレージ２５０、および複数のインターフェイス２６０ｕ−ｚを含むことができる。
【００２７】
インターフェイス２１０は、通信ネットワーク１２０を介してデータを送受信するよう構成された、ハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能な命令を備えるインターフェイスであり得る。インターフェイス２１０は、通信ネットワーク１２０の内部で、別のネットワークデバイスに結合され得る。
【００２８】
アドレス解決モジュール２２０は、パケットの宛先アドレスにしたがってパケットをルーティングする方法を決定するよう構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能な命令を含むことができる。例えば、アドレス解決モジュール２２０は、インターフェイス２１０からパケットを受信し、パケットの宛先アドレスを読むことができる。次いで、アドレス解決モジュール２２０は、アドレス解決ストレージ２３０を調べて、宛先アドレスに関連付けされた、次のホップアドレスを決定することができる。アドレス解決モジュール２２０は、最後に、パケットをリンクアグリゲーションモジュール２４０に渡すことができ、したがってリンクアグリゲーションモジュール２４０は、決定された次のホップアドレスにしたがってパケットを転送することができる。
【００２９】
アドレス解決ストレージ２３０は、宛先アドレスとパケットをルーティングするために使用される識別子の間の関係を記憶することが可能な、任意の機械可読媒体であり得る。例えば、アドレス解決ストレージ２３０は、アドレス解決プロトコルにしたがって実装された表であり、したがってＩＰアドレスとＭＡＣアドレスの間の関係を提供することができる。アドレス解決ストレージ２３０の中に記憶されたデータの例示的な実施形態は、以下に図３を参照して、より詳細に記載される。
【００３０】
リンクアグリゲーションモジュール２４０は、パケットを適切なインターフェイス２６０ｕ−ｚを介して送信するよう構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能な命令を含むことができる。リンクアグリゲーションモジュール２４０は、少なくとも１つの親リンクアグリゲーショングループ（ＰＬＡＧ）および構成要素の子リンクアグリゲーショングループ（ＣＬＡＧ）を実装することができる。
【００３１】
ＣＬＡＧは、別のネットワークノードへの１つまたは複数のリンクを含むよう構成され得る。各ＣＬＡＧは、ＣＬＡＧ識別子と関連付けされ得る。このＣＬＡＧ識別子は一意の識別子であるか、または、ＣＬＡＧのＭＡＣアドレスなど含まれるリンクの１つに関連付けされた識別子であり得る。動作において、パケットをＣＬＡＧを介して転送するとき、リンクアグリゲーションモジュール２４０は、ＣＬＡＧに含まれるリンクの１つを選択し、選択されたリンクのみを介してパケットを送信することができる。このようにして、リンクの冗長性が確立され、ＣＬＡＧの中の１つのリンクが機能停止する場合、残りのリンクが結び付けられたネットワークノードと通信するために使用され得る。
【００３２】
ＰＬＡＧは、複数のＣＬＡＧを含むよう構成され得る。各ＣＬＡＧは、異なるネットワークノードまたは同じネットワークノードに接続することができる。ＰＬＡＧは、一意の識別子または含まれるＣＬＡＧのうちの１つのＣＬＡＧ識別子と同じであり得るＰＬＡＧ識別子と関連付けされ得る。動作において、ＰＬＡＧを介してパケットを転送するとき、リンクアグリゲーションモジュール２４０は、各構成要素のＣＬＡＧを介してパケットを転送することができる。次いでパケットは、上に記載のように、構成要素のＣＬＡＧの通常の動作にしたがって転送され得る。したがって、ＰＬＡＧを介して転送されるパケットは、各構成要素のＣＬＡＧから１つのリンクを介して送られることになる。各ＣＬＡＧが異なるネットワークノードに接続するとき、各ネットワークノードはパケットの１つのコピーを受信することになり、次いで、パケットのコピーをそれに応じて処理することができる。
【００３３】
図２における例示的な実施形態によれば、ルーティングノード２００は、１つのＰＬＡＧおよび３つのＣＬＡＧで構成される。第１のＣＬＡＧは、識別子としてＭＡＣアドレスＵを有し、インターフェイス２６０ｕ、２６０ｖを含む。第２のＣＬＡＧは、識別子としてＭＡＣアドレスＷを有し、インターフェイス２６０ｗ、２６０ｘ、２６０ｙを含む。第３のＣＬＡＧは、識別子としてＭＡＣアドレスＺを有し、インターフェイス２６０ｚを含む。ＰＬＡＧは、識別子としてＭＡＣアドレスＵを有し、ＣＬＡＧ  Ｕ、ＣＬＡＧ  Ｗ、およびＣＬＡＧ  Ｚを含む。
【００３４】
リンクアグリゲーション制御ストレージ２５０は、様々なリンクアグリゲーショングループの構成を記憶することが可能な、任意の機械可読媒体であり得る。リンクアグリゲーション制御ストレージ２５０は、例えば、ルーティングノード２００上に構成される全てのＰＬＡＧおよびＣＬＡＧの定義を含有することができる。リンクアグリゲーション制御ストレージ２５０によって記憶されるデータの例示的な実施形態は、図４−図５を参照して以下でさらに詳細に記載される。
【００３５】
インターフェイス２６０ｕ−ｚはそれぞれ、データを送受信するよう構成された、ハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能な命令を備えるインターフェイスであり得る。各インターフェイス２６０ｕ−ｚは、複数のネットワークノードの１つに結合され得る。例えば、インターフェイス２６０ｕ、２６０ｖは受信ノードＡ  １４０ａに結合され得、インターフェイス２６０ｗ、２６０ｘ、２５０ｙは受信ノードＢ  １４０ｂに結合され得、インターフェイス２６０ｚは受信ノードＣ  １４０ｃに結合され得る。
【００３６】
図３は、ＩＰアドレス解決に関するデータを記憶するための例示的なデータ配置３００の概略図である。データ配置３００は、例えば、アドレス解決ストレージ２３０の中に記憶されたデータベースの中の表であり得る。別法として、データ配置３００は、一連のリンクされたリスト、配列、または同様のデータ構造であってよい。したがって、データ配置３００は、基礎をなすデータの抽象化であり、このデータの記憶に適した任意のデータ構造が使用され得ることが明らかである。
【００３７】
データ配置３００は、ＩＰアドレスフィールド３１０、対応するＭＡＣアドレスフィールド３２０、および有効期間（ｔｉｍｅ  ｔｏ  ｌｉｖｅ：ＴＴＬ）フィールド３３０を含むことができる。ＩＰアドレスフィールド３１０は、特定のレコードが対応するＩＰアドレスを示すために使用され得る。ＭＡＣアドレスフィールド３２０は、パケットを対応するＩＰアドレスにルーティングするために使用されるべきＭＡＣアドレスを示すことができる。ＴＴＬフィールド３３０は、いつ特定のレコードがデータ配置３００から削除されるべきかを示すことができる。
【００３８】
例として、レコード３４０は、ＩＰアドレスＡを宛先とするパケットがＭＡＣアドレスＵに関連付けされたインターフェイスを介して転送されるべきであること、およびこのマッピングがレコード３４０が削除され得る時点である２１：１２：００まで存続するべきであることを示す。同様に、レコード３５０は、ＩＰアドレスＢもＭＡＣアドレスＵにマッピングすること、およびこのマッピングが０９：０１：２５まで存続すべきであることを示す。レコード３６０は、ＩＰアドレスＣが同様にＭＡＣアドレスＵにマッピングすること、およびこのマッピングが００：５１：５０まで存続するべきことを示す。データ配置３００は、多数の追加レコード３７０を含有することができる。
【００３９】
図４は、ＣＬＡＧ構成を記憶するための例示的なデータ配置４００の概略図である。データ配置４００は、例えば、リンクアグリゲーション制御ストレージ２５０の中に記憶されたデータベースの中の表であり得る。別法として、データ配置４００は、一連のリンクされたリスト、配列、または同様のデータ構造であってよい。したがって、データ配置４００は、基礎をなすデータの抽象化であり、このデータの記憶に適した任意のデータ構造が使用され得ることが明らかであろう。
【００４０】
データ配置４００は、ＣＬＡＧアドレスフィールド４１０およびリンクアドレスフィールド４２０を含むことができる。ＣＬＡＧアドレスフィールド４１０は、ＣＬＡＧレコードが対応するＣＬＡＧ識別子を示すことができる。リンクアドレスフィールド４２０は特定のＣＬＡＧアドレスに関連付けされたＭＡＣアドレスを示すことができる。
【００４１】
例として、ＣＬＡＧレコード４３０は、ＭＡＣアドレスＵを識別子として有するＣＬＡＧが構成され、ＣＬＡＧがＭＡＣアドレスＵおよびＶに関連付けされたインターフェイスを含むことを示す。同様に、ＣＬＡＧレコード４４０は、ＭＡＣアドレスＷを識別子として有するＣＬＡＧが構成され、ＣＬＡＧがＭＡＣアドレスＷ、Ｘ、およびＹに関連付けされたインターフェイスを含むことを示す。さらに、ＣＬＡＧレコード４５０は、ＭＡＣアドレスＺを識別子として有するＣＬＡＧが構成され、ＣＬＡＧがＭＡＣアドレスＺに関連付けされたインターフェイスを含むことを示す。データ配置４００は、多数の追加ＣＬＡＧレコード４６０を含有することができる。
【００４２】
図５は、ＰＬＡＧ構成を記憶するための例示的なデータ配置５００の概略図である。データ配置５００は、例えば、リンクアグリゲーション制御ストレージ２５０の中に記憶されたデータベースの中の表であり得る。別法として、データ配置５００は、一連のリンクされたリスト、配列、または同様のデータ構造であってよい。したがって、データ配置５００は、基礎をなすデータの抽象化であり、このデータの記憶に適した任意のデータ構造が使用され得ることが明らかであろう。
【００４３】
データ配置５００は、ＰＬＡＧアドレスフィールド５１０およびＣＬＡＧアドレスフィールド５２０を含むことができる。ＰＬＡＧアドレスフィールド５１０は、ＰＬＡＧレコードが対応するＰＬＡＧ識別子を示すことができる。ＣＬＡＧアドレスフィールド５２０は特定のＰＬＡＧアドレスに関連付けされたＣＬＡＧ識別子を示すことができる。
【００４４】
例として、ＰＬＡＧレコード５３０は、ＭＡＣアドレスＵを識別子として有するＰＬＡＧが構成され、ＰＬＡＧがＭＡＣアドレスＵ、Ｗ、およびＺによって識別されるＣＬＡＧを含むことを示す。データ配置５００は、多数の追加ＰＬＡＧレコード５４０を含有することができる。
【００４５】
図６は、複数のサーバ１４０ａ、１４０ｂ、１４０ｃの間で負荷均衡化をおこなうための例示的なネットワーク６００の概略図である。例示的なネットワーク６００は、ルーティングノード１３０、受信ノードＡ−Ｃ  １４０Ａ、１４０Ｂ、１４０Ｃ、および制御ノード６１０を含むことができる。
【００４６】
制御ノード６１０は、それに関して受信ノード１４０ａ、１４０ｂ、１４０ｃがアクティブであり、受信ノード１４０ａ、１４０ｂ、１４０ｃを最新に保つことが可能なネットワークデバイスであり得る。より具体的には、様々な例示的な実施形態において、制御ノード６１０は、サーバ、パーソナルコンピュータまたはラップトップコンピュータ、無線電子メールデバイス、セル電話、テレビジョンセットトップボックス、または各受信ノード１４０ａ、１４０ｂ、１４０ｃと通信可能な任意の他のデバイスであり得る。制御ノード６１０はアクティブな受信ノード１４０ａ、１４０ｂ、１４０ｃのリストを維持し、周期的にこのリストを受信ノード１４０ａ、１４０ｂ、１４０ｃに通信することができる。別法として、受信ノード１４０ａ、１４０ｂ、１４０ｃがアクティブまたは非アクティブになったときに、制御ノード６１０が受信ノード１４０ａ、１４０ｂ、１４０ｃにメッセージを送るだけの場合があり、そこで、受信ノード１４０ａ、１４０ｂ、１４０ｃは、メッセージに応じて、ローカルに記憶されたアクティブなサーバのリストを更新することができる。さらなる別法として、制御ノード６１０が全く存在しない場合があり、受信ノード１４０ａ、１４０ｂ、１４０ｃが、お互いに周期的に通信することによってローカルのアクティブなサーバのリストを維持することができる。
【００４７】
受信ノード１４０ａ、１４０ｂ、１４０ｃは、全て、現在アクティブな受信ノード１４０ａ、１４０ｂ、１４０ｃのリストを使用するアルゴリズムを実装し、受信パケットを処理してそれに応じて応答するか否かを決定することができる。したがって、各受信ノード１４０ａ、１４０ｂ、１４０ｃが、その現在アクティブなサーバのリストの中に、３つの受信ノード１４０ａ、１４０ｂ、１４０ｃの全てに対する参照を含有すると仮定すると、受信ノードＡ  １４０ａがフレーム１５０ｃを受信するとき、受信ノードＡ  １４０ａは共通のアルゴリズムを使用して、受信ノードＣ  １４０ｃがパケットに応答するべきであると決定することができる。したがって、受信ノードＡ  １４０ａはパケットを無視することができる。同様に、受信ノードＢ  １４０ｂがフレーム１５０ｄを受信すると、受信ノードＢ  １４０ｂは、受信ノードＣ  １４０ｃがパケットに応答するべきであると決定することができ、受信ノードＣ  １４０ｃは同様にパケットを無視することができる。受信ノードＣ  １４０ｃがフレーム１５０ｅを受信すると、受信ノードＣ  １４０ｃは、アルゴリズムに従って、受信ノードＣ  １４０ｃがパケットを処理し、それに応じて応答するべきであると決定することができる。したがって、受信ノードＣ  １４０ｃは、ＩＰアドレスＤ（すなわち、送信ノード１１０のＩＰアドレス）にアドレス指定された応答パケットを送ることができ、応答パケットをＭＡＣアドレスＴにアドレス指定されたフレーム６２０の中にカプセル化することができる。
【００４８】
図７は、現在アクティブなサーバのインデックス付けされたリストを記憶するための例示的なデータ配置７００の概略図である。データ配置７００は、例えば、受信ノード１４０ａ、１４０ｂ、１４０ｃの１つの中に記憶されるデータベースの中の表であり得る。別法として、データ配置７００は、一連のリンクされたリスト、配列、または同様のデータ構造であってよい。したがって、データ配置７００は、基礎をなすデータの抽象化であり、このデータの記憶に適した任意のデータ構造が使用され得ることが明らかであろう。
【００４９】
データ配置７００は、インデックスフィールド７１０およびサーバＩＤフィールド７２０を含むことができる。インデックスフィールド７１０は、単に、特定のレコードに対応する数を含むことができる。レコードは、所望のレコードのインデックスを指定することによって、アクセスされ得る。サーバＩＤフィールド７２０は、受信ノード１４０ａ、１４０ｂ、１４０ｃの１つに対する識別子を含むことができる。識別子は、例えば、参照される受信ノード１４０ａ、１４０ｂ、１４０ｃと関連付けされたＩＰアドレスであり得る。
【００５０】
例として、サーバレコード７３０は、数字０によってインデックス付けされ、ＩＰアドレスＡ（すなわち、受信ノードＡ  １４０ａ）におけるノードを、アクティブなサーバとして識別することができる。同様に、サーバレコード７４０は、数字１によってインデックス付けされ、ＩＰアドレスＢ（すなわち、受信ノードＢ  １４０ｂ）におけるノードを、アクティブなサーバとして識別することができる。サーバレコード７５０は、数字２によってインデックス付けされ、ＩＰアドレスＣ（すなわち、受信ノードＣ  １４０ｃ）におけるノードを、アクティブなサーバとして識別することができる。データ配置７００は、多数の追加レコード７６０を含有することができる。
【００５１】
図８はユニキャストパケットまたはマルチキャストパケットを複数のサーバにルーティングするための、例示的な方法８００の流れ図である。方法８００は、受信ノード１４０ａ、１４０ｂ、１４０ｃのそれぞれにパケットを転送するために、ルーティングノード１３０の構成要素によって実行され得る。
【００５２】
方法８００は、ステップ８０５において開始し、ルーティングノード１３０がパケットを受信するステップ８１０に進む。次いでルーティングノード１３０は、ステップ８１５およびステップ８２０のそれぞれにおいて、パケットの宛先ＩＰアドレスを決定し、それを介してパケットを転送する適切なＭＡＣアドレスへと宛先ＩＰアドレスを解決することができる。例えば、ルーティングノード１３０は、アドレス解決ストレージ２３０を調べて、宛先ＩＰアドレスに関連付けされたＭＡＣアドレスを決定することができる。パケットを転送するため適切なＭＡＣアドレスを決定した後、ステップ８２５において、ルーティングノード１３０は、ＭＡＣアドレスがＰＬＡＧに関連付けされているかどうか決定することができる。
【００５３】
ＭＡＣアドレスがＰＬＡＧを識別する場合、方法８００は、例えば、リンクアグリゲーション制御ストレージ２５０の中のＰＬＡＧアドレスに関連付けされたＰＬＡＧレコードにアクセスすることによって、ルーティングノード１３０がＰＬＡＧに関連付けされたＣＬＡＧのリストを取り出すことができる、ステップ８３０に進むことができる。次いでルーティングノード１３０は、ステップ８３５において、例えばリンクアグリゲーション制御ストレージ２５０から第１の構成要素のＣＬＡＧに関連付けされたＣＬＡＧレコードにアクセスすることによって、ＣＬＡＧのリストの中の第１のＣＬＡＧに関連付けされたリンクのリストを取り出すことができる。次いでルーティングノード１３０は、ステップ８４０およびステップ８４５のそれぞれにおいて、ＣＬＡＧについてのリンクのリストから１つのリンクを選択し、選択されたリンクにパケットを送信することができる。次いで方法８００は、ルーティングノード１４０がＣＬＡＧアドレスのリストの最後に達したかどうかをルーティングノード１４０が決定することができる、ステップ８５０へ進むことができる。達していなかった場合、方法８００は、ルーティングノード１４０がリスト中の次のＣＬＡＧについてステップ８３５−８５０を繰り返すことができる、ステップ８３５へと戻ることができる。リストの最後に達していた場合、方法８００は、ステップ８８０において停止することができる。この手法において、受信パケットの１つのコピーが、各ＣＬＡＧを介して送られ得る。
【００５４】
ステップ８２５においてＭＡＣアドレスがＰＬＡＧを識別しないことが決定された場合、方法８００は、代わりにＭＡＣアドレスがＣＬＡＧに関連付けされているかどうかをルーティングノード１３０が決定することができるステップ８５５に移動することができる。この場合、ルーティングノード１３０は、それぞれステップ８６０、ステップ８６５、ステップ８７０において、ＣＬＡＧに関連付けされたリンクのリストを取り出し、リストから１つのリンクを選択し、選択されたリンクにパケットを送信することができる。次いで方法８００は、ステップ８８０において停止することができる。この手法において、ルーティングノード１３０は、ＰＬＡＧ機能に加えて標準的なリンクアグリゲーション機能を実装することができる。
【００５５】
ステップ８５５においてＭＡＣアドレスがＣＬＡＧに関連付けされていないとルーティングノード１３０が決定した場合、ルーティングノード１３０は、パケットが標準的な動作にしたがってルーティングされ得ると仮定することができる。方法８００は、宛先ＩＰアドレスに関連付けされたＭＡＣアドレスにルーティングノード１３０がパケットを送信することができるステップ８７５に進み、次いでステップ８８０において停止することができる。
【００５６】
図９は、複数のサーバ間で負荷均衡化をおこなうための例示的な方法９００の流れ図である。方法９００は、受信ノード１４０ａ、１４０ｂ、１４０ｃのそれぞれの構成要素によって独立して実行され、受信パケットを処理し、それに応じて応答するかどうかを決定することができる。
【００５７】
方法９００は、ステップ９０５において開始し、受信ノード１４０ａ、１４０ｂ、１４０ｃが、受信ノード１４０ａ、１４０ｂ、１４０ｃの全てに対して送られたパケットを受信することができる、ステップ９１０に進むことができる。次いでステップ９１５において、受信ノード１４０ａ、１４０ｂ、１４０ｃは、複数のフィールドおよび他の情報をパケットから抽出することができる。抽出される情報は、例えば、ソースＩＰアドレスまたはサービス要求の種類を含むことができる。次いで方法９００は、当業者に知られている任意の方法を使用して、受信ノード１４０ａ、１４０ｂ、１４０ｃが抽出されたフィールドからハッシュ値を計算することができる、ステップ９２０に進むことができる。次いでステップ９２５において、受信ノード１４０ａ、１４０ｂ、１４０ｃは、例えばローカルに記憶されたアクティブなサーバのリストを調べることにより、受信ノード１４０ａ、１４０ｂ、１４０ｃの合計いくつが現在アクティブか決定することができる。
【００５８】
次いでステップ９３０において、受信ノード１４０ａ、１４０ｂ、１４０ｃは、ハッシュ値およびサーバの総数を使用してインデックス値を計算することができる。例えば、受信ノード１４０ａ、１４０ｂ、１４０ｃは、アクティブなサーバの総数を使用してハッシュ関数にモジュロ演算を実行することができる。この手法において、０と、アクティブなサーバの総数引く１との間の値（０と、アクティブなサーバの総数引く１とを含む）を有するインデックス値が得られることは明らかであろう。次いでステップ９３５において、受信ノード１４０ａ、１４０ｂ、１４０ｃは、計算されたインデックスに関連付けされたアクティブなサーバのリスト中の項目にアクセスすることができる。
【００５９】
ステップ９４０において、受信ノード１４０ａ、１４０ｂ、１４０ｃは、アクセスされた項目が自分自身を識別するかまたは他の受信ノード１４０ａ、１４０ｂ、１４０ｃを識別するかどうかを決定することになる。アクセスされた項目が自分自身を識別すると受信ノード１４０ａ、１４０ｂ、１４０ｃが決定する場合、方法９００は、受信ノード１４０ａ、１４０ｂ、１４０ｃが受信パケットを処理し、それに応じて応答することができるステップ９４５に進むことができる。例えば、受信パケットがＩＰＴＶシステムの中のチャンネル変更の要求であった場合、受信ノード１４０ａ、１４０ｂ、１４０ｃは、送信ノード１１０に新しいチャンネルを送信することによって応答することができる。次いで方法９００は、ステップ９５５において停止することができる。一方、ステップ９４０において、アクセスされた項目が異なる受信ノード１４０ａ、１４０ｂ、１４０ｃを識別すると受信ノード１４０ａ、１４０ｂ、１４０ｃが決定する場合、ステップ９５０において、受信ノード１４０ａ、１４０ｂ、１４０ｃは単にパケットを無視することができ、方法９００は、次いでステップ９５５において停止することができる。上記の手法において、受信ノード１４０ａ、１４０ｂ、１４０ｃのうちのただ１つが、各受信パケットを処理し応答することになることは明らかであろう。
【００６０】
例示的なネットワーク１００、６００の動作についての例示的な構成要素および方法を記載してきたが、ここで、例示的なネットワーク１００、６００の動作の例が、図１−図９を参照して提供されることになる。
【００６１】
ルーティングノード１３０のアドレス解決ストレージ２３０は、データ配置３００によって示され得る。ルーティングノード１３０のリンクアグリゲーション制御ストレージ２５０は、データ配置４００、５００によって示され得る。制御ノード６１０は、現在、受信ノード１４０ａ、１４０ｂ、１４０ｃの状態を監視中であり、受信ノード１４０ａ、１４０ｂ、１４０ｃのそれぞれに、全ての受信ノード１４０ａ、１４０ｂ、１４０ｃが現在アクティブであると示すリストを送信することができる。したがって、各受信ノード１４０ａ、１４０ｂ、１４０ｃは、データ配置７００によって示されるようなアクティブなサーバのリストを、現在、含有することができる。
【００６２】
処理は、送信ノード１１０が、通信ネットワーク１２０を介して、宛先ＩＰアドレスＡを有するパケットをフレーム１５０ａ内部で送信することにともなって、開始することができる。ルーティングノード１３０は、フレーム１５０ｂの内部のパケットを受信することができる。次いで、ルーティングノード１３０のアドレス解決モジュール２２０は、パケットの宛先ＩＰアドレスがＡであると決定することができる。アドレス解決ストレージの中のレコード３４０にアクセスすることによって、アドレス解決モジュール２２０は、ＩＰアドレスＡがＭＡＣアドレスＵに関連付けされることを決定することができる。次いで、パケットはリンクアグリゲーションモジュール２４０に渡され得、ＭＡＣアドレスＵがＰＬＡＧに関連付けされることをリンクアグリゲーションモジュール２４０が決定することができる。リンクアグリゲーション制御ストレージ２５０の中に含有されるＰＬＡＧレコード５３０にアクセスすることによって、ＰＬＡＧ  ＵがＣＬＡＧ  Ｕ、ＣＬＡＧ  Ｗ、およびＣＬＡＧ  Ｚを含有することを、リンクアグリゲーションモジュール２４０が決定することができる。
【００６３】
次いで、リンクアグリゲーションモジュール２４０は、ＣＬＡＧレコード４３０にアクセスし、インターフェイスアドレスＵおよびＶがＣＬＡＧ  Ｕに含有されることを決定することができる。次いで、リンクアグリゲーションモジュール２４０は、インターフェイスアドレスＵを選択し、フレーム１５０ｃの中のパケットを、インターフェイス２６０ｕを介して受信ノードＡ  １４０ａに送信することができる。ＣＬＡＧ  Ｗに移って、リンクアグリゲーションモジュールは、ＣＬＡＧレコード４４０にアクセスし、得られたＣＬＡＧ  Ｗに関連付けされた３つのインターフェイスアドレスのリストからインターフェイスアドレスＹを選択することができる。次いで、リンクアグリゲーションモジュール２４０は、フレーム１５０ｄの中のパケットをインターフェイス２６０ｙを介して受信ノードＢ  １４０ｂに送信することができる。最後に、リンクアグリゲーションモジュールは、レコード４５０にアクセスし、ＣＬＡＧ  Ｚに関連付けされたインターフェイスアドレスのリストからインターフェイスアドレスＺを選択し、フレーム１５０ｅの中のパケットをインターフェイス２６０ｚを介して受信ノードＣ  １４０ｃに送信することができる。
【００６４】
パケットを受信した後、各受信ノード１４０ａ、１４０ｂ、１４０ｃは、最初にパケットからソースＩＰアドレスおよび要求の種類を抽出することによって、パケットに応答するかどうかを決定することができる。例えば、ソースＩＰアドレスがＤであり得、要求の種類が特定のファイルに対する要求であり得る。この情報を使用して、各受信ノード１４０ａ、１４０ｂ、１４０ｃは、抽出された値、例えば「０ｘ４Ｆ３１」などからハッシュ値を計算することができる。次いで、各受信ノード１４０ａ、１４０ｂ、１４０ｃは、例えば、データ配置７００の中のレコードの数を数えることによって、何個のサーバが現在アクティブかを決定することができる。この例では、アクティブなサーバの総数は３である。次いで、各受信サーバは、アクティブなサーバの総数３を使用してハッシュ値にモジュロ演算を実行することによって、計算されたインデックスである２を得ることができる。
【００６５】
次いで各受信ノードは、サーバレコード７５０、すなわち２のインデックスを有するサーバレコードを取り出すことができる。受信ノードＡ  １４０ａおよび受信ノードＢ  １４０ｂの両方は、このサーバレコードが自分自身を識別しないと決定することができ、したがって単にパケットを廃棄することができる。一方、受信ノードＣ  １４０ｃは、このサーバレコードが自分自身を識別することを認識し、ＩＰアドレスＤにアドレス指定される応答パケットを作成することができる。次いで、受信ノードＣ  １４０ｃは、送信ノード１００へ、フレーム２２０の中で応答パケットを送信することができる。
【００６６】
上記によれば、様々な例示的な実施形態が、クライアントにはほとんど不可視の方式で、複数のサーバ間でサーバ負荷を均衡化することを可能にする。具体的には、複数の子リンクアグリゲーショングループを含む親リンクアグリゲーショングループを実装することによって、任意のパケットが、各ＣＬＡＧの最後において、複数のサーバへレイヤ２において転送され得る。さらに、全てのサーバにわたる選択アルゴリズムを実装することによって、サーバは、パケットを処理すべき１つのサーバを、迅速にかつ効率的に決定することができる。
【００６７】
本発明の様々な例示的な実施形態がハードウェアおよび／またはファームウェア中に実装することができることは、上記の説明から明らかであろう。さらに、様々な例示的な実施形態は、少なくとも１つのプロセッサによって読み取られて実行され、本明細書の中で詳細に記載された動作を実施することができる、機械可読記憶媒体上に記憶された命令として実装され得る。機械可読記憶媒体は、ネットワークノード（例えば、ルータまたはスイッチ）などの機械によって読取り可能な形式で情報を記憶するための任意の機構を含むことができる。したがって、機械可読記憶媒体は、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および同様の記憶媒体を含むことができる。
【００６８】
様々な例示的な実施形態がその特定の例示的な態様を具体的に参照して詳細に記載されてきたが、本発明は他の実施形態で実行可能であること、および本発明の詳細は様々な自明な点に関して変更可能であることを理解されたい。当業者には容易に明らかであるように、本発明の精神および範囲の中にとどまりながら、変形形態および変更形態が実施される可能性がある。したがって、上記の開示、説明、および図は、例示のためのみのものであって、決して本発明を限定するものではなく、本発明は、特許請求の範囲によってのみ定義される。
【図１】
2013502840.tif 000003
【図２】
2013502840.tif 000004
【図３】
2013502840.tif 000005
【図４】
2013502840.tif 000006
【図５】
2013502840.tif 000007
【図６】
2013502840.tif 000008
【図７】
2013502840.tif 000009
【図８】
2013502840.tif 000010
【図９】
2013502840.tif 000011
【国際調査報告】
2013502840.tif 000012
2013502840.tif 000013
2013502840.tif 000014