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