説明

トポロジーツリー作成装置、プログラム、及び方法

【課題】ネットワークに流れる通常のパケットから、ネットワークトポロジーを高精度に特定するため技術を提供する。
【解決手段】観測されたパケットから、そのパケットが経由したノードの数であるホップ数、及び送信上のボトルネックとなるボトルネック帯域を特定し、ロス障害を検出する。それにより、観測されたパケットを送信したサブネットは、特定したホップ数、及びボトルネック帯域を基に、トポロジーツリー上にノードとして配置する。パケットをロスするロス障害を検出した場合には、そのロス障害が検出されたサブネットのトポロジーツリー上の配置から、不適切に配置されているサブネットを抽出し、抽出したサブネットは不適切性とならないように配置を変更する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サブネットが相互に連結された構成のネットワークのトポロジーを特定するための技術に関する。
【背景技術】
【0002】
現在、インターネットに代表されるネットワークは、各種サービスを提供するために幅広く用いられている。そのサービスでは、パケットの伝送経路上にスイッチの故障やルータでの輻輳等による障害が発生すると、パケットの受信品質が大きく低下する。例えばパケットロス率が大きくなると、パケットの再送信が必要になることから、パケットの送信に必要な時間がより長くなる、といった不具合が発生する。このことから、伝送経路(ネットワーク)上に発生した障害には迅速に対応することが重要となっている。それにより、ネットワークのトポロジーを把握することは、障害解析上、大変重要となっている。
【0003】
ネットワークでは、ネットワークを設計構築する設計構築部門と運用管理(障害対応)する運用管理部門とが別々となっていることは多い。運用管理部門は、障害対応に際してネットワークの正確なトポロジー情報を入手できないことは多い。状態解析を実施しようとするネットワークのユーザも、やはりトポロジー情報の入手は困難であるのが普通である。このようなことから近年では、ネットワークのトポロジーを特定(推定)する技術が検討されている。
【0004】
ネットワークのトポロジーを推定する従来のトポロジー推定方法は、3つに大別される。即ち、tracerouteによる推定方法、SNMP(Simple Network Management Protocol)による推定方法、及びルーティングプロトコルのキャプチャによる推定方法、の3つである。
【0005】
tracerouteはネットワーク上のある観測地点(調査ノード)から任意の宛先ノードまでの転送経路を、調査ノードからの調査パケットの送信、及びその応答から調べる調査ツール(プログラム)である。それにより、tracerouteによる推定方法では、このツールを多数の宛先ノードに使用し、各宛先ノードで得られた結果を統合することで調査ノードからのネットワークトポロジーを推定する。ここでは、tracerouteとはそのような調査パケットを用いる調査ツールの総称として表記している。
【0006】
SNMPとはネットワーク上のノードが蓄積している統計情報や管理情報(MIB:Management Information Base)を要求・取得するためのプロトコルである。SNMPによる推定方法では、SNMPを用いて、調査ノードからネットワーク上の各ノードに対してMIBの情報を要求・取得しそれを統合することで、ネットワークトポロジーを推定する。なおノードが保持している情報の取得方法、及びその取得に用いるプロトコルにはそれぞれ異なるものが存在するが、ここではSNMPによる推定方法はそのような異なるものも含む意味で用いている。
【0007】
ルーティングプロトコルとは、ネットワークの経路情報を交換するためのプロトコルである。ルーティングプロトコルの中でも例えばリンクステート型と言われるプロトコルでは、ネットワークのトポロジー情報とそのコスト情報をノード間で交換することができる。このため、ルーティングプロトコルのキャプチャによる推定方法では、調査ノードにてその交換用のパケットをキャプチャすることでトポロジーを推定する。リンクステート型のルーティングプロトコルの代表的なものとしてOSPF(Open Shortest Path First)がある。
【0008】
上記方法のうち、tracerouteやSNMPによる推定方法では調査ノードからネットワークに対して調査パケット(あるいはリクエスト)を送信する必要がある。このような推定方法のことはアクティブ探索方法と呼ばれる。ネットワークはその管理の方針から、例えばネットワーク管理者により調査のためのパケット送信が制限される場合がある。そのような場合、アクティブ探索方法を用いてネットワークトポロジーを推定することはできない。
【0009】
また上記方法のうちのルーティングプロトコルのキャプチャによる推定方法は、ネットワークにリンクステート型のルーティングプロトコルのパケットが流れていなければならないが、そのようなネットワークは多くはないのが実情である。したがってこの推定方法は汎用性が低く、ネットワークトポロジーの推定に使用できない可能性が高い。
【0010】
このようなことから、ネットワークトポロジーの推定では、調査パケット、或いはルーティングプロトコルのパケットといった特別なパケットの送信を前提としないことが望ましいと言える。つまり、ネットワークトポロジーは、ネットワークを流れる普通のパケットから推定することが望ましいと言える。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2002−77161号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
本発明は、ネットワークを流れる通常のパケットから、ネットワークトポロジーを高精度に推定(特定)するための技術を提供することを目的とする。
【課題を解決するための手段】
【0013】
開示の1装置では、サブネットが相互に連結された構成のネットワークを流れるパケットを取得し、パケットを送信したサブネットである送信元サブネット毎に、取得したパケットから、そのパケットが経由したノードの数であるホップ数、及びそのパケットの送信上のボトルネックとなっているボトルネック帯域を特定すると共に、パケットをロスするロス障害を検出し、特定したホップ数、及びボトルネック帯域を基に、ネットワークに存在するサブネットのなかで送信元サブネットとして確認されたサブネットをトポロジーツリー上に配置し、ロス障害の検出結果を用いて、トポロジーツリー上に配置したサブネットのなかで該配置が不適切なサブネットを抽出し、該抽出したサブネットの配置を変更する。そのようにして、ネットワークトポロジーの推定(特定)結果として、ネットワークの構成を模擬したトポロジーツリーを作成する。
【発明の効果】
【0014】
開示の1装置は、ネットワークに流れる通常のパケットから、ネットワークトポロジーを高精度に推定、つまりネットワークの構成を模擬したトポロジーツリーを高精度に作成することができる。
【図面の簡単な説明】
【0015】
【図1】本実施形態によるトポロジーツリー作成装置が適用されたネットワークのシステム構成を説明する図である。
【図2】本実施形態によるトポロジーツリー作成装置の機能構成を説明する図である。
【図3】パケットのヘッダのフォーマットを説明する図である。
【図4】TCPヘッダのフォーマットを説明する図である。
【図5】サブネット管理情報リストの構成を説明する図である。
【図6】TCPコネクション管理情報リストの構成を説明する図である。
【図7】トポロジー情報の構成を説明する図である。
【図8】同時ロス障害発生拠点リストの構成を説明する図である。
【図9】トポロジーツリーの作成・更新方法を説明する図である。
【図10】ロス障害が検出されたサブネット群における最小のホップ数が既存のブランチの最小ホップ数と同じ場合のトポロジーツリーへの操作例を説明する図である。
【図11】ロス障害が検出されたサブネット群における最小のホップ数が既存のブランチの最小ホップ数より小さい場合のトポロジーツリーへの操作例を説明する図である。
【図12】ロス障害が検出されたサブネット群における最小のホップ数が既存のブランチの最小ホップ数より大きい場合のトポロジーツリーへの操作例を説明する図である。
【図13A】パケット解析処理のフローチャートである。
【図13B】パケット解析処理のフローチャートである。
【図13C】パケット解析処理のフローチャートである。
【図14A】トポロジーツリー構成処理のフローチャートである。
【図14B】トポロジーツリー構成処理のフローチャートである。
【図15】本実施形態を適用可能なコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態によるトポロジーツリー作成装置が適用されたネットワークのシステム構成を説明する図である。
【0017】
大規模なネットワークは普通、複数の小規模のネットワーク(サブネット)が相互に連結された構成となっている。図1のネットワーク1も、多数のサブネットを相互に連結した構成となっている。それにより、ネットワーク1上を流れるパケットを転送するノードであるルータ11を多数、備えている。
【0018】
本実施形態によるトポロジーツリー作成装置は、接続された箇所のネットワーク1上を流れる通常のパケットを監視し、監視のために取得したパケットから、ネットワーク1のトポロジーを推定(特定)する。このトポロジーツリー作成装置は、ネットワーク1上に発生した障害等を監視するためのネットワーク監視装置20上に搭載された形で実現されている。このことから以降、特に断らない限り、ネットワーク監視装置20はトポロジーツリー作成装置を指す意味で用いる。
【0019】
図2は、本実施形態によるネットワーク監視装置(トポロジーツリー作成装置)20の機能構成を説明する図である。図2に示すようにネットワーク監視装置20は、パケットキャプチャ部21、ホップ数解析部22、ボトルネック帯域解析部23、ロス(loss)障害検出部24、サブネット情報判定部25、及びトポロジーツリー構成部26と、を備えた構成となっている。
【0020】
パケットキャプチャ部21は、ネットワーク1上を流れるパケットをキャプチャ(取得)し、キャプチャしたパケットをそれぞれホップ数解析部22、ボトルネック帯域解析部23及びロス障害検出部24に渡す。
【0021】
ホップ数解析部22は、渡されたパケットのヘッダを参照した解析により、そのパケットを送信元のサブネットが送信してから通過したノードの数であるホップ数を推定(特定)する。そのノードとは、GW(GateWay)装置、或いはルータ11等である。ここでは便宜的に、そのノードとしては、代表的なルータ11のみを想定する。
【0022】
図3は、パケットのヘッダのフォーマットを説明する図である。図3に示すように、パケットのヘッダには、そのパケットを送信したデータ処理装置(コンピュータ)を示す送信元アドレス、そのパケットの最終的な送信先のデータ処理装置を示す宛先アドレスをそれぞれ格納するフィールド以外にも、多くのフィールドが存在する。その一つとして、TTLフィールドがある。以降、パケットの送信元、或いは宛先のデータ処理装置は「ホスト」と総称する。
【0023】
そのTTLフィールドに格納された値は、ルータ11を通過する度に1ずつ減算される。その値が0となったパケットは、転送することなく破棄される。パケットを送信するホストは、その初期値として、そのホストが実行するOS(オペレーティングシステム)の種類(OS種別)に応じた値を格納するのが普通である。その値とは、例えば31、127、或いは255などである。このことからホップ数解析部22は、パケットヘッダのTTLフィールドの値を用いた解析により、ホップ数を推定する。
【0024】
ネットワーク監視装置20は、同一の箇所を流れるパケットを監視する。このため、同一サブネット内のホストからそれぞれ送信されたパケットが通過したルータ11の数は同じか、或いは近い数となる。これは、TTLフィールドの値(TTL値)は、初期値に応じて狭い範囲内に収まることを意味する。つまり、そのルータ数(ホップ数)をxとすると、TTL値には、31−x、127−x、及び255−xのうちの何れかにより算出される値に偏りが発生する。このことから、ホップ数解析部22は、サブネット毎、及び送信元ホスト毎に、TTL値を用いた逆算によりホップ数、更にはOS種別を推定(特定)する。推定したホップ数、及びOS種別は、サブネット管理情報テーブル31に格納する。
【0025】
パケットの伝送には、その伝送速度に応じた時間が掛かる。例えば1500バイト長のパケットでは、10M[bps]の伝送速度を持つ回線で伝送する場合には12[msec]、1G[bps]の伝送速度を持つ回線であれば0.012[msec]の伝送時間がそれぞれ掛かる。また、あるノード11で回線の伝送速度が1G[bps]から10M[bps]に変化する場合、1500バイト長のパケットが連続して転送されてきたとしても、受信側と送信側とで伝送時間が異なるため、当該ノードで送信待ちとなるパケットが発生することになる。反対に、あるノードで回線の伝送速度が10M[bps]から1G[bps]に変化する場合には、伝送時間の違いにより、受信待ちとなるパケットが発生することになる。パケットのサイズ(バイト数)は、パケットヘッダにパケット長として格納されている。
【0026】
このようなことから、受信側と送信側とで伝送速度が異なれば、結果として、遅い方の伝送速度(ボトルネック帯域)でパケットは転送されることになる。パケットヘッダのパケット長が示すサイズのパケットをキャプチャしてから次のパケットをキャプチャするまでの時間は、ボトルネック帯域に応じた長さとなる。例えば1500バイト長のパケットを観測してから次のパケットを観測するまでの時間が1.2[msec]であれば、ボトルネック帯域は10M[bps]と推定することができる。ボトルネック帯域解析部23は、このようにして、ホスト毎にボトルネック帯域を推定する。この推定したボトルネック帯域も同様に、サブネット管理情報テーブル31に格納される。
【0027】
図4は、TCPヘッダのフォーマットを説明する図である。図4に示すように、TCP(Transmission Control Protocol)など信頼性のある通信を行うプロトコルでは、そのプロトコル用のヘッダがパケットに格納される。そのヘッダには、通信の一貫性を確保するための番号(シーケンス番号)が格納されるシーケンス番号フィールドが設けられている。送信元ホストは、シーケンス番号として、各パケットに送信順を示す値をそのフィールドに格納する。それにより宛先ホストは、受信したパケットのシーケンス番号から、失われたパケットの存在、及び実際に失われたパケットを特定することができる。
【0028】
ロス障害検出部24は、例えば送信元ホスト毎に、送信元ホストから宛先ホストに送信されたパケットの総数、及び失われたパケットの総数を取得し、その比率(=失われたパケットの総数/送信されたパケットの総数)をロス率として求める。そのようにして求めたロス率を所定の閾値と比較することにより、ロス障害を検出する。それにより、求めたロス率が閾値を越えている場合に、ロス障害が発生したと判定する。このロス障害の判定結果も同様に、サブネット管理情報テーブル31に格納される。ロス障害が発生したか否かを判定するための閾値は以降「ロス判定閾値」と呼ぶことにする。ロス障害は、これ以外の方法を用いて検出するようにしても良い。
【0029】
図5は、サブネット管理情報リスト31の構成を説明する図である。この管理情報リスト31は、サブネット毎に、サブネット管理情報、つまりそのサブネットから送信されたパケットを観測して得られた情報、及びその情報を解析して得られた推定結果を保存・管理するためのものである。図5に示すように、表形式で表した場合、ホップ数推定、LAN/WAN、ロス検知、及び推定結果のカラム(項目)を持つデータ構造となっている。理解を容易にするために、図5には1サブネット分のサブネット管理情報のみを示している。
【0030】
LAN/WANカラムには、ホスト毎にエントリが作成される。ホップ数推定カラム、ロス検知カラム、及び推定結果カラムは、LAN/WANカラムのエントリ毎に、一つ以上のエントリが作成されるようになっている。それにより、推定したホップ数、及びOS種別の組み合わせ毎に、観測結果等を管理・保存可能になっている。
【0031】
ホップ数推定カラムにはOS種別、ホップ数、パケット数のサブカラムがある。パケット数サブカラムには、送信元ホストから送信されたパケットの総数が格納される。
LAN/WANカラムにはホスト、及びLAN/WAN区別のサブカラムがある。ホストサブカラムには、送信元ホストのアドレス(ホストアドレス)、LAN/WAN区別サブカラムには、推定したボトルネック帯域から判定したサブネットの種類が格納される。本実施形態では、推定したボトルネック帯域を所定の閾値と比較することにより、サブネットをLAN及びWANの何れかと判定する。それにより、推定したボトルネック帯域が閾値を越えていればサブネットは伝送速度が高速なLANと判定する。この閾値は以降「LAN/WAN判定閾値」と呼ぶことにする。推定したボトルネック帯域によるサブネットの種類の分類は、LAN/WANの二者択一とは異なるものであっても良い。つまり3つ以上の種類のなかから選択するようにしても良い。
【0032】
このように二者択一によりサブネットの種類を判定するのは、ボトルネック帯域として推定した数値をそのまま扱う必要性は低いからである。パケットが他のサブネットを経由している場合、ボトルネック帯域の推定にはパケットが通過した全てのサブネットが影響を及ぼす。それにより、推定したボトルネック帯域には、比較的に大きな誤差が生じやすい。このことも理由の一つである。
【0033】
ロス検知カラムには、ホスト、及びロス有無のサブカラムがある。ロス有無サブカラムには、上記のように求めたロス率から判定したロス障害の有無を示す情報を格納するようになっている。図5に表記の「無」はロス障害が発生していないと判定、つまりロス障害を検出していないことを表している。ロス障害が発生していると判定した場合にはその旨を示す内容が格納される。以降、ロス障害が発生していないと判定した場合に書き込む情報は「無」、ロス障害が発生していると判定した場合に書き込む情報は「有」とそれぞれ表記する。
【0034】
推定結果カラムには、ホップ数、LAN/WAN区別、ロス有無のサブカラムがある。各サブカラムは、対応するサブネット全体に対する最終的な推定結果が格納される。このため、他のカラムの同名のサブカラムに格納された内容とは必ずしも一致しない。
【0035】
周知のように、TCP/IPでコンピュータの住所を表すアドレス(IPアドレス)は、そのコンピュータが存在するサブネットのアドレス(ネットワークアドレス)と、サブネット内でのそのコンピュータ自身のアドレス(ホストアドレス)から構成されている。このことから、サブネット管理情報リスト31において、1サブネット分のサブネット管理情報はネットワークアドレスにより特定される。
【0036】
図6は、TCPコネクション管理情報リストの構成を説明する図である。このリストは、キャプチャしたパケットが送受信されるTCPコネクション毎に、そのTCPコネクションに係わる情報(TCPコネクション管理情報)を保存するためのものである。図6には便宜的に、1サブネット分のみ示している。各エントリ(レコード)には、TCPコネクション管理情報として、送信元/送信先のアドレス/ポート番号の組、LAN/WAN区分、及びロス有無が格納される。他には、特には図示していないが、最後に受信したパケットのシーケンス番号、受信したパケットの総数(以降「受信パケット総数」と呼ぶ)、及び失われたパケットの総数(累算値。以降「喪失パケット総数」と呼ぶ)を格納するようになっている。それにより、TCPコネクション毎に、LAN/WAN区分、及びロス有無の各サブカラムの内容を格納するようにしている。
【0037】
上述したように、図5に示すサブネット管理情報テーブル31は、ホップ数解析部22、ボトルネック帯域解析部23、及びロス障害検出部24によって更新される。図6に示すTCPコネクション管理情報リストは、例えばロス障害検出部24によって更新される。
【0038】
パケットキャプチャ部21、ホップ数解析部22、ボトルネック帯域解析部23、及びロス障害検出部24は、パケットをキャプチャし、キャプチャしたパケットから必要な情報を抽出し、抽出した情報を用いた各種推定を行う解析部分を構成する。サブネット情報判定部25及びトポロジーツリー構成部26は、この解析部分により得られたサブネット管理情報テーブル31を参照し、ネットワーク1のトポロジーの構成を推定するトポロジーツリー構成部分を構成する。本実施形態では、ネットワーク1のトポロジー構成は、その構成を模擬したツリー(トポロジーツリー)で表現するようにしている。このトポロジーツリーは、ネットワーク監視装置20から見た場合のものである。
【0039】
サブネット情報判定部25は、例えば一定時間毎に、サブネット管理情報テーブル31を参照することにより、サブネット管理情報テーブル31が更新されたか否か判定する。それにより、テーブル31に何らかの更新が行われた場合には、その旨をトポロジーツリー構成部26に通知する。
【0040】
トポロジーツリー構成部26は、サブネット管理情報テーブル31に登録されたサブネットをノードとして配置したトポロジーツリーを作成・更新する。作成、或いは更新したトポロジーツリーは、トポロジー情報32として出力、或いは保存する。サブネット、つまりノードの配置は、ホップ数、及びボトルネック帯域(サブネットの種類)を考慮して決定する。
【0041】
ボトルネック帯域は、パケットが経由するサブネットがLAN及びWANの何れであるかによって変化する。ロス障害が発生したサブネットを経由したパケットには、ロスが生じる。このことから、サブネットのなかでロス障害の影響を受けたサブネットを抽出することにより、パケットが経由するサブネットを絞り込むことができる。その絞り込みの結果から、現在のトポロジーツリーのなかで不適切な部分を修正することができる。それにより、トポロジーツリーの更新には、サブネットの追加の他に、既に存在するサブネットの配置を変更する再配置も含まれる。
【0042】
図9は、トポロジーツリーの作成・更新方法を説明する図である。図9(a)はトポロジーツリーの初期状態、図9(b)はパケットが観測されたサブネットを配置した後のトポロジーツリー例、図9(c)はロス障害の発生によりサブネットの配置を変更した後のトポロジーツリー例をそれぞれ示している。図9中の各ノード30は、パケットが観測されたサブネットに相当する。実際には各ノード30はそれぞれルータ11に相当する。
【0043】
本実施形態では、図9(a)に示すように、初期状態のトポロジーツリーは主ツリー(幹)が1本あり、そこからWANと推定したサブネット群を配置したブランチ(WANブランチ)が1本だけ分岐している構成としている。主ツリーは、全てLANのサブネットが接続されたパケットの伝送経路を示すものとしている。
【0044】
各ブランチは、ブランチ管理情報を用いて管理している。このブランチ管理情報は、例えば当該ブランチを一意に特定できる識別情報の他に、当該ブランチが主ツリー、或いは他のブランチから分岐する地点(ノード)のネットワーク監視装置20を基準にしたホップ数(分岐ホップ数)、及びブランチを構成する各ノードを示すノード情報を含む情報である。識別情報としては、例えば当該ブランチを構成する少なくとも1サブネットのネットワークアドレス、或いは全サブネットのネットワークアドレスの組を採用することができる。分岐ホップ数は、当該ブランチのなかで最もネットワーク監視装置20に近いノード(サブネット)のネットワーク監視装置20を基準にしたホップ数から1を引いた値である。各ノードのノード情報は、各ノードのネットワークアドレス、或いは一意に割り当てられるノードID等を採用することができる。このようなブランチ管理情報を1つ予め用意しておくことにより、初期状態のトポロジーツリーが作成可能となる。
【0045】
ホストアドレスは、サブネットのネットワークアドレスに、そのサブネットに属するホストによって異なる数字列を付加した形となっている。このことから、ネットワークアドレスは、ホストアドレスから必要な部分のみを抽出することで得られる。
【0046】
図9(b)には、先頭に「192.168」の数字列を付した4つのノード30a〜dを示している。これらのノード30a〜dは、パケットが観測されたサブネットに相当する。各数字列は、それぞれ、各サブネットのネットワークアドレス、或いはホストアドレスを表している。ノード30a及び30bは、ボトルネック帯域からLANと判定したサブネットに相当し、ノード30c及び30dは、WANと判定したサブネットに相当する。このことから、ノード30a及び30bは、主ツリー上のホップ数によって特定される位置にそれぞれ配置され、ノード30c及び30dは、WANブランチ上のホップ数によって特定される位置にそれぞれ配置されている。末端に位置するリーフノードは全て、パケットが観測されたサブネットに相当する。ノード30cを含むブランチの分岐ホップ数は5である。
【0047】
このようにして本実施形態では、推定したボトルネック帯域によりサブネット(ノード30。実際にはサブネットを経由する際に中継するルータ11)のトポロジーツリー上の配置可能な位置を制限している。それにより、推定したボトルネック帯域に矛盾が生じないように、サブネットを配置する。そのようにサブネットを配置可能な位置を制限するため、その制限を設けない場合と比較して、各サブネットはより適切に配置することができる。以降、サブネット(ノード30)の位置関係は、ネットワーク監視装置20を基点として表現する。それにより、ネットワーク監視装置20に近い側は前側と表現し、ホップ数は、ネットワーク監視装置20から見た場合の値で表現する。
【0048】
例えばパケットの送信に要する送信時間自体は、パケットが経由した個々のサブネットの伝送速度を推定できる情報ではない。このため、上記のような制限を設けることはできない。このため、各サブネットを配置する精度は低いものとなる。
【0049】
図9(c)には、新たにノード30eが追加されている。ノード30c及び30eは、ノード30dを有するWANブランチとは別の同じノード30vから分岐させたWANブランチとしている。これは、例えばノード30c及び30eにそれぞれ相当するサブネットから送信されたパケットの観測により、それらのサブネットでのみロス障害の発生が確認されたためである。そのようにして本実施形態では、既存のブランチを構成する一部のノードに相当するサブネットのロス障害を検出した場合、そのノード全てを有するブランチを生成することにより、ロス障害の検出結果に矛盾しないようにノードの再配置を実現させている。
【0050】
ノード30eの前の配置は、例えばノード30dの直前の位置である。その前の配置では、相当するサブネットのホップ数は7、ノード30dに相当するサブネットのホップ数は8である。そのような位置関係(接続関係)が実際に存在していれば、ノード30cに相当するサブネットにロス障害が発生した場合には、ノード30dに相当するサブネットが送信したパケットにもロス障害の影響が生じることになる。このことから、ノード30dに相当するサブネットが送信したパケットからロス障害が観測されなければ、そのサブネットから送信されたパケットはノード30eに相当するサブネットを経由することなく伝送されると解釈することができる。これは、現在のノード30d、及び30eを伝送経路とする配置は不適切であることを意味する。このため、新たにWANブランチを生成(追加)し、既に存在する2つのノード30c及び30eを追加したWANブランチに移動させる配置の変更(再配置)を行っている。
【0051】
このようにして本実施形態では、発生したロス障害から、そのロス障害が影響する範囲のサブネットの接続関係を推定することにより、推定したネットワーク1のトポロジー(トポロジーツリー)のなかで不適切に配置されたノードを抽出し、その配置を修正するようにしている。ロス障害は、どのサブネットでも発生しうる。時間の経過に伴い、ロス障害が発生していないサブネットの数は少なくなる。このため、最終的には、高精度にトポロジーを推定、つまり高精度なトポロジーツリーを作成することができることとなる。以降ノードは、特に断らない限り、サブネットと同じ意味で用いる。
【0052】
作成したトポロジーツリーは、トポロジー情報32として出力、或いは保存される。図7は、そのトポロジー情報32の構成を説明する図である。
このトポロジー情報32は、図7に示すように、ノード毎のノード管理情報をまとめたものである。このノード管理情報は、対応するノードの他のノードとのトポロジーツリー上の接続関係等を表すものである。本実施形態では、このノード管理情報は、自ノードに割り当てられたノードID、親ノード(ネットワーク監視装置20から見て前側のノード)の親ノードID、子ノード(ネットワーク監視装置20から見て後側のノード)の子ノードID、ホップ数、LAN/WAN区別、及び含まれるサブネットのアドレスを備えた構成となっている。ホップ数は、ネットワーク監視装置20を基準にしたものであり、ホップ数の1はネットワーク監視装置20(ルートノードに相当)から見て1番目のノードであることを表している。含まれるサブネットのアドレスは、ネットワークアドレスである。
【0053】
子ノードIDの数は、トポロジーツリー上の配置によって変化する。例えばリーフノードでは端に位置しているため、存在しないか、或いは1つの定められた値となる。ブランチが接続されたノードでは、接続されたブランチの数に応じて、子ノードIDの数は増える。例えば図9(c)のノード30vでは、子ノードIDの数は3となる。それら以外のノードでは、子ノードIDの数は1である。
【0054】
パケットが観測されたノードは、推定されたホップ数に従って配置する。パケットが観測されたノードを配置するだけでは、推定されたホップ数に従って配置できない場合がある。具体的には、例えばパケットが観測されたサブネットが一つだけであり、そのサブネットで推定されたホップ数が10であった場合、そのサブネットの前に9つのパケットが観測されていないサブネットを配置しなければならない。このことから、含まれるサブネットとして格納するネットワークアドレスは、パケットが観測されたサブネットか否かを示すデータとなっている。図7中の“unknown”は、パケットが観測されていないサブネットであることを示している。トポロジーツリー上に不適切に配置したノードの抽出は、パケットが観測されたサブネットのノードのみが対象となる。
【0055】
トポロジー情報32はこのような構成である。このため、トポロジーツリーの作成(更新を含む)は、直前の内容から、一つ以上のノード管理情報の操作、つまり追加、削除、或いは更新を行うことに相当する。
【0056】
図8は、同時ロス障害発生拠点リストの構成を説明する図である。このリストは、ロス障害の発生に対応するために作成するものであり、サブネット毎に、そのアドレス、ホップ数、及びLAN/WAN区別を1エントリ(レコード)に格納した構成である。
【0057】
トポロジーツリー構成部26は、サブネット管理情報テーブル31を参照し、推定結果カラムのロス有無サブカラムが「有」となっているサブネット管理情報をすべて抽出し、同時ロス障害発生拠点リストを作成する。それにより、トポロジーツリーの更新は、このリストも用いて行う。
【0058】
図13A〜Cは、パケット解析処理のフローチャートである。この解析処理は、ネットワーク1を流れるパケットを観測し、その観測により得られる情報を解析するためにネットワーク監視装置20が実行する処理を抜粋して示したものである。この解析処理内に示す処理ステップは、そのための機能を搭載したプログラム(パケット監視プログラム)をネットワーク監視装置20が実行することにより実現される。解析部分を構成するパケットキャプチャ部21、ホップ数解析部22、ボトルネック帯域解析部23、及びロス障害検出部24は、このプログラムをネットワーク監視装置20が実行する結果、実現される。次に図13A〜Cを参照して、この解析処理について詳細に説明する。
【0059】
この解析処理において、パケットキャプチャ部21はステップS1を実行することにより実現される。同様に、ホップ数解析部22はステップS11〜S17、ボトルネック帯域解析部23はステップS21〜S29、ロス障害検出部24はステップS31〜S38をそれぞれ実行することにより実現される。実際には、例えばステップS11〜S17、ステップS21〜S29、及びステップS31〜S38は、それぞれ異なるサブプログラムにより実行され、それらのサブプログラムは、例えばステップS1が実行される処理により呼び出されて実行される。
【0060】
先ず、ステップS1では、ネットワーク1を流れるパケットをキャプチャする。それにより、パケットをキャプチャできた場合、ステップS11、S21及びS31以降の処理がそれぞれ実行される。これらステップS11、S21及びS31への各移行は、パケットキャプチャ部21がキャプチャしたパケットをホップ数解析部22、ボトルネック帯域解析部23及びロス障害検出部24にそれぞれ渡すことに相当する。特には図示していないが、パケットをキャプチャできなかった場合には、ここでパケット解析処理を終了するようになっている。キャプチャしたパケットは以降「受信パケット」と呼ぶことにする。
【0061】
ステップS11以降では、以下の処理が実行される。
先ず、ステップS11では、サブネットマスク情報35を参照して、受信パケットからサブネット情報、つまり受信パケットを送信した送信元サブネットのネットワークアドレスを抽出する。このサブネットマスク情報35は、受信パケットに格納された送信元アドレスのなかでネットワークアドレスの範囲を表すものである。このことからネットワークアドレスの抽出は、受信パケットの送信元アドレスからサブネットマスク情報35が示す範囲のアドレスを取り出すことで行われる。そのようにしてネットワークアドレスを抽出した後はステップS12に移行する。
【0062】
ステップS12では、抽出したネットワークアドレスを持つサブネット管理情報がサブネット管理情報リスト31に存在しているか否か判定する。ホストサブカラムのデータとして格納されたアドレスのなかにそのネットワークアドレスを含むものが存在する場合、判定はYESとなってステップS14に移行する。そのようなアドレスが存在しない場合、判定はNOとなってステップS13に移行し、受信パケットを送信した送信元サブネットのサブネット管理情報を作成し、サブネット管理情報リスト31に格納する。その後はステップS14に移行する。ここで作成されるサブネット管理情報は、送信元アドレスであり、その送信元アドレスの格納は、サブネット管理情報リスト31のLAN/WANカラム、及びロス検知カラムにそれぞれ1エントリ(レコード)を追加して行われる。
【0063】
ステップS14では、上述したようにして、受信パケットのTTLフィールドの値から、ホップ数、及びOS種別の推定を実施する。次にステップS15に移行し、推定したホップ数とOS種別の組み合わせが既存のものか否か判定する。その組み合わせが対応するサブネット管理情報のホップ数推定カラムのエントリに存在する場合、判定はYESとなってステップS17に移行する。その組み合わせが存在しない場合には、判定はNOとなってステップS16に移行し、ホップ数推定カラムに1エントリを追加して、推定したホップ数、及びOS種別を格納する。その後ステップS17に移行する。
【0064】
ホップ数、及びOS種別の推定では通常、複数の受信パケットを必要とする。このため、ホップ数、及びOS種別は、推定できるとは限らない。このことから、推定するまでの間、ホップ数、及びOS種別として、推定できていないことを示すデータを格納するようにしている。ここではそのデータも“unknown”と呼ぶことにする。
【0065】
ステップS17では、ホップ数推定カラムのパケット数サブカラムの値をインクリメントする。それにより、このパケット数サブカラムには、サブネットから送信されたパケットのなかで実際に受信したパケットの総数が格納される。そのインクリメントを行った後、ステップS11以降の一連の処理を終了する。
【0066】
次に、図13Bを参照して、ステップS21以降の処理について詳細に説明する。
このステップS21では、受信パケットから送信元アドレス、ポート番号、送信先アドレス、ポート番号を抽出する。続くステップS22では、抽出した送信元/送信先のアドレス・ポート番号の組を用いてTCPコネクション管理リストを検索することにより、その組を持つTCPコネクション情報が存在するか否か判定する。その組を持つTCPコネクション情報が存在する場合、判定はYESとなってステップS24に移行する。そのようなTCPコネクション情報が存在しない場合、判定はNOとなってステップS23に移行し、その組を持つTCPコネクション情報を作成し、TCPコネクション情報リストに追加する。その後はステップS24に移行する。この時点で作成するTCPコネクション情報では、LAN/WAN区分としてLAN、ロス有無として「無」を初期値として設定する。
【0067】
ステップS24では、上述したようにして、ボトルネック帯域の推定を実施し、その実施結果からLAN/WAN区別を判定する。次のステップS25では、判定したLAN/WAN区別の内容を、TCPコネクション管理情報リストの当該エントリ(TCPコネクション管理情報)におけるLAN/WAN区別カラムの内容と比較することにより、判定結果が変動しているか否か判定する。それらLAN/WAN区別の内容が異なる場合、判定はYESとなってステップS26に移行する。それらの内容が一致する場合には、判定はNOとなり、ここでステップS21以降の一連の処理を終了する。
【0068】
ステップS26では、TCPコネクション管理情報リストの当該エントリのLAN/WAN区別カラムに新しい値、つまり今回の判定結果を上書きする。この判定結果は、サブネット管理情報リスト31における、LAN/WANカラムのホストサブカラムに送信元アドレスを格納したエントリのLAN/WAN区別サブカラムの内容としても記入する。続くステップS27では、サブネット管理情報リスト31からLAN/WANカラムのエントリを読み出し、そのエントリのホストサブカラムのデータとして、受信パケットの送信元アドレスが存在するか否か判定する。その送信元アドレスが何れかのエントリのホストサブカラムのデータとして存在していた場合、判定はYESとなってステップS29に移行する。その送信元アドレスが存在していなかった場合、判定はNOとなってステップS28に移行し、LAN/WANカラム、及びロス検知カラムにそれぞれ1エントリを追加し、各カラムのホストサブカラムのデータとして送信元アドレスを格納する。ステップS29にはその後に移行する。
【0069】
ステップS29では、受信パケットの送信元アドレスを持つエントリのLAN/WAN区別サブカラムの内容の書き換えを行う。その書き換えを行った後、ステップS21以降の一連の処理は終了する。
【0070】
上記書き換えは、受信パケットの送信元アドレスを用いたTCPコネクション管理情報リストの検索によってエントリを抽出し、抽出したエントリのLAN/WAN区別カラムの内容から、書き込むべきLAN/WAN区別サブカラムの内容を特定することで行う。その特定は、例えばTCPコネクション管理情報リストから抽出したエントリのLAN/WAN区別カラムの内容として多いほうを選択する、或いはその内容としてLANが一つでも存在していればLANを選択することで行う。後者は、通常、伝送速度は遅くなることはあっても早くなることはないという考えによるものである。その特定は、これら以外の方法を用いて行うようにしても良い。
【0071】
最後に、図13Cを参照して、ステップS31以降の処理について詳細に説明する。
このステップS31では、受信パケットから送信元アドレス、ポート番号、送信先アドレス、ポート番号を抽出する。続くステップS32では、抽出した送信元/送信先のアドレス・ポート番号の組を用いてTCPコネクション管理情報リストを検索し、その組を格納したエントリを抽出する。その抽出後はステップS33に移行する。
【0072】
ステップS33では、抽出したエントリの受信パケット総数のインクリメント、或いは喪失パケット総数の更新を行うと共に、発生したロス障害の検出を行う。その検出は、上述したように、抽出したエントリに格納されている喪失パケット総数を受信パケット総数で割ることによってロス率を算出し、算出したロス率をロス判定閾値と比較して行う。その後はステップS34に移行する。
【0073】
失われたパケットが発生した場合、抽出したエントリのシーケンス番号と受信パケットのシーケンス番号には2以上の差が生じる。このことから、喪失パケット数の更新は、その差から1を引いた値(=差−1)を求め、現在の喪失パケット総数に加算することで行われる。過去に発生したロス障害が長い期間、影響しないようにするために、受信パケット総数、及ぶ喪失パケット総数は、例えば一定時間毎にクリアすることが望ましい。
【0074】
ステップS34では、検出結果をTCPコネクション管理リストの当該エントリにおけるロス有無カラムの内容と比較することにより、ロス障害の検出結果は変動しているか否か判定する。それらの内容が一致していた場合、判定はNOとなり、ここでステップS31以降の一連の処理を終了する。それらの内容が一致していなかった場合には、判定はYESとなってステップS35に移行する。
【0075】
ステップS35では、当該エントリのロス有無カラムの内容として検出結果を上書きする。次のステップS36では、サブネット管理情報リスト31を参照し、受信パケットの送信元アドレスをLAN/WANカラムのホストサブカラムのデータとして格納したものが有るか否か判定する。その送信元アドレスをホストサブカラムのデータとするエントリが存在した場合、判定はYESとなってステップS38に移行する。そのようなエントリが存在しない場合、判定はNOとなってステップS37に移行し、LAN/WANカラムに1エントリを作成して、少なくともその送信元アドレスをホストサブカラムのデータとして格納する。その後、ステップS38に移行する。
【0076】
ステップS38では、上記送信元アドレスを格納したエントリのロス有無サブカラムのデータとして、ロス障害の検出結果を書き込む。その書き込みの後、ステップS31以降の一連の処理を終了する。
【0077】
図14A及びBは、トポロジーツリー構成処理のフローチャートである。この構成処理は、サブネット管理情報リスト31を参照して、ネットワーク1のトポロジーを模擬するトポロジーツリーの作成、或いは更新するためにネットワーク監視装置20が実行する処理を抜粋して示したものである。この構成処理内で実行される処理ステップは、そのための機能を搭載したプログラム(トポロジーツリー構成プログラム)をネットワーク監視装置20が実行することにより実現される。トポロジーツリー構成部分のトポロジーツリー構成部26は、このプログラムをネットワーク監視装置20が実行する結果、実現される。次に図14A及びBを参照して、この構成処理について詳細に説明する。
【0078】
この構成処理では、実際には、例えば図14AのステップS41〜S51、及び図14BのステップS61〜S71は、それぞれ異なるサブプログラムの実行によって実現される。それにより、この構成処理として、2つのサブルーチン処理をまとめて示している。
【0079】
図13AのステップS1が実行される処理は例えばメインルーチン処理であり、そのメインルーチン処理では、例えば一定時間毎に、サブネット管理情報リスト31の更新を確認するための処理を実行するようになっている。この構成処理として実行される2つのサブルーチン処理は、その確認結果に応じてメインルーチン処理に呼び出されて実行される。その呼び出しは、サブネット情報判定部25がサブネット管理情報テーブル31の更新をトポロジーツリー構成部26に通知することに相当する。
【0080】
始めに、ステップS41〜S51の一連の処理について説明する。この一連の処理は、対象とするサブネットを変更しながら、ロス障害を考慮せずにそのサブネットをトポロジーツリー上に配置するための処理である。これに対し、ステップS61からS71の一連の処理は、トポロジーツリー上のサブネットの配置を、検出されたロス障害に応じて変更するための処理である。ステップS41〜S51の一連の処理は、トポロジー情報32を作成するための処理に相当し、ステップS61からS71の一連の処理は、作成されたトポロジー情報32を更新するための処理に相当する。
【0081】
先ず、ステップS41では、対象とするサブネット、つまりサブネット管理情報を選択し、ホップ数推定カラムのエントリのなかにホップ数サブカラムとして格納されたホップ数が異なるエントリが存在するか否か判定する。各エントリに格納されたホップ数が全て同じでなかった場合、判定はYESとなってステップS43に移行する。全てのエントリでホップ数が同じであった場合には、判定はNOとなり、ステップS42でそのホップ数を推定結果コラムのホップ数サブカラムとして格納すべきものと決定する。その後はステップS45に移行する。
【0082】
ステップS43では、ホップ数推定カラムのエントリのなかにOS種別サブカラムが“unknown”となっているエントリがあるか否か判定する。そのようなエントリが存在する場合、判定はYESとなってステップS44に移行し、そのエントリを無視して、つまりOS種別サブカラムが“unknown”となっていないエントリのみを対象にしてホップ数を決定する。その後はステップS45に移行する。その決定には、例えばホップ数のなかで最も多いホップ数を選択する、或いはパケット数サブカラムの値が最大のエントリのホップ数を選択する、といった方法を採用すれば良い。一方、OS種別サブカラムが“unknown”となっているエントリが存在しない場合には、判定はNOとなり、ホップ数の推定に対応不可能な誤差が生じているとして、その旨を通知するためのエラー出力を行った後、ステップS41以降の一連の処理を終了する。
【0083】
ステップS45では、LAN/WANカラムのエントリのなかにLAN/WAN区別サブカラムの内容がLANとなっているものが一つでもあるか否か判定する。LAN/WAN区別サブカラムがLANとなっているエントリが存在する場合、判定はYESとなり、ステップS46で推定結果カラムのLAN/WAN区別サブカラムの内容としてLANを書き込む。その後ステップS50に移行する。そのようなエントリが存在しない場合には、つまり全てのエントリのLAN/WAN区別サブカラムの内容がWANとなっている場合には、判定はNOとなってステップS47に移行する。
【0084】
このようにして本実施形態では、LAN/WAN区別サブカラムの内容がLANとなっているエントリが一つでも存在していれば、サブネットはLANであると判定する。これは、サブネットのホストのなかに何らかの理由(例えば低速のハブに接続させている、トラフィックが一時的に異常に増大した、といったようなもの)によって伝送速度が遅くなっているものが存在する可能性が考えられるためである。ホスト毎にLAN/WANの分類をするのはこのためである。そのようにホスト毎に分類を行うことにより、サブネットの分類(ボトルネック帯域の推定)をより高精度に行うことができる。
【0085】
ステップS47では、推定結果カラムのLAN/WAN区別サブカラムとしてWANを書き込む。続くステップS48では、新たにホップ数を決定したノードの属するWANブランチの先頭に位置するノードのホップ数(以降「最小ホップ数」と呼ぶ)がより小さい値に更新されているか否か判定する。この最小ホップ数から1を引いた値が当該WANブランチのブランチ管理情報として管理する分岐ホップ数より小さい値に更新されている場合、判定はYESとなってステップS49に移行し、この分岐ホップ数を現在の最小ホップ数から1を引いた値に更新する。この更新により、WANブランチを分岐させるノード(以降、ブランチを分岐させるノードを「分岐ノード」と総称する)をネットワーク監視装置20側に移動させる。その後、ステップS50に移行する。その最小ホップ数から1を引いた値が分岐ホップ数以上の値に更新されている場合には、判定はNOとなってステップS50に移行する。それにより、分岐ノードの移動は回避させる。
【0086】
ステップS50では、ブランチ管理情報を参照し、決定したホップ数、及びLAN/WANの分類に応じて、トポロジーツリー上にサブネット(ノード)を配置する。このとき、主ツリー、或いはブランチにサブネットを配置すべき場所が存在しない場合、ブランチを生成し、生成したブランチに配置する。このことから、サブネットの配置は、対応するノード管理情報の追加、及びその配置が影響する他のサブネットのノード管理情報を更新することで行われる。次のステップS51では、未処理のサブネットのためのループを実現させる処理を実行する。その処理とは、例えば未処理のサブネットが存在するか否か判定する判定処理である。そのような判定処理をステップS51で実行する場合、未処理のサブネットが存在すると判定はYESとなり、上記ステップS41に戻る。未処理のサブネットが存在しないと判定はNOとなり、ここでステップS41以降の一連の処理を終了する。
【0087】
このようにして本実施形態では、既存のトポロジー情報32を更新するのではなく、新たにトポロジー情報32を作成するようにしている。これは、或るサブネットにおけるホップ数やLAN/WAN区別の推定結果の変化が他のサブネットの配置に及ぼす影響が特定し難いからである。その影響が及ぼす範囲を正確に特定し、その範囲内のサブネットのみを対象に配置を変更する形でトポロジー情報32を更新(作成)しても良い。配置を決定するうえでブランチ管理情報を参照するのは、既に生成したブランチにノードを配置した結果は更新すべき理由が発生しない限り、更新しないようにしているためである。そのようにして、更新すべき理由が発生しない限り、過去に作成したトポロジーツリーを再現できるようにしている。
【0088】
ここで、新たにトポロジー情報32を作成することによって生じるトポロジーツリーへの操作、つまり直前のトポロジーツリーからの変更について、例を挙げて具体的に説明する。その変更は、新たにパケットが観測されたサブネットが発生した場合、無条件で行われる。そのようなサブネットが発生していない場合には、変更内容はステップS50に移行する前に実行するステップの処理によって異なる。
【0089】
新たにパケットが観測されたサブネットが発生した場合、決定されたホップ数、及びLAN/WANの分類結果に応じて、そのサブネットに相当するノードを配置すべき位置を特定し、配置する。このとき、LAN/WANの分類結果、及びホップ数が同じサブネットが既にトポロジーツリー上に存在していれば、新たにブランチを作成し、作成したブランチに配置することになる。トポロジーツリー上に配置可能な場所が存在していれば、その場所に配置することになる。その場所が既存のブランチに存在していれば、そのブランチのブランチ管理情報は更新されることとなる。そのようにして新たに配置することから、ノード管理情報は追加され、その配置が影響する他のノードのノード管理情報は更新されることとなる。
【0090】
ステップS46、或いはS48からステップS50に移行した場合、対象とするサブネットで決定されたホップ数、及びLAN/WANの分類結果に応じて、そのサブネットに相当するノードを配置すべき位置を特定し、配置する。このとき、LAN/WANの分類結果、及びホップ数が同じサブネットが既にトポロジーツリー上に存在していれば、ブランチを作成し、作成したブランチ上に配置すべきサブネットを配置することになる。このため、ブランチを追加する操作が行われる可能性が存在することとなる。
【0091】
上述したように、伝送速度が何らかの理由によって低下している可能性が考えられることから、LAN/WANの分類は、ホスト毎に行っている。このことから、LAN/WAN区別サブカラムの内容がWAN→LANに更新される可能性が存在する。WANと分類したサブネット(ノード)はブランチ上に配置しなければならない。しかし、LANと分類したサブネットは、他のLANと分類したサブネットを考慮して、主ツリー上、或いはブランチ上に配置する。このため、ステップS46からステップS50に移行した場合には、LAN/WAN区別サブカラムの内容がWAN→LANに更新されたケースの操作を行う可能性がある。その操作とは、例えば新たにLANと分類したサブネットをWANブランチ上から主ツリー、或いは他のブランチ上に移動させるようなものである。このため、そのような操作を行う場合、配置を変更するノード、及びその変更が影響する他のノードのノード管理情報に加えて、ブランチ管理情報も更新されることとなる。
【0092】
図9(b)に示す状態では、WANブランチはノード30aの次のノード30v、つまりネットワーク監視装置20から5ホップ目のノード(分岐ホップ数が5であるノード)30vを分岐ノードとして主ツリーから分岐している。ステップS49での分岐させるサブネットの移動、つまり分岐ホップ数の更新は、例えばノード30aを新たな分岐ノードとしてWANブランチを分岐させるような操作に相当する。この場合、結果として、トポロジー情報32のなかでWANブランチを構成するノードの全て、及びその分岐ノード30aのノード管理情報は直前の内容とは異なるものとなる。これは、全てのノードで少なくともホップ数を更新しなければならないからである。ブランチ管理情報も更新される。
【0093】
次に図14Bを参照して、ステップS61〜S71の一連の処理について詳細に説明する。
ステップS61〜S71の一連の処理は、1サブネットを対象に実行される部分を示したものである。それにより、ステップS61〜S71の一連の処理もステップS41〜S51の一連の処理と同様に、対象とするサブネットを順次、変更していくことにより、サブネット毎に実行される。
【0094】
上述したように、或るサブネットでロス障害が発生している場合、そのサブネット以外に、そのサブネットを経由してパケットが伝送される他のサブネットもロス障害が発生していると見なされる。このようなことから、発生したロス障害は、パケットの伝送経路となっているサブネット群(リーフノードに相当するサブネットにロス障害が発生したような場合には1サブネットである)を特定するうえで極めて有用な情報である。ステップS61〜S71の一連の処理は、このことに着目し、ロス障害のトモグラフィ分析を用いて、ネットワーク1のロス障害が影響する部分のトポロジーを推定(特定)し、その推定結果を既存のトポロジーツリーに反映させるための処理である。
【0095】
先ず、ステップS61では、ロス検知カラムにおける、対象とするサブネットの各エントリのロス有無サブカラムのデータを参照し、1つでも「無」となっているものがあるか否か判定する。対象とするサブネットに属するホスト毎にロス障害を検出した結果、少なくとも1ホストからロス障害が検出されなかった場合、判定はYESとなり、ここでステップS61以降の一連の処理を終了する。全てのホストからロス障害が検出された場合には、判定はNOとなってステップS62に移行する。
【0096】
ステップS61の判定がYESとなった場合、実際には上記ステップS51と同様の処理が実行される。それにより、他の対象としていないサブネットを対象にした処理が行われることになる。これは、「終了」と表記した端子を移行先とする他のステップの処理でも同様である。しかし、ここでは便宜的に、ステップS51と同様の処理については言及しないこととする。
【0097】
ステップS62では、推定結果カラムのロス有無サブカラムのデータとして「有」を記入する。次のステップS63では、ロス有無サブカラムのデータとして「有」が記入されているエントリ、つまりロス障害が発生しているサブネットを全て抽出し、抽出したサブネットを同時ロス障害発生拠点リストに記入(登録)する。そのようにして、同時ロス障害発生拠点リストを新たに作成した後に移行するステップS64では、記入したサブネットが全てLAN、或いはWANで統一されているか否か判定する。記入したサブネットを全てLAN、或いはWANと推定していなかった場合、判定はNOとなってステップS69に移行する。記入したサブネットが全てLAN、或いはWANと推定していた場合には、判定はYESとなってステップS65に移行する。
【0098】
このようにして本実施形態では、ロス検知カラムのエントリのなかでロス有無サブカラムの内容が「無」となっているものが1つでも存在していると、サブネット全体ではロス障害が発生していないと見なすようにしている。これは、送信元ホストに発生した不具合によってロス障害を検出してしまう可能性があるためである。言い換えれば、実際にロス障害が発生しているサブネットを高精度に検出するためである。
【0099】
ステップS65では、同時ロス障害発生拠点リストに記入したサブネット群(一つ以上のサブネット)における最小のホップ数を抽出し、必要に応じて、そのホップ数から1を減算した値をホップ数とするノードを分岐ノードとしたブランチを生成し、このブランチにそのサブネット群を移動(再配置)させる。その移動は以下のようにして行われる。ここでは、図9を参照して具体的に説明する。
【0100】
図9(b)において、例えばWANブランチのノード30dにのみロス障害が検出された場合、ノード30dはその直前のノードを分岐ノードとするブランチに移動させる。ノード30dの後に位置するリーフノードで推定したホップ数との矛盾を生じさせないために、移動させるノード30dの元の位置には別のノードを配置する。WANブランチの先頭から2つのノードでロス障害がそれぞれ検出された場合、それら2つのノードは新たに作成するWANブランチに移動し、その移動に合わせて元のWANブランチには2つのノードを新たに配置する。それにより、図9(c)に示すような状態に更新する。同様に、主ツリーのノード30bにのみロス障害が検出された場合には、ノード30bはその直前のノードを分岐ノードとするブランチ(LANブランチ)に移動させ、ノード30bの元の位置には別のノードを配置する。一方、WANブランチを構成する全てのノード、或いはリーフノードから連なる1つ以上のノード(例えばノード30d及びその後のリーフノードといった繋がり)でロス障害が検出された場合には、ブランチを生成する必要がないことから、移動は行わない。
【0101】
このようにして本実施形態では、必要に応じてブランチを生成し、ロス障害が検出された1つ以上のノードをそのブランチに移動させることにより、ロス障害から推定したサブネット間の接続関係をトポロジーツリーに反映させる。それにより、より精度の高いトポロジーツリーを得ることができる。
【0102】
ブランチを生成した場合には、当該ブランチのブランチ管理情報の作成、移動させるノード、及びその移動が影響するノードのノード管理情報の更新、当該ブランチに移動させるノードが配置されていたブランチのブランチ管理情報の更新等が合わせて行われる。
【0103】
ステップS65に続くステップS66では、ロス障害が検出されたサブネット群はWANか否か判定する。同時ロス障害発生拠点リストに記入したサブネットが何れもWANと判定したいた場合、判定はYESとなってステップS67に移行する。記入したサブネットの少なくとも一つをLANと判定していた場合には、判定はNOとなり、ここでステップS61以降の一連の処理を終了する。
【0104】
ステップS67では、ノードを移動させたWANブランチの最小ホップ数がその移動によって更新されているか否か判定する。このWANブランチの先頭に位置するノードを新たに生成したWANブランチに移動させるような場合、最小ホップ数から1を引いた値は分岐ホップ数より大きい値となる。このため、判定はYESとなってステップS68に移行し、分岐ホップ数を現在の最小ホップ数から1を引いた値に更新する。その後、ステップS61以降の一連の処理を終了する。WANブランチの先頭に位置するノードを新たに生成したWANブランチに移動させない場合には、最小ホップ数は分岐ホップ数と同じ値となる。このため、判定はNOとなり、ここでステップS61以降の一連の処理を終了する。
【0105】
ステップS69では、ロス障害が検出されているサブネット群における最小のホップ数はそのサブネット群を構成する少なくとも1サブネットのノードが配置された既存のブランチの最小ホップ数と同じ、若しくは小さいか否か判定する。その最小のホップ数から1を引いた値が当該ブランチのブランチ管理情報として保持する分岐ホップ数以下であった場合、判定はYESとなってステップS70に移行する。その最小のホップ数から1を引いた値が分岐ホップ数より大きい場合には、判定はNOとなってステップS71に移行する。それにより、ステップS70、及びS71の処理を実行した後、ステップS61以降の一連の処理を終了する。
【0106】
ステップS70及びS71では、トポロジーツリー上のロス障害が検出されたサブネットのノードを再配置する操作のための処理が行われる。この再配置の操作例について、図10〜図12を参照して具体的に説明する。
【0107】
先ず、図10及び図11を参照して、ステップS70の処理により行われる操作について説明する。
図10は、ロス障害が検出されたサブネット群における最小のホップ数が既存のブランチの最小ホップ数と同じ場合の操作例を説明する図である。図10において、ノード30f〜hはロス障害が検出されたサブネットに相当する。操作前のノード30f〜hの配置は、例えばノード30f及び30gはそれぞれノード30i及び30jの位置であり、ノード30hはノード30iの位置にあったノード30fを分岐ノードとするブランチ上である。これらのノード30f〜hは、ノード30vを分岐ノードとして生成したブランチに再配置する操作により、図10に示す位置に変更されている。ノード30f及び30gの再配置により、元の位置には新たにノード30i及び30jが配置されている。これらノード30i及び30jは、ノード30f及び30gと同じく、LANと分類されるサブネット用である。
【0108】
この例では、トポロジー情報32中のノード管理情報はノード30g及び30dのものが更新され、ノード30i及び30jのものが作成(追加)される。ブランチ管理情報は、新たにノード30iが配置されたブランチでは更新され、新たに生成したブランチでは作成される。
【0109】
図11は、ロス障害が検出されたサブネット群における最小のホップ数が既存のブランチの最小ホップ数より小さい場合の操作例を説明する図である。図11では、ロス障害が検出された2つのサブネット群に対してそれぞれ操作を行った後の状態例を表している。この2つのサブネット群に相当するノード群は、ノード30f〜h(以降「第1のノード群」)と、ノード30dが配置されたブランチを構成するノード群(以降「第2のノード群」)とである。これら2つのノード群は、ロス障害が検出される前は例えば図10に示すように配置されていたものである。
【0110】
第1のノード群は、最小ホップ数(=分岐ホップ数+1)が6から3に更新されている。このため、分岐ノードはノード30vからノード30wに移動させている。第2のノード群は、最小ホップ数が6から4に更新されている。このため、分岐ノードはノード30vからノード30uに移動させている。これらのようなホップ数の変化は、例えば何らかの理由により迂回する形でパケットが伝送されていた場合に生じる。
【0111】
第2のノード群を構成するノード30dのホップ数は、この移動に係わらず変化していない。このことから、最小ホップ数の差(=2=6−4)の数だけノードをノード30dの前に追加している。そのようにして、各ノードで決定したホップ数はトポロジーツリー上で維持させている。
【0112】
ステップS70では、上述したような操作をトポロジーツリーに対して実現させるための処理が行われる。その操作内容に応じて、更新すべきブランチ管理情報の更新、及びトポロジー情報32中の更新すべきノード管理情報の更新等が合わせて行われる。
【0113】
次に、図12を参照して、ステップS71の処理により行われる操作について説明する。この図12は、ロス障害が検出されたサブネット群における最小のホップ数が既存のブランチの最小ホップ数より大きい場合の操作例を説明する図である。図12において、ロス障害の検出により再配置したノードはノード30f及び30hである。この2つのノード30f及び30hのそれぞれの元の位置は、例えば図10に示す位置である。
【0114】
本実施形態では、ロス障害が検出されたサブネット群のなかで最小のホップ数が既存のブランチの最小ホップ数より大きい場合、LAN/WANとで分けて、再配置を行うようにしている。このため、ノード30f及び30hはそれぞれ生成したブランチ上に再配置し、それらノード30f及び30hを配置していたブランチは消去している。ノード30fのホップ数は6から7に更新され、ノード30hのホップ数は7から8に更新されている。このことから、ノード30fは、ノード30xを分岐ノードとするブランチを生成し、この生成したブランチ上に移動させている。同様にノード30hは、ノード30jを分岐ノードとするブランチを生成し、この生成したブランチ上に移動させている。
【0115】
ステップS71では、上述したような操作をトポロジーツリーに対して実現させるための処理が行われる。その操作内容に応じて、作成すべきブランチ管理情報の作成、削除すべきブランチ管理情報の削除、及び更新すべきノード管理情報の更新等が合わせて行われる。
【0116】
本実施形態では、上述したような内容のトポロジーツリー構成処理を随時、例えば一定時間間隔で繰り返し実行する。その繰り返しの実行により、ノードの配置、或いは/及び、再配置、並びにブランチの追加、消去、或いは/及び、移動、が随時、行われる。その結果、作成されるトポロジーツリーは正確なものに徐々に修正されていくことになる。それにより、修正が行われない、或いはその修正がほとんど行われなくなった場合には、高精度なトポロジーツリーが得られていることとなる。
【0117】
ロス障害を利用して不適切な配置を解消するための操作は、実際には、図9〜図12を参照して説明した操作以外にも数多く存在する。このことから、上記の操作例は一例であり、操作はこれに限定されるものではない。
【0118】
本実施形態によるプログラム(トポロジーツリー作成プログラム)は、図13A〜Cに示すパケット解析処理を実現させるパケット解析プログラム、並びに図14A及びBに示すトポロジーツリー構成処理を実現させるトポロジーツリー構成プログラムをそれぞれサブプログラムとして含むものである。図2に示す機能構成は、ネットワーク監視装置20として用いられるコンピュータに、本実施形態によるプログラムを実行させることで実現される。ここで図15を参照して、本実施形態を適用可能なコンピュータ、つまりこのプログラムを実行することでネットワーク監視装置20(トポロジーツリー作成装置)として使用可能なコンピュータについて具体的に説明する。
【0119】
図15に示すコンピュータは、CPU61、メモリ62、入力装置63、出力装置64、外部記憶装置65、媒体駆動装置66、及びネットワーク接続装置67を有し、これらがバス68によって互いに接続された構成となっている。図15に示す構成は一例であり、これに限定されるものではない。
【0120】
CPU61は、当該コンピュータ全体の制御を行う。
メモリ62は、プログラムの実行、データ更新等の際に、外部記憶装置65(あるいは可搬型の記録媒体70)に記憶されているプログラムあるいはデータを一時的に格納するRAM等の半導体メモリである。CPU61は、プログラムをメモリ62に読み出して実行することにより、全体の制御を行う。
【0121】
入力装置63は、例えば、キーボード、マウス等の操作装置と接続可能なインターフェースである。接続された操作装置に対するユーザの操作を検出し、その検出結果をCPU61に通知する。
【0122】
出力装置64は、例えば表示装置と接続された表示制御装置である。ネットワーク接続装置67は、例えばネットワーク1を介した通信、及びそのネットワーク1を流れるパケットの受信を行えるものである。外部記憶装置65は、例えばハードディスク装置である。主に各種データやプログラムの保存に用いられる。
【0123】
媒体駆動装置66は、光ディスクや光磁気ディスク等の可搬型の記録媒体70にアクセスするものである。
【0124】
上記トポロジーツリー作成プログラムは、外部記憶装置65、若しくは記録媒体70に記録されているか、或いはネットワーク1を介してネットワーク接続装置67により取得される。そのトポロジーツリー作成プログラムをメモリ62に読み出してCPU61が実行することにより、ネットワーク監視装置20に搭載されたトポロジーツリー作成装置は実現される。サブネット管理情報31、トポロジー情報32、及びサブネットマスク情報35は、例えば外部記憶装置65に保存され、必要に応じてメモリ62に読み出される。トポロジー情報32の出力は、例えば出力装置64を介した表示、ネットワーク接続装置67を介した外部装置への送信、或いは媒体駆動装置66を介した記録媒体70への格納によって行われる。
【0125】
このトポロジーツリー作成プログラムが外部記憶装置65に格納されていると想定した場合、パケットキャプチャ部21は、CPU61、メモリ62、外部記憶同意65、ネットワーク接続装置67及びバス68によって実現される。他のホップ数解析部22、ボトルネック帯域解析部23、ロス障害検出部24、サブネット情報判定部25及びトポロジーツリー構成部26は共に、例えばCPU61、メモリ62、外部記憶同意65、及びバス68によって実現される。
【0126】
なお、本実施形態は、ネットワーク監視装置20上に搭載させた形で実現させているが、別の装置上に実現させても良い。専用の装置として実現させても良い。また、サブネット管理情報、或いはトポロジーツリーを更新する手順は、上述したようなものに限定されない。例えば検出されたロス障害により判明した不適切な配置は、ロス障害が検出されたノードの配置を変更することで解消するのではなく、ロス障害が検出されていないノードの配置を変更することで解消しても良い。不適切な配置を解消する方法も特に限定されるものではない。
【符号の説明】
【0127】
1 ネットワーク
11 ルータ(ノード)
20 ネットワーク監視装置
21 パケットキャプチャ部
22 ホップ数解析部
23 ボトルネック帯域解析部
24 ロス障害検出部
25 サブネット情報判定部
26 トポロジーツリー構成部
31 サブネット管理情報リスト
32 トポロジー情報

