(57)【要約】【課題】高速な通信回線においても、効率的に通信データの統計をとることが可能な技術を提供する。【解決手段】通信データ統計装置は、第１のフローの統計を第１のメモリに記録する下位のデータ更新部と、第２のフローの統計を第２のメモリに記録する上位のデータ更新部とを備えている。下位のデータ更新部は、第１のフローの統計の第１のメモリへの記録の際に、上位のデータ更新部から受信した制御情報に基づいて、第２のフロー識別条件に含まれるが第１のフロー識別条件に含まれないフロー識別子である異種識別子の値の統計をとり、この異種識別子の統計を第１のフローの統計に対応付けて第１のメモリに記録する。【選択図】図４
2009290436.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを流れる通信データの統計をとる通信データ統計装置であって、
複数種類のフロー識別子の値が記録されたパケットを受信する受信部と、
１種類以上の前記フロー識別子からなる第１のフロー識別条件と、前記受信したパケットのフロー識別子の値とに基づいて、該パケットの第１のフローを識別し、該第１のフローの統計情報を第１のメモリに記録する下位のデータ更新部と、
前記第１のフロー識別条件よりも多くの種類のフロー識別子を含む第２のフロー識別条件と、前記受信したパケットのフロー識別子の値とに基づいて、該パケットの第２のフローを識別し、該第２のフローの統計情報を第２のメモリに記録する上位のデータ更新部と、
予め定められた統計的な条件に基づいて、前記第１のメモリに記録された前記第１のフローの統計情報または前記第２のメモリに記録された前記第２のフローの統計情報を出力する出力部とを備え、
前記上位のデータ更新部は、前記第２のフロー識別条件に含まれるが、前記第１のフロー識別条件に含まれないフロー識別子である異種識別子の値の統計をとるための制御情報を、前記下位のデータ更新部に送信し、
前記下位のデータ更新部は、前記第１のフローの統計を前記第１のメモリに記録する際に、前記上位のデータ更新部から受信した前記制御情報に基づいて、前記異種識別子の値の統計をとり、該異種識別子の値の統計情報を前記第１のフローの統計情報に対応付けて前記第１のメモリに記録する
通信データ統計装置。
【請求項２】
請求項１に記載の通信データ統計装置であって、
前記上位のデータ更新部は、前記制御情報として、前記識別された第２のフローが、新規のフローであるか否かを示すフラグ情報を前記下位のデータ更新部に送信し、
前記下位のデータ更新部は、前記上位のデータ更新部から受信したフラグ情報が、新規のフローを識別したことを示す場合に、前記異種識別子の値の数をカウントアップする
通信データ統計装置。
【請求項３】
請求項１に記載の通信データ統計装置であって、
前記下位のデータ更新部は、前記第１のフローの統計期間を示す統計期間情報を前記上位のデータ更新部に送信し、
前記上位のデータ更新部は、前記下位のデータ更新部から受信した前記統計期間情報を、次回に送信される前記制御情報として保持し、
前記下位のデータ更新部は、前記上位のデータ更新部から受信した制御情報によって表される統計期間と、現在の統計期間とが異なる場合に、前記異種識別子の値の数をカウントアップする
通信データ統計装置。
【請求項４】
請求項３に記載の通信データ統計装置であって、
前記下位のデータ更新部は、新規のフローを識別した場合、または、前記出力部によって前記統計情報が出力された場合に、前記統計期間を変化させる
通信データ統計装置。
【請求項５】
ネットワークを流れる通信データの統計をとる通信データ統計方法であって、
複数種類のフロー識別子の値が記録されたパケットを受信する受信工程と、
１種類以上の前記フロー識別子からなる第１のフロー識別条件と、前記受信したパケットのフロー識別子の値とに基づいて、該パケットの第１のフローを識別し、該第１のフローの統計情報を第１のメモリに記録する第１のデータ更新工程と、
前記第１のフロー識別条件よりも多くの種類のフロー識別子を含む第２のフロー識別条件と、前記受信したパケットのフロー識別子の値とに基づいて、該パケットの第２のフローを識別し、該第２のフローの統計情報を第２のメモリに記録する第２のデータ更新工程と、
予め定められた統計的な条件に基づいて、前記第１のメモリに記録された前記第１のフローの統計情報または前記第２のメモリに記録された前記第２のフローの統計情報を出力する出力工程とを備え、
前記第２のデータ更新工程は、前記第２のフロー識別条件に含まれるが、前記第１のフロー識別条件に含まれないフロー識別子である異種識別子の値の統計をとるための制御情報を取得する工程を含み、
前記第１のデータ更新工程は、前記第１のフローの統計を前記第１のメモリに記録する際に、前記第２のデータ更新工程で取得された前記制御情報に基づいて、前記異種識別子の値の統計をとり、該異種識別子の統計を前記第１のフローの統計情報に対応付けて前記第１のメモリに記録する工程を含む
通信データ統計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを流れる通信データの統計をとる技術に関する。
【背景技術】
【０００２】
インターネットは重要な社会インフラとして定着しており、従来のベストエフォート型のデータ通信だけでなく、音声や動画、基幹業務のトランザクションデータなど、通信の品質の保証が必要なデータの通信も行われつつある。また、ＡＤＳＬ（Asymmetric Digital Subscriber Line）やＦＴＴＨ（Fiber To The Home）技術の普及によってアクセス回線はブロードバンド化され、これに伴い、通信されるデータ量も増大している。
【０００３】
このような背景から、通信事業者やＩＳＰ（インターネットサービスプロバイダ）はネットワーク内の通信の状態を把握するため、ネットワークを流れる通信データの統計をとる技術を必要としている。中でも、通信データの送信元や宛先、利用されるアプリケーション、品質レベルなどにより分類されるフロー毎に通信データの統計をとる技術に対する要求が高い。
【０００４】
フロー毎に通信データの統計をとる技術として、例えば、特許文献１には、キャッシュ型のフロー統計技術についての記載がある。この技術では、受信パケットのヘッダ情報のから所定の組み合わせのフロー識別子（例えば、送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号等）を取得し、その組み合わせ内の各フロー識別子の値がすべて同一であるパケットの数量をカウントすることで、フロー毎の通信量を集計している。
【０００５】
【特許文献１】特開２００６−５４０２号公報
【特許文献２】特開２００６−３５２８３１号公報
【０００６】
このようなキャッシュ型のフロー統計技術では、パケットを受信する度に、ヘッダ情報の解析を行うため、フローの分析能力が極めて高いという特徴がある。しかし、受信したパケットのすべてについてヘッダ情報の解析を行い、さらに、その解析結果をメモリに記録する必要があるため、回線速度が４０Ｇｂｐｓ、１００Ｇｂｐｓと高速になるにつれて、メモリへのアクセス速度がネックとなり、必要な統計情報をメモリに記録することが困難になる場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このような問題を考慮し、本発明が解決しようとする課題は、高速な通信回線においても、効率的に通信データの統計をとることが可能な技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００９】
［適用例１］ネットワークを流れる通信データの統計をとる通信データ統計装置であって、複数種類のフロー識別子の値が記録されたパケットを受信する受信部と、１種類以上の前記フロー識別子からなる第１のフロー識別条件と、前記受信したパケットのフロー識別子の値とに基づいて、該パケットの第１のフローを識別し、該第１のフローの統計情報を第１のメモリに記録する下位のデータ更新部と、前記第１のフロー識別条件よりも多くの種類のフロー識別子を含む第２のフロー識別条件と、前記受信したパケットのフロー識別子の値とに基づいて、該パケットの第２のフローを識別し、該第２のフローの統計情報を第２のメモリに記録する上位のデータ更新部と、予め定められた統計的な条件に基づいて、前記第１のメモリに記録された前記第１のフローの統計情報または前記第２のメモリに記録された前記第２のフローの統計情報を出力する出力部とを備え、前記上位のデータ更新部は、前記第２のフロー識別条件に含まれるが、前記第１のフロー識別条件に含まれないフロー識別子である異種識別子の値の統計をとるための制御情報を、前記下位のデータ更新部に送信し、前記下位のデータ更新部は、前記第１のフローの統計を前記第１のメモリに記録する際に、前記上位のデータ更新部から受信した前記制御情報に基づいて、前記異種識別子の値の統計をとり、該異種識別子の値の統計情報を前記第１のフローの統計情報に対応付けて前記第１のメモリに記録する通信データ統計装置。
【００１０】
このような通信データ統計装置であれば、第１のメモリと第２のメモリとに対して、異なるフロー識別条件に基づいてカウントしたフローの統計を並列的に記録することができる。そのため、ネットワークが高速な通信回線であっても、効率的に通信データの統計をメモリに記録することが可能になる。さらに、上記態様の通信データ統計装置では、下位のデータ更新部は、上位のフロー識別部から受信した制御情報に基づいて、異種識別子の値の統計をとることができる。異種識別子は、第２のフロー識別条件に含まれるが、前記第１のフロー識別条件に含まれないフロー識別子であるため、このような異種識別子の値の統計を、第１のフローの統計と対応付けて第１のメモリに記録することで、フローの多様な分析を行うことが可能になる。なお、異種識別子の値の統計のことを、「異なり数」と呼ぶことが可能である。
【００１１】
［適用例２］適用例１に記載の通信データ統計装置であって、前記上位のデータ更新部は、前記制御情報として、前記識別された第２のフローが、新規のフローであるか否かを示すフラグ情報を前記下位のデータ更新部に送信し、前記下位のデータ更新部は、前記上位のデータ更新部から受信したフラグ情報が、新規のフローを識別したことを示す場合に、前記異種識別子の値の数をカウントアップする通信データ統計装置。
【００１２】
このような通信データ統計装置であれば、下位のデータ更新部は、上位のデータ更新部から受信したフラグ情報に基づいて、容易に異種識別子の値の統計をとることが可能になる。
【００１３】
［適用例３］適用例１に記載の通信データ統計装置であって、前記下位のデータ更新部は、前記第１のフローの統計期間を示す統計期間情報を前記上位のデータ更新部に送信し、前記上位のデータ更新部は、前記下位のデータ更新部から受信した前記統計期間情報を、次回に送信される前記制御情報として保持し、前記下位のデータ更新部は、前記上位のデータ更新部から受信した制御情報によって表される統計期間と、現在の統計期間とが異なる場合に、前記異種識別子の値の数をカウントアップする通信データ統計装置。
【００１４】
このような通信データ統計装置であれば、上位のデータ更新部から下位のデータ更新部に送信された制御情報によって表される統計期間と、現在の統計期間とを対比することで、異種識別子の値の統計をとることが可能になる。
【００１５】
［適用例４］適用例３に記載の通信データ統計装置であって、前記下位のデータ更新部は、新規のフローを識別した場合、または、前記出力部によって前記統計情報が出力された場合に、前記統計期間を変化させる通信データ統計装置。
【００１６】
このような通信データ統計装置であれば、新規のフローを識別した場合や、出力部によって統計情報が出力された場合に変化する統計期間に基づいて、異種識別子の値の統計をとることが可能になる。
【００１７】
なお、本発明は、上述した通信データ統計装置としての構成のほか、通信データ統計方法や、コンピュータプログラムとしても構成することができる。かかるコンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。記録媒体としては、例えば、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態をいくつかの実施例に基づき説明する。
Ａ．第１実施例：
図１は、第１実施例としての通信データ統計装置１０４を含むネットワーク構成の一例を示す図である。図示するように、本実施例のネットワーク構成には、それぞれ相互に接続されてパケットの中継を行うルータ１０１ａ〜１０１ｃや、ルータ１０１ｂに接続されたサーバ１０２ａ、ルータ１０１ｃに接続されたサーバ１０２ｂ、ルータ１０１ａに接続された通信データ統計装置１０４、ルータ１０１ａに接続された端末装置１０３ａ〜１０３ｃ、が含まれている。ルータ１０１ａは、ミラーリング技術あるいはＲＦＣ３１７６に規定されたｓＦｌｏｗ技術を用いることで、中継を行ったパケット（トラフィック）のコピーを通信データ統計装置１０４に送信する。
【００１９】
図２は、本実施例の通信データ統計装置１０４の概略構成を示すブロック図である。通信データ統計装置１０４は、ネットワークを流れる通信データの統計をとる装置である。図示するように、本実施例の通信データ統計装置１０４は、ルータ１０１ａから送信されたパケットを受信するパケット受信部２０１と、パケット受信部２０１が受信したパケットの解析を行うパケット解析部２０２と、パケット解析部２０２によって解析されたパケットについて統計処理を行う統計処理部２０４と、統計処理の結果が記録されるフローテーブル（SIP-DIP-DPTテーブル２２１ａ、SIP-DIPテーブル２２１ｂ、DIPテーブル２２１ｃ、SIPテーブル２２１ｄ）を保持するメモリ２２２ａ〜２２２ｄと、統計処理の結果を出力する統計情報出力部２０３と、統計処理部２０４や統計情報出力部２０３に対する制御を行う制御部２１２とを備えている。メモリ２２２ａ〜２２２ｄとしては、例えば、一般的に流通しているＳＤＲＡＭや、アクセスのレイテンシを低減させたＲＬＤＲＡＭを用いることができる。本実施例では、パケット受信部２０１は、ルータ１０１ａから送信されたパケットを受信するが、パケット受信部２０１は、ネットワークを流れるパケットを横取り（キャプチャ）することとしてもよい。
【００２０】
パケット受信部２０１と、パケット解析部２０２と、統計処理部２０４と、統計情報出力部２０３と、制御部２１２とは、それぞれ、ＦＰＧＡ（Field Programmable Gate Array）によって構成されている。これらは、全ての機能が１つのＦＰＧＡによって構成されていてもよいし、個別のＦＰＧＡによって構成されていてもよい。また、ＦＰＧＡではなく、ＡＳＩＣ（Application Specific Integrated Circuit）によって構成されていてもよい。
【００２１】
パケット解析部２０２は、パケット受信部２０１によって受信したパケットから、フロー識別子の値や、パケットの受信時刻、バイト数、ＴＣＰのフラグ情報等を抽出し、これらの抽出された情報を統計処理部２０４へ送信する。フロー識別子は、パケットのヘッダに記録された情報である。フロー識別子としては、例えば、ＶＬＡＮ  ＩＤ（ＶＩＤ）や、送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、送信元ＩＰアドレス（ＳＩＰ）、宛先ＩＰアドレス（ＤＩＰ）、上位プロトコル（ＰＲＴ)、送信元ポート番号（ＳＰＴ）、宛先ポート番号（ＤＰＴ）が挙げられる。
【００２２】
統計処理部２０４は、パケット解析部２０２から受信したフロー識別子の値等に基づいて、パケットのフローを分析し、分析されたフロー毎にパケットの集計を行う。集計の結果は、統計処理部２０４に接続されたメモリ２２２ａ〜２２２ｄが有するフローテーブル２２１ａ〜２２１ｄに記録する。この統計処理部２０４の詳細な構成については後述する。
【００２３】
制御部２１２には、管理端末２１１が接続される。制御部２１２は、この管理端末２１１の指示に従って、統計処理部２０４や統計情報出力部２０３に対する種々の設定を行う。管理端末２１１と制御部２１２とは、ネットワークによって接続されてもよいし、ＲＳ−２３２ＣやＵＳＢ等のインタフェースによって接続されてもよい。
【００２４】
統計情報出力部２０３は、統計処理部２０４から受信した統計情報を外部の装置に出力する。統計情報の出力は、ネットワークインタフェースやＰＣＩバスなど、事前に設定された任意のインタフェースを介して行う。ネットワークインタフェースによって出力する際には、制御部２１２を経由して管理者により設定された、宛先ＩＰアドレス、送信元ＩＰアドレスを用いて送信パケットを生成する。なお、統計情報出力部２０３は、所定のインタフェースに対して統計情報を出力する以外にも、通信データ統計装置１０４に接続された表示装置や印刷装置に対して、統計情報を出力することとしてもよい。
【００２５】
図３は、各フローテーブルの構成を示す図である。図３（ａ）〜（ｄ）に示したフローテーブルは、フロー識別子の１以上の組み合わせからなるフロー識別条件毎に用意されている。フロー識別条件は、例えば、制御部２１２を介して、管理者によって設定される。SIP-DIP-DPTテーブル２２１ａは、送信元ＩＰアドレス（ＳＩＰ）と宛先ＩＰアドレス（ＤＩＰ）と宛先ポート番号（ＤＰＴ）との組み合わせをフロー識別条件とするテーブルである。また、SIP-DIPテーブル２２１ｂは、ＳＩＰとＤＩＰの組み合わせをフロー識別条件とするテーブルである。また、DIPテーブル２２１ｃは、ＤＩＰをフロー識別条件とするテーブルである。また、SIPテーブル２２１ｄは、ＳＩＰをフロー識別条件とするテーブルである。
【００２６】
各フローテーブルには、「エントリ番号」、「フロー識別条件」、「統計情報」、「世代識別子」が記録される。「エントリ番号」には、フローの種別を一意に示すユニークな番号が記録される。「フロー識別条件」には、そのフロー識別条件に含まれるフロー識別子の値が記録される。例えば、SIPテーブル２２１ｄのフロー識別条件には、ＳＩＰの値が記録され、SIP-DIPテーブル２２１ｂのフロー識別条件には、ＳＩＰとＤＩＰの値が記録される。「統計情報」には、フロー毎にカウントされたパケット数が記録される。また、SIP-DIP-DPTテーブル２２１ａ以外のフローテーブルには、統計情報として、「異なり数」が記録される。「異なり数」とは、フロー識別条件に含まれるフロー識別子の各値は同一であるが、そのフロー識別条件以外のフロー識別子（異種識別子）の値が異なるパケットの数である。例えば、SIP-SIPテーブル２２１ｂでは、ＳＩＰとＤＩＰの値は同じであるが、ＤＰＴの値が異なるパケットの数が、異なり数として記録される。「世代識別子」には、集計中の統計情報の世代（集計期間）が記録される。この世代識別子は、エントリが上書きされたり、統計情報が統計情報出力部２０３によって出力された場合に、値が１つカウントアップされる。なお、統計情報としては、図３に示した情報以外にも、積算バイト数や、フローの発生開始時刻、最終更新時刻、ＴＣＰフラグのうちＳＹＮフラグが立っているパケットの数などの情報を記録してもよい。また、統計情報として、各フローのパケット数に基づいて算出されたパケット数の平均値や分散、偏差値、中央値などの種々の統計値を記録してもよい。
【００２７】
統計処理部２０４は、フロー識別条件に含まれるフロー識別子の値が全て一致するパケットを同一のフローであると決定し、決定されたフロー毎にパケット数をカウントすることでフローの統計をとる。そして、その統計結果を、そのフロー識別条件に対応するフローテーブルに統計情報として記録する。例えば、フロー識別条件がＳＩＰとＤＩＰとであれば、その双方の値が一致するパケットを同一のフローとして決定し、そのフロー毎にパケットをカウントする。そして、そのフロー識別条件に対応するSIP-DIPテーブル２２１ｂに対して、カウントされたパケット数を記録する。なお、本実施例ではフローテーブルが４種類用意されている例を示したが、フローテーブルの数は、フロー識別条件の数に応じて増減する。
【００２８】
図４は、統計処理部２０４の詳細な構成を示す図である。統計処理部２０４は、複数のデータ更新部４０１ａ〜４０１ｄ（以下、まとめて、「データ更新部４０１」とも記載する）から構成されている。データ更新部４０１は、それぞれ、パケット解析部２０２から、受信パケットのフロー識別子の値や、パケットの受信時刻、バイト数、ＴＣＰのフラグ情報等を受信し、これらの情報に基づいて、各フローテーブルの更新を行う。また、データ更新部４０１は、フローテーブルに記録された各フローのパケット数が、所定の閾値以上の数となった場合に、そのフローの統計情報を統計情報出力部２０３に送信する。
【００２９】
データ更新部４０１は、それぞれ、同一機能を有する処理ブロックであり、１対１の関係で、各フローテーブル２２１ａ〜２２１ｄに対応付けられている。具体的には、データ更新部４０１ａは、SIP-DIP-DPTテーブル２２１ａを記憶するメモリ２２２ａと接続され、データ更新部４０１ｂは、SIP-DIPテーブル２２１ｂを記憶するメモリ２２２ｂと接続される。また、データ更新部４０１ｃは、DIPテーブル２２１ｃを記憶するメモリ２２２ｃと接続され、データ更新部４０１ｄは、SIPテーブル２２１ｄを記憶するメモリ２２２ｄと接続される。なお、データ更新部４０１の数は、フローテーブルの数に応じて増減する。
【００３０】
各データ更新部４０１は、図３に示した「異なり数」をカウントするための情報（以下、「異なり数制御情報」という）を、他のデータ更新部４０１に送信する機能を有している。異なり数制御情報は、本実施例では、フローの新規／既出を表すフラグ情報である。本実施例では、データ更新部４０１ａから出力された異なり数制御情報は、データ更新部４０１ｂに送信され、データ更新部４０１ｂから出力された異なり数制御情報はデータ更新部４０１ｃとデータ更新部４０１ｄに送信される。つまり、本実施例では、フロー識別条件に含まれるフロー識別子が多いデータ更新部４０１（以下、「上位のデータ更新部４０１」という）から、それよりも１つフロー識別子が少ないフロー識別条件を有するデータ更新部４０１（以下、「下位のデータ更新部４０１」という）に対して、異なり数制御情報が送信される。
【００３１】
図５は、データ更新部４０１の詳細な構成を示す図である。データ更新部４０１は、解析結果受信部５０１、組み合わせ抽出部５０２、エントリ決定部５０３、データ比較部５０４、統計更新部５０５、閾値判定部５０６、データ書込み部５０７、フローデータ出力部５０８から構成される。
【００３２】
解析結果受信部５０１は、パケット解析部２０２から、フロー識別子の値（ＳＩＰ、ＤＩＰ、ＰＲＴ、ＳＰＴ、ＤＰＴ等）や、パケット受信時刻、バイト数、ＴＣＰフラグ情報等を受信する。そして、このうち、フロー識別子の値を、組み合わせ抽出部５０２に転送し、他の情報を統計更新部５０５に転送する。
【００３３】
組み合わせ抽出部５０２は、解析結果受信部５０１から受信したフロー識別子の値の中から、自身のフロー識別条件に含まれるフロー識別子の組み合わせを抽出する。例えば、データ更新部４０１ｂが有する組み合わせ抽出部５０２であれば、フロー識別子の値の中から、ＳＩＰとＤＩＰの組み合わせを抽出する。組み合わせ抽出部５０２は、フロー識別子の値を抽出すると、抽出したフロー識別子の値を、エントリ決定部５０３とデータ比較部５０４とに送信する。なお、フロー識別条件に含まれるフロー識別子の組み合わせは、データ更新部４０１毎に、制御部２１２を経由して管理者により事前に設定される。
【００３４】
エントリ決定部５０３は、組み合わせ抽出部５０２から受信したフロー識別子の値に基づいて、受信したパケットの統計情報を記録するフローテーブルのエントリ番号を決定する。具体的には、組み合わせ抽出部５０２から受信したフロー識別子の値のハッシュ値を、エントリ番号に対応付ける（マッピングする）ことで、エントリ番号の決定を行う。このとき、エントリ決定部５０３は、決定されるエントリ番号が、異なるフロー識別子の値の間で重複してしまうことを避けるため、複数（本実施例では、４つとする）のハッシュ関数を用いて複数（本実施例では、４つとする）のエントリ番号を決定する。エントリ決定部５０３は、複数のエントリ番号を決定すると、決定した複数のエントリ番号をデータ比較部５０４に送信するとともに、メモリに対して、決定した複数のエントリ番号からデータを読み込む信号を送信する。この読み込み信号によって、該当する複数のエントリのデータが、メモリ内のフローテーブルからデータ比較部５０４に送信される。このとき、データ比較部５０４に送信されるデータのことを、以下では、「フローデータ」という。このフローデータには、フロー識別子の値、統計情報、世代識別子が含まれる。
【００３５】
データ比較部５０４は、フローテーブル２２１から受信した４つのフローデータについて、それぞれ、そのフローデータに含まれるフロー識別子の値と、組み合わせ抽出部５０２から受信したフロー識別子の値とを比較する。この比較の結果、フローデータに含まれるフロー識別子の値と、組み合わせ抽出部５０２から受信したフロー識別子の値とがすべて一致するフローデータが存在する場合には（換言すれば、受信したパケットのフローが既出のフローである場合には）、データ比較部５０４は、そのフローデータを統計更新部５０５に送信し、更に、このフローデータが記録されていたエントリのエントリ番号をデータ書込み部５０７に送信する。
【００３６】
フローテーブル２２１から受信した４つのフローデータのすべてについて、そのフローデータに含まれるフロー識別子と、組み合わせ抽出部５０２から受信したフロー識別子とが一致しない場合には（換言すれば、受信したパケットのフローが新規のフローである場合には）、データ比較部５０４は、フローデータを読み込んだ４つのエントリの中から上書きの対象とするエントリを１つ選択する。上書きするエントリの選択は、エントリ中のパケット数が最小のエントリや、最終更新時刻が最も古いエントリなど、予め設定した所定の基準に基づいて決定される。上書きするエントリを選択すると、データ比較部５０４は、選択したエントリのフローデータに新規のデータを代入する。具体的には、フロー識別子には、組み合わせ抽出部５０２から受信したフロー識別子の値を代入し、統計情報のパケット数および異なり数には、「０」を代入する。また、世代識別子３４１には、上書き前の世代識別子に「１」を加えた値（つまり、上書きするエントリの世代識別子＋１）を代入する。こうして、新規のフローデータを作成すると、データ比較部５０４は、作成したフローデータを統計更新部５０５に送信し、そのエントリのエントリ番号をデータ書込み部５０７に送信する。
【００３７】
統計更新部５０５は、データ比較部５０４からフローデータを受信し、解析結果受信部５０１からパケット受信時刻、バイト数、ＴＣＰフラグ情報を受信する。そして、更に、上位のデータ更新部４０１から異なり数制御情報を受信する。統計更新部５０５は、これらのデータを受信すると、まず、フローデータのうち、統計情報内のパケット数を１つ、カウントアップする。
【００３８】
更に、統計更新部５０５は、上位のデータ更新部４０１から、異なり数制御情報として新規のフローが検出された旨のフラグ（新規フラグ）を受信した場合には、統計情報内の異なり数を１つ、カウントアップする。例えば、データ更新部４０１ｂが、ＤＰＴの異なり数をカウントする場合には、SIP-DIP-DPTテーブルの更新を行うデータ更新部４０１ａから新規フラグを受信した場合に、ＤＰＴの異なり数に「１」を加算する。
【００３９】
また、統計更新部５０５は、統計情報に、積算バイト数やフロー開始時刻、最終更新時刻、ＳＹＮフラグがセットされているパケットの数が含まれる場合には、これらの値を、解析結果受信部５０１から受信した情報に基づいて更新する。
【００４０】
統計更新部５０５は、このようにして更新したフローデータを閾値判定部５０６へ送信する。また、統計更新部５０５は、データ比較部５０４から受信したフローデータのパケット数が「０」である場合には、そのフローデータが、新規のフローデータであると判断し、新規フラグであることを示す異なり数制御情報をフローデータ出力部５０８へ送信する。
【００４１】
閾値判定部５０６は、統計更新部５０５から受信したフローデータ中のパケット数と、所定の閾値とを比較する。この比較の結果、パケット数が閾値を越えている場合には、閾値判定部５０６は、統計更新部５０５によって更新されたフローデータをフローデータ出力部５０８へと出力する。そして、閾値判定部５０６は、出力対象となったフローデータの統計情報をゼロリセットして、世代識別子を１つカウントアップする。そして、このように更新したフローデータをデータ書込み部５０７へ送信する。パケット数が閾値を越えていない場合には、閾値判定部５０６は、統計更新部５０５から受信したフローデータをそのままデータ書込み部５０７に送信する。上述した閾値は、制御部２１２を経由して管理者により適宜設定される。
【００４２】
データ書込み部５０７は、閾値判定部５０６から受信したフローデータを、フローテーブル中の、データ比較部５０４から受信したエントリ番号に対応するエントリに書き込む。
【００４３】
フローデータ出力部５０８は、統計更新部５０５から異なり数制御情報を受信した場合に、この異なり数制御情報を下位のデータ更新部４０１に送信する。また、フローデータ出力部５０８は、閾値判定部５０６から受信したフローデータを統計情報出力部２０３に送信する。
【００４４】
以上、データ更新部４０１の詳細な構成を処理内容とともに説明した。以下、参考までに、このデータ更新部４０１によって実行される処理の内容をフローチャートを用いて確認的に説明する。
【００４５】
図６は、データ更新部４０１ａ〜４０１ｄがそれぞれ実行するフローテーブルの更新処理の流れを示すフローチャートである。図示するように、まず、各データ更新部４０１は、パケット解析部２０２から、パケットの解析結果を受信し（ステップＳ１０ａ〜Ｓ１０ｄ）、その解析結果から、自身のフロー識別条件に含まれるフロー識別子の組み合わせを抽出する（ステップＳ１２ａ〜Ｓ１２ｄ）。
【００４６】
データ更新部４０１ａ〜４０１ｄは、それぞれ、ステップＳ１２ａ〜Ｓ１２ｄで抽出されたフロー識別子の値に基づいて、該当するフローが記録されているエントリをフローテーブルから検索し（ステップＳ１４ａ〜Ｓ１４ｄ）、統計情報を更新する（ステップＳ２０ａ〜Ｓ２０ｄ）。このとき、データ更新部４０１ｂは、ステップＳ１２ｂで抽出されたフロー識別子の値が新規であれば（ステップＳ１６ｂ）、新規フラグを示す異なり数制御情報を、下位のデータ更新部４０１であるデータ更新部４０１ｃとデータ更新部４０１ｄとに送信する。この新規フラグを受信したデータ更新部４０１ｃとデータ更新部４０１ｄとは、ステップＳ２０ｃ，Ｓ２０ｄにおいて、異なり数の加算を行う。また、データ更新部４０１ａは、ステップＳ１２ａで抽出されたフロー識別子の値が新規であれば（ステップＳ１６ａ）、新規フラグを示す異なり数制御情報を、下位のデータ更新部４０１であるデータ更新部４０１ｂに送信する（ステップＳ１８ａ）。この新規フラグを受信したデータ更新部４０１ｂは、ステップＳ２０ｂにおいて、異なり数の加算を行う。なお、図示は省略しているが、ステップＳ１６ｂやステップＳ１８ｂにおいて、フロー識別子の値が既出であると判断されれば、既出であることを示すフラグ（既出フラグ）が下位のデータ更新部４０１に送信される。
【００４７】
統計情報の更新を行うと、データ更新部４０１ａ〜４０１ｄは、それぞれ、更新対象のエントリのパケット数と所定の閾値とを比較する（ステップＳ２２ａ〜Ｓ２２ｄ）。この比較の結果、パケット数が閾値以上であれば、データ更新部４０１ａ〜４０１ｄは、統計情報を出力するとともに（ステップＳ２４ａ〜Ｓ２４ｄ）、出力後の統計情報をリセットする（ステップＳ２６ａ〜Ｓ２６ｄ）。更に、データ更新部４０１ａ〜４０１ｄは、それぞれ、更新対象のエントリの世代識別子を１つカウントアップする（ステップＳ３０，Ｓ３２）。
【００４８】
以上で説明した第１実施例の通信データ統計装置１０４によれば、フロー識別条件毎に用意されたフローテーブルがそれぞれ異なるメモリに記憶されており、更に、フローテーブルを更新するデータ更新部４０１が、各メモリ毎に接続されている。そのため、４つのフローテーブルの更新を同時に行うことができる。この結果、ネットワークの回線速度が高速な場合であっても、メモリへのアクセス速度がボトルネックとなって、統計処理のスピードが低下してしまうことを抑制することができる。
【００４９】
また、本実施例では、フローテーブルの更新時に新規のフローが検出されれば、下位のデータ更新部４０１に、異なり数制御情報が送信される。この異なり数制御情報の送信を受けたデータ更新部４０１は、この異なり数制御情報を参照して、自己のフローテーブル内の異なり数を更新することができる。従って、データ更新部４０１は、パケット数の更新と共に、異なり数の更新も一度に行うことができるので、異なり数だけを独立して更新する必要がない。そのため、メモリの更新回数が増加することがなく、この結果、高速に、異なり数を含めた統計情報を更新することが可能になる。
【００５０】
また、本実施例の通信データ統計装置１０４によれば、受信したパケットのフロー毎に、パケットの数や、異なり数、世代識別子が集計される。そして、集計されたパケットの数が所定の閾値以上になれば、これらの情報が、統計情報として外部の機器に出力される。キャリアやＩＳＰは、こうして出力されたフロー毎の統計情報を用いることにより、サービス提供時のデータの伝送品質の状況を確認することが可能となる。また、このような情報を用いることで、ネットワーク資源を有効に活用するためのトラフィック・エンジニアリングが可能になる。さらに、顧客の需要を予測してネットワーク資源を計画的に準備しておき、ユーザの要求（帯域、サービス）に対して迅速にネットワーク資源を提供するプロビジョニングや、アタックの検出・分析、課金などを行うことが可能となる。また、本実施例では、異なり数の集計結果も出力されるため、フロー識別条件によって集約されたフローについて、それらのフローが他のフロー識別子についてどの程度拡散されて送信されているかを把握することができる。そのため、ポートスキャンを伴うネットワークワームの増殖活動等を監視することが可能になる。更に、本実施例では、各エントリについて世代識別子がカウントされるので、世代識別子の値が局所的に大きいエントリが生じた場合に、メモリへのアクセスに異常が生じていると判断することが可能になる。
【００５１】
Ｂ．第２実施例：
続いて、本発明の第２実施例について説明する。この第２実施例では、世代識別子を用いることで、異なり数の集計を行う。
【００５２】
本実施例の通信データ統計装置１０４は、第１実施例の通信データ統計装置１０４に対して、フローテーブル２２１の構成や、データ更新部４０１間の接続状態、異なり数制御情報の内容、統計更新部５０５の動作、フローデータ出力部５０８によって出力される情報が異なる。以下、これらの相違点について説明する。
【００５３】
図７は、第２実施例における各フローテーブルの構成を示す図である。本実施例では、図３に示した第１実施例のフローテーブルとは異なり、SIP-DIP-DPTテーブル２２１ａ
と、SIP-DIPテーブル２２１ｂとには、「異なり数世代情報」が記録される。「異なり数世代情報」とは、そのフローテーブルの更新結果に基づいて異なり数をカウントする他のフローテーブルの世代識別子の値を示している。例えば、本実施例のSIP-DIPテーブル２２１ｂは、SIPテーブル２２１ｄの更新時のＤＩＰの異なり数のカウントに利用され、また、DIPテーブル２２１の更新時のＳＩＰの異なり数のカウントに利用されるため、SIPテーブル２２１ｄとDIPテーブル２２１ｃの世代識別子の値が、SIP-DIPテーブル２２１ｂに、異なり数世代情報として記録される。
【００５４】
図８は、第２実施例における統計処理部２０４の詳細な構成を示す図である。本実施例では、各データ更新部４０１は、異なり数世代情報や世代識別子の値を相互に送受信する。そのため、図４に示した第１実施例の統計処理部と図８に示した第２実施例の統計処理部とでは、各データ更新部４０１を接続する信号線が、第１実施例では一方向であるのに対して、第２実施例では、双方向である点が異なる。本実施例では、データ更新部４０１間で、異なり数制御情報として、異なり数世代情報が送受信される。また、本実施例では、下位のデータ更新部４０１から上位のデータ更新部４０１に対しては、下位のデータ更新部４０１によってカウントされた世代識別子の値が送信される。こうして送信された下位のデータ更新部４０１の世代識別子の値は、上位のデータ更新部４０１の異なり数世代情報として記録される。
【００５５】
続いて、第２実施例における統計更新部５０５の動作をフローチャートに基づき説明する。
図９は、第２実施例における統計更新部５０５の動作を示すフローチャートである。本実施例の統計更新部５０５は、上位のデータ更新部４０１から異なり数世代情報を受信し、更に、下位のデータ更新部４０１から世代識別子の値を受信する（ステップＳ１００）。これらの情報を受信すると、統計更新部５０５は、受信した異なり数世代情報の値と、データ比較部５０４から受信したフローデータ中の自身の世代識別子の値（ステップＳ１００で受信した世代識別子の値ではない）とが一致するか否かを判断する（ステップＳ１１０）。受信した異なり数世代情報の値と自身の世代識別子の値とが一致しない場合には（ステップＳ１１０：Ｎｏ）、新規のフローであると判断し（ステップＳ１２０）、異なり数を１つカウントアップする（ステップＳ１３０）。一方、受信した異なり数世代情報の値と自身の世代識別子の値とが一致する場合には（ステップＳ１１０：Ｙｅｓ）、既出のフローであると判断できるので（ステップＳ１４０）、統計更新部５０５は、異なり数のカウントアップを行わない。
【００５６】
世代識別子の値は、第１実施例で説明したように、新規のフローが検出されたことによってエントリが上書きされたり、統計情報が出力されてエントリがゼロクリアされた場合にカウントアップされる値である。つまり、世代識別子は、該当するエントリにおいてパケット数を集計している期間を表しているといえる。そのため、下位のデータ更新部４０１は、上位のデータ更新部４０１から受信した異なり数世代情報の値（＝自身の直近の世代識別子の値）と、自身の現在の世代識別子の値とを比較することで、受信したパケットのフローが既出であるか新規であるかを正確に判断することができる。この結果、データ更新部４０１は、異なり数の加算を正確に行うことが可能になる。
【００５７】
例えば、SIPテーブル２２１ｄを管理するデータ更新部４０１ｄは、SIP-DIPテーブル２２１ｂを管理するデータ更新部４０１ｂから受信した異なり数世代情報の値と、自身の世代識別子の値と比較する。値が不一致の場合は、新規のフローであると判断し、ＤＩＰの異なり数を１つカウントアップする。これに対して、値が一致する場合は、既出のフローと判断し、異なり数はカウントアップしない。同様に、SIP-DIPテーブル２２１ｂを管理するデータ更新部４０１ｂでは、SIP-DIP-DPTテーブル２２１ａを管理するデータ更新部４０１ａから受信した異なり数世代情報の値と、自身の世代識別子の値とを比較し、不一致の場合には、ＤＰＴの異なり数を１つカウントアップする。これに対して、値が一致する場合は、既出のフローと判断し、異なり数はカウントアップしない。
【００５８】
統計更新部５０５は、上記ステップＳ１２０において、新規のフローであると判断し、ステップＳ１３０において異なり数のカウントアップを行った後に、データ比較部５０４から受信したフローデータ中の異なり数世代情報と、現在の世代識別子の値とをフローデータ出力部５０８に送信する（ステップＳ１５０）。つまり、第１実施例では、新規フラグであることを示す異なり数制御情報をフローデータ出力部５０８に送信していたが、第２実施例では、異なり数世代情報と世代識別子とをフローデータ出力部５０８に送信するのである。フローデータ出力部５０８は、統計更新部５０５から異なり数世代情報と世代識別子とを受信すると、異なり数世代情報を下位のデータ更新部４０１に送信し、世代識別子を上位のデータ更新部４０１に送信する。
【００５９】
最後に、統計更新部５０５は、自身のフローテーブル内の異なり数世代情報に、下位のデータ更新部４０１の現在の世代識別子の値を保持しておくため、上記ステップＳ１００によって下位のデータ更新部４０１から受信した世代識別子の値を、自身の異なり数世代情報に格納し、フローデータを閾値判定部５０６へ送信する（ステップＳ１６０）。例えば、SIP-DIP-DPTテーブル２２１ａを管理するデータ更新部４０１ａは、SIP-DIPテーブル２２１ｂを管理するデータ更新部４０１ｂから受信した世代識別子の値を、異なり数世代情報として格納する。同様に、SIP-DIPテーブル２２１ｂを管理するデータ更新部４０１ｂは、DIPテーブル２２１ｃを管理するデータ更新部４０１ｃから受信した世代識別子の値をＤＩＰの異なり数世代情報として格納し、SIPテーブル２２１ｄを管理するデータ更新部４０１ｄから受信した世代識別子の値をＳＩＰの異なり数世代情報として格納する。
【００６０】
以上で説明した第２実施例の通信データ統計装置１０４によれば、各データ更新部４０１は、世代識別子と異なり数世代情報とを送受信することで、異なり数を正確にカウントすることが可能になる。また、本実施例では、データ更新部４０１は、パケット数の更新と共に、異なり数や異なり数世代情報の更新も一度に行うことができるので、異なり数や異なり数世代情報を、パケット数と別々に更新する必要がない。そのため、メモリの更新回数が増加することがなく、この結果、高速に、異なり数を含めた統計情報を更新することが可能になる。
【００６１】
なお、本実施例のデータ更新部４０１は、上述のように、下位のデータ更新部４０１に対して異なり数世代情報を送信している。このとき、上位のデータ更新部４０１は、受信側（下位のデータ更新部４０１）が必要とする異なり数世代情報を選択して送信してもよい。例えば、SIP-DIPテーブル２２１ｂを管理するデータ更新部４０１ｂは、DIPテーブル３０２を管理するデータ更新部４０１ｃに対しては、ＤＩＰについての異なり数世代情報を選択して送信し、SIPテーブル３０２を管理するデータ更新部４０１ｄに対しては、ＳＩＰについての異なり数世代情報を選択して送信するといった制御である。
【００６２】
また、本実施例では、フローデータ出力部５０８は、図８に示した結線に基づき、上位のデータ更新部４０１に世代識別子を送信する。つまり、データ更新部４０１ｄとデータ更新部４０１ｃとは、データ更新部４０１ｂに世代識別子を送信し、データ更新部４０１ｂは、データ更新部４０１ａに世代識別子を送信する。つまり、本実施例では、異なり数のカウントに関係のあるデータ更新部４０１に対してのみ、世代識別子を送信している。これに対して、データ更新部４０１ｄはデータ更新部４０１ａ〜４０１ｃに、データ更新部４０１ｃはデータ更新部４０１ａ，４０１ｂに、データ更新部４０１ｂはデータ更新部４０１ａにと、上位のすべてのデータ更新部４０１に世代識別子を送信することとしてもよい。このような場合であっても、上位のデータ更新部４０１は、自身の異なり数のカウントに関係のある世代識別子を用いて、異なり数をカウントするからである。
【００６３】
Ｃ．第３実施例：
最後に、本発明の第３実施例について説明する。上述した第１実施例や第２実施例では、通信データ統計装置１０４は独立した装置の形態をとっている。これに対して、第３実施例では、上述した通信データ統計装置１０４が有する機能（以下、「通信データ統計機能」という）を図１に示したルータ１０１の内部に実装させる構成とする。
【００６４】
図１０は、通信データ統計機能を内蔵したルータ１０１の機能ブロック図である。ルータ１０１は、入力回線に接続された受信パケット処理部７０１と、出力回線に接続された送信パケット処理部７０２と、受信パケット処理部７０１に接続された検索処理部７０３と、トラフィック統計取得部７０５と、検索処理部７０３に付随するルーティングテーブル７０４と、ルータ制御部７１１とを備えている。ルータ制御部７１１は、管理端末７１２に接続されており、管理端末７１２の指示に従い、受信パケット処理部７０１や送信パケット処理部７０２、検索処理部７０３に対して、各種の設定を行う。管理端末２１１とルータ制御部７１１とは、ネットワークによって接続されてもよいし、ＲＳ−２３２ＣやＵＳＢ等のインタフェースによって接続されてもよい。
【００６５】
受信パケット処理部７０１は、入力回線から受信したパケットを一旦バッファに蓄積し、蓄積したパケットのヘッダ情報を、検索処理部７０３とトラフィック統計取得部７０５とに送信する。
【００６６】
検索処理部７０３は、受信パケット処理部７０１からヘッダ情報を受信すると、ルーティングテーブル７０４を参照して、そのパケットの出力先となる出力回線を検索し、その検索結果を、受信パケット処理部７０１に通知する。
【００６７】
受信パケット処理部７０１は、検索処理部７０３から検索結果を受信すると、検索結果に含まれる出力回線が含まれる送信パケット処理部７０２に、バッファに蓄積されたパケットと検索結果とを転送する。
【００６８】
送信パケット処理部は、受信パケット処理部から、パケット情報と検索処理部７０３による検索結果を受信し、この検索結果に含まれる出力回線にパケットを出力する。
【００６９】
トラフィック統計取得部７０５は、図２に示した通信データ統計装置１０４が有する機能ブロックをすべて有する。ただし、第１実施例では、図２のパケット受信部は、ルータ１０１ａからパケットを受信しているのに対して、本実施例では、図１０に示した受信パケット処理部７０１からパケットのヘッダ情報を受信する。また、第１実施例では、統計情報出力部２０３は、所定のインタフェースに対して統計情報を出力するのに対して、本実施例では、図１０に示した受信パケット処理部７０１に統計情報が出力される。統計情報を取得した受信パケット処理部７０１は、所定のネットワーク機器（例えば、端末１０３ａ〜１０３ｃ）に、統計情報を転送する。また、トラフィック統計取得部７０５内の制御部２１２は、ルータ制御部７１１と接続しており、ルータ制御部７１１経由でトラフィック統計取得部７０５を制御することができる。
【００７０】
以上で説明した第３実施例によれば、ルータ１０１が、異なり数を含めた通信データの統計をとることが可能になる。
【００７１】
以上、本発明の種々の実施例について説明したが、本発明はこれら実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、ハードウェアによって実現した機能は、ＣＰＵが所定のプログラムを実行することでソフトウェア的に実現することとしてもよい。また、上述した実施例では、各フローテーブル２２１が、個別にメモリに記憶されていることとしたが、メモリ量が不足する場合には、１つのメモリ内にフローテーブル２２１を複数配置する構成も可能である。また、上述した実施例では、統計処理部２０４には、４つデータ更新部が含まれているが、２以上のデータ更新部が含まれていればよく、その数に限定されない。
【図面の簡単な説明】
【００７２】
【図１】通信データ統計装置１０４を含むネットワーク構成の一例を示す図である。
【図２】通信データ統計装置１０４の概略構成を示すブロック図である。
【図３】各フローテーブルの構成を示す図である。
【図４】統計処理部２０４の詳細な構成を示す図である。
【図５】データ更新部４０１の詳細な構成を示す図である。
【図６】データ更新部４０１ａ〜４０１ｄがそれぞれ実行するフローテーブルの更新処理の流れを示すフローチャートである。
【図７】第２実施例における各フローテーブルの構成を示す図である。
【図８】第２実施例における統計処理部２０４の詳細な構成を示す図である。
【図９】第２実施例における統計更新部５０５の動作を示すフローチャートである。
【図１０】通信データ統計機能を内蔵したルータ１０１の機能ブロック図である。
【符号の説明】
【００７３】
１０１ａ〜１０１ｃ…ルータ
１０２ａ，１０２ｂ…サーバ
１０３ａ〜１０３ｃ…端末装置
１０４…通信データ統計装置
２０１…パケット受信部
２０２…パケット解析部
２０３…統計情報出力部
２０４…統計処理部
２１１…管理端末
２１２…制御部
２２１ａ〜２２１ｄ…フローテーブル
２２２ａ〜２２２ｄ…メモリ
４０１ａ〜４０１ｄ…データ更新部
５０１…解析結果受信部
５０２…組み合わせ抽出部
５０３…エントリ決定部
５０４…データ比較部
５０５…統計更新部
５０６…閾値判定部
５０７…データ書込み部
５０８…フローデータ出力部
７０１…受信パケット処理部
７０２…送信パケット処理部
７０３…検索処理部
７０４…ルーティングテーブル
７０５…トラフィック統計取得部
７１１…ルータ制御部
７１２…管理端末
【図１】
2009290436.tif 000003
【図２】
2009290436.tif 000004
【図３】
2009290436.tif 000005
【図４】
2009290436.tif 000006
【図５】
2009290436.tif 000007
【図６】
2009290436.tif 000008
【図７】
2009290436.tif 000009
【図８】
2009290436.tif 000010
【図９】
2009290436.tif 000011
【図１０】
2009290436.tif 000012