JP2005117206A - ネットワークプロセッサアクセラレータ - Google Patents

ネットワークプロセッサアクセラレータ Download PDF

Info

Publication number
JP2005117206A
JP2005117206A JP2003346519A JP2003346519A JP2005117206A JP 2005117206 A JP2005117206 A JP 2005117206A JP 2003346519 A JP2003346519 A JP 2003346519A JP 2003346519 A JP2003346519 A JP 2003346519A JP 2005117206 A JP2005117206 A JP 2005117206A
Authority
JP
Japan
Prior art keywords
network processor
packet
network
accelerator
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003346519A
Other languages
English (en)
Other versions
JP2005117206A5 (ja
Inventor
Michitaka Okuno
通貴 奥野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003346519A priority Critical patent/JP2005117206A/ja
Priority to US10/956,089 priority patent/US7440457B2/en
Priority to CNA200410083506XA priority patent/CN1606291A/zh
Publication of JP2005117206A publication Critical patent/JP2005117206A/ja
Publication of JP2005117206A5 publication Critical patent/JP2005117206A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 チップ面積の増加、消費電力の増加、外部メモリバンド幅の不足等を招くことなくパケット処理速度を向上する。
【解決手段】 本発明では、次の二つの手段を用いて、上記課題を解決する。一度ネットワークプロセッサで処理した処理結果をキャッシュしておくネットワークプロセッサアクセラレータを備え、当該アクセラレータにて、受信パケットに対してプロセスキャッシュ処理を行なう。
【効果】 パケット処理速度の速いネットワーク装置を実現することができる。
【選択図】 図1

Description

本発明は、大容量パケットの低遅延交換システム向けのルータやスイッチ等のネットワーク装置構成方法にかかわる技術である。また、ネットワーク装置においてパケットの要求処理を実施するネットワークプロセッサのパケット処理方式に関する技術である。特にネットワーク装置におけるIP(Internet Protocol)パケット、MAC(Media Access Control)フレームの処理に効果的な技術である。
通信分野においては、複数のネットワーク間を接続するためにルータやスイッチ等のネットワーク装置が用いられる。ネットワーク装置は、受信したパケットの宛先アドレスを調べてパケットの転送先を決定し、所定の転送先にパケットを転送する。世界のネットワークで送受信されるパケットの総量は増大する一方であり、ネットワーク装置のパケット転送性能も、トラフィック量の増大に伴って向上させていく必要がある。
図2に、従来のネットワーク装置の構成例を示す。図2において、ネットワーク装置は、入力側ネットワークインタフェース部12、入力側ネットワークプロセッサ15、入力側ネットワークプロセッサ用テーブルメモリ16、入力側スイッチファブリックインタフェース部14、スイッチファブリック部40、出力側ネットワークインタフェース部22、出力側ネットワークプロセッサ25、出力側ネットワークプロセッサ用テーブルメモリ26、出力側スイッチファブリックインタフェース部24等を備える。ここで、ネットワークプロセッサとは、パケットの転送処理用に特化されたネットワーク装置専用プロセッサのことである。
入力側ネットワークインタフェース部12は、ネットワークからパケットを受信し、受信したパケットを入力側ネットワークプロセッサ15において処理する。前記ネットワークプロセッサ15は、テーブルメモリ16の中のルーティングテーブルを参照し、検索結果を基に入力側スイッチファブリックインタフェース部14からスイッチファブリック40の適切なポートにパケットを転送する。スイッチファブリック40からパケットを受信した出力側スイッチファブリックインタフェース部24は、出力側ネットワークプロセッサ25においてQoS(Quality Of Service)制御等必要なパケット処理を実施し、出力側ネットワークインタフェース部22からネットワークにパケットを送信する。入力側、出力側を一体化させたネットワーク装置も存在する。
パケットの転送先を決定するためには、テーブルメモリ内に格納されるルーティングテーブルを検索する必要がある。一般にルーティングテーブルは巨大であり、ルーティングテーブルの検索処理は、ネットワーク装置でパケットを転送する際のボトルネックとなる処理である。従って、ネットワークプロセッサ自体の動作速度を高速化するための技術が種々開発されており、例えば、パケット処理を実施する組み込みプロセッサをマルチプロセッサ化する、マルチスレッドアーキテクチャの採用、パケット処理をVLIW化する等の技術がある。
一方、アクセラレータを用いてネットワークプロセッサの動作を高速化する技術も開発されており、例えば、特開平05−199230号公報(米国特許第5,434,863号)、特開2001−86149号公報には、メインプロセッサを補助してルーティング処理を高速化する技術が開示されている。また、特開2002−271363号公報、特開2002−281072号公報には、アクセラレータを用いてルーティングテーブル検索以外のプロセッサ処理(例えばIPsec、VPN、NAT、不正パケット検出等)を行い、メインプロセッサの負担を軽くすることにより、間接的にルーティングテーブル検索を高速化する技術が開示されている。
特開平05−199230号公報
特開2001−086149号公報 特開2002−271363号公報 特開2002−281072号公報 特願2003−048730号公報
ネットワークプロセッサ自体を高速化することによってネットワーク装置のパケット処理速度を高速化する従来の方法では、現状のトラフィック量の増加に対応できるネットワーク装置を開発することは困難である。ネットワークプロセッサの高速化はネットワークプロセッサの巨大化を招き、消費電力の増加や放熱に伴う動作不良等の問題が発生するためである。
そこで、本発明の第1の課題は、プロセッサの肥大化を招くことなくパケット処理速度を向上することのできる新規なパケット処理技術を提供することにある。
また、本発明の第2の課題は、当該新規パケット処理技術に伴って付加的に発生する問題の少なくとも一つを解決することにある。
ネットワークプロセッサの巨大化を避けつつ、パケット転送処理を高速化する上では、プロセスキャッシュと呼ばれる技術が有望である。この技術においては、受信パケットに対する処理結果を記録するためのキャッシュがネットワークプロセッサに設けられる。プロセスキャッシュは、ネットワークプロセッサで初めて処理するパケットのみをネットワークプロセッサの内部に組み込むプロセッサにおいて処理し、その処理結果を記録して、以後同一と判断されるパケットにはプロセスキャッシュに記録してある結果を受信パケットに適用する。これにより、ネットワークプロセッサに内蔵された組み込みプロセッサでの処理を削減し、ネットワークプロセッサのパケット処理速度を向上する。
一方、プロセスキャッシュというアーキテクチャを採用することより、以下の課題が付加的に発生すると考えられる。
1)プロセスキャッシュアークテクチャを採用するネットワークプロセッサでは、処理速度向上が困難なパケット処理を組み込みプロセッサで実施し、残りの処理速度向上が容易な部分の処理はネットワークプロセッサの後段の論理で実施する。ネットワーク装置内でのパケット転送処理は、外部メモリ参照を伴う高度なプログラム処理が必要となる処理、すなわちネットワークプロセッサへの負担が大きな処理と、プロセッサの負担が比較的小さな処理とに分かれる。負担の大きな処理としては、ルーティングテーブル検索やアドレス変換テーブル検索、プロトコル処理等がある。負担の比較的小さな処理としては、ヘッダ情報の付加、削除、置換、修正といったビット列操作処理等がある。
一度キャッシュに処理結果が登録されたパケットと宛先アドレスが同一のパケットであれば、登録内容を利用して、ビット列操作のみによる高速な処理が可能であるが、未登録のパケットは、必ず組み込みプロセッサで処理速度向上が困難な部分の処理を行わなければならない。このため、大量の未登録パケットが次々に到着する状況が頻繁に発生する場合、組み込みプロセッサだけでは数が不足し、処理しきれない可能性がある。
2) ネットワークプロセッサの組み込みプロセッサにおいて、処理結果記録用キャッシュに未登録のパケットを処理し始めてから、処理結果記録用キャッシュに登録するまでの期間に、同一処理結果となるパケットがひとつ以上到着する可能性がある。このとき、到着するパケットはすべて処理結果記録用キャッシュに登録されていないため、処理結果記録用キャッシュの登録データを利用できない。
上記1)に記載した問題を解決するためには、以下の構成のネットワーク装置を用いる。すなわち、ネットワークにパケットを送信または受信するためのネットワークインタフェースと、受信パケットを次の転送先へ転送するための処理を行う第1のプロセッサと、該転送するための処理の際に参照されるテーブルを格納するテーブルメモリと、該第1のプロセッサの処理結果が格納されるキャッシュメモリと、該キャッシュメモリを参照して受信パケットに対して転送のための処理を行なう第2のプロセッサとを備え、前記キャッシュメモリに格納された処理結果が行なわれたパケットと宛先アドレスが同じ受信パケットに対しては、前記キャッシュメモリに格納された処理結果を参照し、当該受信パケットに対して転送のための処理を実行させるネットワーク装置である。
上記2)に示した問題を解決するためには、キャッシュミス処理部を設けて、キャッシュミスが発生した場合でも、ネットワークプロセッサにパケットを転送せずにパケットの転送処理が可能なようにネットワーク装置ないしネットワークプロセッサアクセラレータを構成する。具体的には、外部のネットワークプロセッサに処理依頼中のパケットを管理する手段と、キャッシュミスしたパケットから処理依頼中のパケットと同じ処理結果が期待される受信パケットを識別して管理する手段とを備え、既にネットワークプロセッサに処理依頼済みのパケットに関しては、ネットワークプロセッサからの回答を待ち、受信パケットの処理を行う。これにより、ネットワークプロセッサに新たに処理を依頼することなく、キャッシュミスしたパケットの処理を可能とする。
本発明のネットワークプロセッサアクセラレータをネットワーク装置のパケット処理部として用いることにより、パケット処理速度の速いネットワーク装置を実現することができる。
以下、より詳細な内容を実施例で示す。
図1には、本実施例におけるネットワーク装置の構成例を示す。
ネットワークからパケットを送受信するためのネットワークインタフェース部12、パケットをスイッチファブリック等に送信するための入力側スイッチファブリックインタフェース部14、パケットを交換するスイッチファブリック40、パケットをスイッチファブリック等から受信するための出力側スイッチファブリックインタフェース24、入力側でパケット処理を実施するためのネットワークプロセッサアクセラレータ13、ネットワークプロセッサ15、前記ネットワークプロセッサ15が参照するためのテーブルメモリ16、出力側でパケット処理を実施するためのネットワークプロセッサアクセラレータ23、ネットワークプロセッサ25、前記ネットワークプロセッサ25が参照するためのテーブルメモリ26等で、ネットワーク装置は構成される。この他にネットワークプロセッサやネットワークプロセッサアクセラレータの要求に応じて処理を実施するホストプロセッサへのインタフェース等もある。
次に、図1に示したネットワーク装置における基本的なパケット処理の動作を説明する。まず、ネットワーク装置のネットワークインタフェース部12において、ネットワークから光信号または電気信号を受信し、ネットワークプロセッサアクセラレータ13がサポートするレイヤ2のデータリンク層フレームや、レイヤ3のネットワーク層のパケットに変換して転送する。図1中では、ネットワークを一本だけしか示していないが、ひとつのネットワークインタフェース部12に複数のネットワークを接続しても良い。
ネットワークプロセッサアクセラレータ13に到着したパケットは、処理速度向上が比較的困難な外部メモリ参照を伴う高度なプログラム処理、例えば、ルーティングテーブル検索やアドレス変換テーブル検索、プロトコル処理等を必要とし、同時に処理速度向上が比較的容易なビット列操作処理、例えばヘッダ情報の付加、削除、置換、修正といった処理も必要とする。
ネットワークプロセッサアクセラレータ13は、前記の処理速度向上が困難なパケット処理結果を記録しておくプロセスキャッシュが設けられる。プロセスキャッシュは、キャッシュメモリとキャッシュを参照するための種々の手段を備えている。詳細は後段で説明する。ネットワークインタフェース部12から受信したパケットが、プロセスキャッシュに登録されている処理結果を利用できると判定したら、ネットワークプロセッサアクセラレータ13のみで処理速度向上が容易な残りのパケット処理を実施し、入力側スイッチファブリックインタフェース部14へ送信する。ネットワークプロセッサアクセラレータ13は、外部接続メモリ参照の影響によってパケット処理速度が低速化することを避けるために、受信したパケットを保持するためのパケットメモリを内蔵するが、オプションとして、外部に高速にネットワークプロセッサアクセラレータ13とパケットの送受信を行うパケットメモリを持つ手段もある。
ネットワークプロセッサアクセラレータ13は、処理速度向上の困難な部分のパケット処理結果がプロセスキャッシュに登録されていないパケットをネットワークインタフェース部12から受信した場合、前記の処理速度向上が困難な部分のパケット処理結果を得るために、外部に接続するネットワークプロセッサ15に前記パケットを渡す。ネットワークプロセッサ15に渡すパケット形式は、ネットワークプロセッサアクセラレータ13がネットワークインタフェース部12から受信した形式の前にネットワークプロセッサアクセラレータ13が内部で利用する専用ヘッダを付加する形式である。前記専用ヘッダには、例えば、ネットワークプロセッサ15から処理結果が戻ってくるときに、どのパケットの処理結果が即座に判断できるようにパケットの整理番号や、ネットワークプロセッサ15に依頼したい処理内容を示すフラグ等が含まれる。
また、ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の配線数をNAin、ネットワークプロセッサのパケットを受け取るインタフェース部の配線数をNPinと、前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数をNPoutとしたとき、NPinとNPoutは、利用するネットワークプロセッサに依存する。通常、NPin=NPoutの関係が成立している。また、本実施例1の構成は、図2に示す従来構成であればネットワークプロセッサが配置される位置にネットワークプロセッサアクセラレータを配置するため、従来構成との配線数互換性を保つためにNAin=NPinとすることを基本とする。ただし、ネットワークプロセッサが受信するパケット数が、ネットワークプロセッサアクセラレータがネットワークから受信するパケット数に比べて十分少ない場合、NPinとNPoutの和がNAin程度となるように、つまり、入出力配線数の少ないネットワークプロセッサを用いるか、もしくは、ネットワークプロセッサの入出力配線数の合計は従来と同じで、NAinが従来比2倍となるネットワークプロセッサアクセラレータを用いて構成しても構わない。
また、ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の帯域幅をBWAin、ネットワークプロセッサのパケットを受け取るインタフェース部の帯域幅をBWPin、前記ネットワークプロセッサのパケットを送り出すインタフェース部の帯域幅をBWPoutとしたとき、BWPinとBWPoutは、利用するネットワークプロセッサに依存する。通常、BWPin=BWPoutの関係が成立している。前記ネットワークプロセッサアクセラレータはプロセスキャッシュにヒットするパケットは、前記ネットワークプロセッサに処理を依頼する必要がないため、BWPin<BWAinの帯域幅で十分である。
ネットワークプロセッサ15は、パケットを受信すると、必要な処理のうち処理速度向上が困難な部分の処理を実行する。必要な処理は、前記のネットワークプロセッサアクセラレータ13が付加するヘッダを参照して実行する方法、ヘッダの有無にかかわらず、ネットワークプロセッサ15のプログラムに従って実行する方法がある。いずれにしても、ネットワークプロセッサ15は、ネットワークプロセッサアクセラレータ13が直接実行しないパケット処理を実行する。ネットワークプロセッサアクセラレータ13が直接実行しないパケット処理としては、例えば、テーブルメモリ16に格納される変換テーブルを参照してのパケットの経路検索(ルーティングテーブル検索)や、IPv4(Internet Protocol Version 4)アドレスからIPv6(Internet Protocol Version 6)アドレスへの変換、IPv6アドレスからIPv4アドレスへの変換、IPv4アドレスから別のIPv4アドレスへの変換、IPv6アドレスから別のIPv6アドレスへの変換、MPLS(Multi Protocol Label Switching)やVLAN (Virtual Local Area Network)等のラベルの追加、交換、削除等やRIP(Routing Information Protocol)やOSPF(Open Shortest Path First)等のプロトコル処理等がある。ここで、上述した各種の変換処理を行なうための変換テーブルを格納するメモリは、各種変換テーブル毎に専用のテーブルメモリが設けられることが多い。例えば、ルーティングテーブル検索用のテーブルメモリやIPv6アドレスからIPv4アドレスへの変換テーブルメモリなどである。前記のプロトコル処理やその他の処理でネットワークプロセッサ15において処理しきれない部分のパケット処理はPCIインタフェース等ネットワークプロセッサ15に組み込まれているインタフェースを通じてホストプロセッサで処理する。ネットワークプロセッサアクセラレータ13が機能として持っている、パケット処理速度向上が容易なヘッダの付加、削除、置換、修正等の処理は実行する必要はない。
ネットワークプロセッサ15は、オプションとしてネットワークプロセッサアクセラレータ13から送信されたパケットを保持するためのパケットメモリを内蔵しない場合、もしくは内蔵していても少量である場合は外部にパケットメモリを持つこともある。
ネットワークプロセッサ15は、必要なパケット処理を実施した後、ネットワークプロセッサアクセラレータ13が利用する専用ヘッダを処理結果に付加してネットワークプロセッサアクセラレータ13に送信する。前記専用ヘッダには、ネットワークプロセッサアクセラレータ13から該当パケットを渡されたときの整理番号や、処理結果の形式等が含まれる。前記処理結果の形式には、処理済パケット全体、処理済パケットのうちヘッダ部分だけ、プロセスキャッシュに登録する形式そのもの等がある。いずれの形式にするかは、ネットワークプロセッサのプログラムにより修正することができる。
ネットワークプロセッサアクセラレータ13は、ネットワークプロセッサ15から処理結果を受信すると、前記処理結果をプロセスキャッシュに登録するとともに、該当するパケットに処理結果を適用して、ヘッダの付加、削除、置換、修正等の処理は実施した後、スイッチファブリック40用のヘッダを付加して入力側スイッチファブリックインタフェース14へ処理済パケットを送信する。
スイッチファブリック40への入力側スイッチファブリックインタフェース部14は、パケットをスイッチファブリック40に送信し、入力側のパケット処理が終了する。
スイッチファブリック40には、ネットワークプロセッサアクセラレータ13、ネットワークプロセッサ15、テーブルメモリ16、スイッチファブリックインタフェース部14等で構成されるネットワークからの入力側のパケットを扱う部位が複数接続されている。また、スイッチファブリック40には、前記のネットワークからの入力側のパケットを扱う部位と同数の、ネットワークへの出力側のパケットを扱う部位が接続されている。前記のネットワークへの出力側のパケットを扱う部位は、ネットワークプロセッサアクセラレータ23、ネットワークプロセッサ25、テーブルメモリ26、スイッチファブリックインタフェース部24等で構成されている。スイッチファブリック40では、受信したパケットに付加されているスイッチファブリック40用のヘッダを参照し、該当するスイッチファブリック40の出力ポートに転送する。
ネットワーク装置の出力側ではスイッチファブリック40から、出力側スイッチファブリックインタフェース部24によってパケットを受信する。
ネットワーク装置の出力側では、以上に述べたネットワーク装置の入力側の処理と同様の処理を、スイッチファブリックインタフェース部24からネットワークインタフェース部12の方向へ向かって実施し、ネットワークインタフェース部12でパケットまたはフレームを、光信号または電気信号に変換してネットワークに送出する。
なお、図示されていないが、本実施例のネットワークプロセッサアクセラレータおよびネットワークプロセッサは、基板上に実装するための配線用ピンを備えており、ネットワーク装置を構成する他のデバイスとは、互いに配線ピンに接続される配線を介して接続されている。例えば、図1のネットワークプロセッサアクセラレータ13が基板実装される際には、複数の配線用ピンがネットワークプロセッサアクセラレータ13に付加され、複数の配線ピンの一部がネットワークインタフェース部12、入力側スイッチファブリックインタフェース部14,ネットワークプロセッサ15に割り当てられる。これは、出力側のネットワークプロセッサ23や、他のデバイスについても同様である。
次に、ネットワークプロセッサアクセラレータの内部構成例について詳細に説明する。入力側でも、出力側でも同一のネットワークプロセッサアクセラレータを利用可能であるため、ここではネットワークプロセッサアクセラレータ13を用いて説明を行う。
図3には、図1に示したネットワークプロセッサアクセラレータ13の内部構成例を示す。ネットワークプロセッサアクセラレータ13は、外部からパケットを受信し、内部で処理可能な形式に変換するための入力インタフェース101、受信したパケットを保持するパケットメモリ107、受信したパケットの解析を行い、内部処理に必要な情報のみを抽出するパケット解析部102、前記パケット解析部102で生成された抽出情報からプロセスキャッシュを参照して、その結果によりパケットの処理パスを変更するためのプロセスキャッシュ参照部103、プロセスキャッシュに登録されていなかったパケットを扱うキャッシュミス処理部104、ビット列操作によりパケットヘッダの付加、削除、置換、修正、パケットの再構築を行う後処理部105、処理済みパケットをネットワークプロセッサアクセラレータ13の外部に出力するための出力インタフェース部106、外部に接続するネットワークプロセッサへの入出力形式を変換するための入出力変換器108等から構成される。この他にも、PCI等のホストプロセッサとのインタフェース等を持つ。入出力変換器108は、外付けのネットワークプロセッサと接続するためのインタフェース機能も兼ねている。このようなインタフェース機能を備えることの利点としては、接続するネットワークプロセッサを交換可能にできる点がある。例えば、プロセスキャッシュに未登録のパケットが次々と大量に到着する状況の発生頻度が増加する場合等、接続するネットワークプロセッサを処理速度が速いものに交換することで対応可能である。実装上は、先に説明したように、チップに付加される配線ピンの一部をネットワークプロセッサとの接続専用にすることで実現される。
更に、一つのネットワークプロセッサアクセラレータに対して、インタフェースを介して複数のネットワークプロセッサを接続しても良い。この場合、インタフェースにはスイッチ機能を持たせて、一つのアクセラレータと複数のネットワークプロセッサとの接続を切替える。接続の切替え方としては、パケットを受信する毎に接続を順次切替えて行く方法がある。この場合、パケットをカウントするためのカウンタを設ける必要がある。本方式は、簡便に実現できるため、コスト的に有利というメリットがある。
あるいは、スイッチに負荷分散機能を持たせても良い。この場合、接続する複数のネットワークプロセッサの動作効率を上げられる利点があるが、インタフェースの機能が複雑になるため、コスト的に損である。
図4には、図3に示したネットワークプロセッサアクセラレータ13の動作に関するフローチャートを示す。
まず、入力インタフェース101を利用して、外部よりレイヤ2もしくはレイヤ3の形式でパケットを受信し、ネットワークプロセッサアクセラレータ内部で処理可能な形式に変換する。(S101(図4のフローチャート上の番号))。
次に、受信したパケットを同一チップ上に配置する大容量のパケットメモリ107へ保持するとともに、パケット解析部102において、パケットを走査し、レイヤ2から順に必要なレイヤまでのヘッダ情報位置を特定し、必要部位を抽出する(S102)。
この解析と抽出を高速に行うために、例えば、バレルシフタ、マスク論理、比較器をパイプライン的に組み合わせて実施する方法がある。フレームやパケットのヘッダ情報に含まれる様々なフィールドは整数バイトの大きさで構成されているため、シフトやマスクはバイト単位で実施できれば十分である。実際の抽出には、例えば、32バイトから64バイト程度の抽出用バスを用意し、このバスにマスク論理とバレルシフタセットを複数セット、次の抽出部位を決定するための判定を行う比較器を備え、最終段に抽出情報を結合するためのラッチを置く。バレルシフタセットは、1、2、4、8、16、32バイトのシフト論理を組み合わせたものにすれば、64バイト以内の自由な移動が可能である。マスク論理は、既抽出部分にそれ以上のシフトが加わらないように、特定のバイトまでをマスクするために用いる。
この抽出用バスにパケットを通すと、前記マスク論理とバレルシフタセット一組につき、抽出用バス幅の範囲内で一部位を抽出可能である。パケットのヘッダ部分が抽出用バス幅に比べて長い場合は、抽出を行いたいパケットヘッダ長を抽出用バス幅で割って、切り上げた整数分箇所の抽出が可能である。例えば、IPv4パケットのプロトコル番号、送信元IPアドレス、宛先IPアドレスを抽出するケースでは、送信元IPアドレスフィールドと宛先IPアドレスフィールドは連続しており、プロトコル番号フィールドだけ離れているため、2セット分のマスク論理とバレルシフタセットで抽出可能である。様々な抽出パターンがありうるが、4から6セット程度、前記のマスク論理とバレルシフタセットがあれば抽出には十分である。
オプションとして、パケット解析結果から一意にシフト量、マスク量を決定せずに、マスク論理、バレルシフタセットの隣にシフト量、マスク量のパターンをプログラムしたメモリを設置して、パケット解析結果によりこのメモリを参照して、マスク量、バレルシフタ量を決定する方法がある。以上により、パケットのヘッダ情報より必要な情報を抽出する。
ここで、図5にプロセスキャッシュの内部構造を示す。以下の説明では、受信パケットのヘッダ情報から抽出された必要情報を抽出情報のことを抽出ヘッダ712と呼ぶ。また、パケット解析によって得られたパケットのタイプや、パケットメモリ107へのポインタ情報、その他、ネットワークプロセッサアクセラレータの内部情報を、ここでは便宜的に内部ヘッダ711と呼ぶ。前記抽出ヘッダに前記内部ヘッダを付加したものを、ここでは便宜的にトークン713と呼ぶ。
プロセスキャッシュは、タグ部302、有効ビット部303、データ部304で構成される。また図5において、アドレス生成部301、比較器305、選択部306とを含む点線で囲った領域がいわゆるキャッシュメモリとキャッシュメモリに関連する論理に相当する。タグ部302は、処理結果が登録済みパケットのトークン713の内部ヘッダ711の一部と抽出ヘッダ712の全てを記録している。有効ビット部303は、関連するタグ部302のデータ、データ部304のデータの有効・無効状態を示す情報を記録している。データ部304は、パケット処理結果情報を持つトークンを記録する。
図6には、データ部304の構造を示した。データ部304の各エントリの形式は同一である必要はなく、さまざまなデータパターンが入りうる。例えば、あるエントリは置換え後内部ヘッダとして宛先ポート341、およびその他の内部ヘッダ342、置換え後抽出ヘッダとしてIPv4の宛先IPアドレス343、送信元IPアドレス344、QoS情報347、TCP宛先ポート345、TCP送信元ポート346等を含んでいて良く、あるエントリはVLAN情報348や、レイヤ7情報349、例えばURL(Uniform Resource Locator)等を含んでいても良い。また、あるエントリは、MPLS情報350、351を持っていたり、IPv6の宛先IPアドレス352や、送信元IPアドレス353等を含んでいても良い。データ部304に記録されているデータは、トークン713を置き換える情報となる。
トークン713の内部ヘッダ711の一部、例えばレイヤ3のプロトコルタイプ等と抽出ヘッダ712全てによってアドレス生成部301によって、プロセスキャッシュを参照するが、抽出ヘッダ712は、例えばIPv4の送信元IPアドレス、宛先IPアドレス他、様々な情報を含むため、例えば40バイトから64バイト程度の長さを持つ。この長さに相当するメモリのエントリ数は2の320乗から512乗と非現実的な巨大な値になるので、抽出ヘッダ712をアドレス生成部301で縮約してから、プロセスキャッシュを参照する必要がある。
例えば、Nを1以上の整数、Aを0もしくは1として、プロセスキャッシュのエントリ数を2の(2N+A)乗エントリとする場合、抽出ヘッダ712の送信元IPアドレスの低位からNビット、及び宛先IPアドレスの低位ビットからN+1ビットを取り出し組み合わせてアドレスを生成する方式や、宛先IPアドレスの低位ビットから(2N+A)ビット取り出してアドレスを生成する方式、抽出ヘッダ712全体に対して、CRC(Cyclic Redundancy Check)演算の剰余項を利用して抽出ヘッダ712を2N+Aビットに縮約してアドレスを生成する方式等が利用できる。トークン713から、前記のいずれかの方法で生成したアドレスにより、プロセスキャッシュをアクセスして(S103)、タグ部302から得られる値と、元のトークン712を比較器305により比較し、一致していて、尚且つタグが有効(有効ビット303の値が有効)であれば、プロセスキャッシュに当該パケット情報が登録されているとみなし、前記の比較が不一致であるかタグが無効(有効ビット303の値が無効)であれば、当該パケット情報は未登録とみなす (S104)。
図5では、プロセスキャッシュは、パケットに対してエントリの割り当て位置を一意に定めるダイレクトマップ方式として示しているが、パケットに対してエントリの割り当て位置をn箇所として定めるn−wayのセットアソシアティブ方式を用いる方法もある。n−wayのセットアソシアティブ方式を用いる場合は、n箇所全ての割り当て箇所が埋まっているケースで、新たなパケット処理結果を登録する場合に、書き潰してしまうエントリを選択するために、プロセスキャッシュに最も利用されていないエントリを示すためのLRU(Least Reacently Used)ビットや一番古いエントリを示すためのFIFO(First In First Out)ビット等の上書きするためのエントリを決定するための情報ビットを付与する。
当該パケット情報が登録されている、つまりプロセスキャッシュにヒットした場合(S104からYES方向に分岐)には、トークンの内部ヘッダ711に含まれる整理番号やパケットメモリへのポインタ情報等、各トークンに固有の情報を除き、プロセスキャッシュに登録されている宛先ポート番号などを含む内部ヘッダ721、アドレス変換結果なども含まれる抽出ヘッダ722から構成されるトークン723に選択部306を通じて置き換える(S105)。
プロセスキャッシュにヒットした後は、後処理部105にて、トークンの内部ヘッダに含まれるパケットメモリポインタ情報を基にパケットメモリ107から元のパケットを読み出し、トークンの内部ヘッダ情報に従い、トークンの抽出ヘッダ情報を元のパケットに適用してパケットを組み立てなおし(S106)、トークンの内部ヘッダ情報に従い、パケットのヘッダの一部を書き換え(S107)、出力インタフェース部106にてパケットの出力先の形式に変換したパケットを送出する(S108)。
プロセスキャッシュ103に当該パケット情報が登録されていない、つまりプロセスキャッシュにミスした場合(S104からNO方向に分岐)には、キャッシュミス処理部104にトークン723を渡し、キャッシュミス処理を実施し(S110)する。この場合、トークン723は、プロセスキャッシュにアクセスする前のトークン713と同一のものである。
図7には、図3に示されるキャッシュミス処理部104の構造の一例について示す。併せて、図8のフローチャートを用いて、キャッシュミス処理部104の動作について説明する。
キャッシュミス処理部104は、外部のネットワークプロセッサに処理依頼中のパケットを管理するための第一のテーブル401(ここでは便宜的に初期ミステーブルと呼ぶ)と、前記初期ミステーブル401に管理されているパケットと同じ処理結果が期待されるパケットを外部のネットワークプロセッサに処理依頼を出さずに保持するための第二のテーブル402(ここでは便宜的に多重ミステーブルと呼ぶ)と、パケットに整理番号や、処理依頼内容を示すフラグ等専用のヘッダを付加して外部のネットワークプロセッサに渡せる形式にするための出力形式変換部403と、パケット処理結果を受信し管理するための第三のテーブル404(ここでは便宜的に処理情報テーブルと呼ぶ)と、処理済のパケット情報をトークンに適用する処理済トークン生成部405等から構成される。
キャッシュメモリに処理結果が登録されていないパケットを受信すると、図3のネットワークプロセッサアクセラレータは、図4のフローチャートのステップS110に示されるキャッシュミス処理を開始する。まず、プロセスキャッシュ103が、キャッシュミス処理部104へトークンを送信する。キャッシュミス処理部104は、トークンを受信すると、初期ミステーブル401を参照し、当該トークンが登録されているかどうか調べる(図8のS201)。
当該トークンが初期ミステーブル401に登録されている場合(S201からNO方向に分岐)、多重ミステーブル402に当該トークンの内部ヘッダのうち、各トークンが持つ整理番号や、元のパケット情報を示すためのパケットメモリ107へのポインタ情報等の固有情報だけを多重ミステーブル402に登録し、外部ネットワークプロセッサにはパケット処理依頼を出さずに、一旦処理を終了する(S204)。
多重ミステーブル402は、同一処理結果が出るパケットを外部ネットワークプロセッサに送信することを抑止し、外部ネットワークプロセッサへかける負荷を減少させることができる。多重ミステーブル402は様々な構成方法が考えられるが、本実施例では、代表的な構成例について、後段で3種類ほど例示する。
プロセスキャッシュでミスをしたトークンが初期ミステーブル401に登録されていない場合(S201からNO方向に分岐)、初期ミステーブル401に当該トークンを登録する(S202)。そして、トークンの内部ヘッダ情報からパケットメモリ107を参照して元のパケットを取り出し、出力形式変換部403が、外部に接続するネットワークプロセッサに処理を依頼するための処理内容や、パケットの整理番号等を含むヘッダ情報を付加して、入出力変換器108に送信する。入出力変換器108はネットワークプロセッサアクセラレータ13から出力できるMACフレーム等のレイヤ2やIPパケットなどのレイヤ3等の形式にパケットを変換して、外部に接続するネットワークプロセッサに処理を依頼する(S203)。
外部に接続したネットワークプロセッサの処理に関しては、先に図1に示すネットワーク装置のところで説明したとおりである。
図8では、キャッシュミス動作を開始してから外部のネットワークプロセッサにパケット処理を依頼するステップまでの動作を説明した。そこで、次は、依頼したパケット処理の結果を外部のネットワークプロセッサから受け取った後のキャッシュミス処理部の動作について、図12に示すフローチャートを用いて説明する。
図12には、ネットワークプロセッサアクセラレータが、外部ネットワークプロセッサからの処理済パケット情報を入出力形式変換器108によって受信した後のキャッシュミス処理部104での処理ステップが示されている。
キャッシュミス処理部104は、受信したヘッダ情報を調べ(S301)、受信したパケットが無効であれば(S301でNO方向に分岐)、再度外部ネットワークプロセッサに同パケットの処理依頼を出す(S310)。受信したパケットが有効であれば(S301でYES方向に分岐)、処理済パケット情報を処理情報テーブル404に登録し、対応する情報をプロセスキャッシュ103に登録する(S303)。プロセスキャッシュの構成が、ダイレクトマップ方式の場合、登録エントリに既に有効なエントリが入っていたら、そのまま上書き登録する。プロセスキャッシュの構成がn−wayのセットアソシアティブ方式である場合、空いているwayのエントリに登録するが、n−way全てが埋まっている場合は上書きすべき位置を決めるためのLRU等のビット情報を元に登録するエントリを決定し、そのエントリに当該情報を上書きする。
また、処理済パケットに該当する初期ミステーブル401のエントリに処理結果を適用、すなわち、プロセスキャッシュ103でヒットしたケースで実施されるのと同様のトークン置き換え操作を実施し、後処理部104へ送出する(S304)。
更に、多重ミステーブル402も走査して該当エントリの存在の有無を確認し(S305)、該当エントリが見つかれば(S305のNO方向に分岐)、多重ミステーブル402の最初の該当エントリに、初期ミステーブル401の該当エントリの必要情報と一緒に、前記と同様のトークン置き換え操作を実施し、後処理部104へ送出し(S320)、多重ミステーブル402の該当エントリを削除する(S321)。
以後、多重ミステーブル402から該当エントリがなくなるまでこのS305、S320、S321の作業を繰り返し、該当エントリがなくなったら(S305のYES方向に分岐)、初期ミステーブル401から該当エントリを削除し、該当パケットに関する一連のキャッシュミス処理を終了する(S306)。
尚、一構成例として、初期ミステーブル401はエントリ毎にひとつずつタイムアウトカウンタを持っても良い。パケットを外部のネットワークプロセッサに送信してから予め設定した閾値を超えたら、外部ネットワークプロセッサがパケットロスしたものとして再度、該当パケットの処理を外部ネットワークプロセッサに依頼する。
キャッシュミス処理部を備えることにより、外部に接続するネットワークプロセッサへの無駄な処理依頼を削減できる。また、前記ネットワークプロセッサから処理結果が届いた後に、該当するパケット全てに処理結果を適用できるため、プロセスキャッシュにミスしたパケットの処理をプロセスキャッシュに登録されている、即ち、プロセスキャッシュにヒットしたのと同じ状態で扱うことが可能である。
図9,10,11には、図7に示した多重ミステーブルの代表的な構成例を3種類示す。いずれの方法でも多重ミステーブル402に用意されている、当該パケット(トークン)に利用可能なエントリがなくなるまでは当該トークンを保持することが可能であるが、エントリを使い切るとそれ以降に届くパケット(トークン)は廃棄されることになる。
図9に示す多重ミステーブル402は、初期ミステーブル401のエントリ数をNとしたとき、Nに等しい数のキューを持つ構成の例で、図9では各キューの深さはMとしてある。初期ミステーブル401は、多重ミステーブル402にもキャッシュミストークンを保持しているかどうかを示すビットをもっている。キャッシュミス処理部104は、トークンを受信し、初期ミステーブル401に同一のトークンが見つけると、初期ミステーブル401のエントリに対応する多重ミステーブル402のキューの空きエントリに登録する。該当する多重ミステーブル402のキューに空きエントリがない場合は、当該トークンに対応するパケットを廃棄する。
処理情報テーブル404に対応するトークンの処理結果がある場合、多重ミステーブル402の対応するキューのエントリ全てに順番に前記処理結果を適用して、適用したエントリから順に多重ミステーブル402のエントリを開放する。
図10に示す多重ミステーブル402は、結合リスト方式で構成した例である。初期ミステーブル401の各エントリに、結合リストとして一組のエントリの多重ミステーブル402上での開始位置を示すヘッド情報と、終了位置示すテイル情報を持つ。多重ミステーブル402のエントリは、同一のトークンが存在するかどうかを示すリンク情報を持つ。リンク情報は、初めて登録する時点ではENDという、多重ミステーブル402上で次の同一トークンが存在しない状態を示す情報を書いておくが、次の同一のトークンが届いたとき、最初のエントリの前記END部分に、次の同一トークンを登録するための多重ミステーブル402上でのエントリ位置を示すポインタ情報を書き直し、初期ミステーブル401の該当するエントリのテイル情報も書き直し、結合リンクを伸ばしていく。更に、多重ミステーブル402全体での先頭を示すグローバル・ヘッド情報と最後尾を示すグローバル・テイル情報を管理するためのグローバル・ヘッド・テイル管理テーブル420を置き、前記グローバル・ヘッド・テイル管理テーブルテーブル420により多重ミステーブル402全体での利用されているエントリの先頭位置と、エントリの最後尾位置を把握する。
処理情報テーブル404に対応するトークンの処理結果がある場合、対応する初期ミステーブル401のエントリ番号に記録されている多重ミステーブル402のリンク情報をたどり、該当するエントリのトークンに前記処理結果を適用して、適用したエントリから順に多重ミステーブル402のエントリを開放する。前記開放が多重ミステーブル402全体でのエントリの先頭位置、最後尾位置を変える場合は、グローバル・ヘッド・テイル管理テーブル420のグローバル・ヘッド情報、グローバル・テイル情報も修正する。
図11に示す多重ミステーブル402は、CAMもしくはフルアソシアティブメモリで構成した例である。初期ミステーブル401は、多重ミステーブルに幾つのキャッシュミストークンを保持しているかを示すためのカウンタを持っている。キャッシュミス処理部104は、トークンを受信し、初期ミステーブル401に同一のトークンが見つけると、多重ミステーブル402上の空いているエントリを選択し登録し、前記カウンタを1増やす。このエントリの選択は、初期ミステーブル401のエントリ番号と、前記エントリ番号に対して、何番目に多重ミステーブル402に到着したかを示す番号の組合せによって決定する。多重ミステーブル402がCAMもしくはフルアソシアティブメモリであるため、エントリの割り当て位置自体は、CAMもしくはフルアソシアティブメモリの総エントリ数の中で自由に決まる。CAMもしくはフルアソシアティブメモリに空きエントリがない場合は、当該トークンに対応するパケットを廃棄する。
処理情報テーブル404に対応するトークンの処理結果がある場合、対応する初期ミステーブル401のエントリ番号と整数Kを組み合わせが示す多重ミステーブル402のエントリに、前記処理結果を適用して、適用したエントリから順に多重ミステーブル402のエントリを開放する。ここで、前記整数Kはゼロから、該当する初期ミステーブル401のエントリに登録されているカウンタの示す値までである。
次に、図3に戻って、キャッシュミス処理部104の後段の構成、動作について説明する。後処理部105は、プロセスキャッシュ103にヒットして情報の置き換えられたトークン723、およびプロセスキャッシュ103にミスしてキャッシュミス処理部104を通じて外部ネットワークプロセッサで処理され、情報を置き換えられたトークン723を受け取るパスを持つ。
後処理部105は、受信したトークンの内部ヘッダ情報を基にパケットメモリ107をアクセスし、基のパケットを取り出しつつ、トークンの置き換え抽出ヘッダの内容をトークンの内部ヘッダ情報に従い適用してパケットの再構築、ヘッダ情報の付加、削除、置換、修正等、例えばIPv4のTTL(Time To Live)の修正やHeader Checksumの計算等を行う(図4のフローチャートに戻り、S106)。後処理部105も、パケット解析部102と同様に高速性が要求されるため、パケット解析部102と同等のバレルシフタセット、マスク論理をパイプライン的に組み合わせて実施する方法を適用する。
最後に、出力インタフェース部106において、パケットを送出できる形式に変換して出力する。このときネットワークプロセッサアクセラレータの先にスイッチファブリックが繋がっているならば、スイッチファブリック用のヘッダ情報をパケットに付加する。例えば、スイッチファブリックのポート番号等が含まれるが、これは、トークンの中の内部ヘッダに含まれているので、それを利用すればよい。ネットワークインタフェースが繋がっているならば、そのネットワークインタフェースがサポートするレイヤ2、もしくはレイヤ3の形式にパケットを変換して出力する。尚、出力先ネットワークインタフェースが複数の出口を持つ場合には、やはりトークンの中の内部ヘッダに含まれているポート番号を利用して出口のネットワークインタフェースを決定する(S107)。
以上、本発明によるネットワークプロセッサアクセラレータを利用したネットワーク装置および、ネットワークプロセッサアクセラレータそのものの一実施例を説明した。本説明はあくまで一実施例の説明であり、本発明の範囲を限定するものではなく、様々な変形例に対して適用可能である。
実施例2として、プロセッサ、もしくは既存のネットワークプロセッサを同一チップ上に組み込んだネットワークプロセッサアクセラレータを用い、外部にはネットワークプロセッサを接続しないネットワーク装置の構成例を図13に示す。この構成のネットワークプロセッサアクセラレータは、図3の入出力変換器の位置に組み込みプロセッサ、もしくは、入出力変換器の先の同一チップ内に既存のネットワークプロセッサを搭載している。
基本的なパケット処理の流れについては、実施例1と同じだが、ネットワークプロセッサアクセラレータのプロセスキャッシュでキャッシュミスを起こしたパケットは、ネットワークプロセッサアクセラレータに搭載された組み込みプロセッサ、もしくはネットワークプロセッサで処理が行われる。キャッシュミス処理部の構成に関しては、実施例1の方法がそのまま適用可能である。
外部に置かれるテーブルメモリ16、26へは、ネットワークプロセッサアクセラレータ13、23が内蔵する組み込みプロセッサ、もしくはネットワークプロセッサがアクセスする。
実施例2の構成でプロセッサを組み込んで用いるメリットとして、プロセスキャッシュに登録すべきパケット処理も同一チップ上のプロセッサ部分で実施できるため、処理するパケットをネットワークプロセッサアクセラレータの外部のネットワークプロセッサに送信、また外部のネットワークプロセッサから受信するオーバヘッドを削減できる。実施例2の構成で既存のネットワークプロセッサを組み込んで用いるメリットとして、前記既存ネットワークプロセッサとのインタフェース分の入出力ピンを設ける必要がなくなる。
なお、実施例2の構成でプロセッサ、または既存のネットワークプロセッサを組み込んで用いるデメリットとしては、チップ面積を前記プロセッサ用にも割り当てる必要があることである。
実施例3として、組み込みプロセッサ、もしくは組込みのネットワークプロセッサを組み込んだネットワークプロセッサアクセラレータを用い、外部にもネットワークプロセッサを接続するネットワーク装置の構成例を図14に示す。この構成のネットワーク装置で用いるネットワークプロセッサアクセラレータの構成例を図15に示す。図3のネットワークプロセッサアクセラレータとの構成上の大きな違いは、組み込みプロセッサ120もしくは組み込みネットワークプロセッサ130を持つ点、キャッシュミス処理部104が組み込みプロセッサ120と入出力変換器108両方にインタフェースを持っている点と、入出力変換器108が外部へネットワークプロセッサを接続するためのインタフェースとチップ上に搭載する組み込みネットワークプロセッサ130へのインタフェースを持つ点である。
組み込みプロセッサ120、組み込みネットワークプロセッサ130はいずれか片方を持てばよいが、両方持っても構わない。
基本的なパケット処理の流れについては、実施例1と同じだが、ネットワークプロセッサアクセラレータのプロセスキャッシュでキャッシュミスを起こしたパケットは、ネットワークプロセッサアクセラレータに搭載された組み込みプロセッサ120、もしくはネットワークプロセッサ130で処理が行われる。これらのプロセッサで処理している最中に新たなキャッシュミスパケットが到着した場合、入出力変換器104を通して外部のネットワークプロセッサへパケット処理依頼を出すことになる。キャッシュミス処理部の構成に関しては、実施例1の方法がそのまま適用可能である。
外部に置かれるテーブルメモリ16、26へは、ネットワークプロセッサアクセラレータ13、23が内蔵する組み込みプロセッサ、もしくはネットワークプロセッサ、及び、外部に接続するネットワークプロセッサ15,25がアクセスする。両者からのアクセスがぶつからないよう制御するためのテーブルメモリ16、26用のアービタを必要とする。
実施例3の構成でプロセッサを組み込んで用いるメリットとして、組み込みプロセッサの処理プロセッサ数がプロセスキャッシュでミスしたパケットに対して足りているうちは、ネットワークプロセッサアクセラレータ内部だけで全ての処理を実施できるため、チップ外部とのパケットの送受信オーバヘッドを削減でき、加えて組み込みプロセッサのパケット処理速度が不足するときに、外部に拡張的にネットワークプロセッサを追加して不足分を補うことが可能である。実施例3の構成で既存のネットワークプロセッサを組み込んで用いるメリットとして、新規に組み込みプロセッサ部を設計しないで済む点が上げられる。
なお、実施例3の構成でプロセッサ、または既存のネットワークプロセッサを組み込んで用いるデメリットとしては、チップ面積を前記プロセッサ用にも割り当てる必要があることである。また、外部に接続する既存のネットワークプロセッサとのインタフェースも必要となるため、前記インタフェース分の面積、入出力ピンが必要となる。
実施例4として、図16に、ネットワークプロセッサアクセラレータ13、23の入出力変換器の先に、更にネットワークプロセッサアクセラレータ32、33の入力インタフェース部、出力インタフェース部を接続し、ネットワークプロセッサアクセラレータ32、33の入出力変換器の先にネットワークプロセッサを接続するネットワーク装置の構成例を示す。図16では、2段のネットワークプロセッサアクセラレータの構成であるが、ネットワークプロセッサアクセラレータ13(または23)とネットワークプロセッサアクセラレータ32(または33)の間に更にネットワークプロセッサアクセラレータを接続することを続けて階層的に構成してよい。この構成例で用いるネットワークプロセッサアクセラレータは、実施例2、3のように内部にプロセッサを組み込む必要はないが、組み込んでも構わない。
外付けのネットワークプロセッサから最も遠い、最上位階層に位置するネットワークプロセッサアクセラレータでキャッシュミスを起こすと、入出力変換器を通して下層に相当するチップへ該当パケットを送信する。下層がネットワークプロセッサアクセラレータである場合、そこで再びプロセスキャッシュを引き、ヒットすればそのヒットデータを上層のネットワークプロセッサアクセラレータへ送信する。ミスすれば再び下層へ該当パケットを送信することを、ネットワークプロセッサに到達するまで繰り返す。
最下層のネットワークプロセッサでは、実施例1、2、3同様にパケット処理を実施し、結果を上位のネットワークプロセッサアクセラレータへ送信する。
途中階層に置くネットワークプロセッサアクセラレータのプロセスキャッシュへの登録例を示す。下層から送信されてくるパケット処理結果は、途中の階層のネットワークプロセッサアクセラレータのプロセスキャッシュへは登録せず、常に最上位層のプロセスキャッシュへ登録する。最上位層のプロセスキャッシュで、該当するエントリが一杯であったときに、下層がネットワークプロセッサアクセラレータであれば、該当エントリのひとつを選び、そのエントリのデータを下層のプロセスキャッシュへ追い出して、最新のデータのためにエントリを割り当てる。更に、下層のプロセスキャッシュの該当エントリが一杯で、追い出したデータが登録できなければ、再び該当エントリのひとつを選び、そのエントリのデータを下層のプロセスキャッシュへ追い出して、上層から追い出されてきたデータのためにエントリを割り当てることを再帰的に繰り返す。下層が、ネットワークプロセッサであれば、ネットワークプロセッサアクセラレータのプロセスキャッシュでは、該当データを上書きするだけである。
また、途中階層に置くネットワークプロセッサアクセラレータの後処理部は、最上位階層のネットワークプロセッサアクセラレータの後処理部のような送信パケットの再組み立ての作業が不要である。上層が認識できるパケット整理番号等を含むヘッダを、プロセスキャッシュへ登録する形のトークンに貼り付けて送信するだけでよい。
実施例4の構成のメリットとして、接続したネットワークプロセッサアクセラレータの数に応じてプロセスキャッシュの総容量が増加し多くのパケット処理結果を記憶できることがあげられる。各ネットワークプロセッサアクセラレータのプロセスキャッシュは、通常のプロセッサでいうところの階層キャッシュに見立てることができ、一次キャッシュに相当する最上位のプロセスキャッシュでミスしても、二次キャッシュに相当する次のネットワークプロセッサアクセラレータのプロセスキャッシュでヒットすれば、もしくは更に下の階層のプロセスキャッシュでヒットすれば、最下層のネットワークプロセッサでパケット処理をせずにすむ。
実施例4の構成のデメリットとして、接続するネットワークプロセッサアクセラレータの数に応じてネットワーク装置の部品代が上昇することがあげられる。また、実施例4は、最下層のネットワークプロセッサアクセラレータのプロセスキャッシュから、該当データを最上位層に渡すまでの時間をA、最上位層のネットワークプロセッサアクセラレータに直接ネットワークプロセッサを接続して、ネットワークプロセッサからネットワークプロセッサアクセラレータに該当データを渡すまでの時間をBとしたとき、A<Bとなる範囲でのみ有効である。
実施例5として、ネットワークからの入力側と出力側のパケットを単一のチップ上で扱うネットワークプロセッサアクセラレータ35を搭載するネットワーク装置の構成例を図17に示す。このネットワークプロセッサアクセラレータ35は、同一チップ上に、入力側と出力側それぞれ独立した入力インタフェース151、161、パケット解析部152、162、プロセスキャッシュ部153、163、後処理部154,164、出力インタフェース155,165、パケットメモリ156,166を持つが、それぞれのプロセスキャッシュ部でミスしたパケット(トークン)を共通のキャッシュミス処理部140で扱い、共通の入出力変換器141を通して外部のネットワークプロセッサ15にパケット処理依頼を出す。
共用するキャッシュミス処理部140で、入力側のパケット、出力側のパケットの管理フラグが追加される以外は、実施例1に示したネットワークプロセッサアクセラレータのキャッシュミス処理部104と同等の処理を行う。
実施例5の構成のメリットとして、ネットワーク装置の部品点数を減少させることができる。
なお、実施例5の構成のデメリットとして、ネットワークプロセッサアクセラレータは、ネットワークに対して入力側、出力側両方の論理を持つため、どちらか一方の論理だけを持つネットワークプロセッサアクセラレータに比べて、チップ面積が圧迫されやすい点がある。
図19には、ネットワークプロセッサとアクセラレータとを一つだけ用いてネットワーク装置を構成した実施例を示す。個々のデバイスの構成・動作については、実施例1で説明したものと同様である。本実施例のように、入力側と出力側とを一緒にしてネットワーク装置を構成することも原理的には可能である。図1に示した装置のように、入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとで、独立にアクセラレータ13とネットワークプロセッサ15を設ける場合に比べて動作は遅くなるが、構成が簡単になることから、製造コストの上では有利である。
ネットワークプロセッサ15の替りに汎用のCPUを用いてソフトウェア上でパケット転送処理を実現しても良い。この場合には、CPUの起動時にパケット処理用のソフトウェアをインストールするための外部制御器が必要となる。
なお、実施例1と同様、アクセラレータ13、ネットワークプロセッサ15、テーブルメモリ16を基板実装した後の各デバイス間の接続は、各デバイスに付与される配線ピンを介して行なわれる。
プロセスキャッシュのヒット率が90%では、ネットワークプロセッサアクセラレータに接続するネットワークプロセッサの10倍のピークパケット処理速度を持つネットワーク装置を構成することが可能となる。プロセスキャッシュのヒット率が50%でも、ネットワークプロセッサの2倍のピークパケット処理速度が得られる。この時ネットワークプロセッサアクセラレータは、ネットワークプロセッサより高速な割合に応じた速度でビット列操作をする能力が必要であるが、一般にビット列操作だけであれば複雑なプログラム処理を必要としないため、ハードウェアで実現可能である。
本発明のネットワークプロセッサアクセラレータは、従来のハイエンドのネットワークプロセッサを補助的に用いて、前記ハイエンドネットワークプロセッサのパケット処理速度を超える高速なネットワーク装置を構成可能である。また、ローエンドのネットワークプロセッサを補助的に用いて、ミドルクラス相当のネットワーク装置を安価に構成することが可能である。
本発明の実施の形態1における、ネットワークプロセッサアクセラレータと外付けのネットワークプロセッサを用いて構成したネットワーク装置のブロック図である。 従来のネットワークプロセッサを用いて構成したネットワーク装置のブロック図である。 本発明の実施形態1または4における、ネットワークプロセッサアクセラレータ内部のブロック図である。 ネットワークプロセッサアクセラレータのパケット処理のフローチャートである。 プロセスキャッシュ部の論理図である。 プロセスキャッシュのデータ構造例である。 ネットワークプロセッサアクセラレータのキャッシュミス処理部のブロック図である。 ネットワークプロセッサアクセラレータのキャッシュミスしたパケット処理のフローチャートである。 ネットワークプロセッサアクセラレータのキャッシュミス処理部の多重ミステーブルを固定サイズのキューで管理することを示す図である。 ネットワークプロセッサアクセラレータのキャッシュミス処理部の多重ミステーブルを結合リスト方式で管理することを示す図である。 ネットワークプロセッサアクセラレータのキャッシュミス処理部の多重ミステーブルをCAMもしくはフルアソシアティブメモリで管理することを示す図である。 ネットワークプロセッサアクセラレータのキャッシュミスしたパケット処理のフローチャートである。 本発明の実施の形態2における、ネットワークプロセッサ、もしくは組み込みプロセッサを内蔵したネットワークプロセッサアクセラレータを用い、外付けネットワークプロセッサを用いないで構成したネットワーク装置のブロック図である。 本発明の実施の形態3における、ネットワークプロセッサ、もしくは組み込みプロセッサを内蔵したネットワークプロセッサアクセラレータを用い、外付けネットワークプロセッサも用いて構成したネットワーク装置のブロック図である。 本発明の実施の形態2または3における、ネットワークプロセッサ、もしくは組み込みプロセッサを内蔵したネットワークプロセッサアクセラレータ内部のブロック図である。 本発明の実施の形態4におけるネットワークプロセッサアクセラレータと外付けのネットワークプロセッサの間にひとつ以上のネットワークプロセッサアクセラレータを用いて構成したネットワーク装置のブロック図である。 本発明の実施の形態5における、入力側と出力側でネットワークプロセッサアクセラレータを共用し、外付けのネットワークプロセッサを接続して構成したネットワーク装置のブロック図である。 本発明の実施の形態5における、入力側と出力側を共用したネットワークプロセッサアクセラレータの内部のブロック図である。 本発明の原理動作を説明するための図面である。
符号の説明
1:実施形態1におけるネットワーク装置
2:実施形態2におけるネットワーク装置
3:実施形態3におけるネットワーク装置
4:実施形態4におけるネットワーク装置
5:実施形態5におけるネットワーク装置
12:ネットワークインタフェース部
13:ネットワークプロセッサと組み込みプロセッサを持たない入力側ネットワークプロセッサアクセラレータ
14:入力側スイッチファブリックインタフェース部
15:入力側のネットワークプロセッサ
16:入力側のテーブルメモリ
23:ネットワークプロセッサと組み込みプロセッサを持たない出力側ネットワークプロセッサアクセラレータ
24:ネットワーク装置の出力側ネットワークインタフェース部
25:出力側のネットワークプロセッサ
26:出力側のテーブルメモリ
30:ネットワークプロセッサ、もしくは組み込みプロセッサを持つ入力側ネットワークプロセッサアクセラレータ
31:ネットワークプロセッサ、もしくは組み込みプロセッサを持つ出力側ネットワークプロセッサアクセラレータ
32:入力側のネットワークプロセッサアクセラレータと、入力側のネットワークプロセッサの間に置かれる入力側のネットワークプロセッサアクセラレータ
33:出力側のネットワークプロセッサアクセラレータと、出力側のネットワークプロセッサの間に置かれる出力側のネットワークプロセッサアクセラレータ
34:ネットワークプロセッサアクセラレータ部
35:入力、出力両用のネットワークプロセッサアクセラレータ
40:スイッチファブリック部
50:光入出力インタフェース部
51:光-電気信号変換器
101:ネットワークプロセッサアクセラレータの入力インタフェース部
102:ネットワークプロセッサアクセラレータのパケット解析部
103:ネットワークプロセッサアクセラレータのパケット処理置換部およびキャッシュメモリ部
104:ネットワークプロセッサアクセラレータのキャッシュミス処理部
105:ネットワークプロセッサアクセラレータの後処理部
106:ネットワークプロセッサアクセラレータの出力インタフェース部
107:ネットワークプロセッサアクセラレータのパケットメモリ部
108:ネットワークプロセッサアクセラレータのキャッシュミスパケット用の入出力変換器
120:ネットワークプロセッサアクセラレータの組み込まれたプロセッサ
130:ネットワークプロセッサアクセラレータの組み込まれたネットワークプロセッサ
140:ネットワークプロセッサアクセラレータの入力/出力共用のキャッシュミス処理部
141:ネットワークプロセッサアクセラレータのキャッシュミスパケット用の入出力変
151:ネットワークプロセッサアクセラレータの入力側入力インタフェース部
152:ネットワークプロセッサアクセラレータの入力側パケット解析部
153:ネットワークプロセッサアクセラレータの入力側パケット処理置換部およびキャッシュメモリ部
154:ネットワークプロセッサアクセラレータの入力側の後処理部
155:ネットワークプロセッサアクセラレータの入力側の出力インタフェース部
156:ネットワークプロセッサアクセラレータの入力側のパケットメモリ部
161:ネットワークプロセッサアクセラレータの出力側入力インタフェース部
162:ネットワークプロセッサアクセラレータの出力側パケット解析部
163:ネットワークプロセッサアクセラレータの出力側パケット処理置換部およびキャッシュメモリ部
164:ネットワークプロセッサアクセラレータの出力側の後処理部
165:ネットワークプロセッサアクセラレータの出力側の出力インタフェース部
166:ネットワークプロセッサアクセラレータの出力側のパケットメモリ部
301:プロセスキャッシュのアクセスアドレス生成部
302:プロセスキャッシュのタグ部
303:プロセスキャッシュの有効ビット部
304:プロセスキャッシュのデータ部
305:ENABLE機能付比較器
306:選択器
341:スイッチファブリックでの宛先ポート
342:341以外の内部ヘッダ置換え情報
343:IPv4用の宛先IPアドレス
344:IPv4用の送信元IPアドレス
345:TCP宛先ポート番号
346:TCP送信元ポート番号
347:QoS情報
348:VLAN情報
349:Layer7情報
350:MPLS情報1
351:MPLS情報2
352:IPv6用の宛先IPアドレス
353:IPv6用の送信元IPアドレス
401:初期ミステーブル
402:多重ミステーブル
403:出力形式変換器
404:処理情報テーブル
405:処理済トークン生成部
420:グローバル・ヘッド・テイル管理テーブル
700:パケットヘッダ
711:内部ヘッダ
712:抽出ヘッダ
713:プロセスキャッシュアクセス前のトークン
721:プロセスキャッシュアクセス後の内部ヘッダ
722:プロセスキャッシュアクセス後の抽出ヘッダ
723:プロセスキャッシュアクセス後のトークン。

