(57)【特許請求の範囲】
【請求項１】
現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算部と、
前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算部と、
前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定部と、
前記異常判定部によって算出された過去一定期間の前記異常スコアを前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部に記憶されている前記異常スコアを過去異常スコアとして取得し、取得した前記過去異常スコアを時系列予測演算法に適用して予測異常スコアを算出し、算出した当該予測異常スコアの値の出現頻度分布を求め、所定の確率となるときを前記閾値に設定する閾値演算部と、
を備えることを特徴とするネットワーク異常検出装置。
【請求項２】
現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算部と、
前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算部と、
前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定部と、
前記異常スコアとの比較に用いた過去一定期間の前記閾値を前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部から前記閾値を過去閾値として取得し、取得した当該過去閾値を時系列予測演算法に適用して新たな閾値を算出し、算出した前記新たな閾値を前記閾値に設定する閾値演算部と、
を備えることを特徴とするネットワーク異常検出装置。
【請求項３】
前記閾値演算部は、前記記憶部に記憶されている前記異常スコアの中から、前記第１の周期で所定の時間帯に存在する前記異常スコアを前記過去異常スコアとして取得する
ことを特徴とする請求項１に記載のネットワーク異常検出装置。
【請求項４】
前記閾値演算部は、前記記憶部に記憶されている前記閾値の中から、前記第１の周期で所定の時間帯に存在する前記閾値を前記過去閾値として取得する
ことを特徴とする請求項２に記載のネットワーク異常検出装置。
【請求項５】
前記閾値演算部は、前記出現頻度分布を一次元正規分布、多次元正規分布または多変量正規分布で生成する
ことを特徴とする請求項１または請求項３に記載のネットワーク異常検出装置。
【請求項６】
ネットワークの異常を判定するネットワーク異常検出装置のネットワーク異常検出方法であって、
前記ネットワーク異常検出装置は、
現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算ステップと、
前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算ステップと、
前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定ステップと、
前記異常判定ステップによって算出された過去一定期間の前記異常スコアを前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部に記憶されている前記異常スコアを過去異常スコアとして取得し、取得した前記過去異常スコアを時系列予測演算法に適用して予測異常スコアを算出し、算出した当該予測異常スコアの値の出現頻度分布を求め、所定の確率となるときを前記閾値に設定する閾値演算ステップと、
を実行することを特徴とするネットワーク異常検出方法。
【請求項７】
ネットワークの異常を判定するネットワーク異常検出装置のネットワーク異常検出方法であって、
前記ネットワーク異常検出装置は、
現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算ステップと、
前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算ステップと、
前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定ステップと、
前記異常スコアとの比較に用いた過去一定期間の前記閾値を前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部から前記閾値を過去閾値として取得し、取得した当該過去閾値を時系列予測演算法に適用して新たな閾値を算出し、算出した前記新たな閾値を前記閾値に設定する閾値演算ステップと、
を実行することを特徴とするネットワーク異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークの異常を検出する技術に関する。
【背景技術】
【０００２】
通信事業者は、ネットワークサービスを安定して提供するために、ネットワーク内の装置（ノード）において異常の発生を検知できるようにしている。異常検出の方法としては、大きく分けて、以下の２つの方法Ｉ，IIが用いられている。
【０００３】
方法Ｉは、ＳｙｓｌｏｇやＳＮＭＰ  Ｔｒａｐ(Simple Network Management Protocol Trap)等を用いて、ネットワーク内の装置から自発的に送信される警報を利用するものである。方法Ｉでは、装置内の自装置監視プログラムが温度の上昇やリンク断といった異常を検出したときにのみ警報が発出される。したがって、方法Ｉは、トラフィック量が徐々に減少する事象等、自装置監視プログラムに設定されていない異常を検出することはできない。
【０００４】
方法IIは、ｐｉｎｇ（Packet Internet Grouper）やＳＮＭＰ  Ｒｅｑｕｅｓｔ等を用いて、ネットワーク内の装置に対して問い合わせて得た情報を解析して、異常を検出するものである。方法IIでは、装置に対して問い合わせて得たＣＰＵ（Central Processing Unit）温度やトラフィック情報等の種々の情報を収集可能であるが、収集した情報を別途解析することで正常／異常を判定することになるため、解析スキルが必要とされる。
【０００５】
例えば、正常時の挙動に近い現象は、方法Ｉでは警報が発出されず、また、方法IIでも異常として検出することが難しい。その一例について、図１０（ａ）（ｂ）を用いて説明する。図１０（ａ）（ｂ）は、ルータＡ，Ｂ，Ｃが直列に接続されているケースを表している。図１０（ａ）は、ルータＡ−Ｂ間のトラフィック量とルータＢ−Ｃ間のトラフィック量とが等しい場合を表している。この図１０（ａ）の場合には、方法Ｉ，II双方において正常と判定される。
【０００６】
それに対して、図１０（ｂ）に示す例は、ルータＢにおいて経年劣化等の原因により異常が発生し、ルータＡ−Ｂ間のトラフィック量とルータＢ−Ｃ間のトラフィック量とが等しくなくなる現象が発生している場合を表している。図１０（ｂ）の場合において、ルータＢ−Ｃ間のトラフィック量が徐々に減少していったとしても、トラフィックが完全には遮断されていないため、方法Ｉでは警報は発出されない。また、方法IIでは、各ルータから収集したトラフィック量に関する情報を解析したとしても、トラフィック量がネットワークの利用状況に依存して自然と減少するケースや、災害やイベント等により突発的に増加するケース等が発生するため、トラフィック量の増減傾向のみから異常か否かを判定することは難しい。
【０００７】
下記非特許文献１，２は、方法IIによる異常検出に関する技術を開示している。具体的には、図１１に示すように、装置Ａ，Ｂ，Ｃが直列に接続されているケースにおいて、行列の行を送信側の装置、列を受信側の装置として、行列を生成する。その行列の成分には所定の周期で取得されたトラフィック量を用いて、行列の固有ベクトルを所定の周期で算出する。行列の固有ベクトルは、行列の全成分が定数倍された場合には変化しないが、行列の一部の成分の値が変化した場合には変化する。したがって、ネットワークの一部で異常等によるトラフィック変動が発生する場合に、固有ベクトルが変動することになり、異常を検出することができる。
【０００８】
非特許文献１，２に記載の技術では、異常が発生していないときの過去Ｋ個の固有ベクトル時系列の移動平均を、基準ベクトル（Vec-Ref）として定義する。基準ベクトル（Vec-Ref）は、現時点の固有ベクトル（すなわち、現在ベクトル（Vec-Now））が異常か否かの判定基準として用いられる。そして、現在ベクトル（Vec-Now）と基準ベクトル（Vec-Ref）との間の角度差から異常スコア（θ）を算出し、当該異常スコア（θ）が閾値を超える場合、ネットワークに異常を検出したと判定する。
【０００９】
また、非特許文献１，２は、基準ベクトル（Vec-Ref）を固定せずに、加入者の増減やサービスの変化等に伴うトラフィック量の変化や装置の負荷の変化を考慮して、新たに算出される現在ベクトル（Vec-Now）を学習しつつ最新の基準ベクトル（Vec-Ref）を算出する方法を開示している。その学習の例としては、現在から過去に至る一定期間の基準ベクトル（Vec-Ref）の移動平均をとるケースが記載されている。また、非特許文献１，２は、閾値を固定せずに、過去の一定期間の異常スコア（θ）の値の出現頻度分布を求め、所定の確率（例えば、５％）となるときを閾値として算出している。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Ide,T. and Kashima,H. “Eigenspace-based anomaly detection in computer systems” In Proceedings of the 10th ACM SIGKDD international conference on knowledge discovery and data mining, ACM Press, New York, NY, USA, p.440-449, 2004
【非特許文献２】井手剛，鹿島久嗣, “固有空間におけるコンピュータシステムの障害検知", 第１８回人工知能学会全国大会予稿集, 3F3-05, 2004
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、非特許文献１，２では、基準ベクトル（Vec-Ref）を現在から過去に至る一定期間の固有ベクトル時系列を用いた移動平均により算出し、閾値を過去一定期間の異常スコア（θ）の値の出現頻度分布から算出しているので、１タイムスロット（タイムスロットとは、固有ベクトルを算出する所定の周期のこと）先の未来におけるネットワークの正常／異常を判定する場合に適していない虞がある。つまり、ネットワークの周期的な変動に十分に適応できていないという虞がある。
【００１２】
例えば、通信事業者のネットワークでは、深夜に、映像配信のトラフィック量が増大する傾向がある。また、企業のネットワークでは、従業員の出勤時間帯に、Ｗｅｂサーバへのアクセス数やメールの増加にともなってトラフィック量が増大する傾向がある。このように、ネットワークのトラフィック量は、時間帯ごとに周期的に大きく変動している。そのため、ネットワークが正常な状態であっても、１タイムスロット先の未来の変動傾向は、過去一定期間の時系列全体から求められる緩やかな変動傾向とは、大きく異なる虞がある。したがって、非特許文献１，２に記載の方法では、ネットワークの周期的な変動に対して、正常／異常を正しく判定できない虞がある。
【００１３】
そこで、本発明は、ネットワークの異常検出においてネットワークの周期的な変動に適応可能な技術を提供することを課題とする。
【課題を解決するための手段】
【００１４】
本発明は、ネットワーク異常検出装置が、現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算部と、前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算部と、前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定部と、前記異常判定部によって算出された過去一定期間の前記異常スコアを前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部に記憶されている前記異常スコアを過去異常スコアとして取得し、取得した前記過去異常スコアを時系列予測演算法に適用して予測異常スコアを算出し、算出した当該予測異常スコアの値の出現頻度分布を求め、所定の確率となるときを前記閾値に設定する閾値演算部と、を備えることを特徴とする。
【００１５】
また、本発明は、ネットワークの異常を判定するネットワーク異常検出装置のネットワーク異常検出方法であって、前記ネットワーク異常検出装置が、現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算ステップと、前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算ステップと、前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定ステップと、前記異常判定ステップによって算出された過去一定期間の前記異常スコアを前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部に記憶されている前記異常スコアを過去異常スコアとして取得し、取得した前記過去異常スコアを時系列予測演算法に適用して予測異常スコアを算出し、算出した当該予測異常スコアの値の出現頻度分布を求め、所定の確率となるときを前記閾値に設定する閾値演算ステップと、を実行することを特徴とする。
【００１６】
このような構成によれば、ネットワーク異常検出装置は、ネットワーク内の装置間の状態の変動周期（第１の周期）で所定の時間帯に存在する過去固有ベクトルを用いて、１タイムスロット先の基準ベクトルを算出することができる。つまり、現在ベクトルの変化を見越した基準ベクトルを算出できる。そのため、ネットワーク異常検出装置は、ネットワークの周期的な変動に適応可能となり、正常な状態を異常と判定することを抑制できる。また、ネットワークの周期的な変動に適応した基準ベクトルと現在ベクトルとの角度差から算出された異常スコア（過去異常スコア）の値は、ばらつきが小さくなる。つまり、基準ベクトルの急な変化にともなって、過去異常スコアが大きな値になることを抑制することができる。そして、閾値は、過去異常スコアを時系列予測演算法に適用して算出された予測異常スコアに基づいて算出される。そのため、ネットワーク異常検出装置は、出現頻度分布の分散が小さくなることによって、基準ベクトルの急な変化に適応した閾値を安定して算出することができる。したがって、ネットワーク異常検出装置は、ネットワークの異常検出においてネットワークの周期的な変動に適応して、ネットワークの異常検出を安定して行うことができる。
【００１９】
また、本発明は、前記閾値演算部が、前記記憶部に記憶されている前記異常スコアの中から、前記第１の周期で所定の時間帯に存在する前記異常スコアを前記過去異常スコアとして取得することを特徴とする。
【００２０】
このような構成によれば、閾値は、ネットワーク内の装置間の状態の変動周期（第１の周期）で所定の時間帯に存在する過去異常スコアに基づいて算出される。したがって、ネットワーク異常検出装置は、ネットワークの異常検出においてネットワークの周期的な変動に適応可能となる。
【００２１】
また、本発明は、現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算部と、前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算部と、前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定部と、前記異常スコアとの比較に用いた過去一定期間の前記閾値を前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部から前記閾値を過去閾値として取得し、取得した当該過去閾値を時系列予測演算法に適用して新たな閾値を算出し、算出した前記新たな閾値を前記閾値に設定する閾値演算部と、を備えることを特徴とする。
【００２３】
また、本発明は、ネットワークの異常を判定するネットワーク異常検出装置のネットワーク異常検出方法であって、前記ネットワーク異常検出装置が、現時点のネットワーク内の装置間の状態を示す行列から固有ベクトルを算出し、算出した当該固有ベクトルを現在ベクトルとし、前記現在ベクトルを算出した時刻と関連付けて当該固有ベクトルを記憶部に過去固有ベクトルとして記憶する固有ベクトル演算ステップと、前記記憶部に記憶されている前記過去固有ベクトルの中から、ネットワーク内の装置間の状態の変動周期を示す第１の周期で所定の時間帯に存在する前記過去固有ベクトルを取得し、取得した当該過去固有ベクトルから基準ベクトルを算出する基準ベクトル演算ステップと、前記現在ベクトルと前記基準ベクトルとの角度差から異常スコアを算出し、前記異常スコアと閾値とを比較して、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する異常判定ステップと、前記異常スコアとの比較に用いた過去一定期間の前記閾値を前記現在ベクトルを算出した時刻と関連付けて前記記憶部に記憶している場合、前記記憶部から前記閾値を過去閾値として取得し、取得した当該過去閾値を時系列予測演算法に適用して新たな閾値を算出し、算出した前記新たな閾値を前記閾値に設定する閾値演算ステップと、を実行することを特徴とする。
【００２４】
このような構成によれば、ネットワーク異常検出装置は、ネットワーク内の装置間の状態の変動周期（第１の周期）で所定の時間帯に存在する過去固有ベクトルを用いて、１タイムスロット先の基準ベクトルを算出することができる。つまり、現在ベクトルの変化を見越した基準ベクトルを算出できる。なお、異常スコアと比較される閾値は、過去閾値を時系列予測演算法に適用して算出される。したがって、ネットワーク異常検出装置は、ネットワークの異常検出においてネットワークの周期的な変動に適応可能となる。
【００２５】
また、本発明は、前記閾値演算部が、前記記憶部に記憶されている前記閾値の中から、前記第１の周期で所定の時間帯に存在する前記閾値を前記過去閾値として取得することを特徴とする。
【００２６】
このような構成によれば、閾値は、ネットワーク内の装置間の状態の変動周期（第１の周期）で所定の時間帯に存在する過去閾値に基づいて算出される。したがって、ネットワーク異常検出装置は、ネットワークの異常検出においてネットワークの周期的な変動に適応可能となる。
【００２７】
また、本発明は、前記閾値演算部が、前記出現頻度分布を一次元正規分布、多次元正規分布または多変量正規分布で生成することを特徴とする。
【００２８】
このような構成によれば、多次元で分布を扱う場合には、異常スコアのベクトル成分ごとに細かく閾値を設定することができる。
【発明の効果】
【００２９】
本発明によれば、ネットワークの異常検出においてネットワークの周期的な変動に適応可能な技術を提供することができる。
【図面の簡単な説明】
【００３０】
【図１】（ａ）は本実施形態におけるネットワーク異常検出装置を含むネットワーク異常検出システムの構成を表す図であり、（ｂ）は異常判定方法を表す図である。
【図２】本実施形態における異常判定方法の概要を示す図であり、（ａ）は比較例を表し、（ｂ）は閾値を予測したケースを表し、（ｃ）は基準ベクトル（Vec-Ref）を予測したケースを表す。
【図３】ネットワーク異常検出装置の構成例を示す図である。
【図４】過去固有ベクトルＤＢの一例を示す図である。
【図５】過去異常スコアＤＢの一例を示す図である。
【図６】過去閾値ＤＢの一例を示す図である。
【図７】ネットワーク異常検出装置の処理フロー例を示す図である。
【図８】基準ベクトル（Vec-Ref）の算出例を示す図であり、（ａ）は使用するデータを表し、（ｂ）は算出方法を表し、（ｃ）は実行する組み合わせを表す。
【図９】閾値の算出例を示す図であり、（ａ）は使用するデータを表し、（ｂ）は算出方法を表し、（ｃ）は分布生成方法を表し、（ｄ）は実行する組み合わせを表す。
【図１０】従来技術において異常を検出しない場合の例を示す図であり、（ａ）は、正常な場合を表し、（ｂ）は、異常が発生している状態であっても異常の検出が困難な場合を表す。
【図１１】従来技術において、異常を検出するための処理例を示す図である。
【発明を実施するための形態】
【００３１】
本発明を実施するための形態（以降、「本実施形態」と称す。）について、適宜図面を参照しながら詳細に説明する。
【００３２】
（概要）
はじめに、本実施形態のネットワーク異常検出装置を含むネットワーク異常検出システムの構成およびネットワーク異常検出装置の異常判定方法について、図１（ａ）（ｂ）を用いて説明する。
【００３３】
ネットワーク異常検出システム１は、図１（ａ）に示すように、ネットワーク１１内のノードである装置１０（１０Ａ，１０Ｂ，１０Ｃ）とネットワーク異常検出装置１００とを通信可能に接続して構成される。ネットワーク異常検出装置１００は、前記した方法IIのように、装置１０に対して問い合わせて得た情報を分析して、ネットワーク１１の異常を検出する機能を備えている。なお、図１（ａ）では、装置が３台記載されているが、３台に限らなくてもよい。
【００３４】
ネットワーク異常検出装置１００は、ネットワーク１１の異常を検出する場合には、図１１で説明した場合と同様に、基準ベクトル（Vec-Ref）を、現時点の現在ベクトル（Vec-Now）が異常か否かの判定基準として用いる。なお、現在ベクトル（Vec-Now）は、現時点のネットワーク１１内の装置１０間の状態を示す行列から算出される固有ベクトルである。また、基準ベクトル（Vec-Ref）は、過去に算出された固有ベクトルに基づいて算出される。
【００３５】
そして、ネットワーク異常検出装置１００は、図１（ｂ）に示すように、基準ベクトル（Vec-Ref）と現在ベクトル（Vec-Now）との角度差から求めた異常スコア（θ）が閾値より大きいか否かを比較し、異常スコア（θ）が閾値より大きい場合に異常と判定する。
【００３６】
次に、ネットワークの周期的な変動として、図２の最上段に示すように、企業のネットワークにおいて従業員の出勤時間帯にトラフィック量が増大するケースを一例として取り上げて、異常判定方法について説明する。
図２の最上段に示すように、企業のネットワークにおけるトラフィック量は、一般的に、深夜では小さい値で緩やかな変動を示し、出勤時には、急激な変動を示し、昼間には大きな値で緩やかな変動を示す傾向にある。
【００３７】
まず、図２（ａ）は、比較例として、基準ベクトル（Vec-Ref）を過去一定期間の固有ベクトル時系列を用いた移動平均により算出し、閾値を過去一定期間の異常スコア（θ）の値の出現頻度分布から算出した場合を模式的に表したものである。特に、一点鎖線の楕円で囲まれた範囲では、現在ベクトル（Vec-Now）は、出勤にともなう急激な変動で大きく変化する。それに対して、基準ベクトル（Vec-Ref）は、過去の固有ベクトル時系列の移動平均で算出しているため、大きく変化することはない。そのため、異常スコア（θ）は、突出して大きくなる。そして、異常スコア（θ）は閾値より大きくなり（異常スコア（θ）＞閾値となり）、異常と判定される。
しかしながら、ネットワークに異常があったわけではないのに異常と判定してしまうため、ネットワーク保守者に、無用の点検作業を行わせることになり、ネットワーク運用業務の効率を低下させることとなる。
【００３８】
次に、図２（ｂ）は、異常スコア（θ）の変化を予測して、その変化に応じて閾値を変化させる（閾値を予測する）ケースを模式的に表したものである。すなわち、異常スコア（θ）が大きくなるときに閾値を大きくして、異常と判定してしまうことを抑制するものである。
このケースでは、現在ベクトル（Vec-Now）および基準ベクトル（Vec-Ref）の計算方法は、比較例の場合と同様であっても構わない。しかし、閾値を、過去一定期間の異常スコア（θ）または閾値を用いて時系列予測演算を行うことによって、１タイムスロット先の閾値を予測する。そして、正常な状態で発生する異常スコア（θ）の大きな変化を異常と判定しないような閾値を予め設定する。これにより、異常スコア（θ）＜閾値となって、正常な状態を間違って異常な状態と判定してしまうことを抑制することができる。
【００３９】
図２（ｃ）は、現在ベクトル（Vec-Now）の変化を予測して、その変化に応じて基準ベクトル（Vec-Ref）を変化させる（基準ベクトル（Vec-Ref）を予測する）ケースを模式的に表したものである。すなわち、現在ベクトル（Vec-Now）と基準ベクトル（Vec-Ref）との角度差から算出される異常スコア（θ）をほぼ一定に保つことによって、異常と判定してしまうことを抑制するものである。
このケースでは、現在ベクトル（Vec-Now）および閾値の計算方法は、比較例の場合と同様であっても構わない。しかし、基準ベクトル（Vec-Ref）を、過去一定期間の固有ベクトルを用いて時系列予測演算を行うことによって、１タイムスロット先の基準ベクトル（Vec-Ref）を算出する。そのため、異常スコア（θ）の変動が、比較例の場合より小さくなるように算出される。これにより、異常スコア（θ）＜閾値となって、正常な状態を間違って異常な状態と判定してしまうことを抑制することができる。
【００４０】
（ネットワーク異常検出装置の構成）
まず、ネットワーク異常検出装置１００の構成について、図３を用いて説明する（適宜、図１，１１参照）。ネットワーク異常検出装置１００は、図３に示すように、処理部１１０、記憶部１２０、および入出力部１３０を備えている。
処理部１１０は、さらに、行列生成部１１１、固有ベクトル演算部１１２、基準ベクトル演算部１１３、異常判定部１１４、および閾値演算部１１５を備える。処理部１１０は、図示しないＣＰＵ（Central Processing Unit）およびメインメモリによって構成され、記憶部１２０に記憶されているアプリケーションプログラムをメインメモリに展開して、処理部１１０内の各部を具現化する。
【００４１】
行列生成部１１１は、入出力部１３０の入力部１３１を介して取得したネットワーク１１内の装置１０間におけるトラフィック量を成分として、行列の行を送信側の装置１０、列を受信側の装置１０として行列（図１１参照）を生成する機能を有する。行列の生成は、所定の周期またはネットワーク１１の管理者もしくは保守者等に指示されたときに行われる。
【００４２】
固有ベクトル演算部１１２は、行列生成部１１１によって生成された行列の固有ベクトル（図１１参照）を所定の周期で算出する機能を有する。なお、算出した最新の固有ベクトルは、現在ベクトル（Vec-Now）として、異常判定部１１４に出力される。また、固有ベクトル演算部１１２は、固有ベクトル（現在ベクトル）を、当該固有ベクトル（現在ベクトル）を算出した時刻と関連付けて過去固有ベクトルＤＢ１２１に過去固有ベクトルとして記憶する機能を有する。
【００４３】
基準ベクトル演算部１１３は、過去固有ベクトルＤＢ１２１から過去固有ベクトルを読み出して、基準ベクトル（Vec-Ref）を算出する機能を有する。なお、基準ベクトル（Vec-Ref）の算出方法の詳細については後記する。
【００４４】
異常判定部１１４は、固有ベクトル演算部１１２から現在ベクトル（Vec-Now）を取得し、基準ベクトル演算部１１３から基準ベクトル（Vec-Ref）を取得し、現在ベクトル（Vec-Now）と基準ベクトル（Vec-Ref）との角度差から異常スコア（θ）を算出する。そして、異常判定部１１４は、異常スコア（θ）と閾値とを比較し、前記異常スコアと前記閾値との大小関係に基づいてネットワークの異常を判定する機能を有する。なお、閾値は、後記する閾値演算部１１５によって算出される。例えば、異常判定部１１４は、異常スコア（θ）が閾値以下の場合に正常と判定し、異常スコア（θ）が閾値より大きい場合に異常と判定する。また、異常判定部１１４は、異常スコア（θ）を、当該異常スコア（θ）の算出に用いた現在ベクトルを算出した時刻と関連付けて過去異常スコアＤＢ１２２に記憶する機能を有する。また、異常判定部１１４は、異常状態等の情報を入出力部１３０の出力部１３２を介して表示装置に出力する機能を有する。
【００４５】
閾値演算部１１５は、過去異常スコアＤＢ１２２から異常スコア（θ）を過去異常スコアとして読み出して所定の演算を実行し、１タイムスロット先の閾値を算出（設定）する機能を有する。また、閾値演算部１１５は、算出した閾値を、当該閾値の算出時において用いた現在ベクトル（Vec-Now）を算出した時刻と関連付けて過去閾値ＤＢ１２３に記憶するとともに、過去閾値ＤＢ１２３に記憶している閾値を過去閾値として読み出して、１タイムスロット先の閾値（新たな閾値）を算出する機能を有する。なお、閾値の算出方法の詳細については後記する。
【００４６】
入出力部１３０は、入力部１３１および出力部１３２を備える。入力部１３１は、ネットワーク１１に接続するための通信インタフェースであり、ネットワーク１１内の装置１０からトラフィック量等の情報を受信する。出力部１３２は、表示装置に接続するためのインタフェースであり、処理部１１０の処理結果等の情報を表示装置に出力する。
【００４７】
記憶部１２０は、ハードディスク等であって、過去固有ベクトルＤＢ１２１、過去異常スコアＤＢ１２２および過去閾値ＤＢ１２３を格納している。
【００４８】
過去固有ベクトルＤＢ１２１は、図４に示すように、固有ベクトル演算部１１２（図３参照）が固有ベクトルを算出した時刻ｔ（ｎ）とその固有ベクトルＵ（ｎ）とを関連付けて記憶している。ただし、現在時刻ｔ（ｎ）において、既に所定時間（ｋ＋１）を経過している固有ベクトルＵ（ｎ−ｋ−１）は時刻ｔ（ｎ−ｋ−１）とともに削除される。なお、時刻ｔ（ｎ）におけるｎは、算出した周期を識別する番号である。過去固有ベクトルＤＢ１２１に記憶されている時刻ｔ（ｎ）は現在を表し、時刻ｔ（ｎ）の固有ベクトルは現在ベクトル（Vec-Now）となる。また、時刻ｔ（ｎ−１）以前の過去の固有ベクトルＵ（ｎ−１）、Ｕ（ｎ−２）、・・等は、基準ベクトル演算部１１３（図３参照）における基準ベクトル（Vec-Ref）の算出処理のために用いられる。
【００４９】
過去異常スコアＤＢ１２２は、図５に示すように、時刻ｔ（ｎ）と異常スコアθ（ｎ）とを関連付けて記憶している。ただし、現在時刻ｔ（ｎ）において、既に所定時間（ｋ＋１）を経過している異常スコアθ（ｎ−ｋ−１）は時刻ｔ（ｎ−ｋ−１）とともに削除される。
【００５０】
過去閾値ＤＢ１２３は、図６に示すように、時刻ｔ（ｎ）と閾値演算部１１５によって算出された閾値ｔｈ（ｎ）とを関連付けて記憶している。ただし、現在時刻ｔ（ｎ）において、既に所定時間（ｋ＋１）を経過している閾値ｔｈ（ｎ−ｋ−１）は時刻ｔ（ｎ−ｋ−１）とともに削除される。
【００５１】
（ネットワーク異常検出装置の処理フロー）
次に、ネットワーク異常検出装置１００の処理フロー例について、図７を用いて説明する（適宜、図３参照）。
ステップＳ７０１では、行列生成部１１１は、入力部１３１を介して、ネットワーク１１内の装置１０間におけるトラフィック量等のトラフィック情報を取得し、例えばトラフィック量を成分とする行列を生成する。行列の生成は、所定の周期またはネットワーク１１の管理者もしくは保守者等に指示されたときに行われる。
【００５２】
ステップＳ７０２では、固有ベクトル演算部１１２は、行列生成部１１１によって生成された行列から、固有ベクトルである現在ベクトル（Vec-Now）を所定の周期で算出する。
【００５３】
ステップＳ７０３では、固有ベクトル演算部１１２は、現在ベクトル（Vec-Now）を、その算出した時刻と関連付けて過去固有ベクトルＤＢ１２１に過去固有ベクトルとして記憶する。
【００５４】
ステップＳ７０４では、基準ベクトル演算部１１３は、過去固有ベクトルＤＢ１２１から過去固有ベクトルを読み出して、所定の演算を実行して、基準ベクトル（Vec-Ref）を算出する。なお、基準ベクトル（Vec-Ref）の演算方法の詳細については、後記する。
【００５５】
ステップＳ７０５では、閾値演算部１１５は、過去異常スコアＤＢ１２２から異常スコアを過去異常スコアとして読み出して、所定の演算を実行して、１タイムスロット先の閾値を算出する。または、閾値演算部１１５は、過去閾値ＤＢ１２３から閾値を過去閾値として読み出して、所定の演算を実行して、１タイムストッロ先の閾値を算出する。なお、閾値の演算方法の詳細については、後記する。
【００５６】
ステップＳ７０６では、異常判定部１１４は、現在ベクトル（Vec-Now）と基準ベクトル（Vec-Ref）とから異常スコア（θ）を算出する。具体的には、異常判定部１１４は、現在ベクトル（Vec-Now）と基準ベクトル（Vec-Ref）との角度差を算出し、その角度差から異常スコア（θ）を算出する。
【００５７】
ステップＳ７０７では、異常判定部１１４は、ステップＳ７０６で算出した異常スコア（θ）が、ステップＳ７０５で算出した閾値より大きいか否かを判定する。
異常スコア（θ）が閾値より大きいと判定した場合（ステップＳ７０７でＹｅｓ）、ステップＳ７０８へ進み、異常スコア（θ）が閾値以下と判定した場合（ステップＳ７０７でＮｏ）、ステップＳ７０９へ進む。
【００５８】
ステップＳ７０８では、異常判定部１１４は、異常時の対応策を実行する。具体的には、異常判定部１１４は、異常を知らせるメッセージや警報等を出力部１３２を介して、表示装置に出力する。
【００５９】
ステップＳ７０９では、異常判定部１１４は、ステップＳ７０６で算出した異常スコア（θ）を過去異常スコアＤＢ１２２に記憶する。そして、ステップＳ７０９の処理が終了すると、処理はステップＳ７０１へ戻る。
【００６０】
なお、図７には記載をしていないが、ステップＳ７０５より後の処理において、閾値演算部１１５は、ステップＳ７０５で算出した閾値を過去閾値ＤＢ１２３に記憶するようにしても構わない。また、ステップＳ７０４とステップＳ７０５とは、順番が逆であっても構わない。
【００６１】
（基準ベクトルの算出）
次に、ステップＳ７０４における基準ベクトル（Vec-Ref）の演算方法の詳細について、図８を用いて説明する。ここでは、主に、図２（ｃ）で説明したように、１タイムスロット先の基準ベクトル（Vec-Ref）の予測について説明する。
まず、予測に使用するデータを選択するための選択方法について説明し、次に、予測値の算出方法について説明する。
【００６２】
図８（ａ）に示すように、予測に使用するデータを過去固有ベクトルＤＢ１２１から選択するための選択方法は、方法Ａ１では過去の所定期間内の固有ベクトルの時系列を選択する場合、方法Ａ２では過去の所定期間内の所定周期（１日、１週間等）の同時間帯の固有ベクトルを選択する場合とした。
【００６３】
方法Ａ１は、図２（ａ）に示す比較例で使用されているものである。
方法Ａ２は、現時点や１タイムスロット先の変動傾向と合致しうる過去の時点として、例えば、１日前、２日前、・・、ｘ日前の同時間帯や、１週間前、２週間前、・・、ｙ週間前の同曜日同時間帯の過去の固有ベクトルを用いるものである。その理由は、例えば、企業のネットワークでは、１日周期や１週間周期（第１の周期）でトラフィック量が変動する傾向を持つことが多いためである。同曜日とは、例えば、現在の曜日が水曜日であれば、その１週間前、２週間前、・・を選択する。同時間帯とは、例えば、現在時刻が１３時１５分であれば、時間データに１３時を含む固有ベクトルを選択することを表す。または、同時間帯とは、現在時刻の前後の所定時間（例えば、３０分）以内の固有ベクトルを選択することを表しても構わない。
【００６４】
また、予測値の算出方法は、図８（ｂ）に示すように、方法Ｂ１では重み付き移動平均法を用いる場合、方法Ｂ２では時系列予測演算法（例えば、ＡＲ（Auto-Regressive）モデル、ＡＲＭＡ（Auto-Regressive Moving Average）モデル、カルマンフィルタ等）を用いる場合とした。
【００６５】
方法Ｂ１は、図２（ａ）に示す比較例で使用されているものである。
方法Ｂ２は、現在ベクトル（Vec-Now）の各成分の値が独立に近い動きをする場合、例えば、ネットワークのノードＡから出力されるトラフィックが近隣のノードＢに流れ込む等の場合では、ベクトル各成分に対して、ＡＲモデルやカルマンフィルタ等の１次元時系列予測法を適用可能である。
【００６６】
また、方法Ｂ２は、ネットワークのノードＣから出力されるトラフィックが多くのノードを通過するようなフローが多い等、現在ベクトル（Vec-Now）の各成分の値の変動に関連性がある場合、多変量ＡＲモデル等を適用することで、１タイムスロット先の未来の挙動を表現することができる。
【００６７】
そして、図８（ｃ）に示すように、予測値の算出を実行する組み合わせは、方法Ａ１，Ａ２と方法Ｂ１，Ｂ２との組み合わせによって決められる。
第１の基準ベクトル算出方法は、方法Ａ１と方法Ｂ１との組み合わせであり、図２（ａ）に示す比較例で使用されるものである。
第２の基準ベクトル算出方法は、方法Ａ２と方法Ｂ１との組み合わせである。
第３の基準ベクトル算出方法は、方法Ａ２と方法Ｂ２との組み合わせである。
【００６８】
（閾値の算出）
次に、ステップＳ７０５における閾値の演算方法の詳細について、図９を用いて説明する。ここでは、主に、図２（ｂ）で説明したように、１タイムスロット先の閾値の予測方法について説明する。
まず、予測に使用するデータを選択するための選択方法について説明し、次に、予測値の算出方法について説明する。
【００６９】
図９（ａ）に示すように、予測に使用するデータを選択するための選択方法は４通りある。方法ａ１１は過去の所定期間内の閾値の時系列を過去閾値ＤＢ１２３から選択する場合、方法ａ１２は過去の所定期間内の所定周期（１日、１週間等）の同時間帯の閾値を過去閾値ＤＢ１２３から選択する場合である。また、方法ａ２１は、過去の所定期間内の異常スコア（θ）の時系列を過去異常スコアＤＢ１２２から選択する場合、方法ａ２２は過去の所定期間内で所定周期（１日、１週間等）の同時間帯の異常スコア（θ）を過去異常スコアＤＢ１２２から選択する場合である。
【００７０】
方法ａ１１，ａ１２は、過去閾値を用いて閾値の予測値を直接算出する。それに対して、方法ａ２１，ａ２２は、過去異常スコア（θ）の予測値を示す予測異常スコアを算出してから、当該予測異常スコアの値の出現頻度分布を求め、所定の確率（例えば、５％）となるときを閾値として算出する。
また、方法ａ１２，ａ２２では、例えば、企業のネットワークでは、１日周期や１週間周期（第１の周期）でトラフィック量が変動する傾向を持つことが多いので、１タイムスロット先の変動傾向と合致しうる過去の時点として、例えば、１日前、２日前、・・、ｘ日前の同時間帯や、１週間前、２週間前、・・、ｙ週間前の同曜日同時間帯の（第１の周期で所定の時間帯に存在する）過去の値を用いることとする。
【００７１】
また、予測値の算出方法は、図９（ｂ）に示すように、方法ｂ１では重み付き移動平均法を用いる場合、方法ｂ２では時系列予測演算法（例えば、ＡＲモデル、ＡＲＭＡモデル、カルマンフィルタ等）を用いる場合とした。
【００７２】
図９（ｃ）には、分布生成方法を２通り示した。方法ｃ１では一次元正規分布の場合、方法ｃ２では多次元正規分布または多変量正規分布の場合とした。この分布生成方法は、方法ａ２１，ａ２２において、異常スコアの値や予測異常スコアの値の出現頻度分布を生成するときに使用される。
【００７３】
そして、図９（ｄ）に示すように、閾値の予測値の算出を実行する組み合わせは、方法ａ１１，ａ１２，ａ２１，ａ２２と方法ｂ１，ｂ２と方法ｃ１，ｃ２との組み合わせによって決められる。
【００７４】
第１の閾値算出方法は、方法ａ２１と方法ｂ１と方法ｃ１との組み合わせであり、図２（ａ）に示す比較例で用いられたものである。
第２の閾値算出方法は、方法ａ１１と方法ｂ２との組み合わせである。
第３の閾値算出方法は、方法ａ１２と方法ｂ２との組み合わせである。
なお、第２，第３の閾値算出方法は、閾値を直接算出するため、方法ｃ１または方法ｃ２を用いる必要がない。
【００７５】
第４の閾値算出方法は、方法ａ２１と方法ｂ２と方法ｃ１との組み合わせである。
第５の閾値算出方法は、方法ａ２１と方法ｂ２と方法ｃ２との組み合わせである。
第６の閾値算出方法は、方法ａ２２と方法ｂ２と方法ｃ１との組み合わせである。
第７の閾値算出方法は、方法ａ２２と方法ｂ２と方法ｃ２との組み合わせである。
【００７６】
なお、図７に示すステップＳ７０６で用いられる基準ベクトル（Vec-Ref）およびステップＳ７０７で用いられる閾値の組み合わせは、第１〜第３の基準ベクトル算出方法によって算出された基準ベクトル（Vec-Ref）と、第１〜第７の閾値算出方法によって算出された閾値と、の組み合わせとすることができる。ただし、第１の基準ベクトル算出方法と第１の閾値算出方法との組み合わせは、図２（ａ）に示す比較例となるので、本実施形態には含まないものとする。
【００７７】
以上、本実施形態で説明したネットワーク異常検出装置１００は、行列の行を送信側の装置、列を受信側の装置として、行列の成分にはトラフィック量を用い、行列の固有ベクトル（現在ベクトル（Vec-Now））を算出し、現在ベクトル（Vec-Now）と基準ベクトル（Vec-Ref）との角度差から異常スコア（θ）を算出する。そして、ネットワーク異常検出装置１００は、異常スコア（θ）が閾値より大きい場合、ネットワーク１１の異常と判定する。その際、ネットワーク異常検出装置１００は、ネットワーク１１内のトラフィック量の周期的な変動に適用可能なように、過去の固有ベクトルに対して時系列予測演算を行って１タイムスロット先の基準ベクトル（Vec-Ref）を算出する。または、ネットワーク異常検出装置１００は、閾値をネットワーク１１内のトラフィック量の周期的な変動に適用可能なように変化させるため、過去の閾値に対して時系列予測演算を行って１タイムスロット先の閾値を算出する。または、ネットワーク異常検出装置１００は、閾値をネットワーク１１内のトラフィック量の周期的な変動に適用可能なように変化させるため、過去の異常スコア（θ）に対して時系列予測演算を行って予測異常スコアを算出し、その予測異常スコアの値の出現頻度分布を求め、所定の確率となるときを１タイムスロット先の閾値に設定する。つまり、ネットワーク異常検出装置１００は、このような構成を備えているため、正常なネットワークにおける周期的な変動を異常と判定することを抑制することができる。
【符号の説明】
【００７８】
１    ネットワーク異常検出システム
１０（１０Ａ，１０Ｂ，１０Ｃ）  装置
１１  ネットワーク
１００  ネットワーク異常検出装置
１１０  処理部
１１１  行列生成部
１１２  固有ベクトル演算部
１１３  基準ベクトル演算部
１１４  異常判定部
１１５  閾値演算部
１２０  記憶部
１２１  過去固有ベクトルＤＢ
１２２  過去異常スコアＤＢ
１２３  過去閾値ＤＢ
１３０  入出力部
１３１  入力部
１３２  出力部
【図１】
0005711675.tif 000002
【図２】
0005711675.tif 000003
【図３】
0005711675.tif 000004
【図４】
0005711675.tif 000005
【図５】
0005711675.tif 000006
【図６】
0005711675.tif 000007
【図７】
0005711675.tif 000008
【図８】
0005711675.tif 000009
【図９】
0005711675.tif 000010
【図１０】
0005711675.tif 000011
【図１１】
0005711675.tif 000012