[0001]本発明は、異常検知方法及び異常検知プログラムに関する。
[0002]近年、物理マシンにおいて生成したコンテナや仮想マシン(VM:Virtual Machine)等の貸し出しを行うクラウドサービスの提供が行われている。
[0003]具体的に、クラウドサービスの提供を行う事業者(以下、単にクラウド事業者とも呼ぶ)は、例えば、情報処理システムの構築を行う利用者(以下、単にクラウド利用者とも呼ぶ)に対して仮想マシンやコンテナ(以下、仮想マシン等とも呼ぶ)の貸し出しを行う。そして、クラウド利用者は、クラウド事業者から借り受けた仮想マシン等において構築した情報処理システムを稼働させることによって、例えば、サービスを利用する利用者(以下、サービス利用者とも呼ぶ)に対して各種サービスの提供を行う。
[0004]ここで、上記のようなクラウドサービスの提供が行われる場合、クラウド事業者は、安定的なサービスの提供を行う観点から、例えば、仮想マシン等がパケットの送受信を行う際に用いる仮想インフラについての監視を行う。
[0005]具体的に、クラウド事業者は、例えば、正常な振る舞いから逸脱した振る舞いを異常として検知するアノマリ検知を行うことによって、仮想インフラにおいて発生した異常の検知を行う(例えば、特許文献1参照)。
[0006]国際公開第2019/142331号
[0007]上記のような仮想インフラについてのアノマリ検知を行う場合、受信スレッドが動作する情報処理装置(以下、単に情報処理装置とも呼ぶ)は、例えば、正常な状態における受信スレッドの挙動と、情報処理装置(自装置)に搭載された物理ネットワークインタフェースカード(以下、物理NICとも呼ぶ)において発生したパケットロス数との相関関係(以下、単に相関関係とも呼ぶ)を予め学習する。そして、情報処理装置は、例えば、現在の相関関係が予め学習した相関関係の範囲から逸脱していると判定した場合、受信スレッドにおいて異常が発生しているものと判定する。
[0008]ここで、情報処理装置に搭載された物理NICがマルチキューに対応する物理NIC(マルチキュー対応NIC)である場合、情報処理装置は、例えば、各キューに対応する受信スレッドごとにアノマリ検知を行うことが好ましい。
[0009]しかしながら、受信スレッドや物理NICから取得可能な情報には、受信スレッドごとのアノマリ検知を行うために必要な全ての情報が含まれていない。そのため、情報処理装置は、情報処理装置に搭載された物理NICがマルチキュー対応NICである場合、受信スレッドにおける異常検知を精度良く行うことができない。
[0010]そこで、一つの側面では、本発明は、マルチキューに対応する物理NICが用いられている場合であっても受信スレッドの異常の検知を精度良く行うことを可能とする異常検知方法及び異常検知プログラムを提供することを目的とする。
[0011]実施の形態の一態様では、パケットの受信を行う複数のプロセスのそれぞれが待機状態にあった第1時間、または、前記複数のプロセスが受信を行うパケットが格納された複数のキューのそれぞれにおけるパケットの到着頻度に基づいて、前記複数のキューのそれぞれにおけるパケットロスの発生度合いを算出し、算出した前記発生度合いに基づいて、前記複数のキューを有する通信装置において発生したパケットロス数を前記複数のキューのそれぞれに分配し、前記複数のプロセスごとに、各プロセスにおける動作状態と、前記複数のキューのうちの各プロセスに対応するキューに分配した前記パケットロス数との対応関係に基づいて、前記複数のプロセスのそれぞれにおける異常発生の有無を判定する、処理をコンピュータに実行させる。
[0012]一つの側面によれば、マルチキューに対応する物理NICが用いられている場合であっても受信スレッドの異常の検知を精度良く行うことを可能とする。
[0013]図1は、情報処理システム10の構成について説明する図である。 図2は、情報処理装置1の構成の具体例について説明する図である。 図3は、受信スレッド12のアノマリ検知の具体例について説明する図である。 図4は、受信スレッド12のそれぞれについてのアノマリ検知を行う場合の具体例を説明する図である。 図5は、情報処理装置1のハードウエア構成を説明する図である。 図6は、情報処理装置1の機能のブロック図である。 図7は、第1の実施の形態における異常検知処理の概略を説明するフローチャート図である。 図8は、第1の実施の形態における異常検知処理の詳細を説明するフローチャート図である。 図9は、第1の実施の形態における異常検知処理の詳細を説明するフローチャート図である。 図10は、第1の実施の形態における異常検知処理の詳細を説明するフローチャート図である。 図11は、合計待機時間情報131、回数情報132及び平均待機時間情報133の具体例について説明する図である。 図12は、第1の実施の形態における異常検知処理の詳細を説明する図である。 図13は、実行時間情報134及び到着数情報135の具体例について説明する図である。 図14は、到着頻度情報136の具体例を説明する図である。 図15は、第1の実施の形態における異常検知処理の詳細を説明する図である。 図16は、発生度合情報137の具体例について説明する図である。 図17は、第1の実施の形態における異常検知処理の詳細を説明する図である。 図18は、合計ロス数情報138及びロス数情報139の具体例を説明する図である。
[0014][情報処理システムの構成] 初めに、情報処理システム10の構成について説明を行う。図1は、情報処理システム10の構成について説明する図である。
[0015]図1に示す情報処理システム10は、情報処理装置1と、クラウド事業者が必要な情報の入力等を行う操作端末2とを有する。操作端末2は、インターネット等のネットワークNWを介して情報処理装置1とアクセスが可能である。
[0016]情報処理装置1では、例えば、クラウド事業者が管理する1以上の物理マシンであって、クラウド利用者に貸し出しを行う仮想マシン等(図示しない)が動作する。そして、クラウド利用者は、クラウド事業者から借り受けた仮想マシン等を用いることによって、サービス事業者に対して各種サービスの提供を行う。
[0017]また、情報処理装置1は、クラウドサービスの安定的な提供を行う観点から、アノマリ検知を行うことによって仮想インフラについての監視を行う。具体的に、情報処理装置1は、例えば、アノマリ検知を行うことによって受信スレッドの挙動についての監視を行う。以下、情報処理装置1の構成の具体例について説明を行う。
[0018][情報処理装置の構成の具体例] 図2は、情報処理装置1の構成の具体例について説明する図である。
[0019]図2に示す例において、情報処理装置1に取り付けられた物理NIC13は、パケットを格納するRINGバッファであるキュー14a、14b及び14c(以下、これらを総称してキュー14とも呼ぶ)を有する。
[0020]また、物理NIC13では、外部(例えば、ネットワークNW)から送信されたパケットを受信する処理である受信処理14dと、受信処理14dにおいて受信したパケットの振り分けを行う振分処理14eとが実行される。さらに、物理NIC13では、振分処理14eにおいて振り分けられたパケットをキュー14a、14b及び14cのそれぞれに格納するエンキュー処理14f、14g及び14hが実行される。なお、図2に示す例において、エンキュー処理14fは、キュー14aにパケットを格納する処理であり、エンキュー処理14gは、キュー14bにパケットを格納する処理であり、エンキュー処理14hは、キュー14cにパケットを格納する処理である。
[0021]また、図2に示す例において、情報処理装置1におけるOS(Operating System)11では、キュー14a、14b及び14cに格納されたパケットを取り出して宛先の仮想マシン等に転送するプロセスである受信スレッド12a、12b及び12c(以下、これらを総称して受信スレッド12とも呼ぶ)が動作する。図2に示す例において、受信スレッド12aは、キュー14aに格納されたパケットを取り出し、受信スレッド12bは、キュー14bに格納されたパケットを取り出し、受信スレッド12cは、キュー14cに格納されたパケットを取り出す。
[0022]すなわち、図2に示す物理NIC13は、3つのキューを有するマルチキュー対応NICである。そのため、情報処理装置1は、この場合、OS11において受信スレッド12a、12b及び12cを並行して動作させることによって、外部から送信されたパケットの受信に伴う処理を高速に行う。
[0023]ここで、情報処理装置1は、上記のようにマルチキュー対応NICである物理NIC13を有する場合、受信スレッド12に対して行うアノマリ検知を受信スレッド12ごとに行うことが好ましい。以下、受信スレッド12のアノマリ検知の具体例について説明を行う。
[0024][受信スレッドのアノマリ検知の具体例] 図3及び図4は、受信スレッド12のアノマリ検知の具体例について説明する図である。具体的に、図3は、受信スレッド12の全体としてのアノマリ検知を行う場合の具体例を説明する図であり、図4は、受信スレッド12のそれぞれについてのアノマリ検知を行う場合の具体例を説明する図である。
[0025]図3等に示すグラフは、横軸がパケットロス数を示し、縦軸が受信スレッド12の挙動を示す値を示している。また、図3等に示す例において、直線CCは、正常な状態における受信スレッド12の挙動と物理NIC13におけるパケットロス数との相関関係の学習によって特定された直線である。さらに、図3等に示す例において、直線CCaは、相関関係が正常であると判断できる範囲の上限を示す直線であり、直線CCbは、相関関係が正常であると判断できる範囲の下限を示す直線である。
[0026]具体的に、図3に示す例において、受信スレッド12の全体として挙動を示す値(各受信スレッド12についての挙動を示す値の合算値)と物理NIC13の全体において発生したパケットロス数とに対応する点P12は、直線CCaと直線CCbとの間の領域に含まれている。そのため、情報処理装置1は、この場合、受信スレッド12において異常が発生していないものと判定する。
[0027]一方、図4に示す例において、受信スレッド12aの挙動を示す値とキュー14aにおいて発生したパケットロス数とに対応する点P12aと、受信スレッド12cの挙動を示す値とキュー14cにおいて発生したパケットロス数とに対応する点P12cとは、直線CCaと直線CCbとの間の領域に含まれているが、受信スレッド12bの挙動を示す値とキュー14bにおいて発生したパケットロス数とに対応する点P12bは、直線CCaと直線CCbとの間の領域に含まれていない。そのため、情報処理装置1は、この場合、受信スレッド12bにおいて異常が発生しているものと判定する。
[0028]すなわち、図3で説明したように、受信スレッド12の全体としてのアノマリ検知を行う場合、受信スレッド12の一部において発生している異常の検知ができない可能性がある。そのため、情報処理装置1は、図2に示すようにマルチキュー対応NICである物理NIC13を有する場合、受信スレッド12の全体としてのアノマリ検知を行うよりも、受信スレッド12ごとにアノマリ検知を行う方が好ましい。
[0029]しかしながら、OS11や物理NIC13から取得可能な情報には、受信スレッド12ごとのアノマリ検知を行うために必要な全ての情報が含まれていない。具体的に、情報処理装置1は、例えば、キュー14のそれぞれにおいて発生したパケットロス数を取得することができない。
[0030]そのため、情報処理装置1は、受信スレッド12ごとのアノマリ検知を行うことができず、受信スレッド12における異常検知を精度良く行うことができない場合がある。
[0031]そこで、本実施の形態における情報処理装置1は、複数の受信スレッド12のそれぞれが待機状態にあった時間(以下、第1時間とも呼ぶ)、または、複数の受信スレッド12が受信を行うパケットが格納された複数のキュー14のそれぞれにおけるパケットの到着頻度に基づいて、複数のキュー14のそれぞれにおけるパケットロスの発生度合い(パケットロスの発生し易さ)を算出する。
[0032]そして、情報処理装置1は、算出した発生度合いに基づいて、複数のキュー14が動作する物理NIC13において発生したパケットロス数を複数のキュー14のそれぞれに分配する。
[0033]その後、情報処理装置1は、複数の受信スレッド12ごとに、各受信スレッド12における動作状態と、複数のキュー14のうちの各プロセスに対応するキュー14に分配したパケットロス数との対応関係に基づいて、複数の受信スレッド12における異常発生の有無を判定する。
[0034]すなわち、本実施の形態における情報処理装置1は、OS11や物理NIC13から取得可能な情報から、各キュー14において発生したパケットロス数を推測する。具体的に、情報処理装置1は、例えば、OS11から取得可能な情報と、物理NIC13から取得可能な情報とを組み合わることによって、各キュー14において発生したパケットロス数の推測を行う。そして、情報処理装置1は、各キュー14におけるパケットロス数の推測値を用いることによって、受信スレッド12ごとにアノマリ検知を行う。
[0035]これにより、本実施の形態における情報処理装置1は、マルチキューに対応する物理NIC13が用いられている場合であっても、アノマリ検知を受信スレッド12ごとに行うことが可能になる。そのため、情報処理装置1は、受信スレッド12における異常検知を精度良く行うことが可能になる。
[0036][情報処理システムのハードウエア構成] 次に、情報処理システム10のハードウエア構成について説明する。図5は、情報処理装置1のハードウエア構成を説明する図である。
[0037]情報処理装置1は、図5に示すように、プロセッサであるCPU101と、メモリ102と、通信装置103と、記憶媒体104とを有する。各部は、バス105を介して互いに接続される。
[0038]記憶媒体104は、例えば、受信スレッド12ごとにアノマリ検知を行う処理(以下、異常検知処理とも呼ぶ)を行うためのプログラム110を記憶するプログラム格納領域(図示しない)を有する。また、記憶媒体104は、例えば、異常検知処理を行う際に用いられる情報を記憶する情報格納領域130を有する。なお、記憶媒体104は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)であってよい。
[0039]CPU101は、記憶媒体104からメモリ102にロードされたプログラム110を実行して異常検知処理を行う。
[0040]また、通信装置103は、例えば、ネットワークNWを介して操作端末2との通信を行う。
[0041][情報処理システムの機能] 次に、情報処理システム10の機能について説明を行う。図6は、情報処理装置1の機能のブロック図である。
[0042]情報処理装置1は、図6に示すように、例えば、CPU101やメモリ102等のハードウエアとプログラム110とが有機的に協働することにより、情報取得部111と、度合算出部112と、ロス数分配部113と、条件判定部114と、情報出力部115とを含む各種機能を実現する。
[0043]また、情報処理装置1は、例えば、図6に示すように、合計待機時間情報131と、回数情報132と、平均待機時間情報133と、実行時間情報134と、到着数情報135と、到着頻度情報136と、発生度合情報137と、合計ロス数情報138と、ロス数情報139と、判定結果情報140とを情報格納領域130に記憶する。
[0044]情報取得部111は、OS11(受信スレッド12のそれぞれ)から、所定時間内において受信スレッド12のそれぞれが待機状態にあった時間の合計時間を示す合計待機時間情報131を取得する。所定時間は、例えば、3分等の時間であってよい。
[0045]また、情報取得部111は、OS11(受信スレッド12のそれぞれ)から、所定期間内において受信スレッド12のそれぞれが実行状態から待機状態に切替えられた回数を示す回数情報132を取得する。
[0046]また、情報取得部111は、OS11(受信スレッド12のそれぞれ)から、所定期間内において受信スレッド12のそれぞれが実行状態にあった実行時間(以下、第2時間とも呼ぶ)を示す実行時間情報134を取得する。
[0047]また、情報取得部111は、物理NIC13から、情報処理装置1の外部から物理NIC13に到着したパケットの総数を示す到着数情報135を取得する。
[0048]また、情報取得部111は、物理NIC13から、物理NIC13において発生したパケットロス数を示す合計ロス数情報138を取得する。
[0049]度合算出部112は、受信スレッド12ごとに、各受信スレッド12に対応する合計待機時間情報131が示す合計時間を、各受信スレッド12に対応する回数情報132が示す回数で除算することによって算出された平均待機時間情報133を取得する。すなわち、平均待機時間情報133は、各受信スレッド12が実行状態から待機状態に切り替わった場合における待機時間の平均時間を示す情報である。
[0050]また、度合算出部112は、受信スレッド12ごとに、各受信スレッドに対応する実行時間情報134が示す実行時間を、全ての受信スレッド12に対応する実行時間情報134が示す実行時間の合計値で除算することによって算出された割合を取得する。そして、度合算出部112は、キュー14ごとに、各キュー14に対応する受信スレッド12の割合と、到着数情報135が示すパケットの総数との積を、各キュー14におけるパケットの到着頻度を示す到着頻度情報136として取得する。
[0051]また、度合算出部112は、キュー14ごとに、各キュー14に対応する受信スレッド12についての平均待機時間情報133が示す平均時間、または、各キュー14における到着頻度情報136が示す到着頻度に基づいて、各キュー14におけるパケットロスの発生度合い(パケットロスの発生し易さ)を示す発生度合情報137として取得する。
[0052]具体的に、度合算出部112は、例えば、キュー14ごとに、各キュー14に対応する受信スレッド12についての平均待機時間情報133が示す平均時間と、各キュー14における到着頻度情報136が示す到着頻度との積を、各キュー14におけるパケットロスの発生度合いを示す発生度合情報137として取得する。
[0053]ロス数分配部113は、キュー14ごとに、各キュー14に対応する発生度合情報137が示す発生度合いを、全てのキュー14に対応する発生度合情報137が示す発生度合いの合計値で除算することによって算出された割合を取得する。そして、ロス数分配部113は、キュー14ごとに、各キュー14に対応する割合と、合計ロス数情報138が示すパケットロス数との積を、各キュー14に対応するパケットロス数(パケットロス数の推測値)を示すロス数情報139として取得する。
[0054]条件判定部114は、受信スレッド12ごとに、各受信スレッド12における動作状態と、各受信スレッド12に対応するキュー14のパケットロス数(ロス数情報139に対応するパケットロス数)との対応関係に基づいて、各受信スレッド12における異常発生の有無を判定する。
[0055]情報出力部115は、例えば、条件判定部114によって行われた判定の結果を示す判定結果情報140を操作端末2に出力する。
[0056]なお、情報取得部111、度合算出部112、ロス数分配部113、条件判定部114及び情報出力部115のそれぞれは、OS11の機能であってもよいし、OS11上において動作するアプリケーションの機能であってもよい。
[0057][第1の実施の形態の概略] 次に、第1の実施の形態の概略について説明する。図7は、第1の実施の形態における異常検知処理の概略を説明するフローチャート図である。
[0058]情報処理装置1は、図7に示すように、異常検知タイミングになるまで待機する(S101のNO)。異常検知タイミングは、例えば、事業者が異常検知処理を行う旨の情報を情報処理装置1に入力したタイミングであってよい。また、異常検知タイミングは、例えば、10分等の所定時間ごとであってもよい。
[0059]そして、異常検知タイミングになった場合(S101のYES)、情報処理装置1は、複数の受信スレッド12のそれぞれが待機状態にあった時間、または、複数の受信スレッド12のそれぞれが受信を行うパケットが格納された複数のキュー14のそれぞれにおけるパケットの到着頻度に基づいて、複数のキュー14のそれぞれにおけるパケットロスの発生度合いを算出する(S102)。
[0060]続いて、情報処理装置1は、S102の処理で算出した発生度合いに基づいて、複数のキュー14が動作する物理NIC13において発生したパケットロス数を複数のキュー14のそれぞれに分配する(S103)。
[0061]その後、情報処理装置1は、複数の受信スレッド12のそれぞれについて、各受信スレッド12における動作状態と、各受信スレッド12に対応するキュー14のパケットロス数との対応関係が所定の条件を満たすか否かを判定する(S104)。
[0062]すなわち、本実施の形態における情報処理装置1は、OS11や物理NIC13から取得可能な情報から、各キュー14において発生したパケットロス数を推測する。具体的に、情報処理装置1は、例えば、OS11から取得可能な情報と、物理NIC13から取得可能な情報とを組み合わることによって、各キュー14において発生したパケットロス数の推測を行う。そして、情報処理装置1は、各キュー14におけるパケットロス数の推測値を用いることによって、受信スレッド12ごとにアノマリ検知を行う。
[0063]これにより、本実施の形態における情報処理装置1は、マルチキューに対応する物理NIC13が用いられている場合であっても、アノマリ検知を受信スレッド12ごとに行うことが可能になる。そのため、情報処理装置1は、受信スレッド12における異常検知を精度良く行うことが可能になる。
[0064][第1の実施の形態の詳細] 次に、第1の実施の形態の詳細について説明する。図8から図10は、第1の実施の形態における異常検知処理の詳細を説明するフローチャート図である。また、図11から図18は、第1の実施の形態における異常検知処理の詳細を説明する図である。
[0065]なお、以下、受信スレッド12の全てについて異常検知を行う場合について説明を行うが、受信スレッド12のうちのいずれか(例えば、事業者によって指定された受信スレッド12)についてのみ異常検知を行うものであってもよい。
[0066]情報処理装置1の情報取得部111は、図8に示すように、異常検知タイミングになるまで待機する(S11のNO)。
[0067]そして、異常検知タイミングになった場合(S11のYES)、情報取得部111は、OS11(複数の受信スレッド12のそれぞれ)から、所定時間内において受信スレッド12のそれぞれが待機状態にあった時間の合計時間を示す合計待機時間情報131を取得する(S12)。
[0068]また、情報取得部111は、この場合、OS11(複数の受信スレッド12のそれぞれ)から、所定期間内において受信スレッド12のそれぞれが実行状態から待機状態に切替えられた回数を示す回数情報132を取得する(S13)。
[0069]また、情報取得部111は、この場合、OS11(複数の受信スレッド12のそれぞれ)から、所定期間内において受信スレッド12のそれぞれが実行状態にあった実行時間を示す実行時間情報134を取得する(S14)。
[0070]また、情報取得部111は、この場合、物理NIC13から、情報処理装置1の外部から物理NIC13に到着したパケットの総数を示す到着数情報135を取得する(S15)。
[0071]さらに、情報取得部111は、この場合、物理NIC13から、物理NIC13におけるパケットロス数を示す合計ロス数情報138を取得する(S16)。
[0072]そして、情報処理装置1の度合算出部112は、図9に示すように、複数の受信スレッド12ごとに、S12の処理で取得した合計待機時間情報131が示す合計時間を、S13の処理で取得した回数情報132が示す回数で除算することによって、各受信スレッド12が実行状態から待機状態に切り替わった場合における待機時間の平均時間を示す平均待機時間情報133を取得する(S21)。以下、S21の処理の具体例について説明を行う。
[0073][S21の処理の具体例] 図11は、合計待機時間情報131、回数情報132及び平均待機時間情報133の具体例について説明する図である。図11(A)は、合計待機時間情報131の具体例を説明する図であり、図11(B)は、回数情報132の具体例を説明する図であり、図11(C)は、平均待機時間情報133の具体例を説明する図である。なお、図11(A)及び(B)に示す合計待機時間情報131及び回数情報132は、受信スレッド12のうちの1つについて取得した情報の具体例であり、図11(C)に示す平均待機時間情報133は、受信スレッド12のうちの1つについて算出した情報の具体例である。
[0074]具体的に、図11(A)に示す合計待機時間情報131には、「3.43(ms)」が設定されており、図11(B)に示す回数情報132には、「2.9(回)」が設定されている。
[0075]そのため、度合算出部112は、この場合、図11(C)に示すように、「3.43(ms)」を「2.9(回)」で除算することによって算出される「1.44(ms)」を、平均待機時間情報133として取得する。
[0076]図9に戻り、度合算出部112は、S14の処理で取得した実行時間情報134が示す実行時間の合計時間を算出する(S22)。
[0077]そして、度合算出部112は、複数の受信スレッド12ごとに、S14の処理で取得した実行時間情報134が示す実行時間を、S22の処理で算出した合計時間で除算することによって算出した割合を取得する(S23)。
[0078]その後、度合算出部112は、複数のキュー14ごとに、S23の処理で取得した各キュー14に対応する受信スレッド12の割合と、S15の処理で取得した到着数情報135が示すパケットの総数との積を、各キュー14における到着頻度を示す到着頻度情報136として算出する(S24)。
[0079]すなわち、実行時間が他の受信スレッド12よりも長い受信スレッド12は、他の受信スレッド12よりも多くのパケットの処理を行っていると判断することが可能である。そのため、他の受信スレッド12よりも多くのパケットの処理を行っている受信スレッド12に対応するキュー14には、他のキュー14よりも多くのパケットが到着していると判断することが可能である。
[0080]具体的に、図12に示すように、例えば、受信スレッド12a、12b及び12cのそれぞれの実行時間が「W 1 」、「W 2 」及び「W 3 」であって、かつ、「W 3 」、「W 2 」及び「W 1 」の順に長い時間に対応する場合、パケットの到着数の順序は、キュー14c、14b及び14aの順になる。
[0081]したがって、度合算出部112は、例えば、各キュー14におけるパケットの到着数の比が各受信スレッド12における実行時間の長さの比と等しくなるように、物理NIC13におけるパケットの到着数を各キュー14に配分する。
[0082]具体的に、図12に示すように、例えば、物理NIC13におけるパケットの到着数が「N(個)」である場合、度合算出部112は、キュー14a、14b及び14cのそれぞれにおけるパケットの到着数である「n 1 」、「n 2 」及び「n 3 」の比が「W 1 」、「W 2 」及び「W 3 」の比と等しくなるように、「n 1 」、「n 2 」及び「n 3 」のそれぞれを算出する。
[0083]これにより、度合算出部112は、各キュー14におけるパケットの到着数を推測することが可能になる。
[0084]なお、度合算出部112は、S23の処理で取得した各キュー14に対応する受信スレッド12の割合と、S15の処理で取得した到着数情報135が示すパケットの総数との積を、S12等の処理において用いた所定時間でさらに除算することによって、到着頻度情報136の算出を行うものであってもよい。以下、S24の処理の具体例について説明を行う。
[0085][S24の処理の具体例] 図13は、実行時間情報134及び到着数情報135の具体例について説明する図である。図13(A)は、実行時間情報134の具体例を説明する図であり、図13(B)は、到着数情報135の具体例を説明する図である。また、図14は、到着頻度情報136の具体例を説明する図である。
[0086]具体的に、図13(A)に示す実行時間情報134において、受信スレッド12aの実行時間を示す「実行時間12a」には、「224(ms)」が設定されており、「実行時間12b」には、「248(ms)」が設定されており、「実行時間12c」には、「226(ms)」が設定されている。また、図13(B)に示す到着数情報135には、「134890(個)」が設定されている。
[0087]そのため、度合算出部112は、S22の処理において、受信スレッド12aの実行時間である「224(ms)」と、受信スレッド12bの実行時間である「248(ms)」と、受信スレッド12cの実行時間である「226(ms)」との合計である「698(ms)」を算出する。
[0088]そして、度合算出部112は、S23及びS24の処理において、例えば、受信スレッド12aの実行時間である「248(ms)」を、S22の処理で算出した合計値である「698(ms)」で除算し、さらに、到着数情報135が示す「134890(個)」を乗算することによって算出した「43288(個)」を、受信スレッド12aに対応するキュー14aの到着頻度として算出する。
[0089]その後、度合算出部112は、例えば、図14に示すように、キュー14aの到着頻度を示す「到着頻度14a」に「43288(個)」を設定する。
[0090]図9に戻り、度合算出部112は、複数のキュー14ごとに、S21の処理で取得した各キュー14に対応する受信スレッド12の平均待機時間情報133が示す平均時間と、S24の処理で算出した各キュー14に対応する到着頻度情報136が示す到着頻度との積を、各キュー14におけるパケットロスの発生度合いを示す発生度合情報137として算出する(S25)。
[0091]すなわち、図15に示すように、受信スレッド12の状態が実行状態にある場合、キュー14に格納されているパケットは、受信スレッド12によって取り出される。そのため、キュー14では、この場合、到着したパケットの蓄積が行われない。
[0092]一方、図15に示すように、受信スレッド12の状態が待機状態にある場合、キュー14に格納されたパケットは、受信スレッド12によって取り出されない。そのため、キュー14では、この場合、到着したパケットが順次蓄積される。
[0093]そして、例えば、受信スレッド12の状態が待機状態にある間において、キュー14における許容量を超えるパケットが到着した場合、キュー14では、新たに到着したパケットについてのパケットロスが発生する。
[0094]したがって、キュー14におけるパケットロスは、受信スレッド12の待機時間が長いほど発生し易いものと判断できる。また、キュー14におけるパケットロスは、キュー14におけるパケットの到着頻度(到着数)が高いほど発生し易いと判断できる。
[0095]そのため、度合算出部112は、例えば、各キュー14に対応する平均待機時間情報133が示す平均時間と、各キュー14に対応する到着頻度情報136が示す到着頻度との積を、各キューにおけるパケットロスの発生度合い(パケットロスの発生し易さ)として算出する。
[0096]これにより、度合算出部112は、OS11や物理NIC13から十分な情報が取得できない場合であっても、各キュー14におけるパケットロスの発生度合いを推測することが可能になる。以下、S25の処理の具体例について説明を行う。
[0097][S25の処理の具体例] 図16は、発生度合情報137の具体例について説明する図である。
[0098]具体的に、図11(C)に示す平均待機時間情報133には、「1.44(ms)」が設定されている。また、図14に示す到着頻度情報136において、「到着頻度14a」には、「43288(個)」が設定されている。
[0099]そのため、度合算出部112は、この場合、「1.44(ms)」と「43288(個)」とを乗算して算出した「62344(個)」を、キュー14aにおけるパケットロスの発生度合いとして算出する。
[0100]その後、度合算出部112は、例えば、図16に示すように、発生度合情報137のうち、キュー14aにおけるパケットロスの発生度合いを示す「発生度合14a」に「62344(個)」を設定する。
[0101]図10に戻り、情報処理装置1のロス数分配部113は、S25の処理で算出した発生度合情報137が示す発生度合いの合計値を算出する(S31)。
[0102]具体的に、図16に示す発生度合情報137には、「62344(個)」、「64192(個)」及び「47482(個)」がそれぞれ設定されている。そのため、ロス数分配部113は、この場合、「62344(個)」と「64192(個)」と「47482(個)」との合計である「174018(個)」を算出する。
[0103]そして、ロス数分配部113は、複数のキュー14ごとに、S25の処理で算出した各キュー14の発生度合情報137が示す発生度合いを、S31の処理で算出した合計値で除算することによって算出した割合を取得する(S32)。
[0104]具体的に、図16に示す発生度合情報137における「発生度合14a」には、「62344(個)」が設定されている。そのため、ロス数分配部113は、例えば、「62344(個)」を「174018(個)」で除算して算出した「0.358」を、キュー14aに対応する割合として算出する。
[0105]続いて、ロス数分配部113は、複数のキュー14ごとに、S32の処理で算出した各キュー14に対応する割合と、S16の処理で取得した合計ロス数情報138が示すパケットロス数との積を、各キュー14に対応するパケットロス数を示すロス数情報139として算出する(S33)。
[0106]すなわち、ロス数分配部113は、各キュー14において発生したパケットロス数の比が各キュー14におけるパケットロスの発生度合いの比と等しくなるように、物理NIC13において発生したパケットロス数を各キュー14に配分する。
[0107]具体的に、図17に示すように、例えば、各キュー14におけるパケットロスの発生度合いである「a 1 」、「a 2 」及び「a 3 」の比と、各キュー14において発生したパケットロス数である「m 1 」、「m 2 」及び「m 3 」の比とが等しくなるように、「m 1 」、「m 2 」及び「m 3 」のそれぞれを算出する。以下、S33の処理の具体例について説明を行う。
[0108][S33の処理の具体例] 図18は、合計ロス数情報138及びロス数情報139の具体例を説明する図である。図18(A)は、合計ロス数情報138の具体例を説明する図であり、図18(B)は、ロス数情報139の具体例を説明する図である。
[0109]具体的に、図18(A)に示す合計ロス数情報138には、「24(個)」が設定されている。そのため、ロス数分配部113は、例えば、S32の処理で取得した割合が「0.358」である場合、「24(個)」と「0.358」とを乗算することによって算出した「8.6(個)」を、キュー14aにおいて発生したパケットロス数として算出(推測)する。
[0110]その後、情報処理装置1の条件判定部114は、複数の受信スレッド12ごとに、S14の処理で取得した実行時間情報134が示す実行時間と、S33の処理で算出したロス数情報139が示すパケットロス数との対応関係が条件を満たすか否かについて判定する(S34)。
[0111]具体的に、条件判定部114は、図4で説明したように、複数の受信スレッド12ごとに、各受信スレッド12の挙動を示す値(各受信スレッド12に対応する実行時間情報134が示す実行時間)と、各受信スレッド12に対応するキュー14において発生したパケットロス数とに対応する点P12a、12b及び12cのそれぞれが、直線CCaと直線CCbとの間の領域に含まれるか否かを判定する。
[0112]その結果、S14の処理で取得した実行時間情報134が示す実行時間と、S33の処理で算出したパケットロス数との対応関係が条件を満たす受信スレッド12が存在すると判定した場合(S35のYES)、情報処理装置1の情報出力部115は、S34の処理で条件を満たすと判定した受信スレッド12において異常が発生していることを示す判定結果情報140を操作端末2に出力する(S36)。
[0113]具体的に、図4に示すように、例えば、受信スレッド12bに対応する点P12bが直線CCaと直線CCbとの間の領域に含まれていないと判定した場合、条件判定部114は、受信スレッド12bにおいて異常が発生していると判定する。そして、情報出力部115は、この場合、受信スレッド12bにおいて異常が発生していることを示す判定結果情報140を操作端末2に出力する。
[0114]一方、S14の処理で取得した実行時間情報134が示す実行時間と、S33の処理で算出したパケットロス数との対応関係が条件を満たす受信スレッド12が存在しないと判定した場合(S35のYES)、情報出力部115は、S36の処理を行わない。
[0115]このように、本実施の形態における情報処理装置1は、パケットの受信を行う複数の受信スレッド12のそれぞれが待機状態にあった時間、または、複数の受信スレッド12が受信を行うパケットが格納される複数のキュー14のそれぞれにおけるパケットの到着頻度に基づいて、複数のキュー14のそれぞれにおけるパケットロスの発生度合いを算出する。
[0116]そして、情報処理装置1は、算出した発生度合いに基づいて、複数のキュー14が動作する物理NIC13において発生したパケットロス数を複数のキュー14のそれぞれに分配する。
[0117]その後、情報処理装置1は、複数の受信スレッド12ごとに、各受信スレッド12における動作状態と、複数のキュー14のうちの各プロセスに対応するキュー14に分配したパケットロス数との対応関係に基づいて、複数の受信スレッド12における異常発生の有無を判定する。
[0118]すなわち、本実施の形態における情報処理装置1は、OS11や物理NIC13から取得可能な情報から、各キュー14において発生したパケットロス数を推測する。具体的に、情報処理装置1は、例えば、OS11から取得可能な情報と、物理NIC13から取得可能な情報とを組み合わることによって、各キュー14において発生したパケットロス数の推測を行う。そして、情報処理装置1は、各キュー14におけるパケットロス数の推測値を用いることによって、受信スレッド12ごとにアノマリ検知を行う。
[0119]これにより、本実施の形態における情報処理装置1は、マルチキューに対応する物理NIC13が用いられている場合であっても、アノマリ検知を受信スレッド12ごとに行うことが可能になる。そのため、情報処理装置1は、受信スレッド12における異常検知を精度良く行うことが可能になる。
[0120]以上の実施の形態をまとめると、以下の付記のとおりである。
[0121](付記1) パケットの受信を行う複数のプロセスのそれぞれが待機状態にあった第1時間、または、前記複数のプロセスが受信を行うパケットが格納された複数のキューのそれぞれにおけるパケットの到着頻度に基づいて、前記複数のキューのそれぞれにおけるパケットロスの発生度合いを算出し、 算出した前記発生度合いに基づいて、前記複数のキューを有する通信装置において発生したパケットロス数を前記複数のキューのそれぞれに分配し、 前記複数のプロセスごとに、各プロセスにおける動作状態と、前記複数のキューのうちの各プロセスに対応するキューに分配した前記パケットロス数との対応関係に基づいて、前記複数のプロセスのそれぞれにおける異常発生の有無を判定する、 処理をコンピュータに実行させることを特徴とする異常検知方法。
[0122](付記2) 付記1において、 前記算出する処理では、 前記複数のプロセスのそれぞれから、所定期間内において各プロセスが待機状態にあった時間の合計値と、前記所定期間内において各プロセスが実行状態から待機状態に切替えられた回数とを取得し、 前記複数のプロセスごとに、各プロセスに対応する前記合計値を前記回数で除算することによって算出した時間を、各プロセスにおける前記第1時間として算出する、 ことを特徴とする異常検知方法。
[0123](付記3) 付記1において、 前記算出する処理では、 前記複数のプロセスのそれぞれから、所定期間内において各プロセスが実行状態にあった第2時間を取得し、 前記通信装置から、前記通信装置に到着したパケットの総数を取得し、 前記複数のプロセスごとに、前記第2時間の合計値に対する各プロセスの前記第2時間の割合を算出し、 前記複数のキューごとに、前記複数のプロセスのうちの各キューに対応するプロセスの前記割合と前記パケットの総数との積を、各キューにおける前記到着頻度として算出する、 ことを特徴とする異常検知方法。
[0124](付記4) 付記1において、 前記算出する処理では、前記複数のキューごとに、前記複数のプロセスのうちの各キューに対応するプロセスについての前記第1時間と、各キューにおける前記到着頻度との積を、各キューにおける前記発生度合いとして算出する、 ことを特徴とする異常検知方法。
[0125](付記5) 付記1において、 前記通信装置は、物理ネットワークインタフェースカードである、 ことを特徴とする異常検知方法。
[0126](付記6) 付記1において、 前記分配する処理では、 前記通信装置から前記パケットロス数を取得し、 前記複数のキューごとに、前記発生度合いの合計値に対する各キューの前記発生度合いの割合を算出し、 前記複数のキューごとに、各キューに対応する前記割合と前記パケットロス数との積を、各キューに対応するパケットロス数として算出する、 ことを特徴とする異常検知方法。
[0127](付記7) 付記1において、 前記判定する処理では、前記複数のプロセスごとに、所定期間内において各プロセスが実行状態にあった時間と、前記複数のキューのうちの各プロセスに対応するキューに分配した前記パケットロス数との対応関係に基づいて、前記複数のプロセスのそれぞれにおける異常発生の有無を判定する、 ことを特徴とする異常検知方法。
[0128](付記8) 付記1において、さらに、 前記複数のプロセスのうち、前記対応関係が異常発生を示すと判定したプロセスについての情報を出力する、 処理をコンピュータに実行させることを特徴とする異常検知方法。
[0129](付記9) パケットの受信を行う複数のプロセスのそれぞれが待機状態にあった第1時間、または、前記複数のプロセスが受信を行うパケットが格納された複数のキューのそれぞれにおけるパケットの到着頻度に基づいて、前記複数のキューのそれぞれにおけるパケットロスの発生度合いを算出し、 算出した前記発生度合いに基づいて、前記複数のキューを有する通信装置において発生したパケットロス数を前記複数のキューのそれぞれに分配し、 前記複数のプロセスごとに、各プロセスにおける動作状態と、前記複数のキューのうちの各プロセスに対応するキューに分配した前記パケットロス数との対応関係に基づいて、前記複数のプロセスのそれぞれにおける異常発生の有無を判定する、 処理をコンピュータに実行させることを特徴とする異常検知プログラム。
[0130](付記10) 付記9において、 前記算出する処理では、 前記複数のプロセスのそれぞれから、所定期間内において各プロセスが待機状態にあった時間の合計値と、前記所定期間内において各プロセスが実行状態から待機状態に切替えられた回数とを取得し、 前記複数のプロセスごとに、各プロセスに対応する前記合計値を前記回数で除算することによって算出した時間を、各プロセスにおける前記第1時間として算出する、 ことを特徴とする異常検知プログラム。
[0131](付記11) 付記9において、 前記算出する処理では、 前記複数のプロセスのそれぞれから、所定期間内において各プロセスが実行状態にあった第2時間を取得し、 前記通信装置から、前記通信装置に到着したパケットの総数を取得し、 前記複数のプロセスごとに、前記第2時間の合計値に対する各プロセスの前記第2時間の割合を算出し、 前記複数のキューごとに、前記複数のプロセスのうちの各キューに対応するプロセスの前記割合と前記パケットの総数との積を、各キューにおける前記到着頻度として算出する、 ことを特徴とする異常検知プログラム。
[0132](付記12) 付記9において、 前記算出する処理では、前記複数のキューごとに、前記複数のプロセスのうちの各キューに対応するプロセスについての前記第1時間と、各キューにおける前記到着頻度との積を、各キューにおける前記発生度合いとして算出する、 ことを特徴とする異常検知プログラム。
[0133](付記13) 付記9において、 前記分配する処理では、 前記通信装置から前記パケットロス数を取得し、 前記複数のキューごとに、前記発生度合いの合計値に対する各キューの前記発生度合いの割合を算出し、 前記複数のキューごとに、各キューに対応する前記割合と前記パケットロス数との積を、各キューに対応するパケットロス数として算出する、 ことを特徴とする異常検知プログラム。
[0134]1:情報処理装置 2:操作端末 10:情報処理システム NW:ネットワーク