(57)【要約】【課題】  ＴＣＰトラフィックのフロー特性に基づいてキャッシング・ルックアップを行うこと。【解決手段】  ネットワーク・デバイスの分類システムはキャッシュを含み、このキャッシュは、セッションにおける最初の「フリークエント・フライヤ」パケットに応答して、ＴＣＰ／ＩＰパケットの予め定義された特性と関連付けられた動作との間のマッピングを格納する。そのセッションにおいて、続いて受信されるパケットからの選択された特性は、予め定義された特性と相関され、選択された特性と予め定義された特性とが一致した場合には、格納された動作が受信パケットに適用され、このようにして、後続するパケットに必要とされる処理が減少される。キャッシングに選択されるパケットは、データ・パケットとすることができる。特性が一致しなかった場合には、分類システムの完全パケット検索を用いて受信パケットに適用される動作を決定する。【選択図】      図１
2007534203.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークのトラフィックを管理する方法であって、
（ａ）ネットワーク・デバイス内に、パケットに関連付けられ少なくとも予め定義された特性と、前記予め定義された特性の選択されたものと一対となる動作とを含むキャッシュを設けるステップと、
（ｂ）前記ネットワーク・デバイスにおいて、少なくとも１つのパケットを受信するステップと、
（ｃ）前記受信パケットから、前記少なくとも予め定義された特性と同様な特性を選択するステップと、
（ｄ）前記受信パケットから選択された特性を前記予め定義された特性と相関させるステップと、
（ｅ）前記相関から得た結果を用いて、前記受信パケットを処理するステップと、
を含む方法。
【請求項２】
前記処理が、前記受信パケットの特性が前記少なくとも予め定義された特性と一致する場合に、前記一対となる動作を前記受信パケットに対して実行するステップを含む、請求項１に記載の方法。
【請求項３】
前記少なくとも予め定義された特性が、インターネット・プロトコル（ＩＰ）宛先アドレス（ＤＡ）、ＩＰソース・アドレス（ＳＡ）、伝送制御プロトコル（ＴＣＰ）宛先ポート（ＤＰ）、及びＴＣＰソース・ポート（ＳＰ）を含む、請求項１又は請求項２に記載の方法。
【請求項４】
（ｂ）において受信された前記少なくとも１つのパケットが、同じセッションに属する短いバーストのパケット内にある１つのパケットであるというフリークエント・フライヤ基準を満たす、請求項１から請求項４までのいずれか１項に記載の方法。
【請求項５】
プロセッサと、
前記プロセッサに動作可能に結合されたキャッシュであって、パケットの予め定義された特性と動作との間のマッピングを格納し、そこでは、選択されたパケットの特性を前記予め定義された特性と相関させる第１のプログラムを前記プロセッサが実行する、キャッシュであって、前記選択されたパケットからの特性が前記予め定義された特性と一致する場合に、前記予め定義された特性に関連付けられた動作を前記選択されたパケット上で実行させる、キャッシュと
を含むシステム。
【請求項６】
前記予め定義された特性が、ソース・アドレス（ＳＡ）、宛先アドレス（ＤＡ）、ソース・ポート（ＳＰ）、及び宛先ポート（ＤＰ）を含む、請求項５に記載のシステム。
【請求項７】
動作可能に前記プロセッサに結合され、完全パケット検索のためのデータ構造を格納するメモリをさらに含み、前記プロセッサに、前記データ構造をアクセスさせ、前記予め定義された特性と前記選択されたパケットからの特性との間に不一致が生じた場合には、前記選択されたパケットに前記データ構造内に格納された動作を課すようにする、第２のプログラムを、前記プロセッサが実行する、請求項５又は請求項６に記載のシステム。
【請求項８】
前記第２のプログラムが、完全一致アルゴリズム、最長プレフィックス一致アルゴリズム、又は、ソフトウェア管理ツリー・アルゴリズムのうちの１つを含む、請求項７に記載のシステム。
【請求項９】
前記データ構造が、直接テーブル及びパトリシア・ツリーを含む、請求項１４に記載のシステム。
【請求項１０】
コンピュータ・システムにロードされ、実行されたとき、前記コンピュータ・システムに、請求項１から請求項４のいずれか１項に記載された方法の全ステップを実行させるコンピュータ・プログラム・コードを含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、通信ネットワークに関し、具体的には、前述のネットワークに接続されたデバイスのデータ管理能力を向上させるために用いられる装置及び方法に関する。
【背景技術】
【０００２】
以下の説明は、ネットワーク・データ通信、及びこのような通信ネットワークに用いられるスイッチ、ネットワーク・プロセッサ、アダプタ、ルータなどに関する知識を前提とする。具体的には、この説明は、ネットワーク操作を層に分割するネットワーク・アーキテクチャのＩＳＯモデルに精通していることを前提とする。ネットワーク・アーキテクチャのＩＳＯモデルに基づく典型的なアーキテクチャは、ネットワーク操作を層に分割する。IＳＯモデルに基づく典型的なアーキテクチャは、物理的経路又は媒体である（「Ｌ１」と呼ばれることもある）層１から延び、これを通って信号が上位へ送られ、層２、層３、層４などを通過して層７まで到達するが、最後に挙げた層７は、ネットワークにリンクされたコンピュータ・システム上で稼動しているアプリケーション・プログラミング層である。この文書においては、Ｌ１、Ｌ２などと言及する場合は、ネットワーク・アーキテクチャの対応する層を指すことを意図している。ここに開示することはまた、このようなネットワーク通信において、パケット及びフレームとして知られるビット・ストリングの基礎的な理解を前提としている。
【０００３】
通信ネットワークの一般的なモデルには、ファイアウォール又は同様な構造を介してインターネットとしてよく知られるワールド・ワイド・ウェブ（ＷＷＷ）のようなパブリック・ネットワークに接続される１つ又はそれ以上のプライベート・ネットワークを含むものがある。以下でネットワーク・デバイスと呼ばれる、ネットワークに接続されたデバイス間の通信は、そのプライベート・ネットワーク内のみでなされるようにしてもよいし、或いは、ファイアウォールを通してインターネットにより、遠隔のプライベート・ネットワークに対してなされるようにしてもよい。
【０００４】
ネットワーク・デバイス間の情報交換及びネットワーク管理のためには、何らかの形式のプロトコルが必要である。プロトコルは、ネットワークへのアクセスを管理する一組の規則として特徴付けられ、場合によっては、ネットワークを動作可能な状態に維持するために用いられる。イーサネット、トークン・リングなどのようにプライベート・ネットワーク上で用いることができる標準的なプロトコルが幾つかあるが、殆どの場合において、プライベート・ネットワークには、使用することを望むいずれのプロトコルを用いてもよい。唯一考えられる制約は、プライベート・ネットワーク上のネットワーク・デバイスがそのプロトコルを認識しなければならないということであり、さもないと、該ネットワーク・デバイスは満足に動作すなわち通信を行うことができない。
【０００５】
プライベート・プロトコルは一様性が乏しいため、さらなる論議はインターネット上で用いられる公共プロトコルに限定される。公共プロトコルは、ＴＣＰ（伝送制御プロトコル）／ＩＰ（インターネット・プロトコル）と呼ばれている。これは、インターネット上の通信に用いられる周知のプロトコルである。
【０００６】
ネットワーク・プロセッサのような、ＩＰルーティング・アプリケーションを稼動させるネットワーク・デバイスの性能についての１つの尺度は、１秒といった一定の時間間隔内に処理すなわち分類されるパケットの数に基づくものである。これは次いで、必要とされる分類形式に影響されることになる。ルーティング目的のために、ネットワーク分類におけるパケットは、層２（Ｌ２）、層３（Ｌ３）、層４（Ｌ４）、さらにその上位層にグループ化することができる。各層についての計算条件は、Ｌ２からＬ４、さらに上位層へ行くに従って増加する。
【０００７】
例えば、Ｌ２分類は、メディア・アクセス制御（ＭＡＣ）テーブルとの一致を見出す程度の簡単なものとすることができる。この手順では、ＭＡＣソース・アドレス（ＳＡ）又はＭＡＣ宛先アドレス（ＤＡ）のパケットを、テーブル内のアドレスと比較することを必要とする。より一般的な手法は、完全一致アルゴリズム（Full Match Algorithm）、Ｌ２分類タスクを用いることである。
【０００８】
Ｌ３分類は、ルーティング及びその他のＬ３機能に用いることができる。Ｌ３分類は、ルーティング目的で用いられる場合には、パケット内の情報とデータベース内の情報との間で最長プレフィックスの一致を見出すことが必要である。最長プレフィックス一致アルゴリズムはＬ３分類のために用いられる。最長プレフィックス一致アルゴリズム（Longest Prefix Match Algorithm）は、完全一致アルゴリズムよりも複雑であるため、より多くの計算時間を必要とする。
【０００９】
Ｌ４分類は、相互に交わる範囲が複雑になる可能性のあるフィルタ規則を実行するといった複雑な機能を含む。この分類形式は、通常、比較的長い時間間隔を用いてパケットを処理する複雑なアルゴリズムを必要とする。パケット処理のための時間間隔は、Ｌ４より上位のルックアップ又は分類においてさらに増加する。Ｌ４分類より上位の処理は、ディープ・パケット処理と呼ばれる。
【００１０】
【特許文献１】米国特許第６，４０４，７５２号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述のことを考慮すると、ネットワーク・プロセッサのようなネットワーク・デバイスのスループット（毎秒処理されるパケット数）は、デバイスによって実行されるルックアップ又は分類の形式によって決まる。結果として、Ｌ３及びさらに上位のルックアップが必要な場合には、ネットワーク・プロセッサの計算リソースに負荷がかかる。さらに、ネットワーク・プロセッサは、毎秒何百万ものパケットについてルックアップを実行することを必要とする場合が多く、これがさらに計算リソースに負荷をかける。ネットワーク・プロセッサのリソースに負荷がかかると、これらがスループット要件を満たしながら、同時にＬ３及びさらに上位のルックアップ処理を行うことができる可能性は、相対的に低くなるように見える。従って、ネットワーク・プロセッサのようなネットワーク・デバイスが、性能要件を満たすスループットを維持しながら、同時にＬ３及びさらに上位のルックアップ処理を行うことを可能にするリソースの必要性が存在する。
【課題を解決するための手段】
【００１２】
第１の態様においては、通信ネットワークのトラフィックを管理する方法が提供され、この方法は、（ａ）ネットワーク・デバイス内に、パケットに関連付けられ少なくとも予め定義された特性と、前述の予め定義された特性の選択されたものと一対となる動作とを含むキャッシュを設けるステップと、（ｂ）前述のネットワーク・デバイスにおいて、少なくとも１つのパケットを受信するステップと、（ｃ）前述の受信パケットから、該少なくとも予め定義された特性と同様な特性を選択するステップと、（ｄ）前述の受信パケットから選択された特性を該予め定義された特性と相関させるステップと、（ｅ）前述の相関から得た結果を用いて、該受信パケットを処理するステップと、を含む。
【００１３】
この処理は、前述の受信パケットの特性が、少なくとも予め定義された特性と一致する場合に、一対となる動作を該受信パケットに対して実行するステップを含むことが好ましい。
【００１４】
少なくとも予め定義された特性は、インターネット・プロトコル（ＩＰ）宛先アドレス（ＤＡ）、ＩＰソース・アドレス（ＳＡ）、伝送制御プロトコル（ＴＣＰ）宛先ポート（ＤＰ）、及びＴＣＰソース・ポート（ＳＰ）を含むことが好ましい。
【００１５】
相関動作は比較を含むことが好ましい。
【００１６】
メモリ内に、パケットに関連付けられ予め定義された特性と、実行されるべき動作とのマッピングを提供するステップと、分類されるべきパケットを受信するステップと、受信パケットの選択された特性を該予め定義された特性と相関させるステップと、該選択された特性が該予め定義された特性と一致する場合には、格納された動作を前述の受信パケットに実行するステップとを含む方法を有することが好ましい。
【００１７】
相関動作は比較を含むことが好ましい。
【００１８】
予め定義された特性は、ソース・アドレス（ＳＡ）、宛先アドレス（ＤＡ）、ソース・ポート（ＳＰ）、及び宛先ポート（ＤＰ）を含むことが好ましい。
【００１９】
受信パケットはデータ・パケットを含むことが好ましい。
【００２０】
予め定義された特性に関連付けられた、格納された動作は、パケット群の第１のパケットからのみ更新されるようにすることが好ましい。
【００２１】
格納された動作は、パケット群の第１のパケットに続いて、全パケットに実行されることが好ましい。
【００２２】
第２の態様においては、プロセッサと、前述のプロセッサに動作可能に結合されたキャッシュであって、パケットの予め定義された特性と動作との間のマッピングを格納し、そこでは、選択されたパケットの特性を該予め定義された特性と相関させる第１のプログラムを前述のプロセッサが実行する、キャッシュであって、該選択されたパケットからの特性が該予め定義された特性と一致する場合に、該予め定義された特性に関連付けられた動作を前述の選択されたパケット上で実行させる、キャッシュとを含むシステムが提供される。
【００２３】
予め定義された特性は、ソース・アドレス（ＳＡ）、宛先アドレス（ＤＡ）、ソース・ポート（ＳＰ）、及び宛先ポート（ＤＰ）を含むことが好ましい。
【００２４】
プロセッサはネットワーク・プロセッサを含むことが好ましい。
【００２５】
このシステムは、動作可能に前述のプロセッサに結合され、完全パケット検索のためのデータ構造を格納するメモリをさらに含み、前述のプロセッサに、該データ構造をアクセスさせ、予め定義された特性と選択されたパケットからの特性との間に不一致が生じた場合には、前述の選択されたパケットに前述のデータ構造内に格納された動作を課すようにする、第２のプログラムを、該プロセッサが実行することが好ましい。
【００２６】
選択されたパケットは受信パケットを含むことが好ましい。
【００２７】
第２のプログラムは完全一致アルゴリズムを含むことが好ましい。
【００２８】
第２のプログラムは最長プレフィックス一致アルゴリズムを含むことが好ましい。
【００２９】
第２のプログラムはソフトウェア管理ツリー・アルゴリズムを含むことが好ましい。
【００３０】
メモリはプロセッサ内部にあることが好ましい。
【００３１】
メモリはプロセッサ外部にあることが好ましい。
【００３２】
データ構造は直接テーブル及びパトリシア・ツリーを含むことが好ましい。
【００３３】
パケットの予め定義された特性と、全ての特性値の組のサブセットに対して実行されるべき動作との間のマッピングを格納するメモリと、受信パケットの特性を該予め定義された特性に相関させ、その特性が該予め定義された特性と一致している場合には、該動作を前述の受信パケットについて実行するコントローラとを含むシステムを有することが好ましい。
【００３４】
第３の態様においては、コンピュータ・システムにロードされ、実行されたとき、前述のコンピュータ・システムに、第１の態様に記載された方法の全ステップを実行させるコンピュータ・プログラム・コードを含むコンピュータ・プログラムが提供される。
【００３５】
受信パケットの特性を、全ての可能性ある特性値のサブセットを含むテーブル内の特性と相関させる命令、及び、該受信パケットの特性と該テーブル内の特性とが一致した場合には、前述のテーブル内に格納された動作を該受信パケットに実行する命令を含むコンピュータ・プログラムが記録された媒体を含むプログラム製品の形態でコンピュータ・プログラムを提供することが好ましい。
【００３６】
プログラムは、特性及び関連付けられた動作を含むテーブルを生成する命令をさらに含むことが好ましく、このテーブルを維持するための命令もさらに含むことが好ましい。
【００３７】
維持するための命令が、さらに、古くなったエントリを削除して、新規なエントリを挿入する命令を含むことが好ましい。
【００３８】
（ｂ）において受信された少なくとも１つのパケットは、同じセッションに属する短いバーストのパケット内にある１つのパケットであるというフリークエント・フライヤ基準を満たすものであることが好ましい。
【００３９】
システムは、動作可能にメモリに結合されたエージング機構をさらに含み、前述のエージング機構は、周期的に古いエントリを前述のメモリから削除することが好ましい。
【００４０】
古いエントリは、予め定義された基準に基づいて削除されることが好ましい。
【００４１】
予め定義された基準は、前述のメモリが一杯になり、新規なエントリを追加することが必要になった場合に、最近の使用が最も少ないエントリを削除することを含むことが好ましい。
【００４２】
従って、通信ネットワークのパケットを分類する方法が提供され、（ａ）ネットワーク・デバイスにおいてパケットを受信するステップと、（ｂ）受信パケットに存在するデータ・パケットを求めるステップと、（ｃ）パケットの予め定義された特性と、この予め定義された特性の選択されたものに関連付けられた動作とを格納するキャッシュを設けるステップと、このように求められた各データ・パケットについて、前述の各データ・パケットの選択された特性を、前述のキャッシュにおける予め定義された特性と相関させるステップと、該予め定義された特性の１つと一致する選択された特性をもつ各データ・パケットについて、前述の予め定義された特性の１つに関連付けられた動作を、前述の各データ・パケットに課すステップと、を含むことが好ましい。
【００４３】
パケットはＴＣＰ／ＩＰパケットを含むことが好ましい。
【００４４】
上述の求める動作は、さらに、ＴＣＰヘッダ内の制御ビットを調べるステップと、前述の制御ビットの選択されたものが第１の状態に設定されている場合には、ＩＰヘッダにおける長さフィールドを調べてその値を求めるステップと、該ＴＣＰヘッダにおけるデータ・オフセット・フィールドの値に４を乗じるステップと、該長さフィールドの値から乗算の結果を減算するステップと、を含むことが好ましい。
【００４５】
第１の状態は論理「０」を有することが好ましい。
【００４６】
前述の制御ビットの選択されたものは、ＳＹＮ、ＦＩＮ、及びＲＳＴを含むことが好ましい。
【００４７】
本発明の実施形態は、ネットワーク・デバイスのルックアップ性能を改善するアクセレレータを提供し、それによって、該ネットワーク・デバイスがこれまで可能であったよりも効率的に、パケットを分類することができるようにすることが好ましい。
【００４８】
アクセレレータは、キャッシュと呼ばれるメモリを含むことができ、（後述する）４タプルと呼ばれるＴＣＰパケットの特性が格納されている。４タプルは、インターネット・プロトコル（ＩＰ）ＳＡ、ＩＰ  ＤＡ、伝送制御プロトコル（ＴＣＰ）ソース・ポート（ＳＰ）、及び宛先ポート（ＤＰ）を含む。４タプルの各々に関連付けられた動作もまた格納されている。一致論理は、受信パケットにおける４タプルをキャッシュ内の４タプルと相関させる。一致があった場合には、キャッシュ内の４タプルに関連付けられた動作が受信パケットに適用される。一致がなかった場合には、その形式のパケットを分類するのに用いられる通常の方法が続く。フロー・キャッシュを実装し、動的にエージングする特定の方法及び装置が提供される。キャッシュと関連ハードウェア及び／又はソフトウェアは、「フロー・キャッシュ」と呼ばれる。
【００４９】
フロー・キャッシュを用いることによって、ネットワーク・プロセッサは、これまで可能であったよりも速い速度でパケットを分類することができる。
【発明を実施するための最良の形態】
【００５０】
ここで、本発明の好ましい実施形態を、単なる一例に過ぎないものとして、添付図面を参照しながら提供する。
本発明の好ましい実施形態は、フロー・キャッシングを用いて通信ネットワークにおけるパケットの分類を迅速化し、それによってネットワーク・デバイスが特定の単位時間内に処理できるパケット数を向上させる。このことは、ＴＣＰトラフィックにおいて良好に機能するので、そのような環境において説明する。しかしながら、このことはトラフィックがバースト状態で発生するようになる通信プロトコルのいずれにおいても良好に機能するので、この説明は、本発明の範囲を限定することにはならない。例えば、ＤＮＳサーバ間のＵＤＰトラフィック（プロトコル１７）はバースト状態で発生するので、これもまたフロー・キャッシングから利益を得ることができると考えられている。本発明の一般的な説明としては、通常の手法は、常に最も集中しているフローを識別し、そのフローについてのキャッシュのみに進むことである。同等に重要なことは、集中化しない種類のパケットのキャッシュを避けることである。
【００５１】
最も集中するフローすなわちパケットは、比較的短期間の時間間隔で発生するバースト状態となり、本明細書においては「フリークエント・フライヤ」と呼ぶ。
【００５２】
図１は、本発明の教示を展開するネットワーク１００を極めて簡略化して示す。このネットワークは、インターネット又は他のネットワーク１０２に接続された複数のエッジ・デバイス１０４を含む。エッジ・デバイス１０４の各々は、サブネットワーク１０６と接続され、該サブネットワークは、建物、キャンパスなどにいるユーザを相互接続するプライベート・ネットワークとすることができる。このようなサブネットワークは当技術分野においては周知であり、これ以上の説明は行わない。サブネットワーク１０６は、ブリッジ・デバイス１１０によって別のサブネットワークに接続される。エッジ・デバイス１０４は、ルータ・スイッチ又はこの形式のパケット取扱いに用いられるあらゆる他ネットワーク・デバイスとすることができる。エッジ・デバイスの各々には、ネットワーク・プロセッサ１０８が与えられている。デバイスの種類によって、１つ又はそれ以上のネットワーク・プロセッサを用いることができる。ブリッジ・デバイス１１０はまた、ルーティング機能の実行に用いられるネットワーク・プロセッサ１０８を含むことができる。１０４及び１１０のようなネットワーク・デバイスの使用は当技術分野において周知であり、従って、これらのエンティティについて、これ以上の説明は提供しない。
【００５３】
図２は、図１に示すネットワーク・プロセッサのブロック図を示す。ネットワーク・プロセッサは、本発明の教示によるものを含むＩＰルーティング・アプリケーションを実行し、フレームをインターネットから受信したときにこれらを分類する。層２（ＭＡＣテーブルに一致を見出す）、層３（ルーティングのためのプレフィックスの最長のものの一致を見出す、層４（プロトコル・パラメータの交差範囲が複雑になる可能性のあるフィルタ規則の実施）、及びさらに上位層のルックアップ（例えば、いわゆるディープ・パケット処理のようなアプリケーション層まで）を含む異なる分類タスクが、ネットワーク・プロセッサによって実行される。層４分類のような分類の幾つかは、複雑なアルゴリズムが係っているために、比較的長い処理時間を必要とする。本発明は、層３、層４、及びさらに上位層の分類を実行するのに必要な平均時間を大幅に減少させる装置及び技術を提供する。本発明の好ましい実施形態においては、分類機能を実行するために、どのような形式のネットワーク・プロセッサも用いることができるが、ＩＢＭ（Ｒ）社によって開発され、販売されているＰｏｗｅｒＮＰが用いられる。ＰｏｗｅｒＮＰは、基板上に集積された複数の機能単位を含む単一チップ・デバイス１０である。機能単位は、上側構成及び下側構成に配置され、ここで、上側構成（「イングレス」と呼ばれることもある）は、データ移送ネットワークからのチップに向けられた（チップまで又はチップ内に）データに関連するコンポーネントを指し、「下側」構成（「エグレス」と呼ばれることもある）は、外向きの形態で、チップからデータ伝送ネットワークの方向に（チップから離れる方向に、又はネットワークに向けて、かつ、ネットワーク内に）データを伝送する機能をもつコンポーネントを指す。データ・フローは、上側構成及び下側構成それぞれの配置に従う。結果として、図２のシステムには、上側データ・フロー及び下側データ・フローがある。上側、すなわちイングレス構成要素は、エンキュー・デキュー・スケジューリングＵＰ（ＥＤＳ−ＵＰ）論理１６、複数の多重化ＭＡＣ−ＵＰ（ＰＭＭ−ＵＰ）１４、スイッチ・データ・ムーバ・アップ（ＳＤＭ−ＤＮ）１８、システム・インターフェースＳＩＦ（２０）、データ・アライン・シリアル・リンクＡ（ＤＡＳＬ  Ａ）２２、及び、データ・アライン・シリアル・リンクＢ（ＤＡＳＬ  Ｂ）２４を含む。ＤＡＳＬ  Ａ２２及びＤＡＳＬ  Ｂ２４は、ネットワーク・プロセッサを、多くのネットワーク・プロセッサを必要とする多数のネットワーク接続をもつシステムにおけるスイッチに接続する。
【００５４】
さらに図２を参照すると、システムの下側（すなわち、エグレス）に示されるコンポーネントは、データ・リンク（ＤＡＳＬ−Ａ）２６、ＤＡＳＬ−Ｂ２８、システム・インターフェースＳＩＦ３０、スイッチ・データ・ムーバ（ＳＤＭ−ＤＭ）３２、エンキュー・デキュー・スケジューラＥＤＳ−ＤＮ３４、及びエグレスのための複数の多重化ＭＡＣ  ＰＭＭ−ＤＮ３６を含む。ネットワーク・プロセッサ・チップ１０はまた、複数の内部静的アクセスメモリ・コンポーネント（Ｓ−ＲＡＭ）、エグレス・スケジューラとしても知られるトラフィック管理スケジューラ（ＴＲＡＦＦＩＣ  ＭＧＴ  ＳＣＨＥＤＵＬＥＲ）４０、及び、内蔵プロセッサ複合システム１２を含む。内蔵プロセッサ複合システムは、分類機能を実行するために用いられる複数のプロセッサ及びコプロセッサを有する。インターフェース・デバイス３８は、それぞれのデータ移動ユニット（ＤＭＵ）バスによって、ＰＭＭ１４及び３６に結合される。インターフェース・デバイス３８は、イーサネット物理デバイス又は非同期伝送モード（ＡＴＭ）デバイスなどのような、（図示されていない）ネットワークに接続するのに適したあらゆるハードウェア装置であってよい。ＰｏｗｅｒＮＰのさらに詳細な説明は、本明細書において全体を引用によりここに組み入れる特許文献１に与えられる。
【００５５】
前述のように、インターネット上で用いられるプロトコルは、ＴＣＰ／ＩＰプロトコルである。本発明は、このプロトコルを用いるデータ・パケットに関して説明されている。ＴＣＰ／ＩＰプロトコルは、本発明において「フリークエント・フライヤ」と呼ばれる特定のパケットを有し、これは常にバースト状態で発生する。各プロセッサは、受信したパケットに関連して取られる動作を含む規則により予めプログラムされており、特定の規則と一致する。本発明の教示によれば、フリークエント・フライヤ及びその関連付けられた動作がキャッシュに配置されており、そのバーストの後続するメンバは、そのキャッシュ内に格納された情報に基づいて処理されることができる。結果として、本発明を用いるシステムのスループットが向上する。
【００５６】
キャッシュ内に、パケットについての一致が見出されなかった場合には、ネットワーク・プロセッサにおいて与えられた標準的な分類システム及び方法が続くことに注目すべきである。標準的な分類システム及び方法は、キャッシュがパケットを処理するのにかかる時間よりも多くの時間を必要とする。結果として、キャッシュは、標準的な分類システムと関連付けられた待ち時間を減少させることになる。
【００５７】
図４は、ヘッダ部４０２及びペイロード４０４を含むＴＣＰ／ＩＰパケット又はフレーム４００のグラフ図を示す。ＴＣＰ／ＩＰフォーマットは従来技術において周知である。従って、フォーマットのうちの本発明に係わる部分のみが、さらに論じられる。本発明に関連するフォーマットの部分は、ヘッダ４０２である。ヘッダ部４０２は、ＴＣＰ部及びＩＰ部の両方を含む。
【００５８】
図６は、ヘッダのＩＰ部のＩＰヘッダ・フォーマット６００を示す。ＩＰヘッダ・フォーマットは従来技術において周知である。従って、ヘッダのうちの本発明にとって関心ある部分のみが論じられる。本発明に関連するＩＰヘッダ・フォーマットの部分は、プロトコルと表示が付されるサブフィールド、ＩＰソース・アドレスと表示が付されるサブフィールド、及び、ＩＰ宛先アドレスと表示が付されるサブフィールドである。次に論じられるように、ソース・アドレス（ＳＡ）及び宛先アドレス（ＤＡ）は、４タプルと呼ばれる４つのパラメータのうちの２つであり、後述するフロー・キャッシュ・コントローラへのエントリとして用いられる。プロトコル・サブフィールドはまた、伝送されているパケット形式（すなわちＴＣＰ）を識別するために用いられることに注目すべきである。
【００５９】
図５は、ＴＣＰヘッダ・フォーマット５００を示す。ＴＣＰヘッダ・フォーマットは、従来技術において周知であり、従って、本発明で用いられるフィールドのみが論じられる。用いられるフィールドは、ソース・ポート（ＳＰ）及び宛先ポート（ＤＰ）を含む。以下で論じられるように、ＩＰヘッダ・フォーマットからのＳＡ、ＤＡ、及び、ＩＰ  ＴＣＰヘッダ・フォーマットからのＳＰ、ＤＰは、フロー・キャッシュで用いられることになる４タプルとして知られている。さらに関心あるものとしては、番号５０２により識別される制御キー５０２がある。各キーは、伝送されているパケット形式を識別する１ビットのフィールドである。そのビットは、パケットを生じさせるソース・デバイスによって設定される。例えば、ＳＹＮと表示が付されたキーのビットが論理「１」に設定された場合には、そのパケットは同期パケットになる。５０２によって識別されるパケットは、ネットワーク・デバイス間で、セッションを確立することが必要とされる。
【００６０】
図３は、本発明の教示によるフロー・キャッシュ・システム３００の機能ブロック図を示す。フロー・キャッシュ・システムは、限定サイズの関連メモリを含み、このメモリはフローの特性とそのフローに対して取られるべき動作との間のマッピングを格納する。本発明の１つの実施形態においては、その特性とは４タプルの４つのコンポーネント、すなわちＩＰソース・アドレス（ＳＡ）、ＩＰ宛先アドレス（ＤＡ）、ＴＣＰ宛先ポート（ＤＰ）及びソース・ポート（ＳＰ）である。コントローラ３０２は、受信パケットからの特性（４タプル）を、関連付けられたメモリのコンテンツと相関させる。一致が見出された場合には、次いで、４タプルに対して格納された動作が、フレーム又はパケットに適用される又は課される。フロー・キャッシュ・システム３００から情報（すなわちパケットに関連して取られる動作）を抽出することで、最長プレフィックス一致又はソフトウェア管理ツリー・アルゴリズムのような従来のアルゴリズムを用いるよりもはるかに速く、パケットに対して取られるべき動作が決定される。ここで述べる説明は、層３及び層４の処理を対象とするものではあるが、これは、さらに、パケット・ヘッダからのＮフィールド（ＯＳＩモデルの１つ又はそれ以上の層）を連結して「ｎタプル」を作成することによって、層２又は他の処理を含むように拡大することもできる。例えば、層２の動作は、層２のヘッダ・フィールドを用いて本発明の層２形態に追加することができる。
【００６１】
本発明が効果的であるためには、キャッシュ・サイズを制御しなければならない。キャッシュ・サイズが大き過ぎる場合には、実際にシステムの性能を低下させることがある。キャッシュは、フリークエント・フライヤのバースト持続時間においてセッション情報を維持するだけの大きさがあれば十分である。実際のインターネット・トラフィックを調べると、この間隔は約１ミリ秒であることがわかる。この間隔をネットワーク・プロセッサによって扱われるフリークエント・フライヤのパケット・レートと共に用いて、必要とされるキャッシュ・サイズを計算することができる。
【００６２】
理想的には、キャッシュ・サイズは、内部の高速ＳＲＡＭ内に納めることができ、かつ、パケット処理に利用できる時間内で検索を行うのに十分なだけ小さいものであるべきである。キャッシュが大きくなればなるほど、検索に必要とされる時間が多くなることに注目されたい。
【００６３】
図７は、本発明の教示によるパケット処理アルゴリズム７００のフローチャートを示す。このアルゴリズムはネットワーク・プロセッサにおいて実行される。ネットワーク・パスによってサポートされる最大伝送単位（ＭＴＵ）に基づいて、大容量メッセージが複数のより小さなパケットにフラグメント化される結果として、データ・フレームが典型的にはバースト状態で伝送されるため、本発明の教示を用いる場合には、データ・フレームのみが処理の対象となることが好ましい。ＴＣＰ／ＩＰプロトコルのスイートにおけるＳＹＮ、ＦＩＮ、又はＲＳＴのような他のパケットは、典型的には、必要とされるネットワーク・パスの往復遅延により時間が分離されるため、これらの種類の連続パケットはキャッシュされない。従って、データ・パケットは、ＴＣＰヘッダのフラグ・ビット５０２（図５）及び、場合によりＩＰヘッダの長さフィールド並びにＴＣＰヘッダのデータ・オフセット・フィールドを調べることによって、データ・パケットであると識別することができる。フラグ・ビットはまた、制御ビットとも呼ばれ、これら両方は、本明細書においては互換的に用いられる。ＳＹＮ、ＦＩＮ、又はＲＳＴフラグ・セットのいずれかを有するパケットは、データ・パケットではない。ＴＣＰヘッダの制御フラグ・フィールドにおいて、これらのビット値のうちのどれも設定されていない（すなわち１に等しい）場合には、次いで、ＩＰヘッダの長さフィールドを調べなければならない。次いで、この値から、ＴＣＰヘッダのデータ・オフセット・フィールド（４を乗じたもの）を減算しなければならない。減算の結果がゼロより大きい場合には、データがパケットに存在する。或いは、０より大きい何らかの他の値を閾値として選択してもよい。その結果が、ＴＣＰパケットにデータが存在することを示す場合には、そのパケットはデータ・パケットであると考えられ、従ってフリークエント・フライヤであることになる。或いは、最初の段階として、イーサネット・ヘッダの長さフィールドのみを１，４００バイトといった固定値と比較してもよい。比較値より大きい場合には、そのパケットはデータ・パケットと考えられる。
【００６４】
図７を再び参照すると、アルゴリズムは開始ブロック７０２で始まり、７０４へと下ってそこでパケットが受信される。パケットが受信された後、ブロック７０６で幾つかの最初のチェックが実行され、パケットがフリークエント・フライヤであるか、従ってキャッシュ可能であるかを確認する。ブロック７０８においては、ＩＰ及びＴＣＰヘッダを調べることによってパケットがチェックされ、ＴＣＰパケットであるか確認する。ＴＣＰパケットでない場合には、完全パケット検索のための通常の転送パスが採用される（ブロック７１０）。通常の転送パスにおいては、パケットはネットワーク・プロセッサの完全パケット検索機構に転送される。この機構は、完全一致検索アルゴリズムでも、最長一致プレフィックス・アルゴリズムでも、又は、ソフトウェア管理ツリー・アルゴリズムでもよい。ブロック７０８を参照すると、パケットがＴＣＰ／ＩＰパケットである場合には、そのパケットをチェックし（ブロック７１２）、このパケットが前述のフリークエント・フライヤ基準によるデータ・パケットであるか確認する（ブロック７１４）。これがデータ・パケットでない場合には、ブロック７１６において、再び通常の転送パスをたどる。これがデータ・パケットである場合（ブロック７１４）には、次いで、ブロック７１８において、パケットからの４タプルを用いてキャッシュ・ルックアップが実行される。キャッシュに一致が見出された場合（ブロック７２０）には、次いで、キャッシュに格納された動作が実行される（ブロック７２４）。通常の転送パスに係わるルックアップは避けられる。ブロック７２０において一致が見出されなかった場合には、次いで、完全パケット検索への通常の転送パスが実行される。さらに、パケットの４タプル及びそのパケットに実行される動作を用いて、新規なキャッシュ・エントリ（ブロック７２６）がキャッシュに追加される。
【００６５】
ここで述べる説明から、キャッシュが、上で示した構造及び完全パケット検索アルゴリズムと併せて機能することにより、より効率的なパケット分類システムを提供することは明らかである。
【００６６】
システムが良好に機能するためには、キャッシュのコンテンツは周期的に変更されなければならない。これは、古いエントリを削除して、キャッシュに、より新しいエントリのためのスペースを作らなければならないということを意味する。１つの実施形態によれば、図８は、エージング・アルゴリズムのフローチャート８００である。エージング・アルゴリズムは、ネットワーク・プロセッサ上で実行され、周期的に関連メモリから古いエントリを削除する。このプログラムはブロック８０４で始まり、ブロック８０５へと下る。ブロック８０５においては、フロー・キャッシュがエージングされる頻度を制御する期間タイマーが初期化される。このタイマーは、フリークエント・フライヤの予測バースト間隔に対応する。ブロック８０６においては、方法は、チェック時間間隔（バースト・タイマーより短い）だけ待ち、次いで、そのチェック時間間隔の分だけ、期間タイマー値を減少させる。この時点で、層３又は層４データベースにおいて変更がなされているかチェックされる。チェック時間間隔において変更がなされていた場合には、そのキャッシュは無効であることになり、パージされるべきである。そのような場合には、キャッシュはパージされることになる（ブロック８１０）。次いで、処理はブロック８０５から継続し、新規な期間タイマーを開始させる。
【００６７】
データベースが変更されていなかった場合には（ブロック８０８）、処理はブロック８１２から継続する。期間タイマーが期限切れとなっているか（値がゼロに到達しているか）チェックがなされる。タイマーが期限切れとなっている場合には、キャッシュの全エントリがチェックされる（ブロック８１４）。タイマーが期限切れとなっていない場合には、処理はブロック８０６から継続する。前の期間間隔において用いられなかった各エントリは、キャッシュから除去される（ブロック８１６）。次いで、処理はブロック８０５から継続し、新規な期間タイマーを開始させる。
【００６８】
代替的な実施形態においては、エージング・プログラム８００を用いる代わりに、アルゴリズム７００をわずかに修正してエージング機能を実行することができる。ブロック７２６内で、追加されるべき新規なキャッシュ・エントリが利用できるスペースがない場合には、最近の使用頻度が最も低いキャッシュ・エントリを除去して新規なエントリをそこに追加することができる。
【００６９】
従来のアルゴリズム及びデータ構造を用いる代わりに、フロー・キャッシュを用いて通信ネットワークのパケットを分類することにより、パケットの分類に必要とされる時間が大幅に短くなり、結果として、システムのスループットが向上する。
【００７０】
本発明の例示的な実施形態について説明してきたが、当業者であれば、本発明の新規な教示及び進歩した用途から実質的に離れることなく、多くの修正が例示的な実施形態において可能であることを容易に理解するであろう。
【図面の簡単な説明】
【００７１】
【図１】本発明の教示を実施するネットワーク・デバイスをもつ通信ネットワークのブロック図を示す。
【図２】ネットワーク・プロセッサのブロック図を示す。
【図３】本発明の教示によるサブシステム（フロー・キャッシュ及びコントローラ）のブロック図を示す。
【図４】パケットのフォーマットのグラフ図を示す。
【図５】ＴＣＰヘッダのフォーマットを示す。
【図６】ＩＰヘッダのフォーマットを示す。
【図７】本発明の教示によるコンピュータ上で実行されるプログラムのフローチャートを示す。
【図８】本発明の教示によるフロー・キャッシュをパージするためのフローチャートを示す。
【符号の説明】
【００７２】
１００：ネットワーク
１０２：インターネット又はネットワーク
１０４：エッジ・デバイス
１０６：サブネットワーク
１０８：ネットワーク・プロセッサ
１１０：ブリッジ・デバイス
【図１】
2007534203.tif 000003
【図２】
2007534203.tif 000004
【図３】
2007534203.tif 000005
【図４】
2007534203.tif 000006
【図５】
2007534203.tif 000007
【図６】
2007534203.tif 000008
【図７】
2007534203.tif 000009
【図８】
2007534203.tif 000010
【手続補正書】
【提出日】平成17年3月4日(2005.3.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
通信ネットワークのトラフィックを管理する方法であって、
（ａ）ネットワーク・デバイス内に、パケットに関連付けられ少なくとも予め定義された特性と、前記予め定義された特性の選択されたものと一対となる動作とを含むキャッシュを設けるステップと、
（ｂ）前記ネットワーク・デバイスにおいて、少なくとも１つのパケットを受信するステップと、
（ｃ）前記受信パケットから、前記少なくとも予め定義された特性と一致する特性を選択するステップと、
（ｄ）前記受信パケットから選択された特性を前記予め定義された特性と相関させるステップと、
（ｅ）前記相関から得た結果を用いて、前記受信パケットを処理するステップと
を含み、
（ｂ）において受信された前記少なくとも１つのパケットは、同じセッションに属する短いバーストのパケット内にある１つのパケットであるというフリークエント・フライヤ基準を満たす、方法。
【請求項２】
前記処理が、前記受信パケットの特性が前記少なくとも予め定義された特性と一致する場合に、前記一対となる動作を前記受信パケットに対して実行するステップを含む、請求項１に記載の方法。
【請求項３】
前記少なくとも予め定義された特性が、インターネット・プロトコル（ＩＰ）宛先アドレス（ＤＡ）、ＩＰソース・アドレス（ＳＡ）、伝送制御プロトコル（ＴＣＰ）宛先ポート（ＤＰ）、及びＴＣＰソース・ポート（ＳＰ）を含む、請求項１又は請求項２に記載の方法。
【請求項４】
プロセッサと、
前記プロセッサに動作可能に結合されたキャッシュであって、パケットの予め定義された特性と動作との間のマッピングを格納し、そこでは、該プロセッサに選択されたパケットの特性を前記予め定義された特性と相関させる第１のプログラムを前記プロセッサが実行する、キャッシュであって、前記選択されたパケットからの特性が前記予め定義された特性と一致する場合に、前記予め定義された特性と関連付けられた動作を前記選択されたパケット上で実行させる、キャッシュと
を含み、
受信された前記少なくとも１つのパケットは、同じセッションに属する短いバーストのパケット内にある１つのパケットであるというフリークエント・フライヤ基準を満たす、システム。
【請求項５】
前記予め定義された特性が、ソース・アドレス（ＳＡ）、宛先アドレス（ＤＡ）、ソース・ポート（ＳＰ）、及び宛先ポート（ＤＰ）を含む、請求項４に記載のシステム。
【請求項６】
動作可能に前記プロセッサに結合され、完全パケット検索のためのデータ構造を格納するメモリをさらに含み、前記プロセッサに、前記データ構造をアクセスさせ、前記予め定義された特性と前記選択されたパケットからの特性との間に不一致が生じた場合には、前記選択されたパケットに前記データ構造内に格納された動作を課すようにする、第２のプログラムを、前記プロセッサが実行する、請求項４又は請求項５に記載のシステム。
【請求項７】
前記第２のプログラムが、完全一致アルゴリズム、最長プレフィックス一致アルゴリズム、又は、ソフトウェア管理ツリー・アルゴリズムのうちの１つを含む、請求項６に記載のシステム。
【請求項８】
前記データ構造が、直接テーブル及びパトリシア・ツリーを含む、請求項６に記載のシステム。
【請求項９】
コンピュータ・システムにロードされ、実行されたとき、前記コンピュータ・システムに、請求項１から請求項３のいずれか１項に記載された方法の全ステップを実行させるコンピュータ・プログラム・コードを含むコンピュータ・プログラム。
【国際調査報告】
2007534203.tif 000011
2007534203.tif 000012