JP6355759B2 - エニーキャストデータトラフィックをロードバランシングするための方法、システム、および、コンピュータプログラム - Google Patents

エニーキャストデータトラフィックをロードバランシングするための方法、システム、および、コンピュータプログラム Download PDF

Info

Publication number
JP6355759B2
JP6355759B2 JP2016565152A JP2016565152A JP6355759B2 JP 6355759 B2 JP6355759 B2 JP 6355759B2 JP 2016565152 A JP2016565152 A JP 2016565152A JP 2016565152 A JP2016565152 A JP 2016565152A JP 6355759 B2 JP6355759 B2 JP 6355759B2
Authority
JP
Japan
Prior art keywords
devices
data structure
data packet
anycast
application instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016565152A
Other languages
English (en)
Other versions
JP2017516399A (ja
Inventor
アイゼンブド,ダニエル・ユージーン
ニュートン,サイモン・ジェフリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2017516399A publication Critical patent/JP2017516399A/ja
Application granted granted Critical
Publication of JP6355759B2 publication Critical patent/JP6355759B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Description

関連特許出願の相互参照
本願は、2014年5月13日に出願され「エニーキャストデータトラフィックをロードバランシングするための方法およびシステム(METHOD AND SYSTEM FOR LOAD BALANCING ANYCAST DATA TRAFFIC)」と題された米国仮特許出願第61/992,623号の利益および優先権を主張する、2014年9月24日に出願され「エニーキャストデータトラフィックをロードバランシングするための方法およびシステム(METHOD AND SYSTEM FOR LOAD BALANCING ANYCAST DATA TRAFFIC)」と題された米国特許出願第14/495,683号の利益および優先権を主張するものであって、それらの開示全体が引用によりこの明細書中に援用されている。
開示の分野
本開示は、概して、データトラフィックロードバランシングの分野に関する。
背景
世界中のインターネットアクセス可能なコンテンツの多くは、大規模なデータセンタにおいてホストされているサーバによって提供される。このようなデータセンタは、典型的には、複数の地理的位置にわたって分散されており、エンドユーザのためにグローバルに機能している。典型的なデータセンタは、エンドユーザに提供されるさまざまなサービスに関連付けられたソフトウェアアプリケーションの複数のインスタンスをホストする何千ものサーバを収容している。エンドユーザが、たとえばウェブサイト、ソーシャルメディアサービス、ストリーミングメディアコンテンツアイテム、ゲーミングサービスまたは他の何らかのオンラインサービスに関連付けられたインターネットコンテンツについての要求を行う場合、当該要求は、エンドユーザの要求に応えるためにデータセンタによってホストされているサービスに関連付けられたアプリケーションインスタンスに送信される。
概要
本開示の一局面に従うと、エニーキャストアドレスにアドレス指定されたデータトラフィックをロードバランシングするための方法であって、第1のセットのロードバランシング(load balancing:LB)デバイスのうちの各々のLBデバイスによって第1のデータ構造を維持するステップを含む。第1のデータ構造は、第1のセットのLBデバイスのうちのLBデバイスによってサーブされるアプリケーションインスタンスのグループにおけるアプリケーションインスタンスに関連付けられたエントリを含む。各々のサーブされたアプリケーションインスタンスが第1のデータ構造に含まれている頻度は、対応するサーブされたアプリケーションインスタンスの容量に関連付けられた重み値を示している。第1のセットのLBデバイスにおける或るLBデバイスが、もともとエニーキャストアドレスにアドレス指定されていたデータパケットを受信すると、当該LBデバイスは、受信されたデータパケットのうちの第1のセットのヘッダフィールドに基づいて第1のハッシュ値を生成する。第1のセットのうちのLBは、次いで、第1のデータ構造を用いて、生成された第1のハッシュ値に基づいて、サーブされたアプリケーションインスタンスのうちの1つのアプリケーションインスタンスの仮想インターネットプロトコル(Internet protocol:IP)アドレスを識別し、識別されたアプリケーションインスタンスにデータパケットを転送する。当該方法はまた、第2のセットのLBデバイスのうちの或るLBデバイスによって、第1のセットにおけるそれぞれのLBデバイスに関連付けられたエントリを含む第2のデータ構造を維持するステップを含む。第1のセットのLBデバイスにおける各々のLBデバイスが第2のデータ構造に含まれている頻度は、第1のセットの対応するLBデバイスに関連付けられた重み値を示している。第2のセットのLBデバイスのうちの或るLBデバイスが、もともとエニーキャストアドレスにアドレス指定されていたデータパケットを受信すると、当該LBは、受信されたデータパケットのうちの第2のセットのヘッダフィールドに基づいて第2のハッシュ値を生成し、生成された第2のハッシュ値に基づいて、第2のデータ構造を用いて、第1のセットのうちの或るLBデバイスを識別する。第2のセットのうちのLBは、次いで、データパケットを第1のセットのLBデバイスのうちの識別されたLBデバイスに転送する。
本開示の別の局面に従うと、通信ネットワークにおけるエニーキャストトラフィックをロードバランシングするためのシステムは、第1のセットのロードバランシング(LB)デバイスを含む。第1のセットのLBデバイスのうちの各々のLBデバイスは、第1のデータ構造を維持するように構成される。第1のデータ構造は、第1のセットのLBデバイスのうちのLBデバイスによってサーブされたアプリケーションインスタンスのグループにおけるアプリケーションインスタンスに関連付けられたエントリを含む。各々のサーブされたアプリケーションインスタンスが第1のデータ構造に含まれている頻度は、対応するサーブされたアプリケーションインスタンスに関連付けられた重み値を示している。第1のセットのLBデバイスのうちの或るLBデバイスが、エニーキャストアドレスにアドレス指定されたシステムにおいて受信されたデータパケットを受信すると、当該LBデバイスは、受信されたデータパケットのうちの1つ以上の第1のヘッダフィールドに基づいて第1のハッシュ値を生成し、第1のデータ構造を用いて、生成された第1のハッシュ値に基づいて、サーブされたアプリケーションインスタンスのうちの1つのアプリケーションインスタンスの仮想インターネットプロトコル(IP)アドレスを識別する。第1のセットのうちのLBデバイスは、次いで、識別されたアプリケーションインスタンスにデータパケットを転送する。システムはまた、第2のセットのロードバランシング(LB)デバイスを含む。第2のセットのLBデバイスのうちの各々のLBデバイスは、第1のセットにおけるそれぞれのLBデバイスに関連付けられたエントリを含む第2のデータ構造を維持するように構成される。第1のセットのLBデバイスにおける各々のLBデバイスが第2のデータ構造に含まれている頻度は、第1のセットのうちの対応するLBデバイスに関連付けられた重み値を示している。エニーキャストアドレスにアドレス指定されたシステムにおいて受信されたデータパケットを第2のセットのLBデバイスにおける或るLBデバイスが受信すると、当該LBデバイスは、受信されたデータパケットのうちの1つ以上の第2のヘッダフィールドに基づいて第2のハッシュ値を生成し、生成された第2のハッシュ値に基づいて、第2のデータ構造を用いて、第1のセットのLBデバイスのうちの或るLBデバイスを識別する。第2のセットのうちの当該LBデバイスは次いで、第1のセットのうちの識別されたLBデバイスにデータパケットを転送する。システムはさらに、エニーキャストアドレスに関連付けられたエニーキャストノードを含む。当該エニーキャストノードは、エニーキャストアドレスにアドレス指定されたデータパケットを受信すると、受信したデータパケットを第2のセットのLBデバイスにおける或るLBデバイスに転送するように構成されている。
図面の簡単な説明
本開示の上述および関連の目的、特徴および利点は、添付の図面に関連付けて読まれると、以下の詳細な説明を参照することによって、より十分に理解されるだろう。
エニーキャストアドレスにアドレス指定されたデータトラフィックをロードバランシングするための単層型ロードバランシングシステムの実現例を示すブロック図である。 単層型ロードバランシングシステムによって実行されるエニーキャストデータパケットを処理するプロセスの実現例を説明するフローチャートである。 エニーキャストアドレスにアドレス指定されたデータトラフィックをロードバランシングするための2層型ロードバランシングシステムの実現例を示すブロック図である。 2層型ロードバランシングシステムの別の実現例を示すブロック図である。 2層型ロードバランシングシステムによって実行されるエニーキャストデータパケットを処理するプロセスの実現例を説明するフローチャートである。 ロードバランサに採用されているデータ構造を生成するためのプロセスの実現例を説明するフローチャートである。 図1および図3におけるシステムに採用されているデータ構造を示す図である。
さまざまな図における同様の参照番号および符号は同様の要素を示している。
詳細な説明
オンラインサービスまたはアプリケーションは、通常、各々のアプリケーションまたはサービスのための複数のアプリケーションインスタンスを含む。各々のアプリケーションまたはサービスのための複数のアプリケーションインスタンスは複数のコンピュータサーバ上に常駐していてもよい。そのため、複数のエンドユーザによるアプリケーションまたはサービスへのアクセスに関連付けられた負荷は、少なくとも、対応する複数のアプリケーションインスタンスのサブセットにわたって分散されていてもよい。また、さまざまな地理的位置にわたって所与のアプリケーションまたはサービスのための複数のアプリケーションインスタンスを分散させることにより、エンドユーザが被るレイテンシを低減させることが容易になる。特に、エンドユーザは、対応する複数のアプリケーションインスタンスのうち1つ以上のアプリケーションインスタンスを有する最も近い地理的位置でサーブされている可能性がある。各々のエンドユーザまたはクライアントが対応する最も近い地理的位置でサーブされていることでレイテンシを低減させる一方で、各々の地理的位置におけるコンピュータサーバとそこにあるアプリケーションインスタンスとが有する容量が有限となる。特定の位置における所与のアプリケーションまたはサービスに対する要求が同じ位置におけるアプリケーションインスタンスの容量を上回っている場合、アプリケーションに対する過剰な要求が次に最も近い位置にまでオーバーフローする可能性がある。
コンピュータサーバおよびその上で実行されるアプリケーションインスタンスが有する有限の容量に対処するために、従来より、既存のデータセンタにおいてドメインネームシステム(domain name system:DNS)サーバを用いてロードバランシング機能を実行してきた。以下において、エニーキャストデータトラフィックをロードバランシングするためのプロセス、装置およびシステムの実現例が提供される。
エニーキャストベースのサービスまたはアプリケーションにおいては、1つ以上のインターネットプロトコル(IP)アドレスが、エニーキャストを用いてグローバルに複数のサーバからアドバタイズされている。さらに、同じアプリケーションまたはサービスにアクセスする場合、所与のアプリケーションまたはサービスについてのエニーキャストIPアドレスがエンドユーザによって用いられる。次いで、エニーキャストアドレスに関連付けられたデータトラフィック、たとえばアプリケーションまたはサービスにアクセスするためのエンドユーザからの要求は、以下に記載される実現例において説明されるように、さまざまな対応するアプリケーションインスタンスにわたってロードバランシングされている。エニーキャストアドレスに関連付けられたデータトラフィックはまた、この明細書中において、エニーキャストトラフィックまたはエニーキャストデータトラフィックとも称される。ある実現例においては、ステートフルプロトコルに関連付けられたエニーキャストトラフィック、たとえばトランスポートコントロールプロトコル(transport control protocol:TCP)がロードバランシングおよびサーブされている一方で、対応する接続はインターネットルーティングテーブルが変化したときでも維持されている。さらに、以下に記載される実現例は、さまざまな位置についての容量または他のロードバランシングメトリクスを特定することを可能にし、かつ、負荷、容量または他のいずれかのロードバランシングメトリクスの変化に対する迅速なロードバランシング応答を可能にする。
図1は、エニーキャストアドレスにアドレス指定されたデータトラフィックをロードバランシングするための単層型ロードバランシングシステム100の実現例のブロック図を示す。システム100は、複数のエニーキャストリダイレクタノード110a〜110c(以下、個々にまたは総称してエニーキャストノード110とも称する);ロードバランサデバイス120a〜120b(以下、個々にまたは総称してロードバランサ120とも称する);および複数のサーバクラスタ130a〜130c(以下、個々にまたは総称してクラスタ130とも称する)を含む。クラスタ130の各々はいくつかのアプリケーションインスタンス131を含む。
エニーキャストアドレスにアドレス指定されたデータパケット10は、エニーキャストノード110によってシステム100において受信される。たとえば、データパケット10はエニーキャストノード110によって受信される。エニーキャストノード110は、エニーキャストアドレスにアドレス指定されたデータパケット10を受信し、受信されたデータパケットを対応するロードバランサ120にリダイレクトするように構成されたデバイスである。場合によっては、エニーキャストノード110は、受信されたデータパケット10を対応するロードバランサ120にリダイレクトする。他の場合には、受信側エニーキャストノード110は、受信されたデータパケット10を、システム100のうち1つ以上のそれぞれのクラスタ130にサーブするロードバランサ120のプールにリダイレクトする。
いくつかの実現例においては、各々のエニーキャストノード110は、ソースインターネットプロトコル(IP)アドレスを、対応するクラスタ130またはこのようなクラスタに関連付けられたロードバランサ120に対してマッピングするそれぞれのマップを維持するかまたは当該それぞれのマップにアクセスできる。当該マップはソースIPマップとも称される。場合によっては、各々のソースIPアドレスは、同じソースIPアドレスに関連付けられたデータパケットソースに最も近いクラスタ130または対応するロードバランサ120にマッピングされる。当業者であれば、ソースIPアドレスとクラスタ130またはロードバランサ120との間のマッピングが、たとえばシステム100のアドミニストレータによってなされる割当てに基づいて、さまざまに規定され得ることを認識するはずである。エニーキャストアドレスにアドレス指定されたデータパケット10を受信すると、エニーキャストノード110は、ソースIPマップにおけるパケットのソースインターネットプロトコル(IP)アドレスを調べ、データパケット10を、マップされた位置(すなわちソースIPマップにおけるソースIPアドレスに関連付けられた位置)にリダイレクトする。マップされた位置は、システム100のロードバランサ120またはロードバランサ120のプールを示している。
いくつかの実現例においては、エニーキャストノード110は、受信されたデータパケット10のうちのいくつかのヘッダフィールドを用いて、受信されたデータパケット10がリダイレクトされるべきロードバランサ120またはロードバランサ120のプールを決定する。たとえば、受信側エニーキャストノード110は、受信されたデータパケット10に関連付けられたソースポートおよび(仮想IP(virtual IP:VIP)アドレスなどの)宛先IPアドレスを用いて、複数のエニーキャストサービスグループのうちの或るエニーキャストサービスグループを決定する。いくつかの実現例においては、受信側エニーキャストノード110は、宛先アドレス、宛先ポート、ソースIPアドレス、ソースポート、プロトコルまたはそれらのいずれかの組合せを用いて、エニーキャストサービスグループを決定することができる。受信側エニーキャストノード110はまた、接続識別子(identifier:ID)などのデータパケットペイロードに含まれる他の情報を用いてもよい。たとえば、2つのエニーキャストサービスグループが規定されてもよく、そのうち一方のエニーキャストサービスグループはバックエンドロードバランシングのためにエンドポイントサーバを用い、他方のエニーキャストサービスグループは、バックエンドロードバランシングのためにロードバランシングサーバを用いる。エンドポイントサーバは、トランスポートコントロールプロトコル(TCP)接続を終了するように構成される。他の例においては、さまざまなエニーキャストサービスグループが規定されてもよい。対応するエニーキャストサービスグループに対してパケットの宛先IPアドレスおよびソースポートをマッピングする際に、受信側エニーキャストノード110は、たとえば、このようなマッピングを示す第2のマップまたは構成情報を活用する。受信側エニーキャストノード110はさらに、受信されたデータパケット10のソースIPアドレスと受信側エニーキャストノード110に関連付けられたソースIPマップとを用いて、システム100のゾーン、たとえば1つ以上のクラスタ130を決定する。いくつかの実現例においては、単一のソースIPマップがすべてのエニーキャストノード110によって共有されている。他の実現例においては、さまざまなエニーキャストノード110が別個のソースIPマップに関連付けられてもよい。いくつかの実現例においては、各々のソースIPマップはそれぞれのサービスに関連付けられている。受信側エニーキャストノード110は、次いで、たとえば第3のマップに基づいて、決定されたゾーンおよび決定されたエニーキャストサービスグループをロードバランサ120またはロードバランサ120のプールにマッピングする。受信側エニーキャストノードは、次いで、受信されたデータパケット10を、決定されたロードバランサ120またはロードバランサ120のうち決定されたプールにリダイレクトする。
当業者であれば、グローバルマッピング(たとえばソースIPマップ)を用いることによってエニーキャストノード110によるデータパケット10のリダイレクトを一致させることを、認識するはずである。言いかえれば、データパケットがエニーキャスト110bではなくエニーキャストノード110cにおいて受信される場合、エニーキャストノード110cは、ソースIPマップを用いて、エニーキャストノード110bによって選択されたであろう同じロードバランサにデータパケット10をリダイレクトすることとなる。
受信側エニーキャストノード110はさらに、受信されたデータパケット10が、受信側エニーキャストノード110によって最近サーブされたデータフローまたはセッションに対応しているかどうかを判断するために接続テーブルをチェックするように構成され得る。受信されたデータパケットが接続テーブルにおいて示されるデータフローまたはセッションに対応している場合、受信側エニーキャストノード110は、受信されたデータパケット10を、対応するデータフローまたはセッションに関連付けられた宛先に転送する。そうでない場合、受信側エニーキャストノード110は、上述のとおりロードバランサ120またはロードバランサ120のプールを決定し、受信されたデータパケット10を、決定されたロードバランサ120またはロードバランサ120のうちの決定されたプールにリダイレクトする。
いくつかの実現例においては、各々のロードバランサ120はプロセッサおよびメモリを含むコンピューティングデバイスである。メモリは、データパケット10がもともとアドレス指定されているエニーキャストアドレスに関連付けられたデータ構造121およびコンピュータコード命令を格納している。コンピュータコード命令は、エニーキャストアドレスに関連付けられたデータパケットをロードバランシングするためのソフトウェアロードバランサを含む。いくつかの実現例においては、ソフトウェアロードバランサは仮想マシンである。ロードバランサ120は、同じエニーキャストアドレスに関連付けられた複数のソフトウェアロードバランサおよび/または複数のエニーキャストアドレスに関連付けられた複数のソフトウェアロードバランサを含み得る。データ構造121は、エニーキャストアドレスに関連付けられたデータパケットを、クラスタ130に常駐している対応するアプリケーションインスタンス131にマッピングするためにロードバランサ120によって用いられる。場合によっては、各々のロードバランサ120は、同じロードバランサ120によってサーブされた各々のエニーキャストアドレスのための別個のデータ構造を含む。プロセッサは、メモリに格納されたコンピュータコード命令を実行するように構成される。当業者であれば、各々のロードバランサ120が複数のプロセッサおよび/または複数のメモリを含み得ることを認識するはずである。ロードバランサ120は、コンピュータサーバ、TCP接続を終了させるエンドポイントサーバ、この明細書中に記載されるようにロードバランシングを実行するように構成された他の電子デバイス、またはそれらの組合せを含む。
場合によっては、ロードバランサ120はシステム100のさまざまな地理的区域にわたって分散されている。たとえば、ロードバランサ120a、120bおよび120cは、それぞれ、対応するクラスタ130a、130bおよび130cにサーブする。他の場合には、ロードバランサ120は2つ以上のクラスタ130にサーブしてもよい。ロードバランサ120はシステム100のゾーンにサーブしてもよい。ゾーンは、この明細書中においては、システム100のうち、たとえば対応する地理的位置または他の基準に基づいて関連付けられる1つ以上のクラスタ130を指している。たとえば、ゾーンは、同じデータセンタ内などにおいて互いに地理的に近接して位置する複数のクラスタ130を含み得る。他の場合においては、ゾーンは、比較的高速の通信リンクによって相互接続されている、互いにより遠くに離れたクラスタ130を含み得る。ゾーンは、ロードバランサのプールによってサーブされてもよい。
受信されたデータパケット10がエニーキャストノード110によってロードバランサ120のプールにリダイレクトされる場合、イコール・コスト・マルチ・パス(equal-cost multi-path:ECMP)ルーティングを採用して、受信されたデータパケットをロードバランサ120のプールのうち特定のロードバランサ120に転送してもよい。たとえば、データパケット10を受信するデバイスは、データパケット10のヘッダフィールド(たとえば、プロトコル、ソースIPアドレス、宛先IPアドレス、ソースポートおよび宛先ポートを含むパケットの5タプル)に基づいて整数ハッシュ値を生成する。受信側デバイスは、次いで、ロードバランサ120の識別を含むテーブルのサイズを法として、生成されたハッシュ値に基づいて、宛先ロードバランサ120を決定する。いくつかの実現例においては、受信側デバイスは、以下にさらに記載されるように、ロードバランサ120によって用いられるのと同じかまたは実質的に同様のアルゴリズムを用いて、宛先ロードバランサ120を決定する。受信側デバイスは、次いで、宛先ロードバランサ120を指し示すようにパケットのレイヤ2イーサネット(登録商標)ヘッダを書換えるか、または、GRE(generic routing encapsulation)ヘッダおよびアウターIPヘッダでデータパケット10をカプセル化することによって、データパケット10を宛先ロードバランサ120に送達する。受信されたデータパケット10を複数のソフトウェアロードバランサのうちの1つに転送するために、パケットの宛先IPアドレスにサーブする複数のソフトウェアロードバランサを含むロードバランサ120によって同じアプローチが用いられてもよい。
データパケット10を受信すると、受信側ロードバランサ120またはその上にあるソフトウェアロードバランサが、データパケット10のうちの1つ以上のヘッダフィールド(たとえば、プロトコル、ソースIPアドレス、宛先IPアドレス、ソースポートおよび宛先ポートを含むパケットの5タプル)に基づいてハッシュ値を生成する。いくつかの実現例においては、データ構造121は、受信側ロードバランサ120によってサーブされるアプリケーションインスタンス131のグループに関連付けられたエントリを含む。アプリケーションインスタンス131のグループは、システム100に到達したときにデータパケット10がアドレス指定されていたエニーキャストアドレスに関連付けられたアプリケーションまたはサービスに対応している。受信側ロードバランサ120は、次いで、生成されたハッシュ値およびデータ構造121を用いて、受信側ロードバランサ120によってサーブされるアプリケーションインスタンスのグループのうちの或るアプリケーションインスタンス131の宛先IPアドレスを決定する。受信側ロードバランサ120は、さらに、決定されたアプリケーションインスタンス131にデータパケット10を転送する。
いくつかの実現例においては、データ構造121は、各々のアプリケーションインスタンス131がデータ構造121に含まれている頻度が、同じアプリケーションインスタンス131に関連付けられた重みを反映するように設計されている。アプリケーションインスタンス131に関連付けられた重みは、どのアプリケーションインスタンス131にデータパケットが転送されるべきかを決定するのに関連する容量、処理時間または他の基準などのロードバランシングメトリックを示している。すなわち、各々のアプリケーションインスタンス131に関連付けられた重みは、アプリケーションインスタンス131がどれほどビジーであるかまたはどれほどフリーであるかを反映していてもよい。代替的には、所与のアプリケーションインスタンス131に関連付けられた重みは、同じアプリケーションインスタンス131が用いられている場合に、データパケット10をどれほど高速で、またはどれほど低速で処理するかを反映していてもよい。各々のアプリケーションの容量は、1秒当たりのパケット、接続、または、1秒当たりの同期(synchronize:SYN)パケット、帯域幅などの点で規定されてもよい。処理時間は、ラウンドトリップタイム(round trip time:RTT)または当該技術において公知の他のメトリクスの点から規定されてもよい。データ構造121においては、アプリケーションインスタンス131が含まれる頻度が高ければ高いほど、データパケット10に関連付けられた要求を処理するために同じアプリケーションインスタンス131が選択される可能性がより高くなるはずである。
受信側ロードバランサ120は、生成されたハッシュ値を用いて、データ構造121のエントリを選択する。たとえば、受信側ロードバランサ120は、データ構造のサイズまたはデータ構造の要素部分のサイズを法として、生成されたハッシュ値に等しいインデックスを含むデータ構造エントリを選択してもよい。データ構造121の各々のエントリは対応するアプリケーションインスタンス131を示している。たとえば、データ構造121の各々のエントリは、対応するアプリケーションインスタンス131の宛先IPアドレスを含む。受信側ロードバランサ120は、次いで、データパケット10を、選択されたデータ構造エントリから得られた宛先IPアドレスを有するアプリケーションインスタンス131に転送する。
いくつかの実現例においては、データ構造121は、システム100の対応する位置(たとえばクラスタ130またはゾーン)に関連付けられたアプリケーションインスタンスについてのエントリを含む各々の行または代替的には各々の列を備えた単一のテーブルである。そのため、受信側ロードバランサ120は、初めに、行または代替的には列を選択し、次いで、生成されたハッシュ値に基づいて、選択された行または代替的には選択された列内におけるエントリを選択してもよい。いくつかの実現例においては、データ構造121は複数のテーブルを含む。各々のテーブルは、システム100の位置(たとえばゾーンまたはクラスタ130)に対応している。このような場合、受信側ロードバランサ120は初めにテーブルを選択し、次いで、生成されたハッシュ値に基づいて、この選択されたテーブル内のエントリを選択する。
受信側ロードバランサ120は、さまざまな方法で、システム100の位置に対応するテーブルまたは行もしくは列などのサブテーブルを選択してもよい。たとえば、この選択は、システム100の対応する位置にIPサブネットを関連付けるマップに基づいていてもよい。このようなマップは、各々のIPサブネットからのトラフィックが、通常、システム100のどの位置に到達するのかを観察することによって規定されてもよい。代替的には、マップは、システム100のアドミニストレータによってなされる割当てに基づいて、または、システム100の位置130とIPサブネットとの間の距離およびRTTに基づいて、規定されてもよい。受信側ロードバランサ120は、マップにおける受信されたデータパケット10に関連付けられたソースIPアドレスを調べて、位置または位置の重み付けリストを元に戻す。位置の重み付けリストがマップから検索される場合、受信側ロードバランサは、データパケット10のうちの1つ以上のヘッダフィールド(たとえば5タプル)を用いて生成された別のハッシュ値および対応する重みに基づいたリストから位置を選択してもよい。しかしながら、重み付けリストが用いられない場合、受信側ロードバランサ120は、マップにおいて示されている最も近接している位置がデータパケット10を処理するために十分な利用可能容量を有しているかどうかをチェックする。十分な利用可能容量を有している場合、最も近接している位置が選択される。十分な利用可能容量を有していない場合、マップに示されている次に最も近接する位置がチェックされる等である。各々の位置が対応するテーブルまたはサブテーブルに関連付けられていると想定すると、受信側ロードバランサ120は、マップから位置を選択する際に、データパケット10のための宛先アプリケーションインスタンス131を決定するのに使用されるテーブルまたはサブテーブルを選択する。当業者であれば、データ構造121が、代替的には、1つ以上のテーブルではなく1つ以上のツリーまたは当該技術において公知である他の如何なるデータ構造をも含み得ることを認識するはずである。
受信側ロードバランサ120はまた、アプリケーションインスタンス131を選択する前に接続テーブルをチェックして、受信されたデータパケット10が既存の接続に関連付けられたフローまたはセッションに対応しているかどうかを判断してもよい。受信されたデータパケット10が既存の接続に関連付けられていることが判明すれば、データパケット10は、接続テーブルにおける接続に関連付けられたアプリケーションインスタンスに転送される。そうでない場合、受信側ロードバランサ120は、データ構造121からアプリケーションインスタンス131を決定し、データパケット10を決定されたアプリケーションインスタンス131に転送する。また、データパケット10を受信すると、ロードバランサ120はさらに、データパケット10を、これが予め1回以上カプセル化されていた場合には、デカプセル化してもよい。そのため、受信側ロードバランサ120は、内部パケットが到達するまで、データパケット10をデカプセル化し、次いで、アプリケーションインスタンス131を決定する際に使用されるいずれのヘッダフィールドをも検索して、データパケット10を処理する。
各々のクラスタ130は、1つ以上のサービスに関連付けられたアプリケーションインスタンスを維持する1つ以上のコンピュータサーバ、たとえばコンテンツデリバリサーバおよび/またはアプリケーションサーバ、を含む。図1においては、クラスタ130a〜130cの各々は、システム100に到達したときにデータパケット10がアドレス指定されていたエニーキャストアドレスを介してアクセスされたアプリケーションまたはサービスに関連付けられたいくつかのアプリケーションインスタンス131を含む。所与のクラスタ130におけるアプリケーションインスタンス131は、単一のコンピュータサーバに常駐してもよく、または、同じクラスタ130のうちの複数のコンピュータサーバ間で分散されてもよい。アプリケーションインスタンス131は対応する宛先IPアドレスを介してアドレス指定される。この明細書中において参照されるアプリケーションインスタンスは、電子メールアプリケーション、ゲームアプリケーション、ソーシャルメディアアプリケーション、カレンダアプリケーションまたは他のいずれかのオンラインアプリケーションなどの、ウェブページまたはアプリケーションのエンドユーザの要求にサーブするサーバアプリケーションのコピーを含む。データパケット10を受信するアプリケーションインスタンス131は、データパケット10に関連付けられた要求を処理する。
図2は、単層型ロードバランシングシステム100によって実行される、エニーキャストデータパケットを処理するプロセス200の実現例を説明するフローチャートを示す。プロセス200は、エニーキャストアドレスにアドレス指定されたデータパケット10をエニーキャストノード110によって受信するプロセス(ステージ210)と、受信されたデータパケット10をエニーキャストノード110によってロードバランサ120に転送するプロセス(ステージ220)と、データパケットが予めサーブされていたフローまたはセッションに関連付けられているかどうかをロードバランサ120によって判断するプロセス(ステージ230)とを含む。データパケットが予めサーブされていたフローまたはセッションに関連付けられていると判断されると、プロセス200は、予めサーブされていたフローまたはセッションに関連付けられたアプリケーションインスタンスに対してデータパケット10を転送するプロセス(ステージ240)を含む。その他の場合、プロセス200は、複数のサブデータ構造から或るサブデータ構造を選択するプロセス(ステージ250)と、データパケット10のうち1つ以上のヘッダフィールドおよび選択されたサブデータ構造に基づいてアプリケーションインスタンス131を決定するプロセス(ステージ260)と、決定されたアプリケーションインスタンスにデータパケットを転送するプロセス(ステージ270)とを含む。
エンドユーザがエニーキャストアドレスに関連付けられたオンラインサービスを要求するかまたは消費すると、当該エンドユーザから送信された対応するデータパケットが同じエニーキャストアドレスにアドレス指定される。1つ以上のエニーキャストノード110は、エニーキャストアドレスにアドレス指定されたデータパケットを受信する(ステージ210)。たとえば、エニーキャストアドレスにアドレス指定された各々のデータパケットは、データパケットのソースに最も近いエニーキャストノード110によって受信される。エニーキャストノードにアドレス指定されたデータパケットを受信する(ステージ210)と、受信側エニーキャストノードは、受信されたデータパケットが予めサーブされていたフローまたはセッション(たとえば既に確立されていた接続)に関連付けられているかどうかを判断するために、接続テーブルをチェックしてもよい。データパケットが既存のフローまたはセッションに関連付けられていると判断される場合、受信側エニーキャストノード110は、既存のフローまたはセッションに関連付けられた次のホップにデータパケットを転送する。接続テーブルのチェックは、受信側エニーキャストノード110以外の別のネットワークエレメントまたはデバイスによって実行され得るので、または、全体がスキップされ得るので、任意となる。
フローが予め異なるエニーキャストノードによって実行されているかもしくは受信側エニーキャストノード110によるチェックが実行されていないデータパケットまたは同期(SYN)データパケットなどのデータパケットが既存のフローまたはセッションに関連付けられていないと判断されると、エニーキャストノードはデータパケットをロードバランサ(LB)120に転送する(ステージ220)。データパケットを転送する(ステージ220)際、受信側エニーキャストノード110は、当該受信側エニーキャストノード110に関連付けられたデータパケットおよびサブデータ構造のうちの1つ以上のヘッダフィールド(たとえば、ソースIPアドレス、宛先IPアドレスおよび/またはソースポート)に基づいてロードバランサ120を決定してもよい。また、エニーキャストノード110は、データパケットをロードバランサ120に転送する前に、データパケットをデカプセル化してもよく、および/または、当該データパケットを1つ以上の新しいヘッダでカプセル化してもよい。
データパケットを受信すると、ロードバランサ120は、受信されたデータパケットが予めサーブされていたフローまたはセッション(たとえば既に確立されている接続)に関連付けられているかどうかを判断するために接続テーブルをチェックしてもよい(ステージ230)。データパケットが既存のフローまたはセッションに対応していると判断される場合、LB120は、既存のフローまたはセッションにサーブしているアプリケーションインスタンスに対してデータパケットを転送する(ステージ240)。接続テーブルのチェックは、LB120以外の別のネットワークエレメントまたはデバイスによって実行され得るので、または、その全体がスキップされ得るので、任意となる。
フローが予め異なるエニーキャストノードによって実行されているかもしくはLB120によるチェックが実行されていないデータパケットまたは同期(SYN)データパケットなどのデータパケットが既存のフローまたはセッションに関連付けられていないと判断されると、LBは、LB120によって維持されているデータ構造121からサブデータ構造を選択する(ステージ250)。たとえば、データ構造121が単一のテーブルである場合、選択されたサブデータ構造はテーブルの行または列であってもよい。データ構造121が複数のテーブルを含んでいる他の場合には、選択されたサブデータ構造は複数のテーブルからなるテーブルとなる。サブデータ構造の選択は、データパケットのうちのヘッダフィールドに基づいて、および、IPサブネットとシステム100の対応する位置との間におけるサブデータ構造に基づいてなされてもよい。代替的には、選択は、データパケットのヘッダフィールド、およびリストにおける各々のサブデータ構造についての重みを反映しているサブデータ構造のリストに基づいていてもよい。データ構造121における各々のサブデータ構造は、システム100の対応する位置(たとえばクラスタ130またはゾーン)に関連付けられたアプリケーションインスタンス131の冗長リストを表わしている。アプリケーションインスタンス131が対応するサブデータ構造に含まれている頻度は、同じアプリケーションインスタンス131に関連付けられた重み値に依存している。
LB120は、次いで、データパケットのうちの1つ以上のヘッダフィールドを用いて、選択されたサブデータ構造からアプリケーションインスタンス131を決定する(ステージ260)。たとえば、LB120は、データパケットのうちの1つ以上のヘッダフィールドを用いてハッシュ値を生成し、次いで、生成されたハッシュ値を用いてサブデータ構造のエントリを決定する。LB120は、サブデータ構造のサイズを法として、生成されたハッシュ値を計算し、その結果を、選択されたエントリについてのインデックスとして用いてもよい。当業者であれば、選択されるべきサブデータ構造のエントリを識別するためにさまざまな方法でデータパケットのヘッダフィールドが用いられ得ることを認識するはずである。選択されたサブデータ構造の各々のエントリは、対応するアプリケーションインスタンス131に関連付けられたIPアドレス(たとえば宛先IPアドレス)を含む。LB120は、次いで、データパケットに関連付けられた要求がサーブされている決定済みアプリケーションインスタンス131に対してデータパケットを転送する(ステージ270)。
図3は、エニーキャストアドレスにアドレス指定されたデータトラフィックをロードバランシングするための2層型ロードバランシングシステム300の実現例のブロック図を示す。システム300は、以下において個々にまたは総称してエニーキャストノード310とも称されるエニーキャストリダイレクタノード310a〜310cと、以下において個々にまたは総称して第1層ロードバランサ320とも称される第1層ロードバランサデバイス320a〜320cと、以下において個々にまたは総称して第2層ロードバランサ325とも称される第2層ロードバランサ325a〜325cと、以下において個々にまたは総称してクラスタ330とも称される複数のサーバクラスタ、たとえばクラスタ330a〜330cとを含む。クラスタ330a〜330cの各々は、エニーキャストアドレスを通じてアクセスされるサービスに関連付けられたいくつかのアプリケーションインスタンス331を含む。
エニーキャストノード310は、対応するエニーキャストアドレスにアドレス指定された受信されたデータパケット10を1つ以上の第1の層LB320のうち或る第1の層LB320に転送するように構成される。エニーキャストノード310は、エニーキャストノード310に関連付けられたデータパケット10およびサブデータ構造のうちの1つ以上のヘッダフィールド(たとえばソースIPアドレス、宛先IPアドレスおよび/またはソースポート)に基づいてデータパケットを転送するための第1の層LB320を決定する。また、エニーキャストノード310は、データパケットを選択された第1の層LB320に転送する前に、データパケットをデカプセル化してもよく、および/または、当該データパケットを1つ以上の新しいヘッダでカプセル化してもよい。さらに、エニーキャストノード310は、図1に関連付けて説明されたエニーキャストノード110と同様に、データパケットを受信したときに接続テーブルをチェックしてもよい。
いくつかの実現例においては、各々の第1の層LB320は、受信されたデータパケットをそれぞれの第2の層LB325にマッピングするための第1のデータ構造321を含む。場合によっては、第1のデータ構造321は、各々の第2の層LB325が第1のデータ構造に含まれている頻度が同じ第2の層LB325または対応する位置に関連付けられている重み値に依存するように、第2の層LB325の冗長リストを含む。たとえば、重みは、各々の対応する位置における利用可能容量、RTTを、各々の対応する位置、別のロードバランシング基準またはそれらの組合せに反映させてもよい。第1の層LB320は、データパケット10のうちの1つ以上のヘッダフィールドに基づいて、対応する第1のデータ構造321から第2の層LB325を選択する。第1の層LB325は、次いで、選択された第2の層LB325にデータパケット10を転送する。場合によっては、第1の層LB320は、データパケット10のヘッダフィールドを用いてハッシュ値を生成し、生成されたハッシュ値に基づいて、第1のデータ構造321から第2の層LB325を選択する。他の場合には、第1の層LB320による第2の層LB325の選択は、図2に関連付けて説明されるように、サブデータ構造の選択と同様に実行されてもよい(ステージ250)。第1の層LB320による第2の層LB325の選択は、(図2におけるステージ230、ステージ240およびステージ250と同様に)第1の層LB320による接続テーブルのチェックに依存してもよい。
各々の第2の層LB325は、システム300の位置(たとえばゾーンまたはクラスタ330)に関連付けられており、システム300の同じ位置に関連付けられた対応する第2のデータ構造326を含む。第2のデータ構造326は、同じ位置に関連付けられたアプリケーションインスタンスの冗長リストを含む。各々のアプリケーションインスタンスが第2のデータ構造326に含まれている頻度は、同じアプリケーションインスタンスに関連付けられた重み値を反映している。このような重みは、各々のアプリケーションインスタンスにおいて利用可能な容量、RTTを、各々のアプリケーションインスタンス、他のロードバランシング基準またはそれらの組合せに反映させてもよい。選択された第2の層LB325は、データパケット10を受信し、データパケット10のうちの1つ以上のヘッダフィールドに基づいて対応する第2のデータ構造326からアプリケーションインスタンスを決定する。たとえば、第1の層LB320は、データパケット10のうちのヘッダフィールドを用いてハッシュ値を生成し、生成されたハッシュ値に基づいて第1のデータ構造321から第2の層LB325を選択する。いくつかの実現例においては、第2のデータ構造326の各々のエントリは、対応するアプリケーションインスタンスに関連付けられたIPアドレス(たとえば宛先IPアドレス)を含む。生成されたハッシュ値は、IPアドレスを選択する際に、第2のデータ構造におけるエントリのインデックスとして用いることができる。第2の層LB325は、次いで、決定されたアプリケーションインスタンスにデータパケット10を転送する。
各々のクラスタ330は、1つ以上のサービスに関連付けられたアプリケーションインスタンスを維持する1つ以上のコンピュータサーバ(たとえばコンテンツデリバリサーバおよび/またはアプリケーションサーバ)を含む。図3においては、クラスタ330a〜330cの各々は、システム300に到達したときにデータパケット10がアドレス指定されていたエニーキャストアドレスを通じてアクセスされたアプリケーションまたはサービスに関連付けられたいくつかのアプリケーションインスタンス331を含む。所与のクラスタ330におけるアプリケーションインスタンス331は、単一のコンピュータサーバに常駐してもよく、または、同じクラスタ330の複数のコンピュータサーバ間で分散させられてもよい。アプリケーションインスタンス331は対応する宛先IPアドレスを介してアドレス指定される。データパケット10を受信するアプリケーションインスタンス331は、データパケット10に関連付けられた要求を処理する。図3に示されるように、システム300の各々のクラスタ330またはゾーンは1つ以上の第2の層LB325によってサーブされてもよい。たとえば、クラスタ330aが第2の層LB325aによってサーブされており、クラスタ330bが2つの第2の層LB325bおよびLB325b′によってサーブされている。
図4は、2層型ロードバランシングシステム300の別の実現例のブロック図を示す。例示を容易にするために、図4に示されるブロック図は、システム300のうち、単一のエニーキャストノード310、2つの第1の層LB320aおよび320b、2つの第2の層LB325aおよび325b、ならびに2つのクラスタ330aおよび330bだけを示している。システム300はまた、第1のコントローラ312、第2のコントローラ322、第3のコントローラ327およびグローバルロードバランシングコントローラ350を含む。
第1のコントローラ312は、ネットワークエレメント、コンピュータサーバまたは別の電子デバイスを含む。第1のコントローラ312はエニーキャストノード310を構成する。当該エニーキャストノード310は、ソースIPマップ、接続テーブルなどの情報、および/または、対応するエニーキャストアドレスにアドレス指定された受信済みデータパケット10を処理する際にエニーキャストノード310によって用いられる他の情報を含む。第1のコントローラ312は、システム300の1つ以上のデータベースまたは他のデバイスからこのような情報を取得し、対応する更新をエニーキャストノード310に提供してもよい。
第2のコントローラ322はネットワークエレメント、コンピュータサーバまたは別の電子デバイスを含む。第2のコントローラ322は、システム300の各々の位置(たとえばクラスタ330またはゾーン)に関連付けられた重みなどの情報;システム300の位置にデータパケットをルーティングするためのルーティング情報;接続テーブル;および/または、受信されたデータパケット10を処理する際に第1の層LB320によって用いられる他の情報、を提供することによって、第1の層LB320aおよび320bを構成する。第2のコントローラデバイス322は、システム300のうちのグローバルロードバランシングコントローラ350、1つ以上のデータベースまたは他のデバイスからこのような情報を獲得し、対応する更新を第1の層LB320に提供してもよい。
第3のコントローラ327は、ネットワークエレメント、コンピュータサーバまたは別の電子デバイスを含む。第3のコントローラ327は、システム300の対応する位置における各々のアプリケーションインスタンス331に関連付けられた重みなどの情報;データパケット10をアプリケーションインスタンス331にルーティングするためのルーティング情報;および/または、受信されたデータパケット10を処理する際に第2の層LB320によって用いられる他の情報;を提供することによって、第2の層LB325aおよび325bを構成する。第3のコントローラ327は、システム300のうちの1つ以上のデータベースまたは他のデバイスからこのような情報を獲得し、対応する更新を第2の層LB320に提供してもよい。
図4においては、システム300のさまざまなコンポーネント間における実線は、(データ面とも称される)データパケット経路を示し、破線は、(制御面とも称される)構成情報/指示のフローを示し、破断線は、(制御面の一部でもあり得る)フィードバック経路を示す。いくつかの実現例においては、第1の層LB320が、システム300のうちのある位置または対応する第2の層LB325にデータパケットを転送するたびに、第1の層LB325はこの転送をグローバルロードバランシングコントローラ350に報告する。また、第2の層LB325が、システム300のグローバルロードバランシングコントローラ350および/または別のデバイスにデータパケット10の転送を報告してもよい。グローバルロードバランシングコントローラ350は、第1の層LB320によって報告された情報を用いて、システム300のさまざまな位置に関連付けられる重みを更新する。第2の層LB325によって報告される情報は、グローバルロードバランシングコントローラ350によって、または第2の層LB325に関連付けられた位置においてローカルなデバイスによって用いられて、さまざまなアプリケーションインスタンス331に関連付けられた重みを更新する。いくつかの実現例においては、クラスタ330は、そのサーバまたはアプリケーションインスタンス331のステータス情報をシステム300におけるグローバルロードバランシングコントローラ350および/または他のデバイスに提供するように構成され得る。システム300におけるグローバルロードバランシングコントローラ350または別のデバイスは、クラスタ330によって報告された情報を用いて、さまざまなアプリケーションインスタンス331に関連付けられた重みを更新することができる。いくつかの実現例においては、グローバルロードバランシングコントローラ350はまた、リンク輻輳に関するデータをルータおよび/またはネットワークエレメントから取得する。
図5は、2層型ロードバランシングシステム300によって実行される、エニーキャストデータパケットを処理するプロセス500の実現例を説明するフローチャートを示す。プロセス200は、エニーキャストアドレスにアドレス指定されたデータパケット10をエニーキャストノード310によって受信するプロセス(ステージ510)と;受信されたデータパケット10をエニーキャストノード310によって第1の層LB320に転送するプロセス(ステージ520)と;予めサーブされていたフローまたはセッションにデータパケットが関連付けられているかどうかを第1の層LB320によって判断するプロセス(ステージ530)と;予めサーブされていたフローまたはセッションにデータパケット10が関連付けられていると判断される場合、予めサーブされていたデータフローまたはセッションに関連付けられたアプリケーションインスタンスにデータパケット10を転送するプロセス(ステージ540)と;そうでない場合、第1の層LB320によって維持される第1のデータ構造およびデータパケット10のうちの1つ以上のヘッダフィールドに基づいて第2の層LB325を選択するプロセス(ステージ550)と;選択された第2の層LB325にデータパケットを転送するプロセス(ステージ560)と;第2の層LB325によって維持される第2のデータ構造およびデータパケット10のうちの1つ以上のヘッダフィールドに基づいて、選択された第2の層LB325によってアプリケーションインスタンス331を決定するプロセス(ステージ570)と;決定されたアプリケーションインスタンスにデータパケットを転送するプロセス(ステージ580)と;を含む。
プロセス500のステージ510〜540は、(図3および図4に示される)第1の層LB325が(図1に示される)ロードバランサ120の代わりに用いられている点を除いては、図2に関連付けて記載されたプロセス200のステージ210〜240と同様である。また、接続テーブルのチェックが第1の層LB320以外の別のデバイスによって実行され得るので、ステージ530および540は任意である。データパケット10を受信する第1の層LB320は、第1の層LB320によって維持される第1のデータ構造321およびデータパケット10のうちの1つ以上のヘッダフィールドに基づいて第2の層LB325を選択する(ステージ550)。第1のデータ構造321は、システム300における第2の層LB325または対応する位置(たとえばクラスタ330もしくはゾーン)の冗長リストを含む。各々の第2の層LB325または対応する位置が第1のデータ構造321に含まれている頻度は、同じ対応する位置に関連付けられた重み値に依存している。重みは、各々の対応する位置における利用可能な容量、RTTを、各々の対応する位置、別のロードバランシング基準またはそれらの組合せに反映させてもよい。場合によっては、第1の層LB320は、データパケット10のヘッダフィールドを用いてハッシュ値を生成し、生成されたハッシュ値に基づいて第1のデータ構造321から第2の層LB325を選択する。たとえば、第1の層LB320は、第1のデータ構造から選択されるべきエントリのインデックスとして、第1のデータ構造のサイズを法として、生成されたハッシュ値を用いる。第1の層LB320は、次いで、データパケットを、選択された第2の層LB325に、または、選択された位置に関連付けられた第2の層LB325に転送する(ステージ560)。
データパケット10を受信する第2の層LB325は、第2の層LB325によって維持される第2のデータ構造326およびデータパケット10のうちの1つ以上のヘッダフィールドに基づいて、アプリケーションインスタンス331を決定する(ステージ570)。第2のデータ構造326は、アプリケーションインスタンス331の冗長リストを含む。各々のアプリケーションインスタンス331が第2のデータ構造326に含まれている頻度は、アプリケーションインスタンス331に関連付けられた重み値に依存している。重みは、各々の対応するアプリケーションインスタンス331における利用可能な容量、RTTを、各々の対応するアプリケーションインスタンス331、他のロードバランシング基準またはそれらの組合せに反映させてもよい。第2の層LB325は、データパケット10のヘッダフィールドを用いてハッシュ値を生成し、生成されたハッシュ値に基づいて第2のデータ構造326からアプリケーションインスタンス331を決定する。たとえば、第2の層LB325は、第2のデータ構造326から選択されるべきエントリのインデックスとして、第2のデータ構造326のサイズを法として、生成されたハッシュ値を用いる。第2の層LB325は、次いで、決定されたアプリケーションインスタンス331にデータパケット10を転送する(ステージ580)。
図6は、ロードバランサによって用いられる冗長リストを生成するためのプロセス600の実現例を説明するフローチャートを示す。たとえば、エンティティの各々が対応する重み値に関連付けられているリストを想定すると、リストにおけるエンティティの数よりも大きい素数は、生成されるべき冗長リストのサイズとして選択される。プロセス600を実行するプロセッサは、エンティティの所与のリストにおける各々のエンティティについてのオフセット値およびステップ値を選択する(ステージ610)。プロセッサは、次いで、エンティティの所与のリストからエンティティを選択する(ステージ620)。この選択は、エンティティの(名前、名前の部分、識別ストリングなどの)識別の擬似ランダム置換に基づいて行うことができる。プロセッサは、選択されたエンティティについての冗長リストに既に含まれていたエントリの数を、対応する動的なしきい値と比較する(ステージ630)。たとえば、動的なしきい値は、反復回数を乗じた、選択されたエンティティに対応する重みとして規定される。既に含まれているエントリの数が動的なしきい値よりも小さいことが判明すると(ステージ630)、プロセッサは、生成されるべき冗長リストにおけるオフセット値によって示される位置が空であるかどうかをチェックする(ステージ640)。オフセット値によって示される位置が空ではないことが判明した場合、プロセッサは、対応するステップ値でオフセット値をインクリメントし、冗長リストのサイズを法として当該インクリメントされた値を切り捨てることによって、オフセット値を更新する(ステージ650)。プロセッサは、次いで、更新されたオフセット値によって示される位置が空であるかどうかをチェックする(ステージ640)。空の位置が検出されるまで、ステージ650および640が繰返される。いずれの時点においても、プロセスの結果(ステージ640)が空の位置を示す場合、プロセッサは、空の位置において選択されたエンティティに対応するエントリを追加する(ステージ660)。選択されたエンティティについてのエントリが冗長リストに追加される(ステージ660)か、または、選択されたエンティティについての既に追加されたエントリの数が動的なしきい値よりも大きいことが判明した(ステージ630)場合、プロセッサは、さらに、所与のリストにおけるすべてのエンティティが現在の繰返しにおいて処理されてしまっているかどうかをチェックする(ステージ670)。所与のリストにおけるすべてのエンティティが処理されてしまっていない場合、プロセッサは、処理すべき所与のリストから新しいエンティティを選択する(ステージ620)。そうでない場合、プロセッサは、繰返し数をインクリメントし(ステージ680)、次いで、処理すべき所与のリストからエンティティを選択する(ステージ620)。プロセッサは、冗長リストがフルになるまで、図6に示されるステージを繰返す。
プロセス600は、1次元テーブル(たとえば行もしくは列、ツリー、サブツリー、または他のデータ構造)として冗長リストを生成する。所与のリストにおけるエンティティは、アプリケーションインスタンス131もしくは331、ロードバランサ120もしくは325、またはロードバランシングシステム100もしくは300の位置であってもよい。生成された冗長リストにおいては、各々のエンティティが繰返される頻度は同じエンティティに対応する重み値に依存している。冗長リストのサイズが所与のリストにおけるエンティティの総数よりもはるかに大きくなるように、たとえば100倍大きくなるように、選択される場合、エンティティが冗長リストに含まれている頻度は対応する重みにほぼ比例するようになる。生成された冗長リストのサイズが所与のリストにおけるエンティティの数と比べて大きければ大きいほど、頻度と同じエンティティの重みとの間の比例関係がより正確になる。
図7は、図1および図3におけるシステムによって採用されるデータ構造の例を示す。クラスタA(たとえばクラスタ130aまたは330a)の3つのアプリケーションインスタンスA_1、A_2およびA_3、ならびにクラスタB(たとえばクラスタ130bまたは330ba)の3つのアプリケーションインスタンスB_1、B_2およびB_3を考慮すると、図7におけるテーブルの各々の行は、対応するセットの重みに基づいて生成される、(図6に示される)プロセス600において17に等しいサイズを有するサンプル出力を示している。たとえば、第1の行は、各々のアプリケーションインスタンスA_1、A_2およびA_3に関連付けられた重みが1.0に等しく、かつ、アプリケーションインスタンスB_1、B_2およびB_3に関連付けられた重みが0.0に等しくなる出力に対応している。いずれかの行から次の行にまで進むと、アプリケーションインスタンスA_1、A_2およびA_3についての重み値は0.1ずつデクリメントされ、アプリケーションインスタンスB_1、B_2およびB_3についての重み値は0.1ずつインクリメントされる。
アプリケーションインスタンスに関連付けられた重みが図7に示されるテーブルにおいて或る1つの行から次の行へと変化するのが低速であるので、この或る1つ行から次の行までで観察される変化はほんのわずかである。実際には、重みが或る1つの行から次の行へとわずかしか変化しないので、図7のテーブルの列を調べることによって、各々の列にわたってはほんのわずかな変化しか起こらないことが分かるだろう。
図1のクラスタ130aがアプリケーションインスタンスA_1、A_2およびA_3を含み、これらのアプリケーションインスタンスの各々がオーバーフローを経験しているシナリオを検討する。オーバーフロー需要(たとえば20%)は、利用可能な容量を含む次に最も近接するクラスタ(たとえば、アプリケーションインスタンスB_1、B_2およびB_3を含む図1のクラスタ130b)にリダイレクトされることとなる。そのため、図1のクラスタ130aに関連付けられたエニーキャストトラフィックに対して、0.8の重み値はアプリケーションインスタンスA_1、A_2およびA_3の各々に関連付けられ、0.2の重み値は、アプリケーションインスタンスB_1、B_2およびB_3の各々に関連付けられている。このような場合、図7におけるテーブルの第3の行は、図1のクラスタ130aに関連付けられたサブデータ構造のサンプルを表わしている。また、アプリケーションインスタンスB_1、B_2およびB_3がクラスタ130bに到達するエニーキャストトラフィックにサーブするのに十分な帯域幅を有していると想定すると、これらのアプリケーションインスタンスはすべて、図1に示されるクラスタ130bに関連付けられたエニーキャストトラフィックに到達したときに1.0の等しい重みを有することとなる。そのため、図7におけるテーブルの最後の行は、図1のクラスタ130bに関連付けられたサブデータ構造のサンプルを表わしている。
連続する行のいずれかの対を比較すると、或る1つの行から次の行に変化するエントリがほとんどわずかしかないことが観察できる。このような観察は、重み値のわずかな変化(重み値は1つの行から次の行へと±0.1ずつ変化する)がデータ経路に与える影響がほんのわずかであることを示している。小さな重み値に関連付けられた1つのアプリケーションインスタンスを追加または削除することによっても、それぞれの行またはサブデータ構造のエントリに対して与える影響はほんのわずかになるだろう。(図6に示されるプロセス600を用いて)行またはサブデータ構造が生成される方法では、結果として、(図1および図3に示される)それぞれのアプリケーションインスタンス131または331に対する新しい要求の割当てに一貫性が得られる。いくつかの実現例においては、重み値のわずかな変化、および/または、小さな重みに関連付けられたアプリケーションインスタンスの追加/削除により、結果として、データトラフィックの再ルーティング(またはネットワークルータもしくは他のネットワークエレメントにおけるルーティングテーブルの再演算)が行われなくなる。なぜなら、このような変化は、ロードバランシングデータトラフィックにごくわずかな影響しか与えないからからである。
アプリケーションインスタンスが図3のクラスタ330aに関連付けられ、アプリケーションインスタンスB_1、B_2およびB_3が図3のクラスタ330bに関連付けられている、同様のシナリオ(たとえば上述の段落において記載されるのと同じ重みが用いられている)を考慮すると、図7におけるテーブルの第3の行は、図3のクラスタ330aに関連付けられた第2のデータ構造326のサンプルを表わしている。また、図7におけるテーブルの最後の行は、図3のクラスタ330bに関連付けられた第2のデータ構造326のサンプルを表わしている。
本明細書に記載の主題および動作の実現例は、本明細書に開示された構造およびそれらの構造均等物を含むデジタル電子回路、または有形媒体、ファームウェアもしくはハードウェア上で具体化されたコンピュータソフトウェア、またはこれらの1種以上の組合せで実現することができる。本明細書に記載される主題の実現例は、有形媒体上で具体化された1つ以上のコンピュータプログラムとして、すなわち、データ処理装置によって実行されるかまたはデータ処理装置の操作を制御するために、1つ以上のコンピュータ記憶媒体にエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして実装することができる。コンピュータ記憶媒体は、コンピュータ読み取り可能な記憶装置、コンピュータ読み取り可能な記憶基板、ランダムまたはシリアルアクセスメモリアレイもしくは装置、または1つ以上のこれらの装置の組合せであってもよく、その中に含まれてもよい。コンピュータ記憶媒体は、1つ以上の別個の要素または媒体(たとえば、複数のCD、ディスクまたは他の記憶装置)であってもよく、その中に含まれてもよい。コンピュータ記憶媒体は、有形且つ非一時的なものであってもよい。
本明細書に記載の動作は、1つ以上のコンピュータ読み取り可能な記憶装置に記憶されたデータまたは他のソースから受信したデータに従って、データ処理装置によって実行される動作として実現可能である。プロセスフローおよび論理フローは、専用論理回路、たとえばFPGA(field programmable gate array:フィールドプログラマブルゲートアレイ)またはASIC(application specific integrated circuit:特定用途向け集積回路)としても実装され得る装置によって実行可能である。
本明細書は、多くの具体的な実現詳細を記載しているが、これらの詳細は、発明または特許請求の範囲を限定するものとして解釈すべきではなく、特定の発明の特定の実現例に必要な特徴の説明として解釈すべきである。また、本明細書の個別の実現例に記載された特定の特徴は、単一の実現例に組み合わせて実施することができる。逆に、単一の実現例の文脈に記載されたさまざまな特徴は、複数の実現例で別個にまたは実現例の適切な組合せで実施することができる。さらに、上述のとおり特定の組合せで動作するものと記載され最初にこのようにクレームされているにも関わらず、場合によっては、クレームされた組合せに含まれた1つ以上の特徴をその組合せから除去してもよく、クレームされた組合せを別の組合せまたはその変形例に加えてもよい。
用語「または」を言及する場合、「または」を用いて記載されたいずれの用語も、単一のもの、複数のものおよび記載されたすべてのものを指し得るように、包含的であると解釈されるべきである。「第1」、「第2」および「第3」などの用語は、必ずしも順序を指すものではなく、一般に同様または類似の項目または要素を区別するために用いられるに過ぎない。
主題の特定の実現例を記載してきたが、他の実現例も添付の特許請求の範囲内に含まれる。場合によっては、特許請求の範囲に記載された動作は、異なる順序で実行されても、望ましい結果を達成することができる。また、添付の図面に示された工程は、望ましい結果を達成するために、必ずしも図示された特定の順序または順番である必要はない。いくつかの実現例においては、マルチタスクまたは並列処理が利用されてもよい。

Claims (24)

  1. 通信ネットワークにおけるエニーキャストトラフィックをロードバランシングするためのシステムであって、
    第1のセットのロードバランシング(LB)デバイスを含み、前記第1のセットのLBデバイスのうちの各々のLBデバイスは、
    前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされるアプリケーションインスタンスのグループにおけるアプリケーションインスタンスに関連付けられたエントリを含む第1のデータ構造を維持するように構成され、各々のサーブされたアプリケーションインスタンスが前記第1のデータ構造に含まれている頻度は、前記対応するサーブされたアプリケーションインスタンスの容量に関連付けられた重み値を示しており、前記第1のセットのLBデバイスのうちの各々のLBデバイスは、
    エニーキャストアドレスにアドレス指定された前記システムにおいて受信されるデータパケットを受信すると、前記受信されたデータパケットのうちの1つ以上の第1のヘッダフィールドに基づいて第1のハッシュ値を生成し、
    前記第1のデータ構造を用いて、前記生成された第1のハッシュ値に基づいて前記サーブされたアプリケーションインスタンスのうちの1つのアプリケーションインスタンスの仮想インターネットプロトコル(IP)アドレスを識別し、
    前記識別されたアプリケーションインスタンスに前記データパケットを転送するように構成され、前記システムはさらに、
    第2のセットのロードバランシング(LB)デバイスを含み、前記第2のセットのLBデバイスのうちの各々のLBデバイスは、
    前記第1のセットにおけるそれぞれのLBデバイスに関連付けられたエントリを含む第2のデータ構造を維持するように構成され、前記第1のセットのLBデバイスにおける各々のLBデバイスが前記第2のデータ構造に含まれている頻度は前記第1のセットのうち対応するLBデバイスに関連付けられた重み値を示しており、前記第2のセットのLBデバイスのうちの各々のLBデバイスはさらに、
    前記エニーキャストアドレスにアドレス指定された前記システムにおいて受信されるデータパケットを受信すると、前記受信されたデータパケットのうちの1つ以上の第2のヘッダフィールドに基づいて第2のハッシュ値を生成し、
    前記生成された第2のハッシュ値に基づいて、前記第2のデータ構造を用いて、前記第1のセットのLBデバイスのうちのLBデバイスを識別し、
    前記第1のセットのうちの前記識別されたLBデバイスに前記データパケットを転送するように構成され、前記システムはさらに、
    前記エニーキャストアドレスに関連付けられた複数のエニーキャストノードを含み、前記複数のエニーキャストノードは、
    クライアントデバイスから、前記複数のエニーキャストノードの第1のエニーキャストノードで、前記エニーキャストアドレスにアドレス指定された第1のデータパケットを受信すると、前記第2のセットのLBデバイスのうちのLBデバイスに前記第1のデータパケットを転送するように構成され、
    前記クライアントデバイスから、前記複数のエニーキャストノードの第2のエニーキャストノードで、前記エニーキャストアドレスにアドレス指定された第2のデータパケットを受信すると、前記第2のセットのLBデバイスのうちのLBデバイスに前記第2のデータパケットを転送するように構成されている、システム。
  2. 前記第2のセットのLBデバイスのうちの前記LBデバイスはさらに、前記第1のセットのLBデバイスのうちの各々のLBデバイスに転送されたトラフィックロードをグローバルLBエレメントに報告するように構成される、請求項1に記載のシステム。
  3. 前記グローバルLBエレメントは、前記第2のセットのLBデバイスのうちのLBデバイスから前記第1のセットのLBデバイスのうちのLBデバイスに転送されたトラフィックロードについての報告が受信されたことに少なくとも部分的に基づいて、前記第1のセットのLBデバイスのうちのLBデバイスに関連付けられた重みを生成するように構成される、請求項2に記載のシステム。
  4. 前記第1のセットのうちの対応するLBデバイスに関連付けられた前記重み値は、前記第1のセットのうちの前記対応するLBデバイスによってサーブされる処理装置のグループの容量を示している、請求項1〜請求項3のいずれか1項に記載のシステム。
  5. 前記アプリケーションインスタンスは、アプリケーションサーバ、コンテンツサーバおよび仮想マシンのうち少なくとも1つに関連付けられている、請求項1〜請求項4のいずれか1項に記載のシステム。
  6. 前記第2のセットのLBデバイスのうちの各々のLBデバイスはさらに、
    前記第1のセットのLBデバイスにおける1つ以上のLBデバイスについての重み値を受信し、
    前記第1のセットのLBデバイスにおける前記1つ以上のLBデバイスについての前記受信された重み値に基づいて前記第2のデータ構造を生成するように構成される、請求項1〜請求項5のいずれか1項に記載のシステム。
  7. 前記第2のデータ構造を生成する際に、前記第2のセットのLBデバイスのうちの各々のLBデバイスはさらに、
    前記第1のセットのLBデバイスのうちの各々のLBデバイスについての空データ構造位置の数を選択するように構成され、選択された空データ構造位置の前記数は、前記第1のセットのLBデバイスのうちの前記LBデバイスに対応する前記重み値に基づいて決定され、前記第2のセットのLBデバイスのうちの各々のLBデバイスはさらに、
    前記選択された空データ構造位置の各々において前記第1のセットのLBデバイスのうちの前記LBデバイスのIPアドレスを挿入するように構成される、請求項6に記載のシステム。
  8. 前記第2のセットのLBデバイスのうちの各々のLBデバイスはさらに、前記第1のセットのLBデバイスのうちの前記LBデバイスに関連付けられたオフセット値に基づいて、前記第1のセットのLBデバイスのうちの各々のLBデバイスについての空データ構造位置の前記数を選択するように構成される、請求項7に記載のシステム。
  9. 前記第1のセットのLBデバイスのうちの各々のLBデバイスはさらに、
    前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされたアプリケーションインスタンスの前記グループにおける各々のアプリケーションインスタンスについての重み値を受信し、
    前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされた前記グループにおけるアプリケーションインスタンスについての前記受信された重み値に基づいて前記第1のデータ構造を生成するように構成される、請求項1〜請求項8のいずれか1項に記載のシステム。
  10. 前記第1のデータ構造を生成する際に、前記第1のセットのLBデバイスのうちの各々のLBデバイスはさらに、
    前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされた前記グループのうちの各々のアプリケーションインスタンスについての空データ構造位置の数を選択し、選択された空データ構造位置の前記数は、前記アプリケーションインスタンスに対応する前記重み値に基づいて決定され、前記第1のセットのLBデバイスのうちの各々のLBデバイスはさらに、
    前記選択された空データ構造位置の各々において前記アプリケーションインスタンスの仮想IPアドレスを挿入するように構成される、請求項9に記載のシステム。
  11. 前記第1のセットのLBデバイスのうちの各々のLBデバイスはさらに、前記アプリケーションインスタンスに関連付けられたオフセット値に基づいて、前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされた前記グループのうちの各々のアプリケーションインスタンスについての空データ構造位置の前記数を選択するように構成される、請求項10に記載のシステム。
  12. データトラフィックロードバランシングのための方法であって、
    第1のセットのロードバランシング(LB)デバイスのうちの各々のLBデバイスによって第1のデータ構造を維持するステップを含み、前記第1のデータ構造は、前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされたアプリケーションインスタンスのグループにおけるアプリケーションインスタンスに関連付けられたエントリを含み、各々のサーブされたアプリケーションインスタンスが前記第1のデータ構造に含まれている頻度は、対応するサーブされたアプリケーションインスタンスの容量に関連付けられた重み値を示しており、前記方法はさらに、
    エニーキャストアドレスにアドレス指定されたLBシステムにおいて受信されるデータパケットを受信すると、前記第1のセットのLBデバイスのうちのLBデバイスのそれぞれが、前記受信されたデータパケットのうちの1つ以上の第1のヘッダフィールドに基づいて第1のハッシュ値を生成するステップと、
    前記第1のデータ構造を用いて、前記第1のセットのLBデバイスのうちのLBデバイスのそれぞれが、前記生成された第1のハッシュ値に基づいて前記サーブされたアプリケーションインスタンスのうちの1つのアプリケーションインスタンスの仮想インターネットプロトコル(IP)アドレスを識別するステップと、
    前記第1のセットのLBデバイスのうちのLBデバイスのそれぞれが、前記識別されたアプリケーションインスタンスに前記データパケットを転送するステップと、
    第2のセットのLBデバイスのうちのLBデバイスによって第2のデータ構造を維持するステップとを含み、前記第2のデータ構造は前記第1のセットにおけるそれぞれのLBデバイスに関連付けられたエントリを含み、前記第1のセットのLBデバイスにおける各々のLBデバイスが前記第2のデータ構造に含まれている頻度は、前記第1のセットの対応するLBデバイスに関連付けられた重み値を示しており、前記方法はさらに、
    前記エニーキャストアドレスにアドレス指定された前記LBシステムにおいて受信されるデータパケットを受信すると、前記第2のセットのLBデバイスのうちのLBデバイスが、前記受信されたデータパケットのうちの1つ以上の第2のヘッダフィールドに基づいて第2のハッシュ値を生成するステップを含み、前記データパケットは、前記エニーキャストアドレスにアドレス指定された前記LBシステムにおいて受信され、前記方法はさらに、
    前記生成された第2のハッシュ値に基づいて、前記第2のセットのLBデバイスのうちのLBデバイスが、前記第2のデータ構造を用いて、第1のセットのLBデバイスのうちのLBデバイスを識別するステップと、
    前記第2のセットのLBデバイスのうちのLBデバイスが、前記第1のセットのLBデバイスのうちの前記識別されたLBデバイスに前記データパケットを転送するステップと、
    クライアントデバイスから、複数のエニーキャストノードの第1のエニーキャストノードで、前記エニーキャストアドレスにアドレス指定された第1のデータパケットを受信すると、前記第2のセットのLBデバイスのうちのLBデバイスに前記第1のデータパケットを転送するするステップと、
    前記クライアントデバイスから、前記複数のエニーキャストノードの第2のエニーキャストノードで、前記エニーキャストアドレスにアドレス指定された第2のデータパケットを受信すると、前記第2のセットのLBデバイスのうちのLBデバイスに前記第2のデータパケットを転送するステップとを含む、方法。
  13. 前記第1のセットのLBデバイスのうちの各々のLBデバイスに転送されたトラフィックロードを、前記第2のセットのLBデバイスのうちの前記LBデバイスによって、グローバルLBエレメントに報告するステップをさらに含む、請求項12に記載の方法。
  14. 前記第2のセットのLBデバイスのうちのLBデバイスから前記第1のセットのLBデバイスのうちのLBデバイスに転送されたトラフィックロードについての報告が受信されたことに少なくとも部分的に基づいて、前記第1のセットのLBデバイスのうちのLBデバイスに関連付けられた重みを前記グローバルLBエレメントによって生成するステップをさらに含む、請求項13に記載の方法。
  15. 前記第1のセットのLBデバイスの前記対応するLBデバイスに関連付けられた前記重み値は、前記第1のセットのLBデバイスのうちの前記対応するLBデバイスによってサーブされたアプリケーションインスタンスの前記グループの容量を示している、請求項12〜請求項14のいずれか1項に記載の方法。
  16. 前記アプリケーションインスタンスは、アプリケーションサーバ、コンテンツサーバおよび仮想マシンのうちの少なくとも1つに関連付けられている、請求項12〜請求項15のいずれか1項に記載の方法。
  17. 前記第2のセットのLBデバイスのうちの前記LBデバイスによって、前記第1のセットのLBデバイスにおける1つ以上のLBデバイスについての重み値を受信するステップと、
    前記第1のセットのLBデバイスにおける前記1つ以上のLBデバイスについての前記受信された重み値に基づいて前記第2のデータ構造を生成するステップとをさらに含む、請求項12〜請求項16のいずれか1項に記載の方法。
  18. 前記第2のデータ構造を生成するステップは、
    前記第1のセットのLBデバイスのうちの各々のLBデバイスについての空データ構造位置の数を選択するステップを含み、選択された空データ構造位置の前記数は、前記第1のセットのLBデバイスのうちの前記LBデバイスに対応する前記重み値に基づいて決定され、前記第2のデータ構造を生成するステップはさらに、
    前記選択された空データ構造位置の各々において前記第1のセットの前記LBデバイスのIPアドレスを挿入するステップを含む、請求項17に記載の方法。
  19. 前記第1のセットのLBデバイスのうちの各々のLBデバイスについての空データ構造位置の数を選択するステップは、前記第1のセットのLBデバイスのうちの前記LBデバイスに関連付けられたオフセット値に基づいて空データ構造位置の前記数を選択するステップを含む、請求項18に記載の方法。
  20. 前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされたアプリケーションインスタンスの前記グループにおける各々のアプリケーションインスタンスについての重み値を、前記第1のセットのうちの前記LBデバイスによって受信するステップと、
    前記受信された重み値に基づいて前記第1のデータ構造を生成するステップとをさらに含む、請求項12〜請求項19のいずれか1項に記載の方法。
  21. 前記第1のデータ構造を生成するステップは、
    前記第1のセットのLBデバイスのうちの前記LBデバイスによってサーブされた前記グループのうちの各々のアプリケーションインスタンスについての空データ構造位置の数を選択するステップを含み、選択された空データ構造位置の前記数は、前記アプリケーションインスタンスに対応する前記重み値に基づいて決定され、前記第1のデータ構造を生成するステップはさらに、
    前記選択された空データ構造位置の各々において前記アプリケーションインスタンスの仮想IPアドレスを挿入するステップを含む、請求項20に記載の方法。
  22. 各々のアプリケーションインスタンスについての空データ構造位置の数を選択するステップは、前記アプリケーションインスタンスに関連付けられたオフセット値に基づいて空データ構造位置の前記数を選択するステップを含む、請求項21に記載の方法。
  23. 請求項12〜請求項22のいずれか1項に記載の方法を実現するために、コンピュータに、前記第1のセットのLBデバイスのうちのLBデバイスによって実行される処理を実行させる、コンピュータプログラム。
  24. 請求項12〜請求項22のいずれか1項に記載の方法を実現するために、コンピュータに、前記第2のセットのLBデバイスのうちのLBデバイスによって実行される処理を実行させる、コンピュータプログラム。
JP2016565152A 2014-05-13 2015-05-11 エニーキャストデータトラフィックをロードバランシングするための方法、システム、および、コンピュータプログラム Active JP6355759B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461992623P 2014-05-13 2014-05-13
US61/992,623 2014-05-13
US14/495,683 2014-09-24
US14/495,683 US9560124B2 (en) 2014-05-13 2014-09-24 Method and system for load balancing anycast data traffic
PCT/US2015/030235 WO2015175442A1 (en) 2014-05-13 2015-05-11 Method and system for load balancing anycast data traffic

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018111793A Division JP6578416B2 (ja) 2014-05-13 2018-06-12 エニーキャストデータトラフィックをロードバランシングするための方法およびシステム

Publications (2)

Publication Number Publication Date
JP2017516399A JP2017516399A (ja) 2017-06-15
JP6355759B2 true JP6355759B2 (ja) 2018-07-11

Family

ID=53276271

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016565152A Active JP6355759B2 (ja) 2014-05-13 2015-05-11 エニーキャストデータトラフィックをロードバランシングするための方法、システム、および、コンピュータプログラム
JP2018111793A Active JP6578416B2 (ja) 2014-05-13 2018-06-12 エニーキャストデータトラフィックをロードバランシングするための方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018111793A Active JP6578416B2 (ja) 2014-05-13 2018-06-12 エニーキャストデータトラフィックをロードバランシングするための方法およびシステム

Country Status (7)

Country Link
US (2) US9560124B2 (ja)
EP (2) EP3328038B1 (ja)
JP (2) JP6355759B2 (ja)
KR (2) KR102146476B1 (ja)
CN (2) CN110365781B (ja)
DK (2) DK3143753T3 (ja)
WO (1) WO2015175442A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220116448A1 (en) * 2017-07-03 2022-04-14 Pure Storage, Inc. Load Balancing Reset Packets

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170006082A1 (en) * 2014-06-03 2017-01-05 Nimit Shishodia Software Defined Networking (SDN) Orchestration by Abstraction
US9923959B2 (en) * 2014-06-05 2018-03-20 Microsoft Technology Licensing, Llc Load balancing with layered edge servers
JP2016081119A (ja) * 2014-10-10 2016-05-16 富士通株式会社 情報処理システム、情報処理システムの制御方法および制御装置の制御プログラム
US10313271B2 (en) 2016-03-16 2019-06-04 At&T Intellectual Property I, L.P. Providing and using a distributed forwarding service
US10574741B2 (en) 2016-04-18 2020-02-25 Nokia Technologies Oy Multi-level load balancing
US10122647B2 (en) * 2016-06-20 2018-11-06 Microsoft Technology Licensing, Llc Low-redistribution load balancing
CN108259334A (zh) 2017-01-25 2018-07-06 新华三技术有限公司 一种等价路由表项建立方法和装置
US10536517B2 (en) * 2017-03-16 2020-01-14 A10 Networks, Inc. Distributed global server load balancing controllers sharing service delay time
CN107864101A (zh) * 2017-12-26 2018-03-30 杭州迪普科技股份有限公司 负载均衡方法和装置
US10462233B2 (en) * 2018-01-23 2019-10-29 Charter Communications Operating, Llc Protocol for anycast based discovery of local resources
CN108768878A (zh) * 2018-06-06 2018-11-06 北京奇艺世纪科技有限公司 一种负载均衡系统、方法、装置及负载均衡设备
CN108769271A (zh) * 2018-08-20 2018-11-06 北京百度网讯科技有限公司 负载均衡的方法、装置、存储介质和终端设备
US10645008B1 (en) * 2018-12-06 2020-05-05 Verizon Digital Media Services Inc. Predictive Anycast traffic shaping
US11005929B1 (en) 2019-01-30 2021-05-11 Cisco Technology, Inc. Dynamic data center load balancing using border gateway protocol
US10887380B2 (en) * 2019-04-01 2021-01-05 Google Llc Multi-cluster ingress
US11757982B2 (en) 2020-08-05 2023-09-12 Avesha, Inc. Performing load balancing self adjustment within an application environment
US20220350675A1 (en) 2021-05-03 2022-11-03 Avesha, Inc. Distributed computing system with multi tenancy based on application slices
CN113655994B (zh) * 2021-10-21 2022-02-18 北京壁仞科技开发有限公司 多核处理器的电流变化斜率控制方法、控制设备和介质
US20240146657A1 (en) * 2022-10-31 2024-05-02 Telefonaktiebolaget Lm Ericsson (Publ) Reducing Network Congestion Using a Load Balancer
US11936560B1 (en) * 2023-05-09 2024-03-19 The Adt Security Corporation Systems and methods for data flow between mobile applications and customer premises equipment, using a consistent server hash

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3369445B2 (ja) * 1997-09-22 2003-01-20 富士通株式会社 ネットワークサービスサーバ負荷調整装置、方法および記録媒体
JP3898498B2 (ja) * 2001-12-06 2007-03-28 富士通株式会社 サーバ負荷分散システム
US7355977B1 (en) * 2002-08-16 2008-04-08 F5 Networks, Inc. Method and system for a weighted allocation table
US20050195834A1 (en) * 2003-03-31 2005-09-08 Shunsuke Kikuchi Load distribution system
JPWO2004088940A1 (ja) * 2003-03-31 2006-07-06 富士通株式会社 負荷分散システム
US7270869B2 (en) 2003-07-25 2007-09-18 Fujifilm Corporation Image-recording material, process for producing the same and process for forming image
JP2005092862A (ja) * 2003-08-11 2005-04-07 Hitachi Ltd 負荷分散方法及びクライアント・サーバシステム
US20060064478A1 (en) * 2004-05-03 2006-03-23 Level 3 Communications, Inc. Geo-locating load balancing
KR100645041B1 (ko) 2004-07-12 2006-11-10 삼성전자주식회사 엠아이엠 캐패시터를 갖는 반도체 소자 및 그 형성 방법
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
JP2006227963A (ja) * 2005-02-18 2006-08-31 Fujitsu Ltd 多段負荷分散装置、方法及びプログラム
US20090172192A1 (en) * 2007-12-28 2009-07-02 Christian Michael F Mapless Global Traffic Load Balancing Via Anycast
CN101404616A (zh) * 2008-11-04 2009-04-08 北京大学深圳研究生院 一种负载均衡分组交换结构及其构造方法
US8416692B2 (en) * 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US9176784B2 (en) * 2009-12-11 2015-11-03 Verizon Patent And Licensing Inc. Load balancing
JP5648926B2 (ja) * 2010-02-01 2015-01-07 日本電気株式会社 ネットワークシステム、コントローラ、ネットワーク制御方法
US8755283B2 (en) * 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
CN102404229B (zh) * 2011-12-14 2013-03-13 华为技术有限公司 负载均衡系统、装置及方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220116448A1 (en) * 2017-07-03 2022-04-14 Pure Storage, Inc. Load Balancing Reset Packets
US11689610B2 (en) * 2017-07-03 2023-06-27 Pure Storage, Inc. Load balancing reset packets

Also Published As

Publication number Publication date
KR20170081717A (ko) 2017-07-12
JP2018164285A (ja) 2018-10-18
US20170099346A1 (en) 2017-04-06
EP3143753B1 (en) 2018-08-29
DK3328038T3 (da) 2020-06-29
EP3328038B1 (en) 2020-04-15
EP3328038A1 (en) 2018-05-30
KR101754408B1 (ko) 2017-07-19
CN110365781A (zh) 2019-10-22
US20150334179A1 (en) 2015-11-19
US9560124B2 (en) 2017-01-31
KR102146476B1 (ko) 2020-08-20
CN106416197A (zh) 2017-02-15
CN106416197B (zh) 2019-07-30
JP2017516399A (ja) 2017-06-15
KR20160140995A (ko) 2016-12-07
EP3143753A1 (en) 2017-03-22
DK3143753T3 (en) 2018-12-03
WO2015175442A1 (en) 2015-11-19
JP6578416B2 (ja) 2019-09-18
US9998529B2 (en) 2018-06-12
CN110365781B (zh) 2020-11-13

Similar Documents

Publication Publication Date Title
JP6578416B2 (ja) エニーキャストデータトラフィックをロードバランシングするための方法およびシステム
JP6526848B2 (ja) 分散型ロード・バランサでの多重パス経路指定
EP3100438B1 (en) An anycast based, wide area distributed mapping and load balancing system
US11483231B2 (en) Context-aware path computation and selection
US8825867B2 (en) Two level packet distribution with stateless first level packet distribution to a group of servers and stateful second level packet distribution to a server within the group
JP2019523507A (ja) フォールトトレラントマイクロサービス環境におけるステートレス処理のシステムおよび方法
CN103401799A (zh) 负载均衡的实现方法和装置
US10033805B1 (en) Spanning tree approach for global load balancing
US10447585B2 (en) Programmable and low latency switch fabric for scale-out router
US7711780B1 (en) Method for distributed end-to-end dynamic horizontal scalability
WO2020107768A1 (en) Collaborative in-network name-to-locator resolution support for information centric networking
US11770338B2 (en) Increasing multi-path size using hierarchical forwarding equivalent classes
CN117099356A (zh) 实例-仿射业务调度
KR20140115155A (ko) 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180515

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180612

R150 Certificate of patent or registration of utility model

Ref document number: 6355759

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250