本発明は、通信技術の分野に関し、特に、パケットを処理するための方法およびフォワーダに関する。
ソフトウェア・デファインド・ネットワーク(Software Defined Network、SDNと略す)は、従来のクローズドネットワークをオープンな環境に変換することを意図しており、コンピュータと同様に、プログラミングも実現できる。OpenFlow技術は、SDNを実現する方法である。OpenFlow技術は、Stanford大学により最も早く提案され、現在のネットワークが、既存の送信制御プロトコル(Transmission Control Protocol、TCPと略す)/インターネットプロトコル(Internet Protocol、IPと略す)の技術条件に基づく、革新的なネットワーク相互接続の概念による新サービスに直面したときに生じる、様々なボトルネックを解決することを目的としている。OpenFlowは、単一のネットワークエレメントにより元来および完全に実現される処理プロセスを転送するパケットを、OpenFlowフォワーダおよびコントローラが共同して完了するプロセスに変換し、それにより、サービス制御からのデータ転送の分離を実現する。コントローラは、標準規格のインターフェース、すなわち、OpenFlowプロトコルを使用することにより、OpenFlowフォワーダにおいてフローテーブルを制御し、それにより、ネットワーク全体にわたる集中制御を実現する。
OpenFlowフォワーダにおける最重要コンポーネントのうちの1つは、フローテーブルであり、フローテーブルは、大量のフローテーブルエントリにより形成され、各フローテーブルエントリがパケット制御規則である。パケットの受信後、フォワーダは、フローテーブルエントリにクエリすることにより、実行される必要のあるアクションを取得してもよい。フォワーダは、複数のフローテーブルを含んでもよく、コントローラは、フォワーダの1以上のフローテーブルに対するサービスフローに特有のフローテーブルエントリを伝える。
各OpenFlowフローテーブルエントリは、フロー情報(フロー・マッチ・フィールド(flow match field)、カウンタおよびアクション(Action))により形成される。詳細として、以下の通り表1に示すものを参照する:
表1中のフロー・マッチ・フィールドは、複数のフィールドにより形成されるマッチ情報であり、フローテーブルエントリの識別子であり、フローを定義するのに使用されてもよい。表2は、フロー・マッチ・フィールドの例を示し、フロー・マッチ・フィールドは10個のフィールドにより形成される。
表1中のカウンタは、トラフィック関連データをカウントするのに使用され、カウンタは、各フローテーブル、各フローまたは各ポートに従った個別設定を実行してもよい。
表1中のアクションは、フローテーブルエントリとマッチする、パケット上で実行されるべきアクションのタイプ、例えば、転送またはドロップのような、アクションタイプを示す。現在のOpenflowプロトコルで定義されたアクションタイプは以下を含む:
Output:特定のポートからのパケットを転送
Set−Queue:特定の転送キューを使用することによりパケットを転送
Drop:パケットをドロップ
Group:処理を実行するために複数のフローをアクションにグルーピング
Push−Tag/Pop−Tag:カプセル化またはカプセル除去
Set−Field:パケットヘッダを変更、および、
Change−TTL:TTLフィールドを変更
現在のフローテーブルのアクションモードは、2つのタイプを含む:アクティブモードおよびパッシブモード。アクティブモードでは、コントローラは、コントローラにより収集されたフローテーブル情報をフォワーダにアクティブに伝え、その後、フォワーダは、フローテーブルに従った転送を直接実行してもよい。パッシブモードは、パケット受信後にマッチングフローテーブルを何ら見つけていないときに、フォワーダはコントローラにパケットを転送し、コントローラは、処理の実行方法を決定し、対応するフローテーブルエントリをフォワーダに伝えることを指す。
従来の技術のフローテーブルでは、フローおよびアクションは直接関係付けられ、いくつかのフローに対応するアクションが同じであるときに、対応するアクションは、各フローに対するフローテーブルエントリに保存される必要があり、そのため、フォワーダに記憶された情報に大量の冗長が発生し、維持も非常に難しい。例えば、アクションが変更されたときに、関連フローテーブルエントリが全て変更される必要がある。
本発明の実施形態は、SDNにおいてパケットを処理するための方法およびフォワーダを提供し、方法は、フォワーダに記憶される冗長情報を減少させ、パケットを処理するためのフォワーダの能力を改善するのに使用される。
第1の態様に従って、フォワーダにより実行される、SDNにおいてパケットを処理するための方法が提供され、具体的に、
入力パケットを受信するステップと、
入力パケットに従って、入力パケットが属するフローを決定するステップと、
フローとコンテキスト識別子セットとの間の第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップであって、第1の対応における各フローに対応するコンテキスト識別子セットは少なくとも1つのコンテキスト識別子を含む、決定するステップと、
コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップと、
コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するステップと
を含む。
第1の態様を参照し、第1の態様の第1の可能性ある実現方法では、方法はさらに、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップの前に、第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するステップを含み、
はいの場合に、
第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップを実行するステップを含み、あるいは、
そうではない場合に、
フロー規則リクエストメッセージをコントローラに送信するステップであって、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含む、送信するステップと、
コントローラにより送信されたフロー規則インスタレーションメッセージを受信するステップであって、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む、受信するステップと、
入力パケットが属するフローに関する情報および入力パケットのフローに対応するコンテキスト識別子セットを、第1の対応に追加するステップとを実行するステップを含む。
第1の態様または第1の態様の第1の可能性ある実現方法を参照し、第1の態様の第2の可能性ある実現方法では、方法はさらに、コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップの前に、第2の対応がコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するステップを含み、
はいの場合に、
第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップを実行するステップを含み、あるいは、
コンテキストセットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、
コンテキスト・リクエスト・メッセージをコントローラに送信するステップであって、コンテキスト・リクエスト・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含む、送信するステップと、
コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するステップであって、コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む、受信するステップと、
コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するステップとを実行するステップを含む。
第2の態様に従って、受信機、プロセッサおよびメモリを具備する、SDNにおいて使用されるフォワーダが提供され、
メモリは、フローとコンテキスト識別子セットとの間の第1の対応およびコンテキスト識別子とコンテキストとの間の第2の対応を記憶するように構成され、第1の対応における各フローに対応するコンテキスト識別子セットは、少なくとも1つのコンテキスト識別子を含み、
受信機は、入力パケットを受信するように構成され、
プロセッサは、入力パケットに従って、入力パケットが属するフローを決定し、メモリに記憶された第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定し、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するように構成されている。
第2の態様を参照し、第2の態様の第1の可能性ある実現方法では、フォワーダはさらに送信機を備え、
プロセッサはさらに、メモリに記憶された第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットが決定される前に、第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するように構成され、はいの場合に、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定し、または、そうではない場合に、フロー規則リクエストメッセージをコントローラに送信するよう送信機に通知するように構成され、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含み、
受信機は、コントローラにより送信されたフロー規則インスタレーションメッセージを受信するように構成され、
プロセッサは、入力パケットが属するフローに関する情報および入力パケットのフローに対応するコンテキスト識別子セットを、第1の対応に追加するようにさらに構成され、
フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む。
第2の態様または第2の態様の第1の可能性ある実現方法を参照し、第2の態様の第2の可能性ある実現方法では、プロセッサはさらに、メモリに記憶された第2の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストが決定される前に、第2の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するように構成され、はいの場合に、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、またはコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、送信機に通知するように構成され、
送信機は、コンテキスト・リクエスト・メッセージをコントローラに送信するようにさらに構成され、
受信機は、コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するようにさらに構成され、
プロセッサは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するようにさらに構成され、
コンテキスト・リクエスト・メッセージは、入力パケットが属するフローに対応するコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含み、
コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む。
第3の態様に従って、フォワーダにより実行される、SDNにおいてパケットを処理するための別の方法は、具体的に、
入力パケットを受信するステップと、
入力パケットに従って、入力パケットが属するフローを決定するステップと、
フローとコンテキスト識別子セットとの間の第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するステップと、はいの場合に、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップ、あるいは、そうではない場合に、フロー規則リクエストメッセージをコントローラに送信するステップであって、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含む、送信するステップと、コントローラにより送信されたフロー規則インスタレーションメッセージを受信するステップであって、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む、受信するステップと、
コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップと、
コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するステップとを含む。
第3の態様を参照し、第3の態様の第1の可能性ある実現方法では、方法はさらに、
コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップの前に、第2の対応がコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するステップを含み、
はいの場合に、
第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップを実行するステップを含み、あるいは、
コンテキストセットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、
コンテキスト・リクエスト・メッセージをコントローラに送信するステップであって、コンテキスト・リクエスト・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含む、送信するステップと、
コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するステップであって、コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む、受信するステップと、
コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するステップとを実行するステップを含む。
第4の態様に従って、インターフェース、プロセッサおよびメモリを具備する、別のフォワーダが提供され、
メモリは、フローとコンテキスト識別子セットとの間の第1の対応およびコンテキスト識別子とコンテキストとの間の第2の対応を記憶するように構成され、第1の対応における各フローに対応するコンテキスト識別子セットは、少なくとも1つのコンテキスト識別子を含み、
インターフェースは、入力パケットを受信するように構成され、
プロセッサは、メモリに記憶された第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するように構成され、はいの場合に、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定し、または、そうではない場合に、インターフェースに通知するように構成され、
インターフェースは、プロセッサの通知を受信した後に、フロー規則リクエストメッセージをコントローラに送信するように構成され、
インターフェースは、コントローラにより送信されたフロー規則インスタレーションメッセージを受信するように構成され、
プロセッサは、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するようにさらに構成され、
フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含み、
フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む。
第4の態様を参照し、第4の態様の第1の可能性ある実現方法では、プロセッサはさらに、メモリに記憶された第2の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストが決定される前に、第2の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するように構成され、はいの場合に、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、または、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、送信機に通知するように構成され、
送信機は、プロセッサの通知の受信後に、コンテキスト・リクエスト・メッセージをコントローラに送信するようにさらに構成され、
受信機は、コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するようにさらに構成され、
プロセッサは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するようにさらに構成され、
コンテキスト・リクエスト・メッセージは、入力パケットが属するフローに対応するコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含み、
コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む。
本発明の実施形態では、フローは、コンテキスト識別子セットに対応し、フローは、コンテキストに直接関係付けられず、複数のフローがコンテキストを共有するときでさえ、このコンテキストは、複数回保存される必要はなく、従来の技術のものと同じハードウェア条件下で、フォワーダの記憶能力および処理能力は、本発明の実施形態で大きく改善される。
本発明の実施形態における技術的解決策をさらに明確に説明するために、以下で、先行技術の実施形態を説明するのに必要な添付図面を簡単に紹介する。明白なことに、以下の説明中の添付図面は、本発明のいくつかの実施形態を示すに過ぎず、さらに、当業者は、創造的な努力をすることなく、これらの添付図面から他の図面を導き出すことができる。
本発明の実施形態に従った、SDNの概略的なアーキテクチャ図である。
本発明の実施形態に従った、フォワーダの概略的な構成図である。
本発明の実施形態に従った、フォワーダによりパケットを処理するための方法の概略的なフローチャートである。
本発明の実施形態に従った、OpenFlowフォワーダにより入力パケットを処理するための方法の概略的なフローチャートである。
本発明の実施形態に従った、フォワーダによりフローまたはコンテキストをインストールするための方法の概略的なフローチャートである。
本発明の実施形態に従った、フォワーダとコントローラとの間の交渉を実行するための方法の概略的なフローチャートである。
本発明の実施形態に従った、フォワーダとコントローラとの間の交渉を実行するための別の方法の概略的なフローチャートである。
本発明の実施形態に従った、フロー、フローに対応するCIDセットまたはCIDに対応するコンテキストに関する情報をコントローラによりクエリ、変更または削除するための方法の概略的なフローチャートである。
以下では、本発明の実施形態における添付図面を参照して、本発明の実施形態における技術的解決策を明確かつ完全に説明する。明白なことに、説明する実施形態は、本発明の実施形態のいくつかではあるが、全てではない。創造的な努力をすることなく、本発明の実施形態に基づいて当業者により得られる他の全ての実施形態は、本発明の保護範囲内にある。
図1は、SDNの概略的なアーキテクチャ図であり、SDNは、フォワーダ14およびコントローラ12を少なくとも含む。フォワーダ14は、データレイヤを転送する責任があり、コントローラ12は、ネットワークにわたる集中制御を実行し、制御レイヤの機能を実現する責任がある。フォワーダ14は、制御プロトコルを使用することにより、コントローラ12と通信する。1つのフォワーダは、1以上の他のフォワーダに接続されてもよく、パケットを送信/受信するための1以上のエンティティ(例えば、固定端末、移動体端末およびパーソナルコンピュータ)にも接続されてもよい。
図2は、フォワーダの概略的な構成図であり、フォワーダ14はインターフェース1402、プロセッサ1404およびメモリ1406を具備する。フォワーダ14は、インターフェース1402を使用することにより、コントローラ12または他のネットワークエンティティと通信する。インターフェース1402は、コントローラ12または他のネットワークエンティティから、メッセージ、情報、パケットまたはデータを受信するように構成され、あるいは、コントローラ12または他のネットワークエンティティに、メッセージ、情報、パケットまたはデータを送信するように構成される。プロセッサ1404は、インターフェース1402により受信されたメッセージ、情報、パケットまたはデータに関していくつかの対応する処理を実行してもよい。メモリ1406は、フローおよびコンテキストに関する情報を記憶するように構成されてもよい。さらに、メモリ1406は、他の情報を記憶するようにさらに構成されてもよく、例えば、受信機2002により受信されたメッセージ、情報、パケットまたはデータを記憶するように、あるいは、プロセッサ1404の処理結果を記憶するように構成されてもよい。メモリ1406に記憶された、フローおよびコンテキストに関する情報はまた、フローとコンテキスト識別子(Context Identifier、CIDと略す)セットとの間の第1の対応およびCIDとコンテキストとの間の第2の対応を含む。
説明を簡略化するために、フローとCIDセットとの間の第1の対応は、以下においてフローテーブルと呼ばれ、このネーム:「フローテーブル」は、第1の対応の記憶の形を制限するように使用されない。その理由は、メモリ1406が第1の対応を記憶するときに、テーブルの形で使用されてもよく、他の形、例えば、記憶ユニットが1以上の他の記憶ユニットにマッピングされる形もまた使用されてもよい。
メモリ1406は、1以上のフローテーブルを記憶してもよい。表3は、本発明の実施形態における、フローテーブルの概略的な構造図である。表3に示すフローテーブルは、表1に示す従来の技術のフローテーブルとは異なる。従来の技術のフローテーブルの各フローが、Actionと直接関係付けられる一方、本発明の本実施形態のフローテーブルにおける各フローは、CIDに関係付けられ、コンテキストに直接関係付けられない。
表3に示すように、フローテーブルにおける各フローに関する情報(例えば、フロー・マッチ・フィールド)とCIDセットとの間の対応はフローテーブルエントリと呼ばれてもよい。フロー・マッチ・フィールドは、フローを識別するために使用され、フロー・マッチ・フィールドは、パケットが属するフローを識別するために必要とされる情報を含み、これらの構造は、表2に示す異なるタプルの任意の組み合わせを含んでもよく、マルチプロトコル・ラベル・スイッチング(Multiprotocol Label Switching、MPLSと略す)識別子、区別されたサービスコードポイント(differentiated services code point、DSCPと略す)コード、転送レイヤプロトコルタイプ、汎用ルーティングカプセル化識別子(Generic Routing Encapsulation Identifier、GRE IDと略す)、GPRSトネリングプロトコルのトンネルエンドポイント識別子(tunnel endpoint identifier of GPRS tunneling protocol、GTP TEIDと略す)およびこれらに類するもののような、他のコンテンツも含んでもよく、あるいは、パケットオフセット値、マッチ長およびこれらに類するものを使用することにより、形成されてもよい。
表3の各フローは、CIDセットに対応し、各CIDセットは、少なくとも1つのCIDを含む。CIDは、コンテキストを一意的に識別するために使用され、例えば、任意の伝搬システムのキャラクタ、数字、文字、数字および文字ならびに数字および他のキャラクタであってもよい、多くの表現形を有することがある。さらに、CIDは、コンテキストのタイプを示すために使用されてもよい。
先述のフローテーブルに加えて、メモリ1406は、CIDとコンテキストとの間の第2の対応をさらに保存する。説明の簡略化のために、CIDとコンテキストとの間の第2の対応は、以下においてコンテキストリストと呼ばれ、同様に、このネームは、第2の対応の記憶の形を制限するように使用されない。その理由は、メモリ1406が第2の対応を記憶するときに、テーブルの形で使用されてもよく、他の形、例えば、記憶ユニットが1以上の他の記憶ユニットにマッピングされる形もまた使用されてもよい。
表4は、本発明の実施形態における、コンテキストリストの概略的な構造図である。表4における各CIDは、コンテキストに対応する。コンテキストは、パケットを処理するために必要とされる情報を含む。
パケットを処理するために必要とされる情報に加えて、従来の技術のActionは、パケットのタイプ(Action Type)をさらに含む一方、本発明の実施形態では、フォワーダは、CIDを使用することにより、対応するコンテキストのタイプを既に知っていることがあり、そのため、コンテキストは、Action Typeに類似するこのような情報をこれ以上含まない。多くのコンテキストタイプがあり、本発明の実現では、従来の技術のactionタイプ(例えば、パケット転送およびパケットドロップ)を含むのに加え、CIDにより示されるコンテキストタイプは、他のタイプをさらに含んでもよく、これにより、フォワーダは、多様な方法で入力パケットを処理してもよい。例えば、コンテキストタイプは、帯域幅制御、ディープ・パケット・インスペクション(Deep Packet Inspection、DPI)、オンライン課金、オフライン課金、ファイアウォール処理、ネットワークアドレス変換(Network Address Translation、NAT)、合法の傍受(lawful interception)、パケット再構築、リンク検出(例えば、双方向転送検出プロトコル(Bidirectional Forwarding Detection Protocol、BFDP)、リンクレイヤディスカバリプロトコル(Link Layer Discovery Protocol、LLDP)またはこれらに類するもの)、あるいは、これらに類するものをさらに含んでもよい。異なるコンテキストタイプはまた、異なるコンテキストに対応し、例えば、帯域幅制御タイプのコンテキストは、最大許容帯域幅、保証帯域幅、転送の優先度およびこれらに類するものを含んでもよく、オフライン課金タイプのコンテキストは、オフライン課金グループのグループ識別子、課金情報の報告インターバル、および、これらに類するものを含んでもよく、一方で、ルーティングおよび転送タイプのコンテキストは、転送ポート番号、送信元MACアドレスまたは宛先MACアドレスおよびこれらに類するものを含んでもよい。
異なるフローが、同じコンテキストに従って処理される必要がある場合に、コンテキストに対応するCIDのみがフローテーブルに繰り返し保存され、コンテキストは、繰り返し保存される必要はない。例えば、フォワーダは、フローテーブルにおける各フローに対応するCIDセットに、コンテキストに対応するCIDを保存することのみを必要とし、コンテキストは、CIDとコンテキストとの間の対応において、一度だけ保存されることのみを必要とする。このように、フォワーダに対して、さらに多くの記憶スペースが節約されてもよく、節約された記憶スペースにより、フォワーダがより多くのコンテキストを記憶できるようにもなり、そのため、従来の技術のものと同じ条件下では、本発明の本実施形態におけるフォワーダは、より多くのコンテキストを記憶してもよく、パケット処理のためにより多くのコンテキストタイプをサポートしてもよい。
さらに、本発明の本実施形態では、パケット上で実行されるコンテキスト処理は、既存のActionより複雑な処理論理を実現するのに使用されてもよい。従来の技術では、OpenFlowフォワーダがactionを実行するときに、現在のパケットのみが処理され、フォワーダは、処理されたパケットにおいて状態維持を実行せず、そのため、actionのみを使用して、単一のパケットにおけるステートレスハンドリング(stateless handling)を実行できるが、フローの以前のパケット処理結果に従って、後続するパケットにおけるステートフルハンドリングを実行できない。しかし、以前のパケット処理結果は、パケット並び替え、DPIおよびウイルス検出のような、いくつかの複雑な処理動作に必要とされる。そのため、現在のaction設計における制限を考慮すると、従来の技術におけるOpenFlowフォワーダは、パケットにおける比較的単純なアクションの実行にのみ適用可能であるが、複雑なアクションを実現できない。本発明の本実施形態におけるフォワーダは、コンテキスト処理ユニットを使用することにより、パケット処理後の状態を保存してもよく、それにより、パケットにおけるさらに複雑な処理を実行してもよい。
理解を容易にするために、特定の例を使用することにより、本発明で提供されるフォワーダについて以下に詳細に述べる。
例えば、図2を参照すると、フォワーダ14のインターフェース1402は、入力パケットを受信するように構成された受信機14022を含んでもよい。入力パケットは、別のフォワーダにより送信されてもよく、別のエンティティ(例えば、コンピュータ、移動体端末または固定端末)により送信されてもよい。
プロセッサ1404は、入力パケットが属するフローを決定するように、例えば入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローを決定するように、構成されている。
プロセッサ1404は、メモリ1406に記憶された第1の対応に従って、入力パケットが属するフローに対応するCIDセットを決定するように、および、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定するように、および、CIDセットに対応するコンテキストに従って、入力パケットを処理するように、さらに構成されている。
入力パケットの処理後、プロセッサ1404は、コンテキスト処理結果を取得する。別の例では、図2を参照すると、フォワーダ14のインターフェース1402は、送信機14024をさらに含んでもよい。送信機14024は、プロセッサ1404が入力パケットを処理した後に取得されたコンテキスト処理結果をコントローラ12に送信するように構成されている。
送信機14024により送信されたコンテキスト処理結果を受信後、コントローラ12は、入力パケットを処理し続ける必要があるか否かを、コンテキスト処理結果に従って決定してもよく、はいの場合に、入力パケットに関して決定される、新しく決定されたフローおよび新しく決定されたCIDセットをフォワーダ14に送信する。フォワーダ14中の受信機14022は、新しく決定されたコンテキスト識別子セットに対応するコンテキストに従って入力パケットをさらに処理するようプロセッサ1404に命令するために、コントローラ12により入力パケットに関して決定される、新しく決定されたフローおよび新しく決定されたコンテキスト識別子セットを受信するようにさらに構成されてもよい。
通常の場合では、入力パケットの受信前に、メモリ1406は既に大半のフローに対応するCIDセットを保存する。しかし、入力パケットのフローに対応するCIDセットを、メモリ1406に記憶された第1の対応中で見つけられない場合も時折起こり、この場合には、フォワーダ14は、入力パケットのフローに対応するCIDセットをコントローラ12から取得してもよい。本発明の別の例では、プロセッサ1404が、入力パケットが属するフローを決定した後に、プロセッサ1404は、入力パケットが属するフローに対応するCIDセットを第1の対応が有するか否かを決定するようにさらに構成されていてもよく、はいの場合に、プロセッサ1404は、第1の対応に従って、入力パケットが属するフローに対応するCIDセットを決定し、いいえの場合、プロセッサ1404は、コントローラ12にフロー規則リクエストメッセージを送信するように送信機14024に通知し、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含む。
受信機14022は、コントローラ12により送信されたフロー規則インスタレーションメッセージを受信するようにさらに構成され、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するCIDセットを含む。その後、プロセッサ1404は、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定してもよく、CIDセットに対応するコンテキストに従って、入力パケットを処理してもよい。
オプション的に、プロセッサ1404は、入力パケットが属するフローに関する情報および入力パケットのフローに対応するCIDセットを第1の対応にさらに追加してもよい。
従来の技術では、フォワーダが、コントローラからの入力パケットのフローに対応するActionをリクエストしたときはいつでも、コントローラは、フロー規則インスタレーションメッセージにActionを運ばせ、フロー規則インスタレーションメッセージをコントローラに送信する。Actionは、多くの処理パラメータを含み、そのため、様々なActionを送信するための要件を満たすために、フロー規則インスタレーションメッセージは、比較的長く設計される必要があるが、フロー規則インスタレーションメッセージが過剰に長く設計された場合に、送信時間は延長され、パケット処理効率に影響を及ぼす。この問題は、単に、本発明で提供される例を使用することにより解決されるかもしれない。コントローラが、フォワーダからフロー規則リクエストメッセージを受信するときに、コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットのフローに対応するCIDセットをフォワーダに送信することのみを必要とし、フォワーダが既にCIDセットに対応するコンテキストを記憶している場合に、フォワーダは、CIDセットにおける各CIDに従って、対応するコンテキストを見つけることのみを必要とする。CIDセットにより占有されるスペースは非常に小さく、CIDセットを送信するためのフロー規則インスタレーションメッセージは、過剰に長く設計される必要はなく、そのため、フロー規則インスタレーションメッセージを送信するのに使用される時間もまた短くなり、フォワーダがパケットを処理する効率もある程度改善できる。
当然、先述の例で説明した方法に加えて、コントローラ12はさらに、CIDセットに対応するコンテキストおよびCIDセットを共にフォワーダ14に送信してもよい。例えば、コントローラ12により送信されるフロー規則インスタレーションメッセージは、CIDセットに対応するコンテキストをさらに含んでもよい。この場合には、フロー規則インスタレーションメッセージのフォーマットは以下の通りであってもよい:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID1,CID2,CID3>,[CID1,Context1],[CID2,Context2],[CID3,Context3]}
受信機14022がフロー規則インスタレーションメッセージを受信した後に、第2の対応がCIDセット中のいくつかまたは全てのCID、ならびに、いくつかまたは全てのCIDに対応するコンテキストを保存していないことがプロセッサ1404により判明した場合、プロセッサ1404は、いくつかまたは全てのCIDと、いくつかまたは全てのCIDに対応するコンテキストとを第2の対応に追加する。
同様に、通常の場合では、入力パケットの受信前に、大半のCIDおよびCIDに対応するコンテキストは、メモリ1406に記憶された第2の対応に既に記憶されている。しかし、1または複数のCIDに対応するコンテキストを、メモリ1406に記憶された第2の対応中で見つけられない場合も時折起こり、この場合には、フォワーダ14は、1または複数のCIDに対応するコンテキストをコントローラ12から取得および入力してもよい。例えば、別の例では、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定する前に、プロセッサ1404は、入力パケットが属するフローに対応するCIDセットに対応するコンテキストを第2の対応が有するか否かをさらに決定してもよく、はいの場合に、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定し、あるいは、CIDセット中のいくつかまたは全てのCIDが対応するコンテキストを有しない場合、コントローラ12にコンテキスト・リクエスト・メッセージを送信するよう送信機14024に通知し、コンテキスト・リクエスト・メッセージは、入力パケットが属するフローに対応するCIDセット中のいくつかまたは全てのCIDを含む。
受信機14022は、コントローラ12により送信されるコンテキスト・インスタレーション・メッセージを受信するようにさらに構成され、コンテキスト・インスタレーション・メッセージは、CIDセット中のいくつかまたは全てのCIDならびにCIDセット中のいくつかまたは全てのCIDに対応するコンテキストを含む。
オプション的に、プロセッサ1408は、CIDセット中のいくつかまたは全てのCIDならびにいくつかまたは全てのCIDに対応するコンテキストを第2の対応に追加するようにさらに構成されていてもよい。
フォワーダは、パケット処理後の様々な処理結果を取得し、フォワーダは、コントローラにいくつかの処理結果を、例えば、合法の傍受により取得された関連情報、NATサービスの実行後に取得された結果およびこれらに類するものを報告する必要がある。フォワーダは、いくつかの結果をさらに処理する必要があるかもしれない。例えば、本発明の別の例では、フォワーダ14中のプロセッサ1408が入力パケットを処理した後に取得された処理結果は、新しく生成されたパケットであってもよい。新しく生成されたパケットにおいてフォワーダ14により実行される処理は、入力パケットにおいて実行される処理と同様であり、これは、本明細書において再度詳細に説明しない。
従来の技術では、OpenFlowのactionは、現在のパケットにおいてどのタイプの処理が実行されるかを規定しているに過ぎず、フォワーダは、パケットの処理結果を維持せず、そのため、パケットに関する以前の処理結果に基づいて次の処理が実行される必要があるときに、従来の技術におけるactionを実現できない。
先述の例で説明した第1の対応は、フォワーダ14における初期設定を実行するときに、技術者によりメモリ1406に記憶されてもよく、フォワーダ14およびコントローラ12が接続を確立した後に、コントローラ12によりフォワーダ14に送信されてもよい。例えば、入力パケットの受信前に、受信機14022は、最初に、コントローラ12により送信されたフロー規則インスタレーションメッセージを受信してもよく、フロー規則インスタレーションメッセージは、フォワーダ14によりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダ14によりサポートされるいくつかまたは全てのフローに対応するCIDセットを含む。受信機14022は、第1の対応を形成するために、フォワーダ14によりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダ14によりサポートされるいくつかまたは全てのフローに対応するCIDセットを、1対1の対応方法で保存するようメモリ1406に通知する。
同様に、先述の例で説明した第2の対応は、フォワーダ14における初期設定を実行するときに、技術者によりメモリ1406に記憶されてもよく、フォワーダ14およびコントローラ12が接続を確立した後に、コントローラ12によりフォワーダ14に送信されてもよい。例えば、入力パケットの受信前に、受信機14022は、最初に、コントローラ12により送信されたコンテキスト・インスタレーション・メッセージを受信してもよく、コンテキスト・インスタレーション・メッセージは、フォワーダ14によりサポートされるいくつかまたは全てのCIDならびにフォワーダ14によりサポートされるいくつかまたは全てのCIDに対応するコンテキストを含む。受信機14022は、第2の対応を形成するために、フォワーダ14によりサポートされるいくつかまたは全てのCIDならびにフォワーダ14によりサポートされるいくつかまたは全てのCIDに対応するコンテキストを、1対1の対応方法で保存するようメモリ1406に通知する。
別の例では、フォワーダ14がコントローラ12と通信する前に、フォワーダ14は、フローおよびコンテキストを処理するためのピアの能力を知るために、最初に、コントローラ12と交渉してもよい。例えば、フォワーダ14中の送信機14024は、コントローラ12に能力交渉リクエストメッセージを送信し、能力交渉リクエストメッセージは、フォワーダによりサポートされるコンテキスト能力リストを含み、これにより、コントローラ12は、フォワーダ14がサポートできるいくつかまたは全てのコンテキストをフォワーダ14に送信する。受信機14022は、コントローラ12により送信された交渉リスポンスメッセージを受信し、交渉リスポンスメッセージは、コントローラ12によりサポートされるコンテキスト能力リストを含んでもよく、これにより、フォワーダ14は、コントローラ12によりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラからのいくつかまたは全てのコンテキストをリクエストする。
フォワーダ14およびコントローラ12の前の先述の交渉は、コントローラ12によりアクティブに開始されてもよい。例えば、フォワーダ14中の受信機14022は、コントローラ12により送信される能力交渉リクエストメッセージを受信し、能力交渉リクエストメッセージは、コントローラ12によりサポートされるコンテキスト能力リストを含み、これにより、フォワーダ14は、コントローラ12によりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラ12からのいくつかまたは全てのコンテキストをリクエストする。フォワーダ14中の送信機14024は、コントローラ12に交渉リスポンスメッセージを送信し、交渉リスポンスメッセージは、フォワーダ14によりサポートされるコンテキスト能力リストを含んでもよく、これにより、コントローラ12は、フォワーダ14がサポートできるいくつかまたは全てのコンテキストをフォワーダ14に送信する。
コントローラ12は、フォワーダ14のメモリ1406に記憶された第1の対応または第2の対応を、例えば、第1の対応あるいは第2の対応中の、クエリ、変更または削除情報を管理してもよい。
例えば、コントローラ12が、フローに対応するCIDセットをクエリする必要がある場合に、コントローラ12は、フロー規則クエリ・リクエスト・メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたフロー規則クエリ・リクエスト・メッセージを受信し、クエリ・リクエスト・メッセージは、クエリされることになるフローに関する情報を含む。プロセッサ1406は、第1の対応に従って、クエリされることになるフローに対応するCIDセットを見つけ、コントローラ12にフロー規則クエリ・リスポンス・メッセージを送信するよう送信機14024に通知し、フロー規則クエリ・リスポンス・メッセージは、クエリされることになるフローに関する情報およびクエリされることになるフローに対応するCIDセットを含む。
別の例に関して、コントローラ12が、1または複数のCIDに対応するコンテキストをクエリする必要がある場合に、コントローラ12は、コンテキスト・クエリ・リクエスト・メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたコンテキスト・クエリ・リクエスト・メッセージを受信し、クエリ・リクエスト・メッセージは、クエリされることになるCIDを含み、1以上のクエリされることになるCIDがあることがある。プロセッサ1404は、第2の対応に従って、クエリされることになるCIDに対応するコンテキストを見つけ、コントローラにコンテキスト・クエリ・リスポンス・メッセージを送信するよう送信機14024に通知し、クエリ・リスポンス・メッセージは、クエリされることになるCIDに対応するコンテキストを含む。オプション的に、先述のクエリ・リスポンス・メッセージは、クエリされることになるCIDをさらに含んでもよい。
別の例に関して、コントローラ12が、フローに対応するCIDセットを変更する必要がある場合に、コントローラ12は、フォワーダ14にフロー変更メッセージを送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたフロー規則変更メッセージを受信し、フロー変更メッセージは、変更されることになるフローに関する情報および変更されることになるフローに対応する新しいCIDセットを含む。受信機14022は、第1の対応において、変更されることになるフローに対応するCIDセットを、新しいCIDセットに変更するようプロセッサ1404に通知する。例えば、受信機14022は、コントローラ12により送信されたフロー規則変更メッセージを受信し、フロー規則変更メッセージに含まれる、変更されることになるフローに関する情報は、以下の通りである:送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに関して、変更されることになるフローに対応する新しいCIDセットは、CID1、CID2およびCID5である。第1の対応において、当初、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットは、CID1、CID2およびCID3であり、先述のフロー変更メッセージを受信後、受信機14022は、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットを、CID1、CID2およびCID5に変更するようプロセッサ1404に通知する。
別の例に関して、コントローラ12は、1または複数のCIDに対応するコンテキストを変更する必要がある場合に、コントローラ12は、コンテキスト変更メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたコンテキスト変更メッセージを受信し、コンテキスト変更メッセージは、変更されることになるCIDおよび変更されることになるコンテキスト識別子に対応する新しいコンテキストを含む。受信機14022は、第2の対応において、変更されることになるCIDに対応するコンテキストを、新しいコンテキストに変更するようプロセッサ1404に通知する。例えば、当初CID1に対応するコンテキストはContext1aであり、受信機14022により受信されたコンテキスト変更メッセージがCID1およびCID1に対応する新しいコンテキストであるContext1bを含む場合に、受信機14022は、第2の対応において、CID1に対応するコンテキストを、Context1bに変更するようプロセッサ1404に通知する。
別の例に関して、コントローラ12が、フローに関する情報を削除する必要がある場合に、コントローラ12は、フロー削除メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたフロー削除メッセージを受信し、フロー削除メッセージは、削除対象のフローに関する情報を含む。受信機14022は、削除対象のフローに関する情報および削除対象のフローに対応するCIDセットを第1の対応から削除するようプロセッサ1404に通知する。
オプション的に、削除されたフローに対応するいくつかまたは全てのCIDが他のフローに対応しない場合に、プロセッサ1404は、削除されたフローに対応するいくつかまたは全てのCIDならびに削除されたフローに対応するいくつかまたは全てのCIDに対応するコンテキストを第2の対応からさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。プロセッサ1404は、フロー1に関する情報を第1の対応から削除した後、CID2がフロー1にのみ対応することがプロセッサ1404により判明した場合に、プロセッサ1404は、CID2に対応するコンテキストを第2の対応からさらに削除してもよい。しかし、CID1はフロー1に対応するだけでなく、フロー2にも対応するため、プロセッサ1404は、CID1に対応するコンテキストを削除しない。
フロー2に関する情報も削除された後、CID1が他のフローに対応しないことがプロセッサ1404により判明した場合に、プロセッサ1404は、CID1に対応するコンテキストを第2の対応から削除する。
オプション的に、プロセッサ1404は、削除されたフローに関する情報あるいは削除されたコンテキストに対応するCIDをコントローラ12に報告するよう送信機14024にさらに通知してもよい。
別の例に関して、コントローラ12がコンテキストを削除する必要がある場合に、コントローラ12は、コンテキスト削除メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたコンテキスト削除メッセージを受信するように構成され、コンテキスト削除メッセージは、少なくとも1つの削除対象のコンテキスト識別子を含む。受信機14022は、少なくとも1つの削除対象のCIDおよび少なくとも1つの削除対象のCIDに対応するコンテキストを第2の対応から削除するようプロセッサ1404に命令するように構成されている。
オプション的に、第2の対応中のコンテキストの削除後、プロセッサ1404は、それに応じて第1の対応をさらに変更してもよく、例えば、プロセッサ1404は、第1の対応中の削除されたコンテキストに対応するCIDを削除する。
プロセッサ1404が、コンテキストのCIDに対応するフローを処理するときに、コンテキストの削除により、問題の発生が引き起こされることがあり、そのため、第1の対応中の削除されたコンテキストに対応するCIDの削除後、プロセッサ1404は、第1の対応中の削除されたCIDに対応するフローに関する情報をさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。プロセッサ1404が、メモリ1406に記憶された第2の対応から、コンテキストに対応するCID1を削除した後、CID1に対応するフローがフロー1およびフロー2を含むことがプロセッサ1404により判明した場合に、プロセッサ1404は、第1の対応中のフロー1に関する情報およびフロー2に関する情報をさらに削除してもよい。さらに、プロセッサ1404は、フロー1およびフロー2に別々に対応するCIDセットをさらに削除してもよい。
オプション的に、プロセッサ1404は、削除されたコンテキストに対応するCIDおよび削除されたフローに関する情報をコントローラ12に報告するよう送信機14024にさらに通知してもよい。
本発明で提供される先述の例を使用することにより、コントローラ12は、フォワーダ14に保存された第1の対応および第2の対応を効率的に管理してもよい。
本発明の本実施形態で提供されるフォワーダの紹介後、本発明の実施形態に従った方法を、いくつかの例を使用することにより以下で紹介する。
図3は、本発明の実施形態に従った、フォワーダによりパケットを処理するための方法の概略的なフローチャートであり、具体的には以下の通りである:
ステップ302:フォワーダが入力パケットを受信する。
入力パケットは、別のフォワーダにより送信されてもよく、別のエンティティ(例えば、コンピュータ、移動体端末または固定端末)により送信されてもよい。
ステップ304:フォワーダは、入力パケットに従って、入力パケットが属するフローを決定する。
フォワーダは、入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローを決定してもよい。入力パケットが属する1以上のフローがあることがある。
例えば、フォワーダが入力パケットを受信した後、入力パケットのパケットヘッダは以下の通りである:
MAC1|MAC2|IP−TYPE(0x0800)|IP1|IP2|TCP−TYPE(6)|PORT1|PORT2
ここで、MAC1は、パケットのMAC送信元アドレスであり、MAC2は、パケットのMAC宛先アドレスである。IP−TYPE(0X800)は、パケットのネットワーク・レイヤ・プロトコルがIPv4プロトコルであることを示し、IP1はパケットのIP送信元アドレスであり、IP2はパケットのIP宛先アドレスである。TCP−TYPE(6)は、パケットの転送レイヤプロトコルがTCPプロトコルであることを示し、PORT1はパケットの送信元TCPポート番号であり、PORT2はパケットの宛先TCPポート番号である。
入力パケットが属するフローは、入力パケットのパケットヘッダのいくつかまたは全てのコンテンツを使用することにより決定されてもよい。先述のパケットヘッダを例として使用することにより、先述のパケットヘッダに従って、入力パケットが、MAC送信元アドレスがMAC1であり、MAC宛先アドレスがMAC2であるフローに属し、入力パケットが、IP送信元アドレスがIP1であり、IP送信元アドレスがIP2であるフローに属することなどを決定してもよい。
ステップ306:フォワーダは、フローとCIDとの間の第1の対応に従って、入力パケットが属するフローに対応するCIDセットを決定し、第1の対応における各フローに対応するCIDセットは少なくとも1つのCIDを含む。
フォワーダが1つのフローテーブルのみを有し、フローテーブルが表5に示すフローテーブルエントリを含み、表5の第1の列がフロー・マッチ・フィールドを示し、第2の列がフロー・マッチ・フィールドにマッチするCIDセットを示すと仮定する。
フォワーダは、入力パケットのパケットヘッダとフローテーブル5におけるフロー・マッチ・フィールドとをマッチさせ、入力パケットが属するフロー(MAC送信元アドレスがMAC1であり、MAC宛先アドレスがMAC2であるフロー)に対応するCIDセットがCIDセット1であることに気付く。
入力パケットのパケットヘッダが、フローテーブル中の複数のフローテーブルエントリとマッチすることがあるときに、フォワーダは、フローテーブルエントリの優先度に従って、入力パケットとマッチするフローテーブルエントリとして、最も優先度の高いフローテーブルエントリを選択する。
ステップ308:フォワーダは、CIDとコンテキストとの間の第2の対応に従って、入力パケットが属するフローに対応するCIDセットに対応するコンテキストを決定する。
例えば、先述のCIDセット1はCIDのみを含む、例えば、CID=5であると仮定する。フォワーダに保存されたCIDとコンテキストとの間の第2の対応を、以下の通り表6に示す:
先述の説明に従うと、入力パケットが属する第1のフローに対応するCIDセットはCIDセット1であり、CIDセット1が、シリアル番号が5であるCIDのみを有する場合に、フォワーダは、シリアル番号が5であるCIDに従って、CIDに対応するコンテキストがoutport:1であることに気付いてもよい。
ステップ310:フォワーダは、ステップ308で決定されたコンテキストに従って、入力パケットを処理する。
例えば、シリアル番号が5であるCIDに対応するContextがoutport:1である場合に、フォワーダは入力パケットをポート1に転送する。
先述の実施形態で説明した方法を使用することにより、フォワーダは、さらなるコンテキストを記憶してもよく、パケット処理に対するさらなるタイプをサポートしてもよく、それにより、パケットを処理するためのフォワーダの能力を改善する。
先述の実施形態で説明した方法は、入力パケットが属する複数のフローがある場合にさらに適用可能であり、例えば、ステップ304において入力パケットが属する2つのフローがあることをフォワーダが決定したときに、ステップ310の実行後、フォワーダは、ステップ306にさらにシフトしてもよく、別のフローテーブルに従って、入力パケットが属する別のフローに対応するCIDセットを決定してもよい。例えば、フォワーダ中の別のフローテーブルが表7に示すフローテーブルエントリを含み、表7の第1の列はフロー・マッチ・フィールドを示し、第2の列は、フロー・マッチ・フィールドにマッチするCIDセットを示すと仮定する。
フォワーダは、入力パケットのヘッダとフォワーダ中のフローテーブル7におけるフロー・マッチ・フィールドとをマッチさせ、入力パケットが属する別のフロー(IP送信元アドレスがIP1であり、IP宛先アドレスがIP2であるフロー)に対応するCIDセットがCIDセット2であることに気付く。その後、フォワーダは、CIDセット2に対応するCIDに従って、入力パケットを処理してもよい。
入力パケットが属するフローに対応するCIDセットが複数のCIDを含む場合に、フォワーダは、予め設定されたコンテキストシーケンスで、複数のCIDに対応するコンテキストに従って、入力パケットを処理する。
先述のコンテキストシーケンスが、少なくとも2つのコンテキストがシーケンス中で同じである場合を含む場合に、フォワーダは、少なくとも2つのコンテキストの双方に従って、入力パケットを処理する。
コンテキストが実行されるシーケンスは、以下の3つの方法で示されてもよい:
(1)第1の対応において、シーケンス番号は、各フローに対応するCIDセット中の各CIDに対して設定される。例えば、入力パケットが属するフローに対応するCIDセットはCID1〜CID5であり、CID1〜CID5に対応するシーケンス番号は、表8の第2の列に別々に示される。フォワーダは、第2の列のシーケンス中のCID1〜CID5に対応するコンテキストに従って、入力パケットを処理する。CID3およびCID4が同じシーケンス番号を有することから、フォワーダは、CID3およびCID4の双方に対応するコンテキストに従って、入力パケットを処理する。
(2)第1の対応において、各フローに対応するCIDセット中の各CIDは、デフォルトの配列のシーケンスを有し、いくつかのCIDと他のCIDとの間に関係があってもよい。例えば、入力パケットが属するフローに対応するCIDセットが表9に示され、第1の列はCIDの配列シーケンスを示し、第2の列は、各CIDと他のCIDとの間の関係を示す。CID1〜CID5に従って入力パケットを処理するときに、フォワーダは、他のCIDに関係付けられていないCIDに対して、表9の第1の列におけるCIDの配列シーケンスで処理を実行する。第2の列が、CID3とCID4が関係付けられていることを示していることから、フォワーダは、CID3およびCID4の双方に対応するコンテキストに従って、入力パケットを処理する。
(3)第1の対応において、各フローに対応するCIDセットおよびCIDセット中の各CIDを実行するシーケンスは、2つのリストを使用することにより示されてもよい。例えば、入力パケットが属するフローに対応するCIDセットは、表10に示され、表10は、CIDのデフォルトの配列シーケンスを昇順で示すために使用され、表11は、CID間の関係を示すために使用される。関係を有することが記録された表11におけるCIDに対して、フォワーダは、これらのCIDに対応するコンテキストに従って、入力パケットを同時に処理する。関係を有することが記録されていない表11におけるCIDに対して、交換は、表10に示したCIDのデフォルトの配列シーケンスで、入力パケットを処理する。
従来の技術では、フォワーダは、入力パケットのフローに対応するActionの配列シーケンスで、シーケンシャルに実行を行うことのみができる。しかし、本発明の本実施形態では、CIDのシーケンス番号間の関係またはCIDが導入され、これにより、いくつかのCIDに対応するコンテキストが並行して処理されてもよく、それにより、パケットを処理するためのフォワーダの効率が改善される。
しかし、実際の適用では、全てのコンテキストタイプが並行して処理されるわけではなく、2つまたは複数のコンテキストの処理結果が互いに影響しない場合にのみ、これらの2つまたは複数のコンテキストが並行して処理され得る。例えば、ファイアウォール処理および転送のような2つのコンテキストタイプは並行して処理できない。これらの2つのコンテキストの処理結果が互いに影響することから、フォワーダは、入力データにおいてファイアウォール処理を最初に実行し、その後、転送を実行する必要がある。あるいは、入力パケットを最初に転送し、その後、ファイアウォール処理を実行する必要がある。しかし、合法の傍受および転送は、並行して処理されてもよい。処理が並行して実行されることがある多くの例があるが、本明細書では1つずつ列挙しない。
ステップ310では、入力パケットの処理後、フォワーダは、コンテキスト処理結果を取得する。オプション的に、別の例では、フォワーダは、以下のステップをさらに実行してもよい:
ステップ312:フォワーダは、コンテキスト処理結果をコントローラに送信する。
フォワーダは、イベント報告メッセージを使用することにより、コンテキスト処理結果をコントローラに送信する。例えば、パケット転送が成功したか否か、入力パケットにおけるオンライン課金の実行後に取得された課金結果、入力パケットにおけるDPIの実行後に取得された結果およびこれらに類するもののような、多くのコンテキスト処理結果があってもよい。
例えば、ステップ310においてフォワーダにより入力パケットにおいて実行されたコンテキスト処理が、入力パケットにおいて実行されたDPIである場合に、ステップ312において、フォワーダは、イベント報告メッセージを使用することにより、入力パケットにおけるDPIの実行後に取得された結果をコントローラに送信してもよい。イベント報告メッセージは、報告される必要のあるイベント(例えば、P2Pパケットの検出(P2P_DTECTED))を含む。さらに、イベント報告メッセージは、入力パケットのいくつかまたは全てのコンテンツ、ならびに/あるいは、コンテキスト実行の結果(例えば、入力パケットにおけるDPIの実行後に取得された詳細な情報)をさらに含んでもよい。
イベント報告メッセージの受信後、コントローラは、コンテキスト処理結果に従って、入力パケットを処理し続ける必要があるか否かを決定してもよく、はいの場合に、入力パケットに対して決定される、新しく決定されたフローおよび新しく決定されたCIDセットをフォワーダに送信してもよく、これにより、フォワーダは、新しく決定されたフローおよび新しく決定されたCIDセットに従って、入力パケットを処理する。例えば、イベント報告メッセージの受信後、イベント報告メッセージに含まれるコンテキスト処理結果が「入力パケットの転送に成功した」であることがコントローラにより判明した場合、コントローラは、何ら処理を実行しなくてもよい。別の例に関して、フォワーダは、イベント報告メッセージを使用することにより、報告される必要のあるイベントならびに入力パケットのいくつかまたは全てのコンテンツがコントローラに送信された後、コントローラにより、入力パケットを処理し続ける必要があることが判明した場合、コントローラは、新しいフローテーブルエントリをフォワーダに送信し、これにより、フォワーダは、新しいフローテーブルエントリに従って、入力パケットを処理し、新しいフローテーブルエントリは、入力パケットに対して決定される、新しく決定されたフロー・マッチ・フィールドおよび新しく決定されたCIDセットを含む。
一般的な状況では、入力パケットの受信前に、フォワーダは既に、パケットが属するフローに対応するCIDセットを保存している。しかし、フォワーダが、第1の対応中の入力パケットのフローに対応するCIDセットを見つけられない場合も時折起こり、この場合、フォワーダは、入力パケットのフローに対応するCIDセットをコントローラから取得してもよい。図3を参照すると、本発明の別の例では、フォワーダがステップ306を実行する前に、方法はさらに以下のステップを含んでもよい:
ステップ305a:第1の対応が、入力パケットが属するフローに対応するCIDセットを有するか否かを決定する。はいの場合に、ステップ306〜ステップ310を実行し、あるいは、そうではない場合に、ステップ305b〜ステップ305dを実行する。
ステップ305b:入力パケットをバッファにバッファリングし、フロー規則リクエストメッセージをコントローラに送信し、フロー規則リクエストメッセージは、入力パケットのパケットヘッダあるいは入力パケットのいくつかまたは全てのコンテンツを含む。
例えば、OpenFlowプロトコルを使用することにより、フォワーダがコントローラと通信するときに、フォワーダは、入力パケットに対応するCIDセットを取得することをリクエストするために、パケット報告(Packet_In)メッセージをコントローラに送信し、Packet_Inメッセージは、入力パケットのパケットヘッダあるいは入力パケットのいくつかまたは全てのコンテンツを含む。さらに、Packet_Inメッセージは、入力パケットがバッファリングされるバッファ(例えば、Buffer_ID)、報告の理由(例えば、「フローテーブルが、マッチしたフローテーブルエントリを有しない」理由)およびこれらに類するものに関する情報をさらに運んでもよい。
ステップ305c:コントローラにより送信されたフロー規則インスタレーションメッセージを受信し、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するCIDセットを含む。
例えば、フォワーダにより送信されたフロー規則リクエストメッセージの受信後、コントローラは、フロー規則リクエストメッセージ中の入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローに対応するCIDセットが、具体的には以下の通りである7個のCIDを含むことを決定する:
CID1 最大帯域幅の2Mbpsでの制御
CID2 パケット再構築
CID3 DPI
CID4 ウイルスファイアウォール検出
CID5 パケットバッファリング
CID6 合法の傍受
CID7 ポート1への転送
コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットが属するフローに対応するCIDセットをフォワーダに送信し、例えば、コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットが属するフローに対応するCIDセットをフォワーダに送信してもよく、フロー規則インスタレーションメッセージのフォーマットは以下の通りである:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID1,CID2,CID3,CID4,CID5,CID6,CID7>}
オプション的に、コントローラは、以下のような、複数のフロー規則インスタレーションメッセージを使用することにより、フォワーダに、入力パケットが属するフローに対応するCIDセットも送信してもよい:
<フロー規則インスタレーションメッセージ1>:={フローに関する情報,<CID1,CID2,CID3,CID4>}
<フロー規則インスタレーションメッセージ2>:={フローに関する情報,<CID5,CID6,CID7>}
オプション的に、コントローラにより送信されたフロー規則インスタレーションメッセージは、以下のような、各CIDを実行するシーケンスをさらに含む:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<(CID1,1),(CID2,2),(CID3,3),(CID4,4),(CID5,4),(CID6,4),(CID7,5)>}
各CIDを実行する先述のシーケンスを使用することにより、CID4、CID5およびCID6は、同時に実行される必要があることが理解される。フロー規則インスタレーションメッセージの先述のフォーマットは例に過ぎず、実際の適用では別のフォーマットであってもよく、例えば、入力パケットが属するフローに対応するCIDセットは、入力パケットのフローに対応するCIDセットがフォワーダに送信され得る限り、CIDリスト(list)を使用することにより示される。
別の例に関して、フォワーダにより送信されたフロー規則リクエストメッセージの受信後、コントローラは、フロー規則リクエストメッセージ中の入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローが、BFD/LLDPプロトコルに対応するフローであると決定し、コントローラは、BFD/LLDPプロトコルに対応するフローに対応するCIDセットを決定する。対応するCIDセットは、以下の通りのCIDのみを含んでもよい:
CID8 BFD/LLDPプロトコル処理
コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットが属するフローに対応するCIDセットをフォワーダに送信する。例えば、フロー規則インスタレーションメッセージのフォーマットは、以下の通りである:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID8>}
先述のフロー規則インスタレーションメッセージの受信後、コントローラは、入力パケットにおいてBFD/LLDPプロトコル処理を実行するのみであり、例えば、プロトコルステートマシンを更新する。入力パケットが属する複数のフローがあるときに、コントローラは、複数のフロー規則インスタレーションメッセージを使用することにより、フローに対応するCIDセットをフォワーダに送信してもよく、これにより、フォワーダは、フローに対応するCIDセットを異なるフローテーブルに保存する。
例えば、OpenFlowプロトコルを使用することにより、フォワーダがコントローラと通信するときに、先述のフロー規則インスタレーションメッセージは、Flow_Modメッセージであってもよく、先述のフローに関する情報は、フロー・マッチ・フィールド(Flow match field)であってもよい。入力パケットが2つのフローに対応し、フローに対応するフロー・マッチ・フィールドはFlow match field1およびFlow match field2に別々に対応すると仮定する。コントローラは、Flow match field1およびFlow match field1に対応するCID list1を、フォワーダに送信される第1のFlow_Modメッセージに運ばせ、Flow match field2およびFlow match field2に対応するCID list2を、フォワーダに送信される第2のFlow_Modメッセージに運ばせる。コントローラは、フローテーブル(例えば、フローテーブルのID(table id))に関する情報を、各Flow_Modメッセージにさらに運ばせてもよく、これにより、フォワーダは、各Flow_Modメッセージで運ばれるFlow match fieldおよびFlow match fieldに対応するCIDセットを、対応するフローテーブルに追加する。例えば、第1のFlow_Modメッセージは、table id=1を含み、第2のFlow_Modメッセージは、table id=2を含む。さらに、Flow_Modメッセージは、フローテーブル処理シーケンスを示すために使用される情報をさらに運んでよい。例えば、第1のFlow_Modメッセージは、表示情報のピース(例えば、「Goto−table 2」)を含む。第1のFlow_Modメッセージの受信後、フォワーダは、表1におけるFlow match field1に従って、対応するCID list1を見つけ、CID list1に対応するコンテキストに従って、入力パケットを処理し、その後、フォワーダは、対応するCID list2を見つけるために、表2に従って、入力パケットにおけるマッチングを実行する必要がさらにあり、CID list2に対応するコンテキストに従って、入力パケットを処理する。
ステップ305d:入力パケットが属するフローに関する情報および入力パケットが属するフローに対応するCIDセットを第1の対応に追加する。
ステップ305dは、オプション的であり、ステップ305dは、ステップ305cの後に実行されてもよく、ステップ306の後に実行されてもよい。
従来の技術では、フォワーダが、コントローラからの入力パケットが属するフローに対応するActionをリクエストしたときはいつでも、コントローラは、フロー規則インスタレーションメッセージにActionを運ばせ、フロー規則インスタレーションメッセージをコントローラに送信する。Actionは、多くの処理パラメータを含み、そのため、様々なActionを送信するための要件を満たすために、フロー規則インスタレーションメッセージは、比較的長く設計される必要があるが、フロー規則インスタレーションメッセージが過剰に長く設計された場合に、送信時間は延長され、パケット処理効率に影響を及ぼす。この問題は、単に、本発明で提供される例を使用することにより解決されるかもしれない。コントローラが、フォワーダからフロー規則リクエストメッセージを受信するときに、コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットのフローに対応するCIDセットをフォワーダに送信することのみを必要とし、フォワーダが既にCIDセットに対応するコンテキストを記憶している場合に、フォワーダは、CIDセットにおける各CIDに従って、対応するコンテキストを見つけることのみを必要とする。CIDセットにより占有されるスペースは非常に小さく、CIDセットを送信するためのフロー規則インスタレーションメッセージは、過剰に長く設計される必要はなく、そのため、フロー規則インスタレーションメッセージを送信するのに使用される時間もまた短くなり、フォワーダがパケットを処理する効率もある程度改善できる。
当然、先述の例で説明した方法に加えて、コントローラはさらに、CIDセットに対応するコンテキストおよびCIDセットを共にフォワーダに送信してもよい。例えば、ステップ305cにおいてコントローラにより送信されたフロー規則インスタレーションメッセージは、CIDセットに対応するコンテキストをさらに含んでもよい。この場合には、フロー規則インスタレーションメッセージのフォーマットは以下の通りであってもよい:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID1,CID2,CID3>,[CID1,Context1],[CID2,Context2],[CID3,Context3]}
フロー規則インスタレーションメッセージの受信後に、第2の対応がCIDセット中のいくつかまたは全てのCID、ならびに、いくつかまたは全てのCIDに対応するコンテキストを保存していないことがフォワーダにより判明した場合、フォワーダは、いくつかまたは全てのCIDと、いくつかまたは全てのCIDに対応するコンテキストとを第2の対応に追加する。
通常の状況では、入力パケットの受信前に、大半のCIDおよびCIDに対応するコンテキストは、フォワーダ中の第2の対応に既に記憶されている。しかし、フォワーダが、1または複数のCIDに対応するコンテキストを、第2の対応中で見つけられない場合も起こり、この場合には、フォワーダは、1または複数のCIDに対応するコンテキストをコントローラから取得してもよい。図3を参照すると、別の例では、ステップ308の実行前に、フォワーダは、以下のステップをさらに実行してもよい:
ステップ307a:第2の対応が、入力パケットが属するフローに対応するCIDセットに対応するコンテキストを有するか否かを決定する。はいの場合に、ステップ308を実行し、あるいは、第2の対応が、CIDセット中にいくつかまたは全てのCIDを有しない場合、ステップ307b〜ステップ307dを実行する。
ステップ307b:コンテキスト・リクエスト・メッセージをコントローラに送信し、コンテキスト・リクエスト・メッセージは、CIDセット中にいくつかまたは全てのCIDを含む。
ステップ307c:コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信し、コンテキスト・インスタレーション・メッセージは、CIDセット中のいくつかまたは全てのCIDならびにCIDセット中のいくつかまたは全てのCIDに対応するコンテキストを含む。
オプション的に、コンテキスト・インスタレーション・メッセージは、CIDセットを除く他のCIDおよび他のCIDに対応するコンテキストをさらに含んでもよい。
ステップ307d:コンテキスト・インスタレーション・メッセージ中の各CIDおよびコンテキスト・インスタレーション・メッセージ中の各CIDに対応するコンテキストを、第2の対応に追加する。
ステップ307dは、オプション的であり、ステップ307dは、ステップ307cの後に実行されてもよく、ステップ308の後に実行されてもよい。
従来の技術におけるOpenFlowプロトコルと矛盾しないように、本発明の実施形態は、別の実現解決策をさらに提供し、解決策では、フォワーダは、従来の技術におけるプロセスに従って、従来の技術における既存のActionを処理してもよい。従来の技術における既存のActionに加えて、パケットが属するフローにおいてコンテキスト処理を実行するようフォワーダに命令するために使用されるAction(例えば、Handle_Context)は、本実施形態でさらに新しく定義されてもよい。図4を参照すると、本発明の実施形態の方法は以下の通りである:
ステップ402:OpenFlow Switchは、入力パケットを受信する。
ステップ404:OpenFlow Switchは、パケットに従って、パケットが属するフローを決定する。
ステップ406:OpenFlow Switchは、フローテーブルが、入力パケットが属するフローに対応するアクションを有するか否かを決定し、はいの場合に、対応するアクションを実行し、そうではない場合に、ステップ408を実行する。
ステップ408:入力パケットをバッファにバッファリングし、入力パケットに対応するアクションを取得するようリクエストするために、Packet_InメッセージをOpenFlowコントローラに送信する。
先述のPacket_Inメッセージは、入力パケットのいくつかまたは全てのコンテンツを運ぶ。さらに、Packet_Inメッセージは、入力パケットがバッファリングされるバッファ(例えば、Buffer_ID)、報告の理由(例えば、「フローテーブルが、マッチしたフローテーブルエントリを有しない」理由)およびこれらに類するものに関する情報をさらに運んでもよい。
ステップ410:OpenFlow Controllerは、Packet_Inメッセージ中の情報に従って、入力パケットに対応するアクションおよび入力パケットが属するフローに対応するCIDセットを決定し、フロー規則インスタレーション(例えば、Flow_Mod)メッセージを使用することにより、入力パケットのフローに対応するアクションおよび入力パケットが属するフローに対応するCIDセットをOpenFlow Switchに送信する。入力パケットに対応するアクションは、OpenFlowプロトコルで定義された標準的なアクションであってもよく、パケットが属するフローにおいてコンテキスト処理を実行するようフォワーダに命令するために使用される、新しく追加されたアクション、例えば、Handle_Contextアクションであってもよい。入力パケットに対応するアクションが、OpenFlowプロトコルで定義された標準的なアクションであるときに、Packet_Inメッセージは、CIDセットを含まない、標準的なアクションに対応するパラメータを運ぶことのみを必要とする。入力パケットが属するフローに対応するアクションが、パケットが属するフローにおいてコンテキスト処理を実行するようフォワーダに命令するために使用されるアクションを含むときに、入力パケットが属するフローに対応するCIDセットは、アクションのパラメータとして、フロー規則インスタレーションメッセージで運ばれる必要がある。この解決策を使用することにより、既存のOpenflowアクションおよびコンテキスト処理は、OpenFlowプロトコルの既存のアクションと矛盾しない方法で、共存できる。
例えば、先述のFlow_Modメッセージは、入力パケットが属するフローに対応するFlow match fieldおよび1以上のアクション(例えば、Set−fieildおよびOutput)を含むフローマッチ情報に対応するアクションリストを含んでもよい。入力パケットがいくつかのコンテキストに従って処理される必要がある場合に、フロー・マッチ・フィールドに対応するアクションは、Handle_Contextアクションをさらに含んでもよく、Handle_Contextアクションのパラメータは、入力パケットが属するフローに対応するCIDセットである。これらの実現フォーマットは以下の通りである:
Flow_Mod:={match field,Instructions(action list)}
入力パケットが属する複数のフローがあるときに、OpenFlow Controllerは、複数のFlow_Modメッセージを使用することにより、フローに対応するFlow entryをOpenFlow Switchに送信してもよく、これにより、OpenFlow Switchは、フローに対応するFlow entryを異なるフローテーブルに保存する。各Flow entryは、先述のHandle_ContextアクションおよびHandle_Contextアクションのパラメータ(例えば、CIDセット)をオプション的に含む。
例えば、入力パケットが2つのフローに対応し、2つのフローに対応するフロー・マッチ・フィールドはFlow match field1およびFlow match field2に別々に対応すると仮定する。OpenFlow Controllerは、Flow match field1およびFlow match field1に対応するアクションリストを、OpenFlow Switchに送信される第1のFlow_Modメッセージに運ばせ、Flow match field2およびFlow match field2に対応するアクションリストを、OpenFlow Switchに送信される第2のFlow_Modメッセージに運ばせる。OpenFlowで定義されたこれらのアクションタイプおよびパラメータに加えて、先述の2つのメッセージのアクションリストは、コンテキスト処理要件に従って、Handle_ContextアクションのタイプおよびHandle_Contextアクションのパラメータ(例えば、CIDセット)をオプション的に含む。
OpenFlow Controllerは、フローテーブル(例えば、フローテーブルのID)に関する情報を、各Flow_Modメッセージにさらに運ばせてもよく、これにより、OpenFlow Switchは、各Flow_Modメッセージで運ばれるフローに関する情報およびフローに対応するCIDセットを、対応するフローテーブルに追加する。例えば、第1のFlow_Modメッセージは、table id=1を含み、第2のFlow_Modメッセージは、table id=2を含む。
さらに、Flow_Modメッセージは、フローテーブル処理シーケンスを示すために使用される情報をさらに運んでもよい。例えば、第1のFlow_Modメッセージは、表示情報のピース(例えば、「Goto−table 2」)を含む。第1のFlow_Modメッセージの受信後、OpenFlow Switchは、表1におけるFlow match field1に従って、対応するアクションリストを見つけ、Flow match field1に対応するアクションに従って、入力パケットを処理する。対応するアクションリストが、Handle_Contextアクションを含む場合に、フォワーダは、Handle_Contextアクションのパラメータに従って、入力パケットが属するフローに対応するCIDセット(例えば、CID list1)を取得し、CID list1に従って、第2の対応においてCID list1に対応するコンテキストを見つけ、その後、CID list1に対応するコンテキストに従って、入力パケットを処理する。先述の表1のフロー規則処理の完了後、対応するアクションリストを見つけるために、表2に従って、入力パケットにおいてマッチングがさらに実行される必要があり、入力パケットはアクションリストに従って処理される。
ステップ412:フロー規則インスタレーションメッセージの受信後、OpenFlow Switchは、入力パケットが属するフローに関する情報および入力パケットのフローに対応するCIDセットを、対応する第1の対応に追加する。
ステップ412は、オプション的であり、ステップ412は、ステップ410の後に実行されてもよく、ステップ414の後に実行されてもよい。
ステップ414:OpenFlow Switchは、Buffer_IDに対応するバッファから、バッファリングされたパケットを取り出し、OpenFlow Switchは、入力パケットが属するフローに対応するアクションに従って、入力パケットを処理する。
入力パケットが属するフローに対応するアクションがHandle_Contextであるときに、入力パケットにおいてフォワーダにより実行される処理は、ステップ406〜ステップ410におけるものと類似しており、これは、本明細書では再度詳細に説明しない。
OpenFlowに基づく先述の実現では、アクションは、Flow_modメッセージのApply−Actions構造に含まれてもよく、Write−Actions構造に含まれてもよい。当業者は、OpenFlowプロトコルを例として使用することによってのみ前述の説明が実行され、フォワーダは、別のプロトコルを使用することにより、コントローラと通信してもよいことを理解できる。
フォワーダは、パケット処理後の様々な処理結果を取得し、フォワーダは、コントローラにいくつかの処理結果を、例えば、合法の傍受により取得された関連情報、NATサービスの実行後に取得された結果およびこれらに類するものを報告する必要がある。フォワーダは、いくつかの結果をさらに処理する必要があるかもしれない。本発明の別の例では、フォワーダが入力パケットを処理した後に取得された処理結果は、新しく生成されたパケットであってもよい。
例えば、入力パケットにおいてフォワーダにより実行される処理は、入力パケットにおいて実行される傍受である。傍受の結果は、通常、特定のネットワークエンティティに転送される必要があり、そのため、フォワーダは、傍受された結果(例えば、入力パケットのコンテンツ)をカプセル化する必要があり、それにより、新しく生成されたパケットを取得する。フォワーダが、新しく生成されたパケットを取得した後、新しく生成されたパケットにおいてフォワーダにより実行される処理は、入力パケットにおいて実行される処理と同じである、すなわち、ステップ302〜ステップ312におけるものと類似した処理が、新しく生成されたパケットにおいて実行される。
従来の技術では、OpenFlowのactionは、現在のパケットにおいてどのタイプの処理が実行されるかを規定しているに過ぎず、フォワーダは、パケットの処理結果を維持せず、そのため、パケットに関する以前の処理結果に基づいて次の処理が実行される必要があるときに、従来の技術におけるActionを実現できない。
先述の例で説明した第1の対応は、フォワーダにおける初期設定を実行するときに、技術者によりフォワーダに記憶されてもよく、フォワーダおよびコントローラが接続を確立した後に、コントローラによりフォワーダに送信されてもよい。例えば、図5を参照すると、入力パケットの受信前に、フォワーダは、コントローラにより送信された、ステップ502に示すフロー規則インスタレーションメッセージを受信してもよく、フロー規則インスタレーションメッセージは、フォワーダによりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダによりサポートされるいくつかまたは全てのフローに対応するCIDセットを含む。
例えば、コントローラは、1以上のフロー規則インスタレーションメッセージを使用することにより、フォワーダによりサポートされるフローに関する情報およびフォワーダによりサポートされるフローに対応するCIDセットを、フォワーダに送信してもよい。
フォワーダは、第1の対応を形成するために、フォワーダによりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダによりサポートされるいくつかまたは全てのフローに対応するCIDセットを、1対1の対応方法で保存する。
先述の例で説明した第2の対応は、フォワーダにおける初期設定を実行するときに、技術者によりフォワーダに記憶されてもよく、フォワーダおよびコントローラが接続を確立した後に、コントローラによりフォワーダに送信されてもよい。例えば、図5を参照すると、入力パケットの受信前に、フォワーダは、コントローラにより送信された、ステップ504に示すコンテキスト・インスタレーション・メッセージを受信してもよく、コンテキスト・インスタレーション・メッセージは、フォワーダによりサポートされるいくつかまたは全てのCIDならびにフォワーダによりサポートされるいくつかまたは全てのCIDに対応するコンテキストを含む。
コントローラが、複数のコンテキストをフォワーダに送信する必要があるときに、コントローラは、コンテキスト・インスタレーション・メッセージを使用することにより、複数のコンテキストをフォワーダに送信してもよく、複数のコンテキスト・インスタレーション・メッセージを使用することにより、複数のコンテキストをフォワーダに送信してもよい。各コンテキスト・インスタレーション・メッセージは、1以上のCIDおよび1以上のCIDに対応するコンテキストを含んでもよい。
フォワーダは、第2の対応を形成するために、フォワーダによりサポートされるいくつかまたは全てのCIDならびにフォワーダによりサポートされるいくつかまたは全てのCIDに対応するコンテキストを、1対1の対応方法で保存する。
別の例では、フォワーダがコントローラと通信する前に、フォワーダは、フローおよびコンテキストを処理するためのピアの能力を知るために、最初に、コントローラと交渉してもよい。例えば、図6aは、フォワーダが最初に交渉を開始する場合を示し、具体的には以下のステップを含む:
ステップa602:フォワーダは、コントローラに能力交渉リクエストメッセージを送信し、能力交渉リクエストメッセージは、フォワーダによりサポートされるコンテキスト能力リストを含み、これにより、コントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信する。
オプション的に、先述のコントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダにアクティブに送信してもよく、フォワーダにより送信されるフロー規則リクエストメッセージおよびコンテキスト・リクエスト・メッセージの受信後に、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信してもよい。
ステップa604:フォワーダは、コントローラにより送信された交渉リスポンスメッセージを受信し、交渉リスポンスメッセージは、コントローラによりサポートされるコンテキスト能力リストを含んでもよく、これにより、フォワーダは、コントローラによりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラからのいくつかまたは全てのコンテキストをリクエストする。
フォワーダおよびコントローラの前の先述の交渉は、コントローラによりアクティブに開始されてもよい。例えば、図6bを参照すると、交渉は具体的には以下のステップを含む:
ステップb602:フォワーダは、コントローラにより送信された能力交渉リクエストメッセージを受信し、能力交渉リクエストメッセージは、コントローラによりサポートされるコンテキスト能力リストを含み、これにより、フォワーダは、コントローラによりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラからのいくつかまたは全てのコンテキストをリクエストする。
オプション的に、先述のコントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダにアクティブに送信してもよく、フォワーダにより送信されるフロー規則リクエストメッセージおよびコンテキスト・リクエスト・メッセージの受信後に、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信してもよい。
ステップb604:フォワーダは、コントローラに交渉リスポンスメッセージを送信し、交渉リスポンスメッセージは、フォワーダによりサポートされるコンテキスト能力リストを含んでもよく、これにより、コントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信する。
コントローラは、フォワーダに記憶された第1の対応または第2の対応を管理してもよい。例えば、図7を参照すると、コントローラは、第1の対応あるいは第2の対応中の、クエリ、変更または削除情報を管理してもよい。いくつかの例を使用することにより、以下で説明が行われ、これらの例はいずれも相対的に独立したものであり、互いに影響しないことに留意すべきである。
例1:コントローラが、フローに対応するCIDセットをクエリする必要がある場合に、コントローラは、ステップ702に示すフロー規則クエリ・リクエスト・メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたフロー規則クエリ・リクエスト・メッセージを受信するステップであって、クエリ・リクエスト・メッセージは、クエリされることになるフローに関する情報を含む、受信するステップと、第1の対応に従って、クエリされることになるフローに対応するCIDセットを見つけるステップと、ステップ704で示すフロー規則クエリ・リスポンス・メッセージをコントローラに送信するステップであって、フロー規則クエリ・リスポンス・メッセージは、クエリされることになるフローに関する情報およびクエリされることになるフローに対応するCIDセットを含む、送信するステップ。
例2:コントローラが、1または複数のCIDに対応するコンテキストをクエリする必要がある場合に、コントローラは、ステップ802に示すコンテキスト・クエリ・リクエスト・メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたコンテキスト・クエリ・リクエスト・メッセージを受信するステップであって、クエリ・リクエスト・メッセージは、クエリされることになるCIDを含み、1以上のクエリされることになるCIDがあることがある、受信するステップと、
第2の対応に従って、クエリされることになるCIDに対応するコンテキストを見つけるステップと、ステップ804に示すコンテキスト・クエリ・リスポンス・メッセージをコントローラに送信するステップであって、クエリ・リスポンス・メッセージは、クエリされることになるCIDに対応するコンテキストを含む、送信するステップ。
オプション的に、先述のクエリ・リスポンス・メッセージは、クエリされることになるCIDをさらに含んでもよい。
例3:コントローラが、フローに対応するCIDセットを変更する必要がある場合に、コントローラは、ステップ902に示すフロー変更メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたフロー規則変更メッセージを受信するステップであって、フロー規則変更メッセージは、変更されることになるフローに関する情報および変更されることになるフローに対応する新しいCIDセットを含む、受信するステップと、
フロー規則変更メッセージの受信後に、第1の対応において、変更されることになるフローに対応するCIDセットを、新しいCIDセットに変更するステップ。
例えば、フォワーダは、コントローラにより送信されたフロー規則変更メッセージを受信し、フロー規則変更メッセージに含まれる、変更されることになるフローに関する情報は、以下の通りである:送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに関して、変更されることになるフローに対応する新しいCIDセットは、CID1、CID2およびCID5である。
第1の対応において、当初、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットは、CID1、CID2およびCID3であり、先述のフロー変更メッセージを受信後、フォワーダは、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットを、CID1、CID2およびCID5に変更する。
例4:コントローラは、1または複数のCIDに対応するコンテキストを変更する必要がある場合に、コントローラは、ステップ1002に示すコンテキスト変更メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたコンテキスト変更メッセージを受信するステップであって、コンテキスト変更メッセージは、変更されることになるCIDおよび変更されることになるコンテキスト識別子に対応する新しいコンテキストを含む、受信するステップと、
コンテキスト変更メッセージの受信後に、第2の対応において、変更されることになるCIDに対応するコンテキストを、新しいコンテキストに変更するステップ。
例えば、当初CID1に対応するコンテキストはContext1aであり、フォワーダにより受信されたコンテキスト変更メッセージがCID1およびCID1に対応する新しいコンテキストであるContext1bを含む場合に、フォワーダは、第2の対応において、CID1に対応するコンテキストを、Context1bに変更する。
例5:コントローラが、フローに関する情報を削除する必要がある場合に、コントローラは、ステップ1102に示すフロー削除メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたフロー削除メッセージを受信するステップであって、フロー削除メッセージは、削除対象のフローに関する情報を含む、受信するステップと、
削除対象のフローに関する情報および削除対象のフローに対応するCIDセットを第1の対応から削除するステップ。
オプション的に、削除されたフローに対応するいくつかまたは全てのCIDが他のフローに対応しない場合に、フォワーダは、削除されたフローに対応するいくつかまたは全てのCIDならびに削除されたフローに対応するいくつかまたは全てのCIDに対応するコンテキストを第2の対応からさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。フォワーダは、フロー1に関する情報を第1の対応から削除した後、CID2がフロー1にのみ対応することがフォワーダにより判明した場合に、フォワーダは、CID2に対応するコンテキストを第2の対応からさらに削除してもよい。しかし、CID1はフロー1に対応するだけでなく、フロー2にも対応するため、フォワーダは、CID1に対応するコンテキストを削除しない。
フロー2に関する情報も削除された後、CID1が他のフローに対応しないことがフォワーダにより判明した場合に、フォワーダは、CID1に対応するコンテキストを第2の対応から削除する。
オプション的に、フォワーダは、削除されたフローに関する情報あるいは削除されたコンテキストに対応するCIDをコントローラに報告してもよい。
例6:コントローラがコンテキストを削除する必要がある場合に、コントローラは、ステップ1202に示すコンテキスト削除メッセージをフォワーダに送信し、フォワーダは、コントローラにより送信されたコンテキスト削除メッセージを受信し、コンテキスト削除メッセージは、少なくとも1つの削除対象のコンテキスト識別子を含む。フォワーダは、少なくとも1つの削除対象のCIDおよび少なくとも1つの削除対象のCIDに対応するコンテキストを第2の対応から削除する。
オプション的に、第2の対応中のコンテキストの削除後、フォワーダは、それに応じて第1の対応をさらに変更してもよく、例えば、コントローラは、以下のステップをさらに実行してもよい:
削除されたコンテキストに対応するCIDを第1の対応から削除するステップ。
フォワーダが、コンテキストのCIDに対応するフローを処理するときに、コンテキストの削除により、問題の発生が引き起こされることがあり、そのため、第1の対応中の削除されたコンテキストに対応するCIDの削除後、フォワーダは、第1の対応中の削除されたCIDに対応するフローに関する情報をさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。フォワーダが、第2の対応から、コンテキストに対応するCID1を削除した後、CID1に対応するフローがフロー1およびフロー2を含むことがフォワーダにより判明した場合に、フォワーダは、第1の対応中のフロー1に関する情報およびフロー2に関する情報をさらに削除する。さらに、フォワーダは、フロー1およびフロー2に別々に対応するCIDセットをさらに削除してもよい。
オプション的に、フォワーダは、削除されたコンテキストに対応するCIDおよび削除されたフローに関する情報をコントローラにさらに報告してもよい。
本発明で提供した先述の例を使用することにより、コントローラは、フォワーダに保存された第1の対応および第2の対応を効率的に管理してもよい。
前述の任意の方法の実施形態は、図2に示すフォワーダ中のいくつかまたは全てのコンポーネントにより実現されてもよい。
先述の実施形態の説明全体を通して、当業者は、ハードウェアのみを使用することにより、または、ソフトウェアおよび必要なユニバーサル・ハードウェア・プラットフォームを使用することにより、本発明が実現されてもよいことを理解できる。このような理解に基づき、本発明の技術的解決策は、コンピュータプログラム製品の形で具現化されてもよい。コンピュータプログラム製品は、(コンパクト・ディスク・リード・オンリー・メモリ、USBフラッシュドライブ、または、リムーバブルハードディスクとすることができる)不揮発性記憶媒体に記憶されてもよい。ソフトウェア製品は、(パーソナルコンピュータ、受信エンドまたはネットワークデバイスとすることができる)コンピュータデバイスが、本発明の実施形態で提供される方法を実行できる多数の命令を含む。
本発明の方法を実現するための追跡セッション同期方法および追跡セッション同期装置を前述で詳細に紹介した。当業者は、本発明の概念に基づき、特定の実現方法および適用の範囲に関して変更を行ってもよい。そのため、本明細書の内容は、本発明に対する限定として解釈されない。
本発明は、通信技術の分野に関し、特に、パケットを処理するための方法およびフォワーダに関する。
ソフトウェア・デファインド・ネットワーク(SDNと略す)は、従来のクローズドネットワークをオープンな環境に変換することを意図しており、コンピュータと同様に、プログラミングも実現できる。OpenFlow技術は、SDNを実現する方法である。OpenFlow技術は、Stanford大学により最も早く提案され、現在のネットワークが、既存の送信制御プロトコル(TCPと略す)/インターネットプロトコル(IPと略す)の技術条件に基づく、革新的なネットワーク相互接続の概念による新サービスに直面したときに生じる、様々なボトルネックを解決することを目的としている。OpenFlowは、単一のネットワークエレメントにより元来および完全に実現される処理プロセスを転送するパケットを、OpenFlowフォワーダおよびコントローラが共同して完了するプロセスに変換し、それにより、サービス制御からのデータ転送の分離を実現する。コントローラは、標準規格のインターフェース、すなわち、OpenFlowプロトコルを使用することにより、OpenFlowフォワーダにおいてフローテーブルを制御し、それにより、ネットワーク全体にわたる集中制御を実現する。
OpenFlowフォワーダにおける最重要コンポーネントのうちの1つは、フローテーブルであり、フローテーブルは、大量のフローテーブルエントリにより形成され、各フローテーブルエントリがパケット制御規則である。パケットの受信後、フォワーダは、フローテーブルエントリにクエリすることにより、実行される必要のあるアクションを取得してもよい。フォワーダは、複数のフローテーブルを含んでもよく、コントローラは、フォワーダの1以上のフローテーブルに対するサービスフローに特有のフローテーブルエントリを伝える。
各OpenFlowフローテーブルエントリは、フロー情報(フロー・マッチ・フィール
ド、カウンタおよびアクション(Action))により形成される。詳細として、以下の通り表1に示すものを参照する:
表1中のフロー・マッチ・フィールドは、複数のフィールドにより形成されるマッチ情報であり、フローテーブルエントリの識別子であり、フローを定義するのに使用されてもよい。表2は、フロー・マッチ・フィールドの例を示し、フロー・マッチ・フィールドは10個のフィールドにより形成される。
表1中のカウンタは、トラフィック関連データをカウントするのに使用され、カウンタは、各フローテーブル、各フローまたは各ポートに従った個別設定を実行してもよい。
表1中のアクションは、フローテーブルエントリとマッチする、パケット上で実行されるべきアクションのタイプ、例えば、転送またはドロップのような、アクションタイプを示す。現在のOpenflowプロトコルで定義されたアクションタイプは以下を含む:
Output:特定のポートからのパケットを転送
Set−Queue:特定の転送キューを使用することによりパケットを転送
Drop:パケットをドロップ
Group:処理を実行するために複数のフローをアクションにグルーピング
Push−Tag/Pop−Tag:カプセル化またはカプセル除去
Set−Field:パケットヘッダを変更、および、
Change−TTL:TTLフィールドを変更
現在のフローテーブルのアクションモードは、2つのタイプを含む:アクティブモードおよびパッシブモード。アクティブモードでは、コントローラは、コントローラにより収集されたフローテーブル情報をフォワーダにアクティブに伝え、その後、フォワーダは、フローテーブルに従った転送を直接実行してもよい。パッシブモードは、パケット受信後にマッチングフローテーブルを何ら見つけていないときに、フォワーダはコントローラにパケットを転送し、コントローラは、処理の実行方法を決定し、対応するフローテーブルエントリをフォワーダに伝えることを指す。
従来の技術のフローテーブルでは、フローおよびアクションは直接関係付けられ、いくつかのフローに対応するアクションが同じであるときに、対応するアクションは、各フローに対するフローテーブルエントリに保存される必要があり、そのため、フォワーダに記憶された情報に大量の冗長が発生し、維持も非常に難しい。例えば、アクションが変更されたときに、関連フローテーブルエントリが全て変更される必要がある。
本発明の実施形態は、SDNにおいてパケットを処理するための方法およびフォワーダを提供し、方法は、フォワーダに記憶される冗長情報を減少させ、パケットを処理するためのフォワーダの能力を改善するのに使用される。
第1の態様に従って、フォワーダにより実行される、SDNにおいてパケットを処理するための方法が提供され、具体的に、
入力パケットを受信するステップと、
入力パケットに従って、入力パケットが属するフローを決定するステップと、
フローとコンテキスト識別子セットとの間の第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップであって、第1の対応における各フローに対応するコンテキスト識別子セットは少なくとも1つのコンテキスト識別子を含む、決定するステップと、
コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップと、
コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するステップと
を含む。
第1の態様を参照し、第1の態様の第1の可能性ある実現方法では、方法はさらに、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップの前に、第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するステップを含み、
はいの場合に、
第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップを実行するステップを含み、あるいは、
そうではない場合に、
フロー規則リクエストメッセージをコントローラに送信するステップであって、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含む、送信するステップと、
コントローラにより送信されたフロー規則インスタレーションメッセージを受信するステップであって、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む、受信するステップと、
入力パケットが属するフローに関する情報および入力パケットのフローに対応するコンテキスト識別子セットを、第1の対応に追加するステップとを実行するステップを含む。
第1の態様または第1の態様の第1の可能性ある実現方法を参照し、第1の態様の第2の可能性ある実現方法では、方法はさらに、コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップの前に、第2の対応がコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するステップを含み、
はいの場合に、
第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップを実行するステップを含み、あるいは、
コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、
コンテキスト・リクエスト・メッセージをコントローラに送信するステップであって、コンテキスト・リクエスト・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含む、送信するステップと、
コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するステップであって、コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む、受信するステップと、
コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するステップとを実行するステップを含む。
第2の態様に従って、受信機、プロセッサおよびメモリを具備する、SDNにおいて使用されるフォワーダが提供され、
メモリは、フローとコンテキスト識別子セットとの間の第1の対応およびコンテキスト識別子とコンテキストとの間の第2の対応を記憶するように構成され、第1の対応における各フローに対応するコンテキスト識別子セットは、少なくとも1つのコンテキスト識別子を含み、
受信機は、入力パケットを受信するように構成され、
プロセッサは、入力パケットに従って、入力パケットが属するフローを決定し、メモリに記憶された第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定し、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するように構成されている。
第2の態様を参照し、第2の態様の第1の可能性ある実現方法では、フォワーダはさらに送信機を備え、
プロセッサはさらに、メモリに記憶された第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットが決定される前に、第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するように構成され、はいの場合に、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定し、または、そうではない場合に、フロー規則リクエストメッセージをコントローラに送信するよう送信機に通知するように構成され、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含み、
受信機は、コントローラにより送信されたフロー規則インスタレーションメッセージを受信するように構成され、
プロセッサは、入力パケットが属するフローに関する情報および入力パケットのフローに対応するコンテキスト識別子セットを、第1の対応に追加するようにさらに構成され、
フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む。
第2の態様または第2の態様の第1の可能性ある実現方法を参照し、第2の態様の第2の可能性ある実現方法では、プロセッサはさらに、メモリに記憶された第2の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストが決定される前に、第2の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するように構成され、はいの場合に、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、またはコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、送信機に通知するように構成され、
送信機は、コンテキスト・リクエスト・メッセージをコントローラに送信するようにさらに構成され、
受信機は、コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するようにさらに構成され、
プロセッサは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するようにさらに構成され、
コンテキスト・リクエスト・メッセージは、入力パケットが属するフローに対応するコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含み、
コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む。
第3の態様に従って、フォワーダにより実行される、SDNにおいてパケットを処理するための別の方法は、具体的に、
入力パケットを受信するステップと、
入力パケットに従って、入力パケットが属するフローを決定するステップと、
フローとコンテキスト識別子セットとの間の第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するステップと、はいの場合に、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップ、あるいは、そうではない場合に、フロー規則リクエストメッセージをコントローラに送信するステップであって、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含む、送信するステップと、コントローラにより送信されたフロー規則インスタレーションメッセージを受信するステップであって、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む、受信するステップと、
コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップと、
コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するステップとを含む。
第3の態様を参照し、第3の態様の第1の可能性ある実現方法では、方法はさらに、
コンテキスト識別子とコンテキストとの間の第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップの前に、第2の対応がコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するステップを含み、
はいの場合に、
第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定するステップを実行するステップを含み、あるいは、
コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、
コンテキスト・リクエスト・メッセージをコントローラに送信するステップであって、コンテキスト・リクエスト・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含む、送信するステップと、
コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するステップであって、コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む、受信するステップと、
コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するステップとを実行するステップを含む。
第4の態様に従って、インターフェース、プロセッサおよびメモリを具備する、別のフォワーダが提供され、
メモリは、フローとコンテキスト識別子セットとの間の第1の対応およびコンテキスト識別子とコンテキストとの間の第2の対応を記憶するように構成され、第1の対応における各フローに対応するコンテキスト識別子セットは、少なくとも1つのコンテキスト識別子を含み、
インターフェースは、入力パケットを受信するように構成され、
プロセッサは、メモリに記憶された第1の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットを有するか否かを決定するように構成され、はいの場合に、第1の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットを決定し、または、そうではない場合に、インターフェースに通知するように構成され、
インターフェースは、プロセッサの通知を受信した後に、フロー規則リクエストメッセージをコントローラに送信するように構成され、
インターフェースは、コントローラにより送信されたフロー規則インスタレーションメッセージを受信するように構成され、
プロセッサは、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、コンテキスト識別子セットに対応するコンテキストに従って、入力パケットを処理するようにさらに構成され、
フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含み、
フロー規則インスタレーションメッセージは、入力パケットのフローに対応するコンテキスト識別子セットを含む。
第4の態様を参照し、第4の態様の第1の可能性ある実現方法では、プロセッサはさらに、メモリに記憶された第2の対応に従って、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストが決定される前に、第2の対応が、入力パケットが属するフローに対応するコンテキスト識別子セットに対応するコンテキストを有するか否かを決定するように構成され、はいの場合に、メモリに記憶された第2の対応に従って、コンテキスト識別子セットに対応するコンテキストを決定し、または、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子が対応するコンテキストを有しない場合に、送信機に通知するように構成され、
送信機は、プロセッサの通知の受信後に、コンテキスト・リクエスト・メッセージをコントローラに送信するようにさらに構成され、
受信機は、コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信するようにさらに構成され、
プロセッサは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを、第2の対応に追加するようにさらに構成され、
コンテキスト・リクエスト・メッセージは、入力パケットが属するフローに対応するコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子を含み、
コンテキスト・インスタレーション・メッセージは、コンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子ならびにコンテキスト識別子セットにおけるいくつかまたは全てのコンテキスト識別子に対応するコンテキストを含む。
本発明の実施形態では、フローは、コンテキスト識別子セットに対応し、フローは、コンテキストに直接関係付けられず、複数のフローがコンテキストを共有するときでさえ、このコンテキストは、複数回保存される必要はなく、従来の技術のものと同じハードウェア条件下で、フォワーダの記憶能力および処理能力は、本発明の実施形態で大きく改善される。
本発明の実施形態における技術的解決策をさらに明確に説明するために、以下で、先行技術の実施形態を説明するのに必要な添付図面を簡単に紹介する。明白なことに、以下の説明中の添付図面は、本発明のいくつかの実施形態を示すに過ぎず、さらに、当業者は、創造的な努力をすることなく、これらの添付図面から他の図面を導き出すことができる。
本発明の実施形態に従った、SDNの概略的なアーキテクチャ図である。
本発明の実施形態に従った、フォワーダの概略的な構成図である。
本発明の実施形態に従った、フォワーダによりパケットを処理するための方法の概略的なフローチャートである。
本発明の実施形態に従った、OpenFlowフォワーダにより入力パケットを処理するための方法の概略的なフローチャートである。
本発明の実施形態に従った、フォワーダによりフローまたはコンテキストをインストールするための方法の概略的なフローチャートである。
本発明の実施形態に従った、フォワーダとコントローラとの間の交渉を実行するための方法の概略的なフローチャートである。
本発明の実施形態に従った、フォワーダとコントローラとの間の交渉を実行するための別の方法の概略的なフローチャートである。
本発明の実施形態に従った、フロー、フローに対応するCIDセットまたはCIDに対応するコンテキストに関する情報をコントローラによりクエリ、変更または削除するための方法の概略的なフローチャートである。
以下では、本発明の実施形態における添付図面を参照して、本発明の実施形態における技術的解決策を明確かつ完全に説明する。明白なことに、説明する実施形態は、本発明の実施形態のいくつかではあるが、全てではない。創造的な努力をすることなく、本発明の実施形態に基づいて当業者により得られる他の全ての実施形態は、本発明の保護範囲内にある。
図1は、SDNの概略的なアーキテクチャ図であり、SDNは、フォワーダ14およびコントローラ12を少なくとも含む。フォワーダ14は、データレイヤを転送する責任があり、コントローラ12は、ネットワークにわたる集中制御を実行し、制御レイヤの機能を実現する責任がある。フォワーダ14は、制御プロトコルを使用することにより、コントローラ12と通信する。1つのフォワーダは、1以上の他のフォワーダに接続されてもよく、パケットを送信/受信するための1以上のエンティティ(例えば、固定端末、移動体端末およびパーソナルコンピュータ)にも接続されてもよい。
図2は、フォワーダの概略的な構成図であり、フォワーダ14はインターフェース1402、プロセッサ1404およびメモリ1406を具備する。フォワーダ14は、インターフェース1402を使用することにより、コントローラ12または他のネットワークエンティティと通信する。インターフェース1402は、コントローラ12または他のネットワークエンティティから、メッセージ、情報、パケットまたはデータを受信するように構成され、あるいは、コントローラ12または他のネットワークエンティティに、メッセージ、情報、パケットまたはデータを送信するように構成される。プロセッサ1404は、インターフェース1402により受信されたメッセージ、情報、パケットまたはデータに関していくつかの対応する処理を実行してもよい。メモリ1406は、フローおよびコンテキストに関する情報を記憶するように構成されてもよい。さらに、メモリ1406は、他の情報を記憶するようにさらに構成されてもよく、例えば、受信機14022により受信されたメッセージ、情報、パケットまたはデータを記憶するように、あるいは、プロセッサ1404の処理結果を記憶するように構成されてもよい。メモリ1406に記憶された、フローおよびコンテキストに関する情報はまた、フローとコンテキスト識別子(Context Identifier、CIDと略す)セットとの間の第1の対応およびCIDとコンテキストとの間の第2の対応を含む。
説明を簡略化するために、フローとCIDセットとの間の第1の対応は、以下においてフローテーブルと呼ばれ、このネーム:「フローテーブル」は、第1の対応の記憶の形を制限するように使用されない。その理由は、メモリ1406が第1の対応を記憶するときに、テーブルの形で使用されてもよく、他の形、例えば、記憶ユニットが1以上の他の記憶ユニットにマッピングされる形もまた使用されてもよい。
メモリ1406は、1以上のフローテーブルを記憶してもよい。表3は、本発明の実施形態における、フローテーブルの概略的な構造図である。表3に示すフローテーブルは、表1に示す従来の技術のフローテーブルとは異なる。従来の技術のフローテーブルの各フローが、Actionと直接関係付けられる一方、本発明の本実施形態のフローテーブルにおける各フローは、CIDに関係付けられ、コンテキストに直接関係付けられない。
表3に示すように、フローテーブルにおける各フローに関する情報(例えば、フロー・マッチ・フィールド)とCIDセットとの間の対応はフローテーブルエントリと呼ばれてもよい。フロー・マッチ・フィールドは、フローを識別するために使用され、フロー・マッチ・フィールドは、パケットが属するフローを識別するために必要とされる情報を含み、これらの構造は、表2に示す異なるタプルの任意の組み合わせを含んでもよく、マルチプロトコル・ラベル・スイッチング(Multiprotocol Label Switching、MPLSと略す)識別子、区別されたサービスコードポイント(differentiated services code point、DSCPと略す)コード、転送レイヤプロトコルタイプ、汎用ルーティングカプセル化識別子(Generic Routing Encapsulation Identifier、GRE IDと略す)、GPRSトネリングプロトコルのトンネルエンドポイント識別子(tunnel endpoint identifier of GPRS tunneling protocol、GTP TEIDと略す)およびこれらに類するもののような、他のコンテンツも含んでもよく、あるいは、パケットオフセット値、マッチ長およびこれらに類するものを使用することにより、形成されてもよい。
表3の各フローは、CIDセットに対応し、各CIDセットは、少なくとも1つのCIDを含む。CIDは、コンテキストを一意的に識別するために使用され、例えば、任意の伝搬システムのキャラクタ、数字、文字、数字および文字ならびに数字および他のキャラクタであってもよい、多くの表現形を有することがある。さらに、CIDは、コンテキストのタイプを示すために使用されてもよい。
先述のフローテーブルに加えて、メモリ1406は、CIDとコンテキストとの間の第2の対応をさらに保存する。説明の簡略化のために、CIDとコンテキストとの間の第2の対応は、以下においてコンテキストリストと呼ばれ、同様に、このネームは、第2の対応の記憶の形を制限するように使用されない。その理由は、メモリ1406が第2の対応を記憶するときに、テーブルの形で使用されてもよく、他の形、例えば、記憶ユニットが1以上の他の記憶ユニットにマッピングされる形もまた使用されてもよい。
表4は、本発明の実施形態における、コンテキストリストの概略的な構造図である。表4における各CIDは、コンテキストに対応する。コンテキストは、パケットを処理するために必要とされる情報を含む。
パケットを処理するために必要とされる情報に加えて、従来の技術のActionは、パケットのタイプ(Action Type)をさらに含む一方、本発明の実施形態では、フォワーダは、CIDを使用することにより、対応するコンテキストのタイプを既に知っていることがあり、そのため、コンテキストは、Action Typeに類似するこのような情報をこれ以上含まない。多くのコンテキストタイプがあり、本発明の実現では、従来の技術のactionタイプ(例えば、パケット転送およびパケットドロップ)を含むのに加え、CIDにより示されるコンテキストタイプは、他のタイプをさらに含んでもよく、これにより、フォワーダは、多様な方法で入力パケットを処理してもよい。例えば、コンテキストタイプは、帯域幅制御、ディープ・パケット・インスペクション(Deep Packet Inspection、DPI)、オンライン課金、オフライン課金、ファイアウォール処理、ネットワークアドレス変換(Network Address Translation、NAT)、合法の傍受(lawful interception)、パケット再構築、リンク検出(例えば、双方向転送検出プロトコル(Bidirectional Forwarding Detection Protocol、BFDP)、リンクレイヤディスカバリプロトコル(Link Layer Discovery Protocol、LLDP)またはこれらに類するもの)、あるいは、これらに類するものをさらに含んでもよい。異なるコンテキストタイプはまた、異なるコンテキストに対応し、例えば、帯域幅制御タイプのコンテキストは、最大許容帯域幅、保証帯域幅、転送の優先度およびこれらに類するものを含んでもよく、オフライン課金タイプのコンテキストは、オフライン課金グループのグループ識別子、課金情報の報告インターバル、および、これらに類するものを含んでもよく、一方で、ルーティングおよび転送タイプのコンテキストは、転送ポート番号、送信元MACアドレスまたは宛先MACアドレスおよびこれらに類するものを含んでもよい。
異なるフローが、同じコンテキストに従って処理される必要がある場合に、コンテキストに対応するCIDのみがフローテーブルに繰り返し保存され、コンテキストは、繰り返し保存される必要はない。例えば、フォワーダは、フローテーブルにおける各フローに対応するCIDセットに、コンテキストに対応するCIDを保存することのみを必要とし、コンテキストは、CIDとコンテキストとの間の対応において、一度だけ保存されることのみを必要とする。このように、フォワーダに対して、さらに多くの記憶スペースが節約されてもよく、節約された記憶スペースにより、フォワーダがより多くのコンテキストを記憶できるようにもなり、そのため、従来の技術のものと同じ条件下では、本発明の本実施形態におけるフォワーダは、より多くのコンテキストを記憶してもよく、パケット処理のためにより多くのコンテキストタイプをサポートしてもよい。
さらに、本発明の本実施形態では、パケット上で実行されるコンテキスト処理は、既存のActionより複雑な処理論理を実現するのに使用されてもよい。従来の技術では、OpenFlowフォワーダがactionを実行するときに、現在のパケットのみが処理され、フォワーダは、処理されたパケットにおいて状態維持を実行せず、そのため、actionのみを使用して、単一のパケットにおけるステートレスハンドリング(stateless handling)を実行できるが、フローの以前のパケット処理結果に従って、後続するパケットにおけるステートフルハンドリングを実行できない。しかし、以前のパケット処理結果は、パケット並び替え、DPIおよびウイルス検出のような、いくつかの複雑な処理動作に必要とされる。そのため、現在のaction設計における制限を考慮すると、従来の技術におけるOpenFlowフォワーダは、パケットにおける比較的単純なアクションの実行にのみ適用可能であるが、複雑なアクションを実現できない。本発明の本実施形態におけるフォワーダは、コンテキスト処理ユニットを使用することにより、パケット処理後の状態を保存してもよく、それにより、パケットにおけるさらに複雑な処理を実行してもよい。
理解を容易にするために、特定の例を使用することにより、本発明で提供されるフォワーダについて以下に詳細に述べる。
例えば、図2を参照すると、フォワーダ14のインターフェース1402は、入力パケットを受信するように構成された受信機14022を含んでもよい。入力パケットは、別のフォワーダにより送信されてもよく、別のエンティティ(例えば、コンピュータ、移動体端末または固定端末)により送信されてもよい。
プロセッサ1404は、入力パケットが属するフローを決定するように、例えば入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローを決定するように、構成されている。
プロセッサ1404は、メモリ1406に記憶された第1の対応に従って、入力パケットが属するフローに対応するCIDセットを決定するように、および、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定するように、および、CIDセットに対応するコンテキストに従って、入力パケットを処理するように、さらに構成されている。
入力パケットの処理後、プロセッサ1404は、コンテキスト処理結果を取得する。別の例では、図2を参照すると、フォワーダ14のインターフェース1402は、送信機14024をさらに含んでもよい。送信機14024は、プロセッサ1404が入力パケットを処理した後に取得されたコンテキスト処理結果をコントローラ12に送信するように構成されている。
送信機14024により送信されたコンテキスト処理結果を受信後、コントローラ12は、入力パケットを処理し続ける必要があるか否かを、コンテキスト処理結果に従って決定してもよく、はいの場合に、入力パケットに関して決定される、新しく決定されたフローおよび新しく決定されたCIDセットをフォワーダ14に送信する。フォワーダ14中の受信機14022は、新しく決定されたコンテキスト識別子セットに対応するコンテキストに従って入力パケットをさらに処理するようプロセッサ1404に命令するために、コントローラ12により入力パケットに関して決定される、新しく決定されたフローおよび新しく決定されたコンテキスト識別子セットを受信するようにさらに構成されてもよい。
通常の場合では、入力パケットの受信前に、メモリ1406は既に大半のフローに対応するCIDセットを保存する。しかし、入力パケットのフローに対応するCIDセットを、メモリ1406に記憶された第1の対応中で見つけられない場合も時折起こり、この場合には、フォワーダ14は、入力パケットのフローに対応するCIDセットをコントローラ12から取得してもよい。本発明の別の例では、プロセッサ1404が、入力パケットが属するフローを決定した後に、プロセッサ1404は、入力パケットが属するフローに対応するCIDセットを第1の対応が有するか否かを決定するようにさらに構成されていてもよく、はいの場合に、プロセッサ1404は、第1の対応に従って、入力パケットが属するフローに対応するCIDセットを決定し、いいえの場合、プロセッサ1404は、コントローラ12にフロー規則リクエストメッセージを送信するように送信機14024に通知し、フロー規則リクエストメッセージは、入力パケットのパケットヘッダまたはコンテンツを含む。
受信機14022は、コントローラ12により送信されたフロー規則インスタレーションメッセージを受信するようにさらに構成され、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するCIDセットを含む。その後、プロセッサ1404は、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定してもよく、CIDセットに対応するコンテキストに従って、入力パケットを処理してもよい。
オプション的に、プロセッサ1404は、入力パケットが属するフローに関する情報および入力パケットのフローに対応するCIDセットを第1の対応にさらに追加してもよい。
従来の技術では、フォワーダが、コントローラからの入力パケットのフローに対応するActionをリクエストしたときはいつでも、コントローラは、フロー規則インスタレーションメッセージにActionを運ばせ、フロー規則インスタレーションメッセージをフォワーダに送信する。Actionは、多くの処理パラメータを含み、そのため、様々なActionを送信するための要件を満たすために、フロー規則インスタレーションメッセージは、比較的長く設計される必要があるが、フロー規則インスタレーションメッセージが過剰に長く設計された場合に、送信時間は延長され、パケット処理効率に影響を及ぼす。この問題は、単に、本発明で提供される例を使用することにより解決されるかもしれない。コントローラが、フォワーダからフロー規則リクエストメッセージを受信するときに、コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットのフローに対応するCIDセットをフォワーダに送信することのみを必要とし、フォワーダが既にCIDセットに対応するコンテキストを記憶している場合に、フォワーダは、CIDセットにおける各CIDに従って、対応するコンテキストを見つけることのみを必要とする。CIDセットにより占有されるスペースは非常に小さく、CIDセットを送信するためのフロー規則インスタレーションメッセージは、過剰に長く設計される必要はなく、そのため、フロー規則インスタレーションメッセージを送信するのに使用される時間もまた短くなり、フォワーダがパケットを処理する効率もある程度改善できる。
当然、先述の例で説明した方法に加えて、コントローラ12はさらに、CIDセットに対応するコンテキストおよびCIDセットを共にフォワーダ14に送信してもよい。例えば、コントローラ12により送信されるフロー規則インスタレーションメッセージは、CIDセットに対応するコンテキストをさらに含んでもよい。この場合には、フロー規則インスタレーションメッセージのフォーマットは以下の通りであってもよい:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID1,CID2,CID3>,[CID1,Context1],[CID2,Context2],[CID3,Context3]}
受信機14022がフロー規則インスタレーションメッセージを受信した後に、第2の対応がCIDセット中のいくつかまたは全てのCID、ならびに、いくつかまたは全てのCIDに対応するコンテキストを保存していないことがプロセッサ1404により判明した場合、プロセッサ1404は、いくつかまたは全てのCIDと、いくつかまたは全てのCIDに対応するコンテキストとを第2の対応に追加する。
同様に、通常の場合では、入力パケットの受信前に、大半のCIDおよびCIDに対応するコンテキストは、メモリ1406に記憶された第2の対応に既に記憶されている。しかし、1または複数のCIDに対応するコンテキストを、メモリ1406に記憶された第2の対応中で見つけられない場合も時折起こり、この場合には、フォワーダ14は、1または複数のCIDに対応するコンテキストをコントローラ12から取得および入力してもよい。例えば、別の例では、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定する前に、プロセッサ1404は、入力パケットが属するフローに対応するCIDセットに対応するコンテキストを第2の対応が有するか否かをさらに決定してもよく、はいの場合に、メモリ1406に記憶された第2の対応に従って、CIDセットに対応するコンテキストを決定し、あるいは、CIDセット中のいくつかまたは全てのCIDが対応するコンテキストを有しない場合、コントローラ12にコンテキスト・リクエスト・メッセージを送信するよう送信機14024に通知し、コンテキスト・リクエスト・メッセージは、入力パケットが属するフローに対応するCIDセット中のいくつかまたは全てのCIDを含む。
受信機14022は、コントローラ12により送信されるコンテキスト・インスタレーション・メッセージを受信するようにさらに構成され、コンテキスト・インスタレーション・メッセージは、CIDセット中のいくつかまたは全てのCIDならびにCIDセット中のいくつかまたは全てのCIDに対応するコンテキストを含む。
オプション的に、プロセッサ1404は、CIDセット中のいくつかまたは全てのCIDならびにいくつかまたは全てのCIDに対応するコンテキストを第2の対応に追加するようにさらに構成されていてもよい。
フォワーダは、パケット処理後の様々な処理結果を取得し、フォワーダは、コントローラにいくつかの処理結果を、例えば、合法の傍受により取得された関連情報、NATサービスの実行後に取得された結果およびこれらに類するものを報告する必要がある。フォワーダは、いくつかの結果をさらに処理する必要があるかもしれない。例えば、本発明の別の例では、フォワーダ14中のプロセッサ1408が入力パケットを処理した後に取得された処理結果は、新しく生成されたパケットであってもよい。新しく生成されたパケットにおいてフォワーダ14により実行される処理は、入力パケットにおいて実行される処理と同様であり、これは、本明細書において再度詳細に説明しない。
従来の技術では、OpenFlowのactionは、現在のパケットにおいてどのタイプの処理が実行されるかを規定しているに過ぎず、フォワーダは、パケットの処理結果を維持せず、そのため、パケットに関する以前の処理結果に基づいて次の処理が実行される必要があるときに、従来の技術におけるactionを実現できない。
先述の例で説明した第1の対応は、フォワーダ14における初期設定を実行するときに、技術者によりメモリ1406に記憶されてもよく、フォワーダ14およびコントローラ12が接続を確立した後に、コントローラ12によりフォワーダ14に送信されてもよい。例えば、入力パケットの受信前に、受信機14022は、最初に、コントローラ12により送信されたフロー規則インスタレーションメッセージを受信してもよく、フロー規則インスタレーションメッセージは、フォワーダ14によりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダ14によりサポートされるいくつかまたは全てのフローに対応するCIDセットを含む。受信機14022は、第1の対応を形成するために、フォワーダ14によりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダ14によりサポートされるいくつかまたは全てのフローに対応するCIDセットを、1対1の対応方法で保存するようメモリ1406に通知する。
同様に、先述の例で説明した第2の対応は、フォワーダ14における初期設定を実行するときに、技術者によりメモリ1406に記憶されてもよく、フォワーダ14およびコントローラ12が接続を確立した後に、コントローラ12によりフォワーダ14に送信されてもよい。例えば、入力パケットの受信前に、受信機14022は、最初に、コントローラ12により送信されたコンテキスト・インスタレーション・メッセージを受信してもよく、コンテキスト・インスタレーション・メッセージは、フォワーダ14によりサポートされるいくつかまたは全てのCIDならびにフォワーダ14によりサポートされるいくつかまたは全てのCIDに対応するコンテキストを含む。受信機14022は、第2の対応を形成するために、フォワーダ14によりサポートされるいくつかまたは全てのCIDならびにフォワーダ14によりサポートされるいくつかまたは全てのCIDに対応するコンテキストを、1対1の対応方法で保存するようメモリ1406に通知する。
別の例では、フォワーダ14がコントローラ12と通信する前に、フォワーダ14は、フローおよびコンテキストを処理するためのピアの能力を知るために、最初に、コントローラ12と交渉してもよい。例えば、フォワーダ14中の送信機14024は、コントローラ12に能力交渉リクエストメッセージを送信し、能力交渉リクエストメッセージは、フォワーダによりサポートされるコンテキスト能力リストを含み、これにより、コントローラ12は、フォワーダ14がサポートできるいくつかまたは全てのコンテキストをフォワーダ14に送信する。受信機14022は、コントローラ12により送信された交渉リスポンスメッセージを受信し、交渉リスポンスメッセージは、コントローラ12によりサポートされるコンテキスト能力リストを含んでもよく、これにより、フォワーダ14は、コントローラ12によりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラからのいくつかまたは全てのコンテキストをリクエストする。
フォワーダ14およびコントローラ12の間の先述の交渉は、コントローラ12によりアクティブに開始されてもよい。例えば、フォワーダ14中の受信機14022は、コントローラ12により送信される能力交渉リクエストメッセージを受信し、能力交渉リクエストメッセージは、コントローラ12によりサポートされるコンテキスト能力リストを含み、これにより、フォワーダ14は、コントローラ12によりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラ12からのいくつかまたは全てのコンテキストをリクエストする。フォワーダ14中の送信機14024は、コントローラ12に交渉リスポンスメッセージを送信し、交渉リスポンスメッセージは、フォワーダ14によりサポートされるコンテキスト能力リストを含んでもよく、これにより、コントローラ12は、フォワーダ14がサポートできるいくつかまたは全てのコンテキストをフォワーダ14に送信する。
コントローラ12は、フォワーダ14のメモリ1406に記憶された第1の対応または第2の対応を、例えば、第1の対応あるいは第2の対応中の、クエリ、変更または削除情報を管理してもよい。
例えば、コントローラ12が、フローに対応するCIDセットをクエリする必要がある場合に、コントローラ12は、フロー規則クエリ・リクエスト・メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたフロー規則クエリ・リクエスト・メッセージを受信し、クエリ・リクエスト・メッセージは、クエリされることになるフローに関する情報を含む。プロセッサ1406は、第1の対応に従って、クエリされることになるフローに対応するCIDセットを見つけ、コントローラ12にフロー規則クエリ・リスポンス・メッセージを送信するよう送信機14024に通知し、フロー規則クエリ・リスポンス・メッセージは、クエリされることになるフローに関する情報およびクエリされることになるフローに対応するCIDセットを含む。
別の例に関して、コントローラ12が、1または複数のCIDに対応するコンテキストをクエリする必要がある場合に、コントローラ12は、コンテキスト・クエリ・リクエスト・メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたコンテキスト・クエリ・リクエスト・メッセージを受信し、クエリ・リクエスト・メッセージは、クエリされることになるCIDを含み、1以上のクエリされることになるCIDがあることがある。プロセッサ1404は、第2の対応に従って、クエリされることになるCIDに対応するコンテキストを見つけ、コントローラにコンテキスト・クエリ・リスポンス・メッセージを送信するよう送信機14024に通知し、クエリ・リスポンス・メッセージは、クエリされることになるCIDに対応するコンテキストを含む。オプション的に、先述のクエリ・リスポンス・メッセージは、クエリされることになるCIDをさらに含んでもよい。
別の例に関して、コントローラ12が、フローに対応するCIDセットを変更する必要がある場合に、コントローラ12は、フォワーダ14にフロー変更メッセージを送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたフロー規則変更メッセージを受信し、フロー変更メッセージは、変更されることになるフローに関する情報および変更されることになるフローに対応する新しいCIDセットを含む。受信機14022は、第1の対応において、変更されることになるフローに対応するCIDセットを、新しいCIDセットに変更するようプロセッサ1404に通知する。例えば、受信機14022は、コントローラ12により送信されたフロー規則変更メッセージを受信し、フロー規則変更メッセージに含まれる、変更されることになるフローに関する情報は、以下の通りである:送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに関して、変更されることになるフローに対応する新しいCIDセットは、CID1、CID2およびCID5である。第1の対応において、当初、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットは、CID1、CID2およびCID3であり、先述のフロー変更メッセージを受信後、受信機14022は、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットを、CID1、CID2およびCID5に変更するようプロセッサ1404に通知する。
別の例に関して、コントローラ12は、1または複数のCIDに対応するコンテキストを変更する必要がある場合に、コントローラ12は、コンテキスト変更メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたコンテキスト変更メッセージを受信し、コンテキスト変更メッセージは、変更されることになるCIDおよび変更されることになるコンテキスト識別子に対応する新しいコンテキストを含む。受信機14022は、第2の対応において、変更されることになるCIDに対応するコンテキストを、新しいコンテキストに変更するようプロセッサ1404に通知する。例えば、当初CID1に対応するコンテキストはContext1aであり、受信機14022により受信されたコンテキスト変更メッセージがCID1およびCID1に対応する新しいコンテキストであるContext1bを含む場合に、受信機14022は、第2の対応において、CID1に対応するコンテキストを、Context1bに変更するようプロセッサ1404に通知する。
別の例に関して、コントローラ12が、フローに関する情報を削除する必要がある場合に、コントローラ12は、フロー削除メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたフロー削除メッセージを受信し、フロー削除メッセージは、削除対象のフローに関する情報を含む。受信機14022は、削除対象のフローに関する情報および削除対象のフローに対応するCIDセットを第1の対応から削除するようプロセッサ1404に通知する。
オプション的に、削除されたフローに対応するいくつかまたは全てのCIDが他のフローに対応しない場合に、プロセッサ1404は、削除されたフローに対応するいくつかまたは全てのCIDならびに削除されたフローに対応するいくつかまたは全てのCIDに対応するコンテキストを第2の対応からさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。プロセッサ1404は、フロー1に関する情報を第1の対応から削除した後、CID2がフロー1にのみ対応することがプロセッサ1404により判明した場合に、プロセッサ1404は、CID2に対応するコンテキストを第2の対応からさらに削除してもよい。しかし、CID1はフロー1に対応するだけでなく、フロー2にも対応するため、プロセッサ1404は、CID1に対応するコンテキストを削除しない。
フロー2に関する情報も削除された後、CID1が他のフローに対応しないことがプロセッサ1404により判明した場合に、プロセッサ1404は、CID1に対応するコンテキストを第2の対応から削除する。
オプション的に、プロセッサ1404は、削除されたフローに関する情報あるいは削除されたコンテキストに対応するCIDをコントローラ12に報告するよう送信機14024にさらに通知してもよい。
別の例に関して、コントローラ12がコンテキストを削除する必要がある場合に、コントローラ12は、コンテキスト削除メッセージをフォワーダ14に送信し、フォワーダ14中の受信機14022は、コントローラ12により送信されたコンテキスト削除メッセージを受信するように構成され、コンテキスト削除メッセージは、少なくとも1つの削除対象のコンテキスト識別子を含む。受信機14022は、少なくとも1つの削除対象のCIDおよび少なくとも1つの削除対象のCIDに対応するコンテキストを第2の対応から削除するようプロセッサ1404に命令するように構成されている。
オプション的に、第2の対応中のコンテキストの削除後、プロセッサ1404は、それに応じて第1の対応をさらに変更してもよく、例えば、プロセッサ1404は、第1の対応中の削除されたコンテキストに対応するCIDを削除する。
プロセッサ1404が、コンテキストのCIDに対応するフローを処理するときに、コンテキストの削除により、問題の発生が引き起こされることがあり、そのため、第1の対応中の削除されたコンテキストに対応するCIDの削除後、プロセッサ1404は、第1の対応中の削除されたCIDに対応するフローに関する情報をさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。プロセッサ1404が、メモリ1406に記憶された第2の対応から、コンテキストに対応するCID1を削除した後、CID1に対応するフローがフロー1およびフロー2を含むことがプロセッサ1404により判明した場合に、プロセッサ1404は、第1の対応中のフロー1に関する情報およびフロー2に関する情報をさらに削除してもよい。さらに、プロセッサ1404は、フロー1およびフロー2に別々に対応するCIDセットをさらに削除してもよい。
オプション的に、プロセッサ1404は、削除されたコンテキストに対応するCIDおよび削除されたフローに関する情報をコントローラ12に報告するよう送信機14024にさらに通知してもよい。
本発明で提供される先述の例を使用することにより、コントローラ12は、フォワーダ14に保存された第1の対応および第2の対応を効率的に管理してもよい。
本発明の本実施形態で提供されるフォワーダの紹介後、本発明の実施形態に従った方法を、いくつかの例を使用することにより以下で紹介する。
図3は、本発明の実施形態に従った、フォワーダによりパケットを処理するための方法の概略的なフローチャートであり、具体的には以下の通りである:
ステップ302:フォワーダが入力パケットを受信する。
入力パケットは、別のフォワーダにより送信されてもよく、別のエンティティ(例えば、コンピュータ、移動体端末または固定端末)により送信されてもよい。
ステップ304:フォワーダは、入力パケットに従って、入力パケットが属するフローを決定する。
フォワーダは、入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローを決定してもよい。入力パケットが属する1以上のフローがあることがある。
例えば、フォワーダが入力パケットを受信した後、入力パケットのパケットヘッダは以下の通りである:
MAC1|MAC2|IP−TYPE(0x0800)|IP1|IP2|TCP−TYPE(6)|PORT1|PORT2
ここで、MAC1は、パケットのMAC送信元アドレスであり、MAC2は、パケットのMAC宛先アドレスである。IP−TYPE(0X0800)は、パケットのネットワーク・レイヤ・プロトコルがIPv4プロトコルであることを示し、IP1はパケットのIP送信元アドレスであり、IP2はパケットのIP宛先アドレスである。TCP−TYPE(6)は、パケットの転送レイヤプロトコルがTCPプロトコルであることを示し、PORT1はパケットの送信元TCPポート番号であり、PORT2はパケットの宛先TCPポート番号である。
入力パケットが属するフローは、入力パケットのパケットヘッダのいくつかまたは全てのコンテンツを使用することにより決定されてもよい。先述のパケットヘッダを例として使用することにより、先述のパケットヘッダに従って、入力パケットが、MAC送信元アドレスがMAC1であり、MAC宛先アドレスがMAC2であるフローに属し、入力パケットが、IP送信元アドレスがIP1であり、IP送信先アドレスがIP2であるフローに属することなどを決定してもよい。
ステップ306:フォワーダは、フローとCIDとの間の第1の対応に従って、入力パケットが属するフローに対応するCIDセットを決定し、第1の対応における各フローに対応するCIDセットは少なくとも1つのCIDを含む。
フォワーダが1つのフローテーブルのみを有し、フローテーブルが表5に示すフローテーブルエントリを含み、表5の第1の列がフロー・マッチ・フィールドを示し、第2の列がフロー・マッチ・フィールドにマッチするCIDセットを示すと仮定する。
フォワーダは、入力パケットのパケットヘッダとテーブル5におけるフロー・マッチ・フィールドとをマッチさせ、入力パケットが属するフロー(MAC送信元アドレスがMAC1であり、MAC宛先アドレスがMAC2であるフロー)に対応するCIDセットがCIDセット1であることに気付く。
入力パケットのパケットヘッダが、フローテーブル中の複数のフローテーブルエントリとマッチすることがあるときに、フォワーダは、フローテーブルエントリの優先度に従って、入力パケットとマッチするフローテーブルエントリとして、最も優先度の高いフローテーブルエントリを選択する。
ステップ308:フォワーダは、CIDとコンテキストとの間の第2の対応に従って、入力パケットが属するフローに対応するCIDセットに対応するコンテキストを決定する。
例えば、先述のCIDセット1はCIDのみを含む、例えば、CID=5であると仮定する。フォワーダに保存されたCIDとコンテキストとの間の第2の対応を、以下の通り表6に示す:
先述の説明に従うと、入力パケットが属する第1のフローに対応するCIDセットはCIDセット1であり、CIDセット1が、シリアル番号が5であるCIDのみを有する場合に、フォワーダは、シリアル番号が5であるCIDに従って、CIDに対応するコンテキストがoutport:1であることに気付いてもよい。
ステップ310:フォワーダは、ステップ308で決定されたコンテキストに従って、入力パケットを処理する。
例えば、シリアル番号が5であるCIDに対応するContextがoutport:1である場合に、フォワーダは入力パケットをポート1に転送する。
先述の実施形態で説明した方法を使用することにより、フォワーダは、さらなるコンテキストを記憶してもよく、パケット処理に対するさらなるタイプをサポートしてもよく、それにより、パケットを処理するためのフォワーダの能力を改善する。
先述の実施形態で説明した方法は、入力パケットが属する複数のフローがある場合にさらに適用可能であり、例えば、ステップ304において入力パケットが属する2つのフローがあることをフォワーダが決定したときに、ステップ310の実行後、フォワーダは、ステップ306にさらにシフトしてもよく、別のフローテーブルに従って、入力パケットが属する別のフローに対応するCIDセットを決定してもよい。例えば、フォワーダ中の別のフローテーブルが表7に示すフローテーブルエントリを含み、表7の第1の列はフロー・マッチ・フィールドを示し、第2の列は、フロー・マッチ・フィールドにマッチするCIDセットを示すと仮定する。
フォワーダは、入力パケットのヘッダとフォワーダ中のテーブル7におけるフロー・マッチ・フィールドとをマッチさせ、入力パケットが属する別のフロー(IP送信元アドレスがIP1であり、IP宛先アドレスがIP2であるフロー)に対応するCIDセットがCIDセット2であることに気付く。その後、フォワーダは、CIDセット2に対応するCIDに従って、入力パケットを処理してもよい。
入力パケットが属するフローに対応するCIDセットが複数のCIDを含む場合に、フォワーダは、予め設定されたコンテキストシーケンスで、複数のCIDに対応するコンテキストに従って、入力パケットを処理する。
先述のコンテキストシーケンスが、少なくとも2つのコンテキストがシーケンス中で同じである場合を含む場合に、フォワーダは、少なくとも2つのコンテキストの双方に従って、入力パケットを処理する。
コンテキストが実行されるシーケンスは、以下の3つの方法で示されてもよい:
(1)第1の対応において、シーケンス番号は、各フローに対応するCIDセット中の各CIDに対して設定される。例えば、入力パケットが属するフローに対応するCIDセットはCID1〜CID5であり、CID1〜CID5に対応するシーケンス番号は、表8の第2の列に別々に示される。フォワーダは、第2の列のシーケンス中のCID1〜CID5に対応するコンテキストに従って、入力パケットを処理する。CID3およびCID4が同じシーケンス番号を有することから、フォワーダは、CID3およびCID4の双方に対応するコンテキストに従って、入力パケットを処理する。
(2)第1の対応において、各フローに対応するCIDセット中の各CIDは、デフォルトの配列のシーケンスを有し、いくつかのCIDと他のCIDとの間に関係があってもよい。例えば、入力パケットが属するフローに対応するCIDセットが表9に示され、第1の列はCIDの配列シーケンスを示し、第2の列は、各CIDと他のCIDとの間の関係を示す。CID1〜CID5に従って入力パケットを処理するときに、フォワーダは、他のCIDに関係付けられていないCIDに対して、表9の第1の列におけるCIDの配列シーケンスで処理を実行する。第2の列が、CID3とCID4が関係付けられていることを示していることから、フォワーダは、CID3およびCID4の双方に対応するコンテキストに従って、入力パケットを処理する。
(3)第1の対応において、各フローに対応するCIDセットおよびCIDセット中の各CIDを実行するシーケンスは、2つのリストを使用することにより示されてもよい。例えば、入力パケットが属するフローに対応するCIDセットは、表10に示され、表10は、CIDのデフォルトの配列シーケンスを昇順で示すために使用され、表11は、CID間の関係を示すために使用される。関係を有することが記録された表11におけるCIDに対して、フォワーダは、これらのCIDに対応するコンテキストに従って、入力パケットを同時に処理する。関係を有することが記録されていない表11におけるCIDに対して、
フォワーダは、表10に示したCIDのデフォルトの配列シーケンスで、入力パケットを処理する。
従来の技術では、フォワーダは、入力パケットのフローに対応するActionの配列シーケンスで、シーケンシャルに実行を行うことのみができる。しかし、本発明の本実施形態では、CIDのシーケンス番号間の関係またはCIDが導入され、これにより、いくつかのCIDに対応するコンテキストが並行して処理されてもよく、それにより、パケットを処理するためのフォワーダの効率が改善される。
しかし、実際の適用では、全てのコンテキストタイプが並行して処理されるわけではなく、2つまたは複数のコンテキストの処理結果が互いに影響しない場合にのみ、これらの2つまたは複数のコンテキストが並行して処理され得る。例えば、ファイアウォール処理および転送のような2つのコンテキストタイプは並行して処理できない。これらの2つのコンテキストの処理結果が互いに影響することから、フォワーダは、入力データにおいてファイアウォール処理を最初に実行し、その後、転送を実行する必要がある。あるいは、入力パケットを最初に転送し、その後、ファイアウォール処理を実行する必要がある。しかし、合法の傍受および転送は、並行して処理されてもよい。処理が並行して実行されることがある多くの例があるが、本明細書では1つずつ列挙しない。
ステップ310では、入力パケットの処理後、フォワーダは、コンテキスト処理結果を取得する。オプション的に、別の例では、フォワーダは、以下のステップをさらに実行してもよい:
ステップ312:フォワーダは、コンテキスト処理結果をコントローラに送信する。
フォワーダは、イベント報告メッセージを使用することにより、コンテキスト処理結果をコントローラに送信する。例えば、パケット転送が成功したか否か、入力パケットにおけるオンライン課金の実行後に取得された課金結果、入力パケットにおけるDPIの実行後に取得された結果およびこれらに類するもののような、多くのコンテキスト処理結果があってもよい。
例えば、ステップ310においてフォワーダにより入力パケットにおいて実行されたコンテキスト処理が、入力パケットにおいて実行されたDPIである場合に、ステップ312において、フォワーダは、イベント報告メッセージを使用することにより、入力パケットにおけるDPIの実行後に取得された結果をコントローラに送信してもよい。イベント報告メッセージは、報告される必要のあるイベント(例えば、P2Pパケットの検出(P2P_DTECTED))を含む。さらに、イベント報告メッセージは、入力パケットのいくつかまたは全てのコンテンツ、ならびに/あるいは、コンテキスト実行の結果(例えば、入力パケットにおけるDPIの実行後に取得された詳細な情報)をさらに含んでもよい。
イベント報告メッセージの受信後、コントローラは、コンテキスト処理結果に従って、入力パケットを処理し続ける必要があるか否かを決定してもよく、はいの場合に、入力パケットに対して決定される、新しく決定されたフローおよび新しく決定されたCIDセットをフォワーダに送信してもよく、これにより、フォワーダは、新しく決定されたフローおよび新しく決定されたCIDセットに従って、入力パケットを処理する。例えば、イベント報告メッセージの受信後、イベント報告メッセージに含まれるコンテキスト処理結果が「入力パケットの転送に成功した」であることがコントローラにより判明した場合、コントローラは、何ら処理を実行しなくてもよい。別の例に関して、フォワーダは、イベント報告メッセージを使用することにより、報告される必要のあるイベントならびに入力パケットのいくつかまたは全てのコンテンツがコントローラに送信された後、コントローラにより、入力パケットを処理し続ける必要があることが判明した場合、コントローラは、新しいフローテーブルエントリをフォワーダに送信し、これにより、フォワーダは、新しいフローテーブルエントリに従って、入力パケットを処理し、新しいフローテーブルエントリは、入力パケットに対して決定される、新しく決定されたフロー・マッチ・フィールドおよび新しく決定されたCIDセットを含む。
一般的な状況では、入力パケットの受信前に、フォワーダは既に、パケットが属するフローに対応するCIDセットを保存している。しかし、フォワーダが、第1の対応中の入力パケットのフローに対応するCIDセットを見つけられない場合も時折起こり、この場合、フォワーダは、入力パケットのフローに対応するCIDセットをコントローラから取得してもよい。図3を参照すると、本発明の別の例では、フォワーダがステップ306を実行する前に、方法はさらに以下のステップを含んでもよい:
ステップ305a:第1の対応が、入力パケットが属するフローに対応するCIDセットを有するか否かを決定する。はいの場合に、ステップ306〜ステップ310を実行し、あるいは、そうではない場合に、ステップ305b〜ステップ305dを実行する。
ステップ305b:入力パケットをバッファにバッファリングし、フロー規則リクエストメッセージをコントローラに送信し、フロー規則リクエストメッセージは、入力パケットのパケットヘッダあるいは入力パケットのいくつかまたは全てのコンテンツを含む。
例えば、OpenFlowプロトコルを使用することにより、フォワーダがコントローラと通信するときに、フォワーダは、入力パケットに対応するCIDセットを取得することをリクエストするために、パケット報告(Packet_In)メッセージをコントローラに送信し、Packet_Inメッセージは、入力パケットのパケットヘッダあるいは入力パケットのいくつかまたは全てのコンテンツを含む。さらに、Packet_Inメッセージは、入力パケットがバッファリングされるバッファ(例えば、Buffer_ID)、報告の理由(例えば、「フローテーブルが、マッチしたフローテーブルエントリを有しない」理由)およびこれらに類するものに関する情報をさらに運んでもよい。
ステップ305c:コントローラにより送信されたフロー規則インスタレーションメッセージを受信し、フロー規則インスタレーションメッセージは、入力パケットのフローに対応するCIDセットを含む。
例えば、フォワーダにより送信されたフロー規則リクエストメッセージの受信後、コントローラは、フロー規則リクエストメッセージ中の入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローに対応するCIDセットが、具体的には以下の通りである7個のCIDを含むことを決定する:
CID1 最大帯域幅の2Mbpsでの制御
CID2 パケット再構築
CID3 DPI
CID4 ウイルスファイアウォール検出
CID5 パケットバッファリング
CID6 合法の傍受
CID7 ポート1への転送
コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットが属するフローに対応するCIDセットをフォワーダに送信し、例えば、コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットが属するフローに対応するCIDセットをフォワーダに送信してもよく、フロー規則インスタレーションメッセージのフォーマットは以下の通りである:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID1,CID2,CID3,CID4,CID5,CID6,CID7>}
オプション的に、コントローラは、以下のような、複数のフロー規則インスタレーションメッセージを使用することにより、フォワーダに、入力パケットが属するフローに対応するCIDセットも送信してもよい:
<フロー規則インスタレーションメッセージ1>:={フローに関する情報,<CID1,CID2,CID3,CID4>}
<フロー規則インスタレーションメッセージ2>:={フローに関する情報,<CID5,CID6,CID7>}
オプション的に、コントローラにより送信されたフロー規則インスタレーションメッセージは、以下のような、各CIDを実行するシーケンスをさらに含む:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<(CID1,1),(CID2,2),(CID3,3),(CID4,4),(CID5,4),(CID6,4),(CID7,5)>}
各CIDを実行する先述のシーケンスを使用することにより、CID4、CID5およびCID6は、同時に実行される必要があることが理解される。フロー規則インスタレーションメッセージの先述のフォーマットは例に過ぎず、実際の適用では別のフォーマットであってもよく、例えば、入力パケットが属するフローに対応するCIDセットは、入力パケットのフローに対応するCIDセットがフォワーダに送信され得る限り、CIDリスト(list)を使用することにより示される。
別の例に関して、フォワーダにより送信されたフロー規則リクエストメッセージの受信後、コントローラは、フロー規則リクエストメッセージ中の入力パケットのパケットヘッダまたはコンテンツに従って、入力パケットが属するフローが、BFD/LLDPプロトコルに対応するフローであると決定し、コントローラは、BFD/LLDPプロトコルに対応するフローに対応するCIDセットを決定する。対応するCIDセットは、以下の通りのCIDのみを含んでもよい:
CID8 BFD/LLDPプロトコル処理
コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットが属するフローに対応するCIDセットをフォワーダに送信する。例えば、フロー規則インスタレーションメッセージのフォーマットは、以下の通りである:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID8>}
先述のフロー規則インスタレーションメッセージの受信後、コントローラは、入力パケットにおいてBFD/LLDPプロトコル処理を実行するのみであり、例えば、プロトコルステートマシンを更新する。入力パケットが属する複数のフローがあるときに、コントローラは、複数のフロー規則インスタレーションメッセージを使用することにより、フローに対応するCIDセットをフォワーダに送信してもよく、これにより、フォワーダは、フローに対応するCIDセットを異なるフローテーブルに保存する。
例えば、OpenFlowプロトコルを使用することにより、フォワーダがコントローラと通信するときに、先述のフロー規則インスタレーションメッセージは、Flow_Modメッセージであってもよく、先述のフローに関する情報は、フロー・マッチ・フィールド(Flow match field)であってもよい。入力パケットが2つのフローに対応し、フローに対応するフロー・マッチ・フィールドはFlow match field1およびFlow match field2に別々に対応すると仮定する。コントローラは、Flow match field1およびFlow match field1に対応するCID list1を、フォワーダに送信される第1のFlow_Modメッセージに運ばせ、Flow match field2およびFlow match field2に対応するCID list2を、フォワーダに送信される第2のFlow_Modメッセージに運ばせる。コントローラは、フローテーブル(例えば、フローテーブルのID(table id))に関する情報を、各Flow_Modメッセージにさらに運ばせてもよく、これにより、フォワーダは、各Flow_Modメッセージで運ばれるFlow match fieldおよびFlow match fieldに対応するCIDセットを、対応するフローテーブルに追加する。例えば、第1のFlow_Modメッセージは、table id=1を含み、第2のFlow_Modメッセージは、table id=2を含む。さらに、Flow_Modメッセージは、フローテーブル処理シーケンスを示すために使用される情報をさらに運んでよい。例えば、第1のFlow_Modメッセージは、表示情報のピース(例えば、「Goto−table 2」)を含む。第1のFlow_Modメッセージの受信後、フォワーダは、表1におけるFlow match field1に従って、対応するCID list1を見つけ、CID list1に対応するコンテキストに従って、入力パケットを処理し、その後、フォワーダは、対応するCID list2を見つけるために、表2に従って、入力パケットにおけるマッチングを実行する必要がさらにあり、CID list2に対応するコンテキストに従って、入力パケットを処理する。
ステップ305d:入力パケットが属するフローに関する情報および入力パケットが属するフローに対応するCIDセットを第1の対応に追加する。
ステップ305dは、オプション的であり、ステップ305dは、ステップ305cの後に実行されてもよく、ステップ306の後に実行されてもよい。
従来の技術では、フォワーダが、コントローラからの入力パケットが属するフローに対応するActionをリクエストしたときはいつでも、コントローラは、フロー規則インスタレーションメッセージにActionを運ばせ、フロー規則インスタレーションメッセージをフォワーダに送信する。Actionは、多くの処理パラメータを含み、そのため、様々なActionを送信するための要件を満たすために、フロー規則インスタレーションメッセージは、比較的長く設計される必要があるが、フロー規則インスタレーションメッセージが過剰に長く設計された場合に、送信時間は延長され、パケット処理効率に影響を及ぼす。この問題は、単に、本発明で提供される例を使用することにより解決されるかもしれない。コントローラが、フォワーダからフロー規則リクエストメッセージを受信するときに、コントローラは、フロー規則インスタレーションメッセージを使用することにより、入力パケットのフローに対応するCIDセットをフォワーダに送信することのみを必要とし、フォワーダが既にCIDセットに対応するコンテキストを記憶している場合に、フォワーダは、CIDセットにおける各CIDに従って、対応するコンテキストを見つけることのみを必要とする。CIDセットにより占有されるスペースは非常に小さく、CIDセットを送信するためのフロー規則インスタレーションメッセージは、過剰に長く設計される必要はなく、そのため、フロー規則インスタレーションメッセージを送信するのに使用される時間もまた短くなり、フォワーダがパケットを処理する効率もある程度改善できる。
当然、先述の例で説明した方法に加えて、コントローラはさらに、CIDセットに対応するコンテキストおよびCIDセットを共にフォワーダに送信してもよい。例えば、ステップ305cにおいてコントローラにより送信されたフロー規則インスタレーションメッセージは、CIDセットに対応するコンテキストをさらに含んでもよい。この場合には、フロー規則インスタレーションメッセージのフォーマットは以下の通りであってもよい:
<フロー規則インスタレーションメッセージ>:={フローに関する情報,<CID1,CID2,CID3>,[CID1,Context1],[CID2,Context2],[CID3,Context3]}
フロー規則インスタレーションメッセージの受信後に、第2の対応がCIDセット中のいくつかまたは全てのCID、ならびに、いくつかまたは全てのCIDに対応するコンテキストを保存していないことがフォワーダにより判明した場合、フォワーダは、いくつかまたは全てのCIDと、いくつかまたは全てのCIDに対応するコンテキストとを第2の対応に追加する。
通常の状況では、入力パケットの受信前に、大半のCIDおよびCIDに対応するコンテキストは、フォワーダ中の第2の対応に既に記憶されている。しかし、フォワーダが、1または複数のCIDに対応するコンテキストを、第2の対応中で見つけられない場合も起こり、この場合には、フォワーダは、1または複数のCIDに対応するコンテキストをコントローラから取得してもよい。図3を参照すると、別の例では、ステップ308の実行前に、フォワーダは、以下のステップをさらに実行してもよい:
ステップ307a:第2の対応が、入力パケットが属するフローに対応するCIDセットに対応するコンテキストを有するか否かを決定する。はいの場合に、ステップ308を実行し、あるいは、第2の対応が、CIDセット中にいくつかまたは全てのCIDを有しない場合、ステップ307b〜ステップ307dを実行する。
ステップ307b:コンテキスト・リクエスト・メッセージをコントローラに送信し、コンテキスト・リクエスト・メッセージは、CIDセット中にいくつかまたは全てのCIDを含む。
ステップ307c:コントローラにより送信されたコンテキスト・インスタレーション・メッセージを受信し、コンテキスト・インスタレーション・メッセージは、CIDセット中のいくつかまたは全てのCIDならびにCIDセット中のいくつかまたは全てのCIDに対応するコンテキストを含む。
オプション的に、コンテキスト・インスタレーション・メッセージは、CIDセットを除く他のCIDおよび他のCIDに対応するコンテキストをさらに含んでもよい。
ステップ307d:コンテキスト・インスタレーション・メッセージ中の各CIDおよびコンテキスト・インスタレーション・メッセージ中の各CIDに対応するコンテキストを、第2の対応に追加する。
ステップ307dは、オプション的であり、ステップ307dは、ステップ307cの後に実行されてもよく、ステップ308の後に実行されてもよい。
従来の技術におけるOpenFlowプロトコルと矛盾しないように、本発明の実施形態は、別の実現解決策をさらに提供し、解決策では、フォワーダは、従来の技術におけるプロセスに従って、従来の技術における既存のActionを処理してもよい。従来の技術における既存のActionに加えて、パケットが属するフローにおいてコンテキスト処理を実行するようフォワーダに命令するために使用されるAction(例えば、Handle_Context)は、本実施形態でさらに新しく定義されてもよい。図4を参照すると、本発明の実施形態の方法は以下の通りである:
ステップ402:OpenFlow Switchは、入力パケットを受信する。
ステップ404:OpenFlow Switchは、パケットに従って、パケットが属するフローを決定する。
ステップ406:OpenFlow Switchは、フローテーブルが、入力パケットが属するフローに対応するアクションを有するか否かを決定し、はいの場合に、対応するアクションを実行し、そうではない場合に、ステップ408を実行する。
ステップ408:入力パケットをバッファにバッファリングし、入力パケットに対応するアクションを取得するようリクエストするために、Packet_InメッセージをOpenFlowコントローラに送信する。
先述のPacket_Inメッセージは、入力パケットのいくつかまたは全てのコンテンツを運ぶ。さらに、Packet_Inメッセージは、入力パケットがバッファリングされるバッファ(例えば、Buffer_ID)、報告の理由(例えば、「フローテーブルが、マッチしたフローテーブルエントリを有しない」理由)およびこれらに類するものに関する情報をさらに運んでもよい。
ステップ410:OpenFlow Controllerは、Packet_Inメッセージ中の情報に従って、入力パケットに対応するアクションおよび入力パケットが属するフローに対応するCIDセットを決定し、フロー規則インスタレーション(例えば、Flow_Mod)メッセージを使用することにより、入力パケットのフローに対応するアクションおよび入力パケットが属するフローに対応するCIDセットをOpenFlow Switchに送信する。入力パケットに対応するアクションは、OpenFlowプロトコルで定義された標準的なアクションであってもよく、パケットが属するフローにおいてコンテキスト処理を実行するようフォワーダに命令するために使用される、新しく追加されたアクション、例えば、Handle_Contextアクションであってもよい。入力パケットに対応するアクションが、OpenFlowプロトコルで定義された標準的なアクションであるときに、Packet_Inメッセージは、CIDセットを含まない、標準的なアクションに対応するパラメータを運ぶことのみを必要とする。入力パケットが属するフローに対応するアクションが、パケットが属するフローにおいてコンテキスト処理を実行するようフォワーダに命令するために使用されるアクションを含むときに、入力パケットが属するフローに対応するCIDセットは、アクションのパラメータとして、フロー規則インスタレーションメッセージで運ばれる必要がある。この解決策を使用することにより、既存のOpenflowアクションおよびコンテキスト処理は、OpenFlowプロトコルの既存のアクションと矛盾しない方法で、共存できる。
例えば、先述のFlow_Modメッセージは、入力パケットが属するフローに対応するFlow match fieldおよび1以上のアクション(例えば、Set−fieildおよびOutput)を含むフローマッチ情報に対応するアクションリストを含んでもよい。入力パケットがいくつかのコンテキストに従って処理される必要がある場合に、フロー・マッチ・フィールドに対応するアクションは、Handle_Contextアクションをさらに含んでもよく、Handle_Contextアクションのパラメータは、入力パケットが属するフローに対応するCIDセットである。これらの実現フォーマットは以下の通りである:
Flow_Mod:={match field,Instructions(action list)}
入力パケットが属する複数のフローがあるときに、OpenFlow Controllerは、複数のFlow_Modメッセージを使用することにより、フローに対応するFlow entryをOpenFlow Switchに送信してもよく、これにより、OpenFlow Switchは、フローに対応するFlow entryを異なるフローテーブルに保存する。各Flow entryは、先述のHandle_ContextアクションおよびHandle_Contextアクションのパラメータ(例えば、CIDセット)をオプション的に含む。
例えば、入力パケットが2つのフローに対応し、2つのフローに対応するフロー・マッチ・フィールドはFlow match field1およびFlow match field2に別々に対応すると仮定する。OpenFlow Controllerは、Flow match field1およびFlow match field1に対応するアクションリストを、OpenFlow Switchに送信される第1のFlow_Modメッセージに運ばせ、Flow match field2およびFlow match field2に対応するアクションリストを、OpenFlow Switchに送信される第2のFlow_Modメッセージに運ばせる。OpenFlowで定義されたこれらのアクションタイプおよびパラメータに加えて、先述の2つのメッセージのアクションリストは、コンテキスト処理要件に従って、Handle_ContextアクションのタイプおよびHandle_Contextアクションのパラメータ(例えば、CIDセット)をオプション的に含む。
OpenFlow Controllerは、フローテーブル(例えば、フローテーブルのID)に関する情報を、各Flow_Modメッセージにさらに運ばせてもよく、これにより、OpenFlow Switchは、各Flow_Modメッセージで運ばれるフローに関する情報およびフローに対応するCIDセットを、対応するフローテーブルに追加する。例えば、第1のFlow_Modメッセージは、table id=1を含み、第2のFlow_Modメッセージは、table id=2を含む。
さらに、Flow_Modメッセージは、フローテーブル処理シーケンスを示すために使用される情報をさらに運んでもよい。例えば、第1のFlow_Modメッセージは、表示情報のピース(例えば、「Goto−table 2」)を含む。第1のFlow_Modメッセージの受信後、OpenFlow Switchは、表1におけるFlow match field1に従って、対応するアクションリストを見つけ、Flow match field1に対応するアクションに従って、入力パケットを処理する。対応するアクションリストが、Handle_Contextアクションを含む場合に、フォワーダは、Handle_Contextアクションのパラメータに従って、入力パケットが属するフローに対応するCIDセット(例えば、CID list1)を取得し、CID list1に従って、第2の対応においてCID list1に対応するコンテキストを見つけ、その後、CID list1に対応するコンテキストに従って、入力パケットを処理する。先述の表1のフロー規則処理の完了後、対応するアクションリストを見つけるために、表2に従って、入力パケットにおいてマッチングがさらに実行される必要があり、入力パケットはアクションリストに従って処理される。
ステップ412:フロー規則インスタレーションメッセージの受信後、OpenFlow Switchは、入力パケットが属するフローに関する情報および入力パケットのフローに対応するCIDセットを、対応する第1の対応に追加する。
ステップ412は、オプション的であり、ステップ412は、ステップ410の後に実行されてもよく、ステップ414の後に実行されてもよい。
ステップ414:OpenFlow Switchは、Buffer_IDに対応するバッファから、バッファリングされたパケットを取り出し、OpenFlow Switchは、入力パケットが属するフローに対応するアクションに従って、入力パケットを処理する。
入力パケットが属するフローに対応するアクションがHandle_Contextであるときに、入力パケットにおいてフォワーダにより実行される処理は、ステップ406〜ステップ410におけるものと類似しており、これは、本明細書では再度詳細に説明しない。
OpenFlowに基づく先述の実現では、アクションは、Flow_modメッセージのApply−Actions構造に含まれてもよく、Write−Actions構造に含まれてもよい。当業者は、OpenFlowプロトコルを例として使用することによってのみ前述の説明が実行され、フォワーダは、別のプロトコルを使用することにより、コントローラと通信してもよいことを理解できる。
フォワーダは、パケット処理後の様々な処理結果を取得し、フォワーダは、コントローラにいくつかの処理結果を、例えば、合法の傍受により取得された関連情報、NATサービスの実行後に取得された結果およびこれらに類するものを報告する必要がある。フォワーダは、いくつかの結果をさらに処理する必要があるかもしれない。本発明の別の例では、フォワーダが入力パケットを処理した後に取得された処理結果は、新しく生成されたパケットであってもよい。
例えば、入力パケットにおいてフォワーダにより実行される処理は、入力パケットにおいて実行される傍受である。傍受の結果は、通常、特定のネットワークエンティティに転送される必要があり、そのため、フォワーダは、傍受された結果(例えば、入力パケットのコンテンツ)をカプセル化する必要があり、それにより、新しく生成されたパケットを取得する。フォワーダが、新しく生成されたパケットを取得した後、新しく生成されたパケットにおいてフォワーダにより実行される処理は、入力パケットにおいて実行される処理と同じである、すなわち、ステップ302〜ステップ312におけるものと類似した処理が、新しく生成されたパケットにおいて実行される。
従来の技術では、OpenFlowのactionは、現在のパケットにおいてどのタイプの処理が実行されるかを規定しているに過ぎず、フォワーダは、パケットの処理結果を維持せず、そのため、パケットに関する以前の処理結果に基づいて次の処理が実行される必要があるときに、従来の技術におけるActionを実現できない。
先述の例で説明した第1の対応は、フォワーダにおける初期設定を実行するときに、技術者によりフォワーダに記憶されてもよく、フォワーダおよびコントローラが接続を確立した後に、コントローラによりフォワーダに送信されてもよい。例えば、図5を参照すると、入力パケットの受信前に、フォワーダは、コントローラにより送信された、ステップ502に示すフロー規則インスタレーションメッセージを受信してもよく、フロー規則インスタレーションメッセージは、フォワーダによりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダによりサポートされるいくつかまたは全てのフローに対応するCIDセットを含む。
例えば、コントローラは、1以上のフロー規則インスタレーションメッセージを使用することにより、フォワーダによりサポートされるフローに関する情報およびフォワーダによりサポートされるフローに対応するCIDセットを、フォワーダに送信してもよい。
フォワーダは、第1の対応を形成するために、フォワーダによりサポートされるいくつかまたは全てのフローに関する情報ならびにフォワーダによりサポートされるいくつかまたは全てのフローに対応するCIDセットを、1対1の対応方法で保存する。
先述の例で説明した第2の対応は、フォワーダにおける初期設定を実行するときに、技術者によりフォワーダに記憶されてもよく、フォワーダおよびコントローラが接続を確立した後に、コントローラによりフォワーダに送信されてもよい。例えば、図5を参照すると、入力パケットの受信前に、フォワーダは、コントローラにより送信された、ステップ504に示すコンテキスト・インスタレーション・メッセージを受信してもよく、コンテキスト・インスタレーション・メッセージは、フォワーダによりサポートされるいくつかまたは全てのCIDならびにフォワーダによりサポートされるいくつかまたは全てのCIDに対応するコンテキストを含む。
コントローラが、複数のコンテキストをフォワーダに送信する必要があるときに、コントローラは、コンテキスト・インスタレーション・メッセージを使用することにより、複数のコンテキストをフォワーダに送信してもよく、複数のコンテキスト・インスタレーション・メッセージを使用することにより、複数のコンテキストをフォワーダに送信してもよい。各コンテキスト・インスタレーション・メッセージは、1以上のCIDおよび1以上のCIDに対応するコンテキストを含んでもよい。
フォワーダは、第2の対応を形成するために、フォワーダによりサポートされるいくつかまたは全てのCIDならびにフォワーダによりサポートされるいくつかまたは全てのCIDに対応するコンテキストを、1対1の対応方法で保存する。
別の例では、フォワーダがコントローラと通信する前に、フォワーダは、フローおよびコンテキストを処理するためのピアの能力を知るために、最初に、コントローラと交渉してもよい。例えば、図6aは、フォワーダが最初に交渉を開始する場合を示し、具体的には以下のステップを含む:
ステップa602:フォワーダは、コントローラに能力交渉リクエストメッセージを送信し、能力交渉リクエストメッセージは、フォワーダによりサポートされるコンテキスト能力リストを含み、これにより、コントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信する。
オプション的に、先述のコントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダにアクティブに送信してもよく、フォワーダにより送信されるフロー規則リクエストメッセージおよびコンテキスト・リクエスト・メッセージの受信後に、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信してもよい。
ステップa604:フォワーダは、コントローラにより送信された交渉リスポンスメッセージを受信し、交渉リスポンスメッセージは、コントローラによりサポートされるコンテキスト能力リストを含んでもよく、これにより、フォワーダは、コントローラによりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラからのいくつかまたは全てのコンテキストをリクエストする。
フォワーダおよびコントローラの間の先述の交渉は、コントローラによりアクティブに開始されてもよい。例えば、図6bを参照すると、交渉は具体的には以下のステップを含む:
ステップb602:フォワーダは、コントローラにより送信された能力交渉リクエストメッセージを受信し、能力交渉リクエストメッセージは、コントローラによりサポートされるコンテキスト能力リストを含み、これにより、フォワーダは、コントローラによりサポートされるコンテキスト能力リストに従って、コントローラがサポートできる、コントローラからのいくつかまたは全てのコンテキストをリクエストする。
オプション的に、先述のコントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダにアクティブに送信してもよく、フォワーダにより送信されるフロー規則リクエストメッセージおよびコンテキスト・リクエスト・メッセージの受信後に、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信してもよい。
ステップb604:フォワーダは、コントローラに交渉リスポンスメッセージを送信し、交渉リスポンスメッセージは、フォワーダによりサポートされるコンテキスト能力リストを含んでもよく、これにより、コントローラは、フォワーダがサポートできるいくつかまたは全てのコンテキストをフォワーダに送信する。
コントローラは、フォワーダに記憶された第1の対応または第2の対応を管理してもよい。例えば、図7を参照すると、コントローラは、第1の対応あるいは第2の対応中の、クエリ、変更または削除情報を管理してもよい。いくつかの例を使用することにより、以下で説明が行われ、これらの例はいずれも相対的に独立したものであり、互いに影響しないことに留意すべきである。
例1:コントローラが、フローに対応するCIDセットをクエリする必要がある場合に、コントローラは、ステップ702に示すフロー規則クエリ・リクエスト・メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたフロー規則クエリ・リクエスト・メッセージを受信するステップであって、クエリ・リクエスト・メッセージは、クエリされることになるフローに関する情報を含む、受信するステップと、第1の対応に従って、クエリされることになるフローに対応するCIDセットを見つけるステップと、ステップ704で示すフロー規則クエリ・リスポンス・メッセージをコントローラに送信するステップであって、フロー規則クエリ・リスポンス・メッセージは、クエリされることになるフローに関する情報およびクエリされることになるフローに対応するCIDセットを含む、送信するステップ。
例2:コントローラが、1または複数のCIDに対応するコンテキストをクエリする必要がある場合に、コントローラは、ステップ802に示すコンテキスト・クエリ・リクエスト・メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたコンテキスト・クエリ・リクエスト・メッセージを受信するステップであって、クエリ・リクエスト・メッセージは、クエリされることになるCIDを含み、1以上のクエリされることになるCIDがあることがある、受信するステップと、
第2の対応に従って、クエリされることになるCIDに対応するコンテキストを見つけるステップと、ステップ804に示すコンテキスト・クエリ・リスポンス・メッセージをコントローラに送信するステップであって、クエリ・リスポンス・メッセージは、クエリされることになるCIDに対応するコンテキストを含む、送信するステップ。
オプション的に、先述のクエリ・リスポンス・メッセージは、クエリされることになるCIDをさらに含んでもよい。
例3:コントローラが、フローに対応するCIDセットを変更する必要がある場合に、コントローラは、ステップ902に示すフロー変更メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたフロー規則変更メッセージを受信するステップであって、フロー規則変更メッセージは、変更されることになるフローに関する情報および変更されることになるフローに対応する新しいCIDセットを含む、受信するステップと、
フロー規則変更メッセージの受信後に、第1の対応において、変更されることになるフローに対応するCIDセットを、新しいCIDセットに変更するステップ。
例えば、フォワーダは、コントローラにより送信されたフロー規則変更メッセージを受信し、フロー規則変更メッセージに含まれる、変更されることになるフローに関する情報は、以下の通りである:送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに関して、変更されることになるフローに対応する新しいCIDセットは、CID1、CID2およびCID5である。
第1の対応において、当初、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットは、CID1、CID2およびCID3であり、先述のフロー変更メッセージを受信後、フォワーダは、送信元IPアドレスが10.88.85.55であり、宛先IPアドレスが10.88.80.56であるフローに対応するCIDセットを、CID1、CID2およびCID5に変更する。
例4:コントローラは、1または複数のCIDに対応するコンテキストを変更する必要がある場合に、コントローラは、ステップ1002に示すコンテキスト変更メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたコンテキスト変更メッセージを受信するステップであって、コンテキスト変更メッセージは、変更されることになるCIDおよび変更されることになるコンテキスト識別子に対応する新しいコンテキストを含む、受信するステップと、
コンテキスト変更メッセージの受信後に、第2の対応において、変更されることになるCIDに対応するコンテキストを、新しいコンテキストに変更するステップ。
例えば、当初CID1に対応するコンテキストはContext1aであり、フォワーダにより受信されたコンテキスト変更メッセージがCID1およびCID1に対応する新しいコンテキストであるContext1bを含む場合に、フォワーダは、第2の対応において、CID1に対応するコンテキストを、Context1bに変更する。
例5:コントローラが、フローに関する情報を削除する必要がある場合に、コントローラは、ステップ1102に示すフロー削除メッセージをフォワーダに送信し、フォワーダは、以下のステップを実行する:
コントローラにより送信されたフロー削除メッセージを受信するステップであって、フロー削除メッセージは、削除対象のフローに関する情報を含む、受信するステップと、
削除対象のフローに関する情報および削除対象のフローに対応するCIDセットを第1の対応から削除するステップ。
オプション的に、削除されたフローに対応するいくつかまたは全てのCIDが他のフローに対応しない場合に、フォワーダは、削除されたフローに対応するいくつかまたは全てのCIDならびに削除されたフローに対応するいくつかまたは全てのCIDに対応するコンテキストを第2の対応からさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。フォワーダは、フロー1に関する情報を第1の対応から削除した後、CID2がフロー1にのみ対応することがフォワーダにより判明した場合に、フォワーダは、CID2に対応するコンテキストを第2の対応からさらに削除してもよい。しかし、CID1はフロー1に対応するだけでなく、フロー2にも対応するため、フォワーダは、CID1に対応するコンテキストを削除しない。
フロー2に関する情報も削除された後、CID1が他のフローに対応しないことがフォワーダにより判明した場合に、フォワーダは、CID1に対応するコンテキストを第2の対応から削除する。
オプション的に、フォワーダは、削除されたフローに関する情報あるいは削除されたコンテキストに対応するCIDをコントローラに報告してもよい。
例6:コントローラがコンテキストを削除する必要がある場合に、コントローラは、ステップ1202に示すコンテキスト削除メッセージをフォワーダに送信し、フォワーダは、コントローラにより送信されたコンテキスト削除メッセージを受信し、コンテキスト削除メッセージは、少なくとも1つの削除対象のコンテキスト識別子を含む。フォワーダは、少なくとも1つの削除対象のCIDおよび少なくとも1つの削除対象のCIDに対応するコンテキストを第2の対応から削除する。
オプション的に、第2の対応中のコンテキストの削除後、フォワーダは、それに応じて第1の対応をさらに変更してもよく、例えば、コントローラは、以下のステップをさらに実行してもよい:
削除されたコンテキストに対応するCIDを第1の対応から削除するステップ。
フォワーダが、コンテキストのCIDに対応するフローを処理するときに、コンテキストの削除により、問題の発生が引き起こされることがあり、そのため、第1の対応中の削除されたコンテキストに対応するCIDの削除後、フォワーダは、第1の対応中の削除されたCIDに対応するフローに関する情報をさらに削除してもよい。
例えば、フロー1に対応するCIDセットがCID1およびCID2を含み、フロー2に対応するCIDセットがCID1およびCID3を含むと仮定する。フォワーダが、第2の対応から、コンテキストに対応するCID1を削除した後、CID1に対応するフローがフロー1およびフロー2を含むことがフォワーダにより判明した場合に、フォワーダは、第1の対応中のフロー1に関する情報およびフロー2に関する情報をさらに削除する。さらに、フォワーダは、フロー1およびフロー2に別々に対応するCIDセットをさらに削除してもよい。
オプション的に、フォワーダは、削除されたコンテキストに対応するCIDおよび削除されたフローに関する情報をコントローラにさらに報告してもよい。
本発明で提供した先述の例を使用することにより、コントローラは、フォワーダに保存された第1の対応および第2の対応を効率的に管理してもよい。
前述の任意の方法の実施形態は、図2に示すフォワーダ中のいくつかまたは全てのコンポーネントにより実現されてもよい。
先述の実施形態の説明全体を通して、当業者は、ハードウェアのみを使用することにより、または、ソフトウェアおよび必要なユニバーサル・ハードウェア・プラットフォームを使用することにより、本発明が実現されてもよいことを理解できる。このような理解に基づき、本発明の技術的解決策は、コンピュータプログラム製品の形で具現化されてもよい。コンピュータプログラム製品は、(コンパクト・ディスク・リード・オンリー・メモリ、USBフラッシュドライブ、または、リムーバブルハードディスクとすることができる)不揮発性記憶媒体に記憶されてもよい。ソフトウェア製品は、(パーソナルコンピュータ、受信エンドまたはネットワークデバイスとすることができる)コンピュータデバイスが、本発明の実施形態で提供される方法を実行できる多数の命令を含む。
本発明におけるパケットを処理する方法及びフォワーダを詳細に紹介した。当業者は、本発明の概念に基づき、特定の実現方法および適用の範囲に関して変更を行ってもよい。そのため、本明細書の内容は、本発明に対する限定として解釈されない。