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