JP2015165650A - ソフトウェア・デファインド・ネットワークエンジンにおいてパケット修正・転送のためにルックアップを生成し決定を行う装置および方法 - Google Patents

ソフトウェア・デファインド・ネットワークエンジンにおいてパケット修正・転送のためにルックアップを生成し決定を行う装置および方法 Download PDF

Info

Publication number
JP2015165650A
JP2015165650A JP2014267001A JP2014267001A JP2015165650A JP 2015165650 A JP2015165650 A JP 2015165650A JP 2014267001 A JP2014267001 A JP 2014267001A JP 2014267001 A JP2014267001 A JP 2014267001A JP 2015165650 A JP2015165650 A JP 2015165650A
Authority
JP
Japan
Prior art keywords
token
input
lookup
output
key
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.)
Granted
Application number
JP2014267001A
Other languages
English (en)
Other versions
JP6537824B2 (ja
Inventor
アン・ティー・トラン
T Tran Anh
ジェラルド・シュミット
Schmidt Gerald
ツァヒ・ダニエル
Daniel Tsahi
ハリッシュ・クリシュナモーシー
Krishnamoorthy Harish
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.)
Xpliant Inc
Original Assignee
Xpliant Inc
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 Xpliant Inc filed Critical Xpliant Inc
Publication of JP2015165650A publication Critical patent/JP2015165650A/ja
Application granted granted Critical
Publication of JP6537824B2 publication Critical patent/JP6537824B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/645Splitting route computation layer and forwarding layer, e.g. routing according to path computational element [PCE] or based on OpenFlow functionality
    • H04L45/655Interaction between route computation entities and forwarding entities, e.g. for route determination or for flow table update
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques
    • H04L2012/5604Medium of transmission, e.g. fibre, cable, radio

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

【課題】ネットワークパケットをシステム内の他のコンポーネントが正確に処理および送信できるようにする、ソフトウェア・デファインド・ネットワーキング(SDN)システムを提供する。
【解決手段】システムは、パケットの変更および転送のためのルックアップを生成し決定を行うエンジン(LDE)100を含み、このLDE100は、各入力トークン200に対するルックアップキーを生成するキー生成器115と、ルックアップキーに対応するルックアップ結果のコンテンツに基づいて入力トークンを変更することによって出力トークンを生成する出力生成器125とを備える。
【選択図】図1

Description

