JP2014504484A - ロードバランサーコンポーネント間の状態の同期 - Google Patents

ロードバランサーコンポーネント間の状態の同期 Download PDF

Info

Publication number
JP2014504484A
JP2014504484A JP2013544852A JP2013544852A JP2014504484A JP 2014504484 A JP2014504484 A JP 2014504484A JP 2013544852 A JP2013544852 A JP 2013544852A JP 2013544852 A JP2013544852 A JP 2013544852A JP 2014504484 A JP2014504484 A JP 2014504484A
Authority
JP
Japan
Prior art keywords
load balancer
data flow
destination host
owner
multiplexer
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.)
Granted
Application number
JP2013544852A
Other languages
English (en)
Other versions
JP5889914B2 (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014504484A publication Critical patent/JP2014504484A/ja
Application granted granted Critical
Publication of JP5889914B2 publication Critical patent/JP5889914B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

本発明は、ロードバランサーコンポーネント間で状態を同期する方法、システム、およびコンピュータープログラム製品に及ぶ。本発明の実施形態は、新たな接続をどのように負荷分散するべきかを決定する一貫性のあるハッシュアルゴリズムを使用するロードバランサーを含む。一貫性のあるハッシュアルゴリズムの使用により、ロードバランサーが、定常状態において状態情報を把握しない方法で動作することが可能になる。ロードバランサーは、それが必要であれば、即ち、例えば、宛先ホスト構成における変更を検出するときに、着信パケットに対するフロー状態の情報(所与のフローの宛先アドレス)の保持を開始する。状態情報を、ロードバランサー間で決定論的に共有し、それによって、所与のフローに対してどのロードバランサーが権限を有するか(例えば、オーナーロードバランサー)を知らせるようにする。各ロードバランサーは、権限のあるロードバランサーに到達して、ローカルに判定することができないフローについて理解することができる。

Description

本発明は、ロードバランサーコンポーネント間で状態を同期する方法、システム、およびコンピュータープログラム製品に関する。
コンピューターシステムおよび関連技術は、社会のあらゆる面に影響を及ぼしている。実際、コンピューターシステムの情報を処理する能力は、我々の生活や仕事のやり方を一変させた。コンピューターシステムは、コンピューターシステムが出現する前は手動で行っていた多くのタスク(例えば、文書処理、スケジューリング、会計など)を、今では当たり前に実行する。最近では、コンピューターシステムは、互いにおよび他の電子デバイスに結合されて、コンピューターシステムおよび他の電子デバイスが電子データを転送することができる有線コンピューターネットワークと無線コンピューターネットワークとの両方を形成している。したがって、多くのコンピューティングタスクの性能は、いくつかの異なるコンピューターシステムおよび/またはいくつかの異なるコンピューティング環境に分散される。
分散コンピューティングシステムにおいて、処理負荷をいくつかのコンピューターシステムで共有するのに分散ロードバランサーを使用することが多い。例えば、複数のロードバランサーを使用して、複数の処理エンドポイントを宛先とする外部通信を受信することができる。各ロードバランサーは、同一の発信元からのすべての外部通信が、同一の処理エンドポイントに向けられることを保証する、ある機構を有する。
ロードバランサーにとって、外部通信の宛先(例えば、処理エンドポイントへ)を正確に決定するために、ロードバランサーは、互いに状態を共有する。例えば、あるロードバランサーにおける特定の発信元に対する通信の決定を、他のロードバランサーに同期することができる。その同期した状態に基づいて、いずれのロードバランサーも、その後、特定の発信元から同一の処理エンドポイントに通信を送信することに関して正確な決定を行うことができる。
残念ながら、複数のロードバランサー間で同期した状態を維持するためには、複数のロードバランサー間でかなりのデータ量を交換する必要があることが多い。その結果、状態をロードバランサー間で同期することがボトルネックとなり、およびロードバランサーのスケーラビリティを制限する。
本発明は、ロードバランサーコンポーネント間で状態を同期する方法、システム、およびコンピュータープログラム製品に及ぶ。いくつかの実施形態において、ロードバランサーは、ルーターからパケットを受信する。パケットは、ワイドエリアネットワーク上のソースを特定するソース電子アドレス情報と、仮想電子アドレスを含む宛先電子アドレス情報とを含む。ロードバランサーは、ソース電子アドレス情報および宛先電子アドレス情報からの既存のデータフローに対するデータフロー識別子を生成するアルゴリズムを使用する。ロードバランサーは、パケットが既存のデータフローに対するものであると判定する。
ロードバランサーは、そのロードバランサーが、複数の宛先ホストの中から既存のデータフローに対応する宛先ホストを特定するのに十分な情報が不足していると判定する。このことは、ロードバランサーが、既存のデータフローを複数の宛先ホストにうちの1つの宛先ホストにマッピングする、キャッシュした状態を有さないことを含む。
その判定に応答して、ロードバランサーは、既存のデータフローのオーナーとして指定されたオーナーロードバランサーを特定する。また、その判定に応答して、ロードバランサーは、データフローの状態情報に対するリクエストを、オーナーロードバランサーに送信する。ロードバランサーは、オーナーロードバランサーから状態情報を受信する。状態情報は、既存のデータフローに対応する宛先ホストを特定する。ロードバランサーは、受信した状態情報をキャッシュする。
このデータフローにおける後続パケット上で、ロードバランサーは、データフローの継続を示すメッセージを、オーナーロードバランサーに返信する。この継続メッセージを、アイドル状態のタイムアウト間隔毎に一回のみ送信する必要がある。アイドル状態のタイムアウト間隔は、データフローが、いかなるパケットがなくとも、どのくらいの時間同一の宛先ホストへのマッピングを保持するかを判定する。
ロードバランサーは、受信したパケットが既存のデータフローに対するものであると判定する。ロードバランサーは、そのロードバランサーが既存のデータフローのオーナーではないと判定する。ロードバランサーは、そのロードバランサーが既存のデータフローに対するキャッシュした状態を有すると判定する。キャッシュした状態は、既存のデータフローを、複数の宛先ホストのうちの1つの宛先ホストにマッピングする。ロードバランサーは、既存のデータフローにマッピングされた宛先ホストに、受信したパケットを送信する。ロードバランサーは、データフロー継続メッセージをオーナーロードバランサーに送信する必要があるかどうかを判定する。ロードバランサーは、キャッシュした状態をオーナーロードバランサーに送信する。
本概要は、以下の発明を実施するための形態でさらに説明する概念の選択を簡易な形式で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴または不可欠な特徴を特定することを意図せず、特許請求される主題の範囲を判定する際に補助として用いられることも意図しない。
本発明の追加的な特徴および利点は、後続の説明に記載され、および一部においては、その説明から明白であろうし、または本発明を実施することによって理解され得る。本発明の特徴および利点を、特に添付の特許請求の範囲において指摘される機器および組み合わせによって実現および取得することができる。本発明のこれらと他の特徴は、以下の説明および添付の特許請求の範囲からさらに十分に明白になるであろうし、または以下に記載されるような発明を実施することによって理解され得る。
本発明の上述したならびに他の利点および特徴を得ることができる方法を説明するために、上記で簡潔に説明した本発明のより詳細な説明は、添付図面で示される特定の実施形態を参照することによって与えられる。これらの図面は、本発明の典型的な実施形態を表しているにすぎず、従って、本発明の範囲を限定するものと見なすべきではないことを理解の上、本発明を、添付図面の使用を通じて追加的な特定性および詳細によって説明する。
ロードバランサーコンポーネント間で状態を同期することを容易にする、例示的なコンピューターアーキテクチャーを示す。 ロードバランサー間で状態を共有する例示的な方法のフローチャートを示す。 ロードバランサー間で状態を共有する例示的な方法のフローチャートを示す。 マルチプレクサー間で状態を共有する例示的なコンピューターアーキテクチャーを示す。 マルチプレクサー間で状態を共有する例示的なコンピューターアーキテクチャーを示す。 マルチプレクサー間で状態を共有する例示的なコンピューターアーキテクチャーを示す。 マルチプレクサー間で状態を共有する例示的なコンピューターアーキテクチャーを示す。 データフローの宛先ホストへのマッピングを維持する例示的なコンピューターアーキテクチャを示す。 データフローの宛先ホストへのマッピングを維持する例示的なコンピューターアーキテクチャを示す。 データフローの宛先ホストへのマッピングを維持する例示的なコンピューターアーキテクチャを示す。 データフローの宛先ホストへのマッピングを維持する例示的なコンピューターアーキテクチャを示す。 データフローのオーナーマルチプレクサーへのマッピングを維持する例示的なコンピューターアーキテクチャーを示す。 データフローのオーナーマルチプレクサーへのマッピングを維持する例示的なコンピューターアーキテクチャーを示す。
本発明は、ロードバランサーコンポーネント間で状態を同期する方法、システム、およびコンピュータープログラム製品に及ぶ。いくつかの実施形態において、ロードバランサーは、ルーターからパケットを受信する。パケットは、ワイドエリアネットワーク上のソースを特定するソース電子アドレス情報と、仮想電子アドレスを含む宛先電子アドレス情報とを含む。ロードバランサーは、ソース電子アドレス情報および宛先電子アドレス情報からの既存のデータフローに対するデータフロー識別子を生成するアルゴリズムを使用する。ロードバランサーは、パケットが既存のデータフローに対するものであると判定する。
ロードバランサーは、そのロードバランサーが、複数の宛先ホストの中から既存のデータフローに対応する宛先ホストを特定するのに十分な情報が不足していると判定する。このことは、ロードバランサーが、既存のデータフローを複数の宛先ホストのうちの1つの宛先ホストにマッピングする、キャッシュした状態を有さないことを含む。
その判定に応答して、ロードバランサーは、既存のデータフローのオーナーとして指定されたオーナーロードバランサーを特定する。また、その判定に応答して、ロードバランサーは、データフローの状態情報に対するリクエストを、オーナーロードバランサーに送信する。ロードバランサーは、オーナーロードバランサーから状態情報を受信する。状態情報は、既存のデータフローに対応する宛先ホストを特定する。ロードバランサーは、受信した状態情報をキャッシュする。
このデータフローにおける後続パケット上で、ロードバランサーは、データフローの継続を示すメッセージを、オーナーロードバランサーに返信する。この継続メッセージを、アイドル状態のタイムアウト間隔毎に一回のみ送信する必要がある。アイドル状態のタイムアウト間隔は、データフローが、いかなるパケットがなくとも、どのくらいの時間同一の宛先ホストへのマッピングを保持するかを判定する。
ロードバランサーは、受信したパケットが既存のデータフローに対するものであると判定する。ロードバランサーは、そのロードバランサーが既存のデータフローのオーナーではないと判定する。ロードバランサーは、そのロードバランサーが既存のデータフローに対するキャッシュした状態を有すると判定する。キャッシュした状態は、既存のデータフローを、複数の宛先ホストのうちの1つの宛先ホストにマッピングする。ロードバランサーは、既存のデータフローにマッピングされた宛先ホストに、受信したパケットを送信する。ロードバランサーは、データフロー継続メッセージをオーナーロードバランサーに送信する必要があるかどうかを判定する。ロードバランサーは、キャッシュした状態をオーナーロードバランサーに送信する。
本発明の実施形態は、以下でより詳細に説明するように、例えば、1つまたは複数のプロセッサーおよびシステムメモリーなどの、コンピューターハードウェアを含む専用コンピューターまたは汎用コンピューターを備えてもよく、または利用してもよい。本発明の範囲内の実施形態は、コンピューター実行可能命令および/もしくはデータ構造を伝送し、または記憶するための物理的および他のコンピューター可読媒体も含む。このようなコンピューター可読媒体は、汎用コンピューターシステムまたは専用コンピューターシステムによってアクセスすることができる、任意の利用可能な媒体とすることができる。コンピューター実行可能命令を記憶するコンピューター可読媒体は、物理的記憶媒体である。コンピューター実行可能命令を伝送するコンピューター可読媒体は、伝送媒体である。したがって、例として、本発明の実施形態は、少なくとも2つの明確に異なる種類のコンピューター可読媒体である、コンピューター記憶媒体(デバイス)と伝送媒体とを備えるが、これらに限定されない。
コンピューター記憶媒体(デバイス)は、RAM、ROM、EEPROM、CD−ROM、DVD、もしくは他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望のプログラムコード手段をコンピューター実行可能命令またはデータ構造の形式で記憶するのに使用することができ、および汎用コンピューターもしくは専用コンピューターによってアクセスすることができるその他の媒体を含む。
「ネットワーク」を、電子データをコンピューターシステム、モジュールおよび/または他の電子デバイスの間で運搬することを可能にする、1つまたは複数のデータリンクとして定義する。情報がネットワークまたは別の通信接続(有線、無線、または有線もしくは無線の組み合わせのいずれか)上でコンピューターに転送または提供されるときに、コンピューターは適切に、その接続を伝送媒体と見なす。伝送媒体は、所望のプログラムコード手段を、コンピューター実行可能命令もしくはデータ構造の形式で伝送するのに使用することができ、および汎用コンピューターもしくは専用コンピューターによってアクセスすることができるネットワークおよび/またはデータリンクを含むことができる。上記の組み合わせもコンピューター可読媒体の範囲内に含まれる。
さらに、さまざまなコンピューターシステムコンポーネントに到達すると、コンピューター実行可能命令またはデータ構造の形式におけるプログラムコード手段を、伝送媒体からコンピューター記憶媒体(デバイス)に(またはその逆)自動的に転送することができる。例えば、ネットワークまたはデータリンク上で受信されるコンピューター実行可能命令またはデータ構造を、ネットワークインタフェースモジュール(例えば、「NIC」)内のRAMにバッファリングし、およびそれから最終的に、コンピューターシステムRAMおよび/またはコンピューターシステムにおける不揮発性コンピューター記憶媒体(デバイス)に転送することができる。したがって、コンピューター記憶媒体(デバイス)をコンピューターシステムコンポーネントに含めることができ、その記憶媒体も伝送媒体を利用する(あるいは主として利用することさえできる)ことができることを理解されたい。
コンピューター実行可能命令は、例えば、プロセッサーで実行されるときに、汎用コンピューター、専用コンピューター、または専用処理デバイスに、ある機能もしくは機能グループを実行させる命令およびデータを備える。コンピューター実行可能命令は、バイナリー命令であってもよく、アセンブリ言語などの中間フォーマット命令であってもよく、あるいはソースコードであってもよい。発明の主題を、構造的特徴および/または方法論的動作に特有の言語で説明しているが、添付の特許請求の範囲で定義された発明の主題は、必ずしも上記説明した特徴または動作に限定されないことを理解されたい。むしろ、説明する特徴および動作を、特許請求の範囲を実装する例示的な形式として開示する。
本発明を、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサー、ハンドヘルドデバイス、マルチプロセッサーシステム、マイクロプロセッサーベースまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピューター、メインフレームコンピューター、モバイル電話、PDA、ページャー、ルーター、およびスイッチなどを含む、多くの種類のコンピューターシステム構成を有するネットワークコンピューティング環境において実施してもよいことが、当業者には認識されよう。本発明を、分散システム環境において実施してもよく、当該分散システム環境では、ローカルコンピューターシステムおよびリモートコンピューターシステムを、ネットワークを通じてリンクし(有線データリンク、無線データリンクによって、または有線データリンクと無線データリンクとの組み合わせのいずれかによってリンクする)、双方がタスクを実行する。分散システム環境において、プログラムモジュールをローカルメモリー記憶デバイスとリモートメモリー記憶デバイスとの双方に配置してもよい。
図1は、ロードバランサーコンポーネント間で状態を同期することを容易にする例示的なコンピューターアーキテクチャー100を示す。図1を参照すると、コンピューターアーキテクチャー100は、ルーター102、ロードバランシングマネージャー103、マルチプレクサー106、および宛先ホスト107を含む。記述したコンピューターシステムの各々を、例えば、ローカルエリアネットワーク(「LAN」)および/またはワイドエリアネットワーク(「WAN」)などの、ネットワーク上(またはその一部)で互いに接続する。ルーター102をさらに、ネットワーク101に接続する。ネットワーク101はさらに、例えば、インターネットなどのWANとすることができる。したがって、記述したコンポーネントの各々、ならびに任意の他の接続したコンピューターシステムおよびそのコンポーネントは、上述したネットワーク上で、メッセージ関連データを生成し、およびメッセージ関連データを交換することができる(例えば、インターネットプロトコル(IP)、および伝送制御プロトコル(「TCP」)、ハイパーテキスト転送プロトコル(「HTTP」)、シンプルメール転送プロトコル(「SMTP」)などの、インターネットプロトコル(IP)データグラムを利用する他の上位レイヤープロトコル)。
一般に、ルーター102は、ネットワーク101とコンピューターアーキテクチャー100の他のコンポーネントとの間でインタフェース接続して、ネットワーク101とコンピューターアーキテクチャー100の他のコンポーネントとの間でパケットを適切にルーティングする。ルーター102を、ネットワーク101からメッセージを受信し、およびそのメッセージをコンピューターアーキテクチャー100の適切なコンポーネントに転送するように構成することができる。例えば、ルーター102を、仮想インターネットプロトコルアドレス(「VIP」)に対するIPトラフィックを、マルチプレクサー106における物理的インタフェースに転送するように構成することができる。ルーター102は、仮想的に任意の数(例えば、4、8、16など)のIPアドレスへの等価コストマルチパス(「ECMP」)ルーティングをサポートすることができる。したがって、複数のマルチプレクサー106を、アクティブなマルチプレクサーとして構成することができる。他の実施形態(例えば、ECPMがサポートされないとき)において、1つのマルチプレクサーを、アクティブなマルチプレクサーとして構成し、および0またはそれ以上の他のマルチプレクサーを、待機マルチプレクサーとして構成することができる。
さらなる実施形態において、ドメインネームサービス(「DNS」)のラウンドロビン方式を使用する。1つまたは複数のVIPを割り当て、および複数のマルチプレクサー106間で共有する。ドメインネームサービス(「DNS」)の名前を登録して、1つまたは複数のVIPを解決する。マルチプレクサー106が故障した場合、そのマルチプレクサーが所有するVIPは、他のマルチプレクサー106にフェールオーバーされる。
追加的な実施形態において、VIPを、各マルチプレクサーに対するネットワークインタフェースカード上で構成する。マルチプレクサーのうちの1つ(例えば、マスターノード)を、VIPに対するアドレス解決プロトコル(「ARP」)リクエストに応答するように設定する。したがって、ルーター102は、VIPに対する任意のパケットを、マスターノードに送信することができる。マスターノードはそれから、現在の状態および/またはロードバランサールールに基づいて、レイヤー2転送を実行することができる。「マスターノード」の使用は、フラッディング(flooding)を軽減することができ、およびレイヤー3転送よりもずっと安価である。
記述したように、マルチプレクサー106は、マルチプレクサー106A、106B、および106Cを含む、複数のマルチプレクサーを含む。宛先ホスト107は、宛先ホスト107A、107B、および107Dを含む、複数の宛先ホストを含む。一般に、各マルチプレクサー106を、パケットを受信し、当該パケットに対する適切な宛先ホストを特定し、および当該パケットを適切な宛先ホストに転送するように構成する。いくつかの実施形態において、パケットに対する適切な宛先ホスト107を、パケットのコンテンツ、受信するマルチプレクサーにおけるキャッシュした状態、他のマルチプレクサーにおけるキャッシュした状態、パケットが既存のデータフローに対するものであるかまたは新たなデータフローに対するものであるか、および宛先ホスト107の構成のうちの1つまたは複数から特定する。
各マルチプレクサーは、IDジェネレーター、オーナーディテクター、および状態マネージャーを含む。例えば、マルチプレクサー106A、106Bおよび106Cはそれぞれ、IDジェネレーター141A、141Bおよび141C、オーナーディテクター142A、142Bおよび142C、ならびに状態マネージャー143A、143Bおよび143Cを含む。各IDジェネレーターを、パケットのコンテンツに基づいて、パケットに対するデータフローIDを生成するように構成する。いくつかの実施形態において、5組の(ソースIP:ポート、VIP:ポート、IPプロトコル)を使用して、データフローIDを表し、および/または生成する。他の実施形態において、この5組のサブセットを使用してもよい。新たなデータフローIDを、例えば、(宛先ホストIP:ポート)によって特定される宛先ホスト107にマッピングすることができる。対応する状態マネージャーは、データフローIDおよび(宛先ホストIP:ポート)をマッピングする状態をキャッシュすることができる。したがって、同一のデータフローIDを有する追加的なパケットを受信するときに、マルチプレクサーは、キャッシュした状態を参照して、追加のパケットのそれぞれに対する適切な宛先ホスト107を特定することができる。
いくつかの実施形態において、データフローIDスペースの異なる部分は、異なるマルチプレクサーによって「所有」される。各マルチプレクサーにおけるオーナーディテクターを、データフローIDに関するオーナーマルチプレクサーを判定するように構成する。そして、オーナーディテクターは、データフローIDを入力として受信し、およびオーナーマルチプレクサーに対するIPアドレスを出力として返すことができる。したがって、各マルチプレクサーは、各データフローIDに対するオーナーマルチプレクサーに状態を送信し、および/またはオーナーマルチプレクサーからの状態を要求することができる。例えば、マルチプレクサーがデータフローIDに対する適切な宛先ホストを特定するときに、マルチプレクサーは、(キャッシュに加えて)適切な宛先ホストを、データフローIDに対するオーナーマルチプレクサーに転送することができる。一方、マルチプレクサーがデータフローIDに対する適切な宛先ホストを特定するのに十分な情報が不足しているときに、マルチプレクサーは、オーナーマルチプレクサーに問い合わせて、適切な宛先ホストを取得することができる。
いくつかの実施形態において、マルチプレクサーがデータフローIDに対応するパケットに対する適切な宛先ホストを特定するのに十分な情報が不足しているときに、マルチプレクサーは、パケットをデータフローIDに対するオーナーマルチプレクサーに送信する。パケットを受信したことに応答して、オーナーマルチプレクサーは、データフローIDに対する適切な宛先ホストを判定する。また、オーナーマルチプレクサーは、データフローIDを適切な宛先ホストにマッピングする、キャッシュした状態(オーナーマルチプレクサーにおいて生成し、または他の追加のマルチプレクサーから受信したかのいずれかの状態)をマルチプレクサーに送信する。
他の実施形態において、マルチプレクサーがデータフローIDに対する適切な宛先ホストを特定するのに十分な情報が不足しているとき、マルチプレクサーは、キャッシュした状態に対する即時リクエストを、データフローIDに対するオーナーマルチプレクサーに送信する。即時リクエストを受信したことに応答して、オーナーマルチプレクサーは、データフローIDを適切な宛先ホストにマッピングする、キャッシュした状態(オーナーマルチプレクサーにおいて生成し、または他の追加のマルチプレクサーから受信したかのいずれかの状態)を、マルチプレクサーに送信する。マルチプレクサーはそして、パケットを適切な宛先ホストに送信する。
一般に、ロードバランシングマネージャー103を、遷移のために宛先ホスト107の配置をモニタリングするように構成する(例えば、新たな宛先ホストを追加するときに)。宛先配列ジェネレーター104は適宜、データフローIDを宛先ホストにマッピングする配列(例えば、ハッシュ関数を使用して)を形成する。ロードバランシングマネージャー103は、配列の現在のバージョン(例えば、新配列109)と配列のすぐ前のバージョン(例えば、旧配列108)の、配列の2つのバージョンを維持することができる。配列内の位置は、データフローIDに対応することができる。例えば、配列位置1は、データフローID1などに対応することができる。したがって、配列108および109に示すように、宛先ホスト107Bは、データフローID1に対する適切な宛先ホストである。
ロードバランシングマネージャー103は、配列の2つのバージョンをマルチプレクサー106に通信することができる。宛先ホスト107の配置が定常状態であるときは、配列の現在のバージョンおよびすぐ前のバージョンは一致する。そのため、定常状態では、マルチプレクサー106は、マッピングを参照して、指定されたデータフローIDに対するパケットをどこに送信するかを判定することができる(マルチプレクサーがキャッシュした状態を有さないときでさえ)。
一方、宛先ホスト107の配置が遷移中であるとき(例えば、新たな宛先ホスト107を追加しているときに)、配列の現在のバージョンおよびすぐ前のバージョンにおけるマッピングは異なる。例えば、新たな宛先ホスト107を追加するときに、データフローIDスペースをよりおおくの宛先ホスト107まで拡張して、個々の宛先ホスト107の負荷を減少させることができる。例えば、相違111は、データフローIDスペースの一部が、以前は宛先ホスト107D(例えば、データフローID3)に対応していたが、今は、宛先ホスト107Cに対応していることを示す。既存のデータフローに対するパケットが同一の宛先ホストに継続する確率を上げるために、マルチプレクサー106は、宛先ホスト107の配置が遷移中であるときに、キャッシュした状態を参照することができる(ローカルに、またはオーナーマルチプレクサーから問い合わされるかのいずれか)。
図2は、ロードバランサー間で状態を共有する例示的な方法200のフローチャートを示す。方法200を、コンピューターアーキテクチャー100のコンポーネントおよびデータについて説明する。
方法200は、ルーターからパケットを受信するロードバランサーの動作を含み、当該パケットは、ワイドエリアネットワーク上のソースを特定するソース電子アドレス情報と、仮想電子アドレスを含む宛先電子アドレス情報とを含む(動作201)。例えば、マルチプレクサー106Aは、ルーター102からパケット121を受信することができる。パケット121は、ネットワーク101上のソースを特定するソース(例えば、IP)アドレス122を含む。パケット121はまた、宛先アドレス123を含む。宛先アドレス123を、宛先ホスト107とコンタクトするのに使用される仮想IPアドレスにすることができる。
方法200は、パケットが既存のデータフローに対するものであると判定するロードバランサーの動作を含む(動作202)。例えば、マルチプレクサー106は、パケット121が既存のデータフローに対するものであると判定することができる。データフローにおける第1のパケット(例えば、伝送制御プロトコル、TCPパケットに関するSYNパケット)は、第1のパケットインジケーターを含むことができる。データフローにおける他のパケット(例えば、TCPに対する非SYNパケット)は、第1のパケットインジケーターを含まない。したがって、パケットが第1のパケットインジケーターを含まないとき、マルチプレクサーは、そのパケットが既存のデータフローに対するものであると推測することができる。マルチプレクサー106Aは、パケット121が第1のパケットインジケーターを含まないと判定することができる。そのため、マルチプレクサー106Aは、パケット121が既存のデータフローに対するものであると推測する。
方法200は、ソース電子アドレス情報および宛先電子アドレス情報から既存のデータフローに対するデータフローインジケーターを生成するアルゴリズムを使用する、ロードバランサーの動作を含む(動作203)。例えば、IDジェネレーターは、ソースアドレス122および宛先アドレス123を、フローID144にハッシュするハッシュ関数を使用することができる。フローID144は、例えば、新配列109のインデックス位置を表すことができる。例えば、フローID144は、新配列109における第4の位置を表すことができる。いくつかの実施形態において、ハッシュアルゴリズムを使用してソースIPアドレスおよびVIPをデータフロー識別子にハッシュする。
方法200は、ロードバランサーが、複数の宛先ホストの中から既存のデータフローに対応する宛先ホストを特定するのに十分な情報が不足していると判定するロードバランサーの動作を含む(動作204)。例えば、マルチプレクサー106Aは、マルチプレクサー106Aが宛先ホスト107の中からデータフロー144に対応する適切な宛先ホストを特定するのに十分な情報が不足していると判定することができる。
動作204は、ロードバランサーが既存のデータフローを複数の宛先ホストにおける1つの宛先ホストにマッピングする、いかなるキャッシュした状態を有していないと判定する、ロードバランサーの動作を含むことができる(動作205)。例えば、状態マネージャー143Aは、マルチプレクサー106Aが、フローID144を宛先ホスト107のうちの1つにマッピングした、キャッシュした状態を有していないと判定することができる。状態マネージャー143Aは、状態146A(キャッシュした状態)を参照して、フローID144に対する宛先ホストのマッピングを検査することができる。
動作204は、複数の宛先ホストの配置が遷移中であることを検出するロードバランサーの動作を含むことができる。例えば、マルチプレクサー106Aは、宛先ホスト107の配置の遷移を検出することができる。1つまたは複数の既存のデータフロー(例えば、フローID144)の存続期間(lifetime)中に、宛先ホスト107Cを宛先ホスト107に追加することができる。宛先配列ジェネレーター104は、変更を検出することができる。それに応じて、宛先配列ジェネレーター104は、新配列109を生成することができる。マルチプレクサー106Aは、旧配列108および新配列109を参照することができる。少なくとも相違111により記述したように、マルチプレクサー106Aは、遷移を検出する。つまり、現在、データフローIDスペースの一部を、宛先ホスト107Cに割り振っている。
方法200は、ロードバランサーが、既存のデータフローに対応する宛先ホストを特定するのに十分な情報が不足していると判定したことに応答して、既存のデータフローのオーナーとして指定されたオーナーロードバランサーを特定するロードバランサーの動作を含み、当該オーナーロードバランサーを、1つまたは複数の他のロードバランサーの中から選択する(動作206)。例えば、マルチプレクサー106Aは、マルチプレクサー106BをフローID144のオーナーとして特定することができる。オーナーディテクター142Aは、フローID144を入力として受信し、およびマルチプレクサー106Bに対するIPアドレスを、フローID144のオーナーとして出力することができる。
いくつかの実施形態において、マルチプレクサー106Aは、ソースアドレス122および宛先アドレス123を第2のハッシュ値にハッシュする第2のハッシュアルゴリズムを使用する。第2のハッシュ値は、オーナー配列におけるインデックス位置を表す(例えば、図7Aおよび7Bにおいて記述した)。オーナー配列は、データフローを対応するオーナーマルチプレクサーにマッピングし、そのマルチプレクサーは、遷移が検出されたときに、マッピングしたデータフローに対する状態を維持する。したがって、マルチプレクサー106Aは、オーナー配列におけるフローID144に対するインデックス位置を参照して、マルチプレクサー106BをフローID144のオーナーとして特定することができる。
ロードバランシングマネージャー103は、マルチプレクサー106をモニタリングし、およびマルチプレクサーが追加され、および/またはマルチプレクサー106から除去されるときに、データフローに対するプライマリーオーナーの配列およびバックアップオーナーの配列を調整することができる。ロードバランシングマネージャー103は、データフローに対するオーナーシップを分散して、プライマリーおよびバックアップオーナーシップをマルチプレクサー106にわたって(ある程度)均等化することができる。
方法200はまた、既存のデータフローに対応する宛先ホストを特定するのに十分な情報が不足していると判定したことに応答して、データフロー状態情報に関するリクエストを、オーナーロードバランサーに送信するロードバランサーの動作を含む(動作207)。例えば、マルチプレクサー106Aは、パケット121をマルチプレクサー106Bに送信することができる。代わりに、マルチプレクサー106Aは、パケット121を保持し、およびフローID144に対するデータフロー状態情報に関する即時リクエストをマルチプレクサー106Bに送信することができる。
マルチプレクサー106Bは、マルチプレクサー106Aからパケット121を受信することができる。一旦、パケット121を受信すると、IDジェネレーター141Bは、ソースアドレス122および宛先アドレス123からフローID144を生成することができる。オーナーディテクター142Bはそして、マルチプレクサー106BがフローID144に対するオーナーであると判定することができる。状態マネージャー143Bは、状態146Bを参照して、状態126にアクセスすることができる。状態126は、フローID144を宛先ホスト107Bにマッピングすることができる。状態が見つからない場合、マルチプレクサー106Bは、現在の宛先配列を使用して、新たな状態126を生成することができる。マルチプレクサー106Bは、パケット121を宛先ホスト107Bに送信することができる。マルチプレクサー106Bまたは、状態126をマルチプレクサー106Aに返すことができる。マルチプレクサー106Bはまた、このフローに対応するバックアップオーナーに状態126を送信することができる。
代わりに、マルチプレクサー106Bは、マルチプレクサー106Aから、フローID144についてのデータフロー状態情報に対する即時リクエストを受信することができる。オーナーディテクター142Bは、マルチプレクサー106BがフローID144に関するオーナーであると判定することができる。状態マネージャー143Bは、状態146Bを参照して、状態126にアクセスすることができる。マルチプレクサー106Bは、状態126をマルチプレクサー106Aに返すことができる。
方法200は、オーナーロードバランサーから状態情報を受信するロードバランサーの動作を含み、その状態情報は、既存のデータフローに対応する宛先ホストを特定する(動作208)。例えば、マルチプレクサー106Aは、マルチプレクサー106Bから状態126を受信することができる。方法200は、受信した状態情報をキャッシュするロードバランサーの動作を含む(動作209)。例えば、マルチプレクサー106Aは、状態126を状態146Aにキャッシュすることができる。即時リクエストに応答してマルチプレクサー106Aが状態126を受信するときに、マルチプレクサー106Aはそれから、パケット121を宛先ホスト107Bに送信することができる。
さらに、フローID144に対する後続パケットを受信するときに(マルチプレクサー106Bがパケット121を宛先ホスト107Bに送信する場合でさえ)、マルチプレクサー106Aは、宛先ホスト107Bを、その後続パケットに対する適切な宛先ホストとして特定することができる。例えば、マルチプレクサー106Aは、パケット132を受信することができる。パケット132は、ソースアドレス122および宛先アドレス123を含む。IDジェネレーター141Bは、パケット132がフローID144に対応すると判定することができる。状態マネージャー143Bは、状態146Aを参照して、宛先ホスト107BがフローID144に対する適切な宛先ホストであると特定することができる。マルチプレクサー106Aはそれから、パケット132を宛先ホスト107Bに送信することができる。
他のマルチプレクサーはまた、フローID144に対するパケットを受信することができる。これらの他のマルチプレクサーがフローID144に対するキャッシュした状態を有している場合(自己生成したか、別のマルチプレクサーから問い合わされたかのいずれか)、それらのマルチプレクサーは、パケットを宛先ホスト107Bに送信することができる。例えば、マルチプレクサー106Cは、パケット131を受信することができる。パケット131は、ソースアドレス122および宛先アドレス123を含む。IDジェネレーター141Cは、パケット132がフローID144に対応すると判定することができる。状態マネージャー143Cは、状態146Cを参照して、宛先ホスト107BがフローID144に対する適切な宛先ホストであると特定することができる。マルチプレクサー106Cはそれから、パケット131を宛先ホスト107Bに送信することができる。
さらに、宛先ホストの配置が遷移中であるとき、旧宛先配列および新宛先配列において異なる宛先ホストを有する、既存のデータフローに対する状態を備えるマルチプレクサーは、その状態をデータフローに対するオーナーマルチプレクサーに送信することができる。例えば、それは、宛先ホスト107Cの追加によって宛先ホスト107を遷移させることであってもよい。一旦、遷移を検出すると、マルチプレクサー106Cは、例えば、マルチプレクサー106Aおよび/またはマルチプレクサー106Bなどの、他のマルチプレクサーがオーナーである、1つまたは複数の既存のデータフローに対する状態を有することができる。遷移を検出したことに応答して、マルチプレクサー106は、旧宛先配列および新宛先配列において異なる宛先ホストを有する既存のデータフローに対する状態を、適切なオーナーマルチプレクサーに送信することができる。例えば、マルチプレクサー106Cは、フローID144に対する状態をマルチプレクサー106C(図示せず)に送信することができる。遷移中、適切なオーナーマルチプレクサーは、他のマルチプレクサーから状態を受信することができる。例えば、マルチプレクサー106Aは、マルチプレクサー106C(図示せず)からフローID144に対する状態を受信することができる。
図3は、ロードバランサー間で状態を共有する例示的な方法300のフローチャートを示す。方法300を、コンピューターアーキテクチャー100のコンポーネントおよびデータについて説明する。
方法300は、1つまたは複数の他のロードバランサーに含まれる別のロードバランサーからパケットを受信するロードバランサーの動作を含み、当該パケットは、ワイドエリアネットワーク上のソースを特定するソース電子アドレス情報と、仮想電子アドレスを含む宛先電子アドレス情報とを含む(動作301)。例えば、マルチプレクサー106Bは、マルチプレクサー106Aからパケット121を受信することができる。方法300は、受信したパケットが既存のデータフローに対するものであると判定するロードバランサーの動作を含む(動作302)。例えば、IDジェネレーター141は、パケット121がフローID144に対応すると判定することができる。方法300は、ロードバランサーが既存のデータフローのオーナーであると判定する、ロードバランサーの動作を含む(動作303)。例えば、オーナーディテクター142Bは、マルチプレクサー106BがフローID144のオーナーであると判定することができる。
方法300は、ロードバランサーが既存のデータフローに対するキャッシュした状態を有すると判定するロードバランサーの動作を含み、キャッシュした状態は、既存のデータフローを複数の宛先ホストのうちの1つの宛先ホストにマッピングする(動作304)。例えば、状態マネージャー143Bは、状態146Bを参照して、状態126にアクセスすることができる。状態126は、フローID144が宛先ホスト107Bに対応すると示すことができる。代わりに、状態マネージャー143Bは、状態126を生成することができる。
方法300は、受信したパケットを、既存のデータフローがマッピングされる宛先ホストに送信するロードバランサーの動作を含む(動作305)。例えば、マルチプレクサー106Bは、パケット121を宛先ホスト107Bに送信することができる。方法300は、キャッシュした状態を他のロードバランサーに送信する、ロードバランサーの動作を含む(動作306)。例えば、マルチプレクサー106Bは、状態126をマルチプレクサー106Aに返すことができる。
代わりに、マルチプレクサー106Bは、フローID144を適切な宛先ホスト107にマッピングする状態に関する即時リクエストを、マルチプレクサー106Aから受信することができる。それに応じて、状態マネージャー143Bは、状態146Bを参照して、状態126にアクセスすることができる。状態126は、フローID144が宛先ホスト107Bに対応すると示すことができる。マルチプレクサー106Bは、状態126をマルチプレクサー106Aに返すことができる。マルチプレクサー106Aはそれから、状態126におけるマッピングに基づいて、パケット121を宛先ホスト107Bに送信することができる。
図4Aおよび図4Bは、マルチプレクサー間で状態を共有する例示的なコンピューターアーキテクチャー400を示す。記述したように、コンピューターアーキテクチャー400は、マルチプレクサー401Aおよび401B、ならびに宛先ホスト402A、402Bおよび402Cを含む。図4Aにおいて、マルチプレクサー401Bは、パケット421を受信する。マルチプレクサー401Bは、適切な宛先ホストを特定するのに十分な情報が不足していると判定する。それに応じて、マルチプレクサー401Bは、パケット421をマルチプレクサー401A(オーナーマルチプレクサー)に送信する。マルチプレクサー401Aは、マルチプレクサー401Bからパケット421を受信する。マルチプレクサー401Aは、状態426を特定し、および状態426をマルチプレクサー401Bに返す。状態426は、パケット421に対するデータフローを宛先ホスト402Bにマッピングする。マルチプレクサー401Aはまた、パケット421を宛先ホスト402Bに転送する。その次に、マルチプレクサー401Bは、パケット421と同一のデータフローに対するパケット422およびパケット423を受信する。状態426に基づいて、マルチプレクサー401Bは、パケット422およびパケット423を宛先ホスト402Bに送信する。
図4Bにおいて、マルチプレクサー401Aは、パケット431を受信する。マルチプレクサー401Bは、適切な宛先ホストを特定するのに十分な情報が不足していると判定する。それに応じて、マルチプレクサー401Bは、パケット431をマルチプレクサー401A(オーナーマルチプレクサー)に送信する。マルチプレクサー401Aは、マルチプレクサー401Bからパケット431を受信する。マルチプレクサー401Aは、状態436を特定し、および状態436をマルチプレクサー401Bに返す。状態436は、パケット431に対するデータフローを宛先ホスト402Bにマッピングする。マルチプレクサー401Aは、パケット431を宛先ホスト402Bに送信する。
しかしながら、状態436を受信する前に、マルチプレクサー401Bは、パケット431と同一のデータフローに対するパケット432を受信する。マルチプレクサー401Bがまだ状態436を受信していないので、マルチプレクサー401Bは、適切な宛先ホストを特定するのに十分な情報が不足していると判定する。それに応じて、マルチプレクサー401Bはまた、パケット432をマルチプレクサー401Aに送信する。マルチプレクサー401Aは、マルチプレクサー401Bからパケット432を受信する。マルチプレクサー401Aは、状態436をマルチプレクサー401Bに送信したと判定する。マルチプレクサー401Aは、パケット432を宛先ホスト402Bに送信する。続いて、マルチプレクサー401Bは、パケット431と同一のデータフローに対するパケット433を受信する。状態436に基づいて、マルチプレクサー401Bは、パケット433を宛先ホスト402Bに送信する。したがって、本発明の実施形態は、マルチプレクサー間で状態を交換する際の遅延を補償することができる。
図5Aおよび図5Bは、マルチプレクサー間で状態を共有する例示的なコンピューターアーキテクチャー500を示す。記述したように、コンピューターアーキテクチャー500は、マルチプレクサー501A、501Bおよび501C、ならびに宛先ホスト502A、502Bおよび502Cを含む。
図5Aにおいて、マルチプレクサー501Aは、パケット521およびパケット522(パケット521およびパケット522は、SYNパケットではない)を含む既存のデータフローに対するプライマリーオーナーである。マルチプレクサー501Cは、パケット521およびパケット522を含むデータフローに対するバックアップオーナーである。
マルチプレクサー501Aは、パケット521を受信する。マルチプレクサー501Aは、マルチプレクサー501Aが既存のデータフローのオーナーであり、および適切な宛先ホストを特定するのに十分な情報が不足している(即ち、マルチプレクサー501Aは、既存のデータフローに対するキャッシュした状態を欠いている)と判定する。それに応じて、マルチプレクサー501Aは、現在の宛先配列(例えば、新配列109)を参照して、宛先ホスト502Aを適切な宛先ホストと特定する。マルチプレクサー501Aはまた、既存のデータフローに対する状態526をトラッキングすることを開始する。後続の遷移後、および状態526が新配列とは異なると判定した後、マルチプレクサー501Aは、状態526をマルチプレクサー501Cに送信する。マルチプレクサー501Cは、マルチプレクサー501Aから状態526を受信し、および状態526をキャッシュする。状態526は、既存のデータフローを宛先ホスト502Aにマッピングする。したがって、マルチプレクサー501Aに障害が発生すると、マルチプレクサー501Cは、状態526を提供することにおいて、他のマルチプレクサーに引き継ぐことができる。
図5Bにおいて、マルチプレクサー501Aは、パケット531およびパケット532(パケット531およびパケット532は、SYNパケットではない)を含む既存のデータフローに対するプライマリーオーナーである。マルチプレクサー501Cは、パケット531およびパケット532を含むデータフローに対するバックアップオーナーである。
マルチプレクサー501Bは、パケット531およびパケット532を受信する。マルチプレクサー501Bは、宛先ホスト502Aが既存のデータフローに対する適切な宛先ホストであると判定するのに十分な情報を有する(即ち、新たなフローまたはマルチプレクサーのいずれかがフローに関するキャッシュした情報を有する)。マルチプレクサー501Bはまた、マルチプレクサー501Aが既存のデータフローのプライマリーオーナーであると判定する。宛先配列において変更があると、マルチプレクサー501Bは、遷移を検出し、および状態536をマルチプレクサー501Aに送信する。マルチプレクサー501Aは、マルチプレクサー501Bから状態536を受信する。状態536は、既存のデータフローを宛先ホスト502Aにマッピングする。
同一のフローに属するさらなるパケットが、マルチプレクサー501Bに到達し続ける場合、マルチプレクサー501Bは、バッチ更新538(マルチプレクサー501Aがオーナーである状態536および他の状態を含む)をオーナーマルチプレクサー501Aに随時送信し続けて、オーナーマルチプレクサーが、それがオーナーであるすべてのフローに関する現在の状態を常に有するようにする。
随時、マルチプレクサー501Aは、バッチ状態の更新を他のバックアップオーナーに送信することができる。例えば、マルチプレクサー501Aは、状態537をマルチプレクサー501Cに送信することができる。マルチプレクサー501Cは、マルチプレクサー501Aから状態537を受信することができる。状態537は、マルチプレクサー501Aによってトラッキングされるアクティブなフローに対する状態更新(状態536を含む)のバッチとすることができる。
図6A、図6B、図6Cおよび図6Dは、データフローの宛先ホストへのマッピングを維持する例示的なコンピューターアーキテクチャー600を示す。図6Aは、宛先ホストA601、宛先ホストB602、および宛先ホストC603の配置を定常状態で記述する。したがって、旧配列608および新配列609は、互いに一致する。定常状態では、マルチプレクサーは、配列を参照して、データフローに対する適切な宛先ホストを判定することができる。
図6Bは、宛先ホストA601、宛先ホストB602、および宛先ホストC603の配置を記述し、そこでは宛先ホストC603が除去される。宛先ホストの除去を、基本的に瞬時に行うことができる。そのため、宛先ホストの除去は、必ずしも宛先ホストの配置における遷移を示す必要はない。したがって、宛先ホストが除去されると、マルチプレクサーは、引き続き配列を参照して、データフローに対する適切な宛先ホストを判定することができる。
図6Cは、宛先ホストA601、宛先ホストB602、宛先ホストC603および宛先ホスト604Dの配置を記述し、そこでは宛先ホストC603が宛先ホスト604Dに置き換えられる。宛先ホストの置換もまた、基本的に瞬時に行うことができる。そのため、宛先ホストの置換は、必ずしも宛先ホストの配置における遷移を示す必要はない。したがって、宛先ホストが置換されると、マルチプレクサーは、引き続き配列を参照して、データフローに対する適切な宛先ホストを判定することができる。
図6Dは、宛先ホストA601、宛先ホストB602、宛先ホストC603および宛先ホスト604Dの配置を記述し、そこでは宛先ホストC603を追加する。宛先ホストの追加は、遷移期間を含むことができ、したがって、宛先ホストの配置における遷移を含むことができる。遷移期間中、旧配列608および新配列609におけるマッピングは異なることができる(一部のデータフローが宛先ホストDに再度割り振られて、作業負荷が均等されるため)。異なるマッピングを検出した場合、マルチプレクサーは、データフロー状態をトラッキングし、および交換することができる。すべてのオーナーマルチプレクサーが、それらが所有するフローに関する決定を行うのに十分な情報を有するときに、宛先ホストの配置は、定常状態に戻り、および旧配列608および新配列609が再度一致する。
図7Aおよび図7Bは、データフローのオーナーマルチプレクサーへのマッピングを維持する例示的なコンピューターアーキテクチャー700を示す。図7Aは、マルチプレクサーA701、マルチプレクサーB702、マルチプレクサーC703およびマルチプレクサーD704を記述する。プライマリーオーナー配列708は、データフローをプライマリーオーナーマルチプレクサーにマッピングする。バックアップオーナー配列709は、データフローをバックアップオーナーマルチプレクサーにマッピングする。配列におけるインデックス位置は、データフローIDに対応することができる。例えば、データフローID6に対するプライマリーオーナーは、マルチプレクサーB702である。同様に、データフローID6に対するバックアップオーナーは、マルチプレクサーC703である。いくつかの実施形態において、オーナーディテクター(例えば、142A、142B、142Cなど)は、データフローIDを配列へのインデックス位置として使用し、およびインデックス位置において特定されたマルチプレクサーに状態の更新を送信する。
マルチプレクサーに障害が発生するときに、そのマルチプレクサーに対するプライマリーオーナーシップおよびバックアップオーナーシップのレスポンシビリティ(responsibility)を再度割り振る。図7Bは、マルチプレクサーC703の障害を記述する。障害に応答して、インデックス位置(データフローID)9−12に対するプライマリーオーナーシップおよびインデックス位置(データフローID)5−8に対するバックアップオーナーシップを、残りのマルチプレクサーに再度割り振る。
したがって、本発明の実施形態は、新たな接続をどのように負荷分散するべきかを決定する一貫性のあるハッシュアルゴリズムを使用するロードバランサーを含む。一貫性のあるハッシュアルゴリズムの使用により、ロードバランサーが、交換する必要がある状態の量を最小限にすることが可能になる。特に、ハッシュおよび宛先配列を使用して判定することができないフロー状態のみを同期すればよい。ロードバランサーは、着信パケットに対するフロー状態の情報(所与のフローに対する宛先アドレス)を保持する。それが必要な場合、即ち、例えば、宛先ホスト構成における変更を検出するときに、選択した状態情報をロードバランサー間で決定論的に共有し、それによって、権限のあるロードバランサー(例えば、オーナーロードバランサー)が所与のフローに対する正確な宛先ホストを選択することが可能になる。各ロードバランサーは、権限のあるロードバランサーに到達して、ローカルに判定することができないフローについて理解することができる。
本発明を、本発明の精神または本質的な特徴から逸脱することなく他の特定の形式で具体化してもよい。説明した実施形態は、すべての点において単に例示的であり、および制限されるものではないと見なされる。したがって、本発明の範囲を、上記の説明によってではなく、添付の特許請求の範囲によって示す。特許請求の範囲と等価の意味および範囲に入るすべての変更は、それらの範囲内に含まれるものとする。

Claims (10)

  1. ルーターおよびロードバランシングシステムを含むコンピューターシステムにおいて、ロードバランサー間で状態を共有する方法であって、前記ロードバランシングシステムは、ロードバランサー、1つまたは複数の他のロードバランサー、および複数の宛先ホストを含み、前記ルーターは、ネットワークに接続され、および前記ロードバランシングシステムへの進入のポイントであり、前記ネットワーク上のコンポーネントは、仮想電子アドレスを使用して前記ロードバランシングシステムと通信し、前記方法は、
    前記ルーターからパケットを受信する、前記ロードバランサーの動作であって、前記パケットは、ワイドエリアネットワーク上のソースを特定するソース電子アドレス情報と、前記仮想電子アドレスを含む宛先電子アドレス情報とを含む、動作と、
    前記パケットが既存のデータフローに対するものであると判定する、前記ロードバランサーの動作と、
    パケットヘッダーを含む、前記パケットのコンテンツから前記既存のデータフローに対するデータフロー識別子を生成するアルゴリズムを使用する、前記ロードバランサーの動作と、
    前記ロードバランサーが、前記複数の宛先ホストの中から前記既存のデータフローに対応する宛先ホストを特定するのに十分な情報が不足していると判定する、前記ロードバランサーの動作であって、
    前記ロードバランサーが、前記既存のデータフローを前記複数の宛先ホストのうちの1つの宛先ホストにマッピングする、キャッシュした状態を有さないと判定する、前記ロードバランサーの動作を含む、動作と、
    前記ロードバランサーが、前記既存のデータフローに対応する前記宛先ホストを特定するのに十分な情報が不足していると判定したことに応答して、
    前記既存のデータフローのオーナーとして指定されたオーナーロードバランサーを特定する、前記ロードバランサーの動作であって、前記オーナーロードバランサーは、前記1つまたは複数の他のロードバランサーの中から選択される、動作と、
    データフローの状態情報に関するリクエストを前記オーナーロードバランサーに送信する、前記ロードバランサーの動作と、を含む動作と、
    前記オーナーロードバランサーから状態情報を受信する、前記ロードバランサーの動作であって、前記状態情報は、前記既存のデータフローに対応する前記宛先ホストを特定する、動作と、
    前記受信した状態情報をキャッシュする、前記ロードバランサーの動作と
    を備えることを特徴とする方法。
  2. 前記複数の宛先ホストの配置が遷移中であると判定したことに応答して、
    1つまたは複数の他の既存のデータフローに対するキャッシュした状態を特定する、前記ロードバランサーの動作であって、前記キャッシュした状態は、前記1つまたは複数の他の既存のデータフローを、前記複数の宛先ホストのうちの対応する宛先ホストにマッピングする、動作と、
    現在の宛先ホスト配列を使用して、前記宛先ホストが現在のマッピングとは異なるデータフローを特定する、前記ロードバランサーの動作と、
    これらの1つまたは複数の既存のデータフローのそれぞれに対し、
    前記1つまたは複数の他のロードバランサーの中から選択される、前記既存のデータフローのオーナーとして指定されたオーナーロードバランサーを特定する、前記ロードバランサーの動作と、
    前記既存のデータフローに対するキャッシュした状態を、前記既存のデータフローに対する前記オーナーロードバランサーに送信する、前記ロードバランサーの動作と
    をさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記ルーターからパケットを受信する、前記ロードバランサーの動作は、等価コストマルチパス(ECMP)アルゴリズムまたはドメインネームシステム(DNS)のラウンドロビンアルゴリズムのうちの1つに従って、パケットを受信する、前記ロードバランサーの動作を含むことを特徴とする請求項1に記載の方法。
  4. 前記既存のデータフローに対する第2のパケットを受信する、前記ロードバランサーの動作と、
    キャッシュした状態情報を参照して、前記宛先ホストを前記既存のデータフローに対応するものとして特定する、前記ロードバランサーの動作と、
    前記第2のパケットを前記宛先ホストに送信する、前記ロードバランサーの動作と
    をさらに備えることを特徴とする請求項1に記載の方法。
  5. 前記既存のデータフローに対するデータフロー識別子を生成するアルゴリズムを使用する、前記ロードバランサーの動作は、前記ソースに対するソースインターネットプロトコルアドレスおよび前記ロードバランシングシステムに対する仮想インターネットプロトコルアドレスを、データフロー識別子にハッシュするハッシュアルゴリズムを使用する、動作を含み、前記データフロー識別子は、データフローを対応する宛先ホストにマッピングする現在のマッピング配列へのインデックスを表すことを特徴とする請求項1に記載の方法。
  6. 前記既存のデータフローのオーナーとして指定されたオーナーロードバランサーを特定する、前記ロードバランサーの動作は、
    前記ソースインターネットプロトコルアドレスおよび前記仮想インターネットプロトコルアドレスを第2のハッシュ値にハッシュする第2のハッシュアルゴリズムを使用する動作であって、前記第2のハッシュ値は、プライマリーオーナーパーティション配列における位置を表し、前記プライマリーオーナーパーティション配列は、データフローを、前記データフローに対するキャッシュした状態を維持する、対応するロードバランサーにマッピングする、動作と、
    前記プライマリーオーナーパーティション配列における前記位置を参照して、前記既存のデータフローの前記オーナーとしてマッピングされた前記ロードバランサーを特定する、動作と
    を含むことを特徴とする請求項5に記載の方法。
  7. ルーターおよびロードバランシングシステムを含むコンピューターシステムにおいて、ロードバランサー間で状態を共有する方法であって、前記バランシングシステムは、ロードバランサー、1つまたは複数の他のロードバランサー、および複数の宛先ホストを含み、前記ルーターは、ネットワークに接続され、およびワイドエリアネットワークから前記ロードバランシングシステムへの進入のポイントであり、前記ネットワーク上のコンポーネントは、仮想電子アドレスを使用して前記ロードバランシングシステムと通信し、前記方法は、
    別のロードバランサーからカプセル化されたパケットを受信する、前記ロードバランサーの動作であって、前記パケットは、前記ネットワーク上のソースを特定するソース電子アドレス情報と、前記仮想電子アドレスを含む宛先電子アドレス情報とを含む、動作と、
    前記受信したパケットが既存のデータフローに対するものであると判定する、前記ロードバランサーの動作と、
    前記ロードバランサーが前記既存のデータのオーナーであると判定する、前記ロードバランサーの動作と、
    前記ロードバランサーが、前記既存のデータフローに対するキャッシュした状態を有すると判定する、前記ロードバランサーの動作であって、前記キャッシュした状態は、前記既存のデータフローを、前記複数の宛先ホストのうちの1つの宛先ホストにマッピングする、動作と、
    前記受信したパケットを、前記既存のデータフローにマッピングした前記宛先ホストに送信する、前記ロードバランサーの動作と、
    前記既存のデータフローにおける後続のパケットを、前記1つの宛先ホストに適切に転送するのに使用するために、前記キャッシュした状態を前記他のロードバランサーに送信する、前記ロードバランサーの動作と、
    を備えることを特徴とする方法。
  8. 1つまたは複数の他の既存のデータフローに対するキャッシュした状態を、前記1つまたは複数の他のロードバランサーから受信する、前記ロードバランサーの動作をさらに備え、前記1つまたは複数の他のロードバランサーは、前記ロードバランサーが前記1つまたは複数の他の既存のデータフローに対するプライマリーオーナーロードバランサーであると判定していたことを特徴とする請求項7に記載の方法。
  9. 別の既存のデータフローに対する状態を別のロードバランサーに送信する、前記ロードバランサーの動作であって、前記ロードバランサーは、前記別の既存のデータフローに対する状態が、現在の宛先配列において異なると判定していた、動作と、
    前記他のロードバランサーが前記他の既存のデータフローのプライマリーオーナーであると判定する、前記ロードバランサーの動作と
    をさらに備えることを特徴とする請求項7に記載の方法。
  10. 1つまたは複数のプロセッサーと、
    システムメモリーと、
    ルーターと、
    ロードバランシングマネージャー、複数のマルチプレクサー、および複数の宛先ホストを表すコンピューター実行可能命令を格納している1つまたは複数のコンピューター記憶デバイスとを備え、
    前記ロードバランシングマネージャーは、
    前記複数の宛先ホストの配置において、前記複数の宛先ホストの変更をモニタリングするように構成され、
    フローIDを宛先ホストにマッピングする宛先ホスト配列を維持するように構成され、
    定期間隔で前記宛先ホスト配列を更新するように構成され、
    各配列を更新する前に、前記宛先ホスト配列を前記宛先ホスト配列の旧バージョンに複製するように構成され、
    前記宛先ホスト配列および前記宛先ホスト配列の前記旧バージョンを、前記複数のマルチプレクサーに提供するように構成され、
    前記複数のマルチプレクサーの変更をモニタリングするように構成され、
    フローIDをプライマリーオーナーマルチプレクサーにマッピングする、プライマリーオーナーシップ配列を維持するように構成され、
    フローIDをバックアップオーナーマルチプレクサーにマッピングする、バックアップオーナーシップ配列を維持するように構成され、および
    前記プライマリーオーナーシップ配列および前記バックアップオーナーシップ配列を、前記複数のマルチプレクサーに提供するように構成され、
    前記複数のマルチプレクサーのそれぞれは、
    前記ルーターからパケットを受信するように構成され、
    前記パケットに含まれる情報に基づいて、各受信したパケットに対するフローIDを形成するように構成され、
    前記複数の宛先ホストの中から前記パケットに対する適切な宛先ホストを特定することであって、
    データフローが新たなデータフローであるかどうかを判定することと、
    前記データフローが既存のデータフローであると判定されたときに、前記データフローIDを前記宛先ホスト配列へのインデックスとして使用して、前記パケットに対する適切な宛先ホストを特定することと、
    前記宛先ホスト配列のコンテンツと前記宛先ホストの前記旧バージョンのコンテンツとが一致しないとき、キャッシュした状態を参照して、前記パケットに対する前記適切な宛先ホストを特定することであって、前記マルチプレクサーにおけるキャッシュした状態を参照して、前記マルチプレクサーがフローIDに対する前記適切な宛先ホストのインジケーションを前もってキャッシュしたかどうかを判定することを含む、ことと
    を含むように構成され、
    前記インジケーションを前もってキャッシュしたかどうかを判定することは、
    前記マルチプレクサーにおける前記キャッシュした状態が、フローIDに対する前記適切な宛先ホストのインジケーションを含むときに、前記マルチプレクサーにおいて前記キャッシュした状態にアクセスすることと、
    前記マルチプレクサーにおける前記キャッシュした状態が、フローIDに対する前記適切な宛先ホストを含まないときに、
    オーナー配列を参照して、前記フローIDに対するオーナーマルチプレクサーを特定し、
    キャッシュした状態に対する前記特定したオーナーマルチプレクサーに問い合わせ、および
    前記フローIDに対する前記適切な宛先ホストを示す、キャッシュした状態を、前記特定したオーナーマルチプレクサーから受信する、ことと
    を含み、および
    前記パケットを、特定した適切な宛先ホストに送信するように構成されている
    ことを特徴とするロードバランシングシステム。
JP2013544852A 2010-12-17 2011-12-16 ロードバランサーコンポーネント間の状態の同期 Active JP5889914B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/972,340 US8755283B2 (en) 2010-12-17 2010-12-17 Synchronizing state among load balancer components
US12/972,340 2010-12-17
PCT/US2011/065659 WO2012083264A2 (en) 2010-12-17 2011-12-16 Synchronizing state among load balancer components

Publications (2)

Publication Number Publication Date
JP2014504484A true JP2014504484A (ja) 2014-02-20
JP5889914B2 JP5889914B2 (ja) 2016-03-22

Family

ID=46234270

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013544852A Active JP5889914B2 (ja) 2010-12-17 2011-12-16 ロードバランサーコンポーネント間の状態の同期

Country Status (5)

Country Link
US (3) US8755283B2 (ja)
EP (1) EP2652924B1 (ja)
JP (1) JP5889914B2 (ja)
CN (1) CN102857438B (ja)
WO (1) WO2012083264A2 (ja)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
US9906591B2 (en) 2011-10-24 2018-02-27 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US9961135B2 (en) 2010-09-30 2018-05-01 A10 Networks, Inc. System and method to balance servers based on server load status
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US9979801B2 (en) 2011-12-23 2018-05-22 A10 Networks, Inc. Methods to manage services over a service gateway
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US9992107B2 (en) 2013-03-15 2018-06-05 A10 Networks, Inc. Processing data packets using a policy based network path
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
JP2018164285A (ja) * 2014-05-13 2018-10-18 グーグル エルエルシー エニーキャストデータトラフィックをロードバランシングするための方法およびシステム
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
USRE47296E1 (en) 2006-02-21 2019-03-12 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
JP5724687B2 (ja) * 2011-07-04 2015-05-27 富士通株式会社 情報処理装置、サーバ選択方法、及びプログラム
WO2013074844A1 (en) 2011-11-15 2013-05-23 Nicira, Inc. Load balancing and destination network address translation middleboxes
US8850002B1 (en) * 2012-07-02 2014-09-30 Amazon Technologies, Inc. One-to many stateless load balancing
US8805990B2 (en) 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9477500B2 (en) 2013-03-15 2016-10-25 Avi Networks Managing and controlling a distributed network service platform
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US10038626B2 (en) * 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US9871712B1 (en) 2013-04-16 2018-01-16 Amazon Technologies, Inc. Health checking in a distributed load balancer
US10135914B2 (en) 2013-04-16 2018-11-20 Amazon Technologies, Inc. Connection publishing in a distributed load balancer
US9553809B2 (en) 2013-04-16 2017-01-24 Amazon Technologies, Inc. Asymmetric packet flow in a distributed load balancer
US9559961B1 (en) 2013-04-16 2017-01-31 Amazon Technologies, Inc. Message bus for testing distributed load balancers
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US9843520B1 (en) * 2013-08-15 2017-12-12 Avi Networks Transparent network-services elastic scale-out
US10110684B1 (en) 2013-08-15 2018-10-23 Avi Networks Transparent network service migration across service devices
CN104426936A (zh) * 2013-08-22 2015-03-18 中兴通讯股份有限公司 一种负载均衡方法及系统
US9577845B2 (en) 2013-09-04 2017-02-21 Nicira, Inc. Multiple active L3 gateways for logical networks
US9998530B2 (en) 2013-10-15 2018-06-12 Nicira, Inc. Distributed global load-balancing system for software-defined data centers
US9407692B2 (en) * 2013-11-27 2016-08-02 Avi Networks Method and system for distributed load balancing
US9590901B2 (en) 2014-03-14 2017-03-07 Nicira, Inc. Route advertisement by managed gateways
US9667711B2 (en) 2014-03-26 2017-05-30 International Business Machines Corporation Load balancing of distributed services
US9917727B2 (en) * 2014-06-03 2018-03-13 Nicira, Inc. Consistent hashing for network traffic dispatching
US9674302B1 (en) * 2014-06-13 2017-06-06 Amazon Technologies, Inc. Computing resource transition notification and pending state
US10135737B2 (en) 2014-09-30 2018-11-20 Nicira, Inc. Distributed load balancing systems
US10225137B2 (en) 2014-09-30 2019-03-05 Nicira, Inc. Service node selection by an inline service switch
US9531590B2 (en) 2014-09-30 2016-12-27 Nicira, Inc. Load balancing across a group of load balancers
EP3235198A1 (en) * 2014-12-18 2017-10-25 Nokia Solutions and Networks Oy Network load balancer
US9800653B2 (en) 2015-03-06 2017-10-24 Microsoft Technology Licensing, Llc Measuring responsiveness of a load balancing system
US11283697B1 (en) 2015-03-24 2022-03-22 Vmware, Inc. Scalable real time metrics management
US10594743B2 (en) 2015-04-03 2020-03-17 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US10038628B2 (en) 2015-04-04 2018-07-31 Nicira, Inc. Route server mode for dynamic routing between logical and physical networks
US10333849B2 (en) 2016-04-28 2019-06-25 Nicira, Inc. Automatic configuration of logical routers on edge nodes
US10091161B2 (en) 2016-04-30 2018-10-02 Nicira, Inc. Assignment of router ID for logical routers
US10560320B2 (en) 2016-06-29 2020-02-11 Nicira, Inc. Ranking of gateways in cluster
US10938668B1 (en) * 2016-09-30 2021-03-02 Amazon Technologies, Inc. Safe deployment using versioned hash rings
US10700960B2 (en) * 2016-11-17 2020-06-30 Nicira, Inc. Enablement of multi-path routing in virtual edge systems
US10237123B2 (en) 2016-12-21 2019-03-19 Nicira, Inc. Dynamic recovery from a split-brain failure in edge nodes
US10616045B2 (en) 2016-12-22 2020-04-07 Nicira, Inc. Migration of centralized routing components of logical router
US10541909B2 (en) 2017-06-23 2020-01-21 International Business Machines Corporation Distributed affinity tracking for network connections
US10805181B2 (en) 2017-10-29 2020-10-13 Nicira, Inc. Service operation chaining
US11012420B2 (en) 2017-11-15 2021-05-18 Nicira, Inc. Third-party service chaining using packet encapsulation in a flow-based forwarding element
CN107979646A (zh) * 2017-12-07 2018-05-01 郑州云海信息技术有限公司 一种基于一致性hash策略的PaaS平台负载均衡方法
US10616321B2 (en) 2017-12-22 2020-04-07 At&T Intellectual Property I, L.P. Distributed stateful load balancer
US10797910B2 (en) 2018-01-26 2020-10-06 Nicira, Inc. Specifying and utilizing paths through a network
US10659252B2 (en) 2018-01-26 2020-05-19 Nicira, Inc Specifying and utilizing paths through a network
US10728174B2 (en) 2018-03-27 2020-07-28 Nicira, Inc. Incorporating layer 2 service between two interfaces of gateway device
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US10673764B2 (en) 2018-05-22 2020-06-02 International Business Machines Corporation Distributed affinity tracking for network connections
US11258760B1 (en) 2018-06-22 2022-02-22 Vmware, Inc. Stateful distributed web application firewall
US10944673B2 (en) 2018-09-02 2021-03-09 Vmware, Inc. Redirection of data messages at logical network gateway
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US10771318B1 (en) 2018-10-24 2020-09-08 Vmware, Inc High availability on a distributed networking platform
CN109658238B (zh) 2018-10-26 2020-06-16 阿里巴巴集团控股有限公司 数据处理方法及装置
US11301281B2 (en) 2019-02-22 2022-04-12 Vmware, Inc. Service control plane messaging in service data plane
US10812576B1 (en) * 2019-05-31 2020-10-20 Microsoft Technology Licensing, Llc Hardware load balancer gateway on commodity switch hardware
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
US11223494B2 (en) 2020-01-13 2022-01-11 Vmware, Inc. Service insertion for multicast traffic at boundary
US11153406B2 (en) 2020-01-20 2021-10-19 Vmware, Inc. Method of network performance visualization of service function chains
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11528219B2 (en) 2020-04-06 2022-12-13 Vmware, Inc. Using applied-to field to identify connection-tracking records for different interfaces
US11429452B2 (en) 2020-04-16 2022-08-30 Paypal, Inc. Method for distributing keys using two auxiliary hashing functions
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
CN114221907B (zh) * 2021-12-06 2023-09-01 北京百度网讯科技有限公司 网络哈希配置方法、装置、电子设备和存储介质
US11799761B2 (en) 2022-01-07 2023-10-24 Vmware, Inc. Scaling edge services with minimal disruption
US11888747B2 (en) 2022-01-12 2024-01-30 VMware LLC Probabilistic filters for use in network forwarding and services
CN114928615B (zh) * 2022-05-19 2023-10-24 网宿科技股份有限公司 负载均衡方法、装置、设备及可读存储介质
CN115297191B (zh) * 2022-09-30 2022-12-16 成都云智北斗科技有限公司 一种多数据流服务器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100302940A1 (en) * 2009-05-28 2010-12-02 Microsoft Corporation Load balancing across layer-2 domains
JP2011041006A (ja) * 2009-08-11 2011-02-24 Fujitsu Ltd 負荷分散装置、負荷分散方法および負荷分散プログラム

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371852A (en) * 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
US5793763A (en) 1995-11-03 1998-08-11 Cisco Technology, Inc. Security system for network address translation systems
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US6351775B1 (en) 1997-05-30 2002-02-26 International Business Machines Corporation Loading balancing across servers in a computer network
US6128279A (en) 1997-10-06 2000-10-03 Web Balance, Inc. System for balancing loads among network servers
US6070191A (en) 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
US6993027B1 (en) * 1999-03-17 2006-01-31 Broadcom Corporation Method for sending a switch indicator to avoid out-of-ordering of frames in a network switch
US7299294B1 (en) 1999-11-10 2007-11-20 Emc Corporation Distributed traffic controller for network data
US6622127B1 (en) * 1999-05-11 2003-09-16 Kaiser Foundation Hospitals Order allocation to select from inventory locations stocking few units of inventory
US6704278B1 (en) * 1999-07-02 2004-03-09 Cisco Technology, Inc. Stateful failover of service managers
US6970913B1 (en) 1999-07-02 2005-11-29 Cisco Technology, Inc. Load balancing using distributed forwarding agents with application based feedback for different virtual machines
US20010034752A1 (en) * 2000-01-26 2001-10-25 Prompt2U Inc. Method and system for symmetrically distributed adaptive matching of partners of mutual interest in a computer network
US20020032755A1 (en) 2000-09-13 2002-03-14 Marc Abrahams Registration system and method using a back end server
US7272653B2 (en) * 2000-09-28 2007-09-18 International Business Machines Corporation System and method for implementing a clustered load balancer
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US8112545B1 (en) 2000-12-19 2012-02-07 Rockstar Bidco, LP Distributed network address translation control
US6549997B2 (en) 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US6996058B2 (en) 2001-04-27 2006-02-07 The Boeing Company Method and system for interswitch load balancing in a communications network
US20030005080A1 (en) * 2001-06-28 2003-01-02 Watkins James S. Systems and methods for accessing data
US20030033463A1 (en) * 2001-08-10 2003-02-13 Garnett Paul J. Computer system storage
EP1315349B1 (en) 2001-11-21 2008-03-19 Sun Microsystems, Inc. A method for integrating with load balancers in a client and server system
JP2003163689A (ja) * 2001-11-28 2003-06-06 Hitachi Ltd ネットワーク連携情報処理システムおよびその複数負荷分散機間のアクセス移動方法
US7289525B2 (en) * 2002-02-21 2007-10-30 Intel Corporation Inverse multiplexing of managed traffic flows over a multi-star network
US6856991B1 (en) 2002-03-19 2005-02-15 Cisco Technology, Inc. Method and apparatus for routing data to a load balanced server using MPLS packet labels
US7512702B1 (en) 2002-03-19 2009-03-31 Cisco Technology, Inc. Method and apparatus providing highly scalable server load balancing
US20030225859A1 (en) * 2002-05-31 2003-12-04 Sun Microsystems, Inc. Request mapping for load balancing
US7020706B2 (en) 2002-06-17 2006-03-28 Bmc Software, Inc. Method and system for automatically updating multiple servers
US7280557B1 (en) 2002-06-28 2007-10-09 Cisco Technology, Inc. Mechanisms for providing stateful NAT support in redundant and asymetric routing environments
US7561587B2 (en) 2002-09-26 2009-07-14 Yhc Corporation Method and system for providing layer-4 switching technologies
US7616638B2 (en) * 2003-07-29 2009-11-10 Orbital Data Corporation Wavefront detection and disambiguation of acknowledgments
US20080008202A1 (en) * 2002-10-31 2008-01-10 Terrell William C Router with routing processors and methods for virtualization
US7243351B2 (en) * 2002-12-17 2007-07-10 International Business Machines Corporation System and method for task scheduling based upon the classification value and probability
US7890633B2 (en) 2003-02-13 2011-02-15 Oracle America, Inc. System and method of extending virtual address resolution for mapping networks
US7912954B1 (en) * 2003-06-27 2011-03-22 Oesterreicher Richard T System and method for digital media server load balancing
US7636917B2 (en) * 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7567504B2 (en) 2003-06-30 2009-07-28 Microsoft Corporation Network load balancing with traffic routing
US7613822B2 (en) 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7606929B2 (en) 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US7590736B2 (en) * 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
US9584360B2 (en) 2003-09-29 2017-02-28 Foundry Networks, Llc Global server load balancing support for private VIP addresses
US20050097185A1 (en) 2003-10-07 2005-05-05 Simon Gibson Localization link system
US8572249B2 (en) 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US20050188055A1 (en) 2003-12-31 2005-08-25 Saletore Vikram A. Distributed and dynamic content replication for server cluster acceleration
US8689319B2 (en) 2004-04-19 2014-04-01 Sollitionary, Inc. Network security system
US20060064478A1 (en) * 2004-05-03 2006-03-23 Level 3 Communications, Inc. Geo-locating load balancing
US7813263B2 (en) * 2004-06-30 2010-10-12 Conexant Systems, Inc. Method and apparatus providing rapid end-to-end failover in a packet switched communications network
US20060294584A1 (en) 2005-06-22 2006-12-28 Netdevices, Inc. Auto-Configuration of Network Services Required to Support Operation of Dependent Network Services
DE602004027516D1 (de) 2004-12-03 2010-07-15 St Microelectronics Srl Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7693050B2 (en) * 2005-04-14 2010-04-06 Microsoft Corporation Stateless, affinity-preserving load balancing
US20070055789A1 (en) * 2005-09-08 2007-03-08 Benoit Claise Method and apparatus for managing routing of data elements
US8392400B1 (en) 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
US7694011B2 (en) 2006-01-17 2010-04-06 Cisco Technology, Inc. Techniques for load balancing over a cluster of subscriber-aware application servers
US8274989B1 (en) 2006-03-31 2012-09-25 Rockstar Bidco, LP Point-to-multipoint (P2MP) resilience for GMPLS control of ethernet
AU2008216698B2 (en) * 2007-02-12 2011-06-23 Mushroom Networks Inc. Access line bonding and splitting methods and apparatus
US20080201540A1 (en) 2007-02-16 2008-08-21 Ravi Sahita Preservation of integrity of data across a storage hierarchy
US7768907B2 (en) 2007-04-23 2010-08-03 International Business Machines Corporation System and method for improved Ethernet load balancing
US8561061B2 (en) 2007-05-14 2013-10-15 Vmware, Inc. Adaptive dynamic selection and application of multiple virtualization techniques
US8128279B2 (en) 2008-07-16 2012-03-06 GM Global Technology Operations LLC Cloud point monitoring systems for determining a cloud point temperature of diesel fuel
US8180896B2 (en) 2008-08-06 2012-05-15 Edgecast Networks, Inc. Global load balancing on a content delivery network
US20100036903A1 (en) 2008-08-11 2010-02-11 Microsoft Corporation Distributed load balancer
JP2010061283A (ja) 2008-09-02 2010-03-18 Fujitsu Ltd ロードバランサ設定プログラム,ロードバランサ設定方法及びロードバランサ設定装置
US8433749B2 (en) 2009-04-15 2013-04-30 Accenture Global Services Limited Method and system for client-side scaling of web server farm architectures in a cloud data center
US8737407B2 (en) * 2009-06-22 2014-05-27 Citrix Systems, Inc. Systems and methods for distributed hash table in multi-core system
US8533317B2 (en) * 2009-06-22 2013-09-10 Citrix Systems, Inc. Systems and methods for monitor distribution in a multi-core system
US8645508B1 (en) 2010-03-03 2014-02-04 Amazon Technologies, Inc. Managing external communications for provided computer networks
US8266204B2 (en) 2010-03-15 2012-09-11 Microsoft Corporation Direct addressability and direct server return
EP2553901B1 (en) * 2010-03-26 2016-04-27 Citrix Systems, Inc. System and method for link load balancing on a multi-core device
US8619584B2 (en) * 2010-04-30 2013-12-31 Cisco Technology, Inc. Load balancing over DCE multipath ECMP links for HPC and FCoE
US8533337B2 (en) 2010-05-06 2013-09-10 Citrix Systems, Inc. Continuous upgrading of computers in a load balanced environment
US8547835B2 (en) 2010-10-21 2013-10-01 Telefonaktiebolaget L M Ericsson (Publ) Controlling IP flows to bypass a packet data network gateway using multi-path transmission control protocol connections
US9191327B2 (en) 2011-02-10 2015-11-17 Varmour Networks, Inc. Distributed service processing of network gateways using virtual machines
US8676980B2 (en) 2011-03-22 2014-03-18 Cisco Technology, Inc. Distributed load balancer in a virtual machine environment
US20120303809A1 (en) 2011-05-25 2012-11-29 Microsoft Corporation Offloading load balancing packet modification
CN107071086B (zh) 2011-08-17 2020-06-05 Nicira股份有限公司 逻辑l3路由
US20130159487A1 (en) 2011-12-14 2013-06-20 Microsoft Corporation Migration of Virtual IP Addresses in a Failover Cluster
US9083709B2 (en) 2012-05-11 2015-07-14 Cisco Technology, Inc. Virtual internet protocol migration and load balancing
US20140006681A1 (en) 2012-06-29 2014-01-02 Broadcom Corporation Memory management in a virtualization environment
US8805990B2 (en) 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100302940A1 (en) * 2009-05-28 2010-12-02 Microsoft Corporation Load balancing across layer-2 domains
JP2011041006A (ja) * 2009-08-11 2011-02-24 Fujitsu Ltd 負荷分散装置、負荷分散方法および負荷分散プログラム

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE47296E1 (en) 2006-02-21 2019-03-12 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US10735267B2 (en) 2009-10-21 2020-08-04 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US10447775B2 (en) 2010-09-30 2019-10-15 A10 Networks, Inc. System and method to balance servers based on server load status
US9961135B2 (en) 2010-09-30 2018-05-01 A10 Networks, Inc. System and method to balance servers based on server load status
US9961136B2 (en) 2010-12-02 2018-05-01 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US10178165B2 (en) 2010-12-02 2019-01-08 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US10484465B2 (en) 2011-10-24 2019-11-19 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9906591B2 (en) 2011-10-24 2018-02-27 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9979801B2 (en) 2011-12-23 2018-05-22 A10 Networks, Inc. Methods to manage services over a service gateway
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US10862955B2 (en) 2012-09-25 2020-12-08 A10 Networks, Inc. Distributing service sessions
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US10516577B2 (en) 2012-09-25 2019-12-24 A10 Networks, Inc. Graceful scaling in software driven networks
US10491523B2 (en) 2012-09-25 2019-11-26 A10 Networks, Inc. Load distribution in data networks
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US11005762B2 (en) 2013-03-08 2021-05-11 A10 Networks, Inc. Application delivery controller and global server load balancer
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
US9992107B2 (en) 2013-03-15 2018-06-05 A10 Networks, Inc. Processing data packets using a policy based network path
US10659354B2 (en) 2013-03-15 2020-05-19 A10 Networks, Inc. Processing data packets using a policy based network path
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US10305904B2 (en) 2013-05-03 2019-05-28 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US10257101B2 (en) 2014-03-31 2019-04-09 A10 Networks, Inc. Active application response delay time
JP2018164285A (ja) * 2014-05-13 2018-10-18 グーグル エルエルシー エニーキャストデータトラフィックをロードバランシングするための方法およびシステム
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US10686683B2 (en) 2014-05-16 2020-06-16 A10 Networks, Inc. Distributed system to determine a server's health
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US10749904B2 (en) 2014-06-03 2020-08-18 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US10880400B2 (en) 2014-06-03 2020-12-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies

Also Published As

Publication number Publication date
CN102857438A (zh) 2013-01-02
WO2012083264A3 (en) 2012-10-26
US9438520B2 (en) 2016-09-06
US20120155266A1 (en) 2012-06-21
US20140185446A1 (en) 2014-07-03
US20150063115A1 (en) 2015-03-05
WO2012083264A2 (en) 2012-06-21
US8755283B2 (en) 2014-06-17
JP5889914B2 (ja) 2016-03-22
CN102857438B (zh) 2015-12-02
EP2652924B1 (en) 2020-04-01
EP2652924A4 (en) 2017-10-18
EP2652924A2 (en) 2013-10-23

Similar Documents

Publication Publication Date Title
JP5889914B2 (ja) ロードバランサーコンポーネント間の状態の同期
US10999184B2 (en) Health checking in a distributed load balancer
US11843657B2 (en) Distributed load balancer
US10135914B2 (en) Connection publishing in a distributed load balancer
US9432245B1 (en) Distributed load balancer node architecture
JP6169251B2 (ja) 分散型ロードバランサにおける非対称パケットフロー
US9559961B1 (en) Message bus for testing distributed load balancers
US9176784B2 (en) Load balancing
US9871712B1 (en) Health checking in a distributed load balancer
US8356078B2 (en) Multi-homed data forwarding storage
US10735250B2 (en) Dynamic distributor selection for network load balancing
US20210329069A1 (en) Distributed resilient load-balancing for multipath transport protocols
US8825877B2 (en) Session persistence
EP3977707B1 (en) Hardware load balancer gateway on commodity switch hardware
US7711780B1 (en) Method for distributed end-to-end dynamic horizontal scalability
US20090190495A1 (en) General multi-link interface for networking environments
JP5283271B2 (ja) ネットワークにおけるサーバ選択方法,選択システム及びプログラム
JP4774814B2 (ja) サーバアクセス制御システム、サーバアクセス制御方法およびサーバアクセス制御プログラム
CN113098788A (zh) 一种路由发布的方法及装置
CN114826887B (zh) 私网连接通信方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141120

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151224

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: 20160119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160217

R150 Certificate of patent or registration of utility model

Ref document number: 5889914

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

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