(57)【特許請求の範囲】
【請求項１】
通信ネットワークと接続された通信インタフェース装置を備え、前記通信インタフェース装置で受信されたパケット内の先頭に在るヘッダ情報を収集するパケット情報収集装置であって、
前記通信インタフェース装置からアクセス可能なメモリ上に設けられたバッファと、
前記メモリ上に設けられ、前記バッファ内の特定の記憶領域を示すバッファ情報記述子を記憶する記述子記憶手段と、
前記バッファ情報記述子により前記パケットの格納先を指定する制御手段とを具備し、
前記制御手段は、一つの前記バッファに対して複数の前記バッファ情報記述子を生成し、
前記バッファ情報記述子は、前記バッファ内に前記パケットを書き込むときの先頭アドレスを有し、
前記複数のバッファ情報記述子のそれぞれの前記先頭アドレスは、前記ヘッダ情報の大きさ又は前記ヘッダ情報に付加情報を加えた大きさだけ順次ずらしてあり、
前記制御手段は、前記先頭アドレスの順番で前記複数のバッファ情報記述子を前記記述子記憶手段へ格納し、
前記通信インタフェース装置は、パケットを受信する度に、前記記述子記憶手段からバッファ情報記述子を順次読み出し、ＤＭＡ転送により、前記読み出したバッファ情報記述子の先頭アドレスから受信パケットを上書きする、
ことを特徴とするパケット情報収集装置。
【請求項２】
前記バッファに蓄積された前記ヘッダ情報を含む転送用パケットを生成する転送パケット生成手段
を具備することを特徴とする請求項１に記載のパケット情報収集装置。
【請求項３】
前記転送パケット生成手段は、
前記転送用パケットのヘッダ用テンプレートを予め保持する
ことを特徴とする請求項２に記載のパケット情報収集装置。
【請求項４】
予め設定された複数の転送先へ、前記転送用パケットにより前記ヘッダ情報を転送する
ことを特徴とする請求項２または請求項３に記載のパケット情報収集装置。
【請求項５】
通信ネットワークと接続された通信インタフェース装置を備え、前記通信インタフェース装置で受信されたパケット内の先頭に在るヘッダ情報を収集するパケット情報収集装置におけるパケット情報収集方法であって、
前記通信インタフェース装置からアクセス可能なメモリ上に設けられたバッファ内の特定の記憶領域を示すバッファ情報記述子を、一つの前記バッファに対して複数生成する過程を含み、
前記バッファ情報記述子は、前記バッファ内に前記パケットを書き込むときの先頭アドレスを有し、
前記複数のバッファ情報記述子のそれぞれの前記先頭アドレスは、前記ヘッダ情報の大きさ又は前記ヘッダ情報に付加情報を加えた大きさだけ順次ずらしてあり、
前記先頭アドレスの順番で前記複数のバッファ情報記述子を記述子記憶手段へ格納する過程と、
前記通信インタフェース装置が、パケットを受信する度に、前記記述子記憶手段からバッファ情報記述子を順次読み出し、ＤＭＡ転送により、前記読み出したバッファ情報記述子の先頭アドレスから受信パケットを上書きする過程と、
をさらに含むことを特徴とするパケット情報収集方法。
【請求項６】
前記バッファに蓄積された前記ヘッダ情報を含む転送用パケットを生成する過程
をさらに含むことを特徴とする請求項５に記載のパケット情報収集方法。
【請求項７】
通信ネットワークと接続された通信インタフェース装置を備え、前記通信インタフェース装置で受信されたパケット内の先頭に在るヘッダ情報を収集するパケット情報収集装置におけるパケット情報収集処理を行うためのパケット情報収集プログラムであって、
前記通信インタフェース装置からアクセス可能なメモリ上に設けられたバッファ内の特定の記憶領域を示すバッファ情報記述子を、一つの前記バッファに対して複数生成する処理をコンピュータに実行させるものであり、
前記バッファ情報記述子は、前記バッファ内に前記パケットを書き込むときの先頭アドレスを有し、
前記複数のバッファ情報記述子のそれぞれの前記先頭アドレスは、前記ヘッダ情報の大きさ又は前記ヘッダ情報に付加情報を加えた大きさだけ順次ずらしてあり、
前記先頭アドレスの順番で前記複数のバッファ情報記述子を記述子記憶手段へ格納する処理と、
前記通信インタフェース装置が、パケットを受信する度に、前記記述子記憶手段からバッファ情報記述子を順次読み出し、ＤＭＡ転送により、前記読み出したバッファ情報記述子の先頭アドレスから受信パケットを上書きする処理と、
をさらにコンピュータに実行させることを特徴とするパケット情報収集プログラム。
【請求項８】
前記バッファに蓄積された前記ヘッダ情報を含む転送用パケットを生成する処理
をさらにコンピュータに実行させることを特徴とする請求項７に記載のパケット情報収集プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケットを伝送する通信ネットワーク内のトラヒックを監視するネットワークモニタ装置等に用いて好適なパケット情報収集装置及びその方法に関する。
【０００２】
【従来の技術】
パケットを伝送する通信ネットワークにおいては、ネットワークの保守・運用を円滑に行うために、ネットワーク管理者によりネットワークモニタ装置を利用してトラヒック状況を把握することがなされている。このネットワークモニタ装置は、通信ネットワーク内で伝送されるパケットに係るパケット情報（パケットの全情報、あるいはパケットに含まれるヘッダ情報等）を収集し、この収集したパケット情報に基づいてトラヒック状況を示す情報を生成する。
【０００３】
このようなネットワークモニタ装置が、従来から、パーソナルコンピュータを用いて実現されている。例えば、パーソナルコンピュータ上で実行されるオペレーティングシステム（OS）固有の機能を利用してパケット情報を収集するものが知られている。これは、OSが有するBPF(Berkley Packet Filter)と呼ばれるパケット情報収集機能を利用するものである。
【０００４】
BPFでは、アプリケーション（例えば、ネットワークモニタアプリケーション）毎に、パケット選別フィルタとバッファを用意する。そして、通信ネットワークと接続する通信ボード（通信インタフェース装置）を介してパケットが受信されると、パケット選別フィルタで選別されたパケットのパケット情報をバッファにコピーして蓄積する。次いで、バッファに蓄積された複数のパケット情報をアプリケーション部へ提供する。
【０００５】
このように、ネットワークモニタ装置となるパーソナルコンピュータ（ホスト装置）において、OSおよびアプリケーションを実行するホストCPUが、パケット情報をホストメモリ内のバッファにコピーすることによって、従来のパケット情報収集装置が実現されている。
【０００６】
【発明が解決しようとする課題】
しかし、上述した従来のパケット情報収集装置では、該装置を備えるホスト装置において、OSおよびアプリケーションを実行するホストCPUがパケット情報をホストメモリ内のバッファにコピーするので、ホストCPUにかかる負荷が大きく、この結果、パケット情報の収集に対応することができなくなる虞がある。
【０００７】
また、パケット情報を収集するホスト装置とは異なる装置で、パケット情報を処理したいという要望がある。しかしながら、従来のパケット情報収集装置では、ホスト装置のOSが直にアプリケーション部へパケット情報を提供するので、他の装置ではパケット情報を処理することができないという問題もある。
【０００８】
本発明は、このような事情を考慮してなされたもので、その目的は、通信ネットワークからパケットを受信してパケット情報を収集する際に、ホストCPUにかかる負荷を軽減することができるパケット情報収集装置及びその方法を提供することにある。また、本発明は、そのパケット情報収集装置をコンピュータを利用して実現するためのパケット情報収集プログラムを提供することも目的としている。
【０００９】
また、本発明は、パケット情報を収集するホスト装置とは異なる装置へ、その収集したパケット情報を転送することができるパケット情報収集装置及びその方法を提供することも目的とする。また、本発明は、そのパケット情報収集装置をコンピュータを利用して実現するためのパケット情報収集プログラムを提供することも目的とする。
【００１０】
【課題を解決するための手段】
上記の課題を解決するために、請求項１に記載のパケット情報収集装置は、通信ネットワークと接続された通信インタフェース装置を備え、前記通信インタフェース装置で受信されたパケット内の先頭に在るヘッダ情報を収集するパケット情報収集装置であって、前記通信インタフェース装置からアクセス可能なメモリ上に設けられたバッファと、前記メモリ上に設けられ、前記バッファ内の特定の記憶領域を示すバッファ情報記述子を記憶する記述子記憶手段と、前記バッファ情報記述子により前記パケットの格納先を指定する制御手段とを具備し、前記制御手段は、一つの前記バッファに対して複数の前記バッファ情報記述子を生成し、前記バッファ情報記述子は、前記バッファ内に前記パケットを書き込むときの先頭アドレスを有し、前記複数のバッファ情報記述子のそれぞれの前記先頭アドレスは、前記ヘッダ情報の大きさ又は前記ヘッダ情報に付加情報を加えた大きさだけ順次ずらしてあり、前記制御手段は、前記先頭アドレスの順番で前記複数のバッファ情報記述子を前記記述子記憶手段へ格納し、前記通信インタフェース装置は、パケットを受信する度に、前記記述子記憶手段からバッファ情報記述子を順次読み出し、ＤＭＡ転送により、前記読み出したバッファ情報記述子の先頭アドレスから受信パケットを上書きする、ことを特徴としている。
【００１３】
請求項２に記載のパケット情報収集装置は、前記バッファに蓄積された前記ヘッダ情報を含む転送用パケットを生成する転送パケット生成手段を具備することを特徴とする。
【００１４】
請求項５に記載のパケット情報収集装置は、前記転送パケット生成手段は、前記転送用パケットのヘッダ用テンプレートを予め保持することを特徴とする。
【００１５】
請求項４に記載のパケット情報収集装置は、予め設定された複数の転送先へ、前記転送用パケットにより前記ヘッダ情報を転送することを特徴とする。
【００１７】
請求項５に記載のパケット情報収集方法は、通信ネットワークと接続された通信インタフェース装置を備え、前記通信インタフェース装置で受信されたパケット内の先頭に在るヘッダ情報を収集するパケット情報収集装置におけるパケット情報収集方法であって、前記通信インタフェース装置からアクセス可能なメモリ上に設けられたバッファ内の特定の記憶領域を示すバッファ情報記述子を、一つの前記バッファに対して複数生成する過程を含み、前記バッファ情報記述子は、前記バッファ内に前記パケットを書き込むときの先頭アドレスを有し、前記複数のバッファ情報記述子のそれぞれの前記先頭アドレスは、前記ヘッダ情報の大きさ又は前記ヘッダ情報に付加情報を加えた大きさだけ順次ずらしてあり、前記先頭アドレスの順番で前記複数のバッファ情報記述子を記述子記憶手段へ格納する過程と、前記通信インタフェース装置が、パケットを受信する度に、前記記述子記憶手段からバッファ情報記述子を順次読み出し、ＤＭＡ転送により、前記読み出したバッファ情報記述子の先頭アドレスから受信パケットを上書きする過程と、をさらに含むことを特徴としている。
【００２０】
請求項６に記載のパケット情報収集方法は、前記バッファに蓄積された前記ヘッダ情報を含む転送用パケットを生成する過程をさらに含むことを特徴とする。
【００２１】
請求項７に記載のパケット情報収集プログラムは、通信ネットワークと接続された通信インタフェース装置を備え、前記通信インタフェース装置で受信されたパケット内の先頭に在るヘッダ情報を収集するパケット情報収集装置におけるパケット情報収集処理を行うためのパケット情報収集プログラムであって、前記通信インタフェース装置からアクセス可能なメモリ上に設けられたバッファ内の特定の記憶領域を示すバッファ情報記述子を、一つの前記バッファに対して複数生成する処理をコンピュータに実行させるものであり、前記バッファ情報記述子は、前記バッファ内に前記パケットを書き込むときの先頭アドレスを有し、前記複数のバッファ情報記述子のそれぞれの前記先頭アドレスは、前記ヘッダ情報の大きさ又は前記ヘッダ情報に付加情報を加えた大きさだけ順次ずらしてあり、前記先頭アドレスの順番で前記複数のバッファ情報記述子を記述子記憶手段へ格納する処理と、前記通信インタフェース装置が、パケットを受信する度に、前記記述子記憶手段からバッファ情報記述子を順次読み出し、ＤＭＡ転送により、前記読み出したバッファ情報記述子の先頭アドレスから受信パケットを上書きする処理と、をさらにコンピュータに実行させることを特徴としている。
【００２４】
請求項８に記載のパケット情報収集プログラムは、前記バッファに蓄積された前記ヘッダ情報を含む転送用パケットを生成する処理をさらにコンピュータに実行させることを特徴とする。
これらパケット情報収集プログラムにより、前述のパケット情報収集装置がコンピュータを利用して実現できるようになる。
【００２５】
【発明の実施の形態】
以下、図面を参照し、本発明の一実施形態について説明する。
図１は、本発明の一実施形態によるパケット情報収集装置を用いた通信ネットワーク監視システムの構成例を示すブロック図である。この図１において、符号１はパケット情報収集機能を備えたホスト装置であって、本実施形態においてはこのホスト装置１がパケット情報収集装置として機能する。符号２はパケット４１を伝送する通信ネットワークであって、この通信ネットワーク２はホスト装置１と接続されている。
【００２６】
また、通信ネットワーク２は、モニタ対象の通信ネットワークである。ホスト装置１は、通信ネットワーク２内の光ファイバ３１上を流れるパケット４１を光分岐器３２を介して取得し、そのパケット情報（パケットに含まれるヘッダ情報）を収集する。
【００２７】
符号３は通信ネットワーク４を介してホスト装置１と接続されるリモートホスト装置である。ホスト装置１は、通信ネットワーク４を介して複数のリモートホスト装置３と接続することが可能である。
【００２８】
ホスト装置１は、パーソナルコンピュータ等のコンピュータにより実現されるものであって、オペレーティングシステム（OS）やアプリケーション等のプログラムを実行する処理装置（ホストCPU）と、それらプログラムおよび各種データを記憶する記憶装置（ホストメモリ）と、通信インタフェース装置等の周辺ハードウェアなどから構成される。但し、図１に示すホスト装置１においては、便宜上、ホスト装置１が有する機能についてのブロック構成を示している。
【００２９】
図１のホスト装置１は、OSの中核機能であるカーネル部と、各種アプリケーション機能からなるアプリケーション部と、外部との通信機能を司る通信インタフェース部とを有する。通信インタフェース部は、通信ネットワーク２に接続されて該通信ネットワーク２との間でパケットの授受を行う通信インタフェース装置（通信ボード）１１と、通信ネットワーク４に接続されて該通信ネットワーク４との間でパケットの授受を行う通信ボード１２とを備える。通信ボード１１はダイレクトメモリアクセス（ＤＭＡ）機能を有するＤＭＡ部２５を備えている。このＤＭＡ部２５により、通信ボード１１とホストメモリの間で、ホストCPUを介さずにデータ転送が可能である。また、通信ボード１１は、通信ネットワーク２内の構成に応じて複数が具備される。
【００３０】
カーネル部は、通信ボード１１の駆動制御用のデバイスドライバ部１３と、通信ボード１２の駆動制御用のデバイスドライバ部１４と、ＵＤＰ（User Datagram Protocol）およびＩＰ（Internet Protocol）に基づいたパケット処理を行うＵＤＰ／ＩＰ部１６と、アプリケーション部とのインタフェース機能を有するソケット部１７とを備える。
【００３１】
デバイスドライバ部１３は、通信ボード１１で受信されたパケット４１のヘッダ情報を収集するパケット情報収集部１５を備えている。このパケット情報収集部１５は、ヘッダ情報の収集動作を制御する制御部２１と、ヘッダ情報を蓄積するバッファ部２２と、バッファ部２２におけるヘッダ情報の蓄積先アドレス等を格納するＢＤキュー部２３と、バッファ部２２に蓄積されたヘッダ情報群である抽出ヘッダ群４２をアプリケーション部あるいはリモートホスト装置３へ転送するために、該抽出ヘッダ群４２を含む抽出ヘッダ転送パケット４３を生成する転送パケット生成部２４とから構成される。バッファ部２２およびＢＤキュー部２３は、通信ボード１１からアクセス可能なホストメモリ上に設けられている。
【００３２】
アプリケーション部は、ネットワークモニタアプリケーション１８を備える。
このネットワークモニタアプリケーション１８により、ホスト装置１は、ネットワークモニタ装置としても機能する。ネットワークモニタアプリケーション１８は、パケット情報収集部１５から取得した抽出ヘッダ群４２に基づいて、通信ネットワーク２のトラヒック状況を示す情報を生成する。
【００３３】
なお、上記ホスト装置１においては、通信ボード１１とパケット情報収集部１５が本実施形態のパケット情報収集装置に対応する。また、ＢＤキュー部２３が記述子記憶手段に対応する。
【００３４】
また、リモートホスト装置３は、ホスト装置１と同様の構成であるが、パケット情報収集機能については具備せず、ホスト装置１から転送された抽出ヘッダ群４２に基づいて、通信ネットワーク２のトラヒック状況を示す情報を生成する。
【００３５】
次に、図１のホスト装置１がパケット情報を収集する動作を説明する。初めに、本実施形態のパケット情報収集処理の概要を説明する。ホスト装置１において、ＤＭＡ部２５は、通信ネットワーク２と接続された通信ボード１１で受信されたパケット４１をホストメモリ上のバッファ部２２の１つのバッファへ書き込む。この書き込みはホストCPUを介さずに行われる。そして、その書き込みの際に、バッファ部２２内の１つのバッファ上で、パケット４１の非ヘッダ部分の書き込み済み領域については他のパケット４１のヘッダ部分を上書きすることにより、複数のパケット４１のヘッダ部分のみを順次蓄積していく。これにより、１つのバッファ上において、複数のパケットのヘッダ情報が抽出されることになる。
【００３６】
以下、図２〜図４を参照して、通信ネットワーク２から受信されたパケット４１をバッファ部２２のバッファに書き込む処理について説明する。図２は、図１に示すＢＤキュー部２３の構成を示すブロック図である。この図２に示すように、ＢＤキュー部２３は、バッファ情報記述子（BD；Buffer Descriptor）を保持するための未使用ＢＤキュー５１と使用済ＢＤキュー５２を有している。バッファ情報記述子（BD）は、バッファ部２２内の特定のバッファについての物理アドレス(Baddr)や長さ情報(Blen)等の管理情報を保持するものである。したがって、バッファ情報記述子（BD）は、自己に記述された物理アドレス(Baddr)によって示されるメモリ領域を含むバッファに関連付けられたものとなる。
【００３７】
未使用ＢＤキュー５１は、未使用のバッファ情報記述子（BD）を保持するものである。未使用のバッファ情報記述子（BD）とは、該バッファ情報記述子（BD）の物理アドレス(Baddr)が示すバッファ内メモリ領域に、ヘッダ情報が未書き込みであるものを指す。使用済ＢＤキュー５２は、使用済みのバッファ情報記述子（BD）を保持するものである。使用済みのバッファ情報記述子（BD）とは、該バッファ情報記述子（BD）の物理アドレス(Baddr)が示すバッファ内メモリ領域に、ヘッダ情報が書き込み済みであるものを指す。これらキュー５１，５２は、ＦＩＦＯ（先入れ先だし）方式のバッファにより構成される。
【００３８】
初めに、パケット情報収集部１５の制御部２１は、予め、ホストメモリ上の連続的なメモリ領域をバッファ部２２の１つのバッファの使用領域として割当て、このバッファを複数用意する。また、制御部２１は、各バッファについての物理アドレス(Baddr)や長さ情報(Blen)等の管理情報を記述したバッファ情報記述子（BD）を作成して未使用ＢＤキュー５１へ書き込む。なお、各キュー５１，５２およびバッファは、通信ボード１１からアクセス可能なホストメモリ上のメモリ領域に設けられる。
【００３９】
通信ボード１１は、通信ネットワーク２からパケット４１を受信すると、未使用ＢＤキュー５１からバッファ情報記述子（BD）を読み出す。次いで、ＤＭＡ部２５が、この読み出したバッファ情報記述子（BD）の物理アドレス(Baddr)に従って、該バッファ情報記述子（BD）に関連づけられているバッファに、受信パケットをＤＭＡ転送して書き込む。この受信パケットの書き込みが完了すると、通信ボード１１は、該使用したバッファ情報記述子（BD）を使用済ＢＤキュー５２へ書き込む。
【００４０】
また、通信ボード１１は、適宜、受信割り込みを発生し、制御部２１に対してパケット受信処理を行うように促す。制御部２１は、この受信割り込みを受け取ると、使用済ＢＤキュー５２からバッファ情報記述子（BD）を読み出して、このバッファ情報記述子（BD）に関連付けられているバッファに格納済みのヘッダ情報を、ネットワークモニタアプリケーション１８あるいはリモートホスト装置３へ提供するための転送処理を行うか否かを判断する。制御部２１は、１バッファ分の書き込みが完了していた場合に、該転送処理を実行する。
【００４１】
なお、上述した実施形態においては、ＦＩＦＯ方式のバッファにより、未使用ＢＤキュー５１および使用済ＢＤキュー５２を構成するようにしたが、図６に示すように、バッファ情報記述子（BD）を連結したChained BD Queue Structureと呼ばれるデータ転送インタフェースを用いるようにしてもよい。この方式は、未使用ＢＤキューと使用済ＢＤキューをマージし、バッファ情報記述子（BD）が未使用のものであるか、あるいは使用済みのものであるかを識別するためのフラグ(Own)を、バッファ情報記述子（BD）内に設けたものである。
【００４２】
次に、図３、図４を参照して、バッファ部２２内の１つのバッファ上に、複数のパケット４１のヘッダ部分のみを抽出する処理を説明する。図３は、バッファ部２２内のバッファ６１におけるメモリ領域の構成を示す図である。図４は、バッファ６１上に複数のパケット４１のパケット情報（ヘッダ）を抽出する処理を説明するための図である。
【００４３】
先ず、制御部２１は、バッファ部２２の各バッファ６１についてのバッファ情報記述子（BD）を生成する際、各バッファ６１に対して、複数のバッファ情報記述子（BD_i；iは1≦i≦mを満たす整数)を生成する。ここで、制御部２１は、各バッファ情報記述子（BDi)の物理アドレス(Baddr_i)を（１），（２）式に従って設定する。
【００４４】
Baddr_1＝Baddr_start＋HLEN＋CLEN  ・・・（１）
Baddr_i＝Baddr_(i-1)＋NLEN＋CLEN  ・・・（２）
但し、（２）式においては、iは２以上の整数である。Baddr_startはバッファ６１の先頭の物理アドレスである。また、HLENは抽出したヘッダ情報群（抽出ヘッダ群４２）を、ネットワークモニタアプリケーション１８あるいはリモートホスト装置３へ転送するために付加する転送用ヘッダの長さである。CLENはパケット４１から抽出したヘッダに対して個々に付加する制御情報の長さである。NLENはパケット４１から抽出するヘッダの長さである。
【００４５】
また、制御部２１は、長さ情報(Blen)に、通信ネットワーク２から受信するパケット４１の最大長に合わせた固定長を設定する。例えば、通信ネットワーク２にイーサネット（登録商標）を用いた場合には、4バイトのCRCを除いた1514バイト以上の値に長さ情報(Blen)を設定する。
【００４６】
上記のようにして生成されたバッファ情報記述子（BD_1〜m)に関連付けられたバッファ６１は、図３に示すような構成となる。図３において、バッファ６１は先頭アドレス（Baddr_start）から位置する転送用ヘッダ格納領域Ｈと、制御情報格納領域Ｃと、物理アドレス(Baddr_1〜m)から位置する領域１〜ｍとから構成される。また、領域１〜ｍはパケット４１から抽出したヘッダのヘッダ格納領域Ａと制御情報格納領域Ｃとからなる。
【００４７】
次いで、制御部２１は、それら生成したバッファ情報記述子（BD_1〜m)を、バッファ情報記述子（BD_1)からバッファ情報記述子（BD_m)の順に未使用ＢＤキュー５１へ書き込む。次いで、通信ボード１１はパケット４１を受信する度に、未使用ＢＤキュー５１から順次、バッファ情報記述子（BD_1〜m)を読み出し、ＤＭＡ転送により、図４に示すように、該物理アドレス(Baddr_1〜m)の位置から受信パケットをバッファ６１へ順次、上書きしながら書き込んでいく。この結果、バッファ６１内の各領域１〜ｍのヘッダ格納領域Ａには、受信パケットのヘッダＡ１〜Ａｍがそれぞれ書き込まれることになる。これにより、バッファ部２２内の１つのバッファ上に、ｍ個のパケット４１のヘッダ部分のみが抽出される。
【００４８】
次いで、制御部２１は、各ヘッダＡ１〜Ａｍの制御情報を各々の制御情報格納領域Ｃに設定する。また、m個のパケット４１の書き込みが完了し、m個のヘッダが抽出されると、抽出ヘッダ群４２をネットワークモニタアプリケーション１８あるいはリモートホスト装置３へ提供するための転送処理を行う。この転送処理については後述する。
【００４９】
このように、通信ボード１１のＤＭＡ機能により、通信ネットワーク２から受信したパケットを、ヘッダ部分を残して順次、バッファに上書きするようにしたので、ヘッダ抽出に伴うメモリコピー等によるホストCPUへの負荷を無くすことができる。この結果、パケット情報（ヘッダ情報）を収集する際に、ホストCPUにかかる負荷を軽減することができるという効果が得られる。
【００５０】
なお、制御部２１は、バッファ６１を用意する際、（３）式を満たすようにバッファ６１の長さ(Bsizereal)を設定する。
Bsizereal ≧ m×(N+C)＋H＋Blen  ・・・（３）
これにより、m個目のパケット４１のヘッダＡｍをバッファ６１に蓄積する際にも、受信パケット全体を書き込むことができるように、バッファ６１の長さが設定されることになる。
【００５１】
また、制御部２１には予めmの値が設定されるが、このmの値が大きい程、多くの抽出ヘッダ情報を一括して提供することが可能となるので、抽出ヘッダ群４２を転送する際のオーバーヘッドを低減するためには大きな値をmに設定することが望ましい。その一方で、抽出ヘッダ情報はＩＰに基づいて転送されるが、このためにＩＰの最大パケットサイズ(MTU size；Maximum Transfer Unit size)に、mの値が制限される可能性がある。これに対処するために、抽出ヘッダ群４２の転送に使用するフレームには、ジャンボフレーム(9000バイトのMTU size)などの大きなフレームサイズのものを用いることが望ましい。
【００５２】
次に、図５を参照して、バッファ６１に蓄積された抽出ヘッダ群４２をネットワークモニタアプリケーション１８あるいはリモートホスト装置３へ転送する処理について説明する。
パケット情報収集部１５の転送パケット生成部２４は、バッファ６１の転送用ヘッダ格納領域Ｈに、転送先に応じた転送用ヘッダ情報を付加して、この転送用ヘッダ情報と抽出ヘッダ群４２からなる抽出ヘッダ転送パケット４３を生成する。
【００５３】
そこで、図５に示すような転送用ヘッダ情報のテンプレートを予め作成し、転送パケット生成部２４へ設定しておく。また、この図５に示す転送用ヘッダ情報は、下位レイヤヘッダとＩＰヘッダとＵＤＰヘッダとから構成されており、その下位レイヤヘッダは、例としてイーサネット（登録商標）用の内容となっている。なお、ここでいう下位レイヤとは、ＩＰより下位に位置するデータリンクレイヤのことを指す。
【００５４】
なお、発着双方のUDPポート番号（Src UDP port,Dst UDP port）は、予め利用者により、全ての宛先で共通な値に設定される。また、発着双方のIPアドレス(Src IP Address,Dst IP Address)は、予め利用者により、発アドレスについては全ての宛先で共通な値が設定されるが、着アドレスについては全ての宛先で共通な値か、あるいは複数の値が設定される。また、IPパケットサイズ（Total Length）も予め利用者により設定される。
【００５５】
転送パケット生成部２４は、転送用ヘッダ情報のテンプレートを着IPアドレス（Dst IP Address）毎に作成する。個々のテンプレートについては、殆ど全ての情報が固定値となるため、予め所定値を設定する。以下、固定値とはならない情報の設定方法を説明する。
【００５６】
IP用Identification（ID；Identification）については、転送パケット毎に異なる値を設定する。また、IDの更新に伴い、IP用Checksumも更新する。この手順としては、先ず、転送パケット毎にIDを１増やす。次いで、IP用Checksumを１減らす。ただし、１６進数0x0001から１減じた場合には、１６進数0xFFFFとする。
これにより、IPヘッダ全体にわたってIP用Checksumの再計算を実行する必要がなくなる。
【００５７】
UDP用Checksumについては、0に固定し、転送パケット全体の検証を未実施とする。その代わりに、自ホスト装置１と転送先となるリモートホスト装置３が、データリンクレイヤについての同一セグメント上にある場合には、データリンクレイヤにより提供される誤り検出機能を利用して、抽出ヘッダ群４２転送時の正常性を検証する。但し、転送先が自ホスト装置１である場合には、抽出ヘッダ群４２転送時の正常性検証は不要である。これにより、UDP用Checksumの生成および検証にかかるオーバヘッドが無くなる。
【００５８】
しかしながら、転送先となるリモートホスト装置３が自ホスト装置１とは異なるセグメント上にある等、UDP用Checksum検証が必要な場合は、通信ボード１１に通常具備されているUDP用Checksum生成・検証機能を利用して、抽出ヘッダ群４２転送時の正常性検証を行う。
【００５９】
転送パケット生成部２４は、転送パケットの生成時に、順次、ラウンドロビン方式でテンプレートを選択し、この選択したテンプレートをバッファ６１の転送用ヘッダ格納領域Ｈにコピーして、転送用ヘッダ情報と抽出ヘッダ群４２からなる抽出ヘッダ転送パケット４３を生成する。次いで、この生成した抽出ヘッダ転送パケット４３をＵＤＰ／ＩＰ部１６の入力キューに登録する。これにより、ＵＤＰ／ＩＰ部１６が該登録済みの抽出ヘッダ転送パケット４３を、その着IPアドレス(Dst IP Address)に従って転送処理する。
【００６０】
なお、着IPアドレスが自ホスト装置１のものであった場合には、着UDPポート番号（Dst UDP port）に従って、自ホスト装置１のアプリケーション部に具備されている所定のアプリケーション（例えば、ネットワークモニタアプリケーション１８）へ、該登録済みの抽出ヘッダ転送パケット４３に含まれる抽出ヘッダ群４２を提供する。
【００６１】
また、抽出ヘッダ転送パケット４３をリモートホスト装置３へ送信するためには、送信先のデータリンクレイヤについてのリモートホスト装置３を示すデータリンクレイヤ対応アドレス（例えば、MAC address）と着IPアドレスとを関連付ける必要がある。このために、一般的にはARP(Address Resolution Protocol) に従ったアドレス解決手順が使用される。
【００６２】
しかし、このアドレス解決手順を用いると、該手順が終了するまでパケットを送信することができないので、送信待ちの抽出ヘッダ転送パケット４３が増加し、この結果、未転送のまま抽出ヘッダ転送パケット４３が紛失するという事態が生じる場合もある。そこで、本実施形態においては、データリンクレイヤ対応アドレスと着IPアドレスとを関連付けて記録したアドレステーブル（ARP table）を予めＵＤＰ／ＩＰ部１６へ設定し、アドレス解決手順を省略することができるようにする。
【００６３】
また、図１に示すパケット情報収集部１５の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラム（パケット情報収集プログラム）をコンピュータシステムに読み込ませ、実行することによりパケット情報収集処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
【００６４】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００６５】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００６６】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
このパケット情報収集プログラムにより、上述したパケット情報収集装置がパーソナルコンピュータ等のコンピュータを利用して実現できるようになる。
【００６７】
次に、上記パケット情報収集プログラムにより、パーソナルコンピュータを利用してパケット情報収集装置を実現し、このパケット情報収集装置を用いた通信ネットワーク監視システムの実施例を説明する。図７に、その通信ネットワーク監視システムの構成を示す。また、図８に、図７に示す通信ネットワーク監視システムのハードウェア構成を示す。図７に示す通信ネットワーク監視システムにおいては、ホスト装置（ＰＣ１）がパケット情報収集装置に対応する。具体的には、SUPERMICRO社製のパーソナルコンピュータ（ＰＣ１）で本実施形態のパケット情報収集プログラムを実行することによって、図１のデバイスドライバ部１３のパケット情報収集部１５の機能が実現されている。
【００６８】
また、ホスト装置（ＰＣ１）は、ファイルシステム（ＦＳ１）と接続されており、このファイルシステム（ＦＳ１）がホスト装置（ＰＣ１）の記憶装置（メインメモリ）に対応する。ファイルシステム（ＦＳ１）上に、図１のバッファ部２２およびＢＤキュー部２３が設けられる。
【００６９】
また、ホスト装置（ＰＣ１）は、ＤＭＡ機能を有する通信ボード（ＮＩＣ１）を備えている。この通信ボード（ＮＩＣ１）がヘッダ抽出用の図１の通信ボード１１に対応する。この通信ボード（ＮＩＣ１）は、モニタ対象の通信ネットワーク上を流れるパケットを取得し、この取得したパケットをファイルシステム（ＦＳ１）上のバッファへＤＭＡ転送して書き込む。なお、モニタ対象の通信ネットワーク上を流れるパケットは、トラヒックテスタによって発生させたものである。
【００７０】
また、ホスト装置（ＰＣ１）は、抽出ヘッダ転送パケットをリモートホスト装置（ＰＣ２）へ転送するために、ヘッダ転送用の通信ボード（ＮＩＣ２）も備える。この通信ボード（ＮＩＣ２）は、リモートホスト装置（ＰＣ２）の通信ボード（ＮＩＣ２）と接続されている。
【００７１】
上記図７の通信ネットワーク監視システムにおいて、本実施形態のヘッダ抽出方式を用いてヘッダを収集する場合と、従来のヘッダ抽出方式を用いてヘッダを収集する場合とで、それらのパケット情報収集に係る性能を比較評価するために、ヘッダ収集の実験を行った結果を図１０、図１１に示す。図１０は、性能評価のための一指標として、実験結果から求めたヘッダ取得率を示すグラフである。また、図１１は、同様に、実験結果から求めたＰＣ１のＣＰＵ負荷を示すグラフである。また、図９に、この実験の動作環境条件を示す。図９に示す条件１，２が本実施形態のヘッダ抽出方式に対応し、条件３〜６が従来のヘッダ抽出方式に対応する。
【００７２】
実験においては、条件１〜６のいずれの動作環境においても、市販のIP用のトラヒックテスタを使用して、64バイトから1518バイト(CRC含む)までのイーサネットフレームを、ギガビットイーサネットのフルレートでモニタ対象の通信ネットワークへ送信し、ＰＣ１またはＰＣ２でパケットヘッダをファイルに蓄積するようにした。なお、条件１は、ホスト装置（ＰＣ１）で収集したヘッダ情報を抽出転送パケットでリモートホスト装置（ＰＣ２）へ転送し、このリモートホスト装置（ＰＣ２）がパケットヘッダをファイルに蓄積する場合のものとなっている。また、条件２〜６は、ホスト装置（ＰＣ１）がパケットヘッダをファイルに蓄積する場合のものである。
【００７３】
これらの実験の結果、図１０に示すように、本実施形態のヘッダ抽出方式により、ヘッダ取得率が２倍以上に向上するという効果が認められた。また、図１１に示すように、ＣＰＵU負荷は、１／２以下に軽減されるという効果が認められた。
【００７４】
このように、本実施形態によれば、ＤＭＡ転送により、バッファ情報記述子で指定されたバッファ内の記憶領域へパケットを書き込むようにしたので、ホストCPUが自らパケット情報をホストメモリ内のバッファにコピーする必要は無くなる。この結果、通信ネットワークからパケットを受信してパケット情報を収集する際に、ホストCPUにかかる負荷を軽減することができるという効果が得られる。
【００７５】
さらに、バッファに蓄積されたパケット情報を含む転送用パケットを生成するようにしたので、パケット情報を収集するホスト装置とは異なる装置へ、その収集したパケット情報を転送することができる。これにより、パケット情報収集をネットワークモニタに係る他の機能（解析機能など）を実現する装置とは別の独立した装置で行うことが可能となる。また、転送用パケットにより複数の装置へパケット情報を提供することができる。
これらにより、ネットワークモニタ機能を実現する際に、その処理の負荷分散を図ることができるようになる。
【００７６】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００７７】
【発明の効果】
以上説明したように、本発明によれば、通信インタフェース装置からアクセス可能なメモリ上にバッファを設け、このバッファ内の特定の記憶領域であるパケットの格納先を指定するバッファ情報記述子を作成し、通信インタフェース装置が、ＤＭＡ転送により、該バッファ情報記述子で指定されたバッファ内の記憶領域へ、パケットを書き込むようにしたので、ホストCPUが自らパケット情報をホストメモリ内のバッファにコピーする必要は無くなる。これにより、通信ネットワークからパケットを受信してパケット情報を収集する際に、ホストCPUにかかる負荷を軽減することができるという効果が得られる。
【００７８】
さらに、記憶領域の大きさを、パケット情報の大きさ、またはパケット情報に付加情報を加えた大きさに設定するようにすれば、バッファサイズを小さくすることが可能となり、メモリ容量を削減することができるという効果が得られる。
【００７９】
また、バッファ内の連続した記憶領域をそれぞれ示すバッファ情報記述子を、順序付けておくようにすれば、連続した記憶領域上に複数のパケット情報を蓄積することができるので、それら蓄積されたパケット情報群を一括して、効率的に処理（転送処理など）することが可能となる。この結果、ホストCPUにかかる負荷をさらに軽減することができるという効果が得られる。
【００８０】
また、バッファに蓄積されたパケット情報を含む転送用パケットを生成するようにすれば、パケット情報を収集するホスト装置とは異なる装置へ、その収集したパケット情報を転送することができる。これにより、パケット情報収集をネットワークモニタに係る他の機能（解析機能など）を実現する装置とは別の独立した装置で行うことが可能となる。また、転送用パケットにより複数の装置へパケット情報を提供することができる。これらにより、ネットワークモニタ機能を実現する際に、その処理の負荷分散を図ることができるという効果が得られる。
【００８１】
また、転送用パケットのヘッダ用テンプレートを予め保持するようにすれば、転送用パケット生成処理にかかるホストCPUの負荷を軽減することが可能となる。
【図面の簡単な説明】
【図１】  本発明の一実施形態によるパケット情報収集装置を用いた通信ネットワーク監視システムの構成例を示すブロック図である。
【図２】  図１に示すＢＤキュー部２３の構成を示すブロック図である。
【図３】  バッファ部２２内のバッファ６１におけるメモリ領域の構成を示す図である。
【図４】  バッファ６１上に複数のパケット４１のパケット情報（ヘッダ）を抽出する処理を説明するための図である。
【図５】  抽出ヘッダ転送パケットを生成する処理を説明するための図である。
【図６】  図１に示すＢＤキュー部２３の他の構成を示すブロック図である。
【図７】  本発明の一実施形態によるパケット情報収集装置を用いた通信ネットワーク監視システムの実施例を示すブロック図である。
【図８】  図７に示す通信ネットワーク監視システムのハードウェア構成を示す表である。
【図９】  図７に示す通信ネットワーク監視システムの性能評価実験の動作環境条件を示す表である。
【図１０】  性能評価実験の結果から求めたヘッダ取得率を示すグラフである。
【図１１】  性能評価実験の結果から求めた図７のＰＣ１のＣＰＵ負荷を示すグラフである。
【符号の説明】
１…ホスト装置、２，４…通信ネットワーク、３…リモートホスト装置、１１，１２…通信ボード、１３，１４…デバイスドライバ部、１５…パケット情報収集部、１６…ＵＤＰ／ＩＰ部、１７…ソケット部、１８…ネットワークモニタアプリケーション、２１…制御部、２２…バッファ部、２３…ＢＤキュー部、２４…転送パケット生成部、２５…ＤＭＡ部、４１…パケット、４２…抽出ヘッダ群、４３…抽出ヘッダ転送パケット。
【図１】
0004657529.tif 000002
【図２】
0004657529.tif 000003
【図３】
0004657529.tif 000004
【図４】
0004657529.tif 000005
【図５】
0004657529.tif 000006
【図６】
0004657529.tif 000007
【図７】
0004657529.tif 000008
【図８】
0004657529.tif 000009
【図９】
0004657529.tif 000010
【図１０】
0004657529.tif 000011
【図１１】
0004657529.tif 000012