(57)【要約】【課題】パケット処理方法及び転送要素を提供する。【解決手段】本発明の実施形態は、パケット処理方法を提供し、方法は、転送要素により、インバウンドポートを介してパケットを受信するステップと、インバウンドポートに従ってポートテーブルを検索して、第１オフセット、第１長さ、及び第１テーブルの識別子を決定するステップと、第１オフセット及び第１長さに従って第１キーを決定し、第１キーに従って第１テーブルを検索して、第１命令を決定するステップと、第１命令に従ってパケットを処理するステップとを有する。ここで、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに対応する。さらに、対応する転送要素が提供される。上記の技術的解決策によれば、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、さまざまなデータ形式のパケットを柔軟にサポートできる。【選択図】図１
2017034723.tif 000002
【特許請求の範囲】
【請求項１】
パケット処理方法であって、
転送要素により、インバウンドポートを介してパケットが受信されるステップと、
前記転送要素により、前記インバウンドポートに従ってポートテーブルが検索されて、第１オフセット、第１長さ、及び第１テーブルの識別子が決定されるステップと、
前記転送要素により、前記第１オフセット及び前記第１長さに従って第１キーが決定され、前記第１キーに従って前記第１テーブルが検索されて、第１命令が決定されるステップと、
前記転送要素により、前記第１命令に従って前記パケットが処理されるステップと
を有し、
前記第１オフセット、前記第１長さ、及び前記第１テーブルの前記識別子は、前記インバウンドポートに対応する、方法。
【請求項２】
前記転送要素により、前記第１オフセット及び前記第１長さに従って第１キーが決定され、前記第１キーに従って前記第１テーブルが検索されて、第１命令が決定される前記ステップが、
前記転送要素により、前記パケット中の第１データセグメントが取得されるステップと、
前記転送要素により、前記第１データセグメントが前記第１キーとして決定されるステップと
を含み、
前記第１データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第１データセグメントの長さは、前記第１長さである、請求項１に記載の方法。
【請求項３】
前記転送要素により、前記第１オフセット及び前記第１長さに従って第１キーが決定され、前記第１キーに従って前記第１テーブルが検索されて、第１命令が決定される前記ステップが、
前記転送要素により、メタデータ中の第２データセグメントが取得されるステップと、
前記転送要素により、前記第２データセグメントが前記第１キーとして決定されるステップと
を含み、
前記第２データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第２データセグメントの長さは、前記第１長さである、請求項１に記載の方法。
【請求項４】
前記メタデータが、前記転送要素のレジスタに格納されるか、又は
前記メタデータが、前記転送要素のメモリに格納される、請求項３に記載の方法。
【請求項５】
前記第１命令は、動作を実行するように前記転送要素に命令するために使用され、
前記動作は、
前記パケットを修正する動作と、
前記パケットのチェックサムを計算する動作と、
前記メタデータを書き込む動作と、
前記メタデータを読み取る動作と、
カウンタを更新する動作と、
前記パケットにＣｏｍｍｉｔｔｅｄ  Ａｃｃｅｓｓ  Ｒａｔｅ  ＣＡＲ処理を実行する動作と、
前記パケットを破棄する動作と、
前記パケットを送信する動作と、
前記パケットのベースオフセットを修正する動作とのうちの少なくとも１つを含む、請求項１ないし４のいずれか一項に記載の方法。
【請求項６】
前記転送要素により、前記第１命令に従って前記パケットが処理される前記ステップが、
前記転送要素により、前記第１テーブルに従って、前記パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子が決定されるステップと、
前記転送要素により、前記パケットの前記ベースオフセット、前記第２オフセット、及び前記第２長さに従って第２キーが決定され、前記第２キーに従って前記第２テーブルが検索されて、第２命令が決定されるステップと、
前記転送要素により、前記第２命令に従って前記パケットが処理されるステップと
を含み、
前記パケットの前記ベースオフセット、前記第２オフセット、前記第２長さ、及び前記第２テーブルの前記識別子は、前記第１キーに対応する、請求項１ないし４のいずれか一項に記載の方法。
【請求項７】
インバウンドポートを介してパケットを受信するように構成された受信回路と、
前記インバウンドポートに従ってポートテーブルを検索して、第１オフセット、第１長さ、及び第１テーブルの識別子を決定するように構成された検索ユニットと、
前記第１オフセット及び前記第１長さに従って第１キーを決定し、前記第１キーに従って前記第１テーブルを検索して、第１命令を決定するように構成された決定ユニットと、
前記第１命令に従って前記パケットを処理するように構成された処理ユニットと
を具備し、
前記第１オフセット、前記第１長さ、及び前記第１テーブルの前記識別子は、前記インバウンドポートに対応する、転送要素。
【請求項８】
前記検索ユニットが、
前記パケット中の第１データセグメントを取得し、
前記第１データセグメントを前記第１キーとして決定するようにさらに構成され、
前記第１データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第１データセグメントの長さは、前記第１長さである、請求項７に記載の転送要素。
【請求項９】
前記検索ユニットが、
メタデータ中の第２データセグメントを取得し、
前記第２データセグメントを前記第１キーとして決定するようにさらに構成され、
前記第２データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第２データセグメントの長さは、前記第１長さである、請求項７に記載の転送要素。
【請求項１０】
レジスタ又はメモリをさらに具備し、
前記メタデータが、前記レジスタ又は前記メモリに格納される、請求項９に記載の転送要素。
【請求項１１】
前記第１命令は、動作を実行するように転送要素に命令するために使用され、
前記動作は、
前記パケットを修正する動作と、
前記パケットのチェックサムを計算する動作と、
前記メタデータを書き込む動作と、
前記メタデータを読み取る動作と、
カウンタ更新動作と、  前記パケットにＣＡＲ処理を実行する動作と、
前記パケットを破棄する動作と、
前記パケットを送信する動作と、
前記パケットのベースオフセットを修正する動作と
のうちの少なくとも１つを含む、請求項７ないし１０のいずれか一項に記載の転送要素。
【請求項１２】
前記処理ユニットが、
前記第１テーブルに従って、前記パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子を決定し、
前記パケットの前記ベースオフセット、前記第２オフセット、及び前記第２長さに従って第２キーを決定し、前記第２キーに従って前記第２テーブルを検索して、第２命令を決定し、
前記第２命令に従って前記パケットを処理するようにさらに構成され、
前記パケットの前記ベースオフセット、前記第２オフセット、前記第２長さ、及び前記第２テーブルの前記識別子は、前記第１キーに対応する、請求項７ないし１０のいずれか一項に記載の転送要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信技術に関し、詳細には、パケット処理方法及び転送要素に関する。
【背景技術】
【０００２】
従来技術において、転送要素は、パケットを受信する前に当該パケットのデータ形式を判定する必要があり、例えば、転送要素は、パケットがＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）であるか又はＭＰＬＳ（Ｍｕｌｔｉｐｌｅ  Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）であるかを判定して当該パケットを処理する。例えば、スイッチは、イーサネット（登録商標）パケットを受信する前に、当該イーサネットパケットが従うプロトコルがメディアアクセス制御（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ，ＭＡＣ）プロトコルであると判定する必要がある。次いで、スイッチは、ＭＡＣプロトコルに従ってイーサネットパケットのＭＡＣプロトコルヘッダを解析して、イーサネットパケットの宛先ＭＡＣプロトコルアドレスを取得する。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の実施態様は、パケット処理方法及び転送要素を提供する。転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、したがって、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【０００４】
第１態様によれば、パケット処理方法が提供され、パケット処理方法は、
転送要素により、インバウンドポートを介してパケットが受信されるステップと、
転送要素により、インバウンドポートに従ってポートテーブル（ｐｏｒｔ  ｔａｂｌｅ）が検索されて、第１オフセット（ｏｆｆｓｅｔ）、第１長さ（ｌｅｎｇｔｈ）、及び第１テーブルの識別子が決定されるステップと、
転送要素により、第１オフセット及び第１長さに従って第１キー（ｋｅｙ）が決定され、第１キーに従って第１テーブルが検索されて、第１命令（ｉｎｓｔｒｕｃｔｉｏｎ）が決定されるステップと、
転送要素により、第１命令に従ってパケットが処理されるステップとを有し、ここで、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに対応する。
【０００５】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第１オフセット及び第１長さを決定する。転送要素は、第１オフセット及び第１長さに従って第１キーを決定する。転送要素は、第１キーに従って第１命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【０００６】
第１態様の第１実施可能態様において、転送要素により、第１オフセット及び第１長さに従って第１キーが決定されるステップは、
転送要素により、パケット中の第１データセグメント（ｄａｔａ  ｓｅｇｍｅｎｔ）が取得されるステップと、
転送要素により、第１データセグメントが第１キーとして決定されるステップとを含み、ここで、第１データセグメントの開始位置は、第１オフセットに従って決定され、かつ第１データセグメントの長さは、第１長さである。
【０００７】
第１態様の第２実施可能態様において、転送要素により、第１オフセット及び第１長さに従って第１キーが決定されるステップは、
転送要素により、メタデータ（ｍｅｔｅ  ｄａｔａ）中の第２データセグメントが取得されるステップと、
転送要素により、第２データセグメントが第１キーとして決定されるステップとを含み、ここで、第２データセグメントの開始位置は、第１オフセットに従って決定され、かつ第２データセグメントの長さは、第１長さである。
【０００８】
第１態様の第２実施可能態様に従う、第１態様の第３実施可能態様において、メタデータは、転送要素のレジスタ（ｒｅｇｉｓｔｅｒ）に格納されるか、又はメタデータは、転送要素のメモリ（ｍｅｍｏｒｙ）に格納される。
【０００９】
第１態様、第１態様の第１実施可能態様、第１態様の第２実施可能態様、又は第１態様の第３実施可能態様に従う、第１態様の第４実施可能態様において、第１命令は、動作を実行するように転送要素に命令するために使用され、ここで、動作は、パケットを修正する動作と、パケットのチェックサム（ｃｈｅｃｋｓｕｍ）を計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタを更新する（ｃｏｕｎｔｅｒ  ｕｐｄａｔｅ）動作と、パケットにＣＡＲ（Ｃｏｍｍｉｔｔｅｄ  Ａｃｃｅｓｓ  Ｒａｔｅ）処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセット（ｂａｓｅ  ｏｆｆｓｅｔ）を修正する動作とのうちの少なくとも１つを含む。
【００１０】
第１態様、第１態様の第１実施可能態様、第１態様の第２実施可能態様、又は第１態様の第３実施可能態様に従う、第１態様の第５実施可能態様において、転送要素により、第１命令に従ってパケットが処理されるステップは、
転送要素により、第１テーブルに従って、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子が決定されるステップと、
転送要素により、パケットのベースオフセット、第２オフセット、及び第２長さに従って第２キーが決定され、第２キーに従って第２テーブルが検索されて、第２命令が決定されるステップと、
転送要素により、第２命令に従ってパケットが処理されるステップとを含み、ここで、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子は、第１キーに対応する。
【００１１】
第２態様によれば、転送要素が提供され、転送要素は、
インバウンドポートを介してパケットを受信するように構成された受信回路と、
インバウンドポートに従ってポートテーブルを検索して、第１オフセット、第１長さ、及び第１テーブルの識別子を決定するように構成された検索ユニットと、
第１オフセット及び第１長さに従って第１キーを決定し、第１キーに従って第１テーブルを検索して、命令を決定するように構成された決定ユニットと、
命令に従ってパケットを処理するように構成された処理ユニットとを具備し、ここで、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに対応する。
【００１２】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第１オフセット及び第１長さを決定する。転送要素は、第１オフセット及び第１長さに従って第１キーを決定する。転送要素は、第１キーに従って第１命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【００１３】
第２態様の第１実施可能態様において、検索ユニットは、
パケット中の第１データセグメントを取得し、
第１データセグメントを第１キーとして決定するようにさらに構成され、ここで、第１データセグメントの開始位置は、第１オフセットに従って決定され、かつ第１データセグメントの長さは、第１長さである。
【００１４】
第２態様の第２実施可能態様において、検索ユニットは、
メタデータ中の第２データセグメントを取得し、
第２データセグメントを第１キーとして決定するようにさらに構成され、ここで、第２データセグメントの開始位置は、第１オフセットに従って決定され、かつ第２データセグメントの長さは、第１長さである。
【００１５】
第２態様の第２実施可能態様に従う、第２態様の第３実施可能態様において、転送要素は、レジスタ又はメモリをさらに具備し、ここで、メタデータは、レジスタ又はメモリに格納される。
【００１６】
第２態様、第２態様の第１実施可能態様、第２態様の第２実施可能態様、又は第２態様の第３実施可能態様に従う、第２態様の第４実施可能態様において、命令は、動作を実行するように転送要素に命令するために使用され、ここで、動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ更新動作と、パケットにＣＡＲ処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも１つを含む。
【００１７】
第２態様、第２態様の第１実施可能態様、第２態様の第２実施可能態様、又は第２態様の第３実施可能態様に従う、第２態様の第５実施可能態様において、処理ユニットは、
第１テーブルに従って、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子を決定し、
パケットのベースオフセット、第２オフセット、及び第２長さに従って第２キーを決定し、第２キーに従って第２テーブルを検索して、第２命令を決定し、  第２命令に従ってパケットを処理するようにさらに構成され、ここで、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子は、第１キーに対応する。
【００１８】
第３態様によれば、転送要素が提供され、転送要素は、受信回路と、プロセッサと、検索エンジン（ｓｅａｒｃｈ  ｅｎｇｉｎｅ）と、メモリとを具備し、ここで、
受信回路は、インバウンドポートを介してパケットを受信するように構成され、
プロセッサは、受信回路に接続されており、プロセッサは、メモリに接続されており、かつプロセッサは、命令実行回路と、命令メモリとを具備し、ここで、命令実行回路は、命令メモリに接続されており、命令メモリは、コンピュータ命令を格納するように構成され、かつ命令実行回路は、コンピュータ命令を読み取ることによって、
検索エンジンが、インバウンドポートに従ってポートテーブルを検索して、第１オフセット、第１長さ、及び第１テーブルの識別子を決定するよう、検索エンジンをトリガする手順と、
第１オフセット及び第１長さに従って第１キーを決定する手順と、
検索エンジンが、第１キーに従って第１テーブルを検索して、第１命令を決定するよう、検索エンジンをトリガする手順と、
第１命令に従ってパケットを処理する手順とを実行し、ここで、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに対応し、かつポートテーブルは、メモリに格納される。
【００１９】
第３態様の第１実施可能態様において、検索エンジンは、パケット中の第１データセグメントを取得するようにさらに構成され、ここで、第１データセグメントの開始位置は、第１オフセットに従って決定され、かつ第１データセグメントの長さは、第１長さであり、
命令実行回路は、第１データセグメントを第１キーとして決定するようにさらに構成され、かつ
プロセッサは、データメモリをさらに具備し、ここで、データメモリは、命令実行回路に接続されており、かつパケットは、データメモリに格納される。
【００２０】
第３態様の第２実施可能態様において、検索エンジンは、メタデータ中の第２データセグメントを取得するようにさらに構成され、ここで、第２データセグメントの開始位置は、第１オフセットに従って決定され、かつ第２データセグメントの長さは、第１長さであり、かつ
命令実行回路は、第２データセグメントを第１キーとして決定するようにさらに構成される。
【００２１】
第３態様の第２実施可能態様に従う、第３態様の第３実施可能態様において、プロセッサは、レジスタをさらに具備し、ここで、レジスタは、命令実行回路に接続されており、かつメタデータは、レジスタに格納される。
【００２２】
第３態様の第２実施可能態様に従う、第３態様の第４実施可能態様において、メタデータは、メモリに格納される。
【００２３】
第３態様、第３態様の第１実施可能態様、第３態様の第２実施可能態様、第３態様の第３実施可能態様、又は第３態様の第４実施可能態様に従う、第３態様の第５実施可能態様において、第１命令は、動作を実行するように命令実行回路に命令するために使用され、ここで、動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ更新動作と、パケットにＣＡＲ処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも１つを含む。
【００２４】
第３態様、第３態様の第１実施可能態様、第３態様の第２実施可能態様、第３態様の第３実施可能態様、又は第３態様の第４実施可能態様に従う、第４態様の第６実施可能態様において、命令実行回路は、第１テーブルに従って、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子を決定するようにさらに構成され、ここで、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子は、第１キーに対応し、
命令実行回路は、パケットのベースオフセット、第２オフセット、及び第２長さに従って第２キーを決定するようにさらに構成され、
命令実行回路は、検索エンジンが、第２キーに従って第２テーブルを検索して、第２命令を決定するよう、検索エンジンをトリガするようにさらに構成され、かつ
命令実行回路は、第２命令に従ってパケットを処理するようにさらに構成される。
【００２５】
本発明の実施形態における又は従来技術における技術的解決策をより明瞭に説明するために、実施形態及び従来技術を説明するために必要とされる添付の図面について、以下に簡単に説明する。当然ながら、以下の説明における添付の図面は、本発明のいくつかの実施形態を示すものであり、当分野における通常の知識を有する者は、創造的労力無しに、これらの添付の図面から他の図面を導き出せよう。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施形態によるパケット処理方法の概略的なフロー図である。
【図２】本発明の一実施形態によるパケット処理方法の概略的なフロー図である。
【図３】本発明の一実施形態によるパケット処理方法の概略的なフロー図である。
【図４】本発明の一実施形態によるパケット処理方法の概略的なフロー図である。
【図５】本発明の一実施形態による転送要素の概略的な構成図である。
【図６】本発明の一実施形態による転送要素の概略的な構成図である。
【図７】本発明の一実施形態によるエントリの形式の概略図である。
【図８】本発明の一実施形態によるエントリの形式の概略図である。
【発明を実施するための形態】
【００２７】
本発明の実施形態の目的、技術的解決策、及び利点を明確にするために、以下では、本発明の実施形態の添付の図面を参照して本発明の実施形態の技術的解決策について明瞭かつ十分に説明する。当然ながら、記載される実施形態は、本発明の実施形態のすべてではなく、その一部に過ぎない。当分野における通常の知識を有する者が本発明の実施形態に基づいて創造的労力無しに得る他のすべての実施形態は、本発明の保護範囲内にある。
【００２８】
図１は、本発明の一実施形態によるパケット処理方法の概略的なフロー図である。図１を参照すると、この方法は、以下のステップを有する。
【００２９】
ステップ１０２：転送要素は、インバウンドポートを介してパケットを受信する。
【００３０】
例えば、転送要素は、ルータ、スイッチ、ファイアウォール、又はロードバランサであってよい。
【００３１】
例えば、パケットは、ＩＰパケット、イーサネットパケット、又はＭＰＬＳパケットであってよい。
【００３２】
例えば、ステップ１０２は、受信回路によって実行されてよい。
【００３３】
ステップ１０４：転送要素は、インバウンドポートに従ってポートテーブルを検索して、第１オフセット、第１長さ、及び第１テーブルの識別子を決定する。ここで、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに対応する。
【００３４】
例えば、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに一致するポートテーブルのエントリに格納される。１つ以上の第１オフセットが存在してよい。１つ以上の第１長さが存在してよい。複数のオフセットは、複数の長さと一対一の関係にある。
【００３５】
例えば、第１テーブルは、ＭＡＣプロトコルテーブル、アドレス解決プロトコル（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ，ＡＲＰ）テーブル、ＦＩＢ（Ｆｏｒｗａｒｄｉｎｇ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂａｓｅ）、又はＭＰＬＳラベルテーブルであってよい。
【００３６】
例えば、ステップ１０４は、検索エンジンによって実行されてよい。
【００３７】
ステップ１０６：転送要素は、第１オフセット及び第１長さに従って第１キーを決定し、第１キーに従って第１テーブルを検索して、第１命令を決定する。
【００３８】
例えば、第１キーは、パケット中のデータセグメントであってよい。また、第１キーは、メタデータ中のデータセグメントであってもよい。メタデータは、レジスタに格納される。
【００３９】
例えば、１つ以上の第１キーが存在してよい。複数のキーは、複数のオフセットと一対一の関係にある。複数のキーは、複数の長さと一対一の関係にある。
【００４０】
例えば、第１キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第１キーは、パケット及びメタデータから得られてもよい。
【００４１】
例えば、ステップ１０６は、検索エンジン及び命令実行回路によって実行されてよい。
【００４２】
ステップ１０８：転送要素は、第１命令に従ってパケットを処理する。
【００４３】
例えば、第１命令は、ＳＳＯ（Ｓｔａｎｄａｒｄ  Ｓｅｔｔｉｎｇ  Ｏｒｇａｎｉｚａｔｉｏｎ）、ＯＮＦ（Ｏｐｅｎ  Ｎｅｔｗｏｒｋｉｎｇ  Ｆｏｕｎｄａｔｉｏｎ）によって公開されたＯｐｅｎＦｌｏｗスイッチ仕様書１．３．０（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  １．３．０）において規定された命令であってよい。
【００４４】
例えば、ステップ１０８は、ネットワークプロセッサ（Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ，ＮＰ）によって実行されてよい。特に、ステップ１０８は、ＮＰ中の命令実行回路によって実行されてもよい。
【００４５】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第１オフセット及び第１長さを決定する。転送要素は、第１オフセット及び第１長さに従って第１キーを決定する。転送要素は、第１キーに従って第１命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【００４６】
選択的に、図１に示される方法において、転送要素により、第１オフセット及び第１長さに従って第１キーが決定されるステップは、以下のステップを含む。
【００４７】
ステップ２０２：転送要素は、パケット中の第１データセグメントを取得する。ここで、第１データセグメントの開始位置は、第１オフセットに従って決定され、かつ第１データセグメントの長さは、第１長さである。
【００４８】
ステップ２０４：転送要素は、第１データセグメントを第１キーとして決定する。
【００４９】
ステップ２０２及びステップ２０４の詳細については、図２を参照されたい。
【００５０】
例えば、第１データセグメントの開始位置が第１オフセットに従って決定されることは、特に、第１データセグメントの開始位置が第１ベースオフセットと第１オフセットとの合計を用いて識別されることであってもよい。ここで、第１ベースオフセットは０である。
【００５１】
上記の技術的解決策において、第１キーは、パケットから得られる。
【００５２】
選択的に、図１に示される方法において、転送要素により、第１オフセット及び第１長さに従って第１キーが決定されるステップは、以下のステップを含む。
【００５３】
ステップ３０２：転送要素は、メタデータ中の第２データセグメントを取得する。ここで、第２データセグメントの開始位置は、第１オフセットに従って決定され、かつ第２データセグメントの長さは、第１長さである。
【００５４】
ステップ３０４：転送要素は、第２データセグメントを第１キーとして決定する。
【００５５】
ステップ３０２及びステップ３０４の詳細については、図３を参照されたい。
【００５６】
例えば、第２データセグメントの開始位置が第１オフセットに従って決定されることは、特に、第２データセグメントの開始位置が第２ベースオフセットと第１オフセットとの合計を用いて識別されることであってもよい。ここで、第２ベースオフセットは０である。
【００５７】
上記の技術的解決策において、第１キーは、メタデータから得られる。
【００５８】
選択的に、図１に示される方法において、メタデータは、転送要素のレジスタに格納される。
【００５９】
例えば、レジスタは、ＮＰ中に位置してよい。
【００６０】
選択的に、図１に示される方法において、メタデータは、転送要素のメモリに格納されてよい。
【００６１】
例えば、メモリは、ＮＰに接続されていてよい。
【００６２】
選択的に、図１に示される方法において、第１命令は、動作を実行するように転送要素に命令するために使用される。ここで、この動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ更新動作と、パケットにＣＡＲ処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも１つを含む。
【００６３】
例えば、パケットを修正する動作は、パケット中のデータセグメントを削除する動作、パケット中のデータセグメントを置き換える動作、又はパケット中にデータセグメントを挿入する動作であってよい。
【００６４】
例えば、チェックサムは、ＩＰチェックサム、伝送制御プロトコル（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ，ＴＣＰ）チェックサム、又はユーザデータグラムプロトコル（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ，ＵＤＰ）チェックサムであってよい。
【００６５】
選択的に、図１に示される方法において、転送要素により、第１命令に従ってパケットが処理されるステップは、以下のステップを含む。
【００６６】
ステップ４０２：転送要素は、第１テーブルに従って、ベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子を決定する。ここで、ベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子は、第１キーに対応する。
【００６７】
例えば、ベースオフセットは、第１ベースオフセットと第１オフセットとの合計に等しい。
【００６８】
ステップ４０４：転送要素は、ベースオフセット、第２オフセット、及び第２長さに従って第２キーを決定し、第２キーに従って第２テーブルを検索して、第２命令を決定する。
【００６９】
例えば、１つ以上の第２キーが存在してよい。複数の第２キーが存在する場合、複数のベースオフセットが存在し、複数の第２オフセットが存在し、かつ複数の第２長さが存在する。複数のベースオフセットは、複数のキーと一対一の関係にある。複数の第２オフセットは、複数のキーと一対一の関係にある。複数の第２長さは、複数のキーと一対一の関係にある。
【００７０】
例えば、第２キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第２キーは、パケット及びメタデータから得られてもよい。
【００７１】
ステップ４０６：転送要素は、第２命令に従ってパケットを処理する。
【００７２】
例えば、第２命令は、ＯＮＦによって公開されたＯｐｅｎＦｌｏｗスイッチ仕様書１．３．０において規定された命令であってよい。
【００７３】
ステップ４０２、ステップ４０４、及びステップ４０６の詳細については、図４を参照されたい。
【００７４】
図５は、本発明の一実施形態による転送要素の概略的な構成図である。転送要素は、図１に示された方法を実行するように構成されてよい。例えば、転送要素は、ルータ、スイッチ、ファイアウォール、又はロードバランサであってよい。図５を参照すると、転送要素は、受信回路５０２と、検索ユニット５０４と、決定ユニット５０６と、処理ユニット５０８とを含む。
【００７５】
受信ユニット５０２は、インバウンドポート介してパケットを受信するように構成される。
【００７６】
例えば、パケットは、ＩＰパケット、イーサネットパケット、又はＭＰＬＳパケットであってよい。
【００７７】
検索ユニット５０４は、インバウンドポートに従ってポートテーブルを検索して、第１オフセット、第１長さ、及び第１テーブルの識別子を決定するように構成される。ここで、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに対応する。
【００７８】
例えば、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに一致するポートテーブルのエントリに格納される。１つ以上の第１オフセットが存在してよい。１つ以上の第１長さが存在してよい。複数のオフセットは、複数の長さと一対一の関係にある。
【００７９】
例えば、第１テーブルは、ＭＡＣプロトコルテーブル、ＡＲＰテーブル、ＦＩＢ、又はＭＰＬＳラベルテーブルであってよい。
【００８０】
例えば、検索ユニット５０４は、検索エンジンであってよい。
【００８１】
決定ユニット５０６は、第１オフセット及び第１長さに従って第１キーを決定し、第１キーに従って第１テーブルを検索して、第１命令を決定するように構成される。
【００８２】
例えば、第１キーは、パケット中のデータセグメントであってよい。また、第１キーは、メタデータ中のデータセグメントであってもよい。メタデータは、レジスタに格納される。
【００８３】
例えば、１つ以上の第１キーが存在してよい。複数のキーは、複数のオフセットと一対一の関係にある。複数のキーは、複数の長さと一対一の関係にある。
【００８４】
例えば、第１キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第１キーは、パケット及びメタデータから得られてもよい。
【００８５】
例えば、決定ユニット５０６は、検索エンジン及び命令実行回路であってよい。
【００８６】
処理ユニット５０８は、第１命令に従ってパケットを処理するように構成される。
【００８７】
例えば、第１命令は、ＯＮＦによって公開されたＯｐｅｎＦｌｏｗスイッチ仕様書１．３．０において規定された命令であってよい。
【００８８】
例えば、処理ユニット５０８は、ＮＰであってよく、特に、処理ユニット５０８は、ＮＰ中の命令実行回路であってもよい。
【００８９】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第１オフセット及び第１長さを決定する。転送要素は、第１オフセット及び第１長さに従って第１キーを決定する。転送要素は、第１キーに従って第１命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【００９０】
選択的に、図５に示される転送要素において、検索ユニット５０４は、
パケット中の第１データセグメントを取得し、
第１データセグメントを第１キーとして決定するように構成される。ここで、第１データセグメントの開始位置は、第１オフセットに従って決定され、かつ第１データセグメントの長さは、第１長さである。
【００９１】
例えば、第１データセグメントの開始位置が第１オフセットに従って決定されることは、特に、第１データセグメントの開始位置が第１ベースオフセットと第１オフセットとの合計を用いて識別されることであってもよい。ここで、第１ベースオフセットは０である。
【００９２】
上記の技術的解決策において、第１キーは、パケットから得られる。
【００９３】
選択的に、図５に示される転送要素において、検索ユニット５０４は、
メタデータ中の第２データセグメントを取得し、
第２データセグメントを第１キーとして決定するように構成される。ここで、第２データセグメントの開始位置は、第１オフセットに従って決定され、かつ第２データセグメントの長さは、第１長さである。
【００９４】
例えば、第２データセグメントの開始位置が第１オフセットに従って決定されることは、特に、第２データセグメントの開始位置が第２ベースオフセットと第１オフセットとの合計を用いて識別されることであってもよい。ここで、第２ベースオフセットは０である。
【００９５】
上記の技術的解決策において、第１キーは、メタデータから得られる。
【００９６】
選択的に、図５に示される転送要素は、レジスタ又はメモリをさらに含む。
【００９７】
メタデータ、レジスタ又はメモリに格納される。
【００９８】
選択的に、図５に示される転送要素において、第１命令は、動作を実行するように転送要素に命令するために使用される。ここで、この動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ更新動作と、パケットにＣＡＲ処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも１つを含む。
【００９９】
例えば、パケットを修正する動作は、パケット中のデータセグメントを削除する動作、パケット中のデータセグメントを置き換える動作、又はパケット中にデータセグメントを挿入する動作であってよい。
【０１００】
例えば、チェックサムは、ＩＰチェックサム、伝送制御プロトコルチェックサム、又はＵＤＰチェックサムであってよい。
【０１０１】
選択的に、図５に示される転送要素において、処理ユニット５０８は、
第１テーブルに従って、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子を決定し、
パケットのベースオフセット、第２オフセット、及び第２長さに従って第２キーを決定し、第２キーに従って第２テーブルを検索して、第２命令を決定し、
第２命令に従ってパケットを処理するように構成される。ここで、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子は、第１キーに対応する。
【０１０２】
例えば、ベースオフセットは、第１ベースオフセットと第１オフセットとの合計に等しい。
【０１０３】
例えば、１つ以上の第２キーが存在してよい。複数の第２キーが存在する場合、複数のベースオフセットが存在し、複数の第２オフセットが存在し、かつ複数の第２長さが存在する。複数のベースオフセットは、複数のキーと一対一の関係にある。複数の第２オフセットは、複数のキーと一対一の関係にある。複数の第２長さは、複数のキーと一対一の関係にある。
【０１０４】
例えば、第２キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第２キーは、パケット及びメタデータから得られてもよい。
【０１０５】
例えば、第２命令は、ＯＮＦによって公開されたＯｐｅｎＦｌｏｗスイッチ仕様書１．３．０において規定された命令であってよい。
【０１０６】
図６は、本発明の一実施形態による転送要素の概略的な構成図である。転送要素は、図１に示された方法を実行するように構成されてよい。例えば、転送要素は、ルータ、スイッチ、ファイアウォール、又はロードバランサであってよい。図６を参照すると、転送要素は、インタフェース回路６０１と、インタフェース回路６０２と、メモリ（ｍｅｍｏｒｙ）６０３と、検索エンジン（ｓｅａｒｃｈ  ｅｎｇｉｎｅ）６０４と、プロセッサ６０９とを含む。プロセッサ６０９は、命令実行回路６０５と、命令メモリ６０７とを含む。選択的に、プロセッサ６０９は、レジスタ（ｒｅｇｉｓｔｅｒ）６０６と、データメモリ６０８とを含んでよい。
【０１０７】
受信回路６０１は、インバウンドポート介してパケットを受信するように構成される。
【０１０８】
プロセッサ６０９は、受信回路６０１に接続されており、プロセッサ６０９は、メモリ６０３に接続されており、かつプロセッサ６０９は、命令実行回路６０５と、命令メモリ６０７とを含む。ここで、命令実行回路６０５は、命令メモリ６０７に接続されており、命令メモリ６０７は、コンピュータ命令を格納するように構成され、かつ命令実行回路６０５は、コンピュータ命令を読み取ることによって、
検索エンジン６０４が、インバウンドポートに従ってポートテーブルを検索して、第１オフセット、第１長さ、及び第１テーブルの識別子を決定するよう、検索エンジン６０４をトリガする手順と、
第１オフセット及び第１長さに従って第１キーを決定する手順と、
検索エンジン６０４が、第１キーに従って第１テーブルを検索して、第１命令を決定するよう、検索エンジン６０４をトリガする手順と、
第１命令に従ってパケットを処理する手順とを実行し、ここで、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに対応し、かつポートテーブルは、メモリ６０３に格納される。
【０１０９】
例えば、プロセッサ６０９は、クロスバー（ｃｒｏｓｓｂａｒ）を用いてメモリ６０３に接続されていてよい。プロセッサ６０９は、クロスバーを用いて検索エンジン６０４に接続されていてよい。
【０１１０】
例えば、パケットは、ＩＰパケット、イーサネットパケット、又はＭＰＬＳパケットであってよい。
【０１１１】
例えば、第１オフセット、第１長さ、及び第１テーブルの識別子は、インバウンドポートに一致するポートテーブルのエントリに格納される。１つ以上の第１オフセットが存在してよい。１つ以上の第１長さが存在してよい。複数のオフセットは、複数の長さと一対一の関係にある。
【０１１２】
図７は、ポートテーブルのエントリの形式の概略図である。図７中のインバウンドポート７０１、第１オフセット７０２、第１長さ７０３、及び第１テーブルの識別子７０４は、それぞれ、上記のインバウンドポート、第１オフセット、第１長さ、及び第１テーブルの識別子に対応する。
【０１１３】
例えば、第１テーブルは、ＭＡＣプロトコルテーブル、ＡＲＰテーブル、ＦＩＢ、又はＭＰＬＳラベルテーブルであってよい。
【０１１４】
例えば、第１キーは、パケット中のデータセグメントであってよい。また、第１キーは、メタデータ中のデータセグメントであってもよい。メタデータは、レジスタに格納される。
【０１１５】
例えば、１つ以上の第１キーが存在してよい。複数のキーは、複数のオフセットと一対一の関係にある。複数のキーは、複数の長さと一対一の関係にある。
【０１１６】
例えば、第１キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第１キーは、パケット及びメタデータから得られてもよい。
【０１１７】
例えば、第１命令は、ＯＮＦによって公開されたＯｐｅｎＦｌｏｗスイッチ仕様書１．３．０において規定された命令であってよい。
【０１１８】
上記の技術的解決策において、転送要素は、インバウンドポートに従って第１オフセット及び第１長さを決定する。転送要素は、第１オフセット及び第１長さに従って第１キーを決定する。転送要素は、第１キーに従って第１命令を決定し、パケットを処理する。したがって、転送要素は、パケットを処理する前に当該パケットのデータ形式を解釈する必要がなく、それにより、転送要素は、さまざまなデータ形式のパケットを柔軟にサポートできる。転送要素は、新たなデータ形式をサポートする必要があるとき、ハードウェア又はソフトウェアを更新する必要なしに、当該データ形式のパケットを処理できる。
【０１１９】
選択的に、図６に示される転送要素において、検索エンジン６０４は、パケット中の第１データセグメントを取得するようにさらに構成される。ここで、第１データセグメントの開始位置は、第１オフセットに従って決定され、かつ第１データセグメントの長さは、第１長さである。
【０１２０】
命令実行回路６０５は、第１データセグメントを第１キーとして決定するようにさらに構成される。
【０１２１】
プロセッサは、データメモリ６０８をさらに含む。ここで、データメモリ６０８は、命令実行回路６０５に接続されており、かつパケットは、データメモリ６０８に格納される。
【０１２２】
例えば、第１データセグメントの開始位置が第１オフセットに従って決定されることは、特に、第１データセグメントの開始位置が第１ベースオフセットと第１オフセットとの合計を用いて識別されることであってもよい。ここで、第１ベースオフセットは０である。
【０１２３】
上記の技術的解決策において、第１キーは、パケットから得られる。
【０１２４】
選択的に、図６に示される転送要素において、検索エンジン６０４は、メタデータ中の第２データセグメントを取得するようにさらに構成される。ここで、第２データセグメントの開始位置は、第１オフセットに従って決定され、かつ第２データセグメントの長さは、第１長さである。
【０１２５】
命令実行回路６０５は、第２データセグメントを第１キーとして決定するようにさらに構成される。
【０１２６】
例えば、第２データセグメントの開始位置が第１オフセットに従って決定されることは、特に、第２データセグメントの開始位置が第２ベースオフセットと第１オフセットとの合計を用いて識別されることであってもよい。ここで、第２ベースオフセットは０である。
【０１２７】
上記の技術的解決策において、第１キーは、メタデータから得られる。
【０１２８】
選択的に、図６に示される転送要素において、プロセッサ６０９は、レジスタ６０６をさらに含む。ここで、レジスタ６０６は、命令実行回路６０５に接続されており、かつメタデータは、レジスタ６０６に格納される。
【０１２９】
選択的に、図６に示される転送要素において、メタデータは、メモリ６０３に格納される。
【０１３０】
選択的に、図６に示される転送要素において、第１命令は、動作を実行するように命令実行回路に命令するために使用される。ここで、この動作は、パケットを修正する動作と、パケットのチェックサムを計算する動作と、メタデータを書き込む動作と、メタデータを読み取る動作と、カウンタ更新動作と、パケットにＣＡＲ処理を実行する動作と、パケットを破棄する動作と、パケットを送信する動作と、パケットのベースオフセットを修正する動作とのうちの少なくとも１つを含む。
【０１３１】
例えば、パケットを修正する動作は、パケット中のデータセグメントを削除する動作、パケット中のデータセグメントを置き換える動作、又はパケット中にデータセグメントを挿入する動作であってよい。
【０１３２】
例えば、チェックサムは、ＩＰチェックサム、ＴＣＰチェックサム、又はＵＤＰチェックサムであってよい。
【０１３３】
例えば、パケットは、インタフェース回路６０２によって送信されてよい。
【０１３４】
選択的に、図６に示される転送要素において、命令実行回路６０５は、第１テーブルに従って、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子を決定するようにさらに構成される。ここで、パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子は、第１キーに対応する。
【０１３５】
命令実行回路６０５は、パケットのベースオフセット、第２オフセット、及び第２長さに従って第２キーを決定するようにさらに構成される。
【０１３６】
命令実行回路６０５は、検索エンジン６０４が、第２キーに従って第２テーブルを検索して、第２命令を決定するよう、検索エンジン６０４をトリガするようにさらに構成される。
【０１３７】
命令実行回路６０５は、第２命令に従ってパケットを処理するようにさらに構成される。
【０１３８】
例えば、ベースオフセットは、第１ベースオフセットと第１オフセットとの合計に等しい。
【０１３９】
例えば、１つ以上の第２キーが存在してよい。複数の第２キーが存在する場合、複数のベースオフセットが存在し、複数の第２オフセットが存在し、かつ複数の第２長さが存在する。複数のベースオフセットは、複数のキーと一対一の関係にある。複数の第２オフセットは、複数のキーと一対一の関係にある。複数の第２長さは、複数のキーと一対一の関係にある。
【０１４０】
例えば、第２キーは、パケットだけから得られてよく、又はメタデータだけから得られてもよい。また、第２キーは、パケット及びメタデータから得られてもよい。
【０１４１】
例えば、第２命令は、ＯＮＦによって公開されたＯｐｅｎＦｌｏｗスイッチ仕様書１．３．０において規定された命令であってよい。
【０１４２】
例えば、第２テーブルのエントリは、第２キーと、第２命令とを含む。図８は、第２テーブルのエントリの形式の概略図である。図８中の第２キー８０１及び第２命令８０２は、それぞれ、上記の第２キー及び第２命令に対応する。
【０１４３】
当技術分野において通常の知識を有する者は、この明細書において開示される実施形態として記載された実施例の組合せにより、ユニット及びアルゴリズムステップが、電子的ハードウェアによって、又はコンピュータソフトウェアと電子的ハードウェアとの組合せによって実装され得ることを理解できよう。
【０１４４】
機能がハードウェア又はソフトウェアのいずれによって実行されるかは、技術的解決策の特定の用途又は設計制約条件によって決まる。当業者は、特定の用途毎に異なる方法を使用して、記載された機能を実施してよく、そのような実施の形態は、本発明の範囲を逸脱するものとみなされてはならない。
【０１４５】
簡便かつ簡潔な説明を目的として、上記のシステム、装置、及びユニットの詳細な動作プロセスについて、上記の方法の実施形態における対応するプロセスへの参照がなされてよく、その詳細はここでは繰返して説明されない、ということが当業者には明確に理解されよう。
【０１４６】
本出願によって提供されるいくつかの実施形態において、記載されたシステム、装置、及び方法は、別の方法で実施され得ることを理解されたい。例えば、記載された装置の実施形態は、例示に過ぎない。例えば、ユニットの分割は、論理的機能の分割に過ぎず、実際の実装の際には、他の分割が行われてよい。例えば、複数のユニット又はコンポーネントは、組み合わせられるか、又は別のシステムに一体化されてよく、また、いくつかの特徴は、無視されるか、又は実行されなくてよい。さらに、示された、又は説明された相互接続又は直接的接続又は通信接続は、いくつかのインタフェースを介して実装されてよい。装置又はユニット間の非直接的接続又は通信接続は、電子的、機械的、又はその他の形態で実装されてよい。
【０１４７】
分離した部分として記載されたユニットは、それが物理的な分離であってもなくてもよく、かつユニットとして記載された部分は、物理的なユニットであってもなくてもよく、１つの場所に位置していてよく、又は複数のネットワークユニットに分散されていてもよい。ユニットの一部又はすべては、実施形態の解決策の目的を達成するための実際の必要性に従って選択されてよい。
【０１４８】
さらに、本発明の実施形態における機能ユニットは、１つの処理ユニットに一体化されてよく、又は複数のユニットの各々が物理的に単独で存在してもよく、又は２つ以上のユニットが１つのユニットに一体化されてもよい。
【０１４９】
機能は、独立した製品としてソフトウェア機能ユニットの形態で実装され、販売され、使用される場合、コンピュータ読み取り可能な記憶媒体に格納されてよい。そのような理解に基づき、本発明の技術的解決策は本質的に、又は従来技術に寄与する部分は、又は技術的解決策の部分は、ソフトウェア製品の形態で実装され得る。コンピュータソフトウェア製品は、記憶媒体に格納され、本発明の実施形態として説明された方法のステップのすべて又は一部を実行するように（パーソナルコンピュータ、サーバ、又はネットワークデバイスであってよい）コンピュータデバイスに命令するためのいくつかの命令を含む。上記の記憶媒体は、ＵＳＢフラッシュドライブ、リムーバブルハードディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク、又は光学ディスクなど、プログラムコードを格納可能な任意の媒体を含む。
【０１５０】
以上の記載は、本発明の特定の実施の方法に過ぎず、本発明の保護範囲を限定することを意図したものではない。本発明によって開示される技術的範囲内で当業者が容易に想到する任意の変形例又は置換例は、本発明の保護範囲内にある。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従う。
【符号の説明】
【０１５１】
５０２  受信回路
５０４  検索ユニット
５０６  決定ユニット
５０８  処理ユニット
６０１，６０２  インタフェース回路
６０３  メモリ
６０４  検索エンジン
６０５  命令実行回路
６０６  レジスタ
６０７  命令メモリ
６０８  データメモリ
６０９  プロセッサ
７０１  インバウンドポート
７０２  第１オフセット
７０３  第１長さ
７０４  第１テーブルの識別子
８０１  第２キー
８０２  第２命令
【図１】
2017034723.tif 000003
【図２】
2017034723.tif 000004
【図３】
2017034723.tif 000005
【図４】
2017034723.tif 000006
【図５】
2017034723.tif 000007
【図６】
2017034723.tif 000008
【図７】
2017034723.tif 000009
【図８】
2017034723.tif 000010
【手続補正書】
【提出日】平成28年11月11日(2016.11.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パケット処理方法であって、
転送要素により、インバウンドポートを介してパケットが受信されるステップと、
第１オフセット、第１長さ、及び第１テーブルの識別子が決定されるステップと、
前記転送要素により、前記第１オフセット及び前記第１長さに従って第１キーが決定され、前記第１キーに従って前記第１テーブルが検索されて、第１命令が決定されるステップと、
前記転送要素により、前記第１命令に従って前記パケットが処理されるステップと
を有する、
方法。
【請求項２】
前記転送要素により、前記第１オフセット及び前記第１長さに従って第１キーが決定され、前記第１キーに従って前記第１テーブルが検索されて、第１命令が決定される前記ステップが、
前記転送要素により、前記パケット中の第１データセグメントが取得されるステップと、
前記転送要素により、前記第１データセグメントが前記第１キーとして決定されるステップと
を含み、
前記第１データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第１データセグメントの長さは、前記第１長さである、請求項１に記載の方法。
【請求項３】
前記転送要素により、前記第１オフセット及び前記第１長さに従って第１キーが決定され、前記第１キーに従って前記第１テーブルが検索されて、第１命令が決定される前記ステップが、
前記転送要素により、メタデータ中の第２データセグメントが取得されるステップと、
前記転送要素により、前記第２データセグメントが前記第１キーとして決定されるステップと
を含み、
前記第２データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第２データセグメントの長さは、前記第１長さである、請求項１に記載の方法。
【請求項４】
前記メタデータが、前記転送要素のレジスタに格納されるか、又は
前記メタデータが、前記転送要素のメモリに格納される、請求項３に記載の方法。
【請求項５】
前記第１命令は、動作を実行するように前記転送要素に命令するために使用され、
前記動作は、
前記パケットを修正する動作と、
前記パケットのチェックサムを計算する動作と、
メタデータを書き込む動作と、
メタデータを読み取る動作と、
カウンタを更新する動作と、
前記パケットにＣｏｍｍｉｔｔｅｄ  Ａｃｃｅｓｓ  Ｒａｔｅ  ＣＡＲ処理を実行する動作と、
前記パケットを破棄する動作と、
前記パケットを送信する動作と、
前記パケットのベースオフセットを修正する動作とのうちの少なくとも１つを含む、請求項１ないし４のいずれか一項に記載の方法。
【請求項６】
前記転送要素により、前記第１命令に従って前記パケットが処理される前記ステップが、
前記転送要素により、前記第１テーブルに従って、前記パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子が決定されるステップと、
前記転送要素により、前記パケットの前記ベースオフセット、前記第２オフセット、及び前記第２長さに従って第２キーが決定され、前記第２キーに従って前記第２テーブルが検索されて、第２命令が決定されるステップと、
前記転送要素により、前記第２命令に従って前記パケットが処理されるステップと
を含み、
前記パケットの前記ベースオフセット、前記第２オフセット、前記第２長さ、及び前記第２テーブルの前記識別子は、前記第１キーに対応する、請求項１ないし４のいずれか一項に記載の方法。
【請求項７】
前記転送要素が、ルータ、スイッチ、ファイアウォール、又はロードバランサである、請求項１ないし６のいずれか一項に記載の方法。
【請求項８】
インバウンドポートを介してパケットを受信するように構成された受信回路と、
第１オフセット、第１長さ、及び第１テーブルの識別子を決定するように構成された検索ユニットと、
前記第１オフセット及び前記第１長さに従って第１キーを決定し、前記第１キーに従って前記第１テーブルを検索して、第１命令を決定するように構成された決定ユニットと、
前記第１命令に従って前記パケットを処理するように構成された処理ユニットと
を具備する、
転送要素。
【請求項９】
前記検索ユニットが、
前記パケット中の第１データセグメントを取得し、
前記第１データセグメントを前記第１キーとして決定するようにさらに構成され、
前記第１データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第１データセグメントの長さは、前記第１長さである、請求項８に記載の転送要素。
【請求項１０】
前記検索ユニットが、
メタデータ中の第２データセグメントを取得し、
前記第２データセグメントを前記第１キーとして決定するようにさらに構成され、
前記第２データセグメントの開始位置は、前記第１オフセットに従って決定され、
前記第２データセグメントの長さは、前記第１長さである、請求項８に記載の転送要素。
【請求項１１】
レジスタ又はメモリをさらに具備し、
前記メタデータが、前記レジスタ又は前記メモリに格納される、請求項１０に記載の転送要素。
【請求項１２】
前記第１命令は、動作を実行するように転送要素に命令するために使用され、
前記動作は、
前記パケットを修正する動作と、
前記パケットのチェックサムを計算する動作と、
メタデータを書き込む動作と、
メタデータを読み取る動作と、
カウンタ更新動作と、  前記パケットにＣＡＲ処理を実行する動作と、
前記パケットを破棄する動作と、
前記パケットを送信する動作と、
前記パケットのベースオフセットを修正する動作と
のうちの少なくとも１つを含む、請求項８ないし１１のいずれか一項に記載の転送要素。
【請求項１３】
前記処理ユニットが、
前記第１テーブルに従って、前記パケットのベースオフセット、第２オフセット、第２長さ、及び第２テーブルの識別子を決定し、
前記パケットの前記ベースオフセット、前記第２オフセット、及び前記第２長さに従って第２キーを決定し、前記第２キーに従って前記第２テーブルを検索して、第２命令を決定し、
前記第２命令に従って前記パケットを処理するようにさらに構成され、
前記パケットの前記ベースオフセット、前記第２オフセット、前記第２長さ、及び前記第２テーブルの前記識別子は、前記第１キーに対応する、請求項８ないし１１のいずれか一項に記載の転送要素。
【請求項１４】
前記転送要素が、ルータ、スイッチ、ファイアウォール、又はロードバランサである、請求項８ないし１３のいずれか一項に記載の転送要素。
【外国語明細書】
2017034723000001.pdf