説明

データ受信装置、データ受信方法、及びデータ受信プログラム

【課題】TCPやUDPの受信処理を効率的に並列化し、処理速度を向上させる。
【解決手段】フレームのヘッダを解析し、ヘッダ情報を出力するヘッダ解析部102と、前記フレームのチェックサムを計算して判定するチェックサム判定部103と、前記フレームのデータ部分を格納するバッファ部104と、前記ヘッダ情報に対応するコネクション情報を第2記憶部122から読み出す読み出し部105と、前記コネクション情報に基づいて、前記データ部分の書き込み位置を特定する特定部106と、前記チェックサム判定の前に、前記バッファ部からデータを読み出し、第1記憶部121の前記特定された書き込み位置に書き込み始める書き込み部107と、前記判定結果が合格であった場合、前記データ書き込み部が書き込みを行っている最中に、前記ヘッダ情報に基づいて更新したコネクション情報を前記第2記憶部に書き込む書き込み部108と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ受信装置、データ受信方法、及びデータ受信プログラムに関するものである。
【背景技術】
【0002】
インターネット通信で使われている主要なプロトコルとしてTCP/IPがある。従来のTCP/IPは主にソフトウェア処理によって実現されており、例えばパソコンや組み込み機器などのCPUによって動作する。
【0003】
しかし、昨今のネットワークインフラの広帯域化や、ネットワークを介して伝送される映像コンテンツ等の広帯域化により、ネットワーク処理の負荷が増大し、従来のようなCPUによる処理では性能が足りなくなってきている。
【0004】
そこで、CPUの代わりに、サブプロセッサや専用ハードウェアがTCP/IPのプロトコル処理を行うTOE(TCP/IP Offload Engine)が提案されている。TOEを用いることによって、従来のソフトウェア処理より高速なTCP/IP処理が望める。
【0005】
TOEには様々な構成があり、例えば特許文献1には、ソケットAPIの一部の処理を実行するサブプロセッサAと、TCP/UDP受信処理を実行するサブプロセッサBと、TCP/UDP送信処理を実行するサブプロセッサCと、MACドライバ及びIP受信処理を実行するサブプロセッサDと、MACドライバ及びIP送信処理を実行するサブプロセッサEとを備え、これらが並列処理を行う通信装置が開示されている。
【0006】
しかし、この特許文献1では、TCP/UDP受信処理は1つのサブプロセッサが実行することしか述べられておらず、TCP/UDPの受信処理自体をどのように並列化するかについては述べられていない。
【0007】
TCP/UDPの受信処理は、コネクション情報の読み出し、フレームのデータの書き込み、更新したコネクション情報の書き込みなど複数のステップに分かれており、これらをどのように並列化して実行するかが、TOEの性能として重要な要素となる。
【特許文献1】特開2008−146486号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明は、TCPやUDPの受信処理を効率的に並列化して実行し、処理速度を向上させることが出来るデータ受信装置、データ受信方法、及びデータ受信プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の一態様によるデータ受信装置は、ネットワークを介してフレームを受信するデータ受信装置であって、第1の受信フレームを入力するネットワークインタフェース部と、フレームのデータ部分を記憶する第1記憶部と、フレームのコネクションに関連する情報であるコネクション情報を記憶する第2記憶部と、前記第1の受信フレームのヘッダを解析し、第1のヘッダ情報を出力するヘッダ解析部と、前記第1の受信フレームのチェックサムを計算し、計算が完了するとチェックサムの合格/不合格を判定し、判定結果を出力するチェックサム判定部と、前記第1の受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを格納する第1バッファ部と、前記第1のヘッダ情報に対応する前記コネクション情報を前記第2記憶部から探索して読み出すコネクション情報読み出し部と、前記第1のヘッダ情報及び前記コネクション情報読み出し部により読み出された前記コネクション情報に基づいて、前記第1の受信フレームのデータ部分の前記第1記憶部における書き込み位置を特定する書き込み位置特定部と、前記第1の受信フレームのチェックサム判定の前に、前記第1バッファ部に格納されているデータを読み出し、前記第1記憶部の前記書き込み位置特定部により特定された書き込み位置に、読み出したデータを書き込み始めるデータ書き込み部と、前記第1のヘッダ情報に基づいて前記コネクション情報を更新し、前記判定結果が合格であった場合、前記データ書き込み部が前記第1記憶部への書き込みを行っている最中に、前記更新したコネクション情報を前記第2記憶部に書き込むコネクション情報書き込み部と、を備えるものである。
【0010】
本発明の一態様によるデータ受信方法は、ネットワークを介してフレームを受信するデータ受信方法であって、受信フレームを入力し、前記受信フレームのヘッダを解析してヘッダ情報を生成し、前記受信フレームのチェックサムを計算して合格/不合格を判定し、前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第1バッファ部に格納し、前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第2記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出し、前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第1記憶部における書き込み位置を特定し、前記受信フレームのチェックサム判定の前に、前記第1バッファ部に格納されているデータを読み出し、前記第1記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始し、前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第1記憶部への書き込みの最中に、前記更新したコネクション情報を前記第2記憶部に書き込むものである。
【0011】
本発明の一態様によるデータ受信プログラムは、ネットワークを介してフレームを受信するデータ受信プログラムであって、受信フレームを入力するステップと、前記受信フレームのヘッダを解析してヘッダ情報を生成するステップと、前記受信フレームのチェックサムを計算して合格/不合格を判定するステップと、前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第1バッファ部に格納するステップと、前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第2記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出すステップと、前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第1記憶部における書き込み位置を特定するステップと、前記受信フレームのチェックサム判定の前に、前記第1バッファ部に格納されているデータを読み出し、前記第1記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始するステップと、前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第1記憶部への書き込みの最中に、前記更新したコネクション情報を前記第2記憶部に書き込むステップと、をコンピュータに実行させるものである。
【発明の効果】
【0012】
本発明によれば、TCPやUDPの受信処理を効率的に並列化して実行し、処理速度を向上させることができる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の実施の形態を図面に基づいて説明する。
【0014】
(第1の実施形態)図1に本発明の第1の実施形態に係るデータ受信装置の概略構成を示す。データ受信装置は、ネットワークインタフェース部101、ヘッダ解析部102、チェックサム判定部103、第1バッファ部104、コネクション情報読み出し部105、書き込み位置特定部106、データ書き込み部107、コネクション情報書き込み部108、第1記憶部121、及び第2記憶部122を備える。このデータ受信装置は、イーサネット(登録商標)や無線LAN等のネットワークを介して、データ送信装置(図示せず)からTCP/IPやUDP/IPなどのデータフレームを受信する。
【0015】
ネットワークインタフェース部101は例えばNIC(Network Interface Card)やMAC(Media Access Control)であり、ネットワークから受信フレームを入力する。ヘッダ解析部102は受信フレームのヘッダ(IPヘッダと、UDP又はTCPヘッダ)を解析し、ヘッダ情報を出力する。
【0016】
チェックサム判定部103は受信フレームのデータ部分を含めたチェックサムを計算して、計算が全て完了すると送信側から送られてきたチェックサムと一致するか否か検査する。両者が一致していれば合格と判定し、不一致であればネットワーク上でデータに誤りが生じていることになるので不合格と判定する。チェックサム判定部103は、判定結果をコネクション情報書き込み部108へ出力する。
【0017】
第1バッファ部104は、受信フレームの少なくともデータ部分を一時的に格納する。
【0018】
コネクション情報読み出し部105は、ヘッダ解析部102から出力されたヘッダ情報に基づいて第2記憶部122を探索し、対応するコネクション情報を第2記憶部122から読み出す。コネクション情報については後述する。
【0019】
書き込み位置特定部106は、ヘッダ解析部102から出力されたヘッダ情報及びコネクション情報読み出し部105が読み出したコネクション情報に基づいて、第1記憶部121における受信フレームのデータの書き込み位置を特定する。
【0020】
データ書き込み部107は、第1バッファ部104に格納されているデータを読み出し、第1記憶部121における書き込み位置特定部106により特定された位置に書き込みを行う。
【0021】
コネクション情報書き込み部108は、チェックサム判定部103による判定結果が合格であった場合に、ヘッダ情報に基づいてコネクション情報を更新し、更新したコネクション情報を第2記憶部122に書き込む。
【0022】
ヘッダ解析部102、チェックサム判定部103、コネクション情報読み出し部105、書き込み位置特定部106、データ書き込み部107、及びコネクション情報書き込み部108はプロセッサ又は専用回路で構成される。第1バッファ部104、第1記憶部121、第2記憶部122はメモリデバイスである。例えば、第1バッファ部104はオンチップメモリ、第1記憶部121はSDRAM、第2記憶部122はSDRAM又はオンチップメモリで構成される。第2記憶部122は第1記憶部121と並行してアクセス可能なものとする。
【0023】
受信フレーム(TCPの場合はTCPセグメント、UDPの場合はUDPパケット)の処理について説明する。
【0024】
TCPもUDPもコネクション指向のプロトコルであり、送信先と送信元との間で、送信元IPアドレス、送信元ポート番号、送信先IPアドレス、送信先ポート番号で決定されるコネクションが定義される。データ受信装置はこれらのコネクション毎にコネクション情報を第2記憶部122に保持する。コネクション情報とは、例えば受信したデータを書き込む第1記憶部121上のアドレス領域の情報である。
【0025】
受信フレームのIPヘッダには送信元IPアドレスと送信先IPアドレスが含まれ、UDPまたはTCPヘッダには送信元ポート番号と送信先ポート番号が含まれる。従って、ヘッダ解析部102は受信フレームのIPヘッダとUDPまたはTCPヘッダを解析し、ヘッダ情報を取得し、出力する。
【0026】
コネクション情報読み出し部105は、ヘッダ解析部102から出力されたヘッダ情報に基づいてコネクションを特定し、第2記憶部105に保持されているこのコネクションに対応するコネクション情報を探索する。コネクション情報読み出し部105は、コネクション情報を発見すると、そのコネクションに関連付けて記憶されている、データを書き込むメモリ(第1記憶部121)上のアドレス領域の情報を得ることができる。
【0027】
例えば、UDPの場合は、書き込みアドレス特定部106が、このアドレス領域の先頭アドレスをデータの書き込みアドレスと特定する。
【0028】
TCPの場合は、データの各バイトに対応するシーケンス番号がプロトコルによって定義されており、受信フレームのTCPヘッダに受信データの先頭シーケンス番号(受信シーケンス番号)が含まれている。コネクション情報も、データを書き込むアドレス領域の情報に加え、例えばこのアドレス領域の先頭に書き込むべきデータのシーケンス番号(ベースシーケンス番号)を含む。
【0029】
従って、TCPの場合、書き込みアドレス特定部106は、このアドレス領域の情報とベースシーケンス番号の情報に加え、先行ヘッダ解析部102が解析した受信シーケンス番号の情報を用いて、受信データの書き込みアドレスを、アドレス領域の先頭アドレス+(受信シーケンス番号−ベースシーケンス番号)として求める。
【0030】
このようにすることで、例えば一部のデータがロストし、そのデータだけが後に再送された場合など、データをシーケンス番号の順番通りに受信できなかった場合でも、第1記憶部上では順番通りに並び替えて配置することが出来る。
【0031】
以上の書き込みアドレスの特定処理は一例であり、これに限るものではない。データ書き込み部107は、第1記憶部121の書き込み位置特定部106が特定したアドレスに対して受信データを書き込む。
【0032】
コネクション情報書き込み部108は、例えばコネクション情報に関連してデータを受信したという情報を第2記憶部122に書き込む。TCPの場合は、どこまでのシーケンス番号のデータを受信したという情報を書き込んでもよい。ただし、データはネットワーク上で破損している可能性もあるので、破損したフレームを排除するためにTCPやUDPではヘッダだけでなくデータ部分も含めたチェックサムが用いられる。
【0033】
従って、チェックサム判定部103では、受信フレームのデータ部分も含めたチェックサムの計算を行い、合格/不合格を判定する。結果が合格だった場合のみ、コネクション情報書き込み部108は書き込みを行い、不合格だった場合は書き込みを行わない。
【0034】
このようにすることで、チェックサムの結果が不合格だった場合はデータを受信したという事実が記憶されないので、第1記憶部121に書き込んだデータは後続のデータで上書きされ、実質的にデータを破棄することが出来る。
【0035】
次に、本実施形態に係るデータ受信装置によるデータ受信処理の一例を図2に示すタイムチャートを用いて説明する。図2は、各部の処理がどのように並列化されるかを簡略的に示すものであり、1段目がネットワークインタフェース部101から入力した受信フレームに対するヘッダ解析部102のヘッダ解析処理、チェックサム判定部103のチェックサム計算処理、及び第1バッファ部104のバッファリング処理を示す。
【0036】
図2の2段目は、第2記憶部122に対するコネクション情報読み出し部105の読み出し処理及びコネクション情報書き込み部108の書き込み処理を示す。図2の3段目は、第1記憶部121に対するデータ書き込み部107の書き込み処理を示す。
【0037】
書き込みアドレス特定部106の処理は、要する時間が短いので省略している。また、最初の受信フレームの処理を実線、次の受信フレームの処理を破線、さらに次のフレームの処理を実線というように、隣り合うフレームの処理を判別しやすくするため実線と破線を交互に用いて示している。これらは以降のタイムチャートでも同様である。
【0038】
ネットワークインタフェース部101が最初のフレームを入力すると、ヘッダ解析部102が入力された受信フレームを一定バイト、例えば4バイトずつ先頭からスキャンし、受信フレームのヘッダの解析を開始する(時刻T200)。
【0039】
このとき、ヘッダ解析と並行して、チェックサム判定部103が受信フレームのヘッダ部分のチェックサム計算を、例えば4バイトずつ、開始するようにしてもよい。
【0040】
ヘッダ解析が完了すると、チェックサム判定部103は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う(時刻T201)。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0041】
さらに、コネクション情報読み出し部105が、ヘッダ解析部102が解析したヘッダ情報(送信元ポート番号、送信元IPアドレス、送信先ポート番号、送信先IPアドレスなど)を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【0042】
コネクション情報読み出し部105が、コネクション情報の読み出しを完了すると(時刻T202)、書き込み位置特定部106が読み出されたコネクション情報とヘッダ情報(シーケンス番号など)を元に、受信フレームのデータの書き込み位置(アドレス)を特定する。
【0043】
データ書き込み部107は、チェックサム判定部103がチェックサム判定を行う前に、第1バッファ部104から受信フレームのデータ部分を、例えば4バイトずつ読み出し、第1記憶部121における書き込み位置特定部106により特定された位置へのデータの書き込みを開始する。
【0044】
ここで、チェックサム判定部103とデータ書き込み部107は、受信フレームの同じデータ部分を同じレート(例えば4バイトずつ)で処理する。チェックサム判定部103はコネクション情報読み出し部105が読み出しを開始すると共にデータ部分のチェックサム計算を開始している。一方、データ書き込み部107は、コネクション情報読み出し部105がコネクション情報の読み出しを完了し、書き込み位置特定部106が書き込み位置を特定してからデータの書き込みを開始する。
【0045】
従って、データ書き込み部107による書き込みよりチェックサム判定部103のチェックサム計算及び第1バッファ部104のバッファリングの方が先に完了する。また、データ書き込み部107が書き込みを行う第1記憶部121は、通常はホストCPU(図示せず)などによる書き込んだデータの読み出しアクセスが別途あるので、そのアクセス調停のために書き込みが待たされ、結果的にチェックサム判定部103の方が先に処理を終えるという場合もあり得る。
【0046】
そこで、チェックサム判定部103によるチェックサムの判定結果が合格の場合、データ書き込み部107による書き込みの完了を待たずに、コネクション情報書き込み部108は、第2記憶部122に対して(更新した)コネクション情報の書き込みを行う(時刻T203)。ここで第2記憶部122に書き込まれるコネクション情報には、例えば次の受信フレームのデータを書き込むべき第1記憶部121のアドレス領域の情報が含まれる。
【0047】
コネクション情報の書き込みが完了し、次のフレームを受信した場合、ヘッダ解析部102は、データ書き込み部107による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する(時刻T204)。また、チェックサム判定部103は、その次の受信フレームのチェックサムの計算を先行して行う。
【0048】
ヘッダ解析部102がヘッダ解析を完了しヘッダ情報を出力すると、コネクション情報読み出し部105はそのヘッダ情報に基づいて、データ書き込み部107が書き込みを行っている最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する(時刻T205)。以降は同様の処理が繰り返される。
【0049】
このように、本実施形態に係るデータ受信装置では、データ書き込み部107が受信フレームのデータの書き込みを行っている最中に、ヘッダ解析部102、チェックサム判定部103、コネクション情報読み出し部105が、その次の受信フレームのヘッダ解析、チェックサム計算、コネクション情報の読み出しを並列して行うことで、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。
【0050】
(第2の実施形態)本発明の第2の実施形態に係るデータ受信装置の概略構成を図3に示す。本実施形態に係るデータ受信装置は、図1に示す上記第1の実施形態に係るデータ受信装置にさらにコネクション情報書き込み保留部109を備えた構成となっている。
【0051】
コネクション情報書き込み保留部109は、コネクション情報読み出し部105が第2記憶部122からコネクション情報の読み出しを完了するまで、コネクション情報書き込み部108の書き込みを保留し、コネクション情報読み出し部105の読み出しが完了すると、保留したコネクション情報書き込み部108の書き込み処理の実行を指示する。
【0052】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図4に示すタイムチャートを用いて説明する。
【0053】
(時刻T401)コネクション情報書き込み部108によるコネクション情報の書き込みが完了する。この時、データ書き込み部107は第1記憶部121へデータの書き込みを行っている。ネットワークインタフェース部101が次のフレームを受信し、ヘッダ解析部102が、データ書き込み部107による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する。また、チェックサム判定部103は、ヘッダ部分のチェックサムの計算を先行して行う。なお、時刻T401で受信したフレームのデータの長さは短いものとする。
【0054】
(時刻T402)ヘッダ解析部102がヘッダ解析を完了すると、チェックサム判定部103は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0055】
コネクション情報読み出し部105はヘッダ情報をもとに、データ書き込み部107による書き込みの最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。
【0056】
(時刻T403)時刻T401で受信したフレームのデータの長さが短いため、コネクション情報読み出し部105によるコネクション情報の読み出しが完了する前にチェックサム計算及び判定が完了する。コネクション情報書き込み保留部109が、コネクション情報読み出し部105のコネクション情報読み出し処理が完了するまで、コネクション情報書き込み部108の書き込みを保留させる。
【0057】
(時刻T404)コネクション情報読み出し部105の読み出しの完了に伴い、コネクション情報書き込み保留部109が、保留していたコネクション情報書き込み部108の書き込み処理の実行を指示する。コネクション情報書き込み部108は指示に基づいて(更新した)コネクション情報の書き込みを開始する。また、書き込み位置特定部106が、コネクション情報読み出し部105により読み出されたコネクション情報に基づいて書き込み位置を特定する。そして、データ書き込み部107が第1バッファ部104からデータを取り出し、特定された書き込み位置にデータの書き込みを行う。
【0058】
上記第1の実施形態に係るデータ受信装置は、チェックサム判定部103のチェックサム計算及び判定が完了すると、コネクション情報書き込み部108がコネクション情報の書き込みを行っていた。
【0059】
しかし、受信フレームのデータの長さが短いときなどは、コネクション情報読み出し部105による読み出しが完了する前にチェックサム計算及び判定が完了する。コネクション情報読み出し部105が読み出しをしている最中にコネクション情報書き込み部108がコネクション情報の書き込みを行うと、後者の書き込みが前者の読み出しより先になるデータが発生し、動作順序が逆転することによって動作が破綻するおそれがある。
【0060】
一方、本実施形態では、コネクション情報書き込み保留部109が、チェックサム計算及び判定が完了しても、コネクション情報の読み出しが完了するまでコネクション情報の書き込みを保留させ、読み出しの完了後に書き込みを実行させている。従って、動作順序の逆転を防止できる。
【0061】
このように、本実施形態に係るデータ受信装置は、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。また、本実施形態に係るデータ受信装置は、コネクション情報の読み出しと書き込みの動作を正しく制御することが出来る。
【0062】
(第3の実施形態)本発明の第3の実施形態に係るデータ受信装置の概略構成を図5に示す。本実施形態に係るデータ受信装置は、図1に示す上記第1の実施形態に係るデータ受信装置にさらにヘッダ情報保持部110を備えた構成となっている。
【0063】
ヘッダ情報保持部110は、現在の受信フレームの一部のヘッダ情報(例えばTCPの場合はどこまでのシーケンス番号のデータを受信したという情報)と次の受信フレームのヘッダ解析により取得されるヘッダ情報を同時に保持する。これにより、コネクション情報書き込み部108が書き込みを完了する前、すなわち、コネクション情報書き込み部108がコネクション情報の書き込みを行っている最中に、次の受信フレームのヘッダ解析を行うことができる。
【0064】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図6に示すタイムチャートを用いて説明する。
【0065】
(時刻T601)ヘッダ解析が完了すると、チェックサム判定部103は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0066】
また、コネクション情報読み出し部105が、ヘッダ解析部102がヘッダ解析を行って取得したヘッダ情報(送信元ポート番号、送信元IPアドレス、送信先ポート番号、送信先IPアドレスなど)を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【0067】
(時刻T602)コネクション情報読み出し部105が、コネクション情報の読み出しを完了すると、書き込み位置特定部106が読み出されたコネクション情報とヘッダ情報(シーケンス番号など)を元に、受信フレームのデータの書き込み位置(アドレス)を特定する。
【0068】
データ書き込み部107が、第1バッファ部104から受信フレームのデータ部分を、例えば4バイトずつ読み出し、第1記憶部121における書き込み位置特定部106により特定された位置への書き込みを開始する。
【0069】
(時刻T603)チェックサム判定部103によるチェックサムの判定結果が合格の場合、データ書き込み部107による書き込みの完了を待たずに、コネクション情報書き込み部108は、第2記憶部122に対して(更新した)コネクション情報の書き込みを行う。
【0070】
(時刻T604)コネクション情報の書き込み中にネットワークインタフェース部101が次のフレームを受信する。ヘッダ解析部102は、データ書き込み部107による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する。ヘッダ情報はヘッダ情報保持部110に格納される。
【0071】
(時刻T605)コネクション情報書き込み部108の書き込みが完了し、ヘッダ解析部102のヘッダ解析が完了すると、コネクション情報読み出し部105はヘッダ情報をもとに、データ書き込み部107による書き込みの最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。また、チェックサム判定部103がチェックサム計算を行う。
【0072】
このように、本実施形態に係るデータ受信装置では、データ書き込み部107が受信フレームのデータ部分の書き込みを行っている最中に、ヘッダ解析部102、チェックサム判定部103、コネクション情報読み出し部105が、次の受信フレームのヘッダ解析、チェックサム計算、コネクション情報の読み出しを並列して行うことで、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。
【0073】
また、コネクション情報の書き込みを行いつつ、次の受信フレームのヘッダの解析及びヘッダ情報の保持が可能となる。そのため、コネクション情報書き込み部108の書き込みの最中に次の受信フレームのヘッダ解析を行うことが可能となり、さらに効率的にデータ受信処理を並列化し、処理速度を向上させることができる。
【0074】
(第4の実施形態)本発明の第4の実施形態に係るデータ受信装置の概略構成を図7に示す。本実施形態に係るデータ受信装置は、図5に示す上記第3の実施形態に係るデータ受信装置にさらにコネクション情報読み出し保留部111を備えた構成となっている。
【0075】
コネクション情報読み出し保留部111は、コネクション情報書き込み部108が書き込みを完了するまでコネクション情報読み出し部105の読み出しを保留し、コネクション情報書き込み部108の書き込みが完了すると、保留したコネクション情報読み出し部105の読み出し処理の実行を指示する。
【0076】
これにより、第1の受信フレームのコネクション情報の書き込み処理より、第1の受信フレームに続く第2の受信フレームのヘッダ解析処理の方が早く完了した場合に、第1の受信フレームのコネクション情報の書き込みが完了するまで第2の受信フレームのコネクション情報の読み出しを保留させ、第1の受信フレームのコネクション情報の書き込みの完了後に第2の受信フレームのコネクション情報の読み出しを実行することができる。
【0077】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図8に示すタイムチャートを用いて説明する。
【0078】
(時刻T801)ヘッダ解析が完了すると、チェックサム判定部103は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0079】
また、コネクション情報読み出し部105が、ヘッダ解析部102が解析したヘッダ情報(送信元ポート番号、送信元IPアドレス、送信先ポート番号、送信先IPアドレスなど)を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【0080】
(時刻T802)コネクション情報読み出し部105が、コネクション情報の読み出しを完了すると、書き込み位置特定部106が読み出されたコネクション情報とヘッダ情報(シーケンス番号など)を元に、受信フレームのデータの書き込み位置(アドレス)を特定する。
【0081】
データ書き込み部107が、第1バッファ部104から受信フレームのデータ部分を、例えば4バイトずつ読み出し、第1記憶部121における書き込み位置特定部106により特定された書き込み位置への書き込みを開始する。
【0082】
(時刻T803)チェックサム判定部103によるチェックサムの判定結果が合格の場合、データ書き込み部107による書き込みの完了を待たずに、コネクション情報書き込み部108は、第2記憶部122に対して(更新した)コネクション情報の書き込みを行う。
【0083】
また、ネットワークインタフェース部101がさらに次のフレームを受信する。ヘッダ解析部102は、データ書き込み部107による書き込みの最中に、次の受信フレームのヘッダ解析を先行して開始する。
【0084】
(時刻T804)コネクション情報の書き込みが完了する前に、ヘッダ解析が完了する。この時、コネクション情報読み出し保留部111が、コネクション情報書き込み部108が書き込みを完了するまでコネクション情報読み出し部105の読み出しを保留させる。
【0085】
(時刻T805)コネクション情報書き込み部108の書き込みが完了する。コネクション情報読み出し保留部111が、保留したコネクション情報読み出し部105の読み出し処理の実行を指示する。コネクション情報読み出し部105はヘッダ情報をもとに、データ書き込み部107による書き込みの最中に、その次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。
【0086】
上記第3の実施形態に係るデータ受信装置は、ヘッダ解析部102によるヘッダ解析が完了すると、コネクション情報読み出し部105がコネクション情報の読み出しを行っていた。
【0087】
しかし、コネクション情報書き込み部108の書き込み動作より、ヘッダ解析部102の解析動作の方が先に完了すると、コネクション情報書き込み部108が書き込みを行っている最中に、コネクション情報読み出し部105が次の受信フレームのコネクション情報の探索を行うことになり、後者の読み出しが前者の書き込みより先になるデータが発生し、動作順序が逆転することによって動作が破綻するおそれがある。
【0088】
一方、本実施形態では、ヘッダ解析部102がヘッダ解析を完了しても、コネクション情報の書き込みが完了するまでコネクション情報の読み出しを保留させ、書き込みの完了後に読み出しを実行させている。従って、動作順序の逆転を防止できる。
【0089】
このように、本実施形態に係るデータ受信装置は、効率的にデータ受信処理を並列化することができ、処理速度を向上させることが出来る。また、コネクション情報の読み出しと書き込みの動作を正しく制御することが出来る。
【0090】
(第5の実施形態)本発明の第5の実施形態に係るデータ受信装置の概略構成を図9に示す。本実施形態に係るデータ受信装置は、図5に示す上記第3の実施形態に係るデータ受信装置にさらに書き込み位置保持部112を備えた構成となっている。
【0091】
本実施形態では、第一バッファ部104は、第1の受信フレームのデータをデータ書き込み部107に渡しつつ、チェックサム計算を行った第1の受信フレームに続く第2の受信フレームのデータをバッファリングする。
【0092】
また、書き込み位置特定部106は、データ書き込み部107が第1の受信フレームのデータを書き込んでいる最中に、第2の受信フレームの書き込み位置を特定する。
【0093】
書き込み位置保持部112は、書き込み位置特定部106が特定した第2の受信フレームの書き込み位置を、データ書き込み部107が第1の受信フレームの書き込みを終えるまで保持する。
【0094】
データ書き込み部107は、受信フレーム(第1の受信フレーム)の書き込みが完了した時、書き込み位置保持部112に後続の受信フレーム(第2の受信フレーム)の書き込み位置が保持されているかどうか確認する。書き込み位置保持部112に書き込み位置が保持されている場合、データ書き込み部107は、第一バッファ部104からバッファリングされている次の受信フレーム(第2の受信フレーム)のデータを取り出し、第1記憶部の、書き込み位置保持部112が保持している書き込み位置に書き込みを行う。
【0095】
本実施形態に係るデータ受信装置によるデータ受信処理の一例を図10に示すタイムチャートを用いて説明する。
【0096】
(時刻T1001)ヘッダ解析が完了すると、チェックサム判定部103は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0097】
また、コネクション情報読み出し部105が、ヘッダ解析部102が解析したヘッダ情報(送信元ポート番号、送信元IPアドレス、送信先ポート番号、送信先IPアドレスなど)を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【0098】
(時刻T1002)コネクション情報読み出し部105が、コネクション情報の読み出しを完了すると、書き込み位置特定部106が読み出されたコネクション情報とヘッダ情報(シーケンス番号など)を元に、受信フレームのデータの書き込み位置(アドレス)を特定する。書き込み位置特定部106は特定した書き込み位置を書き込み位置保持部112に格納する。
【0099】
データ書き込み部107が、第1バッファ部104から受信フレームのデータ部分を、例えば4バイトずつ読み出し、第1記憶部121における書き込み位置保持部112に格納された書き込み位置への書き込みを開始する。
【0100】
(時刻T1003)チェックサム判定部103によるチェックサムの判定結果が合格の場合、データ書き込み部107による書き込みの完了を待たずに、コネクション情報書き込み部108は、第2記憶部122に対して(更新した)コネクション情報の書き込みを行う。
【0101】
(時刻T1004)コネクション情報の書き込み中にネットワークインタフェース部101がさらに次のフレームを受信する。ヘッダ解析部102は、データ書き込み部107による書き込みの最中に、その次の受信フレームのヘッダ解析を先行して開始する。解析したヘッダ情報はヘッダ情報保持部110に格納される。
【0102】
(時刻T1005)コネクション情報書き込み部108の書き込みが完了し、ヘッダ解析部102のヘッダ解析が完了すると、コネクション情報読み出し部105はヘッダ情報をもとに、データ書き込み部107による書き込みの最中に、次の受信フレームのコネクション情報の探索・読み出しを先行して開始する。
【0103】
また、チェックサム判定部103は受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。第1バッファ部104は、チェックサム判定部103がチェックサム計算したバイトを格納していく。
【0104】
(時刻T1006)コネクション情報読み出し部105が、データ書き込み部107によるデータ書き込みの最中に、コネクション情報の読み出しを完了する。書き込み位置特定部106が、データ書き込み部107が書き込みを行っている受信フレームの次の受信フレームのデータの書き込み位置(アドレス)を特定する。書き込み位置特定部106は特定した書き込み位置を書き込み位置保持部112に格納する。
【0105】
(時刻T1007)データ書き込み部107が、受信フレームの書き込みを完了し、書き込み位置保持部112に後続の受信フレームの書き込み位置が保持されているかどうか確認する。書き込み位置保持部112に書き込み位置が保持されているため、データ書き込み部107は、第一バッファ部104からバッファリングされている次の受信フレームのデータを取り出し、第1記憶部121における書き込み位置保持部112が保持している書き込み位置への書き込みを開始する。
【0106】
このように、本実施形態では、n番目(nは自然数)の受信フレームのデータ書き込み処理が完了するまで、n+1番目の受信フレームの書き込み位置を保持して書き込み処理を保留し、n番目の受信フレームのデータ書き込み処理が完了すると、n+1番目の受信フレームの書き込み処理を開始する。
【0107】
上記第3の実施形態に係るデータ受信装置よりも処理の並列度を向上させることができ、処理速度を向上させることが出来る。
【0108】
(第6の実施形態)本発明の第6の実施形態に係るデータ受信装置の概略構成を図11に示す。本実施形態に係るデータ受信装置は、図1に示す上記第1の実施形態に係るデータ受信装置にさらにコネクション情報書き込み保留部109、ヘッダ情報保持部110、書き込み位置保持部112、フレーム抑制部113、及び第2バッファ部114を備えた構成となっている。コネクション情報書き込み保留部109、ヘッダ情報保持部110、及び書き込み位置保持部112は上記第2、第3、第5の実施形態で説明したものと同様の機能を持つものであり、詳しい説明は省略する。
【0109】
第2バッファ部114は、ネットワークインタフェース部101が入力した受信フレームを一旦バッファリングする。
【0110】
ヘッダ解析部102は、第2バッファ部114が出力した受信フレームのヘッダを解析する。チェックサム判定部103は、第2バッファ部114が出力した受信フレームのチェックサムの計算を行う。第1バッファ部104は、第2バッファ部114が出力してチェックサム判定部103がチェックサム計算したデータをバッファリングする。
【0111】
フレーム抑制部113は、コネクション情報書き込み保留部109がコネクション情報の書き込みを保留できる限界数に達したとき、または、書き込み位置保持部112が保持できる書き込み位置の数が限界数に達したとき、第2バッファ部114が新たな受信フレームを出力することを抑制する。
【0112】
限界数は任意の値にすることができるが、典型的な形態としては1である。この場合、コネクション情報書き込み保留部109が書き込みを保留しているとき、または、書き込み位置保持部112が書き込み位置を保持しているとき、フレーム抑制部113は第2バッファ部114から新たな受信フレームが出力されるのを抑制する。
【0113】
限界数を1とした場合の本実施形態に係るデータ受信装置によるデータ受信処理の一例を図12に示すタイムチャートを用いて説明する。なお、ここでは簡単のため、受信フレームのチェックサム計算の判定結果は全て合格であるとする。
【0114】
(時刻T1201)ヘッダ解析部102が、ネットワークインタフェース部101が入力し、第2バッファ部114が一旦バッファリングして出力した第1の受信フレームのヘッダを解析する。
【0115】
(時刻T1202)ヘッダ解析が完了すると、チェックサム判定部103は第1の受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0116】
また、コネクション情報読み出し部105が、ヘッダ解析部102が解析したヘッダ情報を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【0117】
(時刻T1203)コネクション情報読み出し部105による読み出しが完了する前にチェックサム計算及び判定が完了する。コネクション情報書き込み保留部109が、コネクション情報読み出し部105のコネクション情報読み出し処理が完了するまで、コネクション情報書き込み部108の書き込みを一旦保留させる。また、フレーム抑制部113は第2バッファ部114から第1の受信フレームに続く第2の受信フレームが出力されるのを抑制する。
【0118】
(時刻T1204)コネクション情報書き込み保留部109が、コネクション情報読み出し部105の読み出しの完了に伴い、保留したコネクション情報書き込み部108の書き込み処理の実行を指示する。コネクション情報書き込み部108が書き込み処理を開始し、フレーム抑制部113は第2バッファ部114から第2の受信フレームが出力されるのを許可する。
【0119】
また、書き込み位置特定部106が読み出されたコネクション情報からデータ書き込み位置を特定し、書き込み位置保持部112に格納する。データ書き込み部107は、書き込み位置保持部112に格納された書き込み位置を参照して、第1バッファ部104からデータ(第1の受信フレームのデータ)を取り出し、第1記憶部121に書き込む。
【0120】
コネクション情報書き込み部108の書き込み処理及びデータ書き込み部107の書き込み処理と並行して、ヘッダ解析部102は第2バッファ部から出力された第2の受信フレームのヘッダ解析を行う。ヘッダ情報はヘッダ情報保持部110に格納される。
【0121】
(時刻T1205)第2の受信フレームのヘッダ解析が完了すると、チェックサム判定部103は第2の受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0122】
また、コネクション情報読み出し部105が、ヘッダ解析部102が解析したヘッダ情報を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【0123】
(時刻T1206)コネクション情報読み出し部105によるコネクション情報の読み出しが完了する。書き込み位置特定部106が読み出されたコネクション情報からデータ書き込み位置を特定し、書き込み位置保持部112に格納する。
【0124】
データ書き込み部107は、第1バッファ部104からデータ(第2の受信フレームのデータ)を取り出し、第1記憶部121における書き込み位置保持部112に格納された書き込み位置に書き込む。
【0125】
(時刻T1207)第2の受信フレームのチェックサム計算及び判定が完了する。データ書き込み部107による第1記憶部121への書き込みの最中に、コネクション情報書き込み部108が第2記憶部122への書き込み処理を開始する。
【0126】
(時刻T1208)ヘッダ解析部102が、ネットワークインタフェース部101が入力し、第2バッファ部114が一旦バッファリングして出力した第2の受信フレームに続く第3の受信フレームのヘッダを解析する。この時、コネクション情報書き込み部108による第2記憶部122への書き込み処理は完了していない。すなわち、ヘッダ解析とコネクション情報の書き込みとが並行して行われる。
【0127】
(時刻T1209)第3の受信フレームのヘッダ解析が完了すると、チェックサム判定部103は第3の受信フレームのヘッダ部分に引き続きデータ部分のスキャンを行い、データ部分のチェックサム計算を行う。また、第1バッファ部104は、チェックサム判定部103がチェックサム計算したデータを格納していく。
【0128】
また、コネクション情報読み出し部105が、ヘッダ解析部102が解析したヘッダ情報を元に、それに合致するコネクション情報の探索及び読み出しを開始する。
【0129】
(時刻T1210)コネクション情報読み出し部105によるコネクション情報の読み出しが完了する。書き込み位置特定部106が読み出されたコネクション情報から第3の受信フレームのデータの書き込み位置を特定し、書き込み位置保持部112に格納する。
【0130】
この時、データ書き込み部107は第2の受信フレームのデータの書き込みを完了していない。従って、書き込み位置保持部112は書き込み位置を保持しておく。また、フレーム抑制部113は第2バッファ部114から第3の受信フレームに続く第4の受信フレームが出力されるのを抑制する。
【0131】
(時刻T1211)第3の受信フレームのチェックサム計算及び判定が完了する。データ書き込み部107による第1記憶部121への書き込みの最中に、コネクション情報書き込み部108が第2記憶部122への書き込み処理を開始する。
【0132】
(時刻T1212)データ書き込み部107が第2の受信フレームのデータの書き込みを完了する。データ書き込み部107は、書き込み位置保持部112に後続の受信フレームである第3の受信フレームの書き込み位置が保持されているかどうか確認する。
【0133】
書き込み位置保持部112に第3の受信フレームの書き込み位置が保持されているため、データ書き込み部107は、第一バッファ部104から第3の受信フレームのデータを取り出し、第1記憶部121における書き込み位置保持部112が保持している書き込み位置への書き込みを開始する。
【0134】
書き込み位置保持部112が保持する書き込み位置の数が0になり、フレーム抑制部113は第2バッファ部114から第4の受信フレームが出力されるのを許可する。ヘッダ解析部102は第4の受信フレームのヘッダを解析する。
【0135】
以降は同様の処理が繰り返される。
【0136】
このように、コネクション情報の読み出し完了前にチェックサム計算が完了した場合、コネクション情報の読み出しが完了するまで(更新した)コネクション情報の書き込みを保留し、次の受信フレームを第2バッファ部114がバッファリングしておく。そして、コネクション情報の読み出しが完了し、コネクション情報の書き込みが開始した時点で、バッファリングしていた次の受信フレームのヘッダ解析を開始する。
【0137】
また、第1記憶部121へのn番目(nは自然数)の受信フレームのデータ書き込みが完了するまで、書き込み位置保持部112がn+1番目の受信フレームの書き込み位置を保持してn+1番目の受信フレームのデータ書き込みを保留し、第2バッファ部114がn+2番目の受信フレームをバッファリングしておく。そして、n番目の受信フレームのデータ書き込みが完了してn+1番目の受信フレームのデータ書き込みが開始した時点で、バッファリングしていたn+2番目の受信フレームが第2バッファ部114から出力されヘッダ解析が行われる。
【0138】
従って、第1記憶部121や第2記憶部122へのアクセスが遅延するなどして受信フレームの処理が間に合わなくなった場合でも、フレーム抑制部113及び第2バッファ部114により適切に受信フレームがバッファリングされるため、受信フレームの破棄を最小限に抑えることができる。
【0139】
上記実施形態ではフレーム抑制部113は、コネクション情報書き込み保留部109がコネクション情報の書き込みを保留している数が限界数に達した時、又は書き込み位置保持部112が保持する書き込み位置の数が限界数に達した時に第2バッファ部114の出力の抑制を行っていたが、いずれか一方のみを監視し、第2バッファ部114の出力の抑制を行うようにしてもよい。
【0140】
また、第2バッファ部114からの出力を抑制することで第2バッファ部114から受信フレームが溢れる可能性があるが、その場合は溢れた受信フレームを破棄してもよい。
【0141】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【0142】
また、上述した実施形態で説明したデータ受信装置の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、データ受信装置の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【0143】
また、データ受信装置の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【図面の簡単な説明】
【0144】
【図1】本発明の第1の実施形態に係るデータ受信装置の概略構成図である。
【図2】同第1の実施形態に係るデータ受信処理のタイムチャートである。
【図3】本発明の第2の実施形態に係るデータ受信装置の概略構成図である。
【図4】同第2の実施形態に係るデータ受信処理のタイムチャートである。
【図5】本発明の第3の実施形態に係るデータ受信装置の概略構成図である。
【図6】同第3の実施形態に係るデータ受信処理のタイムチャートである。
【図7】本発明の第4の実施形態に係るデータ受信装置の概略構成図である。
【図8】同第4の実施形態に係るデータ受信処理のタイムチャートである。
【図9】本発明の第5の実施形態に係るデータ受信装置の概略構成図である。
【図10】同第5の実施形態に係るデータ受信処理のタイムチャートである。
【図11】本発明の第6の実施形態に係るデータ受信装置の概略構成図である。
【図12】同第6の実施形態に係るデータ受信処理のタイムチャートである。
【符号の説明】
【0145】
101 ネットワークインタフェース部
102 ヘッダ解析部
103 チェックサム判定部
104 第1バッファ部
105 コネクション情報読み出し部
106 書き込み位置特定部
107 データ書き込み部
108 コネクション情報書き込み部
109 コネクション情報書き込み保留部
110 ヘッダ情報保持部
111 コネクション情報読み出し保留部
112 書き込み位置保持部
113 フレーム抑制部
114 第2バッファ部
121 第1記憶部
122 第2記憶部

