【文献】
Towards a Next Generation Data Center Architecture: Scalability and Commoditization, SIGCOM’08,2008年8月17日,57−62ページ
(58)【調査した分野】(Int.Cl.,DB名)
前記個々のモジュールは、前記個々のネットワークパケットが送信される仮想IPアドレスを前記個々のネットワークパケットのIPオプションに保存して、前記個々のネットワークパケットをカプセル化する、請求項1から5のいずれか一項に記載のプログラム。
【発明を実施するための形態】
【0005】
(序論/概要)
ネットワーク負荷分散装置は、着信パケットをセッションごとに分類し、個々のセッションに関するパケットトラフィックを選択された資源(例えば、サーバー)に分配することによって、ネットワーク中の資源の利用の強化を支援することができる。負荷分散装置におけるパケットトラフィックのボトルネック化の緩和を支援するため、DSR(Direct Server Return)などの最適化技術を利用することができる。DSRにより、ネットワークからの発信パケットトラフィックは、着信パケットトラフィックと同様に負荷分散装置を通過するのではなく、それを迂回することができる。しかし、この技術は、一般的に、ネットワークの単一の仮想VLAN(Virtual Local Area Network)に限定される。対照的に、
図1は、本発明の概念のある高次図を示す。
【0006】
(ネットワークの実施例)
図1は、外部クライアント102がインターネット106を介してスケーラブル負荷分散システム104と通信することができるネットワーク環境100を示す。負荷分散又は拡散は、ネットワークデバイスが一連の有効な次ホップにわたってトラフィックを拡散することができる任意の適切な手段と見なすことができる。
【0007】
スケーラブル負荷分散システム104は、110で示される本質的に無制限の数のターゲットデバイスを支援することができるという点でスケーラブルである、負荷分散機能レイヤー108を含むことができる。この場合、「本質的に無制限の」という用語は、概して、スケーラブル負荷分散システム104を制御する実体が望ましいと考える数のターゲットデバイスを意味することができる。例えば、ターゲットデバイスの数は、数十、数百、数千、又はそれ以上とすることができる。負荷分散機能レイヤー108を、外部クライアント102からの通信が通過し、矢印112によって示されるように、負荷分散機能によって個々のターゲットデバイスに分配することができるように構成する。しかし、矢印114によって表される戻り通信は、外部クライアント102へと戻る過程で負荷分散機能レイヤー108を通過する必要がない。
【0008】
簡潔には、ある実施形態は、レイヤー2ドメイン間パケット配信技術を利用して、負荷分散機能108を達成することができる。場合によっては、これらのレイヤー2ドメイン間パケット配信技術により、DSRなどの負荷分散最適化技術を複数のIPサブネット間で使用し、それによって本質的に無制限のターゲットデバイス110を使用できるようにすることができる。スケーラビリティ及び他の理由から、インターネットプロトコルを使用するネットワークは、IPアドレス中の共通のビットプレフィックスを共有するホストをIPサブネットへと分割することができる。一般的に、単一のサブネットの範囲は単一のVLANの範囲に制限される。異なるサブネットからのIP(Internet Protocol)アドレスを有するターゲットデバイス110を使用できるようにすることで、負荷分散装置の従来の設計における制限を大幅に排除することができる。個々のIPサブネットは、スケーラブル負荷分散システム104のいくつかのレイヤー2ドメインのうちの1つと関連付けることができる。1つ又は複数の実施形態では、パケットフローの個々の着信パケットは、例えばIP−in−IPカプセル化を使用してカプセル化することができる。これは、例えば、負荷分散機能108のマルチプレクサ(MUX又はMux)によって得ることができる。
【0009】
カプセル化された着信パケットは、個々のターゲットデバイスに達する前に負荷分散機能108を通過させることによって、スケーラブル負荷分散システム104上の資源又はターゲットデバイス110へとルーティングすることができる。少なくともある実施形態では、負荷分散機能は、DSRなどの最適化技術を使用して、負荷分散機能におけるパケットフローのトラフィックを低減/最小化することができる。ターゲットデバイス(例えば、サーバー)は、複数のIPサブネット又はVLANと関連付けることができ、したがって、それらの間にまたがることができる。個々のターゲットデバイスと関連付けられた構成要素(例えば、ソフトウェア構成要素)は、受信した着信パケットのカプセル化を解除(de−capsulate)してIP情報を取得することができる。次に、その結果(発信パケット)を、負荷分散機能108を通過させる(すなわち、そこを通す)ことなく、スケーラブル負荷分散システム104から外部クライアント102(例えば、着信パケットの1つ又は複数を受信するクライアント)へとルーティングすることができる。簡潔には、スケーラブル負荷分散システム104は、負荷拡散及び余計なアドレス解決プロトコル(G−ARP)と関連付けられた機能性を含む新たな機能性を可能にすることができる。これらの概念については以下でさらに展開する。
【0010】
図2は、1つ又は複数の実施形態による別の実施例のネットワーク環境200を示す。ネットワーク環境200は、
図1に関連して上述した概念を達成することができる実施例の構造又は構成要素を提供する。ネットワーク環境200は、インターネット106又は他のネットワークを介してスケーラブル負荷分散システム204と通信する外部クライアント202を含むことができる。スケーラブル負荷分散システム204は、一連のルーター206、一連の動的負荷分散装置(DLB)208、及び一連のターゲットデバイス210を含むことができる。この実施例では、一連のルーター206はルーター206(1)及び206(n)として明示する。一連のDLB 208は、マルチプレクサ(つまり、MUX)212(1)及び212(n)をそれぞれ含むDLB208(1)及び208(n)として明示する。一連のターゲットデバイス210は、アプリケーションサーバー214(1)及び214(n)、ならびにローカル負荷分散装置216(1)及び216(n)として明示する。
【0011】
218で全体が示される点線の矢印は、スケーラブル負荷分散システム204の構成要素間の潜在的な通信パスを示す。太い実線の矢印220(1)及び220(2)は、ネットワーク環境200を通って外部クライアント202からアプリケーションサーバー214(1)に至る2つの潜在的なパケットフロー経路を示す。太い実線の矢印222は、アプリケーションサーバー214(1)から外部クライアント202への戻りパケットフローパスを表す。例えば、太線の矢印220(1)及び220(2)は、アプリケーションサーバー214(1)によって扱われる外部クライアント202からの検索クエリを表すことができる。そのため、アプリケーションサーバー214(1)は「ターゲットデバイス」と呼ぶことができる。ここでは、ターゲットデバイスはアプリケーションレベルのアプリケーションサーバーであるが、サンプルのターゲットデバイスは、それに加えて又はその代わりに、例えばアプリケーションレベルの負荷分散装置であるローカル負荷分散装置など、別のタイプのターゲットデバイスであり得ることを認識し、理解されたい。注目すべきは、着信パケットフロー(すなわち、太線の矢印220(1)及び220(2))は一連のDLB208の1つを通過するが、発信される戻りパケットフロー(すなわち、太線の矢印222)は必ずしも負荷分散装置を通過せず、その代わりにDLBを迂回するという点である。その結果、DLBにおけるパケットフロートラフィックのボトルネック化を低減又は最小化することができる。少なくともある実施形態では、これはDSR最適化技術を利用することによって得ることができる。実施例のDSR最適化技術については後述する。
【0012】
少なくともある実施形態では、DLB208(1)及び208(n)の1つ又は複数に対するMUX212(1)及び/又は212(n)は、IP−in−IPカプセル化を使用して、パケットフローをターゲットデバイス210に送ることができる。特定のカプセル化の実施例が提供されるが、カプセル化は、パス又はパスの一部に沿ってパケットの配信をアドレスする任意の手段であることができる。それに加えて、ターゲットデバイスに対するカプセル化解除構成要素222(1)〜222(n)は、着信パケットフローの1つ又は複数のパケットのカプセル化を解除し、その結果(すなわち、発信パケットフロー)を外部クライアント202に返すことができる。一実施例では、カプセル化解除構成要素222(1)〜222(n)は、ターゲットデバイス210上において、ターゲットデバイスのプロセッサによって実行可能なソフトウェア構成要素として明示することができる。
【0013】
この実施形態では、ルーター206は、等コストマルチパス(ECMP)を使用して、DLB208のMUX212(1)及び212(n)にまたがってパケット負荷を拡散させることができる。さらに、MUXは、ターゲットデバイス210に送られるパケットに対してコンシステントハッシングを提供することができる。本発明の実施形態のいくつかでは、DLB208及びターゲットデバイス210は、サーバー(1つ又は複数)などの単一のデバイス上に実装することができる。例えば、サーバーなどの単一の計算デバイスは、MUX212(1)を備えたDLB208(1)及びアプリケーションサーバー214(1)を含むことができる。他の実施形態では、DLBはターゲットデバイスとは別個のデバイス上にあることができる。
【0014】
動作の際、この実施例におけるDLB208はそれぞれ、API(Application Program Interface)を提供して、VIP(Virtual IP)をVIP−DIPマップのDIP(Direct IP)マッピング(例えば、VIP→{Slot
1,Slot
2,Slot
3,…,Slot
N})に統合するように構成することができる。個々のスロットはDIPに割り当てられる。単一のDIPがこのVIP to DIPマップに複数回現れる場合がある。このVIP to DIPマップはVipMapと呼ぶことができる。
【0015】
単一のVIPアドレスとDIPアドレスのリストとの間のマッピングとして上述してきたが、各アドレスはまた、ポート番号(例えば、ポート80などのTCP(伝送制御プロトコル)ポート)と関連付けられてもよいことが理解されるべきである。この一般化では、VIPアドレス、又はVIPアドレス及びポート番号を、DIPアドレス単独又はDIPアドレスとポート番号のどちらかであるエントリからなるリストにマッピングすることができる。単一のDIPアドレスが複数回、単独で、又は異なるポート番号とともに、若しくは同じポート番号とともに、任意の組み合わせで現れることがある。また、DIP及びDIPとポート番号の組み合わせの同一のリストをマッピングする、複数のVIP、又はVIPとポート番号の組み合わせが存在することがある。DLB208の個々のMUX212(1)〜212(n)はそれぞれ、個々の受信パケットフローのパケットからのヘッダー部をハッシュし、その個々のパケットをターゲットデバイス210と関連付けられた適切なIPアドレスに送るように構成することができる。例えば、実施例の受信パケットについて考察する。DLBの一方又は両方は、実施例の受信パケットをハッシュし、計算によってスロット(例えば、{Slot
1,Slot
2,Slot
3,…,Slot
N})を選択することができる。
【0016】
Slot
i=Nを法とするハッシュ(パケットヘッダフィールド)
ここで、NはVIP−DIPマップにおけるスロットの数である。次に、DLB(1つ又は複数)のMUX(1つ又は複数)は、実施例の着信パケットをSlot1に示されるアドレスに送ることができる。この設計の潜在的な利点は、どのDLB 208がパケットを処理するかに関わらず、同じフロー(例えば、すべてのパケットがIPソースアドレス、IP宛先アドレス、TCPソースポート、TCP宛先ポート、及びIPプロトコル番号の同じ5タプルを共有するTCPフロー)の一部であるパケットを同じターゲットデバイス210に転送できることである。
【0017】
図3は、上述のネットワーク環境200の代替の実施例を提供する別の実施例のネットワーク環境300を示す。簡潔には、ネットワーク環境300はネットワーク環境200に類似している。しかし、ネットワーク環境300では、ローカル負荷分散装置(LLB)はDLBとターゲットデバイスとの間の介在レイヤーと見なすことができる。具体的には、ネットワーク環境300は、インターネット又は他のネットワーク306を介してスケーラブルネットワーク分散システム304と通信する外部クライアント302を含む。ネットワーク分散システム304は、ルーターレイヤー308、DLBレイヤー310、LLBレイヤー312、及びターゲットデバイスレイヤー314を含む。この場合、ターゲットデバイスレイヤー314はアプリケーションサーバー314(1)〜314(n)を含む。LLBレイヤー312はLLB312(1)〜312(n)を含む。
【0018】
カプセル化解除構成要素316(1)〜316(n)はそれぞれ、LLB 312(1)〜312(n)上に駐在する。この構成では、外部クライアントの通信はDLBレイヤー310でカプセル化し、LLBレイヤー312で受信されるとカプセル化を解除することができる。次に、通信を適切なアプリケーションサーバー314(1)〜314(n)に転送することができる。外部クライアント302へのあらゆる戻り通信は、DLBレイヤー310及びLLBレイヤー312を迂回させることができる。DLBレイヤー及びLLBレイヤーを迂回させることで、潜在的なボトルネックを回避し、かつ/又は着信する通信のためにシステム資源を保存することができる。
【0019】
図4は、スケーラブル負荷分散システムのネットワーク環境400における構成要素の別の高次の実施例を示す。この実施例では、これらの構成要素は、クエリジェネレーター402(1)〜402(n)、アクセスルーター(AR)404(1)〜404(n)、レイヤー2集合スイッチ406(1)〜406(n)、及びToR(Top of Rack)スイッチ408(1)〜408(n)を含む。ToRは、MUX(M)、ヘルスモニタ(H)、サーバー(S)、負荷分散装置(B)などの様々なサーバーラック構成要素と通信することができる。
【0020】
特定のサービスに役立つVIP1に対しては、AR 404(1)〜404(n)を、同じコストを有するIIP(Intermediate IP)アドレス(IIP1〜IIPN)への次ホップをそれぞれ指すN個のルートで構成することができる。ARでは、ルートはすべてVIPに対する次ホップであってもよい。したがって、ARはN個のIIPアドレス内でトラフィックを均等に分配してもよい。これらのルートは、等しい距離空間を有するAR上の静的ルート(すなわち、等コスト静的ルート(
図5に関連して後述する))として構成することができる。あるいは、これらのルートは、ARと適切なセッションをもつルーティングプロトコル(例えば、BGP (Border Gateway Protocol) 又はOSPF (Open Shortest Path First)スピーカーによって動的に確立することができる。それに加えて、ARはVIPをアナウンスするように構成することができる。IIPはMUX(M)をまたいで分割されてもよい。MUXは、構成されたIIPに対するARPリクエストに応答できるように、それ自体のIPアドレス(MIP)に加えて、1つ又は複数のIIPアドレスも有して構成されてもよい。したがって、個々のMUXは転送されたトラフィックの一部分を受信してもよい。パケットを受信する際、個々のMUXは、1つの活動中のDLBを選択してトラフィックを転送する、コンシステントハッシングアルゴリズムを実行することができる。
【0021】
MUXは、同じ一連の活動中のDLBに基づいて同じコンシステントハッシングアルゴリズムを使用してもよい。したがって、どのMUXがAR 404(1)〜404(n)からパケットを受信しても、それを同じDLBに転送することができる。新しいDLBが追加されるか、又はプールから除去されると、それによって一部の局所的構成が変化する場合があるが、既存の接続は保存できることに留意されたい。
【0022】
図5は、N個の等コスト静的ルートを構成するためのネットワーク環境500及びそれに関連する技術を示す。この例では、ネットワーク環境500は、アクセスルーター404(1)(
図4にて言及)、IIP(1)〜IIP(n)、MUX212(1)〜212(n)、及びDLB208(1)〜208(n)(
図2にて言及)を含む。ネットワーク環境500は、各VIPに対してN個の等コスト静的ルートを構成することができる。これらの等コスト静的ルートの次ホップは中間IP(IIP)アドレスIIP(1)〜IIP(n)を指す。これらのIIPアドレスは、VIP及びDIPプールとは無関係に別個のアドレスプールから取り出されてもよい。この実施形態はまた、トラフィックがN個のIIPアドレスに等しく分配されるように、負荷拡散を始めることができる。
【0023】
別の実施形態では、ルーターに対するBGP接続などのルーティングプロトコルを使用して、起動していて各VIPに対するパケットを受け取っているMUXの情報をルーターに与えることができる。
【0024】
様々な実施形態は、MUXモジュールが移り変わる間、長期にわたる接続をどのように保存するかという課題に対処することができる。ある実施形態で利用される方策は、各MUXで扱われる個々のフローの状態を保持し、この状態のコピーを、個々のMUXがスケーラブル負荷分散システムに追加されたときにそのMUXに与えるというものであり得る。既存の接続を壊さずにMUXの追加又は削除を扱うため、1つの代替の実施例は、新しい接続が任意のMUXによって最初に扱われるたびに状態情報を作成するというものである。この状態は、ピアツーピア機構によって直接、あるいは、接続のためにパケットを扱う必要がある任意のMUXが、他のMUXがその接続のパケットを送ったDIPを決定することができる、論理的に集約されたストアに状態を送ることによって間接的に、MUXの間で共有することができる。
【0025】
状態の共有の必要性がはるかに少なく、したがってより一層スケーラブルであり得る代替の実施形態は、MUXがVIPとDIPの間の現在のマッピング(すなわち、VipMap)を使用して、あるいは、1つのVipMap(V)を使用するパケット転送から別のVipMap(V’)を使用するパケット転送へと変化する遷移期間に、パケットを転送するというものである。この実施形態では、MUXを、V、V’、及びそれらの現在の遷移状態(すなわち、VとV’との間で遷移する状態にあるか、又はそれらすべてが全パケットに対してV’のみを使用して転送を始めているか)に同意するようにすることができる。遷移中でない場合、すべてのMUXは現在のVipMapを使用してすべてのパケットを転送する。遷移中である場合、MUXは、新しい接続のパケット(例えば、TCP SYNパケット)を発見するたびにローカル状態を作成する。新しい接続以外のものを示すパケットを転送するときは、MUXは、その接続に対する状態を有しているかを確かめる。状態を有している場合、MUXは新しいVipMap V’を使用してパケットを転送し、そうでなければ、古いVipMap Vを使用してパケットを転送する。
【0026】
簡潔には、少なくともある構成では、MUX212(1)〜212(n)は次の主要構成要素を有してもよい。(1)IIPの所有権をルーターに対して主張し、そのIIPに対するトラフィックを受信するIIPモジュール、(2)どのDLB208(1)〜208(n)がトラフィックを転送するかを決定するコンシステントハッシングモジュール、(3)パケットを修正するパケットリライター、(4)ローカルDLBモニタ。これらの構成要素のいずれか又はすべてを、簡単に入手できる(すなわち、商品の)サーバーに、及び/又は様々なシステム設計のルーターに実装することができる。MUX構成要素については、
図6〜8に関連してより詳細に後述する。
【0027】
IIPモジュール(IIP(1)〜IIP(n))は、ARPプロトコルによってMUX212(1)〜212(n)をルーターに登録する役割を担ってもよい。基本的に、IIPモジュールは、ルーター上で、IIPアドレス及びMUX MACアドレスのIP−MACマッピングを確立してもよい。
【0028】
実施例の機能(function)「bool AddIP(IP Address iip)」について考察する。この実施例の機能では、IIPアドレスは、MUXインターフェース上の二次的なIPアドレスと考えることができる。MUXが複数の二次的なIPアドレスを有することが可能であることに留意されたい。「AddIP()」によって、MUXネットワークスタックが3つの余計なARP(G−ARP)リクエストを送ってもよく、それによってルーターのARPテーブルを更新する(又はIPアドレス自体に対する競合検出を開始する)ことができる。
【0029】
説明のため、実施例の機能「RemoveIP(IP Address ipp)」について考察する。この実施例の機能は、MUXインターフェースからIIPアドレスを除去してもよい。実施例の機能「SendARP()」についても考察する。この実施例の機能はG−ARPリクエストの送信を強制してもよい。このG−ARPリクエストは、IIP−MACマッピングの正確性に対する予備的基準として送られてもよい。
【0030】
(G−ARP及びアドレス競合検出)
IPアドレスをインターフェースに追加する際、オペレーティングシステム(OS)はG−ARPを(同じL2ドメイン内で)ブロードキャストすることができる。このG−ARPリクエストは、それが要求するIPアドレスを求めてもよい。他のマシンがこのIPアドレスに返答しない場合、IPアドレスは成功裏に追加されてもよい。そうでなければ、IPアドレスの競合を検出することができ、MUXスタックが、マシンがこのIPアドレスを要求するのを防いでもよい。これは、別のMUXがIIPを要求していて(例えば、フェイルオーバー)、それを除去できなかった場合に起こり得る。このシナリオは、外部基準によって(例えば、防御するマシンの切換えによって)扱うことができる。
【0031】
新しいMUX、例えばMUX「B」が、MUX「A」との置換えを必要とする際(例えば、MUX Aの計画ダウンタイム及び/又はMUX Aのシステム障害によって)、新しいMUX BはMUX AのIIPを自身のインターフェースに追加してもよい。
【0032】
少なくとも1つの実施形態では、上述したようなモジュールは、パケットフローをサーバーのプール内の1つ又は複数のステートフルモジュールに導いてもよく、ステートフルモジュールはフロー状態ごとにそれを保持してもよい。この場合、受信パケットは、ルートをクライアントからモジュールへ、ステートフルモジュールへ、さらに関連したリクエストを扱うターゲットサーバーへと進めてもよい。送信フローは、ターゲットサーバーからステートフルモジュールへ、さらにクライアントへとルーティングしてもよい。ステートフルモジュールでのフロー状態ごとに、個々のステートフルモジュールがフローレベルでポリシーを適用して、追加の負荷分散機能を支援してもよい。特に、ステートフルモジュールは、例えば、クッキー若しくはURLを検査して、ターゲットサーバーに対する負荷分散が、アプリケーション、クライアントリクエスト、及び/又はサーバーとネットワーク要素に対する役割及び/又は負荷及び/又は条件に依存するようにカスタマイズすることができる。この実施形態は、CPU及び状態集約的ワークロードを必要なだけの数のサーバーに展開させることができるので、有利であり得る。
【0033】
少なくとも1つの実施形態では、モジュールは、ステートフルモジュールへのルーティングを、TCP/IP及びアプリケーションヘッダーが所持するヘッダー情報よりも深い情報に依存させるように適合することができる。特に、Windows 7(登録商標)などにおける直接アクセス機能を支援するため、モジュールは、パケットの一部の解読を可能にする暗号プロトコルを学習するか、又はそれに参加することができる。その結果、ステートフルモジュールによるターゲットサーバーの選択は、解読された部分に依存することができる。ターゲットサーバーが、送信フローを扱うことができる(かつ潜在的に最も適切な)ステートフルモジュールにそれを戻すように、メカニズムを構築することができる。これは、プログラマブルCPUを使用してモジュールを実現することによって利益を得てもよい。
【0034】
少なくとも1つの実施形態では、モジュールは、IP(Internet Protocol)オプションなどのパケットヘッダーのどこかの部分に元の宛先アドレスを含め、パケットをターゲットデバイスに送ってもよい。パケットの一部がモジュールを通過しない場合、ターゲットデバイスは、この情報をパケットヘッダーから抽出し、それを使用してソース(例えば、外部クライアント)に直接発信パケットを送ることができる。
【0035】
図6は、上述した概念及び後述する概念を達成することができる実施例のスケーラブル負荷分散システムアーキテクチャ600を示す。この実施例では、スケーラブル負荷分散システムアーキテクチャ600は、スケーラブル負荷分散マネージャ602を含むことができ、MUXロールは604で表され、DIPロールは606で表される。負荷分散システムアーキテクチャ600はさらに、ヘルスモニタ608、ヘルスプローブ610、及びルートマネージャ612を含むことができる。MUXロール604は、ユーザーモード616で動作するMUXコントローラ614と、カーネルモード620で動作するMUXドライバ618とを伴うことができる。DIPロール606は、ユーザーモード624で動作するDIPコントローラ622と、カーネルモード628で動作するカプセル化解除ドライバ626とを伴うことができる。
【0036】
スケーラブル負荷分散マネージャ602は、スケーラブル負荷分散システムアーキテクチャ600との相互作用のためのエントリポイントと見なすことができる。スケーラブル負荷分散マネージャ602は、スケーラブル負荷分散概念の一実施例を管理するのに使用することができるAPIを提供することができる。スケーラブル負荷分散の実施例は、XML構成又はAPIを使用して指定することができる。
【0037】
スケーラブル負荷分散マネージャ602は、MUXマシンに対するVIP:DIPマッピングを構成し、MUXマシンが同期し続けることを確保する役割を担うことができる。さらに、スケーラブル負荷分散マネージャ602は、DIPが追加されるか、又はプールから適切に除去されたとき、長期にわたる接続の保存を促進することもできる。この機能については、
図9に関連してより詳細に後述する。
【0038】
利用可能性を向上するため、スケーラブル負荷分散マネージャ602を複写することができ、マスター選択アルゴリズムを使用して状態の一貫性を確保することができる。
【0039】
MUXロール604は、1つ又は複数のIIP(Intermediate IP)アドレスで構成されてもよい。
図4に関連して上述したように、ルーター404(1)などのルーターは、VIPに宛てられたパケットを一連のIIPに向けて転送するように構成されてもよい。所与のIIPを有して構成されたMUXは、そのIIPに向けて転送されたパケットに対するMUX処理を行う。
【0040】
MUXコントローラ614はMUXドライバ618を制御することができる。MUXコントローラは、スケーラブル負荷分散マネージャ602によって使用されるウェブサービスAPIをエクスポートして、MUXを制御することができる。ある実施形態では、MUXコントローラは次の機能を行うことができる。
【0041】
1.VIP:DIPマップをドライバにダウンロードする。
2.長期にわたる接続をドライバに通知する。
3.ドライバから統計を収集する。
4.ネットワークインターフェース上でIIPを構成する。
5.指定されたIIPに対してネットワーク上でG−ARPパケットを送出して、ネットワーク上のルーター又は他のホストによってIIPに向けて転送されたあらゆるパケットをMUXに集める。
【0042】
MUXドライバ618は、基本のパケット
を修正
する機能を実装することができる。MUXドライバは、着信パケットのヘッダー部をハッシュし、それに対してハッシュ値及び現在のVIPマップに基づいてDIPを選び、配信のためにパケットをカプセル化することができる。マップに加えて、MUXドライバ618は、すべてのVIPに対してすべての長期にわたる接続のハッシュ:DIPマッピングのキャッシュを維持することもできる。
【0043】
DIPコントローラ622は、DIPマシン上のカプセル化解除ドライバ626を制御することができる。MUXコントローラ614と同様に、DIPコントローラ622は、スケーラブル負荷分散マネージャ602によって使用されるウェブサービスAPIをエクスポートして、DIPマシンを制御し問い合わせることができる。ある実施形態では、DIPコントローラ622は次の機能を行うことができる。
【0044】
1.ループバックインターフェース上でVIPを構成する。
2.指定されたVIPに対してカプセル化解除を構成する。
3.現在活動中の接続についてDIPマシンに問い合わせる。
4.DIPマシンの健全性を問い合わせる(これは、ヘルスモニタの実装に応じて任意である)。
【0045】
カプセル化解除ドライバ626は、指定されたVIPに宛てられたIP−in−IPパケットのカプセル化を解除することができる。この特徴は、特定のアプリケーションとの間で進行中の通信の切断を回避する助けとなる。例えば、生のソケットを使用してIP−in−IPを送っているアプリケーションがある場合(例えば、仮想プライベートネットワークVPNアプリケーション)、カプセル化解除ドライバ626はそれらのカプセル化を解除しない。
【0046】
ルートマネージャ612は、MUXマシンが追加されるか、又はプールから除去されるとき、ルーターを構成する役割を担うことができる。ルートマネージャは、OSPF若しくはBGPなどのルーティングプロトコル、又はインターフェースを使用して、ルーター上に静的ルートを構成することができる。
【0047】
ヘルスモニタ608は、MUXマシン及びDIPマシン、ならびに場合によってはリクエスト処理に関与するルートの健全状態を維持する役割を担うことができる。この目的のため、ヘルスモニタは、ネットワーク及び/又はネットワーク構成要素の健全性を判断するのに有用であり得る、1つ又は複数のネットワークパラメーターを監視することができる。スケーラブル負荷分散マネージャ602は、MUX及びDIPに関する健全性情報の信頼できるソースとしてヘルスモニタ608を使用することができる。ヘルスモニタ608が、健全性が変化したイベントをスケーラブル負荷分散マネージャ602に通知した場合、スケーラブル負荷分散マネージャは、対応するプールにノードを追加したり、又はそこからノードを除去したりする適切な処置を講ずることができる。
【0048】
1つの観点から見ると、ヘルスモニタ608は、MUX、DLB、及び/又はそれらのマシンへのルートの健全性を監視するのに用いられてもよい。
【0049】
少なくともある実施形態では、ヘルスモニタ608は、VPNダイヤラー、MUXモニタ、及びDLBモニタという3つのモジュールから成ることができる。DLBはHTTPインターフェースを提供してもよい。ヘルスモニタ608は、ターゲット構成要素の健全性を確立するため、様々な種類のヘルスプローブ610を用いてもよい。例えば、ヘルスモニタは、「http get」を送って、DLBから小さいテキスト/xmlファイルを取り出してもよい。ファイルが「マジックワード」を含んでいて、ヘルスモニタ及びDLBがそれに同意した場合、ヘルスモニタは、DLBが立ち上がって稼働していると見なし、DLB又はMUXが予想どおりに稼働しているかを判断してもよい。さらに、少なくともある実施形態では、ヘルスモニタ構成要素はMUXデバイス以外の別個のデバイス上にあってもよい。
【0050】
ヘルスプローブ610はヘルスモニタ608によって使用することができる。例えば、ヘルスモニタは、そのジョブを達成するのに様々なヘルスプローブを使用することができる。ヘルスプローブ610は、ターゲットマシンの健全性の面を能動的に監視することができ、例えば、ピングプローブはマシンの接続性及び活動性を監視する。他のヘルスプローブは、単にマシン/ロールにその健全性を問い合わせてもよく、マシン/ロールが自身の健全性の記録を維持する役割を担って、プローブは単にそれを周期的に問い合わせることができる。
【0051】
HTTPプローブが成功している場合、これはすべてが立ち上がって稼働していることを示し得る。しかし、これはTCPを通じて稼働するので、DLBがソケット又は他の資源を一時的に使い果たしている可能性がある。また、サービスの妨害(DoS)攻撃中、DLBが長期間の間、資源(例えば、ソケット)を使い果たしている可能性がある。これに対する1つの解決策は、継続的なHTTP接続を維持することであり得る。しかし、ほとんどのサーバー/ブラウザの実施形態では継続的なTCP接続が時間切れになってしまう。例えば、一部のブラウザでは60秒後に継続的な接続が時間切れになることがある。したがって、ヘルスモニタは、継続的な接続が切れた場合にそれを再開するように整備され、継続的な接続の切断がDIP障害を示すものとして必ずしも見なさないようにすべきである。
【0052】
障害を起こしたMUXに別のMUXが取って代わることができる場合、すべてのMUXは同じコンシステントハッシング機能を作動させているので、パケットが同じDLBに転送される。したがって、フロー(例えば、TCP接続)は妨害されないはずである。
【0053】
MUXの個別のプールは、アクティブなMUXのホットスタンバイとして利用可能にされてもよい。ヘルスモニタ608は、MUXの障害を検出すると、1つ又は複数のMUXを始動させて、障害を起こしたMUXのIIPを引き継いでもよい。同時に、ヘルスモニタは障害を起こしたMUXのスイッチを切ってもよい。MUXの計画ダウンタイムに対処するため、ホットスタンバイに使用されるのと同様の技術を使用することができる。MUXはステートレスモードで動作するので、ある実施形態は、すべてのパケットが送り出された後で安全にMUXのスイッチを切ることができる。
【0054】
少なくとも1つの実施形態では、DLBの計画ダウンタイムは、ステートフルMUXマップ遷移によって対処することができる。
【0055】
1.MUXは、DLB(D)を使用するVipMap(V)を使用している。
2.MUXは、DLB(D)がT時間に停止するという通知を受ける。
3.MUXは、DLB(D)を使用しない新しいVipMap(V’)を計算する。
4.MUXは、ドライバを設置する(V→V’遷移モード)。
5.遷移中、状態テーブルが維持され、すべてのTCP SYNがテーブルに新しいエントリをもたらす。
a.パケットが状態テーブルのエントリと一致する場合、それは新しいフローであり、したがってV’を使用する。
b.それ以外の場合、古いVが使用される。
注:この遷移期間中、すべての新しいフローは新しいVipMap(V’)に切り替わり、DLB(D)が回避される。
6.DLB(D)は、アクティブなTCP接続(VIPに対する)の数を数え続ける。カウンターがゼロに達すると、遷移が完了したことをMUXに通知する。
7.あるいは、MUXは、状態テーブルのいずれのエントリにも一致しない接続として、長期にわたる接続を識別することができる。
8.時間Tに達すると、遷移V→V’が強制される。MUXはV’に基づいてすべてのトラフィックを転送する。
【0056】
一実施形態では、MUXの計画ダウンタイムには次のステップによって対処する。
1.VipMapを新しいMUX(M’)に設定する。
2.古いMUX(M)がすべてのVIPトラフィックをM’に転送するように設定し、M’は通常通りトラフィックをDLBに転送する。
3.IIPを古いMUX(M)から除去する。
4.IIPに新しいMUX(M’)を追加する。次いで、
5.ルーターが新しいMUXへの転送を始める。
【0057】
少なくとも1つの実施形態では、ヘルスモニタ608は、不測の障害を監視するため、周期的なプローブをMUX及びDLBに送ることができる。DLB障害が観察されると、ヘルスモニタはMUXに対して、そのVipMapを更新して障害を起こしたDLBの使用を回避するように指示することができる。MUX障害が観察されると、ヘルスモニタは、同じVLAN内の別のMUXに対して、IIPをインストールする(かつG−ARPを使用してルーターに知らせる)ように指示することができる。少なくとも1つの実施形態では、ヘルスモニタは2秒ごとにKeepAliveプローブを送り、障害が3回連続した後にMUX/DLBの停止を知らせることができる。
【0058】
ミッションクリティカルなVIPに対する高速のMUXフェイルオーバー(<<1秒)を達成するため、各IIPに対して仮想のMUX群を利用してもよい。この高速フェイルオーバーのコストは、通常動作中のネットワーク使用を上回ることがある。以下のステップを使用して、VIPに対するMUX及びIIPを管理することができる。
【0059】
A.各IIPはマルチキャストアドレスであることができる。各VIPには一群のMUXが割り当てられる。
B.その群のマスターMUXが実際にIIPを保持する。
C.マスターMUXは、このVIPに対するアクティブなMUXであることをその群の全てのメンバーに同報する。このアナウンスは高速(<<1秒)で送られる。このアナウンスはまた、他のMUXが新しいマスター選択プロセスを開始するのを防ぐ。
D.IIPはマルチキャストアドレスであり得るので、上流のルーターは受信したすべてのパケットをVIP群のMUXメンバー(マスター及びすべてのバックアップ)に複写する。
E.指定されたバックアップMUXは、指定された時間Tの間パケットを格納する。
F.マスターMUXは、パケットに対して負荷分散機能を行い、それらをDLBに転送する。
G.所与の時間Tの間にマスターMUXが生きているというアナウンスが受信されなかった場合。指定されたバックアップMUXが負荷分散を開始し、そのバッファ内のすべてのパケットを転送する。
H.この群の中のバックアップが新しいマスター選択プロセスを開始する。ある構成では、指定されたバックアップMUXが新しいマスターになることができる。
I.ステップGにより、DLBがいくつかのパケットを二度受信することがあるが、TCPは複写されたパケット及び一時的なパケット損失を十分に許容する。上流のルーターが生きていて、良好に動作している限り、パケット損失は起こらないことがあることに留意されたい。
【0060】
図7は、1つ又は複数の実施形態によるMUX212(1)(
図2にて言及)の一実施例の構成を示す。集合的にみると、
図7及び8は、パスに沿ってパケットをどのようにカプセル化し、カプセル化を解除できるかを示す。
【0061】
図7は、ユーザーモード702及びカーネルモード704を含むが、カーネルモードにおけるMUXのMUXドライバ618によって提供される機能に焦点を当てている。この場合、MUXドライバは、ネットワークスタックのIPレイヤーの拡張として実現される。
【0062】
この実施例では、パケット706は、アプリケーションサーバーなどから、MUXドライバ618によって受信される。パケットは、708にあるソースクライアントアドレスと、710にある宛先VIPアドレスとを含む。パケットは、物理的なNIC(Network Interface Card)レイヤー712及びNDIS(Network Driver Interface Specification)レイヤー714を通って移動する。パケットは、IPレイヤー718にあるMUXドライバのフォワーダー716によって扱われる。フォワーダーは、パケット706をカプセル化してパケット720を生成する。このパケットは、ソースMUXアドレス722及び宛先DIPアドレス724によってカプセル化された、708にあるソースクライアントアドレスと710にある宛先VIPアドレスとを含む。したがって、元のパケット706は、クライアント708からではなくMUX212(1)から来たような印象を与える形で、パケット720にカプセル化される。
【0063】
MUX212(1)は、VIP:DIPマッピングとして知られるレイヤー4負荷分散を実現することができる。クライアントからのトラフィックは、層1によってMUXノードの1つに送ることができる(一般的に、ECMP(Equal Cost Multi Path)ルーティングによる)。MUX212(1)がパケット706を受信すると、パケットヘッダー部(どのヘッダー部がハッシュされるかに関して柔軟性がある)をハッシュすることができ、このハッシュに基づいてDIPを選択することができる(このプロセスの一実施例は
図9に関連して後述される)。次に、MUXは、元のパケット706を、選ばれたDIPを宛先(すなわち、宛先DIPアドレス724)として、またMUXをソースIPアドレスとして示す、新しいIPヘッダーにカプセル化することができる(あるいは、MUXは元の送信者をソースIPとして使用することができる)。
【0064】
負荷分散クラスター中のMUXノードは同じハッシュ関数を使用することができる。さらに、MUXノードはDIPの追加及び適切な削除の間、状態を維持することができる。これにより、どのMUXがパケットを受信するかに関わらず、所与のフローにおけるパケットを次の層の同じサーバーに転送することが可能になる。
【0065】
図8は、
図6に関連して上述したDIPロール606の一実施例を示す。簡潔には、この場合、DIPカプセル化解除ドライバ626は、
図7で言及したカプセル化されたパケット720に対してカプセル化解除を行うことができる。この構成では、DIPカプセル化解除ドライバは、ネットワーキングスタックのIPレイヤーの拡張として実現される。上述したように、
図7は、配信パスのフロントエンドにおいてカプセル化を達成するための一実施例を提供し、
図8は、バックエンドにおいて、上述した元のパケット706のカプセル化を解除する一実施例を提供する。
【0066】
この実施例では、カプセル化解除ドライバ626はカプセル化されたパケット720を受信することができる。カプセル化解除ドライバは、カプセル化(すなわち、ソースMUXアドレス722及び宛先DIPアドレス724)を除去することができ、カプセル化されたパケットがパスを移動するとパケット706が生成され、宛先VIPアドレス710へ配信できるようになる。
【0067】
上述のMUX 212(1)及びDIPロール606は、本発明の概念を用いて、ロケーションアドレス(すなわち、宛先DIP724)を有するアプリケーションアドレス(すなわち、宛先VIPアドレス710)と関連付けられたパケット706など、パケットのカプセル化を容易にすることができるので、パケット706をレイヤー3インフラストラクチャにわたって搬送し、最終的にレイヤー2宛先VIPアドレス710に配信することができる。さらに、カプセル化されたパケットは、カプセル化によって定義された、選択されたパスを移動することができ、選択されたパスは、混雑を回避するために後続のパケットに対して簡単に再選択することができる。
【0068】
さらに、この構成は、ネットワークノードプール(すなわち、スケーラブル負荷分散システム104、204、及び/又は304の構成要素)の中断がない(又は中断が低減された)増加及び縮小を容易にすることができる。簡潔には、スケーラブル負荷分散システム状態は静的ではない傾向がある。例えば、より多くのアプリケーションサーバーがオンラインになることができたり、かつ/又はアプリケーションサーバーがオフラインになることができたり、スイッチをオンオフすることができたり、通信が開始及び終了されたりなどである。本発明の概念により、既存のスケーラブル負荷分散システムマッピングから新しいスケーラブル負荷分散システムマッピングへの適切な遷移を可能にすることができる。例えば、本発明の概念は、既存のマッピングの既存の又は進行中の通信を追跡することができる。ある実施形態は、既存のマッピングを利用するような進行中の通信の連続性を維持しながら、新しい通信のためにスケーラブル負荷分散システムの変化を反映する新しいマッピングを利用しようとすることができる。その結果、これらの実施形態は、比較的シームレスな形で古いマッピングから新しいマッピングへと「適切に」遷移することができる。
【0069】
図9は、ハッシュ空間をDIPプールにマッピングする実施例の方法900を示す。例えば、マッピングにより、影響を受けるDIPに進まないトラフィックに対する中断なしに、DIPをVIPプールから除去できるようになる。例えば、ハッシュ空間(すなわち、潜在的なハッシュ値)と利用可能なDIPのプールとの間の第1のマッピングが902で示される。ハッシュ空間と利用可能なDIPの別のプールとの間の第2のマッピングが904で示される。この場合、第2のマッピング904は、906で示されるように、DIP 1が終わる(すなわち、利用不能になる)結果として生じる。まず第1のマッピング902を見ると、ハッシュ値が、908(1)、908(2)、及び908(3)ではDIP 1に、910(1)、910(2)、及び910(3)ではDIP 2に、912(1)、912(2)、及び912(3)ではDIP 3に、また914(1)、914(2)、及び914(3)ではDIP 4にマッピングされる。したがって、ハッシュ値はボトルネックを低減又は回避することができる形で、利用可能なDIP間で分配される。
【0070】
906でDIP 1が失われると、この実施形態は、すべての個々の利用可能なDIPに対する突然の過負荷を回避するような形で、残りの利用可能なDIPの間でDIP 1の負荷を再分配する。例えば、第2のマッピング904では、第1のマッピング902では908(1)でDIP 1にマッピングされていたハッシュの第1の部分は、916で示されるDIP 2に再割り当てされる。DIP 1の第2の部分908(2)は918で示されるDIP 3に再割り当てされる。DIP 1の第3の部分908(3)は920で示されるDIP 4に再割り当てされる。したがって、この実施形態は、残りのDIPのいずれに対する過負荷も回避することができ、それによって過負荷を受けたDIPと関連付けられるボトルネックが潜在的に作られるのを回避するような公正な形で、第1のマッピング902に見られるような四方向の分配から、第2のマッピング904に見られるような三方向の分配へとパケットフローをシームレスに再分配する。
【0071】
より詳細な説明のため、1つ又は複数のアプリケーションサーバー(DLB)に対するVIPのマッピングを決定する、VIP−DIPマップMを有するMUX(MUX 212(1)など)について考察する。MがM’に変更されるシナリオについて考察する。上述の技術を利用して、Mを適切にM’に変更することができる。長期の接続が存在することがあるので、任意に、期限Tを定義することができる。その結果、Tに達するとMUXがMをM’に変更することができ、又は適切な変更が完了する。
【0072】
以下に記載するのは、MをM’に適切に変更する手法の単なる一実施例である。
【0073】
パケットPに対して、MUXは、マップMを使用して計算することができるH(P)と、マップM’を使用して計算することができるH’(P)の両方を計算することができる。
H(P)=H’(P)の場合、H(P)に転送されるものはH’(P)に転送されるものに等しい。
【0074】
H(P)!=H’(P)であり、PがSYN(TCP接続を開始してもよいTCP SYNパケット)である場合、Pを使用して、H’(P)に進むべき新しい接続を設定することができ、又はハッシュ(P)→H’(P)を状態テーブルSに挿入して、このフローがM’へと移動したものとして認識できるようにすることができる。
【0075】
H(P)!=H’(P)であり、PがSYNではなく、ハッシュ(P)がSにない場合、これはH(P)への進行中の接続の一部であり得るので、H(P)に進む。
【0076】
H(P)!=H’(P)であり、PがSYNではなく、ハッシュ(P)がSにある場合、これは既にM’へと移動した進行中の接続の一部であり得るので、H’(P)に進む。
【0077】
Tに達するか、又は遷移が終わったとすべてのDLBが通知すると、マッピングをMからM’に変更することができ、状態テーブルSをフラッシュすることができる。
【0078】
これに付随して、DLBには同じM→M’の遷移を通知することができ、この遷移によってそれ(すなわち、DLB)が影響を受けたかを計算することができる。
【0079】
DLBが遷移していると判断すると、有している接続を適切に終わらせることができる。
【0080】
継続的なHTTP接続の場合、DLB HTTPサーバーは「HTTP Keepalive」を不能にすることができる。そのため、DLB HTTPサーバーは、FINとの基本的なTCP接続(TCP接続を完成させるTCP FINパケット)を終了することができる。FINは、このパケットの送信者が接続を終了しようとしていることを示すTCPヘッダー中のフラグと見なすことができる。外部クライアントは接続を再開してもよい。しかし、これは新しいハンドシェイクを開始する傾向があるので、MUXは新しいDLBに対する新しいTCP接続をルーティングすることができる。
【0081】
あるいは、継続的なHTTP接続は、後述するような確立しているTCP接続と同じように扱うことができる。
【0082】
確立しているTCP接続は、遷移期間の間、不活発又は使用中であることがあり、HTTPがそれを切断することが予期されることがある。ある潜在的な動作は次のとおりである。
1.クライアント側でTCP接続をタイムアウトさせる。基本的に、この技術はこれらのTCP接続を単に無視する。
2.時間Tに達するとクライアントが通知を受けるように、TCP RSTをクライアントに強制的に送る。RSTの送信は正しいシーケンス番号を有することを必要としない。そのため、この技術は、「確立している」接続を単に列挙し、確立している接続をすべて打ち切ることができる。
3.MUXは、遷移の影響を受けた接続が終了したとDLBが判断するまで、継続的な接続の状態を維持することができる。
【0083】
オープンTCPソケットの数が0のとき、MUXは、ノードをプールから安全に除去できるという通知を受けることができる。
【0084】
要約すると、本発明の実施形態は、IP−in−IPカプセル化を使用することができるので、サブネットだけではなく潜在的なすべてのターゲットデバイスにわたってDSRを使用することができる。さらに、負荷分散装置を所望に応じてスケーラブル論理層として実現することができる。これらの概念はまた、システム遷移の間、接続を保存することができる。例えば、DIPを追加又は除去することができ、負荷を再分散することができ、かつ/又は適切に接続を遷移させながらシステム容量を調整することができる。MUXレイヤーにおいてコンシステントハッシングを達成して、スケーラビリティを可能にするとともに、状態を保つことなく障害を起こしたDIPを除去するのを可能にすることができる。さらに、システムのモニタリング、制御、及び/又は管理機能を、負荷分散機能とともに配置することができる。これにより、他の潜在的利点の中でも特に、マスターがMUX間のアドレスの連続性を確保できるようになる。
【0085】
(第1の方法の実施例)
図10は、1つ又は複数の実施形態による、VIPに対するDIPプールの拡張に関して長期の接続を保存することと関連付けられた、一実施例のステップ又は動作について説明する方法1000のフローチャートを示す。
【0086】
方法は、任意の適切なハードウェア、ソフトウェア(例えば、ファームウェアを含む)、又はそれらの任意の組み合わせと関連して実現することができる。場合によっては、方法は、方法を行うプロセッサ又は計算装置によって実行することができるコンピューター可読記憶媒体に格納することができる。さらに、方法のステップの1つ又は複数は、任意の回数繰り返すことができる。それに加えて又はその代わりに、少なくともある実施形態ではステップの1つ又は複数が省略されてもよい。
【0087】
ステップ1002で、ネットワーク又はスケーラブル負荷分散システムに対して新しい接続が識別される。少なくともある実施形態では、これはTCP SYNを探すことによって遂行することができる。
【0088】
ステップ1004で、新しい接続に対する状態を保つ。
【0089】
ステップ1006で、既存の又は古い接続に対して既存の又は古いハッシュを使用し、新しい接続に対しては新しいハッシュを使用することができる。
【0090】
ステップ1008で、DIPを問い合わせる。少なくともある実施形態では、これは、保存すべき長期にわたる接続に対するDIPを問い合わせることを含むことができる。あるいは、負荷分散システムは、パケットヘッダーを解釈することによってアクティブな接続を判断することができる。
【0091】
ステップ1010で、新しい接続に対する状態を終了する。
【0092】
ステップ1012で、保存されていた接続に対する状態を終了する。少なくともある実施形態では、これは、保存されていた接続がDIPで終了するとそれらの状態を無効にすることを含むことができる。
【0093】
方法1000は説明のために提供されるものであり、限定的な意味で解釈すべきでない。例えば、遷移中に用いることができる代替の方法は、次のアルゴリズムを利用することができる。
1.パケットヘッダーを解釈することによって、新しい接続の開始パケットを識別する(例えば、TCP SYNを探す)。
2.新しい接続の開始パケットである場合、それを新しいマップのみにしたがって送る。
3.他の場合は、古いマップ及び新しいマップの両方にしたがってパケットを送る。
4.DIPを要求するか、又は特定の期間にわたって負荷分散装置における状態を追跡することによって、古い接続を識別する。
5.古いマップにしたがって古い接続を送り、新しいマップにしたがって新しい接続を送る。
6.タイムアウト後、又はDIPで終了すると、古い接続に関する状態を無効にする。
【0094】
(第2の方法の実施例)
図11は、一実施例の方法1100のステップ又は動作について説明するフローチャートを示す。方法は、任意の適切なハードウェア、ソフトウェア(例えば、ファームウェアを含む)、又はそれらの任意の組み合わせと関連して実現することができる。場合によっては、方法は、方法を行うプロセッサ又は計算装置によって実行することができるコンピューター可読記憶媒体に格納することができる。さらに、方法のステップの1つ又は複数は、任意の回数繰り返すことができる。それに加えて又はその代わりに、少なくともある実施形態ではステップの1つ又は複数が省略されてもよい。
【0095】
ステップ1102で、ネットワークパケットを一連のモジュール間で拡散させることができる。少なくとも1つの実施形態では、モジュールは、サーバー上及び/又はルーター内で実装されるように構成されたMUXモジュールである。拡散は、パケットの個々の特性に対して無意識的であり得るが、宛先へのパケットが、その宛先向けのパケットを扱うのに必要な状態を含むMUXモジュールに配信されてもよい。少なくともある実施形態では、個々のネットワークパケットはECMPルーターを使用してモジュール間で拡散される。
【0096】
ステップ1104で、ネットワークパケットを個々のモジュールにおいてカプセル化することができる。少なくともある実施形態では、パケットのカプセル化は、IP−in−IPカプセル化を含み、かつ/又はパケットが送られた1つ若しくは複数のVIPアドレスを保存する。この点に関して、本明細書に記載される技術の潜在的に重要な特徴は、パケットの特性(例えば、5タプル、IPソースアドレス、IP宛先アドレス、IPプロトコル番号、TCPソースポート、及び/又はTCP宛先ポート)に基づくネットワークパケットのカプセル化と関連付けられるので、同じリクエストの一部であるパケットは、ある実施形態では、どのMUXモジュールがパケットをカプセル化するかに関わらず、同じターゲットデバイスによってすべて扱われ得ることに留意されたい。
【0097】
ステップ1106で、モジュール間で共有される状態を使用して、ネットワークパケットをカプセル化するターゲットデバイスを選択することができる。少なくともある実施形態では、モジュール間で共有される状態はコンシステントハッシュ関数のキー空間である。それに加えて又はその代わりに、少なくともある実施形態では、モジュール間で共有される状態は、ターゲットデバイスの障害に応答して変更することができる。
【0098】
ステップ1108で、ネットワークパケットをモジュールから転送することができる。
【0099】
ステップ1110で、ターゲットデバイス、MUXモジュール、ルーター、及び様々な構成要素間のルートの健全性を監視することができる。
【0100】
(結論)
負荷分散シナリオに関係する技術、方法、デバイス、システムなどを、構造的特徴及び/又は方法論的作用に特有の用語を用いて記載しているが、添付の特許請求の範囲にて定義される主題は記載した特定の特徴又は動作に必ずしも限定されないことを理解されたい。むしろ、特定の特徴及び動作は、特許請求の範囲の方法、デバイス、システムなどを実現する例示的な形態として開示される。