本開示の複数の概念は、様々な変更及び代替的な形態の対象たり得るものである一方で、それらの複数の具体的実施形態は、図面において例として示され、本明細書において詳細に説明されるだろう。しかしながら、本開示の複数の概念を開示される複数の特定形態に制限する意図は無く、それどころか、本開示及び添付の特許請求の範囲と相反しない全ての変更、均等物及び代替案を包含する意図であることを理解されるべきである。
明細書における「一実施形態」、「実施形態」、「例示的実施形態」などについての複数の言及は、説明される実施形態が特定の機能、構造または特性を含み得ることを示しているが、いずれの実施形態も、それら特定の機能、構造または特性を含んでもよく、又は、必ずしも含まなくてもよい。更に、そのような複数の表現は、必ずしも同一の実施形態について言及していない。更に、特定の機能、構造または特性が実施形態に関連して説明される場合、明示的に説明されているか否かに拘らず、他の複数の実施形態に関連してそのような特徴、構造または特性を達成することは、当業者の知識の範囲内であるとされる。加えて、「A、BおよびCの少なくとも1つ」という形の一覧に含まれている複数のアイテムは、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、又は、(A、BおよびC)を意味し得ることが理解されるべきである。同様に、「A、BまたはCの少なくとも1つ」という形で列挙されている複数のアイテムは、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、又は、(A、BおよびC)を意味し得る。
開示される複数の実施形態は、場合によっては、ハードウェア、ファームウェア、ソフトウェア、又は、それらの任意の組み合わせにおいて実装されてもよい。開示される複数の実施形態はまた、1または複数のプロセッサによって読み取られて実行され得る、1または複数の一時的又は非一時機械可読(例えばコンピュータ可読)記憶媒体によって伝達又は格納される複数の命令として実装されてもよい。機械可読記憶媒体は、情報を機械で読み取り可能な形で格納又は送信する、任意のストレージデバイス、メカニズム、又は、他の物理的構造として具現化されてもよい(例えば、揮発性若しくは非揮発性メモリ、メディアディスク、又は、他のメディアデバイス)。
図面において、幾つかの構造的又は方法的な特徴は、複数の具体的な構成及び/又は順序で示され得る。しかしながら、そのような複数の具体的な構成及び/又は順序が必要とされなくてもよいことが理解されるべきである。むしろ、幾つかの実施形態において、そのような複数の特徴は、例示的な図面で示されるものと異なる方法及び/又は順序で配置されてもよい。加えて、特定の図面において構造的又は方法的な特徴を含ませることは、そのような特徴が全ての実施形態において必要とされることを暗示するつもりではなく、幾つかの実施形態においては含まれなくても良く、又は、他の複数の特徴と組み合わされてもよい。
ここで、図1を参照すると、例示的実施形態において、粗粒度の負荷分散と細粒度の負荷分散との間でブリッジするシステム100は、複数のコンピューティングノード110を有するクラスタコンピューティングデバイス102と、ネットワークコントローラ120と、リモートコンピューティングデバイス130と、ネットワークロードバランサ140とを備え、これらの各々は、ソフトウェアデファインドネットワーキング(SDN)環境及び/又はネットワーク機能仮想化(NFV)環境で動作可能であってもよい。ネットワークロードバランサ140は、別個の複数の通信リンク(例えば、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイドなど)を介して、クラスタコンピューティングデバイス102の2つ又は3つ以上のコンピューティングノード110(例えば、コンピューティングノードA112およびコンピューティングノードB114)に通信可能に連結されてもよい。使用する場合、ネットワークロードバランサ140は、例えばリモートコンピューティングデバイス130のような1または複数のコンピューティングデバイスから、クラスタコンピューティングデバイス102に向かう複数のネットワークパケットを受信する。ネットワークロードバランサ140は、粗粒度の負荷分散スキーム(例えば等コストマルチパスルーティング(ECMP)、ラウンドロビンなど)によって、クラスタコンピューティングデバイス102の複数のコンピューティングノード110を渡って、受信された複数のネットワークパケットを分散してもよい。しかしながら、受信された複数のネットワークパケットを処理する負担は(例えば、複数のパケット転送操作を実行する、複数のパケットルーティング操作を実行する、複数のローカルパケット処理操作を実行するなど)、細粒度の負荷分散スキームによって、複数のコンピューティングノード110間で分配されてもよい。
従って、幾つかの実施形態において、受信されたネットワークパケットは、ネットワークロードバランサ140によって、ネットワークパケットを処理する責任がある特定のコンピューティングノード110に拘らず、クラスタコンピューティングデバイス102の複数のコンピューティングノード110のいずれか一つ(例えば、コンピューティングノードA112、コンピューティングノードB114、コンピューティングノードC116)に転送されてもよい。そのような複数の実施形態において、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の各々は、それが、受信されたネットワークパケットを処理する責任があるコンピューティングノード110かどうか、又は、クラスタコンピューティングデバイス102の他のコンピューティングノード110が責任あるかどうかを決定するように設定されてもよい。そのような決定は、ネットワークコントローラ120から、又は、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つから受信されるネットワークフロー情報に基づいて行われてもよい。幾つかの実施形態において、そのような決定はまた、ネットワークコントローラ120と、任意の数の他のコンピューティングデバイス、コンピューティングノード及び/又は複数のコンピューティングエンティティとから受信される複合情報に基づいて行われてもよい。例えば、そのような複数の実施形態において、クラスタコンピューティングデバイス102のコンピューティングノード110の各々は、それが又は異なるコンピューティングノード110が、複数のコンピューティングノード110の他の1つから、及び/又は、クラスタコンピューティングデバイス102の複数のコンピューティングエンティティ(例えば作業負荷制御エンティティなど)から受信される情報と組み合わせて、ネットワークコントローラ120から受信されるネットワークフロー情報に基づいて特定のネットワークパケットを処理する責任があるかどうかを決定するように設定されてもよい。
もしネットワークロードバランサ140からネットワークパケットを受信するコンピューティングノード110がネットワークパケットを処理する責任のあるコンピューティングノード110であれば、ネットワークパケットはローカルに更に処理されるだろう。しかしながら、もしネットワークロードバランサ140からネットワークパケットを受信するコンピューティングノード110がネットワークパケットを処理する責任のあるコンピューティングノード110ではないならば、コンピューティングノード110は、クラスタコンピューティングデバイス102の他の複数のコンピューティングノード110のいずれがネットワークパケットを処理する責任があるかを決定する。次に、受信されたネットワークパケットは、更に処理する責任がある、クラスタコンピューティングデバイス102のコンピューティングノード110に転送される。
動作中に、コンピューティングノード110(例えばコンピューティングノードA112)は、粗粒度の負荷分散スキームに基づいて、ネットワークロードバランサ140によって転送されるネットワークパケットを受信してもよい。コンピューティングノード110(例えばコンピューティングノードA112)は、ネットワークパケットを処理する責任があるクラスタコンピューティングデバイス102のコンピューティングノード110であるかどうかを決定してもよい。そのようにすべく、幾つかの実施形態において、コンピューティングノード110(例えばコンピューティングノードA112)は、受信されたネットワークパケットの発信元情報および宛先情報(例えば5タプル)を、コンピューティングノード110(例えばコンピューティングノードA112)によって維持されるローカルフローテーブルと比較してもよい。幾つかの実施形態において、コンピューティングノード110(例えばコンピューティングノードA112)は、受信されたネットワークパケットと関連付けられる全ての発信元情報および宛先情報(例えば5タプルの全てのフィールド)を比較してもよく、又は、受信されたネットワークパケットと関連付けられる発信元情報および宛先情報のサブセット(例えば5タプルの複数のフィールドの一部)を比較してもよい。そのような複数の実施形態において、コンピューティングノード110(例えばコンピューティングノードA112)によって比較される(例えば5タプルの複数のフィールドの)特定の発信元情報および宛先情報は、ネットワークコントローラ120、及び/又は、クラスタコンピューティングデバイス102の異なるコンピューティングノード若しくはエンティティ(例えば、複数のコンピューティングノード110の他の1つ、作業負荷制御エンティティなど)によって選択されてもよく、そうでなければ、決定されてもよい。それに拘らず、コンピューティングノード110(例えばコンピューティングノードA112)は、受信されたネットワークパケットの発信元情報および宛先情報が、コンピューティングノード110(例えばコンピューティングノードA112)によって維持されるローカルフローテーブルに含まれる複数のネットワークフローエントリのうちのあるネットワークフローエントリと一致するかどうかを決定する。受信されたネットワークパケットの発信元情報および宛先情報がローカルフローテーブル内のネットワークフローエントリと一致するという決定に応じて、コンピューティングノード110(例えばコンピューティングノードA112)は、一致するネットワークフローエントリと関連付けられるネクストホップタイプを決定する。もし、一致するネットワークフローエントリのネクストホップタイプが、ネクストホップ(例えばネクストホップコンピューティングデバイス)がローカルにあることを示していると、コンピューティングノード110(例えばコンピューティングノードA112)が決定するならば、コンピューティングノード110(例えばコンピューティングノードA112)は、受信されたネットワークパケットをローカルに処理する。しかしながら、もしその代わりに、一致するネットワークフローエントリのネクストホップタイプが、ネクストホップが遠隔にあることを示していると、コンピューティングノード110(例えばコンピューティングノードA112)が決定するならば、コンピューティングノード110(例えばコンピューティングノードA112)は、コンピューティングノード110(例えばコンピューティングノードA112)によって維持されているローカルネクストホップテーブルに格納された、関連付けられたネクストホップエントリに基づいて、更に処理する責任がある、クラスタコンピューティングデバイス102のコンピューティングノード110に、受信されたネットワークパケットを転送する。
幾つかの実施形態において、コンピューティングノード110(例えばコンピューティングノードA112)は、ネットワークコントローラ120からネットワークフロー情報を受信する。ネットワークフロー情報は、ネットワークフロー、及び、ネットワークフローと関連付けられる任意のネットワークパケットに対応する。そのような複数の実施形態において、コンピューティングノード110(例えばコンピューティングノードA112)は、ネットワークフローエントリを自身のローカルフローテーブルに追加する。そのようにしている間に、コンピューティングノード110(例えばコンピューティングノードA112)は、ネットワークフローエントリと一致する受信された複数のネットワークパケットがローカルに処理されるべきであることを示す、追加されたネットワークフローエントリのネクストホップタイプを更新する。続いて、コンピューティングノード110(例えばコンピューティングノードA112)は、マルチキャストネットワークパケットを生成し、クラスタコンピューティングデバイス102の他の複数のコンピューティングノード110に送信する。コンピューティングノード110(例えばコンピューティングノードA112)によって生成されるマルチキャストネットワークパケットは、ネットワークコントローラ120から受信されたネットワークフロー情報と、コンピューティングノード110(例えばコンピューティングノードA112)と関連付けられたインターネットプロトコル(IP)アドレスとを含む。幾つかの実施形態において、他の複数のコンピューティングノード110は、コンピューティングノード110(例えばコンピューティングノードA112)から受信されたマルチキャストネットワークパケットに基づいて、対応するネットワークフローエントリをそれら自身のローカルフローテーブルに追加し、関連付けられたネクストホップエントリをそれら自身のローカルネクストホップテーブルに追加する。しかしながら、そのような複数の実施形態において、他の複数のコンピューティングノード110によってそれら各々のローカルフローテーブルに追加されたローカルネットワークフローエントリは、ネットワークフローエントリと一致する受信された複数のネットワークパケットが(例えばコンピューティングノードA112によって)遠隔から処理されるべきであることを示すネクストホップタイプを含む。
幾つかの実施形態において、コンピューティングノード110(例えばコンピューティングノードA112)はまた、クラスタコンピューティングデバイス102の複数のコンピューティングノード110(例えばコンピューティングノードB114)の他の1つによって生成されて送信されるマルチキャストネットワークパケットを受信する。受信されたマルチキャストネットワークパケットは、ネットワークフロー、及び、ネットワークフローと関連付けられた任意のネットワークパケットに対応するネットワークフロー情報を含んでもよい。幾つかの実施形態において、受信されたマルチキャストネットワークパケットはまた、含まれるネットワークフロー情報に対応するネットワークフローと関連付けられた、複数のネットワークパケットを処理する責任があるコンピューティングノード110(例えばコンピューティングノードB114)を示すネクストホップ情報を含む。そのような複数の実施形態において、コンピューティングノード110(例えばコンピューティングノードA112)は、受信されたマルチキャストネットワークパケットのネットワークフロー情報およびネクストホップ情報に基づいて、新しいネットワークフローエントリを自身のローカルフローテーブルに追加し、関連付けられたネクストホップエントリを自身のローカルネクストホップテーブルに追加してもよい。そのようにしている間に、コンピューティングノード110(例えばコンピューティングノードA112)は、ネットワークフローエントリと一致する任意の受信された複数のネットワークパケットが、遠隔から処理されるべく他のコンピューティングノード110(例えばコンピューティングノードB114)に転送される予定であることを示す、追加されたネットワークフローエントリのネクストホップタイプを更新する。
クラスタコンピューティングデバイス102(例えば分散コンピューティングデバイス)は、本明細書で説明される複数の機能を実行するように一斉に動作する個別のコンピューティングノード110のグループとして具現化されてもよい。図1に例示的に示されるように、クラスタコンピューティングデバイス102は、十分に接続されたメッシュネットワーキングトポロジに従って、互いに通信可能に連結された複数のコンピューティングノード110を含んでもよい。しかしながら、各コンピューティングノード110は、任意の他のネットワーキングトポロジに従って、他の複数のコンピューティングノード110と通信可能に連結されてもよいことが理解されるべきである。例えば、各コンピューティングノード110は、とりわけ、交換ネットワークトポロジ、CLOSネットワークトポロジ、バスネットワークトポロジ、スターネットワークトポロジ、リングネットワークトポロジ、及び/又は、それらの任意の組み合わせに従って、他の複数のコンピューティングノード110と通信可能に連結されてもよい。クラスタコンピューティングデバイス102の複数のコンピューティングノード110の各々は、クラスタコンピューティングデバイス102に対する複数のパケット処理操作(例えば、パケット転送操作、パケットルーティング操作、ローカルパケット処理操作など)の任意の部分を実行するように設定されてもよい。例えば、複数のコンピューティングノード110の各々は、ネットワークコントローラ120から受信されたネットワークフロー情報に少なくとも部分的に基づいて、そうでなければ当該情報に応じて、特定のネットワークフローと関連付けられた複数のネットワークパケットをローカルに処理するように設定されてもよい。加えて、又は、代替的に、複数のコンピューティングノード110の各々は、マルチキャストネットワークパケットによって他のコンピューティングノード110から受信されたネットワークフロー情報及びネクストホップ情報に少なくとも部分的に基づいて、そうでなければこれらの情報に応じて、更に処理する目的で、クラスタコンピューティングデバイス102の他のコンピューティングノード110に、特定のネットワークフローと関連付けられた複数のネットワークパケットを転送またはルーティングするように設定されてもよい。
ここで、図2を参照すると、複数のコンピューティングノード110の各々は、これらに限定されないが、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピューティングデバイス、民生用電子機器、モバイルコンピューティングデバイス、携帯電話、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、及び/又は、他のタイプのコンピューティングデバイスを含めて、本明細書で説明される複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化されてもよく、そうでなければこれらを含んでもよい。図2に例示的に示されるように、複数のコンピューティングノード110の各々は、プロセッサ210、メモリ214、入出力(I/O)サブシステム220、データストレージ224、及び、通信回路226を含む。勿論、複数のコンピューティングノード110は、他の複数の実施形態において、コンピュータ内で一般的に見出されるもの(例えば様々な入出力デバイス)のような、他の又は追加の複数のコンポーネントを含んでもよい。加えて、幾つかの実施形態において、複数の例示的コンポーネントのうちの1または複数は、他のコンポーネントの中に組み込まれてもよく、そうでなければ他のコンポーネントの一部の形であってもよい。例えば、メモリ214、又は、その複数の部分は、幾つかの実施形態において、プロセッサ210内に組み込まれてもよい。複数のコンピューティングノード110の各々は、プロセッサ210、メモリ214、入出力(I/O)サブシステム220、データストレージ224、及び、通信回路226を含むが、複数の例示的コンポーネントの以下の説明は、説明の明確化を目的として、単一のコンピューティングノード112を特定参照して説明されることが理解されるべきである。
プロセッサ210は、本明細書で説明される複数の機能を実行可能な任意のタイプのプロセッサとして具現化されてもよい。例えば、幾つかの実施形態において、プロセッサ210は、シングルコアプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又は、他のプロセッサ若しくは処理/制御回路として具現化されてもよい。他の複数の実施形態において、図2に例示的に示されるもののように、プロセッサ210は、複数のプロセッサコア212を有するマルチコアプロセッサとして具現化されてもよい。そのような複数の実施形態において、プロセッサ210の各プロセッサコア212は、1または複数のアプリケーションを実行可能である。
メモリ214は、本明細書で説明される複数の機能を実行可能な、任意のタイプの揮発性若しくは非揮発性メモリ又はデータストレージとして具現化されてもよい。動作中、メモリ214は、複数のオペレーティングシステム、複数のアプリケーション、複数のプログラム、複数のライブラリ、及び、複数のドライバなどの、コンピューティングノード112の動作中に用いられる様々なデータ及びソフトウェアを格納してもよい。メモリ214は、I/Oサブシステム220を介してプロセッサ210と通信可能に連結される。I/Oサブシステム220は、プロセッサ210、メモリ214、及び、コンピューティングノード112の他の複数のコンポーネントとの複数の入出力操作を促す回路及び/又は複数のコンポーネントとして具現化されてもよい。例えば、I/Oサブシステム220は、複数のメモリコントローラハブ、複数の入出力制御ハブ、複数のファームウェアデバイス、複数の通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレースなど)、及び/又は、複数の入出力操作を促す他の複数のコンポーネント並びに複数のサブシステムとして具現化されてもよく、そうでなければこれらを含んでもよい。幾つかの実施形態において、I/Oサブシステム220は、システムオンチップ(SoC)の一部を形成してもよく、プロセッサ210、メモリ214、及び、コンピューティングノード112の他の複数のコンポーネントと共に単一の集積回路チップに組み込まれてもよい。
幾つかの実施形態において、メモリ214は、ローカルフローテーブル216を含む。以下でより詳細に説明されるように、ローカルフローテーブル216は、各々が異なるネットワークフローに対応する情報を有する複数のネットワークフローエントリを含む。例えば、ローカルフローテーブル216の各ネットワークフローエントリは、異なるネットワークフローと関連付けられてもよく、そのネットワークフローに対応する、フロー識別子、フロータプル、ネクストホップタイプおよびネクストホップインデックスを含んでもよい。各ネットワークフローエントリのフロー識別子は、コンピューティングノード112のローカルフローテーブル216に格納された複数のネットワークフローエントリのうちの他の複数のネットワークフローエントリから、ネットワークフローエントリを一意に識別する。各ネットワークフローエントリのフロータプルは、対応するネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示してもよい。例えば、幾つかの実施形態において、フロータプルは、他の複数のタイプの情報の中でも、発信元インターネットプロトコル(IP)アドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号、及び、対応するネットワークフローと関連付けられる複数のネットワークパケットのプロトコルを含んでもよい。
各ネットワークフローエントリのネクストホップタイプは、対応するネットワークフローと関連付けられる複数のネットワークパケットが、コンピューティングノード112によってローカルに処理されるべきか、又は、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つによって遠隔から処理されるべきかを示す。各ネットワークフローエントリのネクストホップインデックスは、そのネットワークフローエントリと関連付けられるコンピューティングノード112における、ローカルネクストホップテーブル218の特定ネクストホップエントリを示し、そうでなければそれを識別する。以下で説明されるように、ネクストホップインデックスは、コンピューティングノード112のローカルネクストホップテーブル218に格納された複数のネクストホップエントリから、関連付けられたネクストホップエントリを一意に識別する。加えて、以下で説明されるように、ローカルフローテーブル216における1または複数のネットワークフローエントリのネクストホップインデックスは、対応するネットワークフローと関連付けられる複数のネットワークパケットがコンピューティングノード112によってローカルに処理されるべきであることを、対応するネットワークフローエントリのネクストホップタイプが示している複数の実施形態において、ヌル値を含んでもよい。そのような複数の実施形態において、ローカルネクストホップテーブル218は、関連付けられたネクストホップエントリを含まなくてもよい。加えて、幾つかの実施形態において、ローカルフローテーブル216に格納された複数のフローエントリのうちの1または複数は、複数のネットワークパケットが既にコンピューティングノード112によって受信されているネットワークフローに対応してもよい。加えて、又は、代替的に、ローカルフローテーブル216に格納された複数のフローエントリのうちの1または複数は、複数のネットワークパケットがまだコンピューティングノード112によって受信されていないネットワークフローに対応してもよい。すなわち、幾つかの実施形態において、ローカルフローテーブル216に格納された複数のフローエントリのうちの1または複数は、複数のネットワークパケットがその後に受信され得るネットワークフローに対応してもよい。
幾つかの実施形態において、メモリ214はまた、ローカルネクストホップテーブル218を含む。以下でより詳細に説明されるように、ローカルネクストホップテーブル218は、各々がローカルフローテーブル216の異なるネットワークフローエントリと関連付けられ、受信された複数のネットワークパケットを更に処理する責任があるネクストホップコンピューティングノード110(例えば、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つ)を決定すること、そうでなければ識別することに関する情報を含む、複数のネクストホップエントリを含む。例えば、ローカルネクストホップテーブル218の各ネクストホップエントリは、ローカルフローテーブル216の異なるネットワークフローエントリと関連付けられてもよく、フロー識別子、ネットワークフローに対応する受信された複数のネットワークパケットを更に処理する責任があるネクストホップコンピューティングノード110と関連付けられたIPアドレス、及び、ネットワークフローに対応する受信された複数のネットワークパケットを更に処理する責任があるネクストホップコンピューティングノード110と関連付けられた媒体アクセス制御(MAC)アドレスを含んでもよい。各ネクストホップエントリのネクストホップインデックスは、コンピューティングノード112のローカルネクストホップテーブル218に格納された複数のネクストホップエントリの他の複数のネクストホップエントリから、ネクストホップエントリを一意に識別する。
幾つかの実施形態において、特定のネットワークフロー用のネットワークフロー情報(例えば、各ネットワークフローエントリのフロータプル、ネクストホップタイプ、ネクストホップインデックスおよびネクストホップ識別子)及びネクストホップ情報(例えば、フロー識別子、ネクストホップコンピューティングノード110のIPアドレス、及び、各ネクストホップエントリのネクストホップコンピューティングノード110のMACアドレス)は、別個のテーブルよりもむしろ同一のテーブルに格納され又は維持されてもよい。勿論、特定のネットワークフローに関するネットワークフロー情報およびネクストホップ情報は、例示的実施形態において1または複数のテーブルに格納されるものとして説明されるが、ネットワークフロー情報及び/又はネクストホップ情報は、他の複数の実施形態において、異なるフォーマットを有するデータ構造(例えば、ドキュメント、ファイル、データベースなど)に格納されてもよいことが理解されるべきである。例えば、特定のネットワークフローに関するネットワークフロー情報及び/又はネクストホップ情報は、コンマ区切り(CSV)ファイル、テキストファイル、暗号化済みデータファイル、1または複数の拡張マークアップ言語(XML)要素を有するXMLドキュメント、又は、ネットワーク情報並びに/若しくはネクストホップ情報を格納するのに適した任意の他のフォーマットとして具現化されてもよい。加えて、ローカルフローテーブル216およびローカルネクストホップテーブル218は、例示的実施形態において、コンピューティングノード112のメモリ214に格納されるものとして説明されるが、ローカルフローテーブル216およびローカルネクストホップテーブル218は、他の複数の実施形態において、コンピューティングノード112の他の複数のデータストレージデバイスに格納されてもよいことが理解されるべきである。例えば、幾つかの実施形態において、ローカルフローテーブル216及び/又はローカルネクストホップテーブル218の全て、又は、それらの一部は、プロセッサ210のキャッシュメモリ(不図示)に格納されてもよい。
複数のコンピューティングノード110の通信回路226は、1または複数の通信ネットワーク(例えば、複数のローカルエリアネットワーク、複数のパーソナルエリアネットワーク、複数のワイドエリアネットワーク、複数のセルラーネットワーク、インターネットのようなグローバルネットワークなど)を介して、クラスタコンピューティングデバイス102のコンピューティングノード112並びに他の複数のコンピューティングノード110、ネットワークコントローラ120、ネットワークロードバランサ140、及び/又は、他の複数のコンピューティングデバイス間における複数の通信を実現可能な任意のタイプの通信回路、デバイスまたはそれらの集合として具現化されてもよい。通信回路226は、任意の1または複数の通信技術(例えば、無線又は有線通信)、及び、そのような通信に影響する複数の関連付けられたプロトコル(例えば、イーサネット(登録商標)、Wi−Fi(登録商標)、WiMAX(登録商標)など)を用いるように設定されてもよい。例示的実施形態において、通信回路226は、1または複数の通信インターフェース228を含み、そうでなければ、それらと通信可能に連結される。複数の通信インターフェース228は、複数のコンピューティングノード110を、任意の数の他の複数のコンピューティングノード110、ネットワークコントローラ120、ネットワークロードバランサ140、複数のネットワーク(例えば物理的又は論理的ネットワーク)、及び/又は、複数の外部コンピューティングデバイス(例えば、リモートコンピューティングデバイス130のような、クラスタコンピューティングデバイス102の一部でない複数のコンピューティングデバイス)と通信可能に連結するように設定されてもよい。
データストレージ224は、例えば、複数のメモリデバイス並びに複数のメモリ回路、複数のメモリカード、複数のハードディスクドライブ、複数のソリッドステートドライブ、又は、他の複数のデータストレージデバイスなどの、データの短期間又は長期間保存用に設定された任意のタイプのデバイスまたは複数のデバイスとして具現化されてもよい。例えば、データストレージ224は、複数のコンピューティングノード110によって初期化及び/又は実行される1または複数のオペレーティングシステムを格納するように設定されてもよい。幾つかの実施形態において、オペレーティングシステムの複数の部分は、より速い処理のため、及び/又は、任意の他の理由で、複数の動作中にメモリ214にコピーされてもよい。
ここで、再び図1を参照すると、ネットワークコントローラ120は、これらに限定されないが、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピューティングデバイス、民生用電子機器、モバイルコンピューティングデバイス、携帯電話、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、及び/又は、他のタイプのコンピューティング若しくはネットワーキングデバイスを含めて、本明細書で説明される複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化されてもよく、そうでなければこれらを含んでもよい。そのように、ネットワークコントローラ120は、複数のプロセッサ、複数のメモリデバイス、通信回路、及び、複数のデータストレージなどの、複数の同様のコンピューティングデバイス又はネットワークコントローラにおいて一般的に見出される複数のデバイス及び複数の構造を含んでもよく、説明の明確化を目的として、図1ではこれらを不図示としている。例示的実施形態において、ネットワークコントローラ120は、ソフトウェアデファインドネットワーキング(SDN)環境、及び/又は、ネットワーク機能仮想化(NFV)環境(例えば図11に例示的に示されているシステム1100)において動作可能である。そのように、ネットワークコントローラ120は、ネットワークフロー情報を、複数のコンピューティングノード110、及び/又は、SDN環境及び/又はNFV環境で動作可能な他の複数のコンピューティングデバイスに送信(send)(例えば送信(transmit)など)してもよい。例えば、ネットワークコントローラ120は、例えば、ネットワークフローと関連付けられた複数のネットワークパケットのフロー識別子及びフロータプル(例えば、発信元IPアドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号、及び、プロトコル)のようなネットワークフロー情報を送信してもよい。幾つかの実施形態において、ネットワークコントローラ120は、細粒度の負荷分散スキームによって、クラスタコンピューティングデバイス102の複数のコンピューティングノード110間で複数の異なるネットワークフローを処理する負担を分配してもよい。例えば、幾つかの実施形態において、ネットワークコントローラ120は、1つのコンピューティングノード110(例えばコンピューティングノードA112)が第1ネットワークフローと関連付けられた複数のネットワークパケットを処理する(例えば、複数のパケット転送操作を実行する、複数のパケットルーティング操作を実行する、複数のローカルパケット処理操作を実行するなど)責任があるべきか、及び、第2コンピューティングノード110(例えばコンピューティングノードB114)が第2ネットワークフローと関連付けられた複数のネットワークパケットを処理する責任があるべきかを決定してもよい。そのような複数の実施形態において、ネットワークコントローラ120は、第1ネットワークフローに対応するネットワークフロー情報を第1コンピューティングノード110(例えばコンピューティングノードA112)に送信し、第2ネットワークフローに対応するネットワークフロー情報を第2コンピューティングノード110(例えばコンピューティングノードB114)に送信するように設定されてもよい。
リモートコンピューティングデバイス130は、これらに限定されないが、デスクトップコンピュータ、ラップトップコンピューティングデバイス、サーバコンピュータ、民生用電子機器、モバイルコンピューティングデバイス、携帯電話、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、及び/又は、他のタイプのコンピューティングデバイスを含めて、本明細書で説明される複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化されてもよく、そうでなければこれらを含んでもよい。そのように、リモートコンピューティングデバイス130は、複数のプロセッサ、複数のメモリデバイス、通信回路、及び、複数のデータストレージなど、複数のコンピューティングデバイスにおいて一般的に見出される複数のデバイス及び複数の構造を含んでもよく、説明の明確化を目的として、図1ではこれらを不図示としている。幾つかの実施形態において、リモートコンピューティングデバイス130は、複数のネットワークパケットを、クラスタコンピューティングデバイス102、及び/又は、クラスタコンピューティングデバイス102の複数のコンピューティングノード110に/から、送信及び/又は受信するように設定されてもよい。
ネットワークロードバランサ140は、これらに限定されないが、ネットワークロードバランサ、ネットワークスイッチ、ネットワークルータ、ネットワークハブ、無線アクセスポイント、デスクトップコンピュータ、ラップトップコンピューティングデバイス、サーバコンピュータ、民生用電子機器、モバイルコンピューティングデバイス、携帯電話、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、及び/又は、他のタイプのコンピューティングデバイスを含む、本明細書で説明される複数の機能を実行可能な任意のタイプのネットワーキング又はコンピューティングデバイスとして具現化されてもよく、そうでなければそれらを含んでもよい。そのように、ネットワークロードバランサ140は、複数のプロセッサ、複数のメモリデバイス、通信回路、及び、複数のデータストレージのようなネットワークロードバランサ又は複数の同様のコンピューティングデバイスで一般的に見出される複数のデバイス及び複数の構造を含んでもよく、これらは説明の明確化を目的として図1では不図示としている。例示的実施形態において、ネットワークロードバランサ140は、他の複数のデバイスの中でも、クラスタコンピューティングデバイス102、クラスタコンピューティングデバイス102のコンピューティングノード110、及び、ネットワークコントローラ120を含み得る、ソフトウェアデファインドネットワーキング(SDN)環境及び/又はネットワーク機能仮想化(NFV)環境で動作可能である。
幾つかの実施形態において、ネットワークロードバランサ140は、別個の複数の通信リンク(例えば、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイドなど)を介して、クラスタコンピューティングデバイス102の2つ又は3つ以上のコンピューティングノード110(例えば、コンピューティングノードA112およびコンピューティングノードB114)に通信可能に連結されてもよい。そのような複数の実施形態において、ネットワークロードバランサ140は、リモートコンピューティングデバイス130から1または複数のネットワークパケットを受信してもよい。リモートコンピューティングデバイス130から受信された複数のネットワークパケットは、クラスタコンピューティングデバイス102に仕向けられてもよい。そのように、ネットワークロードバランサ140は、粗粒度の負荷分散スキーム(例えば等コストマルチパスルーティング(ECMP)、ラウンドロビンなど)によって、クラスタコンピューティングデバイス102の複数のコンピューティングノード110を渡って、受信された複数のネットワークパケットを分散する。しかしながら、上記で説明されたように、受信された複数のネットワークパケットを処理する負担は(例えば、複数のパケット転送操作を実行する、複数のパケットルーティング操作を実行する、複数のローカルパケット処理操作を実行するなど)、細粒度の負荷分散スキームによって、複数のコンピューティングノード110間で分配されてもよい。そのように、幾つかの実施形態において、ネットワークロードバランサ140は、ネットワークパケットを処理する責任がないクラスタコンピューティングデバイス102のコンピューティングノード110にネットワークパケットを分散してもよい。そのような複数の実施形態において、以下でより詳細に説明されるように、各コンピューティングノード110は、クラスタコンピューティングデバイス102のいずれのコンピューティングノード110に受信されたネットワークパケットを処理する責任があるかを決定し、受信されたネットワークパケットをそのコンピューティングノード110に転送するように設定されてもよい。
ここで、図3を参照すると、使用する場合、複数のコンピューティングノード110の各々は、動作中の環境300を確立する。例示的環境300は、フロー管理モジュール302とフロー制御モジュール304とを含む。幾つかの実施形態において、フロー制御モジュール304は、1次フロー制御モジュール306と2次フロー制御モジュール308とを含む。環境300の複数のモジュール、ロジックおよび他の複数のコンポーネントの各々は、ハードウェア、ソフトウェア、ファームウェア、又は、それらの組み合わせとして具現化されてもよい。例えば、環境300の複数のモジュール、ロジックおよび他の複数のコンポーネントの各々は、各コンピューティングノード110のプロセッサ210または他の複数のハードウェアコンポーネントの一部を形成してもよく、そうでなければそれらによって確立されてもよい。各コンピューティングノード110は、コンピューティングデバイスにおいて一般的に見出される他の複数のコンポーネント、複数のサブコンポーネント、複数のモジュールおよび複数のデバイスを含んでもよく、これらは説明の明確化を目的として図3では示されていないことが理解されるべきである。加えて、複数のコンピューティングノード110の各々は動作中に例示的環境300を確立してもよいが、その例示的環境300の以下の説明は、説明の明確化を目的として、単一のコンピューティングノード112を特定参照して説明されることが理解されるべきである。
フロー管理モジュール302は、ネットワークコントローラ120からネットワークフロー情報を受信するように設定される。ネットワークフロー情報は、ネットワークフロー、及び、そのネットワークフローと関連付けられた任意のネットワークパケットに対応する。例えば、幾つかの実施形態において、ネットワークフロー情報は、特定のネットワークフローと関連付けられた複数のネットワークパケットのフロー識別子及びフロータプル(例えば、発信元IPアドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号、及び、プロトコル)を含む。ネットワークフロー情報は、特定のネットワークフローに対応する任意の他のタイプの情報を含んでもよいことが理解されるべきである。
フロー管理モジュール302はまた、ネットワークコントローラ120から受信されたネットワークフロー情報に基づいて、複数のネットワークフローエントリをコンピューティングノード112のローカルフローテーブル216に追加するように設定される。例えば、フロー管理モジュール302は、特定のネットワークフローに対応する、ネットワークコントローラ120からのネットワークフロー情報の受信に応答して、ネットワークフローエントリをコンピューティングノード112のローカルフローテーブル216に追加するように設定されてもよい。ローカルフローテーブル216に追加されたネットワークフローエントリは、受信されたネットワークフロー情報と関連付けられたネットワークフローに対応する、フロー識別子、フロータプル、ネクストホップタイプ、及び、ネクストホップインデックスを含む。フロー管理モジュール302がネットワークコントローラ120からネットワークフロー情報を受信する複数の実施形態において、フロー管理モジュール302は、特定のネットワークフローに対応する複数のネットワークパケットがコンピューティングノード112によってローカルに処理されるべきであることを示す、ローカルフローテーブル216に追加されたネットワークフローエントリのネクストホップタイプを更新するように、そうでなければそれを設定するように設定される。そのような複数の実施形態において、フロー管理モジュール302はまた、ヌル値を含むローカルフローテーブル216に追加されたネットワークフローのネクストホップインデックスを更新するように、そうでなければそれを設定するように設定されてもよい。
幾つかの実施形態において、フロー管理モジュール302は、1または複数のOpenFlowメッセージとして、ネットワークコントローラ120からネットワークフロー情報を受信するように設定されてもよい。加えて、又は、代替的に、フロー管理モジュール302は、1または複数の簡易オブジェクトアクセスプロトコル(SOAP)メッセージとして、ネットワークコントローラ120からネットワーク情報を受信するように設定されてもよい。勿論、任意の他の適切なメッセージング及び/又は通知プロトコル(例えばRepresentational State Transfer(REST)メッセージ、拡張マークアップ言語(XML)など)は、ネットワークコントローラ120からネットワークフロー情報を受信するフロー管理モジュール302によって用いられてもよいことが理解されるべきである。
フロー管理モジュール302はまた、ネットワークコントローラ120から受信されたネットワークフロー情報に基づいて、マルチキャストネットワークパケットを生成するように設定される。フロー管理モジュール302によって生成されるマルチキャストネットワークパケットは、ネットワークフローに対応するフロータプル(例えば、発信元IPアドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号、及び、プロトコル)を含んでもよい。フロー管理モジュール302によって生成されるマルチキャストネットワークパケットはまた、特定のネットワークフローに対応する複数のネットワークパケットを処理する責任のあるコンピューティングノード110としてコンピューティングノード112を示す、そうでなければ識別するネクストホップインターネットプロトコル(IP)アドレスを含む。幾つかの実施形態において、フロー管理モジュール302はまた、クラスタコンピューティングデバイス102の1または複数の他のコンピューティングノード110と通信可能に連結されるコンピューティングノード112のインターフェース228に対応するローカルIPアドレスを決定するように設定されてもよい。そのような複数の実施形態において、マルチキャストネットワークパケットの範囲内に含まれるネクストホップIPアドレスは、コンピューティングノード112のインターフェース228に対応するローカルIPアドレスとして具現化されてもよい。フロー管理モジュール302は、生成されるマルチキャストネットワークパケットを、マルチキャスト通信伝達、ブロードキャスト通信伝達、ユニキャスト通信伝達、及び/又は、マルチキャストネットワークパケットを他の複数のコンピューティングノード110の各々に送信するのに適した任意の他のタイプの通信伝達(例えばリモート・ダイレクト・メモリ・アクセス(RDMA)など)によって、クラスタコンピューティングデバイス102の他の複数のコンピューティングノード110の各々に送信するように設定される。
加えて、又は、代替的に、フロー管理モジュール302は、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つからマルチキャストネットワークパケットを受信するように設定されてもよい。受信されたマルチキャストネットワークパケットは、特定のネットワークフローに対応する、フロー識別子、フロータプル、及び、ネクストホップIPアドレスを含んでもよい。ネクストホップIPアドレスは、更に処理することを目的として、特定のネットワークフローに対応する複数のネットワークパケットが転送されるべきクラスタコンピューティングデバイス102の特定のコンピューティングノード110を示し、そうでなければそれを識別する。幾つかの実施形態において、複数のコンピューティングノード110の他の1つからマルチキャストネットワークパケットを受信されたことに応じて、フロー管理モジュール302は、受信されたマルチキャストネットワークパケットに基づいて、ネットワークフローエントリをコンピューティングノード112のローカルフローテーブル216に追加するように設定されてもよい。フロー管理モジュール302が複数のコンピューティングノード110の他の1つからマルチキャストネットワークパケットを受信する複数の実施形態において、フロー管理モジュール302は、特定のネットワークフローに対応する複数のネットワークパケットがクラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つによって遠隔から処理されるべきであることを示す、ローカルフローテーブル216に追加されたネットワークフローエントリのネクストホップタイプを更新するように、そうでなければそれを設定するように設定される。
加えて、フロー管理モジュール302が複数のコンピューティングノード110の他の1つからマルチキャストネットワークパケットを受信する複数の実施形態において、フロー管理モジュール302は、受信されたマルチキャストネットワークパケットに基づいて、ネクストホップエントリをコンピューティングノード112のローカルネクストホップテーブル218に追加するように設定される。ローカルネクストホップテーブル218に追加されたネクストホップエントリは、他のコンピューティングノード110から受信されたマルチキャストネットワークパケットからの、ネクストホップ識別子およびネクストホップIPアドレスを含む。ネクストホップインデックスは、コンピューティングノード112のローカルネクストホップテーブル218に格納された、そうでなければ維持された、複数の他のネクストホップエントリから、追加されたネクストホップエントリを一意に識別する。幾つかの実施形態において、ローカルネクストホップテーブル218に追加されたネクストホップエントリはまた、更に処理することを目的として、特定のネットワークフローに対応する複数のネットワークパケットが転送されるべきクラスタコンピューティングデバイス102の特定のコンピューティングノード110と関連付けられた媒体アクセス制御(MAC)アドレスを含む。そのような複数の実施形態において、フロー管理モジュール302は、アドレス解決プロトコル(ARP)テーブルおよびネクストホップIPアドレスに基づいて、ネットワークフローに対応する複数のネットワークパケットを処理する責任のあるコンピューティングノード110のMACアドレスを決定するように設定されてもよい。
フロー制御モジュール304は、ネットワークロードバランサ140、及び/又は、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つからネットワークパケットを受信するように設定される。幾つかの実施形態において、フロー制御モジュール304は、コンピューティングノード112、又は、クラスタコンピューティングデバイス102の他のコンピューティングノード110のいずれが受信されたネットワークパケットを処理する責任があるかを決定するように設定される。そのようにすべく、フロー制御モジュール304は、受信されたネットワークパケットと関連付けられた発信元情報および宛先情報(例えば5タプル)を決定するように設定される。フロー制御モジュール304は更に、コンピューティングノード112のローカルフローテーブル216でフロールックアップ操作を実行するように設定されてもよい。動作中、フロー制御モジュール304は、受信されたネットワークパケットと関連付けられた発信元情報および宛先情報(例えば5タプル)をローカルフローテーブル216の複数のネットワークフローエントリの複数のフロータプルと比較するように設定される。
受信されたネットワークパケットと関連付けられた発信元情報および宛先情報(例えば5タプル)と一致する、又は、それらと実質的に同様であるフロータプルを含む、ローカルフローテーブル216のネットワークフローエントリを識別することに応じて、フロー制御モジュール304は、識別されたフローエントリのネクストホップタイプを決定するように設定される。例えば、幾つかの実施形態において、フロー制御モジュール304は、識別されたフローエントリのネクストホップタイプが、受信されたネットワークパケットがコンピューティングノード112によってローカルに処理されるべきかどうか、又は、受信されたネットワークパケットがクラスタコンピューティングデバイス102の他のコンピューティングノード110によって遠隔から処理されるべきかどうか、のいずれを示すか決定するように設定されてもよい。
フロー制御モジュール304はまた、識別されたフローエントリの決定されたネクストホップタイプに基づいて、受信されたネットワークパケットを処理するように設定されてもよい。そのようにすべく、幾つかの実施形態において、フロー制御モジュール304は、1次フロー制御モジュール306と2次フロー制御モジュール308とを含む。1次フロー制御モジュール306は、受信されたネットワークパケットがローカルに処理されるべきであるとの決定に応じて、受信されたネットワークパケットをローカルに処理するように設定されてもよい。例えば、幾つかの実施形態において、1次フロー制御モジュール306は、受信されたネットワークパケットをコンピューティングノード112のローカルメモリ待ち行列に保存するか、そうでなければ転送し、続いて、コンピューティングノード112によって実行されるアプリケーションに、受信されたネットワークパケットが処理されるべく利用可能であることを(例えば割り込み又はポーリングによって)知らせるように設定されてもよい。
2次フロー制御モジュール308は、受信されたネットワークパケットがクラスタコンピューティングデバイス102の他のコンピューティングノード110によって遠隔から処理されるべきとの決定に応じて、受信されたネットワークパケットを更に処理する責任があるネクストホップコンピューティングノード110を決定するように設定されてもよい。そのようにすべく、2次フロー制御モジュール308は、ローカルネクストホップテーブル218に格納された対応するネクストホップエントリを取得すべく、ローカルフローテーブル216の識別されたフローエントリのネクストホップインデックスを利用するように設定されてもよい。幾つかの実施形態において、2次フロー制御モジュール308はまた、ローカルネクストホップテーブル218に格納された対応するネクストホップエントリからネクストホップコンピューティングノード110の対応するMACアドレスを取得するように設定されてもよい。加えて、2次フロー制御モジュール308は、受信されたネットワークパケットを決定されたネクストホップコンピューティングノード110に送信(transmit)(例えば、転送、ルーティング、送信(send)など)するように設定されてもよい。
ここで、図4を参照すると、クラスタコンピューティングデバイス102のコンピューティングノード110は、ネットワークコントローラ120からネットワークフロー情報を受信する方法400を実行してもよい。方法400に対応する疑似コード500の一実施形態は、コンピューティングノード110によって実行されてもよく、図5に例示的に示されている。勿論、コンピューティングノード110は、方法400を実行する場合に、異なる及び/又は追加の指示または指令を実行してもよいことが理解されるべきである。
方法400は、コンピューティングノード110がネットワークコントローラ120から、ネットワークフローと関連付けられたネットワークフロー情報を受信するブロック402で開始する。ネットワークフロー情報は、ネットワークフローと関連付けられた複数のネットワークパケットを処理する責任がある、クラスタコンピューティングデバイス102の特定のコンピューティングノード110を示してもよい。幾つかの実施形態において、ネットワークコントローラ120から受信してネットワークフロー情報は、ネットワークフローに対応するフロー識別子及びフロータプル(例えば、発信元IPアドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号およびプロトコル)を含む。そのような複数の実施形態において、ブロック404で、コンピューティングノード110は、受信されたネットワーク情報からフロー識別子及びフロータプルを抽出してもよい。
ブロック406で、コンピューティングノード110は、ネットワークコントローラ120から受信されたネットワークフロー情報に基づいて、ネットワークフロー用のネットワークフローエントリを自身のローカルフローテーブル216に追加する。ローカルフローテーブル216に追加されたネットワークフローエントリは、受信されたネットワークフロー情報と関連付けられたネットワークフローに対応する、フロー識別子、フロータプル、ネクストホップタイプ、及び、ネクストホップインデックスを含む。追加されたネットワークフローエントリのフロー識別子は、コンピューティングノード110のローカルフローテーブル216に格納され、そうでなければ維持される他の複数のネットワークフローエントリから、追加されたネットワークフローエントリを一意に識別する。追加されたネットワークフローエントリのネクストホップタイプは、対応するネットワークフローと関連付けられる複数のネットワークパケットが、コンピューティングノード110によってローカルに処理されるべきか、又は、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つによって遠隔から処理されるべきかを示す。幾つかの実施形態において、ブロック408で、コンピューティングノード110は、対応するネットワークフローと関連付けられた複数のネットワークパケットがローカルに処理されるべきであることを示す、追加されたネットワークフローエントリのネクストホップタイプを更新し、そうでなければそれを設定する。例えば、コンピューティングノード110は、ネットワークコントローラ120からのネットワークフロー情報の受信に応答して、「NHOP_LOCAL」値(または同様の値)を含む、そうでなければそれを示すネクストホップタイプを更新してもよい。対応するネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノード110によってローカルに処理されるべきであることを示すべく、任意の他の値又は識別子が用いられてもよいことが理解されるべきである。加えて、コンピューティングノード110が、ネットワークコントローラ120からネットワークフロー情報を受信して、対応するネットワークフローと関連付けられた複数のネットワークパケットがローカルに処理されるべきであることを示すべく、自身のローカルフローテーブル216に追加されたネットワークフローエントリのネクストホップタイプフィールドを更新する複数の実施形態において、コンピューティングノード110は、対応するネットワークフローと関連付けられた複数のネットワークパケットを処理する1次責任を引き受けてもよい。
ブロック410で、コンピューティングノード110は、ネットワークコントローラ120から受信されたネットワーク情報を含むマルチキャストネットワークパケットを生成する。例えば、コンピューティングノード110は、ネットワークフローに対応するフロー識別子及びフロータプル(例えば、発信元IPアドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号およびプロトコル)を含む、マルチキャストネットワークパケットを生成する。幾つかの実施形態において、コンピューティングノード110によって生成されるマルチキャストネットワークパケットはまた、更に処理する目的でネットワークフローに対応する受信された複数のネットワークパケットが転送されるべき、クラスタコンピューティングデバイス102の特定のコンピューティングノード110を示す、そうでなければ識別するネクストホップインターネットプロトコル(IP)アドレスを含む。コンピューティングノード110がネットワークフローに対応するネットワークパケットを処理する1次責任を引き受ける複数の実施形態において、ネクストホップIPアドレスは、コンピューティングノード110と関連付けられたIPアドレスであってもよい。例えば、ブロック412で、コンピューティングノード110は、クラスタコンピューティングデバイス102の1または複数の他のコンピューティングノード110と通信可能に連結されたコンピューティングノード110のインターフェース228に対応するローカルIPアドレスを決定してもよい。そのような複数の実施形態において、マルチキャストネットワークパケットの範囲内に含まれるネクストホップIPアドレスは、複数のコンピューティングノード110のインターフェース228に対応するローカルIPアドレスとして具現化されてもよい。コンピューティングノード110によって生成されるネットワークパケットは、例示的実施形態でマルチキャストネットワークパケットとして説明されるが、他の複数の実施形態においては、任意の他のタイプのパケット(例えばブロードキャストなど)がコンピューティングノード110によって生成されてもよいことが理解されるべきである。
ブロック414で、コンピューティングノード110は、マルチキャストネットワークパケットをクラスタコンピューティングデバイス102の他の複数のコンピューティングノード110に送信する。幾つかの実施形態において、マルチキャストネットワークパケットは、マルチキャスト通信伝達、ブロードキャスト通信伝達、ユニキャスト通信伝達、及び/又は、マルチキャストネットワークパケットを他の複数のコンピューティングノード110の各々に送信するのに適した任意の他のタイプの通信伝達(例えばリモート・ダイレクト・メモリ・アクセス(RDMA)など)によって、クラスタコンピューティングデバイス102の他の複数のコンピューティングノード110の各々に送信されてもよい。説明されるように、コンピューティングノード110からのマルチキャストネットワークパケットの受信に応答して、クラスタコンピューティングデバイス102の他の複数のコンピューティングノード110の各々は、対応するフローエントリをそれら自身が所有するローカルフローテーブル216に追加し、及び、関連付けられたネクストホップエントリをそれら自身が所有するローカルネクストホップテーブル218に追加するように設定されてもよい。
ここで、図6を参照すると、クラスタコンピューティングデバイス102のコンピューティングノード110は、クラスタコンピューティングデバイス102の他のコンピューティングノード110からネットワークフロー情報を受信する方法600を実行してもよい。方法600に対応する疑似コード700の一実施形態は、コンピューティングノード110によって実行されてもよく、図7に例示的に示されている。勿論、コンピューティングノード110は、方法600を実行する場合に、異なる及び/又は追加の指示または指令を実行してもよいことが理解されるべきである。方法600は、コンピューティングノード110が、マルチキャストネットワークパケットがクラスタコンピューティングデバイス102の他のコンピューティングノード110から受信されたかどうかを決定する決定ブロック602で開始する。幾つかの実施形態において、コンピューティングノード110は、ネットワークコントローラ120からのネットワークフローに対応するネットワーク情報を受信する他のコンピューティングノード110に応じて、他のコンピューティングノード110からマルチキャストネットワークパケットを受信してもよい。決定ブロック602で、もしコンピューティングノード110が、マルチキャストネットワークパケットがクラスタコンピューティングデバイス102の他のコンピューティングノード110から受信されていないと決定するならば、方法600は決定ブロック602にループバックし、コンピューティングノード110は、マルチキャストネットワークパケットが受信されたかどうかを判断し続ける。しかしながら、もしコンピューティングノード110が決定ブロック602で代わりに、マルチキャストネットワークパケットが他のコンピューティングノード110から受信されたと決定するならば、方法600はブロック604に進む。
ブロック604で、コンピューティングノードは、クラスタコンピューティングデバイス102の他のコンピューティングノード110から受信してマルチキャストネットワークパケットに基づいて、ネクストホップエントリを自身のローカルネクストホップテーブル218に追加する。受信されたマルチキャストネットワークパケットは、ネットワークフローに対応する、フロー識別子、フロータプル、及び、ネクストホップIPアドレスを含んでもよい。ローカルネクストホップテーブル218に追加されたネクストホップエントリは、他のコンピューティングノード110から受信されたマルチキャストネットワークパケットからの、ネクストホップ識別子およびネクストホップIPアドレスを含む。ネクストホップインデックスは、複数のコンピューティングノード110のローカルネクストホップテーブル218に格納された、そうでなければ維持された、複数の他のネクストホップエントリから、追加されたネクストホップエントリを一意に識別する。ネクストホップIPアドレスは、ネットワークフローに対応する複数のネットワークパケットが更に処理されるように転送されるべき、クラスタコンピューティングデバイス102の特定のコンピューティングノード110を示し、そうでなければそれを識別する。すなわち、ネクストホップIPアドレスは、ネットワークロードバランサ140を介してリモートコンピューティングデバイス130から受信され得る、ネットワークフローに対応する複数のネットワークパケットを処理する1次責任を有する、そうでなければそれを引き受ける、クラスタコンピューティングデバイス102のコンピューティングノード110と関連付けられてもよい。そのような複数の実施形態において、ブロック606で、コンピューティングノード110は、受信されたマルチキャストネットワークパケットからネクストホップIPアドレスを抽出してもよい。
幾つかの実施形態において、ネットワークフローに対応する受信された複数のネットワークパケットを、複数のネットワークパケットを処理する1次責任を有するクラスタコンピューティングデバイス102のコンピューティングノード110に転送するのを促すことを目的として、ローカルネクストホップテーブル218に追加されたネクストホップエントリはまた、複数のネットワークパケットを処理する1次責任を有するクラスタコンピューティングデバイス102のコンピューティングノード110と関連付けられた媒体アクセス制御(MAC)アドレスを含んでもよい。そのような複数の実施形態において、ブロック608で、コンピューティングノード110は、ネットワークフローに対応する複数のネットワークパケットを処理する1次責任を有するクラスタコンピューティングデバイス102のコンピューティングノード110のMACアドレスを決定してもよい。そのようにすべく、コンピューティングノード110は、ネクストホップIPアドレスに基づいて、ネットワークフローに対応する複数のネットワークパケットを処理する1次責任を有するコンピューティングノード110のMACアドレスをルックアップすべく、アドレス解決プロトコル(ARP)テーブルを利用してもよい。続いて、コンピューティングノード110は、1次責任を有するクラスタコンピューティングデバイス102のコンピューティングノード110のMACアドレスを含むローカルネクストホップテーブル218に追加された、MACアドレスフィールド、及び/又は、ネクストホップエントリ値を更新してもよい。以下で説明されるように、複数のコンピューティングノード110のローカルネクストホップテーブル218に追加されたネクストホップエントリは、複数のコンピューティングノード110のローカルフローテーブル216に追加されたネットワークフローエントリと関連付けられる。
ブロック610で、コンピューティングノード110は、クラスタコンピューティングデバイス102の他のコンピューティングノード110から受信されたマルチキャストネットワークパケットに基づいて、ネットワークフロー用のネットワークフローエントリを自身のローカルフローテーブル216に追加する。ローカルフローテーブル216に追加されたネットワークフローエントリは、他のコンピューティングノード110から受信されたマルチキャストネットワークパケットからのフロー識別子及びフロータプルを含む。加えて、ローカルフローテーブル216に追加されたネットワークフローエントリは、ネットワークフローに対応する、ネクストホップインデックスおよびネクストホップタイプを含む。説明されるように、複数のコンピューティングノード110のローカルネクストホップテーブル218に追加されたネクストホップエントリは、複数のコンピューティングノード110のローカルフローテーブル216に追加されたネットワークフローエントリと関連付けられる。幾つかの実施形態において、ブロック612で、コンピューティングノード110は、ローカルネクストホップテーブル218に追加されたネクストホップエントリと関連付けられたネクストホップインデックスを含むローカルフローテーブル216を追加された、ネットワークフローエントリのネクストホップインデックスを更新する。そのように、コンピューティングノード110は、ローカルネクストホップテーブル218からネクストホップ情報(例えば、ネクストホップIP及び/又は対応するMACアドレス)の全て又はその一部を取得すべく、ローカルフローテーブル216に追加されたネットワークフローエントリのネクストホップインデックスを利用してもよい。
説明したように、追加されたネットワークフローエントリのネクストホップタイプは、対応するネットワークフローと関連付けられる複数のネットワークパケットが、コンピューティングノード110によってローカルに処理されるべきか、又は、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つによって遠隔から処理されるべきかを示す。幾つかの実施形態において、他のコンピューティングノード110からのマルチキャストネットワークパケットの受信に応答して、ブロック614で、コンピューティングノード110は、対応するネットワークフローと関連付けられた複数のネットワークパケットが遠隔から処理されるべきであることを示す、追加されたネットワークフローエントリのネクストホップタイプを更新し、そうでなければそれを設定する。例えば、コンピューティングノード110は、クラスタコンピューティングデバイス102の他のコンピューティングノード110からのマルチキャストネットワークパケットの受信に応答して、「NHOP_REMOTE」値(又は同様の値)を含む、そうでなければそれを示すネクストホップタイプを更新してもよい。対応するネットワークフローと関連付けられた複数のネットワークパケットが、クラスタコンピューティングデバイス102の他のコンピューティングノード110によって遠隔から処理されるべきであることを示すべく、任意の他の値又は識別子が用いられてもよいことが理解されるべきである。加えて、コンピューティングノード110が、他のコンピューティングノード110からマルチキャストネットワークパケットを受信して、対応するネットワークフローと関連付けられた複数のネットワークパケットが遠隔から処理されるべきであることを示すべく、自身のローカルフローテーブル216に追加されたネットワークフローエントリのネクストホップタイプフィールドを更新する複数の実施形態において、コンピューティングノード110は、対応するネットワークフローと関連付けられた複数のネットワークパケットを処理する2次責任を引き受けてもよい。すなわち、コンピューティングノード110は、更に処理する目的で、対応するネットワークフローと関連付けられた複数のネットワークパケットを他のコンピューティングノード110に転送してもよい。
ここで、図8及び図9を参照すると、クラスタコンピューティングデバイス102のコンピューティングノード110は、リモートコンピューティングデバイス130から受信されたネットワークパケットを処理する方法800を実行してもよい。方法800に対応する疑似コード1000の一実施形態は、コンピューティングノード110によって実行されてもよく、図10に例示的に示されている。勿論、コンピューティングノード110は、方法800を実行する場合に、異なる及び/又は追加の指示または指令を実行してもよいことが理解されるべきである。方法800は、コンピューティングノード110が、ネットワークパケットがリモートコンピューティングデバイス130から受信されたかどうかを決定する、決定ブロック802で開始する。幾つかの実施形態において、ネットワークパケットは、ネットワークロードバランサ140を介して、リモートコンピューティングデバイス130から受信されてもよい。説明されたように、ネットワークロードバランサ140は、粗粒度の負荷分散スキーム(例えば、等コストマルチパスルーティング(ECMP)、ラウンドロビンなど)によって、リモートコンピューティングデバイス130からのネットワークパケットをコンピューティングノード110に転送してもよい。決定ブロック802で、もしコンピューティングノード110が、ネットワークパケットがリモートコンピューティングデバイス130から受信されていないと決定するならば、方法800は決定ブロック802にループバックし、コンピューティングノード110は、ネットワークパケットが受信されたかどうかを判断し続ける。しかしながら、もしコンピューティングノード110が、ネットワークパケットがリモートコンピューティングデバイス130から受信されたと決定するならば、方法800は、コンピューティングノード110が受信されたネットワークパケットの発信元情報および宛先情報(例えば5タプル)を決定するブロック804に進む。
ブロック806で、コンピューティングノード110は、受信されたネットワークパケットの発信元情報および宛先情報(例えば5タプル)に基づいて、ローカルフローテーブル216でフロールックアップを実行する。そのようにすべく、幾つかの実施形態において、ブロック808で、コンピューティングノード110は、受信されたネットワークパケットの決定された発信元情報および宛先情報(例えば5タプル)と、ローカルフローテーブル216の複数のネットワークフローエントリの複数のフロータプルとを比較する。比較に基づいて、コンピューティングノード110は、受信されたネットワークパケットの5タプルに一致する、そうでなければ実質的に同様であるフロータプルを含む、ローカルフローテーブル216のネットワークフローエントリを決定する。
ブロック810で、コンピューティングノード110は、受信されたネットワークパケットの5タプルに一致する、そうでなければ実質的に同様であるフロータプルを含む、ローカルフローテーブル216のフローエントリのネクストホップタイプを決定する。決定ブロック812で、コンピューティングノード110は、ローカルフローテーブル216の一致するフローエントリのネクストホップタイプが、ネットワークパケットがローカルに処理されるべきであることを示すかどうかを決定する。そのようにすべく、幾つかの実施形態において、コンピューティングノード110は、ローカルフローテーブル216の一致するフローエントリのネクストホップタイプが、「NHOP_LOCAL」値(又は同様の値)を含むかどうか、そうでなければそれを示すかどうかを決定してもよい。説明されたように、ローカルフローテーブル216の一致するフローエントリが、ネットワークパケットがローカルに処理されるべきであることを示す複数の実施形態において、コンピューティングノード110は、対応するネットワークフローと関連付けられた複数のネットワークパケット(及び、続いて受信された複数のネットワークパケット)を処理する1次責任を引き受ける。しかしながら、ローカルフローテーブル216の一致するフローエントリが、ネットワークパケットが遠隔から処理される(例えばクラスタコンピューティングデバイス102の異なるコンピューティングノード110によって処理される)べきであることを示す複数の実施形態において、コンピューティングノード110は、対応するネットワークフローと関連付けられた複数のネットワークパケット(及び、続いて受信された複数のネットワークパケット)を処理する2次責任を引き受ける。すなわち、コンピューティングノード110は、更に処理する目的で、対応するネットワークフローと関連付けられたネットワークパケット(及び、続いて受信された複数のネットワークパケット)を、クラスタコンピューティングデバイス102の他のコンピューティングノード110に転送してもよい。決定ブロック812で、もしコンピューティングノード110が、一致するフローエントリのネクストホップタイプが、ネットワークパケットがローカルに処理されるべきであることを示すと決定するならば、方法800はブロック814に進む。しかしながら、決定ブロック812で、もしコンピューティングノード110が、一致するフローエントリのネクストホップタイプが、ネットワークパケットがローカルに処理されるべきであることを示さないと決定するならば(例えばネットワークパケットが遠隔から処理されるべきである)、方法800は代わりに、ブロック816に進む。
ブロック814で、コンピューティングノード110は、受信されたネットワークパケットをローカルに処理する。例えば、幾つかの実施形態において、コンピューティングノード110は、一致するフローエントリのフロー識別子を、コンピューティングノード110のアプリケーション層に渡す。他の例において、コンピューティングノード110は、受信されたネットワークパケットをローカルメモリ待ち行列に保存し、そうでなければそこに転送し、コンピューティングノード110によって実行されるアプリケーションに、受信されたネットワークパケットが処理されるべく利用可能であることを(例えば割り込み又はポーリングによって)知らせる。
ブロック816で、コンピューティングノード110は、ローカルフローテーブル216およびローカルネクストホップテーブル218に基づいて、受信されたネットワークパケットを更に処理する責任があるネクストホップコンピューティングノード110(例えば、クラスタコンピューティングデバイス102の複数のコンピューティングノード110の他の1つ)を決定する。そのようにすべく、幾つかの実施形態において、コンピューティングノード110は、ローカルネクストホップテーブル218に格納された対応するネクストホップエントリを取得すべく、一致するフローエントリのネクストホップインデックスを利用する。説明されたように、一致するフローエントリに対応するネクストホップエントリは、ネクストホップコンピューティングノード110のネクストホップIP及び/又は対応するMACアドレスを含む。ネクストホップエントリがネクストホップコンピューティングノード110のMACアドレスを含む複数の実施形態において、ブロック818で、コンピューティングノード110は、ローカルネクストホップテーブル218からネクストホップコンピューティングノード110のMACアドレスを取得する。
ブロック820で、コンピューティングノード110は、受信されたネットワークパケットを決定されたネクストホップコンピューティングノード110に送信(transmit)(例えば、転送、ルーティング、送信(send)など)する。そのようにすべく、幾つかの実施形態において、ブロック822で、コンピューティングノード110は、受信されたネットワークパケットの宛先MACアドレスに代えて、ネクストホップコンピューティングノード110のMACアドレスを用いる、そうでなければそれに置換する。説明されたように、ネクストホップコンピューティングノード110(例えば、クラスタコンピューティングデバイス102の異なるコンピューティングノード110)は、受信されたネットワークパケットを更に処理するように設定されてもよい。
ここで、図11を参照すると、例示的実施形態において、粗粒度の負荷分散と細粒度の負荷分散との間をブリッジするシステム1100は、複数のコンピューティングノード110と、ネットワークコントローラ120と、リモートコンピューティングデバイス130と、ネットワークロードバランサ140とを有するクラスタコンピューティングデバイス102を備え、それらの各々は、ネットワーク機能仮想化(NFV)環境で動作可能であってもよい。図11に示される、クラスタコンピューティングデバイス102、クラスタコンピューティングデバイス102の複数のコンピューティングノード110(例えばコンピューティングノードA112およびコンピューティングノードB114)、リモートコンピューティングデバイス130、及び、ネットワークロードバランサ140は、図1から図3を参照して上記で説明された、クラスタコンピューティングデバイス102、コンピューティングノード110、リモートコンピューティングデバイス130、及び、ネットワークロードバランサ140と実質的に同様の、機能性、複数の特徴、及び/又は、構造を含んでもよいことが理解されるべきである。図11に例示的に示されるように、システム1100はまた、フロー管理モジュール(FMM)302とフロー制御モジュール(FCM)304とを含んでもよい。図11に示されるフロー管理モジュール302及びフロー制御モジュール304は、図3を参照して上記で説明されたフロー管理モジュール302及びフロー制御モジュール304と同様の、機能性及び/又は複数の特徴を含んでもよいことが理解されるべきである。動作中、コンピューティングノードA112およびコンピューティングノードB114は各々、任意の数の仮想ネットワーク機能1102を与えるべく、1または複数の仮想機械(又は、仮想環境)を含んでもよい。システム1100の複数のコンピューティングノード110(例えばコンピューティングノードA112およびコンピューティングノードB114)の各々におけるフロー管理モジュール302及びフロー制御モジュール304は、複数のコンピューティングノード110の各々が、それぞれ提供する複数の仮想ネットワーク機能1102に対応する複数のネットワークパケットを処理する1次責任を引き受けることを可能にするように設定されてもよい。加えて、システム1100の複数のコンピューティングノード110(例えばコンピューティングノードA112およびコンピューティングノードB114)の各々におけるフロー管理モジュール302及びフロー制御モジュール304は、複数のコンピューティングノード110の各々が、クラスタコンピューティングデバイス102の他の複数のコンピューティングノード110によって提供される複数の仮想ネットワーク機能1102に対応する複数のネットワークパケットを処理する2次責任を引き受けることを可能にするように設定されてもよい。
[複数の例]
本明細書で開示される複数の技術の複数の例示的な例が以下で提供される。複数の技術の実施形態は、以下で説明される任意の1または複数の例、及び、それらの任意の組み合わせを含んでもよい。
例1は、粗粒度の負荷分散と細粒度の負荷分散との間でブリッジするクラスタコンピューティングデバイスのコンピューティングノードを含み、コンピューティングノードは、(1)複数のネットワークフローエントリを格納するローカルフローテーブルと、(2)複数のネットワークフローエントリのうちの1または複数に関する転送情報を格納するローカルネクストホップテーブルとを含むメモリ、及び、(1)ネットワークコントローラからネットワークフロー情報を受信し、(2)ネットワークコントローラから受信されたネットワークフロー情報に基づいてネットワークフローエントリをローカルフローテーブルに追加し、(3)ネットワークコントローラから受信されたネットワークフロー情報と、コンピューティングノードと関連付けられたインターネットプロトコルアドレスとを含むマルチキャストネットワークパケットを生成し、(4)マルチキャストネットワークパケットに基づいて、異なるネットワークフローエントリを互いのコンピューティングノードのローカルフローテーブルに追加すること、及び、ネクストホップエントリを互いのコンピューティングノードローカルネクストホップテーブルに追加することを促すべく、マルチキャストネットワークパケットをクラスタコンピューティングデバイスの互いのコンピューティングノードに送信するフロー管理モジュールを備える。
例2は、例1の主題を含み、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから追加されたネットワークフローエントリを一意に識別するフロー識別子と、コンピューティングノードのローカルネクストホップテーブルにおける関連付けられたネクストホップエントリを識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例3は例1および2のいずれかの主題を含み、ネットワークコントローラから受信されたネットワークフロー情報は、フロータプル及びフロー識別子を含む。
例4は例1から3のいずれかの主題を含み、フロー管理モジュールは更に、(1)ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すべく、ローカルフローテーブルに追加されたネットワークフローエントリのネクストホップタイプを設定し、(2)ローカルフローテーブルに追加されたネットワークフローエントリのネクストホップインデックスをヌル値で設定する予定である。
例5は例1から4のいずれかの主題を含み、フロー管理モジュールは更に、クラスタコンピューティングデバイスの1または複数の他のコンピューティングノードと通信可能に連結された、コンピューティングノードのインターフェースと関連付けられたローカルインターネットプロトコルアドレスを決定する予定であり、コンピューティングノードと関連付けられたインターネットプロトコルアドレスは、コンピューティングノードのインターフェースと関連付けられたローカルインターネットプロトコルアドレスを含む。
例6は例1から5のいずれかの主題を含み、コンピューティングノードのローカルフローテーブルの各ネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、ネットワークフローエントリを一意に識別するフロー識別子と、ネットワークフローエントリと関連付けられたコンピューティングノードのローカルネクストホップテーブルに格納された複数のネクストホップエントリからネクストホップエントリを識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例7は例1から6のいずれかの主題を含み、(1)リモートコンピューティングデバイスからネットワークパケットを受信し、(2)5タプルの受信されたネットワークパケットを決定し、(3)5タプルの受信されたネットワークパケットと一致するフロータプルを含むネットワークフローエントリを複数のネットワークフローエントリから決定すべく、コンピューティングノードのローカルフローテーブルでフロールックアップ操作を実行し、(4)決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すかを決定し、(5)決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すとの決定に応じて、ネットワークパケットを処理し、(6)決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すとの決定に応じて、受信されたネットワークパケットをクラスタコンピューティングデバイスのネクストホップコンピューティングノードに転送する、フロー制御モジュールを更に含む。
例8は例1から7のいずれかの主題を含み、フロー制御モジュールは更に、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する予定である。
例9は例1から8のいずれかの主題を含み、フロー制御モジュールは更に、複数のネクストホップエントリのうち一致するネクストホップエントリを決定すべく、決定されたネットワークフローエントリと関連付けられたネクストホップインデックスに応じて、コンピューティングノードのローカルネクストホップテーブルでネクストホップルックアップ操作を実行する予定であり、ネクストホップコンピューティングノードを決定することは、一致するネクストホップエントリに応じて、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定することを含む。
例10は例1から9のいずれかの主題を含み、フロー制御モジュールは更に、(1)コンピューティングノードのローカルネクストホップテーブルの一致するネクストホップエントリに基づいて、ネクストホップコンピューティングノードの媒体アクセス制御アドレスを決定し、(2)受信されたネットワークパケットの宛先媒体アクセス制御アドレスをネクストホップコンピューティングノードの決定された媒体アクセス制御アドレスと置き換える予定であり、受信されたネットワークパケットをネクストホップコンピューティングノードに転送することは、受信されたネットワークパケットの置き換えられた宛先媒体アクセス制御アドレスに基づいて、受信されたネットワークパケットをネクストホップコンピューティングノードに転送することを含む。
例11は、粗粒度の負荷分散と細粒度の負荷分散との間でブリッジする方法を含み、当該方法は、クラスタコンピューティングデバイスのコンピューティングノードが、複数のネットワークフローエントリをコンピューティングノードのローカルフローテーブルに格納する段階と、コンピューティングノードが、複数のネットワークフローエントリのうちの1または複数に関する転送情報を、コンピューティングノードのローカルネクストホップテーブルに格納する段階と、コンピューティングノードが、ネットワークコントローラからネットワークフロー情報を受信する段階と、コンピューティングノードが、ネットワークコントローラから受信されたネットワークフロー情報に基づいて、ネットワークフローエントリをコンピューティングノードのローカルフローテーブルに追加する段階と、コンピューティングノードが、ネットワークコントローラから受信されたネットワークフロー情報、及び、コンピューティングノードと関連付けられたインターネットプロトコルアドレスを含むマルチキャストネットワークパケットを生成する段階と、コンピューティングノードが、マルチキャストネットワークパケットに基づいて、異なるネットワークフローエントリを互いのコンピューティングノードのローカルフローテーブルに追加し、ネクストホップエントリを互いのコンピューティングノードのローカルネクストホップテーブルに追加することを促すべく、マルチキャストネットワークパケットをクラスタコンピューティングデバイスの互いのコンピューティングノードに送信する段階と、を含む。
例12は、例11の主題を含み、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから追加されたネットワークフローエントリを一意に識別するフロー識別子と、コンピューティングノードのローカルネクストホップテーブルにおける関連付けられたネクストホップエントリを識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例13は例11および12のいずれかの主題を含み、ネットワークコントローラから受信されたネットワークフロー情報は、フロータプル及びフロー識別子を含む。
例14は例11から13のいずれかの主題を含み、コンピューティングノードが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すべく、ローカルフローテーブルに追加されたネットワークフローエントリのネクストホップタイプを設定する段階と、コンピューティングノードが、ヌル値と共にローカルフローテーブルに追加されたネットワークフローエントリのネクストホップインデックスを設定する段階とを更に含む。
例15は、例11から14の主題を含み、コンピューティングノードが、クラスタコンピューティングデバイスの1または複数の他のコンピューティングノードと通信可能に連結された、コンピューティングノードのインターフェースと関連付けられたローカルインターネットプロトコルアドレスを決定する段階を更に含み、コンピューティングノードと関連付けられたインターネットプロトコルアドレスは、コンピューティングノードのインターフェースと関連付けられたローカルインターネットプロトコルアドレスを含む。
例16は例11から15のいずれかの主題を含み、コンピューティングノードのローカルフローテーブルの各ネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、ネットワークフローエントリを一意に識別するフロー識別子と、ネットワークフローエントリと関連付けられたコンピューティングノードのローカルネクストホップテーブルに格納された複数のネクストホップエントリからネクストホップエントリを識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例17は例11から16のいずれかの主題を含み、コンピューティングノードが、リモートコンピューティングデバイスからネットワークパケットを受信する段階と、コンピューティングノードが、5タプルの受信されたネットワークパケットを決定する段階と、コンピューティングノードが、5タプルの受信されたネットワークパケットと一致するフロータプルを含むネットワークフローエントリを複数のネットワークフローエントリから決定すべく、コンピューティングノードのローカルフローテーブルでフロールックアップ操作を実行する段階と、コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すかを決定する段階と、コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すとの決定に応じて、ネットワークパケットを処理する段階と、コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すとの決定に応じて、受信されたネットワークパケットをクラスタコンピューティングデバイスのネクストホップコンピューティングノードに転送する段階と、を更に含む。
例18は例11から17の主題を含み、コンピューティングノードが、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する段階を更に含む。
例19は例11から18のいずれかの主題を含み、複数のネクストホップエントリのうち一致するネクストホップエントリを決定すべく、コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップインデックスに応じて、コンピューティングノードのローカルネクストホップテーブルでネクストホップルックアップ操作を実行する段階を更に含み、ネクストホップコンピューティングノードを決定する段階は、一致するネクストホップエントリに応じて、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する段階を含む。
例20は、例11から19のいずれかの主題を含み、コンピューティングノードが、コンピューティングノードのローカルネクストホップテーブルの一致するネクストホップエントリに基づいて、ネクストホップコンピューティングノードの媒体アクセス制御アドレスを決定する段階と、コンピューティングノードが、受信されたネットワークパケットの宛先媒体アクセス制御アドレスをネクストホップコンピューティングノードの決定された媒体アクセス制御アドレスと置き換える段階と、を更に含み、受信されたネットワークパケットをネクストホップコンピューティングノードに転送する段階は、受信されたネットワークパケットの置き換えられた宛先媒体アクセス制御アドレスに基づいて、受信されたネットワークパケットをネクストホップコンピューティングノードに転送する段階を含む。
例21は、粗粒度の負荷分散と細粒度の負荷分散との間をブリッジするクラスタコンピューティングデバイスのコンピューティングノードを含み、コンピューティングノードは、プロセッサと、プロセッサによって実行された場合にコンピューティングノードに例11から20のいずれかの方法を実行させる複数の命令をその内部に格納したメモリとを備える。
例22は、実行されたことに応じて、結果としてクラスタコンピューティングデバイスのコンピューティングノードが例11から20のいずれかの方法を実行することになる、そこに格納された複数の命令を備える、1または複数の機械可読媒体を含む。
例23は、粗粒度の負荷分散と細粒度の負荷分散との間でブリッジするクラスタコンピューティングデバイスのコンピューティングノードを含み、コンピューティングノードは、複数のネットワークフローエントリをコンピューティングノードのローカルフローテーブルに格納する手段と、複数のネットワークフローエントリのうちの1または複数に関する転送情報を、コンピューティングノードのローカルネクストホップテーブルに格納する手段と、ネットワークコントローラからネットワークフロー情報を受信する手段と、ネットワークコントローラから受信されたネットワークフロー情報に基づいて、ネットワークフローエントリをコンピューティングノードのローカルフローテーブルに追加する手段と、ネットワークコントローラから受信されたネットワークフロー情報、及び、コンピューティングノードと関連付けられたインターネットプロトコルアドレスを含むマルチキャストネットワークパケットを生成する手段と、マルチキャストネットワークパケットに基づいて、異なるネットワークフローエントリを互いのコンピューティングノードのローカルフローテーブルに追加し、ネクストホップエントリを互いのコンピューティングノードのローカルネクストホップテーブルに追加することを促すべく、マルチキャストネットワークパケットをクラスタコンピューティングデバイスの互いのコンピューティングノードに送信する手段と、を備える。
例24は、例23の主題を含み、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから追加されたネットワークフローエントリを一意に識別するフロー識別子と、コンピューティングノードのローカルネクストホップテーブルにおける関連付けられたネクストホップエントリを識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例25は例23および24のいずれかの主題を含み、ネットワークコントローラから受信されたネットワークフロー情報は、フロータプル及びフロー識別子を含む。
例26は例23から25のいずれかの主題を含み、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すべく、ローカルフローテーブルに追加されたネットワークフローエントリのネクストホップタイプを設定する手段と、ヌル値と共にローカルフローテーブルに追加されたネットワークフローエントリのネクストホップインデックスを設定する手段とを更に含む。
例27は例23から26のいずれかの主題を含み、クラスタコンピューティングデバイスの1または複数の他のコンピューティングノードと通信可能に連結された、コンピューティングノードのインターフェースと関連付けられたローカルインターネットプロトコルアドレスを決定する手段を更に含み、コンピューティングノードと関連付けられたインターネットプロトコルアドレスは、コンピューティングノードのインターフェースと関連付けられたローカルインターネットプロトコルアドレスを含む。
例28は例23から27のいずれかの主題を含み、コンピューティングノードのローカルフローテーブルの各ネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、ネットワークフローエントリを一意に識別するフロー識別子と、ネットワークフローエントリと関連付けられたコンピューティングノードのローカルネクストホップテーブルに格納された複数のネクストホップエントリからネクストホップエントリを識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例29は例23から28のいずれかの主題を含み、リモートコンピューティングデバイスからネットワークパケットを受信する手段と、5タプルの受信されたネットワークパケットを決定する手段と、5タプルの受信されたネットワークパケットと一致するフロータプルを含むネットワークフローエントリを複数のネットワークフローエントリから決定すべく、コンピューティングノードのローカルフローテーブルでフロールックアップ操作を実行する手段と、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すかを決定する手段と、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すとの決定に応じて、ネットワークパケットを処理する手段と、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すとの決定に応じて、受信されたネットワークパケットをクラスタコンピューティングデバイスのネクストホップコンピューティングノードに転送する手段と、を更に含む。
例30は例23から29のいずれかの主題を含み、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する手段を更に含む。
例31は例23から30のいずれかの主題を含み、複数のネクストホップエントリのうち一致するネクストホップエントリを決定すべく、決定されたネットワークフローと関連付けられたネクストホップインデックスに応じて、コンピューティングノードのローカルネクストホップテーブルでネクストホップルックアップ操作を実行する手段を更に含み、ネクストホップコンピューティングノードを決定する手段は、一致するネクストホップエントリに応じて、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する手段を含む。
例32は例23から31のいずれかの主題を含み、コンピューティングノードのローカルネクストホップテーブルの一致するネクストホップエントリに基づいて、ネクストホップコンピューティングノードの媒体アクセス制御アドレスを決定する手段と、受信されたネットワークパケットの宛先媒体アクセス制御アドレスをネクストホップコンピューティングノードの決定された媒体アクセス制御アドレスと置き換える手段とを更に含み、受信されたネットワークパケットをネクストホップコンピューティングノードに転送する手段は、受信されたネットワークパケットの置き換えられた宛先媒体アクセス制御アドレスに基づいて、受信されたネットワークパケットをネクストホップコンピューティングノードに転送する手段を含む。
例33は粗粒度の負荷分散と細粒度の負荷分散との間をブリッジするクラスタコンピューティングデバイスのコンピューティングノードを含み、コンピューティングノードは、(1)クラスタコンピューティングデバイスの異なるコンピューティングノードから、異なるコンピューティングノードを示すネットワークフロー情報及びネクストホップ情報を含むマルチキャストネットワークパケットを受信し、(2)異なるコンピューティングノードから受信されたマルチキャストネットワークパケットからのネットワークフロー情報に基づいて、ネットワークフローエントリをコンピューティングノードのローカルフローテーブルに追加し、(3)異なるコンピューティングノードから受信されたマルチキャストネットワークパケットからのネクストホップ情報に基づいて、ネクストホップエントリをコンピューティングノードのローカルネクストホップテーブルに追加するフロー管理モジュールを含み、コンピューティングノードのローカルネクストホップテーブルに追加されたネクストホップエントリは、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリと関連付けられる。
例34は例33の主題を含み、コンピューティングノードのローカルネクストホップテーブルは、複数のネクストホップエントリを含み、複数のネクストホップエントリの各ネクストホップエントリは、ローカルフローテーブルの複数のネットワークフローエントリのうちの異なるネットワークフローエントリと関連付けられ、異なるコンピューティングノードから受信されたマルチキャストネットワークパケットのネクストホップ情報は、異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスを含み、コンピューティングノードのローカルネクストホップテーブルに追加されたネクストホップエントリは、異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスと、コンピューティングノードのローカルネクストホップテーブルに格納された複数のネクストホップエントリにおける互いのネクストホップエントリから、追加されたネクストホップエントリを一意に識別するネクストホップインデックスと、異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスに対応する媒体アクセス制御アドレスと、を含む。
例35は例33および34のいずれかの主題を含み、フロー管理モジュールは更に、(1)異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスに対応する媒体アクセス制御アドレスを決定し、(2)決定された媒体アクセス制御アドレスと共にローカルネクストホップテーブルに追加されたネクストホップエントリの媒体アクセス制御アドレスを設定する。
例36は例33から35のいずれかの主題を含み、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、追加されたネットワークフローエントリを一意に識別するフロー識別子と、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリと関連付けられたローカルネクストホップテーブルにおける複数のネクストホップエントリからネクストホップエントリを一意に識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプと、を含む。
例37は例33から36のいずれかの主題を含み、異なるコンピューティングノードから受信されたマルチキャストネットワークパケットのネットワークフロー情報は、フロータプル及びフロー識別子を含む。
例38は例33から37のいずれかの主題を含み、フロー管理モジュールは更に、異なるコンピューティングノードからのマルチキャストネットワークパケットの受信に応答して、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔からから処理されるべきであることを示すべく、ローカルフローテーブルに追加されたネットワークフローエントリのネクストホップタイプを設定する予定である。
例39は例33から38のいずれかの主題を含み、ローカルフローテーブルは複数のネットワークフローエントリを含み、コンピューティングノードのローカルフローテーブルの各ネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、ネットワークフローエントリを一意に識別するフロー識別子と、ネットワークフローエントリと関連付けられたローカルネクストホップテーブルの複数のネクストホップエントリからネクストホップエントリを一意に識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例40は例33から39のいずれかの主題を含み、(1)リモートコンピューティングデバイスからネットワークパケットを受信し、(2)5タプルの受信されたネットワークパケットを決定し、(3)5タプルの受信されたネットワークパケットと一致するフロータプルを含むネットワークフローエントリを複数のネットワークフローエントリから決定すべく、コンピューティングノードのローカルフローテーブルでフロールックアップ操作を実行し、(4)決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すかを決定し、(5)決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すとの決定に応じて、ネットワークパケットを処理し、(6)決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すとの決定に応じて、受信されたネットワークパケットをクラスタコンピューティングデバイスのネクストホップコンピューティングノードに転送する、フロー制御モジュールを更に含む。
例41は例33から40のいずれかの主題を含み、フロー制御モジュールは更に、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する予定である。
例42は例33から41のいずれかの主題を含み、フロー制御モジュールは更に、複数のネクストホップエントリのうち一致するネクストホップエントリを決定すべく、決定されたネットワークフローエントリと関連付けられたネクストホップインデックスに応じて、コンピューティングノードのローカルネクストホップテーブルでネクストホップルックアップ操作を実行する予定であり、ネクストホップコンピューティングノードを決定することは、一致するネクストホップエントリに応じて、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定することを含む。
例43は例33から42のいずれかの主題を含み、ネクストホップコンピューティングノードを決定することは、ローカルネクストホップテーブルに追加されたネクストホップエントリに一致することに基づいて、異なるコンピューティングノードがネクストホップコンピューティングノードであると決定することを含む。
例44は粗粒度の負荷分散と細粒度の負荷分散との間をブリッジする方法を含み、当該方法は、クラスタコンピューティングデバイスの第1コンピューティングノードが、クラスタコンピューティングデバイスの第2コンピューティングノードから、第2コンピューティングノードを示すネットワークフロー情報及びネクストホップ情報を含むマルチキャストネットワークパケットを受信する段階と、第1コンピューティングノードが、第2コンピューティングノードから受信されたマルチキャストネットワークパケットからのネットワークフロー情報に基づいて、ネットワークフローエントリを第1コンピューティングノードのローカルフローテーブルに追加する段階と、第1コンピューティングノードが、第2コンピューティングノードから受信されたマルチキャストネットワークパケットからのネクストホップ情報に基づいて、ネクストホップエントリを第1コンピューティングノードのローカルネクストホップテーブルに追加する段階と、を含み、第1コンピューティングノードのローカルネクストホップテーブルに追加されたネクストホップエントリは、第1コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリと関連付けられる。
例45は例44の主題を含み、第1コンピューティングノードのローカルネクストホップテーブルは、複数のネクストホップエントリを含み、複数のネクストホップエントリの各ネクストホップエントリは、ローカルフローテーブルの複数のネットワークフローエントリのうちの異なるネットワークフローエントリと関連付けられ、第2コンピューティングノードから受信されたマルチキャストネットワークパケットのネクストホップ情報は、第2コンピューティングノードと関連付けられたインターネットプロトコルアドレスを含み、第1コンピューティングノードのローカルネクストホップテーブルに追加されたネクストホップエントリは、第2コンピューティングノードと関連付けられたインターネットプロトコルアドレスと、第1コンピューティングノードのローカルネクストホップテーブルに格納された複数のネクストホップエントリにおける互いのネクストホップエントリから、追加されたネクストホップエントリを一意に識別するネクストホップインデックスと、第2コンピューティングノードと関連付けられたインターネットプロトコルアドレスに対応する媒体アクセス制御アドレスと、を含む。
例46は例44および45の主題を含み、第1コンピューティングノードが、第2コンピューティングノードと関連付けられたインターネットプロトコルアドレスに対応する媒体アクセス制御アドレスを決定する段階と、第1コンピューティングノードが、決定された媒体アクセス制御アドレスと共にローカルネクストホップテーブルに追加されたネクストホップエントリの媒体アクセス制御アドレスを設定する段階と、を更に含む。
例47は例44から46のいずれかの主題を含み、第1コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、第1コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、追加されたネットワークフローエントリを一意に識別するフロー識別子と、第1コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリと関連付けられたローカルネクストホップテーブルにおける複数のネクストホップエントリからネクストホップエントリを一意に識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、第1コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプと、を含む。
例48は例44から47のいずれかの主題を含み、第2コンピューティングノードから受信されたマルチキャストネットワークパケットのネットワークフロー情報は、フロータプル及びフロー識別子を含む。
例49は例44から48のいずれかの主題を含み、第1コンピューティングノードが、第2コンピューティングノードからのマルチキャストネットワークパケットの受信に応答して、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔からから処理されるべきであることを示すべく、ローカルフローテーブルに追加されたネットワークフローエントリのネクストホップタイプを設定する段階を更に含む。
例50は例44から49のいずれかの主題を含み、ローカルフローテーブルは複数のネットワークフローエントリを含み、第1コンピューティングノードのローカルフローテーブルの各ネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、第1コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、ネットワークフローエントリを一意に識別するフロー識別子と、ネットワークフローエントリと関連付けられたローカルネクストホップテーブルの複数のネクストホップエントリからネクストホップエントリを一意に識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、第1コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例51は例44から50のいずれかの主題を含み、第1コンピューティングノードが、リモートコンピューティングデバイスからネットワークパケットを受信する段階と、第1コンピューティングノードが、5タプルの受信されたネットワークパケットを決定する段階と、第1コンピューティングノードが、5タプルの受信されたネットワークパケットと一致するフロータプルを含むネットワークフローエントリを複数のネットワークフローエントリから決定すべく、第1コンピューティングノードのローカルフローテーブルでフロールックアップ操作を実行する段階と、第1コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットが第1コンピューティングノードによってローカルに処理されるべきであることを示すか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すかを決定する段階と、第1コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すとの決定に応じて、ネットワークパケットを処理する段階と、第1コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すとの決定に応じて、受信されたネットワークパケットをクラスタコンピューティングデバイスのネクストホップコンピューティングノードに転送する段階と、を更に含む。
例52は例44から51の主題を含み、第1コンピューティングノードが、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する段階を更に含む。
例53は例44から52のいずれかの主題を含み、複数のネクストホップエントリのうち一致するネクストホップエントリを決定すべく、第1コンピューティングノードが、決定されたネットワークフローエントリと関連付けられたネクストホップインデックスに応じて、第1コンピューティングノードのローカルネクストホップテーブルでネクストホップルックアップ操作を実行する段階を更に含み、ネクストホップコンピューティングノードを決定する段階は、一致するネクストホップエントリに応じて、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する段階を含む。
例54は例44から53のいずれかの主題を含み、ネクストホップコンピューティングノードを決定する段階は、ローカルネクストホップテーブルに追加されたネクストホップエントリに一致することに基づいて、第2コンピューティングノードがネクストホップコンピューティングノードであると決定する段階を含む。
例55は、粗粒度の負荷分散と細粒度の負荷分散との間をブリッジするクラスタコンピューティングデバイスのコンピューティングノードを含み、コンピューティングノードは、プロセッサと、プロセッサによって実行された場合にコンピューティングノードに例44から54のいずれかの方法を実行させる複数の命令をその内部に格納したメモリとを備える。
例56は、実行されたことに応じて、結果としてクラスタコンピューティングデバイスのコンピューティングノードが例44から54のいずれかの方法を実行することになる、そこに格納された複数の命令を備える、1または複数の機械可読媒体を含む。
例57は粗粒度の負荷分散と細粒度の負荷分散との間をブリッジするクラスタコンピューティングデバイスのコンピューティングノードを含み、コンピューティングノードは、クラスタコンピューティングデバイスの異なるコンピューティングノードから、異なるコンピューティングノードを示すネットワークフロー情報及びネクストホップ情報を含むマルチキャストネットワークパケットを受信する手段と、異なるコンピューティングノードから受信されたマルチキャストパケットからのネットワークフロー情報に基づいて、ネットワークフローエントリをコンピューティングノードのローカルフローテーブルに追加する手段と、異なるコンピューティングノードから受信されたマルチキャストパケットからのネクストホップ情報に基づいて、ネクストホップエントリをコンピューティングノードのローカルネクストホップテーブルに追加する手段と、を含み、コンピューティングノードのローカルネクストホップテーブルに追加されたネクストホップエントリは、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリと関連付けられる。
例58は例57の主題を含み、コンピューティングノードのローカルネクストホップテーブルは、複数のネクストホップエントリを含み、複数のネクストホップエントリの各ネクストホップエントリは、ローカルフローテーブルの複数のネットワークフローエントリのうちの異なるネットワークフローエントリと関連付けられ、異なるコンピューティングノードから受信されたマルチキャストネットワークパケットのネクストホップ情報は、異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスを含み、コンピューティングノードのローカルネクストホップテーブルに追加されたネクストホップエントリは、異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスと、コンピューティングノードのローカルネクストホップテーブルに格納された複数のネクストホップエントリにおける互いのネクストホップエントリから、追加されたネクストホップエントリを一意に識別するネクストホップインデックスと、異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスに対応する媒体アクセス制御アドレスと、を含む。
例59は例57および58のいずれかの主題を含み、異なるコンピューティングノードと関連付けられたインターネットプロトコルアドレスに対応する媒体アクセス制御アドレスを決定する手段と、決定された媒体アクセス制御アドレスと共にローカルネクストホップテーブルに追加されたネクストホップエントリの媒体アクセス制御アドレスを設定する手段と、を更に含む。
例60は例57から59のいずれかの主題を含み、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、追加されたネットワークフローエントリを一意に識別するフロー識別子と、コンピューティングノードのローカルフローテーブルに追加されたネットワークフローエントリと関連付けられたローカルネクストホップテーブルにおける複数のネクストホップエントリからネクストホップエントリを一意に識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプと、を含む。
例61は例57から60のいずれかの主題を含み、異なるコンピューティングノードから受信されたマルチキャストパケットから受信されたネットワークフロー情報は、フロータプル及びフロー識別子を含む。
例62は例57から61のいずれかの主題を含み、異なるコンピューティングノードからのマルチキャストネットワークパケットの受信に応答して、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔からから処理されるべきであることを示すべく、ローカルフローテーブルに追加されたネットワークフローエントリのネクストホップタイプを設定する手段を更に含む。
例63は例57から62のいずれかの主題を含み、ローカルフローテーブルは複数のネットワークフローエントリを含み、コンピューティングノードのローカルフローテーブルの各ネットワークフローエントリは、ネットワークフローと関連付けられた複数のネットワークパケットの発信元及び宛先を示すフロータプルと、コンピューティングノードのローカルフローテーブルに格納された複数のネットワークフローエントリの互いのネットワークフローエントリから、ネットワークフローエントリを一意に識別するフロー識別子と、ネットワークフローエントリと関連付けられたローカルネクストホップテーブルの複数のネクストホップエントリからネクストホップエントリを一意に識別するネクストホップインデックスと、ネットワークフローと関連付けられた複数のネットワークパケットが、コンピューティングノードによってローカルに処理されるべきか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきかを示すネクストホップタイプとを含む。
例64は例57から63のいずれかの主題を含み、リモートコンピューティングデバイスからネットワークパケットを受信する手段と、5タプルの受信されたネットワークパケットを決定する手段と、5タプルの受信されたネットワークパケットと一致するフロータプルを含むネットワークフローエントリを複数のネットワークフローエントリから決定すべく、コンピューティングノードのローカルフローテーブルでフロールックアップ操作を実行する手段と、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すか、又は、クラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すかを決定する手段と、決定されたネットワークフローエントリと関連付けられたネクストホップタイプが、ネットワークフローと関連付けられた複数のネットワークパケットがコンピューティングノードによってローカルに処理されるべきであることを示すとの決定に応じて、ネットワークパケットを処理する手段と、決定されたネットワークフローエントリと関連付けられたネクストホップエントリが、ネットワークフローと関連付けられた複数のネットワークパケットがクラスタコンピューティングデバイスの他のコンピューティングノードによって遠隔から処理されるべきであることを示すとの決定に応じて、受信されたネットワークパケットをクラスタコンピューティングデバイスのネクストホップコンピューティングノードに転送する手段と、を更に含む。
例65は例57から64のいずれかの主題を含み、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する手段を更に含む。
例66は例57から65のいずれかの主題を含み、複数のネクストホップエントリのうち一致するネクストホップエントリを決定すべく、決定されたネットワークフローエントリと関連付けられたネクストホップインデックスに応じて、コンピューティングノードのローカルネクストホップテーブルでネクストホップルックアップ操作を実行する手段を更に含み、ネクストホップコンピューティングノードを決定する手段は、一致するネクストホップエントリに応じて、受信されたネットワークパケットを処理するクラスタコンピューティングデバイスのネクストホップコンピューティングノードを決定する手段を含む。
例67は例57から66のいずれかの主題を含み、ネクストホップコンピューティングノードを決定する手段は、ローカルネクストホップテーブルに追加されたネクストホップエントリと一致することに基づいて、異なるコンピューティングノードがネクストホップコンピューティングノードであると決定する手段を含む。