(58)【調査した分野】(Int.Cl.,DB名)
前記第1のテーブルの前記明細情報が、前記第1の処理プログラムの識別子、前記第1のテーブルのタイプ、前記第1のテーブルのベースアドレス、前記第1のテーブルの検索キーの表現情報、および前記第1のテーブルのアクションエントリの長さを含む、請求項2または3に記載の方法。
前記第1の処理ユニットが、前記第1のテーブルの前記明細情報に従って、第1の処理プログラムおよび前記第1のテーブルを決定し、また前記第1の処理プログラムおよび前記第1のテーブルに従って、前記第1のパケット上での前記第1の処理を実行するように特に構成された、請求項6に記載のデバイス。
【発明の概要】
【課題を解決するための手段】
【0004】
本発明の実施形態は、パケット処理方法、およびデバイスを提供し、それは、サービスの性能に関する要件とサービスの柔軟性に関する要件の両方へのパケット処理を考慮するのに役立つ。
【0005】
第1の態様によれば、本発明の一実施形態は、パケット処理方法を提供し、その方法は、第1のパケットを取得するステップと、第1のテーブルの識別子を決定するステップと、第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定するステップと、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップであって、第1のテーブルが、規則テーブル(convention table)である、ステップと、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するステップであって、次のテーブルの識別子が次のテーブルの明細情報に対応する、ステップと、次のテーブルの明細情報および次のテーブルに従って、第1の処理を受けた第1のパケットを処理するステップであって、次のテーブルが規則テーブルまたはフローテーブルである、ステップとを含む。
【0006】
第1の態様を参照すると、第1の可能な実装方法では、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップは、第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定するステップと、第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップとを含む。
【0007】
第1の可能な実装方法を参照すると、第2の可能な実装方法では、第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップは、第1のテーブルのエントリを決定するステップと、第1の処理プログラムを使用することによって、第1のテーブルのエントリに従って、第1のパケット上での第1の処理を実行するステップとを含む。
【0008】
第1の可能な実装方法または第2の可能な実装方法を参照すると、第3の可能な実装方法では、第1のテーブルの明細情報は、第1の処理プログラムの識別子、第1のテーブルのタイプ、第1のテーブルのベースアドレス、第1のテーブルの検索キーの表現情報、および第1のテーブルのアクションエントリの長さを含む。
【0009】
第1の態様、または前述の可能な実装方法のいずれか1つを参照すると、第4の可能な実装方法では、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するステップは、第1のテーブルのエントリに従って、次のテーブルの識別子を決定するステップを含む。
【0010】
第2の態様によれば、本発明の一実施形態は、デバイスを提供し、そのデバイスは、第1のパケットを取得するように構成された取得ユニットと、第1のテーブルの識別子を決定するように構成された第1の決定ユニットと、第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定するように構成された第2の決定ユニットと、第2の決定ユニットによって決定された第1のテーブルの明細情報、および第1のテーブルに従って、第1のパケット上での第1の処理を実行するように構成された第1の処理ユニットであって、第1のテーブルが規則テーブルである、第1の処理ユニットと、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するように構成された第3の決定ユニットであって、次のテーブルの識別子が次のテーブルの明細情報に対応する、第3の決定ユニットと、次のテーブル、および第3の決定ユニットによって決定された、次のテーブルの明細情報に従って、第1の処理を受けた第1のパケットを処理するように構成された第2の処理ユニットであって、次のテーブルが規則テーブルまたはフローテーブルである、第2の処理ユニットとを備える。
【0011】
第2の態様を参照すると、第1の可能な実装方法では、第1の処理ユニットは、第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定し、また第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するように特に構成される。
【0012】
第1の可能な実装方法を参照すると、第2の可能な実装方法では、第1の処理ユニットは、第1のテーブルのエントリを決定し、また第1のテーブルのエントリに従って、第1の処理プログラムを使用することによって、第1のパケット上での第1の処理を実行するように特に構成される。
【0013】
第2の態様、または前述の可能な実装方法のいずれかを参照すると、第3の可能な実装方法では、第3の決定ユニットは、第1のテーブルのエントリに従って、次のテーブルの識別子を決定するように特に構成される。
【0014】
本発明の実施形態によれば、パケットの処理プログラムは、規則テーブルと規則テーブルとの間を、規則テーブルとフローテーブルとの間を、またはフローテーブルとフローテーブルとの間を移行することができる。このようにして、規則テーブルが高い転送性能を備えているという利点と、フローテーブルがサービス変化の要件に柔軟に適合できるという利点の両方が考慮可能である。本発明では、規則テーブルの高い性能およびフローテーブルの柔軟性が組み合わされ、それは、転送デバイスのパケット処理性能と転送デバイスのプログラミング性の両方を考慮するのに役立つ。
【0015】
本発明の実施形態における技術的解決策をより明確に説明するために、本発明の実施形態の説明に必要な添付図面を以下に簡潔に紹介する。明らかであろうが、以下に記載する添付図面は、本発明のいくつかの実施形態を示すにすぎないが、当業者なら、創造的な努力をすることなく、これらの添付図面から他の図面を得ることができるであろう。
【発明を実施するための形態】
【0017】
本発明の実施形態における技術的解決策について、以下、本発明の実施形態の添付図面を参照して明確に説明する。明らかであろうが、説明される実施形態は、本発明の実施形態の単にいくつかであってすべてではない。当業者が本発明の実施形態に基づいて、創造的な努力をすることなく得る他のすべての実施形態は、本発明の保護範囲に含まれるものとする。
【0018】
本発明の実施形態において提供される技術的解決策は、規則テーブルに関する。規則テーブルのエントリには、処理プログラムのために提供されるパラメータが含まれる。処理プログラムは、規則テーブルのエントリに従って、パケットを処理する。例えば、規則テーブルは、スイッチ/ルータによって完全に制御された従来型のパケット転送プロセスにおいて使用されるテーブルでもよい。例えば、規則テーブルは、BEでも、またREでもよい。説明の便宜上、本発明では、規則テーブルに従ってパケット処理を制御するプロセスは、簡潔に「規則テーブル処理パイプライン」と呼ばれる。規則テーブル処理パイプラインにおいて、パケット処理の各ステージ(英語:stage)は、簡潔に「規則テーブル処理プロセス」と呼ばれる。
【0019】
本発明の実施形態において提供される技術的解決策は、OpenFlowテクノロジに関する。OpenFlowテクノロジに関係する用語(用語には、これに限定されるものではないが、フローテーブル、フローテーブルエントリ、インストラクション、およびアクションが含まれる)に関しては、OpenFlow Switch Specificationバージョン1.4.0(英語:OpenFlow Switch Specification version 1.4.0)を参照することができる。読み進める際の便宜上、フローテーブルについて、ここで説明する。フローテーブル(英語:flow table)は、OpenFlowテクノロジに関係するテーブルである。具体的には、フローテーブルは、ファイルされたマッチ、ファイルされたインストラクション、およびファイルされた統計情報を含む。ファイルされたマッチは、パケットをマッチングするために使用される。ファイルされたインストラクションは、パケットを処理するために使用される。処理は、パケットの修正、パケットのカプセル化、パケットのカプセル化解除、パケットの破棄、パケットの転送、またはパケット上での計数演算の実行であってもよい。すなわち、フローテーブルは、処理プログラムのために提供されるパラメータを含むことができるだけでなく、処理プログラム(処理プログラムはインストラクションでも、またアクションでもよい)を含むことができる。説明の便宜上、本発明では、フローテーブルに従ってパケット処理を制御するプロセスは、簡潔に「フローテーブル処理パイプライン」と呼ばれる。フローテーブル処理パイプラインにおいて、パケット処理の各ステージは、簡潔に「フローテーブル処理プロセス」と呼ばれる。パケットが規則テーブル処理プロセスおよびフローテーブル処理プロセスを使用することによって処理される必要がある場合、こうした処理手順は、総称して「混合型処理パイプライン(mixed processing pipeline)」と呼ばれる。
【0020】
図1は、本発明の一実施形態による、パケット処理方法の概略流れ図である。方法の実行主体は、ネットワーク装置であり得る。具体的には、実行主体は、ネットワーク装置におけるネットワークプロセッサ(英語:network
processor、略してNP)であり得る。具体的には、実行主体は、NPにおける検索エンジンであり得る。ネットワークデバイスは、ルータ、ネットワークスイッチ、ファイアウォール、負荷分散装置、またはデータセンタでもよい。ネットワークスイッチは、OpenFlowスイッチでもよい。
【0021】
101. 第1のパケットを取得する。
【0022】
例えば、ステップ101の特定の実装の間、第1のパケットが受信可能であるか、第1のパケットが生成可能である。
【0023】
102. 第1のテーブルの識別子を決定する。
【0024】
例えば、ステップ102の特定の実装の間、第1のテーブルの識別子が、テーブルを使用することによって獲得可能である。第1のテーブルの識別子が、テーブル内を運ばれる。ステップ102の特定の実装の間、デフォルトコードが、実行主体に、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケットを処理するよう命令することもあり得る。デフォルトコードが、実行主体に記憶される。
【0025】
103. 第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定する。
【0026】
例えば、第1のテーブルの明細情報が、アレイに記憶され得る。ステップ103の特定の実装の間、第1のテーブルの明細情報が、第1のテーブルの識別子をインデックスとして使用することによって、またアレイにアクセスすることによって獲得可能である。
【0027】
例えば、実行主体のメモリは、コンピュータプログラムを記憶するために使用される記憶域およびデータを記憶するために使用される記憶域を含む。第1のテーブルの明細情報は、データを記憶するために使用される記憶域に記憶される。例えば、第1のテーブルの明細情報は、コントローラによって生成される。コントローラは、第1のテーブルの明細情報を実行主体に制御チャネルを通じて送信する。
【0028】
104. 第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上での第1の処理を実行する。
【0029】
例えば、第1のテーブルは規則テーブルである。
【0030】
あるいは、第1のテーブルはフローテーブルである。
【0031】
105. 第1のテーブルの明細情報に従って、次のテーブルの識別子を決定し、そこでは、次のテーブルの識別子は、次のテーブルの明細情報に対応する。
【0032】
106. 次のテーブルの明細情報および次のテーブルに従って、第1の処理を受けた第1のパケットを処理し、そこでは、次のテーブルが規則テーブルまたはフローテーブルである。
【0033】
図1に示す方法によれば、規則テーブルに対応する第1の処理が実行された後、処理プログラムは、パケットのその後の処理を実施するために、次のテーブルの対応する識別子に従って、規則テーブル処理プロセスまたはフローテーブル処理プロセスに移行することができる。すなわち、処理プログラムは、規則テーブルとフローテーブルとの間を移行することができる。このようにして、規則テーブルの高い処理性能の特性とフローテーブルの柔軟な処理の特性の両方が考慮可能であり、それによってパケット処理の効率を改善する。さらに、次のテーブルの識別子が、パケットを処理するための次のテーブルに対応し、第1のテーブルの明細情報に従って決定される。第1のテーブルの明細情報は、マイクロコードによって制御することはできない。このようにして、パケットを処理するための次のテーブルが変更されることを必要とするとき、次のテーブルの変更を、マイクロコードを修正することによって実行する必要なく、次のテーブルの識別子を修正することによって実行することができる。例えば、パケットを処理するためのテーブルは規則テーブルAである。規則テーブルAがパケットの処理を完了した後、規則テーブルBは、パケットを処理するために使用される必要がある。規則テーブルAがパケットの処理を完了した後、規則テーブルCが代わりに、パケットの処理のために使用されることが期待される場合、次のテーブルの識別子は、規則テーブルBに対応する、テーブルの識別子から、規則テーブルCに対応する、テーブルの識別子に修正可能である。このようにして、次のテーブルが変更されることを必要とするとき、修正されることを必要とする位置を迅速に決定することができ、また次のテーブルは、次のテーブルの識別子を修正することによって都合よく変更可能である。さらに、次のテーブルの識別子を修正するワークロードは、マイクロコードを修正するワークロードよりもかなり少ない。
【0034】
図2は、本発明の一実施形態による、パケット処理方法の概略流れ図である。
図2に示す方法は、
図1に示す方法の特定の実施形態である。
【0035】
201. 第1のパケットを取得する。
【0036】
本明細書内の「第1のパケット」における「第1の」は、単にパケットを区別するためのものであり、パケットを限定することを意図するものではない。したがって、この第1のパケットが、混合型処理パイプラインにおける任意のパケットであってよいことが理解できよう。すなわち、第1のパケットは、1度の処理または何度かの処理が完了したパケットでもよく、また別のデバイスから受信されるパケットでもよい。
【0037】
202. 第1のテーブルの識別子を決定する。
【0038】
203. 第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定する。
【0039】
ステップ204からステップ206を実行することによって、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上で第1の処理が、実行可能である。
【0040】
204. 第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定する。
【0041】
例えば、第1のテーブルは規則テーブルである。
【0042】
あるいは、第1のテーブルはフローテーブルである。
【0043】
第1のテーブルの明細情報は、第1の処理プログラムの識別子、第1のテーブルのタイプ、第1のテーブルのベースアドレス、第1のテーブルの検索キー(英語:search key)の明細情報、および第1のテーブルのアクションエントリの長さを含むことができる。第1のテーブルの検索キーの明細情報は、第1のマッチテーブルの検索キーについて説明するために使用される。例えば、第1のテーブルのタイプは、情報の2つの部分を含む。すなわち、第1の部分は、テーブルが規則テーブルであることを示し、第2の部分は、テーブルのマッチタイプを示し、そこでは、テーブルは、任意のワイルドカードマッチ(英語:access control list、略してACL)テーブル、最長プレフィックスマッチ(英語:longest prefix match、略してLPM)テーブル、完全一致(英語:exact match、略してEM)テーブル、直接アクセス(英語:direct)テーブルなどであり得る。
【0044】
具体的には、第1の処理プログラムは、第1のテーブルの明細情報における第1の処理プログラムの識別子に従って決定される。第1のテーブルは規則テーブルである。第1のテーブルは、第1の処理プログラムに対応する。例えば、異なる規則テーブルは、異なる処理プログラムに対応する。第1の処理プログラムは、第1のテーブルの明細情報内にある、第1のテーブルのベースアドレス、第1のテーブルのタイプ、および第1のテーブルの検索キーの表現情報に従って、第1のテーブルにアクセスする。
【0045】
ステップ205およびステップ206を実行することによって、第1のテーブルが決定された後、第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上で第1の処理が、実行可能である。
【0046】
205. 第1の処理プログラムを使用することによって、第1のテーブルのエントリを決定する。
【0047】
例えば、第1の処理プログラムは、第1のテーブルの検索キーの表現情報に従って、検索キーを決定することができる。第1のテーブルの検索キーの表現情報は、検索キーを取得するための方法について説明するために使用される。検索キーは、第1のパケットのパケットヘッダにフィールドを含むことができる。検索キーは、第1のパケットを受信するためのポートを含むことができる。
【0048】
具体的には、第1のテーブルが決定された後、第1の処理プログラムは、第1のテーブルのエントリを検索するために、検索キーを第1のテーブルに配信する。
【0049】
206. 第1の処理プログラムを使用することによって、第1のテーブルのエントリに従って、第1のパケット上での第1の処理を実行する。
【0050】
具体的には、第1の処理プログラムが第1のパケット上での第1の処理を実行すると、第1のテーブルのエントリの内容が、パケット処理の入力パラメータとして使用される。すなわち、第1の処理プログラムは、第1のテーブルのエントリに従って、第1のパケットを処理する。第1の処理プログラムは、伝送制御プロトコル(英語:Transmission Control Protocol、略してTCP)のヘッダのチェックサム(英語:checksum)を計算するために使用可能である。第1の処理プログラムはまた、ネットワークアドレス変換(英語:network address translation、略してNAT)を実行するためにも使用可能である。具体的には、第1のパケットは、プライベートネットワーク由来のインターネットプロトコル(英語:internet protocol、略してIP)パケットであってもよい。第1の処理プログラムは、新しいIPパケットを生成するため、IPパケットのIPヘッダにおける送信元IPアドレスおよび送信元ポートを修正するために使用可能である。新しいIPパケットは、パブリックネットワークにおいて伝送されることになる。
【0051】
第1の実施形態が、ステップ205およびステップ206について説明するための特定の例として、以下に提供される。
【0052】
第1のパケットはIPパケットである。実行主体はNAT装置である。第1のテーブルはNATフローテーブルである。
【0053】
プライベートネットワークに配置されたホストが、IPパケットをパブリックネットワーク内のサーバに送信する。ホストのIPアドレスは10.1.1.1である。サーバのIPアドレスは100.1.1.1である。IPパケットは、(Table 1(表1)に関連する)以下の特徴情報を伝送する。
【0055】
NAT装置がIPパケットを受信した後、Table 1(表1)に示す特徴情報が、第1のテーブルの検索キーの表現情報に従って取得される。NAT装置は、特徴情報を検索キーとして使用することによって、特徴情報に適合する、第1のテーブルのエントリを求めて、NATフローテーブルを検索する。第1のテーブルのエントリの場合、Table 2(表2)において、NATフローテーブルのエントリを参照されたい。50.1.1.1は、NAT装置によって割り当てられた、パブリックネットワークのIPアドレスであり、100は、NAT装置によって割り当てられたポート番号である。
【0057】
NAT装置は、第1の処理プログラムに従って、IPパケットを処理する。具体的には、NAT装置は、NATフローテーブルのエントリにおける50.1.1.1を第1の処理プログラムの入力パラメータとして使用することによって、IPパケットにおける送信元IPアドレスを50.1.1.1に修正する。NAT装置は、NATフローテーブルのエントリにおける100を第1の処理プログラムの入力パラメータとして使用することによって、IPパケットにおける送信元ポートを100に修正する。
【0058】
207. 第1のテーブルの明細情報に従って、次のテーブルの識別子を決定する。
【0059】
ステップ207の特定の実装の間、第1のテーブルが、第1のテーブルの明細情報に従って決定可能である。次のテーブルの識別子が、第1のテーブルにアクセスすることによって獲得される。第1のテーブルは、次のテーブルの識別子を含む。
【0060】
具体的には、次のテーブルの識別子は、第1のテーブルに従って決定される。例えば、第1のテーブルは、次のテーブルの識別子を含む。例えば、第1のテーブルの各エントリは、次のテーブルの1つの識別子を含む。次のテーブルの識別子は、次のテーブルの明細情報にインデックス付けするために使用される。次のテーブルの明細情報は、規則テーブルの明細情報でもよく、またフローテーブルの明細情報でもよい。第1のテーブルに対応する次のテーブルの識別子は、第1のテーブルのエントリとして使用されるエントリフィールドであってもよく、また次のテーブルの独立した識別子テーブル内にあってもよい。
【0061】
第2の実施形態が、ステップ207について説明するための特定の実施形態として、以下に提供される。
【0062】
第1の実施形態におけるTable 2(表2)のエントリは、次のテーブルの識別子をさらに含むことができる。例えば、次のテーブルの識別子は、5である。この場合、NATフローテーブルのエントリが、
図3に示される。このようにして、NAT装置は、NATフローテーブルのエントリにアクセスすることによって、次のテーブルの識別子を獲得する。
【0064】
208. 次のテーブルの明細情報および次のテーブルに従って、第1の処理を受けた第1のパケットを処理し、そこでは、次のテーブルが規則テーブルまたはフローテーブルである。
【0065】
第1の処理を受けた第1のパケットは、第1のパケットであってもよく、また別のパケットであってもよい。第1のパケットが第1の処理の間に修正された場合、第1の処理を受けた第1のパケットは、別のパケットであり、また第1のパケットが第1の処理の間に修正されなかった場合、第1の処理を受けた第1のパケットは、第1のパケットである。
【0066】
任意選択で、一実施形態として、次のテーブルがフローテーブルである場合、フローテーブルは、プロトコル忘却型フォワーディング(英語:Protocol Oblivious Forwarding、略してPOF)テーブルであってもよい。すなわち、第1の処理プログラムが第1のパケットを処理するとき、第1のパケットのプロトコルタイプが不明であることが判明する。この場合、第1のパケットが、POFテーブルに転送可能であり、また第1の処理が完了した第1のパケットが、POFテクノロジを使用することによって処理される。第1の処理が完了した第1のパケットが、POFテーブルを使用することによって処理されるとき、パケットのタイプは、検出される必要はなく、またパケットの処理は、オフセット、および指定されたデータの長さによって実行される。
【0067】
図2に示す方法によれば、第1のテーブルに対応する第1の処理がパケット上で実行された後、パケットは、その後の処理を実行するために、次のテーブルの対応する識別子に従って、規則テーブル処理プロセスまたはフローテーブル処理プロセスに移行することができる。すなわち、パケットは、規則テーブルとフローテーブルとの間を移行することができる。このようにして、規則テーブルの高い処理性能の特性とフローテーブルの柔軟な処理の特性の両方が考慮可能であり、それによってパケット処理の効率を改善する。例えば、1つのフローテーブル処理プロセスが、複数の規則テーブル処理プロセスに挿入可能であり、そこでは、フローテーブル処理プロセスのマッチエントリは、どんな規則テーブルとも異なり、またフローテーブル処理プロセスは、完全に、柔軟なポリシー制御のために使用される。1つのフローテーブル処理プロセスの挿入は、パケットの全体的な処理性能に対してほとんど影響がない。このようにして、性能が著しく低下しないようにできるだけでなく、パケット処理の柔軟性を改善することができる。具体的には、POFテーブルが規則テーブル処理プロセスに挿入されるとき、プロトコルタイプが不明であるパケットは、POFテーブルを使用することによって処理することができる。
【0068】
本発明の本実施形態において提供されるパケット処理方法が使用されるとき、混合型処理パイプラインのための第1のテーブルが決定されるべきであることが理解できよう。すなわち、すべてのパケットが、第1のテーブルから処理され始める。第1のテーブルは、規則テーブルであってもよく、またフローテーブルであってもよい。第1のテーブルに対応する第1の処理が完了した後、パケットは、必要に応じて、異なるタイプの処理プロセスに移行することができる。
【0069】
本発明のより良い理解に役立つよう、本発明について、
図3の特定の実施形態を参照しながら、さらに説明する。
図3に示す実施形態は、本発明のより良い理解を支援するだけであり、本発明を限定することを意図するものではないことに留意されたい。
【0070】
図3は、本発明の一実施形態による、パケット処理方法の概略図である。
【0071】
図3に示すように、パケットAは、受信されたパケットである。識別子1は、混合型処理パイプラインの第1のテーブルの識別子であり、したがって、パケットAは、第1に、識別子1に対応するテーブルを使用することによって処理される必要がある。具体的には、識別子1は、第1のテーブルの明細情報に対応する。第1のテーブルおよび第1の処理プログラムが、第1のテーブルの明細情報に従って決定され、そこでは、第1のテーブルは規則テーブルである。第1の処理プログラムは、第1のテーブルのエントリを使用することによって、パケットAを処理する。第1のテーブルのエントリN+1に含まれる内容は、次のテーブルの識別子である。本実施形態では、次のテーブルは、識別子3に対応するテーブルである。したがって、パケットAの処理が完了した後、パケットAは、エントリN+1の内容に従って、識別子3に移行される。次いで、第3の処理プログラムおよび第3のテーブルが、識別子3に対応し、第3のテーブルの明細情報に従って決定され、そこでは、第3の処理プログラムは、第3のテーブルに含まれる。すなわち、第3のテーブルは、処理プログラムを含む、また処理プログラムによって使用される必要があるパラメータも含む、フローテーブルである。第3の処理プログラムは、第3のテーブルにおけるエントリに従って、第1の処理プログラムによって処理が完了したパケットAを処理することができる。その後、必要に応じて、次のテーブルに引き続き移行して、第3の処理プログラムによって処理が完了したパケットAを引き続き処理することができる。
【0072】
図4は、本発明の一実施形態による、デバイスの構造ブロック図である。
図4に示すデバイスは、
図1または
図2に示す方法を実行することができる。
図4に示すデバイス400は、取得ユニット401、第1の決定ユニット402、第2の決定ユニット403、第1の処理ユニット404、第3の決定ユニット405、および第2の処理ユニット406を備える。
【0073】
取得ユニット401は、第1のパケットを取得するように構成される。
【0074】
第1の決定ユニット402は、第1のテーブルの識別子を決定するように構成される。
【0075】
第2の決定ユニット403は、第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定するように構成される。
【0076】
第1の処理ユニット404は、第2の決定ユニット403によって決定された第1のテーブルの明細情報、および第1のテーブルに従って、第1のパケット上での第1の処理を実行するように構成される。
【0077】
例えば、第1のテーブルは規則テーブルである。
【0078】
あるいは、第1のテーブルはフローテーブルである。
【0079】
第3の決定ユニット405は、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するように構成され、そこでは、次のテーブルの識別子は、次のテーブルの明細情報に対応する。
【0080】
第2の処理ユニット406は、次のテーブル、および第3の決定ユニット405によって決定された、次のテーブルの明細情報に従って、第1の処理を受けた第1のパケットを処理するように構成され、そこでは、次のテーブルが規則テーブルまたはフローテーブルである。
【0081】
図4に示すデバイスによれば、第1のテーブルに対応する第1の処理がパケット上で実行された後、デバイス400は、その後の処理を実行するために、次のテーブルの対応する識別子に従って、規則テーブル処理プロセスまたはフローテーブル処理プロセスに移行するようにパケットを制御することができる。すなわち、デバイス400は、規則テーブルとフローテーブルとの間を移行するようにパケットを制御することができる。このようにして、規則テーブルの高い処理性能の特性とフローテーブルの柔軟な処理の特性の両方が考慮可能であり、それによってパケット処理の効率を改善する。さらに、パケットを処理するための次のテーブルが、マイクロコードによって制御されるのではなく、次のテーブルの識別子によって決定される。このようにして、パケットを処理するための次のテーブルが変更されることを必要とするとき、次のテーブルの変更を、マイクロコードを修正することによって実行する必要なく、次のテーブルの識別子を修正することによって実行することができる。次のテーブルが変更されることを必要とするとき、修正されることを必要とする位置は、迅速に決定することができ、また次のテーブルは、次のテーブルの識別子を修正することによって都合よく変更可能である。さらに、次のテーブルの識別子を修正するワークロードは、マイクロコードを修正するワークロードよりもかなり少ない。
【0082】
さらに、第1の処理ユニット404は、第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定し、また第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するように特に構成される。
【0083】
さらに、第1の処理ユニット404は、第1のテーブルのエントリを決定し、また第1の処理プログラムを使用することによって、第1のテーブルのエントリに従って、第1のパケット上での第1の処理を実行するように特に構成される。
【0084】
さらに、第3の決定ユニット405は、第1のテーブルのエントリに従って、次のテーブルの識別子を決定するように特に構成される。
【0085】
当業者なら、本明細書において開示される実施形態において説明される例と組み合わせて、ユニットおよびアルゴリズムステップは、電子ハードウェア、またはコンピュータソフトウェアと電子ハードウェアの組合せによって実装され得ることを認識するであろう。機能がハードウェアによって実行されるか、ソフトウェアによって実行されるかは、特定の適用例および技術的解決策の設計制約条件に依存する。当業者は、それぞれの特定の適用例に対する説明された機能を実装するために様々な方法を使用する可能性があるが、こうした実装は本発明の範囲を超えるとみなされるべきではない。
【0086】
便利で簡単な説明を目的として、前述のシステム、装置、およびユニットの詳細な作業プロセスのために、前述の方法の実施形態における対応するプロセスが参照可能であり、そして詳細が本明細書において再び説明されることがないことは、当業者によって明確に理解されよう。
【0087】
本願において提供されるいくつかの実施形態では、開示されるシステム、装置、および方法は、他の方法で実装され得ることを理解されたい。例えば、説明された装置の実施形態は、単に例示的なものである。例えば、ユニット区分は、単に論理機能区分であり、そのため実際の実装において他の区分であってもよい。例えば、複数のユニットもしくは構成要素は、別のシステムに連結されても、また統合されてもよく、またはいくつかの特徴部分は、無視されても、また実行されなくてもよい。さらに、表示された、もしくは議論された相互結合または直接結合または通信接続は、いくつかのインターフェースを介して実装され得る。装置もしくはユニット間の直接結合または通信接続は、電子的、機械的、または他の形態で実装され得る。
【0088】
別個の部分として説明されたユニットは、物理的に切り離されているかどうかは分からず、またユニットとして表示された部分は、物理的なユニットかどうかは分からず、1つの位置に位置してもよく、また複数のネットワークユニット上に分散されてもよい。ユニットの一部または全部は、実施形態の解決策の目的を達成するために、実際のニーズに従って選択されてもよい。
【0089】
さらに、本発明の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよく、またユニットのそれぞれは、物理的に単独で存在してもよく、また2つ以上のユニットは、1つのユニットに統合されてもよい。
【0090】
機能がソフトウェア機能ユニットの形態で実装され、また独立した製品として販売または使用されるとき、機能は、コンピュータ可読記憶媒体に記憶されてもよい。こうした理解に基づいて、本質的に本発明の技術的解決策は、または従来技術に貢献する部分、または技術的解決策の一部は、ソフトウェア製品の形態で実装され得る。
ソフトウェア製品は、記憶媒体に記憶され、またコンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイスなどであってもよい)またはプロセッサ(英語:processor)に、本発明の実施形態において説明された方法のステップのすべてまたは一部を実行するよう命令するためのいくつかの命令を含む。前述の記憶媒体には、USBフラッシュドライブ、リムーバブルハードディスク、読出し専用メモリ(略してROM、英語:Read-Only Memory)、ランダムアクセスメモリ(略してRAM、英語:Random Access Memory)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶することができる任意の媒体が含まれる。
【0091】
前述の説明は、単に本発明の特定の実施形態であり、本発明の保護範囲を限定することは意図されない。本発明において開示される技術範囲内において当業者によって容易に理解される任意の相違または置換えは、本発明の保護範囲にすべて含まれるものとする。そこで、本発明の保護範囲は、特許請求の範囲に記載の保護範囲の対象であるものとする。