(57)【要約】【課題】  チップ面積の増加、消費電力の増加、外部メモリバンド幅の不足等を招くことなくパケット処理速度を向上する。【解決手段】  本発明では、次の二つの手段を用いて、上記課題を解決する。一度ネットワークプロセッサで処理した処理結果をキャッシュしておくネットワークプロセッサアクセラレータを備え、当該アクセラレータにて、受信パケットに対してプロセスキャッシュ処理を行なう。【効果】  パケット処理速度の速いネットワーク装置を実現することができる。【選択図】  図１
2005117206.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークにパケットを送信または受信するためのネットワークインタフェースと、
受信パケットを次の転送先へ転送するための処理を行うネットワークプロセッサと、
該転送するための処理の際に参照されるテーブルを格納するテーブルメモリと
前記ネットワークプロセッサの処理結果が格納されるキャッシュメモリと、
該キャッシュメモリを参照して受信パケットに対して転送のための処理を行うネットワークプロセッサアクセラレータとを有し、
前記ネットワークプロセッサで既に処理された受信パケットと宛先アドレスが同じ受信パケットに対しては、前記ネットワークプロセッサアクセラレータにより転送のための処理を行なうことを特徴とするネットワーク装置。
【請求項２】
ネットワークにパケットを送信または受信するためのネットワークインタフェースと、
受信パケットを次の転送先へ転送するための処理を行う第１のプロセッサと、
該転送するための処理の際に参照されるテーブルを格納するテーブルメモリと、
該第１のプロセッサの処理結果が格納されるキャッシュメモリと、
該キャッシュメモリを参照して受信パケットに対して転送のための処理を行なう第２のプロセッサとを有し、
前記キャッシュメモリに格納された処理結果が行なわれたパケットと宛先アドレスが同じ受信パケットに対しては、前記キャッシュメモリに格納された処理結果を参照し、当該受信パケットに対して転送のための処理を行なうことを特徴とするネットワーク装置。
【請求項３】
請求項１に記載のネットワーク装置において、
更に第１のキャッシュメモリを内蔵した第１のネットワークプロセッサアクセラレータと、第２のキャッシュメモリを内蔵した第２のネットワークプロセッサアクセラレータと、前記第１のネットワークプロセッサアクセラレータに接続される第１のネットワークプロセッサと、前記第２のネットワークプロセッサアクセラレータに接続される第２のネットワークプロセッサと、スイッチファブリックと、該スイッチファブリックに接続される入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとを有し、
前記第１のネットワークプロセッサアクセラレータは前記ネットワークインタフェースと前記入力側スイッチファブリックインタフェースの間に、および前記前記第２のネットワークプロセッサアクセラレータは前記ネットワークインタフェースと前記出力側スイッチファブリックインタフェースの間に配置されることを特徴とするネットワーク装置。
【請求項４】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサが前記ネットワークプロセッサアクセラレータに内蔵されていることを特徴とするネットワーク装置。
【請求項５】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサが、前記テーブルメモリを内蔵することを特徴とするネットワーク装置。
【請求項６】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセサと前記ネットワークプロセッサアクセラレータとの間に、別のネットワークプロセッサアクセラレータが複数接続されたことを特徴とするネットワーク装置。
【請求項７】
請求項１に記載のネットワーク装置において、
キャッシュメモリを内蔵したネットワークプロセッサアクセラレータと、
該アクセラレータに接続されるネットワークプロセッサと、
スイッチファブリックと、
該スイッチファブリックに接続される入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとを有し、
該入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとの間で、前記ネットワークプロセッサアクセラレータを共有することを特徴とするネットワーク装置。
【請求項８】
請求項３に記載のネットワーク装置において、
前記第１のネットワークプロセッサアクセラレータと前記第２のネットワークプロセッサアクセラレータを同一のネットワークプロセッサアクセラレータで構成し、
前記第１のネットワークプロセッサと前記第２のネットワークプロセッサを同一のネットワークプロセッサで構成したことを特徴とするネットワーク装置。
【請求項９】
請求項１に記載のネットワーク装置において、
更に複数のネットワークプロセッサを有し、
当該複数のネットワークプロセッサと前記ネットワークプロセッサアクセラレータとの接続を切替えるためのインタフェース部を有することを特徴とするネットワーク装置。
【請求項１０】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサアクセラレータまたは前記ネットワークプロセッサに外付けされた、受信パケットを一時的に格納するパケットメモリを有することを特徴とするネットワーク装置。
【請求項１１】
請求項１０に記載のネットワーク装置において、
前記外付けのパケットメモリを前記ネットワークプロセッサアクセラレータと前記ネットワークプロセッサとで独立して備えることを特徴とするネットワーク装置。
【請求項１２】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の配線数ＮＡｉｎと、前記ネットワークプロセッサのパケットを受け取るインタフェース部の配線数ＮＰｉｎと、前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数ＮＰｏｕｔとの間に、ＮＰｉｎ ＋ ＮＰｏｕｔ ＞ ＮＡｉｎ  の関係が成立することを特徴とするネットワーク装置。
【請求項１３】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の配線数ＮＡｉｎと、前記ネットワークプロセッサのパケットを受け取るインタフェース部の配線数ＮＰｉｎと、前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数ＮＰｏｕｔとの間に、ＮＰｉｎ ＝ ＮＰｏｕｔ  の関係が成立することを特徴とするネットワーク装置。
【請求項１４】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサのパケットを受け取るインタフェース部の配線数ＮＰｉｎと、
前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数ＮＰｏｕｔとの間に、ＮＰｉｎ ＋ ＮＰｏｕｔ ＝ ＮＡｉｎの関係が成立することを特徴とするネットワーク装置。
【請求項１５】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の帯域幅ＢＷＡｉｎと、前記ネットワークプロセッサのパケットを受け取るインタフェース部の帯域幅ＢＷＰｉｎとの間に、ＢＷＰｉｎ ＜ ＢＷＡｉｎ  の関係が成立することを特徴とするネットワーク装置。
【請求項１６】
請求項１に記載のネットワーク装置において、
前記ネットワークプロセッサのパケットを受け取るインタフェース部の帯域幅ＢＷＰｉｎと、
前記ネットワークプロセッサのパケットを送り出すインタフェース部の帯域幅ＢＷＰｏｕｔとの間に、ＢＷＰｉｎ ＝ ＢＷＰｏｕｔ  の関係が成立することを特徴とするネットワーク装置。
【請求項１７】
パケットを受信する入力インタフェース部と、
受信パケットを一時的に保持するパケットメモリと、
受信パケットから必要な部位を切り出し抽出情報とするパケット解析部と、
受信パケットの転送処理に必要な処理結果を記憶するキャッシュメモリと、
該キャッシュメモリを参照して、受信パケットに対して適用すべき処理結果が存在するか否かを判定する手段と、
Ｖパケットを送信する出力インタフェース部とを有するネットワークプロセッサアクセラレータ。
【請求項１８】
請求項１７に記載のネットワークプロセッサアクセラレータにおいて、
受信パケットに対して施すべき処理結果が前記キャッシュメモリに存在しないキャッシュミスが発生した場合に、該キャッシュミスを処理する手段と、
ネットワークプロセッサに接続するためのＮＰ用インタフェースを備えることを特徴とするネットワークプロセッサアクセラレータ。
【請求項１９】
請求項１８に記載のネットワークプロセッサアクセラレータにおいて、
前記キャッシュミスを処理する手段が、
前記受信パケットの転送処理を行なう組み込みプロセッサと、
該組み込みプロセッサが転送処理に必要なルーティングテーブルを参照するためのインタフェースとを有することを特徴とするネットワークプロセッサアクセラレータ。
【請求項２０】
請求項１９に記載のネットワークプロセッサアクセラレータにおいて、
前記組み込みプロセッサで前記受信パケットの転送処理が処理できない場合には、該受信パケットを前記ＮＰ用インタフェースに転送することを特徴とするネットワークプロセッサアクセラレータ。
【請求項２１】
請求項１９に記載のネットワークプロセッサアクセラレータにおいて、
ネットワークプロセッサを内蔵したことを特徴とするネットワークプロセッサアクセラレータ。
【請求項２２】
請求項１８に記載のネットワークプロセッサアクセラレータにおいて、
前記キャッシュミスを処理するための手段を共有し、それ以外の前記パケット解析手段、前記キャッシュ関連の手段、前記送出パケット生成手段等を、入力側用、出力側用で独立して持つことを特徴とするネットワークプロセッサアクセラレータ。
【請求項２３】
パケット処理結果をキャッシュする手段を持つネットワークプロセッサ等において、
前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される２番目以降のパケットを管理するための二次テーブルとを持ち、
前記二次テーブルを、キャッシュミスパケットを管理する前記一次テーブルのエントリ数と同じだけの数用意し、それぞれの前記二次テーブルをエントリ数がすべて一定の同一値であることを特徴とするネットワークプロセッサ。
【請求項２４】
パケット処理結果をキャッシュする手段を持つネットワークプロセッサ等において、
前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される２番目以降のパケットを管理するための二次テーブルとを持ち、
前記二次テーブルを、結合リンク方式で管理することを特徴とするネットワークプロセッサ。
【請求項２５】
パケット処理結果をキャッシュする手段を持つネットワークプロセッサ等において、
前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される２番目以降のパケットを管理するための二次テーブルとを持ち、
前記二次テーブルを、ＣＡＭ(Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ)もしくはフルアソシアティブメモリを利用して管理することを特徴とするネットワークプロセッサ。
【請求項２６】
パケットを受信するためのインタフェース部と、
受信パケットを一時的に保持するパケットメモリと、
受信パケットから必要な部位を切り出し抽出情報とするパケット解析部と、
受信パケットの転送処理に必要な処理結果を記憶するキャッシュメモリと、
前記抽出情報から前記キャッシュを参照するためのアドレス生成手段と、
前記抽出情報から前記キャッシュを参照した結果、キャッシュに該当情報が存在するか否かを判定するための手段と、
前記キャッシュに該当情報が存在したときに前記該当情報からパケットを再構築するための手段と、
前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される２番目以降のパケットを管理するための二次テーブルと、
前記一次テーブルに登録されているキャッシュミスパケットの処理をプログラマブルに実施するための外部ネットワークプロセッサにパケットと必要な情報を送出するためのインタフェース部と、
前記外部ネットワークプロセッサから処理済パケットと追加情報を受信するためのインタフェース部と、
前記処理済パケットの処理結果情報を前記キャッシュに登録するための手段と、
前記二次テーブルに登録されている該当パケットに前記の処理結果を適用するための手段と、
処理のすんだ前記一次テーブルおよび二次テーブルのエントリを開放するための手段と、
前記処理済パケットもしくは前記処理結果情報から送出パケットを生成するための手段と、
処理済のパケットを送出するためのインタフェース部とを持つことを特徴としたネットワークプロセッサアクセラレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大容量パケットの低遅延交換システム向けのルータやスイッチ等のネットワーク装置構成方法にかかわる技術である。また、ネットワーク装置においてパケットの要求処理を実施するネットワークプロセッサのパケット処理方式に関する技術である。特にネットワーク装置におけるＩＰ(Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ)パケット、ＭＡＣ(Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ)フレームの処理に効果的な技術である。
【背景技術】
【０００２】
通信分野においては、複数のネットワーク間を接続するためにルータやスイッチ等のネットワーク装置が用いられる。ネットワーク装置は、受信したパケットの宛先アドレスを調べてパケットの転送先を決定し、所定の転送先にパケットを転送する。世界のネットワークで送受信されるパケットの総量は増大する一方であり、ネットワーク装置のパケット転送性能も、トラフィック量の増大に伴って向上させていく必要がある。
【０００３】
図２に、従来のネットワーク装置の構成例を示す。図２において、ネットワーク装置は、入力側ネットワークインタフェース部１２、入力側ネットワークプロセッサ１５、入力側ネットワークプロセッサ用テーブルメモリ１６、入力側スイッチファブリックインタフェース部１４、スイッチファブリック部４０、出力側ネットワークインタフェース部２２、出力側ネットワークプロセッサ２５、出力側ネットワークプロセッサ用テーブルメモリ２６、出力側スイッチファブリックインタフェース部２４等を備える。ここで、ネットワークプロセッサとは、パケットの転送処理用に特化されたネットワーク装置専用プロセッサのことである。
【０００４】
入力側ネットワークインタフェース部１２は、ネットワークからパケットを受信し、受信したパケットを入力側ネットワークプロセッサ１５において処理する。前記ネットワークプロセッサ１５は、テーブルメモリ１６の中のルーティングテーブルを参照し、検索結果を基に入力側スイッチファブリックインタフェース部１４からスイッチファブリック４０の適切なポートにパケットを転送する。スイッチファブリック４０からパケットを受信した出力側スイッチファブリックインタフェース部２４は、出力側ネットワークプロセッサ２５においてＱｏＳ(Ｑｕａｌｉｔｙ Ｏｆ Ｓｅｒｖｉｃｅ)制御等必要なパケット処理を実施し、出力側ネットワークインタフェース部２２からネットワークにパケットを送信する。入力側、出力側を一体化させたネットワーク装置も存在する。
【０００５】
パケットの転送先を決定するためには、テーブルメモリ内に格納されるルーティングテーブルを検索する必要がある。一般にルーティングテーブルは巨大であり、ルーティングテーブルの検索処理は、ネットワーク装置でパケットを転送する際のボトルネックとなる処理である。従って、ネットワークプロセッサ自体の動作速度を高速化するための技術が種々開発されており、例えば、パケット処理を実施する組み込みプロセッサをマルチプロセッサ化する、マルチスレッドアーキテクチャの採用、パケット処理をＶＬＩＷ化する等の技術がある。
【０００６】
一方、アクセラレータを用いてネットワークプロセッサの動作を高速化する技術も開発されており、例えば、特開平０５−１９９２３０号公報(米国特許第５,４３４,８６３号)、特開２００１−８６１４９号公報には、メインプロセッサを補助してルーティング処理を高速化する技術が開示されている。また、特開２００２−２７１３６３号公報、特開２００２−２８１０７２号公報には、アクセラレータを用いてルーティングテーブル検索以外のプロセッサ処理（例えばＩＰｓｅｃ、ＶＰＮ、ＮＡＴ、不正パケット検出等）を行い、メインプロセッサの負担を軽くすることにより、間接的にルーティングテーブル検索を高速化する技術が開示されている。
【０００７】
【特許文献１】特開平０５−１９９２３０号公報
【０００８】
【特許文献２】特開２００１−０８６１４９号公報
【特許文献３】特開２００２−２７１３６３号公報
【特許文献４】特開２００２−２８１０７２号公報
【特許文献５】特願２００３−０４８７３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ネットワークプロセッサ自体を高速化することによってネットワーク装置のパケット処理速度を高速化する従来の方法では、現状のトラフィック量の増加に対応できるネットワーク装置を開発することは困難である。ネットワークプロセッサの高速化はネットワークプロセッサの巨大化を招き、消費電力の増加や放熱に伴う動作不良等の問題が発生するためである。
【００１０】
そこで、本発明の第１の課題は、プロセッサの肥大化を招くことなくパケット処理速度を向上することのできる新規なパケット処理技術を提供することにある。
また、本発明の第２の課題は、当該新規パケット処理技術に伴って付加的に発生する問題の少なくとも一つを解決することにある。
【課題を解決するための手段】
【００１１】
ネットワークプロセッサの巨大化を避けつつ、パケット転送処理を高速化する上では、プロセスキャッシュと呼ばれる技術が有望である。この技術においては、受信パケットに対する処理結果を記録するためのキャッシュがネットワークプロセッサに設けられる。プロセスキャッシュは、ネットワークプロセッサで初めて処理するパケットのみをネットワークプロセッサの内部に組み込むプロセッサにおいて処理し、その処理結果を記録して、以後同一と判断されるパケットにはプロセスキャッシュに記録してある結果を受信パケットに適用する。これにより、ネットワークプロセッサに内蔵された組み込みプロセッサでの処理を削減し、ネットワークプロセッサのパケット処理速度を向上する。
【００１２】
一方、プロセスキャッシュというアーキテクチャを採用することより、以下の課題が付加的に発生すると考えられる。
１）プロセスキャッシュアークテクチャを採用するネットワークプロセッサでは、処理速度向上が困難なパケット処理を組み込みプロセッサで実施し、残りの処理速度向上が容易な部分の処理はネットワークプロセッサの後段の論理で実施する。ネットワーク装置内でのパケット転送処理は、外部メモリ参照を伴う高度なプログラム処理が必要となる処理、すなわちネットワークプロセッサへの負担が大きな処理と、プロセッサの負担が比較的小さな処理とに分かれる。負担の大きな処理としては、ルーティングテーブル検索やアドレス変換テーブル検索、プロトコル処理等がある。負担の比較的小さな処理としては、ヘッダ情報の付加、削除、置換、修正といったビット列操作処理等がある。
【００１３】
一度キャッシュに処理結果が登録されたパケットと宛先アドレスが同一のパケットであれば、登録内容を利用して、ビット列操作のみによる高速な処理が可能であるが、未登録のパケットは、必ず組み込みプロセッサで処理速度向上が困難な部分の処理を行わなければならない。このため、大量の未登録パケットが次々に到着する状況が頻繁に発生する場合、組み込みプロセッサだけでは数が不足し、処理しきれない可能性がある。
２)  ネットワークプロセッサの組み込みプロセッサにおいて、処理結果記録用キャッシュに未登録のパケットを処理し始めてから、処理結果記録用キャッシュに登録するまでの期間に、同一処理結果となるパケットがひとつ以上到着する可能性がある。このとき、到着するパケットはすべて処理結果記録用キャッシュに登録されていないため、処理結果記録用キャッシュの登録データを利用できない。
【００１４】
上記１）に記載した問題を解決するためには、以下の構成のネットワーク装置を用いる。すなわち、ネットワークにパケットを送信または受信するためのネットワークインタフェースと、受信パケットを次の転送先へ転送するための処理を行う第１のプロセッサと、該転送するための処理の際に参照されるテーブルを格納するテーブルメモリと、該第１のプロセッサの処理結果が格納されるキャッシュメモリと、該キャッシュメモリを参照して受信パケットに対して転送のための処理を行なう第２のプロセッサとを備え、前記キャッシュメモリに格納された処理結果が行なわれたパケットと宛先アドレスが同じ受信パケットに対しては、前記キャッシュメモリに格納された処理結果を参照し、当該受信パケットに対して転送のための処理を実行させるネットワーク装置である。
【００１５】
上記２）に示した問題を解決するためには、キャッシュミス処理部を設けて、キャッシュミスが発生した場合でも、ネットワークプロセッサにパケットを転送せずにパケットの転送処理が可能なようにネットワーク装置ないしネットワークプロセッサアクセラレータを構成する。具体的には、外部のネットワークプロセッサに処理依頼中のパケットを管理する手段と、キャッシュミスしたパケットから処理依頼中のパケットと同じ処理結果が期待される受信パケットを識別して管理する手段とを備え、既にネットワークプロセッサに処理依頼済みのパケットに関しては、ネットワークプロセッサからの回答を待ち、受信パケットの処理を行う。これにより、ネットワークプロセッサに新たに処理を依頼することなく、キャッシュミスしたパケットの処理を可能とする。
【発明の効果】
【００１６】
本発明のネットワークプロセッサアクセラレータをネットワーク装置のパケット処理部として用いることにより、パケット処理速度の速いネットワーク装置を実現することができる。
【発明を実施するための最良の形態】
【００１７】
以下、より詳細な内容を実施例で示す。
【実施例１】
【００１８】
図１には、本実施例におけるネットワーク装置の構成例を示す。
ネットワークからパケットを送受信するためのネットワークインタフェース部１２、パケットをスイッチファブリック等に送信するための入力側スイッチファブリックインタフェース部１４、パケットを交換するスイッチファブリック４０、パケットをスイッチファブリック等から受信するための出力側スイッチファブリックインタフェース２４、入力側でパケット処理を実施するためのネットワークプロセッサアクセラレータ１３、ネットワークプロセッサ１５、前記ネットワークプロセッサ１５が参照するためのテーブルメモリ１６、出力側でパケット処理を実施するためのネットワークプロセッサアクセラレータ２３、ネットワークプロセッサ２５、前記ネットワークプロセッサ２５が参照するためのテーブルメモリ２６等で、ネットワーク装置は構成される。この他にネットワークプロセッサやネットワークプロセッサアクセラレータの要求に応じて処理を実施するホストプロセッサへのインタフェース等もある。
【００１９】
次に、図１に示したネットワーク装置における基本的なパケット処理の動作を説明する。まず、ネットワーク装置のネットワークインタフェース部１２において、ネットワークから光信号または電気信号を受信し、ネットワークプロセッサアクセラレータ１３がサポートするレイヤ２のデータリンク層フレームや、レイヤ３のネットワーク層のパケットに変換して転送する。図1中では、ネットワークを一本だけしか示していないが、ひとつのネットワークインタフェース部１２に複数のネットワークを接続しても良い。
【００２０】
ネットワークプロセッサアクセラレータ１３に到着したパケットは、処理速度向上が比較的困難な外部メモリ参照を伴う高度なプログラム処理、例えば、ルーティングテーブル検索やアドレス変換テーブル検索、プロトコル処理等を必要とし、同時に処理速度向上が比較的容易なビット列操作処理、例えばヘッダ情報の付加、削除、置換、修正といった処理も必要とする。
【００２１】
ネットワークプロセッサアクセラレータ１３は、前記の処理速度向上が困難なパケット処理結果を記録しておくプロセスキャッシュが設けられる。プロセスキャッシュは、キャッシュメモリとキャッシュを参照するための種々の手段を備えている。詳細は後段で説明する。ネットワークインタフェース部１２から受信したパケットが、プロセスキャッシュに登録されている処理結果を利用できると判定したら、ネットワークプロセッサアクセラレータ１３のみで処理速度向上が容易な残りのパケット処理を実施し、入力側スイッチファブリックインタフェース部１４へ送信する。ネットワークプロセッサアクセラレータ１３は、外部接続メモリ参照の影響によってパケット処理速度が低速化することを避けるために、受信したパケットを保持するためのパケットメモリを内蔵するが、オプションとして、外部に高速にネットワークプロセッサアクセラレータ１３とパケットの送受信を行うパケットメモリを持つ手段もある。
【００２２】
ネットワークプロセッサアクセラレータ１３は、処理速度向上の困難な部分のパケット処理結果がプロセスキャッシュに登録されていないパケットをネットワークインタフェース部１２から受信した場合、前記の処理速度向上が困難な部分のパケット処理結果を得るために、外部に接続するネットワークプロセッサ１５に前記パケットを渡す。ネットワークプロセッサ１５に渡すパケット形式は、ネットワークプロセッサアクセラレータ１３がネットワークインタフェース部１２から受信した形式の前にネットワークプロセッサアクセラレータ１３が内部で利用する専用ヘッダを付加する形式である。前記専用ヘッダには、例えば、ネットワークプロセッサ１５から処理結果が戻ってくるときに、どのパケットの処理結果が即座に判断できるようにパケットの整理番号や、ネットワークプロセッサ１５に依頼したい処理内容を示すフラグ等が含まれる。
【００２３】
また、ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の配線数をＮＡｉｎ、ネットワークプロセッサのパケットを受け取るインタフェース部の配線数をＮＰｉｎと、前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数をＮＰｏｕｔとしたとき、ＮＰｉｎとＮＰｏｕｔは、利用するネットワークプロセッサに依存する。通常、ＮＰｉｎ＝ＮＰｏｕｔの関係が成立している。また、本実施例１の構成は、図２に示す従来構成であればネットワークプロセッサが配置される位置にネットワークプロセッサアクセラレータを配置するため、従来構成との配線数互換性を保つためにＮＡｉｎ＝ＮＰｉｎとすることを基本とする。ただし、ネットワークプロセッサが受信するパケット数が、ネットワークプロセッサアクセラレータがネットワークから受信するパケット数に比べて十分少ない場合、ＮＰｉｎとＮＰｏｕｔの和がＮＡｉｎ程度となるように、つまり、入出力配線数の少ないネットワークプロセッサを用いるか、もしくは、ネットワークプロセッサの入出力配線数の合計は従来と同じで、ＮＡｉｎが従来比２倍となるネットワークプロセッサアクセラレータを用いて構成しても構わない。
【００２４】
また、ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の帯域幅をＢＷＡｉｎ、ネットワークプロセッサのパケットを受け取るインタフェース部の帯域幅をＢＷＰｉｎ、前記ネットワークプロセッサのパケットを送り出すインタフェース部の帯域幅をＢＷＰｏｕｔとしたとき、ＢＷＰｉｎとＢＷＰｏｕｔは、利用するネットワークプロセッサに依存する。通常、ＢＷＰｉｎ＝ＢＷＰｏｕｔの関係が成立している。前記ネットワークプロセッサアクセラレータはプロセスキャッシュにヒットするパケットは、前記ネットワークプロセッサに処理を依頼する必要がないため、ＢＷＰｉｎ＜ＢＷＡｉｎの帯域幅で十分である。
【００２５】
ネットワークプロセッサ１５は、パケットを受信すると、必要な処理のうち処理速度向上が困難な部分の処理を実行する。必要な処理は、前記のネットワークプロセッサアクセラレータ１３が付加するヘッダを参照して実行する方法、ヘッダの有無にかかわらず、ネットワークプロセッサ１５のプログラムに従って実行する方法がある。いずれにしても、ネットワークプロセッサ１５は、ネットワークプロセッサアクセラレータ１３が直接実行しないパケット処理を実行する。ネットワークプロセッサアクセラレータ１３が直接実行しないパケット処理としては、例えば、テーブルメモリ１６に格納される変換テーブルを参照してのパケットの経路検索(ルーティングテーブル検索)や、ＩＰｖ４(Internet Protocol Version 4)アドレスからＩＰｖ６(Internet Protocol Version 6)アドレスへの変換、ＩＰｖ６アドレスからＩＰｖ４アドレスへの変換、ＩＰｖ４アドレスから別のＩＰｖ４アドレスへの変換、ＩＰｖ６アドレスから別のＩＰｖ６アドレスへの変換、ＭＰＬＳ(Multi Protocol Label Switching)やＶＬＡＮ (Virtual Local Area Network)等のラベルの追加、交換、削除等やＲＩＰ(Routing Information Protocol)やＯＳＰＦ(Open Shortest Path First)等のプロトコル処理等がある。ここで、上述した各種の変換処理を行なうための変換テーブルを格納するメモリは、各種変換テーブル毎に専用のテーブルメモリが設けられることが多い。例えば、ルーティングテーブル検索用のテーブルメモリやＩＰｖ６アドレスからＩＰｖ４アドレスへの変換テーブルメモリなどである。前記のプロトコル処理やその他の処理でネットワークプロセッサ１５において処理しきれない部分のパケット処理はＰＣＩインタフェース等ネットワークプロセッサ１５に組み込まれているインタフェースを通じてホストプロセッサで処理する。ネットワークプロセッサアクセラレータ１３が機能として持っている、パケット処理速度向上が容易なヘッダの付加、削除、置換、修正等の処理は実行する必要はない。
【００２６】
ネットワークプロセッサ１５は、オプションとしてネットワークプロセッサアクセラレータ１３から送信されたパケットを保持するためのパケットメモリを内蔵しない場合、もしくは内蔵していても少量である場合は外部にパケットメモリを持つこともある。
ネットワークプロセッサ１５は、必要なパケット処理を実施した後、ネットワークプロセッサアクセラレータ１３が利用する専用ヘッダを処理結果に付加してネットワークプロセッサアクセラレータ１３に送信する。前記専用ヘッダには、ネットワークプロセッサアクセラレータ１３から該当パケットを渡されたときの整理番号や、処理結果の形式等が含まれる。前記処理結果の形式には、処理済パケット全体、処理済パケットのうちヘッダ部分だけ、プロセスキャッシュに登録する形式そのもの等がある。いずれの形式にするかは、ネットワークプロセッサのプログラムにより修正することができる。
【００２７】
ネットワークプロセッサアクセラレータ１３は、ネットワークプロセッサ１５から処理結果を受信すると、前記処理結果をプロセスキャッシュに登録するとともに、該当するパケットに処理結果を適用して、ヘッダの付加、削除、置換、修正等の処理は実施した後、スイッチファブリック４０用のヘッダを付加して入力側スイッチファブリックインタフェース１４へ処理済パケットを送信する。
スイッチファブリック４０への入力側スイッチファブリックインタフェース部１４は、パケットをスイッチファブリック４０に送信し、入力側のパケット処理が終了する。
【００２８】
スイッチファブリック４０には、ネットワークプロセッサアクセラレータ１３、ネットワークプロセッサ１５、テーブルメモリ１６、スイッチファブリックインタフェース部１４等で構成されるネットワークからの入力側のパケットを扱う部位が複数接続されている。また、スイッチファブリック４０には、前記のネットワークからの入力側のパケットを扱う部位と同数の、ネットワークへの出力側のパケットを扱う部位が接続されている。前記のネットワークへの出力側のパケットを扱う部位は、ネットワークプロセッサアクセラレータ２３、ネットワークプロセッサ２５、テーブルメモリ２６、スイッチファブリックインタフェース部２４等で構成されている。スイッチファブリック４０では、受信したパケットに付加されているスイッチファブリック４０用のヘッダを参照し、該当するスイッチファブリック４０の出力ポートに転送する。
【００２９】
ネットワーク装置の出力側ではスイッチファブリック４０から、出力側スイッチファブリックインタフェース部２４によってパケットを受信する。
【００３０】
ネットワーク装置の出力側では、以上に述べたネットワーク装置の入力側の処理と同様の処理を、スイッチファブリックインタフェース部２４からネットワークインタフェース部１２の方向へ向かって実施し、ネットワークインタフェース部１２でパケットまたはフレームを、光信号または電気信号に変換してネットワークに送出する。
なお、図示されていないが、本実施例のネットワークプロセッサアクセラレータおよびネットワークプロセッサは、基板上に実装するための配線用ピンを備えており、ネットワーク装置を構成する他のデバイスとは、互いに配線ピンに接続される配線を介して接続されている。例えば、図１のネットワークプロセッサアクセラレータ１３が基板実装される際には、複数の配線用ピンがネットワークプロセッサアクセラレータ１３に付加され、複数の配線ピンの一部がネットワークインタフェース部１２、入力側スイッチファブリックインタフェース部１４，ネットワークプロセッサ１５に割り当てられる。これは、出力側のネットワークプロセッサ２３や、他のデバイスについても同様である。
【００３１】
次に、ネットワークプロセッサアクセラレータの内部構成例について詳細に説明する。入力側でも、出力側でも同一のネットワークプロセッサアクセラレータを利用可能であるため、ここではネットワークプロセッサアクセラレータ１３を用いて説明を行う。
【００３２】
図３には、図１に示したネットワークプロセッサアクセラレータ１３の内部構成例を示す。ネットワークプロセッサアクセラレータ１３は、外部からパケットを受信し、内部で処理可能な形式に変換するための入力インタフェース１０１、受信したパケットを保持するパケットメモリ１０７、受信したパケットの解析を行い、内部処理に必要な情報のみを抽出するパケット解析部１０２、前記パケット解析部１０２で生成された抽出情報からプロセスキャッシュを参照して、その結果によりパケットの処理パスを変更するためのプロセスキャッシュ参照部１０３、プロセスキャッシュに登録されていなかったパケットを扱うキャッシュミス処理部１０４、ビット列操作によりパケットヘッダの付加、削除、置換、修正、パケットの再構築を行う後処理部１０５、処理済みパケットをネットワークプロセッサアクセラレータ１３の外部に出力するための出力インタフェース部１０６、外部に接続するネットワークプロセッサへの入出力形式を変換するための入出力変換器１０８等から構成される。この他にも、ＰＣＩ等のホストプロセッサとのインタフェース等を持つ。入出力変換器１０８は、外付けのネットワークプロセッサと接続するためのインタフェース機能も兼ねている。このようなインタフェース機能を備えることの利点としては、接続するネットワークプロセッサを交換可能にできる点がある。例えば、プロセスキャッシュに未登録のパケットが次々と大量に到着する状況の発生頻度が増加する場合等、接続するネットワークプロセッサを処理速度が速いものに交換することで対応可能である。実装上は、先に説明したように、チップに付加される配線ピンの一部をネットワークプロセッサとの接続専用にすることで実現される。
【００３３】
更に、一つのネットワークプロセッサアクセラレータに対して、インタフェースを介して複数のネットワークプロセッサを接続しても良い。この場合、インタフェースにはスイッチ機能を持たせて、一つのアクセラレータと複数のネットワークプロセッサとの接続を切替える。接続の切替え方としては、パケットを受信する毎に接続を順次切替えて行く方法がある。この場合、パケットをカウントするためのカウンタを設ける必要がある。本方式は、簡便に実現できるため、コスト的に有利というメリットがある。
【００３４】
あるいは、スイッチに負荷分散機能を持たせても良い。この場合、接続する複数のネットワークプロセッサの動作効率を上げられる利点があるが、インタフェースの機能が複雑になるため、コスト的に損である。
【００３５】
図４には、図３に示したネットワークプロセッサアクセラレータ１３の動作に関するフローチャートを示す。
【００３６】
まず、入力インタフェース１０１を利用して、外部よりレイヤ２もしくはレイヤ３の形式でパケットを受信し、ネットワークプロセッサアクセラレータ内部で処理可能な形式に変換する。(Ｓ１０１(図４のフローチャート上の番号))。
【００３７】
次に、受信したパケットを同一チップ上に配置する大容量のパケットメモリ１０７へ保持するとともに、パケット解析部１０２において、パケットを走査し、レイヤ２から順に必要なレイヤまでのヘッダ情報位置を特定し、必要部位を抽出する(Ｓ１０２)。
【００３８】
この解析と抽出を高速に行うために、例えば、バレルシフタ、マスク論理、比較器をパイプライン的に組み合わせて実施する方法がある。フレームやパケットのヘッダ情報に含まれる様々なフィールドは整数バイトの大きさで構成されているため、シフトやマスクはバイト単位で実施できれば十分である。実際の抽出には、例えば、３２バイトから６４バイト程度の抽出用バスを用意し、このバスにマスク論理とバレルシフタセットを複数セット、次の抽出部位を決定するための判定を行う比較器を備え、最終段に抽出情報を結合するためのラッチを置く。バレルシフタセットは、１、２、４、８、１６、３２バイトのシフト論理を組み合わせたものにすれば、６４バイト以内の自由な移動が可能である。マスク論理は、既抽出部分にそれ以上のシフトが加わらないように、特定のバイトまでをマスクするために用いる。
【００３９】
この抽出用バスにパケットを通すと、前記マスク論理とバレルシフタセット一組につき、抽出用バス幅の範囲内で一部位を抽出可能である。パケットのヘッダ部分が抽出用バス幅に比べて長い場合は、抽出を行いたいパケットヘッダ長を抽出用バス幅で割って、切り上げた整数分箇所の抽出が可能である。例えば、ＩＰｖ４パケットのプロトコル番号、送信元ＩＰアドレス、宛先ＩＰアドレスを抽出するケースでは、送信元ＩＰアドレスフィールドと宛先ＩＰアドレスフィールドは連続しており、プロトコル番号フィールドだけ離れているため、２セット分のマスク論理とバレルシフタセットで抽出可能である。様々な抽出パターンがありうるが、４から６セット程度、前記のマスク論理とバレルシフタセットがあれば抽出には十分である。
【００４０】
オプションとして、パケット解析結果から一意にシフト量、マスク量を決定せずに、マスク論理、バレルシフタセットの隣にシフト量、マスク量のパターンをプログラムしたメモリを設置して、パケット解析結果によりこのメモリを参照して、マスク量、バレルシフタ量を決定する方法がある。以上により、パケットのヘッダ情報より必要な情報を抽出する。
【００４１】
ここで、図５にプロセスキャッシュの内部構造を示す。以下の説明では、受信パケットのヘッダ情報から抽出された必要情報を抽出情報のことを抽出ヘッダ７１２と呼ぶ。また、パケット解析によって得られたパケットのタイプや、パケットメモリ１０７へのポインタ情報、その他、ネットワークプロセッサアクセラレータの内部情報を、ここでは便宜的に内部ヘッダ７１１と呼ぶ。前記抽出ヘッダに前記内部ヘッダを付加したものを、ここでは便宜的にトークン７１３と呼ぶ。
【００４２】
プロセスキャッシュは、タグ部３０２、有効ビット部３０３、データ部３０４で構成される。また図５において、アドレス生成部３０１、比較器３０５、選択部３０６とを含む点線で囲った領域がいわゆるキャッシュメモリとキャッシュメモリに関連する論理に相当する。タグ部３０２は、処理結果が登録済みパケットのトークン７１３の内部ヘッダ７１１の一部と抽出ヘッダ７１２の全てを記録している。有効ビット部３０３は、関連するタグ部３０２のデータ、データ部３０４のデータの有効・無効状態を示す情報を記録している。データ部３０４は、パケット処理結果情報を持つトークンを記録する。
【００４３】
図６には、データ部３０４の構造を示した。データ部３０４の各エントリの形式は同一である必要はなく、さまざまなデータパターンが入りうる。例えば、あるエントリは置換え後内部ヘッダとして宛先ポート３４１、およびその他の内部ヘッダ３４２、置換え後抽出ヘッダとしてＩＰｖ４の宛先ＩＰアドレス３４３、送信元ＩＰアドレス３４４、ＱｏＳ情報３４７、ＴＣＰ宛先ポート３４５、ＴＣＰ送信元ポート３４６等を含んでいて良く、あるエントリはＶＬＡＮ情報３４８や、レイヤ７情報３４９、例えばＵＲＬ(Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ)等を含んでいても良い。また、あるエントリは、ＭＰＬＳ情報３５０、３５１を持っていたり、ＩＰｖ６の宛先ＩＰアドレス３５２や、送信元ＩＰアドレス３５３等を含んでいても良い。データ部３０４に記録されているデータは、トークン７１３を置き換える情報となる。
【００４４】
トークン７１３の内部ヘッダ７１１の一部、例えばレイヤ３のプロトコルタイプ等と抽出ヘッダ７１２全てによってアドレス生成部３０１によって、プロセスキャッシュを参照するが、抽出ヘッダ７１２は、例えばＩＰｖ４の送信元ＩＰアドレス、宛先ＩＰアドレス他、様々な情報を含むため、例えば４０バイトから６４バイト程度の長さを持つ。この長さに相当するメモリのエントリ数は２の３２０乗から５１２乗と非現実的な巨大な値になるので、抽出ヘッダ７１２をアドレス生成部３０１で縮約してから、プロセスキャッシュを参照する必要がある。
【００４５】
例えば、Ｎを１以上の整数、Ａを０もしくは１として、プロセスキャッシュのエントリ数を２の(２Ｎ＋Ａ)乗エントリとする場合、抽出ヘッダ７１２の送信元ＩＰアドレスの低位からＮビット、及び宛先ＩＰアドレスの低位ビットからＮ＋１ビットを取り出し組み合わせてアドレスを生成する方式や、宛先ＩＰアドレスの低位ビットから(２Ｎ＋Ａ)ビット取り出してアドレスを生成する方式、抽出ヘッダ７１２全体に対して、ＣＲＣ(Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ)演算の剰余項を利用して抽出ヘッダ７１２を２Ｎ＋Ａビットに縮約してアドレスを生成する方式等が利用できる。トークン７１３から、前記のいずれかの方法で生成したアドレスにより、プロセスキャッシュをアクセスして(Ｓ１０３)、タグ部３０２から得られる値と、元のトークン７１２を比較器３０５により比較し、一致していて、尚且つタグが有効(有効ビット３０３の値が有効)であれば、プロセスキャッシュに当該パケット情報が登録されているとみなし、前記の比較が不一致であるかタグが無効(有効ビット３０３の値が無効)であれば、当該パケット情報は未登録とみなす (Ｓ１０４)。
【００４６】
図５では、プロセスキャッシュは、パケットに対してエントリの割り当て位置を一意に定めるダイレクトマップ方式として示しているが、パケットに対してエントリの割り当て位置をｎ箇所として定めるｎ−ｗａｙのセットアソシアティブ方式を用いる方法もある。ｎ−ｗａｙのセットアソシアティブ方式を用いる場合は、ｎ箇所全ての割り当て箇所が埋まっているケースで、新たなパケット処理結果を登録する場合に、書き潰してしまうエントリを選択するために、プロセスキャッシュに最も利用されていないエントリを示すためのＬＲＵ（Ｌｅａｓｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ）ビットや一番古いエントリを示すためのＦＩＦＯ(Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ)ビット等の上書きするためのエントリを決定するための情報ビットを付与する。
【００４７】
当該パケット情報が登録されている、つまりプロセスキャッシュにヒットした場合(Ｓ１０４からＹＥＳ方向に分岐)には、トークンの内部ヘッダ７１１に含まれる整理番号やパケットメモリへのポインタ情報等、各トークンに固有の情報を除き、プロセスキャッシュに登録されている宛先ポート番号などを含む内部ヘッダ７２１、アドレス変換結果なども含まれる抽出ヘッダ７２２から構成されるトークン７２３に選択部３０６を通じて置き換える(Ｓ１０５)。
【００４８】
プロセスキャッシュにヒットした後は、後処理部１０５にて、トークンの内部ヘッダに含まれるパケットメモリポインタ情報を基にパケットメモリ１０７から元のパケットを読み出し、トークンの内部ヘッダ情報に従い、トークンの抽出ヘッダ情報を元のパケットに適用してパケットを組み立てなおし(Ｓ１０６)、トークンの内部ヘッダ情報に従い、パケットのヘッダの一部を書き換え(Ｓ１０７)、出力インタフェース部１０６にてパケットの出力先の形式に変換したパケットを送出する(Ｓ１０８)。
【００４９】
プロセスキャッシュ１０３に当該パケット情報が登録されていない、つまりプロセスキャッシュにミスした場合(Ｓ１０４からＮＯ方向に分岐)には、キャッシュミス処理部１０４にトークン７２３を渡し、キャッシュミス処理を実施し(Ｓ１１０)する。この場合、トークン７２３は、プロセスキャッシュにアクセスする前のトークン７１３と同一のものである。
【００５０】
図７には、図３に示されるキャッシュミス処理部１０４の構造の一例について示す。併せて、図８のフローチャートを用いて、キャッシュミス処理部１０４の動作について説明する。
【００５１】
キャッシュミス処理部１０４は、外部のネットワークプロセッサに処理依頼中のパケットを管理するための第一のテーブル４０１(ここでは便宜的に初期ミステーブルと呼ぶ)と、前記初期ミステーブル４０１に管理されているパケットと同じ処理結果が期待されるパケットを外部のネットワークプロセッサに処理依頼を出さずに保持するための第二のテーブル４０２(ここでは便宜的に多重ミステーブルと呼ぶ)と、パケットに整理番号や、処理依頼内容を示すフラグ等専用のヘッダを付加して外部のネットワークプロセッサに渡せる形式にするための出力形式変換部４０３と、パケット処理結果を受信し管理するための第三のテーブル４０４(ここでは便宜的に処理情報テーブルと呼ぶ)と、処理済のパケット情報をトークンに適用する処理済トークン生成部４０５等から構成される。
【００５２】
キャッシュメモリに処理結果が登録されていないパケットを受信すると、図３のネットワークプロセッサアクセラレータは、図４のフローチャートのステップＳ１１０に示されるキャッシュミス処理を開始する。まず、プロセスキャッシュ１０３が、キャッシュミス処理部１０４へトークンを送信する。キャッシュミス処理部１０４は、トークンを受信すると、初期ミステーブル４０１を参照し、当該トークンが登録されているかどうか調べる(図８のＳ２０１)。
【００５３】
当該トークンが初期ミステーブル４０１に登録されている場合(Ｓ２０１からＮＯ方向に分岐)、多重ミステーブル４０２に当該トークンの内部ヘッダのうち、各トークンが持つ整理番号や、元のパケット情報を示すためのパケットメモリ１０７へのポインタ情報等の固有情報だけを多重ミステーブル４０２に登録し、外部ネットワークプロセッサにはパケット処理依頼を出さずに、一旦処理を終了する(Ｓ２０４)。
【００５４】
多重ミステーブル４０２は、同一処理結果が出るパケットを外部ネットワークプロセッサに送信することを抑止し、外部ネットワークプロセッサへかける負荷を減少させることができる。多重ミステーブル４０２は様々な構成方法が考えられるが、本実施例では、代表的な構成例について、後段で３種類ほど例示する。
【００５５】
プロセスキャッシュでミスをしたトークンが初期ミステーブル４０１に登録されていない場合(Ｓ２０１からＮＯ方向に分岐)、初期ミステーブル４０１に当該トークンを登録する(Ｓ２０２)。そして、トークンの内部ヘッダ情報からパケットメモリ１０７を参照して元のパケットを取り出し、出力形式変換部４０３が、外部に接続するネットワークプロセッサに処理を依頼するための処理内容や、パケットの整理番号等を含むヘッダ情報を付加して、入出力変換器１０８に送信する。入出力変換器１０８はネットワークプロセッサアクセラレータ１３から出力できるＭＡＣフレーム等のレイヤ２やＩＰパケットなどのレイヤ３等の形式にパケットを変換して、外部に接続するネットワークプロセッサに処理を依頼する(Ｓ２０３)。
外部に接続したネットワークプロセッサの処理に関しては、先に図１に示すネットワーク装置のところで説明したとおりである。
【００５６】
図８では、キャッシュミス動作を開始してから外部のネットワークプロセッサにパケット処理を依頼するステップまでの動作を説明した。そこで、次は、依頼したパケット処理の結果を外部のネットワークプロセッサから受け取った後のキャッシュミス処理部の動作について、図１２に示すフローチャートを用いて説明する。
【００５７】
図１２には、ネットワークプロセッサアクセラレータが、外部ネットワークプロセッサからの処理済パケット情報を入出力形式変換器１０８によって受信した後のキャッシュミス処理部１０４での処理ステップが示されている。
【００５８】
キャッシュミス処理部１０４は、受信したヘッダ情報を調べ(Ｓ３０１)、受信したパケットが無効であれば(Ｓ３０１でＮＯ方向に分岐)、再度外部ネットワークプロセッサに同パケットの処理依頼を出す(Ｓ３１０)。受信したパケットが有効であれば(Ｓ３０１でＹＥＳ方向に分岐)、処理済パケット情報を処理情報テーブル４０４に登録し、対応する情報をプロセスキャッシュ１０３に登録する(Ｓ３０３)。プロセスキャッシュの構成が、ダイレクトマップ方式の場合、登録エントリに既に有効なエントリが入っていたら、そのまま上書き登録する。プロセスキャッシュの構成がｎ−ｗａｙのセットアソシアティブ方式である場合、空いているｗａｙのエントリに登録するが、ｎ−ｗａｙ全てが埋まっている場合は上書きすべき位置を決めるためのＬＲＵ等のビット情報を元に登録するエントリを決定し、そのエントリに当該情報を上書きする。
【００５９】
また、処理済パケットに該当する初期ミステーブル４０１のエントリに処理結果を適用、すなわち、プロセスキャッシュ１０３でヒットしたケースで実施されるのと同様のトークン置き換え操作を実施し、後処理部１０４へ送出する(Ｓ３０４)。
【００６０】
更に、多重ミステーブル４０２も走査して該当エントリの存在の有無を確認し(Ｓ３０５)、該当エントリが見つかれば(Ｓ３０５のＮＯ方向に分岐)、多重ミステーブル４０２の最初の該当エントリに、初期ミステーブル４０１の該当エントリの必要情報と一緒に、前記と同様のトークン置き換え操作を実施し、後処理部１０４へ送出し(Ｓ３２０)、多重ミステーブル４０２の該当エントリを削除する(Ｓ３２１)。
【００６１】
以後、多重ミステーブル４０２から該当エントリがなくなるまでこのＳ３０５、Ｓ３２０、Ｓ３２１の作業を繰り返し、該当エントリがなくなったら(Ｓ３０５のＹＥＳ方向に分岐)、初期ミステーブル４０１から該当エントリを削除し、該当パケットに関する一連のキャッシュミス処理を終了する(Ｓ３０６)。
尚、一構成例として、初期ミステーブル４０１はエントリ毎にひとつずつタイムアウトカウンタを持っても良い。パケットを外部のネットワークプロセッサに送信してから予め設定した閾値を超えたら、外部ネットワークプロセッサがパケットロスしたものとして再度、該当パケットの処理を外部ネットワークプロセッサに依頼する。
【００６２】
キャッシュミス処理部を備えることにより、外部に接続するネットワークプロセッサへの無駄な処理依頼を削減できる。また、前記ネットワークプロセッサから処理結果が届いた後に、該当するパケット全てに処理結果を適用できるため、プロセスキャッシュにミスしたパケットの処理をプロセスキャッシュに登録されている、即ち、プロセスキャッシュにヒットしたのと同じ状態で扱うことが可能である。
【００６３】
図９，１０，１１には、図７に示した多重ミステーブルの代表的な構成例を３種類示す。いずれの方法でも多重ミステーブル４０２に用意されている、当該パケット(トークン)に利用可能なエントリがなくなるまでは当該トークンを保持することが可能であるが、エントリを使い切るとそれ以降に届くパケット(トークン)は廃棄されることになる。
【００６４】
図９に示す多重ミステーブル４０２は、初期ミステーブル４０１のエントリ数をＮとしたとき、Ｎに等しい数のキューを持つ構成の例で、図９では各キューの深さはＭとしてある。初期ミステーブル４０１は、多重ミステーブル４０２にもキャッシュミストークンを保持しているかどうかを示すビットをもっている。キャッシュミス処理部１０４は、トークンを受信し、初期ミステーブル４０１に同一のトークンが見つけると、初期ミステーブル４０１のエントリに対応する多重ミステーブル４０２のキューの空きエントリに登録する。該当する多重ミステーブル４０２のキューに空きエントリがない場合は、当該トークンに対応するパケットを廃棄する。
【００６５】
処理情報テーブル４０４に対応するトークンの処理結果がある場合、多重ミステーブル４０２の対応するキューのエントリ全てに順番に前記処理結果を適用して、適用したエントリから順に多重ミステーブル４０２のエントリを開放する。
【００６６】
図１０に示す多重ミステーブル４０２は、結合リスト方式で構成した例である。初期ミステーブル４０１の各エントリに、結合リストとして一組のエントリの多重ミステーブル４０２上での開始位置を示すヘッド情報と、終了位置示すテイル情報を持つ。多重ミステーブル４０２のエントリは、同一のトークンが存在するかどうかを示すリンク情報を持つ。リンク情報は、初めて登録する時点ではＥＮＤという、多重ミステーブル４０２上で次の同一トークンが存在しない状態を示す情報を書いておくが、次の同一のトークンが届いたとき、最初のエントリの前記ＥＮＤ部分に、次の同一トークンを登録するための多重ミステーブル４０２上でのエントリ位置を示すポインタ情報を書き直し、初期ミステーブル４０１の該当するエントリのテイル情報も書き直し、結合リンクを伸ばしていく。更に、多重ミステーブル４０２全体での先頭を示すグローバル・ヘッド情報と最後尾を示すグローバル・テイル情報を管理するためのグローバル・ヘッド・テイル管理テーブル４２０を置き、前記グローバル・ヘッド・テイル管理テーブルテーブル４２０により多重ミステーブル４０２全体での利用されているエントリの先頭位置と、エントリの最後尾位置を把握する。
【００６７】
処理情報テーブル４０４に対応するトークンの処理結果がある場合、対応する初期ミステーブル４０１のエントリ番号に記録されている多重ミステーブル４０２のリンク情報をたどり、該当するエントリのトークンに前記処理結果を適用して、適用したエントリから順に多重ミステーブル４０２のエントリを開放する。前記開放が多重ミステーブル４０２全体でのエントリの先頭位置、最後尾位置を変える場合は、グローバル・ヘッド・テイル管理テーブル４２０のグローバル・ヘッド情報、グローバル・テイル情報も修正する。
【００６８】
図１１に示す多重ミステーブル４０２は、ＣＡＭもしくはフルアソシアティブメモリで構成した例である。初期ミステーブル４０１は、多重ミステーブルに幾つのキャッシュミストークンを保持しているかを示すためのカウンタを持っている。キャッシュミス処理部１０４は、トークンを受信し、初期ミステーブル４０１に同一のトークンが見つけると、多重ミステーブル４０２上の空いているエントリを選択し登録し、前記カウンタを１増やす。このエントリの選択は、初期ミステーブル４０１のエントリ番号と、前記エントリ番号に対して、何番目に多重ミステーブル４０２に到着したかを示す番号の組合せによって決定する。多重ミステーブル４０２がＣＡＭもしくはフルアソシアティブメモリであるため、エントリの割り当て位置自体は、ＣＡＭもしくはフルアソシアティブメモリの総エントリ数の中で自由に決まる。ＣＡＭもしくはフルアソシアティブメモリに空きエントリがない場合は、当該トークンに対応するパケットを廃棄する。
【００６９】
処理情報テーブル４０４に対応するトークンの処理結果がある場合、対応する初期ミステーブル４０１のエントリ番号と整数Ｋを組み合わせが示す多重ミステーブル４０２のエントリに、前記処理結果を適用して、適用したエントリから順に多重ミステーブル４０２のエントリを開放する。ここで、前記整数Ｋはゼロから、該当する初期ミステーブル４０１のエントリに登録されているカウンタの示す値までである。
次に、図３に戻って、キャッシュミス処理部１０４の後段の構成、動作について説明する。後処理部１０５は、プロセスキャッシュ１０３にヒットして情報の置き換えられたトークン７２３、およびプロセスキャッシュ１０３にミスしてキャッシュミス処理部１０４を通じて外部ネットワークプロセッサで処理され、情報を置き換えられたトークン７２３を受け取るパスを持つ。
【００７０】
後処理部１０５は、受信したトークンの内部ヘッダ情報を基にパケットメモリ１０７をアクセスし、基のパケットを取り出しつつ、トークンの置き換え抽出ヘッダの内容をトークンの内部ヘッダ情報に従い適用してパケットの再構築、ヘッダ情報の付加、削除、置換、修正等、例えばＩＰｖ４のＴＴＬ(Ｔｉｍｅ  Ｔｏ  Ｌｉｖｅ)の修正やＨｅａｄｅｒ  Ｃｈｅｃｋｓｕｍの計算等を行う(図４のフローチャートに戻り、Ｓ１０６)。後処理部１０５も、パケット解析部１０２と同様に高速性が要求されるため、パケット解析部１０２と同等のバレルシフタセット、マスク論理をパイプライン的に組み合わせて実施する方法を適用する。
【００７１】
最後に、出力インタフェース部１０６において、パケットを送出できる形式に変換して出力する。このときネットワークプロセッサアクセラレータの先にスイッチファブリックが繋がっているならば、スイッチファブリック用のヘッダ情報をパケットに付加する。例えば、スイッチファブリックのポート番号等が含まれるが、これは、トークンの中の内部ヘッダに含まれているので、それを利用すればよい。ネットワークインタフェースが繋がっているならば、そのネットワークインタフェースがサポートするレイヤ２、もしくはレイヤ３の形式にパケットを変換して出力する。尚、出力先ネットワークインタフェースが複数の出口を持つ場合には、やはりトークンの中の内部ヘッダに含まれているポート番号を利用して出口のネットワークインタフェースを決定する(Ｓ１０７)。
【００７２】
以上、本発明によるネットワークプロセッサアクセラレータを利用したネットワーク装置および、ネットワークプロセッサアクセラレータそのものの一実施例を説明した。本説明はあくまで一実施例の説明であり、本発明の範囲を限定するものではなく、様々な変形例に対して適用可能である。
【実施例２】
【００７３】
実施例２として、プロセッサ、もしくは既存のネットワークプロセッサを同一チップ上に組み込んだネットワークプロセッサアクセラレータを用い、外部にはネットワークプロセッサを接続しないネットワーク装置の構成例を図１３に示す。この構成のネットワークプロセッサアクセラレータは、図３の入出力変換器の位置に組み込みプロセッサ、もしくは、入出力変換器の先の同一チップ内に既存のネットワークプロセッサを搭載している。
【００７４】
基本的なパケット処理の流れについては、実施例１と同じだが、ネットワークプロセッサアクセラレータのプロセスキャッシュでキャッシュミスを起こしたパケットは、ネットワークプロセッサアクセラレータに搭載された組み込みプロセッサ、もしくはネットワークプロセッサで処理が行われる。キャッシュミス処理部の構成に関しては、実施例１の方法がそのまま適用可能である。
【００７５】
外部に置かれるテーブルメモリ１６、２６へは、ネットワークプロセッサアクセラレータ１３、２３が内蔵する組み込みプロセッサ、もしくはネットワークプロセッサがアクセスする。
【００７６】
実施例２の構成でプロセッサを組み込んで用いるメリットとして、プロセスキャッシュに登録すべきパケット処理も同一チップ上のプロセッサ部分で実施できるため、処理するパケットをネットワークプロセッサアクセラレータの外部のネットワークプロセッサに送信、また外部のネットワークプロセッサから受信するオーバヘッドを削減できる。実施例２の構成で既存のネットワークプロセッサを組み込んで用いるメリットとして、前記既存ネットワークプロセッサとのインタフェース分の入出力ピンを設ける必要がなくなる。
なお、実施例２の構成でプロセッサ、または既存のネットワークプロセッサを組み込んで用いるデメリットとしては、チップ面積を前記プロセッサ用にも割り当てる必要があることである。
【実施例３】
【００７７】
実施例３として、組み込みプロセッサ、もしくは組込みのネットワークプロセッサを組み込んだネットワークプロセッサアクセラレータを用い、外部にもネットワークプロセッサを接続するネットワーク装置の構成例を図１４に示す。この構成のネットワーク装置で用いるネットワークプロセッサアクセラレータの構成例を図１５に示す。図３のネットワークプロセッサアクセラレータとの構成上の大きな違いは、組み込みプロセッサ１２０もしくは組み込みネットワークプロセッサ１３０を持つ点、キャッシュミス処理部１０４が組み込みプロセッサ１２０と入出力変換器１０８両方にインタフェースを持っている点と、入出力変換器１０８が外部へネットワークプロセッサを接続するためのインタフェースとチップ上に搭載する組み込みネットワークプロセッサ１３０へのインタフェースを持つ点である。
【００７８】
組み込みプロセッサ１２０、組み込みネットワークプロセッサ１３０はいずれか片方を持てばよいが、両方持っても構わない。
【００７９】
基本的なパケット処理の流れについては、実施例１と同じだが、ネットワークプロセッサアクセラレータのプロセスキャッシュでキャッシュミスを起こしたパケットは、ネットワークプロセッサアクセラレータに搭載された組み込みプロセッサ１２０、もしくはネットワークプロセッサ１３０で処理が行われる。これらのプロセッサで処理している最中に新たなキャッシュミスパケットが到着した場合、入出力変換器１０４を通して外部のネットワークプロセッサへパケット処理依頼を出すことになる。キャッシュミス処理部の構成に関しては、実施例１の方法がそのまま適用可能である。
【００８０】
外部に置かれるテーブルメモリ１６、２６へは、ネットワークプロセッサアクセラレータ１３、２３が内蔵する組み込みプロセッサ、もしくはネットワークプロセッサ、及び、外部に接続するネットワークプロセッサ１５，２５がアクセスする。両者からのアクセスがぶつからないよう制御するためのテーブルメモリ１６、２６用のアービタを必要とする。
【００８１】
実施例３の構成でプロセッサを組み込んで用いるメリットとして、組み込みプロセッサの処理プロセッサ数がプロセスキャッシュでミスしたパケットに対して足りているうちは、ネットワークプロセッサアクセラレータ内部だけで全ての処理を実施できるため、チップ外部とのパケットの送受信オーバヘッドを削減でき、加えて組み込みプロセッサのパケット処理速度が不足するときに、外部に拡張的にネットワークプロセッサを追加して不足分を補うことが可能である。実施例３の構成で既存のネットワークプロセッサを組み込んで用いるメリットとして、新規に組み込みプロセッサ部を設計しないで済む点が上げられる。
なお、実施例３の構成でプロセッサ、または既存のネットワークプロセッサを組み込んで用いるデメリットとしては、チップ面積を前記プロセッサ用にも割り当てる必要があることである。また、外部に接続する既存のネットワークプロセッサとのインタフェースも必要となるため、前記インタフェース分の面積、入出力ピンが必要となる。
【実施例４】
【００８２】
実施例４として、図１６に、ネットワークプロセッサアクセラレータ１３、２３の入出力変換器の先に、更にネットワークプロセッサアクセラレータ３２、３３の入力インタフェース部、出力インタフェース部を接続し、ネットワークプロセッサアクセラレータ３２、３３の入出力変換器の先にネットワークプロセッサを接続するネットワーク装置の構成例を示す。図１６では、２段のネットワークプロセッサアクセラレータの構成であるが、ネットワークプロセッサアクセラレータ１３(または２３)とネットワークプロセッサアクセラレータ３２(または３３)の間に更にネットワークプロセッサアクセラレータを接続することを続けて階層的に構成してよい。この構成例で用いるネットワークプロセッサアクセラレータは、実施例２、３のように内部にプロセッサを組み込む必要はないが、組み込んでも構わない。
【００８３】
外付けのネットワークプロセッサから最も遠い、最上位階層に位置するネットワークプロセッサアクセラレータでキャッシュミスを起こすと、入出力変換器を通して下層に相当するチップへ該当パケットを送信する。下層がネットワークプロセッサアクセラレータである場合、そこで再びプロセスキャッシュを引き、ヒットすればそのヒットデータを上層のネットワークプロセッサアクセラレータへ送信する。ミスすれば再び下層へ該当パケットを送信することを、ネットワークプロセッサに到達するまで繰り返す。
【００８４】
最下層のネットワークプロセッサでは、実施例１、２、３同様にパケット処理を実施し、結果を上位のネットワークプロセッサアクセラレータへ送信する。
途中階層に置くネットワークプロセッサアクセラレータのプロセスキャッシュへの登録例を示す。下層から送信されてくるパケット処理結果は、途中の階層のネットワークプロセッサアクセラレータのプロセスキャッシュへは登録せず、常に最上位層のプロセスキャッシュへ登録する。最上位層のプロセスキャッシュで、該当するエントリが一杯であったときに、下層がネットワークプロセッサアクセラレータであれば、該当エントリのひとつを選び、そのエントリのデータを下層のプロセスキャッシュへ追い出して、最新のデータのためにエントリを割り当てる。更に、下層のプロセスキャッシュの該当エントリが一杯で、追い出したデータが登録できなければ、再び該当エントリのひとつを選び、そのエントリのデータを下層のプロセスキャッシュへ追い出して、上層から追い出されてきたデータのためにエントリを割り当てることを再帰的に繰り返す。下層が、ネットワークプロセッサであれば、ネットワークプロセッサアクセラレータのプロセスキャッシュでは、該当データを上書きするだけである。
【００８５】
また、途中階層に置くネットワークプロセッサアクセラレータの後処理部は、最上位階層のネットワークプロセッサアクセラレータの後処理部のような送信パケットの再組み立ての作業が不要である。上層が認識できるパケット整理番号等を含むヘッダを、プロセスキャッシュへ登録する形のトークンに貼り付けて送信するだけでよい。
【００８６】
実施例４の構成のメリットとして、接続したネットワークプロセッサアクセラレータの数に応じてプロセスキャッシュの総容量が増加し多くのパケット処理結果を記憶できることがあげられる。各ネットワークプロセッサアクセラレータのプロセスキャッシュは、通常のプロセッサでいうところの階層キャッシュに見立てることができ、一次キャッシュに相当する最上位のプロセスキャッシュでミスしても、二次キャッシュに相当する次のネットワークプロセッサアクセラレータのプロセスキャッシュでヒットすれば、もしくは更に下の階層のプロセスキャッシュでヒットすれば、最下層のネットワークプロセッサでパケット処理をせずにすむ。
【００８７】
実施例４の構成のデメリットとして、接続するネットワークプロセッサアクセラレータの数に応じてネットワーク装置の部品代が上昇することがあげられる。また、実施例４は、最下層のネットワークプロセッサアクセラレータのプロセスキャッシュから、該当データを最上位層に渡すまでの時間をＡ、最上位層のネットワークプロセッサアクセラレータに直接ネットワークプロセッサを接続して、ネットワークプロセッサからネットワークプロセッサアクセラレータに該当データを渡すまでの時間をＢとしたとき、Ａ＜Ｂとなる範囲でのみ有効である。
【実施例５】
【００８８】
実施例５として、ネットワークからの入力側と出力側のパケットを単一のチップ上で扱うネットワークプロセッサアクセラレータ３５を搭載するネットワーク装置の構成例を図１７に示す。このネットワークプロセッサアクセラレータ３５は、同一チップ上に、入力側と出力側それぞれ独立した入力インタフェース１５１、１６１、パケット解析部１５２、１６２、プロセスキャッシュ部１５３、１６３、後処理部１５４，１６４、出力インタフェース１５５，１６５、パケットメモリ１５６，１６６を持つが、それぞれのプロセスキャッシュ部でミスしたパケット(トークン)を共通のキャッシュミス処理部１４０で扱い、共通の入出力変換器１４１を通して外部のネットワークプロセッサ１５にパケット処理依頼を出す。
【００８９】
共用するキャッシュミス処理部１４０で、入力側のパケット、出力側のパケットの管理フラグが追加される以外は、実施例１に示したネットワークプロセッサアクセラレータのキャッシュミス処理部１０４と同等の処理を行う。
【００９０】
実施例５の構成のメリットとして、ネットワーク装置の部品点数を減少させることができる。
なお、実施例５の構成のデメリットとして、ネットワークプロセッサアクセラレータは、ネットワークに対して入力側、出力側両方の論理を持つため、どちらか一方の論理だけを持つネットワークプロセッサアクセラレータに比べて、チップ面積が圧迫されやすい点がある。
【実施例６】
【００９１】
図１９には、ネットワークプロセッサとアクセラレータとを一つだけ用いてネットワーク装置を構成した実施例を示す。個々のデバイスの構成・動作については、実施例１で説明したものと同様である。本実施例のように、入力側と出力側とを一緒にしてネットワーク装置を構成することも原理的には可能である。図１に示した装置のように、入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとで、独立にアクセラレータ１３とネットワークプロセッサ１５を設ける場合に比べて動作は遅くなるが、構成が簡単になることから、製造コストの上では有利である。
【００９２】
ネットワークプロセッサ１５の替りに汎用のＣＰＵを用いてソフトウェア上でパケット転送処理を実現しても良い。この場合には、ＣＰＵの起動時にパケット処理用のソフトウェアをインストールするための外部制御器が必要となる。
なお、実施例１と同様、アクセラレータ１３、ネットワークプロセッサ１５、テーブルメモリ１６を基板実装した後の各デバイス間の接続は、各デバイスに付与される配線ピンを介して行なわれる。
【産業上の利用可能性】
【００９３】
プロセスキャッシュのヒット率が９０％では、ネットワークプロセッサアクセラレータに接続するネットワークプロセッサの１０倍のピークパケット処理速度を持つネットワーク装置を構成することが可能となる。プロセスキャッシュのヒット率が５０％でも、ネットワークプロセッサの２倍のピークパケット処理速度が得られる。この時ネットワークプロセッサアクセラレータは、ネットワークプロセッサより高速な割合に応じた速度でビット列操作をする能力が必要であるが、一般にビット列操作だけであれば複雑なプログラム処理を必要としないため、ハードウェアで実現可能である。
【００９４】
本発明のネットワークプロセッサアクセラレータは、従来のハイエンドのネットワークプロセッサを補助的に用いて、前記ハイエンドネットワークプロセッサのパケット処理速度を超える高速なネットワーク装置を構成可能である。また、ローエンドのネットワークプロセッサを補助的に用いて、ミドルクラス相当のネットワーク装置を安価に構成することが可能である。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施の形態1における、ネットワークプロセッサアクセラレータと外付けのネットワークプロセッサを用いて構成したネットワーク装置のブロック図である。
【図２】従来のネットワークプロセッサを用いて構成したネットワーク装置のブロック図である。
【図３】本発明の実施形態１または４における、ネットワークプロセッサアクセラレータ内部のブロック図である。
【図４】ネットワークプロセッサアクセラレータのパケット処理のフローチャートである。
【図５】プロセスキャッシュ部の論理図である。
【図６】プロセスキャッシュのデータ構造例である。
【図７】ネットワークプロセッサアクセラレータのキャッシュミス処理部のブロック図である。
【図８】ネットワークプロセッサアクセラレータのキャッシュミスしたパケット処理のフローチャートである。
【図９】ネットワークプロセッサアクセラレータのキャッシュミス処理部の多重ミステーブルを固定サイズのキューで管理することを示す図である。
【図１０】ネットワークプロセッサアクセラレータのキャッシュミス処理部の多重ミステーブルを結合リスト方式で管理することを示す図である。
【図１１】ネットワークプロセッサアクセラレータのキャッシュミス処理部の多重ミステーブルをＣＡＭもしくはフルアソシアティブメモリで管理することを示す図である。
【図１２】ネットワークプロセッサアクセラレータのキャッシュミスしたパケット処理のフローチャートである。
【図１３】本発明の実施の形態２における、ネットワークプロセッサ、もしくは組み込みプロセッサを内蔵したネットワークプロセッサアクセラレータを用い、外付けネットワークプロセッサを用いないで構成したネットワーク装置のブロック図である。
【図１４】本発明の実施の形態３における、ネットワークプロセッサ、もしくは組み込みプロセッサを内蔵したネットワークプロセッサアクセラレータを用い、外付けネットワークプロセッサも用いて構成したネットワーク装置のブロック図である。
【図１５】本発明の実施の形態２または３における、ネットワークプロセッサ、もしくは組み込みプロセッサを内蔵したネットワークプロセッサアクセラレータ内部のブロック図である。
【図１６】本発明の実施の形態４におけるネットワークプロセッサアクセラレータと外付けのネットワークプロセッサの間にひとつ以上のネットワークプロセッサアクセラレータを用いて構成したネットワーク装置のブロック図である。
【図１７】本発明の実施の形態５における、入力側と出力側でネットワークプロセッサアクセラレータを共用し、外付けのネットワークプロセッサを接続して構成したネットワーク装置のブロック図である。
【図１８】本発明の実施の形態５における、入力側と出力側を共用したネットワークプロセッサアクセラレータの内部のブロック図である。
【図１９】本発明の原理動作を説明するための図面である。
【符号の説明】
【００９６】
１：実施形態１におけるネットワーク装置
２：実施形態２におけるネットワーク装置
３：実施形態３におけるネットワーク装置
４：実施形態４におけるネットワーク装置
５：実施形態５におけるネットワーク装置
１２：ネットワークインタフェース部
１３：ネットワークプロセッサと組み込みプロセッサを持たない入力側ネットワークプロセッサアクセラレータ
１４：入力側スイッチファブリックインタフェース部
１５：入力側のネットワークプロセッサ
１６：入力側のテーブルメモリ
２３：ネットワークプロセッサと組み込みプロセッサを持たない出力側ネットワークプロセッサアクセラレータ
２４：ネットワーク装置の出力側ネットワークインタフェース部
２５：出力側のネットワークプロセッサ
２６：出力側のテーブルメモリ
３０：ネットワークプロセッサ、もしくは組み込みプロセッサを持つ入力側ネットワークプロセッサアクセラレータ
３１：ネットワークプロセッサ、もしくは組み込みプロセッサを持つ出力側ネットワークプロセッサアクセラレータ
３２：入力側のネットワークプロセッサアクセラレータと、入力側のネットワークプロセッサの間に置かれる入力側のネットワークプロセッサアクセラレータ
３３：出力側のネットワークプロセッサアクセラレータと、出力側のネットワークプロセッサの間に置かれる出力側のネットワークプロセッサアクセラレータ
３４：ネットワークプロセッサアクセラレータ部
３５：入力、出力両用のネットワークプロセッサアクセラレータ
４０：スイッチファブリック部
５０：光入出力インタフェース部
５１：光-電気信号変換器
１０１：ネットワークプロセッサアクセラレータの入力インタフェース部
１０２：ネットワークプロセッサアクセラレータのパケット解析部
１０３：ネットワークプロセッサアクセラレータのパケット処理置換部およびキャッシュメモリ部
１０４：ネットワークプロセッサアクセラレータのキャッシュミス処理部
１０５：ネットワークプロセッサアクセラレータの後処理部
１０６：ネットワークプロセッサアクセラレータの出力インタフェース部
１０７：ネットワークプロセッサアクセラレータのパケットメモリ部
１０８：ネットワークプロセッサアクセラレータのキャッシュミスパケット用の入出力変換器
１２０：ネットワークプロセッサアクセラレータの組み込まれたプロセッサ
１３０：ネットワークプロセッサアクセラレータの組み込まれたネットワークプロセッサ
１４０：ネットワークプロセッサアクセラレータの入力/出力共用のキャッシュミス処理部
１４１：ネットワークプロセッサアクセラレータのキャッシュミスパケット用の入出力変
１５１：ネットワークプロセッサアクセラレータの入力側入力インタフェース部
１５２：ネットワークプロセッサアクセラレータの入力側パケット解析部
１５３：ネットワークプロセッサアクセラレータの入力側パケット処理置換部およびキャッシュメモリ部
１５４：ネットワークプロセッサアクセラレータの入力側の後処理部
１５５：ネットワークプロセッサアクセラレータの入力側の出力インタフェース部
１５６：ネットワークプロセッサアクセラレータの入力側のパケットメモリ部
１６１：ネットワークプロセッサアクセラレータの出力側入力インタフェース部
１６２：ネットワークプロセッサアクセラレータの出力側パケット解析部
１６３：ネットワークプロセッサアクセラレータの出力側パケット処理置換部およびキャッシュメモリ部
１６４：ネットワークプロセッサアクセラレータの出力側の後処理部
１６５：ネットワークプロセッサアクセラレータの出力側の出力インタフェース部
１６６：ネットワークプロセッサアクセラレータの出力側のパケットメモリ部
３０１：プロセスキャッシュのアクセスアドレス生成部
３０２：プロセスキャッシュのタグ部
３０３：プロセスキャッシュの有効ビット部
３０４：プロセスキャッシュのデータ部
３０５：ＥＮＡＢＬＥ機能付比較器
３０６：選択器
３４１：スイッチファブリックでの宛先ポート
３４２：３４１以外の内部ヘッダ置換え情報
３４３：ＩＰｖ４用の宛先ＩＰアドレス
３４４：ＩＰｖ４用の送信元ＩＰアドレス
３４５：ＴＣＰ宛先ポート番号
３４６：ＴＣＰ送信元ポート番号
３４７：ＱｏＳ情報
３４８：ＶＬＡＮ情報
３４９：Ｌａｙｅｒ７情報
３５０：ＭＰＬＳ情報１
３５１：ＭＰＬＳ情報２
３５２：ＩＰｖ６用の宛先ＩＰアドレス
３５３：ＩＰｖ６用の送信元ＩＰアドレス
４０１：初期ミステーブル
４０２：多重ミステーブル
４０３：出力形式変換器
４０４：処理情報テーブル
４０５：処理済トークン生成部
４２０：グローバル・ヘッド・テイル管理テーブル
７００：パケットヘッダ
７１１：内部ヘッダ
７１２：抽出ヘッダ
７１３：プロセスキャッシュアクセス前のトークン
７２１：プロセスキャッシュアクセス後の内部ヘッダ
７２２：プロセスキャッシュアクセス後の抽出ヘッダ
７２３：プロセスキャッシュアクセス後のトークン。
【図１】
2005117206.tif 000003
【図２】
2005117206.tif 000004
【図３】
2005117206.tif 000005
【図４】
2005117206.tif 000006
【図５】
2005117206.tif 000007
【図６】
2005117206.tif 000008
【図７】
2005117206.tif 000009
【図８】
2005117206.tif 000010
【図９】
2005117206.tif 000011
【図１０】
2005117206.tif 000012
【図１１】
2005117206.tif 000013
【図１２】
2005117206.tif 000014
【図１３】
2005117206.tif 000015
【図１４】
2005117206.tif 000016
【図１５】
2005117206.tif 000017
【図１６】
2005117206.tif 000018
【図１７】
2005117206.tif 000019
【図１８】
2005117206.tif 000020
【図１９】
2005117206.tif 000021