説明

ネットワークシステムにおけるフレーム配送経路の選択方法

【課題】スイッチ間の接続や、スイッチ自体に障害が発生した場合に、スイッチは、障害箇所を回避するフレーム送信経路に切り替え、データ送受信の経路を、往復で同一の経路とする。
【解決手段】スイッチ1dの障害箇所回避制御機構134は、接続する対向のスイッチに対して、所定時間毎に検知フレーム14の送信及び受信を実施し、所定時間以上の検知フレーム14の未受信、またはポートのリンクダウンによって障害を検知した契機にて、所定ポートを介して障害通知フレーム16を送信し、スイッチ1b及び1cは、障害通知フレーム16を受信した契機にて、所定時間内で、障害通知フレーム16を受信したポート数をカウントし、当該ポート数が、しきい値よりも小さい場合、障害通知フレーム16を受信したポートを、フレームを送信するポートから除外する。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書で開示される主題は、ネットワークシステムにおいて、スイッチやルータなどのデータ配送装置、またはそれらの接続に障害が発生した場合の、経路の選択に関する。
【背景技術】
【0002】
従来、ネットワークのトポロジのひとつとして、Fat Treeと呼ばれる構成が知られている。このFat Tree構成では、マルチパスと呼ばれる技術を適用することができる。このマルチパスによれば、例えばデータを送信する際に複数の経路(パス)を同時に利用することができ、これによりネットワーク内の負荷を分散させることができる。
【0003】
さらに、このマルチパスの技術と、複数のパスのうちの最短経路を計算して選択する技術とを組み合わせて、複数の最短経路を同時に利用する技術が知られている。
【0004】
ところで、マルチパスにおいて、データの送信経路が複数存在する場合、複数の利用可能なパスの中から、往復で同一の経路を通るように、実際に利用するパスを適切に決定する必要がある。
【0005】
図1は、特許文献1に記載されているような、2段のFat Tree構成を適用したネットワークシステムの構成例を示した図である。
【0006】
例えば、図1に示すように、エンドノード2Aからエンドノード2Cへ、下段スイッチ1a、1b、1c及び上段スイッチ1d、1e、1fを含んで構成されるネットワークシステムを介した往復通信経路において、往路(図1に示す実線矢印)は上段スイッチ1eが選択され、復路(図1に示す点線矢印)は上段スイッチ1fが選択された場合、上段スイッチ1e及び上段スイッチ1fにおいて、データ送信の都度、フラッディングが発生し、ネットワークパフォーマンスが低下する可能性がある。
【0007】
フラッディングとは、スイッチがデータを受信し、当該スイッチにおいて当該データの宛先が未登録である場合、当該スイッチは、当該データを、複数のポートから、送信する現象のことを言う。
【0008】
この課題に対して、例えば、特許文献1は、Fat Tree構成において、同一階層のスイッチは同一のハッシュ関数を備え、下段のスイッチから上段のスイッチへのデータの送信経路を、宛先のMACアドレス(Destination MAC Address:DA)を元にハッシュ計算を行い決定する技術を開示する。
【0009】
その際、送信元のMACアドレス(Source MAC address:SA)を元にハッシュ計算を実施し、学習用のデータを生成し、前記送信元MACアドレスから算出した計算結果が示す上段スイッチに対して送信する。
【0010】
上段スイッチは、これにより、データの送信元アドレスの学習を行う。すなわち、下段スイッチは、自スイッチにデータを送信してくる上段スイッチを、ハッシュ関数によってひとつに絞り込むことができる。
【0011】
特許文献2に記載の技術によれば、下段スイッチから上段スイッチへのデータの送信経路を、あらかじめ通常利用する運用ポートと、障害が発生した際に利用する予備ポートとに分けておいて、下段スイッチと上段スイッチとを接続するリンクで障害が発生した場合、運用ポートから予備ポートへと、データの送信経路を切り替える。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】米国特許出願公開第2010/0316053号明細書(段落0034〜0036)
【特許文献2】特開2007−27954号(段落0031、0033)
【発明の概要】
【発明が解決しようとする課題】
【0013】
特許文献1に記載の技術では、例えば下段スイッチと上段スイッチとを接続する経路のひとつにおいて障害が発生した場合に関して言及していない。仮に、障害が発生した際、障害箇所と接続する下段スイッチにおいて、データを送信する経路を決定するため、ハッシュ計算を新たに実施した場合、前記障害箇所と接続する下段スイッチと、障害箇所と接続していない下段スイッチとで、経路選択の計算結果が異なってしまう。従って、下段スイッチは、自スイッチにデータを送信してくる上段スイッチを特定することができなくなり、往復の経路でデータがロスする可能性や、フラッディングが多発し、ネットワークパフォーマンスが低下する可能性がある。
【0014】
特許文献2に記載の技術では、構成が限定されており、宛先エンドノードへの接続は、リピーターでなければならない。さらに、この構成はマルチパスではないため、ネットワークのリソースを無駄にしている。
【課題を解決するための手段】
【0015】
本明細書では、例えば、1対多に接続されたスイッチなどの装置間にLAG(Link Agreegation)を構成し、データの送信負荷を分散するような、マルチパスを利用したネットワーク環境において、障害が発生した場合においてもフラッディングが多発することを防ぎ、ネットワークの利用効率を向上させる、ネットワークスイッチにおけるデータ配送経路の選択方法、および、その方法を適用したシステムが開示される。
【0016】
本明細書で、開示されるのは、例えば、複数の上段スイッチと複数の下段スイッチとが、多対多に接続されるネットワークシステムにおける、フレーム配送経路の選択方法であって、
当該フレーム配送経路の選択方法は、
上段スイッチ及び下段スイッチの各々は、障害発生監視用の検知フレームを、繰り返し、自スイッチに接続されている接続相手スイッチに対して送信し、
接続相手スイッチである上段スイッチ及び下段スイッチは、検知フレームを、あるポートにて所定の時間を経過しても受信しない場合、もしくは、あるポートがリンクダウン状態であると検知した場合、ポートを障害発生ポートと同定し、
上段スイッチ及び下段スイッチは、障害発生ポートから、障害発生を通知する障害フレームを送信し、
上段スイッチ及び下段スイッチは、障害フレームを受信した場合、障害フレームを受信したポートを、障害発生ポートと同定し、
上段スイッチは、障害発生ポートの存在を認識した場合、障害発生ポート以外のポートから、下段スイッチに対して、障害発生を通知する障害通知フレームを送信し、
下段スイッチは、障害発生ポートを、フレームを送信するポートから除外し、
下段スイッチは、障害通知フレームを受信した場合、障害通知フレームの受信から一定時間内に、障害通知フレームを受信したポート数をカウントし、
下段スイッチは、障害通知フレームを受信したポート数と、あらかじめ設定したしきい値と、を比較し、
下段スイッチは、障害通知フレームを受信したポート数が、しきい値よりも小さい場合、障害通知フレームを受信したポートを、フレームを送信するポートから除外することを特徴とするものである。
【0017】
なお、上記フレーム配送経路の選択方法におけるしきい値は、各々のスイッチが備える設定ファイルにより、値を変更可能であってもよい。
【0018】
また、上段スイッチ及び下段スイッチが判断する、検知フレームを受信しない所定の時間とは、リンク速度または、検知フレームを対向のスイッチと送信する間隔に依存するものであってもよい。
【0019】
また、ネットワークシステムは、さらに、管理サーバを備え、上段スイッチ及び下段スイッチは、障害発生ポートの検知を契機に、または、障害フレームの受信を契機に、または、障害通知フレームの受信を契機に、管理サーバへ、当該スイッチの状態を通知するように、構成しても良い。
【0020】
また、下段スイッチが、上記方法により、いずれかのポートを、フレームを送信するポートから除外した後に、上段スイッチ及び下段スイッチは、除外した障害発生ポートにて、検知フレームを受信した場合、もしくは、除外した障害発生ポートがリンクアップ状態である場合、除外した障害発生ポートを復旧ポートと同定し、上段スイッチ及び下段スイッチは、接続相手スイッチに障害発生ポートの復旧を通知し、下段スイッチは、復旧ポートと復旧を通知されたポートとを、フレームを送信するポートに追加するように、構成しても良い。
【0021】
なお、障害発生ポートの復旧を通知する処理として、上段スイッチは、復旧ポートから送信していた障害フレームと、復旧ポート以外のポートから送信していた障害通知フレームと、の送信を停止するか、または、復旧フレームを送信し、下段スイッチは、復旧ポートから送信していた障害フレームの送信を停止するように、構成しても良い。
【0022】
また、上段スイッチ及び下段スイッチは、復旧ポートの検知を契機に、または、障害発生ポートの復旧を通知されたことを契機に、管理サーバへ、当該スイッチの状態を通知するように、構成しても良い。
【0023】
また、下段スイッチは、復旧フレームの受信を契機に、管理サーバへ、当該スイッチの状態を通知するように、構成しても良い。
【0024】
なお、以下の説明の対象とするのは、OSI参照モデルのデータリンク層における通信であるため、リンクを流れるデータを、フレームと記載する。しかしながら、開示内容の適用対象は、データリンク層における通信に限定されるものではなく、他のレイヤ、例えばネットワーク層であってもよい。その場合、フレームはパケットと表記される。
【0025】
上記態様によれば、マルチパスにより、ネットワークリソースを効率的に活用することができる。また、各スイッチが自律的に障害箇所を判定し、経路を切り替えるので、高速に自動復旧することが可能になる。また、障害が発生した際においても、データ送受信の経路を往復で同一のリンクにすることが可能になるため、フレームのロストを防ぐことができる。また、データ送受信の経路を往復で同一のリンクにすることが可能になることにより、フラッディングの多発を抑え、ネットワークパフォーマンスを向上させ、さらに、トラフィックの混雑による、フレームのロストを防ぐことができる。
【発明の効果】
【0026】
開示によれば、マルチパスを利用したネットワークシステムにおいて、障害が発生しても、フラッディングの多発を防ぎ、ネットワークの利用効率向上が可能になる。
【図面の簡単な説明】
【0027】
【図1】開示内容の適用範囲である、ネットワークシステムの構成を例示する図である。
【図2】第1の実施形態1及び第2の実施形態及び第3の実施形態に関するスイッチを示す構成図である。
【図3】第1の実施形態に関するネットワークシステムを示す構成図である。
【図4】第1の実施形態に関するエンドノードのMACアドレスの対応を示した図である。
【図5】第1の実施形態に関するスイッチが保持する経路テーブルを示した図である。
【図6】第1の実施形態に関するスイッチがフレーム送信経路を制御する処理を示したフローチャートである。
【図7】第1の実施形態に関するスイッチがフレーム送信経路を制御する処理を示したフローチャートである。
【図8】第1の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図9】第1の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図10】第1の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図11】第1の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図12】第1の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図13】第1の実施形態に関するスイッチ間の処理のやりとりを示したフローチャートである。
【図14】第2の実施形態に関するネットワークシステムを示す構成図である。
【図15】第3の実施形態に関するネットワークシステムと管理サーバ3を示す構成図である。
【発明を実施するための形態】
【0028】
以下、特にネットワーク障害が発生した場合を想定した、フレーム配送経路の選択方法の実施形態を、図面を用いて詳細に説明する。
【0029】
図2は、スイッチ1の内部構成を示した図である。本実施例に係るスイッチ1は、ポートP1〜Pn間でフレームの送信を行うスイッチLSI11と、スイッチング1全体の動作を制御するCPU12と、CPU12が実行するソフトウェアやデータを格納したメモリ13とを備える。
【0030】
本実施例で説明するソフトウェアやデータは、あらかじめメモリ13に格納しておいてもよいし、外部記憶媒体またはネットワーク経由で導入してもよい。また、該当プログラムにより実現される機能を、専用のハードウェアにより実現してもよい。また、スイッチLSI11が実行する処理は、メモリに格納されており、プログラム実行により実現されるものであってもよい。
【0031】
スイッチ1のポートPnの数は、スイッチの実装によって異なるもので、数が決まっているものではない。
【0032】
本実施例が開示するフレームは、例えば、IEEE802.3にて規定されたイーサネット(登録商標)規格に準拠したフレームである。ただし、イーサネットに限定されるものではない。
【0033】
スイッチLSI11は、フレームの中に格納されるDAやSAに基づき基本的なフレームの中継処理を行う。
【0034】
例えば、スイッチ1が受信したフレームに格納されるDAを参照し、そのDAがメモリ13に格納されている経路テーブル131に存在すれば、その該当する経路テーブル131のポートからフレームを送信し、DAが経路テーブルに存在しなければ、他の全てのポートからフレームを送信する。
【0035】
CPU12は、メモリ13に格納されるソフトウェアが実行する等、スイッチ1に関わる全体の処理を実行する。
【0036】
メモリ13には、OS130と、経路テーブル131と、以下に示す処理部を実現するプログラムと、が格納されている。
【0037】
OS130は、各処理部の処理対象のデータの管理や各処理部の処理を制御する。
【0038】
経路テーブル131は、宛先のアドレス(例えばMACアドレスやIPアドレス)に基づいた、フレームの送信先ポート情報等が記録される。
【0039】
アドレス学習部132は、受信したフレームに格納されるSAが経路テーブル131に登録されていない場合、受信したポートに対応するSAを登録する。
【0040】
拡張LAGポート決定部133は、後述する拡張LAGに設定されたポートの中で、実際にフレームを送信するポートを決定する。
【0041】
障害箇所回避制御部134は、本実施例におけるフレームの配送経路の選択を実施する、次の制御部を備える。
【0042】
送信部135は、前述したスイッチLSI11による基本的なフレームの中継以外のフレームの送信を行う。
【0043】
受信部136は、受信したフレームを監視する。
【0044】
検知部137は、障害ポートの検知や、復旧ポートの検知を実施する。
【0045】
障害箇所回避処理部138は、障害経路回避のための処理を実施する。
【0046】
復旧部139は、障害から復旧した場合、復旧に関する処理を実施する。
【0047】
CPU12は、メモリ13に格納されたプログラムを実行することにより、上記各処理部を実現する。
【0048】
以降図3〜図13を用いて、第一の実施形態を説明する。
【0049】
図3は、第一の実施形態を表すための構成図である。
【0050】
本実施形態では、開示するネットワークシステム0を、2段に分けたスイッチ1a〜1fまでの6台のスイッチで構成する。具体的には、スイッチ1aとスイッチ1bとスイッチ1cとを、エンドノード(サーバやストレージ等)の通信を上段スイッチへ送信する下段スイッチ(以下、Top of Rack(ToR)スイッチという)とし、スイッチ1dとスイッチ1eとスイッチ1fとを、ToRスイッチからの通信を中継する上段スイッチ(以下、アグリゲーションスイッチという)とする。ただし、スイッチ間は、それぞれ図示した以外のポートを接続しても良い。たとえば、ToRスイッチ1aポートP1と、アグリゲーションスイッチ1dのポートP2とを接続してもよい。
【0051】
ToRスイッチ1とアグリゲーションスイッチ1の間は、メッシュ(多対多)接続で構成されている。つまり、一つのアグリゲーションスイッチ1は、基本的に、全てのToRスイッチ1と接続されていることが前提となる。
【0052】
そして、アグリゲーションスイッチ1同士またはToRスイッチ1同士での接続はない。
【0053】
スイッチの数は、スイッチのポートの数(Pnの数)によって上限がある。アグリゲーションスイッチ1は全てのToRスイッチ1と接続されているという条件を満たしていれば、ToRスイッチ1の数は最大Pnの数となる。
【0054】
そして、全てのToRスイッチ1間通信は、マルチパスとなる。
【0055】
ただし、ネットワークシステム0を構成するスイッチは、必ずしも、ToRスイッチと、アグリゲーションスイッチと呼ばれるスイッチでなくてもよい。ここで記述した、2段のスイッチを含む構成に当てはまれば、開示内容を適用可能なネットワークシステムとみなすことが可能である。
【0056】
本実施形態では、エンドノード2から、ネットワークシステム0に属す、ToRスイッチ1に接続しているが、図3に示す、ToRスイッチ1とアグリゲーションスイッチ1のように、スイッチの構成が本実施形態の条件に適用していれば、エンドノード2とToRスイッチ1の間にスイッチやリピーターが存在していてもよい。
【0057】
また、本実施形態では、単一のToRスイッチ1から、全てのアグリゲーションスイッチ1に接続するリンクが、拡張Link Aggregation(拡張LAG)として構成されている。そして、拡張LAGは、全てのToRスイッチで構成されている。
【0058】
拡張LAGとは、本明細書で定義するものである。IEEE802.3adにて規定されているLAGは、通常、同一スイッチ間で、複数のリンクを仮想的にひとつのリンクとして束ねるものである。それに対し、拡張LAGとは、複数の異なるスイッチに接続されている複数のリンクをひとつのリンクと見なすものを指す。
【0059】
なお、この構成において、ToRスイッチ1の拡張LAGにて構成されるポートと、当該ポートと接続するアグリゲーションスイッチ1のポートを、以下、本実施形態におけるメンバポートと記載する。
【0060】
エンドノード2A〜2FのネットワークインターフェースにあたえられたMACアドレスは、図4のとおりとする。なお、図3のネットワークシステムの装置構成数(合計6台)や装置間の接続数(合計9本)は、あくまで一例であり、この構成に限定されず、様々な数の装置や接続を用いてもよい。
【0061】
例えば、図3を用いて、エンドノード2Aとエンドノード2C間で通信を行う際の挙動を説明する。
【0062】
エンドノード2Aがエンドノード2Cにフレームを送信する際、エンドノード2Aから送信されたフレームのDAにはエンドノード2CのMACアドレスが格納される。
【0063】
ToRスイッチ1aは、エンドノード2Aから送信されたフレームをポートP4から受信する。
【0064】
ToRスイッチ1aは、自身の経路テーブル131を参照し、DAが登録されていなければ、P1〜P3で構成されている拡張LAGと、P5からフレームを送信する。
【0065】
そして、アドレス学習部132は、フレームのSAを参照し、自身の経路テーブル131に登録されていなければ、フレームを受信したポートP4に対応するSAとして登録する。このときのToRスイッチ1aの経路テーブル131を、図5(a)に示す。
【0066】
エンドノード2Dは、ToRスイッチ1aのP5から受信したフレームのDAを参照し、自装置宛てのフレームではないと判断し、フレームを破棄する。
【0067】
拡張LAGに対してフレームを送信する場合は、拡張LAGポート決定部133が、拡張LAGとして構成されるポートの中で、実際にフレームを送信するポートをハッシュ計算により算出する。
【0068】
例えば、拡張LAGポート決定部133は、DAとSAのMACアドレスの値を元に、ハッシュ関数を利用し、ハッシュ値を計算し、ハッシュ値に対応する拡張LAGとして構成されるポートの中の、フレーム送信ポートを決定する。
【0069】
ハッシュ値の計算では、例えば、SAとDAのアドレス値の特定の区間を用い、排他論理和を算出する。従って、DAとSAの組み合わせが同一であれば、往復の通信でDAとSAの値が入れ替わっても、ハッシュ計算で算出される値は変わらない。そして、計算により算出されたハッシュ値を用い、所定のルールに基づき、拡張LAGを構成するポートの中から、フレーム送信ポートを選択する。
【0070】
なお、全てのToRスイッチにおいて、ハッシュ関数と、ハッシュ値からフレーム送信ポートを決定する前記所定のルールとは、同一であるものとする。
【0071】
ハッシュ計算を行う対象はMACアドレスではなくIPアドレスであってもよいし、DAまたはSAの一方をハッシュ計算に用いてもよい。
【0072】
こうすることによって、拡張LAGの中からフレームを送信するポートを一つに決定する。ここでは、フレームに格納されているDA(エンドノード2CのMACアドレス:2c-00-00-00-00-00)とSA(エンドノード2AのMACアドレス2a-00-00-00-00-00)でハッシュ計算を実施した結果、フレームを送信するポートがToRスイッチ1aのポートP1になったとする。
【0073】
ToRスイッチ1aはフレームをポートP1から送信し、アグリゲーションスイッチ1dはポートP1からフレームを受信する。
【0074】
アグリゲーションスイッチ1dは、自身の経路テーブル131を参照し、DAが登録されていなければ、P2及びP3からフレームを送信する。
【0075】
そして、アドレス学習部132は、フレームのSAを参照し、自身の経路テーブル131に登録されていなければ、フレームを受信したポートP1に対応するSAとして登録する。このときのアグリゲーションスイッチ1dの経路テーブル131を図5(b)に示す。
【0076】
ToRスイッチ1bは、ポートP1にてフレームを受け取り、DAが自身の経路テーブル131に登録されていないので、ポートP4及びポートP5からフレームを送信する。このとき、アドレス学習部132は、ToRスイッチ1bのポートP1〜P3が拡張LAGに設定されているため、ポートP1から受け取ったフレームを、ポートP2またはポートP3に送信するということはない。
【0077】
ToRスイッチ1bからフレームを受信したエンドノード2Bおよびエンドノード2Eは、受信したフレームが自装置宛てのフレームではないため、フレームを破棄する。
【0078】
ToRスイッチ1cは、ポートP1から、フレームを受信する。ToRスイッチ1cは、自身の経路テーブル131を参照し、DAが登録されていなければ、ポートP4及びポートP5からフレームを送信する。
【0079】
そして、フレームのSAを参照し、自身の経路テーブル131に登録されていなければ、フレームを受信した拡張LAGに対応するSAとして登録する。このときのToRスイッチ1cの経路テーブル131を図5(c)に示す。
【0080】
ToRスイッチ1cからフレームを受信したエンドノード2Fは、受信したフレームが自装置宛てのフレームではないため、フレームを破棄する。
【0081】
一方、ToRスイッチ1cからフレームを受信したエンドノード2Cは、フレームに格納されるDAを参照し、自装置宛てのフレームであることを理解する。
【0082】
このようにして、エンドノード2Aからエンドノード2Cにフレームが到達する。
【0083】
次に、エンドノード2Cからエンドノード2Aに対してフレームを送信する際の挙動を説明する。
【0084】
エンドノード2Cから送信されたフレームのDAには、エンドノード2AのMACアドレスが格納される。
【0085】
ToRスイッチ1cは、エンドノード2Cから送信されたフレームを、ポートP4から受信する。
【0086】
ToRスイッチ1cは、自身の経路テーブル131を参照し、フレームに格納されているDAが登録されているか否かを確認する。
【0087】
前述したエンドノード2Aからエンドノード2Cへのフレーム送信によって、経路テーブル131には、フレームに格納されているDAが登録されているため、当該DAに対応する拡張LAGに対してフレームを送信する。
【0088】
そして、フレームのSAを参照し、自身の経路テーブル131に登録されていなければ、フレームを受信したポートP4に対応するSAとして登録する。このときのToRスイッチ1cの経路テーブル131を図5(d)に示す。
【0089】
ToRスイッチ1cは、拡張LAGに対してフレームを送信するため、SAとDAを元にハッシュ関数を用いハッシュ値を算出する。
【0090】
このとき、フレームに格納されているDA(エンドノード2AのMACアドレス:2a-00-00-00-00-00)とSA(エンドノード2CのMACアドレス:2c-00-00-00-00-00)の組み合わせは、前述したエンドノード2Aからエンドノード2Cへフレームを送信したときのものと同一であり、前述したように、ToRスイッチ1aとToRスイッチ1cにおいては、同一のハッシュ関数を用い、同一のルールで、フレーム送信ポートを決定しているため、ToRスイッチ1aで算出したハッシュ値と、今回ToRスイッチ1cで算出するハッシュ値は同一のものとなる。
【0091】
従って、フレームを送信するポートは、ToRスイッチ1cのポートP1になる。
【0092】
ToRスイッチ1cはフレームをポートP1から送信し、アグリゲーションスイッチ1dはポートP3からフレームを受信する。
【0093】
アグリゲーションスイッチ1dは、自身の経路テーブル131を参照し、フレームに格納されているDAが登録されているか否かを確認する。
【0094】
このとき、前述したエンドノード2Aからエンドノード2Cへのフレーム送信によって、経路テーブル131には、フレームに格納されているDAが登録されているため、当該DAに対応するP1に対してフレームを送信する。
【0095】
そして、フレームのSAを参照し、自身の経路テーブル131に登録されていなければ、フレームを受信したポートP3に対応するSAとして登録する。このときのアグリゲーションスイッチ1dの経路テーブル131を図5(e)に示す。
【0096】
ToRスイッチ1aはポートP1からフレームを受信する。ToRスイッチ1aは、自身の経路テーブル131を参照し、フレームに格納されているDAが登録されているか否かを確認する。
【0097】
前述したエンドノード2Aからエンドノード2Cへのフレーム送信によって、経路テーブル131には、フレームに格納されているDAが登録されているため、当該DAに対応するP4に対してフレームを送信する。
【0098】
そして、フレームのSAを参照し、自身の経路テーブル131に登録されていなければ、フレームを受信したポートLAFG1に対応するSAとして登録する。このときのToRスイッチ1aの経路テーブル131を図5(f)に示す。
【0099】
エンドノード2Aは、ToRスイッチ1aからフレームを受信し、DAを参照し自装置宛てのフレームであることを理解する。
【0100】
このようにして、エンドノード2Cからエンドノード2Aにフレームが到達する。
【0101】
本実施形態では、ToRスイッチ1からアグリゲーションスイッチへフレームを送信するポートの決定を、フレームに格納されるSAやDAを用いハッシュ計算を行い実施する。そのため、SAやDAの値が異なると、ハッシュ計算の結果が異なる。
【0102】
例えば、エンドノード2Aと同一のToRスイッチ1aに接続されるエンドノード2Dから、エンドノード2Cと同一のToRスイッチ1cに接続されるエンドノード2F間の通信は、必ずしもアグリゲーションスイッチ1dを経由するというわけではなく、エンドノード2DのMACアドレスとエンドノード2FのMACアドレスを用いてハッシュ計算を行った結果、算出されたハッシュ値によって決定される。
【0103】
ここでは、エンドノード2DのMACアドレスとSAエンドノード2FのMACアドレスでハッシュ計算を実施した結果、フレームを送信するポートがToRスイッチ1のポートP2になったとする。そのため、エンドノード2Dとエンドノード2F間の通信は、アグリゲーションスイッチ1eを経由して実施されることになる。
【0104】
次に、本構成において、障害が発生した場合の処理を説明する。
はじめに、アグリゲーションスイッチ1及びToRスイッチ1に格納される、障害の検知及び経路制御を実施する部位の処理に関して説明する。
【0105】
図6は、アグリゲーションスイッチ1の処理を表した図である。
【0106】
アグリゲーションスイッチ1の送信部135は、検知フレーム14を、対向のToRスイッチ1に対して、送信する(ステップ601)。
【0107】
検知フレーム14とは、障害を検知するために、繰り返し、例えば所定間隔毎に、アグリゲーションスイッチ1とToRスイッチ1の間で送信し合うフレームで、検知フレーム14であることが分かるような特別な領域を持つフレームであっても、通常のフレームであってもよい。検知フレーム14が通常のフレームである場合、フレームを検知フレーム14として識別するために、例えば、宛先アドレスを検知フレーム14として識別するための特定アドレスとすればよい。検知フレーム14として識別するという目的を達成するものであれば、フレームフォーマットは問わない。
【0108】
ここで、アグリゲーションスイッチ1における検知フレーム14を送信するポートとは、ToRスイッチ1の拡張LAGが構成されているポートに接続されるポート、つまり、アグリゲーションスイッチ1のメンバポートである。
【0109】
次に、アグリゲーションスイッチ1の受信部136は、メンバポートの各々において検知フレーム14の受信を監視し(ステップ602)、検知部137は、検知フレーム14を受信しているか否か及びリンクアップ状態になっているか否かを判断する(ステップ603)。当該ポートでは、検知フレーム14を受信していない場合、もしくは、ポートがリンクアップ状態でない場合、つまり、リンクダウン状態になっている場合、当該ポートと接続するリンクのどこかにおいて障害が発生していることを検知できるため、当該ポートを障害発生ポートと同定し、経路制御処理1の処理を実行する(ステップ604)。
【0110】
なお、リンクアップ状態とは、スイッチ1のあるポートPnにおいて、相手装置のケーブルで接続されているポートと、通信可能となっている状態を示し、リンクダウン状態とは、同様にスイッチ1のあるポートPnにおいて、相手装置とケーブルで接続されている、接続されていないに関わらず、通信不可となっている状態を示す。
【0111】
経路制御処理その1の処理内容を説明する。
【0112】
アグリゲーションスイッチ1の送信部135は、障害フレーム15を送信する(ステップ6041)。
【0113】
障害フレーム15とは、障害発生ポートから、障害を検知した後、障害を検知したリンクに対して送信するもので、検知フレーム14と同様に、障害フレーム15であることが分かるような特別な領域を持つフレームであっても、通常のフレームであってもよい。例えば、宛先アドレスを障害フレーム15として識別するための特定値とすればよい。
【0114】
さらに、送信部135は、障害通知フレーム16を送信する(ステップ6042)。
【0115】
障害通知フレーム16とは、障害を検知した後、障害を検知したリンク以外のリンクに対して送信するもので、対向のスイッチに対して障害を通知するためのフレームであり、検知フレーム14と同様に、障害通知フレーム16であることが分かるような特別な領域を持つフレームであっても、通常のフレームであってもよい。例えば、宛先アドレスを障害通知フレーム16として識別するための特定値とすればよい。
【0116】
次に、障害箇所回避処理部138は、障害を検知した当該アグリゲーションスイッチ1の経路テーブル131の、障害を検知したリンクに接続するポートの経路を、消去する(ステップ6403)。こうすることによって、障害が発生した以降、障害が発生したリンクへフレームを送信することを防ぐ。
【0117】
そして、障害箇所回避処理部138は、障害フラグを立てる(ステップ6404)。障害フラグとは、2以上の状態変化をもつ識別子であればよい。例えば、コンピュータプログラミング処理において、初期値が0の障害フラグ変数を作成する。そして、障害フラグ変数に0以外の特定の値(例えば1)を代入する。この状態を障害フラグが立っている状態と定義する。この例では、障害フラグを、障害フラグ変数を用いた例として説明したが、障害フラグは、変数でなくても、2以上の状態変化をもつ識別子であればよい。
【0118】
経路制御処理その1の処理を終了した場合、再度、ステップ601からの処理を実行する。
【0119】
検知部137は、検知フレーム14を受信しているか否か、もしくはリンクアップ状態であるか否かを判断し(ステップ603)、検知フレーム14を受信している場合、もしくはリンクアップ状態である場合、障害フラグの確認処理に移動する(ステップ605)。障害フラグの確認処理とは、障害フラグが立っているか否かを確認する処理のことである。
【0120】
障害フラグが立っていると判断した場合、復旧処理を実施する(ステップ606)。
【0121】
復旧処理の処理内容を説明する。アグリゲーションスイッチ1の復旧部139は、各種初期化を実施する(ステップ6061)。各種初期化とは、例えば、障害フラグを初期状態に戻す処理や、経路制御処理その1の処理に移る際の条件をクリアすることである。
【0122】
アグリゲーションスイッチ1は、障害フラグの確認処理で(ステップ605)、障害フラグが立っていないと判断した場合、受信部136は、障害フレーム15の受信を監視し(ステップ607)、検知部137は、障害フレーム15を受信しているか否かを判断する(ステップ608)。
【0123】
障害フレーム15を受信している場合、当該ポートを障害発生ポートと同定し、経路制御処理その1の処理を実行し(ステップ604)、障害フレーム15を受信していない場合、障害フラグの確認処理に移動し(ステップ609)、障害フラグが立っていると判断した場合、復旧処理を実施する(ステップ606)。
【0124】
そして、再度、ステップ601からの処理を実行する。障害フラグの確認処理を実施し(ステップ609)、障害フラグが立っていないと判断した場合は、そのまま、ステップ601からの処理を実行する。
【0125】
ステップ603における検知フレーム14を受信していないと判断する基準は、本実装形態における、ステップ601からの繰り返される処理の中で、1回でもフレームを受信できなかった場合としても良いし、あらかじめ設定したしきい値以上の回数においてフレームを受信できなかった場合としてもよいし、あらかじめ設定したしきい値以上の回数において、連続してフレームを受信できなかった場合としてもよい。ステップ608における障害フレーム15を受信したと判断する基準も、これと同様である。
【0126】
図7は、ToRスイッチ1に格納されるプログラムの処理を表した図である。
【0127】
ToRスイッチ1の送信部135は、検知フレーム14を、対向のToRスイッチ1に対して、送信する(ステップ701)。
【0128】
ここで、ToRスイッチ1における検知フレーム14を送信するポートとは、拡張LAGが構成されているポート、つまり、ToRスイッチ1のメンバポートである。
【0129】
次に、ToRスイッチ1の受信部136は、メンバポートにて検知フレーム14の受信を監視し(ステップ702)、検知部137は、検知フレーム14を受信しているか否か、もしくは、ポートがリンクアップ状態であるか否かを判断し(ステップ703)、検知フレーム14を受信していなかった場合、もしくは、リンクダウン状態である場合、当該ポートを障害発生ポートと同定し、経路制御処理1の処理を実行する(ステップ704)。
【0130】
経路制御処理その1の処理内容を説明する。
【0131】
ToRスイッチ1の障害箇所回避処理部139は、フレーム送信経路を切り替える(ステップ7041)。つまり、障害を検知したポートを、LAG拡張を構成するポートから除外する、すなわち、フレームを送信する経路から除外する。
【0132】
このとき、ToRスイッチ1では、LAG拡張を構成するポートがひとつ減ったことにより、前述した所定のルールに基づき、フレーム送信ポートを新たに選択する。
【0133】
次に、送信部135は、障害フレーム15を送信する(ステップ7042)。
【0134】
そして、障害箇所回避処理部138は、障害フラグを立てる(ステップ7403)。経路制御処理その1の処理を終了した場合、再度、ステップ701からの処理を実行する。
【0135】
検知部137は、検知フレーム14を受信しているか否か、もしくはリンクアップ状態であるか否かを判断し(ステップ703)、検知フレーム14を受信している場合、もしくは、リンクアップ状態である場合、障害フラグの確認処理に移動する(ステップ705)。障害フラグの確認処理とは、障害フラグが立っているか否かを確認する処理のことである。
【0136】
障害フラグが立っていると判断した場合、復旧処理を実施する(ステップ706)。
【0137】
復旧処理の処理内容を説明する。
【0138】
ToRスイッチ1の復旧部139は、フレーム送信経路を切り替える(7061)。つまり、経路制御処理その1もしくは経路制御処理その2にて、LAG拡張から除外した、障害を検知したポートを、LAG拡張に加える。
【0139】
そして、各種初期化を実施する(ステップ7062)。各種初期化とは、例えば、障害フラグを初期状態に戻す処理や、経路制御処理その1または経路制御処理その2の処理に移る際の条件をクリアすることである。
【0140】
ToRスイッチ1の検知部137は、障害フラグの確認処理で(ステップ705)、障害フラグが立っていないと判断した場合、受信部136は、障害フレーム15の受信を監視し(ステップ707)、障害フレーム15を受信しているか否かを判断する(ステップ708)。
【0141】
障害フレーム15を受信している場合、当該ポートを障害発生ポートと同定し、経路制御処理その1の処理を実行し(ステップ704)、障害フレーム15を受信していない場合、障害フラグの確認処理に移動し(ステップ709)、障害フラグが立っていると判断した場合、復旧処理を実施する(ステップ706)。
【0142】
そして、再度、ステップ701からの処理を実行する。
【0143】
検知部137は、障害フレーム15を受信しているか否かを判断し(ステップ708)、障害フレーム15を受信していない場合、障害フラグの確認処理に移動する(ステップ709)。
【0144】
障害フラグが立っていると判断した場合、復旧処理を実施する(ステップ706)。
【0145】
ToRスイッチ1の検知部137は、障害フラグの確認処理で(ステップ709)、障害フラグが立っていないと判断した場合、受信部136は、障害検知フレーム16の受信を監視し(ステップ710)、障害検知フレーム16を受信しているか否かを判断する(ステップ711)。障害通知フレーム16を受信している場合、経路制御処理その2の処理を実行する(ステップ712)。
【0146】
経路制御処理その2の処理内容を説明する。
【0147】
ToRスイッチ1の障害箇所回避処理部138は、障害発生箇所を推定するため、所定時間待機する(ステップ7121)。
【0148】
そして、所定時間待機している間に、障害通知フレームを受信したポート数をカウントし、しきい値判断を行う(ステップ7122)。このとき、障害通知フレームを受信したポート数が、あらかじめ設定しておいたしきい値よりも小さい場合、障害箇所は、リンクであると仮定し、フレーム送信経路を切り替える(ステップ7123)、つまり、前記障害通知フレームを受信したポートを、拡張LAGを構成するポート、言いかえると、フレーム転送経路から除外する。
【0149】
このとき、ToRスイッチ1では、LAG拡張を構成するポートがひとつ減ったことにより、前述した所定のルールに基づき、フレーム送信ポートを新たに選択する。
【0150】
そして、障害フレーム15を送信する(ステップ7124)。障害通知フレームを受信したポート数が、あらかじめ設定しておいたしきい値よりも大きい場合、障害箇所は、他のToRスイッチであると仮定し、障害フレーム15を送信する(ステップ7124)。
【0151】
次に、障害箇所回避処理部138は、障害フラグを立てる(ステップ7125)。経路制御処理その2の処理を終了した場合、再度、ステップ701からの処理を実行する。
【0152】
検知部137は、障害フレーム15を受信しているか否かを判断し(ステップ711)、障害フレーム15を受信していない場合、障害フラグの確認処理に移動する(ステップ713)。
【0153】
障害フラグが立っていると判断した場合、復旧処理を実施する(ステップ706)。
そして、再度、ステップ701からの処理を実行する。障害フラグの確認処理を実施し(ステップ713)、障害フラグが立っていないと判断した場合は、そのまま、ステップ701からの処理を実行する。
【0154】
ステップ703における検知フレーム14を受信していないと判断する基準は、本実装形態における、ステップ701からの繰り返される処理の中で、1回でもフレームを受信できなかった場合としても良いし、あらかじめ設定したしきい値以上の回数においてフレームを受信できなかった場合としてもよいし、あらかじめ設定したしきい値以上の回数において、連続してフレームを受信できなかった場合としてもよい。ステップ708、7122における障害フレーム15、障害通知フレーム16を受信したと判断する基準も、これと同様である。
【0155】
このように、アグリゲーションスイッチ1やToRスイッチ1は、所定時間毎に処理を繰り返す。従って、検知フレーム14、障害フレーム15、障害通知フレーム16の受信失敗や送信失敗が発生したとしても、次回処理にて対応可能となる。
【0156】
次に、障害が発生した際の、アグリゲーションスイッチ1とToRスイッチ1のやりとりについて、図8〜図13を用いて説明する。ただし、図8〜図13の処理内容の詳細は、図6、図7に示したとおりである。
【0157】
図8は、ToRスイッチ1aとアグリゲーションスイッチ1dの間のリンクにおいて障害が発生した場合の処理を説明した図である。
【0158】
アグリゲーションスイッチ1dは、リンクダウン等によって、ToRスイッチ1aとの間のリンクで障害が発生したことを検知する(ステップ801)。
【0159】
アグリゲーションスイッチ1dは、障害通知フレーム16を、障害発生ポート以外のポートから、ToRスイッチ1に対して送信する。つまり、アグリゲーションスイッチ1dは、ToRスイッチ1bとToRスイッチ1cへ、障害通知フレーム16を送信する(ステップ802)。
【0160】
ToRスイッチ1bとToRスイッチ1cは、障害通知フレームを受信し(ステップ803)、障害が発生した箇所を推測するため所定時間待機し、障害通知フレーム16を受信したポート数をカウントする(ステップ804)。障害通知フレームを受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し(ステップ805)、当該ポート数が、当該しきい値よりも小さい場合、リンク障害が発生したものと仮定し、障害通知フレーム16を受信したポートを、拡張LAGから除外する(ステップ806)。
【0161】
このとき、ToRスイッチ1bとToRスイッチ1cでは、LAG拡張を構成するポートがひとつ減ったことにより、新たに、ハッシュ計算を実施し、前述した所定のルールに基づき、フレーム送信ポートを選択する。
【0162】
また、アグリゲーションスイッチ1dと同様に、ToRスイッチ1aも、アグリゲーションスイッチ1dとの間の接続状態がリンクダウンになったことを検知する(ステップ807)。ToRスイッチ1aは、リンクダウンを検知したポートを、拡張LAGから除外する(ステップ808)。
【0163】
このとき、ToRスイッチ1aでは、LAG拡張を構成するポートがひとつ減ったことにより、新たに、ハッシュ計算を実施し、前述した所定のルールに基づき、フレーム送信ポートを選択する。
【0164】
この場合、ToRスイッチ1aと、ToRスイッチ1bと、ToRスイッチ1cとでは、同一の障害発生ポートを除くLAG拡張を構成するポートと、同一のハッシュ関数と、同一の所定ルールとに基づき、LAG拡張内でフレームを転送するポートを決定するため、データ送受信の経路を、往復で同一のリンクにすることが可能になる。
【0165】
なお、同時に2箇所でリンク障害が発生した場合であっても、ステップ804に示すように、所定時間待機して障害通知フレーム16を受信したポート数でしきい値判断を実施することにより、リンク障害であるか図12に示すToRスイッチ障害であるのかを判断し、障害箇所に応じた経路制御処理を実施することが可能である。
【0166】
また、もし、リンク障害であるのにToRスイッチ障害であると判定されてしまう場合は、しきい値の値が不適切であるとして、しきい値を変更してもよい。しきい値は、設定ファイル等により変更することが可能とする。
【0167】
さらに、例えば1箇所でリンク障害が発生した場合、経路制御処理を実施するとともに、障害発生リンクと接続するポートを記憶しておくことで、後に、他の箇所でリンク障害が発生した場合においても、すでに記憶しているポートに加え、新たに障害が発生したリンクと接続するポートを、拡張LAGを構成するポートから除外することが可能になる。つまり、本実施形態は、複数の障害が発生しているリンクを、フレームを送信する経路から除外することで、複数のリンク障害に対しても、対応可能である。
【0168】
ここで、例えば、図3に示すように、エンドノード2Aからエンドノード2Cへの通信が、アグリゲーションスイッチ1dを介して行われ、ToRスイッチ1aとアグリゲーションスイッチ1dを接続するリンクにて障害が発生した場合、仮に、上述のステップ801〜806の処理を実施せず、障害が発生したリンクと直接接続するスイッチでしか経路制御の処理を実施しなかった場合(ステップ807及び808の処理のみを実施した場合)を説明する。
【0169】
このとき、エンドノード2Aからエンドノード2Cへの通信は、障害発生リンクと直接接続するToRスイッチ1aが、障害を検知し、ToRスイッチ1aからアグリゲーションスイッチ1に対するフレーム送信経路を切り替えることにより、新たな経路、例えば、アグリゲーションスイッチ1eを介して実施される。しかし、エンドノード2Cからエンドノード2Aへの通信においては、ToRスイッチ1cにて経路を変更しないため、フレームはアグリゲーション1dに転送されることになり、アグリゲーションスイッチ1dとToRスイッチ1a間のリンクでは障害が発生しているため、フレームは失われる。
【0170】
さらに、例えば、図3に示すように、ToRスイッチ1aとアグリゲーションスイッチ1dを接続するリンクにて障害が発生した後、エンドノード2Aとエンドノード2Cの通信が、新規に発生した場合、エンドノード2Aとエンドノード2C間で往復の経路が異なり、アグリゲーションスイッチ1にてフラッディングが発生する。
【0171】
これに対し、本実施例では、障害が発生した際においても、データ送受信の経路を往復で同一のリンクにすることが可能になるため、フレームのロストやフラッディングを防ぐことができる。
【0172】
図9は、ToRスイッチ1aとアグリゲーションスイッチ1dの間のリンクにおいて障害が発生し、その障害から復旧した場合の処理を説明した図である。
【0173】
アグリゲーションスイッチ1dは、リンクアップ等によって、ToRスイッチ1aとの間のリンクの障害から復旧したことを検知する(ステップ901)。
【0174】
アグリゲーションスイッチ1dは、ToRスイッチ1b及びToRスイッチ1cへ送信していた障害通知フレーム16の送信を停止する(ステップ902)。
【0175】
ToRスイッチ1b及びToRスイッチ1cは、アグリゲーションスイッチ1dから、所定時間以上障害通知フレーム16を受け取っていないことを検知する(ステップ903)。
【0176】
ToRスイッチ1b及びToRスイッチ1cは、障害通知フレーム16を受信しないことによって障害から復旧したとみなし、障害通知フレーム16を受け取っていたポートを、拡張LAGに追加する(ステップ904)。
【0177】
また、アグリゲーション1dと同様に、ToRスイッチ1aも、アグリゲーションスイッチ1dとの間の接続状態がリンクアップになったことを検知する(ステップ905)。ToRスイッチ1aは、リンクアップを検知したポートを、拡張LAGに追加する。
【0178】
なお、障害からの復旧処理については、ステップ902及びステップ903で示したように、アグリゲーションスイッチ1dが、障害通知フレーム16の送信を停止し、ToRスイッチ1が障害通知フレーム16を受信しないことにより、障害からの復旧を検知するのではなく、アグリゲーションスイッチ1dが、障害からの復旧を検知した場合、障害通知フレーム16を送信していたポートにて、障害通知フレーム16の送信を停止するのではなく、例えば、当該ポートにて、障害からの復旧を通知することを目的とする復旧フレームを送信し、ToRスイッチ1が復旧フレームを受信したことにより、障害からの復旧を検知する方式であってもよい。また、スイッチ1が、障害が発生したことを検知したポートに対して送信する障害フレーム15の送信の停止に関しても同様に、復旧フレームの送信によって、障害からの復旧を通知してもよい。
【0179】
図10は、ケーブルの中の上り下りの経路において、片方向の経路で、フレーム送受信が行えなくなった障害(以下、片系リンク障害と記す)においても、障害発生箇所を回避するための処理を説明した図である。
【0180】
全てのアグリゲーションスイッチ1と、全てのToRスイッチ1の、メンバポートから、対向のポートに対して、所定時間毎に検知フレーム14を送信する(ステップ1001)。
【0181】
さらに、全てのアグリゲーションスイッチ1と、全てのToRスイッチ1のメンバポートにおいて、所定時間毎に、検知フレーム14を受信しているか否かを確認する(ステップ1002)。この、ステップ1001及びステップ1002の処理は、所定時間毎に繰り返されている。この所定時間は変更可能で、当該所定時間を短くすれば、障害が発生してから障害を検知するまでの時間を、短くすることができるし、当該所定時間を長くすれば、障害が発生してから障害を検知するまでの時間が、長くなる。また、この時間は、リンク速度にも依存する。
【0182】
図11は、片系リンク障害が発生した場合の処理を説明した図である。
【0183】
アグリゲーションスイッチ1d及びToRスイッチ1aは、検知フレーム14を送信する(ステップ1101)。
【0184】
アグリゲーションスイッチ1dは、検知フレーム14を受信しないことを確認する(ステップ1102)。アグリゲーションスイッチ1dは、ToRスイッチ1aに対して、障害フレーム15を送信する(ステップ1103)。
【0185】
ToRスイッチ1aは、障害フレーム15を受信したことを確認する(ステップ1104)。ToRスイッチ1aは、障害フレーム15を受信したポートを、拡張LAGから除外する(ステップ1105)。
【0186】
また、アグリゲーションスイッチ1dは、障害通知フレーム16を、障害発生ポート以外のポートから、ToRスイッチ1に対して送信する。つまり、アグリゲーションスイッチ1dは、ToRスイッチ1b及びToRスイッチ1cに対して、障害通知フレーム16を送信する(ステップ1106)。
【0187】
ToRスイッチ1b及びToRスイッチ1cは、障害通知フレームを受信し(ステップ1107)、障害が発生した箇所を推測するため、所定時間待機し、障害通知フレーム16を受信したポート数をカウントする(ステップ1108)。障害通知フレーム16を受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し(ステップ1109)、当該ポート数が、当該しきい値よりも小さい場合、リンク障害が発生したものと仮定し、障害通知フレーム16を受信したポートを、拡張LAGから除外する(ステップ1110)。
【0188】
この場合、ToRスイッチ1aと、ToRスイッチ1bと、ToRスイッチ1cとでは、同一の障害発生ポートを除くLAG拡張を構成するポートと、同一のハッシュ関数と、同一の所定ルールに基づき、LAG拡張内でフレームを転送するポートを決定するため、データ送受信の経路を、往復で同一のリンクにすることが可能になる。
【0189】
図10及び図11を用いて説明したように、アグリゲーションスイッチ1及びToRスイッチ1は、対向のスイッチに対して所定時間毎に検知フレーム14を送信し、所定時間毎に対向のスイッチから受信する検知フレーム14の受信を確認することで、片系リンク障害にも対応できる。
【0190】
また、片系リンク障害から復旧する場合の処理は、障害を検知したスイッチが、検知フレーム14の受信を再開したことにより、障害から復旧したもの仮定し、障害が発生したリンクに対して送信していた障害フレーム15の送信を停止することにより、対向のスイッチにて障害フレーム15を受信しなくなった契機にて、障害復旧を検知し、障害復旧の処理を実施する。
【0191】
また、前述したように、障害フレーム15の送信の停止の代わりに、障害フレーム15を送信していたポート、つまり障害が発生したリンクへ、復旧フレームを送信することによって、対向のスイッチは、復旧フレームの受信を契機に、障害復旧を検知し、障害復旧の処理を実施することが可能になる。
【0192】
図12は、ToRスイッチ1aにて障害が発生した場合の処理を説明した図である。
【0193】
アグリゲーションスイッチ1d及びアグリゲーションスイッチ1e及びアグリゲーションスイッチ1fは、リンクダウン等により、接続しているリンクで障害が発生したことを検知する(ステップ1201)。
【0194】
アグリゲーションスイッチ1d及びアグリゲーションスイッチ1e及びアグリゲーションスイッチ1fは、障害通知フレーム16を、障害発生ポート以外のポートから、ToRスイッチ1に対して送信する。つまり、アグリゲーションスイッチ1d及びアグリゲーションスイッチ1e及びアグリゲーションスイッチ1fは、ToRスイッチ1bとToRスイッチ1cへ、障害通知フレーム16を送信する(ステップ1202)。
【0195】
ToRスイッチ1bとToRスイッチ1cは、障害通知フレーム16を受信し(ステップ1203)、障害が発生した箇所を推測するため所定時間待機し、障害通知フレーム16を受信したポート数をカウントする(ステップ1204)。障害通知フレームを受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し(ステップ1205)、当該ポート数が、当該しきい値よりも小さい場合、リンク障害が発生したものと仮定し、障害通知フレーム16を受信したポートを、拡張LAGから除外する(ステップ806)。障害通知フレームを受信したポート数と、あらかじめ設定しておいたしきい値の大小を比較し(ステップ805)、当該ポート数が、当該しきい値よりも大きい場合、ToRスイッチ1障害が発生したものと仮定し、実行する処理はない。
【0196】
ここで、リンク障害もしくは片系リンク障害と、ToRスイッチ障害の処理を比較する。
【0197】
図8に示すように、例えばリンク障害においては、ToRスイッチ1b及びToRスイッチ1cが、障害通知フレーム16を受信するのは、障害が発生したリンクに接続しているアグリゲーションスイッチ1からであり、その他のアグリゲーションスイッチ1からは障害通知フレーム16を受信しない。
【0198】
一方、図12に示すように、ToRスイッチ障害においては、ToRスイッチ1b及びToRスイッチ1cが、障害通知フレーム16を受信するのは、障害が発生したToRスイッチに接続しているアグリゲーションスイッチ1d、アグリゲーションスイッチ1e、アグリゲーションスイッチ1fからである。
【0199】
つまり、リンク障害とToRスイッチ障害とでは、障害の発生していないToRスイッチ1では、障害通知フレーム16を受信するポート数が異なるため、障害通知フレーム16を受信したポート数に応じて、障害が発生した箇所を推定することが可能である。
【0200】
片系リンク障害が発生した場合は、データ送受信の経路が往復で同一のリンクになるようにするため、全ToRスイッチ1において、フレーム送信経路を切り替え、ToRスイッチ障害が発生した場合は、障害のToRスイッチを経由しなければエンドノードへ到達しないフレームに関しては、救済することができないため、障害が発生したToRスイッチを除くToRスイッチにて、フレーム送信経路を変更するという処理は実施しない。
【0201】
図7に示したステップ7121や、図12に示すステップ1204等で、所定時間待機する理由は、各アグリゲーションスイッチ1が障害を検知するまでに時差があった場合でも、ToRスイッチ1が障害通知フレーム16を受信できるようにするためである。
【0202】
図13は、アグリゲーションスイッチ1dにて障害が発生した場合の処理を説明した図である。
【0203】
ToRスイッチ1a及びToRスイッチ1b及びToRスイッチ1cは、リンクダウン等により、接続しているリンクで障害が発生したことを検知する(ステップ1301)。
【0204】
ToRスイッチ1aとToRスイッチ1bとToRスイッチ1cは、障害発生ポートを、拡張LAGから除外する(ステップ1302)。
【0205】
この場合、ToRスイッチ1aと、ToRスイッチ1bと、ToRスイッチ1cとでは、同一の障害発生ポートを除くLAG拡張を構成するポート数と、同一のハッシュ関数と、同一の所定ルールに基づき、LAG拡張内でフレームを転送するポートを決定するため、データ送受信の経路を、往復で同一のリンクにすることが可能になる。
【0206】
次に、図14を用いて、第2の実施例を説明する。
【0207】
図14は、第2の実施例におけるネットワークシステム0を図示した図である。第1の実施例と第2の実施例との差分は、一つのToRスイッチ1と、一つのアグリゲーションスイッチ1間のリンクの接続が、2本になっていることである。さらに、一つのToRスイッチ1と、一つのアグリゲーションスイッチ1との間に接続される複数のリンクは、LAGで構成されており、一つのToRスイッチ1から、全てのアグリゲーションスイッチ1との間に接続される複数のLAGは、拡張LAGで構成されている。ただし、ここではLAGで構成されるリンク数を2として説明するが、3以上のリンクであってもよい。
【0208】
図14においても、エンドノードが接続されるのは、ToRスイッチになる。従って、例えば、ToRスイッチ1a〜1cのポートP7〜Pnに接続されるものとする。
【0209】
また、スイッチ台数、ポート数は、本実施形態に限定されるものではない。
【0210】
詳細な構成を、図14を用いて説明すると、ToRスイッチ1aのポートP1とポートP2はLAGで構成され、ポートP3とポートP4、ポートP5とポートP6に対しても、それぞれ同様にLAGで構成されている。また、ToRスイッチ1aだけではなく、ToRスイッチ1b、ToRスイッチ1c及び全てのアグリゲーションスイッチ1に関しても、一つのスイッチとの間の複数リンクの接続は、LAGで構成されている。さらに、全てのToRスイッチ1のポートP1からポートP6は、拡張LAGで構成されている。
【0211】
そして、図14に示す構成の場合は、アグリゲーションスイッチ1が、障害を検知した場合、障害通知フレーム16を、LAGを構成するポートのうち一方から送信することで、ToRスイッチ1は、障害通知フレーム16の受信ポート数による、障害発生箇所推定のための、しきい値判断が行える。
【0212】
もしくは、アグリゲーションスイッチ1が、障害を検知した場合、アグリゲーションスイッチ1を識別する識別子が存在する、障害通知フレーム16を、ToRスイッチ1に対して送信するとしてもよい。ここでいうアグリゲーションスイッチ1を識別する識別子とは、障害通知フレーム16のどこかの領域に挿入してもよいし、障害通知フレーム16の送信元アドレスであってもよい。つまり、当該障害通知フレーム16を送信したアグリゲーションスイッチ1が、識別できればよい。
【0213】
ToRスイッチ1は、受信した障害通知フレーム16の当該識別子を元に、障害通知フレーム16を送信したアグリゲーションスイッチ1の数を判断し、障害通知フレーム16を送信したアグリゲーションスイッチ1の数で、障害発生箇所推定のための、しきい値判断を行うことができる。
【0214】
次に、図15を用いて、第3の実施例を説明する。
【0215】
図15は、ネットワークシステム0に属するスイッチ1が、ネットワークを介して、管理サーバ3と接続した構成図である。
【0216】
図15においても、エンドノードが接続されるのは、ToRスイッチになる。
【0217】
また、本実施形態では、ネットワークシステムに属すのは、スイッチ1a〜1fまでの6台のスイッチとなるが、スイッチ1の台数は、本実施形態の構成に限定されるものではない。
【0218】
管理サーバ3は、スイッチ1a〜1fと接続している。ただし、管理サーバ3と、各スイッチ1との間に物理的なリンクの接続がなくても、ネットワークを介して通信可能であればよいこととする。
【0219】
各スイッチ1は、図7〜図13を用い説明した処理過程に発生する各イベントを、例えば、SNMP(Simple Network Management Protocol)を用いるか、独自のフレームを用いて、管理サーバ3へ通知することにより、管理サーバ3において、スイッチ1の個々の状態や、スイッチ1同士の接続状態を把握することが可能になる。
【0220】
ここでいう各イベントとは、例えば図6のステップ603、図7のステップ703で検知フレーム14を受信していない場合、もしくはリンクダウンを検知した場合、または、ステップ608、708において障害フレームを受信している場合、または、ステップ711で障害通知フレームを受信している場合、または、ステップ606、706の復旧処理を開始する場合等である。もちろん、ここに記述した以外のイベントの際においても、管理サーバ3へ、スイッチ1における状態や処理状況を通知してもよい。
【0221】
このように、スイッチ1は、管理サーバ3に対して、自発的にイベント通知することにより、管理サーバ3では、迅速にスイッチ1の状態を把握することができる。
【0222】
また、管理サーバ3が、スイッチ1に対して、例えば、設定情報を送信し、その設定情報をスイッチに反映させたり、スイッチ1からの通知により把握した障害の情報を、他のスイッチ1に通知したりしてもよい。これにより、スイッチ1の設定変更や、スイッチ1における障害箇所の誤判断の回避、ネットワークシステム0全体の障害箇所の迅速な把握とその障害箇所に応じた適切な経路制御を、実施することが可能になる。
【0223】
また、実施形態1〜3に示した処理を実行するに際し、スイッチ1の中に格納された各処理部は、スイッチ1の中に格納されず、例えば、管理サーバ3や、スイッチに接続する装置の中に格納され、処理を実行してもよい。
【0224】
また、上記各実施例は、スイッチ(レイヤ2)を対象として説明したが、例えば、ルータ(レイヤ3)についても適応することが可能である。
【符号の説明】
【0225】
0:ネットワークシステム、1:スイッチ、11:スイッチLSI、12:CPU、13:メモリ、130:OS、131:経路テーブル(経路特定用データ)、132:アドレス学習部、133:拡張LAGポート決定部、134:障害箇所回避制御部、135:送信部、136:受信部、137:検知部、138:障害箇所回避処理部、139:復旧部、14:検知フレーム、15:障害フレーム、16:障害通知フレーム、2:エンドノード、3:管理サーバ、Pn:ポート(nは自然数)。