Claims (26)

  1. ネットワークにパケットを送信または受信するためのネットワークインタフェースと、
    受信パケットを次の転送先へ転送するための処理を行うネットワークプロセッサと、
    該転送するための処理の際に参照されるテーブルを格納するテーブルメモリと
    前記ネットワークプロセッサの処理結果が格納されるキャッシュメモリと、
    該キャッシュメモリを参照して受信パケットに対して転送のための処理を行うネットワークプロセッサアクセラレータとを有し、
    前記ネットワークプロセッサで既に処理された受信パケットと宛先アドレスが同じ受信パケットに対しては、前記ネットワークプロセッサアクセラレータにより転送のための処理を行なうことを特徴とするネットワーク装置。
  2. ネットワークにパケットを送信または受信するためのネットワークインタフェースと、
    受信パケットを次の転送先へ転送するための処理を行う第1のプロセッサと、
    該転送するための処理の際に参照されるテーブルを格納するテーブルメモリと、
    該第1のプロセッサの処理結果が格納されるキャッシュメモリと、
    該キャッシュメモリを参照して受信パケットに対して転送のための処理を行なう第2のプロセッサとを有し、
    前記キャッシュメモリに格納された処理結果が行なわれたパケットと宛先アドレスが同じ受信パケットに対しては、前記キャッシュメモリに格納された処理結果を参照し、当該受信パケットに対して転送のための処理を行なうことを特徴とするネットワーク装置。
  3. 請求項1に記載のネットワーク装置において、
    更に第1のキャッシュメモリを内蔵した第1のネットワークプロセッサアクセラレータと、第2のキャッシュメモリを内蔵した第2のネットワークプロセッサアクセラレータと、前記第1のネットワークプロセッサアクセラレータに接続される第1のネットワークプロセッサと、前記第2のネットワークプロセッサアクセラレータに接続される第2のネットワークプロセッサと、スイッチファブリックと、該スイッチファブリックに接続される入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとを有し、
    前記第1のネットワークプロセッサアクセラレータは前記ネットワークインタフェースと前記入力側スイッチファブリックインタフェースの間に、および前記前記第2のネットワークプロセッサアクセラレータは前記ネットワークインタフェースと前記出力側スイッチファブリックインタフェースの間に配置されることを特徴とするネットワーク装置。
  4. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサが前記ネットワークプロセッサアクセラレータに内蔵されていることを特徴とするネットワーク装置。
  5. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサが、前記テーブルメモリを内蔵することを特徴とするネットワーク装置。
  6. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセサと前記ネットワークプロセッサアクセラレータとの間に、別のネットワークプロセッサアクセラレータが複数接続されたことを特徴とするネットワーク装置。
  7. 請求項1に記載のネットワーク装置において、
    キャッシュメモリを内蔵したネットワークプロセッサアクセラレータと、
    該アクセラレータに接続されるネットワークプロセッサと、
    スイッチファブリックと、
    該スイッチファブリックに接続される入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとを有し、
    該入力側スイッチファブリックインタフェースと出力側スイッチファブリックインタフェースとの間で、前記ネットワークプロセッサアクセラレータを共有することを特徴とするネットワーク装置。
  8. 請求項3に記載のネットワーク装置において、
    前記第1のネットワークプロセッサアクセラレータと前記第2のネットワークプロセッサアクセラレータを同一のネットワークプロセッサアクセラレータで構成し、
    前記第1のネットワークプロセッサと前記第2のネットワークプロセッサを同一のネットワークプロセッサで構成したことを特徴とするネットワーク装置。
  9. 請求項1に記載のネットワーク装置において、
    更に複数のネットワークプロセッサを有し、
    当該複数のネットワークプロセッサと前記ネットワークプロセッサアクセラレータとの接続を切替えるためのインタフェース部を有することを特徴とするネットワーク装置。
  10. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサアクセラレータまたは前記ネットワークプロセッサに外付けされた、受信パケットを一時的に格納するパケットメモリを有することを特徴とするネットワーク装置。
  11. 請求項10に記載のネットワーク装置において、
    前記外付けのパケットメモリを前記ネットワークプロセッサアクセラレータと前記ネットワークプロセッサとで独立して備えることを特徴とするネットワーク装置。
  12. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の配線数NAinと、前記ネットワークプロセッサのパケットを受け取るインタフェース部の配線数NPinと、前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数NPoutとの間に、NPin + NPout > NAin の関係が成立することを特徴とするネットワーク装置。
  13. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の配線数NAinと、前記ネットワークプロセッサのパケットを受け取るインタフェース部の配線数NPinと、前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数NPoutとの間に、NPin = NPout の関係が成立することを特徴とするネットワーク装置。
  14. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサのパケットを受け取るインタフェース部の配線数NPinと、
    前記ネットワークプロセッサのパケットを送り出すインタフェース部の配線数NPoutとの間に、NPin + NPout = NAinの関係が成立することを特徴とするネットワーク装置。
  15. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサアクセラレータのパケットを受け取るインタフェース部の帯域幅BWAinと、前記ネットワークプロセッサのパケットを受け取るインタフェース部の帯域幅BWPinとの間に、BWPin < BWAin の関係が成立することを特徴とするネットワーク装置。
  16. 請求項1に記載のネットワーク装置において、
    前記ネットワークプロセッサのパケットを受け取るインタフェース部の帯域幅BWPinと、
    前記ネットワークプロセッサのパケットを送り出すインタフェース部の帯域幅BWPoutとの間に、BWPin = BWPout の関係が成立することを特徴とするネットワーク装置。
  17. パケットを受信する入力インタフェース部と、
    受信パケットを一時的に保持するパケットメモリと、
    受信パケットから必要な部位を切り出し抽出情報とするパケット解析部と、
    受信パケットの転送処理に必要な処理結果を記憶するキャッシュメモリと、
    該キャッシュメモリを参照して、受信パケットに対して適用すべき処理結果が存在するか否かを判定する手段と、
    Vパケットを送信する出力インタフェース部とを有するネットワークプロセッサアクセラレータ。
  18. 請求項17に記載のネットワークプロセッサアクセラレータにおいて、
    受信パケットに対して施すべき処理結果が前記キャッシュメモリに存在しないキャッシュミスが発生した場合に、該キャッシュミスを処理する手段と、
    ネットワークプロセッサに接続するためのNP用インタフェースを備えることを特徴とするネットワークプロセッサアクセラレータ。
  19. 請求項18に記載のネットワークプロセッサアクセラレータにおいて、
    前記キャッシュミスを処理する手段が、
    前記受信パケットの転送処理を行なう組み込みプロセッサと、
    該組み込みプロセッサが転送処理に必要なルーティングテーブルを参照するためのインタフェースとを有することを特徴とするネットワークプロセッサアクセラレータ。
  20. 請求項19に記載のネットワークプロセッサアクセラレータにおいて、
    前記組み込みプロセッサで前記受信パケットの転送処理が処理できない場合には、該受信パケットを前記NP用インタフェースに転送することを特徴とするネットワークプロセッサアクセラレータ。
  21. 請求項19に記載のネットワークプロセッサアクセラレータにおいて、
    ネットワークプロセッサを内蔵したことを特徴とするネットワークプロセッサアクセラレータ。
  22. 請求項18に記載のネットワークプロセッサアクセラレータにおいて、
    前記キャッシュミスを処理するための手段を共有し、それ以外の前記パケット解析手段、前記キャッシュ関連の手段、前記送出パケット生成手段等を、入力側用、出力側用で独立して持つことを特徴とするネットワークプロセッサアクセラレータ。
  23. パケット処理結果をキャッシュする手段を持つネットワークプロセッサ等において、
    前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
    前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される2番目以降のパケットを管理するための二次テーブルとを持ち、
    前記二次テーブルを、キャッシュミスパケットを管理する前記一次テーブルのエントリ数と同じだけの数用意し、それぞれの前記二次テーブルをエントリ数がすべて一定の同一値であることを特徴とするネットワークプロセッサ。
  24. パケット処理結果をキャッシュする手段を持つネットワークプロセッサ等において、
    前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
    前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される2番目以降のパケットを管理するための二次テーブルとを持ち、
    前記二次テーブルを、結合リンク方式で管理することを特徴とするネットワークプロセッサ。
  25. パケット処理結果をキャッシュする手段を持つネットワークプロセッサ等において、
    前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
    前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される2番目以降のパケットを管理するための二次テーブルとを持ち、
    前記二次テーブルを、CAM(Content Addressable Memory)もしくはフルアソシアティブメモリを利用して管理することを特徴とするネットワークプロセッサ。
  26. パケットを受信するためのインタフェース部と、
    受信パケットを一時的に保持するパケットメモリと、
    受信パケットから必要な部位を切り出し抽出情報とするパケット解析部と、
    受信パケットの転送処理に必要な処理結果を記憶するキャッシュメモリと、
    前記抽出情報から前記キャッシュを参照するためのアドレス生成手段と、
    前記抽出情報から前記キャッシュを参照した結果、キャッシュに該当情報が存在するか否かを判定するための手段と、
    前記キャッシュに該当情報が存在したときに前記該当情報からパケットを再構築するための手段と、
    前記キャッシュに該当情報が存在しなかったときにパケットを管理するための一次テーブルと、
    前記キャッシュに該当情報が存在せず、前記一次テーブルに登録されているパケットと同一処理結果が期待される2番目以降のパケットを管理するための二次テーブルと、
    前記一次テーブルに登録されているキャッシュミスパケットの処理をプログラマブルに実施するための外部ネットワークプロセッサにパケットと必要な情報を送出するためのインタフェース部と、
    前記外部ネットワークプロセッサから処理済パケットと追加情報を受信するためのインタフェース部と、
    前記処理済パケットの処理結果情報を前記キャッシュに登録するための手段と、
    前記二次テーブルに登録されている該当パケットに前記の処理結果を適用するための手段と、
    処理のすんだ前記一次テーブルおよび二次テーブルのエントリを開放するための手段と、
    前記処理済パケットもしくは前記処理結果情報から送出パケットを生成するための手段と、
    処理済のパケットを送出するためのインタフェース部とを持つことを特徴としたネットワークプロセッサアクセラレータ。
