(57)【要約】ネットワーク要素は、第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを記憶するように構成されており、第１の部分は読み取られることができるのみであり、第２の部分は読み取られることおよび変更されることができる。ネットワーク要素は、フローテーブルエントリの第１の部分を記憶するように構成されている第１のメモリと、フローテーブルエントリの第２の部分を記憶するように構成されている第２のメモリとを備える。複数のプロセッシングコアが、フローテーブルエントリに従ってデータパケットを処理するように構成されており、各プロセッシングコアがさらに、第１のメモリ内のフローテーブルエントリの第１の部分にアクセスするように構成されている。プロセッシングコアによるデータパケットの処理をサポートするために、モジュールが、第２のメモリ内のフローテーブルエントリの第２の部分に排他的にアクセスするように構成されている。
2016515367.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを記憶するように構成されているネットワーク要素であって、前記第１の部分は読み取られることができるのみであり、前記第２の部分は読み取られることおよび変更されることができ、
前記フローテーブルエントリの前記第１の部分を記憶するように構成されている第１のメモリと、
前記フローテーブルエントリの前記第２の部分を記憶するように構成されている第２のメモリと、
前記フローテーブルエントリに従ってデータパケットを処理するように構成されている複数のプロセッシングコアであって、各プロセッシングコアがさらに、前記第１のメモリ内の前記フローテーブルエントリの前記第１の部分にアクセスするように構成されている、複数のプロセッシングコアと、
前記プロセッシングコアによる前記データパケットの前記処理をサポートするために、前記第２のメモリ内の前記フローテーブルエントリの前記第２の部分に排他的にアクセスするように構成されているモジュールと
を備える、ネットワーク要素。
【請求項２】
前記第１のメモリがさらに、各フローテーブルエントリの前記第１の部分で、前記第２のメモリに記憶されている前記フローテーブルエントリの対応する前記第２の部分へのポインタを記憶するように構成されている、請求項１に記載のネットワーク要素。
【請求項３】
前記プロセッシングコアはさらに、前記モジュールが前記データパケットの前記処理をサポートすることを可能にするために、前記第１のメモリに記憶されている前記ポインタを前記モジュールに提供するように構成されている、請求項２に記載のネットワーク要素。
【請求項４】
前記モジュールはさらに、前記第２のメモリに記憶されている前記フローテーブルエントリの前記第２の部分を変更するように構成されている、請求項１に記載のネットワーク要素。
【請求項５】
フローテーブルエントリの第１の部分を前記第１のメモリに追加し、またさらに、前記第１のメモリから任意のフローテーブルエントリの前記第１の部分を除去するように構成されている、第２のモジュールをさらに備える、請求項１に記載のネットワーク要素。
【請求項６】
前記モジュールはさらに、フローテーブルエントリの前記第１の部分が前記第１のメモリに追加されるとき、そのフローテーブルエントリの第２の部分を前記第２のメモリに追加するように構成されており、またさらに、前記第１のメモリから第１の部分が除去された任意のフローテーブルエントリにおいて、そのフローテーブルエントリの前記第２の部分を前記第２のメモリから除去するように構成されている、請求項５に記載のネットワーク要素。
【請求項７】
第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを記憶するように構成されているネットワーク要素であって、前記第１の部分は読み取られることができるのみであり、前記第２の部分は読み取られることおよび変更されることができ、
前記フローテーブルエントリの前記第１の部分を記憶するための第１のメモリ手段と、
前記フローテーブルエントリの前記第２の部分を記憶するための第２のメモリ手段と、
前記フローテーブルエントリに従ってデータパケットを処理するための複数のプロセッシングコア手段であって、各プロセッシングコア手段が、前記第１のメモリ手段内の前記フローテーブルエントリの前記第１の部分にアクセスするように構成されている、複数のプロセッシングコア手段と、
前記プロセッシングコア手段による前記データパケットの前記処理をサポートするために、前記第２のメモリ手段内の前記フローテーブルエントリの前記第２の部分に排他的にアクセスするためのモジュール手段と
を備える、ネットワーク要素。
【請求項８】
前記第１のメモリ手段が、各フローテーブルエントリの前記第１の部分で、前記第２のメモリ手段に記憶されている当該フローテーブルエントリの対応する前記第２の部分へのポインタを記憶するように構成されている、請求項７に記載のネットワーク要素。
【請求項９】
前記プロセッシングコア手段はさらに、前記モジュール手段が前記データパケットの前記処理をサポートすることを可能にするために、前記第１のメモリ手段に記憶されている前記ポインタを前記モジュール手段に提供するように構成されている、請求項８に記載のネットワーク要素。
【請求項１０】
前記モジュール手段がさらに、前記第２のメモリ手段に記憶されている前記フローテーブルエントリの前記第２の部分を変更するように構成されている、請求項７に記載のネットワーク要素。
【請求項１１】
フローテーブルエントリの第１の部分を前記第１のメモリ手段に追加し、また任意のフローテーブルエントリの前記第１の部分を前記第１のメモリ手段から除去するための第２のモジュール手段をさらに備える、請求項７に記載のネットワーク要素。
【請求項１２】
前記モジュール手段は、フローテーブルエントリの前記第１の部分が前記第１のメモリ手段に追加されるとき、そのフローテーブルエントリの第２の部分を前記第２のメモリ手段に追加し、また前記第１のメモリ手段から第１の部分が除去された任意のフローテーブルエントリにおいて、そのフローテーブルエントリの前記第２の部分を前記第２のメモリ手段から除去するように構成されている、請求項１１に記載のネットワーク要素。
【請求項１３】
第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを管理する方法であって、前記フローテーブルエントリの前記第１の部分が第１のメモリに記憶されており、前記フローテーブルエントリの前記第２の部分が第１のメモリに記憶されており、前記第１の部分は読み取られることができるのみであり、前記第２の部分は読み取られることおよび変更されることができ、
複数のプロセッシングコアで、前記フローテーブルエントリに従ってデータパケットを処理することであって、各プロセッシングコアが、前記第１のメモリ内の前記フローテーブルエントリの前記第１の部分にアクセスするように構成されている、処理することと、
前記第２のメモリ内の前記フローテーブルエントリの前記第２の部分にモジュールで排他的にアクセスし、また、前記プロセッシングコアによる前記データパケットの前記処理を前記モジュールでサポートすることと
を備える、方法。
【請求項１４】
前記第１のメモリがさらに、各フローテーブルエントリの前記第１の部分で、前記第２のメモリに記憶されている当該フローテーブルエントリの対応する前記第２の部分へのポインタを記憶するように構成されている、請求項１３に記載の方法。
【請求項１５】
前記モジュールが前記プロセッシングコアによる前記データパケットの前記処理をサポートすることを可能にするために、前記プロセッシングコアで、前記第１のメモリに記憶されている前記ポインタを前記モジュールに提供することをさらに備える、請求項１４に記載の方法。
【請求項１６】
前記モジュールで、前記第２のメモリに記憶されている前記フローテーブルエントリの前記第２の部分を変更することをさらに備える、請求項１３に記載の方法。
【請求項１７】
第２のモジュールで、フローテーブルエントリの第１の部分を前記第１のメモリに追加し、また、前記第２のモジュールで、任意のフローテーブルエントリの前記第１の部分を前記第１のメモリから除去するように構成されている、請求項１３に記載の方法。
【請求項１８】
フローテーブルエントリの前記第１の部分が前記第１のメモリに追加されるとき、前記モジュールで、そのフローテーブルエントリの第２の部分を前記第２のメモリに追加し、また、前記第１のメモリから第１の部分が除去された任意のフローテーブルエントリにおいて、モジュールで、そのフローテーブルエントリの前記第２の部分を前記第２のメモリから除去することをさらに備える、請求項１７に記載の方法。
【請求項１９】
複数のプロセッシングコアによって実行可能なコードおよびネットワーク要素内の１つ以上のモジュールを備える非一時的コンピュータ可読媒体を備えるコンピュータプログラム製品であって、前記ネットワーク要素は第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを記憶するように構成されており、前記第１の部分は読み取られることができるのみであり、前記第２の部分は読み取られることおよび変更されることができ、前記ネットワーク要素はさらに、前記フローテーブルエントリの前記第１の部分を記憶するように構成されている第１のメモリと、前記フローテーブルエントリの前記第２の部分を記憶するように構成されている第２のメモリとを備え、前記コードは、前記ネットワーク要素において実行されるとき、
前記プロセッシングコアに、前記フローテーブルエントリに従ってデータパケットを処理させ、ここにおいて、前記プロセッシングコアは前記第１のメモリ内の前記フローテーブルエントリの前記第１の部分にアクセスし、
前記データパケットの前記処理をサポートするために、モジュールに、前記第２のメモリ内の前記フローテーブルエントリの前記第２の部分に排他的にアクセスさせる、コンピュータプログラム製品。
【請求項２０】
前記第１のメモリがさらに、各フローテーブルエントリの前記第１の部分で、前記第２のメモリに記憶されている当該フローテーブルエントリの対応する前記第２の部分へのポインタを記憶するように構成されている、請求項１９に記載のコンピュータプログラム製品。
【請求項２１】
前記コードはさらに、前記ネットワーク要素において実行されるとき、前記モジュールが前記プロセッシングコアによる前記データパケットの前記処理をサポートすることを可能にするために、前記プロセッシングコアに、前記第１のメモリに記憶されている前記ポインタを前記モジュールに提供するようにさせる、請求項２０に記載のコンピュータプログラム製品。
【請求項２２】
前記コードはさらに、前記ネットワーク要素において実行されるとき、前記モジュールに、前記第２のメモリに記憶されている前記フローテーブルエントリの前記第２の部分を変更させる、請求項１９に記載のコンピュータプログラム製品。
【請求項２３】
前記コードはさらに、前記ネットワーク要素において実行されるとき、第２のモジュールに、フローテーブルエントリの第１の部分を前記第１のメモリに追加させ、また、任意のフローテーブルエントリの前記第１の部分を前記第１のメモリから除去させる、請求項１９に記載のコンピュータプログラム製品。
【請求項２４】
前記コードはさらに、前記ネットワーク要素において実行されるとき、前記モジュールに、フローテーブルエントリの前記第１の部分が前記第１のメモリに追加されるとき、そのフローテーブルエントリの第２の部分を前記第２のメモリに追加させ、また、前記第１のメモリから第１の部分が除去された任意のフローテーブルエントリにおいて、 そのフローテーブルエントリの前記第２の部分を前記第２のメモリから除去させる、請求項２３に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【関連出願】
【０００１】
[0001]本出願は、その全体が参照により本明細書に明確に組み込まれる、２０１３年３月１３日に出願された「ＮＥＴＷＯＲＫ  ＥＬＥＭＥＮＴ  ＷＩＴＨ  ＤＩＳＴＲＩＢＵＴＥＤ  ＦＬＯＷ  ＴＡＢＬＥＳ」と題する米国非仮出願番号第１３／８０２，３５８号の優先権を主張する。
【技術分野】
【０００２】
[0002]本開示は、一般的には電子回路に関し、より具体的には、分配型(distributed)フローテーブルを有するネットワーク要素に関する。
【背景技術】
【０００３】
[0003]パケット交換ネットワークは、個人および組織の間で情報を伝送するために世界全体にわたって広範に用いられている。パケット交換ネットワークにおいては、情報の小さい区画、つまりデータパケットが、任意の数のネットワーク要素（例えば、ルータ、スイッチ、ブリッジまたは同様のネットワークデバイス）によって相互接続されている共通のチャネル上で伝送される。これらのデバイスにおいてフローテーブルは、ネットワークを通じてデータパケットを導くために用いられる。従来、これらのデバイスは閉鎖型(closed)システムとして実現されてきた。より最近では、ネットワーク要素においてフローテーブルを遠隔制御するためのオープンインターフェースを提供する、プログラム可能なネットワークが展開されてきた。一例が、フローテーブルエントリを追加、除去、変更するための標準インターフェースに基づいた仕様であるＯｐｅｎＦｌｏｗである。
【０００４】
[0004]ネットワーク要素は、典型的には、データパケットの処理専用に設計されているネットワークプロセッサを含む。ネットワークプロセッサは、共有メモリを有するマルチプルプロセッシングコアを使用する、ソフトウェアプログラマブルデバイスである。共有メモリへのアクセスを管理するために、様々な方法が用いられうる。例として、共有メモリ領域へのアクセスを必要とするプロセッシングコアは、フラグを設定し、それによって、他のプロセッシングコアに対して共有メモリ領域がロックされているということを指し示しうる。ロックされたメモリ領域へのアクセスを必要とする別のプロセッシングコアは、フラグが除去されるまで、アイドルコンディションのままでありうる。これは、総合的なスループット性能を低下させる可能性がある。多数のプロセッシングコアがメモリをめぐって競合しているときには、性能の劣化が著しくなる可能性がある。
【０００５】
[0005]ＯｐｅｎＦｌｏｗ、または他の同様のプロトコルがネットワーク要素内部に実現されているときには、同時アクセスの間、オーバーヘッドを著しく増加させることなく、フローテーブルエントリを保護することが望ましい。
【発明の概要】
【０００６】
[0007]ネットワーク要素の一態様が開示される。ネットワーク要素は、第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを記憶するように構成されており、第１の部分は読み取られることができるのみであり、第２の部分は読み取られることおよび変更されることができる。ネットワーク要素は、フローテーブルエントリの第１の部分を記憶するように構成されている第１のメモリと、フローテーブルエントリの第２の部分を記憶するように構成されている第２のメモリとを備える。ネットワーク要素はまた、フローテーブルエントリに従ってデータパケットを処理するように構成されている複数のプロセッシングコアを含み、各プロセッシングコアがさらに、第１のメモリ内のフローテーブルエントリの第１の部分にアクセスするように構成されている。プロセッシングコアによるデータパケットの処理をサポートするために、モジュールが、第２のメモリ内のフローテーブルエントリの第２の部分に排他的にアクセスするように構成されている。
【０００７】
[0008]ネットワーク要素の別の態様が開示される。ネットワーク要素は、第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを記憶するように構成されており、第１の部分は読み取られることができるのみであり、第２の部分は読み取られることおよび変更されることができる。ネットワーク要素は、フローテーブルエントリの第１の部分を記憶するための第１のメモリ手段と、フローテーブルエントリの第２の部分を記憶するための第２のメモリとを含む。ネットワーク要素はまた、フローテーブルエントリに従ってデータパケットを処理するための複数のプロセッシングコア手段を含み、各プロセッシングコア手段が、第１のメモリ手段内のフローテーブルエントリの第１の部分にアクセスするように構成されている。モジュール手段が、第２のメモリ手段内のフローテーブルエントリの第２の部分に排他的にアクセスし、また、プロセッシングコア手段によるデータパケットの処理をサポートするように構成されている。
【０００８】
[0009]複数のフローテーブルエントリを管理する方法の一態様が開示される。各フローテーブルエントリは第１および第２の部分を有し、フローテーブルエントリの第１の部分が第１のメモリに記憶されており、フローテーブルエントリの第２の部分が第２のメモリに記憶されており、第１の部分は読み取られることができるのみであり、第２の部分は読み取られることおよび変更されることができる。この方法は、フローテーブルエントリに従って複数のプロセッシングコアでデータパケットを処理することを含み、各プロセッシングコアは、第１のメモリ内のフローテーブルエントリの第１の部分にアクセスするように構成されている。この方法はさらに、プロセッシングコアによるデータパケットの処理をサポートするために、モジュールで、第２のメモリ内のフローテーブルエントリの第２の部分にアクセスすることを含む。
【０００９】
[0010]コンピュータプログラム製品の一態様が開示される。コンピュータプログラム製品は、複数のプロセッシングコアによって実行可能なコードおよびネットワーク要素内の１つ以上のモジュールを備える非一時的コンピュータ可読媒体を含む。ネットワーク要素は、第１および第２の部分をそれぞれが有する複数のフローテーブルエントリを記憶するように構成されており、第１の部分は読み取られることができるのみであり、第２の部分は読み取られることおよび変更されることができる。ネットワーク要素はさらに、フローテーブルエントリの第１の部分を記憶するように構成されている第１のメモリと、フローテーブルエントリの第２の部分を記憶するように構成されている第２のメモリとを含む。ネットワーク要素において実行されるとき、コードは、フローテーブルエントリに従ってプロセッシングコアにデータパケットを処理させ、プロセッシングコアは、第１のメモリ内のフローテーブルエントリの第１の部分にアクセスすることによって、データパケットを処理する。ネットワーク要素において実行されるとき、コードはさらに、プロセッシングコアによるデータパケットの処理をサポートするために、モジュールに、第２のメモリ内のフローテーブルエントリの第２の部分に排他的にアクセスさせる。
【００１０】
[0011]装置および方法の他の態様は、装置および方法の様々な態様が例示として説明および示されている下記の詳細な説明から、当業者には容易に明らかになるであろうことが理解される。認識されるであろうように、これらの態様は他の異なる形式で実現されうるし、また、その各々の詳細は他の様々な点において変更が可能である。したがって、図面および詳細な説明は、本質的に例示的であり、限定的であるとみなされるべきではない。
【００１１】
[0012]限定ではなく例として、装置および方法の様々な態様が、添付の図面を参照して詳細な説明において提示される。
【図面の簡単な説明】
【００１２】
【図１】テレコミュニケーションシステムの例を例示する概念ブロック図である。
【図２】ネットワーク要素の例を例示する機能ブロック図である。
【図３】ルックアップテーブル内のフローテーブルエントリの例を例示する概念図である。
【図４】メモリ内のフローテーブルエントリを分配する例を例示する概念図である。
【図５】ネットワーク要素の機能性の例を例示するフロー図である。
【図６Ａ】フローテーブルエントリをルックアップテーブルに追加するための、コントローラを用いたネットワーク要素インターフェースの機能性の例を例示するフロー図である。
【図６Ｂ】フローテーブルエントリをルックアップテーブルから削除するための、コントローラを用いたネットワーク要素インターフェースの機能性の例を例示するフロー図である。
【図６Ｃ】ルックアップテーブルのフローテーブルエントリを変更するための、コントローラを用いたネットワーク要素インターフェースの機能性の例を例示するフロー図である。
【発明を実施するための形態】
【００１３】
[0021]様々な概念が、添付図面を参照して、以下においてより十分に説明される。これらの概念は、しかしながら、当業者によって多くの異なる形式で具現化されうるものであり、ここに提示される任意の特定の構成または機能に限定されるものとして解釈されるべきではない。むしろ、これらの概念は、本開示が徹底的かつ完全なものとなり、これらの概念の範囲が当業者に十分に伝達されるように提供される。詳細な説明は、特定の詳細を含みうるしかしながら、これらの概念が、これらの特定の詳細なしに実施されうることは、当業者にとって明らかであろう。いくつかの事例では、周知の構造およびコンポーネントが、本開示全体にわたって提示される様々な概念を曖昧にすることを避けるために、ブロック図形式で示される。
【００１４】
[0022]本開示全体にわたって提示される様々な概念は、ネットワーク要素における実施によく適している。ネットワーク要素（例えば、ルータ、スイッチ、ブリッジ、または同様のネットワークデバイス）は、ネットワーク上の他の機器（例えば、他のネットワーク要素、終端局(end station)、または同様のネットワークデバイス）を通信可能に相互接続する任意のネットワーク機器を含む。しかしながら、当業者には容易に分かるであろうように、本明細書に開示された様々な概念は他の用途に拡張されうる。
【００１５】
[0023]これらの概念は、ハードウェアまたは、ハードウェアプラットフォーム上で実行されるソフトウェアとして実現されうる。ハードウェアまたはハードウェアプラットフォームは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）もしくは他のプログラマブル論理コンポーネント、離散ゲートもしくはトランジスタ論理、離散ハードウェアコンポーネント、もしくはそれらの任意の組み合わせ、または本明細書に説明される機能を行うように設計された他の任意の適切なコンポーネントでありうる。汎用プロセッサは、マイクロプロセッサでありうるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンでありうる。プロセッサはまた、計算コンポーネントの組み合わせ、例えば、ＤＳＰとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰと連携した１つ以上のマイクロプロセッサ、または他の任意のそのような構成として実現されうる。
【００１６】
[0024]ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と称されても、それ以外で称されても、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行ファイル、実行スレッド、プロシージャ、関数等を意味すると広く解釈されるものとする。ソフトウェアは、コンピュータ可読媒体に存在しうる。コンピュータ可読媒体は、例として、磁気記憶デバイス（例えば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ）、光学ディスク（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ））、スマートカード、フラッシュメモリデバイス（例えば、カード、スティック、キードライブ）、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデートレートＲＡＭ（ＤＤＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ（登録商標））、汎用レジスタ、またはソフトウェアを記憶するための他の任意の適切な非一時的媒体を含みうる。
【００１７】
[0025]図１は、テレコミュニケーションシステムの例を例示する概念ブロック図である。テレコミュニケーションシステム１００は、マルチプルユーザ端末１０３Ａ、１０３Ｂを相互接続するパケットベースネットワークで実現されうる。このパケットベースネットワークは、インターネットなどのワイドエリアネットワーク（ＷＡＮ）であっても、イーサネット（登録商標）ネットワークなどのローカルエリアネットワーク（ＬＡＮ）であっても、他の任意の適切なネットワークであってもよい。このパケットベースネットワークは、地球の、国家の、地域の、地方自治体の、もしくは施設内部の、または他の任意の適切な領域を含む、任意の適切な領域をカバーするように構成されうる。
【００１８】
[0026]パケットベースネットワークは、ネットワーク要素１０２とともに示されている。実際には、パケットベースネットワークは、地理的カバー範囲(geographic coverage)および他の関係要因に応じて任意の数のネットワーク要素を有しうる。説明される実施形態においては、明瞭化のため、単一のネットワーク要素１０２について説明される。ネットワーク要素１０２は、スイッチ、ルータ、ブリッジ、またはネットワーク上の他の機器を相互接続する他の任意の適切なデバイスでありうる。ネットワーク要素１０２は、１つ以上のルックアップテーブルを有するネットワークプロセッサ１０４を含みうる。各ルックアップテーブルは、データパケットを処理するのに用いられる１つ以上のフローテーブルエントリを含む。
【００１９】
[0027]ネットワーク要素１０２は、コントローラ１０８を用いてオープンインターフェースを提供する、プログラマブルデバイスとして実現されうる。コントローラ１０８は、ネットワーク要素１０２を管理するように構成されうる。例として、コントローラ１０８は、ネットワーク要素１０２内のルックアップテーブルを、ＯｐｅｎＦｌｏｗなどのオープンプロトコル、または何らかの他の適切なプロトコルを用いて遠隔制御するように構成されうる。セキュアチャネル１０６は、コマンドおよびデータパケットが２つのデバイス間で送信されるようにするコントローラ１０８を用いて、ネットワーク要素１０２によって、確立される。説明される実施形態においては、コントローラ１０８は、ルックアップテーブル内のフローテーブルエントリを、積極的に、または反応的に（すなわちデータパケットに応答して）、追加、変更、削除することができる。
【００２０】
[0028]図２は、ネットワーク要素１０６の例を例示する機能ブロック図である。ネットワーク要素１０６は、２つのプロセッシングコア２０４Ａ、２０４Ｂとともに示されているが、個別の用途および総合的な設計制約に応じて、任意の数のプロセッシングコアで構成されうる。後により詳細に説明するように、プロセッシングコア２０４Ａ、２０４Ｂは、フローテーブルエントリに従ってデータパケットを処理するための手段を提供する。プロセッシングコア２０４Ａ、２０４Ｂは、メモリコントローラ２０７およびメモリアービタ(arbiter)２０６を通じて共有メモリ２０８へのアクセスを有しうる。この例において共有メモリ２０８は、２つのスタティックランダムアクセスメモリ（ＳＲＡＭ）バンク２０８Ａ、２０８Ｂから成るが、単一またはマルチプルメモリバンクが他の任意の適切な配置をなされた他の任意の適切な記憶デバイスで実現されうる。ＳＲＡＭバンク２０８Ａ、２０８Ｂは、プログラムコード、ルックアップテーブル、データパケット、および／または他の情報を記憶するために用いられうる。
【００２１】
[0029]メモリアービタ２０６は、プロセッシングコア２０４Ａ、２０４Ｂによる共有メモリ２０８へのアクセスを管理するように構成されている。例として、共有メモリ２０８へのアクセスを求めるプロセッシングコアは、メモリアービタ２０６に、読み取りまたは書き込み要求を配信(broadcast)しうる。メモリアービタ２０６は次に、要求しているプロセッシングコアに、読み取りまたは書き込み動作を行うための共有メモリ２０８へのアクセスを許可しうる。１つ以上のプロセッシングコアからのマルチプルな読み取りおよび／または書き込み要求がメモリアービタ２０６で競合する際には、メモリアービタ２０６は次に、読み取りおよび／または書き込み動作が行われることになる順序を決定しうる。
【００２２】
[0030]プロセッシングコア２０４Ａ、２０４Ｂが行う様々な処理アプリケーションは、ＳＲＡＭバンクへの排他的(exclusive)アクセス、または代替として、ＳＲＡＭバンク内部のメモリ領域もしくはＳＲＡＭバンクにわたって分配されたメモリ領域への排他的アクセスを必要としうる。本開示の背景の箇所で既に説明したように、共有メモリ領域のアクセシビリティまたは非アクセシビリティを指し示すフラグを用いうる。共有メモリ領域への排他的アクセスを求めるプロセッシングコアは、その共有メモリ領域のアクセシビリティを決定するためにこのフラグを読み取ることができる。共有メモリ領域がアクセスのために利用可能であることをフラグが指し示している場合には、メモリコントローラ２０７は、共有メモリ領域が「ロックされている」ことを指し示すためにそのフラグを設定し、プロセッシングコアは、共有メモリ領域にアクセスするように進みうる。ロックされている状態の間、もう一方のプロセッシングコアは共有メモリ領域にアクセスする能力がない。処理動作が完了すると、メモリコントローラ２０７によってフラグは除去され、共有メモリ領域はロックが解除されている状態に戻る。
【００２３】
[0031]ネットワーク要素１０６はまた、配布(dispatch)モジュール２０２および再配列(reorder)モジュール２１０とともに示されている。これらのモジュールは、ネットワーク要素１０６のためのネットワークインターフェースを提供する。データパケットは、配布モジュール２０２でネットワーク要素１０６に入る。配布モジュール２０２は、処理のために、このデータパケットをプロセッシングコア２０４Ａ、２０４Ｂに分配(distribute)する。配布モジュール２０２はまた、データパケットのそれぞれに順序番号を割り振りうる。再配列モジュール２１０は、処理されたデータパケットをプロセッシングコア２０４Ａ、２０４Ｂから取り出す。順序番号は、配布モジュール２０２によって受信された順にデータパケットをネットワークに出力するために、再配列モジュール２１０によって用いられうる。
【００２４】
[0032]プロセッシングコア２０４Ａ、２０４Ｂは、共有メモリ２０８に記憶されているルックアップテーブル内のフローテーブルエントリに基づいてデータパケットを処理するように構成されている。各フローテーブルエントリは、データパケットが整合(match)される整合フィールドのセット、整合の優先度のための優先順位フィールド、データパケットを追跡するためのカウンタのセット、および適用すべき命令のセットを含む。図３は、ルックアップテーブル内のフローエントリの例を例示する概念図である。この例において、整合フィールドは、ＩＰソースアドレス３０２、ＩＰ宛先アドレス３０４、プロトコル（例えば、ＴＣＰ、ＵＤＰ等）３０６などの様々なデータパケットヘッダフィールドを含みうる。整合フィールドに続くのが、データパケットカウンタ３０８、持続時間カウンタ３１０、優先順位フィールド３１２、タイムアウト値カウンタ３１４、および命令セット３１６である。
【００２５】
[0033]フローテーブルエントリは、整合フィールドおよび優先順位によって識別される。データパケットがプロセッシングコアによって受信されるとき、そのデータパケット内の一定の整合フィールドが抽出され、１つめのルックアップテーブル内のフローテーブルエントリと比較される。そのデータパケット内の整合フィールドがフローテーブルエントリ内のものと整合する場合、データパケットはフローテーブルエントリと整合する。整合が見いだされた場合、そのエントリと関連付けられるカウンタは更新され、そのエントリに含まれる命令セットがデータパケットに適用される。命令セットは、データパケットを別のフローテーブルに導くか、または代替として、ネットワークへの出力のために、データパケットを再配列モジュールに導きうる。命令セットがデータパケットを再配列モジュールに導くとき、データパケットが各フローテーブルによって処理され実行される間、データパケットと関連付けられるアクションのセットが蓄積される。
【００２６】
[0034]プロセッシングコアによって受信された、フローテーブルエントリと整合しないデータパケットは、「テーブルミス(table miss)」と称される。テーブルミスは多様な方法で対処しうる。例として、データパケットは破棄(drop)されたり、別のフローテーブルに送信されたり、コントローラに転送されたり、何らかの他の処理にかけられたりしうる。
【００２７】
[0035]ネットワーク要素１０６はまた、アプリケーションプログラミングインターフェース（ＡＰＩ）２１２とともに示されている。ＡＰＩ２１２は、別個のプロセッサ上で走行するプロトコルスタックを含みうる。プロトコルスタックは、コントローラ１０８を用いてセキュアチャネルの確立を担う（図１参照）。セキュアチャネルは、ネットワーク要素１０６とコントローラとの間で、コマンドおよびデータパケットを送信するのに用いられうる。後により詳細に説明するように、コントローラはまた、ルックアップテーブル内のフローテーブルエントリを追加、変更、削除するためにセキュアチャネルを用いうる。
【００２８】
[0036]本開示の背景の箇所で既に検討したように、多数のプロセッシングコアがメモリリソースをめぐって競合しているときには、ネットワーク要素が著しい性能の劣化を被りうる。性能への影響を最小限に抑えるために、様々な方法が用いられうる。１つの実施形態においては、ルックアップテーブル内の各テーブルフローエントリがマルチプルなメモリ領域にわたって分配される。具体的には、各フローテーブルエントリが、読み取りのみのフィールドを備える第１の部分と、読み取り／書き込みフィールドを備える第２の部分とに分割される。この実施形態においては、第１のＳＲＡＭバンク２０８Ａが、フローテーブルエントリの第１の部分を記憶するための手段を提供し、第２のＳＲＡＭバンク２０８Ｂが、フローテーブルエントリの第２の部分を記憶するための手段を提供する。図４は、このようにしてフローテーブルエントリを分配する例を例示する概念図である。第１のＳＲＡＭバンク２０８Ａ内の各フローテーブルエントリは、ＩＰソースアドレス３０２、ＩＰ宛先アドレス３０４、プロトコル３０６、優先順位フィールド３１２、命令セット３１６、およびポインタ３１８を含む。ポインタ３１８は、第２のＳＲＡＭバンク２０８Ｂにおける対応する読み取り／書き込みフィールドの位置を識別するために用いられる。読み取り／書き込みフィールドは、パケットカウンタ３０８、持続時間カウンタ３１０、タイムアウト値３１４および有効フラグ３２０を含む。
【００２９】
[0037]図２に戻ると、プロセッシングコア２０４Ａ、２０４Ｂは、第１のＳＲＡＭバンク２０８Ａ内のフローテーブルエントリの読み取りのみのフィールドへのアクセスを有するが、第２のＳＲＡＭバンク２０８Ｂ内のフローテーブルエントリの読み取り／書き込みフィールドにアクセスする必要がない。この実施形態においては、再配列モジュール２１０が、第２のＳＲＡＭバンク２０８Ｂ内のフローテーブルエントリの読み取り／書き込みフィールドに排他的にアクセスするための手段を提供する。代替の実施形態においては、配布モジュール２０２が、またはネットワーク要素１０６内の別個のモジュールが、第２のＳＲＡＭバンク２０８Ｂ内のフローテーブルエントリの読み取り／書き込みフィールドに排他的にアクセスするために用いられうる。この別個のモジュールは、他の機能をも行いうるか、または第２のＳＲＡＭバンク２０８Ｂ内のフローテーブルエントリの管理専用でありうる。好ましくは、ネットワーク要素１０６の性能を劣化させる可能性のあるロック機構の必要性を避けるために、配布モジュールであろうと、再配列モジュールであろうと、別のモジュールであろうと、単一のモジュールが、第２のＳＲＡＭバンク２０８Ｂ内のフローテーブルエントリの読み取り／書き込みフィールドへの排他的アクセスを有する。
【００３０】
[0038]図５はネットワーク要素の機能性の例を例示するフロー図である。上記の説明と一致するように、この機能性はハードウェアまたはソフトウェアとして実現されうる。ソフトウェアは、コンピュータ可読媒体上に記憶され、プロセッシングコアおよびネットワーク要素内に存在する１つ以上のモジュールによって実行可能でありうる。コンピュータ可読媒体は、一方または両方のＳＲＡＭバンクでありうる。代替として、コンピュータ可読媒体は、ソフトウェアを記憶することができ、かつプロセッシングコアおよびモジュールによってアクセスされることができる他の任意の非一時的媒体でありうる。
【００３１】
[0039]動作中、配布モジュールは、ネットワークからデータパケットを受信し、２つのプロセッシングコア２０４Ａ、２０４Ｂ間の負荷の均衡を保つように試みる配布アルゴリズムを通じて、データパケットを第１のプロセッシングコア２０４Ａまたは第２のプロセッシングコア２０４Ｂのいずれかに分配する。各プロセッシングコア２０４Ａ、２０４Ｂは、ルックアップテーブル内のフローテーブルエントリに従って配布モジュール２０２から受信したデータパケットの処理を担う。
【００３２】
[0040]図５を参照すると、ブロック５０２において、データパケットは配布モジュールによって受信され、一方のプロセッシングコアに分配される。ブロック５０４において、プロセッシングコアは、受信したデータパケットから抽出された整合フィールドを、第１のＳＲＡＭバンク内のフローテーブルエントリと比較する。ブロック５０６において整合が見いだされた場合、ブロック５０８においてプロセッシングコアは、命令セットをデータパケットに適用し、ポインタを再配列モジュールに転送する。ブロック５１０において再配列モジュールは、第２のＳＲＡＭバンク内の対応するフローテーブルエントリに対しカウンタおよびタイムアウト値を更新するためにポインタを用いる。他方で、プロセッシングコアによって受信されたデータパケットが、第１のＳＲＡＭバンク内のフローテーブルエントリと整合しない場合、ブロック５１２において、そのデータパケットはテーブルミスとして処理されうる。換言すれば、そのデータパケットは、別のフローテーブルに送信されたり、コントローラに転送されたり、何らかの他の処理にかけられたりしうる。
【００３３】
[0041]図１に関連して既に説明したように、コントローラは、ネットワーク要素で確立されたセキュアチャネルを通じた、フローテーブルエントリの追加、削除、変更を担う。ＡＰＩ２１２は、コントローラからのコマンドに応答した、ルックアップテーブルの管理を担う。ＡＰＩ２１２は、配布モジュール２０２および再配列モジュール２１２を通じてルックアップテーブルを管理する。ネットワーク要素１０６の１つの実施形態においては、配布モジュール２０２が、第１のＳＲＡＭバンク２０８Ａに記憶されているフローテーブルエントリの一部分を追加および削除するための手段を提供し、再配列モジュール２１２が、第２のＳＲＡＭバンク２０８Ｂに記憶されているフローテーブルエントリの一部分を追加、削除、および変更するための手段を提供する。代替として、フローテーブルエントリを追加、削除、および変更するために、配布モジュール２０２、再配列モジュール２１２、ネットワーク要素１０６内の別のモジュール（図示せず）、またはそれらの任意の組み合わせを用いうる。
【００３４】
[0042]図６Ａ−６Ｃは、コントローラを有するネットワーク要素インターフェースの機能性の例を例示するフロー図である。上記の説明と一致するように、この機能性はハードウェアまたはソフトウェアとして実現されうる。ソフトウェアは、コンピュータ可読媒体に記憶され、ＡＰＩ、プロセッシングコア、およびネットワーク要素内に存在する１つ以上のモジュールによって実行可能でありうる。コンピュータ可読媒体は、一方または両方のＳＲＡＭバンクでありうる。代替として、コンピュータ可読媒体は、ソフトウェアを記憶することができ、かつプロセッシングコアおよびモジュールによってアクセスされることができる他の任意の非一時的媒体でありうる。
【００３５】
[0043]図６Ａを参照すると、ＡＰＩは、ブロック６０２において、配布モジュールに「追加」メッセージを送信することによって、フローテーブルエントリを追加する。配布モジュールは、ブロック６０４において、整合フィールドのハッシュキーに基づいて、または何らかの他の適切な手段によって、ルックアップテーブル内のインデックス(index)を計算する。ブロック６０６において、配布モジュールは、第１および第２のＳＲＡＭバンクの両方内のフローテーブルエントリに対してメモリを割り当てる。ブロック６０８において、配布モジュールは、フローテーブルエントリの読み取り専用フィールドを、第１のＳＲＡＭバンクに書き込み、対応するフローテーブルエントリに対する読み取り／書き込みフィールドが記憶されることになる第２のＳＲＡＭバンク内の位置へのポインタを、読み取り専用フィールドに付加する。ブロック６１０において、配布モジュールはポインタを再配列モジュールに転送する。ブロック６１２において、再配列モジュールは次に、ポインタによって識別される第２のＳＲＡＭバンク内のメモリ位置に、カウンタ、タイムアウト値および有効フラグを設定する。
【００３６】
[0044]図６Ｂを参照すると、ＡＰＩは、ブロック６２２において配布モジュールに「削除」メッセージを送信することによって、フローテーブルエントリを削除しうる。フローテーブルエントリは、このメッセージにおいて、その整合フィールドおよび優先順位によって識別される。ブロック６２４において、配布モジュールは、「削除」メッセージに含有される整合フィールドおよび優先順位を、第１のＳＲＡＭバンク内のフローテーブルエントリと比較する。ブロック６２６において整合が見いだされた場合、ブロック６２８において配布モジュールは、第１のＳＲＡＭバンクからその部分のフローテーブルエントリ（すなわち、読み取り専用フィールド）を削除し、ポインタを再配列モジュールに転送する。ブロック６３０において、再配列モジュールは、第２のＳＲＡＭバンクにおける対応する読み取り／書き込みフィールド（すなわち、カウンタ、タイムアウト値および有効フラグ）の位置を特定するためにポインタを用い、読み取り／書き込みフィールドを削除する。他方で、ブロック６２６で整合が見いだされなかった場合には、ブロック６３２において、ＡＰＩを介してテーブルミスメッセージがコントローラのもとに送信されうるうる。
【００３７】
[0045]最後に、図６Ｃを参照すると、ＡＰＩは、ブロック６４２において配布モジュールに「変更」メッセージを送信することによって、フローテーブルエントリを変更しうる。このフローテーブルエントリは、このメッセージにおいて、その整合フィールドおよび優先順位によって識別される。ブロック６４４において、配布モジュールは、「変更」メッセージに含有される整合フィールドおよび優先順位を、第１のＳＲＡＭバンク内のフローテーブルエントリと比較する。ブロック６４６において整合が見いだされた場合、配布モジュールはブロック６４８において、変更メッセージおよびポインタを再配列モジュールに転送する。ブロック６５０において、再配列モジュールは、第２のＳＲＡＭバンクにおける対応する読み取り／書き込みフィールド（すなわち、カウンタ、タイムアウト値および有効フラグ）の位置を特定するためにポインタを用い、変更メッセージに従って読み取り／書き込みフィールドを変更する。他方で、ブロック６４６で整合が見いだされなかった場合には、ブロック６５２においてＡＰＩを介してテーブルミスメッセージがコントローラのもとに送信されうるうる。
【００３８】
[0046]本開示の様々な態様は、当業者が本発明を実施することを可能にするために提供される。本開示全体にわたって提示される例示的な実施形態への様々な変更は、当業者にとって容易に明らかであり、ここに開示された概念は他の磁気記憶デバイスに拡張されうる。よって、特許請求の範囲は、本開示の様々な態様に限定されることを意図されるものではなく、特許請求の範囲の文言と一致する全範囲を与えられるべきである。当業者に周知の、または後に周知となる、本開示全体にわたって説明された例示的な実施形態の様々なコンポーネントと構造的および機能的に同等なものはすべて、参照によって本明細書に明確に組み込まれ、特許請求の範囲に包含されるように意図される。さらに、本明細書に開示したいかなるものも、その開示が特許請求の範囲に明示的に記載されているか否かに関わらず、公に捧げられることは意図されていない。いかなる請求項の要素も、その要素が「〜ための手段」という表現を用いて明示的に記載されない限り、または方法の請求項の場合、その要素が「〜ためのステップ」という表現を用いて記載されない限り、米国特許法第１１２条第６項の規定に基づいて解釈されるべきではない。
【図１】
2016515367.tif 000003
【図２】
2016515367.tif 000004
【図３】
2016515367.tif 000005
【図４】
2016515367.tif 000006
【図５】
2016515367.tif 000007
【図６Ａ】
2016515367.tif 000008
【図６Ｂ】
2016515367.tif 000009
【図６Ｃ】
2016515367.tif 000010
【国際調査報告】
2016515367.tif 000011
2016515367.tif 000012