(58)【調査した分野】(Int.Cl.,DB名)
前記行列推定部は、前記グラフを隣接行列に変換し、前記隣接行列を前記グラフの最大ホップ長の数だけ掛け合わせて得られる行列のうち、前記グラフの中間ノードを除くドメイン名のノードとIPアドレスのノードとの組み合わせに対応する成分を前記変換行列の初期値として抽出し、抽出された初期値と、前記グラフのノードを構成する各IPアドレスに関して前記第二の計測部によって計測されたデータ量と、前記グラフの中間ノードを除くノードを構成するドメイン名に関して前記第一の計測部によって計測されたDNS要求の数とに基づいて、前記変換行列を推定し、
前記隣接行列は、入次数が0であるノードの対角成分の値を1とし、入次数が1以上であるノードに入る枝に対応する成分の値を、当該枝の数で1を除すことにより得られる値とする、
ことを特徴とする請求項1記載の推定装置。
前記生成部は、前記DNS応答に含まれるドメイン名又はIPアドレスをノードとし、前記ドメイン名及び前記IPアドレスの間の対応関係を枝とする1以上の連結グラフを生成し、
前記行列推定部は、前記連結グラフごとに、前記変換行列を推定し、
前記算出部は、前記連結グラフごとに、当該連結グラフの中間ノードを除くノードを構成するドメイン名ごとの推定値を算出する、
ことを特徴とする請求項1又は2記載の推定装置。
【発明を実施するための形態】
【0013】
以下、図面に基づいて本発明の実施の形態を説明する。
図1は、第一の実施の形態における推定装置のハードウェア構成例を示す図である。
図1の推定装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
【0014】
推定装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0015】
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って推定装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
【0016】
図2は、第一の実施の形態における推定装置の機能構成例を示す図である。
図2において、推定装置10は、DNS応答収集部11、DNS応答統計処理部12、フロー情報収集部13、フロー情報統計処理部14、グラフ生成部15、トラヒック量推定部16、及び推定値変換部17等を有する。これら各部は、推定装置10にインストールされる1以上のプログラムが、CPU104に実行させる処理により実現される。推定装置10は、また、DNSログ記憶部121、フロー情報記憶部122、及びグラフ情報記憶部123を利用する。DNSログ記憶部121、フロー情報記憶部122、及びグラフ情報記憶部123は、例えば、
図1の補助記憶装置102、又は推定装置10にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【0017】
DNS応答収集部11は、ネットワーク上において観測されるDNS(Domain Name System)応答パケットを収集する。DNS応答パケットの収集方法は、特定のものに限定されない。例えば、DNSキャッシュサーバ又はネットワーク中継装置(例えば、ルータ、スイッチ)より、パケットキャプチャによってDNS応答パケットが収集されてもよい。
【0018】
DNS応答統計処理部12は、一定期間において収集されたDNS応答パケットについて統計処理を実行する。統計処理の結果は、DNSログ記憶部121に記憶される。
【0019】
フロー情報収集部13は、ネットワーク上において観測される任意のフロー(例えば、クライアントとサーバとの間のフロー)に関する情報(以下、「フロー情報」という。)をネットワークを介してフロー情報を収集する。サーバとは、例えば、Webサーバやコンテンツを配信するサーバ等である。フローとは、一つの意味の有るメッセージ(例えば、要求又は応答等)を構成するパケットの集合をいう。したがって、一つのフローを構成するパケットの宛先、送信元のIPアドレス、及びポート番号は共通する。フロー情報は、例えば、ルータに搭載されたフロー情報収集機能を用いて収集されてもよい。又は、フロー情報収集部13がパケットをキャプチャして、フロー情報を生成してもよい。フロー情報の通信プロトコルとしてNetFlow(非特許文献2参照)やsFlow(非特許文献3参照)が挙げられるが、「送信元IPアドレス」、「宛先IPアドレス」、「フロー数」、「バイト数」の情報が取得可能であれば、フロー情報の収集方法やプロトコルは特定のものに限定されない。なお、本実施の形態では、フローが通信の最小単位として扱われるが、パケットが通信の最小単位として扱われてもよい。すなわち、以下の説明におけるフローは、パケットに置き換えられてもよい。
【0020】
フロー統計処理部は、一定期間において収集されたフロー情報について統計処理を実行する。統計処理の結果は、DNSログ記憶部121に記憶される。
【0021】
以上から明らかなように、本実施の形態における推定装置10は、DNS応答パケットとフロー情報との両方を収集可能なネットワークであれば、どのようなネットワークに接続されていてもよい。斯かるネットワークの一例として、ISP(Internet Service Provider)のバックボーン・ネットワーク、企業内ネットワーク、大学ネットワーク、データセンタ・ネットワーク等が挙げられる。
【0022】
グラフ生成部15は、グラフ変換部151、連結グラフ抽出部152、及び属性情報付与部153等を含む。グラフ変換部151は、DNSログ記憶部121に記憶されている情報を、有向グラフに変換する。より詳しくは、グラフ変換部151は、DNS応答パケットに含まれているドメイン名(別名をも含む。)又はIPアドレスをノードとし、当該ドメイン名とIPアドレス、又は当該ドメイン名同士の対応関係を枝とする有向グラフを生成する。
【0023】
連結グラフ抽出部152は、グラフ変換部151によって生成された有向グラフから、連結グラフを抽出する。すなわち、連結グラフ抽出部152は、グラフ変換部151によって生成された有向グラフを、1以上の連結グラフの単位に分解する。連結グラフとは、有向グラフの枝を辿ることで到達可能な各ノードと、当該各ノード間を接続する枝との集合である。有向グラフの分割アルゴリズムはグラフ理論の一般的な方式が適用可能である。
【0024】
属性情報付与部153は、各連結グラフの各ノードに属性情報を付与する。各ノードは、ドメイン名又はIPアドレスである。したがって、各ノードには、当該ノードのドメイン名又はIPアドレスに関して、DNSログ記憶部121又はフロー情報記憶部122に記憶されている情報が属性情報として付与される。
【0025】
なお、グラフ生成部15によって生成された有向グラフ(各連結グラフ)を示す情報は、グラフ情報記憶部123に記憶される。
【0026】
トラヒック量推定部16は、グラフ情報記憶部123に記憶されている情報が示す有向グラフに基づいて、サービスごとのトラヒック量を推定する。一般的に、ドメイン名によって各サービスを識別することができる。すなわち、サービスごとにドメイン名は異なる。但し、別名によってサービスを識別するのは困難である。一つのサービスに対して複数の別名が設定される可能性が有るからである。したがって、本実施の形態では、別名を除くドメイン名ごとに、トラヒック量が推定される。
図2において、トラヒック量推定部16は、フロー数分配推定部161及びトラヒック量算出部162を含む。これら各部の機能の詳細については後述される。
【0027】
推定値変換部17は、トラヒック量推定部16で推定されたドメイン名ごとのトラヒック量の内部表現を、人間が確認可能なテキスト等の表現形式に変換する。例えば、推定値変換部17は、変換後の表現形式によって、ドメイン名ごとのトラヒック量を可視化する。
【0028】
以下、推定装置10が実行する処理手順について説明する。
図3は、グラフ生成部が実行する処理手順の一例を説明するためのフローチャートである。
図3の開始時において、ログ情報記憶部には、期間t11において収集されたDNS応答パケットに関してDNS応答統計処理部12によって計測された統計情報が記憶されており、フロー情報記憶部122には、期間t12において収集されたフロー情報に関してフロー情報統計処理部14によって計測された統計情報が記憶されている。ここで、期間t11と期間t12とは、同じであってもよいし、異なっていてもよい。期間t12と期間t12とが同じであるとは、それぞれの期間の開始時期及び終了時期が一致することをいう。期間t11と期間t12とが異なるとは、それぞれの期間の開始時期及び終了時期の少なくともいずれか一方が異なることをいう。
【0029】
ステップS101において、グラフ変換部151は、DNSログ記憶部121に記憶されている情報(以下、「DNSログ」という。)を読み出す。
【0030】
図4は、DNSログ記憶部の構成例を示す図である。
図4に示されるように、DNSログ記憶部121には、DNS要求テーブルT1と、DNS応答テーブルT2とが記憶されている。
【0031】
DNS要求テーブルT1には、DNS応答のQuestionセクションに記述された情報(すなわち、DNS要求に関する情報)が記憶されている。具体的には、DNS要求テーブルT1には、観測されたドメイン名及びクエリタイプの組み合わせの単位ごとに、要求数及びユーザ数が記憶されている。
【0032】
ドメイン名(厳密にはFQDN(Fully Qualified Domain Name)であり、以下のドメイン名についても同じ。)は、DNS要求において問い合わせの対象とされたドメイン名(すなわち、名前解決の対象のドメイン名)である。クエリタイプは、当該DNS要求において問い合わせの対象とされたレコードである。「A」は、Aレコードを示す。
図4には示されていないが、AAAAレコードが問い合わせの対象とされた場合のクエリタイプは、「AAAA」となる。要求数は、「ドメイン名」及び「クエリタイプ」に対応するQuestionセクションを含むDNS応答の数である。なお、1つのDNS応答は、複数のDNS応答パケットによって構成される場合も有るため、ここでは、DNS応答の数としている。ユーザ数は、「ドメイン名」及び「クエリタイプ」に対応するQuestionセクションを含むDNS応答に係るDNS応答パケットの宛先IPアドレスの種類数である。すなわち、ユーザ数は、DNS要求元の種類数である。「ドメイン名」及び「クエリタイプ」ごとの要求数及びユーザ数は、DNS応答統計処理部12によって計測される。なお、
図4において、要求数及びユーザ数の値は、便宜上、記号によって示されているが、実際には数値である。
【0033】
一方、DNS応答テーブルT2には、DNS応答のAnswerセクションに記述されたAレコード、AAAAレコード、又はCNAMEレコード等に関する情報が記憶されている。具体的には、DNS応答テーブルT2には、観測されたドメイン名、レコードタイプ、及びレコードデータの組み合わせの単位ごとに、TTL(Time To Live)が記憶されている。
【0034】
ドメイン名は、名前解決の対象とされたドメイン名である。レコードタイプは、DNS応答に含まれているレコードのタイプである。レコードデータは、DNS応答に含まれているレコードの値(すなわち、ドメイン名に対して対応付けられている値)である。当該レコードがAレコード又はAAAAレコードである場合(すなわち、レコードタイプが「A」又は「AAAA」である場合)、レコードデータの値はIPアドレス(IPv4のIPアドレス又はIPv6のIPアドレス)である。当該レコードがCNAMEレコードである場合(すなわち、レコードタイプが「CNAME」である場合)、レコードデータの値は、別名である。TTLは、ドメイン名のキャッシュの有効期限の最大値の推定値である。有効期限の最大値とは、「DNS権威サーバ」のゾーンファイルの設定ファイルにおいて定義されている値であり、ネットワーク管理者等によって設定される。観測されるDNS応答パケット内の各レコードのTTLは、当該DNS応答パケットの観測時点での残り秒数であるため、必ずしも最大値ではない。そこで、DNS応答統計処理部12は、期間t11において観測されたDNS応答パケットに含まれているAレコード又はCNAMEレコードのうち、ドメイン名、レコードタイプ、及びレコードデータが重複するレコードごとに、観測されたTTLの中で最大の値を計測し、計測結果を、当該レコードのTTLの最大値として推定する。
【0035】
続いて、グラフ変換部151は、フロー情報記憶部122に記憶されているフロー情報の統計情報(以下、「フロー情報ログ」という。)を読み出す(ステップS102)。
【0036】
図5は、フロー情報記憶部の構成例を示す図である。
図5に示されるように、フロー情報記憶部122には、観測されたフローのIPアドレスごとに(すなわち、観測されたフローについてIPアドレスが共通する単位ごとに)、フロー数、ユーザ数、バイト数が記憶されている。
【0037】
IPアドレスは、サーバ側のIPアドレスである。サーバ側のIPアドレスは、観測されたフローの送信元IPアドレス又は宛先IPアドレスである。推定装置10がISP等によって運用される場合、各クライアントのIPアドレスは、ISPによって割り当てられる。換言すれば、推定装置10は、クライアントのIPアドレスの一覧を保持することができる。フロー情報統計処理部14は、斯かる一覧に基づいて、送信元IPアドレス又及び宛先IPアドレスのいずれがサーバのIPアドレスであるのかを特定してもよい。
【0038】
フロー数は、「IPアドレス」に係るフローの数である。ユーザ数は、「IPアドレス」に係るフローのクライアント側のIPアドレスの数である。バイト数は、「IPアドレス」に係るフローのバイト数の総和(データ量)である。
【0039】
フロー数、ユーザ数、及びバイト数は、フロー情報統計処理部14によって計測される。なお、
図5において、フロー数、ユーザ数、及びバイト数の値は、便宜上、記号によって示されているが、実際には数値である。
【0040】
続いて、グラフ変換部151は、DNS応答テーブルT2の内容を、有向グラフに変換する(ステップS103)。
【0041】
図6は、DNS応答テーブルに基づく有向グラフの一例を示す図である。
図6のグラフg1は、
図4に示したDNS応答テーブルT2に対応する。すなわち、グラフg1の各ノードは、DNS応答テーブルT2のドメイン名又はレコードデータ(IPアドレス若しくは別名)である。具体的には、ノードn1、ノードn2、及びノードn3は、ドメイン名のノードである。ノードn4及びノードn5は、IPアドレスのノードである。
【0042】
また、グラフg1は、DNS応答テーブルT2におけるドメイン名とレコードデータとの対応関係を示すと共に、ドメイン名からレコードデータへの向きを有する有向枝を含む。
【0043】
続いて、連結グラフ抽出部152は、グラフ変換部151によって生成された有向グラフを、連結グラフの単位に分解し、各連結グラフを抽出する(ステップS104)。
【0044】
図7は、連結グラフの抽出を説明するための図である。ステップS103において生成される有向グラフが、仮に、
図7の左側の破線の矩形で囲まれたものである場合、
図7の右側に示されるように、4つの連結グラフが抽出される。なお、本実施の形態では、グラフg1が、そのまま1つの連結グラフとして抽出される。
【0045】
続いて、属性情報付与部153は、各連結グラフの各ノードに対して属性情報を付与する(ステップS105)。
【0046】
図8は、連結グラフの各ノードへの属性情報の付与を説明するための図である。
図8に示されるように、ドメイン名の各ノードに対しては、DNS要求テーブルT1において当該ノードに対応するレコードの要求数及びユーザ数と、DNS応答テーブルT2において当該ノードに対応するTTLとが付与される。
図8では、「<要求数>/<ユーザ数>/<TTL>」の形式で、付与された属性情報が示されている。
【0047】
一方、IPアドレスの各ノードに対しては、フロー情報記憶部122において当該ノードに対応するレコードのフロー数、ユーザ数、及びバイト数が付与される。
図8では、「<フロー数>/<ユーザ数>/<バイト数>」の形式で、付与された属性情報が示されている。
【0048】
なお、期間t11と期間t12との時間が相互に異なる場合、又は各期間の時間幅が相互に異なる場合、各IPアドレスのノード(ノードn4及びノードn5)に付与されたフロー数の合計と、中間ノードを除くドメイン名のノード(ノードn1及びノードn2)に付与された要求数の合計とが一致しなくなる可能性が有る。この場合、後述されるフロー数分配推定部161によって推定されるフロー変換行列Hの推定精度が劣化する可能性が有る。そこで、属性情報付与部153は、連結グラフごとに、中間ノードを除く各ドメイン名のノードの要求数の合計が1となるように、当該各ノードの要求数を正規化すると共に、IPアドレスの各ノードのフロー数の合計が1となるように、IPアドレスの各ノードのフロー数を正規化するようにしてもよい。
【0049】
なお、グラフ生成部15によって生成された各連結グラフを示す情報(以下、「グラフ情報」という。)は、グラフ情報記憶部123に記憶される。グラフ情報の生成周期は、DNS応答統計処理部12によるDNS応答パケットの統計処理の周期以上であり、かつ、フロー情報統計処理部14によるフロー情報の統計処理の周期以上であれば、どのような周期であってもよい。グラフ情報の生成時期(以下、「グラフ生成時期」という。)が訪れた時点において、DNSログ記憶部121に最後に記憶されたDNSログ(DNS要求テーブルT1及びDNS応答テーブルT2)と、フロー情報記憶部122に最後に記憶されたフロー情報ログとが用いられて、グラフ情報が生成されてもよい。
【0050】
各グラフ生成時期に生成されたグラフ情報は、当該グラフ生成時期に対応付けられてグラフ情報記憶部123に記憶される。例えば、期間t11と期間t12とに対応するグラフ生成時期をグラフ生成時期t1とすると、期間t11におけるDNSログと期間t12におけるフロー情報ログとに基づいて生成されたグラフ情報は、グラフ生成時期t1に対応付けられてグラフ情報記憶部123に記憶される。また、期間t11よりの後の一定期間である期間t12においてDNSログ記憶部121に記憶されたDNSログと、期間t21よりの後の一定期間である期間t22においてフロー情報記憶部122に記憶されたフロー情報ログとに基づいて生成される各連結グラフを示すグラフ情報は、期間t21及び期間t22とに対応するグラフ生成時期t2に対応付けられてグラフ情報記憶部123に記憶される。
【0051】
続いて、トラヒック量推定部16が実行する処理手順について説明する。
図9は、トラヒック量推定部が実行する処理手順の一例を説明するためのフローチャートである。なお、
図9は、各連結グラフについて実行されるが、本実施の形態では、
図6のグラフg1が処理対象とされる。また、
図9の処理の実行のタイミングは、
図3の処理の実行タイミングと非同期であってもよい。
【0052】
ステップS201において、フロー数分配推定部161は、変数tに1を代入する。変数tは、処理対象とするグラフ生成時期と、ステップS202以降の実行回数とを識別するための変数である。
【0053】
続いて、フロー数分配推定部161は、グラフ情報記憶部123から、t番目のグラフ生成時期に対応するグラフ情報を取得する(ステップS202)。ここでは、グラフ生成時期t1における、
図8のグラフg1を示すグラフ情報が取得される。続くステップS203〜ステップS207において、フロー数分配推定部161は、グラフg1の形状的特徴と、グラフg1の各ノードに付与された属性情報(すなわち、DNSログ及びフロー情報ログ)とに基づき、ドメイン名ごとの要求数とIPアドレスごとのフロー数との関係を示すフロー変換行列Hを推定する。本実施の形態では、グラフg1において、中間ノードを除くドメイン名のノード(すなわち、別名ではないノード)であるノードn1とノードn2とのそれぞれのトラヒック量を求めるためにそれぞれのフロー数を知りたいところ、フロー変換行列Hは、ノードn4とノードn5とにおいて既知であるフロー数が、ノードn1とノードn2とに対してどのように分配されるべきであるのかを推定するための行列である。なお、中間ノードを除くドメイン名のノードが1つである連結グラフ(例えば、
図7の右側の上から2番目の連結グラフ及び上から4番目の連結グラフ)の場合、中間ノードを除くドメイン名のノードのフロー数は、IPアドレスのノードのフロー数を単純に合算することで求めることが可能であるため、以降の処理は実行されなくてもよい。
【0054】
ステップS203において、フロー数分配推定部161は、グラフg1の各ノードに番号を割り振る。各ノードの番号が1つの連結グラフ内で重複しなければ、番号の割り振り方には制限が無い。
【0055】
図10は、連結グラフの各ノードへの番号の割り振りを説明するための図である。
図10においては、ノードn1、n2、n3、n4、n5の順に、(1)、(2)、(3)、(4)、(5)の番号が割り振られた例が示されている。
【0056】
続いて、フロー数分配推定部161は、グラフg1を隣接行列Aに変換する(S204)。隣接行列Aの行数と列数は等しく、かつ、その行数及び列数は、ステップS203において割り振られた番号の個数(すなわち、グラフg1のノードの数)に等しい。
【0057】
図11は、連結グラフに基づく隣接行列の一例を示す図である。
図11に示される隣接行列Aにおいて、行方向がソース側(有向枝が出る側)であり、列方向がシンク側(有向枝が入る側)である。隣接行列Aへの変換方法は、基本的には、一般に知られている汎用的な方法が利用されてよい。但し、本実施の形態において、隣接行列Aは、一般的な隣接行列に対して以下の(a)及び(b)に示される拡張がなされる。
(a)ノードiからノードjに有向枝が存在し,ノードjの入次数がnの場合,A
ij=1/nとする。
(b)ノードiの入次数が0の場合,ノードiの対角成分であるA
ii=1とする。
【0058】
なお、
図11において、0である成分の値は、便宜上、空欄とされている。
【0059】
例えば、A
13、A
23、A
34、及びA
35の値は、上記(a)に基づいて割り当てられた値である。すなわち、A
13、A
23は、それぞれ、ノードn1からノードn3への有向枝、ノードn2からノードn3への有向枝に対応するが、ノードn3の入次数(ノードn3に入ってくる有向枝の数)は、2である。したがって、A
13及びA
23の値は、1/2=0.5となる。また、A
34、A
35は、それぞれ、ノードn3からノードn4への有向枝、ノードn3からノードn4への有向枝に対応するが、ノードn4及びノードn5のいずれについても入次数は1である。したがって、A
13及びA
23の値は、1/1=1となる。
【0060】
一方、A
11及びA
22の値は、上記(b)に基づいて割り当てられた値である。すなわち、ノードn1及びノードn2のいずれについても、入次数は0である。したがって、A
11及びA
22の値は1とされている。
【0061】
続いて、フロー数分配推定部161は、グラフg1の最大ホップ長の数だけ隣接行列Aを掛け合わせて、行列A'を求める(ステップS205)。すなわち、フロー数分配推定部161は、A'=A
nを演算する(nはグラフg1の最大ホップ長)。なお、隣接行列Aをn乗ずる意義は、一般的なグラフ理論に詳しい。
【0062】
続いて、フロー数分配推定部161は、行列A'から、グラフg1における中間ノードを除くドメイン名のノードに対応する行と、IPアドレスのノードに対応する列との組み合わせに対応する成分を抽出する(SステップS206)。抽出された成分が構成する行列は、フロー変換行列Hの初期値H
initとされる。
【0063】
図12は、フロー変換行列の初期値の抽出例を示す図である。
図12では、行列A'における、(1)行及び(2)行と、(4)列及び(5)列との重複部分の成分が、初期値H
initとして抽出される例が示されている。
【0064】
続いて、フロー数分配推定部161は、初期値H
initと、グラフg1(
図8)において初期値H
initの各行に対応するドメイン名のノードに付与されている要求数と、グラフg1において初期値H
initの各列に対応するIPアドレスに対応するノードに付与されているフロー数とに基づいて、フロー変換行列Hを推定する(ステップS207)。フロー変換行列Hは、当該要求数及び当該フロー数に含まれるノイズ等により一意に定まるものではないため、本実施の形態では、最適化問題を解くことにより、フロー変換行列Hの局所解が推定される。例えば、以下の式(1)は、最適化問題を解く場合の定式化の一例である。
【0065】
【数1】
ここで、||…||
Fは、フロベニウス・ノルムを表す。
また、αは、初期状態(初期値H
init)の重視度を決めるパラメータである。すなわち、フロー変換行列Hについて、初期値H
initにできるだけ近い解を得たい場合に、αの値は大きくされる。
【0066】
更に、ベクトルXは、グラフg1において初期値H
initの各列に対応するIPアドノード(ノードn4、ノードn5)に付与されているフロー数(F4、F5)である。ベクトルYは、グラフg1において初期値H
initの各行に対応するドメイン名のノード(ノードn1、ノードn2)に付与されている要求数(Q1、Q2)である。
【0067】
すなわち、フロー変換行列Hは、IPアドレスごとのフロー数を、ドメイン名ごとのフロー数に変換するための行列である。
【0068】
なお、最適化問題を解く場合、フロー変換行列Hの初期値は、任意の値であってもよい。例えば、全ての成分の値が0である行列が初期値とされてもよい。この場合、ステップS203〜S206は実行されなくてもよい。但し、本実施の形態のように、初期値H
initを求めることで、フロー変換行列Hについて、グラフg1の状態(すなわち、DNS応答パケットやフロー情報の観測状態)に即した解が得られる可能性を高めることができる。その結果、ドメイン名ごとのトラヒック量の推定精度の向上を期待することができる。
【0069】
なお、式(1)は、最適化問題として解く場合の定式化の一例であり、式(1)からフロー変換行列Hに関する更新式を導出することで局所解を求めることができる。他の例として、ヒルクライム法等の最適化問題を解く方式が適用されてもよい(例えば、非特許文献6参照)。
【0070】
続いて、フロー数分配推定部161は、変数tの値が、グラフg1の中間ノードを除くドメイン名のノードの数に達したか否かを判定する(ステップS208)。変数t1の値が該当ノードの数に達していない場合(ステップS208でNo)、フロー数分配推定部161は、変数tに1を加算して(ステップS209)、ステップS202以降を繰り返す。すなわち、次のグラフ生成時期に関して、ステップS202以降が実行される。本実施の形態において、該当ノードの数は、ノードn1とノードn2との2つである。したがって、例えば、生成時期t2に関してステップS202以降が実行され、生成時期t2に対するフロー変換行列Hが生成される。
【0071】
このように、フロー変換行列Hは、グラフg1の中間ノードを除くドメイン名のノードの数だけ、グラフ生成時期が相互に異なるグラフ情報に基づいて生成される。例えば、本実施の形態では、グラフ生成時期t1に対するフロー変換行列H1と、グラフ生成時期t2に対するフロー変換行列H2とが生成される。この理由については後述される。
【0072】
ステップS210以降では、フロー変換行列H等が用いられて、トラヒック量算出部162によって、ドメイン名ごとのトラヒック量の推定値が算出される。
【0073】
ステップS210において、トラヒック量算出部162は、値が未知であるデータ(すなわち、値が推定されるべきデータ)、及び値が既知のデータ(すなわち、グラフg1の各ノードに属性情報として付与されているデータ)のそれぞれについて変数を定義する。本実施の形態では、以下のように変数が定義される。
[既知のデータ]
Ra:各IPアドレスのフロー毎バイト数
Sa:各IPアドレスのフロー数
Ba:各IPアドレスのバイト数
Sd:各ドメイン名のフロー数
なお、各ドメイン名のフロー数Sdは、DNSログからは得られないものの、要求数で近似可能であるため、その値が代入される。
[未知のデータ]
Rd:各ドメイン名のフロー毎バイト数
Bd:各ドメイン名のバイト数
本実施の形態において、既知の各データの値は、以下の通りとなる。
Ra=(B4/F4,B5/F5)
Sa=(F4,F5)
Ba=(B4,Q5)
Sd=(Q1,Q2)
なお、グラフg1に関して、中間ノードを除くドメイン名のノードの数は2であるため、Rd及びBdの次元数は2である。
【0074】
続いて、トラヒック量算出部162は、各ドメインのフロー毎バイト数Rdを未知変数として、フロー変換行列Hを用いてトラヒック量の推定式(2)を生成する(ステップS211)。
【0075】
【数2】
Rdに含まれる未知変数の数は、各隣接行列の中間ノードを除くドメイン名の数と一致する。推定式(2)を展開することにより連立一次方程式が得られる。
【0076】
なお、連立一次方程式は、Rdの次元数分生成される。具体的には、中間ノードを除くドメイン名のノードの数だけ生成されているフロー変換行列Hのそれぞれが用いられて、連立一次方程式が生成される。したがって、本実施の形態では、グラフ生成時期t1とグラフ生成時期t2とに対する以下の2つの連立一次方程式(3)が生成される。
【0077】
【数3】
連立一次方程式(3)において、Sd1、H1、Ba1は、グラフ生成時期t1に対応するSd、フロー変換行列H、Baである。Sd2、H2、Ba2は、グラフ生成時期t2に対応するSd、フロー変換行列H、Baである。このように、フロー変換行列、Sd、及びBaは、グラフg1の中間ノードを除くドメイン名のノードの数分だけ必要となるため、ステップS202〜S207は、その数分繰り返されるのである。
【0078】
なお、ここでは、Rdが時刻に対して不変であること又は変化が小さいことが仮定されている。斯かる仮定は、一般的に妥当であるものと考えられる。フロー毎バイト数は、サービスに依存するものであり、時刻に対する依存度は小さいと考えられるからである。例えば、動画サイトと単なるテキスト情報のサイトとを比較すれば、動画サイトの方がフロー毎バイト数が大きいと考えられ、その関係は、時刻に対して不変である可能性が高いと考えられる。したがって、本実施の形態は、フロー毎バイト数について、時刻に対する依存度が低い環境に対して好適である。
【0079】
続いて、トラヒック量算出部162は、連立一次方程式(3)を解くことで、Rdを求める(ステップS212)。但し、観測されるDNS応答パケットやフロー情報のノイズの影響等によりRdは一意に定まらない場合が有る。その場合には、非特許文献6の局所解を求める方法が利用されてもよい。
【0080】
続いて、トラヒック量算出部162は、ステップS212において得られたRdに対して、Sdを乗算することにより、Bdを求める(ステップS213)。すなわち、以下の演算が実行される。
【0081】
【数4】
ここで、Bdは、目的とする、ドメイン名ごとのトラヒック量である。
【0082】
なお、ドメイン名ごとのトラヒック量の推定方法として、上記以外の方法が採用されてもよい。例えば、非特許文献5のような最適化アルゴリズム等の要素技術が用いられてもよい。
【0083】
推定値変換部17は、上記のように推定された、ドメイン名ごとのトラヒック量を、例えば、
図13に示されるような形式で出力する。
【0084】
図13は、ドメイン名ごとのトラヒック量の推定結果の出力例を示す図である。
図13では、グラフg1の他に、グラフg2が示されている。グラフg2は、グラフg1と共に抽出された連結グラフであるとする。この場合、非中間ノードの4つのドメイン名について、トラヒック量が得られる。推定値変換部17は、これらのトラヒック量を、例えば、テーブルT3に示される形式で可視化する。テーブルT3には、ドメイン名ごとに推定トラヒック量が示されている。なお、テーブルT3における行の配列順序は、推定トラヒック量によってソートされてもよい。すなわち、ドメイン名ごとの推定トラヒック量のランキングが出力されてもよい。出力形態は、所定のものに限定されない。例えば、表示装置に表示されてもよいし、プリンタに印刷されてもよい。又は、ネットワークを介して他のコンピュータに送信されてもよい。
【0085】
上述したように、第一の実施の形態によれば、統計化された入力データ(DNSログ及びフロー情報ログ)が、グラフ生成部15によって有向グラフに変換され、その有向グラフの特性を活かしつつ、トラヒック量推定部16によって、統計情報に基づいてドメイン名ごとのトラヒック量が推定される。これら一連の処理の中では、個々のユーザやパケット単位の紐付けは必要とされない。すなわち、本実施の形態では、各DNS応答パケットと各フロー情報とを一つずつ紐付けるのではなく、DNS応答パケットの統計情報と、フロー情報の統計情報とを関連付けることにより、ドメイン名ごとのトラヒック量が推定される。したがって、DNS応答パケット及びフロー情報のそれぞれの収集場所や収集時刻の違いによりDNSログとフロー情報のそれぞれの送信ユーザ群が異なるケースにおいても対応可能である。よって、ドメイン名ごとのトラヒック量の推定のための情報収集に関する制約を緩和することができる。
【0086】
その結果、例えば、DNS応答パケットとフロー情報とを異なる場所及び時間で収集せざるを得ない制約が有る大規模ネットワークにおいて、運用者は、サービス単位のトラヒック量を容易に把握することができ、ネットワーク監視・運用コストの削減、回線輻輳時の原因の切り分けの迅速化、あるいはネットワークの設備投資の最適化等の応用的な効果を期待することができる。
【0087】
次に、第二の実施の形態について説明する。第二の実施の形態では第一の実施の形態と異なる点について説明する。第二の実施の形態において特に言及されない点については、第一の実施の形態と同様でもよい。
【0088】
第二の実施の形態でのトラヒック量算出部162は、は、
図9のステップS211において、以下の推定式(4)を生成する。
【0089】
【数5】
すなわち、第二の実施の形態では、フロー変換行列Hは利用されない。したがって、
図9のステップS201〜S208は実行されなくてもよい。また、
図3の処理も実行されなくてもよい。この場合、グラフ生成時期ごとの連立一次方程式は、以下の通りとなる。
【0090】
【数6】
その他については、第一の実施の形態と同様でよい。
【0091】
第二の実施の形態は、十分な観測データ(DNS応答パケット及びフロー情報)が蓄積されている場合に適用されることが好ましい。観測データが多ければ多いほど、フロー変換行列Hが利用されなくても、ドメイン名ごとのトラヒック量の推定精度の劣化が大きくなるのを回避できると可能性が高くなるからである。
【0092】
次に、第三の実施の形態について説明する。第三の実施の形態では第一又は第二の実施の形態と異なる点について説明する。第三の実施の形態において特に言及されない点については、第一又は第二の実施の形態と同様でもよい。
【0093】
図14は、第三の実施の形態における推定装置の機能構成例を示す図である。
図14中、
図2と同一部分には同一符号を付し、その説明は省略する。
図14において、推定装置10は、更に、要求数補正部18及びフロー情報補正部19を有する。
【0094】
要求数補正部18は、DNSログに含まれる要求数とTTLとを用いて、クライアントによるサーバへのアクセス数又はフロー数を推定し、推定結果によって、DNSログ内の要求数を置き換える。すなわち、DNSログに含まれる要求数は、クライアントによるサーバへのアクセス数又はフロー数とは異なる。通常、ユーザがWebページを閲覧するなどして、あるURL(Uniform Resource Locator)にアクセスする際には、当該URLに含まれるドメイン名に対して名前解決が試みられる。但し、一般にユーザの端末にはDNS応答をキャッシュする仕組み(スタブリゾルバ)が存在するため、クライアントによるWebページへのアクセス数に対して、観測されるDNS応答パケットは大幅に少なくなる。
【0095】
そこで、要求数補正部18は、TTLと要求数とを用いて、実際のサーバへのアクセス数を推定する。例えば、TTLによって特定される期間において行われた名前解決の回数を推定し、推定結果を当初の要求数に加算することで、当該要求数が補正されてもよい。
【0096】
したがって、第三の実施の形態において、
図4に示されるDNS要求テーブルT1の要求数は、補正後の値となる。
【0097】
一方、フロー情報補正部19は、フロー情報ログのフロー数、ユーザ数、及びバイト数を補正する。すなわち、ルータ等の一般的なネットワーク機器では、性能上の理由により定常的にサンプリングを行いながらフロー情報が収集される。例えば、1000パケットごとに1パケットに関するフロー情報が収集される。このようにサンプリングされたフロー情報に基づくフロー数、ユーザ数、及びバイト数は、実際の値よりも小さいものとなる。
【0098】
そこで、フロー情報補正部19は、サンプリング前のフロー数、ユーザ数、及びバイト数を推定し、推定結果によって、フロー情報ログの内容を補正する。例えば、サンプリングの割合に基づいて補正が行われてもよい。サンプリングの割合が1/1000であれば、フロー数、ユーザ数、及びバイト数の値を1000倍することにより、補正が行われてもよい。又は他の方法によって補正が行われてもよい。
【0099】
したがって、第三の実施の形態において、
図4に示されるDNS応答テーブルT2の要求数は、補正後の値となる。
【0100】
上述したように、第三の実施の形態によれば、DNSログの要求数やフロー情報ログの値を実際の値に近づけることができるため、ドメイン名ごとのトラヒック量の推定精度の向上を期待することができる。
【0101】
なお、上記各実施の形態において、DNS応答統計処理部12は、第一の計測部の一例である。フロー情報統計処理部14は、第二の計測部の一例である。グラフ生成部15は、生成部の一例である。フロー数分配推定部161は、行列推定部の一例である。トラヒック量算出部162は、算出部の一例である。
【0102】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。