(57)【要約】【課題】異常事態から短時間で復帰可能な信頼性の高いネットワークノードおよびネットワークノード用プログラムを提供する。【解決手段】ＦＤＢ制御部４６０は、フレームを受信すると、ＦＤＢ４７０を検索して受信フレームの宛先ＭＡＣアドレスに対応する出力ポートを選択する。ＦＤＢ制御部４６０は、選択した出力ポートに対応するエントリの登録時刻が、ＦＤＢフラッシュ管理テーブル４９０のＦＤＢフラッシュ要求時刻以降である場合、ＦＤＢエントリ管理テーブル４８０対応するエントリの参照の有無を示すフィールドをセットし、スイッチ部４２０は、ユニキャスト送信を行う。登録時刻がＦＤＢフラッシュ要求時刻以降でない場合、ＦＤＢ制御部４６０は、エージング時刻を設定するとともに対応するエントリの参照の有無を示すフィールドをクリアし、スイッチ部４２０は、ブロードキャスト送信を行う。【選択図】図１
2008148176.tif 000002
【特許請求の範囲】
【請求項１】
フレームの転送先を示すフレーム転送先情報を記憶するＦＤＢと、
フレーム転送先情報の登録時刻を記憶するＦＤＢ登録時刻記憶部と、
前記ＦＤＢに記憶されたフレーム転送先情報を所定の場合に消去するＦＤＢフラッシュの要求時刻を記憶する要求時刻記憶部と、
要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、受信したフレームをブロードキャスト送信する通信制御部と
を備えたことを特徴とするネットワークノード。
【請求項２】
参照したことがあるフレーム転送先情報であることを示す参照情報をフレーム転送先情報に対応させて参照情報記憶部に記憶させる参照情報制御部と、
フレーム転送先情報を参照情報に基づいて消去するＦＤＢエージングを実行するＦＤＢエージング部を備え、
前記参照情報制御部は、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、参照したフレーム転送先情報に対応する参照情報を消去する
請求項１記載のネットワークノード。
【請求項３】
参照情報制御部は、ＦＤＢフラッシュの実行時に参照情報を消去する請求項２記載のネットワークノード。
【請求項４】
参照情報制御部は、ＦＤＢフラッシュの実行時に、登録時刻が要求時刻以前であるフレーム転送先情報に対応する参照情報を消去する請求項２記載のネットワークノード。
【請求項５】
ＦＤＢエージング部は、ＦＤＢフラッシュの実行時にＦＤＢエージングを実行する請求項２記載のネットワークノード。
【請求項６】
ＦＤＢから消去するフレーム転送先情報を特定するための消去条件を記憶するＦＤＢフラッシュ消去条件記憶部を備え、
通信制御部は、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前であって、かつ参照したフレーム転送先情報が消去条件を満足する場合に、受信したフレームをブロードキャスト送信する
請求項１から請求項５のうちのいずれか１項に記載のネットワークノード。
【請求項７】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームの転送先アドレスが所定の転送先アドレスであることを記憶する請求項６記載のネットワークノード。
【請求項８】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームのＶＬＡＮ識別子が所定のＶＬＡＮ識別子であることを記憶する請求項６または請求項７記載のネットワークノード。
【請求項９】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームの属するスパニングツリーが所定のスパニングツリーであることを記憶する請求項６から請求項８のうちのいずれか１項に記載のネットワークノード。
【請求項１０】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームの転送先情報が所定のフレーム転送先情報であることを記憶する請求項６記載のネットワークノード。
【請求項１１】
要求時刻記憶部は、複数のフレーム転送先情報の要求時刻を記憶し、
通信制御部は、最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が最後の要求時刻以前である場合に、受信したフレームをブロードキャスト送信する
請求項１から請求項５のうちのいずれか1項に記載のネットワークノード。
【請求項１２】
要求時刻記憶部は、複数のフレーム転送先情報の要求時刻を記憶し、
ＦＤＢフラッシュ消去条件記憶部は、それぞれの要求時刻に対応付けて消去条件を記憶し、
通信制御部は、最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻がいずれかの要求時刻以前であって、かつ参照したフレーム転送先情報が要求時刻に対応する消去条件を満足する場合に、受信したフレームをブロードキャスト送信する
請求項６から請求項１１のうちのいずれか1項に記載のネットワークノード。
【請求項１３】
通信制御部は、ＦＤＢフラッシュ消去条件記憶部が複数の要求時刻に対応づけて同一の消去条件を記憶し、登録時刻が先の要求時刻以前であることに基づいて受信したフレームをブロードキャスト送信している場合に、送信を中断する請求項１２記載のネットワークノード。
【請求項１４】
ＦＤＢエージング部は、ＦＤＢフラッシュの要求時刻から所定の時間が経過した場合に、ＦＤＢエージングを実行する請求項２から請求項１３のうちのいずれか1項に記載のネットワークノード。
【請求項１５】
ＦＤＢは、出力ポートもしくはノード識別子、または出力ポートもしくはノード識別子を仮想的に処理するための情報を含むフレーム転送先情報を記憶する請求項１から請求項１４のうちのいずれか1項に記載のネットワークノード。
【請求項１６】
ネットワークノードが備えるコンピュータに、
フレームの転送先を示すフレーム転送先情報の登録時刻をフレーム転送先情報に対応させてＦＤＢ登録時刻記憶部に記憶させる処理と、
所定の場合にＦＤＢに記憶されたフレーム転送先情報を消去するＦＤＢフラッシュの要求時刻を要求時刻記憶部に記憶させる処理と、
要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、受信したフレームをブロードキャスト送信する処理と
を実行させるためのネットワークノード用プログラム。
【請求項１７】
ネットワークノードが備えるコンピュータに、
参照したことがあるフレーム転送先情報であることを示す参照情報をフレーム転送先情報に対応させて参照情報記憶部に記憶させる処理と、
参照情報に基づいてフレーム転送先情報を消去するＦＤＢエージングを実行する処理と、
要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、参照したフレーム転送先情報に対応する参照情報を消去する処理とを実行させる
請求項１６記載のネットワークノード用プログラム。
【請求項１８】
ネットワークノードが備えるコンピュータに、
要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前であって、かつ参照したフレーム転送先情報が、ＦＤＢフラッシュ消去条件記憶部が記憶するＦＤＢから消去するフレーム転送先情報を特定するための消去条件を満足する場合に、受信したフレームをブロードキャスト送信する処理を実行させる
請求項１６または請求項１７記載のネットワークノード用プログラム。
【請求項１９】
ネットワークノードが備えるコンピュータに、
要求時刻記憶部が記憶する複数のフレーム転送先情報の要求時刻のうち最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が最後の要求時刻以前である場合に、受信したフレームをブロードキャスト送信する処理を実行させる
請求項１６または請求項１７記載のネットワークノード用プログラム。
【請求項２０】
ネットワークノードが備えるコンピュータに、
要求時刻記憶部が記憶する複数のフレーム転送先情報の要求時刻のうち最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻がいずれかの要求時刻以前であって、かつ参照したフレーム転送先情報が、ＦＤＢフラッシュ消去条件記憶部がそれぞれの要求時刻に対応付けて記憶する消去条件を満足する場合に、受信したフレームをブロードキャスト送信する処理を実行させる
請求項１６から請求項１９のうちのいずれか１項に記載のネットワークノード用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークノードおよびネットワークノード用プログラムに関し、特に、高い信頼性を有しＦＤＢの設定に基づいてフレームを転送するネットワークノードおよびネットワークノード用プログラムに関する。
【背景技術】
【０００２】
近年、広域Ｅｔｈｅｒｎｅｔ（登録商標）サービスに示されるように、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）向けに開発されたＥｔｈｅｒｎｅｔが基幹系通信システムに多く採用されている。
【０００３】
その理由としては、従来のＳＤＨ又はＳＯＮＥＴなどの基幹系システム向けの通信装置に対して、Ｅｔｈｅｒｎｅｔに準拠して動作するノード（以下、Ｅｔｈｅｒｎｅｔノードと記述する。）が低価格であることに加えて、運用が容易であることが考えられる。また、通信システムの信頼性に着目した場合、Ｅｔｈｅｒｎｅｔ技術は、用途がＬＡＮ向けであったため、基幹系通信システムに要求される性能を十分に満足していなかったが、Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ（ＳＴＰ）やＲａｐｉｄ  Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ（ＲＳＴＰ）のように、通信経路の冗長化を可能とするプロトコルが、ＩＥＥＥ（ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）において標準化され、また、Ｅｔｈｅｒｎｅｔノードを２重化するネットワークプロトコルが装置ベンダによって独自に開発されるなどすることにより、Ｅｔｈｅｒｎｅｔネットワークの信頼性が向上したことも理由の１つである。
【０００４】
以下、本発明の必要性を明確にするため、１９９８年にＩＥＥＥから発行された標準化文書であるＩＥＥＥ  ８０２．１Ｄにおいて開示されているＳＴＰ（非特許文献１参照。）を適用したＥｔｈｅｒｎｅｔネットワークにおける、正常時のＥｔｈｅｒｎｅｔフレームの転送動作と、リンクの切断又はＥｔｈｅｒｎｅｔノードの故障等の異常が発生した場合の障害回復動作を説明する。
【０００５】
（通信システムの構成）
図９は、３台のＳＴＰノード及び３台のＥｔｈｅｒｎｅｔノードを備えたＥｔｈｅｒｎｅｔネットワークシステムの例を示す説明図である。図９に示す通信システムは、ＳＴＰに準拠して動作する３台のＥｔｈｅｒｎｅｔノード（以下、ＳＴＰノードと記述する。）１００，１２０，１３０と、３台の従来のＥｔｈｅｒｎｅｔノード３００，３１０，３２０とを備える。
【０００６】
Ｅｔｈｅｒｎｅｔノード３００〜３２０は、ＳＴＰノード１００〜１２０配下の端末として、ＳＴＰノード１００〜１２０にそれぞれ収容されている。なお、ＳＴＰノード１００〜１２０の配下には、複数のＥｔｈｅｒｎｅｔノードが収容されていても良いが、ここでは説明を簡単にするため、ＳＴＰノード１００〜１２０はそれぞれ１台のＥｔｈｅｒｎｅｔノードを収容しているものとする。
【０００７】
また、Ｅｔｈｅｒｎｅｔノード３００〜３２０のさらに配下に、他のＥｔｈｅｒｎｅｔノードが接続されているような構成であっても、ループを構成しない限りは構わない。ここで、ループを構成するとは、複数のＥｔｈｅｒｎｅｔノードがリング状に接続されることを言う。なお、複数のＥｔｈｅｒｎｅｔノードが物理的にループを構成している場合であっても、ＳＴＰなどのプロトコルにより、論理的にはループを構成していない場合は問題無い。
【０００８】
ＳＴＰノード１００〜１２０のポートＰ１及びＰ２は、ＳＴＰの制御対象のポートに設定される。制御対象のポートのポート状態は、ＳＴＰノード１００〜１２０間のＳＴＰの動作により、図９に示すように、フォワーディング状態とブロッキング状態の何れかに設定される。その結果、図９の太線で示すスパニングツリーが構成される。なお、ＳＴＰノード１００〜１２０が、ＳＴＰにより、ＳＴＰの制御対象のポートのポート状態を決定するプロセス、すなわち、スパニングツリーを構成するプロセスは、本発明に無関係であるため、詳細な説明を省略する。
【０００９】
スパニングツリーに含まれるリンクの両端のポートは、データフレームの送受信が許可される状態（フォワーディング状態）にある。また、スパニングツリーに含まれないリンクの一方のポートはフォワーディング状態にあるが、他方のポートはデータフレームの送受信が禁止される状態（ブロッキング状態）、すなわち、リンクが論理的に切断されている状態にある。Ｅｔｈｅｒｎｅｔフレームはフォワーディング状態にあるポートで送受信可能であるため、ＳＴＰが適用されたＥｔｈｅｒｎｅｔネットワークにおいては、Ｅｔｈｅｒｎｅｔフレームはスパニングツリーに沿って転送される。
【００１０】
（ノードの構成）
図１０は、一般的なＳＴＰノードの構成例を示すブロック図である。ＳＴＰノード１００は、入力ポート４００−１，４００−２，４００−３と、フレーム解析部４１０−１，４１０−２と、スイッチ部４２０と、フレーム多重部４３０−１，４３０−２と、出力ポート４４０−１，４４０−２，４４０−３と、ＦＤＢ部４５０と、ＦＤＢ制御部４６０と、ＦＤＢ４７０と、ＦＤＢエントリ管理テーブル４８０と、ＳＴＰ部５００と、ポート状態テーブル５１０とを含む。なお、ＳＴＰノード１１０及び１２０の構成もＳＴＰノード１００の構成と同様である。
【００１１】
ＳＴＰノード１００の入力ポート４００−１〜３は、隣接するＥｔｈｅｒｎｅｔノード３００、ＳＴＰノード１１０又はＳＴＰノード１２０から送信されるフレームを受信するポートであって、図９に示すＳＴＰノード１００のポートＰ１〜Ｐ３の受信部に相当する。なお、以降でＳＴＰノード１００の入力ポートＰ１と記述した場合は、ＳＴＰノード１００の入力ポート４００−１を表すものとする。ここで、ＳＴＰノード１００の入力ポート４００−１，２は、例えば、ＳＴＰノード１１０，１２０から受信したフレームを、それぞれフレーム解析部４１０−１，２に出力する。また、ＳＴＰノード１００の入力ポート４００−３は、例えば、Ｅｔｈｅｒｎｅｔノード３００から受信したフレームを、スイッチ部４２０に出力する。
【００１２】
ＳＴＰノード１００のフレーム解析部４１０−１，２は、ＳＴＰノード１００のＳＴＰ部５００が使用する特殊フレームであるＢＰＤＵ（Ｂｒｉｄｇｅ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）をＳＴＰノード１００のＳＴＰ部５００に送る。また、ＳＴＰノード１００のフレーム解析部４１０−１，２は、ＢＰＤＵ以外のフレームをＳＴＰノード１００のスイッチ部４２０に送る。
【００１３】
ＳＴＰノード１００のスイッチ部４２０は、受信フレームの出力ポートの決定を行うとともに、その決定に従って、ＳＴＰノード１００〜１２０のフレーム多重部４３０−１，２と出力ポート４４０−３のうち、適切な機能ブロックにフレームを送る。
【００１４】
ＳＴＰノード１００のフレーム多重部４３０−１，２は、ＳＴＰノード１００のスイッチ部４２０から送られるフレームと、ＳＴＰノード１００のＳＴＰ部５００から送られるＢＰＤＵとを多重した上で、ＳＴＰノード１００の出力ポート４４０−１，２に送る。
【００１５】
ＳＴＰノード１００の出力ポート４４０−１〜３は、隣接するＳＴＰノード１１０又は１２０、又はＥｔｈｅｒｎｅｔノード３００に、フレームを送信するポートであって、図９に示すＳＴＰノード１００のポートＰ１〜Ｐ３の送信部に相当する。なお、以降でＳＴＰノード１００の出力ポートＰ１と記述した場合は、ＳＴＰノード１００の出力ポート４００−１を表すものとする。
【００１６】
ＳＴＰノード１００のＦＤＢ部４５０は、フレームの宛先ＭＡＣアドレスと出力ポートとの関係を登録するＦＤＢ（Ｆｏｒｗａｒｄｉｎｇ  ＤａｔａＢａｓｅ）４７０と、ＦＤＢ４７０の各エントリの情報を管理するＦＤＢエントリ管理テーブル４８０と、ＦＤＢ４７０の内容を検索及び更新するＦＤＢ制御部４６０とを含む。
【００１７】
図１１は、一般的なＳＴＰノードのＦＤＢの例を示す説明図である。ＳＴＰノード１００のＦＤＢ４７０の各エントリは、ＥｔｈｅｒｎｅｔノードのＭＡＣアドレスを示す「宛先ＭＡＣアドレス」および「出力ポート」の２つのフィールドを含む。なお、図１１には、ＦＤＢ４７０が、各エントリの順序を示す「エントリナンバ（エントリＮｏ．）」を含む場合を例示する。ＦＤＢ４７０に含まれる「宛先ＭＡＣアドレス」および「出力ポート」は、例えば、「エントリナンバ」に対応する領域に記憶される。なお、エントリは、ノード識別子を含んでもよく、また、出力ポートまたはノード識別子を仮想的に処理するための情報を含んでもよい。
【００１８】
例えば、図１１に示すＳＴＰノード１００のＦＤＢ４７０の第１のエントリには、Ｅｔｈｅｒｎｅｔノード３００のＭＡＣアドレスに対して、ＳＴＰノード１００のポートＰ３が登録されている。これは、ＳＴＰノード１００が、宛先ＭＡＣアドレスがＥｔｈｅｒｎｅｔノード３００のＭＡＣアドレスであるフレームを、ＳＴＰノード１００のポートＰ３から送信することを意味する。
【００１９】
ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０は、ＳＴＰノード１００のＦＤＢ４７０の各エントリについて、フレーム転送処理におけるそのエントリの参照の有無を管理する。図１２は、一般的なＳＴＰノードのＦＤＢエントリ管理テーブルの例を示す説明図である。図１２に示すように、ＦＤＢエントリ管理テーブル４８０は、「エントリ参照の有無」を含む情報である。図１２に示すＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０の第１のエントリには、エントリの参照の有無を示すフィールドに「有り」と登録されている。これは、ＳＴＰノード１００のＦＤＢ４７０の第１のエントリが、ＳＴＰノード１００のフレーム転送処理において、参照されたことがあることを意味する。なお、図１２には、ＦＤＢエントリ管理テーブル４８０が、各エントリの順序を示す「エントリナンバ（エントリＮｏ．）」を含む場合を例示する。ＦＤＢエントリ管理テーブル４８０に含まれるエントリナンバは、ＦＤＢ４７０に含まれる情報と同じ情報である。ＦＤＢエントリ管理テーブル４８０に含まれる「エントリ参照の有無」は、例えば、「エントリナンバ」に対応づけて記憶される。
【００２０】
ＳＴＰノード１００のＳＴＰ部５００は、ＳＴＰノード１１０及び１２０とＢＰＤＵを送受信し合い、互いのパスコストを比較することにより、ＳＴＰノード１００のＳＴＰの制御対象であるポートＰ１及びＰ２のポート状態を決定するとともに、ＳＴＰノード１００のポート状態テーブル５１０にポート状態を登録する。ここで、ＳＴＰノード１００のＳＴＰ部５００は、例えば、フレーム解析部４１０−１，２を介して、ＳＴＰノード１１０，１２０からＢＰＤＵを受信する。また、ＳＴＰノード１００のＳＴＰ部５００は、例えば、フレーム多重部４３０−１，２を介して、ＳＴＰノード１１０，１２０にＢＰＤＵを送信する。
【００２１】
ＳＴＰノード１００のポート状態テーブル５１０には、ＳＴＰノード１００のＳＴＰの制御対象であるポート（ポートＰ１及びＰ２）のポート状態（ブロッキング状態、又は、フォワーディング状態の何れか）が登録される。
【００２２】
（フレームのブロードキャスト転送とＭＡＣアドレス学習）
最初に、図９に示す通信システムの運用開始直後に、Ｅｔｈｅｒｎｅｔノード３００がＥｔｈｅｒｎｅｔノード３１０にフレームを送信する動作を説明する。
【００２３】
ＳＴＰノード１００において、ＳＴＰノード１００の入力ポート４００−３は、自ノード配下のＥｔｈｅｒｎｅｔノード３００から送信されたフレームを受信すると、受信したフレームをＳＴＰノード１００のスイッチ部４２０に送る。
【００２４】
ＳＴＰノード１００のスイッチ部４２０は、フレームの送信元ＭＡＣアドレスとフレームの受信ポートとの関係を、ＦＤＢ４７０における宛先ＭＡＣアドレスと出力ポートとの関係として、ＳＴＰノード１００のＦＤＢ４７０に登録するように、ＳＴＰノード１００のＦＤＢ制御部４６０に依頼する。
【００２５】
ＳＴＰノード１００のＦＤＢ制御部４６０は、フレームの送信元ＭＡＣアドレス（Ｅｔｈｅｒｎｅｔノード３００のＭＡＣアドレス）とフレームの受信ポート（ＳＴＰノード１００のポートＰ３）との関係を、宛先ＭＡＣアドレスと出力ポートとの関係として、ＳＴＰノード１００のＦＤＢ４７０に登録する。
【００２６】
また、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢ管理テーブル４８０のエントリのうち、上記の関係が登録されたＳＴＰノード１００のＦＤＢ４７０のエントリに対応するエントリに対して、エントリ参照の有無を示すフィールドに「無し」を設定する（以降では、フィールドをクリアする、または、フィールドをリセットするとも記述する。）。
【００２７】
以上に説明したように、ＦＤＢ４７０に宛先ＭＡＣアドレスと出力ポートとの関係を登録する動作は、一般にＭＡＣアドレス学習と呼ばれる。
【００２８】
ＭＡＣアドレス学習の依頼と同時に、ＳＴＰノード１００のスイッチ部４２０は、ＳＴＰノード１００のＦＤＢ４７０においてフレームの宛先ＭＡＣアドレス（Ｅｔｈｅｒｎｅｔノード３１０のＭＡＣアドレス）に対して登録されている出力ポートを検索するように、ＳＴＰノード１００のＦＤＢ制御４６０に依頼する。
【００２９】
ＳＴＰノード１００のＦＤＢ制御部４６０は、フレームの宛先ＭＡＣアドレスをキーとして、ＳＴＰノード１００のＦＤＢ４７０を検索することにより、フレームの宛先ＭＡＣアドレスに対して登録されている出力ポートを取得する。
【００３０】
通信システムの運用開始直後は、ＳＴＰノード１００のＦＤＢ４７０には登録されている情報が全くないため、ＳＴＰノード１００のＦＤＢ制御部４６０による出力ポートの検索は失敗する。従って、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のスイッチ部４２０に検索が失敗した旨を通知する。
【００３１】
検索に失敗した通知を受けた場合、ＳＴＰノード１００のスイッチ部４２０は、ＳＴＰの制御対象であるポートのうちフォワーディング状態である全てのポート、及び、ＳＴＰの制御対象でない全てのポート（ただし、フレームの受信ポートを除く）からフレームを送信する。すなわち、フレームは、ＳＴＰノード１００のフレーム多重部４４０−１，２に送られた後、ＳＴＰノード１００の出力ポート４４０−１，２からＳＴＰノード１１０及び１２０に送信される。なお、出力ポート４４０−３は、フレームの受信ポートＰ３の送信部であるため、出力ポート４４０−３からはフレームは送信されない。上記のフレームの転送方法はブロードキャスト転送と呼ばれる。
【００３２】
以降では、ＳＴＰノード１００の出力ポート４４０−１から送信されたフレームが、ＳＴＰノード１１０の入力ポート４００−２で受信された後のＳＴＰノード１１０の動作を説明する。なお、ＳＴＰノード１００の出力ポート４４０−２から送信されたフレームが、ＳＴＰノード１２０の入力ポート４００−１で受信された後のＳＴＰノード１２０の動作も、以降で説明するＳＴＰノード１００の動作と同様である。
【００３３】
ＳＴＰノード１１０において、ＳＴＰノード１１０の入力ポート４００−２は、ＳＴＰノード１００から送信されたフレームを受信すると、ＳＴＰノード１１０のフレーム解析部４１０−２に受信したフレームを送る。
【００３４】
ＳＴＰノード１１０のフレーム解析部４１０−２は、フレームがＢＰＤＵであれば、ＳＴＰノード１１０のＳＴＰ部５００に送り、また、フレームがＢＰＤＵでなければ、ＳＴＰノード１１０のスイッチ部４２０に送る。
【００３５】
ＳＴＰノード１１０のスイッチ部４２０は、フレームの受信ポートがＳＴＰの制御対象である場合、受信ポートのポート状態がブロッキング状態であれば、フレームを廃棄する。また、フォワーディング状態であれば、ＳＴＰノード１１０のスイッチ部４２０は、前述のＳＴＰノード１００がＥｔｈｅｒｎｅｔノード３００からのフレームを受信した場合の動作と同様に、ＭＡＣアドレス学習、及び、フレームのブロードキャスト転送を行う。
【００３６】
すなわち、ＳＴＰノード１１０のＦＤＢ４７０には、フレームの送信元ＭＡＣアドレス（Ｅｔｈｅｒｎｅｔノード３００のＭＡＣアドレス）と受信ポート（ＳＴＰノード１１０のポートＰ２）との関係が、宛先ＭＡＣアドレスと出力ポートとの関係として登録される。
【００３７】
それと同時に、ＳＴＰノード１１０のＦＤＢエントリ管理テーブル４８０のエントリのうち、上記の関係を登録したＳＴＰノード１１０のＦＤＢ４７０のエントリに対応するエントリに対して、エントリの参照の有無を示すフィールドがクリアされる。
【００３８】
フレームは、ＳＴＰノード１１０の出力ポート４４０−１からＳＴＰノード１２０に送信される。また、ＳＴＰノード１１０の出力ポート４４０−３からＥｔｈｅｒｎｅｔノード３１０に送信される。
【００３９】
以上のように、Ｅｔｈｅｒｎｅｔノード３００から送信されたＥｔｈｅｒｎｅｔノード３１０宛てのフレームは、Ｅｔｈｅｒｎｅｔノード３１０に転送される。なお、ＳＴＰノード１１０の出力ポート４４０−１から送信されたフレームは、ＳＴＰノード１２０のブロッキング状態にある入力ポートＰ２で受信され、ＳＴＰノード１２０により廃棄されるため、それ以上転送されることはない。
【００４０】
（フレームのユニキャスト転送）
次に、Ｅｔｈｅｒｎｅｔノード３００からＥｔｈｅｒｎｅｔノード３１０へのフレームの転送に続いて、Ｅｔｈｅｒｎｅｔノード３１０からＥｔｈｅｒｎｅｔノード３００にフレームを返信する場合の動作を説明する。
【００４１】
ＳＴＰノード１１０において、ＳＴＰノード１１０の入力ポート４００−３は、Ｅｔｈｅｒｎｅｔノード３１０からＥｔｈｅｒｎｅｔノード３００宛てのフレームを受信すると、ＳＴＰノード１１０のスイッチ部４２０にフレームを送る。
【００４２】
ＳＴＰノード１１０のスイッチ部４２０は、ＳＴＰノード１１０のＦＤＢ制御部４６０に対して、受信フレームに関するＭＡＣアドレス学習、及び、出力ポートの検索を依頼する。
【００４３】
すなわち、ＳＴＰノード１１０のＦＤＢ４７０には、フレームの送信元ＭＡＣアドレス（Ｅｔｈｅｒｎｅｔノード３１０のＭＡＣアドレス）と受信ポート（ＳＴＰノード１１０のポートＰ３）との関係が、宛先ＭＡＣアドレスと出力ポートとの関係として登録される。
【００４４】
また、前述のＥｔｈｅｒｎｅｔノード３００からＥｔｈｅｒｎｅｔノード３１０にフレームを転送する過程で行われたＭＡＣアドレス学習により、ＳＴＰノード１１０のＦＤＢ４７０には、受信フレームの宛先ＭＡＣアドレスであるＥｔｈｅｒｎｅｔノード３００のＭＡＣアドレスに対して、出力ポートとしてポートＰ２が登録されている。そのため、ＳＴＰノード１１０のＦＤＢ制御部４６０は、ＳＴＰノード１１０のＦＤＢ４７０を参照し、ＳＴＰノード１１０のスイッチ部４２０に、受信フレームの出力ポートがポートＰ２である旨を通知する。
【００４５】
それと同時に、ＳＴＰノード１１０のＦＤＢ制御部４６０は、ＳＴＰノード１１０のＦＤＢエントリ管理テーブル４８０のエントリのうち、上記の宛先ＭＡＣアドレスと出力ポートの関係を登録したエントリに対応するエントリにおいて、エントリの参照の有無を示すフィールドに「有り」を設定する（以降では、エントリ参照の有無を示すフィールドをセットするとも記述する。）。
【００４６】
フレームは、ＳＴＰノード１１０のスイッチ部４２０によりＳＴＰノード１１０のフレーム多重部４３０−２に送られた後、ＳＴＰノード１１０の出力ポート４４０−２からＳＴＰノード１００に送信される。以上のフレームの転送方法はユニキャスト転送と呼ばれる。
【００４７】
ＳＴＰノード１００において、ＳＴＰノード１００の入力ポート４００−１は、ＳＴＰノード１１０から送信されたフレームを受信すると、ＳＴＰノード１００のフレーム解析部４１０−１に受信したフレームを送る。
【００４８】
ＳＴＰノード１００のフレーム解析部４１０−１は、受信フレームがＢＰＤＵであれば、ＳＴＰノード１００のＳＴＰ部５００に送り、また、ＢＰＤＵでなければ、ＳＴＰノード１００のスイッチ部４２０に送る。
【００４９】
ＳＴＰノード１００のスイッチ部４２０は、フレームの受信ポートがＳＴＰの制御対象である場合、受信ポートのポート状態がブロッキング状態であれば、フレームを廃棄する。また、フォワーディング状態であれば、ＳＴＰノード１００のスイッチ部４２０は、前述のＳＴＰノード１１０がＥｔｈｅｒｎｅｔノード３１０からのフレームを受信した場合と同様に、ＭＡＣアドレス学習、及び、フレームのユニキャスト転送を行う。
【００５０】
すなわち、ＳＴＰノード１００のＦＤＢ４７０には、フレームの送信元ＭＡＣアドレス（Ｅｔｈｅｒｎｅｔノード３１０のＭＡＣアドレス）と受信ポート（ＳＴＰノード１００のポートＰ１）との関係が、宛先ＭＡＣアドレスと出力ポートとの関係として登録される。
【００５１】
それと同時に、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０のエントリのうち、上記の関係を登録したＳＴＰノード１００のＦＤＢ４７０のエントリに対応するエントリに、エントリの参照の有無を示すフィールドをクリアする。
【００５２】
また、前述のＥｔｈｅｒｎｅｔノード３００からＥｔｈｅｒｎｅｔノード３１０にフレームを転送する過程で行われたＭＡＣアドレス学習により、ＳＴＰノード１００のＦＤＢ４７０には、受信フレームの宛先ＭＡＣアドレスであるＥｔｈｅｒｎｅｔノード３００のＭＡＣアドレスに対して、出力ポートとしてポートＰ３が登録されている。そのため、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢ４７０を参照し、ＳＴＰノード１００のスイッチ部４２０にフレームの出力ポートがポートＰ３である旨を通知する。
【００５３】
それと同時に、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０のエントリのうち、Ｅｔｈｅｒｎｅｔノード３００のＭＡＣアドレスとポートＰ３の関係を登録しているＳＴＰノード１００のＦＤＢ４７０のエントリに対応するエントリにおいて、エントリの参照の有無を示すフィールドをセットする。
【００５４】
フレームは、ＳＴＰノード１００のスイッチ部４２０により、ＳＴＰノード１００の出力ポート４４０−３からＥｔｈｅｒｎｅｔノード３００に送信される。
【００５５】
以上のようにして、Ｅｔｈｅｒｎｅｔノード３１０から送信されたＥｔｈｅｒｎｅｔノード３００宛てのフレームは、Ｅｔｈｅｒｎｅｔノード３００に転送される。
【００５６】
図１３は、以上で説明した一般的なＳＴＰノード１００〜１２０がフレーム受信時に行うフレーム転送とＭＡＣアドレス学習の処理経過の例を示すフローチャートである。
【００５７】
スイッチ部４２０が、入力ポート４００−１〜３およびフレーム解析部４０１−１，２を介してフレームを受信すると、ＦＤＢ制御部４６０は、ＦＤＢ４７０を検索して（ステップＳ１）、受信フレームの宛先ＭＡＣアドレスに対応する出力ポートを選択する（ステップＳ２）。
【００５８】
ステップＳ２において、出力ポートの選択に成功した場合（Ｙｅｓ）、ＦＤＢ制御部４６０は、ＦＤＢエントリ管理テーブル４８０において、ステップＳ２において選択した出力ポートに対応するエントリの参照の有無を示すフィールドをセットする（ステップＳ３）。スイッチ部４２０は、受信したフレームを、ステップＳ２において選択した出力ポートに出力する。そして、当該出力ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部４２０は、ユニキャスト送信を行う（ステップＳ４）。
【００５９】
ステップＳ２において、出力ポートの選択に失敗した場合（Ｎｏ）、ＦＤＢ制御部４６０は、スイッチ部４２０に検索が失敗した旨を通知する。スイッチ部４２０は、ＳＴＰの制御対象であるポートのうちフォワーディング状態である全てのポート、及び、ＳＴＰの制御対象でない全てのポート（ただし、フレームの受信ポートを除く）に受信フレームを出力する。そして、当該ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部４２０は、ブロードキャスト送信を行う（ステップＳ５）。
【００６０】
（ＦＤＢのエージング）
ＳＴＰノード１００のＦＤＢ制御部４６０は、予め定められた時間間隔（以降、エージング時間と記述する）で、ＳＴＰノード１００のＦＤＢ４７０のエントリのうち、宛先ＭＡＣアドレスと出力ポートの関係が登録され、かつ、最近のエージング時間内にフレーム転送処理によって一度も参照されなかった全てのエントリを削除する。また、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０の全てのエントリに対して、エントリの参照の有無を示すフィールドをクリアする。上記の処理はエージング（ＦＤＢエージング）と呼ばれる。
【００６１】
エージングは、一度も参照されない不要なエントリを削除することにより、有限であるＦＤＢ４７０のエントリを有効に活用するための処理である。エージング時間は、３００秒程度に設定されることが多い。エージングによる削除対象となる全てのエントリを瞬時に消去する必要はなく、エージング時間内に完了すれば十分であるので、その処理負荷は小さい。ＦＤＢ４７０の各エントリがエージングによる削除対象のエントリであるか否かは、ＦＤＢエントリ管理テーブル４８０の内容により判定される。
【００６２】
なお、例示するＳＴＰノード１００においては、、ＦＤＢ４７０のエントリの参照の有無を示す情報を専用のテーブル（例えば、ＦＤＢエントリ管理テーブル４８０）が管理しているが、ＦＤＢ４７０の各エントリにその情報を格納するフィールドを設けることにより、宛先ＭＡＣアドレスと出力ポートとの関係と一元的に管理することも可能である。しかしながら、ＦＤＢ４７０のエントリの参照の有無を示す情報を専用のテーブルが管理する方法は、エージング処理においてＦＤＢ４７０を参照する処理が、フレーム転送処理においてＦＤＢ４７０を参照する処理を妨げた結果、フレーム転送処理が遅延してしまう問題を回避できるという利点がある。
【００６３】
（リンク切断時におけるＳＴＰの障害回復の動作）
次に、図９に示すＥｔｈｅｒｎｅｔネットワークにおいて、リンク２２０が切断された場合の障害回復動作を説明する。図１４は、リンクが切断された場合のＥｔｈｅｒｎｅｔネットワークシステムの例を示す説明図である。
【００６４】
図９に示すリンク２２０が切断されると、ＳＴＰにより、障害箇所を迂回する新たなスパニングツリーが再構成される。ここでは、ＳＴＰノード１００〜１２０に属するポートのうち、ＳＴＰの制御対象のポートであるポートＰ１及びＰ２のポート状態が、ＳＴＰにより、図１４に示すように変更された結果、図１４に示す太線のリンクで示すスパニングツリーが再構成されたものとする。新たなスパニングツリーが再構成されると、ＳＴＰノード１００〜１２０のＳＴＰ部５００は、ＳＴＰノード１００〜１２０のＦＤＢ４７０に登録されている宛先ＭＡＣアドレスと出力ポートの関係を全て消去するように、ＳＴＰノード１００〜１２０のＦＤＢ制御部４６０に依頼する。
【００６５】
ＳＴＰノード１００〜１２０のＦＤＢ制御部４６は、ＳＴＰノード１００〜１２０のＦＤＢ４７０の登録内容を消去するとともに、ＳＴＰ０ノード１００〜１２０のＦＤＢエントリ管理テーブル４８０の全てのエントリに対して、それらのエントリの参照の有無を示すフィールドをクリアする。
【００６６】
以上の処理が必要である理由は、新しいスパニングツリーが再構成されたとしても、ＦＤＢの内容を全て消去しなければ、もしくは、新しいスパニングツリーに合わせてＦＤＢの内容を更新しなければ、障害が発生したリンクにフレームが送信されてしまう可能性があるからである。
【００６７】
上記のＦＤＢの内容を全て消去する動作は、ＦＤＢフラッシュ（ＦＤＢの初期化）と呼ばれる。ＳＴＰノード１００〜１２０のＦＤＢ制御部４６０が、ＳＴＰノード１００〜１２０のＦＤＢ４７０をフラッシュした後は、前述の通信システムの運用開始直後のフレーム転送と全く同様にして、フレームの転送が行われるため、通信を継続することが可能である。
【００６８】
以上のようにして、ＳＴＰが適用されたＥｔｈｅｒｎｅｔネットワークでは、障害箇所を迂回するスパニングツリーを再構成するとともに、ＳＴＰノードのＦＤＢをフラッシュすることにより、通信を継続することが可能である。
【００６９】
しかしながら、上述した従来のネットワークノードにおいては、ＦＤＢのエントリ数が増大するに従って、ＦＤＢのフラッシュに必要な時間が増大するため、障害からの復帰が遅れるという問題がある。
【００７０】
図１５は、市販のＥｔｈｅｒｎｅｔノードを用いて実測した際の、ＦＤＢのエントリ数とＦＤＢのフラッシュに要する時間（フラッシュ時間）との関係の例を示すグラフである。図１５によれば、基幹系通信システムで必要と思われる１万個以上のエントリを全て消去するためには、１秒以上の時間を要することが分かる。
【００７１】
ＦＤＢは、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）により実装されることが多い。ＣＡＭは非常に高速の検索性能を有するものの、登録内容を削除するためにはエントリ単位で処理する必要がある。従って、ＦＤＢのフラッシュのように、多数のエントリの内容を一度に消去するような処理を行う場合に、多大な時間を要してしまう。
【００７２】
図１５に示すグラフにおいて、ＦＤＢのフラッシュ時間がＦＤＢのエントリ数に比例して増大していることから、測定に使用したＥｔｈｅｒｎｅｔノードのＦＤＢがＣＡＭにより構成されており、ＦＤＢのエントリを１エントリずつ順番に消去しているために、ＦＤＢフラッシュに多くの時間を要していると推測される。
【００７３】
以上のように、ＳＴＰが適用されたＥｔｈｅｒｎｅｔネットワークにおいて障害が発生した場合、新たなスパニングツリーが短時間で再構成されたとしても、ＦＤＢのフラッシュに多くの時間を要するために、ＳＯＮＥＴが提供するような５０ｍｓ以内という非常に短い障害回復時間を実現することは不可能である。また、ＦＤＢのフラッシュ処理においてＦＤＢを参照する処理が、フレーム転送処理においてＦＤＢを参照する処理を妨害した結果、フレーム転送において遅延が増大するという問題が生じる。
【００７４】
上記の問題を解決する方法として、特許文献１には、障害発生を検出した後、ＦＤＢフラッシュが必要と判断された場合に、ＦＤＢフラッシュを行っている間、全てのフレームをブロードキャスト転送する方法が開示されている。特許文献１に記載された方法に依れば、ＦＤＢフラッシュが完了するまでの間、ＦＤＢは参照されることなく、全てのフレームは全てのポートから送出されるため、通信を続行することが可能である。また、ＦＤＢフラッシュの実行時のフレーム転送処理はブロードキャスト転送処理のみであるため、上述の遅延の問題を本質的に解決することが可能である。
【００７５】
【特許文献１】特開２００６−１３５３８２号公報（段落０００９，００１２，００３５，００５８）
【非特許文献１】“ＳＴＰ（Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ）”、ＩＥＥＥ Ｓｔａｎｄａｒｄｓ  ８０２．１Ｄ、ＩＥＥＥ、１９９８年
【発明の開示】
【発明が解決しようとする課題】
【００７６】
しかしながら、特許文献１に開示されている方法によれば、障害検出時に通信を続行することが可能ではあるものの、全てのフレームをブロードキャスト転送することにより、ＦＤＢフラッシュが完了するまでの間、長時間に渡って、通信システムの通信帯域が非常に圧迫された結果、各所で輻輳が頻発するという問題が生じる。また、ＦＤＢフラッシュ実行時に、パケットを多重する通信システムの利点である統計多重効果を十分に活用することが不可能であるという問題も有している。
【００７７】
さらに、特許文献１には、特定のエントリ群（例えば、ある指定されたＶｉｒｔｕａｌ  ＬＡＮ（ＶＬＡＮ）に関する複数のエントリ）のみをＦＤＢから消去する場合の方法は開示されていない。従って、特定のＶＬＡＮに関わる障害であっても、ＦＤＢの全てのエントリを消去しなければならないため、ネットワークの通信帯域が圧迫される上に、統計多重による通信帯域の利用効率が低下するという問題がある。
【００７８】
そこで、本発明は、上述したような従来の技術が有する問題を鑑みてなされたものであって、異常事態から短時間で復帰可能な信頼性の高いネットワークノードおよびネットワークノード用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００７９】
本発明によるネットワークノードは、フレームの転送先を示すフレーム転送先情報を記憶するＦＤＢと、フレーム転送先情報の登録時刻を記憶するＦＤＢ登録時刻記憶部と、ＦＤＢに記憶されたフレーム転送先情報を所定の場合に消去するＦＤＢフラッシュの要求時刻を記憶する要求時刻記憶部と、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、受信したフレームをブロードキャスト送信する通信制御部とを備えたことを特徴とする。
【００８０】
参照したことがあるフレーム転送先情報であることを示す参照情報をフレーム転送先情報に対応させて参照情報記憶部に記憶させる参照情報制御部と、フレーム転送先情報を参照情報に基づいて消去するＦＤＢエージングを実行するＦＤＢエージング部を備え、参照情報制御部は、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、参照したフレーム転送先情報に対応する参照情報を消去することが望ましい。そのような構成によれば、エージング時の処理として、不要なフレーム転送先情報を消去することができる。
【００８１】
参照情報制御部は、ＦＤＢフラッシュの実行時に参照情報を消去してもよい。そのような構成によれば、ＦＤＢフラッシュの実行時に、フレーム転送先情報とともに対応する参照情報を消去することができる。
【００８２】
参照情報制御部は、ＦＤＢフラッシュの実行時に、登録時刻が要求時刻以前であるフレーム転送先情報に対応する参照情報を消去してもよい。そのような構成によれば、ＦＤＢフラッシュの実行時に、不要なフレーム転送先情報とともに対応する参照情報を消去することができる。
【００８３】
ＦＤＢエージング部は、ＦＤＢフラッシュの実行時にＦＤＢエージングを実行してもよい。そのような構成によれば、ＦＤＢフラッシュの実行時にＦＤＢエージングとしてフレーム転送先情報を消去することができる。
【００８４】
ＦＤＢから消去するフレーム転送先情報を特定するための消去条件を記憶するＦＤＢフラッシュ消去条件記憶部を備え、通信制御部は、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前であって、かつ参照したフレーム転送先情報が消去条件を満足する場合に、受信したフレームをブロードキャスト送信することが好ましい。そのような構成によれば、消去条件を満足する場合にのみブロードキャスト送信することができる。
【００８５】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームの転送先アドレスが所定の転送先アドレスであることを記憶してもよい。そのような構成によれば、消去条件としてフレームの転送先アドレスを指定することができる。
【００８６】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームのＶＬＡＮ識別子が所定のＶＬＡＮ識別子であることを記憶してもよい。そのような構成によれば、消去条件としてフレームのＶＬＡＮ識別子を指定することができる。
【００８７】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームの属するスパニングツリーが所定のスパニングツリーであることを記憶してもよい。そのような構成によれば、消去条件としてフレームの属するスパニングツリーを指定することができる。
【００８８】
ＦＤＢフラッシュ消去条件記憶部は、消去条件として、フレームの転送先情報が所定のフレーム転送先情報であることを記憶してもよい。そのような構成によれば、消去条件としてフレームの転送先情報を指定することができる。
【００８９】
要求時刻記憶部は、複数のフレーム転送先情報の要求時刻を記憶し、通信制御部は、最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が最後の要求時刻以前である場合に、受信したフレームをブロードキャスト送信することが望ましい。そのような構成によれば、ＦＤＢフラッシュを連続して行う場合にも、実際にフレーム転送先情報を消去せずに、通信領域の負荷を軽減することができる。
【００９０】
要求時刻記憶部は、複数のフレーム転送先情報の要求時刻を記憶し、ＦＤＢフラッシュ消去条件記憶部は、それぞれの要求時刻に対応付けて消去条件を記憶し、通信制御部は、最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻がいずれかの要求時刻以前であって、かつ参照したフレーム転送先情報が要求時刻に対応する消去条件を満足する場合に、受信したフレームをブロードキャスト送信することが望ましい。そのような構成によれば、ＦＤＢフラッシュを連続して行う場合にも、実際にフレーム転送先情報を消去せずに、通信領域の負荷をより軽減することができる。
【００９１】
通信制御部は、ＦＤＢフラッシュ消去条件記憶部が複数の要求時刻に対応づけて同一の消去条件を記憶し、登録時刻が先の要求時刻以前であることに基づいて受信したフレームをブロードキャスト送信している場合に、送信を中断することが望ましい。そのような構成によれば、通信領域の負荷をより軽減することができる。
【００９２】
ＦＤＢエージング部は、ＦＤＢフラッシュの要求時刻から所定の時間が経過した場合に、ＦＤＢエージングを実行してもよい。そのような構成によれば、所定の時間が経過するまでフレーム転送先情報を保持することができる。
【００９３】
ＦＤＢは、出力ポートもしくはノード識別子、または出力ポートもしくはノード識別子を仮想的に処理するための情報を含むフレーム転送先情報を記憶してもよい。そのような構成によれば、フレームを出力ポートもしくはノード識別子に基づいて転送することができる。
【００９４】
本発明によるネットワークノード用プログラムは、ネットワークノードが備えるコンピュータに、フレームの転送先を示すフレーム転送先情報の登録時刻をフレーム転送先情報に対応させてＦＤＢ登録時刻記憶部に記憶させる処理と、所定の場合にＦＤＢに記憶されたフレーム転送先情報を消去するＦＤＢフラッシュの要求時刻を要求時刻記憶部に記憶させる処理と、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、受信したフレームをブロードキャスト送信する処理とを実行させることを特徴とする。
【００９５】
ネットワークノードが備えるコンピュータに、参照したことがあるフレーム転送先情報であることを示す参照情報をフレーム転送先情報に対応させて参照情報記憶部に記憶させる処理と、参照情報に基づいてフレーム転送先情報を消去するＦＤＢエージングを実行する処理と、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前である場合に、参照したフレーム転送先情報に対応する参照情報を消去する処理とを実行させることが望ましい。そのような構成によれば、エージング時の処理として、不要なフレーム転送先情報を消去することができる。
【００９６】
ネットワークノードが備えるコンピュータに、要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が要求時刻以前であって、かつ参照したフレーム転送先情報が、ＦＤＢフラッシュ消去条件記憶部が記憶するＦＤＢから消去するフレーム転送先情報を特定するための消去条件を満足する場合に、受信したフレームをブロードキャスト送信する処理を実行させることが好ましい。そのような構成によれば、消去条件を満足する場合にのみブロードキャスト送信することができる。
【００９７】
ネットワークノードが備えるコンピュータに、要求時刻記憶部が記憶する複数のフレーム転送先情報の要求時刻のうち最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻が最後の要求時刻以前である場合に、受信したフレームをブロードキャスト送信する処理を実行させることが望ましい。そのような構成によれば、ＦＤＢフラッシュを連続して行う場合にも、実際にフレーム転送先情報を消去せずに、通信領域の負荷を軽減することができる。
【００９８】
ネットワークノードが備えるコンピュータに、要求時刻記憶部が記憶する複数のフレーム転送先情報の要求時刻のうち最初の要求時刻以降にフレームを受信し、受信したフレームに基づいて参照したフレーム転送先情報の登録時刻がいずれかの要求時刻以前であって、かつ参照したフレーム転送先情報が、ＦＤＢフラッシュ消去条件記憶部がそれぞれの要求時刻に対応付けて記憶する消去条件を満足する場合に、受信したフレームをブロードキャスト送信する処理を実行させることが望ましい。そのような構成によれば、ＦＤＢフラッシュを連続して行う場合にも、実際にフレーム転送先情報を消去せずに、通信領域の負荷をより軽減することができる。
【００９９】
本発明によるネットワークノードの好ましい一態様は、例えば、フレーム転送先情報を記憶するＦＤＢと、フレーム転送先情報の登録時刻を記憶するＦＤＢ登録時刻記憶部と、ＦＤＢフラッシュの実行時刻を記憶するＦＤＢフラッシュ実行時刻記憶部を備え、ＦＤＢフラッシュを実行した時刻以降のフレーム受信時に、ＦＤＢの検索によりフレームに対するフレーム転送先情報を取得した後、フレーム転送先情報の登録時刻がＦＤＢフラッシュ実行時刻以前である場合に、フレームをブロードキャスト送信することを特徴とする。
【発明の効果】
【０１００】
本発明のネットワークノードによれば、ＦＤＢの内容を消去せずとも、ＦＤＢフラッシュと同様の効果を実現することにより、障害から非常に短時間で復帰可能な信頼性の高い通信システムを構築することが可能となる。
【０１０１】
また、本発明のネットワークノードによれば、フレーム転送処理におけるＦＤＢの参照を妨害しないため、フレーム転送における遅延の増大と通信帯域の圧迫を回避することが可能である。
【０１０２】
また、本発明のネットワークノードによれば、ＦＤＢエントリのうち、削除対象のエントリに対してのみ、ＦＤＢフラッシュと同様の効果を実現することが可能であるため、ブロードキャスト転送の増大による通信帯域の圧迫を回避することが可能である。
【発明を実施するための最良の形態】
【０１０３】
実施の形態１．
以下、本発明の第１の実施の形態を図面を参照して説明する。
【０１０４】
（通信システムの構成）
以降では、図９及び図１４に示す通信システムのＳＴＰノード１００〜１２０に本発明を適用した場合について説明する。
【０１０５】
（ノードの構成）
図１は、本発明によるＳＴＰノードの構成例を示すブロック図である。図１には、図９及び図１４に示す通信システムにおいて、本発明が適用されたＳＴＰノード１００の構成例が示されている。なお、本発明が提要されたＳＴＰノード１１０及び１２０の構成もＳＴＰノード１００の構成と同一である。以降では、単にＳＴＰノードと記述した場合は、本発明が適用されたＳＴＰノードを表すものとする。図１に示すＳＴＰノード１００は、ＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０が追加されている点において、従来のＳＴＰノード１００の構成と異なる。
【０１０６】
ＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０は、ＳＴＰノード１００のＳＴＰ部５００がＦＤＢフラッシュを要求した時刻（以下、ＦＤＢフラッシュ要求時刻と記述する。）を管理するためのテーブルであって、ＳＴＰノード１００のＦＤＢ制御部４６０により管理される。図２は、本発明によるＳＴＰノードのＦＤＢフラッシュ管理テーブルの例を示す説明図である。図２に示すように、ＦＤＢフラッシュ管理テーブル４９０は、「ＦＤＢフラッシュ要求時刻」を含む情報である。図２によれば、ＳＴＰノード１００のＳＴＰ部５００が時刻ＴにＦＤＢフラッシュを要求したことが分かる。すなわち、ＦＤＢフラッシュ管理テーブル４９０に含まれる「ＦＤＢフラッシュ要求時刻」は、ＳＴＰノード１００のＳＴＰ部５００がＦＤＢフラッシュを要求した時刻を示す情報である。なお、ＳＴＰノード１００のＳＴＰ部５００がＦＤＢフラッシュを要求する処理を含めてＦＤＢフラッシュの実行とし、ＦＤＢフラッシュ要求時刻をＦＤＢフラッシュ実行時刻としてもよい。
【０１０７】
また、図１に示すＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０のテーブル構成は、図１０，１２に示す従来のＳＴＰノード１００のＦＤＢエントリ管理テーブルと異なる。図３は、本発明によるＳＴＰノードのＦＤＢエントリ管理テーブルの例を示す説明図である。図３に示すＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０の各エントリには、ＦＤＢ４７０の各エントリの参照の有無を管理するフィールドに加えて、ＦＤＢ４７０の各エントリに宛先ＭＡＣアドレスと出力ポートの関係を登録した時刻を管理するフィールドが追加されている。
【０１０８】
すなわち、図３に示すように、本発明によるＦＤＢエントリ管理テーブル４８０には、エントリの「参照の有無」と「登録時刻」とを含む情報が設定されている。なお、図３には、ＦＤＢエントリ管理テーブル４８０が、各エントリの順序を示す「エントリナンバ（エントリＮｏ．）」を含む場合が例示されている。ＦＤＢエントリ管理テーブル４８０に含まれるエントリナンバは、ＦＤＢ４７０に含まれる情報と同じ情報である。ＦＤＢエントリ管理テーブル４８０に含まれる「参照の有無」と「登録時刻」とは、例えば、「エントリナンバ」に対応づけて記憶される。
【０１０９】
ＳＴＰノード１００のＦＤＢ制御部４６０は、ＭＡＣアドレス学習時に、ＦＤＢエントリ管理テーブル４８０のエントリの参照の有無を示すフィールドをクリアするとともに、ＭＡＣアドレス学習を行った時刻を「登録時刻」に登録する。例えば、図３に示すＦＤＢエントリ管理テーブル４８０の第１のエントリは、ＦＤＢ４７０の第１のエントリの登録時刻がｔ１であることを意味している。
【０１１０】
なお、本発明では、「登録時刻」のフィールドにより、ＳＴＰノード１００のＦＤＢ４７０の各エントリの登録時刻を管理しているが、ＳＴＰノード１００のＦＤＢ４７０のエントリの登録時刻が、ＦＤＢフラッシュを実行した時刻の以前であるか、または、以降であるかを判定可能であれば、時刻以外のパラメータを管理しても良い。
【０１１１】
図１に示すＳＴＰノード１００においては、ＦＤＢ制御部４６０、ＦＤＢ４７０、ＦＤＢエントリ管理テーブル４８０およびＦＤＢフラッシュ管理テーブル４９０が、ＦＤＢに関する処理を行うＦＤＢ部４５０の構成要素として配置されているが、これに限られない。例えば、ＦＤＢ制御部４６０、ＦＤＢエントリ管理テーブル４８０およびＦＤＢフラッシュ管理テーブル４９０の機能をスイッチ部４２０に内蔵させ、ＦＤＢ制御部４６０とスイッチ部４２０間のオーバヘッドを最小化することにより、フレーム転送処理を高速化することが可能である。
【０１１２】
第１の実施の形態において、ＦＤＢ登録時刻記憶部は、ＦＤＢエントリ管理テーブル４８０によって実現される。実行時刻記憶部は、ＦＤＢフラッシュ管理テーブル４９０によって実現される。通信制御部は、ＦＤＢ制御部４６０およびスイッチ部４２０によって実現される。参照情報制御部およびＦＤＢエージング部は、ＦＤＢ制御部４６０によって実現される。
【０１１３】
（ＦＤＢフラッシュ実行時の動作）
以降では、リンク２２０の切断により、図１４に示すスパニングツリーが再構成された後、ＳＴＰノード１００がＦＤＢをフラッシュする動作を説明する。新たなスパニングツリーが再構成された後、ＳＴＰノード１００のＳＴＰ部５００は、ＳＴＰノード１００のＦＤＢ４７０をフラッシュするように、ＳＴＰノード１００のＦＤＢ制御部４６０に依頼する。
【０１１４】
本発明において、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＳＴＰ部５００がＦＤＢフラッシュを要求した時刻をＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０に登録する。
【０１１５】
また、ＳＴＰノード１００のＦＤＢ制御部４６０は、エージングを実行する、もしくは、ＳＴＰノード１００のＦＤＢ制御部４６０は、エージングを所定の時間毎に実行するためのタイマ（以下、エージングタイマと記述する）の値を初期値にリセットする。ＦＤＢフラッシュの実行時にエージングを実行することにより、不要なエントリを消去するまでに要する時間を短縮することができる。
【０１１６】
さらに、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０のエントリのうち、その登録時刻がＦＤＢフラッシュ要求時刻以前のエントリ全てに対して、エントリの参照の有無を示すフィールドをクリアする。登録時刻がＦＤＢフラッシュ要求時刻以前のエントリは、フレーム受信時に参照された場合でも、参照の有無を示すフィールドがクリアされるため、エージングにおいて不要な情報と判断され、消去される。なお、前者のエージングも後者の処理も高速に行う必要はない。
【０１１７】
本発明では、例えば、ＦＤＢフラッシュを実行する方法として、ＣＰＵからＦＤＢのエントリを１行１行消去する命令を発効するような処理を行わずに、エージングという予め備わっているＦＤＢエントリの消去処理を利用する。そのため、ＣＰＵの負荷が小さくてすむ。
【０１１８】
なお、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＦＤＢフラッシュ実行時に、エージングを実行せず、全てまたは所定のエントリを削除するとともに、ＦＤＢエントリ管理テーブル４８０のエントリの参照の有無を示すフィールドを削除してもよい。
【０１１９】
次に、ＳＴＰノード１００のスイッチ部４２０が、ＳＴＰノード１００のフレーム解析部４１０−１または２よりフレームを受信した後、ＳＴＰノード１００のＦＤＢ制御部４６０に、フレームの宛先アドレスに対する出力ポートの検索を依頼した場合の動作を説明する。
【０１２０】
ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢ４７０を検索することにより、フレームの宛先アドレスに対する出力情報を取得すると、その出力情報を登録した時刻をＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０より取得する。
【０１２１】
なお、出力情報とは、例えば、エントリナンバに対応付けてＦＤＢ４７０に記憶される情報であって、宛先ＭＡＣアドレスおよび出力ポートを含む情報である。また、例えば、ＦＤＢエントリ管理テーブル４８０には、出力情報を登録した時刻が、エントリナンバに対応付けられて「登録時刻」として記憶される。例えば、ＦＤＢ制御部４６０は、フレームの宛先ＭＡＣアドレスに基づいてＦＤＢ４７０を検索し、出力情報を選択する。次に、ＦＤＢ制御部４６０は、例えば、選択した出力情報のエントリナンバに基づいてＦＤＢエントリ管理テーブル４８０を検索し、登録時刻を選択する。
【０１２２】
フレームの宛先ＭＡＣアドレスに基づいて選択された出力情報の登録時刻が、ＦＤＢフラッシュ管理テーブル４９０に登録されているＦＤＢフラッシュ要求時刻以前である場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のスイッチ部４２０に出力情報が検索されなかった旨を通知する。従って、ＳＴＰノード１００のスイッチ部４２０は、フレームをブロードキャスト送信する。
【０１２３】
また、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０において、ＦＤＢ４７０の検索により取得した出力情報が登録されていたエントリの参照の有無を示すフィールドをクリアする。
【０１２４】
出力情報が取得され、かつ、出力情報の登録時刻がＦＤＢフラッシュ要求時刻以降である場合、または、出力情報が検索されなかった場合は、従来の技術で述べたフレーム転送方法と同様である。すなわち、ＦＤＢフラッシュ要求時刻以後に学習されたエントリは有効となる。
【０１２５】
図４は、本発明によるＳＴＰノード１００が、フレーム受信時に行うフレーム転送とＭＡＣアドレス学習の処理経過の例を示すフローチャートである。
【０１２６】
スイッチ部４２０が、入力ポート４００−１〜３およびフレーム解析部４０１−１，２を介してフレームを受信すると、ＦＤＢ制御部４６０は、ＦＤＢ４７０を検索して（ステップＳ１）、受信フレームの宛先ＭＡＣアドレスに対応する出力ポートを参照する（ステップＳ２）。
【０１２７】
ステップＳ２において、出力ポートの参照に成功した場合（Ｙｅｓ）、ＦＤＢ制御部４６０は、ＦＤＢエントリ管理テーブル４８０において、参照した出力ポートに対応するエントリの登録時刻を検索し、検索した登録時刻が、ＦＤＢフラッシュ管理テーブル４９０のＦＤＢフラッシュ要求時刻以降であるか否かを判断する（ステップＳ７）。
【０１２８】
ステップＳ７において、登録時刻がＦＤＢフラッシュ要求時刻以降である場合（Ｙｅｓ）、ＦＤＢ制御部４６０は、ＦＤＢエントリ管理テーブル４８０において、ステップＳ２において選択した出力ポートに対応するエントリの参照の有無を示すフィールドをセットする（ステップＳ３）。スイッチ部４２０は、受信したフレームを、ステップＳ２において選択した出力ポートに出力する。そして、当該出力ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部４２０は、ユニキャスト送信を行う（ステップＳ４）。
【０１２９】
また、ステップＳ７において、登録時刻がＦＤＢフラッシュ要求時刻以降でない場合（Ｎｏ）、ＦＤＢ制御部４６０は、ＦＤＢエントリ管理テーブル４８０において、例えば、エージング時刻を設定するとともに、ステップＳ２において選択した出力ポートに対応するエントリの参照の有無を示すフィールドをクリアする（ステップＳ６）。
【０１３０】
スイッチ部４２０は、ＳＴＰの制御対象であるポートのうちフォワーディング状態である全てのポート、及び、ＳＴＰの制御対象でない全てのポート（ただし、フレームの受信ポートを除く）に受信フレームを出力する。そして、当該ポートは、接続されたノードに受信フレームを送信する。すなわち、スイッチ部４２０は、ブロードキャスト送信を行う（ステップＳ５）。
【０１３１】
以上の動作によれば、ＦＤＢフラッシュ要求時刻以前にＳＴＰノード１００のＦＤＢ４７０に登録された出力情報は、実際にはフレーム転送処理に使用されないため、これらの出力情報に対応するフレームは全てブロードキャスト送信される。すなわち、本発明によれば、ＦＤＢフラッシュ要求時にＦＤＢの内容を実際には消去せずとも、ＦＤＢの内容が消去された場合と同等の効果を得ることができる。
【０１３２】
ＦＤＢフラッシュ要求時刻よりエージング時間が経過し、ＳＴＰノード１００のＦＤＢ制御部４６０がエージングを実行すると、ＦＤＢフラッシュ要求時刻以前に登録されたＦＤＢ４７０の内容は消去される。エージングによるＦＤＢの全てのエントリを消去するのに、最大でエージング時間と同等の時間を要するものと仮定すると、ＦＤＢフラッシュ要求時刻よりエージング時間の２倍以上の時間が経過すれば、ＦＤＢフラッシュ要求時刻以前にＦＤＢ４７０に登録されたエントリは全て消去されるため、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０に登録されているＦＤＢフラッシュ要求時刻を初期値（全ての時刻よりも早い時刻）にクリアした後、ＦＤＢフラッシュ要求以前のフレーム転送処理に戻っても良い。
【０１３３】
以上に説明したように、本実施の形態では、ＦＤＢフラッシュ要求時にＦＤＢの内容を実際に消去せずとも、ＦＤＢフラッシュ実行後と同等の効果を得ることができるため、障害から短時間で復旧することが可能である。また、ＦＤＢエントリの消去処理がフレームの出力ポートの検索処理を妨害することがないため、レイテンシの増大や検索ミスによるブロードキャスト送信の増大を回避することが可能である。
【０１３４】
実施の形態２．
次に、本発明の第２の実施の形態を説明する。本発明の第２の実施の形態によるＳＴＰノードは、ＦＤＢフラッシュの際に、所定の条件を満足するＦＤＢのエントリのみを消去する。ここで、所定の条件とは、例えば、宛先アドレスが所定のＭＡＣアドレスと一致するＦＤＢエントリ、または、出力ポートが所定のポートと一致するＦＤＢエントリなどの条件が考えられる。このような条件を課する理由は、ＦＤＢフラッシュによる消去の対象とするエントリを限定することにより、ブロードキャスト送信の増大による通信帯域の圧迫を低減する効果が得られる場合があるからである。
【０１３５】
また、他の条件として、複数のＶＬＡＮが適用された通信システムにおいて、ネットワークノードのＦＤＢが宛先アドレスと出力ポートに加えてＶＬＡＮ識別子を管理するような場合に、ＶＬＡＮ識別子が所定のＶＬＡＮ識別子と一致するＦＤＢエントリであるという条件なども考えられる。また、例えば、フレームの属するスパニングツリーが所定のスパニングツリーであることを条件としてもよく、フレーム登録先情報が所定のフレーム転送先情報であることを条件としてもよい。
【０１３６】
なお、第１の実施の形態は、本実施の形態において、ＦＤＢフラッシュによる消去の対象とするエントリの条件をＦＤＢの全てのエントリとした場合に相当する。
【０１３７】
（通信システムの構成）
以降では、第１の実施の形態と同様に、図９及び図１４に示す通信システムを例示して、本実施の形態におけるＦＤＢフラッシュの方法を説明する。
【０１３８】
（ノードの構成）
本実施の形態におけるＳＴＰノード１００の構成は、ＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０が、ＦＤＢフラッシュ要求時刻に加えて、ＦＤＢフラッシュに付随する消去条件を管理する点において、第１の実施の形態におけるＳＴＰノード１００の構成と異なる。
【０１３９】
図５は、第２の実施の形態のＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０の例を示す説明図である。図５に示すように、本実施の形態におけるＦＤＢフラッシュ管理テーブル４９０は、「ＦＤＢフラッシュ要求時刻」と、「消去条件」とを含む情報である。消去条件は、例えば、ＦＤＢフラッシュによる消去の対象とするエントリを特定するための条件である。例えば、図５に示すＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０には、ＦＤＢフラッシュ要求時刻Ｔ、及び、消去条件Ｃが登録されている。
【０１４０】
第２の実施の形態において、ＦＤＢフラッシュ消去条件記憶部は、ＦＤＢフラッシュ管理テーブル４９０によって実現される。
【０１４１】
（ＦＤＢフラッシュ実行時の動作）
以降では、第１の実施の形態と同様に、リンク２２０の切断により、図１４に示すスパニングツリーが再構成された後、ＳＴＰノード１００がＦＤＢをフラッシュする動作を説明する。
【０１４２】
新たなスパニングツリーが再構成された後、ＳＴＰノード１００のＳＴＰ部５００は、ＳＴＰノード１００のＦＤＢ４７０のエントリのうち、出力ポートがポートＰ２であるエントリを全て消去するように、ＳＴＰノード１００のＦＤＢ制御部４６０に依頼する。
【０１４３】
ＳＴＰノード１００のＦＤＢ４７０のエントリのうち、出力ポートが障害発生箇所であるリンク２２０に接続されているポートＰ２であるエントリのみを、ＦＤＢフラッシュによる消去の対象とすることにより、ブロードキャスト送信の増大による通信帯域の圧迫を低減する効果が期待できる。
【０１４４】
ＳＴＰノード１００のＦＤＢ制御部４６０は、ＦＤＢフラッシュ要求時刻と上記の消去条件をＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０に登録する。以降のＳＴＰノード１００のＦＤＢ制御部４６０の動作は、第１の実施の形態において説明した動作と基本的に同様であるため、相違点のみを以下に説明する。
【０１４５】
ＳＴＰノード１００のスイッチ部４２０が、ＳＴＰノード１００のフレーム解析部４１０−１または２よりフレームを受信した後、ＳＴＰノード１００のＦＤＢ制御部４６０に、フレームの宛先アドレスに対する出力ポートの検索を依頼した場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢ４７０を検索する。そして、ＳＴＰノード１００のＦＤＢ制御部４６０は、フレームの宛先アドレスに対する出力情報を取得すると、その出力情報を登録した時刻をＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０より取得する。
【０１４６】
フレームの宛先ＭＡＣアドレスに基づいて選択された出力情報の登録時刻が、ＦＤＢフラッシュ要求時刻以前であり、かつ、選択された出力情報が、消去条件として登録された所定の条件（すなわち、出力情報の出力ポートがポートＰ２であること）を満足する場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のスイッチ部４２０に出力情報が検索されなかった旨を通知する。従って、ＳＴＰノード１００のスイッチ部４２０は、フレームをブロードキャスト送信する。
【０１４７】
また、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０において、取得した出力情報が登録されていたエントリの参照の有無を示すフィールドをクリアする。
【０１４８】
ＦＤＢ４７０の検索により出力情報が取得された場合において、出力情報の登録時刻がＦＤＢフラッシュ要求時刻以降である場合、または、出力情報が所定の消去条件を満足しない場合は、従来の技術で述べたフレーム転送方法と同様に、フレームはユニキャスト送信される。また、出力情報が検索されなかった場合においては、従来の技術で述べたように、フレームはブロードキャスト送信される。
【０１４９】
第１の実施の形態と同様に、ＦＤＢフラッシュ要求時刻よりエージング時間の２倍の時刻が経過した場合、ＦＤＢフラッシュにより消去すべきＦＤＢエントリは全て消去されているため、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０において、ＦＤＢフラッシュ要求時刻を初期値にクリアしてもよい。また、消去条件を無効な情報（例えば、ＮＵＬＬ値）に設定した後、ＦＤＢフラッシュ要求時刻以前のフレーム転送処理を行っても良い。
【０１５０】
図６は、第２の実施の形態によるＳＴＰノード１００が、フレーム受信時に行うフレーム転送とＭＡＣアドレス学習の処理経過の例を示すフローチャートである。なお、図６におけるステップＳ１からステップＳ７の処理は、実施の形態１における処理と同様なため説明を省略する。
【０１５１】
ステップＳ７において、登録時刻がＦＤＢフラッシュ要求時刻以降でない場合（Ｎｏ）、ＦＤＢ制御部４６０は、選択された出力情報が、消去条件を満たすか否かを判断する（ステップＳ８）。出力情報が消去条件を満たす場合（Ｙｅｓ）、ステップＳ６に移行する。出力情報が消去条件を満たさない場合（Ｎｏ）、ステップＳ３に移行する。
【０１５２】
以上の動作によれば、所定の消去条件を満足するＦＤＢのエントリのみに対して、そのエントリの内容が消去された場合と同等の効果を得ることができる。
【０１５３】
実施の形態３．
次に、本発明の第３の実施の形態を説明する。本発明の第３の実施の形態によるＳＴＰノードは、ＦＤＢフラッシュを連続して実行する。
【０１５４】
以降では、第２の実施の形態において、ＳＴＰノード１００のＳＴＰ部５００が、ＳＴＰノード１００のＦＤＢ制御部４６０に、出力ポートがポートＰ２であるエントリを消去する（以降、消去条件Ｃ１と記述する）ように依頼した後（以降、そのＦＤＢフラッシュ要求時刻をＴ１と記述する）に、出力ポートがポートＰ１であるエントリを消去する（以降、消去条件Ｃ２と記述する）ように依頼する（以降、そのＦＤＢフラッシュ要求時刻をＴ２と記述する）場合の動作を説明する。
【０１５５】
ただし、２回目のＦＤＢフラッシュが要求された際に、１回目のＦＤＢフラッシュ要求時刻からエージング時間の２倍の時間が経過している場合は、１回目のＦＤＢフラッシュによるＦＤＢエントリの消去が既に完了しているため、互いのＦＤＢフラッシュを全く独立の処理として取り扱うことができる。従って、本実施の形態で説明する動作を行わなくても、第２の実施の形態で説明した動作を個別に実行すれば良い。
【０１５６】
以降では、１回目のＦＤＢフラッシュが要求されてからエージング時間の２倍の時間以内に、２回目のＦＤＢフラッシュが実行された場合の動作を説明する。なお、あるＦＤＢフラッシュの消去条件が、それより以前に実行したＦＤＢフラッシュの消去条件と同一である場合には、ＦＤＢフラッシュ要求時刻が早い方のＦＤＢフラッシュによる処理を中断し、ＦＤＢフラッシュ要求時刻が遅い方のＦＤＢフラッシュによる処理のみを実行することにより、ネットワークノードの負荷を軽減することができる。
【０１５７】
（通信システムの構成）
本実施の形態における通信システムの構成は第２の実施の形態と同様である。
【０１５８】
（ノードの構成）
本実施の形態におけるＳＴＰノード１００の構成は、ＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０が複数のＦＤＢフラッシュ要求時刻と消去条件を管理する点において、第２の実施の形態におけるＳＴＰノード１００の構成と異なる。
【０１５９】
図７は、第３の実施の形態のＳＴＰノード１００のＦＤＢフラッシュ管理テーブル４９０の例を示す説明図である。図７に示すＦＤＢフラッシュ管理テーブル４９０の第１番目のエントリは、１回目に実行されたＦＤＢフラッシュについて、ＦＤＢフラッシュ要求時刻がＴ１であり、また、消去条件がＣ１であることを示している。また、第２番目のエントリは、２回目に実行されたＦＤＢフラッシュについて、ＦＤＢフラッシュ要求時刻がＴ２であり、また、消去条件がＣ２であることを示している。
【０１６０】
（ＦＤＢフラッシュ実行時の動作）
ＳＴＰノード１００のＳＴＰ部５００からＦＤＢフラッシュを依頼された場合のＳＴＰノード１００のＦＤＢ制御部４６０の動作は、１回目のＦＤＢフラッシュの依頼においても、２回目のＦＤＢフラッシュの依頼においても、第１及び第２の実施の形態と同様である。すなわち、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＦＤＢのエージングを実行するか、もしくは、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０の全てのエントリに対して、ＦＤＢエントリの参照の有無を示すフィールドをクリアするとともに、エージングタイマを初期値にクリアする。
【０１６１】
次に、ＦＤＢフラッシュ要求時刻Ｔ１以降に、ＳＴＰノード１００のＦＤＢ制御部４６０が、ＳＴＰノード１００のスイッチ部４２０から、受信フレームの宛先アドレスに対する出力ポートの検索を依頼された場合の動作を説明する。
【０１６２】
ＳＴＰノード１００のＦＤＢ制御部４６０は、第１及び第２の実施の形態と同様に、ＳＴＰノード１００のＦＤＢ４７０において、宛先アドレスに対して登録されている出力情報を検索する。出力情報がＦＤＢ４７０の検索により取得されなかった場合のＳＴＰノード１００のＦＤＢ制御部４６０の動作は、第１及び第２の実施の形態と同様である。
【０１６３】
出力情報が取得された場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０から、ＳＴＰノード１００のＦＤＢ４７０において、その出力情報が管理されているエントリの登録時刻（以下、登録時刻ｔと記述する）を取得する。
【０１６４】
ＳＴＰノード１００のＦＤＢ制御部４６０は、それぞれのＦＤＢフラッシュの要求に対して、ＦＤＢエントリの登録時刻ｔがそのＦＤＢフラッシュ要求時刻以前であって、かつ、そのＦＤＢフラッシュの消去条件を満足する場合には、ＳＴＰノード１００のスイッチ部４２０に、出力情報が検索されなかった旨を通知する。
【０１６５】
すなわち、ＳＴＰノード１００のスイッチ部４２０からの検索を要求された時刻が、ＦＤＢフラッシュ要求時刻Ｔ１以降からＦＤＢフラッシュ要求時刻Ｔ２以前である場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、登録時刻ｔがＦＤＢフラッシュ要求時刻Ｔ１以前であって、かつ、出力情報が消去条件１を満足する場合に、ＳＴＰノード１００のスイッチ部４２０に、出力情報が検索されなかった旨を通知する。
【０１６６】
また、ＳＴＰノード１００のスイッチ部４２０からの検索を要求された時刻がＦＤＢフラッシュ要求時刻Ｔ２以降である場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、登録時刻ｔがＦＤＢフラッシュ要求時刻Ｔ１以前であり、かつ、出力情報が消去条件１を満足する場合、及び、登録時刻ｔがＦＤＢフラッシュ要求時刻Ｔ２以前であり、かつ、出力情報が消去条件２を満足する場合に、ＳＴＰノード１００のスイッチ部４２０に出力情報が検索されなかった旨を通知する。
【０１６７】
上述の条件以外の場合には、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＳＴＰノード１００のスイッチ部４２０に、ＦＤＢ４７０より取得した出力情報を通知する。
【０１６８】
図８は、第３の実施の形態のＳＴＰノード１００が、フレーム受信時に行うフレーム転送とＭＡＣアドレス学習の処理経過の例を示すフローチャートである。なお、図８におけるステップＳ１からステップＳ６の処理は、実施の形態１における処理と同様なため説明を省略する。
【０１６９】
ＦＤＢ制御部４６０は、ＦＤＢ４７０を検索して（ステップＳ１）、受信フレームの宛先ＭＡＣアドレスに対応する出力ポートを選択する（ステップＳ２）。ここで、ＦＤＢ制御部４６０がＦＤＢ４７０の検索を要求された時刻が、ＦＤＢフラッシュ要求時刻Ｔ２以降である場合を例にして説明する。
【０１７０】
ステップＳ２において、出力ポートの選択に成功した場合（Ｙｅｓ）、ＦＤＢ制御部４６０は、選択した出力ポートに対応するエントリの登録時刻ｔをＦＤＢエントリ管理テーブル４８０から選択し、選択した登録時刻ｔが、ＦＤＢフラッシュ管理テーブル４９０のＦＤＢフラッシュ要求時刻Ｔ２以降であるか否かを判断する（ステップＳ９）。
【０１７１】
ステップＳ９において、登録時刻ｔがＦＤＢフラッシュ要求時刻Ｔ２以降でない場合（Ｎｏ）、ＦＤＢ制御部４６０は、選択された出力情報が、消去条件Ｃ２を満たすか否かを判断する（ステップＳ１０）。登録時刻ｔがＦＤＢフラッシュ要求時刻Ｔ２以降である場合（Ｙｅｓ）、ステップＳ３に移行する。
【０１７２】
ステップＳ１０において、出力情報が消去条件Ｃ２を満たす場合（Ｙｅｓ）、ステップＳ６に移行する。出力情報が消去条件Ｃ２を満たさない場合（Ｎｏ）、ＦＤＢ制御部４６０は、選択した登録時刻ｔが、ＦＤＢフラッシュ管理テーブル４９０のＦＤＢフラッシュ要求時刻Ｔ１以降であるか否かを判断する（ステップＳ１１）。
【０１７３】
ステップＳ１１において、登録時刻ｔがＦＤＢフラッシュ要求時刻Ｔ１以降である場合（Ｙｅｓ）、ステップＳ３に移行する。登録時刻ｔがＦＤＢフラッシュ要求時刻Ｔ１以降でない場合（Ｎｏ）、ＦＤＢ制御部４６０は、選択された出力情報が、消去条件Ｃ１を満たすか否かを判断する（ステップＳ１２）。
【０１７４】
ステップＳ１２において、出力情報が消去条件を満たす場合（Ｙｅｓ）、ステップＳ６に移行し、満たさない場合（Ｎｏ）、ステップＳ３に移行する。
【０１７５】
以上のように、本実施の形態によれば、ＦＤＢフラッシュを連続して実行することが可能となる。なお、以上では、ＦＤＢフラッシュを２回連続して実行した場合の動作について説明したが、同様にして、３回以上のＦＤＢフラッシュを連続して実行することができる。
【０１７６】
ところで、ＦＤＢフラッシュ要求時刻Ｔ１とＦＤＢフラッシュ要求時刻Ｔ２の時間間隔が小さい場合、第１の実施の形態で述べたように、ＳＴＰノード１００のＦＤＢ制御部４６０が、ＦＤＢフラッシュの要求時にエージングを実行すると、ＦＤＢのエントリの多くが消去されてしまうために、ＦＤＢエントリの消去条件を設定することにより、ブロードキャスト送信の増大による通信帯域の圧迫を抑制する効果が得られなくなる恐れがある。
【０１７７】
また、ＦＤＢフラッシュの要求時に、エージングを実行せずに、エージングタイマを初期値にクリアした上で、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０の全てのエントリに対して、その参照の有無を示すフィールドをクリアする処理を行った場合は、一連のＦＤＢフラッシュの要求のうち、最後のＦＤＢフラッシュ要求からエージング時間が経過した時刻に、エージングが実行されるため、ＦＤＢのエントリが実際に消去される時刻が大幅に遅れてしまうという問題が生じる。以降では、上述の問題を解決する方法を説明する。
【０１７８】
ＳＴＰノード１００のＦＤＢ制御部４６０は、ＦＤＢフラッシュの要求時にエージングを実行せずに、ＳＴＰノード１００のＦＤＢエントリ管理テーブル４８０において、ＦＤＢフラッシュ要求時刻以前に登録されたＦＤＢのエントリに対して、そのエントリの参照の有無を示すフィールドをクリアする処理のみを実行するとともに、以下に説明する動作を行う。
【０１７９】
ＳＴＰノード１００のＦＤＢ制御部４６０は、ＦＤＢフラッシュ要求時に、そのＦＤＢフラッシュに対応するエージングタイマを起動する。以降では、ＦＤＢフラッシュ要求時刻Ｔ１に起動するエージングタイマをエージングタイマＡＴ１とし、また、ＦＤＢフラッシュ要求時刻Ｔ２に起動するエージングタイマをエージングタイマＡＴ２とする。本実施の形態においては、エージングタイマＡＴ１及びＡＴ２の起動時にタイマに設定する値は、通常動作しているエージングタイマ（以下、エージングタイマＡＴ０と記述する）の初期値と同一とする。
【０１８０】
エージングタイマＡＴ１及びＡＴ２の初期値をエージングタイマＡＴ０の初期値よりも小さく設定することにより、実際にＦＤＢのエントリが消去される時刻を早めることもできるが、ＦＤＢフラッシュによりＦＤＢのエントリが実際に消去される時刻を明確にするためには、ＦＤＢの全てのエントリを消去するのに要する時間よりも大きな値を設定しておくことが望ましい。
【０１８１】
エージングタイマＡＴ１がタイムアウトした場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＦＤＢエントリの登録時間がＦＤＢフラッシュ要求時刻Ｔ１以前のエントリに対して、エージングを実行した後、エージングタイマＡＴ１を終了させるとともに、エージングタイマＡＴ０を初期値にクリアする。同様に、エージングタイマＡＴ２がタイムアウトした場合、ＳＴＰノード１００のＦＤＢ制御部４６０は、ＦＤＢエントリの登録時間がＦＤＢフラッシュ要求時刻Ｔ２以前のエントリに対してエージングを実行した後、エージングタイマＡＴ２を終了させるとともに、エージングタイマＡＴ０を初期値にクリアする。以上により、上述の問題を解決することができる。
【０１８２】
本発明によれば、ＦＤＢのエントリ毎に登録時刻を管理することにより、再学習されたエントリのフレームをユニキャストすることが可能であるため、ブロードキャストによって帯域が圧迫される時間を短縮できるとともに、障害が連続して発生した場合にも対処可能である。
【０１８３】
上述の各実施の形態においては、ＳＴＰノードがＦＤＢ制御部４６０などの各処理部を備える構成として説明したが、ＳＴＰノードがコンピュータと記憶装置とを予め備えた上で、そのコンピュータが記憶装置に記憶されたネットワークノード用プログラムに従って動作することにより、各処理部と同様の動作を実現する構成であっても良い。
【０１８４】
また、ＦＤＢフラッシュ管理テーブル４９０が、ＦＤＢフラッシュ要求時刻として、ＳＴＰ部５００がＦＤＢフラッシュを要求した時刻を記憶する場合を例示したが、例えば、ＦＤＢ制御部４６０がＦＤＢフラッシュの実行を開始した時刻を記憶してもよい。
【産業上の利用可能性】
【０１８５】
本発明は、ＦＤＢの設定に基づいてフレームを転送するネットワークノードに効果的に適用できる。
【図面の簡単な説明】
【０１８６】
【図１】本発明によるＳＴＰノードの構成例を示すブロック図である。
【図２】本発明によるＳＴＰノードのＦＤＢフラッシュ管理テーブルの例を示す説明図である。
【図３】本発明によるＳＴＰノードのＦＤＢエントリ管理テーブルの例を示す説明図である。
【図４】本発明によるＳＴＰノードにおけるフレーム転送処理の処理経過の例を示すフローチャートである。
【図５】第２の実施の形態のＳＴＰノードのＦＤＢフラッシュ管理テーブルの例を示す説明図である。
【図６】第２の実施の形態のＳＴＰノードにおけるフレーム転送処理の処理経過の例を示すフローチャートである。
【図７】第３の実施の形態のＳＴＰノードのＦＤＢフラッシュ管理テーブルの例を示す説明図である。
【図８】第３の実施の形態のＳＴＰノードにおけるフレーム転送処理の処理経過の例を示すフローチャートである。
【図９】３台のＳＴＰノード、及び、３台のＥｔｈｅｒｎｅｔノードを備えたＥｔｈｅｒｎｅｔネットワークシステムの例を示す説明図である。
【図１０】一般的なＳＴＰノードの構成例を示すブロック図である。
【図１１】一般的なＳＴＰノードのＦＤＢの例を示す説明図である。
【図１２】一般的なＳＴＰノードのＦＤＢエントリ管理テーブルの例を示す説明図である。
【図１３】一般的なＳＴＰノードにおけるフレーム転送処理の処理経過の例を示すフローチャートである。
【図１４】リンクが切断された場合のＥｔｈｅｒｎｅｔネットワークシステムの例を示す説明図である。
【図１５】ＦＤＢのエントリ数とＦＤＢのフラッシュ時間の関係の例を示すグラフである。
【符号の説明】
【０１８７】
１００，１１０，１２０  ＳＴＰノード
２００，２１０，２２０  リンク
３００，３１０，３２０  Ｅｔｈｅｒｎｅｔノード
４００−１〜３          入力ポート
４１０−１〜２          フレーム解析部
４２０                  スイッチ部
４３０−１〜２          フレーム多重部
４４０−１〜３          出力ポート
４５０                  ＦＤＢ部
４６０                  ＦＤＢ制御部
４７０                  ＦＤＢ
４８０                  ＦＤＢエントリ管理テーブル
４９０                  ＦＤＢフラッシュ管理テーブル
５００                  ＳＴＰ部
５１０                  ポート状態テーブル
【図１】
2008148176.tif 000003
【図２】
2008148176.tif 000004
【図３】
2008148176.tif 000005
【図４】
2008148176.tif 000006
【図５】
2008148176.tif 000007
【図６】
2008148176.tif 000008
【図７】
2008148176.tif 000009
【図８】
2008148176.tif 000010
【図９】
2008148176.tif 000011
【図１０】
2008148176.tif 000012
【図１１】
2008148176.tif 000013
【図１２】
2008148176.tif 000014
【図１３】
2008148176.tif 000015
【図１４】
2008148176.tif 000016
【図１５】
2008148176.tif 000017