JP4779955B2 - パケット処理装置及びパケット処理方法 - Google Patents

パケット処理装置及びパケット処理方法 Download PDF

Info

Publication number
JP4779955B2
JP4779955B2 JP2006334489A JP2006334489A JP4779955B2 JP 4779955 B2 JP4779955 B2 JP 4779955B2 JP 2006334489 A JP2006334489 A JP 2006334489A JP 2006334489 A JP2006334489 A JP 2006334489A JP 4779955 B2 JP4779955 B2 JP 4779955B2
Authority
JP
Japan
Prior art keywords
packet
search
processing
engine
loop
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.)
Expired - Fee Related
Application number
JP2006334489A
Other languages
English (en)
Other versions
JP2007208963A (ja
Inventor
哲弥 岡田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006334489A priority Critical patent/JP4779955B2/ja
Priority to US11/649,839 priority patent/US7664112B2/en
Publication of JP2007208963A publication Critical patent/JP2007208963A/ja
Application granted granted Critical
Publication of JP4779955B2 publication Critical patent/JP4779955B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Description

本発明は、高信頼性を維持しながらパケットの転送処理を高速化することができるパケット処理装置及びパケット処理方法に関する。
IP(Internet Protocol)等を適用してパケットを転送処理するルータ等のパケット処理装置は、パケット処理エンジンと、検索処理を行う為の検索エンジンとを含む構成を有するものである。又パケットの転送処理を行う場合、パケットのヘッダ部に含まれる宛先情報や、データの中身の情報を基に検索処理が行われ、転送先や転送制御情報を決定して転送する。又パケット処理エンジンにはネットワークプロセッサNW
P(Network Processor)等のデバイスが適用されており、又パケット情報を基に転送先や転送制御情報の検索を行う検索エンジンにはCAM(Content Addressable Memory)等が用いられている。
検索処理を行う場合、パケット処理エンジンから検索エンジンに、宛先の決定やフィルタリングの処理に必要なパケットの一部が検索キーとして転送される。パケット処理エンジンでは検索エンジンから検索結果が戻されると、その検索結果情報を基に後処理を実施し、パケットの転送を行う。
図16は、従来技術のパケット処理装置の構成例である。
同図に於いて、101は入力インターフェース、102はパケット処理エンジン、103は検索エンジン、104はトラフィックマネージャー、105は出力インターフェース、106,107はパケットバッファを示す。主回線を伝送したパケットは、入力インターフェース101を介してパケット処理エンジン102のパケットバッファ106に一時的に格納され、パケット処理エンジン102は検索エンジン103に、そのパケットのヘッダやペイロードの一部等を検索キーとして転送して検索処理を行わせる。その検索結果はパケット処理エンジン102に返送される。パケット処理エンジン102は、検索結果の情報と共にパケットを、トラフィックマネージャー104のパケットバッファ107に転送して一時的に格納し、検索結果の情報に含まれる宛先情報や優先制御情報等を基にして出力インターフェース105を介して、パケットを主回線に送出する。
パケット処理エンジン102に用いられるネットワークプロセッサには、RISC(Reduced Instruction Set Computer)型のものと、データフロー型のものとがあり、RISC型のものは複雑な処理を行うことができるが、処理が複雑になるほど、多くの処理時間が必要になり性能が劣化する。それに対し、データフロー型のネットワークプロセッサは、処理速度の向上がRISC型に比べて容易であり、更にパケット種別によって性能が劣化することは無い。しかし、一つのパケットに対して行うことのできる処理が限られており複雑な処理を行うことができない。
近年データの伝送速度が数Gbps以上の高速伝送化が進み、パケットの転送処理を行うルータ等の装置の処理速度を上昇させることが必要となっている。その為、例えば、連想メモリを含む検索エンジンと、パケットを検索エンジンに転送する前の処理を担当する第1のプロセッサと、検索エンジンによる検索結果に基づいてパケットの中継処理を担当する第2のプロセッサとを備えたパケット処理装置が提案されている(例えば、特許文献1参照)。又入力されたパケットに一連番号を付加して、複数のパケット解析手段に分配し、複数のパケット解析手段により並列的に解析処理し、処理後のパケットを一連番号に従って元の順に並べ替えて出力するパケット処理装置が提案されている(例えば、特許文献2参照)。
特開2004−015561号公報 特開2004−158903号公報
前述のように、パケットを伝送する主回線の広帯域化により、パケットの転送速度の向上が必要であり、更に多種多様なサービスが求められ、パケットの転送処理のみでなく、フィルタリング、クラシファイ、負荷分散などの処理機能が要求されている。しかし、パケット処理エンジンとして用いられるデータフロー型のネットワークプロセッサに代表されるデバイスや、検索処理を行う検索エンジンには、処理能力に限界があるから、複雑な処理を行う場合、1パケットについて行わなければならない処理が、所定のパケット処理時間内に完了しないケースが発生し、それにより、パケット処理エンジンの中継処理速度の劣化を招く問題がある。
又巨大なルーティングテーブルを検索する必要がある検索処理や、パケットの多くの情報を基に判定する等の場合、検索処理がパケット処理のボトルネックとなる問題がある。又汎用のデータフロー型のネットワークプロセッサを使用した場合、検索エンジン103と接続するバスの帯域が小さく、パケット処理エンジン102から検索エンジン103に対して転送する検索キーの大きさに制限が生じる。又パケットの伝送中によるエラーは、パケットのCRC(Cyclic Redundancdy Check)等によりチェックすることができるが、ルータ等のパケット処理装置内部で発生したエラーについては、従来は、殆ど対策が講じられていないので、対向装置に対してエラーを含むパケットが転送される可能性があった。
本発明は、前述の従来の問題を解決するものであり、低コストで、高信頼性を維持しながらパケットの転送処理を高速化することができるパケット処理装置及びパケット処理方法を提供することを目的とする。
本発明によるパケット処理装置は、回線から受信した第1のパケットを処理するパケット処理エンジンと
前記第1のパケットに関する検索処理を行う検索エンジンと
前記パケット処理エンジンと前記検索エンジンとの間でデータを受け渡す通信リンクを備え、
前記パケット処理エンジンは、受信した前記第1のパケットに検索キーを含む装置内ヘッダを付加して生成した第2のパケットを、前記通信リンクを介して前記検索エンジンに送信する手段を備え、前記検索エンジンは、前記パケット処理エンジンから前記通信リンクを介して送信された前記第2のパケットを一時的に格納するパケットバッファと、前記第2のパケットの前記装置内ヘッダに格納されている検索キーを基に検索処理を行う手段と、前記検索処理による検索結果情報と前記パケットバッファに格納された前記第2のパケットとを前記通信リンクを介して前記パケット処理エンジンに返送する手段と、前記パケット処理エンジンから受信した前記第2のパケット毎にシーケンス番号を割り当てるシーケンス番号管理手段と、前記パケット処理エンジンとの間で前記第2のパケットを繰り返し受け渡しながら前記第2のパケットに対して段階的に処理を追加するパケットループ処理を複数の前記第2のパケットに対して行い際に、前記シーケンス番号により個々の前記第2のパケットを識別しながら実行するループ制御手段を備え、前記検索エンジンは、前記パケットループ処理が完了した複数の前記第2のパケットと検索結果情報を、前記シーケンス番号に基づいて、前記通信リンクからの第1回目の受信時刻が旧いものから先に順次前記パケット処理エンジンへ送信する、ように構成される。
これによれば、パケット処理エンジンは、検索処理を検索エンジンに分散して効率よく処理するだけでなく、主回線からパケットを受信した時点と、検索エンジンからパケットが返送された時点の2回に分けてパケットの処理を実行でき、例えば、パケットに対する1回の処理時間が制限されるデータフロー型のネットワークプロセッサを用いた場合に、パケット処理を効率的に処理できるようになる。さらに、パケットをパケット処理エンジンおよび検索エンジンの間で必要な回数ループさせながら、段階的にパケット処理、検索処理を実行でき、処理時間を要する複雑な処理であっても、1回の処理時間が制限されるデータフロー型のネットワークプロセッサを用いて順次追加実行することが可能となる。
さらに、本発明は、上記のパケット処理装置において、前記パケット処理エンジンと前記検索エンジンとの間を接続する前記バスは、前記パケットループ処理前及び前記パケットループ処理完了後のパケットと装置内ヘッダを受け渡す第1の通信リンクと、前記パケットループ処理中のパケットと装置内ヘッダを受け渡す1以上の第2の通信リンクを含み、
前記1以上の第2の通信リンクは前記パケットループ処理時の各ループ回数に対応して設けられ、前記パケットループ処理中のパケットは、前記ループ回数に対応する第2の通信リンクを介して前記パケット処理エンジンと前記検索エンジンとの間で受け渡される、ように構成してもよい。
これにより、複数のパケットのループ処理を並行して実行でき、処理時間を要する複雑な処理をさらに効率よく実行できる。
一方、本発明は、上記のパケット処理装置において、前記検索エンジンは、前記検索処理部による検索結果に基づいて前記パケットと前記装置内ヘッダを出力すべき出力キューを決定し、前記出力キュー毎に前記パケットのスケジューリングを行って前記パケットと前記装置内ヘッダを前記パケット処理エンジンに転送するスケジューラを備える、ように構成することもできる。
この構成によれば、トラフィックマネージャーを検索エンンジンに含めることができ、パケット処理装置の構成を単純化し、低コストを図ることができる。
本発明は、パケット処理エンジンにはパケットバッファを設けずに、検索エンジンにパケットバッファを設け、パケット処理エンジンに於いて検索キーを含む装置内ヘッダを付加して検索エンジンに転送する。その時、パケット処理エンジンと検索エンジンとの間のバスの帯域を、パケットを伝送する主回線の伝送帯域より大きくすることにより、装置内ヘッダを付加したパケットを、パケット処理エンジンと検索エンジンとの間で容易に転送することが可能となり、パケット処理エンジンを、データフロー型のネットワークプロセッサにより構成して、パケット処理を効率的に行うことができる。
又パケット処理エンジンと検索エンジンとの間のループ処理により、複雑な処理をパケット処理エンジンおよび検索エンジンに於いて順次追加実行することが可能となる。
又トラフィックマネージャーの機能を検索エンジンにスケジューラとして設けることにより、構成の単純化を図ることが可能となる。
図1は、本発明の第1の実施形態によるパケット処理装置の構成例を示している。
10は入力インターフェース、20はパケット処理エンジン、30は検索エンジン、40はトラフィックマネージャー、50は出力インターフェース、39および49はパケットバッファを示す。
入力インターフェース10は1以上の受信ポート1からパケットを受信し、受信したパケットを通信リンク2を介してパケット処理エンジン20に渡す。
パケット処理エンジン20は、入力インターフェース10から渡されたパケットに対して、IPv4,IPv6,MPLS(Multi−Protocol Label Switing)等のパケット種別の判断、パケットの正常性確認、宛先検索、フィルタリング検索、クラシファイ検索等の為に必要な検索キーの抽出等の処理を行い、検索エンジン30に転送する。その時、パケットに固定サイズの装置内ヘッダを付加する。この装置内ヘッダには検索エンジン30が検索処理を行う際に必要となる検索キーやパケット種別等を示す値を検索要求情報として設定する。このパケットに装置内ヘッダを付加したデータを検索要求ブロックとして通信リンク6を介して検索エンジン30に送信する。ここで、宛先アドレス等のデータサイズの大きい検索キーを装置内ヘッダに設定すると、そのヘッダサイズが大きくなる為、検索キーが格納されているパケット内の位置を示すポインタ値を装置内ヘッダ内に設定することができる。なお、パケット種別毎に検索キーの位置が変わらないような検索キーについては特にポインタで示す必要はない。上記の検索要求情報については、例えば、後述する図10のように構成することができる。
検索エンジン30はパケット処理エンジン20から渡された検索要求ブロック(パケットと装置内ヘッダ)の装置内ヘッダに設定されている検索要求情報を基に検索処理を実行する。そして、その検索結果情報を装置内ヘッダに設定してパケットに付加して検索結果ブロックとし、その検索結果ブロックを検索結果検索エンジン30からパケット処理エンジン20に通信リンク6を介して返送する。上記の検索結果情報については、例えば、後述する図12のように構成することができる。
パケット処理エンジン20は検索エンジン30から返送された検索結果ブロックに格納されているパケットに処理を加えた後に、その処理が加えられたパケットを含む検索結果ブロックを通信リンク3を介してトラフィックマネージャー40へ引き渡す。
トラフィックマネージャー40はパケット処理エンジン20から渡された検索結果ブロック(パケット+装置内ヘッダ)の装置内ヘッダ(検索結果情報が設定されている)を基にトラフィック制御(例えば、送信キューの優先制御等)を行った後、該検索結果ブロック(パケット+装置内ヘッダ)を通信リンク4を介して出力インターフェース50に渡す。
出力インターフェース50は、トラフィックマネージャー40から渡された検索結果ブロック(パケット+装置内ヘッダ)に含まれるパケットを、装置内ヘッダに設定されている検索結果情報を基に主回線の送信ポート5に送出する。例えば、パケットを装置内ヘッダに設定されている送信ポート番号に対応する送信ポートに出力する。
上記の構成において、パケット処理エンジン20は、例えば、データフロー型のネットワークプロセッサを含む構成を有し、検索エンジン30との間のデータ受け渡しを行う通信リンク6は主回線である受信ポート1、送信ポート5の伝送帯域以上の帯域を有するバス接続の中に構成することができる。これにより、パケット処理エンジン20と検索エンジン30との間で、受信ポート1から受信したパケットにさらに装置内ヘッダを付加したデータの受け渡しを、主回線のパケットの流れを遅延させることなく行うことが可能になる。
又検索エンジン30とトラフィックマネージャー40とにそれぞれパケットバッファ39、49を設け、パケット処理エンジン20にはパケットバッファを設けない構成として、パケット処理エンジン20の構成を簡素化し処理負荷を低減することができる。
図2は、本発明の第1の実施形態による検索エンジンの構成例を示している。
31は入力インターフェース部、32は検索処理部、33はシーケンス番号管理部、34はパケットバッファ管理部、35は出力インターフェース部を示し、39は前記図1に示したパケットバッファ39である。また、6aは前記図1の通信リンク6に対応する検索エンジン30側からみた入力ポートであり、6bは通信リンク6に対応する検索エンジン30側からみた出力ポートである。
入力インターフェース部31はパケット処理エンジン20から入力ポート6aを介して検索要求ブロック(装置内ヘッダ+パケット)を受信すると、シーケンス番号管理部33にパケットの受信通知を行う。検索要求ブロックは、例えば、後述する図9に示すように構成することができる。
シーケンス番号管理部33は、次に割り当てるべきシーケンス番号である次シーケンス番号を常時保持しており、入力インターフェース部31からパケットの受信通知があると、その保持している次シーケンス番号を読み出して、入力インターフェース部31に対して通知すると同時に、次シーケンス番号をカウントアップする。
入力インターフェース部31は受信した装置内ヘッダに設定されている検索要求情報を取り出してシーケンス番号管理部33から通知されたシーケンス番号を設定し、検索処理部32にそのシーケンス番号が設定された検索処理依頼データを引き渡す。検索処理依頼データは、例えば、後述する図11のように構成することができる。この検索処理依頼データには検索キー情報を付加するが、この検索キー情報は装置内ヘッダから取り出した検索要求情報に検索キーポインタが設定されている場合に(後述する図10参照)、その検索キーポインタが示すパケット内の領域から抽出して付加する。ここで、検索処理依頼データについては、例えば、FIFO(First In First Out)方式でキューイングして検索処理部32に引き渡すように構成することができる。
一方、入力インターフェース部31はパケット処理エンジン20から渡されたパケットにシーケンス番号管理部33から通知されたシーケンス番号を付加してパケットバッファ管理部34に渡す。
パケットバッファ管理部34は入力インターフェース部31から渡されたパケットをパケットバッファ39に格納すると同時に、格納したパケットの格納位置情報(アドレス情報等)、パケット長をシーケンス番号と共に保持する。
検索処理部32は、入力インターフェース部31から渡された検索処理要求データに含まれる検索キー情報を基に、例えば、CAMなどを用いて該検索キー情報に該当するデータを検索し、検索結果情報をシーケンス番号と共に出力インターフェース部35に通知する。検索結果情報は、例えば、後述する図12のように構成することができる。
出力インターフェース部35は、検索処理部32から検索結果が通知されると、パケットバッファ管理部34を介してパケットバッファ39から該シーケンス番号に対応するパケットを読み出し、検索処理部32から通知された検索結果情報を装置内ヘッダに設定して該パケットに付加して検索結果ブロックとし、出力ポート6bを介してパケット処理エンジン20へ送信する。
上記のように、シーケンス番号管理部33によってパケットに割り当てられたシーケンス番号を基にパケットをパケットバッファ39から取り出して送出することにより、検索エンジン30内に複数のパケットが検索処理待ちで一時的に滞留した場合においても、検索処理が完了したパケットはパケット処理エンジン20から受信した順にパケット処理エンジン20へ送出され、パケットの転送順序を維持することができる。
パケット処理エンジン20は、検索エンジン30から返送された検索結果ブロック(装置内ヘッダとパケットを含む)を基にパケット処理を行った後、トラフィックマネージャー40に転送する。検索結果ブロックはトラフィックマネージャー40のパケットバッファ49に一時的に格納されトラフィック制御が行われた後に出力インターフェース50に渡され、パケットは装置内ヘッダに設定されている検索結果情報を基に主回線の送信ポート5に送出される。例えば、検索結果情報の中の送信ポート番号が示す送信ポート5へパケットが送出される。
上記のように、パケット処理エンジン20は、主回線から受信したパケットに対する処理を通信リンク2を介して渡された時点と、検索エンジン30より通信リンク6を介して渡された時点の2回に分けて行うことが可能となる。これにより、例えば、パケット処理エンジン20が1回のパケット受信に対する処理時間が制約されるデータフロー型のネットワークプロセッサで構成される場合においても、パケットに対する処理を2回に分けて段階的に実行することが可能となる。
図3は、本発明の第2の実施形態によるパケット処理装置の構成例を示している。
本発明の第2の実施形態では、前記図1に示した第1の実施形態のパケット処理装置の構成例に於けるパケット処理エンジン20と検索エンジン30の間のバス接続に、第1の通信リンクとなる通信リンク6の他に、さらに第2の通信リンクとなるN(N=任意の自然数)個の双方向の通信リンクを設ける。このN対の通信リンク(第2の通信リンク)を用いることにより、パケット処理エンジン20aと検索エンジン30aとの間でパケットを交互に受け渡しながらパケットに対して段階的に処理を付加するパケットループ処理を効率的に実行できるようになる。つまり、パケットのループ回数毎に異なる通信リンクを用いてパケット処理エンジン20と検索エンジン30の間のパケット受け渡しを行うことにより、最大N回までのパケットのループ処理を並行して実行できる。例えば、入力インターフェース10から渡されたパケットをパケット処理エンジン20aは検索エンジン30aに引き渡す。検索エンジン30aは渡されたパケットに対して検索処理を行い、パケットに対してさらに追加の処理が必要と判定したばあいは、その旨の情報を含む検索結果情報を装置内ヘッダに設定してパケットに付加し検索結果ブロックとして第2の通信リンクを介して処理エンジン20aに返送する。パケット処理エンジン20aは検索エンジン30aから検索結果ブロック(パケットと追加処理が指定された検索結果情報)を受信すると、その中のパケットに対して追加の処理を行い、その追加処理したパケットに装置内ヘッダとして検索要求情報を付加した検索要求ブロック生成して第2の通信リンクを介して検索エンジン30aに渡す。検索エンジン30aはこの渡された検索要求ブロックに格納されているパケットについて検索要求情報に基づいてさらに検索処理を行い、さらにループ処理が必要な場合は、その旨を指示した検索結果情報を装置内ヘッダに設定してパケットに付加し、検索結果ブロックとして第2の通信リンクを介してパケット処理エンジン20に転送する。このようにして、パケット処理エンジン20aと検索エンジン30aとの間で第2の通信リンクを介してパケットを受け渡しながら該パケットに対して段階的に処理を付加していくパケットループ処理を繰り返す。このとき、パケット処理エンジン20aと検索エンジン30aとの間のループ処理によるデータの受け渡しは、ループ回数毎に異なる通信リンクを用いるように構成することができ、このときは、最大N回のループ処理が可能となる。そして、検索エンジン30aはループ処理が完了したパケットについては、最終的な検索結果を設定した装置内ヘッダと合わせて最終的な検索結果ブロックとし、第1の通信リンクを介してパケット処理エンジン20aへ渡す。
上記のようにして、同一のパケットに対して、検索エンジン30aによる複数回の検索処理、及び、パケット処理エンジン20aによる複数回の処理が可能となり、主回線の受信ポート1から受信したパケットに対してより複雑な処理を行った後に、該パケットを主回線の送信ポート5に出力することができるようになる。ここで、追加処理を指示する情報としては装置内ヘッダにパケットが何ループ目であるかを示すループ回数を設定しておくことができ、これにより、ループ回数に対応した処理を行うことができる。このループ回数については、後述する図10、図11に示されている。
また、上記のように、第2の通信リンクが含んでいる最大N個の通信リンクの各々をループ回数に対応付け、ループ回数毎に第2の通信リンク内の異なる通信リンクを用いてパケットを受け渡すことにより、最大N個のパケットのループ処理をタイミングをずらしながら並行して効率的に実行できる。
上記のようにしてループ処理が終了したパケットは、パケットに装置内ヘッダを付加した状態でパケット処理エンジン20aからトラフィックマネージャー40に渡され、トラフィックマネージャー40は出力キュー等を構成したパケットバッファ49に一時的に格納した後、該パケットを装置内ヘッダ付きで出力インターフェース50に渡す。出力インターフェース50は渡された装置内ヘッダの内容に基づいて、パケットを主回線となる送信ポート5から送出する。
上記のようにして、例えばデータフローマシンを用いた場合のように、パケット処理エンジン20aの処理速度は十分であるが、一回のパケットの処理時間に制限がある場合においても、一つのパケットに対して複数の処理を段階的に、かつ、並行して実施できるようになり、パケット処理エンジン20aの効率的な機能拡張を容易に行うことができる。
図4は、本発明の第2の実施形態による検索エンジンの構成例を示している。
31aは入力インターフェース部、32aは検索処理部、33aはシーケンス番号管理部、34aはパケットバッファ管理部、35aは出力インターフェース部を示し、39はパケットバッファである。36はループ制御部を、37は検索結果出力部を、38は検索制御テーブルを示し、この第2の実施形態で新たに追加されている。また、6aは前記図3に示した第1の通信リンクとなる通信リンク6に対応する検索エンジン30a側からみた入力ポートであり、6bは通信リンク6に対応する検索エンジン30a側からみた出力ポートである。同様に、7−1a、・・・、7−Naは、それぞれ、前記図3に示した第2の通信リンクとなる通信リンク7−1、・・・、7−Nにそれぞれ対応する検索エンジン30a側からみた入力ポートであり、7−1b、・・・、7−Nbは、それぞれ、通信リンク7−1、・・・、7−Nに対応する検索エンジン30a側からみた出力ポートである。
この第2の実施形態に於いては、複雑な処理が必要なパケットに対しては、最大N回以下の必要な回数だけパケット処理エンジン20aと検索エンジン30aとの間でパケットをループさせながら、パケット処理エンジン20a及び検索エンジン30aの処理を段階的に付加するパケットループ処理を行う。このパケットループ処理が完了したパケットはパケットバッファ39に格納され、また、ループ処理が完了した最終的な検索結果はループ制御部36を介して検索制御テーブル38に格納される。
上記のようにしてパケットバッファ39に格納されたパケット及び検索制御テーブル38に格納された最終的な検索結果は、所定の周期で起動される検索結果出力部37によりパケットが最初に受信された時刻(ループ処理前のパケットが受信された時刻)の順番で取り出されてパケット処理エンジン20aへ送信される。これにより、パケット処理エンジン20aが検索エンジン30aに対してパケットの検索要求を行った時刻の順に検索エンジン30aから検索結果ブロック(検索結果情報とパケットを含む)がパケット処理エンジン20aに返送されるため、パケット処理エンジン20aは処理するパケットの順序を、入力インターフェース10からパケットが渡された順序と同じに維持して、トラフィックマネージャー40に渡すことができる。
上記のパケットの順序維持制御を行うために、パケット処理エンジン20aでは、検索エンジン30aに渡す検索要求ブロックの装置内ヘッダ(検索要求情報)に、最初の検索要求であるか、パケットループ処理による検索要求であるかを判定できる情報を付加する。例えば、シーケンス番号を装置内ヘッダに含めておき、最初の検索要求の場合はシーケンス番号=0を設定しておく。そして、検索エンジン30aでは0以外のシーケンス番号でパケットを管理し、シーケンス番号=0が設定されている装置内ヘッダ(検索要求)を含む検索要求ブロックを受信した際は、0以外の新たなシーケンス番号を順番に割り当て、その割り当てられたシーケンス番号と該パケットの受信時刻を検索制御テーブル38に記憶する。この割り当てられたシーケンス番号は検索結果情報(後述する図12参照)に含めて、パケット処理エンジン20aに返送される装置内ヘッダに設定しておく。パケット処理エンジン20aはループ処理のための検索要求を検索エンジン30aに対して行う際は、その検索要求ブロック内の装置内ヘッダのシーケンス番号には、直前に検索エンジン30aから返送されたシーケンス番号を折り返し設定しておく。これにより、検索エンジン30aは受信した装置内ヘッダのシーケンス番号領域の内容が0か否かを判定することにより、最初の検索要求かパケットループ処理による検索要求かの識別が可能となる。
また、必要な回数のループ処理が完了したパケットの最終的な検索結果は、検索制御テーブル38にシーケンス番号と共に格納されているため、シーケンス番号の順序を基に、対応するパケットと装置内ヘッダ(最終的な検索結果情報)を含む検索結果ブロックをパケット処理エンジン20aに送出することにより、上記のパケットの順序維持制御が可能となる。
入力インターフェース部31は、パケット処理エンジン20aから入力ポート6a、7−1a、7−2a、・・・、7−Naを介して装置内ヘッダが付加されたパケット、つまり、検索要求ブロックを受信する。装置内ヘッダにはパケット処理エンジン20aが生成した検索要求情報が格納されており、その検索要求情報に最初の検索処理を示す情報、例えば、シーケンス番号=0が設定されていた場合は、シーケンス番号管理部33aにパケットを受信した旨を通知して新たなシーケンス番号の発行を依頼する。シーケンス番号管理部33は入力インターフェース部31aからのパケット受信通知に対して新たなシーケンス番号を割り当て入力インターフェース部31aに通知する。このとき、シーケンス番号管理部33aはこのパケットに割り当てたシーケンス番号とパケットの受信時刻とを対応付けて検索制御テーブル38内の後述する検索制御レコードに格納すると同時に、該検索制御レコードを初期化(処理中フラグの設定等)する。
又、入力インターフェース部31は受信したパケットをシーケンス番号管理部33aから割り当てられたシーケンス番号と共にパケットバッファ管理部34aに渡す。パケットバッファ管理部34aは、入力インターフェース部31aから渡されたパケットをパケットバッファ39に格納すると同時に、該パケットの格納位置情報(アドレスなど)、パケット長等後でパケットの読み出しの際に必要となる情報をシーケンス番号に対応付けて検索制御テーブル38に格納する。このパケットは該パケットに関する全ての検索処理(つまり、ループ処理)が完了するまで保持され、該パケットの2回目以降のループ処理で使用される。
一方、入力インターフェース部31aは、シーケンス番号管理部33aからシーケンス番号が割り当てられると、パケット処理エンジン20aから受信した検索要求ブロックの装置内ヘッダから検索要求情報を抽出し、シーケンス番号管理部33により割り当てられたシーケンス番号を設定する。本検索要求情報は、例えば、後述する図10のように構成することができる。そして、該検索要求情報の検索キーポインタ情報が示すパケット内の領域から検索キー情報を抽出し、それを上記検索要求情報に付加して検索処理依頼データを生成して、検索処理部32aへ渡す。この検索処理依頼データについては、例えば、後述する図11のように構成することができる。ここで、検索処理依頼データについては、例えば、FIFO方式でキューイングして検索処理部32に引き渡すように構成してもよい。
検索処理部32aは、入力インターフェース部31aから渡された検索処理依頼データを基に検索処理を実行する。検索処理部32aは1回の検索処理が終了する毎に、その検索結果情報とさらにループ処理が必要か否かを示すループ判定情報をループ制御部36へ通知する。
ループ制御部36は、検索処理部32aから通知されたループ判定情報を判定し、ループ処理が必要である場合はパケットバッファ管理部34aを介してパケットバッファ39から対応するパケットを読み出す。また、検索処理部32aから渡された検索結果情報内のループ回数をカウントアップして装置内ヘッダに設定し、該装置内ヘッダと読み出したパケットを合わせて検索結果ブロックとして出力インターフェース部35aへ渡す。出力インターフェース部35aは、ループ制御部36から渡された検索結果ブロック(装置内ヘッダ+パケット)には0以外のループ回数が設定されているため、第2の通信リンクの中の該ループ回数に対応する出力ポート(出力ポート7−1b〜7−Nbの中の一つ)へ出力して、パケット処理エンジン20aへ送信する。一方、上記の検索処理部32aから通知されたループ判定情報が検索処理完了を示していてループ処理は不要と判断した場合は、検索処理部32aから渡された検索結果情報内のループ回数をリセット(例えば0を設定)してその検索結果情報を検索制御テーブル38に該シーケンス番号と対応づけて格納する。
検索制御テーブル38は、ループ処理中のパケットに関する情報と該パケットの検索状況をシーケンス番号と対応付けて管理する検索制御レコードを保持している。また、現在の時刻を保持する現時刻タイマー、最大N回のパケットループ処理が完了するまでに許容される最大の処理時間を示す処理待ち時間を保持している。検索制御テーブル38の詳細については、図5にて後述する。
検索結果出力部37は所定の周期で起動され、全ての検索処理が完了、つまり、全てのループ処理が完了してパケットバッファ39に格納されているパケットを、該パケットを最初に受信した時刻(ループ処理開始前の受信時刻)の順にパケット処理エンジン20aに送出する。そのため、所定の定周期で起動される検索結果出力部37は、検索制御テーブル38に格納されている検索制御レコードを参照し、現在処理中でパケットバッファ39に滞留中のパケットの中で最も旧い時刻に受信したパケットの受信時刻を現時刻タイマーと比較し、その受信時刻から上記処理待ち時間以上の時間が経過しているか否か、を判定する。そして、処理待ち時間以上の時間が経過していた場合、検索制御レコードの検索処理の状況をチェックし、検索処理が完了している場合はパケットバッファ管理部34aを介してパケットバッファ14からパケットを取り出し、該パケットに検索制御レコードに格納されている最終的な検索結果情報を設定した装置内ヘッダを付加して最終的な検索結果ブロックとし、出力インターフェース部35aへ渡す。出力インターフェース部35aは、検索結果出力部37から渡された検索結果ブロックはその検索結果情報のループ回数がリセット(例えば0を設定)されていることから最終的な検索結果ブロックであると見なし、第1の通信リンクに対応する出力ポート6bを介してパケット処理エンジン20aへ送信する。一方、処理待ち時間が経過しているが該パケットに関する検索処理が未だ完了していない場合は、パケットバッファ管理部34に該パケットの廃棄を指示して、該パケットに関する処理を中断する。
図5は、本発明の第2の実施形態による検索エンジンの検索制御テーブルの構成例である。
検索制御テーブル38はシーケンス番号に対応して設けられる検索制御レコードを保持する検索制御レコード記憶部3810、次シーケンス番号記憶部3820、現時刻タイマー3830、処理待ち時間3840を含んでいる。
次シーケンス番号記憶部3820はパケット処理エンジン20aから最初のパケット(ループ処理前のパケット)、つまり、シーケンス番号が割り当てられていない(例えば、シーケンス番号=0)パケットを受信した際に、その受信したパケットに割り当てるべきシーケンス番号(0以外の値)を記憶する。そして、例えば、最初のパケットに対するシーケンス番号の割り当てが完了すると、次シーケンス番号記憶部3820の内容は+1され、所定の値n(自然数)を越えたときは1に設定されるように構成する。これにより、検索エンジン30aが最初に受信したパケットに対しては1と所定の値nの間の連続した自然数を用いて昇順かつサイクリックにシーケンス番号が付与される。この所定の値は、例えば、第2の通信リンクが含んでいる通信リンク数がNの場合は、N+1以上の自然数とすることが望ましい。つまり、1、2、・・・、n(nはN+1以上の自然数)の自然数をサイクリックに用いてシーケンス番号とすることができる。ここで、nをN+1以上の自然数とする理由は、パケットのループ処理はそのループ回数毎に異なる第2の通信リンクを用いて実行されるため、ループ処理を行わないパケットが第1の通信リンクを用いて処理される分を含めて、同時に処理中となるパケットの数はN+1になる可能性があり、さらに、検索エンジン30aの内部処理に起因するパケットの滞留分を含めるとN+1より大きい数のパケットが同時に処理中となる可能性があるからである。
現時刻タイマー3830は現在時刻を保持するタイマーで、例えば、図5には記載されていない独立した別プロセスにより一定周期でカウントアップして常に現在時刻を示すように構成できる。
検索制御レコード記憶部3810は、処理中のパケットをシーケンス番号に対応付けて管理するための情報である検索制御レコードを保持する領域である。
検索制御レコードは、例えば、パケットに関する検索処理の状況を示す状態情報3811、パケットループ処理前のパケット(以降、初期パケットとも記述する)の受信時刻である初期パケット受信時刻3812、パケットバッファ39内におけるパケットの格納位置を示すパケットポインタ3813、パケット長3814、検索処理の結果を格納する検索結果情報3815を含むように構成できる。
状態情報3811は該パケットに対する検索処理を実行中か否かを示す処理中フラグ、該パケットに対する全ての検索処理(つまり、全てのループ処理を含んだ検索処理)が完了したか否かを示す検索完了フラグを含んでいる。前記図4に示した検索結果出力部37は、この検索完了フラグを判定し、フラグがオンの場合は検索処理完了とみなして最終的な検索結果ブロック(検査結果情報+パケット)をパケット処理エンジン20aへ送信する。最初のパケット受信時にシーケンス番号が割り当てられた時点で、本状態情報3811は初期化され、処理中フラグ、検索完了フラグはリセット(例えばオフを設定)される。
初期パケット受信時刻3812は、パケット処理エンジン20aから該パケットに関する最初に(ループ処理前に)検索要求ブロック(装置内ヘッダ+パケット)を受信したときの時刻を示している。
パケットポインタ3813は、処理中のパケットが格納されているパケットバッファ39内の位置情報を示している。
パケット長3814は、処理中のパケットの長さを示している。
検索結果情報3815は、検索完了したパケットに関する最終的な検索結果情報を保持している。
上記のシーケンス番号は、上記のように、例えば、番号1、2、・・・、nをこの順にサイクリックに割り当てるようにし、シーケンス番号1,2、・・・nをそれぞれ検索制御レコード1、2、・・・、nの配置順に対応付けることにより、検索制御レコード領域3810を図5に示すようにn個の検索制御レコードで構成することができる。
この場合は、次シーケンス番号記憶部3820が示すシーケンス番号iに対して、対応する検索制御レコードiを起点として、検索制御レコード1、2、・・・、nをこの順にサイクリックにサーチして、最初に状態情報3811の処理中フラグがオンの検索制御レコードを最も旧い初期パケット受信時刻2612を持つ検索制御レコードと見なすことができる。また、上記のサーチ処理を回避するために、この処理中で最も旧い初期パケット受信時刻を持つ検索制御レコードに対応するシーケンス番号を常時別領域に保持し、その保持しているシーケンス番号を基に最も旧い初期パケット受信時刻の検索制御レコードを直ちに読み出せるように構成することもできる。
前記図4に示す検索エンジン30aの構成例と関連付けて説明すると、シーケンス番号管理部33aは、入力インターフェース部31aから初期パケット、つまり、シーケンス番号が割り当てられていないパケットを受信した旨の通知を受信したとき、検索制御テーブル38の次シーケンス番号記憶部3820に設定されているシーケンス番号を読み出して入力インターフェース部31aに通知すると同時に、検索制御レコード記憶部3810内の該シーケンス番号に対応する検索制御レコードを初期化して初期パケット受信時刻3812を設定する。そして、次シーケンス番号記憶部3820の内容を1からnの値域内でサイクリックに+1でカウントアップする。パケットバッファ管理部34aはシーケンス番号と共に入力インターフェース部31aから渡されたパケットをパケットバッファ39に格納すると同時に、検索制御テーブル38の該シーケンス番号に対応する検索制御レコードのパケットポインタ3813にパケットの格納位置情報を設定し、また、パケット長3814に該パケットの長さを設定する。一方、検索処理部32aは、入力インターフェース部31aから渡された検索処理依頼データ(検索キー情報を含む)を基に検索処理を実行した後、さらにループ処理を実行すべきか否かを判定し、その判定結果を示すループ判定情報を検索結果情報と共にループ制御部36へ渡す。ループ制御部36は、渡されたループ判定情報がループ不要、つまり、全ての検索処理が完了したことを示している場合は、渡された検索結果情報(ループ回数をリセットしておく)を検索制御情報レコード記憶部3810のシーケンス番号に対応する検索制御レコードの検索結果情報3815に格納すると同時に、状態情報3811の検索完了フラグをオンに設定する。一方、渡されたループ判定情報がループ要を示している場合、つまり、さらにループ処理が必要な場合は、渡された検索結果情報のループ回数をカウントアップした後、パケットバッファ管理部34aを介してパケットバッファ39から対応するパケットを読み出す。そして、読み出したパケットに上記の検索結果情報を格納した装置内ヘッダを付加して検索結果ブロックとし、出力インターフェース部35aに渡す。出力インターフェース部35aは渡されたループ処理途中の検索結果ブロックを、ループ回数に対応した第2の通信リンクを介してパケット処理エンジン20aへ送信する。
一方、検索結果出力部37は所定の一定周期で起動され、検索制御レコード記憶部3810の次シーケンス番号3820に対応する検索制御レコードを起点としてシーケンス番号の1からnに対応する検索制御レコードをサイクリックな昇順でサーチし、状態情報3811の処理中フラグが最初にオンとなる検索制御レコードを抽出する。そして、現時刻タイマー3830が示す時刻と抽出した検索制御レコードの初期パケット受信時刻3812が示す時刻の差を求め、その差が処理待ち時間3840が示す時間を越えているか否かを判定する。そして、その差が処理待ち時間3840が示す時間を越えている場合は、さらに状態情報3811の検索完了フラグがオンか否かを判定し、検索完了フラグがオンの場合は全ての検索処理が完了して最終的な検索結果が検索結果情報3815に格納されているため、その検索結果情報3815を取り出して装置内ヘッダに格納し、また、パケットバッファ管理部34を介してパケットをパケットバッファ39から取り出す。このとき、状態情報3811内の処理中フラグをリセット(例えばオフに設定)し、パケットバッファに存在していたパケットは削除しておく。そして、取り出したパケットに上記の装置内ヘッダを付加して最終的な検索結果ブロックとし、出力インターフェース部35aに渡す。出力インターフェース部35aは、渡された検索結果ブロックを第1の通信リンクとなる通信リンク6の出力ポート6bを介してパケット処理エンジン20aへ送信する。
また、状態情報3811の検索完了フラグがオフ、つまり、検索処理が完了していない場合は検索処理が所定の処理待ち時間内に完了しなかったことを意味し、該検索制御レコードの状態情報3811の処理中フラグをオフにすると同時に、パケットバッファ39内に格納されているパケットを廃棄して、該パケットに対する処理を中断する。
上記のようにして、検索エンジン30aは、初期パケットを受信した時点から、該パケットのループ処理を含めた全ての検索処理が完了するまでの間、該パケットと検索結果情報をシーケンス番号を基に関連づけて保持する。そして、所定の処理待ち時間が経過した時点で初期パケットの受信時刻が最も旧いパケットの検索処理が完了している場合は該パケットをパケットバッファ39から取り出してパケット処理エンジン20aに送信し、所定の処理待ち時間が経過した時点でも該パケットの検索処理が完了していない場合は、該パケットを削除して該パケットの処理を中断する。これにより、複数のパケットのループ処理を並行して効率よく実行すると同時に、検索エンジン30aがパケットを受信した順番を維持しながら、検索処理が完了したパケットをパケット処理エンジン20aへ送信することができる。
図6は、本発明の第3の実施形態によるパケット処理装置の構成例を示している。
10は入力インターフェース、20bはパケット処理エンジン、30bは検索エンジン、50は出力インターフェース、39はパケットバッファ、351はスケジューラを示す。パケット処理エンジン20bは出力インターフェース50に対して直接データを渡す点以外は、前記図3に示したパケット処理エンジン20aと同様な機能を持っている。前記第2の実施形態と同様に、パケット処理エンジン20bは入力インターフェース10から転送されたパケットに、検索要求情報を格納した装置内ヘッダを付加して検索エンジン30bに転送し、検索エンジン30bはパケットバッファ39にパケットを一時的に保持し、装置内ヘッダに含まれている検索キーを基に検索処理を行った後、その検索結果とパケットをパケット処理エンジン20bに返送する。また、検索エンジン30aは、必要な場合は前記第2の実施形態と同様にパケットのループ処理を行う。
本第3の実施形態では、検索エンジン30bは、前記図4に示した構成に加えて、前記図1、図2に示したトラフィックマネージャー40と同様のスケジューリング処理を行うスケジューラ351をさらに備えている。従って、本発明の第2の実施形態に示す機能は全て含んでいるが、その内容は第2の実施形態と同様であり、説明は割愛する。
本第3の実施形態では、全てのループ処理が完了したパケット、つまり、その検索結果が検索制御レコードに保持されているパケットについては、スケジューラ351はその検索制御レコードに保持されている検索結果情報を基に(例えば、QoS関連情報を基に)、パケットと装置内ヘッダをキューイングするなどの優先制御を行った後に、第1の通信リンクを介してパケット処理エンジン20bへ送信する。
この第3の実施形態による検索エンジン30bの構成例としては、前記図4に示した検索エンジン30aの構成において、出力インターフェース部35aの中に上記スケジューラ351は含めて構成することができる。
この第3の実施形態では、パケットバッファ39を、検索処理用と検索完了したパケットのスケジューリング用とに兼用することによりトラフィックスケジューラ40が不要となり、パケット処理装置の構成の単純化と低コストを図ることができる。
図7は、本発明の第2の実施形態による検索エンジンのループ処理時の動作フロー例である。
S01. 検索エンジン30aは、パケット処理エンジン20aから第1の通信リンク6を介して検索要求ブロック(装置内ヘッダ+パケット)を受信すると、装置内ヘッダに格納されている検索要求情報を基に最初の検索要求(ループ処理開始前の)か否かを判定する。この判定は、検索要求情報内に設定されているシーケンス番号により行うことができる。例えば、シーケンス番号が0のときは検索エンジン30aによりシーケンス番号が割り当てられていないことを示すように構成することにより、装置内ヘッダのシーケンス番号を判定して最初の検索要求か否かを判定することができる。
S02. 検索制御テーブル38の次シーケンス番号記憶部3820より、次に割り当てるべきシーケンス番号を取り出して受信したパケットに割り当て、検索制御レコード記憶部3810内の該シーケン番号に対応する検索制御レコードを初期化する。この初期化により、状態情報3811の処理中フラグ、検索完了フラグがリセット、つまり、オフに設定される。
S03. 前記図4の第2の実施形態の構成例に示した検索処理部32aにより検索処理を実行する。この検索処理により、検索処理の結果を示す検索結果情報とループ処理が必要か否かを示すループ判定情報が出力される。
S04. 上記ステップS03で出力されたループ判定情報を基に、該パケットはさらにループ処理が必要か否かを判定し、ループ処理が必要ならば(YES)次のステップS05へ移行し、ループ処理が不要、つまり、全ての検索処理が完了した状態ならば(NO)ステップS06へ移行する。
S05. 上記ステップS03で出力された検索結果情報のループ回数をカウントアップした後に、パケットバッファ39から対応するパケットを読み出し、そのパケットに上記検索結果情報を設定した装置内ヘッダを付加して検索結果ブロックとし、ループ回数に対応した第2の通信リンクを介してパケット処理エンジン20aへ送信し、処理を終了する。これにより、パケットループ処理、つまり、パケット処理エンジン20aと検索エンジン30aの間で必要な回数パケットを受け渡しながらパケットに対する追加処理を段階的に行うことができる。このループ処理は検索エンジン30aの検索処理部32aがループ処理が不要と判定するまで最大N回の範囲で行うことができる。ここで、Nは前記図3に示したパケット処理エンジン20aと検索エンジン30aの間の第2の通信リンクが含むループ用通信リンクの数を示している。
S06. ここではパケットのループ処理が不要、つまり、該パケットに対する全ての検索処理が完了しているため、検索結果情報のループ回数をリセット(例えば0に設定)した後に検索制御レコードの検索結果情報3815に格納し、処理を終了する。ここで格納された検索結果情報は、本処理と独立して所定の一定周期で起動される検索結果出力部37により取り出されて装置内ヘッダに設定され、装置内ヘッダとパケットから成る検索結果ブロックとして第1の通信リンクを介してパケット処理エンジン20aへ送信される。この検索結果出力部37の動作フローについては、図8において後述する。
図8は、本発明の第2の実施形態による検索エンジンの検索結果出力時の動作フローで、前記図4に示した第2の実施形態の検索エンジンの検索結果出力部37の動作フローを示している。本処理は所定の一定周期で起動されるが、起動周期は検索完了したパケットが検索エンジン30a内に滞留しないように、できるだけ短い時間であることが望ましい。
S11. 検索制御テーブル38に格納されている処理中(状態情報3811の処理中フラグがオン)の検索制御レコードの中から、最も旧い初期パケット受信時刻3812を有する検索制御レコードを取り出し、該検索制御レコードの初期パケット受信時刻3812を読み出す。つまり、処理中でしかも最も旧い初期パケット受信時刻を有する検索制御レコードが示すパケットが、次にパケット処理エンジン20aに送出すべきパケットとなる。ここで、最も旧い初期パケット受信時刻3812を有する処理中の検索制御レコードを抽出するためには、検索制御テーブル38に格納されている検索制御レコード内の初期パケット受信時刻3812を直接サーチする方法もあるが、前記図5に示した検索制御テーブル38の構成例では、シーケンス番号1から所定値nの間の自然数は、それぞれ、検索制御レコード1からnに対応することを利用して、次のようにして抽出することができる。
次シーケンス番号3820に対応する検索制御レコードを起点としてシーケンス番号1からnの間のサイクリックな昇順に対応する検索制御レコードをサーチし、状態情報3811の処理中フラグが最初にオンとなる検索制御レコードを抽出する。ここで、シーケンス番号1からnの間のサイクリックな昇順とは、1、2、・・・、n、1、2、・・・、n、1、2、・・・のように、1からnの間の自然数を連続的に昇順で繰り返し使用することを意味する。
この方法が可能なのは、検索制御レコードの状態情報3811の処理中フラグは、検索エンジン30aで検索処理中の場合のみオンに設定され、また、シーケンス番号は1からn間のサイクリックな昇順の自然数が順次割り当てられ、そのシーケンス番号が割り当てた時点で初期パケット受信時刻3812が設定されるため、処理中の検索制御レコードの初期パケット受信時刻3812の値の昇順と該検索制御レコードに割り当てられるシーケンス番号の1からnの間のサイクリックな昇順とが対応するためである。
また別な方法として、次にパケット処理エンジン20aに最終的な検索結果として送出すべきパケットのシーケンス番号を常に保持しておくこともできる。この場合は、上記のようなサーチ処理は不要となり、より高速に次出力パケットの受信時刻の読み出しが可能となる。
S12. 検索制御テーブル38の現在時刻タイマー3830から、現在時刻を読み出す。
S13. 上記ステップS11で読み出した初期パケット受信時刻とステップS12で読み出した現在時刻との差が、処理待ち時間3840に格納されている所定の処理待ち時間より大か否かを判定し、大ならば(YES)処理待ち時間のタイムアウトと見なして次のステップS14に移行し、大でなければ(NO)次の処理待ち時間のタイムアウトになる時間まで待ち合わせるために処理を終了する。
S14. 状態情報3811の検索完了フラグを判定し、検索完了ならば(YES)次のステップS15へ移行し、検索が完了していない場合は(NO)ステップS18へ移行する。
S15. 検索制御レコードに格納されている検索結果情報3815を読み出し、その検索結果情報を設定した装置内ヘッダを生成する。
S16. 対応するパケットをパケットバッファ39から取り出して、上記ステップS15で作成した装置内ヘッダを付加して最終的な検索結果ブロックとして出力する。このとき、対応するパケットはパケットバッファ39から削除しておく。
S17. 検索制御レコードの状態情報3811の処理中フラグをリセットし、処理を終了する。
S18. パケットバッファ39に保持されている対応するパケットを削除し、ステップS17へ移行する。
図9は、本発明の検索要求ブロック及び検索結果ブロックの構成例で、検索要求ブロックはパケット検索エンジン20aから検索エンジン30aへ渡され、検索結果ブロックは検索エンジン30aからパケット処理エンジン20a、トラフィックマネージャー40、出力インターフェース50へ渡される。
検索要求ブロックおよび検索結果ブロックとも図9に示すようなデータフォーマット1000で構成され、装置内ヘッダ1100とパケット格納領域1200を含んでいる。検索要求ブロックの場合は、装置内ヘッダ1100にパケット処理エンジン20aが生成する検索要求情報300が設定され、検索結果ブロックの場合は、装置内ヘッダ1100に検索エンジン30aが生成する検索結果情報400が設定される。パケット格納領域1200には入力インターフェース10からパケット処理エンジン20aに渡されたパケットデータが格納される。このパケットデータは、パケット処理エンジン20aの処理にて一部(例えばヘッダ部分等)変更された後にパケット領域1200に格納される場合もある。
図10は、本発明の装置内ヘッダに設定される検索要求情報の構成例を示している。本構成は本発明の第1、2、3の実施形態で適用可能であるが、ここでは説明の便宜上、第2の実施形態を代表例にして説明する。
検索要求情報300は、検索要求ブロックの装置内ヘッダに格納されてパケット処理エンジン20aから検索エンジン30aに渡される。
301はパケット処理エンジン20aによって生成されるデータチェック情報である。パケット処理エンジン20aは、パケット処理エンジン20aによって付け加えられた装置内ヘッダ、および、パケット処理エンジン20aによって変更されたパケット内のデータ領域についてデータチェックビットを生成して検索要求情報300のデータチェック情報301に格納する。データチェックの方法としては、例えば、CRCチェックとすることができる。チェック対象となるデータ領域は後述するチェック範囲305によって示される。
302はシーケンス番号で、検索エンジン30aによって割り当てられたシーケンス番号を格納する領域である。検索エンジン30aとパケット処理エンジン20aの間でパケットループ処理を実行している間は、検索エンジン30aとパケット処理エンジン20aの間で受け渡される装置内ヘッダに同一のシーケンス番号が保持され、他のパケットに関するループ処理と区別される。パケット処理エンジン20aから検索エンジン30aに最初に送信される初期パケットについては、シーケンス番号302には例えば0を設定しておくことにより、最初のパケットか否かを検索エンジン30aが判定できる。
303はループ回数で、検索エンジン30aにより設定され、現在何回目のループ処理を実行中かを示す。パケット処理エンジン20aは、初期パケットについては、本ループ回数303をリセット(例えば0を設定)しておくが、それ以外のループ処理中は、検索エンジン30aから設定されてきた値をそのまま検索エンジン30aに送り返す。
304は主回線の受信ポート1からパケットを受信した際のパケット種別を示す。
305はチェック範囲で、データチェック情報301に設定されるチェックビットを生成する際のチェック対象となるデータ領域の境界位置を示す情報である。例えば、前記図9に示したデータフォーマット1000の領域内の相対アドレス、つまり、オフセット値とすることができる。これにより、例えば、データフォーマット1000の先頭からチェック範囲305に設定されているオフセット値が示すデータフォーマット1000内の位置までの領域(ただし、検索要求情報300のデータチェック情報301の領域を除く)をデータチェックの対象とすることができる。先頭からオフセット値が示す領域までをチェック範囲とするのは、パケット処理エンジン20aが変更する領域はパケットの先頭部分(ヘッダ領域とその近傍)の場合が多いためで、その変更した情報が格納されているパケット領域内の最終位置をオフセット値により設定しておくことができる。
このようにデータチェック情報を構成することにより、例えば、パケット処理エンジン20aが検索要求ブロックを検索エンジン30aに送信する際に、パケット処理エンジン20aで変更した部分についてCRC(Cyclic Redundancy Check)を計算して、装置内ヘッダのデータチェック情報301にその計算したCRC値を設定する。又、変更した部分の最終位置を示すオフセット値を検索要求情報300のチェック範囲305に設定する。検索エンジン30aは、検索要求ブロック(装置内ヘッダ+パケット)受信時に、チェック範囲305が示す位置までの領域(ただし、データチェック情報301の領域は除く)についてCRC値を計算し、その結果が受信した検索要求情報300のデータチェック情報301に設定されている値と一致するか否かを判定することにより、送信されてきた検索要求ブロックのパケット処理エンジン20aが変更した部分についてはエラーが無いことを確認することができ,エラーがある場合は該データを廃棄することができる。
同様にして、検索エンジン30aからパケット処理エンジン20aに検索結果ブロックを送信する場合も、検索エンジン30aにおいて変更した領域についてデータチェックを行ってデータチェック情報を付加してパケット処理エンジン20aに送信することができる。これについては、図12において後述する。
なお、変更のない部分については、検索エンジン30a及びパケット処理エンジン20aに於いて確認を行う必要はない。
306はVPN−ID(Vitual Private Network−Identifier)で、主回線の受信ポート1から入力インターフェース10によりパケットが受信された際のパケットが属するVPNのIDを示している。
307は受信ポート番号で、パケットが受信された主回線の受信ポート1の番号である。
308はパケット長である。
309はユーザ定義領域で、例えば機能拡張時等に使用する領域である。
310、311、312、313は検索キー情報が格納されている領域を示す検索キーポインタである。図10の実施例では4個の検索キーの例を示しているが、検索キーの数はこれに限定されない。また、検索キー情報のサイズが小さい場合は、検索キーのポインタではなく、検索キー情報そのものを310、311、312、313に格納してもよい。
上記の検索要求情報300は一つの構成例であり、上記の検索要求情報300に含まれる情報項目、および、レイアウトはパケット処理エンジン20a、及び、検索エンジン30aの処理の内容に依存して変わるが、本発明の本質には影響しない。
図11は、本発明の検索エンジンの検索処理時に使用される検索処理依頼データの構成例を示しており、本発明の第1、第2、第3の実施形態で共通に用いることができるものであるが、説明の便宜上第2の実施形態を代表例として説明する。
検索エンジン30aの入力インターフェース部31aは、パケット処理エンジン20aから渡された前記図10に示す検索要求情報300の中の検索キーポインタ310、311、312、313が示すパケット格納領域1200より検索キー情報1、2、3、4をそれぞれ抽出して、装置内ヘッダ(検索要求情報)2300に検索キー情報2310、2311、2312、2313として付加し、検索依頼データ2000として検索処理部32aに渡す。これにより、検索処理部32aは渡された検索キー情報を基に検索処理を迅速に実行できる。検索キー情報としては、例えば、IPv4のパケットデータの場合は、パケットのヘッダに格納されているIP−SA(送信アドレス)、IP−DA(宛先アドレス)、あるいは、Payload(ペイロード)内の特定データ等が考えられる。
本検索処理依頼データ2000は、FIFO方式でキューイングして検索処理部32aに渡すように構成することもできる。
図12は、本発明の装置内ヘッダに格納される検索結果情報の構成例で、本発明の第1、第2、第3の実施形態で共通に用いることができるものであるが、説明の便宜上第2の実施形態を代表例として説明する。
401は検索エンジン30aによって付加されるデータチェック情報である。検索処理エンジン30aは、検索エンジン30aによって生成された装置内ヘッダ、および、検索エンジン30aによって変更されたパケットデータ内のデータ領域を対象として、データチェック情報を生成して検索結果情報400に格納する。データチェックの方法としては、例えば、CRCチェックとすることができる。チェック対象となるデータ領域は後述するチェック範囲405によって示される。
402はシーケンス番号で、検索エンジン30aによって割り当てられたシーケンス番号を格納する領域である。パケット処理エンジン20aから最初に検索エンジン30aに送信される初期パケット(ループ処理前のパケット)については、シーケンス番号302には例えば0を設定しておく。検索エンジン30aは、シーケンス番号=0の検索要求ブロックを受信した際は、シーケンス番号を該パケットに割り当て、ループ処理の際はこの割り当てたシーケンス番号が装置内ヘッダの検索結果情報に設定されてペケット処理エンジンに渡される。パケット処理エンジンは20aは、渡されたシーケンス番号をそのまま前記10に示した検索要求情報のシ0ケンス番号302に設定して検索エンジン30aに引き渡す。
403はループ回数で、検索エンジン30aがループ処理を行う際に、現在何回目のループ処理かを示すループ回数が設定する。ループ処理中は、パケット処理エンジン20aはここに設定されているループ回数をそのまま検索エンジン30aに送り返す。
404は検索処理の対象となっているパケットの種別を示す。
405は送信ポート番号で、検索処理の対象となっているパケットが最終的に出力インターフェース50から送出されるときの主回線の送信ポート5の番号を示す。
406は受信ポート番号で、検索処理の対象となっているパケットが入力インターフェース10に入力されたときの主回線の受信ポート1の番号を示す。
407はチェック範囲で、データチェック情報401に設定されるチェックビットを生成する際のチェック対象となるデータ領域の境界位置を示す情報で、例えば、前記図9に示した受け渡しデータ1000領域内の相対アドレス情報、つまり、オフセット値とすることができる。
これにより、例えば、データフォーマット1000の先頭からチェック範囲407に設定されているオフセット値が示すデータフォーマット1000内の位置までの領域(ただし、検索結果情報400のデータチェック情報401の領域を除く)をデータチェックの対象とすることができる。先頭からオフセット値が示す領域までをチェック範囲とするのは、パケット検索エンジン30aが変更する領域はパケットの先頭部分(ヘッダ領域とその近傍)の場合が多いためで、その変更した情報が格納されているパケット領域内の最終位置をオフセット値により設定しておくことができる。
検索エンジン30aは、例えば、パケットを送信する直前に装置内ヘッダ検索結果情報400のチェック範囲405に設定されているオフセット値までのCRC計算を行い、検索結果情報400のCRC値を書き換えて、パケット処理エンジン20aへ送信する。パケット処理エンジン20aは、受信した検索結果情報400のチェック範囲405が示す領域のCRCチェックビットを計算し、受信した検索結果情報400のデータチェック情報401に設定されている値と一致するか否かを判定し、一致しない場合はデータエラーが発生したとみなして、該検索結果ブロックを廃棄する。なお、変更のない部分については、検索エンジン30a及びパケット処理エンジン20aに於いて確認を行う必要はない。
上記は、検索エンジン30aとパケット処理エンジン20aの間のデータ受け渡しに伴うエラーをチェックするものであるが、さらに、出力インターフェース50で渡された検索結果ブロック(装置内ヘッダ+パケット)のオフセット値以降、つまり、検索エンジン30a及びパケット処理エンジン20aに於いて変更されなかった部分のCRCのチェック行い、エラーがある場合はパケットを廃棄するように構成することもできる。
また、検索エンジン30aやパケット処理エンジン20aの各処理ブロック内においても、例えば、RAMにデータを書き込む際はパリティを設定し、エラーを検出する仕組みを持たせることもできる。
上記に示したデータチェック方法により、高信頼性を維持した状態でのパケットの転送処理を実行することができる。
408はVPN−IDで、検索処理の対象となっているパケットが最終的に出力インターフェース50から送信ポート5へ送出されるときに属すべきVPNのIDを示している。
409はポリシングIDで、検索処理の対象となっているパケットに対してトラフィックマネージャー40が優先制御などのQoS制御を行う際に用いられる。
410はクラス情報で、上記ポリシングIDと同様に、検索処理の対象となっているパケットに対してトラフィックマネージャー40が優先制御などのQoS制御を行う際に用いられる。
411はユーザ定義領域で、例えば機能拡張時等に使用する領域である。
上記の検索結果情報400は一つの構成例であり、上記の検索結果情報400に含まれる情報は検索エンジン30aの検索処理の内容に依存して変わるが、本発明の本質には影響しない。
図13は、本発明の第2の実施形態による検索エンジンの処理シーケンス例(1)で、シーケンス番号が未だ割り当てられていない初期パケットをループ処理する場合を例にして検索エンジン30aの処理の流れを、データの流れ(矢印)に付加した処理ステップ番号で示している。
S101. 検索エンジン30aの入力インターフェース部31aはパケット処理エンジン20aからシーケンス番号が割り当てられていないパケットデータ、つまり、シーケンス番号=0が装置内ヘッダに設定されているパケットデータを第1の通信リンクの入力ポート6aを介して受信する。
S102. 入力インターフェース部31aはシーケンス番号管理部33aに初期パケット受信の通知を行う。
S103. シーケンス番号管理部33aは、検索制御テーブル38の次シーケンス番号記憶部3820に保持されているシーケンス番号を割り当てるシーケンス番号として発行し、入力インターフェース部31aに通知する。
このとき、シーケンス番号管理部33aは検索制御テーブル38の次シーケンス番号記憶部3820に対して、例えば、1から所定の値nの範囲でサイクリックの+1加算処理を行い、次に割り当てるべきシーケンス番号を保持しておく。また、シーケンス番号管理部33aは、該シーケンス番号に対応する検索制御テーブル38内の検索制御レコード領域を初期化し、その中の初期パケット受信時刻3812に該パケットの受信時刻を書き込む。
S104. 上記ステップS103でシーケンス番号を通知された入力インターフェース部31aは、上記ステップS101で受信した装置内ヘッダの検索要求情報に格納されている検索キーのポインタ情報を基に、受信したパケットの中に格納されている検索キー情報を抽出する。そして、抽出した検索キー情報を受信した検索要求情報に付加して検索処理依頼データとして検索処理部32aに通知する。
S105. また、 入力インターフェース部31aは、受信したパケットとその割り当てられたシーケンス番号をパケットバッファ管理部34へ引き渡す。パケットバッファ管理部34aは、引き渡されたパケットをパケットバッファ39に格納すると同時に、その格納位置情報(例えばメモリアドレス)を渡されたシーケンス番号に対応する検索制御レコード内のパケットポインタ3813に設定する。
S106. 上記シーケンスS104で検索処理依頼データを渡された検索処理部32aは、検索処理を実行した後さらにループ処理が必要か否かを判定し、その結果をループ判定情報として検索結果情報と共にループ制御部36へ渡す。本図13のケースはループ処理が必要な場合の例であるため、検索処理部32aがループ制御部36に渡すループ判定情報にはループ処理が必要なことを示す情報が設定されている。
S107. ループ制御部36は渡されたループ判定情報にはループ処理が必要なことが示されているため、ループ処理を行うためにパケットバッファ39に格納されているパケットを読み出す。また、検索処理部32aから渡された検索結果情報内のループ回数をカウントアップする。(パケット処理エンジン20aから渡される検索要求情報のループ回数には、初期パケットの場合は0が設定されている)
S108. ループ制御部36は上記ステップS107で読み出したパケットに検索結果情報を格納した装置内ヘッダを付加して検索結果ブロックとし、出力インターフェース部35aへ渡す。
S109. 出力インターフェース部35は、渡された検索結果ブロック(パケットと装置内ヘッダを含む)を、第2の通信リンク内のループ回数に対応した番号(このケースでは1)の出力ポート(このケースでは7−1b)を介してパケット処理エンジン20aへ送信する。
図14は、本発明の第2の実施形態による検索エンジンの処理シーケンス例(2)で、シーケンス番号が割り当て済み(ループ処理中)のパケットに対してさらにループ処理する場合を例にして、検索エンジン30aの処理の流れを、データの流れ(矢印)に付加した処理ステップ番号で示している。
S201. 検索エンジン30aの入力インターフェース部31aはパケット処理エンジン20aから0以外のシーケンス番号が割り当て済みのパケットに関する検索要求ブロック(パケットと装置内ヘッダを含む)を受信する。シーケンス番号が割り当て済みということは、検索エンジン30aが該パケットに対してループ処理を実施中であることを示している。また、本検索要求ブロックは第2の通信リンク内の現在のループ回数(装置内ヘッダの検索要求情報に設定されている)に対応する通信リンク(7−1、・・・、7−Nの中の一つ)の入力ポートから受信される。このように、ループ処理対象のパケットを受信する通信リンクをループ回数に応じて設けることにより、最大N個の複数のパケットのループ処理をループ処理タイミングをずらしながら並行して実行することが可能となる。
S202. 入力インターフェース部31aは、上記ステップS101で受信した検索要求ブロックの装置内ヘッダに格納されている検索要求情報の検索キーポインタ情報を基に、受信したパケットの中から検索キー情報を抽出する。そして、抽出した検索キー情報を受信した検索要求情報に付加したデータを検索処理依頼データとして検索処理部32aに通知する。
S203. また、入力インターフェース部31aは、受信したパケットと割り当てられたシーケンス番号をパケットバッファ管理部34aへ渡す。パケットバッファ管理部34aは、渡されたパケットをパケットバッファ39に格納すると同時に、その格納位置の情報(例えばメモリアドレス)を該シーケンス番号に対応する検索制御レコードのパケットポインタ3813に格納する。
ここで、ループ処理対象のパケットについては、初期パケットを受信した際(シーケンス番号が割り当てられていない状態のとき)のその初期パケットをパケットバッファ39に格納してループ処理が終わるまで保持しておき、ループ処理でパケットの内容を変更する必要がない場合は、受信したパケットをパケットバッファ39へ格納しないようにしてもよい。また、パケットのヘッダ部分など、ループ処理中に検索エンジン30aが変更する可能性のある部分のみをパケットバッファ39に保持されているパケットに上書きしてもよい。
S204. 上記ステップS202で入力インターフェース部31aから検索処理依頼データを渡された検索処理部32aは、渡された検索処理依頼データに設定されている検索キー情報を基に、例えば、CAM等予め検索処理部32aに保持されているデータを検索し、検索結果をループ制御部36へ渡す。このとき、同時に、さらにループ処理が必要か否かを判定してその結果をループ判定情報としてループ制御部36へ渡す。
S205. ループ制御部36は検索処理部32aから渡されたループ判定情報を判定するが、本ぅ15のケースはループ処理が必要な場合であるため、さらにループ処理を行うために、パケットバッファ管理部34aを介してパケットバッファ39に格納されているパケットを読み出す。また、検索処理部32aから渡された検索結果情報内のループ回数をカウントアップする。
S206. ループ制御部36は、読み出したパケットに上記検索結果情報を設定した装置内ヘッダを付加して検索結果ブロックとし、出力インターフェース部35へ渡す。この検索結果ブロックには、まだ全ての検索処理が完了していないループ処理途中の検索結果情報が格納されていることになる。
S207. 出力インターフェース部35aは、渡された検索結果ブロック(パケットと装置内ヘッダを含む)を、第2の通信リンク内のループ回数に対応した番号の出力ポートを介してパケット処理エンジン20aへ送信する。
図15は、本発明の第2の実施形態による検索エンジンの処理シーケンス例(3)で、パケット対する検索処理が全て完了した場合、つまり、ループ処理が完了した場合を例にして、検索エンジン30aの処理の流れを、データの流れ(矢印)に付加した処理ステップ番号で示している。
S301. 検索エンジン30aの入力インターフェース部31aはパケット処理エンジン20aからシーケンス番号が割り当て済みの検索要求ブロック(パケットと装置内ヘッダを含む)を受信する。シーケンス番号が割り当て済みということは、検索エンジン30aが該パケットに対してループ処理を実施中であることを示している。
S302. 入力インターフェース部31aは、上記ステップS101で受信した検索要求ブロックの装置内ヘッダに格納されている検索要求情報の検索キーポインタ情報を基に、受信したパケットの中から検索キー情報を抽出する。そして、抽出した検索キー情報を受信した検索要求情報に付加したデータを検索処理依頼データとして検索処理部32aに通知する。
S303. また、入力インターフェース部31aは、受信したパケットと割り当てられたシーケンス番号をパケットバッファ管理部34aへ引き渡す。パケットバッファ管理部34aは、引き渡されたパケットをパケットバッファ39に格納すると同時に、その格納位置の情報(例えばメモリアドレス)を渡されたシーケンス番号に対応する検索制御レコードのパケットポインタ3813に格納する。
ここで、ループ処理対象のパケットについては、最初に受信した際(シーケンス番号が割り当てられていない状態のとき)のみパケットバッファ39に格納してループ処理が終わるまで保持しておき、2回目以降のループ処理でパケットの内容を変更する必要がない場合は、パケットをパケットバッファ39へ格納しないようにしてもよい。また、パケットのヘッダ部分など、ループ処理中に変更となる可能性のある部分のみをパケットバッファ39に保持されているパケットに上書きしてもよい。
S304. 検索処理部32aは、入力インターフェース部31aから渡された検索処理依頼データに設定されている検索キー情報を基に、例えば、CAM等に予め検索処理部32aに保持されているデータを検索し、検索結果をループ制御部36へ渡す。このとき、同時に、さらにループ処理が必要か否かを判断してその結果をループ判定情報としてループ制御部36へ渡す。
S305. ループ制御部36は検索処理部32aから渡されたループ判定情報を基に、さらにループ処理が必要か否かを判定する。本図15のケースではループ処理が完了し検索処理が全て完了しているため、ループ制御部36は検索処理部32aから渡された検索結果情報のループ回数をリセットして検索制御テーブル38内の対応する検索制御レコードに格納する。
S306. 上記ステップS305で検索制御テーブル38の検索制御レコードに格納された検索結果情報は、所定の周期で起動される検査結果出力部37により初期パケット受信時刻の順にとり出される。
S307. また、検査結果出力部37は、パケットバッファ39から該当するパケットを取り出す。
S308. 上記ステップS306で取り出した検索結果情報を装置内ヘッダに設定し、また、上記ステップS307取り出したパケットに上記装置内ヘッダを付加して検索結果ブロックとし、出力インターフェース部35aへ渡す。
S309. 出力インターフェース部35aは、渡された検索結果ブロック(パケットと装置内ヘッダを含む)を、第1の通信リンクに対応する出力ポート6bを介してパケット処理エンジン20aへ送信する。
以上詳述した本発明の説明で用いた実施例は代表的な例を示したもので、様々な変形が可能であるが、本発明はそれらに対しても同様に適用できる。
以上述べた本発明の実施の態様は、以下の付記の通りである。
(付記1)パケット処理エンジンと検索エンジンとを含む構成のパケット処理装置に於いて、
前記パケット処理エンジンと前記検索エンジンとの間を、パケットを伝送する主回線の伝送帯域以上の帯域で接続するバスを備え、
前記パケット処理エンジンは、前記主回線を介して受信した前記パケットに検索キーを含む装置内ヘッダを付加して、前記バスを介して前記検索エンジンに送信する手段を備え、
前記検索エンジンは、前記パケット処理エンジンから前記バスを介して送信されたパケットを一時的に格納するパケットバッファと、前記装置内ヘッダに格納されている検索キーを基に検索処理を行う手段と、前記検索処理部による検索結果情報と前記パケットバッファに格納されたパケットとを前記バスを介して前記パケット処理エンジンに返送する手段を備える
ことを特徴とするパケット処理装置。
(付記2)付記1に記載のパケット処理装置において、
前記検索エンジンは、前記パケット処理エンジンから受信したパケット毎にシーケンス番号を割り当てるシーケンス番号管理手段と、
前記パケット処理エンジンとの間で前記パケットと前記装置内ヘッダを繰り返し受け渡しながら前記パケットに対して段階的に処理を追加するパケットループ処理の実行を前記シーケンス番号を基に管理するループ制御手段を備え、
前記検索エンジンは、前記パケットループ処理が完了したパケットと検索結果を前記パケットループ処理前のパケットの受信時刻が旧いものから先に順次前記パケット処理エンジンへ送信する
ことを特徴とするパケット処理装置。
(付記3)付記2に記載のパケット処理装置において、
前記パケット処理エンジンと前記検索エンジンとの間を接続する前記バスは、前記パケットループ処理前及び前記パケットループ処理完了後のパケットと装置内ヘッダを受け渡す第1の通信リンクと、前記パケットループ処理中のパケットと装置内ヘッダを受け渡す1以上の第2の通信リンクを含み、
前記1以上の第2の通信リンクは前記パケットループ処理時の各ループ回数に対応して設けられ、
前記パケットループ処理中のパケットは、前記ループ回数に対応する第2の通信リンクを介して前記パケット処理エンジンと前記検索エンジンとの間で受け渡される
ことを特徴とするパケット処理装置。
(付記4)付記1に記載のパケット処理装置において、
前記検索エンジンは、前記検索処理部による検索結果に基づいて前記パケットと前記装置内ヘッダを出力すべき出力キューを決定し、前記出力キュー毎に前記パケットのスケジューリングを行って前記パケットと前記装置内ヘッダを前記パケット処理エンジンに転送するスケジューラを備える
ことを特徴とするパケット処理装置。
(付記5)付記1に記載のパケット処理装置において、
前記パケット処理エンジン、および、前記検索エンジンは、前記パケット処理エンジンと前記検索エンジンと間で受け渡す前記装置内ヘッダと前記パケットのデータの中の少なくとも変更のある部分についてのデータチェックを行う手段を備える、
ことを特徴とするパケット処理装置。
(付記6)付記2に記載のパケット処理装置において、
前記検索エンジンは、前記パケットループ処理前のパケットの受信時刻と、前記前記パケットループ処理が完了したパケットの検査結果情報とを前記シーケンス番号に対応付けて記憶する検索制御レコード記憶手段と、
前記シーケンス番号を基に前記検索制御レコード記憶手段から前記パケットループ処理前のパケットの受信時刻を読み出して、予め設定した処理待ち時間を経過したか否かを判定し、予め設定した前記処理待ち時間を経過した場合はさらに検索処理が完了したか否かを判定し、検索処理が完了していない場合は当該パケットを廃棄し、検索処理が完了している場合は前記検索制御レコード記憶手段から検索結果情報を読み出して装置内ヘッダに設定し、前記装置内ヘッダを付加したパケットを前記パケット処理エンジンに送信する検索結果出力手段を備える
ことを特徴とするパケット処理装置。
(付記7)パケット処理エンジンと検索エンジンとを含み、主回線を介して受信したパケットを処理するパケット処理方法に於いて、
前記パケット処理エンジンは、前記パケットに検索キーを含む装置内ヘッダを付加して前記検索エンジンに送信し、
該検索エンジンは、前記パケット処理エンジンから送信されてきた前記パケットをパケットバッファに一時的に格納し、前記装置内ヘッダに格納されている検索キーを基に検索処理した検索結果を、前記パケットバッファから読み出したパケットに付加して前記パケット処理エンジンに返送する
ことを特徴とするパケット処理方法。
(付記8)付記7に記載のパケット処理方法において、
前記検索エンジンは、前記パケット処理エンジンから受信したパケット毎にシーケンス番号を割り当て、
前記パケット処理エンジンとの間で前記パケットと前記装置内ヘッダを繰り返し受け渡しながら前記パケットに対して段階的に処理を追加するパケットループ処理の実行を前記シーケンス番号を基に管理し、
前記パケットループ処理が完了したパケットと検索結果を、前記パケットループ処理前のパケットの受信時刻が旧いものから先に順次前記パケット処理エンジンへ送信する
ことを特徴とするパケット処理方法。
(付記9)付記8に記載のパケット処理方法において、
前記検索エンジンと前記パケット処理エンジンは、前記パケットループ処理前及び前記パケットループ処理完了後のパケットと装置内ヘッダについては、前記検索エンジンと前記パケット処理エンジンの間に設けられる第1の通信リンクを介して受け渡し、
前記パケットループ処理中のパケットについては、前記検索エンジンと前記パケット処理エンジンの間に設けられ1以上の第2の通信リンクを介して受け渡す、
ことを特徴とするパケット処理方法。
(付記10)付記9に記載のパケット処理方法において、
前記1以上の第2の通信リンクは前記パケットループ処理時の各ループ回数に対応して設けられ、
前記パケットループ処理中のパケットは、前記ループ回数に対応した通信リンクを介して前記パケット処理エンジンと前記検索エンジンとの間で受け渡す
ことを特徴とするパケット処理方法。
(付記11)付記7に記載のパケット処理方法において、
前記検索エンジンは、検索処理の結果に基づいて前記パケットと前記装置内ヘッダを出力すべき出力キューを決定し、前記出力キュー毎に前記パケットのスケジューリングを行って前記パケットおよび前記装置内ヘッダを前記パケット処理エンジンに転送する
ことを特徴とするパケット処理方法。
(付記12)付記7に記載のパケット処理方法において、
前記パケット処理エンジン、および、前記検索エンジンは、前記装置内ヘッダと前記パケットのデータの中の少なくとも変更のある部分についてのデータチェックを行う、
ことを特徴とするパケット処理方法。
(付記13)付記9に記載のパケット処理方法において、
前記検索エンジンは、前記パケットループ処理前のパケットの受信時刻と、前記前記パケットループ処理が完了したパケットの検査結果情報とを前記シーケンス番号に対応付けて記憶し、
前記シーケンス番号を基に前記検索制御レコード記憶手段から前記パケットループ処理前の初期パケットの受信時刻を読み出して、予め設定した処理待ち時間を経過したか否かを判定し、予め設定した前記処理待ち時間を経過した場合はさらに検索処理が完了したか否かを判定し、検索処理が完了していない場合は当該パケットを廃棄し、検索処理が完了している場合は前記検索制御レコード記憶手段から検索結果情報を読み出して装置内ヘッダに設定し、前記装置内ヘッダを付加したパケットを前記パケット処理エンジンに送信する
ことを特徴とするパケット処理方法。
本発明の第1の実施形態によるパケット処理装置の構成例である。 本発明の第1の実施形態による検索エンジンの構成例である。 本発明の第2の実施形態によるパケット処理装置の構成例である。 本発明の第2の実施形態による検索エンジンの構成例である。 本発明の第2の実施形態による検索エンジンの検索制御テーブルの構成例である。 本発明の第3の実施形態によるパケット処理装置の構成例である。 本発明の第2の実施形態による検索エンジンのループ処理時の動作フローである。 本発明の第2の実施形態による検索エンジンの検索結果出力時の動作フローである。 本発明の検索要求ブロック及び検索結果ブロックの構成例である。 本発明の装置内ヘッダに設定される検索要求情報の構成例である。 本発明の検索エンジンの検索処理時に使用される検索処理依頼データの構成例である。 本発明の装置内ヘッダに設定される検索結果情報の構成例である。 本発明の第2の実施形態による検索エンジンの処理シーケンス例(1)である。 本発明の第2の実施形態による検索エンジンの処理シーケンス例(2)である。 本発明の第2の実施形態による検索エンジンの処理シーケンス例(3)である。 従来技術のパケット処理装置の構成例である。
符号の説明
1 主回線の受信ポート
2、3、4 通信リンク
5 主回線の送信ポート
6 第1の通信リンク
6a 第1の通信リンクの入力ポート
6b 第1の通信リンクの出力ポート
7−1、・・・、7−N 第2の通信リンク
7−1a、・・・、7−Na 第2の通信リンクの入力ポート
7−1b、・・・、7−Nb 第2の通信リンクの出力ポート
10 入力インターフェース
20,20a、20b パケット処理エンジン
30、30a、30b 検索エンジン
31,31a、31b 入力インターフェース部
32、32a 検索処理部
33,33a シーケンス番号管理部
34,34a パケットバッファ管理部
35,35a 出力インターフェース部
36 ループ制御部
37 検索結果出力部
38 検索制御テーブル
3810 検索制御レコード記憶部
3811 状態情報
3812 初期パケット受信時刻
3813 パケットポインタ
3814 パケット長
3815 検索結果情報
3820 次シーケンス番号
3830 現時刻ターマー
3840 処理待ち時間
39、49 パケットバッファ
40 トラフィックマネージャー
50 出力インターフェース
1000 検索要求ブロック、または、検索結果ブロック
1100 装置内ヘッダ
1200 パケット格納領域
2000 検索処理依頼データ
300 検索要求情報
301、401 データチェック情報
302、402 シーケンス番号
303、403 ループ回数
304、404 パケット種別
305、407 チェック範囲
306、408 VPN−ID
307、406 受信ポート番号
308 パケット長
309、411 ユーザ定義領域
310,311、312、323 検索キーポインタ
400 検索結果情報
405 送信ポート番号
409 ポリシングID
410 クラス

Claims (4)

  1. 回線から受信した第1のパケットを処理するパケット処理エンジンと
    前記第1のパケットに関する検索処理を行う検索エンジンと
    前記パケット処理エンジンと前記検索エンジンとの間でデータを受け渡す通信リンクを備え、
    前記パケット処理エンジンは、受信した前記第1のパケットに検索キーを含む装置内ヘッダを付加して生成した第2のパケットを、前記通信リンクを介して前記検索エンジンに送信する手段を備え、
    前記検索エンジンは、前記パケット処理エンジンから前記通信リンクを介して送信された前記第2のパケットを一時的に格納するパケットバッファと、前記第2のパケットの前記装置内ヘッダに格納されている検索キーを基に検索処理を行う手段と、前記検索処理による検索結果情報と前記パケットバッファに格納された前記第2のパケットとを前記通信リンクを介して前記パケット処理エンジンに返送する手段と、前記パケット処理エンジンから受信した前記第2のパケット毎にシーケンス番号を割り当てるシーケンス番号管理手段と、前記パケット処理エンジンとの間で前記第2のパケットを繰り返し受け渡しながら前記第2のパケットに対して段階的に処理を追加するパケットループ処理を複数の前記第2のパケットに対して行う際に、前記シーケンス番号により個々の前記第2のパケットを識別しながら実行するループ制御手段を備え、
    前記検索エンジンは、前記パケットループ処理が完了した複数の前記第2のパケットと検索結果情報を、前記シーケンス番号に基づいて、前記通信リンクからの第1回目の受信時刻が旧いものから先に順次前記パケット処理エンジンへ送信する
    ことを特徴とするパケット処理装置。
  2. 請求項1に記載のパケット処理装置において、
    前記パケット処理エンジンと前記検索エンジンとの間を接続する前記通信リンクは、前記パケットループ処理前及び前記パケットループ処理完了後のパケットと装置内ヘッダを受け渡す第1の通信リンクと、前記パケットループ処理中のパケットと装置内ヘッダを受け渡す1以上の第2の通信リンクを含み、
    前記1以上の第2の通信リンクは前記パケットループ処理時の各ループ回数毎に異なる通信リンクとして設けられ、
    前記パケットループ処理中のパケットは、前記ループ回数毎に設けられた第2の通信リンクを介して前記パケット処理エンジンと前記検索エンジンとの間で受け渡される
    ことを特徴とするパケット処理装置。
  3. 請求項1に記載のパケット処理装置において、
    前記検索エンジンは、前記検索処理部による検索結果に基づいて前記パケットと前記装置内ヘッダを出力すべき出力キューを決定し、前記出力キュー毎に前記パケットのスケジューリングを行って前記パケットと前記装置内ヘッダを前記パケット処理エンジンに転送するスケジューラを備えることを特徴とするパケット処理装置。
  4. 回線から受信した第1のパケットを処理するパケット処理エンジンと前記第1のパケットに関する検索処理を行う検索エンジンとが連携して、前記第1のパケットに対して検索処理の結果を付加するパケット処理方法に於いて、
    前記パケット処理エンジンは、前記第1のパケットに検索キーを含む装置内ヘッダを付加して生成した第2のパケットを前記検索エンジンに送信し、
    前記検索エンジンは、前記パケット処理エンジンから受信した前記第2のパケット毎にシーケンス番号を割り当て、前記パケット処理エンジンとの間で前記第2のパケットを繰り返し受け渡しながら前記第2のパケットに対して段階的に処理を追加するパケットループ処理を複数の前記第2のパケットに対して行う際に、前記シーケンス番号により個々の前記第2のパケットを識別しながら実行し、前記パケットループ処理が完了した複数の前記第2のパケットと検索結果情報を、前記シーケンス番号に基づいて、前記第2のパケットの第1回目の受信時刻が旧いものから順に前記パケット処理エンジンへ送信する
    ことを特徴とするパケット処理方法。
JP2006334489A 2006-01-06 2006-12-12 パケット処理装置及びパケット処理方法 Expired - Fee Related JP4779955B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006334489A JP4779955B2 (ja) 2006-01-06 2006-12-12 パケット処理装置及びパケット処理方法
US11/649,839 US7664112B2 (en) 2006-01-06 2007-01-05 Packet processing apparatus and method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006001076 2006-01-06
JP2006001076 2006-01-06
JP2006334489A JP4779955B2 (ja) 2006-01-06 2006-12-12 パケット処理装置及びパケット処理方法

Publications (2)

Publication Number Publication Date
JP2007208963A JP2007208963A (ja) 2007-08-16
JP4779955B2 true JP4779955B2 (ja) 2011-09-28

Family

ID=38232683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006334489A Expired - Fee Related JP4779955B2 (ja) 2006-01-06 2006-12-12 パケット処理装置及びパケット処理方法

Country Status (2)

Country Link
US (1) US7664112B2 (ja)
JP (1) JP4779955B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100074108A1 (en) * 2008-09-25 2010-03-25 Alcatel-Lucent Virtual partitioned policy space
US8537844B2 (en) * 2009-10-06 2013-09-17 Electronics And Telecommunications Research Institute Ethernet to serial gateway apparatus and method thereof
US8463887B2 (en) * 2009-12-23 2013-06-11 Citrix Systems, Inc. Systems and methods for server surge protection in a multi-core system
US9268813B2 (en) * 2009-12-24 2016-02-23 Samsung Electronics Co., Ltd. Terminal device based on content name, and method for routing based on content name
ES2609521T3 (es) * 2010-12-13 2017-04-20 Nec Corporation Sistema de control de ruta de comunicación, dispositivo de control de ruta, método de control de ruta de comunicación, y programa de control de ruta
US9154335B2 (en) * 2011-11-08 2015-10-06 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for transmitting data on a network
JP5768289B2 (ja) * 2011-12-21 2015-08-26 株式会社日立製作所 ネットワークノード及びパケット管理方法
KR101577926B1 (ko) * 2012-03-19 2015-12-15 닛본 덴끼 가부시끼가이샤 통신 노드, 패킷 처리 방법 및 프로그램
JP5889218B2 (ja) * 2013-01-23 2016-03-22 アラクサラネットワークス株式会社 データ転送装置及びデータ転送方法
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9379963B2 (en) * 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US10417447B2 (en) * 2015-06-15 2019-09-17 Arris Enterprises Llc Selective display of private user information
JP6540296B2 (ja) 2015-07-09 2019-07-10 富士通株式会社 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム
US10409877B2 (en) * 2015-10-21 2019-09-10 Quality Logo Products, Inc. Search engine results declumping method
AU2021239382A1 (en) * 2020-03-20 2022-11-17 Arris Enterprises Llc Efficient remote PHY dataplane management for a cable system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994001828A1 (en) * 1992-07-02 1994-01-20 Wellfleet Communications Data packet processing method and apparatus
US5838681A (en) * 1996-01-24 1998-11-17 Bonomi; Flavio Dynamic allocation of port bandwidth in high speed packet-switched digital switching systems
JP3189784B2 (ja) 1998-04-23 2001-07-16 日本電気株式会社 レイヤ3マルチキャスト送信方式
US6678269B1 (en) * 1998-10-05 2004-01-13 Alcatel Network switching device with disparate database formats
JP2000151709A (ja) * 1998-11-12 2000-05-30 Nec Corp ルーティングアドレス検索システム
JP4182180B2 (ja) * 1999-02-24 2008-11-19 株式会社日立製作所 ネットワーク中継装置及びネットワーク中継方法
US6718326B2 (en) * 2000-08-17 2004-04-06 Nippon Telegraph And Telephone Corporation Packet classification search device and method
US7451235B2 (en) * 2000-10-11 2008-11-11 Broadcom Corporation Dynamic delta encoding for cable modem header suppression
US20030196081A1 (en) * 2002-04-11 2003-10-16 Raymond Savarda Methods, systems, and computer program products for processing a packet-object using multiple pipelined processing modules
JP3789395B2 (ja) 2002-06-07 2006-06-21 富士通株式会社 パケット処理装置
AU2003228060A1 (en) * 2002-06-12 2003-12-31 Koninklijke Philips Electronics N.V. Bus system, station for use in a bus system, and bus interface
JP4154213B2 (ja) 2002-11-01 2008-09-24 富士通株式会社 パケット処理装置
JP2005012271A (ja) * 2003-06-16 2005-01-13 Fujitsu Ltd ルーティングエンジン装置,ルータ装置およびルーティングエンジン装置におけるメモリ検索方法
US7440405B2 (en) * 2005-03-11 2008-10-21 Reti Corporation Apparatus and method for packet forwarding with quality of service and rate control

Also Published As

Publication number Publication date
US20070160052A1 (en) 2007-07-12
US7664112B2 (en) 2010-02-16
JP2007208963A (ja) 2007-08-16

Similar Documents

Publication Publication Date Title
JP4779955B2 (ja) パケット処理装置及びパケット処理方法
US11249688B2 (en) High-speed data packet capture and storage with playback capabilities
US9313115B2 (en) Traffic generator with priority flow control
JP5863076B2 (ja) パケットを再構築し再順序付けするための方法、装置、およびシステム
US7715419B2 (en) Pipelined packet switching and queuing architecture
JP4873834B2 (ja) ファイバーチャンネルフレーム配送のための方法及び装置
US7769015B2 (en) High performance network adapter (HPNA)
US7957392B2 (en) Method and apparatus for high-performance bonding resequencing
US9864633B2 (en) Network processor having multicasting protocol
US11502967B2 (en) Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment
EP2573980B1 (en) Parallel traffic generator with priority flow control
US7721086B2 (en) Packet-parallel high performance cryptography systems and methods
US11128740B2 (en) High-speed data packet generator
CN109684269A (zh) 一种pcie交换芯片内核及工作方法
US7174394B1 (en) Multi processor enqueue packet circuit
EP3563535B1 (en) Transmission of messages by acceleration components configured to accelerate a service
US20120263181A1 (en) System and method for split ring first in first out buffer memory with priority
US9401879B1 (en) Systems and methods for sending and receiving information via a network device
US7043544B2 (en) Processor with multiple-pass non-sequential packet classification feature
JP6482296B2 (ja) パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム
US10581759B1 (en) Sharing packet processing resources
US8441953B1 (en) Reordering with fast time out
US20190036832A1 (en) Packet Switching Device Modifying Paths of Flows of Packets Taken Within While Outputting Packets in Received Intra-Flow Order but Not Necessarily Inter-Flow Order
JP5359357B2 (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110420

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110607

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110620

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees