JP6188093B2 - 通信トラフィック処理アーキテクチャおよび方法 - Google Patents
通信トラフィック処理アーキテクチャおよび方法 Download PDFInfo
- Publication number
- JP6188093B2 JP6188093B2 JP2015550678A JP2015550678A JP6188093B2 JP 6188093 B2 JP6188093 B2 JP 6188093B2 JP 2015550678 A JP2015550678 A JP 2015550678A JP 2015550678 A JP2015550678 A JP 2015550678A JP 6188093 B2 JP6188093 B2 JP 6188093B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- data
- main processor
- engine
- offload
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/33—Flow control; Congestion control using forward notification
-
- 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/12—Protocol engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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/08—Protocols for interworking; Protocol conversion
-
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本願は、2012年12月26日に出願された米国仮特許出願第61/745,951号に関連する出願であり、その利益を主張するものである。
別の実施態様において、図1に示すメモリのサイズおよびタイプに加えて、またはそれらに代えて、その他のサイズおよび(または)タイプのメモリを提供することができる。
メインCPUアーキテクチャを備えたデバイスは、アーキテクチャ例100に基づいたアーキテクチャを備えたデバイスと類似または同等のデータレートを提供できるかもしれないが、アーキテクチャ例100に基づいたアーキテクチャを備えたデバイスは、1つ以上のエンジン158、160、162にタスクをオフロードすることでメインCPUの可用性がより高められているため、より機能が豊富なアプリケーションまたはサービスおよび(または)より優れたアプリケーション/サービス応答時間をサポートできる可能性がある。
一実施態様において、ハードウェアアクセラレーション機能は、上位レイヤのソフトウェアコンポーネントおよびアプリケーションに対してハードウェアを透過的にするカスタマイズされたソフトウェアデバイドライバを通じてアクセスされる。Linux(登録商標)環境では、例えば、オープンソースドライバおよび若干変更を加えたカーネルを使用することができる。これによりユーザーはカーネルをさらにカスタマイズし、Linux環境に加えてソフトウェアアプリケーションを実行することができる。この種のハードウェア抽象化アプローチを使用してその他のオペレーティングシステムをサポートすることができる。
アーキテクチャ例100でメインCPU102、104からセキュリティエンジン160にオフロードできる機能と関連処理には、IPSec(Internet Protocol Security)、DTCP(Digital Transmission Content Protection)、SRTP(Secure Real−time Transport Protocol)、および(または)SSL(Secure Sockets Layer)の1つ以上が含まれる。前述は図1に示すアーキテクチャ例100の全般的な説明である。より詳細には以下の実施例で説明する。
メインCPUは、コードサイズ削減とアプリケーションアクセラレーションのためのソフトウェアアクセラレーション、シングルまたはマルチオペレーティングシステム(O/S)アプリケーション向けの非対称型マルチプロセッシング(AMP)と対称型マルチプロセッシング(SMP)、グラフィックス/演算処理向けのSIMD(Single Instruction Multiple Data)命令セット、JTAG/プログラムとレースインターフェイス(PTM)、パフォーマンスモニタリング、および(または)例えば、仮想アドレストランスレーションを加速するためのバッファリングなどのその他機能をサポートすることができる。本発明の開示はいかなる特定のメインCPUまたはメインCPUのタイプにも限定されない。また、アーキテクチャ例100はデュアルCPUアーキテクチャであるが、本発明の開示の要素はシングルCPUアーキテクチャおよび(または)2つを超えるメインCPUを備えたアーキテクチャにも適用できる。
一実施態様において、システム内のレジスタはメモリマッピングされている。その場合、構成パラメータは各レジスタがメモリ空間内で割り当てられたアドレスに書き込むことで変更される。
前記フレキシブル相互接続272、メインCPU102、104および別個の「オフロード」用プロセッサを含むシステム内のあらゆるプロセッサ、または、例えばネットワークエンジン158、セキュリティエンジン160、および(または)パケットエンジン162を実装したオフロード用サブシステム内のハードウェアが、システム内の任意のリソースを制御できる。これによって、システムのソフトウェアはランタイムでどのプロセッサがどの入力/出力(I/O)を制御するかを割り当てることができる。これによって別個のオフロード用プロセッサまたはハードウェアが、PCIeインターフェイスなど高帯域幅のSerDes I/Oの制御に取って代わり、メインCPU102、104から関連処理をオフロードすることが可能になる。
一実施態様において、各メインCPU102、104はキャッシュコヒーレンシポートを備えている。完全なI/Oコヒーレンシを提供するため、特定のメモリアドレスをキャッシュコヒーレンシポートに割り当てることができる。キャッシュコヒーレンシポートでの読み出しがいずれかのメインCPUのL1データキャッシュにヒットし、キャッシュコヒーレンシポートでの書き込みがL1キャッシュ内のいずれかの古いデータを無効にしてL2キャッシュ152にライトスルーすることが可能である。これによりシステムパフォーマンスの大幅な向上と節電を可能にし、同時にドライバソフトウェアを簡素化することができる。L2/L3メモリシステムが最新であることを確約するためにデバイスドライバがキャッシュクリーニングやフラッシュを実行する必要がなくなる。キャッシュコヒーレンシについては以下で詳細に説明する。
一実施態様において、ネットワークエンジン例は、メインCPU102、104に選択されたフローが転送されるまでに、最大8192のハードウェアフローと12000のハードウェアルックアップをサポートする。ネットワークエンジン例300を使用したハードウェアアクセラレーションは、フローごと/ルールごとにオンまたはオフにすることもできる。
PSPID→LSPID(論理ソースポートID)マッピング。このマッピングは、例えば、ポートアグリゲーションの場合など、例えば、物理ポートと仮想ポート間で遷移(transition)がある場合に適用されることがある。転送エンジン304自体はLSPIDを理解する一方で、この例では、ネットワークインターフェイス302はPSPIDで動作する。
パケットクラス分け。パケットがアップストリームに向かっている、またはユーザーポート(ユーザーネットワークインターフェイス、UNI)アップストリームからである、またはパケットがネットワークダウンストリームのサービスプロバイダ側からきている場合、例えば、クラス分けはパケットで実行される。クラス分けから、パケットに対するサービスまたは一般運用(general operation)が決定される。
一実施態様において、サービスデータベース(SDB)がパケットに対して実行される検索のタイプと、転送のクラス分けに基づいたいくつかの全体的構成を設定する。
次にハッシュとプレフィックスロンゲストマッチ検索が実行される。これらはパケットを転送する方法、QoSを設定する方法などを決定することができる。それらがさらにIPおよびMAC(メディアアクセス制御)アドレステーブルに差し向けられ、NATが必要な場合パケットヘッダで何を置き換えるかを決定する。
また、一実施態様において、レイヤ2転送検索のためVLANのメンバーとしてポートを割り当てるためのVLANメンバーシップテーブルもある。
最後に、VLANとQoSの結果テーブルにより、VLANの追加/削除およびQoS値の変更のため、パケットを変更することができる。
図3に示すように、このエンキュー操作はキューマネージャ306を通じてメモリ312に置かれる。パケットは、パケットがメインCPUキューを出るスケジューリングをするスケジューラ308による命令を受けてデキューされるまでVOQに留まる。
上述したようにフレキシブル相互接続272(図2)はシステム内のメインCPU102、104を含むあらゆるプロセッサ、およびオフロードサブシステムをあらゆるリソースと通信させ、制御を担うことを可能にするため、メインCPU102、104は変換されたパケットを転送することができる。また、この例において、メインCPU102、104はフローテーブルも更新する。
・ TCPおよびUDP(User Datagram プロトコル)パケットの送信元および宛先ポート変更
・ PPPoE/PPPヘッダ挿入/削除
・ MAC送信元アドレス(SA)/宛先アドレス(DA)の変更と置換
・ IPv4およびIPv6のIP送信元/宛先アドレス変更
・ 現在のIPオプションおよび(または)拡張ヘッダの維持
・ IEEE802.1p/DSCP(Differentiated Services Code Point)−サービスタイプ(ToS)などのQoSフィールド変更
・ 1つまたは2つのVLANペアでのVLAN運用(QinQサポート)
・ IPv4ヘッダチェックサムの更新
・ L4(TCPまたはUDP)ヘッダチェックサムの更新
パケットはそれがIPv4またはIPv6パケットに変換される前に、0x8864のイーサネットタイプ、あるいは0x0021または0x0057いずれかのPPPタイプを有する必要がある。変換中に、イーサネットタイプは、IPv4の場合0x0800、またはIPv6の場合0x86DDのいずれかで置き換えられる。次の6バイト、PPPoEヘッダ(V、T、コード、セッションID、長さ)およびPPPタイプはすべて取り除かれる。
・ Version=1
・ Type=1
・ Code=0
フローテーブルが構成されたら、カプセル化/カプセル化解除タスクとセキュリティタスク(あれば)は、オフロード/アクセラレーションプロセッサ316によって実行される。カプセル化/カプセル化解除とセキュリティタスクは、ここで開示されるデータ処理タスクの例であり、メインCPU102、104で多くの処理サイクルを占用し、その他のタスクに利用可能な処理サイクルはわずかしか残らないことがある。
オフロード/アクセラレーションエンジンプロセッサ316と転送エンジン304の相互作用は、上述したようにパケットがメインCPU102、104に検査のため転送される状況においてVOQを通じて行うことができる。
一実施態様において、パケットエンジンに1ポート、セキュリティエンジンに1ポートあり、これらの各ポートがそれぞれスケジューラ308により制御され、宛先VOQとして設定可能な8つのキューを有する。パケットがパケットエンジン、または同様にセキュリティエンジンに到着すると、パケットが処理され、そのヘッダがパケットエンジンにより変更されたり、セキュリティエンジンにより暗号化または暗号化解除されたりすることがある。処理後のパケットは、例えば、オフロード/アクセラレーションエンジンプロセッサ316のオンボードローカルDMAコントローラを通じて、最終的にパケットエンジンポートまたはセキュリティエンジンポートの外に移動されるか、メモリ312に戻される。この種のポートとキューの配備は、この例ではメインCPU102、104とオフロード/アクセラレーションエンジンプロセッサ316間で、効率的なプロセッサ間の通信を提供する。
一実施態様においては、112のVOQがある。パケットがGMAC146、148、150(図1)、メインCPU102、104、またはその他ソースなど任意のソースにより受け取られると、それらは転送エンジン304に渡され、それがパケットをドロップするか転送するか(適切であれば変更する)を最終的に決定する。パケットが転送される場合、スケジューラ308によってパケットの放出がスケジュールされるまでそのパケットを保持するキューを転送エンジン304が特定する。Linuxなどのオペレーティングシステムの場合、これはパケットのスケジューリングができるトラフィック制御モジュールによって制御されることがある。
・ 絶対優先(SP)サービス
・ 不足ラウンドロビン(DRR)スケジューリングサービス
・ マルチキャストサービス向けRootキューサポート
・ 物理ポート当たりのSP/DRRキューの組み合わせ階層
・ ポート、rootキュー、メインCPUスケジューラを扱うメインスケジューラ
一実施態様において、スケジューラ308は階層型スケジューリングを実装する。例えば、rootキュースケジューラ、メインCPUスケジューラ、ポート毎のスケジューラがトラフィックキューをトップレベルのスケジューラにすべてスケジュールすることができる。より下のレベルのスケジューラはそれぞれSPキューとDRRキューをスケジュールすることができる。DRRスケジューラはDRRキューからのトラフィックをスケジュールすることができ、その後SPキューとDRRスケジュール済みキューがトップレベルのスケジューラにフィードする次のレベルのSPまたはDRRスケジューラでスケジュールされる。ポート毎のスケジューラはさらにすべてのポートに対する次のレベルのスケジューラ、例えば、トップレベルのスケジューラにフィードするラウンドロビン(RR)スケジューラにフィードすることができる。
SPスケジューリングは高優先度のアプリケーションに良好なサービスを提供する一方で、低優先度のパケットは枯渇してしまう可能性がある。この問題を克服するために、パケットポリサーおよび(または)シェイパーを最高優先度のサービスに使用し、DDRスケジューリングを残りに使用することができる。DRRを使用することで帯域幅がすべてのサービスで共有され、同時にQoSを維持できる。ユーザー要件に従って異なる優先度に重み付けを適用することができる。
セキュリティエンジン160とパケットエンジン162は図1と図2で別々に示されているが、サブシステム例400はこれらのエンジンを両方実装している。
一実施態様において、パケットインターフェイス402はパケットエンジンプロセッサ404とセキュリティエンジン408に接続するための複数の仮想内部ポートを提供する。この内部インターフェイスは、上述したように一実施態様においてポートおよびVOQを使用して、IPSec、GRE(汎用ルーティングカプセル化)、またはその他トンネルあるいはブリッジされたフレームなど、複数のパス(pass)でパケットに極めて高速のターンアラウンドを実現する。非パケットインターフェイス416は同様に、サブシステム例400が他のコンポーネントと少なくともデータを交換することを可能にするが、非パケットインターフェイスの場合、このデータはパケットの形式ではない。
一実施態様において、パケットインターフェイス402はイーサネットインターフェイスであり、非パケットインターフェイスは、例えば、PCIe、SATA、および(または)USBインターフェイスを含むことができる。
サブシステム例400において、これらの機能はパケットエンジンのパケット処理機能を含む。この例におけるパケットエンジンはメモリ410または別のメモリに格納されたソフトウェアに実装され、パケットエンジンプロセッサ404によって実行される。パケットエンジンプロセッサ404または別のオフロードプロセッサのタイプは、メインCPU102、104からオフロードされる特定機能によって異なる。一般に、メインCPU102、104はオフロードプロセッサより強力であるため、メインCPUのオフロードは、オフロードされるハードウェア(メインCPU)ほど複雑ではない追加のハードウェアに依存しない。これはまた、メインCPUからオフロードプロセッサまたはその他のオフロードハードウェアへのタスクの移動時に電力を節約できることにもつながる。
一実施態様において、セキュリティエンジン408、および場合によっては複数のセキュリティエンジンが実装されていても1つのセキュリティエンジンのみが、SAデータベース414に対する完全なダイレクトアクセスを有する。サブシステム例400のその他のコンポーネントおよび(または)サブシステム例が実装されているシステムのコンポーネントは、SAデータベース414が格納されているメモリデバイスまたは領域にライトオンリーのアクセスを有することがある。
一実施態様において、パケットエンジンは異なるプロトコルを橋渡しする。例えば、一実施態様において、ネットワークエンジン例300(図3)はイーサネットスイッチングを処理するためにハードコードされており、パケットエンジンがネットワークエンジンとその他非イーサネットインターフェイス間のトラフィックを橋渡しする。この場合、パケットは最初の処理またはイーサネットへのトランスレーション/変換のため非パケットインターフェイス416を通じてパケットエンジンプロセッサ404に渡され、その後ネットワークエンジンに提供される。
・ IPSecパケット処理(リプレイ、SA変更、カプセル化、カプセル化解除)
・ IPフラグメント再アセンブリ
・ ディスクブロック暗号化/暗号解除
・ IPトンネリング作成および終了
・ ワイヤレスブリッジング、IEEE802.11とEthernet II/IEEE 802.3間の変換など
一実施態様において、パケットエンジンは、メインCPU102、104(セキュリティエンジン408と合わせて暗号化をサポートするため)と、カプセル化、暗号化、ブリッジング、再アセンブリをサポートするためのネットワークエンジン158、300を含む2つのユーザータイプを有することができる。これらのユーザーは、一部の実施態様においては同時に、各ユーザーに対してチップ上で複数のセキュリティアソシエーションをあらかじめ構成するためにセキュリティエンジン408を使用できる。
メインCPU102、104ではなく、オフロードプロセッサがセキュリティエンジン408を制御する「間接的な」制御の実施態様の場合、メインCPUが処理される1つ以上のパケットをオフロードプロセッサに示すか、または提供する。例えば、メモリポインタをパケットエンジンプロセッサ404に提供してもよい。その後オフロードプロセッサがセキュリティエンジン408をプログラムして、セキュリティエンジン408によるパケットの暗号化/暗号解除またはその他セキュリティ処理を調整する。これにはセキュリティエンジン408にメモリポインタを提供すること、およびセキュリティ処理が完了したときセキュリティエンジンからメモリポインタを受け取ることが含まれる。その後オフロードプロセッサが、例えばメモリポインタをメインCPUに返すことで、メインCPU102、104に完了を示す。
セキュリティエンジン408同様に、専用のハードウェアに他のオフロードまたはアクセラレーションエンジンを実装することができる。連結リストウォーカーエンジン、バッファアロケータエンジン、SAMBAオフロードエンジンは、さらに機能性を高めるためにオフロードまたはアクセラレーションサブシステムに実装できる他のオフロードまたはアクセラレーションエンジンの例である。これらの追加エンジン例は図4に示されていないが、パケットエンジンプロセッサ404およびセキュリティエンジン408と同じように、セキュリティエンジンについて示されているSAデータベース414への直接のフルアクセスを例外として、図4のその他コンポーネントと相互接続することができる。
連結リストウォーカーエンジンはメインCPU102、104で実行されるソフトウェアからこの処理をオフロードするために使用することができる。連結リスト構造で数多くのメモリ読み出しを行う代わりに、メインCPU102、104は、連結リスト構造をリーフノードレベルまで辿った連結リスト構造のヘッドを連結リストウォーカーエンジンに提供することができる。これが行われると、パケットのソフトウェアによる読み出し/書き込みが簡単になる。
実行できるアクションには、例えば、リストの終わりに1つ以上の新規項目を挿入すること(その場合挿入する項目を含むメモリ内のアレイへのポインタをメインCPU102、104が提供できる)、リストから最後のN項目を削除すること(その場合連結リストウォーカーエンジンが埋めることができるメモリ内の空きアレイへのポインタをメインCPUが提供できる)、および(または)その他のアクションが含まれる。連結リストウォーカーエンジンは、一実施態様において、割り込みを設定することでメインCPUに完了を知らせる。
一実施態様において、バッファアロケータエンジンによりメインCPU102、104に返されるのは、割り当てられたバッファ(のメモリアドレス、例えば)へのポインタである。
SAMBAオフロードエンジンは、メインCPU102、104がディスク宛てのネットワークトラフィックをSAMBAオフロードエンジンにただ転送することを可能にする。その後SAMBAオフロードエンジンはSAMBAプロトコルに従ってトラフィックを処理し、すべての得られたファイルシステム管理を処理するため、メインCPUで実行されるはずであったデータ処理タスクを実行することで、メインCPU102、104の処理負荷を軽減する。
各メインCPU510がLinuxネットワーキングプロトコルスタック512をサポートし、別の実施態様ではその他のオペレーティングシステムをサポートしてもよい。WiFiドライバ514は下位レイヤドライバ516と上位レイヤドライバ518を含む。イーサネットドライバが520で示され、メインCPU510はネットワークインターフェイスドライバ522も実行する。CPUポート524はメインCPU510とネットワークエンジン530間の通信を可能にする。
ここで説明されるように、セキュリティエンジンはセキュリティ関連機能を処理し、パケットエンジンはデータプレーン機能を処理する。セキュリティエンジンはハードコードされているがメインCPU501で稼働するシステムソフトウェアにより構成可能であり、パケットエンジンはパケットエンジンプロセッサ602、612、パケットメモリ604、614、およびDMAコントローラ606、616をそれぞれ含む。
図に示すように、パケットエンジン0は下位レイヤWiFi送信(Tx)ドライバ714を実行し、パケットエンジン1は下位レイヤWiFi受信(Rx)ドライバを実行する。各パケットエンジンは、メモリに格納されるプロセッサ間通信(IPC)メールボックス716、726と、例えばトンネリング作成と終了を処理するためのWiFiドライバトンネルモジュール718、728を含む。1つ以上のセキュリティモジュールも提供され、パケットエンジンおよび(または)メインCPU510により使用されるが、図の複雑化を回避するために図7には示されていない。メインCPU510はLinuxネットワーキングプロトコルスタック512をサポートし、かつネットワークインターフェイスドライバ522と、ネットワークエンジンカーネルモジュール626を含む。また各メインCPU510は、ネットワークエンジン530と通信するためのCPUポート524、IPCメールボックス734、上位レイヤドライバ740とWiFiオフロードアダプテーションレイヤ(WOAL)738を含むWiFiドライバ736、およびWiFiドライバトンネルモジュール742、744も含む。
一実施態様において、ネットワークエンジン530は標準のイーサネットに基づいており、802.3フレームを把握して転送することができる。WiFiモジュール702、704経由で送受信されるフレームは802.3フレームとは非常に異なる802.11フレームの形式である場合がある。
メインCPU510とパケットエンジン間のIPCメカニズムは、一実施態様において、構成、制御、管理機能に使用される。現在のWiFiオフロード例では、ステーションごとに、802.11フレームと802.3フレーム間の相互変換を直接制御および更新するために使用される。また、診断およびパフォーマンスモニタリングなどの管理にも使用できる。
図7に示すオフロード設計の例では、パケットエンジンがデータインターフェイスを処理し、ユーザーデータフレームをWiFiモジュール702、704に、およびWiFiモジュール702、704から移動させる。したがって、パケットエンジンは714、724で示されるように下位のレイヤドライバ機能を実行し、プロトコル管理とコントロールに関連する上位レイヤドライバ機能は、740で示されるように、メインCPU510上のWiFiドライバ736に留まる。WOAL738はこのオフロードを可能にするが、これについては以下でより詳細に説明する。
上位レイヤドライバ740は、802.11から802.3へのフレーム形式の変換を含め、図5の上位レイヤドライバ518と同じようにそのフレームを処理する。その後そのフレームがLinuxネットワーキングプロトコルスタック512に渡され、そこで転送決定が行われる。この決定はフレームの転送先となるイグレスポートを提供する。ネットワークエンジンカーネルモジュール626はソースのMACアドレスについてネットワークエンジン530内にフローエントリを作成する。フレームはネットワークインターフェイスドライバ522に渡され、さらにそこからネットワークエンジン530に送信されて転送される。
フレームがネットワークエンジン530により直接転送されたときのWiFi下位レイヤデバイスドライバ714での基本動作は、他の処理機能の中でも特に、802.3フレームを802.11フレームに変換することである。フレームはWiFiドライバトンネルを介してパケットエンジン0に送信される。その後、または実質的に同時に、WOAL736はパケットエンジン0にコンフィギュレーションメッセージを送信し、送信テーブルにエントリが作成され、その宛先MACアドレスによりインデックスされる。このエントリによって、その宛先MACアドレスを持つ802.3フレームが802.11フレームに変換され、適切なWiFiモジュール702、704に直接送信することが可能となる。
図7のアーキテクチャ例700と図8のアーキテクチャ例800の違いの1つは、前者はWiFiモジュール702、704の処理能力要件が非対称な場合、ロードバランシングが可能である点である。しかし、両方のWiFiモジュール702、704をアーキテクチャ例800におけるパケットエンジン0と1両方に相互接続することも可能である。
ネットワークエンジン930はインターネット902と通信する。プロトコル管理または制御タスクは、図9においてURL(Uniform Resource Locator)プロセッシング910として示されているメインCPU510に留まる。URLプロセッシング910はこの実施例においてメインCPU510により実行されるソフトウェアの形式である。ローカルURLデータベース912は、データトラフィックがどのようにフィルタされるかを指定するフィルタリング制御情報を格納する。
一実施態様において、ローカルURLデータベース912は「ホワイトリスト」または許可されているデータトラフィックを指定した許可済みフロー情報(許可されていないフローがドロップされる、または別の方法でフィルタされる)を格納することができる。ローカルURLデータベース912は、示された例において、クラウドセキュリティサーバー904からのURLデータベース更新によって自動入力される。これらの更新は毎日、および(または)その他自動化されたスケジュール、および(または)要求により実行することができる。ネットワークエンジンカーネルモジュール914も図9に示されている。
図7と図8のWiFiの例では、メインCPU510が上位レイヤWiFiプロトコル管理または制御タスクをやはり処理しているため、オフロードすることでプロトコルがどのように運用されるかが変化したり、あるいはWiFiモジュール702、704に変更が必要になったりすることはない。同様に、図9のウェブフィルタリング例では、URLプロセッシング910がメインCPU510にあり、ネットワークエンジン930のハッシュクラシファイア908へのフィルタリングのオフロードはHTTPとTCPの動作に影響しない。HTTPとTCPのプロトコル管理または制御タスクはメインCPU510によって処理され、データ処理はネットワークエンジン930にオフロードされる。
一実施態様において、管理または制御タスクはメインCPUに留まるため、オフロードによってプロトコルまたはWiFiモジュールなどのインターフェイスデバイスが運用される方法が変化することはなく、下位レイヤデータ処理タスクがオフロードされる。そのようなソフトウェアパーティショニングまたはスプリッティングは、どのソフトウェアまたはどのタスクをオフロードエンジンに移すとよいか、どのソフトウェアまたはタスクをメインCPUに留めるべきかを特定することを必要とする。
一実施態様において、ほとんどのデータトラフィックを処理し、そのため汎用アプリケーションプロセッサ上で最も低効率であるソフトウェアドライバは、書き換え、修正、またはその他の方法でオフロードエンジンに移され、メインCPUにより実行されるために留まるソフトウェアから除外される。
WOAL738により提供されるオフロードAPIとの互換性のために下位レイヤドライバ814、824を書き換えまたはその他修正することができ、それがその後上位レイヤドライバ740とのインターフェイスとなる。オフロードは、WOAL738がインターフェイス定義または仕様と一貫した上位レイヤドライバへのインターフェイスを提供し、それを通じてメインCPU510に残るルーチンまたは関数(図7、図8)とオフロードされるルーチンまたは関数を相互作用させることで、完全に上位レイヤドライバ740に透過的にすることができる。例えば、WOAL738はドライバの「ネイティブ」型で上位レイヤドライバ740からの関数またはルーチン呼び出しを受け入れ、結果もネイティブ型で上位レイヤドライバに返すように適応されることもできる。ネイティブ型とオフロードされたタスクまたは機能の実行に使用されるその他の型間のトランスレーションはWOAL738により処理することができる。WiFiドライバトンネルモジュール742、744はこの種の例を表しており、パケットエンジンとメインCPU510間でネットワークエンジン530を通じてWiFiフレームをトランスポートすることができる(図7)。
ソフトウェアスプリッティングをより一般的に考慮すると、メインCPUからのタスクオフロードの目的の1つは、汎用プロセッサ上では非効率なタスクを、あまり強力ではないものの専用に構成されたプロセッサまたはその他オフロードハードウェアに移すことである場合がある。この種のアプローチは例えば、メインCPU処理のボトルネックおよび(または)高いメインCPUの使用状況に動機付けられる可能性がある。また、オフロード戦略の開発において、プロトコルを変更しないことが望ましく、変更すると処理負荷の増加および(または)処理アーキテクチャに接続するデバイスにおける変更を生じる場合があるためである。
WiFiオフロードを例としてみると、一部のタスクはデータがPCIeインターフェイスに到着する前に「フロントエンド」で実行されるように、WiFiモジュール702、704(図7、図8)を変更することが可能であるかもしれない。しかしながら、このアプローチは、WiFiデバイスの設計に大きな影響を与える。従来、WiFiデバイスはインテリジェントではなく、処理のインテリジェンスは処理システム内のほかの場所に存在する。そのインテリジェンスをWiFiデバイス自体に移すことはデバイス設計に大きな変化を必要とし、WiFiプロトコルにも重大な影響を与える。
データ処理タスクがオフロードに特定されると、それらのタスクを実行するソフトウェアをオフロードハードウェアで実行できるように書き換えまたはその他修正することができる。一部の実施態様において、そのようなタスクはソフトウェアのタスクを模擬するハードウェアにハードコードすることができる。オフロードタスクのハードコーディングは速度の面でさらにメリットを提供できる。
一実施態様において、新しいデータフローのための最初のパケットがヘッダ処理またはその他プロトコル管理処理に基づく識別のためにメインCPUに提供される。続いてメインCPUで実行されるソフトウェアがオフロードエンジンテーブルを更新するか、その他の方法でオフロードエンジンに識別情報を提供することができ、それ以降同じフロー内のその他のパケットを識別し、メインCPUの関与なく同じデータ処理タスクを実行することができる。この例においてそのようなメインCPUによる「最初のパケット」処理は一元化されたプロトコル管理処理を提供すると同時に、データ処理タスクのオフロードを可能にする。最初のパケットは、一実施態様において、オフロードのためのフローがメインCPUで特定されるまで複数のパケットを含むように延長することができる。
図7と図8に示すようなメールボックスは、相対的に低いCPUオーバーヘッドで信頼性の高いメッセージを渡すことができる。オフロードエンジンがタスクを完了すると、メインCPU向けに完了を示すメッセージをメールボックスに配置できる。一実施態様において、これはメインCPUに割り込みの発生を引き起こす。続いてメインCPUは、割り込み処理ルーチンの一部として、メッセージを読み出し、タスクの完了を知ることができる。これはメインCPUとオフロードエンジンの相互同期を維持する。
システムソフトウェアによりSerDesのI/OがPCIeインターフェイスまたはSATAインターフェイスとして動作すべきか否かを決定し、チップの動作中、そのプロトコルに構成することができる。他の高速インターフェイスは同様の方法で多重化でき、USBインターフェイス1210は図12のようなインターフェイスの一例として示されている。
マルチサービスシステム例1300において、LANサービス1314は1つ以上のイーサネット接続を介して提供できる。1316では、例えばホームセキュリティ用に、ディープパケットインスペクション(DPI)モジュールを提供してもよい。DPIモジュール1316は、ピコクラウド1302内の処理アーキテクチャ中のネットワークエンジンに接続可能な別個のハードウェアモジュールとすることができる。電話サービスは、1318で示される1つ以上のPCM接続上でサポート可能であり、インターネット1320へのWAN接続も提供可能である。
ここに提供される教示に基づいた処理アーキテクチャ1402は、さまざまなインターフェイスを通じ、この例ではDRAM1404とフラッシュメモリ1422の形式のメモリに接続される。WiFi無線1406、1408は、組み込まれたPCIeインターフェイスを通じて処理アーキテクチャ1402に接続される。1410、1412で示されるUSBポートには、外付けUSBデバイスを接続できる。また、ゲートウェイは、処理アーキテクチャ1402のSATAインターフェイスに接続されたハードドライブ1414などのディスクストレージも含むことができる。電話用ジャックなどの電話インターフェイス1416は、組み込まれた1つ以上のPCMインターフェイス、および(または)、例えばVoIP(Voice over IP)電話の場合、処理アーキテクチャ1402内の他のインターフェイスに接続することができる。ビデオ対応ゲートウェイは、処理アーキテクチャ1402内のトランスポートストリームインターフェイスに接続された1つ以上のTVチューナー1418を含むことができる。1420で示されるイーサネットポートは、1つ以上のスタンドアロンコンピュータおよび(または)ネットワーク化されたコンピュータに対するインターネット接続の提供に使用することができる。
102、104 メインCPU
118、120、122、124 PCIeまたはSATAポート
126、128 USBポート
130 LCDインターフェイス
132 PCMインターフェイス
134 I2Cバスインターフェイス
136 セキュアデジタル
138 JTAG、SPI、GPIOインターフェイス
140 4つのUARTインターフェイス
142 フラッシュインターフェイス
144 トランスポートストリームインターフェイス
146、148、150 GMACインターフェイス
152 L2キャッシュ
154 セキュアブートROM
156 キャッシュコヒーレンシポート
158 ネットワークエンジン
160 セキュリティエンジン
162 パケットエンジン
164 トラフィックマネージャ
165 DMAコントローラ
166 パケットバッファ
168 DDRメモリコントローラ
270 グローバル制御
272 相互接続
274 ネットワークエンジン制御
276 電源/CIR/RTCインターフェイス
278 SerDesコントローラ
280 汎用ペリフェラル
300 ネットワークエンジン例
302 イングレスネットワークインターフェイス
304 転送エンジン
306 キューマネージャ
308 スケジューラ
310 イグレスネットワークインターフェイス
312 メモリ
316 オフロード/アクセラレーションエンジンプロセッサ
400 サブシステム例
402 パケットインターフェイス
404 パケットエンジンプロセッサ
408 セキュリティエンジン
410 メモリブロック
412 DMAコントローラ
414 セキュリティアソシエーションデータベース
416 非パケットインターフェイス
500 アーキテクチャ例
502 WiFiモジュール
504 ネットワークインターフェイスカード(NIC)
510 メインCPU
512 Linuxネットワーキングプロトコルスタック
514 WiFiドライバ
516 下位レイヤドライバ
518 上位レイヤドライバ
520 イーサネットドライバ
522 ネットワークインターフェイスドライバ
524 CPUポート
530 ネットワークエンジン
532 転送エンジン
534 分類/ポリシング/スケジューリング/バッファ管理
536 1ポートにつき8つの優先キュー
600 アーキテクチャ例
602、612 パケットエンジンプロセッサ
604、614 パケットメモリ
606、616 DMAコントローラ
626 ネットワークエンジンカーネルモジュール
700 アーキテクチャ例
702、704 WiFiモジュール
714 下位レイヤドライバ
716、726 IPCメールボックス
718、728 WiFiドライバトンネルモジュール
734 IPCメールボックス
736 WiFiドライバ
738 WOAL
740 上位レイヤドライバ
742、744 WiFiドライバトンネルモジュール
716、726 IPCメールボックス
800 アーキテクチャ例
814、824 下位レイヤドライバ
816、826 IPCメールボックス
818、828、842、844 WiFiドライバトンネルモジュール
900 処理アーキテクチャ例
902 インターネット
904 クラウドサービスセキュリティサーバー
906 トラフィックマネージャ
908 ハッシュクラシファイア
910 URLプロセッシング
912 ローカルURLデータベース
914 ネットワークエンジンドライバ
914 ネットワークエンジンカーネルモジュール
914 PCIeコントローラドライバ
930 ネットワークエンジン
932 転送エンジン
1002 フレームコンバータ
1004 フレームアグリゲータ
1006 速度コントローラ
1008 電源コントローラ
814、824 下位レイヤドライバ
1200 インターフェイス配置例
1202 SerDes
1204 マルチプレクサ
1206、1208 PCIeインターフェイスおよびSATAインターフェイス
1210 USBインターフェイス
1300 マルチサービスシステム例
1302 ピコクラウド
1304 フェムトセル
1306 USBデバイス
1308 ディスクストレージ
1310 WiFiデバイス
1312 TVサービス
1314 LANサービス
1316 DPIモジュール
1318 PCM接続
1320 インターネット
1400 ゲートウェイ例
1402 処理アーキテクチャ
1404 レギュレータ
1404 DRAM
1406 バッテリー
1406、1408 WiFi無線
1410、1412 USBポート
1414 ハードドライブ
1416 電話インターフェイス
1418 TVチューナー
1420 イーサネットポート
1422 フラッシュメモリ
Claims (30)
- 統合処理システムであって、集積回路パッケージ内に、
前記統合処理システム外部の外部コンポーネントからデータパケットが受信されるときに使用されるパケットベースのプロトコル中の管理または制御パケットに関連付けられたプロトコル管理タスクを実行するメインプロセッサと、
前記パケットベースのプロトコルに従って受信されたデータパケットに対してデータ処理タスクを実行するオフロードサブシステムと、
前記外部コンポーネントとの通信を可能にするインターフェイスと、
前記メインプロセッサ、前記オフロードサブシステム、前記インターフェイスに接続され、前記メインプロセッサと前記オフロードサブシステムの両方が、前記インターフェイスを介して前記外部コンポーネントと通信することを可能にする相互接続と、を含むことを特徴とする、
統合処理システム。 - 前記オフロードサブシステムが、データ転送タスクを実行するためのネットワークエンジンを含むことを特徴とする、請求項1に記載の統合処理システム。
- 前記ネットワークエンジンが、受信したデータパケットが既知のデータフローに関連付けられているか否かを判断し、前記受信したデータパケットが既知のデータフローに関連付けられている場合、前記受信したデータパケットを転送し、前記受信したデータパケットが既知のデータフローに関連付けられていない場合、前記受信したデータパケットをフロー識別のため前記メインプロセッサに転送するように構成され、前記メインプロセッサが、前記受信したデータパケットが前記ネットワークエンジンにより前記メインプロセッサに転送された場合、前記受信したデータパケットが関連付けられているデータフローを識別し、前記識別されたデータフローを既知のデータフローとして前記ネットワークエンジンに設定するように構成されたことを特徴とする、請求項2に記載の統合処理システム。
- 前記ネットワークエンジンが、前記受信したデータパケットが前記メインプロセッサにより以前に前記ネットワークエンジン内に設定されたデータフローに関連付けられているか否かを判断することで、前記受信したデータパケットが既知のデータフローに関連付けられているか否かを判断するように構成されたことを特徴とする、請求項3に記載の統合処理システム。
- 前記メインプロセッサが、学習プロセスにおいてオフロードエンジンテーブルを更新し、それ以降受信されるデータパケットが前記識別されたデータフローと関連付けられることによって、前記ネットワークエンジンで処理可能に構成されていることを特徴とする、請求項3または4に記載の統合処理システム。
- データフローが、特定のタイプのデータパケット、ソースに関連付けられたデータパケット、宛先に関連付けられたデータパケットの1つ以上を含むことを特徴とする、請求項3乃至5のいずれかに記載の統合処理システム。
- 前記オフロードサブシステムが、受信したデータパケットに対してセキュリティ関連タスクを実行するためのセキュリティエンジンを含むことを特徴とする、請求項1乃至6のいずれかに記載の統合処理システム。
- 前記セキュリティエンジンが、コンフィギュラブルなハードコードされた暗号化コアを含むことを特徴とする、請求項7に記載の統合処理システム。
- 前記オフロードサブシステムがパケットエンジンを含むことを特徴とする、請求項1乃至8のいずれかに記載の統合処理システム。
- 前記パケットエンジンが、パケットエンジンソフトウェアを実行する追加のプロセッサを含むことを特徴とする、請求項9に記載の統合処理システム。
- 前記メインプロセッサが第1のプロセッサタイプであり、前記追加のプロセッサが、前記第1のプロセッサタイプと異なる第2のプロセッサタイプであることを特徴とする、請求項10に記載の統合処理システム。
- 前記メインプロセッサが、相互接続を介して前記オフロードサブシステムによるメインプロセッサメモリキャッシュへのアクセスを可能としていることを特徴とする、請求項1乃至11のいずれかに記載の統合処理システム。
- さらに、前記相互接続に接続され、前記メインプロセッサおよび前記オフロードサブシステムにより読み出し可能な、関連付けられた各メールボックスを格納するメモリと、前記メインプロセッサが前記オフロードサブシステムに関連付けられた前記メールボックスにメッセージを書き込むことを可能にし、前記オフロードサブシステムが前記メインプロセッサに関連付けられたメールボックスにメッセージを書き込むことを可能にする、前記相互接続と、を含むことを特徴とする、請求項1乃至11のいずれかに記載の統合処理システム。
- 前記外部コンポーネントが、ソフトウェアドライバを介して制御可能な外部コンポーネントを含み、前記メインプロセッサが前記ソフトウェアドライバの第1部分を実行し、前記オフロードサブシステムが前記ソフトウェアドライバの第2部分を実行することを特徴とする、請求項1に記載の統合処理システム。
- 前記インターフェイスが、コンフィギュラブルインターフェイスを含み、前記コンフィギュラブルインターフェイスが、複数の異なる物理インターフェイスのいずれかと組み合わせた動作向けに構成可能なコンフィギュラブルコンポーネントを含むことを特徴とする、請求項1乃至11のいずれかに記載の統合処理システム。
- 前記コンフィギュラブルコンポーネントが、前記メインプロセッサにより構成可能なSerDes(シリアライザ/デシリアライザ)を含むことを特徴とする、請求項15に記載の統合処理システム。
- 前記複数の異なる物理インターフェイスが、PCIe(Peripheral Component Interconnect express)インターフェイス、SATA(Serial Advanced Technology Attachment)インターフェイス、USB(ユニバーサルシリアルバス)インターフェイスを含むことを特徴とする、請求項16に記載の統合処理システム。
- 集積回路パッケージ内に、統合処理システム外部の外部コンポーネントからデータパケットが受信されるときに使用されるパケットベースのプロトコル中の管理または制御パケットに関連付けられたプロトコル管理タスクを実行するメインプロセッサを提供する工程と、
前記集積回路パッケージ内に、前記パケットベースのプロトコルに従って受信されたデータパケットに対してデータ処理タスクを実行するオフロードサブシステムを提供する工程と、
前記集積回路パッケージ内に、前記外部コンポーネントとの通信を可能にするインターフェイスを提供する工程と、
前記集積回路パッケージ内に、前記メインプロセッサ、前記オフロードサブシステム、前記インターフェイスに接続され、前記メインプロセッサと前記オフロードサブシステムの両方が、前記インターフェイスを介して前記外部コンポーネントと通信することを可能にする相互接続を提供する工程と、を含むことを特徴とする、
方法。 - 集積回路パッケージ内のメインプロセッサにより、前記集積回路パッケージ外部の外部コンポーネントからデータパケットが受信されるときに使用されるパケットベースのプロトコル中の管理または制御パケットに関連付けられたプロトコル管理タスクを実行する工程と、
前記集積回路パッケージ内のオフロードサブシステムにより、前記パケットベースのプロトコルに従って受信したデータパケットに対してデータ処理タスクを実行する工程と、
前記メインプロセッサと前記オフロードサブシステムの両方により、前記外部コンポーネントを制御する工程と、を含むことを特徴とする、
方法。 - 前記データ処理タスクが、特定のタイプのデータパケットに対して実行される1つ以上のタスクを含み、前記方法がさらに、前記オフロードサブシステムにより、受信したデータパケットが前記特定のタイプのデータパケットであるか否かを判断する工程と、前記受信したデータパケットが前記特定のタイプのデータパケットであると判断された場合、前記オフロードサブシステムにより、1つ以上のタスクを実行する工程と、前記受信したデータパケットのデータパケットタイプが前記オフロードサブシステムにより判断できない場合、前記受信したデータパケットを前記オフロードサブシステムからデータパケットタイプの識別のために前記メインプロセッサに転送する工程と、前記受信したデータパケットが前記メインプロセッサに転送された場合、前記メインプロセッサにより、前記受信したデータパケットのデータパケットタイプを識別する工程と、識別された前記データパケットタイプを前記オフロードサブシステム内に設定する工程と、を含むことを特徴とする、請求項19に記載の方法。
- さらに、前記データ処理タスクを実行するように、前記オフロードサブシステム内のコンフィギュラブルなハードコードされたハードウェアを構成する工程を含むことを特徴とする、請求項19または20に記載の方法。
- さらに、前記オフロードサブシステムによるメインプロセッサメモリキャッシュへのアクセスを可能とする工程を含むことを特徴とする、請求項19乃至21のいずれかに記載の方法。
- 前記外部コンポーネントが、ソフトウェアドライバを介して制御可能な外部コンポーネントを含み、前記メインプロセッサが実行する工程が、前記ソフトウェアドライバの第1部分の実行を含み、前記オフロードサブシステムが実行する工程が、前記ソフトウェアドライバの第2部分に関連付けられたタスクの実行を含む、ことを特徴とする、請求項19に記載の方法。
- 処理アーキテクチャであって、
集積回路パッケージ内に、
統合処理システム外部のWiFi(登録商標)デバイスからデータパケットが受信されるときに使用されるWiFi(Wireless Fidelity)プロトコル中の管理または制御パケットに関連付けられたプロトコル管理タスクを実行するメインプロセッサと、
前記WiFiプロトコルに従って受信されたデータパケットに対してデータ処理タスクを実行するオフロードサブシステムと、
前記WiFiデバイスとの通信を可能にするインターフェイスと、
前記メインプロセッサ、前記オフロードサブシステム、前記インターフェイスに接続された相互接続と、を含むことを特徴とする、
処理アーキテクチャ。 - さらに、前記相互接続に接続され、イーサネット(登録商標)パケットの転送を実行するネットワークエンジンと、それぞれがWiFiドライバトンネルモジュールを含む前記メインプロセッサおよび前記オフロードサブシステムを含み、前記ネットワークエンジンを介して、前記メインプロセッサと前記オフロードサブシステム間で交換するためにWiFiパケットがイーサネットパケットにカプセル化されることを特徴とする、請求項24に記載の処理アーキテクチャ。
- 前記メインプロセッサが、上位レイヤWiFiドライバソフトウェアを実行するように構成され、前記オフロードサブシステムが、下位レイヤWiFiドライバソフトウェアを実行するように構成され、前記下位レイヤWiFiドライバソフトウェアが、前記オフロードサブシステムに、未知のフローの最初に受信したWiFiデータパケットをフロー識別のために前記メインプロセッサに転送させ、前記メインプロセッサによるフロー識別後、そのフローからの後続のパケットを処理させることを特徴とする、請求項24に記載の処理アーキテクチャ。
- 前記インターフェイスが、PCIe(Peripheral Component Interconnect express)インターフェイスを含むことを特徴とする、請求項24乃至26のいずれかに記載の処理アーキテクチャ。
- 周辺デバイス用のドライバソフトウェア内において、周辺デバイスが動作に使用するパケットベースのプロトコル内の管理または制御パケットに関連付けられたプロトコル管理タスクを特定する工程と、
前記プロトコル管理タスクを含む前記ドライバソフトウェアの部分を、前記ドライバソフトウェアの残り部分から分離する工程と、
前記ドライバソフトウェアの残り部分の実装を提供する工程と、
前記ドライバソフトウェアの前記部分と前記ドライバソフトウェアの前記残り部分間のインターフェイスと一致する上位レイヤインターフェイスと、前記ドライバソフトウェアの前記残り部分の実装と一致する下位レイヤインターフェイスを含み、前記ドライバソフトウェアの前記残り部分の実装から、前記ドライバソフトウェアの前記部分を異なるハードウェア上で実行可能とする、ソフトウェアアダプテーションレイヤを提供する工程と、を含むことを特徴とする、
方法。 - 統合処理システムであって、
前記統合処理システム外部の外部コンポーネントからデータが受信されるときに使用されるプロトコルに関連付けられたプロトコル管理タスクを実行するメインプロセッサと、
前記メインプロセッサに接続され、前記プロトコルに従って受信され、既知のデータフローに関連付けられたデータに対してデータ処理タスクを実行するオフロードサブシステムと、を含み、
前記オフロードサブシステムが、受信したデータが既知のデータフローに関連付けられているか否かを判断し、前記受信したデータが既知のデータフローに関連付けられている場合、前記受信したデータに対してデータ処理タスクを実行し、前記受信したデータが既知のデータフローに関連付けられていない場合、フロー識別のため前記受信したデータを前記メインプロセッサに転送するように構成され、
前記メインプロセッサが、前記受信したデータが前記オフロードサブシステムにより前記メインプロセッサに転送された場合、前記受信したデータが関連付けられているデータフローを識別し、前記識別されたデータフローを既知のデータフローとして前記オフロードサブシステムに設定するように構成されたことを特徴とする、
統合処理システム。 - 統合処理システム内のメインプロセッサにより、集積回路パッケージ外部の外部コンポーネントからデータが受信されるときに使用されるプロトコルに関連付けられたプロトコル管理タスクを実行する工程と、
前記統合処理システム内の前記メインプロセッサに接続されたオフロードサブシステムにより、前記プロトコルに従って受信されたデータが、前記オフロードサブシステム内に設定された既知のデータフローに関連付けられているか否かを判断する工程と、
前記受信したデータが既知のデータフローに関連付けられている場合、前記オフロードサブシステムにより、前記受信したデータに対してデータ処理タスクを実行する工程と、
前記受信したデータが既知のデータフローに関連付けられていない場合、前記受信したデータを前記オフロードサブシステムから前記メインプロセッサにデータフロー識別のために転送する工程と、
前記受信したデータが前記メインプロセッサに転送された場合、前記メインプロセッサにより、前記受信したデータが関連付けられているデータフローを識別する工程と、
前記メインプロセッサにより、前記識別されたデータフローを既知のデータフローとして前記オフロードサブシステムに設定する工程と、
前記オフロードサブシステムにより、前記識別されたデータフローに関連付けられた後続の受信データに対してデータ処理タスクを実行する工程と、を含むことを特徴とする、
方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261745951P | 2012-12-26 | 2012-12-26 | |
US61/745,951 | 2012-12-26 | ||
PCT/US2013/076680 WO2014105650A1 (en) | 2012-12-26 | 2013-12-19 | Communication traffic processing architectures and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016510524A JP2016510524A (ja) | 2016-04-07 |
JP6188093B2 true JP6188093B2 (ja) | 2017-08-30 |
Family
ID=50976008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015550678A Active JP6188093B2 (ja) | 2012-12-26 | 2013-12-19 | 通信トラフィック処理アーキテクチャおよび方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9654406B2 (ja) |
JP (1) | JP6188093B2 (ja) |
CN (1) | CN105052081B (ja) |
WO (1) | WO2014105650A1 (ja) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013177313A2 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Processing structured and unstructured data using offload processors |
US20130318268A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
US9762446B2 (en) * | 2012-12-28 | 2017-09-12 | Futurewei Technologies Co., Ltd. | Methods for dynamic service deployment for virtual/physical multiple device integration |
EP2946296A4 (en) | 2013-01-17 | 2016-11-16 | Xockets Ip Llc | DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY |
JP6036442B2 (ja) * | 2013-03-21 | 2016-11-30 | 富士通株式会社 | 暗号通信装置、暗号通信方法、および暗号通信プログラム |
US10069683B2 (en) * | 2013-09-27 | 2018-09-04 | Nxp Usa, Inc. | Apparatus for optimising a configuration of a communications network device |
US9813343B2 (en) * | 2013-12-03 | 2017-11-07 | Akamai Technologies, Inc. | Virtual private network (VPN)-as-a-service with load-balanced tunnel endpoints |
CN103825821B (zh) * | 2014-02-11 | 2017-06-13 | 华为技术有限公司 | 一种报文转发方法以及一种网络接入设备 |
US20160112502A1 (en) * | 2014-10-20 | 2016-04-21 | Cisco Technology, Inc. | Distributed computing based on deep packet inspection by network devices along network path to computing device |
US9720827B2 (en) * | 2014-11-14 | 2017-08-01 | Intel Corporation | Providing multiple memory modes for a processor including internal memory |
US9779053B2 (en) * | 2014-12-23 | 2017-10-03 | Intel Corporation | Physical interface for a serial interconnect |
WO2017114091A1 (zh) * | 2015-12-30 | 2017-07-06 | 华为技术有限公司 | 一种nas数据访问的方法、***及相关设备 |
US11108592B2 (en) * | 2016-01-21 | 2021-08-31 | Cox Communications, Inc. | Systems and methods for implementing a layer two proxy for wireless network data |
JP2018033017A (ja) * | 2016-08-25 | 2018-03-01 | 日本電信電話株式会社 | ネットワーク処理装置およびパケット処理方法 |
EP3328016A1 (de) | 2016-11-29 | 2018-05-30 | Siemens Aktiengesellschaft | Verfahren zum verbinden von geräten mit der sogenannten cloud, computerprogramm mit einer implementation des verfahrens und verarbeitungseinheit zur ausführung des verfahrens |
WO2018174946A1 (en) * | 2017-03-23 | 2018-09-27 | Google Llc | Gigabit router |
US10686729B2 (en) | 2017-03-29 | 2020-06-16 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN106936718B (zh) * | 2017-03-30 | 2019-12-13 | 网宿科技股份有限公司 | PPPoE报文传输方法和PPPoE服务器 |
US11303472B2 (en) | 2017-07-10 | 2022-04-12 | Fungible, Inc. | Data processing unit for compute nodes and storage nodes |
US10725825B2 (en) * | 2017-07-10 | 2020-07-28 | Fungible, Inc. | Data processing unit for stream processing |
US10540288B2 (en) | 2018-02-02 | 2020-01-21 | Fungible, Inc. | Efficient work unit processing in a multicore system |
US10446200B2 (en) * | 2018-03-19 | 2019-10-15 | Micron Technology, Inc. | Memory device with configurable input/output interface |
US11464066B2 (en) * | 2019-04-05 | 2022-10-04 | Qualcomm Incorporated | Establishing radio bearers on millimeter wave frequencies for device-to-device communications |
US11695665B2 (en) | 2019-07-09 | 2023-07-04 | Vmware, Inc. | Cross-cloud connectivity checks |
CN110636052B (zh) * | 2019-09-04 | 2020-09-01 | 广西电网有限责任公司防城港供电局 | 用电数据传输*** |
EP3996302B1 (en) | 2019-09-10 | 2024-03-20 | Huawei Technologies Co., Ltd. | Message processing method and apparatus, and chip |
US11050647B1 (en) | 2019-12-16 | 2021-06-29 | Vmware, Inc. | Simulation-based cross-cloud connectivity checks |
US11394650B2 (en) * | 2020-04-14 | 2022-07-19 | Charter Communications Operating, Llc | Modificationless packet prioritization for frame generation |
US11283722B2 (en) | 2020-04-14 | 2022-03-22 | Charter Communications Operating, Llc | Packet prioritization for frame generation |
US11246055B1 (en) * | 2020-09-17 | 2022-02-08 | Hewlett Packard Enterprise Development Lp | Consistent quality of service policy in a software defined enterprise network |
US11863500B2 (en) * | 2021-02-25 | 2024-01-02 | Sony Semiconductor Solutions Corporation | Communication apparatus, communications system, and communication method |
JP2022166934A (ja) | 2021-04-22 | 2022-11-04 | 富士通株式会社 | 情報処理装置、過負荷制御プログラムおよび過負荷制御方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3490473B2 (ja) * | 1993-02-17 | 2004-01-26 | 松下電器産業株式会社 | プロセッサ間通信システム |
US6754749B1 (en) * | 2001-01-22 | 2004-06-22 | Sharewave, Inc. | Multiple use integrated circuit for embedded systems |
US6976205B1 (en) * | 2001-09-21 | 2005-12-13 | Syrus Ziai | Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources |
KR100474706B1 (ko) | 2002-09-11 | 2005-03-10 | 삼성전자주식회사 | 통신시스템에서 티씨피/아이피를 이용한 프로세서 간 통신장치 |
US6970964B2 (en) * | 2003-03-28 | 2005-11-29 | Texas Instruments Incorporated | Using PCMCIA/PCI drivers to control USB ports |
US20050060538A1 (en) | 2003-09-15 | 2005-03-17 | Intel Corporation | Method, system, and program for processing of fragmented datagrams |
US7957379B2 (en) * | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US8009566B2 (en) | 2006-06-26 | 2011-08-30 | Palo Alto Networks, Inc. | Packet classification in a network security device |
US20090077274A1 (en) * | 2007-09-19 | 2009-03-19 | Advanced Micro Devices | Multi-Priority Communication in a Differential Serial Communication Link |
US8054744B1 (en) * | 2007-10-25 | 2011-11-08 | Marvell International Ltd. | Methods and apparatus for flow classification and flow measurement |
US8458730B2 (en) * | 2008-02-05 | 2013-06-04 | International Business Machines Corporation | Multi-level driver configuration |
US8072912B2 (en) | 2008-06-25 | 2011-12-06 | Intel Corporation | Techniques for management of shared resources in wireless multi-communication devices |
US20130003549A1 (en) * | 2011-06-30 | 2013-01-03 | Broadcom Corporation | Resilient Hashing for Load Balancing of Traffic Flows |
US8964554B2 (en) * | 2012-06-07 | 2015-02-24 | Broadcom Corporation | Tunnel acceleration for wireless access points |
US20140156867A1 (en) * | 2012-12-03 | 2014-06-05 | Broadcom Corporation | Offload processing interface |
-
2013
- 2013-12-19 CN CN201380073817.5A patent/CN105052081B/zh active Active
- 2013-12-19 WO PCT/US2013/076680 patent/WO2014105650A1/en active Application Filing
- 2013-12-19 US US14/135,111 patent/US9654406B2/en active Active
- 2013-12-19 JP JP2015550678A patent/JP6188093B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016510524A (ja) | 2016-04-07 |
US9654406B2 (en) | 2017-05-16 |
CN105052081A (zh) | 2015-11-11 |
WO2014105650A1 (en) | 2014-07-03 |
CN105052081B (zh) | 2018-11-13 |
US20140181319A1 (en) | 2014-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6188093B2 (ja) | 通信トラフィック処理アーキテクチャおよび方法 | |
US10057387B2 (en) | Communication traffic processing architectures and methods | |
US11677851B2 (en) | Accelerated network packet processing | |
US11178259B2 (en) | Methods and apparatus for regulating networking traffic in bursty system conditions | |
US20210117360A1 (en) | Network and edge acceleration tile (next) architecture | |
US11178262B2 (en) | Fabric control protocol for data center networks with packet spraying over multiple alternate data paths | |
US10326830B1 (en) | Multipath tunneling to a service offered at several datacenters | |
US10986041B2 (en) | Method and apparatus for virtual network functions and packet forwarding | |
WO2015058698A1 (en) | Data forwarding | |
CN113709047B (zh) | 一种汽车域控制器数据转发***及方法 | |
US20150085868A1 (en) | Semiconductor with Virtualized Computation and Switch Resources | |
KR20130099185A (ko) | 단일 모뎀 보드 상의 개선된 멀티-셀 지원을 위한 방법 및 시스템 | |
US9772968B2 (en) | Network interface sharing | |
US11991246B2 (en) | Cloud scale multi-tenancy for RDMA over converged ethernet (RoCE) | |
US20140282551A1 (en) | Network virtualization via i/o interface | |
US12010173B2 (en) | Class-based queueing for scalable multi-tenant RDMA traffic | |
US20240089219A1 (en) | Packet buffering technologies | |
US20220182324A1 (en) | Methods and systems for fairness across rdma requesters using a shared receive queue | |
EP4272408A1 (en) | Cloud scale multi-tenancy for rdma over converged ethernet (roce) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160721 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20160729 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20160729 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20161115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170213 |
|
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: 20170711 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170727 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6188093 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |