説明

パケット処理装置およびパケット処理方法

【課題】IPフラグメントパケットに対して、フラグメントされる前のIPパケット全体についてIPより上位のプロトコルに従って処理を行う場合に必要とするバッファ容量を低減する。
【解決手段】パケット処理装置は、受信したフラグメントパケットを記憶するパケットバッファ部と、フラグメントパケットから、パケット識別子、先頭フラグメント識別子、及び後続フラグメント識別子を抽出する識別子抽出部と、識別子抽出部で抽出された識別子を格納する記憶部と、フラグメントパケットの種類とパケットバッファ部の残り容量とに基づいて前記フラグメントパケットを振分け制御するパケット振分部と、パケット振分部から振分けられたフラグメントパケットに対して、記憶部に格納された識別子に基づいて、フラグメント化されたレイヤーより上位レイヤーのプロトコルに従うパケット処理を決定する検索管理部とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケット処理装置およびパケット処理方法に関する。
【背景技術】
【0002】
IPネットワークにおいて転送されるIPフラグメントパケットは、一度に送信できない程の大きなサイズのIPパケットがいくつかに分割(フラグメント)されて送信されたパケットのことを指す。個々のIPフラグメントパケットのサイズは、物理的なネットワーク毎に決められた一度に送信できるサイズ「MTU(Maximum Transmission Unit)」によって制限される。
【0003】
このようなフラグメントされたIPパケットに対して、ネットワークの中継機器において、フラグメントされる前のIPパケット全体についてTCPプロトコル等のIPよりも上位のプロトコルに従って処理を行いたい場合がある。しかし、IPフラグメントパケットのうち、分割されたときに先頭にあったIPフラグメントパケットは、IPよりも上位のプロトコルヘッダ(以下、上位ヘッダと称す)の情報を含んでいるが、それ以外のIPフラグメントパケットは、上位ヘッダの情報を含まない。そのため、従来、上位のプロトコルに従って処理を行いたい場合に中継機器上でIPフラグメントパケットからIPパケットを再構成することにより、処理を行っている。
【0004】
下記の文献には、フラグメントされたIPパケットを中継機器上で蓄積し、全てのフラグメントされたIPパケットが蓄積されてフラグメント処理前のIPパケットが再構成された後に、フラグメントされる前のパケット全体について処理を行う、従来の処理方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−12698号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、前述された従来の方法では、一旦IPパケット全体を中継機器のバッファに蓄積する。そのため、中継機器は、IPネットワーク上の最大MTUのサイズを有するバッファ(1IPパケット分のバッファ)を備える必要がある。さらに、蓄積されるIPフラグメントパケットは、全て同じIPパケットがフラグメントされたものでなく、別のIPパケットがフラグメントされたIPフラグメントパケットが受信されることが想定される。そのため、前述のような最大MTUのサイズを有するバッファは複数備えられる必要がある。さらに、前述のようなバッファ数は、内部のメモリ容量の限界によって制限されるため、IPパケットの再構成中に、バッファ数が限界に達した場合には、それ以降に受信したIPフラグメントパケットは再構成されず、IPパケットに対する処理が行われない。また、この場合、受信されたIPフラグメントパケットは廃棄される可能性もある。
【0007】
このように、中継機器でフラグメントされたIPパケットに対して、フラグメントされる前のIPパケット全体についてIPより上位のプロトコルに従って処理を行いたい場合には、多くのバッファ用のメモリを必要とする。また、同時に処理できるフラグメントパケット数の制限を緩和するためには、さらに多くのメモリの搭載を必要とし、機器コストが増加する。
【0008】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、IPフラグメントパケットに対して、フラグメントされる前のIPパケット全体についてIPより上位のプロトコルに従って処理を行う場合に必要とするバッファ容量を低減することが可能な、新規かつ改良されたパケット処理装置を提供することにある。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明のある観点によれば、受信したフラグメントパケットを一時的に記憶するパケットバッファ部と、上記フラグメントパケットのうちフラグメント先頭パケットから、上位ヘッダの情報を含む識別子の組み合わせであるパケット識別子と上位ヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、上記フラグメントパケットのうちフラグメント後続パケットから、上位ヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出部と、上記識別子抽出部で抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶部と、上記フラグメントパケットの種類と上記パケットバッファ部の残り容量とに基づいて上記フラグメントパケットを振分け制御するパケット振分部と、上記パケット振分部から振分けられた上記フラグメントパケットに対して、上記記憶部に格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、フラグメント化されたレイヤーより上位レイヤーのプロトコルに従うパケット処理を決定する検索管理部とを有する、パケット処理装置が提供される。
【0010】
また、上記検索管理部で決定された上記パケット処理情報に基づいて、上記フラグメント先頭パケットおよび上記フラグメント後続パケットに対してそれぞれ決定されたパケット処理をするパケット処理実行部をさらに有してもよい。
【0011】
また、上記パケット処理実行部は、上記検索管理部においてパケット処理が決定された上記フラグメントパケットに、再構成後の識別が完了したパケットであることを示す識別完了フラグを付加してもよい。
【0012】
また、上記パケット振分部は、上記検索管理部と上記パケット処理実行部とに上記フラグメントパケットを振分けてよい。
【0013】
また、上記パケット振分部は、上記フラグメントパケットがフラグメント先頭パケットである場合に、上記パケットバッファ部の残り容量に関わらず、上記フラグメント先頭パケットを上記検索管理部に振分けてよい。
【0014】
また、上記パケット振分部は、上記フラグメントパケットがフラグメント後続パケットである場合に、上記パケットバッファ部の残り容量が所定の閾値以上の場合に上記フラグメント後続パケットを上記検索管理部に振分け、上記パケットバッファ部の残り容量が所定の閾値以下の場合に上記フラグメント後続パケットを上記パケット処理実行部に振分けてよい。
【0015】
また、上記パケット処理実行部は、上記フラグメントパケットが再構成後の識別が必要なパケットであるか否かに基づいて上記フラグメントパケットに再構成後の識別が必要なパケットであることを示す識別要否フラグを付加してもよい。
【0016】
また、上記課題を解決するために、本発明の別の観点によれば、受信したフラグメントパケットをパケットバッファ部に一時的に記憶するパケット記憶ステップと、上記フラグメントパケットのうちフラグメント先頭パケットから、上位ヘッダの情報を含む識別子の組み合わせであるパケット識別子と上位ヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、上記フラグメントパケットうちフラグメント後続パケットから、上位ヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出ステップと、上記識別子抽出ステップで抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶ステップと、上記フラグメントパケットの種類と上記パケットバッファ部の残り容量とに基づいて上記フラグメントパケットを振分け制御するパケット振分けステップと、上記パケット振分部から振分けられた上記フラグメントパケットに対して、上記格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、フラグメント化されたレイヤーより上位レイヤーのプロトコルに従うパケット処理を決定するパケット処理決定ステップとを含む、パケット処理方法が提供される。
【発明の効果】
【0017】
以上説明したように本発明によれば、IPフラグメントパケットに対して、フラグメントされる前のIPパケット全体についてIPより上位のプロトコルに従って処理を行う場合に必要とするバッファ容量を低減することが可能な、新規かつ改良されたパケット処理装置が提供される。
【図面の簡単な説明】
【0018】
【図1】本発明の第1の実施形態にかかるパケット処理装置を利用した通信システムの一例を示すシステム構成図である。
【図2】パケットのフラグメントの一例を示す説明図である。
【図3】本発明の第1の実施形態にかかるパケット処理装置の機能ブロック図である。
【図4】本発明の第1の実施形態にかかる受信パケット処理部の機能ブロック図である。
【図5】フラグメントパケットから抽出される識別子の一例を示す図表である。
【図6】フラグメント先頭パケットに対する処理を示すフローチャートである。
【図7】フラグメント後続パケットに対する処理を示すフローチャートである。
【図8】フラグメント後続パケットに対する処理を示すフローチャートである。
【図9】フラグメント先頭パケットに対する処理を示すフローチャートである。
【図10A】パケット識別子エントリのデータ構成の一例を示した図表である。
【図10B】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図10C】後続パケットエントリテーブルのデータ構成の一例を示した図表である。
【図10D】受信済後続パケットエントリのデータ構成の一例を示した図表である。
【図11A】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図11B】後続パケットエントリテーブルのデータ構成の一例を示した図表である。
【図12A】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図12B】受信済後続パケットエントリのデータ構成の一例を示した図表である。
【図13A】パケット識別子エントリのデータ構成の一例を示した図表である。
【図13B】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図13C】後続パケットエントリテーブルのデータ構成の一例を示した図表である。
【図13D】受信済後続パケットエントリのデータ構成の一例を示した図表である。
【図14】本発明の第2の実施形態にかかる受信パケット処理部の機能ブロック図である。
【図15】本発明の第2の実施形態にかかる受信パケット処理部におけるフラグメントパケットに対する処理を示すフローチャートである。
【発明を実施するための形態】
【0019】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0020】
(第1の実施形態)
(システム構成)
まず、本発明の第1実施形態について説明する。はじめに、本実施形態にかかるパケット処理装置100を利用した通信システムについて説明する。図1には、本実施形態にかかるパケット処理装置を利用した通信システムの一例が示されている。本実施形態にかかるパケット処理装置100は、コンピュータ20に接続されている。また、パケット処理装置100は、IPネットワーク等のネットワーク10を介してコンピュータ30に接続されている。コンピュータ20およびコンピュータ30は、パーソナルコンピュータ、携帯電話、PDA等のネットワーク上で通信可能なあらゆるコンピュータである。
【0021】
パケット処理装置100は、コンピュータ20から送信されたIPフラグメントパケット(以下、フラグメントパケットと称す)に対して、フラグメントされる前のIPパケット(以下、パケットと称す)全体についてIPより上位のプロトコルに従って処理を行い、ネットワーク10を介してコンピュータ30に転送する。パケット処理装置100は、例えば、ルータやレイヤー3スイッチ等のネットワークスイッチ装置であってもよいし、ゲートウェイ等のセキュリティ装置であってもよい。パケット処理装置100では、例えば、IPより上位のプロトコルに従って、フラグメントパケットの廃棄、フラグメントパケット内の情報の加工等が行われる。
【0022】
図1に示された通信システムは一例であって、本実施形態のパケット処理装置100を利用した通信システムのシステム構成は、図1の構成には限定されない。例えば、図1には、簡略化のために、パケット処理装置は1つしか記載されていないが、コンピュータ20とネットワーク10との間、および、コンピュータ30とネットワーク10との間には複数のパケット処理装置が存在してもよい。また、パケット処理装置に直接接続されているコンピュータはコンピュータ20のみが記載されているが、複数のコンピュータがパケット処理装置100に接続されていてもよい。
【0023】
(IPパケットのフラグメント)
次に、本実施形態にかかるパケット処理装置100で処理されるフラグメントパケットについて説明する。図2には、パケットのフラグメントの一例が示されている。パケットP200は、MACヘッダ201、IPヘッダ202、上位ヘッダ203、データ204およびFCS205から構成されている。MACヘッダ201は、データリンク層のプロトコルに関するヘッダであり、IPヘッダ202は、ネットワーク層のプロトコルに関するヘッダであり、上位ヘッダ203は、トランスポート層以上のプロトコルに関するヘッダである。また、FCS205は誤り検出符号である。
【0024】
図2の例では、パケットP200は、フラグメントパケットF210、F220およびF230に分割されている。フラグメントパケットF210、F220、およびF230は、パケットP200から生成されるときにMACヘッダおよびIPヘッダが付加され、順次ネットワークに送信される。このようなパケットの分割およびフラグメントは、パケットを中継するパケット処理装置によって、パケットが宛先のコンピュータに届くまで繰り返される。その結果、パケットは細かく分割される。
【0025】
パケットが通過するルートによっては、フラグメントパケットの順序が入れ替わって到着する場合やフラグメントパケット途中で廃棄される場合もあるが、フラグメントされたIPパケットは、最終的に到着する宛先のコンピュータで再構成される。この再構成は、MACアドレス、IPアドレス等の情報と、以下で説明される各IPパケットのヘッダに含まれる識別子であるID、MF、およびオフセットが利用されて、パケットのユニーク性を確保しながら行われる。
【0026】
フラグメントパケットF210は先頭のフラグメントパケット(以下、フラグメント先頭パケットと称す)であり、MACヘッダ211、IPヘッダ212、上位ヘッダ213、データ214およびFCS215から構成されている。MACヘッダ211は、パケットP200のMACヘッダ201と同じ情報を含んでいる。上位ヘッダ213は、パケットP200の上位ヘッダ203と同じ情報を含んでいる。データ214は、パケットP200のデータ204が分割されたものである。FCS215は、誤り検出符号である。
【0027】
IPヘッダ212は、フラグメントパケットF210が生成されるときに、パケットP200のIPヘッダ202の情報が加工されてフラグメントパケットF210に付加される。IPヘッダ212は、ID(IDentification)216、MF(More Fragment)217、およびオフセット218を含んでいる。ID216はフラグメントされる前のパケットを識別する識別子であって、同一パケットから分割されたフラグメントパケットのIDは同一の値を有する。ID216の値は、図2に示されるように、ID1である。
【0028】
MF217は、後続のフラグメントパケットが存在するかどうかを示す識別子である。MF217の値が0であれば、後続のフラグメントパケットは存在せず、MF217の値が1であれば、後続のフラグメントパケットが存在する。フラグメントパケットF210の後続には、フラグメントパケットF220が存在するため、フラグメントパケットF210のMF217の値MF1=1である。
【0029】
オフセット218は、フラグメントパケットF210がフラグメントされる前のパケットP200の先頭(IPヘッダ202の先頭)から何バイト目に位置していたかを示す識別子である。フラグメントパケットF210はフラグメント先頭パケットであるので、オフセット218の値OF1=0である。
【0030】
フラグメントパケットF220は後続のフラグメントパケット(以下、フラグメント後続パケットと称す)であり、MACヘッダ221、IPヘッダ222、データ223およびFCS224から構成されている。フラグメントパケットF220はフラグメント後続パケットであるので、上位ヘッダの情報はフラグメントパケットF220には含まれない。MACヘッダ221は、パケットP200のMACヘッダ201と同じ情報を含んでいる。データ223は、パケットP200のデータ204のうちで、フラグメントパケットF210に含まれたデータ214に後続するデータが分割されたものである。FCS224は、誤り検出符号である。
【0031】
IPヘッダ222は、フラグメントパケットF220が生成されるときに、パケットP200のIPヘッダ202の情報が加工されてフラグメントパケットF220に付加される。IPヘッダはID225、MF226、およびオフセット227を含んでいる。フラグメントパケットF220は、フラグメントパケットF210と同じパケットP200から分割されているので、ID225の値はID216の値と同じで、ID1である。フラグメントパケットF220の後続には、フラグメントパケットF230が存在するため、フラグメントパケットF220のMF226の値MF2=1である。フラグメントパケットF220はフラグメント後続パケットであるので、オフセット227の値OF2≠0である。
【0032】
フラグメントパケットF230はフラグメント後続パケットであり、MACヘッダ231、IPヘッダ232、データ233およびFCS234から構成されている。フラグメントパケットF230はフラグメント後続パケットであるので、フラグメントパケットF220と同様、上位ヘッダの情報は含まれない。MACヘッダ231は、パケットP200のMACヘッダ201と同じ情報を含んでいる。データ233は、パケットP200のデータ204のうちで、フラグメントパケットF220に含まれたデータ223に後続するデータである。FCS234は、誤り検出符号である。
【0033】
IPヘッダ232は、フラグメントパケットF230が生成されるときに、パケットP200のIPヘッダ202の情報が加工されてフラグメントパケットF230に付加される。IPヘッダはID235、MF236、およびオフセット237を含んでいる。フラグメントパケットF230は、フラグメントパケットF210およびF220と同じパケットP200から分割されているので、ID235の値はID216およびID225の値と同じで、ID1である。フラグメントパケットF230の後続には、フラグメントパケットが存在しないため、フラグメントパケットF230のMF236の値MF3=0である。フラグメントパケットF230はフラグメント後続パケットであるので、オフセット237の値OF3≠0である。
【0034】
(パケット処理装置の構成)
次に、本実施形態にかかるパケット処理装置の構成について説明する。図3は、本実施形態にかかるパケット処理装置の機能ブロック図である。本実施形態にかかるパケット処理装置100は、物理媒体110A〜110N、物理終端部(MAC/PHY)120、受信パケット処理部130、記憶部の一例であるCAM140、ネットワークプロセッサ(NPU:Network Processing Unit)150、送信パケット処理部160から構成される。
【0035】
物理媒体(ポート1)110A〜物理媒体(ポートN)110Nは、RJ−45コネクタ等の複数の外部物理インタフェース(ポート)を含む物理媒体であり、コンピュータ20等のネットワークで接続されたコンピュータから信号を受信する。受信された信号は、物理終端部120に転送される。また、物理媒体(ポート1)110A〜物理媒体(ポートN)110Nは、物理終端部120から受信した信号を、ネットワークで接続されたコンピュータへ送信する。
【0036】
物理終端部120は、物理媒体の各ポートで受信した信号に対して物理レイヤー(PHY)の処理、および、メディアアクセスコントロール(MAC)処理を行う。物理終端部120では、例えばポート多重処理が行われる。物理終端部120で処理された結果、生成されたパケットは、受信パケット処理部130に転送される。また、物理終端部120は、送信パケット処理部160から受信したパケットに対しても、物理レイヤー(PHY)の処理、および、メディアアクセスコントロール(MAC)処理を行う。送信パケット処理部160から受信されたパケットが、物理終端部120で処理された結果生成された信号は、物理媒体(ポート1)110A〜物理媒体(ポートN)110Nに転送される。
【0037】
受信パケット処理部130は、受信された信号に対して物理終端部120での処理が行われて生成されたパケットを識別し、処理を行う。より詳細には、受信パケット処理部130は、下記の処理を行う。受信パケット処理部130は、物理終端部120で生成されたパケットを、一旦バッファに格納する。次いで、バッファに格納されたパケットから複数の識別子を抽出する。さらに、パケットがフラグメントパケットであるかどうかを識別し、抽出された識別子の組み合わせに基づいて、パケットを再構成せずに、個々のフラグメントパケットに対して、パケット処理を行う。ここで行われる処理は、フラグメントされる前のパケット全体についてのIPより上位のプロトコルに従ったパケット処理である。受信パケット処理部130に関するさらに詳細な説明は、図4を参照しながら後述される。
【0038】
CAM140は、受信パケット処理部130でフラグメントパケットから抽出された識別子の組み合わせを格納する検索専用メモリである。CAM140には、パケット処理に関連付けられたパケット識別用の情報があらかじめ格納されている。CAM140に格納された情報は、受信パケット処理部130でフラグメントパケットの識別および処理を行うときに検索される。CAM140に関するさらに詳細な説明は、図4を参照しながら後述される。
【0039】
NPU150は、受信パケット処理部130で識別されたパケットに基づいて、IPより上位のプロトコルに従う高度なパケット処理を行う。NPU150で行われる処理は、セキュリティーゲートウェイ、NAPT変換等の処理であってもよい。送信パケット処理部160は、NPU150で処理されたパケットを物理終端部120へ転送する。
【0040】
(受信パケット処理部の構成)
次に、図4を参照しながら受信パケット処理部130の構成についてさらに詳細に説明する。図4は、本実施形態にかかる受信パケット処理部の機能ブロック図である。受信パケット処理部130は、パケットバッファ部132、識別子抽出部134、検索管理部300、パケット処理実行部136から構成される。
【0041】
(パケットバッファ部132)
パケットバッファ部132は、物理終端部より受信したパケットを一時的に格納するバッファメモリ等の構成要素である。受信されてパケットバッファ部132に格納されるパケットは、フラグメントされていないパケット、フラグメント先頭パケット、およびフラグメント後続パケットを含んでいる。パケットバッファ部132に格納されたパケットは、識別子抽出部134で識別子が抽出される。また、パケットバッファ部132に格納されたパケットは、検索管理部300で決定されたパケット処理情報に基づいて、パケット処理実行部136で処理が行われる。パケット処理実行部136からパケット処理の完了が通知されると、パケットバッファ部132は、そのパケットを格納していたバッファ領域を解放する。
【0042】
(識別子抽出部134、および、抽出される識別子)
識別子抽出部134は、パケットバッファ部132に格納されたパケットからパケットの識別に使用する複数の識別子を抽出する。図5は、フラグメントパケットから抽出される識別子の一例を示す図表である。表250に示されるように、識別子抽出部134で抽出される複数の識別子には、MACヘッダから抽出される識別子の組み合わせであるMAC、IPヘッダから抽出される識別子の組み合わせであるIPおよびTCPヘッダ等のIPより上位ヘッダから抽出される識別子の組合せである上位ヘッダと、フラグメントパケットを識別するID、MF、オフセットとが含まれる。
【0043】
表250には、図2で説明されたフラグメントパケットF210、F220およびF230から抽出される識別子が例示されている。以下で、表5に示された各識別子について説明する。フラグメントパケットを識別するID、MF、およびオフセットは、図2を参照して説明されたフラグメントパケットを識別する識別子である。
【0044】
フラグメントパケットF210、F220およびF230のMACヘッダ211、221、および231に含まれる情報は、図2を参照して説明されたように等しい。これらのMACヘッダから抽出されるMACアドレス等の識別子の組み合わせデータは、MAC1で示されている。
【0045】
フラグメントパケットF210、F220およびF230のIPヘッダ212、222、および232に含まれる情報は、図2を参照して説明されたように、パケットP200のIPヘッダ202の情報が一部加工されたものである。IP1は、フラグメントパケットF210、F220およびF230のIPヘッダ212、222、および232から抽出される、これらのIPヘッダに共通なIPアドレス等の識別子の組合せデータである。
【0046】
UP1は、フラグメント先頭パケットであるフラグメントパケットF210に含まるTCPヘッダ等のIPより上位ヘッダから抽出される識別子の組合せデータを示す。
【0047】
識別子抽出部134で抽出された複数の識別子は、検索管理部300でのパケット処理を決定するために用いられる。本実施形態では、これら複数の識別子のうち、以下の識別子の組み合わせが検索管理部300で使用される。
【0048】
「パケット識別子」は、受信パケット処理部130でフラグメント先頭パケットから抽出される、上位ヘッダの情報を含む識別子の組み合わせである。図2で説明されたフラグメントパケットF210に関して説明すると、パケット識別子252は、フラグメントパケットF210から抽出され、MAC1、IP1、およびUP1から構成される。
【0049】
「先頭フラグメント識別子」は、受信パケット処理部130でフラグメント先頭パケットから抽出される、上位ヘッダの情報を含まない識別子の組み合わせである。図2で説明されたフラグメントパケットF210に関して説明すると、先頭フラグメント識別子254は、フラグメントパケットF210から抽出され、MAC1、IP1、およびID1から構成される。
【0050】
「後続フラグメント識別子」は、受信パケット処理部130でフラグメント後続パケットから抽出される、上位ヘッダの情報を含まない識別子の組み合わせである。図2で説明されたフラグメントパケットF220に関して説明すると、後続フラグメント識別子256は、フラグメントパケットF220から抽出され、MAC1、IP1、およびID1から構成される。図2で説明されたフラグメントパケットF230に関しても同様で、後続フラグメント識別子258は、フラグメントパケットF230から抽出され、MAC1、IP1、およびID1から構成される。
【0051】
(検索管理部300)
図4に戻り、検索管理部300は、識別子抽出部134で抽出されたパケット識別子、先頭フラグメント識別子、および後続フラグメント識別子に基づいてCAM140に格納された識別子等の各種情報を検索し、パケットに対する処理を決定する。まず、検索管理部300は、識別子抽出部134で抽出された識別子に基づいて、パケットバッファ部132で受信されたパケットが、フラグメントされたパケットであるか、フラグメントされていないパケットであるかを識別する。受信されたパケットがフラグメントされていないパケットであった場合、検索管理部300はそのパケットに対するパケット処理を決定し、決定されたパケット処理の情報をパケット処理実行部136に通知する。
【0052】
パケットバッファ部132で受信されたパケットが、フラグメントされたパケットであった場合、検索管理部300は、識別子抽出部134で抽出された識別子に基づいて、そのフラグメントパケットがフラグメント先頭パケットであるか、フラグメント後続パケットであるかを識別する。その後、検索管理部300は、以下に記載される機能部で処理を行い、フラグメント先頭パケットおよびフラグメント後続パケットに対するパケット処理を決定する。
【0053】
検索管理部300は、先頭フラグメント処理決定部302、先頭フラグメント識別子登録部304、関連付け部306、後続フラグメント処理決定部308、後続フラグメント識別子登録部310、および後続フラグメント識別子検索部312から構成される。以下では、フラグメント先頭パケットをフラグメントパケットF210、フラグメント先頭パケットより後に受信されたフラグメント後続パケットをフラグメントパケットF220、フラグメント先頭パケットより先に受信されたフラグメント後続パケットをフラグメントパケットF230として、各構成要素に関して説明する。すなわち、パケットバッファ部132では、フラグメントパケットF230、フラグメントパケットF210、フラグメントパケットF220の順でパケットが受信される。
【0054】
(先頭フラグメント処理決定部302)
先頭フラグメント処理決定部302は、パケット識別子252に基づいてCAM140のパケット識別子エントリ142を検索して、フラグメントパケットF210に対するパケット処理を決定する。より詳細には、先頭フラグメント処理決定部302は、パケット識別子252に基づいて、CAM140に格納されたパケット識別子エントリ142を検索し、パケット識別子エントリに登録された識別子と一致した(ヒットした)検索結果をパケット処理実行部136に通知する。ここで、パケット識別子エントリ142は、識別子抽出部134でパケットから抽出されるパケット識別子に対応する識別子の組み合わせとパケット処理とを関連付けるために、あらかじめ登録されたテーブルである。例えば、識別子の組み合わせは、パケット識別子エントリ142内で1つのエントリ番号に関連付けて登録されており、そのエントリ番号が、あらかじめ登録された別のテーブル内で対応するパケット処理と関連付けられていてもよい。したがって、検索結果は、フラグメントパケットF210に対するパケット処理の情報を含む。
【0055】
(先頭フラグメント識別子登録部304)
先頭フラグメント識別子登録部304は、フラグメントパケットF210から抽出された先頭フラグメント識別子254をCAM140のフラグメント識別エントリ144に登録する。フラグメント識別子エントリ144に登録された先頭フラグメント識別子254は、関連付け部306でフラグメントパケットF210のパケット処理と関連付けられる。また、フラグメント識別子エントリ144に登録された先頭フラグメント識別子254は、フラグメント後続パケットであるフラグメントパケットF220がパケットバッファ部132で受信されると、後続フラグメント処理決定部308によって検索される。
【0056】
(関連付け部306)
関連付け部306は、先頭フラグメント識別子登録部304で登録された先頭フラグメント識別子254と、先頭フラグメント処理決定部302で決定されたフラグメントパケットF210に対するパケット処理と、を関連付ける。このとき、CAM140の後続パケットエントリテーブル146に、前述された関連付けの情報が格納される。より詳細には、図11を参照して後述される。関連付け部306で後続パケットエントリテーブル146に格納された情報は後続フラグメント処理決定部308で検索され、検索結果がフラグメント後続パケットであるフラグメントパケットF220およびF230に対するパケット処理の決定に利用される。
【0057】
(後続フラグメント処理決定部308)
後続フラグメント処理決定部308は、関連付け部306によって関連付けられた情報に基づいて、フラグメント後続パケットであるフラグメントパケットF220およびF230に対するパケット処理を決定する。フラグメントパケットF220に対するパケット処理の決定をより詳細に説明すると、後続フラグメント処理決定部308は、フラグメントパケットF220から抽出された後続フラグメント識別子256に基づいて、フラグメント識別子エントリ144を検索する。検索の結果に基づいて、後続フラグメント処理決定部308は、フラグメントパケットF220およびF230に対するパケット処理を決定する。フラグメントパケットF210の先頭フラグメント識別子256がフラグメント識別子エントリ144に登録されている場合(すなわち、フラグメントパケットF210がすでに受信されている場合)は、検索がヒットするので、フラグメントパケットF220に対するパケット処理が決定される。逆に、先頭フラグメント識別子256がフラグメント識別子エントリ144に登録されていない場合(すなわち、フラグメントパケットF210がまだ受信されていない場合)は、検索はヒットせず、パケット処理は決定されない。
【0058】
(後続フラグメント識別子登録部310)
後続フラグメント識別子登録部310は、後続フラグメント識別子登録部310での登録は、フラグメント先頭パケットより先にフラグメント後続パケットが受信された場合に、のフラグメントパケットF230から抽出されたフラグメント識別子258をCAM140の受信済後続パケットエントリテーブル148に登録する。後続フラグメント識別子登録部310で後続フラグメント識別子が登録された受信済後続パケットエントリ148は、後続フラグメント識別子検索部312によって検索される。
【0059】
(後続フラグメント識別子検索部312)
後続フラグメント識別子検索部312は、フラグメントパケットF210から抽出された先頭フラグメント識別子254に基づいて、後続フラグメント識別子登録部310で登録された受信済後続パケットエントリ148を検索する。検索の結果に基づいて、後続フラグメント処理決定部308は、フラグメント後続パケットF220に対するパケット処理を決定する。フラグメントパケットF220の後続フラグメント識別子256が受信済後続パケットエントリ148に登録されている場合は、検索がヒットするので、後続フラグメント処理決定部308で、パケットバッファ部132に格納されている処理されていないフラグメントパケットF220に対してパケット処理が決定される。逆に、後続フラグメント識別子256が受信済後続パケットエントリ148に登録されていない場合は、検索はヒットせず、フラグメント後続パケットに対するパケット処理の決定は行われない。
【0060】
(パケット処理実行部136)
パケット処理実行部136は、検索管理部300で決定されたパケット処理情報に基づいて、パケット処理を行う。すなわち、検索管理部300から通知される検索結果に基づいてパケットの処理を行う。パケット処理実行部136で処理されたパケットは、NPU150に転送される。パケット処理実行部136は、検索管理部300で決定されたパケット処理情報を、対応するパケットに付加して、NPU150に転送してもよいし、または、検索管理部300で決定されたパケット処理情報で示される処理を行って、処理後のパケットをNPU150に転送してもよい。パケット処理実行部136での処理が完了してパケットがNPU150に転送されると、パケット処理実行部136は、そのパケットの処理が完了したことをパケットバッファ部132に通知する。
【0061】
(フラグメント先頭パケットの後にフラグメント後続パケットを受信)
次に、図6、図7、図10A〜図10D、および図11Aおよび図11Bを参照しながら、フラグメントされたパケットの中で、フラグメント先頭パケットを最初に受信し、その後フラグメント後続パケットを受信した場合に、本実施形態にかかる受信パケット処理部で行われる処理を説明する。図6は、フラグメント先頭パケットを最初に受信した場合のフラグメント先頭パケットに対する処理を示したフローチャートである。図7は、フラグメント先頭パケットを最初に受信した場合のフラグメント後続パケットに対する処理を示したフローチャートである。
【0062】
図10A〜図10Dは、フラグメント先頭パケットを最初に受信した場合のフラグメント先頭パケットに対する処理に伴うCAM140の各テーブルのデータ構成を示している。図10Aは、パケット識別子エントリのデータ構成の一例を示した図表である。図10Bは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図10Cは、後続パケットエントリテーブルのデータ構成の一例を示した図表である。図10Dは、受信済後続パケットエントリのデータ構成の一例を示した図表である。
【0063】
図11Aおよび図11Bは、フラグメント先頭パケットを最初に受信した場合のフラグメント後続パケットに対する処理に伴うCAM140の各テーブルのデータ構成を示している。図11Aは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図11Bは、後続パケットエントリテーブルのデータ構成の一例を示した図表である。以下の説明では、フラグメント先頭パケットF210の後にフラグメント後続パケットF220を受信したものとして説明する。
【0064】
(最初に受信されたフラグメント先頭パケットに対する処理)
まず、図6および図10A〜図10Dを参照しながら、最初に受信されたフラグメント先頭パケットに対する処理を説明する。パケット処理装置100の物理媒体(ポート1)110A〜物理媒体(ポートN)110Nの各ポートで受信された信号は、物理終端部120で処理が行われ、処理が行われた結果のパケットが受信パケット処理部130で受信される。
【0065】
受信パケット処理部130でパケットが受信されると、ステップS402で、受信されたフラグメント先頭パケットF210は、パケットバッファ部132に格納される。次いで、ステップS404で、識別子抽出部134は、ステップS402で格納されたフラグメント先頭パケットF210から複数の識別子を抽出する。さらに、ステップS406で、先頭フラグメント処理決定部302は、ステップS404で抽出された複数の識別子の組み合わせであるパケット識別子252に基づき、パケット識別子エントリ142を検索する。
【0066】
図10Aの例では、検索の結果、パケット識別子252は、パケット識別子エントリ142のエントリ番号PE(1)に登録された識別子と一致する(ヒットする)ので、ステップS408で、先頭フラグメント処理決定部302は、パケット識別子のエントリ番号PE(1)を取得する。
【0067】
次いで、ステップS410で、先頭フラグメント処理決定部302は、ステップS408で取得したパケット識別子エントリのエントリ番号PE(1)をパケット処理実行部136に通知する。パケット処理実行部136は、フラグメント先頭パケットF210に対して、通知されたパケット識別子エントリのエントリ番号PE(1)に基づくパケット処理を行う。その後、ステップS412で、パケット処理実行部136は、フラグメント先頭パケットF210に対するパケット処理が完了したことをパケットバッファ部132に通知し、パケットバッファ部132に格納されたフラグメント先頭パケットF210に対応するバッファ領域が解放される。
【0068】
次いで、ステップS414で、先頭フラグメント識別子登録部304は、ステップS404で抽出された複数の識別子の組み合わせである先頭フラグメント識別子254をフラグメント識別子エントリ144に登録する。図10Bの例では、先頭フラグメント識別子254は、エントリ番号FE(1)に登録される。
【0069】
さらに、ステップS416で、関連付け部306は、後続パケットエントリテーブルの、ステップS414で先頭フラグメント識別子254を登録したエントリ番号FE(1)と一致するアドレスに、ステップS408で取得したエントリ番号PE(1)をデータとして登録する。
【0070】
その後、ステップS418で、後続フラグメント識別子検索部312は、受信済後続パケットエントリ148を検索する。フラグメント先頭パケットF210は、フラグメントされる前のパケットP200からフラグメントされたパケットの中で最初に受信されたので、受信済後続パケットエントリ148には、既に受信されたフラグメント後続パケットの後続フラグメント識別子は登録されていない。そのため、検索はヒットせず、フラグメント先頭パケットF210に対する処理は終了する。
【0071】
(フラグメント先頭パケットの後に受信されたフラグメント後続パケットに対する処理)
次に、図6、および図10A〜図10Dを参照して説明されたフラグメント先頭パケットF210の後に受信されたフラグメント後続パケットに対する処理を説明する。以下では、図7、図11Aおよび図11Bを参照しながら説明を行う。パケット処理装置100の物理媒体(ポート1)110A〜物理媒体(ポートN)110Nの各ポートで受信された信号は、物理終端部120で処理が行われ、処理が行われた結果のパケットが受信パケット処理部130で受信される。
【0072】
受信パケット処理部130でパケットが受信されると、ステップS502で、受信されたフラグメント後続パケットF220は、パケットバッファ部132に格納される。次いで、ステップS504で、識別子抽出部134は、ステップS502で格納されたフラグメント後続パケットF220から複数の識別子を抽出する。
【0073】
さらに、ステップS506で、後続フラグメント処理決定部308は、ステップS504で抽出された複数の識別子の組み合わせである後続フラグメント識別子256に基づき、フラグメント識別子エントリ144を検索する。フラグメント識別子エントリ144には、ステップS414で既に先頭フラグメント識別子254が登録されているので検索はヒットし、ステップS508で、後続フラグメント処理決定部308は、検索結果として先頭フラグメント識別子254が登録されたエントリ番号FE(1)を取得する。
【0074】
その後、ステップS510で、後続フラグメント処理決定部308は、後続パケットエントリテーブル146の、ステップS508で取得したエントリ番号FE(1)のアドレスに登録されているデータを読み込む。このとき、後続パケットエントリテーブル146には、ステップS408で得られたパケット識別子エントリのエントリ番号が、ステップS416で既に登録されている。そのため、ステップS512で、後続フラグメント処理決定部308は、ステップS408でフラグメント先頭パケットF210に対して得られた検索結果と同じPE(1)を取得する。
【0075】
次いで、ステップS514で、後続フラグメント処理決定部308は、ステップS512で取得したPE(1)をパケット処理実行部136に通知する。パケット処理実行部136は、フラグメント後続パケットF220に対して、通知されたPE(1)に基づくパケット処理を行う。その後、ステップS516で、パケット処理実行部136は、フラグメント先頭パケットF220に対するパケット処理が完了したことをパケットバッファ部132に通知し、パケットバッファ部132に格納されたフラグメント先頭パケットF220に対応するバッファ領域が解放される。
【0076】
(フラグメント先頭パケットの後にフラグメント後続パケットを受信)
次に、図8、図9、図12Aおよび図12B、および図13A〜図13Dを参照しながら、フラグメントされたパケットの中で、フラグメント後続パケットを最初に受信し、その後フラグメント先頭パケットを受信した場合に、本実施形態にかかる受信パケット処理部で行われる処理を説明する。図8は、フラグメント後続パケットを最初に受信した場合のフラグメント後続パケットに対する処理を示したフローチャートである。図9は、フラグメント後続パケットを最初に受信した場合のフラグメント先頭パケットに対する処理を示したフローチャートである。
【0077】
図12Aおよび図12Bは、フラグメント後続パケットを最初に受信した場合のフラグメント後続パケットに対する処理に伴うCAM140の各テーブルのデータ構成を示している。図12Aは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図12Bは、受信済後続パケットエントリのデータ構成の一例を示した図表である。
【0078】
図13A〜図13Dは、フラグメント後続パケットを最初に受信した場合のフラグメント先頭パケットに対する処理に伴うCAM140の各テーブルのデータ構成を示している。
図13Aは、パケット識別子エントリのデータ構成の一例を示した図表である。図13Bは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図13Cは、後続パケットエントリテーブルのデータ構成の一例を示した図表である。図13Dは、受信済後続パケットエントリのデータ構成の一例を示した図表である。以下の説明では、後続フラグメント識別子としてMAC2、IP2、およびID2を有するフラグメント後続パケット(以下、フラグメントパケットF240と称す)が最初に受信されるとして説明する。その後に、パケット識別子としてMAC2、IP2、UP2を有し、かつ、先頭フラグメント識別子としてMAC2、IP2、ID2を有するフラグメント先頭パケット(以下、フラグメントパケットF245と称す)が受信されるとして説明する。
【0079】
(最初に受信されたフラグメント後続パケットに対する処理)
まず、図8、および図12Aおよび図12Bを参照ながら、最初に受信されたフラグメント後続パケットに対する処理を説明する。パケット処理装置100の物理媒体(ポート1)110A〜物理媒体(ポートN)110Nの各ポートで受信された信号は、物理終端部120で処理が行われ、処理が行われた結果のパケットが受信パケット処理部130で受信される。
【0080】
受信パケット処理部130でパケットが受信されると、ステップS602で、受信されたフラグメント後続パケットF240は、パケットバッファ部132に格納される。次いで、ステップS604で、識別子抽出部134は、ステップS602で格納されたフラグメント後続パケットF240から複数の識別子を抽出する。
【0081】
さらに、ステップS606で、後続フラグメント処理決定部308は、ステップS604で抽出された複数の識別子の組み合わせである後続フラグメント識別子に基づき、フラグメント識別子エントリ144を検索する。フラグメント後続パケットであるフラグメントパケットF240は、フラグメント先頭パケットであるフラグメントパケットF245より先に受信されたので、フラグメント識別子エントリ144には、フラグメントパケットF245の先頭フラグメント識別子は登録されていない。そのため、検索はヒットしない。
【0082】
その後、ステップS608で、後続フラグメント識別子登録部310は、ステップS604で抽出された後続フラグメント識別子を受信済後続パケットエントリ148に登録する。ここで、フラグメント後続パケットであるフラグメントパケットF240は、パケット処理が行われていないため、パケットバッファ部132に保持されている。
【0083】
(フラグメント後続パケットの後に受信されたフラグメント先頭パケットに対する処理)
次に、図8、および図12Aおよび図12Bを参照して説明されたフラグメント後続パケットであるフラグメントパケットF240の後に受信されたフラグメント先頭パケットに対する処理を説明する。以下では、図9、図13A〜図13Dを参照しながら説明を行う。パケット処理装置100の物理媒体(ポート1)110A〜物理媒体(ポートN)110Nの各ポートで受信された信号は、物理終端部120で処理が行われ、処理が行われた結果のパケットが受信パケット処理部130で受信される。
【0084】
受信パケット処理部130でパケットが受信されると、ステップS702で、受信されたフラグメント先頭パケットF245は、パケットバッファ部132に格納される。次いで、ステップS704で、識別子抽出部134は、ステップS702で格納されたフラグメント先頭パケットF245から複数の識別子を抽出する。さらに、ステップS706で、先頭フラグメント処理決定部302は、ステップS704で抽出されたパケット識別子に基づき、パケット識別子エントリ142を検索する。
【0085】
図13Aの例では、検索の結果、パケット識別子は、パケット識別子エントリ142のエントリ番号PE(2)に登録された識別子と一致する(ヒットする)ので、ステップS708で、先頭フラグメント処理決定部302は、パケット識別子のエントリ番号PE(2)を取得する。
【0086】
次いで、ステップS710で、先頭フラグメント処理決定部302は、ステップS708で取得したパケット識別子エントリのエントリ番号PE(2)をパケット処理実行部136に通知する。パケット処理実行部136は、フラグメント先頭パケットF245に対して、通知されたパケット識別子エントリのエントリ番号PE(2)に基づくパケット処理を行う。その後、ステップS712で、パケット処理実行部136は、フラグメント先頭パケットF245に対するパケット処理が完了したことをパケットバッファ部132に通知し、パケットバッファ部132に格納されたフラグメント先頭パケットF245に対応するバッファ領域が解放される。
【0087】
次いで、ステップS714で、先頭フラグメント識別子登録部304は、ステップS704で抽出された先頭フラグメント識別子をフラグメント識別子エントリ144に登録する。図13Bの例では、先頭フラグメント識別子は、エントリ番号FE(2)に登録される。
【0088】
さらに、ステップS716で、関連付け部306は、後続パケットエントリテーブルの、ステップS714で先頭フラグメント識別子を登録したエントリ番号FE(2)と一致するアドレスに、ステップS708で取得したエントリ番号PE(2)をデータとして登録する。これによって、フラグメントパケットF245以降に受信されるフラグメント後続パケットは、図7、および図11Aおよび図11Bを参照して説明された手順に従って、パケット処理が行われることが可能となる。
【0089】
その後、ステップS718で、後続フラグメント識別子検索部312は、受信済後続パケットエントリ148を検索する。フラグメント先頭パケットF245は、フラグメント後続パケットF240の後に受信されたので、受信済後続パケットエントリ148には、既に受信されたフラグメント後続パケットF240の後続フラグメント識別子が登録されている。そのため、検索はヒットし、ステップS720で、後続フラグメント識別子検索部312は、ステップS608で登録されたフラグメント後続パケットF240の後続フラグメント識別子を取得する。これにより、既にフラグメント後続パケットF240が受信されていることが後続フラグメント処理決定部308で認識される。
【0090】
その後、ステップS722では、ステップS718で取得された後続フラグメント識別子に基づき、パケットバッファ部132に保持されていたフラグメント後続パケットF240に対してパケット処理が行われる。ステップS722では、図7に示されたステップS506〜ステップS516に従って、フラグメント後続パケットF240に対するパケット処理が行われる。これにより、フラグメント後続パケットF240は、ステップS708で取得したパケット識別子エントリのエントリ番号PE(2)と同じエントリ番号を取得できる。そのため、パケット処理実行部136は、フラグメント後続パケットF240に対して、フラグメント先頭パケットF245に対して行われたパケット処理と同じパケット処理を行うことができる。
【0091】
以上説明したように、ネットワークの中継機器等のパケット処理装置において、通過するフラグメントパケットに対して、フラグメントされる前のパケット全体についてIPより上位のプロトコルに従って処理を行う場合、フラグメントパケットからフラグメントされる前のパケットを再構成する必要がない。そのため、パケットを再構成するために、フラグメント化された全てのフラグメントパケットをバッファメモリに格納する必要がない。また、フラグメント先頭パケット、および、フラグメント先頭パケットより後に到着するフラグメント後続パケットは、受信された後すぐにパケット処理され、フラグメントパケットを格納していたバッファは、すぐに解放される。そのためバッファメモリ量を削減でき、装置コストも抑えることが可能となる。
【0092】
以下で、一例として、フラグメントされる前のパケットサイズが最大10キロバイトのパケットを同時に10パケット処理したい場合について、従来と本実施形態とで必要とされるバッファメモリ量を比較する。10キロバイトのパケットは、1キロバイトのフラグメントパケットにフラグメントされてネットワーク上で送信されているとする。
【0093】
従来のように、全てのフラグメントパケットに対して再構成してパケット処理を行う場合に必要とされるバッファメモリ量は、以下のとおりである。
【0094】
【数1】

