(58)【調査した分野】(Int.Cl.,DB名)
前記転送要素により、前記第1オフセット及び前記第1長さに従って第1キーが決定され、前記第1キーに従って前記第1テーブルが検索されて、第1命令が決定される前記ステップが、
前記転送要素により、前記パケット中の第1データセグメントが取得されるステップと、
前記転送要素により、前記第1データセグメントが前記第1キーとして決定されるステップと
を含み、
前記第1データセグメントの開始位置は、前記第1オフセットに従って決定され、
前記第1データセグメントの長さは、前記第1長さである、請求項1に記載の方法。
前記転送要素により、前記第1オフセット及び前記第1長さに従って第1キーが決定され、前記第1キーに従って前記第1テーブルが検索されて、第1命令が決定される前記ステップが、
前記転送要素により、メタデータ中の第2データセグメントが取得されるステップと、
前記転送要素により、前記第2データセグメントが前記第1キーとして決定されるステップと
を含み、
前記第2データセグメントの開始位置は、前記第1オフセットに従って決定され、
前記第2データセグメントの長さは、前記第1長さである、請求項1に記載の方法。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明の実施態様は、パケット処理方法及び転送要素を提供する。転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、したがって、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【0004】
第1態様によれば、パケット処理方法が提供され、パケット処理方法は、
転送要素により、インバウンドポートを介してパケットが受信されるステップと、
転送要素により、インバウンドポートに従ってポートテーブル(port table)が検索されて、第1オフセット(offset)、第1長さ(length)、及び第1テーブルの識別子が決定されるステップと、
転送要素により、第1オフセット及び第1長さに従って第1キー(key)が決定され、第1キーに従って第1テーブルが検索されて、第1命令(instruction)が決定されるステップと、
転送要素により、第1命令に従ってパケットが処理されるステップとを有し、ここで、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに対応する。
【0005】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第1オフセット及び第1長さを決定する。転送要素は、第1オフセット及び第1長さに従って第1キーを決定する。転送要素は、第1キーに従って第1命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【0006】
第1態様の第1実施可能態様において、転送要素により、第1オフセット及び第1長さに従って第1キーが決定されるステップは、
転送要素により、パケット中の第1データセグメント(data segment)が取得されるステップと、
転送要素により、第1データセグメントが第1キーとして決定されるステップとを含み、ここで、第1データセグメントの開始位置は、第1オフセットに従って決定され、かつ第1データセグメントの長さは、第1長さである。
【0007】
第1態様の第2実施可能態様において、転送要素により、第1オフセット及び第1長さに従って第1キーが決定されるステップは、
転送要素により、メタデータ(met
a data)中の第2データセグメントが取得されるステップと、
転送要素により、第2データセグメントが第1キーとして決定されるステップとを含み、ここで、第2データセグメントの開始位置は、第1オフセットに従って決定され、かつ第2データセグメントの長さは、第1長さである。
【0008】
第1態様の第2実施可能態様に従う、第1態様の第3実施可能態様において、メタデータは、転送要素のレジスタ(register)に格納されるか、又はメタデータは、転送要素のメモリ(memory)に格納される。
【0009】
第1態様、第1態様の第1実施可能態様、第1態様の第2実施可能態様、又は第1態様の第3実施可能態様に従う、第1態様の第4実施可能態様において、第1命令は、動作を実行するように転送要素に命令するために使用され、ここで、動作は、パケットを修正する動作と、パケットのチェックサム(checksum)を計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタを更新す
る動作と、パケットにCAR(Committed Access Rate)処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセット(base offset)を修正する動作とのうちの少なくとも1つを含む。
【0010】
第1態様、第1態様の第1実施可能態様、第1態様の第2実施可能態様、又は第1態様の第3実施可能態様に従う、第1態様の第5実施可能態様において、転送要素により、第1命令に従ってパケットが処理されるステップは、
転送要素により、第1テーブルに従って、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子が決定されるステップと、
転送要素により、パケットのベースオフセット、第2オフセット、及び第2長さに従って第2キーが決定され、第2キーに従って第2テーブルが検索されて、第2命令が決定されるステップと、
転送要素により、第2命令に従ってパケットが処理されるステップとを含み、ここで、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子は、第1キーに対応する。
【0011】
第2態様によれば、転送要素が提供され、転送要素は、
インバウンドポートを介してパケットを受信するように構成された受信回路と、
インバウンドポートに従ってポートテーブルを検索して、第1オフセット、第1長さ、及び第1テーブルの識別子を決定するように構成された検索ユニットと、
第1オフセット及び第1長さに従って第1キーを決定し、第1キーに従って第1テーブルを検索して、
第1命令を決定するように構成された決定ユニットと、
第1命令に従ってパケットを処理するように構成された処理ユニットとを具備し、ここで、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに対応する。
【0012】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第1オフセット及び第1長さを決定する。転送要素は、第1オフセット及び第1長さに従って第1キーを決定する。転送要素は、第1キーに従って第1命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【0013】
第2態様の第1実施可能態様において、検索ユニットは、
パケット中の第1データセグメントを取得し、
第1データセグメントを第1キーとして決定するようにさらに構成され、ここで、第1データセグメントの開始位置は、第1オフセットに従って決定され、かつ第1データセグメントの長さは、第1長さである。
【0014】
第2態様の第2実施可能態様において、検索ユニットは、
メタデータ中の第2データセグメントを取得し、
第2データセグメントを第1キーとして決定するようにさらに構成され、ここで、第2データセグメントの開始位置は、第1オフセットに従って決定され、かつ第2データセグメントの長さは、第1長さである。
【0015】
第2態様の第2実施可能態様に従う、第2態様の第3実施可能態様において、転送要素は、レジスタ又はメモリをさらに具備し、ここで、メタデータは、レジスタ又はメモリに格納される。
【0016】
第2態様、第2態様の第1実施可能態様、第2態様の第2実施可能態様、又は第2態様の第3実施可能態様に従う、第2態様の第4実施可能態様において、
第1命令は、動作を実行するように転送要素に命令するために使用され、ここで、動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ
を更新
する動作と、パケットにCAR処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも1つを含む。
【0017】
第2態様、第2態様の第1実施可能態様、第2態様の第2実施可能態様、又は第2態様の第3実施可能態様に従う、第2態様の第5実施可能態様において、処理ユニットは、
第1テーブルに従って、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子を決定し、
パケットのベースオフセット、第2オフセット、及び第2長さに従って第2キーを決定し、第2キーに従って第2テーブルを検索して、第2命令を決定し、
第2命令に従ってパケットを処理するようにさらに構成され、ここで、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子は、第1キーに対応する。
【0018】
第3態様によれば、転送要素が提供され、転送要素は、受信回路と、プロセッサと、検索エンジン(search engine)と、メモリとを具備し、ここで、
受信回路は、インバウンドポートを介してパケットを受信するように構成され、
プロセッサは、受信回路に接続されており、プロセッサは、メモリに接続されており、かつプロセッサは、命令実行回路と、命令メモリとを具備し、ここで、命令実行回路は、命令メモリに接続されており、命令メモリは、コンピュータ命令を格納するように構成され、かつ命令実行回路は、コンピュータ命令を読み取ることによって、
検索エンジンが、インバウンドポートに従ってポートテーブルを検索して、第1オフセット、第1長さ、及び第1テーブルの識別子を決定するよう、検索エンジンをトリガする手順と、
第1オフセット及び第1長さに従って第1キーを決定する手順と、
検索エンジンが、第1キーに従って第1テーブルを検索して、第1命令を決定するよう、検索エンジンをトリガする手順と、
第1命令に従ってパケットを処理する手順とを実行し、ここで、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに対応し、かつポートテーブルは、メモリに格納される。
【0019】
第3態様の第1実施可能態様において、検索エンジンは、パケット中の第1データセグメントを取得するようにさらに構成され、ここで、第1データセグメントの開始位置は、第1オフセットに従って決定され、かつ第1データセグメントの長さは、第1長さであり、
命令実行回路は、第1データセグメントを第1キーとして決定するようにさらに構成され、かつ
プロセッサは、データメモリをさらに具備し、ここで、データメモリは、命令実行回路に接続されており、かつパケットは、データメモリに格納される。
【0020】
第3態様の第2実施可能態様において、検索エンジンは、メタデータ中の第2データセグメントを取得するようにさらに構成され、ここで、第2データセグメントの開始位置は、第1オフセットに従って決定され、かつ第2データセグメントの長さは、第1長さであり、かつ
命令実行回路は、第2データセグメントを第1キーとして決定するようにさらに構成される。
【0021】
第3態様の第2実施可能態様に従う、第3態様の第3実施可能態様において、プロセッサは、レジスタをさらに具備し、ここで、レジスタは、命令実行回路に接続されており、かつメタデータは、レジスタに格納される。
【0022】
第3態様の第2実施可能態様に従う、第3態様の第4実施可能態様において、メタデータは、メモリに格納される。
【0023】
第3態様、第3態様の第1実施可能態様、第3態様の第2実施可能態様、第3態様の第3実施可能態様、又は第3態様の第4実施可能態様に従う、第3態様の第5実施可能態様において、第1命令は、動作を実行するように命令実行回路に命令するために使用され、ここで、動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ
を更新
する動作と、パケットにCAR処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも1つを含む。
【0024】
第3態様、第3態様の第1実施可能態様、第3態様の第2実施可能態様、第3態様の第3実施可能態様、又は第3態様の第4実施可能態様に従う、第4態様の第6実施可能態様において、命令実行回路は、第1テーブルに従って、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子を決定するようにさらに構成され、ここで、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子は、第1キーに対応し、
命令実行回路は、パケットのベースオフセット、第2オフセット、及び第2長さに従って第2キーを決定するようにさらに構成され、
命令実行回路は、検索エンジンが、第2キーに従って第2テーブルを検索して、第2命令を決定するよう、検索エンジンをトリガするようにさらに構成され、かつ
命令実行回路は、第2命令に従ってパケットを処理するようにさらに構成される。
【0025】
本発明の実施形態における又は従来技術における技術的解決策をより明瞭に説明するために、実施形態及び従来技術を説明するために必要とされる添付の図面について、以下に簡単に説明する。当然ながら、以下の説明における添付の図面は、本発明のいくつかの実施形態を示すものであり、当分野における通常の知識を有する者は、創造的労力無しに、これらの添付の図面から他の図面を導き出せよう。
【発明を実施するための形態】
【0027】
本発明の実施形態の目的、技術的解決策、及び利点を明確にするために、以下では、本発明の実施形態の添付の図面を参照して本発明の実施形態の技術的解決策について明瞭かつ十分に説明する。当然ながら、記載される実施形態は、本発明の実施形態のすべてではなく、その一部に過ぎない。当分野における通常の知識を有する者が本発明の実施形態に基づいて創造的労力無しに得る他のすべての実施形態は、本発明の保護範囲内にある。
【0028】
図1は、本発明の一実施形態によるパケット処理方法の概略的なフロー図である。
図1を参照すると、この方法は、以下のステップを有する。
【0029】
ステップ102:転送要素は、インバウンドポートを介してパケットを受信する。
【0030】
例えば、転送要素は、ルータ、スイッチ、ファイアウォール、又はロードバランサであってよい。
【0031】
例えば、パケットは、IPパケット、イーサネットパケット、又はMPLSパケットであってよい。
【0032】
例えば、ステップ102は、受信回路によって実行されてよい。
【0033】
ステップ104:転送要素は、インバウンドポートに従ってポートテーブルを検索して、第1オフセット、第1長さ、及び第1テーブルの識別子を決定する。ここで、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに対応する。
【0034】
例えば、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに一致するポートテーブルのエントリに格納される。1つ以上の第1オフセットが存在してよい。1つ以上の第1長さが存在してよい。複数のオフセットは、複数の長さと一対一の関係にある。
【0035】
例えば、第1テーブルは、MACプロトコルテーブル、アドレス解決プロトコル(Address Resolution Protocol,ARP)テーブル、FIB(Forwarding Information Base)、又はMPLSラベルテーブルであってよい。
【0036】
例えば、ステップ104は、検索エンジンによって実行されてよい。
【0037】
ステップ106:転送要素は、第1オフセット及び第1長さに従って第1キーを決定し、第1キーに従って第1テーブルを検索して、第1命令を決定する。
【0038】
例えば、第1キーは、パケット中のデータセグメントであってよい。また、第1キーは、メタデータ中のデータセグメントであってもよい。メタデータは、レジスタに格納される。
【0039】
例えば、1つ以上の第1キーが存在してよい。複数のキーは、複数のオフセットと一対一の関係にある。複数のキーは、複数の長さと一対一の関係にある。
【0040】
例えば、第1キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第1キーは、パケット及びメタデータから得られてもよい。
【0041】
例えば、ステップ106は、検索エンジン及び命令実行回路によって実行されてよい。
【0042】
ステップ108:転送要素は、第1命令に従ってパケットを処理する。
【0043】
例えば、第1命令は、SSO(Standard Setting Organization)、ONF(Open Networking Foundation)によって公開されたOpenFlowスイッチ仕様書1.3.0(OpenFlow Switch Specification 1.3.0)において規定された命令であってよい。
【0044】
例えば、ステップ108は、ネットワークプロセッサ(Network Processor,NP)によって実行されてよい。特に、ステップ108は、NP中の命令実行回路によって実行されてもよい。
【0045】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第1オフセット及び第1長さを決定する。転送要素は、第1オフセット及び第1長さに従って第1キーを決定する。転送要素は、第1キーに従って第1命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【0046】
選択的に、
図1に示される方法において、転送要素により、第1オフセット及び第1長さに従って第1キーが決定されるステップは、以下のステップを含む。
【0047】
ステップ202:転送要素は、パケット中の第1データセグメントを取得する。ここで、第1データセグメントの開始位置は、第1オフセットに従って決定され、かつ第1データセグメントの長さは、第1長さである。
【0048】
ステップ204:転送要素は、第1データセグメントを第1キーとして決定する。
【0049】
ステップ202及びステップ204の詳細については、
図2を参照されたい。
【0050】
例えば、第1データセグメントの開始位置が第1オフセットに従って決定されることは、特に、第1データセグメントの開始位置が第1ベースオフセットと第1オフセットとの合計を用いて識別されることであってもよい。ここで、第1ベースオフセットは0である。
【0051】
上記の技術的解決策において、第1キーは、パケットから得られる。
【0052】
選択的に、
図1に示される方法において、転送要素により、第1オフセット及び第1長さに従って第1キーが決定されるステップは、以下のステップを含む。
【0053】
ステップ302:転送要素は、メタデータ中の第2データセグメントを取得する。ここで、第2データセグメントの開始位置は、第1オフセットに従って決定され、かつ第2データセグメントの長さは、第1長さである。
【0054】
ステップ304:転送要素は、第2データセグメントを第1キーとして決定する。
【0055】
ステップ302及びステップ304の詳細については、
図3を参照されたい。
【0056】
例えば、第2データセグメントの開始位置が第1オフセットに従って決定されることは、特に、第2データセグメントの開始位置が第2ベースオフセットと第1オフセットとの合計を用いて識別されることであってもよい。ここで、第2ベースオフセットは0である。
【0057】
上記の技術的解決策において、第1キーは、メタデータから得られる。
【0058】
選択的に、
図1に示される方法において、メタデータは、転送要素のレジスタに格納される。
【0059】
例えば、レジスタは、NP中に位置してよい。
【0060】
選択的に、
図1に示される方法において、メタデータは、転送要素のメモリに格納されてよい。
【0061】
例えば、メモリは、NPに接続されていてよい。
【0062】
選択的に、
図1に示される方法において、第1命令は、動作を実行するように転送要素に命令するために使用される。ここで、この動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ
を更新
する動作と、パケットにCAR処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも1つを含む。
【0063】
例えば、パケットを修正する動作は、パケット中のデータセグメントを削除する動作、パケット中のデータセグメントを置き換える動作、又はパケット中にデータセグメントを挿入する動作であってよい。
【0064】
例えば、チェックサムは、IPチェックサム、伝送制御プロトコル(Transmission Control Protocol,TCP)チェックサム、又はユーザデータグラムプロトコル(User Datagram Protocol,UDP)チェックサムであってよい。
【0065】
選択的に、
図1に示される方法において、転送要素により、第1命令に従ってパケットが処理されるステップは、以下のステップを含む。
【0066】
ステップ402:転送要素は、第1テーブルに従って、ベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子を決定する。ここで、ベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子は、第1キーに対応する。
【0067】
例えば、ベースオフセットは、第1ベースオフセットと第1オフセットとの合計に等しい。
【0068】
ステップ404:転送要素は、ベースオフセット、第2オフセット、及び第2長さに従って第2キーを決定し、第2キーに従って第2テーブルを検索して、第2命令を決定する。
【0069】
例えば、1つ以上の第2キーが存在してよい。複数の第2キーが存在する場合、複数のベースオフセットが存在し、複数の第2オフセットが存在し、かつ複数の第2長さが存在する。複数のベースオフセットは、複数のキーと一対一の関係にある。複数の第2オフセットは、複数のキーと一対一の関係にある。複数の第2長さは、複数のキーと一対一の関係にある。
【0070】
例えば、第2キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第2キーは、パケット及びメタデータから得られてもよい。
【0071】
ステップ406:転送要素は、第2命令に従ってパケットを処理する。
【0072】
例えば、第2命令は、ONFによって公開されたOpenFlowスイッチ仕様書1.3.0において規定された命令であってよい。
【0073】
ステップ402、ステップ404、及びステップ406の詳細については、
図4を参照されたい。
【0074】
図5は、本発明の一実施形態による転送要素の概略的な構成図である。転送要素は、
図1に示された方法を実行するように構成されてよい。例えば、転送要素は、ルータ、スイッチ、ファイアウォール、又はロードバランサであってよい。
図5を参照すると、転送要素は、受信回路502と、検索ユニット504と、決定ユニット506と、処理ユニット508とを含む。
【0075】
受信ユニット502は、インバウンドポート介してパケットを受信するように構成される。
【0076】
例えば、パケットは、IPパケット、イーサネットパケット、又はMPLSパケットであってよい。
【0077】
検索ユニット504は、インバウンドポートに従ってポートテーブルを検索して、第1オフセット、第1長さ、及び第1テーブルの識別子を決定するように構成される。ここで、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに対応する。
【0078】
例えば、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに一致するポートテーブルのエントリに格納される。1つ以上の第1オフセットが存在してよい。1つ以上の第1長さが存在してよい。複数のオフセットは、複数の長さと一対一の関係にある。
【0079】
例えば、第1テーブルは、MACプロトコルテーブル、ARPテーブル、FIB、又はMPLSラベルテーブルであってよい。
【0080】
例えば、検索ユニット504は、検索エンジンであってよい。
【0081】
決定ユニット506は、第1オフセット及び第1長さに従って第1キーを決定し、第1キーに従って第1テーブルを検索して、第1命令を決定するように構成される。
【0082】
例えば、第1キーは、パケット中のデータセグメントであってよい。また、第1キーは、メタデータ中のデータセグメントであってもよい。メタデータは、レジスタに格納される。
【0083】
例えば、1つ以上の第1キーが存在してよい。複数のキーは、複数のオフセットと一対一の関係にある。複数のキーは、複数の長さと一対一の関係にある。
【0084】
例えば、第1キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第1キーは、パケット及びメタデータから得られてもよい。
【0085】
例えば、決定ユニット506は、検索エンジン及び命令実行回路であってよい。
【0086】
処理ユニット508は、第1命令に従ってパケットを処理するように構成される。
【0087】
例えば、第1命令は、ONFによって公開されたOpenFlowスイッチ仕様書1.3.0において規定された命令であってよい。
【0088】
例えば、処理ユニット508は、NPであってよく、特に、処理ユニット508は、NP中の命令実行回路であってもよい。
【0089】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第1オフセット及び第1長さを決定する。転送要素は、第1オフセット及び第1長さに従って第1キーを決定する。転送要素は、第1キーに従って第1命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【0090】
選択的に、
図5に示される転送要素において、検索ユニット504は、
パケット中の第1データセグメントを取得し、
第1データセグメントを第1キーとして決定するように構成される。ここで、第1データセグメントの開始位置は、第1オフセットに従って決定され、かつ第1データセグメントの長さは、第1長さである。
【0091】
例えば、第1データセグメントの開始位置が第1オフセットに従って決定されることは、特に、第1データセグメントの開始位置が第1ベースオフセットと第1オフセットとの合計を用いて識別されることであってもよい。ここで、第1ベースオフセットは0である。
【0092】
上記の技術的解決策において、第1キーは、パケットから得られる。
【0093】
選択的に、
図5に示される転送要素において、検索ユニット504は、
メタデータ中の第2データセグメントを取得し、
第2データセグメントを第1キーとして決定するように構成される。ここで、第2データセグメントの開始位置は、第1オフセットに従って決定され、かつ第2データセグメントの長さは、第1長さである。
【0094】
例えば、第2データセグメントの開始位置が第1オフセットに従って決定されることは、特に、第2データセグメントの開始位置が第2ベースオフセットと第1オフセットとの合計を用いて識別されることであってもよい。ここで、第2ベースオフセットは0である。
【0095】
上記の技術的解決策において、第1キーは、メタデータから得られる。
【0096】
選択的に、
図5に示される転送要素は、レジスタ又はメモリをさらに含む。
【0097】
メタデータ、レジスタ又はメモリに格納される。
【0098】
選択的に、
図5に示される転送要素において、第1命令は、動作を実行するように転送要素に命令するために使用される。ここで、この動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ
を更新
する動作と、パケットにCAR処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも1つを含む。
【0099】
例えば、パケットを修正する動作は、パケット中のデータセグメントを削除する動作、パケット中のデータセグメントを置き換える動作、又はパケット中にデータセグメントを挿入する動作であってよい。
【0100】
例えば、チェックサムは、IPチェックサム、伝送制御プロトコルチェックサム、又はUDPチェックサムであってよい。
【0101】
選択的に、
図5に示される転送要素において、処理ユニット508は、
第1テーブルに従って、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子を決定し、
パケットのベースオフセット、第2オフセット、及び第2長さに従って第2キーを決定し、第2キーに従って第2テーブルを検索して、第2命令を決定し、
第2命令に従ってパケットを処理するように構成される。ここで、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子は、第1キーに対応する。
【0102】
例えば、ベースオフセットは、第1ベースオフセットと第1オフセットとの合計に等しい。
【0103】
例えば、1つ以上の第2キーが存在してよい。複数の第2キーが存在する場合、複数のベースオフセットが存在し、複数の第2オフセットが存在し、かつ複数の第2長さが存在する。複数のベースオフセットは、複数のキーと一対一の関係にある。複数の第2オフセットは、複数のキーと一対一の関係にある。複数の第2長さは、複数のキーと一対一の関係にある。
【0104】
例えば、第2キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第2キーは、パケット及びメタデータから得られてもよい。
【0105】
例えば、第2命令は、ONFによって公開されたOpenFlowスイッチ仕様書1.3.0において規定された命令であってよい。
【0106】
図6は、本発明の一実施形態による転送要素の概略的な構成図である。転送要素は、
図1に示された方法を実行するように構成されてよい。例えば、転送要素は、ルータ、スイッチ、ファイアウォール、又はロードバランサであってよい。
図6を参照すると、転送要素は、インタフェース回路601と、インタフェース回路602と、メモリ(memory)603と、検索エンジン(search engine)604と、プロセッサ609とを含む。プロセッサ609は、命令実行回路605と、命令メモリ607とを含む。選択的に、プロセッサ609は、レジスタ(register)606と、データメモリ608とを含んでよい。
【0107】
受信回路601は、インバウンドポート介してパケットを受信するように構成される。
【0108】
プロセッサ609は、受信回路601に接続されており、プロセッサ609は、メモリ603に接続されており、かつプロセッサ609は、命令実行回路605と、命令メモリ607とを含む。ここで、命令実行回路605は、命令メモリ607に接続されており、命令メモリ607は、コンピュータ命令を格納するように構成され、かつ命令実行回路605は、コンピュータ命令を読み取ることによって、
検索エンジン604が、インバウンドポートに従ってポートテーブルを検索して、第1オフセット、第1長さ、及び第1テーブルの識別子を決定するよう、検索エンジン604をトリガする手順と、
第1オフセット及び第1長さに従って第1キーを決定する手順と、
検索エンジン604が、第1キーに従って第1テーブルを検索して、第1命令を決定するよう、検索エンジン604をトリガする手順と、
第1命令に従ってパケットを処理する手順とを実行し、ここで、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに対応し、かつポートテーブルは、メモリ603に格納される。
【0109】
例えば、プロセッサ609は、クロスバー(crossbar)を用いてメモリ603に接続されていてよい。プロセッサ609は、クロスバーを用いて検索エンジン604に接続されていてよい。
【0110】
例えば、パケットは、IPパケット、イーサネットパケット、又はMPLSパケットであってよい。
【0111】
例えば、第1オフセット、第1長さ、及び第1テーブルの識別子は、インバウンドポートに一致するポートテーブルのエントリに格納される。1つ以上の第1オフセットが存在してよい。1つ以上の第1長さが存在してよい。複数のオフセットは、複数の長さと一対一の関係にある。
【0112】
図7は、ポートテーブルのエントリの形式の概略図である。
図7中のインバウンドポート701、第1オフセット702、第1長さ703、及び第1テーブルの識別子704は、それぞれ、上記のインバウンドポート、第1オフセット、第1長さ、及び第1テーブルの識別子に対応する。
【0113】
例えば、第1テーブルは、MACプロトコルテーブル、ARPテーブル、FIB、又はMPLSラベルテーブルであってよい。
【0114】
例えば、第1キーは、パケット中のデータセグメントであってよい。また、第1キーは、メタデータ中のデータセグメントであってもよい。メタデータは、レジスタに格納される。
【0115】
例えば、1つ以上の第1キーが存在してよい。複数のキーは、複数のオフセットと一対一の関係にある。複数のキーは、複数の長さと一対一の関係にある。
【0116】
例えば、第1キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第1キーは、パケット及びメタデータから得られてもよい。
【0117】
例えば、第1命令は、ONFによって公開されたOpenFlowスイッチ仕様書1.3.0において規定された命令であってよい。
【0118】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第1オフセット及び第1長さを決定する。転送要素は、第1オフセット及び第1長さに従って第1キーを決定する。転送要素は、第1キーに従って第1命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【0119】
選択的に、
図6に示される転送要素において、検索エンジン604は、パケット中の第1データセグメントを取得するようにさらに構成される。ここで、第1データセグメントの開始位置は、第1オフセットに従って決定され、かつ第1データセグメントの長さは、第1長さである。
【0120】
命令実行回路605は、第1データセグメントを第1キーとして決定するようにさらに構成される。
【0121】
プロセッサは、データメモリ608をさらに含む。ここで、データメモリ608は、命令実行回路605に接続されており、かつパケットは、データメモリ608に格納される。
【0122】
例えば、第1データセグメントの開始位置が第1オフセットに従って決定されることは、特に、第1データセグメントの開始位置が第1ベースオフセットと第1オフセットとの合計を用いて識別されることであってもよい。ここで、第1ベースオフセットは0である。
【0123】
上記の技術的解決策において、第1キーは、パケットから得られる。
【0124】
選択的に、
図6に示される転送要素において、検索エンジン604は、メタデータ中の第2データセグメントを取得するようにさらに構成される。ここで、第2データセグメントの開始位置は、第1オフセットに従って決定され、かつ第2データセグメントの長さは、第1長さである。
【0125】
命令実行回路605は、第2データセグメントを第1キーとして決定するようにさらに構成される。
【0126】
例えば、第2データセグメントの開始位置が第1オフセットに従って決定されることは、特に、第2データセグメントの開始位置が第2ベースオフセットと第1オフセットとの合計を用いて識別されることであってもよい。ここで、第2ベースオフセットは0である。
【0127】
上記の技術的解決策において、第1キーは、メタデータから得られる。
【0128】
選択的に、
図6に示される転送要素において、プロセッサ609は、レジスタ606をさらに含む。ここで、レジスタ606は、命令実行回路605に接続されており、かつメタデータは、レジスタ606に格納される。
【0129】
選択的に、
図6に示される転送要素において、メタデータは、メモリ603に格納される。
【0130】
選択的に、
図6に示される転送要素において、第1命令は、動作を実行するように命令実行回路に命令するために使用される。ここで、この動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ
を更新
する動作と、パケットにCAR処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも1つを含む。
【0131】
例えば、パケットを修正する動作は、パケット中のデータセグメントを削除する動作、パケット中のデータセグメントを置き換える動作、又はパケット中にデータセグメントを挿入する動作であってよい。
【0132】
例えば、チェックサムは、IPチェックサム、TCPチェックサム、又はUDPチェックサムであってよい。
【0133】
例えば、パケットは、インタフェース回路602によって送信されてよい。
【0134】
選択的に、
図6に示される転送要素において、命令実行回路605は、第1テーブルに従って、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子を決定するようにさらに構成される。ここで、パケットのベースオフセット、第2オフセット、第2長さ、及び第2テーブルの識別子は、第1キーに対応する。
【0135】
命令実行回路605は、パケットのベースオフセット、第2オフセット、及び第2長さに従って第2キーを決定するようにさらに構成される。
【0136】
命令実行回路605は、検索エンジン604が、第2キーに従って第2テーブルを検索して、第2命令を決定するよう、検索エンジン604をトリガするようにさらに構成される。
【0137】
命令実行回路605は、第2命令に従ってパケットを処理するようにさらに構成される。
【0138】
例えば、ベースオフセットは、第1ベースオフセットと第1オフセットとの合計に等しい。
【0139】
例えば、1つ以上の第2キーが存在してよい。複数の第2キーが存在する場合、複数のベースオフセットが存在し、複数の第2オフセットが存在し、かつ複数の第2長さが存在する。複数のベースオフセットは、複数のキーと一対一の関係にある。複数の第2オフセットは、複数のキーと一対一の関係にある。複数の第2長さは、複数のキーと一対一の関係にある。
【0140】
例えば、第2キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第2キーは、パケット及びメタデータから得られてもよい。
【0141】
例えば、第2命令は、ONFによって公開されたOpenFlowスイッチ仕様書1.3.0において規定された命令であってよい。
【0142】
例えば、第2テーブルのエントリは、第2キーと、第2命令とを含む。
図8は、第2テーブルのエントリの形式の概略図である。
図8中の第2キー801及び第2命令802は、それぞれ、上記の第2キー及び第2命令に対応する。
【0143】
当技術分野において通常の知識を有する者は、この明細書において開示される実施形態として記載された実施例の組合せにより、ユニット及びアルゴリズムステップが、電子的ハードウェアによって、又はコンピュータソフトウェアと電子的ハードウェアとの組合せによって実装され得ることを理解できよう。
【0144】
機能がハードウェア又はソフトウェアのいずれによって実行されるかは、技術的解決策の特定の用途又は設計制約条件によって決まる。当業者は、特定の用途毎に異なる方法を使用して、記載された機能を実施してよく、そのような実施の形態は、本発明の範囲を逸脱するものとみなされてはならない。
【0145】
簡便かつ簡潔な説明を目的として、上記のシステム、装置、及びユニットの詳細な動作プロセスについて、上記の方法の実施形態における対応するプロセスへの参照がなされてよく、その詳細はここでは繰返して説明されない、ということが当業者には明確に理解されよう。
【0146】
本出願によって提供されるいくつかの実施形態において、記載されたシステム、装置、及び方法は、別の方法で実施され得ることを理解されたい。例えば、記載された装置の実施形態は、例示に過ぎない。例えば、ユニットの分割は、論理的機能の分割に過ぎず、実際の実装の際には、他の分割が行われてよい。例えば、複数のユニット又はコンポーネントは、組み合わせられるか、又は別のシステムに一体化されてよく、また、いくつかの特徴は、無視されるか、又は実行されなくてよい。さらに、示された、又は説明された相互接続又は直接的接続又は通信接続は、いくつかのインタフェースを介して実装されてよい。装置又はユニット間の非直接的接続又は通信接続は、電子的、機械的、又はその他の形態で実装されてよい。
【0147】
分離した部分として記載されたユニットは、それが物理的な分離であってもなくてもよく、かつユニットとして記載された部分は、物理的なユニットであってもなくてもよく、1つの場所に位置していてよく、又は複数のネットワークユニットに分散されていてもよい。ユニットの一部又はすべては、実施形態の解決策の目的を達成するための実際の必要性に従って選択されてよい。
【0148】
さらに、本発明の実施形態における機能ユニットは、1つの処理ユニットに一体化されてよく、又は複数のユニットの各々が物理的に単独で存在してもよく、又は2つ以上のユニットが1つのユニットに一体化されてもよい。
【0149】
機能は、独立した製品としてソフトウェア機能ユニットの形態で実装され、販売され、使用される場合、コンピュータ読み取り可能な記憶媒体に格納されてよい。そのような理解に基づき、本発明の技術的解決策は本質的に、又は従来技術に寄与する部分は、又は技術的解決策の部分は、ソフトウェア製品の形態で実装され得る。コンピュータソフトウェア製品は、記憶媒体に格納され、本発明の実施形態として説明された方法のステップのすべて又は一部を実行するように(パーソナルコンピュータ、サーバ、又はネットワークデバイスであってよい)コンピュータデバイスに命令するためのいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、ROM(Read Only Memory)、RAM(Random Access Memory)、磁気ディスク、又は光学ディスクなど、プログラムコードを格納可能な任意の媒体を含む。
【0150】
以上の記載は、本発明の特定の実施の方法に過ぎず、本発明の保護範囲を限定することを意図したものではない。本発明によって開示される技術的範囲内で当業者が容易に想到する任意の変形例又は置換例は、本発明の保護範囲内にある。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従う。