JP2016521090A - ソフトウェア定義型ネットワークフロー配信を提供するための方法および装置 - Google Patents

ソフトウェア定義型ネットワークフロー配信を提供するための方法および装置 Download PDF

Info

Publication number
JP2016521090A
JP2016521090A JP2016517104A JP2016517104A JP2016521090A JP 2016521090 A JP2016521090 A JP 2016521090A JP 2016517104 A JP2016517104 A JP 2016517104A JP 2016517104 A JP2016517104 A JP 2016517104A JP 2016521090 A JP2016521090 A JP 2016521090A
Authority
JP
Japan
Prior art keywords
packet
server
data storage
processor
virtual machine
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
JP2016517104A
Other languages
English (en)
Other versions
JP6200586B2 (ja
Inventor
ファン・ベメル,イェルーン
Original Assignee
アルカテル−ルーセント
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 アルカテル−ルーセント filed Critical アルカテル−ルーセント
Publication of JP2016521090A publication Critical patent/JP2016521090A/ja
Application granted granted Critical
Publication of JP6200586B2 publication Critical patent/JP6200586B2/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1038Load balancing arrangements to avoid a single path through a load balancer
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

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

Abstract

種々の実施形態が、ネットワークのコネクション単位の状態を必要とすることなくSDNフロー配信を提供するための方法および装置を提供する。特に、SDNフロー配信は、ネットワーク要素中に、ターゲットサーバのセットにトラフィックフローをマッピングすることができるコントローラを提供することによって、パケットの転送パス内のそれらのネットワーク要素で実現される。

Description

本発明は、一般に、ソフトウェア定義型ネットワークフロー配信(software defined network flow distribution)を提供するための方法および装置に関する。
このセクションは、本発明の理解をより容易にするのに役立つことができる態様を導入するものである。したがって、このセクションの記述は、この観点で読まれるべきであり、先行技術であるかまたはそうでないかについての承認と理解されるべきではない。
いくつかの知られているソフトウェア定義型ネットワーク(SDN)フロー配信システムソリューションでは、専用デバイスが、負荷均衡化を通じてフロー配信を実施するロードバランサとして構成される。
種々の例示的実施形態のいくつかの態様の強調および導入を意図した以下の概要では、いくつか簡略化され得るが、こうした簡略化は、本発明の範囲を限定するものではない。当業者が作成し、本発明の概念を使用することを可能にするのに十分な好ましい例示的実施形態の詳細な説明が、後のセクションで続く。
種々の実施形態が、ネットワークのコネクション単位の状態を必要とすることなくSDNフロー配信を提供するための方法および装置を提供する。特に、SDNフロー配信は、ネットワーク要素中に、ターゲットサーバのセットにトラフィックフローをマッピングすることができるコントローラを提供することによって、パケットの転送パス内のそれらのネットワーク要素で実現される。
第1の実施形態では、装置が、インパスフロー配信を提供するために提供される。装置は、複数の仮想マシンと、データストレージと、複数の仮想マシンおよびデータストレージに通信可能に接続されたプロセッサとを含む。データストレージは、複数のルールを含むルール部、およびサーバのリスト部を含む。複数のルールの少なくともサブセットが、サーバリスト部に基づいて複数の仮想マシンのうちの1つまたは複数にパケットフローをマッピングする。そのプロセッサは、エッジルータからパケットを受信し、パケットに基づいて、複数のルールから1つのルールを決定し、ルールおよびサーバリスト部に基づいて、仮想マシンを決定し、仮想マシンに基づいて、パケットの宛先アドレスを変更し、仮想マシンにパケットを転送するようにプログラムされる。
第2の実施形態では、方法が、データストレージに通信可能に接続されたプロセッサによって、インパスフロー配信を提供するために提供される。データストレージが、複数のルールを含むルール部、およびサーバリスト部を含む。複数のルールの少なくともサブセットが、サーバリスト部に基づいて、仮想マシンにパケットフローをマッピングする。その方法は、エッジルータからパケットを受信するステップと、パケットに基づいて複数のルールからルールを決定するステップと、ルールおよびサーバリスト部に基づいて、仮想マシンを決定するステップと、仮想マシンに基づいてパケットの宛先アドレスを変更するステップと、仮想サーバにパケットを転送するステップとを含む。
第3の実施形態では、一時的でないコンピュータ可読記憶媒体が、命令を記憶するために提供され、この命令が、コンピュータによって実行されるときそのコンピュータに方法を実施させる。その方法は:
19.命令が、コンピュータによって実行されるときそのコンピュータに方法を実施させるような命令を記憶する一時的でないコンピュータ可読記憶媒体であって、方法が、エッジルータからパケットを受信するステップであって、データストレージが、複数のルールを含むルール部、およびサーバリスト部を含み、複数のルールの少なくともサブセットが、サーバリスト部に基づいて仮想マシンにパケットフローをマッピングする、受信するステップと、パケットに基づいて、複数のルールから1つのルールを決定するステップと、ルールおよびサーバリスト部に基づいて仮想マシンを決定するステップと、仮想マシンに基づいてパケットの宛先アドレスを変更するステップと、仮想サーバにそのパケットを転送するステップとを含む、一時的でないコンピュータ可読記憶媒体を含む。
先の実施形態のうちのいくつかでは、装置が、複数のホストのネットワーク中の第1のホストであり、仮想マシンが、第2のホストをホストとする第2の複数の仮想マシンのメンバーであり、第2のホストが、複数のホストのメンバーであり、複数のルールの少なくとも第2のサブセットが、サーバリスト部に基づいて第2の複数の仮想マシンのうちの1つまたは複数にパケットフローをマッピングする。
先の実施形態のうちのいくつかでは、宛先アドレスが、MACアドレスである。
先の実施形態のうちのいくつかでは、ルールが、配信部を含み、その配信部が、配信アクションを指定する。
先の実施形態のうちのいくつかでは、データストレージが、サーバインデックス値の配列を含むハッシュ配列部をさらに含み、サーバリスト部が、サーバアドレスのセットを含む。その場合、仮想マシンの決定が、ルールに基づいて決定されたサーバインデックスを使用してサーバアドレスのセットから仮想マシンを選択するようにプロセッサをさらにプログラムすることにさらに基づく。その場合、サーバインデックス値の配列が、サーバインデックスを含む。
先の実施形態のうちのいくつかでは、パケットがパケットフローを開始すると決定するように、プロセッサがさらにプログラムされる。その場合、パケットの宛先アドレスの変更は、パケットがパケットフローを開始するという決定に基づく。
先の実施形態のうちのいくつかでは、パケットがパケットフローを開始するという決定が、パケット中のSYNフラグに基づく。
先の実施形態のうちのいくつかでは、プロセッサが、エッジルータから第2のパケットを受信し、第2のパケットが、仮想マシンを識別するサーバ値を含み、サーバ値に基づいて第2のパケットの宛先アドレスを変更し、仮想マシンに第2のパケットを転送するように、さらにプログラムされる。
先の実施形態のうちのいくつかでは、サーバ値が、第2のパケットのTCP ACKフィールドにある。
先の実施形態のうちのいくつかでは、サーバ値が、サーバインデックス値であり、プロセッサが、サーバインデックス値およびサーバリスト部に基づいて仮想マシンを決定するようにさらにプログラムされる。
先の実施形態のうちのいくつかでは、データストレージが、履歴部をさらに含み、プロセッサが、エッジルータから第3のパケットを受信し、第3のパケットが再送信であると決定し、第3のパケットが再送信であり第3のパケットであるという決定に基づいて、履歴部から以前のサーバ値を取得し、以前のサーバ値に基づいて第3のパケットの宛先アドレスを変更し、仮想マシンに第3のパケットを転送するようにさらにプログラムされる。
先の実施形態のうちのいくつかでは、プロセッサが、エッジルータから第2のパケットを受信し、第2のパケットが、仮想マシンを識別するサーバ値を含み、サーバインデックス値の配列中の対応するサーバインデックス値がトリガ値であると決定し、対応するサーバインデックス値をサーバ値にセットし、サーバ値に基づいて第2のパケットの宛先アドレスを変更し、仮想マシンに第2のパケットを転送するようにさらに構成される。
先の実施形態のうちのいくつかでは、仮想マシンを決定するステップが、ルールに基づいて決定されたサーバインデックスを使用して、サーバアドレスのセットから仮想マシンを選択することにさらに基づく。その場合、サーバインデックス値の配列は、サーバインデックスを含む。
先の実施形態のうちのいくつかでは、方法が、パケットがパケットフローを開始すると決定するステップを含む。その場合、パケットの宛先アドレスの変更は、パケットがパケットフローを開始するという決定に基づく。
先の実施形態のうちのいくつかでは、方法が、エッジルータから第2のパケットを受信するステップであって、第2のパケットが仮想マシンを識別するサーバ値を含む、受信するステップと、サーバ値に基づいて第2のパケットの宛先アドレスを変更するステップと、仮想マシンに第2のパケットを転送するステップとをさらに含む。
先の実施形態のうちのいくつかでは、方法が、エッジルータから第2のパケットを受信するステップであって、第2のパケットが仮想マシンを識別するサーバ値を含む、受信するステップと、サーバインデックス値の配列中の対応するサーバインデックス値がトリガ値であると決定するステップと、対応するサーバインデックス値をサーバ値にセットするステップと、サーバ値に基づいて第2のパケットの宛先アドレスを変更するステップと、仮想マシンに第2のパケットを転送するステップとをさらに含む。
先の実施形態のうちのいくつかでは、データストレージが、履歴部をさらに含み、方法が、仮想マシンに関連する履歴サーバインデックス値を決定するステップと、履歴サーバインデックス値を履歴部に記憶するステップと、エッジルータから第2のパケットを受信するステップであって、第2のパケットがサーバ値を含む、受信するステップと、第2のパケットに基づいて複数のルールから第2のルールを決定するステップと、ルールおよびサーバリスト部に基づいて第2のサーバインデックス値を決定するステップと、サーバ値が第2のサーバインデックス値に対応しないという決定に基づいて履歴サーバインデックス値を取得するステップと、履歴サーバインデックス値に基づいて第2のパケットの宛先アドレスを変更するステップと、第2のパケットを転送するステップとをさらに含む。
種々の実施形態について、添付の図面に示す。
SDNフロー配信を提供するためのSDNフロー配信システム100の一実施形態を示す図である。 図1のvRS140のうちの1つの一実施形態であるvRS240を概略的に示す図である。 コントローラ(例えば、図2のコントローラ205)がTCPフロー配信を提供する方法300の一実施形態を示す流れ図である。 TCP負荷分散を実行するための方法300の一実施形態を示す例示的メッセージフローを示す図である。 図1のvRS140のうちの1つなどの種々の装置500の一実施形態を概略的に示す図である。
理解を容易にするために、実質的に同じもしくは類似の構造、または実質的に同じもしくは類似の機能を有する要素を示すように、同一の参照番号を使用した。
説明および図面は、単に本発明の原理を示す。したがって、本明細書では明白に説明し示さないが、当業者には、本発明の原理を実施し、その範囲に含まれる種々の構成を考案することができることが、理解されよう。さらに、本明細書に挙げた全ての例は、主に、本発明の原理および本技術を進めるために発明者により寄与される概念を読者が理解する際に支援する教示的目的のためだけに特別に意図したものであり、こうした具体的に挙げた例および条件に限定しないと解釈されるべきである。さらに、本明細書で説明する種々の実施形態は、いくつかの実施形態が新たな実施形態を形成するために1つまたは複数の他の実施形態と組み合わせられ得るように、必ずしも互いに排他的ではない。
本明細書で使用される用語「または」は、非排他的であり、または別段の指示がない限り(例えば、「または他の」もしくは「または別法では」)非排他的であることを言う。さらに、本明細書で使用される要素間の関係を説明するのに使用される語句は、直接的関係を含み、または別段の指示がない限り介在する要素の存在を含むように広く解釈されるべきである。例えば、要素が、別の要素に「接続される」または「結合される」と言うとき、その要素は、他の要素に直接接続もしくは結合されてよく、または介在する要素が存在してもよい。対照的に、要素が、別の要素に「直接接続される」または「直接結合される」と言うとき、介在する要素は存在しない。同様に、「間の」「隣接した」などの語句は、同じ様式で解釈されるべきである。
種々の実施形態が、ネットワークのコネクション単位の状態を必要とすることなくSDNフロー配信を提供するための方法および装置を提供する。特に、SDNフロー配信は、ネットワーク要素中に、ターゲットサーバのセットにトラフィックフローをマッピングすることができるコントローラを提供することによって、パケットの転送パス内のそれらのネットワーク要素で実現される。
有利なのは、コントローラを用いてパケットの転送パスにネットワーク要素を構成することによって、障害に対して回復力のある(例えば、単一障害点(SPDF)が作られない)、またクライアントトラフィック負荷の変化に伴ってスケール調整する(例えば、高速弾力性を提供する)、SDNフロー配信が達成され得ることである。
図1に、SDNフロー配信を提供するためのSDNフロー配信システム100の一実施形態を示す。SDNフロー配信システム100は、通信パスをわたって確立される通信フローを通じて、1つまたは複数のホストであるホスト150−1からホスト150−n(集合的にホスト150)に存在する1つまたは複数のアプリケーション(明瞭化のため示さず)にアクセスする、1つまたは複数のクライアント110−1から110−n(集合的にクライアント110)を含む。通信パスは、リンク115−1から115−n(集合的にリンク115)のうちの適切な1つ、ネットワーク120−1、エッジルータ130−1から130−n(集合的にエッジルータ130)のうちの適切な1つ、およびネットワーク120−2を通るオーバレイトンネル135−1から135−n(集合的にオーバレイトンネル135)のうちの適切な1つを含む。
本明細書で定義する「フロー」は、(i)送信元IP、(ii)送信元ポート、(iii)宛先IP、(iv)宛先ポート、(v)プロトコル;または(vi)他、などの共通の特性を有する2つまたはそれより多くのパケットとして広く解釈される。
いくつかの実施形態では、フローが、同じ5−タプル<src.ip,src.port,dst.ip,dst.port,protocol>を共有する2つ以上のパケットである。
クライアント110は、1つまたは複数のリンク115を介してネットワーク120−1をわたって情報(例えばパケット)を送信または受信することができる任意のタイプの通信デバイスを含むことができる。例えば、通信デバイスが、シンクライアント、スマートフォン(例えば、クライアント110−n)、パーソナルコンピュータまたはラップトップコンピュータ(例えば、クライアント110−1)、サーバ、ネットワークデバイス、タブレット、テレビジョンセットトップボックス、メディアプレーヤー他とすることができる。通信デバイスは、処理または記憶などのタスクの一部を実施するために例示的システム内の他の資源に依存することができ、またはタスクを独立的に実施することができる。2つのクライアントについてここに示すが、システム100は、より少ないまたはより多いクライアントを含み得ることが理解されるべきである。さらに、いずれの時点におけるクライアント数も、動作中クライアントが種々の回数でシステムに加算または減算されるので、動的でありうる。
リンク115およびオーバレイトンネル135は、ワイヤレス通信(例えば、LTE、GSM(登録商標)、CDMA、Bluetooth(登録商標))、WLAN通信(例えば、WiFi)、パケットネットワーク通信(例えば、IP)、広帯域通信(例えば、DOCSISおよびDSL)、ストレージ通信(例えば、ファイバチャネル、iSCSI)などの1つまたは複数の通信チャネルにわたる通信をサポートする。単一のコネクションとして示すが、通信チャネル115およびオーバレイトンネル135は、任意の個数の通信チャネルまたはその組合せとすることができることが理解されよう。
チャネル145−1からチャネル145−nのチャネル(集合的にチャネル145)は、ホスト150のそれぞれの間の通信パスを示し、任意の適した通信パスを含むと広く解釈されるべきである。例えば、チャネルは、先に説明したリンクまたは内部通信チャネルとすることができる。チャネル145−1を参照すると、ホスト150−1およびホスト150−2が同じ装置に存在する場合、内部通信チャネルは、ホスト150−1とホスト150−2との間で情報を渡すようにプログラムされた、内部プロセッサおよびメモリとすることができる。
ネットワーク120−1および120−2は、任意の個数のアクセスおよびエッジノードおよびネットワークデバイス、ならびに任意の個数および構成のリンクを含む。さらに、ネットワーク120−1および120−2は、任意の組合せおよび任意の個数のワイヤレスまたはワイヤラインネットワークを含むことができ、これらには、LTE、GSM、CDMA、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、広域ネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)他が含まれ得ることが理解されるべきである。さらに、ネットワーク120−1および120−2は、2つの分離したネットワークとして示すが、1つのネットワークの全てまたは一部を共有することができることが理解されるべきである。例えば、ネットワーク120−2は、ネットワーク120−1内に存在し得る。
エッジルータ130は、1つまたは複数のクライアント110とホスト150との間のトラフィックをルーティングすることができる装置である。特に、エッジルータ130は、ホスト150のうちの特定の1つにクライアントパケットをルーティングするためにオーバレイトンネル135のうちの1つを選択する。2つのエッジルータについてここに示すが、システム100は、より少ないまたはより多いエッジルータを含むことができることが理解されるべきである。エッジルータ130−1と同様に、示されるエッジルータ130−nは、1つまたは複数のオーバレイトンネル(明瞭化のために示さず)を介してホストのセット(例えばホスト150)にパケットをルーティングするように構成され得ることがさらに理解されるべきである。
選択ホスト150のそれぞれが、1つまたは複数の仮想ルータまたはスイッチvRS140−1から140−n(集合的にvRS140)、および1つまたは複数の仮想マシンVM160−1−1からVM160−N−Y(集合的に仮想マシン160)を含む。例えば、図に示すように、ホスト150−1は、vRS140−1および仮想マシンVM160−1−1からVM160−1−Xを含む。
vRS140は、インパスフロー配信のためのコントローラを設ける。特に、vRSは、トラフィックフローから、仮想マシン160または別の物理サーバもしくは仮想サーバのうちの1つなどのターゲットサーバ(明瞭化のために示さず)へ、パケットをマッピングするマッチングルールを用いて構成される。別のホストに存在するターゲットサーバに対しては、パケットが1つまたは複数のチャネル145を介してターゲットサーバに向けられ得る。
本明細書で定義する「インパスフロー配信」は、フロー配信が通信パス内に通常存在するコンポーネントによって決定されることを必要とするものと解釈される。例えば、エッジルータ130およびホスト150が、クライアントリクエストの通信パス内にある。対照的に、ネットワーク120−2に通信可能に接続された分離マネージャに、またはホスト150とエッジルータ130の一つの間に配置された専用の負荷バランサに、フロー配信の決定をオフロードすることは、インパスフロー配信ではない。
エッジルータ130のいくつかの実施形態では、1つまたは複数のエッジルータ130が、仮想負荷分散装置のIPアドレスに行くことになる、また任意選択で1つまたは複数のポート(例えば、ウェブトラフィック用のポート80)に制限された、TCPパケットにECMP(Equal Cost Multi Path:等価コストマルチパス)ルーティングを実施する。これらの実施形態のいくつかでは、オーバレイトンネル135のうちの1つの選択が、送信元IPおよび任意選択で受信したパケットのポートのハッシュ処理を行うことによって達成される。
いくつかの実施形態では、vRS140が、特定の負荷バランサIP:ポート宛先へのTCPトラフィック用のマッチングルール、およびターゲットサーバのセットにこうしたフローを(例えば、ハッシュ処理を通じて)マッピングするためのテーブル、とともに構成される。これらのいくつかの実施形態では、ターゲットサーバが、受信ホストに対してローカルであるように構成される。
いくつかの実施形態では、vRS140が、Sサーバアドレスまたはポートのリストにマッピングする、提供可能なNサーバインデックス値の配列を含む。これらの実施形態のいくつかでは、OpenFlowが、適合する場合、着信パケット用に(例えばsrc IPおよびsrcポートに基づいて)ハッシュインデックス値を計算し、サーバおよび任意選択で配列インデックスを使用することによって決定されるポートにパケットを転送する、「配信(distribute)」アクションを含むように拡張される。
1つまたは複数のvRS140の機能性の全てまたは一部は、1つまたは複数のエッジルータ130内に含まれ得ることが理解されるべきである。
図2に、図1のvRS140のうちの1つの一実施形態であるvRS240を概略的に示す。vRS240は、データストレージルール210、ハッシュ配列220およびサーバリスト230に通信可能に接続されたコントローラ205を含み、トラフィックフローイン260上で受信されるトラフィックフローに属するパケットを、トラフィックフローアウト280をわたって1つまたは複数の適したサーバに配信するように構成される。
ルール210には、フロートラフィック(例えばTCPトラフィック)用のマッチングルールが提供される。特に、トラフィックフローイン260をわたって受信したトラフィックフローにルールが適合すると決定された場合、その受信したトラフィックフローに配信すると決定される。配信の決定は、ハッシュ配列220からハッシュ配列を、およびサーバリスト230からサーバリストを、(例えば、ハッシュ処理を通じて)ターゲットサーバの1セットに受信したパケットをマッピングするために使用することを含む。
ルール210、ハッシュ配列220およびサーバリスト230を3つの分離したデータ記憶として示すが、ルール210、ハッシュ配列220およびサーバリスト230のストレージは、任意の適した構成(例えば、2つまたはそれより多くのルール210、ハッシュ配列220およびサーバリスト230が、物理ストレージもしくは仮想ストレージ、またはメモリ空間を共有することができる)を含むことができることが理解されるべきである。さらに、ルール210、ハッシュ配列220およびサーバリスト230は、テーブル、データベース他を含む任意の適したフォーマットで維持され得る。
一例では、装置(例えば、図2のvRS240)のルール、ハッシュ配列およびサーバリストのストレージが構成され、ルール210がXルールのセットを含み、ハッシュ配列220が、Aサーバインデックス値のX配列のセット(例えばそれぞれNビットの、例えば最大16サーバに対してN=4)を含み、サーバリスト230が、以下で与えられるような、サーバ配列=サーバ(A,B,C,D)用のYサーバアドレス(またはポート)リスト(それぞれ最長2)のセットを含む。
ルール210:
1.dst.ip==1.2.3.4およびdst.port==80をもつ全てのパケットに対して、ハッシュ配列A1を使用して、dst.ipをリストL1からサーバアドレスにセット
2.dst.ip==1.2.3.5およびdst.port==80をもつ全てのパケットに対して、ハッシュ配列A2を使用して、dst.macをリストL2からサーバアドレスにセット
ハッシュ配列220:
1.A1=[0,1,2,3,0,1,2,3]
//(全ての4サーバに対して、平等に25%の配信。有利なのは、サーバインデックスが1つの値につき2ビットを使用して示され得ることである。)
2.A2=[0,0,0,0,0,0,1,1]
//(2サーバ間で、75%/25%の配信)
サーバリスト230:
1.L1=[10.20.30.40,10.20.30.41,10.20.30.42,10.20.30.43]
//(サーバ[A,B,C,D]用のIPv4アドレスを含む)
2.L2=[11:22:33:44:55:66,11:22:33:44:55:67]
//(MACアドレスを含む)
例についてさらに進めると、宛先IP=「1.2.3.4」、宛先ポート=80をもつパケットが受信されると仮定する。ルール210を参照すると、ルール(1)が、宛先IPおよびポートに適合し、したがって、受信したパケットのフロー配信をマッピングするために、ルール1が選択される。ハッシュアクションが、送信元IP+送信元ポートのハッシュ処理を含み、結果として生じるハッシュが、インデックス=「2」(例えば、「1234」%8)にマッピングする「1234」の値を有する。ルール(1)を使用すると、サーバインデックス=2(すなわち、A1[2])がターゲットサーバC(すなわち、L1(2))に対応する。
ルール(1)を再び参照すると、次いでdst.ipが、サーバ「C」にセットされるはずであり、パケットは、ターゲットサーバ「C」に転送される。
これらの実施形態のいくつかでは、プロトコルが、ハッシュ配列「A」の特定の配列およびサーバリスト「S」の特定の配列を参照する「配信(distribute)」アクションを含むように拡張される。配信アクションは、ハッシュ処理用にどのフィールドを含むべきか(例えば、src ipアドレスをハッシュする、src ip+ポートをハッシュするなど)についての指令、マッチングパケットに加えるべき変更の指令(例えば、宛先IPアドレス、MACアドレスを置き換える)も包含することができる。
例えば、式中、(*)は、ワイルドカードマッチングを表し、ルールは以下であり得る:
protocol=TCP、src IP=*、src port=*、dst IP=1.2.3.4、dst port=80
=>action=distribute(hash=src IP+src port、array=a、serverlist=l、modify=dst IP)。
これらの実施形態のいくつかでは、着信パケットがルールのフィルタ部に適合(例えば、protocol=TCP、src IP=*、src port=*、dst IP=1.2.3.4,およびdst port=80)するとき、ルールのアクション部(例えば、action=distribute(hash=src IP+src port、hash array=a、serverlist=l、modify=dst IP)が実施される。先の例では、「配信(distribute)」アクションが実施される。特に、例のアクション部は、サーバインデックス「i」を決定する際に使用されるハッシュ値「h」を決定するためにコントローラが「src IP=+src port」にハッシュ計算を実施するように指令する。いくつかの実施形態では、サーバインデックス「i」が、i:=a[h%A](すなわち、配列aのインデックス(h%A)のサーバインデックスであり、式中Aは、Aのエントリ数、「%」は、モジュロを示す)を使用することによって決定される。サーバSは、S:=s[i]を使用することによってサーバインデックスから決定され得る。最後に、パケットの宛先IPは、ルールで指定されるように変更され、パケットは、従来型のスイッチング技術を使用して所与のサーバに転送される。サーバSは、等化なアルゴリズム、「S:=s[a[h%A]]」を使用することによって直接決定され得ることが理解されるべきである。
いくつかの実施形態では、ルールが、次の指令のうち1つまたは複数を含む:
1.パケットを変更する(例えば、宛先IPをサーバのIPに置き換える)ための指令。
2.ハッシュ処理の際に使用されるフィールド(例えば、src IP+src port)に対する指令。
3.使用する配列インデックスまたはサーバリストに対する指令。
いくつかの実施形態では、配信アクションは、別々の量のフロートラフィックを別々のサーバに向けるために、サーバの重みを使用することを含む。
いくつかの実施形態では、ハッシュ配列220またはサーバリスト230が、受信した負荷情報に基づいて定期的に更新される(例えば、サーバの重みが、負荷を補償するように調整される)。
いくつかの実施形態では、受信した負荷情報に基づいたサーバインデックスの配列(例えば、より少ない負荷/より速く応答するサーバに比較的多くのトラフィックを送る)は、例えば、毎回のXコネクションまたはT秒ごとの後にリクエストする。
いくつかの実施形態では、装置が、変更されたOpenSwitchコンプライアントスイッチである。
いくつかの実施形態では、OpenFlowの変更により、コントローラが、「配信(distribute)」アクションと適合するフロー用のSYNパケットまたはSYN+ACKパケットが転送されるべきであると指定できる。これらの実施形態のいくつかでは、サーバが、カスタムTCPオプションをSYNに挿入し、負荷情報を返す。いくつかの実施形態では、コントローラが、負荷情報およびサーバの応答時間に基づいてトラフィックの配信を更新する。
いくつかの実施形態では、OpenFlowの変更により、コントローラが、「配信(distribute)」アクション用に作られたルール用にキープアライブフィルタリングを可能にすることができる。
いくつかの実施形態では、受信したパケットが、ハッシュ処理アクションの際に使用されるサーバインデックス値を含む。これらの実施形態のいくつかでは、サーバインデックス値が、TCP ACKフィールドの上位nビットに置かれる。
いくつかの実施形態では、OpenFlowの変更により、スイッチ(例えば、図1のvRS140−1)またはコントローラ(例えば、図1のvRS140−1またはエッジルータ130−1(例えばコントローラの機能性がエッジルータ内に含まれる場合))が、着信パケットに基づいて(例えばフェイルオーバのシナリオをサポートするために)サーバインデックス配列のコンテンツを再構築できるようになる。
いくつかの実施形態では、コントローラが、セカンダリスイッチ(例えば、図1のvRS140−2)に、サーバインデックスの初期配列およびプライマリスイッチ(例えば、図1のvRS140−1)と同じサーバのリストを提供する。スイッチ障害から復旧するための、またはホットスタンドバイとして使用するための通知があると、サーバインデックスが、「trigger(トリガ)」にセットされる。プライマリスイッチが故障すると、トラフィックはセカンダリスイッチにリダイレクトされ、パケットが既存のコネクションからコントローラへ通知する。コントローラは、パケットから(例えば、ACKフィールドから)サーバインデックス値を取り出し、パケットハッシュ値に基づいて、この値を用いて配列エントリを更新し、対応するサーバにパケットを転送するようにセカンダリスイッチに命令する。セカンダリスイッチに到着するそのフロー用のその後のパケット、または同じバケットにハッシュ処理を行ういずれかの他のフローは、介入なしに適切なサーバに自動的に転送される。このプロセスは、サーバインデックス配列中の全てのエントリに、特別な「trigger」値以外の値がポピュレートされるまで、または、コントローラが、いずれかの残りの「trigger」値をリアルサーバのインデックスに置き換えることによってサーバインデックス配列を更新する固定時間間隔の後まで継続する。
いくつかの実施形態では、スイッチが、サーバインデックス配列ごとのXの以前のコンテンツの履歴を維持する。コネクションを確立する際に使用された元のサーバインデックス値を含むパケットを受信すると、スイッチがこのサーバインデックス値をそのサーバインデックス配列の値と比較する。適合しない(例えば、TCPコネクションが開始してから配列のコンテンツが変更されたため)場合、スイッチは、以前のX値のいずれかが適合したかどうかを決定するために履歴を検索し、もしそうならば、識別されたサーバにパケットを転送する。有利なのは、新たな、誤ったサーバに転送することによってコネクションを切断する代わりに適正なサーバに転送することによって、コネクション状態が維持され、RSTが、新たなサーバによって送信される必要がないことである。いくつかの実施形態では、履歴(サーバインデックス配列エントリごと)が、N−bitビットマスクであり、それぞれのビットが、その特定のハッシュバケットの1つのポイントで使用されるサーバインデックス値を示す。いくつかの実施形態では、サーバインデックス値vを含むハッシュhをもつ着信パケットの「history check(履歴チェック)」が、(1<<v)&index_array[h].history_maskである。有利なのは、「history check」が、ハードウェアで効率的に実施される単一のオペレーションとなり得ることである。
有利なのは、ネットワーク要素およびコントローラに維持される状態情報がフローインスタンスから独立しているので、ルールテーブルの制限されたサイズによって引き起こされるスケーラビリティの制限が、低減され得ることである。したがって、OpenFlowコントローラおよびvRS対が、増大するトラフィックフローをサポートすることができる。さらに、負荷分散用に維持されるルール数が、少なく(例えば、各vRSのターゲットTCPポートごとに各指令に1つ)、フロー数から独立しているので、ルールテーブル空間は、他の機能向けにリザーブされ得る。さらに、動的状態が関与しないので、フェイルオーバは簡略化され、ハッシュ配列220およびサーバリスト230に必要なストレージの量が、制限され、一定であるので、データは、永続的ストレージ中でプログラムされ、またはネットワークをわたって非常に迅速に通信することができ、既存のフローを破壊することなく新たなvRSインスタンスまたはターゲットサーバの追加が可能である。
図3に、コントローラ(例えば、図2のコントローラ205)がTCPフロー配信を提供するための方法300の一実施形態を示すフローチャートを示す。方法は、ステップ305で開始し、エッジルータ(例えば、図1の1つまたは複数のエッジルータ130)から受信したパケットが、負荷均衡化基準を満足するかどうかを決定するステップ(ステップ310)を含む。満足しない場合、方法はステップ390に進む。パケットが負荷均衡化基準を満足する場合、方法は、任意選択でSYNフラグ用にTCPフラグをチェックするステップ(ステップ330)を含む。SYNフィールドがセットされている場合は、方法は、ステップ340に進み、そうでない場合、宛先IPアドレスが、ACKに基づいて更新される(ステップ360)。方法は、任意選択で、パケットが再送信であるかどうかを決定するステップ(ステップ340)と、パケットが再送信である場合、キャッシュされている選択に基づいてサーバを選択するステップ(ステップ350)を含む。パケットが再送信でない、または、パケットが再送信であるかどうかを決定するチェックが実施されない場合、サーバは、配信ポリシーに基づいて選択される(ステップ370)。ステップ350およびステップ370は、ステップ380に進み、パケットの宛先IPアドレスは、サーバIPアドレスに基づいてセットされ(ステップ380)、次いで、パケットは宛先IPアドレスに基づいて転送され(ステップ390)、方法が終了する(ステップ395)。
方法300では、ステップ310が、エッジルータ(例えば、図1の1つまたは複数のエッジルータ130)から受信したパケットが、負荷均衡化基準を満足するかどうか決定するステップ(ステップ310)を含む。負荷均衡化基準は、例えばパケットプロトコル(例えばTCPまたはUDP)、パケット送信元もしくは宛先IPアドレス、またはパケット送信元もしくは宛先ポートなどの、任意の適したパケット特性を含むことができる。いくつかの実施形態では、パケットが、TCPパケットであり、提供された負荷バランサIP:ポート対と適合するとき、負荷均衡化基準を満足する。パケットが、負荷均衡化基準を満足する場合、方法は、ステップ330に進み、そうでない場合、方法は、ステップ390に進む。
方法300は、任意選択で、ステップ330およびステップ360を含む。ステップ330は、SYNフラグがセットされているかどうかをチェックするステップを含む。SYNフラグがセットされている場合、方法はステップ340に進み、そうでない場合、方法はステップ360に進む。ステップ360では、宛先IPアドレスがACKフィールドに基づいてセットされる。SYNフラグとして示すが、開始側からのフローの第1のパケットとしてパケットを識別する任意の適したインジケータが使用され得ることが理解されるべきである。さらに、任意の適したフィールドが、IPアドレス情報を搬送するために使用されてもよく、ACKフィールドが、適したフィールドのほんの一例であることが理解されるべきである。
有利なのは、非SYNパケット用にLS−TCPを使用することによって、構成の変更が行われる(例えば、VMを追加、削除または移動する)とき既存のフローが破壊されないことである。
方法300では、ステップ340が、パケットが知られている方法による再送信であるかどうか決定するステップを含む。パケットが再送信である場合、方法はステップ350に進み、そうでない場合、方法はステップ370に進む。
方法300では、ステップ350が、キャッシュされている選択に基づいてサーバを選択するステップを含む。特に、方法を実施する装置が、最近のサーバ選択のキャッシュを検索し、サーバが以前の送信に使用されたと決定する。
方法300では、ステップ370が、配信ポリシーに基づいてサーバを選択するステップを含む。特にサーバは、図2で説明した決定のルールに基づいて選択される。
方法300では、ステップ380が、選択されたサーバに基づいて宛先IPアドレスをセットするステップを含む。いくつかの実施形態では、宛先IPアドレスが、選択されたサーバのIPアドレスにセットされる。他の実施形態では、宛先IPアドレスが、選択されたサーバのIPアドレスのサブセットに基づいてセットされる。これらの実施形態のいくつかでは、宛先IPアドレスが、(式1)に従ってセットされる。
set IPDEST[24:31]:=IPSelectedServer[24:31] (式1)
方法300では、ステップ390が、宛先IPアドレスに基づいて従来型のパケットスイッチングを実施するステップを含む。
ステップ360のいくつかの実施形態では、宛先IPアドレスが、ルックアップに基づいてセットされる。これらの実施形態のいくつかでは、TCP ACKフィールドなどのフィールドの一部が、選択されたサーバのIPアドレス(完全なIPアドレスまたはそのサブセット)を識別するサーバインデックスを含む。これらの実施形態のいくつかでは、TCP ACKフィールドが、サーバを含むサーバリスト配列を識別する配列インデックスをさらに含む。いくつかの実施形態では、サーバインデックス、および任意選択で配列インデックスが、サーバのIPアドレス(例えば、IPSelectedServer=server_lists[array index][server index])を取得するために使用される。これらの実施形態のいくつかでは、テーブルが、(例えば、フェイルオーバ前のプライマリサーバによって)更新され得る。
ステップ360のいくつかの実施形態では、宛先IPアドレスが、TCP ACKフィールドの1つまたは複数のビットに基づいてセットされる。これらの実施形態のいくつかでは、TCP ACKフィールドの上位「n」ビットがセットされる。これらの実施形態のいくつかでは、宛先IPアドレスが、(式2)に従ってセットされる。
set IPDEST[24:31]:=ACK[0:7] (式2)
ステップ330およびステップ360のいくつかの実施形態では、サーバインデックスが、サーバによってサーバからパケットに挿入される。これらの実施形態のいくつかでは、挿入が、TCPスタックを変更することによって達成される。
ステップ330およびステップ360のいくつかの実施形態では、サーバインデックスが、vRSによってサーバからパケットに挿入される。有利なのは、変更が、サーバで行われる必要がなく、ただしコネクション単位の状態を維持されなければならなく、パケットが変更されることが必要とされ得るので、サーバは認識されないパケットが原因でコネクションを破壊することがないことである。
いくつかの実施形態では、TCPのキープアライブのステートレスフィルタリングが、フロー構成(すなわち、負荷バランサアプリケーションごとの有効/無効にするためのルール中のフラグ)に応じてvRSで実施される。
いくつかの実施形態では、DDoS緩和アルゴリズムが、例えば、(短い)キャッシュ時間間隔内でクライアントsrc IPごとの1コネクションのみを可能にすること、一定のIP送信元アドレスもしくはレンジをブラックリスト化すること、またはトラフィックパターンの傾向分析を実施することによって、vRSで実施される。これらの実施形態のいくつかでは、トリガが、トラフィックスパイクに対処するために、付加的なVMを自動的にインスタンス化するように実施され得る。
ステップ360およびステップ380の変更IP宛先ヘッダとして主に示すが、いくつかの実施形態は、IP宛先ヘッダを変更する代わりにまたはそれに加えて、変更したレイヤ2宛先アドレス(MAC)を使用することができることが理解されるべきである。有利なのは、レイヤ2宛先アドレスを使用することによって、TCP/IPヘッダチェックサムが更新される必要がなく、戻り方向での宛先IPアドレスを再書込みをする必要がないように、サーバは、仮想負荷バランサIPと同じIPアドレスを使用することができる。
図4に、TCP負荷分散を実施するための方法300の一実施形態を示す例示的なメッセージフローを示す。メッセージフローは、DCルータ(例えば、図1のエッジルータ130−1)、ならびにVRSおよびVRSとラベル付けされた1つもしくは複数の物理ルータ/スイッチまたは仮想ルータ/スイッチ(例えば、図1の1つもしくは複数のvRS140)を介して、クライアント(例えば、図1のクライアント110−1)と仮想マシン(例えば、図1のVM160−1−1)との間のエンドツーエンドメッセージフローである。
SYNフラグが、開始側からのフローの第1のパケットを示し、SYN+ACKフラグが、応答側からのフローの第1のパケットを示すことが理解されるべきである。
いくつかの実施形態では、選択されたターゲットサーバがローカルでない場合、第1のvRS(例えばVRS)は、第2のvRS(例えばVRS)に全てのTCPパケットを(宛先IPを変更した後で)転送しなければならない。次いで、第2のvRSは、受信したTCPパケットで標準のスイッチングを実施することができる。いくつかの実施形態では、戻り方向に流れるパケットが、エッジルータに直接転送され得る(結果として非対称ルーティング/スイッチングとなる)。
主に、特定のシーケンスで示し説明するが、方法300に示すステップは、任意の適したシーケンスで実施され得ることが理解されるべきである。さらに、1つのステップによって識別されるステップは、そのシーケンスの1つまたは複数の他のステップで実施されてもよく、または1つのステップより多くの共通のアクションが、一回だけ実施されてもよい。
先に説明した種々の方法のステップは、プログラムされたコンピュータによって実施され得ることが理解されるべきである。本明細書では、いくつかの実施形態が、プログラム記憶デバイス、たとえば、機械またはコンピュータ読み出し可能であり、命令の機械実行可能またはコンピュータ実行可能プログラムを符号化するデータ記憶媒体を包含するようにも意図されており、前記命令が、前記先に説明した方法のいくつかまたは全てのステップを実施する。プログラムストレージデバイスは、例えば、デジタルメモリ、磁気ディスクおよび磁気テープなどの磁気記憶媒体、ハードドライブ、または光学的可読データ記憶媒体とすることができる。実施形態は、先に説明した方法の前記ステップを実施するようにプログラムされたコンピュータを扱うものでもある。
図5に、図1のvRS140のうちの1つなどの種々の装置500の一実施形態を概略的に示す。装置500は、プロセッサ510と、データストレージ511と、任意選択でI/Oインターフェース530とを含む。
プロセッサ510が、装置500のオペレーションを制御する。プロセッサ510が、データストレージ511と協働する。
データストレージ511は、プロセッサ510によって実行可能なプログラム520を記憶する。データストレージ511は、任意選択で、図2のルール210、ハッシュ配列220、サーバリスト230などのプログラムデータを適宜記憶することもできる。
プロセッサ実行可能なプログラム520は、I/Oインターフェースプログラム521または負荷分散プログラム523を含むことができる。プロセッサ510は、プロセッサ実行可能なプログラム520と協働する。
I/Oインターフェース530は、先に説明した図1のオーバレイトンネル135またはチャネル145をわたる通信をサポートするために、プロセッサ510およびI/Oインターフェースプログラム521と協働する。I/Oインターフェースプログラム521は、先に説明した図3のステップ310またはステップ390のうち1つまたは複数を適宜実施する。
負荷分散マネージャプログラム523は、先に説明した図3の方法300の1つまたは複数のステップを適宜実施する。
いくつかの実施形態では、プロセッサ510が、プロセッサ/CPUコアなどの資源を含むことができ、I/Oインターフェース530は、任意の適したネットワークインターフェースを含むことができ、または、データストレージ511が、メモリもしくはストレージデバイスを含むことができる。さらに、装置500は、1つまたは複数のサーバ、またプロセッサ、メモリ、ネットワークインターフェースまたはストレージデバイスなどのコンポーネントからなるブレードなどの任意の適した物理的ハードウェア構成とすることができる。いくつかの実施形態では、装置500が、互いに遠隔にあるクラウドネットワーク資源を含むことができる。
いくつかの実施形態では、装置500が、1つまたは複数の仮想マシンとすることができる。これらの実施形態のいくつかでは、1つまたは複数の仮想マシンは、異なるマシンからのコンポーネントを含むことができ、または地理的に分散され得る。例えば、データストレージ511およびプロセッサ510が、2つの異なる物理マシン中にあってもよい。
プロセッサ実行可能プログラム520がプロセッサ510で実施されるとき、プログラムコードセグメントは、論理回路を指定するのに類似した動作を行う独自のデバイスを提供するようにプロセッサと結合する。
例えば、プログラムおよび論理がデータストレージ内に記憶され、メモリがプロセッサに通信可能に接続された実施形態に関して本明細書で示し説明したが、こうした情報は、任意の他の適した方式で(例えば、任意の適した個数のメモリ、ストレージまたはデータベースを使用して)、任意の適した構成のデバイスに通信可能に接続された任意の適したメモリ、ストレージまたはデータベースの構成を使用して、メモリ、ストレージまたは内部もしくは外部のデータベースの任意の適した組合せで情報を記憶し、あるいはアクセス可能な任意の適したいくつかの外部メモリ、ストレージまたはデータベースを使用して、記憶され得ることが理解されるべきである。こういうものとして、本明細書で言う用語、データストレージは、メモリ、ストレージおよびデータベースの全ての適した組合せを包含することになる。
説明および図面は、単に本発明の原理を示す。したがって、本明細書では明示的に説明し示さないが、本発明の原理を実施し、その趣旨および範囲に含まれる、種々の構成を考案することができることが、当業者には理解されよう。さらに、本明細書で挙げた全ての例は、主に、当技術を進めるために本発明者によって寄与される本発明の原理および概念を、理解する際に読者を支援するために、教示の目的のためだけに明白にするものであり、こうした具体的に挙げた例および条件に限定されないと解釈されるべきである。さらに本発明の原理、態様および実施形態を挙げる本明細書の全ての記述、ならびにその具体例は、その均等物を包含するものである。
図面に示す種々の要素の機能は、「プロセッサ」としてラベル付けされた任意の機能ブロックを含め、専用のハードウェアならびに適切なソフトウェアに関連するソフトウェアを実行することができるハードウェアの使用を通じて提供され得る。機能は、プロセッサによって提供されるとき、単一の専用プロセッサ、単一の共用プロセッサ、または複数の個々のプロセッサ、これらのいくつかは共用され得るが、これらのプロセッサによって提供され得る。さらに、用語「プロセッサ」または「コントローラ」の明示的使用は、ソフトウェアを実行することができるハードウェアを排他的に言うものと解釈されるべきでなく、限定しないが、暗黙に、デジタル信号プロセッサ(DSP)ハードウェア、ネットワークプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ソフトウェアを記憶するための読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、および不揮発性ストレージを含むことができる。他のハードウェア、従来型のまたはカスタムのハードウェアも含まれ得る。同様に、図面に示すいずれのスイッチも、単に概念的なものである。これらの機能は、プログラム論理のオペレーションにより、専用論理により、プログラム制御と専用論理の相互作用により、または手動でも、遂行されてよく、特定の技術は、文脈からより具体的に理解されるように実施者によって選択され得る。
本明細書のいずれのブロック図も、本発明の原理を実施する例証のための回路の概念的視点を示すことが理解されるべきである。同様に、いずれの流れ図、フローダイアグラム、状態遷移図、疑似コードなども、種々のプロセスを示し、これらのプロセスは、コンピュータ可読媒体中で実質的に示され、またコンピュータまたはプロセッサによって、このコンピュータまたはプロセッサが明示的に示されようとなかろうと実行され得る。

Claims (10)

  1. インパスフロー配信を提供するための装置であって、
    複数の仮想マシンと、
    複数のルールを含むルール部、およびサーバリスト部を含むデータストレージであって、複数のルールの少なくともサブセットが、サーバリスト部に基づいて複数の仮想マシンのうちの1つまたは複数にパケットフローをマッピングする、データストレージと、
    複数の仮想マシンおよびデータストレージに通信可能に接続されたプロセッサであって、
    エッジルータからパケットを受信し、
    パケットに基づいて複数のルールから1つのルールを決定し、
    ルールおよびサーバリスト部に基づいて仮想マシンを決定し、
    仮想マシンに基づいてパケットの宛先アドレスを変更し、
    仮想マシンにパケットを転送するように構成されたプロセッサとを含む、装置。
  2. 装置が、複数のホストのネットワーク中の第1のホストであり、仮想マシンが、第2のホストをホストとする第2の複数の仮想マシンのメンバーであり、第2のホストが、複数のホストのメンバーであり、複数のルールの少なくとも第2のサブセットが、サーバリスト部に基づいて第2の複数の仮想マシンのうちの1つまたは複数にパケットフローをマッピングする、請求項1に記載の装置。
  3. データストレージが、サーバインデックス値の配列を含むハッシュ配列部をさらに含み、
    サーバリスト部が、サーバアドレスのセットを含み、
    仮想マシンの決定が、ルールに基づいて決定されたサーバインデックスを使用してサーバアドレスのセットから仮想マシンを選択するようにプロセッサをさらに構成することにさらに基づき、
    サーバインデックス値の配列が、サーバインデックスを含む、請求項1に記載の装置。
  4. パケットがパケットフローを開始すると決定するように、プロセッサがさらに構成され、
    パケットの宛先アドレスの変更が、パケットがパケットフローを開始するという決定に基づく、請求項1に記載の装置。
  5. パケットがパケットフローを開始するという決定が、パケット中のSYNフラグに基づく、請求項4に記載の装置。
  6. プロセッサが、
    エッジルータから第2のパケットを受信し、第2のパケットが、仮想マシンを識別するサーバ値を含み、
    サーバ値に基づいて第2のパケットの宛先アドレスを変更し、
    仮想マシンに第2のパケットを転送するように、さらに構成された、請求項1に記載の装置。
  7. データストレージが、履歴部をさらに含み、プロセッサが、
    エッジルータから第3のパケットを受信し、
    第3のパケットが再送信であると決定し、
    第3のパケットが再送信であり第3のパケットであるという決定に基づいて、履歴部から以前のサーバ値を取得し、
    以前のサーバ値に基づいて第3のパケットの宛先アドレスを変更し、
    仮想マシンに第3のパケットを転送するように、さらに構成された、請求項6に記載の装置。
  8. インパスフロー配信を提供するための方法であって、
    データストレージに通信可能に接続されたプロセッサにおいて、エッジルータからパケットを受信するステップであって、データストレージが、複数のルールを含むルール部、およびサーバリスト部を含み、複数のルールの少なくともサブセットが、サーバリスト部に基づいて、仮想マシンにパケットフローをマッピングする、受信するステップと、
    データストレージと協働するプロセッサによって、パケットに基づいて複数のルールからルールを決定するステップと、
    データストレージと協働するプロセッサによって、ルールおよびサーバリスト部に基づいて、仮想マシンを決定するステップと、
    データストレージと協働するプロセッサによって、仮想マシンに基づいてパケットの宛先アドレスを変更するステップと、
    データストレージと協働するプロセッサによって、仮想サーバにパケットを転送するステップとを含む、方法。
  9. データストレージと協働するプロセッサによって、パケットがパケットフローを開始すると決定するステップをさらに含み、
    パケットの宛先アドレスの変更が、パケットがパケットフローを開始するという決定に基づく、請求項8に記載の方法。
  10. データストレージと協働するプロセッサによって、エッジルータから第2のパケットを受信するステップであって、第2のパケットが仮想マシンを識別するサーバ値を含む、受信するステップと、
    データストレージと協働するプロセッサによって、サーバインデックス値の配列中の対応するサーバインデックス値が、トリガ値であると決定するステップと、
    データストレージと協働するプロセッサによって、対応するサーバインデックス値をサーバ値にセットするステップと、
    データストレージと協働するプロセッサによって、サーバ値に基づいて第2のパケットの宛先アドレスを変更するステップと、
    データストレージと協働するプロセッサによって、仮想マシンに第2のパケットを転送するステップとをさらに含む、請求項9に記載の方法。
JP2016517104A 2013-06-07 2014-06-05 ソフトウェア定義型ネットワークフロー配信を提供するための方法および装置 Active JP6200586B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/912,709 2013-06-07
US13/912,709 US9521028B2 (en) 2013-06-07 2013-06-07 Method and apparatus for providing software defined network flow distribution
PCT/CA2014/050516 WO2014194423A1 (en) 2013-06-07 2014-06-05 Method and apparatus for providing software defined network flow distribution

Publications (2)

Publication Number Publication Date
JP2016521090A true JP2016521090A (ja) 2016-07-14
JP6200586B2 JP6200586B2 (ja) 2017-09-20

Family

ID=52006463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016517104A Active JP6200586B2 (ja) 2013-06-07 2014-06-05 ソフトウェア定義型ネットワークフロー配信を提供するための方法および装置

Country Status (4)

Country Link
US (1) US9521028B2 (ja)
EP (1) EP3005634A4 (ja)
JP (1) JP6200586B2 (ja)
WO (1) WO2014194423A1 (ja)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US11140178B1 (en) 2009-11-23 2021-10-05 F5 Networks, Inc. Methods and system for client side analysis of responses for server purposes
US10296653B2 (en) 2010-09-07 2019-05-21 F5 Networks, Inc. Systems and methods for accelerating web page loading
US9736065B2 (en) 2011-06-24 2017-08-15 Cisco Technology, Inc. Level of hierarchy in MST for traffic localization and load balancing
US8908698B2 (en) 2012-01-13 2014-12-09 Cisco Technology, Inc. System and method for managing site-to-site VPNs of a cloud managed network
JPWO2014208538A1 (ja) * 2013-06-25 2017-02-23 日本電気株式会社 通信システムと装置と方法とプログラム
US9509615B2 (en) * 2013-07-22 2016-11-29 Vmware, Inc. Managing link aggregation traffic in a virtual environment
US9686178B2 (en) * 2013-07-22 2017-06-20 Vmware, Inc. Configuring link aggregation groups to perform load balancing in a virtual environment
US9350666B2 (en) * 2013-07-22 2016-05-24 Vmware, Inc. Managing link aggregation traffic in a virtual environment
JP6111974B2 (ja) * 2013-10-22 2017-04-12 富士通株式会社 転送装置、制御装置、および、転送方法
US9634938B2 (en) * 2013-11-05 2017-04-25 International Business Machines Corporation Adaptive scheduling of data flows in data center networks for efficient resource utilization
CN110048952B (zh) * 2013-12-10 2021-11-09 华为技术有限公司 一种流表的生成方法和装置
US9124536B2 (en) * 2013-12-12 2015-09-01 International Business Machines Corporation Managing data flows in overlay networks
WO2015108458A1 (en) * 2014-01-20 2015-07-23 Telefonaktiebolaget L M Ericsson (Publ) Method nodes and computer program for enabling of data traffic separation
US10362148B2 (en) * 2014-01-27 2019-07-23 International Business Machines Corporation Path selection using TCP handshake in a multipath environment
US10120729B2 (en) * 2014-02-14 2018-11-06 Vmware, Inc. Virtual machine load balancing
US10314088B2 (en) 2014-04-16 2019-06-04 Belkin International, Inc. Associating devices and users with a local area network using network identifiers
US10560975B2 (en) 2014-04-16 2020-02-11 Belkin International, Inc. Discovery of connected devices to determine control capabilities and meta-information
US10158536B2 (en) * 2014-05-01 2018-12-18 Belkin International Inc. Systems and methods for interaction with an IoT device
US10122605B2 (en) 2014-07-09 2018-11-06 Cisco Technology, Inc Annotation of network activity through different phases of execution
US20160142285A1 (en) * 2014-11-13 2016-05-19 Industrial Technology Research Institute Openflow switch and method for packet exchanging thereof, sdn controller and data flow control method thereof
US10228958B1 (en) * 2014-12-05 2019-03-12 Quest Software Inc. Systems and methods for archiving time-series data during high-demand intervals
US9679157B2 (en) * 2015-01-07 2017-06-13 International Business Machines Corporation Limiting exposure to compliance and risk in a cloud environment
JP6310406B2 (ja) * 2015-02-10 2018-04-11 日本電信電話株式会社 タグ割当サーバ、タグ割当方法およびタグ割当プログラム
US20160241474A1 (en) * 2015-02-12 2016-08-18 Ren Wang Technologies for modular forwarding table scalability
EP3278517A4 (en) * 2015-03-30 2018-02-21 Telefonaktiebolaget LM Ericsson (publ) Load balancing
CN106161270B (zh) * 2015-04-22 2019-05-10 北京邮电大学 一种网络部署方法
US10476982B2 (en) 2015-05-15 2019-11-12 Cisco Technology, Inc. Multi-datacenter message queue
WO2017007705A1 (en) 2015-07-06 2017-01-12 Shape Security, Inc. Asymmetrical challenges for web security
US10476992B1 (en) 2015-07-06 2019-11-12 F5 Networks, Inc. Methods for providing MPTCP proxy options and devices thereof
US10034201B2 (en) * 2015-07-09 2018-07-24 Cisco Technology, Inc. Stateless load-balancing across multiple tunnels
US9992153B2 (en) 2015-07-15 2018-06-05 Nicira, Inc. Managing link aggregation traffic in edge nodes
US10243914B2 (en) 2015-07-15 2019-03-26 Nicira, Inc. Managing link aggregation traffic in edge nodes
US10205677B2 (en) 2015-11-24 2019-02-12 Cisco Technology, Inc. Cloud resource placement optimization and migration execution in federated clouds
US10084703B2 (en) 2015-12-04 2018-09-25 Cisco Technology, Inc. Infrastructure-exclusive service forwarding
US10367914B2 (en) 2016-01-12 2019-07-30 Cisco Technology, Inc. Attaching service level agreements to application containers and enabling service assurance
US10432532B2 (en) 2016-07-12 2019-10-01 Cisco Technology, Inc. Dynamically pinning micro-service to uplink port
US10382597B2 (en) 2016-07-20 2019-08-13 Cisco Technology, Inc. System and method for transport-layer level identification and isolation of container traffic
US10567344B2 (en) 2016-08-23 2020-02-18 Cisco Technology, Inc. Automatic firewall configuration based on aggregated cloud managed information
CN106385641B (zh) * 2016-10-08 2019-04-19 中山大学 一种基于sdn的直播视频流媒体分发方法
WO2018073674A1 (en) * 2016-10-21 2018-04-26 Levi Dinor Adam Vestergaard Flat data routing chain
US10320683B2 (en) 2017-01-30 2019-06-11 Cisco Technology, Inc. Reliable load-balancer using segment routing and real-time application monitoring
US10671571B2 (en) 2017-01-31 2020-06-02 Cisco Technology, Inc. Fast network performance in containerized environments for network function virtualization
US10491503B2 (en) * 2017-04-03 2019-11-26 Dell Products L.P. Application-policy-based virtual SDN controller system
KR102342734B1 (ko) * 2017-04-04 2021-12-23 삼성전자주식회사 Sdn 제어 장치 및 이의 데이터 패킷의 전송 룰 설정 방법
US11005731B2 (en) 2017-04-05 2021-05-11 Cisco Technology, Inc. Estimating model parameters for automatic deployment of scalable micro services
US10439877B2 (en) 2017-06-26 2019-10-08 Cisco Technology, Inc. Systems and methods for enabling wide area multicast domain name system
US10382274B2 (en) 2017-06-26 2019-08-13 Cisco Technology, Inc. System and method for wide area zero-configuration network auto configuration
US10425288B2 (en) 2017-07-21 2019-09-24 Cisco Technology, Inc. Container telemetry in data center environments with blade servers and switches
US10601693B2 (en) 2017-07-24 2020-03-24 Cisco Technology, Inc. System and method for providing scalable flow monitoring in a data center fabric
US10541866B2 (en) 2017-07-25 2020-01-21 Cisco Technology, Inc. Detecting and resolving multicast traffic performance issues
US10705882B2 (en) 2017-12-21 2020-07-07 Cisco Technology, Inc. System and method for resource placement across clouds for data intensive workloads
CN108173782A (zh) * 2017-12-26 2018-06-15 北京星河星云信息技术有限公司 虚拟私有云中传输数据流的方法、装置及存储介质
US11595474B2 (en) 2017-12-28 2023-02-28 Cisco Technology, Inc. Accelerating data replication using multicast and non-volatile memory enabled nodes
CN109982156B (zh) * 2017-12-28 2021-06-22 浙江宇视科技有限公司 一种基于sdn的快速组播轮切方法、装置及系统
US10511534B2 (en) 2018-04-06 2019-12-17 Cisco Technology, Inc. Stateless distributed load-balancing
US10728361B2 (en) 2018-05-29 2020-07-28 Cisco Technology, Inc. System for association of customer information across subscribers
US10904322B2 (en) 2018-06-15 2021-01-26 Cisco Technology, Inc. Systems and methods for scaling down cloud-based servers handling secure connections
US10764266B2 (en) 2018-06-19 2020-09-01 Cisco Technology, Inc. Distributed authentication and authorization for rapid scaling of containerized services
US11019083B2 (en) 2018-06-20 2021-05-25 Cisco Technology, Inc. System for coordinating distributed website analysis
US10819571B2 (en) 2018-06-29 2020-10-27 Cisco Technology, Inc. Network traffic optimization using in-situ notification system
US10581730B2 (en) 2018-07-12 2020-03-03 Vmware, Inc. Packet processing using service chains
US10904342B2 (en) 2018-07-30 2021-01-26 Cisco Technology, Inc. Container networking using communication tunnels
US10645201B2 (en) * 2018-07-31 2020-05-05 Vmware, Inc. Packet handling during service virtualized computing instance migration
US10873639B2 (en) * 2019-04-04 2020-12-22 Cisco Technology, Inc. Cooperative caching for fast and scalable policy sharing in cloud environments

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246637A1 (en) * 2011-03-22 2012-09-27 Cisco Technology, Inc. Distributed load balancer in a virtual machine environment
WO2013074831A1 (en) * 2011-11-15 2013-05-23 Nicira, Inc. Network control system for configuring middleboxes

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006032832A1 (de) * 2006-07-14 2008-01-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
US20100036903A1 (en) * 2008-08-11 2010-02-11 Microsoft Corporation Distributed load balancer
WO2011120000A2 (en) 2010-03-26 2011-09-29 Citrix Systems, Inc. Systems and methods for link load balancing on a multi-core device
US8898402B1 (en) * 2011-03-31 2014-11-25 Emc Corporation Assigning storage resources in a virtualization environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246637A1 (en) * 2011-03-22 2012-09-27 Cisco Technology, Inc. Distributed load balancer in a virtual machine environment
WO2013074831A1 (en) * 2011-11-15 2013-05-23 Nicira, Inc. Network control system for configuring middleboxes
WO2013074827A1 (en) * 2011-11-15 2013-05-23 Nicira, Inc. Architecture of networks with middleboxes
WO2013074844A1 (en) * 2011-11-15 2013-05-23 Nicira, Inc. Load balancing and destination network address translation middleboxes

Also Published As

Publication number Publication date
WO2014194423A1 (en) 2014-12-11
US9521028B2 (en) 2016-12-13
JP6200586B2 (ja) 2017-09-20
EP3005634A1 (en) 2016-04-13
US20140365680A1 (en) 2014-12-11
EP3005634A4 (en) 2017-01-25

Similar Documents

Publication Publication Date Title
JP6200586B2 (ja) ソフトウェア定義型ネットワークフロー配信を提供するための方法および装置
EP3522457B1 (en) Dedicated virtual local area network for peer-to-peer traffic transmitted between switches
US9559962B2 (en) Optimizing traffic flows via dynamic routing protocol modifications when using server virtualization with dynamic routing
US10791066B2 (en) Virtual network
US10122620B2 (en) Method and system for programming equal-cost multi-path routes on network devices
US20170264677A1 (en) Service Processing Apparatus and Method
EP3399703B1 (en) Method for implementing load balancing, apparatus, and network system
US10097465B2 (en) Data transfer between endpoints using a multipath connection
US9548927B2 (en) Flow-based load balancing
US20150363423A1 (en) Method and system for parallel data replication in a distributed file system
US10200277B2 (en) Influencing path selection during a multipath connection
US20190286469A1 (en) Methods and apparatus for enabling live virtual machine (vm) migration in software-defined networking networks
US9712649B2 (en) CCN fragmentation gateway
EP3185492A1 (en) Method for synchronizing forwarding tables, network device, and system
KR20120019462A (ko) 계층-2 도메인에 걸친 로드 밸런싱
US9509600B1 (en) Methods for providing per-connection routing in a virtual environment and devices thereof
EP3474504B1 (en) Leaf-to-spine uplink bandwidth advertisement to leaf-connected servers
EP3210113B1 (en) Virtual overlay mobility using label based underlay network forwarding
JPWO2014084198A1 (ja) ストレージエリアネットワークシステム、制御装置、アクセス制御方法及びプログラム
WO2014133025A1 (ja) 通信システム、上位コントローラ、ネットワークの制御方法及びプログラム
US20150381775A1 (en) Communication system, communication method, control apparatus, control apparatus control method, and program
JP6718739B2 (ja) 通信装置および通信方法
EP3026851B1 (en) Apparatus, network gateway, method and computer program for providing information related to a specific route to a service in a network
WO2014119602A1 (ja) 制御装置、スイッチ、通信システム、スイッチの制御方法及びプログラム
KR101538667B1 (ko) 네트워크 시스템 및 네트워크 제어 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170501

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170825

R150 Certificate of patent or registration of utility model

Ref document number: 6200586

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