JP2003346519A 2003-10-06 2003-10-06 ネットワークプロセッサアクセラレータ Pending JP2005117206A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003346519A JP2005117206A (ja) 2003-10-06 2003-10-06 ネットワークプロセッサアクセラレータ
US10/956,089 US7440457B2 (en) 2003-10-06 2004-10-04 Network-processor accelerator
CNA200410083506XA CN1606291A (zh) 2003-10-06 2004-10-08 网络处理加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003346519A JP2005117206A (ja) 2003-10-06 2003-10-06 ネットワークプロセッサアクセラレータ

Publications (2)

Publication Number Publication Date
JP2005117206A true JP2005117206A (ja) 2005-04-28
JP2005117206A5 JP2005117206A5 (ja) 2006-11-24

Family

ID=34386372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003346519A Pending JP2005117206A (ja) 2003-10-06 2003-10-06 ネットワークプロセッサアクセラレータ

Country Status (3)

Country Link
US (1) US7440457B2 (ja)
JP (1) JP2005117206A (ja)
CN (1) CN1606291A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008131351A (ja) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> キャッシュシステム、キャッシュ装置、パケット処理装置、キャッシュ方法、パケット処理方法、キャッシュプログラム、およびパケット処理プログラム
WO2009001450A1 (ja) * 2007-06-27 2008-12-31 Fujitsu Limited メモリアクセス制御装置
US7656887B2 (en) 2004-11-05 2010-02-02 Hitachi, Ltd. Traffic control method for network equipment
WO2013031175A1 (en) * 2011-08-29 2013-03-07 Nec Corporation Communication system, control device, node, node control method, and program
WO2013047705A1 (ja) * 2011-09-27 2013-04-04 日本電気株式会社 ネットワークシステム、フロントエンド装置、制御メッセージ送信レート低減方法
WO2013051386A1 (ja) * 2011-10-05 2013-04-11 日本電気株式会社 負荷低減システム、及び負荷低減方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161647A1 (en) * 2004-12-22 2006-07-20 Waldemar Wojtkiewicz Method and apparatus providing measurement of packet latency in a processor
US7990867B1 (en) 2007-05-03 2011-08-02 Xilinx, Inc. Pipeline for processing network packets
US7788402B1 (en) 2007-05-03 2010-08-31 Xilinx, Inc. Circuit for modification of a network packet by insertion or removal of a data segment
US7817657B1 (en) * 2007-06-14 2010-10-19 Xilinx, Inc. Circuit for processing network packets
US9015318B1 (en) 2009-11-18 2015-04-21 Cisco Technology, Inc. System and method for inspecting domain name system flows in a network environment
US9009293B2 (en) 2009-11-18 2015-04-14 Cisco Technology, Inc. System and method for reporting packet characteristics in a network environment
US9148380B2 (en) * 2009-11-23 2015-09-29 Cisco Technology, Inc. System and method for providing a sequence numbering mechanism in a network environment
US8792495B1 (en) 2009-12-19 2014-07-29 Cisco Technology, Inc. System and method for managing out of order packets in a network environment
US8937942B1 (en) * 2010-04-29 2015-01-20 Juniper Networks, Inc. Storing session information in network devices
US8787303B2 (en) 2010-10-05 2014-07-22 Cisco Technology, Inc. Methods and apparatus for data traffic offloading at a router
US8854996B2 (en) * 2010-12-16 2014-10-07 International Business Machines Corporation Accelerating data packet parsing
US9003057B2 (en) 2011-01-04 2015-04-07 Cisco Technology, Inc. System and method for exchanging information in a mobile wireless network environment
US8743690B1 (en) 2011-06-14 2014-06-03 Cisco Technology, Inc. Selective packet sequence acceleration in a network environment
US8737221B1 (en) 2011-06-14 2014-05-27 Cisco Technology, Inc. Accelerated processing of aggregate data flows in a network environment
US8792353B1 (en) * 2011-06-14 2014-07-29 Cisco Technology, Inc. Preserving sequencing during selective packet acceleration in a network environment
US8948013B1 (en) 2011-06-14 2015-02-03 Cisco Technology, Inc. Selective packet sequence acceleration in a network environment
CN107872545B (zh) * 2017-09-26 2022-12-06 中兴通讯股份有限公司 一种报文传输方法及装置、计算机可读存储介质
US10785163B2 (en) * 2019-02-27 2020-09-22 International Business Machines Corporation Maintaining a queuing policy with multipath traffic
CN111031055B (zh) * 2019-12-19 2021-10-12 山东方寸微电子科技有限公司 一种IPsec加速装置及实现方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434863A (en) 1991-08-30 1995-07-18 Hitachi, Ltd. Internetworking apparatus for connecting plural network systems and communication network system composed of plural network systems mutually connected
JP4481517B2 (ja) 2001-03-19 2010-06-16 株式会社日立製作所 インターネットワーク装置及びインターネットワーク方法
JP3199051B2 (ja) * 1999-02-10 2001-08-13 日本電気株式会社 キャッシュを有するルータの方路決定装置及びプログラムを記録した機械読み取り可能な記録媒体
KR20020055287A (ko) * 2000-12-28 2002-07-08 구자홍 라우터 장치의 패킷 라우팅 방법
JP3873639B2 (ja) 2001-03-12 2007-01-24 株式会社日立製作所 ネットワーク接続装置
US7079539B2 (en) * 2001-12-21 2006-07-18 Agere Systems Inc. Method and apparatus for classification of packet data prior to storage in processor buffer memory
JP2004260532A (ja) 2003-02-26 2004-09-16 Hitachi Ltd ネットワークプロセッサ

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7656887B2 (en) 2004-11-05 2010-02-02 Hitachi, Ltd. Traffic control method for network equipment
JP2008131351A (ja) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> キャッシュシステム、キャッシュ装置、パケット処理装置、キャッシュ方法、パケット処理方法、キャッシュプログラム、およびパケット処理プログラム
JP4630262B2 (ja) * 2006-11-21 2011-02-09 日本電信電話株式会社 キャッシュシステム、キャッシュ装置、パケット処理装置、キャッシュ方法、パケット処理方法、キャッシュプログラム、およびパケット処理プログラム
WO2009001450A1 (ja) * 2007-06-27 2008-12-31 Fujitsu Limited メモリアクセス制御装置
US8312208B2 (en) 2007-06-27 2012-11-13 Fujitsu Limited Memory access controller and method implementing packet processing
WO2013031175A1 (en) * 2011-08-29 2013-03-07 Nec Corporation Communication system, control device, node, node control method, and program
WO2013047705A1 (ja) * 2011-09-27 2013-04-04 日本電気株式会社 ネットワークシステム、フロントエンド装置、制御メッセージ送信レート低減方法
JPWO2013047705A1 (ja) * 2011-09-27 2015-03-26 日本電気株式会社 ネットワークシステム、フロントエンド装置、制御メッセージ送信レート低減方法
US9608924B2 (en) 2011-09-27 2017-03-28 Nec Corporation Network system, front-end unit and control message transmission rate reducing method
WO2013051386A1 (ja) * 2011-10-05 2013-04-11 日本電気株式会社 負荷低減システム、及び負荷低減方法
JPWO2013051386A1 (ja) * 2011-10-05 2015-03-30 日本電気株式会社 負荷低減システム、及び負荷低減方法
US9246815B2 (en) 2011-10-05 2016-01-26 Nec Corporation Load reducing system and load reducing method

