JP2013192256A - 通信装置 - Google Patents

通信装置 Download PDF

Info

Publication number
JP2013192256A
JP2013192256A JP2013111379A JP2013111379A JP2013192256A JP 2013192256 A JP2013192256 A JP 2013192256A JP 2013111379 A JP2013111379 A JP 2013111379A JP 2013111379 A JP2013111379 A JP 2013111379A JP 2013192256 A JP2013192256 A JP 2013192256A
Authority
JP
Japan
Prior art keywords
packet
unit
data
header
connection information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013111379A
Other languages
English (en)
Other versions
JP5568164B2 (ja
Inventor
Shingo Tanaka
信吾 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013111379A priority Critical patent/JP5568164B2/ja
Publication of JP2013192256A publication Critical patent/JP2013192256A/ja
Application granted granted Critical
Publication of JP5568164B2 publication Critical patent/JP5568164B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

【課題】TCP送信処理を並列化して実行することで、処理速度向上を達成する。
【解決手段】通信装置100は、コネクションとコネクションに対応するデータの記憶されるアドレスとを含むコネクション情報を記憶する第1記憶部108と、第1記憶部108からコネクション情報を読み出すコネクション情報読み出し部102と、コネクション情報からヘッダを生成するヘッダ生成部104と、コネクションに対応するデータを記憶する第2記憶部109と、コネクション情報に対応するデータを、第2記憶部109から読み出すデータ読み出し部105とを備え、コネクション情報読み出し部102は、データ読み出し部105が第1のパケットのデータを読み出す期間、又はヘッダ生成部104が第1のパケットのヘッダを生成する期間に、第1のパケットの次に送信する第2のパケットのコネクション情報の読み出しを行う。
【選択図】図1

Description

本発明は、通信装置に関する。
インターネット通信で使用されるプロトコルとしてTCP/IPがある。従来のTCP/IPは主にソフトウェア処理によって実現されており、例えばパソコンや組み込み機器などのCPUによって動作していた。
しかし、近年、ネットワークインフラの広帯域化や、ネットワークを介して伝送される映像コンテンツ等の広帯域化により、ネットワーク処理の負荷が増大し、CPUによる処理では性能が足りなくなってきている。
そこで、CPUの代わりにTOE(TCP/IP Offload Engine)がTCP/IPの処理を行うことが提案されている。TOEは、サブプロセッサやハードウェアがTCP/IPのプロトコル処理を行う。TOEを用いることにより、従来のソフトウェア処理より高速なTCP/IP処理が実現できる。
TOEとしては、例えば、特許文献1の技術がある。特許文献1の技術において、TOEは、TCP(UDP)/IP処理を複数のサブプロセッサが並列処理する。即ち、TOEは、ソケットAPIの一部の処理を実行するサブプロセッサAと、TCP(UDP)受信処理を実行するサブプロセッサBと、TCP(UDP)送信処理を実行するサブプロセッサCと、MACドライバ及びIP受信処理を実行するサブプロセッサDと、MACドライバ及びIP送信処理を実行するサブプロセッサEとを備え、これら複数のサブプロセッサが並列処理を行う。
しかし、この特許文献1では、TCP/IP処理のうちTCP(UDPUDP)送信処理を並列化する方法については記載されていない。
これらTCP/IP処理のうちTCP(UDP)送信処理は、コネクション情報の読み出し、パケットのデータの書き込み、ヘッダ生成、更新したコネクション情報の書き込みなど複数の処理を行う必要がある。これら複数の処理のうちいくつかの処理を並列化して実行することにより、TCP(UDP)送信処理の処理速度を向上することが期待される。
特開2008−146486号公報
本発明は、TCP(UDP)送信処理を並列化して実行することにより、TCP(UDP)送信処理の処理速度向上を達成することができる通信装置を提供することを目的とする。
上記目的を達成するために、本発明の一実施例に係る通信装置は、ヘッダとデータを含むパケットを生成して、当該パケットをネットワークを介して一又は複数の端末に送信する通信装置であって、自装置と一又は複数の前記端末間の複数のコネクション毎に、前記コネクションと前記コネクションで送信すべきデータのうち送信済みデータを示す送信済みデータ情報とを含むコネクション情報を記憶する第1記憶部と、複数のコネクションを指定した複数の送信要求を受け付けた場合に、複数の前記コネクションを交互に切り替えて指定したパケットの送信開始指示を行う送信開始指示部と、前記パケットの送信開始指示を受けると、前記第1記憶部から前記パケットの送信開始指示部により指定されたコネクションにかかるコネクション情報を読み出すコネクション情報読み出し部と、前記コネクション情報読み出し部が読み出した前記コネクション情報の前記コネクションからパケットのヘッダを生成するヘッダ生成部と、複数の前記コネクション毎に、前記コネクションで送信すべきデータを記憶する第2記憶部と、前記コネクション情報読み出し部が読みだしたコネクション情報に基づき、前記第2記憶部からデータを読み出すデータ読み出し部と、前記コネクション情報を基に、前記第1記憶部の送信済みデータ情報を更新するコネクション情報書き込み部を備える。
本発明の通信装置によれば、TCP(UDP)送信処理を並列化して実行することにより、TCP(UDP)送信処理の処理速度向上を達成することができる。
実施例1に係る通信装置を示す図。 実施例1に係る通信装置の動作を示すフローチャート。 実施例1に係る通信装置の動作を示すタイムチャート。 実施例2に係る通信装置に関する図。 実施例3に係る通信装置に関する図。 実施例4に係る通信装置に関する図。 実施例5に係る通信装置に関する図。
以下、本発明の実施形態について説明する。
<実施例1>
図1は、実施例1の通信装置100を示す図である。
通信装置100は、ネットワーク(例えば、イーサネット(R)や無線LAN)に、TCP/IPやUDP/IPなどのプロトコルによりパケットを送信する。図1に示すように、通信装置100は、送信開始指示部101と、コネクション情報読み出し部102と、コネクション情報書き込み部103と、ヘッダ生成部104と、データ読み出し部105と、パケット生成部106と、インターフェース部107と、第1記憶部108と、第2記憶部109とを備える。
ここで、コネクション情報読み出し部102とコネクション情報書き込み部103は、ハードウェアAで構成される。また、ヘッダ生成部104とデータ読み出し部105は、ハードウェアBで構成される。ハードウェアA、Bは、例えばCPLD(Complex Programmable Logic Device) 、又はASICである。即ち、ハードウェアAが、コネクション情報読み出しとコネクション情報書きこみを行い、ハードウェアBが、ヘッダ生成とデータ読み出しを行う。そして、ハードウェアAとハードウェアBとは、並列に動作する。従って、コネクション情報読み出し部102によるコネクション情報読み出しとコネクション情報書き込み部103によるコネクション情報書き込みは、それぞれ、ヘッダ生成部104によるヘッダ生成とデータ読み出し部105によるデータ読み出しそれぞれと同時に動作(並列動作)させることができる。例えば、パケット生成のためのデータ読み出し部105によるデータ読み出し又は、ヘッダ生成部104によるヘッダ生成を行っている期間に、当該パケットの次に送信するパケット生成のためのコネクション情報読み出し部102によりコネクション情報の読み出しを行うことができる。その結果、パケットの送信処理の処理速度を向上させることができる。
第1記憶部108は、コネクション毎にコネクション情報を記憶する。尚、コネクションとは、TCP/IPプロトコル、又はUDP/IPプロトコルにおける通信における送信元(例えば、通信装置100)と送信先(例えば、パケットが送信される端末)の間で、送信元IPアドレス、送信元ポート番号、送信先IPアドレス、送信先ポート番号で決定されるものである。また、コネクション情報とは、コネクション毎に対応する情報であり、コネクション(送信元IPアドレス、送信元ポート番号、送信先IPアドレス、送信先ポート番号)、コネクションに対応するデータが第2記憶部109のどこに記憶されているかを示す第1のアドレス、コネクション毎に送信すべきデータのうちどこまでパケットにより送信したかを示す情報(以下、送信済みデータ情報とする。)を含む情報である。
第2記憶部109は、コネクション毎に送信すべきデータを記憶する。
送信開始指示部101は、外部のアプリケーション(図示せず。)から、データを送信したいコネクションを指定した送信要求を受け付ける。コネクションの指定は、第1記憶部108の当該コネクションのコネクション情報が記憶されているアドレス(第2のアドレス)で行う。送信開始指示部101は、その第2のアドレスを指定して(すなわち送信したいコネクションを指定して)、コネクション情報読み出し部102に、パケットの送信開始指示を行う。ここで、1つのパケットは、1つのコネクションの送信したいデータを一度に送信可能なサイズに分割したうちの一つ分のデータに相当するので、送信開始指示部101は、1回の外部アプリケーションからの送信要求に対し、複数回のパケット送信開始指示を行う。また、外部アプリケーションから複数のコネクションに対する送信要求を受けたとき、送信開始指示部101は、それらを一旦内部に保持(キューイング)し、順次取り出して、コネクション情報読み出し部102に、パケット送信開始指示を行う。
コネクション情報読み出し部102は、送信開始指示部101の送信開始指示を受けると、第1記憶部108から、第2のアドレスに対応するコネクション情報を読み出す。
データ読み出し部105は、コネクション情報読み出し部102が読み出したコネクション情報に基づき、第2の記憶部109からデータを読み出す。ここで、データ読み出し部105は、第1のアドレスと送信済みデータ情報に基づき、データを読み出す。
ヘッダ生成部104は、コネクション情報読み出し部102が読み出したコネクション情報のコネクションを用いてパケットのヘッダを生成する。
パケット生成部106は、データ読み出し部105が読み出したデータとヘッダ生成部104が生成したヘッダを用いてパケットを生成する。
インターフェース部107は、パケットにデータリング層(MAC)や物理層(PHY)の処理を行い、パケットをネットワーク上に送信する。
コネクション情報書き込み部103は、コネクション情報読み出し部102が読み出したコネクション情報をもとに、第1記憶部108に、読み出したコネクション情報に対応する送信済みデータ情報を更新する。尚、パケット生成のためのコネクション情報書き込み部103による書き込みは、当該パケットの1つ後に送信するパケット生成のためのコネクション情報読み出し部102によるコネクション情報の読み出しを行う前に行う。
次に、通信装置100の動作方法について説明する。以下では、TCP/IPのプロトコルによりパケットを送信する場合について説明する。また、1回のパケットの送信につき1500バイトを送信するものとする(データが1460バイト、ヘッダが40バイトであるとする。)。図2は、通信装置100のパケット送信の動作を示すフローチャートである。図3は、通信装置100のパケット送信処理を示すタイムチャートである。図3において、1つのパケットを生成するための処理としてコネクション情報読み出し、コネクション情報書き込み、ヘッダ生成、データ読み出しを示した。図3は、右(横)方向に時間軸が設定されている。また、上の段(コネクション情報読み出し及びコネクション情報書き込み)と、下の段(ヘッダ生成及びデータ読み出し)を並列する処理する様子を示している。尚、前述したとおり、上の段の処理は、ハードウェアAが処理を行い、下の段の処理は、ハードウェアBが処理を行っている。図3においては、3つのパケットを生成するタイムチャートを示した。以下では、時間軸に沿って、3つのパケットをそれぞれパケットA、パケットB、パケットCとする。図3において、パケットA及びパケットCの処理は、実線で示し、パケットBの処理は点線で示した。
まず、送信開始指示部101が、1つ目のパケットAに関して、コネクション1を指定してコネクション情報読み出し部102に対してパケットの送信開始指示を行う(S101)。ここで、コネクション1とは、送信元が、通信装置100であり、送信先が端末Aであるコネクションであるとする。
次に、コネクション情報読み出し部102は、パケットAに関して、第1記憶部108からコネクション情報を読み出す(S102)。コネクション情報読み出し部102は、例えば、読み出したコネクション情報をレジスタ(図示せず。)に一時的に記憶する。
次に、ヘッダ生成部104が、読み出したコネクション情報のコネクションからパケットAのヘッダを生成する(S103)。具体的には、TCP/IPの仕様に準拠したヘッダの並びに従い、前述の読み出したコネクション情報からクロックサイクル毎に例えば4バイト毎にセレクトしながら、後段に出力する。このサイクルを10回行い40バイトのTCP/IPヘッダを出力する。
次に、ヘッダ生成部104がヘッダを生成開始後(又は、ヘッダ生成部104がヘッダ生成を生成開始と同時に)、コネクション情報書き込み部103は、コネクション情報読み出し部102が、読み出したコネクション情報を基に、第1記憶部108に、読み出したコネクション情報に対応するコネクション、の送信済みデータ情報を更新する(S104)。通信装置100は、後述するように1パケットあたり1460バイトのデータを送信するため、ステップ102でコネクション情報読み出し部102が読み出したコネクション情報に対応するコネクションにつきの送信済みデータ情報として、1460バイトのデータを足すように更新を行う。尚、通信装置100は、1パケットあたり1460バイトのデータを送信すると決まっているものとする。したがって、実際に通信装置100がパケットAを送信していなくても、コネクション情報書き込み部103は、読み出したコネクション情報がわかれば、コネクション情報に書き込みを行える。
データ読み出し部105が、パケットAに関して、コネクション情報のうち、コネクションに対応する第2記憶部109のデータの第1のアドレス(例えば、コネクションに対応するデータのアドレスの始端及び終端)と、送信済みデータ情報(例えば、何バイト送信しているか)の情報から第2記憶部109からパケットAで送信すべきデータのアドレスを特定し、そのデータを読み出す(S105)。例えば、コネクションに対応する第2記憶部109のデータのアドレス領域が、始端が0x01000000であり、終端が0x010fffff(長さ1Mバイト)であるとする。また、送信済みデータ情報は、1460バイトまで送信しているとする。この場合、データ読み出し部105は、第2記憶部109から送信すべきデータは、以下のアドレスから読みだす。即ち、0x01000000+1460=0x010005b4から読みだす。このデータの先頭アドレスからデータ読み出し部105は、合計1460バイトのデータを4バイトずつデータを順次読み出す。即ち、全てのデータを読み出すためには、データ読み出し部105は、1460/4=365サイクルを行う必要がある。尚、データ読み出し部105は、4バイトずつ順次パケット生成部106に出力する。
データ読み出し部105が、パケットAのデータを読み出している最中に、送信開始指示部101が、2つ目のパケットBに関して、コネクション1を指定してコネクション情報読み出し部102に対してパケットの送信開始指示を行う(S106)。例えば、送信開始指示部101は、1つ目のパケットAのデータ読み出し部105によるデータ読み出しが完了するまでに、パケットBのコネクション情報読み出し部102がコネクション情報の読み出しが完了するタイミングで送信開始指示を行うことが好ましい。
次に、コネクション情報読み出し部102は、パケットBに関して、第1記憶部108からコネクション情報を読み出す(S107)。ここで、コネクション情報読み出し部102は、コネクション1のコネクション情報を読み出す。このコネクション情報は、S104でコネクション情報書き込み部103が書き込みを行って更新されたコネクション情報である。即ち、パケットAのコネクション情報読み出し時のコネクション情報について、送信済みデータ情報につき1460バイトのデータが足された情報である。パケットBのコネクション情報読み出し部102の読み出しを行う前に、コネクション情報書き込み部103による書き込みが行われているため、1つのパケットAで送信したデータと重複したデータを送信することを防ぐことができる。
次に、パケット生成部106は、ヘッダ生成部104で生成されたヘッダとデータ読み出し部105で読み出されたデータとをバッファしつつ、送信すべきパケットのデータを例えば4バイトずつ順次インターフェース部107に出力する(S108)。
インターフェース部107は、パケット生成部106からパケットを受け取ると、パケットをネットワーク上に送出する(S109)。
以上のように、通信装置100は、パケットAのデータ読み出しの処理とパケットBのコネクション情報のコネクション情報読み出し処理を並列処理することができる。これにより、通信装置100のパケットの送信処理の処理速度向上を達成することができる。また、特に、本実施形態では、適切なタイミングで送信開始指示を行うことにより、1つ目のパケットAのデータ読み出し部105によるデータ読み出しが完了するまでに、パケットBのコネクション情報読み出し部102がコネクション情報の読み出しを完了する。これにより、図3に示すように、ヘッダ生成処理とデータ読み出し処理を、コネクション情報の読み出し処理及びコネクション情報の書き込み処理の時間に左右されることなく連続して動作させることができる。その結果、通信装置100のパケットの送信処理の処理速度向上を達成することができる。
通信装置100は、前述したようにヘッダ生成処理とデータ読み出し処理は合わせて375クロックサイクル数の処理を、コネクション情報の読み込み処理及びコネクション情報の書き込み処理の時間に左右されることなく、連続して動作させることができる。
尚、本実施例においては、ヘッダ生成部104がヘッダを生成後、データ読み出し部105がデータ読み出しを行っている例を説明した。しかしながら、データ読み出し部105がデータ読み出した後ヘッダ生成を行っても良い。ネットワークにパケットを送信する時点では、データよりヘッダが先になる必要があるが、パケット生成部106、若しくは、インターフェース部107がバッファして、その順で送るようにすればよい。この場合、コネクション情報読み出し部102は、ヘッダ生成部104がパケットAのヘッダ生成を完了する前に、パケットBのコネクション情報読み出しを完了することが好ましい。
また、本実施例では、ヘッダ生成部104がヘッダ生成を生成開始後(又は、ヘッダ生成部104がヘッダ生成を生成開始と同時に)パケットAのコネクション情報の書き込みを行ったが、これに限られない。即ち、コネクション情報の書き込みは、パケットBのコネクション情報読み出し部102による読み出しが開始される前であればよい。
また、本実施例では、パケットA及びパケットBについて、同一のコネクション1のデータを連続して送信した。しかしながら、複数のコネクションを順番に送信しても良い。例えば、3つのコネクション(コネクション1、コネクション2、コネクション3)を同時に送信するとき、送信開始指示部101は、外部アプリケーションからのこの3つのコネクションに対する送信要求を内部に保持し、コネクション1の1つ目のパケット送信→コネクション2の1つ目のパケット送信→コネクション3の1つ目のパケット送信→コネクション1の2つ目のパケット送信→コネクション2の2つ目のパケット送信→コネクション3の2つ目のパケット送信…のように順次指示する。このように複数のコネクションのデータを順番に送信することにより、特定のコネクションの遅延を防ぐことができる。このように異なるコネクションのパケットを交互に送信することができるのは、コネクション情報読み出し部102によるコネクション情報読み出し及びコネクション情報書き込みをパケット送信の都度行っているためである。
なお、本実施例にかかる通信装置100は、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。即ち、送信開始指示部101、コネクション情報読み出し部102、コネクション情報書き込み部103、データ読み出し部105、ヘッダ生成部104、パケット生成部106、インターフェース部107は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行することにより実現することができる。このとき、通信装置100は、上記のプログラムを実行させることにより実現することができる。このとき、通信装置100は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現しても良いし、CD−ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現しても良い。また、第1記憶部108及び第2記憶部109は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスク若しくはCD−R、CD−RW、DVD−RAM,DVD−Rなどの記憶媒体などを適宜利用して実現することができる。
<実施例2>
図4(a)に実施例2の通信装置200を示す。また、図4(b)に通信装置200のパケット送信のタイムチャートを示す。
通信装置200は、通信装置100の構成に加え、データ読み出し保留部210とヘッダ生成保留部211を備える。
図4(a)に示されるように、2つ目のパケットBの送信開始指示により、パケットBのコネクション情報の読み出しが、1つ目のパケットAのデータ読み出し部105によるデータ読み出し中に行われ、1つ目のパケットAのデータ読み出し完了より前に、完了する場合である。
データ読み出し保留部210は、コネクション情報に基づき、データ読み出し部105がデータ読み出しを行うことを保留させる。例えば、データ読み出し保留部210は、一時的にコネクション情報を記憶する。また、例えば、コネクション情報読み出し部102がパケットBのコネクション情報の読み出しを、データ読み出し部105がパケットAのデータ読み出し完了するより前に完了した場合、データ読み出し保留部210は、パケットAのデータ読み出し完了まで、データ読み出し部105がパケットBのデータを読み出すことを保留させる。そして、図5に示すように、データ読み出し部105によるパケットAのデータ読み出し完了後、データ読み出し保留部210は、データ読み出し部105がパケットBのデータを読み出すことの保留を解除し、データ読み出し部105は、パケットBのコネクション情報に基づき、パケットBのデータ読み出しを開始する。
また、ヘッダ生成部保留部211は、コネクション情報に基づき、ヘッダ生成部104がヘッダ生成することを保留させる。例えば、ヘッダ生成保留部211は、一時的にコネクション情報を記憶する。また、例えば、コネクション情報読み出し部102がパケットBのコネクション情報の読み出しを、データ読み出し部105がパケットAのデータ読み出しを完了する前に完了した場合、ヘッダ生成保留部211は、ヘッダ生成部104がパケットBのヘッダ生成を行うことを保留させる。そして、図5に示すように、ヘッダ生成保留部211は、データ読み出し部105によるパケットAのデータ読み出し完了後、ヘッダ生成部104がパケットBのヘッダを生成することの保留を解除し、ヘッダ生成部104はパケットBのヘッダ生成を開始する。
通信装置200によれば、1つ目のパケットAのデータ読み出し中の早いタイミングで、送信開始指示を行い、コネクション情報読み出し部102がコネクション情報を、パケットAのデータAのデータ読み出し完了より前に読み出した場合であっても、そのコネクション情報に基づく、データ読み出し及びヘッダ生成を、データ読み出し保留部210及びヘッダ生成保留部211が、パケットAのデータ読みだし完了後まで保留するため、コネクション情報読み出し、ヘッダ生成それぞれの処理をデータ読み出しと並列に処理することを適切に行うことができる。また、パケットBの送信開始指示を行い、コネクション情報読み出し部102がコネクション情報を早い段階で行うことができるため、1つ目のパケットAのデータ読み出し部105によるデータ読み出しが完了するまでに、パケットBのコネクション情報読み出し部102がコネクション情報の読み出しを完了させることができる。これにより、図5に示すように、ヘッダ生成処理とデータ読み出し処理それぞれの処理を、コネクション情報の読み出し処理及びコネクション情報の書き込み処理の時間に左右されることなく連続して動作させることができる。その結果、通信装置100のパケットの送信処理の処理速度向上を達成することができる。
尚、本実施例では、ヘッダ生成、データ読み出しの順で処理を行っているが、データ読み出しとヘッダ生成の順で処理を行っても良い。この場合、1つ目のパケットAのヘッダ生成が完了するまで、ヘッダ生成保留部211及びデータ読み出し保留部210は、それぞれパケットBのヘッダ生成及びデータ読み出しを保留する。
尚、本実施例では、1つ目のパケットAと2つ目のパケットBの関係について説明したが、1つ目のパケットAと2つ目のパケットBの関係に限られない。例えば、5つ目のパケットと6つ目のパケットについても本実施例は適用できる。
<実施例3>
図5(a)に実施例3の通信装置300を示す。また、図5(b)に通信装置300のパケット送信のタイムチャートを示す。図5(b)のタイムチャートは、下段がパケット生成、中段がヘッダ生成及びデータ読み出し、上段がコネクション情報読み出し及びコネクション情報書き出しを示す。図7において、1つのパケットを生成するための処理としてコネクション情報読み出し、コネクション情報書き込み、ヘッダ生成、データ読み出し及びパケット生成を示した。また、上の段(コネクション情報読み出し及びコネクション情報書き込み)と、中の段(ヘッダ生成及びデータ読み出し)と、下の段(パケット生成処理)とで並列する処理する様子を示している。尚、後述するように、上の段の処理、中の段の処理、下の段の処理は、それぞれハードウェアA、ハードウェアB、後述するハードウェアCが処理を行う。図5(b)においては、3つのパケットを生成するタイムチャートを示した。以下では、時間軸に沿って、3つのパケットをそれぞれパケットA、パケットB、パケットCとする。図5(b)において、パケットA及びパケットCの処理は、実線で示し、パケットBの処理は点線で示した。
通信装置300のパケット生成部306は、パケット出力部306Aとパケットバッファ部306Bとチェックサム処理部306Cとチェックサムバッファ部306Dを含む構成である。また、パケット出力部306Aは、ハードウェアCで構成される。ハードウェアCは、ハードウェアAとハードウェアBと並列動作が可能である。したがって、パケット出力部306Aのパケット生成処理は、コネクション情報読み出し部102によりコネクション情報読み出し、コネクション情報書き込み部103によりコネクション情報書き込み、それぞれと並列動作が可能である。また、パケット出力部306Aのパケット生成処理は、データ読み出し部105によるデータ読み出しと、ヘッダ生成部104によるヘッダ生成それぞれと並列動作が可能である。
チェックサム処理部306Cは、データ読み出し部105が読み出したデータとヘッダ生成部104が生成したヘッダからチェックサム値を計算する。尚、チェックサム処理部306Cは、ハードウェアBに含まれる。
チェックサムバッファ部306Dは、チェックサム処理部306Cが計算したチェックサム値を記憶する。
パケットバッファ部306Bは、ヘッダ生成部104が生成したヘッダ及びデータ読み出し部105が読み出したデータ(例えば、データ及びヘッダはパケットBに対応する)をバッファする。
パケット出力部306Aは、パケットバッファ部306Bがデータ及びヘッダ(パケットBに対応する)をバッファすることと並行して(すなわち、データ読み出し部105がデータ読み出しを行うこと及びヘッダ生成部104がヘッダ生成を行うことと並行して、)、一つ前にパケットバッファ部306Bがバッファしていたヘッダ及びデータにチェックサムバッファ部306Dがバッファしていたチェックサム値をヘッダに格納しパケットを生成し、パケット(例えば、パケットA)として順次出力する。
図5(b)に示すように、ヘッダ生成保留部311及びデータ読み出し保留部310は、現在(パケットCを生成する)より1つ前のパケット(パケットB)のデータ読み出しが完了するまでであって、かつ、2つ前のパケットのパケットバッファ部306Aによるパケットの出力(パケットA)が完了するまで、ヘッダ生成及びデータ読み出し(パケットCに対応する)を保留する。2つ前のパケット(パケットA)のパケット出力が完了するまで、1つ前のパケット(パケットB)のパケット生成のためのヘッダ及びデータはパケットバッファ部306Bに格納されているため、現在のパケット(パケットC)生成のためのヘッダ及びデータを生成しても、パケットバッファ部306Bがそのヘッダ及びデータを処理することができないためである。
本実施例によれば、パケット出力部306Aによるパケット生成処理と、データ読み出し及びヘッダ生成と、コネクション情報読み出し及びコネクション情報書き込みとを適切に並列動作させることができる。その結果、通信装置100のパケットの送信処理の処理速度向上を達成することができる。
<実施例4>
図6(a)に実施例4の通信装置400を示す。また、図6(b)に通信装置400のパケット送信のタイムチャートを示す。
通信装置400は、実施例3の通信装置300の構成に更に送信開始指示保留部412を備える。
送信開始指示保留部412は、送信開始指示部101がコネクション情報読み出し部102に、送信開始指示を行うタイミングを制御する。送信開始指示保留部412は、送信開始指示がこれから送信指示を出そうとするパケット(例えば、パケットB)の送信開始指示を、その一つ前のパケット(例えば、パケットA)のコネクション情報の書き込みの完了後行うように制御する(条件1とする。)。例えば、コネクション情報書き込み部403がコネクション情報の書きこみを完了したとの信号を受信すると、送信開始保留部は、送信開始指示部101に、送信開始指示を行わせる。パケットBのコネクション情報読み出し部102の読み出しを行う前に、コネクション情報書き込み部403による書き込みを行うことにより、1つ前のパケットAで送信したデータと重複したデータをパケットBで送信することを防ぐことができる。
また、送信開始指示保留部412は、送信開始指示部101がこれから送信指示を出そうとするパケットより一つ前のパケット(例えば、パケットB)のヘッダ生成を完了後、送信開始指示部101が、これから送信指示を出そうとするパケット(例えば、パケットC)の送信指示を行うことを制御する(条件2とする)。例えば、パケットBに関して、ヘッダ生成部404からヘッダ生成が完了したとの信号を受信すると、送信開始保留部は、パケットCの送信開始指示部101に、送信開始指示を行わせる。これは、パケットのヘッダ生成は読み出したコネクション情報に基づいて行うが、一つ前のパケットBのヘッダのヘッダ生成が完了しないうちに次のパケットCのコネクション情報を読み出すと、パケットBのコネクション情報とパケットCのコネクション情報2つのコネクション情報を同時に保持することとなる。2つのコネクション情報を同時に保持しない方が、処理を簡略化することができる。条件2を満たすように、送信開始指示部101が送信開始指示を行えば、2つのコネクション情報を同時に保持することを防ぎ、処理の簡略化を実現できる。
実施例4の通信装置400によれば、送信開始指示を条件1及び条件2のように適切なタイミングで行うことができ、送信処理の並列処理を適切に行うことができ、又、送信処理の効率化を達成することができる。
<実施例5>
図7(a)に実施例5の通信装置500を示す。また、図7(b)に通信装置500のパケット送信のタイムチャートを示す。
通信装置500は、通信装置400の構成に加えて、更に、送信可否判定部513を備える。
TCP/IPの通信においては、フロー制御、輻輳制御、確認応答制御、データリング層のフロー制御等の制御を行う。これら制御において、送信可否判定部513は、送信可否の判定を行う。更に、送信可否判定部513は、送信可と判定した場合は、通信端末は、実施例1〜4と同様の動作を行う。一方、送信可否判定部513が、送信不可と判定した場合は、送信不可と判定したパケットの送信のための処理を終了し、次のパケットの送信処理のための動作を行う。また、次のパケット送信のための処理としては、送信可否判定部513は、次のパケットの送信開始を行うように送信開始保留部に指示する。例えば、送信可否判定部513は、送信開始指示保留部512の送信開始の保留を解除する。即ち、実施例4では、一つ前のパケットのヘッダ生成部404のヘッダ生成、又は、一つ前のパケットのコネクション情報書き込みが完了することを契機として送信開始指示保留部512の保留を解除していたが、送信可否判定部513が送信不可と判定した場合に、送信可否判定部513の指示により送信開始指示保留部512の保留を解除する。このように送信可否判定部513が動作することにより、図11のタイムチャートに示すような送信処理を行うことが可能となる。例えば、2つ目のパケットBの送信が不可と判定された場合、送信可否判定後の送信処理の動作(データ読み出し、コネクション情報書き込み、パケット生成)を省略できる。また、送信が不可と判定されたことを契機として、ただちに三つ目のパケットCの送信開始指示が行われる。また、4つ目のパケットD、5つ目のパケットEの送信も不可と判定された場合も、送信判定後の送信処理を省略でき、また、直ちに6つ目のパケットFの送信開始指示が行われている。その結果、送信可と判定されたパケットの送信を遅延なく行うことができる。例えば、3つ目のパケットCのヘッダ生成及びデータ読み出しを行った後、連続して6つ目のパケットFのヘッダ生成及びデータ読み出しを行うことができる。
以上の動作に示すように、上述した制御において、送信が不可と判定されたパケットに関して、送信判定後の送信処理の動作が省略され、また、直ちに送信可否判定部513により送信開始指示が行われるため、上述した制御により送信不可と判定されたパケットがあったとしても、連続してパケット生成を行うことができ、また、送信処理の並列処理を効率的に行うことができる。
ここで、TCPのフロー制御とは、例えば、通信装置500がACKパケットなどにより受信したパケットの送信先の端末が受信可能なウィンドサイズ(バッファサイズ)を第1記憶部508にコネクション情報として記憶しておき、コネクション情報読み出し部502がコネクション情報を読み出すと、送信可否判定部513は、これから送信しようとしているパケットがウィンドサイズを超えるものである場合、当該パケットは送信不可として送信を中止し、ウィンドサイズ以内である場合、当該パケットは送信可として送信を継続する。
また、輻輳制御とは、パケットの送信先の端末とのネットワークの輻輳を軽減するための制御である。輻輳制御においては、通信装置500が、所定の計算によりリアルタイムに更新する輻輳ウィンドサイズを定義し、その輻輳ウィンドサイズを第1記憶部508にコネクション情報として記憶しておき、コネクション情報読み出し部502がコネクション情報を読み出すと、送信可否判定部513がこれから送信しようとしているパケットは輻輳ウィンドサイズを超えると判定した場合、当該パケットは送信不可として送信を中止し、輻輳ウィンドサイズ以内である場合、当該パケットは送信可として送信を継続する。
以上、TCPのフロー制御と輻輳制御とにおいては、第1記憶部に、コネクション情報として、コネクション毎にパケットを送信可能か否かを判定するための情報(TCPのフロー制御においては、ウィンドサイズ、輻輳制御においては、輻輳ウィンドサイズ。)を記憶し、前記送信可否判定部は、コネクション情報読み出し部が読み出したコネクション情報に基づいて、前記コネクション情報に対応するパケットを送信可能か送信不可かを判定する。
また、確認応答制御とは、データを含まないACKパケットを送信しようとした場合に、そのすぐ後にデータを含むパケットを送信する予定がある場合に、そのデータを含むパケットにACK情報を相乗り(ピギーバック)させて送信させるため、送信可否判定部513が、データを含まないACKパケットは送信不可として送信を中止し、そうでない場合は、当該パケットは送信可として送信処理を継続する。
データリング層からのフロー制御とは、パケットの送信先の端末のデータリング層処理部(MAC処理部)から、パケットの送信を抑制する要求フレーム(Ethernet(R)のPAUSEフレーム等)を受信した場合に、所定の時間、あるいは、抑制を解除する要求を示すフレームを受けるまでの時間は、送信可否判定部513は、送信不可として判定し、当該パケットの送信を中止し、その抑制がない場合、又は解除された場合、送信可と判定し、当該パケットの送信処理を継続する。
尚、本発明は上記実施例をそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施例に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施例に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施例にわたる構成要素を適宜組み合わせてもよい。
100、200、300、400、500・・・通信装置、101・・・送信開始指示部、102、502・・・コネクション情報読み出し部、103、403・・・コネクション情報書き込み部、104、404・・・ヘッダ生成部、105・・・データ読み出し部、106、306・・・パケット生成部、306A・・・パケット出力部、306B・・・パケットバッファ部、306C・・・チェックサム処理部、306D・・・チェックサムバッファ部、107・・・インターフェース部、108、508・・・第1記憶部、109・・・第2記憶部、210、310・・・データ読み出し保留部、211、311・・・ヘッダ生成保留部、412、512・・・送信開始指示保留部、513・・・送信可否判定部

Claims (7)

  1. ヘッダとデータを含むパケットを生成して、当該パケットをネットワークを介して一又は複数の端末に送信する通信装置であって、
    自装置と一又は複数の前記端末間の複数のコネクション毎に、前記コネクションと前記コネクションで送信すべきデータのうち送信済みデータを示す送信済みデータ情報とを含むコネクション情報を記憶する第1記憶部と、
    複数のコネクションを指定した複数の送信要求を受け付けた場合に、複数の前記コネクションを交互に切り替えて指定したパケットの送信開始指示を行う送信開始指示部と、
    前記パケットの送信開始指示を受けると、前記第1記憶部から前記パケットの送信開始指示部により指定されたコネクションにかかるコネクション情報を読み出すコネクション情報読み出し部と、
    前記コネクション情報読み出し部が読み出した前記コネクション情報の前記コネクションからパケットのヘッダを生成するヘッダ生成部と、
    複数の前記コネクション毎に、前記コネクションで送信すべきデータを記憶する第2記憶部と、
    前記コネクション情報読み出し部が読みだしたコネクション情報に基づき、前記第2記憶部からデータを読み出すデータ読み出し部と、
    前記コネクション情報を基に、前記第1記憶部の送信済みデータ情報を更新するコネクション情報書き込み部を備える
    通信装置。
  2. 前記コネクション情報読み出し部は、前記コネクション情報書き込み部が第1のパケットに関する前記送信済みデータ情報の更新を終了した後で、かつ、前記データ読み出し部が当該第1のパケットのデータを読み出している期間、又はヘッダ生成部が当該第1のパケットのヘッダを生成している期間に、当該第1のパケットの次に送信する第2のパケットのコネクション情報の読み出しを行うことを特徴とする
    請求項1記載の通信装置。
  3. データ読み出し保留部とヘッダ生成保留部を更に備え、
    前記データ読み出し保留部は、前記データ読み出し部が前記第1のパケットのデータの読み出しを完了するまでであって、かつ、前記ヘッダ生成部が前記第1のパケットのヘッダを生成することを完了するまで、前記第2のパケットのデータをデータ読み出し部が読みだすことを保留させ、前記データ読み出し部が前記第1のパケットのデータ読み出しを完了後、かつ、前記ヘッダ生成部が前記第1のパケットのヘッダを生成することを完了後に、前記第2のパケットのデータをデータ読み出し部が読みだすことを保留することを解除し、
    前記データ読み出し部は、前記データ読み出し保留部が前記保留を解除すると、データの読み出しを行い、
    ヘッダ生成保留部は、前記データ読み出し部が前記第1のパケットのデータの読み出しを完了するまでであって、かつ、前記ヘッダ生成部が前記第1のパケットのヘッダを生成することを完了するまで、前記第2のパケットのヘッダをヘッダ生成部が生成することを保留させ、前記データ読み出し部が前記第1のパケットのデータの読み出しを完了後、かつ、前記ヘッダ生成部が前記第1のパケットのヘッダを生成することを完了後に、前記第2のパケットのヘッダをヘッダ生成部が生成することを保留することを解除し、
    前記ヘッダ生成部は、前記ヘッダ生成保留部が前記保留を解除すると、ヘッダの生成を行うことを特徴とする
    請求項2記載の通信装置。
  4. チェックサム処理部とパケットバッファ部とパケット出力部とを備えるパケット生成部を更に備え、
    前記チェックサム処理部は、前記ヘッダ生成部が生成したパケットのヘッダと前記データ読み出し部が読み出した当該パケットのデータからチェックサム値を算出し、
    前記パケットバッファ部は、前記ヘッダ生成部が生成したパケットのヘッダと前記データ読み出し部が読み出した当該パケットのデータをバッファし、
    前記パケット出力部は、前記パケットバッファ部によるバッファと並行して、前記パケットバッファ部がバッファするヘッダ及びデータの一つ前にバッファしていたヘッダ及びデータのヘッダに前記チェックサム処理部が当該一つ前にバッファしていたヘッダ及びデータから計算したチェックサム値を格納してパケットとして出力して、
    前記ヘッダ生成部及び前記データ読み出し部は、前記パケットバッファ部が前記一つ前にバッファしていたヘッダ及びデータをパケットとして前記パケット出力部が出力完了後、前記パケットバッファ部がバッファしたヘッダ及びデータの次に送信するパケットのデータ読み出し及びヘッダの生成を行うことを特徴とする
    請求項3記載の通信装置。
  5. 更に、送信開始指示部と送信開始指示保留部を備え、
    前記送信開始指示部は、前記コネクション情報読み出し部に、パケットの送信開始指示を行い、
    前記送信開始指示保留部は、前記コネクション情報書き込み部がパケットのコネクション情報の書き込みを完了するまで、前記送信開始指示部が当該パケットの次に送信するパケットの送信開始指示を行うことを保留させ、前記コネクション情報書き込み部によるパケットのコネクション情報の書き込み完了後、前記送信開始指示部が当該パケットの次に送信するパケットの送信開始指示を行うことを保留することを解除することを特徴とする
    請求項4記載の通信装置。
  6. 前記送信開始指示保留部は、前記ヘッダ生成部がパケットのヘッダの生成を完了するまで、前記送信開始指示部が当該パケットの次に送信するパケットの送信開始指示を行うことを保留させ、前記ヘッダ生成部がパケットのヘッダの生成完了後、前記送信開始部が当該パケットの次に送信するパケットの送信開始指示を行うことを保留することを解除することを特徴とする
    請求項5記載の通信装置。
  7. 送信開始可否判定部を更に備え、
    前記コネクション情報は、更に、コネクション毎にパケットを送信可能か送信不可能を判定するための情報を含み、
    前記送信可否判定部は、前記コネクション情報読み出し部が読み出した前記コネクション情報に基づいて、前記コネクション情報に対応するパケットを送信可能か送信不可能かを判定し、
    前記送信可否判定部は、前記パケットを送信不可能と判定した場合、当該パケットを送信するための処理を終了させ、前記送信開始指示部に、当該パケットの次のパケットを送信させるための送信開始指示を行わせることを特徴とする請求項6記載の通信装置。
JP2013111379A 2013-05-27 2013-05-27 通信装置及びそのプログラム Active JP5568164B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013111379A JP5568164B2 (ja) 2013-05-27 2013-05-27 通信装置及びそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013111379A JP5568164B2 (ja) 2013-05-27 2013-05-27 通信装置及びそのプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011525692A Division JP5389174B2 (ja) 2009-08-05 2009-08-05 通信装置、パケット生成装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2013192256A true JP2013192256A (ja) 2013-09-26
JP5568164B2 JP5568164B2 (ja) 2014-08-06

Family

ID=49392016

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013111379A Active JP5568164B2 (ja) 2013-05-27 2013-05-27 通信装置及びそのプログラム

Country Status (1)

Country Link
JP (1) JP5568164B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003348184A (ja) * 2002-05-27 2003-12-05 Nec Corp 通信制御装置
JP2006260543A (ja) * 2005-02-17 2006-09-28 Nec Corp データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置
JP2008148133A (ja) * 2006-12-12 2008-06-26 Canon Inc 通信装置、その制御方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003348184A (ja) * 2002-05-27 2003-12-05 Nec Corp 通信制御装置
JP2006260543A (ja) * 2005-02-17 2006-09-28 Nec Corp データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置
JP2008148133A (ja) * 2006-12-12 2008-06-26 Canon Inc 通信装置、その制御方法及びプログラム

Also Published As

Publication number Publication date
JP5568164B2 (ja) 2014-08-06

Similar Documents

Publication Publication Date Title
US10652367B2 (en) Reducing network latency
US8996718B2 (en) TCP-aware receive side coalescing
US9100332B2 (en) Data transmitting device, data communicating device, and computer readable medium
JP5049834B2 (ja) データ受信装置、データ受信方法およびデータ処理プログラム
JP2019053591A (ja) 通知制御装置、通知制御方法及びプログラム
JP2009080584A (ja) プロトコル処理装置及び制御方法
WO2016045056A1 (zh) 交换机及业务请求报文的处理方法
JP5389174B2 (ja) 通信装置、パケット生成装置、及びプログラム
JP5304674B2 (ja) データ変換装置、データ変換方法及びプログラム
JP2016515361A (ja) アプリケーションにより提供される送信メタデータに基づくネットワーク送信調整
WO2022142813A1 (zh) 一种蓝牙数据传输方法、装置、通信芯片和电子设备
JP5568164B2 (ja) 通信装置及びそのプログラム
US10372667B2 (en) Communication apparatus and control method thereof
JP2014127969A (ja) プログラム、情報処理装置、及び通信方法
JP2014515195A (ja) 再送制御システム及び再送制御方法
US8327252B2 (en) Data receiving apparatus, data receiving method, and computer-readable recording medium
JP6933207B2 (ja) 送信装置、方法およびプログラム
JP2010130610A (ja) データ伝送システム
JP5187448B2 (ja) 中継装置
JP2017163346A (ja) 通信装置、方法、及びプログラム
JP7448014B2 (ja) 通信装置及び通信方法
TWI724670B (zh) 容錯系統及其控制方法
JP5262329B2 (ja) スケジューリングプログラム,スケジューリング方法及びスケジューリング装置
JP2010154130A (ja) 経路確認装置、経路確認システム、経路確認方法およびそのプログラム
JP7024259B2 (ja) 情報処理システム、情報処理方法、プログラム、及び情報処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140620

R151 Written notification of patent or utility model registration

Ref document number: 5568164

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151