JP2008523729A - フロー割当て - Google Patents

フロー割当て Download PDF

Info

Publication number
JP2008523729A
JP2008523729A JP2007545691A JP2007545691A JP2008523729A JP 2008523729 A JP2008523729 A JP 2008523729A JP 2007545691 A JP2007545691 A JP 2007545691A JP 2007545691 A JP2007545691 A JP 2007545691A JP 2008523729 A JP2008523729 A JP 2008523729A
Authority
JP
Japan
Prior art keywords
flow
core
thread
assigned
processor core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007545691A
Other languages
English (en)
Inventor
コバレ,アブヒジット
リ,ユンホン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2008523729A publication Critical patent/JP2008523729A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract


一般に、1つの観点において、明細書には、ネットワーク・パケットのフローを、単一のダイ上に集積された、複数のマルチスレッド・プロセッサ・コアのセット内のマルチスレッド・プロセッサ・コアのスレッドに割り当てることが記述される。割当てに基づいて、フロー内のパケットは、割り当てられたプロセッサ・コア・スレッドによって処理される。

Description

本発明は、フローの割当てに関する。
ネットワークは、コンピュータおよび他の装置による通信を可能にする。例えば、ネットワークは、ビデオ、オーディオ、電子メール等に表われるデータを伝送することができる。典型的には、ネットワークを介して送信されるデータは、パケットとして知られる、より小さなメッセージによって運ばれる。類推すれば、パケットは、郵便箱に投函される封筒によく似ている。パケットは、典型的には、ペイロードとヘッダを含む。パケットのペイロードは、封筒内の手紙に類似する。パケットのヘッダは、封筒自体に書かれた情報によく似ている。ヘッダは、ネットワーク装置がパケットを適切に処理することを支援するための情報を含む。
複数のネットワーク・プロトコル(例えば、「プロトコル・スタック」)は、複雑なネットワーク通信を処理するために協働する。例えば、伝送制御プロトコル(TCP)として知られるトランスポート・プロトコルは、接続を設定し、かつネットワークを介してデータを転送するために、単純なメカニズムを有するアプリケーションを提供する。アプリケーションについてわかりやすく言えば、TCPは、例えばデータの再送信、ネットワーク・トラフィックの輻輳に適応できるような多種多様の通信上の課題を処理する。
かかるサービスを提供するために、TCPは、セグメントとして知られるパケット上で動作する。一般に、TCPセグメントは、インターネット・プロトコル(IP)のデータグラムのようなより大きいパケット内で(これらによって「隠蔽(encapsulate)」されて)、ネットワークを介して移動する。しばしば、IPデータグラムは、イーサネット(登録商標)・フレームのようなさらに大きなパケットによって、さらに隠蔽される。TCPセグメントのペイロードは、アプリケーションによってネットワークを介して送信されたデータのストリームの一部を伝送する。受信機は、受信セグメントを再構成することによりデータのオリジナル・ストリームを復元することができる。受信データの再構成および肯定応答(ACK)を送信側に返すことを許可するために、TCPは各ペイロード・バイトとシーケンス番号とを対応付ける。
各TCP接続の現在の状態は、伝送制御ブロック(TCB)として知られるデータのブロックに格納される。TCBは、次に予期されるシーケンス番号、送信された最後のシーケンス番号のようなデータを含む。接続のTCBは、典型的には読取られ、潜在的には受信および送信された各TCPセグメントで更新される。
上述のように、TCP(伝送制御プロトコル)の実施例は、一般に、個々の進行中の接続(「フロー」)の状態データを維持する。この状態データは、一般に、処理されたすべてのTCPセグメントのためにアクセスされる。メモリに状態データを読み書きするには時間がかかるために、データへのアクセスに使用されるメモリ動作によって、システム性能が低下することがある。さらに、TCPセグメントを処理するために複数の処理コアを使用するシステムでは、異なる要素がアクセスを競い合うために、状態データによって性能の遅延が引き起こされる場合がある。例えば、同一のフローに属するパケットは異なるコアによって処理されてもよく、その場合あるコアは、他のコアがその処理を完了するまで、そのフローの状態データへのアクセスを待機し続ける。
図1は、コア102a〜102n上で実行する、異なるスレッドにパケット・フローを割り当てるスキームの動作を示す。例えば、図示されるように、フロー「a」は、コア102aのスレッド「1」に割り当てられ、一方、フロー「b」は、コア102nのスレッド「2」に割り当てられる。これらのフローに属するパケットは、割り当てられたコア102a〜102nによって処理される。例えば、フロー「a」に属するパケット104a,104cは、コア102aのスレッド「1」によって処理され、一方、パケット104bは、コア102nの割り当てられたスレッド「2」によって処理される。同一のフローに属するパケットを同一のコア/スレッド上で処理することによって、多種多様のコンテンション(競合)およびアクセスの遅延を回避することができる。例えば、付与されたフローのためのTCBは、コアの外部メモリから繰り返し読取られ、または書き込まれる代わりに、ローカルなコア・メモリに格納することができる。さらに、付与されたフローのTCBに対するコアをまたぐコンテンションが除去されるので、ロッキングに関連するレイテンシを回避することができる。
実施例を単純化するために、図1では任意にフローを「a」および「b」と称する。実際には、IPデータグラムのIPヘッダおよび隠蔽されたTCPヘッダに含まれるデータの組(tuple)によって、付与されたパケットのフローを識別することができる。例えば、フローは、IPソース、宛先アドレス、ソースおよび宛先ポートの組合せによって識別される。組は、フローを識別するビットの連続(「フロー・シグネチャ」)を生成するために、(例えば、CRC(巡回冗長検査)アルゴリズムによって)ハッシュ化される。
図2A〜図2Dは、フロー割当てを生成するマルチコア・システムの実施例を図示する。この実施例において、コア102b〜102nは、TCPセグメントを処理するためのTCPスレッドのプールを提供する。各TCPスレッドは、TCPセグメントを独立して処理することが可能である。この処理は、セグメントの再構成、フローのためのTCPステート・マシンのナビゲーション、ACKメッセージの生成、送信ウィンドウの管理等を含む。
この実施例において、フロー割当てを実行するロジックは、グローバル分類110命令を含み、それによってフローがコア102b〜102nに割り当てられ、その後、これらのフローに属するパケットが、割り当てられたコア102b〜102nに分配される。かかる動作を実行するために、グローバル分類110命令は、フローと付与されたコア102b〜102nとを対応付けるデータ114にアクセスする。例えば、図2Aにおいて、フロー「a」はコア102bに割り当てられる。この割当てに加えて、データ114は、参照カウント(「参照カウント」)と付与されたフローとを対応付け、フロー内のいくつのパケットが、割り当てられたコアによって処理するためにスケジュールされたかどうかを識別する。データ114は、さらに、フローと、スケジュールされたパケットのいくつが完全に処理されたかを示す「完了」カウントとを対応付ける。スケジュールされたパケットがすべて処理された場合、フローのエントリは犠牲にされ (victimized) てもよい。例えば、周期的に、スレッドは、その「参照カウント」からフローの「完了」カウントを減算する。その結果がゼロ(0)である場合は、スケジュールされたパケットが全て処理されたことを示し、フロー・データは、データ114から除去される。別の方法では、「完了」カウントがゼロにされ、フローのための既存の割当てがそのまま残る。
グローバル分類110ロジックに加えて、実施例は、さらに、TCPスレッドを提供する各コア102b〜102n上で実行するローカル分類112b〜112n命令を特徴とする。112b〜112nは、各コア102b〜102nに対する同一のローカル分類ロジックの具体例であることに注意すべきである。一旦、グローバル分類110ロジックが、割り当てられたコア102bによって処理するためのパケットをスケジュールすると、コア102b上で動作するローカル分類112b〜112nロジックは、フローに割り当てられる特定のスレッドを決定する。このタスクを実行するために、ローカル分類器112bは、フローと付与されたスレッドとを対応付けるローカル・データ116bにアクセスすることができる。したがって、グローバル分類110およびローカル分類112bロジックは、細分性を増加して処理するためにデータグラムを送る。すなわち、グローバル分類110ロジックは、データグラムを割り当てられたコア102bのキューに入れることができ、一方で、ローカル分類器112bは、データグラムをコア102b内の特定のスレッドのキューに入れる。
これらの要素の動作例を説明するために、図2B〜図2Cは、TCPセグメントに隠蔽されたIPデータグラム104eの処理を示す。図2Bに示されるように、データグラム104eを受信した後、グローバル分類110ロジックは、データグラム104eのフロー・シグネチャ(「a」)の探索を試みる。この例では、フロー「a」の探索に成功すると、割り当てられたコア(「102b」)がリトリーブされ、グローバル分類110ロジックは、データグラム104eを、割り当てられたコア102bによって処理するためにキューに入れ、そして、フローの参照カウントが増分されて、コア102bによって処理するためのパケット104eのスケジューリングが反映される。図2Bは、コアのキューに入れられている実際のパケットを図示するが、グローバル分類110およびローカル分類112bロジックは、パケット・データのコピーを回避するために、パケット参照/処理上で動作してもよい。
図2Cに示されるように、割り当てられたコア102b上のローカル分類器112bは、結局、データグラム104eをキューから外し、フローのデータグラムを処理するために割り当てられるスレッドを決定する。その後、割り当てられたスレッドは、セグメント上でTCP処理を行なう。その動作において、スレッドは、メモリ(図示せず)からフローのTCBのコピーをキャッシュするために、ローカルのコア・メモリを使用してもよい。このコピーは、TCPスレッドおよび現在のパケットのためのコアの他のスレッドによって修正され、その後フロー内のパケットを受信することができる。図示されるように、付与されたデータグラムのための処理を完了した後、スレッドは、フローに対する「完了」カウントを増分する。
スレッドは、フローのためにキューに入れられたデータグラムをキューから外し、かつ処理すること続ける。結局、例えばスレッドがそのキューを空にした後、フローのためのTCBがメモリにライト・バックされる。したがって、この実施例は、フロー状態データが、「背中合わせの(back-to-back)」パケット(つまり、パケットは、スレッドがフロー内の先行パケットの処理を完了する前に、スレッドにより処理するためにスケジュールされる)のためにローカル・コア・メモリ内に残存することを保証し、これによって、費用のかかる外部メモリへの、または外部メモリからのフローの状態データの書込みおよび読取りが回避される。
図2B〜図2Cに示されたシナリオは、フロー「a」の先行割当てを仮定したものである。しかしながら、しばしば、フローは現在割当てを有しないことがある。その場合、パケットのためのグローバル分類110ロジックのフローの検索は失敗するであろう。この時点で、グローバル分類110ロジックは、データ114を書き込むことによって最初のフロー割当てを作成し、フローと割り当てられたコアとを対応付ける。フローの割当ては、(例えば、コア間のラウンドロビンを使用することによって)コアを介してバランス・フローをロードするため、または異なる品質のサービスを提供するために、多種多様の方法で実行される。フローを付与されたコアに割り当てた後、選択されたコアは、フローを処理するために利用可能なスレッドを割り当てることができる。
潜在的に、図2Dに示されるように、グローバル分類110ロジックを実行するコア102aは、さらに、TCPスレッドを提供し、ローカル分類器112aを実行してもよい。かかる実施例では、受信されたパケットは、コア102aのローカル分類器112aによって最初に処理されてもよい。ローカル分類器112aが、受信されたパケットのために割り当てられたスレッドnの識別に成功した場合は、それがパケットをそのスレッドnのキューに入れる。ローカル分類器112aが、割り当てられたスレッドの識別に成功しなかった場合は、次にグローバル分類器114が実行する。例えば、図示されるように、フロー「a」がコア102bのスレッド「n」にいまだ割り当てられていると仮定すると、パケット104fは、コア102aのローカル分類器112aによって最初に処理されるであろう。ローカル分類器102aは、パケット104fフローのためのローカル・スレッド割当てを格納しないので、ローカル分類器102aは、パケットをグローバル分類器110に送るであろう。この時点では、処理の順序は、図2Cに示すものと同じである。すなわち、グローバル分類器110は、コア102bのローカル分類器112bによって処理するためにパケット104fをキューに入れ、次に、スレッド「n」によって処理のためにパケット104fをキューに入れるであろう。
かかる実施例では、グローバル分類器110は、グローバル分類器110を実行するために、スレッドをコア102aに割り当ててもよい。この場合、グローバル分類器110は、コア102aのローカル分類器112aによってアクセスされたフロー/スレッド割当てデータを更新することにより、フローをコア102a上のスレッドに割り当てることができる。その後、グローバル分類器110は、ローカル分類器112aによって再処理するためにパケットをキューに入れることができる。
図3はグローバル分類処理の例を示す。図示されるように、グローバル分類器は、データグラムのフロー・シグネチャの探索を実行し(152)、フローが以前に付与されたコアおよび/またはスレッドに割り当てられていたかどうかを判定する(154)。割り当てられていない場合は、グローバル分類器は、フローをコアおよび/またはスレッドに割り当てる(158)。その後、データグラムは、割り当てられたコアおよび/またはスレッドによって処理するためにキューに入れられる(160)。
図4は、ローカル分類処理の例を示す。図示されるように、ローカル分類器は、キューに入れられたデータグラムのフローが、ローカル分類器を実行するコア上のスレッドに割り当てられていたかどうかの判定を試みる(166)。割り当てられていた場合は、データグラムは、そのスレッドによって処理するためにキューに入れられる(170)。そうでない場合は、フローは、コアの利用可能なスレッド(例えば現在実行中のスレッド)に割り当てられる(168)。
図2〜図4に示されたスキームにおいて、付与されたフロー内のセグメントを処理するTCPスレッドは、割り当てられたコアのローカル・メモリ内でフローのTCBを保持することができる。これによって、さらに、コアと、アクセスしている外部メモリとの間のアクセス・コンテンションに関連する待ち時間を短縮することができる。
図2〜図4に示された実施例もまた単なる例示であり、他の実施例では、設計または動作を変更してもよい。例えば、実施例で使用されるデータ114は、単一のテーブルとして示されるが、このデータは、動作を促進するために個別のテーブルに格納されてもよい。例えば、付与されたフローが現在割当てを有するかどうかの判定を促進するために、フロー・シグネチャが個別に格納されてもよい。例えば、シグネチャの少なくとも一部を内容参照可能メモリ(CAM:Content Addressable Memory)内に格納することができ、CAMの「ヒット」によって現在割当てを有するフローが素早く識別される。同様に、TCPスレッドによって増分された「完了」カウントは、TCPスレッドとグローバル分類ロジック110との間のアクセス・コンテンションを低減するために、個別に格納されてもよい。個別に格納されたとき、異なるフロー・データは、テーブル・インデックスによって対応付けされてもよい(例えば、フローに対応付けられたデータは、異なるテーブル内の同一の相対的位置に格納される)。
以上に示された技術の実施例は、それらの細分性において異なってもよい。すなわち、付与されたフローを特定のスレッドに割り当てる代わりに、システムは、単に、付与されたコアにフローを割り当て、利用可能性に基づいてセグメント上でスレッドを動作させてもよい。さらに、他の実施例では、スレッドは、グローバル・スレッドIDを特色としてもよく、それは、上記の2つのスキームの代わりに、パケットを正確なスレッドのキューに直接に入れるために、グローバル分類ロジックによって使用することができる。
上述の技術は、マルチコア中央処理装置(CPU)またはネットワーク・プロセッサのような多種多様のマルチコア装置内で実施することができる。例えば、図5は、ネットワーク・プロセッサ200の例を示す。示されたネットワーク・プロセッサ200は、Intel(登録商標)インターネット・エクスチェンジ・ネットワーク・プロセッサ(IXP: Internet eXchange network Processor)である。他のネットワーク・プロセッサは、異なる設計を特色とする。
図示されたネットワーク・プロセッサ200は、単一の半導体集積回路ダイ上にプロセッシング・コア202が集合していることを特色とする。コア202のそれぞれは、パケット処理に適した縮小命令セット・コンピュータ(RISC)プロセッサであってもよい。例えば、コア202は、汎用プロセッサの命令セットによって一般に提供される浮動小数点または整数除算命令を提供しなくてもよい。個々のコア202は、複数の実行スレッドを提供してもよい。例えば、コア202は、異なるスレッドのために複数のプログラム・カウンタおよび他の索引データを格納してもよい。個々のコア202は、コア内部のローカル・メモリを特色とするものでもよい。個々のコア202は、さらに、CAMを特色としていてもよい。CAMは、さらに、異なるコア202によって共有される資源であってもよい。
図示されるように、ネットワーク・プロセッサ200は、さらにプロセッサ200と他のネットワーク・コンポーネントとの間でパケットを伝送することができる少なくとも1つのインターフェイス202を特色とする。例えば、プロセッサ200は、スイッチ・ファブリック・インターフェイス202(例えば、共通スイッチ・インターフェイス(CSIX))を特色とすることができ、それによってプロセッサ200は、ファブリックに接続された他のプロセッサまたは回路にパケットを送信することを可能とする。プロセッサ200は、さらに、プロセッサ200が物理層(PHY)および/またはリンク層装置(例えば、MACまたはフレーマ装置)と通信することを可能にするインターフェイス202(例えばシステム・パケット・インターフェイス(SPI)インターフェイス)を特色とすることができる。プロセッサ200は、さらに、例えばホストまたは他のネットワーク・プロセッサと通信するためのインターフェイス208(例えば周辺要素相互接続(PCI)バス・インターフェイス)を含む。
図示されるように、プロセッサ200は、さらに、ハッシュ・コアのようなコア202によって共有される他のコンポーネント、コアによって共有される内部スクラッチ・メモリ、および、コアによって共有される外部メモリへのアクセスを提供するメモリ・コントローラ206,212を含む。ネットワーク・プロセッサ200は、さらに、ネットワーク動作に関連する「コントロール・プレーン」タスクを実行するためにしばしばプログラムされる、付加的なプロセッサ210(例えばStrongARM(登録商標)XScale(登録商標)、またはIntel(登録商標)アーキテクチャ(IA)コア)を含む。しかしながら、コア・プロセッサ210は、さらに、「データ・プレーン」タスクを処理してもよい。
コア202は、コア210または他の共用資源(例えば、外部メモリまたはスクラッチパッド・メモリ)を介して他のコア202と通信してもよい。コア202は、さらに、隣接するコア204と直接ワイヤードされた隣接レジスタを介して通信してもよい。
ネットワーク・プロセッサ200の機構は、多種多様の方法においてフロー割当てを実施するために使用することができる。例えば、各コア202に関連するCAMは、ローカル分類器によって使用される割当てデータを格納するために使用されてもよい。例えば、CAMの第1のN番目のエントリは、異なるコア・スレッドに割り当てられたN番目のフロー・シグネチャを格納してもよい。かかる実施例では、CAMエントリの順序数は、割り当てられたスレッドを識別する(例えば、第2のCAMエントリに格納されたフロー・シグネチャは、フローに割り当てられた第2のコア・スレッドを識別する)。
CAMは、さらに、グローバル分類器によって使用されてもよい。例えば、グローバル分類器を実行するコアのCAMの最後のM番目のエントリは、最初のシグネチャの探索を促進するために、現在割り当てられたフローのフロー・シグネチャのサブセット(例えば、図2A〜図2Cのデータ114のシグネチャの列)を格納するために使用されてもよい。CAMは、割り当てられたフローのすべてのシグネチャのための十分なスペースを特色としないことがあるので、残りのフロー・シグネチャおよび対応する割当てデータは、オフチップ(例えばSRAM内)に格納されてもよい。したがって、シグネチャのためのCAMミスによって、グローバル分類器はマッチのために残りのシグネチャのメモリの後続のサーチを実行する。
図示されたネットワーク・プロセッサ200は、異なるコア202間でパケットを送るために使用することができる多種多様のメカニズムを特色とする。例えば、パケットは、隣接するコアを接続する次の隣接レジスタを介して、またはメモリ内(例えば、スクラッチパッドまたはSRAM内)で実行されたキューを介して割り当てられたコアによって処理するためにキューに入れられてもよい。同様に、特定のスレッドのためのキューは、ローカル・コア・メモリ、スクラッチパッド、SRAM等において実行されてもよい。
潜在的に、コア202は、パケット処理パイプラインを実行するためにプログラムされてもよく、そこでは、1またはそれ以上のコア・スレッド上で動作するスレッドが、イーサネット(登録商標)動作(例えば、イーサネット(登録商標)の受信、イーサネット(登録商標)の非隠蔽)、IPv4および/またはIPv6動作(例えば検証)を実行し、また、1またはそれ以上のスレッドがTCP動作等を処理する。他のスレッドは、発生したデータ・ストリーム上でアプリケーション動作を実行してもよい。
図6は、上述された技術を使用してパケットを処理することができるネットワーク装置を示す。図示されるように、装置は、スイッチ・ファブリック310(例えば、クロスバまたは共用メモリのスイッチ・ファブリック)によって相互接続されたライン・カード300(「ブレード」)の集合を特色とする。スイッチ・ファブリックは、例えば、CSIX、またはハイパートランスポート(HyperTransport)、インフィニバンド(Infiniband)、PCI、パケットオーバーソネット(Packet-Over-SONET)、ラピッドアイオー(RapidIO)、および/またはユートピア(UTOPIA: Universal Test Operations PHY Interface for ATM)のような他のファブリック技術に適合してもよい。
個々のライン・カード(例えば300a)は、ネットワーク接続上の通信を処理する1またはそれ以上の物理層(PHY)装置302(例えば、光学的、ワイヤ、およびワイヤレスPHY)を含んでもよい。PHYは、異なるネットワーク媒体によって伝送される物理的信号と、デジタル・システムによって使用されるビット(例えば、「0」および「1」)との間の翻訳をする。ライン・カード300は、さらに、エラー検出および/または訂正のようなフレーム上での動作を実行することができるフレーマ装置(例えば、イーサネット(登録商標)、同期式光ネットワーク(SONET)、ハイ・レベル・データ・リンク(HDLC)フレーマまたは他の「レイヤ2」装置)304を含んでもよい。図示されたライン・カード300は、さらに、1または1以上のネットワーク・プロセッサ306を含んでもよく、それが、PHY302を介して受信されたパケットに対するパケット処理動作を実行し、また、スイッチ・ファブリック310を介して、パケットを転送する退出インターフェイスの提供するライン・カードへパケットを導く。潜在的に、ネットワーク・プロセッサ306は、フレーマ装置304の代わりに「レイヤ2」の役割を実行する。
図5および図6は、ネットワーク・プロセッサおよびネットワーク・プロセッサに組み込まれた装置の特定の例を示すが、これらの技術は、示された以外の設計によるプロセッサおよび装置を含む多種多様のアーキテクチャにおいて実行することができる。例えば、これらの技術は、マルチコアTCPオフロード・エンジン(TOE)内で使用されてもよい。かかるTOEは、IP格納ノード、アプリケーション(「レイヤ7」)ロード・バランサ、または他の装置に統合されてもよい。
さらに、これらの技術は、他のトランスポート層プロトコル、ネットワーク・プロトコル・スタック内の他の層におけるプロトコル、TCPおよびIP以外のプロトコルを処理するため、および、他のプロトコル・データ・ユニットを処理するために使用されてもよい。例えば、これらの技術は、非同期転送モード(ATM)パケット(「セル」)またはユーザ・データグラム・プロトコル(UDP)パケットのような他の接続指向プロトコルを処理するために使用されてもよい。さらに、用語「IP」は、IPv4およびIPv6の両方のIPの実施例を包含する。
ここで使用される用語「回路」は、ハードワイヤード回路、ディジタル回路、アナログ回路、プログラマブル回路等を含む。プログラマブル回路は、製造物(例えばリード・オンリ・メモリのような不揮発性メモリ)上に配置された実行可能な命令上で動作してもよい。
他の実施例は、請求項の範囲内である。
フロー割り当てを示す図である。 フローを割り当てるためのスキームの一例における動作を示す図である。 フローを割り当てるためのスキームの一例における動作を示す図である。 フローを割り当てるためのスキームの一例における動作を示す図である。 フローを割り当てるためのスキームの一例における動作を示す図である。 それらのフロー割当てに基づいてパケットを送るための処理の一例のフローチャートである。 それらのフロー割当てに基づいてパケットを送るための処理の一例のフローチャートである。 マルチコア・プロセッサの一例の図である。 ネットワーク装置の図である。