【特許請求の範囲】
【請求項1】
サブネットが相互に連結されたネットワークの構成を模擬したトポロジーツリーを作成するトポロジーツリー作成装置であって、
前記ネットワークを流れるパケットを取得するパケット取得手段と、
前記パケットを送信したサブネットである送信元サブネット毎に、前記パケット取得手段が取得したパケットから、該パケットが経由したノードの数であるホップ数、及び該パケットの送信上のボトルネックとなっているボトルネック帯域を特定すると共に、該パケットをロスするロス障害を検出する解析手段と、
前記解析手段が特定したホップ数、及びボトルネック帯域を基に、前記ネットワークに存在するサブネットのなかで前記送信元サブネットとして確認されたサブネットをトポロジーツリー上に配置する配置手段と、
前記解析手段による前記ロス障害の検出結果を用いて、前記配置手段が前記トポロジーツリー上に配置したサブネットのなかで該配置が不適切なサブネットを抽出し、該抽出したサブネットの配置を変更する配置修正手段と、
を具備することを特徴とするトポロジーツリー作成装置。
【請求項2】
前記解析手段は、前記ボトルネック帯域の特定結果から、前記送信元サブネットを伝送速度の異なる第1及び第2の種類のうちの何れかに分類し、
前記配置手段は、前記解析手段による分類結果を基に、同一の種類のサブネットを特定されたホップ数に従って配置したブランチを前記トポロジーツリー上に作成する、
ことを特徴とする請求項1記載のトポロジーツリー作成装置。
【請求項3】
前記配置修正手段は、前記不適切なサブネットとして、前記解析手段が前記ロス障害を検出したサブネットのなかで前記トポロジーツリー上、該ロス障害が検出されないサブネットから送信されるパケットの送信経路となるサブネットを抽出する、
ことを特徴とする請求項1、または2記載のトポロジーツリー作成装置。
【請求項4】
前記配置修正手段は、前記不適切なサブネットのうちの少なくとも一つがブランチの一部を構成していた場合に、新たに一つ以上のブランチを作成し、該作成したブランチに該不適切なサブネットのうちの少なくとも一つを移動させる、
ことを特徴とする請求項3記載のトポロジーツリー作成装置。
【請求項5】
前記解析手段は、前記送信元サブネットのなかで前記パケットを送信したデータ処理装置毎に、前記ボトルネック帯域を特定して前記分類を行うことにより、該データ処理装置毎の分類結果から該送信元サブネット全体の分類を行う、
ことを特徴とする請求項1記載のトポロジーツリー作成装置。
【請求項6】
前記解析手段は、前記送信元サブネットのなかで前記パケットを送信したデータ処理装置毎に、前記ホップ数を特定し、該データ処理装置毎の特定結果から該送信元サブネットのホップ数を特定する、
ことを特徴とする請求項1記載のトポロジーツリー作成装置。
【請求項7】
サブネットが相互に連結されたネットワークの構成を模擬したトポロジーツリーを作成するトポロジーツリー作成装置として用いられるコンピュータに、
前記ネットワークを流れるパケットを取得するパケット取得機能と、
前記パケットを送信したサブネットである送信元サブネット毎に、前記パケット取得機能により取得したパケットから、該パケットが経由したノードの数であるホップ数、及び該パケットの送信上のボトルネックとなっているボトルネック帯域を特定すると共に、該パケットをロスするロス障害を検出する解析機能と、
前記解析機能により特定したホップ数、及びボトルネック帯域を基に、前記ネットワークに存在するサブネットのなかで前記送信元サブネットとして確認されたサブネットを前記トポロジーツリー上に配置する配置機能と、
前記解析機能による前記ロス障害の検出結果を用いて、前記配置機能により前記トポロジーツリー上に配置したサブネットのなかで該配置が不適切なサブネットを抽出し、該抽出したサブネットの配置を変更する配置修正機能と、
を実現させるためのプログラム。
【請求項8】
サブネットが相互に連結されたネットワークの構成を模擬したトポロジーツリーをコンピュータにより作成する方法であって、
前記ネットワークを流れるパケットを取得し、
前記パケットを送信したサブネットである送信元サブネット毎に、取得したパケットから、該パケットが経由したノードの数であるホップ数、及び該パケットの送信上のボトルネックとなっているボトルネック帯域を特定すると共に、該パケットをロスするロス障害を検出し、
特定したホップ数、及びボトルネック帯域を基に、前記ネットワークに存在するサブネットのなかで前記送信元サブネットとして確認されたサブネットを前記トポロジーツリー上に配置し、
前記ロス障害の検出結果を用いて、前記トポロジーツリー上に配置したサブネットのなかで該配置が不適切なサブネットを抽出し、該抽出したサブネットの配置を変更する、
ことを特徴とするトポロジーツリー作成方法。


【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図13C】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図15】
image rotate

【図1】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2011−146920(P2011−146920A)
【公開日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願番号】特願2010−6028(P2010−6028)
【出願日】平成22年1月14日(2010.1.14)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】