(57)【要約】【課題】フロー毎に必要な統計精度を保ちながら低コストで高速回線に対応可能な統計収集方式および統計収集装置を提供する。【解決手段】正確な統計情報が必要なフローの統計収集を行うための、高速フローテーブルと、多数のフローエントリから構成されるフローテーブルと、高速フローテーブルと大容量フローテーブルのいずれを検索すべきかを決定する検索処理判定テーブルを備え、パケットを受信した際に検索すべきテーブルを決定する。【効果】前記高速フローテーブルにより、正確な統計情報が必要なフローに対する統計情報の精度が保証できる。また、前記大容量フローテーブルと前記サンプリングレートを適切に設定することにより、パケット転送性能を低下させずに、サンプリングされた統計情報で十分なフローに対しては、多数のフローエントリの統計収集が可能となる。【選択図】  図９
2005051736.tif 000002
【特許請求の範囲】
【請求項１】
パケットを受信する手段と、受信パケットのヘッダに含まれる一つの情報ないし複数の情報の組合せ毎に統計情報を収集する統計収集装置と、所定の処理が施された前記受信パケットを送信する手段とを備えたパケット転送装置において、
前記統計収集装置は、第１のテーブルと、第２のテーブルと、前記ヘッダに含まれる情報を基に前記第１のテーブルまたは第２のテーブルのいずれかを選択する検索テーブル判定テーブルと、前記第１のテーブル、第２のテーブルおよび検索テーブル判定テーブルを検索する手段とを有し、
前記第１のテーブル及び第２のテーブルは、前記ヘッダに含まれる１つの情報ないし複数の情報の組合せと、当該情報に対応した収集すべき統計情報とを少なくとも含むエントリを備え、
前記検索テーブル判定テーブルには、前記ヘッダに含まれる１つの情報ないし複数の情報の組合せと、当該情報に対応するテーブルを示す情報が格納され、
パケットを受信した際には、該受信パケットのヘッダに含まれる情報を基に前記検索テーブル判定テーブルを検索し、第１のテーブルまたは第２のテーブルを選択し、
前記決定した検索テーブルを検索して収集すべき統計情報を決定し、当該統計情報を収集することを特徴とするパケット転送装置。
【請求項２】
請求項１に記載のパケット転送装置において、
前記検索テーブル判定テーブルには、該判定テーブルの検索キーとして、IP（Internet Protocol）ヘッダ内のプロトコル値と、TCP（Transmission Control Protocol）ヘッダあるいはUDP（User Datagram Protocol）ヘッダ内の送信元ポート番号あるいは宛先ポート番号とが格納されることを特徴とするパケット転送装置。
【請求項３】
請求項１に記載のパケット転送装置において、
前記第１のテーブルが格納されるCAM（Content Addressable Memory）を備えたことを特徴とするパケット転送装置。
【請求項４】
請求項１に記載のパケット転送装置において、
前記第１のテーブルが格納されるRAM（Random Access Memory）を備え、
前記第１のテーブルは、前記ヘッダに含まれる１つの情報ないし複数の情報の組合せと、前記情報に対応する統計情報とにより構成される木構造を備えることを特徴とするパケット転送装置。
【請求項５】
請求項１に記載のパケット転送装置において、
受信パケットのヘッダに含まれる１つの情報ないし複数の情報の組合せに一致するパケットのパケット数の積算、受信パケットのバイト数の積算、受信パケットの入力回線番号、受信パケットの出力回線番号、および、パケット受信時の統計収集装置内の時刻、および、受信パケットのヘッダ内の1つあるいは複数の情報の組合せに一致するパケットで一番最初に受信したパケットの受信時の時刻からなる群に含まれるいずれか１つの情報を収集することを特徴とする請求項1に記載の統計収集装置。
【請求項６】
請求項１に記載のパケット転送装置において、
前記第２の検索テーブルのサンプリングレートと前記ヘッダに含まれる一つの情報または複数の情報の組合せとを格納するサンプリングレート記憶手段を有し、
前記検索テーブル判定テーブルの検索の結果、選択されたテーブルが第２のテーブルであった場合、前記サンプリングレート記憶手段に設定されたサンプリングレートに基づき、前記第２のテーブルを検索するか検索しないか判定することを特徴とするパケット転送装置。
【請求項７】
請求項６に記載のパケット転送装置において、
複数の通信回線を収容する入力インタフェースと、該複数の通信回線毎に設けられたサンプリングレート記憶手段と、前記サンプリングレートを外部から設定する管理手段とを備えたことを特徴とするパケット転送装置。
【請求項８】
請求項６または７のいずれか1項に記載のパケット転送装置において、
前記管理手段は、前記検索テーブル判定テーブルを表示する手段と、該判定テーブルに格納されたサンプリングレートのうち任意の情報を選択する手段と、選択した情報を変更する手段とを備えることを特徴とするパケット転送装置。
【請求項９】
請求項１、６，７または８のいずれか１項に記載のパケット転送装置において、
前記検索テーブル判定テーブルは前記第１のテーブルに包含され、
該第１のテーブルは、前記第２のテーブルを検索するか否かを判断するための識別情報が格納されたエントリを備え、
パケット受信時には、前記第１のテーブルを検索し、前記識別情報の値に従って、前記第２のテーブルを検索するか否かを決定することを特徴とするパケット転送装置。
【請求項１０】
請求項１に記載のパケット転送装置において、
前記第１のテーブル、第２のテーブルおよび検索テーブル判定テーブルを検索する手段は、前記第１のテーブルを検索する第１のLSIあるいはNetwork ProcessorあるいはMicro Processorと、前記第２のテーブルを検索する第２のLSIあるいはNetwork ProcessorあるいはMicro Processorとを備えることを特徴とするパケット転送装置。
【請求項１１】
請求項１０に記載のパケット転送装置において、
前記第２のテーブル，および全期第２のテーブルを検索する第２のLSIあるいはNetwork ProcessorあるいはMicro Processorは統計収集カード上に実装され、該統計収集カードを前記統計収集装置へ実装する接続手段を備えたことを特徴とするパケット転送装置。
【請求項１２】
請求項６，７または８のいずれか１項に記載のパケット転送装置において、
前記第１のテーブルあるいは第２のテーブルに収集された統計情報を、ネットワーク経由で接続された別の装置へ通知する機能を備え、
前記別の装置へ通知する際、ヘッダに含まれる１つの情報または複数の情報の組合せに対応して設定されたサンプリングレートを合せて通知することを特徴とするパケット転送装置。
【請求項１３】
パケットを受信する手段と、受信パケットのヘッダに含まれる一つの情報ないし複数の情報の組合せ毎に統計情報を収集する統計収集装置と、所定の処理が施された前記受信パケットを送信する手段とを備えたパケット転送装置において、
前記統計収集装置は、前記ヘッダに含まれる１つの情報ないし複数の情報の組合せと、当該情報に対応した収集すべき統計情報とを少なくとも含むエントリから構成されるテーブルを備え、前記ヘッダに含まれる情報を基に前記テーブルを検索する手段を有し、
前記統計情報を収集する統計収集頻度情報を、前記ヘッダに含まれる１つの情報ないし複数の情報の組合せ毎に記憶する記憶手段を備え、前記ヘッダ情報を基に前記記憶手段から，前記ヘッダに含まれる１つの情報ないし複数の情報の組合せ毎に記憶される統計頻度情報を選択する選択手段を有し、
パケットを受信した際には、前記記憶手段から該受信パケットのヘッダに含まれる情報に対応する統計収集頻度情報を選択し、統計収集頻度情報に基づき、前記テーブルに備えられている統計情報を収集するかしないかを判定することを特徴とするパケット転送装置。
【請求項１４】
請求項１３に記載のパケット転送装置において、
前記統計収集装置は，前記テーブルを1つ以上備え、前記ヘッダに含まれる情報を基に前記1つ以上のテーブルのどれを検索するかを選択する検索テーブル判定テーブルと、前記1つ以上のテーブルを検索する手段とを有し、
パケットを受信した際には、該受信パケットのヘッダに含まれる情報を基に前記検索テーブル判定テーブルを検索し、前記前記1つ以上のテーブルのうちどのテーブルを検索するかを選択し、
前記決定した検索テーブルを検索して収集すべき統計情報を決定し、さらに前記統計情報収集頻度に基づき、前記決定した検索テーブルを検索するかどうかを判定し、検索すると判定した場合当該統計情報を収集することを特徴とするパケット転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク内に位置し、転送されるパケットの個数、バイト数などを記録する統計収集方式、および前記統計方式を実装した統計収集装置に関する。
【背景技術】
【０００２】
インターネットは重要な社会インフラとして定着し、従来のBest_Effort型データ通信だけでなく、音声・動画や基幹業務のトランザクションデータなど通信品質保証が必要なデータも通信され始めている。また、ADSL（Asymmetric  Digital Subscriber Line）やFTTH（Fiber To The Home）技術によるアクセス回線のブロードバンド化に伴い、通信されるデータ量も増大している。
【０００３】
前記の背景から、キャリア、ISPはネットワーク内の通信の状態を把握するため、ネットワーク内の通信データ量の統計収集および分析を行うネットワーク監視機能を必要としている。中でもデータの送信元や宛先、アプリケーション、品質レベルなどにより分類されるデータ群（以下、フローと呼ぶ）毎の統計情報の収集・分析機能に対する要求が高い。キャリア、ISPは前記のフロー毎の統計情報を用いることにより、通信品質保証サービス提供時の品質保証状況を確認することが可能となる。また、限られたネットワーク資源でデータ量の増大に対応するために、ネットワーク資源を有効に活用するためのトラフィック・エンジニアリング（以下、TEと略す）が可能となる。さらに、顧客の需要を予測してネットワーク資源を計画的に準備しておき、ユーザの要求（帯域、サービス）に対して迅速にネットワーク資源を提供するプロビジョニングや、アタックの検出・分析、課金などを行うことが可能となる。
【０００４】
フロー統計収集方式として、例えばキャッシュ方式によるフロー統計技術（従来技術1）がある。従来技術1では、ネットワーク内に分散配置された複数の統計収集装置と、前記複数の統計収集装置から定期的に通知される統計情報を収集し、ネットワーク全体のトラフィック分析を行うコレクタ装置から構成される。前記統計収集装置の例としては、ネットワーク内でパケット転送処理を行うルータが挙げられる。以下、従来技術1に対応したルータを例にして、統計収集装置の処理について説明する。
【０００５】
前記の統計収集機能を実装したルータは、パケット受信時に、フローを識別するパケットヘッダ情報の組合せ（以下、フロー条件と呼ぶ）を1つ以上登録したフローテーブルを検索する。登録されたフロー条件に一致した場合、当該フロー条件に対応して記録されているパケット数に1を加算し、また、同様に当該フロー条件に対応して記録されているバイト数に、受信パケットのバイト数を加算する。一方、フローテーブルの検索の結果どのフロー条件にも一致しない場合、受信したパケットのヘッダ情報の組合せを新たにフローテーブルに登録する。さらに、フローテーブルに登録されている各フロー条件と対応する統計情報を一定時間間隔で検査し、前回の検査から統計情報が変化していないフロー条件は削除するエージング処理も行う。フロー条件を削除する際、対応する統計情報をデータとするパケットを生成し、コレクタ装置に送信する。
【０００６】
フローテーブル検索の検索キーのビット数は、一般に、ルータのパケット転送処理時に行う転送先検索の検索キーのビット数に比べて多いため、転送先検索に比べてフローテーブル検索の処理時間を短縮することが難しい。従って、ルータのパケット転送処理に対するフローテーブル検索時間の占める割合が大きくなる。フローテーブル検索時間が、要求されるパケット転送処理時間より大きい場合、フローテーブル検索処理により、パケット転送処理性能が低下することになる。
【０００７】
高速な回線を収容するルータでは、フローテーブル検索処理によるパケット転送処理性能の低下を緩和するため、予め設定されたサンプリングレートに従ってフローテーブル検索を行うパケットをサンプリングし、前記サンプリングされたパケットに対してのみフローテーブル検索処理を行う技術（従来技術2）がある。
【０００８】
フローテーブル検索技術ではないが、ルータのルーティングテーブル検索技術として、特開2002-208945がある（従来技術3）。従来技術３では、Content Addressable Memory（CAM）等の高速なメモリで構成する第1メモリと、第1のメモリよりは検索速度が遅いがエントリ集積度が高い第2のメモリにまたがる状態で経路テーブルを格納することにより、CAMに設定できるビット数よりも多くのビット数が必要なエントリの検索をRAM（Random Access Memory）のみを用いた検索方式よりも高速に行うことを特徴としている。
【０００９】
【特許文献１】特開２００２−２０８９４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
前述の従来技術1、2には、今後増加するデータ量に対応し、かつ重要なデータの通信品質保証を行う場合、以下に示す課題がある。
フローテーブル検索の検索キーは、パケットヘッダ内の複数フィールドの組合せであり、パケットヘッダ内の1つのフィールドのみ、あるいは2つ程度フィールドの組合せから構成される転送先検索の検索キーに比べてビット数が多い。また、フローテーブルに登録されるフロー条件の数（以下、フローエントリ数と呼ぶ）も、転送先テーブルのエントリ数に比べて、数倍以上のエントリ数が必要になる。
【００１１】
多数のエントリから構成されるテーブルを検索する方式として、ビット当りの価格が安価なStatic RAM（SRAM）や、Dynamic Random Access Memory（DRAM）を用い、前記メモリに木構造に構成したフローテーブルを格納する方式（以下、Tree方式）がある。Tree方式は、多数のエントリから構成されるテーブルを格納する場合のメモリチップ数が少なくてすむことや、装置の価格を安価にすることが可能となる。また、装置内の実装面積も少なくなる。しかし、一般的に、検索時のメモリアクセス回数が複数回必要になるため、検索性能は次に説明するCAM方式に比べて数分の1以下に低下する。従って、多数のエントリから構成されるフローテーブルを検索する場合、回線速度が高い回線を収容する装置では、フローテーブル検索処理時間が必要なパケット転送処理時間より長くなり、受信するパケットすべてに対してフローテーブル検索処理を行う従来技術1では、必要なパケット転送処理性能を実現することが困難である。
【００１２】
また、従来技術2では、予め設定されたサンプリングレートに従って、フローテーブル検索を行う頻度を低下させることにより、回線速度が高い回線を収容する際に必要なパケット転送処理性能を実現する。しかし、パケットに対してサンプリングを行うため、各フローに対する統計的な傾向を把握することは可能だが、正確な受信パケット数、受信バイト数を得ることはできない。サンプリングされた統計値を用いた統計的なフローのデータ量を把握することにより、TEやプロビジョニング、ネットワーク設備計画、アタック検出等は行える。しかし、例えば、品質保証が必要なフローに対して実際にネットワークとして品質保証がなされているかどうかをネットワーク管理者がネットワーク利用者に対して示す際の情報として利用する場合や、課金に利用する場合、正確なパケット数やバイト数を用いることが重要であり、サンプリングされた使用することは難しいと考えられる。
【００１３】
一方、検索キーのビット数が多い場合の高速検索方式として、CAMを用いた検索方式（以下、CAM方式と呼ぶ）がある。CAM方式では、メモリ内に記録されているビットパターンと検索キーのビットパターンを高速に検索することが可能である。しかし、通常のメモリに比べてビット当りの価格が高く、多数のエントリ数に対応する場合には、装置に実装するCAMチップ数が多くなり、装置の価格が高くなる、装置内の実装面積が不足する、などの問題がある。また、メモリ内に登録されたすべてのビットパターンと検索キーのビットパターンを並列に比較するため、消費電力が高くなる問題がある。
【００１４】
また、従来方式３ではルータのルーティングテーブル検索の高速化方式について示されているが、フローテーブル検索に関しては言及されていない。また、CAMとRAMを併用する方式では、RAMに対するアクセス時間がCAM方式に追加されることになり、Tree方式と同様、多数のエントリから構成されるフローテーブルを検索する場合、回線速度が高い回線を収容する装置では、フローテーブル検索処理時間が必要なパケット転送処理時間より長くなり、受信するパケットすべてに対してフローテーブル検索処理を行う従来技術1では、必要なパケット転送処理性能を実現することが困難である。
【００１５】
本発明の第１の目的は、データ量が増加し高速なパケット転送処理が必要とされる場合であっても、正確な統計情報が必要なフローに対しては正確な統計情報を収集できるパケット転送方法またはパケット転送装置を提供することである。また、本発明の第２の目的は、転送処理すべきパケット量が更に増えた場合であっても、多数のフローに対する統計を収集することが可能なパケット転送方法またはパケット転送装置を提供することである。
【課題を解決するための手段】
【００１６】
本発明が適用されるルータは、第１のテーブルと第１のテーブルを検索するための手段、第２のテーブルと第２のテーブルを検索するための手段、および受信パケットを統計情報の全数収集が必要なパケットと、必ずしも全数収集が必要でないパケットに判別する手段とを備える。判別手段を実現するために、第１のテーブルを検索すべきか、第２のテーブルを検索すべきかを決定するための検索処理判定テーブルと、検索テーブル判定テーブル検索を検索する手段とを備える。第１のテーブル、第２のテーブルおよび判定テーブルを検索する手段は、一つの検索手段によって実現してもよい。
【００１７】
前記ルータは、パケットを受信した際に、通常のルーティング処理の他、検索テーブル判定テーブルを検索して、第１のテーブルと第２のテーブルのどちらを検索するかを決定する。前記第１のテーブル検索を行うと決定したパケットに対しては、前記第１のテーブルを検索し、一致したフロー条件に対応する統計を更新する。
【００１８】
受信パケットを分けて処理をするため、全部の受信パケットに対して統計情報の収集を行っていた場合に比べて、パケットの処理にかかる時間が短縮される。また、全パケットに対してサンプリング的に統計情報の収集を行っていた場合に比べて、全数収集が必要なフローに関しては、収集される統計情報の精度が向上する。
【００１９】
一方、前記第２のテーブル検索を行うと決定したパケットに対しては、前記記憶手段に設定されたサンプリングレートに従って、前記第２のテーブルの検索を行うか行わないかを決定する。前記第２のテーブル検索を行うと決定した場合、第２のテーブル検索処理部は、前記第２のテーブルを検索し、一致したフロー条件に対応する統計を更新する。
【００２０】
第２のテーブルに格納されたフロー条件に属するパケットに対してサンプリングを実施することにより、同一パケット転送処理性能では、統計情報を収集できるフローの種類を増加することができる。更にまた、サンプリングされた統計値で十分なフローを識別するための条件を前記テーブル判定テーブルに設定し、かつ、前記記憶手段に、パケット転送性能を低下させない程度のサンプリングレートを設定することにより、パケット転送性能を低下させずに、多数のフローのサンプリングした統計値を収集することが可能になる。
前記以外の本願が解決しようとする課題、その解決手段は、本明細書の「発明の実施の形態」の欄および図面で明らかにされる。
【発明の効果】
【００２１】
本発明の統計収集装置を用いることにより、正確な統計情報が必要なフローを識別するための条件を前記検索テーブル判定テーブルに設定することにより、正確な統計情報が必要なフローに対しては、サンプリングされない正確な統計情報を、パケット転送処理性能の低下なしに収集することが可能となる。また、サンプリングされた統計値で十分なフローを識別するための条件を前記テーブル判定テーブルに設定し、かつ、前記記憶手段に、パケット転送性能を低下させない程度のサンプリングレートを設定することにより、パケット転送性能を低下させずに、多数のフローのサンプリングした統計値を収集することが可能になる。
【実施例１】
【００２２】
まず、ネットワークにおけるフロー統計収集機能について図１、図２、図３、図４、図５、を用いて説明する。なお、本実施例において「統計情報」とは、所定の統計情報を得るために、受信パケットに対してルータが行なわなければならない処理ないしルータが収集すべき情報の種類を意味し、一般用語として使用される「統計情報」とは、意味が異なる。
【００２３】
図１はフロー統計収集機能を持つルータから構成されるネットワークの一構成例である。図１に示すネットワークは、端末T1、T2、T3、T4と、サーバS1、S2と、前記サーバとそれぞれ接続されるルータR2、R3と、前記端末および前記サーバと回線C_T1、C_T2、C_T3、C_T4、C_R2、C_R3を介して接続されるルータR1から構成される。サーバS1から端末T1へ、IP（Internet Protocol）ヘッダ内の上位プロトコルがTCP（Transmission Control Protocol）、IPヘッダ内のTOS（Type of Service）がTOS1、TCPヘッダ内の送信元ポート番号がSPRT1、TCPヘッダ内の宛先ポート番号がDPRT1であるフロー（以下、フロー1と呼ぶ）に属するパケットが送信されている。
【００２４】
また、サーバS1から端末T3へ、上位プロトコルがTCP、TOSがTOS1、送信元ポート番号がSPRT1、宛先ポート番号がDPRT3であるフロー（以下、フロー2と呼ぶ）に属するパケットが送信されている。サーバS2から端末T2へ、上位プロトコルがUDP（User Datagram Protocol）、TOSがTOS2、UDPヘッダ内の送信元ポート番号がSPRT2、UDPヘッダ内の宛先ポート番号がDPRT2であるフロー（以下、フローｘ3と呼ぶ）に属するパケットが送信されている。また、サーバS2から端末T4へ、上位プロトコルがUDP、TOSがTOS2、送信元ポート番号がSPRT2、宛先ポート番号がDPRT4であるフロー（以下、フロー4と呼ぶ）に属するパケットが送信されている。
【００２５】
図２に、通信されるパケットの構造を示す。パケットは、OSI（Open System Interconnection）モデルの各レイヤのプロトコルに対応した複数のヘッダ情報と、データから構成される。具体的には、レイヤ2ヘッダ（201）、レイヤ3ヘッダ（202）、レイヤ4ヘッダ（203）、データ（204）から構成される。レイヤ2のプロトコルとしては、Ethernet（登録商標）、ATM （Asynchronous Transfer Mode）、MPLS（Multi_Protocol Label Switching）等のプロトコルを用いることができる。レイヤ3のプロトコルとしてはIP version 4（以下、IPv4）、IP version 6（以下、IPv6）等のプロトコルを用いることができる。レイヤ4のプロトコルとしてはTCP、UDP等のプロトコルを用いることができる。
【００２６】
図３に、レイヤ3のプロトコルで用いるヘッダの一例として、IPv4のヘッダ構造を示す。IPv4ヘッダには、パケットの転送品質を示すToS、レイヤ4のプロトコルを示すプロトコル、送信元の端末のIPアドレス（送信元IPアドレス）、宛先の端末のIPアドレス（宛先IPアドレス）が格納されている。ToSは8 bit、プロトコルは8 bit、送信元IPアドレス、宛先IPアドレスはともに32 bitである。
【００２７】
図４に、レイヤ3のプロトコルで用いるヘッダの一例として、IPv6のヘッダ構造を示す。IPv6ヘッダには、パケットの転送品質を示すクラス、このヘッダの次のヘッダ種別を示す次ヘッダ番号、送信元IPアドレス、宛先IPアドレスが格納されている。次のヘッダがTCPやUDPなどのレイヤ4プロトコルのヘッダである場合、次ヘッダ番号にレイヤ4のプロトコルを示す値が格納される。クラスは8 bit、次ヘッダ番号は8 bit、送信元IPアドレス、宛先IPアドレスはともに128 bitである。
【００２８】
図５に、レイヤ4のプロトコルで用いるヘッダの一例として、TCPのヘッダ構造を示す。TCPヘッダには、上位レイヤがアプリケーションを識別するための論理的なポート番号として、送信元ポート番号、宛先ポート番号が格納されている。送信元ポート番号、宛先ポート番号はともに16 bitである。
【００２９】
図６に、レイヤ4のプロトコルで用いるヘッダの一例として、UDPのヘッダ構造を示す。UDPヘッダには、TCPヘッダと同様、送信元ポート番号、宛先ポート番号が格納されている。送信元ポート番号、宛先ポート番号はともに16 bitである。
【００３０】
図７に、図１のルータR1で収集されるフロー統計のフロー条件の一例を示す。図７では、フロー条件として、IPヘッダ内の送信元IPアドレス（701）、宛先IPアドレス（702）、上位プロトコル（703）、TOS（704）、およびTCPあるいはUDPヘッダ内の送信元ポート番号（705）、宛先ポート番号（706）を用いた例を示している。なお、本例でフロー条件として用いているヘッダ内の値の組合せは一例であり、その他の値の組合せをフロー条件として用いることも考えられる。
【００３１】
図８に、前記の各フロー条件に対応して収集する統計情報の一例を示す。図８では、収集する統計情報として、各フローに属するパケットの受信数（以下、パケット数と呼ぶ）（801）、フローに属するパケットのバイト数の積算値（以下、バイト数と呼ぶ）（802）、各フローに属するパケットが入力した回線番号（803）、各フローに属するパケットが出力される回線番号（804）、およびその他の情報（805）を用いた例を示している。フロー1、フロー3は品質保証が必要で、正確な統計情報が必要なフローとし、フロー2、フロー3は、サンプルされた統計値で十分なフローである。
【００３２】
図８に示した統計情報は、パケット転送装置内部にテーブルなどの形式で保持される。パケット受信時には、受信パケットを解析してフロー条件を抽出し、装置内部に保持されている統計情報をフロー条件を検索キーとして検索する。ヒットした統計情報を元に受信パケットに対して必要な処理を行ない、処理の結果得られた情報は装置内に格納される。詳細は、以下説明する。
【００３３】
次に、本実施例のパケット転送装置の一構成例を、図９から図２４を用いて説明する。図９のルータ900は、入力回線ICn（n=1〜N），出力回線OCn（n=1〜N）、パケット受信処理部901、検索処理部1000、大容量フローテーブル検索処理部902、大容量フローテーブル1200、高速フローテーブル1100、ルーティングテーブル903、パケット送信処理部904、制御部905から構成される。制御部905はパケット受信処理部901、大容量フローテーブル検索処理部902、検索処理部1000、パケット送信処理部904に接続され、各処理部の各種設定を行う。ルータ900の構成要素901〜905、1000、1100、1200の実現方法は、例えば、それぞれの処理部を単一の専用LSIで実現し、前記の各処理部に対応する専用LSIを相互に接続する方法でもよいし、複数の処理部を単一の専用LSIで実現し、前記複数処理部を実現した専用LSIを複数個相互接続する方法でもよい。
【００３４】
また、専用LSIではなく、汎用のMPU（Micro Processing Unit）や、NP（Network Processor）で実現する方法でもよい。高速フローテーブル705を格納するメモリとしては、高速検索が可能なCAMが考えられる。大容量テーブル704を格納するメモリとしては、ビット当りの価格が安く、ビット当りのチップ面積が小さく、多数のフローエントリを格納可能なDRAMが考えられる。
【００３５】
図９に示したルータ900は、高速フローテーブル処理と大容量フローテーブル処理の判定を行うための検索テーブル判定テーブルを、高速フローテーブル内に包含した構成例を示している。この際、検索処理部1000は、高速フローテーブルを検索すると同時に、高速フローテーブル内の検索テーブル判定テーブルを検索し、大容量テーブルを検索するか否かを判定する。
【００３６】
なお、本実施例のルータは、最初に必ず高速検索テーブルを検索するアーキテクチャになっているが、高速検索テーブルと大容量検索テーブルのどちらを検索するかを判断する手段を備えたアークテクチャ、すなわち、大容量検索処理部と検索処理部のどちらにパケットを転送するかをパケット受信処理部901が判断するようなアークテクチャも実現可能である。ただし、この場合でも、検索処理部には必ずパケットのヘッダ情報を転送する必要はある。パケットの転送先を決定するため、検索処理部で、高速フローテーブル検索以外に、ルーティングテーブル検索を実施する必要があるためである。
【００３７】
なお、図９に示したルータに管理コンソールを設けて、判定テーブルに格納する情報を任意に設定可能にしてもよい。図３０に、本発明の統計収集機能を適用したルータ900と、前記ルータ内の判定テーブルを設定するための管理コンソール3000を接続した概要図を示す。管理コンソール3000には、テーブルの内容を表示するための表示画面3001と、マウス3002、キーボード3003など、表示されたテーブル内容の任意箇所を選択し、編集するための手段を設ける。また、図３１に示す通り、前記コンソールが、ネットワークを介して本発明の統計収集機能を適用したルータ900と接続されていてもよい。また、前記コンソールの機能を、コレクタ装置が所持し、コレクタ装置がルータ900に対して判定テーブルに格納する情報を設定してもよい。
【００３８】
図１０に、図９のルータ900の検索処理部1000の一構成例を示す。検索処理部1000は、ヘッダ情報蓄積部1001、高速フローテーブル検索処理部1002、ルーティングテーブル検索処理部1003、サンプル判定部1300、検索結果生成部1004、フロー登録・削除処理部1005から構成される。
【００３９】
図１１に、図９および図１０の高速フローテーブル1100の一構成例を示す。フローテーブル1100は、フローエントリ番号フィールド1101、フロー条件フィールド1102、検索結果フィールド1103、統計情報フィールド1104から構成されるエントリを1つ以上所持する。フローエントリ番号フィールド1101は、フロー条件フィールド1102、検索結果フィールド1103、統計情報フィールド1104を関連付けする情報であり、テーブル構成によっては必要ない場合もありえる。フロー条件フィールド1102としては、一例として、図７で示したフロー条件と同一のものを示している。すなわち、図１１では、フロー条件フィールド1102は、送信元IPアドレス、宛先IPアドレス、上位プロトコル、TOS、送信元ポート番号、宛先ポート番号の組合せ、という例を示している。
【００４０】
高速フローテーブル1100には、図７で示した正確な統計が必要なフローであるフロー1、フロー3がそれぞれフローエントリ番号f1、f2として設定されている。また、本実施例では、検索テーブル判定テーブルを、高速フローテーブル内に包含した構成例を示している。具体的には、図７で示したサンプリングした統計で十分なフロー、フロー2、フロー4を大容量テーブルで検索するという指示を設定するため、フローエントリ番号f3が設定されている。フローエントリ番号f3に対応するフロー条件の、送信元IPアドレスフィールド、宛先IPアドレスフィールド、上位プロトコルフィールド、TOSフィールド、宛先ポート番号フィールドの各フィールドに示されている”*”は、その値をフロー条件としては用いないことを示している。すなわち、フローエントリ番号f3のフロー条件は、”送信元ポート番号 = SPRT2”であることを示している。前記フローエントリ番号f3の設定により、送信元ポート番号がともにSPRT2であるフロー2、フロー4に属するパケットに対して高速フローテーブル検索を行う場合、前記フローエントリ番号f3のエントリにヒットすることになる。
【００４１】
検索結果フィールド1103は、サンプル指示フラグ1103_1、サンプリングレート1103_2から構成される。ここで、サンプリングレートとは、統計情報収集をどの程度の頻度で行なうかを示す頻度情報である。サンプル指示フラグ1103_1は、設定値が”1”の場合、ヒットしたパケットを大容量フローテーブル検索処理部宛てにサンプリングしてコピーすることを示す。設定値が”0”の場合は、サンプリングおよびコピーを行わない。サンプリングレート1103_2には、各フローにヒットしたパケットを大容量フローテーブル検索処理部宛にコピーする際のサンプリングレートが設定される。
【００４２】
前記サンプリングレート1103_2の設定値は、サンプル指示フラグ1103_1の設定値が”1”の場合に有効な値となる。図１１では、大容量フローテーブル検索を指示するフローエントリ番号f3のエントリの検索結果として、サンプル指示フラグの値を”1”、サンプリングレートの値を”1/1000”と設定した例を示している。サンプリングレートの値が”1/1000”の場合、1000パケット受信した際に、そのうちの1パケットに対して大容量フローテーブル検索処理を行うことを示す。サンプリングレート1103_2は、後述するように、方式によって、他の情報となる場合もある。
【００４３】
統計情報フィールド1104は、一例として、図７で示した統計情報と同一のものを示している。すなわち、図１１では、統計情報フィールド1104はパケット数、バイト数、入力回線番号、出力回線番号、およびその他の情報から構成される例を示している。フローエントリ番号f3の入力回線番号、出力回線番号の欄の”_”は、無意味な値が記録されていることを示す。
【００４４】
図１１に設定されているフローエントリ番号f1、f2のエントリは、ルータ900の管理者が特に設定せず、フロー登録・削除処理部1005により自動的に設定されてもよい。また、図１１に設定されている大容量フローテーブル検索処理を指示するためのフローエントリ番号f3のエントリは、予めルータ900の管理者が設定する必要がある。フロー登録・削除処理部1005のフロー登録処理動作については、後ほど説明する。
【００４５】
図１２に、図９の大容量ローテーブル1200の一構成例を示す。大容量フローテーブル1200は、フローエントリ番号1201、フロー条件1202、統計情報1103から構成されるエントリを1つ以上所持する。フローエントリ番号1201は、フロー条件1202、統計情報1103を関連付けする情報であり、テーブル構成によっては必要ない場合もありえる。フロー条件1202としては、一例として、図７で示したフロー条件と同一のものを示している。すなわち、図１２では、フロー条件1202は、送信元IPアドレス、宛先IPアドレス、上位プロトコル、TOS、送信元ポート番号、宛先ポート番号の組合せ、という例を示している。
【００４６】
大容量フローテーブル1200には、図７で示したサンプリングした統計値で十分なフローである、フロー2、フロー4がそれぞれフローエントリ番号f4、f5として設定されている。統計情報1203は、一例として、図７で示した統計情報と同一のものを示している。すなわち、図１２では、統計情報1203はパケット数、バイト数、入力回線番号、出力回線番号、およびその他の情報から構成される例を示している。
【００４７】
図１２に設定されているフローエントリ番号f4、f5エントリは、ルータ900の管理者が特に設定せず、大容量フローテーブル検索処理部内のフロー登録・削除処理部（図示していない）により自動的に設定されてもよい。大容量フローテーブル検索処理部902内のフロー登録・削除処理部のフロー登録処理動作については、図１０のフロー登録・削除処理部1005と同様の処理であり、後ほど説明する。
【００４８】
次に、図９、図１０、図１１、図１２を用いて、ルータ900がパケットを受信した際の動作を説明する。
まず、図７に示したフロー1に属するパケットを受信する場合のルータ900の動作を説明する。図９において、入力回線から入力パケットを受信したパケット受信処理部901は、入力回線番号などの受信処理に関する装置内情報を装置内ヘッダとしてパケットに付与したのち、パケットデータを蓄積し、装置内ヘッダ、レイヤ2ヘッダ、レイヤ3ヘッダ、レイヤ4ヘッダなどのヘッダ情報を抽出して検索処理部1000に送信する。図１０において、検索処理部1000内のヘッダ情報蓄積部1001は、パケット転送処理部901から受信したヘッダ情報を一時蓄積し、ルーティングテーブル検索処理部1003、高速フローテーブル検索処理部1002、フロー登録・削除処理部1005へ送信する。
【００４９】
ヘッダ情報を受信したルーティングテーブル検索処理部1003は、前記ヘッダ情報から必要な情報を抽出して検索キーを生成し、前記生成した検索キーを用いてルーティングテーブル903を検索する。前記ルーティングテーブル検索処理部1003は、ルーティングテーブル903の検索結果である出力回線番号などの宛先情報を高速フローテーブル1002、検索結果生成部1004に送信する。
【００５０】
ヘッダ情報を受信した高速フローテーブル検索処理部1002は、前記ヘッダ情報から、送信元IPアドレス、宛先IPアドレス、上位プロトコル、TOS、送信元ポート番号、宛先ポート番号を抽出して検索キーを生成し、前記検索キーを用いて高速フローテーブル1100を検索する。本例では、フロー1に属するパケットが受信した場合を考えているので、前記検索キーは、高速フローテーブル1100のフローエントリ番号f1に一致する。従って、高速フローテーブル検索処理部1002は、検索結果として、フローエントリ番号f1の検索結果に設定されている、サンプル指示フラグが”0”、サンプリングレートは無効、という値を得る。高速フローテーブル検索処理部1002は、前記検索結果をサンプル判定部1300に送信する。
【００５１】
また、高速フローテーブル検索処理部1002は、検索キーがフロー条件に一致したフローエントリ番号f1の統計情報フィールド1104を更新する。具体的には、フローエントリ番号f1のパケット数に1加算し、バイト数に受信パケットのバイト数を加算し、入力回線番号に、前記装置内ヘッダ内の入力回線番号を記録し、出力回線番号に、ルーティングテーブル検索処理部1003から受信した出力回線番号を記録する。
【００５２】
高速フローテーブル検索処理部1002から検索結果を受信したサンプル判定部1300は、前記検索結果を基に、大容量フローテーブル検索処理部902に対してコピーを生成するかどうかを判定し、コピー指示として検索結果生成部1004に通知する。具体的には、前記検索結果のうち、サンプル指示フラグが”0”の場合はコピーを生成しないと判定する。また、前記サンプル指示フラグが”1”の場合、前記検索結果のサンプリングレートの値を用いてコピーを生成するかどうかを判定する。本例の場合、サンプル指示フラグは”0”なので、検索結果生成部1004は前記コピー指示を検索結果生成部1004に通知しない。なお、サンプル判定部1300の詳細な実施例については、図１３を用いて説明する。
【００５３】
ルーティングテーブル検索処理部1003から前記宛先情報を受信した検索結果生成部1004は、ルーティングテーブル検索処理部1003から受信した宛先情報を基にして検索結果情報を生成し、パケット転送処理部901へ送信する。本例の場合、検索結果生成部1004はサンプル判定部1300から前記コピー指示を受信していないので、大容量フローテーブル検索処理部902へコピーを生成することは行わない。
検索処理部1000内の検索結果生成部1004から検索結果情報を受信したパケット受信処理部901は、前記蓄積したパケットデータに、前記検索結果情報を付与してパケット送信処理部904へ送信する。前記検索結果情報が付与されたパケットデータを受信したパケット送信処理部904は、前記検索結果情報から出力回線番号を抽出し、前記出力回線番号に対応する回線からパケットを送信する。
【００５４】
次に、図７に示したフロー2に属するパケットを受信する場合のルータ900の動作を説明する。パケット受信処理部901がパケットを受信してから、検索処理部1000内の高速フローテーブル検索処理部1002が高速フローテーブル1100を検索するまでは、前記フロー1に属するパケットを受信した場合の動作と同様である。
【００５５】
本例では、フロー2に属するパケットが受信した場合を考えているので、前記検索キーは、高速フローテーブル1100のフローエントリ番号f3に一致する。従って、高速フローテーブル検索処理部1002は、検索結果として、フローエントリ番号f3の検索結果に設定されている、サンプル指示フラグが”1”、サンプリングレートは”1/1000”、という値を得る。高速フローテーブル検索処理部1002は、前記検索結果をサンプル判定部1300に送信する。また、高速フローテーブル検索処理部1002は、検索キーがフロー条件に一致したフローエントリ番号f1の統計情報フィールド1104を更新する。
【００５６】
高速フローテーブル検索処理部1002から検索結果を受信したサンプル判定部1300は、前記検索結果を基に、大容量フローテーブル検索処理部902に対してコピーを生成するかどうかを判定し、コピー指示として検索結果生成部1004に通知する。本例の場合、サンプル指示フラグは”1”なので、サンプル判定部1300は、さらに、前記検索結果のサンプリングレートに従った割合でコピーを生成するかどうかを判定する。サンプリングレートに従いコピーを生成しないと決定した場合、サンプル判定部1300は、前記コピー指示を検索結果生成部1004に通知しない。
【００５７】
サンプリングレートに従いコピーを生成すると決定した場合、サンプル判定部1300は、前記コピー指示を検索結果生成部1004に通知する。前記コピー指示が検索結果生成部1004に通知されない場合の以降の動作は、前記で説明した、フロー1に属するパケットを受信した場合の動作と同様なので、省略する。以下では、前記コピー指示が検索結果生成部1004に通知された場合の動作について説明する。なお、サンプル判定部1300の詳細な実施例については、図１３を用いて説明する。
【００５８】
ルーティングテーブル検索処理部1003から前記宛先情報を受信し、サンプル判定部1300からコピー指示を受信した検索結果生成部1004は、ルーティングテーブル検索処理部1003から受信した宛先情報を基にして検索結果情報を生成する。さらに、コピー指示を受信しているので、検索結果情報にコピーがあることを示すフラグ（以下、コピーフラグと呼ぶ）を”1”に設定してパケット転送処理部901へ送信する。次に、検索結果生成部1004は、前記検索結果情報を送信した後、前記検索結果と同一の情報に加えて、大容量フローテーブル検索処理部宛てにコピーを送信することを指示するフラグ（以下、大容量フローテーブル検索処理部宛フラグと呼ぶ）を”1”に設定してパケット転送処理部901へ送信する。以下、前記の大容量フローテーブル検索処理部宛フラグが付与された検索結果情報を、検索結果情報コピーと呼ぶ。
【００５９】
検索処理部1000内の検索結果生成部1004から検索結果情報を受信したパケット受信処理部901は、まず、前記蓄積したパケットデータに、前記検索結果情報を付与してパケット送信処理部904へ送信する。この際、検索結果情報内のコピーフラグの値が”1”であることを検査し、次に受信する検索結果情報コピーに対しても同一のパケットデータを用いると判定する。次に、検索結果生成部1004から検索結果情報コピーを受信したパケット受信処理部901は、前記検索結果情報コピー内の大容量フローテーブル検索処理部宛フラグの値が”1”であることを検査し、前記パケット送信処理部904へ送信する際に用いた前記蓄積したパケットデータに前記検索結果情報コピーを付与して、大容量フローテーブル検索処理部902へ送信する。大容量フローテーブル検索処理部902へ送信するデータとしては、例えば、ヘッダ情報など大容量フローテーブル検索処理に必要な情報のみを抽出して送信するということも考えられる。
【００６０】
前記検索結果情報が付与されたパケットデータを受信したパケット送信処理部904は、前記検索結果情報から出力回線番号を抽出し、前記出力回線番号に対応する回線からパケットを送信する。前記検索結果情報コピーを付与されたパケットデータを受信した大容量フローテーブル検索処理部902は、前記パケットデータから、例えば、ヘッダ情報など大容量フローテーブル検索処理に必要な情報を抽出して検索キーを生成し、前記検索キーを用いて大容量フローテーブル1200を検索する。本例では、前記検索キーは、高速フローテーブル検索処理部1002で生成した検索キーと同一のものとして説明するが、高速フローテーブル検索処理部1002で用いる検索キーと大容量フローテーブル検索処理部902で用いる検索キーが異なってもよい。
【００６１】
本例では、フロー2に属するパケットが受信した場合を考えているので、前記検索キーは、大容量フローテーブル1200のフローエントリ番号f4に一致する。大容量フローテーブル検索処理部902は、検索キーがフロー条件に一致したフローエントリ番号f4の統計情報1203を更新する。具体的には、フローエントリ番号f4のパケット数に1加算し、バイト数に受信パケットのバイト数を加算し、入力回線番号に、前記装置内ヘッダ内の入力回線番号を記録し、出力回線番号に、前記検索結果情報コピー内の出力回線番号を記録する。
【００６２】
次に、フロー登録・削除処理部1005の新規フローエントリの登録動作について説明する。高速フローテーブル検索処理部1002は、高速フローテーブル1100を検索した際、登録されているどのフローエントリにも一致しなかった場合、ルータ900に新しいフローに属するパケットが入力したことを認識し、フロー登録・削除処理部1005に対して新規フロー受信通知を送信する。前記新規フロー受信通知を受信したフロー登録・削除処理部1005は、前記受信したヘッダ情報から、高速フローテーブルのフロー条件に用いる情報を抽出して、フロー登録指示とともに、高速フローテーブル検索処理部1002へ通知する。
【００６３】
また、フロー登録・削除処理部1005は、高速フローテーブルを格納しているメモリの空き状況を管理しており、新規フローを登録すべきメモリのアドレスを高速フローテーブル検索処理部1002へ通知する。高速フローテーブルを格納しているメモリに新規フローを登録する空きがない場合は、後述するフロー削除処理を行う。フロー登録・削除処理部1005から、前記フロー登録指示、前記フロー条件に用いる情報、前記登録すべきメモリアドレスを受信した高速フローテーブル検索処理部1002は、前記メモリアドレスに、前記フロー条件を設定する。
【００６４】
次に、フロー登録・削除処理部1005のフローエントリの削除動作について説明する。フロー登録・削除処理部1005は、一定時間間隔で、高速フローテーブル1100内に格納されている各フローエントリの統計情報のうち、パケット数801（あるいはバイト数802）を読み出し、前回の読み出し時点の値と比較する。比較の結果、前回の値と異なる場合は、その時点の時刻をフローエントリ番号に対応する更新時刻として記憶しておく。比較の結果、前回の値と同一の場合は、フローエントリ番号に対応する更新時刻は更新せず、フローエントリ番号に対応する非更新回数に1だけ加算する。
【００６５】
フローエントリ番号に対応する非更新回数が、予め設定された回数に一致した場合、そのフローエントリ番号に対応するフローは終了したと判断して、フロー登録・削除処理部1005は、高速フローテーブル検索処理部1002に、フロー削除指示と、削除するフローエントリが登録されているメモリアドレスを送信する。前記フロー削除指示と、前記削除するフローエントリが登録されているメモリアドレスを受信した高速フローテーブル検索処理部1002は、前記メモリアドレスに登録されているフローを削除する。
【００６６】
また、フロー登録・削除処理部1005は、高速フローテーブル検索処理部1002から、前記新規フロー受信通知を受信した際、高速フローテーブルを格納しているメモリに新規フローを登録する空きがない場合は、フロー毎に記憶された更新時刻を全フローに関して検査し、更新時刻と現在時刻の差が最も大きいフローを削除すると判定する。フロー登録・削除処理部1005は、高速フローテーブル検索処理部1002に、フロー削除指示と、前記削除すると判定したフローエントリが登録されているメモリアドレスを送信する。前記フロー削除指示と、前記削除するフローエントリが登録されているメモリアドレスを受信した高速フローテーブル検索処理部1002は、前記メモリアドレスに登録されているフローを削除する。
大容量フローテーブル検索処理部902内のフロー登録・削除処理部のフロー登録処理動作についても、以上で説明した図１０のフロー登録・削除処理部1005と同様の処理である。
【００６７】
次に、フローを削除した後の統計情報のコレクタ装置への送信処理について説明する。フロー登録・削除処理部1005は、前記削除したフローエントリの統計情報を、高速フローテーブルx1100を格納するメモリとは別のメモリに格納する（図９には図示していない）。フロー登録・削除処理部1005は、前記削除したフローエントリの統計情報を、予め決められた統計情報通知用のパケットフォーマットに従ってカプセル化し、ネットワークを介してコレクタへ送信する。
【００６８】
フロー登録・削除処理部1005が削除したフローの統計値は、サンプリングしない正確な統計値であるので、前記予め決められたパケットフォーマット内のサンプリングレートの情報としては、サンプリングレートとして1/1を設定する。大容量フローテーブル検索処理部902内のフロー登録・削除処理部の、フローを削除した後の統計情報のコレクタ装置への送信処理についても、前記フロー登録・削除処理部1005と同様の処理を行う。ただし、大容量フローテーブル検索処理部902内のフロー登録・削除処理部が削除したフローの統計値は、サンプリングレートに従ってサンプリングされた統計値であるので、前記予め決められたパケットフォーマット内のサンプリングレートの情報としては、サンプリングレートとして、前記高速フローテーブル1100内の検索結果として設定されたサンプリングレートを設定する。
【００６９】
図２９に、本発明の統計収集装置が用いる統計情報通知パケットフォーマットの一例を示す。コレクタ装置は前記サンプリングレートから、実際にネットワークで通信されていたフローのパケット数等を推定する。本発明の統計収集装置では、同一装置でもフロー毎にサンプリングレートが異なるので、各フローの実際のパケット数等を推定可能にするため、パケットフォーマット内にフロー毎のサンプリングレートを設定する。図２９の統計情報通知パケットフォーマットは、ヘッダ情報2901と、N個（Nは自然数）のフロー統計情報（以下、フローレコードと呼ぶ）から構成される。各フローレコードは、フローを識別するフローID 2911、フロー毎のサンプリングレート2912、パケット数2913、バイト数2914、出力回線番号2915、入力回線番号2916、その他の情報2917から構成される。
【００７０】
次に、図１３、図１４、図１５、図１６、図１７、図１８を用いてサンプル判定部1300の動作について説明する。
図１３は、サンプル判定部1300の一構成例である。図１３では、予め設定されたパケット間隔と受信パケット数とを比較し、受信パケット数がパケット間隔に等しくなった場合にサンプルすると判定する方式について説明する。また、サンプリングレートは、高速フローテーブルのエントリに設定した値を使わず、ルータ900で1種類設定されたサンプリングレートを使用する方式について説明する。
【００７１】
図１３のサンプル判定部1300は、検索結果蓄積部1301、パケット数カウンタ1302、サンプル間隔レジスタ1303、比較部1304から構成される。パケット数カウンタ1302は、ルータ900の起動時に0に設定されている。サンプル間隔レジスタ1303には、制御部905経由で、ルータ900の管理者が設定するパケットのサンプル間隔が設定される。検索結果蓄積部1301は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記サンプル指示フラグ1103_1を受信し、蓄積する。本例の場合、サンプリングレート1103_2は使用しない。前記サンプル指示フラグが”1”の場合、検索結果蓄積部1301は、パケット数カウンタ1302に対し、パケット数に1だけ値を加算するように指示する。また、検索結果蓄積部1301は、比較部1304に対し、比較処理を指示する。
【００７２】
比較処理の指示を受信した比較部1304は、前記パケット数カウンタ1302からパケット数を受信し、サンプル間隔レジスタ1303から受信した前記パケットのサンプル間隔と比較処理を行う。比較処理の結果、パケット数の値 = サンプル間隔レジスタの値という条件が成立する場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知し、パケット数カウンタ1302へ、パケット数カウンタの0クリア指示を通知する。前記0クリア指示を受信したパケット数カウンタ1302は、カウンタ値を0に設定する。前記条件が成立しない場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知せず、また、パケット数カウンタ1302へ、パケットカウンタの0クリア指示を通知しない。
【００７３】
図１４は、サンプル判定部1300の図１３とは別の一構成例である。図１４では、予め設定されたパケット間隔と受信パケット数とを比較し、受信パケット数がパケット間隔に等しくなった場合にサンプルすると判定する方式について説明する。また、サンプリングレートは、高速フローテーブルのエントリに設定した値を使用せず、ルータ900の入力回線毎に類設定されたサンプリングレートを使用する方式について説明する。
図１４のサンプル判定部1300は、結果蓄積部1301、パケット数カウンタテーブル1305、サンプル間隔テーブル1306、比較部1304、入力回線番号蓄積部1307から構成される。入力回線番号蓄積部1307は、ヘッダ情報蓄積部1001から入力回線番号を受信する。
【００７４】
図１５にパケット数カウンタテーブル1305の一構成例を示す。パケット数カウンタテーブル1305は、入力回線番号毎のパケット数カウンタを所持し、全てのカウンタは、ルータ900の起動時に0に設定されている。図１６にサンプル間隔テーブル1306の一構成例を示す。サンプル間隔テーブル1306には、制御部905経由で、ルータ900の管理者が設定する入力回線番号毎のパケットのサンプル間隔が設定される。検索結果蓄積部1301は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記サンプル指示フラグ1103_1を受信し、蓄積する。本例の場合、サンプリングレート1103_2は使用しない。前記サンプル指示フラグが”1”の場合、結果蓄積部1301は、パケット数カウンタテーブル1305に対し、入力回線番号に対応するパケット数に1だけ値を加算するように指示する。
【００７５】
また、検索結果蓄積部1301は、比較部1304に対し、比較処理を指示する。比較処理の指示を受信した比較部1304は、前記パケット数カウンタテーブル1305から、入力回線番号に対応するパケット数を受信し、サンプル間隔テーブル1306から受信した、入力回線番号に対応する前記パケットのサンプル間隔と比較処理を行う。比較処理の結果、パケット数の値 = サンプル間隔レジスタの値という条件が成立する場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知し、パケット数カウンタテーブル1305へ、入力回線番号に対応するパケット数カウンタの0クリア指示を通知する。
【００７６】
前記0クリア指示を受信したパケット数カウンタ1305は、入力回線番号に対応するパケット数カウンタの値を0に設定する。前記条件が成立しない場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知せず、また、パケット数カウンタテーブル1305へ、入力回線番号に対応するパケットカウンタの0クリア指示を通知しない。
【００７７】
図１７は、サンプル判定部1300の図１３および図１４とは別の一構成例である。図１７では、予め設定されたパケット間隔と受信パケット数とを比較し、受信パケット数がパケット間隔に等しくなった場合にサンプルすると判定する方式について説明する。また、サンプリングレートは、高速フローテーブルのエントリに設定した値を使用する方式について説明する。
図１７のサンプル判定部1300は、結果蓄積部1301、パケット数カウンタ蓄積部1308、サンプル間隔蓄積部1309、比較部1304から構成される。
【００７８】
また、図１８に、本例の高速フローテーブル1100の一構成例を示す。本例の場合のフロー条件および統計情報は図１１で示したのもと同様なので、図１８ではフロー条件および統計情報に関しては省略している。図１８の検索結果1800は、サンプル指示フラグ1801、パケット数カウンタ1802、サンプル間隔1803から構成される。パケット数カウンタはルータ900の起動時に0に設定されている。また、サンプル間隔1803には、制御部905経由で、ルータ900の管理者が設定する、大容量フローテーブル検索処理を指示するエントリ毎のパケットのサンプル間隔が設定される。上記のフローテーブル1100の設定は、図３０の管理コンソール3000から行ってもよい。また、図３１のネットワーク経由で接続された管理コンソール3000から行ってもよい。
【００７９】
検索結果蓄積部1301は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記サンプル指示フラグ1103_1と、一致したフローエントリ番号フィールド1101を受信し、蓄積する。また、パケット数カウンタ蓄積部1308は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記パケット数カウンタを受信し、蓄積する。また、サンプル間隔蓄積部1309は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果であるサンプル間隔を受信し、蓄積する。
【００８０】
サンプル指示フラグが”1”の場合、結果蓄積部1301は、パケット数カウンタ蓄積部1308に対し、前記蓄積したパケット数に1だけ値を加算するように指示する。また、検索結果蓄積部1301は、比較部1304に対し、比較処理を指示し、前記一致したフローエントリ番号を送信する。比較処理の指示を受信した比較部1304は、前記パケット数カウンタ蓄積部1308から、前記蓄積されたパケット数に1だけ加算されたパケット数を受信し、前記パケット数と、サンプル間隔蓄積部1307から受信した、前記蓄積されたパケットのサンプル間隔と比較処理を行う。
【００８１】
比較処理の結果、パケット数の値 = サンプル間隔レジスタの値という条件が成立する場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知し、高速フローテーブル検索処理部1002へ、前記一致したフローエントリ番号と、前記フローエントリ番号に対応するパケット数カウンタの0クリア指示を通知する。前記0クリア指示を受信した高速フローテーブル検索処理部1002は、前記フローエントリ番号に対応するパケット数カウンタの値を0に設定する。前記条件が成立しない場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知しない。
【００８２】
また、高速フローテーブル検索処理部1002へ、前記一致したフローエントリ番号と、前記フローエントリ番号に対応するパケットカウンタに、前記1だけ加算したパケット数カウンタの値を記録する指示（以下、パケット数インクリメント指示と呼ぶ）を送信する。前記パケット数インクリメント指示と、前記一致したフローエントリ番号を受信した高速フローテーブル検索処理部1002は、一致したフローエントリ番号に対応するパケットカウンタに、前記1だけ加算したパケット数カウンタの値を記録する。
【００８３】
図１９は、サンプル判定部1300の図１３、図１４、図１７とは別の一構成例である。図１９では、予め設定された閾値と擬似乱数とを比較し、閾値よりも擬似乱数値が小さい（あるいは大きい）場合にサンプルすると判定する方式について説明する。また、サンプリングレートは、高速フローテーブルのエントリに設定した値を使わず、ルータ900で1種類設定されたサンプリングレートを使用する方式について説明する。本例の場合、サンプリングレートは、閾値に対応する。
図１９のサンプル判定部1300は、検索結果蓄積部1301、乱数カウンタ1311、閾値レジスタ1311、比較部1304から構成される。乱数カウンタ1302は、例えば複数のフリップフロップを用いたLinear Feedback Shift Registerから構成される。閾値レジスタ1311には、制御部905経由で、ルータ900の管理者が設定する閾値が設定される。
【００８４】
検索結果蓄積部1301は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果であるサンプル指示フラグ1103_1を受信し、蓄積する。本例の場合、サンプリングレート1103_2は使用しない。前記サンプル指示フラグが”1”の場合、検索結果蓄積部1301は、乱数カウンタ1311に対し、乱数カウンタの値を基にして新しい乱数を生成するように指示する。また、検索結果蓄積部1301は、比較部1304に対し、比較処理を指示する。比較処理の指示を受信した比較部1304は、前記乱数カウンタ1310から新しく生成した乱数を受信し、閾値レジスタ1311から受信した前記閾値と比較処理を行う。比較処理の結果、乱数 ≧ 閾値という条件が成立する場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知する。前記条件が成立しない場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知しない。
【００８５】
図２０は、サンプル判定部1300の図１３、図１４、図１７、図１９とは別の一構成例である。図２０では、予め設定された閾値と擬似乱数とを比較し、閾値よりも擬似乱数値が小さい（あるいは大きい）場合にサンプルすると判定する方式について説明する。また、サンプリングレートは、高速フローテーブルのエントリに設定した値を使用せず、ルータ900の入力回線毎に類設定されたサンプリングレートを使用する方式について説明する。本例の場合、サンプリングレートは、閾値に対応する。
【００８６】
図２０のサンプル判定部1300は、結果蓄積部1301、乱数テーブル1312、閾値テーブル1313、比較部1304、入力回線番号蓄積部1307から構成される。入力回線番号蓄積部1307は、ヘッダ情報蓄積部1001から入力回線番号を受信する。図２１に乱数テーブル1312の一構成例を示す。乱数テーブル1312は、入力回線番号毎の乱数を所持する。各乱数は、例えばLinear Feedback Shift Registerから構成される。図２２に閾値テーブル1313の一構成例を示す。閾値テーブル1306には、制御部905経由で、ルータ900の管理者が設定する入力回線番号毎の閾値が設定される。
【００８７】
検索結果蓄積部1301は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記サンプル指示フラグ1103_1を受信し、蓄積する。本例の場合、サンプリングレート1103_2は使用しない。前記サンプル指示フラグが”1”の場合、結果蓄積部1301は、乱数テーブル1312に対し、入力回線番号に対応して記録されている乱数を基にして新しい乱数を生成するように指示する。また、検索結果蓄積部1301は、比較部1304に対し、比較処理を指示する。比較処理の指示を受信した比較部1304は、前記乱数テーブル1312から、入力回線番号に対応する乱数を受信し、閾値テーブル1313から受信した、入力回線番号に対応する前記閾値と比較処理を行う。比較処理の結果、乱数 ≧ 閾値、という条件が成立する場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知する。前記条件が成立しない場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知しない。
【００８８】
図２３は、サンプル判定部1300の図１３、図１４、図１７、図１９、図２０とは別の一構成例である。図２３では、予め設定された閾値と擬似乱数とを比較し、閾値よりも擬似乱数値が小さい（あるいは大きい）場合にサンプルすると判定する方式について説明する。また、サンプリングレートは、高速フローテーブルのエントリに設定した値を使用する方式について説明する。本例の場合、サンプリングレートは、閾値に対応する。
【００８９】
図２３のサンプル判定部1300は、結果蓄積部1301、乱数蓄積部1314、閾値蓄積部1315、比較部1304から構成される。また、図２４に、本例の高速フローテーブル1100の一構成例を示す。本例の場合のフロー条件および統計情報は図１１で示したのもと同様なので、図２４ではフロー条件および統計情報に関しては省略している。図２４の検索結果2400は、サンプル指示フラグ2401、乱数2402、閾値2403から構成される。各フローエントリの乱数2402は、Linear Feedback Shift Registerを用いた乱数生成回路を用いて生成された値が記録されている。閾値2403には、制御部905経由で、ルータ900の管理者が設定する、大容量フローテーブル検索処理を指示するエントリ毎の閾値が設定される。
【００９０】
検索結果蓄積部1301は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記サンプル指示フラグ1103_1と、一致したフローエントリ番号フィールド1101を受信し、蓄積する。また、乱数蓄積部1314は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記乱数を受信し、蓄積する。また、閾値蓄積部1315は、高速フローテーブル検索処理部1002から、高速フローテーブルの検索結果である、前記閾値を受信し、蓄積する。前記サンプル指示フラグが”1”の場合、結果蓄積部1301は、乱数蓄積部1314に対し、蓄積された乱数を基にして新しい乱数を生成するように指示する。
【００９１】
また、検索結果蓄積部1301は、比較部1304に対し、比較処理を指示し、前記一致したフローエントリ番号を送信する。
比較処理の指示を受信した比較部1304は、前記乱数蓄積部1314から、前記新しく生成した乱数を受信し、前記パケット数と、サンプル間隔蓄積部1307から受信した、前記蓄積されたパケットのサンプル間隔と比較処理を行う。比較処理の結果、乱数 ≧ 閾値、という条件が成立する場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知する。前記条件が成立しない場合、比較部1304は、検索結果生成部1004へ前記コピー指示を通知しない。
【００９２】
上記比較の結果に依存せず、比較部1304は、高速フローテーブル検索処理部1002へ、前記一致したフローエントリ番号と、前記フローエントリ番号に対応する新しく生成した乱数の記録指示を通知する。前記乱数の記録指示を受信した高速フローテーブル検索処理部1002は、前記フローエントリ番号に対応する乱数に、前記比較部1304から受信した乱数を記録する。
【実施例２】
【００９３】
図９に示したパケット転送装置とは別の構成例を、図２５を用いて説明する。図２５のルータ900は、入力回線ICmn（m=1〜M、n=1〜N），出力回線OCmn（m=1〜M、n=1〜N）を収容し、パケット受信処理部901、検索処理部1000、大容量フローテーブル検索処理部902、大容量フローテーブル1200、高速フローテーブル1100、ルーティングテーブル903、パケット送信処理部904、制御部905から構成される1つ以上の回線カード2501_m（m=1〜M）と、前記1つ以上の回線カードを相互接続するクロスバースイッチ2502と、装置全体の制御を行う全体制御部2503から構成される。
【００９４】
パケット受信時の処理は、図９に示したルータ900の場合と同様である。ただし、検索処理部1000から検索結果情報を受信したパケット受信処理部901が、前記検索結果情報を付与したパケットデータを送信する送信先が、クロスバースイッチ2502である点が異なる。前記パケットデータを受信したクロスバースイッチ2502は、前記検索結果情報から出力回線番号を抽出し、前記出力回線番号に対応する回線を収容している回線カードを判定し、前記判定した回線カード内のパケット送信処理部904に前記パケットデータを送信する。以降の処理は、図９に示したルータ900の場合と同様である。
【実施例３】
【００９５】
図９、図２５に示したパケット転送装置とは別の構成例を、図２６を用いて説明する。図２６のルータ900は、大容量検索処理部を検索処理部2700に包含した例である。その他の構成および動作は、図２５のルータ900と同様である。図２７に、図２６で示したルータ900の検索処理部2700の一構成例を示す。検索処理部2700は、大容量フローテーブルを検索するための大容量フローテーブル検索処理部2701と、大容量フローテーブルのフローの登録処理、削除処理を行う大容量フロー登録・削除処理部2702を所持する点が図１０で示した検索処理部1000と異なる。
【００９６】
また、サンプル判定部1300から検索結果生成部1004へコピー指示の通知は行わず、その代わり、サンプル判定部1300のサンプル判定の結果、大容量フローテーブル検索を行うと判定した場合は、大容量フローテーブル検索処理指示を直接大容量フローテーブル検索処理部2701へ通知する点が異なる。前記検索処理指示を受信した大容量フローテーブル検索処理部2701は、ヘッダ情報蓄積部1001から受信したヘッダ情報から検索キーとして必要な情報を抽出して検索キーを生成し、大容量フローテーブル1200を検索し、統計情報を収集する。また、大容量フロー登録・削除処理部でのフロー登録処理、および削除処理は、前記のフロー登録・削除処理部1005のフロー登録処理および削除処理と同様の動作となる。
【実施例４】
【００９７】
図９、図２５、図２６に示したパケット転送装置とは別の構成例を、図２８を用いて説明する。図２８のルータ900は、回線カード2501_m（m=1〜M）とは別に、統計収集処理専用カード2800を所持する。前記統計収集処理専用カードは、回線カード2501_mとクロスバースイッチを介して相互接続される。統計収集処理専用カード2800は、大容量フローテーブル検索処理部902と大容量フローテーブル1200と、統計収集処理専用カード2800を制御する制御部2801から構成される。クロスバースイッチ2502は、実際には、専用ボード上に実現されており、該専用ボードは、統計収集処理専用カード2800を実装するためのカード接続手段（例えば、実装スロットなど）を備えている。
【００９８】
パケット受信時の処理は、図２５に示したルータ900の場合と同様である。ただし、検索処理部1000から検索結果情報コピーを受信したパケット受信処理部901が、前記検索情報コピーを付与したパケットデータを、クロスバースイッチ2502を経由して統計収集専用カード2800へ送信する点が異なる。以降の大容量フローテーブル検索処理は、図９で説明した動作と同様である。
【００９９】
図２８に示したルータ900は、統計収集専用カードを1つだけ所持しているが、複数の統計収集専用カードを所持してもよい。この場合、大容量フローテーブル検索指示を設定するフローエントリの検索結果に、前記複数の統計収集カードの1つを識別するカード番号を加えてもよい。前記カード番号を設定することにより、大容量フローテーブルを検索する複数フローのフローテーブル検索処理の負荷を、複数の統計収集処理専用カードの間で分散することが可能となる。また、フロー毎に前記統計収集処理専用カードのカード番号を設定せずに、別の方式で複数の統計収集処理専用カードに負荷分散を行ってもよい。負荷分散する方式としては、複数の統計収集専用カードを順番に選択する方式や、受信パケットのヘッダ情報から適当なハッシュ関数に従ってハッシュ値を計算し、前記ハッシュ値に基づいて統計収集専用カードを選択する方式などが考えられる。
【図面の簡単な説明】
【０１００】
【図１】本発明の統計収集方式を適用したルータで構成されたネットワークの一構成例を示す図。
【図２】図１で通信されるパケットの構造を示す図。
【図３】IPv4のヘッダ構造を示す図。
【図４】IPv6のヘッダ構造を示す図。
【図５】TCPのヘッダ構造を示す図。
【図６】UDPのヘッダ構造を示す図。
【図７】図１のルータR1で収集されるフロー統計のフロー条件の一構成例を示す図。
【図８】図１のルータR1で収集されるフロー統計の統計情報の一構成例を示す図。
【図９】本発明の統計収集方式を適用したルータの一構成例を示す図。
【図１０】本発明の統計収集方式を適用したルータ内の検索処理部の一構成例を示す図。
【図１１】本発明の統計収集方式を適用したルータ内の高速フローテーブルの一構成例を示す図。
【図１２】本発明の統計収集方式を適用したルータ内の大容量フローテーブルの一構成例を示す図。
【図１３】本発明の統計収集方式を適用したルータ内のサンプル判定部の一構成例を示す図。
【図１４】本発明の統計収集方式を適用したルータ内のサンプル判定部の別の構成例を示す図。
【図１５】図１４のサンプル判定部で用いる入力回線毎のパケット数カウンタテーブルの一構成例を示す図。
【図１６】図１４のサンプル判定部で用いる入力回線毎のサンプル間隔テーブルの一構成例を示す図。
【図１７】本発明の統計収集方式を適用したルータ内のサンプル判定部の別の構成例を示す図。
【図１８】図１７で示したサンプル判定方式で用いる高速フローテーブルの一構成例を示す図。
【図１９】本発明の統計収集方式を適用したルータ内のサンプル判定部の別の構成例を示す図。
【図２０】本発明の統計収集方式を適用したルータ内のサンプル判定部の別の構成例を示す図。
【図２１】図２０のサンプル判定部で用いる入力回線毎の乱数テーブルの一構成例を示す図。
【図２２】図２０のサンプル判定部で用いる入力回線毎の閾値テーブルの一構成例を示す図。
【図２３】本発明の統計収集方式を適用したルータ内のサンプル判定部の別の構成例を示す図。
【図２４】図２３で示したサンプル判定方式で用いる高速フローテーブルの一構成例を示す図。
【図２５】本発明の統計収集方式を適用したルータの別の構成例を示す図。
【図２６】本発明の統計収集方式を適用したルータの別の構成例を示す図。
【図２７】図２６で示したルータ内の検索処理部の一構成例を示す図。
【図２８】本発明の統計収集方式を適用したルータの別の構成例を示す図。
【図２９】本発明の統計収集装置が用いる統計情報通知パケットフォーマットの一構成例を示す図。
【図３０】本発明の統計収集方式の判定テーブルを設定するための管理コンソールを接続した概要図。
【図３１】本発明の統計収集方式の判定テーブルを設定するための管理コンソールを図３０とは別の方式で接続した概要図。
【符号の説明】
【０１０１】
S1．S2…サーバ、R1〜R3…ルータ、T1〜T4…端末、C_T1〜C_T4、C_R2、C_R3…回線番号、ICn、ICmn…入力回線番号、OCn、OCmn…出力回線番号、f1〜f5…フローエントリ番号、900…本発明のルータ、902…大容量検索処理部、903…ルーティングテーブル、1000…検索処理部、1002…高速フローテーブル検索処理部、1100…高速フローテーブル、1200…大容量フローテーブル、1300…サンプル判定部、2501_m…回線カード、2502…クロスバースイッチ、2800…統計収集処理専用カード。
【図１】
2005051736.tif 000003
【図２】
2005051736.tif 000004
【図３】
2005051736.tif 000005
【図４】
2005051736.tif 000006
【図５】
2005051736.tif 000007
【図６】
2005051736.tif 000008
【図７】
2005051736.tif 000009
【図８】
2005051736.tif 000010
【図９】
2005051736.tif 000011
【図１０】
2005051736.tif 000012
【図１１】
2005051736.tif 000013
【図１２】
2005051736.tif 000014
【図１３】
2005051736.tif 000015
【図１４】
2005051736.tif 000016
【図１５】
2005051736.tif 000017
【図１６】
2005051736.tif 000018
【図１７】
2005051736.tif 000019
【図１８】
2005051736.tif 000020
【図１９】
2005051736.tif 000021
【図２０】
2005051736.tif 000022
【図２１】
2005051736.tif 000023
【図２２】
2005051736.tif 000024
【図２３】
2005051736.tif 000025
【図２４】
2005051736.tif 000026
【図２５】
2005051736.tif 000027
【図２６】
2005051736.tif 000028
【図２７】
2005051736.tif 000029
【図２８】
2005051736.tif 000030
【図２９】
2005051736.tif 000031
【図３０】
2005051736.tif 000032
【図３１】
2005051736.tif 000033