JP6064291B2 - ネットワークデバイスのフロールックアップ管理のための技術 - Google Patents
ネットワークデバイスのフロールックアップ管理のための技術 Download PDFInfo
- Publication number
- JP6064291B2 JP6064291B2 JP2015215863A JP2015215863A JP6064291B2 JP 6064291 B2 JP6064291 B2 JP 6064291B2 JP 2015215863 A JP2015215863 A JP 2015215863A JP 2015215863 A JP2015215863 A JP 2015215863A JP 6064291 B2 JP6064291 B2 JP 6064291B2
- Authority
- JP
- Japan
- Prior art keywords
- network
- flow hash
- level
- flow
- hash
- 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.)
- Expired - Fee Related
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/38—Flow based routing
-
- 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/26—Route discovery packet
-
- 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/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
現代のコンピューティングデバイスは、パーソナル、ビジネス及びソーシャル利用のためのユビキタスツールとなっている。そのようなものとして、多くの現代のコンピューティングデバイスは、インターネット及び企業のイントラネットを含む、様々なデータネットワークに接続して、そのようなネットワークを介してデータ通信を取得し、及び、送信/受信することが可能である。複数のコンピューティングデバイス間の通信を容易にするために、ネットワークは、一般的に、一方のコンピューティングデバイスから他方へ通信をルーティングするべく、1又は複数のネットワークデバイス(例えば、ネットワークスイッチ、ネットワークルータ等)を含む。
SDN(Software‐defined networking)は、ネットワーク上の通信を容易にするために用いられるネットワーキングアーキテクチャ(すなわち、ネットワークパケットのフロー)のようなものである。ソフトウェアディファインドネットワーク(software−defined network)において、外部に位置付けられるSDNコントローラは、ネットワークスイッチング/ルーティングデバイスに接続され、ネットワークのネットワークパケットのためのネットワークトラフィックフローロジックの決定を行い、タスクは、ネットワークデバイスレベルで伝統的に実行されていた。そのようなものとして、ネットワークデバイスの専用ネットワークプロセッサで事前に実行されるネットワークパケット処理(例えば、ネットワークトラフィックフローロジック)は、ここで、汎用プロセッサで処理される可能性があり、それによって、ソフトウェアディファインドネットワークに配置されるネットワークデバイスにとって必要なハードウェアコンポーネントの複雑性を低減し、ハードウェアリリースサイクルとは別の新しいソフトウェアベースの機能の配置を実現する。更に、ソフトウェアディファインドネットワークは、ネットワークインフラストラクチャを従来のネットワークより大きい規模にすることを可能にし、ネットワークの各ネットワークデバイスにより管理されるべきネットワークトラフィックフローロジックに関するデータの増加をもたらし得る。ネットワーク機能仮想化(NFV)は、従来のサーバ仮想化技術(例えば、仮想マシン又はVM)を用いてネットワークデバイス機能を仮想化するための他のネットワークアーキテクチャコンセプトであり、それによって、汎用プロセッサ上でネットワークトラフィックの処理を実現する。NFV及びSDNインフラストラクチャが組み合わせられたとき、ネットワークは、サイズを更に大きくすることができ、そのことによって、ネットワークの各ネットワークデバイスにより管理されるべきネットワークトラフィックフローロジックのボリュームが更に増加する。
本明細書で説明される複数の概念は、例示として示されるものであり、添付の複数の図において限定として示されるものではない。図示を簡潔及び明瞭にするため、図面に示される要素は、必ずしも縮尺通りに描かれていない。適切であると考えられる場合、複数の参照符号は、対応する又は類似の複数の要素を示すために、複数の図面間で繰り返される。
通信をルーティングするためのシステムの少なくとも1つの実施形態の簡略化されたブロック図である。
オンダイキャッシュのプロセッサを含む図1のネットワークデバイスの少なくとも1つの実施形態の簡略化されたブロック図である。
図2のネットワークデバイスのマルチレベルハッシュテーブルの構成の少なくとも1つの実施形態の簡略化されたブロック図である。
図2のネットワークデバイスのマルチレベルハッシュテーブルの構成の他の実施形態の簡略化されたブロック図である。
図2のネットワークデバイスの環境の少なくとも1つの実施形態の簡略化されたブロック図である。
図1のシステムのソフトウェアディファインドネットワークアーキテクチャの少なくとも1つの実施形態の簡略化されたブロック図である。
図2のネットワークデバイスのキャッシュエビクションポリシーを管理するための方法の少なくとも1つの実施形態の簡略化されたフロー図である。
図1のシステムのフローポリシー情報を受信するための方法の少なくとも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は、ネットワーク制御デバイス110に接続されるリモートコンピューティングデバイス102及びネットワークインフラストラクチャ120を含む。ネットワーク制御デバイス110及びネットワークインフラストラクチャ120の各々は、SDN(software−defined networking)アーキテクチャ及び/又はネットワーク機能仮想化(NFV)アーキテクチャにおいて動作することが可能である。ネットワークインフラストラクチャ120は、ネットワーク通信経路124を介したリモートコンピューティングデバイス102及びコンピューティングデバイス130間のネットワークパケットの送信を容易にするための少なくとも1つのネットワークデバイス122を含み、少なくとも1つのネットワークデバイス122は、例示的に122a〜122hとして表され、本明細書でネットワークデバイス122と総称される。
使用において、以下で更に詳細に説明されるように、ネットワークデバイス122は、リモートコンピューティングデバイス102からネットワークパケットを受信し、ネットワークデバイス122に格納されるポリシーに基づいてネットワークパケットを処理し、ネットワークパケットを伝送路内の次のコンピューティングデバイス(例えば、他のネットワークデバイス122、コンピューティングデバイス130、リモートコンピューティングデバイス102等)に転送する。どのコンピューティングデバイスが伝送路内の次のコンピューティングデバイスであるかを知るために、ネットワークデバイス122は、ルックアップ動作を実行してネットワークフローを決定する。ルックアップ動作は、ネットワークパケットの一部でハッシュを実行し、結果を利用して、フロールックアップテーブル(すなわち、ネットワークフローの次の宛先にマッピングするハッシュテーブル)に対してチェックする。
一般的に、ネットワークフローがネットワークデバイス122のメモリに格納される一方、フロールックアップテーブルは、ルックアップ動作のレイテンシーを減らすべく、プロセッサ上のキャッシュに格納される。しかしながら、フロールックアップテーブルは、非常に大きくなる可能性があり、プロセッサ上のキャッシュ内で利用可能なスペースより大きくなる。このように、フロールックアップテーブルの一部(すなわち、ネットワークフローハッシュエントリーに対応するキャッシュライン)は、ネットワークデバイス122のメモリへ追い出され、このことにより、ルックアップ動作にレイテンシーがもたらされる。更に、いずれのキャッシュ追い出しアルゴリズムがネットワークデバイス122により採用されるかに基づいて、ネットワークデバイスにより、どのキャッシュラインがメモリに追い出されるかが制御される。しかしながら、マルチレベルフローハッシュテーブルにおいて、他のレベルのマルチレベルフローハッシュテーブルが、ネットワークデバイス122のメモリに格納され得る一方、特定のレベルのマルチレベルフローハッシュテーブルは、ネットワークデバイス122のプロセッサ上のキャッシュに格納され得る。例えば、以下で更に詳細に説明されるように、マルチレベルフローハッシュテーブルは、プロセッサ上のキャッシュに格納される、より高い優先度レベルのハッシュを格納する第1レベルフローハッシュテーブルと、メインメモリに格納される、より低い優先度レベルのハッシュを格納する第2レベルフローハッシュテーブルとを含んでよい。そのような実施形態において、ルックアップ動作に起因する全体的なレイテンシーは、特定に、高優先度を有するものとしてネットワークデバイス122に識別されたこれらネットワークフローハッシュに関して低減され得る。
ネットワークインフラストラクチャ120は、セルラーネットワーク(例えば、移動通信用グローバルシステム(GSM(登録商標))、デジタル加入者線(DSL)ネットワーク、ケーブルネットワーク、電話網、ローカル若しくはワイドエリアネットワーク、グローバルネットワーク(例えば、インターネット)又はそれらの任意の組み合わせを含む任意のタイプの有線又は無線通信ネットワークとして具現化され得る。更に、ネットワークインフラストラクチャ120は、各デバイス間の通信を容易にするために必要な任意の数の追加のデバイスを含んでよい。
使用において、ネットワークパケットは、ネットワークフロー又はパケットフローに基づいてネットワークデバイス122を相互接続するネットワーク通信経路124に沿って、リモートコンピューティングデバイス102とコンピューティングデバイス130との間で伝送される。ネットワークフローは、ソースから宛先へのパケットのセット又はシーケンスを表す。概して、パケットのセットは、共通の属性を共有する。ネットワークフローは、受信したネットワークパケットを処理した後、どこに(すなわち、ネットワーク通信経路124に沿って)送信するかを示すべく、各ネットワークデバイス122により用いられる。例えば、ネットワークフローは、例えば、特定のネットワークフローに対応するフロー識別子及びフロータプル(例えば、発信元IPアドレス、発信元ポート番号、宛先IPアドレス、宛先ポート番号及びプロトコル)のような情報を含んでよい。ネットワークフロー情報は、特定のネットワークフローに対応する情報の任意の他のタイプ又は組み合わせを含み得ることが理解されるべきである。
ネットワーク通信経路124は、各デバイス間の通信を容易にすることが可能な任意のタイプの有線又は無線信号経路として具現化され得る。例えば、ネットワーク通信経路は、任意の数のワイヤ、プリント回路基板トレース、ビアバス、ポイントツーポイント相互接続、介在デバイス等として具現化され得る。任意の適切な通信プロトコル(例えば、TCP/IP)は、例えば、リモートコンピューティングデバイス102、コンピューティングデバイス130及びネットワークデバイス122の特定のタイプ又は構成に応じて、ネットワーク通信経路124に沿うネットワークパケットの伝送を実現するために用いられてよい。ネットワークデバイス122は、ルータ、スイッチ等のような、リモートコンピューティングデバイス102とコンピューティングデバイス130との間の通信を容易にすることが可能な任意のタイプのデバイスとして具現化され得る。いくつかの実施形態において、NFVアーキテクチャに示すように、ネットワークデバイス122の1又は複数は、ソフトウェアにネットワークデバイス122の物理ネットワーク機能を実装するべく、1又は複数の仮想マシン(VM)を実行してよい。言い換えれば、ネットワークデバイス122により実行されるいくつかの機能は、仮想化されてよい。
ネットワーク通信経路124の例示的な配置は、ネットワークパケットのネットワークインフラストラクチャ120内での移動には複数のオプション(すなわち、ルート)があることを示すことを意図される旨が理解されるべきであり、例示的なネットワークインフラストラクチャ120の限定として解釈されるべきではない。例えば、ネットワークデバイス122aからネットワークデバイス122eへ移動するネットワークパケットは、ネットワークデバイス122aからネットワークデバイス122eへ直接的にネットワークフローを割り振られてよい。他の例において、ネットワークデバイス122aとネットワークデバイス122eとの間のネットワーク通信経路124上のクオリティオブサービス(QoS)が貧弱であるなど特定の条件下で、当該同一のネットワークパケットは、ネットワークデバイス122aにネットワークパケットをネットワークデバイス122bへ伝送することを命令するネットワークフローを割り振られてよく、次に、ネットワークデバイス122bにネットワークデバイス122eへネットワークパケットを更に伝送することを命令するネットワークフローを割り振られてよい。
ネットワークパケット管理情報(例えば、ネットワークフロー、ネットワークパケットタイプに対応するポリシー等)は、ネットワークアプリケーション114により管理され、ネットワーク制御デバイス110上で実行されているネットワークコントローラ112に提供される。ネットワークアプリケーション114がネットワークパケット管理情報を効果的に管理するために、ネットワークコントローラ112は、ネットワークインフラストラクチャ120の要約をネットワークアプリケーション114に提供する。いくつかの実施形態において、ネットワークコントローラ112は、複数の利用可能なネットワークフローに対応するQoS又は特定のワークロードタイプのネットワークパケットに関連付けられたポリシーに基づいてネットワークパケット管理情報を更新してよい。例えば、コンピューティングデバイス130は、リモートコンピューティングデバイス102がコンピューティングデバイス130で再生するためのビデオストリームを提供することをリクエストするリモートコンピューティングデバイス102にリクエストを送信してよい。リモートコンピューティングデバイス102は、リクエストを受信した後、次に、リクエストを処理し、リクエストされたビデオストリームのコンテンツに対応するデータ(すなわち、ペイロードデータ、オーバヘッドデータ等)を含むネットワークパケットをネットワークデバイス122の1つに提供する。受信側ネットワークデバイス122において、受信したネットワークパケットは、処理されるネットワークパケットを送信するためにターゲットデバイスの識別情報を用いて、処理されるネットワークパケットのヘッダを更新する前に処理される。受信したネットワークデバイス122は、次に、ターゲットデバイスに処理されたネットワークパケットを、ネットワークコントローラ112により提供されるネットワークフローに従って送信する。ターゲットデバイスは、受信したネットワークデバイス122がネットワークインフラストラクチャ120内のどこに存在するかに応じて、リクエストを開始した他のネットワークデバイス122又はコンピューティングデバイス130であってよい。
特定のネットワークインフラストラクチャ120(すなわち、数万又はそれより多いネットワークデバイス122を含むデータセンタ)は、ネットワークコントローラ112により提供されるネットワークフローの数量が膨大過ぎ得るのでネットワークデバイス122のストレージの優先度レベルに格納できないというような十分に多い数のネットワークデバイス122を含み得る。更に、より小さなネットワークインフラストラクチャ120であっても、各ネットワークデバイス122は、複数の仮想マシン(VM)をホストしてよく、更に、ネットワークインフラストラクチャ120を通じてネットワークパケットを伝達するための可能なネットワークフローの量を増加させる。
ネットワークパケットがネットワークデバイス122で受信されたとき、ルックアップ動作は、ネットワークデバイス122により実行され、受信したネットワークパケットに対応するネットワークフローを決定する。(複数の)コンピューティングデバイス130のユーザは、ネットワークインフラストラクチャ120を介してアプリケーションとインタフェースで接続するとき、リアルタイムに近い応答性を予期する。例えば、ネットワークレイテンシー(すなわち、一方の場所から他方へ到着するネットワークパケットの時間)は、フォームをロードする、ビデオをバッファする等についての待ち時間の形式でユーザにより容易に認識できる。このように、各ネットワークデバイス122は、各ネットワークパケットを処理して、処理動作に起因するレイテンシーを効率的に取り除く又は減らすべきである。例えば、ネットワークデバイス122の可能なストレージの各増分的(incrementally)に低いレベルは、本来、各レベルがアクセスされると、増加したレイテンシーに苦しむ。ネットワークデバイス122が、(例えば、ワークロードタイプ、ペイロードタイプ、ネットワークプロトコル等)特定のネットワークパケットタイプに関連付けられるネットワークフローのための複数の位置をチェックしなければならない場合、そのような増加したレイテンシーがもたらされ、応答時間が悪化される。したがって、ネットワークデバイス122の(複数の)優先位置におけるネットワークデバイス122により容易にアクセス可能な特定のネットワークフローを保持することは、ネットワークフローアクセスに起因するレイテンシーをもたらす可能性を減らす。
リモートコンピューティングデバイス102は、コンテンツを格納し、ネットワーク制御デバイス110及びネットワークインフラストラクチャ120と通信することが可能な任意のタイプの記憶デバイスとして具現化され得る。いくつかの実施形態において、リモートコンピューティングデバイス102は、コンピュータ、マルチプロセッサシステム、サーバ、コンピューティングサーバ(例えば、データベースサーバ、アプリケーションサーバ、ウェブサーバ等)、ラックマウントサーバ、ブレードサーバ、ラップトップコンピュータ、ノートブックコンピュータネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、プロセッサベースシステム及び/又はネットワークアタッチドストレージ(NAS)デバイスを含むが、これらに限定されない、本明細書で説明される機能を実行することが可能な任意のタイプの計算又はコンピュータデバイスとして具現化され得る。リモートコンピューティングデバイス102は、(複数の)プロセッサ、メモリ、I/Oサブシステム、通信回路及び/又は周辺デバイスのような、そのようなデバイスに一般的に見られる任意のタイプのコンポーネントを含み得る。システム100は、1つのリモートコンピューティングデバイス102を有することが例示的に示される一方、1より多いリモートコンピューティングデバイス102を含むネットワークが、本明細書で考えられることが理解されるべきである。いくつかの実施形態において、リモートコンピューティングデバイス102は、リモートアプリケーション106により検索可能なデータを格納することが可能な1又は複数のデータベース(不図示)を更に含んでよい。
例示的なリモートコンピューティングデバイス102は、リモートアプリケーション106を含む。リモートアプリケーション106は、ネットワークインフラストラクチャ120のネットワークデバイス122を介してコンピューティングデバイス130にデータを送信し及び受信することが可能な任意のタイプのアプリケーションとして具現化され得る。いくつかの実施形態において、リモートアプリケーション106は、ウェブアプリケーション(すなわち、シンクライアント)、プライベート、パブリック又はハイブリッドクラウドのクラウドベースのアプリケーション(すなわち、シンアプリケーション)として具現化され得る。更に、いくつかの実施形態において、ネットワークコントローラ112により提供されるネットワークフロー優先度は、リモートアプリケーション106からネットワークコントローラ112により受信された情報に基づいてよい。言い換えれば、リモートアプリケーション106は、リモートアプリケーション106から特定のネットワークパケットタイプに割り振られるネットワークフロー優先度のネットワークコントローラ112に情報を提供してよい。例えば、リモートアプリケーション106によりネットワークデバイス122へ送信されるストリーミングネットワークフロー又はリアルタイムネットワークフローは、他のネットワークフローと比較して、ストリーミングネットワークフローのフロー優先度が高優先度ネットワークフローであることをネットワークデバイス122に示すようにネットワークコントローラ112に命令してよい。
例示的なシステム100は、単一のリモートアプリケーション106を含む一方、1より多いリモートアプリケーション106がリモートコンピューティングデバイス102上で実行され又は利用可能であり得ることが理解されるべきである。特定の実施形態において、分散型のコンピューティング環境などにおいて、リモートコンピューティングデバイス102の1又は複数にわたって実行する同一タイプのリモートアプリケーション106の1より多い例を1より多いリモートコンピューティングデバイス102が有し得ることが更に理解されるべきである。
ネットワーク制御デバイス110は、ネットワークコントローラ112を実行し、リモートコンピューティングデバイス102とネットワークインフラストラクチャ120との間の通信を容易にし、本明細書で説明される機能を実行することが可能な任意のタイプのコンピューティングデバイスとして具現化され得る。例えば、ネットワーク制御デバイス110は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピューティングデバイス、民生用電子機器、モバイルコンピューティングデバイス、携帯電話、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマートアプライアンス及び/又は他のタイプのコンピューティング若しくはネットワーキングデバイスとして具現化されてよく、そうでなければ含む。このように、ネットワーク制御デバイス110は、説明の明確化を目的として図1では示されていない、プロセッサ、メモリデバイス、通信回路及びデータストレージのようなネットワーク制御デバイス又は同様のコンピューティングデバイスによく見られる複数のデバイス及び複数の構造を含み得る。
ネットワークコントローラ112は、ネットワークインフラストラクチャ120のネットワークフローを制御することが可能な任意のタイプのハードウェア、ソフトウェア及び/又はファームウェアとして具現化され、そうでなければ含む。例えば、例示的な実施形態では、ネットワークコントローラ112は、SDN(software−defined networking)環境(すなわち、SDNコントローラ)及び/又はネットワーク機能仮想化(NFV)環境(すなわち、NFVマネージャ及びネットワークオーケストレータ(manager and network orchestrator(MANO))で動作することが可能である。このように、ネットワークコントローラ112は、SDN環境及び/又はNFV環境で動作することが可能なネットワークデバイス122へネットワークフロー情報を送信(例えば、伝送等)し得る。SDNアーキテクチャにおいて、SDNネットワークコントローラは、遠隔地からネットワークデバイス122の構成を管理する抽象化された制御プレーンを提供する集中ネットワーク管理アプリケーションとしての役割を果たす。
使用において、ネットワークコントローラ112は、以下で更に詳細に説明されるように、フローベースのポリシー及びキャッシュ管理ポリシーのような特定のポリシー情報をネットワークデバイス122に提供するように構成される。ポリシー情報は、ストリーミングワークロードのネットワークパケットのようなネットワークパケットのタイプに基づいてよい。例えば、ポリシー情報は、ネットワークデバイス122の各々のネットワークフロータイプに対応する優先度を含んでよい。前述のように、ネットワークフローの優先度は、ネットワークパケットのタイプ(例えば、ワークロードタイプ、ペイロードタイプ、ネットワークプロトコル等)に基づいてよい。ネットワークコントローラ112からネットワークデバイス122の各々により受信されるネットワークフロー優先度は、ネットワークフロー情報をどこ(すなわち、メモリ208又はキャッシュ204)に格納するかを決定するときに用いるネットワークデバイス122のための命令を含む。
ネットワークアプリケーション114は、一般的に、SDNネットワーク内でビジネスアプリケーションと称され、ネットワークインフラストラクチャ120を通じてネットワークパケットの処理及びフローを動的に制御することが可能な任意のタイプのネットワークアプリケーションとして具現化され得る。例えば、ネットワークアプリケーション114は、ネットワーク仮想化アプリケーション、ファイアウォール監視アプリケーション、ユーザ識別管理アプリケーション、アクセスポリシー制御アプリケーション及び/又はそれらの組み合わせとして具現化され得る。ネットワークアプリケーション114は、ネットワークコントローラ112をインタフェースと接続し、ネットワークコントローラ112に転送されるパケットを受信し、ネットワークデバイス122に提供されるネットワークフローを管理するように構成される。
使用において、ネットワークアプリケーション114は、ネットワークインフラストラクチャ120のトポロジーの要約モデルを受信し、ネットワークインフラストラクチャ120のネットワークデバイス122の挙動を適合させる。例えば、適合される挙動は、ネットワークフローの変更であってよい。いくつかの実施形態において、変更されるネットワークフローは、リモートアプリケーション106の要求に基づいてよく、リアクティブネットワークフローと一般的に称される。以下で更に詳細に説明されるように、いくつかの実施形態において、ネットワークアプリケーション114は、アプリケーションプログラミングインタフェース(API)を介してシステム100の抽象化を動作することが可能なSDNアプリケーション又は他のコンピュータソフトウェア若しくはプラットフォームであってよい。いくつかの実施形態において、例えば、ネットワークアプリケーション114がSDNアプリケーションである場合、ネットワークアプリケーション114は、仮想ファイアウォール、仮想アプリケーション配信コントローラ及び仮想ロードバランサーのようなネットワーク仮想化サービスを提供し得る。
コンピューティングデバイス130は、ネットワークデバイス122を介してリモートアプリケーション106へ/からネットワークパケットを送信及び/又は受信するように構成される。コンピューティングデバイス130は、デスクトップコンピュータ、ラップトップコンピューティングデバイス、サーバコンピュータ、民生用電子機器、モバイルコンピューティングデバイス、携帯電話、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマートアプライアンス、及び/又は他のタイプのコンピューティングデバイスを含むがこれらに限定されない、本明細書で説明されている複数の機能を実行することが可能な任意のタイプのコンピューティングデバイスとして具現化され得る、又はそうでなければそれらを含み得る。このように、コンピューティングデバイス130は、説明の明確化を目的として図1では示されていない、プロセッサ、メモリデバイス、通信回路及びデータストレージのような、コンピューティングデバイスによく見られる複数のデバイス及び複数の構造を含み得る。
ここで図2を参照すると、例示的なネットワークデバイス122は、オンダイキャッシュ204を有するプロセッサ202、メインメモリ208、入力/出力(I/O)サブシステム206、通信回路212及び1又は複数の周辺デバイス214を含む。ネットワークデバイス122は、汎用コンピューティングデバイス、ネットワークアプライアンス(例えば、物理又は仮想)、ウェブアプライアンス、ルータ、スイッチ、マルチプロセッサシステム、サーバ(例えば、スタンドアロン、ラックマウント、ブレード等)、分散コンピューティングシステム、プロセッサベースシステム、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、スマートフォン、モバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイス、民生用電子機器又は他のコンピュータデバイスを含むがこれらに限定されない、本明細書で説明される機能を実行することが可能な任意のタイプの計算又はコンピュータデバイスとして具現化され得る。
使用において、以下で更に詳細に説明されるように、ネットワークデバイス122のうちの1つがネットワークコントローラ112からネットワークフロー情報を受信したとき、ネットワークフロー情報が、一般的に、ルーティングテーブル又は転送テーブルとも称される、ネットワークフローテーブルに書き込まれる。ネットワークフローテーブルは、一般的に、ネットワークデバイス122のメモリ208(すなわち、メインメモリ)に格納される。メモリ208内のネットワークフロー情報のルックアップを実行しなければならないことに関連するレイテンシーに起因して、ネットワークフロー情報は、ネットワークデバイス122のキャッシュ204に一般的に格納されるハッシュテーブル又はハッシュルックアップテーブルに書き込まれてよい。
以下で更に詳細に説明されるように、データは、オンダイキャッシュ204又はメモリ208に格納されてよい。オンダイキャッシュ204に格納されたデータは、メモリ208からフェッチされるデータよりも少なくとも一桁速くアクセスされ得る。言い換えれば、オンダイキャッシュ204内の特定のデータを保持することは、データがメモリ208に存在した場合より速くデータにアクセスされることを可能にする。しかしながら、オンダイキャッシュ204のスペースは限られているので、ネットワークデバイス122は、どのデータをオンダイキャッシュ204に格納し、どのデータをメモリ208から追い出すかを決定する、置換ポリシー又はキャッシュアルゴリズムとも一般的に称される、キャッシュ置換アルゴリズムに概して依存する。ハッシュテーブルの各エントリーは、オンダイキャッシュ204のキャッシュラインに格納される。一般的に、キャッシュ置換アルゴリズムは、どのキャッシュラインを追い出すかを決定するネットワークデバイス122のハードウェア(例えば、プロセッサ202)に依存する。例えば、LRU(least recently used)キャッシュ置換アルゴリズムは、まず、キャッシュラインに格納されたデータの重要性に拘らず、最も長い間使用されていないキャッシュラインを追い出す。どのキャッシュラインを追い出すかを決定するハードウェア予測を用いるそのようなキャッシュ置換アルゴリズムは、エラーを起こしやすく、小さなエラーでさえ、レイテンシーを増加させ得る干渉妨害及びキャッシュ汚染をもたらし得る。いくつかの実施形態において、プロセッサ202のオンダイキャッシュ204は、マルチレベルアーキテクチャを有してよい。そのような実施形態において、オンダイキャッシュ204内のデータは、オンダイキャッシュ204の最も低いレベルから、ラストレベルキャッシュ(LCC)と一般的に称される、オンダイキャッシュ204の最も高いレベルに一般的に追い出される。データがオンダイキャッシュ204の最も高いレベル(すなわち、LLC)から追い出さたとき、データは、概して、メモリ208に書き込まれる。
プロセッサ202は、本明細書で説明される機能を実行することが可能な任意のタイプのプロセッサとして具現化され得る。例えば、プロセッサ202は、(複数の)シングル又はマルチコアプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ又は他のプロセッサ若しくは処理/制御回路として具現化され得る。メモリ208は、本明細書で説明される機能を実行することが可能な任意のタイプの揮発性若しくは非揮発性メモリ又はデータストレージとして具現化され得る。動作において、メモリ208は、ネットワークデバイス122の動作中に用いられる様々なデータ及びソフトウェアを格納し得る。メモリ208は、プロセッサ202、メモリ208及びネットワークデバイス122の他のコンポーネントと共に入力/出力処理を容易にする回路及び/又はコンポーネントとして具現化され得るI/Oサブシステム206を介してプロセッサ202に通信可能に連結される。I/Oサブシステム206は、オンダイキャッシュ204及びメモリ208へのデータの伝達を容易にするように構成される。例えば、I/Oサブシステム206は、メモリコントローラハブ、入力/出力制御ハブ、ファームウェアデバイス、通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレース等)及び/又は入力/出力動作を容易にする他のコンポーネント及びサブシステムとして具現化され得る、そうでなければ含む。いくつかの実施形態において、I/Oサブシステム206は、システムオンチップ(SoC)の一部を形成してよく、プロセッサ202、メモリ208及びネットワークデバイス122の他のコンポーネントと共に単一の集積回路チップ上に組み込まれてよい。
通信回路212は、ネットワークを介して、リモートコンピューティングデバイス102、ネットワーク制御デバイス110及び他のネットワークデバイス122間の通信を実現することが可能な任意の通信回路、デバイス又はそれらの集合として具現化され得る。通信回路212は、そのような通信を達成する任意の1又は複数の通信技術(例えば、無線又は有線通信)及び関連プロトコル(例えば、イーサネット(登録商標)、Bluetooth(登録商標)、Wi-Fi(登録商標)、WiMAX(登録商標)等)を用いるように構成され得る。いくつかの実施形態において、通信回路212は、セルラー通信回路及び/又は他の長距離無線通信回路を含む。1又は複数の周辺デバイス214は、コンピューティングデバイスでよく見られる任意のタイプの周辺デバイスを含んでよく、例えば、ハードウェアキーボード、入力/出力デバイス、周辺通信デバイス等のようなネットワークデバイスを具体的に含み得る。周辺デバイス214は、例えば、USB(登録商標)のような外部の周辺デバイスをネットワークデバイス122に接続するための1又は複数のポートを追加的又は代替的に含み得ることが本明細書に意図されている。
ここで図3を参照すると、マルチレベルハッシュテーブルを含むネットワークデバイス122の構成300の例示的な実施形態が示されている。新たな技術は、データセンタ及び通信事業者のネットワークにサイズ及び容量を継続的に増やすことを可能し、今までよりも大きいネットワークインフラストラクチャを生み出し、結果として、より多くのネットワークフローのオプションをもたらしている。更に、仮想マシン(VM)の出現は、ネットワークインフラストラクチャ120で利用可能なネットワークフローの数を更に増加させた。いくつかの実施形態において、現在の単一レベルハッシュテーブルは、ハッシュテーブルの全体がネットワークデバイス122のオンダイキャッシュ204に収まることができないほど大きくなり得る。例示的なマルチレベルハッシュテーブルは、第1レベルハッシュテーブル302及び第2レベルハッシュテーブル304を含む。いくつかの実施形態において、マルチレベルハッシュテーブルは、「第N」レベルハッシュテーブル306を更に含み、ここで「N」は、正の整数であり、第2レベルハッシュテーブル304を超えた、ハッシュテーブルの1又は複数の追加のレベルを示す。例示的な第2レベルハッシュテーブル304及び「第N」レベルハッシュテーブル306がメモリ208に存在する一方、例示的な第1レベルハッシュテーブル302は、プロセッサ202のオンダイキャッシュ204に存在する。第1レベルハッシュテーブル302及び第2レベルハッシュテーブル304から「第N」レベルハッシュテーブル306の各々は、ネットワークフローの優先度及び/又はネットワークフローのアクセス頻度に基づいてメモリ208に格納されたネットワークフローにマッピングされるハッシュエントリーを含む。更に、以下で更に詳細に説明されるように、ネットワークフローの優先度及び/又はネットワークフローのアクセス頻度が、継時的に変化するにつれて、I/Oサブシステム206は、オンダイキャッシュ204とメモリ208との間で特定のハッシュエントリーを移動させ得る。
第1レベルハッシュテーブル302のハッシュエントリーは、ネットワークコントローラ112からネットワークデバイス122に提供されるネットワークフローの優先度に基づいて、オンダイキャッシュ204にロックされ得る。例えば、リアルタイムネットワークパケットのネットワークフローは、リアルタイムに処理されることが予期されていないネットワークパケットより高い優先度を与えられ得る。他の例において、他のネットワークフローより頻繁にアクセスされる予定のネットワークフローは、より高い優先度を与えられ得る。追加的又は代替的に、第1レベルハッシュテーブル302のハッシュエントリーは、ハッシュエントリーがアクセスされる頻度に基づいてオンダイキャッシュ204をロックされ得る。例えば、ネットワークコントローラ112は、特定の優先度が、予め定められた回数(すなわち、アクセス頻度閾値)より多くアクセスされたハッシュエントリーに取って代わることをネットワークデバイス122に通知してよい。いくつかの実施形態において、アクセスカウンタは、アクセス頻度を追跡するべく、各ハッシュエントリーに対応して格納されてよい。アクセスされたハッシュエントリーに対応するアクセスカウンタは、ハッシュエントリーがアクセスされる度にインクリメントされてよい。いくつかの実施形態において、アクセスカウンタは、アクセスカウンタがインクリメントされた最後の時間を示すタイムスタンプを更に含んでよい。いくつかの実施形態において、ネットワークコントローラ112は、アクセス頻度が古くになること及びキャッシュ汚染をもたらすことを避けるべく、予め定められた時間の間にアクセスされなかったアクセスカウンタをリセットすることをネットワークデバイス122に更に通知してよい。
概して、より小さいサイズに制限されたオンダイキャッシュ204上に存在する第1レベルハッシュテーブル302は、一般的に、ハッシュテーブルの他のレベルより小さい。使用において、以下で更に詳細に説明されるように、ネットワークパケットがネットワークデバイス122により受信されたとき、ヘッダの一部は、キーフィールドを抽出するべくデコードされる。ハッシュ機能は、次に、抽出されたキーフィールドに対して実行され、ルックアップは、オンダイキャッシュ204の第1レベルハッシュテーブル302に対して実行される。ルックアップが成功(すなわち、ルックアップがオンダイキャッシュ204の第1レベルハッシュテーブル302にハッシュを発見)した場合、「ヒット」が発生し、ネットワークフローテーブル308に格納されたフローに関連付けられたデータが一般的に更新される。ルックアップが失敗だった(すなわち、ルックアップがオンダイキャッシュ204の第1レベルハッシュテーブル302にハッシュを発見しなかった)場合、「ミス」が発生する。「ヒット」が発生するまで、ネットワークデバイス122が残りの各レベルでルックアップを実行しなければならないことに起因して、「ヒット」は、「ミス」より速い(すなわち、より少ない計算サイクル)。
例示的な構成300において、第2レベルハッシュテーブル304は、メモリ208内に完全に存在し、そのようなものとして、メモリ208内のルックアップ動作が、ルックアップがオンダイキャッシュ204の第1レベルハッシュテーブル302内にハッシュを発見した場合よりも、少なくとも一桁長いI/Oレイテンシーをもたらし得る。いくつかの実施形態において、他の構成が本明細書で考えられると理解されるべきである。例えば、図4は、第2レベルハッシュテーブル304の少なくとも一部がプロセッサ202のオンダイキャッシュ204に存在するマルチレベルハッシュテーブルを含むネットワークデバイス122の構成400の例示的な実施形態を示す。いくつかの実施形態において、特定のフロー優先度は、マルチレベルハッシュテーブルのレベルの排他性に関する情報を更に含んでよい。例えば、ネットワークコントローラ112は、高優先度フローに対応するハッシュエントリーのみを含めることをネットワークデバイス122に命令するための情報を、第1レベルハッシュテーブル302に提供し、第2レベルハッシュテーブル304に提供しなくてよい。他の例において、ネットワークコントローラ112は、第1レベルハッシュテーブル302に高優先度フローに対応するハッシュエントリーのみを含めること、及び、オンダイキャッシュ204に存在する第2レベルハッシュテーブル304の一部に頻繁にアクセスされるハッシュエントリーのみを含めることをネットワークデバイス122に命令するための情報を提供してよい。更に他の例において、ネットワークコントローラ112は、第1レベルハッシュテーブル302及び第2レベルハッシュテーブル304に高優先度フローに対応するハッシュエントリー及び頻繁にアクセスされるハッシュエントリーを含めることをネットワークデバイス122に命令するための情報を提供してよい。
再び図3を参照すると、例示的な構成300は、ネットワークフローテーブル308を含む。前述のように、ネットワークフロー情報は、ネットワークフローテーブル308に書き込まれるフロー識別子及びフロータプルを一般的に含む。ネットワークフローテーブルは、特定のネットワークフローに対応する情報の任意の他のタイプ又は組み合わせを追加的又は代替的に含んでよい。ネットワークフローテーブル308は、ネットワークデバイス122のメモリ208(すなわち、メインメモリ)に一般的に格納される。他の実施形態において、第2レベルハッシュテーブル304の一部が第1レベルハッシュテーブル302より大きいサイズであってよい一方、いくつかの実施形態において、第1レベルハッシュテーブル302は、第2レベルハッシュテーブル304の一部より大きいサイズであってよいことが理解されるべきである。
ここで図5を参照すると、使用において、ネットワークデバイス122の各々は、動作中に環境500を確立する。例示的な環境500は、ネットワークフローハッシュルックアップモジュール502、ネットワークフローハッシュテーブル管理モジュール510及びネットワークパケット処理モジュール520を含む。ネットワークフローハッシュルックアップモジュール502は、ハッシュテーブル内のハッシュエントリーに対応するアクセスカウントを表すデータを含み得るフローアクセスデータ504を含む。例えば、ハッシュが、レベルに拘らず、ハッシュテーブルにアクセスされる度に、そのハッシュのためにネットワークデバイス122によるアクセスの頻度に対する履歴参照を提供するべく、当該カウンタに対応するカウンタがインクリメントされてよい。いくつかの実施形態において、アクセスの時間及び/又は最後の「ヒット」ハッシュテーブルレベルのような、追加の情報がフローアクセスデータに含まれてよい。ネットワークフローハッシュテーブル管理モジュール510は、ネットワークコントローラ112から受信されるフロー優先度データ512を含む。フロー優先度データ512は、どのネットワークフローハッシュエントリーをマルチレベルハッシュテーブルのどのレベルに置くべきかをネットワークフローハッシュテーブル管理モジュール510に示すポリシー(すなわち、命令)を含む。いくつかの実施形態において、フロー優先度データ512は、ネットワークパケットタイプに対応するキャッシュエビクションポリシーを含んでよい。
環境500の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア又はそれらの組み合わせとして具現化され得る。例えば、環境500の様々なモジュール、ロジック及び他のコンポーネントは、プロセッサ202又はネットワークデバイス122の他のハードウェアコンポーネントの一部を形成してよく、そうでなければ、それらにより確立されてよい。このように、いくつかの実施形態において、環境500のモジュールの1又は複数は、電気デバイスの回路又は集合(例えば、ネットワークフロー検索回路、ネットワークフローハッシュ管理回路、ネットワークパケット処理回路等)として具現化され得る。各ネットワークデバイス122は、説明の明確化を目的として図5に示されていない、他のコンポーネント、サブコンポーネント、モジュール及びコンピューティングデバイスでよく見られるデバイスを含み得ることが理解されるべきである。更に、ネットワークデバイス122の各々が動作中に例示的な環境500を確立し得るが、例示的な環境500の以下の説明では、説明の明確化を目的として、単一のネットワークデバイス122を具体的に参照して説明されることが理解されるべきである。
ネットワークフローハッシュルックアップモジュール502は、ネットワークデバイス122で受信したネットワークパケットに基づいて、ネットワークフローハッシュルックアップを実行するように構成される。いくつかの実施形態において、ネットワークフローハッシュルックアップモジュール502は、ネットワークパケットハッシュモジュール506及び/又はハッシュルックアップモジュール508を含んでよい。ネットワークパケットハッシュモジュール506は、ネットワークデバイス122により受信されるネットワークパケットのヘッダの一部をハッシュするように構成される。ハッシュルックアップモジュール508は、ヘッダのハッシュされた一部を用いてルックアップ動作を実行するように構成される。前述のように、ルックアップ動作は、第1レベルハッシュテーブル302で実行され、ルックアップ動作が成功したか否かに応じて、ルックアップ動作は、ネットワークフローテーブル308内のネットワークフローの位置に戻るか、又は、第2レベルハッシュテーブル304へ進むなどを行う。いくつかの実施形態において、各ハッシュエントリーは、アクセスカウンタを有してよい。ルックアップ動作が戻るとき、ネットワークフローテーブル308内を検索されたネットワークフローのハッシュエントリーに対応するアクセスカウンタがインクリメントされ得る。いくつかの実施形態において、アクセスカウンタは、ハッシュエントリーがアクセスされた最後の時間に対応するタイム値を更に含んでよい。
ネットワークフローハッシュテーブル管理モジュール510は、マルチレベルハッシュテーブル内のネットワークフローハッシュエントリーの位置を管理するように構成される。いくつかの実施形態において、ネットワークフローハッシュテーブル管理モジュール510は、ネットワークフローハッシュ格納優先度決定モジュール514及び/又はネットワークフローハッシュ格納位置強制モジュール516を含んでよい。ネットワークフローハッシュ格納優先度決定モジュール514は、コントローラ112から受信されたフロー優先度データ512に格納されたフロー優先度から、どのフロー優先度がネットワークフローテーブル308内のネットワークフローに対応するハッシュエントリーに適用されるべきかを決定するように構成される。
ネットワークフローハッシュ格納位置強制モジュール516は、フロー優先度に基づいて、ハッシュエントリーの位置(すなわち、オンダイキャッシュ204又はメモリ208)を強制するように構成される。前述のように、特定のハッシュエントリーは、これらハッシュエントリーに対応するネットワークフローのフロー優先度及び/又はアクセス頻度に基づいて、第1レベルハッシュテーブル302内にロックされ得る。キャッシュ置換アルゴリズムに依存して、ハッシュエントリーは、オンダイキャッシュ204からメモリ208へ追い出され、又は、ハッシュエントリーのアクセスパターンに基づいて、メモリ208からオンダイキャッシュ204に促される。このように、優先度フローに対応するハッシュエントリーは、オンダイキャッシュ204からメモリ208へ追い出され、レイテンシーをもたらす。ネットワークフローハッシュ格納位置強制モジュール516は、ネットワークコントローラ112から受信したフロー優先度に基づいてオンダイキャッシュ204又はメモリ208のいずれかに位置付けられるようにハッシュエントリーを強制することによりキャッシュ置換アルゴリズムのみに依存するといった欠点を克服する。
いくつかの実施形態において、キャッシュ置換アルゴリズムがLRU(least recently used)ポリシーを実装するもののように、ネットワークフローハッシュ格納位置強制モジュール516は、高優先度ハッシュエントリーに関連するキャッシュラインに定期的に「接触」するべく、別個のスレッドを生成し得る。そのような実施形態において、特定のキャッシュラインに「接触」することは、エイジビットがLRU位置に存在しないように、「接触」されたキャッシュラインが追い出されないことを保証するべくエイジビットを設定する。いくつかの実施形態において、ハードウェアロードロック命令(例えば、「loadLK」)は、ネットワークデバイス122のプロセッサ202により顕在化され得る。そのような実施形態において、ハードウェアロードロック命令は、キャッシュラインを追い出すべきか否か又はオンダイキャッシュ204にキャッシュラインをロックするべきか否かをプロセッサに示す。言い換えれば、ハードウェアロードロック命令は、キャッシュ置換アルゴリズムに取って代わるものである。オンダイキャッシュ204内のキャッシュラインでロックされたハッシュエントリーに対応するネットワークフローが終了したとき、ネットワークコントローラ112は、ネットワークフローに対応するハッシュエントリーのキャッシュラインがこれ以上オンダイキャッシュ204にロックされる必要がないという命令をネットワークデバイス122に提供してよい。いくつかの実施形態において、プロセッサ202は、ロックされたキャッシュラインを定期的にチェックし、任意のロックされたキャッシュラインが古くなる(すなわち、キャッシュラインが予め定められた期間にアクセスされなかった)か否かを決定する。いくつかの実施形態において、任意のキャッシュラインが古くなっていた場合、プロセッサ202は、キャッシュ汚染に起因する潜在的なレイテンシーを減らすべく、古くなったキャッシュラインをアンロックしてよい。更に、以下で更に詳細に説明されるように、ネットワークフローハッシュ格納位置強制モジュール516は、ネットワークフローテーブル308内のネットワークフローのハッシュエントリーに対応するアクセスカウンタを解釈してよい。ネットワークフローハッシュ格納位置強制モジュール516は、アクセスカウンタを解釈して、その現在の位置にハッシュエントリーを保持しておくか否か又はハッシュエントリーを移動するか(すなわち、オンダイキャッシュ204からメモリ208へ移動する、逆もまた然り)否かを決定する。
ネットワークパケット処理モジュール520は、他のネットワークデバイス122、リモートコンピューティングデバイス102又はコンピューティングデバイス130のようなターゲットデバイスへ、処理されるネットワークパケットを送信する前にネットワークパケットを処理するように構成される。いくつかの実施形態において、ネットワークパケット処理モジュール520は、ルーティングプロトコル検索モジュール522及び/又はパケットヘッダ更新モジュール524を含んでよい。ルーティングプロトコル検索モジュール522は、ネットワークパケットがI/Oサブシステム206からオンダイキャッシュ204で受信されることに応答してネットワークパケットを処理するべく、どのルーティングプロトコルを用いるかを決定するべく、ルックアップ動作を実行するように構成される。いくつかの実施形態において、ルックアップ動作を実行することは、ネットワークデバイス122のルックアップテーブル内のルーティングプロトコルを検索することを含み得る。パケットヘッダ更新モジュール524は、ネットワークパケットのヘッダを更新するように構成される。更新されたヘッダは、例えば、ネットワークフローハッシュルックアップモジュール502により検索された、更新されたネットワークフロー情報を含み得る。
ここで図6を参照すると、システム100により実装され得るSDNアーキテクチャ600の例示的な実施形態は、アプリケーション層602、制御層610及びインフラストラクチャ層620を含む。アプリケーション層602は、1又は複数のネットワークアプリケーション114を含んでよく、インフラストラクチャ層620は、1又は複数のネットワークデバイス122を含んでよい。SDNアーキテクチャの実施形態において、システム100は、概して、ADN(application defined networking)ネットワークである。したがって、ネットワークアプリケーション114は、ADNネットワーク内のネットワークデバイス122の挙動を制御する。そうするべく、ネットワークアプリケーション114は、それらの要求をネットワークコントローラ112へ通信し、ノースバウンドAPI604を介してネットワークコントローラ112からフィードバックを受信する。いくつかの実施形態において、要求は、リモートアプリケーション106及び/又はネットワークパケットタイプの要求に基づいてよい。ノースバウンドAPI604は、アプリケーション層602のネットワークアプリケーション114に、ネットワークパケットフロー及びポリシー情報を含む情報を通信することを可能にするべく、ネットワーク要約インタフェースを制御層610のネットワークコントローラ112に提供する。ネットワークコントローラ112で受信した情報は、ネットワークデバイス122の挙動を定義及び制御するサウスバウンドAPI612を通過する。
ここで図7を参照すると、使用において、各ネットワークデバイス122は、図3のネットワークフローテーブル308のようなネットワークフローハッシュテーブルのハッシュエントリーについてルックアップを実行するための方法700を実行してよい。方法700は、ブロック702で始まり、ここで、ネットワークデバイス122は、ネットワークパケットがソースデバイスからネットワークデバイス122において受信されたか否かを決定する。ソースデバイスは、ネットワークパケットを受信したネットワークインフラストラクチャ120内のネットワークデバイス122の位置に応じて、リモートコンピューティングデバイス102又は他のネットワークデバイス122であってよい。ネットワークパケットが受信されなかった場合、方法700は、ブロック702に戻って、ネットワークパケットの監視を継続する。ネットワークパケットがネットワークデバイス122で受信された場合、ネットワークパケットのヘッダがブロック704で処理される。ネットワークパケットのヘッダを処理することは、例えば、ネットワークパケットヘッダの少なくとも一部に対してハッシュを実行し、キーフィールドを抽出し及び/又はネットワークパケットタイプに対応するフローを決定するべくルックアップを実行することを含む任意のタイプのパケット処理を含んでよい。ブロック706において、ネットワークデバイス122は、ブロック704で生成されたネットワークパケットヘッダの一部の結果(すなわち、ハッシュ)を用いて第1レベルハッシュテーブル302でハッシュルックアップを実行する。
ブロック708において、ネットワークデバイス122は、方法700がブロック708へ進む前に実行されたハッシュルックアップが成功したか否かを決定する。ハッシュルックアップが成功した(すなわち、「ヒット」という結果になった)場合、方法700はブロック712に進む。いくつかの実施形態において、ブロック710に示すように、ネットワークデバイス122は、ブロック712に進む前に、検索されたハッシュエントリーに対応するアクセスカウンタをインクリメントされ得る。前述のように、各ハッシュエントリーに対応するアクセスカウンタは、ハッシュエントリーのアクセス頻度を追跡するべく、ネットワークデバイス122により用いられる。いくつかの実施形態において、アクセスカウンタは、アクセスカウンタがインクリメントされた最後の時間を示すタイムスタンプを更に含む。
ブロック712において、ネットワークデバイス122は、ハッシュエントリーの格納位置を更新する。特定のマルチレベルハッシュテーブル配置において、ハッシュエントリーの格納位置を更新することは、オンダイキャッシュ204からメモリ208へハッシュエントリーを追い出すこと、メモリ208からオンダイキャッシュ204へハッシュエントリーを促すこと、及び/又は、同じ格納位置でマルチレベルハッシュテーブルの異なるレベルにハッシュエントリーを移動させること(例えば、図4に示すように、オンダイキャッシュ204内に存在する第1レベルハッシュテーブル302からオンダイキャッシュ204内に同じく存在する第2レベルハッシュテーブル304の一部へハッシュエントリーを移動させる)を含んでよい。
特定の条件の下において、ブロック714に示すように、ネットワークデバイス122は、より低いレベルのハッシュテーブルへハッシュエントリーを追い出してよい。例えば、ハッシュエントリーに対応するネットワークフローが、もはやアクティブでなく、予め定められた時間内にアクセスされておらず、及び/又はより高い優先度ネットワークフローがオンダイキャッシュ204内にスペースを必要としている場合、ネットワークデバイス122は、より低いレベルのハッシュテーブルへハッシュエントリーを追い出してよい。
特定の条件の下において、ブロック716のように、ネットワークデバイス122は、より高いレベルのハッシュテーブルへハッシュエントリーを促してよい。例えば、ハッシュエントリーに対応するネットワークフローがアクティブになり、予め定められた時間にわたってアクセスの数がアクセス頻度閾値を超えており、及び/又はハッシュエントリーに対応するネットワークフローがオンダイキャッシュ204内に現在存在するハッシュエントリーより高い優先度を有している場合、ネットワークデバイス122は、より高いレベルのハッシュテーブルへハッシュエントリーを促してよい。
特定の条件の下において、ブロック718に示すように、ネットワークデバイス122は、第1レベルハッシュテーブル302内のハッシュエントリーをロックしてよい。いくつかの実施形態において、LRUキャッシュ置換アルゴリズムを実装する実施形態のように、ネットワークデバイス122は、高優先度のハッシュエントリーのキャッシュラインに「接触」するために専用のスレッドを用いてハッシュエントリーのキャッシュラインに「接触」することにより、第1レベルハッシュテーブル302にハッシュエントリーをロックしてよい。このように、ターゲットキャッシュラインに「接触」することは、高優先度を有するハッシュエントリーのキャッシュラインがLRU位置には存在せず、そのため、追い出されないことを保証する。いくつかの実施形態において、プロセッサ202は、リソース競合を避けるべく、プロセッサ202の別個のコア上でスレッドが実行され得るマルチコアプロセッサであることが意図される。いくつかの実施形態において、ネットワークデバイス122のプロセッサ202は、ネットワークデバイス122のソフトウェアが第1レベルハッシュテーブル302にロックするべく、特定のハッシュエントリーの特定のキャッシュラインを追い出さないようにプロセッサ202に命令できるように、ロードロック命令(すなわち、第1レベルハッシュテーブル302にキャッシュラインをロックするか否かを示すビット)を顕在化してよい。
ネットワークデバイス122がハッシュエントリーの格納位置を更新した後、方法は、ブロック720に進み、そこでネットワークパケットヘッダがハッシュエントリーに対応するネットワークフローに基づいて更新される。ブロック722において、更新されたネットワークパケットは、ターゲットデバイスに送信される。ネットワークインフラストラクチャ120及びネットワークフロー内のネットワークデバイス122の位置に応じて、ターゲットデバイスは、他のネットワークデバイス122、リモートコンピューティングデバイス102又はコンピューティングデバイス130であってよい。ブロック722から、方法700は、ブロック702に戻る。
ブロック708で、ハッシュルックアップが成功しなかった(すなわち、「ミス」の結果となった)場合、方法700は、ブロック724に進む。ブロック724において、ネットワークデバイス122は、次のレベルのハッシュテーブルが利用可能か否かを決定する。例えば、最初の反復では、次のレベルのハッシュテーブルは、第2レベルハッシュテーブル304に対応する。各後続の反復は、「第N」レベルハッシュテーブル306が到達されるまで、ハッシュテーブルのレベルをインクリメントする。次のレベルのハッシュテーブルが利用可能である場合、ハッシュルックアップは、ブロック726において、次のレベルのハッシュテーブル上で実行される。言い換えれば、ハッシュルックアップは、ブロック724の各後続の反復についてブロック726で実行される。
いくつかの実施形態において、ハッシュルックアップは、ハッシュルックアップを実行する前に、ブロック728において次のレベルのハッシュテーブル上で確率演算を実行することを含んでよい。いくつかの実施形態において、確率演算は、ルックアップを実行する前に、ハッシュエントリーがハッシュテーブル内に存在するか否かの確率を決定するべく実行され得る。確率演算を実行することは、ハッシュルックアップ上の「ミス」に起因するレイテンシーを減らす。確率演算は、ハッシュエントリーがハッシュテーブルに位置付けられる確率を決定することが可能な任意のタイプの確率方法を用いて実行され得る。例えば、ブルームフィルタを用いた実施形態において、ブルームフィルタは、ビットベクトルベースのデータ構造を有する。ブルームフィルタに要素を追加するべく、ハッシュのキーは、ビットベクトル内の対応するビットを設定するべく用いられてよい。ハッシュエントリーが、ハッシュルックアップが実行されるハッシュテーブル内に存在するか否かを決定するべく、ハッシュのキーが適用され、次に、設定されたビットが適切なビットベクトル内でチェックされる。設定されたビットがビットベクトル内に存在しない場合、ハッシュエントリーは、ハッシュルックアップが実行されるハッシュテーブル内に存在しない。設定されたビットがビットベクトル内に存在する場合、ハッシュエントリーは、ハッシュルックアップが実行されるハッシュテーブル内に存在し得る。いくつかの実施形態において、確率演算は、同様に、第1レベルハッシュテーブル302内でハッシュルックアップを実行する前に更に実行されてよい。そうすることで、ハッシュテーブルのレベル内の検索を実行することに関連するレイテンシーは減らされ得、更に、全体のルックアップ時間が改善される。
次のレベルのハッシュテーブルがブロック724で利用可能でない場合、方法700は、図8に示すブロック730へ進む。ブロック730で、リクエストは、ブロック702で受信されたネットワークパケットに対応するフロー優先度情報について、ネットワークデバイス122からネットワークコントローラ112へ送信される。ブロック732で、ネットワークフロー及びフロー優先度情報は、ネットワークコントローラから受信される。いくつかの実施形態において、ブロック734で、フロー優先度情報は、受信したネットワークパケットのネットワークフローに対応するハッシュエントリーに割り振られる優先度のレベルを含んでよい。いくつかの実施形態において、ブロック736で、フロー優先度情報は、ロードロック命令に対応するハッシュエントリーのビットを設定するか否かの指標を追加的に又は代替的に含んでよい。ブロック738で、ネットワークフローは、ネットワークフローテーブル308に追加される。ブロック740で、ブロック740で生成されたハッシュの格納位置を更新するべく、方法700がブロック712へ進む前に、ハッシュは、ブロック738でネットワークフローテーブル308に追加されたネットワークフローに対応して生成される。
キャッシュ204は、オンダイキャッシュ又はプロセッサ上のキャッシュとして上記で説明されているが、いくつかの実施形態において、キャッシュ204は、コンピューティングデバイス102のプロセッサ202がメモリ208より速くアクセスできる任意のタイプのキャッシュメモリとして具現化され得ることが理解されるべきである。例えば、いくつかの実施形態において、キャッシュ204は、オフダイキャッシュであってよいが、プロセッサ202と同じSoC上に存在する。
実施例
本明細書に開示されている技術の例示的な実施例が以下に提供される。複数の技術の実施形態は、以下で説明される実施例のうち、任意の1又は複数及び任意の組み合わせを含んでよい。
実施例1は、ネットワークフローに対応するネットワークフローハッシュの格納位置管理のためのネットワークデバイスであって、ネットワークデバイスのプロセッサのためのキャッシュと、キャッシュとは異なるメインメモリと、ネットワークフローを含むメインメモリに格納されるネットワークフローテーブルと、複数のフローハッシュテーブルを含むマルチレベルフローハッシュテーブルであって、複数のフローハッシュテーブルがキャッシュに格納される第1レベルフローハッシュテーブル及び第2レベルフローハッシュテーブルを有し、第2レベルフローハッシュテーブルの少なくとも一部がキャッシュに格納される、マルチレベルフローハッシュテーブルと、ネットワークデバイスに通信可能に連結されるネットワークコントローラからネットワークフローに対応する優先度を受信し、受信した優先度に基づいて第1レベル又は第2レベルフローハッシュテーブルのいずれかにネットワークフローに対応するネットワークフローハッシュを格納するネットワークフローハッシュテーブル管理モジュールとを含む。
実施例2は、実施例1の主題を含み、第1レベル及び第2レベルフローハッシュテーブルの各々は、複数のネットワークフローハッシュを含み、複数のネットワークフローハッシュの各々は、ネットワークフローテーブル内の複数のネットワークフローのネットワークフローに対応する。
実施例3は、実施例1及び2のいずれかの主題を含み、第1レベル又は第2レベルフローハッシュテーブルのいずれかにネットワークフローに対応するネットワークフローハッシュを格納することは、ネットワークフローハッシュに対応する優先度が第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュに対応する優先度より高いとの決定に応じて、第1レベルフローハッシュテーブルでネットワークフローハッシュを格納することを含む。
実施例4は、実施例1―3のいずれかの主題を含み、ネットワークフローハッシュテーブル管理モジュールは、更に、ネットワークフローハッシュに対応する優先度が他のネットワークフローハッシュに対応する優先度より高いとの決定に応じて、第2レベルフローハッシュテーブルへ他のネットワークフローハッシュを追い出す。
実施例5は、実施例1―4のいずれかの主題を含み、第1レベル又は第2レベルフローハッシュテーブルのいずれかにネットワークフローに対応するネットワークフローハッシュを格納することは、ネットワークフローハッシュのアクセスの頻度が第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュのアクセスの頻度より高いとの決定に応じて、第1レベルフローハッシュテーブルにネットワークフローハッシュを格納することを含む。
実施例6は、実施例1―5のいずれかの主題を含み、第1レベル又は第2レベルフローハッシュテーブルのいずれかにネットワークフローに対応するネットワークフローハッシュを格納することは、更に、ネットワークフローハッシュのアクセス頻度に基づく。
実施例7は、実施例1―6のいずれかの主題を含み、第1レベル又は第2レベルフローハッシュテーブルのいずれかにネットワークフローに対応するネットワークフローハッシュを格納することは、ネットワークフローハッシュのアクセス頻度が第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュのアクセス頻度より高いとの決定に応じて、第1レベルフローハッシュテーブルにネットワークフローハッシュを格納することを含む。
実施例8は、実施例1―7のいずれかの主題を含み、第2レベルフローハッシュテーブルの他の一部は、ネットワークデバイスのメインメモリに格納される。
実施例9は、実施例1―8のいずれかの主題を含み、第1又は第2レベルフローハッシュテーブルのいずれにネットワークフローに対応するネットワークフローハッシュを格納することは、ネットワークフローハッシュに対応する優先度が第1レベルフローハッシュテーブルに現在格納されているネットワークフローハッシュの優先度より低く、かつ、ネットワークフローハッシュに対応するアクセス頻度がキャッシュに格納された第2レベルフローハッシュテーブルの一部に現在格納されている他のネットワークフローハッシュのアクセス頻度より高いとの決定に応じて、キャッシュに格納された第2レベルフローハッシュテーブルの一部にネットワークフローハッシュを格納することを含む。
実施例10は、実施例1―9のいずれかの主題を含み、ネットワークフローハッシュテーブル管理モジュールは、更に、ネットワークコントローラから受信された優先度に基づいてキャッシュ内のネットワークフローに対応するネットワークフローハッシュをロックする。
実施例11は、実施例1―10のいずれかの主題を含み、キャッシュは、複数のキャッシュラインを含み、各キャッシュラインは、ネットワークフローハッシュを収容可能であり、キャッシュ内のネットワークフローハッシュをロックすることは、ネットワークコントローラから受信される優先度に基づいてネットワークフローハッシュに対応するキャッシュラインのビットを設定することを含む。
実施例12は、実施例1―11のいずれかの主題を含み、キャッシュラインのビットを設定することは、キャッシュラインのエイジビットを設定することを含む。
実施例13は、実施例1―12のいずれかの主題を含み、キャッシュラインのビットを設定することは、キャッシュラインの追い出しインジケータビットを設定することを含む。
実施例14は、実施例1―13のいずれかの主題を含み、更に、ネットワークデバイスにより受信されるネットワークパケットのヘッダの少なくとも一部をハッシュし、マルチレベルフローハッシュテーブルの第1レベルフローハッシュテーブルでネットワークパケットのヘッダのハッシュされた一部について第1ルックアップを実行するネットワークフローハッシュルックアップモジュールを含む。
実施例15は、実施例1―14のいずれかの主題を含み、ネットワークフローハッシュルックアップモジュールは、第1レベルフローハッシュテーブルで第1ルックアップが失敗した後に、第2レベルフローハッシュテーブルでネットワークパケットのヘッダのハッシュされた一部について第2ルックアップを更に実行する。
実施例16は、実施例1―15のいずれかの主題を含み、ネットワークフローハッシュルックアップモジュールは、更に、第2ルックアップを実行する前に、ネットワークパケットのヘッダのハッシュされた一部に対応するネットワークフローハッシュが第2レベルフローハッシュテーブル内に存在するか否かの確率を決定するべく、確率演算を実行することを更に含む。
実施例17は、実施例1―16のいずれかの主題を含み、ネットワークフローハッシュルックアップモジュールは、更に、ネットワークフローハッシュに対応するアクセス情報を更新する。
実施例18は、実施例1―17のいずれかの主題を含み、ネットワークフローハッシュに対応するアクセス情報を更新することは、アクセス頻度を提供するべく、ネットワークフローハッシュのアクセスカウンタをインクリメントすることを含む。
実施例19は、実施例1―18のいずれかの主題を含み、ネットワークフローハッシュに対応するアクセス情報を更新することは、更に、ネットワークフローハッシュのアクセスカウンタのインクリメントされた最後の時間の指標を提供するべく、ネットワークフローハッシュのタイムスタンプを更新することを含む。
実施例20は、ネットワークフローに対応するネットワークフローハッシュの格納位置を管理するための方法を含み、方法は、ネットワークデバイスが、ネットワークコントローラからネットワークフロー及びネットワークフローに対応する優先度を受信する段階と、ネットワークデバイスが、ネットワークデバイスのメインメモリ内のネットワークフローテーブルにネットワークフローを格納する段階と、ネットワークデバイスがネットワークフローに対応するネットワークフローハッシュを生成する段階と、ネットワークデバイスが、ネットワークコントローラから受信される優先度に基づいてマルチレベルフローハッシュテーブルの第1レベルフローハッシュテーブル又は第2レベルフローハッシュテーブルの一方にネットワークフローに対応するネットワークフローハッシュを格納する段階とを含み、第1レベルフローハッシュテーブルは、ネットワークデバイスのプロセッサのためのキャッシュに格納され、第2レベルフローハッシュテーブルの少なくとも一部は、キャッシュに格納される。
実施例21は、実施例20の主題を含み、第1レベル及び第2レベルフローハッシュテーブルの各々は、ネットワークフローテーブルに格納される複数のネットワークフローに対応する複数のネットワークフローハッシュエントリーを含む。
実施例22は、実施例20及び21のいずれかの主題を含み、ネットワークフローハッシュを格納する段階は、ネットワークフローハッシュに対応する優先度が第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュに対応する優先度より高いとの決定に応じて、第1レベルフローハッシュテーブルにネットワークフローハッシュを格納する段階を含む。
実施例23は、実施例20―22のいずれかの主題を含み、更に、ネットワークフローハッシュに対応する優先度が他のネットワークフローハッシュに対応する優先度より高いとの決定に応じて、ネットワークデバイスが、第2レベルフローハッシュテーブルに他のネットワークフローハッシュを追い出す段階を含む。
実施例24は、実施例20―23のいずれかの主題を含み、ネットワークフローハッシュを格納する段階は、ネットワークフローハッシュのアクセスの頻度が第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュのアクセスの頻度より高いとの決定の後に、第1レベルフローハッシュテーブルにネットワークフローハッシュを格納する段階を含む。
実施例25は、実施例20―24のいずれかの主題を含み、第2レベルフローハッシュテーブルの他の一部は、ネットワークデバイスのメインメモリに格納される。
実施例26は、実施例20―25のいずれかの主題を含み、ネットワークフローハッシュを格納する段階は、ネットワークフローハッシュに対応する優先度が第1レベルフローハッシュテーブルに現在格納されているネットワークフローハッシュの優先度より低く、かつ、ネットワークフローハッシュのアクセス頻度がプロセッサのキャッシュに格納される第2レベルフローハッシュテーブルの一部に現在格納されている他のネットワークフローハッシュのアクセス頻度より高いと決定することに応じて、プロセッサのキャッシュに格納された第2レベルフローハッシュテーブルの一部にネットワークフローハッシュを格納する段階を含む。
実施例27は、実施例20―26のいずれかの主題を含み、更に、ネットワークデバイスが、ネットワークコントローラから受信される優先度に基づいてキャッシュ内のネットワークフローに対応するネットワークフローハッシュをロックする段階を含む。
実施例28は、実施例20―27のいずれかの主題を含み、キャッシュは、複数のキャッシュラインを含み、各キャッシュラインは、ネットワークフローハッシュを収容可能であり、キャッシュ内のネットワークフローハッシュをロックする段階は、ネットワークコントローラから受信される優先度に基づいてネットワークフローハッシュに対応するキャッシュラインのビットを設定する段階を含む。
実施例29は、実施例20―28のいずれかの主題を含み、キャッシュラインのビットを設定する段階は、キャッシュラインのエイジビットを設定する段階を含む。
実施例30は、実施例20―29のいずれかの主題を含み、キャッシュラインのビットを設定する段階は、キャッシュラインの追い出しインジケータビットを設定する段階を含む。
実施例31は、実施例20―30のいずれかの主題を含み、更に、ネットワークデバイスが、ネットワークデバイスにより受信されるネットワークパケットのヘッダの少なくとも一部をハッシュする段階と、ネットワークデバイスが、マルチレベルフローハッシュテーブルの第1レベルフローハッシュテーブルでネットワークパケットのヘッダのハッシュされた一部について第1ルックアップを実行する段階とを含む。
実施例32は、実施例20―31のいずれかの主題を含み、更に、ネットワークデバイスが第1レベルフローハッシュテーブルで失敗した第1ルックアップの後に、第2レベルフローハッシュテーブルでネットワークパケットのヘッダのハッシュされた一部について第2ルックアップを実行する段階を含む。
実施例33は、実施例20―32のいずれかの主題を含み、更に、第2ルックアップを実行する前に、ネットワークパケットのヘッダのハッシュされた一部に対応するネットワークフローハッシュが第2レベルフローハッシュテーブルに存在するか否かの確率を決定するべく、ネットワークデバイスが確率演算を実行する段階を含む。
実施例34は、実施例20―33のいずれかの主題を含み、更に、ネットワークデバイスがネットワークフローハッシュに対応するアクセス情報を更新する段階を含む。
実施例35は、実施例20―34のいずれかの主題を含み、ネットワークフローハッシュに対応するアクセス情報を更新する段階は、アクセス頻度を提供するべく、ネットワークフローハッシュのアクセスカウンタをインクリメントする段階を含む。
実施例36は、実施例20―35のいずれかの主題を含み、ネットワークフローハッシュに対応するアクセス情報を更新する段階は、ネットワークフローハッシュの前回のアクセスカウンタの指標がインクリメントされたことを提供するべく、ネットワークフローハッシュのタイムスタンプを更新する段階を更に含む。
実施例37は、プロセッサを有するネットワークデバイスと、プロセッサにより実行されたときに、実施例20―36のいずれかの方法をネットワークデバイスに実行させる複数の命令を格納したメモリとを含む。
実施例38は、実施例20―36のいずれかの方法を実行するネットワークデバイスで実行される結果に応じて、そこに格納される複数の命令を有する1又は複数の機械可読記憶媒体を含む。
実施例39は、ネットワークフローに対応するネットワークフローハッシュの格納位置を管理するためのコンピューティングデバイスを含み、コンピューティングデバイスは、ネットワークコントローラからネットワークフロー及びネットワークフローに対応する優先度を受信する手段と、ネットワークデバイスのメインメモリ内のネットワークフローテーブルにネットワークフローを格納する手段と、ネットワークフローに対応するネットワークフローハッシュを生成する手段と、ネットワークコントローラから受信される優先度に基づいて、マルチレベルフローハッシュテーブルの第1レベルフローハッシュテーブル又は第2レベルフローハッシュテーブルの一方に、ネットワークフローに対応するネットワークフローハッシュを格納する手段とを備え、第1レベルフローハッシュテーブルは、ネットワークデバイスのプロセッサのためのキャッシュに格納され、第2レベルフローハッシュテーブルの少なくとも一部は、キャッシュに格納される。
実施例40は、実施例39の主題を含み、第1レベル及び第2レベルフローハッシュテーブルの各々は、ネットワークフローテーブルに格納される複数のネットワークフローに対応する複数のネットワークフローハッシュエントリーを含む。
実施例41は、実施例39及び40のいずれかの主題を含み、ネットワークフローハッシュを格納する手段は、ネットワークフローハッシュに対応する優先度が第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュに対応する優先度より高いとの決定に応じて、第1レベルフローハッシュテーブルにネットワークフローハッシュを格納する手段を含む。
実施例42は、実施例39―41のいずれかの主題を含み、更に、ネットワークフローハッシュに対応する優先度が他のネットワークフローハッシュに対応する優先度より高いとの決定に応じて、第2レベルフローハッシュテーブルに他のネットワークフローハッシュを追い出す手段を含む。
実施例43は、実施例39―42のいずれかの主題を含み、ネットワークフローハッシュを格納する手段は、ネットワークフローハッシュのアクセスの頻度が第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュのアクセスの頻度より高いとの決定の後に、第1レベルフローハッシュテーブルにネットワークフローハッシュを格納する手段を含む。
実施例44は、実施例39―43のいずれかの主題を含み、第2レベルフローハッシュテーブルの他の一部は、ネットワークデバイスのメインメモリに格納される。
実施例45は、実施例39―44のいずれかの主題を含み、ネットワークフローハッシュを格納する手段は、ネットワークフローハッシュに対応する優先度が第1レベルフローハッシュテーブルに現在格納されているネットワークフローハッシュの優先度より低く、かつ、ネットワークフローハッシュのアクセス頻度がキャッシュに格納される第2レベルフローハッシュテーブルの一部に現在格納されている他のネットワークフローハッシュのアクセス頻度より高いと決定することに応じてキャッシュに格納される第2レベルフローハッシュテーブルの一部にネットワークフローハッシュを格納する手段を含む。
実施例46は、実施例39―45のいずれかの主題を含み、更に、ネットワークコントローラから受信される優先度に基づいてキャッシュ内のネットワークフローに対応するネットワークフローハッシュをロックする手段を含む。
実施例47は、実施例39―46のいずれかの主題を含み、キャッシュは、複数のキャッシュラインを含み、各キャッシュラインは、ネットワークフローハッシュを収容可能であり、キャッシュ内のネットワークフローハッシュをロックする手段は、ネットワークコントローラから受信される優先度に基づいてネットワークフローハッシュに対応するキャッシュラインのビットを設定する手段を含む。
実施例48は、実施例39―47のいずれかの主題を含み、キャッシュラインのビットを設定する手段は、キャッシュラインのエイジビットを設定する手段を含む。
実施例49は、実施例39―48のいずれかの主題を含み、キャッシュラインのビットを設定する手段は、キャッシュラインの追い出しインジケータビットを設定する手段を含む。
実施例50は、実施例39―49のいずれかの主題を含み、更に、ネットワークデバイスにより受信されるネットワークパケットのヘッダの少なくとも一部をハッシュする手段と、マルチレベルフローハッシュテーブルの第1レベルフローハッシュテーブルでネットワークパケットのヘッダのハッシュされた一部について第1ルックアップを実行する手段とを含む。
実施例51は、実施例39―50のいずれかの主題を含み、更に、第1レベルフローハッシュテーブルで第1ルックアップが失敗した後に、第2レベルフローハッシュテーブルでネットワークパケットのヘッダのハッシュされた一部について第2ルックアップを実行する手段を含む。
実施例52は、実施例39―51のいずれかの主題を含み、更に、第2ルックアップの実行の前に、ネットワークパケットのヘッダのハッシュされた一部に対応するネットワークフローハッシュが第2レベルフローハッシュテーブル内に存在するか否かの確率を決定するべく、確率演算を実行する手段を含む。
実施例53は、実施例39―52のいずれかの主題を含み、更に、ネットワークフローハッシュに対応するアクセス情報を更新する手段を含む。
実施例54は、実施例39―53のいずれかの主題を含み、ネットワークフローハッシュに対応するアクセス情報を更新する手段は、アクセス頻度を提供するべく、ネットワークフローハッシュのアクセスカウンタをインクリメントする手段を含む。
実施例55は、実施例39―54のいずかの主題を含み、ネットワークフローハッシュに対応するアクセス情報を更新する手段は、更に、ネットワークフローハッシュの前回のアクセスカウンタの指標がインクリメントされたことを提供するべく、ネットワークフローハッシュのタイムスタンプを更新する手段を含む。
Claims (26)
- ネットワークフローに対応するネットワークフローハッシュの格納位置管理のためのネットワークデバイスであって、
前記ネットワークデバイスのプロセッサのためのキャッシュと、
前記キャッシュとは異なるメインメモリと、
前記ネットワークフローを含む前記メインメモリに格納されるネットワークフローテーブルと、
複数のフローハッシュテーブルを含むマルチレベルフローハッシュテーブルであって、前記複数のフローハッシュテーブルが、前記キャッシュに格納される第1レベルフローハッシュテーブル、及び、第2レベルフローハッシュテーブルを含み、前記第2レベルフローハッシュテーブルの少なくとも一部が前記キャッシュに格納される、マルチレベルフローハッシュテーブルと、
前記ネットワークデバイスに通信可能に連結されるネットワークコントローラから前記ネットワークフローに対応する優先度を受信し、受信した前記優先度に基づいて前記第1レベル又は第2レベルフローハッシュテーブルのいずれかに、前記ネットワークフローに対応する前記ネットワークフローハッシュを格納するネットワークフローハッシュテーブル管理モジュールと
を備える、ネットワークデバイス。 - 前記第1レベル及び第2レベルフローハッシュテーブルの各々は、複数のネットワークフローハッシュを含み、前記複数のネットワークフローハッシュの各々は、前記ネットワークフローテーブル内の複数の前記ネットワークフローのうちの1つのネットワークフローに対応する、請求項1に記載のネットワークデバイス。
- 前記第1レベル又は第2レベルフローハッシュテーブルのいずれかに、前記ネットワークフローに対応する前記ネットワークフローハッシュを格納することは、前記ネットワークフローハッシュに対応する優先度が前記第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュに対応する優先度より高いという決定に応じて、前記第1レベルフローハッシュテーブルに前記ネットワークフローハッシュを格納すること含み、
前記ネットワークフローハッシュテーブル管理モジュールは、更に、前記ネットワークフローハッシュに対応する前記優先度が前記他のネットワークフローハッシュに対応する前記優先度より高いという前記決定に応じて、前記第2レベルフローハッシュテーブルへ前記他のネットワークフローハッシュを追い出す、請求項1又は2に記載のネットワークデバイス。 - 前記第1レベル又は第2レベルフローハッシュテーブルのいずれかに、前記ネットワークフローに対応する前記ネットワークフローハッシュを格納することは、前記ネットワークフローハッシュのアクセスの頻度が前記第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュのアクセスの頻度より高いという決定に応じて、前記第1レベルフローハッシュテーブルに前記ネットワークフローハッシュを格納することを含む、請求項1から3のいずれか一項に記載のネットワークデバイス。
- 前記第1レベル又は第2レベルフローハッシュテーブルのいずれかに、前記ネットワークフローに対応する前記ネットワークフローハッシュを格納することは、前記ネットワークフローハッシュのアクセス頻度が前記第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュのアクセス頻度より高いという決定に応じて、前記第1レベルフローハッシュテーブルに前記ネットワークフローハッシュを格納することを含む、請求項1から3のいずれか一項に記載のネットワークデバイス。
- 前記第2レベルフローハッシュテーブルの他の一部は、前記ネットワークデバイスの前記メインメモリに格納される、請求項1から5のいずれか一項に記載のネットワークデバイス。
- 前記第1又は第2レベルフローハッシュテーブルのいずれかに、前記ネットワークフローに対応する前記ネットワークフローハッシュを格納することは、前記ネットワークフローハッシュに対応する優先度が前記第1レベルフローハッシュテーブルに現在格納されている複数の他のネットワークフローハッシュの複数の優先度より低い、かつ、前記ネットワークフローハッシュに対応するアクセス頻度が前記キャッシュに格納される前記第2レベルフローハッシュテーブルの前記一部に現在格納されている前記複数の他のネットワークフローハッシュの複数のアクセス頻度より高いという決定に応じて、前記キャッシュに格納される前記第2レベルフローハッシュテーブルの前記一部に前記ネットワークフローハッシュを格納することを含む、請求項1から6のいずれか一項に記載のネットワークデバイス。
- 前記ネットワークフローハッシュテーブル管理モジュールは、更に、前記ネットワークコントローラから受信される前記優先度に基づいてキャッシュ内の前記ネットワークフローに対応する前記ネットワークフローハッシュをロックし、
前記キャッシュは、複数のキャッシュラインを含み、各キャッシュラインは、前記ネットワークフローハッシュを収容可能であり、
キャッシュ内の前記ネットワークフローハッシュをロックすることは、前記ネットワークコントローラから受信される前記優先度に基づいて前記ネットワークフローハッシュに対応するキャッシュラインのビットを設定することを含む、請求項1から7のいずれか一項に記載のネットワークデバイス。 - 前記キャッシュラインの前記ビットを設定することは、前記キャッシュラインのエイジビット及び追い出しインジケータビットのうちの少なくとも1つを設定することを含む、請求項8に記載のネットワークデバイス。
- 前記ネットワークデバイスにより受信されるネットワークパケットのヘッダの少なくとも一部をハッシュして、前記マルチレベルフローハッシュテーブルの前記第1レベルフローハッシュテーブルで前記ネットワークパケットの前記ヘッダのハッシュされた前記一部のための第1ルックアップを実行し、前記第1レベルフローハッシュテーブルで失敗した第1ルックアップの後に、前記第2レベルフローハッシュテーブルで前記ネットワークパケットの前記ヘッダのハッシュされた前記一部のための第2ルックアップを実行するネットワークフローハッシュルックアップモジュールを更に備える、請求項1から9のいずれか一項に記載のネットワークデバイス。
- 前記ネットワークフローハッシュルックアップモジュールは、前記ネットワークパケットの前記ヘッダのハッシュされた前記一部に対応する前記ネットワークフローハッシュが前記第2ルックアップを実行する前に、前記第2レベルフローハッシュテーブルが存在するか否かの確率を決定するべく、確率演算を更に実行する、請求項10に記載のネットワークデバイス。
- 前記ネットワークフローハッシュルックアップモジュールは、更に、前記ネットワークフローハッシュに対応するアクセス情報を更新する、請求項10又は11に記載のネットワークデバイス。
- 前記ネットワークフローハッシュに対応する前記アクセス情報を更新することは、アクセス頻度を提供するべく、前記ネットワークフローハッシュのアクセスカウンタをインクリメントすることを含む、請求項12に記載のネットワークデバイス。
- 複数のネットワークフローに対応する複数のネットワークフローハッシュの複数の格納位置を管理するための方法であって、
ネットワークデバイスが、ネットワークフロー及び前記ネットワークフローに対応する優先度をネットワークコントローラから受信する段階と、
前記ネットワークデバイスが、前記ネットワークデバイスのメインメモリ内のネットワークフローテーブルに前記ネットワークフローを格納する段階と、
前記ネットワークデバイスが、前記ネットワークフローに対応するネットワークフローハッシュを生成する段階と、
前記ネットワークデバイスが、前記ネットワークコントローラから受信される前記優先度に基づいてマルチレベルフローハッシュテーブルの第1レベルフローハッシュテーブル又は第2レベルフローハッシュテーブルの一方に、前記ネットワークフローに対応する前記ネットワークフローハッシュを格納する段階と
を備え、
前記第1レベルフローハッシュテーブルは、前記ネットワークデバイスのプロセッサ用のキャッシュに格納され、前記第2レベルフローハッシュテーブルの少なくとも一部は、前記キャッシュに格納される、方法。 - 前記ネットワークフローハッシュを格納する段階は、前記ネットワークフローハッシュに対応する優先度が、前記第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュに対応する優先度より高いという決定に応じて、前記第1レベルフローハッシュテーブルに前記ネットワークフローハッシュを格納する段階を含む、請求項14に記載の方法。
- 前記ネットワークデバイスが、前記ネットワークフローハッシュに対応する前記優先度が、他のネットワークフローハッシュに対応する前記優先度より高いという前記決定に応じて、前記第2レベルフローハッシュテーブルへ前記他のネットワークフローハッシュを追い出す段階を更に備える、請求項15に記載の方法。
- 前記ネットワークフローハッシュを格納する段階は、前記ネットワークフローハッシュのアクセスの頻度が前記第1レベルフローハッシュテーブルに現在格納されている他のネットワークフローハッシュのアクセスの頻度より高いことを決定する段階の後に、前記第1レベルフローハッシュテーブルに前記ネットワークフローハッシュを格納する段階を含む、請求項14から16のいずれか一項に記載の方法。
- 前記ネットワークフローハッシュを格納する段階は、前記ネットワークフローハッシュに対応する優先度が、前記第1レベルフローハッシュテーブルに現在格納されている前記ネットワークフローハッシュの複数の優先度より低い、かつ、前記ネットワークフローハッシュのアクセス頻度が、前記プロセッサの前記キャッシュに格納される前記第2レベルフローハッシュテーブルの前記一部に現在格納されている複数の他のネットワークフローハッシュの複数のアクセス頻度より高いことを決定する段階に応じて、前記キャッシュに格納される前記第2レベルフローハッシュテーブルの前記一部に前記ネットワークフローハッシュを格納する段階を含む、請求項14から17のいずれか一項に記載の方法。
- 前記ネットワークデバイスが、前記ネットワークコントローラから受信される前記優先度に基づいて、キャッシュ内の前記ネットワークフローに対応する前記ネットワークフローハッシュをロックする段階
を更に備え、
前記キャッシュは、複数のキャッシュラインを含み、各キャッシュラインは、前記ネットワークフローハッシュに収容可能であり、
キャッシュ内の前記ネットワークフローハッシュをロックする段階は、前記ネットワークコントローラから受信される前記優先度に基づいて前記ネットワークフローハッシュに対応するキャッシュラインのビットを設定する段階を含む、請求項14から18のいずれか一項に記載の方法。 - 前記ネットワークデバイスが、前記ネットワークデバイスにより受信されるネットワークパケットのヘッダの少なくとも一部をハッシュする段階と、
前記ネットワークデバイスが、前記マルチレベルフローハッシュテーブルの前記第1レベルフローハッシュテーブルで前記ネットワークパケットの前記ヘッダのハッシュされた前記一部のための第1ルックアップを実行する段階と、
前記ネットワークデバイスが、前記第1レベルフローハッシュテーブルで失敗した第1ルックアップの後に、前記第2レベルフローハッシュテーブルで前記ネットワークパケットの前記ヘッダのハッシュされた前記一部のための第2ルックアップを実行する段階と
を更に備える、請求項14から19のいずれか一項に記載の方法。 - 前記ネットワークデバイスが、前記第2ルックアップを実行する前に、前記ネットワークパケットの前記ヘッダの前記ハッシュされた一部に対応する前記ネットワークフローハッシュが前記第2レベルフローハッシュテーブル内に存在するか否かの確率を決定するべく、確率演算を実行する段階を更に備える、請求項20に記載の方法。
- アクセス頻度を提供するべく、前記ネットワークフローハッシュのアクセスカウンタをインクリメントする段階を更に備える、請求項14から21のいずれか一項に記載の方法。
- 前記ネットワークフローハッシュのアクセスカウンタがインクリメントされた最後の時間の指標を提供するべく、前記ネットワークフローハッシュのタイムスタンプを更新する段階を更に備える、請求項22に記載の方法。
- プロセッサと、
前記プロセッサにより実行されるときに、請求項14から23のいずれか一項に記載の方法を前記ネットワークデバイスに実行させる複数の命令をその中に格納したメモリと
を備える、ネットワークデバイス。 - プロセッサに、請求項14から23のいずれか一項に記載の方法を実行させるためのプログラム。
- 請求項25に記載のプログラムを格納するコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/580,801 US10284470B2 (en) | 2014-12-23 | 2014-12-23 | Technologies for network device flow lookup management |
US14/580,801 | 2014-12-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016119651A JP2016119651A (ja) | 2016-06-30 |
JP6064291B2 true JP6064291B2 (ja) | 2017-01-25 |
Family
ID=56097800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015215863A Expired - Fee Related JP6064291B2 (ja) | 2014-12-23 | 2015-11-02 | ネットワークデバイスのフロールックアップ管理のための技術 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10284470B2 (ja) |
JP (1) | JP6064291B2 (ja) |
KR (1) | KR101826725B1 (ja) |
CN (1) | CN105721300B (ja) |
DE (1) | DE102015119889A1 (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9716626B1 (en) * | 2015-01-29 | 2017-07-25 | Amdocs Software Systems Limited | System, method, and computer program for adding a new network element to a network function virtualization based (NFV-based) communication network |
US9794161B2 (en) * | 2015-02-10 | 2017-10-17 | Nxp Usa, Inc. | Methods and systems for non-intrusive debug processing of network frames |
US10922347B2 (en) * | 2016-01-28 | 2021-02-16 | Hyland Switzerland Sàrl | Hierarchical dictionary with statistical filtering based on word frequency |
JP6745245B2 (ja) * | 2017-06-15 | 2020-08-26 | Kddi株式会社 | 送信制御装置、送信制御方法及び送信制御プログラム |
US10313240B2 (en) * | 2017-06-26 | 2019-06-04 | Intel Corporation | Technologies for efficient network flow classification with vector bloom filters |
US10762137B1 (en) | 2017-11-15 | 2020-09-01 | Amazon Technologies, Inc. | Page table search engine |
US10754789B1 (en) * | 2017-11-15 | 2020-08-25 | Amazon Technologies, Inc. | Address translation for storage class memory in a system that includes virtual machines |
US10810133B1 (en) * | 2017-11-15 | 2020-10-20 | Amazon Technologies, Inc. | Address translation and address translation memory for storage class memory |
DK3618355T3 (da) | 2018-08-27 | 2020-11-16 | Ovh | Systemer og fremgangsmåder til at drive en netværksindretning |
US11329925B2 (en) * | 2018-09-28 | 2022-05-10 | Intel Corporation | Technologies for low-latency network packet transmission |
WO2020165910A1 (en) * | 2019-02-16 | 2020-08-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for providing priority-aware caching in the fast-path of a virtual switch |
US10917346B2 (en) | 2019-03-06 | 2021-02-09 | Arista Networks, Inc. | Resilient hashing with compression |
US11019137B2 (en) | 2019-03-06 | 2021-05-25 | Arista Networks, Inc. | Implementing history-based connection-server affinity on a network load balancer |
US10892991B2 (en) * | 2019-03-06 | 2021-01-12 | Arista Networks, Inc. | Resilient hashing with multiple hashes |
KR102226915B1 (ko) * | 2019-10-31 | 2021-03-11 | 아토리서치(주) | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 |
CN112838989A (zh) * | 2019-11-25 | 2021-05-25 | 中兴通讯股份有限公司 | 一种数据流管理方法、网络设备及存储介质 |
US11899642B2 (en) * | 2019-12-17 | 2024-02-13 | Advanced Micro Devices, Inc. | System and method using hash table with a set of frequently-accessed buckets and a set of less frequently-accessed buckets |
JP2022108619A (ja) * | 2021-01-13 | 2022-07-26 | 富士通株式会社 | 情報処理システム、情報処理装置、及び、情報処理方法 |
US20220335029A1 (en) * | 2021-04-19 | 2022-10-20 | Dell Products L.P. | Prioritized hash table |
CN113595822B (zh) * | 2021-07-26 | 2024-03-22 | 北京恒光信息技术股份有限公司 | 一种数据包管理方法、系统和装置 |
WO2024006980A1 (en) | 2022-06-30 | 2024-01-04 | Juniper Networks, Inc. | Framework for automated application-to-network root cause analysis |
US12238069B2 (en) | 2022-11-30 | 2025-02-25 | Juniper Networks, Inc. | Self-correcting service level agreement enforcer |
EP4380106A1 (en) * | 2022-11-30 | 2024-06-05 | Juniper Networks, Inc. | Intelligent firewall flow processor |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816968B1 (en) * | 1998-07-10 | 2004-11-09 | Silverbrook Research Pty Ltd | Consumable authentication protocol and system |
US6754662B1 (en) * | 2000-08-01 | 2004-06-22 | Nortel Networks Limited | Method and apparatus for fast and consistent packet classification via efficient hash-caching |
US7987510B2 (en) * | 2001-03-28 | 2011-07-26 | Rovi Solutions Corporation | Self-protecting digital content |
JP4274710B2 (ja) * | 2001-06-28 | 2009-06-10 | 株式会社日立製作所 | 通信中継装置 |
GB0517304D0 (en) | 2005-08-23 | 2005-10-05 | Netronome Systems Inc | A system and method for processing and forwarding transmitted information |
US8644151B2 (en) | 2007-05-22 | 2014-02-04 | Cisco Technology, Inc. | Processing packet flows |
JP2011141754A (ja) * | 2010-01-07 | 2011-07-21 | Toyota Motor Corp | キャッシュメモリ |
US9032089B2 (en) | 2011-03-09 | 2015-05-12 | Juniper Networks, Inc. | Methods and apparatus for path selection within a network based on flow duration |
US8874876B2 (en) * | 2011-03-22 | 2014-10-28 | Texas Instruments Incorporated | Method and apparatus for packet switching |
US9531812B2 (en) * | 2012-01-20 | 2016-12-27 | Samsung Electronics Co., Ltd. | Method and device for setting priority of data transmission |
US8886827B2 (en) * | 2012-02-13 | 2014-11-11 | Juniper Networks, Inc. | Flow cache mechanism for performing packet flow lookups in a network device |
US8954749B2 (en) * | 2012-04-06 | 2015-02-10 | At&T Intellectual Property I, L.P. | Methods, systems, and product for hashing using twisted tabulation |
FI124398B (en) | 2013-01-04 | 2014-08-15 | Tellabs Oy | A method and apparatus for determining a lookup table implementation for a network element of a software configurable network |
US9361238B2 (en) * | 2014-11-04 | 2016-06-07 | Futurewei Technologies, Inc. | Memory addressing mechanism using a buffer of a hierarchy of collision free hash tables |
-
2014
- 2014-12-23 US US14/580,801 patent/US10284470B2/en not_active Expired - Fee Related
-
2015
- 2015-11-02 JP JP2015215863A patent/JP6064291B2/ja not_active Expired - Fee Related
- 2015-11-17 DE DE102015119889.4A patent/DE102015119889A1/de not_active Withdrawn
- 2015-11-20 CN CN201510811033.9A patent/CN105721300B/zh not_active Expired - Fee Related
- 2015-11-20 KR KR1020150162963A patent/KR101826725B1/ko active Active
Also Published As
Publication number | Publication date |
---|---|
CN105721300A (zh) | 2016-06-29 |
DE102015119889A1 (de) | 2016-06-23 |
KR20160076968A (ko) | 2016-07-01 |
US10284470B2 (en) | 2019-05-07 |
JP2016119651A (ja) | 2016-06-30 |
KR101826725B1 (ko) | 2018-02-07 |
US20160182373A1 (en) | 2016-06-23 |
CN105721300B (zh) | 2019-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6064291B2 (ja) | ネットワークデバイスのフロールックアップ管理のための技術 | |
US9992299B2 (en) | Technologies for network packet cache management | |
CN108431796B (zh) | 分布式资源管理系统和方法 | |
EP3334123B1 (en) | Content distribution method and system | |
US9634938B2 (en) | Adaptive scheduling of data flows in data center networks for efficient resource utilization | |
CN104092756B (zh) | 一种基于dht机制的云存储系统的资源动态分配方法 | |
US8965845B2 (en) | Proactive data object replication in named data networks | |
US9571417B2 (en) | Processing resource access request in network | |
US20140112130A1 (en) | Method for setting packet forwarding rule and control apparatus using the method | |
US10153979B2 (en) | Prioritization of network traffic in a distributed processing system | |
US20130275543A1 (en) | Systems and methods for caching snmp data in multi-core and cluster systems | |
JP6463461B2 (ja) | マルチテナントデータセンタのための最適化フレームワーク | |
WO2017117942A1 (zh) | 一种用于多层sdn控制器的信息查询方法及系统 | |
US9954781B2 (en) | Adaptive setting of the quantized congestion notification equilibrium setpoint in converged enhanced Ethernet networks | |
US10209763B2 (en) | Power aware switching using analytics | |
EP3342113B1 (en) | Dynamic allocation of resources within network devices | |
US20250094350A1 (en) | System and method for cache pooling and efficient usage and i/o transfer in disaggregated and multi-processor architectures via processor interconnect | |
TWI644536B (zh) | User group-based process item management system and method thereof for SDN network | |
WO2025008964A1 (en) | System and method for uniform distribution of one or more data packets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161019 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20161122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161202 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6064291 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |