(57)【特許請求の範囲】
【請求項１】
パケット処理方法であって、前記方法は、
第1のパケットを取得するステップと、
第1のテーブルの識別子を決定するステップと、
前記第1のテーブルの前記識別子に対応して、前記第1のテーブルの明細情報を決定するステップと、
前記第1のテーブルの前記明細情報および前記第1のテーブルに従って、前記第1のパケット上での第1の処理を実行するステップであって、前記第1のテーブルが、エントリが含まれる規則テーブルであり、前記エントリは、第1の処理プログラムのために提供されるパラメータを含み、および前記第1の処理プログラムは、前記エントリに従ってパケットを処理するように構成された、ステップと、
前記第1のテーブルの前記明細情報に従って、次のテーブルの識別子を決定するステップであって、前記次のテーブルの前記識別子が前記次のテーブルの明細情報に対応し、前記第1のテーブルは前記次のテーブルの前記識別子を含む、ステップと、
前記次のテーブルの前記明細情報および前記次のテーブルに従って、前記第1の処理を受けた前記第1のパケットを処理するステップであって、前記次のテーブルが規則テーブルまたはフローテーブルであり、前記フローテーブルは、第2の処理プログラムのほかに前記第2の処理プログラムのために提供されるパラメータもまた含む、ステップと
を含む、パケット処理方法。
【請求項２】
前記第1のテーブルの前記明細情報および前記第1のテーブルに従って、前記第1のパケット上での第1の処理を実行する前記ステップが、
前記第1のテーブルの前記明細情報に従って、第1の処理プログラムおよび前記第1のテーブルを決定するステップと、
前記第1の処理プログラムおよび前記第1のテーブルに従って、前記第1のパケット上での前記第1の処理を実行するステップとを含む、請求項1に記載の方法。
【請求項３】
前記第1の処理プログラムおよび前記第1のテーブルに従って、前記第1のパケット上での前記第1の処理を実行する前記ステップが、
前記第1のテーブルの前記エントリを決定するステップと、
前記第1の処理プログラムを使用することによって、前記第1のテーブルの前記エントリに従って、前記第1のパケット上での前記第1の処理を実行するステップとを含む、請求項2に記載の方法。
【請求項４】
前記第1のテーブルの前記明細情報が、前記第1の処理プログラムの識別子、前記第1のテーブルのタイプ、前記第1のテーブルのベースアドレス、前記第1のテーブルの検索キーの表現情報、および前記第1のテーブルのアクションエントリの長さを含む、請求項2または3に記載の方法。
【請求項５】
前記第1のテーブルの前記明細情報に従って、次のテーブルの識別子を決定する前記ステップが、
前記第1のテーブルの前記エントリに従って、前記次のテーブルの前記識別子を決定するステップを含む、請求項３に記載の方法。
【請求項６】
第1のパケットを取得するように構成された取得ユニットと、
第1のテーブルの識別子を決定するように構成された第1の決定ユニットと、
前記第1のテーブルの前記識別子に対応して、前記第1のテーブルの明細情報を決定するように構成された第2の決定ユニットと、
前記第2の決定ユニットによって決定された前記第1のテーブルの前記明細情報、および前記第1のテーブルに従って、前記第1のパケット上での第1の処理を実行するように構成された第1の処理ユニットであって、前記第1のテーブルが、エントリが含まれる規則テーブルであり、前記エントリは、第1の処理プログラムのために提供されるパラメータを含み、および前記第1の処理プログラムは、前記エントリに従ってパケットを処理するように構成され、第1の処理ユニットと、
前記第1のテーブルの前記明細情報に従って、次のテーブルの識別子を決定するように構成された第3の決定ユニットであって、前記次のテーブルの前記識別子が前記次のテーブルの明細情報に対応し、前記第1のテーブルは前記次のテーブルの前記識別子を含む、第3の決定ユニットと、
前記次のテーブル、および前記第3の決定ユニットによって決定された、前記次のテーブルの前記明細情報に従って、前記第1の処理を受けた前記第1のパケットを処理するように構成された第2の処理ユニットであって、前記次のテーブルが規則テーブルまたはフローテーブルであり、前記フローテーブルは、第2の処理プログラムのほかに前記第2の処理プログラムのために提供されるパラメータもまた含む、第2の処理ユニットと
を備える、デバイス。
【請求項７】
前記第1の処理ユニットが、前記第1のテーブルの前記明細情報に従って、第1の処理プログラムおよび前記第1のテーブルを決定し、また前記第1の処理プログラムおよび前記第1のテーブルに従って、前記第1のパケット上での前記第1の処理を実行するように特に構成された、請求項6に記載のデバイス。
【請求項８】
前記第1の処理ユニットが、前記第1のテーブルの前記エントリを決定し、また前記第1のテーブルの前記エントリに従って、前記第1の処理プログラムを使用することによって、前記第1のパケット上での前記第1の処理を実行するように特に構成された、請求項7に記載のデバイス。
【請求項９】
前記第3の決定ユニットが、前記第1のテーブルの前記エントリに従って、前記次のテーブルの前記識別子を決定するように特に構成された、請求項8に記載のデバイス。
【請求項１０】
請求項1乃至5のいずれか一項に記載の方法をコンピュータに実行させる、プログラム。
【請求項１１】
請求項1乃至5のいずれか一項に記載の方法をコンピュータに実行させるプログラムが記録された、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報技術分野に関し、詳細には、パケット処理方法およびデバイスに関する。
【背景技術】
【０００２】
従来型のパケット転送プロセスは、スイッチ/ルータによって完全に制御される。スイッチ/ルータは、従来型の転送テーブルを使用することによって、取得されたパケットを制御する。従来型の転送テーブルの内容は、転送プレーンのマイクロコード、および制御プレーンによって合意された形式に従って決定される。すなわち、従来型の転送テーブルの各フィールド内の内容は、転送プレーンのマイクロコード、および制御プレーンのドライブによって合意される。従来型の転送テーブルは、ブリッジテーブル(英語:bridge table)でも、またルートテーブル(英語:route table)でもよい。スイッチ/ルータによる制御によって完全に実施されたパケット制御プロセスは、高い性能および成熟した技術という利点を有する。しかし、スイッチ/ルータによる制御によって完全に実施されたパケット制御プロセスは、柔軟性が不十分であり、サービス要件の変化に十分には適合できない。
【０００３】
技術の発展に伴い、オープンフロー(OpenFlow)テクノロジが現れる。オープンフローテクノロジは、もともとはスイッチ/ルータによって完全に制御された転送プロセスを、OpenFlowスイッチ(OpenFlow Switch)およびコントローラ(Controller)によって合同で制御された転送プロセスに変更する。OpenFlowテクノロジは、データ転送とルート制御との分離を行う。OpenFlowテクノロジは、マルチステージフローテーブルのパイプラインを使用することによって、入力から出力への、パケットの転送処理プロセスを完了させる。具体的には、フローテーブルは、複数のフローテーブルエントリによって形成され、また各フローテーブルエントリは、1つの転送規則に対応する。パケットの宛先ポートは、フローテーブルを検索することによって獲得される。フローテーブルは、ファイルされたマッチ(Match Field)、ファイルされたインストラクション(Instruction)、およびファイルされた統計情報(Counter)を含む。ファイルされたマッチは、パケットをマッチングするために使用される。ファイルされたインストラクションは、パケットを処理するために使用される。処理は、パケットの修正、パケットのカプセル化、パケットのカプセル化解除、またはパケットの転送であってもよい。OpenFlowテクノロジを使用することによって実施されるパケット制御プロセスは、サービス要件の変化に柔軟に適合することができる。しかし、OpenFlowテクノロジは、性能が低く、また技術が未成熟である。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明の実施形態は、パケット処理方法、およびデバイスを提供し、それは、サービスの性能に関する要件とサービスの柔軟性に関する要件の両方へのパケット処理を考慮するのに役立つ。
【０００５】
第1の態様によれば、本発明の一実施形態は、パケット処理方法を提供し、その方法は、第1のパケットを取得するステップと、第1のテーブルの識別子を決定するステップと、第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定するステップと、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップであって、第1のテーブルが、規則テーブル(convention table)である、ステップと、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するステップであって、次のテーブルの識別子が次のテーブルの明細情報に対応する、ステップと、次のテーブルの明細情報および次のテーブルに従って、第1の処理を受けた第1のパケットを処理するステップであって、次のテーブルが規則テーブルまたはフローテーブルである、ステップとを含む。
【０００６】
第1の態様を参照すると、第1の可能な実装方法では、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップは、第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定するステップと、第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップとを含む。
【０００７】
第1の可能な実装方法を参照すると、第2の可能な実装方法では、第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するステップは、第1のテーブルのエントリを決定するステップと、第1の処理プログラムを使用することによって、第1のテーブルのエントリに従って、第1のパケット上での第1の処理を実行するステップとを含む。
【０００８】
第1の可能な実装方法または第2の可能な実装方法を参照すると、第3の可能な実装方法では、第1のテーブルの明細情報は、第1の処理プログラムの識別子、第1のテーブルのタイプ、第1のテーブルのベースアドレス、第1のテーブルの検索キーの表現情報、および第1のテーブルのアクションエントリの長さを含む。
【０００９】
第1の態様、または前述の可能な実装方法のいずれか1つを参照すると、第4の可能な実装方法では、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するステップは、第1のテーブルのエントリに従って、次のテーブルの識別子を決定するステップを含む。
【００１０】
第2の態様によれば、本発明の一実施形態は、デバイスを提供し、そのデバイスは、第1のパケットを取得するように構成された取得ユニットと、第1のテーブルの識別子を決定するように構成された第1の決定ユニットと、第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定するように構成された第2の決定ユニットと、第2の決定ユニットによって決定された第1のテーブルの明細情報、および第1のテーブルに従って、第1のパケット上での第1の処理を実行するように構成された第1の処理ユニットであって、第1のテーブルが規則テーブルである、第1の処理ユニットと、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するように構成された第3の決定ユニットであって、次のテーブルの識別子が次のテーブルの明細情報に対応する、第3の決定ユニットと、次のテーブル、および第3の決定ユニットによって決定された、次のテーブルの明細情報に従って、第1の処理を受けた第1のパケットを処理するように構成された第2の処理ユニットであって、次のテーブルが規則テーブルまたはフローテーブルである、第2の処理ユニットとを備える。
【００１１】
第2の態様を参照すると、第1の可能な実装方法では、第1の処理ユニットは、第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定し、また第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するように特に構成される。
【００１２】
第1の可能な実装方法を参照すると、第2の可能な実装方法では、第1の処理ユニットは、第1のテーブルのエントリを決定し、また第1のテーブルのエントリに従って、第1の処理プログラムを使用することによって、第1のパケット上での第1の処理を実行するように特に構成される。
【００１３】
第2の態様、または前述の可能な実装方法のいずれかを参照すると、第3の可能な実装方法では、第3の決定ユニットは、第1のテーブルのエントリに従って、次のテーブルの識別子を決定するように特に構成される。
【００１４】
本発明の実施形態によれば、パケットの処理プログラムは、規則テーブルと規則テーブルとの間を、規則テーブルとフローテーブルとの間を、またはフローテーブルとフローテーブルとの間を移行することができる。このようにして、規則テーブルが高い転送性能を備えているという利点と、フローテーブルがサービス変化の要件に柔軟に適合できるという利点の両方が考慮可能である。本発明では、規則テーブルの高い性能およびフローテーブルの柔軟性が組み合わされ、それは、転送デバイスのパケット処理性能と転送デバイスのプログラミング性の両方を考慮するのに役立つ。
【００１５】
本発明の実施形態における技術的解決策をより明確に説明するために、本発明の実施形態の説明に必要な添付図面を以下に簡潔に紹介する。明らかであろうが、以下に記載する添付図面は、本発明のいくつかの実施形態を示すにすぎないが、当業者なら、創造的な努力をすることなく、これらの添付図面から他の図面を得ることができるであろう。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態による、パケット処理方法の概略流れ図である。
【図２】本発明の一実施形態による、パケット処理方法の概略流れ図である。
【図３】本発明の一実施形態による、パケット処理方法の概略図である。
【図４】本発明の一実施形態による、デバイスの構造ブロック図である。
【発明を実施するための形態】
【００１７】
本発明の実施形態における技術的解決策について、以下、本発明の実施形態の添付図面を参照して明確に説明する。明らかであろうが、説明される実施形態は、本発明の実施形態の単にいくつかであってすべてではない。当業者が本発明の実施形態に基づいて、創造的な努力をすることなく得る他のすべての実施形態は、本発明の保護範囲に含まれるものとする。
【００１８】
本発明の実施形態において提供される技術的解決策は、規則テーブルに関する。規則テーブルのエントリには、処理プログラムのために提供されるパラメータが含まれる。処理プログラムは、規則テーブルのエントリに従って、パケットを処理する。例えば、規則テーブルは、スイッチ/ルータによって完全に制御された従来型のパケット転送プロセスにおいて使用されるテーブルでもよい。例えば、規則テーブルは、BEでも、またREでもよい。説明の便宜上、本発明では、規則テーブルに従ってパケット処理を制御するプロセスは、簡潔に「規則テーブル処理パイプライン」と呼ばれる。規則テーブル処理パイプラインにおいて、パケット処理の各ステージ(英語:stage)は、簡潔に「規則テーブル処理プロセス」と呼ばれる。
【００１９】
本発明の実施形態において提供される技術的解決策は、OpenFlowテクノロジに関する。OpenFlowテクノロジに関係する用語(用語には、これに限定されるものではないが、フローテーブル、フローテーブルエントリ、インストラクション、およびアクションが含まれる)に関しては、OpenFlow Switch Specificationバージョン1.4.0(英語:OpenFlow Switch Specification version 1.4.0)を参照することができる。読み進める際の便宜上、フローテーブルについて、ここで説明する。フローテーブル(英語:flow table)は、OpenFlowテクノロジに関係するテーブルである。具体的には、フローテーブルは、ファイルされたマッチ、ファイルされたインストラクション、およびファイルされた統計情報を含む。ファイルされたマッチは、パケットをマッチングするために使用される。ファイルされたインストラクションは、パケットを処理するために使用される。処理は、パケットの修正、パケットのカプセル化、パケットのカプセル化解除、パケットの破棄、パケットの転送、またはパケット上での計数演算の実行であってもよい。すなわち、フローテーブルは、処理プログラムのために提供されるパラメータを含むことができるだけでなく、処理プログラム(処理プログラムはインストラクションでも、またアクションでもよい)を含むことができる。説明の便宜上、本発明では、フローテーブルに従ってパケット処理を制御するプロセスは、簡潔に「フローテーブル処理パイプライン」と呼ばれる。フローテーブル処理パイプラインにおいて、パケット処理の各ステージは、簡潔に「フローテーブル処理プロセス」と呼ばれる。パケットが規則テーブル処理プロセスおよびフローテーブル処理プロセスを使用することによって処理される必要がある場合、こうした処理手順は、総称して「混合型処理パイプライン(mixed processing pipeline)」と呼ばれる。
【００２０】
図1は、本発明の一実施形態による、パケット処理方法の概略流れ図である。方法の実行主体は、ネットワーク装置であり得る。具体的には、実行主体は、ネットワーク装置におけるネットワークプロセッサ(英語:network processor、略してNP)であり得る。具体的には、実行主体は、NPにおける検索エンジンであり得る。ネットワークデバイスは、ルータ、ネットワークスイッチ、ファイアウォール、負荷分散装置、またはデータセンタでもよい。ネットワークスイッチは、OpenFlowスイッチでもよい。
【００２１】
101.  第1のパケットを取得する。
【００２２】
例えば、ステップ101の特定の実装の間、第1のパケットが受信可能であるか、第1のパケットが生成可能である。
【００２３】
102.  第1のテーブルの識別子を決定する。
【００２４】
例えば、ステップ102の特定の実装の間、第1のテーブルの識別子が、テーブルを使用することによって獲得可能である。第1のテーブルの識別子が、テーブル内を運ばれる。ステップ102の特定の実装の間、デフォルトコードが、実行主体に、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケットを処理するよう命令することもあり得る。デフォルトコードが、実行主体に記憶される。
【００２５】
103.  第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定する。
【００２６】
例えば、第1のテーブルの明細情報が、アレイに記憶され得る。ステップ103の特定の実装の間、第1のテーブルの明細情報が、第1のテーブルの識別子をインデックスとして使用することによって、またアレイにアクセスすることによって獲得可能である。
【００２７】
例えば、実行主体のメモリは、コンピュータプログラムを記憶するために使用される記憶域およびデータを記憶するために使用される記憶域を含む。第1のテーブルの明細情報は、データを記憶するために使用される記憶域に記憶される。例えば、第1のテーブルの明細情報は、コントローラによって生成される。コントローラは、第1のテーブルの明細情報を実行主体に制御チャネルを通じて送信する。
【００２８】
104.  第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上での第1の処理を実行する。
【００２９】
例えば、第1のテーブルは規則テーブルである。
【００３０】
あるいは、第1のテーブルはフローテーブルである。
【００３１】
105.  第1のテーブルの明細情報に従って、次のテーブルの識別子を決定し、そこでは、次のテーブルの識別子は、次のテーブルの明細情報に対応する。
【００３２】
106.  次のテーブルの明細情報および次のテーブルに従って、第1の処理を受けた第1のパケットを処理し、そこでは、次のテーブルが規則テーブルまたはフローテーブルである。
【００３３】
図1に示す方法によれば、規則テーブルに対応する第1の処理が実行された後、処理プログラムは、パケットのその後の処理を実施するために、次のテーブルの対応する識別子に従って、規則テーブル処理プロセスまたはフローテーブル処理プロセスに移行することができる。すなわち、処理プログラムは、規則テーブルとフローテーブルとの間を移行することができる。このようにして、規則テーブルの高い処理性能の特性とフローテーブルの柔軟な処理の特性の両方が考慮可能であり、それによってパケット処理の効率を改善する。さらに、次のテーブルの識別子が、パケットを処理するための次のテーブルに対応し、第1のテーブルの明細情報に従って決定される。第1のテーブルの明細情報は、マイクロコードによって制御することはできない。このようにして、パケットを処理するための次のテーブルが変更されることを必要とするとき、次のテーブルの変更を、マイクロコードを修正することによって実行する必要なく、次のテーブルの識別子を修正することによって実行することができる。例えば、パケットを処理するためのテーブルは規則テーブルAである。規則テーブルAがパケットの処理を完了した後、規則テーブルBは、パケットを処理するために使用される必要がある。規則テーブルAがパケットの処理を完了した後、規則テーブルCが代わりに、パケットの処理のために使用されることが期待される場合、次のテーブルの識別子は、規則テーブルBに対応する、テーブルの識別子から、規則テーブルCに対応する、テーブルの識別子に修正可能である。このようにして、次のテーブルが変更されることを必要とするとき、修正されることを必要とする位置を迅速に決定することができ、また次のテーブルは、次のテーブルの識別子を修正することによって都合よく変更可能である。さらに、次のテーブルの識別子を修正するワークロードは、マイクロコードを修正するワークロードよりもかなり少ない。
【００３４】
図2は、本発明の一実施形態による、パケット処理方法の概略流れ図である。図2に示す方法は、図1に示す方法の特定の実施形態である。
【００３５】
201.  第1のパケットを取得する。
【００３６】
本明細書内の「第1のパケット」における「第1の」は、単にパケットを区別するためのものであり、パケットを限定することを意図するものではない。したがって、この第1のパケットが、混合型処理パイプラインにおける任意のパケットであってよいことが理解できよう。すなわち、第1のパケットは、1度の処理または何度かの処理が完了したパケットでもよく、また別のデバイスから受信されるパケットでもよい。
【００３７】
202.  第1のテーブルの識別子を決定する。
【００３８】
203.  第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定する。
【００３９】
ステップ204からステップ206を実行することによって、第1のテーブルの明細情報および第1のテーブルに従って、第1のパケット上で第1の処理が、実行可能である。
【００４０】
204.  第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定する。
【００４１】
例えば、第1のテーブルは規則テーブルである。
【００４２】
あるいは、第1のテーブルはフローテーブルである。
【００４３】
第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)テーブルなどであり得る。
【００４４】
具体的には、第1の処理プログラムは、第1のテーブルの明細情報における第1の処理プログラムの識別子に従って決定される。第1のテーブルは規則テーブルである。第1のテーブルは、第1の処理プログラムに対応する。例えば、異なる規則テーブルは、異なる処理プログラムに対応する。第1の処理プログラムは、第1のテーブルの明細情報内にある、第1のテーブルのベースアドレス、第1のテーブルのタイプ、および第1のテーブルの検索キーの表現情報に従って、第1のテーブルにアクセスする。
【００４５】
ステップ205およびステップ206を実行することによって、第1のテーブルが決定された後、第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上で第1の処理が、実行可能である。
【００４６】
205.  第1の処理プログラムを使用することによって、第1のテーブルのエントリを決定する。
【００４７】
例えば、第1の処理プログラムは、第1のテーブルの検索キーの表現情報に従って、検索キーを決定することができる。第1のテーブルの検索キーの表現情報は、検索キーを取得するための方法について説明するために使用される。検索キーは、第1のパケットのパケットヘッダにフィールドを含むことができる。検索キーは、第1のパケットを受信するためのポートを含むことができる。
【００４８】
具体的には、第1のテーブルが決定された後、第1の処理プログラムは、第1のテーブルのエントリを検索するために、検索キーを第1のテーブルに配信する。
【００４９】
206.  第1の処理プログラムを使用することによって、第1のテーブルのエントリに従って、第1のパケット上での第1の処理を実行する。
【００５０】
具体的には、第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パケットは、パブリックネットワークにおいて伝送されることになる。
【００５１】
第1の実施形態が、ステップ205およびステップ206について説明するための特定の例として、以下に提供される。
【００５２】
第1のパケットはIPパケットである。実行主体はNAT装置である。第1のテーブルはNATフローテーブルである。
【００５３】
プライベートネットワークに配置されたホストが、IPパケットをパブリックネットワーク内のサーバに送信する。ホストのIPアドレスは10.1.1.1である。サーバのIPアドレスは100.1.1.1である。IPパケットは、(Table 1(表1)に関連する)以下の特徴情報を伝送する。
【００５４】
【表１】
0006308601.tif 000002
【００５５】
NAT装置がIPパケットを受信した後、Table 1(表1)に示す特徴情報が、第1のテーブルの検索キーの表現情報に従って取得される。NAT装置は、特徴情報を検索キーとして使用することによって、特徴情報に適合する、第1のテーブルのエントリを求めて、NATフローテーブルを検索する。第1のテーブルのエントリの場合、Table 2(表2)において、NATフローテーブルのエントリを参照されたい。50.1.1.1は、NAT装置によって割り当てられた、パブリックネットワークのIPアドレスであり、100は、NAT装置によって割り当てられたポート番号である。
【００５６】
【表２】
0006308601.tif 000003
【００５７】
NAT装置は、第1の処理プログラムに従って、IPパケットを処理する。具体的には、NAT装置は、NATフローテーブルのエントリにおける50.1.1.1を第1の処理プログラムの入力パラメータとして使用することによって、IPパケットにおける送信元IPアドレスを50.1.1.1に修正する。NAT装置は、NATフローテーブルのエントリにおける100を第1の処理プログラムの入力パラメータとして使用することによって、IPパケットにおける送信元ポートを100に修正する。
【００５８】
207.  第1のテーブルの明細情報に従って、次のテーブルの識別子を決定する。
【００５９】
ステップ207の特定の実装の間、第1のテーブルが、第1のテーブルの明細情報に従って決定可能である。次のテーブルの識別子が、第1のテーブルにアクセスすることによって獲得される。第1のテーブルは、次のテーブルの識別子を含む。
【００６０】
具体的には、次のテーブルの識別子は、第1のテーブルに従って決定される。例えば、第1のテーブルは、次のテーブルの識別子を含む。例えば、第1のテーブルの各エントリは、次のテーブルの1つの識別子を含む。次のテーブルの識別子は、次のテーブルの明細情報にインデックス付けするために使用される。次のテーブルの明細情報は、規則テーブルの明細情報でもよく、またフローテーブルの明細情報でもよい。第1のテーブルに対応する次のテーブルの識別子は、第1のテーブルのエントリとして使用されるエントリフィールドであってもよく、また次のテーブルの独立した識別子テーブル内にあってもよい。
【００６１】
第2の実施形態が、ステップ207について説明するための特定の実施形態として、以下に提供される。
【００６２】
第1の実施形態におけるTable 2(表2)のエントリは、次のテーブルの識別子をさらに含むことができる。例えば、次のテーブルの識別子は、5である。この場合、NATフローテーブルのエントリが、図3に示される。このようにして、NAT装置は、NATフローテーブルのエントリにアクセスすることによって、次のテーブルの識別子を獲得する。
【００６３】
【表３】
0006308601.tif 000004
【００６４】
208.  次のテーブルの明細情報および次のテーブルに従って、第1の処理を受けた第1のパケットを処理し、そこでは、次のテーブルが規則テーブルまたはフローテーブルである。
【００６５】
第1の処理を受けた第1のパケットは、第1のパケットであってもよく、また別のパケットであってもよい。第1のパケットが第1の処理の間に修正された場合、第1の処理を受けた第1のパケットは、別のパケットであり、また第1のパケットが第1の処理の間に修正されなかった場合、第1の処理を受けた第1のパケットは、第1のパケットである。
【００６６】
任意選択で、一実施形態として、次のテーブルがフローテーブルである場合、フローテーブルは、プロトコル忘却型フォワーディング(英語:Protocol Oblivious Forwarding、略してPOF)テーブルであってもよい。すなわち、第1の処理プログラムが第1のパケットを処理するとき、第1のパケットのプロトコルタイプが不明であることが判明する。この場合、第1のパケットが、POFテーブルに転送可能であり、また第1の処理が完了した第1のパケットが、POFテクノロジを使用することによって処理される。第1の処理が完了した第1のパケットが、POFテーブルを使用することによって処理されるとき、パケットのタイプは、検出される必要はなく、またパケットの処理は、オフセット、および指定されたデータの長さによって実行される。
【００６７】
図2に示す方法によれば、第1のテーブルに対応する第1の処理がパケット上で実行された後、パケットは、その後の処理を実行するために、次のテーブルの対応する識別子に従って、規則テーブル処理プロセスまたはフローテーブル処理プロセスに移行することができる。すなわち、パケットは、規則テーブルとフローテーブルとの間を移行することができる。このようにして、規則テーブルの高い処理性能の特性とフローテーブルの柔軟な処理の特性の両方が考慮可能であり、それによってパケット処理の効率を改善する。例えば、1つのフローテーブル処理プロセスが、複数の規則テーブル処理プロセスに挿入可能であり、そこでは、フローテーブル処理プロセスのマッチエントリは、どんな規則テーブルとも異なり、またフローテーブル処理プロセスは、完全に、柔軟なポリシー制御のために使用される。1つのフローテーブル処理プロセスの挿入は、パケットの全体的な処理性能に対してほとんど影響がない。このようにして、性能が著しく低下しないようにできるだけでなく、パケット処理の柔軟性を改善することができる。具体的には、POFテーブルが規則テーブル処理プロセスに挿入されるとき、プロトコルタイプが不明であるパケットは、POFテーブルを使用することによって処理することができる。
【００６８】
本発明の本実施形態において提供されるパケット処理方法が使用されるとき、混合型処理パイプラインのための第1のテーブルが決定されるべきであることが理解できよう。すなわち、すべてのパケットが、第1のテーブルから処理され始める。第1のテーブルは、規則テーブルであってもよく、またフローテーブルであってもよい。第1のテーブルに対応する第1の処理が完了した後、パケットは、必要に応じて、異なるタイプの処理プロセスに移行することができる。
【００６９】
本発明のより良い理解に役立つよう、本発明について、図3の特定の実施形態を参照しながら、さらに説明する。図3に示す実施形態は、本発明のより良い理解を支援するだけであり、本発明を限定することを意図するものではないことに留意されたい。
【００７０】
図3は、本発明の一実施形態による、パケット処理方法の概略図である。
【００７１】
図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を引き続き処理することができる。
【００７２】
図4は、本発明の一実施形態による、デバイスの構造ブロック図である。図4に示すデバイスは、図1または図2に示す方法を実行することができる。図4に示すデバイス400は、取得ユニット401、第1の決定ユニット402、第2の決定ユニット403、第1の処理ユニット404、第3の決定ユニット405、および第2の処理ユニット406を備える。
【００７３】
取得ユニット401は、第1のパケットを取得するように構成される。
【００７４】
第1の決定ユニット402は、第1のテーブルの識別子を決定するように構成される。
【００７５】
第2の決定ユニット403は、第1のテーブルの識別子に対応して、第1のテーブルの明細情報を決定するように構成される。
【００７６】
第1の処理ユニット404は、第2の決定ユニット403によって決定された第1のテーブルの明細情報、および第1のテーブルに従って、第1のパケット上での第1の処理を実行するように構成される。
【００７７】
例えば、第1のテーブルは規則テーブルである。
【００７８】
あるいは、第1のテーブルはフローテーブルである。
【００７９】
第3の決定ユニット405は、第1のテーブルの明細情報に従って、次のテーブルの識別子を決定するように構成され、そこでは、次のテーブルの識別子は、次のテーブルの明細情報に対応する。
【００８０】
第2の処理ユニット406は、次のテーブル、および第3の決定ユニット405によって決定された、次のテーブルの明細情報に従って、第1の処理を受けた第1のパケットを処理するように構成され、そこでは、次のテーブルが規則テーブルまたはフローテーブルである。
【００８１】
図4に示すデバイスによれば、第1のテーブルに対応する第1の処理がパケット上で実行された後、デバイス400は、その後の処理を実行するために、次のテーブルの対応する識別子に従って、規則テーブル処理プロセスまたはフローテーブル処理プロセスに移行するようにパケットを制御することができる。すなわち、デバイス400は、規則テーブルとフローテーブルとの間を移行するようにパケットを制御することができる。このようにして、規則テーブルの高い処理性能の特性とフローテーブルの柔軟な処理の特性の両方が考慮可能であり、それによってパケット処理の効率を改善する。さらに、パケットを処理するための次のテーブルが、マイクロコードによって制御されるのではなく、次のテーブルの識別子によって決定される。このようにして、パケットを処理するための次のテーブルが変更されることを必要とするとき、次のテーブルの変更を、マイクロコードを修正することによって実行する必要なく、次のテーブルの識別子を修正することによって実行することができる。次のテーブルが変更されることを必要とするとき、修正されることを必要とする位置は、迅速に決定することができ、また次のテーブルは、次のテーブルの識別子を修正することによって都合よく変更可能である。さらに、次のテーブルの識別子を修正するワークロードは、マイクロコードを修正するワークロードよりもかなり少ない。
【００８２】
さらに、第1の処理ユニット404は、第1のテーブルの明細情報に従って、第1の処理プログラムおよび第1のテーブルを決定し、また第1の処理プログラムおよび第1のテーブルに従って、第1のパケット上での第1の処理を実行するように特に構成される。
【００８３】
さらに、第1の処理ユニット404は、第1のテーブルのエントリを決定し、また第1の処理プログラムを使用することによって、第1のテーブルのエントリに従って、第1のパケット上での第1の処理を実行するように特に構成される。
【００８４】
さらに、第3の決定ユニット405は、第1のテーブルのエントリに従って、次のテーブルの識別子を決定するように特に構成される。
【００８５】
当業者なら、本明細書において開示される実施形態において説明される例と組み合わせて、ユニットおよびアルゴリズムステップは、電子ハードウェア、またはコンピュータソフトウェアと電子ハードウェアの組合せによって実装され得ることを認識するであろう。機能がハードウェアによって実行されるか、ソフトウェアによって実行されるかは、特定の適用例および技術的解決策の設計制約条件に依存する。当業者は、それぞれの特定の適用例に対する説明された機能を実装するために様々な方法を使用する可能性があるが、こうした実装は本発明の範囲を超えるとみなされるべきではない。
【００８６】
便利で簡単な説明を目的として、前述のシステム、装置、およびユニットの詳細な作業プロセスのために、前述の方法の実施形態における対応するプロセスが参照可能であり、そして詳細が本明細書において再び説明されることがないことは、当業者によって明確に理解されよう。
【００８７】
本願において提供されるいくつかの実施形態では、開示されるシステム、装置、および方法は、他の方法で実装され得ることを理解されたい。例えば、説明された装置の実施形態は、単に例示的なものである。例えば、ユニット区分は、単に論理機能区分であり、そのため実際の実装において他の区分であってもよい。例えば、複数のユニットもしくは構成要素は、別のシステムに連結されても、また統合されてもよく、またはいくつかの特徴部分は、無視されても、また実行されなくてもよい。さらに、表示された、もしくは議論された相互結合または直接結合または通信接続は、いくつかのインターフェースを介して実装され得る。装置もしくはユニット間の直接結合または通信接続は、電子的、機械的、または他の形態で実装され得る。
【００８８】
別個の部分として説明されたユニットは、物理的に切り離されているかどうかは分からず、またユニットとして表示された部分は、物理的なユニットかどうかは分からず、1つの位置に位置してもよく、また複数のネットワークユニット上に分散されてもよい。ユニットの一部または全部は、実施形態の解決策の目的を達成するために、実際のニーズに従って選択されてもよい。
【００８９】
さらに、本発明の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよく、またユニットのそれぞれは、物理的に単独で存在してもよく、また2つ以上のユニットは、1つのユニットに統合されてもよい。
【００９０】
機能がソフトウェア機能ユニットの形態で実装され、また独立した製品として販売または使用されるとき、機能は、コンピュータ可読記憶媒体に記憶されてもよい。こうした理解に基づいて、本質的に本発明の技術的解決策は、または従来技術に貢献する部分、または技術的解決策の一部は、ソフトウェア製品の形態で実装され得る。ソフトウェア製品は、記憶媒体に記憶され、またコンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイスなどであってもよい)またはプロセッサ(英語:processor)に、本発明の実施形態において説明された方法のステップのすべてまたは一部を実行するよう命令するためのいくつかの命令を含む。前述の記憶媒体には、USBフラッシュドライブ、リムーバブルハードディスク、読出し専用メモリ(略してROM、英語:Read-Only Memory)、ランダムアクセスメモリ(略してRAM、英語:Random Access Memory)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶することができる任意の媒体が含まれる。
【００９１】
前述の説明は、単に本発明の特定の実施形態であり、本発明の保護範囲を限定することは意図されない。本発明において開示される技術範囲内において当業者によって容易に理解される任意の相違または置換えは、本発明の保護範囲にすべて含まれるものとする。そこで、本発明の保護範囲は、特許請求の範囲に記載の保護範囲の対象であるものとする。
【符号の説明】
【００９２】
400  デバイス
401  取得ユニット
402  第1の決定ユニット
403  第2の決定ユニット
404  第1の処理ユニット
405  第3の決定ユニット
406  第2の処理ユニット
【図１】
0006308601.tif 000005
【図２】
0006308601.tif 000006
【図３】
0006308601.tif 000007
【図４】
0006308601.tif 000008