JP2016149757A - モジュール式転送テーブル拡張性のための技術 - Google Patents
モジュール式転送テーブル拡張性のための技術 Download PDFInfo
- Publication number
- JP2016149757A JP2016149757A JP2016002486A JP2016002486A JP2016149757A JP 2016149757 A JP2016149757 A JP 2016149757A JP 2016002486 A JP2016002486 A JP 2016002486A JP 2016002486 A JP2016002486 A JP 2016002486A JP 2016149757 A JP2016149757 A JP 2016149757A
- Authority
- JP
- Japan
- Prior art keywords
- computing node
- node
- hash function
- flow identifier
- network packet
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/46—Cluster building
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】複数のコンピューティングノードを含むソフトウェアクラスタスイッチのモジュール式転送テーブル拡張性のための技術を提供する。【解決手段】複数のコンピューティングノードの各々は、ソフトウェアクラスタスイッチの入口コンピューティングノードにおいて受信されたネットワークパケットのフロー識別子に基づいて、そのネットワークパケットに関する出口コンピューティングノードを判別するためのグローバル分割テーブル(GPT)を含む。GPTは、フロー識別子に適用されたハッシュ関数の結果に対応するセットマッピングインデックスと、ハッシュ関数ファミリのうち、入口コンピューティングノードがネットワークパケットを転送する出口コンピューティングノードに対応するノード識別子をもたらす出力を提供するハッシュ関数を識別するハッシュ関数インデックスと、を含む。【選択図】図3
Description
現代のコンピューティングデバイスは、インターネット等の様々なデータネットワークを介して、他のコンピューティングデバイスと通信する(すなわち、データ通信を送受信する)ことができる。そのようなコンピューティングデバイス間の通信を円滑にするために、ネットワークは、通常、ネットワークフローに基づいて1つのコンピューティングデバイスから別のコンピューティングデバイスに通信(すなわち、ネットワークパケット)をルーティングするための1以上のネットワークデバイス(例えば、ネットワークスイッチ、ネットワークルータ等)を含む。従来、ネットワークパケット処理は、ネットワークデバイスの専用ネットワークプロセッサ上で実行されていた。しかしながら、ネットワーク仮想化技術(例えば、ネットワーク機能仮想化(NFV))及び中央コントローラネットワーキングアーキテクチャ(例えば、ソフトウェア定義ネットワーキング(SDN))における進化は、高度に拡張可能で迅速に展開可能であるネットワークインフラストラクチャをもたらしている。
そのような1つのネットワークパケット処理例において、ネットワークパケットのルーティング及び交換のために、相互接続されたサーバノードのクラスタを使用することができる。サーバノードクラスタにおいて、各サーバノードは、1以上の外部ポートからネットワークパケットを受信し、ネットワークフローの識別ルールに基づいて宛先又は出力ポートに転送するために、受信したネットワークパケットを他のサーバノードに振り分けることができる。サーバノードクラスタを介してネットワークトラフィックをルーティングするために、サーバノードは、一般に、ルーティングテーブル(すなわち、ルーティング情報ベース(RIB))及び転送テーブル(すなわち、転送情報ベース(FIB))を使用する。
各サーバノードが、クラスタに追加されるにつれ、クラスタの転送容量が増大するだけでなく、到達することができる宛先アドレスの数も増大する。すなわち、ネットワークのインフラストラクチャのサイズが、拡大されるにつれ、ルーティングテーブル及び転送テーブルの各々のサイズも増大して非常に大きくなり得る。一般に、より大きなルーティングテーブルは、そのルーティングテーブルに対してルックアップを実行するために、より多くの時間及びより多くのコンピューティングリソース(例えば、メモリ、ストレージ、処理サイクル等)を必要とする。加えて、そのような拡大・増大の悪影響は、例えば、ネットワークパケットを処理するために必要とされるさらなるホップ(すなわち、サーバノード間におけるネットワークパケットのそれぞれの通過)又はクラスタの内部スイッチファブリック(internal switch fabric)にわたって実行されるさらなるルックアップを含む。そのような悪影響は、スループットの低下及び/又は転送テーブル容量を超える転送テーブルサイズをもたらすおそれがある。
本明細書で説明するコンセプトは、添付の図面において、限定ではなく例として示される。図示の簡潔さ及び明瞭さのために、図面中に示される要素は、必ずしも縮尺通りに描かれてはいない。適切であると考えられる場合、参照ラベルは、対応要素又は類似要素を示すために、複数の図面の間で繰り返される。
複数のコンピューティングノードを含むソフトウェアクラスタスイッチによるモジュール式転送テーブル拡張性のためのシステムの少なくとも1つの実施形態の簡略化されたブロック図。
図1のシステムのソフトウェアクラスタスイッチのコンピューティングノードの少なくとも1つの実施形態の簡略化されたブロック図。
図2のコンピューティングノードの環境の少なくとも1つの実施形態の簡略化されたブロック図。
図2のコンピューティングノードにより実行され得る、受信されたネットワークパケットに関する出口コンピューティングノードを判別するための方法の少なくとも1つの実施形態の簡略化されたフロー図。
図2のコンピューティングノードにより実行され得る、受信されたネットワークパケットに関する出口コンピューティングノードを判別するための方法の少なくとも1つの実施形態の簡略化されたフロー図。
図2のコンピューティングノードにより実行され得る、入口ノードから受信したネットワークパケットを転送するための方法の少なくとも1つの実施形態の簡略化されたフロー図。
図2のコンピューティングノードにより実行され得る、ネットワークパケットのネットワークフロー識別子に対応するエントリをルーティングテーブルに追加するための方法の少なくとも1つの実施形態の簡略化されたフロー図。
本開示のコンセプトは、様々な変形形態及び代替形態を受け入れる余地があるが、その特定の実施形態が、例として図面に示され、本明細書において詳細に説明される。しかしながら、本開示のコンセプトを、開示する特定の形態に限定する意図はなく、反対に、意図は、本開示及び添付の特許請求の範囲と整合する全ての変形形態、均等形態、及び代替形態をカバーすることにあることを理解すべきである。
「一実施形態」、「ある実施形態」、「例示的な実施形態」等の本明細書における言及は、説明する実施形態が特定の特徴、構造、又は特性を含み得るが、全ての実施形態がそのような特定の特徴、構造、又は特性を含んでもよいし、あるいは必ずしもそのような特定の特徴、構造、又は特性を含む必要がなくてもよいことを示す。さらに、このような語句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造、又は特性がある実施形態との関連で記載されている場合には、明示されていようといまいと、他の実施形態との関連でそのような特定の特徴、構造、又は特性を実装することは当業者の知識の範囲内であるとする。さらに、「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は、ソースコンピューティングデバイス102及び宛先コンピューティングデバイス106とネットワーク通信するソフトウェアクラスタスイッチ104を含む。ソフトウェアクラスタスイッチ104は、仮想進化型パケットコア(vEPC)モデルにおいて等、ネットワーク機能仮想化(NFV)及び/又はソフトウェア定義ネットワーキング(SDN)アーキテクチャのスコープにおいて、分散型サービスのためのスタンドアロンソフトウェアスイッチ/ルータ又はアンダーラインファブリック(underline fabric)として機能することができる。例示的なソフトウェアクラスタスイッチ104は、複数のコンピューティングノード110を含み、各コンピューティングノード110は、入口コンピューティングノード(ingress computing node)及び出口コンピューティングノード(egress computing node)の両方として動作することができる。例示的なシステム100は、ソースコンピューティングデバイス102及び宛先コンピューティングデバイス106を含むが、コンピューティングノード110の各々は、任意の数の異なるネットワーク及び/若しくはサブネットワーク、ネットワークデバイス、並びに/又は他のソフトウェアクラスタスイッチに通信可能に接続され得ることを理解すべきである。したがって、コンピューティングノード110のいずれも、1つのネットワークから発生したネットワークパケットを受信することができ、ソフトウェアクラスタスイッチ104のルーティングテーブルに基づいて、そのネットワークパケットを異なるネットワークに転送することができる。
例示的なソフトウェアクラスタスイッチ104は、「入口」コンピューティングノード112、コンピューティングノード114、コンピューティングノード116、及び「出口」コンピューティングノード118を含む。もちろん、いくつかの実施形態において、ソフトウェアクラスタスイッチ104は、ネットワークパケットスループットをサポートするために、必要に応じてさらなるコンピューティングノード110を含んでもよい。使用の際、ソフトウェアクラスタスイッチ104の入口コンピューティングノード112は、ソフトウェアクラスタスイッチ104と有線ネットワーク通信又は無線ネットワーク通信するソースコンピューティングデバイス102(例えば、ネットワークスイッチ、ネットワークルータ、発信元コンピューティングデバイス等)から、ネットワークパケット108を受信する。図1に例示的に示される他のコンピューティングノード110のいずれもが、代わりに、ソースコンピューティングデバイス102から、ネットワークパケット108を受信してもよいことを理解すべきである。したがって、ネットワークパケット108を受信する特定のコンピューティングノード110が、「入口」コンピューティングノード112として指定され得、以下の説明においてそのように呼ばれる。
ネットワークパケット108を受信すると、入口コンピューティングノード112は、ネットワークパケット108に対応するフロー識別子(例えば、ターゲットコンピューティングデバイスの媒体アクセスコード(MAC)アドレス、ターゲットコンピューティングデバイスのインターネットプロトコル(IP)アドレス、5タプルフロー識別子等)に基づいてソフトウェアクラスタスイッチ104内でネットワークパケット108を処理する役割を担う出口コンピューティングノード118(すなわち、処理ノード)を識別するために、転送テーブル(すなわち、転送情報ベース)に対してルックアップを実行する。次いで、入口コンピューティングノード112は、インターコネクトデバイス120又はスイッチを介して、ネットワークパケット108をそのノードに直接転送する。そうするために、コンピューティングノード110の各々は、フロー識別子をコンピューティングノード110の各々の出力ポートにマッピングしている情報を記憶しているルーティングテーブルを含む。ルーティングテーブルから、次の2つの構造が生成され得る:(1)グローバルルックアップテーブル、すなわち、グローバル分割テーブル(GPT;global partitioning table、global partition table)、及び(2)転送テーブルエントリ。以下でさらに詳細に説明するように、GPTは、ルーティングテーブルより小さく(すなわち、コンパクトに)構成され、そのようなものとして、コンピューティングノード110の各々に対して複製され得る。
その全体が複製された転送テーブルエントリの全てを含む転送テーブルを各コンピューティングノードが有する従来のソフトウェアクラスタスイッチとは異なり、現在説明している転送テーブルは、コンピューティングノード110のいずれもが転送テーブル全体を含まないように、コンピューティングノード110の各々にわたって、分割されて割り当てられる。すなわち、どのコンピューティングノード110が、そのコンピューティングノード110の出力ポートを介して、関連付けられたネットワークパケットの転送を処理する役割を担うか(すなわち、ネットワークパケットを送信する役割を担う出口コンピューティングノード)に基づいて、転送テーブル全体の分割された部分が、ソフトウェアクラスタスイッチ104のコンピューティングノード110にわたって分散される。したがって、各コンピューティングノード110は、ルーティングテーブルと各コンピューティングノード110の出力ポートとに基づく、転送テーブルエントリの異なる部分(すなわち、転送テーブル全体のサブセット)をルックアップする役割を担い得る。結果として、ソフトウェアクラスタスイッチ104は、単一のホップにおいて適切な処理ノードへのネットワークパケット108の直接的転送を管理することができる。加えて、GPT及び分割された転送テーブルエントリを用いることで、各コンピューティングノードにおけるメモリが、従来のソフトウェアクラスタスイッチ内のコンピューティングノードの数とともに直線的に増加する従来のソフトウェアクラスタスイッチより少ないメモリ(すなわち、オーバーヘッド)しか必要とされないことが可能である。
ソースコンピューティングデバイス102と、同様に宛先コンピューティングデバイス106と、は、本明細書で説明する機能を実行することができる任意のタイプの計算デバイス又はコンピューティングデバイスとして具現化することができる。そのような計算デバイス又はコンピューティングデバイスには、コンピュートデバイス、スマートフォン、デスクトップコンピュータ、ワークステーション、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、モバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイス、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、プロセッサベースのシステム、マルチプロセッサシステム、サーバ(例えば、スタンドアロン、ラックマウント、ブレード等)、ネットワークアプライアンス(例えば、物理又は仮想)、並びに/又は、任意のタイプのコンピュートデバイス及び/若しくは記憶デバイスが含まれるが、これらに限定されるものではない。
ソフトウェアクラスタスイッチ104は、クラスタソフトウェアルータ、クラスタソフトウェアスイッチ、分散型ソフトウェアスイッチ、分散型ソフトウェアルータ、分散型サービスのためのスイッチファブリック等といった、本明細書で説明する機能を実行するために協働する個々のコンピューティングノード110のグループとして具現化することができる。いくつかの実施形態において、ソフトウェアクラスタスイッチ104は、完全接続メッシュネットワーキングトポロジに従って互いに通信可能に接続された複数のコンピューティングノード110を含み得る。もちろん、各コンピューティングノード110は、任意のネットワーキングトポロジに従って他のコンピューティングノード110に通信可能に接続されてもよいことを理解すべきである。例えば、各コンピューティングノード110は、トポロジの中でもとりわけ、スイッチネットワークトポロジ、Closネットワークトポロジ、バスネットワークトポロジ、スターネットワークトポロジ、リングネットワークトポロジ、メッシュトポロジ、バタフライ状トポロジ、及び/又はこれらの任意の組合せに従って他のコンピューティングノード110に通信可能に接続されてもよい。
ソフトウェアクラスタスイッチ104のコンピューティングノード110の各々は、ソフトウェアクラスタスイッチ104のルーティングオペレーション(例えば、入力オペレーション、転送オペレーション、出力オペレーション等)の任意の一部を実行するよう構成され得る。すなわち、各コンピューティングノード110は、ソースコンピューティングデバイス102からネットワークパケット108を受信するコンピューティングノード(例えば、入口コンピューティングノード112)、及び、ルックアップを実行し、ソフトウェアクラスタスイッチ104からネットワークパケット108を送信するために判別されたコンピューティングノード(例えば、出口コンピューティングノード118)として動作するよう構成され得る。
コンピューティングノード110は、本明細書で説明する機能を実行することができる任意のタイプのコンピューティングデバイスとして具現化することができる、あるいは、そのようなコンピューティングデバイスを含み得る。そのようなコンピューティングデバイスには、サーバコンピュータ、ネットワーキングデバイス、ラックコンピューティングアーキテクチャコンポーネント、デスクトップコンピュータ、ラップトップコンピューティングデバイス、スマートアプライアンス、コンシューマ電子デバイス、モバイルコンピューティングデバイス、携帯電話機、スマートフォン、タブレットコンピューティングデバイス、携帯情報端末、ウェアラブルコンピューティングデバイス、及び/又は他のタイプのコンピューティングデバイスが含まれるが、これらに限定されるものではない。図2に例示的に示されるように、コンピューティングノード110は、プロセッサ202、入力/出力(I/O)サブシステム210、メモリ212、データストレージ218、通信回路220、及び複数の通信インタフェース222を含む。もちろん、他の実施形態では、コンピューティングノード110は、ネットワークコンピューティングデバイスにおいて通常見つけられるもの等の追加コンポーネント又は代替コンポーネントを含んでもよい。さらに、いくつかの実施形態においては、図示するコンポーネントのうちの1以上は、別のコンポーネントに組み込まれてもよいし、別のコンポーネントの一部を形成してもよい。例えば、メモリ212又はメモリ212の一部は、いくつかの実施形態においては、プロセッサ202に組み込まれてもよい。
プロセッサ202は、本明細書で説明する機能を実行することができる任意のタイプのプロセッサとして具現化することができる。例えば、いくつかの実施形態において、プロセッサ202は、シングルコアプロセッサ、マルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、又は、他のプロセッサ若しくは処理/制御回路として具現化することができる。プロセッサ202は、キャッシュメモリ204を含み得る。キャッシュメモリ204は、実行される命令及び/又はデータを記憶するために、プロセッサ202がメモリ212よりも速くアクセスすることができる任意のタイプのキャッシュメモリ(例えば、オンダイキャッシュ)として具現化することができる。いくつかの実施形態において、キャッシュメモリ204はまた、グローバル分割テーブル(GPT)206及び転送テーブル208を記憶することができる。
上述したように、GPT206は、一般に、完全に複製される転送テーブルよりもコンパクトであり、これにより、コンピューティングノード110の動作中に、コンピューティングノード110の各々におけるキャッシュメモリ204内にGPT206を複製して記憶することが可能になる。以下でさらに詳細に説明するように、いくつかの実施形態において、GPT206は、入力キーをコンピューティングノード110のうちの処理ノード(例えば、出口コンピューティングノード118)にマッピングするセット分離マッピング方策(set separation mapping strategy)を用いて実装することができる。セット分離マッピング方策は、入力キーの全体セットのより小さなグループ又はサブセットからなる高レベルインデックス構造を作成することを含む。各入力キーは、ネットワークパケット108に対応するフロー識別子(例えば、宛先IPアドレス、宛先MACアドレス、5タプルフロー識別子等)から導出され得る。
上述したように、転送テーブル208は、入力キーを処理ノードにマッピングしている転送テーブルエントリを含み得、いくつかの実施形態においては、さらなる情報を含み得る。コンピューティングノード110の各転送テーブル208は、ルーティングテーブル214から得られる転送テーブルエントリの異なるセット(例えば、一部、サブセット等)を記憶することができる。したがって、各コンピューティングノード110における転送テーブル208は、ソフトウェアクラスタスイッチ104のルーティングテーブルエントリの全てを通常は含むルーティングテーブル214よりもサイズが小さい(例えば、ルーティングテーブルエントリよりも少ないエントリを含む)。ソフトウェアクラスタスイッチ104の制御プレーンにおいて、転送テーブル208は、ハッシュテーブルとして具現化することができる。しかしながら、いくつかの実施形態においては、転送テーブル208は、後続の取得のためにキャッシュメモリ204にロードされる個々のネットワークルーティングエントリの集合又はグループとして構造化又は具現化されてもよい。
メモリ212は、本明細書で説明する機能を実行することができる任意のタイプの揮発性メモリ、不揮発性メモリ、又はデータストレージとして具現化することができる。動作中、メモリ212は、コンピューティングノード110の動作中に使用される、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバ等の様々なソフトウェア及びデータを記憶することができる。メモリ212は、I/Oサブシステム210を介して、プロセッサ202に通信可能に接続される。I/Oサブシステム210は、コンピューティングノード110のプロセッサ202、メモリ212、及び他のコンポーネントによる入力/出力オペレーションを円滑にする回路及び/又はコンポーネントとして具現化することができる。例えば、I/Oサブシステム210は、メモリコントローラハブ、入力/出力制御ハブ、ファームウェアデバイス、通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレース等)、並びに/又は、入力/出力オペレーションを円滑にする他のコンポーネント及びサブシステムとして具現化されてもよいし、これらを含んでもよい。いくつかの実施形態において、I/Oサブシステム210は、システムオンチップ(SoC)の一部を形成して、コンピューティングノード110のプロセッサ202、メモリ212、及び他のコンポーネントとともに、単一の集積回路チップに組み込むことができる。キャッシュメモリ204がオンダイキャッシュ又はオンプロセッサキャッシュとして上述されたが、そのような実施形態において、キャッシュメモリ204は、オフダイキャッシュであるが、プロセッサ202と同じSoC上に存在し得ることを理解すべきである。
ソフトウェアクラスタスイッチ104のルーティングテーブル214(すなわち、グローバルルーティングテーブル)のコピーが、各コンピューティングノード110のメモリ212に記憶され得る。ルーティングテーブル214は、複数のルーティングテーブルエントリを含み、各ルーティングテーブルエントリは、異なるネットワーク宛先(例えば、ネットワークアドレス、宛先ネットワーク又はサブネット、リモートコンピューティングデバイス等)に対応する情報を有する。例えば、いくつかの実施形態において、各ルーティングテーブルエントリは、宛先IPアドレス(すなわち、ターゲットコンピューティングデバイス及び/又は宛先サブネットのIPアドレス)、宛先IPアドレスに向けられるネットワークパケットが送信されて経由される必要がある別のコンピューティングノード110に対応するゲートウェイIPアドレス、及び/又は、宛先IPアドレスに向けられるネットワークパケットがゲートウェイIPアドレスに送信されるまでに経由されるコンピューティングノード110の出力インタフェースを示す情報を含み得る。ルーティングテーブル214は、ネットワークパケットをその最終宛先にルーティングするのを円滑にするための任意の他のタイプの情報を含んでもよいことを理解すべきである。
いくつかの実施形態において、ネットワークルーティングテーブルエントリの全て又は一部は、ルーティングテーブル214から得られ、GPT206と転送テーブル208のエントリとを生成又はアップデートするために使用され得る。例えば、ルーティングテーブル214に対するアップデートが、コンピューティングノード110において受信され得、そのコンピューティングノード110は、次いで、そのアップデートから、転送テーブル208及びGPT206のエントリを生成又はアップデート(すなわち、追加、削除、又は変更)することができる。次いで、アップデートされた転送テーブルエントリが、適切な処理ノードに送信され得、処理ノードは、その転送テーブルエントリを使用して、その処理ノードのローカルにある転送テーブル208をアップデートすることができる。さらに、いくつかの実施形態において、ルーティングテーブル214に対するアップデートを受信したコンピューティングノード110は、全ての他のコンピューティングノード110のそれぞれのGPTをアップデートするために、全ての他のコンピューティングノード110に対してアップデートインジケーションをブロードキャストすることができる。
前述したように、転送テーブル208は、ハッシュテーブルとして具現化することができる。したがって、ソフトウェアクラスタスイッチ104の制御プレーンは、ハッシュテーブルの構築や転送テーブルエントリの追加、削除、及びアップデートといった必要なオペレーションをサポートすることができる。GPT206及び転送テーブル208は、例示的なコンピューティングノード110のキャッシュメモリ204に記憶されるものとして説明されたが、GPT206及び転送テーブル208のうちの一方又は両方は、他の実施形態では、コンピューティングノード110の他のデータ記憶デバイス(例えば、メモリ212及び/又はデータストレージ218)に記憶されてもよいことを理解すべきである。例えば、特定のコンピューティングノード110の転送テーブル208のサイズが、キャッシュメモリ204において利用可能な記憶量を超える実施形態において、転送テーブル208の少なくとも一部分は、コンピューティングノード110のメモリ212に代わりに記憶されてもよい。いくつかの実施形態において、GPT206のサイズは、利用可能なキャッシュメモリ204に基づき得る。そのような実施形態において、GPT206のサイズが利用可能なキャッシュメモリ204のスペースを超えないことを確実にするために、さらなるコンピューティングノード110がソフトウェアクラスタスイッチ104に追加され得る。
セットマッピングテーブル(set mapping table)216は、ハッシュテーブルとして具現化することができる。したがって、ソフトウェアクラスタスイッチ104の制御プレーンは、ハッシュテーブルの構築や転送テーブルエントリの追加、削除、及びアップデートといった必要なオペレーションをサポートすることができる。したがって、セットマッピングテーブル216が、テーブルエントリをローカルで削除、作成、又はアップデートしたときに、削除、作成、又はアップデートされたテーブルエントリのインジケーションを提供するメッセージが、GPT206及び/又は転送テーブル208内の対応するテーブルエントリを適切に削除、作成、又はアップデートするために、ソフトウェアクラスタスイッチ104内の他のコンピューティングノード110に送信され得る。
データストレージ208は、データの短期記憶又は長期記憶のために構成される任意のタイプの1以上のデバイスとして具現化することができる。そのようなデバイスとして、例えば、メモリデバイス及び回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、又は他のデータ記憶デバイス等がある。例えば、データストレージ218は、コンピューティングノード110により初期化及び/又は実行される1以上のオペレーティングシステムを記憶するよう構成することができる。いくつかの実施形態において、1以上のオペレーティングシステムの諸部分は、より高速な処理のために、且つ/あるいは任意の他の目的のために、動作中、メモリ212にコピーされ得る。
コンピューティングノード110の通信回路220は、1以上の通信ネットワーク(例えば、ローカルエリアネットワーク、パーソナルエリアネットワーク、ワイドエリアネットワーク、セルラネットワーク、インターネット等のグローバルネットワーク等)を介する、コンピューティングノード110、ソースコンピューティングデバイス102、宛先コンピューティングデバイス106、インターコネクトデバイス120、及び/又は、他のコンピューティングデバイス若しくはネットワーキングデバイスの間の通信を可能にすることができる任意のタイプの通信回路、通信デバイス、又はこれらの集合として具現化することができる。通信回路220は、任意の1以上の通信技術(例えば、無線通信又は有線通信)と関連プロトコル(例えば、Ethernet(登録商標)、Wi−Fi(登録商標)、WiMAX(登録商標)等)とを使用してそのような通信を実現するよう構成することができる。例示的な実施形態において、通信回路220は、1以上の通信インタフェース222を含む、あるいは、1以上の通信インタフェース222に通信可能に接続される。通信インタフェース222は、コンピューティングノード110を、任意の数の他のコンピューティングノード110、インターコネクトデバイス120、ネットワーク(例えば、物理ネットワーク又は論理ネットワーク)、及び/又は外部コンピューティングデバイス(例えば、ソースコンピューティングデバイス102、宛先コンピューティングデバイス106、他のネットワーク通信管理デバイス等)に通信可能に接続するよう構成することができる。
次に図3を参照すると、使用の際、コンピューティングノード110の各々は、動作中に環境300を確立する。例示的な環境300は、ネットワーク通信モジュール310、ルーティングテーブル管理モジュール320、グローバル分割テーブル(GPT)管理モジュール330、転送テーブル管理モジュール340、転送テーブルルックアップモジュール350、及びGPTルックアップモジュール360を含む。環境300のモジュール、ロジック、及び他のコンポーネントの各々は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組合せとして具現化することができる。例えば、環境300のモジュール、ロジック、及び他のコンポーネントの各々は、コンピューティングノード110のプロセッサ又は他のハードウェアコンポーネントの一部を形成してもよいし、コンピューティングノード110のプロセッサ又は他のハードウェアコンポーネントにより確立されてもよい。したがって、いくつかの実施形態において、環境300のモジュールのうちの1以上は、回路又は電気デバイスの集合(例えば、ネットワーク通信回路、ルーティング管理回路等)として具現化することができる。例示的な環境300において、コンピューティングノード110は、ルーティングテーブルデータ302、セットマッピングデータ304、GPTデータ306、及び転送テーブルデータ308を含み、これらの各々は、コンピューティングノード110の様々なモジュール及び/又はサブモジュールのうちの1以上によりアクセス可能であり得る。コンピューティングノード110は、サーバデバイスにおいて通常見つけられる、説明の明瞭さのために図3には示されていない他のコンポーネント、サブコンポーネント、モジュール、及びデバイスを含み得ることを理解すべきである。
ネットワーク通信モジュール310は、ソースコンピューティングデバイス102、インターコネクトデバイス120、及び宛先コンピューティングデバイス106の間のネットワーク通信を円滑にするよう構成される。各コンピューティングノード110は、ルーティング及び交換の目的のために構成することができる。したがって、各コンピューティングノード110は、1以上の外部ポート(すなわち、通信インタフェース222)からネットワークパケット108を受信して、フロー識別ルールに基づいて宛先又は出力ポートに転送するために、ネットワークパケット108を別のコンピューティングノード110に送信することができる。すなわち、ネットワーク通信モジュール310は、コンピューティングデバイス110が外部コンピューティングデバイスからネットワークパケット108を受信しているか、且つ/あるいは、ネットワークパケットを宛先コンピューティングデバイスに送信しているかに応じて、入口コンピューティングデバイス112及び/又は出口コンピューティングデバイス118の両方として挙動するよう構成することができる。例えば、コンピューティングデバイス110が、ネットワークパケット108を受信し、受信したネットワークパケット108に対応する、転送テーブル208の部分を有するといった所定の条件下において、コンピューティングデバイス110は、入口コンピューティングデバイス112及び出口コンピューティングデバイス118の両方として挙動することができる。
いくつかの実施形態において、ネットワーク通信モジュール310は、入力通信モジュール312及び/又は出力通信モジュール314を含み得る。入力通信モジュール312は、コンピューティングノード110が入口コンピューティングノード112として動作しているときに、ソースコンピューティングデバイス102(例えば、ネットワークスイッチ、ネットワークルータ、発信元コンピューティングデバイス等)から、1以上のネットワークパケット108を受信するよう構成される。受信される1以上のネットワークパケット108は、受信されるネットワークパケット108のターゲットの宛先インターネットプロトコル(IP)アドレスを含むIPパケットとして具現化され得る。もちろん、受信される1以上のネットワークパケット108は、例えば、宛先ポート、送信元IPアドレス、ソースポート、プロトコル情報、及び/又はMACアドレスといった他のタイプの情報を含み得る。しかしながら、受信される1以上のネットワークパケット108は、他の実施形態では、任意の他のタイプのネットワークパケットとして具現化されてもよいことを理解すべきである。いくつかの実施形態において、1以上のネットワークパケット108は、図2の例示的なコンピューティングノード110の通信インタフェース222に通信可能に接続された外部コンピューティングデバイスから受信され得る。入力通信モジュール312が外部コンピューティングデバイスから1以上のネットワークパケット108を受信する実施形態において、コンピューティングノード110は、「入口」コンピューティングノード112と呼ばれ得ることを理解すべきである。入力通信モジュール312は、ルーティングテーブルデータ302、セットマッピングデータ304、GPTデータ306、及び/又は転送テーブルデータ308の任意のデータに対してアップデートが実行された後、他のコンピューティングノード110にインジケーションを提供するようさらに構成することができる。
出力通信モジュール314は、コンピューティングノード110が「出口」コンピューティングノード118として動作しているときに、出力ポートを判別して、その出力ポートから宛先コンピューティングデバイス106に向かうように、ソフトウェアクラスタスイッチ104からネットワークパケット108を送信するよう構成される。すなわち、出力通信モジュール314は、ネットワークパケット108をその最終宛先に向けて送信するよう構成される。例えば、いくつかの実施形態において、ネットワークパケット108の最終宛先は、出口コンピューティングノード118の通信インタフェース222のうちの1つに直接接続されている外部コンピューティングデバイスであり得る。別の例では、いくつかの実施形態において、ネットワークパケット108の最終宛先は、1以上のネットワークを介して出口コンピューティングノード118に通信可能に接続されている外部コンピューティングデバイスであり得る。
ルーティングテーブル管理モジュール320は、ルーティングテーブル214に記憶されるルーティングテーブルデータ302と、セットマッピングテーブル216に記憶されるセットマッピングデータ304と、を維持するよう構成される。ルーティングテーブルデータ302を維持するために、ルーティングテーブル管理モジュール320は、ルーティングテーブルデータ302の構築及び変更(例えば、追加、削除、及び/又は変更)をサポートするようさらに構成される。いくつかの実施形態において、ルーティングテーブルデータ302は、ネットワークコントローラ等の外部コンピューティングデバイスから、コンピューティングノード110により受信され得る。セットマッピングデータ304を維持するために、ルーティングテーブル管理モジュール320は、セットマッピングデータ304の構築及び変更(例えば、追加、削除、及び/又は変更)をサポートするようさらに構成される。セットマッピングデータ304は、複数のバケットを含むハッシュテーブルを含む。各バケットは、入力キー及び入力キーの対応する値を記憶するための1以上のエントリを含む。ルーティングテーブル管理モジュール320は、各入力キーがどの指定バケット(designated bucket)に記憶されるべきかを判定するための、バケットからグループへのマッピングスキーム(bucket-to-group mapping scheme)(すなわち、キーの2レベルハッシング)を使用するようさらに構成される。いくつかの実施形態において、ルーティングテーブル管理モジュール320は、複数のバケットが割り当てられるグループを判別するよう構成される。そのような実施形態において、バケットの連続するブロック、すなわち、キーブロックを使用して、多数のブロック、及びさらに多数のエントリを、少数のグループにマッピングすることができる。
いくつかの実施形態において、入力キーは、例えば、宛先IPアドレス、宛先MACアドレス、フローラベル、5タプルフロー識別子(すなわち、ソースポート、宛先ポート、送信元IPアドレス、宛先IPアドレス、及びプロトコル)といった、ネットワークパケット108のフロー識別子の少なくとも一部分から構成され得る。入力キーの各セットは、入力キーに直接適用され得るハッシュ関数(例えば、単純一様ハッシュ)に基づいて、バケットに配置され得、その結果が、入力キーが記憶される指定バケットに対応し得る。したがって、2以上の入力キー(例えば、16個の入力キー)が、各指定バケットに記憶され得る。さらに、各コンピューティングノード110には、一意な識別子、すなわち、ソフトウェアクラスタスイッチ104の各コンピューティングノード110と他のコンピューティングノード110とを区別するために使用されるノードインデックスが割り当てられる。いくつかの実施形態において、ノードインデックスは、バイナリ参照番号(binary reference number)とすることができる。
GPT206の各エントリは、フロー識別子が割り当てられている候補グループ(すなわち、各バケットが1以上のエントリを含むバケットのブロック)に対応するセットマッピングインデックスと、ハッシュ関数ファミリ(hash function family)のうち、フロー識別子に対応するノードインデックス(すなわち、そのフロー識別子に関する出口コンピューティングノードに対するインデックス)を生成するハッシュ関数のインデックスに対応するハッシュ関数インデックスと、を含む。ハッシュ関数インデックスを判別するために、ルーティングテーブル管理モジュール320は、ブルートフォース計算を使用して、入力キーを記憶する必要なく、ハッシュ関数ファミリのうちのどのハッシュ関数が、グループの各入力キーを、出力値(すなわち、ノードインデックス)の小さなセットにマッピングしているかを判別するようさらに構成される。すなわち、正しいノードインデックスが返されるまで、ハッシュ関数ファミリの各ハッシュ関数が、予め定められた順番で、グループの各エントリに適用され得る。セットマッピングインデックスと同様に、ハッシュ関数インデックスも、ハッシュ関数ファミリのハッシュ関数の数に対して、ほんの数ビットのサイズしか必要としない。バケットからグループへのマッピングスキームの結果として、グループの全てのために適切なハッシュ関数を見つけ出すことが、より実現可能であり得る。さらに、インデックス(すなわち、セットマッピングインデックス及びハッシュ関数インデックス)だけを記憶することは、GPT206が、ルーティングテーブル214よりもコンパクトでサイズが小さくなることをもたらすことができる。
さらに、入力キーを、その対応するバケットに、結果として、その対応するグループに追加するときに、ハッシュ関数は、そのグループ及びアップデートされた対応するGPTデータ306(すなわち、ハッシュ関数インデックス)のために、再計算される必要があり得る。したがって、いくつかの実施形態において、ルーティングテーブル管理モジュール320は、セットマッピングデータ304に対する変更が生じたことを示す通知を、GPT管理モジュール330及び/又は転送テーブル管理モジュール340に提供することができる。いくつかの実施形態において、セットマッピングデータ304の各バケット内のエントリの数は、サイズが制限され得る。すなわち、セットマッピングデータ304は、各バケットについて最大数の入力キーの記憶をサポートすることのみ可能である。最大数の入力キーが対応するバケットにすでに存在している場合、特定のエントリは無視され得る。したがって、GPT206は、ハッシュ関数の出力に基づいて、ネットワークパケット108を特定のコンピューティングノード110に依然としてルーティングすることがある。しかしながら、そのコンピューティングノード110は、出口コンピューティングデバイス118に対応していないことがある。結果として、ネットワークパケット108がルーティングされたコンピューティングノード110(すなわち、「間接(bounce)」コンピューティングノード又は「中間」コンピューティングノード)は、次いで、完全なルーティングテーブルのルックアップを実行して、そのパケットを適切な出口コンピューティングデバイス118に送信することがある。すなわち、さらなるホップが追加され得る。
GPT管理モジュール330は、制御プレーンにおいて、GPTデータ306を構築して維持(すなわち、追加、削除、変更等)するよう構成される。いくつかの実施形態において、GPTデータ306は、ルーティングテーブルデータ302に基づいて生成され得るGTP206を含み得る。GPTデータ306全体の再構築を避けるために、構築を開始する前に、総テーブルサイズの事前知識が必要とされ得る。したがって、いくつかのワークロードに関して、総テーブルサイズの粗推定が、様々なヒューリスティック及び/又は推定に基づいて、求められ得る。さらに、いくつかの実施形態(例えば、vEPC)において、入力キーの範囲の事前知識を用いて、必要に応じてアップデートされ得る、GPTデータ306のためのテーブル(例えば、図2のGPT206)を構築することができる。入力キーの範囲の事前知識を確認できない他の実施形態においては、オンラインブートストラップの手段として、バッチ構築が実行され得る。詳細には、転送テーブル全体の完全複製(すなわち、GPT206ではない)が、十分な入力キーが収集されるまで、各コンピューティングノード110において使用され得、十分な入力キーが収集されると、GPTデータ306のためのテーブルが、収集された入力キーに基づいて構築され得る。
GPT管理モジュール330は、エントリがGPTデータ306から削除されるべきであるという通知を(例えば、ルーティングテーブル管理モジュール320から)受信するようさらに構成され得る。vEPCの実施形態において、例えば、この通知は、モビリティ管理エンティティ(MME)から受信され得る。スイッチ又はルータの実施形態において、ローカル転送テーブル208は、最長時間未使用(LRU)除去ポリシ等の除去ポリシを保持することができる。エントリがGPTデータ306から削除された後、GPT管理モジュール330は、通知を制御プレーンに提供することができる。GPT管理モジュール330は、エントリをアップデートするときに、対応するグループのためのハッシュ関数を再計算し、それに応じて、新たなハッシュ関数のインデックスを保存することができる。
転送テーブル管理モジュール340は、制御プレーンにおいて、転送テーブル(例えば、図2の転送テーブル208)を構築して、様々な追加オペレーション、削除オペレーション、及び変更オペレーションを用いて、転送テーブルの転送テーブルデータ308を維持するよう構成される。したがって、いくつかの実施形態において、転送テーブルデータ308は、コンピューティングノード110のローカルにある転送テーブル208(すなわち、転送テーブル全体の一部又はサブセット)を含み得る。転送テーブルルックアップモジュール350は、転送テーブルデータ308を維持する際に実行されたオペレーションに基づいてGPTデータ306に対して対応するアクションをとるようにGPT管理モジュール330に通知する通知を、GPT管理モジュール330に提供するようさらに構成され得る。例えば、転送テーブルルックアップモジュール350が、転送テーブルデータ308から転送テーブルエントリを削除するために削除オペレーションを実行した場合、転送テーブルルックアップモジュール350は、どの転送テーブルエントリが削除されたかを示す通知を、GPT管理モジュール330に提供することができるので、GPT管理モジュール330は、GPTデータ306から、対応するエントリを削除することができる。
転送テーブルルックアップモジュール350は、データプレーンにおいて、ネットワークパケット108に関する転送情報を判別するために、転送テーブルデータ308に対してルックアップオペレーションを実行するよう構成される。前述したように、ソフトウェアクラスタスイッチ104内の各コンピューティングノード110は、転送テーブルエントリの一部をホストすることができる。各コンピューティングノード110に対する転送テーブルエントリの割り当てを決定するために、転送テーブル全体が、コンピューティングノード110のうちどれが処理ノードであるか(すなわち、ネットワークパケット108を処理する役割を担うか)に基づいて、分割されて分散される。したがって、コンピューティングノード110の各々は、そのコンピューティングノード110が処理して送信する役割を担う、転送テーブルデータ308の転送テーブルエントリの一部のみを受信する。したがって、コンピューティングノード110のローカルにある転送テーブル208は、その特定のコンピューティングデバイス110に対応する転送テーブルエントリのみを含み得る。
GPTルックアップモジュール360は、データプレーンにおいて、どのコンピューティングノード110が処理ノードであるか(すなわち、出口コンピューティングノードであるか)を判定するために、GPTデータ306に対してルックアップオペレーションを実行するよう構成される。そうするために、GPTルックアップモジュール360は、ハッシュ関数を、ネットワークパケット108のフロー識別子(例えば、宛先IPアドレス、宛先MACアドレス、5タプルフロー識別子等)に適用して、フロー識別子エントリが記憶されているバケット(すなわち、GPTテーブル206の1以上のエントリ)を判別するよう構成され得る。GPTルックアップモジュール360は、GPTデータ306に対してルックアップオペレーションを実行したことに応じて、処理ノード(すなわち、出口コンピューティングノード118)に対応する値(すなわち、インデックス)を返すことができる。
GPTテーブル206内に現在存在するエントリの数が、GPTテーブル206の許容可能なエントリの最大数を超えているとき等の所定の条件下において、フロー識別子のためのハッシュ関数の検索に関連するコストが、予め定められたコスト閾値を超えることがある。そのような条件下において、GPTルックアップモジュール360は、正しいハッシュ関数ではない可能性があるハッシュ関数の出力に基づいて、別のコンピューティングノード110に、そのコンピューティングノード110が処理ノードではない場合でも、ネットワークパケット108をルーティングすることがある。したがって、ルーティングされたネットワークパケット108を受信したコンピューティングノード110が、処理ノードではない場合、処理ノードではないそのコンピューティングノード110は、ルーティングテーブルに対して完全なルックアップを実行して、ネットワークパケット108を処理ノードに送信することがある。これは、さらなるホップをもたらす。いくつかの実施形態において、GPTルックアップモジュール360は、どの最終出力ポートがネットワークパケット108の宛先IPアドレスに対応するかを示すインジケーションを、出力通信モジュール314に提供するようさらに構成され得る。
次に図4を参照すると、使用の際、コンピューティングノード110(例えば、図1の入口コンピューティングノード112)は、受信されたネットワークパケット(例えば、ネットワークパケット108)に関する出口コンピューティングノード(例えば、出口コンピューティングノード118)を判別するための方法400を実行することができる。前述したように、コンピューティングノード110のうちのいずれも、入口コンピューティングノード112として動作することができる。方法400は、ブロック402で始まる。ブロック402において、入口コンピューティングノード112は、ネットワークパケット108が、例えば、ソースコンピューティングノード102から、受信されたかどうかを判定する。そうするために、入口コンピューティングノード112は、新たなネットワークパケット108が受信される1以上の通信インタフェース222をモニタリングすることができる。入口コンピューティングノード112が、新たなネットワークパケット108が受信されていないと判定した場合、方法400は、ブロック402にループバックし、入口コンピューティングノード112は、新たなネットワークパケット108の受信のモニタリングを続ける。しかしながら、入口コンピューティングノード112が、新たなネットワークパケット108が受信されたと判定した場合、方法400は、ブロック404に進む。
ブロック404において、入口コンピューティングノード112は、ネットワークパケット108のフロー識別子を判別する。いくつかの実施形態において、フロー識別子は、ソフトウェアクラスタスイッチ104のコンピューティングノード110のうちの1つに通信可能に接続されているターゲットコンピューティングデバイス(例えば、宛先コンピューティングデバイス106)、又は、1以上のネットワーク及び/又はネットワーキングデバイスを介してソフトウェアクラスタスイッチ104に通信可能に接続されている宛先コンピューティングデバイス(例えば、宛先コンピューティングデバイス106)のアドレス及び/又はポートであり得る。一実施形態において、受信されるネットワークパケット108は、数あるタイプの情報の中でもとりわけ、受信されるネットワークパケット108のターゲットの宛先インターネットプロトコル(IP)アドレスを含むIPパケットとして具現化され得る。そのような実施形態において、入口コンピューティングノード112は、受信されたIPネットワークパケット108のIPヘッダを調べて(すなわち、解析して)、ソースコンピューティングデバイスのIPアドレス及び/又はポート(すなわち、送信元アドレス及び/又はポート)、ターゲットコンピューティングデバイスのIPアドレス及び/又はポート(すなわち、宛先アドレス及び/又はポート)、及び/又はプロトコルを判別することができる。
ブロック406において、入口コンピューティングノード112は、GPT206が作成されているかどうかを判定する。前述したように、いくつかの実施形態において、GPT206を構築するために、最小数の入力キーが必要とされ得る。したがって、GPTがまだ作成されていないそのような実施形態において、ブロック408において、入口コンピューティングノード112は、出口コンピューティングノード118を識別するために、完全に複製された転送テーブル(すなわち、転送テーブル全体のローカル分割ではなく、転送テーブル全体)に対してルックアップを実行する。GPT206が作成されている場合、方法400は、ブロック416に進み、ブロック416において、以下でさらに説明するルックアップオペレーションが実行される。ブロック408から、方法400は、ブロック410に進み、ブロック410において、入口コンピューティングノード112は、入口コンピューティングノード112が、ブロック408におけるルックアップにおいて識別された出口コンピューティングノード118と同じコンピューティングノードであるかどうかを判定する。すなわち、入口コンピューティングノード112は、入口コンピューティングノード112が出口コンピューティングノード118でもあるかどうかを判定する。入口コンピューティングノード112が出口コンピューティングノード118である場合、方法400は、ブロック412に進み、ブロック412において、入口コンピューティングノード112は、ブロック408において実行されたルックアップに基づく、入口コンピューティングノード112の出力ポートを介して、ネットワークパケット108を送信する。入口コンピューティングノード112が、出口コンピューティングノード118が入口コンピューティングノード112以外のコンピューティングノードであると判定した場合、方法400は、ブロック414に進み、ブロック414において、入口コンピューティングノード112は、ブロック408において判別された出口コンピューティングノード118に、ネットワークパケット108を送信する。
前述したように、現在収集されている入力キーの数が、GPT206を構築するために必要とされる入力キーの最小数よりも少ないと入口コンピューティングノード112が判定した場合、方法400は、ブロック416に進む。ブロック416において、入口コンピューティングノード112は、キーとしてセットマッピングインデックスを用いて、GPTに対してルックアップを実行し、ルックアップの結果として、ハッシュ関数インデックス(すなわち、キーがセットマッピングインデックスに合致するキー値ペアの値)を取得する。そうするために、ブロック418において、入口コンピューティングノード112は、ハッシュ関数(例えば、単純一様ハッシュ)をフロー識別子に適用して、セットマッピングインデックスを識別する。さらに、ブロック418において、入口コンピューティングノード112は、セットマッピングインデックスをGPT206と比較して、ハッシュ関数のインデックス(すなわち、ハッシュ関数インデックス)を判別する。
GPTに対するルックアップは、出口コンピューティングノード118に対応しない、GPT206のセットマッピングインデックスを返すことがあることを理解すべきである。例えば、GPT206が完全である(すなわち、さらなるフローをサポートできない)実施形態において、GPT206に対するルックアップは、GPT206に対するルックアップが実行されたフロー識別子に対応しないハッシュ関数インデックスを返すことがある。したがって、ブロック416において実行されるルックアップオペレーションは、出口コンピューティングノード118ではなく、「間接」コンピューティングノード又は「中間」コンピューティングノードであるコンピューティングノードをもたらすことがある。
ブロック424において、入口コンピューティングノード112は、入口コンピューティングノード112が、ブロック422において判別された次のコンピューティングノード118と同じコンピューティングノードであるかどうかを判定する。入口コンピューティングノード112が、次のコンピューティングノード118と同じコンピューティングノードではない場合、方法400は、ブロック426に進み、ブロック426において、入口コンピューティングノード112は、ネットワークパケット108を次のコンピューティングノードに送信する。入口コンピューティングノード112が、次のコンピューティングノードと同じコンピューティングノードである場合、方法400は、図5に示されるブロック428に進み、ブロック428において、入口コンピューティングノード112は、受信されたネットワークパケットを送信するための、入口コンピューティングノード112の出力ポートを判別するために、転送テーブルのローカル部分(例えば、転送テーブル208)に対して、フロー識別子のルックアップを実行する。
ブロック430において、入口コンピューティングノード112は、ブロック416において実行されたルックアップオペレーションが成功したかどうかを判定する。ブロック416において実行されたルックアップが成功した場合、方法400は、ブロック432に進み、ブロック432において、入口コンピューティングノード112は、ルックアップオペレーションにより判別された、入口コンピューティングノード112の出力ポートを介して、ネットワークパケット108をターゲットコンピューティングデバイス(例えば、宛先コンピューティングデバイス106)に送信する。ルックアップオペレーションが成功しなかった場合、方法400は、ブロック434に進み、ブロック434において、入口コンピューティングノード112は、出口コンピューティングノード118を判別するために、ルーティングテーブル(例えば、ルーティングテーブル214)に対して、フロー識別子のルックアップを実行する。ブロック436において、入口コンピューティングノード112は、受信されたネットワークパケットを、ブロック434において判別された出口コンピューティングノード118に送信する。
いくつかの実施形態において、ブロック408、ブロック424、及びブロック428におけるルックアップオペレーションにおいて使用されるフロー識別子は、異なるフロー識別子、及び/又は、同じフロー識別子の異なる部分であり得ることを理解すべきである。例えば、いくつかの実施形態において、ブロック408及びブロック424において実行されるルックアップオペレーションは、ターゲットコンピューティングデバイスのIPアドレスを使用し得るのに対し、ブロック428において実行されるルックアップオペレーションは、5タプルフロー識別子を使用し得る。
次に図6を参照すると、使用の際、コンピューティングノード110(例えば、図1のコンピューティングノード114、コンピューティングノード116、又は出口コンピューティングノード118)は、入口ノードから受信したネットワークパケット(例えば、ネットワークパケット108)を転送するための方法600を実行することができる。方法600は、ブロック602で始まる。ブロック602において、次のコンピューティングノード118は、ネットワークパケット108が、例えば、入口コンピューティングノード112から、次のコンピューティングノードにおいて受信されたかどうかを判定する。そうするために、次のコンピューティングノードは、ネットワークパケット108が受信される1以上の通信インタフェース222をモニタリングすることができる。
前述したように、入口コンピューティングノード112は、GPT206に対して、ルックアップオペレーションを実行することがあり、これは、入口コンピューティングノード112が、次のコンピューティングノードが出口コンピューティングノード118であるか間接コンピューティングノードであるかを認識することなく、ネットワークパケットを次のコンピューティングノードに送信することをもたらし得る。したがって、いくつかの実施形態において、ネットワークパケットが入口ノード112から送信されたかどうか(すなわち、GPT206とすでに比較されているかどうか)を示すインジケーションが、ブロック602において受信されるネットワークパケット内(例えば、パッカ(packer)又はメッセージヘッダ中)に提供され得る、あるいは、ブロック602において受信されるネットワークパケットに付随して提供され得る。
次のコンピューティングノードが、ネットワークパケット108が受信されていないと判定した場合、方法600は、ブロック602にループバックし、次のコンピューティングノードは、ネットワークパケット108の受信のモニタリングを続ける。しかしながら、次のコンピューティングノードが、ネットワークパケットが受信されたと判定した場合、方法600は、ブロック604に進み、ブロック604において、次のコンピューティングノードは、ネットワークパケット108のフロー識別子を判別する。いくつかの実施形態において、フロー識別子は、ソフトウェアクラスタスイッチ104のコンピューティングノード110のうちの1つに通信可能に接続されているターゲットコンピューティングデバイス(例えば、宛先コンピューティングデバイス106)、又は、1以上のネットワーク及び/又はネットワーキングデバイスを介してソフトウェアクラスタスイッチ104に通信可能に接続されている宛先コンピューティングデバイス(例えば、宛先コンピューティングデバイス106)のアドレス及び/又はポートであり得る。一実施形態において、受信されるネットワークパケット108は、数あるタイプの情報の中でもとりわけ、受信されるネットワークパケット108のターゲットの宛先インターネットプロトコル(IP)アドレスを含むIPパケットとして具現化され得る。そのような実施形態において、次のコンピューティングノードは、受信されたIPネットワークパケット108のIPヘッダを調べて(すなわち、解析して)、ターゲットコンピューティングデバイスのIPアドレス及び/又はポート、ソースコンピューティングデバイスのIPアドレス及び/又はポート、及び/又はプロトコルを判別することができる。
ブロック606において、次のコンピューティングノードは、次のコンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分(例えば、転送テーブル208)に対して、フロー識別子のルックアップを実行する。ブロック608において、次のコンピューティングノードは、ブロック606において実行されたルックアップが成功したかどうかを判定する。すなわち、次のコンピューティングノードは、次のコンピューティングノードが、受信されたネットワークパケットを送信する出口コンピューティングノード118であるかどうかを判定する。ブロック606において実行されたルックアップが成功した場合(すなわち、次のコンピューティングノードが出口コンピューティングノード118である場合)、方法600は、ブロック610に進み、ブロック610において、出口コンピューティングノード118である次のコンピューティングノードは、ブロック606において実行されたルックアップにより判別された、次のコンピューティングノードの出力ポートを介して、ネットワークパケット108をターゲットコンピューティングデバイス(例えば、宛先コンピューティングデバイス106)に送信する。ブロック606において実行されたルックアップが成功しなかった場合(すなわち、次のコンピューティングノードが、実際には、「間接」ノード又は「中間」ノードである場合)、方法600は、ブロック612に進み、ブロック612において、次のコンピューティングノードは、出口コンピューティングノード118を判別するために、ルーティングテーブル(例えば、ルーティングテーブル214)に対して、フロー識別子のルックアップを実行する。ブロック614において、次のコンピューティングノードは、受信されたネットワークパケットを、ブロック612において判別された出口コンピューティングノード118に送信する。
次に図7を参照すると、コンピューティングノード110は、ネットワークパケット(例えば、ネットワークパケット108)のネットワークフロー識別子に対応するエントリを、コンピューティングノード110のルーティングテーブル(例えば、ルーティングテーブル214)に追加するための方法700を実行することができる。方法700は、ブロック702で始まる。ブロック702において、コンピューティングノード110は、エントリ(すなわち、フロー識別子)をルーティングテーブル214に追加するリクエストが、コンピューティングノード110において受信されたかどうかを判定する。コンピューティングノード110が、リクエストが受信されていないと判定した場合、方法700は、ブロック702にループバックし、コンピューティングノード110は、追加エントリリクエストの受信のモニタリングを続ける。しかしながら、コンピューティングノード110が、追加エントリリクエストが受信されたと判定した場合、方法700は、ブロック704に進む。
ブロック704において、コンピューティングノード110は、ハッシュ関数をフロー識別子に適用して、フロー識別子が記憶され得る、ハッシュテーブル(例えば、セットマッピングデータ304)のバケットを識別する。ブロック706において、コンピューティングノード110は、識別されたバケットが、フロー識別子を記憶するための利用可能なエントリを有するかどうかを判定する。識別されたバケットが、利用可能なエントリを有さないと判定された場合、方法700は、ブロック702にループバックし、コンピューティングノード110は、追加エントリリクエストの受信のモニタリングを続ける。識別されたバケットが、利用可能なエントリを有すると判定された場合、方法700は、ブロック708に進み、ブロック708において、コンピューティングノード110は、フロー識別子を、識別されたバケット内の利用可能なエントリに追加する。ブロック710において、コンピューティングノード110は、識別されたバケットに以前に割り当てられたグループ(すなわち、各バケットがフロー識別子を記憶するための1以上のエントリを含むバケットのブロック)に基づいて、ハッシュ関数を再計算する。すなわち、コンピューティングデバイス110は、同じグループに割り当てられている各バケット内の各エントリについてハッシュ関数を再計算する。前述したように、ハッシュ関数を再計算することは、ネットワークパケット108に関する処理ノード、すなわち、出口コンピューティングノードに対応するノードインデックスに等しい結果が返されるまで、ハッシュ関数ファミリの複数のハッシュ関数の各々を適用することを含み得る。
ブロック712において、コンピューティングノード110は、再計算されたハッシュ関数に基づいて、GPT206をアップデートする。すなわち、コンピューティングノード110は、ブロック704において識別されたバケットに関する適切なハッシュ関数インデックスをアップデートする。ブロック714において、コンピューティングノード110は、ブロック712において実行されたGPTのアップデートに基づいて他のコンピューティングノード110それぞれのGPTをアップデートするよう示すGPTアップデート通知を、他のコンピューティングノード110にブロードキャストする。
例
本明細書で開示したデバイス、システム、及び方法の例示的な例が、以下で提供される。デバイス、システム、及び方法の実施形態は、以下に記載される例の任意の1以上、及び任意の組合せを含み得る。
本明細書で開示したデバイス、システム、及び方法の例示的な例が、以下で提供される。デバイス、システム、及び方法の実施形態は、以下に記載される例の任意の1以上、及び任意の組合せを含み得る。
例1は、モジュール式転送テーブル拡張性のためのソフトウェアクラスタスイッチのコンピューティングノードを含み、当該コンピューティングノードは、複数のバケットを含むセットマッピングテーブルを管理するルーティングテーブル管理モジュールであって、各バケットは、当該コンピューティングノードにより受信されるネットワークパケットに対応するフロー識別子を記憶する1以上のエントリを含み、各バケットは、グループに割り当てられ、各グループは、2以上のバケットを含む、ルーティングテーブル管理モジュールと、前記ソフトウェアクラスタスイッチの次のコンピューティングノードのノード識別子を判別するために使用可能な複数のエントリを含むグローバル分割テーブル(GPT)を管理するグローバル分割テーブル管理モジュールと、ネットワークパケットを受信したことに応じて、該ネットワークパケットのフロー識別子に基づいて、該ネットワークパケットに関する前記次のコンピューティングノードを判別し、第2のハッシュ関数を前記フロー識別子に適用して、前記次のコンピューティングノードを識別するノード識別子を生成するために、前記GPTに対してルックアップを実行するGPTルックアップモジュールであって、前記GPTに対して前記ルックアップを実行することは、(i)第1のハッシュ関数を前記フロー識別子に適用して、前記セットマッピングテーブルのグループを識別するセットマッピングインデックスを生成し、(ii)前記セットマッピングインデックスを前記GPTと比較して、第2のハッシュ関数を判別することを含み、前記次のコンピューティングノードは、間接コンピューティングノード又は出口コンピューティングノードの一方を含む、GPTルックアップモジュールと、前記ネットワークパケットを前記次のコンピューティングノードに送信するネットワーク通信モジュールと、を備える。
例2は、例1の主題を含み、前記ネットワーク通信モジュールは、さらに、別のコンピューティングノードからネットワークパケットを受信し、前記ネットワーク通信モジュールは、さらに、前記別のコンピューティングノードからの前記ネットワークパケットが、前記別のコンピューティングノードが入口コンピューティングノード又は間接ノードの一方であるというインジケーションを含むかどうかを判定する。
例3は、例1及び2のいずれかの主題を含み、前記別のコンピューティングノードが間接ノードであるという判定に応じて、当該コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行する転送テーブル管理モジュールであって、前記転送テーブルの前記ローカル部分は、当該コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、転送テーブル管理モジュールをさらに備える。
例4は、例1〜3のいずれかの主題を含み、前記ネットワーク通信モジュールは、さらに、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功したという判定に応じて、前記出力ポートを介して、前記ネットワークパケットをターゲットコンピューティングデバイスに送信する。
例5は、例1〜4のいずれかの主題を含み、前記別のコンピューティングノードが出口ノードであるという判定に応じて、当該コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行する転送テーブル管理モジュールであって、前記転送テーブルの前記ローカル部分は、当該コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、転送テーブル管理モジュールと、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功しなかったという判定に応じて、前記出口コンピューティングノードを判別するために、ルーティングテーブルにおいて前記フロー識別子のルックアップを実行するルーティングテーブルルックアップモジュールであって、前記ルーティングテーブルは、前記フロー識別子に関する前記出口コンピューティングノードを識別する、ルーティングテーブルルックアップモジュールと、をさらに備え、前記ネットワーク通信モジュールは、さらに、前記ネットワークパケットを前記出口コンピューティングノードに送信する。
例6は、例1〜5のいずれかの主題を含み、前記セットマッピングインデックスを前記GPTと比較して、前記第2のハッシュ関数を判別することは、(i)前記セットマッピングインデックスに応じて、前記GPTの前記エントリに対してルックアップを実行し、(ii)該ルックアップの結果として、ハッシュ関数ファミリのうちのハッシュ関数を識別するハッシュ関数インデックスを取得することを含み、前記ハッシュ関数ファミリは、複数のハッシュ関数を含む。
例7は、例1〜6のいずれかの主題を含み、(i)前記ネットワークパケットの前記フロー識別子を、当該コンピューティングノードのルーティングテーブルに追加するリクエストを受信し、(ii)前記リクエストを受信したことに応じて、前記フロー識別子を、当該コンピューティングノードの前記ルーティングテーブルに追加し、(iii)ハッシュ関数を前記フロー識別子に適用して、前記フロー識別子を記憶するための、前記セットマッピングテーブルのバケットを識別し、(iv)前記フロー識別子を、該バケット内のエントリに追加し、(v)グループを該エントリに割り当て、(vi)前記GPT内の該エントリに割り当てられた前記グループに対応する前記ハッシュ関数インデックスをアップデートする、ルーティングテーブル管理モジュールをさらに備える。
例8は、例1〜7のいずれかの主題を含み、前記ルーティングテーブル管理モジュールは、さらに、前記ソフトウェアクラスタスイッチの他のコンピューティングノードに対してアップデート通知をブロードキャストし、前記アップデート通知は、前記GPTに対する前記アップデートのインジケーションを提供する。
例9は、例1〜8のいずれかの主題を含み、前記ハッシュ関数インデックスをアップデートすることは、前記ハッシュ関数ファミリから、前記ネットワークパケットに関する前記出口コンピューティングノードのノードインデックスに対応する出力をもたらすハッシュ関数を識別することを含む。
例10は、例1〜9のいずれかの主題を含み、前記ハッシュ関数ファミリから前記ハッシュ関数を識別することは、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの前記エントリの各々について、適用されたハッシュ関数が、前記出口コンピューティングノードに対応するノードインデックスに対応する出力をもたらすまで、前記ハッシュ関数ファミリの各ハッシュ関数を、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの各エントリに適用することを含む。
例11は、例1〜10のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を判別することは、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す宛先アドレスを判別することを含む。
例12は、例1〜11のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を判別することは、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す5タプルフロー識別子を判別することを含む。
例13は、例1〜12のいずれかの主題を含み、前記ソフトウェアクラスタスイッチの前記出口コンピューティングノードに対応する前記ノード識別子を判別することは、前記フロー識別子にマッピングされている出力ポートを有することに基づいて、前記転送テーブルエントリの前記サブセットを記憶している、前記ソフトウェアクラスタスイッチのコンピューティングノードとして識別される出口コンピューティングノードを判別することを含む。
例14は、ソフトウェアクラスタスイッチのモジュール式転送テーブル拡張性のための方法を含み、当該方法は、コンピューティングノードにより、複数のバケットを含むセットマッピングテーブルを管理するステップであって、各バケットは、前記コンピューティングノードにより受信されるネットワークパケットに対応するフロー識別子を記憶する1以上のエントリを含み、各バケットは、グループに割り当てられ、各グループは、2以上のバケットを含む、ステップと、前記コンピューティングノードにより、前記ソフトウェアクラスタスイッチの次のコンピューティングノードのノード識別子を判別するために使用可能な複数のエントリを含むグローバル分割テーブル(GPT)を管理するステップと、前記コンピューティングノードにより、ネットワークパケットを受信したことに応じて、該ネットワークパケットのフロー識別子に基づいて、該ネットワークパケットに関する前記次のコンピューティングノードを判別するために、前記GPTに対してルックアップを実行するステップであって、前記GPTに対して前記ルックアップを実行することは、(i)第1のハッシュ関数を前記フロー識別子に適用して、前記セットマッピングテーブルのグループを識別するセットマッピングインデックスを生成し、(ii)前記セットマッピングインデックスを前記GPTと比較して、第2のハッシュ関数を判別することを含む、ステップと、前記第2のハッシュ関数を前記フロー識別子に適用して、前記次のコンピューティングノードを識別するノード識別子を生成するステップであって、前記次のコンピューティングノードは、間接コンピューティングノード又は出口コンピューティングノードの一方を含む、ステップと、前記コンピューティングノードにより、前記ネットワークパケットを前記次のコンピューティングノードに送信するステップと、を含む。
例15は、例14の主題を含み、前記コンピューティングノードにより、別のコンピューティングノードからネットワークパケットを受信するステップと、前記コンピューティングノードにより、前記別のコンピューティングノードからの前記ネットワークパケットが、前記別のコンピューティングノードが入口コンピューティングノード又は間接ノードの一方であるというインジケーションを含むかどうかを判定するステップと、をさらに含む。
例16は、例14及び15のいずれかの主題を含み、前記コンピューティングノードにより、前記別のコンピューティングノードが間接ノードであるという判定に応じて、前記コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行するステップであって、前記転送テーブルの前記ローカル部分は、前記コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、ステップをさらに含む。
例17は、例14〜16のいずれかの主題を含み、前記コンピューティングノードにより、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功したという判定に応じて、前記出力ポートを介して、前記ネットワークパケットをターゲットコンピューティングデバイスに送信するステップをさらに含む。
例18は、例14〜17のいずれかの主題を含み、前記コンピューティングノードにより、前記別のコンピューティングノードが出口ノードであるという判定に応じて、前記コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行するステップであって、前記転送テーブルの前記ローカル部分は、前記コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、ステップと、前記コンピューティングノードにより、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功しなかったという判定に応じて、前記出口コンピューティングノードを判別するために、ルーティングテーブルにおいて前記フロー識別子のルックアップを実行するステップであって、前記ルーティングテーブルは、前記フロー識別子に関する前記出口コンピューティングノードを識別する、ステップと、前記ネットワークパケットを前記出口コンピューティングノードに送信するステップと、をさらに含む。
例19は、例14〜18のいずれかの主題を含み、前記セットマッピングインデックスを前記GPTと比較して、前記第2のハッシュ関数を判別することは、(i)前記セットマッピングインデックスに応じて、前記GPTの前記エントリに対してルックアップを実行し、(ii)該ルックアップの結果として、ハッシュ関数ファミリのうちのハッシュ関数を識別するハッシュ関数インデックスを取得することを含み、前記ハッシュ関数ファミリは、複数のハッシュ関数を含む。
例20は、例14〜19のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を、前記コンピューティングノードのルーティングテーブルに追加するリクエストを受信するステップと、前記リクエストを受信したことに応じて、前記フロー識別子を、前記コンピューティングノードの前記ルーティングテーブルに追加するステップと、ハッシュ関数を前記フロー識別子に適用して、前記フロー識別子を記憶するための、前記セットマッピングテーブルのバケットを識別するステップと、前記フロー識別子を、該バケット内のエントリに追加するステップと、グループを該エントリに割り当てるステップと、前記GPT内の該エントリに割り当てられた前記グループに対応する前記ハッシュ関数インデックスをアップデートするステップと、をさらに含む。
例21は、例14〜20のいずれかの主題を含み、前記ソフトウェアクラスタスイッチの他のコンピューティングノードに対してアップデート通知をブロードキャストするステップをさらに含み、前記アップデート通知は、前記GPTに対する前記アップデートのインジケーションを提供する。
例22は、例14〜21のいずれかの主題を含み、前記ハッシュ関数インデックスをアップデートすることは、前記ハッシュ関数ファミリから、前記ネットワークパケットに関する前記出口コンピューティングノードのノードインデックスに対応する出力をもたらすハッシュ関数を識別することを含む。
例23は、例14〜22のいずれかの主題を含み、前記ハッシュ関数ファミリから前記ハッシュ関数を識別することは、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの前記エントリの各々について、適用されたハッシュ関数が、前記出口コンピューティングノードに対応するノードインデックスに対応する出力をもたらすまで、前記ハッシュ関数ファミリの各ハッシュ関数を、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの各エントリに適用することを含む。
例24は、例14〜23のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を判別することは、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す宛先アドレスを判別することを含む。
例25は、例14〜24のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を判別することは、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す5タプルフロー識別子を判別することを含む。
例26は、例14〜25のいずれかの主題を含み、前記ソフトウェアクラスタスイッチの前記出口コンピューティングノードに対応する前記ノード識別子を判別することは、前記フロー識別子にマッピングされている出力ポートを有することに基づいて、前記転送テーブルエントリの前記サブセットを記憶している、前記ソフトウェアクラスタスイッチのコンピューティングノードとして識別される出口コンピューティングノードを判別することを含む。
例27は、コンピューティングノードであって、プロセッサと、複数の命令を記憶しているメモリであって、前記複数の命令は、前記プロセッサにより実行されたときに、当該コンピューティングノードに、例14〜26のいずれかの方法を実行させる、メモリと、備えるコンピューティングノードを含む。
例28は、複数の命令を記憶している1以上のマシン読み取り可能な記憶媒体であって、前記複数の命令は、実行されたことに応じて、コンピューティングノードが、例14〜26のいずれかの方法を実行することをもたらす、1以上のマシン読み取り可能な記憶媒体を含む。
例29は、モジュール式転送テーブル拡張性のためのソフトウェアクラスタスイッチのコンピューティングノードを含み、当該コンピューティングノードは、複数のバケットを含むセットマッピングテーブルを管理する手段であって、各バケットは、当該コンピューティングノードにより受信されるネットワークパケットに対応するフロー識別子を記憶する1以上のエントリを含み、各バケットは、グループに割り当てられ、各グループは、2以上のバケットを含む、手段と、前記ソフトウェアクラスタスイッチの次のコンピューティングノードのノード識別子を判別するために使用可能な複数のエントリを含むグローバル分割テーブル(GPT)を管理する手段と、ネットワークパケットを受信したことに応じて、該ネットワークパケットのフロー識別子に基づいて、該ネットワークパケットに関する前記次のコンピューティングノードを判別するために、前記GPTに対してルックアップを実行する手段であって、前記GPTに対して前記ルックアップを実行する前記手段は、(i)第1のハッシュ関数を前記フロー識別子に適用して、前記セットマッピングテーブルのグループを識別するセットマッピングインデックスを生成し、(ii)前記セットマッピングインデックスを前記GPTと比較して、第2のハッシュ関数を判別する手段を含む、手段と、前記第2のハッシュ関数を前記フロー識別子に適用して、前記次のコンピューティングノードを識別するノード識別子を生成する手段であって、前記次のコンピューティングノードは、間接コンピューティングノード又は出口コンピューティングノードの一方を含む、手段と、前記ネットワークパケットを前記次のコンピューティングノードに送信する手段と、を備える。
例30は、例29の主題を含み、別のコンピューティングノードからネットワークパケットを受信する手段と、前記別のコンピューティングノードからの前記ネットワークパケットが、前記別のコンピューティングノードが入口コンピューティングノード又は間接ノードの一方であるというインジケーションを含むかどうかを判定する手段と、をさらに備える。
例31は、例29及び30のいずれかの主題を含み、前記別のコンピューティングノードが間接ノードであるという判定に応じて、当該コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行する手段であって、前記転送テーブルの前記ローカル部分は、当該コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、手段をさらに備える。
例32は、例29〜31のいずれかの主題を含み、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功したという判定に応じて、前記出力ポートを介して、前記ネットワークパケットをターゲットコンピューティングデバイスに送信する手段をさらに備える。
例33は、例29〜32のいずれかの主題を含み、前記別のコンピューティングノードが出口ノードであるという判定に応じて、当該コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行する手段であって、前記転送テーブルの前記ローカル部分は、当該コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、手段と、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功しなかったという判定に応じて、前記出口コンピューティングノードを判別するために、ルーティングテーブルにおいて前記フロー識別子のルックアップを実行する手段であって、前記ルーティングテーブルは、前記フロー識別子に関する前記出口コンピューティングノードを識別する、手段と、前記ネットワークパケットを前記出口コンピューティングノードに送信する手段と、をさらに備える。
例34は、例29〜33のいずれかの主題を含み、前記セットマッピングインデックスを前記GPTと比較して、前記第2のハッシュ関数を判別する前記手段は、(i)前記セットマッピングインデックスに応じて、前記GPTの前記エントリに対してルックアップを実行し、(ii)該ルックアップの結果として、ハッシュ関数ファミリのうちのハッシュ関数を識別するハッシュ関数インデックスを取得する手段を含み、前記ハッシュ関数ファミリは、複数のハッシュ関数を含む。
例35は、例29〜34のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を、当該コンピューティングノードのルーティングテーブルに追加するリクエストを受信する手段と、前記リクエストを受信したことに応じて、前記フロー識別子を、当該コンピューティングノードの前記ルーティングテーブルに追加する手段と、ハッシュ関数を前記フロー識別子に適用して、前記フロー識別子を記憶するための、前記セットマッピングテーブルのバケットを識別する手段と、前記フロー識別子を、該バケット内のエントリに追加する手段と、グループを該エントリに割り当てる手段と、前記GPT内の該エントリに割り当てられた前記グループに対応する前記ハッシュ関数インデックスをアップデートする手段と、をさらに備える。
例36は、例29〜35のいずれかの主題を含み、前記ソフトウェアクラスタスイッチの他のコンピューティングノードに対してアップデート通知をブロードキャストする手段をさらに備え、前記アップデート通知は、前記GPTに対する前記アップデートのインジケーションを提供する。
例37は、例29〜36のいずれかの主題を含み、前記ハッシュ関数インデックスをアップデートする前記手段は、前記ハッシュ関数ファミリから、前記ネットワークパケットに関する前記出口コンピューティングノードのノードインデックスに対応する出力をもたらすハッシュ関数を識別する手段を含む。
例38は、例29〜37のいずれかの主題を含み、前記ハッシュ関数ファミリから前記ハッシュ関数を識別する前記手段は、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの前記エントリの各々について、適用されたハッシュ関数が、前記出口コンピューティングノードに対応するノードインデックスに対応する出力をもたらすまで、前記ハッシュ関数ファミリの各ハッシュ関数を、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの各エントリに適用する手段を含む。
例39は、例29〜38のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を判別する手段は、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す宛先アドレスを判別する手段を含む。
例40は、例29〜39のいずれかの主題を含み、前記ネットワークパケットの前記フロー識別子を判別する手段は、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す5タプルフロー識別子を判別する手段を含む。
例41は、例29〜40のいずれかの主題を含み、前記ソフトウェアクラスタスイッチの前記出口コンピューティングノードに対応する前記ノード識別子を判別する手段は、前記フロー識別子にマッピングされている出力ポートを有することに基づいて、前記転送テーブルエントリの前記サブセットを記憶している、前記ソフトウェアクラスタスイッチのコンピューティングノードとして識別される出口コンピューティングノードを判別する手段を含む。
Claims (26)
- モジュール式転送テーブル拡張性のためのソフトウェアクラスタスイッチのコンピューティングノードであって、
複数のバケットを含むセットマッピングテーブルを管理するルーティングテーブル管理モジュールであって、各バケットは、当該コンピューティングノードにより受信されるネットワークパケットに対応するフロー識別子を記憶する1以上のエントリを含み、各バケットは、グループに割り当てられ、各グループは、2以上のバケットを含む、ルーティングテーブル管理モジュールと、
前記ソフトウェアクラスタスイッチの次のコンピューティングノードのノード識別子を判別するために使用可能な複数のエントリを含むグローバル分割テーブル(GPT)を管理するグローバル分割テーブル管理モジュールと、
ネットワークパケットを受信したことに応じて、該ネットワークパケットのフロー識別子に基づいて、該ネットワークパケットに関する前記次のコンピューティングノードを判別し、第2のハッシュ関数を前記フロー識別子に適用して、前記次のコンピューティングノードを識別するノード識別子を生成するために、前記GPTに対してルックアップを実行するGPTルックアップモジュールであって、前記GPTに対して前記ルックアップを実行することは、(i)第1のハッシュ関数を前記フロー識別子に適用して、前記セットマッピングテーブルのグループを識別するセットマッピングインデックスを生成し、(ii)前記セットマッピングインデックスを前記GPTと比較して、第2のハッシュ関数を判別することを含み、前記次のコンピューティングノードは、間接コンピューティングノード又は出口コンピューティングノードの一方を含む、GPTルックアップモジュールと、
前記ネットワークパケットを前記次のコンピューティングノードに送信するネットワーク通信モジュールと、
を備えたコンピューティングノード。 - 前記ネットワーク通信モジュールは、さらに、別のコンピューティングノードからネットワークパケットを受信し、前記ネットワーク通信モジュールは、さらに、前記別のコンピューティングノードからの前記ネットワークパケットが、前記別のコンピューティングノードが入口コンピューティングノード又は間接ノードの一方であるというインジケーションを含むかどうかを判定する、請求項1記載のコンピューティングノード。
- 前記別のコンピューティングノードが間接ノードであるという判定に応じて、当該コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行する転送テーブル管理モジュールであって、前記転送テーブルの前記ローカル部分は、当該コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、転送テーブル管理モジュール
をさらに備えた、請求項2記載のコンピューティングノード。 - 前記ネットワーク通信モジュールは、さらに、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功したという判定に応じて、前記出力ポートを介して、前記ネットワークパケットをターゲットコンピューティングデバイスに送信する、請求項3記載のコンピューティングノード。
- 別のコンピューティングノードが出口ノードであるという判定に応じて、当該コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行する転送テーブル管理モジュールであって、前記転送テーブルの前記ローカル部分は、当該コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、転送テーブル管理モジュールと、
前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功しなかったという判定に応じて、前記出口コンピューティングノードを判別するために、ルーティングテーブルにおいて前記フロー識別子のルックアップを実行するルーティングテーブルルックアップモジュールであって、前記ルーティングテーブルは、前記フロー識別子に関する前記出口コンピューティングノードを識別する、ルーティングテーブルルックアップモジュールと、
をさらに備え、
前記ネットワーク通信モジュールは、さらに、前記ネットワークパケットを前記出口コンピューティングノードに送信する、請求項1記載のコンピューティングノード。 - 前記セットマッピングインデックスを前記GPTと比較して、前記第2のハッシュ関数を判別することは、(i)前記セットマッピングインデックスに応じて、前記GPTの前記エントリに対してルックアップを実行し、(ii)該ルックアップの結果として、ハッシュ関数ファミリのうちのハッシュ関数を識別するハッシュ関数インデックスを取得することを含み、前記ハッシュ関数ファミリは、複数のハッシュ関数を含む、請求項1記載のコンピューティングノード。
- (i)前記ネットワークパケットの前記フロー識別子を、当該コンピューティングノードのルーティングテーブルに追加するリクエストを受信し、(ii)前記リクエストを受信したことに応じて、前記フロー識別子を、当該コンピューティングノードの前記ルーティングテーブルに追加し、(iii)ハッシュ関数を前記フロー識別子に適用して、前記フロー識別子を記憶するための、前記セットマッピングテーブルのバケットを識別し、(iv)前記フロー識別子を、該バケット内のエントリに追加し、(v)グループを該エントリに割り当て、(vi)前記GPT内の該エントリに割り当てられた前記グループに対応する前記ハッシュ関数インデックスをアップデートする、ルーティングテーブル管理モジュール
をさらに備えた、請求項6記載のコンピューティングノード。 - 前記ルーティングテーブル管理モジュールは、さらに、前記ソフトウェアクラスタスイッチの他のコンピューティングノードに対してアップデート通知をブロードキャストし、前記アップデート通知は、前記GPTに対する前記アップデートのインジケーションを提供する、請求項7記載のコンピューティングノード。
- 前記ハッシュ関数インデックスをアップデートすることは、前記ハッシュ関数ファミリから、前記ネットワークパケットに関する前記出口コンピューティングノードのノードインデックスに対応する出力をもたらすハッシュ関数を識別することを含む、請求項7記載のコンピューティングノード。
- 前記ハッシュ関数ファミリから前記ハッシュ関数を識別することは、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの前記エントリの各々について、適用されたハッシュ関数が、前記出口コンピューティングノードに対応するノードインデックスに対応する出力をもたらすまで、前記ハッシュ関数ファミリの各ハッシュ関数を、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの各エントリに適用することを含む、請求項9記載のコンピューティングノード。
- 前記ネットワークパケットの前記フロー識別子を判別することは、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す宛先アドレスと、前記の受信されたネットワークパケットに含まれる、前記の受信されたネットワークパケットのターゲットを示す5タプルフロー識別子と、のうちの少なくとも1つを判別することを含む、請求項1記載のコンピューティングノード。
- 前記ソフトウェアクラスタスイッチの前記出口コンピューティングノードに対応する前記ノード識別子を判別することは、前記フロー識別子にマッピングされている出力ポートを有することに基づいて、転送テーブルエントリのサブセットを記憶している、前記ソフトウェアクラスタスイッチのコンピューティングノードとして識別される出口コンピューティングノードを判別することを含む、請求項1記載のコンピューティングノード。
- ソフトウェアクラスタスイッチのモジュール式転送テーブル拡張性のための方法であって、
コンピューティングノードにより、複数のバケットを含むセットマッピングテーブルを管理するステップであって、各バケットは、前記コンピューティングノードにより受信されるネットワークパケットに対応するフロー識別子を記憶する1以上のエントリを含み、各バケットは、グループに割り当てられ、各グループは、2以上のバケットを含む、ステップと、
前記コンピューティングノードにより、前記ソフトウェアクラスタスイッチの次のコンピューティングノードのノード識別子を判別するために使用可能な複数のエントリを含むグローバル分割テーブル(GPT)を管理するステップと、
前記コンピューティングノードにより、ネットワークパケットを受信したことに応じて、該ネットワークパケットのフロー識別子に基づいて、該ネットワークパケットに関する前記次のコンピューティングノードを判別するために、前記GPTに対してルックアップを実行するステップであって、前記GPTに対して前記ルックアップを実行することは、(i)第1のハッシュ関数を前記フロー識別子に適用して、前記セットマッピングテーブルのグループを識別するセットマッピングインデックスを生成し、(ii)前記セットマッピングインデックスを前記GPTと比較して、第2のハッシュ関数を判別することを含む、ステップと、
前記第2のハッシュ関数を前記フロー識別子に適用して、前記次のコンピューティングノードを識別するノード識別子を生成するステップであって、前記次のコンピューティングノードは、間接コンピューティングノード又は出口コンピューティングノードの一方を含む、ステップと、
前記コンピューティングノードにより、前記ネットワークパケットを前記次のコンピューティングノードに送信するステップと、
を含む方法。 - 前記コンピューティングノードにより、別のコンピューティングノードからネットワークパケットを受信するステップと、
前記コンピューティングノードにより、前記別のコンピューティングノードからの前記ネットワークパケットが、前記別のコンピューティングノードが入口コンピューティングノード又は間接ノードの一方であるというインジケーションを含むかどうかを判定するステップと、
をさらに含む、請求項13記載の方法。 - 前記コンピューティングノードにより、前記別のコンピューティングノードが間接ノードであるという判定に応じて、前記コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行するステップであって、前記転送テーブルの前記ローカル部分は、前記コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、ステップ
をさらに含む、請求項14記載の方法。 - 前記コンピューティングノードにより、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功したという判定に応じて、前記出力ポートを介して、前記ネットワークパケットをターゲットコンピューティングデバイスに送信するステップ
をさらに含む、請求項15記載の方法。 - 前記コンピューティングノードにより、別のコンピューティングノードが出口ノードであるという判定に応じて、前記コンピューティングノードの出力ポートを判別するために、転送テーブルのローカル部分において前記フロー識別子のルックアップを実行するステップであって、前記転送テーブルの前記ローカル部分は、前記コンピューティングノードの出力ポートに基づく、転送テーブルエントリのサブセットを含む、ステップと、
前記コンピューティングノードにより、前記転送テーブルの前記ローカル部分における前記フロー識別子の前記ルックアップが成功しなかったという判定に応じて、前記出口コンピューティングノードを判別するために、ルーティングテーブルにおいて前記フロー識別子のルックアップを実行するステップであって、前記ルーティングテーブルは、前記フロー識別子に関する前記出口コンピューティングノードを識別する、ステップと、
前記ネットワークパケットを前記出口コンピューティングノードに送信するステップと、
をさらに含む、請求項13記載の方法。 - 前記セットマッピングインデックスを前記GPTと比較して、前記第2のハッシュ関数を判別することは、(i)前記セットマッピングインデックスに応じて、前記GPTの前記エントリに対してルックアップを実行し、(ii)該ルックアップの結果として、ハッシュ関数ファミリのうちのハッシュ関数を識別するハッシュ関数インデックスを取得することを含み、前記ハッシュ関数ファミリは、複数のハッシュ関数を含む、請求項13記載の方法。
- 前記ネットワークパケットの前記フロー識別子を、前記コンピューティングノードのルーティングテーブルに追加するリクエストを受信するステップと、
前記リクエストを受信したことに応じて、前記フロー識別子を、前記コンピューティングノードの前記ルーティングテーブルに追加するステップと、
ハッシュ関数を前記フロー識別子に適用して、前記フロー識別子を記憶するための、前記セットマッピングテーブルのバケットを識別するステップと、
前記フロー識別子を、該バケット内のエントリに追加するステップと、
グループを該エントリに割り当てるステップと、
前記GPT内の該エントリに割り当てられた前記グループに対応する前記ハッシュ関数インデックスをアップデートするステップと、
をさらに含む、請求項18記載の方法。 - 前記ソフトウェアクラスタスイッチの他のコンピューティングノードに対してアップデート通知をブロードキャストするステップ
をさらに含み、
前記アップデート通知は、前記GPTに対する前記アップデートのインジケーションを提供する、請求項19記載の方法。 - 前記ハッシュ関数インデックスをアップデートすることは、前記ハッシュ関数ファミリから、前記ネットワークパケットに関する前記出口コンピューティングノードのノードインデックスに対応する出力をもたらすハッシュ関数を識別することを含む、請求項19記載の方法。
- 前記ハッシュ関数ファミリから前記ハッシュ関数を識別することは、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの前記エントリの各々について、適用されたハッシュ関数が、前記出口コンピューティングノードに対応するノードインデックスに対応する出力をもたらすまで、前記ハッシュ関数ファミリの各ハッシュ関数を、前記フロー識別子と同じグループに割り当てられた、前記セットマッピングテーブルの各エントリに適用することを含む、請求項21記載の方法。
- 前記ソフトウェアクラスタスイッチの前記出口コンピューティングノードに対応する前記ノード識別子を判別することは、前記フロー識別子にマッピングされている出力ポートを有することに基づいて、転送テーブルエントリのサブセットを記憶している、前記ソフトウェアクラスタスイッチのコンピューティングノードとして識別される出口コンピューティングノードを判別することを含む、請求項13記載の方法。
- コンピューティングノードであって、
プロセッサと、
複数の命令を記憶しているメモリであって、前記複数の命令は、前記プロセッサにより実行されたときに、当該コンピューティングノードに、請求項13乃至23いずれか一項記載の方法を実行させる、メモリと、
を備えたコンピューティングノード。 - 請求項13乃至23いずれか一項記載の方法をコンピューティングノードに実行させるプログラム。
- 請求項25記載のプログラムを記憶したマシン読み取り可能な記憶媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562115517P | 2015-02-12 | 2015-02-12 | |
US62/115,517 | 2015-02-12 | ||
US14/750,918 US20160241474A1 (en) | 2015-02-12 | 2015-06-25 | Technologies for modular forwarding table scalability |
US14/750,918 | 2015-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016149757A true JP2016149757A (ja) | 2016-08-18 |
Family
ID=55236168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016002486A Pending JP2016149757A (ja) | 2015-02-12 | 2016-01-08 | モジュール式転送テーブル拡張性のための技術 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160241474A1 (ja) |
EP (1) | EP3057270A1 (ja) |
JP (1) | JP2016149757A (ja) |
KR (1) | KR20160099473A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023233509A1 (ja) * | 2022-05-31 | 2023-12-07 | 日本電信電話株式会社 | パケット処理システム |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9935831B1 (en) * | 2014-06-03 | 2018-04-03 | Big Switch Networks, Inc. | Systems and methods for controlling network switches using a switch modeling interface at a controller |
US9529531B2 (en) | 2014-10-06 | 2016-12-27 | Barefoot Networks, Inc. | Proxy hash table |
US10069646B2 (en) | 2015-12-02 | 2018-09-04 | Nicira, Inc. | Distribution of tunnel endpoint mapping information |
US10719341B2 (en) | 2015-12-02 | 2020-07-21 | Nicira, Inc. | Learning of tunnel endpoint selections |
US9912616B2 (en) * | 2015-12-02 | 2018-03-06 | Nicira, Inc. | Grouping tunnel endpoints of a bridge cluster |
US10164885B2 (en) | 2015-12-02 | 2018-12-25 | Nicira, Inc. | Load balancing over multiple tunnel endpoints |
US10462059B2 (en) | 2016-10-19 | 2019-10-29 | Intel Corporation | Hash table entries insertion method and apparatus using virtual buckets |
US10394784B2 (en) | 2016-12-22 | 2019-08-27 | Intel Corporation | Technologies for management of lookup tables |
JP6838455B2 (ja) * | 2017-03-24 | 2021-03-03 | 住友電気工業株式会社 | スイッチ装置、通信制御方法および通信制御プログラム |
US10158573B1 (en) * | 2017-05-01 | 2018-12-18 | Barefoot Networks, Inc. | Forwarding element with a data plane load balancer |
US10833881B1 (en) * | 2017-11-06 | 2020-11-10 | Amazon Technologies, Inc. | Distributing publication messages to devices |
US10560375B2 (en) * | 2018-05-28 | 2020-02-11 | Vmware, Inc. | Packet flow information invalidation in software-defined networking (SDN) environments |
CN108829351B (zh) * | 2018-06-04 | 2021-10-12 | 成都傲梅科技有限公司 | 一种mbr磁盘转gpt磁盘的方法 |
US11042416B2 (en) * | 2019-03-06 | 2021-06-22 | Google Llc | Reconfigurable computing pods using optical networks |
US10892991B2 (en) | 2019-03-06 | 2021-01-12 | Arista Networks, Inc. | Resilient hashing with multiple hashes |
US10917346B2 (en) * | 2019-03-06 | 2021-02-09 | Arista Networks, Inc. | Resilient hashing with compression |
EP3942749A4 (en) * | 2019-05-23 | 2023-06-07 | Hewlett Packard Enterprise Development LP | OPTIMIZED ADAPTIVE ROUTING TO REDUCE THE NUMBER OF JUMPS |
US11223561B2 (en) * | 2020-04-24 | 2022-01-11 | Google Llc | Method to mitigate hash correlation in multi-path networks |
US11218407B2 (en) * | 2020-04-28 | 2022-01-04 | Ciena Corporation | Populating capacity-limited forwarding tables in routers to maintain loop-free routing |
US11757773B2 (en) * | 2020-12-30 | 2023-09-12 | Oracle International Corporation | Layer-2 networking storm control in a virtualized cloud environment |
US11743191B1 (en) | 2022-07-25 | 2023-08-29 | Vmware, Inc. | Load balancing over tunnel endpoint groups |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009147710A (ja) * | 2007-12-14 | 2009-07-02 | Alaxala Networks Corp | ネットワーク中継システム、ネットワーク中継システムの制御方法、および、ネットワーク中継システムにおける管理装置 |
JP2011259007A (ja) * | 2010-06-04 | 2011-12-22 | Alaxala Networks Corp | ロードバランス機能を備えたパケット転送方法およびパケット転送装置 |
US20140064092A1 (en) * | 2012-08-29 | 2014-03-06 | International Business Machines Corporation | Sliced routing table management with replication |
WO2014074542A1 (en) * | 2012-11-12 | 2014-05-15 | Alcatel Lucent | Virtual chassis system control protocols |
US8854972B1 (en) * | 2013-01-25 | 2014-10-07 | Palo Alto Networks, Inc. | Security device implementing flow lookup scheme for improved performance |
WO2014194423A1 (en) * | 2013-06-07 | 2014-12-11 | Alcatel Lucent | Method and apparatus for providing software defined network flow distribution |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6674720B1 (en) * | 1999-09-29 | 2004-01-06 | Silicon Graphics, Inc. | Age-based network arbitration system and method |
US7443841B2 (en) * | 2002-10-30 | 2008-10-28 | Nortel Networks Limited | Longest prefix matching (LPM) using a fixed comparison hash table |
US7356033B2 (en) * | 2002-11-21 | 2008-04-08 | Lucent Technologies Inc. | Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures |
CN101667958B (zh) * | 2008-09-01 | 2012-08-29 | 华为技术有限公司 | 选择哈希函数的方法、存储及查找路由表的方法及装置 |
US9009165B2 (en) * | 2013-01-10 | 2015-04-14 | Telefonaktiebolaget L M Ericsson (Publ) | High performance hash-based lookup for packet processing in a communication network |
US9485183B2 (en) * | 2014-04-25 | 2016-11-01 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for efectuating packet distribution among servers in a network |
-
2015
- 2015-06-25 US US14/750,918 patent/US20160241474A1/en not_active Abandoned
-
2016
- 2016-01-08 KR KR1020160002758A patent/KR20160099473A/ko active IP Right Grant
- 2016-01-08 JP JP2016002486A patent/JP2016149757A/ja active Pending
- 2016-01-12 EP EP16150936.9A patent/EP3057270A1/en not_active Withdrawn
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009147710A (ja) * | 2007-12-14 | 2009-07-02 | Alaxala Networks Corp | ネットワーク中継システム、ネットワーク中継システムの制御方法、および、ネットワーク中継システムにおける管理装置 |
JP2011259007A (ja) * | 2010-06-04 | 2011-12-22 | Alaxala Networks Corp | ロードバランス機能を備えたパケット転送方法およびパケット転送装置 |
US20140064092A1 (en) * | 2012-08-29 | 2014-03-06 | International Business Machines Corporation | Sliced routing table management with replication |
WO2014074542A1 (en) * | 2012-11-12 | 2014-05-15 | Alcatel Lucent | Virtual chassis system control protocols |
US8854972B1 (en) * | 2013-01-25 | 2014-10-07 | Palo Alto Networks, Inc. | Security device implementing flow lookup scheme for improved performance |
WO2014194423A1 (en) * | 2013-06-07 | 2014-12-11 | Alcatel Lucent | Method and apparatus for providing software defined network flow distribution |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023233509A1 (ja) * | 2022-05-31 | 2023-12-07 | 日本電信電話株式会社 | パケット処理システム |
Also Published As
Publication number | Publication date |
---|---|
KR20160099473A (ko) | 2016-08-22 |
US20160241474A1 (en) | 2016-08-18 |
EP3057270A1 (en) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016149757A (ja) | モジュール式転送テーブル拡張性のための技術 | |
KR102162730B1 (ko) | 분산형 라우팅 테이블 탐색 기술 | |
US9215172B2 (en) | Hashing-based routing table management | |
US9143441B2 (en) | Sliced routing table management | |
US8792494B2 (en) | Facilitating insertion of device MAC addresses into a forwarding database | |
US9246802B2 (en) | Management of routing tables shared by logical switch partitions in a distributed network switch | |
US10394784B2 (en) | Technologies for management of lookup tables | |
US8817796B2 (en) | Cached routing table management | |
WO2017113300A1 (zh) | 路由确定方法、网络配置方法以及相关装置 | |
US11755482B2 (en) | Network entities and methods performed therein for handling cache coherency | |
CN111147372B (zh) | 下行报文发送、转发方法和装置 | |
WO2017190559A1 (zh) | 路由查找方法、装置、分配节点、查找节点及入口节点 | |
CN108092896B (zh) | 堆叠系统和聚合组建立装置 | |
US20150381775A1 (en) | Communication system, communication method, control apparatus, control apparatus control method, and program | |
US8855015B2 (en) | Techniques for generic pruning in a trill network | |
CN107094114A (zh) | 用于模块化转发表可缩放性的技术 | |
JP2016103697A (ja) | ネットワークシステム、制御装置、通信装置、通信装置の制御方法及びプログラム | |
US12032481B2 (en) | Network entities and methods performed therein for handling cache coherency | |
EP3217610A1 (en) | Network communication method and device, and internet system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170117 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20170405 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170926 |