説明

解析処理装置、解析処理プログラム、及び解析処理方法

【課題】マルチプロセッサのリソースを効率よく利用して、ネットワーク上で伝達されるパケットの解析処理を行う。
【解決手段】解析処理装置は、所定の処理部に、コンピュータ間で送受されるパケットを受信し、受信した前記パケットの受信間隔を計測し、計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと2番目以降に対応するセグメントを含むパケットとを検出し、検出したパケットを、組単位で各複数の処理部のいずれかに振り分け、パケットを振り分けられた処理部に、メッセージ単位で振り分けられたパケットに基づいて、メッセージの解析処理を実行させることにより、上記課題の解決を図る。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、ネットワーク上で伝達されるパケットについての解析処理技術に関する。
【背景技術】
【0002】
ネットワークから取得した情報を計算機により処理する場合に、計算機のリソースを有効に活用する技術として、例えば次に示すものが知られている。
後段処理装置における総フレーム処理量を予測し、その総フレーム処理量がその後段処理装置の基準処理量より大きくなるまでフレームを受信してから、割り込みを生成する技術が知られている。
【0003】
また、処理量あるいは処理速度が異なる複数の処理を複数の計算機に分散して効率良く並列に実行できる計算機資源分散方法が知られている。この場合、少なくとも1つの計算機に処理分散用のスケジューラを設け、分散すべき処理の処理量が既知の場合、スケジューラは処理量の大きいものから順に処理を積算処理量が少ない計算機に割り当てる。それと共に、割り当てた処理の処理量を積算処理量に加算することによりその計算機の積算処理量を更新する。以後、順次同様の方法で処理を計算機に割り当てる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−67140号公報
【特許文献2】特開平6−12392号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本明細書は、複数の処理部のリソースを効率よく利用して、ネットワーク上で伝達されるパケットの解析処理を行う技術を提供する。
【課題を解決するための手段】
【0006】
解析処理装置は、受信部と、複数の処理部とを含む。受信部は、ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信する。複数の処理部のうち所定の処理部は、受信部で受信したパケットの受信間隔を計測する。所定の処理部は、計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと、そのメッセージの2番目以降に対応するセグメントを含むパケットとを検出する。所定の処理部は、検出したパケットを、組単位で複数の処理部のいずれかに振り分ける。前記複数の処理部のうち、前記パケットを振り分けられた処理部は、そのパケットに基づいて、メッセージの解析を行う。
【発明の効果】
【0007】
本明細書に記載の技術によれば、複数の処理部のリソースを効率よく利用して、ネットワーク上で伝達されるパケットの解析処理を行うことができる。
【図面の簡単な説明】
【0008】
【図1】マルチプロセッサによる、コネクション単位でのパケットの分散処理シーケンスを示す。
【図2】情報システムと分析装置とを示す。
【図3】分析装置のハードウェア構成図を示す。
【図4】コネクション情報テーブルの一例を示す。
【図5】振り分け用テーブルの一例を示す。
【図6】処理時間重み付け値テーブルの一例を示す。
【図7】CPU番号テーブルの一例を示す。
【図8】メッセージ番号テーブルの一例を示す。
【図9】パケットのデータ構造を示す。
【図10】IPヘッダの構造を示す。
【図11】TPCヘッダの構造を示す。
【図12】TPCコネクションのシーケンスの一例を示す。
【図13】通信パケットの送信間隔について説明するための図である。
【図14】パケットの送信間隔とその頻度との相関分布を示す。
【図15】マルチプロセッサによる、メッセージ単位でのパケットの分散処理シーケンスを示す。
【図16】CPU0により行われる、メッセージ単位でのパケットの分散処理シーケンスの詳細(その1)を示す。
【図17】CPU0により行われる、メッセージ単位でのパケットの分散処理シーケンスの詳細(その2)を示す。
【図18】CPUnにより行われる、メッセージ単位でのパケットの分散処理シーケンスの詳細を示す。
【発明を実施するための形態】
【0009】
以下に、本発明を実施するための実施例について詳細に説明する。
1つの実施例では、複数の情報処理装置を含む情報システムの状態監視を分析装置を用いて行う。分析装置は、受信したパケットからメッセージを再構成し、再構成したメッセージの内容(例えば、リクエスト、レスポンス、命令等)を解析することができる。
【0010】
複数の情報処理装置は、例えば、スイッチを介して、相互に接続され、情報システムを構築している。ここで、スイッチは、情報処理装置間のネットワークを接続するネットワークデバイスの1つであり、パケットのヘッダに含まれる宛先情報に応じて、情報処理装置間の通信経路をスイッチングし、パケットを中継することができる。パケットは、例えば、通信モデルの1つであるTCP/IP[Transmission Control Protocol/InternetProtocol]モデルの中のインターネットレイヤでの送信単位である。パケットは、他のレイヤのパケットとすることもできる。
【0011】
ここで、コンピュータAがメッセージをコンピュータBに送信する場合を例に、TCP/IPを用いたパケット通信によってメッセージを送信する方法について説明する。メッセージのデータ量が、TCP/IPモデルにおけるインターネットレイヤでの1回の送信容量を超えるときには、コンピュータAはメッセージを幾つかの部分に分割する。そして、コンピュータAは、メッセージの全部又は一部を、それぞれセグメントとしてパケットに収納して順次、コンピュータBへと送信する。コンピュータBはパケットを受信すると、受信した複数のパケットから分割されたメッセージの全部又は一部を取り出す。そして、コンピュータBは、その分割されたメッセージを組み立て、メッセージを再構成する。
【0012】
分析装置は、スイッチを介して、情報処理装置間で送受信されるパケットを受信する。分析装置は、受信したパケットに基づいてメッセージを解析し、リクエストメッセージとレスポンスメッセージを監視する。これにより、分析装置は、情報システムの稼動状態を判断することができる。分析装置には、オペレーティングシステム(以下、OSという)と分析アプリケーションソフトフェア(以下、分析アプリケーションという)が実装してもよい。スイッチより送られた通信パケットは、分析装置の有するネットワークインターフェースカード(NIC)のプロミスキャスモードを用いて、オペレーティングシステムを経由して分析アプリケーションに引き渡される。
【0013】
分析アプリケーションは、パケットを取得すると、取得したパケットについて受信処理を行い、また、複数のパケットからメッセージを組み立て、その組み立てたメッセージから、そのメッセージの内容を解析する解析処理を行う。メッセージの内容としては、例えば、リクエスト、レスポンス、命令等がある。
【0014】
すなわち、分析アプリケーションは、パケット受信処理、メッセージ解析処理を順に実行する。パケット受信処理では、パケットを受信して、ヘッダ情報からその受信パケットのコネクションを識別し、対応するバッファへ書き込む。メッセージ解析処理では、バッファからその書き込まれたパケットを読み出してメッセージを組み立て、その組み立てたメッセージを解析する。パケット受信処理とメッセージ解析処理の処理速度を比較すると、パケット受信処理が速く、メッセージ解析処理は遅い。
【0015】
従って、大量にパケットを受信した場合、パケット受信処理とメッセージ解析処理の速度差により、メッセージ解析処理におけるバッファからのパケットの読み込みが間に合わなくなる。その結果、バッファに蓄積されたパケットが新たに受信したパケットにより上書きされ、キャプチャロスが発生してしまう。
【0016】
そこで、この実施例では、複数の処理部を用いてTCPコネクション単位でパケットを各処理部に振り分けて、メッセージ解析処理の負荷分散を行うことにより、メッセージ解析処理を並列して実行し、キャプチャロスをなるべく発生させないようにする。これについて、図1を用いて説明する。
【0017】
図1は、複数の処理部としてマルチプロセッサを用いる場合の、コネクション単位でのパケットの分散処理シーケンスを示す。図1では、3つの中央処理装置(CPU)を有するマルチプロセッサを例に用いて、コネクション単位でのパケットの分散処理シーケンスを説明する。なお、プロセッサの数は3に限定されず、2以上の任意の数を採用することもできる。
【0018】
CPU0は、パケットを受信し(S1)、分析アプリケーションに従った処理を実行する。すなわち、まず、CPU0は、受信パケットのヘッダ情報から、その受信パケットに対応するコネクションを識別する(S2)。
【0019】
CPU0は、コネクション単位で受信パケットを各CPUへ分散させる。そのために、CPU0は、識別したコネクションにおいて伝送されるパケットについてメッセージ解析処理を行っているCPUを選択する(S3)。CPU0は、その選択したCPUが使用しているバッファに、その受信したパケットを書き込む(S4)。例えば、CPU1は、バッファ1を用いて、コネクションA,Cについての受信パケットのメッセージ解析処理を行っている。例えば、CPU2は、バッファ2を用いて、コネクションBについての受信パケットのメッセージ解析処理を行っている。
【0020】
CPU1は、バッファ1に書き込まれたパケットを読み出し(S5a)、読み出したパケットからメッセージを組み立て、メッセージ解析を行う(S6a)。CPU2は、バッファ2に書き込まれたパケットを読み出し(S5b)、読み出したパケットからメッセージを組み立て、メッセージ解析を行う(S6b)。
【0021】
これにより、受信したパケットをコネクション単位で各CPUへ分散させることができる。コネクション単位でのパケットの分散によれば、メッセージ解析処理内のメッセージの組み立て処理に影響を与えないで、各CPUに負荷を分散できる。なお、CPU0も所定のコネクションについての解析処理を担当してもよく、その場合には、CPU0に対応するバッファに対応するコネクションについてのパケットを格納すればよい。
【0022】
ここで、コネクション単位でパケットを分散するアルゴリズムとしては、例えば、ラウンドロビン方式、最小接続方式、状態監視方式等が考えられる。ラウンドロビン方式は、受信したパケットを、順番に各プロセッサへ割り振るアルゴリズムである。最小接続方式は、最もコネクション数が少ないプロセッサを選択し、その選択したプロセッサにパケットを割り振るアルゴリズムである。状態監視方式は、コネクション数と応答速度を計測して、各プロセッサのパフォーマンスを予測し、その予測の結果に応じてプロセッサを選択し、その選択したプロセッサにパケットを割り振るアルゴリズムである。
【0023】
しかしながら、上記アルゴリズムのいずれもコネクションの接続時に、受信パケットがプロセッサへ振り分けられるので、次のことが発生する可能性がある。例えば、アプリケーション(AP)−データベース(DB)間のコネクションの様に、コネクションの接続を継続する通信では、コネクション単位でバッファが固定化される。その結果、メッセージ解析処理が特定のプロセッサに偏り、パケット量に比例してパケット量を分散することが出来ない可能性がある。
【0024】
そこで、以下の実施形態では、メッセージ解析処理を行うCPUまたはバッファがコネクション単位で固定されないようにして、マルチプロセッサのリソースを効率よく利用することができるメッセージ解析処理装置を提供する。すなわち、実施形態では、マルチプロセッサ環境において、受信したパケットをメッセージ単位でいずれかのCPUへ振り分けることができるメッセージ解析装置を提供する。また、更に、マルチプロセッサ環境において、各プロセッサのメッセージ解析処理の負荷を均等化するように、パケットを各プロセッサへ振り分けるメッセージ解析装置を提供する。
【0025】
図2は、情報システムと分析装置とを示す。情報システム2は、複数の情報処理装置(コンピュータ)3(3a,3b,3c,・・・)、スイッチ(SW)4を含む。
分析装置1は、コンピュータ3(3a,3b,3c,・・・)が互いにやり取りするパケットをSW4のミラーリング機能を用いて受信し、受信したパケットに基づいてそのコンピュータの稼動状況を監視及び分析を行う。すなわち、分析装置1は、受信したパケットからメッセージを再構成し、リクエストを示すメッセージとレスポンスを示すメッセージとを監視する。これにより、分析装置1は、通信しているコンピュータ同士の稼動状態、通信状態等を監視・分析することができる。
【0026】
SW4は、例えば、Local Area Network(LAN) Switch(SW)等のパケット伝送路のスイッチングを行う中継機器である。SW4には、コンピュータ3a,3b,3c,・・・等が接続されている。
【0027】
SW4は、コンピュータ3又は不図示の中継機器とパケットの送受信を行うことができる。SW4は、複数の通信ポートを備えている。SW4は、1つの通信ポートからパケットが進入してくると、そのパケットの送り出し先として適切な通信ポートを選択し、選択した通信ポートからそのパケットを送出する。本実施形態では、これらの通信ポートには、それぞれ、コンピュータ3(3a,3b,3c,・・・)が接続されている。SW4は、ポートミラーリング機能を実現するための回路を内蔵している。ポートミラーリング機能は、特定の通信ポートを通過するパケットを複製し、複製したパケットをミラーポートから送出するための機能である。本実施形態では、SW4は、1個のミラーポートを備える。ポートミラーリング機能は、2個以上の通信ポートから進入してくる全てのパケットを複製し、複製したパケットをミラーポートから出力する。本実施形態では、SW4のミラーポートには、分析装置1が接続されている。なお、複製元のパケット(オリジナルのパケット)は、適切な通信ポートから送出される。
【0028】
図3は、分析装置1のハードウェア構成図を示す。分析装置1は、例えば、マルチプロセッサ10、メモリ11、記憶装置12、NIC13、RAM31、ROM32、リーダ/ライタ33、出力I/F31、入力I/F35等を含む。ROMは、リードオンリメモリを示す。RAMは、ランダムアクセスメモリを示す。I/Fは、インターフェースを示す。マルチプロセッサ10、メモリ11、記憶装置12、NIC13、RAM31、ROM32、リーダ/ライタ33、出力I/F31、入力I/F35等は、バス38で接続されている。
【0029】
マルチプロセッサ10は、CPU0(10a),CPU1(10b),CPU2(10c)を含む。なお、本実施形態のマルチプロセッサは、3つのCPUを含むが、これに限定されず、2以上のCPUを含んでいればよい。CPU0(10a),CPU1(10b),CPU2(10c)は、時刻を計測するタイマー機能または時間を計測するカウンタ機能を含んでもよい。また、分析装置1は、CPU0(10a),CPU1(10b),CPU2(10c)とは別に、時計回路を有していてもよい。この場合、各CPUは、時計回路より得られた時刻情報またはカウント情報を取得するようにしてもよい。
【0030】
メモリ11は、バッファ11a,11bを含む。バッファ11aは、例えば、CPU1(10b)が使用するバッファである。バッファ11bは、例えば、CPU2(10c)が使用するバッファである。
【0031】
記憶装置12には、オペレーティングシステム(OS)17、分析アプリケーション14、コネクション情報テーブル18、振り分け用テーブル19、処理時間重み付け値テーブル20、CPU番号テーブル21、メッセージ番号テーブル22等が格納されている。分析アプリケーション14は、パケット受信プログラム15とメッセージ解析プログラム16を含む。分析装置1の起動時に、マルチプロセッサ10は、記憶装置12からOS17と分析アプリケーション14を読み出して、メモリ11に展開し、パケット受信プログラム15とメッセージ解析プログラム16を実行する。パケット受信プログラム15は、例えば、CPU0で実行されるものであり、パケットを受信して、そのパケットについてメッセージ解析を行うCPUに割り当てる処理を行う。メッセージ解析プログラム16は、上記でパケットを割り当てられた各CPU(例えば、CPU1,2)で実行される。なお、記憶装置12としては、ハードディスク、フラッシュメモリ装置など様々な形式の記憶装置を使用することができる。
【0032】
NIC13は、SW4のミラーポートと接続されている。SW4のミラーリング機能により、監視対象のコンピュータ3間の通信によるパケットがSW4からNIC13へ送信される。NIC13に到達したパケットは、NIC13のプロミスキャスモードを用いて、オペレーティングシステム17を経由して分析アプリケーション14に到達し、分析アプリケーション14に取り込まれる。ここで、プロミスキャスモードとは、宛先が自分宛でないパケットも受信するモードをいう。
【0033】
リーダ/ライタ33は、可搬型記録媒体から情報を読み出したり、可搬型記録媒体に情報を書き込む装置である。出力機器36は、出力I/F34に接続されている。入力機器37は、入力I/F35に接続にされている。
【0034】
分析アプリケーション14は、プログラム提供者側から、通信ネットワーク、およびNIC13を介して、例えば記憶装置12に格納してもよい。また、分析アプリケーション14は、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体はリーダ/ライタ33にセットされて、マルチプロセッサ10によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、ICカード、USBメモリ装置、DVDなど様々な形式の記憶媒体を使用することができる。
【0035】
また、入力機器37には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器36には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワークは、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
【0036】
図4は、コネクション情報テーブル18の一例を示す。コネクション情報テーブル18は、「接続先IPアドレス」18a、「接続先ポート番号」18b、「接続元IPアドレス」18c、「接続元ポート番号」18dのデータ項目を含む。
【0037】
「接続先IPアドレス」18aには、接続先のIPアドレスが格納される。「接続先ポート番号」18bには、接続先のポート番号が格納される。「接続元IPアドレス」18cには、接続元のIPアドレスが格納される。「接続元ポート番号」18dには、接続元のポート番号が格納される。ここで、「接続元」とは、コネクションを確立する際に、接続を要求した側をいう。「接続先」とは、コネクションを確立する際に、接続を要求された側をいう。なお、「接続元」、「接続先」については後述する。
【0038】
以下では、「接続先IPアドレス」、「接続先ポート番号」、「接続元IPアドレス」、「接続元ポート番号」を含む1組の情報をコネクション情報という。
図5は、振り分け用テーブル19の一例を示す。振り分け用テーブル19は、「CPU番号」19a、「待機時間」19bのデータ項目を含む。「CPU番号」19aには、マルチプロセッサ10に含まれる各CPU(振り分け先のCPU)を識別する情報が格納される。「待機時間」19bには、振り分け先の各CPUによって使用されるバッファ11内のパケットの待機時間(合計値)が格納される。
【0039】
図6は、処理時間重み付け値テーブル20の一例を示す。処理時間重み付け値テーブル20は、「プロトコル名」20a、「1バイト当たりの処理時間(sec/byte)」20b、「解析したメッセージの長さ(byte)」20c、「解析したメッセージの処理時間(sec)」20dのデータ項目を含む。各項目に格納される情報については、後述する。
【0040】
図7は、CPU番号テーブル21の一例を示す。CPU番号テーブル21は、「接続先IPアドレス」21a、「接続先ポート番号」21b、「接続元IPアドレス」21c、「接続元ポート番号」21d、「上りCPU番号」21e、「下りCPU番号」21fのデータ項目を含む。各項目に格納される情報については、後述する。
【0041】
図8は、メッセージ番号テーブル22の一例を示す。メッセージ番号テーブル22は、「接続先IPアドレス」22a、「接続先ポート番号」22b、「接続元IPアドレス」22c、「接続元ポート番号」22d、「上りメッセージ番号」22e、「下りメッセージ番号」21fのデータ項目を含む。各項目に格納される情報については、後述する。
【0042】
図9は、パケットのデータ構造を示す。パケットは、IPヘッダ、TPCヘッダ、TPCデータを含む。
図10は、IPヘッダの構造を示す。IPヘッダは、バージョン、ヘッダ長、サービスタイプ、パケット長、識別子、フラグ、フラグメントオフセット、生存時間、プロトコル、ヘッダチェックサム、送信元IPアドレス、送信先IPアドレス、オプション、パディングの項目を有する。「パケット長」には、パケット全体のサイズ(byte)がセットされる。「送信元IPアドレス」には、送信元のIPアドレスがセットされる。「送信先IPアドレス」には、送信先のIPアドレスがセットされる。これ以外の項目については、本実施形態で言及しないので、省略する。
【0043】
図11は、TPCヘッダの構造を示す。TPCヘッダは、送信元ポート番号、送信先ポート番号、シーケンス番号、確認応答番号、ヘッダ長、予約ビット、フラグ、ウィンドウサイズ、チェックサム、緊急ポインタ、オプション、パディングの項目を有する。「送信元ポート番号」には、送信元のポート番号がセットされる。「送信先ポート番号」には、送信先のポート番号がセットされる。
【0044】
図12は、TPCコネクションのシーケンスの一例を示す。まずは、スリーウェイハンドシェイクによるTCPコネクションの確立について説明する。接続を要求する側(以下、クライアントという)から接続を要求される側(以下、サーバという)へSYNパケット(TCPヘッダ内のSYNを示すフラグが立ったパケット)を送る。サーバは、SYN−ACKパケット(TCPヘッダ内の項目「フラグ」において、SYNフラグとACKフラグが立ったパケット)をクライアントに送る。クライアントは、ACKパケット(ACKフラグが立ったパケット)をサーバに送る。これにより、接続を要求する側(クライアント)と接続を要求される側(サーバ)の間のコネクションが確立する。
【0045】
ここで、接続を要求する側(クライアント)を「接続元」という。接続を要求される側(サーバ)を「接続先」という。接続を要求する側(クライアント)から接続を要求される側(サーバ)への接続方向を「上り」といい、その反対の方向を「下り」という。
【0046】
次に、TPCコネクションの切断について説明する。TCPコネクションを切断しようとするコンピュータから、他方のコンピュータへコネクションの切断を要求するFINパケット(TCPヘッダ内の項目「フラグ」において、FINフラグが立ったパケット)を送信する。これに対して、該他方のコンピュータは、TCPコネクションを切断しようとするコンピュータへACKパケットを送り、片方向のコネクションが開放される。さらに、該他方のコンピュータがTCPコネクションを切断しようとするコンピュータへFINパケットを送る。これに対して、TCPコネクションを切断しようとするコンピュータは、ACKパケットを他のコンピュータへ送り、もう片方向のコネクションも開放される。
【0047】
図13は、通信パケットの送信間隔について説明するための図である。同一メッセージを構成するセグメントを含むパケット間の送信間隔と、相互に異なるメッセージを構成するセグメントを含むパケット間の送信間隔とでは、その送信間隔が異なる。具体的には、相互に異なるメッセージを構成するセグメントを含むパケット間の送信間隔よりも、同一メッセージを構成するセグメントを含むパケット間の送信間隔の方が短い。このように、同一メッセージを構成するセグメントを含むパケット間の送信間隔と、相互に異なるメッセージを構成するセグメントを含むパケット間の送信間隔とが異なるのは、例えば、次の原因による。コンピュータのメッセージ送信処理に関連し、コンピュータのアプリケーションがカーネルに対して、メッセージ単位に送信要求を行う。そのため、カーネル内でパケットに分割された同一メッセージを構成するセグメントを含むパケット間の送信間隔は、比較的短くなる。一方、コンピュータのアプリケーションで分割された、例えば2つの異なるメッセージ送信要求は、別々にシーケンシャルにカーネルに対して送信要求を行う。そのため、アプリケーションで分割された相互に異なるメッセージを構成するセグメントを含むパケット間の送信間隔は、カーネル内でパケットに分割された同一メッセージを構成するセグメントを含むパケット間の送信間隔と比べて比較的長くなる。
【0048】
図14は、パケットの送信間隔とその頻度との相関分布を示す。横軸は、パケットの送信間隔を示す。縦軸は、パケットの送信頻度を示す。同一メッセージを構成するセグメントを含むパケット間の送信間隔の分布曲線を符号41で示す。相互に異なるメッセージを構成するセグメントを含むパケット間の送信間隔の分布曲線を符号42で示す。
【0049】
2つの分布曲線は、図14に示すように分布が異なる。この例では、2つの分布曲線は、送信時間0.00007[msec]で交差している。そこで、送信時間0.00007[msec]を閾値とする。すなわち、送信間隔が0.00007[msec]以下の場合、同一メッセージを構成するセグメントを含むパケット間の送信間隔と判定することができる。また、送信間隔が0.00007[msec]より長い場合、相互に異なるメッセージを構成するセグメントを含むパケット間の送信間隔と判定することができる。もちろん、閾値は0.00007に限定されず、適宜調整してよい。
【0050】
これより、相互に異なるメッセージを構成するセグメントを含むパケット間の送信間隔よりも、同一メッセージを構成するセグメントを含むパケット間の送信間隔の方が短いという特性を用いて、次の判定をすることができる。すなわち、その特性を用いて、連続して受信したパケットが同一のメッセージを構成するパケットか否かを判定することができる。したがって、メッセージ単位でパケットを検出できるので、メッセージ単位でパケットを各メッセージ解析処理(CPU)に振り分けることができる。この場合、パケットの組み立て処理に影響を与えない。よって、コネクション単位でパケットを各CPUに振り分ける場合に比べ、メッセージ単位で振り分けることができるので、コネクション確立時に選択されたCPU以外のCPUに、パケットを振り分けることができる。したがって、同一コネクション内においても、コネクション確立時に選択されたCPU以外のCPUにメッセージ処理の負荷を分散させる事ができる。
【0051】
負荷分散方法としては、次のように行う。同一プロトコル内のパケットについての送信の場合、メッセージ長とメッセージ解析の処理時間は比例する。このことから、バッファリングされているメッセージ長の総和が均等になる様に、パケットを各メッセージ解析処理(CPU)に分散させて、処理量を均等にし、各CPUにより処理されるパケットの待機時間を平準化させる。
【0052】
一方、プロトコルが異なる場合、プロトコルに応じてメッセージ解析における処理量、すなわちメッセージ毎(すなわち、パケット毎)の処理時間が異なる。そのため、プロトコルに応じてパケット毎の処理時間に重み付けを行い、各CPUにより処理されるパケットの待機時間を平準化させる。
【0053】
重み付けの方法は、HTTP,IIOP等の各プロトコルを解析するモジュールを用いて1メッセージ(メッセージ長)を処理する時間を測定し、例えば、1バイト当たりの処理時間を求める。ここで、HTTPは、HyperText Transfer Protocolである。IIOPは、Internet Inter-ORB Protocolである。そして、メッセージ長(バイト)に、プロトコルに応じた重み付け値(1バイト当たりの処理時間)を乗算して、プロトコルに応じた1メッセージ当たりの処理時間を算出することができる。この算出した処理時間を待機時間に加算していく。これにより、プロトコル種別に応じた処理時間の相違を吸収し、パケットの振り分け処理を行うことができる。これについて、図15を用いて説明する。
【0054】
図15は、マルチプロセッサによる、メッセージ単位でのパケットの分散処理シーケンスを示す。例えば、CPU0は、記憶装置12からパケット受信プログラム15を読み出し、パケット受信処理を実行するものとする。また、例えば、CPU1,2はそれぞれ、記憶装置12からメッセージ解析プログラム16を読み出し、メッセージ解析処理を実行するものとする。
【0055】
CPU0は、NIC13から送られたパケットを連続して受信する(S11)。CPU0は、パケットのヘッダ情報(IPヘッダ及びTCPヘッダ)に基づいて、そのパケットに対応するコネクションを識別し、コネクションの接続方向を識別し、パケットの送信方向を識別する(S12)。
【0056】
CPU0は、パケットの受信間隔に基づいて、メッセージの先頭となるパケットを検出する(S13)。なお、本実施形態では、パケットの送信間隔を、分析装置1における受信間隔として検出することとする。
【0057】
CPU0は、メッセージ解析処理の待機時間に応じて、CPUを選択する(S14)。CPU0は、メッセージを各CPUへ振り分けるために用いられる情報を更新する(S15)。メッセージを各CPUへ振り分けるために用いられる情報については後述する。
【0058】
CPU0は、同一のメッセージを構築するパケットに、同一のメッセージ番号と、送信方向を特定する情報とを付加する。そして、CPU0は、S14で選択したCPUが使用するバッファに、メッセージ番号及び送信方向が付加されたパケットを書き込む(S16)。
【0059】
CPUn(n=1,2)は、バッファnに書き込まれたパケットを、パケットに付与されたメッセージ番号に基づいて、メッセージ単位で読み出す(S17−1、S17−2)。なお、本実施形態では、選択可能なCPUが2つなのでn=1,2であるが、選択可能なCPUが3つ以上あればn=1〜m(m≧3)となる。CPUnは、読み出した各パケットのIPヘッダからパケット長を取得し、取得したパケット長の総和をメッセージ長として算出する(S18−1、S18−2)。
【0060】
CPUnは、読み出した各パケットから分割されたメッセージを取り出し、メッセージを組み立てる。CPUnは、その組み立てたメッセージの解析を行う(S19−1,S19−2)。CPUnは、そのメッセージの解析処理に費やした時間を計測する(S19−1、S19−2)。CPUnは、重み付けに関する情報の更新を行う(S20−1、S20−2)。
【0061】
なお、本実施形態では、CPU0は、S17〜S21の処理を行わないが、これに限定されず、S17〜S21の処理を行うようにしてもよい。図15について、さらに、図16−図18を用いて、詳述する。
【0062】
図16及び図17は、CPU0により行われる、メッセージ単位でのパケットの分散処理シーケンスの詳細を示す。図16,図17のフローは、図15のS11−S16の詳細を示す。
【0063】
CPU0は、分析アプリケーション14により取り込まれたパケットを連続して受信する(S31)。CPU0は、受信したパケットのIPヘッダから「送信元IPアドレス」、「送信先IPアドレス」を取得する。さらに、CPU0は、TCPヘッダから「送信元ポート番号」、「送信先ポート番号」を取得する(S32)。以下では、「送信元IPアドレス」、「送信先IPアドレス」、「送信元ポート番号」、「送信先ポート番号」を「送信関係情報」という。
【0064】
CPU0は、S32で取得した送信関係情報を用いて、図4に示すコネクション情報テーブル18を検索する。これにより、コネクションが確立しているかを検出し、さらにパケットの送信方向を検出する(S33)。具体的には、CPU0は、S32で取得した送信関係情報と一致するコネクション情報(「接続先IPアドレス」、「接続先ポート番号」、「接続元IPアドレス」、「接続元ポート番号」)がコネクション情報テーブル18に登録されているか否かを判断する。
【0065】
ここで、スリーウェイハンドシェイクによるコネクション確立前には、そのコネクションについてのコネクション情報は、コネクション情報テーブル18に登録されていないから、S34で「No」へ進む。それから、S36〜S38(S38で「No」)へ進み、CPU0は、受信パケットがコネクション確立メッセージであるかを判断する(S40)。受信パケットがコネクション確立メッセージでない場合(S40で「No」)、本フローは終了する。
【0066】
したがって、スリーウェイハンドシェイクによるコネクション確立準備段階において、SYNパケット、SYN−ACKパケットを受信した場合には(S40で「No」)、本フローは終了する。
【0067】
SYNパケット、SYN−ACKパケットを受信後、さらにACKパケットを受信した場合、すなわち、コネクション確立メッセージを検出した場合(S40で「Yes」)、CPU0は、コネクションの確立を確認する(S41)。この場合、CPU0は、S32で取得した送信関係情報をコネクション情報(「接続先IPアドレス」、「接続先ポート番号」、「接続元IPアドレス」、「接続元ポート番号」)としてコネクション情報テーブル18へ登録する(S42)。これにより、本フローを終了する。
【0068】
このように、スリーウェイハンドシェイクによるコネクション確立準備段階の間は、S31〜S33、S34で「No」、S36〜S37、S38で「No」、S40の処理を繰り返す。
【0069】
コネクション確立後に受信したパケットの場合、S31,S32の処理後、CPU0は、S32で取得した送信関係情報を用いてコネクション情報テーブル18を検索する。これにより、CPU0は、コネクションが確立しているかを検出し、さらにパケットの送信方向を検出する(S33)。
【0070】
S32で取得した送信関係情報と一致するコネクション情報がコネクション情報テーブル18に登録されている場合(S34で「Yes」)、CPU0は、コネクションの接続方向に対して、受信パケットの送信方向を「上り」と特定する(S35)。それから、CPU0は、S43の処理を行う。
【0071】
S32で取得した送信関係情報と一致するコネクション情報がコネクション情報テーブル18に登録されていない場合(S34で「No」)、CPU0は以下の処理を実行する。すなわち、CPU0は、送信関係情報の「送信先IPアドレス」と「送信元IPアドレス」の内容を入れ替え、「送信先ポート番号」と「送信元ポート番号」の内容と入れ替える(S36)。以下では、S36で入れ替えた送信関係情報を「入れ替え送信関係情報」という。
【0072】
CPU0は、入れ替え送信関係情報を用いてコネクション情報テーブル18を検索する。これにより、CPU0は、コネクションが確立しているかを検出し、さらにパケットの送信方向を検出する(S37)。具体的には、CPU0は、入れ替え送信関係情報と一致するコネクション情報がコネクション情報テーブル18に登録されているか否かを判断する。
【0073】
入れ替え送信関係情報と一致するコネクション情報がコネクション情報テーブル18に登録されている場合(S38で「Yes」)、CPU0は、コネクションの接続方向に対して、受信パケットの送信方向を「下り」と特定する(S39)。それから、CPU0は、S43の処理を行う。
【0074】
入れ替え送信関係情報と一致するコネクション情報がコネクション情報テーブル18に登録されていない場合(S38で「No」)、上述したように、S40〜S42の処理を行う。
【0075】
なお、以下では、パケットの送信方向が「上り」と特定された送信関係情報、及びパケットの送信方向が「下り」と特定された入れ替え送信関係情報を、「対象コネクション情報」という。
【0076】
S35またはS39の処理後、CPU0は、送信方向(上り/下り)単位に、連続して受信したパケットの受信間隔を測定する(S43)。パケットの受信間隔を測定するため、例えば、CPU0は次の処理を行う。上述したように、本実施形態では、パケットの送信間隔を、分析装置1における受信間隔として検出することとする。
【0077】
パケットの受信間隔を計測する第1の例として、CPU0は、自身の有するタイマー機能または時計回路を用いて、パケットを受信したときの時刻を取得する。CPU0は、前回、パケットを受信した時の時刻をメモリ11から読み出す。そして、CPU0は、その読み出した前回のパケットの受信時刻と、今回パケットを受信したときの受信時刻との差を受信間隔として算出する。それから、CPU0は、今回パケットを受信したときの受信時刻によって、メモリ11上に格納された前回の受信時刻を更新する。
【0078】
パケットの受信間隔を計測する第2の例として、CPU0は、CPU0の有するカウント機能または時計回路の有するカウント機能を用いて、パケットの受信間隔をカウントするようにしてもよい。例えば、パケットを受信した場合、カウンタを0で初期化して、次のパケットを受信するまでの間隔をカウントする。そのカウントした値を受信間隔としてもよい。
【0079】
CPU0は、S43で算出した受信間隔と、閾値とを比較する(S44)。ここで、閾値は、図14で説明した送信間隔についての閾値である。S43で算出した受信間隔が閾値以下である場合は、CPU0は、受信パケットがメッセージ内で2番目以降のパケットであると判定する。また、S43で算出した受信間隔が閾値より長い場合は、CPU0は、受信パケットがメッセージの先頭パケットであると判定する。
【0080】
S44において、先頭パケットであると判定した場合、CPU0は、図5に示す振り分け用テーブル19から各CPUに対応する「待機時間」19bを読み出し、最も短い待機時間のCPU番号を取得する(S45)。なお、「待機時間」19bには、各CPUの使用する現在のバッファ内に格納されたパケットの待機時間の合計が格納されている。
【0081】
CPU0は、S35またはS39で特定された受信パケットの送信方向と、対象コネクション情報と、S45で取得したCPU番号とを関係付けて、図7に示すCPU番号テーブル21に格納する(S46)。具体的には、CPU0は、CPU番号テーブル21から、対象コネクション情報に一致するコネクション情報を検索する。
【0082】
CPU番号テーブル21に、対象コネクション情報に一致するコネクション情報が存在しない場合、CPU0は、対象コネクション情報と、S45で取得したCPU番号とを関係付けてCPU番号テーブル21に格納する。このとき、CPU0は、受信パケットの送信方向が「上り」の場合、「上りCPU番号」21eに、S45で取得したCPU番号を格納する。また、CPU0は、受信パケットの送信方向が「下り」の場合、「下りCPU番号」21fに、S45で取得したCPU番号を格納する。
【0083】
CPU番号テーブル21に、対象コネクション情報に一致するコネクション情報が存在する場合、CPU0は、次を行う。すなわち、CPU0は、受信パケットの送信方向が「上り」の場合、検索されたコネクション情報に対応する「上りCPU番号」21eに、S45で取得したCPU番号を格納する。また、CPU0は、受信パケットの送信方向が「下り」の場合、検索されたコネクション情報に対応する「下りCPU番号」21fに、S45で取得したCPU番号を格納する。
【0084】
次に、CPU0は、メッセージ番号Mをインクリメントし、そのインクリメントしたメッセージ番号Mを、図8に示すメッセージ番号テーブル22に格納する(S47)。具体的には、CPU0は、メッセージ番号テーブル22から、対象コネクション情報に一致するコネクション情報を検索する。
【0085】
メッセージ番号テーブル22に、対象コネクション情報に一致するコネクション情報が存在しない場合、CPU0は、対象コネクション情報と、メッセージ番号N=1とを関係付けてメッセージ番号テーブル22に格納する。このとき、CPU0は、受信パケットの送信方向が「上り」の場合、「上りメッセージ」番号22eに「1」を格納する。また、CPU0は、受信パケットの送信方向が「下り」の場合、「下りメッセージ」番号22fに「1」を格納する。
【0086】
メッセージ番号テーブル22に、対象コネクション情報に一致するコネクション情報が存在する場合、CPU0は、次を行う。すなわち、CPU0は、受信パケットの送信方向が「上り」の場合、検索されたコネクション情報に対応する「上りメッセージ番号」22eの値をインクリメントする。また、CPU0は、受信パケットの送信方向が「下り」の場合、検索されたコネクション情報に対応する「下りメッセージ番号」22fの値をインクリメントする。
【0087】
CPU0は、S31で取得したパケットのIPヘッダから、「パケット長」を取得する。それから、CPU0は、図6に示す処理時間重み付け値テーブル20から、対象コネクション情報の「接続先ポート番号」に対応するプロトコル名に一致するプロトコル名を検索し、そのプロトコル名に対応する「1バイト当たりの処理時間」を取得する。CPU0は、取得したパケット長に、取得した「1バイト当たりの処理時間」を乗算して、そのプロトコルについての1パケット当たりの処理時間を算出する(S49)。
【0088】
CPU0は、振り分け用テーブル19において、S46で保存したCPU番号に対応する「待機時間」に、S49で算出した処理時間を加算する(S50)。
CPU0は、メモリ11において、S46で保存したCPU番号により特定されるCPUの使用するバッファを探索する(S51)。
【0089】
CPU0は、S31で取得したパケットに、S47で保存したメッセージ番号Mを付加し、さらにS35またはS39で特定したパケットの送信方向を「上り/下りフラグ」として付加する。CPU0は、S51で探索したバッファに、そのメッセージ番号と上り/下りフラグとを付加したパケットを書き込み(S52)、本フローは終了する。
【0090】
S44において、2番目以降のパケットであると判定した場合、CPU0は、先頭パケットの処理(S45−S47)のときに保存したCPU番号及びメッセージ番号を取得する(S48)。
【0091】
すなわち、受信パケットの送信方向が「上り」の場合、CPU0は、CPU番号テーブル21から、対象コネクション情報と一致するコネクション情報を検索し、その検索したコネクション情報に対応する「上りCPU番号」を取得する。このとき、CPU0は、メッセージ番号テーブル22から、対象コネクション情報と一致するコネクション情報を検索し、その検索したコネクション情報に対応する「上りメッセージ番号」を取得する。
【0092】
また、受信パケットの送信方向が「下り」の場合、CPU0は、CPU番号テーブル21から、対象コネクション情報と一致するコネクション情報を検索し、その検索したコネクション情報に対応する「下りCPU番号」を取得する。このとき、CPU0は、メッセージ番号テーブル22から、対象コネクション情報と一致するコネクション情報を検索し、その検索したコネクション情報に対応する「下りメッセージ番号」を取得する。
【0093】
CPU0は、S31で取得したパケットのIPヘッダから、「パケット長」を取得する。それから、CPU0は、処理時間重み付け値テーブル20から、対象コネクション情報の「接続先ポート番号」に対応するプロトコル名に一致するプロトコル名を検索し、そのプロトコル名に対応する「1バイト当たりの処理時間」を取得する。CPU0は、取得したパケット長に、取得した「1バイト当たりの処理時間」を乗算して、そのプロトコルについての1パケット当たりの処理時間を算出する(S49)。
【0094】
CPU0は、振り分け用テーブル19において、S48で取得したCPU番号に対応する「待機時間」に、S49で算出した処理時間を加算する(S50)。なお、振り分け用テーブル19は、分析アプリケーション14の起動時に作成されるようにしてもよい。この場合、各CPU番号の「待機時間」19bには、初期値0が格納されている。
【0095】
CPU0は、メモリ11において、S48で取得したCPU番号により特定されるCPUの使用するバッファを探索する(S51)。
CPU0は、S31で取得したパケットに、S48で取得したメッセージ番号を付加し、さらにS35またはS39で特定したパケットの送信方向を「上り/下りフラグ」として付加する。CPU0は、S51で探索したバッファに、そのメッセージ番号と上り/下りフラグを付加したパケットを書き込み(S52)、本フローは終了する。
【0096】
図18は、CPUnにより行われる、メッセージ単位でのパケットの分散処理シーケンスの詳細を示す。図18のフローは、図15のS17−S21の詳細を示す。
CPUnは、メモリ11において、自身の使用するバッファ11nから、メッセージ単位でパケットを読み出す(S61)。
【0097】
CPUnは、S61で読み出した各パケットのIPヘッダから「パケット長」を取得し、その「パケット長」の総和を「メッセージ長」として算出する(S62)。
次に、CPUnは、いずれかのパケット(例えば、先頭パケット)に付された上り/下りフラグを読み込む。読み込んだ上り/下りフラグが「上り」を示す場合、CPUnは、先頭パケットのTCPヘッダの「送信先ポート番号」を取得する。読み込んだ上り/下りフラグが「下り」を示す場合、CPUnは、先頭パケットのTCPヘッダの「送信元ポート番号」を取得する。CPUnは、この取得した「送信先ポート番号」(上り/下りフラグが「上り」を示す場合)または「送信元ポート番号」(上り/下りフラグが「下り」を示す場合)に基づいて、プロトコルを識別する(S63)。
【0098】
CPUnは、読み出した各パケットから分割されたメッセージを取り出し、メッセージを組み立てる。CPUnは、その組み立てたメッセージの内容(例えば、リクエスト、レスポンス、命令等)の解析を行う。このとき、CPUnは、その解析処理に費やした時間を計測する(S64)。
【0099】
CPUnは、処理時間重み付け値テーブル20から、S63で識別したプロトコル名に一致するプロトコル名を検索する。CPUnは、その検索したプロトコル名に対応する「解析したメッセージの長さ」、「解析したメッセージの処理時間」それぞれに、S62で測定したメッセージ長、S64で計測した解析処理時間を加算し更新する(S65)。
【0100】
さらに、CPUnは、S65で更新した「解析したメッセージの処理時間」を、S65で更新した「解析したメッセージの長さ」で除算し、1バイト当たりの処理時間を算出する。CPUは、処理時間重み付け値テーブル20において、S65で更新した「解析したメッセージの処理時間」及び「解析したメッセージの長さ」に対応する「1バイト当たりの処理時間」を、算出した1バイト当たりの処理時間で更新する(S66)。
【0101】
CPUnは、振り分け用テーブル19において、CPUn自身のCPU番号に対応する「待機時間」19bの値から、S64で測定した処理時間を差し引き、更新する(S67)。
【0102】
なお、上述の実施形態では、振り分け先の各CPUによって使用されるバッファ11内のパケットの待機時間に応じて、パケットを各CPUへ振り分けたが、これに限定されない。例えば、バッファの使用量、バッファの使用率、CPUの使用率等の、各プロセッサにかかる処理負荷を示す情報を取得し、その処理負荷に基づいてパケットを各CPUへ振り分けるようにしてもよい。
【0103】
例えば、処理負荷を示す情報がバッファの使用量である場合、振り分け用テーブル19において、「待機時間」19bの代わりに、「バッファの使用量」をデータ項目として保持するようにする。この場合、データ項目「バッファの使用量」には、各CPUの使用する現在のバッファ内に格納されたパケットのデータ容量の合計が格納されている。この場合、S45においてCPU0は振り分け用テーブルから各CPUに対応する「バッファの使用量」を読み出し、最も使用量の少ないCPU番号を取得する。そして、S50において、CPU0は、振り分け用テーブルにおいて、S46で保存したCPU番号に対応する「バッファの使用量」に、S49で取得したパケット長を加算する。そして、S67において、CPUnは、振り分け用テーブルにおいて、CPUn自身のCPU番号に対応する「バッファの使用量」の値から、S64で解析処理を行ったメッセージのメッセージ長を差し引き、更新する。
【0104】
また、例えば、処理負荷を示す情報がCPUの使用率である場合、各CPUの使用率をOS等から取得し、最も使用率の小さいCPUのバッファへパケットを振り分けるようにしてもよい。
【0105】
以上より、本実施形態に係る解析処理装置は、受信部、複数の処理部を含む。受信部は、ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信する。NIC13は、受信部の一例である。
【0106】
前記複数の処理部のうち所定の処理部は、前記受信部で受信したパケットの受信間隔を計測する。CPU0は、所定の処理部の一例である。それから、所定の処理部は、前記計測した受信間隔に応じて、1組のメッセージの先頭に対応するセグメントを含むパケットと、該メッセージの2番目以降に対応するセグメントを含むパケットとを検出する。それから、所定の処理部は、前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける。
【0107】
前記複数の処理部のうち、前記パケットを振り分けられた処理部は、組単位で前記振り分けられた前記パケットに基づいて、前記メッセージの解析を行う。CPU1、CPU2は、前記複数の処理部のうち、前記パケットを振り分けられた処理部の一例である。なお、複数の処理部の一例にCPU0が含まれていてもよい。
【0108】
これにより、ネットワーク上を流れるパケットについてのマルチプロセッサによる解析処理において、マルチプロセッサのリソースを効率よく利用することができる。すなわち、ネットワーク上を流れるパケットについてのマルチプロセッサによる解析処理において、メッセージ単位で振り分けることができる。したがって、メッセージ解析処理をするCPUがコネクション単位で固定されることがない。その結果、コネクション単位で振り分ける場合と比較して、コネクション確立後に処理量が変化しても、他のCPUへパケットを振り分けることができる。
【0109】
また、前記所定の処理部は、前記計測した受信間隔の値が閾値以上である場合、今回受信したパケットは、前記メッセージの先頭に対応するセグメントを含むパケットであると判定する。また、前記所定の処理部は、前記計測した受信間隔の値が閾値より小さい場合、今回受信したパケットは、該メッセージの2番目以降に対応するセグメントを含むパケットであると判定する。
【0110】
これにより、受信間隔(送信間隔)に応じて、同一メッセージに属するパケットか否かを判定することができる。
また、前記所定の処理部は、前記複数の処理部のそれぞれにかかる処理負荷に応じて、前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける。すなわち、今回受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合、前記所定の処理部は、前記複数の処理部から、前記処理負荷の最も少ない処理部を選択する。それから、所定の処理部は、組単位で前記パケットを識別するための識別情報を付加する。そして、所定の処理部は、該メッセージ識別情報が付加されたパケットを前記選択した処理部に振り分ける。
【0111】
これにより、処理負荷の少ないCPUにパケットを振り分けることができる。したがってよって、各CPUにより処理されるパケットの待機時間を平準化することができる。したがって、CPUにかかる負荷が特定のCPUに偏ることがなく、各CPUにかかる負荷を平準化することができる。
【0112】
また、前記今回受信したパケットが前記メッセージの2番目以降に対応するセグメントを含むパケットであると判定した場合、所定の処理部は、次を実行する。すなわち、所定の処理部は、直近に、前記受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合に付加したメッセージ識別情報と同一の識別情報を前記今回受信したパケットに付加する。そして、所定の処理部は、該識別情報が付加されたパケットを前記選択した処理部に振り分ける。
【0113】
これにより、受信したパケットをメッセージ単位で各CPUに割り振ることができる。
前記所定の処理部は、前記処理負荷の最も少ない処理部として、前記制御部のそれぞれが前記受信したパケットのメッセージの解析処理を行うまでのパケットの待機時間の最も少ない処理部を選択する。そして、前記所定の処理部は、前記受信した各パケットのヘッダから、接続先の前記コンピュータ側のポート番号を取得し、該取得したポート番号に対応するプロトコルに応じて、前記選択した処理部の前記待機時間に重み付けを行う。
【0114】
これにより、プロトコルに応じてパケット毎の処理時間に重み付けを行い、待機時間を平準化することができる。
本実施形態によれば、受信したパケットを、メッセージ単位でメッセージ解析処理に振り分けることができる。また、プロトコルに応じてパケット毎の処理時間に重み付けを行い、各CPUにより処理されるパケットの待機時間を平準化することができる。これにより、マルチプロセッサシステムのリソースを効率よく利用することができる。
【0115】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【0116】
上記実施形態に関し、更に以下の付記を開示する。
(付記1)
ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信する受信部と、
複数の処理部と、
を備え、
前記複数の処理部のうち所定の処理部は、
前記受信部で受信したパケットの受信間隔を計測し、
前記計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと、該メッセージの2番目以降に対応するセグメントを含むパケットとを検出し、
前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分け、
前記複数の処理部のうち、前記パケットを振り分けられた処理部は、該パケットに基づいて、メッセージの解析を行う
ことを特徴とする解析処理装置。(1、図3、図17)
(付記2)
前記所定の処理部は、前記計測した受信間隔の値が閾値以上である場合、今回受信したパケットは、前記メッセージの先頭に対応するセグメントを含むパケットであると判定し、前記計測した受信間隔の値が閾値より小さい場合、今回受信したパケットは、該メッセージの2番目以降に対応するセグメントを含むパケットであると判定する
ことを特徴とする付記1に記載の解析処理装置。(2、図17)
(付記3)
前記所定の処理部は、前記複数の処理部のそれぞれにかかる処理負荷に応じて、前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける
ことを特徴とする付記1または2に記載の解析処理装置。(3、図17)
(付記4)
今回受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合、前記所定の処理部は、前記複数の処理部から、前記処理負荷の最も少ない処理部を選択し、組単位で前記パケットを識別する識別情報を付加し、該識別情報が付加されたパケットを前記選択した処理部に振り分ける
ことを特徴とする付記3に記載の解析処理装置。(4、図17)
(付記5)
前記今回受信したパケットが前記メッセージの2番目以降に対応するセグメントを含むパケットであると判定した場合、直近に、前記受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合に付加した識別情報と同一の識別情報を前記今回受信したパケットに付加し、該識別情報が付加されたパケットを前記選択した処理部に振り分ける
ことを特徴とする付記4に記載の解析処理装置。
(付記6)
前記所定の処理部は、
前記処理負荷の最も少ない処理部として、前記制御部のそれぞれが前記受信したパケットのメッセージの解析処理を行うまでのパケットの待機時間の最も少ない処理部を選択し、
前記受信した各パケットのヘッダから、接続先の前記コンピュータ側のポート番号を取得し、該取得したポート番号に対応するプロトコルに応じて、前記選択した処理部の前記待機時間に重み付けを行う
ことを特徴とする付記4または5に記載の解析処理装置。(5、図17)
(付記7)
複数の処理部を含むコンピュータに、メッセージの解析を行う処理を実行させる解析処理プログラムであって、
前記複数の処理部のうち所定の処理部に、
ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信し、
前記受信したパケットの受信間隔を計測し、
前記計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと、該メッセージの2番目以降に対応するセグメントを含むパケットとを検出し、
前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける処理を実行させ、
前記複数の処理部のうち、前記パケットを振り分けられた処理部に、該パケットに基づいて、メッセージの解析を行う処理を実行させる解析処理プログラム。(6、図17)
(付記8)
前記計測した受信間隔の値が閾値以上である場合、今回受信したパケットは、前記メッセージの先頭に対応するセグメントを含むパケットであると判定し、前記計測した受信間隔の値が閾値より小さい場合、今回受信したパケットは、該メッセージの2番目以降に対応するセグメントを含むパケットであると判定する処理を前記所定の処理部に実行させる
ことを特徴とする付記7に記載の解析処理プログラム。
(付記9)
前記複数の処理部のそれぞれにかかる処理負荷に応じて、前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける処理を前記所定の処理部に実行させる
ことを特徴とする付記7または8に記載の解析処理プログラム。
(付記10)
今回受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合、前記所定の処理部は、前記複数の処理部から、前記処理負荷の最も少ない処理部を選択し、組単位で前記パケットを識別するための識別情報を付加し、該識別情報が付加されたパケットを前記選択した処理部に振り分ける処理を前記所定の処理部に実行させる
ことを特徴とする付記9に記載の解析処理プログラム。
(付記11)
前記今回受信したパケットが前記メッセージの2番目以降に対応するセグメントを含むパケットであると判定した場合、直近に、前記受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合に付加した識別情報と同一の識別情報を前記今回受信したパケットに付加し、該識別情報が付加されたパケットを前記選択した処理部に振り分ける処理を前記所定の処理部に実行させる
ことを特徴とする付記10に記載の解析処理プログラム。
(付記12)
前記所定の処理部に、
前記処理負荷の最も少ない処理部として、前記制御部のそれぞれが前記受信したパケットのメッセージの解析処理を行うまでのパケットの待機時間の最も少ない処理部を選択し、
前記受信した各パケットのヘッダから、接続先の前記コンピュータ側のポート番号を取得し、該取得したポート番号に対応するプロトコルに応じて、前記選択した処理部の前記待機時間に重み付けを行う
処理を実行させることを特徴とする付記10または11に記載の解析処理プログラム。
(付記13)
複数の処理部を含むコンピュータに、メッセージの解析処理を実行させる解析処理方法であって、
前記複数の処理部のうち所定の処理部に、
ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信し、
前記受信したパケットの受信間隔を計測し、
前記計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと、該メッセージの2番目以降に対応するセグメントを含むパケットとを検出し、
前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける処理を実行させ、
前記複数の処理部のうち、前記パケットを振り分けられた処理部に、該パケットに基づいて、メッセージの解析処理を実行させることを特徴とする解析処理方法。(7、図17)
(付記14)
前記計測した受信間隔の値が閾値以上である場合、今回受信したパケットは、前記メッセージの先頭に対応するセグメントを含むパケットであると判定し、前記計測した受信間隔の値が閾値より小さい場合、今回受信したパケットは、該メッセージの2番目以降に対応するセグメントを含むパケットであると判定する処理を前記所定の処理部に実行させる
ことを特徴とする付記13に記載の解析処理方法。
(付記15)
前記所定の処理部は、前記複数の処理部のそれぞれにかかる処理負荷に応じて、前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける処理を前記所定の処理部に実行させる
ことを特徴とする付記13または14に記載の解析処理方法。
(付記16)
今回受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合、前記所定の処理部は、前記複数の処理部から、前記処理負荷の最も少ない処理部を選択し、組単位で前記パケットを識別するための識別情報を付加し、該識別情報が付加されたパケットを前記選択した処理部に振り分ける処理を前記所定の処理部に実行させる
ことを特徴とする付記15に記載の解析処理方法。
(付記17)
前記今回受信したパケットが前記メッセージの2番目以降に対応するセグメントを含むパケットであると判定した場合、直近に、前記受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合に付加した識別情報と同一の識別情報を前記今回受信したパケットに付加し、該識別情報が付加されたパケットを前記選択した処理部に振り分ける処理を前記所定の処理部に実行させる
ことを特徴とする付記16に記載の解析処理方法。
(付記18)
前記所定の処理部に、
前記処理負荷の最も少ない処理部として、前記制御部のそれぞれが前記受信したパケットのメッセージの解析処理を行うまでのパケットの待機時間の最も少ない処理部を選択し、
前記受信した各パケットのヘッダから、接続先の前記コンピュータ側のポート番号を取得し、該取得したポート番号に対応するプロトコルに応じて、前記選択した処理部の前記待機時間に重み付けを行う処理を実行させる
ことを特徴とする付記16または17に記載の解析処理方法。
【符号の説明】
【0117】
1 分析装置
2 情報システム
3 コンピュータ
4 SW
10 マルチプロセッサ
10a CPU0
10b CPU1
10c CPU2
11 メモリ
11a,11b バッファ
12 記憶装置
13 NIC
14 分析アプリケーション
15 パケット受信プログラム
16 メッセージ解析プログラム
17 OS
18 コネクション情報テーブル
19 振り分け用テーブル
20 処理時間重み付け値テーブル
21 CPU番号テーブル
22 メッセージ番号テーブル

【特許請求の範囲】
【請求項1】
ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信する受信部と、
複数の処理部と、
を備え、
前記複数の処理部のうち所定の処理部は、
前記受信部で受信したパケットの受信間隔を計測し、
前記計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと、該メッセージの2番目以降に対応するセグメントを含むパケットとを検出し、
前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分け、
前記複数の処理部のうち、前記パケットを振り分けられた処理部は、該パケットに基づいて、メッセージの解析を行う
ことを特徴とする解析処理装置。
【請求項2】
前記所定の処理部は、前記計測した受信間隔の値が閾値以上である場合、今回受信したパケットは、前記メッセージの先頭に対応するセグメントを含むパケットであると判定し、前記計測した受信間隔の値が閾値より小さい場合、今回受信したパケットは、該メッセージの2番目以降に対応するセグメントを含むパケットであると判定する
ことを特徴とする請求項1に記載の解析処理装置。
【請求項3】
前記所定の処理部は、前記複数の処理部のそれぞれにかかる処理負荷に応じて、前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける
ことを特徴とする請求項1または2に記載の解析処理装置。
【請求項4】
今回受信したパケットが前記メッセージの先頭に対応するセグメントを含むパケットであると判定した場合、前記所定の処理部は、前記複数の処理部から、前記処理負荷の最も少ない処理部を選択し、組単位で前記パケットを識別する識別情報を付加し、該識別情報が付加されたパケットを前記選択した処理部に振り分ける
ことを特徴とする請求項3に記載の解析処理装置。
【請求項5】
前記所定の処理部は、
前記処理負荷の最も少ない処理部として、前記制御部のそれぞれが前記受信したパケットのメッセージの解析処理を行うまでのパケットの待機時間の最も少ない処理部を選択し、
前記受信した各パケットのヘッダから、接続先の前記コンピュータ側のポート番号を取得し、該取得したポート番号に対応するプロトコルに応じて、前記選択した処理部の前記待機時間に重み付けを行う
ことを特徴とする請求項4に記載の解析処理装置。
【請求項6】
複数の処理部を含むコンピュータに、メッセージの解析を行う処理を実行させる解析処理プログラムであって、
前記複数の処理部のうち所定の処理部に、
ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信し、
前記受信したパケットの受信間隔を計測し、
前記計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと、該メッセージの2番目以降に対応するセグメントを含むパケットとを検出し、
前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける処理を実行させ、
前記複数の処理部のうち、前記パケットを振り分けられた処理部に、該パケットに基づいて、メッセージの解析を行う処理を実行させる解析処理プログラム。
【請求項7】
複数の処理部を含むコンピュータに、メッセージの解析処理を実行させる解析処理方法であって、
前記複数の処理部のうち所定の処理部に、
ネットワークを介して接続されたコンピュータ間で送受されるパケットを受信し、
前記受信したパケットの受信間隔を計測し、
前記計測した受信間隔に応じて、1組の、メッセージの先頭に対応するセグメントを含むパケットと、該メッセージの2番目以降に対応するセグメントを含むパケットとを検出し、
前記検出したパケットを、組単位で前記複数の処理部のいずれかに振り分ける処理を実行させ、
前記複数の処理部のうち、前記パケットを振り分けられた処理部に、該パケットに基づいて、前記メッセージの解析処理を実行させることを特徴とする解析処理方法。

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図1】
image rotate

【図15】
image rotate


【公開番号】特開2012−100012(P2012−100012A)
【公開日】平成24年5月24日(2012.5.24)
【国際特許分類】
【出願番号】特願2010−245273(P2010−245273)
【出願日】平成22年11月1日(2010.11.1)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】