(57)【要約】      （修正有）【課題】ｓＦｌｏｗとオープンフローを組み合わせたネットワークにおいて、きめ細かいトラフィック監視を行うことを提供する。【解決手段】フロー（パケット群）を特定するためのフロー識別子（ＦｌｏｗＩＤ）を用意し、当該フロー識別子をフローテーブルのエントリに格納し、ｓＦｌｏｗエージェントがデータソースとしてフロー識別子を指定できるようにする。具体的には、コントローラからスイッチのフローテーブルに登録されたエントリのＣｏｏｋｉｅにフロー識別子を保持し、エントリのルールに適合する受信パケットに対し、エントリに定義されたアクションに従った動作を行う。スイッチにおいて、ｓＦｌｏｗで使用されるＭＩＢにデータソースとして指定されたフロー識別子を取得し、該フロー識別子を基に、エントリに適合したパケットの統計情報を取得する。【選択図】図１Ａ
2015111902.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理規則に従い、受信パケットの処理を行う通信ノードと、
前記通信ノードを制御し、前記通信ノードに対して前記処理規則を設定する制御装置と、
前記通信ノードを経由するパケットフローの統計情報を収集する統計情報取得装置と
を備え、
前記通信ノードは、
前記処理規則ごとに統計情報と、パケットフローを示すフロー識別子とを対応付けて記憶し、
統計情報を取得する対象とするパケットフローに対応する前記フロー識別子に基づいて、前記パケットフローに対するサンプリング処理を行い、前記パケットフローに関する統計情報を取得し、
前記取得した統計情報を、前記統計情報取得装置に送信する
ことを特徴とする通信システム。
【請求項２】
前記通信ノードは、
統計情報を取得する対象として指定されたパケットフローのフロー識別子と前記通信ノードが記憶するフロー識別子が一致した場合、前記記憶されている統計情報を取得する
ことを特徴とする請求項１に記載の通信システム。
【請求項３】
前記通信ノードは、
受信パケットのヘッダ情報を圧縮してフロー識別子を作成し、
前記作成したフロー識別子を、統計情報を取得する対象として指定する
ことを特徴とする請求項１または２に記載の通信システム。
【請求項４】
所定の処理規則に従い、受信パケットの処理を行う通信ノードであって、
前記通信ノードに対して設定された処理規則ごとに、前記通信ノードを経由するパケットフローの統計情報と、前記パケットフローを示すフロー識別子とを対応付けて記憶し、
統計情報を取得する対象とするパケットフローに対応する前記フロー識別子に基づいて、前記パケットフローに対するサンプリング処理を行い、前記パケットフローに関する統計情報を取得する
ことを特徴とする通信ノード。
【請求項５】
通信ノードが所定の処理規則に従い、受信パケットの処理を行うことと、
制御装置が前記通信ノードを制御し、前記通信ノードに対して前記処理規則を設定することと、
統計情報取得装置が前記通信ノードを経由するパケットフローの統計情報を収集することと
を備え、
前記受信パケットの処理を行うことは、
前記処理規則ごとに統計情報と、パケットフローを示すフロー識別子とを対応付けて記憶することと、
統計情報を取得する対象とするパケットフローに対応する前記フロー識別子に基づいて、前記パケットフローに対するサンプリング処理を行い、前記パケットフローに関する統計情報を取得することと、
前記取得した統計情報を、前記統計情報取得装置に送信することと
を具備する
通信方法。
【請求項６】
前記受信パケットの処理を行うことは、
統計情報を取得する対象として指定されたパケットフローのフロー識別子と前記通信ノードが記憶するフロー識別子が一致した場合、前記記憶されている統計情報を取得すること
をさらに具備する
請求項５に記載の通信方法。
【請求項７】
前記受信パケットの処理を行うことは、
受信パケットのヘッダ情報を圧縮してフロー識別子を作成することと、
前記作成したフロー識別子を、統計情報を取得する対象として指定することと
をさらに具備する
請求項５または６に記載の通信方法。
【請求項８】
所定の処理規則に従い、受信パケットの処理を行う通信ノードにおいて、
前記通信ノードに対して設定された処理規則ごとに、前記通信ノードを経由するパケットフローの統計情報と、前記パケットフローを示すフロー識別子とを対応付けて記憶することと、
統計情報を取得する対象とするパケットフローに対応する前記フロー識別子に基づいて、前記パケットフローに対するサンプリング処理を行い、前記パケットフローに関する統計情報を取得することと
を具備する
通信ノードの通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特にネットワークシステムにおけるトラフィック監視方法に関する。
【背景技術】
【０００２】
ネットワーク運用において、トラフィック監視はＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）確保のための重要な要因（ｆａｃｔｏｒ）である。
【０００３】
主要なトラフィック監視の手法として、ギガビット級のネットワークでスイッチやルータ等のトラフィックを監視する技術である「ｓＦｌｏｗ」（ＲＦＣ３１７６）がある。
【０００４】
ｓＦｌｏｗは、パケット・サンプリングに基づくトラフィック管理技術であり、監視対象データを特定の割合で間引いて取得（採取）し、統計学的手法によりトラフィック情報を生成する手法である。ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）  ＲＦＣ（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔ）３１７６として２００１年９月より公開され、無償提供されている。
【０００５】
［ｓＦｌｏｗ］
以下に、ｓＦｌｏｗによる監視の概要について説明する。
【０００６】
ｓＦｌｏｗによる監視が行われるネットワークでは、ＮＷ機器（ネットワーク接続機器）外部で動作するｓＦｌｏｗコレクタが、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）に準拠した制御メッセージをＮＷ機器に送信することで、ＮＷ機器内部で動作するｓＦｌｏｗエージェントを制御し、ＭＩＢ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂａｓｅ：管理情報データベース）に各種設定を行う。
【０００７】
ｓＦｌｏｗでは、統計情報の取得対象となるパケットを特定するためのデータソースをＭＩＢに指定できる。統計情報とは、サンプリング値に基づく統計情報である。ｓＦｌｏｗでは、データソースとしてパケットのヘッダ情報の領域（フィールド）の全体を指定する。ｓＦｌｏｗエージェントは、ＭＩＢに指定されたデータソースを基に、パケット照合を行う。
【０００８】
ＭＩＢに指定できるデータソースとして、以下のようなものを指定することができる。
【０００９】
・「ｉｆｌｎｄｅｘ．＜ｌ＞」：ポート単位。＜ｌ＞にはポート番号を指定。０を指定した場合は全ポートが対象。
【００１０】
・「ｓｍｏｎＶｌａｎＤａｔａＳｏｕｒｃｅ．＜Ｖ＞」：ＶＬＡＮ単位。＜Ｖ＞にはＶＬＡＮ識別子（ＩＥＥＥ８０２．１Ｑ）を指定。
【００１１】
・「ｅｎｔＰｈｙｓｉｃａｌＥｎｔｒｙ．＜Ｎ＞」：ｓＦｌｏｗエージェントの物理エンティティ（構成要素）。
【００１２】
ｓＦｌｏｗエージェントは、パケット照合時に、データソースを基にパケットを分類し、平均して閾値の割合（例えば１０００件に１件）になるようにランダムにサンプリングし、サンプリング値を統計情報としてｓＦｌｏｗデータグラムでｓＦｌｏｗコレクタに送信する。例えば、ｓＦｌｏｗエージェントは、サンプリングしたパケット（サンプルパケット）のヘッダのコピーや、物理ポート及びＶＬＡＮポート等のインターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）毎のカウンタ値を、統計情報としてｓＦｌｏｗデータグラムでｓＦｌｏｗコレクタに送信する。
【００１３】
ｓＦｌｏｗコレクタは、統計情報を基に、統計処理を行う。
【００１４】
なお、ｓＦｌｏｗエージェントは、スイッチ等のＮＷ機器上で動作するソフトウェア／ハードウェアにより実現される。一般的には、ルータやスイッチ等のネットワーク接続機器にＡＳＩＣ（特定用途向けＩＣ）として搭載される。また、ｓＦｌｏｗコレクタは、サーバ等の計算機上で動作するソフトウェアにより実現される。
【００１５】
ｓＦｌｏｗの詳細については、非特許文献１、２に記載されている。
【００１６】
ｓＦｌｏｗの長所としては、シンプルなサンプリングメカニズムであり、ハードウェアで実装可能であるため、大した負荷はなく、ネットワークが性能劣化しにくいという点が挙げられる。
【００１７】
ｓＦｌｏｗの短所としては、閾値に到達したパケットについて統計情報を取得するため、重要なパケットであっても閾値を超えないパケットの統計情報が取得できない（閾値を超えない重要なパケットの統計情報が漏れる）可能性がある点が挙げられる。
【００１８】
また、ｓＦｌｏｗの他にも、有力なトラフィック監視の手法として、「オープンフロー」（ＯｐｅｎＦｌｏｗ）がある。
【００１９】
［オープンフロー］
以下に、オープンフローによる監視の概要について説明する。
【００２０】
オープンフローによる監視が行われるネットワークでは、ＯＦＣ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等のコントローラが、オープンフロープロトコル（ＯｐｅｎＦｌｏｗ  Ｐｒｏｔｏｃｏｌ）に準拠した制御メッセージにより、ＯＦＳ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のスイッチのフローテーブルを操作することによりスイッチの挙動を制御・監視する。
【００２１】
フローテーブルとは、所定のマッチ条件（ルール）に適合（マッチ）するパケット（通信データ）に対して行うべき所定の動作（アクション）を定義したエントリ（ｅｎｔｒｙ）が登録されたテーブルである。ルールに適合するパケット群（パケット系列）をフロー（Ｆｌｏｗ）と呼ぶ。パケットは、フレームと読み替えても良い。
【００２２】
すなわち、オープンフローにおけるフローは、ｓＦｌｏｗにおけるフローとは異なる概念である。
【００２３】
フローのルールは、パケットの各プロトコル階層のヘッダ情報の領域（フィールド）に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローのルールとして使用可能である。
【００２４】
フローのアクションは、通常、所定の転送先へのパケット転送である。無論、フローのアクションとして、パケット破棄を指定することも可能である。
【００２５】
オープンフローでは、スイッチを外部のコントローラから制御し、スイッチとコントローラとの間のプロトコルを規定することで、異なるベンダのスイッチであっても外部から自由に制御できる。
【００２６】
オープンフローでは、スイッチは、該当するエントリがないパケットを受信した場合、コントローラに対して、当該パケットについての問い合わせ（エントリ要求）を送信する。通常、スイッチは、当該パケットについての問い合わせとして、当該パケットをコントローラに転送する。
【００２７】
コントローラは、セキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）接続で、管理下にあるスイッチと接続されている。コントローラは、管理下にあるスイッチからパケットについての問い合わせを受けた場合、当該パケット群（フロー）の経路（パス）を計算し、この経路に基づき、当該スイッチのフローテーブルに、「当該パケット群（フロー）を所定の転送先へ転送する」という旨のエントリを登録する。このとき、コントローラは、当該エントリをフローテーブルに登録するための制御メッセージを、スイッチに対して送信する。
【００２８】
また、スイッチは、フローテーブルを参照し、統計情報を求めるフローのエントリに受信パケットが該当すれば、フロー毎にサンプリング値を取得し、統計情報として保持する。
【００２９】
コントローラは、オープンフロープロトコルに準拠した統計情報収集用の制御メッセージをスイッチに送信することで、スイッチからフロー毎の統計情報を取得し、トラフィック監視に利用する。
【００３０】
オープンフローの詳細については、非特許文献３、４に記載されている。
【００３１】
オープンフローの長所としては、統計情報を取得したいパケットに対して、フローのルールとしてｓＦｌｏｗよりも細かいマッチ条件が設定できるため、きめ細かいサンプリングが可能である点が挙げられる。
【００３２】
オープンフローの短所としては、統計情報の取得にはコントローラ主導でコントローラとスイッチとの間の通信が発生するため、ｓＦｌｏｗと比べてネットワークの性能劣化が大きい点が挙げられる。
【００３３】
関連する技術として、特許文献１（特開２００７−３３６５１２号公報）に統計情報収集システム及び統計情報収集装置が開示されている。この関連技術では、統計情報収集装置と、コレクタ装置と、を備え、統計情報収集装置が、パケットを受信し、受信パケットの統計情報を収集し、収集された統計情報をコレクタ装置に送信する通信情報収集システムにおいて、統計情報収集装置は、受信パケットが属するフローを識別するためのフロー識別条件を含むフロー情報が格納され、フロー識別条件によって識別されるフロー毎に、収集されたパケットの統計情報を分類し、フロー毎に分類された統計情報を参照し、統計情報収集装置が統計情報をコレクタ装置に送信する送信間隔をフロー毎に決定することを特徴とする。
【００３４】
また、特許文献２（特開２０１０−０４１４７１号公報）に通信データ統計装置、通信データ統計方法およびプログラムが開示されている。この関連技術では、ネットワークを流れる通信データについて、複数種類の条件の統計をとる通信データ統計装置は、パケットを受信する受信部と、予め定められた２種類以上のフロー識別子に関して、対応する識別子が一致するパケットを同一の集約フローに分類して、集約フローに属するパケットの集約統計情報を生成する集約部と、１つの統計の条件を定める識別子に関して、対応する識別子が一致する統計用フローに、１つの集約フローを分類し、分類された統計用フローに属するパケットの統計情報を、対応する集約統計情報に基づいて更新する更新処理を、複数の集約フローについて繰り返し行うことによって、複数種類の統計の条件について、各統計情報の更新処理を行う統計処理部と、を備える。
【先行技術文献】
【特許文献】
【００３５】
【特許文献１】特開２００７−３３６５１２号公報
【特許文献２】特開２０１０−０４１４７１号公報
【非特許文献】
【００３６】
【非特許文献１】“第１章  ｓＦｌｏｗとは  −  ネットワーク管理者のためのトラフィック管理入門：ＩＴｐｒｏ”  ＜ｈｔｔｐ：／／ｉｔｐｒｏ．ｎｉｋｋｅｉｂｐ．ｃｏ．ｊｐ／ａｒｔｉｃｌｅ／ＣＯＬＵＭＮ／２００７０４１０／２６７８６９／＞
【非特許文献２】“ＩｎＭｏｎ  Ｃｏｒｐｏｒａｔｉｏｎ’ｓ  ｓＦｌｏｗ：  Ａ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｍｏｎｉｔｏｒｉｎｇ  Ｔｒａｆｆｉｃ  ｉｎ  Ｓｗｉｔｃｈｅｄ  ａｎｄ  Ｒｏｕｔｅｄ  Ｎｅｔｗｏｒｋｓ”  ＜ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ３１７６．ｔｘｔ＞
【非特許文献３】“Ｔｈｅ  ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｃｏｎｓｏｒｔｉｕｍ”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／＞
【非特許文献４】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）  Ｄｅｃｅｍｂｅｒ  ３１，  ２００９”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ＞
【発明の概要】
【００３７】
［ｓＦｌｏｗとオープンフローの連携］
エンタープライズ領域のネットワークでは、きめ細かいトラフィック監視が必要となる。例えば、ＱｏＳ確保や障害予防を目的としたトラフィック全体の監視や、トラフィックが極端に少ないが重要度の高いパケットの確認等が必要となる。
【００３８】
きめ細かいトラフィック監視を実現するために、ｓＦｌｏｗとオープンフローを組み合わせて、お互いの短所を補うネットワーク運用を検討している。
【００３９】
ｓＦｌｏｗを利用することで、高速なネットワークでもパフォーマンスを落とさずに統計処理（サンプリング）を行うことができる。
【００４０】
オープンフローを利用することで、ｓＦｌｏｗで統計情報を取得できない重要なパケット（重要だがトラフィックが極端に少ないパケット）に対しても統計処理を行うことができる。
【００４１】
ｓＦｌｏｗとオープンフローとの両方の出力結果を組み合わせて、有用な情報を得ることができる。例えば、トラフィック全体の傾向、重要なパケットが正常に伝達していること、重要なパケットが含まれるトラフィックにおける問題の有無について把握することができる。
【００４２】
しかし、ｓＦｌｏｗとオープンフローを組み合わせたネットワークにおいて、きめ細かいトラフィック監視を行うためには、以下の課題がある。
【００４３】
ｓＦｌｏｗでは、統計情報の取得対象となるパケットを特定するためのデータソースをＭＩＢに指定できるが、データソースとしてパケットのヘッダ情報の領域（フィールド）の一部しか指定できない。すなわち、ヘッダ情報のうち、データソースに対応する情報しか指定できない。
【００４４】
そのため、オープンフローのようにヘッダ情報を構成する複数の領域（フィールド）の各々を任意に組み合わせてマッチ条件（ルール）を定義し、当該マッチ条件（ルール）に適合するフロー毎に統計情報を取得する技術には、ｓＦｌｏｗは適用できなかった。
【００４５】
そこで、本発明では、フロー（パケット群）を特定するためのフロー識別子（Ｆｌｏｗ  ＩＤ）を用意し、当該フロー識別子をフローテーブルのエントリに格納し、ｓＦｌｏｗエージェントがデータソースとしてフロー識別子を指定できるようにする。
【００４６】
本発明に係るネットワークシステムは、コントローラと、スイッチとを含む。該コントローラは、所定のフローにフロー識別子を割り当てる機能を持つフロー識別子管理部と、該スイッチがフローを構成する各パケットを一律に制御するためのルールと動作が定義されたエントリを、該スイッチのフローテーブルに設定する機能、及び該フローテーブル内の所定のフローに関するエントリの所定の領域に、該フローに割り当てられたフロー識別子を登録する機能を持つエントリ管理部とを具備する。該スイッチは、該エントリに定義されたルールに適合する受信パケットに対して、該エントリに定義された動作を行い、該受信パケットの統計情報を該エントリに記録する機能を持つ転送処理部と、統計情報を取得する対象として指定されたフローに対応するフロー識別子を取得し、該フロー識別子を保持するエントリに適合したパケットの統計情報を所定の頻度で取得する機能を持つ統計処理部とを具備する。
【００４７】
本発明に係るコントローラは、所定のフローにフロー識別子を割り当てる機能を持つフロー識別子管理部と、スイッチがフローを構成する各パケットを一律に制御するためのルールと動作が定義されたエントリを、該スイッチのフローテーブルに設定する機能を持つエントリ管理部とを具備する。該エントリ管理部は、該フローテーブル内の所定のフローに関するエントリの所定の領域に、該フローに割り当てられたフロー識別子を登録し、統計情報を取得する対象として指定する機能を持つ。
【００４８】
本発明に係るスイッチは、フローを構成する各パケットを一律に制御するためのルールと動作が定義され、該フローに対応するフロー識別子を格納する領域を持つエントリを設定するためのエントリを設定するためのフローテーブルと、該フローテーブル内のエントリに定義されたルールに適合する受信パケットに対して、該エントリに定義された動作を行い、該受信パケットの統計情報を該エントリに記録する機能を持つ転送処理部と、統計情報を取得する対象として指定されたフローに対応するフロー識別子を取得し、該フロー識別子を保持するエントリに適合したパケットの統計情報を所定の頻度で取得する機能を持つ統計処理部とを具備する。
【００４９】
本発明に係るトラフィック監視方法では、コントローラにおいて、スイッチがフローを構成する各パケットを一律に制御するためのルールと動作が定義されたエントリを、該スイッチのフローテーブルに設定し、所定のフローにフロー識別子を割り当てることと、該フローテーブル内の所定のフローに関するエントリの所定の領域に、該フローに割り当てられたフロー識別子を登録する。また、該スイッチにおいて、該エントリに定義されたルールに適合する受信パケットに対して、該エントリに定義された動作を行い、該受信パケットの統計情報を該エントリに記録し、統計情報を取得する対象として指定されたフローに対応するフロー識別子を取得し、該フロー識別子を保持するエントリに適合したパケットの統計情報を所定の頻度で取得する。
【００５０】
本発明に係るプログラムは、上記のトラフィック監視方法における処理を、スイッチとして使用される通信機器や、コントローラとして使用される計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００５１】
これにより、ｓＦｌｏｗとオープンフローを組み合わせたネットワークにおいて、きめ細かいトラフィック監視を行うことを実現する。
【図面の簡単な説明】
【００５２】
【図１Ａ】本発明の第１実施形態に係るネットワークシステムの構成及び動作の例を説明するための概念図である。
【図１Ｂ】コントローラの構成例を示す概念図である。
【図１Ｃ】ｓＦｌｏｗコレクタの構成例を示す概念図である。
【図２】Ｃｏｏｋｉｅについて説明するための図である。
【図３】パケットのヘッダ情報について説明するための図である。
【図４】本発明の第１実施形態における処理を示すシーケンス図である。
【図５Ａ】本発明の第２実施形態に係るネットワークシステムの構成及び動作の例を説明するための概念図である。
【図５Ｂ】コントローラの構成例を示す概念図である。
【図５Ｃ】ｓＦｌｏｗコレクタの構成例を示す概念図である。
【図６】本発明の第２実施形態における処理を示すシーケンス図である。
【発明を実施するための形態】
【００５３】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００５４】
［基本構成］
図１Ａに示すように、本発明の第１実施形態に係るネットワークシステムは、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ：ｎはスイッチ台数）と、コントローラ２０と、ｓＦｌｏｗコレクタ３０を含む。
【００５５】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）及びコントローラ２０は、オープンフローネットワークを形成する。スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、オープンフローネットワークにおけるノード（ｎｏｄｅ）である。コントローラ２０は、セキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）接続で、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）と接続されている。ｓＦｌｏｗコレクタ３０は、通常回線で、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）と接続されており、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）から通知された統計情報を収集する。
【００５６】
［スイッチ］
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、オープンフローに対応したスイッチである。
【００５７】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々は、オープンフロー処理部（転送処理部）１１と、ｓＦｌｏｗ処理部（統計処理部）１２を備える。
【００５８】
［オープンフロー処理部］
オープンフロー処理部１１は、スイッチ上で動作するオープンフローエージェントにより実現される。当該オープンフローエージェントは、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）に常駐している。
【００５９】
オープンフロー処理部１１は、データ転送部１１１と、フローテーブル１１２を備える。
【００６０】
［データ転送部］
データ転送部１１１は、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）がパケットを受信した際、当該受信パケットがフローテーブル１１２に登録されたエントリのいずれかに適合するか照合する。すなわち、データ転送部１１１は、エントリに定義されたマッチ条件（ルール）と当該受信パケットとを照合し、当該受信パケットのヘッダ情報がマッチ条件（ルール）と一致したエントリを、当該受信パケットに適合するエントリと判断する。
【００６１】
データ転送部１１１は、受信パケットに適合するエントリが存在する場合、適合したエントリに定義されたアクションに従って当該受信パケットを転送し、フロー毎にサンプリング値を取得し、統計情報として当該エントリに記録（格納）する。ここでは、データ転送部１１１は、当該エントリに定義されたルールに適合する受信パケットに対して、当該エントリに定義された動作を行い、当該動作を統計情報として当該エントリに記録する。
【００６２】
なお、適合したエントリに定義された処理内容（アクション）がパケットの破棄である場合、データ転送部１１１は、適合したエントリに従って、当該受信パケットを破棄する。
【００６３】
［フローテーブル］
フローテーブル１１２は、所定のマッチ条件（ルール）に適合するパケット（通信データ）に対して行うべき所定の処理内容（アクション）に加え、更に、統計情報としてフロー毎のサンプリング値を記録するための「統計値」（Ｓｔａｔｉｃｔｉｃｓ）と、フロー識別子（Ｆｌｏｗ  ＩＤ）を設定するための「Ｃｏｏｋｉｅ」（クッキー）を定義したエントリが登録されたテーブルである。「Ｃｏｏｋｉｅ」を定義したエントリは、統計情報取得用エントリである。但し、実際には、エントリの「Ｃｏｏｋｉｅ」以外の領域（フィールド）内に、フロー識別子を設定しても良い。「Ｃｏｏｋｉｅ」は一例に過ぎない。
【００６４】
上記の「Ｃｏｏｋｉｅ」は、エントリの追加・編集時に、任意の値を設定できるｕｎｉｔ６４＿ｔ型（６４ｂｉｔ整数型）の領域（フィールド）である。
【００６５】
なお、オープンフローにおける「Ｃｏｏｋｉｅ」は、エントリの追加・失効（削除）時にしか必要ない情報であるため、通常はオープンフロープロトコル経由以外では取得できない。
【００６６】
本発明では、フローテーブル１１２のエントリに「Ｃｏｏｋｉｅ」の領域（フィールド）を用意し、オープンフロープロトコル経由以外でも取得できるようにする。
【００６７】
具体的には、フローテーブル１１２のエントリのうち、少なくとも「統計値」と「Ｃｏｏｋｉｅ」をｓＦｌｏｗ処理部１２から可読にする。
【００６８】
［ｓＦｌｏｗ処理部］
ｓＦｌｏｗ処理部１２は、スイッチ上で動作するｓＦｌｏｗエージェントにより実現される。当該ｓＦｌｏｗエージェントは、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）に常駐している。
【００６９】
ｓＦｌｏｗ処理部１２は、サンプリング処理部１２１と、ＭＩＢ１２２を備える。
【００７０】
［サンプリング処理部］
サンプリング処理部１２１は、通常のｓＦｌｏｗの場合と同じく、ｓＦｌｏｗでのパケット照合時に、データソースを基にパケットを分類し、平均して閾値の割合（例えば１０００件に１件）になるようにランダムにサンプリングし、サンプリング値を統計情報としてｓＦｌｏｗデータグラムでｓＦｌｏｗコレクタ３０に送信する。
【００７１】
また、サンプリング処理部１２１は、ＭＩＢ１２２を参照し、ＭＩＢ１２２のデータソースとしてフロー識別子が指定されているか確認する。
【００７２】
なお、確認するタイミングは、データ転送部１１１が受信パケットをフローテーブル１１２に照合する際でも良いし、通常のｓＦｌｏｗでのサンプリング値を統計情報としてｓＦｌｏｗデータグラムでｓＦｌｏｗコレクタ３０に送信する際でも良い。
【００７３】
サンプリング処理部１２１は、ＭＩＢ１２２のデータソースとしてフロー識別子が指定されている場合、フローテーブル１１２のエントリの「Ｃｏｏｋｉｅ」の領域（フィールド）を参照し、同一のフロー識別子が格納されているエントリを検出し、当該エントリに統計情報として記録されているサンプリング値を取得し、サンプリング値を統計情報としてｓＦｌｏｗコレクタ３０に送信する。
【００７４】
或いは、サンプリング処理部１２１は、ＭＩＢ１２２のデータソースとしてフロー識別子が指定されている場合、当該フロー識別子をオープンフロー処理部１１に通知する。オープンフロー処理部１１は、「Ｃｏｏｋｉｅ」の領域（フィールド）に当該フロー識別子が格納されているエントリの有無、及び当該エントリに記録された統計情報の有無を確認し、該当する統計情報があれば、この統計情報を応答としてサンプリング処理部１２１に送信する。サンプリング処理部１２１は、オープンフロー処理部１１から応答として受け取った統計情報をｓＦｌｏｗコレクタ３０に送信するようにしても良い。
【００７５】
これにより、本発明では、ｓＦｌｏｗにおいて、オープンフローでの統計情報を取得し参照することができる。
【００７６】
［ＭＩＢ］
本発明では、ＭＩＢ１２２に指定できるデータソースとして、新たに、以下のようなものを用意する。
【００７７】
・「ｓＦｌｏｗＤａｔａＳｏｕｒｃｅ．＜Ｆ＞」：フロー単位。＜Ｆ＞には「Ｃｏｏｋｉｅ」に指定したフロー識別子を指定。「０ｘｆｆｆｆｆｆｆｆｆｆｆｆｆｆｆｆ」を指定した場合は全フローが対象。なお、「０ｘ」で始まる表記は１６進数とする。
【００７８】
但し、実際には、この例に限定されない。
【００７９】
［コントローラ］
コントローラ２０は、オープンフローにおいてコントローラの役割を果たすサーバであり、当該サーバ上で動作するソフトウェアにより実現される。
【００８０】
図１Ｂに示すように、コントローラ２０は、フロー識別子管理部２１と、経路制御部２２と、エントリ管理部２３を備える。
【００８１】
［フロー識別子管理部］
フロー識別子管理部２１は、フロー識別子を作成／取得し、フロー識別子をフロー単位に割り当てる。その後、フロー識別子管理部２１は、フロー識別子をｓＦｌｏｗコレクタ３０に通知する。
【００８２】
なお、本発明では、コントローラ２０には、統計情報の取得対象となる重要フローが事前に登録されているものとする。すなわち、コントローラ２０には、重要フローに該当するパケット群を特定するためのマッチ条件（ルール）が事前に登録されている。コントローラ２０への事前登録は、外部のコンソール端末や管理サーバ等により実施される。フロー識別子管理部２１は、統計情報の取得対象となる重要フローに対して、フロー識別子を割り当てる。
【００８３】
［経路制御部］
経路制御部２２は、トポロジ（ｔｏｐｏｌｏｇｙ：接続形態）検知を行った際に、ネットワークを構成するスイッチ１０（１０−ｉ、ｉ＝１〜ｎ）を検知し、フロー毎の経路（パス）を計算し、経路情報を生成する。或いは、統計情報の取得対象となる重要フローと共に、当該重要フローの経路情報も事前に登録される場合、経路制御部２２は、この経路情報を保持する。
【００８４】
［エントリ管理部］
エントリ管理部２３は、フローテーブル１１２にエントリを登録する。具体的には、エントリ管理部２３は、統計情報の取得対象となる重要フローを保持し、当該重要フローと経路情報を基にエントリを定義し、フローテーブル１１２に当該エントリを登録するための制御メッセージをスイッチ１０（１０−ｉ、ｉ＝１〜ｎ）に送信する。
【００８５】
［Ｃｏｏｋｉｅ］
図２に示すように、本発明では、コントローラ２０は、フローテーブル１１２のエントリを追加・修正する際、エントリ追加・修正用の制御メッセージ「Ｍｏｄｉｆｙ  Ｆｒｏｗ  Ｅｎｔｒｙ  Ｍｅｓｓａｇｅ」に「Ｃｏｏｋｉｅ」を設定することができる。これにより、コントローラ２０は、フローテーブル１１２のエントリに「Ｃｏｏｋｉｅ」の領域（フィールド）を設け、この領域（フィールド）に所定のフロー識別子を格納することができる。
【００８６】
また、コントローラ２０は、状態取得用の制御メッセージ「Ｒｅａｄ  Ｓｔａｔｅ  Ｍｅｓｓａｇｅ」若しくはエントリ削除用の制御メッセージ「Ｆｌｏｗ  Ｒｅｍｏｖｅｄ  Ｍｅｓｓａｇｅ」にも、設定された「Ｃｏｏｋｉｅ」の値（フロー識別子）を含めることもできる。
【００８７】
なお、オープンフローにおいて、コントローラがフローテーブルにエントリを登録する方式は、大きく「Ｐｒｏａｃｔｉｖｅ型」と、「Ｒｅａｃｔｉｖｅ型」の２つの方式に分けられる。
【００８８】
「Ｐｒｏａｃｔｉｖｅ型」では、コントローラが「事前に」（データ通信が始まる前に）、所定のパケット群（フロー）の経路（パス）を計算し、フローテーブルにエントリを登録する。すなわち、ここでいう「Ｐｒｏａｃｔｉｖｅ型」とは、コントローラが自発的に行う「事前のエントリ登録」を指す。
【００８９】
「Ｒｅａｃｔｉｖｅ型」では、コントローラが「スイッチから１ｓｔパケット（適合するエントリがない新規のパケット）についての問い合わせを受けた際に」当該パケット群（フロー）の経路を計算し、フローテーブルにエントリを登録する。すなわち、ここでいう「Ｒｅａｃｔｉｖｅ型」とは、実際のデータ通信時に、コントローラがスイッチからの問い合わせに応じて行う「リアルタイムのエントリ登録」を指す。
【００９０】
ここでは、エントリ管理部２３は、事前登録された重要フローの統計情報を取得するためのエントリの追加・修正用の制御メッセージ「Ｍｏｄｉｆｙ  Ｆｒｏｗ  Ｅｎｔｒｙ  Ｍｅｓｓａｇｅ」に「Ｃｏｏｋｉｅ」を設定し、「Ｃｏｏｋｉｅ」にフロー識別子を格納し、「Ｐｒｏａｃｔｉｖｅ型」で、事前（通信開始前）にフローテーブル１１２に当該エントリを登録する。ここでいう「事前（通信開始前）」とは、「当該フローテーブルを保有するスイッチがパケットの受信・転送を開始する前」を意味する。
【００９１】
或いは、エントリ管理部２３は、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）から１ｓｔパケットについての問い合わせを受けた際に、上記の制御メッセージ「Ｍｏｄｉｆｙ  Ｆｒｏｗ  Ｅｎｔｒｙ  Ｍｅｓｓａｇｅ」に「Ｃｏｏｋｉｅ」を設定し、「Ｃｏｏｋｉｅ」にフロー識別子を格納し、「Ｒｅａｃｔｉｖｅ型」で、フローテーブル１１２に当該エントリを登録するようにしても良い。
【００９２】
更に、エントリ管理部２３は、フローテーブル１１２にエントリを登録した際に、当該エントリの「Ｃｏｏｋｉｅ」に格納したフロー識別子を、ＭＩＢ１２２にデータソースとして設定するようにしても良い。
【００９３】
例えば、エントリ管理部２３は、フローテーブル１１２にエントリを登録すると同時に、当該エントリの「Ｃｏｏｋｉｅ」に格納したフロー識別子をｓＦｌｏｗコレクタ３０に通知する。ｓＦｌｏｗコレクタ３０は、コントローラ２０からフロー識別子を取得して、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）上のＭＩＢ１２２にデータソースとしてフロー識別子を設定する。
【００９４】
［ｓＦｌｏｗコレクタ］
ｓＦｌｏｗコレクタ３０は、ｓＦｌｏｗにおいてコレクタの役割を果たすサーバであり、当該サーバ上で動作するソフトウェアにより実現される。
【００９５】
図１Ｃに示すように、ｓＦｌｏｗコレクタ３０は、フロー識別子設定部３１と、統計情報収集部３２を備える。
【００９６】
［フロー識別子設定部］
フロー識別子設定部３１は、コントローラ２０側から通知されたフロー識別子を保持し、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）上のＭＩＢ１２２にデータソースとしてフロー識別子を設定する。
【００９７】
［統計情報収集部］
統計情報収集部３２は、ｓＦｌｏｗ処理部１２から送付される統計情報を集計・編集・表示する。更に、統計情報収集部３２は、編集データをアナライザ（Ａｎａｌｙｚｅｒ）に送付するようにしても良い。図示しないが、アナライザは、ｓＦｌｏｗコレクタ３０から送付されるデータをグラフィカルに表示する。なお、アナライザは、ｓＦｌｏｗコレクタ３０と一体化している場合がある。
【００９８】
［ハードウェアの例示］
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置（ｐａｃｋｅｔ  ｓｈａｐｅｒ）、セキュリティ監視制御装置（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）、ゲートキーパー（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。また、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、物理マシン上に構築された仮想スイッチでも良い。
【００９９】
コントローラ２０及びｓＦｌｏｗコレクタ３０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、コントローラ２０及びｓＦｌｏｗコレクタ３０は、物理マシン上に構築された仮想マシン（ＶＭ）でも良い。
【０１００】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々、コントローラ２０、及びｓＦｌｏｗコレクタ３０を接続するネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【０１０１】
また、オープンフロー処理部１１、ｓＦｌｏｗ処理部１２、フロー識別子管理部２１、経路制御部２２、エントリ管理部２３、フロー識別子設定部３１、及び統計情報収集部３２の各々は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、通信用インターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）とによって実現される。
【０１０２】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。
【０１０３】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【０１０４】
上記の通信用インターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや、同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【０１０５】
なお、オープンフロー処理部１１、ｓＦｌｏｗ処理部１２、フロー識別子管理部２１、経路制御部２２、エントリ管理部２３、フロー識別子設定部３１、及び統計情報収集部３２の各々は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【０１０６】
但し、実際には、これらの例に限定されない。
【０１０７】
［フロー識別子の具体例］
ここで、フロー識別子の具体例について説明する。フロー識別子を払い出す方式としては、以下の（１）（２）の２通りが考えられる。
【０１０８】
（１）パケットのヘッダ情報の領域（フィールド）とは無関係に一意な任意の値をフロー識別子としてコントローラから払い出す方式
【０１０９】
フロー識別子の採番方法については、例えば、０から初めて１ずつインクリメント（ｉｎｃｒｅｍｅｎｔ）する方法が考えられる。なお、フロー識別子の中の任意の１ｂｉｔで統計情報を取得するかどうかを示すようにすることで、特にＭＩＢ１２２に設定しなくてもサンプリング処理部１２１が統計情報を取得できるようにすることができる。
【０１１０】
コントローラ２０は、フローテーブル１１２にエントリを登録した際、ｓＦｌｏｗコレクタ３０に当該エントリを割り振る。このとき、コントローラ２０は、フロー（パケット群）とフロー識別子との対応を基に、ｓＦｌｏｗコレクタ３０に対して統計情報を取得したいフローを指定する。
【０１１１】
なお、実際には、外部のコンソール端末や管理サーバ等が、コントローラ２０から割り振り予定のフロー識別子を取得して、ｓＦｌｏｗコレクタ３０に通知するようにしても良い。
【０１１２】
ｓＦｌｏｗコレクタ３０は、フロー識別子を取得して、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）上のＭＩＢ１２２にデータソースとしてフロー識別子を設定し、サンプリング処理部１２１に統計情報取得を指示する。
【０１１３】
或いは、外部のコンソール端末や管理サーバ等、又はコントローラ２０が、直接、サンプリング処理部１２１に統計情報取得を指示するようにしても良い。
【０１１４】
（２）パケットのヘッダ情報を圧縮してフロー識別子を作成し、コントローラから払い出す方式
【０１１５】
図３に示すように、パケットのヘッダ情報は、「Ｉｎｇｒｅｓｓ  Ｐｏｒｔ（入口ポート）：任意」「ＭＡＣ  ｓｒｃ（送信元ＭＡＣアドレス）：４８ｂｉｔ」「ＭＡＣ  ｄｓｔ（宛先ＭＡＣアドレス）：４８ｂｉｔ」「Ｅｔｈｅｒタイプ：１６ｂｉｔ」「ＶＬＡＮ  ＩＤ：１２ｂｉｔ」「ＶＬＡＮ  ｐｒｉｏｒｉｔｙ：３ｂｉｔ」「ＩＰ  ｓｒｃ（送信元ＩＰアドレス）：３２ｂｉｔ」「ＩＰ  ｄｓｔ（宛先ＩＰアドレス）：３２ｂｉｔ」「ＩＰ  ｐｒｏｔｏ：８ｂｉｔ」「ＩＰ  Ｔｏｓ  ｂｉｔｓ：６ｂｉｔ」「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ（送信元ポート）：１６ｂｉｔ」「ＴＣＰ／ＵＤＰ  ｄｓｔ  ｐｏｒｔ（宛先ポート）：１６ｂｉｔ」等の領域（フィールド）を含む。
【０１１６】
フローのルールは、上記のパケットのヘッダ情報にマスク情報を付加して、所定の情報（の組み合わせ）を利用したものである。
【０１１７】
パケットのヘッダ情報の各々の領域（フィールド）の長さを加算すると、「Ｉｎｇｒｅｓｓ  Ｐｏｒｔ」（入口ポート）以外の領域（フィールド）だけで２３７ｂｉｔ長となり、これに任意の「Ｉｎｇｒｅｓｓ  Ｐｏｒｔ」（入口ポート）のｂｉｔ長が加わるため、合計で２３７ｂｉｔ超（２３７ｂｉｔ長以上）になる。
【０１１８】
コントローラ２０は、ハッシュ関数等の圧縮アルゴリズムを用いて、２３７ｂｉｔ超のパケットのヘッダ情報を圧縮して６４ｂｉｔ長のフロー識別子を算出し、ｓＦｌｏｗコレクタ３０に通知する。
【０１１９】
なお、実際には、外部のコンソール端末や管理サーバ等が、統計情報の取得対象として事前に決定したパケットに対し、圧縮アルゴリズムを用いて、パケットのヘッダ情報から６４ｂｉｔ長のフロー識別子を算出し、コントローラ２０及びｓＦｌｏｗコレクタ３０に通知するようにしても良い。
【０１２０】
ｓＦｌｏｗコレクタ３０は、ＭＩＢ１２２にデータソースとしてフロー識別子を設定し、サンプリング処理部１２１に統計情報取得を指示する。
【０１２１】
或いは、外部のコンソール端末や管理サーバ等、又はコントローラ２０が、直接、サンプリング処理部１２１に統計情報取得を指示するようにしても良い。
【０１２２】
［本実施形態における処理］
図４を参照して、本実施形態における処理について説明する。
【０１２３】
（１）ステップＳ１０１
コントローラ２０のフロー識別子管理部２１は、外部のコンソール端末や管理サーバ等から、統計情報の取得対象となるフローに対応するフロー識別子を取得する。なお、実際には、外部のコンソール端末や管理サーバ等から、統計情報の取得対象となるフローの情報を取得し、当該フローを構成するパケットのヘッダ情報を圧縮してフロー識別子を作成しても良い。
【０１２４】
（２）ステップＳ１０２
コントローラ２０の経路制御部２２は、トポロジ（ｔｏｐｏｌｏｇｙ：接続形態）検知を行った際に、ネットワークを構成するスイッチ１０（１０−ｉ、ｉ＝１〜ｎ）を検知し、フロー毎の経路（パス）を計算し、経路情報を生成する。或いは、経路制御部２２は、外部のコンソール端末や管理サーバ等から、統計情報の取得対象となるフローの情報と共に、当該重要フローの経路情報も事前に登録される場合、この経路情報を保持する。
【０１２５】
（３）ステップＳ１０３
コントローラ２０のエントリ管理部２３は、統計情報の取得対象となるフローとその経路情報を基にエントリを定義し、当該フローに対応するフロー識別子を当該エントリに設定し、フローテーブル１１２に当該エントリを登録するための制御メッセージをスイッチ１０（１０−ｉ、ｉ＝１〜ｎ）に送信する。
【０１２６】
（４）ステップＳ１０４
ｓＦｌｏｗコレクタ３０のフロー識別子設定部３１は、外部のコンソール端末や管理サーバ等から、或いは、コントローラ２０のエントリ管理部２３から、統計情報の取得対象となるフローに対応するフロー識別子が指定された場合、当該フロー識別子を保持し、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）上のＭＩＢ１２２にデータソースとしてフロー識別子を設定する。
【０１２７】
（５）ステップＳ１０５
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）のデータ転送部１１１は、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）がパケットを受信した際、当該受信パケットがフローテーブル１１２に登録されたエントリのいずれかに適合するか照合する。すなわち、データ転送部１１１は、エントリに定義されたマッチ条件（ルール）と当該受信パケットとを照合し、当該受信パケットのヘッダ情報がマッチ条件（ルール）と一致したエントリを、当該受信パケットに適合するエントリと判断する。
【０１２８】
（６）ステップＳ１０６
データ転送部１１１は、受信パケットに適合するエントリが存在する場合、適合したエントリに定義されたアクション（動作）に従って当該受信パケットを転送し、フロー毎の統計情報を取得して当該エントリに記録する。ここでは、データ転送部１１１は、当該エントリに定義されたルールに適合する受信パケットに対して、当該エントリに定義された動作を行い、当該動作を統計情報として当該エントリに記録する。
【０１２９】
（７）ステップＳ１０７
データ転送部１１１は、受信パケットに適合するエントリが存在しない場合、当該受信パケットを破棄する。或いは、データ転送部１１１は、全パケットを対象としたデフォルトエントリに従って当該受信パケットを処理する。
【０１３０】
（８）ステップＳ１０８
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）のサンプリング処理部１２１は、通常のｓＦｌｏｗの場合と同じく、ｓＦｌｏｗでのパケット照合時に、データソースを基にパケットを分類し、平均して閾値の割合（例えば１０００件に１件）になるようにランダムにサンプリングし、サンプリング値を統計情報としてｓＦｌｏｗデータグラムでｓＦｌｏｗコレクタ３０に送信する。但し、実際には、この処理を行わなくても良い。
【０１３１】
（９）ステップＳ１０９
サンプリング処理部１２１は、ＭＩＢ１２２を参照し、ＭＩＢ１２２のデータソースとしてフロー識別子が指定されているか確認する。なお、確認するタイミングは、データ転送部１１１が受信パケットをフローテーブル１１２に照合する際でも良いし、上記のように、サンプリング処理部１２１が通常のｓＦｌｏｗでのサンプリング値を統計情報としてｓＦｌｏｗデータグラムでｓＦｌｏｗコレクタ３０に送信する際でも良い。
【０１３２】
（１０）ステップＳ１１０
サンプリング処理部１２１は、ＭＩＢ１２２のデータソースとしてフロー識別子が指定されている場合、フローテーブル１１２のエントリの「Ｃｏｏｋｉｅ」の領域（フィールド）を参照し、同一のフロー識別子が格納されているエントリを検出し、当該エントリに統計情報として記録されているサンプリング値を取得し、サンプリング値を統計情報としてｓＦｌｏｗコレクタ３０に送信する。
【０１３３】
（１１）ステップＳ１１１
ｓＦｌｏｗコレクタ３０の統計情報収集部３２は、サンプリング処理部１２１から送付された統計情報を集計・編集・表示する。
【０１３４】
＜第２実施形態＞
以下に、本発明の第２実施形態について添付図面を参照して説明する。
本実施形態では、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々において、オープンフロー処理部１１がフローテーブルのエントリと受信パケットを照合している際に、ｓＦｌｏｗ処理部１２は、ＭＩＢ１２２のデータソースとして指定されているフロー識別子をオープンフロー処理部１１に通知し、応答として、フロー識別子を持つエントリと適合したパケットを受け取る。ｓＦｌｏｗ処理部１２は、このパケットに対して、ｓＦｌｏｗでのサンプリング処理を行う。
【０１３５】
［本実施形態における構成］
図５Ａに示すように、本発明の第２実施形態に係るネットワークシステムの構成は、基本的に、本発明の第１実施形態に係るネットワークシステムと同じである。
【０１３６】
図５Ａに示すように、本発明の第２実施形態に係るネットワークシステムは、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ：ｎはスイッチ台数）と、コントローラ２０と、ｓＦｌｏｗコレクタ３０を含む。
【０１３７】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々は、オープンフロー処理部１１と、ｓＦｌｏｗ処理部１２を備える。
【０１３８】
図５Ｂに示すように、コントローラ２０は、フロー識別子管理部２１と、経路制御部２２と、エントリ管理部２３を備える。
【０１３９】
図５Ｃに示すように、ｓＦｌｏｗコレクタ３０は、フロー識別子設定部３１と、統計情報収集部３２を備える。
【０１４０】
本実施形態では、オープンフロー処理部１１とｓＦｌｏｗ処理部１２の処理が第１実施形態と異なる。
【０１４１】
［本実施形態における処理］
図６を参照して、本実施形態における処理について説明する。
【０１４２】
なお、当該処理は、図４に示す第１実施形態におけるステップＳ１０５からステップＳ１１０の処理に該当する。他の処理については、図４に示す第１実施形態と同じである。
【０１４３】
（１）ステップＳ２０１
サンプリング処理部１２１は、通信開始前、或いはＭＩＢ１２２のデータソースに変更があった際に、ＭＩＢ１２２のデータソースとして指定されているフロー識別子をデータ転送部１１１に通知する。
【０１４４】
（２）ステップＳ２０２
通信が開始された際、データ転送部１１１は、受信パケットと通知されたフロー識別子とを基に、当該フロー識別子と「Ｃｏｏｋｉｅ」に格納されたフロー識別子とが適合し、当該受信パケットとマッチ条件（ルール）とが適合するエントリの有無を確認する。
【０１４５】
（３）ステップＳ２０３
データ転送部１１１は、当該フロー識別子と「Ｃｏｏｋｉｅ」に格納されたフロー識別子とが適合し、当該受信パケットとマッチ条件（ルール）とが適合するエントリを検出した場合、適合したエントリに定義されたアクション（動作）に従って当該受信パケットを転送すると共に、当該受信パケットをサンプルパケットとしてサンプリング処理部１２１に通知する。このとき、サンプリング処理部１２１は、外部に転送される受信パケットを検出するようにしても良い。
【０１４６】
（４）ステップＳ２０４
サンプリング処理部１２１は、データ転送部１１１から受け取ったパケット、又は外部に転送されるパケットに対して、平均して閾値の割合（例えば１０００件に１件）になるようにランダムにサンプリング（ｓＦｌｏｗに準拠したサンプリング処理を実行）し、サンプリング値を統計情報としてｓＦｌｏｗコレクタ３０に送信する。例えば、サンプリング処理部１２１は、フロー毎に（フロー単位で）、閾値に到達したパケットのヘッダ情報と各種カウンタ値を取得し、統計情報としてｓＦｌｏｗコレクタ３０に送信する。
【０１４７】
なお、ｓＦｌｏｗでＭＩＢのデータソースに適合するパケットよりも、オープンフローでフローテーブルのエントリに適合するパケットのほうが、数が多くなるため、サンプリング処理を行う上でも有利である。
【０１４８】
その理由は、ｓＦｌｏｗでＭＩＢのデータソースに適合するには、パケットのヘッダ情報が完全に一致しなければならないが、オープンフローでフローテーブルのエントリに適合するには、フローのルールとして定義されたパケットのヘッダ情報の一部の組み合わせが一致すれば十分だからである。
【０１４９】
＜各実施形態の関係＞
なお、上記の各実施形態は、組み合わせて実施することも可能である。例えば、本発明のネットワークシステムにおいて、第１実施形態に対応するスイッチと、第２実施形態に対応するスイッチが混在していても良い。或いは、同一のスイッチで、第１実施形態に対応する機能を有効にするか、第２実施形態に対応する機能を有効にするか、ユーザが選択・設定等できるようにすることも考えられる。
【０１５０】
＜本発明の利点＞
オープンフローを利用することにより、サンプリング対象のパケットを細かく指定できるようにすることで、細分化されたフロー毎にサンプリング値を取得できるようにし、ｓＦｌｏｗでのサンプリング処理におけるフィルタリングを実現し、従来のｓＦｌｏｗでは取得できなかったサンプリング値を取得できるようにした。
【０１５１】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０１５２】
［付記１］
オープンフロー及びｓＦｌｏｗに対応したスイッチと、
スイッチの経路を制御するコントローラと
を含み、
スイッチは、
コントローラからフローテーブルに登録されたエントリのＣｏｏｋｉｅにフロー識別子を保持し、エントリのルールに適合する受信パケットに対し、エントリに定義されたアクションに従った動作を行うオープンフロー処理部と、
ｓＦｌｏｗで使用されるＭＩＢにデータソースとして指定されたフロー識別子を取得し、該フロー識別子を基に、エントリに適合したパケットの統計情報を取得するｓＦｌｏｗ処理部と
を具備する
ネットワークシステム。
【０１５３】
［付記２］
付記１に記載のネットワークシステムであって、
オープンフロー処理部は、エントリのルールに適合する受信パケットの統計情報をエントリに記録し、
ｓＦｌｏｗ処理部は、ＭＩＢにデータソースとして指定されたフロー識別子とエントリに保持されているフロー識別子が一致すれば、当該エントリに記録されている統計情報を取得する
ネットワークシステム。
【０１５４】
［付記３］
付記１又は２に記載のネットワークシステムであって、
オープンフロー処理部は、ｓＦｌｏｗ処理部から通知されたフロー識別子を持つエントリのルールに適合する受信パケットを、応答としてｓＦｌｏｗ処理部に通知し、
ｓＦｌｏｗ処理部は、ＭＩＢにデータソースとして指定されたフロー識別子をオープンフロー処理部に通知し、応答としてオープンフロー処理部から受け取ったパケットに対して、ｓＦｌｏｗに準拠したサンプリング処理を行い、統計情報としてｓＦｌｏｗのサンプリング値を取得する
ネットワークシステム。
【０１５５】
［付記４］
付記１乃至３のいずれか一項に記載のネットワークシステムであって、
コントローラは、パケットのヘッダ情報を圧縮してフロー識別子を作成し、該フロー識別子をフローテーブル及びＭＩＢに設定する
ネットワークシステム。
【０１５６】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１５７】
なお、本出願は、日本出願番号２０１１−００６７１９に基づく優先権を主張するものであり、日本出願番号２０１１−００６７１９における開示内容は引用により本出願に組み込まれる。
【図１Ａ】
2015111902.tif 000003
【図１Ｂ】
2015111902.tif 000004
【図１Ｃ】
2015111902.tif 000005
【図２】
2015111902.tif 000006
【図３】
2015111902.tif 000007
【図４】
2015111902.tif 000008
【図５Ａ】
2015111902.tif 000009
【図５Ｂ】
2015111902.tif 000010
【図５Ｃ】
2015111902.tif 000011
【図６】
2015111902.tif 000012