JP6923510B2 - サーバオンチップにおけるフロー・ピンニング - Google Patents

サーバオンチップにおけるフロー・ピンニング Download PDF

Info

Publication number
JP6923510B2
JP6923510B2 JP2018503554A JP2018503554A JP6923510B2 JP 6923510 B2 JP6923510 B2 JP 6923510B2 JP 2018503554 A JP2018503554 A JP 2018503554A JP 2018503554 A JP2018503554 A JP 2018503554A JP 6923510 B2 JP6923510 B2 JP 6923510B2
Authority
JP
Japan
Prior art keywords
packet
queue
core
descriptor message
metadata
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.)
Active
Application number
JP2018503554A
Other languages
English (en)
Other versions
JP2018521596A (ja
Inventor
ケユール・チュドガー
クマール・サンカラン
Original Assignee
アンペア・コンピューティング・エルエルシー
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by アンペア・コンピューティング・エルエルシー filed Critical アンペア・コンピューティング・エルエルシー
Publication of JP2018521596A publication Critical patent/JP2018521596A/ja
Application granted granted Critical
Publication of JP6923510B2 publication Critical patent/JP6923510B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Description

本開示は、サーバオンチップ(server on a chip)におけるフロー・ピンニング(flow pinning)に関する。
コンピュータネットワークにおいて、イーサネット(登録商標、以下同じ)インタフェースは、多くの異なるイーサネット接続またはフローからパケットを受信することができる。いくつかのシステムにおいて、パケットのこれらのフローは、専用のプロセッサによって受信され、連続的に処理される。別の従来のシステムにおいて、パケットのこれらのフローは、パケット及び/又はフローを、マルチコアプロセッサの所与のCPU(中央処理ユニット)に関連付けられた特定のキューにエンキューする周辺装置のネットワークインタフェースカードによって処理される。しかしながら、ネットワークインタフェースカードはコスト、電力、および待ち時間の両方の観点では高価であり、また一方、システム内の多くのスペースを占有する。
上記の説明は、チップ上のシステムにおいてフロー・ピンニングを実行するための現在の技術の文脈上の概要を提供するだけであり、包括的ではない。
例示的な実施形態において、サーバオンチップは、パケットからメタデータストリングを抽出するように構成されたプロセッサによって実行される、第1のデータ構造を含む。サーバオンチップは、メタデータストリングに基づいてパケットを結果データベースに関連付けるように構成された、プロセッサによって実行される第2のデータ構造を含む。サーバオンチップは、結果データベースに基づいてキューにパケットを割り当てるように構成されたイーサネット・ダイレクト・メモリ・アクセス・エンジンを含み、キューは、マルチプロセッサのそれぞれのコアに関連付けられる。
別の例示的な実施形態において、マルチプロセッサのコアへのパケットストリームのフロー・ピンニングのためのコンピュータ実装方法は、第1のデータ構造を実行するプロセッサによって、パケットからメタデータストリングを抽出するステップを含む。方法は、メタデータストリングに基づいて、第2のデータ構造を実行するプロセッサによって、パケットをそれぞれの結果データベースに関連付けるステップを含む。方法は、結果データベースに基づいて、イーサネット・ダイレクト・メモリ・アクセス・エンジンによって、パケットをキューに割り当てるステップを含み、キューはマルチプロセッサのそれぞれのコアに関連付けられる。
別の例示的な実施形態において、サーバオンチップは、パケットからメタデータストリングを抽出する手段と、メタデータストリングに基づいて、パケットをマルチプロセッサのそれぞれのコアに関連付けるための手段と、を備える。サーバオンチップは、パケットをプロセッサに関連付けられたキューに割り当てるための手段を含むことができる。
フロー・ピンニングを実行するシステムの実施形態を図示するブロック図である。 フロー・ピンニングを実行するシステムの実施形態を図示するブロック図である。 パケットヘッダからメタデータ抽出を実行するシステムの実施形態を図示するブロック図である。 パケットエンキューを実行するシステムの実施形態を図示するブロック図である。 フロー・ピンニングを実行するシステムの実施形態を図示するブロック図である。 フロー・ピンニングのための方法の実施形態の流れ図である。 パケットデータからメタデータストリングを抽出する手段の実施形態の流れ図である。 メタデータストリングに基づいてパケットをプロセッサに関連付ける手段の実施形態の流れ図である。 プロセッサに関連付けられたキューにパケットを割り当てるための手段の一実施形態の流れ図である。 電子コンピューティング環境のブロック図である。 データ通信ネットワークのブロック図である。
様々な実施形態が、フロー・ピンニングを実行するシステムオンチップまたはサーバオンチップを提供し、パケットまたはパケットのストリームは特定のキューにエンキューされ、各キューはマルチプロセッサ/マルチコアシステムまたはサーバオンチップのそれぞれのコアに関連付けられる。特定のプロセッサに割り当てられたパケットの各ストリーム、またはフローについて、サーバオンチップは、同じ単一のイーサネットインタフェースからの複数のストリームからの複数のキューからパケットを並列で処理して取り込むことができる。各キューは、それらの割り当てられたプロセッサに割り込みを発行することができ、各プロセッサがそれらのそれぞれのキューから同時にパケットを受信することを可能にする。従って、異なるストリームについて並列にパケットを受信して処理することによって、パケット処理速度が増加する。
このように、各キューがそれぞれのコアに関連付けられている、フロー・ピンニングを実行すると、複数のストリームを備えた着信トラフィックのスループットが増加することを可能にする。キャッシュとCPU使用率も向上し、各コアが使用され、および各コアが自身のキャッシュメモリにアクセスすることができる。これは、システムスループットを効率的に向上させながら、ハードウェアコストを削減することを可能にする。
図1は、本明細書に記載の実施形態に従ったフロー・ピンニングを実行するシステム100を示す。システム100は、イーサネットインタフェース104を含むシステム及び/又はサーバオンチップ(SoC)102を含む。イーサネットインタフェース104は、ネットワークを介して着信パケットを受信する。パケットは、ネットワーク上の1つ又は複数の別のコンピューティングデバイスに関連付けられたデータの1つ又は複数のストリームまたはフローを形成することができる。いくつかの実施形態において、パケットの複数のフローは、単一のコンピューティングデバイスから受信されることができ、および別の実施形態において、パケットの複数のフローは、対応するコンピューティングデバイスから受信されることができる。パケットがそこから受信されるコンピューティングデバイスは、ルータ、スイッチを含み、直接別のSoCから受け取られるが、これらに限定されず、パケットはローカルネットワーク、イントラネット、あるいはインターネットを介して受信されることができる。いくつかの実施形態において、SoC102は、複数のイーサネットインタフェースを含むことができる。
イーサネットインタフェース104は、パケットのストリーム及び/又はフローをフロー・ピンニング・コンポーネント106に渡すことができる。パケットに関連づけられたレイヤ3及び/又はレイヤ4のヘッダデータ及び/又はメタデータ情報に基づいて、フロー・ピンニング・コンポーネント106は、パケットのフローをシステムCPU110の1つまたは複数のコアと関連づけることができる。各フローは、システムCPU110のそれぞれのコアに関連付けられることができ、あるいは、システムCPU110の各コアは、イーサネットインタフェース104で受信されたパケットストリームの1つ、あるいはセットを割り当てられることができる。
一旦、パケットのストリーム/フローがシステムCPU110のそれぞれのコアに割り当てられると、フロー・ピンニング・コンポーネント106はパケットまたはパケットヘッダ情報をキューマネージャ118に渡すことができ、これはパケット及び/又はパケットヘッダ情報を、それぞれシステムCPU110のコアの1つに関連するキュー112、114、116、および118にエンキューする。一実施形態において、パケットに関連づけられたデスクリプタメッセージがキュー112、114、116、および118にエンキューされる間に、パケットはメモリに格納される(図4および5においてさらに詳細に示す)。デスクリプタメッセージは、システムCPU110がキューマネージャ108からそれらの割り込みを受信する時、メモリに格納されたパケットのメモリアドレスに関する情報を提供する。
図1で示される一実施形態は、システムCPU110の4つのコアを示すが、別の実施形態において、別の数のコアが可能であり、キューの数はコアの数に対応することができる。
図2は、フロー・ピンニングを実行するシステム200の実施形態のブロック図である。システム200は、パケットと関連付けられたメタデータに基づいて、パケット及び/又はパケットストリームとそれぞれのコアを関連づけるために構成されることができる、フロー・ピンニング・コンポーネント202(例えば、フロー・ピンニング・コンポーネント106)を含む。
フロー・ピンニング・コンポーネント202は、一実施形態においてパトリシア・ツリーであることができる、第1のデータ構造206を含むことができる。パトリシア・ツリー206は、1つの子のみを有する各ノードがその子とマージされる空間最適化ツリーデータ構造であることができる。一般的にパトリシア・ツリーは、文字列として表されることができるキーを有する連想配列を構築するために役立つ。本開示の一実施形態において、パトリシア・ツリー206は、パケットまたはパケットヘッダからメタデータストリングを抽出するように構成されることができる。パトリシア・ツリー206によって抽出されたメタデータストリングは、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、4タプルストリングであることができる。パトリシア・ツリー206は、は、抽出する必要があるパケットデータであらかじめプログラムされてもよく、別の実施形態において、別の値でメタデータストリングを抽出することができる。一実施形態において、メタデータストリングは、12バイトのデータストリングであることができるが、別のサイズのメタデータストリングも可能であり、メタデータストリングのサイズは抽出された情報に依存することができる。一実施形態において、AVL探索木204は、現在およびそれ以外のすべてのサポートセッションで事前にプログラムされることができる。
一実施形態において、パトリシア・ツリー206およびフロー・ピンニング・コンポーネント202は、パケットヘッダ単独で受信するが、AVL探索木204がパケットをどのバッファプールにコピーするか決定するまでパケットは保持される。他の実施形態において、フロー・ピンニング・コンポーネント202はパケットを受信し、オンボード・イーサネット・ダイレクト・メモリ・アクセス・エンジンでは、AVL探索木204の決定結果に基づいてメモリにパケットをコピーする。
図3は、パケットヘッダからメタデータ抽出を実行するシステム300の一実施形態を示す。システム300は、図2を参照して説明したメタデータストリング抽出について追加の詳細を提供する。パトリシア・ツリー304は、パケットヘッダ302を受信する。パケットヘッダはパケットがどこから発信されたか、どこに向かうか、およびその輸送モードに関する情報を含むことができる。パトリシア・ツリー304は、抽出するデータのタイプの予めプログラムされた決定に基づいて、次いで抽出することができ、および4つの値のメタデータストリング(パケットヘッダ306に[W,X,Y,Z]として示される)を形成する。値[W,X,Y,Z]は、送信元IPアドレス、宛先IPアドレス、送信元ポート、および宛先ポートに対応することができる。
別の実施形態において、値はパケットに関する別の情報に対応することができる。さらに、他の実施形態において、メタデータストリングは4つよりも少ない値、あるいは4つよりも多い値を含むことができる。
図4は、パケットエンキューを実行するシステム400の一実施形態を示す。システム400は、SoC402のイーサネットインタフェースを介してパケット404を受信するSoC402を含む。パケット404は、パトリシア・ツリー(例えば、パトリシア・ツリー206および304)が抽出したメタデータストリング[W,X,Y,Z]を有するパケットヘッダ406を含む。AVL探索木410は、パケットヘッダ406およびパケット404についての関連する結果データベース414を決定するために、パトリシア・ツリーによって抽出されたメタデータストリングを使用する。
関連する結果データベースは、パケットをコピーするメモリ416の空きバッファプール(418、420、422、および/または422)、および新しいパケットをCPUに通知するためのメッセージをエンキューするキューといった情報を含む。従って、ALV検索木410は、パケット404がどのCPUに関連付けられるべきか、および/またはそうでなければ割り当てるべきかを決定するために、送信元および宛先アドレス、並びに送信元および宛先ポートを結果データベース414と相関させる。一実施形態において、AVL探索木410は、現在およびそれ以外の全てのサポートセッションで事前にプログラムされることができる。
一旦AVL探索木410が、どの結果データベース414パケット404およびパケットヘッダ406が関連付けられるかを決定すると、イーサネットDMAエンジン412はパケット404が関連付けられるバッファプール418、410、422、あるいは424にパケット404を割り当ておよび/またはコピーするように構成されることができる。バッファプール418、410、422、および424のそれぞれは、システムCPUのそれぞれのコアの1つまたは複数に関連付けられることができる。
イーサネットDMAエンジン412は、結果データベースに基づいてパケットをキューに割り当てるように構成されることもでき、キューはCPUのそれぞれのコアに関連付けられる。一旦割り当てられると、イーサネットDMAエンジン412は、デスクリプタメッセージを割り当てられたキューにエンキューする。
図5は、フロー・ピンニングを実行するシステム500の一実施形態を示す。システム500は、SoC402のイーサネットインタフェースを介してパケットを受信するSoC502を含む。パケットは、フロー・ピンニング・コンポーネント506(例えば、パトリシア・ツリー206または304、およびAVL検索木204または410)が抽出することができ、およびパケットを結果データベースおよびメモリ504のバッファプールに関連付けるために使用されることができる、メタデータストリング[W, X, Y, Z]を有するパケットヘッダを含むことができる。
次いで、SoC502上のイーサネットDMAエンジン(図示せず)は、パケットをメモリ504の関連付けられたバッファプールにコピーし、一方、デスクリプタメッセージをキューマネージャ508に送信もする。デスクリプタメッセージは、パケットが割り当てられているシステムCPU510のコアに対応するキュー512、514、516、あるいは518の1つにエンキューされることができる。キュー512、514、516、あるいは518のそれぞれは、システムCPU510のそれらのそれぞれのコアに固有の割り込みを発行するように構成されることができる。一旦割り込まれると、デスクリプタメッセージは、パケットの存在、およびメモリ504内のどこに位置するかについての詳細を提供する。
SoC502およびそのコンポーネントは、並列に複数のパケットを受信することが可能である。異なるフローが同時に受信されると、デスクリプタメッセージは、並列にキュー512、514、516、および518にエンキューされ、次いでシステムCPU510の各コアは、それらの関連付けられたパケットストリームを並列に受信する。これにより、システムCPU510の各プロセッサにそれぞれ専用の複数キューがあるので、複数のコアが単一のキューを読み取ることを防ぐためにグローバルロックを使用する必要を回避する。
図6乃至9は、前述のシステムに関連するプロセスを示す。図6乃至9のプロセスは、例えばシステム100、200、300、400、および500によって実装されることができ、図1乃至5でそれぞれ示される。説明の簡略化のために、方法は一連のブロックとして示され、説明されるが、いくつかのブロックが異なる順序で生じてもよく、および/または本明細書に図示および説明されるものからの他のブロックと同時に生じてもよいので、特許請求された主題がブロックの順序によって制限されないことが理解されるべきである。さらに、以下に説明される方法を実装するために、図示された全てのブロックが必要とされるわけではない。
図6は、マルチプロセッサのコアにパケットストリームのフロー・ピンニングを実行するためのコンピュータ実装方法の一実施形態の流れ図である。
方法600は、602で開始することができ、パケットからのメタデータストリングの抽出は、第1のデータ構造を実行する第1のプロセッサによって実行されることができる。第1のデータ構造は、パトリシア・ツリー(例えば、パトリシア・ツリー206または304)であることができる。パトリシア・ツリーは、1つの子のみを有する各ノードがその子とマージされる、空間最適化トライデータ構造であることができる。一般的にパトリシア・ツリーは、文字として表されることができるキーを有する連想配列を構築するために便利である。一実施形態において、パトリシア・ツリーは、パケットまたはパケットヘッダからメタデータストリングを抽出するように構成されることができる。パトリシア・ツリーによって抽出されたメタデータストリングは、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む4タプルストリングであることができる。パトリシア・ツリーは、抽出するためにどのパケットデータを必要とするかについてあらかじめプログラムされることができ、および他の実施形態において、他の値を有するメタデータストリングを抽出することができる。
604で、パケットは、プロセッサが第2のデータ構造を実行することによってそれぞれの結果データベースに関連付けられることができ、関連付けはメタデータストリングに基づく。第2のデータ構造は、AVL探索木(例えば、AVL探索木204または410)であることができる。AVL探索木は、各パケット/パケットヘッダについて関連づけられた結果データベースを決定するためにパトリシア・ツリーによって抽出されたメタデータストリングを使用する、第2のデータ構造である。関連づけられた結果データベースは、パケットをコピーするメモリ内の空きバッファプール、CPUに新しいパケットを通知するためのメッセージをエンキューするキュー、といった情報を含む。従ってAVL探索木は、どのCPUにパケットを関連づけられるべきか、および/またはそうでなければ割り当てられるべきかを決定するために、送信元および宛先アドレス、並びに送信元および宛先ポートを結果データベースに相関させる。一実施形態において、AVL探索木は、メタデータストリングを有する検索テーブルを索引付けすることに基づいて、パケットに関連付けられた結果データベースを関連付ける。
606で、パケットは、結果データベースに基づいて、イーサネットDMAエンジン(例えば、イーサネットDMAエンジン412)によってキューに割り当てられることができ、キューは、マルチプロセッサのそれぞれのコアに関連付けられる。イーサネットDMAエンジンは、結果データベースによって決定された空きバッファプールにパケットをコピーすることができ、CPUのためのデスクリプタメッセージをキューにエンキューすることもできる。デスクリプタメッセージは、パケットの存在、およびメモリ内のどこに位置するかについての詳細を提供する。
図7は、パケットデータからメタデータストリングを抽出するための手段の一実施形態のフロー図を示す。702で、パケットはイーサネットインタフェース(例えば、イーサネットインタフェース104)のMACモジュールから受信される。イーサネットインタフェースは、それに接続された1つまたは複数のイーサネット回線を有することができ、一実施形態において、無線(例えば、WiFi 802.11a/b/g/n/ac)アダプタに結合されることもできる。イーサネットインタフェースは、ネットワークを介して着信パケットを受信することができる。パケットは、ネットワーク上の1つ又は複数の別のコンピューティングデバイスに関連付けられたデータの1つ又は複数のストリームまたはフローを形成することができる。いくつかの実施形態において、パケットの複数のフローは、単一のコンピューティングデバイスから受信されることができ、他の実施形態において、パケットの複数のフローは、対応するコンピューティングデバイスから受信されることができる。パケットがそこから受信されるコンピューティングデバイスは、1つ又は複数のルータ、スイッチを含み、および直接別のSoCから受け取られることもでき、パケットは、ローカルネットワーク、イントラネット、あるいはインターネットを介して受信されることができる。
704で、パケットのヘッダはパトリシア・ツリーに供給されることができる。706において、メタデータストリングは、パトリシア・ツリーの所定のプログラミングに基づいてパケットのヘッダから抽出される。パトリシア・ツリーによって抽出されたメタデータストリングは、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、4タプルストリングであることができる。
図8は、メタデータストリングに基づいて、パケットをそれぞれのプロセッサに関連付けるための手段の一実施形態のフロー図を示す。802において、送信元IP、宛先IP、送信元ポート、および宛先ポートを指定するメタデータストリングが受信される。この情報は、パケットがどこから送信されたか、意図された受取人か、また、(ポートに基づいて)パケットコンテンツの性質についての何か、を決定するために使用されることができる。
804において、関連した結果データベースは、メタデータストリングに基づいて検索される。検索は、AVL探索木データ構造によって実行されることができる。一実施形態において、AVL探索木はフローごとに一つの単体エントリを検索し、全てのサポートセッションについてプログラムされることができる。
806において、関連したプロセッサは、関連した結果テーブルに基づいて決定されることができる。AVL探索木は、検索テーブルをメタデータストリングで索引付けすることに基づいて、パケットを関連付けることができる。
図9は、プロセッサに関連づけられたキューにパケットを割り当てるための手段の一実施形態の流れ図である。902において、関連づけられた結果データベースはメタデータストリングに基づいて決定される。AVL探索木は、検索テーブルをメタデータストリングで索引付けすることに基づいて、パケットを関連づけることができる。
904において、デスクリプタキューは、メタデータストリングに基づいて決定されることができ、デスクリプタキューはプロセッサに関連づけられる。メタデータストリングを関連づけられた結果データベースと相関することによって、パケットが属するか、または割り当てられるべきプロセッサが決定されてもよい。各キューがそれぞれのプロセッサに関連付けられるので、パケットは適切なデスクリプタキューに配信されることができる。
906において、パケットが到着したことを示すメッセージはデスクリプタキューに送信される。メッセージは、イーサネットDMAエンジンによって送信されることができ、およびパケットの位置、およびパケットが格納されているバッファプールを示すことができる。
有利なことに、本明細書に記載された技術は、フロー・ピンニングの実行を容易にすることが望ましい任意のデバイスに適用することができる。従って、ハンドヘルド、ポータブルおよび別のコンピューティングデバイスおよび全ての種類のコンピューティングオブジェクトが、様々な非限定的な実施形態に関連して使用することが考慮される。従って、以下に説明する図9に示される汎用遠隔コンピュータは、一例にすぎず、開示された主題はネットワーク/バス相互運用および相互作用を有する任意のクライアントで実装されることができる。従って、開示された主題は、例えば、クライアント装置が器具に置かれたオブジェクトのようなネットワーク/バスへのインタフェースとして役立つだけのネットワーク環境などの、クライアントリソースがほとんどまたは全く関係していないネットワーク化されたホストされたサービスの環境において実装されることができる。
図10は、開示された主題の態様が実装されることができるコンピューティングシステム環境1000の例を図示しているが、コンピューティングシステム環境1000はデバイスのコンピューティング環境の一例にすぎず、いかなる限定も意図するものではない。コンピューティング環境1000は、例示的な動作環境1000に示される要素の任意の1つまたは組み合わせに関する任意の依存性または必要条件を有すると解釈されるべきではない。
図10は、コンピュータ1010の形態の汎用コンピューティングデバイスを含む、開示された主題を実装するための例示的なデバイスを示す。コンピュータ1010の要素は、処理ユニット1020、システムメモリ1030、およびシステムメモリを含む様々なシステム要素を処理ユニット1020に結合するシステムバス1021、のうちいずれかを含んでもよい。
コンピュータ1010は、典型的には、所望の情報を格納するために使用されることができ、コンピュータ1010によってアクセスされることができる様々なコンピュータ可読媒体を含む。
コンピュータ1010は、リモートコンピュータ1070などの1つ又は複数のリモートコンピュータとの論理接続を使用して、ネットワークまたは分散環境で動作することができ、これはデバイス1010とは異なるメディア機能を順に有することができる。リモートコンピュータ1070は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、パーソナル・デジタル・アシスタント(PDA)、携帯電話、ハンドヘルドコンピューティングデバイス、投影ディスプレイデバイス、閲覧デバイス、または他の一般的なネットワークノード、あるいは任意の他のリモートメディア消費または送信デバイスであってもよく、およびコンピュータ1010に関して上述した要素のいずれかまたは全てを含んでもよい。図10に示す論理接続は、ローカルエリアネットワーク(LAN)あるいはワイドエリアネットワーク(WAN)のようなネットワーク1071を含むが、有線または無線の他のネットワーク/バスも含むことができる。このようなネットワーキング環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
図11は、例示的なネットワークまたは分散コンピューティング環境の概略図を提供する。各コンピューティングオブジェクト1110、1112等、およびコンピューティングオブジェクトあるいはデバイス1120、1122、1124、1126、1128等は、1つ又は複数の他のコンピューティングオブジェクト1110、1112等、およびコンピューティングオブジェクトあるいはデバイス1120、1122、1124、1126、1128等と、通信ネットワーク1142を介して、直接または間接的に通信することができる。
別の例として、アーキテクチャは、電子ハードウェアの配置に適した方法で処理命令を実装する、電子ハードウェア(例えば、並列または直列トランジスタ)、処理命令、およびプロセッサの配置を含むことができる。
開示される主題は、開示される主題を実装するために、電子デバイスを制御するためのハードウェア、ファームウェア、ソフトウェア、あるいはそれらの適切な組み合わせを生成するための標準的な製造、プログラミング、あるいはエンジニアリング技法を使用する方法、装置、あるいは製品として実装されることができる。さらに、媒体は、非一時的媒体、あるいは輸送媒体を含むことができる。一例において、非一時的媒体は、コンピュータ可読ハードウェア媒体を含むことができる。
100 システム
102 サーバオンチップ(SoC)
104 イーサネットインタフェース
106 フロー・ピンニング・コンポーネント
108 キューマネージャ
112、114、116、118 キュー
200 システム
202 フロー・ピンニング・コンポーネント
204 AVL探索木
206 パトリシア・ツリー
300 システム
302 パケットヘッダ
304 パトリシア・ツリー
306 パケットヘッダ
400 システム
404 パケット
406 パケットヘッダ
410 AVL探索木
412 イーサネットDMAエンジン
414 結果データベース
416 メモリ
418、420、422、424 バッファプール
500 システム
504 メモリ
506 フロー・ピンニング・コンポーネント
508 キューマネージャ
512、514、516、518 キュー
1000 コンピューティングシステム環境
1010 コンピュータ
1020 処理ユニット
1021 システムバス
1030 システムメモリ
1070 リモートコンピュータ
1071 ネットワーク
1110、1112 コンピューティングオブジェクト
1120、1122、1128 コンピューティングデバイス
1124、1126 オブジェクト
1142 通信ネットワーク

Claims (10)

  1. サーバオンチップであって、
    パケットからメタデータストリングを抽出するように構成されかつ前記メタデータストリングに基づいて前記パケットを結果データベースに関連付けるように構成され、具体的には、第1のパケットから第1のメタデータストリングを抽出するように構成されかつ前記第1のメタデータストリングに基づいて前記第1のパケットを結果データベースに関連付けるように構成された、フロー・ピンニング・コンポーネントと、
    前記関連付けられた結果データベースに基づいて複数のキューのそれぞれのキューに各前記パケットを割り当てるように構成され、かつ前記パケットのためのデスクリプタメッセージを送信するように構成され、具体的には前記関連付けられた結果データベースに基づいて第1のキューに前記第1のパケットを割り当て、かつ前記第1のパケットのための第1のデスクリプタメッセージを送信するように構成されたイーサネット・ダイレクト・メモリ・アクセス・エンジンであって、ここで前記複数のキューのそれぞれはマルチプロセッサのそれぞれのコアと専用のキューとして関連付けられ、具体的には前記第1のキューは前記マルチプロセッサの第1のコアに関連付けられ、各デスクリプタメッセージは前記それぞれのパケットの存在と前記サーバオンチップのメモリ内の前記それぞれのパケットの位置とを示すデータを含み、具体的には前記第1のデスクリプタメッセージは前記第1のパケットの存在と前記メモリ内の前記第1のパケットの位置とを示すデータを含む、イーサネット・ダイレクト・メモリ・アクセス・エンジンと、
    前記イーサネット・ダイレクト・メモリ・アクセス・エンジンから前記デスクリプタメッセージを受信し、前記キュー内の前記デスクリプタメッセージを並列にエンキューし、および前記マルチプロセッサの前記コアに割り込みを発生するように構成され、具体的には前記イーサネット・ダイレクト・メモリ・アクセス・エンジンから前記第1のデスクリプタメッセージを受信し、前記第1のキュー内の前記第1のデスクリプタメッセージを並列にエンキューし、および前記マルチプロセッサの前記第1のコアに割り込みを発生するように構成された、キューマネージャと、を含み
    前記デスクリプタメッセージは、前記マルチプロセッサが前記キューマネージャから前記割り込みを受信する時、前記メモリに格納されたパケットの前記位置に関する情報を提供する、
    サーバオンチップ。
  2. 前記フロー・ピンニング・コンポーネントが、パトリシア・ツリーとAVL探索木を含む、請求項1に記載のサーバオンチップ。
  3. 前記メタデータストリングがそれぞれ、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、請求項1に記載のサーバオンチップ。
  4. 前記メタデータストリングがそれぞれ、4つの情報項目を含む12バイト長の文字列である、請求項1に記載のサーバオンチップ。
  5. 前記フロー・ピンニング・コンポーネントが、複数のパケットから複数のメタデータストリングを抽出し、検索テーブルを前記メタデータストリングで索引付けすることに基づいて、前記パケットを前記関連付けられた結果データベースに関連付けるように構成された、請求項1に記載のサーバオンチップ。
  6. 前記イーサネット・ダイレクト・メモリ・アクセス・エンジンは、前記関連付けられた結果データベースに基づいて、空きバッファプールに各前記パケットをコピーするようにさらに構成された、
    請求項1に記載のサーバオンチップ。
  7. マルチプロセッサのコアへのパケットストリームのフロー・ピンニングを実行するためのコンピュータ実装方法であって、
    パケットストリーム内のパケットからメタデータストリングを抽出し、具体的には前記パケットストリーム内の第1のパケットから第1のメタデータストリングを抽出するステップと、
    前記それぞれのメタデータストリングに基づいて各前記パケットを結果データベースに関連付け、具体的には前記第1のメタデータストリングに基づいて、前記第1のパケットをそれぞれの結果データベースに関連づけるステップと、
    イーサネット・ダイレクト・メモリ・アクセス・エンジンによって、前記関連付けられた結果データベースに基づいて、各前記パケットを複数のキューのそれぞれのキューに割り当て、かつ前記パケットのためのデスクリプタメッセージを送信し、具体的には、前記イーサネット・ダイレクト・メモリ・アクセス・エンジンによって、前記関連付けられた結果データベースに基づいて、前記第1のパケットを第1のキューに割り当て、かつ前記第1のパケットのための第1のデスクリプタメッセージを送信するステップであって、ここで各前記複数のキューはマルチプロセッサのそれぞれのコアに専用のキューとして関連付けられ、具体的には前記第1のキューは前記マルチプロセッサの第1のコアに関連付けられ、各デスクリプタメッセージは前記それぞれのパケットの存在とサーバオンチップのメモリ内の前記それぞれのパケットの位置とを示すデータを含み、具体的には前記第1のデスクリプタメッセージは前記第1のパケットの存在と前記メモリ内の前記第1のパケットの位置とを示すデータを含む、ステップと、
    キューマネージャによって、前記イーサネット・ダイレクト・メモリ・アクセス・エンジンから前記デスクリプタメッセージを受信し、キューマネージャによって、前記キュー内の前記デスクリプタメッセージを並列にエンキューし、およびキューマネージャによって、前記マルチプロセッサの前記コアに割り込みを発生するステップであって具体的にはキューマネージャによって、前記イーサネット・ダイレクト・メモリ・アクセス・エンジンから前記第1のデスクリプタメッセージを受信し、キューマネージャによって、前記第1のキュー内の前記第1のデスクリプタメッセージを並列にエンキューし、およびキューマネージャによって、前記マルチプロセッサの前記第1のコアに割り込みを発生するステップと、を含み、
    前記デスクリプタメッセージは、前記マルチプロセッサが前記キューマネージャから前記割り込みを受信する時、前記メモリに格納されたパケットの前記位置に関する情報を提供する、
    コンピュータ実装方法。
  8. 抽出する前記ステップは、パトリシア・ツリーを使用することによって12バイト長のメタデータストリングを抽出するステップをさらに含み、前記ストリングは、送信元インターネット・プロトコル・アドレス、宛先インターネット・プロトコル・アドレス、送信元ポート、および宛先ポートを含む、請求項7に記載のコンピュータ実装方法。
  9. 前記割り当てられたキューを介してそれぞれの前記コアに割り込みを発行するステップをさらに含み、
    抽出する前記ステップが、複数のパケットから複数のメタデータストリングを抽出するステップと、
    前記関連付けられた結果データベースに基づいて、空きバッファプールに前記パケットをコピーするステップと、
    をさらに含む、
    請求項7に記載のコンピュータ実装方法。
  10. サーバオンチップであって、
    パケットストリーム内のパケットからメタデータストリングを抽出し、具体的にはパケットストリーム内の第1のパケットから第1のメタデータストリングを抽出するための手段と、
    前記第1のメタデータストリングに基づいて、前記各パケットを結果データベースに関連付け、および前記メタデータストリングに基づいて、前記第1のパケットをマルチプロセッサのそれぞれのコアに関連付けるための手段と、
    前記関連付けられた結果データベースに基づいて複数のキューのそれぞれのキューに前記各パケットを割り当て、かつ前記パケットのためのデスクリプタメッセージを送信し、具体的には前記第1のパケットを前記マルチプロセッサの前記それぞれのコアに関連付けられた第1のキューに割り当て、かつ前記第1のパケットのための第1のデスクリプタメッセージを送信するための手段であって、ここで前記複数のキューのそれぞれは前記マルチプロセッサのそれぞれのコアと専用のキューとして関連付けられ、具体的には前記第1のキューは前記マルチプロセッサの第1のコアに関連付けられ、各デスクリプタメッセージは前記それぞれのパケットの存在と前記サーバオンチップのメモリ内の前記それぞれのパケットの位置とを示すデータを含み、具体的には前記第1のデスクリプタメッセージは前記第1のパケットの存在と前記メモリ内の前記第1のパケットの位置とを示すデータを含む、手段と、
    前記デスクリプタメッセージを受信し、前記キュー内の前記デスクリプタメッセージを並列にエンキューし、および前記マルチプロセッサの前記コアに割り込みを発生し、具体的には前記第1のデスクリプタメッセージを受信し、前記第1のキュー内の前記第1のデスクリプタメッセージを並列にエンキューし、および前記マルチプロセッサの前記第1のコアに割り込みを発生する、手段と、
    を備え、
    前記デスクリプタメッセージは、前記マルチプロセッサが前記キューマネージャから前記割り込みを受信する時、前記メモリに格納されたパケットの前記位置に関する情報を提供する、
    サーバオンチップ。
JP2018503554A 2015-07-24 2015-07-24 サーバオンチップにおけるフロー・ピンニング Active JP6923510B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/041911 WO2017018980A1 (en) 2015-07-24 2015-07-24 Flow pinning in a server on a chip

Publications (2)

Publication Number Publication Date
JP2018521596A JP2018521596A (ja) 2018-08-02
JP6923510B2 true JP6923510B2 (ja) 2021-08-18

Family

ID=57884807

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018503554A Active JP6923510B2 (ja) 2015-07-24 2015-07-24 サーバオンチップにおけるフロー・ピンニング

Country Status (4)

Country Link
EP (1) EP3326338B1 (ja)
JP (1) JP6923510B2 (ja)
CN (1) CN108028808B (ja)
WO (1) WO2017018980A1 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030007489A1 (en) * 2001-07-09 2003-01-09 Ram Krishnan Data extraction system for packet analysis
US7784094B2 (en) * 2005-06-30 2010-08-24 Intel Corporation Stateful packet content matching mechanisms
US7715428B2 (en) * 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing
US8874876B2 (en) * 2011-03-22 2014-10-28 Texas Instruments Incorporated Method and apparatus for packet switching
US8762362B1 (en) * 2011-10-21 2014-06-24 Applied Micro Circuits Corporation System and method for updating a data structure
US8767757B1 (en) * 2012-02-15 2014-07-01 Applied Micro Circuits Corporation Packet forwarding system and method using patricia trie configured hardware
US9588923B2 (en) * 2014-01-24 2017-03-07 Applied Micro Circuits Corporation Flow pinning in a server on a chip

Also Published As

Publication number Publication date
CN108028808A (zh) 2018-05-11
EP3326338B1 (en) 2021-03-24
CN108028808B (zh) 2022-07-26
WO2017018980A1 (en) 2017-02-02
JP2018521596A (ja) 2018-08-02
EP3326338A1 (en) 2018-05-30
EP3326338A4 (en) 2019-03-13

Similar Documents

Publication Publication Date Title
TWI392288B (zh) 用於多核心通訊處理的系統及方法
JP6449872B2 (ja) ネットワーク環境における効率的なパケット処理モデルおよびパケット処理のための最適化されたバッファ利用をサポートするためのシステムおよび方法
JP6513627B2 (ja) アプリケーションレベルネットワークキューイング
US9910687B2 (en) Data flow affinity for heterogenous virtual machines
US9588923B2 (en) Flow pinning in a server on a chip
US10341264B2 (en) Technologies for scalable packet reception and transmission
CN105511954A (zh) 一种报文处理方法及装置
US20190196875A1 (en) Method, system and computer program product for processing computing task
WO2017000593A1 (zh) 报文处理方法及装置
JP5662949B2 (ja) 仮想ネットワーク環境におけるコピーの迂回
US10212259B2 (en) Management of transmission control blocks (TCBs) supporting TCP connection requests in multiprocessing environments
US10616116B1 (en) Network traffic load balancing using rotating hash
US10623521B2 (en) Distribution of messages to queues in a distributed computing environment
US20130110968A1 (en) Reducing latency in multicast traffic reception
US9894012B2 (en) Method and system to improve network connection locality on multicore systems
JP6923510B2 (ja) サーバオンチップにおけるフロー・ピンニング
WO2022199357A1 (zh) 数据处理方法及装置、电子设备、计算机可读存储介质
US10284501B2 (en) Technologies for multi-core wireless network data transmission
KR101578246B1 (ko) 고속 서열 분석을 위한 병렬 Intra-Query 라우팅 알고리즘
WO2017041509A1 (zh) 一种基于多处理单元的报文采样方法和装置
US20240104045A1 (en) System and method for ghost bridging
JP5359357B2 (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム
CN117955939A (zh) 用于支持高性能计算的数据类型引擎
KR20160073867A (ko) 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램
Latifi et al. Increasing the efficiency of IDS systems by hardware implementation of packet capturing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180313

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180718

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20180725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180823

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190304

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190904

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200117

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20200117

C11 Written invitation by the commissioner to file amendments

Free format text: JAPANESE INTERMEDIATE CODE: C11

Effective date: 20200127

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20200226

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20200302

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20200313

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20200323

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20201005

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20201207

C13 Notice of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: C13

Effective date: 20210201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210329

C302 Record of communication

Free format text: JAPANESE INTERMEDIATE CODE: C302

Effective date: 20210330

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20210531

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20210705

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20210705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210729

R150 Certificate of patent or registration of utility model

Ref document number: 6923510

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150