(57)【特許請求の範囲】
【請求項１】
ネットワーク装置上でループ・フリー・トポロジ発見プロトコルを実行する方法であって、ネットワーク装置は第１のポートと第２のポートを備え、第１のポートと第２のポートはトランクの一部であり、
ループ・フリー・トポロジ発見プロトコルに参加するため第１のポートまたは第２のポートを選択するステップと、
選択されたポートに対してループ・フリー・トポロジ発見プロトコルを実行するステップと、
選択されたポートをブロックするようループ・フリー・トポロジ発見プロトコルが指示した場合に、第１ポートと第２のポートの両方をブロックするステップと
を含む方法。
【請求項２】
ループ・フリー・トポロジ発見プロトコルがスパンニング・ツリー・プロトコルを含む請求項１に記載の方法。
【請求項３】
ネットワーク装置上でスパンニング・ツリー・プロトコルを実行する方法であって、ネットワーク装置は第１のポートと第２のポートを備え、第１のポートと第２のポートはトランクを形成し、
スパンニング・ツリー・プロトコルに参加するため第１のポートを選択するステップと、
第１のポートに対してスパンニング・ツリー・プロトコルを実行するステップと、
第２のポートがスパンニング・ツリー・プロトコルに参加するのを禁止するステップと、
第１のポートをブロックするようスパンニング・ツリー・プロトコルで指示した場合に、第１ポートと第２のポートの両方をブロックするステップと
を含む方法。
【請求項４】
ループ・フリー・トポロジ発見プロトコルに応答して状態間を遷移する方法であって、
ネットワーク装置の複数のポートのそれぞれと関連付ける１組の状態を用意し、この１組の状態が、学習と中継が両方とも禁止される「ブロックされた」状態、学習は許可されるが中継は禁止されたままである「学習のみ」状態、および学習と中継が両方とも許可される「ブロックされない」状態を含むステップと、
複数のポートのうち第１のポートのブロックを解除するようにとの指示をループ・フリー・トポロジ発見プロトコルから受信するステップと、
予め定められている時間の間第１のポートに関連する状態を「学習のみ」状態に設定するステップと、
予め定められている時間の経過後、第１のポートに関連する状態を「ブロックされない」状態に設定するステップとを含む方法。
【請求項５】
ループ・フリー・トポロジ発見プロトコルがＩＥＥＥ８０２．１ｄスパンニング・ツリー・プロトコルなどを含む請求項４に記載の方法。
【請求項６】
ブロックされているポートを構成メッセージを受信するように構成する方法であって、
格納されているアドレスと一致しないアドレスをフィルタ処理するため複数のポートのそれぞれに入力インタフェース・アドレス・レジスタを提供するステップと、
複数のポートのうち第１のポートに対してループ・フリー・トポロジ発見プロトコルを実行するステップと、
第１のポートをブロックするようにとの指示をループ・フリー・トポロジ発見プロトコルが出した場合に、構成メッセージと関連付けられているマルチキャスト・アドレスを第１のポートの入力インタフェース・アドレス・レジスタに書き込み、その後第１のポートが他のすべてのパケットをフィルタ処理しながら構成メッセージを受け付けるステップと
を含む方法。
【請求項７】
構成メッセージがブリッジ・プロトコル日付単位（ＢＰＤＵ）を含む請求項６に記載の方法。
【請求項８】
入力インタフェース・アドレス・レジスタがメディア・アクセス制御（ＭＡＣ）アドレス・レジスタを含む請求項６に記載の方法。
【請求項９】
ループ・フリー・トポロジ発見プロトコルがスパンニング・ツリー・プロトコルを含む請求項６に記載の方法。
【請求項１０】
ブロックされたポートを介してネットワーク上へ構成メッセージを中継する方法であって、
中央処理装置（ＣＰＵ）が構成メッセージおよび対応する１組の制御情報を生成し、この対応する１組の制御情報がパケット・ヘッダ一致を避けるよう指示し、構成メッセージを指定出力ポートに中継することを指示する直行モード・フラグを含むステップと、
ＣＰＵが送信のため構成メッセージおよび対応する１組の制御情報をネットワーク装置に中継するステップと、
直行モード・フラグに基づき、ＣＰＵインタフェースが構成メッセージをループ・フリー・トポロジ発見プロトコルによってすでにブロックされている指定出力ポートに中継するステップと、
指定出力ポートがネットワーク上に構成メッセージを送信するステップと
を含む方法。
【請求項１１】
構成メッセージがブリッジ・プロトコル日付単位（ＢＰＤＵ）を含む請求項９に記載の方法。
【請求項１２】
入力インタフェース・アドレス・レジスタがメディア・アクセス制御（ＭＡＣ）アドレス・レジスタを含む請求項９に記載の方法。
【請求項１３】
ループ・フリー・トポロジ発見プロトコルがスパンニング・ツリー・プロトコルを含む請求項９に記載の方法。
【発明の詳細な説明】
発明の分野
本発明は、一般にコンピュータ・ネットワーキング装置の分野に関する。詳細には、本発明は、ＩＥＥＥ８０２．１ｄ準拠のネットワーク装置構築ブロックのスパンニング・ツリー・サポートの改善に関する。
発明の背景
電気電子技術者協会（ＩＥＥＥ）は１９９０年５月３１日に承認された「Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ（ＭＡＣ）Ｂｒｉｄｇｅｓ」という名称のネットワーク通信規格８０２．１ｄ（以下「ＩＥＥＥ８０２．１ｄ」と呼ぶ）を策定した。簡単にいうと、ＩＥＥＥ８０２．１ｄは、スパンニング・ツリー（連結木）・プロトコル、フィルタ処理データベースの構築と保守、フレームのリレーとフィルタ処理、およびブリッジ・プロトコル日付単位（ＢＰＤＵ：Bridge Protocol Data Unit）の送信を含む準拠ブリッジによって実行される機能について記述したものである。ＢＰＤＵは、スパンニング・ツリーの決定を簡単に行えるように、ブリッジ同士で送信し合う特殊なメッセージである。スパンニングツリー・プロトコルの主要な機能は、ブリッジで結ばれたネットワークにループが発生するのを防止することである。そのために、スパンニング・ツリー・プロトコルは、隣接する装置とのネゴシエーションに基づきネットワーク装置上のいくつかのポートを使用可能にしたり、使用禁止にしたりする操作を行う。
本発明の譲受人により、従来技術では学習ブリッジにいくつかの制限のあることが観察されている。たとえば、ポートがブロックされた状態からブロックされない状態に遷移すると、接続しているサブネットにおいてそれらのサブネットに属するノードに宛てたパケットが氾濫するおそれがある。このような氾濫があると学習ブリッジの動作の効率が低下する。さらに、従来技術の学習ブリッジで採用しているスパンニング・ツリー・プロトコルに対し従来のポート・レベルの方法を用いるという考えはトランキング（trunking）の概念と相容れない。
一般に、トランキングはネットワーク内の２地点（たとえば、２つのネットワーク装置間）間で帯域幅を寄せ集める手段（bandwidth aggregation）と考えることができる。たとえば、２つの装置を結合する複数の物理ネットワーク・リンクを組み合わせることで、第１の装置と第２の装置の間に「トランク」と呼ばれる１つの論理チャネルを構成することができる。スパンニング・ツリー・プロトコルに関する限り、トランクはループである。したがって、従来のポート・レベルの手法では、Ｎポート・トランクの少なくともＮ−１個のポートはブロックされ、感知されたループが排除される。
前記に基づき、より高度なスパンニング・ツリー処理を行うネットワーク装置を提供することが望ましい。特に、ポート・レベルではなくトランク・レベルでスパンニング・ツリー・プロトコルを実行し、トランクのすべてのポートがスパンニング・ツリー・プロトコルに関して同様の方法で処理されるようにすることが望ましい。さらに、１つまたは複数の中間状態を用意し、ポートがブロックされた状態からブロックされない状態に遷移して氾濫を減らすようにすることも望ましい。さらに、ＢＰＤＵ受信および送信の方法を改善すると都合がよい。
発明の概要
スパンニング・ツリー・サポートを行う方法および装置について説明する。本発明の一態様によれば、ネットワーク装置は、トランクの一部である２つ以上のポートを備える。２つ以上のポートのうちの１つをループ・フリー・トポロジ・プロトコルに関与するものとして選択する。次に、選択されたポートに対してループ・フリー・トポロジ発見プロトコルを実行する。ループ・フリー・トポロジ発見プロトコルが選択されたポートをブロックするよう指示した場合、トランクのすべてのポートがブロックされる。
本発明の他の態様によれば、ネットワーク装置の各ポートとの関連付けされた１組の状態の集合が用意されている。この１組の状態には、学習と中継が両方とも禁止された「ブロックされた」状態、学習が許可され、中継が禁止されたままの「学習のみ」状態、および学習と中継の両方が許可されている「ブロックされない」状態が含まれる。ネットワーク装置のポートをブロック解除するようにとのループ・フリー・トポロジ発見プロトコルからの指示に応答して、第１のポートと関連付けられている状態は所定の時間の間「学習のみ」状態に設定される。次に、所定の時間の経過後、第１のポートと関連付けられている状態が「ブロックされない」状態に設定される。本発明のこの態様によりポートは、トラヒックの通常の中継／ブリッジ動作に能動的に参加する前に学習を開始することができる。一時的な期間の間にブロックされない状態に遷移する前に学習のみ状態に遷移すると氾濫を減らすことができると有利である。
本発明の他の態様によれば、ブロックされているポートは、ネットワーク装置の各ポートに入力インタフェース・アドレス・レジスタを設けることにより構成メッセージを受信するように構成される。アドレスと一致しないアドレスをフィルタ処理するための入力アドレス・レジスタがそこに含まれる。そのネットワークのポートに対しループ・フリー・トポロジ発見プロトコルを実行する。ループ・フリー・トポロジ発見プロトコルがポートをブロックするよう指示している場合、構成メッセージと関連付けられているマルチキャスト・アドレスがポートの入力インタフェース・アドレス・レジスタに書き込まれる。このようにして、第１のポートはその後、他のすべてのパケットのフィルタ処理中に構成メッセージを受け付ける。
本発明の他の態様によれば、構成メッセージはネットワーク装置のブロックされているポートを介して中継することができる。中央処理装置（ＣＰＵ）は、構成メッセージおよび対応する１組の制御情報を生成する。制御情報には、パケット・ヘッダの一致を避けるかどうかを示す直行モード（directed mode）・フラグが含まれる。制御情報には、構成メッセージの転送先である出力ポートに関する情報も含まれる。指定された出力ポートは、ループ・フリー・トポロジ発見プロトコルによってすでにブロックされているポートである。構成メッセージを生成した後、ＣＰＵはその構成メッセージおよび対応する１組の制御情報を送信のためネットワーク装置に中継する。直行モード・フラグに基づいて、ＣＰＵインタフェースは構成メッセージを指定された出力ポートに中継する。
【図面の簡単な説明】
本発明は、添付図面の図に限定的ではなく、例示的に図示する。図中、同様の要素は同じ参照番号で示す。
第１図は、トランクを介して通信状態に結合された２つの装置の図である。
第２図は、本発明の教示を組み込んだネットワーク要素の例の簡単なブロック図である。
第３図は、図２のスイッチで使用できるスイッチ要素の例の簡単なブロック図である。
第４図は、本発明の一実施形態によるスパンニング・ツリー・フィルタ処理回路とスパンニング・ツリー学習回路の相互作用を示すブロック図である。
第５図は、本発明の一実施形態によるスパンニング・ツリー処理を示す流れ図である。
第６図は、本発明の一実施形態によるメディア・アクセス制御（ＭＡＣ）アドレス・レジスタ構成を示す流れ図である。
第７図は、本発明の一実施形態によるＣＰＵ発信パケットの送信を示す流れ図である。
第８図は、本発明の一実施形態によるブロックされた状態からブロックされない状態にポートが遷移する状況を示す流れ図である。
詳細な説明
ネットワーク装置においてスパンニング・ツリー・サポートを提供する方法と装置について述べる。以下の説明では、説明のため多数の具体的詳細を述べ、本発明が完全に理解できるようにする。ただし、本発明はこうした具体的詳細がなくても実施できることは当業者には明白なことであろう。他の例では、よく知られている構造と装置をブロック図の形式で示す。
本発明は様々なステップを含み、これらについて以下に説明する。これらのステップは、命令でプログラムされた汎用または専用プロセッサにステップを実行させるために使用できる機械可読命令で実施することができる。それとは別に、本発明のステップはそれらのステップを実行するハード配線されたロジックを含む特定のハードウェア部品を使用することにより、あるいはプログラムされたコンピュータ部品およびカスタム・ハードウェア部品を組み合わせることで実行することも可能である。
本発明の方法によりＩＥＥＥ８０２．１ｄスパンニング・ツリー・プロトコルのスパンニング・ツリー・サポートを改善できるが、プロセスはＩＥＥＥ８０２．１ｄスパンニング・ツリー・プロトコルのみならず、ネットワーク・トポロジ・ループを排除し、かつ／または防ぐことを求めるどんなループ・フリー・トポロジ発見プロトコルにも適用可能であることは容易に明らかである。
トランキングの概要
上述のように、トランキングは一般に、ネットワーク内の２地点間で帯域幅を寄せ集める手段と考えることができる。
第１図では、第１の装置１０５と第２の装置１１０が複数の物理ネットワーク・リンク１１５〜１１７により接続されている。第１の装置１０５と第２の装置１１０は、サーバ、クライアント、リピータ、ブリッジ、ルータ、ブルータ、スイッチなどのネットワーク装置でよい。第１の装置１０５はポート１０６〜１０９を備えており、第２の装置１１０はポート１１１〜１１４を備えている。装置は、これらのポートを介して、イーサネット・プロトコルなどの適切なネットワーク・プロトコルを実装することにより、接続しているネットワーク・リンクにアクセスできる。この例では、物理ネットワーク・リンク１１５〜１１７を組み合わせて、第１の装置１０５と第２の装置１１０の間に「トランク」１４０と呼ばれる１つの論理チャネルを構成している。
トランクは定義からネットワーク内の所与の２つのノードの間に複数の物理的経路を構成するので、これは、スパンニング・ツリー・プロトコルからはループと見なされる。したがって、スパンニング・ツリー・プロトコルにより、トランク１４０の３つのリンクのうち少なくとも２つが使用禁止にされる。
ネットワーク要素の例
本発明の教示に従って動作するネットワーク要素の一実施形態の概要を第２図に示す。ネットワーク要素を使用して、様々な方法により、いくつかのノードと終端局とを相互接続する。特に、多層分散ネットワーク要素（ＭＬＤＮＥ）のアプリケーションでは、イーサネットとも呼ばれる、ＩＥＥＥ８０２．３規格などの同質なデータ・リンク層を介して定義済み経路指定プロトコルによりパケットの経路を指定する。他の経路指定プロトコルも使用可能である。
ＭＬＤＮＥの分散アーキテクチャは、いくつかの既知の、あるいは将来の経路指定アルゴリズムによりメッセージ・トラヒックの経路を指定するように構成することができる。好ましい実施形態では、ＭＬＤＮＥは、イーサネットＬＡＮ規格とメディア・アクセス制御（ＭＡＣ）データ・リンク層によりインターネット・プロトコル群、さらに詳しく述べると、伝送制御プロトコル（ＴＣＰ）およびインターネット・プロトコル（ＩＰ）を使用してメッセージ・トラヒックを処理するように構成されている。ＴＣＰは、ここでは、Ｌａｙｅｒ４プロトコルとも呼ばれ、ＩＰはしばしばＬａｙｅｒ３プロトコルとも呼ばれる。
ＭＬＤＮＥの一実施形態において、ネットワーク要素は、分散方式でパケット経路指定機能を実装するように構成されている、つまり機能の異なる部分はＭＬＤＮＥ内の異なるサブシステムで実行されるが、機能の最終結果は外部ノードと終端局にとって透過なままであるということである。以下の考察および第２図のブロック図から明らかなように、ＭＬＤＮＥは拡張可能なアーキテクチャを有し、設計者はサブシステムを追加することにより外部接続の数を予測可能に増やすことができ、したがってＭＬＤＮＥをスタンドアロンのルータとして定義する際の自由度が大幅に高まる。
第２図のブロック図に示されているように、ＭＬＤＮＥ２０１はいくつかの内部リンク２４１を使用してより大規模なスイッチを作成する完全にメッシュ化され、相互接続されたいくつかのサブシステム２１０を含んでいる。少なくとも１つの内部リンクが任意の２つのサブシステムを結合する。各サブシステム２１０は、中継データベースとも呼ばれる中継およびフィルタ処理データベース２４０に結合されたスイッチ要素２００を備えている。中継およびフィルタ処理データベースは、中継メモリ２１３と関連するメモリ２１４を含むことができる。中継メモリ（またはデータベース）２１３は、受信パケットのヘッダと照合するために使用されるアドレス表を格納する。関連するメモリ（またはデータベース）は、ＭＬＤＮＥを介してパケットを中継するため中継属性を識別するのに使用される中継メモリ内の各エントリと関連付けたデータを格納する。入出力機能を持ついくつかの外部ポート（図示せず）が外部接続２１７とインタフェースしている。一実施形態において、各サブシステムは複数のＧｉｇａｂｉｔ  イーサネットポート、Ｆａｓｔ  イーサネットポート、およびイーサネットポートをサポートしている。各サブシステム内で入出力機能を持つ内部ポート（図示せず）も内部リンク２４１を結合する。ＭＬＤＮＥは、内部リンクを使用して、複数のスイッチング要素を接続して１つのマルチギガビット・スイッチを構成する。
ＭＬＤＮＥ２０１はさらに、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）などの通信バス２５１を介して個々のサブシステム２１０に結合された中央処理システム（ＣＰＳ）２６０を備えている。ＣＰＳ２６０は、中央メモリ２６３に結合された中央処理装置（ＣＰＵ）２６１を備えている。中央メモリ２６３は、様々なサブシステムの個々の中継メモリ２１３に含まれるエントリのコピーを格納する。ＣＰＳは、各サブシステム２１０との直接制御および通信インタフェースを備えており、スイッチ要素間の集中された通信および制御を行う。
スイッチ要素の例
第３図は、第２図のスイッチ要素のアーキテクチャの例を示す簡単なブロック図である。図に示されているスイッチ要素２００は、中央処理装置（ＣＰＵ）インタフェース３１５、スイッチ構造ブロック３１０、ネットワーク・インタフェース３０５、カスケード・インタフェース３２５、および共用メモリ・マネージャ３２０を含んでいる。
イーサネットパケットは、３つのインタフェース３０５、３１５、または３２５のうちのいずれか１つを介してネットワーク・スイッチ要素２００に出入りすることができる。簡単にいうと、ネットワーク・インタフェース３０５は対応するイーサネット・プロトコルに従って動作し、ネットワーク（図示せず）からイーサネット・パケットを受信し、１つまたは複数の外部ポート（図示せず）を介してネットワーク上にイーサネット・パケットを送信する。オプションのカスケード・インタフェース３２５は、大きなスイッチを作成するためにスイッチング要素を相互接続する１つまたは複数の内部リンク（図示せず）を含むことができる。たとえば、それぞれのスイッチ要素を完全メッシュ・トポロジで他のスイッチ要素と接続し、上述のように多層スイッチを構成することができる。それとは別に、スイッチはカスケード・インタフェース３２５を備える、あるいは備えない単一スイッチ要素２００を備えることもできる。
ＣＰＵ２６１は、ＣＰＵインタフェース３１５を介してネットワーク・スイッチ要素２００にコマンドやパケットを送信することができる。このようにして、ＣＰＵ上で動作している１つまたは複数のソフトウェア・プロセスが新しいエントリを追加したり不要なエントリを無効化するなど、外部の中継およびフィルタ処理データベース２４０のエントリを管理することもできる。ただし、代替実施形態では、ＣＰＵで中継およびフィルタ処理データベース２４０に直接アクセスすることもできる。いずれにせよ、パケット中継を行うためには、ＣＰＵインタフェース３１５のＣＰＵポートは、スイッチ要素２００への汎用入力ポートに似ており、単に他の外部ネットワーク・インタフェース・ポートであるかのように取り扱うこともできる。ただし、ＣＰＵポートへのアクセスはＰＣＩバスなどのバスで行われるので、ＣＰＵポートはメディア・アクセス制御（ＭＡＣ）機能を必要としない。
ネットワーク・インタフェース３０５に戻り、入力パケット処理と出力パケット処理という２つの主要な作業について簡単に説明する。入力パケット処理は、ネットワーク・インタフェース３０５の１つまたは複数の入力ポートで実行することができる。入力パケット処理では、（１）着信したイーサネット・パケットを受信し、検証する、（２）適宜パケット・ヘッダを修正する、（３）着信パケットを格納するために共用メモリ・マネージャ３２０にバッファ・ポインタを要求する、（４）スイッチ構造ブロック３１０に中継決定を要求する、（５）外部共用メモリ２３０に一時的に格納するために着信パケット・データを共用メモリ・マネージャ３２０に転送する、（５）中継決定の受信後、中継決定で指示された出力ポートにバッファ・ポインタを中継するという作業を行う。出力パケット処理は、ネットワーク・インタフェース３０５の１つまたは複数の出力ポートで実行することができる。出力処理では、共用メモリ・マネージャ３２０にパケット・データを要求し、パケットをネットワーク上に送信し、パケットの送信後バッファの割り当て解除を要求するという作業を行う。
ネットワーク・インタフェース３０５、ＣＰＵインタフェース３１５、およびカスケード・インタフェース３２５は、共用メモリ・マネージャ３２０とスイッチ構造ブロック３１０に結合されている。パケット中継やパケット・バッファリングなどの重要な機能は、第３図に示すように集中することが好ましい。共用メモリ・マネージャ３２０は、着信パケットのバッファリング用の外部共用メモリ２３０との効率的な集中インタフェースを行う。スイッチ構造ブロック３１０は、ＣＰＵの支援を受けて中継およびフィルタ処理データベース２４０を検索し、かつ保守するための検索エンジンと学習ロジックを含んでいる。
集中スイッチ構造ブロック３１０は、インタフェース３０５、３１５、および３２５に代わって中継およびフィルタ処理データベース２４０にアクセスするための検索エンジンを備えている。パケット・ヘッダ照合、Ｌａｙｅｒ２ベースの学習、Ｌａｙｅｒ２およびＬａｙｅｒ３パケット中継、フィルタ処理、および経過時間処理は、スイッチ構造ブロック３１０で実行できる機能の例である。各入力ポートは、スイッチ構造ブロック３１０と結合されており、受信したパケットの中継決定を受信する。中継決定は、対応するパケットを送信すべき送出ポート（たとえば、外部ネットワーク・ポートや内部カスケード・ポート）を示している。ＭＡＣ  ＤＡ交換用の新しいＭＡＣ宛先アドレス（ＤＡ）などのハードウェア経路指定をサポートするために中継決定にさらに情報を含めることもできる。さらに、スイッチ要素２００を介してパケット・トラヒックの優先順位付けを簡単に行えるように、優先度指示を中継決定に含めることもできる。
本実施形態では、イーサネット・パケットは共用メモリ・マネージャ３２０により集中でバッファリングされ、管理される。共用メモリ・マネージャ３２０はすべての入力ポートおよび出力ポートとインタフェースし、それらに代わってそれぞれ動的メモリ割り当ておよび割り当て解除を実行する。入力パケット処理中に、外部共用メモリ２３０に１つまたは複数のバッファが割り当てられ、たとえばネットワーク・インタフェース３０５から受信したコマンドに応答して着信パケットが共用メモリ・マネージャ３２０により格納される。その後、出力パケット処理中に、共用メモリ・マネージャ３２０は外部共用メモリ２３０からパケットを検索し、使用されなくなっているバッファの割り当てを解除する。すべての出力ポートで格納されているデータの送信が完了するまでバッファを解放しないようにするために、共用メモリ・マネージャ３２０はバッファの所有状況も追跡するのが好ましい。
本発明は、スイッチ要素２００などのスイッチ要素に含めることができる。ただし、ここで述べた方法と装置は、リピータ、ブリッジ、ルータ、ブルータ、およびその他のネットワーク装置などの他の種類のネットワーク装置にも等しく使用することができる。
スパンニング・ツリー学習およびフィルタ処理
第４図のスパンニング・ツリー・ロジックでは、ある種の状況において出力パケット・フィルタ処理を実行し、学習を禁止する。しかし、スパンニング・ツリー・ロジックについて説明する前に、フィルタ処理および学習について簡単に説明する。
フィルタ処理は、必要な接続性を失うことなくスイッチ内でパケットを選択的に破棄するプロセスである。中継に関しては、ポートがここで定義されている２つのブロックされた状態のうちの１つであれば、そのポートのサブネット上のノードを宛先とするパケットに対しフィルタ処理が行われる。
Ｌａｙｅｒ２ベースの学習は、スイッチング装置を通過するトラヒックに基づき中継データベースのメディア・アクセス制御（ＭＡＣ）アドレス部分を常時更新するプロセスである。パケットがスイッチング装置に入ると、パケットが到着した入力ポートとパケットのＭＡＣソース・アドレスとを関係付けるエントリがデータベース内に作成される（または既存のエントリが更新される）。この方法で、スイッチング装置は所与のノードが置かれているサブネットに基づいて学習する。
以下の段で詳述するが、入力ポートが学習に関して２つのブロックされない状態のいずれかであるときに、スイッチング要素は受信パケットのソース・アドレスに基づいて学習を実行することができる。ただし、第３の状態では、学習は実行されない。
第４図は、本発明の一実施形態によるスイッチ構造３１０内のスパンニング・ツリー学習およびフィルタ処理ロジックのブロック図である。この実施形態では、Ｎ個のポートのそれぞれにスパンニング・ツリー・レジスタが設けられている。ポート１は第１のスパンニング・ツリー・レジスタ４１３に対応している。ポートＮは、最後のトランク・レジスタ４２３に対応している。スパンニング・ツリー・プロトコルによって特定のポートがブロックされているか、またはポートがパケットの送受信を自由に行える状態のままかを示すためにポートごとにスパンニング・ツリー状態を用意することができる。この例では、スパンニング・ツリー・レジスタ４１３〜４２３は、以下の段でさらに詳しく説明する「ブロックされた」「ブロックされない」、「学習のみ」という３つのスパンニング・ツリー状態のうちの１つを格納できる２ビットのＳＴ＿Ｓｔａｔｅフィールドを持つ。この例のために、スパンニング・ツリー状態情報はレジスタに格納されると記述しているが、他にも記憶メカニズムは多数ありえることがわかる。
本発明のスパンニング・ツリー学習およびフィルタ処理ロジックはさらに、各ポートのスパンニング・ツリー・フィルタ・ブロック４３０と共通スパンニングツリー学習ブロック４４０も含む。レジスタは、対応するフィルタ・ブロック４３０と学習ブロック４４０に結合しており、これらのブロックにスパンニング・ツリー状態情報を提供する。
本発明によれば、学習中に、学習ブロック４４０は１ビットのｄｏｎｔ＿ｌｅａｒｎフラグをたてる。名前から明らかなように、第１の状態では、ｄｏｎｔ＿ｌｅａｒｎフラグは現在のパケットに関して学習を行わないことを示す。学習ブロック４４０の内部ロジックにより、入力ポートに対して学習を使用可能にするか使用禁止にするかが判定される。たとえば、ポートがブロックされていたり、スパンニング・ツリー・プロトコルによる学習を実行しないように指示されている場合もある。この判定は、入力ポートに対応するＳＴ＿Ｓｔａｔｅレジスタ内のスパンニング・ツリー状態を参照して行われる。入力ポートに対して学習が使用可能になっている場合、ｄｏｎｔ＿ｌｅａｒｎ線の処理はロジック０となり、そうでない場合はｄｏｎｔ＿ｌｅａｒｎ線はロジック１となる。
この実施形態では、Ｎビットの集合を使用して、Ｎ個のポートの中継ポート・マスクを符号化することができる。Ｎビットの集合の位置Ｘにあるビットが中継状態であれば、パケットはポートＸに中継される。ただし、このビットがフィルタ状態であれば、パケットはフィルタ処理される。もちろん、当業者であれば、代替表現を使用できることはよく理解できよう。
いずれにせよ、中継プロセスでは、各フィルタ・ブロック４３０は中継データベース２４０からポート・マスクを入力として受信する。代替実施形態では、スパンニング・ツリー・フィルタ処理ブロックによって受信されたポート・マスクは中間値である場合がある。つまり、ポート・マスクは、スパンニング・ツリー・フィルタ・ブロック４３０に到着する前にすでに１つまたは複数の他のフィルタ処理プロセスによって変更されている場合がある。各スパンニング・ツリー・フィルタ・ブロック４３０は、この特定のパケットについて中継決定を要求した入力ポートとの間で最終的にやり取りされる中継ポート・マスク（たとえば、ＦｗｄＰｏｒｔＭａｓｋ［Ｎ：１］）へ１ビットを与える。スパンニング・ツリー・フィルタ処理ブロック４３０では、対応するポートのＳＴ＿Ｓｔａｔｅを「ブロックされない」符号化と比較することにより「ブロックされない」出力ポートを宛先とするパケットのみを中継することができる。したがって、特定のポートのスパンニング・ツリー・フィルタ処理ブロック出力は、ポートのＳＴ＿Ｓｔａｔｅが出力に関してブロックされていなければ中継状態となり、そうでなければ、出力はフィルタ状態となる。
スパンニング・ツリー処理
第５図は、本発明の一実施形態によるスパンニング・ツリー処理を示す流れ図である。ステップ５１０では、従来のスパンニング・ツリー・プロトコルが、トランクがある場合そのトランクに参加していないポートごとに実行される。たとえば、構成ＢＰＤＵはネットワーク上の他のネットワーキング装置と交換され、ＩＥＥＥ８０２．１ｄに述べられているようにルート・ブリッジと指定ブリッジを決定する。構成ＢＰＤＵおよびタイマ値の形式などスパンニング・ツリー・プロトコルの詳細は、本発明を理解するために必要ではない。しかし、このような情報はＩＥＥＥ８０２．１ｄに用意されている。
ステップ５２０〜５４０では、改善されたトランク・レベルのスパンニング・ツリー処理を実行する。ステップ５２０で、スパンニング・ツリー・プロトコルを実行するためにトランク済みポートのうちから単一のポートを選択する。たとえば、最小のポート番号を持つポートを選択することができる。ステップ５３０では、スパンニング・ツリー処理は選択されていないトランク済みポートに対しては禁止される。たとえば、構成ＢＰＤＵの形成を禁止することができる。選択されていないポートを除外するのに他の方法を利用することもできることは理解されよう。
ステップ５４０では、ステップ５２０で選択されたポートを使用してスパンニング・ツリー・プロトコルを実行する。ステップ５５０では、選択されたポートをスパンニング・ツリー・プロトコルでブロックするかどうかが判定される。ブロックするのであれば、ステップ５６０で、選択されたポートが参加するトランクのすべてのポートがブロックされる。ブロックしないのであれば、トランクのすべてのポートはブロックされないままであり、処理はステップ５７０から継続する。
ステップ５７０で、テストを実行して、すべてのトランクが処理されたかどうかを判定する。すべて処理されている場合、トランク・レベルのスパンニング・ツリー処理は完了である。そうでなければ、処理はステップ５２０から続行する。このようにして、トランクはポートではなくスパンニング・ツリー・プロトコルを目的とする動作の単位として取り扱われる。所与のトランクのすべてのトランク済みポートに同じスパンニング・ツリー状態とするのが有利である。
トランキングとＩＥＥＥ８０２．１ｄスパンニング・ツリー・プロトコルに対応するために、本発明の譲受人が個々のポートをサイズ１のトランクとして取り扱うと都合がよいことを発見したということが重要である。この簡素化する仮定は、上述の処理の部分を簡素化したり、なくしたりするために採用することができる。たとえば、代替実施形態において、ステップ５１０をバイパスすることができる。つまり、個々のポートを特別な場合として取り扱うのではなく、すべてのポートをトランクとして取り扱うことができる。
ステップ５２０に戻って、複数のトランク済みポートのうちからポートを１つ選択する方法は他にも多数あることが理解される。ポートを選択する実際の方法は、スパンニング・ツリー・プロトコルをそれぞれのトランクの単一のポートに適用する操作を制限することほど重要ではない。特定の実装に対して特定の方法でポートを選択すると有利な場合があるが、上述の処理ではトランク内のどのポートを選択しても充分であることが理解されよう。
代替実施形態では、ポートを２つの従来の「ブロックされた」および「ブロックされない」状態に制限するのではなく、後述の追加「学習のみ」状態も使用できることにも注意されたい。
構成メッセージの受信
本発明で使用する構成メッセージ受信のプロセスの例を説明する前に、ネットワーク・インタフェース・ポート内のフィルタ処理ロジックの概要を簡単に述べる。ネットワーク・インタフェース３０５の各ポートは、メディア・アクセス・コントローラ（ＭＡＣ）を含む。着信パケット・トラヒックに関して、ＭＡＣは入力インタフェースとして使用される。ＭＡＣは、着信パケットを選択的に受信するようにプログラムできる。この目的のために、ＭＡＣはＭＡＣアドレス・フィルタ処理ロジックを含んでいる。ＭＡＣアドレス・フィルタ処理ロジックは、ＭＡＣアドレス・レジスタとＭＡＣアドレス・コンパレータを備えている。ＭＡＣの状態（たとえば、無差別モード）およびＭＡＣアドレス・レジスタにプログラムされているアドレスに基づいて、ＭＡＣアドレス・フィルタ処理ロジックは特定のアドレスを宛先とする着信パケットを受信し、他のパケットをフィルタ処理するか、またはすべての着信パケットを受信する。通常、ＭＡＣアドレス・レジスタにはポートのユニキャストＭＡＣアドレスが格納される。この方法で、適切なＭＡＣアドレス宛の着信パケットはＭＡＣ経由でスイッチング要素２００に入ることができる。ただし、他のすべてのパケットはフィルタ処理される（たとえば、削除される）。
着信パケットを受信すると、ＭＡＣフィルタ処理ロジックはパケットのＭＡＣ宛先アドレス（ＤＡ）をＭＡＣアドレス・レジスタ内の値と比較する。ＭＡＣ  ＤＡが一致した場合、スイッチング要素２００はパケットを受信し、一致しない場合、パケットをフィルタ処理する。
次に第６図では、本発明の一実施形態によるＭＡＣアドレス・レジスタ構成を流れ図で説明している。通常、ネットワーク内でブリッジとして機能している装置間でＢＰＤＵなどの構成メッセージを交換する必要がある。これは、たとえば、特定のポートがスパンニング・ツリー・プロトコルによってブロックされている場合であってもよくあることである。したがって、他のパケット・トラヒックをブロックしながら、ブロックされているポートを介してＢＰＤＵを受信できるようにするメカニズムが必要であり、このようなメカニズムについて説明することにする。
ステップ６１０において、スパンニング・ツリー・プロトコルでポートをブロックする決定を下す。ステップ６２０では、ＢＰＤＵの送信先のアドレスをＭＡＣアドレス・レジスタ内にプログラムする。ＢＰＤＵマルチキャスト・アドレスをＭＡＣアドレス・レジスタにプログラムすると、ＢＰＤＵ以外のすべてのパケット・トラヒックがフィルタ処理されるという効果を生じる。したがって、ＢＰＤＵは、ポートがブロックされた状態であってもそのまま受信でき、そのためたとえばＣＰＵによるＢＰＤＵの処理を続けることができる。
ステップ６３０で、スパンニング・ツリー・プロトコルにより、ポートのブロックを解除する決定を下す。ステップ６４０で、ＭＡＣユニキャスト・アドレスをＭＡＣアドレス・レジスタにプログラムする。
ＣＰＵ発信パケットの送信
第７図は、本発明の一実施形態によるＣＰＵ発信パケットの送信を示す流れ図である。ＢＰＤＵなどの特別なＣＰＵ発信パケットは、ブロックされているポートを横断できるようになっている必要がある。ＢＰＤＵはネットワーク内でブリッジとして機能している装置間で交換する必要がある。再び、これは、特定のポートがブロックされていたとしてもそうである。したがって、本発明では、ポートのそれぞれに特別なロジックを必要とすることなくブロックされているポートを介してパケット、特にＢＰＤＵを送信する方法を提示する。
ＣＰＵ２６１によって生成されるパケットに、制御情報が付加される。制御情報には、スイッチ要素２００によるパケット処理（たとえば、中継、すなわち転送）を簡単に行えるようにするためのパケットに関する情報を入れることができる。たとえば、制御情報の中に直行モード・フラグを用意し、パケットが指定された出力ポートに送信されるよう指示することができる。この場合、通常のパケット・ヘッダ照合および中継データベース検索はスキップされ、パケットはスイッチ構造３１０からの中継決定を参照することなく指定出力ポートに中継される。制御情報に他のフラグや制御情報を組み込めることも理解される。
この特定の例については、個々の出力ポートではなく、スイッチ構造３１０などの中央の場所で出力フィルタ処理決定を下すと仮定していることに注意されたい。したがって、出力ポートは、出力ポートに中継されたパケットを送信すると仮定される。
ステップ７１０では、ＣＰＵ２６１は特定の出力ポートに送信するため直行モード・パケットを生成する。通常、このパケットはスパンニング・ツリーに似たプロトコルをサポートするＢＰＤＵである。ただし、直行モードはＢＰＤＵの送信に限られるわけではないことが重要である。次に、ステップ７２０で、ＣＰＵインタフェース２１５はパケットと制御情報を受信する。
ステップ７３０で、ＣＰＵインタフェース・ロジックは、制御情報を参照して、パケットが直行モード・パケットなのか、それとも従来の方法（スイッチなど）で中継されるパケットなのかを判別する。
パケットが直行モード・パケットであると判別されると、パケットは制御情報で指定されている１つまたは複数の出力ポートに中継される（ステップ７４０）。そうでない場合には、ＣＰＵインタフェース・ロジックはスイッチ構造２１０にパケットの中継決定を要求し、そのような中継決定を受信すると、パケットをそこで指示されている１つまたは複数の出力ポートに中継する（ステップ７３５）。経路指定メカニズム（たとえば、パケットと関連する制御情報やスイッチ構造３１０からの中継決定）と関係なく、ステップ７５０で、パケットは１つまたは複数の出力ポートによって送信される。
スパンニング・ツリー状態
第８図を説明する前に、本発明で採用しているスパンニング・ツリー状態について簡単に説明する。ポートのスパンニング・ツリー状態には、（１）ブロックされていない、（２）学習のみ、および（３）ブロックされているという状態がある。
「ブロックされていない」つまり「非ブロック」状態では、たとえば、スイッチ構造３１０から受信した中継決定に基づき、入力ポートは受信パケットを自由に適切な出力ポートに中継できる。さらに、出力ポートは送出パケットを自由に送信できる。
「学習のみ」という状態では、入力ポートはＬａｙｅｒ２学習を実行できるが、受信パケットはフィルタ処理される。ただし、受入ポートに到着したパケットは、ＣＰＵに中継される。直行モード・パケット（たとえば、ＢＰＤＵ）の場合を除き、この状態では出力ポートでのパケット送信は禁止される。
「ブロック」という状態では、入力ポート受信パケットはフィルタ処理され、学習は実行されない。ただし、上記のように、特定の入力ポートに到着したパケットは処理のためＣＰＵに中継される。さらに、上記のように、ＣＰＵ２６１からの直行モード・パケットを除き、一般的には出力ポートでのパケット送信は禁止される。
状態遷移
そこで、第８図を参照しながら、ブロックされた状態からブロックされない状態へポートを遷移する方法の例を説明することにする。ステップ８１０で、スパンニング・ツリー・プロセスから、特定のブロックされているポートのブロックを解除せよという指示を受信する。ステップ８２０で、ポートは、ブロックされない状態に即座に遷移するのではなく、学習を実行できるが、送信はまだ禁止されたままである中間状態に入る。たとえば、上述の「学習のみ」状態を使用することができる。追加の中間状態を用意できることも理解される。
ステップ８３０で、ポートは、所定の時間の間、中間的な学習のみ状態に保持される。所定の時間の長さは、トラヒック・パターン、ノード分布などのネットワーク状態を見て決定することができる。当業者であれば、これらのネットワーク状態や他のネットワーク状態を参照しながらこのような中間状態に対する適当な時間範囲を決定することができる。最後に、ステップ８４０で、ポートは中間状態からブロックされない状態に遷移する。
前記の明細書においては、特定の実施形態に関して本発明を説明した。しかし、本発明のより広い精神および範囲から逸脱することなく様々な修正および変更を加えることができることは明白である。したがって、明細書と図面は限定的ではなく例示的なものと見なすべきである。
【図１】
0003983305.tif 000002
【図２】
0003983305.tif 000003
【図３】
0003983305.tif 000004
【図４】
0003983305.tif 000005
【図５】
0003983305.tif 000006
【図６】
0003983305.tif 000007
【図７】
0003983305.tif 000008
【図８】
0003983305.tif 000009