JP6537823B2 - ソフトウェア・デファインド・ネットワーク処理エンジンにおける並行かつ条件付きのデータ操作の方法および装置 - Google Patents

ソフトウェア・デファインド・ネットワーク処理エンジンにおける並行かつ条件付きのデータ操作の方法および装置 Download PDF

Info

Publication number
JP6537823B2
JP6537823B2 JP2014267000A JP2014267000A JP6537823B2 JP 6537823 B2 JP6537823 B2 JP 6537823B2 JP 2014267000 A JP2014267000 A JP 2014267000A JP 2014267000 A JP2014267000 A JP 2014267000A JP 6537823 B2 JP6537823 B2 JP 6537823B2
Authority
JP
Japan
Prior art keywords
bits
processing engine
instruction
mux
instructions
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
JP2014267000A
Other languages
English (en)
Other versions
JP2015165649A (ja
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.)
Cavium LLC
Original Assignee
Cavium Networks LLC
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 Cavium Networks LLC filed Critical Cavium Networks LLC
Publication of JP2015165649A publication Critical patent/JP2015165649A/ja
Application granted granted Critical
Publication of JP6537823B2 publication Critical patent/JP6537823B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1013Network architectures, gateways, control or user entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Devices For Executing Special Programs (AREA)
  • Logic Circuits (AREA)

Description