Claims (15)

  1. ネットワーク・パケットのフローを、単一のダイ上に集積された複数のマルチスレッド・プロセッサ・コアのセット内のマルチスレッド・プロセッサ・コアに割り当てる段階と、
    前記割り当てに基づいて、前記割り当てられたプロセッサ・コア・スレッドによって前記フロー内のパケットを処理する段階と、
    から構成されることを特徴とする方法。
  2. 前記パケットは、伝送制御プロトコル・セグメントを含むインターネット・プロトコル・パケットを含むことを特徴とする請求項1記載の方法。
  3. 前記フローは、少なくとも、前記パケットのインターネット・プロトコルのソース・アドレス、インターネット・プロトコルの行先アドレス、伝送制御プロトコルのセグメント・ソース・ポート、および伝送制御プロトコルのセグメント行先アドレスによって識別されるフローを含むことを特徴とする請求項2記載の方法。
  4. 前記コア・スレッドによって処理されることがスケジュールされた前記フロー内の各パケットが処理されたかどうかを判定する段階をさらに含むことを特徴とする請求項1記載の方法。
  5. プロセッサ・コアに関連するローカル・メモリ内への前記フローに関連するデータを読み取る段階をさらに含むことを特徴とする請求項1記載の方法。
  6. 前記データは、伝送制御プロトコル(TCP)接続の伝送制御ブロック(TCB)を含むことを特徴とする請求項5記載の方法。
  7. 第1プロセッサ・コアで、前記フローに割り当てられる前記プロセッサ・コアを決定する段階と、
    前記割り当てられたプロセッサ・コアで、前記フローに割り当てられるスレッドのセットの1つを決定する段階と、
    をさらに含むことを特徴とする請求項1記載の方法。
  8. マルチコア・プロセッサによって、
    ネットワーク・パケットのフローを、単一のダイ上に集積された複数のマルチ・スレッド・プロセッサ・コアのセット内のマルチ・スレッド・プロセッサ・コアに割り当て、かつ、
    前記割り当てに基づいて、前記フロー中のパケットを前記割り当てられたプロセッサ・コア・スレッドによって処理する、
    ための命令を含むことを特徴とする物品。
  9. 前記パケットは、伝送制御プロトコル・セグメントを含むインターネット・プロトコル・パケットを含むことを特徴とする請求項8記載の物品。
  10. 前記コア・スレッドによって処理されることがスケジュールされた前記フロー内の各パケットが処理されたかどうかを判定する命令をさらに含むことを特徴とする請求項8記載の物品。
  11. プロセッサ・コアに関連するローカル・メモリ内への前記フローに関連するデータをさらに読み取ることを特徴とする請求項8記載の物品。
  12. 前記データは、伝送制御プロトコル(TCP)接続の伝送制御ブロック(TCB)を含むことを特徴とする請求項11記載の物品。
  13. 第1プロセッサ・コアで、前記フローに割り当てられる前記プロセッサ・コアを決定する命令と、
    前記割り当てられたプロセッサ・コアで、前記フローに割り当てられるスレッドのセットの1つを決定する命令と、
    をさらに含むことを特徴とする請求項8記載の物品。
  14. 単一のダイ上に集積された複数のマルチスレッド・プロセッサ・コアと、
    命令であって、それによって、少なくとも前記複数のマルチスレッド・プロセッサ・コアのいくつかに、
    伝送コントロール・プロトコル/インターネット・プロトコル(TCP/IP)フローを前記プロセッサ・コアの前記スレッドの1つに割り当てさせ、
    前記割り当てに基づいて、前記割り当てられたプロセッサ・コア・スレッドによって前記フロー内のTCPセグメントを処理させる、命令と、
    から構成されることを特徴とする装置。
  15. 前記プロセッサは、少なくとも1つの内容参照可能メモリを含み、かつ、
    前記TCP/IPフローを前記スレッドの1つに割り当てる前記命令は、少なくとも1つの内容参照可能メモリ内にフロー識別子を書き込むための命令を含むことを特徴とする請求項14記載の装置。
