以下に、本願の開示するループ検出装置及びループ検出方法の実施例を図面に基づいて詳細に説明する。なお、ループ検出装置及びループ検出方法の実施例は、以下で説明する実施例に限定されるものではない。
まず、本実施例に係るループ検出装置の概要について説明する。図1は、本実施例に係るループ検出装置の概要及び構成を示す図である。図1に示すように、本実施例に係るループ検出装置10は、例えば、L2レイヤネットワーク20に接続され、ネットワークの転送経路に発生したループを検出する。
L2レイヤネットワーク20は、例えば、複数のブリッジ装置21〜26を含んで構成される。ここで、例えば、図1の上段に示すブリッジ装置21〜23は、ブリッジ装置21を頂点とする正常なツリー状に接続されている。また、例えば、図1の下段に示すブリッジ装置24〜26は、ループ状に接続されている。これらブリッジ装置24〜26のうち、ブリッジ装置26は、PC27から送信されるフレーム30を受信してL2レイヤネットワーク20内に転送する。
かかるL2レイヤネットワーク20では、例えば、イーサネット(登録商標)のフレーム30が転送される。イーサネット(登録商標)による通信では、MACアドレスによってフレームの転送先が決められる。このMACアドレスは、ネットワークに接続された各種の装置が有するネットワークインタフェースに固有のアドレスである。
図2は、本実施例に係るL2レイヤネットワーク20で転送されるフレーム30の一例を示す図である。図2に示すように、例えば、L2レイヤネットワーク20で転送されるフレームは、送信先MACアドレス31、送信元MACアドレス32、タイプ33、ペイロード34及びFCS(Flame Check Sequence)35の各フィールドを有する。
送信先MACアドレス31は、6バイトのフィールドであり、フレーム30の送信先となる装置のMACアドレスが設定される。送信元MACアドレス32は、6バイトのフィールドであり、フレーム30の送信元となる装置のMACアドレスが設定される。タイプ33は、2バイトのフィールドであり、上位のネットワーク層のプロトコルを識別するための識別番号が設定される。ペイロード34は、46〜1500バイトの可変長のフィールドであり、フレーム30によって転送されるデータが設定される。FCS35は、4バイトのフィールドであり、データのチェックを行うための情報が設定される。
そして、イーサネット(登録商標)による通信では、フレームを転送するブリッジ装置は、受信したフレームの送信元MACアドレスと、そのフレームを受信した受信ポートとを学習するMACテーブルを保持する。ブリッジ装置は、このMACテーブルによって、どのポートの先にどのMACアドレスを有する装置が存在するかを把握することで、効率的にフレームを転送することができる。
そして、本実施例では、L2レイヤネットワーク20を構成するブリッジ装置のうち、監視対象のブリッジ装置には、あらかじめフロー計測機能が搭載されたものが用いられる。例えば、監視対象のブリッジ装置は、フロー計測のためのフロー情報配信プロトコルに対応し、ネットワークを介してループ検出装置10にフロー情報を配信する機能を備える。この機能により、監視対象のブリッジ装置は、所定のサンプリング間隔及び所定のタイマの一部又は全部に基づいて、フロー情報を配信する。なお、ここでいうフロー情報配信プロトコルとは、例えば、sFlow(RFC3176)やNetFlow(RFC3954)、IPFIX(RFC5101)などである。
ここで、ネットワークの転送経路にループが発生していた場合には、ループによって同じフレームが延々と転送されるため、ネットワーク内の各ブリッジ装置において、同じ送信元MACアドレスのフレームを受信する受信ポートが頻繁に変動する事象が発生する。この結果、受信ポートが変動するたびにMACテーブルに変更が生じることになり、これにともなって、フレームの送信ポートも頻繁に変動することになる。この受信ポートや送信ポートの変動は、ブリッジ装置から配信されるフロー情報に反映されることになる。また、ループ発生時には、ブロードキャストフレームやマルチキャストフレームが延々とループ内を流れるためこれらのトラフィック量が増加する。このトラフィック量の増加も、フロー情報に反映されることになる。
そこで、本実施例では、ループ検出装置10が、ネットワークを介して監視対象のブリッジ装置からフロー情報を収集し、収集したフロー情報を解析することによって、ネットワークの転送経路に発生したループを検出する。このように、ループ検出装置10は、監視対象のブリッジ装置にあらかじめ搭載されたフロー計測機能によって配信されるフロー情報に基づいてループを検出するので、ブリッジ装置にループ検出用の専用機能を追加することなく、ネットワークに発生したループを検出することが可能になる。なお、本実施例では、ブリッジ装置21及び24が監視対象である場合について説明する。
次に、本実施例に係るループ検出装置10の構成について説明する。図1に示すように、本実施例に係るループ検出装置10は、フロー情報DB(Data Base)11と、フロー情報収集部12と、ブロードキャスト・マルチキャスト異常判定部13と、非ユニキャスト異常判定部14と、受信ポート異常判定部15と、送信ポート異常判定部16と、ループ検出部17とを有する。
フロー情報DB11は、監視対象のブリッジ装置21及び24から収集されたフロー情報を時系列に蓄積する記憶部である。例えば、フロー情報DB11は、ハードディスクドライブやメモリなどを用いて実現される。
フロー情報収集部12は、ブリッジ装置21及び24によって転送されたフレームのフロー情報を単数又は複数のフレームごとにブリッジ装置21及び24から収集してフロー情報DB11に蓄積する。ここで、ブリッジ装置21及び24から収集されるフロー情報には、ブリッジ装置21及び24によって転送されたフレームの受信ポート、送信ポート、送信元MACアドレス及び送信先MACアドレスが含まれている。
ブロードキャスト・マルチキャスト異常判定部13は、フロー情報DB11に蓄積されたフロー情報を参照して、ブロードキャストフレーム又はマルチキャストフレームのトラフィック量を受信ポートごとに算出する。具体的には、ブロードキャスト・マルチキャスト異常判定部13は、送信先MACアドレスがブロードキャスト用又はマルチキャスト用のアドレスであるフロー情報を集計することで、受信ポートごとにトラフィック量を算出する。このとき、例えば、ブロードキャスト・マルチキャスト異常判定部13は、フレームの数やフレームの長さなどの情報を用いてトラフィック量を算出する。
そして、ブロードキャスト・マルチキャスト異常判定部13は、算出したトラフィック量が第1の閾値を超えた受信ポートがあるか否かを判定する。さらに、ブロードキャスト・マルチキャスト異常判定部13は、算出したトラフィック量が第1の閾値を超えた受信ポートを抽出する。このとき、例えば、ブロードキャスト・マルチキャスト異常判定部13は、あらかじめ設定された係数を過去の同じ時間におけるブロードキャストフレーム又はマルチキャストフレームのトラフィック量に乗じて得られる値を第1の閾値として用いる。ここでいう過去の同じ時間とは、例えば、1日前の同じ時間や1週間前の同じ時間、過去の同じ月日の同じ時間などである。または、ブロードキャスト・マルチキャスト異常判定部13は、あらかじめ決められたトラフィック量を第1の閾値として用いてもよい。
非ユニキャスト異常判定部14は、フロー情報DB11に蓄積されたフロー情報を参照して、全てのフレームに関するフロー情報を集計することで、同じ受信ポートで受信され、かつ、複数の送信ポートで送信されたフレームのトラフィック量を受信ポートごとに算出する。具体的には、非ユニキャスト異常判定部14は、ブロードキャストフレーム、マルチキャストフレーム、ユニキャストフレームのいずれであるかに関わらず、全てのフレームに関するフロー情報を集計することで、受信ポートごとにトラフィック量を算出する。このとき、例えば、非ユニキャスト異常判定部14は、フレームの数やフレームの長さなどの情報を用いてトラフィック量を算出する。
そして、非ユニキャスト異常判定部14は、算出したトラフィック量が第2の閾値を超えた受信ポートがあるか否かを判定する。さらに、非ユニキャスト異常判定部14は、算出したトラフィック量が第2の閾値を超えた受信ポートを抽出する。このとき、例えば、非ユニキャスト異常判定部14は、ブロードキャスト・マルチキャスト異常判定部13と同様に、あらかじめ設定された係数を過去の同じ時間におけるブロードキャストフレーム及びマルチキャストフレーム以外のフレームのトラフィック量に乗じて得られる値を第2の閾値として用いる。ここでいう過去の同じ時間とは、例えば、1日前の同じ時間や1週間前の同じ時間、過去の同じ月日の同じ時間などである。または、非ユニキャスト異常判定部14は、あらかじめ決められたトラフィック量を第2の閾値として用いてもよい。
受信ポート異常判定部15は、フロー情報DB11に蓄積されたフロー情報を参照して、送信元MACアドレスが同じであって異なる受信ポートで受信されたフレームについて第1の期間内で受信ポートが変わった回数を送信元MACアドレスごとに算出する。具体的には、受信ポート異常判定部15は、送信元MACアドレスが同じフロー情報ごとに受信ポートを比較することで、送信元MACアドレスごとに、あらかじめ決められた短い期間内で受信ポートが変わった回数を算出する。なお、このとき、受信ポート異常判定部15は、ブロードキャストフレーム、マルチキャストフレーム、ユニキャストフレームのいずれであるかに関わらず、全ての種類のフレームを処理の対象とする。
そして、受信ポート異常判定部15は、算出した回数が第3の閾値を超えた送信元MACアドレスがあるか否かを判定する。さらに、受信ポート異常判定部15は、算出した回数が第3の閾値を超えたフレームの受信ポートを抽出する。例えば、L2レイヤネットワーク20内で装置が移動した場合には、各ブリッジ装置が有するMACテーブルにおいて、その装置のMACアドレスに対応するポートが変わることになる。しかし、この場合には、比較的長い間隔でポートが変化する。本実施例では、受信ポート異常判定部15は、短期間内で受信ポートが変わったフレームを対象にするので、このような装置の移動にともなう受信ポートの変化を除外することができ、より精度よくループを検出することができる。
送信ポート異常判定部16は、フロー情報DB11に蓄積されたフロー情報を参照して、送信先MACアドレスが同じであって異なる送信ポートで送信されたユニキャストフレームについて第2の期間内で送信ポートが変わった回数を送信先MACアドレスごとに算出する。具体的には、送信ポート異常判定部16は、送信先MACアドレスが同じフロー情報ごとに送信ポートを比較することで、送信先MACアドレスごとに、あらかじめ決められた短い期間内で送信ポートが変わった回数を算出する。
そして、送信ポート異常判定部16は、算出した回数が第4の閾値を超えた送信元MACアドレスがあるか否かを判定する。さらに、送信ポート異常判定部16は、算出した回数が第4の閾値を超えたフレームの送信ポートを抽出する。前述したように、例えば、L2レイヤネットワーク20内で装置が移動した場合には、各ブリッジ装置が有するMACテーブルにおいて、その装置のMACアドレスに対応するポートが比較的長い間隔で変化する。本実施例では、送信ポート異常判定部16は、短期間内で送信ポートが変わったフレームを対象にするので、このような装置の移動にともなう受信ポートの変化を除外することができ、より精度よくループを検出することができる。
ループ検出部17は、ブロードキャスト・マルチキャスト異常判定部13、非ユニキャスト異常判定部14、受信ポート異常判定部15、及び送信ポート異常判定部16による判定結果に基づいて、ネットワークの転送経路にループが発生していることを検出する。
具体的には、ループ検出部17は、ブロードキャスト・マルチキャスト異常判定部13によってトラフィック量が第1の閾値を超えた受信ポートがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。また、ループ検出部17は、非ユニキャスト異常判定部14によってトラフィック量が第2の閾値を超えた受信ポートがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。また、ループ検出部17は、受信ポート異常判定部15によって第1の期間内で受信ポートが変わった回数が第3の閾値を超えた送信元MACアドレスがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。また、ループ検出部17は、送信ポート異常判定部16によって第2の期間内で送信ポートが変わった回数が第4の閾値を超えた送信元MACアドレスがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。
さらに、ループ検出部17は、ブロードキャスト・マルチキャスト異常判定部13、非ユニキャスト異常判定部14、受信ポート異常判定部15、及び送信ポート異常判定部16によって抽出された受信ポート又は送信ポートの和集合を求める。そして、ループ検出部17は、求めたポートの和集合をネットワークの転送経路に発生したループに関連する異常ポートとして検出する。
ここで、ブロードキャスト・マルチキャスト異常判定部13によってトラフィック量が第1の閾値を超えた受信ポートがあると判定された場合、又は、非ユニキャスト異常判定部14によってトラフィック量が第2の閾値を超えた受信ポートがあると判定された場合には、L2レイヤネットワーク20、又は、L2レイヤネットワーク20に隣接する他のネットワークにおいてループが発生したと判定できる。
そして、このような場合において、受信ポート異常判定部15によって第1の期間内で受信ポートが変わった回数が第3の閾値を超えた送信元MACアドレスがあると判定された場合、又は、送信ポート異常判定部16によって第2の期間内で送信ポートが変わった回数が第4の閾値を超えた送信元MACアドレスがあると判定された場合には、監視対象のブリッジ装置21及び24がループ経路上に存在していると判定できる。すなわち、この場合には、L2レイヤネットワーク20内でループが発生していると判定できる。
これに対し、受信ポート異常判定部15によって第1の期間内で受信ポートが変わった回数が第3の閾値を超えた送信元MACアドレスがないと判定され、かつ、送信ポート異常判定部16によって第2の期間内で送信ポートが変わった回数が第4の閾値を超えた送信元MACアドレスがないと判定された場合には、監視対象のブリッジ装置21及び24がループ経路上に存在していないと判定できる。すなわち、この場合には、L2レイヤネットワーク20に隣接する監視対象外のネットワークでループが発生していると判定できる。
なお、ループ検出部17は、ループ検出部17によってネットワークの転送経路にループが発生していることが検出された場合には、例えば、ループ検出装置10が有する表示部に警告メッセージを出力したり、スピーカーから警告を発したりする。また、例えば、ループ検出部17は、ループ検出部17によって検出された異常ポートを示す情報を警告メッセージとともに表示部に出力する。
次に、本実施例に係るループ検出装置10によるループ検出処理について、より具体的に説明する。まず、L2レイヤネットワーク20の転送経路に発生したループにおけるフレームの流れについて説明する。図3は、本実施例に係るL2レイヤネットワーク20の転送経路に発生したループにおけるフレームの流れを説明するための図である。図3は、図1に示したブリッジ装置24〜26からなるループを示している。
なお、ここでは一例として、MACアドレスとしてAA:AA:AA:AA:AA:AAが付与されたネットワークインタフェースを有するPC27からMACアドレスとしてXX:XX:XX:XX:XX:XXが付与されたネットワークインタフェースを有する装置X(図示せず)宛にユニキャストフレームが転送される場合について説明する。また、ここでは、各ブリッジ装置のMACテーブルには、装置XのMACアドレスがまだ学習されていないこととする。また、図3において、ユニキャストフレームであるフレーム30a〜30dは、説明の便宜上異なる符合を付しているが、各フレームに設定されている内容は全て同じであるものとする。
まず、PC27からフレーム30aが送信されると、送信されたフレーム30aは、L2レイヤネットワーク20における直近のブリッジ装置26のポートAに転送される。ここで、例えば、ブリッジ装置26は、BB:BB:BB:BB:BB:BBが付与されたネットワークインタフェースを有する。
ブリッジ装置26は、ポートAでフレーム30aを受信すると、自身が学習済みのMACテーブルに装置XのMACアドレスが保持されているか否かを判定する。ここで、例えば、装置XのMACアドレスがMACテーブルに保持されていた場合には、ブリッジ装置26は、MACテーブルにおいてそのMACアドレスに対応付けられているポートからフレームを転送する。
しかし、ここでは、装置XのMACアドレスがまだMACテーブルに学習されていないこととしたので、ブリッジ装置26は、自身が有するポートのうち、フレーム30aを受信したポートA以外の全てのポートにフレーム30bを転送する。図3に示す例では、ブリッジ装置26は、ポートB及びポートCそれぞれから、装置XのMACアドレスが送信先MACアドレスとして設定されたフレーム30bを転送する。
ブリッジ装置26のポートBから転送されたフレーム30bは、ブリッジ装置26に隣接するブリッジ装置24によって受信される。このとき、ブリッジ装置24は、例えば、自身が有するポートEでフレーム30bを受信する。また、ブリッジ装置26のポートCから転送されたフレーム30bは、ブリッジ装置26に隣接するブリッジ装置25によって受信される。このとき、ブリッジ装置25は、例えば、自身が有するポートDでフレーム30bを受信する。
そして、ブリッジ装置24及び25もブリッジ装置26と同様に、自身のMACテーブルにまだ装置XのMACアドレスを保持していないので、自身が有するポートのうち、フレーム30bを受信したポート以外の全てのポートにフレームを転送する。これにより、ブリッジ装置24のポートGからブリッジ装置25へフレーム30cが転送され、ブリッジ装置25のポートFからブリッジ装置24へフレーム30cが転送される。
この後は、ブリッジ装置24及び25によって同様の動作が繰り返され、ブリッジ装置24及び25それぞれからブリッジ装置26にフレーム30dが転送される。この結果、ブリッジ装置26から転送されたフレームは、ブリッジ装置24及び25を介して、ブリッジ装置26に戻ってくることになる。このように、ネットワークの転送経路にループが発生した場合には、ループ内で同じフレームが延々と転送されることになる。
図3に示す例では、ループ検出装置10は、ブリッジ装置24からフロー情報を収集する。そして、ループ検出装置10は、収集したフロー情報を用いて、ブリッジ装置24〜26によって形成されるループを検出する。
以下では、本実施例に係るループ検出装置10によって実行されるループ検出処理の処理手順について説明する。図4は、本実施例に係るループ検出装置10によって実行されるループ検出処理の処理手順を示すフローチャートである。ループ検出装置10は、図4に示す一連の処理手順を所定の周期で繰り返し実行する。
図4に示すように、本実施例では、まず、ブロードキャスト・マルチキャスト異常判定部13が、フロー情報DB11に蓄積されたフロー情報を参照して、ブロードキャストフレーム又はマルチキャストフレームのトラフィック量を受信ポートごとに算出し、算出したトラフィック量が第1の閾値を超えた受信ポートがあるか否かを判定する(ステップS101)。
そして、トラフィック量が第1の閾値を超えた受信ポートがあった場合には(ステップS101,Yes)、ブロードキャスト・マルチキャスト異常判定部13は、ブロードキャスト・マルチキャスト異常フラグに「1」を設定し、さらに、トラフィック量が第1の閾値を超えた受信ポートを抽出する(ステップS102)。一方、トラフィック量が第1の閾値を超えた受信ポートがなかった場合には(ステップS101,No)、ブロードキャスト・マルチキャスト異常判定部13は、ブロードキャスト・マルチキャスト異常フラグへの値の設定や受信ポートの抽出を行わずに、非ユニキャスト異常判定部14に制御を移す。
続いて、非ユニキャスト異常判定部14が、フロー情報DB11に蓄積されたフロー情報を参照して、ブロードキャストフレーム及びマルチキャストフレーム以外のフレームであって、同じ受信ポートで受信され、かつ、異なる送信ポートで送信されたフレームのトラフィック量を受信ポートごとに算出し、算出したトラフィック量が第2の閾値を超えた受信ポートがあるか否かを判定する(ステップS103)。
そして、トラフィック量が第2の閾値を超えた受信ポートがあった場合には(ステップS103,Yes)、非ユニキャスト異常判定部14は、非ユニキャスト異常フラグに「1」を設定し、さらに、トラフィック量が第2の閾値を超えた受信ポートを抽出する(ステップS104)。一方、トラフィック量が第2の閾値を超えた受信ポートがなかった場合には(ステップS103,No)、非ユニキャスト異常判定部14は、非ユニキャスト異常フラグへの値の設定や受信ポートの抽出を行わずに、受信ポート異常判定部15に制御を移す。
続いて、受信ポート異常判定部15が、フロー情報DB11に蓄積されたフロー情報を参照して、送信元MACアドレスが同じであって異なる受信ポートで受信されたフレームについて、あらかじめ決められた短い期間(第1の期間)内で受信ポートが変わった回数を送信元MACアドレスごとに算出し、算出した回数が第3の閾値を超えた送信元MACアドレスがあるか否かを判定する(ステップS105)。
そして、あらかじめ決められた短い期間(第1の期間)内で受信ポートが変わった回数が第3の閾値を超えた送信元MACアドレスがあった場合には(ステップS105,Yes)、受信ポート異常判定部15は、受信ポート異常フラグに「1」を設定し、さらに、受信ポートが変わった回数が第3の閾値を超えたフレームの受信ポートを抽出する(ステップS106)。
例えば、図3に示した例では、ループが発生した際に、特に、未学習のユニキャストフレームが転送される場合では、PC27のMACアドレスが送信元MACアドレスに設定されたフレーム30bが、ブリッジ装置26からブリッジ装置24及び25それぞれに転送される。このとき、ブリッジ装置24は、ポートEでフレーム30bを受信する。また、ブリッジ装置25は、ポートDでフレーム30bを受信する。
そして、次の段階に進むと、ブリッジ装置24が、ブリッジ装置26から受信したフレーム30bをフレーム30cとしてブリッジ装置25へ転送する。このとき、ブリッジ装置25は、ブリッジ装置24から転送されたフレーム30cをポートFで受信する。また、この一方で、ブリッジ装置25も、ブリッジ装置26から受信したフレーム30bをフレーム30cとしてブリッジ装置24へ転送する。このとき、ブリッジ装置24は、ブリッジ装置25から転送されたフレーム30cをポートGで受信する。
すなわち、図3に示した例では、ループが発生した場合に、ブリッジ装置24及び25それぞれが有するMACテーブルにおいて、PC27のMACアドレスが送信元MACアドレスに設定されたフレームの受信ポートが変更されることになる。受信ポート異常判定部15は、このようにして受信ポートが変動する場合に、変動の前後における各受信ポートを抽出する。例えば、図3に示した例では、受信ポート異常判定部15は、ブリッジ装置24のポートE及びGを抽出する。
一方、あらかじめ決められた短い期間(第1の期間)内で受信ポートが変わった回数が第3の閾値を超えた送信元MACアドレスがなかった場合には(ステップS105,No)、受信ポート異常判定部15は、受信ポート異常フラグへの値の設定や受信ポートの抽出を行わずに、送信ポート異常判定部16に制御を移す。
続いて、送信ポート異常判定部16が、フロー情報DB11に蓄積されたフロー情報を参照して、送信先MACアドレスが同じであって異なる送信ポートで送信されたユニキャストフレームについて、あらかじめ決められた短い期間(第2の期間)内で送信ポートが変わった回数を送信先MACアドレスごとに算出し、算出した回数が第4の閾値を超えた送信元MACアドレスがあるか否かを判定する(ステップS107)。
そして、あらかじめ決められた短い期間(第2の期間)内で送信ポートが変わった回数が第4の閾値を超えた送信元MACアドレスがあった場合には(ステップS107,Yes)、送信ポート異常判定部16は、送信ポート異常フラグに「1」を設定し、さらに、送信ポートが変わった回数が第4の閾値を超えたフレームの送信ポートを抽出する(ステップS108)。
例えば、図3に示した例では、ループが発生した際に、特に、未学習のユニキャストフレームが転送される場合では、PC27のMACアドレスが送信元MACアドレスに設定されたフレーム30cが、ブリッジ装置24からブリッジ装置25に転送され、ブリッジ装置25からブリッジ装置24に転送される。このとき、ブリッジ装置24は、ポートGからフレーム30cを送信する。また、ブリッジ装置25は、ポートFからフレーム30cを送信する。
そして、次の段階に進むと、フレーム30cと同じフレームであるフレーム30dが、ブリッジ装置24からブリッジ装置26に転送され、ブリッジ装置25からブリッジ装置26に転送される。このとき、ブリッジ装置24は、ポートEからフレーム30dを送信する。また、ブリッジ装置25は、ポートDからフレーム30dを送信する。
すなわち、図3に示した例では、ループが発生した場合に、同じ送信先MACアドレスが設定されたフレームの送信ポートが変動することになる。送信ポート異常判定部16は、このようにして送信ポートが変動する場合に、変動の前後における各送信ポートを抽出する。例えば、図3に示した例では、送信ポート異常判定部16は、ブリッジ装置24のポートE及びGを抽出する。
なお、送信ポートは、ループ検出装置10における処理の負荷や実装によってMACテーブルの更新のタイミングがずれる可能性がある受信ポートに比べて、変動がフロー情報にすぐに反映される。したがって、受信ポートの変動チェックでループ関連ポートを抽出できなかった場合でも、異常ポートの抽出に失敗する可能性を減らすことができる。
一方、あらかじめ決められた短い期間(第2の期間)内で送信ポートが変わった回数が第4の閾値を超えた送信元MACアドレスがなかった場合には(ステップS107,No)、送信ポート異常判定部16は、送信ポート異常フラグへの値の設定や送信ポートの抽出を行わずに、ループ検出部17に制御を移す。
なお、上述した処理の中で用いられるブロードキャスト・マルチキャスト異常フラグ、非ユニキャスト異常フラグ、受信ポート異常フラグ、及び、送信ポート異常フラグそれぞれに設定された値は、例えば、ループ検出装置10が有するメモリなどに保持される。また、各フラグには、上述した処理が開始される前に、初期値として「0」が設定される。
続いて、ループ検出部17が、ブロードキャスト・マルチキャスト異常判定部13、非ユニキャスト異常判定部14、受信ポート異常判定部15、及び送信ポート異常判定部16による判定結果に基づいて、ネットワークの転送経路にループが発生していることを検出する。
具体的には、ループ検出部17は、メモリなどに保持されているブロードキャスト・マルチキャスト異常フラグ、非ユニキャスト異常フラグ、受信ポート異常フラグ、及び、送信ポート異常フラグそれぞれに設定された値を合計する。そして、各フラグに設定された値の合計が「0」を超えていた場合には(ステップS109,Yes)、ループ検出部17は、ネットワークの転送経路にループが発生していることを検出し、さらに、ブロードキャスト・マルチキャスト異常判定部13、非ユニキャスト異常判定部14、受信ポート異常判定部15、及び送信ポート異常判定部16によって抽出された受信ポート又は送信ポートの和集合をネットワークの転送経路に発生したループに関連する異常ポートとして検出する(ステップS110)。一方、各フラグに設定された値の合計が「0」であった場合には(ステップS109,No)、ループ検出部17は、L2レイヤネットワーク20にループが発生しないことを検出し、ループ検出処理を終了する(ステップS111)。
なお、図3に示した例では、未学習ユニキャストフレームが転送される場合を示したが、ブロードキャストフレーム又はマルチキャストフレームが転送される場合も、ネットワークの転送経路に発生したループを同様に検出することができる。
また、ブロードキャスト・マルチキャスト異常判定部13による判定処理、非ユニキャスト異常判定部14による判定処理、受信ポート異常判定部15による判定処理、及び、送信ポート異常判定部16による判定処理が実行される順序は、必ずしも図4に示したものに限られない。4つの判定処理が実行される順序は、適宜に入れ替わってもよい。
また、ループ検出装置10が複数の処理を並列に実行することが可能な場合には、4つの判定処理の一部又は全部が並列に実行されてもよい。その場合には、ループ検出部17は、4つの判定処理の実行が全て完了した時点で、それぞれの判定結果に基づいて、ネットワークの転送経路にループが発生していることを検出する。
上述したように、本実施例では、フロー情報収集部12が、ブリッジ装置21及び24によって転送されたフレームの受信ポート、送信ポート、送信元MACアドレス及び送信先MACアドレスを含んだフロー情報を単数又は複数のフレームごとにブリッジ装置21及び24から収集してフロー情報DB11に蓄積する。また、ブロードキャスト・マルチキャスト異常判定部13が、フロー情報DB11に蓄積されたフロー情報を参照して、送信先MACアドレスがブロードキャスト用又はマルチキャスト用のアドレスであるフロー情報を集計することで、ブロードキャストフレーム又はマルチキャストフレームのトラフィック量を受信ポートごとに算出し、算出したトラフィック量が第1の閾値を超えた受信ポートがあるか否かを判定する。そして、ループ検出部17が、ブロードキャスト・マルチキャスト異常判定部13によってトラフィック量が第1の閾値を超えた受信ポートがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。すなわち、本実施例では、監視対象のブリッジ装置にあらかじめ搭載されたフロー計測機能によって配信されるフロー情報に基づいてループが検出される。したがって、本実施例によれば、ブリッジ装置にループ検出用の専用機能を追加することなく、ネットワークに発生したループを検出することが可能になる。
また、本実施例では、非ユニキャスト異常判定部14が、フロー情報DB11に蓄積されたフロー情報を参照して、全てのフレームに関するフロー情報を集計することで、同じ受信ポートで受信され、かつ、異なる送信ポートで送信されたフレームのトラフィック量を受信ポートごとに算出し、算出したトラフィック量が第2の閾値を超えた受信ポートがあるか否かを判定する。そして、ループ検出部17が、非ユニキャスト異常判定部14によってトラフィック量が第2の閾値を超えた受信ポートがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。すなわち、本実施例では、ブロードキャストフレーム及びマルチキャストフレームのトラフィック量だけでなく、それ以外のフレームのトラフィック量に基づいて、ループが検出される。したがって、本実施例によれば、ネットワークに発生したループをより高い精度で検出することが可能になる。
また、本実施例では、受信ポート異常判定部15が、フロー情報DB11に蓄積されたフロー情報を参照して、送信元MACアドレスが同じフロー情報ごとに受信ポートを比較することで、送信元MACアドレスが同じであって異なる受信ポートで受信されたフレームについて第1の期間内で受信ポートが変わった回数を送信元MACアドレスごとに算出し、算出した回数が第3の閾値を超えた送信元MACアドレスがあるか否かを判定する。そして、ループ検出部17が、受信ポート異常判定部15によって第1の期間内で受信ポートが変わった回数が第3の閾値を超えた送信元MACアドレスがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。すなわち、本実施例では、監視対象のブリッジ装置が有する受信ポートの変動に基づいてループが検出される。したがって、本実施例によれば、監視対象のブリッジ装置がループ経路上にあることを検出することができる。
また、本実施例では、送信ポート異常判定部16が、フロー情報DB11に蓄積されたフロー情報を参照して、送信先MACアドレスが同じフロー情報ごとに送信ポートを比較することで、送信先MACアドレスが同じであって異なる送信ポートで送信されたユニキャストフレームについて第2の期間内で送信ポートが変わった回数を送信先MACアドレスごとに算出し、算出した回数が第4の閾値を超えた送信元MACアドレスがあるか否かを判定する。そして、ループ検出部17が、送信ポート異常判定部16によって第2の期間内で送信ポートが変わった回数が第4の閾値を超えた送信元MACアドレスがあると判定された場合に、ネットワークの転送経路にループが発生していることを検出する。すなわち、本実施例では、監視対象のブリッジ装置が有する送信ポートの変動に基づいてループが検出される。したがって、本実施例によれば、監視対象のブリッジ装置がループ経路上にあることを検出することができる。
また、本実施例では、ブロードキャスト・マルチキャスト異常判定部13が、あらかじめ設定された係数を過去の同じ時間におけるブロードキャストフレーム又はマルチキャストフレームのトラフィック量に乗じて得られる値を第1の閾値として用いる。すなわち、本実施例によれば、ブロードキャストフレーム又はマルチキャストフレームのトラフィック量が過去の同じ時間と比べて著しく増加した場合に、ループが検出される。したがって、本実施例によれば、ネットワークの転送経路にループが発生していることをより確実に検出することができる。
また、本実施例では、非ユニキャスト異常判定部14が、あらかじめ設定された係数を過去の同じ時間におけるブロードキャストフレーム及びマルチキャストフレーム以外のフレームのトラフィック量に乗じて得られる値を第2の閾値として用いる。すなわち、本実施例によれば、ブロードキャストフレーム及びマルチキャストフレーム以外のフレームのトラフィック量が過去の同じ時間と比べて著しく増加した場合に、ループが検出される。したがって、本実施例によれば、ネットワークの転送経路にループが発生していることをより確実に検出することができる。
また、本実施例では、ブロードキャスト・マルチキャスト異常判定部13が、フロー情報DB11に蓄積されたフロー情報を参照して、送信先MACアドレスがブロードキャスト用又はマルチキャスト用のアドレスであるフロー情報を集計することで、ブロードキャストフレーム又はマルチキャストフレームのトラフィック量を受信ポートごとに算出し、算出したトラフィック量が第1の閾値を超えた受信ポートを抽出する。また、非ユニキャスト異常判定部14が、フロー情報DB11に蓄積されたフロー情報を参照して、全てのフレームに関するフロー情報を集計することで、同じ受信ポートで受信され、かつ、複数の送信ポートで送信されたフレームのトラフィック量を受信ポートごとに算出し、算出したトラフィック量が第2の閾値を超えた受信ポートを抽出する。また、受信ポート異常判定部15が、フロー情報DB11に蓄積されたフロー情報を参照して、送信元MACアドレスが同じであって異なる受信ポートで受信されたフレームについて第1の期間内で受信ポートが変わった回数を送信元MACアドレスごとに算出し、算出した回数が第3の閾値を超えたフレームの受信ポートを抽出する。また、送信ポート異常判定部16が、フロー情報DB11に蓄積されたフロー情報を参照して、送信先MACアドレスが同じフロー情報ごとに送信ポートを比較することで、送信先MACアドレスが同じであって異なる送信ポートで送信されたユニキャストフレームについて第2の期間内で送信ポートが変わった回数を送信先MACアドレスごとに算出し、算出した回数が第4の閾値を超えたフレームの送信ポートを抽出する。そして、ループ検出部17が、ブロードキャスト・マルチキャスト異常判定部13、非ユニキャスト異常判定部14、受信ポート異常判定部15及び送信ポート異常判定部16によって抽出された受信ポート及び送信ポートの和集合をネットワークの転送経路に発生したループに関連する異常ポートとして検出する。したがって、本実施例によれば、ネットワークの転送経路に発生したループによって異常が発生しているループが検出されるので、操作者が迅速にループを解消することができるようになる。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
例えば、本実施例では、L2レイヤネットワーク20に含まれる各ブリッジ装置がそれぞれポートを有することとしたが、このポートは物理ポートに限られない。例えば、各ブリッジ装置が有するポートは、論理ポートや仮想ポートであってもよい。ここでいう論理ポートとは、例えば、VLAN IDを用いて論理的に実現されるポートである。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
例えば、本実施例では、ループ検出装置10が、ブロードキャスト・マルチキャスト異常判定部13による判定処理、非ユニキャスト異常判定部14による判定処理、受信ポート異常判定部15による判定処理、及び、送信ポート異常判定部16による判定処理の全てを行うこととしたが、必ずしもこれら4つの判定処理の全てが行われなくてもよい。すなわち、ループ検出装置10は、4つの判定処理のうち少なくとも1つを行えば、L2レイヤネットワークに発生したループを検出することができる。
また、上記実施例で説明したループ検出方法は、あらかじめ用意されたプログラムをコンピュータで実行することで実現することもできる。そこで、以下では、上記実施例で説明したループ検出方法を実現するループ検出プログラムを実行するコンピュータの一例を説明する。
図5は、本実施例に係るループ検出プログラムを実行するコンピュータ40を示す図である。図5に示すように、コンピュータ40は、例えば、メモリ41と、CPU(Central Processing Unit)42と、ハードディスクドライブインタフェース43と、ディスクドライブインタフェース44と、シリアルポートインタフェース45と、ビデオアダプタ46と、ネットワークインタフェース47とを有する。これらの各部は、バス48によって接続される。
メモリ41は、ROM(Read Only Memory)41aおよびRAM(Random Access Memory)41bを含む。ROM41aは、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース43は、ハードディスクドライブ49に接続される。ディスクドライブインタフェース44は、ディスクドライブ44aに接続される。ディスクドライブ44aには、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース45には、例えば、マウス45aおよびキーボード45bが接続される。ビデオアダプタ46には、例えば、ディスプレイ46aが接続される。
ここで、図5に示すように、ハードディスクドライブ49は、例えば、OS(Operating System)49a、アプリケーションプログラム49b、プログラムモジュール49cおよびプログラムデータ49dを記憶する。本実施例に係るループ検出プログラムは、例えば、コンピュータ40によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ49に記憶される。具体的には、上記実施例で説明したクラスタ形成部と同様の情報処理を実行するクラスタ分類手順、および、孤立データ組込部と同様の情報処理を実行する孤立データ組込手順が記述されたプログラムモジュールが、ハードディスクドライブ49に記憶される。
また、上記実施例で説明したフロー情報DB11などに記憶されるデータのように、ループ検出プログラムによる情報処理に用いられるデータは、例えば、ハードディスクドライブ49に記憶される。そして、CPU42が、ハードディスクドライブ49に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM41bに読み出して、情報収集手順およびサービス決定手順を実行する。
なお、ループ検出プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ49に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ44a等を介してCPU42によって読み出されてもよい。あるいは、ループ検出プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース47を介してCPU42によって読み出されてもよい。