本発明は、ソフトウェア・デファインド・ネットワーク処理エンジンにおける多数のデータフローの操作に関し、より詳細には、ソフトウェア・デファインド・ネットワーク処理エンジンにおける並行かつ条件付きのデータ操作の方法および装置に関する。
ソフトウェア・デファインド・ネットワーキング(SDN)技術は、ネットワークを新たな規格、プロトコル、およびサービスに迅速かつ容易に適応させることを可能にする。SDNは、ネットワーク抽象を2つの分離したプレーン、すなわち、コントロールプレーンとデータ転送プレーンとに分離する。この分離によって、ネットワークの操作者は、高価な既存のデータ転送プレーンを再利用しながらコントロールプレーンを構成変更/プログラムすることで、迅速にネットワークの機能を変更し、かつ/または、ネットワークに新しい機能を付加することができる。SDNは、新しいネットワークの機能とサービスを導入するコストおよび時間を低減することができる。プレーンを分離したネットワーキングインフラストラクチャは、ネットワークの操作者の管理タスクを簡略化することもできる。
各SDN装置は、多数の高スループットのデータフローを並行(パラレル)に処理することを要求されることが多い。このようなSDN装置には、データの操作を担う1つ以上の処理エンジンが存在する。これら処理エンジンのデータ操作は、データのコンテンツ自体と、SDN装置のために構成されたネットワーク機能とに依存する。これら処理エンジンが処理するデータは、何百バイトにまでなり得る大きいサイズになる可能性がある。
従来技術のASICに基づいた設計は、SDN処理エンジンに期待される別のネットワーク機能を実行することに対して、再プログラムおよび/または再構成に十分な柔軟性を提供しない。また、これらのエンジンを実現するために最新の64ビット汎用CPUを用いることで、周期毎に何百ものデータのバイトを処理するように要求されるSDN装置のネットワーク帯域幅および遅延の要件を満たすことはできない。FPGAを用いる他の従来技術のインプリメンテーションも、高遅延でFPGAチップを低い周波数で走らせる内部相互接続配線における論理セル容量の制限および高度の複雑さのために、高スループットで複雑なネットワークプロトコルを実行するのに適切でない。
並行かつ条件付きのデータ操作のためのソフトウェア・デファインド・ネットワーキング(SDN)処理エンジンを提案する。ユーザは、ユーザがSDN処理エンジンにサポートさせたい機能およびプロトコルに応じて、データ処理のための条件およびルールをプログラムできる。SDN処理エンジンは、最大限のスループットで多数の入力および出力を並行に処理できる。SDN処理エンジンは、2つのパス、すなわち、コントロールパスおよびデータパスを含む。コントロールパスは、制御ビット抽出器と、ワード比較コーンと、多段MUX/LUT論理コーンと、命令テーブルとを含む。コントロールパスは、構成されたネットワーク機能のある特定の条件を入力が満たすか否かを検査する。検査結果に基づいて、コントロールパスは、入力を修正し、かつ/または、新しい出力を生成する命令を生成する。データパスは、遅延整合キューおよび命令実行ブロックを含む。データパスは、コントロールパスが生成する命令を実行する。多数のデータフローを同時に操作するために、全ての命令が並行に実行される。提案される処理エンジンは、プログラム可能であるため、ハードウェアのみによるASIC設計に比べて柔軟性が極めて高く、そのためSDN装置で採用できる。
一構成において、ソフトウェア・デファインド・ネットワーク(SDN)処理エンジンが提供される。前記SDN処理エンジンは、プログラム可能な命令の条件付き生成用のコントロールパスと、前記コントロールパスによって生成される前記命令の実行用のデータパスとを備える。前記処理エンジンは、典型的には、並行に、N個の入力を受信してM個の出力を生成する。いくつかの実施形態では、前記M個の出力の各コンテンツは、修正された入力コンテンツまたは新たに生成されたコンテンツである。
いくつかの実施形態では、前記コントロールパスは、前記N個の入力から制御ビットを抽出する制御ビット抽出器と、前記N個の入力のワードを比較するワード比較コーンと、前記制御ビットおよび前記ワード比較コーンの結果ビットに、複合された、式および条件(複数の式および複数の条件の複合)を実行する多段MUX/LUT論理コーンと、データ操作のための命令を含む複数の命令テーブルとを備える。前記制御ビット抽出器、前記ワード比較コーン、前記多段MUX/LUT論理コーンおよび/または前記複数の命令テーブルは、ユーザが前記処理エンジンに実行させたいネットワーク機能およびプロトコルに基づいて、再構成およびプログラム可能である。
いくつかの実施形態では、前記制御ビット抽出器は、予め定められた入力フォーマットに基づいて前記N個の入力から前記制御ビットを抽出する。
いくつかの実施形態では、前記ワード比較コーンはK個の構成変更可能なMUX/CMP論理セルを含む。前記MUX/CMP論理セルは、それぞれ、前記N個の入力からのWバイトの2つのワードを比較できる。前記MUX/CMP論理セルは、それぞれ、前記WバイトのワードそれぞれにおけるWバイトのうちの特定のビットのみを比較でき、かつ/または、前記入力のうちの1つからのWバイトのワードを、一定値と比較できるものであってもよい。いくつかの実施形態では、前記MUX/CMP論理セルは、それぞれ、等しい(==)、より大きい(>)、およびより小さい(<)を含む少なくとも3つの演算をサポートする。
いくつかの実施形態では、前記MUX/LUT論理コーンはS個のステージを含む。前記S個のステージの最初のステージは入力ビットを有し、この入力ビットは、前記処理エンジンへの前記N個の入力の前記制御ビットと、前記ワード比較コーンの出力ビットとを含む。ステージiの出力ビットは全て、ステージi+1への入力ビットである。前記MUX/LUT論理コーンの最後のステージの出力ビットは、前記複数の命令テーブルを読み取るためのインデックスを形成する。
いくつかの実施形態では、前記ステージiは、P個の構成変更可能なMUX/LUTセルを含む。前記MUX/LUTセルは、それぞれ、そのMUX/LUTセルへの入力ビットからL個の任意のビットを選択するL個のマルチプレクサを備える。前記L個の選択されたビットは、2ビットのルックアップテーブルcfg_LUTに対するポインタとして構成される。前記cfg_LUTの出力は1ビットである。いくつかの実施形態では、前記cfg_LUTはフロップから構成される。
いくつかの実施形態では、合成ツールを使用して、複合された、論理式および条件を前記MUX/LUT論理コーンにマッピングする。合成ツールの一例は、カリフォルニア大学バークレー校のABCツールである。
いくつかの実施形態では、前記複数の命令テーブルは、T個のプログラム可能な命令テーブルを含む。前記MUX/LUT論理コーンの出力は、前記T個のプログラム可能な命令テーブルの読み出しアドレスであるインデックスを構成する。前記M個の出力それぞれが前記T個のプログラム可能な命令テーブルの少なくとも1つと関連づけられるように、前記Tは、前記処理エンジンの前記M個の出力と少なくとも等しい。いくつかの実施形態では、前記T個のプログラム可能な命令テーブルのテーブルiは、Aビットのアドレスを有し、前記テーブルiは、最大で2Aiのエントリを有する。テーブルiの各エントリは、Q個の命令を含む。いくつかの実施形態では、前記T個のプログラム可能な命令テーブルそれぞれが、SRAMまたはフロップのアレイから構成される。
いくつかの実施形態では、前記処理エンジンは、コピー命令およびALU命令を含む少なくとも2種類の命令をサポートする。前記コピー命令それぞれは、1つの入力からの最大Cバイトを1つの出力にコピーする。あるいは、前記コピー命令それぞれは、一定値を1つの出力にコピーする。前記ALU命令は、それぞれ、入力からの各Wバイトの2つのワードのALU演算の結果を、1つの出力にコピーする。前記ALU演算への入力が一定値であってもよい。前記ALU演算は、加算(+)、減算(−)、ビット単位のAND(&)、ビット単位のOR(|)、ビット単位のXOR(^)、ビット単位の左シフト(<<)、またはビット単位の右シフト(>>)であってもよい。いくつかの実施形態では、前記コピー命令またはALU命令それぞれは、その命令のビットマスクフィールドを用いることでビットまたはバイト操作をサポートする。
いくつかの実施形態では、前記データパスは、データが適切な時間に処理されるように、前記データパスの遅延を前記コントロールパスの遅延に整合させる遅延整合キューと、特定の入力を修正し、かつ/または、新しい出力を生成するために、前記コントロールパスが生成する命令の全てを実行する命令実行ブロックとを備える。
前記遅延整合キューは、前記処理エンジンがバックツーバックのデータ処理で最大限のスループットを達成するように、前記コントロールパスの遅延に等しい深さを有する、FIFOまたはシフトレジスタであってもよい。
いくつかの実施形態では、前記命令実行ブロックは、並行に、前記コントロールパスが生成する命令の全てを実行するハードウェアモジュールを備える。前記ハードウェアモジュールそれぞれは、前記命令のうちの1つを実行する
いくつかの実施形態では、全ての命令が実行される前において出力の最初のコンテンツが特定の入力のコンテンツである場合、前記処理エンジンの出力は前記特定の入力を修正したものである。あるいは、全ての命令が実行される前において出力の最初のコンテンツが全てゼロである場合、前記処理エンジンの出力は新たに生成される
別の構成において、ソフトウェア・デファインド・ネットワーク(SDN)処理エンジンにおける並行かつ条件付きのデータ操作方法が提供される。いくつかの実施形態では、前記処理エンジンはプログラム可能である。
前記方法は、N個の入力を受信することと、前記N個の入力を、コントロールパスおよびデータパスを通して前記処理エンジンで処理させる(前記処理エンジン中でフローさせる)こととを含む。前記方法はまた、前記N個の入力から制御ビットを抽出することと、前記N個の入力のワードを比較することと、前記N個の入力を遅延キューを介して送信することとを同時に行うことを含む。前記方法はまた、前記制御ビットおよび前記比較からの結果ビットに、複合された、式および条件を実行することで、インデックスを返すことを含む。前記方法はまた、前記インデックスに基づいて、前記N個の入力をどのように修正するかおよびM個の出力をどのように生成するかを導くように構成された命令を検索することを含む。前記方法はまた、並行に前記N個の入力についての前記命令を実行することで、前記M個の出力を生成することを含む。
いくつかの実施形態では、前記M個の出力それぞれのコンテンツが、新たに生成されたコンテンツおよび/または前記N個の入力のうちの1つの修正されたコンテンツである。
いくつかの実施形態では、前記抽出、前記比較、前記複合された、式および条件、ならびに命令テーブルは、前記処理エンジンの前記コントロールパスにおいて実現され、前記遅延キューおよび前記命令の実行は、前記処理エンジンの前記データパスにおいて実施される。
いくつかの実施形態では、前記処理エンジンの前記N個の入力および前記M個の出力それぞれのデータフォーマットは、データサイズを特定するための「長さ」フィールドと、ペイロードの最初のバイトの位置を特定する「オフセット」フィールドと、データの種類を特定する「制御」フィールドと、前記ペイロードを含む「ボディ(本体)」フィールドとを含む。
本発明の一実施形態によるSDNシステムの並行かつ条件付きのデータ操作のためのSDN処理エンジンのブロック図である。 本発明の実施形態による図1のSDN処理エンジンの各データ入力および出力のフォーマットである。 本発明の一実施形態によるワード比較コーンのブロック図である。 本発明の一実施形態によるMUX/CMP論理セルの概要を示す図である。 本発明の一実施形態によるMUX/LUT論理コーンのブロック図である。 本発明の一実施形態によるMUX/LUTセルの概要を示す図である。 本発明の一実施形態による命令テーブルのブロック図である。 本発明の一実施形態によるコピー命令のフォーマットである。 本発明の一実施形態による図8Aのコピー命令を実施する概要を示す図である。 本発明の一実施形態によるALU命令のフォーマットである。 本発明の一実施形態による図9AのALU命令を実施する概要を示す図である。
上記は、以下の本発明の例示的な実施形態のさらに具体的な説明から明らかになるであろう。添付図面において、異なる図全体にわたり、同様の部分は同様の参照符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
以下の記載において、多くの詳細が説明を目的として述べられる。しかし、当業者ならば、本発明はこれらの特定の詳細を用いることなく実行可能であることを理解するであろう。このため、本発明は、図示された実施形態に限定されることを意図するものではなく、本明細書で説明される原理および特徴に合致する最大限の範囲に従う。
並行かつ条件付きのデータ操作のためのソフトウェア・デファインド・ネットワーキング(SDN)処理エンジンを提案する。SDN処理エンジンは装置に含まれる。ユーザは、ユーザがSDN処理エンジンにサポートさせたい機能およびプロトコルに応じて、データ処理のための条件およびルールをプログラムできる。SDN処理エンジンは、最大限のスループットで多数の入力および出力を並行に処理できる。SDN処理エンジンは、2つのパス、すなわち、コントロールパスおよびデータパスを含む。コントロールパスは、制御ビット抽出器と、ワード比較コーンと、多段MUX/LUT論理コーンと、命令テーブルとを含む。コントロールパスは、構成されたネットワーク機能のある特定の条件を入力が満たすか否かを検査する。検査結果に基づいて、コントロールパスは、入力を修正し、かつ/または、新しい出力を生成する命令を生成する。データパスは、遅延整合キューおよび命令実行ブロックを含む。データパスは、コントロールパスが生成する命令を実行する。多数のデータフローを同時に操作するために、全ての命令が並行に実行される。提案される処理エンジンは、プログラム可能であるので、ハードウェアのみによるASIC設計に比べて適用性がかなり高く、そのためSDN装置で採用できる。
図1は、本発明の実施形態によるSDNシステムの並行かつ条件付きのデータ操作のためのSDN処理エンジン100のブロック図を示す。データは、典型的には、2つのパス、すなわち、コントロールパス105とデータパス110とを通って、SDN処理エンジン100をフローする(流れる)。
コントロールパス105は、制御ビット抽出器(CBE)115と、ワード比較コーン(WCC)120と、MUX/LUT論理コーン(MLLC)125と、命令テーブル130とを含む。コントロールパス105は、コーンにおいてプログラムされる条件に応じて命令を生成することを担っている。「コーン」という用語は、本明細書では、種々の複合された、論理式および条件チェックを行うように再構成可能なステージにおける一群の論理要素のことを指す。ある構成では、「コーン」という用語は、論理「クラウド」と呼ばれてもよい。コントロールパス105内の全てのブロック115〜130は、プログラム可能であることが好ましい。
データパス110は、遅延整合キュー135および命令実行ブロック140を含む。データパス110は、入力データを修正し、かつ/または、新しい出力データを生成するコントロールパス105が生成する命令を実行することを担う。
SDN処理エンジン100は、N個の入力を受信し、M個の出力を生成する。SDN処理エンジン100のM個の出力それぞれは、新しく生成されたデータでもよく、SDN処理エンジン100へのN個の入力のうちの1つを修正したものでもよい。これらのM個の出力のコンテンツは、ユーザがどのようにSDN処理エンジン100のコントロールパス105のブロック115〜130を構成しプログラムするかに全面的に依存する。
N個の入力およびM個の出力は、それぞれ異なるサイズであってもよいため、N個の入力およびM個の出力がSDN処理エンジン100によって適切に処理され得るように、そのサイズはデータフォーマットで特定される。図2は、本発明の実施形態によるSDN処理エンジン100の各入力および出力データ200のデータフォーマットを示す。各入力および出力データ200は、典型的には4つのフィールド、すなわち、「長さ」フィールド205と、「オフセット」フィールド210と、「制御」フィールド215と、「ボディ」フィールド220とを含む。
「長さ」フィールド205は、各データの長さまたはサイズを特定する。サイズは典型的にはバイト数である。「オフセット」フィールド210は、データ中の「ボディ」フィールド220の最初のバイトの位置を特定する。換言すると、「オフセット」フィールド210は、「制御」フィールド215のサイズを特定する。「制御」フィールド215は、データに含まれる主な機能を特定する最も重要なビットを含む。例えば、「制御」フィールド215は、イーサネット(登録商標)フレーム、IPパケット、TCPアプリケーションデータ、またはルックアップデータ結果などのデータの種類を特定するか、またはデータの優先度を特定する。「ボディ」フィールド220はデータの本体すなわちペイロードを含む。
図1に戻って、SDN処理エンジン100は典型的には、処理の前にN個の入力全てが利用可能になり、SDN処理エンジン100がN個の入力間の相互情報を全て得るまで待機する。N個の入力全てが、SDN処理エンジン100による処理の前に結合されて、大きなひとかたまりのデータになる。
入力の「制御」フィールドは典型的には入力の最も重要なビットを含む。したがって、これらの制御ビットはCBE115によって抽出される。抽出された制御ビットは全てコントロールパス105のMLLC125でさらに処理されて、SDN処理エンジン100は、入力をどのよう扱い、出力をどのように生成するかを決定できることになる。
一方、N個の入力は全てWCC120にも送信される。SDN処理エンジン100は、WCC120において、入力内の特定のワードが入力内の他の特定のワードと等しい(一致する)か、それよりも大きいか、またはそれよりも小さいかをチェックする。ワードのチェック結果は、これらの入力のさらなる処理のための判定を行うのにSDN処理エンジン100にとって有用である、入力の関係および特性を示す。
図3は、本発明の実施形態によるワード比較コーン(WCC)300のブロック図を示す。いくつかの実施形態では、図1のWCC120は、WCC300と同様に構成される。WCC300は、K個の再構成可能な多重化/比較(MUX/CMP)論理セル305を含み、N個の入力の全てがMUX/CMP論理セル305に送信される。MUX/CMP論理セル305は、それぞれ、ワードの比較を行う。WCC300は、SDN処理エンジン100が、N個の入力についてK個のワード比較を並行に行えるようにし、K個のワード比較結果ビットを返す。
図4は、本発明の実施形態によるMUX/CMP論理セル400の概要を示す。いくつかの実施形態では、図3のMUX/CMP論理セル305は、MUX/CMP論理セル400と同様に構成される。MUX/CMP論理セル400は、N個の入力間で2つの特定のWバイトのワードの比較を行う。MUX/CMP論理セル400の構成は、ソフトウェアによるレジスタを介することが好ましい。いくつかの実施形態では、MUX/CMP論理セル400の設計で、複数のレジスタおよび複数のマルチプレクサを用いる。「cfg_muxA_SrcID」レジスタは、N個の入力のうちのどの入力がMuxA405によって選択されるかを示す。「cfg_muxA_ByteOffset」レジスタは、バイトが取得されることになる選択された入力の開始バイトを示す。この開始バイトの位置から、W個の連続したバイトが、MuxA405によって選択された入力から取得される。同様に、「cfg_muxB_SrcID」レジスタおよび「cfg_muxB_ByteOffset」レジスタを用いて、Wバイトが、MuxB410によって選択された入力から取得される。Wは、典型的には2バイト(16ビット)または4バイト(32ビット)である。しかし、Wは、他の値であってもよい。いくつかの実施形態では、Wは、1つの入力から取得される最大数のバイトを表し、エンジンの設計者によって選ばれる。
典型的には、MuxA405およびMuxB410の2つの選択されたWバイトのワードが互いに比較されるが、MuxA405およびMuxB410のこれら2つの選択されたワード内の特定のビットのみの比較が必要な場合がある。ユーザが2つの選択されたワード内の特定のビットのみを比較したい場合は、2つのビットマスクレジスタ、すなわち、「cfg_muxA_BitMask」と「cfg_muxB_BitMask」が、選択されたワードとともに使用されてもよい。これらの2つのビットマスクレジスタは、Wバイトよりも小さい2つのワードを比較する場合にも用いることができる。例えば、Wが4の場合、ビットマスクレジスタは、N個の入力からの、2つの4バイトのワード、2つの3バイトのワード、2つの2バイトのワード、または2つの1バイトのワードを比較するよう設定され得る。
しかし、N個の入力からの選択されたワードを、一定値と比較することが必要な場合がある。ユーザが2つの選択されたワードのうちの1つを一定値と比較することを望む場合は、2つのレジスタ、すなわち、「cfg_muxA_IsConst」および「cfg_muxB_IsConst」をビットマスクレジスタとともに使用し得る。特に、「cfg_muxA_IsConst」が1である場合、「cfg_muxA_BitMask」レジスタは、MuxA405の一定値となる。同様に、「cfg_muxB_IsConst」が1である場合、「cfg_muxB_BitMask」レジスタはMuxB410の一定値となる。ビットマスクレジスタを一定値のために再利用することで、有利なことに、MUX/CMP論理セルのハードウェアのコストが削減される。
MUX/CMP論理セル400の望ましい比較動作は、「cfg_CompareCode」レジスタを用いることで選択される。いくつかの実施形態では、3つの比較動作、すなわち、等しい(==)、より大きい(>)、およびより小さい(<)、がサポートされる。MUX/CMP論理セル400は、比較結果が真か偽かを示す1ビットの出力を返す。
より多いまたはより少ない比較動作をサポートできるが、異なる動作を、2つのMUX/CMP論理セルを用いるだけで行うことができる。例えば、以上(>=)の動作が必要である場合、第1のMUX/CMP論理セルを用いて、「より大きい」の動作を行うことができ、第2のMUX/CMP論理セルを用いて「等しい」の動作を行うことができる。これら2つのMUX/CMP論理セルからの結果である2ビットは、比較が真か偽かを示す(すなわち、11は真を示し、10と01は共に偽を示す)。
図3に戻って、WCC300内のK個のMUX/CMP論理セル305は、K個のワード比較結果ビットを返る。これら結果ビットは、それぞれ、K個のMUX/CMP論理セル305のうちの1つからのものである。1つのワード比較コーン内にあるMUX/CMP論理セルが多いほど、より多くのワード比較動作が並行に行われ得るが、その分ハードウェアを要することを理解されたい。Kは、典型的には8から32である。しかし、KがSDN処理エンジンの入力数(例えば、N)未満でない限りにおいて、Kは他の値であってもよい。
図1に戻って、CBE115からの抽出された制御ビットおよびWCC120からのK個の結果ビットは全て結合されて、MLLC125に送信される。MLLC125は、好ましくは構成変更可能である。MLLC125は、制御ビットおよびK個の結果ビットの中の特定のビットが、ユーザがSDN処理エンジン100のために構成したネットワーク機能のある条件を満たすか否かをチェックする。チェック結果に基づいて、MLLC125は、入力を修正し、かつ/または、新しい出力を生成する命令を生成する、命令テーブル130を読み取るためのインデックスを駆動する。
図5は、本発明の実施形態によるMUX/LUT論理コーン(MLLC)500のブロック図を示す。いくつかの実施形態では、図1のMLLC125は、MLLC500と同様に構成される。MLLC500はS個のステージを含み、ステージiはP個の多重化/ルックアップ(MUX/LUT)セル505を含む。ステージ0に対する入力ビットはCBE115のような制御ビット抽出器からの制御ビットとWCC120のようなワード比較コーン120からのK個の結果ビットの全てである。ステージ0の出力ビットは、ステージ1の入力ビットである。一般に、ステージiのMUX/LUTセル全ての出力ビットは、ステージi+1のMUX/LUTセルの入力ビットである。最後のステージの出力ビットは、図1の命令テーブル130を読み取るためのアドレスであるインデックスを形成する。
図6は、本発明の実施形態によるMUX/LUTセル600の概要を示す。いくつかの実施形態では、図5のMUX/LUTセル505は、MUX/LUTセル600と同様に構成される。MUX/LUTセル600は、入力ビットからのL個の特定ビットの選択を可能にするL個のマルチプレクサ(MUX)605を含む。これらのL個のMUX605は、好ましくは、L個のレジスタを介して再構成される。これらL個のMUX605からのL個の選択されたビットは、再構成可能なルックアップテーブル(cfg_LUT)610を指し示すインデックスを形成する。cfg_LUT610は、Lビットのインデックスに対応する2個のビットを有する。MUX/LUTセル600への入力それぞれに対して、1つの結果ビットのみが、cfg_LUT610によって返される。いくつかの実施形態では、cfg_LUT610は典型的にはエントリ数が少なく各エントリは1ビットのみであるので、cfg_LUT610はフロップから構成される。
MUX/LUTセル600は、入力ビットから選択されたL個のビットの任意のブール式を実行するように構成される。例えば、(1)Lは3であり、(2)3つの選択されたビットはa、b、およびcであり、(3)ブール式X=(a&b|c)がチェックされる、と仮定する。aおよびbの両方が1であるまたはcが1である場合、Xは1である。a、bおよびcがインデックスIの3つのビットである場合、Iが110(2)=6、111(2)=7、001(2)=1、011(2)=3、または101(2)=5であれば、Xは1である。そのため、8ビットのcfg_LUTは11101010(2)としてプログラムされる。
図5に戻って、MLLC500の各ステージは、複数のMUX/LUTセル505を含むので、各ステージは、入力ビットの数個のブール式をチェックすることを並行に行うことができる。そして、MLLC500は複数のステージを含むので、MLLC500は復号の式を並行にチェックできる。MLLC500の各ステージは、同じまたは異なる数のMUX/LUTセル505を含んでもよい。
1つのMUX/LUTセル内のMUXが多いほど、1つのステージ内のMUX/LUTセルが多いほど、および/またはMLLC内のステージが多いほど、SDN処理エンジンのチェック能力がより強力になるが、その分ハードウェアを要することを理解されたい。1つのMUX/LUTセルは、典型的には、4つから6つのMUXを有し、1つのステージは、典型的には32から128のMUX/LUTセルを有し、MLLC500は、典型的には、3つから6つのステージを有する。しかし、1つのMUX/LUTセル内のMUXは、より多くてもまたはより少なくてもよい。1つのステージ内のMUX/LUTセルも、より多くてもまたはより少なくてもよい。同様に、MLLC内のステージは、より多くてもまたはより少なくてもよい。
特定の式および条件を実行するように図1のMLLC125をプログラムするために、合成ツールを用いてこれらの式を論理コーン構造にマッピングしてもよい。例えば、カリフォルニア大学バークレー校で科学者たちによって開発されたABCと名付けられたオープンソースを用いて、(イーサネット(登録商標)、VLAN、ルーティング、ブリッジング、iVIF、ACLルックアップなどの)数個のネットワークプロファイルおよびプロトコルを表す式および条件をMLLC125にマッピングできる。
MLLC125は、命令テーブル130を読み取るための命令テーブルインデックスを返す。これらのテーブルインデックスは、入力群毎に論理コーンでプログラムされる条件と式の結果である。異なる入力に対して、MLLC125が出力するテーブルインデックスは異なり得る。その結果、異なる命令を命令テーブル130が返すことになるであろう。これらの命令は、SDN処理エンジン100のデータパス110において、SDN処理エンジン100への入力をどのように修正するべきか、かつ出力をどのように生成するべきかを導く。
SDN処理エンジン100には、T個の命令テーブルが備えられる。SDN処理エンジン100はM個の出力を有するので、M個の出力それぞれが少なくとも1つのテーブルに関連づけられるように、Tは少なくともMに等しいことが必要である。SDN処理エンジン100の1つの出力は、複数の命令テーブルに関連づけられてもよいが、1つのテーブルが2つ以上の出力に属すことはできない。複数の命令テーブルをSDN処理エンジンの各出力ポートに割り当てることは、SDN処理エンジンの設計者によって選択される設計選択事項である。
図7は、本発明の実施形態による命令テーブル700のブロック図を示す。いくつかの実施形態では、図1の命令テーブル130は命令テーブル700と同様に構成される。各テーブル705の読み出しアドレスは、MLLC125などのMLLCの出力ビットから取得される。テーブルiはAビットのアドレスを有し、これは、テーブルiは最大2Aiのエントリを有することを意味する。テーブル705のエントリが多いほど、対応する出力データを操作するエンジン柔軟性はより高くなるが、その分ハードウェアを要することを理解されたい。テーブル705のエントリの数は、典型的には、16から256であり、これはテーブル705のアドレス幅が4ビットから8ビットであることを意味する。しかし、テーブル705のエントリはより多くてもまたはより少なくてもよい。いくつかの実施形態では、テーブル705は、SRAMメモリからまたはフロップのアレイから構成される。
テーブルiの各エントリは、Q個の命令を含む。そのため、テーブルiは、入力データが入手可能な周期毎にQ個の命令を返すことになる。これらQ個の命令は全てSDN処理エンジンのデータパスにおいて並行に実行されて、テーブルiと関連づけられた出力jを生成する。
命令は全てデータパスにおいて並行に実行される。テーブルにおけるエントリ毎の命令が多いほど、並行に実行できる各出力のデータ操作動作は多くなるが、その分ハードウェアを要することを理解されたい。入力から修正される出力については、対応するテーブルのエントリ毎の命令の数は、典型的には4から8である。新たに生成される出力については、対応するテーブルのエントリ毎の命令の数は、典型的には8から16である。
図1に戻って、命令テーブル130が返す命令は全て、データパス110内の命令実行ブロック140に送信されて、命令実行ブロック140がこれら全ての命令を並行に実行する。データパス110において命令が実行される前に、SDN処理エンジン100へのN個の入力の全てが、コントロールパス105の遅延との整合のために遅延整合キュー135を通る。遅延整合キュー110は、コントロールパス105からの命令が、対応する遅延された入力に適合する時間に受信されるように、コントロールパス105の遅延に等しい深さを有するFIFOまたはシフトレジスタであってもよい。さらに、遅延整合キュー135は、SDN処理エンジン100が、入力ポートで、バックツーバックデータで最大限のスループットを達成することを保証する。
いくつかの実施形態では、2種類の命令がSDN処理エンジン100によってサポートされる。それらはコピー命令とALU命令である。コピー命令は、1つの入力から特定のバイトをコピーすることとそれらを1つの出力の特定の位置に貼り付ける(ペーストする)こととを行う。ALU命令は、複数の入力から2つの特定のワードを取得し、次いでALU動作を行い、最終的にALU結果を1つの出力の特定の位置に貼り付ける。2種類の命令がSDN処理エンジン100によってサポートされるが、より多くまたはより少ない命令がSDN処理エンジン100によってサポートされてもよい。
図8Aは、本発明の実施形態によるコピー命令800のフォーマットを示す。図8Bは、本発明の実施形態によるコピー命令800を実施する概要を示す。典型的には、ハードウェア設計850が、SDN処理エンジンのデータパス110においてコピー命令800を実行する。
「En」フィールド805は、この命令が実行されるか否かを示す。この命令が有効な場合(ビット「En」が1)、次いで「Src_ID」フィールド810を用いて複数の入力のうちの1つの入力を選択する。「Src_ByteOffset」フィールド815は、最大Cバイトがコピーされる選択された入力の開始バイト位置を指し示す。いくつかの実施形態では、Cは、4バイトと8バイトの間である。「BitMask」フィールド820を用いて、コピーされたバイト内の特定のビットをマスクする。これにより、ユーザは、Cバイト全体のコピーに加えてCバイト未満または数ビットのコピーを行うことができる。コピー命令800はまた、「IsConst」フィールド805を1に設定することで一定値をコピーすることを可能にする。この場合、一定値は、「BitMask」フィールド820によって与えられる。最後に、コピーおよびマスクされたバイトまたは一定のバイトが、宛先出力に貼り付けられる。それらは、「Dst_ByteOffset」フィールド830によって与えられる開始位置で、対応する出力のバイトに上書きされる。
図9Aは、本発明の実施形態によるALU命令900のフォーマットを示す。図9Bは、本発明の実施形態によるALU命令900を実施する概要を示す。典型的には、ハードウェア設計960が、SDN処理エンジンのデータパス110においてALU命令900を実行する。
「En」フィールド905は、この命令が実行されるか否かを示す。コピー命令800と同様に、「SrcA_ID」フィールド915、「SrcA_ByteOffset」フィールド920、および「SrcA_BitMask」フィールド925を用いて、srcAのための入力から最大Wバイトをコピーしマスクする。「SrcB_ID」フィールド935、「SrcB_ByteOffset」フィールド940、および「SrcB_BitMask」フィールド945を用いて、srcBのための入力から最大Wバイトをコピーしマスクする。ユーザは、srcAまたはsrcBのために一定値を割り当てることもできる。「SrcA_IsConst」フィールド930が1に設定される場合、srcAは、「SrcA_BitMask」フィールド925に設定された値に等しい一定値を有する。「SrcB_IsConst」フィールド950が1に設定される場合、srcBは「SrcB_BitMask」945に設定された値に等しい一定値を有する。コピーされるバイト数Wは、ALUのサポートされるビット幅に応じて予め定められる。Wは、典型的には、2バイト(16ビット)または4バイト(32ビット)である。しかし、Wは他の値であってもよい。
srcAおよびsrcBのためのコピーされたバイトまたは一定値は、ALUの2つの入力オペランドになる。ALUの演算は、「OpCode」フィールド910によって選択される。SDN処理エンジンにとって最も有用な演算は、加算(+)、減算(−)、ビット単位のAND(&)、ビット単位のOR(|)、ビット単位のXOR(^)、ビット単位の左シフト(<<)、およびビット単位の右シフト(>>)である。ALU命令は、ゼロのソースのバイト単位のORまたは加算として演算を構成することでコピー命令としても用いられる。ALUの結果は、次いで「Dst_ByteOffset」フィールド955によって与えられる開始バイト位置で宛先出力に貼り付けられる。
出力は、全ての命令が実行される前においてその最初のコンテンツが特定の入力のコンテンツである場合、その特定の入力を修正したものである。出力は、全ての命令が実行される前においてその最初のコンテンツが全てゼロである場合、新たに生成される。
各出力は、それ自身の命令テーブルを有し、各命令テーブルは多数の命令を返す。これらの命令の全てが並行に実行されて対応する出力を構築する。SDNシステムでは、ALU動作よりも、コピー動作を使用することが多い。さらに、ALU命令はより複雑であり、そのため、コピー命令の場合よりもハードウェアコストが大きくなる。したがって、費用効率が最も高い設計を達成するため、各テーブルのエントリは、典型的には1つから2つのALU命令を有するのみであり、残りはコピー命令である。
本発明の実施形態は、ソフトウェア・デファインド・ネットワーク(SDN)処理エンジンにおける迅速な条件付きのデータの修正および生成に関する。多数の入力の修正および多数の出力の生成を、並行に行うことができる。各入力または出力データのサイズは、何百バイトのように大きくてもよい。処理エンジンは、コントロールパスおよびデータパスを含む。コントロールパスは、入力の修正および新しい出力の生成のための命令を生成する。データパスは、コントロールパスが生成する全ての命令を実行する。処理エンジンは、典型的には、処理エンジンがサポートするネットワーク機能およびプロトコルに応じて、データ修正および生成のための条件およびルールを再構成できるように、プログラム可能である。SDN処理エンジンは、多数の大きいサイズのデータフローを処理することを可能とし、このようなデータを操作することにおいて効率的である。SDN処理エンジンは、多数のバックツーバックの入力および出力データフローを用いて最大限のスループットを達成する。
当業者ならば、他の使用法や利点もまた存在することを理解するであろう。本発明を様々な特定の詳細を参照に説明したが、当業者ならば、本発明の精神から逸脱することなく本発明が他の特定の形式で実施され得ることを理解するであろう。したがって、当業者ならば、本発明が上述の例示の詳細によって限定されず、添付の請求項によって定義されることを理解するであろう。

