(57)【特許請求の範囲】
【請求項１】
パケットを受け取るための第１ポートを含み、少なくとも前記第１ポートがトランクに含まれるように構成された複数のポートと、
アドレスのサブセットに関する中継情報を含む複数のエントリを含む中継データベースを記憶するメモリと、
前記第１ポートおよび前記メモリに結合され、前記第１ポートと、パケット内に含まれる第１アドレスとの間の関連を反映するように中継データベースを修正する学習回路とを含み、前記トランクが第１タイプである場合には、前記学習回路が前記トランクに対応するトランク指示子に基づいて中継データベースを更新し、前記トランクが第２タイプである場合には、前記学習回路が前記第１ポートに対応するポート指示子に基づいて中継データベースを更新する
ネットワーク・デバイス。
【請求項２】
前記複数のポートのうちの第２ポートおよび前記メモリに結合され、パケット内に含まれる第２アドレスに対応する中継情報を受け取るフィルタリング回路をさらに含み、そのフィルタリング回路が所定の１組のトランキング規則に基づいて中継情報を修正するように構成された請求項１に記載のネットワーク・デバイス。
【請求項３】
前記フィルタリング回路が、
アウトバウンド・パケットの１つまたは複数の特性、および、アウトバウンド・トランクの１つまたは複数の特性に基づいて、負荷分散を前記アウトバウンド・パケットに選択的に適用する負荷分散論理と、
前記アウトバウンド・トランクの１つまたは複数の特性に基づいて、前記所定の１組のトランキング規則を実施するように構成されたトランク・フィルタリング論理とを有する
請求項２に記載のネットワーク・デバイス。
【請求項４】
前記データベースが、それぞれがアドレス・フィールドおよび指示子フィールドを含む複数のエントリをその中に記憶しており、ネットワーク・デバイスがさらに、前記第１ポートおよび前記メモリに結合され、複数のエントリのうちの１つのエントリのアドレス・フィールドが第１アドレスに一致するかどうかを決定するサーチ・エンジンを有する請求項１に記載のネットワーク・デバイス。
【請求項５】
前記サーチ・エンジンが前記複数のポートの各々用のプログラマブル・レジスタを含み、各プログラマブル・レジスタが、前記ポートと関連する１つまたは複数のポートのグループを識別するためのトランク指示子をその中に記憶する請求項４に記載のネットワーク・デバイス。
【請求項６】
各プログラマブル・レジスタが学習の目的でトランク指示子とポート指示子のどちらを使用するべきかを指示するためのタイプ・インジケータを含む請求項５に記載のネットワーク・デバイス。
【請求項７】
各プログラマブル・レジスタが前記トランクと関連するポートの数を示すトランク・サイズを含む請求項５に記載のネットワーク・デバイス。
【請求項８】
複数のポートの各々がポート指示子と関連し、前記トランク指示子が前記トランクに含まれる全てのポートのうちの最小ポート指示子を含む請求項１に記載のネットワーク・デバイス。
【請求項９】
前記トランクがさらに、複数のポートのうちの１つまたは複数の他のポートを含む請求項６に記載のネットワーク・デバイス。
【請求項１０】
ポート・マスクを作成するためのマスク・ジェネレータをさらに含み、前記ポート・マスクが前記複数のポートの各々に対応するマスク・フィールドを含み、前記マスクフィールドが第１状態にある場合には前記パケットが対応するポートに中継可能であり、前記マスク・フィールドが第２状態にある場合には前記パケットが対応するポートに中継されない請求項１に記載のネットワーク・デバイス。
【請求項１１】
第２ネットワーク・デバイスへパケットを伝送する第１ポートを含み、少なくともその第１ポートが前記第２ネットワーク・デバイスと関連するトランクに含まれる複数のポートと、
各々が特定のアドレスに関する中継情報を含む複数のエントリを含む中継データベースを記憶するメモリと、
第１ポートおよびメモリに結合され、前記パケット内に含まれる宛先アドレスに対応する中継情報を受け取るフィルタリング回路とを有し、前記フィルタリング回路が所定の１組のトランキング規則および前記トランクの１つまたは複数の特性に基づいて中継情報を修正するように構成され、
さらに、複数のポートおよびメモリに結合された学習回路を含み、前記学習回路は前記パケットが到着する前記複数のポートのうちの第２ポートと、前記パケット内に含まれる発信元アドレスとの間の関連付けを反映するように中継データベースを修正し、第２ポートが第１モードにある場合には前記学習回路はトランク指示子に基づいて中継データベースを更新し、第２ポートが第２モードにある場合には前記学習回路はポート指示子に基づいて中継データベースを更新するネットワーク・デバイス。
【請求項１２】
第１ポートおよびメモリに結合されたサーチ・エンジンをさらに有し、前記サーチエンジンが複数のエントリのうちの１つのエントリの中継情報が宛先アドレスに対応するかどうかを決定する請求項１１に記載のネットワーク・デバイス。
【請求項１３】
前記トランクがさらに、前記複数のポートのうちの１つまたは複数の他のポートを含む請求項１１に記載のネットワーク・デバイス。
【請求項１４】
前記フィルタリング回路がさらに、前記パケットの１つまたは複数の特性および前記トランクの１つまたは複数の特性に基づいて前記複数のポートのうちの１つの単一ポートに前記パケットを中継するように負荷分散を選択的に適用する負荷分散論理を含む請求項１１に記載のネットワーク・デバイス。
【請求項１５】
前記パケットの１つまたは複数の特性が、前記パケットがユニキャスト・パケットがあるかそれともマルチキャスト・パケットであるかを含む請求項１４に記載のネットワーク・デバイス。
【請求項１６】
前記パケットの１つまたは複数の特性が、宛先アドレスが既知のユニキャスト・アドレスであるかそれとも未知のユニキャスト・アドレスであるかを含む請求項１４に記載のネットワーク・デバイス。
【請求項１７】
前記トランクの１つまたは複数の特性が前記トランクにおけるポートの数を含む請求項１４に記載のネットワーク・デバイス。
【請求項１８】
前記トランクの１つまたは複数の特性が前記トランクと関連するトランク指示子を含む請求項１４に記載のネットワーク・デバイス。
【請求項１９】
前記トランクの１つまたは複数の特性が前記トランクと関連するデバイス・モードを含む請求項１４に記載のネットワーク・デバイス。
【請求項２０】
ネットワーク・デバイスの複数のポートのうちの１つのポートにおいて、宛先アドレスを有するヘッダ情報を含むパケットを受け取るステップと、
宛先アドレスについて中継データベースをサーチするステップと、
前記宛先アドレスが前記中継データベース内にない場合に、あるトランクが第１タイプのネットワーク・デバイスに結合されている場合、前記パケットがそのトランクのただ１つのポートに中継されることを保証するために負荷分散を実施するステップと、
前記トランクが第２タイプのネットワーク・デバイスに結合されている場合、前記パケットを前記トランクの全てのポートに中継するステップとを含む
方法。
【請求項２１】
前記宛先アドレスがマルチキャスト・アドレスである場合、前記パケットが前記トランクのただ１つのポートに中継されることを保証するために負荷分散を実施するステップをさらに含む請求項２０に記載の方法。
【請求項２２】
前記宛先アドレスが既知のユニキャスト・アドレスである場合、前記トランクが第１タイプのネットワーク・デバイスに結合されている場合、前記パケットを中継する前記トランクの１つの単一ポートを決定する負荷分散を実施するステップと、
そうではなく、前記トランクが第２タイプのネットワーク・デバイスに結合されている場合、前記パケットを前記宛先アドレスと関連する複数のポートに中継するステップとをさらに含む
請求項２０に記載の方法。
【請求項２３】
第１タイプのネットワーク・デバイスが全てのトランキングされたポートにおいて同一の媒体アクセス制御（ＭＡＣ）アドレスを有し、第２タイプのネットワーク・デバイスがトランキングされた各ポート用に異なるＭＡＣアドレスを有する請求項２２に記載の方法。
【請求項２４】
第１タイプのネットワーク・デバイスが全てのトランキングされたポートにおいて同一の媒体アクセス制御（ＭＡＣ）アドレスを有し、第２タイプのネットワーク・デバイスがトランキングされた各ポート用に異なるＭＡＣアドレスを有する請求項２０に記載の方法。
【請求項２５】
各々が異なるポート指示子および共通トランク指示子と関連する、トランクにおけるトランキングされた複数のポートのうちの第１ポートにおいてパケットを受け取るステップと、
前記パケットに含まれる発信元アドレスについて中継データベースをサーチするステップと、
前記発信元アドレスが中継データベース内に所在しない場合には、前記第１ポートのモードに基づき、前記第１ポートと関連する前記共通トランク指示子または異なる前記ポート指示子のどちらかを学習するステップとを含む
ネットワーク・デバイスにおける使用方法。
【請求項２６】
前記第１ポートのモードがプログラム可能であり、
前記共通トランク指示子または前記の異なるポート指示子を学習するステップがさらに、
前記第１ポートが第１モードにあるようにプログラムされている場合、前記トランク指示子の表現をその中に含む中継データベース・エントリを作成するステップと、
そうではなく、前記第１ポートが第２モードにあるようにプログラムされている場合、前記第１ポートに関連する前記異なるポート指示子の表現をその中に含む中継データベース・エントリを作成するステップと、
中継データベース・エントリを中継データベースに記憶するステップとを含む請求項２５に記載の方法。
【請求項２７】
前記中継データベース・エントリに発信元アドレスを記憶するステップを実施することにより、発信元アドレスが前記第１ポートと関連する前記共通トランク指示子または前記の異なるポート指示子のどちらかと関連付けられる請求項２５に記載の方法。
【請求項２８】
前記共通トランク指示子が前記異なるポート指示子のうちの最小ポート指示子を含む請求項２４に記載の方法。
【発明の詳細な説明】
発明の分野
本発明は、全般的にコンピュータ・ネットワーク・デバイスの分野に関する。さらに詳細には、本発明は、多重並列物理ネットワーク・リンクを１つの論理チャネルに組み合わせるのが容易なネットワーク・デバイス・ビルディング・ブロックに関する。
発明の背景
一般に、トランキングはネットワークにおける２点間（たとえば、２つのネットワーク・デバイスの間）で帯域幅を寄せ集める手段（bandwidth aggregation）とみることができる。第１図はトランキングの概念を示すのに有用である。第１デバイス１０５と第２デバイス１１０は、複数の物理ネットワーク・リンク１１５〜１１７までを介して接続される。第１デバイス１０５および第２デバイス１１０は、たとえばサーバ、クライアント、中継器、ブリッジ、ルータ、ブルータ、スイッチ等のようなネットワーク・デバイスであってもよい。第１デバイス１０５は、ポート１０６〜１０９までを含み、第２デバイス１１０はポート１１１〜１１４までを含む。これらのポートは、たとえばイーサネット・プロトコルのような適切なネットワーク・プロトコルを実行することによって、デバイスが接続されたネットワーク・リンクへできる。
この例において、物理ネットワーク・リンク１１５〜１１７までは、第１デバイス１０５と第２デバイス１１０の間に１つの論理チャネル、すなわち「トランク」１４０を形成するように組み合わされる。上述のように、トランクは、ネットワークにおける２点間の帯域幅を増加させることができる。たとえば、リンク１１５〜１１７までがそれぞれ１００Ｍｂｐｓの帯域幅を持つ場合には、結果として得られるトランク１４０の帯域幅は個々のリンクの帯域幅の和である（１００Ｍｂｐｓ＋１００Ｍｂｐｓ＋１００Ｍｂｐｓ＝３００Ｍｂｐｓ）。
ここで、２つのタイプのネットワーク・デバイスが出現していることを理解するのが重要である。第１タイプのデバイス（以後「ＭＯＤＥ１デバイス」と称する）は、トランキングされた、すなわちトランクに連結されたポートに共通する同一の媒体アクセス制御（ＭＡＣ）アドレスを持つ。第２タイプのデバイス（以後「ＭＯＤＥ２デバイス」と称する）は、トランキングされた各ポート毎に異なるＭＡＣアドレスを持つ。
従来型スイッチの１つの限界は、この種スイッチがＭＯＤＥ１デバイスに関して上流負荷分散を実施することができないことである。たとえば、第１デバイス１０５のポート１０６〜１０８が、それぞれ、第１デバイス１０５のＭＡＣアドレスを使用するものと仮定すれば、トランキングされた異なるポート１０６〜１０８に第１デバイス１０５がパケットを送る度に、第２デバイス１１０は当該ＭＡＣアドレスのロケーションを再学習することになる。したがって、トランク１４０を介して第１デバイス１０５を宛先とするパケット・トラフィックはポート１１１〜１１３に配布できない。そのうえ、第２デバイス１１０がこれらのパケットを伝送するポートは、ポート１０６〜１０８のうちのどのポートに最後に伝送されたかに依存する。
以上の記述に基づき、学習、中継、ルーピング、および、負荷分散に関するＭＯＤＥ１またはＭＯＤＥ２のどちらかで動作するネットワーク・デバイスとコンパチブルな一組のトランキング規則を実行することが望ましい。さらに、パケット伝送における遅延の導入を回避するために、トランク処理によって即刻影響されるパケット中継決定を更新することが望ましい。
発明の概要
ネットワーク・デバイスにおいてトランキング・サポートを提供するための方法および装置について記述する。本発明の一態様によれば、ネットワーク・デバイスは、トランクに含まれるように構成された少なくとも１つのポートを含む。さらに、ネットワーク・デバイスは、中継データベースを記憶するメモリを含む。中継データベースは、ネットワーク・アドレスのサブセットに関する情報を含むエントリを有する。ネットワーク・デバイスは、さらに、学習回路を含む。学習回路はランキングされたポートおよびメモリに結合される。前記学習回路は、トランキングされたポートと、トランキングされたポートによって受信されたパケット内に含まれる第１アドレスとの間の関連を反映するように中継データベースを修正するように構成される。トランクが第１タイプである場合には、学習回路は、当該トランクに対応するトランク指示子に基づいて中継データベースを更新する。そうでない場合には、前記学習回路は、トランキングされたポートに対応するポート指示子に基づいて中継データベースを更新する。
本発明の他の態様によれば、ネットワーク・デバイスは、第２のネットワーク・デバイスと関連したトランクに含まれる少なくとも１つのポートを含む。さらに、ネットワーク・デバイスは、中継データベースを記憶するためのメモリを含む。その中継データベースは、各々が特定のネットワーク・アドレスに関する中継情報を含むエントリを有する。ネットワーク・デバイスはさらに、トランキングされたポートおよびメモリに結合された、パケット内に含まれる宛先アドレスに対応する中継情報を受信するためのフィルタリング回路を含む。所定の１組のトランキング規則および１つまたは複数のトランク特性に基づき、前記フィルタリング回路は、中継データベースによって生成された中継情報を修正するように構成されている。
本発明の他の一態様によれば、パケットは、ネットワーク・デバイスにより、入力ポートの１つに受け取られる。そのパケットは、当該パケットの宛先アドレスを含むヘッダ情報を含む。中継データベースは、宛先アドレスについてサーチされる。宛先アドレスが中継データベース内で見つからず、出力トランクが第１タイプのネットワーク・デバイスに結合されている場合には、そのパケットが出力トランクのただ１つのポートに中継されることを保証するように負荷分散が実施される。ただし、出力トランクが第２タイプのネットワーク・デバイスに結合される場合には、パケットは出力トランクの全てのポートに送られる。
本発明の他の特徴は、添付図面および後続する詳細な記述から明白であるはずである。
【図面の簡単な説明】
本発明を、限定ではなく例として、添付図面の図に示す。図において、同様のエレメントは同じ参照番号で示す。
第１図はトランクを介した通信において結合された２つのデバイスを示す。
第２図は本発明の一実施形態に基づくスイッチを示す。
第３図は、本発明の一実施形態がその中で実装可能なスイッチ・エレメントの高水準構成図である。
第４図は、本発明の一実施形態に基づいたトランク中継回路とトランク学習回路との対話を示す構成図である。
第５図は、本発明の一実施形態に基づいたトランク処理を示す高水準フロー・ダイアグラムである。
第６Ａ図は、本発明の一実施形態に基づいた典型的なトランク学習モジュールを示す構成図である。
第６Ｂ図は、本発明の一実施形態に基づいた層２学習を示すフロー・ダイアグラムである。
第６Ｃ図は、第６Ａ図のトランク学習モジュールを実行するための典型的な論理を示す。
第７Ａ図は、本発明の一実施形態に基づいた典型的なトランク・フィルタリング・モジュールを示す構成図である。
第７Ｂ図は、本発明の一実施形態に基づいたトランク・フィルタリングを示すフロー・ダイアグラムである。
第７Ｃ図は、本発明の一実施形態に基づいた負荷分散を示すフロー・ダイアグラムである。
第７Ｄ図は、第７Ａ図のトランク・フィルタリング・モジュールを実行するための典型的な論理を示す。
詳細な説明
ネットワーク・デバイスにおいてトランキング・サポートを提供するための方法および装置について記述する。以下の説明においては、本発明の完全な理解を提供するために多数の特定の詳細が記述される。ただし、当業者にとっては、これら特定の詳細なしに本発明が実施可能であることは明白なはずである。他の場合には、周知の構造およびデバイスは構成図の形式で示される。
本発明は以下に記述する種々のステップを含む。本発明のステップは、以下に説明するハードウェア構成要素によって実施されることが好ましいが、その代りに、これらのステップを、命令でプログラムされた汎用または専用プロセッサにそれらのステップを実施させる機械実行可能命令で実施することもできる。
典型的ネットワーク・エレメント
本発明の教示に従って動作する一ネットワーク・エレメントの一実施形態の概要を第２図に示す。本ネットワーク・エレメントは、多数のノードとエンド・ステーションを様々な異なる方法で相互接続するために用いられる。特に、多層分散ネットワーク・エレメント（ＭＬＤＮＥ）の一適用例は、たとえば、イーサネットとしても知られるＩＥＥＥ８０２．３規格のような同次データ・リンク層に適用される事前定義済みルート指定プロトコルに基づいてパケットをルート指定することである。他のルート指定プロトコルも同様に使用できる。
ＭＬＤＮＥの分散アーキテクチャは、多数の既知のまたは将来のルート指定アルゴリズムに従って、メッセージ・トラフィックをルート指定するように構成できる。好ましい一実施形態において、ＭＬＤＮＥは、インターネット用プロトコル、さらに詳細には、イーサネットＬＡＮ規格および媒体アクセス制御（ＭＡＣ）データ・リンク層に適用される伝送制御プロトコル（ＴＣＰ）およびインターネット・プロトコル（ＩＰ）を用いて、メッセージ・トラフィックを扱うように構成される。ここでは、ＴＣＰは層４プロトコルとも呼ばれ、ＩＰは層３プロトコルと呼ばれることが多い。
ＭＬＤＮＥの一実施形態において、ネットワーク・エレメントは、分散された形式でパケットルート指定機能を実行するように構成される。すなわち、ある１つの機能の異なる部分は、ＭＩＬＤＮＥの異なるサブシステムによって実施され、一方、諸機能の最終結果は外部ノードおよびエンド・ステーションにとって透過なままである。以下の検討および第２図のダイアグラムから理解できるように、ＭＬＤＮＥはスケーラブル・アーキテクチャを有する。すなわち、設計者が、追加サブシステムを加えることによって、外部接続の数を予測可能に増加させることができるようにすることにより、ＭＬＤＮＥを独立型ルータとして定義する際にさらに大きい融通性を持たせることができる。
第２図に構成図の形式で示すように、ＭＬＤＮＥ２０１は、さらに大きいスイッチを作成するために多数の内部リンク２４１を用いて十分にメッシュされおよび相互接続される多数のサブシステム２１０を含む。少なくとも１つの内部リンクは任意の２つのサブシステムを結合する。各サブシステム２１０は、中継データベースとも呼ばれる中継データベースおよびフィルタリング・データベース２４０に結合されたスイッチ・エレメント２００を含む。中継データベースおよびフィルタリング・データベース２４０は中継メモリ２１３および関連メモリ２１４を含む。中継メモリ（またはデータベース）２１３は、受け取ったパケットのヘッダと突き合わせるために用いられるアドレス表を記憶する。関連メモリ（またはデータベース）は、ＭＬＤＮＥを経てパケットを送るための中継属性を識別するために用いられる中継メモリにおける各エントリに関連するデータを記憶する。入力および出力能力を有するいくつかの外部ポート（図示せず）は外部コネクション２１７をインターフェイスする。一実施形態において、各サブシステムは、多重ギガビット・イーサネット・ポート、高速イーサネット・ポートおよびイーサネット・ポートをサポートする。各サブシステムにおいて同様に入力および出力能力を有する内部ポート（図示せず）は内部リンク２４１を結合する。ＭＬＤＮＥは、内部リンクを用いて、マルチギガビット・スイッチを形成するために多重スイッチング・エレメントを一緒に接続することができる。
ＭＬＤＮＥ２０１は、さらに、たとえば周辺構成要素相互接続（ＰＣＩ）のような通信バス２５１を介して個々のサブシステム２１０に結合される中央処理システムＣＰＳ）２６０を含む。ＣＰＳ２６０は、中央メモリ２６３に結合された中央処理装置（ＣＰＵ）２６１を含む。中央メモリ２６３は、種々のサブシステム下の個々の中継メモリに含まれるエントリのコピーを含む。ＣＰＳは、各サブシステム２１０への直接制御および通信インターフェイスを有し、スイッチ・エレメントの間に幾らか集中された通信および制御を行う。
典型的スイッチ・エレメント
第３図は、第２図のスイッチ・エレメントの典型的なアーキテクチャを示す簡略化した構成図である。図のスイッチ・エレメント２００は中央処理装置（ＣＰＵ）インタフェース３１５、スイッチ構造ブロック３１０、ネットワーク・インタフェース３０５、カスケード・インタフェース３２５、および共用メモリ・マネージャ３２０を含む。
イーサネット・パケットは、３つのインターフェイス３０５、３１５、または３２５のうちの任意の１つを介してネットワーク・スイッチ・エレメント２００に対して出入可能である。要するにネットワーク・インタフェース３０５は、対応するイーサネット・プロトコルに従って動作し、ネットワーク（図示せず）からイーサネット・パケットを受け取り、１つまたは複数の外部ポート（図示せず）を経てネットワークでイーサネット・パケットを伝送する。オプションのカスケード・インタフェース３２５は、さらに大きいスイッチを作成するためにスイッチング・エレメントを相互接続するための１つまたは複数の内部リンク（図示せず）を含むこともある。たとえば、各スイッチ・エレメントは、上で説明したような多重層スイッチを形成するために、完全メッシュ・トポロジーとして、他のスイッチ・エレメントと共に接続可能である。その代りに、スイッチは、カスケード・インタフェース３２５を用いるか、または用いることなしに、１つの単一スイッチ・エレメント２００を構成することも可能である。
ＣＰＵ２６１は、ＣＰＵインタフェース３１５を経て、コマンドまたはパケットをネットワーク・スイッチ・エレメント２００へ伝送できる。このようにして、ＣＰＵで実行中の１つまたは複数のソフトウェア・プロセスは、外部中継データベースおよびフィルタリング・データベース２４０において、たとえば新規エントリおよび不必要な無効化エントリを加えるように、エントリを管理できる。ただし、代替実施形態において、ＣＰＵは、中継データベースおよびフィルタリング・データベース２４０への直接アクセスが可能である。どのような場合であっても、パケット中継のためには、ＣＰＵインタフェース３１５のＣＰＵポートはスイッチ・エレメント２００への一般の入力ポートと類似し、単に別の外部ネットワーク・インタフェース・ポートであるかのように扱うことができる。ただし、ＣＰＵポートへのアクセスは、たとえば周辺構成要素相互接続（ＰＣＩ）バスなどのバスで発生するので、ＣＰＵポートは、一切の媒体アクセス制御（ＭＡＣ）機能を必要としない。
ネットワーク・インターフェイス３０５へ戻って、次に入力パケット処理と出力パケット処理の２つの主要タスクについて簡潔に説明する。入力パケット処理は、ネットワーク・インタフェース３０５の１つまたは複数の入力ポートによって実施可能である。入力パケット処理は下記を含む：（１）入来イーサネットパケットの受け取りおよび検査を実施し、（２）該当する場合には、パケットヘッダを修正し、（３）入来パケットを記憶するため共用メモリ・マネージャ３２０にバッファ・ポインタを要求し、（４）スイッチ構造ブロック３１０に中継決定を要求し、（５）入来パケット・データを、外部共用メモリ２３０に一時的に記憶するため共用メモリ記憶マネージャ３２０へ中継し、（５）中継決定を受領すると、中継決定によって指示された出力ポートへバッファ・ポインタを送る。出力パケット処理は、ネットワーク・インタフェース３０５の１つまたは複数の出力ポートによって実施可能である。出力処理は、共用メモリ・マネージャ３２０からパケット・データを要求すること、ネットワークへパケットを伝送すること、および、パケットが伝送された後で、バッファの割り当て解除を要求することを含む。
ネットワーク・インタフェース３０５、ＣＰＵインターフェイス３１５、およびカスケード・インタフェース３２５は共用メモリ・マネージャ３２０およびスイッチ構造ブロック３１０へ結合される。たとえばパケッ中継およびパケット・バッファのような重要機能は、第３図に示すように集中されることが好ましい。共用メモリ・マネージャ３２０は、入来パケットを緩衝するために、外部共用メモリ２３０への効率的な集中インタフェースを提供する。スイッチ構造ブロック３１０は、ＣＰＵの支援を得て中継データベースおよびフィルタリング・データベース２４０のサーチおよび維持を行うためのサーチエンジンおよび学習ロジックを含む。
集中されたスイッチ構造ブロック３１０は、インタフェース３０５、３１５、および、３２５の代りに、中継データベースおよびフィルタリング・データベース２４０へのアクセスを行うサーチエンジンを含む。パケット・ヘッダの突き合わせ、層２に基づく学習、層２および層３パケット中継、フィルタリング、およびエージングは、スイッチ構造ブロック３１０によって実施可能な典型的な機能である。各入力ポートは、受け取ったパケットに関する中継決定を受け取るために、スイッチ構造ブロック３１０と結合される。中継決定は、対応するパケットがそこで伝送されなければならないアウトバウンド・ポート（たとえば、外部ネットワーク・ポートまたは内部カスケード・ポート）を指示する。たとえば、ＭＡＣ  ＤＡ代置に関する新規ＭＡＣ宛先アドレス（ＤＡ）のようなハードウェアによるルート指定をサポートするために、追加情報を中継決定にも含めることが可能である。さらに、スイッチ・エレメント２００を介してパケット・トラフィックの優先位決定を容易にするために、優先位指示を中継決定内に含めてもよい。
本実施形態において、イーサネットパケットは、共用メモリ・マネージャ３２０によって集中的に管理される。共用メモリ・マネージャ３２０は、全ての入力ポートおよび出力ポートをインターフェイスし、それぞれ、それらの代わりに、動的メモリ割当ておよび割当て解除を実施する。入力パケット処理に際して、１つまたは複数のバッファは外部共用メモリ２３０に割当てられ、入来パケットは、たとえばネットワーク・インターフェイス３０５から受け取ったコマンドに応答する共用メモリ・マネージャ３２０によって記憶される。続いて、出力パケット処理に際して、共用メモリ・マネージャ３２０は、外部共用メモリ２３０からパケットを検索し、既に使用していないバッファの割り当てを解除する。全ての出力ポートが、そこに記憶されたデータの伝送を完了するまで一切のバッファが解除されないことを保証するために、共用メモリ・マネージャ３２０もバッファ所有権を追跡することが好ましい。
本発明は、たとえばスイッチ・エレメント２００のようなスイッチ・エレメント内に含まれてもよい。ただし、ここに説明する方法および装置は、たとえばレピータ、ブリッジ、ルータ、ブルータ、および他のネットワーク・デバイスのような、他のタイプのネットワーク・デバイスにも平等に適用可能である。
トランキング規則および概念の概観
負荷分散、たとえばトランクの異なるリンク全体に適用されるパケット・トラフィックの拡張、および、パケット重複の回避は、トランクの両端に接続される２つのネットワーク・デバイスが適合しなければならない目的である。本発明は、次の概念を用い、これらの目標を達成するために次の規則を厳守する。
ＭＯＤＥ１およびＭＯＤＥ２の両デバイスはサポートされ、ポートの間での混合と突き合わせが許容される。１つまたは複数のプログラマブル・レジスタまたは他のメモリは、前記２つのモードの間を区別するための指示を記憶することができる。その指示が第１状態にある場合には、特定のポートに関する学習および中継処理は、たとえばＭＯＤＥ１デバイスとの互換性を持つように構成される。同様に、指示が第２状態にある場合には、学習および中継処理はＭＯＤＥ２デバイスと互換性を持つように構成される。
学習に関連する規則および概念について検討する以前に、層２に基づく学習について簡潔に説明することとする。層２に基づく学習は、当該スイッチング・デバイスを経て通過するトラフィックに基づく中継データベースのＭＡＣアドレス部分を絶えず更新するプロセスである。パケットがスイッチング・デバイスに入る場合には、当該パケットのＭＡＣ発信元アドレスを、当該パケットが到達した入力ポートと関連付けるデータベースにおいてエントリが作られる（または、既存のエントリが更新される）。マルチキャスト・アドレスはハードウェアによる学習でなくソフトウェアによって求められる。どのような場合にも、学習プロセスと、ポートへ宛先アドレスをマップするソフトウェアとの間で、スイッチング・デバイスは、所与のノードがどのサブネット上に存在するかを知っている。
学習に関係した規則および概念について検討を続ける。パケットを発信したデバイスのタイプ（たとえば、ＭＯＤＥ１またはＭＯＤＥ２デバイス）に応じて、トランク番号およびポート番号が学習され、および／または、中継データベースおよびフィルタリング・データベースに記憶される。背景について説明したように、ＭＯＤＥ１デバイスから発信されたパケットは、どのポートに伝送されたかには無関係に、それらのヘッダ内に同じＭＡＣＳＡを持つ。したがって、ポート番号がＭＡＣＳＡと関連している場合には、異なるポートのデバイスによって伝送された各後続パケットの受信に際して、ＭＡＣＳＡは再学習される。したがって、ＭＯＤＥ１デバイスに結合済みのトランキングされたポートに関しては、学習目的にはトランク番号を使用することが好ましい。これとは対照的に、ＭＯＤＥ２デバイスから受信したパケットは、パケットが伝送されたポートに応じて異なるＭＡＣＳＡを持つ。これらのタイプのデバイスに関しては、ポート番号をＭＡＣＳＡと関連させることが便利である。どのような場合にも、学習されたポートまたはトランク番号は「ポート・マスク」としてコード化可能である。たとえば、Ｎ個１組のビットは、Ｎ個のポートに関するポート中継マスクを符号化するために用いられる。前記のＮ個１組のビットのＸ位置に在るビットが第１状態にある場合には、パケットはポートＸに中継されなければならない。ただし、前記のビットが第２状態にある場合には、パケットはフィルタリングされなければならない。もちろん、当該技術分野における当業者は、代替表現が使用できることを理解されるはずである。
この適用例全体を通じて、アウトバウンド・ポートを指示する中継決定の一部分を表すためにマスクが用いられるものと仮定されるものとする。したがって、中継に関しては、ユニ（単一）キャスト・パケットは、中継決定を要求した入力ポートへ提供されたポート・マスク内において中継状態に設定されたただ１つのビットだけを持つはずである。ただし、マルチキャスト・パケットに対応するポート・マスクは、中継状態に設定された幾つかのビット位置を持つことがあり得る。さらに、未知のユニキャスト・パケット（たとえば、このネットワーク・デバイスによって学習されたことのない宛先アドレスを持つパケット）は、全てのビットが中継状態に設定されることがあり得る（たとえば、パケットをあふれさせるため）。
ここで、学習および中継ネットワーク・デバイスの文脈において用語「既知（ｋｎｏｗｎ）」と「未知（ｕｎｋｎｏｗｎ）」の用法について説明することは有益であるものと推測する。パケットの宛先アドレスが学習され、かつ中継データベースに在る場合に、そのパケットは既知であると称する。これとは対照的に、パケットの宛先アドレスが学習されたことがないか、または中継データベース内に無い場合に、そのパケットは未知であると称する。
中継に関しては、、あらゆるパケット（既知のユニキャスト、マルチキャスト、または未知のユニキャスト）は、マルチホームド（multi-homed）・デバイスの複数のポートにおいて受信されてはならない。ＭＯＤＥ１デバイスの全てのポートは同一ＭＡＣアドレスを持つので、ＭＯＤＥ１デバイスの全てのポートは、受信したパケットに対して同じ仕方で応答するはずである。すなわち、全てのポートが前記のパケットを受け入れるか、あるいは、全てのポートが前記のパケットをフィルタリングするはずである。したがって、ＭＯＤＥ１デバイスに結合済みのトランキングされたポートにはただ１つだけのパケットが中継されることを保証することが重要である。これとは対照的に、ＭＯＤＥ２デバイスのポートは各々それら自身のＭＡＣアドレスを持つので、ただ１つのポートだけが所与のユニキャスト・パケットを受信可能であるはずである。ＭＯＤＥ１およびＭＯＤＥ２デバイスのこれらの特性が決定している場合、負荷分散はＭＯＤＥ１デバイスに中継された全てのパケットへ適用され、負荷分散はＭＯＤＥ２デバイスに中継されたマルチキャスト・パケットに適用されることだけが必要である。さらに、未知のユニキャスト・パケットは、ＭＯＤＥ１デバイスへ結合されたトランクの１つのポートにのみ中継され、ＭＯＤＥ２デバイスに結合されたトランクの全てのポートに中継されることもあり得る。
ルーピングに関しては、トランクに到着するあらゆるパケット（既知のユニキャスト、マルチキャスト、または未知のユニキャスト）は、同一トランクの他のポートに中継されてはならない。ただし、層３プロトコル・ユニキャストルートの一部分であるパケットの場合にはこの限りでない。
さらに、幾らかの簡潔化のための仮定によって、トランク処理の複雑性を軽減することが可能である。たとえば、トランキングが常に動作可能にされているとみることが出来る。この仮定があれば、１つの単一ポートは、サイズ１のトランクとみなすことが可能である。さらに、トランキングされたポートが隣接して割り当てられ、トランク番号が１つのトランクに最小ポート数として定義される場合、他の利点が達成されることが以下の説明から理解されるはずである。さらに、負荷分散が近似可能である。特定のトランク上のパケット・トラフィックは、参加ポートの間で厳密に共用される必要がない。特定のトランキングされたポートが過度利用または不足利用されないことを保証するために、当該トランクを通るパケットの流れを幾分ランダム化するようなメカニズムであることだけが必要とされる全てである。この分散は多数の方法で達成可能である。１つの方法は、以下に一層詳細に説明するようにハッシュ関数等を用いることである。
トランク学習およびフィルタリング
負荷分散、学習、中継、および、ルーピングに関係する規則および概念について簡潔に述べた段階で、これらの規則を実行するための典型的な論理およびステップについて説明することとする。第４図は、本発明の一実施形態に基づいたスイッチ構造３１０内トランク論理の構成図である。この実施形態において、トランク・レジスタはＮ個のポートの各々に装備される。ポート１は第１トランク・レジスタ４１０に対応し、ポートＮは最終トランク・レジスタ４２０に相当する。各レジスタはレジスタ４１０および４２０の形式であることが好ましい。レジスタ４１０は、トランク番号フィールド４１１、使用トランク番号フィールド４１２、および、トランク・サイズ・フィールド４１３を含む。この例において、トランク番号フィールド４１１は、このポートがメンバーであるトランクに対応するトランク数を記憶する４ビット値である。一実施形態において、トランク番号は、当該トランクにおけるポートの最低ポート数である。トランク番号をこのように選定することは、負荷分散に関して以下に検討するような利点を持つ。
続いてこの例を用いることとし、１つの１ビットフィールド、すなわち使用トランク番号フィールド４１２は、学習および中継を実行する目的で、特定のポートに関してトランク番号４１１を使用するか否かを指示するために用いられる。一般に、ポート番号はＭＯＤＥ２デバイスに添付されたポートに関して用いられ、トランク番号はＭＯＤＥ１デバイスに添付されたポートに関して用いられる。最終的に、図に示す前記の実施形態において、トランク・サイズ４１３は、当該トランクにおけるポート番号を表示するための３ビットフィールドである。この例の目的に応じて、トランク特性はレジスタに記憶されるものとして説明したが、他の多数の記憶メカニズムが可能であることを認識されたい。
さらに、本発明のトランク学習およびフィルタリング論理は、各ポートに関するトランク・フィルタ・ブロック４３０および共通トランク学習ブロック４４０を含む。これらのレジスタは、これらのブロックにトランク情報を与えるために、対応するフィルタ・ブロック４３０および学習ブロック４４０に結合される。ブロックへの他の入力は、パケットの宛先アドレスの上位ビット（ＭＳＢ）の一部分、フィルタリングおよび中継データベースからの個別ポート・マスク・ビット、入力トランク番号、入力ポート番号、パケットの発信元アドレスの下位ビット（ＬＳＢ）の一部分、および、たとえば当該パケットがユニキャスト・ルートの一部分であるか否かのような層３情報を含んでもよい。学習プロセスに際して、上述の入力が決定している場合、学習ブロック４４０は、中継データベースおよびフィルタリング・データベースに記憶されるはずのポートマスク（たとえば、ＬｅａｒｎＰｏｒｔＭａｓｋ［Ｎ：１］）を生成する。さらに、中継プロセスに際して、各フィルタブロック４３０は、最終中継ポート・マスク（たとえば、ＦｗｄＰｏｒｔＭａｓｋ［Ｎ：１］）に向かう１ビットを出力する。最終中継ポート・マスクは、この特定パケットに関する中継決定を要求した入力ポートへ究極的に伝達される。
トランク処理の概観
本発明を実行可能な典型的な環境について説明した段階において、トランク処理について説明することとする。第５図は、本発明の一実施形態に基づくトランク処理を示す高レベルのフロー・ダイアグラムである。ステップ５１０において、ネットワーク・インタフェース３０５またはカスケード・インタフェース３２５の入力ポートにおいてパケットが受け取られる。入来パケットの受信期間中の適切な時点において、入力ポートは、スイッチ構造ブロック３１０からの中継決定および学習サイクルを要求する。
ステップ５２０において、学習が実施される。従来の方法によれば、学習は、入来パケットのＭＡＣＳＡおよびその到着ポートと関連する。ただし、本発明は、第６Ｂ図に関して以下に説明する特定の情況において入来パケットのＭＡＣＳＡと関連付けるべきトランク指示子の表現を可能にすることによって、トランキングを適合させる。どのような場合であっても、学習プロセスに際して、中継データベースおよびフィルタリング・データベースは、新規に受信したパケットの結果として学習した新規情報を反映するために、更新される。たとえば、中継データベースおよびフィルタリング・データベース内にＭＡＣＳＡが存在しない場合には、新規なエントリが作成され、中継データベースおよびフィルタリング・データベースに記憶され、その結果、当該ＭＡＣアドレスに向けられた後続パケットは適切に中継される。その代りに、ＭＡＣＳＡが見つかった場合には、当該ＭＡＣアドレスと関連したポートまたはトランクが更新され、エイジ表示がクリアされる。
ステップ５３０において、トランクフィルタリングが実施される。トランクフィルタリングは、現行パケットを中継するための特定トランクの１つまたは複数のポートを選択するメカニズムである。ステップ５３０のフィルタリングは、たとえば中継データベースおよびフィルタリング・データベースから検索されたポート・リストのようなデータで実施される。この例において、ポート・リスト（たとえば、パケットを中継するべきポートを指示する中継決定の一部分）は「ポート・マスク」である。中継データベースおよびフィルタリング・データベースから検索されたポート・マスクが、１つのパケットが特定のポートに関してフィルタされなければならないことを指示する場合には、この判断は、トランク・フィルタリング論理によって反転されないはずであることを理解されたい。名前が暗示するように、トランク・フィルタリング論理は、ポート・マスク内の１つのビットを中継状態からフィルタ状態に変えるに過ぎない。
ステップ５４０において、全ての出力ポートがステップ５３０のフィルタリング論理を実施した後で、処理はステップ５５０に進む。フロー・ダイアグラムに示すように、ステップ５３０のフィルタリング論理は直列に実施可能であるが、各ポートに関してフィルタリングを並列的に実施するために多重回路を使用できることを理解されたい。最終的に、ステップ５５０において、中継決定は、それが要求された入力ポートに返される。
典型的なトランク学習モジュール
第６Ａ図は、本発明の一実施形態に基づく典型的なトランク学習モジュールを示す構成図である。この実施形態において、トランク学習ブロック４４０は入力ポート・トランク特性選択論理６１１、入力ポート番号／トランク番号選択論理６１２、および、マスク生成器６１４を含む。入力ポート・トランク特性選択論理６１１は各トランクのトランク特性を受け取り、入力ポートが属するトランクに対応する特性を出力する。
入力ポート番号／トランク番号選択論理６１２は、ユースビットおよび入力ポートに関するトランク番号を受け取るために、トランク特性選択論理６１１に結合される。ユースビットが、トランク番号が使用されるべきであることを示す第１状態にある場合には、入力ポート番号／トランク番号選択論理６１２はトランク番号を出力し、そうでない場合には入力ポート番号が出力される。
マスク生成器６１４は、入力トランク番号または入力ポート番号を受け取るように、入力ポート番号／トランク番号選択論理６１２の出力に結合される。この実施形態に基づき、入力ポート番号／トランク番号選択論理６１２からの番号入力に対応するポート・マスク（たとえば、ＬｅａｒｎＰｏｒｔＭａｓｋ［Ｎ：１］）が生成される。たとえば、学習マスク生成器６１４が番号５を受け取り、ネットワーク・デバイスがＮ＝８個のポートを持つ場合には、ポート・マスク０００１００００が生成される。８ビット・マスクの第５番目のビットが設定され、学習されつつあるアドレスに向けられたパケットが、ユースビットの状態に応じてポートまたはトランク番号５に中継されるべきであることを表示する。
学習処理
第６Ｂ図は本発明の一実施形態に基づく層２学習の方法を示すフロー・ダイアグラムである。ステップ６１３において、入力ポートに対応するトランク情報を表す１組のデータが選定される。
ステップ６２２において、トランク番号が使用されるべきか、または、ポート番号が使用されるべきかに関して決定される。この実施形態において、決定は、そこからパケットが受け取られたデバイスのタイプ（たとえば、ＭＯＤＥ１またはＭＯＤＥ２）に関して行われる。ポート番号が使用されねばならない場合には、学習処理はステップ６２３に継続し、そうでない場合には、処理はステップ６２５に継続する。
ステップ６２３において、たとえばポート・マスクのようなポート番号の表現が生成される。ステップ６２４において、前記のポート・マスクは中継データベースおよびフィルタリング・データベースに記憶される。
トランク番号が使用されなければならない場合には、たとえばマスク形式のトランク番号の表現がステップ６２５において生成される。次に、ステップ６２６において、トランク・マスクは中継データベースおよびフィルタリング・データベースに記憶される。
典型的なトランク学習論理
第６Ｃ図は、第６Ａ図のトランク学習モジュールを実行するための典型的な論理を示す。この実施形態において、トランク特性選択論理６１１はマルチプレクサ（ＭＵＸ）６１０を含む。ＭＵＸ６１０からのトランク番号出力および入力ポート番号はＭＵＸ６１５への入力である。ＭＵＸ６１０のユースビット出力はＭＵＸ６１５への選定入力である。ＭＵＸ６１５の出力は、ポート・マスク生成を実行するデコーダ６２０の入力に結合される。
トランク学習ブロック４４０に示す負荷分散論理６４０の部分に関して、排他的論理和ロジック６４４は、入力ポート番号および入来パケットの発信元アドレスの一部分に基づいてハッシュ結果を生成する。たとえばランダム番号ゼネレータのような、疑似ランダムまたはランダム番号を生成する他の方法を代わりに用いてもよい。どのような場合であっても、ＬｏａｄＢａｌａｎｃｅＨａｓｈを生成する論理が出力ポートに依存しない限り、この共通機能を不必要に複写することは避けることが望ましい。ただし、この論理は、トランク・フィルタリング・ブロック４３０内、または、代替実施形態内の他の場所で配置されてもよい。
典型的なトランク・フィルタリング・モジュール
第７Ａ図は、本発明の一実施形態に基づく典型的なトランク・フィルタリング・モジュールを示す構成図である。この実施形態において、トランク・フィルタリング・ブロック４３０は、負荷分散論理７４１およびトランク・フィルタリング論理７６１を含む。負荷分散論理７４１は、トランク・フィルタリング論理７６１へ信号を出力し、このトランク・フィルタリング・モジュールに対応する出力ポートが、負荷分散の目的で前記パケットが出力されなければならない宛先ポートとして選定されたか否かを表示する。負荷分散は、ＭＯＤＥ１を宛先とする全てのパケットおよびＭＯＤＥ２デバイスを宛先とするマルチキャスト・パケットに適用される。
トランク・フィルタリング論理７６１は、トランキング規則および概念に関して上述した論理を実行する。
フィルタリング処理
第７Ｂ図は、本発明の一実施形態に基づいたトランク・フィルタリングの方法を示すフロー・ダイアグラムである。各ポートに関して、現行パケットを中継するか、または、フィルタリングするかを決定することが必要である。ポート・マスクにおけるこの特定ポートに対応するビットは、たとえば、パケットを中継しないことを指示するためにゼロに設定することができる。
ステップ７２２において、中継データベースおよびフィルタリング・データベースから検索したエントリが、前記パケットが出力ポートに中継されるように指示したか否かが決定される。指示した場合には、１つまたは複数の更なるテストが実施可能であり、ステップ７３２において開始される。そうでない場合には、中継データベースおよびフィルタリング・データベースによって伝達されるフィルタリング決定は最終的であり、当該パケットは、このポートに関してフィルタリングされる（ステップ７８２）。
層３プロトコル・ユニキャスト・ルートの部分であるパケットのみが、それらを受け取ったポートまたはトランクに中継可能である。したがって、ステップ７３２において、入力トランク番号と出力トランク番号の間で比較が行われる。出力トランク番号が入力トランク番号に等しい場合には、当該パケットがユニキャスト・ルートの一部分であるかどうかを決定するためにステップ７４２が実施され、そうでない場合には、宛先デバイスのモードを決定するために、ステップ７５２が実施される。
ステップ７４２において、当該パケットが層３プロトコル・ユニキャスト・ルートの一部分であることが決定された場合には、処理はステップ７５２で継続する。ただし、当該パケットが層３プロトコル・ユニキャスト・ルートの一部分でない場合には、当該パケットは、ステップ７８２において、フィルタリングされる。
ステップ７５２において、宛先デバイスのモードに基づき、負荷分散はマルチキャスト・パケット（ステップ７９２）に適用されるか、または、負荷分散は全てのパケット（ステップ７６２）に適用される。
負荷分散処理
第７Ｃ図は、本発明の一実施形態に基づく負荷分散の方法を示すフロー・ダイアグラムである。
ステップ７１３において、そうでなければマルチホームド・デバイスの多重インタフェースによって受け取られていたはずのパケットをトランクの１つの単一ポートにマップするために、ハッシュ関数が実施される。本質的に、本アイデアは、パケット・トラフィック負荷を所与のトランクのポートの間に分散させ、さらに、複製パケットが宛先において受け取られることを防止することである。たとえば、排他的論理和ロジック６４４と第６Ｃ図および第７Ｄ図のモジュロ演算７４１、ランダム数ゼネレータ、または、これに類する物との組み合わせのように、この判定基準に適合する多くの代替案が存在する。
ステップ７２３において、出力ポート番号は出力トランク番号およびハッシュ結果に基づいて決定される。好ましくはトランク番号は当該トランクにおける最低番号ポートに対応し、ハッシュが、ゼロから、当該トランクにおけるポート個数から１を引いた数までの範囲内の番号を生成することが好ましい。たとえば、３、４、５の番号をつけられた３個のトランキングされたポートがある場合、ハッシュ結果は０から２まの間の数でなくてはならない。次に、トランク番号３が加えられた場合、結果は、ポート３、４、または、５のうちの１つである。
ステップ７３３において、ステップ７１３および７２３によって選定された出力ポート番号が現行ポート番号と比較される。たとえば、各ポートにフィルタリング・ブロック４３０が用いられているものと仮定すると、ステップ７２３の出力ポート番号は、特定のフィルタリング・ブロック４３０に対応するポートの番号と比較される。したがって、負荷分散論理によって選択された出力ポートに基づき、ポート一つ一つベースで、フィルタリング決定が行われる。この仕方において、ＭＯＤＥ１デバイスを宛先とするパケットだけが、ＭＯＤＥ１デバイスへ結合済みのトランキングされたポートの１つに中継される。さらに、ＭＯＤＥ２デバイスを宛先とするマルチキャスト・パケットだけが、ＭＯＤＥ２デバイスへ結合済みのトランキングされたポートの１つに中継される。
ステップ７４４において、現行ポートが、ステップ７１３および７２３によって選定された出力に対応することが決定された場合には、前記パケットは現行ポートに関してフィルタリングされず、前記パケットは究極的に現行ポートに中継される。そうでない場合には、当該パケットは現行ポートは中継されない（ステップ７５３）。
典型的なトランク・フィルタリング論理
第７Ｄ図は、第７Ａ図のトランク・フィルタリング・モジュールを実行するための典型的な論理を示す。ここに示す実施形態において、モジュラス演算７９１はＬｏａｄＢａｌａｎｃｅＨａｓｈおよびＯｕｔｐｕｔＴｒｕｎｋＳｉｚｅを受け取り、ゼロからＯｕｔｐｕｔＴｒｕｎｋＳｉｚｅ−１の間の数を出力する。加算器７９３は、入力として、モジュラス演算７９１の結果およびＯｕｔｐｕｔＴｒｕｎｋ＃を受け入れる。ＯｕｔｐｕｔＴｒｕｎｋ＃（たとえば、トランキングされたポートのうちの最小ポート番号）およびモジュラス演算７９１の結果を加えた後において、結果は、最小ポート番号と、最小ポート番号＋ＯｕｔｐｕｔＴｒｕｎｋＳｉｚｅ−１を含む数（たとえば、トランキングされたポート）との間の数である。加算器７９３の出力は、コンパレータ７９４によってＯｕｔｐｕｔＰｏｒｔ＃と比較される。この時点において、負荷分散論理７４１が、このトランク・フィルタリングモジュール４３０に対応する出力ポートを選定した場合には、１が出力される。
その次の段階はトランク・フィルタリング論理７６１である。この実施形態において、トランク・フィルタリング論理７６１は、複数のマルチプレクサ７７２−７７５およびユニキャストルート論理７５０を用いて実行される。ＭＵＸ７７２は、負荷分散論理結果をマルチキャスト・トラフィックに適用する。ＭＵＸ７７３は、負荷分散論理結果をＭＯＤＥ１デバイスに結合された全ての出力ポートへ適用する。（すなわち、ユースビットはＭＯＤＥ１デバイスに関して設定される）。
当該パケットが層３プロトコル・ユニキャスト・ルート・パケットでなく、ＯｕｔｐｕｔＴｒｕｎｋ＃がＩｎｐｕｔＴｒｕｎｋ＃と同じである場合には、ユニキャスト・ルート論理７５０は論理１を出力する。当該パケットが層３プロトコル・ユニキャスト・ルート・パケットであるか、または、ＯｕｔｐｕｔＴｒｕｎｋ＃がＩｎｐｕｔＴｒｕｎｋ＃と同じでない場合には、ユニキャスト・ルート論理７５０は論理ゼロを出力する。したがって、ＩｎｐｕｔＴｒｕｎｋ＃と異なるＯｕｔｐｕｔＴｒｕｎｋ＃、または、層３プロトコル・ユニキャスト・ルート・パケットを宛先とするパケットのみが所与の出力ポートに中継される。インバータ７５１および論理積７５４以外の他の多くの論理組合わせを使用してもよいことは明白であるはずである。
最後に、ＭＵＸ７７５は、中継データベースによって濾波されたとしてマークされたパケットをフィルタリングする。したがって、一切の濾波済みパケットは、トランク・フィルタリング・ブロック４３０によって「濾波されない」。すなわち、ＦｗｄＰｏｒｔＭａｓｋフィルタにおいて、ＰｏｒｔＭａｓｋ値は、ゼロから１へではなく、１からゼロに限って変更可能である。
典型的実施形態を説明するために、特定のフィールド・サイズ、ブロック入力、および、ブロック出力を使用したこと、ただし、本発明がこの種の詳細に制限されるものでないことを理解されたい。さらに、当該技術分野における当業者であれば、本発明が配線された論理のみに制限されないことを理解するはずである。その代りに、上に示す論理は機械実行可能命令において実行可能であり、この種の実行によって比較的大きい遅延が導入されることはあり得るが、前記の命令は、一般目的および特殊目的プロセッサに同一結果を生じさせるように使用可能である。
前述の明細書において、本発明は特定の実施形態に関して説明された。ただし、本発明のさらに広い趣旨および範囲から逸脱することなしに、種々の修正および改変を実施することが可能であることは明白である。したがって、本明細書および図面は制限的意味を持つものでなく、説明的であることを理解されたい。
【図１】
0004060893.tif 000002
【図２】
0004060893.tif 000003
【図３】
0004060893.tif 000004
【図４】
0004060893.tif 000005
【図５】
0004060893.tif 000006
【図６Ａ】
0004060893.tif 000007
【図６Ｂ】
0004060893.tif 000008
【図６Ｃ】
0004060893.tif 000009
【図７Ａ】
0004060893.tif 000010
【図７Ｂ】
0004060893.tif 000011
【図７Ｃ】
0004060893.tif 000012
【図７Ｄ】
0004060893.tif 000013