JP2007545691A 2004-12-13 2005-12-09 フロー割当て Pending JP2008523729A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/011,800 US7564847B2 (en) 2004-12-13 2004-12-13 Flow assignment
PCT/US2005/044774 WO2006065691A1 (en) 2004-12-13 2005-12-09 Flow assignment

Publications (1)

Publication Number Publication Date
JP2008523729A true JP2008523729A (ja) 2008-07-03

Family

ID=36147088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007545691A Pending JP2008523729A (ja) 2004-12-13 2005-12-09 フロー割当て

Country Status (6)

Country Link
US (1) US7564847B2 (ja)
EP (1) EP1832085B1 (ja)
JP (1) JP2008523729A (ja)
CN (2) CN1801775B (ja)
AT (1) ATE524000T1 (ja)
WO (1) WO2006065691A1 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2221721A1 (en) 2009-02-20 2010-08-25 Hitachi, Ltd. Packet processing by multiple processor cores
JP2011124677A (ja) * 2009-12-09 2011-06-23 Nec Corp パケット処理装置、パケット振り分け装置、制御プログラム及びパケット分散方法
WO2011114477A1 (ja) * 2010-03-17 2011-09-22 富士通株式会社 階層型マルチコアプロセッサ、マルチコアプロセッサシステム、および制御プログラム
JP2012023419A (ja) * 2010-07-12 2012-02-02 Nec Corp データ転送装置、データ転送方法、及び、プログラム
JP2012169959A (ja) * 2011-02-16 2012-09-06 Sony Corp 送信端末および送信方法
CN103109272A (zh) * 2010-07-30 2013-05-15 阿尔卡特朗讯公司 用于电信网络中的多小区支持的装置
WO2014038582A1 (ja) * 2012-09-04 2014-03-13 日本電気株式会社 パケット振分装置、パケット振分方法、およびパケット振分プログラム
JP2014064173A (ja) * 2012-09-21 2014-04-10 Nippon Telegr & Teleph Corp <Ntt> メディアサーバ、処理割当・割込振分方法、処理割当方法及び割込振分方法
JP2014078239A (ja) * 2012-10-11 2014-05-01 Samsung Electronics Co Ltd マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法
JP2014531081A (ja) * 2012-06-28 2014-11-20 ▲ホア▼▲ウェイ▼技術有限公司 マルチプロセッサコアシステム内のプロセッサコアをスケジューリングするための方法、装置、およびシステム

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7564847B2 (en) 2004-12-13 2009-07-21 Intel Corporation Flow assignment
US20070014240A1 (en) * 2005-07-12 2007-01-18 Alok Kumar Using locks to coordinate processing of packets in a flow
US20070124728A1 (en) * 2005-11-28 2007-05-31 Mark Rosenbluth Passing work between threads
US7496038B2 (en) * 2005-12-12 2009-02-24 International Business Machines Corporation Method for faster detection and retransmission of lost TCP segments
US7555593B1 (en) * 2006-01-31 2009-06-30 Netlogic Microsystems, Inc. Simultaneous multi-threading in a content addressable memory
US8079077B2 (en) 2006-08-08 2011-12-13 A10 Networks, Inc. System and method for distributed multi-processing security gateway
US8332925B2 (en) 2006-08-08 2012-12-11 A10 Networks, Inc. System and method for distributed multi-processing security gateway
US20080086575A1 (en) * 2006-10-06 2008-04-10 Annie Foong Network interface techniques
US8094560B2 (en) * 2008-05-19 2012-01-10 Cisco Technology, Inc. Multi-stage multi-core processing of network packets
US20100208729A1 (en) * 2008-10-17 2010-08-19 John Oddie Method and System for Receiving Market Data Across Multiple Markets and Accelerating the Execution of Orders
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8874878B2 (en) * 2010-05-18 2014-10-28 Lsi Corporation Thread synchronization in a multi-thread, multi-flow network communications processor architecture
US8289975B2 (en) * 2009-06-22 2012-10-16 Citrix Systems, Inc. Systems and methods for handling a multi-connection protocol between a client and server traversing a multi-core system
CN102420771B (zh) * 2011-12-28 2014-05-21 中国科学技术大学苏州研究院 高速网络环境中提高tcp并发连接速度的方法
US9118618B2 (en) 2012-03-29 2015-08-25 A10 Networks, Inc. Hardware-based packet editor
CN102664815A (zh) * 2012-05-21 2012-09-12 华为技术有限公司 报文流量的负荷分担方法、装置和系统
US9596286B2 (en) 2012-05-25 2017-03-14 A10 Networks, Inc. Method to process HTTP header with hardware assistance
US8811401B2 (en) * 2012-06-21 2014-08-19 Breakingpoint Systems, Inc. Binding of network flows to process threads
US8929379B2 (en) 2012-06-21 2015-01-06 Breakingpoint Systems, Inc. High-speed CLD-based internal packet routing
WO2014052099A2 (en) 2012-09-25 2014-04-03 A10 Networks, Inc. Load distribution in data networks
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9330054B2 (en) 2012-10-31 2016-05-03 Freescale Semiconductor, Inc. System and method for assigning a message
EP3282672B1 (en) * 2013-01-30 2019-03-13 Palo Alto Networks, Inc. Security device implementing flow ownership assignment in a distributed processor system
US8997223B2 (en) 2013-01-30 2015-03-31 Palo Alto Networks, Inc. Event aggregation in a distributed processor system
US9077702B2 (en) 2013-01-30 2015-07-07 Palo Alto Networks, Inc. Flow ownership assignment in a distributed processor system
US9240975B2 (en) 2013-01-30 2016-01-19 Palo Alto Networks, Inc. Security device implementing network flow prediction
US20140258680A1 (en) * 2013-03-05 2014-09-11 Qualcomm Incorporated Parallel dispatch of coprocessor instructions in a multi-thread processor
US9325758B2 (en) 2013-04-22 2016-04-26 International Business Machines Corporation Runtime tuple attribute compression
US9426197B2 (en) * 2013-04-22 2016-08-23 International Business Machines Corporation Compile-time tuple attribute compression
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
US20150019702A1 (en) * 2013-07-10 2015-01-15 Brocade Communications Systems, Inc. Flexible flow offload
US20150074353A1 (en) * 2013-09-06 2015-03-12 Futurewei Technologies, Inc. System and Method for an Asynchronous Processor with Multiple Threading
CN104618304B (zh) * 2013-11-01 2017-12-15 新华三技术有限公司 数据处理方法及数据处理系统
US10020979B1 (en) 2014-03-25 2018-07-10 A10 Networks, Inc. Allocating resources in multi-core computing environments
US9806943B2 (en) 2014-04-24 2017-10-31 A10 Networks, Inc. Enabling planned upgrade/downgrade of network devices without impacting network sessions
JP2016162266A (ja) * 2015-03-03 2016-09-05 富士通株式会社 通信装置及びそのプロセッサ割当方法
US9971724B1 (en) * 2015-06-18 2018-05-15 Rockwell Collins, Inc. Optimal multi-core network architecture
CN113259415B (zh) 2016-07-30 2023-03-10 华为技术有限公司 一种网络报文处理方法、装置及网络服务器
US10476945B2 (en) 2017-02-01 2019-11-12 Juniper Networks, Inc. Consistent flow assignment in load balancing
CN107294855B (zh) * 2017-05-31 2019-08-16 国家电网公司 一种高性能计算网络下的tcp查找优化方法
WO2024119325A1 (en) * 2022-12-05 2024-06-13 Intel Corporation Method and apparatus to batch packet fragments prior to entrance into a processing core queue

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161505A (ja) * 1997-12-01 1999-06-18 Matsushita Electric Ind Co Ltd メディア送出装置
US20030081615A1 (en) * 2001-10-22 2003-05-01 Sun Microsystems, Inc. Method and apparatus for a packet classifier

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195351B1 (en) * 1998-01-28 2001-02-27 3Com Corporation Logical switch set
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6629195B2 (en) * 2001-06-26 2003-09-30 Intel Corporation Implementing semaphores in a content addressable memory
US7248586B1 (en) * 2001-12-27 2007-07-24 Cisco Technology, Inc. Packet forwarding throughput with partial packet ordering
US7292589B2 (en) * 2002-08-13 2007-11-06 Narendra Kumar Dhara Flow based dynamic load balancing for cost effective switching systems
US7299266B2 (en) * 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US7039914B2 (en) * 2003-03-07 2006-05-02 Cisco Technology, Inc. Message processing in network forwarding engine by tracking order of assigned thread in order group
GB0311564D0 (en) * 2003-05-20 2003-06-25 Ibm Monitoring operational data in data processing systems
US20050111355A1 (en) 2003-11-20 2005-05-26 Eric Plaks Managing timers
US7564847B2 (en) 2004-12-13 2009-07-21 Intel Corporation Flow assignment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161505A (ja) * 1997-12-01 1999-06-18 Matsushita Electric Ind Co Ltd メディア送出装置
US20030081615A1 (en) * 2001-10-22 2003-05-01 Sun Microsystems, Inc. Method and apparatus for a packet classifier

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2221721A1 (en) 2009-02-20 2010-08-25 Hitachi, Ltd. Packet processing by multiple processor cores
US8199675B2 (en) 2009-02-20 2012-06-12 Hitachi, Ltd. Packet processing device by multiple processor cores and packet processing method by the same
JP2011124677A (ja) * 2009-12-09 2011-06-23 Nec Corp パケット処理装置、パケット振り分け装置、制御プログラム及びパケット分散方法
WO2011114477A1 (ja) * 2010-03-17 2011-09-22 富士通株式会社 階層型マルチコアプロセッサ、マルチコアプロセッサシステム、および制御プログラム
JPWO2011114477A1 (ja) * 2010-03-17 2013-06-27 富士通株式会社 階層型マルチコアプロセッサ、マルチコアプロセッサシステム、および制御プログラム
JP2012023419A (ja) * 2010-07-12 2012-02-02 Nec Corp データ転送装置、データ転送方法、及び、プログラム
CN103109272A (zh) * 2010-07-30 2013-05-15 阿尔卡特朗讯公司 用于电信网络中的多小区支持的装置
JP2013541241A (ja) * 2010-07-30 2013-11-07 アルカテル−ルーセント ネットワークにおけるマルチ・セル・サポートのための装置
KR101467967B1 (ko) * 2010-07-30 2014-12-02 알까뗄 루슨트 텔레커뮤니케이션 네트워크에서의 멀티-셀 지원을 위한 장치
JP2012169959A (ja) * 2011-02-16 2012-09-06 Sony Corp 送信端末および送信方法
JP2014531081A (ja) * 2012-06-28 2014-11-20 ▲ホア▼▲ウェイ▼技術有限公司 マルチプロセッサコアシステム内のプロセッサコアをスケジューリングするための方法、装置、およびシステム
WO2014038582A1 (ja) * 2012-09-04 2014-03-13 日本電気株式会社 パケット振分装置、パケット振分方法、およびパケット振分プログラム
JP2014064173A (ja) * 2012-09-21 2014-04-10 Nippon Telegr & Teleph Corp <Ntt> メディアサーバ、処理割当・割込振分方法、処理割当方法及び割込振分方法
JP2014078239A (ja) * 2012-10-11 2014-05-01 Samsung Electronics Co Ltd マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法