【特許請求の範囲】
【請求項1】
複数の上段スイッチと複数の下段スイッチとが、多対多に接続されるネットワークシステムにおける、フレーム配送経路の選択方法であって、
前記上段スイッチ及び前記下段スイッチの各々は、障害発生監視用の検知フレームを、繰り返し、自スイッチに接続されている接続相手スイッチに対して送信し、
前記接続相手スイッチである前記上段スイッチ及び前記下段スイッチは、前記検知フレームを、あるポートにて所定の時間を経過しても受信しない場合、もしくは、あるポートがリンクダウン状態であると検知した場合、前記ポートを障害発生ポートと同定し、
前記上段スイッチ及び前記下段スイッチは、前記障害発生ポートから、障害発生を通知する障害フレームを送信し、
前記上段スイッチ及び前記下段スイッチは、前記障害フレームを受信した場合、前記障害フレームを受信したポートを、障害発生ポートと同定し、
前記上段スイッチは、障害発生ポートの存在を認識した場合、前記障害発生ポート以外のポートから、下段スイッチに対して、障害発生を通知する障害通知フレームを送信し、
前記下段スイッチは、前記障害発生ポートを、フレームを送信するポートから除外し、
前記下段スイッチは、前記障害通知フレームを受信した場合、前記障害通知フレームの受信から一定時間内に、前記障害通知フレームを受信したポート数をカウントし、
前記下段スイッチは、前記障害通知フレームを受信した前記ポート数と、あらかじめ設定したしきい値と、を比較し、
前記下段スイッチは、前記障害通知フレームを受信した前記ポート数が、前記しきい値よりも小さい場合、前記障害通知フレームを受信したポートを、前記フレームを送信するポートから除外する
ことを特徴とするフレーム配送経路の選択方法。
【請求項2】
請求項1に記載のフレーム配送経路の選択方法において、
前記しきい値は、各々の前記スイッチが備える設定ファイルにより、値を変更可能である
ことを特徴とするフレーム配送経路の選択方法。
【請求項3】
請求項1または2に記載のフレーム配送経路の選択方法において、
前記上段スイッチ及び前記下段スイッチが判断する、前記検知フレームを受信しない前記所定の時間とは、リンク速度または、前記検知フレームを対向のスイッチと送信する間隔に依存する
ことを特徴とするフレーム配送経路の選択方法。
【請求項4】
請求項1から3のいずれか一に記載のフレーム配送経路の選択方法において、
前記ネットワークシステムは、管理サーバを備え、
前記上段スイッチ及び前記下段スイッチは、前記障害発生ポートの検知を契機に、または、前記障害フレームの受信を契機に、または、前記障害通知フレームの受信を契機に、前記管理サーバへ、当該スイッチの状態を通知する
ことを特徴とするフレーム配送経路の選択方法。
【請求項5】
請求項1から4のいずれか一に記載のフレーム配送経路の選択方法において、
前記下段スイッチが、請求項1に記載の方法により、いずれかの前記ポートを、前記フレームを送信するポートから除外した後に、
前記上段スイッチ及び前記下段スイッチは、除外した前記障害発生ポートにて、前記検知フレームを受信した場合、もしくは、除外した前記障害発生ポートがリンクアップ状態である場合、除外した前記障害発生ポートを復旧ポートと同定し、
前記上段スイッチ及び前記下段スイッチは、前記接続相手スイッチに前記障害発生ポートの復旧を通知し、
前記下段スイッチは、前記復旧ポートと前記復旧を通知されたポートとを、前記フレームを送信するポートに追加する
ことを特徴とするフレーム配送経路の選択方法。
【請求項6】
請求項5に記載のフレーム配送経路の選択方法において、
前記障害発生ポートの復旧を通知する処理として、
前記上段スイッチは、前記復旧ポートから送信していた前記障害フレームと、前記復旧ポート以外のポートから送信していた障害通知フレームと、の送信を停止するか、または、復旧フレームを送信し、
前記下段スイッチは、前記復旧ポートから送信していた前記障害フレームの送信を停止する
ことを特徴とするフレーム配送経路の選択方法。
【請求項7】
請求項5または6に記載のフレーム配送経路の選択方法において、
前記上段スイッチ及び前記下段スイッチは、前記復旧ポートの検知を契機に、または、前記障害発生ポートの復旧を通知されたことを契機に、前記管理サーバへ、当該スイッチの状態を通知する
ことを特徴とするフレーム配送経路の選択方法。
【請求項8】
請求項6に記載のフレーム配送経路の選択方法において、
前記下段スイッチは、前記復旧フレームの受信を契機に、前記管理サーバへ、当該スイッチの状態を通知する
ことを特徴とするフレーム配送経路の選択方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−253530(P2012−253530A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−123916(P2011−123916)
【出願日】平成23年6月2日(2011.6.2)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】