(57)【要約】  処理資源の利用を管理する技術は、パケットがＣＰＵに達することを許可する前に学習に向けてＣＰＵに送られるパケットをフィルタリングすることを含む。フィルタリングは、関連パケットが学習に向けてＣＰＵに達することがすでに許可されているかどうかを判断すること、ならびに関連パケットについての知識を用いて現在のパケットがＣＰＵに達することが許可されるべきかどうかを判断することを含む。一実施形態では、ＣＰＵの処理資源はフローごとに１つのパケットのみが学習に向けてＣＰＵに達することを許可することにより保存される。この１つのパケットが、ＣＰＵによって用いられて、必要な転送情報を作成し、ハードウェアベースの転送テーブルのプログラミングを開始し、その結果、同じフローのその後のパケットはハードウェアベースの転送エンジンから直接転送されることができる。
2007525883.tif 000002
【特許請求の範囲】
【請求項１】
パケットベースのネットワークノードにおいて処理資源の利用を管理する方法であって、
パケットを受信する工程と、
前記パケットを転送するために前記パケットに関連する転送情報を学習する必要があるかどうかを判断する工程と、
学習が必要な場合、任意のその他の関連パケットがすでに学習の対象となっているかどうかに基づいて、前記パケットを学習の対象にするかどうかを決定する工程とを含むことを特徴とする方法。
【請求項２】
前記パケットに関連する転送情報を学習する必要があるかどうかを判断する工程は、前記パケットのヘッダ情報とハードウェアベースの転送テーブル内のエントリーとを比較してマッチングを検出する工程を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ヘッダ情報と前記ハードウェアベースの転送テーブル内のエントリーとの比較でマッチングが検出されない場合、前記学習が必要であることを特徴とする請求項２に記載の方法。
【請求項４】
前記パケットを学習の対象にするかどうかを決定する工程は、前記パケットが属するフローを識別する工程と、同じフローからのパケットがすでに学習の対象となっているかどうかを判断する工程とを含むことを特徴とする請求項１に記載の方法。
【請求項５】
同じフローからのパケットがすでに学習の対象となっていないことが判断された場合のみ、前記パケットを学習の対象にする工程をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記パケットが属するフローを識別する工程は、前記パケットのヘッダ情報をハッシュしてハッシュ値を作成する工程を含み、同じフローからのパケットがすでに学習の対象となっているかどうかを判断する工程は、前記ハッシュ値を用いて状態テーブルに索引を付けて状態情報を得る工程を含むことを特徴とする請求項４に記載の方法。
【請求項７】
前記状態情報は、前記フローからのパケットがすでに学習の対象となっているかどうかを示すことを特徴とする請求項６に記載の方法。
【請求項８】
前記パケットを学習の対象にするべきであることが判断された場合、前記パケットを処理に向けて中央処理装置（ＣＰＵ）に送る工程をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
パケットベースのネットワークノードにおいて処理資源の利用を管理するシステムであって、
パケットを転送するために用いられる転送情報を学習するように構成された中央処理装置（ＣＰＵ）と、
パケットを学習に向けて前記ＣＰＵに送るべきかどうかを判断するように構成されたハードウェアベースの転送エンジンと、
前記ハードウェアベースの転送エンジンから前記ハードウェアベースの転送エンジンによって学習が必要であると判断されたパケットを受信し、任意のその他の関連パケットが前記ＣＰＵに達することがすでに許可されているかどうかに基づいて前記受信パケットが前記ＣＰＵに達することを許可するかどうかを決定するように構成された学習フィルタとを含むことを特徴とするシステム。
【請求項１０】
前記ハードウェアベースの転送エンジンは、転送テーブルエントリーでプログラムされることが可能なハードウェアベースの転送テーブルを含み、前記ハードウェアベースの転送エンジンは、前記ハードウェアベースの転送エンジンが前記受信パケットに対応する転送情報を含まない場合にパケットを学習に向けて前記ＣＰＵに送るように構成されていることを特徴とする請求項９に記載のシステム。
【請求項１１】
関連パケットはパケットの同じフローからのパケットであり、前記学習フィルタは、前記パケットが属するフローを識別するように構成されたハッシャーと、識別されたフローからのパケットが前記ＣＰＵにすでに送られているかどうかを示す状態テーブルとを含み、前記ハッシャーは、フローを識別するハッシュ値を作成し、そして前記ハッシュ値は、前記状態テーブルに索引を付けるために用いられることを特徴とする請求項９に記載のシステム。
【請求項１２】
前記学習フィルタは、フローから減じられたパケット数が前記ＣＰＵに達することを許可するように構成されていることを特徴とする請求項９に記載のシステム。
【請求項１３】
前記ＣＰＵおよび学習フィルタは制御モジュールラインカード上に位置し、前記ハードウェアベースの転送エンジンはポートインタフェースラインカード上に位置し、前記システムは、それぞれハードウェアベースの転送エンジンを有する複数のポートインタフェースラインカードをさらに含み、そして前記学習フィルタは、前記ポートインタフェースラインカードのそれぞれからパケットを受信するように構成されていることを特徴とする請求項９に記載のシステム。
【請求項１４】
前記ＣＰＵは制御モジュールラインカード上に位置し、前記学習フィルタは前記ハードウェアベースの転送エンジンと共にポートインタフェースラインカード上に位置し、前記ネットワークノードは複数のポートインタフェースラインカードをさらに含み、そしてそれぞれのポートインタフェースラインカードは学習フィルタを含むことを特徴とする請求項９に記載のシステム。
【請求項１５】
パケットベースのネットワークノードにおいて処理資源の利用を管理する方法であって、
パケットを受信する工程と、
前記パケットを学習に向けて中央処理装置（ＣＰＵ）に送る工程と、
前記パケットが前記ＣＰＵに達する前に、
関連パケットが学習に向けて前記ＣＰＵに達することがすでに許可されているかどうかを判断する工程と、
関連パケットが前記ＣＰＵに達することがすでに許可されているかどうかに基づいて前記パケットが前記ＣＰＵに達することを許可するかどうかを決定する工程とを含むことを特徴とする方法。
【請求項１６】
関連パケットが学習に向けて前記ＣＰＵに達することがすでに許可されているかどうかを判断する工程は、前記パケットが関連するフローを識別することを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
同じフローからのパケットが前記ＣＰＵに達することが許可されているかどうかを判断する工程をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
同じフローからの別のパケットが学習に向けて前記ＣＰＵに達することがすでに許可されてはいない場合にのみ、前記受信パケットが学習に向けて前記ＣＰＵに達することを許可する工程をさらに含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
同じフローから、減じられたパケット数が学習に向けて前記ＣＰＵに達することを許可する工程をさらに含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
関連パケットが学習に向けて前記ＣＰＵに達することがすでに許可されているかどうかを判断する工程は、前記受信パケットのヘッダ情報をハッシュしてハッシュ値を作成する工程と前記ハッシュ値を用いて状態テーブルに索引を付ける工程とを含み、前記状態テーブルは、関連パケットが前記ＣＰＵに達することがすでに許可されているかどうかを示す状態情報を含むことを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００４年１月１４日に出願した米国仮特許出願第６０／５３６４６９号の利益を主張するものである。
【０００２】
本発明はパケットベースの通信ネットワークに関し、さらに具体的には、スイッチまたはルータなどのネットワークノードにおいて処理資源の利用を管理する技術に関する。
【背景技術】
【０００３】
スイッチおよびルータなどのパケットベースのネットワークノードは入力パケット化トラフィック（ｉｎｃｏｍｉｎｇ  ｐａｃｋｅｔｉｚｅｄ  ｔｒａｆｆｉｃ）を転送するために用いられる転送情報のデータベースを作成する。転送情報が、中央処理装置（ＣＰＵ）により実行される、ソフトウェアベースのプロトコルを介して作成される。スイッチおよびルータの速度およびスループットを高めるために、転送情報は多くの場合ハードウェアベースの転送テーブルにプログラムされる。ハードウェアベースの転送テーブルは迅速に検索されて、ＣＰＵの資源の利用を全く必要とせずに転送決定をもたらす。パケットの受信フローに関する転送情報がハードウェアベースの転送テーブル内に存在しない場合、転送情報を学習することができ、かつハードウェアベースの転送テーブルに転送テーブルエントリーをプログラムすることができるまで、そのフローからのパケットは処理に向けてＣＰＵに送られる。ネットワークノードのＣＰＵは有限処理能力（ｉｎｆｉｎｉｔｅ  ｐｒｏｃｅｓｓｉｎｇ  ｃａｐａｃｉｔｙ）を有し、かつより多くのパケットがＣＰＵに送られるにつれて、ますます多くの有限処理能力が受信パケットを処理することによって消費される。ＣＰＵ上の負荷が大きすぎると、ＣＰＵの応答時間は遅くなり、一部のパケットが脱落する可能性がある。
【０００４】
最新鋭のスイッチおよびルータの多くはシャシベースの分散型設計を利用しており、その場合、個別のラインカードが異なる機能に設けられる。例えば、制御モジュールラインカードは中枢管理および制御機能に設けられ、ポートインタフェースラインカードはネットワークトラフィックの送受信およびハードウェアベースの転送の実行専用に設けられ、スイッチ構造ラインカードは様々なラインカード間のデータパスの提供専用に設けられる。分散型設計では、制御モジュールは、ネットワークノード全体に関する転送情報の作成および管理ならびにポートインタフェースのハードウェアベースの転送テーブルのプログラミングを担う主要ＣＰＵを含む。制御モジュールのこの幅広い責任のセットは、主要ＣＰＵの有限処理能力を非常に有益な資源にする。
【特許文献１】米国仮特許出願第６０／５３６４６９号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述に鑑みて、必要とされるものはパケットベースのネットワークノードにおいて処理資源の利用を効率的に管理する技術である。
【課題を解決するための手段】
【０００６】
処理資源の利用を管理するための技術は、パケットがＣＰＵに達することを許可する前に学習に向けてＣＰＵに送られるパケットのフィルタリングを含む。フィルタリングは、関連パケットが学習に向けてＣＰＵに達することがすでに許可されているかどうかを判断すること、ならびに関連パケットについての知識を用いて現在のパケットがＣＰＵに達することが許可されるべきかどうかを判断することを必要とする。一実施形態では、ＣＰＵの処理資源は、フローごとに１つのパケットのみが学習に向けてＣＰＵに達することを許可することにより保存される。この１つのパケットが、ＣＰＵによって用いられて、必要な転送情報を作成し、ハードウェアベースの転送テーブルのプログラミングを開始し、その結果、同じフローのその後のパケットがハードウェアベースの転送エンジンから直接転送されることができる。フローごとに１つのパケットのみが学習に向けてＣＰＵに達することが許可されるため、ＣＰＵの処理資源は、同じフローの複数のパケットに関して同じ転送情報を学習することにより消費されない。
【０００７】
一例として本発明の原則を例示する添付の図面と併せて以下の詳細な説明から本発明の別の態様および利点を理解されよう。
本説明を通して、同様の参照番号は同様の要素を識別するために用いられる。
【発明を実施するための最良の形態】
【０００８】
図１は、中央処理装置（ＣＰＵ）１０２、ハードウェアベースの転送エンジン１０４、および学習フィルタ１０６を含むネットワークノード１００を示す。ネットワークノードは、多くの場合データグラムと呼ばれる離散的セグメント（ｄｉｓｃｒｅｔｅ  ｓｅｇｍｅｎｔｓ）でトラフィックを処理する。一実施形態では、ネットワークノードはレイヤ２、レイヤ３、および／またはレイヤ４のヘッダ情報を用いてネットワークノード内でトラフィックを転送するイーサネット（登録商標）スイッチ／ルータであり、これら「レイヤ」は国際標準化機構（ＩＳＯ）による開放型システム間相互接続（ＯＳＩ）で定義されている。ネットワークノードは、非同期転送モード（ＡＴＭ）、同期光通信網（ＳＯＮＥＴ）、およびフレームリレーなどの他のネットワークプロトコルを支援するポートインタフェースを含んでもよい。イーサネット（登録商標）ベースのスイッチまたはルータが説明されるが、開示された技術は他のプロトコルを用いてトラフィックを転送するネットワークノードに適用されてもよい。
【０００９】
ネットワークノード１００のＣＰＵ１０２は、オペレーティングシステムを実行し、ネットワークトラフィックを転送するために必要なソフトウェアプロトコルを支援する。ＣＰＵは多機能プロセッサおよび／または特定用途向けプロセッサとして実現してもよい。プロセッサの例は、ＩＢＭによるＰｏｗｅｒＰＣ（商標）プロセッサファミリーおよびインテルによるｘ８６プロセッサファミリーを含む。ＣＰＵにより実行されることが可能なオペレーティングシステムの例は、ＮｅｔＢＳＤ、Ｌｉｎｕｘ、およびｖｘＷＯＲＫＳを含む。図示されていないが、ＣＰＵはその他のハードウェア（例えば、メモリ回路および特定用途向け集積回路（ＡＳＩＣｓ））によって支援されてもよい。
【００１０】
ＣＰＵ１０２により実行されるプロトコルの中には転送情報の作成に関連するプロトコルがある。本明細書でソフトウェアベースの学習プロトコル１１０と呼ばれるこれらのプロトコルは、レイヤ２学習プロトコルおよびレイヤ３学習プロトコルを含む。図１の実施形態では、トラフィックを切り換えるために用いられるレイヤ２プロトコルはイーサネット（登録商標）であり、レイヤ２学習は、宛先メディアアクセス制御（ＭＡＣ）アドレスをネットワークノードの出力ポートと関連付けることを含む。宛先ＭＡＣアドレスは、受信パケットの入力ポートおよび送信元ＭＡＣアドレスを学習することによりネットワークノードの出力ポートと関連する。当該分野でよく知られているように、宛先ＭＡＣアドレスに関する正しい出力ポートは、学習されるべき宛先ＭＡＣアドレスを有するパケットを関連する出力ポートのすべての上へ「フラッディング（ｆｌｏｏｄｉｎｇ（殺到））」し、次いで、対応するパケットが受信されるポートを判断できるよう監視することにより学習することができる。レイヤ２学習は、やはり仮想ローカルエリアネットワーク（ＶＬＡＮ）識別子（ＩＤｓ）を宛先ＭＡＣアドレスおよび／または出力ポートと関連付けることを含んでもよい。
【００１１】
図１の実施形態では、トラフィックの経路を設定するために用いられるレイヤ３プロトコルは、（ＩＰおよびＩＰＸを含めて）インターネットプロトコル（ＩＰ）をベースとし、レイヤ３学習は、宛先ＩＰアドレスを次ホップのＩＰアドレスと関連付けることを含む。ＣＰＵ１０２により実行される共通レイヤ３プロトコルの例は、オープンショーテストパスファースト（ＯＳＰＦ）プロトコル、境界ゲートウェイプロトコル（Ｂｏｒｄｅｒ  Ｇａｔｅｗａｙ  Ｐｒｏｔｏｃｏｌ：ＢＧＰ）、中間システム間（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ−ｔｏ−Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ：ＩＳＩＳ）プロトコル、およびマルチプロトコルラベルスイッチング（ＭＰＬＳ）を含む。
【００１２】
トラフィックは、典型的にはパケットベースのネットワークノード間で関連パケットのグループで通信される。多くの場合、関連パケットのグループは「フロー（ｆｌｏｗ）」と呼ばれる。フローのパケットはいくつかの共通情報を有する。例えば、共通レイヤ２情報は、宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、ＶＬＡＮ  ＩＤ、および／またはエントリーポートの任意の組み合わせを含んでもよい。共通レイヤ３情報は、宛先ＩＰアドレス、送信元ＩＰアドレス、タイプオブサービス（ＴＯＳ）、宛先ポート番号、および／または送信元ポート番号の任意の組み合わせを含んでもよい。
【００１３】
図１のハードウェアベースの転送エンジン１０４は入力トラフィックに関してハードウェアベースの転送決定を担う。ハードウェアベースの転送エンジンは、転送テーブルエントリーでプログラムされるハードウェアベースの転送テーブル１１２を含む。転送テーブルエントリーは入力パケット情報を出力情報と関連付ける。当該分野で知られているように、ハードウェアベースの転送テーブルは、典型的にはランダムアクセスメモリ（ＲＡＭ）および／または迅速にアクセスおよび検索されることが可能な内容参照可能メモリ（ＣＡＭ）で実現される。ハードウェアベースの転送決定は、それぞれのハードウェアベースの転送テーブルが入力パケットに対応する転送情報を含んでいる場合、その入力パケットに関してのみ下されることが可能である。動作中、ハードウェアベースの転送エンジンは受信パケットからのヘッダ情報を転送テーブルエントリーと比較して、テーブルエントリーにマッチングを探す。ハードウェアベースの転送エンジンが入力パケットに関して転送決定を下すことができない場合、ハードウェアベースの転送テーブルは入力パケットに対応する転送テーブルエントリーでプログラムされる必要がある。転送情報の取得工程は本明細書では学習と呼ばれる。いくつかの実施形態では、何らかの理由で、転送情報は非活動状態（例えば、転送決定を下すために用いることができない）であるものの、ハードウェアベースの転送テーブルは入力パケットに対応する転送情報を含んでもよい。転送情報が非活動状態である場合、いかなる転送決定も下されることはできず、関連パケットは学習に向けてＣＰＵに送られる。
【００１４】
トラフィックは典型的にはパケットのフローで通信されるため、ハードウェアベースの転送エンジン１０４が入力パケットに関して転送決定を下すことができない場合、ＣＰＵがハードウェアベースの転送エンジンに転送情報を通信し、かつ、転送テーブルが必要な転送情報でプログラムされるまで、フローのパケットのすべては転送に向けてＣＰＵ１０２に送られる。処理に向けてＣＰＵに送られるパケットが多いほど、処理の遅れは長くなる可能性がある。処理の遅れが長すぎると、パケットは脱落する可能性がある。処理の遅れおよび脱落パケットはネットワークノードの実行に悪影響を及ぼす。
【００１５】
本発明の一実施形態によると、学習に向けてＣＰＵ１０２に送られるパケットは、ＣＰＵに達することが許可される前にフィルタ処理される。フィルタリングは、関連パケットがＣＰＵに達することがすでに許可されているかどうかを判断すること、ならびに関連パケットについての知識を用いて現在のパケットがＣＰＵに達することが許可されるべきかどうかを判断することを含む。一実施形態では、ＣＰＵの資源は、フローごとに１つのパケットのみが学習に向けてＣＰＵに達することを許可することにより保存される。この１つのパケットがＣＰＵによって用いられて、必要な転送情報を作成し、ハードウェアベースの転送テーブル１１２のプログラミングを開始し、その結果、同じフローのその後のパケットがハードウェアベースの転送エンジン１０４から直接転送されることができる。フローごとに１つのパケットのみが、学習に向けてＣＰＵに達することが許可されるため、ＣＰＵの処理資源は、同じフローの複数のパケットに関して同じ転送情報を学習することにより消費されない。
【００１６】
図１の実施形態では、学習に向けてＣＰＵ１０２に送られるパケットのフィルタリングは学習フィルタ１０６によって実行される。学習フィルタは、ハードウェアベースの転送エンジン１０４から学習に向けてＣＰＵに送られるパケットのすべてを受信し、ＣＰＵに達することが許可される受信パケットを判断する。フィルタリングの結果、当初送られたパケットの一部分のみがＣＰＵに達することが許可される。学習フィルタは、様々な技術を用いて、ＣＰＵに達することが許可される受信パケットを判断してもよい。学習フィルタおよびフィルタリング技術のいくつかの例を以下に説明する。図１の実施形態では、学習フィルタは、ＣＰＵとハードウェアベースの転送エンジンとの間のデータパスに位置するＡＳＩＣチップである。
【００１７】
図２は、図１からの学習フィルタ１０６の実施形態を示す。学習フィルタは、ハッシャー１１６、フローごとの状態機械（ｓｔａｔｅ  ｍａｃｈｉｎｅ）１１８、および出力制御装置１２０を含む。学習フィルタは、ハードウェアベースの転送エンジン１０４によって学習に向けてＣＰＵに送られるパケットを受信する。ハッシャーは、受信パケットからヘッダ情報を得て、一定のヘッダ情報をハッシュしてそのパケットが属するフローを識別するハッシュ値を作成する。例えば、レイヤ２パケットは、宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、ＶＬＡＮ  ＩＤ、およびエントリーポートの組み合わせ上でハッシュされ、一方、レイヤ３パケットは、宛先ＩＰアドレス、送信元ＩＰアドレス、ＴＯＳ、宛先ポート番号、および送信元ポート番号上でハッシュされる。ハッシュ領域のいくつかの例が説明されるが、別の領域または複数領域の組み合わせが可能である。ハッシャーにより作成されたハッシュ値はフローごとの状態機械に供給される。フローごとの状態機械は、それぞれの識別されたフローに関する状態を表示する状態テーブル１２２を維持し、それぞれのフローはハッシュ値により識別される。フローの現状は出力制御装置に供給される。出力制御装置は、現状に基づきパケットがＣＰＵに達することが許可されるか否かを判断する。発生するフィルタリングの結果、学習フィルタによって受信されたパケットの一部分のみがＣＰＵに達することが許可される。
【００１８】
図２の実施形態では、フローごとの状態機械１１８はそれぞれのフローに関して２つの状態を維持し、これら状態は状態１（Ｓ１）および状態２（Ｓ２）として識別される。状態１は、対応するフローからのいずれのパケットもＣＰＵ１０２に達することが許可されていないことを示し、状態２は対応するフローのパケットがＣＰＵに達することが許可されていることを示す。図２の実施形態では、当初、フローの状態は状態１に設定されており、この状態が状態１である場合、パケットはＣＰＵに達することが許可される。パケットがＣＰＵに達することが許可されると、この状態は状態２に変わる。フローの状態が状態２に設定されている間、そのフローからそれ以上のパケットがＣＰＵに達することは許可されない。フローの転送情報が定期的に更新されることを確実にできるよう、フローの状態は、予め定められたアルゴリズムに従って状態１にリセットされてもよい。例えば、状態機械は、転送テーブルが対応するテーブルエントリーでプログラムされた後で、またはある固定期間を経た後で、状態１にリセットするように構成してもよい。図２の学習フィルタ論理の効果は、フローごとに１つのパケットのみが処理に向けてＣＰＵに達することが許可されることである。これにより、学習工程を妨げずにＣＰＵ上の負荷を大幅に削減することができる。学習フィルタおよびフィルタリング論理の一実施例が説明されているが、他のフィルタリング技術を用いて学習に向けてＣＰＵに達することが許可されるパケット数を削減してもよい。
【００１９】
図３はＣＰＵの処理資源の利用を管理する技術のプロセスフロー図を示す。ブロック２００で、パケットはネットワークノードで受信される。決定ポイント２０２で、学習が必要とされるか否かが判断される。学習は必要とされないことが判断された場合、ブロック２０４で、パケットは、ハードウェアベースの転送テーブル内に存在する転送情報を用いてハードウェアベースの転送エンジンにより転送される。学習が必要であることが判断された場合、ブロック２０６で、そのパケットが属するフローが識別される。例えば、パケットヘッダのある領域をハッシュすることによりフローは識別される。フローが識別された後、決定ポイント２０８で、識別されたフローからのパケットは、学習に向けてすでにＣＰＵに送られているかどうかが判断される。例えば、状態機械を調べて、識別されたフローからのパケットが学習に向けてすでにＣＰＵに送られているかどうかを判断する。識別されたフローからのパケットが学習に向けてすでにＣＰＵに送られている場合、現在のパケットは学習に向けてＣＰＵに送られない（ブロック２１０）。識別されたフローからのパケットが学習に向けてすでにＣＰＵに送られていない場合、そのパケットは学習に向けてＣＰＵに送られる（ブロック２１２）。図３のプロセスフローはネットワークノードで受信されるそれぞれのパケットに対して繰り返される。
【００２０】
図４は学習に向けて送られるパケットをフィルタ処理するように構成された分散型設計を備えたネットワークノード１３０の実施形態を示す。ネットワークノードの分散型設計は、制御モジュールラインカード１３２、スイッチ構造ラインカード１３４、および２つのポートインタフェースラインカード１３６（ポートインタフェースＡおよびＢ）を含む。図４の実施形態では、単一学習フィルタ１０６は、制御モジュールに位置し、ポートインタフェースのすべてから受信されたパケットをフィルタ処理する。図４に示された学習フィルタは、図１および図２に関連して上で説明されている学習フィルタと同じフィルタリング機能を果たす。
【００２１】
制御モジュール１３２は、（「主要ＣＰＵ」として識別される）ＣＰＵ１０２および学習フィルタ１０６を含む。一般に、制御モジュールはネットワーク管理機能およびプロトコル実装機能などの様々な機能を支援する。また図示されていないが、制御モジュールは、演算コードを記憶する電気的消去可能なＲＯＭ（ＥＥＰＲＯＭ）またはフラッシュＲＯＭ、およびトラフィックをバッファリングし転送情報などのデータ構造を記憶するダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのメモリも含む。この他、制御モジュール上には、１つを超える離散的プロセッサユニットおよび１つを超えるメモリユニットが存在してもよい。上に説明したように、主要ＣＰＵは多機能プロセッサおよび／または特定用途向けプロセッサを含んでもよい。ソフトウェアベースの学習プロトコル機能ブロック１１０で示されるように、主要ＣＰＵはソフトウェアベースの学習を支援する。ソフトウェアベースの学習は、当該分野でよく知られているように、レイヤ２およびレイヤ３の転送情報の作成を含む。
【００２２】
スイッチ構造１３４は、制御モジュール１３２とポートインタフェース１３６との間のデータパス（例えば、制御モジュールとポートインタフェースとの間のデータパスおよびポートインタフェース間のデータパス）を実現する。スイッチ構造は、例えば、共有メモリ、共有バス、またはクロスポイントマトリクスなどを利用してもよい。
【００２３】
ポートインタフェース１３６は、ポートインタフェースＣＰＵ１３８、ハードウェアベースの転送エンジン１０４、および入力／出力ポート１０４を含む。一般に、ポートインタフェースにより実行される機能は、ネットワークノードへのトラフィックの受信、トラフィックのバッファリング、転送情報の記憶、プロトコル処理、転送決定、およびネットワークノード１３０からのトラフィックの送信を含む。図４の実施形態では、それぞれのポートインタフェースのポートインタフェースＣＰＵはそれぞれのオペレーティングシステムを実行する。それぞれのポートインタフェースラインカード内のポートインタフェースＣＰＵは、多機能プロセッサ（例えば、ＩＢＭ  ＰｏｗｅｒＰＣ（登録商標）プロセッサ）および／または特定用途向けプロセッサを含んでもよい。演算コードは、典型的にはＥＥＰＲＯＭすなわちフラッシュＲＯＭなどの非揮発性メモリ（図示せず）内に記憶され、一方、トラフィックは、典型的にはＲＡＭなどの揮発性メモリ（図示せず）にバッファされる。
【００２４】
図４に示されるハードウェアベースの転送エンジン１０４は、図１に関連して説明されたハードウェアベースの転送エンジンと同じ機能を実行する。ハードウェアベースの転送エンジンにより実行される１つのタスクは、入力パケットを学習する必要があるかどうかを判断し、その結果、転送決定がハードウェアベースの転送エンジンによって直接下されることを可能にすることである。学習する必要のあるパケットはスイッチ構造１３４を介して制御モジュール１３２に送られる。
【００２５】
動作中、ポートインタフェース１３６のハードウェアベースの転送エンジン１０４は、受信パケットが学習を必要とするかどうかを判断する。受信パケットが学習を必要とする場合、パケットはスイッチ構造１３４を渡って制御モジュール１３２に送られる。制御モジュールで、パケットはまず学習フィルタ１０６によって処理される。学習フィルタは、パケットが学習に向けて主要ＣＰＵ１０２に達するか否かを判断するゲートウェイとしての機能を果たす。学習フィルタは制御モジュール上に位置するため、学習フィルタは異なるポートインタフェースのすべてからパケットを受信することができ、したがって中央フィルタリングポイント（ｃｅｎｔｒａｌ  ｆｉｌｔｅｒｉｎｇ  ｐｏｉｎｔ）としての機能を果たす。これにより、フィルタリングのすべては単一学習フィルタＡＳＩＣを用いて達成することが可能になる。この他、これにより、主要ＣＰＵまたはハードウェアベースの転送エンジンへの変更を必要とせずに、フィルタリングを達成することが可能になる。
【００２６】
図５は分散型設計を備えたネットワークノード１５０の別の実施形態を示す。フィルタリング機能がそれぞれのポートインタフェース１３６で分散型の方法で実行されることを除いて、図５の実施形態は図４の実施形態に類似している。具体的には、それぞれのポートインタフェースは、その対応するポートインタフェースからのパケットのみをフィルタ処理するインタフェース特定学習フィルタ１０６Ａおよび１０６Ｂを含む。インタフェース特定学習フィルタは、図１および図２に関連して説明された学習フィルタと同じ基本機能を実行する。フィルタリングを通過するパケットは、それぞれのポートインタフェースからスイッチ構造を介して制御モジュール１３２の主要ＣＰＵ１０２に送られる。
【００２７】
図６は、ＣＰＵの処理資源の利用を管理する方法のプロセスフロー図である。ブロック２２０で、パケットが受信される。ブロック２２２で、パケットを転送するためにパケットに関する転送情報を学習する必要があるかどうかが判断される。ブロック２２４で、学習が必要である場合、パケットを学習の対象にするかどうかについて判断が下される。この決定は、任意のその他の関連パケットがすでに学習の対象となっているかどうかに基づく。
【００２８】
本明細書で説明される実施形態では、フィルタリングを通過するパケットのみが処理に向けてＣＰＵ１０２に送られる。代替の実施形態では、学習に向けて送られるすべてのパケットはＣＰＵによって受信されるものの、選択されたパケットのみが学習処理の対象となるように、フィルタリング機能をＣＰＵに組み込んでもよい。
【００２９】
一実施形態では、フローごとに１つのパケットのみがＣＰＵ１０２に達することが許可されるが、別の実施形態では、ＣＰＵに達することが許可されるパケット数は当初学習に向けてＣＰＵに送られるフローのパケット総数から減じられる。
【００３０】
一実施形態では、ネットワークノード内でパケットを送ることはパケットのヘッダ情報のみを送ることを含んでもよい。例えば、パケットを学習に向けてＣＰＵに送ることはパケットのヘッダ情報のみをＣＰＵに送ることを含んでもよい。
【００３１】
この他、一実施形態では、フローの第１パケットが学習に向けてＣＰＵに達することが許可されるが、別の実施形態では、第１パケット以外のパケットがＣＰＵに達することが許可されることが可能である。
【００３２】
本発明の具体的な実施形態が説明されかつ例示されているが、本発明は本明細書で説明されかつ例示された特定の形態または構成に限定すべきではない。本発明は特許請求の範囲によってのみ限定される。
【図面の簡単な説明】
【００３３】
【図１】ＣＰＵ、ハードウェアベースの転送テーブル、および学習フィルタを含むネットワークノードを示す図である。
【図２】図１からの学習フィルタの一実施形態を示す図である。
【図３】処理資源の利用を管理するための技術のプロセスフロー図である。
【図４】学習に向けて送られるパケットをフィルタ処理するように構成された分散型設計を備えたネットワークノードの一実施形態を示す図である。
【図５】分散型設計を備えたネットワークノードの別の実施形態を示す図である。
【図６】ＣＰＵの処理資源の利用を管理するための方法のプロセスフロー図である。
【図１】
2007525883.tif 000003
【図２】
2007525883.tif 000004
【図３】
2007525883.tif 000005
【図４】
2007525883.tif 000006
【図５】
2007525883.tif 000007
【図６】
2007525883.tif 000008