Also Published As

Publication number Publication date
CN1801775A (zh) 2006-07-12
EP1832085A1 (en) 2007-09-12
WO2006065691A1 (en) 2006-06-22
CN1801775B (zh) 2014-03-26
CN102904871A (zh) 2013-01-30
US7564847B2 (en) 2009-07-21
CN102904871B (zh) 2015-08-05
US20060126628A1 (en) 2006-06-15
ATE524000T1 (de) 2011-09-15
EP1832085B1 (en) 2011-09-07

Similar Documents

Publication Publication Date Title
JP2008523729A (ja) フロー割当て
US7853951B2 (en) Lock sequencing to reorder and grant lock requests from multiple program threads
US8015392B2 (en) Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets
TWI543073B (zh) 用於多晶片系統中的工作調度的方法和系統
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
CN113728315A (zh) 促进网络接口控制器(nic)中的有效消息匹配的系统和方法
US8874797B2 (en) Network interface for use in parallel computing systems
US20040252686A1 (en) Processing a data packet
US8761204B2 (en) Packet assembly module for multi-core, multi-thread network processors
CN113490927B (zh) 具有硬件集成和乱序放置的rdma输送
US20070014240A1 (en) Using locks to coordinate processing of packets in a flow
US20070044103A1 (en) Inter-thread communication of lock protected data
EP1636967A1 (en) Network protocol off-load engine memory management
EP3928213A1 (en) Rdma transport with hardware integration
US12039359B1 (en) System and method for isolating work within a virtualized scheduler using tag-spaces
US20060031628A1 (en) Buffer management in a network device without SRAM
US7477641B2 (en) Providing access to data shared by packet processing threads
WO2006065688A1 (en) High performance transmission control protocol (tcp) syn queue implementation
US20060161647A1 (en) Method and apparatus providing measurement of packet latency in a processor
US20060140203A1 (en) System and method for packet queuing
US20040233934A1 (en) Controlling access to sections of instructions
CN118012510B (en) Network processor, network data processing device and chip
US20060067348A1 (en) System and method for efficient memory access of queue control data structures
CN118012510A (zh) 一种网络处理器、网络数据处理装置和芯片

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100308

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100326

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100426