Also Published As

Publication number Publication date
US7440457B2 (en) 2008-10-21
US20050074005A1 (en) 2005-04-07
CN1606291A (zh) 2005-04-13

Similar Documents

Publication Publication Date Title
JP2005117206A (ja) ネットワークプロセッサアクセラレータ
JP4483535B2 (ja) ネットワーク装置
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US8321385B2 (en) Hash processing in a network communications processor architecture
JP3645734B2 (ja) ネットワーク中継装置及びネットワーク中継方法
US8539199B2 (en) Hash processing in a network communications processor architecture
US9444737B2 (en) Packet data processor in a communications processor architecture
JP3643507B2 (ja) パケット処理装置及びパケット処理方法
US7996569B2 (en) Method and system for zero copy in a virtualized network environment
US7996583B2 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
EP2019360B1 (en) Data processing apparatus and data transfer method
US7953817B2 (en) System and method for supporting TCP out-of-order receive data using generic buffer
US8094670B1 (en) Method and apparatus for performing network processing functions
US20080279188A1 (en) Method And Apparatus For Performing Network Processing Functions
US8161197B2 (en) Method and system for efficient buffer management for layer 2 (L2) through layer 5 (L5) network interface controller applications
WO2003030461A1 (en) Method, apparatus and computer program for the decapsulation and encapsulation of packets with multiple headers
US20080059686A1 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US9584637B2 (en) Guaranteed in-order packet delivery
US11902184B2 (en) Methods and systems for providing a virtualized NVMe over fabric service
JP2008510338A (ja) パケット交換制御用の集積回路及び方法
US7188250B1 (en) Method and apparatus for performing network processing functions
US8990422B1 (en) TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data
CN113411380B (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
US11740920B2 (en) Methods and systems for migrating virtual functions in association with virtual machines
JP2004260532A (ja) ネットワークプロセッサ

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061004

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090818