JP2017103734A - 通信装置およびその制御方法、プログラム - Google Patents

通信装置およびその制御方法、プログラム Download PDF

Info

Publication number
JP2017103734A
JP2017103734A JP2015237970A JP2015237970A JP2017103734A JP 2017103734 A JP2017103734 A JP 2017103734A JP 2015237970 A JP2015237970 A JP 2015237970A JP 2015237970 A JP2015237970 A JP 2015237970A JP 2017103734 A JP2017103734 A JP 2017103734A
Authority
JP
Japan
Prior art keywords
data
checksum
packet
transmission data
retransmission
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
JP2015237970A
Other languages
English (en)
Other versions
JP6675189B2 (ja
Inventor
鈴木 智也
Tomoya Suzuki
智也 鈴木
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2015237970A priority Critical patent/JP6675189B2/ja
Publication of JP2017103734A publication Critical patent/JP2017103734A/ja
Application granted granted Critical
Publication of JP6675189B2 publication Critical patent/JP6675189B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

【課題】データの再送時におけるチェックサム演算の実施頻度を低減する。【解決手段】通信装置は、送信データのチェックサムを計算し、計算されたチェックサムを、送信データに関連付けて記憶部に保持する。通信装置は、上記計算されたチェックサムを用いて送信データのパケットを生成し、生成されたパケットを送信する。送信データを再送する場合には、通信装置は、送信データに関連付けて記憶部に保持されているチェックサムを用いたパケットを送信する。【選択図】 図5

Description

本発明は、データ通信を行う通信装置およびその制御方法、プログラムに関する。
データ通信において、データの誤りを検出するための機構を備えた通信方式がある。たとえば、インターネット通信で使われている主要なプロトコルのTCP/IPでは、TCPパケットのデータの誤りを検出するため、1の補数を加算することによって求められるチェックサムが使用される。しかし、ソフトウェア演算による処理でチェックサム演算を実施すると、CPU(Central Processing Unit)の処理負荷が増大し、通信処理性能が低下するという課題がある。なお、TCP/IPとは、Transmission Control Protocol/Internet Protocolの略である。
この課題を解決する方法として、通信装置にあるメモリ間のデータ転送機構(Direct Memory Access、以下、DMA)とチェックサム演算機能をハードウェア化する方法が提案されている。特許文献1では、DMAを用いてデータをコピーしながら、コピー対象のデータのチェックサム計算を行うことで、CPUの処理負荷を軽減し、通信処理性能の低下を防止することを可能としている。
特開平4−352054号公報
特許文献1に記載の方法では、DMAによりメモリ間を転送されるデータに対してチェックサム演算を行い、当該チェックサムを使用してパケットを生成し、送信する。しかし、DMAによって転送済みのデータを使用してパケットを生成し、再送する場合には、DMAが実行されないので上記のハードウェアによるチェックサム演算機能が使用できず、ソフトウェア演算による処理でチェックサム演算が実施される。そのため、データの再送の発生頻度に応じて、ソフトウェアによるチェックサム演算の実施頻度が上がり、CPUの処理負荷が増大して、通信処理性能が低下するという課題がある。
本発明は、上記の課題に鑑みてなされたものであり、データの再送時におけるチェックサム演算の実施頻度を低減することを目的とする。
上記の目的を達成するための本発明の一態様による通信装置は以下の構成を有する。すなわち、
送信データのチェックサムを計算する第1の計算手段と、
前記第1の計算手段により計算されたチェックサムを、前記送信データに関連付けて保持する保持手段と、
前記第1の計算手段により計算されたチェックサムを用いて、前記送信データのパケットを生成する第1の生成手段と、
前記第1の生成手段により生成された前記パケットを送信する送信手段と、
前記送信データを再送する場合に、前記送信データに関連付けて保持されているチェックサムを用いたパケットを送信する再送手段と、を有する。
本発明によれば、データの再送時におけるチェックサム演算の実施頻度を低減することができる。
第1実施形態に係る通信装置のハードウェア構成例を示すブロック図。 第1実施形態に係るネットワークバッファの構成例を示す図。 第1実施形態による、通信接続から通信切断までの処理を示すシーケンス図。 第1実施形態による、データ送信時の処理を示すシーケンス図。 第1実施形態による、データ送信時の処理を示すフローチャート。 第2実施形態に係る通信装置のハードウェア構成例を示すブロック図。 第2実施形態による、データ送信時の処理を示すフローチャート。 チェックサムを再利用できなくなったネットワークバッファの例を示す図。 送信データサイズを変更したネットワークバッファの例を示す図。 第3実施形態による、データ送信時の処理を示すフローチャート。 チェックサムを再利用できなくなったネットワークバッファの例を示す図。 送信データサイズを変更したネットワークバッファの例を示す図。 第4実施形態による通信装置の処理を示すシーケンス図。 第4実施形態によるデータ送信時の処理を示すフローチャート。
以下、添付の図面を参照して、本発明の実施形態のいくつかについて説明する。
(第1実施形態)
図1は、第1実施形態に係わる通信装置10のハードウェア構成例を示すブロック図である。図1において、RAM101(Random Access Memory)は、プログラムやデータを一時記憶する。RAM101は送信対象のデータ(送信データ)を格納するユーザバッファ領域109を有する。RAM102は、RAM101と同様、プログラムやデータを一時記憶する。RAM102はネットワークバッファ領域110を有する。なお、図1ではRAM101とRAM102を分離して示しているが、一つのRAMでもよい。ROM103(Read Only Memory)は、変更を必要としないプログラムやパラメータを格納する。
CPU104(Central Processing Unit)は、通信装置10の全体を制御する。CPU104は、メインメモリであるRAM101をワークメモリとして、ROM103や図示しないHDDなどの記憶媒体で構成されたプログラム格納部に格納された各種プログラムを実行する。CPU104が実行するプログラムにはネットワークドライバが含まれ、ネットワークドライバの実行により、後述するチェックサムを含む送信データをパケット化するデータ処理や肯定応答の受信処理などを含む、プロトコル処理の機能が実現される。
タイマ管理部105は、プログラムの処理などの時間の経過を管理する。MAC106(メディアアクセス制御モジュール)とPHY107(物理レイヤモジュール)は、Ethernet108などのネットワークを介した通信を行う通信部である。CPU104は、ネットワークドライバを実行し、MAC106を制御してデータの送受信を行う。
なお、通信装置10の具体例は、デジタルカメラ、デジタルビデオカメラ、携帯電話、スマートフォン、PC、ノートPC、サーバ、などである。なお、本実施形態ではEthernet(登録商標)による有線LAN(Local Area Network)通信機能を用いたが、これに限られるものではない。たとえば、無線LAN(Wi−Fi)など、IP(Internet Protocol)通信が可能であれば他の通信方式が用いられてもよい。なお、本実施形態において用いられるパケットは、インターネット上で送受信されるデータの単位である。このパケットの組み立て方法については周知であるので、説明を省略する。
図2(a)は、第1実施形態に係る通信装置10のネットワークバッファの構成例を示す図である。図2(b)は、図2(a)に示すネットワークバッファを簡易的に表現した図である。
図2(a)において、ネットワークバッファ200は、送信データをパケット化したり、パケットを受信したりするために使用される。ネットワークバッファ領域110には、ネットワークバッファ200が1つ以上連結されて保持される。ネットワークバッファ200は、パケットごとに用意され、一つのパケットに格納される送信データが書き込まれる。ネットワークバッファ200は、ネットワークバッファの管理構造体201、ネットワークバッファ内のチェックサム格納領域202、パケット格納領域203の3つの格納領域を有する。
管理構造体201は、次の管理構造体201を指すポインタ、ネットワークバッファ内に格納されているデータの開始位置を指すポインタ、ネットワークバッファ内に格納されているデータのサイズなどを格納する。また、後述のシーケンス開始番号やシーケンス終了番号も管理構造体201に格納される。チェックサム格納領域202は、パケット格納領域203に格納されているパケットのデータ部(すなわち、送信データ)のチェックサムを管理する領域である。こうして、送信データと算出されたチェックサムとが関連付けて保持される。なお、本実施形態では、“チェックサム”を誤り検出符号または誤り訂正符号を示す語句として用いている。すなわち、本明細書において、チェックサムとは、CRC(Cyclic Redundancy Check)など他の誤り検出符号または誤り訂正符号を含む用語である。パケット格納領域203は、受信パケットや送信パケットを格納する領域である。
図2(b)において、4つのネットワークバッファ200が連結されてネットワークバッファ領域110に格納された例を簡易的に示した図である。なお、図2(b)では、主にネットワークバッファ200のパケット格納領域203のデータ部が示されている。チェックサム206は、チェックサム格納領域202に格納されている値である。シーケンス開始番号207は、パケット格納領域203に格納されているデータの先頭のシーケンス番号を示す。シーケンス番号とは、送信データを管理するために、送信データの先頭からオクテット単位で割り当てられた番号である。シーケンス終了番号208は、パケット格納領域203に格納されているデータの末尾のシーケンス番号を示す。なお、本実施形態では1パケットに格納できるデータサイズの最大値が1460オクテットであり、図2(b)では、各ネットワークバッファに1460オクテットの送信データが格納された例が示されている。
図3は、通信装置10と外部の通信装置20との間で、通信接続から通信切断までにやりとりされるメッセージの例を示すシーケンス図である。なお、通信装置20は、IP通信が可能な他の通信装置であり、通信装置10と同様の構成を有していてもよい。また、本実施形態では、TCP(Transport Control Protocol)通信を説明に用いるが、チェックサムを使用する通信方式であれば、他の通信方式でも構わない。
M301(M302〜M304)において、通信装置10は、通信装置20とTCP通信接続を行う。なお、M301において、通信装置10と通信装置20の間で、1パケットに格納できるデータサイズの最大値も決定される。まず、M302において、通信装置10は、通信装置20にTCP接続要求(SYNパケット)を送信する。M303において、通信装置20は、通信装置10にTCP接続要求応答(SYN/ACKパケット)を送信する。M304において、通信装置10は、通信装置20に確認応答(ACKパケット)を送信する。
M305(M306〜M307)において、通信装置10と通信装置20はデータ通信を行う。通信装置10は、全ての送信データを送信し終えるまでM305の処理を繰り返し実施する。M306において、通信装置10は、通信装置20にデータ(DATAパケット)を送信する。M307において、通信装置20は、通信装置10にACKパケットを送信する。
M308(M309〜M311)において、通信装置10は、通信装置20とのTCP通信の切断を行う。M309において、通信装置10は、通信装置20にTCP切断要求(FINパケット)を送信する。M310において、通信装置20は、通信装置10にTCP切断要求応答(FIN/ACKパケット)を送信する。M311において、通信装置10は、通信装置20に確認応答(ACKパケット)を送信する。これにより、通信装置10と通信装置20との間のTCP通信が切断される。
図4は、第1実施形態に係る通信装置10が、外部の通信装置20にデータの再送を行う際のメッセージの例を示すシーケンス図である。本シーケンスは、図3のM305の処理内で再送を行う際のシーケンスである。
M401において、通信装置10は通信装置20にDATAパケット(DATA1)を送信し、通信装置20はこのDATAパケットを受信する。M402において、通信装置10は、通信装置20にDATAパケット(DATA2)を送信するが、通信装置20はこのDATAパケットを受信できなかったとする。M403において、通信装置10は、第2の通信装置20にDATAパケット(DATA3)を送信し、第2の通信装置20はこのDATAパケットを受信する。通信装置20は、M403で送信されたDATAパケット(DATA3)を受信することで、M402で送信されたDATAパケット(DATA2)を受信できていないことを判別する。
M404において、通信装置20は、通信装置10にM401で送信されたDATAパケット(DATA1)に対する確認応答のためのACKパケット(ACK1)を送信する。M405において、通信装置20は、通信装置10に、M402のDATAパケット(DATA2)を受信できていないことを通知するため、M404と同一のACKパケット(ACK1)を送信する。M406においても同様に、通信装置20はM404と同一のACKパケット(ACK1)を送信する。通信装置10は、通信装置20から同一のACKパケット(図4の例ではACK1)を3回以上受け取った場合、そのACKパケットが再送を要求するDATAパケットを再送する。
M407において、通信装置10は、M402で送信したDATAパケットと同一のDATAパケット(DATA2)を通信装置20に再送する。続いて、M408において、通信装置10は、M403で送信したDATAパケット(DATA3)を通信装置20へ再送する。これら再送を行ったDATAパケットについて対応するACKパケットが得られない場合には、DATAパケットの再送が再度実行される。こうして、ACKパケットにより受信が確認されたDATAパケットの後続のDATAパケット(図4では、DATA2以降)が再送される。
なお、図4に示したシーケンスは再送の一例であり、たとえば、図4ではDATAパケットの再送の要否を、同一のACKパケットの受信により判定したが、これに限られるものではない。たとえば、通信装置10がDATAパケットを送信後、外部の通信装置20から対応するACKパケットが一定時間内に返ってこないことをタイマ管理部105により判別した場合に、そのDATAパケットを再送するようにしてもよい。
図5は、第1実施形態に係る通信装置10がデータの送信、再送を実行する処理を示すフローチャートである。第1実施形態の通信装置10によれば、データの再送時にチェックサムを再利用することが可能であり、データ再送時のCPU104の処理負荷が低減される。なお、以下では、一つのネットワークバッファに着目した処理を説明するが、データ送信の際に送信されるデータサイズに応じた複数のネットワークバッファが使用されることは、当業者には明らかである。
ステップS501において、通信装置10のCPU104が実行するアプリケーションは、send()を呼び出し、データの送信を開始する。send()が呼び出されると、ネットワークドライバはステップS502において、RAM101のユーザバッファ領域109に格納されている送信データを、RAM102のネットワークバッファ200のパケット格納領域203にコピーする。なお、コピーする際のデータサイズはM301で決定した1パケットに格納できるデータサイズの最大値に基づく。なお、ダイレクトメモリアクセス(DMA)により、ユーザバッファ領域109に格納されているデータのネットワークバッファ200への書込みが行われてもよい。
ステップS503において、通信装置10のネットワークドライバは、ネットワークバッファ200のパケット格納領域203に格納された送信データのチェックサムを計算し、チェックサム格納領域202に格納する。こうして、ステップS502で計算されたチェックサムは、格納された送信データに関連付けて保持される。また、ネットワークドライバは、チェックサムを計算したデータ範囲を示す情報(送信データのシーケンス開始番号やデータ長など)を管理構造体201に格納する。ステップS504において、通信装置10のネットワークドライバは、TCPヘッダと擬似ヘッダのチェックサムを計算し、チェックサム格納領域202に格納されているチェックサムと併せてパケットのヘッダに記述するためのチェックサムを算出する。そして、ネットワークドライバは、算出されたチェックサムを用いてTCP/IPヘッダを生成し、パケット格納領域203に格納されている送信データをTCP/IPパケット化する。
ステップS505において、通信装置10のネットワークドライバは、Ethernet(登録商標)ヘッダを生成し、S504で生成されたTCP/IPパケットをEthernet(登録商標)フレーム化する。ネットワークドライバは生成されたEthernet(登録商標)フレームをMAC106に送信する。こうして、通信装置20にパケット(DATAパケット)が送信される。
ステップS506において、通信装置10のネットワークドライバは、送信したパケットに対応するACKパケットの受信の有無、受信したACKパケットの内容、あるいは、タイマ管理部105の管理情報などから、データの再送が必要か否かを判断する。データの再送が必要と判断された場合(ステップS506;YES)、処理はステップS508に進む。一方、データの再送が不要と判断された場合(ステップS506;NO)、処理はステップS507に進む。
ステップS508において、通信装置10のネットワークドライバは、再送が必要なデータをパケット格納領域203に格納しているネットワークバッファ200を特定する。そして、ネットワークドライバは、特定したネットワークバッファ200のチェックサム格納領域202に格納されているチェックサムを使用し、ステップS504と同様の手順でTCP/IPヘッダを生成して、TCP/IPパケット化する。こうして生成されたTCP/IPパケットがステップS505で送信されることにより、送信データのチェックサムを再計算することなくデータの再送が実行される。他方、再送が不要と判定された場合には、ステップS507において、通信装置10のネットワークドライバは、RAM102の、通信装置20による受信が確認されたネットワークバッファ領域110を解放する。
以上説明したように、通信装置10は、通信装置20へのデータの再送時に、ネットワークバッファ200のチェックサム格納領域202に格納してあるチェックサムを使用する。これによって、再送時のチェックサム計算に必要な処理時間が軽減され、通信時間を短縮した通信が可能となる。
なお、上記では、パケット単位での再送が指示されるが、これに限られるものではない。第2実施形態以降に示されるように、ACKパケットに再送すべきデータの先頭のシーケンス番号が指定されるようにしてもよい。この場合、通信装置10は、ステップS508において、再送が必要なデータ(の一部)を含むネットワークバッファを特定し、特定されたネットワークバッファのパケット格納領域203に格納されている送信データを再送する。
(第2実施形態)
第1実施形態におけるデータの再送時では、通信装置10は、再送対象のデータを含むネットワークバッファ200のパケット格納領域203に格納されている送信データを、チェックサム格納領域202に格納されているチェックサムを使用して再送した。第2実施形態では、ネットワークバッファ領域110に格納されている送信データから、ACKパケットにより示される再送が必要な送信データを取り出して、1パケットあたりの最大データサイズで分割し直して再送する。以下、第2実施形態の通信処理について説明する。
図6は、本実施形態に係わる第1の通信装置10のハードウェア構成例を示すブロック図である。図6において第1実施形態と同様の構成には同一の参照番号を付してある。データ転送部111は、RAM101のユーザバッファに格納されている送信データを、RAM102のネットワークバッファ200のパケット格納領域203にダイレクトメモリアクセス(DMA)によりコピーする機能を有する。また、データ転送部111は、送信データのコピー時に、転送されているデータを監視してチェックサムを計算する機能を持つ。第2実施形態において、データ転送部111が有するチェックサムの計算機能を第1のチェックサム計算機能とし、CPU104により実現されるネットワークドライバがチェックサムを計算する機能を第2のチェックサム計算機能とする。
図7は、第2実施形態に係る通信装置10が、データの送信、再送を実行する処理を示すフローチャートである。ステップS701は、ステップS501と同様であり、通信装置10のCPU104が実行するアプリケーションが、send()を呼び出し、データの送信を開始する。
send()が呼び出されると、データ転送部111はステップS702において、RAM101のユーザバッファに格納されているユーザデータを、RAM102のネットワークバッファ200のパケット格納領域203にコピーする。なお、コピーする際のデータサイズはM301で決定した1パケットに格納できるデータサイズの最大値に基づく。ステップS703において、データ転送部111は、ステップS702のデータコピー時にコピーされるデータのチェックサムを計算し(第一のチェックサム計算機能)、ネットワークバッファのチェックサム格納領域202に格納する。このとき、データ転送部111は、チェックサムを計算したデータ範囲を示す情報(シーケンス番号やデータ長など)をネットワークバッファの管理構造体201に格納する。
ステップS704からステップS706、ステップS711は、第1実施形態(図5)のステップS504からステップS506、ステップS507と同様である。
ステップS707において、ネットワークドライバは再送するデータを含むネットワークバッファを特定する。そして、ステップS708において、ネットワークドライバは、ステップS703で計算したチェックサムを再送するデータのパケット化に利用できるかどうかを判定する。ここで、ネットワークドライバは、ステップS707で特定されたネットワークバッファに格納されている送信データと再送するデータが一致しない場合に、チェックサムを利用できないと判定する。たとえば、ステップS708において、ネットワークドライバは、再送するデータの範囲が、ステップS703において管理構造体201に格納したチェックサムを計算したデータ範囲を示す情報とが合致するかどうかを判断する。合致すると判断された場合(ステップS708;YES)、処理はステップS709に進み、合致しないと判断された場合(ステップS708;NO)には、処理はステップS710に進む。ステップS709において、ネットワークドライバは、ステップS707で特定したネットワークバッファのパケット格納領域203に保持されている送信データとチェックサム格納領域202に保持されているチェックサムを用いてパケットを生成し、送信する。
ステップS710において、通信装置10のネットワークドライバは、S707で特定されたネットワークバッファ200のパケット格納領域203に格納しているデータから再送が必要なデータを取得する。ネットワークバッファは、再送が必要なデータ範囲のチェックサムを第2のチェックサム計算機能で計算し、TCPヘッダと擬似ヘッダのチェックサムを計算し、双方を併せ、TCP/IPヘッダを生成して、再送データをTCP/IPパケット化する。
以上、説明したように、通信装置10は、通信装置20へのデータの再送時に、ネットワークバッファ200のチェックサム格納領域202に格納されている、第1のチェックサム計算機能により計算されたチェックサムが使用可能であるかを判定する。この判定は、たとえば、管理構造体201に格納されている、チェックサムを計算したデータ範囲を示す情報に基づきなされる。使用可能と判定された場合、チェックサム格納領域202に格納しているチェックサムを使用してパケットが生成される。他方、使用不可能と判定された場合、第2のチェックサム計算機能でチェックサムを再計算してパケットが生成される。これによって、第1のチェックサム計算機能で計算したチェックサムを再送時に再利用することで、再送時のチェックサム計算に必要な処理時間が軽減され、通信時間を短縮した通信が可能となる。また、第2のチェックサム計算機能でチェックサムを再計算することで、再送時にチェックサム格納領域202に格納されている(第1のチェックサム計算機能で計算した)チェックサムが使用できない場合も、通信を継続させることが可能となる。
図8に、通信装置10が、通信装置20から再送要求を受けた際に、チェックサムを再利用できなくなったネットワークバッファの例を示す。図8(a)は、通信装置10が、データの送信時にネットワークバッファ領域110に確保したネットワークバッファ200であり、図2(b)と同様の状態である。なお、チェックサム206は、第一のチェックサム計算機能で計算されたチェックサムである。また、図8では、1パケットに格納できるデータサイズの最大値を1460オクテットとしている。
図8(b)には、通信装置10が、通信装置20からシーケンス番号2191からの再送要求を受けた際に、チェックサム格納領域202に格納している第1のチェックサム計算機能で計算したチェックサムが再利用できなくなることを示す。通信装置10が、通信装置20からシーケンス番号2191からの再送要求を受けた場合、シーケンス番号2191から、1パケットに格納できるデータサイズの最大値である1460オクテット分のデータを再送する。そのため、再送データ801、再送データ802のように、第1のチェックサム計算機能でチェックサムを計算したときのデータ範囲とは異なる範囲のデータがそれぞれパケット811,812として再送される。その結果、第1のチェックサム計算機能で計算したチェックサムは再利用できなくなる。第2実施形態のネットワークドライバは、このような場合に、第2のチェックサム計算機能により再送データ801,802のチェックサムを計算し(S701)、それぞれをパケット化し、送信することで、通信を継続させる。
(第3実施形態)
第2実施形態では、図8(b)に示したように、再送が必要なデータをパケットの最大データサイズで分割し直して、パケット化し、再送している。そのため、データの再送において、チェックサムの再計算が必要となる期間が続いてしまう。そこで、第3実施形態では、ネットワークバッファ200のパケット格納領域203に格納しているデータをチェックサム格納領域202に格納しているチェックサムを使用して、そのまま再送できるように、再送するデータ範囲を変更する。以下、第3実施形態について説明する。なお、第3実施形態の通信装置10の第3実施形態のハードウェア構成は、第2実施形態(図6)と同様である。
図9は、第3実施形態に係る通信装置10が、通信装置20から再送要求を受けた際に、極力チェックサムを再利用できるように送信データサイズを変更したネットワークバッファの例である。図9(a)に示されているネットワークバッファ領域110におけるネットワークバッファ200の格納状態は、図8(a)に示したものと同様である。
第3実施形態の通信装置10が、通信装置20からシーケンス番号2191からの再送要求を受けた場合、図9(b)に示されるように送信データサイズが変更される。第3実施形態では、ネットワークバッファ内のチェックサム格納領域202に格納されている第1のチェックサム計算機能で計算されたチェックサムを極力再利用することができるように送信データサイズが変更される。
通信装置10は、複数の送信データ(2パケット目〜4パケット目)にまたがる再送対象のデータを、それら送信データの分割位置(シーケンス番号2920と2921の間,4380と4381の間)で分割して再送データ901〜903を得る。そして、得られた再送データのうち、どの送信データとも一致しない再送データのチェックサムを第2の計算機能により計算する。換言すれば、再送対象のデータの先頭部分を含む再送データを、後続のデータがネットワークバッファへ書き込み済みとなっている送信データと同じサイズへ分割され得るように、再送対象のデータから分離する。たとえば、シーケンス番号2191からの再送要求を受けた場合、シーケンス番号2191〜2920のデータ範囲の再送データ901について、第2のチェックサム計算機能でチェックサムを再計算してパケット911を生成し、再送する。このように、データサイズを1パケットに格納できるデータサイズの最大値である1460オクテットではなく、次のネットワークバッファにおけるデータのシーケンス開始番号までのデータを再送データとする。その結果、再送データ902、903については、第1のチェックサム計算機能でチェックサムを計算したデータ範囲となる。そのため、チェックサム格納領域202に格納されている第1のチェックサム計算機能により計算したチェックサムを再利用して再送データ902、903をパケット912,913として再送することが可能となる。こうして、パケット911、912、913が送信される。
図10は、第3実施形態に係る通信装置10が、データを再送する際にチェックサムを再利用する手順を示すフローチャートである。ステップS1001からステップS1009,ステップS1011は、ステップS701からステップS710と同様である。
ステップS1011において、通信装置10のネットワークドライバは、通信装置20から再送要求を受けたシーケンス番号を含むネットワークバッファ200を特定する。そして、再送要求を受けたシーケンス番号から当該ネットワークバッファが保持するシーケンス最終番号までが収まるサイズを1パケットで送信するデータサイズとし、チェックサムを第2のチェックサム計算機能で計算する。そして、TCPヘッダと擬似ヘッダのチェックサムを計算し、双方を併せ、TCP/IPヘッダを生成して、TCP/IPパケット化する。本ステップは、図9(b)の再送データ901のパケット911の生成に該当する。その後、図9(b)の再送データ902、再送データ903については、ステップS1009においてパケット912、913が生成され、再送される。
以上、説明したように、第3実施形態の通信装置10は、通信装置20へのデータの再送時に、ネットワークバッファ200のチェックサム格納領域202に格納されているチェックサムが再利用できるように、データサイズを調整してパケットを生成する。これによって、再送時に第2のチェックサム計算機能でチェックサムを再計算する処理時間を軽減し、通信時間を短縮した通信が可能となる。
なお、第3実施形態では、再送時の先頭のパケットに格納される再送データが、対応する送信データのデータサイズと異なる場合に、必ず第2のチェックサム計算機機能によりチェックサムの再計算を行うようにしたが、これに限られるものではない。たとえば、再送データのサイズが所定値より大きい場合には、第1実施形態のように対応する送信データの全体を送信するようにしてもよい。再送データのデータサイズが大きい場合には再送データと送信データのサイズの差が小さく、チェックサムの再計算を省略するメリットを生かすことができるからである。また、再送データのサイズが所定値以下の場合には上述のように第2のチェックサム計算機能によりチェックサムを再計算し、再送データを送信することで、不必要なデータの再送によるデメリットを防止できる。
(第4実施形態)
通信装置10は、通信装置20からのデータサイズの変更要求時に、図11により後述するようにチェックサム格納領域202に格納しているチェックサムを使用できなくなる場合がある。第4実施形態では、ネットワークバッファ200のパケット格納領域203に格納されているデータをチェックサム格納領域202に格納されているチェックサムを使用して再送できるように、再送するデータ範囲を変更する。以下、第4実施形態について説明する。なお、通信装置10の構成は、第2実施形態(図6)と同様である。
図11は、第4実施形態に係る通信装置10が、外部の通信装置20からデータサイズの変更要求を受けた際に、チェックサムを再利用できなくなる様子を説明する図である。なお、図11では、通信装置20からデータサイズの変更要求を受け、1パケットに格納できるデータサイズの最大値が1460オクテットから1020オクテットに変更されたものとする。なお、このデータサイズの変更要求は、シーケンス番号2921以降(3パケット目以降)のデータに対する要求である。
図11(a)に示されているネットワークバッファ領域110におけるネットワークバッファ200の格納状態は、図8(a)に示したものと同様である。ただし、データサイズの変更要求に応じて、データ転送部111が1020オクテットを単位として、送信データをネットワークバッファ200aに格納している。通信装置20が通信装置10からの3パケット目のデータを受信できず、データサイズの変更が必要と判断すると、通信装置10はデータサイズの変更を通信装置10に対して要求する(詳細は図13により後述する)。したがって、通信装置10は、3パケット目からの送信データについてデータサイズを変更してパケット化し、送信するする必要がある。すなわち、通信装置10は、シーケンス番号2921(3パケット目のシーケンス開始番号)以降のデータを新たなデータサイズで送信する必要がある。
図11(b)には、ネットワークバッファ領域110において、再送の対象となるデータが新たなデータサイズで分割され、データ1101,1102がパケット1111,1112として生成され、再送される。このように、第1のチェックサム計算機能でチェックサムを計算したデータ範囲とは異なる範囲のデータが1パケットとして再送されるため、第1のチェックサム計算機能で計算されたチェックサムは再利用できない。このような場合に、第2実施形態では、第2のチェックサム計算機能により、データ1101,1102のチェックサムの再計算を実行し、パケット化して送信する。そのため、データの再送において、チェックサムの再計算が必要となる期間が続いてしまう。
図12は、第4実施形態に係る通信装置10が、外部の通信装置20からデータサイズの変更要求を受けた際に、第1のチェックサム計算機能で計算されたチェックサムを極力再利用できるように送信データサイズを変更する例を説明する図である。図12(a)のネットワークバッファ領域110の状態は、図11(a)のネットワークバッファ領域110の状態と同様である。
図12(b)のネットワークバッファ領域110は、第4実施形態に係る通信装置10が、通信装置20からデータサイズの変更要求を受けた際に、送信データサイズを変更した様子を示している。送信データサイズの変更は、チェックサム格納領域202に格納されている第1のチェックサム計算機能で計算されたチェックサムを極力再利用できるようになされる。たとえば、図11と同様に、通信装置10が、通信装置20から3パケット目以降のデータの送信に関してデータサイズの変更要求(1460オクテットから1020オクテットへの変更)を受けたとする。このとき、既にシーケンス番号2921〜4380(3パケット目)についてはデータ転送部111が1460オクテットを単位としたネットワークバッファへのデータ転送を終えている。このような場合、第4実施形態では、シーケンス番号2921〜4380のデータサイズ変更前の1パケット分のデータを、変更後のデータサイズ以下に分割してデータ送信を行う。図12の場合は、1020オクテットのパケットと、残りのデータ(440オクテット)のパケットに分けてデータ送信を行う。
したがって、第4実施形態の通信装置10は、まず、新たなデータサイズの最大値である1020オクテットの再送データ1201(シーケンス番号2921〜3940)について第2のチェックサム計算機能でチェックサムを再計算してパケット化し、再送する。その後、残りのデータであるシーケンス番号3941〜4380の再送データ1202について、第2のチェックサム計算機能でチェックサムを再計算してパケット化し、再送する。その結果、シーケンス番号4381以降のデータ(図12(a)の4パケット目以降)については、再送データ1203のように、第1のチェックサム計算機能でチェックサムを計算したデータ範囲を再送できるようになる。そのため、チェックサム格納領域202に格納している第1のチェックサム計算機能で計算したチェックサムを再利用して再送することが可能となる。こうして、データの再送のために、パケット1211,1212,1213が生成され、送信される。
図13は、第4実施形態に係る通信装置10が、通信装置20からデータサイズの変更要求を受けた際のメッセージの例を示すシーケンス図である。本シーケンスは、図3のM305内(データパケットの送信ループ内)でデータサイズの変更を行う際のシーケンスである。
M1301において、通信装置10は、通信装置20にDATAパケットを送信するが、通信装置20はDATAパケットを受信できず、通信装置10の送信データサイズの変更が必要と判断する。M1302において、通信装置20は、通信装置10に送信抑制要求メッセージを送信する。本メッセージにおいて、通信装置20はデータサイズの変更を要求する。M1302の例としては、ICMP(Internet Control Message Protocol)のSource Quench Messageなどがあげられる。M1303において、通信装置10は、通信装置20にM1302で指定されたシーケンス番号からDATAパケットを再送するにあたり、DATAパケットのデータサイズをM1302で指定されたデータサイズに変更する。
図14は、第4実施形態に係る通信装置10が、データを再送する際にチェックサムを再利用する手順を示すフローチャートである。ステップS1401からステップS1410は、ステップS701からステップS709、ステップS710と同様である。
ステップS1411において、通信装置10のネットワークドライバは、通信装置20から再送するデータのシーケンス番号を含むネットワークバッファ200を特定する。そして、特定されたネットワークバッファ200のうちの再送が必要な部分のデータサイズが、変更後の1パケットで送信できるデータサイズであると判断した場合(ステップS1411;YES)、ステップ1412に進む。一方、このネットワークバッファ200のうちの再送が必要な部分のデータサイズが、変更後の1パケットで送信できないデータサイズであると判断した場合(ステップS1411;NO)、ステップS1413に進む。
ステップS1412において、通信装置10のネットワークドライバは、再送が必要なデータの開始シーケンス番号から当該ネットワークバッファが保持するシーケンス最終番号までが収まるデータサイズを1パケットで送信するデータサイズとする。そして、チェックサムを第2のチェックサム計算機能で計算し、TCPヘッダと擬似ヘッダのチェックサムを計算し、双方を併せ、TCP/IPヘッダを生成して、TCP/IPパケット化する。このステップS1412は、図12の再送データ1202を用いたパケット1212の生成に該当する。
他方、ステップ1413において、通信装置10のネットワークドライバは、再送が必要なデータの開始シーケンス番号から、1パケットで送信可能なデータサイズの最大値(本例では、1020オクテット)をデータサイズとする。そして、チェックサムを第2のチェックサム計算機能で計算し、TCPヘッダと擬似ヘッダのチェックサムを計算し、双方を併せ、TCP/IPヘッダを生成して、TCP/IPパケット化する。このステップS1413は、図12の再送データ1201を用いたパケット1211の生成に該当する。その後、図12のパケット701はそのまま1パケットとして送信できるので、ステップS1409でパケット1213が生成される。
以上、説明したように、第4実施形態の通信装置10は、データサイズの変更要求を受けた場合に、ネットワークバッファ200のチェックサム格納領域202に格納しているチェックサムを再利用できるように、データサイズを調整してパケットを生成する。このため、パケットのデータサイズ変更に起因したデータの再送時に第2のチェックサム計算機能でチェックサムを再計算する処理時間を軽減し、通信時間を短縮した通信が可能となる。
以上のように、上記各実施形態によれば、データの送信時に計算したチェックサムを保持することで、データの再送時にチェックサムを再利用することができるため、再送時のチェックサム演算の処理負荷を軽減することができる。その結果、送信の効率を向上させることが可能となる。
(その他の実施形態)
なお、本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
10、20:通信装置、101,102:RAM、103:ROM、104:CPU、105:タイマ管理部、106:MAC、107:PHY、108:Ethernet(登録商標)、200:ネットワークバッファ、201:管理構造体、202:チェックサム格納領域、203:パケット格納領域、206:チェックサム、207:シーケンス開始番号、208:シーケンス終了番号

Claims (11)

  1. 送信データのチェックサムを計算する第1の計算手段と、
    前記第1の計算手段により計算されたチェックサムを、前記送信データに関連付けて保持する保持手段と、
    前記第1の計算手段により計算されたチェックサムを用いて、前記送信データのパケットを生成する第1の生成手段と、
    前記第1の生成手段により生成された前記パケットを送信する送信手段と、
    前記送信データを再送する場合に、前記送信データに関連付けて保持されているチェックサムを用いたパケットを送信する再送手段と、
    を有することを特徴とする通信装置。
  2. 一つのパケットに格納される送信データをパケットごとに用意されたバッファへ書き込む書込手段を更に有し、
    前記第1の計算手段は、前記バッファへ書き込まれた前記送信データのチェックサムを計算することを特徴とする請求項1に記載の通信装置。
  3. 前記バッファは第1の格納領域と第2の格納領域を有し、
    前記書込手段は、前記送信データを前記第1の格納領域へ書き込み、
    前記保持手段は、前記送信データのチェックサムを前記第2の格納領域に書き込むことを特徴とする請求項2に記載の通信装置。
  4. 前記送信データを再送する場合に、前記送信データに関連付けて保持されているチェックサムを用いてパケットを生成する第2の生成手段を更に有し、
    前記再送手段は、前記第2の生成手段により生成されたパケットを送信することを特徴とする請求項1から3のいずれか1項に記載の通信装置。
  5. 複数の送信データから、再送の対象となるデータを含む再送データを特定する特定手段を更に有し、
    前記再送手段は、前記特定手段により特定された再送データを送信することを特徴とする請求項1から4のいずれか1項に記載の通信装置。
  6. 前記特定手段により特定された再送データを、前記再送手段が送信するパケットのサイズに応じたサイズに分割する分割手段を更に有することを特徴とする請求項5に記載の通信装置。
  7. 前記再送手段がパケットを送信する場合に、前記第1の計算手段により計算されたチェックサムを用いることができるか否かを判定する判定手段を更に有し、
    前記判定手段により前記第1の計算手段により計算されたチェックサムを用いることができると判定された場合、前記再送手段は前記送信データに関連付けて保持されているチェックサムを用いたパケットを送信することを特徴とする請求項1から6のいずれか1項に記載の通信装置。
  8. 前記判定手段により前記第1の計算手段により計算されたチェックサムを用いることができないと判定された場合、前記再送手段がパケットを送信する際に、前記再送手段が再送するデータのチェックサムを計算する第2の計算手段を更に有することを特徴とする請求項7に記載の通信装置。
  9. 前記再送手段が再送するデータの範囲と、前記送信手段が送信したパケットに含まれるデータの範囲とが一致する場合、前記判定手段は、前記第1の計算手段により計算されたチェックサムを用いることができると判定することを特徴とする請求項7または8に記載の通信装置。
  10. 通信装置の制御方法であって、
    送信データのチェックサムを計算する第1の計算工程と、
    前記第1の計算工程で計算されたチェックサムを、前記送信データに関連付けて記憶手段に保持する保持工程と、
    前記第1の計算工程で計算されたチェックサムを用いて、前記送信データのパケットを生成する第1の生成工程と、
    前記第1の生成工程で生成された前記パケットを送信する送信工程と、
    前記送信データを再送する場合に、前記送信データに関連付けて前記記憶手段に保持されているチェックサムを用いたパケットを送信する再送工程と、
    を有することを特徴とする通信装置の制御方法。
  11. コンピュータを、請求項1から9のいずれか1項に記載された通信装置の各手段として機能させるためのプログラム。
JP2015237970A 2015-12-04 2015-12-04 通信装置およびその制御方法、プログラム Active JP6675189B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015237970A JP6675189B2 (ja) 2015-12-04 2015-12-04 通信装置およびその制御方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015237970A JP6675189B2 (ja) 2015-12-04 2015-12-04 通信装置およびその制御方法、プログラム

Publications (2)

Publication Number Publication Date
JP2017103734A true JP2017103734A (ja) 2017-06-08
JP6675189B2 JP6675189B2 (ja) 2020-04-01

Family

ID=59017069

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015237970A Active JP6675189B2 (ja) 2015-12-04 2015-12-04 通信装置およびその制御方法、プログラム

Country Status (1)

Country Link
JP (1) JP6675189B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019106063A (ja) * 2017-12-13 2019-06-27 キヤノン株式会社 Dma転送装置、dma転送装置の制御方法、および通信装置
US11336297B2 (en) 2017-12-13 2022-05-17 Canon Kabushiki Kaisha DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019106063A (ja) * 2017-12-13 2019-06-27 キヤノン株式会社 Dma転送装置、dma転送装置の制御方法、および通信装置
US11336297B2 (en) 2017-12-13 2022-05-17 Canon Kabushiki Kaisha DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
JP7145607B2 (ja) 2017-12-13 2022-10-03 キヤノン株式会社 Dma転送装置、dma転送装置の制御方法、および通信装置

Also Published As

Publication number Publication date
JP6675189B2 (ja) 2020-04-01

Similar Documents

Publication Publication Date Title
JP6476197B2 (ja) 輻輳制御ビットレート・アルゴリズム
US20210011785A1 (en) Methods and apparatus for correcting out-of-order data transactions between processors
US7991918B2 (en) Transmitting commands and information between a TCP/IP stack and an offload unit
US10341469B2 (en) Data transmission method and apparatus and data receiving method and apparatus
JP2010011296A (ja) 送受信回路、送信回路及び送受信方法
WO2015062021A1 (zh) 发送节点及其缓存状态上报方法
US10708816B2 (en) Communication apparatus, communication method, and non-transitory computer-readable storage medium for performing packetization processing that does not depend on a network interface
JP6487562B2 (ja) オンデマンドファイル修復のための方法及びシステム
JP6675189B2 (ja) 通信装置およびその制御方法、プログラム
US20170034067A1 (en) Efficient Datagram Segmentation and Reassembly for Packet-Switched Networks
JP6064593B2 (ja) プログラム、情報処理装置、及び通信方法
EP3057256A1 (en) Method for processing stream media message, wifi chip and mobile terminal
US11336297B2 (en) DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
US9294409B2 (en) Reducing round-trip times for TCP communications
US20230138713A1 (en) Multi-stride packet payload mapping for robust transmission of data
WO2015006908A1 (zh) 突发数据块中的空闲块idle的处理方法、设备及系统
JP2019114947A (ja) 通信装置、通信装置の制御方法およびプログラム
JP2017204738A (ja) データ送信装置、データ受信装置、データ送受信方法、及び情報処理装置
WO2019159893A1 (ja) データ配信装置、システム、方法および記録媒体
JP2019165423A (ja) 通信装置、通信装置の制御方法およびプログラム
US11496612B1 (en) Scrambled packet payload mapping for robust transmission of data
JP2008099139A (ja) 通信方法
JP6891201B2 (ja) 通信装置、通信装置の制御方法およびプログラム
WO2015051736A1 (zh) 一种网络节点的报文传输的容错方法及网络节点
JP6111545B2 (ja) 受信装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181031

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190918

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: 20200210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200310

R151 Written notification of patent or utility model registration

Ref document number: 6675189

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151