(57)【要約】【課題】  受信した複数のパケットを解析し、ラージパケットを生成する通信装置が、レイテンシが小さいメモリに解析結果を格納できなくなった場合であっても、パケットの受信処理の高速化を実現することを目的とする。【解決手段】  第一のメモリと、第一のメモリよりレイテンシが小さい第二のメモリとを備える通信装置が、受信した複数のパケットを解析し、その解析結果からラージパケット生成する場合に、パケットの解析結果を第二のメモリに格納できなくなったことに基づいて解析を中断し、第二のメモリから第一のメモリに解析結果を出力した後、パケットの解析を再開する。【選択図】  図５
2019193005.tif 000002
【特許請求の範囲】
【請求項１】
第一のメモリと、前記第一のメモリよりレイテンシが小さい第二のメモリとを有する通信装置であって、
他の通信装置から受信した複数のパケットの夫々を解析する解析手段と、
前記解析手段により得られた、前記複数のパケットの夫々をグルーピングするためのグループ情報と、前記解析手段による解析を行ったパケットに関する情報であるパケット情報とが含まれる解析結果を前記第二のメモリに格納する格納手段と、
前記格納手段による前記解析結果の前記第二のメモリへの格納を行えなくなったことに基づいて前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力する第一の出力手段と、
前記第一の出力手段により出力した前記解析結果に基づいて、前記複数のパケットの内、前記グループ情報が一致するパケットのペイロードを連結したラージデータに、ＴＣＰヘッダとＵＤＰヘッダとＩＰヘッダとの少なくとも何れか一つを付加することでラージパケットを生成する生成手段と、
前記生成手段により生成した前記ラージパケットのプロトコル処理を行うプロトコル処理手段と、を有し、
前記解析手段は前記第二のメモリへの前記解析結果の格納が行えなくなったことに基づいて解析を中断し、前記第一の出力手段による前記解析結果の出力が行われた後に解析を再開することを特徴とする通信装置。
【請求項２】
前記格納手段により前記解析結果を前記第二のメモリに格納する場合に、新たに格納する前記解析結果に含まれる前記グループ情報が、既に前記第二のメモリに格納されている場合、新たに格納する前記解析結果に含まれる前記グループ情報は格納せず、新たに格納する前記解析結果に含まれる前記グループ情報が、前記第二のメモリに格納されていない場合、新たに格納する前記解析結果に含まれる前記グループ情報を格納することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記解析手段により前記複数のパケットを解析する前に、前記第二のメモリに格納できる前記グループ情報の数の最大値を決定する第一の決定手段を更に有し、
前記格納手段により新たに格納する前記解析結果に含まれる前記グループ情報を前記第二のメモリに格納する場合に、前記第二のメモリに格納されている前記グループ情報の数が、前記第一の決定手段により決定した前記グループ情報の数の最大値に達していることに基づいて、前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記格納手段により新たに格納する前記解析結果に含まれる前記グループ情報を前記第二のメモリに格納する場合に、前記第二のメモリに格納されている前記グループ情報の数が、静的に決められている前記グループ情報の数の最大値に達していることに基づいて、前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力することを特徴とする請求項１または２に記載の通信装置。
【請求項５】
前記生成手段は、前記複数のパケットの内、前記グループ情報が一致するパケットのペイロードを、前記パケット情報に含まれるシーケンスナンバーの順に連結することで、前記ラージパケットを生成することを特徴とする請求項１から４の何れか一項に記載の通信装置。
【請求項６】
前記解析手段により前記複数のパケットを解析する前に、前記第二のメモリに前記グループ情報毎に格納できる前記パケット情報の数の最大値を決定する第二の決定手段を更に有し、
前記格納手段は、新たに格納する前記解析結果に含まれる前記グループ情報に格納されている前記パケット情報の数が前記第二の決定手段により決定した最大値に達していることに基づいて、前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力することを特徴とする請求項１から５の何れか一項に記載の通信装置。
【請求項７】
前記格納手段は、新たに格納する前記解析結果に含まれる前記グループ情報に基づいて前記第二のメモリに格納されている前記パケット情報の数が、静的に決められている前記グループ情報毎に格納できる前記パケット情報の数の最大値に達していることに基づいて、前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力することを特徴とする請求項１から５の何れか一項に記載の通信装置。
【請求項８】
前記パケット情報には、前記解析手段により解析を行ったパケットの識別子であるパケットナンバーと、チェックサムと、シーケンスナンバーとが含まれることを特徴とする請求項１から７の何れか一項に記載の通信装置。
【請求項９】
前記グループ情報には、ＩＰアドレスと、ポート番号と、プロトコル種別とが含まれることを特徴とする請求項１から８の何れか一項に記載の通信装置。
【請求項１０】
前記生成手段が前記ラージデータに付加するＩＰヘッダは、前記グループ情報に含まれる前記ＩＰアドレスに基づいて生成されることを特徴とする請求項９に記載の通信装置。
【請求項１１】
前記生成手段は、前記グループ情報に含まれる前記プロトコル種別がＵＤＰである場合は前記ラージデータにＵＤＰヘッダを付加し、前記プロトコル種別がＴＣＰである場合は前記ラージデータにＴＣＰヘッダを付加し、前記生成手段が前記ラージデータに付加するＵＤＰヘッダもしくはＴＣＰヘッダは、前記グループ情報に含まれる前記ポート番号に基づいて生成されることを特徴とする請求項９または１０に記載の通信装置。
【請求項１２】
前記解析手段により前記複数のパケットの解析を行う場合に、前記複数のパケットの解析が終了したことに基づいて、前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力する第二の出力手段を更に有し、
前記生成手段は、前記第一の出力手段および前記第二の出力手段が出力した前記解析結果に基づいて、前記複数のパケットから前記ラージパケットを生成することを特徴とする請求項１から１１の何れか一項に記載の通信装置。
【請求項１３】
前記プロトコル処理手段は、前記プロトコル処理として、ＩＰのプロトコル処理を行った後に、ＴＣＰもしくはＵＤＰのプロトコル処理を行うことを特徴とする請求項１から１２の何れか一項に記載の通信装置。
【請求項１４】
前記生成手段は、前記ラージデータに更にイーサネットヘッダを付加することで前記ラージパケットを生成し、
前記プロトコル処理手段は、ＩＰのプロトコル処理の前にイーサネットのプロトコル処理を行うことを特徴とする請求項１３に記載の通信装置。
【請求項１５】
第一のメモリと、前記第一のメモリよりレイテンシが小さい第二のメモリとを有する通信装置の制御方法であって、
他の通信装置から受信した複数のパケットを解析する解析工程と、
前記解析工程により得られた、前記複数のパケットの夫々をグルーピングするためのグループ情報が含まれる解析結果を前記第二のメモリに格納する格納工程と、
前記格納工程による前記第二のメモリへの前記解析結果の格納が行えなくなったことに基づいて、前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力する出力工程と、
前記出力工程により前記第一のメモリに出力された前記解析結果に基づいて、前記複数のパケットの内、前記グループ情報が一致するパケットのペイロードを連結したラージデータに、ＴＣＰヘッダとＵＤＰヘッダとＩＰヘッダとの少なくとも何れか一つを付加することでラージパケットを生成する生成工程と、
前記生成工程により生成した前記ラージパケットのプロトコル処理を行うプロトコル処理工程と、を有し、
前記第二のメモリへの前記解析結果の格納が行えなくなったことに基づいて前記解析工程による解析を中断し、前記出力工程による前記解析結果の出力が行われた後に、前記解析工程による解析を再生することを特徴とする制御方法。
【請求項１６】
コンピュータを、請求項１から１４の何れか一項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置におけるパケット処理に関する。
【背景技術】
【０００２】
通信装置におけるデータ通信を行う通信プロトコルとして広く利用されているＴＣＰ／ＩＰやＵＤＰ／ＩＰにおける処理速度の向上として、パケットの受信処理の高速化が望まれている。ＴＣＰはＴｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌの、ＩＰはＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌの、ＵＤＰはＵｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌの夫々略である。
【０００３】
特許文献１には、受信したＭＴＵ以下の複数のパケットのペイロードをコネクション毎に連結し、ＭＴＵを超えるデータサイズのラージパケットを生成することで受信処理を高速化することについて開示されている。なお、ＭＴＵとはＭａｘｉｍｕｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｕｎｉｔの略である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２６６７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
受信した複数のパケットを解析し、解析結果に基づいて複数のパケットからラージパケットを生成する場合、通信装置は解析結果を常にレイテンシが小さいメモリに格納することで処理速度を向上させることができる。しかし、レイテンシが小さいメモリは高価であるため、システムによっては十分な記憶容量のメモリを用意することが困難な場合がある。そのため、受信したパケットの数によっては、レイテンシが小さいメモリの記憶容量が不足する場合がある。一方、該メモリと比べてレイテンシが大きいメモリは安価であるため、十分な記憶容量を用意しやすいというメリットがあるが、このようなメモリに常にパケットの解析結果を格納することは、処理速度の低下につながる恐れがある。
【０００６】
上記を鑑み、本発明は、受信した複数のパケットを解析し、ラージパケットを生成する通信装置が、解析結果をレイテンシが小さいメモリに格納できなくなった場合であっても、パケットの受信処理の高速化を実現することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の通信装置は、第一のメモリと、前記第一のメモリよりレイテンシが小さい第二のメモリとを有する通信装置であって、他の通信装置から受信した複数のパケットの夫々を解析する解析手段と、前記解析手段により得られた、前記複数のパケットの夫々をグルーピングするためのグループ情報と、前記解析手段による解析を行ったパケットに関する情報であるパケット情報とが含まれる解析結果を前記第二のメモリに格納する格納手段と、前記格納手段による前記解析結果の前記第二のメモリへの格納を行えなくなったことに基づいて前記第二のメモリに格納されている前記解析結果を前記第一のメモリに出力する第一の出力手段と、前記第一の出力手段により出力した前記解析結果に基づいて、前記複数のパケットの内、前記グループ情報が一致するパケットのペイロードを連結したラージデータに、ＴＣＰヘッダとＵＤＰヘッダとＩＰヘッダとの少なくとも何れか一つを付加することでラージパケットを生成する生成手段と、前記生成手段により生成した前記ラージパケットのプロトコル処理を行うプロトコル処理手段と、を有し、前記解析手段は前記第二のメモリへの前記解析結果の格納が行えなくなったことに基づいて解析を中断し、前記第一の出力手段による前記解析結果の出力が行われた後に解析を再開する。
【発明の効果】
【０００８】
本発明によれば、受信した複数のパケットを解析し、ラージパケットを生成する通信装置が、解析結果をレイテンシが小さいメモリに格納できなくなった場合であっても、パケットの受信処理の高速化を実現できる。
【図面の簡単な説明】
【０００９】
【図１】通信装置１００のハードウェア構成を示す図である。
【図２】通信装置１００の解析部１１０が行うパケットの解析処理の概要を示す図である。
【図３】通信装置１００の解析部１１０が主記憶部１２０に出力する解析結果の一例を示す図である。
【図４】通信装置１００の通信制御部１０１が行うラージパケットの生成処理の概要を示す図である。
【図５】通信装置１００が受信したパケットの解析処理と、ラージパケットの生成処理を行う際に実行する処理を示すフローチャートである。
【図６】通信装置１００がパケットの解析処理とラージパケットの生成処理を行う際に実行する処理の一例を示すシーケンス図である。
【図７】通信装置１００がパケットの解析処理とラージパケットの生成処理を行い、パケットの解析処理の途中で一時記憶部から主記憶部に解析結果を出力する際に実行する処理の一例を示すシーケンス図である。
【図８】通信装置１００が解析処理を行う際に、解析部１１０内の格納部１１４が実行する処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して実施形態を詳細に説明する。なお、以下の実施形態に示す構成は一例に過ぎず、本発明に図示された構成に限定されるものではない。
【００１１】
図１に、本実施形態に係る通信装置１００のハードウェア構成を示す。
【００１２】
本実施形態において、通信装置１００は、受信した複数の通信パケットからラージパケットを生成することで、通信パケットの受信処理の高速化を実現する。ラージパケットは、ラージデータと、ＴＣＰ（あるいはＵＤＰ）ヘッダ、ＩＰヘッダ、およびイーサネット（登録商標）ヘッダを含む。ラージデータは、通信装置１００が受信した複数の通信パケットのペイロードを連結することで生成されるデータであって、元となる通信パケットにシーケンスナンバーが振られている場合、シーケンスナンバーの順に連結される。
【００１３】
通信装置１００は、ラージパケットを生成すると、生成したラージパケットの受信処理として、ソフトウェアによる通信パケットのプロトコル処理を行い、アプリケーションに必要なデータを抽出する。そして、通信装置１００は抽出したデータをアプリケーションからアクセス可能な所定のメモリ領域にコピーし、アプリケーションにデータをコピーしたことを通知することで、通信パケットの受信処理が完了する。
【００１４】
ラージパケットを生成しない場合、通信装置１００は上記のソフトウェアによる通信パケットのプロトコル処理を、受信した通信パケット毎に行うことになる。そのため、通信装置１００はラージパケットを生成することで、複数の通信パケット分について、まとめてプロトコル処理を行うことができ、受信した通信パケット数当たりのプロトコル処理の回数を減らすことができる。そのため、通信装置１００はラージパケットを生成することで、通信パケットの受信処理の高速化を実現することができる。
【００１５】
本実施形態において、通信装置１００のバス１０２には、通信制御部１０１、インターフェース１０３、主記憶部１２０、および解析部１１０が接続されている。
【００１６】
通信制御部１０１は、主記憶部１２０に記憶されたコンピュータプログラムを実行することにより、通信装置１００が他の通信装置とネットワーク１０４を介した通信を実行する際に必要となる各種制御を担う。具体的には、通信制御部１０１は、インターフェース１０３、解析部１１０、および主記憶部１２０の制御を行う。また、通信制御部１０１は、後述の解析部１１０から出力される解析結果であるグルーピング結果２５１に基づいて、受信した複数の通信パケットからラージパケットの生成処理を行う。通信制御部１０１が行うラージパケットの生成処理の詳細については後述の図４で説明する。
【００１７】
更に通信制御部１０１は、各種通信パケットの送受信に必要となるプロトコル処理を行う。なお通信制御部１０１は、生成したラージパケットのプロトコル処理も行う。具体的には通信制御部１０１は、まずラージパケットにイーサネットのヘッダが含まれる場合、ヘッダに含まれるタイプを参照することで、イーサネットの上位のプロトコルの種類を確認する。ここで、イーサネットの上位のプロトコルとは、例えばＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６）などである。
【００１８】
続いて、通信制御部１０１は、例えばイーサネットのヘッダに含まれるタイプがＩＰｖ４やＩＰｖ６を示していた場合、ラージパケットのＩＰヘッダに含まれる宛先ＩＰアドレスと通信装置１００のＩＰアドレスが一致するかを確認する。また、通信制御部１０１は、ＩＰヘッダに含まれるプロトコルを参照し、ＩＰヘッダの次のヘッダのプロトコルが何であるかを確認する。ＩＰヘッダの次のヘッダのプロトコルとは、例えばＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などである。
【００１９】
通信制御部１０１は、宛先ＩＰアドレスと自装置のＩＰアドレスが一致している場合であって、例えばＩＰヘッダの次のヘッダのプロトコルの種類がＴＣＰであることが示された場合、ＴＣＰヘッダの解析を行う。通信制御部１０１はラージパケットのＴＣＰヘッダに含まれるシーケンスナンバーから、パケットを順番通りに受信しているかを確認する。また、通信制御部１０１はＴＣＰヘッダに含まれる宛先ポート番号から、ラージパケットに含まれているデータを渡すべきアプリケーションを特定し、また該アプリケーションに渡すデータを抽出する。
【００２０】
なお通信制御部１０１は、ＩＰヘッダの次のヘッダのプロトコルの種類がＵＤＰであった場合、プロトコル処理としてＵＤＰヘッダの解析を行う。この場合、ＵＤＰヘッダにはシーケンスナンバーは含まれないことから、パケットを順番通りに受信しているかの確認は行わない。通信制御部１０１は、ＴＣＰヘッダの場合と同様に、ＵＤＰヘッダに含まれる宛先ポート番号からデータを渡すべきアプリケーションを特定し、該アプリケーションに渡すデータを抽出する。
【００２１】
インターフェース１０３は、ネットワーク１０４と通信装置１００とを接続する機能を担う。またインターフェース１０３は、主記憶部１２０に格納された通信パケットを、ネットワーク１０４を介して送信したり、ネットワーク１０４から受信した通信パケットを主記憶部１２０に格納したりする機能を持つ。インターフェース１０３は、通信パケットの送信や受信などの各種の処理を完了すると、通信制御部１０１に通知信号Ａ１０６を送信する。
【００２２】
主記憶部１２０は、通信装置１００におけるメインメモリであって、インターフェース１０３を介してネットワーク１０４より受信した通信パケットを格納するために用いられる。また、主記憶部１２０には、通信制御部１０１が実行するコンピュータプログラムが格納される。主記憶部１２０は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であって、後述する一時記憶部１１６よりレイテンシが大きいメモリである。
【００２３】
ここで、レイテンシとはメモリに対してデータの書き込みが指示されてから応答を返すまでの時間を指し、レイテンシが小さいメモリとは、データの書き込み速度が速いメモリを指す。あるいは、レイテンシとはメモリに対してデータの読み込みが指示されてから応答を返すまでの時間が指してもよく、レイテンシが小さいメモリとは、データの読み込み速度が速いメモリを指してもよいし、データの書き込みと読み込みの両方の速度が速いメモリを指してもよい。あるいは、データの書き込みもしくは読み込みの何れか一方の速度が同じ場合、もう一方の速度が速いメモリをレイテンシが小さいメモリとしてもよい。
【００２４】
解析部１１０は、通信制御部１０１が行う各種の処理のうち、通信パケットの受信に係る処理の一部をアシストする機能を持つ。解析部１１０が行う処理については、図２および図３を用いて説明する。
【００２５】
図２は、解析部１１０が行うパケットの解析処理の概要を示す図である。なお、通信装置１００は、ネットワーク１０４から受信した通信パケットを主記憶部１２０に格納しているものとする。
【００２６】
まず、通信装置１００がネットワーク１０４を介して通信パケットを受信すると、インターフェース１０３は受信した通信パケットを主記憶部１２０に格納し、通信制御部１０１に通知信号Ａ１０６を送信する。通信制御部１０１は、通知信号Ａ１０６を受信すると、解析部１１０に、主記憶部１２０に格納されている複数の受信済みの通信パケット２５０の解析処理を要求するための解析処理要求２５２を送信する。
【００２７】
解析部１１０は、通信制御部１０１から解析処理要求２５２を受けると、主記憶部１２０に格納されている複数の受信済みの通信パケット２５０のグルーピングを行い、その処理結果であるグルーピング結果２５１を主記憶部１２０に出力をする機能を有する。具体的には、通信制御部１０１は、解析部１１０に対する解析処理要求２５２として、各通信パケットが主記憶部１２０のどこに格納されているかを示すアドレスと、主記憶部１２０に格納されている通信パケットの合計パケット数を提示する。なお、解析処理要求２５２に含まれる通信パケットとは、通信装置１００の主記憶部１２０に格納されている全ての通信パケットのことを指す。あるいは、通信装置１００がネットワーク１０４から通信パケットを受信してから、所定の時間が経過するまでに受信した通信パケットのことであってもよい。あるいは、通信装置１００がネットワーク１０４から通信パケットを受信し、所定の時間が経過するまでに次の通信パケットを受信しなかった場合、それまでに受信した通信パケットのことであってもよい。
【００２８】
解析処理要求２５２を受けた解析部１１０は、主記憶部１２０に格納されていると提示された各通信パケットのヘッダを読み込み、解析処理を行う。解析部１１０は、解析処理として各通信パケットのヘッダに含まれるグループ情報に基づいて、各通信パケットのグルーピングを行い、その解析結果であるグルーピング結果２５１を解析部１１０内の一時記憶部１１６に格納する。そして、解析処理要求２５２で指定された全ての通信パケットの解析処理が終了すると、一時記憶部１１６から主記憶部１２０に解析結果を出力する。このとき、解析部１１０は、解析の対象となる通信パケットの各々に付与される識別子であるパケットナンバーを利用してグルーピングを行う。
【００２９】
図３は、解析部１１０が一時記憶部１１６から主記憶部１２０に出力するグルーピング結果２５１の一例を示す図である。解析部１１０は、各通信パケットのヘッダに含まれるグループ情報を解析し、グループ情報が一致した通信パケットは、同一のグループの通信パケットとしてグルーピングする。通信パケットのヘッダに含まれるグループ情報とは、（１）Ｓｒｃ／Ｄｓｔ  ＩＰアドレス、（２）Ｓｒｃ／Ｄｓｔ  ポート番号、（３）プロトコル種別の三種であって、解析部１１０はこの三種の情報が全て一致した通信パケットを同じグループの通信パケットとする。なお、ＳｒｃとはＳｏｕｒｃｅの、ＤｓｔとはＤｅｓｔｉｎａｔｉｏｎの略であり、夫々送信元と宛先のことである。なお、解析部１１０はグループ情報の内、少なくとも何れか一つの情報が異なっていた場合は、別のグループの通信パケットとして分類する。解析部１１０はグループ情報に基づいてグルーピングした通信パケットについて、グルーピング結果２５１を作成し、解析結果として出力する。グルーピング結果２５１には、グルーピングの結果として各グループのグループ情報３０５と、夫々のグループに属する通信パケットのパケット情報３０６とが含まれる。パケット情報には、各通信パケットに固有の情報とパケットナンバーとが含まれる。例えば通信パケットがＴＣＰ（ＵＤＰ）／ＩＰパケットである場合は、（５）ＩＰチェックサム、（６）ＴＣＰ（／ＵＤＰ）チェックサム、（７）ＴＣＰシーケンスナンバー（ＵＤＰの場合は無し）が通信パケットに固有の情報として、パケット情報に含まれる。なお、通信パケットがＴＣＰ／ＩＰパケットである場合、解析部１１０は、（７）ＴＣＰシーケンスナンバーを元に、各グループに格納されているパケットの順序をソートして、グルーピング結果２５１を出力してもよい。
【００３０】
以上のように、解析部１１０は通信装置１００が受信した複数の通信パケットを解析し、グルーピングを行い、その結果であるグルーピング結果２５１を解析結果として解析部１１０の一時記憶部１１６に格納する。そして解析処理要求で示された全ての通信パケットの解析が終了すると、解析部１１０は、主記憶部１２０にグルーピング結果２５１を格納する。
【００３１】
このような解析部１１０の機能を実現するための構成について説明する。
【００３２】
解析部１１０には、状態制御部１１１、レジスタ部１１２、解析処理部１１３、格納部１１４、出力部１１５、および一時記憶部１１６を備える。
【００３３】
状態制御部１１１は、解析部１１０の全体を制御する。
【００３４】
レジスタ部１１２は、通信制御部１０１が解析部１１０を使用するためのレジスタ群であって、通信制御部１０１が解析部１１０に対する解析処理要求をセットするためのレジスタや、解析部１１０の処理状態を表示するためのレジスタを備える。
【００３５】
解析処理部１１３は、主記憶部１２０に格納された通信パケットのヘッダ部分の読み取りを行い、解析処理を行う。そして解析処理部１１３は解析結果を格納部１１４に送信する。
【００３６】
格納部１１４は、解析処理部１１３から受信した解析結果を、一時記憶部１１６に格納する。格納部１１４は、一時記憶部１１６への解析結果の格納状態も管理しており、一時記憶部１１６の記憶容量が不足しており、解析結果を一時記憶部１１６に格納できない場合は、状態制御部１１１に対して通知を行う。また、受信した複数の通信パケットに対する解析処理が終了した場合は、通信制御部１０１に対して終了通知である通知信号Ｂ１０５を送信する。
【００３７】
出力部１１５は、受信した複数の通信パケットに対する解析処理が終了した場合に、一時記憶部１１６に格納された解析結果を主記憶部１２０に出力する機能を持つ。また、出力部１１５は、一時記憶部１１６の記憶容量が不足しており、解析結果を格納できない場合も、一時記憶部１１６から主記憶部１２０に解析結果を出力する。
【００３８】
一時記憶部１１６は、解析部１１０が通信パケットの解析処理を行っている場合に、解析結果が主記憶部１２０に出力されるまでの間に利用する各種情報を一時的に記憶するメモリである。一時記憶部１１６は、例えばＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であって、主記憶部１２０よりレイテンシが小さいメモリである。
【００３９】
上記のような構成を持つ解析部１１０が複数の通信パケットの解析を行い、その解析結果を主記憶部１２０に出力すると、通信制御部１０１が解析結果に基づいて、複数の通信パケットを利用したラージパケットの生成処理を行う。この場合に、通信制御部１０１が行う処理の概要を図４に示した。
【００４０】
図４では、図３のグルーピング結果２５１においてグループ２としてグルーピングされた通信パケットについて、通信制御部１０１がラージパケットの生成処理を行う場合を例として説明する。通信制御部１０１は、グルーピング結果２５１に含まれるグループ２の解析結果に基づいて、主記憶部１２０に格納されている複数の通信パケットのうち、グループ２にグルーピングされた通信パケットから、ラージパケット４０２を生成する。具体的には、通信制御部１０１は、グルーピング結果２５１から、同じグループに振り分けられた通信パケットについて、シーケンスナンバーの順に各通信パケットのペイロード部分を連結し、ラージデータ４０４を生成する。なお、ＵＤＰ／ＩＰパケットのグループの場合は、シーケンスナンバーではなく、パケット情報が格納されている順に各通信パケットのペイロード部分を連結し、ラージデータ４０４を生成する。
【００４１】
さらに通信制御部１０１は、ラージデータ４０４に対してラージパケットヘッダ４０３をつけることで、ラージパケット４０２を生成する。具体的には、通信制御部１０１は、ラージパケットヘッダ４０３として、ＴＣＰ（あるいはＵＤＰ）ヘッダ、ＩＰヘッダ、およびイーサネットヘッダをつける。
【００４２】
通信制御部１０１は、グループ情報に含まれるプロトコル種別から、ラージパケットヘッダ４０３として、ＴＣＰヘッダあるいはＵＤＰヘッダを生成する。この場合に、通信制御部１０１は、ラージデータ４０４の元となる通信パケットに共通のフィールドについては、解析処理の結果として得られた情報を含める。具体的には、グループ情報に含まれるＳｒｃ／Ｄｓｔ  ポート番号をＴＣＰヘッダあるいはＵＤＰヘッダに含める。なお、ＴＣＰヘッダあるいはＵＤＰヘッダのフィールドの内、チェックサムやシーケンスナンバーなど、ラージパケット４０２の元となる通信パケット毎に異なるフィールドについては、生成毎のラージデータ４０４に対応するように調整される。
【００４３】
更に通信制御部１０１は、ラージパケットヘッダ４０３としてＩＰヘッダを生成する。この場合に通信制御部１０１は、グループ情報に含まれるＳｒｃ／Ｄｓｔ  ＩＰアドレスをＩＰヘッダに含める。また、ＩＰヘッダのフィールドの内、チェックサムやパケット長など、ラージパケット４０２の元となる通信パケット毎に異なるフィールドについては、生成毎のラージデータ４０４に対応するように調整される。
【００４４】
また、通信制御部１０１は、ラージパケットヘッダとしてイーサネットヘッダを生成する。通信制御部１０１は、ラージデータ４０４を生成する際に利用した通信パケットのイーサネットヘッダをコピーすることでイーサネットヘッダを生成する。そして通信制御部１０１は、生成したＴＣＰ（あるいはＵＤＰ）ヘッダ、ＩＰヘッダ、およびイーサネットヘッダをラージパケットヘッダ４０３として、ラージデータ４０４につける。
【００４５】
通信制御部１０１は、生成したラージパケット４０２に対してソフトウェアによるプロトコル処理などの受信処理を行う。
【００４６】
以上が、通信制御部１０１が行うラージパケットの生成処理の概要である。このように、一つのグループに所属する複数の通信パケットを１つのラージパケットに集約してプロトコル処理を行うことで、通信制御部１０１は一回のプロトコル処理で、複数の通信パケットのデータに対するプロトコル処理を行うことができる。そのため通信制御部１０１は、受信した複数の通信パケットの夫々について一回ずつプロトコル処理を行う必要がなくなるため、通信パケットの受信処理の効率が向上する。
【００４７】
なお本実施形態では、通信制御部１０１がラージパケットの生成処理を行ったが、これに限らず、通信制御部１０１と異なるハードウェアがラージパケットの生成などの処理を行ってもよい。
【００４８】
以上が、通信装置１００のハードウェア構成であって、通信装置１００は受信した複数のパケットからラージパケットを生成する生成処理を行う。
【００４９】
図５に、通信装置１００が通信パケットの解析と、ラージパケットの生成処理とを行う際に、主記憶部１２０に記憶されたコンピュータプログラムを通信装置１００の各部が読み出し、実行することで実現される処理のフローチャートである。本フローチャートは、通信装置１００が通信パケットを受信したことに基づいて開始される。
【００５０】
まず、通信装置１００の解析部１１０は、通信制御部１０１から解析処理要求２５２を受信したかを判定する（ステップＳ５０１）。解析処理要求２５２を受信しなかった場合（ステップＳ５０１のＮｏ）、解析部１１０は再度ステップＳ５０１の処理を行う。なお、通信装置１００は所定の回数、あるいは所定の時間ステップＳ５０１の判定を繰り返した場合、本フローチャートを終了してもよい。
【００５１】
一方、解析処理要求２５２を受信した場合（ステップＳ５０１のＹｅｓ）、解析部１１０は、全ての通信パケットの解析が終了したか判定する（ステップＳ５０２）。本ステップにおいて、解析部１１０はステップＳ５０１で受信した解析処理要求２５２に含まれていた全ての通信パケットに対する解析処理が終了したか否かに基づいて判定する。解析部１１０は、全ての通信パケットに対する解析処理が終了したと判定すると（ステップＳ５０２のＹｅｓ）、ステップＳ５１２の処理を行う。
【００５２】
一方、解析部１１０は、全ての通信パケットの解析処理が終了していないと判定すると（ステップＳ５０２のＮｏ）、まだ解析処理を行っていない通信パケットについて解析処理を行う（ステップＳ５０３）。なお、通信パケットの解析処理を開始する前に、一時記憶部１１６に格納できるグループ数の最大値（図３におけるグループｎの値）は、一時記憶部１１６の記憶容量に基づいて設定値として静的に決まっているものとする。同様に、グループ毎に格納できるパケット情報の最大値（図３におけるパケット情報ｍ）も、通信パケットの解析処理を開始する前に、一時記憶部１１６の記憶容量に基づいて設定値として静的に決まっているものとする。
【００５３】
解析部１１０は、ステップＳ５０３で行った解析処理の結果を一時記憶部１１６に格納するにあたって、一時記憶部１１６に新しいグループ情報の格納が必要かを判定する（ステップＳ５０４）。解析部１１０はステップＳ５０４において、一時記憶部１１６における解析結果の格納状況を参照し、ステップＳ５０３で得た解析結果を格納するために、新たなグループ情報を格納する必要があるかを判定する。具体的には、解析部１１０はステップＳ５０４で得た解析結果のグループ情報と、既に一時記憶部１１６に格納されているグループ情報とを比較し、一致しなかった場合は新しいグループ情報を格納する必要があると判定する（ステップＳ５０４のＹｅｓ）。一方、解析部１１０は、一時記憶部１１６に格納されているグループ情報の内、ステップＳ５０３で得た解析結果のグループ情報と一致するものがある場合は、新しいグループ情報を格納する必要が無いと判定する（ステップＳ５０４のＮｏ）。
【００５４】
解析部１１０は、ステップＳ５０４でＮｏと判定すると、対象のグループに新しいパケット情報の格納が可能かを判定する（ステップＳ５０５）。解析部１１０は、格納対象のグループに登録されているパケット情報の数が、格納可能なパケット情報の最大値に達している場合、対象のグループに新しいパケット情報の格納が可能ではないと判定する（ステップＳ５０５のＮｏ）。一方、解析部１１０は、格納対象のグループに登録されているパケット情報の数が、格納可能なパケット情報の最大値に達していない場合、対象のグループに新しいパケット情報の格納が可能であると判定する（ステップＳ５０５のＹｅｓ）。
【００５５】
解析部１１０は、ステップＳ５０５でＹｅｓと判定すると、ステップＳ５０３で得た解析結果を一時記憶部１１６に格納し（ステップＳ５０６）、ステップＳ５０２の処理を行う。
【００５６】
一方、解析部１１０はステップＳ５０４において解析結果を格納するために新しいグループ情報の格納が必要であると判定した場合（ステップＳ５０４のＹｅｓ）、新しいグループ情報の格納が可能であるかを判定する（ステップＳ５０７）。解析部１１０は、既に一時記憶部１１６に格納されているグループ情報の数が、一時記憶部１１６に格納可能なグループ情報の数の最大値に達している場合、新たなグループ情報の格納は可能ではないと判定する（ステップＳ５０７のＮｏ）。一方、解析部１１０は、既に一時記憶部１１６に格納されているグループ情報の数が、一時記憶部１１６に格納可能なグループ情報の数の最大値に達していない場合、新たなグループ情報の格納が可能であると判定する（ステップＳ５０７のＹｅｓ）。
【００５７】
解析部１１０は、新たなグループ情報の格納が可能であると判定すると（ステップＳ５０７のＹｅｓ）、一時記憶部１１６に新たなグループ情報を格納し（ステップＳ５０８）、ステップＳ５０６の処理を行う。
【００５８】
一方、解析部１１０は、新たなグループ情報の格納が可能ではないと判定すると（ステップＳ５０７のＮｏ）、通信パケットの解析処理を中断する（ステップＳ５０９）。通信パケットの解析処理の中断とは、つまり解析部１１０が通信パケットの解析処理を停止することである。
【００５９】
そして、解析部１１０は、一時記憶部１１６に格納されている解析結果を主記憶部１２０に出力する（ステップＳ５１０）。これにより、解析部１１０は一時記憶部１１６を空けることができ、新たな解析結果を再び格納できるようになる。
【００６０】
解析部１１０は、一時記憶部１１６から主記憶部１２０に解析結果を出力すると、通信パケットの解析処理を再開する（ステップＳ５１１）。具体的には、解析部１１０はステップＳ５０３で得て、一時記憶部１１６に格納できなかった解析結果を、改めて一時記憶部１１６に格納する。なお、解析部１１０は一時記憶部１１６に解析結果を格納できなかった通信パケットについて再度解析処理を行ってから、一時記憶部１１６に解析結果を格納するようにしてもよい。解析部１１０はステップＳ５１１の処理を行うと、ステップＳ５０２の処理を行う。
【００６１】
なお、ステップＳ５０２において、全ての通信パケットの解析処理が終了していると判定された場合（ステップＳ５０２のＹｅｓ）、解析部１１０は一時記憶部１１６に格納されている解析結果を主記憶部１２０に出力する（ステップＳ５１２）。
【００６２】
主記憶部１２０に解析結果が出力されると、通信制御部１０１が主記憶部１２０に出力された解析結果に基づいたラージパケットの生成処理を行い（ステップＳ５１３）、生成したラージパケットのプロトコル処理を行う（ステップＳ５１４）。
【００６３】
以上のように、一時記憶部１１６に解析結果を格納できない場合は、一時記憶部１１６から主記憶部１２０に解析結果を出力することで、通信装置１００は一時記憶部１１６に再び解析結果を格納できるようになる。通信装置１００は、ラージパケットの生成処理を継続して行うことができ、さらにレイテンシが小さい一時記憶部１１６への解析結果の格納を継続して行えるため、受信したパケットのプロトコル処理の高速化を継続して実現できる。
【００６４】
図６および図７は、通信装置１００がラージパケットの生成処理を行う場合に、通信装置１００の各部が行う処理の一例を示したシーケンス図である。図６は、通信パケットの解析処理が終了するまでに、一時記憶部１１６から主記憶部１２０への解析結果の出力が発生しなかった場合のシーケンス図になる。一方、図７は通信パケットの解析処理が終了するまでに、一時記憶部１１６から主記憶部１２０への解析結果の出力が発生した場合のシーケンス図になる。
【００６５】
まず、図６から説明する。インターフェース１０３は、ネットワーク１０４から受信した通信パケットを主記憶部１２０に書き込み（ステップＳ６０１）、通信制御部１０１に通信パケットを受信したことを通知するために受信通知を送信する（ステップＳ６０２）。
【００６６】
受信通知を受けた通信制御部１０１は、解析部１１０に受信した通信パケットの解析処理を要求すべく、レジスタ部１１２に解析処理要求をセットする（ステップＳ６０３）。
【００６７】
解析処理要求をセットされたレジスタ部１１２は、状態制御部１１１に解析処理要求がセットされたことを通知する（ステップＳ６０４）。通知を受けた状態制御部１１１は、解析処理部１１３に対して解析処理の開始を指示する解析開始指示を送信する（ステップＳ６０５）。
【００６８】
また、状態制御部１１１は、格納部１１４に対しても解析処理部１１３が行う解析の解析結果の一時記憶部１１６への格納の開始を指示する格納開始指示を送信する（ステップＳ６０６）。
【００６９】
解析開始指示を受信した解析処理部１１３は、主記憶部１２０に格納されている通信パケット群の各ヘッダの読み込みを行い（ステップＳ６０７）、その解析結果を格納部１１４に送信する（ステップＳ６０８）。
【００７０】
格納部１１４は、受信した解析結果を一時記憶部１１６に格納可能であるか、また一時記憶部１１６のどこに格納すべきか、格納状況を管理することにより確認し、格納できる場合は一時記憶部１１６に解析結果を格納する（ステップＳ６０９）。
【００７１】
解析処理部１１３および格納部１１４は、主記憶部１２０に格納されている通信パケット群の各パケットについて、Ｓ６０７〜Ｓ６０９と同様の処理を繰り返す（Ｓ６１０）。
【００７２】
解析処理部１１３は、解析処理要求に含まれていた全ての通信パケットについて解析処理が終了した場合、解析処理が終了したことを通知するために解析終了通知を状態制御部１１１に送信する（ステップＳ６１１）。
【００７３】
また、格納部１１４は、全ての解析結果の格納が完了した場合、解析結果の格納が完了したことを通知するために、格納完了通知を状態制御部１１１に送信する（ステップＳ６１２）。
【００７４】
解析終了通知と格納完了通知とを受信した状態制御部１１１は、一時記憶部１１６に格納された解析結果の出力を指示するために、出力部１１５に出力指示を送信する（ステップＳ６１３）。
【００７５】
出力指示を受け取った出力部１１５は、一時記憶部１１６から、解析結果の読み込みを行い（ステップＳ６１４）、主記憶部１２０の所定の領域に書き込みを行う（ステップＳ６１５）。解析結果が書き込まれる所定の領域は、通信制御部１０１が通信パケットの解析を要求した際に、レジスタ部１１２にセットされた主記憶部１２０のアドレスによって決定される。
【００７６】
出力部１１５は、一時記憶部１１６に格納されている全ての解析結果を主記憶部１２０に書き込みまでステップＳ６１４およびステップＳ６１５の処理を繰り返す（ステップＳ６１６）。そして、出力部１１５は、一時記憶部１１６に格納されていた全ての解析結果を主記憶部１２０に書き込むと、主記憶部１２０への解析結果の出力が完了したことを通知するために、出力完了通知を状態制御部１１１に送信する（ステップＳ６１７）。
【００７７】
出力完了通知を受け取った状態制御部１１１は、処理結果の概要を書き込むために、レジスタ部１１２に処理結果通知を送信する（ステップＳ６１８）。例えば、通信パケットの解析が正常に終了した場合、解析中にエラーが発生しなかった（正常終了した）ことを書き込むようにしてもよい。あるいは通信パケットの解析処理中にエラーが起きた場合などは、そのエラー内容を書き込むようにしてもよい。
【００７８】
また、状態制御部１１１は、解析処理および解析結果の出力処理が完了したことを、通知信号Ｂ１０５を用いて通信制御部１０１に通知する（ステップＳ６１９）。通知信号Ｂ１０５を受け取った通信制御部１０１は、解析結果に含まれる各グループに所属する通信パケットからのラージパケット生成処理を行う（ステップＳ６２０）。通信パケットからのラージパケット生成処理は、通信制御部１０１が主記憶部１２０から解析結果と各通信パケットを読み込むことにより実施される（ステップＳ６２１，Ｓ６２２）。
【００７９】
以上が、通信装置１００が通信パケットの解析処理を終了するまでに、一時記憶部１１６から主記憶部１２０への解析結果の出力が発生しなかった場合の処理の一例である。
【００８０】
次に、図７を用いて、通信装置１００が通信パケットの解析処理を終了するまでに、一時記憶部１１６から主記憶部１２０への解析結果の出力が発生した場合の処理の一例を説明する。
【００８１】
図７のステップＳ７０１〜ステップＳ７１０が、夫々図６のステップＳ６０１〜ステップＳ６１０に対応している。
【００８２】
いま、解析処理部１１３が、主記憶部１２０に格納されているある通信パケットの解析処理を行い、その解析結果を格納部１１４に送信する（ステップＳ７１１）。この場合に、格納部１１４が、一時記憶部１１６の記憶容量が不足しており、該解析結果を一時記憶部１１６に格納できないことを検知したとする。
【００８３】
この場合、格納部１１４は解析結果の格納が行えないことを通知するため、状態制御部１１１に格納不可通知を送信する（ステップＳ７１２）。格納不可通知を受信した状態制御部１１１は、解析処理部１１３に対し、解析処理の中断を指示する（ステップＳ７１３）。また、出力部１１５には、現在までに一時記憶部１１６に格納されている解析結果の、主記憶部１２０への出力を指示する（ステップＳ７１４）。解析結果の出力の指示を受けた出力部１１５は、一時記憶部１１６から主記憶部１２０へと解析結果を出力し（ステップＳ７１５）、解析結果の出力が完了したことを通知するために出力完了通知を状態制御部１１１に送信する（ステップＳ７１６）。
【００８４】
出力通知を受信した状態制御部１１１は、解析処理部１１３に解析処理の再開を指示するために解析再開指示を送信する（ステップＳ７１７）。同時に、格納部１１４には一時記憶部１１６への解析結果の格納処理の再開を指示するために格納再開指示を送信する（ステップＳ７１８）。
【００８５】
解析再開指示を受け取った解析処理部１１３は、ステップＳ７１１で送信した解析結果を再び格納部１１４に送信する（ステップＳ７１９）。格納再開指示を受け取った格納部１１４は、一時記憶部１１６における解析結果の格納状態をリセットし、ステップＳ７１９で受信した解析結果の格納処理を行う（ステップＳ７２０）。
【００８６】
ステップＳ７２１〜ステップＳ７３０の処理は、夫々図６のステップＳ６１０〜ステップＳ６１９の処理に相当する。
【００８７】
本シーケンスチャートでは、解析処理が終了した際に、主記憶部１２０には解析結果のブロックが２つ存在することになる。すなわち、ステップＳ７１５で主記憶部１２０に出力された解析結果と、ステップＳ７２５で出力された解析結果の２つである。通信制御部１０１が解析処理の終了後に行う処理（例えばラージパケット生成処理）を効率的に行うために、例えばレジスタ部１１２に解析処理が終了するまでに何回解析結果の出力を行ったかを書き込んでもよい。解析処理が終了するまでに何回解析結果の出力が行われたか、という情報は、即ち、主記憶部１２０に図３で示したような解析結果のマトリックスがいくつ格納されているかを表す情報となる。そのため通信制御部１０１は、レジスタ部１１２を参照することで、主記憶部１２０に解析結果のマトリックスが複数格納されていることが分かった場合、複数のラージパケットのペイロードを結合し、更にデータサイズが大きいパケットを生成することができる。具体的には、通信制御部１０１は、夫々のマトリックスに基づいてラージパケットを生成した後、複数のマトリックスに同一のグループ情報が格納されている場合は、該グループ情報に基づいて生成されたラージパケット同士のペイロードを連結する。そして、通信装置１００は、ラージパケット同士のペイロードを連結して生成したラージデータに対するヘッダをつけることで、更にデータサイズが大きいパケットを生成することで、更に効率的にプロトコル処理を実行することができる。
【００８８】
あるいは、通信制御部１０１は、主記憶部１２０に解析結果のマトリックスが複数格納されている場合、ラージパケットの生成処理を複数のマトリックスに基づいて行うようにしてもよい。具体的には、あるグループに属するパケット情報が複数のマトリックスにまたがっている場合、通信制御部１０１は、複数のマトリックスに記載されたグループ情報からラージパケットを生成してもよい。これにより通信制御部１０１は、一つのマトリックスに基づいてラージパケットを生成するよりも効率良く、よりデータサイズが大きいパケットを生成できる。また、通信制御部１０１は、よりデータサイズが大きいパケットを生成できるため、その後のプロトコル処理も効率的に行うことができる。
【００８９】
以上が、通信装置１００が通信パケットの解析処理を終了するまでに、一時記憶部１１６から主記憶部１２０への解析結果の出力が発生した場合の処理の一例である。
【００９０】
図８は、通信装置１００の各部が図５の処理を実行する際に、解析部１１０内の格納部１１４が行う処理を示したフローチャートである。本フローチャートは、通信装置１００の電源が投入されると開始される。
【００９１】
図８の説明を行う前に、本実施形態において格納部１１４がどのように一時記憶部１１６を利用しているかを説明する。図５のステップＳ５０３で説明した解析部１１０による、一時記憶部１１６に格納可能なグループ数の最大値およびグループ情報毎に登録可能なパケット情報の最大値は、格納部１１４によって設定される。夫々の最大値は、一時記憶部１１６の記憶容量に基づいて設定値として静的に決まっているものとする。あるいは、格納部１１４は、夫々の最大値を一時記憶部１１６の記憶容量の範囲内で、通信制御部１０１から解析処理要求を受信する前にレジスタ部１１２を用いてセットしても良い。
【００９２】
図８の説明を行う。格納部１１４は、状態制御部１１１から格納開始指示を受信したか判定する（ステップＳ８０１）。格納部１１４は、格納開始指示を受信しなかった場合（ステップＳ８０１のＮｏ）、再度ステップＳ８０１の判定を行う。
【００９３】
格納部１１４は、格納開始指示を受信すると（ステップＳ８０１のＹｅｓ）、全ての通信パケットについて解析結果の格納処理が終了したかを判定する（ステップＳ８０２）。格納部１１４は、全ての通信パケットについて解析結果の格納処理が終了している場合は（ステップＳ８０２のＹｅｓ）、状態制御部１１１に格納完了通知を送信し（ステップＳ８０３）、本フローチャートのフローを終了する。
【００９４】
一方、格納部１１４は、全ての通信パケットについて、解析結果の格納処理が終了していないと判定すると（ステップＳ８０２のＮｏ）、解析処理部１１３から通信パケットの解析結果を受信したかを判定する（ステップＳ８０４）。
【００９５】
格納部１１４は、解析処理部１１３から解析結果を受信していないと判定すると（ステップＳ８０４のＮｏ）、待機状態となり（ステップＳ８０５）、所定の時間が経過すると再度ステップＳ８０４の判定を行う。
【００９６】
一方、格納部１１４は解析処理部１１３から通信パケットの解析結果を受信したと判定すると（ステップＳ８０４のＹｅｓ）、一時記憶部１１６における現在の格納状況を参照し、新しいグループ情報を格納する必要があるかの判定を行う（ステップＳ８０６）。具体的に格納部１１４は、ステップＳ８０４で受信した解析結果のグループ情報と、一時記憶部１１６に既に格納されているグループ情報とを比較し、一致しなかった場合は新しいグループ情報を格納する必要があると判定する（ステップＳ８０６のＹｅｓ）。一方、一時記憶部１１６に既に格納されているグループ情報の内、受信した解析結果に含まれるグループ情報と一致するグループ情報がある場合、格納部１１４は新しいグループ情報を格納する必要はないと判定する（ステップＳ８０６のＮｏ）。
【００９７】
格納部１１４は、新しいグループ情報の格納が必要な場合（ステップＳ８０６のＹｅｓ）、一時記憶部１１６に新しいグループ情報の格納が可能かを判定する（ステップＳ８０７）。本判定は、既に一時記憶部１１６に格納されているグループ情報の数が、格納部１１４が決定したグループ数の最大値に達しているか否かに基づいて行われる。既に一時記憶部１１６に最大値分のグループ情報が格納されている場合、格納部１１４は新しいグループ情報の格納が可能ではないと判定する（ステップＳ８０７のＮｏ）。この場合、格納部１１４は状態制御部１１１に、格納不可通知を送信する（ステップＳ８１１）。
【００９８】
一方、一時記憶部１１６にまだ最大値分のグループ情報が格納されていない場合、格納部１１４は新たなグループ情報の格納が可能であると判定し（ステップＳ８０７のＹｅｓ）、一時記憶部１１６に新たなグループ情報の格納処理を行う（ステップＳ８０９）。格納部１１４は、新たなグループ情報の格納処理を行うと、一時記憶部１１６に解析結果であるパケット情報の格納処理を行い（ステップＳ８１０）、ステップＳ８０２の処理を行う。格納部１１４は、新たなグループ情報やパケット情報の格納を行う際に、夫々の格納数をカウントしているカウンタの値を更新する。
【００９９】
ステップＳ８０６の処理の説明に戻る。格納部１１４は、新しいグループ情報の格納が必要ではない場合（ステップＳ８０６のＮｏ）、解析結果の格納対象であるグループに新たなパケット情報の格納が可能かを判定する（ステップＳ８０８）。本判定は、格納対象のグループに格納されているパケット情報の数が、格納数の上限に達しているか否かに基づいて行われる。
【０１００】
格納部１１４は、格納対象のグループに格納されているパケット情報の数が、格納数の上限に達していない場合、ステップＳ８０８でＹｅｓと判定し、ステップＳ８１０の処理を行う。一方、格納対象のグループに格納されているパケット情報の数が、格納数の上限に達している場合、格納部１１４はステップＳ８０８でＮｏと判定し、状態制御部１１１に格納不可通知を送信する（ステップＳ８１１）。
【０１０１】
格納部１１４は、格納不可通知を送信すると、状態制御部１１１から格納再開指示を受信したか判定する（ステップＳ８１２）。格納部１１４は、格納再開指示を受信していないと判定すると（ステップＳ８１２のＹｅｓ）、待機状態となる（ステップＳ８１３）。格納部１１４は、ステップＳ８１３で待機状態となり、所定の時間が経過すると、再度ステップＳ８１２の処理を行う。
【０１０２】
一方、格納部１１４は状態制御部１１１から格納再開指示を受信したと判定すると（ステップＳ８１２のＮｏ）、一時記憶部１１６に格納されている解析結果をクリアする（ステップＳ８１４）。具体的には、格納部１１４はステップＳ８０９やステップＳ８１０で一時記憶部１１６にグループ情報やパケット情報を格納する毎にカウントしていたグループ情報の格納数や、各グループに格納されたパケット情報の格納数を夫々０にする。これにより、格納部１１４は新たな通信パケットの解析結果を受信しても、再び一時記憶部１１６に解析結果を格納できる。格納部１１４は、ステップＳ８１４の処理を行うと、ステップＳ８０４の処理を行う。
【０１０３】
この場合、格納部１１４は、一時記憶部１１６に格納できなかったパケット情報を破棄し、該パケット情報の基となった通信パケットを未解析とすることで、再び該通信パケットの解析を行い、そのパケット情報を格納するようにしてもよい。あるいは、格納部１１４はステップＳ８１４の処理を行った後に、格納できなかったパケット情報を一時記憶部１１６に格納するようにしてもよい。
【０１０４】
以上、格納部１１４が一時記憶部１１６に解析結果を格納する際に行う処理の説明である。格納部１１４は、一時記憶部１１６に新たなパケット情報が格納可能かを検知し、その結果に基づいた処理を行うことで、効率的に通信パケットの解析を行うことができる。
【０１０５】
なお、本実施形態において、一時記憶部１１６は、解析部１１０の内部に含まれていたが、解析部１１０の外部に配置されていてもよいし、他のモジュールと共通で利用されるメモリで構成されてもよい。その場合、通信パケットの解析処理を開始する前に、通信制御部１０１等によって、解析部１１０が解析処理を行う際に必要なサイズのメモリの確保を行う。そして解析部１１０は、一時記憶部１１６として実際に確保できたサイズに従って、格納可能なグループ数の最大値や、各グループに格納可能なパケット情報の最大値を設定してもよい。
【０１０６】
また本実施形態では、通信装置１００が解析処理を行った後に、該解析処理の対象となった通信パケットからラージパケットを生成する生成処理（図５のステップＳ５１３）を実行する例について示した。ここで、解析部１１０による解析処理が行われている間にもインターフェース１０３から受信パケットが到着している場合には、以下のように処理のフローを変更させてもよい。すなわち、通信装置１００は、ステップＳ５１３のラージパケットの生成処理を行う前に、再度解析部１１０に新規の受信パケットの解析処理を行わせ、該解析処理の終了後にラージパケットの生成処理を行うようにしてもよい。通信装置１００は、何れの処理フローでラージパケットの生成処理を行うかの選択を、インターフェース１０３、通信制御部１０１、解析部１１０の稼働状況に応じて選択してもよい。例えば、解析部１１０による解析処理を実行中に、所定の回数以上インターフェース１０３から受信パケットが到着した場合、通信装置１００は先に新規の受信パケットの解析処理を行わせてからラージパケットの生成処理を行うようにする。このようにすることで、通信装置１００は後から受信した通信パケットも利用してラージパケットを生成できるようになるため、通信パケットのプロトコル処理をより効率的に実行できるようになる。
【０１０７】
また、本実施形態において、ラージパケットの生成および生成したラージパケットのプロトコル処理を通信制御部１０１が行ったが、これに限らず、ラージパケットの生成とラージパケットのプロトコル処理とを異なるハードウェアが行ってもよい。
【０１０８】
また、本実施形態において、ラージパケットを生成する際に、通信制御部１０１は、ＴＣＰヘッダとＩＰヘッダに加えて、イーサネットヘッダもラージデータにつけたが、これに限らず、イーサネットヘッダを付加しなくてもよい。この場合、通信装置１００は、プロトコルが特定の種類であった場合のみに、ラージパケットの生成処理を行うようにしてもよい。
【０１０９】
また本実施形態において、通信装置１００は、解析処理を行っている途中で一時記憶部１１６から主記憶部１２０に解析結果を出力した場合であっても、解析処理要求に含まれる通信パケットの解析処理が終了してからラージパケットの生成を行った。しかしこれに限らず、通信装置１００は、解析処理要求に含まれる通信パケットの解析処理の途中であっても、一時記憶部１１６に新たな解析結果を格納できず主記憶部１２０に解析結果が出力された場合にラージパケットの生成処理を開始してもよい。
【０１１０】
また本実施形態において、主記憶部１２０は一時記憶部１１６より相対的にレイテンシが大きいメモリであるとした。しかし、これに限らず、主記憶部１２０は、レイテンシが所定の基準より大きいメモリであるとしてもよい。この場合、一時記憶部１１６は、レイテンシが所定の基準より小さいメモリとなる。
【０１１１】
なお、図５、図８に示した通信装置１００のフローチャートの少なくとも一部または全部をハードウェアにより実現してもよい。ハードウェアにより実現する場合、例えば、所定のコンパイラを用いることで、各ステップを実現するためのコンピュータプログラムからＦＰＧＡ上に専用回路を生成し、これを利用すればよい。ＦＰＧＡとは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウェアとして実現するようにしてもよい。また、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により実現するようにしてもよい。図６、図７に示したシーケンス図においても同様である。
【０１１２】
また、図５、図８に示したフローチャートや、図６、図７に示したシーケンス図の各ステップを不図示の複数のＣＰＵもしくは装置で分散して行うようにしてもよい。
【０１１３】
以上、実施形態を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体（記憶媒体）などとしての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インターフェース機器、撮像装置、ｗｅｂアプリケーションなど）から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【０１１４】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１１５】
１００  通信装置
１０１  通信制御部
１０２  バス
１０３  インターフェース
１０４  ネットワーク
１１０  解析部
１２０  主記憶部
【図１】
2019193005.tif 000003
【図２】
2019193005.tif 000004
【図３】
2019193005.tif 000005
【図４】
2019193005.tif 000006
【図５】
2019193005.tif 000007
【図６】
2019193005.tif 000008
【図７】
2019193005.tif 000009
【図８】
2019193005.tif 000010