以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
(実施の形態1)
《中継システムの概略構成および障害無し時の概略動作》
図1は、本発明の実施の形態1による中継システムにおいて、その構成例および障害無し時の動作例を示す概略図である。図1に示す中継システムは、リングネットワーク10を構成する複数(ここでは4個)のスイッチ装置SWa〜SWdを備える。スイッチ装置SWa〜SWdのそれぞれは、ノードとも呼ばれる。スイッチ装置SWa〜SWdのそれぞれは、複数(ここでは4個)のリングポートPr[1a],Pr[1b],Pr[2a],Pr[2b]と、m個(mは1以上の整数)のユーザポートPu[1]〜Pu[m]と、を備える。
スイッチ装置SWa〜SWdのそれぞれは、リングポートPr[1a],Pr[1b]にLAG(Link Aggregation Group)(ここではLAG[1])を設定し、リングポートPr[2a],Pr[2b]にLAG(ここではLAG[2])を設定する。LAG(例えばLAG[1])が設定されたリングポート(Pr[1a],Pr[1b])は、論理的に1個のポートとして機能する。本明細書では、LAGが設定される複数のポートを総称してLAGポートと呼ぶ。LAG[1]ポートは、リングポートPr[1a],Pr[1b]を表し、LAG[2]ポートは、リングポートPr[2a],Pr[2b]を表す。
また、本明細書では、便宜上、リングポートとユーザポートとを区別するため、リングポートはLAGポートで構成され、ユーザポートはLAGが設定されない一般ポートで構成されるものとする。すなわち、LAG[1]ポートおよびLAG[2]ポートは、リングポートと同義語であるものとする。実際上、リングポートは、冗長性や負荷分散の観点から、LAGポートで構成されることが望ましい。ただし、各実施の形態において、リングポートは、必ずしもLAGポートに限定されるものではなく、一般ポートであってもよい。また、図1の例では、リングネットワーク10を構成するスイッチ装置の数は、4個とするが、これに限らず2個以上であればよい。
リングネットワーク10は、例えば、ITU−T G.8032に規定されたリングプロトコル(ERP(Ethernet(登録商標) Ring Protection)とも呼ばれる)に基づき制御される。言い換えれば、スイッチ装置SWa〜SWdのそれぞれは、当該リングプロトコルに基づく各種制御機能を備える。スイッチ装置SWa〜SWdのそれぞれは、OSI参照モデルのレイヤ2(L2)の中継処理を行うL2スイッチや、加えて、レイヤ3(L3)の中継処理を行うL3スイッチ等である。ただし、リングネットワーク10上の中継処理は、L2に基づいて行われるため、ここでは、スイッチ装置SWa〜SWdのそれぞれは、L2スイッチである場合を例とする。
リングポートであるLAG[1]ポートおよびLAG[2]ポートは、それぞれ、リングネットワーク10に接続される。言い換えれば、スイッチ装置SWa〜SWdのそれぞれは、リングポートを介してリング状に接続され、これによってリングネットワーク10が形成される。図1の例では、スイッチ装置SWa,SWb,SWc,SWdのLAG[1]ポートは、それぞれ、通信回線を介して、隣接するスイッチ装置SWb,SWc,SWd,SWaのLAG[2]ポートに接続される。
ユーザポートPu[1]〜Pu[m]は、所定のユーザ網に接続される。図1の例では、スイッチ装置SWa〜SWdのユーザポートPu[1]〜Pu[m]は、それぞれ、ユーザ網11a〜11dに接続される。ユーザ網11a〜11dのそれぞれの中には、スイッチ装置や各種情報処理装置(サーバ装置や端末装置等)などが適宜配置される。
ここで、ITU−T G.8032に基づき、スイッチ装置SWaは、オーナーノードに設定され、スイッチ装置SWbは、ネイバーノードに設定される。オーナーノードとネイバーノードとの間のリンクは、RPL(Ring Protection Link)と呼ばれる。リングネットワーク10上に障害が無い場合、スイッチ装置SWaは、RPLの一端に位置するLAG[1]ポートを閉塞状態BKに制御し、スイッチ装置SWbは、RPLの他端に位置するLAG[2]ポートを閉塞状態BKに制御する。閉塞状態BKに制御されたリングポートは、フレームの通過を禁止する。
リングネットワーク10に障害が無い場合、RPLによって、リングネットワーク10上での通信経路のループが防止される。これにより、図1に示すように、例えば、スイッチ装置SWaとスイッチ装置SWbとの間で、スイッチ装置SWd,SWcを介する通信経路12が形成される。ユーザ網11a〜11d間のフレーム転送は、この通信経路12上で行われる。
《中継システムの障害監視方法および障害検出時の概略動作》
図2は、図1の中継システムにおいて、障害監視方法の一例と、障害検出時の概略的な動作例を示す説明図である。図2に示すように、スイッチ装置SWa〜SWdは、それぞれ、LAG[1]ポートに対応して監視ポイントMEPa1〜MEPd1を備え、LAG[2]ポートに対応して監視ポイントMEPa2〜MEPd2を備える。
ITU−T G.8032では、スイッチ装置間のリンクの障害有無を監視するため、イーサネット(登録商標)OAMのCC(Continuity Check)機能を用いることが規定されている。CC機能では、図2に示すように、MEP(Maintenance End Point)と呼ばれる監視ポイントによって監視区間が設定される。各監視区間の両端のMEPは、疎通性監視フレームであるCCM(Continuity Check Message)フレームを互いに定期的に送受信することで、各監視区間の疎通性を監視する。
図2の例では、スイッチ装置SWaの監視ポイントMEPa1は、他装置(SWb)の監視ポイントMEPb2との間でCCM監視区間15abを設定し、これにより、自装置のLAG[1]ポートと、それに接続される他装置(SWb)のLAG[2]ポートと、の間の疎通性を監視する。その反対に、スイッチ装置SWbの監視ポイントMEPb2も、他装置(SWa)の監視ポイントMEPa1との間でCCM監視区間15abを設定し、自装置のLAG[2]ポートと、それに接続される他装置(SWa)のLAG[1]ポートと、の間の疎通性を監視する。これと同様にして、リングネットワーク10上に、順次、CCM監視区間15bc,15cd,15adが設定される。
図2では、スイッチ装置SWcの監視ポイントMEPc1とスイッチ装置SWdの監視ポイントMEPd2との間の監視区間15cdに障害が発生した場合(ステップS101)の概略的な動作例が示されている。この場合、当該障害は、監視ポイントMEPc1,MEPd2によってそれぞれ検出される。スイッチ装置SWcは、監視ポイントMEPc1を用いてLAG[1]ポート(それに接続される通信回線(リンク)を含む)の障害を検出した場合、当該LAG[1]ポートを閉塞状態BKに制御し、FDBフラッシュを実行する(ステップS102)。
詳細は後述するが、FDBフラッシュが実行された場合、FDB(Forwarding DataBase)において、当該FDBフラッシュの対象となるリングポート(ここではLAG[1]ポートおよびLAG[2]ポート)を含んだエントリがフラッシュされる。また、スイッチ装置SWcは、LAG[1]ポートの障害検出に応じて、リングネットワーク10上にR−APS(SF)フレームを送信する(ステップS103)。R−APSフレームは、イーサネットOAMに基づく制御フレームの一種である。SFは、信号故障(Signal Fail)を表し、R−APS(SF)フレームは、障害通知フレームとして機能する。
同様に、スイッチ装置SWdは、監視ポイントMEPd2を用いてLAG[2]ポートの障害を検出した場合、当該LAG[2]ポートを閉塞状態BKに制御し、FDBフラッシュを実行する(ステップS102)。また、スイッチ装置SWdは、当該障害検出に応じて、リングネットワーク10上にR−APS(SF)フレームを送信する(ステップS103)。
オーナーノードであるスイッチ装置SWaは、R−APS(SF)フレームを受信した場合、LAG[1]ポートを、図1に示した閉塞状態BKから開放状態に変更し、FDBフラッシュを実行する(ステップS104)。同様に、ネイバーノードであるスイッチ装置SWbも、R−APS(SF)フレームを受信した場合、LAG[2]ポートを、図1に示した閉塞状態BKから開放状態に変更し、FDBフラッシュを実行する(ステップS104)。開放状態のリングポートは、フレームの通過を許可する。
なお、実際には、各スイッチ装置のそれぞれは、リングポート(LAG[1]ポートおよびLAG[2]ポート)のそれぞれで、閉塞状態BKのリングポートの位置を表す閉塞ポート情報を管理している。そして、各スイッチ装置のそれぞれは、LAG[1]ポートで管理している閉塞ポート情報に変更が生じた場合にFDBフラッシュを実行し、LAG[2]ポートで管理している閉塞ポート情報に変更が生じた場合にFDBフラッシュを実行する。
具体的には、図2のステップS103において、スイッチ装置SWcからのR−APS(SF)フレームは、閉塞ポート情報として、スイッチ装置SWcのLAG[1]ポートを表す識別子を含む。同様に、スイッチ装置SWdからのR−APS(SF)フレームは、スイッチ装置SWdのLAG[2]ポートを表す識別子を含む。この場合、例えば、スイッチ装置SWaは、LAG[1]ポートで新たな閉塞ポート情報(SWcのLAG[1]ポートの識別子)を受信し、これに応じてFDBフラッシュを実行する。さらに、スイッチ装置SWaは、LAG[2]ポートでも新たな閉塞ポート情報(SWdのLAG[2]ポートの識別子)を受信し、これに応じてFDBフラッシュを実行する。このように、スイッチ装置のそれぞれは、実際には、1箇所の障害発生に応じて複数回のFDBフラッシュを実行する場合がある。
《中継システムの障害復旧時の動作》
図3(a)は、図1の中継システムにおいて、障害復旧時の概略動作例を示す説明図であり、図3(b)は、図3(a)に続く概略動作例を示す説明図である。図3(a)では、図2に示したように、スイッチ装置SWcとスイッチ装置SWdとの間のリンクに障害が発生した場合で、当該障害が復旧した場合を想定する。まず、障害が発生している状態では、スイッチ装置SWcのLAG[1]ポートおよびスイッチ装置SWdのLAG[2]ポートは、共に、閉塞状態BKに制御されている。
この状態で、スイッチ装置SWcは、監視ポイントMEPc1を用いてLAG[1]ポートの障害復旧を検出し(ステップS201)、LAG[2]ポートから定期的にR−APS(NR)フレームを送信する(ステップS202)。NRは、要求無し(No Request)を表し、R−APS(NR)フレームは、障害復旧通知フレームとして機能する。同様に、スイッチ装置SWdは、監視ポイントMEPd2を用いてLAG[2]ポートの障害復旧を検出し(ステップS201)、LAG[1]ポートから定期的にR−APS(NR)フレームを送信する(ステップS202)。
オーナーノードであるスイッチ装置SWaは、R−APS(NR)フレームを受信すると、所定の期間(WTR(Wait To Restore)タイマの期間)を経過後にLAG[1]ポートを開放状態から閉塞状態BKに変更し、FDBフラッシュを実行する(ステップS203)。また、スイッチ装置SWaは、図3(b)に示すように、LAG[1]ポートおよびLAG[2]ポートからR−APS(NR,RB)フレームを送信する(ステップS204)。RBは、PRLの閉塞(RPL Blocked)を表し、R−APS(NR,RB)フレームは、障害切り戻しフレームとして機能する。
ネイバーノードであるスイッチ装置SWbは、R−APS(NR,RB)フレームを受信した場合、LAG[2]ポートを開放状態から閉塞状態BKに変更し、FDBフラッシュを実行する(ステップS205)。一方、スイッチ装置SWcは、R−APS(NR,RB)フレームを受信した場合、LAG[1]ポートを閉塞状態BKから開放状態に変更し、FDBフラッシュを実行する(ステップS205)。同様に、スイッチ装置SWdは、R−APS(NR,RB)フレームを受信した場合、LAG[2]ポートを閉塞状態BKから開放状態に変更し、FDBフラッシュを実行する(ステップS205)。また、スイッチ装置SWc,SWdは、R−APS(NR,RB)フレームを受信した場合、R−APS(NR)フレームの送信を停止する。
《スイッチ装置の構成および動作》
図4は、図1の中継システムにおいて、スイッチ装置の主要部の概略構成例を示すブロック図である。図5は、図4におけるFDBの構造例を示す概略図である。図4に示すスイッチ装置SWは、図1に示したスイッチ装置SWa〜SWdの中の少なくとも一つに適用される。
図4に示すスイッチ装置SWは、複数(ここでは2個)のリングポートPr[1a],Pr[1b]で構成されるLAG[1]ポートと、複数(ここでは2個)のリングポートPr[2a],Pr[2b]で構成されるLAG[2]ポートと、複数のユーザポートPu[1]〜Pu[m]と、各種処理部等とを備える。LAG[1]ポートおよびLAG[2]ポートは、通信回線(例えばイーサネット回線)を介してリングネットワーク10に接続される。複数のユーザポートPu[1]〜Pu[m]は、所定のユーザ網(11a〜11dのいずれか)に接続される。以下、各種処理部等に関して説明する。
インタフェース部20は、複数のポート(LAG[1]ポート、LAG[2]ポート、ユーザポートPu[1]〜Pu[m])のいずれかでフレームを受信した際に、フレームに受信したポートのポート識別子(受信ポート識別子と呼ぶ)を付加し、それを中継処理部21またはERP制御部24へ送信する。また、インタフェース部20は、中継処理部21またはERP制御部24からのフレームを、宛先ポート識別子に基づき、複数のポートのいずれかへ送信する。
FDBは、図5に示すように、MACアドレスと、VLAN(Virtual LAN)識別子(VID)と、ユーザポートとの対応関係を含むエントリを保持する。例えば、図5の1番目のエントリは、ユーザ網11aに含まれる端末のMACアドレス「MAa」と、VID「1」と、ユーザポートPu[1]のポート識別子(ポートID){Pu[1]}との対応関係を含んでいる。なお、本明細書では、例えば、{AA}は「AA」の識別子(ID)を表すものとする。
さらに、FDBは、MACアドレスと、VIDと、リングポート(LAGポート)と、FID(第1ID)との対応関係を含むエントリを保持する。例えば、図5の2番目のエントリは、ユーザ網11bに含まれる端末のMACアドレス「MAb」と、VID「1」と、LAG[2]ポート(リングポート)のLAG識別子(LAGID){LAG[2]}と、FID(第1ID)「0x2」との対応関係を含んでいる。このように、FDBは、リングポート(LAGポート)を含むエントリの場合には、FIDを保持する。FID(第1ID)は、詳細は後述するが、概念的には、FDBの面番号を示す。
ERP制御部(リング制御部)24は、OAM処理部31を含み、ITU−T G.8032に規定されたリングプロトコルに基づきリングネットワーク10を制御する。OAM処理部31は、図2に示した監視ポイント(MEP)を備え、イーサネットOAMに基づく疎通性の監視を行う。ERP制御部24は、例えば、図2および図3(a)および図3(b)に示したように、OAM処理部31を用いた障害有無の監視や、各種R−APSフレームの送信または受信や、LAGポート(リングポート)の開放状態/閉塞状態BKの制御等を行う。
ERP制御部24は、図4の例では、インタフェース部20内のVIDフィルタ25に対して、VIDに応じたフレームの中継可否を適宜設定することで、LAGポート(リングポート)の制御を行う。また、ERP制御部24は、図2および図3(a)および図3(b)に示したように、リングプロトコルに基づきFDBフラッシュが必要となる場合には、FDBID管理部23に対してFDBフラッシュ命令を発行する。例えば、図2のステップS104において、スイッチ装置SWaのERP制御部24は、LAG[2]ポートでR−APS(SF)フレームを受信した場合、当該LAG[2]ポートが属する各リングポート(ここではLAG[1]ポートおよびLAG[2]ポート)をフラッシュ対象としてFDBフラッシュ命令を発行する。
FDBID管理部(ID管理部)23は、FID管理部27、FIH管理部28、FP管理部29およびフラッシュ実行部30を備え、FDBID管理テーブル(ID管理テーブル)22で保持される各種ID等を管理する。中継処理部21は、LAG管理部26を備え、FDBID管理テーブル(ID管理テーブル)22を用いて、FDBの学習処理およびFDBの検索処理を行う。LAG管理部26は、LAG[1]ポートとそのメンバポート(リングポートPr[1a],Pr[1b])との対応関係、およびLAG[2]ポートとそのメンバポート(リングポートPr[2a],Pr[2b])との対応関係を管理する。
例えば、インタフェース部20は、リングポートPr[1a]でフレームを受信した場合、当該フレームに受信ポート識別子としてポート識別子{Pr[1a]}を付加する。LAG管理部26は、受信ポート識別子がLAGポートのメンバポートに該当するため、受信ポート識別子をポート識別子{Pr[1a]}からLAGID{LAG[1]}に置き換える。中継処理部21は、当該フレームの送信元MACアドレスをLAGID{LAG[1]}に対応付けてFDBに学習する。
また、LAG管理部26は、例えば、FDBの検索処理によって得られた宛先ポート識別子がLAGID{LAG[2]}であった場合、そのメンバポート(Pr[2a],Pr[2b])のいずれかを所定の分散規則に基づき選択し、宛先ポート識別子を、当該選択したポート識別子({Pr[2a]}または{Pr[2b]})に置き換える。中継処理部21は、当該宛先ポート識別子を付加したフレームをインタフェース部20へ送信し、インタフェース部20は、当該宛先ポート識別子に基づくポートに当該フレームを中継する。
《比較例となるFDBID管理テーブルおよびFDBID管理部の詳細》
図21(a)は、本発明の比較例として検討したスイッチ装置において、FDBID管理テーブルの構造例を示す概略図であり、図21(b)は、本発明の比較例として検討したスイッチ装置において、FDBID管理部が行うテーブル管理処理の一例を示すフロー図である。図22は、本発明の比較例として検討したスイッチ装置において、FDBID管理部が行うFDBフラッシュ処理の一例を示すフロー図である。
図21(a)に示すFDBID管理テーブル22’は、LAGIDと、FID(第1ID)との対応関係を保持する。FID(第1ID)は、この例では、2ビットとなっており、「0x」を16進表記として「0x0」〜「0x3」の中のいずれかの値が設定される。FDBID管理部は、図21(b)のようにして、当該FDBID管理テーブル22’を管理する。
図21(b)において、FDBID管理部は、LAGID{LAG[j]}のFDBフラッシュ命令を受信したか否かを判別する(ステップS801)。FDBフラッシュ命令は、前述したように、図4のERP制御部24から発行される。FDBID管理部は、FDBフラッシュ命令を受信した場合、FDBID管理テーブル22’で当該LAGID{LAG[j]}のFIDを1つ切り換える(ステップS802)。ここでは、FIDは、インクリメント方式で切り換えられ、最大値(max)を超える際には最小値(min)へ戻るように切り換えられるものとする。ただし、特にインクリメント方式に限定されず、例えばデクリメント方式等を用いてもよい。
また、このような処理と並行して、FDBID管理部は、図22に示すように、FDBID管理テーブル22’で、LAGID{LAG[j]}のFIDの切り換えが発生したか否かを判別する(ステップS901)。FIDの切り換えが発生した場合、FDBID管理部は、LAGID{LAG[j]}およびFID(t−1)を含むFDBエントリをフラッシュする(ステップS902)。ここで、FID(t−1)は、1つ切り換え前のFIDを表し、例えば、ステップS901でFIDが「0x2」から「0x3」に切り換えられた場合、FID(t−1)は「0x2」となる。
このように、FDBID管理部は、FDBフラッシュ命令が発行される毎に、FDBID管理テーブル22’のFID(言い換えれば面番号)を所定の範囲内で巡回するように順次切り換える。また、これと並行して、FDBID管理部は、FIDを追いかけるように(ただし追い付かないように)フラッシュ対象のFID(面番号)を定め、当該面番号を含むFDBエントリをフラッシュする。
《比較例となるスイッチ装置のフレーム中継処理》
図23(a)は、本発明の比較例として検討したスイッチ装置において、FDBフラッシュが生じた場合の動作例を示す説明図であり、図23(b)は、図23(a)に続いてフレームを受信した場合の動作例を示す説明図である。まず、図23(a)では、例えば、図2のスイッチ装置SWaが、FDBID管理テーブル22’にLAGID{LAG[1]},{LAG[2]}とFID「0x2」との対応関係を保持している状態で、ステップS104のようにFDBフラッシュを実行する場合を想定している。
この場合、スイッチ装置SWaのFDBID管理部は、図23(a)に示すように、FDBフラッシュ命令に応じて、FDBID管理テーブル22’のLAGID{LAG[1]},{LAG[2]}に対応するFIDを「0x2」から「0x3」に切り換える。これに応じて、FDBID管理部は、LAGID{LAG[1]},{LAG[2]}およびFID「0x2」(すなわち旧面番号)を含むFDBエントリのフラッシュを開始する。
ここで、仮にFIDが設けられない場合、スイッチ装置SWaは、LAGID{LAG[1]},{LAG[2]}を含むFDBエントリのフラッシュが完了するまで、FDBの学習処理および検索処理を行うことができない。一方、FDBフラッシュは、例えば、各エントリ毎にフラッシュ対象(すなわちLAG[1]ポート、LAG[2]ポート)か否かを順次判別しながら行われるため、ある程度の時間を要する。そこで、以下に示すような処理を実行することで、このようなFDBフラッシュに要する時間を実質的に隠蔽することができる。
図23(b)では、例えば、図2のスイッチ装置SWaが、FDBフラッシュが未完の状態で、LAG[2]ポートでユーザフレームを受信した場合の動作例が示されている。当該ユーザフレームは、例えば、送信元MACアドレスSAがMACアドレスMAdであり、宛先MACアドレスDAがMACアドレスMAbである。MACアドレスMAdは、図1のユーザ網11d内の端末のMACアドレスであり、MACアドレスMAbは、図1のユーザ網11b内の端末のMACアドレスである。すなわち、当該ユーザフレームは、スイッチ装置SWdからスイッチ装置SWbへ転送されるべきフレームとなる。
スイッチ装置SWaの中継処理部は、当該ユーザフレームをLAG[2]ポートで受信した場合に、FDBID管理テーブル22’からFID「0x3」を取得する。中継処理部は、当該ユーザフレームの送信元MACアドレスSA「MAd」を、所定のVID(ここでは「1」)および受信ポート識別子であるLAGID{LAG[2]}に加え、取得したFID「0x3」に対応付けてFDBに学習する。なお、中継処理部は、仮に当該FIDを含めて同一のエントリが既に学習済みの場合には、通常通り、エージングタイマ(図示せず)の更新を行う。
また、中継処理部は、当該ユーザフレームの宛先MACアドレスDA「MAb」およびVID「1」を検索キーとしてFDBを検索し、LAGID{LAG[2]}およびFID(便宜上、FID[1]とする)「0x2」を取得する。さらに、中継処理部は、FDBID管理テーブル22’から、当該LAGID{LAG[2]}に対応するFID(便宜上、FID[2]とする)「0x3」を取得する。ここで、LAGID{LAG[2]}に対応するFIDは、FID[1](「0x2」)とFID[2](「0x3」)とで不一致となる。この場合、中継処理部は、宛先ミスヒットとし、当該ユーザフレームをフラッディングする。一方、中継処理部は、FIDが一致する場合には、宛先ヒットとする。
以上のように、面番号となるFID(第1ID)を設けることで、FDBフラッシュに要する時間を実質的に隠蔽することができ、FDBフラッシュの高速化が実現可能になる。具体的には、図23(a)および図23(b)から判るように、FIDを設けることで、仮想的に、複数面(FIDが2ビットの場合には4面)のFDBを設けることが可能になる。その結果、スイッチ装置は、FDBフラッシュが必要となった場合、FDB面を切り換えることで実質的にFDBフラッシュを完了したことになり、即座に、学習処理および検索処理を実行できるようになる。また、スイッチ装置は、FDB面の切り換えと並行して、学習処理および検索処理に影響を与えることなく、旧面番号のFDB面を適宜フラッシュすることができる。
《比較例となるスイッチ装置の問題点》
図23(a)および図23(b)等に示した方式は、前述した特許文献1の方式と異なり、FIDのビット数を増やし、FDBフラッシュが生じた場合に、FIDをインクリメントさせながら巡回させる方式を用いている。これにより、例えば、図23(a)に示したFID=「0x2」の状態からFDBフラッシュが3連続で生じた場合であっても、特に問題は生じない。すなわち、この場合、FDBID管理テーブル22’のFIDは「0x1」となるため、当該FIDを用いて学習処理および検索処理を行うことができ、これと並行して、FIDが「0x2」および「0x3」ならびに「0x0」であるFDBエントリを順にフラッシュすることができる。
しかしながら、例えば、図23(a)に示したFID=0x2の状態からFDBフラッシュが4連続で生じ、かつ、FID=「0x2」のFDBエントリのフラッシュが未完の場合には問題が生じ得る。すなわち、この場合、FDBID管理テーブル22’のFIDは「0x2」となり、当該FIDを用いて学習処理および検索処理が行われる。そうすると、図23(a)に示されるような、FID=「0x2」で残存している各FDBエントリは、本来無効なエントリであるにも関わらず、有効なエントリとみなされる恐れがある。
このように、FDBフラッシュの発生頻度の増加に伴い、FIDが、一巡したのちFDBフラッシュを実行中のFIDに追い付いてしまう場合に問題が生じ得る。言い換えると、FIDが一巡するのに要する時間が、FDBフラッシュに要する時間と比較して短い場合に問題が生じ得る。ここで、図2で述べたように、FDBフラッシュは、1箇所の障害発生に応じて複数回生じる場合がある。さらに、図1のリングネットワーク10は、実際には、多数のスイッチ装置で構成され、これに応じて多くのリンクで障害が発生する恐れがある。そして、その各リンクで障害発生または障害回復が生じる毎に、FDBフラッシュが生じる。このような場合、短期間でFDBフラッシュが多発する状況が発生し得る。
そこで、例えば、FIDのビット数を更に増やすことで対策することが考えられる。ただし、FIDのビット数を増やすと、FDBのビット数も増やす必要がある。FDBは、通常、ハードウェアによって構成され、使用可能なビット数は、ハードウェアに依存して制限される場合が多い。その結果、FIDのビット数の拡張による対策では、前述した問題を十分に解決できない恐れがある。
《FDBID管理テーブルの詳細》
図6は、図4のスイッチ装置において、FDBID管理テーブルの構造例を示す概略図である。図6に示すFDBID管理テーブル(ID管理テーブル)22は、リングポートと、FID(第1ID)と、FP(第2ID)と、FIH(フラッシュ命令保持フラグ)と、の対応関係を保持する。すなわち、FDBID管理テーブル22は、図21(a)のFDBID管理テーブル22’と比較して、FPおよびFIHが追加された構造になっている。
詳細は後述するが、FP(第2ID)は、どのFID(言い換えれば面番号)を含むエントリまでフラッシュが完了しているかを示し、FIH(フラッシュ命令保持フラグ)は、FDBフラッシュ命令の保持の有無を示す。例えば、図6のLAGID{LAG[1]}では、FIDは「0x2」であり、FPは「0x1」であり、FIHは「0」である。これは、FDBで現在使用しているFID(面番号)が「0x2」であり、FP(すなわちFID=「0x1」)のエントリまでフラッシュが完了しており、FDBフラッシュ命令を保持していない状態を表す。
なお、本実施の形態1では、FPは、FDBフラッシュを完了した最新のFID(面番号)を表すこととするが、必ずしもこれに限定されず、どの面番号を含むエントリまでフラッシュが完了しているかを直接的または間接的に示すものであればよい。例えば、FPは、FDBフラッシュを完了した最新の面番号の代わりに、次にFDBフラッシュの対象となる面番号等であってもよい。この場合、FPは、「0x2」となり、間接的に、FID=「0x1」のエントリまでFDBフラッシュが完了していることが判る。
また、図6のFDBID管理テーブル22では、LAGID{LAG[1]},{LAG[2]}に加えて、LAGID{LAG[i]},{LAG[i+1]}が示される。例えば、図1のスイッチ装置SWa〜SWdが複数のリングネットワーク10を構成するような場合、その中の一つのリングに接続されるリングポートがLAG[1]ポートおよびLAG[2]ポートとなり、他の一つのリングに接続されるリングポートがLAG[i]ポートおよびLAG[i+1]ポートとなる。
LAG[i]ポートおよびLAG[i+1]ポートは、LAG[1]ポートおよびLAG[2]ポートとは別のリングネットワーク10に属するため、FID,FP,FIHもLAG[1]ポートおよびLAG[2]ポートとは独立して管理される。図6のLAGID{LAG[i]}では、FIDは「0x1」であり、FPは「0x1」であり、FIHは「1」である。これは、FID=「0x1」のエントリまでフラッシュが完了しており、それと同じエントリを使用している状態でFDBフラッシュ命令が発行され、当該FDBフラッシュ命令を保持した状態を表す。
《FDBID管理部の概略動作》
図7は、図4のスイッチ装置において、FDBID管理部の概略的な動作例を示す説明図である。FDBID管理部23は、例えば、次のようにしてFDBID管理テーブル22におけるFID,FP,FIHを管理する。まず、図7の状態ST10では、FID=「0x0」、FP=「0x3」、FIH=「0」となっており、「FID=FP+1」となっている。このように、FPがFIDの一つ切り換え前のFID(すなわちFID(t−1))となっている状態は、フラッシュ対象のエントリが存在しない初期状態となる。初期状態では、FDBID管理部23は、FDBフラッシュ命令に応じてFIDを切り換えるが、FPの切り換えに関しては、FIDの切り換えが行われない限り行わない。
状態ST10において、FDBフラッシュ命令が1回発行された場合、FDBID管理部23は、FDBフラッシュ命令に応じてFIDを1つ切り換える。その結果、状態ST11のように、FID=「0x1」、FP=「0x3」、FIH=「0」となる。この状態ST11は、FDBID管理部23によってFIDの切り換えもFPの切り換えも行われる通常状態となる。ここで、図示は省略されているが、FDBID管理部23は、FIDの「0x0」から「0x1」への切り換えに応じて、FID=「0x0」のエントリのフラッシュを開始する。その後、FDBID管理部23は、当該フラッシュが完了すると、FPを「0x0」に切り換える。
状態ST11において、FID=「0x0」のエントリのフラッシュが未完の状態で、更に、FDBフラッシュ命令が2回発行された場合、FDBID管理部23は、当該FDBフラッシュ命令に応じてFIDを2つ切り換える。その結果、状態ST12のように、FID=「0x3」、FP=「0x3」、FIH=「0」となり、「FID=FP」となる。このように、FID(第1ID)(ここでは「0x3」)がFP(第2ID)で示されるフラッシュ済みの面番号(ここでは「0x3」)に追い付いた状態は、フラッシュ待ち状態となる。
フラッシュ待ち状態では、FDBID管理部23は、フラッシュ対象のFID(面番号)を順に切り換えながら当該面番号を含むエントリを順にフラッシュすると共に、その完了に応じてFPを順に切り換える。ただし、FDBID管理部23は、FIDの切り換えに関しては、FDBフラッシュ命令が発行された場合であっても、FPの切り換えが行われない限り行わない。
状態ST12において、FID=「0x0」のエントリのフラッシュが未完の状態で、更に、FDBフラッシュ命令が1回発行された場合、状態ST13となる。状態ST13では、前述したようにFIDの切り換えは行われず、FID=「0x3」、FP=「0x3」となる。ただし、FDBID管理部23は、FDBフラッシュ命令に応じて、FIDを切り換えない代わりに、FIH(フラッシュ命令保持フラグ)をフラグ有(「1」)に定める。
状態ST13は、本来実行されるべきFDBフラッシュ命令(すなわちFIDの切り換え)を実行できていない状態である。したがって、本実施の形態1では、詳細は後述するが、図4の中継処理部21は、この状態ST13で受信したフレームをフラッディングによって中継する。なお、状態ST13において、更に、FDBフラッシュ命令が発行された場合、FDBID管理部23は、状態ST13を維持する。すなわち、FDBID管理部23は、状態ST13において、複数回のFDBフラッシュ命令が発行された場合であっても、当該複数回のFDBフラッシュ命令を1回のFDBフラッシュ命令に集約する。
状態ST13において、FDBID管理部23は、FID=「0x0」のエントリのフラッシュが完了した場合、状態ST14のように、FPを「0x3」から「0x0」に切り換える(言い換えれば巡回させる)。このように、FDBID管理部23は、FIH(フラッシュ命令保持フラグ)がフラグ有の状態でFPを切り換えた場合、状態ST15のように、FPの切り換えに応じてFIDを「0x3」から「0x0」に切り換えたのち、FIHをフラグ無(すなわち「0」)に定める。
なお、図示は省略されているが、FDBID管理部23は、状態ST15において、FID=「0x1」のエントリのフラッシュを開始している。仮に、その後にFDBフラッシュ命令が発行されない状態で、FID=「0x1」を含めて順に3FID分のエントリのフラッシュが完了すると、前述した状態ST10となる。
以上のように、FDBID管理部(ID管理部)23は、FDBフラッシュ命令が発行される毎に、FDBID管理テーブル(ID管理テーブル)22のFID(第1ID)を所定の範囲内で巡回するように順次切り換える。これと並行して、FDBID管理部23は、FIDを追いかけるように(ただし追い付かないように)フラッシュ対象の面番号を定め、当該面番号を含むエントリのフラッシュが完了した場合にFDBID管理テーブル22のFP(第2ID)を切り換える。ただし、FDBID管理部23は、状態ST12,ST13に示したように、FPで示されるフラッシュ済みの面番号を追い越さないようにFIDを切り換える。
これにより、図23(a)および図23(b)の場合と同様に、FDBフラッシュの高速化が実現できることに加えて、図23(a)および図23(b)の場合と異なり、FDBフラッシュの発生頻度の増加に伴い、本来無効なエントリが有効なエントリとみなされるような誤動作を防止することが可能になる。さらに、FIH(フラッシュ命令保持フラグ)を設けることで、状態ST13〜状態ST15に示したように、FDBフラッシュ命令(すなわちFIDの切り換え)を実行できない状況で、当該命令の退避が可能になる。そして、当該命令を実行できる状況になった時点で、即座に当該命令の実行が可能になり、また、当該命令を実行できない状況では、フレームのフラッディングによって、フレームの損失等を防止することができる。
《FDBID管理部の詳細動作》
図8は、図4のスイッチ装置において、FDBID管理部内のFID管理部の処理内容の一例を示すフロー図である。図8において、FID管理部27は、まず、LAGID{LAG[j]}のFDBフラッシュ命令を受信したか否かを判別する(ステップS301)。LAGID{LAG[j]}のFDBフラッシュ命令は、前述したように、図4のERP制御部24によって発行される。当該FDBフラッシュ命令を受信した場合、FID管理部27は、FDBID管理テーブル22で、LAGID{LAG[j]}に対応するFID(第1ID)およびFP(第2ID)を参照する(ステップS302)。
次いで、FID管理部27は、FIDとFPとが不一致の場合、FDBID管理テーブル22で、LAGID{LAG[j]}に対応するFIDを1つ切り換える(ステップS303,S304)。なお、前述したようにインクリメント方式を用いた場合、FIDは、最大値(max)を超える際には最小値(min)へ戻るように(すなわち巡回するように)切り換えられる。一方、FID管理部27は、FIDとFPとが一致する場合(すなわち、図7の状態ST12,ST13のようにFIDがFPに追い付いている場合)、FDBID管理テーブル22で、LAGID{LAG[j]}に対応するFIH(フラッシュ命令保持フラグ)をフラグ有に定める(ステップS303,S305)。
図9(a)および図9(b)は、図4のスイッチ装置において、FDBID管理部内のFP管理部の処理内容の一例を示すフロー図である。図9(a)において、FP管理部29は、FID管理部27で、LAGID{LAG[j]}のFIDの切り換えが発生したか否かを判別する(ステップS401)。FIDの切り換えが発生した場合、FP管理部29は、LAGID{LAG[j]}およびFID(t−1)(すなわち1つ切り換え前のFID)のFDBエントリを対象とするフラッシュの実行要求を命令キューに格納する(ステップS402)。すなわち、FP管理部29は、FIDの切り換えが生じる毎に、その切り換え前のFIDを対象としたフラッシュの実行要求を、順次、命令キュー(例えばFIFO(First In First Out)型)に格納していく。
また、図9(b)において、FP管理部29は、命令キューにフラッシュの実行要求が格納されているか否かを判別する(ステップS501)。実行要求が格納されている場合、命令キューからLAGID{LAG[j]}およびFID(t−1)を含む実行要求を取得し、それを図4のフラッシュ実行部30に送信する(ステップS502)。フラッシュ実行部30は、当該実行要求に応じて、FDBの中からLAGID{LAG[j]}およびFID(t−1)を含むエントリを抽出し、当該エントリのフラッシュを実行する。フラッシュ実行部30は、当該フラッシュの実行を完了すると完了通知を送信する。
FP管理部29は、ステップS502の後、フラッシュ実行部30からの完了通知を待つ(ステップ503)。FP管理部29は、当該完了通知を受信した場合、FDBID管理テーブル22で、LAGID{LAG[j]}に対応するFPをFID(t−1)に切り換える(すなわちFPを一つ切り換える)(ステップS504)。その後、FP管理部29は、ステップS501に戻り、命令キューが空になるまで同様の処理を繰り返す。その結果、FP管理部29は、FIDを追いかけるように(ただし追い付かないように)フラッシュ対象の面番号を定め、当該面番号を含むエントリのフラッシュが完了した場合にFPを切り換える。
図10は、図4のスイッチ装置において、FDBID管理部内のFIH管理部の処理内容の一例を示すフロー図である。FIH管理部28は、図7の状態ST14,ST15に示したような処理を行う。図10において、FIH管理部28は、FP管理部29で、LAGID{LAG[j]}に対応するFPの切り換えが生じたか否かを判別する(ステップS601)。
FPの切り換えが生じた場合、FIH管理部28は、FDBID管理テーブル22で、LAGID{LAG[j]}に対応するFIHがフラグ有になっているか否かを判別する(ステップS602)。FIHがフラグ有の場合、FIH管理部28は、FDBID管理テーブル22で、LAGID{LAG[j]}に対応するFIDを一つ切り換える(ステップS603)。また、FIH管理部28は、FDBID管理テーブル22で、LAGID{LAG[j]}に対応するFIHをフラグ無に定める(ステップS604)。
《中継処理部の詳細動作》
図11は、図4のスイッチ装置において、中継処理部の処理内容の一例を示すフロー図である。図12は、図11において、FDBの学習処理の処理内容の一例を示すフロー図である。図13は、図11において、FDBの検索処理の処理内容の一例を示すフロー図である。中継処理部21は、図11に示すように、ユーザフレームを受信した場合に(ステップS701)、FDBの学習処理(ステップS702)とFDBの検索処理(ステップS703)とを実行する。
FDBの学習処理(ステップS702)において、中継処理部21は、図12に示すように、まず、リングポートでフレームを受信したか否かを判別する(ステップS7021)。言い換えれば、中継処理部21は、受信ポート識別子がLAGID{LAG[j]}か否かを判別する。受信ポート識別子がLAGID{LAG[j]}の場合、中継処理部21は、FDBID管理テーブル22から、LAGID{LAG[j]}に対応するFIDおよびFIHを取得する(ステップS7022)。
次いで、中継処理部21は、取得したFIHがフラグ無かフラグ有かを判別する(ステップS7023)。フラグ無の場合、中継処理部21は、フレームの送信元MACアドレスを、受信ポート識別子、VIDおよびFIDに対応付けてFDBに学習する(ステップS7024)。すなわち、中継処理部21は、FID(第1ID)を、リングポートおよび送信元MACアドレスと共にFDBに学習する。
一方、中継処理部21は、ステップS7023でFIH(フラッシュ命令保持フラグ)がフラグ有の場合には、FDBの学習を行わず、処理を終了する。また、中継処理部21は、ステップS7021で受信ポートがリングポートではないポート(例えばユーザポート)の場合、フレームの送信元MACアドレスを、受信ポート識別子およびVIDに対応付けてFDBに学習する(ステップS7025)。
図11のFDBの検索処理(ステップS703)において、中継処理部21は、図13に示すように、まず、受信したフレームの宛先MACアドレスおよびVIDを検索キーとしてFDBを検索し(ステップS7031)、FDBの検索結果がヒットかミスヒットかを判別する(ステップS7032)。ヒットの場合、中継処理部21は、宛先ポート(宛先ポート識別子)がリングポート(LAGID{LAG[k]})か否かを判別する(ステップS7033)。
宛先ポート識別子がLAGID{LAG[k]}の場合、中継処理部21は、FDBからLAGID{LAG[k]}に対応するFID(FID[1]とする)を取得する(ステップS7034)。なお、当該FID[1]は、実際には、例えば、ステップS7031でのFDBの検索処理の際に取得される。また、中継処理部21は、FDBID管理テーブル22からLAGID{LAG[k]}に対応するFID(FID[2]とする)およびFIHを取得する(ステップS7035)。続いて、中継処理部21は、取得したFIHがフラグ無かフラグ有かを判別する(ステップS7036)。FIHがフラグ無の場合、中継処理部21は、FID[1]とFID[2]とが一致するか否かを判別する(ステップS7037)。
ステップS7037で、FID[1]とFID[2]とが一致する場合、中継処理部21は、宛先ヒットとし、宛先ポート識別子(すなわちLAGID{LAG[k]})に対応するリングポート(具体的にはLAGID{LAG[k]}のメンバポートのいずれか)にフレームを中継する(ステップS7038)。一方、FID[1]とFID[2]とが不一致の場合、中継処理部21は、宛先ミスヒットとし、フレームをフラッディングする(ステップS7039)。具体的には、中継処理部21は、当該フレームと同一のVIDが割り当てられ、かつ受信ポートを除くポートに当該フレームを中継する。
また、中継処理部21は、ステップS7032でFDBの検索結果がミスヒットの場合と、ステップS7036でFIH(フラッシュ命令保持フラグ)がフラグ有の場合も、宛先ミスヒットとしてステップS7039へ移行し、フレームをフラッディングする。さらに、中継処理部21は、ステップS7033で、宛先ポートがリングポートではないポート(例えばユーザポート)である場合、ステップS7038へ移行し、当該宛先ポートにフレームを中継する。
このように、中継処理部21は、図23(b)の場合と同様に、FDBの検索結果に基づき、受信したフレームの宛先ポートがリングポートの場合で、当該リングポートに対応するFID(第1ID)がFDBとFDBID管理テーブル22とで一致する場合に宛先ヒットとし、不一致の場合に宛先ミスヒットとしている。これに加えて、中継処理部21は、図23(b)の場合と異なり、受信したフレームの宛先ポートがリングポートの場合で、当該リングポートに対応するFIH(フラッシュ命令保持フラグ)がフラグ有の場合にも、宛先ミスヒットとし、当該フレームをフラッディングしている。これにより、図7でも述べたように、FDBフラッシュ命令(すなわちFIDの切り換え)を実行できない状況でも、フレームの損失等を防止することができる。
以上、本実施の形態1の中継システムおよびスイッチ装置を用いることで、代表的には、FDBフラッシュの高速化と共に、FDBフラッシュに伴う誤動作を防止することが可能になる。
(実施の形態2)
《スイッチ装置の構成(応用例[1])》
図14は、本発明の実施の形態2によるスイッチ装置において、主要部の概略構成例を示すブロック図である。図17は、図14におけるFDBIDテーブルの構造例を示す概略図である。図14に示すスイッチ装置は、シャーシ型のスイッチ装置となっており、図1のスイッチ装置SWa〜SWdの少なくとも一つに適用することができる。当該スイッチ装置は、複数のラインカードLC[1]〜LC[n]と、管理カードMCと、ファブリック経路部35と、を備える。ファブリック経路部35は、複数のラインカードLC[1]〜LC[n]間の通信および複数のラインカードLC[1]〜LC[n]と管理カードMCとの間の通信を仲介する。ファブリック経路部35は、具体的には、例えば、メッシュ状の配線で構成される場合や、ファブリックカードで構成される場合等がある。
複数のラインカードLC[1]〜LC[n]のそれぞれは、単数または複数のポートと、インタフェース部20と、ERP制御部24bと、中継処理部36と、FDBと、FDBIDテーブル37と、FDBID管理部23bと、ファブリックインタフェース部38と、を有する。ファブリックインタフェース部38は、ERP制御部24b、中継処理部36、およびFDBID管理部23bと、ファブリック経路部35との間の通信を仲介する。
図14の例では、ラインカードLC[1]は、LAG[1]ポートのメンバポートであるリングポートPr[1a],Pr[1b]を備え、ラインカードLC[n]は、LAG[2]ポートのメンバポートであるリングポートPr[2a],Pr[2b]を備える。ただし、勿論、これに限定されず、リングポートPr[1a],Pr[1b],Pr[2a],Pr[2b]のそれぞれは、ラインカードLC[1]〜LC[n]のいずれかに適宜設けられればよい。例えば、リングポートPr[1b]は、リングポートPr[1a]とは異なるラインカードに設けられてもよい。また、図示は省略されているが、ラインカードLC[1]〜LC[n]のいずれかは、図4に示したユーザポートPu[1]〜Pu[m]を適宜備える。
インタフェース部20およびFDBは、図4の場合と同様である。FDBIDテーブル(IDテーブル)37は、図17に示すように、リングポートと、FID(第1ID)と、FIH(フラッシュ命令保持フラグ)との対応関係を保持する。すなわち、FDBIDテーブル37は、図6に示したFDBID管理テーブル22からFPを省略したような構造となっている。
また、図17のFDBIDテーブル37は、ここでは、4ビットのFIDを備える。これに応じて、各ラインカードLC[1]〜LC[n]のFDBも、4ビットのFIDを備える。ただし、FIDのビット数は、特にこれに限定されず、1ビット以上であればよく、望ましくは2ビット以上であればよい。なお、実施の形態1で述べたように、FIDのビット数は、FDBのハードウェア構成等に依存して上限が定められる。FDBID管理部23bは、詳細は後述するが、図4の場合と同様のフラッシュ実行部30を備え、FDBIDテーブル37を管理する。
中継処理部36は、図4の場合と同様のLAG管理部26を備え、図11〜図13に示したようなFDBの学習処理および検索処理を行う。ただし、中継処理部36は、FDBID管理テーブル(ID管理テーブル)22の代わりにFDBIDテーブル(IDテーブル)37を用いてFDBの学習処理および検索処理を実行する。さらに、中継処理部36は、図4の場合と異なり、FDB同期部39を備える。
FDB同期部39は、複数のラインカードLC[1]〜LC[n]間でFDBの保持内容を同期化する機能を備える。具体的には、FDB同期部39は、例えば、自ラインカードのポートでフレームを受信した場合に、受信ポート識別子および当該フレームのヘッダ部分を含む学習用フレームを生成し、ファブリック経路部35を介して他のラインカードへ送信する。他のラインカードのFDB同期部39は、当該学習用フレームに基づいてFDBの学習を行う。
管理カードMCは、FDBID管理テーブル(ID管理テーブル)22、FDBID管理部(ID管理部)23a、およびERP制御部24aを備える。FDBID管理テーブル22は、図6の場合と同様の構造を備える。FDBID管理部23aは、図4の場合と同様のFID管理部27、FIH管理部28およびFP管理部29を備え、FDBID管理テーブル22を管理する。
このように、図14のスイッチ装置は、概略的には、図4に示したFDBID管理部23が、複数のラインカードLC[1]〜LC[n]のFDBID管理部23bと、管理カードMCのFDBID管理部23aとに分割されたような構成となっている。さらに、図14のスイッチ装置は、図4に示したERP制御部24も、複数のラインカードLC[1]〜LC[n]のERP制御部24bと、管理カードMCのERP制御部24aとに分割されたような構成となっている。
なお、インタフェース部20およびファブリックインタフェース部38のそれぞれは、例えば、ASIC(Application Specific Integrated Circuit)等に実装される。ERP制御部24a,24bは、プロセッサ(CPU)によるプログラム処理等によって実現される。FDBID管理部23a,23bは、プロセッサ(CPU)によるプログラム処理で実現されるか、場合によっては、FPGA(Field Programmable Gate Array)等に実装される。FDBID管理テーブル22およびFDBIDテーブル37は、RAM等に実装され、FDBは、CAM(Content Addressable Memory)等に実装される。中継処理部36は、例えば、FPGA(Field Programmable Gate Array)等に実装される。ただし、各部の具体的な実装形態は、勿論、これに限定されるものではなく、ハードウェアまたはソフトウェアあるいはその組合せを用いて適宜実装されればよい。
ここで、図14の構成の前提となる検討事項として、複数のラインカードLC[1]〜LC[n]は、FID、FPおよびFIHを同時に更新する(言い換えれば同期する)ことが望まれる。複数のラインカードで同期ズレが生じると、様々な問題が生じる恐れがある。代表的には、複数のラインカードのそれぞれが、一時的に、他のラインカードでは無効となっているFDBエントリを有効とみなしてしまうこと等が起こり得る。
同期を実現するためには、特に、FPの同期に工夫が必要となる。すなわち、FDBエントリのフラッシュ(すなわち、図9(a)等に示したフラッシュの実行要求)を実際に実行するのは、FDBを備える各ラインカードである。各ラインカードのそれぞれは、図9(b)に示したように、フラッシュの実行要求が蓄積されている限り、任意のタイミングでFDBエントリのフラッシュを開始することができ、その所要時間(言い換えれば実行要求の完了通知を送信するタイミング)も他のラインカードとは異なり得る。このように各ラインカード毎にタイミングが異なり得る状態で、FPを同期化する工夫が必要となる。
このような同期の実現方式として、例えば、複数のラインカードLC[1]〜LC[n]間で相互に通信を行う方式が考えられる。この場合、複数のラインカードのそれぞれは、他のラインカードにおけるFDBエントリのフラッシュの進行状態を監視しながらFPを定め、さらに、この定めたFPを前提としてFIDやFIHを定め、定めたFP,FID,FIHを同期する必要がある。例えば、FIDは、FPを追い越さないように定められ、FIHは、FID=FPの状態を前提としてフラグ有に定められる。このような処理を複数のラインカードのそれぞれが行うと、通信を含めた各種処理が複雑化する恐れがある。そこで、図14では、管理カードMCがFID,FP,FIHを集中管理することで、同期を実現する。
《スイッチ装置の概略動作(応用例[1])》
図15は、図14のスイッチ装置において、管理カードのFID管理部の概略動作例を示す説明図である。管理カードMCのFID管理部27は、図8に示したような処理を実行する。図15には、図8に示した各処理の中から、ステップS301の処理と、ステップS304,S305の処理の具体例が示されている。図15において、まず、ラインカードLC[1]は、LAG[1]ポートでR−APS(SF)フレームを受信する。ラインカードLC[1]のERP制御部24bは、受信したR−APS(SF)フレームが自身宛てか否かを判別し、自身宛ての場合には、当該R−APS(SF)フレームをファブリック経路部35を介して管理カードMCのERP制御部24aに向けて送信する(ステップS300)。
管理カードMCのERP制御部24aは、当該R−APS(SF)フレームを受信し、その内容を解釈した結果、FID管理部27に向けてLAG[1]ポートおよびLAG[2]ポートのFDBフラッシュ命令を送信する(ステップS301)。FID管理部27は、当該FDBフラッシュ命令を受信し(ステップS301)、図8のステップS302,S303の処理を経て、ステップS304またはステップS305の処理を行う。ステップS304において、FID管理部27は、FDBID管理テーブル(ID管理テーブル)22のFID(第1ID)を切り換える。この際に、FID管理部27は、併せて、複数のラインカードLC[1]〜LC[n]のそれぞれに向けてFIDの切り換えを指示する。
複数のラインカードLC[1]〜LC[n]のそれぞれのFDBID管理部23bは、当該管理カードMCからのFIDの切り換え指示を受信し、その指示通りにFDBIDテーブル37のFIDを切り換える。その結果、管理カードMCのFDBID管理テーブル22および複数のラインカードのFDBIDテーブル37において、FIDの同期が行われる。また、ステップS305におけるFIHの同期も、当該FIDの場合と同様にして行われる。
図16は、図14のスイッチ装置において、管理カードのFP管理部の概略動作例を示す説明図である。管理カードMCのFP管理部29は、図9(a)および図9(b)に示したように、FDBID管理テーブル(ID管理テーブル)22のFP(第2ID)を切り換える処理を実行する。図16には、図9(b)に示した各処理の中から、ステップS502の処理と、ステップS503の処理の具体例が示されている。
図16のステップS502において、管理カードMCのFP管理部29は、FPの切り換えに際し、まず、複数のラインカードLC[1]〜LC[n]のそれぞれに向けてFDBエントリのフラッシュの実行要求を発行する。複数のラインカードLC[1]〜LC[n]のそれぞれのFDBID管理部23bは、当該実行要求を受信し、フラッシュ実行部30を用いて当該実行要求に基づくFDBエントリのフラッシュを実行する。複数のラインカードのそれぞれのFDBID管理部23bは、実行要求に基づくフラッシュを完了すると、フラッシュの完了通知を管理カードMCへ送信する。
一方、管理カードMCのFP管理部29は、ステップS502において実行要求を発行したのち、ステップS503において、当該実行要求に基づくフラッシュの完了通知を複数のラインカードLC[1]〜LC[n]のそれぞれから受信するまで待つ。そして、FP管理部29は、複数のラインカードLC[1]〜LC[n]のそれぞれから完了通知を受信した場合に、ステップS504において、FPの切り換えを行う。
なお、図示は省略するが、管理カードMCのFIH管理部28の処理に関しても、図15の場合と同様にして行われる。すなわち、FIH管理部28は、図10のステップS603においてFDBID管理テーブル22のFIDを切り換えた場合や、ステップS604においてFDBID管理テーブル22のFIHをフラグ無に定めた場合、その旨を複数の複数のラインカードLC[1]〜LC[n]のそれぞれに向けて指示する。複数のラインカードのそれぞれは、当該指示に応じて、FDBIDテーブル37を更新する。
以上、本実施の形態2のスイッチ装置を用いることで、シャーシ型の構成を用いた効率的な仕組みで実施の形態1で述べたような各種効果を得ることが可能になる。すなわち、管理カードMCがFID,FP,FIHを集中管理することで、複数のラインカードLC[1]〜LC[n]間でのFID,FP,FIHの同期を容易に実現することが可能になる。
(実施の形態3)
《スイッチ装置の概略動作(応用例[2])》
図18は、本発明の実施の形態3によるスイッチ装置において、管理カードのFID管理部の概略動作例を示す説明図である。本実施の形態3のスイッチ装置は、FIH(フラッシュ命令保持フラグ)のフラグ有がFID(第1ID)の予約値(ここでは「0xF」)を用いて定められることを除いて、実施の形態2のスイッチ装置と同様である。
図18において、管理カードMCのFID管理部27は、図8のステップS305に示したように、FDBID管理テーブル(ID管理テーブル)22のFIH(フラッシュ命令保持フラグ)をフラグ有に定める。この際に、FID管理部27は、複数のラインカード(ここでは代表的にLC[n]を図示)のそれぞれに向けてFDBIDテーブル(IDテーブル)37のFID(第1ID)を予約値(「0xF」)に定めるように指示する。これに応じて、複数のラインカードのそれぞれのFDBID管理部23bは、FDBIDテーブル37の所定のLAGID(ここでは{LAG[i]},{LAG[i+1]})に対応するFIDを「0xF」に定める。
また、これに伴い、FID管理部27は、図8のステップS304において、FDBID管理テーブル22のFID(第1ID)を、所定の範囲内で予約値を除いた範囲(ここでは「0x0」〜「0xE」)を巡回するように順次切り換え、切り換え後の値を複数のラインカードに指示する。同様に、FIH管理部28も、図10のステップS603において、FDBID管理テーブル22のFIDを、予約値を除いた範囲を巡回するように順次切り換え、切り換え後の値を複数のラインカードに指示する。
ただし、FIH管理部28は、図10のステップS604において、FDBID管理テーブル22のFIHをフラグ無に定めた場合、実施の形態2の場合と異なり、複数のラインカードへの指示は行わない。この複数のラインカードへの指示は、ステップS603の処理を行うことで、結果的に行われることになる。なお、複数のラインカードの中継処理部36は、図11〜図13に示した中継処理に際し、FIHがフラグ有かフラグ無かをFIDが予約値(「0xF」)であるか否かで判別する。
以上、本実施の形態3のスイッチ装置を用いることで、実施の形態2で述べた各種効果に加えて、さらに、管理カードMCと複数のラインカードLC[1]〜LC[n]との間の通信を簡素化することが可能になる。すなわち、実施の形態2の方式の場合、例えば、管理カードと複数のラインカードとの間の通信で使用する制御フレームには、予め、FIDの格納領域とFIHの格納領域とを設ける必要がある。一方、実施の形態3の方式を用いた場合、このFIHの格納領域を削除することが可能になる。なお、予約値は、勿論、「0xF」に限らず、他の値であってもよい。
(実施の形態4)
《スイッチ装置の概略動作(変形例[1])》
図19(a)は、本発明の実施の形態4によるスイッチ装置において、主要部の概略構成例を示すブロック図であり、図19(b)は、図19(a)のスイッチ装置を適用した中継システムの構成例を示す概略図である。図20(a)は、図19(a)におけるインスタンス管理テーブルの構造例を示す概略図であり、図20(b)は、図19(a)におけるFDBID管理テーブルの構造例を示す概略図である。
図19(a)に示すスイッチ装置SWは、図4に示した構成例と比較して、リングポートPr[3a],Pr[3b]およびインスタンス管理テーブル40が追加される点と、これに伴いFDBID管理テーブルの保持内容が異なる点と、が異なっている。リングポートPr[3a],Pr[3b]は、LAG[3]ポートを構成する。
例えば、ITU−T G.8032に規定されたリングプロトコルでは、図19(b)に示されるように、2個のリングネットワークA,B(10a,10b)で共有リンクを共有するような中継システムが用いられる場合がある。ここでは、リングネットワークA(10a)は、スイッチ装置SWa→SWb→SWc→SWdで構成され、リングネットワークB(10b)は、スイッチ装置SWa→SWb→SWe→SWfで構成される。そして、スイッチ装置SWaとスイッチ装置SWbとの間のリンクが共有リンクとなる。
スイッチ装置SWaのLAG[1]ポート、LAG[2]ポート、LAG[3]ポートは、それぞれ、スイッチ装置SWb,SWd,SWfに接続される。リングネットワークA(10a)には、VLAN識別子VID「1」が割り当てられ、リングネットワークB(10b)には、VLAN識別子VID「2」が割り当てられる。
このような構成において、例えば、スイッチ装置SWaのインスタンス管理テーブル40は、予めユーザ設定に基づき、図20(a)に示すように、LAGIDとVLAN識別子VIDとの組合せをインスタンスIDに対応付けて保持する。例えば、{LAG[2]}とVID「1」との組合せと、{LAG[1]}とVID「1」との組合せは、共にインスタンスID「10」に対応付けられる。また、{LAG[1]}とVID「2」との組合せと、{LAG[3]}とVID「2」との組合せは、共にインスタンスID「11」に対応付けられる。
このように、インスタンスIDは、各リングポート(LAGポート)がVLAN識別子VIDとの組合せによって属するリングネットワークIDを表す。インスタンスID「10」は、図19(b)のリングネットワークA(10a)のリングネットワークIDを表し、インスタンスID「11」は、図19(b)のリングネットワークB(10b)のリングネットワークIDを表す。これに応じて、スイッチ装置SWaのFDBID管理テーブル22は、図20(b)に示すように、図6におけるLAGIDの代わりに、インスタンスIDを保持する。これにより、FDBID管理部23は、FID等を、LAGID単位ではなくインスタンスID単位で管理する。
例えば、スイッチ装置SWaのERP制御部24は、LAG[2]ポートの障害を検出した場合や、VID「1」を含むR−APS(SF)フレームをLAG[1]ポートまたはLAG[2]ポートで受信した場合、インスタンス管理テーブル40に基づき、インスタンスID「10」を対象とするFDBフラッシュ命令を送信する。これに応じて、スイッチ装置SWaのFID管理部27は、FDBID管理テーブル22におけるインスタンスID「10」のFIDを更新する。
別の例として、スイッチ装置SWaのERP制御部24は、LAG[1]ポートの障害を検出した場合、インスタンス管理テーブル40に基づき、インスタンスID「10」「11」を対象とするFDBフラッシュ命令を送信する。これに応じて、スイッチ装置SWaのFID管理部27は、FDBID管理テーブル22におけるインスタンスID「10」のFIDと、インスタンスID「11」のFIDとを更新する。
また、スイッチ装置SWaの中継処理部21は、FDBの学習処理(図12のステップS7022)に際し、受信ポート識別子(すなわちLAGID)とVLAN識別子VIDからインスタンス管理テーブル40に基づきインスタンスIDを取得し、さらに、FDBID管理テーブル22に基づき、当該インスタンスIDに対応するFID等を取得する。一方、当該中継処理部21は、FDBの検索処理(図13のステップS7035)に際し、宛先ポート識別子(すなわちLAGID)とVLAN識別子VIDからインスタンス管理テーブル40に基づきインスタンスIDを取得し、さらに、FDBID管理テーブル22に基づき、当該インスタンスIDに対応するFID等を取得する。
以上、本実施の形態4のスイッチ装置および中継システムを用いることで、前述した各実施の形態で述べた効果を、マルチリング構成においても得ることが可能になる。なお、本実施の形態4のスイッチ装置を実施の形態2の構成例に適用した場合、図17のFDBIDテーブル(IDテーブル)37は、図20(b)のFDBID管理テーブル22の場合と同様に、LAGIDの代わりにインスタンスIDを保持する。また、図20(a)のインスタンス管理テーブル40は、例えば、図14における各ラインカードLC[1]〜LC[n]と管理カードMCにそれぞれ設けられる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
例えば、ここでは、中継システムのリングプロトコルとして、ITU−T G.8032に規定されたリングプロトコルを用いる場合を例としたが、勿論、他のリングプロトコルを用いる場合であっても同様に適用して同様の効果が得られる。