【0095】
一方、本実施形態にかかるパケット処理装置では、フラグメントされ本装置には先頭パケットから順に到着する場合には、フラグメントパケットは到着後直ぐに処理される。そのため、必要とされるバッファメモリ量は、1パケットあたり1フラグメントパケットサイズとなる。そのため、同時に10パケット処理したい場合に必要とされるバッファメモリ量は、以下のとおりである。
【0096】
【数2】

【0097】
このように、前述された例の場合、本実施形態にかかるパケット処理装置100で必要とされるバッファメモリ量は、従来の1/10に低減することが可能である。
【0098】
さらに、前述されたように、本実施形態にかかるパケット処理装置100は、フラグメントパケットを受信された後すぐにパケット処理するので、パケットがバッファ内に格納される時間が短い。そのため、パケットがパケット処理装置100をすることにより発生するレイテンシを抑制することができる。
【0099】
(第2の実施形態)
次に、本発明の第2実施形態について説明する。第2実施形態にかかるパケット処理装置は、Layer4(以下、L4という。)以上の識別処理を受信パケット処理部130において実施するかNPUにおいて実施するかを判別する。システムの全体構成、処理されるフラグメントパケットの構成、およびパケット処理装置の全体構成については、第1の実施形態と同様であるため説明を省略し、以下本発明の第2の実施形態にかかるパケット処理装置の受信パケット処理部の構成から説明する。
【0100】
(受信パケット処理部の構成)
まず、図14を参照しながら本発明の第2の実施形態にかかる受信パケット処理部130の構成について説明する。図14は、本発明の第2の実施形態にかかる受信パケット処理部の機能ブロック図である。受信パケット処理部130は、パケットバッファ部132、識別子抽出部134、パケット振分部138、検索管理部300、パケット処理実行部136、第2の検索管理部900から主に構成される。以下、第1の実施形態と同様の箇所については説明を省略する。
【0101】
(第2の検索管理部)
第2の検索管理部900は、識別子抽出部134で抽出されたLayer3(以下、L3という。)までの情報、例えば先頭フラグメント識別子、および後続フラグメント識別子に基づいてCAM140に格納された識別子等の各種情報を検索し、パケットに対するL3までの情報を用いた処理を決定する。
【0102】
(パケット振分部)
パケット振分部138は、第2の検索管理部900でL3までの処理が決定されたパケットを受け取り、受け取ったパケットの種類及びパケットバッファ部132の残り容量とに基づいて受け取ったパケットを検索管理部300とパケット処理実行部136とに振り分ける。パケット振分部138は、フラグメント先頭パケットを受け取った場合には、フラグメント先頭パケットを検索管理部300に転送する。また、パケット振分部138は、フラグメント後続パケットを受け取った場合には、パケットバッファ部132の残り容量を確認する。ここでパケット振分部138は、パケットバッファ部132の残り容量が所定の閾値以下である場合には、フラグメント後続パケットをパケット処理実行部136に転送し、パケットバッファ部132の残り容量が閾値以上である場合には、フラグメント後続パケットを検索管理部300に転送する。
【0103】
ここでパケット振分部138は、フラグメント先頭パケットについてはパケットバッファ部132の残り容量に関わらず検索管理部300に転送する。上述の通り、検索管理部300におけるパケット処理は、フラグメント後続パケットに対してはフラグメント先頭パケットに対する処理から得られた情報を用いて行われる。そのため、同じIDを有するフラグメントパケットのうち、フラグメント先頭パケットが検索管理部300に転送されない場合には、フラグメント後続パケットに対するパケット処理が出来ない。このような状況を避けるため、パケット振分部138は、パケットバッファ部132の残り容量に関わらずフラグメント先頭パケットを検索管理部300に転送する。
【0104】
またここで閾値は、パケットバッファ部132の容量不足によりパケットの廃棄が起きない値に設定されることが好ましい。例えば閾値は、1フラグメントパケットを再構成可能な容量に従って設定されてよい。
【0105】
(パケット処理実行部)
パケット処理実行部136は、フラグメント後続パケットに受信パケット処理部130からNPU150へのパケット識別情報通知エリアとして、装置内専用の拡張ヘッダを付加し、検索管理部300における識別処理が完了したフラグメント後続パケットに再構成後の識別が完了したパケットであることを示す識別完了フラグを拡張ヘッダ内に付加する。パケット処理実行部136は、検索管理部300における識別処理が完了し、L4以上のパケット処理が決定されたフラグメント後続パケットに対しては、検索管理部300で決定されたパケット処理情報を対応するパケットに付加して、NPU150に転送する。また、パケット処理実行部136は、検索管理部300における処理を実施しなかったパケットに対しては、第2の検索管理部における処理結果であるL3までの識別処理によって決定されたL3までのパケット処理情報を対応するパケットに付加して、NPU150に転送する。パケット処理実行部136での処理が完了してパケットがNPU150に転送されると、パケット処理実行部136は、そのパケットの処理が完了したことをパケットバッファ部132に通知する。
【0106】
(受信パケット処理部における処理フロー)
次に、図15を参照しながら、フラグメントパケットを受信した場合に、本実施形態にかかる受信パケット処理部で行われる処理を説明する。図15は、フラグメント後続パケットを受信した場合の受信パケット処理部における処理を示したフローチャートである。
【0107】
受信パケット処理部130でパケットが受信されると、ステップS802で、受信されたフラグメントパケットは、パケットバッファ部132に格納される。次いで、ステップS804で、識別子抽出部134は、ステップS802で格納されたフラグメントパケットから複数の識別子を抽出する。さらに、ステップS806で、第2の検索管理部900は、ステップS804で抽出された複数の識別子の組合せである先頭フラグメント識別子又は後続フラグメント識別子に基づき、L3レベルまでの識別を行い、L3レベルまでのパケット処理を決定する。
【0108】
次いで、ステップS808で、パケット振分部138は、受信したフラグメントパケットがフラグメント先頭パケットであるか、フラグメント後続パケットであるかを判別する。判別の結果、フラグメント先頭パケットであった場合、ステップS810でパケット振分部138は、フラグメント先頭パケットを検索管理部300に転送し、検索管理部300はL4以上の識別をしてパケット処理を決定する。ステップS812で、検索管理部300はフラグメント先頭パケットをパケット処理実行部136に転送し、検索管理部300において決定されたパケット処理であるL4以上の識別結果をフラグメント先頭パケットに付加し、ステップS822で、フラグメント先頭パケットはNPU150に転送される。ここでステップS810のL4以上の識別処理は、詳しくは、第1の実施形態における図6のステップS406〜S408,およびS414〜S418、図9のステップS706〜S708,及びS714〜S722に相当する。
【0109】
次いで、ステップS808の判別の結果、フラグメント後続パケットであった場合、ステップS814で、パケット振分部138は、パケットバッファ部132の残り容量が閾値以上であるか否かを判別する。判別の結果、パケットバッファ部132の残り容量が閾値以上であった場合、ステップS816で、パケット振分部138は、フラグメント後続パケットを検索管理部300に転送し、検索管理部300はフラグメント後続パケットに対してL4以上の識別をしてパケット処理を決定する。ステップS818で、検索管理部300はフラグメント後続パケットをパケット処理実行部136に転送し、パケット処理実行部136は、検索管理部300において決定されたパケット処理であるL4以上の識別結果と識別完了フラグとをフラグメント後続パケットに付加し、ステップS822で、フラグメント後続パケットをNPU150に転送する。ここでステップS816のL4以上の識別処理は、詳しくは、第1の実施形態における図7のステップS506〜S512,および図8のステップS606〜S608に相当する。
【0110】
次いで、ステップS814の判別の結果、パケットバッファ部132に残り容量が閾値以下であった場合、パケット振分部138は、フラグメント後続パケットをパケット処理実行部136に転送する。パケット処理実行部136は、フラグメント後続パケットにL3までの識別結果を付加し、ステップS822で、フラグメント後続パケットをNPU150に転送する。
【0111】
以上説明したように、ネットワークの中継装置等のパケット処理装置において、通過するフラグメントパケットに対して、フラグメント先頭パケットに対しては受信パケット処理部においてL4以上の識別処理を行い、フラグメント後続パケットに対しては、パケットバッファ部132の残り容量に基づいて、L4以上の識別処理を受信パケット処理部130で行うか、NPU150において行うかを振り分ける。そして、L4以上の識別処理が完了しているフラグメントパケットに対しては、識別完了フラグを付加する。NPU150は、この識別完了フラグを参照して識別の完了していないパケット、即ち識別完了フラグ=0のパケットのみを処理すればよくなる。
【0112】
これにより、パケットバッファ部132の容量に余裕のある時には前段の受信パケット処理部においてL4以上の識別処理が行われる。この場合にはNPU150に転送されたフラグメントパケットは必ず先頭パケットから送られてくるため、L4以上の処理をNPU150がする場合でも必要な上位レイヤのコンテンツの情報が含まれるパケットまでの最低限のパケットの蓄積ですむ。また、パケットバッファ部132の容量に空きが足りなくなった場合にはL3までの識別をし、再構成せずにNPU150へ転送するため、大量に分割されたフラグメントパケットを連続して受信する場合などの高負荷時であっても、パケットを廃棄することなく、受信パケット処理部130とNPU150とに負荷を分散しながら処理することが出来るようになり、再構成処理による負荷やメモリアクセス数などが大幅に減り、システム全体としての処理能力を向上させることが出来る。
【0113】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【0114】
本実施形態では、フラグメントパケットを識別するためのフラグメント識別子を構成する要素として、MACヘッダから抽出されるMACアドレス等の識別子の組合せデータと、IPヘッダから抽出されるIPアドレス等の識別子の組合せデータと、フラグメントID(ID)を使用しているが、フラグメント識別子の構成はこれに限定されるものではない。例えば、MACヘッダから抽出される識別子の組合せデータが使用されなくてもよい。また、例えば、MFやオフセット等の他の識別子が使用されてもよい。
【0115】
第2の実施形態では、受信パケット処理部130からNPU150へのパケット識別情報通知エリアとして、パケットに装置内専用の拡張ヘッダを付加し、この拡張ヘッダ内に識別完了フラグを付加することとしたが、これに限定されるものではない。例えば、拡張ヘッダを付加せずに未使用エリアを使用して情報を埋め込んでも良い。
【0116】
また第2の実施形態では、パケット処理実行部136は第2の検索管理部900における識別結果であるL3までのパケット処理情報を対応するフラグメントパケットに付加してNPU150に転送したが、これに限られるものではない。例えば、L3までのパケット処理はパケット処理実行部136において実施するようにしてもよい。
【0117】
また、第2の実施形態では、パケット振分部はフラグメントパケットの種類とパケットバッファ部132の残り容量とに基づいて、フラグメントパケットを振り分けたが、これに限られるものではない。例えば、上記の判別に加え、L4以上の識別が必要なパケットであるか否かを判別してもよい。この場合、パケット処理実行部136において、L4以上の識別が必要であるか否かを示す識別要否フラグを付加してもよい。NPU150は識別要否フラグを参照して、この値が0のものについては処理不要であることを判別できるようになる。
【0118】
尚、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的に又は個別的に実行される処理をも含む。また時系列的に処理されるステップでも、場合によっては適宜順序を変更することが可能であることは言うまでもない。
【符号の説明】
【0119】
100 パケット処理装置
130 受信パケット処理部
132 パケットバッファ部
134 識別子抽出部
136 パケット処理実行部
138 パケット振分部
140 CAM
300 検索管理部
302 先頭フラグメント処理決定部
304 先頭フラグメント識別子登録部
306 関連付け部
308 後続フラグメント処理決定部
310 後続フラグメント識別子登録部
312 後続フラグメント識別子検索部
900 第2の検索管理部