本発明は、ルックアップキーの生成およびネットワークパケットの修正を行うエンジンアーキテクチャに関し、より詳細には、ソフトウェア・デファインド・ネットワークエンジンにおいてパケット修正・転送のためにルックアップを生成し決定を行う装置および方法に関する。
従来、ネットワーク装置におけるネットワーキング機能およびプロトコルは、ハードウェアによるASIC設計によって実現されてきた。これらの固定したASIC設計は、新しいプロトコルの導入率を制限する。新しいプロトコルをサポートするハードウェアの変更は、コストと時間の両方の観点から費用がかかる。その結果、ユーザがソフトウェアによって新しい機能およびプロトコルを導入することを可能にするプログラム可能なネットワーキング装置が、より魅力的になりつつある。
新しいネットワークプロトコルを実現する従来技術の方法は、最新の汎用CPU上で動作するソフトウェアを用いることである。しかし、現在最大64ビットでのこれらの汎用CPUの処理能力では、最大100Gbpsのネットワークのパケットのフローをサポートする現在のネットワーキングシステムのためのリアルタイムの性能を保証できない。
新しいネットワークプロトコルを実現する従来技術の別の方法は、再構成可能なFPGAチップを用いることである。しかし、FPGAチップの論理セル能力における制限により、何百バイトのような大きなサイズを有するネットワークパケットを、最大限のスループットで処理することはできない。さらに、内部相互接続配線が極めて複雑なため、高遅延、低周波数で、FPGAチップが動作することになる。FPGAチップのこれらの不十分な特性は、最新の企業およびデータセンタのネットワークにおいて要求される複雑なネットワークの機能を行うのに適切ではない。
ソフトウェア・デファインド・ネットワーキング(SDN)システムにおいて、提案されるルックアップ・決定エンジン(LDE)は、対応するネットワークパケットをシステム内の他のコンポーネントが正確に処理および送信できるように、入力トークンに対するルックアップキーを生成し、ルックアップ結果に基づいて入力トークンを修正(変更)できる。キーの生成およびトークンの修正のための条件およびルールは、ソフトウェアによって完全にプログラム可能であり、LDEのために設定されたネットワーク機能およびプロトコルに基づく。LDEは、典型的には2つの主なブロック、すなわち、キー生成器および出力生成器を含む。名前の通り、キー生成器は各入力トークンに対するルックアップキーを生成し、出力生成器は出力トークンを生成する。出力トークンはルックアップ結果に基づいて入力トークンを修正したものである。キー生成器および出力生成器は、同様の設計アーキテクチャを有し、この設計アーキテクチャは、コントロールパスおよびデータパスを含む。コントロールパスは、その入力における特定のフィールドおよびビットが、設定プロトコルの条件を満たすか否かを検査する。コントロールパスは、検査結果に基づきそれに応じて、命令を生成する。データパスは、キー生成器でルックアップキーを生成する命令または出力生成器で出力トークンを生成する命令であって、コントロールパスが生成する全ての命令を実行する。キー生成および出力生成のための条件およびルールは、キー生成器および出力生成器のコントロールパスにおいて完全にプログラム可能である。
一構成において、ソフトウェア・デファインド・ネットワーク(SDN)システムにおいてパケットの変更および転送のためのルックアップを生成し決定を行うエンジンが提供される。前記提供されるエンジンは、簡略化して、ルックアップ・決定エンジン(LDE)と名付けられる。前記LDEは、典型的には、各入力トークンに対するルックアップキーを生成するキー生成器と、前記ルックアップキーに対応するルックアップ結果のコンテンツに基づいて前記入力トークンを変更することによって出力トークンを生成する出力生成器とを備える。
いくつかの実施形態では、前記LDEは、入力トークンが前記LDEに処理される前に、前記入力トークンを一時的に格納する入力バッファ(FIFOバッファであってもよい)と、前記入力トークン内のフィールドの位置を特定するテンプレートテーブルと、前記入力トークンを前記ルックアップ結果に結合し、前記ルックアップ結果と結合された前記入力トークンを前記出力生成器に送信するルックアップ結果収集器と、前記出力トークンをこのLDEに返送するべきか、SDNシステム内の他のエンジンに返送すべきかを判定するループバックチェッカと、前記ループバックトークンを格納するループバックバッファ(FIFOバッファであってもよい)とをさらに備える。
いくつかの実施形態では、前記テンプレートテーブルへのテンプレートルックアップポインタは、前記入力トークンの内部の「テンプレートID」フィールドの値である。いくつかの実施形態では、前記テンプレートテーブルのテンプレートルックアップ結果は、前記入力トークン内のトークン層の数およびこれらトークン層のオフセット、ならびに前記入力トークンの内部で入手できない、追加の制御ビットであるメタデータビットの情報を含む。
いくつかの実施形態では、前記ルックアップ結果収集器は、トークンバッファおよびルックアップ結果バッファを含む。前記トークンバッファおよび前記ルックアップ結果バッファそれぞれの深さは、前記LDEが最大限のスループットで動作することを保証するように、(前記LDEが生成する各ルックアップキーのためのルックアップ結果を返すことを担う)リモート検索エンジンの遅延に少なくとも等しい。
いくつかの実施形態では、前記ループバックチェッカによる前記判定は、前記出力トークン内の「Dst_EngineAddress(宛先エンジンアドレス)」フィールドと前記LDEのアドレスとの比較に基づく。
いくつかの実施形態では、デッドロックを回避するように、前記ループバックバッファの内部のトークンが、前記入力バッファ内のトークンよりも高い優先度を有する。
いくつかの実施形態では、前記キー生成器は、命令を生成するコントロールパスと、前記コントロールパスで生成される命令を実行するデータパスとを含む。
前記コントロールパスは、前記入力トークンから制御ビット、かつ、対応するテンプレート情報からメタデータビットを抽出する制御ビット抽出器と、前記入力トークンおよび対応するテンプレートメタデータ内の多ビットワードを比較するMUX/CMPコーンと、前記制御ビットおよび前記MUX/CMPコーンの出力が、前記LDEのために設定された特定のネットワーク機能およびプロトコルの条件およびルールを満たすか否かをチェックするMUX/LUT論理コーンと、前記MUX/LUT論理コーンの出力に基づいて前記命令を生成する複数の命令テーブルとを含む。
いくつかの実施形態では、前記制御ビット抽出器は、前記制御ビットおよび前記メタデータビットのうちのどのビットを抽出するかをユーザが選択できるように、ソフトウェアによって再構成可能である。
いくつかの実施形態では、前記MUX/CMPコーンは、複数のMUX/CMPセルを並列に含み、前記MUX/CMPセルは、それぞれ、前記入力トークンおよび前記対応するテンプレートメタデータから2つのワードを選択する2つの再構成可能なマルチプレクサと、一致/等しい(==)、より大きい(>)、およびより小さい(<)を含む少なくとも3つの演算をサポートする再構成可能な比較器とを含む。前記MUX/CMPセルは、それぞれ、前記入力トークンからの1つのワードと、前記対応するテンプレートメタデータの一定値とを比較する。
いくつかの実施形態では、前記MUX/LUT論理コーンは、複数のステージを含み、これらステージは、それぞれ、複数のMUX/LUTセルを並列に含む。前記MUX/LUTセルは、それぞれ、当該MUX/LUTセルの入力ビットから6つのビットを選択する6つの再構成可能なマルチプレクサと、前記6つの再構成可能なマルチプレクサの6つの出力ビットによってインデックスされた、64ビットを含む再構成可能なルックアップテーブル(LUT)とを含む。
前記コントロールパスによって返される複数(多数)の命令は前記ルックアップキーを生成できる。いくつかの実施形態では、2種類の命令、すなわち、コピー命令およびALU命令が、前記コントロールパスによって生成される。前記コピー命令は、ソースからのデータまたは一定値を出力キーにおけるある位置にコピーでき、前記ソースは前記入力トークンおよび前記対応するテンプレートメタデータのうちの1つである。前記ALU命令は、2つのオペランド(演算対象)のALU結果を出力キーにおけるある位置にコピーでき、前記2つのオペランドは、入力ソースから取得されるものであり、前記入力ソースは、前記入力トークンおよび前記対応するテンプレートメタデータのうちの1つである。前記ALU命令は、一定値と1つのオペランドのALU結果を出力キーにおけるある位置にコピーでき、前記オペランドは、入力ソースから出力キーにおけるある位置に取得されるものであり、前記入力ソースは、前記入力トークンおよび前記対応するテンプレートメタデータのうちの1つである。前記ALU命令のためのALU演算は、加算(+)、減算(−)、ビット単位のAND(&)、ビット単位のOR(|)、ビット単位のXOR(^)、ビット単位の左シフト(<<)、およびビット単位の右シフト(>>)のうちの1つである。
前記データパスは、前記コントロールパスが前記命令を生成するのを待つ間に前記入力トークンをバッファリングする遅延整合キューと、前記ルックアップキーを生成するために、前記コントロールパスによって生成される前記命令の全てを並行に実行する命令実行ブロックとを含む。
いくつかの実施形態では、前記キー生成器が最大限のスループットで動作できるように、前記遅延整合キューは、前記コントロールパスの遅延に等しい深さを有するFIFOバッファまたはシフトレジスタである。
いくつかの実施形態では、前記ルックアップキーは、全ての命令が実行される前に全てゼロで初期化される。
いくつかの実施形態では、前記出力生成器は、前記キー生成器と類似の設計を有するが、前記キー生成器の入力データおよび出力データとは異なる入力データおよび出力データを有する。前記出力生成器の前記入力データは、前記入力トークン、対応するテンプレート情報からのメタデータビット、および前記ルックアップ結果を含む。前記出力生成器の前記出力データは前記入力トークンを変更したものである。
いくつかの実施形態では、前記出力生成器は、前記キー生成器におけるMUX/CMPコーンよりも多いMUX/CMPセルを有するMUX/CMPコーンを含み、前記出力生成器は、前記キー生成器におけるMUX/LUT論理コーンよりも多いステージを有するMUX/LUT論理コーンを含む。
いくつかの実施形態では、前記出力トークンは、全ての命令が実行される前に、前記入力トークンと同じコンテンツを有するように初期化される。
いくつかの実施形態では、前記キー生成器および前記出力生成器の両方のコントロールパスは、異なるネットワーク機能およびプロトコルをサポートするためにユーザが前記LDEを設定できるように、プログラム可能である。前記出力トークンのコンテンツが、SDNシステム内の他のコンポーネントによって用いられて、その対応するネットワークパケットが適切に(適宜)変更および転送される。
別の構成において、ソフトウェア・デファインド・ネットワーク(SDN)エンジンにおいてパケット変更・転送のためにルックアップを生成し決定を行う方法を提供する。前記方法は、入力バッファに入力トークンをバッファリングすることと、前記入力トークンの内部で入手できないメタデータビットを、前記入力トークンそれぞれについて取り出すことと、前記入力トークンおよび前記メタデータビットそれぞれの少なくとも特定のビットに基づいて前記入力トークンそれぞれに対するルックアップキーを生成することと、前記ルックアップキーに基づいたルックアップ結果を受信することと、前記ルックアップ結果および前記入力トークンのコンテンツに基づいて前記入力トークン内の1つ以上のフィールドを変更することと、前記変更されたトークンがこのエンジンに返送されるものか、SDNシステム内の他のエンジンに返送されるものかを判定することと、前記判定に基づいて、ループバックバッファに前記変更したトークンをバッファリングすることであって、前記ループバックバッファ内のトークンは前記入力バッファ内のトークンよりも高い優先度を有する、バッファリングを行うこととを含む。
いくつかの実施形態では、前記入力バッファおよび前記ループバックバッファはFIFOバッファである。
いくつかの実施形態では、トークンのデータフォーマットは、共通部および層部を含む。前記共通部は、対応するネットワークパケットの包括的な制御ビットと、テンプレートテーブルへのルックアップポインタの値とを含む。前記ルックアップポインタの値は、前記トークン内の「テンプレートID」フィールドによって与えられる。いくつかの実施形態では、前記方法は、前記トークンの前記層部におけるトークンの層の数と各オフセットとを前記テンプレートテーブルから取り出すことをさらに含む。
前記層部は、対応するネットワークパケットの全てのパースされたパケットヘッダの情報を含む。前記パースされたパケットヘッダは、それぞれ、前記層部における「コントロール」フィールドおよび「データ」フィールドに関連づけられる。
さらに別の構成において、ソフトウェア・デファインド・ネットワーク(SDN)システムが提供される。前記システムは、パーサと、少なくとも1つのルックアップ・決定エンジンと、検索エンジンと、更新読取り書込みブロックと、パケットメモリ・送信キューブロックとを含む。前記パーサは、入来ネットワークパケットを受信し、これらの入来ネットワークパケットのヘッダをパースし、トークンを出力する。前記少なくとも1つのルックアップ・決定エンジンは、これらのトークンに対するルックアップキーを生成し、次いで受信されたルックアップ結果に基づいてこれらのトークンを変更する。前記検索エンジンは、各LDEによって送信された各ルックアップキーに対するルックアップ結果を返す。前記更新読取り書込み(URW)ブロックは、前記変更されたトークンに基づいて前記ネットワークパケットそれぞれの前記パケットヘッダを変更する。前記パケットメモリ・送信キューブロックは、前記変更されたパケットヘッダと対応する前記パケットの元のペイロードとを出力のために組み合わせる。
いくつかの実施形態では、前記少なくとも1つのルックアップ・決定エンジンは、多数のルックアップを、連続して行うために直列に、または、同時に行うために並列に、連結された複数のルックアップ・決定エンジンを含む。いくつかの実施形態では、前記少なくとも1つのルックアップ・決定エンジンは、それぞれ、キー生成器および出力生成器を含む。前記キー生成器は、各入力トークンに対するルックアップキーを生成する。前記出力生成器は、前記ルックアップキーに関連づけられたルックアップ結果のコンテンツに基づいて前記入力トークンを変更する。
本発明の一実施形態による、ルックアップキーを生成し、トークンを修正するためのソフトウェア・デファインド・ネットワーク(SDN)エンジンのブロック図である。 本発明の一実施形態によるトークンのフォーマットである。 本発明の一実施形態によるテンプレートテーブルのブロック図である。 本発明の一実施形態によるキー生成器のブロック図である。 本発明の一実施形態によるキー生成のためのコピー命令のフォーマットである。 本発明の一実施形態によるキー生成のためのALU命令のフォーマットである。 本発明の一実施形態によるキー生成命令のソースを列挙したテーブルである。 本発明の一実施形態によるルックアップ結果収集器のブロック図である。 本発明の一実施形態による出力生成器のブロック図である。 本発明の一実施形態による出力生成のためのコピー命令のフォーマットである。 本発明の一実施形態による出力生成のためのALU命令のフォーマットである。 本発明の一実施形態による出力生成命令のソースを列挙したテーブルである。 本発明の一実施形態による出力生成命令の宛先を列挙したテーブルである。 本発明の一実施形態によるソフトウェア・デファインド・ネットワーク(SDN)システムのブロック図である。
上記は、以下の本発明の例示的な実施形態のさらに具体的な説明から明らかになるであろう。添付図面において、異なる図全体にわたり、同様の部分は同様の参照符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
以下の記載において、多くの詳細が説明を目的として述べられる。しかし、当業者ならば、本発明はこれらの特定の詳細を用いることなく実行可能であることを理解するであろう。このため、本発明は、図示された実施形態に限定されることを意図するものではなく、本明細書で説明される原理および特徴に合致する最大限の範囲に従う。
ソフトウェア・デファインド・ネットワーキング(SDN)システムにおいて、提案されるルックアップ・決定エンジン(LDE)は、対応するネットワークパケットをシステム内の他のコンポーネントが正確に処理および送信できるように、入力トークンに対するルックアップキーを生成し、ルックアップ結果に基づいて入力トークンを修正(変更)できる。SDNは1つ以上の装置において実現され、LDEはその装置のうちの1つに含まれる。キーの生成およびトークンの修正のための条件およびルールは、ソフトウェアによって完全にプログラム可能であり、LDEのために設定されたネットワーク機能およびプロトコルに基づく。LDEは、典型的には2つの主なブロック、すなわち、キー生成器および出力生成器を含む。名前の通り、キー生成器は各入力トークンに対するルックアップキーを生成し、出力生成器は出力トークンを生成する。出力トークンはルックアップ結果に基づいて入力トークンを修正したものである。キー生成器および出力生成器は、同様の設計アーキテクチャを有し、この設計アーキテクチャは、コントロールパスおよびデータパスを含む。コントロールパスは、その入力における特定のフィールドおよびビットが、設定プロトコルの条件を満たすか否かを検査する。コントロールパスは、検査結果に基づきそれに応じて、命令を生成する。データパスは、キー生成器でルックアップキーを生成する命令または出力生成器で出力トークンを生成する命令であって、コントロールパスが生成する全ての命令を実行する。キー生成および出力生成のための条件およびルールは、キー生成器および出力生成器のコントロールパスにおいて完全にプログラム可能である。
LDEはまた、入力トークンを一時的に格納するための入力FIFOと、ルックアップキーに対するルックアップ結果を収集するルックアップ結果収集器と、出力トークンを、同じLDEで多数の連続するルックアップが当該トークンについて要求される場合に、LDEに返送するためのループバックチェッカと、ループバックトークンを格納するためのループバックFIFOとを含む。ループバックパスは、典型的には入力パスよりも高い優先度を有し、デッドロックがないことを保証する。
キー生成器および出力生成器は、「ソフトウェア・デファインド・ネットワーク処理エンジンにおける並行かつ条件付きのデータ操作の方法および装置」と題されて出願された、参照により本明細書中に援用する米国特許出願に述べられているSDN処理エンジンと同様に構成される。
図1は、本発明の実施形態による、ルックアップキーを生成し、トークンを修正するソフトウェア・デファインド・ネットワーク(SDN)エンジン100のブロック図を示す。本発明のSDNエンジン100は、ルックアップ・決定エンジン(LDE)と呼ばれる。LDE100は、ルックアップキーを生成し、入力トークンのルックアップ結果およびコンテンツに基づいて入力トークンを修正する。ルックアップキーの生成および入力トークンの修正のための条件およびルールは、典型的にはユーザによってプログラム可能である。
LDE100は、パーサから入力トークンを受信できる。パーサは、典型的には各ネットワークパケットのヘッダをパースし(構文解析し)、各ネットワークパケットに対する入力トークンを出力する。入力トークンは、典型的には、LDE100が入力トークンを処理可能となるように予め定められたフォーマットを有する。入力トークンのフォーマットは、図2Aを参照して以下に詳細に説明する。LDE100はまた、多数のLDEが、多数のルックアップステップおよびトークン修正ステップを連続に行うためにチェーン状に結合される場合、先行のLDEから入力トークンを受信することもできる。
上流のパーサまたは上流のLDEからLDE100で受信される入力トークンは、まず入力FIFO105内部にバッファリングされる。入力トークンは、LDEが入力トークンを処理する準備ができるまで、入力FIFO105内部で待機する。入力FIFO105が満杯ならば、LDE100は、新しいトークンの送信を停止するよう、入力トークンの供給源(すなわち、上流のパーサまたは上流のLDE)に通知する。
各入力トークンにおけるフィールドの位置は、テーブル、すなわち、テンプレートルックアップブロック110からのルックアップによって特定される。入力トークンは、次いでキー生成器115に送信される。キー生成器115は、ルックアップキーを作成するために入力トークン内の特定のデータをピックアップする。キー生成器115の構成は、典型的にはユーザが定義し、ユーザがLDE100に行わせたいネットワーク機能およびプロトコルに依存する。
入力トークン毎のルックアップキーは、キー生成器115から出力され、リモート検索エンジン(図示せず)に送信される。リモート検索エンジンは、TCAMルックアップ、直接アクセスルックアップ、ハッシュに基づくルックアップ、および最長プレフィックス一致ルックアップのような多数の構成変更可能なルックアップ動作を行うことができる。リモート検索エンジンに送信される各ルックアップキーに対して、ルックアップ結果が、ルックアップ結果収集器120においてLDE100に返される。
各入力トークンに対するルックアップキーを生成しながら、キー生成器115はまた、当該入力トークンをルックアップ結果収集器120に伝送する。この入力トークンは、ルックアップ結果収集器120内部にバッファリングされる。入力トークンは、ルックアップ結果がリモート検索エンジンによって返されるまでルックアップ結果収集器120内部で待機する。ルックアップ結果が利用可能になると、入力トークンはルックアップ結果とともに出力生成器125に送信される。
入力トークンのルックアップ結果およびコンテンツに基づいて、出力生成器125は、入力トークンの1つまたは数個のフィールドを修正し、その後、その修正されたトークンを送信して出力する。キー生成器115と同様に、例えば、トークンの修正のための条件およびルールに関する出力生成器125の構成は、典型的にはユーザが定義し、ユーザがLDE100に行わせたいネットワーク機能およびプロトコルに依存する。
トークンの修正後、修正されたトークンは、ループバックチェッカ130に送信される。ループバックチェッカ130は、修正されたトークンが他のルックアップを行うために現在のLDEに返送されるべきか、関連するSDNシステム内の別のエンジンに送信されるべきかを判定する。このループバックチェックは、同じトークンのために1つのLDEに連続で多数のルックアップを行わせ得る設計選択事項であり、多数のエンジンを用いて同じことを行うよりも有利となる。この設計選択事項は、チップ領域の割当量のような制約のためにLDEの数が限られるシステムにおいて有用である。このLDEに返送されるトークンは、ループバックパス140経由でループバックFIFO135内部にバッファリングされる。ループバックパス140は、常に入力パス(例えば、入力FIFO105から)よりも高い優先度を有し、デッドロックを回避する。図1は、FIFOバッファを用いるものとして説明されたが、他のバッファタイプでもよい。
LDE100が各トークンのコンテンツを理解するように、トークンは、SDNシステムにおける全てのエンジンが理解する共通のフォーマットを有する。図2Aは、本発明の実施形態によるトークン200のフォーマットを示す。トークン200は、2つの主な部分、すなわち、共通部205および層部210を含む。
共通部205は、パーサによってトークンに格納された、対応するネットワークパケットの一般的な制御ビット220を含む。制御ビットは、これらに限定されないが、タイムスタンプ、連続番号、優先度、SDNシステムオンチップにおける次のエンジンアドレス、ソースポート、ネットワークパケットバイト数などのためのビットを含む。これらの一般的な制御フィールド220は、SDNシステム設計者のようなユーザが選択し、典型的には、SDNシステム内のエンジンがネットワークパケットを適切に操作するのに有用である。
トークンの層部210は、対応するネットワークパケットの全てのパースされたヘッダを含む。ネットワークにおいて、各ネットワークパケットは、イーサネット(登録商標)、MPLS、IP、TCP、HTTP、VLANなどの多数のヘッダをカプセル化することが多い。あるネットワークパケットがネットワーク上を進む間、このネットワークパケットは8以上の異なるヘッダを有するのが一般的である。SDNシステム内のエンジンがネットワークパケットを正確に処理するように、全てのネットワークパケットヘッダがSDNシステム内のパーサによってパースされる。特に、パーサは、これらのネットワークパケットヘッダをパースし、パケットヘッダのパースされた情報をトークンの層部210に格納する。パースされたネットワークパケットヘッダは、それぞれ、トークンの層部210内部に、対応する層225を有する。
トークン内の各層225は、2つのフィールド、すなわち、「コントロール」フィールド225aおよび「Data」フィールド225bを有する。「コントロール」フィールド225aは、優先度およびプロトコルの種類などの対応するパースされたパケットヘッダの主制御ビットを含み、この主制御ビットは、SDNシステム内のエンジンが層部210内のネットワークパケットヘッダを適切に操作できるようにパーサによって層225内に埋め込まれる。「データ」フィールド225bは、対応するパースされたネットワークパケットヘッダの情報の残りを含む。
各ネットワークパケットは、異なるサイズを有する多数のヘッダを含むことができるので、各トークン内部の層部210も、異なるサイズを有する多数の層を含む。層225の数とそれらのサイズをトークン内部のそれらの位置とともに特定するために、トークンの共通部205内部の「テンプレートID」フィールド215を図1のLDE100のようなエンジンが用いる。「テンプレートID」フィールド215は、対応するネットワークパケットをパースする時にパーサによって共通部205に予め埋め込まれる。LDE100は、「テンプレートID」フィールド215の値を、図1のテンプレートルックアップ110である図2Bのテンプレートテーブル250へのルックアップポインタとして用いる。
テンプレートテーブル250は、図2Bに示すように、「テンプレートID」フィールド215の値を受信し、層部210の中に格納された層の数と、トークン内のこれらの層のオフセットとを返す。オフセットは、トークンの内部の層225の位置を提供するので、層225の順序は、各ネットワークパケットのヘッダの順序に必ずしも対応する必要はないことを理解されたい。
さらに、テンプレートテーブル250はまた、各入力トークンに対する追加的な制御ビットであるメタデータビットを、その入力トークンに対して返す。テンプレートテーブル250を用いると、有利なことに、各トークンのサイズを小さくし、そのため、ハードウェアコストを低減する。その理由は、メタデータビットおよび層のオフセットなどの情報を、トークン自体によって運ぶのではなくテンプレートテーブル250に格納できるからである。テンプレートテーブル250の構成は、典型的にはユーザが定義し、SDNシステムにおけるパーサおよびエンジンがサポートするネットワーク機能およびネットワークパケットヘッダに依存する。
テンプレートテーブル250が返す、各入力トークンおよびその対応するテンプレート情報は、結合されて、ルックアップキーを生成するために図1のテンプレートルックアップ110からキー生成器115に送信される。図3は、本発明の実施形態によるキー生成器300のブロック図を示す。いくつかの実施形態では、図1のキー生成器115は、キー生成器300と同様に構成される。最上位でみると、キー生成器300は、2つの論理パス、すなわち、コントロールパス305およびデータパス310に、分けられる。入力トークンおよびテンプレート情報は、結合されて、コントロールパス305およびデータパス310を通ってキー生成器300内を流される。コントロールパス305は、ルックアップキーを生成するためにデータパス310によって後で実行される命令を生成することを担う。
キー生成器コントロールパス(KGCP)305は、4つのブロック、すなわち、制御ビット抽出器(CBE)315、MUX/CMPコーン(MCC)320、MUX/LUT論理コーン(MLLC)325、およびキー生成命令テーブル(KGIT)330を含む。
KGCP305内のCBE315は、入力トークン内にカプセル化された主なネットワーク機能を典型的には含む入力トークンから上位ビットを抽出する。入力トークンは、図2Aの共通部205内の特定ビットおよび図2Aの層部210内の層225それぞれの全制御ビット225aを含む。トークンの共通部205から抽出されるビットの位置は、典型的には、ソフトウェアによって再構成可能である。さらに、CBE315はまた、テンプレートテーブル250が返すテンプレートルックアップ結果の全てのメタデータビットを抽出する。
KGCP305内のMCC320は、複数の構成変更可能なMUX/CMPセルを並列に含む。各MUX/CMPセルは、トークン内の2つの任意のワードを比較する。これらの2つのワードの位置は、典型的にはソフトウェアによって構成変更可能である。各MUX/CMPセルはまた、1つのワードを一定値と比較できる。いくつかの実施形態では、3つの比較動作、すなわち、等しい(==)、より大きい(>)、およびより小さい(<)がサポートされる。選択された各ワードのビット幅は、典型的には16または32ビットであるが、異なるサイズも可能である。KGCP305のMCC320内のMUX/CMPセルの数は、典型的には、8から16であるが、MCC320内のMUX/CMPセルの数は、その数が入力トークンの層部に格納されたトークンの層の最大数未満でない限りにおいて、異なるものであってもよい。
CBE315およびMCC320の全ての出力ビットが結合されて、MLLC325に送信される。KGCP305内のMLLC325は、典型的には複数のステージを有する。各ステージは、複数のMUX/LUTセルを並列に含む。最初のステージの入力ビットは、CBE315およびMCC320の結合された出力ビットである。ステージiの入力ビットは、ステージi−1のすべての出力ビットである。最後のステージの出力ビットは、KGIT330を読み取るためのインデックスを形成する。
いくつかの実施形態では、MUX/LUTセルは、6つのマルチプレクサを含み、これら6つのマルチプレクサはその入力ビットから6つの任意のビットを選択する。これらの6つの選択されたビットの位置は、典型的には、ソフトウェアによって構成変更可能である。これらの6つの選択されたビットは、それぞれ、1つの1ビットの出力を返して、64ビットのルックアップテーブルへのポインタを形成する。各MUX/LUTセルの設計は、有利なことに、ユーザがその入力ビットからの6つの任意のビットに任意の論理式を適用することを可能にする。
MLLC325は複数のステージを有し、各ステージは複数のMUX/LUTセルを並列に有するので、ユーザは、ユーザが図1のLDE100にサポートさせたいネットワーク機能およびプロトコルに依存する適切なルックアップキーを生成するようにトークンをチェックするための数個の複合された、式およびルールを適用するようにMLLC325をプログラムできる。MLLC325は、典型的には、3つまたは4つのステージを有するが、ステージはこれよりも多くてもまたは少なくてもよい。MLLC325内の最後のステージを除く各ステージは、典型的には、32から64のMUX/LUTセルを有する。最後のステージにおけるMUX/LUTセルの数は、KGIT330に入る全てのインデックスのビット数に等しい。
MLLC325の出力ビットは、KGIT330を読み取るためのインデックスポインタを作成する。キーのサイズに応じて、KGCP305は、1つまたは複数のテーブルを並列に有することができる。各テーブルエントリは、複数の命令を含む。各入力トークンに対してKGIT330が返す命令の数は、テーブルエントリ毎の命令の数を乗じたテーブル数に等しい。キーのサイズがLバイトであり、各命令は最大Cバイトの操作を可能とすると仮定する。命令テーブルが返す命令の数は、L/Cに少なくとも等しい。
入力トークンおよびテンプレート情報の結合されたデータがコントロールパス305をフローする(流れる)間、当該結合されたデータもデータパス310をフローする(流れる)。キー生成器データパス(KGDP)310は、2つのブロック、すなわち、遅延整合キュー335およびキー生成命令実行ブロック340を含む。
上記結合されたデータは遅延整合キュー335内部にバッファリングされる。遅延整合キュー335は、FIFOまたはシフトレジスタであってもよい。遅延整合キュー335は、図1のLDE100のようなLDEが最大限のスループットで動作できるように、KGCP305の遅延に等しいバッファ深さを有する。各トークンのための命令がKGCP305によって生成されると、対応するトークンが、遅延整合キュー335から取り出され、キー生成命令実行ブロック340に送信される。キー生成命令実行ブロック340は、命令を実行し、ルックアップキーを構築するためのソースデータとして入力トークンを用いる。いくつかの実施形態では、この出力ルックアップキーを作成するための2種類の命令、すなわち、コピー命令およびALU命令が、サポートされる。
図4Aは本発明の実施形態によるキー生成のためのコピー命令400のフォーマットを示す。コピー命令400は、出力キーにおける特定の位置にソースからのデータをコピーすることを可能にする。「Src_ID(ソースID)」フィールド405は、最大Cバイトをコピーする元であるソースデータを指し示す。各コピー命令のためのCバイトの最大数は、図1のLDE100のようなLDEのシリコン領域の割当量を含む設計選択事項に基づいて選択される。KGDP310の全てのソースデータが、図4Cに示すテーブルに列挙される。ルックアップキーを作成するためのソースデータは、トークンの層、入力トークンの共通部、および当該入力トークンに関連づけられたテンプレート情報内のメタデータフィールドの全てである。
「Src_ByteOffset」フィールド410は、選択されたソースデータにおける開始バイト位置を示す。Cバイトがコピーされるのはその開始バイト位置からである。場合によっては、ユーザは、バイトではなくビットをコピーすることまたはCバイト未満をコピーすることを望むであろう。これらの場合において、「BitMask」フィールド415を用いてコピーされるバイトをマスクする。また、場合によっては、ユーザは、ソースデータからではなく、ルックアップキーへ一定値をコピーすることを望むであろう。これらの場合において、「IsConst」フィールド420が設定され、「BitMask」フィールド415を、当該一定値を含むように用いる。最終的に、「Dst_ByteOffset」フィールド425は、コピーされマスクされたバイトまたは一定値が貼り付けられる(ペーストされる)出力キーにおける位置を指し示す。
図4Bは、本発明の実施形態によるキー生成のためのALU命令430のフォーマットを示す。各ALU命令400が、算術論理演算ユニット(ALU)モジュールの2つのオペランドのために一定値をコピーすることまたはソースデータからコピーすることを可能にすることを以外は、ALU命令430におけるフィールド440〜475の意味は、コピー命令400における意味と同じである。ALU演算は、少なくとも以下の演算、すなわち、加算(+)、減算(−)、ビット単位のAND(&)、ビット単位のOR(|)、ビット単位のXOR(^)、ビット単位の左シフト(<<)、およびビット単位の右シフト(>>)、をサポートする「OpCode」フィールド435によって選択される。ALUの結果は、「Dst_ByteOffset」フィールド480によって特定される位置で出力キーに貼り付けられる。
ALU命令毎のコピーされるバイトの最大数およびALU演算のビット幅は、設計選択事項に基づいて選択される。コピーされるバイトの数は、典型的には、4バイトから8バイトであり、ALU演算のサイズは、典型的には、16ビットまたは32ビットである。しかし、コピーされるバイトの数およびALU演算のサイズは、異なるものであってもよい。
各入力トークンに対してルックアップキーを作成するために、KGCP305が生成する全ての命令が、KGDP310によって並行に実行される。ルックアップキーは、全ての命令が実行される前に全てゼロで初期化される。ルックアップキーは次いで全ての命令によって修正され、その後リモート検索エンジンに送信される。リモート検索エンジンは、後に各ルックアップキーに対するルックアップ結果を返す。
KGDP310が命令を実行する間、KGDP310はまた、元の入力トークンおよび対応するテンプレート情報を図1のルックアップ結果収集器120に伝送する。図5は、本発明の実施形態によるルックアップ結果収集器500のブロック図を示す。いくつかの実施形態では、図1のルックアップ結果収集器120は、ルックアップ結果収集器500と同様に構成される。リモート検索エンジンによって返されるルックアップ結果を待つ間、入力トークンおよび対応するテンプレート情報を含むすべての入力データがトークンバッファ515内部にバッファリングされる。トークンバッファ515の深さは、図1のLDE100のようなLDEが最大限のスループットで動作できるように、リモート検索エンジンの遅延と少なくとも等しい。
対応するルックアップキーについてリモート検索エンジンが返すルックアップ結果は、ルックアップ結果バッファ520内部にバッファリングされる。ルックアップ結果収集器500は、ルックアップ結果バッファ520をチェックして、ルックアップ結果がトークンバッファ515内部の入力トークンにとって利用可能であるか否かを判定する。ルックアップ結果収集器500は、入力トークンをそのテンプレート情報および対応するルックアップ結果とともにバッファ515,520から取得し、データを結合し、結合したデータを図1の出力生成器125に送信する。
図6は、本発明の実施形態による出力生成器600のブロック図を示す。いくつかの実施形態では、図1の出力生成器125は、出力生成器600と同様に構成される。出力生成器600およびキー生成器300の設計は同様のものである。キー生成器設計および出力生成器設計の両方における類似性により、有利なことに、多くの設計の再利用が可能になり、それによってLDEのための開発および検証コストが効果的に低減される。
最上位でみると、出力生成器600も、2つの論理パス、すなわち、コントロールパス605およびデータパス610に、分けられる。出力生成器600とキー生成器300との間のいくつかの違いには、入力データおよび出力データがある。出力生成器600の入力データは、元の入力トークン、それに対応するテンプレート情報、および対応するルックアップ結果である。出力データは、ルックアップ結果および元の入力トークン自体のコンテンツに基づいて修正されるトークンである。
出力生成器コントロールパス(OGCP)605は、4つのブロック、すなわち、制御ビット抽出器(CBE)615、MUX/CMPコーン(MCC)620、MUX/LUT論理コーン(MLLC)625、および出力生成命令テーブル(OGIT)630を含む。
出力生成器600の入力は、図3のキー生成器300の入力よりも多い入力データを有するので、出力生成器600におけるブロックは、キー生成器300における対応するブロックよりも大きい。特に、入力トークン制御ビットおよびテンプレートメタデータビットの抽出に加えて、OGCP605内のCBE615はルックアップ結果の内部の制御ビットも抽出する。したがって、ルックアップ結果は、好ましくは、リモート検索エンジンおよび図1のLDE100のようなLDEの両方が理解するフォーマットを有する。
OGCP605内のMCC620は、典型的には、図3のKGCP305内のMCC320よりも多いMUX/CMPセルを有する。OGCP605のMCC620内のMUX/CMPセルの数は、典型的には、16から32であるが、MCC620内のMUX/CMPセルの数は、(ルックアップ結果からのデータワードの追加的な比較をサポートするために、)トークンの層の数プラス1未満でない限りにおいて、異なるものであってもよい。
OGCP605内のMLLC625は、典型的には、図3のKGCP305内のMLLC325よりも多いステージを有し、ルックアップ結果からの追加的な制御ビットがあるためにさらに複合された、チェック条件およびルールをサポートする。OGCP605におけるMLLC625内のステージの数は、典型的には、5または6ステージであるが、これよりも多いかまたはこれより少ないステージでもよい。
OGCP605は、典型的には、図3のKGCP305よりも多い命令テーブルを有する。OGCP605が返す命令の数は、出力トークン内の全てのフィールドを操作するのに十分である必要がある。トークンのサイズがMバイトであり、各命令が最大Cバイトの操作を可能にすると仮定する。命令テーブルが返す命令の数は、少なくともM/Cに等しい。
いくつかの実施形態では、出力トークンを生成するための2種類の命令、すなわち、コピー命令およびALU命令がサポートされる。図7Aおよび図7Bは、本発明の実施形態による、出力生成のためのコピー命令700のフォーマットおよびALU命令740のフォーマットを、それぞれ示す。コピー命令700およびALU命令740がより多くのソースデータおよび宛先を有すること以外は、出力生成のためのコピー命令700のフォーマットおよびALU命令740のフォーマットは、キー生成のためのコピー命令400(図4A)のフォーマットおよびALU命令430(図4B)のフォーマットと同様である。
コピー命令700の「Src_ID」フィールド705、「Src_ByteOffset」フィールド710、「BitMask」フィールド715、「IsConst」フィールド720、および「Dst_ByteOffset」フィールド730は、コピー命令400の「Src_ID」フィールド405、「Src_ByteOffset」フィールド410、「BitMask」フィールド415、「IsConst」フィールド420、および「Dst_ByteOffset」フィールド425とそれぞれ同様に構成される。
ALU命令740の「OpCode」フィールド745、「SrcA_ID」フィールド750、「SrcA_ByteOffset」フィールド755、「SrcA_BitMask」フィールド760、「SrcA_IsConst」フィールド765、「SrcB_ID」フィールド770、「SrcB_ByteOffset」フィールド775、「SrcB_BitMask」フィールド780、「SrcB_IsConst」フィールド785、および「Dst_ByteOffset」フィールド795は、ALU命令430の「OpCode」フィールド435、「SrcA_ID」フィールド440、「SrcA_ByteOffset」フィールド445、「SrcA_BitMask」フィールド450、「SrcA_IsConst」フィールド455、「SrcB_ID」フィールド460、「SrcB_ByteOffset」フィールド465、「SrcB_BitMask」フィールド470、「SrcB_IsConst」フィールド475、および「Dst_ByteOffset」フィールド480とそれぞれ同様に構成される。
出力生成器データパス(OGDP)610の命令のための全てのソースデータが、図7Cに示すテーブルに列挙される。出力トークンを生成するためのソースデータは、入力トークンの全ての層、入力トークンの共通部、入力トークンに関連づけられたテンプレート情報内のメタデータフィールド、および入力トークンのルックアップ結果である。
OGDP610の命令のための全ての宛先IDが、図7Dに示すテーブルに列挙される。命令内の「Dst_ID(宛先ID)」フィールド725、790は、ソースからのコピーされたデータが貼り付けられることになる出力トークンにおける層または共通部のうちのどの宛先を選択するかを示す。データを貼り付けるための選択された宛先における位置は、キー生成命令におけるのと同様の「Dst_ByteOffset」フィールド730、795によって与えられる。
OGCP605が生成する全ての命令は、新しい出力トークンを生成するために、OGDP610によって並行に実行される。出力トークンは、全ての命令が実行される前に入力トークンと同じコンテンツを有するように初期化される。すべての命令の実行が終わると、出力トークンは、入力トークンを修正したものとなっている。
図1のLDE100は、高い柔軟性を持ち、完全にプログラム可能であり、プロトコルに依存しないため、有利なことに、ユーザがキー生成器115および出力生成器125のコントロールパスを適切に構成することによって、種々のネットワーク機能およびプロトコルを適用することを可能にする。例えば、LDE100は、ルータとしてのIPルックアップ、スイッチとしてのイーサネット(登録商標)L2ルックアップもしくはVLANルックアップ、ファイアウォールとしてのネットワーク攻撃検出ルックアップ、またはネットワークアドレストランスレータとしてのアドレスから名前へのルックアップを行うためのルックアップキーを生成するように構成され得る。ルックアップ結果に基づいて、トークンが適切に修正される。
修正されたトークンは、次いでループバックチェッカ130によってチェックされて、修正されたトークンが他のルックアップを行うために現在のLDEに返送されるべきか、SDNシステム内の他のエンジンに送信されるべきかを調べられる。ループバックパス140をサポートすることは、有利なことに、同じエンジンで多数のルックアップを行うことを可能にする。ループバックチェッカ130は、修正されたトークンの共通部の内部の「Dst_EngineAddress」フィールドを、現在のエンジンのアドレスと比較する。これらが同じであれば、修正されたトークンが次いで、図1に示すループバックパス140経由で現在のエンジンに返送される。図1において、ループバックパス140は、入力パス(例えば、入力FIFO105から)よりも高い優先度を有して、デッドロックを回避する。
最終の出力トークンは、必要であれば、さらなるルックアップを行うために他のエンジンに送信される、または、更新読取り書込み(URW)ブロックに送信される。トークン内の修正されたコンテンツに基づきそれに応じて、URWブロックは、(元のトークンがパースされた元である)対応するネットワークパケットヘッダを修正することになる。これらの修正されたネットワークパケットヘッダは、次いで送信キューブロックによってその対応するペイロードと組み合わされることとなり、LDEのために設定されたネットワーク機能およびプロトコルを反映する最終の修正された出力ネットワークパケットを形成する。修正されたネットワークパケットは、次いで、さらなる処理のためにSDNシステム内の他のコンポーネントに送信される、または、ネットワーク内の他の装置に転送される。
図8は、本発明の実施形態によるソフトウェア・デファインド・ネットワーク(SDN)システム800のブロック図を示す。システム800は、パーサ805と、少なくとも1つのLDE810と、検索エンジン815と、更新読取り書込み(URW)ブロック820と、パケットメモリおよび送信キュー(TxQ)ブロック825とを含む。ネットワークパケットは、パーサ805で受信される。パーサ805は、ネットワークパケットのヘッダをパースし、制御ビットおよびパースしたヘッダをトークン内に格納する。パーサ805は、元のパケットペイロードをパケットメモリおよびTxQ825に送信するとともに、トークンを1つまたは複数のLDE810に送信し、ネットワークパケットの元のパケットヘッダをURW820に送信する。
トークンは、典型的には、LDE810によって理解されるフォーマットを有する。LDE810のうちの1つが、パーサ805からトークンを受信する。上述のように、各LDE810は、ルックアップキーを生成し、このルックアップキーを、後にルックアップ結果を返すリモート検索エンジン815に送信する。検索エンジン815からのルックアップ結果の受信の後、LDE810は、ルックアップ結果およびトークンのコンテンツに基づいてトークンを修正する。修正されたトークンの「Dst_EngineAddress」フィールドに基づいて、必要に応じて、修正されたトークンは複数のLDE810の中の他のLDEに送信され得るか、またはさらなるルックアップを行うために同じLDEに送信され得る。LDE810による全ての必要なルックアップおよびトークン修正の完了の後、最終的な出力トークンがURWブロック820に送信される。URWブロック820は、修正されたトークンのコンテンツに基づいて対応するパケットヘッダを修正し、これによって、修正されたパケットヘッダは、LDE810のために構成されたネットワーク機能を適切に反映する。修正されたパケットヘッダは、次いでパケットメモリおよびTxQブロック825に送信される。パケットメモリおよびTxQブロック825は、元のパケットペイロードと修正されたパケットヘッダとを組み合わせて、最終的な出力ネットワークパケットを形成する。最終的な出力ネットワークパケットは、必要に応じて、次いでSDNシステム内の他のコンポーネントにさらなる処理のために送信されるか、ネットワーク内の他の装置に転送されるか、または、さらなるルックアップを可能にするためにパーサに返送(ループバック)されてもよい。
本発明の実施形態は、入力トークンに対するルックアップキーを生成し、ルックアップ結果のコンテンツに基づいて入力トークンを修正するためのルックアップ・決定エンジン(LDE)に関する。入力トークンは、パーサによってネットワークパケットヘッダからパースされ、トークンは次いでLDEによって修正される。LDEによって修正されたトークンは、対応するネットワークパケットが、ソフトウェア・デファインド・ネットワーキング(SDN)システム内の他のコンポーネントによってどのように修正されるまたは送られるかを導く。LDEの設計は、柔軟性が高く、プロトコルに依存しない。ルックアップキーの生成およびトークンの修正のための条件およびルールは、LDEがSDNシステム内の様々な種類の再構成可能なネットワーク機能およびプロトコルを適用できる、完全にプログラム可能である。
当業者ならば、他の使用法や利点もまた存在することを理解するであろう。本発明を様々な特定の詳細を参照に説明したが、当業者ならば、本発明の精神から逸脱することなく本発明が他の特定の形式で実施され得ることを理解するであろう。したがって、当業者ならば、本発明が上述の例示の詳細によって限定されず、添付の請求項によって定義されることを理解するであろう。

Claims (40)

  1. ソフトウェア・デファインド・ネットワーク(SDN)システムにおいてパケットの変更および転送のためのルックアップを生成し決定を行うエンジン(LDE)を含む装置であって、
    前記LDEは、
    各入力トークンに対するルックアップキーを生成するキー生成器と、
    前記ルックアップキーに対応するルックアップ結果のコンテンツに基づいて前記入力トークンを変更することによって出力トークンを生成する出力生成器とを備えた、装置。
  2. 請求項1に記載の装置において、
    前記LDEが、さらに、
    入力トークンが前記LDEで処理される前に、前記入力トークンを一時的に格納する入力バッファと、
    前記入力トークンそれぞれのフィールドの位置を特定するテンプレートテーブルと、
    前記入力トークンを前記ルックアップ結果に結合し、前記ルックアップ結果と結合された前記入力トークンを前記出力生成器に送信するルックアップ結果収集器と、
    前記出力トークンが、このLDEに返送されるものか、SDNシステム内の他のエンジンに返送されるものかを判定するループバックチェッカと、
    ループバックトークンを格納するループバックバッファとを備えた、装置。
  3. 請求項2に記載の装置において、前記テンプレートテーブルへのテンプレートルックアップポインタが、前記入力トークンの内部の「テンプレートID」フィールドの値である、装置。
  4. 請求項3に記載の装置において、前記テンプレートテーブルのテンプレートルックアップ結果が、前記入力トークン内のトークン層の数およびこれらトークン層のオフセット、ならびに前記入力トークンの内部では入手できない、追加の制御ビットであるメタデータビットの情報を含む、装置。
  5. 請求項2に記載の装置において、
    前記ルックアップ結果収集器が、トークンバッファおよびルックアップ結果バッファを含み、
    前記トークンバッファおよび前記ルックアップ結果バッファそれぞれの深さが、前記LDEが最大限のスループットで動作することを保証するように、リモート検索エンジンの遅延に少なくとも等しい、装置。
  6. 請求項2に記載の装置において、前記ループバックチェッカによる前記判定が、前記出力トークンの内の「Dst_EngineAddress」フィールドと前記LDEのアドレスとの比較に基づく、装置。
  7. 請求項2に記載の装置において、デッドロックを回避するにように、前記ループバックバッファの内部のトークンが、前記入力バッファ内のトークンよりも高い優先度を有する、装置。
  8. 請求項2に記載の装置において、前記入力バッファおよび前記ループバックバッファがFIFOバッファである、装置。
  9. 請求項1に記載の装置において、
    前記キー生成器が、
    命令を生成するコントロールパスと、
    前記コントロールパスで生成される命令を実行するデータパスとを含む、装置。
  10. 請求項9に記載の装置において、
    前記コントロールパスが、
    前記入力トークンから制御ビット、かつ、対応するテンプレート情報からメタデータビットを抽出する制御ビット抽出器と、
    前記入力トークンおよび対応するテンプレートメタデータ内の多ビットワードを比較するMUX/CMPコーンと、
    前記制御ビットおよび前記MUX/CMPコーンの出力が、前記LDEのために設定された特定のネットワーク機能およびプロトコルの条件およびルールを満たすか否かをチェックするMUX/LUT論理コーンと、
    前記MUX/LUT論理コーンの出力に基づいて前記命令を生成する複数の命令テーブルとを含む、装置。
  11. 請求項10に記載の装置において、前記制御ビット抽出器が、前記制御ビットおよび前記メタデータビットのうちのどのビットを抽出するかをユーザが選択できるように、ソフトウェアによって再構成可能である、
    装置。
  12. 請求項10に記載の装置において、
    前記MUX/CMPコーンが、複数のMUX/CMPセルを並列に含み、
    前記MUX/CMPセルが、それぞれ、
    前記入力トークンおよび前記対応するテンプレートメタデータから2つのワードを選択する2つの再構成可能なマルチプレクサと、
    一致/等しい(==)、より大きい(>)、およびより小さい(<)を含む少なくとも3つの演算をサポートする再構成可能な比較器とを含む、装置。
  13. 請求項12に記載の装置において、前記MUX/CMPセルが、それぞれ、前記入力トークンからのひとつのワードと、前記対応するテンプレートメタデータの一定値とを比較する、装置。
  14. 請求項10に記載の装置において、
    前記MUX/LUT論理コーンは、複数のステージを含み、これらステージは、それぞれ、複数のMUX/LUTセルを並列に含む、装置。
  15. 請求項14に記載の装置において、
    前記MUX/LUTセルは、それぞれ、
    当該MUX/LUTセルの入力ビットから6つのビットを選択する6つの再構成可能なマルチプレクサと、
    前記6つの再構成可能なマルチプレクサの6つの出力ビットによってインデックスされた、64ビットを含む再構成可能なルックアップテーブル(LUT)とを含む、装置。
  16. 請求項10に記載の装置において、前記コントロールパスによって返される複数の命令が、前記ルックアップキーを生成できる、装置。
  17. 請求項16に記載の装置において、コピー命令およびALU命令からなる2種類の命令がサポートされる、装置。
  18. 請求項17に記載の装置において、
    前記コピー命令が、ソースからのデータまたは一定値を出力キーにおけるある位置にコピーし、
    前記ソースが前記入力トークンおよび前記対応するテンプレートメタデータのうちの1つである、装置。
  19. 請求項17に記載の装置において、
    前記ALU命令が、2つのオペランドのALU結果を出力キーにおけるある位置にコピーし、
    前記2つのオペランドが、入力ソースから取得されるものであり、
    前記入力ソースが、前記入力トークンおよび前記対応するテンプレートメタデータのうちの1つである、装置。
  20. 請求項17に記載の装置において、
    前記ALU命令が、一定値と1つのオペランドのALU結果を出力キーにおけるある位置にコピーし、
    前記オペランドが、入力ソースから出力キーにおけるある位置に取得されるものであり、
    前記入力ソースが、前記入力トークンおよび前記対応するテンプレートメタデータのうちの1つである、装置。
  21. 請求項17に記載の装置において、前記ALU命令のためのALU演算が、加算(+)、減算(−)、ビット単位のAND(&)、ビット単位のOR(|)、ビット単位のXOR(^)、ビット単位の左シフト(<<)、およびビット単位の右シフト(>>)のうちの1つである、装置。
  22. 請求項9に記載の装置において、
    前記データパスが、
    前記コントロールパスが前記命令を生成するのを待つ間に前記入力トークンをバッファリングする遅延整合キューと、
    前記ルックアップキーを生成するために、前記コントロールパスによって生成される前記命令の全てを並行に実行する命令実行ブロックとを含む、装置。
  23. 請求項22に記載の装置において、前記キー生成器が最大限のスループットで動作できるように、前記遅延整合キューが、前記コントロールパスの遅延に等しい深さを有するFIFOバッファまたはシフトレジスタである、装置。
  24. 請求項22に記載の装置において、前記ルックアップキーが、全ての命令が実行される前に、全てゼロで初期化される、
    装置。
  25. 請求項1に記載の装置において、前記出力生成器が、前記キー生成器と類似の設計を有し、前記キー生成器の入力データおよび出力データとは異なる入力データおよび出力データを有する、装置。
  26. 請求項25に記載の装置において、前記出力生成器の前記入力データが、前記入力トークン、対応するテンプレート情報からのメタデータビット、および前記ルックアップ結果を含む、装置。
  27. 請求項25に記載の装置において、前記出力生成器の前記出力データが、前記入力トークンを変更したものである、装置。
  28. 請求項25に記載の装置において、
    前記出力生成器が、前記キー生成器におけるMUX/CMPコーンよりも多いMUX/CMPセルを有するMUX/CMPコーンを含み、
    前記出力生成器が、前記キー生成器におけるMUX/LUT論理コーンよりも多いステージを有するMUX/LUT論理コーンを含む、装置。
  29. 請求項25に記載の装置において、前記出力トークンが、全ての命令が実行される前に、前記入力トークンと同じコンテンツを有するように初期化される、装置。
  30. 請求項1に記載の装置において、前記キー生成器および前記出力生成器の両方のコントロールパスが、異なるネットワーク機能およびプロトコルをサポートするためにユーザが前記LDEを設定できるように、プログラム可能である、
    装置。
  31. 請求項1に記載の装置において、前記出力トークンのコンテンツが、SDNシステム内の他のコンポーネントによって用いられて、対応するネットワークパケットが適切に変更および転送される、
    装置。
  32. ソフトウェア・デファインド・ネットワーク(SDN)エンジンにおいてパケットの変更および転送のためにルックアップを生成し決定を行う方法であって、
    入力バッファに入力トークンをバッファリングすることと、
    前記入力トークンの内部で入手できないメタデータビットを、前記入力トークンそれぞれについて取り出すことと、
    前記入力トークンおよび前記メタデータビットそれぞれの少なくとも特定のビットに基づいて前記入力トークンそれぞれに対するルックアップキーを生成することと、
    前記ルックアップキーに基づいたルックアップ結果を受信することと、
    前記ルックアップ結果および前記入力トークンのコンテンツに基づいて前記入力トークン内の1つ以上のフィールドを変更することと、
    前記変更されたトークンがこのエンジンに返送されるものか、SDNシステム内の他のエンジンに返送されるものかを判定することと、
    前記判定に基づいて、ループバックバッファに前記変更したトークンをバッファリングすることであって、前記ループバックバッファ内のトークンが、前記入力バッファ内のトークンよりも高い優先度を有する、バッファリングを行うこととを備える、方法。
  33. 請求項32に記載の方法において、トークンのデータフォーマットが、共通部および層部を含む、方法。
  34. 請求項33に記載の方法において、
    前記共通部が、対応するネットワークパケットの包括的な制御ビットと、テンプレートテーブルへのルックアップポインタの値とを含み、
    前記ルックアップポインタの値が、前記トークンの「テンプレートID」フィールド内に存在する、方法。
  35. 請求項34に記載の方法において、さらに、
    前記層部における層の数と前記トークンにおける前記層の各オフセットとを取り出すことを備えた、方法。
  36. 請求項33に記載の方法において、
    前記層部が、対応するネットワークパケットの全てのパースされたパケットヘッダの情報を含み、
    前記パースされたパケットヘッダが、それぞれ、前記層部における「コントロール」フィールドおよび「データ」フィールドに関連づけられる、方法。
  37. 請求項32に記載の方法において、前記入力バッファおよび前記ループバックバッファが、FIFOバッファである、方法。
  38. ソフトウェア・デファインド・ネットワーク(SDN)システムであって、
    入来ネットワークパケットを受信し、これら入来ネットワークパケットのヘッダをパースし、トークンを出力するパーサと、
    各トークンに対するルックアップキーを生成し、1つ以上のルックアップ結果に基づいて前記トークンを変更する、少なくとも1つのルックアップ・決定エンジン(LDE)と、
    各LDEによって送信された各ルックアップキーに対するルックアップ結果を返す検索エンジンと、
    前記変更されたトークンに基づいて対応する前記ネットワークパケットの前記パケットヘッダを変更する更新読取り書込み(URW)ブロックと、
    前記変更されたパケットヘッダと対応する前記パケットの元のペイロードとを出力のために組み合わせる、パケットメモリ・送信キューブロックとを備えた、ソフトウェア・デファインド・ネットワーク(SDN)システム。
  39. 請求項38に記載のソフトウェア・デファインド・ネットワーク(SDN)システムにおいて、前記少なくとも1つのルックアップ・決定エンジンは、複数のルックアップを、連続して行うために直列に、または、同時に行うために並列に連結された複数のルックアップ・決定エンジンを含む、ソフトウェア・デファインド・ネットワーク(SDN)システム。
  40. 請求項38に記載のソフトウェア・デファインド・ネットワーク(SDN)システムにおいて、
    前記少なくとも1つのルックアップ・決定エンジンが、
    前記トークンに対するルックアップキーを生成するキー生成器と、
    前記ルックアップキーに関連づけられたルックアップ結果のコンテンツに基づいて前記変更されたトークンを出力する、出力生成器とを含む、ソフトウェア・デファインド・ネットワーク(SDN)システム。
JP2014267001A 2013-12-30 2014-12-29 ソフトウェア・デファインド・ネットワークエンジンにおいてパケット修正・転送のためにルックアップを生成し決定を行う装置および方法 Active JP6537824B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/144,270 2013-12-30
US14/144,270 US9379963B2 (en) 2013-12-30 2013-12-30 Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine

Publications (2)

Publication Number Publication Date
JP2015165650A true JP2015165650A (ja) 2015-09-17
JP6537824B2 JP6537824B2 (ja) 2019-07-03

Family

ID=53482048

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014267001A Active JP6537824B2 (ja) 2013-12-30 2014-12-29 ソフトウェア・デファインド・ネットワークエンジンにおいてパケット修正・転送のためにルックアップを生成し決定を行う装置および方法

Country Status (6)

Country Link
US (5) US9379963B2 (ja)
JP (1) JP6537824B2 (ja)
KR (2) KR102314619B1 (ja)
CN (1) CN104881422B (ja)
HK (1) HK1210844A1 (ja)
TW (1) TWI661695B (ja)

Families Citing this family (21)

* 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
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9413357B2 (en) 2014-06-11 2016-08-09 Cavium, Inc. Hierarchical statistically multiplexed counters and a method thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9813327B2 (en) 2014-09-23 2017-11-07 Cavium, Inc. Hierarchical hardware linked list approach for multicast replication engine in a network ASIC
US9485179B2 (en) * 2014-11-13 2016-11-01 Cavium, Inc. Apparatus and method for scalable and flexible table search in a network switch
US10003676B2 (en) * 2015-02-20 2018-06-19 Cavium, Inc. Method and apparatus for generating parallel lookup requests utilizing a super key
US10616144B2 (en) 2015-03-30 2020-04-07 Cavium, Llc Packet processing system, method and device having reduced static power consumption
KR102284953B1 (ko) * 2016-01-13 2021-08-03 삼성전자 주식회사 소프트웨어 정의 네트워크 기반 이동통신 시스템에서 제어 메시지 전송 방법 및 장치
TWI610196B (zh) * 2016-12-05 2018-01-01 財團法人資訊工業策進會 網路攻擊模式之判斷裝置、判斷方法及其電腦程式產品
US10997502B1 (en) 2017-04-13 2021-05-04 Cadence Design Systems, Inc. Complexity optimization of trainable networks
US10728140B2 (en) 2017-12-18 2020-07-28 At&T Intellectual Property I, L.P. Deadlock-free traffic rerouting in software-deifned networking networks
CN108549684B (zh) * 2018-04-04 2020-08-18 西安交通大学 一种sdn中采用多路搜索缩减规则依赖的缓存方法
KR102043978B1 (ko) * 2018-10-01 2019-11-12 에스케이텔레콤 주식회사 네트워크장치, 네트워크 모니터링 시스템 및 네트워크 모니터링 방법
CN110287192B (zh) * 2019-06-26 2021-09-21 浙江大搜车软件技术有限公司 搜索应用数据处理方法、装置、计算机设备和存储介质
CN114205415A (zh) * 2020-09-17 2022-03-18 深圳市中兴微电子技术有限公司 报文修改方法、装置、计算机设备、介质
US11616716B1 (en) * 2021-12-10 2023-03-28 Amazon Technologies, Inc. Connection ownership gossip for network packet re-routing
CN114579596B (zh) * 2022-05-06 2022-09-06 达而观数据(成都)有限公司 一种实时更新搜索引擎索引数据的方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007208963A (ja) * 2006-01-06 2007-08-16 Fujitsu Ltd パケット処理装置及びパケット処理方法

