以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置の例を示す図である。第1の実施の形態の情報処理システムは、情報処理装置1、中継装置2,3,4,5および端末装置6を含む。情報処理装置1は、第1の情報処理システムにおける各中継装置のポート間の物理結線の情報を取得する。情報処理装置1は、物理結線の情報を情報処理システムのユーザなどに提示することで、ユーザによる物理結線状況の把握を支援する。ここで、以下の説明において、中継装置2,3,4,5には、STP、リンクアグリゲーションおよびVLANなどの論理的な経路制御の設定は行われていないものとする。
中継装置2,3,4,5の各ポートは、所定のケーブル(TP(Twisted Pair)ケーブルなど)を用いて相互に接続され、ネットワークN1を形成する。中継装置2は、ポート2a,2b,2cを有する。中継装置3は、ポート3a,3b,3cを有する。中継装置4は、ポート4a,4b,4cを有する。中継装置5は、ポート5a,5b,5cを有する。ポート2aは、情報処理装置1と接続されている。ポート5cは端末装置6と接続されている。また、次のポート同士が接続されている。ポート2b,3a。ポート2c,3b。ポート3c,4a。ポート4b,5a。ポート4c,5b。情報処理装置1および端末装置6は同じサブネットに属している。中継装置2,3,4,5は例えばL2スイッチである。
中継装置2は、中継装置3,4,5、情報処理装置1および端末装置6が有するMACアドレスと、ポート2a,2b,2cとの対応関係を学習し、学習テーブル(MACアドレステーブルやFDBなどと呼ばれることもある)に登録する。中継装置3,4,5も、中継装置2と同様に、他の中継装置、情報処理装置1および端末装置6が有するMACアドレスと自身が有するポートとの対応関係を学習し、学習テーブルに登録する。情報処理装置1は、中継装置2,3,4,5が保持する学習テーブルの内容を、物理結線の情報として、中継装置2,3,4,5から収集する。
ここで、情報処理装置1は、情報処理装置1と中継装置2,3,4,5との間で正常な通信を行える場合に、中継装置2,3,4,5から適切に物理結線の情報を収集可能である。ところが、ネットワークN1の接続関係では、中継装置2,3の間、および、中継装置4,5の間でL2ループが形成されている。すなわち、中継装置2,3の間には、ポート2b,3aを結ぶ経路とポート2c,3bを結ぶ経路との2つの経路が存在する。中継装置4,5の間には、ポート4b,5aを結ぶ経路とポート4c,5bを結ぶ経路との2つの経路が存在する。
L2ループが発生していると、中継装置2,3,4,5の学習テーブルには、ブロードキャストストームの影響により、MACアドレスとポートとの対応関係が誤って登録される(誤学習される)。例えば、情報処理装置1が所定のIPアドレス(例えば、端末装置6のIPアドレス)に対するMACアドレスを解決するためのARP(Address Resolution Protocol)要求を送信することを考える。このARP要求の宛先MACアドレスはブロードキャストアドレス、送信元MACアドレスは情報処理装置1のMACアドレスである。各中継装置は、ARP要求の宛先MACアドレスがブロードキャストアドレスであるので、当該ARP要求を複製し、受信ポート以外の各ポートから送信する。すると、例えば、中継装置2では、情報処理装置1がポート2aの先に接続されているにも関わらず、中継装置3側のポート2b,2cの何れかでもARP要求が受信される。
この場合、中継装置2は、情報処理装置1のMACアドレスをポート2bまたはポート2cに対応付けて学習してしまう。他の装置のMACアドレスも同様に誤学習される。例えば、特開2006−352263号公報や特開2006−352262号公報に開示の方法を用いて、各中継装置の学習テーブルを情報処理装置1に収集することが考えられる。しかし、誤学習された学習テーブルからは各中継装置のポート間の物理結線の状況を適正に把握することは難しい。
一方、L2ループ状態を抑制するSTPやリンクアグリゲーションなどの論理的な経路制御の設定を行い、中継装置2,3,4,5により適正な学習テーブルを生成させた後に、学習テーブルを収集することも考えられる。しかし、この場合、一部の物理結線が学習テーブルに反映されなくなるため全体の結線状況を把握することが困難になる。また、論理的な経路制御の設定に誤りがあると結局L2ループが発生してしまい、ネットワークN1における各中継装置のポート間の物理結線の状況を適正に把握することは難しくなる。
そこで、情報処理装置1は、次のようにしてネットワークN1における物理結線の情報を収集する。情報処理装置1は、通信部1aおよび演算部1bを有する。通信部1aは、中継装置2,3,4,5との通信に用いられる通信インタフェースである。
演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
情報処理装置1は、演算部1bの処理に用いられるデータを記憶する、RAM(Random Access Memory)などの揮発性記憶装置やHDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置を備える(図示を省略)。
演算部1bは、サブネット内でL2ループ状態を発生させる一組のポートを閉塞する。「L2ループ状態を発生させる一組のポート」は、「L2ループ状態の要因となる一組のポート」ということもできる。中継装置2,3,4,5の例では、前述のように中継装置2,3の間および中継装置4,5の間にL2ループが形成されている。中継装置2,3の間の経路の何れか1つ、および、中継装置4,5の間の経路の何れか1つを利用不可とすれば、ネットワークN1におけるL2ループを解消し得る。
第1の実施の形態の例では、「L2ループ状態を発生させる一組のポート」は次の4種類である。第1の組は、ポート2b,3a,4b,5aの組である。第2の組は、ポート2c,3b,4c,5bの組である。第3の組は、ポート2b,3a,4c,5bの組である。第4の組は、ポート2c,3b,4b,5aの組である。第1〜第4の組の何れか1つを選択し、選択した組に属する全てのポートを閉塞すれば、ネットワークN1におけるL2ループを解消可能である。
例えば、演算部1bは、次のようにして上記組の何れかを特定し得る。具体的には、演算部1bは、ダミーの送信元MACアドレスが設定されたイーサネットフレーム(単にフレームと称する)を情報処理装置1からブロードキャストで送信する。ダミーのMACアドレスとは、サブネット内に存在していないMACアドレスである。例えば、演算部1bは、サブネット内に存在していないIPアドレスを問い合わせ先とし、サブネット内に存在していないMACアドレスを送信元とするARP要求を送信してもよい。このとき、演算部1bは、ダミーの送信元MACアドレスを複数種類用いて、複数のフレームをブロードキャストする。
演算部1bは、例えばSNMP(Simple Network Management Protocol)などを用いて中継装置2,3,4,5からそれぞれの学習テーブルを収集する。その際、L2ループにより、中継装置2,3,4,5では、情報処理装置1のMACアドレスが誤学習されている(適切なポートに対応付けられていない)可能性がある。また、ブロードキャストストームにより、中継装置2,3,4,5の通信負荷が高まっている可能性がある。そこで、演算部1bは、特開2006−352263号公報に開示の方法を用いて、情報処理装置1のMACアドレスの各中継装置による誤学習を訂正し得る。また、演算部1bは、特開2006−352262号公報に開示の方法を用いて、サブネット内の通信負荷を軽減し得る。演算部1bは、当該誤学習の訂正および通信負荷の軽減のための処理を行った上で、学習テーブルの収集を行える。
このとき、ループするフレームを送受信するポートをもつ中継装置の学習テーブルには、ダミーの複数種類の送信元MACアドレスが複数のポートに対応付けて登録されることになる。ここで、以下ではループするフレームを送受信するポートを、L2ループ形成に関与し得るポートという意味で「被疑ポート」と称する。ある程度多種類のダミーMACアドレスを用意して送信元MACアドレスとして利用すれば、常に何れかのダミーMACアドレスが被疑ポートに対応付けられるようにすることができる。
例えば、中継装置2について、ある時点で収集された学習テーブルを参照すると、複数種類のダミーMACアドレスのうち、第1のダミーMACアドレスがポート2bに対応付けられ、第2のダミーMACアドレスがポート2cに対応付けられる。すると、演算部1bは、ポート2b,2cを被疑ポートと検出する。ネットワークN1の場合、演算部1bは、同様にしてポート3a,3b,3c,4a,4b,4c,5a,5bも、被疑ポートとして検出する。
複数の被疑ポートの一部を閉塞させることで、閉塞された被疑ポートを経由する一部の通信経路(パス)をダウンさせ、L2ループを解消し得る。ただし、被疑ポートの閉塞に用いる中継装置の選択を誤ると、情報処理装置1からの通信範囲が狭まるおそれがある。ネットワークN1の例の場合、被疑ポートを閉塞させる際に、中継装置4を用いてポート4aをダウンさせてしまうと、情報処理装置1からの通信の到達範囲が狭まる(中継装置4と通信できなくなり、ポート4aの開放を指示できなくなるため)。そこで、被疑ポートを閉塞させる中継装置を選択するために次のような選択基準を設ける。
すなわち、演算部1bは、(1)被疑ポートを複数もち、かつ、(2)情報処理装置1のMACアドレスを学習し得るポートが被疑ポートと異なる中継装置を選択する。演算部1bは、各中継装置の学習テーブルの収集を所定期間収集し、監視することで、各中継装置の学習テーブルが、(1)、(2)の基準を満たすか否かを判定し得る。例えば、演算部1bは、上記の基準を満たす中継装置として中継装置2を検出する。中継装置2は、(1)ポート2b,2cの2つの被疑ポートをもち、かつ、(2)情報処理装置1のMACアドレスを被疑ポート2b,2cとは異なるポート2aで学習し得るからである。
したがって、まず、演算部1bは、ポート2b,2cの何れかを閉塞させる。例えば、ポート番号の小さい方から閉塞させてもよいし、ポート番号の大きい方から閉塞させてもよい。例えば、演算部1bは、ポート2bを閉塞させると決定し、中継装置2にポート2bの閉塞を指示する。すると、中継装置2はポート2bを閉塞させる。そして、ポート2bおよびポート2bの先にあるポート3aがリンクダウンする。この場合、ポート3aも閉塞されたと考えることができる。
ポート2b,3a間の経路が不通になった後、演算部1bは、ダミーの複数種類の送信元MACアドレスを送信元とした複数のフレームを再度ブロードキャストする。この場合、演算部1bは、各中継装置の学習テーブルに基づいて、ポート4b,4c,5a,5cを被疑ポートとして検出することになる。そして、演算部1bは、上記の中継装置の選択基準により中継装置4を選択し、被疑ポートであるポート4bを閉塞させる。すると、ポート4bおよびポート4bの先にあるポート5aがリンクダウンする。この場合、ポート5aも閉塞されたと考えることができる。
ポート2b,3a,4b,5a(ポートの組G1とする)を閉塞させた状態では、ダミーの複数種類の送信元MACアドレスは、各中継装置において単一のポートにより学習される。この場合、L2ループは解消されたことになる。ポートの組G1は、前述の「L2ループ状態を発生させる一組のポート」の第1の組に相当する。ネットワークN2は、ネットワークN1に対して、ポートの組G1を閉塞した状態を例示している。ポートの組G1を閉塞した状態であれば、L2ループが解消されているので、中継装置2,3,4,5は各装置のMACアドレスとポートとの対応関係を適正に学習し、学習テーブルに登録できる。
演算部1bは、当該一組のポートを閉塞した状態で、物理結線の一部分の情報を各中継装置から収集する。例えば、演算部1bは、ポートの組G1を閉塞した状態で、中継装置2,3,4,5の間の物理結線の一部分の情報(各中継装置の学習テーブル)を、中継装置2,3,4,5から収集する。このとき収集される物理結線の情報は、ポート2a,2c,3b,3c,4a,4c,5b,5cの結線に関する情報(ネットワークN2の結線に相当する情報)であり、ポート2b,3a,4b,5aの結線に関する情報は含まれない。
演算部1bは、サブネット内でL2ループ状態を発生させる他の一組のポートを決定する。演算部1bは、決定した他の一組のポートを閉塞する。
例えば、演算部1bは、ポートの組G1を選択した各ポートの次のポートを選択することで、「L2ループ状態を発生させる他の一組のポート」として、ポートの組G2を決定してもよい。すなわち、演算部1bは、中継装置2において選択したポート2bの逆のポートとしてポート2cを、中継装置4において選択したポート4bの逆のポートとしてポート4cを選択する。すると、ポート2c,4c、ポート2cに繋がるポート3bおよびポート4cに繋がるポート5bが、「L2ループ状態を発生させる他の一組のポート」として決定される。ポートの組G2は、前述の「L2ループ状態を発生させる一組のポート」の第2の組に相当する。演算部1bは、中継装置2にポート2bの開放を、中継装置4にポート4bの開放を指示することでポートの組G1を開放する。そして、演算部1bは、中継装置2にポート2cの閉塞を、中継装置4にポート4cの閉塞を指示することで、ポートの組G2を閉塞する。
あるいは、演算部1bは、閉塞させているポート2b,3aおよびポート4b,5aの閉塞を順に解除(開放)しながら、解除時のL2ループの発生状況に応じて、「L2ループ状態を発生させる他の一組のポート」を決定することも考えられる。具体的には、演算部1bは、ポート2b,3aを開放し、ダミーの複数種類の送信元MACアドレスを送信元とした複数のフレームをブロードキャストする。この場合、演算部1bは、ポート2b,3a,2c,3bを被疑ポートと検出する。演算部1bは、そのうち、既に閉塞を行ったポート2b,3a以外のポート2c,3bを閉塞する。同様にして、ポート4b,5aを開放し、ポート4c,5bを閉塞する。演算部1bは、このようにしてポートの組G2を閉塞することも考えられる。ネットワークN3は、ネットワークN1に対して、ポートの組G2を閉塞した状態を例示している。
情報処理装置1によれば、サブネット内でL2ループ状態を発生させる一組のポート2b,3a,4b,5aが閉塞される。情報処理装置1により、一組のポート2b,3a,4b,5aが閉塞された状態で、物理結線の一部分の情報が中継装置2,3,4,5から収集される。情報処理装置1により、サブネット内でL2ループ状態を発生させる他の一組のポート2c,3b,4c,5bが決定され、閉塞される。これにより、L2ループ状態が発生しているサブネットの物理結線の情報を収集できる。
ここで、例えば、システム構築の現場では、中継装置間をケーブルで結線した後に、結線が設計通り行われているかを確認したいことがある。しかし、サブネット内にL2ループが発生している状態では、ブロードキャストストームの影響でMACアドレスが誤学習されており、物理結線の情報を把握することが困難であるという問題がある。
例えば、前述のように、2つの中継装置を結ぶ物理的な経路が複数あるとき、STP、リンクアグリゲーションまたはVLANなどの論理的な経路制御の設定を行う前の段階では、L2ループが発生するため物理トポロジの確認が難しい。また、論理的な経路制御の設定が行われていたとしても、その設定が誤っているとL2ループが発生してしまい物理トポロジの確認が難しい。
そこで、情報処理装置1は、サブネット内の複数の中継装置のポート群に対し、L2ループを解消する複数の閉塞パターンを順次試しながら、中継装置間の物理結線の情報を部分的に収集していく。例えば、ポートの組G1を閉塞させた状態で、中継装置2,3,4,5は学習テーブルを作成し直す。すると、中継装置2,3,4,5の学習テーブルには、ポート2c,3b,3c,4a,4c,5bを介する通信経路についての情報が適正に反映される。このため、演算部1bは、このときの中継装置2,3,4,5の学習テーブルを、ポート2a,2c,3b,3c,4a,4c,5bの結線に関する情報(ネットワークN2の結線に相当する情報)として、中継装置2,3,4,5から収集可能である。
また、ポートの組G2を閉塞させた状態で、中継装置2,3,4,5は学習テーブルを作成し直す。すると、中継装置2,3,4,5の学習テーブルには、ポート2b,3a,3c,4a,4b,5aを介する通信経路についての情報が適正に反映される。このため、演算部1bは、このときの中継装置2,3,4,5の学習テーブルを、ポート2a,2b,3a,3c,4a,4b,5cの結線に関する情報(ネットワークN3の結線に相当する情報)として、中継装置2,3,4,5から収集可能である。そして、演算部1bは、収集した各情報をマージすることで、中継装置2,3,4,5間の全ての物理結線を含む情報(ネットワークN1の結線に相当する情報)を取得し得る。
例えば、演算部1bは、ポート2c,3bを開放してポート2b,3aを閉塞した状態で中継装置2,3の間のパスを検出し、ポート2b,3aを開放してポート2c,3bを閉塞した状態でも中継装置2,3の間のパスを検出する。すると、演算部1bは、中継装置2,3の間に、ポート2b,3aを繋ぐパスおよびポート2c,3bを繋ぐパスが存在することを検出できる。演算部1bは、中継装置4,5の間に、ポート4b,5aを繋ぐパスおよびポート4c,5bを繋ぐパスが存在することを検出できる。
これにより、例えば、2つの中継装置を結ぶ物理的な経路を複数設けた後、STP、リンクアグリゲーションまたはVLANなどの論理的な経路制御の設定を行う前の段階でも、サブネットの物理結線の情報を収集可能となる。また、例えば、論理的な経路制御の設定内容が誤っている、ポート間が誤って結線されているなどの理由により、L2ループが発生していても、サブネットの物理結線の情報を収集可能となる。
なお、ポートの組G1,G2(第1,第2の組)を順に(順番は任意でよい)閉塞させていくものとしたが、演算部1bは、ポートの上記第3,第4の組を順に(順番は任意でよい)閉塞させて、物理結線の情報を部分的に収集していってもよい。あるいは、演算部1bは、閉塞候補のポートの全ての組(本例では第1,第2,第3,第4の組)を順に(順番は任意でよい)閉塞させて、物理結線の情報を部分的に収集していってもよい。
[第2の実施の形態]
図2は、第2の実施の形態のシステムの例を示す図である。第2の実施の形態のシステムは、情報処理装置100、スイッチ200,200aおよび端末装置21,22,23を含む。
情報処理装置100は、スイッチ200,200aの間の物理結線の情報を収集し、スイッチ200,200aの物理結線の状況をシステムの管理者に提示するコンピュータである。情報処理装置100は、スイッチ200に接続されている。
スイッチ200,200aは、情報処理装置100と端末装置21,22,23との間や端末装置21,22,23同士の通信を、イーサネットを用いて中継するL2スイッチである。スイッチ200,200aは、SNMPを利用可能である。ここで、第2の実施の形態のシステムに含まれる全ての装置は、同一のサブネットに属している。一例として、当該サブネットのネットワークアドレスを“192.168.1.0/24”とする。スイッチ200のIPアドレスは“192.168.1.1”である。スイッチ200aのIPアドレスは“192.168.1.2”である。
スイッチ200,200aの間は、TPケーブルや光ケーブルなどの所定のケーブルを2本用いて結線されている。パスR1は、スイッチ200,200aと1本目のケーブルによって形成される物理的なパスである。パスR2は、スイッチ200,200aと2本目のケーブルによって形成される物理的なパスである。以下の説明において、スイッチ200,200aには、STP、リンクアグリゲーションおよびVLANなどの論理的な経路制御の設定は行われていないものとする。すなわち、スイッチ200,200aの間でL2ループが発生している。
端末装置21,22,23は、ユーザによって利用されるクライアントコンピュータである。端末装置21は、スイッチ200に接続されている。端末装置22は、スイッチ200aに接続されている。端末装置23は、スイッチ200aに接続されている。
図3は、情報処理装置のハードウェア例を示す図である。情報処理装置100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、読み取り装置106および通信インタフェース107を有する。各ユニットは情報処理装置100のバスに接続されている。
プロセッサ101は、情報処理装置100の情報処理を制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、情報処理装置100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、情報処理装置100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、情報処理装置100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、情報処理装置100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
読み取り装置106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、スイッチ200に接続されており、スイッチ200を介して他の装置と通信を行う。
図4は、スイッチのハードウェア例を示す図である。スイッチ200は、プロセッサ201、RAM202、ROM203、スイッチ部204およびポートP11,P12,P13,P14を有する。
プロセッサ201は、スイッチ200の情報処理を制御する。プロセッサ201は、マルチプロセッサであってもよい。プロセッサ201は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ201は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM202は、スイッチ200の主記憶装置である。RAM202は、プロセッサ201に実行させるファームウェアのプログラムなどの少なくとも一部を一時的に記憶する。また、RAM202は、プロセッサ201による処理に用いる各種データを記憶する。
ROM203は、ファームウェアのプログラムやデータを予め記憶している。ROM203は、フラッシュメモリなど、書き換え可能な不揮発性メモリであってもよい。ROM203に記憶されたプログラムやデータは、プロセッサ201の処理に用いられる。
スイッチ部204は、ポートP11,P12,P13,P14の何れかで受信されたフレームを、他のポートから送信する。ここで、OSI参照モデルの第2層で用いられるPDU(Protocol Data Unit)をフレームと呼ぶことがある。また、同第3層で用いられるPDUをパケットと呼ぶことがある。ポートP11は、スイッチ200aのポートP21と所定のケーブルにより直接接続されている。ポートP12は、情報処理装置100と所定のケーブルにより直接接続されている。ポートP13は、スイッチ200aのポートP22と所定のケーブルにより直接接続されている。ポートP14は、端末装置21と所定のケーブルにより直接接続されている。
ポートP11,P12,P13,P14のポート番号(同一スイッチ内でポートを一意に識別する番号)は次の通りである。ポートP11のポート番号は“1”である。ポートP12のポート番号は“2”である。ポートP13のポート番号は“3”である。ポートP14のポート番号は“4”である。
スイッチ200aは、プロセッサ201a、RAM202a、ROM203a、スイッチ部204aおよびポートP21,P22,P23,P24を有する。スイッチ200aの各ユニットは、スイッチ200の同名の各ユニットと同様である。
ポートP21は、スイッチ200のポートP11と所定のケーブルにより直接接続されている。ポートP22は、スイッチ200のポートP13と所定のケーブルにより直接接続されている。ポートP23は、端末装置22と所定のケーブルにより直接接続されている。ポートP24は、端末装置23と所定のケーブルにより直接接続されている。
ポートP21,P22,P23,P24のポート番号は次の通りである。ポートP21のポート番号は“1”である。ポートP22のポート番号は“2”である。ポートP23のポート番号は“3”である。ポートP24のポート番号は“4”である。
図5は、情報処理装置の機能例を示す図である。情報処理装置100は、記憶部110、収集部120および結線検出部130を有する。記憶部110は、RAM102やHDD103に確保された記憶領域を用いて実現され得る。収集部120および結線検出部130は、プロセッサ101がプログラムを実行することで実現され得る。
記憶部110は、収集部120および結線検出部130の処理に用いられる各種の情報を記憶する。例えば、記憶部110は、物理結線の情報(結線情報)の収集対象とするサブネットのネットワークアドレス(本例では、“192.168.1.0/24”とする)の情報を記憶する。記憶部110は、SNMPにより各種情報を取得する際に利用されるSNMPコミュニティ名などの情報を記憶する。
記憶部110は、スイッチ200,200aから取得されたMACアドレステーブルを記憶する。記憶部110は、装置間の物理結線に関する情報やスイッチ200,200aが備えるポートの閉塞状態を管理するための情報などを記憶する。
収集部120は、記憶部110に記憶された情報に基づいて、スイッチ200,200aからMACアドレステーブルなどの情報を収集し、記憶部110に格納する。収集部120は、SNMPを用いてスイッチ200,200aから情報を収集し得る。例えば、収集部120はSNMPマネージャとして機能し得る。スイッチ200,200aはSNMPエージェントとして機能し得る。収集部120は、MACアドレステーブルを要求するSNMPリクエストを送信することで、スイッチ200,200aからMACアドレステーブルを収集し得る。
収集部120がMACアドレステーブルを収集しようとするとき、スイッチ200,200a間でL2ループが発生し、情報処理装置100のMACアドレスが誤学習されていたり、通信負荷が高まっていたりする可能性がある。そこで、収集部120は、特開2006−352262号公報や特開2006−352263号公報に開示の方法を用いることができる。
例えば、収集部120は、特開2006−352262号公報に開示の方法を用いて、L2ループによる通信負荷を軽減し得る。すなわち、収集部120は、ブロードキャストMACアドレスあるいはマルチキャストMACアドレスを宛先とする、L2ループを生じたフレームよりも長いロングサイズのフレームをサブネット内に連続して送信する。これにより、L2ループ内で転送されるフレーム数を低減させ、L2ループによる通信負荷を軽減し得る。
また、収集部120は、特開2006−352263号公報(例えば、第1〜第3実施例)に開示の方法を用いて、スイッチ200,200aによりMACアドレスが誤学習された状態を訂正し得る。例えば、収集部120は、ブロードキャストMACアドレスまたはサブネットに実在しないMACアドレスを宛先とし、情報処理装置100のMACアドレス以外のMACアドレスを送信元とするフレームを連続して送信する。すると、情報処理装置100のMACアドレスの誤学習の原因となるフレーム(送信元MACアドレスが情報処理装置100のMACアドレスであるフレーム)が、スイッチ200,200aにおけるキュー溢れにより廃棄される。その結果、当該誤学習の原因となるフレームがスイッチ200,200a内をループする状態を抑制し得る。こうして、情報処理装置100のMACアドレスが、スイッチ200,200aにより連続して誤学習される状態が解消される。そして、情報処理装置100が次に他の装置とユニキャストの通信を行う際に、情報処理装置100のMACアドレスをスイッチ200,200aに正しく学習させ、情報処理装置100とスイッチ200,200aとの間のSNMPなどの通信を可能にし得る。
更に、収集部120は、サブネットに存在する各スイッチのMACアドレスを認識していなくても、特開2006−352263号公報(例えば、第6実施例)に開示の方法を用いて、各スイッチのMACアドレスを取得し得る。例えば、収集部120は、サブネットに属するIPアドレスを1つ選択し、当該IPアドレスを宛先、情報処理装置100のMACアドレスおよびIPアドレスを送信元としたARP要求を送信する。一例として、ARP要求の宛先IPアドレスが、端末装置22のIPアドレスである場合を考える。
ARP要求の宛先MACアドレスは、ブロードキャストアドレスであるため、ARP要求はスイッチ200,200a間をループする。端末装置22は、ARP要求を受信するたびに、ARP応答(情報処理装置100のMACアドレスおよびIPアドレスを宛先としたユニキャストの応答)を送信する。ただし、ARP要求がループされることで、情報処理装置100のMACアドレスがスイッチ200,200aにより誤学習されている。このため、ARP応答はスイッチ200,200a間をループし、情報処理装置100まで到達しない可能性がある。
通常、ブロードキャストフレーム(ARP要求)とは逆方向に、ユニキャストフレーム(ARP応答)はループする。収集部120は、例えば、サブネット内に実在しないMACアドレス(MXとする)を送信元としたブロードキャストフレームを、大量に送信することで、ARP要求をループから消滅させる(ARP応答のループは残る)。続いて、収集部120は、送信元MACアドレスが情報処理装置100のMACアドレスであり、宛先MACアドレスがMXである任意のMACフレームを送信する。すると、スイッチ200,200aによる情報処理装置100のMACアドレスの誤学習が一時的に訂正される。その結果、ループしていたスイッチ200aのARP応答が、情報処理装置100に向かってフォワードされる。こうして、収集部120は、スイッチ200aのMACアドレスを取得できる。収集部120は、サブネットのネットワークアドレスに属する他のIPアドレスに対しても、同様の処理を行うことで、他のIPアドレスに対応するMACアドレスを解決できる。
収集部120は、スイッチ200,200aにおいてL2ループが発生していたとしても、これらの処理を用いて、スイッチ200,200aのMACアドレスを解決し得る。また、収集部120は、SNMPを用いてスイッチ200,200aからMACアドレステーブルを収集し得る。
収集部120は、収集されたスイッチ200,200aのMACアドレステーブルに基づいて、被疑ポートの検出を行う。被疑ポートとは、スイッチ間でL2ループが発生している場合に、ループするフレームの送受信に使用されるポートである。収集部120は、特開2007−174182号公報に開示の方法を用いて、被疑ポートの検出を行える。
例えば、収集部120は、複数種類のダミーMACアドレスを用意する。ダミーMACアドレスは、サブネット内に存在していないMACアドレスである。ダミーMACアドレスは、サブネット内で使用されないことが明らかなMACアドレスと考えてもよい。
収集部120は、ダミーMACアドレスを送信元とするフレームを、ブロードキャストで複数回送信する。例えば、収集部120は、毎回、何れかのダミーMACアドレスをランダムに選択し、選択したダミーMACアドレスを送信元とするフレームを、ブロードキャストで送信する。そして、収集部120は、スイッチ200,200aそれぞれのMACアドレステーブルを収集する。収集部120は、収集したMACアドレステーブルを参照し、ダミーMACアドレスが対応付けられたポートを被疑ポートとする。収集部120は、ある程度多種類のダミーMACアドレスをブロードキャストフレームの送信元MACアドレスとして利用することで、常に何れかのダミーMACアドレスが各被疑ポートに対応付けられるようにすることができる。
収集部120は、L2ループ状態が解消されるように、閉塞対象とする被疑ポートの組を特定する。L2ループ状態が解消された状態では、スイッチ200,200aは、適正なMACアドレステーブルを生成できる。このため、収集部120は、L2ループ状態が解消された状態で、MACアドレステーブルをスイッチ200,200aから収集することで、物理結線の情報を適切に把握できる。
収集部120は、被疑ポートの複数の閉塞パターンを順次試しながら、スイッチ200,200aからMACアドレステーブルを収集していき、記憶部110に格納する。L2ループ状態を解消後に、スイッチ200により作成されるMACアドレステーブルと、スイッチ200aにより作成されるMACアドレステーブルとの組は、物理的な結線の状況が適正に反映された情報となる。このため、当該MACアドレステーブルの組を、結線情報(システム全体の結線のうちの一部の結線情報)と呼ぶことができる。ここで、最終的に取得されるシステム全体の結線情報を指して「全体結線情報」、全体結線情報のうちの一部の結線情報を指して「部分結線情報」と称する。収集部120が、スイッチ200,200aから収集できる結線情報は、被疑ポートが閉塞された状態で作成されたものなので、部分結線情報である。
結線検出部130は、スイッチ200,200aにより収集された複数の部分結線情報をマージすることで、全体結線情報を生成する。例えば、結線検出部130は、文献“Layer2ネットワーク構成情報推測システムの改良について”(藤田俊介、外4名著、2008年、大分大学)に開示の方法を用いて、スイッチ200,200aにおけるポート間の接続関係の一部を、部分結線情報に基づいて検出できる。ただし、1つの部分結線情報(ある被疑ポートの組を閉塞して作成されたMACアドレステーブルの組)では、スイッチ200,200a間の一部の結線を検出できるが、閉塞された被疑ポートに関する他の一部の結線を検出できない。そこで、結線検出部130は、他の部分結線情報(別の被疑ポートの組を閉塞して作成されたMACアドレステーブルの組)を参照して、当該他の一部の結線の情報を補完することで、全体結線情報を生成する。
図6は、ポート状態管理テーブルの例を示す図である。ポート状態管理テーブル111は、収集部120によって生成され、記憶部110に格納される。ポート状態管理テーブル111は、スイッチのIPアドレス、ポート番号、ポート開閉状態、切替実行済フラグおよび切替先ポート番号の項目を含む。
スイッチのIPアドレスの項目には、スイッチのIPアドレスが登録される。ポート番号の項目には、当該スイッチが有するポートのポート番号が登録される。ポート開閉状態の項目には、ケーブルが接続されているポートの開放または閉塞の状態を示す情報が登録される。切替実行済フラグの項目には、閉塞から開放、または、開放から閉塞の切替を行ったか否かを示す情報が登録される。“未実行”は切替未実行を示す。また、切替実行済の場合は、“実行済”という情報が切替実行済フラグの項目に登録される。切替先ポート番号の項目には、切替先ポートのポート番号が登録される。切替先ポートとは、当該エントリで示されるポートを開放状態にしたときに、同じスイッチ上で当該ポートとともに被疑ポートとして検出されるポートである。切替先ポートが未定の場合、切替先ポート番号の項目には“未定”という情報が登録される。
例えば、ポート状態管理テーブル111には、スイッチのIPアドレスが“192.168.1.1”、ポート番号が“1”、ポート開閉状態が“開放”、切替実行済フラグが“未実行”、切替先ポート番号が“未定”という情報が登録される。これは、スイッチ200のポートP11が開放状態となっており、開放状態から閉塞状態への切替が未だ実行されていないこと、切替先ポート番号が未定であることを示す。
また、ポート状態管理テーブル111には、スイッチのIPアドレスが“192.168.1.1”、ポート番号が“3”、ポート開放状態が“閉塞”、切替実行済フラグが“未実行”、切替先ポート番号が“未定”という情報が登録される。これは、スイッチ200のポートP13が閉塞状態となっており、閉塞状態から開放状態への切替が未だ実行されていないこと、切替先ポート番号が未定であることを示す。
なお、切替実行済フラグのデフォルト値は、“未実行”である。切替先ポート番号のデフォルト値は“未定”である。
図7は、ホストテーブルの例を示す図である。ホストテーブル112は、収集部120によって生成され、記憶部110に格納される。ホストテーブル112は、装置名、MACアドレスおよびIPアドレスの項目を含む。装置名の項目には、装置の名称が登録される。MACアドレスの項目には、当該装置のMACアドレスが登録される。IPアドレスの項目には、当該装置のIPアドレスが登録される。
例えば、ホストテーブル112には、装置名が“PC1”、MACアドレスが“MP”、IPアドレスが“192.168.1.10”という情報が登録される。これは、装置名“PC1”の装置によって保持されるMACアドレスが“MP”、IPアドレスが“192.168.1.10”であることを示す。ここで、“PC1”は、情報処理装置100の装置名である。MACアドレス“MP”は、情報処理装置100のMACアドレスである。IPアドレス“192.168.1.10”は、情報処理装置100のIPアドレスである。
また、装置名“SW1”は、スイッチ200の装置名である。MACアドレス“MQ”は、スイッチ200のMACアドレスである。装置名“SW2”は、スイッチ200aの装置名である。MACアドレス“MR”は、スイッチ200aのMACアドレスである。
図8は、ポートテーブルの例を示す図である。ポートテーブル113は、収集部120によって生成され、記憶部110に格納される。ポートテーブル113は、ポート識別子、装置名およびポート番号の項目を含む。
ポート識別子の項目には、サブネット内でポートを識別するためのポート識別子が登録される。装置名の項目には、装置の名称が登録される。ポート番号の項目には、当該装置が有するポートのポート番号が登録される。
例えば、ポートテーブル113には、ポート識別子が“PC1−p1”、装置名が“PC1”、ポート番号が“1”という情報が登録される。これは、ポート識別子“PC1−p1”で識別されるポートが、情報処理装置100のポート番号“1”のポートであることを示す。
同様に、ポートテーブル113によれば、例えば、ポート識別子“SW1−p1”で識別されるポートは、スイッチ200のポート番号“1”のポートP11である。ポート識別子“SW1−p2”で識別されるポートは、スイッチ200のポート番号“2”のポートP12である。他のポート識別子についても同様である。
図9は、リンクテーブルの例を示す図である。リンクテーブル114は、結線検出部130によって部分結線情報に基づいて作成され、記憶部110に格納される。リンクテーブル114は、ポート識別子(1)およびポート識別子(2)の項目を含む。ポート識別子(1)の項目には、第1のポート識別子が登録される。ポート識別子(2)の項目には、第1のポート識別と直接接続されていると判断された第2のポート識別子が登録される。
例えば、リンクテーブル114には、ポート識別子(1)が“SW1−p1”、ポート識別子(2)が“SW2−p1”という情報が登録される。これは、スイッチ200のポート番号“1”であるポートP11と、スイッチ200aのポート番号“1”であるポートP21とが、ケーブルにより直接接続されていることを示す。他のポートの組についても同様である。
なお、ポート識別子(1)およびポート識別子(2)に登録されたポート識別子の組は、登録する項目を逆にしても、同じ意味である。したがって、ポート識別子(1)が“SW1−p1”、ポート識別子(2)が“SW2−p1”という情報が登録されている場合、ポート識別子(1)が“SW2−p1”、ポート識別子(2)が“SW1−p1”という情報が重複して登録されることはない。
図10は、情報処理装置の処理の例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(ステップS1)収集部120は、結線情報の収集対象とするサブネットのネットワークアドレス(“192.168.1.0/24”)や、SNMPコミュニティ名などの情報の入力を受け付けて、結線収集対象情報を生成し、記憶部110に格納する。例えば、収集部120は、ユーザによる各情報の入力を許容してもよいし、所定のデータ形式で各情報を記述した設定ファイルの入力を許容してもよい。結線収集対象情報は、結線情報の収集対象とするサブネットのネットワークアドレスやSNMPコミュニティ名などの情報を含む。
(ステップS2)収集部120は、被疑ポートを検出するために、スイッチ200,200aからSNMPを用いてMACアドレステーブルを収集する。このとき、収集部120は、前述のように、特開2006−352262号公報や特開2006−352263号公報に開示の方法を利用し得る。収集部120は、収集したMACアドレステーブルに基づいて、被疑ポートの検出および被疑ポートの閉塞を行い、スイッチ200,200aでMACアドレスが誤学習された状態を解消する。その上で、収集部120は、スイッチ200,200aのMACアドレステーブルの組(部分結線情報)の収集を行う。収集部120は、閉塞対象の被疑ポートの閉塞パターンを変更しながら、複数の部分結線情報を収集し、記憶部110に格納する。処理の詳細については後述する。
(ステップS3)結線検出部130は、記憶部110を参照して、収集部120が収集した複数の部分結線情報をマージすることで、全体結線情報を生成する。処理の詳細については後述する。
(ステップS4)結線検出部130は、ステップS3で生成した全体結線情報に基づいて、システム全体の物理的な結線状況を示す画像情報を生成し、ディスプレイ11に出力する。ディスプレイ11は、当該画像情報に対応する画像を表示する。
図11は、部分結線情報収集処理の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。図11の手順は図10のステップS2に相当する。
(ステップS11)収集部120は、記憶部110に記憶された結線収集対象情報を読み込み、結線情報の収集対象とするサブネットのネットワークアドレス(“192.168.1.0/24”)およびSNMPコミュニティ名などの情報を取得する。
(ステップS12)収集部120は、SNMPを用いて、スイッチ200,200aからMACアドレステーブルを収集し、収集したMACアドレステーブルに基づいて、L2ループ状態の解消処理を実行する。前述のように、収集部120は、特開2006−352262号公報や特開2006−352263号公報に開示の方法を利用することで、各装置のMACアドレスの解決や、各装置からのMACアドレステーブルの取得などを行える。なお、収集部120は、MACアドレステーブルの取得前に実行するARP通信や収集したMACアドレステーブルに基づいて、ポート状態管理テーブル111、ホストテーブル112およびポートテーブル113を生成し、記憶部110に格納する。
(ステップS13)収集部120は、L2ループを解消した状態を維持して、スイッチ200,200aのMACアドレステーブルの組(部分結線情報)の収集を行い、各MACアドレステーブルをスイッチの装置名に対応付けて記憶部110に格納する。収集部120は、ここで収集されたMACアドレステーブルの組を1つの部分結線情報として管理する。MACアドレステーブルをスイッチから受信するときのSNMP応答には、送信元のスイッチのMACアドレスおよびIPアドレスが含まれる。このため、収集部120は、SNMP応答に含まれるMACアドレスまたはIPアドレスとホストテーブル112とに基づいて、MACアドレステーブルの送信元のスイッチの装置名を特定できる。
(ステップS14)収集部120は、通信が到達可能な範囲におけるスイッチからポート状態に関する情報をSNMPにより収集し、ポート状態管理テーブル111に登録する。収集部120は、元々ケーブルが接続されていないポートについてはポート状態管理テーブル111に登録しなくてよい。後述するように、ステップS12の処理により、通信が到達可能なIPアドレスをもつ装置の情報がホストテーブル112に追加されていく。収集部120は、ホストテーブル112には登録されているが、ポート状態管理テーブル111には未登録であるIPアドレスをもつスイッチから、ポート状態に関する情報の収集を行う。ポート状態管理テーブル111に登録済のIPアドレスをもつスイッチからは、ポート状態に関する情報を収集しなくてよい。なお、ホストテーブル112に登録された全てのスイッチのIPアドレスが、ポート状態管理テーブル111に登録済であれば、ステップS14をスキップしてよい。
(ステップS15)収集部120は、ポート状態管理テーブル111を参照して、閉塞かつ切替未実行のポートがあるか否かを判定する。閉塞かつ切替未実行のポートがある場合、処理をステップS16に進める。閉塞かつ切替未実行のポートがない場合、処理をステップS17に進める。
(ステップS16)収集部120は、ポート切替処理を実行する。収集部120は、現在閉塞している被疑ポートを開放し、当該被疑ポートに対応する他の被疑ポートを閉塞させる(ポート切替)。そして、処理をステップS12に進める。
(ステップS17)結線検出部130は、ポート状態管理テーブル111を参照して、単一スイッチ内での結線検出を行う(単一スイッチの2つの被疑ポート同士がケーブルで直接接続されていることによって発生しているL2ループを検出する)。具体的には、結線検出部130は、ポート状態管理テーブル111において切替先ポートで関連づけられたポートのペアのうち、部分結線情報において他のスイッチの何れのポートとも接続されていないペアを、単一スイッチ内で結線されていると判断する。結線検出部130は、単一スイッチ内での結線検出結果を、記憶部110に保存する。単一スイッチ内での結線検出結果は、単一スイッチ内で互いに接続されているポート識別子のペア(または、スイッチの装置名に対応付けられたポート番号のペア)を示す情報である。
図12は、L2ループ状態解消処理の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。図12の手順は、図11のステップS12に相当する。
(ステップS21)収集部120は、L2ループ状態が発生しているか否かを判定する。L2ループ状態が発生している場合、処理をステップS22に進める。L2ループ状態が発生していない場合、処理を終了する。例えば、収集部120は、L2ループ状態が発生しているか否かを、任意のフレームを1回以上ブロードキャスト送信することで確認できる。収集部120は、当該ブロードキャストフレームが情報処理装置100で受信されれば、L2ループ状態が発生していると判定する。収集部120は、当該ブロードキャストフレームが情報処理装置100で受信されなければ、L2ループ状態が発生していないと判定する。
(ステップS22)収集部120は、ARPを用いて、サブネット内の装置を検出する。例えば、収集部120は、サブネットのネットワークアドレスに属するIPアドレスを1つ選択し、当該IPアドレスを問い合わせ先とするARP要求をブロードキャストで送信する。収集部120は、特開2006−352263号公報に開示の方法を用いてARP応答を受信できれば、当該IPアドレスおよびMACアドレスをもつ装置がサブネット内に存在することを検出できる。収集部120は、ARP通信で得たMACアドレスおよびIPアドレスに対応付けて各装置に識別子を付与し、ホストテーブル112に新規エントリを追加する。なお、ステップS22ではサブネット内に存在する全ての装置を一度に検出できなくてもよい。図25〜図31で後述するように、サブネット内のループ構成によっては、一部の装置からのARP応答が情報処理装置100に到達しないこともあるからである。現時点で検出できていない装置については、以降のステップで被疑ポートを閉塞させた後に、順次検出されていくことになる。なお、ステップS22を繰り返し実行する際に、収集部120は、ホストテーブル112において、MACアドレスとの対応関係を登録済のIPアドレスについては、ARP要求を行わなくてよい。収集部120は、MACアドレスが判明した装置について、特開2006−352263号公報に開示の方法により、SNMPを用いてMACアドレステーブルを取得することで、ポートテーブル113を作成する(各ポートに識別子を付与する)。収集部120は、同様にSNMPを用いて、何れのMACアドレスをもつ装置がスイッチであるかを予め特定する。
(ステップS23)収集部120は、L2ループの被疑ポートを検出する。例えば、収集部120は、特開2007−174182号公報に開示の方法を用いて、被疑ポートを検出し得る。具体的には、収集部120は、複数種類のダミーMACアドレスを用意する。収集部120は、ダミーMACアドレスを送信元とするフレームを、ブロードキャストで複数回送信する。例えば、収集部120は、何れかのダミーMACアドレスをランダムに選択し、選択したダミーMACアドレスを送信元とするフレームを、ブロードキャストで送信する処理を複数回実行する。そして、収集部120は、スイッチ200,200aそれぞれのMACアドレステーブルを収集する。収集部120は、収集したMACアドレステーブルを参照し、あるスイッチの何れかのポートに対してダミーMACアドレスが対応付けられていれば、当該ポートを被疑ポートとする。
(ステップS24)収集部120は、被疑ポートをもつスイッチのうち、閉塞条件を満たすスイッチがあるか否かを判定する。ある場合、処理をステップS25に進める。ない場合、処理をステップS21に進める。閉塞条件とは、閉塞させる被疑ポートを決定するための条件である。閉塞条件は、(1)被疑ポートを複数もつスイッチであり、かつ、(2)情報処理装置100のMACアドレスを学習しているポートが被疑ポートと異なるスイッチ、である。(2)の条件について、あるスイッチのMACアドレステーブルを所定期間監視したときに、少なくとも1つの時点で、情報処理装置100のMACアドレスを学習しているポートが被疑ポートと異なっていれば、当該スイッチは(2)の条件を満たすとする。逆に、(2)の条件について、あるスイッチのMACアドレステーブルを所定期間監視したときに、情報処理装置100のMACアドレスを学習しているポートが被疑ポートに常に一致していれば、当該スイッチは(2)の条件を満たさないとする。
(ステップS25)収集部120は、ステップS23で閉塞条件を満たすと判定されたスイッチの複数の被疑ポートのうち、1つの被疑ポートを閉塞する。具体的には、収集部120は、該当のスイッチに対して、閉塞対象の被疑ポートを閉塞する旨の指示を送信する。指示を受信したスイッチは、指示に応じて、該当の被疑ポートを閉塞する。そして、処理をステップS21に進める。
このようにして、情報処理装置100は、L2ループ状態が解消されるまで、閉塞条件を満たすスイッチの被疑ポートを順次閉塞させていく。ステップS24で閉塞条件を満たすスイッチを選択する理由は、あるスイッチにおいて被疑ポートを閉塞させることで、情報処理装置100が送信したフレームの到達範囲が狭まった上、当該到達範囲が狭まった状態から戻せなくなることを防止するためである。情報処理装置100は、L2ループ状態が解消されると、図11で示したように、部分結線情報の収集を行う。
図13は、被疑ポートの例を示す図である。図13では端末装置21,22,23の図示を省略している。スイッチ200,200aの全てのポートが開放された状態では、スイッチ200,200aの間にL2ループが形成される。例えば、情報処理装置100は、ダミーのMACアドレス“MA”,“MB”,“MC”,“MD”を送信元とするフレーム(例えば、ARP)をブロードキャストで複数回送信する。その後、情報処理装置100は、当該ブロードキャストフレームがスイッチ200,200a間をループしている状態で、スイッチ200,200aからMACアドレステーブルを収集する。
例えば、情報処理装置100はスイッチ200のMACアドレステーブルから、MACアドレス“MA”、“MD”がポートP11(ポート番号1)に対応付けられ、MACアドレス“MB”、“MC”がポートP13(ポート番号3)に対応付けられていることを検出する。この場合、情報処理装置100は、ポートP11,P13を被疑ポートと特定する。
同様に、情報処理装置100は、スイッチ200aのMACアドレステーブルから、MACアドレス“MA”、“MD”がポートP22(ポート番号2)に対応付けられ、MACアドレス“MB”、“MC”がポートP21(ポート番号1)に対応付けられていることを検出する。この場合、情報処理装置100はポートP21,P22を被疑ポートと特定する。
また、例えば情報処理装置100は、スイッチ200のMACアドレステーブル(観察期間の何れかのタイミングで取得されたMACアドレステーブルでもよい)から、MACアドレス“MP”がポートP12に対応付けられていることを検出する。同様に、情報処理装置100は、スイッチ200aのMACアドレステーブルから、MACアドレス“MP”がポートP21に対応付けられていることを検出する。
この場合、情報処理装置100は、図12のステップS24で説明した閉塞条件を満たすスイッチとして、スイッチ200を特定する。なぜなら、MACアドレス“MP”が、被疑ポートではないポートP12で学習されている(スイッチ200のMACアドレステーブルにおいてMACアドレス“MP”がポートP12に対応付けられている)からである。
一方、情報処理装置100は、スイッチ200aを、当該閉塞条件を満たさないスイッチと判定する。MACアドレス“MP”が、被疑ポートP21で学習されているからである。したがって、情報処理装置100は、ポートP11,P13の何れかを閉塞する。例えば、ポート番号の大きい方を優先して閉塞させるならば、ポートP13を閉塞する。ポートP13を閉塞すると、ポートP22も通信に利用できなくなるため、ポートP13の閉塞は、ポートP13,P22(一組のポート)の閉塞と考えることもできる。
図14は、ポート切替処理の例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。図14の手順は、図11のステップS16に相当する。
(ステップS31)収集部120は、ポート状態管理テーブル111を参照して、ポート開閉状態が“閉塞”かつ切替実行済フラグが“未実行”であるポートを1つ選択する。
(ステップS32)収集部120は、ポート状態管理テーブル111を参照して、切替実行済フラグを“切替実行済”に設定する。
(ステップS33)収集部120は、選択したポートを開放する。具体的には、収集部120は、選択したポートを開放する旨を、該当のスイッチに指示する。スイッチは、指示を受け付けると、当該ポートを開放する。収集部120は、ポート状態管理テーブル111を参照して、当該ポートのポート開閉状態を“開放”に設定する。
(ステップS34)収集部120は、ポート開放を行ったスイッチの被疑ポートを特定する。被疑ポート数の特定は、前述のように複数のダミーMACアドレスを送信元とするフレームをブロードキャストで送信した上で、該当のスイッチのMACアドレステーブルを収集し、参照することで特定できる。収集部120は、開放したポートが被疑ポートとして特定されたか否かを判定する。開放したポートが被疑ポートである場合、処理をステップS35に進める。開放したポートが被疑ポートでない場合、処理を終了する。
(ステップS35)収集部120は、ポート開放を行ったスイッチの被疑ポート数を判定する。被疑ポート数が“1”の場合、処理を終了する。ポート開放を行ったスイッチの被疑ポート数が“2”の場合、処理をステップS36に進める。すなわち、該当のスイッチにおいて、開放したポートのみが被疑ポートであれば、被疑ポート数は“1”である。該当のスイッチにおいて、開放したポート以外にも被疑ポートがあれば、被疑ポート数は“2”である。
(ステップS36)収集部120は、ステップS31で選択したポートの切替先ポートに、ステップS35で判定されたもう一方の被疑ポート(すなわち、切替先ポート)の識別子を登録する。
(ステップS37)収集部120は、ポート状態管理テーブル111を参照して、切替先ポートの切替実行済フラグを“実行済”に設定する。
(ステップS38)収集部120は、切替先ポートを閉塞する。具体的には、収集部120は、切替先ポートを閉塞する旨を、該当のスイッチに指示する。スイッチは、指示を受け付けると、当該ポートを閉塞する。収集部120は、ポート状態管理テーブル111を参照して、ポート開閉状態を“閉塞”に設定する。
図15は、ポート開放時の処理例を示す図である。図15では、図14のステップS33のポート開放により発生し得る状況のパターン(開放パターンと称する)と、開放パターンに応じたポート閉塞の処理例とを例示している。ここで、図15でいう被疑ポート数とは、ポートを開放したスイッチ内での被疑ポート数である。また、図15において、四角形のシンボルは、開放されたポートP1を表している。また、図15において、黒色が付された四角形および丸型のシンボルは、被疑ポートを表している。
開放パターンAは、被疑ポート数が0の場合である。すなわち、あるスイッチのポートP1を開放しても、L2ループが発生しない。収集部120は、ポートP1を開放することで、通信の到達範囲を拡張する。
開放パターンB1は、被疑ポート数が1の場合である。すなわち、あるスイッチのポートP1を開放することで、サブネット内にL2ループが発生したが、開放したポートP1は、L2ループに直接関係するポートではない場合である。収集部120は、ポートP1を開放することで、通信の到達範囲を拡張し、その後、L2ループを発生させている他のスイッチの被疑ポートを閉塞することで、L2ループ状態を解消する。
開放パターンA,B1の何れであるかは、被疑ポートの数によって識別可能である。
開放パターンB2,B3は、被疑ポート数が2の場合である。そのうち、開放パターンB2は、単一スイッチの中でループ結線を検出する場合である。収集部120は、当該スイッチのポートP1,P2の何れかを閉塞することで、L2ループ状態を解消し得る。
また、開放パターンB3は、他のスイッチとともにループを形成する場合である。収集部120は、ポートP1,P2の何れかを閉塞する。開放パターンB2,B3は、被疑ポート数で区別することはできないが、該当スイッチのポートP1,P2の何れかを閉塞する処理を行う点では同じである。結線検出部130は、単一スイッチの中でのループ結線の検出を、図11のステップS17において別途実行する。
図16は、マージ処理の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。図16の手順は、図10のステップS3に相当する。
(ステップS41)結線検出部130は、部分結線情報の収集結果のうち、1番目を記憶部110から読み込み、暫定の全体結線情報(全体結果V)とする。ここで、収集結果(部分結線情報)は、N(Nは2以上の整数)個存在している。n番目の部分結線情報を収集結果Vnと表す。例えば、1番目の部分結線情報は収集結果V1である。2番目の部分結線情報は収集結果V2である。結線検出部130は、収集結果V1を参照して、ケーブルにより物理的に接続されたポートのペアに対応するポート識別子のペアをリンクテーブル114に追加する。このときリンクテーブル114に登録されているポート間の接続関係の情報が暫定の全体結果Vである。また、結線検出部130は、単一スイッチ内で結線されているポートのペアに対応するポート識別子のペア(図11のステップS17で取得した情報)を記憶部110から取得し、リンクテーブル114に追加する。
ここで、部分結線情報として取得されたMACアドレステーブルは、スイッチの装置名に対応付けて記憶部110に格納されている。更に、MACアドレステーブルには、当該スイッチにおけるポート番号と他の装置のMACアドレスとの対応関係が含まれる。このため、収集部120は、ポートテーブル113に基づいて、収集したMACアドレステーブルに含まれるポートのポート識別子を特定できる。
(ステップS42)結線検出部130は、次の収集結果Vnを読み込む。
(ステップS43)結線検出部130は、暫定の全体結果Vと収集結果Vnとをマージし、暫定の全体結果Vを更新する。例えば、結線検出部130は、収集結果Vnからケーブルにより物理的に接続されたポートのポート識別子のペアを取得できる。収集結果Vnから取得したポート識別子のペアのうち、現状のリンクテーブル114にはないペアを、リンクテーブル114に追加する。追加後のリンクテーブル114が、更新された後の暫定の全体結果Vである。
(ステップS44)結線検出部130は、N個の収集結果を全てマージしたか否かを判定する。N個の収集結果を全てマージした場合、処理をステップS45に進める(nに1加算する)。N個の収集結果を全てマージしていない場合、処理をステップS42に進める。
(ステップS45)結線検出部130は、暫定の全体結果V(リンクテーブル114)を全体結線情報(最終結果)とし、記憶部110に格納する。結線検出部130は、全体結線情報を参照することで、スイッチ200,200aを含む装置間の物理結線の状況を示す画像などを作成し、ユーザに提示することができる。
図17は、結線情報の収集処理の例を示す図である。図17の例では、図12のステップS25で例示した手順によって、ポートP13が閉塞されている。この場合、スイッチ200,200aの間ではポートP13,P22を繋ぐパスR2を介した通信は不可(閉塞状態)となり、ポートP11,P21を繋ぐパスR1を介した通信が可能となる。このため、情報処理装置100は、ポート状態管理テーブル111のポートP13に相当するエントリにおいてポート開閉状態を“閉塞”と管理している。ここで、ポートP13を積極的に閉塞状態としているのはスイッチ200側であり、スイッチ200a側ではポートP22を開放状態(積極的に閉塞状態としているわけではない)と管理している。このため、情報処理装置100は、ポートP13の状態を“閉塞”としてスイッチ200から取得するが、スイッチ200aからはポートP21の状態を“開放”として取得する。
なお、ポート状態管理テーブル111上で、スイッチ200aではなくスイッチ200の側のポートの設定により当該閉塞状態が管理される理由は、図13で例示したように、スイッチ200,200aの全てのポートが開放された状態において、スイッチ200が図12のステップS24で説明した閉塞条件を満たすからである。
そして、情報処理装置100は、サブネット内のL2ループ状態が解消されたことを検出する。例えば、情報処理装置100は、サブネットにブロードキャスト送信したデータが自身に戻ってこないことや、サブネット内に被疑ポートを複数もつスイッチがなくなったことなどを検出することで、L2ループ状態の解消を検出し得る。情報処理装置100は、スイッチ200,200aからMACアドレステーブルを収集する。情報処理装置100は、収集したMACアドレステーブルから、ポートP11,P21を繋ぐ物理的なパスR1の存在を検出できる。
ここで、ポートP13のエントリでは、ポート開閉状態が“閉塞”で、切替実行済フラグが“未実行”となっている。そこで、情報処理装置100は、図11のステップS15,S16および図14で例示した手順に基づいて、ポート切替処理を実行する。
図18は、結線情報の収集処理の例(続き)を示す図である。情報処理装置100は、ポートP13について、ポート状態管理テーブル111のポート開閉状態を“開放”、切替実行済フラグを“実行済”に変更するとともに、閉塞していたポートP13を開放する。すると、パスR2が開通する。パスR1を介した通信も引き続き可能であるため、L2ループ状態が発生する。そして、情報処理装置100は、スイッチ200において、ポートP11,P13の2つを被疑ポートとして検出する。
図19は、結線情報の収集処理の例(続き)を示す図である。情報処理装置100は、ポート状態管理テーブル111のポートP13に相当するエントリの切替先ポート番号に、ポートP11のポート番号“1”を登録する。情報処理装置100は、ポートP11について、ポート状態管理テーブル111のポート開閉状態を“閉塞”、切替実行済フラグを“実行済”に変更するとともに、開放していたポートP11を閉塞する。すると、スイッチ200,200aの間では、パスR1を介した通信は不可(閉塞状態)となり、パスR2を介した通信が可能となる。
情報処理装置100は、サブネット内のL2ループ状態が解消されたことを検出する。情報処理装置100は、スイッチ200,200aからMACアドレステーブルを収集する。情報処理装置100は、収集したMACアドレステーブルから、ポートP13,P22を繋ぐ物理的なパスR2の存在を検出できる。
情報処理装置100は、切替対象となり得るポートがなくなったので、部分結線情報の収集を完了する。情報処理装置100は、収集した2つの部分結線情報をマージすることで、全体結線情報を生成する。例示したように、情報処理装置100は、スイッチ200,200aの間に、ポートP11,P21を繋いだパスR1を検出し、ポートP13,P22を繋いだパスR2を検出する。このため、情報処理装置100は、これらの検出結果から、スイッチ200,200aの間に、ポートP11,P21を繋いだパスR1およびポートP13,P22を繋いだパスR2が存在することを検出する。このようにして、情報処理装置100は、サブネット内にL2ループ状態が発生していても、物理的な結線情報を取得できる。
ところで、情報処理装置100は、L2ループ状態が発生している他のシステムにおいても、物理的な結線情報を取得できる。そこで、以下では情報処理装置100を他のシステムに用いる場合を例示する。
図20は、他のシステム例(その1)を示す図である。例えば、スイッチ200b,200c,200d,200eを含むサブネットを考える。情報処理装置100のIPアドレスおよびスイッチ200b,200c,200d,200eのIPアドレスは同一のネットワークアドレスに属している。
スイッチ200bは、ポートP31,P32,P33を有する。ポートP31のポート番号は“1”である。ポートP32のポート番号は“2”である。ポートP33のポート番号は“3”である。
スイッチ200cは、ポートP41,P42,P43を有する。ポートP41のポート番号は“1”である。ポートP42のポート番号は“2”である。ポートP43のポート番号は“3”である。
スイッチ200dは、ポートP51,P52,P53を有する。ポートP51のポート番号は“1”である。ポートP52のポート番号は“2”である。ポートP53のポート番号は“3”である。
スイッチ200eは、ポートP61,P62を有する。ポートP61のポート番号は“1”である。ポートP62のポート番号は“2”である。
情報処理装置100は、ポートP31に接続されている。それ以外の各ポートの次のポート同士がケーブルを用いて接続されている。ポートP32,P41。ポートP33,P42。ポートP43,P51。ポートP52,P61。ポートP53,P62。
前述のように、情報処理装置100は、特開2006−352262号公報や特開2006−352263号公報に開示の方法を利用することで、各装置のMACアドレスの解決や、各装置との以下に示す通信を行える。
図21は、他のシステム例(その1)における処理例を示す図である。情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、当該フレームとして、例えばARP要求を送信してもよい(以下、同様)。すると、情報処理装置100は、スイッチ200bから取得したMACアドレステーブルに基づいて、ポートP32,P33を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP32,P33で学習されているからである。
情報処理装置100は、スイッチ200cから取得したMACアドレステーブルに基づいて、ポートP41,P42,P43を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP41,P42,P43で学習されているからである。
情報処理装置100は、スイッチ200dから取得したMACアドレステーブルに基づいて、ポートP51,P52,P53を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP51,P52,P53で学習されているからである。
情報処理装置100は、スイッチ200eから取得したMACアドレステーブルに基づいて、ポートP61,P62を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP61,P62で学習されているからである。
また、例えば情報処理装置100は、スイッチ200bのMACアドレステーブルから、MACアドレス“MP”がポートP31に対応付けられていることを検出する。情報処理装置100は、スイッチ200cのMACアドレステーブルから、MACアドレス“MP”がポートP42に対応付けられていることを検出する。情報処理装置100は、スイッチ200dのMACアドレステーブルから、MACアドレス“MP”がポートP51に対応付けられていることを検出する。情報処理装置100は、スイッチ200eのMACアドレステーブルから、MACアドレス“MP”がポートP61に対応付けられていることを検出する。
この場合、複数の被疑ポートをもち、被疑ポート以外のポートでMACアドレス“MP”を学習しているのは、スイッチ200bである。このため、情報処理装置100は、閉塞条件を満たすスイッチとして、スイッチ200bを特定する(ステップST11)。
図22は、他のシステム例(その1)における処理例(続き)を示す図である。情報処理装置100は、閉塞条件を満たすスイッチ200bにおいて、被疑ポートであるポートP33を閉塞する。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信することで、サブネット内のL2ループが解消されていないことを検出する。
そして、情報処理装置100は、スイッチ200bから取得したMACアドレステーブルに基づいて、ポートP32を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP32で学習されているからである。
情報処理装置100は、スイッチ200cから取得したMACアドレステーブルに基づいて、ポートP43を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP43で学習されているからである。
情報処理装置100は、スイッチ200dから取得したMACアドレステーブルに基づいて、ポートP52,P53を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP52,P53で学習されているからである。
情報処理装置100は、スイッチ200eから取得したMACアドレステーブルに基づいて、ポートP61,P62を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP61,P62で学習されているからである。
また、例えば情報処理装置100は、スイッチ200bのMACアドレステーブルから、MACアドレス“MP”がポートP31に対応付けられていることを検出する。情報処理装置100は、スイッチ200cのMACアドレステーブルから、MACアドレス“MP”がポートP41に対応付けられていることを検出する。情報処理装置100は、スイッチ200dのMACアドレステーブルから、MACアドレス“MP”がポートP51に対応付けられていることを検出する。情報処理装置100は、スイッチ200eのMACアドレステーブルから、MACアドレス“MP”がポートP61に対応付けられていることを検出する。
この場合、複数の被疑ポートをもち、被疑ポート以外のポートでMACアドレス“MP”を学習しているのは、スイッチ200dである。このため、情報処理装置100は、閉塞条件を満たすスイッチとして、スイッチ200dを特定する(ステップST12)。
図23は、他のシステム例(その1)における処理例(続き)を示す図である。情報処理装置100は、閉塞条件を満たすスイッチ200dにおいて、被疑ポートであるポートP53を閉塞する。その結果、ポートP33,P42,P53,P62の組が閉塞されたことになる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、ブロードキャストしたフレームが自身に戻ってこないことや、各スイッチから取得したMACアドレステーブルに基づき、被疑ポートを複数もつスイッチが存在しないことを確認することで、L2ループが解消されたことを検出する。
すると、情報処理装置100は、スイッチ200b,200c,200d,200eから部分結線情報としてMACアドレステーブルを収集する(ステップST13)。L2ループ解消の確認のために、各スイッチからMACアドレステーブルを既に取得しているならば、改めて収集しなくてもよい。このタイミングで収集された部分結線情報は、ポートP32,P41間の結線、ポートP43,P51間の結線およびポートP52,P61間の結線を示す情報を含む。
次に、情報処理装置100は、閉塞するポートの切替を行う。例えば、情報処理装置100は、ポートP33を開放する。情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。すると、情報処理装置100は、スイッチ200bから取得したMACアドレステーブルに基づいて、ポートP32,P33を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP32,P33で学習されるからである(ステップST14)。
このため、情報処理装置100は、ポートP33に対する切替先ポートとして、ポートP32を特定する。情報処理装置100は、ポートP32を閉塞する。その結果、ポートP32,P41,P53,P62の組が閉塞されたことになる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、ブロードキャストしたフレームが自身に戻ってこないことや、各スイッチから取得したMACアドレステーブルに基づき、被疑ポートを複数もつスイッチが存在しないことを確認することで、L2ループが解消されたことを検出する。
すると、情報処理装置100は、スイッチ200b,200c,200d,200eから部分結線情報としてMACアドレステーブルを収集する(ステップST15)。L2ループ解消の確認のために、各スイッチからMACアドレステーブルを既に取得しているならば、改めて収集しなくてもよい。このタイミングで収集された部分結線情報は、ポートP33,P42間の結線、ポートP43,P51間の結線およびポートP52,P61間の結線を示す情報を含む。
図24は、他のシステム例(その1)における処理例(続き)を示す図である。情報処理装置100は、閉塞するポートの切替を行う。情報処理装置100は、ポートP53を開放する。情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。すると、情報処理装置100は、スイッチ200dから取得したMACアドレステーブルに基づいて、ポートP52,P53を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP52,P53で学習されるからである(ステップST16)。
このため、情報処理装置100は、ポートP53に対する切替先ポートとして、ポートP52を特定する。情報処理装置100は、ポートP52を閉塞する。その結果、ポートP32,P41,P52,P61の組が閉塞されたことになる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、ブロードキャストしたフレームが自身に戻ってこないことや、各スイッチから取得したMACアドレステーブルに基づき、被疑ポートを複数もつスイッチが存在しないことを確認することで、L2ループが解消されたことを検出する。
すると、情報処理装置100は、スイッチ200b,200c,200d,200eから部分結線情報としてMACアドレステーブルを収集する(ステップST17)。L2ループ解消の確認のために、各スイッチからMACアドレステーブルを既に取得しているならば、改めて収集しなくてもよい。このタイミングで収集された部分結線情報は、ポートP33,P42間の結線、ポートP43,P51間の結線およびポートP53,P62間の結線を示す情報を含む。この時点で、切替候補となるポートに対する切替を全て行ったことになるので、情報処理装置100は、部分結線情報の収集を終了する。
情報処理装置100は、ステップST13,ST15,ST17で収集された部分結線情報をマージすることで、スイッチ200b,200c,200d,200eの間の全ての物理結線の情報を生成する。なお、ステップST16,ST17を先に実行した後に、ステップST14,ST15を実行してもよい。
図25は、他のシステム例(その2)を示す図である。例えば、スイッチ200f,200g,200h,200i,200j,200kを含むサブネットを考える。情報処理装置100のIPアドレスおよびスイッチ200f,200g,200h,200i,200j,200kのIPアドレスは同一のネットワークアドレスに属している。
スイッチ200fは、ポートP71を有する。ポートP71のポート番号は“1”である。
スイッチ200gは、ポートP81,P82,P83を有する。ポートP81のポート番号は“1”である。ポートP82のポート番号は“2”である。ポートP83のポート番号は“3”である。
スイッチ200hは、ポートP91,P92,P93を有する。ポートP91のポート番号は“1”である。ポートP92のポート番号は“2”である。ポートP93のポート番号は“3”である。
スイッチ200iは、ポートP101,P102,P103を有する。ポートP101のポート番号は“1”である。ポートP102のポート番号は“2”である。ポートP103のポート番号は“3”である。
スイッチ200jは、ポートP111,P112,P113を有する。ポートP111のポート番号は“1”である。ポートP112のポート番号は“2”である。ポートP113のポート番号は“3”である。
スイッチ200kは、ポートP121,P122を有する。ポートP121のポート番号は“1”である。ポートP122のポート番号は“2”である。
情報処理装置100は、ポートP103に接続されている。それ以外の各ポートの次のポート同士がケーブルを用いて接続されている。ポートP71,P81。ポートP82,P91。ポートP83,P92。ポートP93,P101。ポートP102,P111。ポートP112,P121。ポートP113,P122。
ここで、本接続例のように結線状況が複雑である場合には、MACアドレスの解決やMACアドレステーブルの収集を、サブネット内の全てのスイッチに対して1度に行えないことが考えられる。この場合、情報処理装置100は、MACアドレスを解決でき、MACアドレステーブルの収集を行えた範囲内で、ポートの閉塞対象とするスイッチの決定やポートの閉塞を行う。MACアドレスを解決できたスイッチであれば、特開2006−352263号公報に開示の方法によって、MACアドレステーブルも取得可能である。
そして、情報処理装置100は、ポートの閉塞を行うたびに、MACアドレスを解決できていないIPアドレスについてMACアドレスの解決を試みる。情報処理装置100は、解決できたMACアドレスのスイッチについて、MACアドレステーブルを収集する。その上で、再び、ポートの閉塞対象とするスイッチの決定やポートの閉塞を行う。このように、情報処理装置100は、スイッチの探索範囲を徐々に広げることで、複雑な結線状況の場合にも適正に結線情報を得ることができる。この場合、情報処理装置100は、新たにスイッチを発見するたびに、発見したスイッチの情報を、ポート状態管理テーブル111、ホストテーブル112およびポートテーブル113に追加する。次に、図25の接続例における処理を例示する。
図26は、他のシステム例(その2)における処理例を示す図である。情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、当該フレームとして、例えばARP要求を送信してもよい(以下、同様)。この場合、情報処理装置100は、スイッチ200iのMACアドレスを解決し得るが、それ以外のスイッチのMACアドレスを解決することは困難である。情報処理装置100は、スイッチ200iのIPアドレスに対応するMACアドレスを解決した上で、スイッチ200iのIPアドレスに対してSNMP要求を送信し、スイッチ200iのMACアドレステーブルを取得し得る。
情報処理装置100は、スイッチ200iから取得したMACアドレステーブルに基づいて、ポートP101,P102を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP101,P102で学習されているからである。また、情報処理装置100は、スイッチ200iのMACアドレステーブルから、ポートP103で情報処理装置100のMACアドレスが学習されていることを検出する。
この場合、スイッチ200iは、複数の被疑ポートをもち、被疑ポート以外のポートでMACアドレス“MP”を学習している。このため、情報処理装置100は、閉塞条件を満たすスイッチとして、スイッチ200iを特定する(ステップST21)。
なお、図26では、この状態において、スイッチ200f,200g,200h,200j,200kそれぞれが保持するMACアドレステーブルの例も図示している。また、図26では、被疑ポートに相当するポートを網掛けで図示している。情報処理装置100は、ポートP101,P102を被疑ポートとして認識している。ただし、情報処理装置100は、他のスイッチからはMACアドレステーブルを取得していないので、ポートP101,P102以外のポートを被疑ポートとして認識しているわけではない。
図27は、他のシステム例(その2)における処理例(続き)を示す図である。情報処理装置100は、閉塞条件を満たすスイッチ200iにおいて、被疑ポートであるポートP102を閉塞する(ステップST22)。すると、情報処理装置100は、特開2006−352262号公報や特開2006−352263号公報の方法を用いて、スイッチ200f,200g,200hのMACアドレスの解決およびMACアドレステーブルの収集が可能となる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信することで、サブネット内のL2ループが解消されていないことを検出する。
そして、情報処理装置100は、スイッチ200fから取得したMACアドレステーブルに基づいて、ポートP71を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP71で学習されているからである。
情報処理装置100は、スイッチ200gから取得したMACアドレステーブルに基づいて、ポートP82,P83を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP82,P83で学習されているからである。
情報処理装置100は、スイッチ200hから取得したMACアドレステーブルに基づいて、ポートP91,P92を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP91,P92で学習されているからである。
情報処理装置100は、スイッチ200iから取得したMACアドレステーブルに基づいて、ポートP101を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP101で学習されているからである。
また、例えば情報処理装置100は、スイッチ200fのMACアドレステーブルから、MACアドレス“MP”がポートP71に対応付けられていることを検出する。情報処理装置100は、スイッチ200gのMACアドレステーブルから、MACアドレス“MP”がポートP82に対応付けられていることを検出する。情報処理装置100は、スイッチ200hのMACアドレステーブルから、MACアドレス“MP”がポートP93に対応付けられていることを検出する。情報処理装置100は、スイッチ200iのMACアドレステーブルから、MACアドレス“MP”がポートP103に対応付けられていることを検出する。
この場合、複数の被疑ポートをもち、被疑ポート以外のポートでMACアドレス“MP”を学習しているのは、スイッチ200hである。このため、情報処理装置100は、閉塞条件を満たすスイッチとして、スイッチ200hを特定する(ステップST23)。
図28は、他のシステム例(その2)における処理例(続き)を示す図である。情報処理装置100は、閉塞条件を満たすスイッチ200hにおいて、被疑ポートであるポートP92を閉塞する。その結果、ポートP83,P92,P102,P111の組が閉塞されたことになる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、ブロードキャストしたフレームが自身に戻ってこないことや、各スイッチから取得したMACアドレステーブルに基づき、被疑ポートを複数もつスイッチが存在しないことを確認することで、L2ループが解消されたことを検出する。
すると、情報処理装置100は、スイッチ200f,200g,200h,200iから部分結線情報としてMACアドレステーブルを収集する(ステップST24)。L2ループ解消の確認のために、各スイッチからMACアドレステーブルを既に取得しているならば、改めて収集しなくてもよい。このタイミングで収集された部分結線情報は、ポートP71,P81間の結線、ポートP82,P91間の結線およびポートP93,P101間の結線を示す情報を含む。
次に、情報処理装置100は、閉塞するポートの切替を行う。例えば、情報処理装置100は、ポートP102を開放する。ポートP102と接続するポートP111も開放されることになる(ステップST25)。その結果、情報処理装置100は、スイッチ200j,200kのMACアドレスの解決およびMACアドレステーブルの収集が可能となる。
図29は、他のシステム例(その2)における処理例(続き)を示す図である。情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、スイッチ200iのMACアドレステーブルから、開放したポートP102がスイッチ200iにおける唯一の被疑ポートとなったことを検出する。すると、情報処理装置100は、L2ループの解消処理を行う。
すなわち、情報処理装置100は、スイッチ200fから取得したMACアドレステーブルに基づいて、ポートP71を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP71で学習されているからである。
情報処理装置100は、スイッチ200gから取得したMACアドレステーブルに基づいて、ポートP82を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP82で学習されているからである。
情報処理装置100は、スイッチ200hから取得したMACアドレステーブルに基づいて、ポートP93を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP93で学習されているからである。
情報処理装置100は、スイッチ200iから取得したMACアドレステーブルに基づいて、ポートP102を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP102で学習されているからである。
情報処理装置100は、スイッチ200jから取得したMACアドレステーブルに基づいて、ポートP112,P113を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP112,P113で学習されているからである。
情報処理装置100は、スイッチ200kから取得したMACアドレステーブルに基づいて、ポートP121,P122を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP121,P122で学習されているからである。
また、例えば情報処理装置100は、スイッチ200fのMACアドレステーブルから、MACアドレス“MP”がポートP71に対応付けられていることを検出する。情報処理装置100は、スイッチ200gのMACアドレステーブルから、MACアドレス“MP”がポートP82に対応付けられていることを検出する。情報処理装置100は、スイッチ200hのMACアドレステーブルから、MACアドレス“MP”がポートP93に対応付けられていることを検出する。情報処理装置100は、スイッチ200iのMACアドレステーブルから、MACアドレス“MP”がポートP103に対応付けられていることを検出する。情報処理装置100は、スイッチ200jのMACアドレステーブルから、MACアドレス“MP”がポートP111に対応付けられていることを検出する。情報処理装置100は、スイッチ200kのMACアドレステーブルから、MACアドレス“MP”がポートP121に対応付けられていることを検出する。
この場合、複数の被疑ポートをもち、被疑ポート以外のポートでMACアドレス“MP”を学習しているのは、スイッチ200jである。このため、情報処理装置100は、閉塞条件を満たすスイッチとして、スイッチ200jを特定する(ステップST26)。
情報処理装置100は、閉塞条件を満たすスイッチ200jにおいて、被疑ポートであるポートP113を閉塞する。その結果、ポートP83,P92,P113,P122の組が閉塞されたことになる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、ブロードキャストしたフレームが自身に戻ってこないことや、各スイッチから取得したMACアドレステーブルに基づき、被疑ポートを複数もつスイッチが存在しないことを確認することで、L2ループが解消されたことを検出する。
すると、情報処理装置100は、スイッチ200f,200g,200h,200iから部分結線情報としてMACアドレステーブルを収集する(ステップST27)。L2ループ解消の確認のために、各スイッチからMACアドレステーブルを既に取得しているならば、改めて収集しなくてもよい。このタイミングで収集された部分結線情報は、ポートP71,P81間の結線、ポートP82,P91間の結線およびポートP93,P101間の結線、ポートP102,P111間の結線、ポートP112,P121間の結線を示す情報を含む。
図30は、他のシステム例(その2)における処理例(続き)を示す図である。情報処理装置100は、閉塞するポートの切替を行う。例えば、情報処理装置100は、ポートP92を開放する。情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。すると、情報処理装置100は、スイッチ200hから取得したMACアドレステーブルに基づいて、ポートP91,P92を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP91,P92で学習されているからである(ステップST28)。
このため、情報処理装置100は、ポートP92に対する切替先ポートとして、ポートP91を特定する。情報処理装置100は、ポートP91を閉塞する。その結果、ポートP82,P91,P113,P122の組が閉塞されたことになる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、ブロードキャストしたフレームが自身に戻ってこないことや、各スイッチから取得したMACアドレステーブルに基づき、被疑ポートを複数もつスイッチが存在しないことを確認することで、L2ループが解消されたことを検出する。
すると、情報処理装置100は、スイッチ200f,200g,200h,200i,200j,200kから部分結線情報としてMACアドレステーブルを収集する(ステップST29)。L2ループ解消の確認のために、各スイッチからMACアドレステーブルを既に取得しているならば、改めて収集しなくてもよい。このタイミングで収集された部分結線情報は、ポートP71,P81間の結線、ポートP83,P92間の結線およびポートP93,P101間の結線、ポートP102,P111間の結線およびポートP112,121間の結線を示す情報を含む。
図31は、他のシステム例(その2)における処理例(続き)を示す図である。情報処理装置100は、閉塞するポートの切替を行う。例えば、情報処理装置100は、ポートP113を開放する。情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。すると、情報処理装置100は、スイッチ200jから取得したMACアドレステーブルに基づいて、ポートP112,P113を被疑ポートと検出する。ダミーMACアドレス“MA”、“MB”、“MC”、“MD”が、ポートP112,P113で学習されているからである(ステップST30)。
このため、情報処理装置100は、ポートP113に対する切替先ポートとして、ポートP112を特定する。情報処理装置100は、ポートP112を閉塞する。その結果、ポートP82,P91,P112,P121の組が閉塞されたことになる。
情報処理装置100は、ダミーMACアドレス“MA”、“MB”、“MC”、“MD”を送信元とするフレームをブロードキャストで複数回送信する。情報処理装置100は、ブロードキャストしたフレームが自身に戻ってこないことや、各スイッチから取得したMACアドレステーブルに基づき、被疑ポートを複数もつスイッチが存在しないことを確認することで、L2ループが解消されたことを検出する。
すると、情報処理装置100は、スイッチ200f,200g,200h,200i,200j,200kから部分結線情報としてMACアドレステーブルを収集する(ステップST31)。L2ループ解消の確認のために、各スイッチからMACアドレステーブルを既に取得しているならば、改めて収集しなくてもよい。このタイミングで収集された部分結線情報は、ポートP71,P81間の結線、ポートP83,P92間の結線およびポートP93,P101間の結線、ポートP102,P111間の結線およびポートP113,P122間の結線を示す情報を含む。
情報処理装置100は、ステップST24,ST27,ST29,ST31で収集された部分結線情報をマージすることで、スイッチ200b,200c,200d,200eの間の全ての物理結線の情報を生成する。
なお、ステップST25で示した閉塞対象ポートの切替の前に、ステップST28,ST29で示した閉塞対象ポートの切替を行ってもよい。あるいは、ステップST28,ST29で示した閉塞対象ポートの切替の前に、ステップST30,ST31で示した閉塞対象ポートの切替を行ってもよい。
ここで、以下では、特開2006−352263号公報の方法を用いた、情報処理装置100とスイッチとの通信例について補足する。以下に示す図32〜図33では、情報処理装置100およびスイッチ200,200a,200zを含むシステム(各装置は同一サブネットに属する)を例示し、情報処理装置100がスイッチ200zと通信する例を説明する。
図32は、MACアドレス解決の例を示す図である。図32に示す方法は、特開2006−352263号公報の第6実施例に基づくものである。情報処理装置100はスイッチ200に接続されている。スイッチ200,200aの間には2つの物理パスが存在している。スイッチ200zは、単一の物理パスでスイッチ200aに接続されている。
まず、情報処理装置100は、スイッチ200zのIPアドレス(“IPz”とする)を問い合わせ先に指定したARP要求(図32では太い点線で図示している)を送信する。ARP要求の宛先MACアドレスは、ブロードキャストアドレス“BC”である。ARP要求の送信元MACアドレスは、情報処理装置100のMACアドレス“MP”である。すると、ARP要求は、スイッチ200,200aの間をループする。ARP要求がループするので、スイッチ200,200aにより情報処理装置100のMACアドレス“MP”が誤学習される。
また、スイッチ200zは、当該ARP要求を頻繁に受信する。スイッチ200zのMACアドレスは“MZ”である。スイッチ200zは、受信のたびにARP応答を送信する(図32では細い点線で図示している)。ARP応答の宛先MACアドレスは“MP”、送信元MACアドレスは“MZ”である。しかし、情報処理装置100のMACアドレス“MP”は、スイッチ200,200aにより誤学習されているので、ARP応答も誤学習された経路に沿ってスイッチ200,200aの間をループする(ステップST101)。
通常、図32で示されるように、ブロードキャストフレームが回っている方向と逆方向でユニキャストフレームがループする。情報処理装置100は、サブネット内に実在しないMACアドレス“MX”が送信元MACアドレスであるブロードキャストフレーム(図32では太い実線で図示している)を大量に送信することで、ARP要求をループから消滅させる。すると、スイッチ200,200aによりループに沿って、MACアドレス“MX”が学習される(ステップST102)。
次に、例えば、宛先MACアドレスが“MX”であり、送信元MACアドレスが情報処理装置100のMACアドレス“MP”である任意データ(図32では細い実線で図示している)を、情報処理装置100が送信する。すると、スイッチ200,200aにより、ステップST102で形成されたループに向かって、情報処理装置100のMACアドレス“MP”が学習され、ループから情報処理装置100へ抜ける経路が一時的に確立される(ステップST103)。
すると、スイッチ200,200a間をループしていたARP応答が情報処理装置100に到達する(ステップST104)。こうして、情報処理装置100は、IPアドレス“IPz”に対応するMACアドレス“MZ”を解決し得る。
図33は、SNMP通信の例を示す図である。図33に示す方法は、特開2006−352263号公報の第3実施例に基づくものである。図33でも図32と同じサブネットを想定する。
情報処理装置100は、情報処理装置100およびスイッチ200zのMACアドレス以外のMACアドレスを送信元としたフレームを連続してブロードキャストで送信する。これにより、通信させたい情報処理装置100およびスイッチ200zのMACアドレスを送信元MACアドレスとするフレームのループを消滅させる。
その上で、情報処理装置100は、ARP要求(図33では太い実線で図示している)を送信する。ARP要求の問い合わせ先IPアドレスは、スイッチ200zのIPアドレス“IPz”である。ARP要求の宛先MACアドレスはブロードキャストアドレス“BC”である。ARP要求の送信元IPアドレスおよび送信元MACアドレスは、サブネットに存在しないIPアドレス“IPx”(図示を省略している)およびMACアドレス“MX”である。当該ARP要求は、スイッチ200,200a間でループされる。また、スイッチ200zは、当該ARP要求を頻繁に受信する。
スイッチ200zは、ARP要求を受信するたびに、宛先MACアドレスを“MX”、送信元MACアドレスをスイッチ200zのMACアドレス“MZ”としたARP応答(図33では太い点線で図示している)を送信する。
MACアドレス“MX”は、ループ内のスイッチ200,200aにおいて誤学習されているため、結果的に、ループに向かってARP応答が中継され、中継路に沿って各スイッチでスイッチ200zのMACアドレス“MZ”が正常に学習される(ステップST111)。
この状態で、宛先MACアドレスが“MZ”、送信元MACアドレスが“MP”であるSNMP要求(図33では細い実線で図示している)を情報処理装置100から送ることで、当該SNMP要求がスイッチ200zに到達する(ステップST112)。
そして、スイッチ200zは、SNMP要求に対してSNMP応答(図33では細い点線で図示している)を送信する。SNMP要求の送信経路に沿って、情報処理装置100のMACアドレス“MP”も各スイッチで学習されるので、スイッチ200zのSNMP応答は、当該経路を戻るようにして、情報処理装置100に到達する(ステップST113)。このようにSNMP通信を用いて、情報処理装置100は、スイッチ200zからMACアドレステーブルを収集したり、スイッチ200zにポート閉塞を指示したりすることができる。
ステップST113において、スイッチ200zからのSNMP応答が、スイッチ200,200a間でループし続けることも考えられる(例えば、SNMP要求がスイッチ200,200a間を1回以上ループしてからスイッチ200zに到達したとき)。その場合(例えば、一定時間経っても情報処理装置100でSNMP応答を受信しない場合)は、図32のステップST103と同様に、例えば、送信元MACアドレスが情報処理装置100のMACアドレス“MP”であり、宛先MACアドレスが“MX”である任意のフレームを、情報処理装置100が送信してもよい。すると、ステップST103の場合と同様に、ループから情報処理装置100へ抜ける経路が一時的に確立され、SNMP応答が情報処理装置100に到達する。
なお、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。
例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。