(57)【要約】【課題】ＴＣＰやＵＤＰの受信処理を効率的に並列化し、処理速度を向上させる。【解決手段】フレームのヘッダを解析し、ヘッダ情報を出力するヘッダ解析部１０２と、前記フレームのチェックサムを計算して判定するチェックサム判定部１０３と、前記フレームのデータ部分を格納するバッファ部１０４と、前記ヘッダ情報に対応するコネクション情報を第２記憶部１２２から読み出す読み出し部１０５と、前記コネクション情報に基づいて、前記データ部分の書き込み位置を特定する特定部１０６と、前記チェックサム判定の前に、前記バッファ部からデータを読み出し、第１記憶部１２１の前記特定された書き込み位置に書き込み始める書き込み部１０７と、前記判定結果が合格であった場合、前記データ書き込み部が書き込みを行っている最中に、前記ヘッダ情報に基づいて更新したコネクション情報を前記第２記憶部に書き込む書き込み部１０８と、を備える。【選択図】図１
2010109746.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してフレームを受信するデータ受信装置であって、
第１の受信フレームを入力するネットワークインタフェース部と、
フレームのデータ部分を記憶する第１記憶部と、
フレームのコネクションに関連する情報であるコネクション情報を記憶する第２記憶部と、
前記第１の受信フレームのヘッダを解析し、第１のヘッダ情報を出力するヘッダ解析部と、
前記第１の受信フレームのチェックサムを計算し、計算が完了するとチェックサムの合格／不合格を判定し、判定結果を出力するチェックサム判定部と、
前記第１の受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを格納する第１バッファ部と、
前記第１のヘッダ情報に対応する前記コネクション情報を前記第２記憶部から探索して読み出すコネクション情報読み出し部と、
前記第１のヘッダ情報及び前記コネクション情報読み出し部により読み出された前記コネクション情報に基づいて、前記第１の受信フレームのデータ部分の前記第１記憶部における書き込み位置を特定する書き込み位置特定部と、
前記第１の受信フレームのチェックサム判定の前に、前記第１バッファ部に格納されているデータを読み出し、前記第１記憶部の前記書き込み位置特定部により特定された書き込み位置に、読み出したデータを書き込み始めるデータ書き込み部と、
前記第１のヘッダ情報に基づいて前記コネクション情報を更新し、前記判定結果が合格であった場合、前記データ書き込み部が前記第１記憶部への書き込みを行っている最中に、前記更新したコネクション情報を前記第２記憶部に書き込むコネクション情報書き込み部と、
を備えるデータ受信装置。
【請求項２】
前記コネクション情報書き込み部による書き込みの完了後、前記データ書き込み部による前記第１の受信フレームのデータ部分の書き込みの完了前に、前記ネットワークインタフェース部が前記第１の受信フレームの次の受信フレームである第２の受信フレームを入力し、
前記ヘッダ解析部は、前記データ書き込み部が前記第１の受信フレームのデータ部分の書き込みを行っている最中に、前記第２の受信フレームのヘッダを解析することを特徴とする請求項１に記載のデータ受信装置。
【請求項３】
前記ヘッダ解析部は、前記前記データ書き込み部による前記第１の受信フレームのデータ部分の書き込みの完了前に、前記第２の受信フレームのヘッダ解析を完了して第２のヘッダ情報を出力し、
前記コネクション情報読み出し部は、前記データ書き込み部が前記第１の受信フレームのデータ部分の書き込みを行っている最中に、前記第２のヘッダ情報に対応するコネクション情報の探索を開始することを特徴とする請求項２に記載のデータ受信装置。
【請求項４】
前記チェックサム判定部は、前記データ書き込み部が前記第１の受信フレームのデータ部分の書き込みを行っている最中に、前記第２の受信フレームのチェックサム計算を開始することを特徴とする請求項２に記載のデータ受信装置。
【請求項５】
前記コネクション情報書き込み部は、前記判定結果が不合格であった場合、前記更新したコネクション情報を前記第２記憶部へ書き込まないことを特徴とする請求項１に記載のデータ受信装置。
【請求項６】
前記コネクション情報読み出し部による読み出しの完了前に、前記チェックサム判定部によるチェックサム計算が完了し、前記判定結果が合格であった場合、前記コネクション情報読み出し部による読み出しが完了するまで、前記コネクション情報書き込み部による前記更新したコネクション情報の書き込みを保留し、前記コネクション情報読み出し部による読み出しの完了に伴い、前記コネクション情報書き込み部に書き込みを開始させるコネクション情報書き込み保留部をさらに備えることを特徴とする請求項１に記載のデータ受信装置。
【請求項７】
前記第１のヘッダ情報と、前記第１の受信フレームの次の受信フレームである第２の受信フレームのヘッダ解析により取得される第２のヘッダ情報とを保持可能なヘッダ情報保持部をさらに備え、
前記ヘッダ解析部は、前記コネクション情報書き込み部が前記第１のヘッダ情報に基づいた前記コネクション情報の更新及び前記更新したコネクション情報の前記第２記憶部への書き込みを行っている最中に、前記第２の受信フレームのヘッダを解析し、前記第２のヘッダ情報を前記ヘッダ情報保持部に保持させることを特徴とする請求項１に記載のデータ受信装置。
【請求項８】
前記コネクション情報書き込み部による書き込みの完了前に、前記ヘッダ解析部による前記第２の受信フレームのヘッダ解析が完了した場合、前記コネクション情報書き込み部による書き込みが完了するまで、前記コネクション情報読み出し部による前記第２のヘッダ情報に対応したコネクション情報の探索及び読み出しを保留し、前記コネクション情報書き込み部による書き込みの完了に伴い、前記コネクション情報読み出し部に探索及び読み出しを開始させるコネクション情報読み出し保留部をさらに備えることを特徴とする請求項７に記載のデータ受信装置。
【請求項９】
前記書き込み位置特定部が特定した書き込み位置を保持する書き込み位置保持部をさらに備え、
前記データ書き込み部が前記第１の受信フレームのデータの書き込みを行っている最中に、
前記コネクション情報書き込み部が書き込みを完了し、
前記ネットワークインタフェース部が前記第１の受信フレームの次の受信フレームである第２の受信フレームを入力し、
前記ヘッダ解析部が前記第２の受信フレームのヘッダを解析して第２のヘッダ情報を出力し、
前記チェックサム判定部が前記第２の受信フレームのチェックサムの計算を行い、
前記第１バッファ部が前記第２の受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを格納し、
前記コネクション情報読み出し部が前記第２記憶部から前記第２のヘッダ情報に対応するコネクション情報を読み出し、
前記書き込み位置特定部が前記第２のヘッダ情報及び前記第２のヘッダ情報に対応するコネクション情報に基づいて前記第２の受信フレームのデータ部分の書き込み位置を特定し、前記書き込み位置保持部にこの書き込み位置を保持させ、
前記データ書き込み部が前記第１の受信フレームのデータの書き込みの完了に伴い、前記書き込み位置保持部に前記第２の受信フレームのデータ部分の書き込み位置が保持されていることを確認し、前記第１バッファ部に格納されている前記第２の受信フレームのデータを読み出し、前記第１記憶部の前記書き込み位置保持部に保持されている書き込み位置に、読み出したデータを書き込み始めることを特徴とする請求項１に記載のデータ受信装置。
【請求項１０】
前記ネットワークインタフェース部が入力した受信フレームを格納し、前記ヘッダ解析部、前記チェックサム判定部、及び前記第１バッファ部へ出力する第２バッファ部と、
前記コネクション情報読み出し部による読み出しの完了前に、前記チェックサム判定部によるチェックサム計算が完了し、前記判定結果が合格であった場合、前記コネクション情報読み出し部による読み出しが完了するまで、前記コネクション情報書き込み部による前記更新したコネクション情報の書き込みを保留し、前記コネクション情報読み出し部による読み出しの完了に伴い、前記コネクション情報書き込み部に書き込みを開始させるコネクション情報書き込み保留部と、
前記書き込み位置保持部が書き込み位置を保持している時、又は前記コネクション情報書き込み保留部が前記コネクション情報書き込み部の書き込みを保留している時に、前記第２バッファ部が新たな受信フレームを出力することを抑制するフレーム抑制部と、
をさらに備えることを特徴とする請求項９に記載のデータ受信装置。
【請求項１１】
前記フレーム抑制部は、前記書き込み位置保持部が保持している書き込み位置の数又は前記コネクション情報書き込み保留部が保留している前記コネクション情報書き込み部による書き込みの数が所定数に達した時に、前記第２バッファ部が新たな受信フレームを出力することを抑制することを特徴とする請求項１０に記載のデータ受信装置。
【請求項１２】
ネットワークを介してフレームを受信するデータ受信方法であって、
受信フレームを入力し、
前記受信フレームのヘッダを解析してヘッダ情報を生成し、
前記受信フレームのチェックサムを計算して合格／不合格を判定し、
前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第１バッファ部に格納し、
前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第２記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出し、
前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第１記憶部における書き込み位置を特定し、
前記受信フレームのチェックサム判定の前に、前記第１バッファ部に格納されているデータを読み出し、前記第１記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始し、
前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第１記憶部への書き込みの最中に、前記更新したコネクション情報を前記第２記憶部に書き込むデータ受信方法。
【請求項１３】
ネットワークを介してフレームを受信するデータ受信プログラムであって、
受信フレームを入力するステップと、
前記受信フレームのヘッダを解析してヘッダ情報を生成するステップと、
前記受信フレームのチェックサムを計算して合格／不合格を判定するステップと、
前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第１バッファ部に格納するステップと、
前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第２記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出すステップと、
前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第１記憶部における書き込み位置を特定するステップと、
前記受信フレームのチェックサム判定の前に、前記第１バッファ部に格納されているデータを読み出し、前記第１記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始するステップと、
前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第１記憶部への書き込みの最中に、前記更新したコネクション情報を前記第２記憶部に書き込むステップと、
をコンピュータに実行させるデータ受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ受信装置、データ受信方法、及びデータ受信プログラムに関するものである。
【背景技術】
【０００２】
インターネット通信で使われている主要なプロトコルとしてＴＣＰ／ＩＰがある。従来のＴＣＰ／ＩＰは主にソフトウェア処理によって実現されており、例えばパソコンや組み込み機器などのＣＰＵによって動作する。
【０００３】
しかし、昨今のネットワークインフラの広帯域化や、ネットワークを介して伝送される映像コンテンツ等の広帯域化により、ネットワーク処理の負荷が増大し、従来のようなＣＰＵによる処理では性能が足りなくなってきている。
【０００４】
そこで、ＣＰＵの代わりに、サブプロセッサや専用ハードウェアがＴＣＰ／ＩＰのプロトコル処理を行うＴＯＥ（ＴＣＰ／ＩＰ  Ｏｆｆｌｏａｄ  Ｅｎｇｉｎｅ）が提案されている。ＴＯＥを用いることによって、従来のソフトウェア処理より高速なＴＣＰ／ＩＰ処理が望める。
【０００５】
ＴＯＥには様々な構成があり、例えば特許文献１には、ソケットＡＰＩの一部の処理を実行するサブプロセッサＡと、ＴＣＰ／ＵＤＰ受信処理を実行するサブプロセッサＢと、ＴＣＰ／ＵＤＰ送信処理を実行するサブプロセッサＣと、ＭＡＣドライバ及びＩＰ受信処理を実行するサブプロセッサＤと、ＭＡＣドライバ及びＩＰ送信処理を実行するサブプロセッサＥとを備え、これらが並列処理を行う通信装置が開示されている。
【０００６】
しかし、この特許文献１では、ＴＣＰ／ＵＤＰ受信処理は１つのサブプロセッサが実行することしか述べられておらず、ＴＣＰ／ＵＤＰの受信処理自体をどのように並列化するかについては述べられていない。
【０００７】
ＴＣＰ／ＵＤＰの受信処理は、コネクション情報の読み出し、フレームのデータの書き込み、更新したコネクション情報の書き込みなど複数のステップに分かれており、これらをどのように並列化して実行するかが、ＴＯＥの性能として重要な要素となる。
【特許文献１】特開２００８−１４６４８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、ＴＣＰやＵＤＰの受信処理を効率的に並列化して実行し、処理速度を向上させることが出来るデータ受信装置、データ受信方法、及びデータ受信プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様によるデータ受信装置は、ネットワークを介してフレームを受信するデータ受信装置であって、第１の受信フレームを入力するネットワークインタフェース部と、フレームのデータ部分を記憶する第１記憶部と、フレームのコネクションに関連する情報であるコネクション情報を記憶する第２記憶部と、前記第１の受信フレームのヘッダを解析し、第１のヘッダ情報を出力するヘッダ解析部と、前記第１の受信フレームのチェックサムを計算し、計算が完了するとチェックサムの合格／不合格を判定し、判定結果を出力するチェックサム判定部と、前記第１の受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを格納する第１バッファ部と、前記第１のヘッダ情報に対応する前記コネクション情報を前記第２記憶部から探索して読み出すコネクション情報読み出し部と、前記第１のヘッダ情報及び前記コネクション情報読み出し部により読み出された前記コネクション情報に基づいて、前記第１の受信フレームのデータ部分の前記第１記憶部における書き込み位置を特定する書き込み位置特定部と、前記第１の受信フレームのチェックサム判定の前に、前記第１バッファ部に格納されているデータを読み出し、前記第１記憶部の前記書き込み位置特定部により特定された書き込み位置に、読み出したデータを書き込み始めるデータ書き込み部と、前記第１のヘッダ情報に基づいて前記コネクション情報を更新し、前記判定結果が合格であった場合、前記データ書き込み部が前記第１記憶部への書き込みを行っている最中に、前記更新したコネクション情報を前記第２記憶部に書き込むコネクション情報書き込み部と、を備えるものである。
【００１０】
本発明の一態様によるデータ受信方法は、ネットワークを介してフレームを受信するデータ受信方法であって、受信フレームを入力し、前記受信フレームのヘッダを解析してヘッダ情報を生成し、前記受信フレームのチェックサムを計算して合格／不合格を判定し、前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第１バッファ部に格納し、前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第２記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出し、前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第１記憶部における書き込み位置を特定し、前記受信フレームのチェックサム判定の前に、前記第１バッファ部に格納されているデータを読み出し、前記第１記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始し、前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第１記憶部への書き込みの最中に、前記更新したコネクション情報を前記第２記憶部に書き込むものである。
【００１１】
本発明の一態様によるデータ受信プログラムは、ネットワークを介してフレームを受信するデータ受信プログラムであって、受信フレームを入力するステップと、前記受信フレームのヘッダを解析してヘッダ情報を生成するステップと、前記受信フレームのチェックサムを計算して合格／不合格を判定するステップと、前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第１バッファ部に格納するステップと、前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第２記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出すステップと、前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第１記憶部における書き込み位置を特定するステップと、前記受信フレームのチェックサム判定の前に、前記第１バッファ部に格納されているデータを読み出し、前記第１記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始するステップと、前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第１記憶部への書き込みの最中に、前記更新したコネクション情報を前記第２記憶部に書き込むステップと、をコンピュータに実行させるものである。
【発明の効果】
【００１２】
本発明によれば、ＴＣＰやＵＤＰの受信処理を効率的に並列化して実行し、処理速度を向上させることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１４】
（第１の実施形態）図１に本発明の第１の実施形態に係るデータ受信装置の概略構成を示す。データ受信装置は、ネットワークインタフェース部１０１、ヘッダ解析部１０２、チェックサム判定部１０３、第１バッファ部１０４、コネクション情報読み出し部１０５、書き込み位置特定部１０６、データ書き込み部１０７、コネクション情報書き込み部１０８、第１記憶部１２１、及び第２記憶部１２２を備える。このデータ受信装置は、イーサネット（登録商標）や無線ＬＡＮ等のネットワークを介して、データ送信装置（図示せず）からＴＣＰ／ＩＰやＵＤＰ／ＩＰなどのデータフレームを受信する。
【００１５】
ネットワークインタフェース部１０１は例えばＮＩＣ（Network Interface Card）やＭＡＣ（Media Access Control）であり、ネットワークから受信フレームを入力する。ヘッダ解析部１０２は受信フレームのヘッダ（ＩＰヘッダと、ＵＤＰ又はＴＣＰヘッダ）を解析し、ヘッダ情報を出力する。
【００１６】
チェックサム判定部１０３は受信フレームのデータ部分を含めたチェックサムを計算して、計算が全て完了すると送信側から送られてきたチェックサムと一致するか否か検査する。両者が一致していれば合格と判定し、不一致であればネットワーク上でデータに誤りが生じていることになるので不合格と判定する。チェックサム判定部１０３は、判定結果をコネクション情報書き込み部１０８へ出力する。
【００１７】
第１バッファ部１０４は、受信フレームの少なくともデータ部分を一時的に格納する。
【００１８】
コネクション情報読み出し部１０５は、ヘッダ解析部１０２から出力されたヘッダ情報に基づいて第２記憶部１２２を探索し、対応するコネクション情報を第２記憶部１２２から読み出す。コネクション情報については後述する。
【００１９】
書き込み位置特定部１０６は、ヘッダ解析部１０２から出力されたヘッダ情報及びコネクション情報読み出し部１０５が読み出したコネクション情報に基づいて、第１記憶部１２１における受信フレームのデータの書き込み位置を特定する。
【００２０】
データ書き込み部１０７は、第１バッファ部１０４に格納されているデータを読み出し、第１記憶部１２１における書き込み位置特定部１０６により特定された位置に書き込みを行う。
【００２１】
コネクション情報書き込み部１０８は、チェックサム判定部１０３による判定結果が合格であった場合に、ヘッダ情報に基づいてコネクション情報を更新し、更新したコネクション情報を第２記憶部１２２に書き込む。
【００２２】
ヘッダ解析部１０２、チェックサム判定部１０３、コネクション情報読み出し部１０５、書き込み位置特定部１０６、データ書き込み部１０７、及びコネクション情報書き込み部１０８はプロセッサ又は専用回路で構成される。第１バッファ部１０４、第１記憶部１２１、第２記憶部１２２はメモリデバイスである。例えば、第１バッファ部１０４はオンチップメモリ、第１記憶部１２１はＳＤＲＡＭ、第２記憶部１２２はＳＤＲＡＭ又はオンチップメモリで構成される。第２記憶部１２２は第１記憶部１２１と並行してアクセス可能なものとする。
【００２３】
受信フレーム（ＴＣＰの場合はＴＣＰセグメント、ＵＤＰの場合はＵＤＰパケット）の処理について説明する。
【００２４】
ＴＣＰもＵＤＰもコネクション指向のプロトコルであり、送信先と送信元との間で、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号で決定されるコネクションが定義される。データ受信装置はこれらのコネクション毎にコネクション情報を第２記憶部１２２に保持する。コネクション情報とは、例えば受信したデータを書き込む第１記憶部１２１上のアドレス領域の情報である。
【００２５】
受信フレームのＩＰヘッダには送信元ＩＰアドレスと送信先ＩＰアドレスが含まれ、ＵＤＰまたはＴＣＰヘッダには送信元ポート番号と送信先ポート番号が含まれる。従って、ヘッダ解析部１０２は受信フレームのＩＰヘッダとＵＤＰまたはＴＣＰヘッダを解析し、ヘッダ情報を取得し、出力する。
【００２６】
コネクション情報読み出し部１０５は、ヘッダ解析部１０２から出力されたヘッダ情報に基づいてコネクションを特定し、第２記憶部１０５に保持されているこのコネクションに対応するコネクション情報を探索する。コネクション情報読み出し部１０５は、コネクション情報を発見すると、そのコネクションに関連付けて記憶されている、データを書き込むメモリ（第１記憶部１２１）上のアドレス領域の情報を得ることができる。
【００２７】
例えば、ＵＤＰの場合は、書き込みアドレス特定部１０６が、このアドレス領域の先頭アドレスをデータの書き込みアドレスと特定する。
【００２８】
ＴＣＰの場合は、データの各バイトに対応するシーケンス番号がプロトコルによって定義されており、受信フレームのＴＣＰヘッダに受信データの先頭シーケンス番号（受信シーケンス番号）が含まれている。コネクション情報も、データを書き込むアドレス領域の情報に加え、例えばこのアドレス領域の先頭に書き込むべきデータのシーケンス番号（ベースシーケンス番号）を含む。
【００２９】
従って、ＴＣＰの場合、書き込みアドレス特定部１０６は、このアドレス領域の情報とベースシーケンス番号の情報に加え、先行ヘッダ解析部１０２が解析した受信シーケンス番号の情報を用いて、受信データの書き込みアドレスを、アドレス領域の先頭アドレス＋（受信シーケンス番号−ベースシーケンス番号）として求める。
【００３０】
このようにすることで、例えば一部のデータがロストし、そのデータだけが後に再送された場合など、データをシーケンス番号の順番通りに受信できなかった場合でも、第１記憶部上では順番通りに並び替えて配置することが出来る。
【００３１】
以上の書き込みアドレスの特定処理は一例であり、これに限るものではない。データ書き込み部１０７は、第１記憶部１２１の書き込み位置特定部１０６が特定したアドレスに対して受信データを書き込む。
【００３２】
コネクション情報書き込み部１０８は、例えばコネクション情報に関連してデータを受信したという情報を第２記憶部１２２に書き込む。ＴＣＰの場合は、どこまでのシーケンス番号のデータを受信したという情報を書き込んでもよい。ただし、データはネットワーク上で破損している可能性もあるので、破損したフレームを排除するためにＴＣＰやＵＤＰではヘッダだけでなくデータ部分も含めたチェックサムが用いられる。
【００３３】
従って、チェックサム判定部１０３では、受信フレームのデータ部分も含めたチェックサムの計算を行い、合格／不合格を判定する。結果が合格だった場合のみ、コネクション情報書き込み部１０８は書き込みを行い、不合格だった場合は書き込みを行わない。
【００３４】
このようにすることで、チェックサムの結果が不合格だった場合はデータを受信したという事実が記憶されないので、第１記憶部１２１に書き込んだデータは後続のデータで上書きされ、実質的にデータを破棄することが出来る。
【００３５】
次に、本実施形態に係るデータ受信装置によるデータ受信処理の一例を図２に示すタイムチャートを用いて説明する。図２は、各部の処理がどのように並列化されるかを簡略的に示すものであり、１段目がネットワークインタフェース部１０１から入力した受信フレームに対するヘッダ解析部１０２のヘッダ解析処理、チェックサム判定部１０３のチェックサム計算処理、及び第１バッファ部１０４のバッファリング処理を示す。
【００３６】
図２の２段目は、第２記憶部１２２に対するコネクション情報読み出し部１０５の読み出し処理及びコネクション情報書き込み部１０８の書き込み処理を示す。図２の３段目は、第１記憶部１２１に対するデータ書き込み部１０７の書き込み処理を示す。
【００３７】
書き込みアドレス特定部１０６の処理は、要する時間が短いので省略している。また、最初の受信フレームの処理を実線、次の受信フレームの処理を破線、さらに次のフレームの処理を実線というように、隣り合うフレームの処理を判別しやすくするため実線と破線を交互に用いて示している。これらは以降のタイムチャートでも同様である。
【００３８】
ネットワークインタフェース部１０１が最初のフレームを入力すると、ヘッダ解析部１０２が入力された受信フレームを一定バイト、例えば４バイトずつ先頭からスキャンし、受信フレームのヘッダの解析を開始する（時刻Ｔ２００）。
【００３９】
このとき、ヘッダ解析と並行して、チェックサム判定部１０３が受信フレームのヘッダ部分のチェックサム計算を、例えば４バイトずつ、開始するようにしてもよい。
【００４０】
ヘッダ解析が完了すると、チェックサム判定部１０３は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う（時刻Ｔ２０１）。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【００４１】
さらに、コネクション情報読み出し部１０５が、ヘッダ解析部１０２が解析したヘッダ情報（送信元ポート番号、送信元ＩＰアドレス、送信先ポート番号、送信先ＩＰアドレスなど）を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【００４２】
コネクション情報読み出し部１０５が、コネクション情報の読み出しを完了すると（時刻Ｔ２０２）、書き込み位置特定部１０６が読み出されたコネクション情報とヘッダ情報（シーケンス番号など）を元に、受信フレームのデータの書き込み位置（アドレス）を特定する。
【００４３】
データ書き込み部１０７は、チェックサム判定部１０３がチェックサム判定を行う前に、第１バッファ部１０４から受信フレームのデータ部分を、例えば４バイトずつ読み出し、第１記憶部１２１における書き込み位置特定部１０６により特定された位置へのデータの書き込みを開始する。
【００４４】
ここで、チェックサム判定部１０３とデータ書き込み部１０７は、受信フレームの同じデータ部分を同じレート（例えば４バイトずつ）で処理する。チェックサム判定部１０３はコネクション情報読み出し部１０５が読み出しを開始すると共にデータ部分のチェックサム計算を開始している。一方、データ書き込み部１０７は、コネクション情報読み出し部１０５がコネクション情報の読み出しを完了し、書き込み位置特定部１０６が書き込み位置を特定してからデータの書き込みを開始する。
【００４５】
従って、データ書き込み部１０７による書き込みよりチェックサム判定部１０３のチェックサム計算及び第１バッファ部１０４のバッファリングの方が先に完了する。また、データ書き込み部１０７が書き込みを行う第１記憶部１２１は、通常はホストＣＰＵ（図示せず）などによる書き込んだデータの読み出しアクセスが別途あるので、そのアクセス調停のために書き込みが待たされ、結果的にチェックサム判定部１０３の方が先に処理を終えるという場合もあり得る。
【００４６】
そこで、チェックサム判定部１０３によるチェックサムの判定結果が合格の場合、データ書き込み部１０７による書き込みの完了を待たずに、コネクション情報書き込み部１０８は、第２記憶部１２２に対して（更新した）コネクション情報の書き込みを行う（時刻Ｔ２０３）。ここで第２記憶部１２２に書き込まれるコネクション情報には、例えば次の受信フレームのデータを書き込むべき第１記憶部１２１のアドレス領域の情報が含まれる。
【００４７】
コネクション情報の書き込みが完了し、次のフレームを受信した場合、ヘッダ解析部１０２は、データ書き込み部１０７による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する（時刻Ｔ２０４）。また、チェックサム判定部１０３は、その次の受信フレームのチェックサムの計算を先行して行う。
【００４８】
ヘッダ解析部１０２がヘッダ解析を完了しヘッダ情報を出力すると、コネクション情報読み出し部１０５はそのヘッダ情報に基づいて、データ書き込み部１０７が書き込みを行っている最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する（時刻Ｔ２０５）。以降は同様の処理が繰り返される。
【００４９】
このように、本実施形態に係るデータ受信装置では、データ書き込み部１０７が受信フレームのデータの書き込みを行っている最中に、ヘッダ解析部１０２、チェックサム判定部１０３、コネクション情報読み出し部１０５が、その次の受信フレームのヘッダ解析、チェックサム計算、コネクション情報の読み出しを並列して行うことで、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。
【００５０】
（第２の実施形態）本発明の第２の実施形態に係るデータ受信装置の概略構成を図３に示す。本実施形態に係るデータ受信装置は、図１に示す上記第１の実施形態に係るデータ受信装置にさらにコネクション情報書き込み保留部１０９を備えた構成となっている。
【００５１】
コネクション情報書き込み保留部１０９は、コネクション情報読み出し部１０５が第２記憶部１２２からコネクション情報の読み出しを完了するまで、コネクション情報書き込み部１０８の書き込みを保留し、コネクション情報読み出し部１０５の読み出しが完了すると、保留したコネクション情報書き込み部１０８の書き込み処理の実行を指示する。
【００５２】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図４に示すタイムチャートを用いて説明する。
【００５３】
（時刻Ｔ４０１）コネクション情報書き込み部１０８によるコネクション情報の書き込みが完了する。この時、データ書き込み部１０７は第１記憶部１２１へデータの書き込みを行っている。ネットワークインタフェース部１０１が次のフレームを受信し、ヘッダ解析部１０２が、データ書き込み部１０７による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する。また、チェックサム判定部１０３は、ヘッダ部分のチェックサムの計算を先行して行う。なお、時刻Ｔ４０１で受信したフレームのデータの長さは短いものとする。
【００５４】
（時刻Ｔ４０２）ヘッダ解析部１０２がヘッダ解析を完了すると、チェックサム判定部１０３は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【００５５】
コネクション情報読み出し部１０５はヘッダ情報をもとに、データ書き込み部１０７による書き込みの最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。
【００５６】
（時刻Ｔ４０３）時刻Ｔ４０１で受信したフレームのデータの長さが短いため、コネクション情報読み出し部１０５によるコネクション情報の読み出しが完了する前にチェックサム計算及び判定が完了する。コネクション情報書き込み保留部１０９が、コネクション情報読み出し部１０５のコネクション情報読み出し処理が完了するまで、コネクション情報書き込み部１０８の書き込みを保留させる。
【００５７】
（時刻Ｔ４０４）コネクション情報読み出し部１０５の読み出しの完了に伴い、コネクション情報書き込み保留部１０９が、保留していたコネクション情報書き込み部１０８の書き込み処理の実行を指示する。コネクション情報書き込み部１０８は指示に基づいて（更新した）コネクション情報の書き込みを開始する。また、書き込み位置特定部１０６が、コネクション情報読み出し部１０５により読み出されたコネクション情報に基づいて書き込み位置を特定する。そして、データ書き込み部１０７が第１バッファ部１０４からデータを取り出し、特定された書き込み位置にデータの書き込みを行う。
【００５８】
上記第１の実施形態に係るデータ受信装置は、チェックサム判定部１０３のチェックサム計算及び判定が完了すると、コネクション情報書き込み部１０８がコネクション情報の書き込みを行っていた。
【００５９】
しかし、受信フレームのデータの長さが短いときなどは、コネクション情報読み出し部１０５による読み出しが完了する前にチェックサム計算及び判定が完了する。コネクション情報読み出し部１０５が読み出しをしている最中にコネクション情報書き込み部１０８がコネクション情報の書き込みを行うと、後者の書き込みが前者の読み出しより先になるデータが発生し、動作順序が逆転することによって動作が破綻するおそれがある。
【００６０】
一方、本実施形態では、コネクション情報書き込み保留部１０９が、チェックサム計算及び判定が完了しても、コネクション情報の読み出しが完了するまでコネクション情報の書き込みを保留させ、読み出しの完了後に書き込みを実行させている。従って、動作順序の逆転を防止できる。
【００６１】
このように、本実施形態に係るデータ受信装置は、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。また、本実施形態に係るデータ受信装置は、コネクション情報の読み出しと書き込みの動作を正しく制御することが出来る。
【００６２】
（第３の実施形態）本発明の第３の実施形態に係るデータ受信装置の概略構成を図５に示す。本実施形態に係るデータ受信装置は、図１に示す上記第１の実施形態に係るデータ受信装置にさらにヘッダ情報保持部１１０を備えた構成となっている。
【００６３】
ヘッダ情報保持部１１０は、現在の受信フレームの一部のヘッダ情報（例えばＴＣＰの場合はどこまでのシーケンス番号のデータを受信したという情報）と次の受信フレームのヘッダ解析により取得されるヘッダ情報を同時に保持する。これにより、コネクション情報書き込み部１０８が書き込みを完了する前、すなわち、コネクション情報書き込み部１０８がコネクション情報の書き込みを行っている最中に、次の受信フレームのヘッダ解析を行うことができる。
【００６４】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図６に示すタイムチャートを用いて説明する。
【００６５】
（時刻Ｔ６０１）ヘッダ解析が完了すると、チェックサム判定部１０３は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【００６６】
また、コネクション情報読み出し部１０５が、ヘッダ解析部１０２がヘッダ解析を行って取得したヘッダ情報（送信元ポート番号、送信元ＩＰアドレス、送信先ポート番号、送信先ＩＰアドレスなど）を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【００６７】
（時刻Ｔ６０２）コネクション情報読み出し部１０５が、コネクション情報の読み出しを完了すると、書き込み位置特定部１０６が読み出されたコネクション情報とヘッダ情報（シーケンス番号など）を元に、受信フレームのデータの書き込み位置（アドレス）を特定する。
【００６８】
データ書き込み部１０７が、第１バッファ部１０４から受信フレームのデータ部分を、例えば４バイトずつ読み出し、第１記憶部１２１における書き込み位置特定部１０６により特定された位置への書き込みを開始する。
【００６９】
（時刻Ｔ６０３）チェックサム判定部１０３によるチェックサムの判定結果が合格の場合、データ書き込み部１０７による書き込みの完了を待たずに、コネクション情報書き込み部１０８は、第２記憶部１２２に対して（更新した）コネクション情報の書き込みを行う。
【００７０】
（時刻Ｔ６０４）コネクション情報の書き込み中にネットワークインタフェース部１０１が次のフレームを受信する。ヘッダ解析部１０２は、データ書き込み部１０７による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する。ヘッダ情報はヘッダ情報保持部１１０に格納される。
【００７１】
（時刻Ｔ６０５）コネクション情報書き込み部１０８の書き込みが完了し、ヘッダ解析部１０２のヘッダ解析が完了すると、コネクション情報読み出し部１０５はヘッダ情報をもとに、データ書き込み部１０７による書き込みの最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。また、チェックサム判定部１０３がチェックサム計算を行う。
【００７２】
このように、本実施形態に係るデータ受信装置では、データ書き込み部１０７が受信フレームのデータ部分の書き込みを行っている最中に、ヘッダ解析部１０２、チェックサム判定部１０３、コネクション情報読み出し部１０５が、次の受信フレームのヘッダ解析、チェックサム計算、コネクション情報の読み出しを並列して行うことで、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。
【００７３】
また、コネクション情報の書き込みを行いつつ、次の受信フレームのヘッダの解析及びヘッダ情報の保持が可能となる。そのため、コネクション情報書き込み部１０８の書き込みの最中に次の受信フレームのヘッダ解析を行うことが可能となり、さらに効率的にデータ受信処理を並列化し、処理速度を向上させることができる。
【００７４】
（第４の実施形態）本発明の第４の実施形態に係るデータ受信装置の概略構成を図７に示す。本実施形態に係るデータ受信装置は、図５に示す上記第３の実施形態に係るデータ受信装置にさらにコネクション情報読み出し保留部１１１を備えた構成となっている。
【００７５】
コネクション情報読み出し保留部１１１は、コネクション情報書き込み部１０８が書き込みを完了するまでコネクション情報読み出し部１０５の読み出しを保留し、コネクション情報書き込み部１０８の書き込みが完了すると、保留したコネクション情報読み出し部１０５の読み出し処理の実行を指示する。
【００７６】
これにより、第１の受信フレームのコネクション情報の書き込み処理より、第１の受信フレームに続く第２の受信フレームのヘッダ解析処理の方が早く完了した場合に、第１の受信フレームのコネクション情報の書き込みが完了するまで第２の受信フレームのコネクション情報の読み出しを保留させ、第１の受信フレームのコネクション情報の書き込みの完了後に第２の受信フレームのコネクション情報の読み出しを実行することができる。
【００７７】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図８に示すタイムチャートを用いて説明する。
【００７８】
（時刻Ｔ８０１）ヘッダ解析が完了すると、チェックサム判定部１０３は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【００７９】
また、コネクション情報読み出し部１０５が、ヘッダ解析部１０２が解析したヘッダ情報（送信元ポート番号、送信元ＩＰアドレス、送信先ポート番号、送信先ＩＰアドレスなど）を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【００８０】
（時刻Ｔ８０２）コネクション情報読み出し部１０５が、コネクション情報の読み出しを完了すると、書き込み位置特定部１０６が読み出されたコネクション情報とヘッダ情報（シーケンス番号など）を元に、受信フレームのデータの書き込み位置（アドレス）を特定する。
【００８１】
データ書き込み部１０７が、第１バッファ部１０４から受信フレームのデータ部分を、例えば４バイトずつ読み出し、第１記憶部１２１における書き込み位置特定部１０６により特定された書き込み位置への書き込みを開始する。
【００８２】
（時刻Ｔ８０３）チェックサム判定部１０３によるチェックサムの判定結果が合格の場合、データ書き込み部１０７による書き込みの完了を待たずに、コネクション情報書き込み部１０８は、第２記憶部１２２に対して（更新した）コネクション情報の書き込みを行う。
【００８３】
また、ネットワークインタフェース部１０１がさらに次のフレームを受信する。ヘッダ解析部１０２は、データ書き込み部１０７による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する。
【００８４】
（時刻Ｔ８０４）コネクション情報の書き込みが完了する前に、ヘッダ解析が完了する。この時、コネクション情報読み出し保留部１１１が、コネクション情報書き込み部１０８が書き込みを完了するまでコネクション情報読み出し部１０５の読み出しを保留させる。
【００８５】
（時刻Ｔ８０５）コネクション情報書き込み部１０８の書き込みが完了する。コネクション情報読み出し保留部１１１が、保留したコネクション情報読み出し部１０５の読み出し処理の実行を指示する。コネクション情報読み出し部１０５はヘッダ情報をもとに、データ書き込み部１０７による書き込みの最中に、その次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。
【００８６】
上記第３の実施形態に係るデータ受信装置は、ヘッダ解析部１０２によるヘッダ解析が完了すると、コネクション情報読み出し部１０５がコネクション情報の読み出しを行っていた。
【００８７】
しかし、コネクション情報書き込み部１０８の書き込み動作より、ヘッダ解析部１０２の解析動作の方が先に完了すると、コネクション情報書き込み部１０８が書き込みを行っている最中に、コネクション情報読み出し部１０５が次の受信フレームのコネクション情報の探索を行うことになり、後者の読み出しが前者の書き込みより先になるデータが発生し、動作順序が逆転することによって動作が破綻するおそれがある。
【００８８】
一方、本実施形態では、ヘッダ解析部１０２がヘッダ解析を完了しても、コネクション情報の書き込みが完了するまでコネクション情報の読み出しを保留させ、書き込みの完了後に読み出しを実行させている。従って、動作順序の逆転を防止できる。
【００８９】
このように、本実施形態に係るデータ受信装置は、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。また、コネクション情報の読み出しと書き込みの動作を正しく制御することが出来る。
【００９０】
（第５の実施形態）本発明の第５の実施形態に係るデータ受信装置の概略構成を図９に示す。本実施形態に係るデータ受信装置は、図５に示す上記第３の実施形態に係るデータ受信装置にさらに書き込み位置保持部１１２を備えた構成となっている。
【００９１】
本実施形態では、第一バッファ部１０４は、第１の受信フレームのデータをデータ書き込み部１０７に渡しつつ、チェックサム計算を行った第１の受信フレームに続く第２の受信フレームのデータをバッファリングする。
【００９２】
また、書き込み位置特定部１０６は、データ書き込み部１０７が第１の受信フレームのデータを書き込んでいる最中に、第２の受信フレームの書き込み位置を特定する。
【００９３】
書き込み位置保持部１１２は、書き込み位置特定部１０６が特定した第２の受信フレームの書き込み位置を、データ書き込み部１０７が第１の受信フレームの書き込みを終えるまで保持する。
【００９４】
データ書き込み部１０７は、受信フレーム（第１の受信フレーム）の書き込みが完了した時、書き込み位置保持部１１２に後続の受信フレーム（第２の受信フレーム）の書き込み位置が保持されているかどうか確認する。書き込み位置保持部１１２に書き込み位置が保持されている場合、データ書き込み部１０７は、第一バッファ部１０４からバッファリングされている次の受信フレーム（第２の受信フレーム）のデータを取り出し、第１記憶部の、書き込み位置保持部１１２が保持している書き込み位置に書き込みを行う。
【００９５】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図１０に示すタイムチャートを用いて説明する。
【００９６】
（時刻Ｔ１００１）ヘッダ解析が完了すると、チェックサム判定部１０３は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【００９７】
また、コネクション情報読み出し部１０５が、ヘッダ解析部１０２が解析したヘッダ情報（送信元ポート番号、送信元ＩＰアドレス、送信先ポート番号、送信先ＩＰアドレスなど）を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【００９８】
（時刻Ｔ１００２）コネクション情報読み出し部１０５が、コネクション情報の読み出しを完了すると、書き込み位置特定部１０６が読み出されたコネクション情報とヘッダ情報（シーケンス番号など）を元に、受信フレームのデータの書き込み位置（アドレス）を特定する。書き込み位置特定部１０６は特定した書き込み位置を書き込み位置保持部１１２に格納する。
【００９９】
データ書き込み部１０７が、第１バッファ部１０４から受信フレームのデータ部分を、例えば４バイトずつ読み出し、第１記憶部１２１における書き込み位置保持部１１２に格納された書き込み位置への書き込みを開始する。
【０１００】
（時刻Ｔ１００３）チェックサム判定部１０３によるチェックサムの判定結果が合格の場合、データ書き込み部１０７による書き込みの完了を待たずに、コネクション情報書き込み部１０８は、第２記憶部１２２に対して（更新した）コネクション情報の書き込みを行う。
【０１０１】
（時刻Ｔ１００４）コネクション情報の書き込み中にネットワークインタフェース部１０１がさらに次のフレームを受信する。ヘッダ解析部１０２は、データ書き込み部１０７による書き込みの最中に、その次の受信フレームのヘッダ解析を先行して開始する。解析したヘッダ情報はヘッダ情報保持部１１０に格納される。
【０１０２】
（時刻Ｔ１００５）コネクション情報書き込み部１０８の書き込みが完了し、ヘッダ解析部１０２のヘッダ解析が完了すると、コネクション情報読み出し部１０５はヘッダ情報をもとに、データ書き込み部１０７による書き込みの最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。
【０１０３】
また、チェックサム判定部１０３は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したバイトを格納していく。
【０１０４】
（時刻Ｔ１００６）コネクション情報読み出し部１０５が、データ書き込み部１０７によるデータ書き込みの最中に、コネクション情報の読み出しを完了する。書き込み位置特定部１０６が、データ書き込み部１０７が書き込みを行っている受信フレームの次の受信フレームのデータの書き込み位置（アドレス）を特定する。書き込み位置特定部１０６は特定した書き込み位置を書き込み位置保持部１１２に格納する。
【０１０５】
（時刻Ｔ１００７）データ書き込み部１０７が、受信フレームの書き込みを完了し、書き込み位置保持部１１２に後続の受信フレームの書き込み位置が保持されているかどうか確認する。書き込み位置保持部１１２に書き込み位置が保持されているため、データ書き込み部１０７は、第一バッファ部１０４からバッファリングされている次の受信フレームのデータを取り出し、第１記憶部１２１における書き込み位置保持部１１２が保持している書き込み位置への書き込みを開始する。
【０１０６】
このように、本実施形態では、ｎ番目（ｎは自然数）の受信フレームのデータ書き込み処理が完了するまで、ｎ＋１番目の受信フレームの書き込み位置を保持して書き込み処理を保留し、ｎ番目の受信フレームのデータ書き込み処理が完了すると、ｎ＋１番目の受信フレームの書き込み処理を開始する。
【０１０７】
上記第３の実施形態に係るデータ受信装置よりも処理の並列度を向上させることができ、処理速度を向上させることが出来る。
【０１０８】
（第６の実施形態）本発明の第６の実施形態に係るデータ受信装置の概略構成を図１１に示す。本実施形態に係るデータ受信装置は、図１に示す上記第１の実施形態に係るデータ受信装置にさらにコネクション情報書き込み保留部１０９、ヘッダ情報保持部１１０、書き込み位置保持部１１２、フレーム抑制部１１３、及び第２バッファ部１１４を備えた構成となっている。コネクション情報書き込み保留部１０９、ヘッダ情報保持部１１０、及び書き込み位置保持部１１２は上記第２、第３、第５の実施形態で説明したものと同様の機能を持つものであり、詳しい説明は省略する。
【０１０９】
第２バッファ部１１４は、ネットワークインタフェース部１０１が入力した受信フレームを一旦バッファリングする。
【０１１０】
ヘッダ解析部１０２は、第２バッファ部１１４が出力した受信フレームのヘッダを解析する。チェックサム判定部１０３は、第２バッファ部１１４が出力した受信フレームのチェックサムの計算を行う。第１バッファ部１０４は、第２バッファ部１１４が出力してチェックサム判定部１０３がチェックサム計算したデータをバッファリングする。
【０１１１】
フレーム抑制部１１３は、コネクション情報書き込み保留部１０９がコネクション情報の書き込みを保留できる限界数に達したとき、または、書き込み位置保持部１１２が保持できる書き込み位置の数が限界数に達したとき、第２バッファ部１１４が新たな受信フレームを出力することを抑制する。
【０１１２】
限界数は任意の値にすることができるが、典型的な形態としては１である。この場合、コネクション情報書き込み保留部１０９が書き込みを保留しているとき、または、書き込み位置保持部１１２が書き込み位置を保持しているとき、フレーム抑制部１１３は第２バッファ部１１４から新たな受信フレームが出力されるのを抑制する。
【０１１３】
限界数を１とした場合の本実施形態に係るデータ受信装置によるデータ受信処理の一例を図１２に示すタイムチャートを用いて説明する。なお、ここでは簡単のため、受信フレームのチェックサム計算の判定結果は全て合格であるとする。
【０１１４】
（時刻Ｔ１２０１）ヘッダ解析部１０２が、ネットワークインタフェース部１０１が入力し、第２バッファ部１１４が一旦バッファリングして出力した第１の受信フレームのヘッダを解析する。
【０１１５】
（時刻Ｔ１２０２）ヘッダ解析が完了すると、チェックサム判定部１０３は第１の受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【０１１６】
また、コネクション情報読み出し部１０５が、ヘッダ解析部１０２が解析したヘッダ情報を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【０１１７】
（時刻Ｔ１２０３）コネクション情報読み出し部１０５による読み出しが完了する前にチェックサム計算及び判定が完了する。コネクション情報書き込み保留部１０９が、コネクション情報読み出し部１０５のコネクション情報読み出し処理が完了するまで、コネクション情報書き込み部１０８の書き込みを一旦保留させる。また、フレーム抑制部１１３は第２バッファ部１１４から第１の受信フレームに続く第２の受信フレームが出力されるのを抑制する。
【０１１８】
（時刻Ｔ１２０４）コネクション情報書き込み保留部１０９が、コネクション情報読み出し部１０５の読み出しの完了に伴い、保留したコネクション情報書き込み部１０８の書き込み処理の実行を指示する。コネクション情報書き込み部１０８が書き込み処理を開始し、フレーム抑制部１１３は第２バッファ部１１４から第２の受信フレームが出力されるのを許可する。
【０１１９】
また、書き込み位置特定部１０６が読み出されたコネクション情報からデータ書き込み位置を特定し、書き込み位置保持部１１２に格納する。データ書き込み部１０７は、書き込み位置保持部１１２に格納された書き込み位置を参照して、第１バッファ部１０４からデータ（第１の受信フレームのデータ）を取り出し、第１記憶部１２１に書き込む。
【０１２０】
コネクション情報書き込み部１０８の書き込み処理及びデータ書き込み部１０７の書き込み処理と並行して、ヘッダ解析部１０２は第２バッファ部から出力された第２の受信フレームのヘッダ解析を行う。ヘッダ情報はヘッダ情報保持部１１０に格納される。
【０１２１】
（時刻Ｔ１２０５）第２の受信フレームのヘッダ解析が完了すると、チェックサム判定部１０３は第２の受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【０１２２】
また、コネクション情報読み出し部１０５が、ヘッダ解析部１０２が解析したヘッダ情報を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【０１２３】
（時刻Ｔ１２０６）コネクション情報読み出し部１０５によるコネクション情報の読み出しが完了する。書き込み位置特定部１０６が読み出されたコネクション情報からデータ書き込み位置を特定し、書き込み位置保持部１１２に格納する。
【０１２４】
データ書き込み部１０７は、第１バッファ部１０４からデータ（第２の受信フレームのデータ）を取り出し、第１記憶部１２１における書き込み位置保持部１１２に格納された書き込み位置に書き込む。
【０１２５】
（時刻Ｔ１２０７）第２の受信フレームのチェックサム計算及び判定が完了する。データ書き込み部１０７による第１記憶部１２１への書き込みの最中に、コネクション情報書き込み部１０８が第２記憶部１２２への書き込み処理を開始する。
【０１２６】
（時刻Ｔ１２０８）ヘッダ解析部１０２が、ネットワークインタフェース部１０１が入力し、第２バッファ部１１４が一旦バッファリングして出力した第２の受信フレームに続く第３の受信フレームのヘッダを解析する。この時、コネクション情報書き込み部１０８による第２記憶部１２２への書き込み処理は完了していない。すなわち、ヘッダ解析とコネクション情報の書き込みとが並行して行われる。
【０１２７】
（時刻Ｔ１２０９）第３の受信フレームのヘッダ解析が完了すると、チェックサム判定部１０３は第３の受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第１バッファ部１０４は、チェックサム判定部１０３がチェックサム計算したデータを格納していく。
【０１２８】
また、コネクション情報読み出し部１０５が、ヘッダ解析部１０２が解析したヘッダ情報を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【０１２９】
（時刻Ｔ１２１０）コネクション情報読み出し部１０５によるコネクション情報の読み出しが完了する。書き込み位置特定部１０６が読み出されたコネクション情報から第３の受信フレームのデータの書き込み位置を特定し、書き込み位置保持部１１２に格納する。
【０１３０】
この時、データ書き込み部１０７は第２の受信フレームのデータの書き込みを完了していない。従って、書き込み位置保持部１１２は書き込み位置を保持しておく。また、フレーム抑制部１１３は第２バッファ部１１４から第３の受信フレームに続く第４の受信フレームが出力されるのを抑制する。
【０１３１】
（時刻Ｔ１２１１）第３の受信フレームのチェックサム計算及び判定が完了する。データ書き込み部１０７による第１記憶部１２１への書き込みの最中に、コネクション情報書き込み部１０８が第２記憶部１２２への書き込み処理を開始する。
【０１３２】
（時刻Ｔ１２１２）データ書き込み部１０７が第２の受信フレームのデータの書き込みを完了する。データ書き込み部１０７は、書き込み位置保持部１１２に後続の受信フレームである第３の受信フレームの書き込み位置が保持されているかどうか確認する。
【０１３３】
書き込み位置保持部１１２に第３の受信フレームの書き込み位置が保持されているため、データ書き込み部１０７は、第一バッファ部１０４から第３の受信フレームのデータを取り出し、第１記憶部１２１における書き込み位置保持部１１２が保持している書き込み位置への書き込みを開始する。
【０１３４】
書き込み位置保持部１１２が保持する書き込み位置の数が０になり、フレーム抑制部１１３は第２バッファ部１１４から第４の受信フレームが出力されるのを許可する。ヘッダ解析部１０２は第４の受信フレームのヘッダを解析する。
【０１３５】
以降は同様の処理が繰り返される。
【０１３６】
このように、コネクション情報の読み出し完了前にチェックサム計算が完了した場合、コネクション情報の読み出しが完了するまで（更新した）コネクション情報の書き込みを保留し、次の受信フレームを第２バッファ部１１４がバッファリングしておく。そして、コネクション情報の読み出しが完了し、コネクション情報の書き込みが開始した時点で、バッファリングしていた次の受信フレームのヘッダ解析を開始する。
【０１３７】
また、第１記憶部１２１へのｎ番目（ｎは自然数）の受信フレームのデータ書き込みが完了するまで、書き込み位置保持部１１２がｎ＋１番目の受信フレームの書き込み位置を保持してｎ＋１番目の受信フレームのデータ書き込みを保留し、第２バッファ部１１４がｎ＋２番目の受信フレームをバッファリングしておく。そして、ｎ番目の受信フレームのデータ書き込みが完了してｎ＋１番目の受信フレームのデータ書き込みが開始した時点で、バッファリングしていたｎ＋２番目の受信フレームが第２バッファ部１１４から出力されヘッダ解析が行われる。
【０１３８】
従って、第１記憶部１２１や第２記憶部１２２へのアクセスが遅延するなどして受信フレームの処理が間に合わなくなった場合でも、フレーム抑制部１１３及び第２バッファ部１１４により適切に受信フレームがバッファリングされるため、受信フレームの破棄を最小限に抑えることができる。
【０１３９】
上記実施形態ではフレーム抑制部１１３は、コネクション情報書き込み保留部１０９がコネクション情報の書き込みを保留している数が限界数に達した時、又は書き込み位置保持部１１２が保持する書き込み位置の数が限界数に達した時に第２バッファ部１１４の出力の抑制を行っていたが、いずれか一方のみを監視し、第２バッファ部１１４の出力の抑制を行うようにしてもよい。
【０１４０】
また、第２バッファ部１１４からの出力を抑制することで第２バッファ部１１４から受信フレームが溢れる可能性があるが、その場合は溢れた受信フレームを破棄してもよい。
【０１４１】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０１４２】
また、上述した実施形態で説明したデータ受信装置の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、データ受信装置の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【０１４３】
また、データ受信装置の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【図面の簡単な説明】
【０１４４】
【図１】本発明の第１の実施形態に係るデータ受信装置の概略構成図である。
【図２】同第１の実施形態に係るデータ受信処理のタイムチャートである。
【図３】本発明の第２の実施形態に係るデータ受信装置の概略構成図である。
【図４】同第２の実施形態に係るデータ受信処理のタイムチャートである。
【図５】本発明の第３の実施形態に係るデータ受信装置の概略構成図である。
【図６】同第３の実施形態に係るデータ受信処理のタイムチャートである。
【図７】本発明の第４の実施形態に係るデータ受信装置の概略構成図である。
【図８】同第４の実施形態に係るデータ受信処理のタイムチャートである。
【図９】本発明の第５の実施形態に係るデータ受信装置の概略構成図である。
【図１０】同第５の実施形態に係るデータ受信処理のタイムチャートである。
【図１１】本発明の第６の実施形態に係るデータ受信装置の概略構成図である。
【図１２】同第６の実施形態に係るデータ受信処理のタイムチャートである。
【符号の説明】
【０１４５】
１０１  ネットワークインタフェース部
１０２  ヘッダ解析部
１０３  チェックサム判定部
１０４  第１バッファ部
１０５  コネクション情報読み出し部
１０６  書き込み位置特定部
１０７  データ書き込み部
１０８  コネクション情報書き込み部
１０９  コネクション情報書き込み保留部
１１０  ヘッダ情報保持部
１１１  コネクション情報読み出し保留部
１１２  書き込み位置保持部
１１３  フレーム抑制部
１１４  第２バッファ部
１２１  第１記憶部
１２２  第２記憶部
【図１】
2010109746.tif 000003
【図２】
2010109746.tif 000004
【図３】
2010109746.tif 000005
【図４】
2010109746.tif 000006
【図５】
2010109746.tif 000007
【図６】
2010109746.tif 000008
【図７】
2010109746.tif 000009
【図８】
2010109746.tif 000010
【図９】
2010109746.tif 000011
【図１０】
2010109746.tif 000012
【図１１】
2010109746.tif 000013
【図１２】
2010109746.tif 000014