(57)【要約】  パケットあるいはパケットのストリームが特定のキューにエンキューされる、フロー・ピンニングを実行するシステムオンチップまたはサーバオンチップであって、各キューは、マルチプロセッサ／マルチコアシステムまたはサーバオンチップ内のそれぞれのコアと関連付けられる。特定のプロセッサに割り当てられたパケットのストリーム、またはフローのそれぞれで、サーバオンチップは、同じ単一のイーサネットインタフェースからの複数のストリームからの複数のキューからパケットを並列で処理して取り込むことができる。各キューは、それらの割り当てられたプロセッサに割り込みを発行することができ、各プロセッサがそれらのそれぞれのキューから同時にパケットを受信することを可能にする。
2018521596.tif 000002
【特許請求の範囲】
【請求項１】
サーバオンチップであって、
パケットからメタデータストリングを抽出するように構成された、プロセッサによって実行される第１のデータ構造と、
前記メタデータストリングに基づいて、前記パケットを結果データベースに関連付けるように構成された、前記プロセッサによって実行される第２のデータ構造と、
前記結果データベースに基づいてキューに前記パケットを割り当てるように構成されたイーサネット・ダイレクト・メモリ・アクセス・エンジンと、を含み、ここで前記キューはマルチプロセッサのそれぞれのコアに関連付けられる、
サーバオンチップ。
【請求項２】
前記データ構造が、パトリシア・ツリーであり、および前記第２のデータ構造はＡＶＬ探索木である、請求項１に記載のサーバオンチップ。
【請求項３】
前記メタデータストリングが、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、請求項１に記載のサーバオンチップ。
【請求項４】
前記メタデータストリングが、４つの情報項目を含む１２バイト長の文字列である、請求項１に記載のサーバオンチップ。
【請求項５】
前記第２のデータ構造が、検索テーブルを前記メタデータストリングで索引付けすることに基づいて、関連付けられた前記結果データベースと前記パケットを関連させ、前記第１のデータ構造が、複数のパケットから複数のメタデータストリングを抽出する、請求項１に記載のサーバオンチップ。
【請求項６】
前記マルチプロセッサのコアに割り込みを発行するように構成されたキューマネージャをさらに備え、
前記キューはそれぞれの前記コアに割り込みを発行し、
前記イーサネット・ダイレクト・メモリ・アクセス・エンジンは、前記結果データベースに基づいて、空きバッファプールに前記パケットをコピーするようにさらに構成された、
請求項１に記載のサーバオンチップ。
【請求項７】
マルチプロセッサのコアへのパケットストリームのフロー・ピンニングを実行するためのコンピュータ実装方法であって、
第１のデータ構造を実行するプロセッサによって、パケットからメタデータストリングを抽出するステップと、
第２のデータ構造を実行する前記プロセッサによって、前記メタデータストリングに基づいて、前記パケットをそれぞれの結果データベースに関連づけるステップと、
イーサネット・ダイレクト・メモリ・アクセス・エンジンによって、前記結果データベースに基づいて、前記パケットをキューに割り当てるステップと、を含み、ここで前記キューはマルチプロセッサのそれぞれのコアに関連付けられる、
コンピュータ実装方法。
【請求項８】
抽出する前記ステップは、パトリシア・ツリーを使用することによって１２バイト長の文字列を抽出するステップをさらに含み、前記文字列は、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、請求項７に記載のコンピュータ実装方法。
【請求項９】
前記割り当てられたキューを介してそれぞれの前記コアに割り込みを発行するステップをさらに含み、
抽出する前記ステップが、複数のパケットから複数のメタデータストリングを抽出するステップと、
前記結果データベースに基づいて、空きバッファプールに前記パケットをコピーするステップと、
デスクリプタメッセージをキューにエンキューするステップであって、前記デスクリプタメッセージは、コピーされた前記パケットと所定のバッファに基づく、エンキューするステップと、をさらに含む、
請求項７に記載のコンピュータ実装方法。
【請求項１０】
サーバオンチップであって、
パケットからメタデータストリングを抽出するための手段と、
前記メタデータストリングに基づいて、前記パケットをマルチプロセッサのそれぞれのコアに関連付けるための手段と、
前記パケットを前記プロセッサに関連付けられたキューに割り当てるための手段と、を備えた、
サーバオンチップ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、サーバオンチップ（ｓｅｒｖｅｒ ｏｎ ａ ｃｈｉｐ）におけるフロー・ピンニング（ｆｌｏｗ ｐｉｎｎｉｎｇ）に関する。
【背景技術】
【０００２】
コンピュータネットワークにおいて、イーサネット（登録商標、以下同じ）インタフェースは、多くの異なるイーサネット接続またはフローからパケットを受信することができる。いくつかのシステムにおいて、パケットのこれらのフローは、専用のプロセッサによって受信され、連続的に処理される。別の従来のシステムにおいて、パケットのこれらのフローは、パケット及び／又はフローを、マルチコアプロセッサの所与のＣＰＵ（中央処理ユニット）に関連付けられた特定のキューにエンキューする周辺装置のネットワークインタフェースカードによって処理される。しかしながら、ネットワークインタフェースカードはコスト、電力、および待ち時間の両方の観点では高価であり、また一方、システム内の多くのスペースを占有する。
【０００３】
上記の説明は、チップ上のシステムにおいてフロー・ピンニングを実行するための現在の技術の文脈上の概要を提供するだけであり、包括的ではない。
【０００４】
例示的な実施形態において、サーバオンチップは、パケットからメタデータストリングを抽出するように構成されたプロセッサによって実行される、第１のデータ構造を含む。サーバオンチップは、メタデータストリングに基づいてパケットを結果データベースに関連付けるように構成された、プロセッサによって実行される第２のデータ構造を含む。サーバオンチップは、結果データベースに基づいてキューにパケットを割り当てるように構成されたイーサネット・ダイレクト・メモリ・アクセス・エンジンを含み、キューは、マルチプロセッサのそれぞれのコアに関連付けられる。
【０００５】
別の例示的な実施形態において、マルチプロセッサのコアへのパケットストリームのフロー・ピンニングのためのコンピュータ実装方法は、第１のデータ構造を実行するプロセッサによって、パケットからメタデータストリングを抽出するステップを含む。方法は、メタデータストリングに基づいて、第２のデータ構造を実行するプロセッサによって、パケットをそれぞれの結果データベースに関連付けるステップを含む。方法は、結果データベースに基づいて、イーサネット・ダイレクト・メモリ・アクセス・エンジンによって、パケットをキューに割り当てるステップを含み、キューはマルチプロセッサのそれぞれのコアに関連付けられる。
別の例示的な実施形態において、サーバオンチップは、パケットからメタデータストリングを抽出する手段と、メタデータストリングに基づいて、パケットをマルチプロセッサのそれぞれのコアに関連付けるための手段と、を備える。サーバオンチップは、パケットをプロセッサに関連付けられたキューに割り当てるための手段を含むことができる。
【図面の簡単な説明】
【０００６】
【図１】フロー・ピンニングを実行するシステムの実施形態を図示するブロック図である。
【図２】フロー・ピンニングを実行するシステムの実施形態を図示するブロック図である。
【図３】パケットヘッダからメタデータ抽出を実行するシステムの実施形態を図示するブロック図である。
【図４】パケットエンキューを実行するシステムの実施形態を図示するブロック図である。
【図５】フロー・ピンニングを実行するシステムの実施形態を図示するブロック図である。
【図６】フロー・ピンニングのための方法の実施形態の流れ図である。
【図７】パケットデータからメタデータストリングを抽出する手段の実施形態の流れ図である。
【図８】メタデータストリングに基づいてパケットをプロセッサに関連付ける手段の実施形態の流れ図である。
【図９】プロセッサに関連付けられたキューにパケットを割り当てるための手段の一実施形態の流れ図である。
【図１０】電子コンピューティング環境のブロック図である。
【図１１】データ通信ネットワークのブロック図である。
【発明を実施するための形態】
【０００７】
様々な実施形態が、フロー・ピンニングを実行するシステムオンチップまたはサーバオンチップを提供し、パケットまたはパケットのストリームは特定のキューにエンキューされ、各キューはマルチプロセッサ／マルチコアシステムまたはサーバオンチップのそれぞれのコアに関連付けられる。特定のプロセッサに割り当てられたパケットの各ストリーム、またはフローについて、サーバオンチップは、同じ単一のイーサネットインタフェースからの複数のストリームからの複数のキューからパケットを並列で処理して取り込むことができる。各キューは、それらの割り当てられたプロセッサに割り込みを発行することができ、各プロセッサがそれらのそれぞれのキューから同時にパケットを受信することを可能にする。従って、異なるストリームについて並列にパケットを受信して処理することによって、パケット処理速度が増加する。
【０００８】
このように、各キューがそれぞれのコアに関連付けられている、フロー・ピンニングを実行すると、複数のストリームを備えた着信トラフィックのスループットが増加することを可能にする。キャッシュとＣＰＵ使用率も向上し、各コアが使用され、および各コアが自身のキャッシュメモリにアクセスすることができる。これは、システムスループットを効率的に向上させながら、ハードウェアコストを削減することを可能にする。
【０００９】
図１は、本明細書に記載の実施形態に従ったフロー・ピンニングを実行するシステム１００を示す。システム１００は、イーサネットインタフェース１０４を含むシステム及び／又はサーバオンチップ（ＳｏＣ）１０２を含む。イーサネットインタフェース１０４は、ネットワークを介して着信パケットを受信する。パケットは、ネットワーク上の１つ又は複数の別のコンピューティングデバイスに関連付けられたデータの１つ又は複数のストリームまたはフローを形成することができる。いくつかの実施形態において、パケットの複数のフローは、単一のコンピューティングデバイスから受信されることができ、および別の実施形態において、パケットの複数のフローは、対応するコンピューティングデバイスから受信されることができる。パケットがそこから受信されるコンピューティングデバイスは、ルータ、スイッチを含み、直接別のＳｏＣから受け取られるが、これらに限定されず、パケットはローカルネットワーク、イントラネット、あるいはインターネットを介して受信されることができる。いくつかの実施形態において、ＳｏＣ１０２は、複数のイーサネットインタフェースを含むことができる。
【００１０】
イーサネットインタフェース１０４は、パケットのストリーム及び／又はフローをフロー・ピンニング・コンポーネント１０６に渡すことができる。パケットに関連づけられたレイヤ３及び／又はレイヤ４のヘッダデータ及び／又はメタデータ情報に基づいて、フロー・ピンニング・コンポーネント１０６は、パケットのフローをシステムＣＰＵ１１０の１つまたは複数のコアと関連づけることができる。各フローは、システムＣＰＵ１１０のそれぞれのコアに関連付けられることができ、あるいは、システムＣＰＵ１１０の各コアは、イーサネットインタフェース１０４で受信されたパケットストリームの１つ、あるいはセットを割り当てられることができる。
【００１１】
一旦、パケットのストリーム／フローがシステムＣＰＵ１１０のそれぞれのコアに割り当てられると、フロー・ピンニング・コンポーネント１０６はパケットまたはパケットヘッダ情報をキューマネージャ１１８に渡すことができ、これはパケット及び／又はパケットヘッダ情報を、それぞれシステムＣＰＵ１１０のコアの１つに関連するキュー１１２、１１４、１１６、および１１８にエンキューする。一実施形態において、パケットに関連づけられたデスクリプタメッセージがキュー１１２、１１４、１１６、および１１８にエンキューされる間に、パケットはメモリに格納される（図４および５においてさらに詳細に示す）。デスクリプタメッセージは、システムＣＰＵ１１０がキューマネージャ１０８からそれらの割り込みを受信する時、メモリに格納されたパケットのメモリアドレスに関する情報を提供する。
【００１２】
図１で示される一実施形態は、システムＣＰＵ１１０の４つのコアを示すが、別の実施形態において、別の数のコアが可能であり、キューの数はコアの数に対応することができる。
【００１３】
図２は、フロー・ピンニングを実行するシステム２００の実施形態のブロック図である。システム２００は、パケットと関連付けられたメタデータに基づいて、パケット及び／又はパケットストリームとそれぞれのコアを関連づけるために構成されることができる、フロー・ピンニング・コンポーネント２０２（例えば、フロー・ピンニング・コンポーネント１０６）を含む。
【００１４】
フロー・ピンニング・コンポーネント２０２は、一実施形態においてパトリシア・ツリーであることができる、第１のデータ構造２０６を含むことができる。パトリシア・ツリー２０６は、１つの子のみを有する各ノードがその子とマージされる空間最適化ツリーデータ構造であることができる。一般的にパトリシア・ツリーは、文字列として表されることができるキーを有する連想配列を構築するために役立つ。本開示の一実施形態において、パトリシア・ツリー２０６は、パケットまたはパケットヘッダからメタデータストリングを抽出するように構成されることができる。パトリシア・ツリー２０６によって抽出されたメタデータストリングは、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、４タプルストリングであることができる。パトリシア・ツリー２０６は、は、抽出する必要があるパケットデータであらかじめプログラムされてもよく、別の実施形態において、別の値でメタデータストリングを抽出することができる。一実施形態において、メタデータストリングは、１２バイトのデータストリングであることができるが、別のサイズのメタデータストリングも可能であり、メタデータストリングのサイズは抽出された情報に依存することができる。一実施形態において、ＡＶＬ探索木２０４は、現在およびそれ以外のすべてのサポートセッションで事前にプログラムされることができる。
【００１５】
一実施形態において、パトリシア・ツリー２０６およびフロー・ピンニング・コンポーネント２０２は、パケットヘッダ単独で受信するが、ＡＶＬ探索木２０４がパケットをどのバッファプールにコピーするか決定するまでパケットは保持される。他の実施形態において、フロー・ピンニング・コンポーネント２０２はパケットを受信し、オンボード・イーサネット・ダイレクト・メモリ・アクセス・エンジンでは、ＡＶＬ探索木２０４の決定結果に基づいてメモリにパケットをコピーする。
【００１６】
図３は、パケットヘッダからメタデータ抽出を実行するシステム３００の一実施形態を示す。システム３００は、図２を参照して説明したメタデータストリング抽出について追加の詳細を提供する。パトリシア・ツリー３０４は、パケットヘッダ３０２を受信する。パケットヘッダはパケットがどこから発信されたか、どこに向かうか、およびその輸送モードに関する情報を含むことができる。パトリシア・ツリー３０４は、抽出するデータのタイプの予めプログラムされた決定に基づいて、次いで抽出することができ、および４つの値のメタデータストリング（パケットヘッダ３０６に［Ｗ，Ｘ，Ｙ，Ｚ］として示される）を形成する。値［Ｗ，Ｘ，Ｙ，Ｚ］は、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、および宛先ポートに対応することができる。
【００１７】
別の実施形態において、値はパケットに関する別の情報に対応することができる。さらに、他の実施形態において、メタデータストリングは４つよりも少ない値、あるいは４つよりも多い値を含むことができる。
【００１８】
図４は、パケットエンキューを実行するシステム４００の一実施形態を示す。システム４００は、ＳｏＣ４０２のイーサネットインタフェースを介してパケット４０４を受信するＳｏＣ４０２を含む。パケット４０４は、パトリシア・ツリー（例えば、パトリシア・ツリー２０６および３０４）が抽出したメタデータストリング［Ｗ，Ｘ，Ｙ，Ｚ］を有するパケットヘッダ４０６を含む。ＡＶＬ探索木４１０は、パケットヘッダ４０６およびパケット４０４についての関連する結果データベース４１４を決定するために、パトリシア・ツリーによって抽出されたメタデータストリングを使用する。
【００１９】
関連する結果データベースは、パケットをコピーするメモリ４１６の空きバッファプール（４１８、４２０、４２２、および／または４２２）、および新しいパケットをＣＰＵに通知するためのメッセージをエンキューするキューといった情報を含む。従って、ＡＬＶ検索木４１０は、パケット４０４がどのＣＰＵに関連付けられるべきか、および／またはそうでなければ割り当てるべきかを決定するために、送信元および宛先アドレス、並びに送信元および宛先ポートを結果データベース４１４と相関させる。一実施形態において、ＡＶＬ探索木４１０は、現在およびそれ以外の全てのサポートセッションで事前にプログラムされることができる。
【００２０】
一旦ＡＶＬ探索木４１０が、どの結果データベース４１４パケット４０４およびパケットヘッダ４０６が関連付けられるかを決定すると、イーサネットＤＭＡエンジン４１２はパケット４０４が関連付けられるバッファプール４１８、４１０、４２２、あるいは４２４にパケット４０４を割り当ておよび／またはコピーするように構成されることができる。バッファプール４１８、４１０、４２２、および４２４のそれぞれは、システムＣＰＵのそれぞれのコアの１つまたは複数に関連付けられることができる。
【００２１】
イーサネットＤＭＡエンジン４１２は、結果データベースに基づいてパケットをキューに割り当てるように構成されることもでき、キューはＣＰＵのそれぞれのコアに関連付けられる。一旦割り当てられると、イーサネットＤＭＡエンジン４１２は、デスクリプタメッセージを割り当てられたキューにエンキューする。
【００２２】
図５は、フロー・ピンニングを実行するシステム５００の一実施形態を示す。システム５００は、ＳｏＣ４０２のイーサネットインタフェースを介してパケットを受信するＳｏＣ５０２を含む。パケットは、フロー・ピンニング・コンポーネント５０６（例えば、パトリシア・ツリー２０６または３０４、およびＡＶＬ検索木２０４または４１０）が抽出することができ、およびパケットを結果データベースおよびメモリ５０４のバッファプールに関連付けるために使用されることができる、メタデータストリング［Ｗ，  Ｘ，  Ｙ，  Ｚ］を有するパケットヘッダを含むことができる。
【００２３】
次いで、ＳｏＣ５０２上のイーサネットＤＭＡエンジン（図示せず）は、パケットをメモリ５０４の関連付けられたバッファプールにコピーし、一方、デスクリプタメッセージをキューマネージャ５０８に送信もする。デスクリプタメッセージは、パケットが割り当てられているシステムＣＰＵ５１０のコアに対応するキュー５１２、５１４、５１６、あるいは５１８の１つにエンキューされることができる。キュー５１２、５１４、５１６、あるいは５１８のそれぞれは、システムＣＰＵ５１０のそれらのそれぞれのコアに固有の割り込みを発行するように構成されることができる。一旦割り込まれると、デスクリプタメッセージは、パケットの存在、およびメモリ５０４内のどこに位置するかについての詳細を提供する。
【００２４】
ＳｏＣ５０２およびそのコンポーネントは、並列に複数のパケットを受信することが可能である。異なるフローが同時に受信されると、デスクリプタメッセージは、並列にキュー５１２、５１４、５１６、および５１８にエンキューされ、次いでシステムＣＰＵ５１０の各コアは、それらの関連付けられたパケットストリームを並列に受信する。これにより、システムＣＰＵ５１０の各プロセッサにそれぞれ専用の複数キューがあるので、複数のコアが単一のキューを読み取ることを防ぐためにグローバルロックを使用する必要を回避する。
【００２５】
図６乃至９は、前述のシステムに関連するプロセスを示す。図６乃至９のプロセスは、例えばシステム１００、２００、３００、４００、および５００によって実装されることができ、図１乃至５でそれぞれ示される。説明の簡略化のために、方法は一連のブロックとして示され、説明されるが、いくつかのブロックが異なる順序で生じてもよく、および／または本明細書に図示および説明されるものからの他のブロックと同時に生じてもよいので、特許請求された主題がブロックの順序によって制限されないことが理解されるべきである。さらに、以下に説明される方法を実装するために、図示された全てのブロックが必要とされるわけではない。
【００２６】
図６は、マルチプロセッサのコアにパケットストリームのフロー・ピンニングを実行するためのコンピュータ実装方法の一実施形態の流れ図である。
【００２７】
方法６００は、６０２で開始することができ、パケットからのメタデータストリングの抽出は、第１のデータ構造を実行する第１のプロセッサによって実行されることができる。第１のデータ構造は、パトリシア・ツリー（例えば、パトリシア・ツリー２０６または３０４）であることができる。パトリシア・ツリーは、１つの子のみを有する各ノードがその子とマージされる、空間最適化トライデータ構造であることができる。一般的にパトリシア・ツリーは、文字として表されることができるキーを有する連想配列を構築するために便利である。一実施形態において、パトリシア・ツリーは、パケットまたはパケットヘッダからメタデータストリングを抽出するように構成されることができる。パトリシア・ツリーによって抽出されたメタデータストリングは、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む４タプルストリングであることができる。パトリシア・ツリーは、抽出するためにどのパケットデータを必要とするかについてあらかじめプログラムされることができ、および他の実施形態において、他の値を有するメタデータストリングを抽出することができる。
【００２８】
６０４で、パケットは、プロセッサが第２のデータ構造を実行することによってそれぞれの結果データベースに関連付けられることができ、関連付けはメタデータストリングに基づく。第２のデータ構造は、ＡＶＬ探索木（例えば、ＡＶＬ探索木２０４または４１０）であることができる。ＡＶＬ探索木は、各パケット／パケットヘッダについて関連づけられた結果データベースを決定するためにパトリシア・ツリーによって抽出されたメタデータストリングを使用する、第２のデータ構造である。関連づけられた結果データベースは、パケットをコピーするメモリ内の空きバッファプール、ＣＰＵに新しいパケットを通知するためのメッセージをエンキューするキュー、といった情報を含む。従ってＡＶＬ探索木は、どのＣＰＵにパケットを関連づけられるべきか、および／またはそうでなければ割り当てられるべきかを決定するために、送信元および宛先アドレス、並びに送信元および宛先ポートを結果データベースに相関させる。一実施形態において、ＡＶＬ探索木は、メタデータストリングを有する検索テーブルを索引付けすることに基づいて、パケットに関連付けられた結果データベースを関連付ける。
【００２９】
６０６で、パケットは、結果データベースに基づいて、イーサネットＤＭＡエンジン（例えば、イーサネットＤＭＡエンジン４１２）によってキューに割り当てられることができ、キューは、マルチプロセッサのそれぞれのコアに関連付けられる。イーサネットＤＭＡエンジンは、結果データベースによって決定された空きバッファプールにパケットをコピーすることができ、ＣＰＵのためのデスクリプタメッセージをキューにエンキューすることもできる。デスクリプタメッセージは、パケットの存在、およびメモリ内のどこに位置するかについての詳細を提供する。
【００３０】
図７は、パケットデータからメタデータストリングを抽出するための手段の一実施形態のフロー図を示す。７０２で、パケットはイーサネットインタフェース（例えば、イーサネットインタフェース１０４）のＭＡＣモジュールから受信される。イーサネットインタフェースは、それに接続された１つまたは複数のイーサネット回線を有することができ、一実施形態において、無線（例えば、ＷｉＦｉ  ８０２．１１ａ／ｂ／ｇ／ｎ／ａｃ）アダプタに結合されることもできる。イーサネットインタフェースは、ネットワークを介して着信パケットを受信することができる。パケットは、ネットワーク上の１つ又は複数の別のコンピューティングデバイスに関連付けられたデータの１つ又は複数のストリームまたはフローを形成することができる。いくつかの実施形態において、パケットの複数のフローは、単一のコンピューティングデバイスから受信されることができ、他の実施形態において、パケットの複数のフローは、対応するコンピューティングデバイスから受信されることができる。パケットがそこから受信されるコンピューティングデバイスは、１つ又は複数のルータ、スイッチを含み、および直接別のＳｏＣから受け取られることもでき、パケットは、ローカルネットワーク、イントラネット、あるいはインターネットを介して受信されることができる。
【００３１】
７０４で、パケットのヘッダはパトリシア・ツリーに供給されることができる。７０６において、メタデータストリングは、パトリシア・ツリーの所定のプログラミングに基づいてパケットのヘッダから抽出される。パトリシア・ツリーによって抽出されたメタデータストリングは、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、４タプルストリングであることができる。
【００３２】
図８は、メタデータストリングに基づいて、パケットをそれぞれのプロセッサに関連付けるための手段の一実施形態のフロー図を示す。８０２において、送信元ＩＰ、宛先ＩＰ、送信元ポート、および宛先ポートを指定するメタデータストリングが受信される。この情報は、パケットがどこから送信されたか、意図された受取人か、また、（ポートに基づいて）パケットコンテンツの性質についての何か、を決定するために使用されることができる。
【００３３】
８０４において、関連した結果データベースは、メタデータストリングに基づいて検索される。検索は、ＡＶＬ探索木データ構造によって実行されることができる。一実施形態において、ＡＶＬ探索木はフローごとに一つの単体エントリを検索し、全てのサポートセッションについてプログラムされることができる。
【００３４】
８０６において、関連したプロセッサは、関連した結果テーブルに基づいて決定されることができる。ＡＶＬ探索木は、検索テーブルをメタデータストリングで索引付けすることに基づいて、パケットを関連付けることができる。
【００３５】
図９は、プロセッサに関連づけられたキューにパケットを割り当てるための手段の一実施形態の流れ図である。９０２において、関連づけられた結果データベースはメタデータストリングに基づいて決定される。ＡＶＬ探索木は、検索テーブルをメタデータストリングで索引付けすることに基づいて、パケットを関連づけることができる。
【００３６】
９０４において、デスクリプタキューは、メタデータストリングに基づいて決定されることができ、デスクリプタキューはプロセッサに関連づけられる。メタデータストリングを関連づけられた結果データベースと相関することによって、パケットが属するか、または割り当てられるべきプロセッサが決定されてもよい。各キューがそれぞれのプロセッサに関連付けられるので、パケットは適切なデスクリプタキューに配信されることができる。
【００３７】
９０６において、パケットが到着したことを示すメッセージはデスクリプタキューに送信される。メッセージは、イーサネットＤＭＡエンジンによって送信されることができ、およびパケットの位置、およびパケットが格納されているバッファプールを示すことができる。
【００３８】
有利なことに、本明細書に記載された技術は、フロー・ピンニングの実行を容易にすることが望ましい任意のデバイスに適用することができる。従って、ハンドヘルド、ポータブルおよび別のコンピューティングデバイスおよび全ての種類のコンピューティングオブジェクトが、様々な非限定的な実施形態に関連して使用することが考慮される。従って、以下に説明する図９に示される汎用遠隔コンピュータは、一例にすぎず、開示された主題はネットワーク／バス相互運用および相互作用を有する任意のクライアントで実装されることができる。従って、開示された主題は、例えば、クライアント装置が器具に置かれたオブジェクトのようなネットワーク／バスへのインタフェースとして役立つだけのネットワーク環境などの、クライアントリソースがほとんどまたは全く関係していないネットワーク化されたホストされたサービスの環境において実装されることができる。
【００３９】
図１０は、開示された主題の態様が実装されることができるコンピューティングシステム環境１０００の例を図示しているが、コンピューティングシステム環境１０００はデバイスのコンピューティング環境の一例にすぎず、いかなる限定も意図するものではない。コンピューティング環境１０００は、例示的な動作環境１０００に示される要素の任意の１つまたは組み合わせに関する任意の依存性または必要条件を有すると解釈されるべきではない。
【００４０】
図１０は、コンピュータ１０１０の形態の汎用コンピューティングデバイスを含む、開示された主題を実装するための例示的なデバイスを示す。コンピュータ１０１０の要素は、処理ユニット１０２０、システムメモリ１０３０、およびシステムメモリを含む様々なシステム要素を処理ユニット１０２０に結合するシステムバス１０２１、のうちいずれかを含んでもよい。
【００４１】
コンピュータ１０１０は、典型的には、所望の情報を格納するために使用されることができ、コンピュータ１０１０によってアクセスされることができる様々なコンピュータ可読媒体を含む。
【００４２】
コンピュータ１０１０は、リモートコンピュータ１０７０などの１つ又は複数のリモートコンピュータとの論理接続を使用して、ネットワークまたは分散環境で動作することができ、これはデバイス１０１０とは異なるメディア機能を順に有することができる。リモートコンピュータ１０７０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、パーソナル・デジタル・アシスタント（ＰＤＡ）、携帯電話、ハンドヘルドコンピューティングデバイス、投影ディスプレイデバイス、閲覧デバイス、または他の一般的なネットワークノード、あるいは任意の他のリモートメディア消費または送信デバイスであってもよく、およびコンピュータ１０１０に関して上述した要素のいずれかまたは全てを含んでもよい。図１０に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）あるいはワイドエリアネットワーク（ＷＡＮ）のようなネットワーク１０７１を含むが、有線または無線の他のネットワーク／バスも含むことができる。このようなネットワーキング環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００４３】
図１１は、例示的なネットワークまたは分散コンピューティング環境の概略図を提供する。各コンピューティングオブジェクト１１１０、１１１２等、およびコンピューティングオブジェクトあるいはデバイス１１２０、１１２２、１１２４、１１２６、１１２８等は、１つ又は複数の他のコンピューティングオブジェクト１１１０、１１１２等、およびコンピューティングオブジェクトあるいはデバイス１１２０、１１２２、１１２４、１１２６、１１２８等と、通信ネットワーク１１４２を介して、直接または間接的に通信することができる。
【００４４】
別の例として、アーキテクチャは、電子ハードウェアの配置に適した方法で処理命令を実装する、電子ハードウェア（例えば、並列または直列トランジスタ）、処理命令、およびプロセッサの配置を含むことができる。
【００４５】
開示される主題は、開示される主題を実装するために、電子デバイスを制御するためのハードウェア、ファームウェア、ソフトウェア、あるいはそれらの適切な組み合わせを生成するための標準的な製造、プログラミング、あるいはエンジニアリング技法を使用する方法、装置、あるいは製品として実装されることができる。さらに、媒体は、非一時的媒体、あるいは輸送媒体を含むことができる。一例において、非一時的媒体は、コンピュータ可読ハードウェア媒体を含むことができる。
【符号の説明】
【００４６】
１００  システム
１０２  サーバオンチップ（ＳｏＣ）
１０４  イーサネットインタフェース
１０６  フロー・ピンニング・コンポーネント
１０８  キューマネージャ
１１２、１１４、１１６、１１８  キュー
２００  システム
２０２  フロー・ピンニング・コンポーネント
２０４  ＡＶＬ探索木
２０６  パトリシア・ツリー
３００  システム
３０２  パケットヘッダ
３０４  パトリシア・ツリー
３０６  パケットヘッダ
４００  システム
４０４  パケット
４０６  パケットヘッダ
４１０  ＡＶＬ探索木
４１２  イーサネットＤＭＡエンジン
４１４  結果データベース
４１６  メモリ
４１８、４２０、４２２、４２４  バッファプール
５００  システム
５０４  メモリ
５０６  フロー・ピンニング・コンポーネント
５０８  キューマネージャ
５１２、５１４、５１６、５１８  キュー
１０００  コンピューティングシステム環境
１０１０  コンピュータ
１０２０  処理ユニット
１０２１  システムバス
１０３０  システムメモリ
１０７０  リモートコンピュータ
１０７１  ネットワーク
１１１０、１１１２  コンピューティングオブジェクト
１１２０、１１２２、１１２８  コンピューティングデバイス
１１２４、１１２６  オブジェクト
１１４２  通信ネットワーク
【図１】
2018521596.tif 000003
【図２】
2018521596.tif 000004
【図３】
2018521596.tif 000005
【図４】
2018521596.tif 000006
【図５】
2018521596.tif 000007
【図６】
2018521596.tif 000008
【図７】
2018521596.tif 000009
【図８】
2018521596.tif 000010
【図９】
2018521596.tif 000011
【図１０】
2018521596.tif 000012
【図１１】
2018521596.tif 000013
【国際調査報告】
2018521596.tif 000014
2018521596.tif 000015