JP6781266B2 - 輻輳を考慮したロードバランシングのための仮想トンネルエンドポイント - Google Patents

輻輳を考慮したロードバランシングのための仮想トンネルエンドポイント Download PDF

Info

Publication number
JP6781266B2
JP6781266B2 JP2018553946A JP2018553946A JP6781266B2 JP 6781266 B2 JP6781266 B2 JP 6781266B2 JP 2018553946 A JP2018553946 A JP 2018553946A JP 2018553946 A JP2018553946 A JP 2018553946A JP 6781266 B2 JP6781266 B2 JP 6781266B2
Authority
JP
Japan
Prior art keywords
packet
tunnel endpoint
virtual tunnel
packets
endpoint
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
JP2018553946A
Other languages
English (en)
Other versions
JP2019514294A5 (ja
JP2019514294A (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.)
Nicira Inc
Original Assignee
Nicira Inc
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 Nicira Inc filed Critical Nicira Inc
Publication of JP2019514294A publication Critical patent/JP2019514294A/ja
Publication of JP2019514294A5 publication Critical patent/JP2019514294A5/ja
Application granted granted Critical
Publication of JP6781266B2 publication Critical patent/JP6781266B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • 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/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/125Shortest path evaluation based on throughput or bandwidth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • 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/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • 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
    • H04L47/115Identifying congestion using a dedicated packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets

Landscapes

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

Description

本明細書で別段の説明がない限り、このセクションに記載されたアプローチは、このセクションに含めることによって先行技術であると認められるものではない。
複数のデータセンタネットワークは、概して、多数のマルチ経路によって特徴付けられるマルチルートトポロジを採用する。例えば、複数の物理サーバは、パケット転送の代替経路を提供する多数のスイッチを用いて相互に接続される。物理サーバが別の物理サーバに送信するデータを有する場合、複数の経路のうちの1つが選択されて、データが複数のパケットのフローとして送信される。実際には、トラフィックは、異なる経路間で均等に分配されないことがあり、1つの経路の過剰利用と別の経路の利用不足の原因となる。ロードバランシングは、トラフィックをできるだけ均等に分散させて輻輳を減らし且つネットワークパフォーマンスを向上させるために重要である。
輻輳を考慮したロードバランシングが実行されるデータセンタネットワークの一例を示す概略図。 送信元仮想トンネルエンドポイント(VTEP)がデータセンタネットワーク内で輻輳を考慮したロードバランシングを実行するための例示的なプロセスのフローチャート。 送信元VTEPがデータセンタネットワーク内の輻輳状態情報を学習するための第1の例示的なプロセスのフローチャート。 送信元VTEPがデータセンタネットワーク内の輻輳状態情報を学習するための第2の例示的なプロセスのフローチャート。 図4Aの例に従って学習された輻輳状態情報の一例を示す概略図。 送信元VTEPがデータセンタネットワークにおいてデータパケット処理を実行するための例示的なプロセスのフローチャート。
以下の詳細な説明では、本明細書の一部を形成する添付の図面を参照する。図面において、類似の記号は、説明が別途指示しない限り、典型的には同様の構成要素を特定する。詳細な説明、図面、および特許請求の範囲に記載された例示的な実施形態は、限定を意味するものではない。本明細書に提示される主題の趣旨または範囲から逸脱することなく、他の実施形態が利用されてもよく、他の変更が行われてもよい。本明細書に全体的に記載され、図面に示された本開示の態様は、多種多様な異なる構成で配置され、置換され、結合され、構成され、これらのすべてが本明細書において明示的に企図されることは容易に理解されるだろう。
複数のデータセンタネットワークにおけるロードバランシング(load balancing)の課題は、輻輳を考慮したロードバランシングが実行される例示的なデータセンタネットワーク100を示す概略図である図1を参照してより詳細に説明される。データセンタネットワーク100は、所望の実施形態に従って、示されるコンポーネントに対する追加および/または代替のコンポーネントを含むことができることを理解されたい。
図1の例では、データセンタネットワーク100は、「VTEP−A」110および「VTEP−B」120等の仮想トンネルエンドポイント(virtual tunnel endpoints : VTEPs)によって提供される複数の経路を介して接続される第1のエンドポイント102(「EP−A」参照)および第2のエンドポイント104(「EP−B」参照)を含む。「VTEP−A」110は、「A1」130、「S1」140、「S2」150および「A2」160などの複数の中間スイッチによって提供される複数の経路を介して「VTEP−B」120に接続される。送信元「EP−A」102から送信先「EP−B」104に複数のデータパケットを転送する場合、複数のデータパケットは、「A1」130、「S1」140および「A2」160を経由する第1の経路、および「A1」130、「S2」150、および「A2」160を経由する第2の経路のうちの一つで転送され得る。
実際には、用語「仮想トンネルエンドポイント」(例えば、「VTEP−A」110および「VTEP−B」120)は、複数のパケット転送サービス、複数のロードバランシングサービス、複数のゲートウェイサービス等を複数のエンドポイント(例えば、「EP−A」102および「EP−B」104)に提供するように構成される任意の好適な複数のネットワーク要素に言及する。VTEP110/120は、1つまたは複数の物理エンティティまたは仮想エンティティによって具体化されてもよい。例えば、VTEP110/120は、物理コンピューティングデバイス(例えば、エッジデバイス、物理サーバなど)によってサポートされる(supported)ハイパーバイザ(例えば、ハイパーバイザの仮想スイッチ)によって具体化されてもよい。VTEP110/120およびそれに関連するエンドポイント102/104は、同じ物理コンピューティングデバイス上に、または異なるコンピューティングデバイス上に存在してもよい。例えば、「EP−A」102は仮想マシンであり、「VTEP−A」110は同じ物理サーバによってサポートされる仮想スイッチである。別の例では、「EP−A」102は、第1の物理サーバによってサポートされる仮想マシンであり、「VTEP−A」110は、第1の物理サーバに接続される第2の物理サーバまたは物理的トップ・オブ・ラック(top-of-rack : ToR)スイッチによってサポートされる。
用語「エンドポイント」(例えば、「EP−A」102および「EP−B」104)は、一般的に、双方向性プロセス間通信フローの送信元ノード(「送信元エンドポイント」)または終端ノード(「送信先エンドポイント」)に言及する。実際には、エンドポイントは、物理コンピューティングデバイス(例えば、物理サーバ、物理ホスト)、物理コンピューティングデバイスによってサポートされる仮想化コンピューティングインスタンスなどであってもよい。仮想化されたコンピューティングインスタンスは、ワークロード、仮想マシン、アドレス指定可能なデータコンピューティングノード、隔離されたユーザ空間インスタンスなどを表してもよい。実際には、任意の適切な技術が、ハードウェア仮想化を含むが限定されない隔離された複数のユーザ空間インスタンスを提供するように用いられる。他の仮想化されたコンピューティングインスタンスは、(例えば、ハイパーバイザまたはDockerなどの別個のオペレーティングシステムを必要とせずにホストオペレーティングシステムの上で動作するか、またはオペレーティングシステムレベルの仮想化として具体される)複数のコンテナ(container)、複数の仮想プライベートサーバなどを含み得る。複数の仮想マシンは、物理コンピューティングシステムのハードウェアおよびソフトウェアコンポーネントの仮想等化物を含む完全な計算環境であってもよい。用語「ハイパーバイザ」は、一般的に、Dockerなどの複数の名前空間コンテナをサポートするシステムレベルのソフトウェアを含む複数の仮想化されたコンピューティングインスタンスの実行をサポートするソフトウェア層またはコンポーネントに言及する。
用語「スイッチ」(例えば、「A1」130、「S1」140、「S2」150および「A2」160)は、概して複数のパケットを受信および転送するように構成された任意の適切なネットワーク要素に言及してもよく、レイヤ3ルータ、レイヤ2スイッチ、ゲートウェイ、ブリッジなどでもよい。ネットワークトポロジに応じて、スイッチはToRスイッチ、アグリゲートスイッチ(aggregate switch)、スパインスイッチ(spine switch)などでもよい。簡略化のために、図1には2つの代替的な経路が示されているが、経路の数は、相互接続されたスイッチの数およびマルチルートトポロジ(例えば、リーフスパイントポロジ(leaf-spine topology)、ファットツリートポロジ(fat-tree topology)など)等のデータセンタネットワーク100に依存する。さらに、「VTEP−A」110と「VTEP−B」120を接続する追加のスイッチが図1に示すものよりも存在してもよい。
用語「レイヤ2(layer-2)」は、一般的に、データリンクレイヤ(例えば、メディアアクセス制御(Media Access Control : MAC)またはイーサネットレイヤ)に言及し、用語「レイヤ3」は、ネットワークレイヤ(例えば、インターネットプロトコル(Internet Protocol : IP)レイヤ)に言及し、「レイヤ4」は、オープンシステム相互接続(Open System Interconnection : OSI)モデルにおけるトランスポート層(例えば、伝送制御プロトコル(Transmission Control Protocol : TCP)層)に言及するが、本明細書で説明される概念は、他のネットワークモデルにも適用可能であり得る。用語「パケット」は、一般的に、一緒に転送される1群のビットに言及し、「フレーム」、「メッセージ」、「セグメント」などの別の形態であってもよい。
「VTEP−A」110と「VTEP−B」120との間の接続を提供するために、「トンネル」(簡略化のために図示せず)が、任意の適切なプロトコル(例えば、GENEVE(Generic Network Virtualization Encapsulation)、STT(Stateless Transport Tunneling)またはVXLAN(Virtual eXtension Local Area Network))を用いて複数のVTEP間で確立される。用語「トンネル」は、一般的に、一対のVTEP間のエンドツーエンド且つ双方向通信の経路に言及する。この場合、「EP−A」102から複数のデータパケット(図1の170参照)を転送する前に、「VTEP−A」110はカプセル化を実行してカプセル化された複数のパケットを生成する(図1の172参照)。
より詳細には、各データパケット170は、(図1では「I」の符号が付されている)「内部ヘッダ情報(inner header information)」およびペイロードとしてのアプリケーションデータを含む。カプセル化された後、カプセル化された各パケット172は、(図1では「O」の符号が付されている)外部ヘッダ情報(outer header information)およびペイロードとしてのデータパケット170を含む。(「外部トンネルヘッダ」としても知られている)「外部ヘッダ情報」は、外部レイヤ2ヘッダ、外部レイヤ3ヘッダ、外部レイヤ4ヘッダ等を含み得る。カプセル化が実行されて、(例えば、130〜160によって形成される)ファブリック・オーバーレイ(fabric overlay)が外部トンネルヘッダに基づいて一対のVTEP間のパケット転送を実行するだけでよい。
実際には、トラフィック負荷は、データセンタネットワーク100内の異なる複数の経路間で不均一に広がり、輻輳および性能低下を引き起こす可能性がある。従来、(例えば、ホップ数が等しい)等価コストで複数の経路にわたって均一にトラフィックを分散させるために、データプレーン・ロードバランシングメカニズム(data plane load balancing mechanism)として、等価コストマルチパスルーティング(equal cost multipath routing : ECMP)が一般的に用いられている。ECMPスイッチは、単純なハッシュベースのロードバランシングスキーム(hash-based load balancing scheme)を用いて、新しい各トラフィックのフローを利用可能な複数の経路のうちの1つにランダムに割り当てる。ECMPは、通常、ロードバランシングスキームを更新するために、柔軟性に欠けるカスタムシリコン(例えば、特定用途向け集積回路(ASIC))に実装される。さらに、ECMPは輻輳に依存せず、性能低下の原因となる複数の経路のオーバーサブスクリプション(oversubscription)を防止しない。
例えば、図1では、「EP−A」102から「EP−B」104へ転送する複数のパケットのキュー占有レベル(queue occupancy levels)(複数の括弧内の180〜186を参照)を用いて示されるように、異なる対のスイッチを接続する複数のリンクは異なる輻輳レベルを有する。「S1」140を介した第1の経路に沿ったキュー占有レベルは40%(180参照)および50%(182参照)である。「S2」150を介した第2の経路に沿ったキュー占有レベルは30%(184参照)および80%(186参照)である。ECMPは異なる輻輳レベルを考慮しないため、長時間実行されるフローは、80%(186参照)のキュー占有レベルを有する輻輳が発生する「S2」150を介した第2の経路に割り当てられる可能性がある。
従来、制御プレーン・ロードバランシングメカニズムが、ECMPの欠点に対処するために用いられている。この場合、中央制御装置がデータセンタネットワーク100に配置されて、「A1」130、「S1」140、「S2」150および「A2」160から統計を収集し且つ転送ルールを「A1」130、「S1」140、「S2」150および「A2」160にプッシュして(push)、制御プレーン・ロードバランシングを実現する。しかしながら、中央制御装置が必要とされるので、制御プレーンメカニズムは、制御ループの待ち時間(latency)が長いために比較的遅く且つ高い揮発性のトラフィック(volatile traffic)を扱うことができない。
従来、ホストベース(host-based)のアプローチが、ECMPの欠点に対処するために用いられている。例えば、マルチパスTCP(multipath TCP : MPTCP)と呼称される修正されたバージョンの伝送制御プロトコル(TCP)が、複数のエンドポイント間に複数のサブフローを確立して、異なる複数の経路でトラフィックを分割するように用いられる。しかしながら、ホストベースのアプローチは、通常、MPTCPの場合に「EP−A」102および「EP−B」104のTCP/IPスタックを変更するなど、すべてのエンドポイントへの変更を必要とする。そのような変更は、特に、「EP−A」102および「EP−B」104が異なるオペレーティングシステムを実行している場合、または異なるエンティティによって制御されている場合には、特に困難である(場合によっては不可能である)。
輻輳を考慮したロードバランシング(Congestion-aware load balancing)
本開示の例によれば、輻輳を考慮したロードバランシングのアプローチは、関連する「EP−A」102に気付かれない方法で「VTEP−A」110によって実施され得る。上述した従来のアプローチとは異なり、本開示の例は、MPTCPを実施するための「EP−A」102の変更、または新しいロードバランシングスキームを実施するための中間スイッチ130〜160の変更を必要とせずに具体化され得る。さらに、制御プレーンロードバランシングメカニズムとは異なり、中央制御装置を設けて輻輳監視を実行し且つ中間スイッチ130〜160に転送ルールをプッシュする必要がない。
より詳細には、図2は、送信元VTEP110がデータセンタネットワーク100内で輻輳を考慮したロードバランシングを実行するための例示的なプロセス200のフローチャートである。例示的なプロセス200は、205〜240などの1つまたは複数のブロックによって例示される1つ以上の工程、機能、動作を含むことができる。様々なブロックは、より少数のブロックと組み合わされ、追加のブロックに分割され、および/または所望の実施形態に応じて除去され得る。
以下、「VTEP−A」110が送信元VTEPの例として用いられ、「VTEP−B」120が送信先VTEPの例として用いられ、「S1」140および「S2」150が中間スイッチの例として用いられ、「EP−A」102が「送信元エンドポイント」として用いられ、「EP−B」104が「送信先エンドポイント」として用いられる。キュー占有レベルは図1のデータセンタネットワーク100における輻輳を示す一例として用いるが、リンク利用レベル、ラウンドトリップタイム(round trip time : RTT)などの輻輳の他の適切なインジケータが用いられてもよい。
図2の205において、「VTEP−A」110は、「VTEP−A」110と「VTEP−B」120とを接続する中間スイッチ130〜160によって提供される複数の経路に関連する輻輳状態情報(図1の190参照)を学習する(learn)。輻輳状態情報は、「VTEP−B」120からの送信先から送信元への(destination-to-source)フィードバック情報(図1の188参照)を示す第1のパケットに基づいて学習され得る。図2の210において、「VTEP−A」110は、「EP−A」102によって送信され且つ「EP−B」104宛ての複数の第2の(データ)パケット170を受信する。例えば、複数の第2のパケット170は、「EP−A」102上で動作するアプリケーションから「EP−B」104上で動作する別のアプリケーションまでのアプリケーションデータを含み得る。各第2のパケット170は、概して、「EP−A」102と「EP−B」104との間のプロセス間通信に関連する(図1では、「I」の符号が付された)内部ヘッダ情報を含む。
図2の220において、「VTEP−A」110は、複数の経路から特定の経路(「選択経路」とも呼称される)を選択する。例えば、図1では、「VTEP−A」110は、複数の経路に関連する輻輳状態情報に基づいて、「A1」130、「S1」140および「A2」160を介した第1の経路を選択し得る。図2の230において、「VTEP−A」110は、220で選択された経路に関連するタプルセット(a set of tuples)を含む(外部)ヘッダ情報を有する各第2のパケット170をカプセル化することによってカプセル化された複数の第2のパケット172を生成する。図2の240において、「VTEP−A」110は、カプセル化された第2のパケット172を送信先「EP−B」104に送信して、カプセル化された第2のパケット172は、タプルセットに基づいて選択された経路を介して転送される。
図3を用いてさらに説明されるように、「VTEP−A」110は、異なる外部送信元ポート番号(source_PN192を参照)を対応する経路(path_ID194)および輻輳を示すフラグ(congestion_flag196を参照)に関連付ける輻輳状態情報(図1の190参照)に依存し得る。例えば、パケット転送を実行する前に、「VTEP−A」110は、source_PN192とpath_ID194との間のマッピングを学習するために、経路学習(path learning)を実行し得る。「S1」140を介した第1の経路については、source_PN=SP1およびpath_ID=P1である。「S2」150を介した第2の経路については、source_PN=SP2およびpath_ID=P2である。
図3を用いてさらに説明されるように、「VTEP−A」110は、source_PN192とcongestion_flag196の異なる対の間のマッピングを学習してもよい。一例では、「VTEP−A」110は、データセンタネットワーク100内の輻輳状態情報のエンドツーエンド通知を可能にする明示的輻輳通知(Explicit Congestion Notification : ECN)などの既存の機能中間スイッチ(existing capabilities intermediate switches)130〜160に依存し得る。この場合、パケットをドロップする代わりに、中間スイッチ130〜160は、特定の経路に関連する現在のまたは目下の輻輳を「VTEP−B」120に通知するために、輻輳通知のフォームとしてパケットマーキングを受信する。その後、「VTEP−B」120は、「VTEP−A」110(図1の188参照)に輻輳通知を報知する。ECNの他に、他の適切なアプローチが、輻輳状態情報を学習するために用いられてもよい。例えば、図4Aおよび図4Bを用いてさらに説明されるように、「VTEP−A」110は、「VTEP−A」110と「VTEP−B」120との間のRTTを測定することができる。
図1の例では、カプセル化された各第2のパケット172は、選択された経路に関連するタプルセットを含む外部ヘッダ情報を含む。具体的には、カプセル化された各第2のパケット172は、外部レイヤ2ヘッダ、外部レイヤ3ヘッダ、および外部レイヤ4ヘッダなどの(「O」の符号が付けされている)外部ヘッダ情報を含む。タプルセットは、送信元ポート番号、送信先ポート番号、送信元IPアドレス、送信先IPアドレス、およびプロトコルを含み得る。「S1」140を介した第1の経路(すなわち、path_ID=P1)について、外部レイヤ4ヘッダは、source_PN=SP1の値を有する送信元ポート番号を含み得る。送信元ポート番号は、選択された経路に沿って「A1」130、「S1」140および「A2」160を介してカプセル化された複数のパケット172が転送されるように設定される。送信先「VTEP−B」120において、カプセル化の解除が実行されて外部ヘッダ情報を除去し、データパケット174が「EP−B」104に送信される。
例示的なプロセス200を用いて、「VTEP−A」110は、異なる複数の経路に関連付けられた輻輳状態情報190を考慮して、データセンタネットワーク100内の異なる複数の経路上に仮想ネットワークトラフィックを分配することができる。「VTEP−A」110は、異なる経路上にカプセル化された第2のパケット172を送信したいときはいつでも、異なる外部送信元ポート番号を選択することができる。「VTEP−A」110と「VTEP−B」120とを接続する中間スイッチ130〜160は外部ヘッダ情報に基づいてロードバランシングを実行するので、外部レイヤ4ヘッダ内の外部送信元ポート番号はエントロピーとして用いられ、データセンタネットワーク100内の複数の経路(例えば、等コストパス(equal-cost paths))を利用する。
輻輳状態情報
図3は、第1の例によるデータセンタネットワーク100内の輻輳状態情報190を学習するための送信元VTEP110の例示的な第1のプロセス300のフローチャートである。例示的なプロセス300は、310〜365などの1つまたは複数のブロックによって示される1つまたは複数の工程、機能、または動作を含み得る。様々なブロックは、より少数のブロックに組み合わされ、追加のブロックに分割され、および/または所望の実施形態に応じて除去され得る。図1の例を用いて、例示的なプロセス300は、「VTEP−A」110によって実行され得る。
図3の310において、「VTEP−A」110は、source_PN192およびpath_ID194の複数の対の間のマッピングまたは関連付けを学習する。例えば、図1において、source_PN192の異なる値は、データセンタネットワーク100内の異なる重なり合わない複数のECMP経路を導く可能性がある。マッピングは、「VTEP−A」110がパケット転送のために選択することができる異なる複数の経路の先験的知識を示す。ECMPハッシング(ECMP hashing)がsource_PN192の特定の値を含むタプルセットに適用される場合、結果として関連する経路がpath_ID194によって識別される。
実際には、「VTEP−A」110は、各経路で検出されたすべてのインタフェースIPに関する「トレースルート(traceroute)」スタイル情報を収集するために、(例えば、Paris tracerouteの後にモデル化される)バックグラウンドデーモンを実施して、データセンタネットワーク100内の他のすべてのVTEPに定期的なプローブパケットを送信する。「VTEP−A」110は、各プローブパケットの外部ヘッダ情報内の外部送信元ポート番号を変更して(rotate)、各ポート番号に対する経路トレースを収集することができる。次に、「VTEP−A」110は、対応するプローブ経路トレースがこれまで収集されたトレースと異なるたびに、輻輳状態情報190を更新してsource_PN192を追加または更新する。
図3のブロック315〜360は、path_ID194によって識別される経路と、その経路に沿った輻輳を示すcongestion_flag196とを関連付ける輻輳状態情報190を学習する「VTEP−A」110に関する。特に、図3の315および320において、「VTEP−A」110は、source_PN192の特定の値を含む外部トンネルヘッダを有する複数のパケットをカプセル化し、カプセル化された複数のパケットを送信する。
図3の例では、「VTEP−A」110は、現在のまたは目下の輻輳などを示すためのECNマーキングなどの既存のスイッチの輻輳通知機能に依存することができる。ECNの詳細情報は、コメント番号3168のインターネットエンジニアリングタスクフォース(Internet Engineering Task Force : IETF)で見つけられ、「IPへの明示的輻輳通知(ECN)の追加」と題されており、これは参照によりその全体が本明細書に組み込まれる。例としてECNが説明されているが、任意の他の適切なパケットマーキングのアプローチを使用できることを理解されたい。
図3の325,330,335及び340において、「VTEP−A」110からカプセル化された複数のパケットを受信することに応答して、スイッチ(例えば、「S1」140、「S2」150)は、ECNマーキングを実行して、カプセル化された複数のパケットを転送する前にこのスイッチにおける輻輳にフラグを立てる。この場合、スイッチは、輻輳通知のフォームとしてカプセル化された複数のパケットのヘッダ情報(例えば、TCPヘッダの予約されたフィールド)を変更することができるECN対応スイッチ(ECN-enabled switch)として知られている。
例えば、図1において、「S2」150におけるキュー占有レベル(例えば、80%)が所定の閾値(例えば、T=60%)を超えるとき、「S2」150は、「VTEP−A」110から受信された複数のパケットをマークキングして、「VTEP−B」120に輻輳を通知して、第2の経路が輻輳した経路であることを示す。一方、関連するキュー占有レベル(例えば、50%)が閾値未満であるため、「S1」140が任意のパケットマーキングを実行する必要はなく、それによって第1の経路が非輻輳の経路であることを示す。
図3の345および350において、送信先「VTEP−B」120は、カプセル化されたパケットを受信し、外部ヘッダ情報内の外部送信元ポート番号と送信元「VTEP−A」110(図1の188も参照)への任意の輻輳通知(例えば、ECNマーキング)との間のマッピングを通知する。図3の355および360において、「VTEP−A」110は、source_PN192と、関連するcongestion_flag196(すなわち、フラグ情報)との間のマッピングを更新する。例えば、図1において、「VTEP−A」110は、「S1」140を介した第1のパスのsource_PN=SP1についてはcongestion_flag=falseであることを判定し、「S2」150を介した第2のパスのsource_PN=SP1についてはcongestion_flag=trueであると判定する。
congestion_flagは、関連する経路の選択の可能性に影響を与える重み付けアルゴリズムにおいて使用されてもよい。ロードバランシングプロセスの開始時に、「VTEP−A」110は、図3の310で経路学習機能によって発見されたすべての等コスト経路について等しい重み付けで開始することができる。続いて、図3の365で、輻輳フラグに基づいて経路の重み付け(図1の重み付け198参照)が調整される。例えば、congestion_flag=false(すなわち、クリア)であるとの判定に応答して、「S1」140を介した第1の経路に関連するweight=w1は、選択の可能性を増大するために増大される。一方、congestion_flag=true(すなわち、セット)であるとの判定に応答して、「S2」150を介した第2の経路に関連するweight=w2は、選択の可能性を低減するために低減される。
輻輳を示すために使用され得る別のメトリックは、各経路について測定され且つアクティブに追跡され得るRTTである。例は、送信元VTEP110がデータセンタネットワーク100内の輻輳状態情報を学習する第2の例示的なプロセス400のフローチャートである図4Aを用いて説明される。プロセス400の例は、410〜455などのより多くのブロックにより例示される1つ以上の工程、機能、または動作を含み得る。様々なブロックは、より少数のブロックに組み合わされ、複数の追加のブロックに分割され、および/または所望の実施形態に応じて除去され得る。
図4Aの410,415および420において、「VTEP−A」110は、関連するスイッチ140/150を介した各経路上に複数のプローブパケットを周期的に送信し、各プローブパケットはsource_PNおよび送信(Tx)タイムスタンプを識別する。図4Aの425,430および435において、「VTEP−B」120は、スイッチ140/150を介してsource_PNおよびTxタイムスタンプも識別する確認応答(ACK)パケットを送信することによって、各プローブパケットに応答する。図4Aの440および445で、特定の受信時刻にACKパケットを受信したことに応答して、「VTEP−A」110は、受信時刻とTxタイムスタンプとの間の差に基づいてRTTを決定することができる。図4Aの450および455において、「VTEP−A」110は、RTTをsource_PNに関連付け、経路に関連する重み付けを調整する。
図4Bは、図4Aの例を用いて学習された例示的な輻輳状態情報460を示す概略図である。例えば、「S1」140を介した第1の経路は、source_PN=SP1(462参照)、path_ID=P1(464参照)、RTT=R1(466参照)およびweight=w1(468参照)に関連付けられる。「S2」150を介した第2の経路は、source_PN=SP2、path_ID=P2、RTT=R2およびweight=w2に関連付けられる。図1の例では、第2の経路が、第1の経路よりも高い輻輳レベルを有し、R2はR1よりも大きくすべきである。この場合、w2はw1よりも小さく調整されて、第2経路の選択の可能性が低減される。実際には、タイムスタンプと肯定応答(acknowledgement)が行われることが近いほど、トランスミッタとレシーバのソフトウェアスタックによって導入されるレイテンシを含まないため、RTTは経路の実際のネットワークレイテンシをより正確に反映する。
データパケット処理
本開示の例によれば、ロードバランシングは、TCPなどのトランスポート層プロトコルに関連するパケット並べ替え問題を回避または改善するために、複数のフローレットの粒度(granularity of flowlets)で実行され得る。これは、複数のパケットのフローを「フローレット(flowlet)」と呼称される複数のより小さいグループに分割することによって達成され得る。本明細書で使用される用語「フローレット」は、概して、フロー内のパケットのグループまたはバースト(burst)に言及する。
図5は、仮想トンネルエンドポイント110がデータセンタネットワーク100においてデータパケット処理を実行する例示的なプロセス500のフローチャートである。例示的なプロセス500は、510〜560等の1つまたは複数のブロックによって示される1つまたは複数の工程、機能、動作を含み得る。種々のブロックは、より少数のブロックに組み合わされ、追加のブロックに分割され、および/または所望の実施形態に応じて除去され得る。
510および515において、「EP−A」102からのデータパケット170を受信したことに応答して、「VTEP−A」110は、データパケット170が新しいフローレットまたは現在のフローレットに属するかどうかを判定する。例えば、同じフロー内の2つの連続するパケットの到着の時間間隔(すなわち、パケット間ギャップ(inter-packet))が所定の閾値(例えば、Tflowlet秒;515参照)を超えるたびに、新しいフローレットが検出され得る。しきい値を超えないすべての後続パケットは、同じフローレットの一部であるとみなされる。2つのシナリオが以下で説明される。
(a)新しいフローレットが検出されたとき(すなわち、パケット間ギャップ>Tflowletまたはフローの第1パケットが検出されたとき)、「VTEP−A」110は、図5の520においてデータパケット170にflowlet_ID(例えば、「F1」)を割り当てる。図5の525において、その時点の輻輳状態情報190/460に基づいて、新しいフローレット(525参照)に対して、path_ID(例えば、「P1」)によって識別される経路が選択される。図5の530において、選択された経路に関連するsource_PNが決定され、選択された経路に関連するflowlet_IDとsource_PN(例えば、「SP1」)との間の関連性が記憶される。「VTEP−A」110は、フローレットの最新のデータパケット170が受信された時刻を記録するためのflowlet_timeも記憶する。
(b)既存のフローレットのデータパケット170が検出されたとき(すなわち、パケット間ギャップ=現在の時刻−flowlet_time≦Tflowlet)、「VTEP−A」110は、図5の550および555において、現在のflowlet_ID(たとえば「F1」)および関連するsource_PN(たとえば「SP1」)を取得する。同様に、図5の560において、「VTEP−A」110は、フローレットの最新のデータパケット170が受信された時刻を記録するためのflowlet_timeも記憶する。
(a)および(b)の両方の場合、例示的なプロセス500は、図5の535および540に続き、「VTEP−A」110は、flowlet_ID(例えば、「F1」)に関連付けられたsource_PN(例えば「SP1」)の値を有する外部送信元ポート番号を含むように構成された外部トンネルヘッダを有するデータパケット170をカプセル化し、カプセル化されたデータパケット172を送信する。外部トンネルヘッダはまた、「VTEP−A」110に関連する送信元IPアドレスと、「VTEP−B」120に関連する送信先IPアドレスを含む。送信先では、パケットが「EP−B」104に転送される前に、外部トンネルヘッダが「VTEP−B」120によって除去される。
図5の515でパケット間ギャップを超過したとき、flowlet_ID=「F2」などの別のフローレットに属する後続のデータパケット170に対して上記事項を繰り返すことができることを理解されたい。この場合、輻輳状態情報190/460が変更され、「S1」140を介した第1の経路の代わりに「S2」150を介した第2の経路(すなわち、path_ID=P2)が選択され得る。この場合、関連するsource_PN=SP2は、カプセル化されたデータパケット172が第2の経路に沿って「A1」130、「S2」150および「A2」160によって「VTEP−B」120に転送されるような外部ヘッダ情報に含まれる。
本開示の例を用いて、「VTEP−A」110は、新しいフローレットのflowlet_IDを記憶し、同じフローレットの複数のパケットのために関連するsource_PNを再利用する。実際には、閾値Tflowletは、ネットワークにおいて(例えば、RTTのオーダーにおいて)推定RTTに基づいて設定されてもよい。複数のフローレット間のパケット間ギャップが大きいことは、(技術的には同じフローの一部である)複数のフローレットが異なる経路を用いる場合、パケットの並べ替えを最小限に抑えることを保証する。さらに、「VTEP−A」110は、選択された経路を用いるようにするために、新しい各フローレットに対して最小の輻輳を有する外部送信元ポート番号を割り当てることができる。これにより、すべてのアクティブな経路のキューが常に低く保たれるため、ワークロードのスループットおよびレイテンシが向上する。
本開示の複数の例は、(例えば、「EP−A」102および「EP−B」104として動作する)複数のゲスト仮想マシンに気付かれない方法でネットワークフローを複数の非輻輳の経路に分割するように「VTEP-A」110を構成することによって、エンドユーザの複数のゲスト仮想マシンに気付かれないように実施される。一例では、(例えば、「VTEP−A」110として動作する)送信元仮想スイッチと、(例えば、「VTEP−B120」として動作する)送信先仮想スイッチの両方が用いられ得る。この場合、フローは任意に複数のフローレットに分割され、複数のフローレット間のアイドルギャップ(idle gap)に左右されない。
例えば、各TCPセグメンテーションオフロード(TCP segmentation offload : TSO)セグメントは、フローレットとして扱うことができる。用いられる複数のフローが異なるために送信先仮想スイッチで複数のフローレットが順番に関係なく(out of order)到着した場合、送信先仮想スイッチは、それらを送信先エンドポイント(例えば、ゲスト仮想マシン)に配信する前に、複数のフローレットを並べ替えることができる。これにより、送信先仮想スイッチは、送信先エンドポイントの送信先プロトコルスタック(例えば、TCP/IPスタック)から順番に関係なく到達したことを隠して、送信先プロトコルスタックが、送信元エンドポイントでの送信元プロトコルスタックの遅延を防止することができる。
本開示の例は、ハイパーバイザの仮想スイッチで具体化され、トラフィックの第1のエントリポイントからインテリジェントな経路選択に導かれる。たとえば、仮想スイッチ以降の複数のECMP経路が存在する可能性があり、各経路は、異なる物理NICを用いる。この場合、本開示の例は、プロセッサを含むホストと、一組の命令を記憶する非一時的なコンピュータ可読記憶媒体とを含むホストを用いて具体化され得る。プロセッサによる実行に応答して、1組の命令は、図1〜図5の例にしたがって、プロセッサに、データセンタネットワーク100における輻輳認識ロードバランシングを実行するために、送信元VTEP(例えば、ホストによってサポートされる仮想スイッチにおける「VTEP−A」110)を具体化させる。
一例では、ホストによって実装された送信元VTEPは、送信先VTEPからの複数の第1のパケットに基づいて、送信元VTEPを送信先VTEPに接続する対応する複数の中間スイッチによって提供される複数の経路に関連する輻輳状態情報を学習することができる。また、送信元エンドポイントによって送信され、送信先VTEPに関連付けられた送信先エンドポイント宛ての複数の第2のパケットを受信することに応答して、送信元VTEPは、輻輳状態情報に基づいて複数の経路から特定の経路を選択し、複数の第2のパケットの各々を、前記特定の経路に関連する1組のタプルを含むヘッダ情報でカプセル化することによってカプセル化された複数の第2のパケットを生成し、カプセル化された複数の第2のパケットが1組のタプルに基づいて特定の経路を介して転送されるように、カプセル化された複数の第2のパケットを送信先エンドポイントに送信する。
すべての物理NICが同じレイヤ3に接続するシナリオでは、ネクストホップ(next-hop)および経路ダイバーシティ(path diversity)が第1ホップスイッチ(例えば、ToRスイッチ)を超えて開始する場合、本開示の例は、仮想スイッチソフトウェアよりも早いスピードでNICドライバ/ハードウェアまたは第1ホップスイッチにおいて具体化され得る。高度なスイッチアーキテクチャを必要とする従来のアプローチと比較して、本開示の例は、エッジハイパーバイザ(edge hypervisor)において(例えば、完全にソフトウェアで)実行され、複数の送信元と複数の送信先との間の任意の数のホップにスケーリングされ得る。この場合、図1から図5の例に従ってデータセンタネットワーク100内で輻輳認識ロードバランシングを実行する送信元VTEP(例えば、「VTEP−A」110)を具体化するために、例示的な(第1ホップ)スイッチが用いられる。スイッチは、ハードウェアロジック(例えば、ハードウェア回路)、プログラマブルロジック、またはそれらの組み合わせなど、任意の適切なスイッチロジックを含み得る。
一例では、スイッチは、1つまたは複数の第1のポート、1つまたは複数の第2のポート、およびスイッチロジックを含み得る。1つまたは複数の第1のポートは、送信元VTEPを送信先VTEPに接続する対応する複数の中間スイッチによって提供される複数の経路を介して送信元VTEPに接続された送信先VTEPから複数の第1パケットを受信するように用いられてもよい。第2のポートは、送信元エンドポイントによって送信され、送信先VTEPに関連付けられた送信先エンドポイント宛である第2のパケットを受信するように用いられてもよい。スイッチロジックは、複数の第1のパケットに基づいて複数の経路に関連付けられた輻輳状態情報を学習するように構成され得る。複数の第2のパケットを受信したことに応答して、スイッチロジックは、輻輳状態情報に基づいて複数の経路から特定の経路を選択し、特定の経路に関連付けられたタプルセットを含むヘッダ情報を有する複数の第2のパケットの各々をカプセル化することによってカプセル化された複数の第2のパケットを生成し、カプセル化された複数の第2のパケットがタプルセットに基づいて特定の経路を介して転送されるように、カプセル化された複数の第2のパケットを送信先エンドポイントに送信するように構成され得る。
上記で紹介した技術は、専用ハードワイヤード回路、プログラマブル回路と組み合わせたソフトウェアおよび/またはファームウェア、またはそれらの組み合わせで具体化され得る。専用ハードワイヤード回路は、例えば、1つまたは複数の特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルスイッチアーキテクチャなどの形態であってもよい。用語「プロセッサ」は、処理ユニット、ASIC、論理ユニット、またはプログラマブルゲートアレイなどを含むように広く解釈されるべきである。
前述の詳細な説明は、ブロック図、フローチャート、および/または実施例の使用を介して、デバイスおよび/またはプロセスの様々な実施形態を示している。そのようなブロック図、フローチャート、および/または実施例が1つまたは複数の機能および/または動作を含む限り、そのようなブロック図、フローチャート、または実施例における各機能および/または動作が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせの広い範囲によって個別におよび/または集合的に具体化可能であることは、当業者によって理解されよう。
当業者であれば、本明細書に開示された実施形態のいくつかの態様は、全体的または部分的に、集積回路内で、1つまたは複数のコンピュータ上で実行される1つまたは複数のコンピュータプログラムとして(例えば、1つまたは複数のコンピュータシステム上で実行される1つまたは複数のプログラムとして)、1つまたは複数のプロセッサ上で実行される1つまたは複数のプログラムとして(例えば、1つまたは複数のマイクロプロセッサ上で実行される1つまたは複数のプログラムとして)、ファームウェアとして、またはそれらの仮想的な任意の組み合わせとして、透過的に具体化され得ること、および回路の構成および/またはソフトウェアおよび/またはファームウェア用のコードの記述はこの開示に照らして当業者の技術範囲内であることを当業者によって認識されよう。
明細書に紹介されたソフトウェアおよび/または技術を具体化することは、非一時的なコンピュータ可読記憶媒体に記憶されてもよく、1つまたは複数の汎用または専用のプログラム可能なマイクロプロセッサによって実行されてもよい。「コンピュータ可読記憶媒体」は、本明細書で使用されるように、機械(例えば、コンピュータ、ネットワーク装置、パーソナルデジタルアシスタント(PDA)、モバイルデバイス、製造ツール、1つまたは複数のプロセッサのセットを有する任意のデバイスなど)を含み得る。コンピュータ可読記憶媒体は、記録可能/記録不可能媒体(例えば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクまたは光記憶媒体、フラッシュメモリデバイスなど)を含み得る。
図面は、例示にすぎず、図面に示される要素または手順は、本開示を実施するために必ずしも必須ではない。当業者であれば、実施例中の要素は、記載された実施例の装置に配置されるか、あるいは、実施例の装置とは異なる1つ以上の装置に代替的に配置されることを理解するであろう。記載された実施例における要素は、1つのモジュールに組み合わされるか、またはさらに複数のサブ要素に分割され得る。

Claims (15)

  1. 送信元仮想トンネルエンドポイント(VTEP)が、該送信元仮想トンネルエンドポイント、送信先仮想トンネルエンドポイント、送信元エンドポイント、送信先エンドポイント、複数の中間スイッチを含むデータセンタネットワークにおいて輻輳を考慮したロードバランシングを実行する方法であって、
    前記送信先仮想トンネルエンドポイントからの複数の第1のパケットに基づいて、前記送信元仮想トンネルエンドポイントが、前記送信元仮想トンネルエンドポイントを前記送信先仮想トンネルエンドポイントに接続する対応する複数の中間スイッチによって提供される複数の経路に関連付けられた輻輳状態情報を学習することであって、前記輻輳状態情報は、前記複数の経路と、前記複数の経路に対応する複数の外部送信元ポート番号と、前記複数の経路の輻輳状態とのマッピングを含む、前記輻輳状態情報を学習すること、
    前記送信元仮想トンネルエンドポイントが、前記送信元エンドポイントによって送信され且つ前記送信先仮想トンネルエンドポイントに関連付けられた送信先エンドポイント宛ての複数の第2のパケットを受信すること、
    前記送信元仮想トンネルエンドポイントが、前記輻輳状態情報に基づいて前記複数の経路から特定の経路を選択すること、
    前記送信元仮想トンネルエンドポイントが、前記特定の経路に関連付けられたタプルセットを含むヘッダ情報を有する前記複数の第2のパケットの各々をカプセル化することによってカプセル化された複数の第2のパケットを生成することであって、前記複数の第2のパケットの各々をカプセル化することは、前記複数の外部送信元ポート番号から、前記特定の経路に関連付けられた特定の外部送信元ポート番号を決定すること、前記特定の送信元ポート番号を含むため、前記複数の第2のパケットの各々において前記ヘッダ情報のタプルセットを構成すること、を含む、前記複数の第2のパケットを生成すること、
    前記カプセル化された複数の第2のパケットが前記タプルセットに基づいた前記特定の経路を介して転送されるように、前記送信元仮想トンネルエンドポイントが、前記カプセル化された複数の第2のパケットを前記送信先エンドポイントに送信すること、を備える方法。
  2. 前記輻輳状態情報を学習することは、
    前記送信先仮想トンネルエンドポイントからの特定の第1のパケットに基づいて前記特定の経路に関連付けられた輻輳フラグを決定することを含み、
    前記特定の第1のパケットは、
    前記特定の経路が輻輳しているかどうかを示すための前記複数の中間スイッチのうちの少なくとも1つからの輻輳通知を含む、請求項1に記載の方法。
  3. 前記輻輳状態情報を学習することは、
    前記送信先仮想トンネルエンドポイントからの特定の第1のパケットの受信時刻、および前記特定の第1のパケットをトリガするための前記送信元仮想トンネルエンドポイントによって送信されたプローブパケットの送信時刻に基づいて、前記特定の経路に関連付けられたラウンドトリップタイムを決定することを含む、請求項1に記載の方法。
  4. 前記輻輳状態情報を学習することは、
    前記特定の経路を選択する前に、前記送信先仮想トンネルエンドポイントからの特定の第1のパケットに基づいて、選択の可能性を増加または低下させるために前記特定の経路に関連付けられた重み付けを決定すること、を含む、請求項1に記載の方法。
  5. 前記送信先エンドポイント宛ての前記現在の第2のパケットと以前の第2のパケットとの間のパケット間ギャップに基づいて、現在の第2のパケットである前記複数の第2のパケットのそれぞれをフローレットに割り当てること、
    前記特定の経路に関連付けられた特定の外部送信元ポート番号に前記フローレットを関連付けるフローレット情報を記憶すること、をさらに備える請求項1に記載の方法。
  6. 1組の命令を含む非一時的なコンピュータ可読記憶媒体であって、
    前記1組の命令は、ホストのプロセッサによって実行されると、
    前記プロセッサに送信元仮想トンネルエンドポイント(VTEP)を実行させて、前記送信元仮想トンネルエンドポイント、送信先仮想トンネルエンドポイント、送信元エンドポイント、送信先エンドポイント、複数の中間スイッチを含むデータセンタネットワークにおいて輻輳を考慮したロードバランシングの方法を実行し、前記ホストは、前記送信元仮想トンネルエンドポイントをサポートし、
    前記方法は、
    前記送信先仮想トンネルエンドポイントからの複数の第1のパケットに基づいて、前記送信元仮想トンネルエンドポイントが、前記送信元仮想トンネルエンドポイントを前記送信先仮想トンネルエンドポイントに接続する対応する複数の中間スイッチによって提供される複数の経路に関連付けられた輻輳状態情報を学習することであって、前記輻輳状態情報は、前記複数の経路と、前記複数の経路に対応する複数の外部送信元ポート番号と、前記複数の経路の輻輳状態とのマッピングを含む、前記輻輳状態情報を学習すること、
    前記送信元仮想トンネルエンドポイントが、前記送信元エンドポイントによって送信され且つ前記送信先仮想トンネルエンドポイントに関連付けられた送信先エンドポイント宛ての複数の第2のパケットを受信すること、
    前記送信元仮想トンネルエンドポイントが、前記輻輳状態情報に基づいて前記複数の経路から特定の経路を選択すること、
    前記送信元仮想トンネルエンドポイントが、前記特定の経路に関連付けられたタプルセットを含むヘッダ情報を有する前記複数の第2のパケットの各々をカプセル化することによってカプセル化された複数の第2のパケットを生成することであって、前記複数の第2のパケットの各々をカプセル化することは、前記複数の外部送信元ポート番号から、前記特定の経路に関連付けられた特定の外部送信元ポート番号を決定すること、前記特定の送信元ポート番号を含むため、前記複数の第2のパケットの各々において前記ヘッダ情報のタプルセットを構成すること、を含む、前記複数の第2のパケットを生成すること、
    前記カプセル化された複数の第2のパケットが前記タプルセットに基づいた前記特定の経路を介して転送されるように、前記送信元仮想トンネルエンドポイントが、前記カプセル化された複数の第2のパケットを前記送信先エンドポイントに送信すること、を備える、非一時的なコンピュータ可読記憶媒体。
  7. 前記輻輳状態情報を学習することは、
    前記送信先仮想トンネルエンドポイントからの特定の第1のパケットに基づいて前記特定の経路に関連付けられた輻輳フラグを決定することを含み、
    前記特定の第1のパケットは、
    前記特定の経路が輻輳しているかどうかを示すための前記複数の中間スイッチのうちの少なくとも1つからの輻輳通知を含む、請求項6に記載の非一時的なコンピュータ可読記憶媒体。
  8. 前記輻輳状態情報を学習することは、
    前記送信先仮想トンネルエンドポイントからの特定の第1のパケットの受信時刻、および前記特定の第1のパケットをトリガするための前記送信元仮想トンネルエンドポイントによって送信されたプローブパケットの送信時刻に基づいて、前記特定の経路に関連付けられたラウンドトリップタイムを決定することを含む、請求項6に記載の非一時的なコンピュータ可読記憶媒体。
  9. 前記輻輳状態情報を学習することは、
    前記特定の経路を選択する前に、前記送信先仮想トンネルエンドポイントからの特定の第1のパケットに基づいて、選択の可能性を増加または低下させるために前記特定の経路に関連付けられた重み付けを決定することを含む、請求項6に記載の非一時的なコンピュータ可読記憶媒体。
  10. 前記送信先エンドポイント宛ての前記現在の第2のパケットと以前の第2のパケットとの間のパケット間ギャップに基づいて、現在の第2のパケットである前記複数の第2のパケットのそれぞれをフローレットに割り当てること、
    前記特定の経路に関連付けられた特定の外部送信元ポート番号に前記フローレットを関連付けるフローレット情報を記憶すること、をさらに備える請求項6に記載の非一時的なコンピュータ可読記憶媒体。
  11. 送信元仮想トンネルエンドポイント(VTEP)を実装して、データセンタネットワークにおいて輻輳を考慮したロードバランシングを実行するように構成されたスイッチであって、
    記送信元仮想トンネルエンドポイントを送信先仮想トンネルエンドポイントに接続する対応する複数の中間スイッチによって提供される複数の経路を介して前記送信元仮想トンネルエンドポイントに接続される前記送信先仮想トンネルエンドポイントから複数の第1のパケットを受信するための1つまたは複数の第1のポートと、
    送信元エンドポイントによって送信され且つ前記送信先仮想トンネルエンドポイントに関連付けられた送信先エンドポイント宛ての複数の第2のパケットを受信するための第2のポートと、を備え、
    前記スイッチは
    記複数の第1のパケットに基づいて前記複数の経路に関連付けられた輻輳状態情報を学習することであって、前記輻輳状態情報は、前記複数の経路と、前記複数の経路に対応する複数の外部送信元ポート番号と、前記複数の経路の輻輳状態とのマッピングを含む、前記輻輳状態情報を学習すること、
    前記複数の第2のパケットを受信することに応答して、前記輻輳状態情報に基づいて前記複数の経路から特定の経路を選択すること、
    前記特定の経路に関連付けられたタプルセットを含むヘッダ情報を有する前記複数の第2のパケットの各々をカプセル化することによってカプセル化された複数の第2のパケットを生成することであって、前記複数の第2のパケットの各々をカプセル化することは、前記複数の外部送信元ポート番号から、前記特定の経路に関連付けられた特定の外部送信元ポート番号を決定すること、前記特定の送信元ポート番号を含むため、前記複数の第2のパケットの各々において前記ヘッダ情報のタプルセットを構成すること、を含む、前記複数の第2のパケットを生成すること、
    前記カプセル化された複数の第2のパケットが前記タプルセットに基づいた前記特定の経路を介して転送されるように、前記カプセル化された複数の第2のパケットを前記送信先エンドポイントに送信すること、を実行するように構成される、スイッチ。
  12. 前記スイッチは、
    前記送信先仮想トンネルエンドポイントからの特定の第1のパケットに基づいて前記特定の経路に関連付けられた輻輳フラグを決定することによって、前記輻輳状態情報を学習するように構成され、
    前記特定の第1のパケットは、
    前記特定の経路が輻輳しているかどうかを示すための前記複数の中間スイッチのうちの少なくとも1つからの輻輳通知を含む、請求項11に記載のスイッチ。
  13. 前記スイッチは、
    前記送信先仮想トンネルエンドポイントからの特定の第1のパケットの受信時刻、および前記特定の第1のパケットをトリガするための前記送信元仮想トンネルエンドポイントによって送信されたプローブパケットの送信時刻に基づいて、前記特定の経路に関連付けられたラウンドトリップタイムを決定することによって、前記輻輳状態情報を学習するように構成される、請求項11に記載のスイッチ。
  14. 前記スイッチは、
    前記特定の経路を選択する前に、前記送信先仮想トンネルエンドポイントからの特定の第1のパケットに基づいて、選択の可能性を増加または低下させるために前記特定の経路に関連付けられた重み付けを決定することによって、前記輻輳状態情報を学習するように構成される、請求項11に記載のスイッチ。
  15. 前記スイッチは、
    前記現在の第2のパケットと前記送信先エンドポイント宛ての以前の第2のパケットとの間のパケット間ギャップに基づいて、現在の第2のパケットである前記第2のパケットのそれぞれをフローレットに割り当てること、
    前記特定の経路に関連付けられた特定の外部送信元ポート番号に前記フローレットを関連付けるフローレット情報を記憶すること、をさらに実行するように構成される、請求項11に記載のスイッチ。
JP2018553946A 2016-04-12 2017-04-12 輻輳を考慮したロードバランシングのための仮想トンネルエンドポイント Active JP6781266B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662321730P 2016-04-12 2016-04-12
US62/321,730 2016-04-12
US15/485,089 2017-04-11
US15/485,089 US10320681B2 (en) 2016-04-12 2017-04-11 Virtual tunnel endpoints for congestion-aware load balancing
PCT/US2017/027190 WO2017180731A1 (en) 2016-04-12 2017-04-12 Virtual tunnel endpoints for congestion-aware load balancing

Publications (3)

Publication Number Publication Date
JP2019514294A JP2019514294A (ja) 2019-05-30
JP2019514294A5 JP2019514294A5 (ja) 2020-05-14
JP6781266B2 true JP6781266B2 (ja) 2020-11-04

Family

ID=60000017

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018553946A Active JP6781266B2 (ja) 2016-04-12 2017-04-12 輻輳を考慮したロードバランシングのための仮想トンネルエンドポイント

Country Status (5)

Country Link
US (2) US10320681B2 (ja)
EP (1) EP3437264B1 (ja)
JP (1) JP6781266B2 (ja)
CN (1) CN109314666B (ja)
WO (1) WO2017180731A1 (ja)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9755898B2 (en) 2014-09-30 2017-09-05 Nicira, Inc. Elastically managing a service node group
US10516568B2 (en) 2014-09-30 2019-12-24 Nicira, Inc. Controller driven reconfiguration of a multi-layered application or service model
US9774537B2 (en) 2014-09-30 2017-09-26 Nicira, Inc. Dynamically adjusting load balancing
US10129180B2 (en) * 2015-01-30 2018-11-13 Nicira, Inc. Transit logical switch within logical router
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
US9942131B2 (en) * 2015-07-29 2018-04-10 International Business Machines Corporation Multipathing using flow tunneling through bound overlay virtual machines
US10320681B2 (en) 2016-04-12 2019-06-11 Nicira, Inc. Virtual tunnel endpoints for congestion-aware load balancing
US11777853B2 (en) 2016-04-12 2023-10-03 Nicira, Inc. Congestion-aware load balancing in data center networks
CN107493238A (zh) * 2016-06-13 2017-12-19 华为技术有限公司 一种网络拥塞控制方法、设备及系统
CN107634912B (zh) * 2016-07-19 2020-04-28 华为技术有限公司 负载均衡方法、装置及设备
US10447591B2 (en) * 2016-08-30 2019-10-15 Oracle International Corporation Executing multiple virtual private network (VPN) endpoints associated with an endpoint pool address
US10412005B2 (en) * 2016-09-29 2019-09-10 International Business Machines Corporation Exploiting underlay network link redundancy for overlay networks
JP6801409B2 (ja) * 2016-12-02 2020-12-16 富士通株式会社 経路探索システム、経路探索方法及び経路探索プログラム
CN108243111B (zh) * 2016-12-27 2021-08-27 华为技术有限公司 确定传输路径的方法和装置
US10447601B2 (en) 2017-10-20 2019-10-15 Hewlett Packard Enterprise Development Lp Leaf-to-spine uplink bandwidth advertisement to leaf-connected servers
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
CN109861925B (zh) * 2017-11-30 2021-12-21 华为技术有限公司 数据传输方法、相关装置及网络
CN109861923B (zh) * 2017-11-30 2022-05-17 华为技术有限公司 一种数据调度方法及tor交换机
CN109691039B (zh) * 2018-01-16 2020-04-28 华为技术有限公司 一种报文传输的方法及装置
US10924352B2 (en) 2018-01-17 2021-02-16 Nicira, Inc. Data center network topology discovery
US10659252B2 (en) * 2018-01-26 2020-05-19 Nicira, Inc Specifying and utilizing paths through a network
US10797910B2 (en) 2018-01-26 2020-10-06 Nicira, Inc. Specifying and utilizing paths through a network
US20190297017A1 (en) * 2018-03-23 2019-09-26 Cisco Technology, Inc. Managing network congestion using segment routing
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
CN108390820B (zh) 2018-04-13 2021-09-14 华为技术有限公司 负载均衡的方法、设备及系统
GB2573573B (en) * 2018-05-11 2022-08-17 Cambridge Broadband Networks Group Ltd A system and method for distributing packets in a network
CN108667709B (zh) * 2018-05-18 2020-12-29 新华三技术有限公司 一种报文转发方法及装置
US10887217B2 (en) * 2018-06-29 2021-01-05 Hewlett Packard Enterprise Development Lp Routing packets based on congestion metric thresholds and weights
US11005777B2 (en) * 2018-07-10 2021-05-11 At&T Intellectual Property I, L.P. Software defined prober
US10491511B1 (en) * 2018-07-20 2019-11-26 Dell Products L.P. Feedback-based packet routing system
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
US10938722B2 (en) * 2018-10-12 2021-03-02 Dell Products L.P. In-band telemetry congestion control system
US11438371B2 (en) 2018-11-09 2022-09-06 Cisco Technology, Inc. Distributed denial of service remediation and prevention
US10771379B2 (en) * 2018-12-04 2020-09-08 Juniper Networks, Inc. Apparatus, system, and method for discovering network paths
US11323340B2 (en) 2019-01-07 2022-05-03 Vmware, Inc. Packet flow monitoring in software-defined networking (SDN) environments
US11301281B2 (en) 2019-02-22 2022-04-12 Vmware, Inc. Service control plane messaging in service data plane
US11431829B2 (en) 2019-03-06 2022-08-30 Parsons Corporation Multi-tiered packet processing
CN111835652B (zh) 2019-04-17 2024-04-16 华为技术有限公司 一种数据流的虚拟通道的设置方法及装置
CN110392394B (zh) * 2019-07-26 2021-04-16 湖南大学 无线网络中基于链路状态信息的mptcp调度方法
CN112511448A (zh) 2019-09-16 2021-03-16 华为技术有限公司 处理网络拥塞的方法、更新模型的方法和相关装置
CN116489157B (zh) * 2019-09-27 2024-03-15 亚马逊技术有限公司 分布式端点的管理
CN110719598B (zh) * 2019-10-15 2021-10-22 北京达佳互联信息技术有限公司 一种数据传输方法、装置、电子设备及存储介质
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
CN111050341B (zh) * 2019-12-24 2022-02-22 展讯通信(上海)有限公司 双连接场景下空口拥塞状态的判定方法及装置
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
US11438257B2 (en) 2020-04-06 2022-09-06 Vmware, Inc. Generating forward and reverse direction connection-tracking records for service paths at a network edge
US11902264B2 (en) 2020-06-22 2024-02-13 Vmware, Inc. Path selection for data packets encrypted based on an IPSEC protocol
US11533265B2 (en) 2020-07-23 2022-12-20 Vmware, Inc. Alleviating flow congestion at forwarding elements
US11765037B2 (en) * 2020-08-19 2023-09-19 Hewlett Packard Enterprise Development Lp Method and system for facilitating high availability in a multi-fabric system
US11575642B2 (en) * 2020-10-12 2023-02-07 Vmware, Inc. Multi-path traffic selection for ports in overlay networks
US11165676B1 (en) * 2020-11-11 2021-11-02 Vmware, Inc. Generating network flow profiles for computing entities
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
CN113542149B (zh) * 2021-07-08 2023-11-28 国家电网有限公司 网络流量的负载分担方法、存储介质、装置及系统
US11233727B1 (en) * 2021-08-27 2022-01-25 King Abdulaziz University System and method for securing SDN based source routing
CN114039922B (zh) * 2021-11-22 2024-03-12 中国通信建设集团有限公司河南省通信服务分公司 基于路径拥塞度灰色预测的拥塞控制方法及系统
US20230163997A1 (en) * 2021-11-25 2023-05-25 Vmware, Inc. Logical overlay tunnel selection
US11889346B2 (en) 2022-03-21 2024-01-30 Vmware, Inc. Quality-aware user data forwarding in mobile communications systems
US11909628B1 (en) * 2022-09-01 2024-02-20 Mellanox Technologies, Ltd. Remote direct memory access (RDMA) multipath

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6711152B1 (en) * 1998-07-06 2004-03-23 At&T Corp. Routing over large clouds
US6731739B2 (en) * 2000-12-11 2004-05-04 Telefonaktiebolaget Lm Ericsson (Publ) Balancing loads on telecommunications links
US7269157B2 (en) 2001-04-10 2007-09-11 Internap Network Services Corporation System and method to assure network service levels with intelligent routing
US20040004966A1 (en) 2001-04-27 2004-01-08 Foster Michael S. Using virtual identifiers to route transmitted data through a network
US8447802B2 (en) 2006-03-08 2013-05-21 Riverbed Technology, Inc. Address manipulation to provide for the use of network tools even when transaction acceleration is in use over a network
WO2010090838A2 (en) * 2009-01-20 2010-08-12 The Regents Of The University Of California Reducing cabling complexity in large-scale networks
US8671176B1 (en) 2011-04-29 2014-03-11 Juniper Networks, Inc. Virtual network prototyping environment
GB2493710A (en) * 2011-08-12 2013-02-20 Uni Catholique De Louvain A method for the sender of a packet to select the path the packet takes through a network.
US9571406B2 (en) 2011-10-25 2017-02-14 Vmware, Inc. Network congestion management based on communication delay
CN103312607B (zh) * 2012-03-09 2016-12-21 华为技术有限公司 一种传输路径选择方法及装置
US8700928B2 (en) 2012-05-21 2014-04-15 New Jersey Institute Of Technology Hierarchical energy optimization for datacenter networks
US8750288B2 (en) * 2012-06-06 2014-06-10 Juniper Networks, Inc. Physical path determination for virtual network packet flows
US9112801B2 (en) * 2013-03-15 2015-08-18 International Business Machines Corporation Quantized congestion notification in a virtual networking system
WO2015069164A1 (en) 2013-11-08 2015-05-14 Telefonaktiebolaget L M Ericsson (Publ) Handling of transport conditions
US10320681B2 (en) 2016-04-12 2019-06-11 Nicira, Inc. Virtual tunnel endpoints for congestion-aware load balancing
US11777853B2 (en) 2016-04-12 2023-10-03 Nicira, Inc. Congestion-aware load balancing in data center networks
US10193810B2 (en) 2016-11-08 2019-01-29 Vmware, Inc. Congestion-aware load balancing
US10972397B2 (en) 2017-09-29 2021-04-06 Futurewei Technologies, Inc. Self-driving packets with conditional commands

Also Published As

Publication number Publication date
EP3437264A1 (en) 2019-02-06
US10320681B2 (en) 2019-06-11
CN109314666A (zh) 2019-02-05
EP3437264B1 (en) 2021-10-20
WO2017180731A1 (en) 2017-10-19
US10771389B2 (en) 2020-09-08
CN109314666B (zh) 2021-01-08
US20170295100A1 (en) 2017-10-12
US20190288948A1 (en) 2019-09-19
JP2019514294A (ja) 2019-05-30

Similar Documents

Publication Publication Date Title
JP6781266B2 (ja) 輻輳を考慮したロードバランシングのための仮想トンネルエンドポイント
US10193810B2 (en) Congestion-aware load balancing
US20230396533A1 (en) System and method for facilitating data-driven intelligent network
JP7417825B2 (ja) スライスベースルーティング
US20240022515A1 (en) Congestion-aware load balancing in data center networks
US20190222481A1 (en) Data center network topology discovery
EP3066795B1 (en) Virtual port channel bounce in overlay network
US9596173B2 (en) Method and system for traffic pattern generation in a software-defined networking (SDN) system
US11323340B2 (en) Packet flow monitoring in software-defined networking (SDN) environments
US10097465B2 (en) Data transfer between endpoints using a multipath connection
US11128489B2 (en) Maintaining data-plane connectivity between hosts
US20120075999A1 (en) Dynamic latency-based rerouting
US10200277B2 (en) Influencing path selection during a multipath connection
US10129372B2 (en) Transferring multiple data sets using a multipath connection
EP3966687A1 (en) Sharing and oversubscription of general-purpose graphical processing units in data centers
US20170070473A1 (en) A switching fabric including a virtual switch
Zhang et al. Achieving optimal edge-based congestion-aware load balancing in data center networks
US20230163997A1 (en) Logical overlay tunnel selection
US11528224B1 (en) Dynamic traffic redirection for a virtual gateway of a distributed tunnel fabric
US20220217202A1 (en) Capability-aware service request distribution to load balancers
Hussein et al. Layer-4 Load Balancer for Flow Size Prediction with TCP/UDP Separation Using P4
EP4348986A1 (en) Method to prioritize and offload mobile edge cloud traffic in 5g

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200401

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200401

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200401

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200408

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200708

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201015

R150 Certificate of patent or registration of utility model

Ref document number: 6781266

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250