(57)【特許請求の範囲】
【請求項１】
オープンフローコントローラを実装するネットワークエレメントによって実行される方法であって、前記オープンフローコントローラは、ＯＡＭモジュールを含み、前記ＯＡＭモジュールは、オープンフローを実装するネットワークにおいてＯＡＭ機能要求を提供するためのものであり、前記方法は、前記ネットワーク内のオープンフロースイッチのサブセットが、要求されたＯＡＭ機能を実行するための情報をＯＡＭモジュールに提供するために、オープンフローデータフローのためのメトリックを通知することを要求するための方法であって、
前記ネットワークエレメントのＯＡＭモジュールによって、前記ＯＡＭ機能を実行するための要求を受信するステップと、
前記ＯＡＭモジュールによってトリガ監視メッセージを生成するステップであって、前記トリガ監視メッセージは、前記オープンフロースイッチのサブセットの中のオープンフロースイッチによって実行されるべきアクションを定義し、前記アクションは、オープンフローデータフローのためのメトリックを提供することであり、
前記トリガ監視メッセージを前記オープンフロースイッチに送信するステップと、
前記オープンフロースイッチのサブセットから複数の監視応答メッセージを受信するステップであって、前記複数の監視応答メッセージの各々は、オープンフローデータフローのためのメトリックを含み、
前記複数の監視応答メッセージを前記ＯＡＭ機能要求と関連付けるステップと、
前記ＯＡＭモジュールによって、前記オープンフローデータフローのメトリックを用いて、要求されたＯＡＭ機能を実行するステップと、
前記要求されたＯＡＭ機能の結果を返すステップと、
を含む方法。
【請求項２】
前記監視トリガメッセージを生成するステップは、前記オープンフロースイッチによって前記オープンフローデータフローと集約されるべきＯＡＭパケットを定義するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記監視トリガメッセージを生成するステップは、前記オープンフロースイッチ内のオープンフロースイッチモジュールのフローテーブルまたはグループテーブルのためのアクションを定義するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記監視トリガメッセージを生成するステップは、前記オープンフロースイッチのプロトコルエージェントによって報告されるべき前記メトリックを定義するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記複数の監視応答メッセージを前記ＯＡＭ機能要求と関連付けるステップは、前記監視応答メッセージ内の前記ＯＡＭデータパケットを用いて、前記監視応答メッセージを要求された前記ＯＡＭ機能と照合するステップをさらに含む、請求項１に記載の方法。
【請求項６】
オープンフロースイッチを実装するネットワークエレメントによって実行される方法であって、前記オープンフロースイッチは、プロトコルエージェントと、オープンフロースイッチモジュールとを含み、前記オープンフロースイッチは、オープンフローデータフローのためのメトリックをオープンフローコントローラに報告し、前記メトリックは、前記オープンフローコントローラのＯＡＭ（operations,  administration  and  management）機能を支援し、前記オープンフロースイッチは、ＯＡＭパケットを前記オープンフローデータフローとともに転送し、前記オープンフローデータフローのための前記メトリックを収集し、前記方法は、
前記オープンフロースイッチによって、前記オープンフローコントローラから監視トリガメッセージを受信するステップと、
前記プロトコルエージェントによってＯＡＭパケットを生成するステップであって、前記ＯＡＭパケットは前記監視トリガメッセージによって定義され、
前記ＯＡＭパケットを前記オープンフローデータフローと集約するために、前記オープンフロースイッチモジュールを経由して前記ＯＡＭパケットを転送するステップと、
前記オープンフロースイッチモジュールにおいて前記ＯＡＭパケットを検出するステップと
前記プロトコルエージェントによって、前記ＯＡＭパケットの検出に応じて監視応答メッセージを生成するステップと、
前記オープンフローデータフローおよびＯＡＭデータパケットについて、前記オープンフロースイッチモジュールから前記メトリックを収集するステップと、
前記メトリックとともに前記監視応答メッセージを前記オープンフローコントローラに送信するステップと、
を含む方法。
【請求項７】
前記監視トリガメッセージ内で定義された、前記オープンフロースイッチモジュールのフローテーブルまたはグループテーブルにアクションを追加するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記プロトコルエージェントによって、前記監視応答メッセージ内に前記ＯＡＭパケットを挿入するステップをさらに含む、請求項６に記載の方法。
【請求項９】
前記メトリックを収集するステップは、
フローテーブルエントリのカウンタまたはグループテーブルエントリのカウンタを読み出すステップと、
前記フローテーブルエントリまたは前記グループテーブルエントリの実行のタイムスタンプを読み出すステップと、
をさらに含む、請求項６に記載の方法。
【請求項１０】
オープンフローコントローラを実装するネットワークエレメントであって、前記オープンフローコントローラは、オープンフローを実装するネットワークにおいてＯＡＭ機能要求にサービスし、前記オープンフローコントローラは、ネットワーク内のオープンフロースイッチのサブセットが、要求された前記ＯＡＭ機能を実行するための情報を提供するために、オープンフローデータフローのためのメトリックを報告するように要求し、
前記ネットワークエレメントは、ＯＡＭ（operations,  administration  and  management）モジュール及びメッセージ相関モジュールを含む、前記オープンフローコントローラを含み、
前記ＯＡＭモジュールは、前記ＯＡＭ機能要求によって特定されるＯＡＭ機能を実行し、監視トリガメッセージを生成することによって、前記ＯＡＭ機能要求を処理するように構成され、前記監視トリガメッセージは、前記オープンフロースイッチのサブセット内のオープンフロースイッチによって実行されるべきアクションを定義し、前記アクションは、前記オープンフローデータフローのための前記メトリックを提供するためのものであり、前記ＯＡＭモジュールは、前記監視トリガメッセージを前記オープンフロースイッチに送信し、前記メッセージ相関モジュールによって提供される前記オープンフローデータフローの前記メトリックを用いて、要求された前記ＯＡＭ機能を実行し、要求された前記ＯＡＭ機能の結果を返すように構成され、
前記メッセージ相関モジュールは、ＯＡＭモジュールに通信可能に連結され、前記メッセージ相関モジュールは、前記オープンフロースイッチのサブセットから複数の監視応答メッセージを受信するように構成され、前記複数の監視応答メッセージの各々は、前記オープンフローデータフローのための前記メトリックを含み、前記メッセージ相関モジュールは、前記複数の監視応答メッセージを前記ＯＡＭ機能要求と関連付けるように構成される、
ネットワークエレメント。
【請求項１１】
前記ＯＡＭモジュールは、さらに、前記オープンフロースイッチによって前記オープンフローデータフローと共に転送されるべきＯＡＭパケットを定義するように構成される、請求項１０に記載のネットワークエレメント。
【請求項１２】
前記ＯＡＭモジュールは、さらに、前記オープンフロースイッチ内のオープンフロースイッチモジュールのフローテーブルまたはグループテーブルのための処理を定義するように構成される、請求項１０に記載のネットワークエレメント。
【請求項１３】
前記ＯＡＭモジュールは、さらに、前記オープンフロースイッチのプロトコルエージェントによって報告されるべき前記メトリックを定義するように構成される、請求項１０に記載のネットワークエレメント。
【請求項１４】
前記ＯＡＭモジュールは、さらに、前記監視応答メッセージ内の前記ＯＡＭデータパケットを用いて、前記監視応答メッセージを要求された前記ＯＡＭ機能と照合するように構成される、請求項１０に記載のネットワークエレメント。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１１年７月８日に出願された、“CONTROLLER DRIVEN OAM FOR OPENFLOW”と題する米国仮特許出願第６１／５０５，６１７号の優先権を主張する。
【０００２】
本発明の実施形態は、オープンフローのための保守運用管理（ＯＡＭ:operations, administration and management）機能の実装に関する。特に、本発明の実施形態は、オープンフローコントローラにおいて、ＯＡＭ機能を提供するためのオープンフローのデータフロー監視、及びメトリック収集を開始するための方法及びシステムに関する。
【背景技術】
【０００３】
同じボックス（box）（ネットワークエレメント）の中で（データ）転送プレーンと制御プレーンの両方を統合する、従来のネットワークアーキテクチャとは異なり、スプリット（split）アーキテクチャのネットワークは、これら２つのプレーンを分離し、転送要素（スイッチ）から物理的に異なる場所にある可能性があるサーバ上で制御プレーンを実行する。ネットワーク内でスプリットアーキテクチャを用いると、転送プレーンを実装するスイッチを簡素化することができ、スイッチを監督するある数のコントローラの中にネットワークの知能部（intelligence）がシフトする。
【０００４】
従来のアーキテクチャにおいては、転送プレーンと制御プレーンを密接に連結すると、通常、制御プレーンは非常に複雑になり、ネットワーク管理が困難となる。このことが、新しいプロトコルと技術開発に対し、大きな負荷と高い障壁をもたらすことは知られている。回線速度、ポート密度、及び性能の急速な改善にも関わらず、ネットワーク制御プレーンのメカニズムは、転送プレーンのメカニズムよりもはるかに遅いペースで進歩している。
【０００５】
スプリットアーキテクチャネットワークにおいては、コントローラは、スイッチから情報を収集し、適切な転送決定を算出し、スイッチに分配する。コントローラとスイッチは、通信及び情報交換のためにプロトコルを用いる。このようなプロトコルの一例が、スイッチがコントローラと通信するためのオープンかつ標準化された方法を提供するオープンフロー（OpenFlow（www.openflow.orgを参照））であり、研究者と産業界の双方から大きな関心を集めている。
【発明の概要】
【課題を解決するための手段】
【０００６】
オープンフローコントローラを実装するネットワークエレメントによって実行される方法であって、オープンフローコントローラは、保守運用管理（ＯＡＭ：operations, administration and management）モジュールを含む。オープンフローを実装するネットワークにおいて、ＯＡＭモジュールは、ＯＡＭ機能要求にサービスする。当該方法は、ネットワーク内のオープンフロースイッチのサブセットが、要求されたＯＡＭ機能を実行するための情報をＯＡＭモジュールに提供するために、オープンフローデータフローのためのメトリックを報告することを要求する。当該方法は、ネットワークエレメントのＯＡＭモジュールによって、ＯＡＭ機能を実行するための要求を受信するステップと、ＯＡＭモジュールによって監視トリガメッセージを生成するステップであって、監視トリガメッセージは、オープンフロースイッチのサブセット内のオープンフロースイッチによって実行されるべきアクションを定義し、当該アクションは、オープンフローデータフローのためのメトリックを提供することであり、監視トリガメッセージをオープンフロースイッチに送信するステップと、オープンフロースイッチのサブセットから複数の監視応答メッセージを受信するステップであって、複数の監視応答メッセージの各々は、オープンフローデータフローのためのメトリックを含み、複数の監視応答メッセージをＯＡＭ機能要求と関連付けるステップと、ＯＡＭモジュールによって、オープンフローデータフローのメトリックを用いて、要求されたＯＡＭ機能を実行するステップと、要求されたＯＡＭ機能の結果を返すステップと、を含む。
【０００７】
オープンフロースイッチを実装するネットワークエレメントによって実行される方法であって、オープンフロースイッチは、プロトコルエージェント及びオープンフロースイッチモジュールを含む。オープンフロースイッチは、オープンフローデータフローのためのメトリックをオープンフローコントローラに報告し、メトリックは、オープンフローコントローラの保守運用管理（ＯＡＭ：operations, administration and management）機能を支援する。オープンフロースイッチは、ＯＡＭパケットをオープンフローデータフローとともに転送し、オープンフローデータフローのためのメトリックを収集する。当該方法は、オープンフロースイッチによって、オープンフローコントローラから監視トリガメッセージを受信するステップと、プロトコルエージェントによってＯＡＭパケットを生成するステップであって、ＯＡＭパケットは、監視トリガメッセージによって定義され、ＯＡＭパケットをオープンフローデータフローと集約するために、オープンフロースイッチモジュールを経由してＯＡＭパケットを転送するステップと、オープンフロースイッチモジュールにおいてＯＡＭパケットを検出するステップと、プロトコルエージェントによって、ＯＡＭパケットの検出に応じて監視応答メッセージを生成するステップと、オープンフローデータフロー及びＯＡＭデータパケットのためにオープンフロースイッチモジュールからメトリックを収集するステップと、メトリックとともに監視応答メッセージをオープンフローコントローラに送信するステップと、を含む。
【０００８】
ネットワークエレメントは、オープンフローコントローラを実装する。オープンフローコントローラは、オープンフローを実装するネットワークにおいてＯＡＭ機能要求にサービスする。オープンフローコントローラは、ネットワーク内のオープンフロースイッチのサブセットが、要求されたＯＡＭ機能を実行するための情報を提供するために、オープンフローデータフローのためのメトリックを報告するように要求する。ネットワークエレメントは、保守運用管理（ＯＡＭ：operations, administration and management）モジュール及びメッセージ相関モジュールを含むオープンフローコントローラを含む。ＯＡＭモジュールは、ＯＡＭ機能要求によって特定されるＯＡＭ機能を実行することにより、ＯＡＭ機能要求を処理し、監視トリガメッセージを生成するように構成され、監視トリガメッセージは、オープンフロースイッチのサブセット内のオープンフロースイッチによって実行されるべきアクションを定義し、当該アクションは、オープンフローデータフローのためのメトリックを提供するためのものであり、ＯＡＭモジュールは、監視トリガメッセージをオープンフロースイッチに送信し、メッセージ相関モジュールによって提供されるオープンフローデータフローのメトリックを用いて、要求されたＯＡＭ機能を実行し、要求されたＯＡＭ機能の結果を返すように構成される。メッセージ相関モジュールは、ＯＡＭモジュールと通信可能に連結される。メッセージ相関モジュールは、オープンフロースイッチのサブセットから複数の監視応答メッセージを受信するように構成され、複数の監視応答メッセージの各々は、オープンフローデータフローのためのメトリックを含み、メッセージ相関モジュールは、複数の監視応答メッセージをＯＡＭ機能要求と関連付ける。
【図面の簡単な説明】
【０００９】
本発明は、添付図面の図において、限定としてではなく例として図示され、同種の参照符号は同様の要素を示す。本開示中の一実施形態に対する異なる参照符号は、必ずしも同一の実施形態に対してではなく、そのような参照部号は、少なくとも一つを意味することに留意すべきである。さらに、特定の特徴、構造または特性がある実施形態と関連付けて説明されているとき、明示的に説明されているか否かにかかわらず、他の実施形態と関連においてそのような特徴、構造または特性を作用させることは、当業者の知識の範囲内であると考えられる。
【００１０】
【図１】単純なオープンフローネットワークの一例のアーキテクチャの一実施形態の図である。
【図２】汎用的なパケット監視メカニズム及び処理を実行するネットワークエレメントの一実施形態の図である
【図３Ａ】オープンフロースイッチモジュールの第１実施形態の図である。
【図３Ｂ】オープンフロースイッチモジュールの第２実施形態の図である。
【図４】オープンフローマッチング構造の図である。
【図５】オープンフローメッセージフォーマットを切り替えるためのコントローラの一実施形態の図である。
【図６】注入アクションフォーマットの一実施形態の図である。
【図７Ａ】オープンフロースイッチモジュールによってオープンフローＯＡＭパケットを挿入するための処理の一実施形態のフローチャートである。
【図７Ｂ】ネットワークエレメントの仮想ポートによってオープンフローＯＡＭパケットを準備するための処理の一実施形態のフローチャートである。
【図８】逆多重化するための処理の一実施形態のフローチャートである。
【図９】ＯＡＭをサポートするオープンフローネットワークの一実施形態の図である。
【図１０】監視トリガメッセージの例示的実施形態の図である。
【図１１】ＯＡＭ機能要求処理のための処理の一実施形態のフローチャートである。
【図１２】監視報告メッセージの一例の実施形態の図である。
【図１３】監視報告メッセージの一例の実施形態の図である。
【図１４】オープンフロースイッチにおけるＯＡＭサポートのための処理の一実施形態のフローチャートである。
【発明を実施するための形態】
【００１１】
以下の説明において、多くの具体的詳細が記載されている。しかしながら、本発明の実施形態は、これらの具体的詳細なしに実施されうることと理解されたい。他の例において、周知の回路、構造及び技術は、この説明の理解を曖昧にしないために詳細には示されない。本発明は、このような具体的詳細なしに実施できることが、当業者によって、理解されよう。当業者は、含まれる説明を用いて、過度の実験なしに適切な機能を実現することができるであろう。
【００１２】
図に示された技術は、１以上の電子機器（例えば、エンドステーション、ネットワークエレメント、サーバ、または類似の電子機器）上に格納され、実行されたコード及びデータを用いて実装することができる。このような電子機器は、機械読み取り可能な、またはコンピュータ読み取り可能な非一時的記憶媒体（例えば、磁気ディスク、光磁気ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリ装置及び相変化メモリ）などの、機械読み取り可能な、またはコンピュータ読み取り可能な非一時的媒体を使用して、コード及びデータを格納し、（内部で、及び／またはネットワークを介して他の電子機器との間で）通信する。さらに、このような電子機器は、一般に、１以上の記憶装置、ユーザ入力／出力装置（例えば、キーボード、タッチスクリーン、及び／またはディスプレイ）及びネットワーク接続などの、１以上の他の構成要素と連結された１以上のプロセッサ一式を含む。プロセッサ一式と他の構成要素の連結は、一般に、１以上のバス及びブリッジ（バスコントローラとも呼ばれる）を通じて行われる。記憶装置は、１以上の機械読み取り可能な、またはコンピュータ読み取り可能な非一時的記憶媒体、及び機械読み取り可能な、またはコンピュータ読み取り可能な非一時的通信媒体を意味する。したがって、所定の電子機器の記憶装置は、一般に、当該電子機器の１以上のプロセッサ一式上で実行するためのコード及び／またはデータを格納する。当然ながら、本発明の実施形態の１以上の部分は、ソフトウェア、ファームウェア、及び／またはハードウェアの異なる組み合わせを用いて実現されてもよい。
【００１３】
本明細書において、ネットワークエレメント（例えば、ルータ、スイッチ、ブリッジ、または類似のネットワーク機器）は、ネットワーク上で他の装置を通信可能に相互接続するハードウェア及びソフトウェアを含むネットワーク機器（例えば、他のネットワークエレメント、エンドステーション、または類似のネットワーク機器）の一つである。ネットワークエレメントの中には、複数のネットワーク機能（例えば、ルーティング、ブリッジング、スイッチング、レイヤ２アグリゲーション、セッションボーダーコントロール、マルチキャスト、及び／または加入者管理）のサポートを提供し、及び／または複数のアプリケーションサービス（例えば、データ収集）のサポートを提供する「マルチサービスネットワークエレメント」もある。
【００１４】
以下の説明及び特許請求の範囲において、「連結された」及び「接続された」という用語は、それらの派生語と同様、使用することができる。これらの用語は互いに同義語として意味しないことを理解すべきである。「連結された」は、直接物理的に、または電気的に互いに接触し、協働し、または互いに相互作用していてもいなくてもよい、２以上の要素を示すために使用される。「接続された」は、互いに連結された２以上の要素の間の通信の確立を示すために使用される。
【００１５】
本発明の実施形態は、従来技術の短所を回避するための方法及びシステムを提供する。オープンフローと組み合わせて使用される、イーサネットまたはマルチプロトコルラベルスイッチング（MPLS）などのほとんどのデータプレーン技術は、これらの技術に固有のＯＡＭソリューションを定義した。これらのデータプレーン技術によって定義されるＯＡＭソリューションは、データフローへの／からのＯＡＭパケットの識別（identify）、注入（inject）及び逆多重化（de-multiplex）のためのメカニズムを提供する。また、これらのＯＡＭソリューションは、ＯＡＭパケットのための正確なフェイトシェアリングを保証しており、フェイトシェアリングでは、サービスパケットがネットワークを経由して転送されるのと同じ形でＯＡＭパケットが転送される。しかし、オープンフローは、ＯＡＭパケットを識別し、注入し、または逆多重化することを可能とするいかなるメカニズムもサポートしていない。このことは、オープンフロードメイン内のいかなるＯＡＭソリューションの実装をも、不可能にしている。オープンフローで使用されるＯＡＭ技術のためのフェイトシェアリングを実装することにより、ＯｐｅｎＦｌｏｗ１．１の仕様でサポートされていないＯＡＭパケットの識別について、特別な考慮が必要となる。
【００１６】
さらに、オープンフロー１．１は、ＯＡＭ機能を実行するオープンフロースイッチを構成するためのいかなる手段も定義していない。オープンフロースイッチに設定情報を送信するための確立された制御メッセージも、オープンフロースイッチでＯＡＭ関連機能をアクティブ化するためのいかなる制御メッセージもない。同様に、オープンフロースイッチからＯＡＭに関するデータを受信するための制御メッセージは存在しない。オープンフローにおいていかなるＯＡＭサポートもされていないことにより、イーサネットとＭＰＬＳのような他のデータプレーン技術のＯＡＭ機能を完全に実装するようにオープンフロースイッチを実装するネットワークエレメントが必要となり、これはネットワークエレメントのコストを増加させる。
【００１７】
本発明の実施形態は、これらの従来技術の短所を克服する。本発明の実施形態は、ＯＡＭパケット（すなわち、タグ付きフレーム）がオープンフローデータフローに挿入され、オープンフローデータフローから逆多重化されることを可能にするための処理及びシステムを提供する。当該処理及びシステムは、オープンフローＯＡＭパケットが、データフローの発信元と目的地の間のネットワークを経由して、データフロー（すなわち、データストリーム）の他のデータパケットと同一の経路をとることを保証する、オープンフローＯＡＭパケットのためのフェイトシェアリングをサポートする。オープンフローＯＡＭパケット（すなわち、タグ付きフレーム）を他のオープンフローデータパケットと区別するために、オープンフローデータパケットのハンドリングのための照合時には考慮されていないマッチングフィールドが、ＯＡＭパケットを識別するのに利用される。選択されたフィールドのドメインの未割り当ての値は、ＯＡＭパケット（タグ付きフレーム）を識別するために使用される。パケット処理パイプラインの任意の段階にＯＡＭパケット（タグ付きフレーム）を挿入するために、オープンフロースイッチモジュールに新しい論理モジュールが追加される。新しい論理モジュールは、「パケット注入ロジック」（PIL）と呼ばれる。例示する２つの実装オプションが、本明細書に記載されている。最初の例の実装では、ＰＩＬは、ＯＡＭパケット（タグ付きフレーム）の注入をパケット単位で管理するように構成され、例示する第２の実施形態においては、ＰＩＬは、ＯＡＭパケットに付加されたメタデータを介して、ネットワークエレメントの他のスイッチモジュールからＯＡＭパケット（タグ付きフレーム）の注入を指示する命令を受信する。他の例示する実施形態では、逆多重化処理が、スイッチ内及び／またはコントローラ終端のオプションを用いて、オープンフローデータパケットとオープンフローＯＡＭパケット（タグ付きフレーム）を区別する。オープンフロープロトコルは、オープンフローＯＡＭパケットの識別、注入及び逆多重化に関連するＰＩＬの遠隔命令をサポートするために拡張される。
【００１８】
加えて、本発明の実施形態は、オープンフロースイッチにおいて、オープンフローコントローラからの制御メッセージに応じてオープンフローデータフローの監視及びパフォーマンス測定の収集を開始し、オープンフローコントローラにおいて、ドメイン内の全てのオープンフロースイッチから監視及び測定結果を収集し、これらの結果を処理し、集中型オープンフローコントローラにおいてこれらの結果に基づいて次のアクションを開始する処理を含む、全てのＯＡＭ関連の知能部を実装する。オープンフロースイッチは、十分なメトリック情報をオープンフローコントローラに提供するために、基本的かつ汎用的な特徴のみを実装する。
【００１９】
オープンフローコントローラは、オープンフローデータフローが横断している第１のオープンフロースイッチに、ＯＡＭパケットを送信することを指示し、第１のオープンフロースイッチに、転送しているＯＡＭパケットと、関連するオープンフローデータフローに関するデータを収集するように指示することによって、オープンフローデータフローの監視を開始する。オープンフローコントローラからの指示に応答して、オープンフロースイッチによって生成されたＯＡＭパケットに関し、第１のオープンフロースイッチは、オープンフローコントローラにフィードバックを送信する。フィードバックは、ＯＡＭパケット上で一致するフローまたはグループテーブルエントリ、一致するエントリのカウンタの値、一致のタイムスタンプ、または類似の情報を含むことができる。ＯＡＭパケットを受信したら、フィードバックをオープンフローコントローラに送信するようにあらかじめ構成されている場合は、オープンフローデータフローによって横断されるその他のオープンフロースイッチもまた、同様のフィードバックをオープンフローコントローラに送信することができる。
【００２０】
ＯＡＭパケットの監視に関連するオープンフロースイッチによって提供されるフィードバック情報と、関連するオープンフローデータフローを使用して、オープンフローコントローラは、任意のオープンフローデータフローのための接続性検証（ＣＶ）、リンク追跡（ＬＴ）、遅延測定（ＤＭ）、損失測定（ＬＭ）のような標準的なＯＡＭ機能を実装することができる。
【００２１】
オープンフローアーキテクチャ
図１は、スイッチとコントローラの間のオープンフローインタフェースの概要を示す図である。オープンフローは、パケット処理パイプラインを生成するためのフローテーブルの形式で、汎用的なテーブルベースのモデルを用いる論理スイッチのパケット転送を定義し、処理する機能を含む論理スイッチモデルを定義する。このテーブルモデルで定義されたテーブルは、各行がルール、アクション及びカウンタの３つのフィールドを持つパケット処理選択肢を記述した行を含む。ルールは、アクションが実行される状況を指定する。アクションが適用されるそれぞれの場合に、対応するカウンタが更新される。
【００２２】
オープンフロー１．１の仕様では、２つのテーブルの種類、フローテーブルとグループテーブルが定義されている。フローテーブルでは、ルールフィールドには、ヘッダからの属性のベクトルが含まれている。このベクトルは、イーサネット、ＭＰＬＳ、ＩＰ及びＴＣＰ／ＵＤＰのヘッダの変数を含む。グループテーブルのルールは、パケットに対して実行すべきアクションのリスト内で、アクションを識別するインデックスである。グループテーブルは、それによってマルチキャスト及び保護などの複雑なアクションをサポートしている。
【００２３】
パケット処理パイプラインは、フローテーブルのシーケンスに続く１つのグループテーブルによって形成される。スイッチに入るあらゆるパケットが、自動的に第１のフローテーブルに従って処理される。第１のフローテーブル内のパケットを照合した結果、パケットは更新することができ、ポートを経由して送信されるか、またはさらなる処理のために後続のテーブルに送信される。メタデータは、各フローテーブル内の処理中にパケットに割り当てられ、後続のテーブルに渡されることができる。パケットが後続のテーブルに送信される場合、そのフローテーブルに従って処理される。パケットは、パイプライン内の各テーブルによって処理されることができ、またはそれによって中間テーブルの処理をバイパスするパイプライン内のポートまたは任意の特定のテーブルに転送されることができる。
【００２４】
パケット処理パイプライン内の最後のテーブルは、グループテーブルである。グループテーブルは、グループエントリで構成されている。特定のデータフロー（すなわち、特定のフロー）内のパケットの、グループをポインティングする能力は、そのフロー（例：選択、全て、高速フェイルオーバー、及び同様のアクション）のパケットを転送する追加の方法をオープンフローが表現することを可能にする。グループテーブルエントリに関連付けられたアクション・バケットがあり、各アクション・バケットには、実行するアクションの集合が含まれている。グループテーブルエントリはどのアクション・バケットを実行すべきかを決定し、アクションの候補はフローテーブルで定義されたものと類似している。
【００２５】
スプリットアーキテクチャの分離された制御プラットフォームは、ネットワーク制御ロジックを変更する作業を容易にし、開発者が、多種多様な新しいプロトコルや管理アプリケーションを構築することができるプログラムインタフェースを提供する。このモデルでは、データプレーンエレメントのコストを低減しつつ、データプレーン及び制御プレーンは、独立して発展し、拡張できる。
【００２６】
ネットワークエレメントアーキテクチャ
本発明の実施形態は、例えばインターネットなどのワイドエリアネットワーク、又は類似のネットワーク内のルータやスイッチなどのネットワークエレメントにおいて、実装されている。例示するネットワークエレメントが、図２に示されている。ネットワークエレメント２０１は、着信（incoming）物理ポート２２１から受信され、発信（outgoing）物理ポート２２３によって送信されるパケットを処理するネットワークプロセッサ２０３を含むことができ、各ポートは、１のネットワークまたはネットワークの集合にネットワークエレメントを接続する。本明細書中で使用される「集合」は、１の項目を含む任意の正の整数の項目を指す。
【００２７】
着信物理ポート２２１及び発信物理ポート２２３は、物理及びリンクレベルのデータ処理を管理する。着信物理ポート２２１は、フレーミングまたは類似の着信信号処理、及び更なる処理のためにこのデータをネットワークプロセッサ２０３に提供することにより、物理及びリンクレベルでの着信データトラフィックを処理する。同様に、発信物理ポート２２３は、デフレーミングまたは接続されたネットワークを通じて他の機器に送信する類似の処理により、物理及びリンクレベルにおいて発信データトラフィックを処理する。これら２つのポートの集合は、共に、いくつものリンクまたはリンクの組み合わせを用いるネットワークを通じて、いくつもの他の機器と通信することができるようにする働きをする。
【００２８】
ネットワークプロセッサ２０３は、他のコンポーネントの間でスイッチモジュール、仮想ポート及びプロトコルエージェントの集合を含むことができる。他のコンポーネントは、明確化のために省略されている一方、オープンフローＯＡＭ処理の理解に関連するこれらのコンポーネントは、図示及び記載されている。スイッチモジュールは、非オープンフロースイッチモジュール２０５とオープンフロースイッチモジュール２０９を含むことができる。非オープンフロースイッチモジュール２０５は、例えば、ＯＡＭフレームの生成または終端を含む、データパケットの転送及び処理プロセス専用の任意数のモジュールでありうる。オープンフロースイッチモジュール２０９は、図３Ａ及び図３Ｂに関してさらに詳細に本明細書に記載されている。オープンフロースイッチモジュール２０９は、フローテーブルを実装し、全てのオープンフローデータパケットの転送及び処理を管理する。
【００２９】
オープンフロープロトコルエージェント２０７は、ネットワークエレメント２０１とコントローラとの間の通信を管理する。オープンフロープロトコルエージェント２０７は、オープンフローコントローラから受信したオープンフロー制御メッセージを処理し、必要に応じて、コントローラへのオープンフローメッセージを生成する。オープンフロープロトコルエージェント２０７は、データフローにＯＡＭパケットを挿入するために、コンフィギュレーションメッセージを受信するためのサポートを含むことができ、処理のためにオープンフローコントローラに、受信されたＯＡＭパケットを送信するためのサポートを含むことができる。
【００３０】
一実施形態では、仮想ポート２１１Ａ及び２１１Ｂは、任意で、ネットワークエレメント２０１によって受信されたＯＡＭパケットの前処理を提供することができる。ＯＡＭパケットは、これらのＯＡＭパケットのメタデータを処理し、更新するためにこれらの仮想ポートに向けられることができる。一実施形態では、ＯＡＭパケットは、当該ＯＡＭパケットのソースによってこれらの仮想ポートに向けられることができ、その場合、オープンフロースイッチモジュールによる適切な転送または処理を保証するために、ＯＡＭパケットのメタデータがソースにより指示される通りにポートにより更新される
【００３１】
別の実施形態では、仮想ポート２１１Ａ及び２１１Ｂは、その仮想ポートに固有の方法でメタデータを変更または更新する。本実施形態では、ＯＡＭパケットのソースは、その仮想ポートにとって既知の方法で処理されるように、仮想ポートへＯＡＭパケットを向かわせる。
【００３２】
パケット識別
本発明の実施形態は、オープンフロースイッチ内のオープンフローデータフローの特定のパケットを識別するための汎用的な構成方法を記載しており、その方法は、それらのパケットの識別を可能にし、データフローに属するパケットとのフェイトシェアリングを保証する。
【００３３】
オープンフローデータフローにおけるＯＡＭパケットのような特定のパケットを識別するために、本発明の実施形態は、照合の間に利用されない（すなわち、データパケットがどのようにネットワークをわたって転送されるかを決定するとき考慮されない）オープンフローデータパケット内のフィールドを利用する。このようなフィールドは、ワイルドカードまたはワイルドカードのフィールドと呼ばれる。これらのフィールドは、オープンフロースイッチによって、データフロー内の他のデータパケットから特定のパケットを識別するために使用することができる。オープンフローパケットの任意数のこれらのフィールドまたはこれらのフィールドの組み合わせは、データフローの識別においてまたは転送の決定を行うために考慮されるのではない限り、照合フィールドとして選択されることができる。選択された照合フィールドのドメインに置かれたときに、ＯＡＭパケットを識別するために用いられる値は、いかなる有効なデータパケットでも使用されていない、任意の値でありうる。
【００３４】
図４は、データパケットまたはデータフレームを包含する例示的なオープンフローマッチング構造の図である。図示された例では、ワイルドカードセクション及びフィールドは、イーサネット及び／またはＩＰフローの実施例の場合には、（タグ付きパケットと呼ばれる）特定のパケットを識別するために使用されることができる。これらの実施例は、他のフィールドの使用を排除するものではなく、例えば、優先度フィールドは、タグ付けにも使用することができることに留意されたい。
【００３５】
パケット注入
一実施形態では、そのオープンフローコントローラまたは他のソースによってＯＡＭパケットのようなパケット（タグ付きパケットと称する）をデータフローに注入するよう指示される任意のオープンフロースイッチは、オープンフローの転送メカニズムの一部でないかもしれないエンティティ（すなわち、ソース）によって生成された、注入されるべきパケットを扱っている。そのようなエンティティは、例えば、スイッチ（例えば、非オープンフロースイッチモジュール２０５）またはオープンフローコントローラに接続された外部のＯＡＭモジュールでありうる。そのようなエンティティによって生成されたタグ付きパケットは、仮想ポートを経由して、オープンフロースイッチモジュールによって受信されることができる。一実施形態では、物理的または仮想ポートを経由してオープンフロースイッチモジュールに入る全てのパケットは、全パケット処理パイプラインを経由して送信されなければならない。
【００３６】
図３Ａ及び３Ｂは、オープンフロースイッチモジュールにおけるオープンフローＯＡＭパケットの処理、注入及び検出の２つの例示的な実施形態の図である。これらの例示的なオープンフロースイッチモジュールによって実装されるプロセスは、各々が第１のフローテーブルにおけるデータの初期処理で始まる。図３Ａに示される一構成例では、様々な小さいフローのデータパケットは、共通のより大きなフローの中に集約されることができる。フローエントリは、それぞれの小さいフローのフローテーブルに定義され、これらのエントリのアクションは、データパケットの更新が新たな集約されたフローに適合するように指示する。第２のフローエントリは、共通のフローを記述する後続のテーブルに配備されることができる。
【００３７】
例示する本発明の実施形態は、新しいモジュール、パケットインジェクトロジック（ＰＩＬ）３０１をオープンフロースイッチモジュール１０９に追加し、それは、パケット処理パイプラインの前に配置される。ＰＩＬ３０１は、ＰＩＬ３０１の後の最初のテーブルで始まるデフォルトの処理パイプラインを経由してデータパケットを送信するか、またはパイプライン内の後続のフローテーブルにデータパケットを挿入するかどうかを決定するために、受信したデータパケット、またはデータパケットの内容のそれぞれに関連付けられたメタデータをチェックする。この後者の場合、ＰＩＬ３０１は、後続のテーブル内を照合する時に考慮することができるメタデータを定義する（すなわち、データパケットにメタデータを書き込む）こともできる。
【００３８】
図３Ａの第１の実施形態では、ＰＩＬ３０１は、ＰＩＬ分析ベースのデータパケット処理プロセスを実装するために、オープンフロー１．１の拡張可能なマッチング機能を利用する。ＰＩＬモジュール３０１は、第１のフローテーブルによって実装され、他のフローテーブルは、次の後続のフローテーブルにシフトされる。例えば、第１のフローテーブルは、実際には第２のフローテーブルなどによって実装されている。各フローテーブルによって実行される照合は、考慮することができるパケットデータ及び／またはデータパケットのヘッダフィールドとともに提供されるメタデータを調べる。この後者の場合、標準的な照合タイプを所望のパケットフィールドと一致させることができない場合には、新たな照合タイプが定義されることができる。この例示的なＰＩＬ分析の実施形態では、そのテーブルのためのデフォルトのアクション（つまり、一致しないパケットにすべきこと）は、これらの一致しないパケットを次のテーブルに送信することであるが、新たなＰＩＬマッチングテーブル３０３は、後のパイプラインステージに挿入すべき全てのパケットをリストにする。
【００３９】
図３Ｂに示された第２の例示的な実施形態では、ＰＩＬモジュール３０１は、メタデータ指向のデータパケット処理プロセスを実装する。ＰＩＬモジュール３０１は、データパケットと一緒に渡されるメタデータを受信し、このメタデータは、共通のデータフローに含まれなければならないパケットを、パイプラインステージで明示的に決定する。本実施形態では、ＰＩＬモジュール３０１は、各データパケットのメタデータを読み出し、共通のフローにデータパケットを結合するために適切なフローテーブルまたはグループテーブルにデータパケットを渡す。この例示的なメタデータ指向のパケット処理の実施形態において、メタデータまたはパケットデータは、（１）データパケットが転送されるフローテーブルの識別子（オープンフロー１．１によれば０〜２５５）である属性のような属性を任意数含むことができる。パケットがグループテーブルに直接送信される場合、属性は、（２）フローテーブルのＩＤドメインの範囲外の値（例えば、オープンフロー１．１の場合は２５６）にセットされるテーブルＩＤでありうる。他の属性は、（３）テーブルＩＤがグループテーブル定数に設定されることができる（それ以外の場合は考慮されなくてもよい）グループＩＤと、他の（４）照合する時に使用するメタデータとを含むことができる。
【００４０】
図３Ａに示す第１の例示的なＰＩＬ分析ベースの実施形態を実現するために、オープンフローＯＡＭパケット（タグ付きパケット）の内容は、ＯＡＭパケットをどのように処理するかを決定するために利用（すなわち、照合に使用）されている。ＯＡＭパケットの場合、ＯＡＭパケットの内容は、適切なテーブルまたはグループを選択するためにチェックされる（例えば、ＭＥＰ  ＩＤ）必要がある。これらのフィールドについて照合を行うために、オープンフロースイッチモジュールは、新しい照合タイプを実装することができる。さらに、これらの新たな照合タイプは、タグ付きパケットのタイプに固有である。いくつかの限定されたシナリオでは、現在のスイッチの実装は、重大なハードウェアの更新をせずにパケット注入をサポートすることができる。むしろ、本明細書で説明される機能は、標準的なフローテーブル処理を移行し、第一のフローテーブル内にＰＩＬを挿入するようにオープンフロースイッチモジュール１０９を構成することによって、一部または全部をソフトウェア構成で実装することができる。
【００４１】
図３Ｂに示される第２のメタデータ指向の実装では、オープンフロースイッチモジュール１０９の拡張が必要である。しかし、これらの拡張機能は、ソリューション固有のものではない。パケットをどうするかについての決定は、実際にオープンフロースイッチモジュール外部のモジュールによって決定されるため、ＰＩＬモジュール３０１を含むようにオープンフロースイッチモジュールを変更することは、全てのシナリオについて汎用的なことでありうる。
【００４２】
オープンフロースイッチモジュール１０９の構成に関して、図３Ａの第１のＰＩＬ分析ベースの実施形態では、第１のテーブル（すなわち、ＰＩＬモジュール３０１）を継続的にメンテナンスし、構成する必要がある。ＰＩＬモジュール３０１内にタグ付きパケットの新しいクラスを挿入するためには、タグ付きパケットの新しいクラスを照合し処理するための適切なフロールールで、第１のテーブルを拡張する必要がある。図３Ｂの第２のメタデータ指向の実装では、継続的な構成管理を行う必要がない。
【００４３】
仮想ポート
図３Ａ及び３Ｂに示す実装の両方は、何らかの情報がＰＩＬによって処理されるデータパケットにメタデータとして提供され付加されることを前提としており、そのメタデータは物理ポートまたは仮想ポートによって提供され、当該物理ポートまたは仮想ポートから当該データパケットがオープンフロースイッチモジュールによって受信される。一実施形態において、物理ポートまたは仮想ポートは、ポートがオープンフロースイッチモジュールにデータパケットとともにメタデータを渡すことができ、オープンフロースイッチモジュール内のＰＩＬが、パケット処理中に受信したメタデータを解釈することができるものとなるように拡張される。物理ポートまたは仮想ポートによってメタデータ内に置かれるそのような情報のソースに応じて、２つの代替的な実施形態は、外部ソースの実施形態と内部定義の実施形態を区別している。
【００４４】
外部ソースの実施形態において、メタデータは、パケットのソース、例えば、オープンフローコントローラによって生成される。この場合、仮想ポートは、ソースによって提供されるメタデータを、オープンフロースイッチモジュールに渡されるデータパケットのメタデータへコピーする。この外部ソースの実施形態は、既存のオープンフロー仮想ポートを構成する手続きのいかなる構成の更新も必要としない。
【００４５】
内部定義の実施形態では、データパケットのためのメタデータは、仮想ポート自体によって生成される。本実施形態では、メタデータの定義の粒度は、受信仮想ポートに関係し、すなわち、同一の仮想ポートからの全てのパケットが同様に扱われ、各データパケットは、同一のメタデータを与えられ、その結果、パイプラインの同一ステージにＰＩＬによって注入される。これらの仮想ポートの構成は、オープンフローコントローラで管理される専門的なプロセスまたはプロトコルでありうる。
【００４６】
ＯＡＭパケットの処理に関しては、オープンフローコントローラは、ＯＡＭ（タグ付き）パケットのソースのうちの１つである。例えば、オープンフローコントローラは、オープンフローデータフローが適切に構成されているかどうかを確認することができる。システムがメタデータ指向のパケット処理の実施形態を利用する場合、データパケットのソースは、同様に、メタデータを提供しなければならない。オープンフローコントローラがこの要件を満たすようにするには、オープンフロープロトコルは、以下に記載されるように拡張することができる。
【００４７】
コントローラにより生成されるタグ付きパケットのためのオープンフローメッセージオプション
新しいオープンフローメッセージのオプションは、次のフィールドを含む新規のオープンフローコントローラとスイッチ間のメッセージを定義する。（１）オープンフロープロトコルのバージョン、タイプ及びメッセージとトランザクション識別子の長さをエンコードした、共通のオープンフローヘッダ、（２）入力ポート（in_port）として照合時に考慮される、着信ポートの識別子、（３）有効なテーブルインデックスまたはＧＲＯＵＰ＿ＴＡＢＬＥ定数のいずれかに設定されることができる、パケットが注入されるスタートテーブルインデックス、（４）スタートテーブルインデックスをＧＲＯＵＰ＿ＴＡＢＬＥ定数に設定した場合は有効であり、そうでない場合はコントローラによって０に設定され、スイッチに無視されるグループ識別子、（５）照合の間使用されるメタデータ、及び（６）挿入されるＯＡＭパケット。このメッセージの例示的なレイアウトが、図５に示されている。
【００４８】
ＧＲＯＵＰ＿ＴＡＢＬＥ定数は、衝突を避けるためにインデックスが付与された、有効なフローテーブルの範囲外である必要がある。オープンフロー１．１では、フローテーブルは、０から２５５までのインデックスが付与されている。したがって、ＧＲＯＵＰ＿ＴＡＢＬＥは、２５５より大きい任意の値でありうる。
【００４９】
コントローラにより生成されるタグ付きパケットのためのオープンフローアクションのオプション
本発明の実施形態は、オープンフローフローの監視及び他のＯＡＭ機能の実装に用いる、新しいアクションを定義する。このアクションオプションは、オープンフロー１．１標準によって特定される既存のＰａｃｋｅｔＯｕｔメッセージを使用することができる。標準によると、ＰａｃｋｅｔＯｕｔメッセージは、ＯＦＰＡＴ＿ＯＵＴＰＵＴコマンドを含むことにより、オープンフロースイッチに、処理パイプラインを経由してパケットを送信するように指示することができ、その出力ポートはＯＦＰＰ＿ＴＡＢＬＥ仮想ポートに設定される。しかしながら、コマンドは、パイプラインを経由してパケットが送られることを表すだけであり、オープンフロースイッチモジュールの処理パイプラインのどのステージにおいてそれを挿入すべきかを特定することはできない。本実施形態は、次のフィールドを含む、本明細書においてＯＦＰＡＴ＿ＩＮＪＥＣＴ＿ＰＡＣＫＥＴと呼ばれる新しいアクションを定義する。（１）フローテーブルインデックスまたは（ＧＲＯＵＰ  ＴＡＢＬＥ定数を通じて）利用されるグループテーブルを示すインジケータをエンコードするテーブルインデックス、（２）テーブルインデックスがＧＲＯＵＰ＿ＴＡＢＬＥ定数に設定されている場合は、グループテーブルエントリを識別するグループエントリ識別子、そうでない場合、この値はｎｕｌｌに設定され、オープンフロースイッチモジュールのＰＩＬによって無視されなければならない、（３）処理パイプラインにおけるパケット処理（すなわち、照合）の間使用されるメタデータフィールド。アクションのレイアウトの例が、図６に示されている。
【００５０】
コントローラによる処理パイプラインに、タグ付きパケット（例えば、ＯＡＭパケット）を注入するために、ＰａｃｋｅｔＯｕｔメッセージは、そのアクションフィールドにＯＦＰＡＴ＿ＩＮＪＥＣＴ＿ＰＡＣＫＥＴアクションを含み、ＯＦＰＡＴ＿ＯＵＴＰＵＴアクションを含まないことができる。
【００５１】
図７Ａ及び７Ｂは、それぞれ、上述したパケット注入処理及びシステムを実装する、ＰＩＬモジュール及び仮想ポートの処理の一実施形態を示すフローチャートである。ＰＩＬモジュールに関連して、図７Ａに示すように、処理は、物理ポートまたは仮想ポートからデータパケットを受信することに応答して開始される（ブロック７０１）。ＰＩＬモジュールは、ＰＩＬ解析ベースのパケット処理やメタデータ指向のパケット処理のいずれかを使用して、各着信パケットを検査する。いずれの場合においても、ＰＩＬは、例えば、ＯＡＭパケットのようなデータフローを監視するためのパケットを識別し、共通のデータフローへのデータパケットの挿入を実装するためにデータパケットを転送するパケット処理パイプラインステージを決定するために、パケットデータを照合する（ブロック７０３）。ＰＩＬ分析ベースのプロセスでは、ＰＩＬモジュールは、データパケットの任意のフィールド、上述したマッチング構造全体、またはそれらの任意の組み合わせもしくはサブコンビネーションを含むことができるマッチングルールに基づいて、パイプラインステージを識別する。照合は、ＯＡＭパケットやデータフローを監視するための類似のパケットとしてデータパケットを識別するタグを含むパケットの照合を含む。メタデータ指向の分析では、マッチングルールは、タグに基づいてＯＡＭパケットを識別するが、その後、第一に、オープンフロースイッチがデータパケットを受信するのに経由するポートによって定義されたステージのメタデータ識別子に基づいて転送するために、パイプラインステージを識別する。タグ付けされていないデータパケットは、一般にはパイプラインの次のステージである、デフォルトのパイプラインステージに転送される。
【００５２】
ある実施形態では、決定されたパイプラインステージにデータパケットを転送する前に、マッチングルールと関連付けられたＰＩＬモジュールの動作を、データパケットのメタデータを更新するために実行することができる（ブロック７０５）。メタデータの更新は、それが転送される先のパイプラインステージにおけるデータパケットの処理に影響を与えることができる。メタデータが更新された後、データパケットは、識別されたパイプラインステージ（すなわち、フローテーブルまたはグループテーブル）に転送される（ブロック７０７）。
【００５３】
図７Ｂは、仮想ポートにおける処理パケットの処理を示すフローチャートである。一実施形態において、処理は、コントローラ、またはデータフローに挿入されるデータパケットの類似のソースからのオープンフローパケット注入メッセージの受信に応答して開始される（ブロック７５１）。仮想ポートは、外部ソースベースのプロセスまたは内部定義のプロセスのいずれかを使用して各データパケットを処理することができる。いずれの場合も、仮想ポートは、オープンフローコントローラからの着信メッセージによって指示される通り、データフローに挿入されるデータパケットを生成することができ、オープンフロースイッチモジュールに送信されるデータパケットのためのメタデータを定義する（ブロック７５３）。メタデータは、着信メッセージにおいて定義された情報に基づいて決定されることができ（外部ソースベースのプロセス）、あるいはメッセージが向けられている仮想ポートによって決定されることができる（内部定義のプロセス）。データパケット及びメタデータが、外部ソースベースのプロセスまたは内部定義のプロセスに基づいて生成された後、次いで、データパケット及びメタデータは、オープンフロースイッチモジュールに転送される（ブロック７５５）。
【００５４】
タグ付きパケットの逆多重化処理
逆多重化または除去及び処理方法は、宛先または出口のオープンフロースイッチに実装される処理である。逆多重化処理は、宛先のオープンフロースイッチへのパスに沿って、オープンフローデータフローの監視を可能にする。ＯＡＭパケットなどの監視されたデータパケットを識別する任意のサポートするオープンフロースイッチは、本明細書で出口（egress）オープンフロースイッチと呼ぶ。出口オープンフロースイッチにおいて、２つのフローテーブルエントリが定義されうる。（１）第１のフローテーブルエントリは、タグ付きデータパケットを識別するための基準を定義し、それらの取り扱いを定義し、（２）第２のフローテーブルエントリは、他のデータパケットの取り扱いを定義する。タグ付きパケットの取り扱いは、特定のオープンフローアクションのいずれかによってエンコードされ、またはタグ付きパケットを明確に定義された仮想ポートに送信することによって表されることができる。この後者の場合、タグ付きパケットを仮想ポートに送信することは、タグ付きパケットに関連する情報をエンコードしたオープンフロー制御メッセージをトリガするか、または特定のスイッチモジュールにタグ付きパケットを中継するかのいずれかである。エンコードされた情報を有する制御メッセージは、ＯＡＭ機能を可能にするためにオープンフローコントローラに送信される。タグ付きパケットを処理するための２つの代替的な処理は、さらに以下で述べる。
【００５５】
スイッチ局所終端処理
タグ付きデータパケットを逆多重化する本実施形態では、タグ付きデータパケットまたはフレームは、オープンフロースイッチモジュール及びパイプライン処理から分離された、非オープンフロースイッチモジュールに転送される。非オープンフロースイッチモジュール及びオープンフロースイッチモジュールは、仮想ポートを介して互いに通信することができる。非オープンフロースイッチモジュールは、オープンフロースイッチモジュールにメタデータを渡すことができる。このスイッチ局所終端処理は、オープンフロースイッチモジュールが仮想ポートを経由してメタデータを他のスイッチモジュールに渡すことができることを規定する。メタデータを処理可能な非オープンフロースイッチモジュールが利用できない場合は、その結果、仮想ポートがメタデータを抑制する、すなわち、それを処理することなく廃棄することができる。
【００５６】
コントローラターゲット処理
タグ付きデータパケットを逆多重化する本実施形態では、タグ付きデータパケットがコントローラに中継（すなわち、転送）される。ＰａｃｋｅｔＩｎメッセージは、いかなる変更もなしにこの特徴を実装するのに用いられることができる。しかしながら、ＰａｃｋｅｔＩｎメッセージは、着信ポート（物理及び／または仮想）及びテーブルＩＤのみを運ぶため、データパケットの全てのメタデータをコントローラに渡さない。従って、ＰａｃｋｅｔＩｎメッセージに追加される以下のフィールドは、追加によってこのコントローラターゲット処理をサポートするために定義される。（１）データパケットがフローテーブルまたはグループテーブルによる処理後、受信されたことを示す、グループ／フローテーブル選択フラグ。このグループ／フローテーブルフラグが０に設定されるとき、テーブルＩＤフィールドは、フローテーブルのインデックスを持つ。そうでない場合、テーブルＩＤは、オープンフロースイッチモジュールのＰＩＬによって０に設定されなければならず、コントローラによる処理の間省略されなければならない。（２）パケット処理の間使用されるメタデータフィールドの値を持つ、メタデータフィールド。（３）実行されるグループテーブルエントリの識別子を定義する、グループＩＤフィールド。グループ／フローテーブル選択フラグが１に設定される場合、それは有効な情報を持つ。そうでない場合、このフィールドは、０に設定されなければならず、コントローラによって無視されるべきである。
【００５７】
図８は、逆多重化処理の一実施形態のフローチャートである。一実施形態においては、オープンフロースイッチモジュールでオープンフローデータパケットを受信したことに応答して、処理が開始される（ブロック８０１）。データパケットは、最初に、監視されるデータパケットとしてパケットを識別する指定値に対し、データパケットの指定されたフィールドをチェックすることによって、監視されるパケット（例えば、ＯＡＭパケット）としてパケットの識別子を照合するためにＰＩＬモジュールによって処理される（ブロック８０３）。受信したパケットのヘッダまたはメタデータは、監視されるパケットとしてパケットを識別するのに用いられることができ、マッチング構造全体又はそれらの任意の組み合わせを利用することもできる。一実施形態において、データパケットを受信した仮想ポートは、監視されるデータパケットとしてデータパケットを識別するために、メタデータを変更することができる。分離または結合されたステップとして、データパケットは、データパケットが非オープンフロースイッチモジュールまたはオープンフローコントローラに転送されるべきかどうかを決定するために照合されることができる（ブロック８０５）。これは、データパケットのメタデータまたはヘッダにおいてエンコードされることができる。例えば、データパケットが、オープンフローコントローラから分離されたＯＡＭモジュールによって生成され監視されるＯＡＭパケットであるとき、データパケットは、処理されるために非オープンフロースイッチモジュールに転送されることができる。例えば、データパケットがＯＡＭパケットであり、ＯＡＭモジュールがオープンフローコントローラの一部である場合に、データパケットは、メタデータを含むデータパケット全体を提供するために、制御メッセージを用いてオープンフローコントローラに送信されることができる。
【００５８】
例１：イーサネットパケットフロー
このセクションでは、フレーム識別と、イーサネットフローのためのＯＡＭフレームのフレーム注入及び逆多重化を構成することと、に適用される本発明の実施形態の使用例を示す。
【００５９】
識別（Identification）
第１の例では、イーサネットフローが配備され、すなわち、イーサネットヘッダフィールドのみが、送信元及び宛先のＭＡＣアドレスと、ＶＬＡＮタグフィールドとを含む、データパケットの照合及び処理に利用される。イーサネットパケットのペイロードに制限はない。
【００６０】
イーサネットパケットのイーサタイプフィールドを定義する、マッチング構造のＤＬ＿ＴＹＰＥは、ワイルドカードとなる。この例示的な本発明の実施形態によると、このＤＬ＿ＴＹＰＥフィールドは、データパケットを区別するのに選択される。使用可能なドメイン（１６ビット）から適切な値を選択するために、１つの割り当てされていないイーサタイプの値が選択されうる。例えば、値は、ＩＡＮＡによって定義された、割り当てられたイーサタイプの値と衝突しないように選択することができる。
【００６１】
監視されているフローの入口（ingress）側では、以下のような構成が設定されている。単一のマッチングテーブルのみが使用される。ＯＡＭフレームを注入するために、パケットヘッダは、ＯＡＭ（例えば、０ｘＤ００１）に設定されているイーサタイプを除いて、サービスパケットと同一である。他の全てのフィールドがワイルドカードであるものの、イーサネットｄｓｔは実際の宛先アドレスであるようにマッチングルールが設定されている。アクションは、次のテーブルまたは出力ポートに送信することである。
【００６２】
出口側では、単一のテーブルが２つのフローエントリとともに用いられる。第１のフローエントリは、ＯＡＭトラフィックのためである。マッチングは次のように設定される。イーサネットｄｓｔ＝実際の宛先アドレス、イーサネットタイプ＝ＯＡＭ（例えば、０ｘＤ００１）で、他の全てのフィールドはワイルドカードである。ルール優先度＝１０１。アクション＝ＯＡＭポートに送信。
【００６３】
第２のフローエントリは、サービストラフィックのためである。マッチングは、イーサネットｄｓｔ＝実際の宛先アドレス、他の全てのフィールドはワイルドカードである。ルール優先度＝１００、アクション＝次のテーブルまたは出力ポートに送信。
【００６４】
例２：ＭＰＬＳパケットフロー
このセクションでは、フレーム識別と、ＭＰＬＳフローのためのＯＡＭフレームのフレーム注入及び逆多重化を構成することと、に適用される本発明の実施形態の使用例を示す。
【００６５】
識別
第２の例では、ＭＰＬＳフローが考慮され、次のフローのマッチングエントリが、転送の間使用される。イーサネットフィールドは、設定されてもよく、設定されなくてもよいが、イーサネットタイプは、８８４７ｈまたは８８４８ｈのいずれかに設定される。ＭＰＬＳラベルマッチングフィールドは、有効なラベルの値（１６〜１０４８５７６の間）に設定される。他の全てのマッチングフィールドは、オープンフロー１．１標準によると、照合の間考慮されない。その後、第２のラベルがパケットの例外（exceptions）のために使用される。ＯＡＭパケットは、例えば、他の標準によって特定されない、０〜１５の値を有する第２のラベルを設定することにより、識別されることができる。
【００６６】
入口側では、単一のテーブルが、１つのフローエントリとともに使用される。ＯＡＭフレームを注入するために、パケットヘッダは、追加のＭＰＬＳヘッダが使用されている以外は、ＯＡＭ（例えば、１０）ラベルで、サービスパケットと同一である。フローテーブルエントリは、マッチングを次のように設定される。イーサタイプ＝０ｘ８８４７、ＭＰＬＳ＝所与のラベル、他の全てのフィールドはワイルドカードである。アクション＝所与のラベルをプッシュし、次のテーブルまたは出力ポートに送信。
【００６７】
出口側では、２つのテーブルが使用される。第１のテーブルは、監視されたパケット及び監視されているパケットの両方のために、単一のフローエントリを含む。マッチングは、所与のラベルに設定され、他の全てのフィールドはワイルドカードである。アクションは、ラベルを除去し、第２のテーブルに進むことである。第２のテーブルは２つのエントリを含む。第１のエントリは、パケットの監視のためであり、マッチングは、イーサタイプ＝０ｘ８８４７、ＭＰＬＳ＝ＯＡＭ（例えば、１０）、他の全てのフィールドはワイルドカードである。優先度は１０１である。アクションは、ＯＡＭポートに送信である。第２のエントリは、監視されたトラフィックのためであり、マッチングの設定は、メタデータ＝所与のラベル、他の全てのフィールドはワイルドカードである。優先度＝１００。アクション＝次のテーブルまたは出力ポートに送信。
【００６８】
例３：ＩＰパケットフロー
このセクションでは、フレーム識別と、フレーム注入及びＯＡＭフレームのＩＰｖ４フローへのフレーム注入を構成することと、に適用される本発明の実施形態の使用例を示す。
【００６９】
識別
ＩＰフローの場合、イーサネットフィールドは、設定されてもされなくてもよいが、イーサタイプは、０８００ｈに設定される。ＩＰヘッダフィールドは、送信元及び宛先ＩＰアドレスのように考慮され、ＩＰパケットのペイロードに制限はない。次いで、次にカプセル化されるＩＰパケットのプロトコルに反映されるＩＰマッチング構造のプロトコルは、ワイルドカードである。本発明の一実施例の実現によれば、このフィールドは、特定のパケットを区別するために選択される。
【００７０】
入口側では、単一のテーブルが使用される。ＯＡＭフレームを注入するため、パケットヘッダは、新しいＯＡＭ（例えば２５０）タイプに設定されるＩＰｖ４プロトフィールドを除いて、サービスパケットと同一である。フローエントリのマッチングは、イーサタイプ＝０８００、ＩＰ宛先は所与の宛先アドレス、他の全てのフィールドはワイルドカードに設定される。アクションは、次のテーブルまたは出力ポートに送信することである。
【００７１】
出口側では、２つのエントリとともに１つのテーブルが使用される。第１のフローエントリは、ＯＡＭトラフィックのためである。マッチングは、イーサタイプ＝０８００、ＩＰ宛先は所与の宛先アドレス、ＩＰｖ４＿ｐｒｏｔｏはＯＡＭ（例えば、２５０）、他の全てのフィールドは、ワイルドカードである。ルール優先度＝１０１である。アクション＝ＯＡＭポートへの送信である。第２のフローエントリは、サービストラフィックのためである。マッチングは、イーサタイプ＝０８００、ＩＰ宛先＝所与の宛先アドレス、他の全てのフィールドはワイルドカードである。ルール優先度＝１００である。アクション＝次のテーブルまたは出力ポートへの送信である。
【００７２】
図９は、ＯＡＭをサポートするオープンフローネットワークの一実施形態の図である。一実施形態では、ＯＡＭは、オープンフローコントローラ９０１にＯＡＭ関連の制御回路及び論理回路を配備することにより実装される。オープンフロースイッチ９０７Ａ−Ｚは、ＯＡＭ機能の集合を実装するためのオープンフローネットワーク内で、オープンフローコントローラ９０１にオープンフローネットワーク及びオープンフローデータフローの状態についての十分な情報を提供する、基本的かつ汎用的なＯＡＭサポート機能を実装する。図９は、さらに、オープンフローコントローラ及びオープンフロースイッチのコンポーネントの構成例と、有効なＯＡＭ機能のコンポーネントとの間で実行されるメッセージ交換の集合の例を示す。例示するネットワークは、単一のオープンフローコントローラ９０１とオープンフロースイッチ９０７Ａ−Ｚの集合を含む。当業者は、任意数のオープンフローコントローラとオープンフロースイッチが、本明細書に記載の原理及び構造を実装するように編成及び構成されうることを理解するであろう。明確化のため、例示する構成では、１つのオープンフローコントローラと、４つのオープンフロースイッチを利用する。
【００７３】
オープンフローコントローラ９０１は、ＯＡＭモジュール９０３及びメッセージ相関モジュール９０５を含むことができる。ＯＡＭモジュール９０３は、オープンフローコントローラ９０３内のＯＡＭ機能の実装を管理することができる。ＯＡＭモジュール９０３は、データに関するＯＡＭへの要求またはＯＡＭ機能を実行するための命令を、他のオープンフローコントローラコンポーネント（不図示）またはオープンフローコントローラ９０１外部の他の発信元から受信することができる。オープンフローＯＡＭモジュール９０３は、接続性検証（ＣＶ）、リンク追跡（ＬＴ）、損失測定（ＬＭ）、遅延測定（ＤＭ）、継続性（continuity）チェック（ＣＣ）、及び同様のＯＡＭ機能をサポートすることができる。
【００７４】
ＯＡＭモジュール９０３は、メッセージ相関器９０５により支援されることができる。メッセージ相関器は、オープンフローコントローラ９０１内で分離したモジュールであり、ＯＡＭモジュール９０３のコンポーネントでありうる。メッセージ相関器９０５は、オープンフローコントローラ９０１のドメイン内のオープンフロースイッチ９０７Ａ−Ｚから着信する監視応答メッセージを受信し、ソートする。メッセージ相関器９０５は、着信する監視応答メッセージを、ＯＡＭモジュール９０３で実行されている、要求されたＯＡＭ機能と照合する。メッセージ相関器９０５は、着信する監視応答メッセージを、監視応答メッセージ内の明示の識別子、監視応答データ内のメタデータまたは監視応答データ内の類似の情報に基づいて照合する。ＯＡＭモジュール９０３は、識別子及び要求された各ＯＡＭ機能に関連付けられたメタデータを、メッセージ相関器９０５が監視応答メッセージを照合するのに利用可能にすることもできる。例示する一実施形態では、メッセージ相関器９０５は、ＯＡＭパケットまたは監視応答メッセージとともに含まれる同様のデータに基づいて、監視応答メッセージを要求されたＯＡＭ機能と照合する。受信されたＯＡＭパケットは、ＯＡＭモジュール９０３によって生成されたＯＡＭパケットと照合され、監視トリガメッセージを介してオープンフロースイッチ９０７Ａに送信される。
【００７５】
ＯＡＭモジュール９０３及び／またはメッセージ相関器９０５は、図に示すような一般的な監視手続きを実装する。処理は、任意のＯＡＭ機能に対する、オープンフローコントローラ９０１の内部及び外部の発信元を含む任意の発信元からの要求に応答して開始されることができる。オープンフローコントローラ９０１は、「監視トリガ（trigger  monitoring）」メッセージをオープンフロースイッチ９０７Ａに送信し、オープンフロースイッチ９０７ＡがＯＡＭパケットまたは類似の「探査（probe）」パケットをオープンフロースイッチ９０１Ａのパケット処理パイプライン９１１Ａを経由して送信することを要求する。監視トリガメッセージは、プロトコルエージェント９０９Ａまたは類似のコンポーネントによって、オープンフロースイッチ９０７Ａで受信される。プロトコルエージェント９０９Ａは、例えば、ＯＡＭパケットを監視トリガメッセージから抽出することによって、本明細書で上述したパケット処理パイプラインに送られるべきＯＡＭパケットを生成することができる。ＯＡＭパケットは、パケット処理パイプライン及びプロトコルエージェント９０９Ａに「監視応答（monitor  response）」メッセージを生成させオープンフローコントローラ９０１に返信させるために、パケット処理パイプライン９１１Ａを経由して送信される。
【００７６】
スイッチ９０７Ａは、本明細書において上述したオープンフロースイッチモジュールにより実装されるパケット処理パイプラインを介してＯＡＭパケットを処理する。パケット処理パイプラインは、一致したフローテーブル及びグループテーブルのエントリと、これらのテーブルのエントリと関連する同様のメトリックデータとを、カウンタの集合及びオープンフロースイッチモジュールによってメンテナンスされる類似のメカニズムから収集する。オープンフロースイッチモジュールは、オープンフローデータフローとのフェイトシェアリングを有するように、ＯＡＭパケットを指定されたオープンフローデータフローと集約する。図示された例では、ＯＡＭパケットは、オープンフロースイッチ９０７Ｂに送信されるようになる。パケット処理パイプライン内でＯＡＭパケットを処理した後、オープンフロースイッチ９０７Ａは、関連するメトリックデータとともに一致したフローテーブルのエントリとグループテーブルのエントリをエンコードして、監視応答メッセージをオープンフローコントローラ９０１に送信する。監視応答メッセージによって提供されるこのデータは、プロトコルエージェント９０９Ａによって収集され、メッセージ内に挿入される。
【００７７】
ＯＡＭメッセージ及び関連するオープンフローデータフローは、中間のオープンフロースイッチ９０７Ｂで、オープンフロースイッチ９０７Ｂによって受信される。図示された例では、オープンフロースイッチ９０７Ｂは、本明細書で述べるＯＡＭによりサポートされる実施形態を実装しない。したがって、オープンフロースイッチ９０７Ｂは、特にＯＡＭパケットが関連付けられているオープンフローデータフローと同じ方法で、他のオープンフローデータパケットのように、ＯＡＭパケット９０７Ｂを処理する。例では、オープンフロースイッチ９０７Ｂは、ＯＡＭパケットと、関連するオープンフローデータフローとを、オープンフロースイッチ９０７Ｃに転送する。
【００７８】
オープンフロースイッチ９０７ＣはＯＡＭパケットを受信し、オープンフロースイッチモジュール内のパケット処理パイプライン９１１Ｃの構成にしたがって、それを処理する。さらに、プロトコルエージェント９０９Ｃは、ＯＡＭパケットのコピーを、一致したフローテーブルエントリとグループテーブルエントリとともに、ＯＡＭパケットのためのカウンタ及び関連するメトリックデータと、関連するオープンフローデータフローとを含めて、オープンフローコントローラ９０１に送信する。この情報は、監視応答メッセージ内で、オープンフローコントローラ９０１に送信される。オープンフロースイッチ９０７Ｃの構成によれば、ＯＡＭパケットは、その後、次のオープンフロースイッチ９０７Ｚに転送される。
【００７９】
オープンフロースイッチ９０７Ｚは、ＯＡＭパケットを受信し、オープンフロースイッチモジュール内のパケット処理パイプライン９１１Ｚの構成にしたがって、それを処理する。さらに、プロトコルエージェント９０９Ｚは、ＯＡＭパケットのコピーを、一致したフローテーブルエントリとグループテーブルエントリデータとともに、ＯＡＭパケットのためのカウンタ及び関連するメトリックデータと、関連するオープンフローデータフローとを含めて、オープンフローコントローラ９０１に送信する。この情報は、監視応答メッセージ内で、オープンフローコントローラ９０１に送信される。オープンフロースイッチ９０７Ｚの構成によれば、ＯＡＭパケットは、その後、関連するオープンフローデータフローがオープンフローネットワークの終端またはオープンフローネットワークで最後に監視されるネットワークエレメント（すなわち、監視されうるオープンフローネットワークを経由する経路の一部のみ）に到達したために、破棄され得る。
【００８０】
一実施形態では、プロトコルエージェントは、図１−８に関して述べたようにＯＡＭパケットをオープンフロースイッチモジュールのパケット処理パイプライン内に注入するために、図１−８に関して本明細書で述べた処理及び構造を包含する。同様に、プロトコルエージェントは、ＯＡＭパケットを逆多重化し、逆多重化を目的とするオープンフローコントローラのためにオープンフロー制御メッセージを生成するための、図１−８を参照して本明細書で述べた処理及び構造を包含することもできる。一般に、図９−１４に関連して述べたＯＡＭの実装は、図１−８に関連して述べた一般的なパケット監視の特徴に依存して実装されることができる。
【００８１】
監視トリガメッセージ
監視トリガメッセージは、オープンフロースイッチに、オープンフロースイッチモジュールのパケット処理パイプライン内のＯＡＭパケットを処理し、監視応答メッセージを介してオープンフローコントローラにメトリック情報の報告を返送するように指示する。監視トリガメッセージは、ＯＡＭパケット全体を搬送することができ、またはオープンフロースイッチによって生成されるＯＡＭパケットを識別することができる。オープンフローにおける監視トリガメッセージの実装には、いくつかの方法がある。監視トリガメッセージは、改訂されたＰａｃｋｅｔＯｕｔメッセージ、拡張されたＰａｃｋｅｔＯｕｔメッセージ、または新たなオープンフローメッセージタイプでありうる。
【００８２】
各監視トリガメッセージは、オープンフロースイッチ内で、類似の振る舞いを生成する。オープンフロースイッチが、オープンフローコントローラからＯＡＭパケットを含む監視トリガメッセージを受信すると、オープンフロースイッチは、ＯＡＭパケットの処理及び／または関連するオープンフローデータフローについてのメトリック情報を収集することによって応答するであろう。収集されたデータは、ＯＡＭパケットによるオープンフロースイッチの横断の間に発生した、全てのフローテーブル及びグループテーブルの一致部分についての情報を含むことができる。オープンフロースイッチがＯＡＭパケットの処理を終了するとき、収集されたメトリック情報を含む監視応答メッセージで、オープンフローコントローラに返信する。
【００８３】
監視トリガメッセージは、ＯＡＭパケットを処理するためのいくつかの命令を識別し、定義することもできる。例えば、監視トリガメッセージは、ＯＡＭパケットについて実行されるいくつかのアクションを問い合わせ、ＯＡＭパケットが送出される出力ポートを定義し、パケット処理パイプライン全体を経由してパケットを送信し、ＯＡＭパケット処理のための同様の命令を提供することができる。
【００８４】
改訂されたＰａｃｋｅｔＯｕｔメッセージ
オープンフローによって規定されるＰａｃｋｅｔＯｕｔメッセージは、オープンフローコントローラがオープンフロースイッチのパケット処理パイプライン内にパケットを挿入し、またはオープンフロースイッチの任意のポートでパケットを送信することができるようにする。一実施形態では、監視トリガメッセージのための実装オプションは、ＰａｃｋｅｔＯｕｔメッセージを監視トリガメッセージとみなすことである。この場合、オープンフロースイッチは、ＰａｃｋｅｔＯｕｔメッセージの使用を通じてオープンフローコントローラによって送信された全てのパケットについてのメトリック情報を収集し、収集されたメトリック情報データを含む監視応答メッセージの形式で、パケットに何が起こったかについての報告を生成するように構成されることができる。
【００８５】
拡張されたＰａｃｋｅｔＯｕｔメッセージ
一実施形態では、オープンフローによって規定されるＰａｃｋｅｔＯｕｔメッセージは、監視トリガメッセージを実装するように拡張される。拡張されたＰａｃｋｅｔＯｕｔメッセージは、新たなアクション、ＯＦＰＡＴ＿ＴＲＩＧ＿ＭＯＮアクションを規定する。オープンフロースイッチのプロトコルエージェントがＰａｃｋｅｔＯｕｔメッセージを受信した場合、ＰａｃｋｅｔＯｕｔメッセージのアクションリスト内でこの新たなアクションを見つけ出し、その後、それを監視トリガメッセージに関して述べた追加の手続きに適用する。そうでない場合、プロトコルエージェントは、オープンフロー標準により規定された標準的なパケットアウト操作を実行する
【００８６】
図１０は、ＯＦＰＡＴ＿ＴＲＩＧ＿ＭＯＮアクションの一実施形態を示す。ＰａｃｋｅｔＯｕｔメッセージ内のアクションの存在により、監視トリガメッセージ手続きが実行されることを示しているので、アクションは追加のフィールドを持たない。オープンフロー仕様書では、アクションは少なくとも８オクテットの長さでなければならず、そのため、４オクテットの長さのパディングフィールドは、オープンフローのこの側面に適合するアクションをもたらすように定義される。
【００８７】
新たなオープンフローメッセージ
一実施形態では、新たなオープンフローメッセージが、監視トリガメッセージを実装するために使用される。このメッセージは、ＰａｃｋｅｔＯｕｔメッセージと同一のフィールド群を持つ。プロトコルエージェントとオープンフロースイッチのパケット処理パイプラインは、メトリック追跡及び報告が開始されることを除いてＰａｃｋｅｔＯｕｔメッセージと同様の方法で、新たなオープンフローメッセージと、含まれているＯＡＭパケットとを処理するように構成される。フィールド群、それらのフォーマット及び関連するパケット処理ルールは、オープンフロー１．１仕様書のセクションＡ３．７で規定されるものと同一または類似であることができる。新たなオープンフローメッセージとオープンフローＰａｃｋｅｔＯｕｔメッセージとを区別するために、新たなオープンフローメッセージタイプが割り当てられることができる。
【００８８】
図１１は、ＯＡＭ機能要求処理のための処理の一実施形態のフローチャートである。一実施形態において、ＯＡＭ機能要求処理のプロセスは、ＯＡＭ機能に対する要求の受信に応答して開始される（ブロック１１０１）。ＯＡＭ機能要求は、他のオープンフローコントローラのコンポーネント及び外部ネットワーク管理ソフトウェアまたは同様の送信元を含む、任意の送信元から受信されることができる。オープンフローのコントローラのＯＡＭモジュールは、オープンフローデータフローのためのメトリックを提供するためにオープンフロースイッチによって実行されるアクションを定義しまたは特定する、監視トリガメッセージを生成することによって、ＯＡＭ要求を処理する（ブロック１１０３）。監視トリガメッセージは、転送され、オープンフローデータフローに集約されるべきＯＡＭパケットを含む。当該ＯＡＭパケットの特徴は、したがって、本明細書で上述したような、オープンフローデータフローとのフェイトシェアリングを保証するために必要なオープンフローデータフローの特徴と一致する。監視トリガメッセージによって定義され、または指定されるアクションには、オープンフロースイッチのパケット処理パイプラインにＯＡＭパケットを挿入するためのアクションや、特定のポートにＯＡＭパケットを転送するためのアクションが含まれる。
【００８９】
生成されたトリガメッセージは、オープンフローデータフローの監視が開始されことになる、オープンフロースイッチに送信される（ブロック１１０５）。これは、本明細書に記載されるように、汎用的なまたはＯＡＭ特有のパケット監視をサポートするように構成されている各下流オープンフロースイッチにおけるオープンフローデータフローの監視を開始することができる。オープンフローコントローラは、その後、オープンフローデータフローの経路に沿った、サポートするオープンフロースイッチのそれぞれから返されるＯＡＭ関連のメトリックデータを待つ。このメトリックデータは、サポートするオープンフロースイッチのそれぞれから監視応答メッセージの形式で受信される（ブロック１１０７）。受信した監視応答メッセージには、メトリック情報とともにＯＡＭパケットのコピーまたはその識別子が含まれている。
【００９０】
これらの監視応答メッセージは、まず、監視応答メッセージを、監視処理を開始したＯＡＭ機能要求と関連付けるメッセージ相関器によって、オープンフローコントローラで処理されることができる（ブロック１１０９）。着信する監視応答メッセージは、オープンフローコントローラのＯＡＭモジュールによって送出された監視トリガメッセージまたはＯＡＭパケットからの識別子を用いて、要求されたＯＡＭ機能と照合されることができる。メッセージ相関器は、メトリックデータをコンパイルし、または同様に、オープンフローコントローラ内のＯＡＭモジュールにおいてそれを渡す前のデータを前処理することができる。他の実施形態では、メトリックデータは前処理されず、メッセージ相関器により関連付けられるだけである。さらなる実施形態では、メッセージ相関機能は、ＯＡＭモジュールと一体化される。
【００９１】
ＯＡＭモジュールは、その後、要求されたＯＡＭ機能、または要求されたＯＡＭ機能の集合にしたがって、受信したメトリックデータを処理する（ブロック１１１１）。メトリックは、ＯＡＭパケット及び／または関連するオープンフローデータフローの監視に、直接関係することができる。いずれの場合においても、メトリックデータは、オープンフローデータフローを代表し、オープンフローデータフローのためのＯＡＭに関する情報を導き出すために利用される。ＯＡＭ機能の集合の結果は、要求元に提供される（ブロック１１１３）。結果は、単一の応答であることができ、または要求されたＯＡＭ機能に依存して受信される監視データとして、進行中のまたは断続的な応答であることができる。
【００９２】
オープンフロースイッチにおけるＯＡＭパケットの検知及び処理
オープンフローネットワーク内の各オープンフロースイッチは、ＯＡＭパケットを認識し、ＯＡＭパケットに関連するメトリックと、関連するオープンフローデータフローとを報告することにより、オープンフローコントローラにおけるＯＡＭ機能をサポートするように構成されることができる。各オープンフロースイッチは、ＯＡＭパケットがオープンフロースイッチングモジュールのパケット処理パイプラインを経由して行ってしまったあとで、監視応答メッセージを発生させるために、ＯＡＭパケットまたはパケットのコピーをプロトコルエージェントに中継するように構成されることができる。
【００９３】
現在のオープンフロースイッチが出口または宛先スイッチでない場合、ＯＡＭパケットは次のオープンフロースイッチに転送される。オープンフロースイッチが、出口スイッチまたは宛先スイッチである場合、ＯＡＭパケット及び関連するメトリックは、オープンフローコントローラに転送されることができる。オープンフロースイッチが、単なる中間スイッチである場合は、ＯＡＭパケットは、メトリック報告後のさらなる処理のために次のスイッチに転送されてもよい。オープンフロースイッチが、宛先スイッチである場合、メトリックの報告が生成されなければならず、ＯＡＭパケットは破棄される。デフォルトでは、オープンフロースイッチは、関連するオープンフローデータフロー内の他の任意のデータパケットのように、ＯＡＭパケットを転送できる。
【００９４】
ＯＡＭパケットは、例えば、関連するオープンフローデータフロー内のデータパケットの識別の際に考慮されていない、いくつかの余分なフィールドを検査することや、または本明細書で上述した、ＯＡＭパケット内に存在する特定のペイロードにより、識別されることができる。
【００９５】
監視応答メッセージは、プロトコルエージェントによってオープンフローコントローラに送信され、ＯＡＭパケットが横断するオープンフロースイッチのオープンフロースイッチモジュール内で一致する、全てのフローテーブル及びグループテーブルについてのメトリック情報を含む。これらの一致は、監視応答メッセージを生成するためのＯＡＭパケットをＯＡＭパケットとして識別するフローテーブルまたはグループテーブルエントリの場合を除き、関連するオープンフローデータフローのデータパケットの場合と同じである。しかしながら、オープンフローコントローラは、この違いを認識し、メトリック上のこれらの影響を無視し、またはこれらの影響のためメトリックを調整することができる。
【００９６】
カウンタ読み込み
標準的なオープンフローパケット処理の一部として、ＯＡＭパケットの検知または類似の「探査」または監視されたパケットにより、オープンフロースイッチモジュールのパケット処理パイプラインをパケットが横断する際に、フローテーブル及びグループテーブルのエントリのためのカウンタの集合をインクリメントすることができる。カウンタは、標準的なデータパケットとＯＡＭパケットのように特に監視されるパケットとの両方の一致に対し、インクリメントされることができる。これらのカウンタの更新は、オープンフロースイッチの起動から、またはオープンフローコントローラからのメッセージの受信に応答して、連続的になされることができる。監視するパケットの検知により、一致した各フローテーブルまたはグループテーブルのエントリのカウンタの読み出しが発生することができる。カウンタ値は、所定のフローテーブルエントリの統計フィールドの要素、または、オープンフローコントローラに報告されるメトリック情報として提供される類似のものとして、監視応答メッセージ内に含めることができる。
【００９７】
このカウンタの読み出しは、カウンタの更新後、及び、一致したフローテーブルまたはグループテーブルのエントリのアクション実行前または実行後のいずれか任意の場合に、発生しうる。しかし、いずれのオプションが実装されるとしても、（例えば、プロトコルエージェントによる）オープンフロースイッチにおける処理のタイミングは、標準的なデータパケットのために、ＯＡＭパケットのように特に監視されるパケットの場合と同時にカウンタを読み出す。
【００９８】
タイムスタンプ
一実施形態では、オープンフロースイッチにおけるパケット処理は、データパケットまたは監視されるパケットがフローテーブルまたはグループテーブルのエントリと一致するときのタイムスタンプの記録も含む。例えば、タイムスタンプは、ＩＥＥＥ１５８８−２００２「ネットワーク測定・制御システムのための高精度時刻同期プロトコル標準」により定義された時刻表示形式に基づく形式または類似の形式を有する、８オクテットのフィールドとして格納されることができる。タイムスタンプは、所定のフローテーブルエントリの統計フィールドの要素として、監視応答メッセージに付加されることができる。
【００９９】
このタイムスタンプは、カウンタの更新前または更新後のいずれか、及び、フローテーブルまたはグループテーブルのエントリのアクションの実行前または実行後のいずれかにおける、フローテーブルエントリまたはグループテーブルエントリとパケットの一致後に、オープンフロースイッチモジュール内で発生する。但し、タイムスタンプのタイミングは、標準的なデータパケットと、ＯＡＭパケットのように特に監視されるパケットの両方について同一である。
【０１００】
監視応答メッセージ
ＯＡＭパケットまたは同様の監視されたパケットの検知に応答して、ＯＡＭパケットと、関連するメトリックデータを有する一致したフローテーブル及びグループテーブルのエントリとが、本明細書で上述したオープンフロースイッチのプロトコルエージェントに提供される。その後、オープンフロースイッチのプロトコルエージェントは、監視応答メッセージを生成し、監視応答メッセージをオープンフローコントローラに送信する。一実施形態では、監視応答メッセージは、以下のものを含む。
・ＯＡＭパケット  同じＯＡＭパケットによりトリガされ、但し異なるスイッチにより生成される監視応答メッセージを、オープンフローコントローラが相関付けるのを助ける
・各エントリに含まれる統計エントリのリスト
i.  フローテーブルまたはグループテーブルのエントリへの参照、例えば、テーブル及びフローエントリのクッキーの識別子
ii.  任意で、所定のテーブルエントリの実行タイムスタンプ
iii.  任意で、所定のテーブルエントリのカウンタ値
【０１０１】
監視応答メッセージは、標準的なオープンフローのＰａｃｋｅｔＩｎメッセージの拡張、新たなオープンフローメッセージタイプとして実装することができ、または、フロー統計タイプＯＦＰＴ＿ＳＴＡＴＳ＿ＲＥＰＬＹメッセージの更新として実現されることができる。
【０１０２】
拡張されたＰａｃｋｅｔＩｎメッセージ
本実装オプションは、メトリックエントリのリストを搬送する任意のフィールドで、オープンフローにより仕様化されたＰａｃｋｅｔＩｎメッセージを拡張する。図１２は、拡張されたＰａｃｋｅｔＩｎメッセージとして実装された監視報告メッセージの例示する一実施形態の図である。バージョン、タイプ、長さ、ＸＩＤ、バッファＩＤ、入力ポート、入力物理ポート、フレーム長、理由、テーブルＩＤ及びフレームデータフィールドが、オープンフロー１．１で仕様化された基本的なＰａｃｋｅｔＩｎメッセージのものと、同一のままである。本実施形態では、これらのフィールドのあとに、各フローテーブルまたはグループテーブル照合のためのメトリックエントリと関連付けるフィールドの集合が続く。参照タイプフィールドは、指標ビットの集合を有することができ、当該フィールドの１ビットはメトリックが参照するテーブルがフローテーブルであるかグループテーブルであるかを示し、１ビットはパケットカウントがあるかどうかを示し、１ビットはバイトカウントがあるかどうかを示し、１ビットはタイムスタンプがあるかどうかを示す。テーブルＩＤ、グループＩＤ、優先度、マッチング構造及びクッキーのフィールドは、対応するフローまたはグループテーブルのエントリを識別する。パケットカウント及びバイトカウントは、フローテーブルエントリの統計の一部である。パケットカウントは、フローテーブル内の所定のフローエントリに一致したオープンフローデータパケットの数である。バイトカウントは、関連するデータパケットのバイトカウントの合計を格納する。このデータは、ＯＡＭ機能を実行するために使用することができる。
【０１０３】
新たなオープンフローメッセージ
一実施形態では、監視応答メッセージは、新たに定義されたオープンフローメッセージである。図１３は、新たなオープンフローメッセージとして実装される監視報告メッセージを例示する一実施形態の図である。「監視」タイプを有するこのメッセージのために、新たなオープンフローメッセージタイプが導入される。バージョン、タイプ、長さ及びＸＩＤフィールドは、上述し、かつオープンフロー１．１仕様書で記述された、ＰａｃｋｅｔＩｎメッセージまたは拡張されたＰａｃｋｅｔＩｎメッセージのものと同様である。本実施形態では、これらのフィールドの後に、各フローテーブルまたはグループテーブル照合のためのメトリックエントリと関連するフィールドの集合が続く。参照タイプフィールドは、指標ビットの集合を有することができ、当該フィールドの１ビットはメトリックが参照するテーブルがフローテーブルであるかグループテーブルであるかを示し、１ビットはパケットカウントがあるかどうかを示し、１ビットはバイトカウントがあるかどうかを示し、１ビットはタイムスタンプがあるかどうかを示す。テーブルＩＤ、グループＩＤ、優先度、マッチング構造及びクッキーは、一致したフローテーブルまたはグループテーブルのエントリを識別する。パケットカウント及びバイトカウントは、フローテーブルエントリの統計の一部である。パケットカウントは、フローテーブル内の所定のフローエントリ一致したオープンフローデータパケットの数である。バイトカウントは、関連するデータパケットのバイトカウントの合計を格納する。このデータは、ＯＡＭ機能を実行するために使用することができる。
【０１０４】
ＯＡＭパケットに関連する情報の収集
各オープンフロースイッチのプロトコルエージェントは、一致したフロー及びグループテーブルのエントリを取得し、オープンフロースイッチモジュールから受信するＯＡＭパケットに基づいて関連するメトリック情報を収集することができる。プロトコルエージェントをサポートするために、オープンフロースイッチモジュールは、全パケットまたはいくつかの特定のパケットのサブセットについての関連するメトリックで、照合されるフローテーブル及びグループテーブルのエントリのリストをメンテナンスする。
【０１０５】
一実施形態では、オープンフロースイッチモジュールのデフォルトの操作は、ハンドリングされる全てのパケットのためにそのような一致するメトリックを収集することである。しかしながら、このオプションは、結果的に、オープンフロースイッチモジュールに負担となる追加の管理及び計算をもたらす。この振る舞いは、例えば、オンデマンドの短期モニタリングの場合に用いられることができる。一実施形態では、この負担を軽減するために、オープンフロースイッチモジュールは、最後の数個（例えば、１、２または３個）の一致するフローテーブル及び／またはグループテーブルのエントリだけを、メトリックとともに格納する。この実施形態では、新たな一致エントリが格納されるときはいつでも、パケットごとの一致メトリック記憶領域がいっぱいのとき、最も古い一致エントリを破棄する。この処理は、事前監視（proactive  monitoring）のための例に使用することができる。
【０１０６】
他の実施形態では、この計算及び記憶領域の負担を軽減するために、オープンフロースイッチモジュールは、区別されまたはタグ付きのパケット（すなわち、ＯＡＭパケット）だけの、一致するメトリックを収集することができる。メンテナンスすべき照合されるエントリの量と、それらを管理する処理は、オープンフローコントローラのＯＡＭモジュールによって構成可能であるか、同様に構成可能である。
【０１０７】
オープンフロースイッチ内のプロトコルエージェントまたは同様のコンポーネントが例えば監視トリガメッセージの結果としてパケットの送信元である場合、オープンフロースイッチモジュールは、当該パケットがＯＡＭパケットであり一致するメトリックが収集されなければならないことを、決定することができるか、またはプロトコルエージェントによって命令されることができる。ＯＡＭパケットが、物理ポートを経由してオープンフロースイッチに入るとき、それは、直接パケット処理モジュールに送信される。その後、オープンフロースイッチモジュールは、その構成に基づいて区別されたパケットを識別することができる。例示する実装においては、本明細書でさらに上述したように、フローテーブルエントリが、区別されたパケットを識別するために形成されることができ、フローテーブルエントリに割り当てられた命令は、一致するメトリックの収集を開始するようにオープンフロースイッチモジュールに命令することができる。このオプションの欠点は、統計を収集するオープンフロースイッチモジュールに到着するその命令の受信より前に一致したエントリについて、いかなる情報もないことである。前のオープンフロースイッチの構成は、この問題を回避するために用いられる。
【０１０８】
図１４は、オープンフロースイッチにおけるＯＡＭサポートのための処理の一実施形態のフローチャートである。フローチャートは、オープンフロースイッチにおけるＯＡＭサポートの流れを示す。この処理は、オープンフローコントローラから監視トリガメッセージを受信することに応答して開始されることができる（ブロック１４０１）。監視トリガメッセージは、監視トリガメッセージによって定義されるＯＡＭパケットを生成するために、オープンフロースイッチのプロトコルエージェントまたは同様のコンポーネントによって、オープンフロースイッチにおいて処理されることができる（ブロック１４０３）。ＯＡＭパケットは監視トリガメッセージ内で提供されてもよく、その場合、それは抽出されてパケット処理パイプラインに挿入され、または監視トリガメッセージによって指示される通りポートに転送される（ブロック１４０５）。ＯＡＭパケットをオープンフロースイッチモジュールのパケット処理パイプライン内に挿入すること、またはポートに転送することによって、ＯＡＭパケットは監視されるオープンフローデータフローと集約される。
【０１０９】
ＯＡＭパケットは、オープンフロースイッチモジュール内のフローテーブル及び／またはグループテーブルのエントリと照合される（ブロック１４０７）。これにより、対応するカウンタがインクリメントされ、一致するメトリックデータが記録される。ＯＡＭパケットが、オープンフロースイッチモジュールを横断したあと、プロトコルエージェントに通知が行われ、監視応答メッセージがプロトコルエージェントによって生成される（ブロック１４０９）。プロトコルエージェントは、オープンフローデータフロー及び／またはＯＡＭパケットのために、メトリック及び一致データをオープンフロースイッチモジュールから収集する（すなわち、回収する）（ブロック１４１１）。このメトリックデータは、監視応答メッセージに追加され、オープンフローコントローラに送信される（ブロック１４１３）。このメトリック情報は、その後、要求され、かつ監視トリガメッセージを開始するＯＡＭ機能を、オープンフローコントローラによって実行するために用いられることができる。
【０１１０】
ＯＡＭの特徴の実装
接続性検証
接続性を検証するために、オープンフローコントローラは、監視されるオープンフローデータフローのＯＡＭパケットが一致するかどうか、かつ所望のフローテーブルエントリのみに一致するかどうかを検査することができる。ＯＡＭ機能の接続性検証のために、照合されるフローテーブルのエントリは、入口及び出口オープンフロースイッチの両方において、識別されなければならない。このことは、ＯＡＭパケットの監視の結果としてオープンフロースイッチからオープンフローコントローラに送信される監視応答メッセージに、各照合テーブルエントリへの参照を、追加することによって解決される。この参照は、オープンフローエントリ構造または全マッチング構造のクッキーフィールド内にあることができる。
【０１１１】
監視されるＯＡＭパケットへの応答が、それぞれのオープンフロースイッチのオープンフローコントローラへの入口ポートと出口ポートの両方から使用可能になると、オープンフローコントローラは、監視されるパケットが、正確に所望のフローテーブルエントリに一致することを検証することができる。これらのフローテーブルエントリは、監視されるオープンフローデータフローのために一致したフローテーブルエントリと同じであり、相違点は、監視されるパケット自体をＯＡＭパケットとして識別する、フローテーブルエントリだけであってもよい。双方向フローを両方の方向において別々に検証するため、この機能は一方向性である。
【０１１２】
リンク追跡
接続性検証に加えて、リンク追跡機能を提供するために、全ての中間オープンフロースイッチが、これらの中間オープンフロースイッチを横断するＯＡＭパケットとして記録される。オープンフローコントローラは、適切なＯＡＭメッセージを追跡パスの入口オープンフロースイッチに送信することによって、リンク追跡を開始する。入口オープンフロースイッチによるＯＡＭパケットの転送後、出口オープンフロースイッチが、一致するフロー識別子とともに、ＯＡＭパケットをオープンフローコントローラに送信することによってＯＡＭパケットを終端する一方で、全ての中間オープンフロースイッチが、一致するフロー識別子を送信することにより、監視応答メッセージを用いてオープンフローコントローラに応答することができる。双方向フローを両方の方向において別々に検証するため、この機能は一方向性である。
【０１１３】
損失測定
損失測定のＯＡＭ機能として、送信パケット及び受信パケットの数は、入口オープンフロースイッチ及び出口オープンフロースイッチにおいて知られなければならない。フローテーブルエントリのためのオープンフロースイッチモジュールのカウンタは、損失測定を実現するために用いられることができる各オープンフロースイッチである。特定の位置における単一のカウンタのみを用いる代わりに、ＯＡＭパケットを処理する間、全てのマッチングテーブルのカウンタが用いられる。フローエントリ識別に加え、損失測定のために、一致したパケットのカウンタもまた、オープンフローコントローラに送信されるデータに追加される。
【０１１４】
入口オープンフロースイッチ及び出口オープンフロースイッチからのこれらのカウンタを使用することにより、オープンフローコントローラは、オープンフローデータフローのフレーム損失を計算することができる。損失は、入口オープンフロースイッチにおいてカウントされた、適切なフローテーブルエントリの一致から、出口オープンフロースイッチにおいてカウントされた、適切なフローテーブルエントリの一致を引いた数である。オープンフローコントローラのＯＡＭモジュールにおいて最後に測定した後のパケット損失を取得するために、損失の前回の値が現在の値から引き算されることができる。
【０１１５】
実装に応じて、カウンタもまた、測定されたＯＡＭパケットをカウントする。しかしながら、オープンフローコントローラがこれらのメッセージを開始し及び終了させるため、損失値は、損失したオープンフローデータパケットの数のみを含むように訂正されることができる。双方向フローを両方の方向において別々に測定しなければならないため、このＯＡＭ機能は一方向性である。
【０１１６】
遅延測定
一実施形態では、監視されるオープンフローデータフローの入口オープンフロースイッチにおいて、タイムスタンプが遅延測定ＯＡＭパケットに追加される。出口オープンフロースイッチにおいて、追加のタイムスタンプが、遅延測定ＯＡＭパケットに追加される。これらのタイムスタンプを使用することによって、ＯＡＭパケットの遅延が、オープンフローコントローラによって計算されることができる。一実施形態では、１つのタイムスタンプだけでなく、オープンフロースイッチモジュール全体にわたって、一致したフローテーブルまたはグループテーブルのエントリ毎にそれぞれスタンプを追加することも可能である。
【０１１７】
フローエントリ識別に加え、遅延測定のために、照合の時間のタイムスタンプが追加される。入口オープンフロースイッチ及び出口オープンフロースイッチからこれらのタイムスタンプを使用することによって、オープンフローコントローラは、オープンフローデータフローのフレーム遅延を計算することができる。片方向の遅延を計算する本方法の実施形態は、スイッチのクロックが同期しているかどうかが重要である。往復の遅延では、クロックのずれが解消される。一実施形態では、両方向のフローの往復の遅延が、２方向のフローの片方向の遅延から計算される。これは、第１の方向からのＯＡＭフレームの遅延測定をオープンフローコントローラが受信し、他の方向における追加の測定を生成するように実装される。往復遅延の計算は、ＩＴＵ−Ｔ  Ｙ．１７３１として実装されることができ、相違点は、遅延から引かれる、出口オープンフロースイッチにおける処理時間が、ＯＡＭパケットをオープンフローコントローラに送信し、他の方向からＯＡＭパケットを受信することを含むということだけである。
【０１１８】
仮想ＭＥＰ及びＭＩＰ
上でさらに詳細に述べた通り、管理エンドポイント（ＭＥＰ）または監視する中間ポイント（ＭＩＰ）を、ＯＡＭ機能の多くのタイプをサポートするために、処理パイプラインの様々な場所に配置することができなければならない。構成例では、様々なより小さなオープンフローデータフローのデータパケットが共通のより大きなフローの中に集約されることができる。その後、フローエントリは、それぞれのより小さいフローのために定義され、これらのエントリのアクションは、新しい集約されたフローにそれらを合わせるために、パケットの更新を指示する。後続のテーブルに配備された第２のフローエントリは、共通のフローを記述する。ＭＥＰは、より小さなフローと集約されたフローの両方に配置されることができる。
【０１１９】
実際のＭＥＰを配置する代わりに、これらの観測点において、本発明の実施形態は、オープンフロースイッチ内に実際には存在しない仮想のＭＥＰを配置できるようにし、それらはコントローラのロジック内にのみ存在する。パケット処理パイプラインは監視され、上述のＯＡＭ機能を実現することができるように、これらのＭＥＰとＭＩＰＳを用いてオープンフローコントローラに報告される。上記構成例を考慮すると、オープンフローコントローラに返信されたメトリック情報は、両者の値が含まれているため、オープンフローデータフローの両方のタイプは、オープンフローコントローラによって監視されることができる。
【０１２０】
本発明の実施形態は、データパケットフローへ／からの特定のデータパケット（タグ付きフレーム）の注入及び逆多重化を可能にするオープンフロースイッチオペレーションへの拡張を説明する。このような構成の変更は、パケットの注入または除去処理に関与するオープンフロースイッチのみに影響を与え、どの中間オープンフロースイッチにもいかなる設定変更をも必要としない。従って、いかなる中間オープンフローノードにおいても、同じ転送エントリが、通常のデータパケット及びタグ付きフレームの両方に適用される。この特徴は、データフローに挿入され、監視されるデータパケットのフェイトシェアリングを保証する。
【０１２１】
本発明の実施形態は、監視されたデータパケットに対するフェイトシェアリングを提供するように、オープンフロードメイン内のＯＡＭツールの簡単かつ柔軟な配備を可能にするだけでなく、実施形態は、オープンフロースイッチまたはオープンフローコントローラにおいて実装されているかどうかにかかわらず、監視ポイントに／からＯＡＭパケットを転送するメカニズムを提供する。
【０１２２】
さらに、本発明の実施形態は、監視されるデータフローのタイプに依存しない、オープンフロードメインにおけるＯＡＭツールセットを実装する。このＯＡＭツールセットは、イーサネット、ＭＰＬＳ、ＩＰ、ＴＣＰ、及び同様のデータフローの監視に使用することができる。オープンフローＯＡＭの実装は、いかなる基礎となる技術とも無関係であり、ＯＡＭソリューション特有のいかなる技術もサポートまたは実装するために使用することができ、それにより、これらのＯＡＭソリューションの別個の実装の必要性を回避する。オープンフロースイッチから収集されるメトリックデータの処理はオープンフローコントローラ内に実装されるため、オープンフロースイッチ内に、ＯＡＭの機能的または物理的な監視ポイントを配備する必要はない。オープンフロースイッチにおいて物理的な監視ポイントを排除することにより、いくつかの利点をもたらす。
【０１２３】
例えば、これらの監視ポイントを配備し、構成するためのいかなる構成プロトコルの拡張をも必要としない。さらに、このような監視ポイントの構成は、非常に複雑になることがあり、例えば、それぞれのＯＡＭの特徴（例えば、パケット損失）を提供するために評価されるフローエントリの指定を必要とする。したがって、本発明の実施形態は、オープンフロースイッチにおけるＯＡＭ機能の実装を簡素化し、それにより、これらのオープンフロースイッチのコストを低下させる。
【０１２４】
本発明の実施例は、オープンフロー１．１で定義されたものを超える、オープンフロースイッチ、オープンフローコントローラ、及びオープンフロープロトコルの拡張が含まれている。これらの拡張機能は、オープンフロー１．１と下位互換性がある。他のスイッチは、既存のオープンフロー仕様に従った標準スイッチであることができる一方、オープンフローコントローラにフィードバックを提供するこれらのオープンフロースイッチだけは、拡張機能をサポートしている必要がある。
【０１２５】
上記の説明は例示であって限定的なものではないことを意図していることを理解すべきである。多くの他の実施形態は、上記の説明を読み、理解することにより当業者には明らかであろう。本発明の範囲は、したがって、そのような請求項に付与される均等物の全範囲とともに、添付の特許請求の範囲を参照して決定されるべきである。
【図１】
0005981993.tif 000002
【図２】
0005981993.tif 000003
【図３Ａ】
0005981993.tif 000004
【図３Ｂ】
0005981993.tif 000005
【図４】
0005981993.tif 000006
【図５】
0005981993.tif 000007
【図６】
0005981993.tif 000008
【図７Ａ】
0005981993.tif 000009
【図７Ｂ】
0005981993.tif 000010
【図８】
0005981993.tif 000011
【図９】
0005981993.tif 000012
【図１０】
0005981993.tif 000013
【図１１】
0005981993.tif 000014
【図１２】
0005981993.tif 000015
【図１３】
0005981993.tif 000016
【図１４】
0005981993.tif 000017