【特許請求の範囲】
【請求項1】
受信したフラグメントパケットを一時的に記憶するパケットバッファ部と、
前記フラグメントパケットのうちフラグメント先頭パケットから、上位ヘッダの情報を含む識別子の組み合わせであるパケット識別子と上位ヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、前記フラグメントパケットのうちフラグメント後続パケットから、上位ヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出部と、
前記識別子抽出部で抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶部と、
前記フラグメントパケットの種類と前記パケットバッファ部の残り容量とに基づいて前記フラグメントパケットを振分け制御するパケット振分部と、
前記パケット振分部から振分けられた前記フラグメントパケットに対して、前記記憶部に格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、フラグメント化されたレイヤーより上位レイヤーのプロトコルに従うパケット処理を決定する検索管理部と、
を備える、パケット処理装置。
【請求項2】
前記検索管理部で決定された前記パケット処理情報に基づいて、前記フラグメント先頭パケットおよび前記フラグメント後続パケットに対してそれぞれ決定されたパケット処理をするパケット処理実行部をさらに備える、請求項1に記載のパケット処理装置。
【請求項3】
前記パケット処理実行部は、
前記検索管理部においてパケット処理が決定された前記フラグメントパケットに、再構成後の識別が完了したパケットであることを示す識別完了フラグを付加する、請求項1または2のいずれかに記載のパケット処理装置。
【請求項4】
前記パケット振分部は、前記検索管理部と前記パケット処理実行部とに前記フラグメントパケットを振分ける、請求項1〜3のいずれかに記載のパケット処理装置。
【請求項5】
前記パケット振分部は、前記フラグメントパケットがフラグメント先頭パケットである場合に、前記パケットバッファ部の残り容量に関わらず、前記フラグメント先頭パケットを前記検索管理部に振分ける、請求項1〜4のいずれかに記載のパケット処理装置。
【請求項6】
前記パケット振分部は、前記フラグメントパケットがフラグメント後続パケットである場合に、前記パケットバッファ部の残り容量が所定の閾値以上の場合に前記フラグメント後続パケットを前記検索管理部に振分け、前記パケットバッファ部の残り容量が所定の閾値以下の場合に前記フラグメント後続パケットを前記パケット処理実行部に振分ける、請求項4または5のいずれかに記載のパケット処理装置。
【請求項7】
受信したフラグメントパケットをパケットバッファ部に一時的に記憶するパケット記憶ステップと、
前記フラグメントパケットのうちフラグメント先頭パケットから、上位ヘッダの情報を含む識別子の組み合わせであるパケット識別子と上位ヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、前記フラグメントパケットうちフラグメント後続パケットから、上位ヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出ステップと、
前記識別子抽出ステップで抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶ステップと、
前記フラグメントパケットの種類と前記パケットバッファ部の残り容量とに基づいて前記フラグメントパケットを振分け制御するパケット振分けステップと、
前記パケット振分部から振分けられた前記フラグメントパケットに対して、前記格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、フラグメント化されたレイヤーより上位レイヤーのプロトコルに従うパケット処理を決定するパケット処理決定ステップと、
を含む、パケット処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10A】
image rotate

【図10B】
image rotate

【図10C】
image rotate

【図10D】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12A】
image rotate

【図12B】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図13C】
image rotate

【図13D】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−233063(P2010−233063A)
【公開日】平成22年10月14日(2010.10.14)
【国際特許分類】
【出願番号】特願2009−79725(P2009−79725)
【出願日】平成21年3月27日(2009.3.27)
【出願人】(308033722)株式会社OKIネットワークス (165)
【Fターム(参考)】