(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023128353
(43)【公開日】2023-09-14
(54)【発明の名称】ネットワーク管理サーバ、トポロジ検出プログラム及びトポロジ検出方法
(51)【国際特許分類】
H04L 41/12 20220101AFI20230907BHJP
【FI】
H04L41/12
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022032648
(22)【出願日】2022-03-03
(71)【出願人】
【識別番号】504411166
【氏名又は名称】アラクサラネットワークス株式会社
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】山尾 宏征
(72)【発明者】
【氏名】河野 智彦
(57)【要約】
【課題】大規模なネットワークシステムにおいて単一のネットワーク管理サーバを用いてネットワークのトポロジを検出する。
【解決手段】ネットワーク管理サーバは、ネットワーク内のスイッチから収集したFDB情報に基づいてネットワークに存在する端末とスイッチの組み合わせについて経路上に存在するスイッチのポートを特定することによりネットワークのトポロジを検出する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
少なくとも一つの端末と複数のスイッチを含むネットワークに接続されるネットワーク管理サーバであって、
前記複数のスイッチの一のスイッチは、
前記複数のスイッチの他のスイッチと前記端末の少なくとも一つに接続されるポートを含み、
前記ネットワーク管理サーバは、前記ネットワーク内の前記端末と前記スイッチに関する接続状況を表すトポロジ情報を検出するトポロジ検出部を含み、
前記トポロジ検出部は、
前記スイッチからFDB情報を収集し、
前記FDB情報に学習されている前記端末又は前記スイッチのMACアドレスを抽出し、
前記MACアドレスごとに前記MACアドレスを学習した前記ポートの識別情報を集約した学習ポート情報を前記FDB情報から生成し、
前記MACアドレスのそれぞれについて、前記端末が持つ端末MACアドレスであるか前記スイッチが持つスイッチMACアドレスであるかを特定し、
前記スイッチMACアドレスを持つ前記スイッチを一方とし、前記端末MACアドレスを持つ前記端末を他方とする前記スイッチと前記端末の組み合わせを生成し、
前記組み合わせごとに、一方の前記スイッチから他方の前記端末に至る経路上に存在する前記ポートを前記学習ポート情報から経路ポート情報として特定し、
前記経路ポート情報に基づいて、前記スイッチの接続関係を特定して前記トポロジ情報を検出することを特徴とするネットワーク管理サーバ。
【請求項2】
前記トポロジ検出部は、
前記FDB情報に基づいて、前記MACアドレスの学習数であるMACアドレス学習数を生成し、
前記経路ポート情報と前記MACアドレス学習数に基づいて、前記スイッチと前記端末の組み合わせごとに、前記経路に存在する前記スイッチの一覧を前記経路上での順序に従って並べた経由装置情報を生成し、
前記経由装置情報と前記学習ポート情報に基づいて、前記スイッチと前記端末の組み合わせごとに、前記一のスイッチと前記他のスイッチの前記ポートの接続関係を示す区間情報を生成し、
前記区間情報に基づいて、前記ネットワーク内に存在する前記スイッチの相互接続関係を集約した隣接情報を生成し、
前記隣接情報に基づいて、前記トポロジ情報を検出することを特徴とする請求項1に記載のネットワーク管理サーバ。
【請求項3】
前記トポロジ検出部は、
前記スイッチの再起動により前記スイッチ内の前記FDB情報の学習状況に過渡的な状態が発生した場合に、前記隣接情報の結果が安定するまで前記トポロジ情報を検出する処理を繰り返すことを特徴とする請求項2に記載のネットワーク管理サーバ。
【請求項4】
前記ネットワーク管理サーバは、
前回隣接情報を格納する前回隣接情報格納テーブルと、
収束カウンタと、
前記収束カウンタの初期値を格納する収束カウンタ初期値格納テーブルと、を更に有し、
前記トポロジ検出部は、
前記隣接情報を前記前回隣接情報格納テーブルに一時退避して前記前回隣接情報を生成し、
前記収束カウンタ初期値を前記収束カウンタにコピーして前記収束カウンタの値を初期化し、
前記隣接情報と前記前回隣接情報とを比較し、
前記比較の結果、前記隣接情報と前記前回隣接情報が一致していなければ、前記トポロジ情報を検出する処理を繰り返し、
前記比較の結果、前記隣接情報と前記前回隣接情報が一致していれば、前記収束カウンタの値から1を減算し、
前記収束カウンタの値を判定し、
前記判定の結果、前記収束カウンタの値が0でない場合、前記トポロジを検出する処理を繰り返し、
前記判定の結果、前記収束カウンタの値が0である場合、前記トポロジを検出する処理を終了することを特徴とする請求項3に記載のネットワーク管理サーバ。
【請求項5】
前記トポロジ検出部は、
前記収束カウンタ初期値を、
再起動された前記スイッチで前記FDB情報を再学習するのに要する時間を考慮して、前記隣接情報の結果が安定するまでに要する前記トポロジ情報を検出する処理の繰り返し回数として設定することを特徴とする請求項4に記載のネットワーク管理サーバ。
【請求項6】
複数の前記ネットワークが単一の前記ネットワーク管理サーバに接続されており、
前記トポロジ検出部は、
複数の前記ネットワークに関する前記トポロジ情報を検出することを特徴とする請求項1に記載のネットワーク管理サーバ。
【請求項7】
少なくとも一つの端末と複数のスイッチを含むネットワークに接続されるネットワーク管理サーバに格納され、前記ネットワーク内の前記端末と前記スイッチに関する接続状況を表すトポロジ情報を検出するトポロジ検出プログラムであって、
前記複数のスイッチの一のスイッチは、
前記複数のスイッチの他のスイッチと前記端末の少なくとも一つに接続されるポートを含み、
前記トポロジ検出プログラムは、
前記スイッチからFDB情報を収集し、
前記FDB情報に学習されている前記端末又は前記スイッチのMACアドレスを抽出し、
前記MACアドレス毎に前記MACアドレスを学習した前記ポートの識別情報を集約した学習ポート情報を前記FDB情報から生成し、
前記MACアドレスのそれぞれについて、前記端末が持つ端末MACアドレスであるか前記スイッチが持つスイッチMACアドレスであるかを特定し、
前記スイッチMACアドレスを持つ前記スイッチを一方とし、前記端末MACアドレスを持つ前記端末を他方とする前記スイッチと前記端末の組み合わせを生成し、
前記組み合わせごとに、一方の前記スイッチから他方の前記端末に至る経路上に存在する前記ポートを前記学習ポート情報から経路ポート情報として特定し、
前記経路ポート情報に基づいて前記スイッチの接続関係を特定して前記トポロジ情報を検出する処理を、
計算機が実行するように構成されたことを特徴とするトポロジ検出プログラム。
【請求項8】
前記トポロジ検出プログラムは、
前記FDB情報に基づいて、前記MACアドレスの学習数であるMACアドレス学習数を生成し、
前記経路ポート情報と前記MACアドレス学習数に基づいて、前記スイッチと前記端末の組み合わせごとに、前記経路に存在する前記スイッチの一覧を前記経路上での順序に従って並べた経由装置情報を生成し、
前記経由装置情報と前記学習ポート情報に基づいて、前記スイッチと前記端末の組み合わせごとに、前記一のスイッチと前記他のスイッチの前記ポートの接続関係を示す区間情報を生成し、
前記区間情報に基づいて、前記ネットワーク内に存在する前記スイッチの相互接続関係を集約した隣接情報を生成し、
前記隣接情報に基づいて、前記トポロジ情報を検出することを特徴とする請求項7に記載のトポロジ検出プログラム。
【請求項9】
前記トポロジ検出トポロジ検出プログラムは、
前記スイッチの再起動により前記スイッチ内の前記FDB情報の学習状況に過渡的な状態が発生した場合に、前記隣接情報の結果が安定するまで前記トポロジ情報を検出する処理を繰り返すことを特徴とする請求項8に記載のトポロジ検出プログラム。
【請求項10】
少なくとも一つの端末と複数のスイッチを含むネットワークに接続されるネットワーク管理サーバにおいて、前記ネットワーク内の前記端末と前記スイッチに関する接続状況を表すトポロジ情報を検出するトポロジ検出方法であって、
前記複数のスイッチの一のスイッチは、
前記複数のスイッチの他のスイッチと前記端末の少なくとも一つに接続されるポートを含み、
前記トポロジ検出方法は、
前記スイッチからFDB情報を収集するステップと、
前記FDB情報に学習されている前記端末又は前記スイッチのMACアドレスを抽出するステップと、
前記MACアドレス毎に前記MACアドレスを学習した前記ポートの識別情報を集約した学習ポート情報を前記FDB情報から生成するステップと、
前記MACアドレスのそれぞれについて、前記端末が持つ端末MACアドレスであるか前記スイッチが持つスイッチMACアドレスであるかを特定するステップと、
前記スイッチMACアドレスを持つ前記スイッチを一方とし、前記端末MACアドレスを持つ前記端末を他方とする前記スイッチと前記端末の組み合わせを生成するステップと、
前記組み合わせごとに、一方の前記スイッチから他方の前記端末に至る経路上に存在する前記ポートを前記学習ポート情報から経路ポート情報として特定するステップと、
前記経路ポート情報に基づいて前記スイッチの接続関係を特定して前記トポロジ情報を検出するステップと、
を有することを特徴とするトポロジ検出方法。
【請求項11】
前記FDB情報に基づいて、前記MACアドレスの学習数であるMACアドレス学習数を生成するステップと、
前記経路ポート情報と前記MACアドレス学習数に基づいて、前記スイッチと前記端末の組み合わせごとに、前記経路に存在する前記スイッチの一覧を前記経路上での順序に従って並べた経由装置情報を生成するステップと、
前記経由装置情報と前記学習ポート情報に基づいて、前記スイッチと前記端末の組み合わせごとに、前記一のスイッチと前記他のスイッチの前記ポートの接続関係を示す区間情報を生成するステップと、
前記区間情報に基づいて、前記ネットワーク内に存在する前記スイッチの相互接続関係を集約した隣接情報を生成するステップと、
前記隣接情報に基づいて、前記トポロジ情報を検出するステップと、
を更に有することを特徴とする請求項10に記載のトポロジ検出方法。
【請求項12】
前記スイッチの再起動により前記スイッチ内の前記FDB情報の学習状況に過渡的な状態が発生した場合に、前記隣接情報の結果が安定するまで前記トポロジ情報を検出するステップを繰り返すステップと、
を更に有することを特徴とする請求項11に記載のトポロジ検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク管理サーバ、トポロジ検出プログラム及びトポロジ検出方法に関する。
【背景技術】
【0002】
ネットワーク運用者はネットワークのトポロジ図を用いてネットワークの状態を理解する。しかしネットワークの大規模化によりトポロジ図を手動で作成する労力が膨大となる上、最新の状態を維持し続けることは更に労力が必要となる。そのためネットワーク管理サーバなどの機能でネットワーク内の装置の接続状況を表すトポロジ図を自動作成することが求められている。
【0003】
ネットワーク管理サーバではトポロジ図を描くためにネットワーク装置がどの装置と隣接しているかを把握する必要がある。そのために、例えばLLDP(Link Layer Discovery Protocol)などのプロトコルで隣接装置から受信した情報や、ユーザが入力した隣接関係を使用している。しかし、特にマルチベンダー環境においては、LLDPのような隣接関係を把握するためのプロトコルのサポート規格が異なっていて利用できない、あるいは、ユーザが手動で隣接関係を入力しようにもネットワーク装置を増設した箇所を忘れて入力が漏れるといった人為ミスが発生する問題があり、隣接関係を検出するための特別なプロトコルに依存することなく、自動でネットワーク装置間の隣接関係を検出する技術が求められている。
【0004】
このような技術の一例として例えば特許文献1に記載の技術がある。この技術は、LLDPのような隣接関係を把握するためのプロトコルは使用せずに、レイヤ2ネットワーク内の各レイヤ2スイッチにおけるネットワーク監視端末とレイヤ2スイッチのMAC(Media Access Control)アドレスの学習状況に基づいてレイヤ2ネットワークのトポロジを検出している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開番号 WO2006/118203
【発明の概要】
【発明が解決しようとする課題】
【0006】
一般にパケット中のMACアドレスはルータやレイヤ3スイッチなどの装置を経由すると書き換えられてしまう。特許文献1記載の技術は、ネットワーク監視端末のMACアドレスの学習状況も利用しているため、ネットワーク監視端末はトポロジ検出の対象とするレイヤ2ネットワークに直接接続されていることが必要となる。
【0007】
そのため、レイヤ3スイッチを介して複数のレイヤ2ネットワークを組み合わせたような大規模なネットワークに適用しようとした場合、各レイヤ2ネットワークにネットワーク監視端末を用意しなければならないという課題がある。
【0008】
本発明の目的は、大規模なネットワークシステムにおいて単一のネットワーク管理サーバを用いてネットワークのトポロジを検出することにある。
【課題を解決するための手段】
【0009】
本発明の一態様のネットワーク管理サーバは、少なくとも一つの端末と複数のスイッチを含むネットワークに接続されるネットワーク管理サーバであって、前記複数のスイッチの一のスイッチは、前記複数のスイッチの他のスイッチと前記端末の少なくとも一つに接続されるポートを含み、前記ネットワーク管理サーバは、前記ネットワーク内の前記端末と前記スイッチに関する接続状況を表すトポロジ情報を検出するトポロジ検出部を含み、前記トポロジ検出部は、前記スイッチからFDB情報を収集し、前記FDB情報に学習されている前記端末又は前記スイッチのMACアドレスを抽出し、前記MACアドレスごとに前記MACアドレスを学習した前記ポートの識別情報を集約した学習ポート情報を前記FDB情報から生成し、前記MACアドレスのそれぞれについて、前記端末が持つ端末MACアドレスであるか前記スイッチが持つスイッチMACアドレスであるかを特定し、前記スイッチMACアドレスを持つ前記スイッチを一方とし、前記端末MACアドレスを持つ前記端末を他方とする前記スイッチと前記端末の組み合わせを生成し、前記組み合わせごとに、一方の前記スイッチから他方の前記端末に至る経路上に存在する前記ポートを前記学習ポート情報から経路ポート情報として特定し、前記経路ポート情報に基づいて、前記スイッチの接続関係を特定して前記トポロジ情報を検出することを特徴とする。
【発明の効果】
【0010】
本発明の一態様によれば、大規模なネットワークシステムにおいて単一のネットワーク管理サーバを用いてネットワークのトポロジを検出することができる。
【図面の簡単な説明】
【0011】
【
図1】実施例1のネットワークシステム構成例を示す図である。
【
図2】実施例1のネットワーク管理サーバの構成例を示す図である。
【
図3】実施例1のレイヤ3スイッチの構成例を示す図である。
【
図4】実施例1のレイヤ2スイッチの構成例を示す図である。
【
図5】実施例1におけるネットワーク管理サーバによるトポロジ検出動作の一例を説明するフローチャートである。
【
図6】実施例1のアクセス情報の内容の一例を示す図である。
【
図7】実施例1のFDB収集情報の内容の一例を示す図である。
【
図8】実施例1の学習ポート集合の内容の一例を示す図である。
【
図9】実施例1の経由ポート集合の内容の一例を示す図である。
【
図10】実施例1のMACアドレス学習数の内容の一例を示す図である。
【
図11】実施例1の経由装置情報の内容の一例を示す図である。
【
図12】実施例1の区間情報の内容の一例を示す図である。
【
図13】実施例1の隣接情報の内容の一例を示す図である。
【
図14】実施例2においてレイヤ2スイッチの一つが学習済みMACアドレスをクリアした直後に収集したときのFDB収集情報の内容の一例を示す図である。
【
図15】実施例2においてレイヤ2スイッチの一つが学習済みMACアドレスをクリアした直後に生成されたFDB収集情報に基づいて作成した区間情報の内容の一例を示す図である。
【
図16】実施例2のネットワーク管理サーバの構成例を示す図である。
【
図17】実施例2におけるネットワーク管理サーバによるトポロジ検出動作の一例を説明するフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明の実施例について図面を用いて説明する。
【実施例0013】
図1は、本発明によりレイヤ2ネットワークのトポロジ検出の対象とするネットワークシステムの構成の一例を示したものである。
このネットワークシステムは、一つのレイヤ3スイッチ110を中心に三つのレイヤ2ネットワークが接続された構成となっている。複数のレイヤ2ネットワークにはそれぞれ異なるVLAN(Virtual Local Area Network) IDを割り当て、ネットワークシステム内でレイヤ2ネットワークの識別が可能になっているものとする。
図1の例では、三つのレイヤ2ネットワークにそれぞれ10、20、30のVLAN IDを割り当て、各レイヤ2ネットワークをそれぞれVLAN10、VLAN20、VLAN30と表記している。以降の説明では、レイヤ2ネットワークをVLANと表現する場合がある。
【0014】
VLAN20は、二つのレイヤ2スイッチ120-1と120-2、および三つの端末130-1、130-2、130-3を含んでいる。端末とは、例えばユーザが直接使用するPCなどの端末デバイス、あるいは何らかのネットワークサービスを提供するサーバなどである。
【0015】
VLAN30は、一つのレイヤ2スイッチ120-3、および二つの端末130-4、130-5を含んでいる。
【0016】
VLAN10は、本発明によるレイヤ2ネットワークのトポロジ検出を行うネットワーク管理サーバ100を含んでいる。この例ではVLAN10に存在する装置はネットワーク管理サーバ100のみで、レイヤ3スイッチ110のポート111-1に直接接続されているが、さらに他の端末装置などがレイヤ2スイッチなどを経由して接続されていてもよい。
【0017】
なお、以降の説明で複数のレイヤ2スイッチおよび端末に関して、個々のレイヤ2スイッチおよび端末を区別して説明する場合は
図1に示した符号を用いて参照し、共通する説明を行う場合はレイヤ2スイッチ120および端末130という符号により参照する。
【0018】
また、以降の説明ではネットワークシステムを構成するレイヤ3スイッチ、レイヤ2スイッチ、端末などを総称してネットワーク装置と呼び、レイヤ3スイッチとレイヤ2スイッチを総称して単にスイッチと呼ぶ。
【0019】
また、
図1の中で各ネットワーク装置内に括弧書きで付されているN10、S10、U10等の記号は、そのネットワーク装置が持つMACアドレスを表している。
【0020】
なお、
図1の例ではネットワーク管理サーバ100はVLAN10内に接続されているが、ネットワークシステム内の各スイッチと通信して情報を収集できるところであればネットワーク内のどこに接続されていてもよい。
【0021】
以下、
図1の構成においてネットワーク管理サーバ100がレイヤ2ネットワークであるVLAN20とVLAN30のトポロジを検出する例を説明する。
【0022】
図2は、ネットワーク管理サーバ100の内部構成を示す図である。ネットワーク管理サーバ100は、演算をするためのCPU(Central Processing Unit)201、データやCPU201が実行するプログラムを格納するメモリ202、他のネットワーク装置に回線を介して接続するためのネットワークIF(インタフェース)203から構成される。
【0023】
メモリ202には、CPU201が実行するプログラムであるトポロジ検出部210、および、トポロジ検出部210を実行する過程で必要となるデータがいくつかのテーブルとして格納される。格納されるテーブルは、アクセス情報220、FDB(Forwarding DataBase)収集情報221、学習ポート集合222、経路ポート集合223、MACアドレス学習数224、経由装置情報225、区間情報226、隣接情報227である。各テーブルの構造と内容例については、
図5のフローチャートを用いて後述するトポロジ検出動作の説明の中で示す。
【0024】
ネットワーク管理サーバ100は、CPU201がプログラムであるトポロジ検出部210を実行することで、ネットワークIF203を介してレイヤ3スイッチ110やレイヤ2スイッチ120から必要な情報を収集し、それらの接続状況であるトポロジを検出するように動作する。
【0025】
図3は、レイヤ3スイッチ110の内部構成の一例を示す図である。レイヤ3スイッチとは、ポートで受信したパケットのヘッダ部分に含まれる情報に基づいて、当該パケットを別のポートにレイヤ2中継またはレイヤ3中継を行う機能を持ったネットワーク装置である。
【0026】
レイヤ3スイッチ110は、CPU301、メモリ302、フレーム転送部303、複数のポート111から構成される。なお、複数のポート111を区別して説明する場合には、
図1に示すように111-1、111-2といった符号により参照する。
【0027】
メモリ302には、他のネットワーク装置からのSNMP(Simple Network Management Protocol)による問い合わせに応答するためにCPU301が実行するプログラムであるSNMP応答部310と、ポート111で受信したパケットに対するレイヤ2中継処理で必要となるFDB情報320が少なくとも格納される。FDB情報320は、各ポート111の先に接続されているネットワーク装置が持つMACアドレスを、当該ネットワーク装置が送信したパケットを受信した際に学習して格納するテーブルであり、学習したMACアドレスと、当該MACアドレスを学習したポート111の識別子と、当該ポート111が所属するVLANのVLAN IDを組み合わせた情報を一つの学習情報として学習した分だけ格納される。また、SNMPによる問い合わせとは、例えばFDB情報320の読み出し要求とそれに対する応答などの処理である。
【0028】
なお、
図3のメモリ302では、レイヤ3スイッチとしての機能を実現するために必要なその他のプログのラムやデータの記載は省略している。
【0029】
フレーム転送部303は、ポート111で受信したパケットのヘッダ情報に基づいてレイヤ3中継またはレイヤ2中継処理により当該パケットの転送先となるポート111を決定し、当該ポート111からパケットを送信するもので、例えばLSIなどのハードウェアによる論理回路で構成される。
【0030】
図4は、レイヤ2スイッチ120の内部構成の一例を示す図である。レイヤ2スイッチとは、ポートで受信したパケットのヘッダ部分に含まれる情報に基づいて、当該パケットを別のポートにレイヤ2中継を行う機能を持ったネットワーク装置である。
【0031】
レイヤ2スイッチ120は、CPU401、メモリ402、フレーム転送部403、複数のポート121から構成される。なお、複数のポート121を区別して説明する場合には、
図1に示すように121-11、121-12といった符号により参照する。
【0032】
メモリ402には、他のネットワーク装置からのSNMPによる問い合わせに応答するためにCPU401が実行するプログラムであるSNMP応答部410と、ポート121で受信したパケットに対するレイヤ2中継処理で必要となるFDB情報420が少なくとも格納される。FDB情報420は、
図3で説明したレイヤ3スイッチ110のFDB情報320と同様である。また、SNMPによる問い合わせも
図3で説明したものと同様である。
【0033】
なお、メモリ402では、レイヤ2スイッチとしての機能を実現するために必要なその他のプログラムやデータの記載は省略している。
【0034】
フレーム転送部403は、ポート121で受信したパケットのヘッダ情報に基づいてレイヤ2中継処理により当該パケットの転送先となるポート121を決定し、当該ポート121からパケットを送信するもので、例えばLSIなどのハードウェアによる論理回路で構成される。
【0035】
次に、ネットワーク管理サーバ100のCPU201が実行するトポロジ検出部210の処理によってVLAN20とVLAN30の二つのレイヤ2ネットワークのトポロジ検出を行う動作の例についてフローチャートを用いて説明する。
【0036】
図5は、トポロジ検出部210による処理の一例を示すフローチャートである。以降の説明でトポロジ検出部210などのプログラムが主語となっている動作は、実際にはプログラムを実行するCPU201の動作によるものである。
【0037】
なお、このフローチャートで示される一連の処理は、例えば決められた時間ごとに定期的に起動される、あるいは、ネットワーク管理サーバ100が備える図示されないユーザインタフェースを通してネットワーク管理者がコマンド等を入力して指示することにより起動される。
【0038】
まず、トポロジ検出部210は、アクセス情報220に基づいてネットワークシステム内に存在するレイヤ3スイッチおよびレイヤ2スイッチからFDB情報を収集し、FDB収集情報221に格納する(ステップ501)。
【0039】
図6は、アクセス情報220の内容の一例を示す図である。アクセス情報220は、FDB情報の収集対象とするレイヤ3スイッチ110およびレイヤ2スイッチ120とその収集方法の情報を格納するテーブルであり、0個以上のエントリから構成される。各エントリは、装置601、IPアドレス602、アクセス手段603、MACアドレス604の各フィールドを持つ。
【0040】
装置601は、FDB情報収集の対象とするレイヤ3スイッチ110およびレイヤ2スイッチ120の識別子を示すフィールドである。
図6の例では識別子として便宜的に
図1で付した符号を用いているが、管理目的で付与された装置名などであってもよい。IPアドレス602とMACアドレス604は、装置601で示されるスイッチが持つIPアドレスとMACアドレスを示すフィールドである。
【0041】
アクセス手段603は、装置601で示される装置からFDB情報を読み出すための手段を示すフィールドで、例えばMIB(Management Information Base)と指定されていた場合は、SNMPによりFDB情報を読み出すことを示している。
【0042】
図6の内容は、
図5のフローチャートに示す処理が始まる前にあらかじめ設定されているものとする。
【0043】
図7は、FDB収集情報221の内容の一例を示す図である。
FDB収集情報221は、レイヤ3スイッチ110およびレイヤ2スイッチ120から収集したFDB情報を保存するためのテーブルであり、エントリ番号で識別される0個以上のエントリから構成される。各エントリは、装置701、MACアドレス702、学習VLAN703、学習ポート704の各フィールドを持つ。なお、以降の説明では、エントリ番号nを持つエントリをエントリnと表現する。これは、後述するエントリ番号を持つ他のテーブルについても同様である。
【0044】
装置701は、FDB情報の収集元となったレイヤ3スイッチ110およびレイヤ2スイッチ120の識別子を示すフィールドである。MACアドレス702と学習VLAN703と学習ポート704は、収集されたFDB情報の1エントリ分の情報である学習されたMACアドレスと、そのMACアドレスを学習したポートの所属VLANのVLAN IDと、そのMACアドレスを学習したポートの識別子をそれぞれ格納するフィールドである。
【0045】
ステップ501におけるトポロジ検出部210の処理内容を具体的に説明すると、トポロジ検出部210は、アクセス情報220を参照し、各エントリに示されるレイヤ3スイッチ110およびレイヤ2スイッチ120に対して、アクセス手段603の値がMIBであることに従ってSNMPによるFDB読み出し要求パケットを同エントリのIPアドレス602が示すIPアドレス宛に送信する。
【0046】
当該要求パケットを受信したレイヤ3スイッチ110およびレイヤ2スイッチ120は、当該要求パケットをSNMP応答部310または410で処理し、FDB情報320または420の内容を格納した応答パケットをネットワーク管理サーバ100宛に返送する。当該応答パケットをネットワーク管理サーバ100が受信すると、トポロジ検出部210は当該応答パケットに含まれる情報に情報収集元となった装置の識別子の情報(同エントリの装置601の値)を付加してFDB収集情報221の空きエントリに順次格納していく。
【0047】
図7に示す数値例は、
図1のネットワーク構成の場合にステップ501で生成されるFDB収集情報221の内容を示したものである。なお、
図7において装置701と学習ポート704に格納する識別子は便宜的に
図1で付した符号により示しているが、管理目的で付与されたその他の識別子を用いてもよい。
【0048】
次に、トポロジ検出部210は、ステップ501で生成したFDB収集情報221を参照して学習ポート集合222を作成する(ステップ502)。
【0049】
学習ポート集合とは、FDB情報の一部として収集されたネットワーク装置のVLAN IDとMACアドレスの組み合わせをキーとして、そのVLAN IDとMACアドレスの組み合わせを学習しているポートの集合を求めたものである。
【0050】
図8は、学習ポート集合222の内容の一例を示す図である。学習ポート集合222は、エントリ番号で識別される0個以上のエントリから構成され、各エントリはVLAN801、MACアドレス802、学習ポート803の各フィールドを持つ。VLAN801とMACアドレス802の組み合わせに前述したキーとなる値の組み合わせが格納され、当該組み合わせを学習しているポートの識別子の集合が学習ポート803に格納される。
【0051】
ステップ502におけるトポロジ検出部210の処理内容を具体的に説明すると、例えばVLAN20においてレイヤ3スイッチ110のMACアドレスS10を学習しているポートは、
図7に示すFDB収集情報221の各エントリのMACアドレス702と学習VLAN703の値を検索するとエントリ10とエントリ15に格納されていることが分かり、各エントリの学習ポート704の値が121-11と121-21となっていることから、VLAN801に20を、MACアドレス802にS20を、学習ポート803に{121-11,121-21}をそれぞれ格納したエントリを学習ポート集合222に作成する。
【0052】
図8の例では、エントリ2がこの例で作成されたエントリに対応する。トポロジ検出部210は、
図7に格納されているすべてのMACアドレス702と学習VLAN703の一意の組み合わせを抽出して、それぞれついて上述のような処理を行う。その結果、例えば
図7のような内容のFDB収集情報221に対しては
図8のような内容の学習ポート集合222が作成される。
【0053】
次に、トポロジ検出部210は、ステップ502で作成した学習ポート集合222を参照して経路ポート集合223を作成する(ステップ503)。
【0054】
経路ポート集合とは、ネットワークシステム中の特定のスイッチから特定の端末に至る経路上に存在する当該端末のMACアドレスを学習しているポートの集合を抽出したものである。この情報は、特定のスイッチから端末の間にさらに別のレイヤ2スイッチが存在した場合に、それも含めた経路上のすべてのスイッチを特定するために使用されるものである。
【0055】
このようなポートの集合を、VLAN IDごとに、そのVLANに所属しているすべての端末とスイッチの組み合わせを生成してそれらに対して求めると、スイッチ間の接続関係を導き出すための情報を網羅的に得ることができる。
【0056】
図9は、経路ポート集合223の内容の一例を示す図である。
経路ポート集合223は、エントリ番号で識別される0個以上のエントリから構成され、各エントリはVLAN901、端末MACアドレス902、スイッチMACアドレス903、経路ポート904の各フィールドを持つ。
【0057】
ステップ503におけるトポロジ検出部210の処理内容を具体的に説明すると次のようになる。
【0058】
まず、トポロジ検出部210はステップ502で作成した学習ポート集合222を参照して、VLANごとにそこに所属するネットワーク装置の全MACアドレスを抽出する。
【0059】
例えば、
図8の学習ポート集合222においてVLAN IDが20のVLANについて見ると、所属するネットワーク装置のMACアドレスは、エントリ2からエントリ7に登録されているS10、S20、S21、U10、U20、U30の6個であることが分かる。このうち、S10とS20とS21の3個については、アクセス情報220のMACアドレス604に事前登録されている情報からスイッチのMACアドレスであることが分かるので、それ以外のMACアドレスU10、U20、U30の3個は端末のMACアドレスであると判断できる。
【0060】
したがって、VLAN20において端末とスイッチのすべての組み合わせは3×3の9通りとなる。
図9の例では、この9通りの組み合わせをエントリ2からエントリ10のVLAN901、端末MACアドレス902、スイッチMACアドレス903に格納している様子を示している。
【0061】
他のVLANも同様の処理を行い、各エントリのVLAN901、端末MACアドレス902、スイッチMACアドレス903に値が格納されている状態にする。なお、スイッチのMACアドレスが一つも学習されていないVLANは、そのVLAN内にレイヤ3スイッチ110およびレイヤ2スイッチ120が存在しないことを意味するので、以降の処理の対象外とする。
【0062】
次に、トポロジ検出部210は、経路ポート集合223の各エントリの経路ポート904に格納する値を求める処理を行う。この値は、学習ポート集合222に格納されている端末の学習ポートの集合からスイッチの学習ポートの集合に含まれる要素を除いた集合として求めることができる。
【0063】
具体例で説明すると、例えば
図9の経路ポート集合223のエントリ3(VLAN901が20、端末MACアドレス902がU10、スイッチMACアドレス903がS20)の経路ポート904に格納する値は、
図8の学習ポート集合222のエントリ5(VLAN801が20、MACアドレス802がU10)の学習ポート803に格納されている集合{111-2,121-12,121-22}から、エントリ3(VLAN801が20、MACアドレス802がS20)の学習ポート803に格納されている集合{111-2,121-21}と共通な要素を取り除いた{121-12,121-22}という集合となる。
【0064】
この処理が意味するところは次のとおりである。MACアドレスU10を持つ端末130-1からMACアドレスS20を持つレイヤ2スイッチ120-1にパケットが流れる際に経路となるポートは、少なくともU10を学習しているポートが候補となる(学習ポート集合222のエントリ5の学習ポート803の値)。
【0065】
もし、これら候補の中にS20も学習しているポートが含まれていた場合(学習ポート集合222のエントリ3の学習ポート803の値に含まれる111-2が該当)、そのポートはU10とS20の両方を学習していることを表している。このことは、U10を持つ端末131-1を起点として見ると、ポート111-2を持つレイヤ3スイッチ110がMACアドレスS20を持つレイヤ2スイッチ120-1より上流側に位置していることを意味する。
【0066】
したがって、このようなU10とS20の両方を学習しているポートを元の集合から取り除くと、端末130-1からレイヤ2スイッチ120-1に至る経路上に存在する経路ポートの集合が残ることになる。
【0067】
以上説明したような処理を経路ポート集合223の全エントリに対して実行することでステップ503を終了する。なお、この段階で経路ポート集合223の情報だけでは、集合内のポートの経路上での順序を特定できない場合があるため、それを特定するための処理が必要となり、それが以降に続くステップ504とステップ505の処理となる。
【0068】
次に、トポロジ検出部210は、ステップ501で生成したFDB収集情報221を参照してMACアドレス学習数224を作成する(ステップ504)。MACアドレス学習数224は、レイヤ3スイッチ110およびレイヤ2スイッチ120の各ポートにいくつのMACアドレスが学習されているかを集計したものである。
【0069】
図10は、MACアドレス学習数224の内容の一例を示す図である。MACアドレス学習数224は、エントリ番号で識別される0個以上のエントリから構成され、各エントリは、ポート1001、学習MACアドレス1002、学習数1003の各フィールドを持つ。
【0070】
ステップ504におけるトポロジ検出部210の処理を具体的に説明すると次のようになる。
【0071】
まず、トポロジ検出部210はFDB収集情報221の学習ポート704に格納されているすべての一意なポートの識別子を抽出し、それぞれをMACアドレス学習数224のエントリのポート1001に格納する(本実施例では識別子を
図1で付した符号で表現)。
【0072】
そして、MACアドレス学習数224のエントリごとに該当エントリのポート1001で学習しているMACアドレスをFDB収集情報221から抽出して、そのすべてを集合としてMACアドレス1002に格納し、その要素数を学習数1003に格納する。
【0073】
FDB収集情報221が
図7に示すような状態になっていた場合、例えば、レイヤ3スイッチ110のポート111-3について見ると、FDB収集情報221のエントリ7からエントリ9の学習ポート704に111-3が格納されており、そのポートが学習しているMACアドレスは、各エントリのMACアドレス702に格納されているS22とU40とU50である。
【0074】
したがって、
図10に示すように、ポート1001に111-3を格納したエントリ3の学習MACアドレス1002には集合{S22,U40,U50}を、学習数1003にはその要素数である3をそれぞれ格納する。
以上でステップ504の処理を終了する。
【0075】
次に、トポロジ検出部210は、ステップ503で作成した経路ポート集合223とステップ504作成したMACアドレス学習数224を用いて経由装置情報225を作成する(ステップ505)。
【0076】
経由装置情報とは、ある端末とあるスイッチの組み合わせに関して、その経路に存在するスイッチの一覧を経路上での順序に従って並べた情報のことである。
【0077】
図11は、経由装置情報225の内容の一例を示す図である。経由装置情報225は、エントリ番号で識別される0個以上のエントリから構成され、各エントリはVLAN1101、端末MACアドレス1102、スイッチMACアドレス1103、経由装置1104の各フィールドを持つ。経由装置1104は複数のスイッチの識別子を順序付けて格納できるように複数のサブフィールドを持っている。
【0078】
図11ではサブフィールドを3個持つ例を示しているが、3個に限定するものではなく、対象とするネットワークシステムの規模に応じて決定してよい。経由装置情報225は、経路ポート集合223の各エントリにおいて対して、経路ポート904のフィールドを経由装置1104に置き換えた構造を持つものとみることもできる。
【0079】
ステップ505におけるトポロジ検出部210の処理を具体的に説明すると次のようになる。
まず、トポロジ検出部210は、ステップ503で作成した経路ポート集合223を参照し、そのすべてのエントリについて、VLAN901、端末MACアドレス902、スイッチMACアドレス903の値を、経由装置情報225のエントリのVLAN1101、端末MACアドレス1102、スイッチMACアドレス1103にそのままコピーする。すなわち、この処理により経由装置情報225には経路ポート集合223と同じ数のエントリが作られることになる。
【0080】
次に、経路ポート集合223の各エントリの経路ポート904を参照し、そこに集合として格納されている各ポート識別子の情報を、そのスイッチ側から端末側へ向かう経路の順に並べ替える。具体的には、MACアドレス学習数224の情報に基づいてMACアドレスの学習数が多い順に並べ替える。
【0081】
この処理は、階層的に複数のスイッチが接続されていて端末側を下流と表現した場合、上流側のスイッチのポートほどMACアドレスの学習数が増えるという性質に基づいている。この性質は、少なくとも途中で経由するスイッチのMACアドレスはそれより上流のスイッチで学習されることによるものである。具体例として経路ポート集合223のエントリ2の例で説明すると、経路ポート904に登録されている各ポートでのMACアドレス学習数は、それぞれ111-2が5に、121-12が3に、121-22が1になるので、スイッチから端末に向かう経路順に並べたポートは、111-2、121-12、121-22という順序となる。
【0082】
この並べ替え処理が終了したら、各ポートの識別子をそのポートを持つスイッチの識別子に置き換えて、経由装置情報225の対応するエントリの経由装置1104のサブエントリに上流側から順に格納する。上述したエントリ2の例で説明すると、経路順に並べたポート111-2、121-12、121-22が所属するスイッチは、それぞれ110、120-1、120-2となるので、これらを経由装置情報224のエントリ番号2の経由装置1104に格納する。これにより、経由装置1104のサブフィールドで示されるスイッチはサブフィールドの順序で隣接していることを表すようになる。
【0083】
以上の処理を経由装置情報225のすべてのエントリに対して行い、ステップ505を終了する。
【0084】
次に、トポロジ検出部210は、ステップ505で作成した経由装置情報225とステップ502で作成した学習ポート集合222を参照して区間情報226を作成する(ステップ506)。区間情報とは、ステップ506で求めた経由装置情報で示される隣接したスイッチの組み合わせごとに、実際にそれらのスイッチのどのポートとどのポートが接続されているかを示す情報である。
【0085】
図12は、区間情報226の内容の一例を示す図である。区間情報226は、エントリ番号で識別される0個以上のエントリから構成され、各エントリはVLAN1201、端末MACアドレス1202、スイッチMACアドレス1203、区間1204の各フィールドを持つ。なお、区間1204は複数のスイッチ間のポート接続情報を格納できるように複数のサブフィールドを持っている。
【0086】
図12ではサブフィールドを2個持つ例を示しているが、対象とするネットワークシステムの規模に応じて決定してよい。区間情報226は、経由装置情報225の各エントリについて、経由装置1104の値を区間1204に置き換えたものとみなすこともできる。
【0087】
ステップ506におけるトポロジ検出部210の処理を具体的に説明すると次のようになる。
【0088】
まず、トポロジ検出部210は、ステップ505で作成した経由装置情報225を参照し、そのすべてのエントリについてVLAN1101、端末MACアドレス1102、スイッチMACアドレス1103の値を、区間情報226のエントリのVLAN1201、端末MACアドレス1202、スイッチMACアドレス1203にそのままコピーする。すなわち、この処理により区間情報226には経由装置情報225と同じ数のエントリが作られることになる。
【0089】
次に、経由装置情報225の経由装置1104の情報を参照し、そこに示されるスイッチ間のポートの接続関係を求め、その結果を区間情報226の対応するエントリの区間1204に格納する。二つのスイッチ間で接続されるポートの組み合わせは、学習ポート集合222を参照することで求めることができる。
【0090】
具体例として、経由装置情報225のエントリ2を例に説明すると、経由装置1104はレイヤ3スイッチ110とレイヤ2スイッチ120-1、および、レイヤ2スイッチ120-1と120-2がそれぞれ隣接していることを示している。
【0091】
ここで、レイヤ3スイッチ110は、経由装置1104内のサブフィールドの順序関係から、端末MACアドレス1202で示されるMACアドレスU10の端末(端末130-1)に対してレイヤ2スイッチ120-1より上流側であることが分かるので、レイヤ2スイッチ120-1が接続されるポートではMACアドレスU10を学習しているはずである。学習ポート集合222を参照すると、レイヤ3スイッチ110でU10を学習しているポートはエントリ5の内容からポート111-2であることが分かる。
【0092】
したがって、レイヤ3スイッチ110でレイヤ2スイッチ120-1が接続されているポートは、ポート111-2であることが求められる。一方、レイヤ2スイッチ120-1でレイヤ3スイッチ110が接続されるポートは、レイヤ3スイッチ110の方が上流であるからレイヤ3スイッチ110のMACアドレスS10を学習しているはずであり、MACアドレスU10の端末(端末130-1)が所属するVLAN20においてS10を学習しているレイヤ2スイッチ120-1のポートは学習ポート集合222のエントリ2からポート121-11であることが分かる。
【0093】
以上から、レイヤ3スイッチ110とレイヤ3スイッチ120-1の間は、それぞれのポート111-2とポート121-11で接続されていることが分かり、「111-2⇔121-11」という値を区間情報226のエントリ2の区間1204の最初のサブフィールドに格納する。同様の手順で、レイヤ2スイッチ120-1とレイヤ2スイッチ120-2の間は、それぞれのポート121-12とポート121-21で接続されていることが分かるので、「121-12⇔121-21」という値を区間情報226のエントリ2の区間1204の二つ目のサブフィールドに格納する。
【0094】
以上の処理を区間情報226のすべてのエントリに対して行うことでステップ506を完了する。
【0095】
最後に、トポロジ検出部210は、区間情報226から隣接情報227を作成する(ステップ507)。隣接情報とは、トポロジ検出の対象としているレイヤ2ネットワーク内に存在するスイッチの相互接続関係を集約した情報であり、最終的なトポロジの検出結果となる。
【0096】
図13は、隣接情報227の内容の一例を示す図である。隣接情報227は、エントリ番号で識別される0個以上のエントリから構成され、各エントリは接続元装置1301、接続元ポート1302、接続先装置1303、接続先ポート1304の各フィールドを持つ。
【0097】
ステップ507におけるトポロジ検出部210の処理を具体的に説明すると次のようになる。
【0098】
区間情報226の全エントリの区間1204には、ステップ501からステップ506までの処理の結果として、トポロジ検出の対象となっているネットワークシステム内で相互に接続されるスイッチ間の接続ポートの情報(これをここでは区間と呼ぶ)が格納され、トポロジ検出は実質的に完了している。
【0099】
ただし、これを導く過程においてネットワークシステム内のレイヤ2ネットワークごとにそこに存在する端末とスイッチのすべての組み合わせにおける経路ごとに区間を求めている。もし、これらの経路の中に同じ区間を共有しているものがあれば、区間1204には重複した値が格納されることになる。したがって、トポロジ検出部210は、区間情報226のすべてのエントリの区間1204から一意の区間を抽出する処理をステップ507で行う。
図12に示す状態の区間情報226に対してこの処理を行った場合、一意の区間は「111-2⇔121-11」、「111-3⇔121-31」、「121-12⇔121-21」となる。トポロジ検出部210は、これらの区間のそれぞれに隣接情報227の一つのエントリを対応させ、各エントリに区間の情報を展開した情報を格納する。
【0100】
図13に示したエントリ1の例で具体的に説明すると、エントリ1は区間「111-2⇔121-11」に対応し、ポート111-2が所属するスイッチはレイヤ3スイッチ110なので接続元装置1301にはその識別子として110を、接続元ポート1302にはポート111-2の識別子として111-2を、ポート121-11が所属するスイッチはレイヤ2スイッチ120-1なので接続先装置1303にはその識別子として120-1を、接続先ポート1304にはポート121-11の識別子として121-1をそれぞれ格納する。
【0101】
以上の処理を区間情報226から抽出したすべての一意な区間について行うと、隣接情報227にはトポロジ検出の対象としたネットワークシステムにおいてレイヤ2ネットワークごとに直接接続されたすべてのスイッチ間の隣接情報が得られることになる。
【0102】
図13に示した隣接情報227の内容は、
図1に示したネットワークシステムに含まれるレイヤ3スイッチ110、レイヤ2スイッチ120-1、レイヤ2スイッチ120-2、レイヤ2スイッチ120-3の隣接関係を表している。
【0103】
以上、
図5に示したフローチャートの処理により、トポロジ検出部210はレイヤ2ネットワークのトポロジを検出することができる。最終的なトポロジの検出結果である隣接情報227の内容は、例えばネットワーク管理サーバ100が備える図示していない描画処理プログラムによって、ネットワークトポロジ図として描画し、図示していない出力装置などに表示するといったことに利用することができる。
【0104】
本実施例1によれば、複数のレイヤ2ネットワークがレイヤ3スイッチで接続されたような大規模なネットワークシステムにおいても、個々のレイヤ2ネットワークにネットワーク管理サーバを置くことなく、ネットワーク内の各スイッチから情報を収集可能な任意の場所に接続された一つのネットワーク管理サーバによって、各レイヤ2ネットワーク内のスイッチの隣接関係を示すトポロジ情報を求めることができるという効果が得られる。
ネットワークシステム内でスイッチを利用していると、何らかの理由でスイッチを再起動しなければならいことが発生する。スイッチ内のFDB情報は、スイッチ動作中に受信したパケットのヘッダ情報の一部を学習して動的に生成されるものなので、スイッチが再起動されるとそれまで学習していたFDB情報は一旦クリアされ、再度受信パケットから学習を行うことで再生成される。
なお、このフローチャートで示される処理は、例えば決められた時間ごとに定期的に起動される、あるいは、ネットワーク管理サーバ140が備える図示されないユーザインタフェースを通してネットワーク管理者がコマンド等を入力することにより起動されるものとする。
次に、トポロジ検出部240は、収束カウンタ229の値を初期化する(ステップ1403)。収束カウンタ229は整数値を格納するテーブルであり、その初期化とは収束カウンタ初期値230の値を収束カウンタ229にコピーする処理である。収束カウンタ初期値230は収束カウンタ229の初期値(整数値)を格納するテーブルである。
その値は、例えばネットワーク管理者が再起動されたスイッチでFDB情報を再学習するのに要する時間などを考慮して、ステップ1401または後述するステップ1404の処理で得られる隣接情報227の結果が安定するまでに要する適切な処理の繰り返し回数を求め、ネットワーク管理サーバ140の図示されないユーザインタフェース等により事前に設定しておくものとする。
次に、トポロジ検出部240は、ステップ1404で得られた隣接情報227の内容とステップ1402で得られた前回隣接情報228の内容を比較し、一致していなければステップ1402の処理に戻ってそれ以降の処理を繰り返し。一致していればステップ1406に進む(ステップ1405)。
次に、トポロジ検出部240は、収束カウンタ229の値を判定し、0でなければステップ1404の処理に戻ってそれ以降の処理を繰り返し、0であれば本フローチャートによる処理を終了する(ステップ1407)。この時点で隣接情報227に格納されている情報が最終的に得られたトポロジ情報となる。
以上説明した一連の処理の意味は、フローチャート500に示す基本的なトポロジ検出処理を、結果が安定するまで繰り返し実行し、安定後の値をトポロジの検出結果と見なすものである。この実施例では、事前に設定した繰り返し回数(収束カウンタ230の値)だけ連続してフローチャート500の処理により同じトポロジ検出結果が得られた場合に結果が安定したと判断している。
本実施例2によれば、実施例2により得られる効果に加え、スイッチ再起動などの要因でスイッチ内のFDB情報の学習状況に過渡的な状態が発生した場合であっても、ネットワークシステムの各レイヤ2ネットワーク内のスイッチの隣接関係を示すトポロジ情報を正しく検出することができるという効果が得られる。
このように、上記実施例では、ネットワーク管理サーバは、ネットワーク内のスイッチから収集したFDB情報に基づいて、各レイヤ2ネットワークに存在する端末とスイッチのすべて組み合わせについてその経路上に存在するスイッチとそれらを接続するスイッチのポートを特定することで各レイヤ2ネットワークのトポロジを検出する。
上記実施例によれば、複数のレイヤ2ネットワークから構成される大規模なネットワークにおいて、ネットワーク内での接続場所に拘らず各レイヤ2ネットワークのトポロジを検出することが可能なネットワーク管理サーバを提供することができる。