Family Cites Families (47)

* 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
JP2001024641A (ja) 1999-07-06 2001-01-26 Nec Corp クロスバー型スイッチのアービタにおける接続許可システム及び方法
US20030093613A1 (en) 2000-01-14 2003-05-15 David Sherman Compressed ternary mask system and method
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
JP2002198430A (ja) 2000-12-26 2002-07-12 Nec Microsystems Ltd 駆動力可変ブロックおよびこれを用いたlsi設計方法
JP4489308B2 (ja) 2001-01-05 2010-06-23 富士通株式会社 パケットスイッチ
WO2003067799A2 (en) * 2002-02-04 2003-08-14 Intel Corporation System and method for packet storage and retrieval
AU2003265288B2 (en) 2002-08-10 2008-08-28 Cisco Technology, Inc. Associative memory with enhanced capabilities
US7461167B1 (en) 2002-11-22 2008-12-02 Silicon Image, Inc. Method for multicast service in a crossbar switch
US7548848B1 (en) * 2003-01-08 2009-06-16 Xambala, Inc. Method and apparatus for semantic processing engine
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
US7085907B2 (en) 2004-02-17 2006-08-01 International Business Machines Corporation Dynamic reconfiguration of memory in a multi-cluster storage control unit
KR100603567B1 (ko) 2004-09-02 2006-07-24 삼성전자주식회사 스위치에서의 대역폭 예약을 통한 QoS 보장 방법 및 그시스템
US20060059269A1 (en) 2004-09-13 2006-03-16 Chien Chen Transparent recovery of switch device
US20060140126A1 (en) 2004-12-27 2006-06-29 Intel Corporation Arbitrating virtual channel transmit queues in a switched fabric network
US8112622B2 (en) 2006-12-08 2012-02-07 Broadcom Corporation Chaining port scheme for network security
TW200832408A (en) 2007-01-19 2008-08-01 Univ Nat Chiao Tung Hierarchical search line with internal storage irrelevant entry control
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
JP5387918B2 (ja) 2008-04-30 2014-01-15 日本電気株式会社 ルータ、そのルータを有する情報処理装置及びパケットのルーティング方法
JP4784786B2 (ja) 2009-03-27 2011-10-05 日本電気株式会社 クロック分配回路及びクロックスキュー調整方法
US8938268B2 (en) 2009-11-24 2015-01-20 Qualcomm Incorporated Method and apparatus for facilitating a layered cell search for Long Term Evolution systems
US9077669B2 (en) 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
CN102724101B (zh) 2011-03-29 2015-01-21 华为技术有限公司 报文转发方法及系统与中继代理设备
CA2837716A1 (en) 2011-06-01 2012-12-06 Security First Corp. Systems and methods for secure distributed storage
US8954700B2 (en) 2011-08-02 2015-02-10 Cavium, Inc. Method and apparatus for managing processing thread migration between clusters within a processor
US9159420B1 (en) 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
JP5895202B2 (ja) 2011-10-14 2016-03-30 パナソニックIpマネジメント株式会社 中継器、中継器の制御方法、およびコンピュータプログラム
US8711860B2 (en) * 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US9674114B2 (en) 2012-02-09 2017-06-06 Intel Corporation Modular decoupled crossbar for on-chip router
US9225635B2 (en) 2012-04-10 2015-12-29 International Business Machines Corporation Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization
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的方法和装置
US20140369363A1 (en) 2013-06-18 2014-12-18 Xpliant, Inc. Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree
CN103347013B (zh) 2013-06-21 2016-02-10 北京邮电大学 一种增强可编程能力的OpenFlow网络系统和方法
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
US9363178B2 (en) 2013-12-18 2016-06-07 Telefonaktiebolaget L M Ericsson (Publ) Method, apparatus, and system for supporting flexible lookup keys in software-defined networks
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
CN104010049B (zh) 2014-04-30 2017-10-03 易云捷讯科技(北京)股份有限公司 基于sdn的以太网ip报文封装方法及网络隔离和dhcp实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007208963A (ja) * 2006-01-06 2007-08-16 Fujitsu Ltd パケット処理装置及びパケット処理方法