Claims (34)

  1. ソフトウェア・デファインド・ネットワーク(SDN)処理エンジンを含む装置であって、
    前記SDN処理エンジンは、
    N個の入力のワードを比較するワード比較コーンを含む、プログラム可能な命令の条件付き生成用のコントロールパスであって、前記ワード比較コーンが、K個の構成変更可能なMUX/CMP論理セルを含む、コントロールパスと、
    前記コントロールパスによって生成される前記命令の実行用のデータパスとを備え、 前記SDN処理エンジンは、並行に、N個の入力を受信してM個の出力を生成する、装置。
  2. 請求項1に記載の装置において、前記M個の出力の各コンテンツは、修正された入力コンテンツの1つまたは新たに生成されたコンテンツである、装置。
  3. 請求項1に記載の装置において、
    前記コントロールパスは、
    前記N個の入力から制御ビットを抽出する制御ビット抽出器と
    前記制御ビットおよび前記ワード比較コーンの結果ビットに、複合された、式および条件を実行する多段マルチプレクサ/ルックアップテーブル(MUX/LUT論理コーンと、
    データ操作のための命令を含む複数の命令テーブルとを備えた、装置。
  4. 請求項3に記載の装置において、前記制御ビット抽出器、前記ワード比較コーン、前記多段MUX/LUT論理コーン、および前記複数の命令テーブルのうちの少なくとも1つがネットワーク機能およびプロトコルに基づいて、再構成およびプログラム可能である装置。
  5. 請求項3に記載の装置において、前記制御ビット抽出器が、予め定められた入力フォーマットに基づいて前記N個の入力から前記制御ビットを抽出する、装置。
  6. 請求項に記載の装置において、前記MUX/CMP論理セルが、それぞれ、互いに前記N個の入力からのWバイトの2つのワードを比較するためのものである、装置。
  7. 請求項に記載の装置において、前記WバイトのワードそれぞれにおけるWバイトのうちの特定のビットのみが比較される、装置。
  8. 請求項に記載の装置において、前記MUX/CMP論理セルが、それぞれ、前記入力のうちの1つからの1つのWバイトのワードを、一定値と比較する、装置。
  9. 請求項に記載の装置において、前記MUX/CMP論理セルが、それぞれ、少なくとも3つの演算をサポートし、当該3つの演算が、等しい(==)、より大きい(>)、およびより小さい(<)である、装置。
  10. 請求項3に記載の装置において、
    前記多段MUX/LUT論理コーンはS個のステージを含み、
    前記S個のステージの最初のステージは、前記SDN処理エンジンへの前記N個の入力の前記制御ビットと、前記ワード比較コーンの結果ビットとを含む入力ビットを有し、
    ステージiの出力ビットは全て、ステージi+1への入力ビットであり、
    前記S個のステージの最後のステージの出力ビットは、前記複数の命令テーブルを読み取るためのインデックスを形成する、装置。
  11. 請求項10に記載の装置において、前記ステージiはが、Pi個の構成変更可能なMUX/LUTセルを含む、装置。
  12. 請求項11に記載の装置において、前記MUX/LUTセルが、それぞれ、そのMUX/LUTセルへの入力ビットからL個の任意のビットを選択するL個のマルチプレクサを備えた、装置。
  13. 請求項12に記載の装置において、前記L個の選択されたビットが、2Lビットのルックアップテーブルcfg_LUTに対するポインタとして構成され、前記ルックアップテーブルcfg_LUTの出力が1ビットである、装置。
  14. 請求項13に記載の装置において、前記ルックアップテーブルcfg_LUTがフロップから構成される、装置。
  15. 請求項3に記載の装置において、合成ツールを使用して、複合された、論理式および条件を前記多段MUX/LUT論理コーンにマッピングする、装置。
  16. 請求項3に記載の装置において、
    前記複数の命令テーブルが、T個のプログラム可能な命令テーブルを含み、
    前記多段MUX/LUT論理コーンの出力が、前記T個のプログラム可能な命令テーブルの読み出しアドレスであるインデックスを構成し、
    前記M個の出力それぞれが前記T個のプログラム可能な命令テーブルの少なくとも1つと関連づけられるように、前記Tが、前記SDN処理エンジンの前記M個の出力と少なくとも等しい、装置。
  17. 請求項16に記載の装置において、前記T個のプログラム可能な命令テーブルのテーブルiが、Aiビットのアドレスを有し、前記テーブルiが、最大で2Aiのエントリを有する、装置。
  18. 請求項17に記載の装置において、テーブルiの各エントリが、Qi個の命令を含む、装置。
  19. 請求項16に記載の装置において、前記T個のプログラム可能な命令テーブルのそれぞれが、SRAMまたはフロップのアレイから構成される、装置。
  20. 請求項1に記載の装置において、前記SDN処理エンジンが、コピー命令およびALU命令を含む少なくとも2種類の命令をサポートする、装置。
  21. 請求項20に記載の装置において、前記コピー命令が、1つの入力からの最大Cバイトを1つの出力にコピーする、装置。
  22. 請求項20に記載の装置において、前記コピー命令が、一定値を1つの出力にコピーする、装置。
  23. 請求項20に記載の装置において、前記ALU命令は、入力からの各Wバイトの2つのワードのALU演算の結果を、1つの出力にコピーする、装置。
  24. 請求項23に記載の装置において、前記ALU演算への入力が一定値である、装置。
  25. 請求項24に記載の装置において、前記ALU演算が、加算(+)、減算(−)、ビット単位のAND(&)、ビット単位のOR(|)、ビット単位のXOR(^)、ビット単位の左シフト(<<)、およびビット単位の右シフト(>>)のうちの1つである、装置。
  26. 請求項20に記載の装置において、前記コピー命令または前記ALU命令それぞれが、その命令のビットマスクフィールドを用いることでビットまたはバイト操作をサポートする、装置。
  27. 請求項1に記載の装置において、
    前記データパスが、
    データが適切な時間に処理されるように、前記データパスの遅延を前記コントロールパスの遅延に整合させる遅延整合キューと、
    特定の入力を修正するか、または新しい出力を生成するために、前記コントロールパスが生成する命令の全てを実行する命令実行ブロックとを備えた、装置。
  28. 請求項27に記載の装置において、前記遅延整合キューが、前記SDN処理エンジンがバックツーバックのデータ処理で最大限のスループットを達成するように、前記コントロールパスの遅延に等しい深さを有する、FIFOおよびシフトレジスタのうちの1つである、装置。
  29. 請求項27に記載の装置において、前記命令実行ブロックが、並行に、前記コントロールパスが生成する命令の全てを実行するハードウェアモジュールを備え、当該ハードウェアモジュールそれぞれが、前記命令のうちの1つを実行する、装置。
  30. 請求項27に記載の装置において、全ての命令が実行される前において出力の最初のコンテンツが特定の入力のコンテンツである場合、前記出力は前記特定の入力を修正したものであり、全ての命令が実行される前において出力の最初のコンテンツが全てゼロである場合、前記出力は新たに生成される、装置。
  31. ソフトウェア・デファインド・ネットワーク(SDN)処理エンジンにおける並行かつ条件付きのデータ操作方法であって、
    N個の入力であって、Nは1よりも大きい、入力を受信することと、
    前記N個の入力を、コントロールパスおよびデータパスを通して前記SDN処理エンジンで処理させることと、
    複数の前記N個の入力から制御ビットを同時に抽出互いに前記N個の入力のワードを比較すること
    前記制御ビットおよび前記比較からの結果ビットに、複合された、式および条件を実行することで、インデックスを返すことと、
    前記インデックスに基づいて、前記N個の入力をどのように修正するか、かつ、M個の出力をどのように生成するかを導く命令を検索することと、
    並行に前記N個の入力についての前記命令を実行することで、前記M個の出力を生成することとを備えた、方法。
  32. 請求項31に記載の方法において、前記抽出、前記比較、前記複合された、式および条件、ならびに命令テーブルが、前記SDN処理エンジンの前記コントロールパスにおいて実現され遅延キューおよび命令の前記実行が、前記SDN処理エンジンの前記データパスにおいて実施される、方法。
  33. 請求項31に記載の方法において、前記M個の出力それぞれのコンテンツが、新たに生成されたコンテンツと、前記N個の入力のうちの1つの修正されたコンテンツのいずれか一方または両方である、方法。
  34. 請求項31に記載の方法において、
    前記SDN処理エンジンの前記N個の入力および前記M個の出力のそれぞれのデータフォーマットが、
    データサイズを特定する「Length」フィールドと、
    ペイロードの最初のバイトの位置を特定する「Offset」フィールドと、
    データの種類を特定する「Control」フィールドと
    前記ペイロードを含む「Body」フィールドとを含む、方法。
JP2014267000A 2013-12-30 2014-12-29 ソフトウェア・デファインド・ネットワーク処理エンジンにおける並行かつ条件付きのデータ操作の方法および装置 Active JP6537823B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/144,260 2013-12-30
US14/144,260 US9880844B2 (en) 2013-12-30 2013-12-30 Method and apparatus for parallel and conditional data manipulation in a software-defined network processing engine

Publications (2)

Publication Number Publication Date
JP2015165649A JP2015165649A (ja) 2015-09-17
JP6537823B2 true JP6537823B2 (ja) 2019-07-03

Family

ID=53481841

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014267000A Active JP6537823B2 (ja) 2013-12-30 2014-12-29 ソフトウェア・デファインド・ネットワーク処理エンジンにおける並行かつ条件付きのデータ操作の方法および装置

Country Status (6)

Country Link
US (1) US9880844B2 (ja)
JP (1) JP6537823B2 (ja)
KR (1) KR20150079475A (ja)
CN (1) CN104866284B (ja)
HK (1) HK1208943A1 (ja)
TW (1) TW201543359A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11308114B1 (en) * 2013-12-23 2022-04-19 Cazena, Inc. Platform for provisioning a data analytics environment
US10003676B2 (en) * 2015-02-20 2018-06-19 Cavium, Inc. Method and apparatus for generating parallel lookup requests utilizing a super key
CN106095360B (zh) * 2016-05-31 2018-11-27 福州瑞芯微电子股份有限公司 基于调色板的图像处理方法和图像处理装置
CN109818762B (zh) * 2017-11-20 2022-03-08 中国电信股份有限公司 用于实现sdn控制器自动注册的方法、适配器和系统
KR101858957B1 (ko) * 2017-12-12 2018-05-17 주식회사 위더스플래닛 Sdn 기반 중앙 집중식 wlan 네트워크 구축을 위한 제어 시스템
US10805164B2 (en) 2018-12-14 2020-10-13 At&T Intellectual Property I, L.P. Controlling parallel data processing for service function chains
US11146506B2 (en) 2018-12-14 2021-10-12 At&T Intellectual Property I, L.P. Parallel data processing for service function chains spanning multiple servers

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929939A (en) * 1988-10-31 1990-05-29 International Business Machines Corporation High-speed switching system with flexible protocol capability
US5319347A (en) * 1992-04-30 1994-06-07 Sgs-Thomson Microelectronics, Inc. Parallelized magnitude comparator for comparing a binary number to a fixed value
US6667984B1 (en) 1998-05-15 2003-12-23 Polytechnic University Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing
ATE319249T1 (de) 2000-01-27 2006-03-15 Ibm Verfahren und vorrichtung für klassifizierung von datenpaketen
US6831917B1 (en) 2000-05-10 2004-12-14 Cisco Technology, Inc. Network address translation for multicast virtual sourcing
US7075926B2 (en) * 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
US7461167B1 (en) 2002-11-22 2008-12-02 Silicon Image, Inc. Method for multicast service in a crossbar switch
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
EP1553738A1 (en) * 2004-01-12 2005-07-13 Thomson Licensing S.A. Method and apparatus for generating data packets
US7275069B2 (en) * 2004-04-26 2007-09-25 Tarari, Inc. System and method for tokening documents
KR100603567B1 (ko) 2004-09-02 2006-07-24 삼성전자주식회사 스위치에서의 대역폭 예약을 통한 QoS 보장 방법 및 그시스템
US20060059269A1 (en) 2004-09-13 2006-03-16 Chien Chen Transparent recovery of switch device
US7787463B2 (en) * 2006-01-26 2010-08-31 Broadcom Corporation Content aware apparatus and method
US8112622B2 (en) 2006-12-08 2012-02-07 Broadcom Corporation Chaining port scheme for network security
US7961489B2 (en) * 2007-04-23 2011-06-14 Marvell Israel (MISL)Ltd. Comparing data representations to stored patterns
US8259715B2 (en) 2007-07-25 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for traffic load balancing to multiple processors
US8054744B1 (en) 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
GB2481819B (en) * 2010-07-07 2018-03-07 Advanced Risc Mach Ltd Switching between dedicated function hardware and use of a software routine to generate result data
US8627057B2 (en) * 2010-12-22 2014-01-07 Intel Corporation Reconfigurable sensing platform for software-defined instrumentation
CN102724101B (zh) 2011-03-29 2015-01-21 华为技术有限公司 报文转发方法及系统与中继代理设备
US9159420B1 (en) 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US20140153443A1 (en) 2012-11-30 2014-06-05 International Business Machines Corporation Per-Address Spanning Tree Networks
CN104022960B (zh) * 2013-02-28 2017-05-31 新华三技术有限公司 基于OpenFlow协议实现PVLAN的方法和装置
US9590914B2 (en) 2013-11-05 2017-03-07 Cisco Technology, Inc. Randomized per-packet port channel load balancing
US9973599B2 (en) * 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks

Also Published As

Publication number Publication date
CN104866284B (zh) 2019-05-28
CN104866284A (zh) 2015-08-26
US9880844B2 (en) 2018-01-30
HK1208943A1 (en) 2016-03-18
US20150186143A1 (en) 2015-07-02
JP2015165649A (ja) 2015-09-17
TW201543359A (zh) 2015-11-16
KR20150079475A (ko) 2015-07-08

Similar Documents

Publication Publication Date Title
JP6537823B2 (ja) ソフトウェア・デファインド・ネットワーク処理エンジンにおける並行かつ条件付きのデータ操作の方法および装置
KR102402176B1 (ko) 소프트웨어-규정된 네트워크 엔진에서 패킷 수정 및 포워딩을 위해서 룩업들을 생성하고 결정들을 수행하기 위한 장치 및 방법
US8819217B2 (en) Intelligent graph walking
US10516626B1 (en) Generating configuration data and API for programming a forwarding element
US10764176B1 (en) Compiler and hardware interactions to reuse register fields in the data plane of a network forwarding element
US11294841B1 (en) Dynamically configurable pipeline
US11258707B1 (en) Systems for building data structures with highly scalable algorithms for a distributed LPM implementation
US10003676B2 (en) Method and apparatus for generating parallel lookup requests utilizing a super key
US11095760B1 (en) Implementing configurable packet parsers for field-programmable gate arrays using hardened resources
Luinaud et al. Bridging the gap: Fpgas as programmable switches
US9270517B1 (en) Tuple construction from data packets
US11425036B1 (en) Pipelined match-action circuitry
BR102019009234A2 (pt) dispositivo de rede e método para processar o tráfego de rede com estrutura sdn de modo dinâmico e independente de protocolo
US10484304B2 (en) Determining actions to be immediately performed on a network packet with an application specific integrated circuit
JP7220814B1 (ja) データ取得装置及びデータ取得方法
Ibrahim HP4 High-Performance Programmable Packet Parser

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171222

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171222

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20171222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190219

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: 20190507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190605

R150 Certificate of patent or registration of utility model

Ref document number: 6537823

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250