(57)【要約】【課題】デバイスドライバレベルでパケットサンプリングを実施することにより、サンプリング時の処理負荷を抑制すると共に、コストの増加を抑制する。【解決手段】解析装置を用いて、トラヒックデータに対してパケットサンプリングを行なうパケットサンプリング方法であって、ＮＩＣにおいて、トラヒックデータを受信するステップＳ１と、Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定するステップＳ２と、受信したトラヒックデータのパケットを書き込むメモリを確保するステップＳ３と、確保したメモリに、受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込むステップＳ４と、書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するステップＳ５と、を含む。【選択図】図４
2011071603.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備えた解析装置を用いて、トラヒックデータに対してパケットサンプリングを行なうパケットサンプリング方法であって、
前記ＮＩＣにおいて、トラヒックデータを受信するステップと、
Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定するステップと、
前記受信したトラヒックデータのパケットを書き込むメモリを確保するステップと、
前記確保したメモリに、前記受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込むステップと、
前記書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するステップと、を少なくとも含むことを特徴とするパケットサンプリング方法。
【請求項２】
予め定められたメモリ量で書き込み可能なパケット数をＢパケット（Ｂは自然数）とし、
Ｂ≧Ｎの場合は、Ｂ／Ｎと２とのうち、大きい方の値に対応するパケット分のメモリを確保する一方、
Ｂ＜Ｎの場合は、２パケット分のメモリを確保することを特徴とする請求項１記載のパケットサンプリング方法。
【請求項３】
ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備えた解析装置に、トラヒックデータに対してパケットサンプリングを行なわせるプログラムであって、
前記ＮＩＣにおいて、トラヒックデータを受信する処理と、
Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定する処理と、
前記受信したトラヒックデータのパケットを書き込むメモリを確保する処理と、
前記確保したメモリに、前記受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込む処理と、
前記書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力する処理と、の一連の処理を、コンピュータに読み取り可能および実行可能にコマンド化したことを特徴とするプログラム。
【請求項４】
予め定められたメモリ量で書き込み可能なパケット数をＢパケット（Ｂは自然数）とし、
Ｂ≧Ｎの場合は、Ｂ／Ｎと２とのうち、大きい方の値に対応するパケット分のメモリを確保する一方、
Ｂ＜Ｎの場合は、２パケット分のメモリを確保することを特徴とする請求項３記載のプログラム。
【請求項５】
ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備え、トラヒックデータに対してパケットサンプリングを行なう解析装置であって、
前記ＮＩＣにおいて、トラヒックデータを受信し、
Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定し、
予め定められたメモリ量で書き込み可能なパケット数をＢパケット（Ｂは自然数）としたときに、Ｂ≧Ｎの場合は、Ｂ／Ｎと２とのうち、大きい方の値に対応するパケット分のメモリを確保する一方、Ｂ＜Ｎの場合は、２パケット分のメモリを確保し、
前記確保したメモリに、前記受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込み、
前記書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力することを特徴とする解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備えた解析装置を用いて、トラヒックデータに対してパケットサンプリングを行なう技術に関する。
【背景技術】
【０００２】
近年、エンドユーザ数の増加や、動画等の大容量マルチメディアコンテンツに代表されるアプリケーションの大容量化・多様化に伴い、ネットワークを流れるトラヒック量は同化の一途を辿っている。現在の一般的なバックボーントラヒックの回線速度は、１０Ｇｂｐｓであり、４０Ｇｂｐｓの回線も存在する。このため、ルータやスイッチなどの転送装置に負荷をかけずにトラヒックを監視するシステムが提案されている。ここで、安価で処理能力が高くない解析装置で全トラヒックデータをリアルタイムで取得して解析するのは、演算量および蓄積容量の観点から容易ではない。そこで、トラヒックデータを間引くサンプリング技術が必要とされる。従来は、実施が容易であることから、パケット単位で間引きを行なうパケットサンプリングが広く使用されている。パケットサンプリングには、様々な方法が提案されており、例えば、カウントベースサンプリング、時間ベースサンプリングが知られている。
【０００３】
非特許文献１に記載されている技術では、パケットサンプリングによって間引かれた後のパケット群に対して、フローベース解析技術を適用する。また、非特許文献２に記載されている技術では、抽出したパケット情報を、ｓＦｌｏｗデータグラムとして生成する。非特許文献２記載の技術に関しては、ソフトウェアベースでパケットサンプリングを実施するためのプログラムが公開されており、各種プラットフォーム上においてコンパイルすることで実現が可能である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Sampled NetFlow,http://www.cisco.com/en/US/docs/ios/12_0s/feature/guide/12s_sanf.html
【非特許文献２】sFlow, http://www.sflow.org/
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記各文献に記載されている技術では、専用機器を用いるため、コストが高くなってしまう。特に、トラヒック監視を多数の拠点で実施する場合、多数の専用装置が必要となるため、高コストが問題となる。また、非特許文献２記載のソフトウェアの場合、ソケットを通じてパケットを読み込むため、全パケットがユーザランドまで到達することとなる。すなわち、サンプリング対象となるパケットであるか否かに関わらず、全パケットの受信処理が行なわれるため、パケット数に比例したＣＰＵおよびメモリリソースが費やされることとなる。これは、例えば、１０Ｇｂｐｓ以上の高速回線ＮＩＣなどでは深刻な問題となる。また、リソース枯渇によるパケットロスは予測できないため、後の統計解析処理に影響を及ぼす可能性もある。
【０００６】
本発明は、このような事情に鑑みてなされたものであり、デバイスドライバレベルでパケットサンプリングを実施することにより、サンプリング時の処理負荷を抑制すると共に、コストの増加を抑制することができるパケットサンプリング方法、プログラムおよび解析装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
（１）上記の目的を達成するために、本発明は、以下のような手段を講じた。すなわち、本発明のパケットサンプリング方法は、ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備えた解析装置を用いて、トラヒックデータに対してパケットサンプリングを行なうパケットサンプリング方法であって、前記ＮＩＣにおいて、トラヒックデータを受信するステップと、Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定するステップと、前記受信したトラヒックデータのパケットを書き込むメモリを確保するステップと、前記確保したメモリに、前記受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込むステップと、前記書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するステップと、を少なくとも含むことを特徴とする。
【０００８】
このように、メモリに、受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込み、その書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するので、１／Ｎのレートのパケットサンプリングが可能となると共に、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、サンプリング時の処理負荷を抑制すると共に、コストの増加を抑制することが可能となる。
【０００９】
（２）また、本発明のパケットサンプリング方法において、予め定められたメモリ量で書き込み可能なパケット数をＢパケット（Ｂは自然数）とし、Ｂ≧Ｎの場合は、Ｂ／Ｎと２とのうち、大きい方の値に対応するパケット分のメモリを確保する一方、Ｂ＜Ｎの場合は、２パケット分のメモリを確保することを特徴とする。
【００１０】
この構成により、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、コストの増加を抑制することが可能となる。
【００１１】
（３）また、本発明のプログラムは、ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備えた解析装置に、トラヒックデータに対してパケットサンプリングを行なわせるプログラムであって、前記ＮＩＣにおいて、トラヒックデータを受信する処理と、Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定する処理と、前記受信したトラヒックデータのパケットを書き込むメモリを確保する処理と、前記確保したメモリに、前記受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込む処理と、前記書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力する処理と、の一連の処理を、コンピュータに読み取り可能および実行可能にコマンド化したことを特徴とする。
【００１２】
このように、メモリに、受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込み、その書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するので、１／Ｎのレートのパケットサンプリングが可能となると共に、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、サンプリング時の処理負荷を抑制すると共に、コストの増加を抑制することが可能となる。
【００１３】
（４）また、本発明のプログラムにおいて、予め定められたメモリ量で書き込み可能なパケット数をＢパケット（Ｂは自然数）とし、Ｂ≧Ｎの場合は、Ｂ／Ｎと２とのうち、大きい方の値に対応するパケット分のメモリを確保する一方、Ｂ＜Ｎの場合は、２パケット分のメモリを確保することを特徴とする。
【００１４】
この構成により、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、コストの増加を抑制することが可能となる。
【００１５】
（５）また、本発明の解析装置は、ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備え、トラヒックデータに対してパケットサンプリングを行なう解析装置であって、前記ＮＩＣにおいて、トラヒックデータを受信し、Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定し、予め定められたメモリ量で書き込み可能なパケット数をＢパケット（Ｂは自然数）としたときに、Ｂ≧Ｎの場合は、Ｂ／Ｎと２とのうち、大きい方の値に対応するパケット分のメモリを確保する一方、Ｂ＜Ｎの場合は、２パケット分のメモリを確保し、前記確保したメモリに、前記受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込み、前記書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力することを特徴とする。
【００１６】
このように、メモリに、受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込み、その書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するので、１／Ｎのレートのパケットサンプリングが可能となると共に、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、サンプリング時の処理負荷を抑制すると共に、コストの増加を抑制することが可能となる。
【発明の効果】
【００１７】
本発明によれば、メモリに、受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込み、その書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するので、１／Ｎのレートのパケットサンプリングが可能となると共に、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、サンプリング時の処理負荷を抑制すると共に、コストの増加を抑制することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態に係るパケットサンプリングシステムの概略構成を示す図である。
【図２】ＮＩＣとデバイスドライバとに共通するメモリ状態を示す図である。
【図３】ＮＩＣとデバイスドライバとに共通するメモリ状態を示す図である。
【図４】本実施形態に係るパケットサンプリング方法を示すフローチャートである。
【発明を実施するための形態】
【００１９】
本実施形態では、デバイスドライバを書き換えるためのソースコードが提供されており、また、ＤＭＡ機能を有し、デバイスドライバで受信パケット毎に転送先ホストメモリアドレスを制御可能なＮＩＣを用いる。監視対象となる回線が高速になればなるほど、アプリケーションレベルで全パケットを処理することが困難となる。従来は、この処理をするためには高価な専用装置を必要としていたが、本実施形態では、安価な汎用プラットフォーム上でパケットサンプリングを可能とする。
【００２０】
本実施形態に係るパケットサンプリング方法は、受信したすべてのパケットではなく、Ｎ（Ｎは自然数）パケット毎に１パケットをユーザランドに転送する。これにより、ＣＰＵおよびメモリリソースの削減を図る。以下、本実施形態について、図面を参照しながら説明する。
【００２１】
図１は、本実施形態に係るパケットサンプリングシステムの概略構成を示す図である。ネットワークである網Ａには、転送装置Ａ１、Ａ２が設けられている。転送装置Ａ１、Ａ２は、例えば、ルータやスイッチで構成することができる。網Ｂ〜網Ｄも同様の構成を取る。網Ａと網Ｂとの間には、タップ１０ＡＢが設けられており、パケットがタップＡＢから解析装置２０ａに転送されるように構成されている。同様に、網Ａと網Ｃとの間には、タップ１０ＡＣが設けられ、網Ｂと網Ｄとの間には、タップ１０ＢＤが設けられ、網Ｃと網Ｄとの間には、タップ１０ＣＤが設けられている。そして、各タップ１０ＡＣ、１０ＢＤ、１０ＣＤからそれぞれの解析装置２０ｂ、２０ｃ、２０ｄにパケットが転送される。
【００２２】
図１に示すように、監視対象となる回線にタップ（ＡＢ等）を設置し、トラヒックモニタを可能な状態に構成する。また、解析装置（２０ａ等）として、汎用ＰＣ、汎用ＯＳ、汎用ＮＩＣを備えた解析装置を複数用意して、複数の箇所に設置する。各解析装置（２０ａ等）は、本実施形態に係るパケットサンプリング方法を用いて、トラヒックを常時監視する。
【００２３】
解析装置２０ａは、ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備えている。タップ１０ＡＢからパケットを受信すると、図２に示すように、ＮＩＣからホストへパケットの転送を行なう。まず、解析装置２０ａのデバイスドライバは、予め複数のＢｕｆｆｅｒ−ＢＤ（Buffer Descriptor）組を用意し、Ｆｒｅｅ  ＢＤ  Ｑｕｅｕｅとして登録しておく。ＮＩＣは、各ＢＤにＰＣＩバスを介してアクセス可能であり、ＤＭＡ転送範囲としてＢａｄｄｒとＢｌｅｎを設定する。
【００２４】
パケットが到着すると、ＮＩＣは、Ｆｒｅｅ  ＢＤ  ＱｕｅｕｅからＢＤを読み出して、受信パケット転送先を決定し、対応するＢｕｆｆｅｒにパケットを送出する。ここで、Ｂｌｅｎは、パケットサイズに更新される。次に、ＤＭＡ転送が完了すると、ＮＩＣは、Ｆｒｅｅ  ＢＤ  ＱｕｅｕｅからＲｅｃｅｉｖｅ  ＢＤ  ＱｕｅｕｅにＢＤを移動し、ホスト側のデバイスドライバに処理を促すために、受信割り込みをかける。次に、ホスト側からＲｅｃｅｉｖｅ  ＢＤ  Ｑｕｅｕｅで参照されているパケットをユーザ空間へコピーし、チェックサム等のヘッダ解析を行なう。次に、本実施形態に係るパケットサンプリング方法について説明する。
【００２５】
図３は、ＮＩＣとデバイスドライバとに共通するメモリ状態を示す図であり、図４は、本実施形態に係るパケットサンプリング方法を示すフローチャートである。まず、解析装置２０ａが備えるＮＩＣでタップ１０ＡＢから転送されるトラヒックデータを受信する（ステップＳ１）。次に、Ｎパケット毎に１パケットをサンプルとして抽出するサンプリングレートを決定する（ステップＳ２）。次に、サンプリング処理に先立って、通常の動作で確保されるメモリ量を、Ｂ（Ｂは自然数）とし、Ｂ≧Ｎである場合は、ＭＡＸ（Ｂ／Ｎ、２）パケット分のメモリを確保する。一方、Ｂ＜Ｎである場合は、２パケット分のメモリを確保する（ステップＳ３）。
【００２６】
次に、Ｆｒｅｅ  ＢＤ  ＱｕｅｕｅのＢＤに対して、Ｎパケットずつ連続で同じメモリアドレスにパケットを受信するように、Ｂａｄｄｒの値を記載する（ステップＳ４）。これにより、Ｎの倍数番目のＢＤと、その次のＢＤは、別のメモリアドレスを表わすこととなり、それ以外の連続する２つのＢＤは、同じメモリアドレスを表わすこととなる。次に、Ｒｅｃｅｉｖｅ  ＢＤ  ＱｕｅｕｅのＢＤを順次読み込み、連続する２つのＢＤが示すメモリアドレスが異なっている場合、先に受信したパケットのみを出力し、割り込み処理の対象とする（ステップＳ５）。
【００２７】
以上説明したように、本実施形態に係るパケットサンプリング方法によれば、デバイスドライバレベルでのパケットサンプリングが可能となるため、汎用プラットフォーム上で使用するＣＰＵやメモリのリソースを少なくすることが可能となる。
【００２８】
なお、以上のような本発明の特徴的な動作は、コンピュータにプログラムを実行することによって実現することができる。すなわち、本実施形態に係るプログラムは、ＤＭＡ（Direct Memory Access）機能を有し、デバイスドライバによって受信パケット毎に転送先ホストメモリアドレスを制御するＮＩＣ（Network Interface Card）を備えた解析装置に、トラヒックデータに対してパケットサンプリングを行なわせるプログラムであって、前記ＮＩＣにおいて、トラヒックデータを受信する処理と、Ｎ（Ｎは自然数）パケット毎に１パケットをサンプリングするサンプリングレートを決定する処理と、前記受信したトラヒックデータのパケットを書き込むメモリを確保する処理と、前記確保したメモリに、前記受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込む処理と、前記書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力する処理と、の一連の処理を、コンピュータに読み取り可能および実行可能にコマンド化したことを特徴とする。
【００２９】
このように、メモリに、受信したトラヒックデータのパケットを、Ｎパケットずつ連続で同じメモリアドレスに書き込み、その書き込んだパケットを順次読み込み、連続する２つのパケットのメモリアドレスが異なる場合に、先に受信したパケットのみを出力するので、１／Ｎのレートのパケットサンプリングが可能となると共に、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、サンプリング時の処理負荷を抑制すると共に、コストの増加を抑制することが可能となる。
【００３０】
また、本実施形態に係るプログラムにおいて、予め定められたメモリ量で書き込み可能なパケット数をＢパケット（Ｂは自然数）とし、Ｂ≧Ｎの場合は、Ｂ／Ｎと２とのうち、大きい方の値に対応するパケット分のメモリを確保する一方、Ｂ＜Ｎの場合は、２パケット分のメモリを確保することを特徴とする。
【００３１】
この構成により、パケットを書き込むために確保すべきメモリのリソースを少なくすることが可能となる。その結果、コストの増加を抑制することが可能となる。
【符号の説明】
【００３２】
１０ＡＢ  タップ
１０ＡＣ  タップ
１０ＢＤ  タップ
１０ＣＤ  タップ
２０ａ  解析装置
２０ｂ  解析装置
２０ｃ  解析装置
２０ｄ  解析装置
Ａ１、Ａ２  転送装置
Ｂ１、Ｂ２  転送装置
Ｃ１、Ｃ２  転送装置
Ｄ１、Ｄ２  転送装置
【図１】
2011071603.tif 000003
【図２】
2011071603.tif 000004
【図３】
2011071603.tif 000005
【図４】
2011071603.tif 000006