Also Published As

Publication number Publication date
US20180278527A1 (en) 2018-09-27
KR20210127898A (ko) 2021-10-25
US20160277295A1 (en) 2016-09-22
CN104881422A (zh) 2015-09-02
KR102402176B1 (ko) 2022-05-25
HK1210844A1 (en) 2016-05-06
TWI661695B (zh) 2019-06-01
US20150186516A1 (en) 2015-07-02
US20200336423A1 (en) 2020-10-22
US20230275835A1 (en) 2023-08-31
CN104881422B (zh) 2019-12-17
US11677664B2 (en) 2023-06-13
KR102314619B1 (ko) 2021-10-19
US10749800B2 (en) 2020-08-18
US9379963B2 (en) 2016-06-28
TW201543846A (zh) 2015-11-16
KR20150079477A (ko) 2015-07-08
JP6537824B2 (ja) 2019-07-03
US10009273B2 (en) 2018-06-26

Similar Documents

Publication Publication Date Title
US11677664B2 (en) Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US8681819B2 (en) Programmable multifield parser packet
KR101615915B1 (ko) 어드밴스드 피처를 갖는 정규 표현식 패턴에 대한 비결정성 유한 오토마톤 (nfa) 생성
US9398033B2 (en) Regular expression processing automaton
US8819217B2 (en) Intelligent graph walking
US20100114973A1 (en) Deterministic Finite Automata Graph Traversal with Nodal Bit Mapping
WO2009070191A1 (en) Deterministic finite automata (dfa) graph compression
US11294841B1 (en) Dynamically configurable pipeline
US11218574B2 (en) Directed graph traversal using content-addressable memory
US9880844B2 (en) Method and apparatus for parallel and conditional data manipulation in a software-defined network processing engine
TWI665894B (zh) 用於利用超級鍵生成並行查找請求的方法和裝置
US11995004B2 (en) Methods and systems for using a packet processing pipeline to accelerate InfiniBand administrative operations
US11693664B2 (en) Methods and systems for distributing instructions amongst multiple processing units in a multistage processing pipeline
US11425036B1 (en) Pipelined match-action circuitry

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171219

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171219

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20171219

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

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