(57)【要約】【課題】リングネットワークの耐障害性を改善する。【解決手段】リング状のネットワークシステムに属するデータ転送装置システムであって、前記データ転送装置システムは、複数のデータ転送装置を含み、前記複数のデータ転送装置は第１のデータ転送装置及び前記第１のデータ転送装置に接続される第２のデータ転送装置を含み、前記第１のデータ転送装置は第１のリングポートを有し、前記第２のデータ転送装置は第２のリングポートを有し、前記第１のデータ転送装置は、前記ネットワークシステムの状態、前記データ転送装置システムにおける前記第１のデータ転送装置の属性、及び、前記ネットワークシステムにおける前記データ転送装置システムの属性に基づいて、前記第１のリングポート及び前記第２のリングポートのデータ転送可否を制御する。【選択図】図７
2015133538.tif 000002
【特許請求の範囲】
【請求項１】
リング状のネットワークシステムに属するデータ転送装置システムであって、
前記データ転送装置システムは、複数のデータ転送装置を含み、
前記複数のデータ転送装置は第１のデータ転送装置及び前記第１のデータ転送装置に接続される第２のデータ転送装置を含み、
前記第１のデータ転送装置は、前記ネットワークシステムに属し、前記データ転送装置システムに含まれない第３のデータ転送装置に接続される第１のポートを有し、
前記第２のデータ転送装置は、前記ネットワークシステムに属し、前記データ転送装置システムに含まれない第４のデータ転送装置に接続される第２のポートを有し、
前記第１のデータ転送装置は、前記ネットワークシステムの状態、前記データ転送装置システムにおける前記第１のデータ転送装置の属性、及び、前記ネットワークシステムにおける前記データ転送装置システムの属性に基づいて、前記第１のポート及び前記第２のポートのデータ転送可否を制御することを特徴とするデータ転送装置システム。
【請求項２】
請求項１に記載のデータ転送装置システムであって、
前記ネットワークシステムの状態は、前記ネットワークシステム内の前記第２のデータ転送装置若しくはその他の部分に障害が発生している障害状態、又は、障害が発生していない正常状態のいずれかであり、
前記ネットワークシステムにおける前記データ転送装置システムの属性は、前記ネットワークシステムの障害を監視するマスタノード、又は、前記ネットワークシステムの障害を監視しないトランジットノードであり、
前記データ転送装置システムにおける前記第１のデータ転送装置の属性は、前記第１のデータ転送装置及び前記第２のデータ転送装置によるデータ転送を制御し、前記データ転送装置システムが前記マスタノードである場合には前記マスタノードの処理を実行するマスタ装置、又は、前記マスタ装置である前記第２のデータ転送装置によって制御され、前記第２のデータ転送装置に障害が発生した場合に新たに前記マスタ装置となるバックアップ装置であることを特徴とするデータ転送装置システム。
【請求項３】
請求項２に記載のデータ転送装置システムであって、
前記データ転送装置システムにおける前記第１のデータ転送装置の属性が前記バックアップ装置であり、前記ネットワークシステムにおける前記データ転送装置システムの属性が前記マスタノードである場合において、前記第２のデータ転送装置の障害が検出されたとき、前記第１のデータ転送装置は、前記データ転送装置システムにおける前記第１のデータ転送装置の属性を前記マスタ装置に変更し、前記第１のポートを、ユーザデータを転送可能な状態に制御することを特徴とするデータ転送装置システム。
【請求項４】
請求項３に記載のデータ転送装置システムであって、
前記第１のデータ転送装置は、前記ネットワークシステムの状態が前記障害状態から前記正常状態に復旧したことを検出した場合、前記第１のポート及び前記第２のポートのうち一方を、ユーザデータを転送可能な状態に制御し、他方を、ユーザデータを転送可能でない状態に制御することを特徴とするデータ転送装置システム。
【請求項５】
請求項２に記載のデータ転送装置システムであって、
前記データ転送装置システムにおける前記第１のデータ転送装置の属性が前記マスタ装置であり、前記ネットワークシステムにおける前記データ転送装置システムの属性が前記マスタノードである場合において、前記ネットワークシステムの状態が前記障害状態であることが検出されたとき、前記第１のデータ転送装置は、前記第１のポート及び前記第２のポートを、ユーザデータを転送可能な状態に制御することを特徴とするデータ転送装置システム。
【請求項６】
請求項５に記載のデータ転送装置システムであって、
前記第１のデータ転送装置は、前記ネットワークシステムの状態が前記障害状態から前記正常状態に復旧したことを検出した場合、前記第１のポート及び前記第２のポートのうち一方を、ユーザデータを転送可能な状態に制御し、他方を、ユーザデータを転送可能でない状態に制御することを特徴とするデータ転送装置システム。
【請求項７】
請求項２に記載のデータ転送装置システムであって、
前記データ転送装置システムにおける前記第１のデータ転送装置の属性が前記バックアップ装置であり、前記ネットワークシステムにおける前記データ転送装置システムの属性が前記トランジットノードである場合において、前記第２のデータ転送装置の障害が検出されたとき、前記第１のデータ転送装置は、前記データ転送装置システムにおける前記第１のデータ転送装置の属性を前記マスタ装置に変更することを特徴とするデータ転送装置システム。
【請求項８】
請求項２に記載のデータ転送装置システムであって、
前記第１のデータ転送装置は、第３のポートをさらに有し、
前記第２のデータ転送装置は、前記第３のポートに接続される第４のポートをさらに有し、
前記第１のデータ転送装置及び前記第２のデータ転送装置は、それぞれ、前記第３のポート及び前記第４のポートから第１の制御データを相互に送信し、
前記第１のデータ転送装置は、前記第２のデータ転送装置から前記第１の制御データを受信したか否かに基づいて、前記第２のデータ転送装置の障害を検出し、
前記データ転送装置システムにおける前記第１のデータ転送装置の属性が前記マスタ装置であり、前記ネットワークシステムにおける前記データ転送装置システムの属性が前記マスタノードである場合、前記第１データ転送装置は、前記第１のポート及び前記第３のポートから第２の制御データを送信し、前記第２の制御データを受信したか否かに基づいて、前記ネットワークシステムの状態を判定することを特徴とするデータ転送装置システム。
【請求項９】
請求項１に記載のデータ転送装置システムであって、
前記第１のデータ転送装置及び前記第２のデータ転送装置は、それぞれ、第３のポート及び前記第３のポートに接続される第４のポートを有し、
前記第１のデータ転送装置は、前記第１のデータ転送装置の前記第１のポート及び前記第２のデータ転送装置の前記第２のポートがそれぞれ前記ネットワークシステムにおいて前記データ転送装置システムに隣接するデータ転送装置に接続されることを示す情報、及び、前記第１のデータ転送装置の前記第３のポート及び前記第２のデータ転送装置の前記第４のポートが相互に接続されることを示す情報を含む設定情報を保持し、
前記第２のデータ転送装置が前記データ転送装置システムから削除された場合、前記第１のデータ転送装置は、前記第１のデータ転送装置の前記第３のポート及び前記第２のデータ転送装置の前記第４のポートが相互に接続されることを示す情報を削除し、前記第１のデータ転送装置のポートのうち前記第１のポート以外のポートが前記データ転送装置システムに隣接するデータ転送装置に接続されるように前記設定情報を更新し、
前記第２のデータ転送装置が前記データ転送装置システムに追加された場合、前記第１のデータ転送装置は、前記第１のデータ転送装置の前記第３のポート及び前記第２のデータ転送装置の前記第４のポートが相互に接続されることを示す情報を追加し、前記第２のデータ転送装置の前記第２のポートが前記データ転送装置システムに隣接するデータ転送装置に接続されるように前記設定情報を更新することを特徴とするデータ転送装置システム。
【請求項１０】
リング状に接続され、各々が一つ以上のデータ転送装置からなる複数のノードを含むネットワークシステムであって、
前記複数のノードのうち第１のノードは、第１のデータ転送装置及び前記第１のデータ転送装置に接続される第２のデータ転送装置を含み、
前記第１のデータ転送装置は、前記複数のノードのうち第２のノードに接続される第１のポートを有し、
前記第２のデータ転送装置は、前記複数のノードのうち第３のノードに接続される第２のポートを有し、
前記第１のデータ転送装置は、前記ネットワークシステムの状態、前記第１のノードにおける前記第１のデータ転送装置の属性、及び、前記ネットワークシステムにおける前記第１のノードの属性に基づいて、前記第１のポート及び前記第２のポートのデータ転送可否を制御し、
前記ネットワークシステムの状態は、前記ネットワークシステム内の前記第２のデータ転送装置若しくはその他の部分に障害が発生している障害状態、又は、障害が発生していない正常状態のいずれかであり、
前記ネットワークシステムにおける前記第１のノードの属性は、前記ネットワークシステムの障害を監視するマスタノード、又は、前記ネットワークシステムの障害を監視しないトランジットノードであり、
前記第１のノードにおける前記第１のデータ転送装置の属性は、前記第１のデータ転送装置及び前記第２のデータ転送装置によるデータ転送を制御し、前記第１のノードが前記マスタノードである場合には前記マスタノードの処理を実行するマスタ装置、又は、前記マスタ装置である前記第２のデータ転送装置によって制御され、前記第２のデータ転送装置に障害が発生した場合に新たに前記マスタ装置となるバックアップ装置であることを特徴とするネットワークシステム。
【請求項１１】
請求項１０に記載のネットワークシステムであって、
前記第１のノードにおける前記第１のデータ転送装置の属性が前記バックアップ装置であり、前記ネットワークシステムにおける前記第１のノードの属性が前記マスタノードである場合において、前記第２のデータ転送装置の障害が検出されたとき、前記第１のデータ転送装置は、前記データ転送装置システムにおける前記第１のデータ転送装置の属性を前記マスタ装置に変更し、前記第１のポートを、ユーザデータを転送可能な状態に制御することを特徴とするネットワークシステム。
【請求項１２】
請求項１１に記載のネットワークシステムであって、
前記第１のノードにおける前記第１のデータ転送装置の属性が前記マスタ装置であり、前記ネットワークシステムにおける前記データ転送装置システムの属性が前記マスタノードである場合において、前記ネットワークシステムの状態が前記障害状態であることが検出されたとき、前記第１のデータ転送装置は、前記第１のポート及び前記第２のポートを、ユーザデータを転送可能な状態に制御することを特徴とするネットワークシステム。
【請求項１３】
請求項１２に記載のネットワークシステムであって、
前記第１のデータ転送装置は、前記ネットワークシステムの状態が前記障害状態から前記正常状態に復旧したことを検出した場合、前記第１のポート及び前記第２のポートのうち一方を、ユーザデータを転送可能な状態に制御し、他方を、ユーザデータを転送可能でない状態に制御することを特徴とするネットワークシステム。
【請求項１４】
ネットワークシステムの構成を変更する方法であって、
前記ネットワークシステムは、リング状に接続され、各々が一つ以上のデータ転送装置からなる複数のノードを含み、
前記各ノードは、各々が前記ネットワークシステム上で隣接するノードに接続される二つのリングポートを有し、
前記複数のノードは、前記ネットワークシステムの障害を監視する一つのマスタノードと、前記ネットワークシステムの障害を監視しない複数のトランジットノードと、を含み、
前記複数のノードは、前記一つ以上のデータ転送装置の一つである第１のデータ転送装置のみからなるノードであって、前記トランジットノードである第１のノードと、前記第１のデータ転送装置の一方のリングポートに接続される第２のノードと、前記第１のデータ転送装置の他方のリングポートに接続される第３のノードと、を含み、
前記ネットワークシステムの構成を変更する方法は、
前記第２のノード及び前記第３のノードの各々が、前記第１のノードに接続されるリングポートをシャットダウンする第１手順と、
前記マスタノードが、前記第１手順のシャットダウンに起因する前記ネットワークシステムの障害を検出すると、前記マスタノードの二つのリングポートをいずれもユーザデータ転送可能な状態に制御する第２手順と、
前記第１のデータ転送装置の一方のリングポートが前記第２のノードと切り離され、前記第１のデータ転送装置のいずれかのポートに、前記ネットワークシステムに含まれるデータ転送装置以外の第２のデータ転送装置が接続された後に、前記第１のデータ転送装置又は前記第２のデータ転送装置の一方を、前記第１のデータ転送装置及び前記第２のデータ転送装置によるデータ転送を制御するマスタ装置に設定し、他方を、前記マスタ装置によって制御され、前記マスタ装置に障害が発生した場合に新たに前記マスタ装置となるバックアップ装置に設定することによって、前記第１のノードを、前記第１のデータ転送装置及び前記第２のデータ転送装置からなるノードに変更する第３手順と、
前記第２のデータ転送装置の前記リングポートが前記第２のノードに接続された後に、前記第２のノード及び前記第３のノードの各々が、前記第１のノードに接続されるリングポートのシャットダウンを解除する第４手順と、
前記マスタノードが、前記第４手順のシャットダウンの解除に起因する前記ネットワークシステムの障害からの復旧を検出すると、前記マスタノードの二つのリングポートの一方をユーザデータ転送可能でない状態に制御する第５手順と、を含むことを特徴とするネットワークシステムの構成を変更する方法。
【請求項１５】
請求項１４に記載のネットワークシステムの構成を変更する方法であって、
前記第５手順の後に、前記第２のノード及び前記第３のノードの各々が、前記第１のノードに接続されるリングポートをシャットダウンする第６手順と、
前記マスタノードが、前記第６手順のシャットダウンに起因する前記ネットワークシステムの障害を検出すると、前記マスタノードの二つのリングポートをいずれもユーザデータ転送可能な状態に制御する第７手順と、
前記第２のデータ転送装置の一方のリングポートが前記第２のノードと切り離され、前記第１のデータ転送装置と前記第２のデータ転送装置とが切り離された後に、前記第１のノードを、前記第１のデータ転送装置のみからなるノードに変更する第８手順と、
前記第１のノードの二つのリングポートのうち、前記第３のノードに接続されていないリングポートが前記第２のノードに接続された後に、前記第２のノード及び前記第３のノードの各々が、前記第１のノードに接続されるリングポートのシャットダウンを解除する第９手順と、
前記マスタノードが、前記第９手順のシャットダウンの解除に起因する前記ネットワークシステムの障害からの復旧を検出すると、前記マスタノードの二つのリングポートの一方をユーザデータ転送可能でない状態に制御する第１０手順と、を含むことを特徴とするネットワークシステムの構成を変更する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置システム及びそれを含むネットワークシステムに関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特開２００８−１３６０１３号公報（特許文献１）、特開２０１３−１０２５４６号公報（特許文献２）及び特開２０１３−５１４８１号公報（特許文献３）がある。
【０００３】
特許文献１には、「リングネットワークを構成する装置として、監視装置とその他の中継装置という構成を取る。監視装置は自装置が属するリングネットワークのリング状態のみを監視する。監視装置は、リングポートからそれぞれヘルスチェックフレームを周期的に送信し、逆側のリングポートでこのヘルスチェックフレームを受信しているか否かを監視する。また、共有リンクありのマルチリングネットワークの構成では、補助ヘルスチェックフレームを２つある共有装置それぞれから共有リンク非監視リングの監視装置に対して周期的に送信する。監視装置は、ヘルスチェックフレームと共に、補助ヘルスチェックフレームも監視することで複数のリングネットワークを跨ったループを防止する。」と記載されている。
【０００４】
特許文献２には、「複数の装置を連携させて仮想的に１台に見立てることができるパケット中継装置において、リンク最適化調整やパケット解析部を具備することによって、通信の流れ方や通信量などを自動的で判断し、主に稼動させる回線を最適化することによって、制御ポートに流れるトラフィックを管理して、制御ポートの帯域不足を補う。」と記載されている。
【０００５】
特許文献３には、「旧監視ノードを備えるリングネットワークにおいて、旧監視ノードを新監視ノードに入れ替える。この入れ替えの際に、新監視ノードは、両リングポートがリンクアップの状態となったことが検出されると、中継ノードに対して、旧監視ノードのリングポートから送られたヘルスチェックフレームが新監視ノード側に転送されるように指示する。この結果、新監視ノードは、ヘルスチェックフレームを受信することにより、リングネットワークの監視を行う。」と記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１３６０１３号公報
【特許文献２】特開２０１３−１０２５４６号公報
【特許文献３】特開２０１３−５１４８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１又は３に記載されたリングネットワークにおいて、一つのリングは複数の中継装置をリング状に接続することによって形成される。一つのリングを構成する複数の中継装置のうち一つは、監視機能を有する中継装置（特許文献１では「監視装置」、特許文献３では「監視ノード」と記載）であり、残りは、監視機能を有しない中継装置（特許文献１では単に「中継装置」、特許文献３では「中継ノード」と記載）である。監視装置は、リングに接続される二つのリングポートのそれぞれからヘルスチェックフレームを送信することでリングの障害を監視し、障害が検出された場合には、リングポートの状態を変更する。これによって、リングを通過するデータの通信経路が障害箇所を回避する経路に切り替えられる。しかし、監視装置に障害が発生した場合には、ヘルスチェックフレームを用いたリングの障害監視機能が停止し、経路の切り替えができなくなる。
【０００８】
一方、特許文献２には、物理的に複数の中継装置を仮想的に一つの中継装置として扱うことによって中継装置の耐障害性を改善する、装置間スタックの技術が開示されている。この技術を特許文献１又は３に記載されたリングネットワークに適用することによって、リングネットワークの耐障害性が向上することを発明者らは見出した。
【０００９】
しかし、特許文献１又は３に記載されたリングネットワークに、特許文献２に記載の装置間スタックの技術を適用しようとすると、例えば、物理的に二つの中継装置をリングネットワークの仮想的な一つの監視装置として使用する場合、仮想的な一つの監視装置の二つのリングポートは、物理的には二つの中継装置に分散して配置されることとなる。そのため、一つの中継装置による監視を前提としている従来のリングネットワークの制御方法では、二つの中継装置に分散して配置されるリングポートを制御することができない。
【００１０】
また、特許文献２に記載された装置間スタックの技術の制御方法は、物理的に複数の中継装置のうちの一つの中継装置が他の中継装置の動作を制御することで、仮想的に一つの中継装置として動作し冗長化を図っているため、仮想的な一つの中継装置を構成する他の中継装置は監視できるが、仮想的な一つの中継装置を構成する他の中継装置以外を監視することはできない。
【００１１】
従って、本発明は、例えば、リングネットワークを構成する一ノードの冗長性を向上しつつ、リングネットワーク内でのループを防止するとともに、リングの障害を監視し通信の継続性を担保することを目的とする。
【課題を解決するための手段】
【００１２】
上記の課題の少なくとも一を解決するために、本発明の一態様では、リング状のネットワークシステムに属するデータ転送装置システムであって、前記データ転送装置システムは、複数のデータ転送装置を含み、前記複数のデータ転送装置は第１のデータ転送装置及び前記第１のデータ転送装置に接続される第２のデータ転送装置を含み、前記第１のデータ転送装置は、前記ネットワークシステムに属し、前記データ転送装置システムに含まれない第３のデータ転送装置に接続される第１のポートを有し、前記第２のデータ転送装置は、前記ネットワークシステムに属し、前記データ転送装置システムに含まれない第４のデータ転送装置に接続される第２のポートを有し、前記第１のデータ転送装置は、前記ネットワークシステムの状態、前記データ転送装置システムにおける前記第１のデータ転送装置の属性、及び、前記ネットワークシステムにおける前記データ転送装置システムの属性に基づいて、前記第１のポート及び前記第２のポートのデータ転送可否を制御することを特徴とする。
【発明の効果】
【００１３】
本発明の一態様によれば、リングネットワークの耐障害性を高めることができる。
【００１４】
上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１のネットワークシステムの構成を示すブロック図である。
【図２Ａ】本発明の実施例１のネットワークシステムにおけるスイッチ間の接続を示すブロック図である。
【図２Ｂ】本発明の実施例１のネットワークシステムに含まれるスイッチの構成を示すブロック図である。
【図３】本発明の実施例１のスイッチが保持するコンフィグレーションテーブルの説明図である。
【図４】本発明の実施例１のスイッチが保持するスタック状態管理テーブルの説明図である。
【図５】本発明の実施例１のスイッチが保持するポートリンク状態管理テーブルの説明図である。
【図６】本発明の実施例１のスイッチが保持するリングポート状態管理テーブルの説明図である。
【図７】本発明の実施例１のネットワークシステムにおいてマスタノードを構成するマスタスイッチに障害が発生した場合の動作を示す説明図である。
【図８】本発明の実施例１のネットワークシステムにおいてマスタノードを構成するバックアップスイッチに障害が発生した場合の動作を示す説明図である。
【図９】本発明の実施例１のネットワークシステムにおいてマスタノードを構成するスイッチが障害から復旧した場合の動作を示す説明図である。
【図１０】本発明の実施例１のネットワークシステムにおいてトランジットノードを構成するマスタスイッチに障害が発生した場合の動作を示す説明図である。
【図１１】本発明の実施例１のネットワークシステムにおいてトランジットノードを構成するスイッチが障害から復旧した場合の動作を示す説明図である。
【図１２】本発明の実施例１のインタフェース制御部が実行する処理のフローチャートである。
【図１３】本発明の実施例１のプロトコル共通制御部が実行する処理のフローチャートである。
【図１４】本発明の実施例１のスタック管理／制御部が実行する処理のフローチャートである。
【図１５Ａ】本発明の実施例１のリング制御部が実行する処理のフローチャートの第１の部分である。
【図１５Ｂ】本発明の実施例１のリング制御部が実行する処理のフローチャートの第２の部分である。
【図１６】本発明の実施例２のネットワークシステムにおけるトランジットノードへのスイッチの増設の説明図である。
【図１７】本発明の実施例２のネットワークシステムにおけるトランジットノードからのスイッチの減設の説明図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施例を説明する。
【実施例１】
【００１７】
図１は、本発明の実施例１のネットワークシステムの構成を示すブロック図である。
【００１８】
図１に示すネットワークシステム１００は、本実施例が適用されるネットワークシステムの一例であり、データ転送装置１０１Ａ〜１０１Jによって構成される。データ転送装置１０１Ａ〜１０１Jの各々は、任意の種類のものであってよいが、一例を挙げるとすれば、ＯＳＩ参照モデルの第２層（データリンク層）のデータに基づいて、受信したデータを転送するデータ転送装置である。以下の説明において、データ転送装置１０１Ａ〜１０１Jをスイッチ１０１Ａ〜１０１Jとも記載する。また、スイッチ１０１Ａ〜１０１Jのいずれにも共通する説明をする場合等、スイッチ１０１Ａ〜１０１Jのいずれかを特定する必要がない場合には、スイッチ１０１とも記載する。後述する他のスイッチについても同様である。他の構成要素についても、同種の構成要素に共通する説明をする場合に、Ａ、Ｂ、Ｃ等を省略した参照符号を記載する場合がある。
【００１９】
ネットワークシステム１００にはリングプロトコルが適用される。リングプロトコルとは、複数のノードをリング状に接続したネットワークにおける障害の検出及びそれに伴う経路切り替えを高速に行うネットワークの冗長化プロトコルである（特許文献１）。各ノードは、一つのスイッチ１０１であってもよいし、後述するスタックを構成する複数のスイッチ１０１であってもよい。図１の例では、スイッチ１０１Ｇ、１０１Ｈ、１０１Ｉ及び１０１Ｊの各々が一つのノードを構成する。以下、スイッチ１０１Ｇ、１０１Ｈ、１０１Ｉ及び１０１Ｊの各々によって構成されるノードを、それぞれ、ノード１０１Ｇ、１０１Ｈ、１０１Ｉ及び１０１Ｊとも記載する。一方、スイッチ１０１Ａ及び１０１Ｂは一つのノード１０２Ａを、スイッチ１０１Ｃ及び１０１Ｄは一つのノード１０２Ｂを、スイッチ１０１Ｅ及び１０１Ｆは一つのノード１０２Ｃを構成する。
【００２０】
スタックとは、物理的に相互に接続された複数台のスイッチ１０１を仮想的に一台のスイッチとして動作させる機能であり、この機能によって、複数台の一部に障害が発生した場合にも通信を継続することができる（特許文献２）。以下、スタック機能による仮想的な一台のスイッチによって構成されるノード（例えば図１のノード１０２Ａ〜１０２Ｃ）を、「スタック構成のノード」のように記載する場合がある。また、仮想的な一台のスイッチを構成する複数のスイッチ１０１の集合（例えば図１のスイッチ１０１Ａ及び１０１Ｂの集合）を「スタック」、スタックに含まれる各々のスイッチ１０１（例えば図１のスイッチ１０１Ａ及び１０１Ｂの各々）を「スタックを構成するスイッチ」又は「スタックのメンバスイッチ」のように記載する場合がある。
【００２１】
図１の例では、リンク１０４Ａを介してノード１０２Ａをノード１０２Ｃに接続し、リンク１０４Ｂを介してノード１０２Ｃをノード１０１Ｇに接続し、リンク１０４Ｃを介してノード１０１Ｇをノード１０１Ｈに接続し、リンク１０４Ｄを介してノード１０１Ｈをノード１０２Ａに接続することによって、リング１０３Ａが構成される。さらに、リンク１０４Ｇを介してノード１０２Ａをノード１０１Ｊに接続し、リンク１０４Ｈを介してノード１０１Ｊをノード１０２Ｂに接続し、リンク１０４Ｅを介してノード１０２Ｂをノード１０１Ｉに接続し、リンク１０４Ｆを介してノード１０１Ｉをノード１０２Ａに接続することによって、もう一つのリング１０３Ｂが構成される。各リングを構成する複数のノードのうち一つはマスタノードであり、残りはトランジットノードである。これらの詳細な定義については後述する。図１の例では、ノード１０１Ｇがリング１０３Ａのマスタノードであり、ノード１０２Ｂがリング１０３Ｂのマスタノードであり、その他のノードはそれぞれのリングのトランジットノードである。
【００２２】
また、スタック機能によって仮想的な一台のスイッチとして動作する二つのスイッチ１０１のうち、一方はマスタスイッチ、もう一方はバックアップスイッチである。これらの詳細な定義についても後述する。図１の例では、スイッチ１０１Ａ、１０１Ｃ及び１０１Ｅがマスタスイッチであり、スイッチ１０１Ｂ、１０１Ｄ及び１０１Ｆがバックアップスイッチである。なお、本実施例では代表的な例として二台のスイッチ１０１がスタックを構成する例を示すが、本発明は、三台以上のスイッチ１０１がスタックを構成する場合にも適用できる。その場合、三台以上のメンバスイッチのうち一つがマスタスイッチ、別の一つがバックアップスイッチとなる。
【００２３】
なお、上記のようにスタック構成のノード１０２Ｂがノード１０１Ｉ及び１０１Ｊに接続される場合、物理的には、ノード１０２Ｂを構成するスイッチ１０１Ｃ及び１０１Ｄのうち一方がリンク１０４Ｅを介してスイッチ１０１Ｉに接続され、もう一方がリンク１０４Ｈを介してスイッチ１０１Ｊに接続され、スイッチ１０１Ｃ及び１０１Ｄがリンク１０４Ｋによって接続されることによって、リング１０３Ｂが形成される。他のスタック構成のノード１０２Ａ及び１０２Ｃについても同様である。スイッチ１０１Ａ及び１０１Ｂを接続するリンク１０４Ｉ、スイッチ１０１Ｅ及び１０１Ｆを接続するリンク１０４Ｊ及び上記のリンク１０４Ｋのように、スタックを構成する二つのスイッチ間を接続するリンクは、スタックリンクとも記載される。
【００２４】
また、図１では省略されているが、実際には、図１に示したそれぞれのノードにさらに一つ以上のネットワーク装置が接続されてもよい。例えば、図１に示したいずれかのノードは、他のリングに属するノード（図示省略）が接続されることによって、当該他のリングにも属することができる。あるいは、図１に示したいずれかのノードに、いずれのリングにも属しないネットワーク装置（例えばデータ転送装置又はサーバ等）が接続されてもよい。それらのネットワーク装置は、図１に示したリングを通過するデータの転送元又は転送先となり得る。
【００２５】
図２Ａは、本発明の実施例１のネットワークシステムにおけるスイッチ１０１間の接続を示すブロック図である。
【００２６】
図１に示すように、本実施形態は種々の形態のリングに適用され得るが、図２Ａには、説明を容易にするために、スイッチ１０１Ｋ〜１０１Ｎによって構成される一つのリング１０３Ｃを示す。この例において、スイッチ１０１Ｋ及び１０１Ｌは、リンク１０４Ｌによって接続され、スタック構成のマスタノード１０２Ｄとなる。一方、スイッチ１０１Ｍ及び１０１Ｎは、それぞれトランジットノードとなる。以下、スイッチ１０１Ｍ及び１０１Ｎをそれぞれノード１０１Ｍ及び１０１Ｎのように記載する場合がある。
【００２７】
各スイッチ１０１は、複数のポートを有する。図２Ａには、例としてスイッチ１０１Ｋが有するポート２０１Ａ〜２０１Ｃ及びスイッチ１０１Ｌが有するポート２０１Ｄ〜２０１Ｆのみを示し、他のポートの図示は省略する。リングを構成するノード間を接続するポートは、リングポートとも記載される。図２Ａでは、ポート２０１Ａ及び２０１Ｄがリングポートである。スイッチ１０１Ｍ及び１０１Ｎもそれぞれ二つのリングポート（図示省略）を有する。ポート２０１Ａはリンク１０４Ｏを介してスイッチ１０１Ｎの一方のリングポートに接続され、ポート２０１Ｄはリンク１０４Ｍを介してスイッチ１０１Ｍの一方のリングポートに接続される。スイッチ１０１Ｍのもう一方のリングポートは、リンク１０４Ｎを介してスイッチ１０１Ｎのもう一方のリングポートに接続される。
【００２８】
上記のように、一つのリングに属するノードは二つのリングポートを有するが、マスタノードのリングポートは、一方がプライマリポート、もう一方がセカンダリポートとして扱われる。リングに障害が発生していない場合、マスタノードは、セカンダリポートを、データフレームを送受信しないように論理的にブロックする。図２Ａの例では、ポート２０１Ａがプライマリポート、ポート２０１Ｄがセカンダリポートであるため、障害が発生していない場合には、ポート２０１Ｄがブロックされている。これらの詳細については後述する。
【００２９】
スイッチ１０１Ｋのポート２０１Ｂは、リンク１０４Ｌを介してスイッチ１０１Ｌのポート２０１Ｅに接続される。このように、スタックを構成する二つのスイッチ間を接続するポート（すなわちスタックリンクに接続されるポート）は、スタックポートとも記載される。
【００３０】
なお、各リンク１０４は、物理的には、例えばポート２０１間を接続するネットワークケーブル等によって実現される。
【００３１】
リング１０３Ｃを構成する各スイッチ１０１は、上記のリングポート以外のポート（上記のリングポートとは別のリングポート、又はリングポートではないポート）を介して、さらに他の一つ以上のネットワーク装置と接続され得る。図２Ａの例では、ポート２０１Ｃ及び２０１Ｆが、それぞれリンク１０４Ｐ及び１０４Ｑを介して、リング１０３Ｃに属しないスイッチ１０１Ｏに接続される。この例において、リンク１０４Ｐ及び１０４Ｑは、いわゆるリンクアグリゲーションによって仮想的に一つのリンクとして扱われる。これによって、ノード１０２Ｄは、スイッチ１０１Ｋ又は１０１Ｌの一方に障害が発生した場合にも、正常なもう一方を使用してスイッチ１０１Ｏとの通信を継続することができる。ただし、リンクアグリゲーションの適用は一例であり、リンク１０４Ｐ及び１０４Ｑがそれぞれに別のスイッチ（図示省略）に接続されてもよい。同様に、スイッチ１０１Ｍ及び１０１Ｎには、それぞれリンク１０４Ｒ及び１０４Ｓを介して、図示しない任意のネットワーク装置が接続されてもよい。
【００３２】
図２Ｂは、本発明の実施例１のネットワークシステムに含まれるスイッチ１０１の構成を示すブロック図である。
【００３３】
図２Ｂには、例として、リング１０３Ｃに属し、スタックを構成するスイッチ１０１Ｋの構成を示す。他のスイッチ１０１の構成も基本的には図２Ｂと同様であるが、それぞれのスイッチ１０１の属性（例えば当該スイッチ１０１がリングに属するか否か及びスタックを構成するか否か等）によって保持される情報が相違する場合がある。また、ユーザがコマンドを入力するのに使用する管理装置２４０をリンク１０４Ｔを介してポート２０１Ｇ経由でスイッチ１０１Ｋに接続する。管理装置２４０の接続先ポートはポート２０１の何れかであればよい。また、管理装置は、図２Ｂのようにスイッチ１０１Ｋの外に存在する形態でもよいし、管理装置の機能をスイッチ１０１Ｋ内部に持たせてもよい。
【００３４】
スイッチ１０１Ｋは、相互に接続された制御部２１０、メモリ２２０、転送エンジン２３０、及び転送エンジン２３０に接続される複数のポート２０１を有する。制御部２１０は、プロトコル共通制御部２１１、スタック管理／制御部２１２、リング制御部２１３及びインタフェース制御部２１４を含む。これらは、専用のハードウェアによって実現されてもよい。あるいは、制御部２１０がプロセッサであり、これがメモリ２２０に格納されたプログラムを実行することによって、プロトコル共通制御部２１１等の各制御部が実現されてもよい。その場合、以下の説明においてプロトコル共通制御部２１１等の各制御部が実行する処理は、実際には制御部２１０に相当するプロセッサによって実行される。
【００３５】
メモリ２２０には、コンフィグレーションテーブル２２１、スタック状態管理テーブル２２２、ポートリンク状態管理テーブル２２３及びリングポート状態管理テーブル２２４が格納される。コンフィグレーションテーブル２１１は、スイッチが属するノードのリングネットワークを構成するネットワークシステムにおける属性（マスタノードかトランジットノード）を示す情報を含むリングネットワークを構成するスイッチの情報を格納する。スタック状態管理テーブル２２２は、スタックを構成するデータ転送装置システムにおける属性（マスタかバックアップか）を示す情報を含む。ポートリンク状態管理テーブル２２３は、スタックを構成するスイッチが有するポートの状態に関する情報を保持する。リングポート状態管理テーブル２２４は、自スイッチの二つのリングポートに関する情報を含む。
【００３６】
制御部２１０は、外部からのコマンドの入力に応じて、コンフィグレーションテーブル２２１を更新することによりリングプロトコル及びスタックに関するスイッチの設定を行う。
【００３７】
制御部２１０（インターフェース制御部２１４）は、スイッチのポートの状態変化を検出し、ポートリンク状態管理テーブル２２３を更新する。
【００３８】
制御部２１０（プロトコル共通制御部２１１）は、リングにおけるヘルスチェックフレームの送信制御を、リングネットワークシステムにおける自ノードの属性（マスタノードかトランジットノード）に基づいて行う。また、スタックにおけるヘルスチェックフレームの送信制御を、スタックを構成するデータ転送装置システムにおける属性（マスタかバックアップか）に基づいて行う。
【００３９】
制御部２１０（スタック管理／制御部２１２）は、スタックを構成するスイッチの状態を監視し、スイッチの障害を検知した場合に、スタック状態管理テーブル２２２に基づいてスタックを構成するデータ転送装置システムにおける属性（マスタかバックアップか）の切り替えを行う。
【００４０】
制御部２１０（リング制御部２１３）は、コンフィグレーションテーブル２２１とスタック状態管理テーブル２２２に基づいてリングポート状態管理テーブル２２４を更新する。また、リングネットワークシステムの状態（障害が発生していない正常状態か、障害が発生している障害状態か）を監視し、監視結果に基づいてリングポート状態管理テーブル２２４を更新することにより、スタックを構成するスイッチのリングポートの設定を制御する。
【００４１】
転送エンジン２３０は、いずれかのポート２０１がリンク１０４を介して受信したデータを他のポート２０１に転送する。当該他のポート２０１は、転送されたデータを、そのポート２０１に接続されたリンク１０４を介して送信する。これによってスイッチ１０１Ｋのデータ転送機能が実現される。例えば、スイッチ１０１Ｋがレイヤ２スイッチである場合、スイッチ１０１Ｋは図示しないＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレステーブルを保持し、転送エンジン２３０は、受信したフレームのヘッダに含まれる宛先ＭＡＣアドレスとＭＡＣアドレステーブルとを照合して決定したポート２０１に当該フレームを転送する。また、転送エンジン２３０は、制御部２１０からの指示に従ってポート２０１の状態を変更する。
【００４２】
次に、スイッチ１０１が保持するテーブルについて、図３〜図６を参照して説明する。ここでは、例として、図２Ａ及び図２Ｂに示すスイッチ１０１Ｋが保持するテーブルを説明する。
【００４３】
図３は、本発明の実施例１のスイッチ１０１Ｋが保持するコンフィグレーションテーブル２２１の説明図である。
【００４４】
コンフィグレーションテーブル２２１は、各スイッチ１０１の設定情報を保持する。このテーブルに保持される設定情報は、後述するように、ユーザがコマンドを入力して設定するものである。保持された設定情報は、ユーザがコマンドを入力して変更するまで維持される。ユーザは、各スイッチ１０１の何れかのポートに接続される管理装置２４０に対してコマンドを入力し、管理装置２４０はコマンドによって入力された情報をコンフィグレーションテーブル２２１に設定する。また、管理装置２４０は、コマンドを入力する際に接続し、入力が完了すると、各スイッチ１０１から外してもよい。なお、後述するスタックのヘルスチェックフレームによって、スイッチ１０１Ｋとスイッチ１０１Ｌとが同じコンフィグレーションテーブル２２１を保持するように同期処理を行ってもよい。また、スイッチ１０１Ｋとスイッチ１０１Ｌとが保持するコンフィグレーションテーブル２２１の設定情報が同じになるように、スイッチ１０１Ｋとスイッチ１０１Ｌのそれぞれに対してユーザがコマンドを入力して設定してもよい。
【００４５】
図３に示すコンフィグレーションテーブル２２１は、スタックを構成するスイッチ１０１Ｋ及び１０１Ｌに対応するレコードを含み、各レコードは、スイッチ３０１、スタックプライオリティ３０２、スタックポート番号３０３、リングＩＤ３０４、リングモード３０５、リングポート番号３０６及びポートシャットダウン設定３０７を含む。
【００４６】
スイッチ３０１は、各スイッチ１０１の識別情報である。図３の例において、「スイッチ１」はスイッチ１０１Ｋを識別し、「スイッチ２」はスイッチ１０１Ｌを識別する。
【００４７】
スタックプライオリティ３０２は、各スイッチ１０１のスタックにおける優先度を示す。例えば、スタックプライオリティ３０２の値が大きいほど優先度が高いことを示す。この値は、スタックの運用を開始するときに、二つのスイッチのいずれをマスタスイッチとするかを決定するために参照される。例えば、スタックプライオリティ３０２が示す優先度が高いスイッチ１０１Ｋが最初にマスタスイッチとなる。
【００４８】
スタックポート番号３０３は、スタックリンクが接続されるスタックポートの識別情報である。図３の例では、「１／０／１」がポート２０１Ｂを識別し、「２／０／５」がポート２０１Ｅを識別する。この例において、例えば「２／０／５」の最初の「２」は当該ポート２０１Ｅを有するスイッチ１０１Ｌの番号、「０」はスロット番号、「５」はスイッチ１０１Ｌにおけるポート２０１Ｅの番号であるが、このような識別情報の形式は一例であり、実際にはどのような形式が使用されてもよい。また、図３に示すスイッチ１０１Ｋ及び１０１Ｌは、それぞれ一つのスタックポートを有しているが、実際には複数のスタックポートを有し、複数のスタックリンクによって相互に接続されてもよい。
【００４９】
リングＩＤ３０４は、スイッチ１０１Ｋ及び１０１Ｌが属するリング１０３Ｃの識別情報である。図３の例では、リング１０３ＣのリングＩＤ３０４は「２」である。図１に示すようにネットワークシステム１００が複数のリング１０３を有する場合、それぞれのリング１０３に固有の識別情報が与えられる。
【００５０】
リングモード３０５は、スイッチが属するノードのリングネットワークにおける属性を示す。具体的には、リングモード３０５は、スイッチ１０１Ｋ及び１０１Ｌを含むノードがマスタノード又はトランジットノードのいずれであるかを示す。図３の例では、ノード１０２Ｄがマスタノードであるため、リングモード３０５は「マスタ」となる。
【００５１】
詳細は後述するが、リングモード３０５が「マスタ」の場合、スタックを構成するスイッチ１０１Ｋ及び１０１Ｌを含むノードは、リングネットワークのマスタノードとして、二つのリングポートの各々からリングのヘルスチェックフレームをリングネットワーク上の隣接するノードに送信し、各々のヘルスチェックフレームをリングネットワーク上の隣接するノードから受信し終端して、障害を監視する。一方、リングモード３０５が「トランジット」の場合、スタックを構成するスイッチ１０１Ｋ及び１０１Ｌを含むノードは、リングネットワークのトランジットノードとして、一方のリングポートにてリングのヘルスチェックフレームをリングネットワーク上の隣接するノードから受信すると、それをもう一方のリングポートからリングネットワーク上の隣接するノードに送信し転送する。
【００５２】
リングポート番号３０６は、隣接するノードに接続されるリングポートの識別情報である。図３の例では、「１／０／４０」がポート２０１Ａを識別し、「２／０／３５」がポート２０１Ｄを識別する。ポートシャットダウン設定３０７は、各リングポートがシャットダウンされているか否かを示す。ポートシャットダウン設定３０７の値「shutdown」はリングポートがシャットダウンされていることを、「No shutdown」はシャットダウンされていないことを示す。図３の例では、いずれのリングポートもシャットダウンされていない。
【００５３】
以下、コンフィグレーションテーブル２２１に値を設定するためのコマンドの例を、図２Ａ及び図３に沿って示す。スイッチ１０１Ｋ又は１０１Ｌのリング１０３Ｃにおけるリングモード３０５をマスタモードに設定する場合、次のようなコマンドが使用される。
(config)# ring 2
(config-ring)# mode master
【００５４】
スイッチ１０１Ｋのポート２０１Ａ及びスイッチ１０１Ｌのポート２０１Ｄをリングポートとして設定する場合、次のようなコマンドが使用される。
(config)# interface 1/0/40
(config-if)# ring-port 2
(config-if)# exit
(config)# interface  2/0/35
(config-if)# ring-port 2
【００５５】
一方、スイッチ１０１Ｍ又は１０１Ｎのリング１０３Ｃにおけるリングモード３０５をトランジットモードに設定する場合、次のようなコマンドが使用される。
(config)# ring 2
(config-ring)# mode transit
【００５６】
スイッチ１０１Ｋのスタックプライオリティを「２０」に設定する場合、次のようなコマンドが使用される。
(config)# switch 1 priority 20
【００５７】
スイッチ１０１Ｋのポート２０１Ｂをスタックポートとして設定する場合、次のようなコマンドが使用される。
(config)# interface 1/0/1
(config-if)# switchport mode stack
(config-if)# exit
【００５８】
スイッチ１０１Ｋのポート２０１Ａをシャットダウンする場合、次のようなコマンドが使用される。
(config)# interface 1/0/40
(config-if)# shutdown
【００５９】
スイッチ１０１Ｋのポート２０１Ａのシャットダウンを解除する場合、次のようなコマンドが使用される。
(config)# interface 1/0/40
(config-if)# no shutdown
【００６０】
図４は、本発明の実施例１のスイッチ１０１Ｋが保持するスタック状態管理テーブル２２２の説明図である。
【００６１】
スタック状態管理テーブル２２２は、スタックを構成するスイッチ１０１がスタック状態を管理するために保持するテーブルである。
【００６２】
図４に示すスタック状態管理テーブル２２２は、スタックを構成するスイッチ１０１Ｋ及び１０１Ｌに対応するレコードを含み、各レコードは、スイッチ４０１及びスタック状態４０２を含む。スイッチ４０１は、図３のスイッチ３０１と同様に、スタックを構成する各スイッチ１０１の識別情報である。スタック状態４０２は、スタックにおける各スイッチの属性を示す。具体的には、スタック状態４０２は、スタックにおける各スイッチ１０１の状態がマスタ、バックアップ又は初期状態のいずれであるかを示す。図３の例は、スイッチ１０１Ｋがマスタスイッチであり、スイッチ１０１Ｌがバックアップスイッチであることを示す。例えば各スイッチ１０１の電源が投入された直後等、各スイッチ１０１がマスタスイッチ又はバックアップスイッチのいずれであるか定まっていない時点では、スタック状態４０２の値は「初期状態」となる。
【００６３】
図５は、本発明の実施例１のスイッチ１０１Ｋが保持するポートリンク状態管理テーブル２２３の説明図である。
【００６４】
ポートリンク状態管理テーブル２２３は、各スイッチ１０１の各ポート２０１の状態を管理するためのテーブルである。図５に示すポートリンク状態管理テーブル２２３は、スタックを構成するスイッチ１０１Ｋ及び１０１Ｌの各ポート２０１に対応するレコードを含み、各レコードは、スイッチ５０１、ポート番号５０２及びポート状態５０３を含む。
【００６５】
スイッチ５０１は、図３のスイッチ３０１と同様に、各スイッチ１０１の識別情報である。ポート番号５０２は、各スイッチ１０１の各ポート２０１の識別情報である。ポート状態５０３は、各ポート２０１の状態を示す情報であり、その値は「ＵＰ」又は「ＤＯＷＮ」のいずれかとなる。あるポート２０１が他のポート２０１に接続され、それらのポート２０１間の通信が可能である場合、それらのポート２０１のポート状態５０３は「ＵＰ」となる。あるポート２０１又はそのポート２０１に接続された他のスイッチ１０１のポート２０１のいずれかに障害が発生している場合、又は、そのポート２０１に何も接続されていない場合、そのポート２０１のポート状態５０３は「ＤＯＷＮ」となる。
【００６６】
さらに、障害等が発生しておらず、リンクも正常に接続されているポート２０１であっても、そのポートに関するポートシャットダウン設定３０７が「shutdown」となっている場合には、そのポート２０１のポート状態５０３は「ＤＯＷＮ」となる。ポート状態５０３が「ＤＯＷＮ」となっているポート２０１はデータフレーム、リングのヘルスチェックフレーム、スタックのヘルスチェックフレーム及びフラッシュ制御フレーム等を送受信することができない。
【００６７】
図６は、本発明の実施例１のスイッチ１０１Ｋが保持するリングポート状態管理テーブル２２４の説明図である。
【００６８】
リングポート状態管理テーブル２２４は、各ノードの各リングポートの状態を管理するためのテーブルである。具体的には、図６に示すリングポート状態管理テーブル２２４は、スイッチ１０１Ｋを含むノード１０２Ｄの各リングポートに対応するレコードを含み、各レコードは、スイッチ６０１、リングＩＤ６０２、リングポート番号６０３、リングポート６０４、リングポート状態６０５及びリング障害状態６０６を含む。
【００６９】
スイッチ６０１、リングＩＤ６０２及びリングポート番号６０３は、それぞれ、図３のスイッチ３０１、リングＩＤ３０４及びリングポート番号３０６に対応する。
【００７０】
リングポート６０４は、各リングポートがプライマリポート又はセカンダリポートのいずれであるかを示す。図６の例では、ポート２０１Ａがプライマリポート、ポート２０１Ｄがセカンダリポートである。マスタノードの二つのリングポートの一方が必ずプライマリポートとなり、もう一方が必ずセカンダリポートとなるように決定される限り、リングポート６０４はどのような方法で決定されてもよい。例えば、より若いスイッチ番号が与えられたスイッチ１０１のリングポートがプライマリポートとなってもよい。二つのリングポートが同一のスイッチ１０１に設けられる場合（すなわちスタックが構成されない場合）には、より若いポート番号が与えられたポートがプライマリポートとなってもよい。
【００７１】
リングポート状態６０５は、各リングポートの状態がフォワーディング又はブロッキングのいずれの状態であるかを示す。図６の例では、ポート２０１Ａの状態がフォワーディング、ポート２０１Ｄの状態がブロッキングである。なお、状態がフォワーディングであるポート２０１は、後述するヘルスチェックフレーム及びフラッシュ制御フレームのような、リングを制御又は管理するためのフレームだけでなく、ユーザデータを含むデータフレームも送受信する。これに対して、状態がブロッキングであるポート２０１は、リングを制御又は管理するためのフレームは送受信するが、データフレームは送受信しない。
【００７２】
初期状態においては、マスタノードの二つのリングポートのうち一方がフォワーディング、もう一方がブロッキングである必要がある。例えば、プライマリポートがフォワーディング、セカンダリポートがブロッキングであってもよい。一方、トランジットノードの二つのリングポートの初期状態はいずれもブロッキングであり、フラッシュ制御フレームを受信したときにいずれもフォワーディングに変更される。
【００７３】
リング障害状態６０６は、ノードが属するリングに障害が発生しているか否かを示す。図６の例では、リング１０３Ｃに障害が発生していない（すなわち正常である）。
【００７４】
図３〜図６には、図２Ａ等に示すスイッチ１０１Ｋが保持する情報を例示した。この例が示すように、スタックを構成するスイッチ１０１は、自スイッチ１０１に関する情報だけでなく、スタックを構成する相手方のスイッチに関する情報も保持する。そのために、スタックを構成するマスタスイッチ及びバックアップスイッチは、自スイッチに関する情報を相互に通信することによってテーブルの内容を同期する。したがって、図２Ａ等に示すスイッチ１０１Ｌも、スタックに障害が発生していない限り、図３〜図６に示したものと同一の情報を保持する。
【００７５】
ただし、リングポート状態管理テーブル２２４のリング障害状態６０６は、スイッチ１０１Ｋ及び１０１Ｌの間で引き継がれない。後述するようにマスタスイッチに障害が発生してバックアップスイッチが新たなマスタスイッチに遷移した場合、当該新たなマスタスイッチが改めてリング障害を検知して、当該リングが障害状態にあることを確認する。
【００７６】
一方、リングに属しているがスタックを構成しないスイッチ１０１（例えば図２Ａのスイッチ１０１Ｍ及び１０１Ｎ）は、スタックに関する情報を保持しない。例えばスイッチ１０１Ｍ及び１０１Ｎのコンフィグレーションテーブル２２１は、それぞれ、自スイッチ１０１Ｍ及び１０１Ｎが有する二つのリングポートに関する設定情報を含み、スタックプライオリティ３０２及びスタックポート番号３０３を含まない。また、スイッチ１０１Ｍ及び１０１Ｎは、スタック状態管理テーブル２２２を保持しない。スイッチ１０１Ｍ及び１０１Ｎのポートリンク状態管理テーブル２２３は、それぞれ、自スイッチ１０１Ｍ及び１０１Ｎのポートに関する情報のみを含む。スイッチ１０１Ｍ及び１０１Ｎのリングポート状態管理テーブル２２４は、自スイッチ１０１の二つのリングポートに関する情報を含む。
【００７７】
また、本実施例では、トランジットノードであるスイッチ１０１Ｍ及び１０１Ｎのリングポート状態管理テーブル２２４は、リング障害状態６０６を含まない。
【００７８】
ここで、図２Ａ〜図６を参照して、正常時（すなわちリング１０３Ｃのどの部分にも障害が発生していない場合）の各スイッチ１０１の動作について説明する。
【００７９】
図２Ａの例において、ノード１０２Ｄはリング１０３Ｃのマスタノードであり、ノード１０１Ｍ及び１０１Ｎはトランジットノードである。また、ノード１０２Ｄは、スイッチ１０１Ｋ及び１０１Ｌからなるスタック構成のノードであり、スイッチ１０１Ｋがマスタスイッチ、スイッチ１０１Ｌがバックアップスイッチである。
【００８０】
ここで、まず、マスタノード及びトランジットノードについて説明する。マスタノードは、一つのリングに一つのみ存在するノードであり、ヘルスチェックフレームを用いてリングの障害状態を監視する。具体的には、マスタノードは、二つのリングポートからヘルスチェックフレームを送信し、所定の時間内に両方向のヘルスチェックフレームを受信するか否かを監視する。マスタノードは、監視によってリングの障害が検出されない場合、二つのリングポートのうち一方の状態をフォワーディング、もう一方の状態をブロッキングに設定し、障害が検出された場合、ブロッキングとなっていたリングポートの状態をフォワーディングに変更する。
【００８１】
一方、トランジットノードは、一方のリングポートがヘルスチェックフレームを受信すると、そのヘルスチェックフレームを、もう一方のリングポートから、リング上の隣接するノードに転送する。また、トランジットノードの二つのリングポートのいずれも、データフレームを送受信する。マスタノードは、トランジットノードをこのように経由したヘルスチェックフレームの受信状況により障害監視を行う。なお、トランジットノードは、リングのヘルスチェックフレームを用いた障害監視を行わなくてもよい。
【００８２】
次に、マスタスイッチ及びバックアップスイッチについて説明する。マスタスイッチは、スタックを構成する全てのメンバスイッチ及びその機能を制御するスイッチであり、バックアップスイッチは、マスタスイッチからの制御に従って動作するスイッチである。特に、リングに属するスタック構成のノードのマスタスイッチは、マスタスイッチが有するリングポートの状態（フォワーディング又はブロッキング）を設定し、さらに、バックアップスイッチが有するリングポートの状態も設定する。当該ノードがマスタノードである場合、マスタスイッチはマスタノードとしての機能を実現するための処理を実行する。一方、バックアップスイッチは、マスタスイッチに障害が発生した場合にマスタスイッチとなる。具体的には、マスタスイッチ及びバックアップスイッチは、スタックポートを介して相互にヘルスチェックフレームを送信し、所定の期間ヘルスチェックフレームを受信できなかった場合は相手方のスイッチに障害が発生したと判定する。
【００８３】
なお、以下の説明において、リングの障害監視のためにマスタノードが送受信するヘルスチェックフレームをリングのヘルスチェックフレーム、スタックの障害監視のためにマスタスイッチ及びバックアップスイッチが相互に送信するヘルスチェックフレームをスタックのヘルスチェックフレームとも記載する。
【００８４】
図２Ａの例において、マスタノード１０２Ｄのマスタスイッチ１０１Ｋは、ポート２０１Ａ及び２０１Ｂから、それぞれリングのヘルスチェックフレームを送信する。ポート２０１Ａから送信されたリングのヘルスチェックフレームは、トランジットノードであるスイッチ１０１Ｎ及び１０１Ｍによって順次転送され、バックアップスイッチ１０１Ｌのポート２０１Ｄに到着する。バックアップスイッチ１０１Ｌは、受信したリングのヘルスチェックフレームをポート２０１Ｅからスタックリンク１０４Ｌを経由してマスタスイッチ１０１Ｋのポート２０１Ｂに送信する。
【００８５】
その反対に、ポート２０１Ｂから送信されたリングのヘルスチェックフレームは、バックアップスイッチ１０１Ｌ、トランジットノードであるスイッチ１０１Ｍ及び１０１Ｎによって順次転送され、マスタスイッチ１０１Ｋのポート２０１Ａに到着する。マスタスイッチ１０１Ｋは、ポート２０１Ａから送信したリングのヘルスチェックフレームをポート２０１Ｂから受信し、ポート２０１Ｂから送信したリングのヘルスチェックフレームをポート２０１Ａから受信すると、リング１０３Ｃに障害が発生していないと判定する。
【００８６】
このようにリング１０３Ｃに障害が発生していない場合、マスタノード１０２Ｄの二つのリングポートのうちプライマリポートであるポート２０１Ａの状態はフォワーディング、セカンダリポートであるポート２０１Ｄの状態はブロッキングである。この状態において、例えば、ノード１０２Ｄがスイッチ１０１Ｏからデータフレームを受信し、その宛先がリンク１０４Ｓの接続先のネットワーク装置（図示省略）である場合の当該データフレームの流れを説明する。
【００８７】
スイッチ１０１Ｏから送信されたデータフレームは、リンク１０４Ｐを経由してポート２０１Ｃが、又はリンク１０４Ｑを経由してポート２０１Ｆが受信する。ポート２０１Ｄの状態がブロッキングであるため、ポート２０１Ｆがデータフレームを受信した場合、スイッチ１０１Ｌは、当該データフレームをポート２０１Ｅからスイッチ１０１Ｋに送信する。スイッチ１０１Ｋは、ポート２０１Ｂ又は２０１Ｃから受信したデータフレームをポート２０１Ａから送信する。スイッチ１０１Ｎは、リンク１０４Ｏを経由して受信したデータフレームを、リンク１０４Ｓの接続先に転送する。
【００８８】
仮に、データフレームの送信先がリンク１０４Ｒの接続先のネットワーク装置であれば、スイッチ１０１Ｎは、受信したデータフレームをスイッチ１０１Ｍに転送する。スイッチ１０１Ｍは、受信したデータフレームをリンク１０４Ｒの接続先のネットワーク装置に転送する。このように、リング１０３Ｃに障害が発生していなければ、リング１０３Ｃに属する任意の二つのノード間にデータフレームの通信経路を設定することができる。その一方で、ポート２０１Ｄの状態がブロッキングであるため、データフレームがリング１０３Ｃ内を循環することは防止される。
【００８９】
次に、リングに障害が発生した場合のスイッチ１０１の動作について説明する。
【００９０】
図７は、本発明の実施例１のネットワークシステムにおいてマスタノードを構成するマスタスイッチに障害が発生した場合の動作を示す説明図である。
【００９１】
図７に示すリング１０３Ｄは、図２Ａのリング１０３Ｃと同様のスイッチ１０１Ｋ〜１０１Ｎに加えて、スイッチ１０１Ｐを含む。スイッチ１０１Ｋがスイッチ１０１Ｐに接続され、スイッチ１０１Ｐがスイッチ１０１Ｎに接続されることを除いて、リング１０３Ｄのスイッチ１０１間の接続関係は、リング１０３Ｃに示したものと同様である。また、図７ではポート２０１等が省略されているが、スイッチ１０１Ｋ〜１０１Ｎの構成は図２Ａ〜図６を参照して説明した通りであり、スイッチ１０１Ｐの構成はスイッチ１０１Ｎ等と同様である。
【００９２】
以下、リング１０３Ｄの外のネットワーク装置（例えばスイッチ１０１Ｏ）からマスタノード１０２Ｄが受信したデータフレームが、リング１０３Ｄを通過して、スイッチ１０１Ｎからリング１０３Ｄの外のネットワーク装置に送信される例を説明する。マスタスイッチであるスイッチ１０１Ｋは、リングのヘルスチェックフレームによる障害監視を実行する。リングに障害が発生していない時点において、データフレームは、フォワーディング状態のポート２０１Ａから送信され、スイッチ１０１Ｐ及び１０１Ｎによって順次転送される。さらに、スイッチ１０１Ｋ及び１０１Ｌは、相互にスタックのヘルスチェックフレームによる障害監視を実行する。上記のような障害監視が実行されている状態を以下の説明において障害監視状態とも記載する。
【００９３】
その後、スイッチ１０１Ｋに障害が発生すると、スイッチ１０１Ｋからリングのヘルスチェックフレーム及びスタックのヘルスチェックフレームが送信されなくなる。バックアップスイッチであるスイッチ１０１Ｌは、スイッチ１０１Ｋからのスタックのヘルスチェックフレームを受信しなくなったときにスイッチ１０１Ｋの障害を検知し、自身が保持するスタック状態管理テーブル２２２のスイッチ１０１Ｌに対応するスタック状態４０２を「バックアップ」から「マスタ」に変更する。これによって、スイッチ１０１Ｌが新たなマスタスイッチとなる。
【００９４】
次に、スイッチ１０１Ｌは、自身が保持するリングポート状態管理テーブル２２４のリングポート２０１Ｄに対応するリングポート状態６０５を「ブロッキング」から「フォワーディング」に変更する。さらに、スイッチ１０１Ｌは、リング１０３Ｄにフラッシュ制御フレームを送信する。フラッシュ制御フレームは、スイッチ１０１Ｌから、スイッチ１０１Ｍ、１０１Ｎ及び１０１Ｐに順次転送される。スイッチ１０１Ｌ及びフラッシュ制御フレームを受信したスイッチ１０１Ｍ、１０１Ｎ及び１０１Ｐは、各々が保持するＭＡＣアドレステーブル（図示省略）をクリアする。
【００９５】
これによって、データフレームの転送経路が、スイッチ１０１Ｌからスイッチ１０１Ｍを経由してスイッチ１０１Ｎに至る経路に切り替えられる。スイッチ１０１Ｋに障害が発生することによってスイッチ１０１Ｋからスイッチ１０１Ｐを経由してスイッチ１０１Ｎに至る経路を使用できなくなるが、上記のように経路を切り替えることによってデータフレームの転送を継続することができる。スイッチ１０１Ｋに障害が発生しているため、リングポート２０１Ｄの状態をフォワーディングに変更してもデータフレームはリング１０３Ｄ内を循環しない。
【００９６】
さらに、スイッチ１０１Ｌは、マスタスイッチとなったため、リングのヘルスチェックフレームの双方向（すなわちスイッチ１０１Ｋの方向及びスイッチ１０１Ｍの方向）への送信を開始する。また、スイッチ１０１Ｌは、引き続きスタックのヘルスチェックフレームによる障害監視も実行する。これによって、スイッチ１０１Ｌは、スイッチ１０１Ｋが引き続き障害状態にある場合には、リング１０３Ｃが障害状態にあることを認識し、スイッチ１０１Ｋが復旧した場合にはその復旧を検知することができる。このように、障害からの復旧を監視する状態を、以下の説明において復旧監視状態とも記載する。
【００９７】
図８は、本発明の実施例１のネットワークシステムにおいてマスタノードを構成するバックアップスイッチに障害が発生した場合の動作を示す説明図である。
【００９８】
図８に示すリング１０３Ｄは、ノード１０２Ｄの二つのリングポートのうち、スイッチ１０１Ｋのポート２０１Ａがセカンダリポートであり、スイッチ１０１Ｌのポート２０１Ｄがプライマリポートであることを除いて、図７に示したリング１０３Ｄと同様である。ただし、この変更は説明のためのものであり、例えばスタックプライオリティ３０２に応じてリングポート６０４が決定される場合には、実際には、コンフィグレーションテーブル２２１を変更しない限り、プライマリポート及びセカンダリポートは変更されない。
【００９９】
この例において、リング１０３Ｄに障害が発生していない場合、ポート２０１Ｄの状態がフォワーディング、ポート２０１Ａの状態がブロッキングであるため、ノード１０２Ｄからスイッチ１０１Ｎに至るデータフレームは、スイッチ１０１Ｌ、１０１Ｍ及び１０１Ｎによって順次転送される。
【０１００】
マスタスイッチであるスイッチ１０１Ｋは、リングのヘルスチェックフレームによる障害監視を実行する。さらに、スイッチ１０１Ｋ及び１０１Ｌは、スタックのヘルスチェックフレームを用いてスタックの障害監視を実行する。スイッチ１０１Ｋは、スタックの障害監視によってスイッチ１０１Ｌの障害を検知した場合、リング１０３Ｄにフラッシュ制御フレームを送信する。スイッチ１０１Ｋ及びフラッシュ制御フレームを受信したスイッチ１０１Ｐ、１０１Ｎ及び１０１Ｍは、各々が保持するＭＡＣアドレステーブルをクリアする。
【０１０１】
さらに、スイッチ１０１Ｋは、自身が保持するリングポート状態管理テーブル２２４のリングポート２０１Ａに対応するリングポート状態６０５を「ブロッキング」から「フォワーディング」に変更する。
【０１０２】
これによって、データフレームの転送経路が、スイッチ１０１Ｋからスイッチ１０１Ｐを経由してスイッチ１０１Ｎに至る経路に切り替えられる。スイッチ１０１Ｌに障害が発生することによってスイッチ１０１Ｌからスイッチ１０１Ｍを経由してスイッチ１０１Ｎに至る経路を使用できなくなるが、上記のように経路を切り替えることによってデータフレームの転送を継続することができる。
【０１０３】
スイッチ１０１Ｋは、復旧監視状態へ遷移する。具体的には、スイッチ１０１Ｋは、引き続き、リングのヘルスチェックフレームを双方向に送信する。また、スイッチ１０１Ｋは、引き続きスタックのヘルスチェックフレームによる障害監視も実行する。これによって、スイッチ１０１Ｋは、スイッチ１０１Ｌが復旧した場合にはその復旧を検知することができる。
【０１０４】
図９は、本発明の実施例１のネットワークシステムにおいてマスタノードを構成するスイッチが障害から復旧した場合の動作を示す説明図である。
【０１０５】
具体的には、図９には、図８に示した障害が復旧した場合の動作を示す。スイッチ１０１Ｌは、障害から復旧すると、バックアップスイッチとしてスタックに加入する。次に、スイッチ１０１Ｋは、セカンダリポートであるポート２０１Ａの状態をブロッキングに変更する。さらに、スイッチ１０１Ｋは、フラッシュ制御フレームを送信する。その結果、リング１０３Ｄの各スイッチのＭＡＣアドレステーブルがクリアされる。これによって、データフレームの転送経路が、スイッチ１０１Ｌからスイッチ１０１Ｍを経由してスイッチ１０１Ｎに至る経路に切り替えられる。その後、スイッチ１０１Ｋ及び１０１Ｌは、障害監視状態へ遷移する。
【０１０６】
図１０は、本発明の実施例１のネットワークシステムにおいてトランジットノードを構成するマスタスイッチに障害が発生した場合の動作を示す説明図である。
【０１０７】
図１０に示すリング１０３Ｄにおけるスイッチ１０１間の接続関係は図７〜図９と同様であるが、スイッチ１０１Ｍがマスタノードであり、スイッチ１０１Ｋ及び１０１Ｌがスタック構成のトランジットノードである点は相違する。また、障害が発生する前の時点で、スイッチ１０１Ｋがマスタスイッチである。
【０１０８】
この例において、スイッチ１０１Ｋに障害が発生すると、バックアップスイッチであったスイッチ１０１Ｌがマスタスイッチに遷移する。一方、スイッチ１０１Ｍは、リングのヘルスチェックフレームを用いた障害監視によってリング障害を検出すると、障害動作を実行する。具体的には、スイッチ１０１Ｍは、セカンダリポートの状態をフォワーディングに変更し、フラッシュ制御フレームを送信する。これによって、スイッチ１０１Ｍ及びフラッシュ制御フレームを受信したスイッチ１０１（スイッチ１０１Ｌを含む）のＭＡＣアドレステーブルがクリアされる。
【０１０９】
これによって、データフレームの転送経路が、スイッチ１０１Ｌからスイッチ１０１Ｍを経由してスイッチ１０１Ｎに至る経路に切り替えられる。そして、スイッチ１０１Ｍは、復旧監視状態へ遷移する。
【０１１０】
図１１は、本発明の実施例１のネットワークシステムにおいてトランジットノードを構成するスイッチが障害から復旧した場合の動作を示す説明図である。
【０１１１】
具体的には、図１１には、図１０に示した障害が復旧した場合の動作を示す。スイッチ１０１Ｋは、障害から復旧すると、バックアップスイッチとしてスタックに加入する。次に、スイッチ１０１Ｍは、リングのヘルスチェックフレームを用いた障害監視によってリング障害の復旧を検出して、復旧動作を実行する。具体的には、スイッチ１０１Ｍは、セカンダリポートの状態をブロッキングに変更し、フラッシュ制御フレームを送信する。これによって、スイッチ１０１Ｍ及びフラッシュ制御フレームを受信したスイッチ１０１（スイッチ１０１Ｌを含む）のＭＡＣアドレステーブルがクリアされる。
【０１１２】
これによって、データフレームの転送経路が、スイッチ１０１Ｌからスイッチ１０１Ｐを経由してスイッチ１０１Ｎに至る経路に切り替えられる。そして、スイッチ１０１Ｍは、障害監視状態へ遷移する。
【０１１３】
なお、図１０及び図１１に示すように、本実施例では、障害発生前にマスタスイッチであったスイッチ１０１Ｋは、障害から復旧した後、バックアップスイッチとしてスタックに加入する。しかし、このような動作は一例であり、実際にはスイッチ１０１Ｋが再びマスタスイッチとしてスタックに加入してもよい。例えば、スイッチ１０１Ｋの復旧が検出されると、スタックプライオリティ３０２に基づいて、優先度の高いスイッチ１０１Ｋがマスタスイッチとなってもよい。その場合、スイッチ１０１Ｌはマスタスイッチからバックアップスイッチへ遷移する。ノード１０２Ｄがマスタノードである場合も同様である。
【０１１４】
次に、ここまでに説明した動作を実現するためにスイッチ１０１の各部が実行する具体的な処理について、フローチャートを参照して説明する。
【０１１５】
図１２は、本発明の実施例１のインタフェース制御部２１４が実行する処理のフローチャートである。
【０１１６】
インタフェース制御部２１４は、ポートの状態変化（リンクアップ又はリンクダウン）を検出すると（ステップ１２０１）、その変化がリンクアップ又はリンクダウンのいずれであるかを判定する（ステップ１２０２）。リンクアップが検出された場合、インタフェース制御部２１４は、ポートリンク状態管理テーブル２２３における当該ポート（すなわち状態変化が検出されたポート）のポート状態５０３を「ＵＰ」に変更する（ステップ１２０３）。
【０１１７】
次に、インタフェース制御部２１４は、スタックを構成するスイッチ間でポートリンク状態管理テーブル２２３を同期する（ステップ１２０４）。例えばスイッチ１０１Ｋのインタフェース制御部２１４がいずれかのポート２０１の状態変化を検出した場合、ステップ１２０３で「スイッチ１」に対応するいずれかのポート状態５０３が変更され、ステップ１２０４でその変更の内容がスタックリンク１０４Ｌを経由してスイッチ１０１Ｌに通知される。スイッチ１０１Ｌのインタフェース制御部２１４はその通知に従ってポートリンク状態管理テーブル２２３の当該ポートのポート状態５０３を変更する。これによって、スタックを構成する二つのスイッチのポートリンク状態管理テーブル２２３の内容が同一になる。
【０１１８】
次に、インタフェース制御部２１４は、コンフィグレーションテーブル２２１又はリングポート状態管理テーブル２２４を参照して、当該ポートがリングポートであるか否かを判定する（ステップ１２０５）。当該ポートがリングポートである場合、インタフェース制御部２１４は、スタック状態管理テーブル２２２を参照して、当該スイッチ（すなわちこの処理を実行しているインタフェース制御部２１４が属するスイッチ１０１）のスタック状態４０２がマスタスイッチであるか否かを判定する（ステップ１２０６）。当該スイッチのスタック状態４０２がマスタスイッチである場合、インタフェース制御部２１４は、ポートリンク状態変更をリング制御部２１３に通知する（ステップ１２０７）。
【０１１９】
次に、インタフェース制御部２１４は、コンフィグレーションテーブル２２１を参照して、当該ポートがスタックポートであるか否かを判定する（ステップ１２０８）。当該ポートがスタックポートである場合、インタフェース制御部２１４は、ポートリンク状態変更をスタック管理／制御部２１２に通知する（ステップ１２０９）。
【０１２０】
ステップ１２０５において当該ポートがリングポートでないと判定されたか、又は、ステップ１２０６において当該スイッチのスタック状態４０２がマスタスイッチでない（すなわちバックアップスイッチ又は初期状態である）と判定された場合、インタフェース制御部２１４はステップ１２０７を実行しない。ステップ１２０８において当該ポートがスタックポートでないと判定された場合、インタフェース制御部２１４はステップ１２０９を実行しない。
【０１２１】
ステップ１２０２においてリンクダウンが検出されたと判定された場合、インタフェース制御部２１４は、ポートリンク状態管理テーブル２２３における当該ポートのポート状態５０３を「ＤＯＷＮ」に変更する（ステップ１２１０）。インタフェース制御部２１４がステップ１２１０に続いて実行するステップ１２１１〜１２１６は、それぞれステップ１２０４〜１２０９と同様であるため、説明を省略する。
【０１２２】
以上でインタフェース制御部２１４が実行する処理が終了する。インタフェース制御部２１４は、ポートの状態変化を検出する度に上記のステップ１２０１〜１２１６を実行する。
【０１２３】
図１３は、本発明の実施例１のプロトコル共通制御部２１１が実行する処理のフローチャートである。
【０１２４】
プロトコル共通制御部２１１は、当該スイッチ（すなわちこの処理を実行しているプロトコル共通制御部２１１が属するスイッチ１０１）がスタックポートを有しているか否かを判定する（ステップ１３０１）。当該スイッチがスタックポートを有している（すなわち当該スイッチがスタックを構成している）場合、プロトコル共通制御部２１１は、当該スタックポートからスタックのヘルスチェックフレームを送信する（ステップ１３０２）。送信されるスタックのヘルスチェックフレームは、そのフレームがスタックのヘルスチェックフレームであることを示す情報、当該スイッチのスタック状態４０２、当該スイッチのスタックプライオリティ３０２、当該スイッチの識別情報（すなわちスイッチ３０１）、及び当該スイッチのスタックポート番号３０３等のデータを含む。各スイッチ１０１は、必要に応じて、例えば図３〜図６に示したテーブルの情報のような、それぞれが保持している情報をスタックリンク経由で（例えばスタックのヘルスチェックフレームに含めて）通信することによって、保持している情報を相手スイッチとの間で同期することができる。
【０１２５】
次に、プロトコル共通制御部２１１は、当該スイッチがリングのマスタノードであるか否かを判定する（ステップ１３０３）。当該スイッチがリングのマスタノードである場合、プロトコル共通制御部２１１は、当該スイッチがスタックのマスタスイッチであるか否かを判定する（ステップ１３０４）。当該スイッチがスタックのマスタスイッチである場合、プロトコル共通制御部２１１は、当該スイッチのリングポートからリングのヘルスチェックフレームを送信する（ステップ１３０５）。リングのヘルスチェックフレームは、少なくとも、そのフレームがリングのヘルスチェックフレームであることを示す情報を含む。
【０１２６】
ステップ１３０１において当該スイッチがスタックポートを有しないと判定された場合、プロトコル共通制御部２１１はステップ１３０２を実行しない。ステップ１３０３において当該スイッチがリングのマスタノードでないと判定されたか、又は、ステップ１３０４において当該スイッチがスタックのマスタスイッチでないと判定された場合、プロトコル共通制御部２１１はステップ１３０５を実行しない。
【０１２７】
以上でプロトコル共通制御部２１１が実行する処理が終了する。プロトコル共通制御部２１１は、繰り返し（例えば定期的に）上記のステップ１３０１〜１３０５を実行する。なお、実際には、プロトコル共通制御部２１１は、ステップ１３０１〜１３０２とステップ１３０３〜１３０５とを独立に実行してもよい。例えば、プロトコル共通制御部２１１がスタックのヘルスチェックフレームを送信する間隔とリングのヘルスチェックフレームを送信する間隔とが異なってもよい。
【０１２８】
図１４は、本発明の実施例１のスタック管理／制御部２１２が実行する処理のフローチャートである。
【０１２９】
スタック管理／制御部２１２は、最初に、当該スイッチ（すなわちこの処理を実行しているスタック管理／制御部２１２が属するスイッチ１０１）のスタック状態４０２が初期状態であるか否かを判定する（ステップ１４０１）。例えば、当該スイッチがスタックの新たな（又は障害から復旧した）メンバスイッチとして追加された場合、当該スイッチのスタック状態４０２は初期状態である。
【０１３０】
当該スイッチのスタック状態４０２が初期状態である場合、スタック管理／制御部２１２は、スタックのヘルスチェックフレームを受信したか否かを判定する（ステップ１４０２）。スタック管理／制御部２１２が所定の時間内にスタックのヘルスチェックフレームを受信しなかった（すなわちタイムアウトした）場合、当該スイッチが属するスタックの相手スイッチ（例えば当該スイッチがスイッチ１０１Ｋである場合、スイッチ１０１Ｌ）に障害が発生している可能性があるため、当該スイッチがマスタスイッチとなる必要がある。このため、スタック管理／制御部２１２は、当該スイッチのスタック状態４０２をマスタに変更する（ステップ１４０３）。
【０１３１】
ステップ１４０２においてスタック管理／制御部２１２が所定の時間内にスタックのヘルスチェックフレームを受信した場合、スタック管理／制御部２１２は、受信したスタックのヘルスチェックフレームに含まれるスタック状態を参照して、相手スイッチの状態がマスタであるか否かを判定する（ステップ１４０４）。相手スイッチの状態がマスタである場合、スタック管理／制御部２１２は、当該スイッチのスタック状態４０２をバックアップに変更する（ステップ１４０５）。例えば、図９又は図１１に示すように障害から復旧したスイッチ１０１Ｌのスタック管理／制御部２１２は、相手スイッチ１０１Ｋがマスタスイッチであるため、ステップ１４０５においてバックアップスイッチとしてスタックに加入される。
【０１３２】
ステップ１４０４において、相手スイッチの状態がマスタでないと判定された場合、スタック管理／制御部２１２は、当該スイッチと相手スイッチのスタックプライオリティ３０２を比較する（ステップ１４０６）。その結果、当該スイッチの優先度が高い場合、スタック管理／制御部２１２は、当該スイッチのスタック状態４０２をマスタに変更し（ステップ１４０７）、当該スイッチの優先度が低い場合、当該スイッチのスタック状態４０２をバックアップに変更する（ステップ１４０８）。
【０１３３】
ステップ１４０５、１４０７又は１４０８でスタック状態４０２が変更された場合、次に、スタック管理／制御部２１２は、スタックを構成するスイッチ間でポートリンク状態管理テーブル２２３及びスタック状態管理テーブル２２２を同期する（ステップ１４０９）。この同期は、当該スイッチが有するポートリンク状態管理テーブル２２３及びスタック状態管理テーブル２２２に含まれる各情報のうち当該スイッチに関する各情報を相手スイッチへ送信し、相手スイッチが送信した相手スイッチに関するポートリンク状態管理テーブル２２３及びスタック状態管理テーブル２２２に含まれる各情報によって、ポートリンク状態管理テーブル２２３及びスタック状態管理テーブル２２２に含まれる各情報のうち相手スイッチに関する各情報を更新することによって実行される。また、ポートリンク状態管理テーブル２２３及びスタック状態管理テーブル２２２に含まれる各情報のうち当該スイッチに関する各情報の全てを更新対象として送信して更新してもよいし、変更された各情報のみを更新対象として送信して更新してもよい。例えば、当該スイッチが変更されたスタック状態４０２をスタックのヘルスチェックフレームに含めて送信し、相手スイッチが受信したスタック状態４０２に基づいてスタック状態管理テーブル２２２を変更することによって実行される。また、本実施例では明記していないが、スタックのヘルスチェックフレームは、各スイッチが固有で持つ情報（ＭＡＣ学習情報など）を定期的に同期することに用いる。
【０１３４】
ステップ１４０３でスタック状態４０２が変更されたか、又はステップ１４０９でテーブルが同期した場合、次に、スタック管理／制御部２１２は、当該スイッチが追加されたことをリング制御部２１３に通知する（ステップ１４１０）。
【０１３５】
ステップ１４０１において、当該スイッチのスタック状態４０２が初期状態でない（すなわちマスタ又はバックアップである）と判定された場合、スタック管理／制御部２１２は、当該スイッチのスタックポートのポート状態５０３が変更されたか否かを判定する（ステップ１４１１）。この状態変更は、図１２のステップ１２０９又は１２１９において通知されるものである。ポート状態５０３が変更されていない場合、スタック管理／制御部２１２は、スタックのヘルスチェックフレームを受信したか否かを判定する（ステップ１４１２）。スタックのヘルスチェックフレームを受信した場合、スタック管理／制御部２１２は、スタックを構成するスイッチ間でポートリンク状態管理テーブル２２３及びスタック状態管理テーブル２２２を同期する（ステップ１４１３）。同期方法については、ステップ１４０９と同様である。
【０１３６】
ステップ１４１１において、当該スイッチのスタックポートのポート状態５０３が変更されたと判定された場合、スタック管理／制御部２１２は、当該スイッチのスタックポートの変更されたポート状態５０３を判定する（ステップ１４１４）。その結果、全てのスタックポートのポート状態５０３が「ＤＯＷＮ」であると判定された場合、当該スイッチは、相手スイッチの障害又はスタックリンクの障害等によって相手スイッチと通信できない状態にある。この場合、当該スイッチがバックアップスイッチであればマスタスイッチとなる必要があるため、スタック管理／制御部２１２は、当該スイッチのスタック状態４０２を判定する（ステップ１４１５）。なお、ステップ１４１２においてタイムアウトが検出された場合にもスタックが上記と同様の状態であるため、スタック管理／制御部２１２はステップ１４１５を実行する。
【０１３７】
ステップ１４１５においてスタック状態４０２がバックアップであると判定された場合、スタック管理／制御部２１２は、当該スイッチのスタック状態４０２をマスタに変更する（ステップ１４１６）。次に、スタック管理／制御部２１２は、当該スイッチのリングモード３０５がマスタであるか否かを判定する（ステップ１４１７）。リングモード３０５がマスタである場合、スタック管理／制御部２１２は、当該スイッチが新たにマスタスイッチとなったことをリング制御部２１３に通知する（ステップ１４１８）。
【０１３８】
ステップ１４１７においてリングモード３０５がトランジットであると判定された場合、スタック管理／制御部２１２はステップ１４１８を実行しない。ステップ１４１５においてスタック状態４０２がマスタであると判定された場合、スタック管理／制御部２１２はステップ１４１６〜１４１８を実行しない。
【０１３９】
ステップ１４１４において、全てのスタックポートのポート状態５０３が「ＤＯＷＮ」でない（すなわち少なくとも一つのスタックポートのポート状態５０３が「ＵＰ」である）と判定された場合、スタック管理／制御部２１２は、スタックのヘルスチェックフレームを受信したか否かを判定する（ステップ１４１９）。スタックのヘルスチェックフレームを受信した場合、スタック管理／制御部２１２は、スタックを構成するスイッチ間でポートリンク状態管理テーブル２２３及びスタック状態管理テーブル２２２を同期する（ステップ１４２０）。この同期方法については、ステップ１４０９と同様である。例えば、当該スイッチが、ステップ１４１１で変更されたと判定されたポート状態５０３及びそれに対応するスイッチ５０１及びポート番号５０２の値をスタックのヘルスチェックフレームに含めて送信し、相手スイッチが受信した値に基づいてポートリンク状態管理テーブル２２３を変更することによって実行される。
【０１４０】
ステップ１４１９においてタイムアウトが検出された場合、スタック管理／制御部２１２はステップ１４２０を実行しない。
【０１４１】
以上でスタック管理／制御部２１２の処理が終了する。図１４のフローは、定期的に行ってもよく、リングネットワークに新たにスイッチを追加した場合や、当該スイッチを再起動した場合、または外部からの処理の開始指示の入力を受けた場合に行ってもよい。
【０１４２】
図１５Ａ及び図１５Ｂは、本発明の実施例１のリング制御部２１３が実行する処理のフローチャートである。
【０１４３】
最初に、リング制御部２１３は、スイッチ追加通知を受けたか否かを判定する（ステップ１５０１）。このスイッチ追加通知は、スタック管理／制御部２１２がステップ１４１０で送信するものである。スイッチ追加通知を受けた場合、リング制御部２１３は、当該スイッチ（すなわちこの処理を実行しているリング制御部２１３が属するスイッチ１０１）のスタック状態４０２を判定する（ステップ１５０２）。スタック状態４０２がバックアップである場合、リング制御部２１３は、当該スイッチと当該スイッチが属するスタックの相手スイッチとの間でリングポート状態管理テーブル２２４を同期する（ステップ１５０３）。この同期方法については、図１４のステップ１４０９と同様である。
【０１４４】
ステップ１５０２において、スタック状態４０２がマスタであると判定された場合、リング制御部２１３は、当該スイッチのリングモード３０５を判定する（ステップ１５０４）。リングモード３０５がトランジットである場合、リング制御部２１３は、リングポート状態を初期化する（プライマリポート、セカンダリポート共にブロッキング）する（ステップ１５０５）。一方、リングモード３０５がマスタである場合、リング制御部２１３は、リングポート状態を初期化（プライマリポートはフォワーディング、セカンダリポートはブロッキング）し（ステップ１５０６）、さらに、リングのフラッシュ制御フレームを送信する（ステップ１５０７）。
【０１４５】
ステップ１５０１においてスイッチ追加通知を受けなかったと判定された場合、リング制御部２１３は、当該スイッチのリングモード３０５を判定する（ステップ１５０８）。当該スイッチのリングモード３０５がマスタである場合、リング制御部２１３は、当該スイッチのスタック状態４０２を判定する（ステップ１５０９）。当該スイッチのスタック状態４０２がマスタである場合、リング制御部２１３は、リングのヘルスチェックフレームを受信したか否かを判定する（ステップ１５１０）。ステップ１５１０においてタイムアウトが検出された場合、当該スイッチが属するリングのいずれかの部位（例えば当該スイッチが属するスタックの相手スイッチ、又は当該リングのトランジットノード）に障害が発生しているため、リング制御部２１３は、当該スイッチのリング障害状態６０６を障害に変更する（ステップ１５１１）。
【０１４６】
次に、リング制御部２１３は、当該スイッチが属するノードのセカンダリポートのリングポート状態６０５がブロッキングであるか否かを判定する（ステップ１５１２）。セカンダリポートのリングポート状態６０５がブロッキングである場合、リング制御部２１３は、セカンダリポートのリングポート状態６０５をフォワーディングに変更する（ステップ１５１３）。これによって、図８に示すセカンダリポートの状態変更が実現される。次に、リング制御部は、リングのフラッシュ制御フレームを送信する（ステップ１５１４）。
【０１４７】
ここで、図７及び図８とは異なるいくつかの場合におけるステップ１５１３の処理を説明する。図８にはバックアップスイッチであるスイッチ１０１Ｌに障害が発生した例を示しているが、スイッチ１０１Ｌは正常であり、いずれかのトランジットノード（例えばスイッチ１０１Ｍ等）に障害が発生した場合にも、上記と同様の処理が実行され、セカンダリポート２０１Ａのリングポート状態６０５がフォワーディングに変更される。その結果、プライマリポート２０１Ｄ及びセカンダリポート２０１Ａのいずれのリングポート状態６０５もフォワーディングとなる。これによって、通信経路の切り替えが可能となる一方で、トランジットノードの障害のため、データフレームが循環するループは形成されない。
【０１４８】
一方、図７に示すように、マスタスイッチ１０１Ｋのポート２０１Ａがプライマリポートであり、バックアップスイッチ１０１Ｌのポート２０１Ｄがセカンダリポートである場合において、マスタスイッチ１０１Ｋ及びバックアップスイッチ１０１Ｌのいずれでもなく、いずれかのトランジットノードに障害が発生したとき、マスタスイッチ１０１Ｋのリング制御部２１３は、ステップ１５１３において、ポート２０１Ｄの状態をブロッキングからフォワーディングに変更することを決定し、その変更の指示を、スタックポート２０１Ｂを介してバックアップスイッチ１０１Ｌに送信する。バックアップスイッチ１０１Ｌのリング制御部２１３は、受信した指示に従ってポート２０１Ｄの状態をフォワーディングに変更する。これによって、上記の例と同様に、ループを形成することなく、通信経路の切り替えが可能となる。
【０１４９】
図７に示すように、マスタスイッチ１０１Ｋのポート２０１Ａがプライマリポートであり、バックアップスイッチ１０１Ｌのポート２０１Ｄがセカンダリポートである場合において、マスタスイッチ１０１Ｋではなくバックアップスイッチ１０１Ｌに障害が発生しているときも、マスタスイッチ１０１Ｋのリング制御部２１３は、ステップ１５１３において、ポート２０１Ｄの状態をブロッキングからフォワーディングに変更することを決定し、その変更の指示を送信する。しかし、バックアップスイッチ１０１Ｌのリング制御部２１３は、障害のため、送信された指示に従う制御を実行できない場合がある。その場合にも、バックアップスイッチ１０１Ｌ以外のスイッチを利用した通信経路の切り替えが可能となる一方で、バックアップスイッチ１０１Ｌの障害のため、ループは形成されない。
【０１５０】
ステップ１５０９において、当該スイッチのスタック状態４０２がバックアップであると判定された場合、リング制御部２１３は、マスタ切り替え通知を受けたか否かを判定する（ステップ１５１５）。この通知は、スタック管理／制御部２１２がステップ１４１８（図１４参照）で送信するものである。マスタ切り替え通知を受けた場合、当該スイッチがバックアップスイッチからマスタスイッチに変更された（すなわち当該スイッチの相手スイッチに障害が発生しており、その結果、当該スイッチが属するリングにも障害が発生している）ため、リング制御部２１３は、ステップ１５１２以降の処理を実行する。これによって、図７に示すセカンダリポートの状態変更が実現される。一方、マスタ切り替え通知を受けていない場合、当該スイッチは依然としてバックアップスイッチであるため、リング制御部２１３はステップ１５１０〜１５１４を実行しない。
【０１５１】
ステップ１５１２において、セカンダリポートのリングポート状態６０５がフォワーディングであると判定された場合、リング制御部２１３は、リングポート状態６０５を変更する必要がないため、ステップ１５１３及び１５１４を実行しない。これによって、スタックの相手スイッチ又はトランジットノードに障害が発生する前からセカンダリポートがフォワーディングであった場合には、障害が発生した後もフォワーディングの状態が維持されるように、セカンダリポートが制御される。
【０１５２】
ステップ１５１０においてリングのヘルスチェックフレームを受信した場合、リング制御部２１３は、当該スイッチのリング障害状態６０６が障害であるか否かを判定する（ステップ１５１６）。リング障害状態６０６が障害である場合、当該スイッチが属するリングに障害が発生していたが、ステップ１５１０においてリングのヘルスチェックフレームを受信したことによってその障害が解消されたことが確認されたため、リング制御部２１３は、当該スイッチのリング障害状態６０６を正常に変更する（ステップ１５１７）。
【０１５３】
次に、リング制御部２１３は、セカンダリポートのリングポート状態６０５をブロッキングに変更し（ステップ１５１８）、プライマリポートのリングポート状態６０５がブロッキングであった場合にはそれをフォワーディングに変更し（ステップ１５１９）、リングのフラッシュ制御フレームを送信する（ステップ１５２０）。これによって、図９に示すセカンダリポートの状態変更が実現される。なお、ステップ１５１３の場合と同様に、ステップ１５１８又は１５１９の制御対象のポートがバックアップスイッチ側にある場合には、マスタスイッチのリング制御部２１３がリングポート状態６０５を変更する指示をバックアップスイッチに送信し、バックアップスイッチのリング制御部２１３がその指示に従ってリングポート状態６０５を変更する。
【０１５４】
ステップ１５１６において、当該スイッチのリング障害状態６０６が正常であると判定された場合、既に、プライマリポートのリングポート状態６０５はフォワーディングに、セカンダリポートのリングポート状態６０５はブロッキングに設定されている。この状態を維持するため、リング制御部２１３はステップ１５１７〜１５２０を実行する必要がない。
【０１５５】
以上のように、本実施例のスタック構成のマスタノードにおいて、マスタスイッチは、リングの状態が正常であるときに、二つのリングポートの一方の状態をフォワーディング、もう一方の状態をブロッキングに制御し、リングの障害を検出したときに、両方の状態をフォワーディングに制御する（ステップ１５１３）。具体的には、マスタスイッチは、マスタスイッチのリングポートの状態がブロッキングである場合、リングの障害を検出したときにそのポートの状態をフォワーディングに変更し、バックアップスイッチのリングポートの状態がブロッキングである場合、リングの障害を検出したときに、マスタスイッチのリングポートの状態をフォワーディングに維持しながら、バックアップスイッチにリングポートの状態をフォワーディングに変更する指示を送信する。そして、マスタノードのマスタスイッチは、リングが障害から回復したことを検出したときに、再び一方の状態をフォワーディング、もう一方の状態をブロッキングに制御する（ステップ１５１８、１５１９）。
【０１５６】
本実施例では、マスタノードの二つのリングポートの一方にプライマリポート、もう一方にセカンダリポートという属性（リングポート６０４）が与えられ、プライマリポートの状態は、リングの正常時及び障害時のいずれもフォワーディングとなるように制御され、セカンダリポートの状態は、リングの正常時にブロッキング、障害時にフォワーディングとなるように制御される。しかし、このような制御方法は一例であり、正常時に一方がフォワーディング、もう一方がブロッキングとなるように制御され、障害時に両方がフォワーディングとなるように制御される限り、どのような制御方法を用いてもよい。
【０１５７】
ステップ１５０８において、当該スイッチのリングモード３０５がトランジットであると判定された場合、リング制御部２１３は、当該スイッチのスタック状態４０２を判定する（ステップ１５２１）。当該スイッチのスタック状態４０２がマスタである場合、リング制御部２１３は、当該スイッチが属するトランジットノードのいずれかのリングポートのポート状態５０３が変更されたか否かを判定する（ステップ１５２２）。この状態変更は、図１２のステップ１２０７又は１２１４において通知されるものである。いずれかのリングポートのポート状態５０３が変更された場合、リング制御部２１３は、当該変更がＵＰからＤＯＷＮへの変更であるか否かを判定する（ステップ１５２３）。当該変更がＵＰからＤＯＷＮへの変更である場合、リング制御部２１３は、ポート状態５０３がＵＰからＤＯＷＮへ変更されたリングポートのリングポート状態６０５をブロッキングに変更する（ステップ１５２４）。このように、ステップ１５２２からステップ１５２４を実行することで、ポート状態５０３が変更されたリングポートのリングポート状態６０５を初期化（ブロッキング）し、リングネットワークにループが発生することを防ぐ。
【０１５８】
当該トランジットノードのリングポートのポート状態５０３が変更されなかったか（ステップ１５２２）、又は、変更されたとしても当該変更がＤＯＷＮからＵＰへの変更であった場合（ステップ１５２３）には、リング制御部２１３はステップ１５２４を実行しない。
【０１５９】
次に、リング制御部２１３は、フラッシュ制御フレームを受信したか否かを判定する（ステップ１５２５）。フラッシュ制御フレームを受信した場合、リング制御部２１３は、当該スイッチが属するトランジットノードにブロッキング状態のリングポートがあるか否かを判定する（ステップ１５２６）。ブロッキング状態のリングポートがある場合、当該リングポートのリングポート状態６０５をフォワーディングに変更する（ステップ１５２７）。
【０１６０】
当該スイッチがフラッシュ制御フレームを受信しなかったか（ステップ１５２５）、又は、受信したとしても当該スイッチが属するトランジットノードにブロッキング状態のリングポートがない場合（ステップ１５２６）には、リング制御部２１３はステップ１５２７を実行しない。
【０１６１】
ステップ１５２１において、当該スイッチのスタック状態４０２がバックアップであると判定された場合、リング制御部２１３は、マスタ切り替え通知（図１４のステップ１４１８）を受けたか否かを判定する（ステップ１５２８）。マスタ切り替え通知を受けた場合、当該スイッチがバックアップスイッチからマスタスイッチに変更されたため、リング制御部２１３は、ポートの設定内容に基づいてリングポート状態６０５を更新する（ステップ１５２９）。
【０１６２】
具体的には、当該スイッチがバックアップスイッチからマスタスイッチに切り替えられる前に、マスタスイッチによって当該スイッチのリングポートの状態がフォワーディングに設定されていた場合、リングポート状態６０５をフォワーディングに更新し、ブロッキングに設定されていた場合、リングポート状態６０５をブロッキングに更新する。
【０１６３】
一方、マスタ切り替え通知を受けていない場合、当該スイッチは依然としてバックアップスイッチであるため、リング制御部２１３はステップ１５２９を実行しない。
【０１６４】
図１５のフローは、定期的に行ってもよく、リングネットワークに新たにスイッチを追加した場合や、当該スイッチを再起動した場合、または外部からの処理の開始指示の入力を受けた場合に行ってもよい。
【０１６５】
以上の本発明の実施例１によれば、リングネットワークのノードにスタックを適用し、スタックを構成する各スイッチが、相手スイッチの状態（すなわち障害が発生しているか否か）、スタックにおける自スイッチの属性（すなわちマスタスイッチであるか否か）及び自スイッチが属するノードの属性（すなわちマスタノードであるか否か）に応じてポートのデータフレーム転送を適切に制御することによって、リングネットワークの耐障害性を高めることができる。
【実施例２】
【０１６６】
次に、本発明の実施例２について説明する。以下に説明する相違点を除き、実施例２のネットワークシステムの各部は、実施例１の同一の符号を付された各部と同一の機能又は内容を有するため、それらの説明は省略する。
【０１６７】
図１６は、本発明の実施例２のネットワークシステムにおけるトランジットノードへのスイッチの増設の説明図である。
【０１６８】
図１６を参照して、リングを構成するトランジットノードのうち、単独のスイッチによって構成される（すなわちスタック構成でない）トランジットノードを、新たなスイッチの増設によってスタック構成のトランジットノードを構築する手順を説明する。
【０１６９】
本実施例のネットワークシステムは、図１６に示すリング１０３Ｅを含む。図１６（１）には、スイッチを増設する前の正常状態のリング１０３Ｅを示す。このリング１０３Ｅは、スイッチ１０１Ｑ〜１０１Ｖがリング状に接続されたものであり、スイッチ１０１Ｑがマスタノードであり、スイッチ１０１Ｒ〜１０１Ｖの各々が一つのトランジットノードである。各スイッチ１０１Ｑ〜１０１Ｖは実施例１のスイッチ１０１と同様であるため、詳細な説明は省略する。
【０１７０】
実施例１で説明したマスタノードと同様、正常状態において、マスタノードであるスイッチ１０１Ｑのプライマリポート２０１Ｉ及びセカンダリポート２０１Ｊの状態はそれぞれフォワーディング及びブロッキングである。この状態において、スイッチ１０１Ｑがスイッチ１０１Ｒの方向及びスイッチ１０１Ｖの方向のそれぞれに送信したリングのヘルスチェックフレームはリング１０３Ｅを１周してスイッチ１０１Ｑによって受信される。
【０１７１】
上記のリング１０３Ｅにおいてスイッチ１０１Ｔからなるトランジットノードに新たにスイッチを増設することによって、当該トランジットノードをスタック構成のノードに変更する手順を説明する。まず、図１６（２）に示すように、増設対象であるスイッチ１０１Ｔに隣接するスイッチ１０１Ｓ及び１０１Ｕの、スイッチ１０１Ｔに接続されているリングポートのシャットダウンが実行される。これは、例えばユーザがスイッチ１０１Ｓにポート２０１Ｋを対象とするshutdownコマンド（図３の説明参照）を入力し、スイッチ１０１Ｕにポート２０１Ｎを対象とするshutdownコマンドを入力することによって実行される。
【０１７２】
これによって、スイッチ１０１Ｓのコンフィグレーションテーブル２２１のポート２０１Ｋに関するポートシャットダウン設定３０７がshutdownに変更され、さらに、ポートリンク状態管理テーブル２２３のポート２０１Ｋに関するポート状態５０３がＤＯＷＮに変更される。スイッチ１０１Ｕのポート２０１Ｎについても同様である。
【０１７３】
これによって、リングのヘルスチェックフレームがリング１０３Ｅを１周することができなくなるため、スイッチ１０１Ｑはリング１０３Ｅの障害を検出する。その結果、スイッチ１０１Ｑは、図１６（３）に示すように、セカンダリポート２０１Ｊの状態をフォワーディングに変更する。さらに、スイッチ１０１Ｑは、フラッシュ制御フレームを送信する。これらの手順は実施例１の図１５において説明したマスタノードの処理手順（ステップ１５１０からステップ１５１４）と同様である。これによって、スイッチ１０１Ｔがリング１０３Ｅから切り離された後も、リング１０３Ｅ上の通信経路のうちスイッチ１０１Ｔを含まない通信経路を経由したデータフレームの通信を継続することが可能になる。
【０１７４】
さらに、スイッチ１０１Ｔのリングポートのうち一方が削除される。図１６（３）の例では、スイッチ１０１Ｔの二つのリングポート２０１Ｌ及び２０１Ｍのうちスイッチ１０１Ｓ側のポート２０１Ｌが削除される。具体的には、この削除は、例えば、ユーザがポート２０１Ｋと２０１Ｌとを接続していたネットワークケーブルを物理的に取り外し、さらに、スイッチ１０１Ｔのコンフィグレーションテーブル２２１の内容を削除することによって実行される。
【０１７５】
次に、新たなスイッチ１０１Ｗを追加することで、スイッチ１０１Ｔ及び１０１Ｗからなるスタック構成のノード１０２Ｅが構築される（図１６（４））。具体的には、例えばユーザがスイッチ１０１Ｗをスイッチ１０１Ｔに接続し、さらに、それぞれにコマンドを入力することによってスイッチ１０１Ｔ及び１０１Ｗのコンフィグレーションテーブル２２１を作成する（図３の説明参照）。そして、スイッチ１０１Ｔ及び１０１Ｗが各々図１４の動作フローを実行してスタック構成のノード１０２Ｅが構築される。
【０１７６】
次に、ユーザがスイッチ１０１Ｗのリングポート２０１Ｏとスイッチ１０１Ｓのリングポート２０１Ｋとを接続する（図１６（５））。
【０１７７】
次に、構築されたノード１０２Ｅに隣接するスイッチ１０１Ｓ及び１０１Ｕの、ノード１０２Ｅに接続されているリングポートのシャットダウン解除が実行される（図１６（６））。これは、例えばユーザがスイッチ１０１Ｓにポート２０１Ｋを対象とするNo shutdownコマンド（図３の説明参照）を入力し、スイッチ１０１Ｕにポート２０１Ｎを対象とするNo shutdownコマンドを入力することによって実行される。その結果、リングのヘルスチェックフレームがリング１０３Ｅを１周できるようになるため、スイッチ１０１Ｑはリング１０３Ｅが障害から復旧したことを検出する（図１５のステップ１５１０）。この時点で、構築されたノード１０２Ｅのリングポート２０１Ｏ及び２０１Ｍ、並びにそれらに接続されるリングポート２０１Ｋ及び２０１Ｎの状態はブロッキングである（図１５のステップ１５２１からステップ１５２４）。
【０１７８】
リング１０３Ｅの復旧を検出したスイッチ１０１Ｑは、セカンダリポート２０１Ｊの状態をブロッキングに変更する（図１６（７））。さらに、スイッチ１０１Ｑがフラッシュ制御フレームを送信することによって、ポート２０１Ｋ、２０１Ｍ、２０１Ｎ及び２０１Ｏの状態がブロッキングからフォワーディングに変更される。これによって、リング１０３Ｅの状態が正常になる（図１５のステップ１５１６からステップ１５２０、図１５のステップ１５２５からステップ１５２７）。
【０１７９】
図１６には、リング１０３Ｅの一部として稼働していたスイッチ１０１Ｔに新たにスイッチ１０１Ｗを追加することによってスタック構成のノード１０２Ｅを構築する例を示したが、初期状態においてスイッチ１０１Ｔを含まないリング１０３Ｅに、スイッチ１０１Ｔ及び１０１Ｗからなるスタック構成のノード１０２Ｅを追加することもできる。具体的には、例えば初期状態においてスイッチ１０１Ｓがスイッチ１０１Ｕに接続されていた場合に、それらのスイッチのリングポート２０１Ｋ及び２０１Ｎをシャットダウンし、それらの間にスタック構成のノード１０２Ｅを接続し、シャットダウンを解除することで、ノード１０２Ｅが追加される。このようなシャットダウン、シャットダウンの解除及びそれらの前後の処理は、図１６に示したものと同様の手順で実現できるため、詳細な説明を省略する。
【０１８０】
図１７は、本発明の実施例２のネットワークシステムにおけるトランジットノードからのスイッチの減設の説明図である。
【０１８１】
図１７を参照して、リングを構成するトランジットノードのうち、スタック構成のトランジットノードから一方のスイッチを減設することによって、当該スタック構成のトランジットノードを単一のスイッチによるトランジットノードに変更する手順を説明する。
【０１８２】
減設前のリング１０３Ｅは、図１７（１）に示すように、スイッチ１０１Ｑ〜１０１Ｗがリング状に接続されたものであり、スイッチ１０１Ｑがマスタノードであり、スイッチ１０１Ｒ、１０１Ｓ、１０１Ｕ及び１０１Ｖの各々が一つのトランジットノードである。一方、スイッチ１０１Ｓと１０１Ｕの間に接続されたトランジットノード１０２Ｅは、スイッチ１０１Ｔ及び１０１Ｗからなるスタック構成のノードである。各スイッチ１０１Ｑ〜１０１Ｗは図１６に示したものと同様であってよい。また、リング１０３Ｅは、初めから図１７（１）に示される形態に構築されたものであってもよいし、図１６に示す手順によって構築されたものであってもよい。
【０１８３】
上記のリング１０３Ｅにおいてトランジットノード１０２Ｅからスイッチ１０１Ｗを減設することによって、当該トランジットノードをスイッチ１０１Ｔのみからなるノードに変更する手順を説明する。まず、図１７（２）に示すように、減設対象であるスイッチ１０１Ｔに隣接するスイッチ１０１Ｓ及び１０１Ｕの、ノード１０２Ｅに接続されているリングポート２０１Ｋ及び２０１Ｎのシャットダウンが実行される。これは、図１６（２）と同様に実行される。その結果、スイッチ１０１Ｑは、リング１０３Ｅの障害を検出する（図１５のステップ１５１０からステップ１５１１）。
【０１８４】
そして、スイッチ１０１Ｑは、セカンダリポート２０１Ｊの状態をフォワーディングに変更する（図１７（３））。さらに、スイッチ１０１Ｑは、フラッシュ制御フレームを送信する（図１５のステップ１５１２から１５１４）。これによって、ノード１０２Ｅがリング１０３Ｅから切り離された後も、リング１０３Ｅ上の通信経路のうちノード１０２Ｅを含まない通信経路を経由したデータフレームの通信を継続することが可能になる。さらに、スイッチ１０１Ｗのリングポート２０１Ｏが削除される。これらの手順は、図１６（３）と同様に実行される。
【０１８５】
次に、スイッチ１０１Ｗが取り外される。（図１７（３）、（４））。例えばユーザがスイッチ１０１Ｗをスイッチ１０１Ｔから切り離し、さらに、スイッチ１０１Ｔにコマンドを入力することによってスイッチ１０１Ｔのコンフィグレーションテーブル２２１を作成する（図３の説明参照）。なお、スイッチ１０１Ｗ取り外し後、スイッチ１０１Ｔが、図１４の動作フローを実行してスタック構成のノード１０２Ｅを解除することも可能である。具体的には、ステップ１４０１にて「その他」と判断し、ステップ１４１４にて「全スタックポートＤＯＷＮ」と判断することで、スタック状態としては「マスタ」であり、リングモードとしては「トランジット」であるスイッチ１０１Ｔとなる。そして、ユーザがスイッチ１０１Ｔのリングポート２０１Ｌとスイッチ１０１Ｓのリングポート２０１Ｋとを接続する（図１７（５））。
【０１８６】
次に、スイッチ１０１Ｔに隣接するスイッチ１０１Ｓ及び１０１Ｕの、スイッチ１０１Ｔに接続されているリングポートのシャットダウン解除が実行される（図１７（６））。この処理は、（図１６（６））と同様に実行される。スイッチ１０１Ｑはリング１０３Ｅが障害から復旧したことを検出する（図１５のステップ１５１０）。この時点で、ポート２０１Ｋ〜２０１Ｎの状態はブロッキングである（図１５のステップ１５２１からステップ１５２４）。
【０１８７】
リング１０３Ｅの復旧を検出したスイッチ１０１Ｑは、セカンダリポート２０１Ｊの状態をブロッキングに変更する（図１７（７））。さらに、スイッチ１０１Ｑがフラッシュ制御フレームを送信することによって、ポート２０１Ｋ〜２０１Ｎの状態がブロッキングからフォワーディングに変更される。これによって、リング１０３Ｅの状態が正常になる（図１５のステップ１５１６からステップ１５２０、図１５のステップ１５２１からステップ１５２７）。
【０１８８】
図１７には、スタック構成されたノード１０２Ｅからスイッチ１０１Ｗを減設し、スイッチ１０１Ｔをトランジットノードとして残す例を示したが、ノード１０２Ｅ全体を減設し、スイッチ１０１Ｓをスイッチ１０１Ｕに接続することによって５個のスイッチからなるリング１０３Ｅを構築することもできる。これは、例えば、スイッチ１０１Ｔのポート２０１Ｋ及びスイッチ１０１Ｕのポート２０１Ｎをシャットダウンし、ポート２０１Ｋとポート２０１Ｎとを新たに接続し、シャットダウンを解除することで実現される。このようなシャットダウン、シャットダウンの解除及びそれらの前後の処理は、図１７に示したものと同様の手順で実現できるため、詳細な説明を省略する。
【０１８９】
以上のように、実施例２によれば、リングを経由するデータフレームの通信を継続したまま、リングのトランジットノードをスタック構成のトランジットノードに変更する増設又はスタック構成のトランジットノードを単独のスイッチからなるトランジットノードに変更する減設を実行することができる。
【０１９０】
なお、本発明は上述した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１９１】
上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【０１９２】
また、リングプロトコルは、上述のプロトコルには限定されず、たとえば、ＥＡＰＳ（Ｅｔｈｅｒｎｅｔ  Ａｕｔｏｍａｔｉｃ  Ｐｒｏｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ（Ｅｔｈｅｒｎｅｔは登録商標））のような、図１のような複数のノードをリング状に接続したネットワークにおける障害の検出及びそれに伴う経路切り替えを行う冗長化プロトコルであってもよい。
【０１９３】
また、図面には、実施例を説明するために必要と考えられる制御線及び情報線を示しており、必ずしも、本発明が適用された実際の製品に含まれる全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１９４】
１０１Ａ〜１０１Ｗ  スイッチ
１０２Ａ〜１０２Ｅ  ノード
１０３Ａ〜１０３Ｅ  リング
１０４Ａ〜１０４Ｓ  リンク
２０１Ａ〜２０１Ｏ  ポート
２１０  制御部
２１１  プロトコル共通制御部
２１２  スタック管理／制御部
２１３  リング制御部
２１４  インタフェース制御部
２２０  メモリ
２２１  コンフィグレーションテーブル
２２２  スタック状態管理テーブル
２２３  ポートリンク状態管理テーブル
２２４  リングポート状態管理テーブル
２３０  転送エンジン
【図１】
2015133538.tif 000003
【図２Ａ】
2015133538.tif 000004
【図２Ｂ】
2015133538.tif 000005
【図３】
2015133538.tif 000006
【図４】
2015133538.tif 000007
【図５】
2015133538.tif 000008
【図６】
2015133538.tif 000009
【図７】
2015133538.tif 000010
【図８】
2015133538.tif 000011
【図９】
2015133538.tif 000012
【図１０】
2015133538.tif 000013
【図１１】
2015133538.tif 000014
【図１２】
2015133538.tif 000015
【図１３】
2015133538.tif 000016
【図１４】
2015133538.tif 000017
【図１５Ａ】
2015133538.tif 000018
【図１５Ｂ】
2015133538.tif 000019
【図１６】
2015133538.tif 000020
【図１７】
2015133538.tif 000021