(57)【特許請求の範囲】
【請求項１】
アクセラレータ・スイッチによりロード・バランサの動作を加速する方法であって、
アクセラレータ・スイッチが、ロード・バランサに向けて送られたパケットを受け取ること、
受け取られたパケットの少なくとも１つについて、パケットの５つよりも少ないパラメータをリストのエントリのそれぞれのフィールドと比較することにより、パケットがパケット・グループのリストのエントリと一致するかどうかを判定すること、ならびに
判定に応答して、アクセラレータ・スイッチが、受け取られたパケットの少なくとも１つをその宛先に直接転送することを含む方法。
【請求項２】
ロード・バランサに向けて送られたパケットを受け取ることに、クライアントからロード・バランサに関連付けられたＷｅｂサイトに向けて送られたパケットを受け取ることが含まれ、受け取られたパケットの少なくとも１つをその宛先に直接転送することに、パケットをクライアントからＷｅｂサイトのサーバの１つに、ロード・バランサを通過せずに転送することが含まれる、請求項１に記載の方法。
【請求項３】
パケットがリストのエントリと一致するかどうかを判定することに、パケットのソースＩＰアドレスおよびソース・ポートとリスト内のそれぞれのフィールドとを比較することが含まれる、請求項２に記載の方法。
【請求項４】
比較されるパラメータに宛先アドレスが含まれない、請求項２に記載の方法。
【請求項５】
ロード・バランサに向けて送られたパケットを受け取ることに、サーバからクライアントに向けて送られたパケットを受け取ることが含まれ、受け取られたパケットの少なくとも１つをその宛先に直接転送することに、パケットをサーバからクライアントに、ロード・バランサを通過せずに転送することが含まれる、請求項１に記載の方法。
【請求項６】
パケットがリストのエントリと一致するかどうかを判定することに、パケットの宛先ＩＰアドレスおよび宛先ポートとリスト内のそれぞれのフィールドとを比較することが含まれる、請求項５に記載の方法。
【請求項７】
ロード・バランサが半ＮＡＴモードまたは全ＮＡＴモードで動作する、請求項１に記載の方法。
【請求項８】
パケット・グループとそれぞれの宛先サーバとの間で相関する、リスト内のエントリを作成する方法であって、
アクセラレータが、サーバに転送するパケットの宛先ＩＰアドレスを少なくとも変更する、ロード・バランサからまたはロード・バランサに向けて送られるパケットを受け取ることと、
アクセラレータが、受け取られたパケットに応答して、宛先サーバのリスト内にエントリを作成することを含む方法。
【請求項９】
パケットが、半ＮＡＴモードで動作するロード・バランサから、またはこのロード・バランサに向けて送られる、請求項８に記載の方法。
【請求項１０】
パケットが、全ＮＡＴモードで動作するロード・バランサから、またはこのロード・バランサに向けて送られる、請求項８に記載の方法。
【請求項１１】
エントリの作成に、パケットが受け取られたときの受け取られたパケット内の情報のみを実質的に使用してエントリを作成することが含まれる、請求項８に記載の方法。
【請求項１２】
エントリの作成に、パケットが受け取られたときの受け取られたパケットに含まれない情報を使用してエントリを作成することが含まれる、請求項８に記載の方法。
【請求項１３】
エントリの作成に、以前にアクセラレータによって受け取られた、受け取られたパケットのコピーからの情報を使用してエントリを作成することが含まれる、請求項１２に記載の方法。
【請求項１４】
アクセラレータが、ロード・バランサによって処理されるＷｅｂサイトに向けて送られるパケットを受け取ること、
Ｗｅｂサイトに向けて送られたパケットの識別情報および１つまたは複数のパラメータの値を一時記憶域内に格納すること、ならびに
一時記憶域でロード・バランサから受け取られたパケットと一致するエントリを探索することを含み、
一致が見つかった場合にのみ、パケット・グループの宛先サーバ・リストでのエントリ作成が実行される、請求項８に記載の方法。
【請求項１５】
ロード・バランサに向けて送られたパケットを受け取る入力インターフェースと、
パケット・グループとそのそれぞれの宛先サーバとを一覧表示するテーブルと、
ロード・バランサに向けて送られたパケットのうち少なくとも１つとテーブルのエントリのうち少なくとも１つを比較するコンパレータと、
コンパレータによって一致が見つかったパケットのうち少なくとも１つを一致するエントリのコンテンツに応答してサーバに直接転送する転送ユニットであって、転送されるパケットのフィールドのうち少なくとも１つを変更することを動作モードの少なくとも１つを含む複数の動作モードで動作することが可能な転送ユニットと、
どのモードで転送ユニットが動作するかを決定する制御装置とを含む、ロードバランシング・アクセラレータ。
【請求項１６】
転送ユニットがスプライシングを実行できる、請求項１５に記載のアクセラレータ。
【請求項１７】
制御装置が、転送ユニットの動作モードを、ロード・バランサからまたはロード・バランサに向けて送られるパケットのコンテンツに基づいて決定する、請求項１５に記載のアクセラレータ。
【請求項１８】
テーブルが、データ・エントリを格納するために異なるフィールド・セットを収容することができる物理エントリを有する、請求項１５に記載のアクセラレータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は通信ネットワークに関し、詳細には、そのようなネットワークにおけるサーバのロードバランシングに関する。
【０００２】
【従来の技術】
多くの利用があるＷｅｂサイトは、それぞれが一部のクライアントとの通信を処理する複数サーバのファームによってホストされる場合が多い。一般にそのようなファームには、ファームのＷｅｂサイトに向けて送られたパケット（フレームとも呼ばれる）を受け取る、ロード・バランサが含まれる。ロード・バランサは、単一クライアント・セッションのすべてのパケットが単一のサーバに転送されるように、サイトをホストしている複数のサーバ間でパケットを配布する。サーバ・ロード・バランサは、パケットをプロキシ・キャッシュに転送するなどの他の目的にも使用される。
【０００３】
場合によっては、ロード・バランサにかかるロードが非常に大きく、追加のロード・バランサおよび／または新しいロード・バランサが必要である。ただし、ロード・バランサの交換および／または追加には、新しいバランサが古いロード・バランサの動作規則に従って動作すること、または追加のロード・バランサが古いロード・バランサと適切に協働するように、集約的なプログラミングが必要となる場合がある。
【０００４】
【発明が解決しようとする課題】
本明細書で加速ロード・バランサと呼ばれるロードバランシング・アクセラレータが、古いロード・バランサの挙動に基づいて、Ｗｅｂサイトに向けて送られる（すなわち、Ｗｅｂサイトの宛先ＩＰアドレスを有する）パケットを配布する方法を習得することにより、この問題を解決する。クライアントからＷｅｂサイトに向けて送られるパケットは、パケットを受信し、各パケット・グループの加速テーブルにエントリを作成するアクセラレータを介して、ロード・バランサに経路指定される。パケット・グループは、一般に通信セッションを定義する５つのパラメータ、すなわちソースＩＰアドレスおよび宛先ＩＰアドレス、プロトコル、ならびにソース・ポートおよび宛先ポートに基づいて定義される。さらに、ロード・バランサからサーバへのパケットは、パケットを受信して一致するエントリを探索するアクセラレータを通過する。アクセラレータは、テーブル内のエントリと一致するロード・バランサによって送られたパケットから、パケットの宛先サーバを抽出し、これをそれぞれのエントリに追加する。サーバ識別子を含むテーブルのエントリと一致する、クライアントからロード・バランサへとアクセラレータを通過する後続のパケットは、アクセラレータによって直接サーバに転送される。
【０００５】
本明細書で三角形分割ロード・バランサと呼ばれるロード・バランサの中には、ロードバランシング決定に従って、宛先ＭＡＣアドレスおよび転送するパケットのＶＬＡＮを変更するものもあるが、パケットのＩＰヘッダ内の情報は変更しない。他のロード・バランサは、半ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ／ネットワーク・アドレス変換）転送と呼ばれるスキームで、サーバに転送する宛先ＩＰアドレスおよび／またはパケットのポートを変更する。これらの半ＮＡＴロード・バランサは、これらパケットのソース・アドレスを、サーバのアドレスからファームのアドレス、すなわちインターネット・サイトに変更するために、サーバからクライアントへのパケットを傍受しなければならない。他のロード・バランサは、サーバに転送するパケットのソースＩＰアドレスと宛先ＩＰアドレスの両方を変更する。これらロード・バランサは、半ＮＡＴバランサと呼ばれる。
【０００６】
前述のアクセラレータは、三角形分割ロード・バランサで使用するのに好適である。ただしこれらのアクセラレータは、ロード・バランサがＩＰアドレスを変更した場合、サーバに転送されたパケットと一致するテーブル内のエントリを見つけられなくなるため、半ＮＡＴロード・バランサおよび全ＮＡＴロード・バランサで使用するのには適さない。
【０００７】
【課題を解決するための手段】
本発明のいくつかの実施形態の一態様は、半ＮＡＴおよび／または全ＮＡＴの転送を実施するロード・バランサ用のロードバランシング・アクセラレータに関する。
【０００８】
本発明のいくつかの実施形態の一態様は、従来は通信セッションの識別に使用された５つのパラメータを含むセットとは異なるパラメータのセット、すなわちソースＩＰアドレスおよび宛先ＩＰアドレス、プロトコル、ならびにソース・ポートおよび宛先ポートに基づいて、同じサーバに転送されるはずのパケット・グループを識別する、ロードバランシング・アクセラレータに関する。本発明の一部の実施形態では、上記５つのパラメータよりも少ないパラメータ・セットを使用して、同じサーバに向けて送信されるパケット・グループを識別する。
【０００９】
従来の技術では、一般に、ロード・バランサが同様に単一のセッションに属しているパケットに関するという一般的な実施に基づいて、異なるグループの差異を認めて通信セッションを識別する５つのパラメータのセットを使用する。ただし、多くのロード・バランサは、より少ないパラメータを含むパラメータ・セットによって定義されたより多くのグループに関する。グループ化されたパケットでこれらのより少ないパラメータ・セットを使用することで、加速ロード・バランサのロードバランシング規則に違反することなく、アクセラレータの動作が簡略化される（すなわち、アクセラレータのロードバランシング・テーブルが小さいままである）。さらに場合によっては、セット内の一部のパラメータが特定の情況で不要になる可能性があるため、パラメータの様々なセットに基づいて、通信セッションを識別することが可能である。少ないパラメータを使用することで、ロードバランシング・アクセラレータの動作を簡略化し、必要な記憶域容量を減らすことができる。
【００１０】
本発明のいくつかの実施形態では、パケット・グループは、半ＮＡＴロード・バランサによって変更されないパラメータ、たとえばＩＰソース・アドレス、ＩＰソース・ポート、およびプロトコルに基づいて識別される。半ＮＡＴロード・バランサによって変更されないパラメータのみに基づいてパケット・グループを識別することにより、半ＮＡＴロード・バランサの加速を簡単に実施することが可能である。パケット・ベースのネットワークを介して送られる一般的なパケットとは異なり、共通ＩＰソース・アドレスおよび共通ソース・ポートを搬送するインターネット・サイトに向けて送られるパケットは、一般に、同じＩＰ宛先アドレスおよび宛先ポートを搬送するので、ロード・バランサによって同じサーバに向けて送られることに留意されたい。
【００１１】
本発明のいくつかの実施形態では、現在すべてのパケットを単一クライアントから同じサーバに向けて送っているロード・バランサが加速され、アクセラレータは、パケットのソースＩＰアドレスのみに基づいてパケット・グループを識別する。グループ化されたパケットで単一パラメータのみを使用することにより、アクセラレータがさらに簡略化される。
【００１２】
本発明のいくつかの実施形態の一態様は、アクセラレータによってロード・バランサに向けて送られるパケットを、アクセラレータによってロード・バランサから受け取られるパケットと突き合わせる、ロードバランシング・アクセラレータに関する。この突き合わせは、全ＮＡＴモードで動作しているロード・バランサによって変更されることがなく、２つの異なるパケットが同じになる可能性が低い、パケットの部分に基づいて実行される。アクセラレータは、突き合わせられた両方のパケットから抽出された情報に基づいて、ロードバランシング・テーブルのエントリを作成する。
【００１３】
本発明のいくつかの実施形態の一態様は、受け取られたパケットがどのパケット・グループに属するかを判定する際に、異なる受け取られたパケットに対して異なるセットのパラメータの値を使用する、ロードバランシング・アクセラレータに関する。たとえば、異なるプロトコルに属するパケットは、異なる処理を受け取ることがある。アクセラレータは、第１のプロトコルのパケットについて、どのグループに属するかを第１セットのパラメータに基づいて決定するが、第２のプロトコルのパケットについては、第２セットのパラメータが使用される。
【００１４】
本発明のいくつかの実施形態の一態様は、ユーザが、同じサーバに向けて送られるパケット・グループを定義する際に使用されるパラメータを構成できるようにする、ロードバランシング・アクセラレータに関する。本発明のいくつかの実施形態では、加速されたロード・バランサがすべてのパケットを同じクライアントから同じサーバに転送する場合、ユーザは、ソースＩＰアドレスに基づいてグループを定義するようにアクセラレータを構成する。ただし、加速されたロード・バランサが同じクライアントから異なるサーバに（たとえば同じクライアントの異なるポートから）パケットを転送する場合は、ユーザは、ソースＩＰアドレスおよびソース・ポートに基づいてグループを定義するようにアクセラレータを構成する。
【００１５】
本発明のいくつかの実施形態の一態様は、加速されるロード・バランサの動作モードを自動的に判定するロードバランシング・アクセラレータに関する。本発明のいくつかの実施形態では、ロード・バランサが全ＮＡＴ、半ＮＡＴ、または三角形分割モードのいずれで動作するかを判定する。あるいはまたはさらに、アクセラレータは、ロード・バランサがパケットを転送するサーバを一意に定義する値を有する、パラメータの最小セットを判定する。たとえば、いくつかの実施形態では、アクセラレータは、ロード・バランサが単一のクライアントから２つの異なるサーバにパケットを転送できるかどうかを判定する。
【００１６】
本発明のいくつかの実施形態では、アクセラレータはロード・バランサに転送されるパケットのパラメータ（本明細書では被監視パケットと呼ぶ）と、ロード・バランサから受け取られる同じパケットのパラメータとを突き合わせる。同じパケットで、ロード・バランサに転送されるときとロード・バランサから受け取られるときの状態の差異により、アクセラレータは、ロード・バランサの動作モードを判定する。
【００１７】
本発明のいくつかの実施形態では、被監視パケットには、クライアントからサーバに送られる途中に受け取られ、通常の処理の一部としてロード・バランサに転送されるパケットが含まれる。あるいはまたはさらに、被監視パケットには、サーバからクライアントに送られる途中に受け取られ、通常の処理の一部としてロード・バランサに転送されるパケットが含まれる。あるいはまたはさらに、被監視パケットには、ロード・バランサの動作モードを判定するために特別に生成されたパケットが含まれる。
【００１８】
アクセラレータは、ロード・バランサによって処理された後にロード・バランサから受け取られるパケットと突き合わせることができるように、ロード・バランサに転送される被監視パケットの十分な識別情報を格納する。この識別情報には、たとえば、パケットのペイロードの先行部分またはＴＣＰなどの移送プロトコルの識別番号が含まれる。あるいはまたはさらに、この識別情報には、アクセラレータによってパケット内に挿入された固有タグが含まれる。あるいはまたはさらに、ロード・バランサのテスト期間中に、アクセラレータは限定された数のパケットをロード・バランサに転送し、それぞれのパケットがロード・バランサから受け取られるまで追加のパケットは転送しない。
【００１９】
したがって、本発明の一実施形態により、アクセラレータ・スイッチによってロード・バランサに向けて送られるパケットを受け取ること、少なくともいくつかの受け取られたパケットについて、パケットの５つよりも少ないパラメータをリストのエントリにあるそれぞれのフィールドと比較することによって、パケットがパケット・グループ・リストのエントリと一致するかどうかを判定すること、ならびに、アクセラレータ・スイッチによって、少なくともいくつかの受け取られたパケットを判定に応答してそれらの宛先に直接転送することを含む、アクセラレータ・スイッチによってロード・バランサの動作を加速する方法が提供される。
【００２０】
任意選択で、パケットがリストのエントリと一致するかどうかの判定には、パケットの３つまたはそれよりも少ないパラメータをリスト内のそれぞれのフィールドと比較することが含まれる。あるいはまたはさらに、パケットがリストのエントリと一致するかどうかの判定には、パケットの２つのパラメータまたは単一のパラメータをリスト内のそれぞれのフィールドと比較することが含まれる。任意選択で、パケットがリストのエントリと一致するかどうかの判定には、パケットの単一のパラメータをリスト内のそれぞれのフィールドと比較することが含まれる。
【００２１】
あるいは、ロード・バランサに向けて送られるパケットの受け取りには、クライアントからロード・バランサに関連付けられたＷｅｂサイトに向けて送られるパケットの受け取りが含まれ、少なくともいくつかの受け取られたパケットをそれらの宛先に直接転送することには、パケットをクライアントからＷｅｂサイトのサーバのうち１つに、ロード・バランサを通過せずに転送することが含まれる。任意選択で、パケットがリストのエントリと一致するかどうかの判定には、パケットのソースＩＰアドレスおよびソース・ポートを、リスト内のそれぞれのフィールドと比較することが含まれる。本発明のいくつかの実施形態では、比較されるパラメータに宛先アドレスは含まれない。
【００２２】
あるいはまたはさらに、ロード・バランサに向けて送られるパケットの受け取りには、サーバからクライアントに向けて送られるパケットの受け取りが含まれ、少なくともいくつかの受け取られたパケットをそれらの宛先に直接転送することには、パケットをサーバからクライアントにロード・バランサを通過せずに転送することが含まれる。任意選択で、パケットがリストのエントリと一致するかどうかの判定には、パケットの宛先ＩＰアドレスおよび宛先ポートを、リスト内のそれぞれのフィールドと比較することが含まれる。本発明のいくつかの実施形態では、比較されるパラメータにソース・アドレスは含まれない。
【００２３】
本発明のいくつかの実施形態では、少なくともいくつかの受け取られたパケットを転送することに、一致するエントリが見つかったパケットを転送することが含まれる。任意選択で、ロード・バランサは半ＮＡＴモードまたは全ＮＡＴモードで動作する。
【００２４】
さらに本発明の一実施形態により、アクセラレータが、サーバに転送するパケットの宛先ＩＰアドレスを少なくとも変更する、ロード・バランサからまたはロード・バランサに向けて送られるパケットを受け取ることと、アクセラレータが、受け取られたパケットに応答して宛先サーバのリスト内にエントリを作成することとを含む、パケット・グループとそれぞれの宛先サーバとを相関させるリスト内のエントリを作成する方法が提供される。
【００２５】
任意選択で、エントリの作成には、Ｗｅｂサイトの宛先アドレスを含まないエントリの作成が含まれる。あるいは、パケットは、半ＮＡＴモードまたは全ＮＡＴモードで動作するロード・バランサから、あるいはこのロード・バランサに向けて送られる。
【００２６】
任意選択で、パケットの受け取りには、ロード・バランサからサーバに向けて送られるパケットまたはサーバからロード・バランサに向けて送られるパケットの受け取りが含まれる。本発明のいくつかの実施形態では、エントリの作成には、パケットが受け取られたときの受け取られたパケット内の情報のみを実質的に使用するエントリの作成が含まれる。あるいはまたはさらに、エントリの作成には、パケットが受け取られたときの受け取られたパケットに含まれていない情報を使用するエントリの作成が含まれる。本発明のいくつかの実施形態では、エントリの作成には、アクセラレータによって以前に受け取られたパケットのコピーからの情報を使用するエントリの作成が含まれる。
【００２７】
任意選択で、パケットの受け取りには、ロード・バランサからのパケットの受け取りが含まれ、エントリの作成には、受け取られたパケットからの情報とロード・バランサに転送された受け取られたパケットのコピーからの情報とを使用するエントリの作成が含まれる。
【００２８】
本発明のいくつかの実施形態では、この方法には、ロード・バランサによって処理されるＷｅｂサイトに向けて送られたパケットをアクセラレータが受け取ること、Ｗｅｂサイトに向けて送られたパケットの識別情報および１つまたは複数のパラメータの値を一時記憶域に格納すること、ならびに、一時記憶域でロード・バランサから受け取られたパケットと一致するエントリを探索することが含まれ、一致が見つかった場合にのみ、パケット・グループの宛先サーバのリスト内でエントリの作成が実行される。
【００２９】
任意選択で、識別情報の格納には、アクセラレータによってパケットにタグを付けられた固有の識別番号を格納することが含まれる。あるいはまたはさらに、識別情報の格納には、ＴＣＰパケットのシーケンス・フィールドおよび確認応答フィールドのうち少なくとも１つを格納することが含まれる。あるいはまたはさらに、識別情報の格納には、パケットのペイロードの先行セグメントを格納することが含まれる。
【００３０】
さらに本発明の実施形態により、ロード・バランサに向けて送られたパケットを受け取る入力インターフェースと、パケット・グループおよびそのそれぞれの宛先サーバとを一覧表示し、複数の異なるフィールド・セットを収容することができるエントリを有するテーブルと、ロード・バランサに向けて送られたパケットのうち少なくとも１つとテーブルのエントリのうち少なくとも１つを比較するコンパレータと、コンパレータによって一致が見つかったパケットのうち少なくとも１つを一致するエントリのコンテンツに応答してサーバに直接転送する転送ユニットと、複数の異なるフィールド・セットからどのフィールドをテーブルの各エントリに含めるかを決定する制御装置とを含む、ロードバランシング・アクセラレータが提供される。
【００３１】
任意選択で、制御装置には、それを介してテーブルのエントリのフィールド・セットが構成される、ユーザ・インターフェースが含まれる。あるいはまたはさらに、制御装置は、エントリに含められるフィールドを自動的に決定する。本発明のいくつかの実施形態では、制御装置は１つまたは複数のパケットをロード・バランサに伝送し、エントリに含められるフィールドを決定するためにロード・バランサの応答を検査する。
【００３２】
あるいは、制御装置は、テーブルのすべてのエントリが一度に同じフィールドを有するように、テーブルのフィールドを決定する。あるいは、制御装置は、少なくともある程度の動作期間に、テーブルが異なるフィールドを有する少なくとも２つのエントリを含むようにテーブルのフィールドを決定する。任意選択で、テーブルのエントリのうち少なくとも１つを、異なるフィールド・セットを有するように構成することができる。あるいはまたはさらに、テーブルには異なるフィールド・セットを有する複数のサブテーブルが含まれる。
【００３３】
さらに本発明の一実施形態により、ロード・バランサに向けて送られたパケットを受け取る入力インターフェースと、パケット・グループおよびそのそれぞれの宛先サーバとを一覧表示するテーブルと、ロード・バランサに向けて送られたパケットのうち少なくともいくつかとテーブルのエントリのうち少なくともいくつかを比較するコンパレータと、コンパレータによって一致が見つかったパケットのうち少なくともいくつかを一致するエントリのコンテンツに応答してサーバに直接転送する転送ユニットであって、転送されるパケットのフィールドのうち少なくとも１つを変更することを少なくともいくつかが含む複数の動作モードで動作することが可能な転送ユニットと、どのモードで転送ユニットが動作するかを決定する制御装置とを含む、ロードバランシング・アクセラレータが提供される。任意選択で、転送ユニットはスプライシングを実行することができる。本発明のいくつかの実施形態では、制御装置は転送ユニットの動作モードをユーザ構成に基づいて決定する。あるいはまたはさらに、制御装置は、転送ユニットの動作モードを、ロード・バランサからまたはロード・バランサに向けて送られるパケットのコンテンツに基づいて決定する。あるいは、制御装置は、転送ユニットの動作モードを、ロード・バランサからのパケットのコンテンツをロード・バランサに向けて送られるパケットと比較することによって決定する。
【００３４】
本発明の特定の非限定的な実施形態について、図と共に以下の実施形態の記述を参照しながら説明する。好ましいことに、複数の図面に示されている同じ構造体、要素、または部品には、示されているすべての図面で同じかまたは同様の番号が付けられている。
【００３５】
【発明の実施の形態】
図１は、本発明の一実施形態によるサーバ・ファーム２０を示す概略構成図である。サーバ・ファーム２０は、インターネットＷｅｂサイトをホストする、複数のサーバ２２（２２Ａ、２２Ｂ、２２Ｃ、および２２Ｄとしてラベル表示）を含む。Ｗｅｂサイトに向けて送られる、すなわちＷｅｂサイトのＩＰアドレスを有するパケットは、どのサーバ２２にパケットを転送するべきかを決定するロード・バランサ２４に経路指定される。任意選択で、ロード・バランサ２４は半ＮＡＴスキームに従って動作するものであって、すなわちロード・バランサは、サーバ２２に転送するパケットのＩＰ宛先アドレス・フィールドおよび／またはＴＣＰ／ＵＤＰ宛先ポート・フィールドのうち少なくとも１つの値を置き換える。あるいは、ロード・バランサ２４は三角形分割モードで動作する。あるいは、以下で説明するように、ロード・バランサ２４は全ＮＡＴスキームに従って動作する。
【００３６】
アクセラレータ２６は、パケットをロード・バランサ２４とクライアントとの間、およびロード・バランサ２４とサーバ２２との間で渡すスイッチとして動作する。アクセラレータ２６は、転送するパケットのうち少なくともいくつかから、少なくともいくつかのパケット・グループについて、パケットのグループをどのサーバ２２に転送するかを決定する。したがって、アクセラレータ２６は、決定されたグループのパケットをそれぞれのサーバ２２に直接転送する。ロード・バランサ２４が半ＮＡＴモードで動作する本発明のいくつかの実施形態では、アクセラレータ２６は、サーバ２２に直接転送するパケットのＩＰ宛先アドレスの置換を実行する。任意選択で、アクセラレータ２６は、サーバ２２からクライアントに送られるパケットのソース・アドレスも変更する。
【００３７】
図２は、本発明の一実施形態による、ロード・バランサ２４が三角形分割モードで動作するときに使用する、アクセラレータ２６のロードバランシング・テーブル３０を示す図である。テーブル３０には、常に同じサーバ２２に転送されるパケット・グループを識別する１つまたは複数のパラメータからなるキー・フィールド３２が含まれる。テーブル３０と従来技術との相違点の１つは、キー・フィールド３２の数および／またはアイデンティティである。本発明のいくつかの実施形態では、キー・フィールド３２に含まれるフィールドは５つよりも少ない。本発明のいくつかの実施形態では、キー・フィールド３２には、クライアントからファームに向けて送られるパケットの宛先に関するフィールド（たとえば宛先アドレスまたはポート）が含まれない。本発明の例示的一実施形態では、キー・フィールド３２に、クライアント・アドレス・フィールド３４、クライアント・ポート・フィールド３６、およびプロトコル・フィールド３８が含まれる。あるいはキー・フィールド３２には、たとえばロード・バランサ２４がＴＣＰパケットだけしか処理しないときには、プロトコル・フィールド３８が含まれない。あるいはキー・フィールド３２には、クライアント・アドレス・フィールド３４と、パケットが関連するＷｅｂサイトを識別するフィールドとが含まれる。この代替例は、クライアント・ポートがキー・フィールドに含まれるときよりもテーブル３０に必要なエントリ数が少ないので、ロード・バランサ２４が単一クライアントから単一Ｗｅｂサイトへのすべてのパケットを同じサーバに向けて送る場合に特に好適である。
【００３８】
キー・フィールド３２に加えて、テーブル３０には、特定エントリのキー・フィールド３２と一致するパケットの処理に関する結果フィールド４０が含まれる。本発明のいくつかの実施形態では、結果フィールド４０には、たとえばＭＡＣアドレスおよび任意選択でサーバのＶＬＡＮを明記することによって、グループのパケットが転送されるはずのサーバ２２を識別する宛先フィールドが含まれる。
【００３９】
図３は、本発明の一実施形態による、パケット受け取り時にアクセラレータ２６によって実行される動作を示す流れ図である。図３の方法では、アクセラレータ２６は、三角形分割モードで動作するときにロード・バランサ２４と協働する。受け取ったパケット（５０）がクライアントからサーバ・ファーム２０に向けて送られる場合（５２）、アクセラレータ２６は、パケットと一致するエントリがテーブル３０にあるかどうかを判定する（５４）。一致するエントリが見つかると（５４）、受け取ったパケットと一致するエントリ内の結果フィールド４０に従って、パケットがサーバ２２の１つに直接転送される（５６）。ただし、一致するエントリが見つからないと（５４）、パケットはロード・バランサ２４に転送される（５７）。この突き合わせは、典型的には、パケットのフィールドとエントリのキー・フィールド３２とを比較することによって実行される。たとえば、パケットのＩＰソース・アドレス、ソース・ポート、およびプロトコルが、エントリにリスト表示されたクライアント・アドレス３４、クライアント・ポート３６、およびプロトコル３８と一致する場合、一致が見つかる。
【００４０】
受け取ったパケットがロード・バランサ２４からサーバ２２のいずれか１つに向けて送られる場合（５２）、パケットをサーバに転送する（６２）ことに加えて、アクセラレータ２６は、一致するエントリがテーブル３０にあるかどうか（５８）を（（５４）の判定で述べたのとほぼ同様に）判定する。一致するエントリが見つからなかった場合（５８）、アクセラレータ２６はパケットからソース・アドレス、ソース・ポート、プロトコル、および宛先サーバの情報を抽出し、テーブル３０内にそれぞれのエントリを作成する（６０）。このエントリ作成（６０）は、一般に、パケットのソース・アドレスとソース・ポートをフィールド３４と３６に、パケットのプロトコルをフィールド３８に、パケットの宛先ＭＡＣアドレスと任意選択でＶＬＡＮとをフィールド４０に配置することで実行される。任意選択で、アクセラレータ２６はいくつかのパケット・グループだけにエントリを作成する。たとえば、本発明のいくつかの実施形態では、アクセラレータ２６にはテーブル・サイズに制限があり、テーブルが満杯になると、エントリはそれ以上作成されない。あるいはまたはさらに、アクセラレータ２６は、特定プロトコルのパケットだけに、たとえばＨＴＴＰおよび／またはＦＴＰ、ならびに／あるいは通信量が多いことが予測されるセッションに属するパケットに、エントリを作成する。たとえばアクセラレータ２６は、非常に少ないパケットしか含まないことが予測されるグループに属するパケットには、エントリを作成しない場合がある。
【００４１】
本発明のいくつかの実施形態では、ロード・バランサ２４からサーバ２２に向けて送られたパケットは、一致するエントリがある場合（５８）には、そのようなパケットはそれぞれのサーバ２２に直接転送され、ロード・バランサ２４には転送されないため、通常は受け取られない。前述のように、そのようなパケットがどのようにも受け取られない場合、パケット内に参照されたサーバに直接転送される。本発明のいくつかの実施形態では、アクセラレータ２６は、エントリ内の情報がパケット内と異なる場合、パケットのコンテンツを使用してそれぞれのエントリを更新する。任意選択で、本発明のいくつかの実施形態では、アクセラレータ２６は、クライアントからファームに向けて送られたパケットを、定期的にロード・バランサ２４に転送し、その結果これらのパケットは、それぞれのエントリをリフレッシュするのに使用されることになる。あるいはまたはさらに、以下で説明するように、アクセラレータ２６はテーブル３０から定期的にエントリを消去し、その結果リフレッシュされることになる。
【００４２】
受け取ったパケットがクライアントに向けて送られるか、または前述の方向以外のいずれかの方向に向けて送られる場合（５２）、アクセラレータ２６は特別な処理なしにそのコンテンツに従ってパケットを転送する（７２）。こうして他の方向に送られるパケットには、たとえばファーム２０へのアクセスに関係しないパケット、たとえばロード・バランサ２４それ自体または特定サーバ２２に向けて送られるパケットが含まれる。あるいはまたはさらに、アクセラレータ２６はそのようなパケットを、転送先を決定する隣接ルータに転送する。
【００４３】
本発明のいくつかの実施形態では、アクセラレータ２６が、パケットのＩＰおよび／またはＭＡＣのソース・アドレスおよび／または宛先アドレスに基づいて、受け取るパケットの方向を決定する。あるいはまたはさらに、図５および／または図７に関して以下に述べるような任意の他の方向決定方法が使用される。ロード・バランサ２４が三角形分割モードで動作する、本発明の例示的一実施形態では、パケットの方向は、ソースおよび宛先ＭＡＣアドレスならびに宛先ＩＰアドレスに基づいて決定される。ロード・バランサ２４のソースＭＡＣアドレスとロード・バランサ２４によって処理されるＷｅｂサイトの宛先ＩＰアドレスとを有するパケットは、ロード・バランサ２４からサーバに向けて送られる。ロード・バランサ２４からクライアントに向けて送られるパケットは、ロード・バランサ２４によって処理されるＷｅｂサイトの宛先ＩＰアドレスと、ロード・バランサ２４の宛先ＭＡＣアドレスを有する。上記の記述を満たさない他のすべてのパケットは、アクセラレータ２６によって任意の特別な手段を使用せずに転送される。
【００４４】
図４は、本発明の一実施形態による、ロード・バランサ２４が半ＮＡＴモードで動作するときに使用するための、アクセラレータ２６のロードバランシング・テーブル３１を示す図である。ただしテーブル３１はテーブル３０と同様であり、本発明のいくつかの実施形態では、テーブル３１の結果フィールド４０は、そのＩＰアドレスに基づいてサーバ２２を識別する。本発明のいくつかの実施形態では、結果フィールド４０に、一致するクライアント・パケット（すなわちクライアントからのパケット）が転送されるサーバ２２のＩＰアドレスを明記した、サーバＩＰアドレス・フィールド４２が含まれる。任意選択で、結果フィールド４０には、一致するクライアント・パケットの宛先ポートを変更しなければならない値を明記した、サーバ・ポート・フィールド４４も含まれる。本発明のいくつかの実施形態では、サーバ・ポート・フィールド４４内の特別な値が、パケットのオリジナル・ポートを使用しなければならないことを示す。
【００４５】
本発明のいくつかの実施形態では、テーブル３１に、サーバ２２からクライアントに伝送される一致するパケットに挿入されるファーム・アドレスを識別する、ファーム・フィールド４５も含まれる。任意選択で、ファーム・フィールド４５には、ファームＩＰアドレス・フィールド４３およびファーム・ポート・フィールド４７が含まれる。あるいは、アクセラレータ２６は、単一のファーム・アドレスのみを処理するロード・バランサ２４で動作し、テーブル３１の各エントリに別々のファーム・フィールド４５が含まれるのではなく、テーブル３１のすべてのエントリに単一セットのファーム値が格納される。任意選択で、単一の値セットに格納されたファーム２０のＩＰアドレス値および／またはポート値が、システム・マネージャによってアクセラレータ２６内に構成される。あるいは、アクセラレータ２６は、ファーム２０のＩＰアドレス値および／またはポート値を、クライアントからファームに伝送されたパケットから、またはロード・バランサ２４からクライアントに転送されたパケットから習得する。
【００４６】
図５は、本発明の一実施形態による、パケット受け取り時にアクセラレータ２６によって実行される動作を示す流れ図である。図５の方法は図３の方法の変形例であり、ロード・バランサ２４が半ＮＡＴモードで動作する。したがって、以下の記述は、図３を参照しながら述べた動作とは異なる動作にのみ関するものである。図５に示されるように、一致するエントリに従ってクライアントからサーバ・ファーム２０に向けてパケットを転送する（５６）前に、アクセラレータ２６はパケットの宛先ＩＰアドレスを、一致するエントリの結果フィールド４０にリスト表示されたサーバ２２のアドレスに変更する（５５）。任意選択で、アクセラレータ２６は、パケットの宛先ポートも一致するエントリのサーバ・ポート・フィールド４４の値に変更する。
【００４７】
任意選択で、アクセラレータ２６は、サーバ２２に転送されるパケット（５６）の宛先ＩＰアドレスを変更する（５５）場合、クライアントに送信されるパケットのソース・フィールドを変更する（６８）際に使用するために、置き換えられたＩＰ宛先アドレスおよび／または置き換えられた宛先ポートを、ファーム・フィールド４５に格納する。あるいは、アクセラレータ２６は、エントリを使用して、クライアントから受け取りアクセラレータによってサーバ２２に転送されたエントリに一致する第１のパケットのみに基づいて、ファーム・フィールド４５に値を格納する。任意選択で、一致するエントリのファーム・フィールド４５に記入される前にクライアントに戻されるパケットが、処理のためにロード・バランサ２４に渡される。あるいは、アクセラレータ２６は、ロード・バランサ２４からクライアントに向けて送られるパケットから、エントリのファーム・フィールド４５のコンテンツを習得する。
【００４８】
あるいは、たとえばロード・バランサ２４が単一のファームについてのみ動作する場合、エントリを作成する（６０）際に、ファーム・フィールド４５のコンテンツは事前に構成された値から取得されるか、またはファーム２０に向けて送られたパケットのうちの１つから習得される。あるいは、特にロード・バランサ２４が複数のファームを表す場合、一致するエントリのないパケットをクライアントからファームに向けて転送する（５７）前に、パケットに部分エントリが用意される。部分エントリには、図３を参照しながら上記で説明したように、パケットから取得されたキー・フィールドと、値がパケットの宛先フィールド（アドレスおよびポート）から取得されるファーム・フィールド４５とが含まれる。ロード・バランサ２４からサーバ２２に向けて送られたパケットに基づいてエントリを作成する（６０）場合、アクセラレータ２６は、パケットに一致する部分エントリを見つけて、パケットの宛先フィールドからサーバ・アドレス４２およびサーバ・ポート４４を記入する。
【００４９】
あるいはまたはさらに、部分エントリの作成、エントリへの記入、および／または全エントリの作成は、クライアントに向けて送られたパケットに基づいて実行される。キー・フィールド３２の値は、クライアントに向けて送られたパケットの宛先フィールドから取得される。ファーム・フィールド４５は、ロード・バランサ２４からクライアントに向けて送られたパケットのソース・フィールドから取得されるか、またはロード・バランサ２４が単一のファームを表す場合はユーザによって事前に構成される。結果フィールド４０の値は、サーバ２２からクライアントに向けて送られたパケットのソース・フィールドから取得される。
【００５０】
受け取られたパケットがサーバ２２からクライアントに向けて送られる（５２）場合、アクセラレータ２６は、パケットがテーブル３１内に一致するエントリを有するかどうかを判定する（６４）。一致するエントリは、パケットの宛先フィールドとキー・フィールド３２を比較することによって見つけられる。それぞれのエントリが存在する場合、アクセラレータ２６は、ソース・アドレス・フィールドと任意選択でソース・ポート・フィールドを、ファーム・フィールド４５のＩＰアドレス値とポート値に変更する（６６）。変更されたパケットは、その後クライアントに転送される（６８）。一致するエントリが存在しないことが判定された（６４）場合、パケットは処理のためにロード・バランサ２４に転送される（７０）。あるいは、ソース・ポートおよびソース・アドレスが、ファーム２０の代表値または任意の他のデフォルト値に変更され、パケットがクライアントに直接転送される（６８）。
【００５１】
他の方向、たとえばロード・バランサ２４からクライアントに向けて送られたパケットは、そのコンテンツに従ってその宛先に向かって転送される（７２）。
【００５２】
本発明のいくつかの実施形態では、アクセラレータ２６が、パケットのソースおよび宛先ＩＰアドレスに基づいて受け取ったパケットの方向を決定する（５２）。たとえば、ロード・バランサ２４が半ＮＡＴモードで動作する場合、クライアントからファーム２０に向けて送られるパケットはファームの宛先ＩＰアドレスを有し、ロード・バランサ２４からサーバ２２へのパケットはサーバの宛先ＩＰアドレスを有する。サーバ２２からクライアントに向けて送られるパケットはサーバのソースＩＰアドレスを有するが、ロード・バランサ２４からクライアントへのパケットはそのソースＩＰアドレスとしてファームのアドレスを有する。
【００５３】
さらに、またはあるいは、アクセラレータ２６は、パケットのソース・ポートおよび宛先ポートに基づいて、受け取られるパケットの方向を決定する（５２）。たとえば、ＨＴＴＰ（または他のサーバ・プロトコル）に向けて送られるパケットは、クライアントからファーム２０に向けて送られるか、またはロード・バランサ２４からサーバ２２に向けて送られるかのいずれかである。ソース・ポートとしてＨＴＴＰポート番号を有するパケットは、サーバ２２またはロード・バランサ２４からクライアントに向けて送られる。他のポート番号を有するパケットは、任意選択でファーム２０と無関係であると考えられ、単にその宛先に向かって転送される（５９）だけである。あるいはまたはさらに、ファーム２０に向かって送られるパケットは、サーバに向かって送られるパケットとは異なるポート番号を有する。
【００５４】
あるいはまたはさらに、異なる方向からのパケットが、異なるＶＬＡＮ上でおよび／または異なるＭＡＣアドレスでアクセラレータ２６に伝送される。たとえば、クライアントは第１のＶＬＡＮ上でファーム２０と通信し、第２のＶＬＡＮ上でロード・バランサ２４と通信する。ＶＬＡＮ割当ては、当分野で知られたいずれかの方法を使用して実行することができる。本発明のいくつかの実施形態では、異なるＶＬＡＮを使用する代わりに、あるいはその使用に加えて、アクセラレータ２６は異なるパケットに使用される異なるＭＡＣアドレスを有する。たとえば、クライアントからのパケットは第１の宛先ＭＡＣアドレスと共に受け取られ、サーバからのパケットは第２の宛先ＭＡＣアドレスと共に受け取られる。あるいはまたはさらに、サーバ２２はファーム２０に関係するメッセージを第１のＩＰおよび／またはＭＡＣアドレスと共にアクセラレータ２６に伝送し、ファームに無関係のメッセージを第２のＩＰおよび／またはＭＡＣアドレスと共にアクセラレータ２６に伝送する。
【００５５】
本発明のいくつかの実施形態では、さらにまたはあるいは、パケットのＭＡＣアドレスはパケットの方向を決定するのに使用される。ロード・バランサ２４のソースＭＡＣアドレスを搬送するパケットはロード・バランサからのものであり、サーバ２２のうち１つのソースＭＡＣアドレスを搬送するパケットはそのサーバからのものである。
【００５６】
あるいはまたはさらに、各サーバには２つまたはそれ以上の異なるＩＰアドレスが割り当てられる。第１のＩＰアドレスは、その専用トラフィック用のサーバを識別するために使用され、ファーム２０の一部として受け取るパケットは第２のＩＰアドレスを使用する。任意選択で、サーバ２２は、ホストする各Ｗｅｂサイトについて別々のＩＰアドレスを有する。あるいはまたはさらに、各サーバには２つまたはそれ以上の異なるＭＡＣアドレスが割り当てられる。
【００５７】
大部分のインターネット・トラフィックがクライアント方向に流れているため、クライアントへのトラフィックおよびクライアントからのトラフィックの両方を加速する代わりに、アクセラレータ２６はロード・バランサ２４のクライアント方向のみの動作を加速する。この代替例では、クライアントからファームに向けて送られるパケットは、パケットが一致するエントリを有するかどうかを判定せずに、ロード・バランサ２４に転送される（５７）。
【００５８】
図６は、本発明の一実施形態による、図７を参照しながら以下で説明する方法で使用するための、アクセラレータ２６のロードバランシング・テーブル１３０を示す図である。ロードバランシング・テーブル１３０は、図４を参照しながら上記で説明したテーブル３１と同様であり、全ＮＡＴモードで動作するロード・バランサでの動作に役立つ追加のフィールドを有する。ただし、テーブル１３０は、他のモードで動作するロード・バランサでも使用できることに留意されたい。テーブル３１と同様、テーブル１３０には、クライアントによって割り当てられたオリジナル・ソース値を参照するクライアント・アドレス・フィールド３４およびクライアント・ポート・フィールド３６、プロトコル・フィールド３８、ファーム・フィールド４５、ならびに以下の記述をわかりやすくするためにサーバ・フィールド４０と呼ばれる結果フィールド４０（たとえばサーバ・アドレス・フィールド４２およびサーバ・ポート・フィールド４４）が含まれる。さらに、テーブル１３０には、擬似クライアント・フィールド４９、たとえば擬似クライアント・アドレス・フィールド４６および擬似クライアント・ポート・フィールド４８が含まれる。
【００５９】
いくつかの実施形態では、キー・フィールドとして使用されるフィールド（すなわち、パケットがエントリと一致するかどうかを判定する際に、対応するパケット・フィールドが比較されるフィールド）は、一致が探索されるパケットの流れる方向に依存する。クライアントからファーム２０に向けて送られるパケットは、クライアントによって生成されるときにパケットと一致するフィールドを含む、クライアント・キー・フィールドに基づいてテーブル１３０と比較される。例示的一実施形態では、クライアント・キー・フィールドには、クライアント・アドレス・フィールド３４、クライアント・ポート・フィールド３６、および任意選択でプロトコル・フィールド３８が含まれる。ロード・バランサ２４からサーバ２２のうちの１つに向けて、および／またはサーバ２２のうちの１つからクライアントに向けて送られるパケットは、ロード・バランサ２４によってフィールドが変更された後に、パケットと一致するフィールドを含むサーバ・キー・フィールドに基づいてテーブル１３０と比較される。本発明のいくつかの実施形態では、サーバ・キー・フィールドに、擬似クライアント・フィールド４９ならびに任意選択でプロトコル・フィールド３８および／またはサーバ・フィールド４０のうちの１つまたはそれ以上が含まれる。
【００６０】
本発明のいくつかの実施形態では、テーブル３０、３１、および／または１３０のエントリが、作成後所定時間で消去される。あるいはまたはさらに、エントリは所定時間使用されないと消去される。本発明のいくつかの実施形態では、テーブル３０、３１、および／または１３０に、エントリが存在する時間および／またはエントリが使用されない時間を追跡するのに使用される、エージング・フィールドが含まれる。任意選択で、アクセラレータ２６は、クライアントとのセッションがいつ終了したかを判定し、それにしたがってテーブル３０、３１、および／または１３０からエントリを消去する。たとえば、アクセラレータ２６は、エントリに一致するセットＦＩＮビット（接続の終了を示す）を伴うパケットを受け取った後、所定時間でエントリを消去することができる。
【００６１】
図７は、本発明の一実施形態による、パケット受け取り時にアクセラレータ２６によって実行される動作を示す流れ図である。図７の方法は図５の方法の変形例であり、ロード・バランサ２４が全ＮＡＴモードで動作する。図７の方法では、アクセラレータ２６が、ロード・バランサ２４に提供されたパケットと、同じパケットがロード・バランサによって処理された後との間で相関させる。テーブル１３０のエントリは、相関されたパケットのパラメータに基づいて作成される。本発明のいくつかの実施形態では、相関を実行するためにロード・バランサ２４に提供された一部またはすべてのパケットについて、エントリが一時記憶域内に作成される。
【００６２】
受け取ったパケット（５０）がクライアントからサーバ・ファーム２０に向けて送られる場合（５２）、アクセラレータ２６は、クライアント・キー・フィールドに基づいてパケットと一致するエントリがテーブル１３０にあるかどうかを判定する（５４）。たとえば、パケットのソース・アドレスおよびソース・ポートがそれぞれフィールド３４および３６と比較され、パケットのプロトコル・フィールドがフィールド３８と比較される。一致するエントリが見つかると（５４）、アクセラレータ２６はソースおよび宛先のＩＰアドレスおよびポートを、一致するエントリのフィールド４２、４４、４６、および４８（図６）内にある値を使用して変更する（７５）。変更されたパケットは、その後、変更されたＩＰ宛先フィールドによって識別されたサーバ２２に直接転送される（５６）。任意選択で、置き換えられた宛先ＩＰアドレスおよび／またはポートは、応答パケットがクライアントに返送されたときに使用するために、ファーム・アドレス・フィールド４３およびファーム・ポート・フィールド４７にそれぞれ格納される。
【００６３】
一致するエントリが見つからない場合（５４）、パケットはロード・バランサ２４に転送される（５７）。パケットをロード・バランサ２４に転送する（５７）のに加え、アクセラレータ２６は一時記憶域内にパケット用のエントリを作成する（７７）。本発明のいくつかの実施形態では、一時記憶域内のエントリには、以下で述べるように、クライアント・パケット情報、たとえばパケットのソースＩＰアドレスおよびソース・ポート、ならびにパケットを識別するのに必要な情報が含まれる。任意選択で、一時記憶域に格納されるクライアント・パケット情報には、パケットの宛先アドレスおよび／または宛先ポートも含まれる。あるいはまたはさらに、クライアント・パケット情報にはパケットの宛先フィールドから取得されたファーム情報も含まれる。
【００６４】
任意選択で、受け取ったパケット用のエントリを一時記憶域内に作成する前に、アクセラレータ２６は、一時記憶域の他のエントリが、受け取ったパケットと同じクライアント・パケット情報（たとえばソースＩＰアドレスおよびソース・ポート）を有しているかどうかをチェックする。一時記憶域内にこのようなエントリが見つかった場合、パケット・グループ用のエントリをテーブル１３０内に作成するためには単一のパケット相関のみが必要であるため、受け取ったパケット用のエントリは一時記憶域内に作成されない。あるいは、古いエントリが所定時間を過ぎても一時記憶域内にある場合、ソース・グループの古いエントリを置き換えるためにエントリが作成される。あるいは、たとえばパケットが失われたときにテーブル１３０内でのエントリ構築がより迅速に行えるように、同じソース・グループのパケットに対して一時記憶域内に所定数のエントリが許可される。本発明のいくつかの実施形態では、一時記憶域内で同じソース・グループに許可されるエントリの所定数は、一時記憶メモリ内の空き容量および／またはロード・バランサ２４にかかるロードに基づいて、動的に調整される。
【００６５】
本発明のいくつかの実施形態では、アクセラレータ２６は、作成後所定時間が経過したエントリを一時記憶域から消去し、さらに／あるいは、一時記憶域内にあるすべてのエントリを消去する。あるいはまたはさらに、一時記憶域が満杯で新しいエントリを作成しなければならない場合、最も古いエントリが上書きされる。一致が見つかり、テーブル１３０内にエントリが作成される場合、一時記憶域内のそれぞれのエントリが消去される。
【００６６】
受け取ったパケットがロード・バランサ２４からサーバ２２のうちの１つに向けて送られる（５２）場合、パケットをサーバに転送する（６２）のに加えて、アクセラレータ２６は、テーブル１３０内に一致するエントリが存在するかどうか（５８）を判定する。一致するエントリが存在しない（５８）場合、アクセラレータ２６は、格納された識別情報に基づいて一時記憶内でパケットに一致するエントリを探索する（８０）。一致するエントリが一時記憶域内で見つかった（８２）場合、アクセラレータ２６は、受け取ったパケットのパラメータおよび一時記憶域の一致するエントリからのクライアント・パケット情報に基づいて、テーブル１３０内にエントリを作成する（８４）。本発明のいくつかの実施形態では、クライアント・アドレス・フィールド３４およびクライアント・ポート・フィールド３６の値は、一時記憶域内にあるクライアント・パケット情報のそれぞれのソース・フィールドから取得される。プロトコル・フィールド３８の値は、パケットのプロトコル・フィールドから取得される。サーバ・フィールド４０の値はパケットの宛先フィールドから取得され、擬似クライアント・フィールド４９の値はパケットのそれぞれのソース・フィールドから取得される。任意選択で、ファーム・フィールド４５の値は、一時記憶域内のファーム・フィールドから取得される。
【００６７】
受け取ったパケットがサーバ２２からクライアントに向けて送られる（５２）場合、アクセラレータ２６は、上記で定義したように、パケットがテーブル１３０内にそれぞれのエントリを有するかどうかを、サーバ・キー・フィールドに基づいて判定する（６４）。それぞれのエントリが存在する場合、アクセラレータ２６はパケットのソースＩＰアドレスおよびソース・ポートを、ファーム２０のソースＩＰアドレスおよびソース・ポートに変更する（８６）。さらにアクセラレータ２６は、パケットの宛先ＩＰアドレスおよび宛先ポートを、一致するエントリのクライアント・フィールド３４および３６の値に変更する（８８）。変更されたパケットは、その後クライアントに転送される（６８）。一致するエントリが存在しないと判定された（６４）場合、パケットは処理のためにロード・バランサ２４に転送される（７０）。
【００６８】
他の方向、たとえばロード・バランサ２４からクライアントに向けて送られたパケットは、そのコンテンツに従ってその宛先に向かって転送される（７２）。
【００６９】
本発明のいくつかの実施形態では、アクセラレータ２６は、図５を参照しながら上記に記載したいずれかの方法を使用して、受け取るパケットの方向を決定する。本発明の例示的一実施例では、クライアントからＷｅｂサイトに向けて送られたパケットは、その宛先ＩＰアドレスがファーム２０によって処理されるＷｅｂサイトのアドレスであることに基づいて識別される。ロード・バランサ２４からサーバへのパケットは、そのソースＭＡＣアドレスがロード・バランサ２４のものであること、およびそのソースＩＰアドレスがロード・バランサ２４の使用する擬似クライアント・アドレスであることに基づいて識別される。サーバ２２からロード・バランサ２４に向けて送られるパケットは、その宛先ＩＰアドレスが擬似クライアント・アドレスであること、および任意選択で、その宛先ＭＡＣアドレスがロード・バランサ２４のアドレスであることに基づいて識別される。ロード・バランサ２４からクライアントに向けて送られるパケットは、そのソースＩＰアドレスがファーム２０によって処理されるＷｅｂサイトのアドレスであることに基づいて識別される。上記カテゴリに当てはまらないパケットは、ファーム２０とは無関係であるとして転送される。
【００７０】
本発明のいくつかの実施形態では、ロード・バランサ２４に向けて送られた受け取られたパケットが一時記憶域内のエントリと一致すると、一時記憶域内のエントリは削除され、受け取られたパケットにはエントリが作成されない。したがって、アクセラレータ２６は、同一の識別情報を有する追加パケットがネットワークを通過することにより、一致が誤りである可能性がある場合、（ロード・バランサ２４からのおよび／またはロード・バランサ２４への）パケットの一致に基づいて、テーブル３０内にエントリを作成することはない。
【００７１】
あるいはまたはさらに、一時記憶メモリ内および／またはテーブル１３０内にエントリを作成する前に、アクセラレータ２６はパケットの識別情報の信頼性を評価する。情報が十分に信頼できるものでない場合、すなわち同じ識別情報を持つ異なるパケットがアクセラレータ２６によって受け取られる可能性がある場合、エントリは作成されない。信頼できない識別情報は、パケットが非常に短いか、またはパケットが非常に一般的な情報を搬送していることによって生じる可能性がある。
【００７２】
本発明のいくつかの実施形態では、一時記憶域内のエントリは、経過後はパケットが失われエントリが消去されると想定される所定時間の間、格納される。あるいは、一時記憶域が満杯になると、最も古いエントリが上書きされる。一致が見つかったときに、テーブル１３０内にエントリがすでに作成されている（８４）場合、そのエントリは一時記憶域から消去される。
【００７３】
本発明のいくつかの実施形態では、一時記憶域内のパケットを識別するのに使用される情報に、パケットの１つまたは複数の特定フィールドが含まれ、この特定フィールドは、２つの異なるフレーム内で意図せずに繰り返される可能性が比較的低いものである。本発明のいくつかの実施形態では、特定フィールドはフレームの様々なヘッダから取得される。本発明のいくつかの実施形態では、識別情報には、ロード・バランサ２４によって変更される可能性のあるフィールド、たとえばパケットのＶＬＡＮおよび／またはＩＰおよびＭＡＣアドレスは含まれない。任意選択で、識別情報には、多数のフレームに対して同じ値を有するフィールド、たとえばＩＰヘッダの長さおよび／またはバージョンは含まれない。本発明の例示的一実施形態では、ＴＣＰパケットの場合、特定フィールドにパケットのＴＣＰヘッダおよび長さの１つまたは複数のシーケンス・フィールドおよび肯定応答フィールドが含まれる。本発明の例示的一実施形態では、ＨＴＴＰパケットの場合、特定フィールドにＵＲＬフィールドおよび／またはクッキー・フィールドが含まれる。
【００７４】
あるいはまたはさらに、識別情報には、比較が容易である、および／またはアクセラレータ２６を通過するランダムに選択された任意の２つのパケット間で相関関係が低いかまたはない、ランダム・フィールドが含まれる。本発明の例示的一実施形態では、ランダム・フィールドに、所定数、たとえば５０〜１００の間の、先行バイト、中間バイト、および／または終了バイトが含まれる。先行バイトは、任意選択でＩＰヘッダの後から、移送ヘッダの後から、または任意の他のヘッダの後からカウントされるため、ロード・バランサ２４によって変更される可能性のあるフィールドは含まれない。本発明のいくつかの実施形態では、１つまたは複数の特定フィールドと１つまたは複数のランダム・フィールドとの組合せが使用される。
【００７５】
あるいはまたはさらに、識別情報には、ロード・バランサ２４によって変更される可能性のあるフィールドを除く全パケットが含まれる。
【００７６】
図７の方法は、さまざまなタイプの全ＮＡＴロードバランシング・モードに使用することができる。全ＮＡＴモードの１つでは、ロード・バランサ２４が、サーバ２２との間で転送するパケットのソースおよび宛先ＩＰアドレスを置き換える。任意選択で、この全ＮＡＴモードでは、ロード・バランサ２４が、転送するパケットのソース・ポート・フィールドおよび宛先ポート・フィールドを置き換える。他の全ＮＡＴモード（スプライシングと呼ばれる）では、あるいはＩＰアドレスおよび／またはプロトコル・ポートに加えて、ロード・バランサ２４が、転送するパケットのＴＣＰシーケンス番号（肯定応答番号を含む）を変更する。このモードでは、テーブル１３０がＴＣＰシーケンス番号の変更に使用するための１つまたは複数の追加フィールドを含むことが好ましい。本発明の例示的一実施形態では、ロード・バランサ２４に転送されるパケットのシーケンス番号は、クライアント・パケット情報と共に一時記憶域に格納される。ロード・バランサ２４からサーバ２２への一致するパケットが受け取られると、受け取られたパケット内のシーケンス番号と一時記憶域内にあるシーケンス番号との差異、および／またはシーケンス番号それ自体が、作成されたエントリに格納される。本明細書ではプロキシ変換と呼ばれる他の全ＮＡＴモードでは、あるいは他のモードの他の変更に加えて、ロード・バランサ２４が転送するＨＴＴＰ要求のコンテンツをプロキシ形式に変更する。
【００７７】
本発明のいくつかの実施形態では、ロード・バランサ２４から受け取るパケットとロード・バランサ２４に転送されるパケットとの突き合わせに使用されるフィールドは、ロード・バランサ２４が動作している特定モードに従って選択される。あるいは、突き合わせに使用されるフィールドは、すべてのモードで変更されないフィールドである。プロキシ変換モードでは、アクセラレータ２６は、パケットの突き合わせの際にプロキシ変換で実行される変更を考慮に入れる。
【００７８】
本発明のいくつかの実施形態では、アクセラレータ２６が、ファーム２０に向けて送られるパケットに固有識別番号のタグを付け、これをロード・バランサ２４に転送する。この固有識別番号が、識別情報として使用される。固有識別番号は、様々な方法でフレームにタグを付けることができる。本発明のいくつかの実施形態では、固有識別番号を含む追加フィールド、たとえば追加のヘッダまたはテールが、ロード・バランサ２４に伝送されるフレームに加えられる。あるいはまたはさらに、固有識別番号を含むＩＰオプション・フィールドおよび／またはＴＣＰオプション・フィールドが、フレームに加えられる。任意選択で、それを超えるとフレームを断片化しなければならない最大長さに達したパケットには、追加フィールドは加えられない。
【００７９】
本発明のいくつかの実施形態では、固有識別番号がフレームの既存フィールド内に配置される。任意選択で、固有識別番号は、使用中でなくロード・バランサ２４によって変更されていない予約フィールド内、たとえば、断片を含まないフレームのＩＰヘッダのサービス・タイプ（ＴＯＳ）フィールドおよび／またはＩＰヘッダの断片化フィールドにある予約ビット内に配置される。任意選択で、断片化フィールドが固有識別番号を格納するのに使用されている場合、アクセラレータ２６は断片化されたフレームを変更せず、このフレームからは習得しない。
【００８０】
あるいはまたはさらに、アクセラレータ２６は使用中の可能性がある１つまたは複数のフレーム・フィールド、たとえばＩＰヘッダの断片化フィールドの値を置き換え、フレームが戻されるときに元の値を戻す。本発明のいくつかの実施形態では、アクセラレータ２６は、置き換えられたフィールドの現在値が必要であるかどうかを識別し、その値が必要である場合、たとえばフレームが実際に断片化された場合にのみ、元の値を格納する。
【００８１】
本発明のいくつかの実施形態では、アクセラレータ２６が、アクセラレータ２６を通過してロード・バランサ２４に送られるすべてのフレームは、アクセラレータ２６を介して戻らなければならないことを理解している場合にのみ、受け取ったフレームに固有識別番号が追加される。これはたとえば、ロード・バランサ２４がアクセラレータ２６の１つまたは複数のポートのみを介して接続されている場合に発生する可能性がある。本発明のいくつかの実施形態では、アクセラレータ２６は、フレームがロード・バランサ２４から戻されたときに固有識別番号を除去する。本発明のいくつかの実施形態では、システム・マネージャは、ロード・バランサ２４がアクセラレータ２６のみを介して接続されているかどうかに関する通知を使用して、アクセラレータ２６を構成する。あるいはまたはさらに、アクセラレータ２６は、ロード・バランサ２４から受け取ったフレームのＩＰ宛先アドレスを追跡し、それに関して以前にフレームがロード・バランサ２４から受け取られたＩＰ宛先アドレスを有するフレームにのみ、固有識別番号のタグを付ける。
【００８２】
あるいは、固有識別番号は、固有識別番号の意味を知らないルータおよび／またはサーバを悩ませるような方法でフレームを変更することはなく、固有識別番号はフレーム内に残される。
【００８３】
本発明のいくつかの実施形態では、テーブル３０を参照しながら前述したように、アクセラレータ２６は、いくつかのパケット・グループについてはテーブル１３０内にエントリを作成しない。任意選択で、アクセラレータ２６は、テーブル１３０内のエントリがアクセラレータ２６の規則に従って作成されていないパケットについては、一時記憶域内にエントリを作成しない。
【００８４】
本発明のいくつかの実施形態では、アクセラレータ２６は、異なる動作モードに従って動作するロード・バランサ２４を使用して動作することができる。任意選択で、システム・マネージャは、ロード・バランサ２４の動作モードに従ってアクセラレータ２６を構成する。
【００８５】
あるいはまたはさらに、アクセラレータ２６は、ロード・バランサ２４が三角形分割モード、半ＮＡＴモード、全ＮＡＴモード、または任意の他のモードで動作しているかどうかを自動的に判定する。本発明のいくつかの実施形態では、アクセラレータ２６が動作を開始したときおよび／または定期的に、ロード・バランサ２４の動作モードをチェックする。たとえば、アクセラレータ２６の動作中にロード・バランサ２４が置き換えられる、および／または再構成されるような実施形態では、動作モードの定期的なチェックが望ましい。本発明のいくつかの実施形態では、ロード・バランサに識別可能パケットを伝送すること、およびロード・バランサが識別可能パケットをどのように処理するかを判定することによって、自動判定が実行される。本発明のいくつかの実施形態では、ロード・バランサ２４をテストするために、アクセラレータ２６によって識別可能パケットが生成される。あるいは、識別可能パケットにクライアントから受け取られたパケットが含まれ、アクセラレータ２６が識別するためにこれを習得する。本発明のいくつかの実施形態では、識別可能パケットは、アクセラレータ２６によって識別できるようにマークを付けられる。あるいはまたはさらに、アクセラレータ２６は、パケットの識別を可能にする、識別可能パケットの１つまたは複数の固有フィールド（またはほとんど反復されることのないフィールド）を格納する。識別可能パケットを使用する代わりにまたはこれに加えて、アクセラレータ２６は、ロード・バランサ２４をテストするときに、限定数のパケットのみ、たとえば単一パケットのみを同時にロード・バランサ２４に送信する。
【００８６】
本発明のいくつかの実施形態では、アクセラレータ２６は、すべてのパケットを単一のクライアントＩＰアドレスから単一のサーバ２２に向けて送るロード・バランサ２４を使用して動作することが可能である。このようなロード・バランサ２４は、単一のＷｅｂサイトのみを表すことが好ましい。いくつかの実施形態では、システム・マネージャは、キー・フィールド３２がソース・アドレス・フィールド３４のみを含むようにアクセラレータ２６を構成できる。したがって、テーブル３０に必要なエントリの数が少なくなり、アクセラレータ２６の動作が加速される。あるいはまたはさらに、アクセラレータ２６は、同じクライアントＩＰアドレスから異なるサーバ２２にパケットを転送しているかどうかを判定するために、ロード・バランサ２４を自動的にテストする。いくつかの実施形態では、アクセラレータ２６は、クライアント・アドレスは同じであるがソース・ポートおよび／またはプロトコルが異なる複数のテスト・パケットを含む、所定のテスト・シーケンスを使用する。アクセラレータ２６は、ロード・バランサ２４によるテスト・パケットの処理から、ロード・バランサがどの動作モードで動作しているかを判定する。
【００８７】
本発明のいくつかの実施形態では、テスト・シーケンスには、複数のソース・アドレスそれぞれについて、異なるソース・アドレスおよび／またはプロトコルを有する複数のパケットが含まれる。本発明のいくつかの実施形態では、テスト・シーケンスは、ロード・バランサ２４が動作可能なモードに応答して選択される。
【００８８】
本発明のいくつかの実施形態では、アクセラレータ２６は、通信ネットワークを介して、ロード・バランサ２４の動作モードを判定する際に使用するテスト・シーケンスの更新を受け取ることができる。したがって、新しい動作モードのロード・バランサが導入されると、この新しい動作モードを区別するためのテスト・シーケンスをアクセラレータ２６にダウンロードすることが可能であり、アクセラレータ内ではいっさいハードウェアを変更する必要がない。
【００８９】
本発明のいくつかの実施形態では、アクセラレータ２６が、ロード・バランサの異なる動作モードに使用される、異なるタイプ（たとえば３０、３１、１３０）および／または異なるキー・フィールドの複数のロードバランシング・サブテーブルを含む。
【００９０】
図８は、本発明の一実施形態による、複数のロード・バランサ２４で動作するサーバ・ファーム１２０を示す概略構成図である。サーバ・ファーム１２０には、複数のサーバ２２が含まれ、それぞれが１つまたは複数のＷｅｂサイトをホストする。各ロード・バランサ２４が、ファーム１２０の１つまたは複数のＷｅｂサイトのパケットを処理する。任意選択で、各Ｗｅｂサイトのパケットが、ロード・バランサ２４のうち特定の１つによって処理される。あるいはまたはさらに、１つまたは複数のロード・バランサ２４が複数のＷｅｂサイトを処理する。それぞれのロード・バランサ２４が、前述の動作モードのいずれかに従って動作可能であり、詳細には、異なるロード・バランサ２４が同時に異なるモードで動作可能である。さらに、同じロード・バランサ２４が異なるときに異なるモードで動作可能である。
【００９１】
アクセラレータ２６はロード・バランサ２４の動作を加速させる。本発明のいくつかの実施形態では、システム・マネージャは、ファーム１２０のＷｅｂサイトのＩＰアドレスおよび各サイトのそれぞれのロード・バランサ２４でアクセラレータ２６を構成する。アクセラレータ２６は、ファーム１２０の各Ｗｅｂサイトについて別々のロードバランシング・サブテーブルを管理する。あるいは、単一のロードバランシング・サブテーブルが一部またはすべてのサイトに割り当てられ、これらがそれぞれのロード・バランサによって単一のモードで処理される。あるいは、単一のサブテーブルが各ロード・バランサ２４に割り当てられる。
【００９２】
クライアントからＷｅｂサイトに向けて送られたパケットを受け取ると、アクセラレータ２６は、パケットの宛先ＩＰアドレス（すなわちＷｅｂサイトのアドレス）に基づいて、どのサブテーブルを使用してパケットを処理するかを決定する。宛先ＩＰアドレスは、必要であればパケットが転送されるロード・バランサも定義する。あるいはまたはさらに、アクセラレータ２６は、パケットの宛先ＭＡＣアドレスおよび／またはＶＬＡＮに基づいて、どのサブテーブルを使用してパケットおよび／または必要であればパケットを転送しなければならないロード・バランサ２４を処理するかを決定する。
【００９３】
ロード・バランサ２４のうちの１つからサーバ２２に向けて送られるパケットの場合、アクセラレータ２６は、パケットのＷｅｂサイトを処理するロード・バランサのＭＡＣアドレスであるパケットのソースＭＡＣアドレスと、任意選択でパケットのＶＬＡＮとに基づいて、パケットのそれぞれのサブテーブルを選択する。あるいはまたはさらに、ロード・バランサ２４が全ＮＡＴモードで動作している場合、パケットのＩＰソース・アドレスが使用される。あるいはまたはさらに、パケットの宛先ＭＡＣアドレス（または全ＮＡＴモードではＩＰアドレス）がサーバ２２のＭＡＣアドレスと比較され、それに応じてサブテーブルが選択される。この代替例では、各サーバは単一ロード・バランサのＷｅｂサイトのみを処理する。
【００９４】
サーバ２２のうちの１つからクライアントに向けて送られるパケットの場合、アクセラレータ２６は、パケットのソースＭＡＣアドレスとサーバ２２のＭＡＣアドレスとの比較に基づいて、パケットのそれぞれのサブテーブルを選択する。あるいは、半ＮＡＴモードではソースＩＰアドレスが、全ＮＡＴモードでは宛先ＩＰアドレスが使用される。あるいはまたはさらに、パケットは、パケットのそれぞれのエントリを見つけるために、アクセラレータ２６のすべてのテーブルと比較される。
【００９５】
本発明のいくつかの実施形態では、アクセラレータ２６が前述のいずれかの特定実施形態で正しく動作するのに必要な情報が、システム・マネージャによってアクセラレータ２６内で構成される。必要な情報には、たとえばロード・バランサ２４および／またはサーバ２２のＭＡＣおよび／またはＩＰアドレス、ファーム２０によって処理されるＷｅｂサイトのＩＰアドレス、および／またはパケットが異なる方向から受け取られるＶＬＡＮのうちの、１つまたは複数が含まれる。必要な情報を構成する代わりに、またはこれに加えて、少なくともいくつかの必要な情報がアクセラレータによって自動的に決定される。任意選択で、アクセラレータ２６は、構成済みのＩＰアドレスに基づいて、従来技術で知られたいずれかの方法、たとえばアドレス絞込みプロトコル（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ／ＡＲＰ）クエリを使用して、ロード・バランサ２４および／またはサーバ２２のＭＡＣアドレスを決定する。あるいはまたはさらに、必要な情報は、たとえば隣接するサーバおよび／またはロード・バランサを識別するため、および／または、隣接するサーバおよび／またはロード・バランサから情報を受け取るために設計された、ポーリング・プロトコルを使用して、アクセラレータ２６が自動的に決定する。
【００９６】
本発明のいくつかの実施形態では、各サブテーブルには、ＩＰアドレスと任意選択でサブテーブルが動作するのに使用するＷｅｂサイトを表すポートとが割り当てられる。あるいは、サブテーブルには、各エントリについて代表的なＩＰアドレスと任意選択でエントリが関係するＷｅｂサイトのポートとをリスト表示した、１つまたは複数の追加フィールドが含まれる。
【００９７】
本発明のいくつかの実施形態では、アクセラレータ２６に複数の物理サブテーブルが含まれ、これらがＷｅｂサイトおよび／またはロード・バランサ２４に動的に割り当てられる。任意選択で、サブテーブルのフィールドは、サブテーブルが割り当てられたロード・バランサ２４に従って、すなわちロード・バランサの動作モード（たとえば全ＮＡＴ、半ＮＡＴ）に従って、動的に調整される。あるいはまたはさらに、アクセラレータ２６には異なるタイプの物理サブテーブル（たとえば前述のテーブル３０、３１、および１３０）が含まれ、これらがその動作モード（たとえば三角形分割、半ＮＡＴ、全ＮＡＴ）に従って、ロード・バランサ２４に割り当てられる。
【００９８】
あるいはまたはさらに、アクセラレータ２６には１つまたは複数の構造テーブルが含まれ、そのエントリがＷｅｂサイトおよび／またはロード・バランサそれぞれの異なるサブテーブルに動的に割り振られる。構造テーブルのインデックスは、各エントリがどのサブテーブルに属しているかを示すものである。したがって、異なるサブテーブル間でのエントリの分割が動的に実行され、他のサブテーブルが満杯でないときに、サブテーブルのうち１つのエントリがすべて満杯になる可能性は大幅に減少する。
【００９９】
本発明のいくつかの実施形態では、アクセラレータ２６は同じＷｅｂサイトを処理する複数のロード・バランサでも動作する。任意選択で、これら実施形態でのサブテーブルには、たとえばＭＡＣアドレスに基づいて、エントリのパケットを処理するロード・バランサ２４を識別する追加フィールドが含まれる。あるいは、そのようなフィールドは、たとえばロード・バランサ２４がテーブルを使用せずに動作するときには不要である。
【０１００】
本発明のいくつかの実施形態では、ロード・バランサ２４はアクセラレータ２６で動作するように最適化される。たとえば、アクセラレータ２６を使用することにより、ロード・バランサ２４がテーブルを使用する場合にテーブル内に必要なエントリが少なくなる。
【０１０１】
前述の説明は、サーバ・ファームで動作するロード・バランサで動作しているアクセラレータ２６に関するものであるが、本発明は、キャッシュ転送を実行するロード・バランサなどの、他の構成で動作するロード・バランサでも使用することができる。したがって、本明細書で使用されるサーバという用語には、プロキシ・サーバが含まれるものとする。
【０１０２】
本発明は、アクセラレータ２６のタスクを実行する単一のユニットでの使用に限定されるものでないことに留意されたい。詳細には、アクセラレータ２６のタスクを実行するには、２つまたはそれ以上のユニットが協働可能である。たとえば、第１のユニットはクライアントからロード・バランサ２４に向けて送られたパケットを傍受し、第２のユニットはロード・バランサ２４からサーバ２２に向けて送られたパケットを傍受することができる。
【０１０３】
以上、本発明について、ＴＣＰ／ＩＰプロトコル・スイートに関して述べてきたが、本発明のいくつかの態様は、たとえばＩＰＸ、ＤＥＣＮＥＴ、およびＩＳＯプロトコルなどの他のパケット・ベースの伝送プロトコルに関して実施することができることに留意されたい。さらに、前述の実施形態はイーサネット・リンク・レイヤに関するものであるが、本発明はフレーム・リレー、２地点間モデム、ＩＳＤＮ、ＡＳＤＬ、およびＡＴＭを含むがこれらに限定されることのない、ほとんどどんなレイヤ２プロトコルででも使用することができる。
【０１０４】
前述の方法は、ステップの順序および使用される正確な実施の変更を含み、多数の方法で変更できることを理解されよう。前述の方法および装置の記述は、この方法を実施するための装置およびこの装置を使用する方法を含むものとして解釈されるものであることも理解されたい。
【０１０５】
以上、本発明の実施形態について限定的でない詳細な説明を使用し、例示的なものとして、本発明の範囲を限定することを意図せずに説明してきた。一実施形態に関して述べた特徴および／またはステップが他の実施形態でも使用可能であること、ならびに本発明のすべての実施形態が、特定の図面に示したかまたは実施形態のうち１つに関して述べた特徴および／またはステップのすべてを有するものでないことを理解されたい。当分野の技術者であれば、説明した実施形態の変形例を実施するであろう。
【０１０６】
前述の実施形態のうちいくつかは、発明者によって企図された最良のモードについて述べたものであり、本発明に不可欠ではなく例として記載された構造、動作、ならびに構造および動作の詳細を含むものであることに留意されたい。当分野で知られているように、本明細書に記載された構造および動作は、たとえ構造または動作が異なっていても、同じ機能を実行する均等物であれば置き換えることが可能である。したがって、本発明の範囲は、特許請求の範囲で使用されるような要素および制限によってのみ限定される。「含む」、「備える」、「有する」、およびこれらの同根語は、特許請求の範囲で使用される場合、「含むがそれに限定されない」という意味である。
【図面の簡単な説明】
【図１】本発明の一実施形態によるサーバ・ファームを示す概略構成図である。
【図２】本発明の一実施形態によるアクセラレータのロードバランシング・テーブルを示す図である。
【図３】本発明の一実施形態による、パケット受け取り時にアクセラレータによって実行される動作を示す流れ図である。
【図４】本発明の一実施形態による、半ＮＡＴロード・バランサで使用するためのアクセラレータのロードバランシング・テーブルを示す図である。
【図５】本発明の他の実施形態による、パケット受け取り時にアクセラレータによって実行される動作を示す流れ図である。
【図６】本発明の一実施形態によるアクセラレータのロードバランシング・テーブルを示す図である。
【図７】本発明の他の実施形態による、パケット受け取り時にアクセラレータによって実行される動作を示す流れ図である。
【図８】本発明の一実施形態による、複数のロード・バランサで動作するサーバ・ファームを示す概略構成図である。
【図１】
0003717836.tif 000002
【図２】
0003717836.tif 000003
【図３】
0003717836.tif 000004
【図４】
0003717836.tif 000005
【図５】
0003717836.tif 000006
【図６】
0003717836.tif 000007
【図７】
0003717836.tif 000008
【図８】
0003717836.tif 000009