以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるスイッチのハードウェア構成例を示す図である。同図に示されるスイッチ10は、中継装置の一例としてのレイヤ2のスイッチである。また、本実施の形態において、スイッチ10は、リング状(環状)のネットワーク(リングネットワーク)に属する一つのスイッチ10である。同図において、スイッチ10は、スイッチチップ11、CPU13、RAM14、ROM15、及び複数のポートP等を有する。
ポートPは、ネットワーク(回線)と接続するためのインタフェースである。フレームは、ポートを介して受信され、ポートより出力される。
スイッチチップ11は、受信されたフレームの中継機能を備えたASIC(Application Specific Integrated Circuit)等の専用のチップである。スイッチチップ11は、メモリ12を有する。メモリ12には、フレームの中継に必要なデータが記録されている。
ROM15は、スイッチ10の動作を制御するためのプログラムが記録された記憶媒体である。RAM14は、ROM15に記録されたプログラムをロードするための記憶媒体である。CPU13は、RAM14にロードされたプログラムに基づいてスイッチ10の動作を制御する。
図2は、本発明の実施の形態におけるスイッチの機能構成例を示す図である。本実施の形態において各スイッチ10は、初期化部121、優先度設定部122、優先度記憶部123、制御用フレーム送出部124、制御用フレーム転送部125、遮断部126、中継部127、及び中継DB128等を有する。
初期化部121は、スイッチ10の起動時において、初期化処理を実行する。
優先度設定部122は、スイッチ10に対する優先度の設定処理を行う。優先度とは、リングネットワークに属する複数のスイッチ10間の優劣を示すパラメータである。優先度は、ユーザの意思に基づいて設定されてもよいし、外部の管理装置において判定された値が設定されてもよいし、優先度設定部122が自動的に判定してもよい。ユーザの意思に基づいて設定される場合、又は外部の管理装置によって設定される場合、スイッチ10に接続されている各回線の帯域やスイッチ10の通信量に基づいて優先度が設定されるようにするとよい。回線の帯域が大きい程、又は通信量が多い程、高い優先度が与えられる。また、優先度設定部122は、例えば、スイッチ10に接続されている回線数(回線が接続されているポートPの数)に基づいて優先度を自動的に判定する。当該回線数が多い程、高い優先度が与えられる。すなわち、優先度とは、各スイッチ10の通信量の推測値を示すパラメータであるといえる。したがって、リングネットワークに属する複数のスイッチ10間の優劣とは、当該複数のスイッチ10間の通信量の大小関係を意味する。
優先度設定部122によって設定された優先度は、優先度記憶部123に記録される。優先度記憶部123は、例えば、RAM14を用いて優先度を記憶する。
制御用フレーム送出部124は、リングネットワークを形成する回線(リンク)を介して接続される(リングネットワークにおいて隣接する)他のスイッチ10に対して、自機(当該スイッチ10)の優先度を通知するための制御用のフレームを送出する。当該制御用フレームは、優先度データの一例である。リングネットワークに属する各スイッチ10に接続される回線のうち、当該リングネットワークを形成する回線は二つである。したがって、制御用フレーム送出部124は、当該回線に接続される二つのポートP(以下、「リングポートP」という。)より、自機の優先度を含む制御用フレームを、リングネットワークにおいて相互に逆回りとなるように送出する。すなわち、制御用フレームは、リングネットワークにおいて両隣のスイッチ10に送出される。制御用フレームには、優先度の他に、ホップ数及び送信元スイッチをネットワーク内で一意に識別するための識別子等が含まれる。送信元MACアドレスは、制御用フレームの送信元(送出元)のスイッチ10の識別子の一例である。制御用フレームの宛先アドレスとしては、隣接するスイッチ10のMACアドレス、または、BPDU(Bridge Protocol Data Unit)のアドレスのように隣接スイッチにのみに到達して、隣接スイッチから先には中継されないマルチキャストアドレスを使用する。
制御用フレーム転送部125は、受信された他のスイッチ10からの制御用フレームの転送を行う。転送先は、制御用フレームの受信ポートとは別のリングポートPであり、転送に当たっては、上記と同様に、宛先アドレスとして、該リングポートP側に隣接するスイッチのみに到達するアドレスを使用する。また、制御用フレーム転送部125は、転送される制御用フレームのホップ数を更新する。すなわち、ホップ数に1が加算される。但し、制御用フレーム転送部125は、自機の優先度より低い優先度を含む制御用フレームは破棄する。破棄とは、転送されないことをいう。したがって、リングネットワークにおいて、最終的に1周できる制御用フレームは、優先度の最も高いスイッチ10より送出された制御用フレームである。
遮断部126は、同一の他のスイッチ10より送出された制御用フレームが二つリングポートPより(すなわち、双方向より)受信された場合に、受信された二つの制御用フレームに含まれているホップ数を比較する。遮断部126は、当該比較結果に応じて、二つのリングポートPのいずれか一方をフレームの中継に関して論理的に遮断する。但し、遮断されたリングポートPにおいて、学習済みユニキャストフレームの通過は許可される。学習済みユニキャストフレームとは、スイッチ10が学習済みで送信先ポートが一つに決まっている宛先MACアドレスを含むフレームである。換言すれば、遮断されたリングポートPにおいて通過が許可されないのは、受信ポート以外の全ポートPに送出されるフレームである。斯かるフレームとしては、未学習のユニキャストフレーム、マルチキャストフレーム、又はブロードキャストフレーム等が挙げられる。
中継部127は、スイッチ10の基本的な機能であるノードの学習及びフレームの中継等を行う。具体的には、中継部127は、フレームの受信に応じ、受信フレームの送信元MACアドレスと受信ポートとの対応関係を中継DB128に記録する。これによって、当該送信元MACアドレスに係るノードが学習される。中継部127は、また、受信フレームの宛先MACアドレスとポートとの対応関係が中継DB128に登録されている場合には、当該ポートより受信フレームを送出させる。中継部127は、更に、受信フレームの宛先MACアドレスとポートとの対応関係が中継DB128に登録されていない場合(受信フレームの宛先が未学習の場合)には、フラッディングを行う。フラッディングとは、受信ポート以外の全てのポートより受信フレームを送出することをいう。
なお、中継部127は、スイッチチップ11によって実現される。中継DB128は、メモリ12内に形成される。また、初期化部121、優先度設定部122、優先度記憶部123、制御用フレーム送出部124、制御用フレーム転送部125、及び遮断部126等は、中継部127との比較において高速な処理は要求されないため、CPU13によって実行される処理によって実現される。但し、初期化部121、優先度設定部122、優先度記憶部123、制御用フレーム送出部124、制御用フレーム転送部125、及び遮断部126等についても、スイッチチップ11によって実現されてもよい。
以下、スイッチ10の処理手順について説明する。まず、フローチャートを用いて、一台のスイッチ10において実行される処理手順を説明する。その後、当該処理手順がリングネットワークに属する各スイッチ10によって実行されることにより、リングネットワーク全体としてどのような動作が行われるかを具体的に説明する。
図3は、スイッチの起動時の処理手順を説明するためのフローチャートである。
スイッチ10の起動に応じ、初期化部121は、二つのリングポートPを論理的な遮断状態(ブロッキング状態)とする(S101)。
続いて、図4は、リングポートに関してリンクアップが発生した場合の処理手順を説明するためのフローチャートである。なお、リンクアップとは、回線に接続され、通信可能となった状態をいう。また、同図では、一方のリングポートPに関してリンクアップが発生したこととする。
リンクアップに応じ、制御用フレーム送出部124は、制御用フレームを生成し、当該制御用フレームをリンクアップに係るリングポートPより送出する(S111)。当該制御用フレームには、自機(当該スイッチ10)の優先度記憶部123に記録されている優先度、及びホップ数(=0)が含まれる。また、送信元識別子として、自機のMACアドレスが含まれる。
続いて、制御用フレーム送出部124は、各種タイマをスタートさせる(S112)。二つのリングポートPごとに、送信タイマ及び受信タイマが有る。図4又は以降のフローチャートにおいて対象とされているリングポートPの送信タイマをTa1、受信タイマをTa2として表記する。他方のリングポートPの送信タイマをTb1、受信タイマのTb2として表記する。ステップS112では、リンクアップに係るリングポートPの送信タイマと、二つのリングポートPの受信タイマとがスタートされる。
なお、その後、他方のリングポートPに関してリンクアップが発生した場合についても、図4と同様の処理が実行される。但し、タイマについては、当該リングポートに対する送信タイマのみがスタートされる。他のタイマは既にスタート済みだからである。
続いて、図5は、リングポートを介した制御用フレームの受信に応じて実行される処理手順を説明するための図である。同図では、一方のリングポートPにおいて、他のスイッチ10より送出された制御用フレームが受信された場合を想定する。同図の説明において、制御用フレームを受信したリングポートPを「ポートA」といい、他方のリングポートPを「ポートB」という。
制御用フレームの受信に応じ、遮断部126は、ポートAの受信タイマ(Ta2)をリスタート(初期化)させる(S201)。続いて、遮断部126は、自機の優先度記憶部123を参照して、自機の優先度は特別レベルであるか否かを判定する(S202)。例えば、優先度記憶部123に、特別レベルを示す情報(以下、「特別レベルフラグ」という。)が記録されている場合、自機の優先度は特別レベルであると判定される。後述されるように、特別レベルの優先度は、リングポートPに関してリンクダウンが発生した場合に与えられる。特別レベルの優先度は、通常与えられるいかなる優先度よりも高い。すなわち、特別レベルの優先度は、絶対的に最高の優先度である。
自機の優先度が特別レベルである場合(S202でYes)、遮断部126は、ポートBにおいて制御用フレームは既に受信されているか否かを判定する(S203)。ポートBにおいて制御用フレームが受信されている場合(S203でYes)、遮断部126は、自機の優先度を元の(本来)の優先度に戻す(S204)。具体的には、遮断部126は、優先度記憶部123より特別レベルフラグを削除する。すなわち、ポートBにおいても制御用フレームが受信されているということは、二つのリングポートPのいずれかにおいて発生したリンクダウン(通信不能な状態)は解消されていると考えられるから。なお、ポートBにおいて制御用フレームが受信されていない場合は(S203でNo)、優先度は特別レベルのままとされる。また、自機の優先度が特別レベルでない場合は(S202でNo)、ステップS203及びS204は実行されない。
ステップS205に進み、遮断部126は、受信された制御用フレーム(以下、「受信フレーム」という。)の優先度は特別レベルであるか否かを判定する。すなわち、受信フレームは、特別レベルの優先度を有するスイッチ10より送出されたものであるか否かが判定される。受信フレームの優先度が特別レベルである場合(S205でYes)、遮断部126は、二つのリングポートPをフォワーディング状態とする(S206)。フォワーディング状態とは、フレームの中継に関して特別な制限の無い状態である。ここで、特別レベルの優先度を有する受信フレームが受信された場合に、双方のリングポートPをフォワーディング状態とするのは、自機が有するリングポートPによってリングネットワークを論理的に遮断する必要はないからである。すなわち、特別レベルの優先度を有する受信フレームが受信されたということは、リングネットワークに属する他のいずれかのスイッチ10のリングポートPにおいてリンクダウンが発生していることを意味する。したがって、現時点において、当該リングネットワークにおいてループは形成されておらず、論理的な遮断は不要だからである。
続いて、制御用フレーム転送部125は、受信フレームのホップ数に1を加算し、当該受信フレームをポートBより送出させる。また、制御用フレーム転送部125は、ポートBに対する送信タイマ(Tb1)を停止させる(S207)。
受信フレームの優先度が特別レベルでない場合(S205でNo)、遮断部126は、自機の優先度と受信フレームの優先度とは同じであるか否かを判定する(S211)。本実施の形態では、リングネットワークに属する各スイッチ10間において、優先度の重複は無いこととする。したがって、ステップS211の判定は、受信フレームが自機より送出された制御用フレームであるか否かの判定に相当する。
比較された優先度が同じである場合(S211でYes)、遮断部126は、受信フレームのホップ数が0であるか否かを判定する(S212)。上記したように、優先度が最も高い制御用フレームのみが途中で破棄されず1周することが可能である。したがって、ステップS212が実行される場合、受信フレームは自機より送出されたものである。換言すれば、自機の優先度が最も高い場合である。但し、二つのリングポートPが直結されている可能性もある。ステップS212は、当該可能性を考慮した処理である。
受信フレームのホップ数が0でない場合(すなわち、二つのリングポートPが直結されていない場合)(S212でNo)、遮断部126は、二つのリングポートPをフォワーディング状態とする(S213)。続いて、転送フレームは、受信フレームを破棄する(S214)。当該受信フレームの無限ループを回避するためである。
受信フレームのホップ数が0である場合(すなわち、二つのリングポートPが直結されている場合)(S212でYes)、遮断部126による処理(S213)は実行されずに、制御用フレーム転送部125によって受信フレームが破棄される(S214)。
一方、自機の優先度と受信フレームとの優先度が異なる場合(S211でNo)、遮断部126は、自機の優先度の方が受信フレームの優先度より高いか否かを判定する(S221)。自機の優先度の方が受信フレームの優先度より高い場合(S221でYes)、制御用フレーム転送部125は、受信フレームを破棄する(S222)。
自機の優先度より受信フレームの優先度の方が高い場合(S221でNo)、制御用フレーム転送部125は、受信フレームのホップ数に1を加算する(S231)。続いて、遮断部126は、ポートBを介して既に制御用フレームを受信済みであるか否かを判定する(S232)。ポートBを介して制御用フレームが受信されている場合(S232でYes)、今回の受信フレームと、ポートBを介して受信されているいずれかの制御用フレームとの送信元が同じであるか否かを判定する(S233)。当該判定は、各制御用フレームの優先度の比較に基づいて行えばよい。今回の受信フレームと送信元が一致する制御用フレームがポートBを介して受信されている場合(S233でYes)、遮断部126等は、送信元が一致する二つの制御用フレームのホップ数の比較に応じた遮断処理を実行する(S234)。当該処理の詳細については後述する。
一方、今回の受信フレームと送信元が一致する制御用フレームがポートBを介して受信されていない場合(S232でNo又はS233でNo)、制御用フレーム転送部125は、受信フレームをポートBより送信し、ポートBに対する送信タイマ(Tb1)を停止させる(S235)。
なお、リングポートP別に、制御用フレームの受信の有無、及び受信された制御用フレームの中で優先度が最も高い制御用フレームの内容をRAM14内に記録しておくようにするとよい。斯かる情報に基づいて、ステップ203、S232、及びS233等の判定を行えばよい。
続いて、ステップS234の詳細について説明する。図6は、送信元が一致する二つの制御用フレームのホップ数の比較に応じた遮断処理を説明するためのフローチャートである。同図において、ポートA及びポートBの意味は、図5と同様である。
ステップS301において、遮断部126は、二つの制御用フレームのホップ数が同じであるか否かを判定する。ここで、二つの制御用フレームとは、ポートAを介して今回受信された制御用フレームと、ポートBにおいて既に受信されている制御用フレームとである。二つの制御用フレームのホップ数が同じである場合(S301でYes)、遮断部126は、ポートAをフォワーディング状態にし、受信フレームのブロッキングフラグをONとする(S302)。後述より明らかなように、ブロッキングフラグがONである受信フレームを受信したリングポートPは、ブロッキング状態とされる。したがって、ブロッキングフラグをONにするということは、ポートB側に隣接する(接続される)他のスイッチ10のリングポートPをブロッキング状態とする命令を生成することを意味する。なお、制御用フレームの生成時におけるブロッキングフラグの初期値はOFFである。続いて、制御用フレーム転送部125は、受信フレームをポートBより送出させる。また、制御用フレーム転送部125は、ポートBに対する送信タイマ(Tb1)を停止させる(S303)。
なお、後述の具体例より明らかなように、二つの制御用フレームのホップ数が同じとなるのは、リングネットワークに属するスイッチ10の台数が偶数の場合であって、優先度が最高のスイッチ10より最も遠いスイッチ10においてである。したがって、ステップS301〜S303より、スイッチ10の台数が偶数の場合において、優先度が最高のスイッチ10より最も遠いスイッチ10では、先に制御用フレームを受信したリングポートPはブロッキング状態のままとされる(論理的に遮断される)ことが分かる。また、当該スイッチ10のポートB側(先に当該制御用フレームを受信したリングポートP側)に隣接するスイッチ10のリングポートPもブロッキング状態のままとされることが分かる。
一方、二つの制御用フレームのホップ数が異なる場合(S301でNo)、遮断部126は、当該ホップ数の差は1であるか否かを判定する(S311)。当該ホップ数の差が1である場合(S311でYes)、遮断部126は、ホップ数の小さい制御用フレームを受信したリングポートPをフォワーディング状態とする(S312)。換言すれば、ホップ数の大きい制御用フレームを受信したリングポートPは、ブロッキング状態のままとされる。続いて、制御用フレーム転送部125は、受信フレームをポートBより送出させる。また、制御用フレーム転送部125は、ポートBに対する送信タイマ(Tb1)を停止させる(S313)。
なお、後述の具体例より明らかなように、二つの制御用フレームのホップ数の差が1となるのは、リングネットワークに属するスイッチ10の台数が奇数の場合であって、優先度が最高のスイッチ10より最も遠いスイッチ10においてである。したがって、ステップS311〜S313より、スイッチ10の台数が奇数の場合において、優先度が最高のスイッチ10より最も遠いスイッチ10では、優先度が最高のスイッチ10より遠い方のリングポートPがブロッキング状態とされることが分かる。
二つの制御用フレームのホップ数の差が1でない場合(S311でNo)、遮断部126は、当該ホップ数の差は2であるか否かを判定する(S321)。当該ホップ数の差が2である場合(S321でYes)、遮断部126は、受信フレームのブロッキングフラグがONであるか否かを判定する(S322)。受信フレームのブロッキングフラグがONである場合(S322でYes)、遮断部126は、ポートBをフォワーディング状態とし、受信フレームのブロッキングフラグをOFFとする(S323)。したがって、ポートA(受信フレームを受信したリングポートP)はブロッキング状態のままとされる。続いて、制御用フレーム転送部125は、受信フレームをポートBより送出させる。また、制御用フレーム転送部125は、ポートBに対する送信タイマ(Tb1)を停止させる(S324)。
なお、後述の具体例より明らかなように、二つの制御用フレームのホップ数の差が2となるのは、リングネットワークに属するスイッチ10の台数が偶数の場合であって、優先度が最高のスイッチ10より最も遠いスイッチ10に隣接するスイッチ10においてである。したがって、ステップS321〜S324より、当該隣接するスイッチ10の一方では、優先度が最高のスイッチ10よりもっとも遠いスイッチ10に接続されるリングポートPがブロッキング状態とされることが分かる。当該隣接するスイッチ10は二つ存在するところ、ステップS323及びS324の対象とされるのは、ブロッキングフラグがONである制御用フレームを受信した方である。
また、二つの制御用フレームのホップ数の差が2でない場合、すなわち3以上の場合(S321でNo)、又は受信フレームのブロッキングフラグがONでない場合(S322でNo)、遮断部126は、二つのリングポートPをフォワーディング状態とする(S325)。続いて、制御用フレーム転送部125は、受信フレームをポートBより送出させる。また、制御用フレーム転送部125は、ポートBに対する送信タイマ(Tb1)を停止させる(S326)。
続いて、図7は、送信タイマがタイムアウトした場合の処理手順を説明するためのフローチャートである。同図において、ポートAは、送信タイマのタイムアウトが発生した方のリングポートPである。
ステップS111において制御用フレームが送出された後、当該リングポートPから制御用フレームの転送が行われずに所定時間が経過すると、当該リングポートP(ポートA)に対する送信タイマのタイムアウトが検出される。送信タイマのタイムアウトの検出に応じ、制御用フレーム送出部124は、制御用フレームを改めて生成し、当該制御用フレームをポートAより送出する(S401)。続いて、制御用フレーム送出部124は、ポートAに対する送信タイマ(Ta1)をリスタートする(S402)。
続いて、図8は、受信タイマがタイムアウトした場合又はリングポートについてリンクダウンが発生した場合の処理手順を説明するためのフローチャートである。同図において、ポートAは、受信タイマのタイムアウト又はリンクダウンが発生したリングポートPである。ポートBは、他方のリングポートPである。なお、リングポートPのリンクアップ後、又はリングポートPより制御用フレームが送信された後、当該リングポートPより制御用フレームが受信されないまま所定時間が経過すると、当該リングポートPに対する受信タイマのタイムアウトが検出される。
受信タイマのタイムアウトの検出又はリンクダウンの検出に応じ、遮断部126は、ポートAをブロッキング状態にし、ポートBをフォワーディング状態とする(S501)。続いて、優先度設定部122は、自機の優先度を特別レベルに設定する(S502)。具体的には、優先度記憶部123に特別レベルフラグが記録される。続いて、制御用フレームは、制御用フレームを改めて生成し、当該制御用フレームをポートBより送出させる(S503)。当該制御用フレームの優先度は特別レベルとされる。
当該制御用フレームが転送されることにより、各スイッチ10の二つのリングポートPは、それぞれフォワーディング状態とされる(図5のステップS206参照)。その結果、受信タイマのタイムアウトが検出又はリンクダウンが検出されたリングポートP、すなわち、通信不能となり、実質的に遮断されてしまっているリングポートP以外に、論理的な遮断箇所が形成されるのが回避される。
続いて、制御用フレーム送出部124は、ポートPの送信タイマ(Tb1)をリスタートする(S503)。
次に、上記フローチャートにおいて説明した処理を各スイッチ10が実行することにより、リングネットワーク全体としてどのような動作が行われるかについて具体的に説明する。
図9及び図10は、スイッチの台数が奇数の場合のリングネットワークの動作例を説明するための図である。
同図に示されるように、リングネットワーク20は、スイッチ10a〜10eの5台のスイッチ10を含む。各スイッチ10間の線分は、回線を示す。また、各スイッチ10内に記された数値は、当該スイッチ10に設定された優先度を示す。すなわち、各スイッチ10の優先度は、スイッチ10a、10b、10c、10d、10eの順で、1、2、4、5、3である。なお、本実施の形態では、数値が小さいほど優先度は高い。したがって、同図の例では、スイッチ10aの優先度が最も高い。
図9(1)は、各スイッチ10において、図3の処理が実行された結果を示す。各スイッチ10の両側には、「B」が記されている。「B」は、該当する側のリングポートPがブロッキング状態であることを示す。なお、フォワーディング状態は「F」によって表記される。
(2)は、各スイッチ10において、図4の処理が実行された結果を示す。(2)において、各スイッチ10は、二つのリングポートPより、自機の優先度を有し、ホップ数0の制御用フレームを送出している。図中の各矢印Fa1〜Fe1、及びFa2〜Fe2は、それぞれ制御用フレームを示す。矢印の向きは、制御用フレームの転送方向を示す。また、矢印に付された(n、m)の符号において、nは制御用フレームの優先度、mはホップ数を示す。各制御用フレームの参照番号の命名規則は、F<送信元スイッチ><方向>である。<送信元スイッチ>は、送信元のスイッチ10の参照番号の末尾のアルファベット(a〜e)に一致する。<方向>は、反時計回りが「1」であり、時計回りが「2」である。したがって、例えば、スイッチ10aから反時計回りの方向に送出された制御用フレームの参照番号は、「Fa1」である。
なお、各スイッチ10からの制御用フレームの送出は、一斉に(同時に)行われなくてもよい。制御用フレームの送出が可能となったスイッチ10から順に随時送出されればよい。
(3)は、(2)に示される各制御用フレームを受信した各スイッチ10において図5の処理が実行された結果を示す。(2)においてスイッチ10aでは、フレームFb2と、フレームFe1とが受信されている。当該二つの制御用フレームの優先度は、スイッチ10aの優先度より低い。したがって、当該二つの制御用フレームはスイッチ10aによって破棄されている(図5のS221でYes、S222)。その結果、当該二つの制御用フレームは、図中から削除されている。他にも削除されている制御用フレームが有るが、同様の理由による。
一方、フレームFa1、フレームFb1、フレームFc1、フレームFa2、及びフレームFe2は、ホップ数に1が加算され、転送されている。これらの制御用フレームは、当該制御用フレームを受信したスイッチ10より高い優先度を有するからである(図5のステップS221でNo、S231、S232でYes、S233でNo、S235)。
(4)は、(3)に示される各制御用フレームを受信した各スイッチ10において図5の処理が実行された結果を示す。優先度が4であるフレームFc1は、優先度が3であるスイッチ10eによって処理されることにより破棄されている。他の制御用フレームは、自らの優先度よりも低い優先度を有するスイッチ10によって処理されたため、ホップ数に1が加算されて転送されている。
図10(5)は、(4)に示される各制御用フレームを受信した各スイッチ10において図5又は図6の処理が実行された結果を示す。優先度が3であるフレームFe2は、優先度が2であるスイッチ10bによって処理されることにより破棄されている。優先度が2であるフレームFb1は、優先度が3であるスイッチ10eによって処理されたため、ホップ数に1が加算された転送されている。
また、スイッチ10c及び10dは、(4)において、同一のスイッチ10aより送出された制御用フレーム(フレームFa)を双方向より受信したことになる。すなわち、スイッチ10cは、(3)においてフレームFa1をホップ数1で受信し、(4)においてフレームFa2をホップ数2で受信している。スイッチ10dは、(3)においてフレームFa2をホップ数1で受信し、(4)においてフレームFa1をホップ数2で受信している。ここで、スイッチ10c及び10dの双方とも、二つのフレームFaのホップ数の差は1である。したがって、スイッチ10cは、ホップ数の小さいフレームFa1を受信したリングポートPをフォワーディング状態(F)としている(図6のステップS311〜S313)。同様に、スイッチ10dは、ホップ数の小さいフレームFa2を受信したリングポートPをフォワーディング状態(F)としている。更に、スイッチ10cは、フレームFa2を、スイッチ10dは、フレームFa1を、ホップ数に1を加算して転送している(図5のS231、図6のS324)。
(6)は、(5)に示される各制御用フレームを受信した各スイッチ10において図5又は図6の処理が実行された結果を示す。優先度が2であるフレームFb1は、優先度が1であるスイッチ10aによって処理されることにより破棄されている。
また、スイッチ10b及び10eは、(5)において、同一のスイッチ10aより送出された制御用フレーム(フレームFa)を双方向より受信したことになる。すなわち、スイッチ10bは、(2)においてフレームFa1をホップ数0で受信し、(5)においてフレームFa2をホップ数3で受信している。スイッチ10eは、(2)においてフレームFa2をホップ数0で受信し、(5)においてフレームFa1をホップ数3で受信している。ここで、スイッチ10b及び10eの双方とも、二つのフレームFaのホップ数の差は3である。したがって、スイッチ10b及び10eのそれぞれの二つのリングポートPは、フォワーディング状態(F)とされている(図6のS321でNo、S325)。更に、スイッチ10bは、フレームFa2を、スイッチ10eは、フレームFa1をホップ数に1を加算して転送している(図5のS231、図6のS326)。
(7)は、(6)に示される制御用フレームFa1及びFa2を受信したスイッチ10aにおいて図5の処理が実行された結果を示す。制御用フレームFa1及びF2の送信元はスイッチ10aである。したがって、スイッチ10aは、二つのリングポートPをフォワーディング状態(F)としている(図5のS211でYes、S212でNo、S213)。また、制御用フレームFa1及びFa2は破棄されている(図5のS214)。
以上で、リングネットワーク20における制御用フレームの処理は終了する。図10(7)より明らかなように、優先度が1であるスイッチ10aより最も遠い箇所(スイッチ10cとスイッチ10dとの間)に係る回線の両端のリングポートPがブロッキング状態(B)とされている。すなわち、当該回線が論理的に遮断されている。
次に、図11及び図12は、スイッチの台数が偶数の場合のリングネットワークの動作例を説明するための図である。
同図に示されるように、リングネットワーク30は、スイッチ10a〜10fの5台のスイッチ10を含む。なお、同図の表記法は、図9又は図10と同じである。したがって、各スイッチ10の優先度は、スイッチ10a、10b、10c、10d、10e、10fの順で、1、3、5、6、4、2である。
図11(1)は、各スイッチ10において、図3の処理が実行された結果を示す。各スイッチ10の二つのリングポートPは、ブロッキング状態(B)とされている。
(2)は、各スイッチ10において、図4の処理が実行された結果を示す。各スイッチ10は、二つのリングポートPより、自機の優先度を有し、ホップ数0の制御用フレームを送出している。
(3)は、(2)に示される各制御用フレームを受信した各スイッチ10において図5の処理が実行された結果を示す。自らの優先度より高い優先度を有するスイッチ10によって処理された制御用フレームは破棄されている(図5のS221でYes、S222)。自らの優先度より低い優先度を有するスイッチ10によって処理された制御用フレームは、ホップ数に1が加算され、転送されている(図5のステップS221でNo、S231、S232でYes、S233でNo、S235)。
(4)は、(3)に示される各制御用フレームを受信した各スイッチ10において図5の処理が実行された結果を示す。優先度が5であるフレームFc1は、優先度が4であるスイッチ10eによって処理されることにより破棄されている。他の制御用フレームは、自らの優先度よりも低い優先度を有するスイッチ10によって処理されたため、ホップ数に1が加算されて転送されている。
図12(5)は、(4)に示される各制御用フレームを受信した各スイッチ10において図5又は図6の処理が実行された結果を示す。優先度が4であるフレームFe2は、優先度が3であるスイッチ10bによって処理されることにより破棄されている。フレームFb1及びFf2は、自らの優先度よりも低い優先度を有するスイッチ10によって処理されたため、ホップ数に1が加算されて転送されている。
また、スイッチ10dは、(4)において、同一のスイッチ10aより送出されたフレームFa1及びFa2を受信している。ここでは、フレームFa1が先着であるとする。したがって、スイッチ10dは、フレームFa1をホップ数に1を加算して転送している(図5のS232、S235)。また、フレームFa1及びFa2の双方のホップ数は、同じである。したがって、スイッチ10dは、フレームFa2を受信したリングポートPをフォワーディング状態とし、フレームFa2のブロッキングフラグをONとしている(図6のステップS301でYes、S302)。(5)において、フレームFa2に対する括弧内において優先度1及びホップ数3の他に「B」が記されているが、当該「B」はブロッキングフラグがONであることを示す。更にスイッチ10dは、フレームFa2をホップ数に1を加算して転送している(図5のS232、図6のS303)。
(6)は、(5)に示される各制御用フレームを受信した各スイッチ10において図5又は図6の処理が実行された結果を示す。優先度が3であるフレームFb1は、優先度が2であるスイッチ10fによって処理されることにより破棄されている。フレームFf2は、自らの優先度よりも低い優先度を有するスイッチ10bによって処理されたため、ホップ数に1が加算されて転送されている。
また、スイッチ10c及び10eは、(5)において、同一のスイッチ10aより送出されたフレームFaを双方向より受信したことになる。すなわち、スイッチ10cは、(3)においてフレームFa1をホップ数2で受信し、(5)においてフレームFa2をホップ数3で受信している。スイッチ10eは、(3)においてフレームFa2をホップ数1で受信し、(5)においてフレームFa1をホップ数3で受信している。ここで、スイッチ10c及び10の双方とも、二つのフレームFaのホップ数の差は2である。但し、スイッチ10cは、(5)においてブロッキングフラグがONであるフレームFa2を受信している。したがって、スイッチ10cは、フレームFa2を受信したリングポートPとは別のリングポートPをフォワーディング状態(F)とし、フレームFa2のブロッキングフラグをOFFとしている(図6のS321でYes、S322でYes、S323)。また、スイッチ10cは、フレームFa2をホップ数に1を加算して転送している(図5の231、図6のS324)。一方、スイッチ10dは、双方のリングポートPをフォワーディング状態(F)としている(S321でYes、S322でNo、S325)。また、スイッチ10dは、フレームFa1をホップ数に1を加算して転送している。
(7)は、(6)に示される各制御用フレームを受信した各スイッチ10において図5又は図6の処理が実行された結果を示す。優先度が2であるフレームFf2は、優先度が1であるスイッチ10aによって処理されることにより破棄されている。
また、スイッチ10b及び10fは、(6)において、同一のスイッチ10aより送出されたフレームFaを双方向より受信したことになる。すなわち、スイッチ10bは、(2)においてフレームFa1をホップ数0で受信し、(6)においてフレームFa2をホップ数4で受信している。スイッチ10fは、(2)においてフレームFa2をホップ数0で受信し、(6)においてフレームFa1をホップ数4で受信している。ここで、スイッチ10b及び10fの双方とも、二つのフレームFaのホップ数の差は4である。したがって、スイッチ10b及び10fのそれぞれの二つのリングポートPは、フォワーディング状態(F)とされている(図6のS321でNo、S325)。更に、スイッチ10bは、フレームFa2を、スイッチ10fは、フレームFa1をホップ数に1を加算して転送している(図5のS231、図6のS326)。
(8)は、(7)に示される制御用フレームFa1及びFa2を受信したスイッチ10aにおいて図5の処理が実行された結果を示す。制御用フレームFa1及びF2の送信元はスイッチ10aである。したがって、スイッチ10aの二つのリングポートPは、フォワーディング状態(F)とされている(図5のS211でYes、S212でNo、S213)。また、制御用フレームFa1及びFa2は破棄されている(図5のS214)。
以上で、リングネットワーク30における制御用フレームの処理は終了する。図12(8)より明らかなように、優先度が1であるスイッチ10aより最も遠い箇所(スイッチ10cとスイッチ10dとの間)に係る回線の両端のリングポートPがブロッキング状態(B)とされている。すなわち、当該回線が論理的に遮断されている。なお、スイッチ10dとスイッチ10eとの間に対するスイッチ10aからのホップ数は、スイッチ10cとスイッチ10dとの間に対するスイッチ10aからのホップ数と同じである。但し、本実施の形態では、スイッチ10aから双方向に送出された二つのフレームFaの到達が完了するのが遅かった方が遮断対象とされている。ホップ数は同じであっても、二つのフレームFaの到達の完了が遅い方が、論理的に遠い回線であると考えるからである。但し、二つのフレームFaの到達の完了が早い方を遮断対象としてもよい。その場合、スイッチ10dとスイッチ10eとの間が遮断対象とされる。
なお、ポートPのブロッキング状態は、例えば、メモリ12内にブロッキング状態としたポートPの識別情報を記録することにより実現されればよい。中継部127は、中継DB128に登録されていないノードを宛先とするフレーム(未学習のフレーム)、マルチキャストフレーム、又はブロードキャストフレームが受信された場合、メモリ12を参照してブロッキング状態のポートPを確認する。続いて、中継部127は、ブロッキング状態のポートP以外の各ポートP(当該フレームの受信ポートは除く)から受信されたフレームを送出させる。
一方、中継部127は、中継DB128に登録されているノードを宛先とするユニキャストフレーム(学習済みのフレーム)を受信した場合、当該宛先に対応するポートPがブロッキング状態であっても、当該ポートPより当該ユニキャストフレームを送出させる。ユニキャストフレームであれば、ストームの発生する可能性は無いからである。また、学習済みのユニキャストフレームの通過を可能とすることにより、遮断された回線も活用することが可能となる。その結果、当該回線が眼前に遮断される場合に比べて、リングネットワーク中におけるフレームの平均ホップ数の低下やリングネットワークに含まれる各回線の負荷の分散等を図ることができる。
また、本実施の形態では、リングポートPの初期状態は、ブロッキング状態である例を示したが、フォワーディング状態を初期状態としてもよい。この場合、図5又は図6において、リングポートPをフォワーディング状態にする処理は実行しなくてよい。反対に、リングポートPの状態を変更しない場合に、リングポートPをブロッキング状態にする処理を追加すればよい。
上述したように、本実施の形態のスイッチ10は、リングネットワークにおいて優先度が最も高いスイッチ10から最も遠い箇所を自動的に判定し、当該箇所を論理的に遮断させることができる。したがって、例えば、優先度を通信量に基づいて設定しておくことにより、通信量の最も多いスイッチ10から最も遠い箇所を遮断対象とすることができる。その結果、ネットワークトラフィックに鑑みて適切な箇所を遮断箇所とすることができる。
また、STPに比べて簡単(低負荷)な演算によって適切な遮断箇所を判定することができる。
更に、遮断箇所において、学習済みユニキャストフレームは通過可能とすることにより、リングネットワーク中におけるフレームの平均ホップ数の低下やリングネットワークに含まれる各回線の負荷の分散等を図ることができる。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
以上の説明に関し、更に以下の項を開示する。
(付記1)
中継装置であって、
当該中継装置の優先度を記憶した優先度記憶手段と、
前記優先度とホップ数とを含む優先度データを、リングを形成する回線に接続された二つのポートよりそれぞれ前記リングの逆回り方向に送出する優先度データ送出手段と、
他の中継装置より送出された前記優先度データが一方の前記ポートより受信された場合に、当該優先度データの優先度が前記優先度記憶手段に記憶された優先度より高いときは当該優先度データのホップ数を更新して、当該優先度データを他方の前記ポートより送出させる優先度データ転送手段と、
送信元が一致する前記優先度データが前記二つのポートより受信された場合に、受信された二つの前記優先度データに含まれるホップ数の比較結果に応じて前記ポートの一方を論理的に遮断する遮断手段とを有する中継装置。
(付記2)
受信されたユニキャストのフレームの宛先に対応するポートが論理的に遮断されているポートである場合に、当該フレームを該宛先に対応するポートより送出させる中継手段を有する付記1記載の中継装置。
(付記3)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数の差が1である場合は、ホップ数の大きい前記優先度データを受信したポートを遮断する付記1又は2記載の中継装置。
(付記4)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数が同じである場合は、前記優先度データを先に受信したポートを遮断する付記1乃至3いずれか一項記載の中継装置。
(付記5)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数の差が2である場合は、他の前記中継装置において遮断されたポートに接続されるポートを遮断する付記4記載の中継装置。
(付記6)
前記優先度データ転送手段は、前記優先度データの宛先アドレスとして、隣接する中継装置のアドレスを使用する付記1乃至5いずれか一項記載の中継装置。
(付記7)
当該中継装置の優先度を当該中継装置に接続されている回線の数に応じて定める優先度設定手段をさらに備える付記1乃至6いずれか一項記載の中継装置。
(付記8)
前記優先度データ送出手段は、前記二つのポートの少なくともいずれか一方が通信不能の場合は、最高の優先度を含む前記優先度データを送出する付記1乃至7いずれか一項記載の中継装置。
(付記9)
リング状に接続された複数の中継装置を含むネットワークシステムであって、
前記中継装置は、
当該中継装置の優先度を記憶した優先度記憶手段と、
前記優先度とホップ数とを含む優先度データを、リングを形成する回線に接続された二つのポートよりそれぞれ前記リングの逆回り方向に送出する優先度データ送出手段と、
他の中継装置より送出された前記優先度データが一方の前記ポートより受信された場合に、当該優先度データの優先度が前記優先度記憶手段に記憶された優先度より高いときは当該優先度データのホップ数を更新して、当該優先度データを他方の前記ポートより送出させる優先度データ転送手段と、
送信元が一致する前記優先度データが前記二つのポートより受信された場合に、受信された二つの前記優先度データに含まれるホップ数の比較結果に応じて前記ポートの一方を論理的に遮断する遮断手段とを有するネットワークシステム。
(付記10)
前記中継装置は、
受信されたユニキャストのフレームの宛先に対応するポートが論理的に遮断されているポートである場合に、当該フレームを該宛先に対応するポートより送出させる中継手段を有する付記9記載のネットワークシステム。
(付記11)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数の差が1である場合は、ホップ数の大きい前記優先度データを受信したポートを遮断する付記9又は10記載のネットワークシステム。
(付記12)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数が同じである場合は、前記優先度データを先に受信したポートを遮断する付記9乃至11いずれか一項記載のネットワークシステム。
(付記13)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数の差が2である場合は、他の前記中継装置において遮断されたポートに接続されるポートを遮断する付記12記載のネットワークシステム。
(付記14)
前記優先度データ転送手段は、前記優先度データの宛先アドレスとして、隣接する中継装置のアドレスを使用する付記9乃至13いずれか一項記載のネットワークシステム。
(付記15)
前記中継装置は、
当該中継装置の優先度を当該中継装置に接続されている回線の数に応じて定める優先度設定手段をさらに備える付記9乃至14いずれか一項記載のネットワークシステム。
(付記16)
前記優先度データ送出手段は、前記二つのポートの少なくともいずれか一方が通信不能の場合は、最高の優先度を含む前記優先度データを送出する付記9乃至15いずれか一項記載のネットワークシステム。
(付記17)
中継装置を、
当該中継装置の優先度を記憶した優先度記憶手段と、
前記優先度とホップ数とを含む優先度データを、リングを形成する回線に接続された二つのポートよりそれぞれ前記リングの逆回り方向に送出する優先度データ送出手段と、
他の中継装置より送出された前記優先度データが一方の前記ポートより受信された場合に、当該優先度データの優先度が前記優先度記憶手段に記憶された優先度より高いときは当該優先度データのホップ数を更新して、当該優先度データを他方の前記ポートより送出させる優先度データ転送手段と、
送信元が一致する前記優先度データが前記二つのポートより受信された場合に、受信された二つの前記優先度データに含まれるホップ数の比較結果に応じて前記ポートの一方を論理的に遮断する遮断手段として機能させるためのプログラム。
(付記18)
前記中継装置を、
受信されたユニキャストのフレームの宛先に対応するポートが論理的に遮断されているポートである場合に、当該フレームを該宛先に対応するポートより送出させる中継手段として機能させる付記17記載のプログラム。
(付記19)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数の差が1である場合は、ホップ数の大きい前記優先度データを受信したポートを遮断する付記17又は18記載のプログラム。
(付記20)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数が同じである場合は、前記優先度データを先に受信したポートを遮断する付記17乃至19いずれか一項記載のプログラム。
(付記21)
前記遮断手段は、受信された二つの前記優先度データに含まれるホップ数の差が2である場合は、他の前記中継装置において遮断されたポートに接続されるポートを遮断する付記20記載のプログラム。
(付記22)
前記優先度データ転送手段は、前記優先度データの宛先アドレスとして、隣接する中継装置のアドレスを使用する付記17乃至21いずれか一項記載のプログラム。
(付記23)
前記中継装置を
当該中継装置の優先度を当該中継装置に接続されている回線の数に応じて定める優先度設定手段として機能させる付記17乃至22いずれか一項記載のプログラム。
(付記24)
前記優先度データ送出手段は、前記二つのポートの少なくともいずれか一方が通信不能の場合は、最高の優先度を含む前記優先度データを送出する付記17乃至23いずれか一項記載のプログラム。