(57)【特許請求の範囲】
【請求項１】
フラグメントパケットのうちフラグメント先頭パケットから、フラグメント化されたレイヤーより下位レイヤーのヘッダの情報と前記フラグメント化されたレイヤーより上位レイヤーのヘッダの情報とを含む識別子の組み合わせであるパケット識別子と、前記下位レイヤーのヘッダの情報を含み前記上位レイヤーのヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、前記フラグメントパケットのうちフラグメント後続パケットから、前記下位レイヤーのヘッダの情報を含み前記上位レイヤーのヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出部と、
前記識別子抽出部で抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶部と、
前記記憶部に格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、前記フラグメントパケットに対して、前記上位レイヤーのプロトコルに従うパケット処理を決定する検索管理部と、
を備えることを特徴とする、パケット処理装置。
【請求項２】
前記検索管理部は、
前記パケット識別子に基づいて前記記憶部を検索して前記フラグメント先頭パケットに対するパケット処理を決定する先頭フラグメント処理決定部と、
前記フラグメント先頭パケットから抽出された先頭フラグメント識別子を前記記憶部に登録する先頭フラグメント識別子登録部と、
前記先頭フラグメント識別子登録部で登録された先頭フラグメント識別子と、前記先頭フラグメント処理決定部で決定されたパケット処理と、を関連付ける関連付け部と、
前記フラグメント後続パケットから抽出された後続フラグメント識別子を前記記憶部に登録する後続フラグメント識別子登録部と、
前記先頭フラグメント識別子に基づいて、前記後続フラグメント識別子登録部で登録された後続フラグメント識別子を検索する後続フラグメント識別子検索部と、
前記関連付け部によって関連付けられた情報に基づいて、前記フラグメント後続パケットに対するパケット処理を決定する後続フラグメント処理決定部と、
を備えることを特徴とする、請求項１に記載のパケット処理装置。
【請求項３】
前記後続フラグメント処理決定部は、前記関連付け部によって関連付けられた情報に基づいて、前記後続フラグメント識別子検索部によりヒットした後続フラグメント識別子の前記フラグメント後続パケットに対するパケット処理を決定することを特徴とする、請求項２に記載のパケット処理装置。
【請求項４】
さらに、前記検索管理部で決定された前記パケット処理の情報に基づいて、前記フラグメント先頭パケットおよび前記フラグメント後続パケットに対してそれぞれ決定されたパケット処理をするパケット処理実行部を備えることを特徴とする、請求項１に記載のパケット処理装置。
【請求項５】
前記フラグメント先頭パケットが前記フラグメント後続パケットより先に受信された場合、
前記後続フラグメント処理決定部は、前記後続フラグメント識別子に対応する、前記記憶部に登録された先頭フラグメント識別子を検出し、前記記憶部に関連付けて記憶された前記検出された先頭フラグメント識別子とパケット処理とに基づき、前記後続フラグメント識別子のフラグメント後続パケットに対するパケット処理を決定することを特徴とする、請求項２に記載のパケット処理装置。
【請求項６】
前記フラグメント後続パケットが前記フラグメント先頭パケットより先に受信された場合、
前記後続フラグメント識別子登録部は、前記フラグメント後続パケットの後続フラグメント識別子を前記記憶部に登録し、
前記後続フラグメント処理決定部は、前記フラグメント先頭パケットが受信された時に、前記フラグメント先頭パケットから抽出された先頭フラグメント識別子に基づいて、前記記憶部に登録された前記後続フラグメント識別子を検索することによって、当該フラグメント後続パケットに対するパケット処理を決定することを特徴とする、請求項２に記載のパケット処理装置。
【請求項７】
受信されたフラグメントパケットのうちフラグメント先頭パケットから、フラグメント化されたレイヤーより下位レイヤーのヘッダの情報と前記フラグメント化されたレイヤーより上位レイヤーのヘッダの情報とを含む識別子の組み合わせであるパケット識別子と、前記下位レイヤーのヘッダの情報を含み前記上位レイヤーのヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、前記フラグメントパケットのうちフラグメント後続パケットから、前記下位レイヤーのヘッダの情報を含み前記上位レイヤーのヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出ステップと、
前記抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶ステップと、
前記格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、前記フラグメントパケットに対して、前記上位レイヤーのプロトコルに従うパケット処理を決定するパケット処理決定ステップと、
から構成されることを特徴とする、パケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理装置およびパケット処理方法に関する。
【背景技術】
【０００２】
ＩＰネットワークにおいて転送されるＩＰフラグメントパケットは、一度に送信できない程の大きなサイズのＩＰパケットがいくつかに分割（フラグメント）されて送信されたパケットのことを指す。個々のＩＰフラグメントパケットのサイズは、物理的なネットワーク毎に決められた一度に送信できるサイズ「ＭＴＵ（Ｍａｘｉｍｕｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｕｎｉｔ）」によって制限される。
【０００３】
このようなフラグメントされたＩＰパケットに対して、ネットワークの中継機器において、フラグメントされる前のＩＰパケット全体についてＴＣＰプロトコル等のＩＰよりも上位のプロトコルに従って処理を行いたい場合がある。しかし、ＩＰフラグメントパケットのうち、分割されたときに先頭にあったＩＰフラグメントパケットは、ＩＰよりも上位のプロトコルヘッダ（以下、上位ヘッダと称す）の情報を含んでいるが、それ以外のＩＰフラグメントパケットは、上位ヘッダの情報を含まない。そのため、従来、上位のプロトコルに従って処理を行いたい場合に中継機器上でＩＰフラグメントパケットからＩＰパケットを再構成することにより、処理を行っている。
【０００４】
下記の文献には、フラグメントされたＩＰパケットを中継機器上で蓄積し、全てのフラグメントされたＩＰパケットが蓄積されてフラグメント処理前のＩＰパケットが再構成された後に、フラグメントされる前のパケット全体について処理を行う、従来の処理方法が開示されている。
【特許文献１】特開２００５−１２６９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、前述された従来の方法では、一旦ＩＰパケット全体を中継機器のバッファに蓄積する。そのため、中継機器は、ＩＰネットワーク上の最大ＭＴＵのサイズを有するバッファ（１ＩＰパケット分のバッファ）を備える必要がある。さらに、蓄積されるＩＰフラグメントパケットは、全て同じＩＰパケットがフラグメントされたものでなく、別のＩＰパケットがフラグメントされたＩＰフラグメントパケットが受信されることが想定される。そのため、前述のような最大ＭＴＵのサイズを有するバッファは複数備えられる必要がある。さらに、前述のようなバッファ数は、内部のメモリ容量の限界によって制限されるため、ＩＰパケットの再構成中に、バッファ数が限界に達した場合には、それ以降に受信したＩＰフラグメントパケットは再構成されず、ＩＰパケットに対する処理が行われない。また、この場合、受信されたＩＰフラグメントパケットは廃棄される可能性もある。
【０００６】
このように、中継機器でフラグメントされたＩＰパケットに対して、フラグメントされる前のＩＰパケット全体についてＩＰより上位のプロトコルに従って処理を行いたい場合には、多くのバッファ用のメモリを必要とする。また、同時に処理できるフラグメントパケット数の制限を緩和するためには、さらに多くのメモリの搭載を必要とし、機器コストが増加する。
【０００７】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、ＩＰフラグメントパケットに対して、フラグメントされる前のＩＰパケット全体についてＩＰより上位のプロトコルに従って処理を行う場合に必要とするバッファ容量を低減することが可能な、新規かつ改良されたパケット処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある観点によれば、フラグメントパケットのうちフラグメント先頭パケットから、上位ヘッダの情報を含む識別子の組み合わせであるパケット識別子と上位ヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、前記フラグメントパケットのうちフラグメント後続パケットから、上位ヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出部と、前記識別子抽出部で抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶部と、前記記憶部に格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、前記フラグメントパケットに対して、フラグメント化されたレイヤーより上位レイヤーのプロトコルに従うパケット処理を決定する検索管理部と、を備えることを特徴とする、パケット処理装置が提供される。
【０００９】
前記検索管理部は、前記パケット識別子に基づいて前記記憶部を検索して前記フラグメント先頭パケットに対するパケット処理を決定する先頭フラグメント処理決定部と、前記フラグメント先頭パケットから抽出された先頭フラグメント識別子を前記記憶部に登録する先頭フラグメント識別子登録部と、前記先頭フラグメント識別子登録部で登録された先頭フラグメント識別子と、前記先頭フラグメント処理決定部で決定されたパケット処理と、を関連付ける関連付け部と、前記フラグメント後続パケットから抽出された後続フラグメント識別子を前記記憶部に登録する後続フラグメント識別子登録部と、前記先頭フラグメント識別子に基づいて、前記後続フラグメント識別子登録部で登録された後続フラグメント識別子を検索する後続フラグメント識別子検索部と、前記関連付け部によって関連付けられた情報に基づいて、前記フラグメント後続パケットに対するパケット処理を決定する後続フラグメント処理決定部と、を備えてもよい。
【００１０】
前記後続フラグメント処理決定部は、前記関連付け部によって関連付けられた情報に基づいて、前記後続フラグメント識別子検索部によりヒットした後続フラグメント識別子の前記フラグメント後続パケットに対するパケット処理を決定してもよい。
【００１１】
パケット処理装置は、さらに、前記検索管理部で決定された前記パケット処理情報に基づいて、前記フラグメント先頭パケットおよび前記フラグメント後続パケットに対してそれぞれ決定されたパケット処理をするパケット処理実行部を備えてもよい。
【００１２】
前記フラグメント先頭パケットが前記フラグメント後続パケットより先に受信された場合、前記後続フラグメント処理決定部は、前記後続フラグメント識別子に対応する、前記記憶部に登録された先頭フラグメント識別子を検出し、前記記憶部に関連付けて記憶された前記検出された先頭フラグメント識別子とパケット処理とに基づき、前記後続フラグメント識別子のフラグメント後続パケットに対するパケット処理を決定してもよい。
【００１３】
前記フラグメント後続パケットが前記フラグメント先頭パケットより先に受信された場合、前記後続フラグメント識別子登録部は、前記フラグメント後続パケットの後続フラグメント識別子を前記記憶部に登録し、前記後続フラグメント処理決定部は、前記フラグメント先頭パケットが受信された時に、前記フラグメント先頭パケットから抽出された先頭フラグメント識別子に基づいて、前記記憶部に登録された前記後続フラグメント識別子を検索することによって、当該フラグメント後続パケットに対するパケット処理を決定してもよい。
【００１４】
また、上記課題を解決するために、本発明の別の観点によれば、受信されたフラグメントパケットのうちフラグメント先頭パケットから、上位ヘッダの情報を含む識別子の組み合わせであるパケット識別子と上位ヘッダの情報を含まない識別子の組み合わせである先頭フラグメント識別子とを抽出し、前記フラグメントパケットうちフラグメント後続パケットから、上位ヘッダの情報を含まない識別子の組み合わせである後続フラグメント識別子を抽出する識別子抽出ステップと、前記識別子抽出部で抽出されたパケット識別子、および、先頭および後続フラグメント識別子を格納する記憶ステップと、前記格納されたパケット識別子、および、先頭および後続フラグメント識別子に基づいて、前記フラグメントパケットに対して、フラグメント化されたレイヤーより上位レイヤーのプロトコルに従うパケット処理を決定するパケット処理決定ステップと、から構成されることを特徴とする、パケット処理方法が提供される。
【発明の効果】
【００１５】
以上説明したように本発明によれば、ＩＰフラグメントパケットに対して、フラグメントされる前のＩＰパケット全体についてＩＰより上位のプロトコルに従って処理を行う場合に必要とするバッファ容量を低減することが可能な、新規かつ改良されたパケット処理装置が提供される。
【発明を実施するための最良の形態】
【００１６】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１７】
（第１の実施形態）
（システム構成）
まず、本発明の第１実施形態について説明する。はじめに、本実施形態にかかるパケット処理装置１００を利用した通信システムについて説明する。図１には、本実施形態にかかるパケット処理装置を利用した通信システムの一例が示されている。本実施形態にかかるパケット処理装置１００は、コンピュータ２０に接続されている。また、パケット処理装置１００は、ＩＰネットワーク等のネットワーク１０を介してコンピュータ３０に接続されている。コンピュータ２０およびコンピュータ３０は、パーソナルコンピュータ、携帯電話、ＰＤＡ等のネットワーク上で通信可能なあらゆるコンピュータである。
【００１８】
パケット処理装置１００は、コンピュータ２０から送信されたＩＰフラグメントパケット（以下、フラグメントパケットと称す）に対して、フラグメントされる前のＩＰパケット（以下、パケットと称す）全体についてＩＰより上位のプロトコルに従って処理を行い、ネットワーク１０を介してコンピュータ３０に転送する。パケット処理装置１００は、例えば、ルータやレイヤー３スイッチ等のネットワークスイッチ装置であってもよいし、ゲートウェイ等のセキュリティ装置であってもよい。パケット処理装置１００では、例えば、ＩＰより上位のプロトコルに従って、フラグメントパケットの廃棄、フラグメントパケット内の情報の加工等が行われる。
【００１９】
図１に示された通信システムは一例であって、本実施形態のパケット処理装置１００を利用した通信システムのシステム構成は、図１の構成には限定されない。例えば、図１には、簡略化のために、パケット処理装置は１つしか記載されていないが、コンピュータ２０とネットワーク１０との間、および、コンピュータ３０とネットワーク１０との間には複数のパケット処理装置が存在してもよい。また、パケット処理装置に直接接続されているコンピュータはコンピュータ２０のみが記載されているが、複数のコンピュータがパケット処理装置１００に接続されていてもよい。
【００２０】
（ＩＰパケットのフラグメント）
次に、本実施形態にかかるパケット処理装置１００で処理されるフラグメントパケットについて説明する。図２には、パケットのフラグメントの一例が示されている。パケットＰ２００は、ＭＡＣヘッダ２０１、ＩＰヘッダ２０２、上位ヘッダ２０３、データ２０４およびＦＣＳ２０５から構成されている。ＭＡＣヘッダ２０１は、データリンク層のプロトコルに関するヘッダであり、ＩＰヘッダ２０２は、ネットワーク層のプロトコルに関するヘッダであり、上位ヘッダ２０３は、トランスポート層以上のプロトコルに関するヘッダである。また、ＦＣＳ２０５は誤り検出符号である。
【００２１】
図２の例では、パケットＰ２００は、フラグメントパケットＦ２１０、Ｆ２２０およびＦ２３０に分割されている。フラグメントパケットＦ２１０、Ｆ２２０、およびＦ２３０は、パケットＰ２００から生成されるときにＭＡＣヘッダおよびＩＰヘッダが付加され、順次ネットワークに送信される。このようなパケットの分割およびフラグメントは、パケットを中継するパケット処理装置によって、パケットが宛先のコンピュータに届くまで繰り返される。その結果、パケットは細かく分割される。
【００２２】
パケットが通過するルートによっては、フラグメントパケットの順序が入れ替わって到着する場合やフラグメントパケット途中で廃棄される場合もあるが、フラグメントされたＩＰパケットは、最終的に到着する宛先のコンピュータで再構成される。この再構成は、ＭＡＣアドレス、ＩＰアドレス等の情報と、以下で説明される各ＩＰパケットのヘッダに含まれる識別子であるＩＤ、ＭＦ、およびオフセットが利用されて、パケットのユニーク性を確保しながら行われる。
【００２３】
フラグメントパケットＦ２１０は先頭のフラグメントパケット（以下、フラグメント先頭パケットと称す）であり、ＭＡＣヘッダ２１１、ＩＰヘッダ２１２、上位ヘッダ２１３、データ２１４およびＦＣＳ２１５から構成されている。ＭＡＣヘッダ２１１は、パケットＰ２００のＭＡＣヘッダ２０１と同じ情報を含んでいる。上位ヘッダ２１３は、パケットＰ２００の上位ヘッダ２０３と同じ情報を含んでいる。データ２１４は、パケットＰ２００のデータ２０４が分割されたものである。ＦＣＳ２１５は、誤り検出符号である。
【００２４】
ＩＰヘッダ２１２は、フラグメントパケットＦ２１０が生成されるときに、パケットＰ２００のＩＰヘッダ２０２の情報が加工されてフラグメントパケットＦ２１０に付加される。ＩＰヘッダ２１２は、ＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）２１６、ＭＦ（Ｍｏｒｅ  Ｆｒａｇｍｅｎｔ）２１７、およびオフセット２１８を含んでいる。ＩＤ２１６はフラグメントされる前のパケットを識別する識別子であって、同一パケットから分割されたフラグメントパケットのＩＤは同一の値を有する。ＩＤ２１６の値は、図２に示されるように、ＩＤ１である。
【００２５】
ＭＦ２１７は、後続のフラグメントパケットが存在するかどうかを示す識別子である。ＭＦ２１７の値が０であれば、後続のフラグメントパケットは存在せず、ＭＦ２１７の値が１であれば、後続のフラグメントパケットが存在する。フラグメントパケットＦ２１０の後続には、フラグメントパケットＦ２２０が存在するため、フラグメントパケットＦ２１０のＭＦ２１７の値ＭＦ１＝１である。
【００２６】
オフセット２１８は、フラグメントパケットＦ２１０がフラグメントされる前のパケットＰ２００の先頭（ＩＰヘッダ２０２の先頭）から何バイト目に位置していたかを示す識別子である。フラグメントパケットＦ２１０はフラグメント先頭パケットであるので、オフセット２１８の値ＯＦ１＝０である。
【００２７】
フラグメントパケットＦ２２０は後続のフラグメントパケット（以下、フラグメント後続パケットと称す）であり、ＭＡＣヘッダ２２１、ＩＰヘッダ２２２、データ２２３およびＦＣＳ２２４から構成されている。フラグメントパケットＦ２２０はフラグメント後続パケットであるので、上位ヘッダの情報はフラグメントパケットＦ２２０には含まれない。ＭＡＣヘッダ２２１は、パケットＰ２００のＭＡＣヘッダ２０１と同じ情報を含んでいる。データ２２３は、パケットＰ２００のデータ２０４のうちで、フラグメントパケットＦ２１０に含まれたデータ２１４に後続するデータが分割されたものである。ＦＣＳ２２４は、誤り検出符号である。
【００２８】
ＩＰヘッダ２２２は、フラグメントパケットＦ２２０が生成されるときに、パケットＰ２００のＩＰヘッダ２０２の情報が加工されてフラグメントパケットＦ２２０に付加される。ＩＰヘッダはＩＤ２２５、ＭＦ２２６、およびオフセット２２７を含んでいる。フラグメントパケットＦ２２０は、フラグメントパケットＦ２１０と同じパケットＰ２００から分割されているので、ＩＤ２２５の値はＩＤ２１６の値と同じで、ＩＤ１である。フラグメントパケットＦ２２０の後続には、フラグメントパケットＦ２３０が存在するため、フラグメントパケットＦ２２０のＭＦ２２６の値ＭＦ２＝１である。フラグメントパケットＦ２２０はフラグメント後続パケットであるので、オフセット２２７の値ＯＦ２≠０である。
【００２９】
フラグメントパケットＦ２３０はフラグメント後続パケットであり、ＭＡＣヘッダ２３１、ＩＰヘッダ２３２、データ２３３およびＦＣＳ２３４から構成されている。フラグメントパケットＦ２３０はフラグメント後続パケットであるので、フラグメントパケットＦ２２０と同様、上位ヘッダの情報は含まれない。ＭＡＣヘッダ２３１は、パケットＰ２００のＭＡＣヘッダ２０１と同じ情報を含んでいる。データ２３３は、パケットＰ２００のデータ２０４のうちで、フラグメントパケットＦ２２０に含まれたデータ２２３に後続するデータである。ＦＣＳ２３４は、誤り検出符号である。
【００３０】
ＩＰヘッダ２３２は、フラグメントパケットＦ２３０が生成されるときに、パケットＰ２００のＩＰヘッダ２０２の情報が加工されてフラグメントパケットＦ２３０に付加される。ＩＰヘッダはＩＤ２３５、ＭＦ２３６、およびオフセット２３７を含んでいる。フラグメントパケットＦ２３０は、フラグメントパケットＦ２１０およびＦ２２０と同じパケットＰ２００から分割されているので、ＩＤ２３５の値はＩＤ２１６およびＩＤ２２５の値と同じで、ＩＤ１である。フラグメントパケットＦ２３０の後続には、フラグメントパケットが存在しないため、フラグメントパケットＦ２３０のＭＦ２３６の値ＭＦ３＝０である。フラグメントパケットＦ２３０はフラグメント後続パケットであるので、オフセット２３７の値ＯＦ３≠０である。
【００３１】
（パケット処理装置の構成）
次に、本実施形態にかかるパケット処理装置の構成について説明する。図３は、本実施形態にかかるパケット処理装置の機能ブロック図である。本実施形態にかかるパケット処理装置１００は、物理媒体１１０Ａ〜１１０Ｎ、物理終端部（ＭＡＣ／ＰＨＹ）１２０、受信パケット処理部１３０、記憶部の一例であるＣＡＭ１４０、ネットワークプロセッサ（ＮＰＵ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５０、送信パケット処理部１６０から構成される。
【００３２】
物理媒体（ポート１）１１０Ａ〜物理媒体（ポートＮ）１１０Ｎは、ＲＪ−４５コネクタ等の複数の外部物理インタフェース（ポート）を含む物理媒体であり、コンピュータ２０等のネットワークで接続されたコンピュータから信号を受信する。受信された信号は、物理終端部１２０に転送される。また、物理媒体（ポート１）１１０Ａ〜物理媒体（ポートＮ）１１０Ｎは、物理終端部１２０から受信した信号を、ネットワークで接続されたコンピュータへ送信する。
【００３３】
物理終端部１２０は、物理媒体の各ポートで受信した信号に対して物理レイヤー（ＰＨＹ）の処理、および、メディアアクセスコントロール（ＭＡＣ）処理を行う。物理終端部１２０では、例えばポート多重処理が行われる。物理終端部１２０で処理された結果、生成されたパケットは、受信パケット処理部１３０に転送される。また、物理終端部１２０は、送信パケット処理部１６０から受信したパケットに対しても、物理レイヤー（ＰＨＹ）の処理、および、メディアアクセスコントロール（ＭＡＣ）処理を行う。送信パケット処理部１６０から受信されたパケットが、物理終端部１２０で処理された結果生成された信号は、物理媒体（ポート１）１１０Ａ〜物理媒体（ポートＮ）１１０Ｎに転送される。
【００３４】
受信パケット処理部１３０は、受信された信号に対して物理終端部１２０での処理が行われて生成されたパケットを識別し、処理を行う。より詳細には、受信パケット処理部１３０は、下記の処理を行う。受信パケット処理部１３０は、物理終端部１２０で生成されたパケットを、一旦バッファに格納する。次いで、バッファに格納されたパケットから複数の識別子を抽出する。さらに、パケットがフラグメントパケットであるかどうかを識別し、抽出された識別子の組み合わせに基づいて、パケットを再構成せずに、個々のフラグメントパケットに対して、パケット処理を行う。ここで行われる処理は、フラグメントされる前のパケット全体についてのＩＰより上位のプロトコルに従ったパケット処理である。受信パケット処理部１３０に関するさらに詳細な説明は、図４を参照しながら後述される。
【００３５】
ＣＡＭ１４０は、受信パケット処理部１３０でフラグメントパケットから抽出された識別子の組み合わせを格納する検索専用メモリである。ＣＡＭ１４０には、パケット処理に関連付けられたパケット識別用の情報があらかじめ格納されている。ＣＡＭ１４０に格納された情報は、受信パケット処理部１３０でフラグメントパケットの識別および処理を行うときに検索される。ＣＡＭ１４０に関するさらに詳細な説明は、図４を参照しながら後述される。
【００３６】
ＮＰＵ１５０は、受信パケット処理部１３０で識別されたパケットに基づいて、ＩＰより上位のプロトコルに従う高度なパケット処理を行う。ＮＰＵ１５０で行われる処理は、セキュリティーゲートウェイ、ＮＡＰＴ変換等の処理であってもよい。送信パケット処理部１６０は、ＮＰＵ１５０で処理されたパケットを物理終端部１２０へ転送する。
【００３７】
（受信パケット処理部の構成）
次に、図４を参照しながら受信パケット処理部１３０の構成についてさらに詳細に説明する。図４は、本実施形態にかかる受信パケット処理部の機能ブロック図である。受信パケット処理部１３０は、パケットバッファ部１３２、識別子抽出部１３４、検索管理部３００、パケット処理実行部１３６から構成される。
【００３８】
（パケットバッファ部１３２）
パケットバッファ部１３２は、物理終端部より受信したパケットを一時的に格納するバッファメモリ等の構成要素である。受信されてパケットバッファ部１３２に格納されるパケットは、フラグメントされていないパケット、フラグメント先頭パケット、およびフラグメント後続パケットを含んでいる。パケットバッファ部１３２に格納されたパケットは、識別子抽出部１３４で識別子が抽出される。また、パケットバッファ部１３２に格納されたパケットは、検索管理部３００で決定されたパケット処理情報に基づいて、パケット処理実行部１３６で処理が行われる。パケット処理実行部１３６からパケット処理の完了が通知されると、パケットバッファ部１３２は、そのパケットを格納していたバッファ領域を解放する。
【００３９】
（識別子抽出部１３４、および、抽出される識別子）
識別子抽出部１３４は、パケットバッファ部１３２に格納されたパケットからパケットの識別に使用する複数の識別子を抽出する。図５は、フラグメントパケットから抽出される識別子の一例を示す図表である。表２５０に示されるように、識別子抽出部１３４で抽出される複数の識別子には、ＭＡＣヘッダから抽出される識別子の組み合わせであるＭＡＣ、ＩＰヘッダから抽出される識別子の組み合わせであるＩＰおよびＴＣＰヘッダ等のＩＰより上位ヘッダから抽出される識別子の組合せである上位ヘッダと、フラグメントパケットを識別するＩＤ、ＭＦ、オフセットとが含まれる。
【００４０】
表２５０には、図２で説明されたフラグメントパケットＦ２１０、Ｆ２２０およびＦ２３０から抽出される識別子が例示されている。以下で、表５に示された各識別子について説明する。フラグメントパケットを識別するＩＤ、ＭＦ、およびオフセットは、図２を参照して説明されたフラグメントパケットを識別する識別子である。
【００４１】
フラグメントパケットＦ２１０、Ｆ２２０およびＦ２３０のＭＡＣヘッダ２１１、２２１、および２３１に含まれる情報は、図２を参照して説明されたように等しい。これらのＭＡＣヘッダから抽出されるＭＡＣアドレス等の識別子の組み合わせデータは、ＭＡＣ１で示されている。
【００４２】
フラグメントパケットＦ２１０、Ｆ２２０およびＦ２３０のＩＰヘッダ２１２、２２２、および２３２に含まれる情報は、図２を参照して説明されたように、パケットＰ２００のＩＰヘッダ２０２の情報が一部加工されたものである。ＩＰ１は、フラグメントパケットＦ２１０、Ｆ２２０およびＦ２３０のＩＰヘッダ２１２、２２２、および２３２から抽出される、これらのＩＰヘッダに共通なＩＰアドレス等の識別子の組合せデータである。
【００４３】
ＵＰ１は、フラグメント先頭パケットであるフラグメントパケットＦ２１０に含まるＴＣＰヘッダ等のＩＰより上位ヘッダから抽出される識別子の組合せデータを示す。
【００４４】
識別子抽出部１３４で抽出された複数の識別子は、検索管理部３００でのパケット処理を決定するために用いられる。本実施形態では、これら複数の識別子のうち、以下の識別子の組み合わせが検索管理部３００で使用される。
【００４５】
「パケット識別子」は、受信パケット処理部１３０でフラグメント先頭パケットから抽出される、上位ヘッダの情報を含む識別子の組み合わせである。図２で説明されたフラグメントパケットＦ２１０に関して説明すると、パケット識別子２５２は、フラグメントパケットＦ２１０から抽出され、ＭＡＣ１、ＩＰ１、およびＵＰ１から構成される。
【００４６】
「先頭フラグメント識別子」は、受信パケット処理部１３０でフラグメント先頭パケットから抽出される、上位ヘッダの情報を含まない識別子の組み合わせである。図２で説明されたフラグメントパケットＦ２１０に関して説明すると、先頭フラグメント識別子２５４は、フラグメントパケットＦ２１０から抽出され、ＭＡＣ１、ＩＰ１、およびＩＤ１から構成される。
【００４７】
「後続フラグメント識別子」は、受信パケット処理部１３０でフラグメント後続パケットから抽出される、上位ヘッダの情報を含まない識別子の組み合わせである。図２で説明されたフラグメントパケットＦ２２０に関して説明すると、後続フラグメント識別子２５６は、フラグメントパケットＦ２２０から抽出され、ＭＡＣ１、ＩＰ１、およびＩＤ１から構成される。図２で説明されたフラグメントパケットＦ２３０に関しても同様で、後続フラグメント識別子２５８は、フラグメントパケットＦ２３０から抽出され、ＭＡＣ１、ＩＰ１、およびＩＤ１から構成される。
【００４８】
（検索管理部３００）
図４に戻り、検索管理部３００は、識別子抽出部１３４で抽出されたパケット識別子、先頭フラグメント識別子、および後続フラグメント識別子に基づいてＣＡＭ１４０に格納された識別子等の各種情報を検索し、パケットに対する処理を決定する。まず、検索管理部３００は、識別子抽出部１３４で抽出された識別子に基づいて、パケットバッファ部１３２で受信されたパケットが、フラグメントされたパケットであるか、フラグメントされていないパケットであるかを識別する。受信されたパケットがフラグメントされていないパケットであった場合、検索管理部３００はそのパケットに対するパケット処理を決定し、決定されたパケット処理の情報をパケット処理実行部１３６に通知する。
【００４９】
パケットバッファ部１３２で受信されたパケットが、フラグメントされたパケットであった場合、検索管理部３００は、識別子抽出部１３４で抽出された識別子に基づいて、そのフラグメントパケットがフラグメント先頭パケットであるか、フラグメント後続パケットであるかを識別する。その後、検索管理部３００は、以下に記載される機能部で処理を行い、フラグメント先頭パケットおよびフラグメント後続パケットに対するパケット処理を決定する。
【００５０】
検索管理部３００は、先頭フラグメント処理決定部３０２、先頭フラグメント識別子登録部３０４、関連付け部３０６、後続フラグメント処理決定部３０８、後続フラグメント識別子登録部３１０、および後続フラグメント識別子検索部３１２から構成される。以下では、フラグメント先頭パケットをフラグメントパケットＦ２１０、フラグメント先頭パケットより後に受信されたフラグメント後続パケットをフラグメントパケットＦ２２０、フラグメント先頭パケットより先に受信されたフラグメント後続パケットをフラグメントパケットＦ２３０として、各構成要素に関して説明する。すなわち、パケットバッファ部１３２では、フラグメントパケットＦ２３０、フラグメントパケットＦ２１０、フラグメントパケットＦ２２０の順でパケットが受信される。
【００５１】
（先頭フラグメント処理決定部３０２）
先頭フラグメント処理決定部３０２は、パケット識別子２５２に基づいてＣＡＭ１４０のパケット識別子エントリ１４２を検索して、フラグメントパケットＦ２１０に対するパケット処理を決定する。より詳細には、先頭フラグメント処理決定部３０２は、パケット識別子２５２に基づいて、ＣＡＭ１４０に格納されたパケット識別子エントリ１４２を検索し、パケット識別子エントリに登録された識別子と一致した（ヒットした）検索結果をパケット処理実行部１３６に通知する。ここで、パケット識別子エントリ１４２は、識別子抽出部１３４でパケットから抽出されるパケット識別子に対応する識別子の組み合わせとパケット処理とを関連付けるために、あらかじめ登録されたテーブルである。例えば、識別子の組み合わせは、パケット識別子エントリ１４２内で１つのエントリ番号に関連付けて登録されており、そのエントリ番号が、あらかじめ登録された別のテーブル内で対応するパケット処理と関連付けられていてもよい。したがって、検索結果は、フラグメントパケットＦ２１０に対するパケット処理の情報を含む。
【００５２】
（先頭フラグメント識別子登録部３０４）
先頭フラグメント識別子登録部３０４は、フラグメントパケットＦ２１０から抽出された先頭フラグメント識別子２５４をＣＡＭ１４０のフラグメント識別エントリ１４４に登録する。フラグメント識別子エントリ１４４に登録された先頭フラグメント識別子２５４は、関連付け部３０６でフラグメントパケットＦ２１０のパケット処理と関連付けられる。また、フラグメント識別子エントリ１４４に登録された先頭フラグメント識別子２５４は、フラグメント後続パケットであるフラグメントパケットＦ２２０がパケットバッファ部１３２で受信されると、後続フラグメント処理決定部３０８によって検索される。
【００５３】
（関連付け部３０６）
関連付け部３０６は、先頭フラグメント識別子登録部３０４で登録された先頭フラグメント識別子２５４と、先頭フラグメント処理決定部３０２で決定されたフラグメントパケットＦ２１０に対するパケット処理と、を関連付ける。このとき、ＣＡＭ１４０の後続パケットエントリテーブル１４６に、前述された関連付けの情報が格納される。より詳細には、図１１を参照して後述される。関連付け部３０６で後続パケットエントリテーブル１４６に格納された情報は後続フラグメント処理決定部３０８で検索され、検索結果がフラグメント後続パケットであるフラグメントパケットＦ２２０およびＦ２３０に対するパケット処理の決定に利用される。
【００５４】
（後続フラグメント処理決定部３０８）
後続フラグメント処理決定部３０８は、関連付け部３０６によって関連付けられた情報に基づいて、フラグメント後続パケットであるフラグメントパケットＦ２２０およびＦ２３０に対するパケット処理を決定する。フラグメントパケットＦ２２０に対するパケット処理の決定をより詳細に説明すると、後続フラグメント処理決定部３０８は、フラグメントパケットＦ２２０から抽出された後続フラグメント識別子２５６に基づいて、フラグメント識別子エントリ１４４を検索する。検索の結果に基づいて、後続フラグメント処理決定部３０８は、フラグメントパケットＦ２２０およびＦ２３０に対するパケット処理を決定する。フラグメントパケットＦ２１０の先頭フラグメント識別子２５６がフラグメント識別子エントリ１４４に登録されている場合（すなわち、フラグメントパケットＦ２１０がすでに受信されている場合）は、検索がヒットするので、フラグメントパケットＦ２２０に対するパケット処理が決定される。逆に、先頭フラグメント識別子２５６がフラグメント識別子エントリ１４４に登録されていない場合（すなわち、フラグメントパケットＦ２１０がまだ受信されていない場合）は、検索はヒットせず、パケット処理は決定されない。
【００５５】
（後続フラグメント識別子登録部３１０）
後続フラグメント識別子登録部３１０は、後続フラグメント識別子登録部３１０での登録は、フラグメント先頭パケットより先にフラグメント後続パケットが受信された場合に、のフラグメントパケットＦ２３０から抽出されたフラグメント識別子２５８をＣＡＭ１４０の受信済後続パケットエントリテーブル１４８に登録する。後続フラグメント識別子登録部３１０で後続フラグメント識別子が登録された受信済後続パケットエントリ１４８は、後続フラグメント識別子検索部３１２によって検索される。
【００５６】
（後続フラグメント識別子検索部３１２）
後続フラグメント識別子検索部３１２は、フラグメントパケットＦ２１０から抽出された先頭フラグメント識別子２５４に基づいて、後続フラグメント識別子登録部３１０で登録された受信済後続パケットエントリ１４８を検索する。検索の結果に基づいて、後続フラグメント処理決定部３０８は、フラグメント後続パケットＦ２２０に対するパケット処理を決定する。フラグメントパケットＦ２２０の後続フラグメント識別子２５６が受信済後続パケットエントリ１４８に登録されている場合は、検索がヒットするので、後続フラグメント処理決定部３０８で、パケットバッファ部１３２に格納されている処理されていないフラグメントパケットＦ２２０に対してパケット処理が決定される。逆に、後続フラグメント識別子２５６が受信済後続パケットエントリ１４８に登録されていない場合は、検索はヒットせず、フラグメント後続パケットに対するパケット処理の決定は行われない。
【００５７】
（パケット処理実行部１３６）
パケット処理実行部１３６は、検索管理部３００で決定されたパケット処理情報に基づいて、パケット処理を行う。すなわち、検索管理部３００から通知される検索結果に基づいてパケットの処理を行う。パケット処理実行部１３６で処理されたパケットは、ＮＰＵ１５０に転送される。パケット処理実行部１３６は、検索管理部３００で決定されたパケット処理情報を、対応するパケットに付加して、ＮＰＵ１５０に転送してもよいし、または、検索管理部３００で決定されたパケット処理情報で示される処理を行って、処理後のパケットをＮＰＵ１５０に転送してもよい。パケット処理実行部１３６での処理が完了してパケットがＮＰＵ１５０に転送されると、パケット処理実行部１３６は、そのパケットの処理が完了したことをパケットバッファ部１３２に通知する。
【００５８】
（フラグメント先頭パケットの後にフラグメント後続パケットを受信）
次に、図６、図７、図１０Ａ〜図１０Ｄ、および図１１Ａおよび図１１Ｂを参照しながら、フラグメントされたパケットの中で、フラグメント先頭パケットを最初に受信し、その後フラグメント後続パケットを受信した場合に、本実施形態にかかる受信パケット処理部で行われる処理を説明する。図６は、フラグメント先頭パケットを最初に受信した場合のフラグメント先頭パケットに対する処理を示したフローチャートである。図７は、フラグメント先頭パケットを最初に受信した場合のフラグメント後続パケットに対する処理を示したフローチャートである。
【００５９】
図１０Ａ〜図１０Ｄは、フラグメント先頭パケットを最初に受信した場合のフラグメント先頭パケットに対する処理に伴うＣＡＭ１４０の各テーブルのデータ構成を示している。図１０Ａは、パケット識別子エントリのデータ構成の一例を示した図表である。図１０Ｂは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図１０Ｃは、後続パケットエントリテーブルのデータ構成の一例を示した図表である。図１０Ｄは、受信済後続パケットエントリのデータ構成の一例を示した図表である。
【００６０】
図１１Ａおよび図１１Ｂは、フラグメント先頭パケットを最初に受信した場合のフラグメント後続パケットに対する処理に伴うＣＡＭ１４０の各テーブルのデータ構成を示している。図１１Ａは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図１１Ｂは、後続パケットエントリテーブルのデータ構成の一例を示した図表である。以下の説明では、フラグメント先頭パケットＦ２１０の後にフラグメント後続パケットＦ２２０を受信したものとして説明する。
【００６１】
（最初に受信されたフラグメント先頭パケットに対する処理）
まず、図６および図１０Ａ〜図１０Ｄを参照しながら、最初に受信されたフラグメント先頭パケットに対する処理を説明する。パケット処理装置１００の物理媒体（ポート１）１１０Ａ〜物理媒体（ポートＮ）１１０Ｎの各ポートで受信された信号は、物理終端部１２０で処理が行われ、処理が行われた結果のパケットが受信パケット処理部１３０で受信される。
【００６２】
受信パケット処理部１３０でパケットが受信されると、ステップＳ４０２で、受信されたフラグメント先頭パケットＦ２１０は、パケットバッファ部１３２に格納される。次いで、ステップＳ４０４で、識別子抽出部１３４は、ステップＳ４０２で格納されたフラグメント先頭パケットＦ２１０から複数の識別子を抽出する。さらに、ステップＳ４０６で、先頭フラグメント処理決定部３０２は、ステップＳ４０４で抽出された複数の識別子の組み合わせであるパケット識別子２５２に基づき、パケット識別子エントリ１４２を検索する。
【００６３】
図１０Ａの例では、検索の結果、パケット識別子２５２は、パケット識別子エントリ１４２のエントリ番号ＰＥ（１）に登録された識別子と一致する（ヒットする）ので、ステップＳ４０８で、先頭フラグメント処理決定部３０２は、パケット識別子のエントリ番号ＰＥ（１）を取得する。
【００６４】
次いで、ステップＳ４１０で、先頭フラグメント処理決定部３０２は、ステップＳ４０８で取得したパケット識別子エントリのエントリ番号ＰＥ（１）をパケット処理実行部１３６に通知する。パケット処理実行部１３６は、フラグメント先頭パケットＦ２１０に対して、通知されたパケット識別子エントリのエントリ番号ＰＥ（１）に基づくパケット処理を行う。その後、ステップＳ４１２で、パケット処理実行部１３６は、フラグメント先頭パケットＦ２１０に対するパケット処理が完了したことをパケットバッファ部１３２に通知し、パケットバッファ部１３２に格納されたフラグメント先頭パケットＦ２１０に対応するバッファ領域が解放される。
【００６５】
次いで、ステップＳ４１４で、先頭フラグメント識別子登録部３０４は、ステップＳ４０４で抽出された複数の識別子の組み合わせである先頭フラグメント識別子２５４をフラグメント識別子エントリ１４４に登録する。図１０Ｂの例では、先頭フラグメント識別子２５４は、エントリ番号ＦＥ（１）に登録される。
【００６６】
さらに、ステップＳ４１６で、関連付け部３０６は、後続パケットエントリテーブルの、ステップＳ４１４で先頭フラグメント識別子２５４を登録したエントリ番号ＦＥ（１）と一致するアドレスに、ステップＳ４０８で取得したエントリ番号ＰＥ（１）をデータとして登録する。
【００６７】
その後、ステップＳ４１８で、後続フラグメント識別子検索部３１２は、受信済後続パケットエントリ１４８を検索する。フラグメント先頭パケットＦ２１０は、フラグメントされる前のパケットＰ２００からフラグメントされたパケットの中で最初に受信されたので、受信済後続パケットエントリ１４８には、既に受信されたフラグメント後続パケットの後続フラグメント識別子は登録されていない。そのため、検索はヒットせず、フラグメント先頭パケットＦ２１０に対する処理は終了する。
【００６８】
（フラグメント先頭パケットの後に受信されたフラグメント後続パケットに対する処理）
次に、図６、および図１０Ａ〜図１０Ｄを参照して説明されたフラグメント先頭パケットＦ２１０の後に受信されたフラグメント後続パケットに対する処理を説明する。以下では、図７、図１１Ａおよび図１１Ｂを参照しながら説明を行う。パケット処理装置１００の物理媒体（ポート１）１１０Ａ〜物理媒体（ポートＮ）１１０Ｎの各ポートで受信された信号は、物理終端部１２０で処理が行われ、処理が行われた結果のパケットが受信パケット処理部１３０で受信される。
【００６９】
受信パケット処理部１３０でパケットが受信されると、ステップＳ５０２で、受信されたフラグメント後続パケットＦ２２０は、パケットバッファ部１３２に格納される。次いで、ステップＳ５０４で、識別子抽出部１３４は、ステップＳ５０２で格納されたフラグメント後続パケットＦ２２０から複数の識別子を抽出する。
【００７０】
さらに、ステップＳ５０６で、後続フラグメント処理決定部３０８は、ステップＳ５０４で抽出された複数の識別子の組み合わせである後続フラグメント識別子２５６に基づき、フラグメント識別子エントリ１４４を検索する。フラグメント識別子エントリ１４４には、ステップＳ４１４で既に先頭フラグメント識別子２５４が登録されているので検索はヒットし、ステップＳ５０８で、後続フラグメント処理決定部３０８は、検索結果として先頭フラグメント識別子２５４が登録されたエントリ番号ＦＥ（１）を取得する。
【００７１】
その後、ステップＳ５１０で、後続フラグメント処理決定部３０８は、後続パケットエントリテーブル１４６の、ステップＳ５０８で取得したエントリ番号ＦＥ（１）のアドレスに登録されているデータを読み込む。このとき、後続パケットエントリテーブル１４６には、ステップＳ４０８で得られたパケット識別子エントリのエントリ番号が、ステップＳ４１６で既に登録されている。そのため、ステップＳ５１２で、後続フラグメント処理決定部３０８は、ステップＳ４０８でフラグメント先頭パケットＦ２１０に対して得られた検索結果と同じＰＥ（１）を取得する。
【００７２】
次いで、ステップＳ５１４で、後続フラグメント処理決定部３０８は、ステップＳ５１２で取得したＰＥ（１）をパケット処理実行部１３６に通知する。パケット処理実行部１３６は、フラグメント後続パケットＦ２２０に対して、通知されたＰＥ（１）に基づくパケット処理を行う。その後、ステップＳ５１６で、パケット処理実行部１３６は、フラグメント先頭パケットＦ２２０に対するパケット処理が完了したことをパケットバッファ部１３２に通知し、パケットバッファ部１３２に格納されたフラグメント先頭パケットＦ２２０に対応するバッファ領域が解放される。
【００７３】
（フラグメント先頭パケットの後にフラグメント後続パケットを受信）
次に、図８、図９、図１２Ａおよび図１２Ｂ、および図１３Ａ〜図１３Ｄを参照しながら、フラグメントされたパケットの中で、フラグメント後続パケットを最初に受信し、その後フラグメント先頭パケットを受信した場合に、本実施形態にかかる受信パケット処理部で行われる処理を説明する。図８は、フラグメント後続パケットを最初に受信した場合のフラグメント後続パケットに対する処理を示したフローチャートである。図９は、フラグメント後続パケットを最初に受信した場合のフラグメント先頭パケットに対する処理を示したフローチャートである。
【００７４】
図１２Ａおよび図１２Ｂは、フラグメント後続パケットを最初に受信した場合のフラグメント後続パケットに対する処理に伴うＣＡＭ１４０の各テーブルのデータ構成を示している。図１２Ａは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図１２Ｂは、受信済後続パケットエントリのデータ構成の一例を示した図表である。
【００７５】
図１３Ａ〜図１３Ｄは、フラグメント後続パケットを最初に受信した場合のフラグメント先頭パケットに対する処理に伴うＣＡＭ１４０の各テーブルのデータ構成を示している。
図１３Ａは、パケット識別子エントリのデータ構成の一例を示した図表である。図１３Ｂは、フラグメント識別子エントリのデータ構成の一例を示した図表である。図１３Ｃは、後続パケットエントリテーブルのデータ構成の一例を示した図表である。図１３Ｄは、受信済後続パケットエントリのデータ構成の一例を示した図表である。以下の説明では、後続フラグメント識別子としてＭＡＣ２、ＩＰ２、およびＩＤ２を有するフラグメント後続パケット（以下、フラグメントパケットＦ２４０と称す）が最初に受信されるとして説明する。その後に、パケット識別子としてＭＡＣ２、ＩＰ２、ＵＰ２を有し、かつ、先頭フラグメント識別子としてＭＡＣ２、ＩＰ２、ＩＤ２を有するフラグメント先頭パケット（以下、フラグメントパケットＦ２４５と称す）が受信されるとして説明する。
【００７６】
（最初に受信されたフラグメント後続パケットに対する処理）
まず、図８、および図１２Ａおよび図１２Ｂを参照ながら、最初に受信されたフラグメント後続パケットに対する処理を説明する。パケット処理装置１００の物理媒体（ポート１）１１０Ａ〜物理媒体（ポートＮ）１１０Ｎの各ポートで受信された信号は、物理終端部１２０で処理が行われ、処理が行われた結果のパケットが受信パケット処理部１３０で受信される。
【００７７】
受信パケット処理部１３０でパケットが受信されると、ステップＳ６０２で、受信されたフラグメント後続パケットＦ２４０は、パケットバッファ部１３２に格納される。次いで、ステップＳ６０４で、識別子抽出部１３４は、ステップＳ６０２で格納されたフラグメント後続パケットＦ２４０から複数の識別子を抽出する。
【００７８】
さらに、ステップＳ６０６で、後続フラグメント処理決定部３０８は、ステップＳ６０４で抽出された複数の識別子の組み合わせである後続フラグメント識別子に基づき、フラグメント識別子エントリ１４４を検索する。フラグメント後続パケットであるフラグメントパケットＦ２４０は、フラグメント先頭パケットであるフラグメントパケットＦ２４５より先に受信されたので、フラグメント識別子エントリ１４４には、フラグメントパケットＦ２４５の先頭フラグメント識別子は登録されていない。そのため、検索はヒットしない。
【００７９】
その後、ステップＳ６０８で、後続フラグメント識別子登録部３１０は、ステップＳ６０４で抽出された後続フラグメント識別子を受信済後続パケットエントリ１４８に登録する。ここで、フラグメント後続パケットであるフラグメントパケットＦ２４０は、パケット処理が行われていないため、パケットバッファ部１３２に保持されている。
【００８０】
（フラグメント後続パケットの後に受信されたフラグメント先頭パケットに対する処理）
次に、図８、および図１２Ａおよび図１２Ｂを参照して説明されたフラグメント後続パケットであるフラグメントパケットＦ２４０の後に受信されたフラグメント先頭パケットに対する処理を説明する。以下では、図９、図１３Ａ〜図１３Ｄを参照しながら説明を行う。パケット処理装置１００の物理媒体（ポート１）１１０Ａ〜物理媒体（ポートＮ）１１０Ｎの各ポートで受信された信号は、物理終端部１２０で処理が行われ、処理が行われた結果のパケットが受信パケット処理部１３０で受信される。
【００８１】
受信パケット処理部１３０でパケットが受信されると、ステップＳ７０２で、受信されたフラグメント先頭パケットＦ２４５は、パケットバッファ部１３２に格納される。次いで、ステップＳ７０４で、識別子抽出部１３４は、ステップＳ７０２で格納されたフラグメント先頭パケットＦ２４５から複数の識別子を抽出する。さらに、ステップＳ７０６で、先頭フラグメント処理決定部３０２は、ステップＳ７０４で抽出されたパケット識別子に基づき、パケット識別子エントリ１４２を検索する。
【００８２】
図１３Ａの例では、検索の結果、パケット識別子は、パケット識別子エントリ１４２のエントリ番号ＰＥ（２）に登録された識別子と一致する（ヒットする）ので、ステップＳ７０８で、先頭フラグメント処理決定部３０２は、パケット識別子のエントリ番号ＰＥ（２）を取得する。
【００８３】
次いで、ステップＳ７１０で、先頭フラグメント処理決定部３０２は、ステップＳ７０８で取得したパケット識別子エントリのエントリ番号ＰＥ（２）をパケット処理実行部１３６に通知する。パケット処理実行部１３６は、フラグメント先頭パケットＦ２４５に対して、通知されたパケット識別子エントリのエントリ番号ＰＥ（２）に基づくパケット処理を行う。その後、ステップＳ７１２で、パケット処理実行部１３６は、フラグメント先頭パケットＦ２４５に対するパケット処理が完了したことをパケットバッファ部１３２に通知し、パケットバッファ部１３２に格納されたフラグメント先頭パケットＦ２４５に対応するバッファ領域が解放される。
【００８４】
次いで、ステップＳ７１４で、先頭フラグメント識別子登録部３０４は、ステップＳ７０４で抽出された先頭フラグメント識別子をフラグメント識別子エントリ１４４に登録する。図１３Ｂの例では、先頭フラグメント識別子は、エントリ番号ＦＥ（２）に登録される。
【００８５】
さらに、ステップＳ７１６で、関連付け部３０６は、後続パケットエントリテーブルの、ステップＳ７１４で先頭フラグメント識別子を登録したエントリ番号ＦＥ（２）と一致するアドレスに、ステップＳ７０８で取得したエントリ番号ＰＥ（２）をデータとして登録する。これによって、フラグメントパケットＦ２４５以降に受信されるフラグメント後続パケットは、図７、および図１１Ａおよび図１１Ｂを参照して説明された手順に従って、パケット処理が行われることが可能となる。
【００８６】
その後、ステップＳ７１８で、後続フラグメント識別子検索部３１２は、受信済後続パケットエントリ１４８を検索する。フラグメント先頭パケットＦ２４５は、フラグメント後続パケットＦ２４０の後に受信されたので、受信済後続パケットエントリ１４８には、既に受信されたフラグメント後続パケットＦ２４０の後続フラグメント識別子が登録されている。そのため、検索はヒットし、ステップＳ７２０で、後続フラグメント識別子検索部３１２は、ステップＳ６０８で登録されたフラグメント後続パケットＦ２４０の後続フラグメント識別子を取得する。これにより、既にフラグメント後続パケットＦ２４０が受信されていることが後続フラグメント処理決定部３０８で認識される。
【００８７】
その後、ステップＳ７２２では、ステップＳ７１８で取得された後続フラグメント識別子に基づき、パケットバッファ部１３２に保持されていたフラグメント後続パケットＦ２４０に対してパケット処理が行われる。ステップＳ７２２では、図７に示されたステップＳ５０６〜ステップＳ５１６に従って、フラグメント後続パケットＦ２４０に対するパケット処理が行われる。これにより、フラグメント後続パケットＦ２４０は、ステップＳ７０８で取得したパケット識別子エントリのエントリ番号ＰＥ（２）と同じエントリ番号を取得できる。そのため、パケット処理実行部１３６は、フラグメント後続パケットＦ２４０に対して、フラグメント先頭パケットＦ２４５に対して行われたパケット処理と同じパケット処理を行うことができる。
【００８８】
以上説明したように、ネットワークの中継機器等のパケット処理装置において、通過するフラグメントパケットに対して、フラグメントされる前のパケット全体についてＩＰより上位のプロトコルに従って処理を行う場合、フラグメントパケットからフラグメントされる前のパケットを再構成する必要がない。そのため、パケットを再構成するために、フラグメント化された全てのフラグメントパケットをバッファメモリに格納する必要がない。また、フラグメント先頭パケット、および、フラグメント先頭パケットより後に到着するフラグメント後続パケットは、受信された後すぐにパケット処理され、フラグメントパケットを格納していたバッファは、すぐに解放される。そのためバッファメモリ量を削減でき、装置コストも抑えることが可能となる。
【００８９】
以下で、一例として、フラグメントされる前のパケットサイズが最大１０キロバイトのパケットを同時に１０パケット処理したい場合について、従来と本実施形態とで必要とされるバッファメモリ量を比較する。１０キロバイトのパケットは、１キロバイトのフラグメントパケットにフラグメントされてネットワーク上で送信されているとする。
【００９０】
従来のように、全てのフラグメントパケットに対して再構成してパケット処理を行う場合に必要とされるバッファメモリ量は、以下のとおりである。
【００９１】
【数１】
0005092842.tif 000002
【００９２】
一方、本実施形態にかかるパケット処理装置では、フラグメントされ本装置には先頭パケットから順に到着する場合には、フラグメントパケットは到着後直ぐに処理される。そのため、必要とされるバッファメモリ量は、１パケットあたり１フラグメントパケットサイズとなる。そのため、同時に１０パケット処理したい場合に必要とされるバッファメモリ量は、以下のとおりである。
【００９３】
【数２】
0005092842.tif 000003
【００９４】
このように、前述された例の場合、本実施形態にかかるパケット処理装置１００で必要とされるバッファメモリ量は、従来の１／１０に低減することが可能である。
【００９５】
さらに、前述されたように、本実施形態にかかるパケット処理装置１００は、フラグメントパケットを受信された後すぐにパケット処理するので、パケットがバッファ内に格納される時間が短い。そのため、パケットがパケット処理装置１００をすることにより発生するレイテンシを抑制することができる。
【００９６】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【００９７】
本実施形態では、フラグメントパケットを識別するためのフラグメント識別子を構成する要素として、ＭＡＣヘッダから抽出されるＭＡＣアドレス等の識別子の組合せデータと、ＩＰヘッダから抽出されるＩＰアドレス等の識別子の組合せデータと、フラグメントＩＤ（ＩＤ）を使用しているが、フラグメント識別子の構成はこれに限定されるものではない。例えば、ＭＡＣヘッダから抽出される識別子の組合せデータが使用されなくてもよい。また、例えば、ＭＦやオフセット等の他の識別子が使用されてもよい。
【図面の簡単な説明】
【００９８】
【図１】本発明の第１の実施形態にかかるパケット処理装置を利用した通信システムの一例を示すシステム構成図である。
【図２】パケットのフラグメントの一例を示す説明図である。
【図３】本発明の第１の実施形態にかかるパケット処理装置の機能ブロック図である。
【図４】本発明の第１の実施形態にかかる受信パケット処理部の機能ブロック図である。
【図５】フラグメントパケットから抽出される識別子の一例を示す図表である。
【図６】フラグメント先頭パケットに対する処理を示すフローチャートである。
【図７】フラグメント後続パケットに対する処理を示すフローチャートである。
【図８】フラグメント後続パケットに対する処理を示すフローチャートである。
【図９】フラグメント先頭パケットに対する処理を示すフローチャートである。
【図１０Ａ】パケット識別子エントリのデータ構成の一例を示した図表である。
【図１０Ｂ】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図１０Ｃ】後続パケットエントリテーブルのデータ構成の一例を示した図表である。
【図１０Ｄ】受信済後続パケットエントリのデータ構成の一例を示した図表である。
【図１１Ａ】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図１１Ｂ】後続パケットエントリテーブルのデータ構成の一例を示した図表である。
【図１２Ａ】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図１２Ｂ】受信済後続パケットエントリのデータ構成の一例を示した図表である。
【図１３Ａ】パケット識別子エントリのデータ構成の一例を示した図表である。
【図１３Ｂ】フラグメント識別子エントリのデータ構成の一例を示した図表である。
【図１３Ｃ】後続パケットエントリテーブルのデータ構成の一例を示した図表である。
【図１３Ｄ】受信済後続パケットエントリのデータ構成の一例を示した図表である。
【符号の説明】
【００９９】
１００    パケット処理装置
１３０    受信パケット処理部
１３２    パケットバッファ部
１３４    識別子抽出部
１３６    パケット処理実行部
１４０    ＣＡＭ
３００    検索管理部
３０２    先頭フラグメント処理決定部
３０４    先頭フラグメント識別子登録部
３０６    関連付け部
３０８    後続フラグメント処理決定部
３１０    後続フラグメント識別子登録部
３１２    後続フラグメント識別子検索部
【図１】
0005092842.tif 000004
【図２】
0005092842.tif 000005
【図３】
0005092842.tif 000006
【図４】
0005092842.tif 000007
【図５】
0005092842.tif 000008
【図６】
0005092842.tif 000009
【図７】
0005092842.tif 000010
【図８】
0005092842.tif 000011
【図９】
0005092842.tif 000012
【図１０Ａ】
0005092842.tif 000013
【図１０Ｂ】
0005092842.tif 000014
【図１０Ｃ】
0005092842.tif 000015
【図１０Ｄ】
0005092842.tif 000016
【図１１Ａ】
0005092842.tif 000017
【図１１Ｂ】
0005092842.tif 000018
【図１２Ａ】
0005092842.tif 000019
【図１２Ｂ】
0005092842.tif 000020
【図１３Ａ】
0005092842.tif 000021
【図１３Ｂ】
0005092842.tif 000022
【図１３Ｃ】
0005092842.tif 000023
【図１３Ｄ】
0005092842.tif 000024