【特許請求の範囲】
【請求項1】
ネットワークを介してフレームを受信するデータ受信装置であって、
第1の受信フレームを入力するネットワークインタフェース部と、
フレームのデータ部分を記憶する第1記憶部と、
フレームのコネクションに関連する情報であるコネクション情報を記憶する第2記憶部と、
前記第1の受信フレームのヘッダを解析し、第1のヘッダ情報を出力するヘッダ解析部と、
前記第1の受信フレームのチェックサムを計算し、計算が完了するとチェックサムの合格/不合格を判定し、判定結果を出力するチェックサム判定部と、
前記第1の受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを格納する第1バッファ部と、
前記第1のヘッダ情報に対応する前記コネクション情報を前記第2記憶部から探索して読み出すコネクション情報読み出し部と、
前記第1のヘッダ情報及び前記コネクション情報読み出し部により読み出された前記コネクション情報に基づいて、前記第1の受信フレームのデータ部分の前記第1記憶部における書き込み位置を特定する書き込み位置特定部と、
前記第1の受信フレームのチェックサム判定の前に、前記第1バッファ部に格納されているデータを読み出し、前記第1記憶部の前記書き込み位置特定部により特定された書き込み位置に、読み出したデータを書き込み始めるデータ書き込み部と、
前記第1のヘッダ情報に基づいて前記コネクション情報を更新し、前記判定結果が合格であった場合、前記データ書き込み部が前記第1記憶部への書き込みを行っている最中に、前記更新したコネクション情報を前記第2記憶部に書き込むコネクション情報書き込み部と、
を備えるデータ受信装置。
【請求項2】
前記コネクション情報書き込み部による書き込みの完了後、前記データ書き込み部による前記第1の受信フレームのデータ部分の書き込みの完了前に、前記ネットワークインタフェース部が前記第1の受信フレームの次の受信フレームである第2の受信フレームを入力し、
前記ヘッダ解析部は、前記データ書き込み部が前記第1の受信フレームのデータ部分の書き込みを行っている最中に、前記第2の受信フレームのヘッダを解析することを特徴とする請求項1に記載のデータ受信装置。
【請求項3】
前記ヘッダ解析部は、前記前記データ書き込み部による前記第1の受信フレームのデータ部分の書き込みの完了前に、前記第2の受信フレームのヘッダ解析を完了して第2のヘッダ情報を出力し、
前記コネクション情報読み出し部は、前記データ書き込み部が前記第1の受信フレームのデータ部分の書き込みを行っている最中に、前記第2のヘッダ情報に対応するコネクション情報の探索を開始することを特徴とする請求項2に記載のデータ受信装置。
【請求項4】
前記チェックサム判定部は、前記データ書き込み部が前記第1の受信フレームのデータ部分の書き込みを行っている最中に、前記第2の受信フレームのチェックサム計算を開始することを特徴とする請求項2に記載のデータ受信装置。
【請求項5】
前記コネクション情報書き込み部は、前記判定結果が不合格であった場合、前記更新したコネクション情報を前記第2記憶部へ書き込まないことを特徴とする請求項1に記載のデータ受信装置。
【請求項6】
前記コネクション情報読み出し部による読み出しの完了前に、前記チェックサム判定部によるチェックサム計算が完了し、前記判定結果が合格であった場合、前記コネクション情報読み出し部による読み出しが完了するまで、前記コネクション情報書き込み部による前記更新したコネクション情報の書き込みを保留し、前記コネクション情報読み出し部による読み出しの完了に伴い、前記コネクション情報書き込み部に書き込みを開始させるコネクション情報書き込み保留部をさらに備えることを特徴とする請求項1に記載のデータ受信装置。
【請求項7】
前記第1のヘッダ情報と、前記第1の受信フレームの次の受信フレームである第2の受信フレームのヘッダ解析により取得される第2のヘッダ情報とを保持可能なヘッダ情報保持部をさらに備え、
前記ヘッダ解析部は、前記コネクション情報書き込み部が前記第1のヘッダ情報に基づいた前記コネクション情報の更新及び前記更新したコネクション情報の前記第2記憶部への書き込みを行っている最中に、前記第2の受信フレームのヘッダを解析し、前記第2のヘッダ情報を前記ヘッダ情報保持部に保持させることを特徴とする請求項1に記載のデータ受信装置。
【請求項8】
前記コネクション情報書き込み部による書き込みの完了前に、前記ヘッダ解析部による前記第2の受信フレームのヘッダ解析が完了した場合、前記コネクション情報書き込み部による書き込みが完了するまで、前記コネクション情報読み出し部による前記第2のヘッダ情報に対応したコネクション情報の探索及び読み出しを保留し、前記コネクション情報書き込み部による書き込みの完了に伴い、前記コネクション情報読み出し部に探索及び読み出しを開始させるコネクション情報読み出し保留部をさらに備えることを特徴とする請求項7に記載のデータ受信装置。
【請求項9】
前記書き込み位置特定部が特定した書き込み位置を保持する書き込み位置保持部をさらに備え、
前記データ書き込み部が前記第1の受信フレームのデータの書き込みを行っている最中に、
前記コネクション情報書き込み部が書き込みを完了し、
前記ネットワークインタフェース部が前記第1の受信フレームの次の受信フレームである第2の受信フレームを入力し、
前記ヘッダ解析部が前記第2の受信フレームのヘッダを解析して第2のヘッダ情報を出力し、
前記チェックサム判定部が前記第2の受信フレームのチェックサムの計算を行い、
前記第1バッファ部が前記第2の受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを格納し、
前記コネクション情報読み出し部が前記第2記憶部から前記第2のヘッダ情報に対応するコネクション情報を読み出し、
前記書き込み位置特定部が前記第2のヘッダ情報及び前記第2のヘッダ情報に対応するコネクション情報に基づいて前記第2の受信フレームのデータ部分の書き込み位置を特定し、前記書き込み位置保持部にこの書き込み位置を保持させ、
前記データ書き込み部が前記第1の受信フレームのデータの書き込みの完了に伴い、前記書き込み位置保持部に前記第2の受信フレームのデータ部分の書き込み位置が保持されていることを確認し、前記第1バッファ部に格納されている前記第2の受信フレームのデータを読み出し、前記第1記憶部の前記書き込み位置保持部に保持されている書き込み位置に、読み出したデータを書き込み始めることを特徴とする請求項1に記載のデータ受信装置。
【請求項10】
前記ネットワークインタフェース部が入力した受信フレームを格納し、前記ヘッダ解析部、前記チェックサム判定部、及び前記第1バッファ部へ出力する第2バッファ部と、
前記コネクション情報読み出し部による読み出しの完了前に、前記チェックサム判定部によるチェックサム計算が完了し、前記判定結果が合格であった場合、前記コネクション情報読み出し部による読み出しが完了するまで、前記コネクション情報書き込み部による前記更新したコネクション情報の書き込みを保留し、前記コネクション情報読み出し部による読み出しの完了に伴い、前記コネクション情報書き込み部に書き込みを開始させるコネクション情報書き込み保留部と、
前記書き込み位置保持部が書き込み位置を保持している時、又は前記コネクション情報書き込み保留部が前記コネクション情報書き込み部の書き込みを保留している時に、前記第2バッファ部が新たな受信フレームを出力することを抑制するフレーム抑制部と、
をさらに備えることを特徴とする請求項9に記載のデータ受信装置。
【請求項11】
前記フレーム抑制部は、前記書き込み位置保持部が保持している書き込み位置の数又は前記コネクション情報書き込み保留部が保留している前記コネクション情報書き込み部による書き込みの数が所定数に達した時に、前記第2バッファ部が新たな受信フレームを出力することを抑制することを特徴とする請求項10に記載のデータ受信装置。
【請求項12】
ネットワークを介してフレームを受信するデータ受信方法であって、
受信フレームを入力し、
前記受信フレームのヘッダを解析してヘッダ情報を生成し、
前記受信フレームのチェックサムを計算して合格/不合格を判定し、
前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第1バッファ部に格納し、
前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第2記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出し、
前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第1記憶部における書き込み位置を特定し、
前記受信フレームのチェックサム判定の前に、前記第1バッファ部に格納されているデータを読み出し、前記第1記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始し、
前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第1記憶部への書き込みの最中に、前記更新したコネクション情報を前記第2記憶部に書き込むデータ受信方法。
【請求項13】
ネットワークを介してフレームを受信するデータ受信プログラムであって、
受信フレームを入力するステップと、
前記受信フレームのヘッダを解析してヘッダ情報を生成するステップと、
前記受信フレームのチェックサムを計算して合格/不合格を判定するステップと、
前記受信フレームのデータ部分のうち前記チェックサム判定部によりチェックサムの計算が行われたデータを第1バッファ部に格納するステップと、
前記受信フレームのコネクションに関連する情報であるコネクション情報を記憶する第2記憶部から、前記ヘッダ情報に対応するコネクション情報を探索して読み出すステップと、
前記ヘッダ情報及び前記読み出されたコネクション情報に基づいて、前記受信フレームのデータ部分の第1記憶部における書き込み位置を特定するステップと、
前記受信フレームのチェックサム判定の前に、前記第1バッファ部に格納されているデータを読み出し、前記第1記憶部における前記特定された書き込み位置への、前記読み出したデータの書き込みを開始するステップと、
前記ヘッダ情報に基づいて前記コネクション情報を更新し、前記判定の結果が合格であった場合、前記第1記憶部への書き込みの最中に、前記更新したコネクション情報を前記第2記憶部に書き込むステップと、
をコンピュータに実行させるデータ受信プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2010−109746(P2010−109746A)
【公開日】平成22年5月13日(2010.5.13)
【国際特許分類】
【出願番号】特願2008−280196(P2008−280196)
【出願日】平成20年10月30日(2008.10.30)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】