(57)【要約】【課題】ユーザデータ通信用のスイッチのＣＰＵ負荷の上昇を抑制しつつ、ネットワークを流れるすべての通信を対象にした通信量を所望の粒度で把握可能にする。【解決手段】通信システムは、通信用スイッチ６１と、自装置が保持しているフローエントリに従い、通信用スイッチ６１から受信したコピーパケットのフローごとの通信量を記録する記録用スイッチ６２とを備え、フローエントリ設定手段７１が、コピーパケットの経路上に位置する記録用スイッチ６２に設定するフローエントリの集合において、マッチ条件が、全ての通信レイヤのアドレス情報における全てのアドレス値を網羅するように、記録用スイッチ６２に対して、通信量記録用フローエントリを設定し、通信量収集手段７２が、記録用スイッチ６２が保持しているフローエントリの通信量を収集する。【選択図】図１１
2017183959.tif 000002
【特許請求の範囲】
【請求項１】
通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチと、
前記通信用スイッチからデータパケットのコピーであるコピーパケットを受信して、自装置が保持しているフローエントリに従い、前記コピーパケットのフローごとの通信量を記録する記録用スイッチと、
前記記録用スイッチに対して、受信した前記コピーパケットの通信量を記録させるための通信量記録用フローエントリを設定するコントローラとを備え、
前記コントローラは、
前記コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤの予め指定されたアドレス情報における予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定するフローエントリ設定手段と、
所定のタイミングで、前記記録用スイッチが保持しているフローエントリの通信量を収集する通信量収集手段とを含む
ことを特徴とする通信システム。
【請求項２】
記録用スイッチは、通信量記録用フローエントリを、コピーパケットのアドレス情報内の種別データであって、アドレス情報内のいずれかのデータフィールドもしくはデータフィールド内において意味をもつビットまたはそれらの組み合わせである種別データの単位で分けて保持するための複数のフローテーブルを有し、
フローエントリ設定手段は、前記複数のフローテーブルの各々に、受信したコピーパケットの当該フローテーブルが対応する種別データの値がマッチ条件に合致した場合に、該コピーパケットの通信量を記録させた後、該コピーパケットを破棄するか、他のフローテーブルを再度検索させるか、他の記録用スイッチに転送させるかのいずれかを行わせる条件付きフローエントリを少なくとも登録させるとともに、各のフローテーブルの末尾に、受信したコピーパケットの当該フローテーブルが対応する種別データの値を問わず、受信したコピーパケットの通信量を記録させた後、該コピーパケットを破棄するか、他のフローテーブルを再度検索させるか、他の記録用スイッチに転送させるかのいずれかを行わせる条件なしフローエントリを登録させる
請求項１に記載の通信システム。
【請求項３】
コントローラは、
収集した通信量が所定の第１条件を満たす場合に、該フローエントリを分割するフローエントリ分割手段を含み、
前記フローエントリ分割手段は、分割対象とされたフローエントリでマッチ条件とされるアドレス情報の値の範囲を２以上に分割し、分割後の値の範囲をそれぞれマッチ条件とする２以上のフローエントリを生成し、
フローエントリ設定手段は、記録用スイッチに対して、分割前のフローエントリの削除と、分割後のフローエントリの追加を設定する
請求項１または請求項２に記載の通信システム。
【請求項４】
コントローラは、
収集した通信量が所定の第２条件を満たす場合に、該フローエントリを集約するフローエントリ集約手段を含み、
前記フローエントリ集約手段は、集約対象とされた第１のフローエントリのマッチ条件に用いられるアドレス情報のデータ種別と同一のデータ種別をマッチ条件に用いており、かつ収集された通信量が所定の第３条件を満たす第２のフローエントリが存在する場合に、前記第１のフローエントリと前記第２のフローエントリとを集約して、両者の値の範囲を結合させた値の範囲を、マッチ条件とするアドレス情報の値の範囲とする第３のフローエントリを生成し、
フローエントリ設定手段は、記録用スイッチに対して、前記第１のフローエントリおよび前記第２のフローエントリの削除と、前記第３のフローエントリの追加を設定する
請求項１から請求項３のうちのいずれか１項に記載の通信システム。
【請求項５】
コントローラは、
通信用スイッチに対して、データパケットのコピーを記録用スイッチに転送するための設定を行うコピーパケット設定手段を含み、
前記コピーパケット設定手段は、コピーパケットに、コピーパケット転送用に定義されたＶＬＡＮ番号を付与した上で、所定のポートから出力させるための設定を行う
請求項１から請求項４のうちのいずれか１項に記載の通信システム。
【請求項６】
コピーパケット設定手段は、コピーパケットに、コピーパケット転送用に定義されたＶＬＡＮ番号であって、前記データパケットの送受信方向を示す番号が組み込まれたＶＬＡＮ番号を付与した上で、所定のポートから出力させるための設定を行い、
フローエントリ設定手段は、記録用スイッチに対して、１つのフローテーブル内に登録されるフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤの予め指定されたアドレス情報における予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定する
請求項１から請求項５のうちのいずれか１項に記載の通信システム。
【請求項７】
コピーパケットの転送経路上に複数の記録用スイッチを備え、
フローエントリ設定手段は、前記複数の記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤの予め指定されたアドレス情報における予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定し、
フローエントリのマッチ条件に用いられるデータ種別が、記録用スイッチ間で異なる
請求項１から請求項６のうちのいずれか１項に記載の通信システム。
【請求項８】
通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチとは別に、自装置が保持しているフローエントリに従い、受信パケットを処理するフロースイッチを備えた通信システムに備えられるコントローラであって、
前記通信用スイッチに対して、データパケットのコピーであるコピーパケットを記録用スイッチに転送するための設定を行うコピーパケット設定手段と、
前記フロースイッチに対して、受信した前記コピーパケットの通信量を記録させるための通信量記録用フローエントリを設定するフローエントリ設定手段と、
所定のタイミングで、前記記録用スイッチが保持しているフローエントリの通信量を収集する通信量収集手段とを備え、
前記フローエントリ設定手段は、前記コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤの予め指定されたアドレス情報における予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定する
ことを特徴とするコントローラ。
【請求項９】
通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチとは別に、自装置が保持しているフローエントリに従い、受信パケットを処理するフロースイッチを備えた通信システムに備えられるコントローラが、
前記通信用スイッチに対して、データパケットのコピーであるコピーパケットを記録用スイッチに転送するための設定を行い、
前記フロースイッチに対して、受信した前記コピーパケットの通信量を記録させるための通信量記録用フローエントリを設定し、
所定のタイミングで、前記記録用スイッチが保持しているフローエントリの通信量を収集し、
前記通信量記録用フローエントリを設定する際に、前記コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤの予め指定されたアドレス情報における予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定する
ことを特徴とする通信量計測方法。
【請求項１０】
通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチとは別に、自装置が保持しているフローエントリに従い、受信パケットを処理するフロースイッチを備えた通信システムに備えられるコントローラとして動作するコンピュータに、
前記通信用スイッチに対して、データパケットのコピーであるコピーパケットを記録用スイッチに転送するための設定を実施する処理、
前記フロースイッチに対して、受信した前記コピーパケットの通信量を記録させるための通信量記録用フローエントリを設定する処理、および
所定のタイミングで、前記記録用スイッチが保持しているフローエントリの通信量を収集する処理を実行させ、
前記通信量記録用フローエントリを設定する処理で、前記コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤの予め指定されたアドレス情報における予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定させる
ための通信量計測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを流れるパケットの量に基づく通信量を計測するための通信システム、コントローラ、通信量計測方法および通信量計測プログラムに関する。
【背景技術】
【０００２】
通信量を計測する方法として、例えば、次の方法がある。第１の方法は、ネットワークに接続されたスイッチなどの通信装置が、パケットのコピーを生成して、パケット解析用のコンピュータに送り、パケット解析用コンピュータが、コピーされたパケットを受信して、その量を記録する方法である。以下、第１の方法を、ミラーリングによる方法と呼ぶ。以下、解析用にコピーされるパケットをコピーパケットと呼ぶ。
【０００３】
第２の方法は、ｓＦｌｏｗと呼ばれるプロトコルを利用して、スイッチングハブが、パケットをサンプリングしてｓＦｌｏｗ解析装置に送り、ｓＦｌｏｗ解析装置が、送られたサンプリング量と、物理ポートの通信量とから、通信フロー単位の通信量を推測する方法である。なお、ｓＦｌｏｗの詳細は、「ＩＥＴＦ（Internet Engineering Task Force）  ＲＦＣ（Request For Comment）  ３１７６」に規定されている。以下、第２の方法を、サンプリングによる方法と呼ぶ。
【０００４】
なお、ミラーリングによる方法における通信装置の具体例として、リモートミラーリングに対応したスイッチングハブがある。ここで、リモートミラーリングは、コピーパケットにリモートミラーリング専用のＶＬＡＮ番号を付与し、別のスイッチングハブを中継しながら、パケット解析用コンピュータにコピーパケットを届ける技術である。リモートミラーリングを行う通信システムは、リモートミラーリング用のＶＬＡＮ番号をシステム内で一意の値となるように定める。各スイッチングハブは、リモートミラーリング用のＶＬＡＮ番号を参照してコピーパケットをパケット解析用コンピュータまで転送する。
【０００５】
一方、Ｏｐｅｎコンピュータネットワークにおいて、ＣＵ（Ｃ：コントロールプレーン／Ｕ：ユーザプレーン）分離型アーキテクチャと呼ばれる技術がある。ＣＵ分離型アーキテクチャでは、各スイッチの制御を、外部のコントローラから行う。このようなＣＵ分離型アーキテクチャに基づく構成のネットワークの例として、コントローラからスイッチを制御してネットワークの経路制御を行うＯｐｅｎＦｌｏｗ技術を利用したオープンフローネットワークが挙げられる。
【０００６】
ＯｐｅｎＦｌｏｗ技術に対応したスイッチは、オープンフロースイッチ（ＯＦＳ）と呼ばれる。また、ＯｐｅｎＦｌｏｗ技術に対応したコントローラは、オープンフローコントローラ（ＯＦＣ）と呼ばれる。
【０００７】
ＯＦＳは、フローテーブルと呼ばれる、処理規則（エントリ）が登録されるテーブルを保持する。
【０００８】
フローテーブルは、所定のマッチ条件（ルール）に適合するパケットに対して行うべき所定の処理内容（アクション）を定義した処理規則（フローエントリ）が登録されたテーブルである。パケットは、フレームと読み替えてもよい。ルールに適合するパケット群（パケット系列）は、フロー（Ｆｌｏｗ）と呼ばれる。
【０００９】
ルールは、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｌｏ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、ルールとして使用可能である。
【００１０】
従って、フローは、パケットのヘッダ領域に含まれる情報によって識別されるパケット群と言ってもよい。
【００１１】
また、アクションは、通常、所定の転送先へのパケット転送である。なお、アクションとして、パケット破棄を指定したり、受信パケット数をカウントしたり、別のフローテーブルを再検索させるといったことも可能である。
【００１２】
ＯＦＳは、このようなフローテーブルに保持された処理規則に従うことにより、フロー単位の通信制御とフローの統計情報の採取を行うことができる。以下、このようなＣＵ分離型ネットワークにおいてスイッチのフローテーブルに登録された統計情報を採取して通信量を計測する方法を、フローテーブルの統計情報による方法と呼ぶ。
【００１３】
ＯＦＣは、ＯＦＳのフローテーブルを操作することにより、該ＯＦＳの挙動を制御する。
【００１４】
例えば、ＯＦＣは、フローテーブルの操作により、ＯＦＳに対して通信経路の設定や、フローテーブルで識別されるフロー単位の通信量の取得を行うことができる。ＯＦＣは、ＯＦＳが保持するフローテーブルに、フローエントリを登録する。フローエントリは、ＯＦＳで受信したパケットデータを識別する「マッチ条件」と、アドレス変更や特定ポートへのパケット送信などの処理内容を示す「アクション情報」と、該当フローに合致したパケットの量である「通信量」とを含んていてもよい。ＯＦＣによる、フローエントリを用いた一元管理された経路設定に基づいて、パケットデータは、ＯＦＳ間を適切に経路制御されながら転送されていく。そして、パケットデータの転送に伴って、ＯＦＳ内の一致したフローエントリの通信量が加算されていく。
【００１５】
このようなＯｐｅｎＦｌｏｗ技術を利用した通信量の計測方法の一例が、特許文献１に記載されている。特許文献１には、転送ノードが保持する処理規則数の削減と、トラヒックの把握との両立を目的に、コントローラが、特定の転送ノードに処理規則の統計情報に基づくパケットの分析を行わせ、その結果を基に特定の転送ノードのエントリを分割することが記載されている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】国際公開２０１１／１１８５７５号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１７】
課題は、正確な通信量が計測されないことにある。
【００１８】
ネットワークを流れる通信量の計測方法としては、フローテーブルの統計情報による方法の他に、上述したように、ミラーリングによる方法と、ｓＦｌｏｗに代表されるサンプリングによる方法とがある。しかし、正確な通信量を求めようとすると、これら３つの方法にはそれぞれ次のような問題がある。
【００１９】
（１）ミラーリングによる方法
本方法では、各スイッチがパケットをコピーして、解析装置に送信する。しかし、全スイッチの全ポートのパケットをコピーして解析装置に送れたとしても、解析装置のＣＰＵの処理性能によっては、全てのコピーパケットの解析ができずに廃棄されるおそれがある。
【００２０】
（２）サンプリングによる方式
本方法では、パケットを間引きながらサンプリングし、パケット解析用のコンピュータにコピーパケットを送信することにより、パケット解析用コンピュータの負荷を下げている。しかし、パケット解析用コンピュータの負荷を下げるためにパケットデータをサンプリングする割合を少なくすると、正確な通信量を求めにくくなるという問題がある。また、サンプリングする割合を多くすると、本来ユーザデータの通信用であるスイッチのＣＰＵ負荷をサンプリング処理のために上げてしまい、パケット廃棄が発生する可能性が高くなるという問題がある。
【００２１】
（３）フローエントリの統計情報による方法
本方法では、ＯＦＳといったＣＵ分離型ネットワークのスイッチのフローエントリに記録されている統計情報を、コントローラが取得して通信量を算出する。本方法によれば、スイッチに登録されているフローエントリのマッチ条件に合致したフローの通信量はわかるが、マッチ条件に合致しない未知のトラフィックの通信量は把握できないという問題がある。また、ユーザデータの転送処理を行っているスイッチのフローテーブルから統計情報を取得する場合、該スイッチのＣＰＵ負荷が増えてしまうと、スイッチ本来のプロトコルを制御する処理が遅延するという問題がある。
【００２２】
以下、スイッチがＯＦＳであり、コントローラがＯＦＣである場合のフローエントリの統計情報による方法をより具体的に説明する。フローエントリの統計情報による方法では、事前にＯＦＳにＯＦＣから設定されたフローエントリのみが通信量を採取できる。なお、未知のパケットデータは、Ｐａｃｋｅｔ ＩＮというメッセージによりＯＦＣに運ばれるが、ＯＦＣとＯＦＳ間の通信路には、ＯＦＳの数多くある物理ポートのパケットデータをＯＦＣに伝えることができる帯域が無い場合が多い。このため、通信回線上を流れている未知のトラフィックの通信量を採取することは困難である。
【００２３】
ところで、オープンフローネットワークでは、ネットワーク上を流れるフローを識別するマッチ条件を有するフローエントリを登録することにより、自由な通信をコントローラから制御可能である。しかし、ＴＣＰポート８０番等の細かい粒度でのフローエントリが存在するトラフィックは通信量を参照可能だが、求めたいレイヤのフローエントリが存在しない場合、別のレイヤのフローエントリで処理される。例えばレイヤ３プロトコルをマッチ条件に含むフローエントリが存在しない場合、レイヤ３プロトコルの値に関わらず、ＩＰのフローエントリで処理されてしまう。このような場合、求めたいレイヤの粒度で通信種別や通信量がわからないという問題がある。
【００２４】
なお、特許文献１には、パケットの詳細分析のために細分化した複数のフローエントリを設定することが記載されている。しかし、特許文献１には、フローエントリを集約した際の履歴情報や、ネットワークトポロジ情報や転送ノードの構成情報を用いて細分化するといった記載しかなく、例示の処理もプロトコルの階層等を意識したものではない。すなわち、特許文献１に記載の方法を適用しただけでは、未知のトラフィックを作らずに、かつ求めたいレイヤの粒度で通信種別や通信量を把握することはできない。
【００２５】
そこで、本発明は、ユーザデータ通信用のスイッチのＣＰＵ負荷の上昇を抑制しつつ、ネットワークを流れるすべての通信を対象にした通信量を所望の粒度で把握できる通信システム、コントローラ、通信量計測方法および通信量計測プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明による通信システムは、通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチと、通信用スイッチからデータパケットのコピーであるコピーパケットを受信して、自装置が保持しているフローエントリに従い、コピーパケットのフローごとの通信量を記録する記録用スイッチと、記録用スイッチに対して、受信したコピーパケットの通信量を記録させるための通信量記録用フローエントリを設定するコントローラとを備え、コントローラは、コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤのアドレス情報における少なくとも予め指定されたアドレス値を網羅している通信量記録用フローエントリを、記録用スイッチに対して設定するフローエントリ設定手段と、所定のタイミングで、記録用スイッチが保持しているフローエントリの通信量を収集する通信量収集手段とを含むことを特徴とする。
【００２７】
本発明によるコントローラは、通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチとは別に、自装置が保持しているフローエントリに従い、受信パケットを処理するフロースイッチを備えた通信システムに備えられるコントローラであって、通信用スイッチに対して、データパケットのコピーであるコピーパケットを記録用スイッチに転送するための設定を行うコピーパケット設定手段と、フロースイッチに対して、受信したコピーパケットの通信量を記録させるための通信量記録用フローエントリを設定するフローエントリ設定手段と、所定のタイミングで、記録用スイッチが保持しているフローエントリの通信量を収集する通信量収集手段とを備え、フローエントリ設定手段は、コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤのアドレス情報における少なくとも予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定することを特徴とする。
【００２８】
本発明による通信量計測方法は、通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチとは別に、自装置が保持しているフローエントリに従い、受信パケットを処理するフロースイッチを備えた通信システムに備えられるコントローラが、通信用スイッチに対して、データパケットのコピーであるコピーパケットを記録用スイッチに転送するための設定を行い、フロースイッチに対して、受信したコピーパケットの通信量を記録させるための通信量記録用フローエントリを設定し、所定のタイミングで、記録用スイッチが保持しているフローエントリの通信量を収集し、通信量記録用フローエントリを設定する際に、コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤのアドレス情報における少なくとも予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定することを特徴とする。
【００２９】
本発明による通信量計測プログラムは、通信量の計測対象とされるデータパケットの転送処理を行う通信用スイッチとは別に、自装置が保持しているフローエントリに従い、受信パケットを処理するフロースイッチを備えた通信システムに備えられるコントローラとして動作するコンピュータに、通信用スイッチに対して、データパケットのコピーであるコピーパケットを記録用スイッチに転送するための設定を実施する処理、フロースイッチに対して、受信したコピーパケットの通信量を記録させるための通信量記録用フローエントリを設定する処理、および所定のタイミングで、記録用スイッチが保持しているフローエントリの通信量を収集する処理を実行させ、通信量記録用フローエントリを設定する処理で、コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤのアドレス情報における少なくとも予め指定されたアドレス値を網羅している通信量記録用フローエントリを、前記記録用スイッチに対して設定させることを特徴とする。
【発明の効果】
【００３０】
本発明によれば、ユーザデータ通信用のスイッチのＣＰＵ負荷の上昇を抑制しつつ、ネットワークを流れるすべての通信を対象にした通信量を所望の粒度で把握できる。
【図面の簡単な説明】
【００３１】
【図１】第１の実施形態の通信システムの例を示す構成図である。
【図２】コントローラ１の構成例を示すブロック図である。
【図３】コントローラ１が保持するコピーパケット転送路管理情報の例を示す説明図である。
【図４】コピーパケット転送用のＶＬＡＮ番号の一例を示す図である。
【図５】コントローラ１が保持するフロー管理情報の例を示す説明図である。
【図６Ａ】記録用スイッチ３が保持するフローテーブルおよびフローエントリの一例を示す図である。
【図６Ｂ】記録用スイッチ３が保持するフローテーブルおよびフローエントリの一例を示す図である。
【図７】記録用スイッチ３が保持するフローテーブルの一例を示す図である。
【図８】フローエントリの分割・集約のイメージを示す説明図である。
【図９】第１の実施形態の動作の一例を示すシーケンス図である。
【図１０】第３の実施形態の記録用スイッチ３が保持するフローテーブルの他の例を示す図である。
【図１１】本発明の通信システムの概要を示す構成図である。
【図１２】本発明のコントローラの他の構成例を示す構成図である。
【発明を実施するための形態】
【００３２】
以下、本発明の実施形態を図面を参照して説明する。
【００３３】
まず、本発明のコンセプトを説明する。本発明の通信システムは、通信用スイッチと、記録用スイッチと、これらスイッチを制御するコントローラとを備える。ここで、通信用スイッチはＣＵ分離型ネットワークに対応したスイッチでなくてもよい。一方、記録用スイッチは、ＯＦＳなどの、ＣＵ分離型ネットワークに対応したスイッチである。記録用スイッチは、より具体的には、フローエントリが外部（コントローラ）より登録でき、かつフローエントリに統計情報を記録するスイッチであればよい。なお、通信用のスイッチは、サーバ等のコンピュータを接続する、いわゆるユーザデータ転送用のスイッチである。
【００３４】
コントローラは、通信用スイッチに対し、パケットをコピーして、記録用スイッチまでコピーしたパケット（コピーパケット）を転送するための設定を行う。設定方法は、通信用スイッチにリモートログインしてコマンドを実行するなど通信用スイッチのサポートする方法であればよい。
【００３５】
また、コントローラは、通信用スイッチに対し、パケットをコピーする際に、コピーパケット転送用のＶＬＡＮ番号をコピーパケットに付与する設定を行ってもよい。このとき、コントローラは、すでにＶＬＡＮ番号が付与されているパケットデータにコピーパケット転送用のＶＬＡＮ番号を付与する場合には、例えば、既存のＶＬＡＮ番号の直前にコピーパケット転送用のＶＬＡＮ番号を追加させ、２段のＶＬＡＮ番号の構成にさせる。コピーパケットに付与するコピーパケット転送用のＶＬＡＮ番号には、記録用スイッチまでコピーパケットを転送するための番号と送受信方向を識別するための番号とを含ませてもよい。
【００３６】
また、コントローラは、対象とされるネットワークを流れるフローを識別して統計情報（通信量）を記録するためのフローエントリを生成し、記録用スイッチに対して、生成したフローエントリを事前に登録する。このとき、コントローラは、ネットワーク上を流れている通信の種類を知らないものとする。
【００３７】
このため、コントローラは、記録用スイッチ３が解析できる、パケットの少なくとも指定された通信レイヤのアドレス情報の、少なくとも指定された値を網羅したフローエントリを生成して、記録用スイッチに登録する。例えば、コントローラは、予め指定された通信レイヤごとに、該レイヤのアドレス情報のうち少なくとも指定されたデータ範囲全体を幾つかの範囲に分割し、それらデータ範囲に用いられる指定されたアドレス値に対応した複数のフローエントリを生成して、記録用スイッチに登録する。アドレス情報を分割する際には、アドレス情報に含まれるデータの種別ごとに分割してもよいし、１つのデータをさらにマスク等を用いてビット単位で分割してもよい。ここで、対象とする通信レイヤ、該レイヤのアドレス情報およびその値の指定として、例えば、「全て」が指定されてもよい。そのような場合には、コントローラは、記録用スイッチ３が解析できる、パケットの全ての通信レイヤの全てのアドレス情報の全ての値を網羅したフローエントリを、記録用スイッチに登録する。なお、コントローラは、値を網羅するために、ワイルドカードによる指定を用いることができる。このとき、ユーザは、例えば、設定先の情報（設定先スイッチおよび設定先フローテーブル等）とともに、コントローラが記録用スイッチに設定するフローエントリそのものを入力し、その設定を指示してもよい。
【００３８】
コントローラは、例えば、通信量を採取したい通信レイヤのプロトコル単位に、フローテーブルを用意し、各レイヤのアドレス情報をオープンフローにおけるマスク指定により範囲を指定したフローエントリを、記録用スイッチに事前に登録してもよい。
【００３９】
また、コントローラは、定期的に記録用スイッチからフローエントリを取得し、統計情報が増えているフローエントリをさらに細分化するための計算を行い、記録用スイッチに、細分化したフローエントリを設定しなおしてもよい。細分化は、対象のフローエントリのマッチ条件とされているアドレス値を、例えばマスクを用いてさらに細かく分割し、分割後のアドレス値に対応する複数のフローエントリを生成してもよい。ここで、記録用スイッチに登録するフローエントリは、多段構成であってもよい。すなわち、記録用スイッチに登録するフローエントリには、第一段目のフローエントリを検索した後、２段目のフローエントリを検索させる処理がアクションとして登録されていてもよい。
【００４０】
また、コントローラは、所定の取得回数以上や一定の時間以上、統計情報が変化しないフローエントリを、隣接するフローエントリと集約させるための計算を行い、記録用スイッチに、集約後のフローエントリを設定しなおしてもよい。集約は、対象のフローエントリのマッチ条件に用いられているアドレス値と隣接するアドレス値がマッチ条件とされた、隣接フローエントリと、マスク指定で結合できる場合には、１つのフローエントリに結合してもよい。
【００４１】
コントローラは、例えば、定期的に記録用スイッチが保持しているフローエントリのうち範囲指定されたフローエントリを取得する。そして、通信量が増えていないなど所定の条件を満たすフローエントリがあれば、さらにフローを細分化させ、通信量が変化していないなど所定の条件を満たすフローエントリがあればフローを結合して、記録用スイッチのフローエントリを更新しつつ、記録用スイッチで通信量の記録を継続させてもよい。
【００４２】
このようにして、フローエントリの取得と分割・結合を繰り返すことにより、ネットワーク上を流れているトラフィックがフローエントリの統計情報に適切に表されるようになる。
【００４３】
また、コントローラは、例えば、ユーザからの指示等に応じて、記録用スイッチから表示条件に合致するフローエントリを収集して、収集したフローエントリの統計情報が示す通信量を表示する可視化機能を有していてもよい。
【００４４】
通信用スイッチは、コントローラからの設定に応じて、パケットデータをコピーして、所定の出力ポートから転送する。ここで、出力ポートには、予めコントローラから、記録用スイッチに到達可能なポートが指定されている。このとき、通信用スイッチは、コピーパケット転送用のＶＬＡＮ番号を付与したコピーパケットを作成してもよい。
【００４５】
記録用スイッチは、コピーパケットを受信すると、コントローラから登録されたフローエントリを、順に検索し、マッチ条件に合致したフローエントリの統計情報を更新する。記録用スイッチは、すべてのフローエントリの検索が終わった時点で、コピーパケットを廃棄する。なお、この処理も、コントローラから登録されるフローエントリのアクションとして登録される。
【００４６】
記録用スイッチは、このようなフローエントリに従った処理を行うとともに、コントローラからフローエントリの情報を要求するメッセージを受信した場合には、該当するフローエントリの情報（統計情報を含む）をコントローラに送信する。
【００４７】
コントローラは、記録用スイッチからフローエントリの情報を取得することにより、ネットワーク内を流れていたトラフィックの分類と通信量を特定することができる。
【００４８】
このように、本発明では、統計情報を記録する専門のスイッチである記録用スイッチを、通信量やネットワークのトポロジに応じて、１つ以上設ける。そして、通信用パケットには、ユーザデータの通信パケットを受信した際に、通信量の計測用の処理として、転送用のＶＬＡＮ番号を付与したコピーパケットを指定の記録用スイッチに転送させる処理だけを行わせる。そして、記録用スイッチには、ユーザ等により予め指定された内容に従い、コピーパケットの各通信レイヤごとに、所望のアドレス情報（データ範囲）とそれに用いられる値が網羅されたフローエントリを、多段構成で予め登録させる。そして、所定のタイミング（定期的やユーザ指示に応じてなど）で、記録用スイッチのフローエントリの統計情報を収集し、その統計情報を基に、フローエントリの分割または集約（結合）を行う。
【００４９】
本発明によれば、事前にユーザデータ通信路内を流れている通信トラフィックがわからない場合でも、ＣＵ分離型ネットワークで用いられるフローエントリの特性を利用して、記録用スイッチが、各通信レイヤのアドレス情報に含まれる任意の単位でトラフィックを自動的に識別し、統計情報を記録することができる。
【００５０】
本発明によれば、サンプリングを行わずに、全てのパケットをコピーするため、通信トラフィックの識別と通信量について精度の高い情報獲得が可能になる。なお、ミラーリングによる方法では、トラフィック解析のために高性能なＣＰＵを持ったサーバが必要だった。これに対して、本発明では、記録用スイッチは、フローテーブルを利用して利用者が所望の粒度の統計情報を記録できるため、高速に大容量の通信トラフィックを識別して、正確な統計情報を記録することができる。
【００５１】
実施形態１．
次に、図面を参照して本発明の第１の実施形態について説明する。図１は、第１の実施形態の通信システムの例を示す構成図である。
【００５２】
図１に示す通信システムは、コントローラ１と、複数の通信用スイッチ２（例えば、通信用スイッチ２−１、通信用スイッチ２−２および通信用スイッチ２−３）と、１つの記録用スイッチ３と、複数のホスト５（例えば、サーバ５−１、サーバ５−２、クライアント端末５−３）とを備える。
【００５３】
以下、どの通信用スイッチかを区別なく表現する場合には、通信用スイッチ２−１、通信用スイッチ２−２および通信用スイッチ２−３を、単に、通信用スイッチ２と呼ぶ場合がある。
【００５４】
また、図１において、符号１００は、コピーパケット転送用通信路を表している。また、符号２００は、パケットコピー設定用通信路を表している。また、符号３００−１〜３００−３は、ユーザデータ通信路を表している。また、符号４００は、フロー制御用通信路を表している。
【００５５】
本例において、通信用スイッチ２同士や通信用スイッチ２とホスト５とは、ユーザデータ通信路３００（例えば、３００−１、３００−２、３００−３のいずれか）を介して接続されている。
【００５６】
また、記録用スイッチ３と通信用スイッチ２の各々とは、ユーザデータ通信路３００、コピーパケット転送用通信路１００および／またはパケットコピー設定用通信路２００を介して接続されている。また、コントローラ１と記録用スイッチ３とは、フロー制御用通信路４００を介して接続されている。
【００５７】
記録用スイッチ３とコントローラ１間のコピーパケット転送用通信路１００は、オープンフローを利用してフローエントリの設定、収集を行うための通信路の例である。
【００５８】
コントローラ１と通信用スイッチ２間および、サーバ５−１、サーバ５−２とクライアント端末５−３間のユーザデータ通信路３００における通信方法は、オープンフローを利用してもよいし、その他の通信方法を用いてもよい。
【００５９】
サーバ５−１，５−２およびクライアント端末５−３は、図示しないＣＰＵ，主記憶装置、及び外部記憶装置を備えるコンピュータ装置であり、外部記憶に格納されたプログラムを実行することで、他のサーバ、クライアント端末との間で通信用スイッチ２を介して通信を行う。
【００６０】
コントローラ１は、通信用スイッチ２に、ユーザデータのコピーパケットをコピーパケット転送用のＶＬＡＮ番号を付与して、記録用スイッチ３に転送するための設定を行う。なお、ネットワーク上で通信用スイッチ２から記録用スイッチ３までコピーパケットが転送可能な制御方法であれば、ＶＬＡＮ番号以外の方法を用いてもよい。そのような場合であっても、コピーパケットのアドレス情報のいずれかのビットに、転送方向を示す情報を含ませるのが好ましい。
【００６１】
また、コントローラ１は、予め指定された内容に従い、コピーパケットに含まれる通信レイヤごとに、マッチ条件に該レイヤの指定されたアドレス情報における指定された値をすべて含むフローエントリを生成し、予め記録用スイッチ３に登録する。
【００６２】
コントローラ１は、例えば、ＶＬＡＮ番号、宛先となるＩＰアドレス単位、送信元となるＩＰアドレス単位、プロトコル番号単位、宛先となるレイヤ４ポート番号単位、送信元となるレイヤ４ポート番号単位にフローテーブルを生成し、記録用スイッチ３に登録してもよい。このフローテーブルは、さらに送信方向と受信方向単位に作成する。コントローラ１は、記録用スイッチ３がＯＦＳである場合には、記録用スイッチ３に対して、生成したフローテーブルを、オープンフロープロトコルを使用して登録してもよい。
【００６３】
コントローラ１は、上記のような単位でトラフィックを識別するためのフローテーブルのマッチ条件を計算し、マッチ条件に用いたデータ種別に対応するフローテーブルにフローエントリとして登録する。この時、ネットワーク上を流れているトラフィックはわからないため、マッチ条件は範囲指定とする。なお、記録用スイッチ３におけるフローテーブルの構造は後述する。
【００６４】
コントローラ１は、記録用スイッチ３に対するフローテーブルの設定や取得に、物理的に独立したコピーパケット転送用通信路１００、パケットコピー設定用通信路２００、記録用スイッチとのフロー制御用通信路４００を使用することができる。
【００６５】
また、コントローラ１は、記録用スイッチ３からフローテーブル単位にフローエントリを取得することもできる。
【００６６】
図２は、コントローラ１の構成例を示すブロック図である。図２に示すように、コントローラ１は、コピーパケット転送路管理情報記憶部１１と、フローエントリ管理情報記憶部１２と、コピーパケット転送路管理部１３と、コピー操作設定部１４と、記録用フローエントリ設定部１５と、通信量取得部１６とを含んでいてもよい。
【００６７】
コピーパケット転送路管理部１３は、コマンド等によりユーザまたは外部の装置から指定された通信用スイッチ２のＩＰアドレス等のアドレス情報と、コピーパケット転送用のＶＬＡＮ番号とを含む通信用スイッチ情報１１１を、コピーパケット転送路管理情報記憶部１１に保存する。
【００６８】
図３は、コピーパケット転送路管理情報記憶部１１に記憶されるコピーパケット転送路管理情報の例を示す説明図である。図３に示す例では、コピーパケット転送路管理情報は、通信用スイッチ２の数分存在する通信用スイッチ情報１１１を含む。通信用スイッチ情報１１１は、通信用スイッチ２のアドレス情報（本例では、ＩＰアドレス）１１１１と、コピーパケット転送用のＶＬＡＮ番号１１１２と、コピー対象転送方向１１１３とを有する。ここで、ＶＬＡＮ番号１１１２は、アドレス情報１１１１が示す通信用スイッチ２に付与させるＶＬＡＮ番号（１０ビット）を表す。また、コピー対象転送方向１１１３は、アドレス情報１１１１が示す通信用スイッチ２にコピーさせるデータパケットの対象が送信パケットか、受信パケットか、またはその両方であるかを表す。
【００６９】
また、図４は、コピーパケットに付与されるコピーパケット転送用のＶＬＡＮ番号の構成図である。図４に示すように、本実施形態では、コピーパケット転送用のＶＬＡＮ番号は、１２ビットのＶＬＡＮ情報の内、最後の２ビットを除く領域で表される番号を用いる。また、１２ビットのＶＬＡＮ情報の内、最後の２ビットは、送信パケットのコピーパケットか受信パケットのコピーパケットかを識別するための転送方向情報（ｄｉｒｅｃｔｉｏｎ）に用いる。コピーパケット転送路管理部１３は、通信用スイッチ２でコピーパケットに付与させるコピーパケット転送用のＶＬＡＮ番号を、通信用スイッチ情報１１１に基づいて、送信用と受信用とに分けて生成する。
【００７０】
コピー操作設定部１４は、コピーパケット転送路管理情報記憶部１１に保存された情報に従い、通信用スイッチ２にデータパケットをコピーさせ、記録用スイッチ３まで転送させるための設定を行う。本実施形態では、記録用スイッチ３までコピーパケットを転送する方式として、コピーパケットに付与されたＶＬＡＮ情報に従い、リモートに存在するモニタリング装置としての記録用スイッチ３に該コピーパケットを転送する技術（リモートミラーリング）を使用する。したがって、コピー操作設定部１４は、コピーパケットに、指定したＶＬＡＮ番号を付与した上で、指定した出力ポートからコピーパケットを転送させる設定を、通信用スイッチ２に行う。
【００７１】
記録用フローエントリ設定部１５は、統計情報（通信量）を記録するためのフローエントリを生成して、記録用スイッチ３に設定する。記録用フローエントリ設定部１５は、統計情報（通信量）を記録するためのフローエントリを記録用スイッチ３に送信し、記録用スイッチ３に登録させる。
【００７２】
また、フローエントリ管理情報記憶部１２には、記録用スイッチ３に設定されたフローエントリの情報が記憶される。
【００７３】
図５は、フローエントリ管理情報記憶部１２に記憶されるフローエントリ管理情報の例を示す説明図である。図５に示すように、フローエントリ管理情報は、複数のフローエントリ構成情報１２１を含む。フローエントリ構成情報１２１は、各々１つのフローエントリに対応している。フローエントリ構成情報１２１において、優先度１２１１は、記録用スイッチ３が当該フローエントリを検索する順序を表している。ここで、記録用スイッチ３に同じ優先度のフローエントリが複数存在する場合は、記録用スイッチ３は、登録された順に検索する。
【００７４】
また、転送方向１２１２は、ユーザデータの転送方向を表している。転送方向１２１２は、値として送信方向と受信方向を持つ。エントリ種別１２１３は、フローエントリの検索条件の種別を表わしている。エントリ種別１２１３は、値として、ＶＬＡＮ番号、送信元レイヤ３アドレス、宛先レイヤ３アドレス、送信元レイヤ４アドレス、宛先レイヤ４アドレス、プロトコル番号等、コピーパケットの各通信レイヤのアドレス情報に含まれるすべてのデータを識別する整数値を持ってもよい。
【００７５】
また、アドレス範囲１２１４は、フローエントリの検索条件の値を表している。本例のアドレス範囲１２１４には、マスク値との組み合わせで範囲指定が可能となっている。アクション情報１２１５は、フローエントリに合致した場合の振る舞いを表わしている。アクション情報１２１５には、例えば、統計情報として、当該フローの通信量の記録を指示する情報とともに、次の種別のフローテーブルの検索を行うか、コピーパケットを廃棄するかを識別する値が含まれていてもよい。
【００７６】
また、通信量１２１６は、フローエントリのマッチ条件に合致したフロー（コピーパケット）の数を表している。通信量１２１６には、パケット数とオクテット数とが含まれる。
【００７７】
本例のフローエントリのマッチ条件は、転送方向１２１２と、エントリ種別１２１３と、アドレス範囲１２１４とで表現される。より具体的には、転送方向１２１２が一致しており、かつエントリ種別１２１３で示されるアドレス情報の値が、少なくともアドレス範囲１２１４で示される範囲の値と一致している場合に、そのコピーパケットは、当該フローエントリ構成情報１２１が対応するフローエントリのマッチ条件に合致しているとしてもよい。
【００７８】
通信量取得部１６は、フローエントリ管理情報記憶部１２に記憶されているフローエントリ管理情報を基に、記録用スイッチ３から、フローエントリの情報を取得する。通信量取得部１６は、例えば、記録用スイッチ３に記憶されているフローエントリの情報を、エントリ種別ごとに、順次取得してもよい。通信量取得部１６が取得したフローエントリの情報は、フローエントリ構成情報１２１として、フローエントリ管理情報記憶部１２に登録または上書き更新される。これにより、フローエントリ管理情報記憶部１２に通信量１２１６が記録される。
【００７９】
通信量取得部１６は、例えば、フローエントリ管理情報記憶部１２に登録されたフローエントリ構成情報１２１の情報をキーにして、取得対象とするフローエントリを決定し、記録用スイッチ３から該当のフローエントリを取得してもよい。そして、フローエントリ管理情報記憶部１２内の該当するフローエントリの通信量欄を更新してもよい。
【００８０】
通信量取得部１６は、例えば、一定時間間隔で動作し、フローエントリを記録用スイッチ３から取得する。
【００８１】
通信量取得部１６は、取得された通信量の変化の有無やその変化量を基に、記録用フローエントリ設定部１５にエントリの分割や集約を依頼する。通信量取得部１６は、例えば、今回取得したフローエントリの通信量が、前回取得した情報が保存されているフローエントリ構成情報１２１の値より所定量以上増えている場合、記録用フローエントリ設定部１５にエントリの分割を依頼してもよい。一方、通信量取得部１６は、例えば、取得したフローエントリの通信量が、所定回数以上または所定時間以上変化がない場合、記録用フローエントリ設定部１５にエントリの集約を依頼してもよい。
【００８２】
記録用フローエントリ設定部１５は、通信量が増えている場合に、該フローエントリを分割して複数のフローエントリを生成する。また、記録用フローエントリ設定部１５は、通信量の変化が所定回数または所定時間以上ない場合、該フローエントリを隣接するフローエントリと集約させて１つのフローエントリを生成する。そして、記録用フローエントリ設定部１５は、記録用スイッチ３に対して、分割または集約対象とされたフローエントリを削除させ、代わりに、新たに生成したフローエントリを登録する。なお、通信量を基に最初に集約対象とされるフローエントリが選択される条件と、そのフローエントリとの集約候補とされるフローエントリの条件とがいずれも、通信量の変化が所定回数または所定時間以上ない場合としているが、両者の条件を異ならせてもよい。
【００８３】
図６Ａおよび図６Ｂは、記録用スイッチ３における、フローテーブルとフローエントリの例を示す説明図である。なお、図６Ｂは、図６Ａの続きを示している。
【００８４】
図６Ａおよび図６Ｂに示すように、記録用スイッチ３は、該記録用スイッチ３が認識可能なすべての通信レイヤのすべてのアドレス情報のすべての値を網羅するように予め分割された単位で、フローテーブルを有していてもよい。本例では、記録用スイッチ３は、エントリ種別１２１３で指定される値の数だけ、フローテーブルを有しているものとする。
【００８５】
図６Ａおよび図６Ｂには、一例として、７種のフローテーブルが例示されている。１つ目は、送信・受信種別に対応するフローテーブル３０である。２つ目は、ＶＬＡＮ番号に対応したフローテーブル３１（例えば、３１−１および３１−２）である。３つ目は、宛先レイヤ３アドレスに対応したフローテーブル３２（例えば、３２−１および３２−２）である。４つ目は、送信元レイヤ３アドレスに対応したフローテーブル３３（例えば、３３−１および３３−２）である。５つ目は、プロトコル番号に対応したフローテーブル３４（例えば、３４−１および３４−２）である。６つ目は、宛先レイヤ４アドレスに対応したフローテーブル３５（例えば、３５−１〜３５−４）である。７つ目は、送信元レイヤ４アドレスに対応したフローテーブル３６（例えば、３６−１〜３６−４）である。
【００８６】
各フローテーブルは、コピーパケット受信時に、先頭から順に全て検索される。なお、図６Ａおよび図６Ｂでは図示省略しているが、各フローテーブルの最後には、ワイルドカードで指定されたアドレス値を有するフローエントリが登録されている。
【００８７】
また、図６Ａおよび図６Ｂには、１つのエントリ種別に複数のフローテーブルが示されているが、これは、後段のフローテーブルが、前段のエントリ種別のフローテーブルの値を引き継いでいることを意味する。図７は、送信・受信種別に対応するフローテーブル３０およびＶＬＡＮ番号に対応するフローテーブル３１−１に登録されるフローエントリの例を示す説明図である。図７に示すように、例えば、送信・受信種別に対応するフローテーブル３０には、転送方向が送信を示すコポーパケットを識別するフローエントリが登録されている。そのフローエントリには、例えば、該エントリの通信量を加算した上で、当該エントリと紐づいているＶＬＡＮ番号に対応するフローテーブル３１−１での検索処理を行う旨のアクション情報が含まれている。ＶＬＡＮ番号に対応するフローテーブル３１−１に含まれるフローエントリにも同様に、通信量を加算した上で、当該エントリに紐づいた後段のフローテーブル（例えば、宛先レイヤ３アドレスに対応するフローテーブル３２−１）での検索処理を行う旨のアクション情報が含まれている。このようにして、様々な粒度でかつ様々なアドレス値に対応したフローエントリを用意する。なお、最初は粒度を荒めにして各フローテーブルに登録されるフローエントリの数を少なくしてもよい。後述するエントリの分割処理で、実際の通信状況に合わせて適切なエントリ数に展開される。
【００８８】
また、記録用フローエントリ設定部１５は、最後のすなわち最も後段に位置するエントリ種別のフローテーブルの各フローエントリで、コピーパケットを廃棄するアクションを設定する。
【００８９】
また、図８は、フローエントリの分割および集約の例を示す説明図である。図８に示す例では、最初、宛先レイヤ４アドレスに対応するフローテーブル３５に、宛先ｔｃｐポートの値とマスク値“0xe000”とを合わせた結果、マスク値“0xe000”と合致することをマッチ条件とするフローエントリが登録されている。これは、当該フローエントリのアドレス範囲が、“0xe000”〜“0xefff”であることを意味している。
【００９０】
ここで、コントローラ１が当該フローエントリの通信量が増えたことを検出する。そのような場合、現在のフローエントリのマッチ条件とされるアドレス値の範囲“0xe000”〜“0xefff”を２つに分割し、“0xe000”〜“0xe7ff”と、“0xe800”〜“0xefff”とに分け、それぞれをマッチ条件とする２つのフローエントリを、上記のフローエントリに代えて設定してもよい。
【００９１】
このような分割によって、通信を行ったポート番号を絞り込むことができる。
【００９２】
また、図８に示す例では、そのようにして、宛先レイヤ４アドレスに対応するフローテーブル３５に、“0x1000”〜“0x17ff”をアドレス範囲とするフローエントリ（図中のマスク値“0x1000”のフローエントリ）と、“0x1800”〜“0x1fff”をアドレス範囲とするフローエントリ（図中のマスク値“0x1800”のフローエントリ）とが設定される例が示されている。ここで、コントローラ１は、例えば、マスク値“0x1000”のフローエントリの通信量が一定時間変化しないことが検出されたとする。そのような場合、隣接するアドレス値を有する図中のマスク値“0x1800”のフローエントリが分割対象でなければ、これら２つのフローエントリを集約してもよい。すなわち、マスク値の論理積をとった新たなマスク値“0x1000”を有する１つのフローエントリを生成し、上記の２つのフローエントリに代えて設定してもよい。
【００９３】
次に、図９を参照して、本実施形態の動作を説明する。図９は、本実施形態の全体的な処理の流れをシーケンス図である。以下の説明において、カッコ付きの番号（１）〜（８）は、図９内に記載されている同じ番号と対応している。
【００９４】
（１）コピーパケット転送路管理部１３が、通信システムのネットワーク構成を基に、コピーパケット転送路管理情報として、ユーザデータの転送を行わせる通信用パケットについての通信用スイッチ情報１１１を生成してコピーパケット転送路管理情報記憶部１１に記憶させる。
【００９５】
本例では、コピーパケット転送用通信路１００、パケットコピー設定用通信路２００、ユーザデータ通信路３００、フロー制御用通信路４００という４種類の通信路と、通信用スイッチ２、サーバ５−１、５−２、クライアント端末５−３で構成されるパケットデータを転送する物理接続構成および、コントローラ１、記録用スイッチ３で構成されるオープンフロー技術に基づく物理接続構成で構成されるコピーパケットを転送する物理接続構成が配備されているとする。また、記録用スイッチ３へのフローエントリの登録は、オープンフロー技術によりコントローラ１から行われるものとする。
【００９６】
コピーパケット転送路管理部１３は、例えば、コピーパケット転送用通信路１００を使用して通信するためのＶＬＡＮ番号を決定する。ＶＬＡＮ番号のデータ構造は、図４に示すものとする。すなわち、最下位ビットはパケットデータの転送方向を示し、“0x01”は受信パケットを、“0x10”は送信パケットをコピーしたことを示す。このため、コピーパケット転送路管理部１３は、ＶＬＡＮ番号の最下位２ビットは予約済みとし、４の倍数でコピーパケット転送用のＶＬＡＮ番号を決定してもよい。なお、最下位１ビットのみが転送方向を表すとしてもよい。その場合、コピーパケット転送路管理部１３は、ＶＬＡＮ番号の最下位１ビットは予約済みとし、２の倍数でコピーパケット転送用のＶＬＡＮ番号を決定する。コピーパケット転送用のＶＬＡＮ番号の決定方法は、“2048”等の固定値をデフォルトで使用し、コピーパケット転送路管理部１３が自動で選択してもよいし、コマンド等により利用者が指定してもよい。
【００９７】
コピーパケット転送路管理部１３は、コピーパケット転送用のＶＬＡＮ番号が決定すると、決定したＶＬＡＮ番号を、ＶＬＡＮ番号１１１２としてコピーパケット転送路管理情報記憶部１１に保存する。なお、当該ＶＬＡＮ番号１１１２の設定対象とされる通信用スイッチ２は、通信用スイッチ２−１および通信用スイッチ２−２である。
【００９８】
（２）コピー操作設定部１４は、通信用スイッチ２−１および通信用スイッチ２−２に対し、パケットをコピーし、リモートに存在する記録用スイッチ３にコピーパケットを転送する設定を行う。
【００９９】
この設定は、通信用スイッチ２の各々に実装されているリモートミラーリング等の技術を利用してよい。その際に使用するＶＬＡＮ番号は、コピーパケット転送路管理情報記憶部１１に保存されている、設定先の通信用スイッチに対応する通信用スイッチ情報１１１のＶＬＡＮ番号１１１２を使用する。
【０１００】
通信用スイッチ２−３にコピー操作設定部１４が設定を行わないのは、サーバ、クライアント端末等が直接接続していないためである。コピー操作設定部１４は、コマンド設定等により、サーバ、クライアント端末が接続しない通信用スイッチ２を把握し、コピー操作を登録する対象外としてもよい。
【０１０１】
（３）記録用フローエントリ設定部１５は、記録用スイッチ３に、図６Ａおよび図６Ｂで示したような各通信レイヤのアドレス情報を網羅するように設定されたフローテーブルを登録する。
【０１０２】
図６Ａおよび図６Ｂにおいて、送信・受信種別に対応したフローテーブル３０は、コピーパケットに含まれるＶＬＡＮ番号において転送方向を示すビットの値により、送信方向か受信方向の選択を行う。各転送方向単位にフローテーブル３１から３６までのフローテーブルを作成する。
【０１０３】
ＶＬＡＮ番号に対応するフローテーブル３１は、パケットデータのＶＬＡＮを識別するフローテーブルである。記録用フローエントリ設定部１５は、初期登録時に、例えば２５６個のＶＬＡＮ毎に集約したフローテーブル３１を生成してもよい。
【０１０４】
宛先レイヤ３アドレスに対応するフローテーブル３２は、一例として宛先ＩＰアドレスを検索するためのフローテーブルである。記録用フローエントリ設定部１５は、初期登録時に、例えば、ＩＰアドレスの先頭１オクテット単位にマスク値で分割した、フローエントリを生成してもよい。
【０１０５】
送信元レイヤ３アドレスに対応するフローテーブル３３は、一例として送信元ＩＰアドレスを検索するためのフローテーブルである。記録用フローエントリ設定部１５は、初期登録時に、例えば、ＩＰアドレスの先頭１オクテット単位にマスク値で分割した、フローエントリを生成してもよい。
【０１０６】
プロトコル番号に対応するフローテーブル３４は、ＴＣＰ、ＵＤＰ、ＩＣＭＰ等のプロトコルを識別するためのフローテーブルである。
【０１０７】
宛先レイヤ４アドレスに対応するフローテーブル３５は、ＴＣＰ，ＵＤＰのポート番号を検索するためのフローテーブルである。記録用フローエントリ設定部１５は、例えば、プロトコル番号に対応するフローテーブル３４のプロトコルがＴＣＰ，ＵＤＰを示す値の場合に、４０９６のポート番号単位にマスク値で値を分割した、フローエントリを生成してもよい。ＴＣＰ，ＵＤＰ以外のプロトコルの場合、記録用フローエントリ設定部１５は、プロトコル番号のフローテーブル３４により検索された後、宛先レイヤ４アドレスのフローテーブル３５を検索させず、コピーパケットを廃棄させる旨のフローエントリを設定する。
【０１０８】
記録用フローエントリ設定部１５は、送信元レイヤ４アドレスに対応するフローテーブル３６も、宛先レイヤ４アドレスに対応するフローテーブル３５と同様に、４０９６個のポート番号単位にマスク値で値を分割して、フローエントリを生成してもよい。
【０１０９】
図７に示したように、送信・受信種別に対応するフローテーブル３０において、パケット内のＶＬＡＮ番号の転送方向を示すビットが“0x10”の場合、送信方向のコピーパケットであると解釈し、送信方向用ＶＬＡＮ番号に対応するフローテーブル３１（例えば、３１−１）の検索を行わせる旨のアクション情報が登録されている。また、送信方向用ＶＬＡＮ番号のフローテーブル３１の検索の次は、送信方向用の宛先レイヤ３アドレスのフローテーブル３２の検索を行わせる。最後に、送信方向用の送信元レイヤ４アドレスのフローテーブル３６の検索が終わった場合、例えば、無条件にコピーパケットの廃棄アクションを示すアクション情報を有するフローエントリが登録されているフローテーブルを検索させて、コピーパケットを廃棄させる。また、プロトコル番号に対応するフローテーブル３４でＴＣＰ、ＵＤＰ以外のプロトコルの場合のフローエントリも、アクション情報にはコピーパケットの廃棄アクションを登録するなどして、コピーパケットを廃棄させる。
【０１１０】
（４）通信用スイッチ２−１または通信用スイッチ２−２を使用したユーザデータ通信が行われた場合、通信用スイッチ２は、コピー操作設定部１４の設定に従って、コピーパケットを作成して、記録用スイッチ３に向けてコピーパケットを送信する。
【０１１１】
このとき、通信用スイッチ２は、コピーパケットにおいて、オリジナルＶＬＡＮ番号を変更せず、設定されたコピーパケット転送用のＶＬＡＮ番号を追加する。
【０１１２】
（５）記録用スイッチ３は、フローエントリの指定に従って受信したコピーパケットを送信・受信種別に対応するフローテーブル３０から順に検索を行い、一致したフローエントリに通信量を記録していく。そして、記録用スイッチ３は、最後のフローテーブルの検索が終了した際に、フローエントリに従い、コピーパケットを廃棄する。
【０１１３】
（６）通信量取得部１６は、利用者やアプリケーションからの通信量取得要求または定期的なフローテーブル収集トリガにより、記録用スイッチ３からフローエントリを取得し、取得したフローエントリに含まれる通信量を、フローエントリ管理情報記憶部１２に保存する。
【０１１４】
（７）通信量取得部１６は、定期的にフローテーブル中のフローエントリを収集し、フローエントリ単位に通信量の収集を行う。収集間隔は、フローエントリの数に応じて定めてもよい。このとき、一度に取得するフローエントリ数も調整して、各フローエントリが同じ時間間隔で取得されるようにするのが好ましい。通信量取得部１６は、例えば、記録用スイッチ３から収集したフローエントリの通信量が、フローエントリ管理情報記憶部１２に保存されている前回取得時の通信量よりも、連続して上回った場合、記録用フローエントリ設定部１５に、当該フローエントリの分割を依頼する。
【０１１５】
（８）記録用フローエントリ設定部１５は、通信量取得部１６からの依頼に応じて、指定されたフローエントリを分割する。そして、上記の（３）の手順を用いて、記録用スイッチ３に分割したフローテーブルを登録する。この時、分割されたフローエントリのアクション情報には、分割前のフローエントリと同じアクションを設定する。
【０１１６】
フローエントリの分割が繰り返されることにより、通信量の増加のあった最も細かい粒度のアドレス情報までフローエントリが分割され、ユーザデータ通信路３００上を流れている通信の内容を細かく把握することが可能となる。
【０１１７】
また、通信量が一定回数増加しないフローエントリがあった場合、通信量取得部１６は、記録用フローエントリ設定部１５に、当該フローエントリの集約を依頼する。記録用フローエントリ設定部１５は、通信量取得部１６からの依頼に応じて、指定されたフローエントリの集約を試みる。集約できる隣接のフローエントリがあれば、集約を行う。そして、上記の（３）の手順を用いて、記録用スイッチ３に集約したフローテーブルを登録する。
【０１１８】
以上のように、本実施形態によれば、ユーザデータ通信用のスイッチのＣＰＵ負荷の上昇を抑制しつつ、ネットワークを流れるすべての通信を対象にした通信量を所望の粒度で把握できる。
【０１１９】
実施形態２．
本発明の第２の実施形態を説明する。本実施形態では、第１の実施形態の構成に対して、通信用スイッチ２をオープンフロー化する。
【０１２０】
通信用スイッチ２の実装によっては、ＶＬＡＮ番号を数個程度のみしか使用できない可能性がある。その場合は、オープンフロー技術を使用し、多数のＶＬＡＮ番号の設定とコピーパケットの生成および転送操作を行うことが可能になる。
【０１２１】
また、オープンフロー化により、特定のフローのみをコピーし、コピーパケット転送用通信路１００を流れるコピーパケットの量を限定することも可能である。それにより、コピーパケット転送用通信路１００の通信帯域が少ない場合でもパケットの欠落無く、通信量の計測を実現することが可能となる。
【０１２２】
この場合、一例として、コントローラ１から通信用スイッチ２に対して指定されたパケットコピーの対象となるフロー（パケット）の情報を、コピーパケット転送路管理部１３が認識し、コピーパケット転送路管理情報記憶部１１に記憶してもよい。その場合、通信用スイッチ情報１１１に、コピー対象とするフローの情報を格納することも可能である。
【０１２３】
実施形態３．
本実施形態では、第１の実施形態に比べて、記録用スイッチ３がより少ない量のフローエントリで、通信量の計測を実現する。
【０１２４】
図１０は、本実施形態の記録用スイッチ３が保持するフローテーブルの例を示す図である。例えば、図６Ａおよび図６Ｂに示したフローテーブルの構成では、通信が実際に行われるＩＰアドレス数分およびＬ４ポート番号数のフローエントリが必要となり、記録用スイッチ３において、フローエントリを記録するメモリ容量が不足する可能性がある。このため、記録用スイッチ３を複数設けてもよい。すなわち、図１０に示すように、通信システムは、複数の記録用スイッチ３を、フローテーブル毎に多段に配置してもよい。図６Ａおよび図６Ｂに示す例では、最後に検索されるフローテーブルのアクション情報では、コピーパケットの廃棄を行っていた。しかし、本実施形態の通信システムでは、記録用スイッチ３を多段に接続し、記録用スイッチ３の各々に対して、フローテーブル単位でフローエントリを設定する。図１０に示す例は、宛先レイヤ３アドレスに対応するフローテーブル３２と送信元レイヤ３アドレスに対応するフローテーブル３３を別の記録用スイッチ３（３−１および３−２）に設定する例である。
【０１２５】
例えば、記録用スイッチ３−１で検索される最後のフローテーブル３２には、記録用スイッチ３−２と接続している物理ポートにコピーパケットを送信するアクション情報を有するフローエントリが登録される。一方、記録用スイッチ３−２で検索される最後のフローテーブル３３には、コピーパケットを廃棄するアクション情報を有するフローエントリが登録される。
【０１２６】
記録用スイッチ３を、フローエントリの種別に応じて多段構成となるように配備することにより、フローテーブルを記録用スイッチ単位に分散でき、対応可能なフローエントリ数の少ないスイッチしか配備できない環境でも本発明を利用可能になる。
【０１２７】
次に、本発明の通信システムの概要を説明する。図１１は、本発明の通信システムの義用を示すブロック図である。図１１に示すように、本発明の通信システムは、通信用スイッチ６１と、記録用スイッチ６２と、コントローラ７０とを備える。
【０１２８】
通信用スイッチ６１（例えば、通信用スイッチ２）は、通信量の計測対象とされるデータパケットの転送処理を行う。
【０１２９】
記録用スイッチ６２（例えば、記録用スイッチ３）は、通信用スイッチ６１からデータパケットのコピーであるコピーパケットを受信して、自装置が保持しているフローエントリに従い、コピーパケットのフローごとの通信量を記録する。
【０１３０】
コントローラ７０（例えば、コントローラ１）は、記録用スイッチ６２に対して、受信したコピーパケットの通信量を記録させるための通信量記録用フローエントリを設定する。
【０１３１】
また、コントローラ７０は、フローエントリ設定手段７１と、通信量収集手段７２とを含む。
【０１３２】
フローエントリ設定手段７１（例えば、記録用フローエントリ設定部１５）は、コピーパケットの経路上に位置する記録用スイッチに設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤのアドレス情報における少なくとも予め指定されたアドレス値を網羅している通信量記録用フローエントリを、記録用スイッチに対して設定する。
【０１３３】
なお、フローエントリ設定手段７１は、コピーパケットの経路上に位置する記録用スイッチ６２に設定するフローエントリの集合において、マッチ条件が、記録用スイッチ６２で認識可能なコピーパケット内の全ての通信レイヤの全てのアドレス情報における全てのアドレス値を網羅している通信量記録用フローエントリを、記録用スイッチ６２に対して設定してもよい。
【０１３４】
通信量収集手段７２（例えば、通信量取得部１６）は、所定のタイミングで、記録用スイッチ６２が保持しているフローエントリの通信量を収集する。
【０１３５】
また、上記の通信システムにおいて、記録用スイッチ６２は、通信量記録用フローエントリを、コピーパケットのアドレス情報内の種別データであって、アドレス情報内のいずれかのデータフィールドもしくはデータフィールド内において意味をもつビットまたはそれらの組み合わせである種別データの単位で分けて保持するための複数のフローテーブルを有し、フローエントリ設定手段７１は、複数のフローテーブルの各々に、受信したコピーパケットの当該フローテーブルが対応する種別データの値がマッチ条件に合致した場合に、該コピーパケットの通信量を記録させた後、該コピーパケットを破棄するか、他のフローテーブルを再度検索させるか、他の記録用スイッチ６２に転送させるかのいずれかを行わせる条件付きフローエントリを少なくとも登録させるとともに、各のフローテーブルの末尾に、受信したコピーパケットの当該フローテーブルが対応する種別データの値を問わず、受信したコピーパケットの通信量を記録させた後、該コピーパケットを破棄するか、他のフローテーブルを再度検索させるか、他の記録用スイッチ６２に転送させるかのいずれかを行わせる条件なしフローエントリを登録させてもよい。
【０１３６】
また、図１２は、コントローラ７０の他の構成例を示すブロック図である。コントローラ７０は、収集した通信量が所定の第１条件を満たす場合に、該フローエントリを分割するフローエントリ分割手段７３（例えば、記録用フローエントリ設定部１５）を含み、フローエントリ分割手段７３は、分割対象とされたフローエントリでマッチ条件とされるアドレス情報の値の範囲を２以上に分割し、分割後の値の範囲をそれぞれマッチ条件とする２以上のフローエントリを生成し、フローエントリ設定手段７１は、記録用スイッチ６２に対して、分割前のフローエントリの削除と、分割後のフローエントリの追加を設定してもよい。
【０１３７】
また、コントローラ７０は、収集した通信量が所定の第２条件を満たす場合に、該フローエントリを集約するフローエントリ集約手段７４（例えば、記録用フローエントリ設定部１５）を含み、フローエントリ集約手段７４は、集約対象とされた第１のフローエントリのマッチ条件に用いられるアドレス情報のデータ種別と同一のデータ種別をマッチ条件に用いており、かつ収集された通信量が所定の第３条件を満たす第２のフローエントリが存在する場合に、第１のフローエントリと第２のフローエントリとを集約して、両者の値の範囲を結合させた値の範囲を、マッチ条件とするアドレス情報の値の範囲とする第３のフローエントリを生成し、フローエントリ設定手段７１は、記録用スイッチ６２に対して、第１のフローエントリおよび第２のフローエントリの削除と、第３のフローエントリの追加を設定してもよい。
【０１３８】
また、コントローラ７０は、通信用スイッチ６１に対して、データパケットのコピーを記録用スイッチ６２に転送するための設定を行うコピーパケット設定手段７５（例えば、コピー操作設定部１４）を含み、コピーパケット設定手段７５は、コピーパケットに、コピーパケット転送用に定義されたＶＬＡＮ番号を付与した上で、所定のポートから出力させるための設定を行ってもよい。
【０１３９】
コピーパケット設定手段７５は、コピーパケットに、コピーパケット転送用に定義されたＶＬＡＮ番号であって、データパケットの送受信方向を示す番号が組み込まれたＶＬＡＮ番号を付与した上で、所定のポートから出力させるための設定を行い、フローエントリ設定手段７１は、記録用スイッチ６２に対して、１つのフローテーブル内に登録されるフローエントリの集合において、マッチ条件が、送受信方向を示す番号に用いられる値を網羅している通信量記録用フローエントリを設定してもよい。
【０１４０】
また、上記の通信システムは、コピーパケットの転送経路上に複数の記録用スイッチ６２を備えていてもよい。そのような場合において、フローエントリ設定手段７１は、複数の記録用スイッチ６２に設定するフローエントリの集合において、マッチ条件が、記録用スイッチで認識可能なコピーパケット内の少なくとも予め指定された通信レイヤの予め指定されたアドレス情報における予め指定されたアドレス値を網羅している通信量記録用フローエントリを、記録用スイッチに対して設定してもよい。その際、フローエントリのマッチ条件に用いられるデータ種別が、記録用スイッチ６２間で異なっていてもよい。
【０１４１】
以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１４２】
本発明は、種々のネットワーク構成にも対応でき、また、通信用スイッチや記録用スイッチの要求スペックを上げずに正確な通信量を測定したいとの要求にも好適に適用可能である。
【符号の説明】
【０１４３】
１  コントローラ
２  通信用スイッチ
３  記録用スイッチ
５  ホスト
５−１、５−２  サーバ
５−３  クライアント端末
１００  コピーパケット転送用通信路
２００  パケットコピー設定用通信路
３００  ユーザデータ通信路
４００  フロー制御用通信路
１１  コピーパケット転送路管理情報記憶部
１２  フローエントリ管理情報記憶部
１３  コピーパケット転送路管理部
１４  コピー操作設定部
１５  記録用フローエントリ設定部
１６  通信量取得部
１１１  通信用スイッチ情報
１１１１  アドレス情報
１１１２  ＶＬＡＮ番号
１１１３  コピー対象転送方向
１２１  フローエントリ構成情報
１２１１  優先度
１２１２  転送方向
１２１３  エントリ種別
１２１４  アドレス範囲
１２１５  アクション情報
１２１６  通信量
３０、３１、３２、３３、３４、３５、３６  フローテーブル
６１  通信用スイッチ
６２  記録用スイッチ
７０  コントローラ
７１  フローエントリ設定手段
７２  通信量収集手段
７３  フローエントリ分割手段
７４  フローエントリ集約手段
７５  コピーパケット設定手段
【図１】
2017183959.tif 000003
【図２】
2017183959.tif 000004
【図３】
2017183959.tif 000005
【図４】
2017183959.tif 000006
【図５】
2017183959.tif 000007
【図６Ａ】
2017183959.tif 000008
【図６Ｂ】
2017183959.tif 000009
【図７】
2017183959.tif 000010
【図８】
2017183959.tif 000011
【図９】
2017183959.tif 000012
【図１０】
2017183959.tif 000013
【図１１】
2017183959.tif 000014
【図１２】
2017183959.tif 000015