(57)【要約】【課題】スイッチ間の接続や、スイッチ自体に障害が発生した場合に、スイッチは、障害箇所を回避するフレーム送信経路に切り替え、データ送受信の経路を、往復で同一の経路とする。【解決手段】スイッチ１ｄの障害箇所回避制御機構１３４は、接続する対向のスイッチに対して、所定時間毎に検知フレーム１４の送信及び受信を実施し、所定時間以上の検知フレーム１４の未受信、またはポートのリンクダウンによって障害を検知した契機にて、所定ポートを介して障害通知フレーム１６を送信し、スイッチ１ｂ及び１ｃは、障害通知フレーム１６を受信した契機にて、所定時間内で、障害通知フレーム１６を受信したポート数をカウントし、当該ポート数が、しきい値よりも小さい場合、障害通知フレーム１６を受信したポートを、フレームを送信するポートから除外する。【選択図】図８
2012253530.tif 000002
【特許請求の範囲】
【請求項１】
複数の上段スイッチと複数の下段スイッチとが、多対多に接続されるネットワークシステムにおける、フレーム配送経路の選択方法であって、
前記上段スイッチ及び前記下段スイッチの各々は、障害発生監視用の検知フレームを、繰り返し、自スイッチに接続されている接続相手スイッチに対して送信し、
前記接続相手スイッチである前記上段スイッチ及び前記下段スイッチは、前記検知フレームを、あるポートにて所定の時間を経過しても受信しない場合、もしくは、あるポートがリンクダウン状態であると検知した場合、前記ポートを障害発生ポートと同定し、
前記上段スイッチ及び前記下段スイッチは、前記障害発生ポートから、障害発生を通知する障害フレームを送信し、
前記上段スイッチ及び前記下段スイッチは、前記障害フレームを受信した場合、前記障害フレームを受信したポートを、障害発生ポートと同定し、
前記上段スイッチは、障害発生ポートの存在を認識した場合、前記障害発生ポート以外のポートから、下段スイッチに対して、障害発生を通知する障害通知フレームを送信し、
前記下段スイッチは、前記障害発生ポートを、フレームを送信するポートから除外し、
前記下段スイッチは、前記障害通知フレームを受信した場合、前記障害通知フレームの受信から一定時間内に、前記障害通知フレームを受信したポート数をカウントし、
前記下段スイッチは、前記障害通知フレームを受信した前記ポート数と、あらかじめ設定したしきい値と、を比較し、
前記下段スイッチは、前記障害通知フレームを受信した前記ポート数が、前記しきい値よりも小さい場合、前記障害通知フレームを受信したポートを、前記フレームを送信するポートから除外する 
ことを特徴とするフレーム配送経路の選択方法。
【請求項２】
請求項１に記載のフレーム配送経路の選択方法において、
前記しきい値は、各々の前記スイッチが備える設定ファイルにより、値を変更可能である
ことを特徴とするフレーム配送経路の選択方法。
【請求項３】
請求項１または２に記載のフレーム配送経路の選択方法において、
前記上段スイッチ及び前記下段スイッチが判断する、前記検知フレームを受信しない前記所定の時間とは、リンク速度または、前記検知フレームを対向のスイッチと送信する間隔に依存する
ことを特徴とするフレーム配送経路の選択方法。
【請求項４】
請求項１から３のいずれか一に記載のフレーム配送経路の選択方法において、
前記ネットワークシステムは、管理サーバを備え、
前記上段スイッチ及び前記下段スイッチは、前記障害発生ポートの検知を契機に、または、前記障害フレームの受信を契機に、または、前記障害通知フレームの受信を契機に、前記管理サーバへ、当該スイッチの状態を通知する
ことを特徴とするフレーム配送経路の選択方法。
【請求項５】
請求項１から４のいずれか一に記載のフレーム配送経路の選択方法において、
前記下段スイッチが、請求項１に記載の方法により、いずれかの前記ポートを、前記フレームを送信するポートから除外した後に、
前記上段スイッチ及び前記下段スイッチは、除外した前記障害発生ポートにて、前記検知フレームを受信した場合、もしくは、除外した前記障害発生ポートがリンクアップ状態である場合、除外した前記障害発生ポートを復旧ポートと同定し、
前記上段スイッチ及び前記下段スイッチは、前記接続相手スイッチに前記障害発生ポートの復旧を通知し、
前記下段スイッチは、前記復旧ポートと前記復旧を通知されたポートとを、前記フレームを送信するポートに追加する
ことを特徴とするフレーム配送経路の選択方法。
【請求項６】
請求項５に記載のフレーム配送経路の選択方法において、
前記障害発生ポートの復旧を通知する処理として、
前記上段スイッチは、前記復旧ポートから送信していた前記障害フレームと、前記復旧ポート以外のポートから送信していた障害通知フレームと、の送信を停止するか、または、復旧フレームを送信し、
前記下段スイッチは、前記復旧ポートから送信していた前記障害フレームの送信を停止する
ことを特徴とするフレーム配送経路の選択方法。
【請求項７】
請求項５または６に記載のフレーム配送経路の選択方法において、
前記上段スイッチ及び前記下段スイッチは、前記復旧ポートの検知を契機に、または、前記障害発生ポートの復旧を通知されたことを契機に、前記管理サーバへ、当該スイッチの状態を通知する
ことを特徴とするフレーム配送経路の選択方法。
【請求項８】
請求項６に記載のフレーム配送経路の選択方法において、
前記下段スイッチは、前記復旧フレームの受信を契機に、前記管理サーバへ、当該スイッチの状態を通知する
ことを特徴とするフレーム配送経路の選択方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される主題は、ネットワークシステムにおいて、スイッチやルータなどのデータ配送装置、またはそれらの接続に障害が発生した場合の、経路の選択に関する。
【背景技術】
【０００２】
従来、ネットワークのトポロジのひとつとして、Ｆａｔ  Ｔｒｅｅと呼ばれる構成が知られている。このＦａｔ  Ｔｒｅｅ構成では、マルチパスと呼ばれる技術を適用することができる。このマルチパスによれば、例えばデータを送信する際に複数の経路（パス）を同時に利用することができ、これによりネットワーク内の負荷を分散させることができる。
【０００３】
さらに、このマルチパスの技術と、複数のパスのうちの最短経路を計算して選択する技術とを組み合わせて、複数の最短経路を同時に利用する技術が知られている。
【０００４】
ところで、マルチパスにおいて、データの送信経路が複数存在する場合、複数の利用可能なパスの中から、往復で同一の経路を通るように、実際に利用するパスを適切に決定する必要がある。
【０００５】
図１は、特許文献１に記載されているような、２段のＦａｔ  Ｔｒｅｅ構成を適用したネットワークシステムの構成例を示した図である。
【０００６】
例えば、図１に示すように、エンドノード２Ａからエンドノード２Ｃへ、下段スイッチ１ａ、１ｂ、１ｃ及び上段スイッチ１ｄ、１ｅ、１ｆを含んで構成されるネットワークシステムを介した往復通信経路において、往路（図１に示す実線矢印）は上段スイッチ１ｅが選択され、復路（図１に示す点線矢印）は上段スイッチ１ｆが選択された場合、上段スイッチ１ｅ及び上段スイッチ１ｆにおいて、データ送信の都度、フラッディングが発生し、ネットワークパフォーマンスが低下する可能性がある。
【０００７】
フラッディングとは、スイッチがデータを受信し、当該スイッチにおいて当該データの宛先が未登録である場合、当該スイッチは、当該データを、複数のポートから、送信する現象のことを言う。
【０００８】
この課題に対して、例えば、特許文献１は、Ｆａｔ  Ｔｒｅｅ構成において、同一階層のスイッチは同一のハッシュ関数を備え、下段のスイッチから上段のスイッチへのデータの送信経路を、宛先のＭＡＣアドレス（Ｄｅｓｔｉｎａｔｉｏｎ  ＭＡＣ  Ａｄｄｒｅｓｓ：ＤＡ）を元にハッシュ計算を行い決定する技術を開示する。
【０００９】
その際、送信元のＭＡＣアドレス（Ｓｏｕｒｃｅ  ＭＡＣ  ａｄｄｒｅｓｓ：ＳＡ）を元にハッシュ計算を実施し、学習用のデータを生成し、前記送信元ＭＡＣアドレスから算出した計算結果が示す上段スイッチに対して送信する。
【００１０】
上段スイッチは、これにより、データの送信元アドレスの学習を行う。すなわち、下段スイッチは、自スイッチにデータを送信してくる上段スイッチを、ハッシュ関数によってひとつに絞り込むことができる。
【００１１】
特許文献２に記載の技術によれば、下段スイッチから上段スイッチへのデータの送信経路を、あらかじめ通常利用する運用ポートと、障害が発生した際に利用する予備ポートとに分けておいて、下段スイッチと上段スイッチとを接続するリンクで障害が発生した場合、運用ポートから予備ポートへと、データの送信経路を切り替える。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】米国特許出願公開第２０１０／０３１６０５３号明細書（段落００３４〜００３６）
【特許文献２】特開２００７−２７９５４号（段落００３１、００３３）
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献１に記載の技術では、例えば下段スイッチと上段スイッチとを接続する経路のひとつにおいて障害が発生した場合に関して言及していない。仮に、障害が発生した際、障害箇所と接続する下段スイッチにおいて、データを送信する経路を決定するため、ハッシュ計算を新たに実施した場合、前記障害箇所と接続する下段スイッチと、障害箇所と接続していない下段スイッチとで、経路選択の計算結果が異なってしまう。従って、下段スイッチは、自スイッチにデータを送信してくる上段スイッチを特定することができなくなり、往復の経路でデータがロスする可能性や、フラッディングが多発し、ネットワークパフォーマンスが低下する可能性がある。
【００１４】
特許文献２に記載の技術では、構成が限定されており、宛先エンドノードへの接続は、リピーターでなければならない。さらに、この構成はマルチパスではないため、ネットワークのリソースを無駄にしている。
【課題を解決するための手段】
【００１５】
本明細書では、例えば、１対多に接続されたスイッチなどの装置間にＬＡＧ（Ｌｉｎｋ  Ａｇｒｅｅｇａｔｉｏｎ）を構成し、データの送信負荷を分散するような、マルチパスを利用したネットワーク環境において、障害が発生した場合においてもフラッディングが多発することを防ぎ、ネットワークの利用効率を向上させる、ネットワークスイッチにおけるデータ配送経路の選択方法、および、その方法を適用したシステムが開示される。
【００１６】
本明細書で、開示されるのは、例えば、複数の上段スイッチと複数の下段スイッチとが、多対多に接続されるネットワークシステムにおける、フレーム配送経路の選択方法であって、
当該フレーム配送経路の選択方法は、
上段スイッチ及び下段スイッチの各々は、障害発生監視用の検知フレームを、繰り返し、自スイッチに接続されている接続相手スイッチに対して送信し、
接続相手スイッチである上段スイッチ及び下段スイッチは、検知フレームを、あるポートにて所定の時間を経過しても受信しない場合、もしくは、あるポートがリンクダウン状態であると検知した場合、ポートを障害発生ポートと同定し、
上段スイッチ及び下段スイッチは、障害発生ポートから、障害発生を通知する障害フレームを送信し、
上段スイッチ及び下段スイッチは、障害フレームを受信した場合、障害フレームを受信したポートを、障害発生ポートと同定し、
上段スイッチは、障害発生ポートの存在を認識した場合、障害発生ポート以外のポートから、下段スイッチに対して、障害発生を通知する障害通知フレームを送信し、
下段スイッチは、障害発生ポートを、フレームを送信するポートから除外し、
下段スイッチは、障害通知フレームを受信した場合、障害通知フレームの受信から一定時間内に、障害通知フレームを受信したポート数をカウントし、
下段スイッチは、障害通知フレームを受信したポート数と、あらかじめ設定したしきい値と、を比較し、
下段スイッチは、障害通知フレームを受信したポート数が、しきい値よりも小さい場合、障害通知フレームを受信したポートを、フレームを送信するポートから除外することを特徴とするものである。
【００１７】
なお、上記フレーム配送経路の選択方法におけるしきい値は、各々のスイッチが備える設定ファイルにより、値を変更可能であってもよい。
【００１８】
また、上段スイッチ及び下段スイッチが判断する、検知フレームを受信しない所定の時間とは、リンク速度または、検知フレームを対向のスイッチと送信する間隔に依存するものであってもよい。
【００１９】
また、ネットワークシステムは、さらに、管理サーバを備え、上段スイッチ及び下段スイッチは、障害発生ポートの検知を契機に、または、障害フレームの受信を契機に、または、障害通知フレームの受信を契機に、管理サーバへ、当該スイッチの状態を通知するように、構成しても良い。
【００２０】
また、下段スイッチが、上記方法により、いずれかのポートを、フレームを送信するポートから除外した後に、上段スイッチ及び下段スイッチは、除外した障害発生ポートにて、検知フレームを受信した場合、もしくは、除外した障害発生ポートがリンクアップ状態である場合、除外した障害発生ポートを復旧ポートと同定し、上段スイッチ及び下段スイッチは、接続相手スイッチに障害発生ポートの復旧を通知し、下段スイッチは、復旧ポートと復旧を通知されたポートとを、フレームを送信するポートに追加するように、構成しても良い。
【００２１】
なお、障害発生ポートの復旧を通知する処理として、上段スイッチは、復旧ポートから送信していた障害フレームと、復旧ポート以外のポートから送信していた障害通知フレームと、の送信を停止するか、または、復旧フレームを送信し、下段スイッチは、復旧ポートから送信していた障害フレームの送信を停止するように、構成しても良い。
【００２２】
また、上段スイッチ及び下段スイッチは、復旧ポートの検知を契機に、または、障害発生ポートの復旧を通知されたことを契機に、管理サーバへ、当該スイッチの状態を通知するように、構成しても良い。
【００２３】
また、下段スイッチは、復旧フレームの受信を契機に、管理サーバへ、当該スイッチの状態を通知するように、構成しても良い。
【００２４】
なお、以下の説明の対象とするのは、ＯＳＩ参照モデルのデータリンク層における通信であるため、リンクを流れるデータを、フレームと記載する。しかしながら、開示内容の適用対象は、データリンク層における通信に限定されるものではなく、他のレイヤ、例えばネットワーク層であってもよい。その場合、フレームはパケットと表記される。
【００２５】
上記態様によれば、マルチパスにより、ネットワークリソースを効率的に活用することができる。また、各スイッチが自律的に障害箇所を判定し、経路を切り替えるので、高速に自動復旧することが可能になる。また、障害が発生した際においても、データ送受信の経路を往復で同一のリンクにすることが可能になるため、フレームのロストを防ぐことができる。また、データ送受信の経路を往復で同一のリンクにすることが可能になることにより、フラッディングの多発を抑え、ネットワークパフォーマンスを向上させ、さらに、トラフィックの混雑による、フレームのロストを防ぐことができる。
【発明の効果】
【００２６】
開示によれば、マルチパスを利用したネットワークシステムにおいて、障害が発生しても、フラッディングの多発を防ぎ、ネットワークの利用効率向上が可能になる。
【図面の簡単な説明】
【００２７】
【図１】開示内容の適用範囲である、ネットワークシステムの構成を例示する図である。
【図２】第１の実施形態１及び第２の実施形態及び第３の実施形態に関するスイッチを示す構成図である。
【図３】第１の実施形態に関するネットワークシステムを示す構成図である。
【図４】第１の実施形態に関するエンドノードのＭＡＣアドレスの対応を示した図である。
【図５】第１の実施形態に関するスイッチが保持する経路テーブルを示した図である。
【図６】第１の実施形態に関するスイッチがフレーム送信経路を制御する処理を示したフローチャートである。
【図７】第１の実施形態に関するスイッチがフレーム送信経路を制御する処理を示したフローチャートである。
【図８】第１の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図９】第１の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図１０】第１の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図１１】第１の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図１２】第１の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図１３】第１の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図１４】第２の実施形態に関するネットワークシステムを示す構成図である。
【図１５】第３の実施形態に関するネットワークシステムと管理サーバ３を示す構成図である。
【発明を実施するための形態】
【００２８】
以下、特にネットワーク障害が発生した場合を想定した、フレーム配送経路の選択方法の実施形態を、図面を用いて詳細に説明する。
【００２９】
図２は、スイッチ１の内部構成を示した図である。本実施例に係るスイッチ１は、ポートＰ１〜Ｐｎ間でフレームの送信を行うスイッチＬＳＩ１１と、スイッチング１全体の動作を制御するＣＰＵ１２と、ＣＰＵ１２が実行するソフトウェアやデータを格納したメモリ１３とを備える。
【００３０】
本実施例で説明するソフトウェアやデータは、あらかじめメモリ１３に格納しておいてもよいし、外部記憶媒体またはネットワーク経由で導入してもよい。また、該当プログラムにより実現される機能を、専用のハードウェアにより実現してもよい。また、スイッチＬＳＩ１１が実行する処理は、メモリに格納されており、プログラム実行により実現されるものであってもよい。
【００３１】
スイッチ１のポートＰｎの数は、スイッチの実装によって異なるもので、数が決まっているものではない。
【００３２】
本実施例が開示するフレームは、例えば、ＩＥＥＥ８０２．３にて規定されたイーサネット（登録商標）規格に準拠したフレームである。ただし、イーサネットに限定されるものではない。
【００３３】
スイッチＬＳＩ１１は、フレームの中に格納されるＤＡやＳＡに基づき基本的なフレームの中継処理を行う。
【００３４】
例えば、スイッチ１が受信したフレームに格納されるＤＡを参照し、そのＤＡがメモリ１３に格納されている経路テーブル１３１に存在すれば、その該当する経路テーブル１３１のポートからフレームを送信し、ＤＡが経路テーブルに存在しなければ、他の全てのポートからフレームを送信する。
【００３５】
ＣＰＵ１２は、メモリ１３に格納されるソフトウェアが実行する等、スイッチ１に関わる全体の処理を実行する。
【００３６】
メモリ１３には、ＯＳ１３０と、経路テーブル１３１と、以下に示す処理部を実現するプログラムと、が格納されている。
【００３７】
ＯＳ１３０は、各処理部の処理対象のデータの管理や各処理部の処理を制御する。
【００３８】
経路テーブル１３１は、宛先のアドレス（例えばＭＡＣアドレスやＩＰアドレス）に基づいた、フレームの送信先ポート情報等が記録される。
【００３９】
アドレス学習部１３２は、受信したフレームに格納されるＳＡが経路テーブル１３１に登録されていない場合、受信したポートに対応するＳＡを登録する。
【００４０】
拡張ＬＡＧポート決定部１３３は、後述する拡張ＬＡＧに設定されたポートの中で、実際にフレームを送信するポートを決定する。
【００４１】
障害箇所回避制御部１３４は、本実施例におけるフレームの配送経路の選択を実施する、次の制御部を備える。
【００４２】
送信部１３５は、前述したスイッチＬＳＩ１１による基本的なフレームの中継以外のフレームの送信を行う。
【００４３】
受信部１３６は、受信したフレームを監視する。
【００４４】
検知部１３７は、障害ポートの検知や、復旧ポートの検知を実施する。
【００４５】
障害箇所回避処理部１３８は、障害経路回避のための処理を実施する。
【００４６】
復旧部１３９は、障害から復旧した場合、復旧に関する処理を実施する。
【００４７】
ＣＰＵ１２は、メモリ１３に格納されたプログラムを実行することにより、上記各処理部を実現する。
【００４８】
以降図３〜図１３を用いて、第一の実施形態を説明する。
【００４９】
図３は、第一の実施形態を表すための構成図である。
【００５０】
本実施形態では、開示するネットワークシステム０を、２段に分けたスイッチ１ａ〜１ｆまでの６台のスイッチで構成する。具体的には、スイッチ１ａとスイッチ１ｂとスイッチ１ｃとを、エンドノード（サーバやストレージ等）の通信を上段スイッチへ送信する下段スイッチ（以下、Ｔｏｐ  ｏｆ  Ｒａｃｋ（ＴｏＲ）スイッチという）とし、スイッチ１ｄとスイッチ１ｅとスイッチ１ｆとを、ＴｏＲスイッチからの通信を中継する上段スイッチ（以下、アグリゲーションスイッチという）とする。ただし、スイッチ間は、それぞれ図示した以外のポートを接続しても良い。たとえば、ＴｏＲスイッチ１ａポートＰ１と、アグリゲーションスイッチ１ｄのポートＰ２とを接続してもよい。
【００５１】
ＴｏＲスイッチ１とアグリゲーションスイッチ１の間は、メッシュ（多対多）接続で構成されている。つまり、一つのアグリゲーションスイッチ１は、基本的に、全てのＴｏＲスイッチ１と接続されていることが前提となる。
【００５２】
そして、アグリゲーションスイッチ１同士またはＴｏＲスイッチ１同士での接続はない。
【００５３】
スイッチの数は、スイッチのポートの数（Ｐｎの数）によって上限がある。アグリゲーションスイッチ１は全てのＴｏＲスイッチ１と接続されているという条件を満たしていれば、ＴｏＲスイッチ１の数は最大Ｐｎの数となる。
【００５４】
そして、全てのＴｏＲスイッチ１間通信は、マルチパスとなる。
【００５５】
ただし、ネットワークシステム０を構成するスイッチは、必ずしも、ＴｏＲスイッチと、アグリゲーションスイッチと呼ばれるスイッチでなくてもよい。ここで記述した、２段のスイッチを含む構成に当てはまれば、開示内容を適用可能なネットワークシステムとみなすことが可能である。
【００５６】
本実施形態では、エンドノード２から、ネットワークシステム０に属す、ＴｏＲスイッチ１に接続しているが、図３に示す、ＴｏＲスイッチ１とアグリゲーションスイッチ１のように、スイッチの構成が本実施形態の条件に適用していれば、エンドノード２とＴｏＲスイッチ１の間にスイッチやリピーターが存在していてもよい。
【００５７】
また、本実施形態では、単一のＴｏＲスイッチ１から、全てのアグリゲーションスイッチ１に接続するリンクが、拡張Ｌｉｎｋ  Ａｇｇｒｅｇａｔｉｏｎ（拡張ＬＡＧ）として構成されている。そして、拡張ＬＡＧは、全てのＴｏＲスイッチで構成されている。
【００５８】
拡張ＬＡＧとは、本明細書で定義するものである。ＩＥＥＥ８０２．３ａｄにて規定されているＬＡＧは、通常、同一スイッチ間で、複数のリンクを仮想的にひとつのリンクとして束ねるものである。それに対し、拡張ＬＡＧとは、複数の異なるスイッチに接続されている複数のリンクをひとつのリンクと見なすものを指す。
【００５９】
なお、この構成において、ＴｏＲスイッチ１の拡張ＬＡＧにて構成されるポートと、当該ポートと接続するアグリゲーションスイッチ１のポートを、以下、本実施形態におけるメンバポートと記載する。
【００６０】
エンドノード２Ａ〜２ＦのネットワークインターフェースにあたえられたＭＡＣアドレスは、図４のとおりとする。なお、図３のネットワークシステムの装置構成数（合計６台）や装置間の接続数（合計９本）は、あくまで一例であり、この構成に限定されず、様々な数の装置や接続を用いてもよい。
【００６１】
例えば、図３を用いて、エンドノード２Ａとエンドノード２Ｃ間で通信を行う際の挙動を説明する。
【００６２】
エンドノード２Ａがエンドノード２Ｃにフレームを送信する際、エンドノード２Ａから送信されたフレームのＤＡにはエンドノード２ＣのＭＡＣアドレスが格納される。
【００６３】
ＴｏＲスイッチ１ａは、エンドノード２Ａから送信されたフレームをポートＰ４から受信する。
【００６４】
ＴｏＲスイッチ１ａは、自身の経路テーブル１３１を参照し、ＤＡが登録されていなければ、Ｐ１〜Ｐ３で構成されている拡張ＬＡＧと、Ｐ５からフレームを送信する。
【００６５】
そして、アドレス学習部１３２は、フレームのＳＡを参照し、自身の経路テーブル１３１に登録されていなければ、フレームを受信したポートＰ４に対応するＳＡとして登録する。このときのＴｏＲスイッチ１ａの経路テーブル１３１を、図５（ａ）に示す。
【００６６】
エンドノード２Ｄは、ＴｏＲスイッチ１ａのＰ５から受信したフレームのＤＡを参照し、自装置宛てのフレームではないと判断し、フレームを破棄する。
【００６７】
拡張ＬＡＧに対してフレームを送信する場合は、拡張ＬＡＧポート決定部１３３が、拡張ＬＡＧとして構成されるポートの中で、実際にフレームを送信するポートをハッシュ計算により算出する。
【００６８】
例えば、拡張ＬＡＧポート決定部１３３は、ＤＡとＳＡのＭＡＣアドレスの値を元に、ハッシュ関数を利用し、ハッシュ値を計算し、ハッシュ値に対応する拡張ＬＡＧとして構成されるポートの中の、フレーム送信ポートを決定する。
【００６９】
ハッシュ値の計算では、例えば、ＳＡとＤＡのアドレス値の特定の区間を用い、排他論理和を算出する。従って、ＤＡとＳＡの組み合わせが同一であれば、往復の通信でＤＡとＳＡの値が入れ替わっても、ハッシュ計算で算出される値は変わらない。そして、計算により算出されたハッシュ値を用い、所定のルールに基づき、拡張ＬＡＧを構成するポートの中から、フレーム送信ポートを選択する。
【００７０】
なお、全てのＴｏＲスイッチにおいて、ハッシュ関数と、ハッシュ値からフレーム送信ポートを決定する前記所定のルールとは、同一であるものとする。
【００７１】
ハッシュ計算を行う対象はＭＡＣアドレスではなくＩＰアドレスであってもよいし、ＤＡまたはＳＡの一方をハッシュ計算に用いてもよい。
【００７２】
こうすることによって、拡張ＬＡＧの中からフレームを送信するポートを一つに決定する。ここでは、フレームに格納されているＤＡ（エンドノード２ＣのＭＡＣアドレス：2c-00-00-00-00-00）とＳＡ（エンドノード２ＡのＭＡＣアドレス2a-00-00-00-00-00）でハッシュ計算を実施した結果、フレームを送信するポートがＴｏＲスイッチ１ａのポートＰ１になったとする。
【００７３】
ＴｏＲスイッチ１ａはフレームをポートＰ１から送信し、アグリゲーションスイッチ１ｄはポートＰ１からフレームを受信する。
【００７４】
アグリゲーションスイッチ１ｄは、自身の経路テーブル１３１を参照し、ＤＡが登録されていなければ、Ｐ２及びＰ３からフレームを送信する。
【００７５】
そして、アドレス学習部１３２は、フレームのＳＡを参照し、自身の経路テーブル１３１に登録されていなければ、フレームを受信したポートＰ１に対応するＳＡとして登録する。このときのアグリゲーションスイッチ１ｄの経路テーブル１３１を図５（ｂ）に示す。
【００７６】
ＴｏＲスイッチ１ｂは、ポートＰ１にてフレームを受け取り、ＤＡが自身の経路テーブル１３１に登録されていないので、ポートＰ４及びポートＰ５からフレームを送信する。このとき、アドレス学習部１３２は、ＴｏＲスイッチ１ｂのポートＰ１〜Ｐ３が拡張ＬＡＧに設定されているため、ポートＰ１から受け取ったフレームを、ポートＰ２またはポートＰ３に送信するということはない。
【００７７】
ＴｏＲスイッチ１ｂからフレームを受信したエンドノード２Ｂおよびエンドノード２Ｅは、受信したフレームが自装置宛てのフレームではないため、フレームを破棄する。
【００７８】
ＴｏＲスイッチ１ｃは、ポートＰ１から、フレームを受信する。ＴｏＲスイッチ１ｃは、自身の経路テーブル１３１を参照し、ＤＡが登録されていなければ、ポートＰ４及びポートＰ５からフレームを送信する。
【００７９】
そして、フレームのＳＡを参照し、自身の経路テーブル１３１に登録されていなければ、フレームを受信した拡張ＬＡＧに対応するＳＡとして登録する。このときのＴｏＲスイッチ１ｃの経路テーブル１３１を図５（ｃ）に示す。
【００８０】
ＴｏＲスイッチ１ｃからフレームを受信したエンドノード２Ｆは、受信したフレームが自装置宛てのフレームではないため、フレームを破棄する。
【００８１】
一方、ＴｏＲスイッチ１ｃからフレームを受信したエンドノード２Ｃは、フレームに格納されるＤＡを参照し、自装置宛てのフレームであることを理解する。
【００８２】
このようにして、エンドノード２Ａからエンドノード２Ｃにフレームが到達する。
【００８３】
次に、エンドノード２Ｃからエンドノード２Ａに対してフレームを送信する際の挙動を説明する。
【００８４】
エンドノード２Ｃから送信されたフレームのＤＡには、エンドノード２ＡのＭＡＣアドレスが格納される。
【００８５】
ＴｏＲスイッチ１ｃは、エンドノード２Ｃから送信されたフレームを、ポートＰ４から受信する。
【００８６】
ＴｏＲスイッチ１ｃは、自身の経路テーブル１３１を参照し、フレームに格納されているＤＡが登録されているか否かを確認する。
【００８７】
前述したエンドノード２Ａからエンドノード２Ｃへのフレーム送信によって、経路テーブル１３１には、フレームに格納されているＤＡが登録されているため、当該ＤＡに対応する拡張ＬＡＧに対してフレームを送信する。
【００８８】
そして、フレームのＳＡを参照し、自身の経路テーブル１３１に登録されていなければ、フレームを受信したポートＰ４に対応するＳＡとして登録する。このときのＴｏＲスイッチ１ｃの経路テーブル１３１を図５（ｄ）に示す。
【００８９】
ＴｏＲスイッチ１ｃは、拡張ＬＡＧに対してフレームを送信するため、ＳＡとＤＡを元にハッシュ関数を用いハッシュ値を算出する。
【００９０】
このとき、フレームに格納されているＤＡ（エンドノード２ＡのＭＡＣアドレス：2a-00-00-00-00-00）とＳＡ（エンドノード２ＣのＭＡＣアドレス：2c-00-00-00-00-00）の組み合わせは、前述したエンドノード２Ａからエンドノード２Ｃへフレームを送信したときのものと同一であり、前述したように、ＴｏＲスイッチ１ａとＴｏＲスイッチ１ｃにおいては、同一のハッシュ関数を用い、同一のルールで、フレーム送信ポートを決定しているため、ＴｏＲスイッチ１ａで算出したハッシュ値と、今回ＴｏＲスイッチ１ｃで算出するハッシュ値は同一のものとなる。
【００９１】
従って、フレームを送信するポートは、ＴｏＲスイッチ１ｃのポートＰ１になる。
【００９２】
ＴｏＲスイッチ１ｃはフレームをポートＰ１から送信し、アグリゲーションスイッチ１ｄはポートＰ３からフレームを受信する。
【００９３】
アグリゲーションスイッチ１ｄは、自身の経路テーブル１３１を参照し、フレームに格納されているＤＡが登録されているか否かを確認する。
【００９４】
このとき、前述したエンドノード２Ａからエンドノード２Ｃへのフレーム送信によって、経路テーブル１３１には、フレームに格納されているＤＡが登録されているため、当該ＤＡに対応するＰ１に対してフレームを送信する。
【００９５】
そして、フレームのＳＡを参照し、自身の経路テーブル１３１に登録されていなければ、フレームを受信したポートＰ３に対応するＳＡとして登録する。このときのアグリゲーションスイッチ１ｄの経路テーブル１３１を図５（ｅ）に示す。
【００９６】
ＴｏＲスイッチ１ａはポートＰ１からフレームを受信する。ＴｏＲスイッチ１ａは、自身の経路テーブル１３１を参照し、フレームに格納されているＤＡが登録されているか否かを確認する。
【００９７】
前述したエンドノード２Ａからエンドノード２Ｃへのフレーム送信によって、経路テーブル１３１には、フレームに格納されているＤＡが登録されているため、当該ＤＡに対応するＰ４に対してフレームを送信する。
【００９８】
そして、フレームのＳＡを参照し、自身の経路テーブル１３１に登録されていなければ、フレームを受信したポートＬＡＦＧ１に対応するＳＡとして登録する。このときのＴｏＲスイッチ１ａの経路テーブル１３１を図５（ｆ）に示す。
【００９９】
エンドノード２Ａは、ＴｏＲスイッチ１ａからフレームを受信し、ＤＡを参照し自装置宛てのフレームであることを理解する。
【０１００】
このようにして、エンドノード２Ｃからエンドノード２Ａにフレームが到達する。
【０１０１】
本実施形態では、ＴｏＲスイッチ１からアグリゲーションスイッチへフレームを送信するポートの決定を、フレームに格納されるＳＡやＤＡを用いハッシュ計算を行い実施する。そのため、ＳＡやＤＡの値が異なると、ハッシュ計算の結果が異なる。
【０１０２】
例えば、エンドノード２Ａと同一のＴｏＲスイッチ１ａに接続されるエンドノード２Ｄから、エンドノード２Ｃと同一のＴｏＲスイッチ１ｃに接続されるエンドノード２Ｆ間の通信は、必ずしもアグリゲーションスイッチ１ｄを経由するというわけではなく、エンドノード２ＤのＭＡＣアドレスとエンドノード２ＦのＭＡＣアドレスを用いてハッシュ計算を行った結果、算出されたハッシュ値によって決定される。
【０１０３】
ここでは、エンドノード２ＤのＭＡＣアドレスとＳＡエンドノード２ＦのＭＡＣアドレスでハッシュ計算を実施した結果、フレームを送信するポートがＴｏＲスイッチ１のポートＰ２になったとする。そのため、エンドノード２Ｄとエンドノード２Ｆ間の通信は、アグリゲーションスイッチ１ｅを経由して実施されることになる。
【０１０４】
次に、本構成において、障害が発生した場合の処理を説明する。
はじめに、アグリゲーションスイッチ１及びＴｏＲスイッチ１に格納される、障害の検知及び経路制御を実施する部位の処理に関して説明する。
【０１０５】
図６は、アグリゲーションスイッチ１の処理を表した図である。
【０１０６】
アグリゲーションスイッチ１の送信部１３５は、検知フレーム１４を、対向のＴｏＲスイッチ１に対して、送信する（ステップ６０１）。
【０１０７】
検知フレーム１４とは、障害を検知するために、繰り返し、例えば所定間隔毎に、アグリゲーションスイッチ１とＴｏＲスイッチ１の間で送信し合うフレームで、検知フレーム１４であることが分かるような特別な領域を持つフレームであっても、通常のフレームであってもよい。検知フレーム１４が通常のフレームである場合、フレームを検知フレーム１４として識別するために、例えば、宛先アドレスを検知フレーム１４として識別するための特定アドレスとすればよい。検知フレーム１４として識別するという目的を達成するものであれば、フレームフォーマットは問わない。
【０１０８】
ここで、アグリゲーションスイッチ１における検知フレーム１４を送信するポートとは、ＴｏＲスイッチ１の拡張ＬＡＧが構成されているポートに接続されるポート、つまり、アグリゲーションスイッチ１のメンバポートである。
【０１０９】
次に、アグリゲーションスイッチ１の受信部１３６は、メンバポートの各々において検知フレーム１４の受信を監視し（ステップ６０２）、検知部１３７は、検知フレーム１４を受信しているか否か及びリンクアップ状態になっているか否かを判断する（ステップ６０３）。当該ポートでは、検知フレーム１４を受信していない場合、もしくは、ポートがリンクアップ状態でない場合、つまり、リンクダウン状態になっている場合、当該ポートと接続するリンクのどこかにおいて障害が発生していることを検知できるため、当該ポートを障害発生ポートと同定し、経路制御処理１の処理を実行する（ステップ６０４）。
【０１１０】
なお、リンクアップ状態とは、スイッチ１のあるポートＰｎにおいて、相手装置のケーブルで接続されているポートと、通信可能となっている状態を示し、リンクダウン状態とは、同様にスイッチ１のあるポートＰｎにおいて、相手装置とケーブルで接続されている、接続されていないに関わらず、通信不可となっている状態を示す。
【０１１１】
経路制御処理その１の処理内容を説明する。
【０１１２】
アグリゲーションスイッチ１の送信部１３５は、障害フレーム１５を送信する（ステップ６０４１）。
【０１１３】
障害フレーム１５とは、障害発生ポートから、障害を検知した後、障害を検知したリンクに対して送信するもので、検知フレーム１４と同様に、障害フレーム１５であることが分かるような特別な領域を持つフレームであっても、通常のフレームであってもよい。例えば、宛先アドレスを障害フレーム１５として識別するための特定値とすればよい。
【０１１４】
さらに、送信部１３５は、障害通知フレーム１６を送信する（ステップ６０４２）。
【０１１５】
障害通知フレーム１６とは、障害を検知した後、障害を検知したリンク以外のリンクに対して送信するもので、対向のスイッチに対して障害を通知するためのフレームであり、検知フレーム１４と同様に、障害通知フレーム１６であることが分かるような特別な領域を持つフレームであっても、通常のフレームであってもよい。例えば、宛先アドレスを障害通知フレーム１６として識別するための特定値とすればよい。
【０１１６】
次に、障害箇所回避処理部１３８は、障害を検知した当該アグリゲーションスイッチ１の経路テーブル１３１の、障害を検知したリンクに接続するポートの経路を、消去する（ステップ６４０３）。こうすることによって、障害が発生した以降、障害が発生したリンクへフレームを送信することを防ぐ。
【０１１７】
そして、障害箇所回避処理部１３８は、障害フラグを立てる（ステップ６４０４）。障害フラグとは、２以上の状態変化をもつ識別子であればよい。例えば、コンピュータプログラミング処理において、初期値が０の障害フラグ変数を作成する。そして、障害フラグ変数に０以外の特定の値（例えば１）を代入する。この状態を障害フラグが立っている状態と定義する。この例では、障害フラグを、障害フラグ変数を用いた例として説明したが、障害フラグは、変数でなくても、２以上の状態変化をもつ識別子であればよい。
【０１１８】
経路制御処理その１の処理を終了した場合、再度、ステップ６０１からの処理を実行する。
【０１１９】
検知部１３７は、検知フレーム１４を受信しているか否か、もしくはリンクアップ状態であるか否かを判断し（ステップ６０３）、検知フレーム１４を受信している場合、もしくはリンクアップ状態である場合、障害フラグの確認処理に移動する（ステップ６０５）。障害フラグの確認処理とは、障害フラグが立っているか否かを確認する処理のことである。
【０１２０】
障害フラグが立っていると判断した場合、復旧処理を実施する（ステップ６０６）。
【０１２１】
復旧処理の処理内容を説明する。アグリゲーションスイッチ１の復旧部１３９は、各種初期化を実施する（ステップ６０６１）。各種初期化とは、例えば、障害フラグを初期状態に戻す処理や、経路制御処理その１の処理に移る際の条件をクリアすることである。
【０１２２】
アグリゲーションスイッチ１は、障害フラグの確認処理で（ステップ６０５）、障害フラグが立っていないと判断した場合、受信部１３６は、障害フレーム１５の受信を監視し（ステップ６０７）、検知部１３７は、障害フレーム１５を受信しているか否かを判断する（ステップ６０８）。
【０１２３】
障害フレーム１５を受信している場合、当該ポートを障害発生ポートと同定し、経路制御処理その１の処理を実行し（ステップ６０４）、障害フレーム１５を受信していない場合、障害フラグの確認処理に移動し（ステップ６０９）、障害フラグが立っていると判断した場合、復旧処理を実施する（ステップ６０６）。
【０１２４】
そして、再度、ステップ６０１からの処理を実行する。障害フラグの確認処理を実施し（ステップ６０９）、障害フラグが立っていないと判断した場合は、そのまま、ステップ６０１からの処理を実行する。
【０１２５】
ステップ６０３における検知フレーム１４を受信していないと判断する基準は、本実装形態における、ステップ６０１からの繰り返される処理の中で、1回でもフレームを受信できなかった場合としても良いし、あらかじめ設定したしきい値以上の回数においてフレームを受信できなかった場合としてもよいし、あらかじめ設定したしきい値以上の回数において、連続してフレームを受信できなかった場合としてもよい。ステップ６０８における障害フレーム１５を受信したと判断する基準も、これと同様である。
【０１２６】
図７は、ＴｏＲスイッチ１に格納されるプログラムの処理を表した図である。
【０１２７】
ＴｏＲスイッチ１の送信部１３５は、検知フレーム１４を、対向のＴｏＲスイッチ１に対して、送信する（ステップ７０１）。
【０１２８】
ここで、ＴｏＲスイッチ１における検知フレーム１４を送信するポートとは、拡張ＬＡＧが構成されているポート、つまり、ＴｏＲスイッチ１のメンバポートである。
【０１２９】
次に、ＴｏＲスイッチ１の受信部１３６は、メンバポートにて検知フレーム１４の受信を監視し（ステップ７０２）、検知部１３７は、検知フレーム１４を受信しているか否か、もしくは、ポートがリンクアップ状態であるか否かを判断し（ステップ７０３）、検知フレーム１４を受信していなかった場合、もしくは、リンクダウン状態である場合、当該ポートを障害発生ポートと同定し、経路制御処理１の処理を実行する（ステップ７０４）。
【０１３０】
経路制御処理その１の処理内容を説明する。
【０１３１】
ＴｏＲスイッチ１の障害箇所回避処理部１３９は、フレーム送信経路を切り替える（ステップ７０４１）。つまり、障害を検知したポートを、ＬＡＧ拡張を構成するポートから除外する、すなわち、フレームを送信する経路から除外する。
【０１３２】
このとき、ＴｏＲスイッチ１では、ＬＡＧ拡張を構成するポートがひとつ減ったことにより、前述した所定のルールに基づき、フレーム送信ポートを新たに選択する。
【０１３３】
次に、送信部１３５は、障害フレーム１５を送信する（ステップ７０４２）。
【０１３４】
そして、障害箇所回避処理部１３８は、障害フラグを立てる（ステップ７４０３）。経路制御処理その１の処理を終了した場合、再度、ステップ７０１からの処理を実行する。
【０１３５】
検知部１３７は、検知フレーム１４を受信しているか否か、もしくはリンクアップ状態であるか否かを判断し（ステップ７０３）、検知フレーム１４を受信している場合、もしくは、リンクアップ状態である場合、障害フラグの確認処理に移動する（ステップ７０５）。障害フラグの確認処理とは、障害フラグが立っているか否かを確認する処理のことである。
【０１３６】
障害フラグが立っていると判断した場合、復旧処理を実施する（ステップ７０６）。
【０１３７】
復旧処理の処理内容を説明する。
【０１３８】
ＴｏＲスイッチ１の復旧部１３９は、フレーム送信経路を切り替える（７０６１）。つまり、経路制御処理その１もしくは経路制御処理その２にて、ＬＡＧ拡張から除外した、障害を検知したポートを、ＬＡＧ拡張に加える。
【０１３９】
そして、各種初期化を実施する（ステップ７０６２）。各種初期化とは、例えば、障害フラグを初期状態に戻す処理や、経路制御処理その１または経路制御処理その２の処理に移る際の条件をクリアすることである。
【０１４０】
ＴｏＲスイッチ１の検知部１３７は、障害フラグの確認処理で（ステップ７０５）、障害フラグが立っていないと判断した場合、受信部１３６は、障害フレーム１５の受信を監視し（ステップ７０７）、障害フレーム１５を受信しているか否かを判断する（ステップ７０８）。
【０１４１】
障害フレーム１５を受信している場合、当該ポートを障害発生ポートと同定し、経路制御処理その１の処理を実行し（ステップ７０４）、障害フレーム１５を受信していない場合、障害フラグの確認処理に移動し（ステップ７０９）、障害フラグが立っていると判断した場合、復旧処理を実施する（ステップ７０６）。
【０１４２】
そして、再度、ステップ７０１からの処理を実行する。
【０１４３】
検知部１３７は、障害フレーム１５を受信しているか否かを判断し（ステップ７０８）、障害フレーム１５を受信していない場合、障害フラグの確認処理に移動する（ステップ７０９）。
【０１４４】
障害フラグが立っていると判断した場合、復旧処理を実施する（ステップ７０６）。
【０１４５】
ＴｏＲスイッチ１の検知部１３７は、障害フラグの確認処理で（ステップ７０９）、障害フラグが立っていないと判断した場合、受信部１３６は、障害検知フレーム１６の受信を監視し（ステップ７１０）、障害検知フレーム１６を受信しているか否かを判断する（ステップ７１１）。障害通知フレーム１６を受信している場合、経路制御処理その２の処理を実行する（ステップ７１２）。
【０１４６】
経路制御処理その２の処理内容を説明する。
【０１４７】
ＴｏＲスイッチ１の障害箇所回避処理部１３８は、障害発生箇所を推定するため、所定時間待機する（ステップ７１２１）。
【０１４８】
そして、所定時間待機している間に、障害通知フレームを受信したポート数をカウントし、しきい値判断を行う（ステップ７１２２）。このとき、障害通知フレームを受信したポート数が、あらかじめ設定しておいたしきい値よりも小さい場合、障害箇所は、リンクであると仮定し、フレーム送信経路を切り替える（ステップ７１２３）、つまり、前記障害通知フレームを受信したポートを、拡張ＬＡＧを構成するポート、言いかえると、フレーム転送経路から除外する。
【０１４９】
このとき、ＴｏＲスイッチ１では、ＬＡＧ拡張を構成するポートがひとつ減ったことにより、前述した所定のルールに基づき、フレーム送信ポートを新たに選択する。
【０１５０】
そして、障害フレーム１５を送信する（ステップ７１２４）。障害通知フレームを受信したポート数が、あらかじめ設定しておいたしきい値よりも大きい場合、障害箇所は、他のＴｏＲスイッチであると仮定し、障害フレーム１５を送信する（ステップ７１２４）。
【０１５１】
次に、障害箇所回避処理部１３８は、障害フラグを立てる（ステップ７１２５）。経路制御処理その２の処理を終了した場合、再度、ステップ７０１からの処理を実行する。
【０１５２】
検知部１３７は、障害フレーム１５を受信しているか否かを判断し（ステップ７１１）、障害フレーム１５を受信していない場合、障害フラグの確認処理に移動する（ステップ７１３）。
【０１５３】
障害フラグが立っていると判断した場合、復旧処理を実施する（ステップ７０６）。
そして、再度、ステップ７０１からの処理を実行する。障害フラグの確認処理を実施し（ステップ７１３）、障害フラグが立っていないと判断した場合は、そのまま、ステップ７０１からの処理を実行する。
【０１５４】
ステップ７０３における検知フレーム１４を受信していないと判断する基準は、本実装形態における、ステップ７０１からの繰り返される処理の中で、1回でもフレームを受信できなかった場合としても良いし、あらかじめ設定したしきい値以上の回数においてフレームを受信できなかった場合としてもよいし、あらかじめ設定したしきい値以上の回数において、連続してフレームを受信できなかった場合としてもよい。ステップ７０８、７１２２における障害フレーム１５、障害通知フレーム１６を受信したと判断する基準も、これと同様である。
【０１５５】
このように、アグリゲーションスイッチ１やＴｏＲスイッチ１は、所定時間毎に処理を繰り返す。従って、検知フレーム１４、障害フレーム１５、障害通知フレーム１６の受信失敗や送信失敗が発生したとしても、次回処理にて対応可能となる。
【０１５６】
次に、障害が発生した際の、アグリゲーションスイッチ１とＴｏＲスイッチ１のやりとりについて、図８〜図１３を用いて説明する。ただし、図８〜図１３の処理内容の詳細は、図６、図７に示したとおりである。
【０１５７】
図８は、ＴｏＲスイッチ１ａとアグリゲーションスイッチ１ｄの間のリンクにおいて障害が発生した場合の処理を説明した図である。
【０１５８】
アグリゲーションスイッチ１ｄは、リンクダウン等によって、ＴｏＲスイッチ１ａとの間のリンクで障害が発生したことを検知する（ステップ８０１）。
【０１５９】
アグリゲーションスイッチ１ｄは、障害通知フレーム１６を、障害発生ポート以外のポートから、ＴｏＲスイッチ１に対して送信する。つまり、アグリゲーションスイッチ１ｄは、ＴｏＲスイッチ１ｂとＴｏＲスイッチ１ｃへ、障害通知フレーム１６を送信する（ステップ８０２）。
【０１６０】
ＴｏＲスイッチ１ｂとＴｏＲスイッチ１ｃは、障害通知フレームを受信し（ステップ８０３）、障害が発生した箇所を推測するため所定時間待機し、障害通知フレーム１６を受信したポート数をカウントする（ステップ８０４）。障害通知フレームを受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し（ステップ８０５）、当該ポート数が、当該しきい値よりも小さい場合、リンク障害が発生したものと仮定し、障害通知フレーム１６を受信したポートを、拡張ＬＡＧから除外する（ステップ８０６）。
【０１６１】
このとき、ＴｏＲスイッチ１ｂとＴｏＲスイッチ１ｃでは、ＬＡＧ拡張を構成するポートがひとつ減ったことにより、新たに、ハッシュ計算を実施し、前述した所定のルールに基づき、フレーム送信ポートを選択する。
【０１６２】
また、アグリゲーションスイッチ１ｄと同様に、ＴｏＲスイッチ１ａも、アグリゲーションスイッチ１ｄとの間の接続状態がリンクダウンになったことを検知する（ステップ８０７）。ＴｏＲスイッチ１ａは、リンクダウンを検知したポートを、拡張ＬＡＧから除外する（ステップ８０８）。
【０１６３】
このとき、ＴｏＲスイッチ１aでは、ＬＡＧ拡張を構成するポートがひとつ減ったことにより、新たに、ハッシュ計算を実施し、前述した所定のルールに基づき、フレーム送信ポートを選択する。
【０１６４】
この場合、ＴｏＲスイッチ１aと、ＴｏＲスイッチ１ｂと、ＴｏＲスイッチ１ｃとでは、同一の障害発生ポートを除くＬＡＧ拡張を構成するポートと、同一のハッシュ関数と、同一の所定ルールとに基づき、ＬＡＧ拡張内でフレームを転送するポートを決定するため、データ送受信の経路を、往復で同一のリンクにすることが可能になる。
【０１６５】
なお、同時に２箇所でリンク障害が発生した場合であっても、ステップ８０４に示すように、所定時間待機して障害通知フレーム１６を受信したポート数でしきい値判断を実施することにより、リンク障害であるか図１２に示すＴｏＲスイッチ障害であるのかを判断し、障害箇所に応じた経路制御処理を実施することが可能である。
【０１６６】
また、もし、リンク障害であるのにＴｏＲスイッチ障害であると判定されてしまう場合は、しきい値の値が不適切であるとして、しきい値を変更してもよい。しきい値は、設定ファイル等により変更することが可能とする。
【０１６７】
さらに、例えば１箇所でリンク障害が発生した場合、経路制御処理を実施するとともに、障害発生リンクと接続するポートを記憶しておくことで、後に、他の箇所でリンク障害が発生した場合においても、すでに記憶しているポートに加え、新たに障害が発生したリンクと接続するポートを、拡張ＬＡＧを構成するポートから除外することが可能になる。つまり、本実施形態は、複数の障害が発生しているリンクを、フレームを送信する経路から除外することで、複数のリンク障害に対しても、対応可能である。
【０１６８】
ここで、例えば、図３に示すように、エンドノード２Ａからエンドノード２Ｃへの通信が、アグリゲーションスイッチ１ｄを介して行われ、ＴｏＲスイッチ１ａとアグリゲーションスイッチ１ｄを接続するリンクにて障害が発生した場合、仮に、上述のステップ８０１〜８０６の処理を実施せず、障害が発生したリンクと直接接続するスイッチでしか経路制御の処理を実施しなかった場合（ステップ８０７及び８０８の処理のみを実施した場合）を説明する。
【０１６９】
このとき、エンドノード２Ａからエンドノード２Ｃへの通信は、障害発生リンクと直接接続するＴｏＲスイッチ１ａが、障害を検知し、ＴｏＲスイッチ１ａからアグリゲーションスイッチ１に対するフレーム送信経路を切り替えることにより、新たな経路、例えば、アグリゲーションスイッチ１ｅを介して実施される。しかし、エンドノード２Ｃからエンドノード２Ａへの通信においては、ＴｏＲスイッチ１ｃにて経路を変更しないため、フレームはアグリゲーション１ｄに転送されることになり、アグリゲーションスイッチ１ｄとＴｏＲスイッチ１ａ間のリンクでは障害が発生しているため、フレームは失われる。
【０１７０】
さらに、例えば、図３に示すように、ＴｏＲスイッチ１ａとアグリゲーションスイッチ１ｄを接続するリンクにて障害が発生した後、エンドノード２Ａとエンドノード２Ｃの通信が、新規に発生した場合、エンドノード２Ａとエンドノード２Ｃ間で往復の経路が異なり、アグリゲーションスイッチ１にてフラッディングが発生する。
【０１７１】
これに対し、本実施例では、障害が発生した際においても、データ送受信の経路を往復で同一のリンクにすることが可能になるため、フレームのロストやフラッディングを防ぐことができる。
【０１７２】
図９は、ＴｏＲスイッチ１ａとアグリゲーションスイッチ１ｄの間のリンクにおいて障害が発生し、その障害から復旧した場合の処理を説明した図である。
【０１７３】
アグリゲーションスイッチ１ｄは、リンクアップ等によって、ＴｏＲスイッチ１ａとの間のリンクの障害から復旧したことを検知する（ステップ９０１）。
【０１７４】
アグリゲーションスイッチ１ｄは、ＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃへ送信していた障害通知フレーム１６の送信を停止する（ステップ９０２）。
【０１７５】
ＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃは、アグリゲーションスイッチ１ｄから、所定時間以上障害通知フレーム１６を受け取っていないことを検知する（ステップ９０３）。
【０１７６】
ＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃは、障害通知フレーム１６を受信しないことによって障害から復旧したとみなし、障害通知フレーム１６を受け取っていたポートを、拡張ＬＡＧに追加する（ステップ９０４）。
【０１７７】
また、アグリゲーション１ｄと同様に、ＴｏＲスイッチ１ａも、アグリゲーションスイッチ１ｄとの間の接続状態がリンクアップになったことを検知する（ステップ９０５）。ＴｏＲスイッチ１ａは、リンクアップを検知したポートを、拡張ＬＡＧに追加する。
【０１７８】
なお、障害からの復旧処理については、ステップ９０２及びステップ９０３で示したように、アグリゲーションスイッチ１ｄが、障害通知フレーム１６の送信を停止し、ＴｏＲスイッチ１が障害通知フレーム１６を受信しないことにより、障害からの復旧を検知するのではなく、アグリゲーションスイッチ１ｄが、障害からの復旧を検知した場合、障害通知フレーム１６を送信していたポートにて、障害通知フレーム１６の送信を停止するのではなく、例えば、当該ポートにて、障害からの復旧を通知することを目的とする復旧フレームを送信し、ＴｏＲスイッチ１が復旧フレームを受信したことにより、障害からの復旧を検知する方式であってもよい。また、スイッチ１が、障害が発生したことを検知したポートに対して送信する障害フレーム１５の送信の停止に関しても同様に、復旧フレームの送信によって、障害からの復旧を通知してもよい。
【０１７９】
図１０は、ケーブルの中の上り下りの経路において、片方向の経路で、フレーム送受信が行えなくなった障害（以下、片系リンク障害と記す）においても、障害発生箇所を回避するための処理を説明した図である。
【０１８０】
全てのアグリゲーションスイッチ１と、全てのＴｏＲスイッチ１の、メンバポートから、対向のポートに対して、所定時間毎に検知フレーム１４を送信する（ステップ１００１）。
【０１８１】
さらに、全てのアグリゲーションスイッチ１と、全てのＴｏＲスイッチ１のメンバポートにおいて、所定時間毎に、検知フレーム１４を受信しているか否かを確認する（ステップ１００２）。この、ステップ１００１及びステップ１００２の処理は、所定時間毎に繰り返されている。この所定時間は変更可能で、当該所定時間を短くすれば、障害が発生してから障害を検知するまでの時間を、短くすることができるし、当該所定時間を長くすれば、障害が発生してから障害を検知するまでの時間が、長くなる。また、この時間は、リンク速度にも依存する。
【０１８２】
図１１は、片系リンク障害が発生した場合の処理を説明した図である。
【０１８３】
アグリゲーションスイッチ１ｄ及びＴｏＲスイッチ１ａは、検知フレーム１４を送信する（ステップ１１０１）。
【０１８４】
アグリゲーションスイッチ１ｄは、検知フレーム１４を受信しないことを確認する（ステップ１１０２）。アグリゲーションスイッチ１ｄは、ＴｏＲスイッチ１ａに対して、障害フレーム１５を送信する（ステップ１１０３）。
【０１８５】
ＴｏＲスイッチ１ａは、障害フレーム１５を受信したことを確認する（ステップ１１０４）。ＴｏＲスイッチ１ａは、障害フレーム１５を受信したポートを、拡張ＬＡＧから除外する（ステップ１１０５）。
【０１８６】
また、アグリゲーションスイッチ１ｄは、障害通知フレーム１６を、障害発生ポート以外のポートから、ＴｏＲスイッチ１に対して送信する。つまり、アグリゲーションスイッチ１ｄは、ＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃに対して、障害通知フレーム１６を送信する（ステップ１１０６）。
【０１８７】
ＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃは、障害通知フレームを受信し（ステップ１１０７）、障害が発生した箇所を推測するため、所定時間待機し、障害通知フレーム１６を受信したポート数をカウントする（ステップ１１０８）。障害通知フレーム１６を受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し（ステップ１１０９）、当該ポート数が、当該しきい値よりも小さい場合、リンク障害が発生したものと仮定し、障害通知フレーム１６を受信したポートを、拡張ＬＡＧから除外する（ステップ１１１０）。
【０１８８】
この場合、ＴｏＲスイッチ１aと、ＴｏＲスイッチ１ｂと、ＴｏＲスイッチ１ｃとでは、同一の障害発生ポートを除くＬＡＧ拡張を構成するポートと、同一のハッシュ関数と、同一の所定ルールに基づき、ＬＡＧ拡張内でフレームを転送するポートを決定するため、データ送受信の経路を、往復で同一のリンクにすることが可能になる。
【０１８９】
図１０及び図１１を用いて説明したように、アグリゲーションスイッチ１及びＴｏＲスイッチ１は、対向のスイッチに対して所定時間毎に検知フレーム１４を送信し、所定時間毎に対向のスイッチから受信する検知フレーム１４の受信を確認することで、片系リンク障害にも対応できる。
【０１９０】
また、片系リンク障害から復旧する場合の処理は、障害を検知したスイッチが、検知フレーム１４の受信を再開したことにより、障害から復旧したもの仮定し、障害が発生したリンクに対して送信していた障害フレーム１５の送信を停止することにより、対向のスイッチにて障害フレーム１５を受信しなくなった契機にて、障害復旧を検知し、障害復旧の処理を実施する。
【０１９１】
また、前述したように、障害フレーム１５の送信の停止の代わりに、障害フレーム１５を送信していたポート、つまり障害が発生したリンクへ、復旧フレームを送信することによって、対向のスイッチは、復旧フレームの受信を契機に、障害復旧を検知し、障害復旧の処理を実施することが可能になる。
【０１９２】
図１２は、ＴｏＲスイッチ１ａにて障害が発生した場合の処理を説明した図である。
【０１９３】
アグリゲーションスイッチ１ｄ及びアグリゲーションスイッチ１ｅ及びアグリゲーションスイッチ１ｆは、リンクダウン等により、接続しているリンクで障害が発生したことを検知する（ステップ１２０１）。
【０１９４】
アグリゲーションスイッチ１ｄ及びアグリゲーションスイッチ１ｅ及びアグリゲーションスイッチ１ｆは、障害通知フレーム１６を、障害発生ポート以外のポートから、ＴｏＲスイッチ１に対して送信する。つまり、アグリゲーションスイッチ１ｄ及びアグリゲーションスイッチ１ｅ及びアグリゲーションスイッチ１ｆは、ＴｏＲスイッチ１ｂとＴｏＲスイッチ１ｃへ、障害通知フレーム１６を送信する（ステップ１２０２）。
【０１９５】
ＴｏＲスイッチ１ｂとＴｏＲスイッチ１ｃは、障害通知フレーム１６を受信し（ステップ１２０３）、障害が発生した箇所を推測するため所定時間待機し、障害通知フレーム１６を受信したポート数をカウントする（ステップ１２０４）。障害通知フレームを受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し（ステップ１２０５）、当該ポート数が、当該しきい値よりも小さい場合、リンク障害が発生したものと仮定し、障害通知フレーム１６を受信したポートを、拡張ＬＡＧから除外する（ステップ８０６）。障害通知フレームを受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し（ステップ８０５）、当該ポート数が、当該しきい値よりも大きい場合、ＴｏＲスイッチ１障害が発生したものと仮定し、実行する処理はない。
【０１９６】
ここで、リンク障害もしくは片系リンク障害と、ＴｏＲスイッチ障害の処理を比較する。
【０１９７】
図８に示すように、例えばリンク障害においては、ＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃが、障害通知フレーム１６を受信するのは、障害が発生したリンクに接続しているアグリゲーションスイッチ１からであり、その他のアグリゲーションスイッチ１からは障害通知フレーム１６を受信しない。
【０１９８】
一方、図１２に示すように、ＴｏＲスイッチ障害においては、ＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃが、障害通知フレーム１６を受信するのは、障害が発生したＴｏＲスイッチに接続しているアグリゲーションスイッチ１ｄ、アグリゲーションスイッチ１ｅ、アグリゲーションスイッチ１ｆからである。
【０１９９】
つまり、リンク障害とＴｏＲスイッチ障害とでは、障害の発生していないＴｏＲスイッチ１では、障害通知フレーム１６を受信するポート数が異なるため、障害通知フレーム１６を受信したポート数に応じて、障害が発生した箇所を推定することが可能である。
【０２００】
片系リンク障害が発生した場合は、データ送受信の経路が往復で同一のリンクになるようにするため、全ＴｏＲスイッチ１において、フレーム送信経路を切り替え、ＴｏＲスイッチ障害が発生した場合は、障害のＴｏＲスイッチを経由しなければエンドノードへ到達しないフレームに関しては、救済することができないため、障害が発生したＴｏＲスイッチを除くＴｏＲスイッチにて、フレーム送信経路を変更するという処理は実施しない。
【０２０１】
図７に示したステップ７１２１や、図１２に示すステップ１２０４等で、所定時間待機する理由は、各アグリゲーションスイッチ１が障害を検知するまでに時差があった場合でも、ＴｏＲスイッチ１が障害通知フレーム１６を受信できるようにするためである。
【０２０２】
図１３は、アグリゲーションスイッチ１ｄにて障害が発生した場合の処理を説明した図である。
【０２０３】
ＴｏＲスイッチ１a及びＴｏＲスイッチ１ｂ及びＴｏＲスイッチ１ｃは、リンクダウン等により、接続しているリンクで障害が発生したことを検知する（ステップ１３０１）。
【０２０４】
ＴｏＲスイッチ１aとＴｏＲスイッチ１ｂとＴｏＲスイッチ１ｃは、障害発生ポートを、拡張ＬＡＧから除外する（ステップ１３０２）。
【０２０５】
この場合、ＴｏＲスイッチ１aと、ＴｏＲスイッチ１ｂと、ＴｏＲスイッチ１ｃとでは、同一の障害発生ポートを除くＬＡＧ拡張を構成するポート数と、同一のハッシュ関数と、同一の所定ルールに基づき、ＬＡＧ拡張内でフレームを転送するポートを決定するため、データ送受信の経路を、往復で同一のリンクにすることが可能になる。
【０２０６】
次に、図１４を用いて、第２の実施例を説明する。
【０２０７】
図１４は、第２の実施例におけるネットワークシステム０を図示した図である。第１の実施例と第２の実施例との差分は、一つのＴｏＲスイッチ１と、一つのアグリゲーションスイッチ１間のリンクの接続が、２本になっていることである。さらに、一つのＴｏＲスイッチ１と、一つのアグリゲーションスイッチ１との間に接続される複数のリンクは、ＬＡＧで構成されており、一つのＴｏＲスイッチ１から、全てのアグリゲーションスイッチ１との間に接続される複数のＬＡＧは、拡張ＬＡＧで構成されている。ただし、ここではＬＡＧで構成されるリンク数を２として説明するが、３以上のリンクであってもよい。
【０２０８】
図１４においても、エンドノードが接続されるのは、ＴｏＲスイッチになる。従って、例えば、ＴｏＲスイッチ１ａ〜１ｃのポートＰ７〜Ｐｎに接続されるものとする。
【０２０９】
また、スイッチ台数、ポート数は、本実施形態に限定されるものではない。
【０２１０】
詳細な構成を、図１４を用いて説明すると、ＴｏＲスイッチ１ａのポートＰ１とポートＰ２はＬＡＧで構成され、ポートＰ３とポートＰ４、ポートＰ５とポートＰ６に対しても、それぞれ同様にＬＡＧで構成されている。また、ＴｏＲスイッチ１ａだけではなく、ＴｏＲスイッチ１ｂ、ＴｏＲスイッチ１ｃ及び全てのアグリゲーションスイッチ１に関しても、一つのスイッチとの間の複数リンクの接続は、ＬＡＧで構成されている。さらに、全てのＴｏＲスイッチ１のポートＰ１からポートＰ６は、拡張ＬＡＧで構成されている。
【０２１１】
そして、図１４に示す構成の場合は、アグリゲーションスイッチ１が、障害を検知した場合、障害通知フレーム１６を、ＬＡＧを構成するポートのうち一方から送信することで、ＴｏＲスイッチ１は、障害通知フレーム１６の受信ポート数による、障害発生箇所推定のための、しきい値判断が行える。
【０２１２】
もしくは、アグリゲーションスイッチ１が、障害を検知した場合、アグリゲーションスイッチ１を識別する識別子が存在する、障害通知フレーム１６を、ＴｏＲスイッチ１に対して送信するとしてもよい。ここでいうアグリゲーションスイッチ１を識別する識別子とは、障害通知フレーム１６のどこかの領域に挿入してもよいし、障害通知フレーム１６の送信元アドレスであってもよい。つまり、当該障害通知フレーム１６を送信したアグリゲーションスイッチ１が、識別できればよい。
【０２１３】
ＴｏＲスイッチ１は、受信した障害通知フレーム１６の当該識別子を元に、障害通知フレーム１６を送信したアグリゲーションスイッチ１の数を判断し、障害通知フレーム１６を送信したアグリゲーションスイッチ１の数で、障害発生箇所推定のための、しきい値判断を行うことができる。
【０２１４】
次に、図１５を用いて、第３の実施例を説明する。
【０２１５】
図１５は、ネットワークシステム０に属するスイッチ１が、ネットワークを介して、管理サーバ３と接続した構成図である。
【０２１６】
図１５においても、エンドノードが接続されるのは、ＴｏＲスイッチになる。
【０２１７】
また、本実施形態では、ネットワークシステムに属すのは、スイッチ１ａ〜１ｆまでの６台のスイッチとなるが、スイッチ１の台数は、本実施形態の構成に限定されるものではない。
【０２１８】
管理サーバ３は、スイッチ１a〜１ｆと接続している。ただし、管理サーバ３と、各スイッチ１との間に物理的なリンクの接続がなくても、ネットワークを介して通信可能であればよいこととする。
【０２１９】
各スイッチ１は、図７〜図１３を用い説明した処理過程に発生する各イベントを、例えば、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）を用いるか、独自のフレームを用いて、管理サーバ３へ通知することにより、管理サーバ３において、スイッチ１の個々の状態や、スイッチ１同士の接続状態を把握することが可能になる。
【０２２０】
ここでいう各イベントとは、例えば図６のステップ６０３、図７のステップ７０３で検知フレーム１４を受信していない場合、もしくはリンクダウンを検知した場合、または、ステップ６０８、７０８において障害フレームを受信している場合、または、ステップ７１１で障害通知フレームを受信している場合、または、ステップ６０６、７０６の復旧処理を開始する場合等である。もちろん、ここに記述した以外のイベントの際においても、管理サーバ３へ、スイッチ１における状態や処理状況を通知してもよい。
【０２２１】
このように、スイッチ１は、管理サーバ３に対して、自発的にイベント通知することにより、管理サーバ３では、迅速にスイッチ１の状態を把握することができる。
【０２２２】
また、管理サーバ３が、スイッチ１に対して、例えば、設定情報を送信し、その設定情報をスイッチに反映させたり、スイッチ１からの通知により把握した障害の情報を、他のスイッチ１に通知したりしてもよい。これにより、スイッチ１の設定変更や、スイッチ１における障害箇所の誤判断の回避、ネットワークシステム０全体の障害箇所の迅速な把握とその障害箇所に応じた適切な経路制御を、実施することが可能になる。
【０２２３】
また、実施形態１〜３に示した処理を実行するに際し、スイッチ１の中に格納された各処理部は、スイッチ１の中に格納されず、例えば、管理サーバ３や、スイッチに接続する装置の中に格納され、処理を実行してもよい。
【０２２４】
また、上記各実施例は、スイッチ（レイヤ２）を対象として説明したが、例えば、ルータ（レイヤ３）についても適応することが可能である。
【符号の説明】
【０２２５】
０：ネットワークシステム、１：スイッチ、１１：スイッチＬＳＩ、１２：ＣＰＵ、１３：メモリ、１３０：ＯＳ、１３１：経路テーブル（経路特定用データ）、１３２：アドレス学習部、１３３：拡張ＬＡＧポート決定部、１３４：障害箇所回避制御部、１３５：送信部、１３６：受信部、１３７：検知部、１３８：障害箇所回避処理部、１３９：復旧部、１４：検知フレーム、１５：障害フレーム、１６：障害通知フレーム、２：エンドノード、３：管理サーバ、Ｐｎ：ポート（ｎは自然数）。
【図１】
2012253530.tif 000003
【図２】
2012253530.tif 000004
【図３】
2012253530.tif 000005
【図４】
2012253530.tif 000006
【図５】
2012253530.tif 000007
【図６】
2012253530.tif 000008
【図７】
2012253530.tif 000009
【図８】
2012253530.tif 000010
【図９】
2012253530.tif 000011
【図１０】
2012253530.tif 000012
【図１１】
2012253530.tif 000013
【図１２】
2012253530.tif 000014
【図１３】
2012253530.tif 000015
【図１４】
2012253530.tif 000016
【図１５】
2012253530.tif 000017