(57)【特許請求の範囲】
【請求項１】
ヘッダとデータを含むパケットを生成して、当該パケットをネットワークを介して一又
は複数の端末に送信する通信装置であって、
自装置と一又は複数の前記端末間の複数のコネクション毎に、前記コネクションと前記
コネクションで送信すべきデータのうち送信済みデータを示す送信済みデータ情報とを含
むコネクション情報を記憶する第１記憶部と、
複数のコネクションを指定した複数の送信要求を受け付けた場合に、複数の前記コネク
ションを交互に切り替えて指定したパケットの送信開始指示を行う送信開始指示部と、
前記パケットの送信開始指示を受けると、前記第１記憶部から前記パケットの送信開始
指示部により指定されたコネクションにかかるコネクション情報を読み出すコネクション
情報読み出し部と、
前記コネクション情報読み出し部が読み出した前記コネクション情報の前記コネクショ
ンからパケットのヘッダを生成するヘッダ生成部と、
複数の前記コネクション毎に、前記コネクションで送信すべきデータを記憶する第２記
憶部と、
前記コネクション情報読み出し部が読みだしたコネクション情報に基づき、前記第２記
憶部からデータを読み出すデータ読み出し部と、
前記コネクション情報を基に、前記第１記憶部の送信済みデータ情報を更新するコネク
ション情報書き込み部を備え、
前記コネクション情報読み出し部は、前記コネクション情報書き込み部が第１のパケッ
トに関する前記送信済みデータ情報の更新を終了した後で、かつ、前記データ読み出し部
が当該第１のパケットのデータを読み出している期間、又はヘッダ生成部が当該第１のパ
ケットのヘッダを生成している期間に、当該第１のパケットの次に送信する第２のパケッ
トのコネクション情報の読み出しを行うことを特徴とする
通信装置。
【請求項２】
データ読み出し保留部とヘッダ生成保留部を更に備え、
前記データ読み出し保留部は、前記データ読み出し部が前記第１のパケットのデータの
読み出しを完了するまでであって、かつ、前記ヘッダ生成部が前記第１のパケットのヘッ
ダを生成することを完了するまで、前記第２のパケットのデータをデータ読み出し部が読
みだすことを保留させ、前記データ読み出し部が前記第１のパケットのデータ読み出しを
完了後、かつ、前記ヘッダ生成部が前記第１のパケットのヘッダを生成することを完了後
に、前記第２のパケットのデータをデータ読み出し部が読みだすことを保留することを解
除し、
前記データ読み出し部は、前記データ読み出し保留部が前記保留を解除すると、データ
の読み出しを行い、
ヘッダ生成保留部は、前記データ読み出し部が前記第１のパケットのデータの読み出し
を完了するまでであって、かつ、前記ヘッダ生成部が前記第１のパケットのヘッダを生成
することを完了するまで、前記第２のパケットのヘッダをヘッダ生成部が生成することを
保留させ、前記データ読み出し部が前記第１のパケットのデータの読み出しを完了後、か
つ、前記ヘッダ生成部が前記第１のパケットのヘッダを生成することを完了後に、前記第
２のパケットのヘッダをヘッダ生成部が生成することを保留することを解除し、
前記ヘッダ生成部は、前記ヘッダ生成保留部が前記保留を解除すると、ヘッダの生成を
行うことを特徴とする
請求項１記載の通信装置。
【請求項３】
チェックサム処理部とパケットバッファ部とパケット出力部とを備えるパケット生成部
を更に備え、
前記チェックサム処理部は、前記ヘッダ生成部が生成したパケットのヘッダと前記デー
タ読み出し部が読み出した当該パケットのデータからチェックサム値を算出し、
前記パケットバッファ部は、前記ヘッダ生成部が生成したパケットのヘッダと前記デー
タ読み出し部が読み出した当該パケットのデータをバッファし、
前記パケット出力部は、前記パケットバッファ部によるバッファと並行して、前記パケ
ットバッファ部がバッファするヘッダ及びデータの一つ前にバッファしていたヘッダ及び
データのヘッダに前記チェックサム処理部が当該一つ前にバッファしていたヘッダ及びデ
ータから計算したチェックサム値を格納してパケットとして出力して、
前記ヘッダ生成部及び前記データ読み出し部は、前記パケットバッファ部が前記一つ前
にバッファしていたヘッダ及びデータをパケットとして前記パケット出力部が出力完了後
、前記パケットバッファ部がバッファしたヘッダ及びデータの次に送信するパケットのデ
ータ読み出し及びヘッダの生成を行うことを特徴とする
請求項２記載の通信装置。
【請求項４】
更に、送信開始指示部と送信開始指示保留部を備え、
前記送信開始指示部は、前記コネクション情報読み出し部に、パケットの送信開始指示
を行い、
前記送信開始指示保留部は、前記コネクション情報書き込み部がパケットのコネクショ
ン情報の書き込みを完了するまで、前記送信開始指示部が当該パケットの次に送信するパ
ケットの送信開始指示を行うことを保留させ、前記コネクション情報書き込み部によるパ
ケットのコネクション情報の書き込み完了後、前記送信開始指示部が当該パケットの次に
送信するパケットの送信開始指示を行うことを保留することを解除することを特徴とする
請求項３記載の通信装置。
【請求項５】
前記送信開始指示保留部は、前記ヘッダ生成部がパケットのヘッダの生成を完了するま
で、前記送信開始指示部が当該パケットの次に送信するパケットの送信開始指示を行うこ
とを保留させ、前記ヘッダ生成部がパケットのヘッダの生成完了後、前記送信開始指示部が当該パケットの次に送信するパケットの送信開始指示を行うことを保留することを解除する
ことを特徴とする
請求項４記載の通信装置。
【請求項６】
送信開始可否判定部を更に備え、
前記コネクション情報は、更に、コネクション毎にパケットを送信可能か送信不可能を
判定するための情報を含み、
前記送信開始可否判定部は、前記コネクション情報読み出し部が読み出した前記コネクション情報に基づいて、前記コネクション情報に対応するパケットを送信可能か送信不可能か
を判定し、
前記送信可否判定部は、前記パケットを送信不可能と判定した場合、当該パケットを送
信するための処理を終了させ、前記送信開始指示部に、当該パケットの次のパケットを送
信させるための送信開始指示を行わせることを特徴とする請求項５記載の通信装置。
【請求項７】
ヘッダとデータを含むパケットを生成して、当該パケットをネットワークを介して一又
は複数の端末に送信する通信装置を制御するプログラムであって、
自装置と一又は複数の前記端末間の複数のコネクション毎に、前記コネクションと前記
コネクションで送信すべきデータのうち送信済みデータを示す送信済みデータ情報とを含
むコネクション情報を記憶する第１記憶機能と、
複数のコネクションを指定した複数の送信要求を受け付けた場合に、複数の前記コネク
ションを交互に切り替えて指定したパケットの送信開始指示を行う送信開始指示機能と、
前記パケットの送信開始指示を受けると、前記第１記憶機能から前記パケットの送信開始指示機能により指定されたコネクションにかかるコネクション情報を読み出すコネクション情報読み出し機能と、
前記コネクション情報読み出し機能が読み出した前記コネクション情報の前記コネクションからパケットのヘッダを生成するヘッダ生成機能と、
複数の前記コネクション毎に、前記コネクションで送信すべきデータを記憶する第２記
憶機能と、
前記コネクション情報読み出し機能が読みだしたコネクション情報に基づき、前記第２記憶機能からデータを読み出すデータ読み出し機能と、
前記コネクション情報を基に、前記第１記憶機能の送信済みデータ情報を更新するコネクション情報書き込み機能を備え、
前記コネクション情報読み出し機能は、前記コネクション情報書き込み機能が第１のパケットに関する前記送信済みデータ情報の更新を終了した後で、かつ、前記データ読み出し機能が当該第１のパケットのデータを読み出している期間、又はヘッダ生成機能が当該第１のパケットのヘッダを生成している期間に、当該第１のパケットの次に送信する第２のパケットのコネクション情報の読み出しを行うことを特徴とする
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関する。
【背景技術】
【０００２】
インターネット通信で使用されるプロトコルとしてＴＣＰ／ＩＰがある。従来のＴＣＰ／ＩＰは主にソフトウェア処理によって実現されており、例えばパソコンや組み込み機器などのＣＰＵによって動作していた。
【０００３】
しかし、近年、ネットワークインフラの広帯域化や、ネットワークを介して伝送される映像コンテンツ等の広帯域化により、ネットワーク処理の負荷が増大し、ＣＰＵによる処理では性能が足りなくなってきている。
【０００４】
そこで、ＣＰＵの代わりにＴＯＥ（ＴＣＰ／ＩＰ Ｏｆｆｌｏａｄ Ｅｎｇｉｎｅ）がＴＣＰ／ＩＰの処理を行うことが提案されている。ＴＯＥは、サブプロセッサやハードウェアがＴＣＰ／ＩＰのプロトコル処理を行う。ＴＯＥを用いることにより、従来のソフトウェア処理より高速なＴＣＰ／ＩＰ処理が実現できる。
【０００５】
ＴＯＥとしては、例えば、特許文献１の技術がある。特許文献１の技術において、ＴＯＥは、ＴＣＰ（ＵＤＰ）／ＩＰ処理を複数のサブプロセッサが並列処理する。即ち、ＴＯＥは、ソケットＡＰＩの一部の処理を実行するサブプロセッサＡと、ＴＣＰ（ＵＤＰ）受信処理を実行するサブプロセッサＢと、ＴＣＰ（ＵＤＰ）送信処理を実行するサブプロセッサＣと、ＭＡＣドライバ及びＩＰ受信処理を実行するサブプロセッサＤと、ＭＡＣドライバ及びＩＰ送信処理を実行するサブプロセッサＥとを備え、これら複数のサブプロセッサが並列処理を行う。
【０００６】
しかし、この特許文献１では、ＴＣＰ／ＩＰ処理のうちＴＣＰ（ＵＤＰＵＤＰ）送信処理を並列化する方法については記載されていない。
【０００７】
これらＴＣＰ／ＩＰ処理のうちＴＣＰ（ＵＤＰ）送信処理は、コネクション情報の読み出し、パケットのデータの書き込み、ヘッダ生成、更新したコネクション情報の書き込みなど複数の処理を行う必要がある。これら複数の処理のうちいくつかの処理を並列化して実行することにより、ＴＣＰ（ＵＤＰ）送信処理の処理速度を向上することが期待される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−１４６４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、ＴＣＰ（ＵＤＰ）送信処理を並列化して実行することにより、ＴＣＰ（ＵＤＰ）送信処理の処理速度向上を達成することができる通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の一実施例に係る通信装置は、ヘッダとデータを含むパケットを生成して、当該パケットをネットワークを介して一又は複数の端末に送信する通信装置であって、自装置と一又は複数の前記端末間の複数のコネクション毎に、前記コネクションと前記コネクションで送信すべきデータのうち送信済みデータを示す送信済みデータ情報とを含むコネクション情報を記憶する第１記憶部と、複数のコネクションを指定した複数の送信要求を受け付けた場合に、複数の前記コネクションを交互に切り替えて指定したパケットの送信開始指示を行う送信開始指示部と、前記パケットの送信開始指示を受けると、前記第１記憶部から前記パケットの送信開始指示部により指定されたコネクションにかかるコネクション情報を読み出すコネクション情報読み出し部と、前記コネクション情報読み出し部が読み出した前記コネクション情報の前記コネクションからパケットのヘッダを生成するヘッダ生成部と、複数の前記コネクション毎に、前記コネクションで送信すべきデータを記憶する第２記憶部と、前記コネクション情報読み出し部が読みだしたコネクション情報に基づき、前記第２記憶部からデータを読み出すデータ読み出し部と、前記コネクション情報を基に、前記第１記憶部の送信済みデータ情報を更新するコネクション情報書き込み部を備え、前記コネクション情報読み出し部は、前記コネクション情報書き込み部が第１のパケットに関する前記送信済みデータ情報の更新を終了した後で、かつ、前記データ読み出し部が当該第１のパケットのデータを読み出している期間、又はヘッダ生成部が当該第１のパケットのヘッダを生成している期間に、当該第１のパケットの次に送信する第２のパケットのコネクション情報の読み出しを行うことを特徴とする。
【発明の効果】
【００１１】
本発明の通信装置によれば、ＴＣＰ（ＵＤＰ）送信処理を並列化して実行することにより、ＴＣＰ（ＵＤＰ）送信処理の処理速度向上を達成することができる。
【図面の簡単な説明】
【００１２】
【図１】実施例１に係る通信装置を示す図。
【図２】実施例１に係る通信装置の動作を示すフローチャート。
【図３】実施例１に係る通信装置の動作を示すタイムチャート。
【図４】実施例２に係る通信装置に関する図。
【図５】実施例３に係る通信装置に関する図。
【図６】実施例４に係る通信装置に関する図。
【図７】実施例５に係る通信装置に関する図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について説明する。
【００１４】
＜実施例１＞
図１は、実施例１の通信装置１００を示す図である。
【００１５】
通信装置１００は、ネットワーク（例えば、イーサネット(R)や無線ＬＡＮ）に、ＴＣＰ／ＩＰやＵＤＰ／ＩＰなどのプロトコルによりパケットを送信する。図１に示すように、通信装置１００は、送信開始指示部１０１と、コネクション情報読み出し部１０２と、コネクション情報書き込み部１０３と、ヘッダ生成部１０４と、データ読み出し部１０５と、パケット生成部１０６と、インターフェース部１０７と、第１記憶部１０８と、第２記憶部１０９とを備える。
【００１６】
ここで、コネクション情報読み出し部１０２とコネクション情報書き込み部１０３は、ハードウェアＡで構成される。また、ヘッダ生成部１０４とデータ読み出し部１０５は、ハードウェアＢで構成される。ハードウェアＡ、Ｂは、例えばＣＰＬＤ（Ｃｏｍｐｌｅｘ Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ｄｅｖｉｃｅ） 、又はＡＳＩＣである。即ち、ハードウェアＡが、コネクション情報読み出しとコネクション情報書きこみを行い、ハードウェアＢが、ヘッダ生成とデータ読み出しを行う。そして、ハードウェアＡとハードウェアＢとは、並列に動作する。従って、コネクション情報読み出し部１０２によるコネクション情報読み出しとコネクション情報書き込み部１０３によるコネクション情報書き込みは、それぞれ、ヘッダ生成部１０４によるヘッダ生成とデータ読み出し部１０５によるデータ読み出しそれぞれと同時に動作（並列動作）させることができる。例えば、パケット生成のためのデータ読み出し部１０５によるデータ読み出し又は、ヘッダ生成部１０４によるヘッダ生成を行っている期間に、当該パケットの次に送信するパケット生成のためのコネクション情報読み出し部１０２によりコネクション情報の読み出しを行うことができる。その結果、パケットの送信処理の処理速度を向上させることができる。
【００１７】
第１記憶部１０８は、コネクション毎にコネクション情報を記憶する。尚、コネクションとは、ＴＣＰ／ＩＰプロトコル、又はＵＤＰ／ＩＰプロトコルにおける通信における送信元（例えば、通信装置１００）と送信先（例えば、パケットが送信される端末）の間で、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号で決定されるものである。また、コネクション情報とは、コネクション毎に対応する情報であり、コネクション（送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号）、コネクションに対応するデータが第２記憶部１０９のどこに記憶されているかを示す第１のアドレス、コネクション毎に送信すべきデータのうちどこまでパケットにより送信したかを示す情報（以下、送信済みデータ情報とする。）を含む情報である。
【００１８】
第２記憶部１０９は、コネクション毎に送信すべきデータを記憶する。
【００１９】
送信開始指示部１０１は、外部のアプリケーション（図示せず。）から、データを送信したいコネクションを指定した送信要求を受け付ける。コネクションの指定は、第１記憶部１０８の当該コネクションのコネクション情報が記憶されているアドレス（第２のアドレス）で行う。送信開始指示部１０１は、その第２のアドレスを指定して（すなわち送信したいコネクションを指定して）、コネクション情報読み出し部１０２に、パケットの送信開始指示を行う。ここで、１つのパケットは、１つのコネクションの送信したいデータを一度に送信可能なサイズに分割したうちの一つ分のデータに相当するので、送信開始指示部１０１は、１回の外部アプリケーションからの送信要求に対し、複数回のパケット送信開始指示を行う。また、外部アプリケーションから複数のコネクションに対する送信要求を受けたとき、送信開始指示部１０１は、それらを一旦内部に保持（キューイング）し、順次取り出して、コネクション情報読み出し部１０２に、パケット送信開始指示を行う。
【００２０】
コネクション情報読み出し部１０２は、送信開始指示部１０１の送信開始指示を受けると、第１記憶部１０８から、第２のアドレスに対応するコネクション情報を読み出す。
【００２１】
データ読み出し部１０５は、コネクション情報読み出し部１０２が読み出したコネクション情報に基づき、第２の記憶部１０９からデータを読み出す。ここで、データ読み出し部１０５は、第１のアドレスと送信済みデータ情報に基づき、データを読み出す。
【００２２】
ヘッダ生成部１０４は、コネクション情報読み出し部１０２が読み出したコネクション情報のコネクションを用いてパケットのヘッダを生成する。
【００２３】
パケット生成部１０６は、データ読み出し部１０５が読み出したデータとヘッダ生成部１０４が生成したヘッダを用いてパケットを生成する。
【００２４】
インターフェース部１０７は、パケットにデータリング層（ＭＡＣ）や物理層（ＰＨＹ）の処理を行い、パケットをネットワーク上に送信する。
【００２５】
コネクション情報書き込み部１０３は、コネクション情報読み出し部１０２が読み出したコネクション情報をもとに、第１記憶部１０８に、読み出したコネクション情報に対応する送信済みデータ情報を更新する。尚、パケット生成のためのコネクション情報書き込み部１０３による書き込みは、当該パケットの１つ後に送信するパケット生成のためのコネクション情報読み出し部１０２によるコネクション情報の読み出しを行う前に行う。
【００２６】
次に、通信装置１００の動作方法について説明する。以下では、ＴＣＰ／ＩＰのプロトコルによりパケットを送信する場合について説明する。また、１回のパケットの送信につき１５００バイトを送信するものとする（データが１４６０バイト、ヘッダが４０バイトであるとする。）。図２は、通信装置１００のパケット送信の動作を示すフローチャートである。図３は、通信装置１００のパケット送信処理を示すタイムチャートである。図３において、１つのパケットを生成するための処理としてコネクション情報読み出し、コネクション情報書き込み、ヘッダ生成、データ読み出しを示した。図３は、右（横）方向に時間軸が設定されている。また、上の段（コネクション情報読み出し及びコネクション情報書き込み）と、下の段（ヘッダ生成及びデータ読み出し）を並列する処理する様子を示している。尚、前述したとおり、上の段の処理は、ハードウェアＡが処理を行い、下の段の処理は、ハードウェアＢが処理を行っている。図３においては、３つのパケットを生成するタイムチャートを示した。以下では、時間軸に沿って、３つのパケットをそれぞれパケットＡ、パケットＢ、パケットＣとする。図３において、パケットＡ及びパケットＣの処理は、実線で示し、パケットＢの処理は点線で示した。
【００２７】
まず、送信開始指示部１０１が、１つ目のパケットＡに関して、コネクション１を指定してコネクション情報読み出し部１０２に対してパケットの送信開始指示を行う（Ｓ１０１）。ここで、コネクション１とは、送信元が、通信装置１００であり、送信先が端末Ａであるコネクションであるとする。
【００２８】
次に、コネクション情報読み出し部１０２は、パケットＡに関して、第１記憶部１０８からコネクション情報を読み出す（Ｓ１０２）。コネクション情報読み出し部１０２は、例えば、読み出したコネクション情報をレジスタ（図示せず。）に一時的に記憶する。
【００２９】
次に、ヘッダ生成部１０４が、読み出したコネクション情報のコネクションからパケットＡのヘッダを生成する（Ｓ１０３）。具体的には、ＴＣＰ／ＩＰの仕様に準拠したヘッダの並びに従い、前述の読み出したコネクション情報からクロックサイクル毎に例えば４バイト毎にセレクトしながら、後段に出力する。このサイクルを１０回行い４０バイトのＴＣＰ／ＩＰヘッダを出力する。
【００３０】
次に、ヘッダ生成部１０４がヘッダを生成開始後（又は、ヘッダ生成部１０４がヘッダ生成を生成開始と同時に）、コネクション情報書き込み部１０３は、コネクション情報読み出し部１０２が、読み出したコネクション情報を基に、第１記憶部１０８に、読み出したコネクション情報に対応するコネクション、の送信済みデータ情報を更新する（Ｓ１０４）。通信装置１００は、後述するように１パケットあたり１４６０バイトのデータを送信するため、ステップ１０２でコネクション情報読み出し部１０２が読み出したコネクション情報に対応するコネクションにつきの送信済みデータ情報として、１４６０バイトのデータを足すように更新を行う。尚、通信装置１００は、１パケットあたり１４６０バイトのデータを送信すると決まっているものとする。したがって、実際に通信装置１００がパケットＡを送信していなくても、コネクション情報書き込み部１０３は、読み出したコネクション情報がわかれば、コネクション情報に書き込みを行える。
【００３１】
データ読み出し部１０５が、パケットＡに関して、コネクション情報のうち、コネクションに対応する第２記憶部１０９のデータの第１のアドレス（例えば、コネクションに対応するデータのアドレスの始端及び終端）と、送信済みデータ情報（例えば、何バイト送信しているか）の情報から第２記憶部１０９からパケットＡで送信すべきデータのアドレスを特定し、そのデータを読み出す（Ｓ１０５）。例えば、コネクションに対応する第２記憶部１０９のデータのアドレス領域が、始端が０ｘ０１００００００であり、終端が０ｘ０１０ｆｆｆｆｆ（長さ１Ｍバイト）であるとする。また、送信済みデータ情報は、１４６０バイトまで送信しているとする。この場合、データ読み出し部１０５は、第２記憶部１０９から送信すべきデータは、以下のアドレスから読みだす。即ち、０ｘ０１００００００＋１４６０＝０ｘ０１０００５ｂ４から読みだす。このデータの先頭アドレスからデータ読み出し部１０５は、合計１４６０バイトのデータを４バイトずつデータを順次読み出す。即ち、全てのデータを読み出すためには、データ読み出し部１０５は、１４６０／４＝３６５サイクルを行う必要がある。尚、データ読み出し部１０５は、４バイトずつ順次パケット生成部１０６に出力する。
【００３２】
データ読み出し部１０５が、パケットＡのデータを読み出している最中に、送信開始指示部１０１が、２つ目のパケットＢに関して、コネクション１を指定してコネクション情報読み出し部１０２に対してパケットの送信開始指示を行う（Ｓ１０６）。例えば、送信開始指示部１０１は、１つ目のパケットＡのデータ読み出し部１０５によるデータ読み出しが完了するまでに、パケットＢのコネクション情報読み出し部１０２がコネクション情報の読み出しが完了するタイミングで送信開始指示を行うことが好ましい。
【００３３】
次に、コネクション情報読み出し部１０２は、パケットＢに関して、第１記憶部１０８からコネクション情報を読み出す（Ｓ１０７）。ここで、コネクション情報読み出し部１０２は、コネクション１のコネクション情報を読み出す。このコネクション情報は、Ｓ１０４でコネクション情報書き込み部１０３が書き込みを行って更新されたコネクション情報である。即ち、パケットＡのコネクション情報読み出し時のコネクション情報について、送信済みデータ情報につき１４６０バイトのデータが足された情報である。パケットＢのコネクション情報読み出し部１０２の読み出しを行う前に、コネクション情報書き込み部１０３による書き込みが行われているため、１つのパケットＡで送信したデータと重複したデータを送信することを防ぐことができる。
【００３４】
次に、パケット生成部１０６は、ヘッダ生成部１０４で生成されたヘッダとデータ読み出し部１０５で読み出されたデータとをバッファしつつ、送信すべきパケットのデータを例えば４バイトずつ順次インターフェース部１０７に出力する（Ｓ１０８）。
【００３５】
インターフェース部１０７は、パケット生成部１０６からパケットを受け取ると、パケットをネットワーク上に送出する（Ｓ１０９）。
【００３６】
以上のように、通信装置１００は、パケットＡのデータ読み出しの処理とパケットＢのコネクション情報のコネクション情報読み出し処理を並列処理することができる。これにより、通信装置１００のパケットの送信処理の処理速度向上を達成することができる。また、特に、本実施形態では、適切なタイミングで送信開始指示を行うことにより、１つ目のパケットＡのデータ読み出し部１０５によるデータ読み出しが完了するまでに、パケットＢのコネクション情報読み出し部１０２がコネクション情報の読み出しを完了する。これにより、図３に示すように、ヘッダ生成処理とデータ読み出し処理を、コネクション情報の読み出し処理及びコネクション情報の書き込み処理の時間に左右されることなく連続して動作させることができる。その結果、通信装置１００のパケットの送信処理の処理速度向上を達成することができる。
【００３７】
通信装置１００は、前述したようにヘッダ生成処理とデータ読み出し処理は合わせて３７５クロックサイクル数の処理を、コネクション情報の読み込み処理及びコネクション情報の書き込み処理の時間に左右されることなく、連続して動作させることができる。
【００３８】
尚、本実施例においては、ヘッダ生成部１０４がヘッダを生成後、データ読み出し部１０５がデータ読み出しを行っている例を説明した。しかしながら、データ読み出し部１０５がデータ読み出した後ヘッダ生成を行っても良い。ネットワークにパケットを送信する時点では、データよりヘッダが先になる必要があるが、パケット生成部１０６、若しくは、インターフェース部１０７がバッファして、その順で送るようにすればよい。この場合、コネクション情報読み出し部１０２は、ヘッダ生成部１０４がパケットＡのヘッダ生成を完了する前に、パケットＢのコネクション情報読み出しを完了することが好ましい。
【００３９】
また、本実施例では、ヘッダ生成部１０４がヘッダ生成を生成開始後（又は、ヘッダ生成部１０４がヘッダ生成を生成開始と同時に）パケットＡのコネクション情報の書き込みを行ったが、これに限られない。即ち、コネクション情報の書き込みは、パケットＢのコネクション情報読み出し部１０２による読み出しが開始される前であればよい。
【００４０】
また、本実施例では、パケットＡ及びパケットＢについて、同一のコネクション１のデータを連続して送信した。しかしながら、複数のコネクションを順番に送信しても良い。例えば、３つのコネクション（コネクション１、コネクション２、コネクション３）を同時に送信するとき、送信開始指示部１０１は、外部アプリケーションからのこの３つのコネクションに対する送信要求を内部に保持し、コネクション１の１つ目のパケット送信→コネクション２の１つ目のパケット送信→コネクション３の１つ目のパケット送信→コネクション１の２つ目のパケット送信→コネクション２の２つ目のパケット送信→コネクション３の２つ目のパケット送信…のように順次指示する。このように複数のコネクションのデータを順番に送信することにより、特定のコネクションの遅延を防ぐことができる。このように異なるコネクションのパケットを交互に送信することができるのは、コネクション情報読み出し部１０２によるコネクション情報読み出し及びコネクション情報書き込みをパケット送信の都度行っているためである。
【００４１】
なお、本実施例にかかる通信装置１００は、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。即ち、送信開始指示部１０１、コネクション情報読み出し部１０２、コネクション情報書き込み部１０３、データ読み出し部１０５、ヘッダ生成部１０４、パケット生成部１０６、インターフェース部１０７は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行することにより実現することができる。このとき、通信装置１００は、上記のプログラムを実行させることにより実現することができる。このとき、通信装置１００は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現しても良いし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現しても良い。また、第１記憶部１０８及び第２記憶部１０９は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスク若しくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【００４２】
＜実施例２＞
図４（ａ）に実施例２の通信装置２００を示す。また、図４（ｂ）に通信装置２００のパケット送信のタイムチャートを示す。
【００４３】
通信装置２００は、通信装置１００の構成に加え、データ読み出し保留部２１０とヘッダ生成保留部２１１を備える。
【００４４】
図４（ａ）に示されるように、２つ目のパケットＢの送信開始指示により、パケットＢのコネクション情報の読み出しが、１つ目のパケットＡのデータ読み出し部１０５によるデータ読み出し中に行われ、１つ目のパケットＡのデータ読み出し完了より前に、完了する場合である。
【００４５】
データ読み出し保留部２１０は、コネクション情報に基づき、データ読み出し部１０５がデータ読み出しを行うことを保留させる。例えば、データ読み出し保留部２１０は、一時的にコネクション情報を記憶する。また、例えば、コネクション情報読み出し部１０２がパケットＢのコネクション情報の読み出しを、データ読み出し部１０５がパケットＡのデータ読み出し完了するより前に完了した場合、データ読み出し保留部２１０は、パケットＡのデータ読み出し完了まで、データ読み出し部１０５がパケットＢのデータを読み出すことを保留させる。そして、図５に示すように、データ読み出し部１０５によるパケットＡのデータ読み出し完了後、データ読み出し保留部２１０は、データ読み出し部１０５がパケットＢのデータを読み出すことの保留を解除し、データ読み出し部１０５は、パケットＢのコネクション情報に基づき、パケットＢのデータ読み出しを開始する。
【００４６】
また、ヘッダ生成部保留部２１１は、コネクション情報に基づき、ヘッダ生成部１０４がヘッダ生成することを保留させる。例えば、ヘッダ生成保留部２１１は、一時的にコネクション情報を記憶する。また、例えば、コネクション情報読み出し部１０２がパケットＢのコネクション情報の読み出しを、データ読み出し部１０５がパケットＡのデータ読み出しを完了する前に完了した場合、ヘッダ生成保留部２１１は、ヘッダ生成部１０４がパケットＢのヘッダ生成を行うことを保留させる。そして、図５に示すように、ヘッダ生成保留部２１１は、データ読み出し部１０５によるパケットＡのデータ読み出し完了後、ヘッダ生成部１０４がパケットＢのヘッダを生成することの保留を解除し、ヘッダ生成部１０４はパケットＢのヘッダ生成を開始する。
【００４７】
通信装置２００によれば、１つ目のパケットＡのデータ読み出し中の早いタイミングで、送信開始指示を行い、コネクション情報読み出し部１０２がコネクション情報を、パケットＡのデータＡのデータ読み出し完了より前に読み出した場合であっても、そのコネクション情報に基づく、データ読み出し及びヘッダ生成を、データ読み出し保留部２１０及びヘッダ生成保留部２１１が、パケットＡのデータ読みだし完了後まで保留するため、コネクション情報読み出し、ヘッダ生成それぞれの処理をデータ読み出しと並列に処理することを適切に行うことができる。また、パケットＢの送信開始指示を行い、コネクション情報読み出し部１０２がコネクション情報を早い段階で行うことができるため、１つ目のパケットＡのデータ読み出し部１０５によるデータ読み出しが完了するまでに、パケットＢのコネクション情報読み出し部１０２がコネクション情報の読み出しを完了させることができる。これにより、図５に示すように、ヘッダ生成処理とデータ読み出し処理それぞれの処理を、コネクション情報の読み出し処理及びコネクション情報の書き込み処理の時間に左右されることなく連続して動作させることができる。その結果、通信装置１００のパケットの送信処理の処理速度向上を達成することができる。
【００４８】
尚、本実施例では、ヘッダ生成、データ読み出しの順で処理を行っているが、データ読み出しとヘッダ生成の順で処理を行っても良い。この場合、１つ目のパケットＡのヘッダ生成が完了するまで、ヘッダ生成保留部２１１及びデータ読み出し保留部２１０は、それぞれパケットＢのヘッダ生成及びデータ読み出しを保留する。
【００４９】
尚、本実施例では、１つ目のパケットＡと２つ目のパケットＢの関係について説明したが、１つ目のパケットＡと２つ目のパケットＢの関係に限られない。例えば、５つ目のパケットと６つ目のパケットについても本実施例は適用できる。
【００５０】
＜実施例３＞
図５（ａ）に実施例３の通信装置３００を示す。また、図５（ｂ）に通信装置３００のパケット送信のタイムチャートを示す。図５（ｂ）のタイムチャートは、下段がパケット生成、中段がヘッダ生成及びデータ読み出し、上段がコネクション情報読み出し及びコネクション情報書き出しを示す。図７において、１つのパケットを生成するための処理としてコネクション情報読み出し、コネクション情報書き込み、ヘッダ生成、データ読み出し及びパケット生成を示した。また、上の段（コネクション情報読み出し及びコネクション情報書き込み）と、中の段（ヘッダ生成及びデータ読み出し）と、下の段（パケット生成処理）とで並列する処理する様子を示している。尚、後述するように、上の段の処理、中の段の処理、下の段の処理は、それぞれハードウェアＡ、ハードウェアＢ、後述するハードウェアＣが処理を行う。図５（ｂ）においては、３つのパケットを生成するタイムチャートを示した。以下では、時間軸に沿って、３つのパケットをそれぞれパケットＡ、パケットＢ、パケットＣとする。図５（ｂ）において、パケットＡ及びパケットＣの処理は、実線で示し、パケットＢの処理は点線で示した。
【００５１】
通信装置３００のパケット生成部３０６は、パケット出力部３０６Ａとパケットバッファ部３０６Ｂとチェックサム処理部３０６Ｃとチェックサムバッファ部３０６Ｄを含む構成である。また、パケット出力部３０６Ａは、ハードウェアＣで構成される。ハードウェアＣは、ハードウェアＡとハードウェアＢと並列動作が可能である。したがって、パケット出力部３０６Ａのパケット生成処理は、コネクション情報読み出し部１０２によりコネクション情報読み出し、コネクション情報書き込み部１０３によりコネクション情報書き込み、それぞれと並列動作が可能である。また、パケット出力部３０６Ａのパケット生成処理は、データ読み出し部１０５によるデータ読み出しと、ヘッダ生成部１０４によるヘッダ生成それぞれと並列動作が可能である。
【００５２】
チェックサム処理部３０６Ｃは、データ読み出し部１０５が読み出したデータとヘッダ生成部１０４が生成したヘッダからチェックサム値を計算する。尚、チェックサム処理部３０６Ｃは、ハードウェアＢに含まれる。
【００５３】
チェックサムバッファ部３０６Ｄは、チェックサム処理部３０６Ｃが計算したチェックサム値を記憶する。
【００５４】
パケットバッファ部３０６Ｂは、ヘッダ生成部１０４が生成したヘッダ及びデータ読み出し部１０５が読み出したデータ（例えば、データ及びヘッダはパケットＢに対応する）をバッファする。
【００５５】
パケット出力部３０６Ａは、パケットバッファ部３０６Ｂがデータ及びヘッダ（パケットＢに対応する）をバッファすることと並行して（すなわち、データ読み出し部１０５がデータ読み出しを行うこと及びヘッダ生成部１０４がヘッダ生成を行うことと並行して、）、一つ前にパケットバッファ部３０６Ｂがバッファしていたヘッダ及びデータにチェックサムバッファ部３０６Ｄがバッファしていたチェックサム値をヘッダに格納しパケットを生成し、パケット（例えば、パケットＡ）として順次出力する。
【００５６】
図５（ｂ）に示すように、ヘッダ生成保留部３１１及びデータ読み出し保留部３１０は、現在（パケットＣを生成する）より１つ前のパケット（パケットＢ）のデータ読み出しが完了するまでであって、かつ、２つ前のパケットのパケットバッファ部３０６Ａによるパケットの出力（パケットＡ）が完了するまで、ヘッダ生成及びデータ読み出し（パケットＣに対応する）を保留する。２つ前のパケット（パケットＡ）のパケット出力が完了するまで、１つ前のパケット（パケットＢ）のパケット生成のためのヘッダ及びデータはパケットバッファ部３０６Ｂに格納されているため、現在のパケット（パケットＣ）生成のためのヘッダ及びデータを生成しても、パケットバッファ部３０６Ｂがそのヘッダ及びデータを処理することができないためである。
【００５７】
本実施例によれば、パケット出力部３０６Ａによるパケット生成処理と、データ読み出し及びヘッダ生成と、コネクション情報読み出し及びコネクション情報書き込みとを適切に並列動作させることができる。その結果、通信装置１００のパケットの送信処理の処理速度向上を達成することができる。
【００５８】
＜実施例４＞
図６（ａ）に実施例４の通信装置４００を示す。また、図６（ｂ）に通信装置４００のパケット送信のタイムチャートを示す。
【００５９】
通信装置４００は、実施例３の通信装置３００の構成に更に送信開始指示保留部４１２を備える。
【００６０】
送信開始指示保留部４１２は、送信開始指示部１０１がコネクション情報読み出し部１０２に、送信開始指示を行うタイミングを制御する。送信開始指示保留部４１２は、送信開始指示がこれから送信指示を出そうとするパケット（例えば、パケットＢ）の送信開始指示を、その一つ前のパケット（例えば、パケットＡ）のコネクション情報の書き込みの完了後行うように制御する（条件１とする。）。例えば、コネクション情報書き込み部４０３がコネクション情報の書きこみを完了したとの信号を受信すると、送信開始保留部は、送信開始指示部１０１に、送信開始指示を行わせる。パケットＢのコネクション情報読み出し部１０２の読み出しを行う前に、コネクション情報書き込み部４０３による書き込みを行うことにより、１つ前のパケットＡで送信したデータと重複したデータをパケットＢで送信することを防ぐことができる。
【００６１】
また、送信開始指示保留部４１２は、送信開始指示部１０１がこれから送信指示を出そうとするパケットより一つ前のパケット（例えば、パケットＢ）のヘッダ生成を完了後、送信開始指示部１０１が、これから送信指示を出そうとするパケット（例えば、パケットＣ）の送信指示を行うことを制御する（条件２とする）。例えば、パケットＢに関して、ヘッダ生成部４０４からヘッダ生成が完了したとの信号を受信すると、送信開始保留部は、パケットＣの送信開始指示部１０１に、送信開始指示を行わせる。これは、パケットのヘッダ生成は読み出したコネクション情報に基づいて行うが、一つ前のパケットＢのヘッダのヘッダ生成が完了しないうちに次のパケットＣのコネクション情報を読み出すと、パケットＢのコネクション情報とパケットＣのコネクション情報２つのコネクション情報を同時に保持することとなる。２つのコネクション情報を同時に保持しない方が、処理を簡略化することができる。条件２を満たすように、送信開始指示部１０１が送信開始指示を行えば、２つのコネクション情報を同時に保持することを防ぎ、処理の簡略化を実現できる。
【００６２】
実施例４の通信装置４００によれば、送信開始指示を条件１及び条件２のように適切なタイミングで行うことができ、送信処理の並列処理を適切に行うことができ、又、送信処理の効率化を達成することができる。
【００６３】
＜実施例５＞
図７（ａ）に実施例５の通信装置５００を示す。また、図７（ｂ）に通信装置５００のパケット送信のタイムチャートを示す。
【００６４】
通信装置５００は、通信装置４００の構成に加えて、更に、送信可否判定部５１３を備える。
【００６５】
ＴＣＰ／ＩＰの通信においては、フロー制御、輻輳制御、確認応答制御、データリング層のフロー制御等の制御を行う。これら制御において、送信可否判定部５１３は、送信可否の判定を行う。更に、送信可否判定部５１３は、送信可と判定した場合は、通信端末は、実施例１〜４と同様の動作を行う。一方、送信可否判定部５１３が、送信不可と判定した場合は、送信不可と判定したパケットの送信のための処理を終了し、次のパケットの送信処理のための動作を行う。また、次のパケット送信のための処理としては、送信可否判定部５１３は、次のパケットの送信開始を行うように送信開始保留部に指示する。例えば、送信可否判定部５１３は、送信開始指示保留部５１２の送信開始の保留を解除する。即ち、実施例４では、一つ前のパケットのヘッダ生成部４０４のヘッダ生成、又は、一つ前のパケットのコネクション情報書き込みが完了することを契機として送信開始指示保留部５１２の保留を解除していたが、送信可否判定部５１３が送信不可と判定した場合に、送信可否判定部５１３の指示により送信開始指示保留部５１２の保留を解除する。このように送信可否判定部５１３が動作することにより、図１１のタイムチャートに示すような送信処理を行うことが可能となる。例えば、２つ目のパケットＢの送信が不可と判定された場合、送信可否判定後の送信処理の動作（データ読み出し、コネクション情報書き込み、パケット生成）を省略できる。また、送信が不可と判定されたことを契機として、ただちに三つ目のパケットＣの送信開始指示が行われる。また、４つ目のパケットＤ、５つ目のパケットＥの送信も不可と判定された場合も、送信判定後の送信処理を省略でき、また、直ちに６つ目のパケットＦの送信開始指示が行われている。その結果、送信可と判定されたパケットの送信を遅延なく行うことができる。例えば、３つ目のパケットＣのヘッダ生成及びデータ読み出しを行った後、連続して６つ目のパケットＦのヘッダ生成及びデータ読み出しを行うことができる。
【００６６】
以上の動作に示すように、上述した制御において、送信が不可と判定されたパケットに関して、送信判定後の送信処理の動作が省略され、また、直ちに送信可否判定部５１３により送信開始指示が行われるため、上述した制御により送信不可と判定されたパケットがあったとしても、連続してパケット生成を行うことができ、また、送信処理の並列処理を効率的に行うことができる。
【００６７】
ここで、ＴＣＰのフロー制御とは、例えば、通信装置５００がＡＣＫパケットなどにより受信したパケットの送信先の端末が受信可能なウィンドサイズ（バッファサイズ）を第１記憶部５０８にコネクション情報として記憶しておき、コネクション情報読み出し部５０２がコネクション情報を読み出すと、送信可否判定部５１３は、これから送信しようとしているパケットがウィンドサイズを超えるものである場合、当該パケットは送信不可として送信を中止し、ウィンドサイズ以内である場合、当該パケットは送信可として送信を継続する。
【００６８】
また、輻輳制御とは、パケットの送信先の端末とのネットワークの輻輳を軽減するための制御である。輻輳制御においては、通信装置５００が、所定の計算によりリアルタイムに更新する輻輳ウィンドサイズを定義し、その輻輳ウィンドサイズを第１記憶部５０８にコネクション情報として記憶しておき、コネクション情報読み出し部５０２がコネクション情報を読み出すと、送信可否判定部５１３がこれから送信しようとしているパケットは輻輳ウィンドサイズを超えると判定した場合、当該パケットは送信不可として送信を中止し、輻輳ウィンドサイズ以内である場合、当該パケットは送信可として送信を継続する。
【００６９】
以上、ＴＣＰのフロー制御と輻輳制御とにおいては、第１記憶部に、コネクション情報として、コネクション毎にパケットを送信可能か否かを判定するための情報（ＴＣＰのフロー制御においては、ウィンドサイズ、輻輳制御においては、輻輳ウィンドサイズ。）を記憶し、前記送信可否判定部は、コネクション情報読み出し部が読み出したコネクション情報に基づいて、前記コネクション情報に対応するパケットを送信可能か送信不可かを判定する。
【００７０】
また、確認応答制御とは、データを含まないＡＣＫパケットを送信しようとした場合に、そのすぐ後にデータを含むパケットを送信する予定がある場合に、そのデータを含むパケットにＡＣＫ情報を相乗り(ピギーバック)させて送信させるため、送信可否判定部５１３が、データを含まないＡＣＫパケットは送信不可として送信を中止し、そうでない場合は、当該パケットは送信可として送信処理を継続する。
【００７１】
データリング層からのフロー制御とは、パケットの送信先の端末のデータリング層処理部（ＭＡＣ処理部）から、パケットの送信を抑制する要求フレーム（Ｅｔｈｅｒｎｅｔ(R)のＰＡＵＳＥフレーム等）を受信した場合に、所定の時間、あるいは、抑制を解除する要求を示すフレームを受けるまでの時間は、送信可否判定部５１３は、送信不可として判定し、当該パケットの送信を中止し、その抑制がない場合、又は解除された場合、送信可と判定し、当該パケットの送信処理を継続する。
【００７２】
尚、本発明は上記実施例をそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施例に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施例に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施例にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００７３】
１００、２００、３００、４００、５００・・・通信装置、１０１・・・送信開始指示部、１０２、５０２・・・コネクション情報読み出し部、１０３、４０３・・・コネクション情報書き込み部、１０４、４０４・・・ヘッダ生成部、１０５・・・データ読み出し部、１０６、３０６・・・パケット生成部、３０６Ａ・・・パケット出力部、３０６Ｂ・・・パケットバッファ部、３０６Ｃ・・・チェックサム処理部、３０６Ｄ・・・チェックサムバッファ部、１０７・・・インターフェース部、１０８、５０８・・・第１記憶部、１０９・・・第２記憶部、２１０、３１０・・・データ読み出し保留部、２１１、３１１・・・ヘッダ生成保留部、４１２、５１２・・・送信開始指示保留部、５１３・・・送信可否判定部
【図１】
0005568164.tif 000002
【図２】
0005568164.tif 000003
【図３】
0005568164.tif 000004
【図４】
0005568164.tif 000005
【図５】
0005568164.tif 000006
【図６】
0005568164.tif 000007
【図７】
0005568164.tif 000008