近年、広域Ethernet(登録商標)サービスに示されるように、LAN(Local Area Network)向けに開発されたEthernetが基幹系通信システムに多く採用されている。
その理由としては、従来のSDH又はSONETなどの基幹系システム向けの通信装置に対して、Ethernetに準拠して動作するノード(以下、Ethernetノードと記述する。)が低価格であることに加えて、運用が容易であることが考えられる。また、通信システムの信頼性に着目した場合、Ethernet技術は、用途がLAN向けであったため、基幹系通信システムに要求される性能を十分に満足していなかったが、Spanning Tree Protocol(STP)やRapid Spanning Tree Protocol(RSTP)のように、通信経路の冗長化を可能とするプロトコルが、IEEE(the Institute of Electrical and Electronics Engineers)において標準化され、また、Ethernetノードを2重化するネットワークプロトコルが装置ベンダによって独自に開発されるなどすることにより、Ethernetネットワークの信頼性が向上したことも理由の1つである。
以下、本発明の必要性を明確にするため、1998年にIEEEから発行された標準化文書であるIEEE 802.1Dにおいて開示されているSTP(非特許文献1参照。)を適用したEthernetネットワークにおける、正常時のEthernetフレームの転送動作と、リンクの切断又はEthernetノードの故障等の異常が発生した場合の障害回復動作を説明する。
(通信システムの構成)
図9は、3台のSTPノード及び3台のEthernetノードを備えたEthernetネットワークシステムの例を示す説明図である。図9に示す通信システムは、STPに準拠して動作する3台のEthernetノード(以下、STPノードと記述する。)100,120,130と、3台の従来のEthernetノード300,310,320とを備える。
Ethernetノード300〜320は、STPノード100〜120配下の端末として、STPノード100〜120にそれぞれ収容されている。なお、STPノード100〜120の配下には、複数のEthernetノードが収容されていても良いが、ここでは説明を簡単にするため、STPノード100〜120はそれぞれ1台のEthernetノードを収容しているものとする。
また、Ethernetノード300〜320のさらに配下に、他のEthernetノードが接続されているような構成であっても、ループを構成しない限りは構わない。ここで、ループを構成するとは、複数のEthernetノードがリング状に接続されることを言う。なお、複数のEthernetノードが物理的にループを構成している場合であっても、STPなどのプロトコルにより、論理的にはループを構成していない場合は問題無い。
STPノード100〜120のポートP1及びP2は、STPの制御対象のポートに設定される。制御対象のポートのポート状態は、STPノード100〜120間のSTPの動作により、図9に示すように、フォワーディング状態とブロッキング状態の何れかに設定される。その結果、図9の太線で示すスパニングツリーが構成される。なお、STPノード100〜120が、STPにより、STPの制御対象のポートのポート状態を決定するプロセス、すなわち、スパニングツリーを構成するプロセスは、本発明に無関係であるため、詳細な説明を省略する。
スパニングツリーに含まれるリンクの両端のポートは、データフレームの送受信が許可される状態(フォワーディング状態)にある。また、スパニングツリーに含まれないリンクの一方のポートはフォワーディング状態にあるが、他方のポートはデータフレームの送受信が禁止される状態(ブロッキング状態)、すなわち、リンクが論理的に切断されている状態にある。Ethernetフレームはフォワーディング状態にあるポートで送受信可能であるため、STPが適用されたEthernetネットワークにおいては、Ethernetフレームはスパニングツリーに沿って転送される。
(ノードの構成)
図10は、一般的なSTPノードの構成例を示すブロック図である。STPノード100は、入力ポート400−1,400−2,400−3と、フレーム解析部410−1,410−2と、スイッチ部420と、フレーム多重部430−1,430−2と、出力ポート440−1,440−2,440−3と、FDB部450と、FDB制御部460と、FDB470と、FDBエントリ管理テーブル480と、STP部500と、ポート状態テーブル510とを含む。なお、STPノード110及び120の構成もSTPノード100の構成と同様である。
STPノード100の入力ポート400−1〜3は、隣接するEthernetノード300、STPノード110又はSTPノード120から送信されるフレームを受信するポートであって、図9に示すSTPノード100のポートP1〜P3の受信部に相当する。なお、以降でSTPノード100の入力ポートP1と記述した場合は、STPノード100の入力ポート400−1を表すものとする。ここで、STPノード100の入力ポート400−1,2は、例えば、STPノード110,120から受信したフレームを、それぞれフレーム解析部410−1,2に出力する。また、STPノード100の入力ポート400−3は、例えば、Ethernetノード300から受信したフレームを、スイッチ部420に出力する。
STPノード100のフレーム解析部410−1,2は、STPノード100のSTP部500が使用する特殊フレームであるBPDU(Bridge Protocol Data Unit)をSTPノード100のSTP部500に送る。また、STPノード100のフレーム解析部410−1,2は、BPDU以外のフレームをSTPノード100のスイッチ部420に送る。
STPノード100のスイッチ部420は、受信フレームの出力ポートの決定を行うとともに、その決定に従って、STPノード100〜120のフレーム多重部430−1,2と出力ポート440−3のうち、適切な機能ブロックにフレームを送る。
STPノード100のフレーム多重部430−1,2は、STPノード100のスイッチ部420から送られるフレームと、STPノード100のSTP部500から送られるBPDUとを多重した上で、STPノード100の出力ポート440−1,2に送る。
STPノード100の出力ポート440−1〜3は、隣接するSTPノード110又は120、又はEthernetノード300に、フレームを送信するポートであって、図9に示すSTPノード100のポートP1〜P3の送信部に相当する。なお、以降でSTPノード100の出力ポートP1と記述した場合は、STPノード100の出力ポート400−1を表すものとする。
STPノード100のFDB部450は、フレームの宛先MACアドレスと出力ポートとの関係を登録するFDB(Forwarding DataBase)470と、FDB470の各エントリの情報を管理するFDBエントリ管理テーブル480と、FDB470の内容を検索及び更新するFDB制御部460とを含む。
図11は、一般的なSTPノードのFDBの例を示す説明図である。STPノード100のFDB470の各エントリは、EthernetノードのMACアドレスを示す「宛先MACアドレス」および「出力ポート」の2つのフィールドを含む。なお、図11には、FDB470が、各エントリの順序を示す「エントリナンバ(エントリNo.)」を含む場合を例示する。FDB470に含まれる「宛先MACアドレス」および「出力ポート」は、例えば、「エントリナンバ」に対応する領域に記憶される。なお、エントリは、ノード識別子を含んでもよく、また、出力ポートまたはノード識別子を仮想的に処理するための情報を含んでもよい。
例えば、図11に示すSTPノード100のFDB470の第1のエントリには、Ethernetノード300のMACアドレスに対して、STPノード100のポートP3が登録されている。これは、STPノード100が、宛先MACアドレスがEthernetノード300のMACアドレスであるフレームを、STPノード100のポートP3から送信することを意味する。
STPノード100のFDBエントリ管理テーブル480は、STPノード100のFDB470の各エントリについて、フレーム転送処理におけるそのエントリの参照の有無を管理する。図12は、一般的なSTPノードのFDBエントリ管理テーブルの例を示す説明図である。図12に示すように、FDBエントリ管理テーブル480は、「エントリ参照の有無」を含む情報である。図12に示すSTPノード100のFDBエントリ管理テーブル480の第1のエントリには、エントリの参照の有無を示すフィールドに「有り」と登録されている。これは、STPノード100のFDB470の第1のエントリが、STPノード100のフレーム転送処理において、参照されたことがあることを意味する。なお、図12には、FDBエントリ管理テーブル480が、各エントリの順序を示す「エントリナンバ(エントリNo.)」を含む場合を例示する。FDBエントリ管理テーブル480に含まれるエントリナンバは、FDB470に含まれる情報と同じ情報である。FDBエントリ管理テーブル480に含まれる「エントリ参照の有無」は、例えば、「エントリナンバ」に対応づけて記憶される。
STPノード100のSTP部500は、STPノード110及び120とBPDUを送受信し合い、互いのパスコストを比較することにより、STPノード100のSTPの制御対象であるポートP1及びP2のポート状態を決定するとともに、STPノード100のポート状態テーブル510にポート状態を登録する。ここで、STPノード100のSTP部500は、例えば、フレーム解析部410−1,2を介して、STPノード110,120からBPDUを受信する。また、STPノード100のSTP部500は、例えば、フレーム多重部430−1,2を介して、STPノード110,120にBPDUを送信する。
STPノード100のポート状態テーブル510には、STPノード100のSTPの制御対象であるポート(ポートP1及びP2)のポート状態(ブロッキング状態、又は、フォワーディング状態の何れか)が登録される。
(フレームのブロードキャスト転送とMACアドレス学習)
最初に、図9に示す通信システムの運用開始直後に、Ethernetノード300がEthernetノード310にフレームを送信する動作を説明する。
STPノード100において、STPノード100の入力ポート400−3は、自ノード配下のEthernetノード300から送信されたフレームを受信すると、受信したフレームをSTPノード100のスイッチ部420に送る。
STPノード100のスイッチ部420は、フレームの送信元MACアドレスとフレームの受信ポートとの関係を、FDB470における宛先MACアドレスと出力ポートとの関係として、STPノード100のFDB470に登録するように、STPノード100のFDB制御部460に依頼する。
STPノード100のFDB制御部460は、フレームの送信元MACアドレス(Ethernetノード300のMACアドレス)とフレームの受信ポート(STPノード100のポートP3)との関係を、宛先MACアドレスと出力ポートとの関係として、STPノード100のFDB470に登録する。
また、STPノード100のFDB制御部460は、STPノード100のFDB管理テーブル480のエントリのうち、上記の関係が登録されたSTPノード100のFDB470のエントリに対応するエントリに対して、エントリ参照の有無を示すフィールドに「無し」を設定する(以降では、フィールドをクリアする、または、フィールドをリセットするとも記述する。)。
以上に説明したように、FDB470に宛先MACアドレスと出力ポートとの関係を登録する動作は、一般にMACアドレス学習と呼ばれる。
MACアドレス学習の依頼と同時に、STPノード100のスイッチ部420は、STPノード100のFDB470においてフレームの宛先MACアドレス(Ethernetノード310のMACアドレス)に対して登録されている出力ポートを検索するように、STPノード100のFDB制御460に依頼する。
STPノード100のFDB制御部460は、フレームの宛先MACアドレスをキーとして、STPノード100のFDB470を検索することにより、フレームの宛先MACアドレスに対して登録されている出力ポートを取得する。
通信システムの運用開始直後は、STPノード100のFDB470には登録されている情報が全くないため、STPノード100のFDB制御部460による出力ポートの検索は失敗する。従って、STPノード100のFDB制御部460は、STPノード100のスイッチ部420に検索が失敗した旨を通知する。
検索に失敗した通知を受けた場合、STPノード100のスイッチ部420は、STPの制御対象であるポートのうちフォワーディング状態である全てのポート、及び、STPの制御対象でない全てのポート(ただし、フレームの受信ポートを除く)からフレームを送信する。すなわち、フレームは、STPノード100のフレーム多重部440−1,2に送られた後、STPノード100の出力ポート440−1,2からSTPノード110及び120に送信される。なお、出力ポート440−3は、フレームの受信ポートP3の送信部であるため、出力ポート440−3からはフレームは送信されない。上記のフレームの転送方法はブロードキャスト転送と呼ばれる。
以降では、STPノード100の出力ポート440−1から送信されたフレームが、STPノード110の入力ポート400−2で受信された後のSTPノード110の動作を説明する。なお、STPノード100の出力ポート440−2から送信されたフレームが、STPノード120の入力ポート400−1で受信された後のSTPノード120の動作も、以降で説明するSTPノード100の動作と同様である。
STPノード110において、STPノード110の入力ポート400−2は、STPノード100から送信されたフレームを受信すると、STPノード110のフレーム解析部410−2に受信したフレームを送る。
STPノード110のフレーム解析部410−2は、フレームがBPDUであれば、STPノード110のSTP部500に送り、また、フレームがBPDUでなければ、STPノード110のスイッチ部420に送る。
STPノード110のスイッチ部420は、フレームの受信ポートがSTPの制御対象である場合、受信ポートのポート状態がブロッキング状態であれば、フレームを廃棄する。また、フォワーディング状態であれば、STPノード110のスイッチ部420は、前述のSTPノード100がEthernetノード300からのフレームを受信した場合の動作と同様に、MACアドレス学習、及び、フレームのブロードキャスト転送を行う。
すなわち、STPノード110のFDB470には、フレームの送信元MACアドレス(Ethernetノード300のMACアドレス)と受信ポート(STPノード110のポートP2)との関係が、宛先MACアドレスと出力ポートとの関係として登録される。
それと同時に、STPノード110のFDBエントリ管理テーブル480のエントリのうち、上記の関係を登録したSTPノード110のFDB470のエントリに対応するエントリに対して、エントリの参照の有無を示すフィールドがクリアされる。
フレームは、STPノード110の出力ポート440−1からSTPノード120に送信される。また、STPノード110の出力ポート440−3からEthernetノード310に送信される。
以上のように、Ethernetノード300から送信されたEthernetノード310宛てのフレームは、Ethernetノード310に転送される。なお、STPノード110の出力ポート440−1から送信されたフレームは、STPノード120のブロッキング状態にある入力ポートP2で受信され、STPノード120により廃棄されるため、それ以上転送されることはない。
(フレームのユニキャスト転送)
次に、Ethernetノード300からEthernetノード310へのフレームの転送に続いて、Ethernetノード310からEthernetノード300にフレームを返信する場合の動作を説明する。
STPノード110において、STPノード110の入力ポート400−3は、Ethernetノード310からEthernetノード300宛てのフレームを受信すると、STPノード110のスイッチ部420にフレームを送る。
STPノード110のスイッチ部420は、STPノード110のFDB制御部460に対して、受信フレームに関するMACアドレス学習、及び、出力ポートの検索を依頼する。
すなわち、STPノード110のFDB470には、フレームの送信元MACアドレス(Ethernetノード310のMACアドレス)と受信ポート(STPノード110のポートP3)との関係が、宛先MACアドレスと出力ポートとの関係として登録される。
また、前述のEthernetノード300からEthernetノード310にフレームを転送する過程で行われたMACアドレス学習により、STPノード110のFDB470には、受信フレームの宛先MACアドレスであるEthernetノード300のMACアドレスに対して、出力ポートとしてポートP2が登録されている。そのため、STPノード110のFDB制御部460は、STPノード110のFDB470を参照し、STPノード110のスイッチ部420に、受信フレームの出力ポートがポートP2である旨を通知する。
それと同時に、STPノード110のFDB制御部460は、STPノード110のFDBエントリ管理テーブル480のエントリのうち、上記の宛先MACアドレスと出力ポートの関係を登録したエントリに対応するエントリにおいて、エントリの参照の有無を示すフィールドに「有り」を設定する(以降では、エントリ参照の有無を示すフィールドをセットするとも記述する。)。
フレームは、STPノード110のスイッチ部420によりSTPノード110のフレーム多重部430−2に送られた後、STPノード110の出力ポート440−2からSTPノード100に送信される。以上のフレームの転送方法はユニキャスト転送と呼ばれる。
STPノード100において、STPノード100の入力ポート400−1は、STPノード110から送信されたフレームを受信すると、STPノード100のフレーム解析部410−1に受信したフレームを送る。
STPノード100のフレーム解析部410−1は、受信フレームがBPDUであれば、STPノード100のSTP部500に送り、また、BPDUでなければ、STPノード100のスイッチ部420に送る。
STPノード100のスイッチ部420は、フレームの受信ポートがSTPの制御対象である場合、受信ポートのポート状態がブロッキング状態であれば、フレームを廃棄する。また、フォワーディング状態であれば、STPノード100のスイッチ部420は、前述のSTPノード110がEthernetノード310からのフレームを受信した場合と同様に、MACアドレス学習、及び、フレームのユニキャスト転送を行う。
すなわち、STPノード100のFDB470には、フレームの送信元MACアドレス(Ethernetノード310のMACアドレス)と受信ポート(STPノード100のポートP1)との関係が、宛先MACアドレスと出力ポートとの関係として登録される。
それと同時に、STPノード100のFDBエントリ管理テーブル480のエントリのうち、上記の関係を登録したSTPノード100のFDB470のエントリに対応するエントリに、エントリの参照の有無を示すフィールドをクリアする。
また、前述のEthernetノード300からEthernetノード310にフレームを転送する過程で行われたMACアドレス学習により、STPノード100のFDB470には、受信フレームの宛先MACアドレスであるEthernetノード300のMACアドレスに対して、出力ポートとしてポートP3が登録されている。そのため、STPノード100のFDB制御部460は、STPノード100のFDB470を参照し、STPノード100のスイッチ部420にフレームの出力ポートがポートP3である旨を通知する。
それと同時に、STPノード100のFDB制御部460は、STPノード100のFDBエントリ管理テーブル480のエントリのうち、Ethernetノード300のMACアドレスとポートP3の関係を登録しているSTPノード100のFDB470のエントリに対応するエントリにおいて、エントリの参照の有無を示すフィールドをセットする。
フレームは、STPノード100のスイッチ部420により、STPノード100の出力ポート440−3からEthernetノード300に送信される。
以上のようにして、Ethernetノード310から送信されたEthernetノード300宛てのフレームは、Ethernetノード300に転送される。
図13は、以上で説明した一般的なSTPノード100〜120がフレーム受信時に行うフレーム転送とMACアドレス学習の処理経過の例を示すフローチャートである。
スイッチ部420が、入力ポート400−1〜3およびフレーム解析部401−1,2を介してフレームを受信すると、FDB制御部460は、FDB470を検索して(ステップS1)、受信フレームの宛先MACアドレスに対応する出力ポートを選択する(ステップS2)。
ステップS2において、出力ポートの選択に成功した場合(Yes)、FDB制御部460は、FDBエントリ管理テーブル480において、ステップS2において選択した出力ポートに対応するエントリの参照の有無を示すフィールドをセットする(ステップS3)。スイッチ部420は、受信したフレームを、ステップS2において選択した出力ポートに出力する。そして、当該出力ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部420は、ユニキャスト送信を行う(ステップS4)。
ステップS2において、出力ポートの選択に失敗した場合(No)、FDB制御部460は、スイッチ部420に検索が失敗した旨を通知する。スイッチ部420は、STPの制御対象であるポートのうちフォワーディング状態である全てのポート、及び、STPの制御対象でない全てのポート(ただし、フレームの受信ポートを除く)に受信フレームを出力する。そして、当該ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部420は、ブロードキャスト送信を行う(ステップS5)。
(FDBのエージング)
STPノード100のFDB制御部460は、予め定められた時間間隔(以降、エージング時間と記述する)で、STPノード100のFDB470のエントリのうち、宛先MACアドレスと出力ポートの関係が登録され、かつ、最近のエージング時間内にフレーム転送処理によって一度も参照されなかった全てのエントリを削除する。また、STPノード100のFDB制御部460は、STPノード100のFDBエントリ管理テーブル480の全てのエントリに対して、エントリの参照の有無を示すフィールドをクリアする。上記の処理はエージング(FDBエージング)と呼ばれる。
エージングは、一度も参照されない不要なエントリを削除することにより、有限であるFDB470のエントリを有効に活用するための処理である。エージング時間は、300秒程度に設定されることが多い。エージングによる削除対象となる全てのエントリを瞬時に消去する必要はなく、エージング時間内に完了すれば十分であるので、その処理負荷は小さい。FDB470の各エントリがエージングによる削除対象のエントリであるか否かは、FDBエントリ管理テーブル480の内容により判定される。
なお、例示するSTPノード100においては、、FDB470のエントリの参照の有無を示す情報を専用のテーブル(例えば、FDBエントリ管理テーブル480)が管理しているが、FDB470の各エントリにその情報を格納するフィールドを設けることにより、宛先MACアドレスと出力ポートとの関係と一元的に管理することも可能である。しかしながら、FDB470のエントリの参照の有無を示す情報を専用のテーブルが管理する方法は、エージング処理においてFDB470を参照する処理が、フレーム転送処理においてFDB470を参照する処理を妨げた結果、フレーム転送処理が遅延してしまう問題を回避できるという利点がある。
(リンク切断時におけるSTPの障害回復の動作)
次に、図9に示すEthernetネットワークにおいて、リンク220が切断された場合の障害回復動作を説明する。図14は、リンクが切断された場合のEthernetネットワークシステムの例を示す説明図である。
図9に示すリンク220が切断されると、STPにより、障害箇所を迂回する新たなスパニングツリーが再構成される。ここでは、STPノード100〜120に属するポートのうち、STPの制御対象のポートであるポートP1及びP2のポート状態が、STPにより、図14に示すように変更された結果、図14に示す太線のリンクで示すスパニングツリーが再構成されたものとする。新たなスパニングツリーが再構成されると、STPノード100〜120のSTP部500は、STPノード100〜120のFDB470に登録されている宛先MACアドレスと出力ポートの関係を全て消去するように、STPノード100〜120のFDB制御部460に依頼する。
STPノード100〜120のFDB制御部46は、STPノード100〜120のFDB470の登録内容を消去するとともに、STP0ノード100〜120のFDBエントリ管理テーブル480の全てのエントリに対して、それらのエントリの参照の有無を示すフィールドをクリアする。
以上の処理が必要である理由は、新しいスパニングツリーが再構成されたとしても、FDBの内容を全て消去しなければ、もしくは、新しいスパニングツリーに合わせてFDBの内容を更新しなければ、障害が発生したリンクにフレームが送信されてしまう可能性があるからである。
上記のFDBの内容を全て消去する動作は、FDBフラッシュ(FDBの初期化)と呼ばれる。STPノード100〜120のFDB制御部460が、STPノード100〜120のFDB470をフラッシュした後は、前述の通信システムの運用開始直後のフレーム転送と全く同様にして、フレームの転送が行われるため、通信を継続することが可能である。
以上のようにして、STPが適用されたEthernetネットワークでは、障害箇所を迂回するスパニングツリーを再構成するとともに、STPノードのFDBをフラッシュすることにより、通信を継続することが可能である。
しかしながら、上述した従来のネットワークノードにおいては、FDBのエントリ数が増大するに従って、FDBのフラッシュに必要な時間が増大するため、障害からの復帰が遅れるという問題がある。
図15は、市販のEthernetノードを用いて実測した際の、FDBのエントリ数とFDBのフラッシュに要する時間(フラッシュ時間)との関係の例を示すグラフである。図15によれば、基幹系通信システムで必要と思われる1万個以上のエントリを全て消去するためには、1秒以上の時間を要することが分かる。
FDBは、CAM(Content Addressable Memory)により実装されることが多い。CAMは非常に高速の検索性能を有するものの、登録内容を削除するためにはエントリ単位で処理する必要がある。従って、FDBのフラッシュのように、多数のエントリの内容を一度に消去するような処理を行う場合に、多大な時間を要してしまう。
図15に示すグラフにおいて、FDBのフラッシュ時間がFDBのエントリ数に比例して増大していることから、測定に使用したEthernetノードのFDBがCAMにより構成されており、FDBのエントリを1エントリずつ順番に消去しているために、FDBフラッシュに多くの時間を要していると推測される。
以上のように、STPが適用されたEthernetネットワークにおいて障害が発生した場合、新たなスパニングツリーが短時間で再構成されたとしても、FDBのフラッシュに多くの時間を要するために、SONETが提供するような50ms以内という非常に短い障害回復時間を実現することは不可能である。また、FDBのフラッシュ処理においてFDBを参照する処理が、フレーム転送処理においてFDBを参照する処理を妨害した結果、フレーム転送において遅延が増大するという問題が生じる。
上記の問題を解決する方法として、特許文献1には、障害発生を検出した後、FDBフラッシュが必要と判断された場合に、FDBフラッシュを行っている間、全てのフレームをブロードキャスト転送する方法が開示されている。特許文献1に記載された方法に依れば、FDBフラッシュが完了するまでの間、FDBは参照されることなく、全てのフレームは全てのポートから送出されるため、通信を続行することが可能である。また、FDBフラッシュの実行時のフレーム転送処理はブロードキャスト転送処理のみであるため、上述の遅延の問題を本質的に解決することが可能である。
実施の形態1.
以下、本発明の第1の実施の形態を図面を参照して説明する。
(通信システムの構成)
以降では、図9及び図14に示す通信システムのSTPノード100〜120に本発明を適用した場合について説明する。
(ノードの構成)
図1は、本発明によるSTPノードの構成例を示すブロック図である。図1には、図9及び図14に示す通信システムにおいて、本発明が適用されたSTPノード100の構成例が示されている。なお、本発明が提要されたSTPノード110及び120の構成もSTPノード100の構成と同一である。以降では、単にSTPノードと記述した場合は、本発明が適用されたSTPノードを表すものとする。図1に示すSTPノード100は、STPノード100のFDBフラッシュ管理テーブル490が追加されている点において、従来のSTPノード100の構成と異なる。
STPノード100のFDBフラッシュ管理テーブル490は、STPノード100のSTP部500がFDBフラッシュを要求した時刻(以下、FDBフラッシュ要求時刻と記述する。)を管理するためのテーブルであって、STPノード100のFDB制御部460により管理される。図2は、本発明によるSTPノードのFDBフラッシュ管理テーブルの例を示す説明図である。図2に示すように、FDBフラッシュ管理テーブル490は、「FDBフラッシュ要求時刻」を含む情報である。図2によれば、STPノード100のSTP部500が時刻TにFDBフラッシュを要求したことが分かる。すなわち、FDBフラッシュ管理テーブル490に含まれる「FDBフラッシュ要求時刻」は、STPノード100のSTP部500がFDBフラッシュを要求した時刻を示す情報である。なお、STPノード100のSTP部500がFDBフラッシュを要求する処理を含めてFDBフラッシュの実行とし、FDBフラッシュ要求時刻をFDBフラッシュ実行時刻としてもよい。
また、図1に示すSTPノード100のFDBエントリ管理テーブル480のテーブル構成は、図10,12に示す従来のSTPノード100のFDBエントリ管理テーブルと異なる。図3は、本発明によるSTPノードのFDBエントリ管理テーブルの例を示す説明図である。図3に示すSTPノード100のFDBエントリ管理テーブル480の各エントリには、FDB470の各エントリの参照の有無を管理するフィールドに加えて、FDB470の各エントリに宛先MACアドレスと出力ポートの関係を登録した時刻を管理するフィールドが追加されている。
すなわち、図3に示すように、本発明によるFDBエントリ管理テーブル480には、エントリの「参照の有無」と「登録時刻」とを含む情報が設定されている。なお、図3には、FDBエントリ管理テーブル480が、各エントリの順序を示す「エントリナンバ(エントリNo.)」を含む場合が例示されている。FDBエントリ管理テーブル480に含まれるエントリナンバは、FDB470に含まれる情報と同じ情報である。FDBエントリ管理テーブル480に含まれる「参照の有無」と「登録時刻」とは、例えば、「エントリナンバ」に対応づけて記憶される。
STPノード100のFDB制御部460は、MACアドレス学習時に、FDBエントリ管理テーブル480のエントリの参照の有無を示すフィールドをクリアするとともに、MACアドレス学習を行った時刻を「登録時刻」に登録する。例えば、図3に示すFDBエントリ管理テーブル480の第1のエントリは、FDB470の第1のエントリの登録時刻がt1であることを意味している。
なお、本発明では、「登録時刻」のフィールドにより、STPノード100のFDB470の各エントリの登録時刻を管理しているが、STPノード100のFDB470のエントリの登録時刻が、FDBフラッシュを実行した時刻の以前であるか、または、以降であるかを判定可能であれば、時刻以外のパラメータを管理しても良い。
図1に示すSTPノード100においては、FDB制御部460、FDB470、FDBエントリ管理テーブル480およびFDBフラッシュ管理テーブル490が、FDBに関する処理を行うFDB部450の構成要素として配置されているが、これに限られない。例えば、FDB制御部460、FDBエントリ管理テーブル480およびFDBフラッシュ管理テーブル490の機能をスイッチ部420に内蔵させ、FDB制御部460とスイッチ部420間のオーバヘッドを最小化することにより、フレーム転送処理を高速化することが可能である。
第1の実施の形態において、FDB登録時刻記憶部は、FDBエントリ管理テーブル480によって実現される。実行時刻記憶部は、FDBフラッシュ管理テーブル490によって実現される。通信制御部は、FDB制御部460およびスイッチ部420によって実現される。参照情報制御部およびFDBエージング部は、FDB制御部460によって実現される。
(FDBフラッシュ実行時の動作)
以降では、リンク220の切断により、図14に示すスパニングツリーが再構成された後、STPノード100がFDBをフラッシュする動作を説明する。新たなスパニングツリーが再構成された後、STPノード100のSTP部500は、STPノード100のFDB470をフラッシュするように、STPノード100のFDB制御部460に依頼する。
本発明において、STPノード100のFDB制御部460は、STPノード100のSTP部500がFDBフラッシュを要求した時刻をSTPノード100のFDBフラッシュ管理テーブル490に登録する。
また、STPノード100のFDB制御部460は、エージングを実行する、もしくは、STPノード100のFDB制御部460は、エージングを所定の時間毎に実行するためのタイマ(以下、エージングタイマと記述する)の値を初期値にリセットする。FDBフラッシュの実行時にエージングを実行することにより、不要なエントリを消去するまでに要する時間を短縮することができる。
さらに、STPノード100のFDB制御部460は、STPノード100のFDBエントリ管理テーブル480のエントリのうち、その登録時刻がFDBフラッシュ要求時刻以前のエントリ全てに対して、エントリの参照の有無を示すフィールドをクリアする。登録時刻がFDBフラッシュ要求時刻以前のエントリは、フレーム受信時に参照された場合でも、参照の有無を示すフィールドがクリアされるため、エージングにおいて不要な情報と判断され、消去される。なお、前者のエージングも後者の処理も高速に行う必要はない。
本発明では、例えば、FDBフラッシュを実行する方法として、CPUからFDBのエントリを1行1行消去する命令を発効するような処理を行わずに、エージングという予め備わっているFDBエントリの消去処理を利用する。そのため、CPUの負荷が小さくてすむ。
なお、STPノード100のFDB制御部460は、FDBフラッシュ実行時に、エージングを実行せず、全てまたは所定のエントリを削除するとともに、FDBエントリ管理テーブル480のエントリの参照の有無を示すフィールドを削除してもよい。
次に、STPノード100のスイッチ部420が、STPノード100のフレーム解析部410−1または2よりフレームを受信した後、STPノード100のFDB制御部460に、フレームの宛先アドレスに対する出力ポートの検索を依頼した場合の動作を説明する。
STPノード100のFDB制御部460は、STPノード100のFDB470を検索することにより、フレームの宛先アドレスに対する出力情報を取得すると、その出力情報を登録した時刻をSTPノード100のFDBエントリ管理テーブル480より取得する。
なお、出力情報とは、例えば、エントリナンバに対応付けてFDB470に記憶される情報であって、宛先MACアドレスおよび出力ポートを含む情報である。また、例えば、FDBエントリ管理テーブル480には、出力情報を登録した時刻が、エントリナンバに対応付けられて「登録時刻」として記憶される。例えば、FDB制御部460は、フレームの宛先MACアドレスに基づいてFDB470を検索し、出力情報を選択する。次に、FDB制御部460は、例えば、選択した出力情報のエントリナンバに基づいてFDBエントリ管理テーブル480を検索し、登録時刻を選択する。
フレームの宛先MACアドレスに基づいて選択された出力情報の登録時刻が、FDBフラッシュ管理テーブル490に登録されているFDBフラッシュ要求時刻以前である場合、STPノード100のFDB制御部460は、STPノード100のスイッチ部420に出力情報が検索されなかった旨を通知する。従って、STPノード100のスイッチ部420は、フレームをブロードキャスト送信する。
また、STPノード100のFDB制御部460は、STPノード100のFDBエントリ管理テーブル480において、FDB470の検索により取得した出力情報が登録されていたエントリの参照の有無を示すフィールドをクリアする。
出力情報が取得され、かつ、出力情報の登録時刻がFDBフラッシュ要求時刻以降である場合、または、出力情報が検索されなかった場合は、従来の技術で述べたフレーム転送方法と同様である。すなわち、FDBフラッシュ要求時刻以後に学習されたエントリは有効となる。
図4は、本発明によるSTPノード100が、フレーム受信時に行うフレーム転送とMACアドレス学習の処理経過の例を示すフローチャートである。
スイッチ部420が、入力ポート400−1〜3およびフレーム解析部401−1,2を介してフレームを受信すると、FDB制御部460は、FDB470を検索して(ステップS1)、受信フレームの宛先MACアドレスに対応する出力ポートを参照する(ステップS2)。
ステップS2において、出力ポートの参照に成功した場合(Yes)、FDB制御部460は、FDBエントリ管理テーブル480において、参照した出力ポートに対応するエントリの登録時刻を検索し、検索した登録時刻が、FDBフラッシュ管理テーブル490のFDBフラッシュ要求時刻以降であるか否かを判断する(ステップS7)。
ステップS7において、登録時刻がFDBフラッシュ要求時刻以降である場合(Yes)、FDB制御部460は、FDBエントリ管理テーブル480において、ステップS2において選択した出力ポートに対応するエントリの参照の有無を示すフィールドをセットする(ステップS3)。スイッチ部420は、受信したフレームを、ステップS2において選択した出力ポートに出力する。そして、当該出力ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部420は、ユニキャスト送信を行う(ステップS4)。
また、ステップS7において、登録時刻がFDBフラッシュ要求時刻以降でない場合(No)、FDB制御部460は、FDBエントリ管理テーブル480において、例えば、エージング時刻を設定するとともに、ステップS2において選択した出力ポートに対応するエントリの参照の有無を示すフィールドをクリアする(ステップS6)。
スイッチ部420は、STPの制御対象であるポートのうちフォワーディング状態である全てのポート、及び、STPの制御対象でない全てのポート(ただし、フレームの受信ポートを除く)に受信フレームを出力する。そして、当該ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部420は、ブロードキャスト送信を行う(ステップS5)。
以上の動作によれば、FDBフラッシュ要求時刻以前にSTPノード100のFDB470に登録された出力情報は、実際にはフレーム転送処理に使用されないため、これらの出力情報に対応するフレームは全てブロードキャスト送信される。すなわち、本発明によれば、FDBフラッシュ要求時にFDBの内容を実際には消去せずとも、FDBの内容が消去された場合と同等の効果を得ることができる。
FDBフラッシュ要求時刻よりエージング時間が経過し、STPノード100のFDB制御部460がエージングを実行すると、FDBフラッシュ要求時刻以前に登録されたFDB470の内容は消去される。エージングによるFDBの全てのエントリを消去するのに、最大でエージング時間と同等の時間を要するものと仮定すると、FDBフラッシュ要求時刻よりエージング時間の2倍以上の時間が経過すれば、FDBフラッシュ要求時刻以前にFDB470に登録されたエントリは全て消去されるため、STPノード100のFDB制御部460は、STPノード100のFDBフラッシュ管理テーブル490に登録されているFDBフラッシュ要求時刻を初期値(全ての時刻よりも早い時刻)にクリアした後、FDBフラッシュ要求以前のフレーム転送処理に戻っても良い。
以上に説明したように、本実施の形態では、FDBフラッシュ要求時にFDBの内容を実際に消去せずとも、FDBフラッシュ実行後と同等の効果を得ることができるため、障害から短時間で復旧することが可能である。また、FDBエントリの消去処理がフレームの出力ポートの検索処理を妨害することがないため、レイテンシの増大や検索ミスによるブロードキャスト送信の増大を回避することが可能である。
実施の形態2.
次に、本発明の第2の実施の形態を説明する。本発明の第2の実施の形態によるSTPノードは、FDBフラッシュの際に、所定の条件を満足するFDBのエントリのみを消去する。ここで、所定の条件とは、例えば、宛先アドレスが所定のMACアドレスと一致するFDBエントリ、または、出力ポートが所定のポートと一致するFDBエントリなどの条件が考えられる。このような条件を課する理由は、FDBフラッシュによる消去の対象とするエントリを限定することにより、ブロードキャスト送信の増大による通信帯域の圧迫を低減する効果が得られる場合があるからである。
また、他の条件として、複数のVLANが適用された通信システムにおいて、ネットワークノードのFDBが宛先アドレスと出力ポートに加えてVLAN識別子を管理するような場合に、VLAN識別子が所定のVLAN識別子と一致するFDBエントリであるという条件なども考えられる。また、例えば、フレームの属するスパニングツリーが所定のスパニングツリーであることを条件としてもよく、フレーム登録先情報が所定のフレーム転送先情報であることを条件としてもよい。
なお、第1の実施の形態は、本実施の形態において、FDBフラッシュによる消去の対象とするエントリの条件をFDBの全てのエントリとした場合に相当する。
(通信システムの構成)
以降では、第1の実施の形態と同様に、図9及び図14に示す通信システムを例示して、本実施の形態におけるFDBフラッシュの方法を説明する。
(ノードの構成)
本実施の形態におけるSTPノード100の構成は、STPノード100のFDBフラッシュ管理テーブル490が、FDBフラッシュ要求時刻に加えて、FDBフラッシュに付随する消去条件を管理する点において、第1の実施の形態におけるSTPノード100の構成と異なる。
図5は、第2の実施の形態のSTPノード100のFDBフラッシュ管理テーブル490の例を示す説明図である。図5に示すように、本実施の形態におけるFDBフラッシュ管理テーブル490は、「FDBフラッシュ要求時刻」と、「消去条件」とを含む情報である。消去条件は、例えば、FDBフラッシュによる消去の対象とするエントリを特定するための条件である。例えば、図5に示すSTPノード100のFDBフラッシュ管理テーブル490には、FDBフラッシュ要求時刻T、及び、消去条件Cが登録されている。
第2の実施の形態において、FDBフラッシュ消去条件記憶部は、FDBフラッシュ管理テーブル490によって実現される。
(FDBフラッシュ実行時の動作)
以降では、第1の実施の形態と同様に、リンク220の切断により、図14に示すスパニングツリーが再構成された後、STPノード100がFDBをフラッシュする動作を説明する。
新たなスパニングツリーが再構成された後、STPノード100のSTP部500は、STPノード100のFDB470のエントリのうち、出力ポートがポートP2であるエントリを全て消去するように、STPノード100のFDB制御部460に依頼する。
STPノード100のFDB470のエントリのうち、出力ポートが障害発生箇所であるリンク220に接続されているポートP2であるエントリのみを、FDBフラッシュによる消去の対象とすることにより、ブロードキャスト送信の増大による通信帯域の圧迫を低減する効果が期待できる。
STPノード100のFDB制御部460は、FDBフラッシュ要求時刻と上記の消去条件をSTPノード100のFDBフラッシュ管理テーブル490に登録する。以降のSTPノード100のFDB制御部460の動作は、第1の実施の形態において説明した動作と基本的に同様であるため、相違点のみを以下に説明する。
STPノード100のスイッチ部420が、STPノード100のフレーム解析部410−1または2よりフレームを受信した後、STPノード100のFDB制御部460に、フレームの宛先アドレスに対する出力ポートの検索を依頼した場合、STPノード100のFDB制御部460は、STPノード100のFDB470を検索する。そして、STPノード100のFDB制御部460は、フレームの宛先アドレスに対する出力情報を取得すると、その出力情報を登録した時刻をSTPノード100のFDBエントリ管理テーブル480より取得する。
フレームの宛先MACアドレスに基づいて選択された出力情報の登録時刻が、FDBフラッシュ要求時刻以前であり、かつ、選択された出力情報が、消去条件として登録された所定の条件(すなわち、出力情報の出力ポートがポートP2であること)を満足する場合、STPノード100のFDB制御部460は、STPノード100のスイッチ部420に出力情報が検索されなかった旨を通知する。従って、STPノード100のスイッチ部420は、フレームをブロードキャスト送信する。
また、STPノード100のFDB制御部460は、STPノード100のFDBエントリ管理テーブル480において、取得した出力情報が登録されていたエントリの参照の有無を示すフィールドをクリアする。
FDB470の検索により出力情報が取得された場合において、出力情報の登録時刻がFDBフラッシュ要求時刻以降である場合、または、出力情報が所定の消去条件を満足しない場合は、従来の技術で述べたフレーム転送方法と同様に、フレームはユニキャスト送信される。また、出力情報が検索されなかった場合においては、従来の技術で述べたように、フレームはブロードキャスト送信される。
第1の実施の形態と同様に、FDBフラッシュ要求時刻よりエージング時間の2倍の時刻が経過した場合、FDBフラッシュにより消去すべきFDBエントリは全て消去されているため、STPノード100のFDB制御部460は、STPノード100のFDBフラッシュ管理テーブル490において、FDBフラッシュ要求時刻を初期値にクリアしてもよい。また、消去条件を無効な情報(例えば、NULL値)に設定した後、FDBフラッシュ要求時刻以前のフレーム転送処理を行っても良い。
図6は、第2の実施の形態によるSTPノード100が、フレーム受信時に行うフレーム転送とMACアドレス学習の処理経過の例を示すフローチャートである。なお、図6におけるステップS1からステップS7の処理は、実施の形態1における処理と同様なため説明を省略する。
ステップS7において、登録時刻がFDBフラッシュ要求時刻以降でない場合(No)、FDB制御部460は、選択された出力情報が、消去条件を満たすか否かを判断する(ステップS8)。出力情報が消去条件を満たす場合(Yes)、ステップS6に移行する。出力情報が消去条件を満たさない場合(No)、ステップS3に移行する。
以上の動作によれば、所定の消去条件を満足するFDBのエントリのみに対して、そのエントリの内容が消去された場合と同等の効果を得ることができる。
実施の形態3.
次に、本発明の第3の実施の形態を説明する。本発明の第3の実施の形態によるSTPノードは、FDBフラッシュを連続して実行する。
以降では、第2の実施の形態において、STPノード100のSTP部500が、STPノード100のFDB制御部460に、出力ポートがポートP2であるエントリを消去する(以降、消去条件C1と記述する)ように依頼した後(以降、そのFDBフラッシュ要求時刻をT1と記述する)に、出力ポートがポートP1であるエントリを消去する(以降、消去条件C2と記述する)ように依頼する(以降、そのFDBフラッシュ要求時刻をT2と記述する)場合の動作を説明する。
ただし、2回目のFDBフラッシュが要求された際に、1回目のFDBフラッシュ要求時刻からエージング時間の2倍の時間が経過している場合は、1回目のFDBフラッシュによるFDBエントリの消去が既に完了しているため、互いのFDBフラッシュを全く独立の処理として取り扱うことができる。従って、本実施の形態で説明する動作を行わなくても、第2の実施の形態で説明した動作を個別に実行すれば良い。
以降では、1回目のFDBフラッシュが要求されてからエージング時間の2倍の時間以内に、2回目のFDBフラッシュが実行された場合の動作を説明する。なお、あるFDBフラッシュの消去条件が、それより以前に実行したFDBフラッシュの消去条件と同一である場合には、FDBフラッシュ要求時刻が早い方のFDBフラッシュによる処理を中断し、FDBフラッシュ要求時刻が遅い方のFDBフラッシュによる処理のみを実行することにより、ネットワークノードの負荷を軽減することができる。
(通信システムの構成)
本実施の形態における通信システムの構成は第2の実施の形態と同様である。
(ノードの構成)
本実施の形態におけるSTPノード100の構成は、STPノード100のFDBフラッシュ管理テーブル490が複数のFDBフラッシュ要求時刻と消去条件を管理する点において、第2の実施の形態におけるSTPノード100の構成と異なる。
図7は、第3の実施の形態のSTPノード100のFDBフラッシュ管理テーブル490の例を示す説明図である。図7に示すFDBフラッシュ管理テーブル490の第1番目のエントリは、1回目に実行されたFDBフラッシュについて、FDBフラッシュ要求時刻がT1であり、また、消去条件がC1であることを示している。また、第2番目のエントリは、2回目に実行されたFDBフラッシュについて、FDBフラッシュ要求時刻がT2であり、また、消去条件がC2であることを示している。
(FDBフラッシュ実行時の動作)
STPノード100のSTP部500からFDBフラッシュを依頼された場合のSTPノード100のFDB制御部460の動作は、1回目のFDBフラッシュの依頼においても、2回目のFDBフラッシュの依頼においても、第1及び第2の実施の形態と同様である。すなわち、STPノード100のFDB制御部460は、FDBのエージングを実行するか、もしくは、STPノード100のFDBエントリ管理テーブル480の全てのエントリに対して、FDBエントリの参照の有無を示すフィールドをクリアするとともに、エージングタイマを初期値にクリアする。
次に、FDBフラッシュ要求時刻T1以降に、STPノード100のFDB制御部460が、STPノード100のスイッチ部420から、受信フレームの宛先アドレスに対する出力ポートの検索を依頼された場合の動作を説明する。
STPノード100のFDB制御部460は、第1及び第2の実施の形態と同様に、STPノード100のFDB470において、宛先アドレスに対して登録されている出力情報を検索する。出力情報がFDB470の検索により取得されなかった場合のSTPノード100のFDB制御部460の動作は、第1及び第2の実施の形態と同様である。
出力情報が取得された場合、STPノード100のFDB制御部460は、STPノード100のFDBエントリ管理テーブル480から、STPノード100のFDB470において、その出力情報が管理されているエントリの登録時刻(以下、登録時刻tと記述する)を取得する。
STPノード100のFDB制御部460は、それぞれのFDBフラッシュの要求に対して、FDBエントリの登録時刻tがそのFDBフラッシュ要求時刻以前であって、かつ、そのFDBフラッシュの消去条件を満足する場合には、STPノード100のスイッチ部420に、出力情報が検索されなかった旨を通知する。
すなわち、STPノード100のスイッチ部420からの検索を要求された時刻が、FDBフラッシュ要求時刻T1以降からFDBフラッシュ要求時刻T2以前である場合、STPノード100のFDB制御部460は、登録時刻tがFDBフラッシュ要求時刻T1以前であって、かつ、出力情報が消去条件1を満足する場合に、STPノード100のスイッチ部420に、出力情報が検索されなかった旨を通知する。
また、STPノード100のスイッチ部420からの検索を要求された時刻がFDBフラッシュ要求時刻T2以降である場合、STPノード100のFDB制御部460は、登録時刻tがFDBフラッシュ要求時刻T1以前であり、かつ、出力情報が消去条件1を満足する場合、及び、登録時刻tがFDBフラッシュ要求時刻T2以前であり、かつ、出力情報が消去条件2を満足する場合に、STPノード100のスイッチ部420に出力情報が検索されなかった旨を通知する。
上述の条件以外の場合には、STPノード100のFDB制御部460は、STPノード100のスイッチ部420に、FDB470より取得した出力情報を通知する。
図8は、第3の実施の形態のSTPノード100が、フレーム受信時に行うフレーム転送とMACアドレス学習の処理経過の例を示すフローチャートである。なお、図8におけるステップS1からステップS6の処理は、実施の形態1における処理と同様なため説明を省略する。
FDB制御部460は、FDB470を検索して(ステップS1)、受信フレームの宛先MACアドレスに対応する出力ポートを選択する(ステップS2)。ここで、FDB制御部460がFDB470の検索を要求された時刻が、FDBフラッシュ要求時刻T2以降である場合を例にして説明する。
ステップS2において、出力ポートの選択に成功した場合(Yes)、FDB制御部460は、選択した出力ポートに対応するエントリの登録時刻tをFDBエントリ管理テーブル480から選択し、選択した登録時刻tが、FDBフラッシュ管理テーブル490のFDBフラッシュ要求時刻T2以降であるか否かを判断する(ステップS9)。
ステップS9において、登録時刻tがFDBフラッシュ要求時刻T2以降でない場合(No)、FDB制御部460は、選択された出力情報が、消去条件C2を満たすか否かを判断する(ステップS10)。登録時刻tがFDBフラッシュ要求時刻T2以降である場合(Yes)、ステップS3に移行する。
ステップS10において、出力情報が消去条件C2を満たす場合(Yes)、ステップS6に移行する。出力情報が消去条件C2を満たさない場合(No)、FDB制御部460は、選択した登録時刻tが、FDBフラッシュ管理テーブル490のFDBフラッシュ要求時刻T1以降であるか否かを判断する(ステップS11)。
ステップS11において、登録時刻tがFDBフラッシュ要求時刻T1以降である場合(Yes)、ステップS3に移行する。登録時刻tがFDBフラッシュ要求時刻T1以降でない場合(No)、FDB制御部460は、選択された出力情報が、消去条件C1を満たすか否かを判断する(ステップS12)。
ステップS12において、出力情報が消去条件を満たす場合(Yes)、ステップS6に移行し、満たさない場合(No)、ステップS3に移行する。
以上のように、本実施の形態によれば、FDBフラッシュを連続して実行することが可能となる。なお、以上では、FDBフラッシュを2回連続して実行した場合の動作について説明したが、同様にして、3回以上のFDBフラッシュを連続して実行することができる。
ところで、FDBフラッシュ要求時刻T1とFDBフラッシュ要求時刻T2の時間間隔が小さい場合、第1の実施の形態で述べたように、STPノード100のFDB制御部460が、FDBフラッシュの要求時にエージングを実行すると、FDBのエントリの多くが消去されてしまうために、FDBエントリの消去条件を設定することにより、ブロードキャスト送信の増大による通信帯域の圧迫を抑制する効果が得られなくなる恐れがある。
また、FDBフラッシュの要求時に、エージングを実行せずに、エージングタイマを初期値にクリアした上で、STPノード100のFDBエントリ管理テーブル480の全てのエントリに対して、その参照の有無を示すフィールドをクリアする処理を行った場合は、一連のFDBフラッシュの要求のうち、最後のFDBフラッシュ要求からエージング時間が経過した時刻に、エージングが実行されるため、FDBのエントリが実際に消去される時刻が大幅に遅れてしまうという問題が生じる。以降では、上述の問題を解決する方法を説明する。
STPノード100のFDB制御部460は、FDBフラッシュの要求時にエージングを実行せずに、STPノード100のFDBエントリ管理テーブル480において、FDBフラッシュ要求時刻以前に登録されたFDBのエントリに対して、そのエントリの参照の有無を示すフィールドをクリアする処理のみを実行するとともに、以下に説明する動作を行う。
STPノード100のFDB制御部460は、FDBフラッシュ要求時に、そのFDBフラッシュに対応するエージングタイマを起動する。以降では、FDBフラッシュ要求時刻T1に起動するエージングタイマをエージングタイマAT1とし、また、FDBフラッシュ要求時刻T2に起動するエージングタイマをエージングタイマAT2とする。本実施の形態においては、エージングタイマAT1及びAT2の起動時にタイマに設定する値は、通常動作しているエージングタイマ(以下、エージングタイマAT0と記述する)の初期値と同一とする。
エージングタイマAT1及びAT2の初期値をエージングタイマAT0の初期値よりも小さく設定することにより、実際にFDBのエントリが消去される時刻を早めることもできるが、FDBフラッシュによりFDBのエントリが実際に消去される時刻を明確にするためには、FDBの全てのエントリを消去するのに要する時間よりも大きな値を設定しておくことが望ましい。
エージングタイマAT1がタイムアウトした場合、STPノード100のFDB制御部460は、FDBエントリの登録時間がFDBフラッシュ要求時刻T1以前のエントリに対して、エージングを実行した後、エージングタイマAT1を終了させるとともに、エージングタイマAT0を初期値にクリアする。同様に、エージングタイマAT2がタイムアウトした場合、STPノード100のFDB制御部460は、FDBエントリの登録時間がFDBフラッシュ要求時刻T2以前のエントリに対してエージングを実行した後、エージングタイマAT2を終了させるとともに、エージングタイマAT0を初期値にクリアする。以上により、上述の問題を解決することができる。
本発明によれば、FDBのエントリ毎に登録時刻を管理することにより、再学習されたエントリのフレームをユニキャストすることが可能であるため、ブロードキャストによって帯域が圧迫される時間を短縮できるとともに、障害が連続して発生した場合にも対処可能である。
上述の各実施の形態においては、STPノードがFDB制御部460などの各処理部を備える構成として説明したが、STPノードがコンピュータと記憶装置とを予め備えた上で、そのコンピュータが記憶装置に記憶されたネットワークノード用プログラムに従って動作することにより、各処理部と同様の動作を実現する構成であっても良い。
また、FDBフラッシュ管理テーブル490が、FDBフラッシュ要求時刻として、STP部500がFDBフラッシュを要求した時刻を記憶する場合を例示したが、例えば、FDB制御部460がFDBフラッシュの実行を開始した時刻を記憶してもよい。