次に、本発明の実施の形態を実施例に基づいて説明する。
A.概略説明:
(A−1)本発明の概略説明:
図1は、本発明の一実施例としてのネットワーク中継装置が用いられたネットワークの概略構成を示す説明図である。ネットワーク1000は、4台のネットワーク中継装置10(#1〜#4)を備えている。各ネットワーク中継装置10は、いわゆるレイヤ2スイッチであり、MACアドレスによるフレームの中継を行う機能を有する。なお、以降では、「ネットワーク中継装置」を単に「スイッチ」とも呼ぶ。また、スイッチ10を相互に識別する必要がある場合に、一方をスイッチ#1、他方をスイッチ#2等と呼び、スイッチ10そのものの構成や動作の説明では「スイッチ10」と呼ぶ。また、図1では便宜上、説明上必要としない、他のネットワーク中継装置、回線、端末、およびネットワーク中継装置内の構成部については図示を省略している。このことは、後述する図においても同様である。
スイッチ#1と#2とは、仮想回線(詳細は後述)LNAにより接続されている。同様に、スイッチ#2と#3とは仮想回線LNBにより、スイッチ#3と#4とは仮想回線LNCにより、スイッチ#4と#1とは仮想回線LNDにより、それぞれ接続されている。これにより、スイッチ#1〜#4は、環状のリングネットワークを構成している。なお、リングネットワークを構成するために他のスイッチと接続されるポートを、「リングポート」とも呼ぶ。
リングネットワークにおいては、リングプロトコルを用いて、ネットワークの状態を監視し、障害発生時や障害復旧時などといったネットワークの状態変化に基づく通信経路の切り替えを行う。リングプロトコルでは、リングネットワークを構成するスイッチを、1台のマスタノードと、残りのトランジットノードに分けた上で、マスタノードが主となって、ネットワークの状態を監視し、必要に応じて通信経路を切り替える。図1の例では、スイッチ#1がマスタノード、スイッチ#2〜#4がトランジットノードである。
リングプロトコルでは、マスタノードのリングポートのうち、特定のスイッチと接続されているリングポートを通信可能な状態とし、他のスイッチと接続されているリングポートを通信不可能な状態とすることで、環状のネットワークにおけるフレームのループを抑制している。図1の例では、スイッチ#1のリングポートのうち、仮想回線LNAを介してスイッチ#2と接続されているリングポートを通信不可能な論理ブロック状態BKとしている。このため、図1の例では、例えば、スイッチ#1からスイッチ#2宛てのフレームは、「スイッチ#1−スイッチ#4−スイッチ#3−スイッチ#2」という経路を用いて中継される。なお、通信可能な状態とされたリングポートを「プライマリポート」、通信不可能な状態(論理ブロック状態BK)とされたリングポートを「セカンダリポート」とも呼ぶ。また、プライマリポートは、特許請求の範囲における「第1の方向に接続されたポート」に相当し、セカンダリポートは、特許請求の範囲における「第2の方向に接続されたポート」に相当する。
また、リングプロトコルでは、リングネットワークの状態を監視するために、ヘルスチェックフレームと呼ばれる専用の制御フレームを用いる。なお、ヘルスチェックフレームは、特許請求の範囲における「状態確認フレーム」に相当する。ヘルスチェックフレームは、マスタノードであるスイッチによって生成され、マスタノードのプライマリポートと、セカンダリポートの両方から送信される。送信されたヘルスチェックフレームは、リングネットワークのトランジットノードである各スイッチによって転送され、最終的にマスタノードであるスイッチに戻ってくる。図1の例では、マスタノードが、プライマリポートから送信したヘルスチェックフレームHCBと、セカンダリポートから送信したヘルスチェックフレームHCFとを受信する様子が示されている。なお、論理ブロック状態BKのポートであっても、ヘルスチェックフレームは送受信可能である。
上述のように、マスタノードであるスイッチは、自らが送信したヘルスチェックフレームを所定時間受信しなかった場合に、リングネットワーク内における障害が発生したと推定することができる。障害検出後、マスタノードであるスイッチは、論理ブロック状態BKのリングポートを通信可能な状態へ変更し、各スイッチにMACアドレスの再学習を指示するためのフラッシュ制御フレームを送信する。このようにして、リングプロトコルでは、経路のループ構成を論理的に排除することができる。
図2は、仮想回線について説明するための説明図である。図2では、スイッチ#1と、#2との間の仮想回線LNAを例示して説明する。スイッチ10は、リンクアグリゲーション(LA、Link Aggregation)機能を実現するために、LA制御部200を有している。なお、LA制御部200は、特許請求の範囲における「仮想回線制御部」に相当する。リンクアグリゲーションとは、複数の物理回線(物理ポート)を束ねて仮想的な1つの仮想回線(仮想ポート)として取り扱うことが可能な機能であり、帯域幅の拡大や冗長性の確保を図るために用いられる。図2の例では、スイッチ10のLA制御部200は、4本の物理回線LNA1〜4を1本の仮想回線LNAとして取り扱い、4本の物理回線LNA1〜4に対して、フレームPP1〜3を分散させて送信する機能を持つ。また、LA制御部200は、物理回線が接続されている物理ポートと、仮想回線との割り付けを記憶するためのLA管理テーブルを含んでいる。なお、LA制御部200およびLA管理テーブルの詳細は後述する。
図3は、ヘルスチェックフレームが送信される様子を示す説明図である。マスタノードであるスイッチ#1は、プライマリポートPPからヘルスチェックフレームHCBを、セカンダリポートSPからヘルスチェックフレームHCFを、それぞれ送信する。送信されたヘルスチェックフレームHCBは、それぞれ、スイッチ#4、スイッチ#3、スイッチ#2の順で中継されることによってリングネットワークを循環し、スイッチ#1へ戻る。また、送信されたヘルスチェックフレームHCFは、それぞれ、スイッチ#2、スイッチ#3、スイッチ#4の順で中継されることによってリングネットワークを循環し、スイッチ#1へ戻る。
なお、トランジットノードであるスイッチ#2〜#4については、マスタノードのプライマリポートから送信されるフレームを他のスイッチに向けて送信するリングポートを「プライマリポート」と呼ぶ。同様に、マスタノードのセカンダリポートから送信されるフレームを他のスイッチに向けて送信するリングポートを「セカンダリポート」と呼ぶ。
本実施例のスイッチ10は、上記ヘルスチェックフレームの送信について、仮想回線のうちの特定の物理回線にフレームが集中しないよう制御すると共に、1つの物理回線上における同じタイミングでのフレームの送受信を抑制するよう制御する。具体的には、例えば、仮想回線LNAの物理回線を送受信されるフレームは、次のようになる。
・時刻t1:物理回線LNA1にヘルスチェックフレームHCB1、物理回線LNA2にヘルスチェックフレームHCF1、
・時刻t2:物理回線LNA2にヘルスチェックフレームHCB2、物理回線LNA3にヘルスチェックフレームHCF2、
・時刻t3:物理回線LNA3にヘルスチェックフレームHCB3、物理回線LNA4にヘルスチェックフレームHCF3。
上記のような状況において、物理回線LNA2に障害が発生した場合、当該回線LNA2を通過しようとするヘルスチェックフレームHCF1と、ヘルスチェックフレームHCB2は破棄される。しかし、時刻t1のヘルスチェックフレームHCB1と、時刻t2のヘルスチェックフレームHCF2とは、それぞれ障害のない物理回線を経由して送受信される。
このように、本実施例のスイッチ10(ネットワーク中継装置)を用いたネットワーク1000では、スイッチ10が仮想回線を介して接続されたネットワークの状態を確認するためのヘルスチェックフレーム(状態確認フレーム)を送信したポートと、他のスイッチ10からヘルスチェックフレームを受信したポートが同一となる状態が連続しないように、ヘルスチェックフレームを送信するポートが変更される。従って、特定の物理回線に障害が発生した場合であっても、上記各時刻におけるヘルスチェックフレームの流れは途切れることなく継続される。このため、マスタノードであるスイッチ10におけるリングネットワーク障害の誤検出を低減することができる。この結果、仮想回線を用いて物理回線を冗長化しつつ、ネットワークの状態を確認するための制御フレーム(ヘルスチェックフレーム)を交換するネットワーク中継装置(スイッチ)において、仮想回線の障害の誤検出を低減することができる。
(A−2)比較例:
図4は、比較例においてヘルスチェックフレームが送信される様子を示す説明図である。図5は、比較例において障害が発生した際の様子を示す説明図である。ネットワーク1000xは、比較例(従来例)の4台のスイッチ10xを備えている。各スイッチの接続関係および仮想回線の説明は図1〜3と同様である。
マスタノードであるスイッチ#1は、プライマリポートからヘルスチェックフレームHCBを、セカンダリポートからヘルスチェックフレームHCFを、それぞれ送信する。従来例では、ランダムに行われるヘルスチェックフレームの送信が、図示のように、仮想回線内の特定の物理回線(図4の例では物理回線LNA1)に集中してしまうことがあった。このような場合に、図5のように、物理回線LNA1に障害が発生した場合、当該回線LNA1を通過しようとするヘルスチェックフレームHCF1〜3と、ヘルスチェックフレームHCB1〜3は全て破棄される。このため、マスタノードであるスイッチ#1は、ヘルスチェックフレームHCB、HCFを受信することが出来なくなる。
スイッチ#1がヘルスチェックフレームを受信しない状態が、予め設定された障害検出時間継続した場合、スイッチ#1は、他の物理回線LNA2〜4には障害が発生していないにもかかわらず、仮想回線LNA全体として障害が発生したと誤検出してしまう。障害が発生したと誤検出したスイッチ#1は、論理ブロック状態BKのリングポートを通信可能な状態へ変更し、スイッチ#2〜#4にフラッシュ制御フレームを送信する。その後、スイッチ#1〜#4は、経路再学習処理を行う。このように比較例(従来例)では、マスタノードであるスイッチによる障害の誤検出に伴って、不要な経路再学習処理の発生、および、論理ブロック状態BKの解除に伴うデータフレームのループ発生といった問題が生じる。また、経路再学習処理では、各スイッチによるフラッディングが行われるため、ネットワーク負荷が不要に増大するといった問題も生じる。
さらに、上記障害の誤検出を回避するために、マスタノードであるスイッチにおいて、リングプロトコルの障害検出時間をリンクアグリゲーションの障害検出時間よりも長く設定した場合、仮想回線が全断した場合(すなわち、仮想回線を構成する物理回線の全てに障害が発生した場合)の障害検出が遅くなり、ネットワークの通信不能時間が長くなるという新たな問題が生じる。
B.第1実施例:
(B−1)システム構成:
図6は、本発明の一実施例としてのスイッチ10の概略構成を示す説明図である。スイッチ10は、リング管理部100と、LAリングマッピングテーブル110と、LA制御部200と、フレーム中継部300と、フレーム識別部310および320と、ヘルスチェックフレーム制御部400と、物理回線制御部500とを備えている。なお、リング管理部100と、LAリングマッピングテーブル110は、CPU15およびメモリ16により構成されている。また、LA制御部200と、フレーム中継部300と、フレーム識別部310および320と、ヘルスチェックフレーム制御部400とは、ASIC(Application Specific Integrated Circuit)17により構成されている。さらに、物理回線制御部500は、PHYチップにより構成されている。
リング管理部100は、リングプロトコルに基づいて、ヘルスチェックフレームの生成と送受信を行うと共に、ネットワークの状態を監視し、障害発生時や障害復旧時等のネットワークの状態変化に基づく通信経路の切り替えを行う。リング管理部100は、スイッチ10にインストールされたプログラムが、メモリ16をワークエリアとして用いて、CPU15により実行されることでその機能が実現される。
図7は、LAリングマッピングテーブル110の一例を示す説明図である。LAリングマッピングテーブル110は、リング管理部100のリングプロトコルに基づく制御において用いられるテーブルである。LAリングマッピングテーブル110は、コンフィギュレーション設定により予め生成され、メモリ16に記憶されている。LAリングマッピングテーブル110は、リングIDと、LAIDと、優先ポート情報とを含んでいる。
リングIDには、当該スイッチが属するリングネットワークを識別するための識別子が格納されている。LAIDには、リングIDにより識別されるリングネットワークを構成する仮想回線(LA)を識別するための識別子が格納されている。優先ポート情報には、LAIDにより識別される仮想回線がプライマリポートである場合は「primary」、セカンダリポートである場合は「secondary」の値が格納されている。
例えば、図7の例では、スイッチ10は、リングID10と、リングID20の、2つのリングネットワークに接続されている。また、リングID10のリングネットワークは、プライマリポートがLAID1の仮想回線に接続され、セカンダリポートがLAID2の仮想回線に接続されている。
図6に戻り、物理回線制御部500には、複数の物理ポート510が含まれている。物理ポート510には、それぞれ、ネットワーク回線が接続されており、このネットワーク回線を介して他のスイッチや端末が接続される。物理ポート510とネットワーク回線とを総称して「物理回線」とも呼ぶ。物理回線制御部500は、これら物理回線の状態を監視すると共に、物理回線の状態に変化があった場合に、その旨をヘルスチェックフレーム制御部400へ通知する機能を有する。また、物理回線制御部500は、物理ポート510を経由して受信したフレームをフレーム識別部320へ送信する機能を有する。さらに、物理回線制御部500は、ヘルスチェック送信制御部430やLA送信制御部230から受信したフレームを、物理ポート510から送信する機能を有する。
LA制御部200は、さらに、LA受信制御部210と、LA管理テーブル220と、LA送信制御部230と、LA管理テーブル240とを含んでいる。LA管理テーブル220と、LA管理テーブル240とは、同一の内容のテーブルである。
図8は、LA管理テーブル220および240の一例を示す説明図である。LA管理テーブル220、240は、LA制御部200のリンクアグリゲーション制御において用いられるテーブルである。LA管理テーブル220、240は、コンフィギュレーション設定により予め生成され、記憶されている。LA管理テーブル220、240は、LAIDと、物理ポート番号とを含んでいる。
LAIDには、スイッチ10に設定された仮想回線(LA)を識別するための識別子が格納されている。物理ポート番号には、LAIDにより識別される仮想回線に割り当てられた物理ポート510の識別子が格納されている。
例えば、図8の例では、LAID1の仮想回線には、物理ポート番号9、10、11、12の4つの物理ポートが割り当てられている。また、LAID2の仮想回線には、物理ポート番号1、2の2つの物理ポートが割り当てられている。
LA受信制御部210は、フレーム識別部320よりフレームを受信した際に、フレームのヘッダ情報を更新後、当該フレームをフレーム中継部300へ送信する。具体的には、LA受信制御部210は、LA管理テーブル220を検索して、フレームを受信した物理ポート510に割り当てられているLAIDを参照し、フレームのヘッダ情報に当該LAIDを追加する。LA送信制御部230は、フレーム識別部310よりフレームを受信した際に、フレームのヘッダ情報を更新後、当該フレームを物理回線制御部500へ送信する。具体的には、LA送信制御部230は、LA管理テーブル240を検索して、フレームのヘッダ情報に含まれるLAIDが割り当てられている物理ポート510を参照し、フレームのヘッダ情報に物理ポート510の番号を追加する。
図6に戻り、フレーム中継部300は、フレームの中継を行う。具体的には、フレーム中継部300は、LA受信制御部210から受信したフレームを、フレーム識別部310へ送信する。同様に、フレーム中継部300は、ヘルスチェック受信制御部410から受信したフレームを、リング管理部100へ送信する。さらに、フレーム中継部300は、リング管理部100から受信したフレームを、フレーム識別部310へ送信する。フレーム識別部310は、フレーム中継部300から受信したフレームを識別して振り分けるフレーム受信処理(詳細は後述)を行う。フレーム識別部320は、物理回線制御部500から受信したフレームを識別して振り分けるフレーム受信処理(詳細は後述)を行う。
ヘルスチェックフレーム制御部400は、ヘルスチェック受信制御部410と、ヘルスチェック送受信管理テーブル420と、ヘルスチェック送信制御部430とを含んでいる。なお、ヘルスチェックフレーム制御部400は、特許請求の範囲における「状態確認フレーム制御部」に相当する。また、ヘルスチェック送受信管理テーブル420は、特許請求の範囲における「履歴記憶部」に相当する。ヘルスチェック受信制御部410は、フレーム識別部320からフレームを受信した際に、ヘルスチェック送受信管理テーブル420を更新するためのヘルスチェックフレーム受信処理(詳細は後述)を行う。ヘルスチェック送信制御部430は、フレーム識別部310からフレームを受信した際に、ヘルスチェック送受信管理テーブル420を更新し、フレームの送信先を特定するためのヘルスチェックフレーム送信処理(詳細は後述)を行う。さらに、ヘルスチェックフレーム制御部400は、物理回線制御部500から、物理回線の状態に変化があった旨の通知を受信した場合に、ヘルスチェック送受信管理テーブル420を更新するための物理ポート状態変更処理(詳細は後述)を行う。
図9は、ヘルスチェック送受信管理テーブル420の一例を示す説明図である。ヘルスチェック送受信管理テーブル420は、ヘルスチェックフレーム制御部400における各種処理(ヘルスチェックフレーム受信処理、ヘルスチェックフレーム送信処理、物理ポート状態変更処理)において用いられるテーブルである。ヘルスチェック送受信管理テーブル420は、LAリングマッピングテーブル110と、LA管理テーブル220(240)を元にして予め生成され、ヘルスチェックフレーム制御部400の各種処理において更新される。ヘルスチェック送受信管理テーブル420は、リングIDと、LAIDと、物理ポート番号と、優先ポート情報と、物理ポート状態と、送信フラグと、受信フラグとを含んでいる。
リングIDと、LAIDと、物理ポート番号と、優先ポート情報と、には、LAリングマッピングテーブル110と、LA管理テーブル220(240)を結合した内容が格納されている。物理ポート状態には、物理回線制御部500からの通知を元に、物理ポート番号で識別される物理回線510の状態が格納される。なお、「Up」は物理回線が正常状態であり通信可能であることを、「Down」は物理回線に障害が発生しており通信不可能であることを、それぞれ示している。
送信フラグは、スイッチ10が前回、ヘルスチェックフレームを送信したポートの履歴を記憶するためのフィールドである。送信フラグの既定値は「off」である。送信フラグには、後述のヘルスチェックフレーム送信処理において、物理ポート番号で識別される物理回線510を用いてヘルスチェックフレームの送信を行った場合に「on」という値が格納される。受信フラグは、スイッチ10が前回、他のスイッチからヘルスチェックフレームを受信したポートの履歴を記憶するためのフィールドである。受信フラグの初期値は「off」である。受信フラグには、後述のヘルスチェックフレーム受信処理において、物理ポート番号で識別される物理回線510を用いてヘルスチェックフレームの受信を行った場合に「on」という値が格納される。本実施例においては、物理ポート状態、送信フラグ、受信フラグの値は、後述の各処理によって随時更新される。
(B−2)フレーム受信処理:
図10は、フレーム受信処理の手順を示すフローチャートである。フレーム受信処理は、フレーム識別部310がフレーム中継部300からフレームを受信した際と、フレーム識別部320が物理回線制御部500からフレームを受信した際に、それぞれ実行するフレームの振り分け処理である。図10では、フレーム識別部320を例にして説明する。
まず、フレームを受信したフレーム識別部320は、受信フレームのヘッダ情報をもとに、受信フレームの種別を判定する(ステップS102)。受信フレームがヘルスチェックフレームであると判定した場合、フレーム識別部320は、ヘルスチェックフレーム制御部400のヘルスチェック受信制御部410へ受信フレームを転送し、処理を終了する(ステップS104)。一方、受信フレームがヘルスチェックフレーム以外のフレームであると判定した場合、フレーム識別部320は、LA制御部200のLA受信制御部210へ受信フレームを転送し、処理を終了する(ステップS106)。
なお、フレーム識別部310におけるフレーム受信処理の場合、ステップS104では、ヘルスチェックフレーム制御部400のヘルスチェック送信制御部430へ受信フレームを転送する。また、ステップS106では、LA制御部200のLA送信制御部230へ受信フレームを転送する。
(B−3)ヘルスチェックフレーム受信処理:
図11は、ヘルスチェックフレーム受信処理の手順を示すフローチャートである。ヘルスチェックフレーム受信処理は、ヘルスチェックフレーム制御部400のヘルスチェック受信制御部410が、フレームを受信した際に実行する処理である。
まず、ヘルスチェック受信制御部410は、受信フレームのヘッダ情報をもとに、受信ポートを特定する(ステップS202)。ヘルスチェック受信制御部410は、受信ポートの送信フラグ判定を行う(ステップS204)。具体的には、ヘルスチェック受信制御部410は、ステップS202で求めた受信ポートをキーとしてヘルスチェック送受信管理テーブル420を検索し、一致するエントリの送信フラグの値を参照する。一致するエントリの送信フラグの値が「on」である場合(ステップS204:on)、ヘルスチェック受信制御部410は、当該エントリの受信フラグの値を「on」へと更新し、処理をステップS208へと遷移させる(ステップS206)。一方、一致するエントリの送信フラグの値が「off」である場合(ステップS204:off)、ヘルスチェック受信制御部410は、処理をステップS208へと遷移させる。ステップS208において、ヘルスチェック受信制御部410は、受信フレームをフレーム中継部300へ転送した後、処理を終了する。
(B−4)ヘルスチェックフレーム送信処理:
図12は、ヘルスチェックフレーム送信処理の手順を示すフローチャートである。ヘルスチェックフレーム送信処理は、ヘルスチェックフレーム制御部400のヘルスチェック送信制御部430が、フレームを受信した際に実行する処理である。
まず、ヘルスチェック送信制御部430は、受信フレームのヘッダ情報をもとに、リングIDを特定する(ステップS302)。なお、ヘルスチェックフレームのヘッダ情報のリングIDは、マスタノードであるスイッチのリング管理部100によって、ヘルスチェックフレームの生成時に付与される。また、ヘルスチェック送信制御部430は、受信フレームのヘッダ情報をもとに、LAIDを特定する(ステップS304)。ヘルスチェック送信制御部430は、送信フラグ判定を行う(ステップS306)。具体的には、ヘルスチェック送信制御部430は、ステップS302で求めたリングIDと、ステップS304で求めたLAIDとをキーとしてヘルスチェック送受信管理テーブル420を検索し、一致するエントリの中に送信フラグの値が「on」であるエントリがあるか否かを判定する。
一致するエントリの中に送信フラグの値が「on」であるエントリがない場合(ステップS306:ALL off)、当該LAIDにより識別される仮想回線では、ヘルスチェックフレームの送信が初めて行われることを意味する。この場合、ヘルスチェック送信制御部430は、優先ポート判定を行う(ステップS308)。具体的には、ヘルスチェック送信制御部430は、LAIDから特定されたエントリ(ステップS306の検索結果)の優先ポート情報の値を参照する。
優先ポート情報の値が「primary」である場合(ステップS308:primary)、ヘルスチェック送信制御部430は、LAIDから特定されたエントリ(ステップS306の検索結果)の中から、最若番の物理ポート番号(すなわち、物理ポート番号を昇順にソートした場合に最も小さい番号)を選択し、処理をステップS314へ遷移させる(ステップS310)。一方、優先ポート情報の値が「secondary」である場合(ステップS308:secondary)、ヘルスチェック送信制御部430は、LAIDから特定されたエントリ(ステップS306の検索結果)の中から、最若番+1の物理ポート番号(すなわち、物理ポート番号を昇順にソートした場合に2番目に小さい番号)を選択し、処理をステップ314へ遷移させる(ステップS312)。なお、本実施例において、「最若番」とは、最も小さな番号を意味する。
ステップS314において、ヘルスチェック送信制御部430は、選択された物理ポートに対して、物理ポート状態判定を行う。具体的には、ヘルスチェック送信制御部430は、選択された物理ポート番号をキーとしてヘルスチェック送受信管理テーブル420を検索し、一致するエントリの物理ポート状態の値を参照する。
物理ポート状態の値が、通信不可能であることを示す「Down」である場合(ステップS314:Down)、ヘルスチェック送信制御部430は、選択ポート+1の物理ポート番号を再選択する(ステップS316)。具体的には、ヘルスチェック送信制御部430は、LAIDから特定されたエントリ(ステップS306の検索結果)を物理ポート番号で昇順にソートし、選択中の物理ポート番号の次の番号となる物理ポート番号を選択し、処理をステップS314へ遷移させる。なお、ステップS316において、選択中の物理ポート番号が、LAIDから特定されたエントリ(ステップS306の検索結果)の最老番(すなわち、物理ポート番号で昇順にソートした場合の最も大きい番号)である場合、ヘルスチェック送信制御部430は、最若番(すなわち、物理ポート番号で昇順にソートした場合の最も小さい番号)の物理ポート番号を再選択する。なお、本実施例において、「最老番」とは、最も大きな番号を意味する。
物理ポート状態の値が、通信可能であることを示す「Up」である場合(ステップS314:Up)、ヘルスチェック送信制御部430は、送信フラグと、受信フラグを更新する(ステップS318)。具体的には、ヘルスチェック送信制御部430は、選択された物理ポート番号を持つエントリ(ステップS314の検索結果)の送信フラグを「on」へと更新する。また、ヘルスチェック送信制御部430は、リングIDと、LAIDから特定されたエントリのうち、選択された物理ポート番号を持つエントリを除く全てのエントリの送信フラグを「off」へと更新する。さらに、ヘルスチェック送信制御部430は、LAIDから特定されたエントリ(ステップS306の検索結果)の全ての受信フラグを「off」へと更新する。その後、ヘルスチェック送信制御部430は、受信フレームを物理回線制御部500へ転送し、処理を終了する(ステップS320)。
ステップS306において、一致するエントリの中に送信フラグの値「on」のエントリがある場合(ステップS306:onあり)、当該LAIDにより識別される仮想回線におけるヘルスチェックフレームの送信が、既に過去にあった(すなわち、今回が2回目以降のフレーム送信)であることを意味する。この場合、ヘルスチェック送信制御部430は、優先ポート判定を行う(ステップS322)。詳細はステップS308と同様である。
優先ポート情報の値が「primary」である場合(ステップS322:primary)、ヘルスチェック送信制御部430は、送信フラグonの物理ポート+1の物理ポート番号を選択する(ステップS326)。具体的には、ヘルスチェック送信制御部430は、LAIDから特定されたエントリ(ステップS306の検索結果)を物理ポート番号で昇順にソートし、送信フラグの値が「on」であるエントリの物理ポート番号の次の番号となる物理ポート番号を選択する。その後、ヘルスチェック送信制御部430は、選択した物理ポートによるフレーム送信のために、処理をステップS314へ遷移させる。なお、ステップS326において、送信フラグonの物理ポート番号が、LAIDから特定されたエントリ(ステップS306の検索結果)の最老番(すなわち、物理ポート番号で昇順にソートした場合の最も大きい番号)である場合、ヘルスチェック送信制御部430は、最若番(すなわち、物理ポート番号で昇順にソートした場合の最も小さい番号)を選択する。
一方、優先ポート情報の値が「secondary」である場合(ステップS322:secondary)、ヘルスチェック送信制御部430は、送信フラグonの物理ポートにおける受信フラグ判定を行う(ステップS324)。具体的には、ヘルスチェック送信制御部430は、LAIDから特定されたエントリ(ステップS306の検索結果)のうち、送信フラグの値が「on」であるエントリの受信フラグの値を参照する。受信フラグの値が「off」である場合(ステップS324:off)、ヘルスチェック送信制御部430は、処理をステップS326へ遷移させる。受信フラグの値が「on」である場合(ステップS324:on)、ヘルスチェック送信制御部430は、当該エントリに格納されている物理ポート番号を選択し、選択した物理ポートによるフレーム送信のために、処理をステップS314へ遷移させる(ステップS328)。
(B−5)物理ポート状態変更処理:
図13は、物理ポート状態変更処理の手順を示すフローチャートである。物理ポート状態変更処理は、ヘルスチェックフレーム制御部400が、物理回線制御部500から、物理回線の状態に変化があった旨の通知を受信した場合に、その都度実行する処理である。
まず、ヘルスチェックフレーム制御部400は、物理回線制御部500からの通知を元に、状態に変化のあった物理回線に接続されている物理ポートを特定する(ステップS402)。ヘルスチェックフレーム制御部400は、物理回線制御部500からの通知を元に、ポート状態変更判定を行う(ステップS404)。具体的には、ヘルスチェックフレーム制御部400は、物理回線が正常状態に変化した旨の通知を受けた場合は「Up」であると判定し、物理回線に障害が発生した旨の通知を受けた場合は「Down」であると判定する。
判定結果が「Up」である場合(ステップS404:Up)、ヘルスチェックフレーム制御部400は、ヘルスチェック送受信管理テーブル420をステップS402で求めた物理ポート番号で検索し、一致するエントリの物理ポート状態の値を「Up」へ更新する(ステップS406)。判定結果が「Down」である場合(ステップS404:Down)、ヘルスチェックフレーム制御部400は、ヘルスチェック送受信管理テーブル420をステップS402で求めた物理ポート番号で検索し、一致するエントリの物理ポート状態の値を「Down」へ更新する(ステップS408)。その後、ヘルスチェックフレーム制御部400は処理を終了する。
(B−6)動作:
スイッチ10が用いられたネットワーク1000において、ヘルスチェックフレームの送受信が行われる様子を説明する。なお、以降では、図1に示したネットワーク1000のうち、スイッチ#1と#2、および、両スイッチを接続する仮想回線LNAに焦点を当てて説明する。スイッチ#1〜#4は、スイッチ#1がマスタノードとして振舞うこと、また、スイッチ#2〜#4がトランジットノードとして振舞うこと、を除いては同様の構成および動作を有するスイッチである。このため、スイッチ#1を用いてスイッチ10におけるセカンダリポートのフレーム処理を、スイッチ#2を用いてスイッチ10におけるプライマリポートのフレーム処理を、それぞれ説明する。なお、説明の便宜のため、スイッチ#2の構成要素の末尾には「p」を付与する。なお、スイッチ#2と#3、スイッチ#3と#4、スイッチ#4と#1との間についても、図14と同様の構成を有し、同様の処理が行われる。
(B−6−1)時刻t1(障害発生前1):
図14は、ネットワーク1000においてヘルスチェックフレームの送受信が開始される様子を示す説明図である。図14の上段は、スイッチ#1と#2および仮想回線LNAの概略図を表す。図14の下段は、スイッチ#1と#2がそれぞれ有するヘルスチェック送受信管理テーブル420の一部を表す。
仮想回線LNAを構成する物理回線LNA1は、スイッチ#1のリングID10、LAID1に属する物理ポート番号9のポートと、スイッチ#2のリングID10、LAID1に属する物理ポート番号9pのポートに、それぞれ接続されている。同様に、物理回線LNA2は、スイッチ#1のリングID10、LAID1に属する物理ポート番号10のポートと、スイッチ#2のリングID10、LAID1に属する物理ポート番号10pのポートに、物理回線LNA3は、スイッチ#1のリングID10、LAID1に属する物理ポート番号11のポートと、スイッチ#2のリングID10、LAID1に属する物理ポート番号11pのポートに、物理回線LNA4は、スイッチ#1のリングID10、LAID1に属する物理ポート番号12のポートと、スイッチ#2のリングID10、LAID1に属する物理ポート番号12pのポートに、それぞれ接続されている。スイッチ#1のうち、仮想回線LNAに接続されている物理ポート9〜12は、通常のフレームが送信不可能な(論理ブロック状態BKとされた)セカンダリポートである。一方、スイッチ#2のうち、仮想回線LNAに接続されている物理ポート9p〜12pは、通常のフレームが送信可能なプライマリポートである。
図14の時刻t1において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF1が送信される様子について説明する。
まず、マスタノードであるスイッチ#1のリング管理部100は、リングID10のヘルスチェックフレームHCF1を生成する。生成されたヘルスチェックフレームHCF1は、フレーム中継部300によって中継され、フレーム識別部310へ送信される。ヘルスチェックフレームHCF1を受信したフレーム識別部310は、フレーム受信処理(図10)を実行する。フレーム受信処理のフレーム種別判定において、ヘルスチェックフレームであると判定されるため(図10、ステップS102:ヘルスチェックフレーム)、フレーム識別部310は、受信フレームをスイッチ#1のヘルスチェック送信制御部430へ送信する(ステップS104)。
ヘルスチェックフレームHCF1を受信したヘルスチェック送信制御部430は、ヘルスチェックフレーム送信処理(図12)を行う。ヘルスチェック送信制御部430は、受信フレームのヘッダに格納された「リングID10、LAID1」という情報を用いて、送信フラグ判定(図12、ステップS306)を行う。時刻t1におけるスイッチ#1のヘルスチェック送受信管理テーブル420のエントリE11〜E14によれば、リングID10、LAID1の送信フラグの値は全てoffであるため(ステップS306:ALL off)、ヘルスチェック送信制御部430は、優先ポート判定(ステップS308)を行う。ヘルスチェック送受信管理テーブル420には、リングID10、LAID1の優先ポート情報の値はsecondaryとされているため(ステップS308:secondary)、ヘルスチェック送信制御部430は、最若番+1の物理ポート番号、すなわち、物理ポート番号10を選択する(ステップS312)。
ヘルスチェック送信制御部430は、選択した物理ポート番号10についての物理ポート状態判定を行う(ステップS314)。ヘルスチェック送受信管理テーブル420のエントリE12によれば、物理ポート番号10の物理ポート状態の値はUpである(ステップS314:Up)。このため、ヘルスチェック送信制御部430は、エントリE12の送信フラグの値を「offからon」へ更新すると共に、エントリE11〜E14の受信フラグの値を全て「off」へ更新する(ステップS318)。その後、ヘルスチェック送信制御部430は、物理回線制御部500へ、ヘルスチェックフレームHCF1を転送する。物理回線制御部500へ転送されたヘルスチェックフレームHCF1は、物理ポート番号10のポートから物理回線LNA2を用いて、スイッチ#2へ送信される。
図14の時刻t1において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB1が転送される様子について説明する。
まず、スイッチ#2が他のトランジットノードから受信したヘルスチェックフレームHCB1は、物理回線制御部500pによって受信され、フレーム識別部320pへ転送される。ヘルスチェックフレームHCB1を受信したフレーム識別部320pは、フレーム受信処理(図10)を実行する。フレーム受信処理のフレーム種別判定において、ヘルスチェックフレームであると判定されるため(図10、ステップS102:ヘルスチェックフレーム)、フレーム識別部320pは、受信フレームをヘルスチェック受信制御部410pへ送信する(ステップS104)。
ヘルスチェックフレームHCB1を受信したヘルスチェック受信制御部410pは、ヘルスチェックフレーム受信処理(図11)を実行し、受信フレームをフレーム中継部300pへ転送する。その後、ヘルスチェックフレームHCB1は、フレーム中継部300pによって中継され、フレーム識別部310pへ送信される。
ヘルスチェックフレームHCB1を受信したフレーム識別部310pは、フレーム受信処理(図10)を実行する。フレーム受信処理のフレーム種別判定において、ヘルスチェックフレームであると判定されるため(図10、ステップS102:ヘルスチェックフレーム)、フレーム識別部310pは、受信フレームをヘルスチェック送信制御部430pへ送信する(ステップS104)。
ヘルスチェックフレームHCB1を受信したヘルスチェック送信制御部430pは、ヘルスチェックフレーム送信処理(図12)を行う。ヘルスチェック送信制御部430pは、受信フレームのヘッダに格納された「リングID10、LAID1」という情報を用いて、送信フラグ判定(図12、ステップS306)を行う。時刻t1におけるスイッチ#2のヘルスチェック送受信管理テーブル420pのエントリE21〜E24によれば、リングID10、LAID1の送信フラグの値は全てoffであるため(ステップS306:ALL off)、ヘルスチェック送信制御部430pは、優先ポート判定(ステップS308)を行う。ヘルスチェック送受信管理テーブル420pには、リングID10、LAID1の優先ポート情報の値はprimaryとされているため(ステップS308:primary)、ヘルスチェック送信制御部430pは、最若番の物理ポート番号、すなわち、物理ポート番号9pを選択する(ステップS310)。
ヘルスチェック送信制御部430pは、選択した物理ポート番号9pについての物理ポート状態判定を行う(ステップS314)。ヘルスチェック送受信管理テーブル420pのエントリE21によれば、スイッチ#2の物理ポート番号9pの物理ポートの状態はUpである(ステップS314:Up)。このため、ヘルスチェック送信制御部430pは、エントリE21の送信フラグの値を「offからon」へ更新すると共に、エントリE21〜E24の受信フラグの値を全て「off」へ更新する(ステップS318)。その後、ヘルスチェック送信制御部430pは、物理回線制御部500pへ、ヘルスチェックフレームHCB1を転送する。物理回線制御部500pへ転送されたヘルスチェックフレームHCB1は、物理ポート番号9pのポートから物理回線LNA1を用いて、スイッチ#1へ送信される。
なお、スイッチ#1および#2において実行されるヘルスチェックフレーム受信後の処理についての詳細は後述する。
以上のように、ヘルスチェックフレームの送信を開始した時刻t1では、プライマリポートからのヘルスチェックフレームHCB1の送信は、最若番(すなわち、最も小さい番号)の物理ポート番号を有するポートを用いて行われる。また、セカンダリポートからのヘルスチェックフレームHCF1の送信は、最若番+1(すなわち、2番目に小さい番号)の物理ポート番号を有するポートを用いて行われる。この結果、スイッチ間の初回のヘルスチェックフレームの送受信は、仮想回線を構成する物理回線のうちの異なる物理回線を用いて行うことができる。さらに、スイッチ10のヘルスチェック送受信管理テーブル420の送信フラグには、対向装置へヘルスチェックフレームを送信したポートに「on」が格納される。
(B−6−2)時刻t2(障害発生前2):
図15は、ネットワーク1000において2回目以降のヘルスチェックフレームの送受信が行われる様子を示す説明図である。
図15の時刻t2において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF2が送信される様子について説明する。なお、時刻t2以降の説明では、時刻t1(前の時刻)と同様の処理については説明を省略する。
スイッチ#1のリング管理部100により生成されたヘルスチェックフレームHCF2を受信したヘルスチェック送信制御部430は、ヘルスチェックフレーム送信処理(図12)を行う。ヘルスチェック送信制御部430は、受信フレームのヘッダに格納された「リングID10、LAID1」という情報を用いて、送信フラグ判定(図12、ステップS306)を行う。時刻t2におけるスイッチ#1のヘルスチェック送受信管理テーブル420のエントリE11〜E14によれば、リングID10、LAID1の送信フラグの値にonのあるエントリE12が存在するため(ステップS306:onあり)、ヘルスチェック送信制御部430は、優先ポート判定(ステップS322)を行う。ヘルスチェック送受信管理テーブル420には、リングID10、LAID1の優先ポート情報の値はsecondaryとされているため(ステップS322:secondary)、ヘルスチェック送信制御部430は、受信フラグ判定(ステップS324)を行う。ヘルスチェック送受信管理テーブル420のエントリE11〜E14によれば、送信フラグの値がonであるエントリE12の受信フラグの値はoffであるため(ステップS324:off)、ヘルスチェック送信制御部430は、送信フラグonの物理ポート+1の物理ポート番号、すなわち、物理ポート番号11を選択する(ステップS326)。
その後、ヘルスチェック送信制御部430は、選択した物理ポート11についての物理ポート状態判定を行う(ステップS314)。ヘルスチェック送受信管理テーブル420のエントリE13によれば、スイッチ#1の物理ポート11の物理ポート状態の値はUpである(ステップS314:Up)。このため、ヘルスチェック送信制御部430は、エントリE13の送信フラグの値を「offからon」へ、エントリE12の送信フラグの値を「onからoff」へ、それぞれ更新すると共に、エントリE11〜E14の受信フラグの値を全て「off」へ更新する(ステップS318)。その後、ヘルスチェック送信制御部430は、物理回線制御部500へ、ヘルスチェックフレームHCF2を転送する。物理回線制御部500へ転送されたヘルスチェックフレームHCF2は、物理ポート番号11のポートから物理回線LNA3を用いて、スイッチ#2へ送信される。
図15の時刻t2において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB2が転送される様子について説明する。なお、時刻t2以降の説明では、時刻t1(前の時刻)と同様の処理については説明を省略する。
スイッチ#2が他のトランジットノードから受信したヘルスチェックフレームHCB2を受信したヘルスチェック送信制御部430pは、ヘルスチェックフレーム送信処理(図12)を行う。ヘルスチェック送信制御部430pは、受信フレームのヘッダに格納された「リングID10、LAID1」という情報を用いて、送信フラグ判定(図12、ステップS306)を行う。時刻t2におけるスイッチ#2のヘルスチェック送受信管理テーブル420pのエントリE21〜E24によれば、リングID10、LAID1の送信フラグの値にonのあるエントリE21が存在するため(ステップS306:onあり)、ヘルスチェック送信制御部430pは、優先ポート判定(ステップS322)を行う。ヘルスチェック送受信管理テーブル420pには、リングID10、LAID1の優先ポート情報の値はprimaryとされているため(ステップS322:primary)、ヘルスチェック送信制御部430pは、送信フラグonの物理ポート+1の物理ポート番号、すなわち、物理ポート番号10pを選択する(ステップS326)。
その後、ヘルスチェック送信制御部430pは、選択した物理ポート10pについての物理ポート状態判定を行う(ステップS314)。ヘルスチェック送受信管理テーブル420pのエントリE22によれば、スイッチ#2の物理ポート10pの物理ポート状態の値はUpである(ステップS314:Up)。このため、ヘルスチェック送信制御部430pは、エントリE22の送信フラグの値を「offからonへ」、エントリE21の送信フラグの値を「onからoff」へ、それぞれ更新すると共に、エントリE21〜E24の受信フラグの値を全て「off」へ更新する(ステップS318)。その後、ヘルスチェック送信制御部430pは、物理回線制御部500pへ、ヘルスチェックフレームHCB2を転送する。物理回線制御部500pへ転送されたヘルスチェックフレームHCB2は、物理ポート番号10pのポートから物理回線LNA2を用いて、スイッチ#1へ送信される。
なお、スイッチ#1および#2において実行されるヘルスチェックフレーム受信後の処理についての詳細は後述する。
以上のように、2回目以降のヘルスチェックフレームの送信が行われる時刻t2では、プライマリポートからのヘルスチェックフレームHCB2の送信と、セカンダリポートからのヘルスチェックフレームHCF2の送信とは、共に、送信フラグonの物理ポート+1(すなわち、前回ヘルスチェックフレームの送信が行われたポートの次の番号)の物理ポート番号を有するポートを用いて行われる。この結果、スイッチ間の2回目以降のヘルスチェックフレームの送受信についても、仮想回線を構成する物理回線のうちの異なる物理回線を用いて行うことができる。
(B−6−3)時刻t3(障害発生時):
図16は、ネットワーク1000において障害が発生した際の様子を示す説明図である。図16に示すように、ある時刻t3において、仮想回線LNAを構成する一部の物理回線(ここでは、物理回線LNA3とする)に障害が発生した場合の処理の様子について説明する。
まず、スイッチ#1のヘルスチェックフレーム制御部400は、物理回線制御部500からの通知を元に、障害が検出された物理回線LNA3に接続されている物理ポート11を特定し、ポート状態変更判定を行う(ステップS402、S404)。ヘルスチェックフレーム制御部400は、物理回線LNA3に障害が発生した旨の通知を受けているため(ステップS404:Down)、ヘルスチェック送受信管理テーブル420の該当エントリE13の物理ポート状態の値を「UpからDown」へ更新する(ステップS408)。
また、スイッチ#2のヘルスチェックフレーム制御部400pについても、物理回線制御部500pからの通知を元に、障害が検出された物理回線LNA3に接続されている物理ポート11pについて同様の処理を行う。
以上の結果、仮想回線LNAを構成する一部の物理回線に障害が発生した場合、当該物理回線に接続されているスイッチ10は、自身のヘルスチェック送受信管理テーブル420内の情報(物理ポート状態)を更新することができる。
(B−6−4)時刻t4(障害発生後1):
図17は、ネットワーク1000の障害発生後においてヘルスチェックフレームの送受信ポートが同一となる様子を示す説明図である。
図17の時刻t4において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF3が送信される様子について説明する。
スイッチ#1のセカンダリポートからのヘルスチェックフレームHCF3の送信は、時刻t2(図15)と同様の手順で行うことができる。従って、ヘルスチェックフレームHCF3は、送信フラグonの物理ポート+1、すなわち、前回(時刻t2、図15)ヘルスチェックフレームの送信が行われたポート11の次の物理ポート番号を有するポート12から、物理回線LNA4を用いて送信される。
図17の時刻t4において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB3が転送される様子について説明する。
スイッチ#2のプライマリポートからのヘルスチェックフレームHCB3の送信は、時刻t2(図15)と同様の手順で行うことはできない。これは、送信フラグonの物理ポート+1、すなわち、前回(時刻t2、図15)ヘルスチェックフレームの送信が行われたポート10pの次の物理ポート番号を有するポート11pは、通信不可能な状態であることに起因する。
ヘルスチェックフレーム送信処理(図12)において、ヘルスチェック送信制御部430pは、ステップS302〜S306、S322、S326の処理を経て、一旦、送信フラグonの物理ポート+1の物理ポート番号、すなわち、物理ポート番号11pを選択する(ステップS326)。その後、ヘルスチェック送信制御部430pは、選択した物理ポート11pについての物理ポート状態判定を行う(ステップS314)。ヘルスチェック送受信管理テーブル420pのエントリE23によれば、スイッチ#2の物理ポート11pの物理ポート状態の値はDownである(ステップS314:Down)。このため、ヘルスチェック送信制御部430pは、選択ポート+1の物理ポート番号、すなわち、選択中の物理ポート番号11pの次の物理ポート番号12pを再選択する(ステップS316)。そして、ヘルスチェック送信制御部430pは、ステップS314、S318、S320の処理を継続する。この結果、ヘルスチェックフレームHCB3は、ステップS316によって再選択された物理ポート番号を有するポート12pから、物理回線LNA4を用いて送信される。
以上のように、ネットワーク1000の障害発生後においては、プライマリポートからのヘルスチェックフレームHCB3と、セカンダリポートからのヘルスチェックフレームHCF3とが、仮想回線を構成する物理回線のうちの同一の物理回線を用いて行われる場合が生じる。これは、1つのスイッチに着眼すれば、ヘルスチェックフレームの送受信ポートが同一となる状態が発生していることとなる。
さらに、スイッチ#1および#2において実行されるヘルスチェックフレーム受信後の処理について説明する。
スイッチ#1は、スイッチ#2から送信されたヘルスチェックフレームHCB3を物理回線制御部500により受信する。ヘルスチェックフレームHCB3を受信した物理回線制御部500は、受信フレームをフレーム識別部320へ転送する。ヘルスチェックフレームHCB3を受信したフレーム識別部320は、フレーム受信処理(図10)を実行する。フレーム受信処理のフレーム種別判定において、ヘルスチェックフレームであると判定されるため(図10、ステップS102:ヘルスチェックフレーム)、フレーム識別部320は、受信フレームをヘルスチェック受信制御部410へ送信する(ステップS104)。
ヘルスチェックフレームHCB3を受信したヘルスチェック受信制御部410は、ヘルスチェックフレーム受信処理(図11)を実行する。具体的には、ヘルスチェック受信制御部410は、受信フレームのヘッダ情報をもとにして、ヘルスチェックフレームHCB3の受信ポート(物理ポート番号12)を特定する(ステップS202)。そして、ヘルスチェック受信制御部410は、受信ポートの送信フラグ判定を行う(ステップS204)。スイッチ#1の時刻t4におけるヘルスチェック送受信管理テーブル420によれば、受信ポートである物理ポート番号12のエントリE14の送信フラグの値はonである(ステップS204:on)。このため、ヘルスチェック受信制御部410は、当該エントリE14の受信フラグの値を「offからon」へと更新し(ステップS206)、受信フレームをフレーム中継部300へ転送する(ステップS208)。
また、スイッチ#1から送信されたヘルスチェックフレームHCF3を受信したスイッチ#2についても、スイッチ#1と同様に、フレーム受信処理(図10)と、ヘルスチェックフレーム受信処理(図11)とが行われる。
この結果、スイッチ10のヘルスチェック送受信管理テーブル420の受信フラグには、それぞれ、対向装置からヘルスチェックフレームを受信したポートに「on」が格納される。
(B−6−5)時刻t5(障害発生後2):
図18は、ネットワーク1000の障害発生後においてヘルスチェックフレームの送受信ポートが同一となる状態を回避する様子を示す説明図である。
図18の時刻t5において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF4が送信される様子について説明する。
スイッチ#1のセカンダリポートからのヘルスチェックフレームHCF4の送信は、時刻t2(図15)とは異なる手順で行う。これは、時刻t4で発生した、ヘルスチェックフレームの送受信ポートが同一となる状態を回避するためである。具体的には、ヘルスチェックフレーム送信処理(図12)において、ヘルスチェック送信制御部430は、ステップS302〜S306、S322の処理を経て、受信フラグ判定(ステップS324)を行う。スイッチ#1の時刻t5におけるヘルスチェック送受信管理テーブル420のエントリE11〜E14によれば、送信フラグの値がonであるエントリE14の受信フラグの値はonであるため(ステップS324:on)、ヘルスチェック送信制御部430は、送信フラグonの物理ポート番号、すなわち、物理ポート番号12を選択する(ステップS328)。
その後、ヘルスチェック送信制御部430は、ステップS314、S318、S320の処理を継続する。この結果、ヘルスチェックフレームHCF4は、ステップS328によって選択された物理ポート番号を有するポート12から、物理回線LNA4を用いて送信される。
図18の時刻t5において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB4が転送される様子について説明する。
スイッチ#2のプライマリポートからのヘルスチェックフレームHCB4の送信は、時刻t2(図15)と同様の手順で行うことができる。具体的には、ヘルスチェックフレームHCB4は、送信フラグonの物理ポート+1、すなわち、前回(時刻t4、図17)ヘルスチェックフレームの送信が行われたポート12pの次の物理ポート番号を有するポートを用いて送信される。ここでは、ポート12pは、ヘルスチェック送受信管理テーブル420pのエントリE21〜E24の中の最老番であるため、最若番であるポート9pを用いてヘルスチェックフレームが送信されることとなる。
以上のように、ヘルスチェックフレーム送信処理(図12)において、スイッチ10のヘルスチェック送信制御部430は、プライマリポート(第1の方向)に接続されたポートからのヘルスチェックフレームの送信の場合(ステップS322:primary)、ヘルスチェックフレームの送受信ポートが同一となる状態が発生しているか否かに関わらず、送信フラグonの物理ポート+1の番号を有するポート(すなわち、前回ヘルスチェックフレームを送信したポートとは異なるポート)を選択して、ヘルスチェックフレームの送信を行う。第1実施例においては、これを「第1の規則」とも呼ぶ。また、ヘルスチェックフレーム送信処理(図12)において、スイッチ10のヘルスチェック送信制御部430は、セカンダリポート(第2の方向)に接続されたポートからのヘルスチェックフレームの送信の場合(ステップS322:secondary)であって、ヘルスチェックフレームの送受信ポートが同一となる状態が発生している場合(ステップS324:on)は、送信フラグonの物理ポート番号を有するポート(すなわち、前回ヘルスチェックフレームを送信したポートと同じポート)を選択して、ヘルスチェックフレームの送信を行う。第1実施例においては、これを「第2の規則」とも呼ぶ。
以上のように、第1実施例では、ヘルスチェックフレーム制御部400のヘルスチェック送信制御部430(状態確認フレーム制御部)は、スイッチ10(ネットワーク中継装置)が仮想回線を介して接続されたネットワークの状態を確認するためのヘルスチェックフレーム(状態確認フレーム)を送信したポートと、他のスイッチ10からヘルスチェックフレームを受信したポートが同一となる状態が連続しないように、ヘルスチェックフレームを送信するポートを変える。具体的には、ヘルスチェックフレーム制御部400のヘルスチェック送信制御部430は、プライマリポート(第1の方向に接続されたポート)から、前回、ヘルスチェックフレームを送信したポートとは異なるポートを選択して次のヘルスチェックフレームを送信し、セカンダリポート(第2の方向に接続されたポート)から、前回、ヘルスチェックフレームを送信したポートと同じポートを選択して次のヘルスチェックフレームを送信するため、ヘルスチェックフレームの送受信ポートが同一となる状態が連続しないように、ヘルスチェックフレームを送信するポートを変えることができる。
従って、上記第1実施例では、ヘルスチェックフレームの送受信ポートが同一となる状態が連続し、かつ、当該送受信ポートに接続された物理回線に障害が発生した結果、ヘルスチェックフレームが破棄される現象の発生を抑制することができる。この結果、仮想回線を用いて物理回線を冗長化しつつ、ネットワークの状態を確認するための制御フレーム(ヘルスチェックフレーム)を交換するネットワーク中継装置(スイッチ10)において、仮想回線の障害の誤検出を低減することができる。
さらに、上記第1実施例では、ヘルスチェックフレーム制御部400のヘルスチェック送信制御部430(状態確認フレーム制御部)は、第1の規則に従ってポートを選択する際と、第2の規則に従ってポートを選択する際に、ヘルスチェック送受信管理テーブル420(履歴記憶部)に記憶された送受信ポートの履歴、すなわち、送信フラグ(送信ポートの履歴)と、受信フラグ(受信ポートの履歴)を参照することができる。
C.第2実施例:
本発明の第2実施例では、ヘルスチェックフレーム送信処理において、ヘルスチェックフレームの送受信ポートが同一となる状態を回避するための規則(第1の規則、第2の規則)が異なる構成について説明する。なお、図中において第1実施例と同様の構成部分については先に説明した第1実施例と同様の符号を付し、その詳細な説明を省略する。
(C−1)システム構成:
図19は、第2実施例としてのスイッチ10aの概略構成を示す説明図である。図6に示した第1実施例との違いは、ヘルスチェック送信制御部430に代えて、ヘルスチェック送信制御部430aを備える点のみであり、他の構成や動作は第1実施例と同様である。ヘルスチェック送信制御部430aは、フレームを受信した際に実行するヘルスチェックフレーム送信処理の内容が、図12に示した第1実施例と異なる。
(C−2)フレーム受信処理:
フレーム受信処理の手順は、図10に示した第1実施例と同様である。
(C−3)ヘルスチェックフレーム受信処理:
ヘルスチェックフレーム受信処理の手順は、図11に示した第1実施例と同様である。
(C−4)ヘルスチェックフレーム送信処理:
図20は、第2実施例におけるヘルスチェックフレーム送信処理の手順を示すフローチャートである。図12に示した第1実施例との違いは、ステップS312に代えてステップS502を備える点と、ステップS314とS316の間にステップS504とS506を備える点と、ステップS324とS328に代えてステップS508を備える点のみであり、他の動作は第1実施例と同様である。
ステップS308の優先ポート判定において、優先ポート情報の値が「secondary」である場合(ステップS308:secondary)、ヘルスチェック送信制御部430aは、LAIDから特定されたエントリ(ステップS306の検索結果)の中から、最老番の物理ポート番号(すなわち、物理ポート番号を昇順にソートした場合に最も大きい番号)を選択し、処理をステップS314へ遷移させる(ステップS502)。
ステップS314の物理ポート状態判定において、物理ポートの状態の値が、通信不可能であることを示す「Down」である場合(ステップS314:Down)、ヘルスチェック送信制御部430aは、優先ポート判定を行う(ステップS504)。具体的には、ヘルスチェック送信制御部430aは、選択された物理ポート番号をキーとしてヘルスチェック送受信管理テーブル420を検索し、一致するエントリの優先ポート情報の値を参照する。優先ポート情報の値が「primary」である場合(ステップS504:primary)、ヘルスチェック送信制御部430aは、処理をステップS316へ遷移させ、選択ポート+1の物理ポート番号を再選択する。詳細は図12で説明した通りである。一方、優先ポート情報の値が「secondary」である場合(ステップS504:secondary)、ヘルスチェック送信制御部430aは、選択ポート−1の物理ポート番号を再選択する(ステップS506)。具体的には、ヘルスチェック送信制御部430aは、LAIDから特定されたエントリ(ステップS306の検索結果)を物理ポート番号で昇順にソートし、選択中の物理ポート番号の1つ前の番号となる物理ポート番号を再選択し、処理をステップS314へ遷移させる。
ステップS322の優先ポート判定において、優先ポート情報の値が「secondary」である場合(ステップS322:secondary)、ヘルスチェック送信制御部430aは、送信フラグonの物理ポート−1の物理ポート番号を選択する(ステップS508)。具体的には、ヘルスチェック送信制御部430aは、LAIDから特定されたエントリ(ステップS306の検索結果)を物理ポート番号で昇順にソートし、送信フラグの値が「on」であるエントリの物理ポート番号の1つ前の番号となる物理ポート番号を選択する。その後、ヘルスチェック送信制御部430aは、選択した物理ポートによるフレーム送信のために、処理をステップS314へ遷移させる。
(C−5)物理ポート状態変更処理:
物理ポート状態変更処理の手順は、図13に示した第1実施例と同様である。
(C−6)動作:
第2実施例におけるスイッチ10aが用いられた第2実施例のネットワーク1000において、ヘルスチェックフレームの送受信が行われる様子を説明する。なお、説明に用いる図の構成等は、原則的に第1実施例と同様であり、以下では、第1実施例と異なる部分について説明する。
(C−6−1)時刻t1(障害発生前1):
図21は、第2実施例のネットワーク1000においてヘルスチェックフレームの送受信が開始される様子を示す説明図である。
図21の時刻t1において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF1が送信される様子について説明する。
スイッチ#1のリング管理部100により生成されたヘルスチェックフレームHCF1を受信したヘルスチェック送信制御部430aは、ヘルスチェックフレーム送信処理(図20)を行う。ヘルスチェック送信制御部430aは、ステップS302〜S306の処理を経て、優先ポート判定を行う(ステップS308)。ヘルスチェック送受信管理テーブル420には、リングID10、LAID1の優先ポート情報の値はsecondaryとされているため(ステップS308:secondary)、ヘルスチェック送信制御部430aは、最老番の物理ポート番号、すなわち、物理ポート番号12を選択する(ステップS502)。ヘルスチェック送受信管理テーブル420のエントリE14より、選択した物理ポート12の物理ポート状態は「Up」であるため(ステップS314:Up)、ヘルスチェック送信制御部430aは、ステップS318、S320の処理を継続する。従って、ヘルスチェックフレームHCF1は、物理ポート番号12のポートから物理回線LNA4を用いて、スイッチ#2へ送信される。
図21の時刻t1において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB1が送信される処理の手順は、第1実施例の時刻t1(図14)と同様である。従って、ヘルスチェックフレームHCB1は、物理ポート番号9pのポートから物理回線LNA1を用いて、スイッチ#1へ送信される。
(C−6−2)時刻t2(障害発生前2):
図22は、第2実施例のネットワーク1000において2回目のヘルスチェックフレームの送受信が行われる様子を示す説明図である。
図22の時刻t2において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF2が送信される様子について説明する。
スイッチ#1のリング管理部100により生成されたヘルスチェックフレームHCF2を受信したヘルスチェック送信制御部430aは、ヘルスチェックフレーム送信処理(図20)を行う。ヘルスチェック送信制御部430aは、ステップS302〜306の処理を経て、優先ポート判定を行う(ステップS322)。ヘルスチェック送受信管理テーブル420には、リングID10、LAID1の優先ポート情報の値はsecondaryとされているため(ステップS322:secondary)、ヘルスチェック送信制御部430aは、送信フラグonの物理ポート−1の物理ポート番号、すなわち、物理ポート番号11を選択する(ステップS508)。ヘルスチェック送受信管理テーブル420のエントリE13より、選択した物理ポート11の物理ポート状態は「Up」であるため(ステップS314:Up)、ヘルスチェック送信制御部430aは、ステップS318、S320の処理を継続する。従って、ヘルスチェックフレームHCF2は、物理ポート番号11のポートから物理回線LNA3を用いて、スイッチ#2へ送信される。
図22の時刻t2において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB2が送信される処理の手順は、第1実施例の時刻t2(図15)と同様である。従って、ヘルスチェックフレームHCB2は、物理ポート番号10pのポートから物理回線LNA2を用いて、スイッチ#1へ送信される。
(C−6−3)時刻t3(障害発生前3):
図23は、第2実施例のネットワーク1000において3回目のヘルスチェックフレームの送受信が行われる様子を示す説明図である。
図23の時刻t3において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF3が送信される処理の手順は、第2実施例の時刻t2(図22)と同様である。従って、ヘルスチェックフレームHCF3は、物理ポート番号10のポートから物理回線LNA2を用いて、スイッチ#2へ送信される。
図23の時刻t3において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB3が送信される処理の手順は、第2実施例の時刻t2(図22)と同様である。従って、ヘルスチェックフレームHCB3は、物理ポート番号11pのポートから物理回線LNA3を用いて、スイッチ#1へ送信される。
(C−6−4)時刻t4(障害発生時):
図24は、第2実施例のネットワーク1000において障害が発生した際の様子を示す説明図である。図24に示すように、ある時刻t4において、仮想回線LNAを構成する一部の物理回線(ここでは、物理回線LNA1とする)に障害が発生した場合の処理の手順は、第1実施例の時刻t3(図16)と同様である。従って、スイッチ#1のヘルスチェック送受信管理テーブル420のうち、障害が発生した物理ポートに該当するエントリE11の、物理ポート状態の値は「UpからDown」へ更新される(図13、ステップS408)。同様に、スイッチ#2のヘルスチェック送受信管理テーブル420pのうち、障害が発生した物理ポートに該当するエントリE21の物理ポート状態の値は「UpからDown」へ更新される(図13、ステップS408)。
(C−6−5)時刻t5(障害発生後1):
図25は、第2実施例のネットワーク1000の障害発生後においてヘルスチェックフレームの送受信ポートが同一となる様子を示す説明図である。
図25の時刻t5において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF4が送信される様子について説明する。
スイッチ#1のセカンダリポートからのヘルスチェックフレームHCF4の送信は、時刻t2(図22)と同様の手順で行うことはできない。これは、送信フラグonの物理ポート−1、すなわち、前回(時刻t3、図23)ヘルスチェックフレームの送信が行われたポート10の前の物理ポート番号を有するポート9は、通信不可能な状態であることに起因する。
ヘルスチェックフレーム送信処理(図20)において、ヘルスチェック送信制御部430aは、ステップS302〜S306、S322、S508の処理を経て、一旦、送信フラグonの物理ポート−1の物理ポート番号、すなわち、物理ポート番号9を選択する(ステップS508)。その後、ヘルスチェック送信制御部430aは、選択した物理ポート番号9についての物理ポート状態判定を行う(ステップS314)。ヘルスチェック送受信管理テーブル420のエントリE11によれば、スイッチ#1の物理ポート番号9の物理ポート状態の値はDownである(ステップS314:Down)。
このため、ヘルスチェック送信制御部430aは、選択した物理ポート番号9についての優先ポート判定を行う(ステップS504)。ヘルスチェック送受信管理テーブル420のエントリE11によれば、スイッチ#1の物理ポート番号9の優先ポート情報の値はsecondaryである(ステップS504:secondary)。従って、ヘルスチェック送信制御部430aは、選択ポート−1の物理ポート番号、すなわち、選択中の物理ポート番号9の1つ前の物理ポート番号12を再選択する(ステップS506)。そして、ヘルスチェック送信制御部430aは、ステップS314、S318、S320の処理を継続する。この結果、ヘルスチェックフレームHCF4は、ステップS506によって再選択された物理ポート番号を有するポート12から物理回線LNA4を用いて送信される。
図25の時刻t5において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB4が送信される処理の手順は、第2実施例の時刻t2(図22)と同様である。従って、ヘルスチェックフレームHCB4は、物理ポート番号12pのポートから物理回線LNA4を用いて、スイッチ#1へ送信される。
以上のように、第2実施例においても、ネットワーク1000の障害発生後に、プライマリポートからのヘルスチェックフレームHCB4と、セカンダリポートからのヘルスチェックフレームHCF4とが、仮想回線を構成する物理回線のうちの同一の物理回線を用いて行われる場合が生じる。これは、1つのスイッチに着眼すれば、ヘルスチェックフレームの送受信ポートが同一となる状態が発生していることとなる。
また、スイッチ#1および#2において実行される、ヘルスチェックフレーム受信後の処理の手順は、第1実施例の時刻t4(図17)と同様である。従って、スイッチ10のヘルスチェック送受信管理テーブル420の受信フラグには、それぞれ、対向装置からヘルスチェックフレームを受信したポートに「on」が格納される。(図11、ステップS206)。
(C−6−6)時刻t6(障害発生後2):
図26は、第2実施例のネットワーク1000の障害発生後においてヘルスチェックフレームの送受信ポートが同一となる状態を回避する様子を示す説明図である。
図26の時刻t6において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF5が送信される処理の手順は、第2実施例の時刻t2(図22)と同様である。従って、ヘルスチェックフレームHCF5は、物理ポート番号11のポートから物理回線LNA3を用いて、スイッチ#2へ送信される。
図26の時刻t6において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB5が転送される様子について説明する。
スイッチ#2のプライマリポートからのヘルスチェックフレームHCB5の送信は、第2実施例の時刻t2(図22)と同様の手順で行うことはできない。これは、送信フラグonの物理ポート+1、すなわち、前回(時刻t5、図25)ヘルスチェックフレームの送信が行われたポート12pの次の物理ポート番号を有するポート9pは、通信不可能な状態であることに起因する。
ヘルスチェックフレーム送信処理(図20)において、ヘルスチェック送信制御部430apは、ステップS302〜S306、S322、S326の処理を経て、一旦、送信フラグonの物理ポート+1の物理ポート番号、すなわち、物理ポート番号9pを選択する(ステップS326)。その後、ヘルスチェック送信制御部430apは、選択した物理ポート番号9pについての物理ポート状態判定を行う(ステップS314)。ヘルスチェック送受信管理テーブル420pのエントリE21によれば、スイッチ#2の物理ポート9pの物理ポート状態の値はDownである(ステップS314:Down)。
また、優先ポート情報の値は「primary」である(ステップS504:primary)。このため、ヘルスチェック送信制御部430apは、選択ポート+1の物理ポート番号、すなわち、選択中の物理ポート番号9pの次の物理ポート番号10pを再選択する(ステップS316)。そして、ヘルスチェック送信制御部430apは、ステップS314、S318、S320の処理を継続する。この結果、ヘルスチェックフレームHCB5は、ステップS316によって再選択された物理ポート番号を有するポート10pから、物理回線LNA2を用いて送信される。
以上のように、ヘルスチェックフレーム送信処理(図20)において、スイッチ10aのヘルスチェック送信制御部430aは、プライマリポート(第1の方向)に接続されたポートからのヘルスチェックフレーム送信の場合(ステップS322:primary)、ヘルスチェックフレームの送受信ポートが同一となる状態が発生しているか否かに関わらず、送信フラグonの物理ポート+1の番号を有するポート(すなわち、前回ヘルスチェックフレームを送信したポートの次に大きい番号が割り当てられたポート)を選択して、ヘルスチェックフレームの送信を行う。同様に、選択された物理ポートが通信不可能なDown状態であった場合(ステップS314:Down)、選択ポート+1の番号を有するポート(すなわち、選択された物理ポートの次に大きい番号が割り当てられたポート)を再度選択する。第2実施例においては、これらを「第1の規則」とも呼ぶ。また、ヘルスチェックフレーム送信処理(図20)において、スイッチ10aのヘルスチェック送信制御部430aは、セカンダリポート(第2の方向)に接続されたポートからのヘルスチェックフレームの送信の場合(ステップS322:secondary)、ヘルスチェックフレームの送受信ポートが同一となる状態が発生しているか否かに関わらず、送信フラグonの物理ポート-1の番号を有するポート(すなわち、前回ヘルスチェックフレームを送信したポートの次に小さい番号が割り当てられたポート)を選択して、ヘルスチェックフレームの送信を行う。同様に、選択された物理ポートが通信不可能なDown状態であった場合(ステップS314:Down)、選択ポート-1の番号を有するポート(すなわち、選択された物理ポートの次に小さい番号が割り当てられたポート)を再度選択する。第2実施例においては、これを「第2の規則」とも呼ぶ。
以上のように、第2実施例では、ヘルスチェックフレーム制御部400のヘルスチェック送信制御部430a(状態確認フレーム制御部)は、プライマリポート(第1の方向に接続されたポート)から、前回、ヘルスチェックフレーム(状態確認フレーム)を送信したポートの次に大きいポート番号が割り当てられたポートを選択して次のヘルスチェックフレームを送信し、セカンダリポート(第2の方向に接続されたポート)から、前回、ヘルスチェックフレームを送信したポートの次に小さいポート番号が割り当てられたポートを選択して次のヘルスチェックフレームを送信するため、ヘルスチェックフレームの送受信ポートが同一となる状態が連続しないように、ヘルスチェックフレームを送信するポートを変えることができる。
従って、第2実施例においても、第1実施例と同様、仮想回線を用いて物理回線を冗長化しつつ、ネットワークの状態を確認するための制御フレーム(ヘルスチェックフレーム)を交換するネットワーク中継装置(スイッチ10a)において、仮想回線の障害の誤検出を低減することができる。
D.第3実施例:
本発明の第3実施例では、原則として、ヘルスチェックフレームの送受信ポートが同一となる状態が発生しない構成について説明する。なお、図中において第1実施例と同様の構成部分については先に説明した第1実施例と同様の符号を付し、その詳細な説明を省略する。
(D−1)システム構成:
図27は、第3実施例としてのスイッチ10bの概略構成を示す説明図である。図6に示した第1実施例との違いは、ヘルスチェックフレーム制御部400に代えてヘルスチェックフレーム制御部400bを備える点のみであり、他の構成や動作は第1実施例と同様である。
ヘルスチェックフレーム制御部400bは、ヘルスチェック送受信管理テーブル420に代えてヘルスチェック送受信管理テーブル420bを、ヘルスチェック送信制御部430に代えてヘルスチェック送信制御部430bを、それぞれ備えている。さらに、ヘルスチェックフレーム制御部400bは、物理ポート状態変更処理の内容が、図13に示した第1実施例とは異なる。ヘルスチェック送受信管理テーブル420bは、テーブルに格納されたエントリの内容が、図9に示した第1実施例と異なる。ヘルスチェック送信制御部430bは、フレームを受信した際に実行するヘルスチェックフレーム送信処理の内容が、図12に示した第1実施例と異なる。
図28は、第2実施例におけるヘルスチェック送受信管理テーブル420bの一例を示す説明図である。図9に示す第1実施例との違いは、テーブルの優先ポート情報に格納されている値のみであり、他の構成や動作については第1実施例と同様である。ヘルスチェック送受信管理テーブル420bにおいて、優先ポート情報には、LAIDにより識別される仮想回線をプライマリポートとして使用する場合は「primary」の値が、セカンダリポートとして使用する場合は「secondary」の値が、さらに、ヘルスチェックフレームの送信ポートとして使用しない場合は「NOT」の値が、それぞれ格納されている。
具体的には、図28の例では、プライマリポートとして用いる仮想回線については、物理ポート状態が「Up」であるポート、すなわち、通信可能な物理回線に接続されているポートの奇数番目に対して「primary」の値が、偶数番目に対して「NOT」の値が、それぞれ格納されている。これとは逆に、セカンダリポートとして用いる仮想回線については、物理ポート状態が「Up」であるポート、すなわち、通信可能な物理回線に接続されているポートの偶数番目に対して「secondary」の値が、奇数番目に対して「NOT」の値が、それぞれ格納されている。
(D−2)フレーム受信処理:
フレーム受信処理の手順は、図10に示した第1実施例と同様である。
(D−3)ヘルスチェックフレーム受信処理:
ヘルスチェックフレーム受信処理の手順は、図11に示した第1実施例と同様である。
(D−4)ヘルスチェックフレーム送信処理:
図29は、第3実施例におけるヘルスチェックフレーム送信処理の手順を示すフローチャートである。図12に示した第1実施例との違いは、ステップS322、S324、S328を備えない点と、ステップS308、S310、S312に代えてステップS602、S604、S606を、ステップS314に代えてステップS608を、それぞれ備える点のみであり、他の動作は第1実施例と同様である。
ステップS306の送信フラグ判定において、LAIDから特定されたエントリ(ステップS306の検索結果)の中に送信フラグの値が「on」であるエントリがない場合(ステップS306:ALL off)、ヘルスチェック送信制御部430bは、優先ポート判定を行う(ステップS602)。具体的には、ヘルスチェック送信制御部430bは、LAIDから特定されたエントリ(ステップS306の検索結果)の優先ポート情報の値を参照する。
優先ポート情報の値が「primary」であるエントリが含まれている場合(ステップS602:primaryあり)、ヘルスチェック送信制御部430bは、LAIDから特定されたエントリ(ステップS306の検索結果)の中であって、かつ、優先ポート情報の値がprimaryであるエントリの中から、最若番の物理ポート番号(すなわち、物理ポート番号を昇順にソートした場合に最も小さい番号)を選択し、処理をステップS608へ遷移させる(ステップS604)。一方、優先ポート情報の値が「secondary」であるエントリが含まれている場合(ステップS602:secondaryあり)、ヘルスチェック送信制御部430bは、LAIDから特定されたエントリ(ステップS306の検索結果)の中であって、かつ、優先ポート情報の値がsecondaryであるエントリの中から、最若番の物理ポート番号(すなわち、物理ポート番号を昇順にソートした場合に最も小さい番号)を選択し、処理をステップS608へ遷移させる(ステップS606)。
ステップS608において、ヘルスチェック送信制御部430bは、選択された物理ポートについて、優先ポート判定を行う(ステップS608)。具体的には、ヘルスチェック送信制御部430bは、選択された物理ポート番号をキーとしてヘルスチェック送受信管理テーブル420bを検索し、一致するエントリの優先ポート情報の値を参照する。優先ポート情報の値が、ヘルスチェックフレームの送信ポートとして使用しないことを示す「NOT」である場合(ステップS608:NOT)、ヘルスチェック送信制御部430bは、処理をステップS316へ遷移させ、選択ポート+1の物理ポート番号を再選択する。詳細は図12で説明した通りである。一方、優先ポート情報の値が、「NOT」以外である場合(ステップS608:NOTでない)、ヘルスチェック送信制御部430bは、処理をステップS318へ遷移させ、送信フラグと受信フラグを更新する。
(D−5)物理ポート状態変更処理:
図30は、第3実施例における物理ポート状態変更処理の手順を示すフローチャートである。図13に示した第1実施例との違いは、ステップS408の後に、ステップS702〜S724を備える点のみであり、他の動作は第1実施例と同様である。
ステップS702においてヘルスチェックフレーム制御部400bは、対象物理ポートが属するLAを構成する物理ポートの1つを特定する。この選択は、例えば、物理ポート番号の昇順に行うことができる。具体的には、ヘルスチェックフレーム制御部400bは、ステップS402において特定した物理ポートが属するLAIDを特定し、当該LAIDに属する物理ポートの1つを選択する。次に、ヘルスチェックフレーム制御部400bは、選択された物理ポートに対して、物理ポート状態判定を行う(ステップS704)。具体的には、ヘルスチェックフレーム制御部400bは、選択された物理ポート番号をキーとしてヘルスチェック送受信管理テーブル420bを検索し、一致するエントリの物理ポート状態の値を参照する。物理ポートの状態が、通信不可能であることを示す「Down」である場合(ステップS704:Down)、ヘルスチェックフレーム制御部400bは、当該エントリの優先ポート情報の値を「NOT」へと更新し、処理をステップS718へ遷移させる(ステップS706)。
物理ポートの値が、通信可能であることを示す「Up」である場合(ステップS704:Up)、ヘルスチェックフレーム制御部400bは、当該物理ポートはUpポートの奇数番目か否かを判定する(ステップS708)。具体的には、ヘルスチェックフレーム制御部400bは、ステップS702において選択された物理ポートが、同じLAIDに属する物理ポートであって、物理ポート状態が「Up」であるポート(すなわち、通信可能な物理回線に接続されているポート)のうちの奇数番目であるか否かを判定する。
選択された物理ポートがUpポートの奇数番目である場合(ステップS708:奇数番目)、ヘルスチェックフレーム制御部400bは、LA単位での優先ポート判定を行う(ステップS710)。具体的には、ヘルスチェックフレーム制御部400bは、選択された物理ポートが属するLAIDの優先ポート情報がprimary、secondaryのどちらであるかを判定する。優先ポート情報の値が「primary」である場合(ステップS710:primary)、ヘルスチェックフレーム制御部400bは、選択された物理ポートに対して、当該エントリの優先ポート情報の値を「primary」へと更新し、処理をステップS718へ遷移させる(ステップS712)。一方、優先ポート情報の値が「secondary」である場合(ステップS710:secondary)、ヘルスチェックフレーム制御部400bは、処理をステップS706へ遷移させ、選択された物理ポートに対して、当該エントリの優先ポート情報の値を「NOT」へ更新する。
選択された物理ポートがUpポートの偶数番目である場合(ステップS708:偶数番目)、ヘルスチェックフレーム制御部400bは、LA単位での優先ポート判定を行う(ステップS714)。詳細は、ステップS710と同様である。優先ポート情報の値が「primary」である場合(ステップS714:primary)、ヘルスチェックフレーム制御部400bは、処理をステップS706へ遷移させ、選択された物理ポートに対して、当該エントリの優先ポート情報の値を「NOT」へ更新する。一方、優先ポート情報の値が「secondary」である場合(ステップS714:secondary)、ヘルスチェックフレーム制御部400bは、選択された物理ポートに対して、当該エントリの優先ポート情報の値を「secondary」へと更新し、処理をステップS718へ遷移させる(ステップS716)。
ステップS718においてヘルスチェックフレーム制御部400bは、ステップS402において特定した物理ポートが属するLAIDに属する全ての物理ポートに対して、ステップS702〜S716の処理を行ったか否かを判定する。全ての物理ポートに対して処理を行っていない場合(ステップS718:NO)、ヘルスチェックフレーム制御部400bは、処理をステップS702へ遷移させる。
全ての物理ポートに対して処理を終えた場合(ステップS718:YES)、ヘルスチェックフレーム制御部400bは、Upポートは1つだけか否かを判定する(ステップS720)。具体的には、ヘルスチェックフレーム制御部400bは、ステップS402において特定した物理ポートが属するLAIDに属する全ての物理ポートのうち、物理ポート状態が「Up」であるポート(すなわち、通信可能な物理回線に接続されているポート)が1つだけか否かを判定する。Upポートが複数ある場合(ステップS720:NO)、ヘルスチェックフレーム制御部400bは処理を終了させる。
Upポートが1つだけしかない場合(ステップS720:YES)、ヘルスチェックフレーム制御部400bは、当該Upポートの優先ポート判定を行う(ステップS722)。具体的には、ヘルスチェックフレーム制御部400bは、Upポートのエントリの優先ポート情報の値を参照する。優先ポート情報の値が「primary」である場合(ステップS722:primary)、ヘルスチェックフレーム制御部400bは処理を終了させる。一方、優先ポート情報の値が「NOT」である場合(ステップS722:NOT)、ヘルスチェックフレーム制御部400bは、当該エントリの優先ポート情報の値を「secondary」へと更新し、処理を終了させる(ステップS724)。
(D−6)動作:
第3実施例におけるスイッチ10bが用いられたネットワーク1000において、ヘルスチェックフレームの送受信が行われる様子を説明する。なお、説明に用いる図の構成等は、原則的に第1実施例と同様であり、以下では、第1実施例と異なる部分について説明する。
(D−6−1)時刻t1(障害発生前1):
図31は、第3実施例のネットワーク1000においてヘルスチェックフレームの送受信が開始される様子を示す説明図である。
図31の時刻t1において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF1が送信される様子について説明する。
スイッチ#1のリング管理部100により生成されたヘルスチェックフレームHCF1を受信したヘルスチェック送信制御部430bは、ヘルスチェックフレーム送信処理(図29)を行う。ヘルスチェック送信制御部430bは、ステップS302〜S306の処理を経て、優先ポート判定を行う(ステップS602)。ヘルスチェック送受信管理テーブル420bには、リングID10、LAID1の優先ポート情報の値はsecondaryとされているため(ステップS602:secondaryあり)、ヘルスチェック送信制御部430bは、secondaryポート(優先ポート情報の値がsecondaryであるポート)の最若番の物理ポート番号、すなわち、物理ポート番号10を選択する(ステップS606)。その後、ヘルスチェック送信制御部430bは、優先ポート判定を行う(ステップS608)。ヘルスチェック送受信管理テーブル420bのエントリE12より、選択した物理ポート番号10の優先ポート情報の値はNOTではないため(ステップS608:NOTでない)、ヘルスチェック送信制御部430bは、ステップS318、S320の処理を継続する。従って、ヘルスチェックフレームHCF1は、物理ポート番号10のポートから物理回線LNA2を用いて、スイッチ#2へ送信される。
図31の時刻t1において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB1が送信される様子について説明する。
スイッチ#2が他のトランジットノードから受信したヘルスチェックフレームHCB1を受信したヘルスチェック送信制御部430bpは、ヘルスチェックフレーム送信処理(図29)を行う。ヘルスチェック送信制御部430bpは、ステップS302〜S306の処理を経て、優先ポート判定を行う(ステップS602)。ヘルスチェック送受信管理テーブル420bpには、リングID10、LAID1の優先ポート情報の値はprimaryとされているため(ステップS602:primaryあり)、ヘルスチェック送信制御部430bpは、primaryポート(優先ポート情報の値がprimaryであるポート)の最若番の物理ポート番号、すなわち、物理ポート番号9pを選択する(ステップS604)。その後、ヘルスチェック送信制御部430bpは、優先ポート判定を行う(ステップS608)。ヘルスチェック送受信管理テーブル420bpのエントリE21より、選択した物理ポート番号9pの優先ポート情報の値はNOTではないため(ステップS608:NOTでない)、ヘルスチェック送信制御部430bpは、ステップS318、S320の処理を継続する。従って、ヘルスチェックフレームHCB1は、物理ポート番号9pのポートから物理回線LNA1を用いて、スイッチ#1へ送信される。
(D−6−2)時刻t2(障害発生前2):
図32は、第3実施例のネットワーク1000において2回目のヘルスチェックフレームの送受信が行われる様子を示す説明図である。
図32の時刻t2において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF2が送信される処理の手順は、第3実施例の時刻t1(図31)と同様である。従って、ヘルスチェックフレームHCF2は、優先ポート情報の値がNOTでないsecondaryポート、すなわち、物理ポート番号12のポートから物理回線LNA4を用いて、スイッチ#2へ送信される。
図32の時刻t2において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB2が送信される処理の手順は、第3実施例の時刻t1(図31)と同様である。従って、ヘルスチェックフレームHCB2は、優先ポート情報の値がNOTでないprimaryポート、すなわち、物理ポート番号11pのポートから物理回線LNA3を用いて、スイッチ#1へ送信される。
(D−6−3)時刻t3(障害発生時):
図33は、第3実施例のネットワーク1000において障害が発生した際の様子を示す説明図である。図33に示すように、ある時刻t3において、仮想回線LNAを構成する一部の物理回線(ここでは、物理回線LNA2とする)に障害が発生した場合の処理の様子について説明する。
まず、スイッチ#1のヘルスチェックフレーム制御部400bは、物理回線制御部500からの通知を元に、障害が検出された物理回線LNA2に接続されている物理ポート10を特定し、ポート状態変更判定を行う(図30、ステップS402、S404)。ヘルスチェックフレーム制御部400bは、物理回線LNA2に障害が発生した旨の通知を受けているため(ステップS404:Down)、ヘルスチェック送受信管理テーブル420bの該当エントリE12の物理ポート状態の値を「UpからDown」へ更新する(ステップS408)。
ヘルスチェックフレーム制御部400bは、対象物理ポート10が属するLA(LAID1)を構成する物理ポートの1つである物理ポート番号9を選択し、物理ポート状態判定を行う(ステップS702、S704)。時刻t3におけるスイッチ#1のヘルスチェック送受信管理テーブル420bのエントリE11によれば、物理ポート番号9の物理ポート状態の値はUpである(ステップS704:Up)。このため、ヘルスチェックフレーム制御部400bは、当該物理ポートはUpポート(通信可能な物理回線に接続されているポート)の奇数番目か否かを判定する(ステップS708)。物理ポート番号9のポートは、Upポートの1番目、すなわち、奇数番目のポートである(ステップS708:奇数番目)。ヘルスチェックフレーム制御部400bは、物理ポート番号9のポートが属するLAIDの優先ポート情報がprimary、secondaryのどちらであるかを判定する(ステップS710)。物理ポート番号9のポートが属するLAID1の優先ポート情報はsecondaryであるため(ステップS710:secondary)、ヘルスチェックフレーム制御部400bは、物理ポート番号9のエントリE11の優先ポート情報の値を「NOTからNOT」へ更新する(ステップS706)。ヘルスチェックフレーム制御部400bは、LAID1に属する全ての物理ポートの処理を終えていないため(ステップS718:NO)、処理をステップS702へ遷移させる。
ヘルスチェックフレーム制御部400bは、対象物理ポート10が属するLA(LAID1)を構成する物理ポートの他の1つである物理ポート番号10を選択し、物理ポート状態判定を行う(ステップS702、S704)。ヘルスチェック送受信管理テーブル420bのエントリE12によれば、物理ポート番号10の物理ポート状態の値はDownである(ステップS704:Down)。このため、ヘルスチェックフレーム制御部400bは、物理ポート番号10のエントリE12の優先ポート情報の値を「secondaryからNOT」へ更新する(ステップS706)。ヘルスチェックフレーム制御部400bは、LAID1に属する全ての物理ポートの処理を終えていないため(ステップS718:NO)、処理をステップS702へ遷移させる。
ヘルスチェックフレーム制御部400bは、対象物理ポート10が属するLA(LAID1)を構成する物理ポートの他の1つである物理ポート番号11を選択し、物理ポート状態判定を行う(ステップS702、S704)。ヘルスチェック送受信管理テーブル420bのエントリE13によれば、物理ポート番号11の物理ポート状態の値はUpである(ステップS704:Up)。このため、ヘルスチェックフレーム制御部400bは、当該物理ポートはUpポートの奇数番目か否かを判定する(ステップS708)。物理ポート番号11のポートは、Upポートの2番目、すなわち、偶数番目のポートである(ステップS708:偶数番目)。ヘルスチェックフレーム制御部400bは、物理ポート番号11のポートが属するLAIDの優先ポート情報がprimary、secondaryのどちらであるかを判定する(ステップS714)。物理ポート番号11のポートが属するLAID1の優先ポート情報はsecondaryであるため(ステップS714:secondary)、ヘルスチェックフレーム制御部400bは、物理ポート番号11のエントリE13の優先ポート情報の値を「NOTからsecondary」へ更新する(ステップS716)。ヘルスチェックフレーム制御部400bは、LAID1に属する全ての物理ポートの処理を終えていないため(ステップS718:NO)、処理をステップS702へ遷移させる。
ヘルスチェックフレーム制御部400bは、対象物理ポート10が属するLA(LAID1)を構成する物理ポートの1つである物理ポート番号12を選択し、物理ポート状態判定を行う(ステップS702、S704)。ヘルスチェック送受信管理テーブル420bのエントリE14によれば、物理ポート番号12の物理ポート状態の値はUpである(ステップS704:Up)。このため、ヘルスチェックフレーム制御部400bは、当該物理ポートはUpポート(通信可能な物理回線に接続されているポート)の奇数番目か否かを判定する(ステップS708)。物理ポート番号12のポートは、Upポートの3番目、すなわち、奇数番目のポートである(ステップS708:奇数番目)。ヘルスチェックフレーム制御部400bは、物理ポート番号12のポートが属するLAIDの優先ポート情報がprimary、secondaryのどちらであるかを判定する(ステップS710)。物理ポート番号12のポートが属するLAID1の優先ポート情報はsecondaryであるため(ステップS710:secondary)、ヘルスチェックフレーム制御部400bは、物理ポート番号12のエントリE14の優先ポート情報の値を「secondaryからNOT」へ更新する(ステップS706)。
ヘルスチェックフレーム制御部400bは、LAID1に属する全ての物理ポートの処理を終えたため(ステップS718:YES)、LAID1に属する全ての物理ポートのうち、Upポートが1つだけか否かを判定する(ステップS720)。LAID1に属する物理ポートには、番号9、11、12の3つのUpポートがあるため(ステップS720:NO)、ヘルスチェックフレーム制御部400bは処理を終了させる。
また、スイッチ#2のヘルスチェックフレーム制御部400bpについても、物理回線制御部500pからの通知を元に、障害が検出された物理回線LNA2に接続されている物理ポート10pについて同様の処理を行う。
以上の結果、物理回線に障害が発生した場合、ヘルスチェックフレーム制御部400bは、障害が発生した物理回線を有するLAIDに属する全ての物理回線について、ヘルスチェック送受信管理テーブル420bの優先ポート情報の値を付与し直す。具体的には、スイッチ10bのヘルスチェック送受信管理テーブル420bは、障害発生後、障害が発生した物理回線に接続されている優先ポート情報の値に「NOT」が付与される。このため、障害が発生した物理回線は、その後、ヘルスチェックフレームの送信には用いられなくなる。
(D−6−4)時刻t4(障害発生後1):
図34は、第3実施例のネットワーク1000の障害発生後において、ヘルスチェックフレームの送受信が開始される様子を示す説明図である。
図34の時刻t4において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF3が送信される様子について説明する。
スイッチ#1のリング管理部100により生成されたヘルスチェックフレームHCF3を受信したヘルスチェック送信制御部430bは、ヘルスチェックフレーム送信処理(図29)を行う。ヘルスチェック送信制御部430bは、ステップS302、S304の処理を経て、送信フラグ判定を行う(ステップS306)。スイッチ#1の時刻t4におけるヘルスチェック送受信管理テーブル420bのエントリE11〜E14によれば、リングID10、LAID1の送信フラグの値にonのあるエントリE14が存在するため(ステップS306:onあり)、ヘルスチェック送信制御部430bは、送信フラグonの物理ポート+1の物理ポート番号、すなわち、物理ポート番号9を選択する(ステップS326)。その後、ヘルスチェック送信制御部430bは、選択した物理ポート番号9についての優先ポート判定を行う(ステップS608)。ヘルスチェック送受信管理テーブル420bのエントリE11によれば、物理ポート番号9の優先ポート情報の値はNOTである(ステップS608:NOT)。このため、ヘルスチェック送信制御部430bは、選択ポート+1の物理ポート番号、すなわち、物理ポート番号10を再選択する(ステップS316)。
ヘルスチェック送信制御部430bは、再選択した物理ポート番号10についての優先ポート判定を行う(ステップS608)。ヘルスチェック送受信管理テーブル420bのエントリE12によれば、物理ポート番号10の優先ポート情報の値はNOTである(ステップS608:NOT)。このため、ヘルスチェック送信制御部430bは、選択ポート+1の物理ポート番号、すなわち、物理ポート番号11を再選択する(ステップS316)。ヘルスチェック送信制御部430bは、再選択した物理ポート番号11についての優先ポート判定を行う(ステップS608)。ヘルスチェック送受信管理テーブル420bのエントリE13によれば、物理ポート番号11の優先ポート情報の値はsecondaryである(ステップS608:NOTでない)。このため、ヘルスチェック送信制御部430bは、ステップS318、S320の処理を継続する。この結果、ヘルスチェックフレームHCF3は、ステップS316によって再選択された物理ポート番号を有するポート11から、物理回線LNA3を用いて送信される。
図34の時刻t4において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB3が送信される様子について説明する。
スイッチ#2が他のトランジットノードから受信したヘルスチェックフレームHCB3を受信したヘルスチェック送信制御部430bpは、ヘルスチェックフレーム送信処理(図29)を行う。ヘルスチェック送信制御部430bpは、ステップS302、S304の処理を経て、送信フラグ判定を行う(ステップS306)。スイッチ#2の時刻t4におけるヘルスチェック送受信管理テーブル420bpのエントリE21〜E24によれば、リングID10、LAID1の送信フラグの値にonのあるエントリE23が存在するため(ステップS306:onあり)、ヘルスチェック送信制御部430bpは、送信フラグonの物理ポート+1の物理ポート番号、すなわち、物理ポート番号12pを選択する(ステップS326)。その後、ヘルスチェック送信制御部430bpは、選択した物理ポート番号12pについての優先ポート判定を行う(ステップS608)。ヘルスチェック送受信管理テーブル420bpのエントリE24によれば、物理ポート番号12pの優先ポート情報の値はprimaryである(ステップS608:NOTでない)。このため、ヘルスチェック送信制御部430bpは、ステップS318、S320の処理を継続する。この結果、ヘルスチェックフレームHCB3は、ステップS326によって選択された物理ポート番号を有するポート12pから、物理回線LNA4を用いて送信される。
(D−6−5)時刻t5(障害発生後2):
図35は、第3実施例のネットワーク1000の障害発生後において、ヘルスチェックフレームの送受信が継続される様子を示す説明図である。
図35の時刻t5において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF4が送信される処理の手順は、第3実施例の時刻t4(図34)と同様である。従って、ヘルスチェックフレームHCF4は、優先ポート情報の値がNOTでないsecondaryポート、すなわち、物理ポート番号11のポートから物理回線LNA3を用いて、スイッチ#2へ送信される。
図35の時刻t5において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB4が送信される処理の手順は、第3実施例の時刻t4(図34)と同様である。従って、ヘルスチェックフレームHCB4は、優先ポート情報の値がNOTでないprimaryポート、すなわち、物理ポート番号9pのポートから物理回線LNA1を用いて、スイッチ#1へ送信される。
以上のように、ヘルスチェック送受信管理テーブル420bの優先ポート情報には、予め、プライマリポートとして用いる仮想回線については、通信可能な物理回線に接続されているポートの奇数番目に対して「primary」の値が、偶数番目に対して「NOT」の値が、それぞれ格納されている。これとは逆に、セカンダリポートとして用いる仮想回線については、通信可能な物理回線に接続されているポートの偶数番目に対して「secondary」の値が、奇数番目に対して「NOT」の値が、それぞれ格納されている。また、物理回線に障害が発生した後においても、ヘルスチェックフレーム制御部400bは、物理ポート状態変更処理(図30)によって、上記ルールに基づいて、ヘルスチェック送受信管理テーブル420bの内容を更新し、優先ポート情報の値を付与し直す。
従って、障害発生前・後を問わず、通信可能な物理回線のうち、奇数番目の回線はプライマリポートのヘルスチェックフレーム送信に用いられ、偶数番目の回線はセカンダリポートのヘルスチェックフレーム送信に用いられる。換言すれば、第3実施例では、仮想回線を構成する物理回線の一部の物理回線に接続されたポートを用いて、プライマリポートのヘルスチェックフレーム送信を行い、仮想回線を構成する物理回線の他の物理回線に接続されたポートを用いて、セカンダリポートのヘルスチェックフレーム送信を行う。
以上のように、第3実施例では、ヘルスチェックフレーム制御部400bのヘルスチェック送信制御部430b(状態確認フレーム制御部)は、プライマリポート(第1の方向)にヘルスチェックフレーム(状態確認フレーム)を送信したポートと、セカンダリポート(第2の方向)に送信され、リングネットワークを循環したヘルスチェックフレームを他のスイッチから受信したポートと、が同一とならないように、ヘルスチェックフレームを送信することができる。
従って、第3実施例においても、第1実施例と同様、仮想回線を用いて物理回線を冗長化しつつ、ネットワークの状態を確認するための制御フレーム(ヘルスチェックフレーム)を交換するネットワーク中継装置(スイッチ10b)において、仮想回線の障害の誤検出を低減することができる。
さらに、上記第3実施例では、ヘルスチェックフレーム制御部400b(状態確認フレーム制御部)は、仮想回線を構成する物理回線に障害が発生した場合は、プライマリポートのヘルスチェックフレーム送信のための回線(一部の物理回線)と、セカンダリポートのヘルスチェックフレーム送信のための回線(他の物理回線)と、を再選択することができる。このため、障害発生後においても、仮想回線の障害の誤検出を低減することができる。
E.第4実施例:
本発明の第4実施例では、ヘルスチェックフレーム送信処理において、ヘルスチェックフレームの送受信ポートが同一となる状態を回避するための規則(第1の規則、第2の規則)が異なる構成について説明する。なお、図中において第1実施例と同様の構成部分については先に説明した第1実施例と同様の符号を付し、その詳細な説明を省略する。
(E−1)システム構成:
図36は、第4実施例としてのスイッチ10cの概略構成を示す説明図である。図6に示した第1実施例との違いは、ヘルスチェック受信制御部410に代えてヘルスチェック受信制御部410cを、ヘルスチェック送信制御部430に代えてヘルスチェック送信制御部430cを、それぞれ備える点のみであり、他の構成や動作は第1実施例と同様である。
ヘルスチェック受信制御部410cは、フレームを受信した際に実行するヘルスチェックフレーム受信処理の内容が、図11に示した第1実施例と異なる。また、ヘルスチェック送信制御部430cは、フレームを受信した際に実行するヘルスチェックフレーム送信処理の内容が、図12に示した第1実施例と異なる。
(E−2)フレーム受信処理:
フレーム受信処理の手順は、図10に示した第1実施例と同様である。
(E−3)ヘルスチェックフレーム受信処理:
図37は、第4実施例におけるヘルスチェックフレーム受信処理の手順を示すフローチャートである。図11に示した第1実施例との違いは、ステップS204を備えない点のみであり、他の動作は第1実施例と同様である。すなわち、第4実施例のヘルスチェック受信制御部410cは、ヘルスチェックフレームを受信した受信ポートについては、送信フラグの値(ヘルスチェックフレームの送信に用いたポートであるか否か)に関わらず、受信フラグをonに設定する点が異なる。
(E−4)ヘルスチェックフレーム送信処理:
図38は、第4実施例におけるヘルスチェックフレーム送信処理の手順を示すフローチャートである。図12に示した第1実施例との違いは、ステップS314の後にステップS802、S804を備える点と、ステップS324とS328に代えてステップS806〜S810を備える点のみであり、他の動作は第1実施例と同様である。
ステップS314の物理ポート状態判定において、物理ポート状態の値が、通信不可能であることを示す「Down」である場合(ステップS314:Down)、ヘルスチェック送信制御部430cは、優先ポート判定を行う(ステップS802)。具体的には、ヘルスチェック送信制御部430cは、選択された物理ポート番号をキーとしてヘルスチェック送受信管理テーブル420を検索し、一致するエントリの優先ポート情報の値を参照する。優先ポート情報の値が「primary」である場合(ステップS802:primary)、ヘルスチェック送信制御部430cは、処理をステップS316へ遷移させ、選択ポート+1の物理ポート番号を再選択する。詳細は図12で説明した通りである。一方、優先ポート情報の値が「secondary」である場合(ステップS802:secondary)、ヘルスチェック送信制御部430cは、選択ポート−1の物理ポート番号を再選択する(ステップS804)。具体的には、ヘルスチェック送信制御部430cは、LAIDから特定されたエントリ(ステップS306の検索結果)を物理ポート番号で昇順にソートし、選択中の物理ポート番号の1つ前の番号となる物理ポート番号を再選択し、処理をステップS314へ遷移させる。
ステップS322の優先ポート判定において、優先ポート情報の値が「secondary」である場合(ステップS322:secondary)、ヘルスチェック送信制御部430cは、受信フラグ判定を行う(ステップS806)。具体的には、ヘルスチェック送信制御部430cは、LAIDから特定されたエントリ(ステップS306の検索結果)のうち、受信フラグの値が「on」であるエントリがあるか否かを判定する。受信フラグの値が「on」であるエントリがない場合(ステップS806:ALL off)、ヘルスチェック送信制御部430cは、送信フラグonの物理ポート-1の物理ポート番号を選択する(ステップS808)。具体的には、ヘルスチェック送信制御部430cは、LAIDから特定されたエントリ(ステップS306の検索結果)を物理ポート番号で昇順にソートし、送信フラグの値が「on」であるエントリの物理ポート番号の1つ前の番号となる物理ポート番号を選択する。受信フラグの値が「on」であるエントリがある場合(ステップS806:onあり)、ヘルスチェック送信制御部430cは、受信フラグonの物理ポート番号を選択する(ステップS810)。その後、ヘルスチェック送信制御部430cは、選択した物理ポートによるフレーム送信のために、処理をステップS314へ遷移させる。
(E−5)物理ポート状態変更処理:
物理ポート状態変更処理の手順は、図13に示した第1実施例と同様である。
(E−6)動作:
第4実施例におけるスイッチ10cが用いられたネットワーク1000において、ヘルスチェックフレームの送受信が行われる様子を説明する。なお、説明に用いる図の構成等は、原則的に第1実施例と同様であり、以下では、第1実施例と異なる部分について説明する。
(E−6−1)時刻t1(障害発生前1):
図39は、第4実施例のネットワーク1000においてヘルスチェックフレームの送受信が開始される様子を示す説明図である。
図39の時刻t1において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF1が送信される処理の手順は、第1実施例の時刻t1(図14)と同様である。従って、ヘルスチェックフレームHCF1は、物理ポート番号10のポートから物理回線LNA2を用いて、スイッチ#2へ送信される。
図39の時刻t1において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB1が送信される処理の手順は、第1実施例の時刻t1(図14)と同様である。従って、ヘルスチェックフレームHCB1は、物理ポート番号9pのポートから物理回線LNA1を用いて、スイッチ#1へ送信される。
さらに、スイッチ#1および#2において実行されるヘルスチェックフレーム受信後の処理について説明する。
スイッチ#1は、時刻t1においてスイッチ#2から送信されたヘルスチェックフレームHCB1を物理回線制御部500により受信する。ヘルスチェックフレームHCB1は、物理回線制御部500、フレーム識別部320を経由して、ヘルスチェック受信制御部410cへ送信される(図10、ステップS104)。ヘルスチェックフレームHCB1を受信したヘルスチェック受信制御部410cは、ヘルスチェックフレーム受信処理(図37)を実行する。具体的には、ヘルスチェック受信制御部410cは、受信フレームのヘッダ情報をもとにして、ヘルスチェックフレームHCB1の受信ポート(物理ポート番号9)を特定する(ステップS202)。そして、ヘルスチェック受信制御部410cは、受信ポートである物理ポート番号9のエントリE11の受信フラグの値を「offからon」へと更新し(ステップS206)、受信フレームをフレーム中継部300へ転送する(ステップS208)。
また、スイッチ#1から送信されたヘルスチェックフレームHCF1を受信したスイッチ#2についても、スイッチ#1と同様に、フレーム受信処理(図10)と、ヘルスチェックフレーム受信処理(図37)とが行われる。
この結果、スイッチ10cのヘルスチェック送受信管理テーブル420の受信フラグには、それぞれ、対向装置からヘルスチェックフレームを受信したポートに「on」が格納される。
(E−6−2)時刻t2(障害発生前2):
図40は、第4実施例のネットワーク1000において2回目のヘルスチェックフレームの送受信が行われる様子を示す説明図である。
図40の時刻t2において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF2が送信される様子について説明する。
スイッチ#1のリング管理部100により生成されたヘルスチェックフレームHCF2を受信したヘルスチェック送信制御部430cは、ヘルスチェックフレーム送信処理(図38)を行う。ヘルスチェック送信制御部430cは、ステップS302〜S322の処理を経て、受信フラグ判定を行う(ステップS806)。スイッチ#1の時刻t2におけるヘルスチェック送受信管理テーブル420のエントリE11〜E14によれば、リングID10、LAID1の受信フラグの値にonのあるエントリE11が存在するため(ステップS806:onあり)、ヘルスチェック送信制御部430cは、受信フラグonの物理ポート番号、すなわち、物理ポート番号9を選択する(ステップS810)。ヘルスチェック送受信管理テーブル420のエントリE11より、選択した物理ポート9の物理ポート状態は「Up」であるため(ステップS314:Up)、ヘルスチェック送信制御部430cは、ステップS318、S320の処理を継続する。従って、ヘルスチェックフレームHCF2は、物理ポート番号9のポートから物理回線LNA1を用いて、スイッチ#2へ送信される。
図40の時刻t2において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB2が送信される処理の手順は、第1実施例の時刻t2(図15)と同様である。従って、ヘルスチェックフレームHCB2は、物理ポート番号10pのポートから物理回線LNA2を用いて、スイッチ#1へ送信される。
(E−6−3)時刻t3(障害発生時):
図41は、第4実施例のネットワーク1000において障害が発生した際の様子を示す説明図である。図41に示すように、ある時刻t3において、仮想回線LNAを構成する一部の物理回線(ここでは、物理回線LNA2とする)に障害が発生した場合の処理の手順は、第1実施例の時刻t3(図16)と同様である。従って、スイッチ#1のヘルスチェック送受信管理テーブル420のうち、障害が発生した物理ポートに該当するエントリE12の、物理ポート状態の値は「UpからDown」へ更新される(図13、ステップS408)。同様に、スイッチ#2のヘルスチェック送受信管理テーブル420pのうち、障害が発生した物理ポートに該当するエントリE22の物理ポート状態の値は「UpからDown」へ更新される(図13、ステップS408)。
(E−6−4)時刻t4(障害発生後1):
図42は、第4実施例のネットワーク1000の障害発生後において、ヘルスチェックフレームの送受信が開始される様子を示す説明図である。
図42の時刻t4において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF3が送信される様子について説明する。
スイッチ#1のリング管理部100により生成されたヘルスチェックフレームHCF3を受信したヘルスチェック送信制御部430cは、ヘルスチェックフレーム送信処理(図38)を行う。ヘルスチェック送信制御部430cは、ステップS302〜S322の処理を経て、受信フラグ判定を行う(ステップS806)。スイッチ#1の時刻t4におけるヘルスチェック送受信管理テーブル420のエントリE11〜E14によれば、リングID10、LAID1の受信フラグの値にonのあるエントリE12が存在するため(ステップS806:onあり)、ヘルスチェック送信制御部430cは、受信フラグonの物理ポート番号、すなわち、物理ポート番号10を選択する(ステップS810)。ヘルスチェック送受信管理テーブル420のエントリE12より、選択した物理ポート10の物理ポート状態は「Down」であるため(ステップS314:Down)、ヘルスチェック送信制御部430cは、優先ポート判定を行う(ステップS802)。ヘルスチェック送受信管理テーブル420のエントリE12より、選択した物理ポート10の優先ポート情報の値は「secondary」であるため、ヘルスチェック送信制御部430cは、選択ポート-1の物理ポート番号、すなわち、物理ポート番号9を選択する(ステップS804)。ヘルスチェック送受信管理テーブル420のエントリE11より、選択した物理ポート9の物理ポート状態は「Up」であるため(ステップS314:Up)、ヘルスチェック送信制御部430cは、ステップS318、S320の処理を継続する。従って、ヘルスチェックフレームHCF3は、物理ポート番号9のポートから物理回線LNA1を用いて、スイッチ#2へ送信される。
図42の時刻t4において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB3が送信される処理の手順は、第1実施例の時刻t2(図15)と同様である。従って、ヘルスチェックフレームHCB3は、物理ポート番号11pのポートから物理回線LNA3を用いて、スイッチ#1へ送信される。
(E−6−5)時刻t5(障害発生後2):
図43は、第4実施例のネットワーク1000の障害発生後において、ヘルスチェックフレームの送受信が継続される様子を示す説明図である。
図43の時刻t5において、スイッチ#1のセカンダリポートから、スイッチ#2に対して、リングID10のヘルスチェックフレームHCF4が送信される処理の手順は、第4実施例の時刻t2(図40)と同様である。従って、ヘルスチェックフレームHCF4は、物理ポート番号11のポートから物理回線LNA3を用いて、スイッチ#2へ送信される。
図43の時刻t5において、スイッチ#2のプライマリポートから、スイッチ#1に対して、リングID10のヘルスチェックフレームHCB4が送信される処理の手順は、第1実施例の時刻t2(図15)と同様である。従って、ヘルスチェックフレームHCB4は、物理ポート番号12pのポートから物理回線LNA4を用いて、スイッチ#1へ送信される。
以上のように、ヘルスチェックフレーム受信処理(図37)において、スイッチ10cのヘルスチェック受信制御部410cは、ヘルスチェックフレームを受信した受信ポートについては、送信フラグの値に関わらず、受信フラグの値を必ずonに設定する。さらに、ヘルスチェックフレーム送信処理(図38)において、ヘルスチェック送信制御部430cは、プライマリポート(第1の方向)に接続されたポートからのヘルスチェックフレーム送信の場合(ステップS322:primary)、送信フラグonの物理ポート+1の番号を有するポート(すなわち、前回ヘルスチェックフレームを送信したポートとは異なるポート)を選択して、ヘルスチェックフレームの送信を行う。第4実施例においては、これを「第1の規則」とも呼ぶ。また、ヘルスチェックフレーム送信処理(図38)において、スイッチ10cのヘルスチェック送信制御部430cは、セカンダリポート(第2の方向)に接続されたポートからのヘルスチェックフレーム送信の場合(ステップS322:secondary)であって、他のスイッチからヘルスチェックフレームを受信している場合(ステップS806:onあり)は、受信フラグonのポート(すなわち、前回、他のスイッチからヘルスチェックフレームを受信したポート)を選択して、ヘルスチェックフレームの送信を行う。第4実施例においては、これを「第2の規則」とも呼ぶ。
以上のように、第4実施例では、ヘルスチェックフレーム制御部400のヘルスチェック送信制御部430c(状態確認フレーム制御部)は、プライマリポート(第1の方向に接続されたポート)から、前回、ヘルスチェックフレーム(状態確認フレーム)を送信したポートとは異なるポートを選択して次のヘルスチェックフレームを送信し、セカンダリポート(第2の方向に接続されたポート)から、前回、他のスイッチからヘルスチェックフレームを受信したポートを選択して次のヘルスチェックフレームを送信するため、ヘルスチェックフレームの送受信ポートが同一となる状態が連続しないように、ヘルスチェックフレームを送信するポートを変えることができる。
従って、第4実施例においても、第1実施例と同様、仮想回線を用いて物理回線を冗長化しつつ、ネットワークの状態を確認するための制御フレーム(ヘルスチェックフレーム)を交換するネットワーク中継装置(スイッチ10c)において、仮想回線の障害の誤検出を低減することができる。
F.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
F1.変形例1:
上記実施例では、ネットワーク中継装置が用いられたネットワーク構成の一例を示した。しかし、ネットワーク構成は、上述した態様に限らず、本発明の要旨を逸脱しない範囲において任意に定めることができる。例えば、図1に示さない端末、管理装置、他のネットワーク中継装置等を含む構成としてもよいし、図1に示した装置の一部を省略してもよい。
例えば、本発明のネットワーク中継装置は、リングネットワークに限らず種々のネットワークにおいて利用可能である。具体的には、例えば、STP(Spanning Tree Protocol)、MSTP(Multiple Spanning Tree Protocol)、PVSTP(Per virtual LAN Spanning Tree Protocol)、GSRP(Gigabit Switch Redundancy Protocol)等のプロトコルを用いるネットワークにおいても利用することができる。
例えば、本発明のネットワーク中継装置は、リングネットワークに限らず種々のネットワークにおいて利用可能である。図44は、変形例としてのネットワーク中継装置が用いられたネットワークの概略構成を示す説明図である。本発明のネットワーク中継装置は、例えば図44のように、複数台のスイッチ10dが、仮想回線を用いて直列的に接続されたネットワーク1000dにおいても利用することができる。図44の例では、例えば、スイッチ#1がヘルスチェック管理部100dを備えることによって、マスタノードとして機能する。
例えば、本発明のネットワーク中継装置は、リングネットワークを構成する全ての回線が仮想回線である必要はなく、一部の回線は通常の物理回線であってもよい。
F2.変形例2:
上記実施例では、ネットワーク中継装置の構成の一例を示した。しかし、ネットワーク中継装置の構成は、上述した態様に限らず、本発明の要旨を逸脱しない範囲において任意に定めることができる。例えば、図6に示さない他の処理部を含む構成としてもよいし、図6に示した処理部の一部を省略してもよい。
例えば、リング管理部とLAリングマッピングテーブルは、CPUおよびメモリにより構成され、LA制御部とフレーム中継部とフレーム識別部とヘルスチェックフレーム制御部は、ASICにより構成されているものとした。しかし、これら各処理部の具体的なハードウェア構成はあくまで一例であり、種々の変形が可能である。具体的には、例えば、リング管理部とLAリングマッピングテーブルについても、ASICにより構成することも可能である。
F3.変形例3:
上記実施例では、LAリングマッピングテーブル、LA管理テーブル、ヘルスチェック送受信管理テーブルが備えるフィールドについて例示した。しかし、これらのテーブルが備えるフィールドは、その発明の要旨を逸脱しない範囲において任意に変更することができる。例えば、上記に例示したフィールド以外のフィールドを備えるものとしても良い。また、各テーブルには、ダイレクトマップ方式を用いることも可能である。
F4.変形例4:
上記実施例では、ヘルスチェックフレーム送信処理の手順について例示した。しかし、ヘルスチェックフレーム送信処理の手順は、その発明の要旨を逸脱しない範囲において任意に変更することができる。
例えば、第1実施例のヘルスチェックフレーム送信処理(図12)において、ステップS310、S312では、初回のヘルスチェックフレーム送信時のポートの選択方法について例示した。しかし、これはあくまで例示であり、種々の変更が可能である。さらに、ステップS326では、2回目以降のプライマリポートのヘルスチェックフレーム送信時のポート選択方法について例示した。しかし、これはあくまで例示であり、前回のヘルスチェックフレームの送信ポートとは異なるポートを選択する限りにおいて、種々の変更が可能である。
例えば、第2実施例のヘルスチェックフレーム送信処理(図20)において、ステップS310、S502では、初回のヘルスチェックフレーム送信時のポート選択方法について例示した。しかし、これはあくまで例示であり、種々の変更が可能である。
例えば、第3実施例のヘルスチェックフレーム送信処理(図29)において、ステップS604、S606では、初回のヘルスチェックフレーム送信時のポート選択方法について例示した。しかし、これはあくまで例示であり、種々の変更が可能である。
例えば、第4実施例のヘルスチェックフレーム送信処理(図38)において、ステップS310、S312では、初回のヘルスチェックフレーム送信時のポートの選択方法について例示した。しかし、これはあくまで例示であり、種々の変更が可能である。さらに、ステップS326では、2回目以降のプライマリポートのヘルスチェックフレーム送信時のポート選択方法について例示した。しかし、これはあくまで例示であり、前回のヘルスチェックフレームの送信ポートとは異なるポートを選択する限りにおいて、種々の変更が可能である。
F5.変形例5:
上記第3実施例では、ヘルスチェック送受信管理テーブルの構成と、物理ポート状態変更処理とを通じて、通信可能な物理回線のうち、奇数番目の回線はプライマリポートのヘルスチェックフレーム送信に用いられ、偶数番目の回線はセカンダリポートのヘルスチェックフレーム送信に用いられる構成であるとした。しかし、これはあくまで一例であり、種々の変更が可能である。
例えば、奇数と偶数を逆にして、偶数番目の回線はプライマリポートのヘルスチェックフレーム送信に、奇数番目の回線はセカンダリポートのヘルスチェックフレーム送信に、それぞれ用いられる構成としてもよい。
例えば、特定の物理ポート番号よりも大きい番号を有するポートに接続された物理回線は、プライマリポートのヘルスチェックフレーム送信に、特定の物理ポート番号よりも小さい番号を有するポートに接続された物理回線は、セカンダリポートのヘルスチェックフレーム送信に、それぞれ用いられる構成としてもよい。