[go: up one dir, main page]

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

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

Info

Publication number
JP2017011580A
JP2017011580A JP2015126871A JP2015126871A JP2017011580A JP 2017011580 A JP2017011580 A JP 2017011580A JP 2015126871 A JP2015126871 A JP 2015126871A JP 2015126871 A JP2015126871 A JP 2015126871A JP 2017011580 A JP2017011580 A JP 2017011580A
Authority
JP
Japan
Prior art keywords
data
transmission
buffer
data buffer
communication
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.)
Pending
Application number
JP2015126871A
Other languages
English (en)
Inventor
暁央 木下
Akihisa Kinoshita
暁央 木下
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 JP2015126871A priority Critical patent/JP2017011580A/ja
Priority to US15/189,602 priority patent/US10372667B2/en
Publication of JP2017011580A publication Critical patent/JP2017011580A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/1735Network adapters, e.g. SCI, Myrinet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)

Abstract

【課題】高速なデータバッファを効率よく利用可能にして、安定した高速通信を実現する。
【解決手段】第1のデータバッファと、第1のデータバッファよりも高速なアクセスが可能な第2のデータバッファと、を有する通信装置は、送信対象のデータを第2のデータバッファへ転送し、第2のデータバッファに転送された送信対象のデータを用いて送信用データを生成して通信相手装置へ送信し、送信用データが生成または送信された後、通信相手装置からの特定の応答を待たずに第2のデータバッファを解放する。通信装置は、第2のデータバッファが解放された後も送信対象のデータの再送を可能にするために、送信対象のデータまたは送信用データを第1のデータバッファに保持する。
【選択図】図1

Description

本発明は、通信装置およびその制御方法、プログラムに関する。
従来、パケット通信において、通信の信頼性を保障するため、セグメントを受け取った際にACKと呼ばれる肯定応答を用いる通信方式がある。例えば、インターネット通信において広く利用されているTCP/IPでは、セグメントをオクテット単位にシーケンス番号で管理し、受け取ったセグメントのシーケンス番号をACKパケットとして応答する必要がある。なお、TCP/IPとは、Transmission Control Protocol/Internet Protocolである。
TCP/IPのプロトコル処理では、通信データのパケット化や再送処理のために、ネットワークバッファが用意されている。TCP/IPパケットの送信において、ソケットAPIsend()によって指定されたユーザデータがネットワークバッファに転送され、MTU(maximum transmission unit:最大伝送単位)に分割される。そして、分割されたデータと擬似ヘッダのチェックサムが計算され、TCPヘッダとIPヘッダが追加されたTCP/IPパケットが生成される。伝送経路がイーサネット(登録商標)の場合、さらに、イーサネットヘッダが付加されたイーサネットフレームが生成され送信される。
ユーザバッファからネットワークバッファへのデータ転送や、チェックサムの計算において広範囲なメモリアクセスが行われるため、メモリアクセスが遅いとTCP/IPパケットを高速に生成することができない。TCP/IP通信を高速にするため、ユーザバッファからネットワークバッファへデータ転送する際は、CPU転送ではなくDMA転送の利用や、ネットワークバッファとしてDRAMの代わりにより高速アクセスが可能なSRAMの利用が考えられる(特許文献1)。
特開2012−182551号公報
しかしながら、高速アクセス可能なSRAMは、コストやチップ面積などの制限からメモリサイズを大きくすることができず、そのため充分なネットワークバッファとしてのデータバッファをSRAMに割り当てることができない。特許文献1では、ネットワークバッファをDRAMとSRAMに分割して割り当て、特定のソケットに対してSRAMに割り当てたネットワークバッファを利用することで、特定のソケットによる送信処理を高速化している。
しかし、TCP通信の送信では、プロトコルにおいて、所定時間内に肯定応答を受信できなかった場合に再送が必要なため、肯定応答を受信するまで送信済みパケットデータを解放することができない。肯定応答を受信できない間は、SRAMのネットワークバッファを解放できず、空き領域が逼迫してしまう。SRAMのネットワークバッファが空いていない場合、新たな送信ではSRAMが利用できず、DRAMを利用することになるため、高速通信の劣化が発生する課題がある。
本発明は上記の課題に鑑みてなされたものであり、高速なデータバッファを効率よく利用可能にして、安定した高速通信を実現することを目的とする。
上記の目的を達成するための本発明の一態様による通信装置は以下の構成を備える。すなわち、
第1のデータバッファと、前記第1のデータバッファよりも高速なアクセスが可能な第2のデータバッファとを有する通信装置であって、
送信対象のデータを前記第2のデータバッファへ転送する第1の転送手段と、
前記第2のデータバッファに転送された前記送信対象のデータを用いて送信用データを生成して通信相手装置へ送信する送信手段と、
前記送信手段により前記送信用データが生成または送信された後、前記通信相手装置からの特定の応答を待たずに前記第2のデータバッファを解放する解放手段と、
前記送信対象のデータの再送を可能にするために、前記送信対象のデータまたは前記送信用データを前記第1のデータバッファに保持させる保持手段と、を備える。
本発明によれば、高速なデータバッファを効率よく利用することが可能になり、安定した高速通信を実現できる。
第1実施形態に係る通信装置の構成を示すブロック図。 第1実施形態によるユーザデータの転送処理を説明する図。 第1実施形態による通信処理を示すフローチャート。 第2実施形態による通信処理におけるデータの転送を説明する図。 第2実施形態による通信処理を示すフローチャート。 第3実施形態による通信処理を示すフローチャート。 第4実施形態による通信処理を示すフローチャート。
以下、添付の図面を参照して、本発明の好適な実施形態のいくつかについて説明する。
<第1実施形態>
単一または複数のアプリケーションが、複数コネクションの通信時に、高速アクセスが可能なSRAMなどの高速メモリに割り当てられたネットワークバッファ(以下、高速バッファ)を使用できなくなることがある。その原因の一つは、肯定応答を必要とする通信では、通信相手装置から肯定応答が受信するまで送信に使用した高速バッファを解放できないことにある。
そこで、第1実施形態の通信装置では、送信対象のデータをネットワークバッファへDMA転送する際、高速バッファと、DRAMなどの通常メモリに割り当てたネットワークバッファ(以下、通常バッファ)の2か所に送信対象のデータを転送する。そして、通信相手装置へのデータの送信と同時に高速バッファを解放し、通常バッファを通信相手装置から肯定応答を受信するまでデータの再送のために確保することで、高速通信が必要なコネクションによる高速バッファの効率的な使用を可能にする。
図1は、第1実施形態の通信装置100の構成例を示すブロック図である。図1において、CPU102は、メインメモリであるDRAM101をワークメモリとして、ROM103やハードディスク(不図示)などの、プログラム格納部としての記録媒体に格納された各種プログラムを実行する。CPU102が実行するプログラムにはネットワークドライバが含まれる。CPU102は、ネットワークドライバの実行により、後述する送信対象のデータをパケット化するデータ処理や肯定応答の受信処理などを含むプロトコル処理の機能を実現する。
メディアアクセス制御モジュール(MAC107)と物理レイヤモジュール(PHY108)は、イーサネット(登録商標)109などのネットワークを介した通信を行う通信部110である。CPU102は、ネットワークドライバを実行し、MAC107を制御してデータの送受信を行う。なお、本構成では、イーサネット(登録商標)での構成を示しているが無線LAN(Wi−Fi)など、IP通信が可能であれば何でも構わない。
以上の構成は通常の通信装置と同様であるが、本実施形態の通信装置100は、さらに、通常メモリであるDRAM101のほかに、通常メモリよりも高速なアクセスが可能な高速メモリとしてSRAM105を有する。DRAM101は通常バッファとしての第1のデータバッファを提供し、SRAM105は高速バッファとしての第2のデータバッファを提供する。また、通信装置100は、高速メモリ転送機能111および通常メモリ転送機能112を含むデータ転送部106を有する。高速メモリ転送機能111は、DMAC(Direct Memory Access Controller)により高速メモリ(SRAM105)へのデータ転送を行う。通常メモリ転送機能112は、DMACにより通常メモリ(DRAM101)へのデータ転送を行う。通信装置100は、さらに、プロトコルにおいて用いられる各種タイマを管理するタイマ管理部104を備える。
又、本発明において用いられるパケットは、インターネット上で送受信されるデータの単位である。本発明では発明の本質ではないので、このパケットの組み立て方法については、省略してある。
図3のフローチャートにより第1実施形態のソケットAPI send()によるデータ送信を説明する。最初にステップS301において、CPU102が実行するアプリケーション(以下、単にアプリケーションという)は、send()を呼び出す。send()が呼び出されると、ステップS302において、CPU102が実行するネットワークドライバはデータ転送部106を用いて送信対象のデータであるユーザデータを高速バッファと通常バッファの2か所へ転送する。ここで、高速メモリ転送機能111がDMAによりユーザデータを高速バッファへ、通常メモリ転送機能112がDMAによりユーザデータを低速バッファへ転送する。
図2は、第1実施形態によるユーザデータの転送を説明する図である。図2において、データ転送部106は、DRAM101内にあるユーザデータ1をSRAM105内にある高速バッファ1とDRAM101内にある通常バッファ1の2か所へ転送する。高速バッファ1に転送されたユーザデータ1は高速にパケットを生成するために使用される。他方、送信対象であるユーザデータ1の再送を可能にするために、ユーザデータ1が通常バッファに保持させている。これにより、高速バッファ1に転送されたユーザデータ1を用いて送信用データであるパケットが生成または送信された後は、ネットワークドライバは通信相手装置からの特定の応答(本実施形態では肯定応答)を待たずに高速バッファ1を解放することができる。
ステップS303およびS304において、ネットワークドライバは、高速バッファに転送されたユーザデータを用いて送信用データであるパケットを生成し、通信相手装置へ送信する。まず、ステップS303において、ネットワークドライバは、高速バッファに転送されたユーザデータを用いてチェックサムを計算してTCP/IPヘッダを生成し、高速バッファのユーザデータをTCP/IPパケット化する。さらに、ステップS304において、ネットワークドライバは、イーサネットヘッダを生成し、TCP/IPパケットをイーサネットフレーム化し、イーサネットフレームをMAC107に送信する。イーサネットフレーム化されたTCP/IPパケットが送信済みになると、ステップS305において、ネットワークドライバはそのユーザデータを保持していた高速バッファを解放する。たとえば、図2では、CPU102により実現されるネットワークドライバは、SRAM105内の高速バッファ1に転送されたユーザデータ1にTCP/IP処理を適用し、ネットワークI/Fとしての通信部110に転送する(ステップS303〜S304)。その後、ネットワークドライバは、SRAM105内の高速バッファ1を解放する(ステップS305)。なお、高速バッファの解放のタイミングは、送信用データであるパケットが生成された時点であってもよい。
次に、ネットワークドライバは、肯定応答を受信したか否か、通信相手とのコネクションが切断したか否か、パケットの再送のタイミングか否かを判定する。すなわち、ステップS306において肯定応答を受信したと判定された場合、またはステップS307においてコネクションが切断したと判定された場合、処理はステップS309へ進む。他方、肯定応答を受信しなかった場合、及び通信相手とのコネクションが切断していなかった場合、処理はステップS308へ進む。ステップS308において、ネットワークドライバは、タイマ管理部104が管理する再送タイマがタイムアウトしたか否か(データの再送タイミングか否か)を判定する。再送タイマがタイムアウトしていなければ処理はステップS306に戻り、再送タイマがタイムアウトしていれば処理はステップS310へ進む。
ステップS310において、ネットワークドライバは、ステップS302においてデータ転送部106が通常バッファに転送したユーザデータをTCP/IPパケット化する。そして、ステップS311において、ネットワークドライバはイーサネットヘッダを生成し、TCP/IPパケットをイーサネット(登録商標)フレーム化し、イーサネットフレームをMAC107に送信する。その後、処理はステップS306へ戻る。他方、ステップS306またはステップS307から処理がステップS309に進んだ場合は、TCP/IPパケットが送信済みとなったことが確認されている。したがって、ステップS311において、ネットワークドライバはステップS302においてデータ転送部106がユーザデータの転送先に使用した通常バッファを解放する。
図2において、CPU102は、DRAM101内の通常バッファ1に保持されているユーザデータを再送用のデータとして利用する。すなわち、CPU102は、通常バッファ1に保持されているユーザデータにTCP/IP処理を適用してTCP/IPパケット化、イーサネットパケット化し、通信部110に転送する。その後、ネットワークドライバは、DRAM101内の通常バッファ1を解放する。
以上のように、第1実施形態の通信装置100によれば、肯定応答を必要とする通信において、送信対象のデータを高速バッファと通常バッファに保持させる。そして、通信装置100はまず高速バッファを用いてユーザデータをパケット化して送信し、対応する肯定応答を待たずに、高速バッファを解放する。一方、通信装置100は、通常バッファに保持されたユーザデータについては、通信相手から肯定応答を受信するまで再送のために保持状態を維持する。以上のように制御することにより、高速通信を必要とするコネクションによる高速バッファを効率的に使用することができる。
具体的には、第1実施形態によれば、送信対象のデータをSRAMとDRAMに配置しているネットワークバッファの2か所へDMA転送することで、SRAMに確保したネットワークバッファを送信と同時に解放ができる。そのため、新たな送信対象のデータをSRAMに配置していているネットワークバッファが利用できる。その結果、メモリサイズが充分に大きくないSRAMのネットワークバッファを効率良く利用した高速な通信が可能になる。
<第2実施形態>
次に第2実施形態の通信処理を説明する。第1実施形態では、送信対象のデータであるユーザデータを高速バッファと低速バッファの両方に転送し、高速バッファを用いてユーザデータを送信して高速バッファを解放し、再送のために低速バッファに保持されたユーザデータを用いるようにした。第2実施形態の通信装置は、送信対象となるユーザデータを高速バッファへ転送し、高速バッファを用いて生成したパケットを通信部110から送信するとともに低速バッファに保持させる。こうして、第2実施形態の通信装置は、パケットの送信とともに高速バッファを解放することを可能とする。なお、第2実施形態の通信装置の構成は第1実施形態(図1)と同様である。
図4は、第2実施形態によるユーザデータの転送を説明する図である。また、図5は、第2実施形態の通信装置100による通信処理を説明するフローチャートである。以下、図4、図5を参照して、第2実施形態のソケットAPI send()によるデータ送信について説明する。
まず、ステップS501において、CPU102が実行するアプリケーションは、send()を呼び出す。send()が呼び出されると、CPU102が実行するネットワークドライバは、ステップS502で、ユーザデータを高速バッファへ転送する。このステップにおけるデータの転送には、データ転送部106(高速メモリ転送機能111)によるデータ転送、CPU102によるデータ転送のいずれが用いられてもよい。図4で説明すると、データ転送部106(或いはCPU102)は、DRAM101内にあるユーザデータ1をSRAM105内にある高速バッファ1へ転送する。
ステップS503において、ネットワークドライバは、高速バッファに保持されたユーザデータのチェックサムを計算してTCP/IPヘッダを生成し、高速バッファ上でユーザデータをTCP/IPパケット化する。さらに、ステップS504において、ネットワークドライバは、イーサネットヘッダを生成し、高速バッファ上でTCP/IPパケットをイーサネットフレーム化する。ステップS505において、ネットワークドライバは、データ転送部106(通常メモリ転送機能112)を用いて、高速バッファにあるイーサネットフレーム化されたTCP/IPパケットを、MAC107とDRAM101内の通常バッファの2か所へ転送する。ステップS506において、ネットワークドライバは、TCP/IPパケットが送信済みのため、対応するユーザデータを保持していた高速バッファを解放する。
以上の処理を図4により説明する。ネットワークドライバは、SRAM105内の高速バッファ1が保持しているユーザデータにTCP/IP処理やイーサネットフレーム化処理を適用してパケットを生成する(ステップS503、S504)。データ転送部106は、生成されたパケットをネットワークI/Fとしての通信部110と、DRAM101内にある通常バッファ1の2箇所へデータ転送する(ステップS505)。その後、ネットワークドライバは、SRAM105内にある高速バッファ1を解放する(ステップS506)。
次に、ネットワークドライバは、肯定応答を受信したか否か、通信相手とのコネクションが切断したか否か、パケットの再送のタイミングか否かを判定する。すなわち、ステップS507において肯定応答を受信したと判定された場合、またはステップS508においてコネクションが切断したと判定された場合、処理はステップS510へ進む。他方、肯定応答を受信しなかった場合、及び通信相手とのコネクションが切断していなかった場合、処理はステップS509へ進む。ステップS509において、ネットワークドライバは、タイマ管理部104が管理する再送タイマがタイムアウトしたか否か(データの再送タイミングか否か)を判定する。再送タイマがタイムアウトしていなければ処理はステップS507に戻り、再送タイマがタイムアウトしていれば処理はステップS511へ進む。
ステップS511において、ネットワークドライバは、ステップS505においてデータ転送部106がDRAM101内の通常バッファに転送したTCP/IPパケットを送信用データとして取得し、MAC107に送信することにより、パケットを再送する。再送の実行後、処理はステップS507へ戻る。ステップS510では、データの送信が完了したことが確認されているため、ステップS505においてデータ転送部106がTCP/IPパケットのデータ転送先に使用したDRAM101内の通常バッファを解放する。
図4においては、DRAM101内の通常バッファ1が再送時のデータのために利用されている。肯定応答を受信する前に再送タイマがタイムアウトすると、CPU102(ネットワークドライバ)は、通常バッファ1に保持されているパケット(本実施形態ではイーサネットフレーム)をネットワークI/Fとしての通信部110に転送する。その後、肯定応答が確認されると、CPU102は、DRAM101内にある通常バッファ1を解放する(ステップS510)。
以上のように、第2実施形態によれば、肯定応答の確認を必要とする通信プロトコルにおいて、通信相手への送信と同時に高速バッファが解放され、通信相手から肯定応答を受信するまで再送のために通常バッファにデータが確保される。したがって、高速通信を必要とするコネクションによる高速バッファを効率的に使用することができる。
<第3実施形態>
次に、第3実施形態の通信処理を説明する。第3実施形態では、高速バッファと通常バッファを併用した通信を行うか、高速バッファを用いずに通常バッファを用いた通信を行うかを自動的に判定して通信処理を切り換える構成について説明する。なお、第3実施形態の通信装置は、第1実施形態および第2実施形態と同様の構成(図1)を備えている。
図6は第3実施形態の通信装置100による通信処理を示すフローチャートである。以下、図6を参照して第3実施形態の通信装置のソケットAPI send()によるデータ送信を説明する。まず、ステップS601において、CPU102が実行するアプリケーションは、send()を呼び出す。send()が呼び出されると、ステップS602において、CPU102が実行するネットワークドライバは、通信処理において高速バッファを利用するか否かを判定する。たとえば、コネクションが高速な通信を行っていると判定した場合には、高速バッファを利用すると判定される。たとえば、ネットワークドライバは、肯定応答(ACK)の受信間隔を計測することによってコネクションの通信速度(RTT:往復遅延時間)を推定し、この通信速度が所定値を超えるか否かにより、コネクションが高速な通信を行なっているか否かを判定する。そして、コネクションが高速な通信を行なっている場合には高速バッファを使用すると判定される。
コネクションが高速な通信を行なっていると判定された場合(高速バッファを使用すると判定された場合)、処理はステップS603に進む。また、コネクションが高速な通信を行っていないと判定された場合(高速バッファを使用しないと判定された場合)、処理はステップ610に進む。なお、高速な通信か否かの判定は、肯定応答(ACK)の受信間隔が所定の判定時間を超えるか否かにより行うことができる。本実施形態では、図1に示すタイマ管理部104が、各コネクションについてデータ(パケット)の送信からの経過時間をカウントする。タイマ管理部104は、判定時間が経過すると、対応するコネクションに関して判定時間の経過を示す信号をCPU102(が実行するネットワークドライバ)に発行する。ネットワークドライバは、判定時間の経過を示す信号を受け取る前に肯定応答を受信していれば高速な通信と判定する。
ステップS602において高速バッファを使用すると判定されると、高速バッファと通常バッファを併用した通信処理を実行するべく処理はステップS302へ進む。ステップS302〜S311の処理は第1実施形態(図3)で説明したとおりである。一方、高速な通信ではないと判定されると、高速バッファへの送信対象のデータの転送は行われず、処理はステップS602からステップS610へ進む。すなわち、高速バッファへの送信対象のデータの転送は禁止される。
ステップS610において、ネットワークドライバは、送信対象のデータであるユーザデータをDRAM101内の通常バッファへ転送する。このデータ転送は、データ転送部106画実行してもよいし、CPU102が実行してもよい。次に、ステップS611において、ネットワークドライバは通常バッファへ転送されたユーザデータを用いてチェックサムを計算してTCP/IPヘッダを生成し、通常バッファ上でユーザデータをTCP/IPパケット化する。さらに、ステップS6612において、ネットワークドライバは、イーサネットヘッダを生成して、通常バッファ上でTCP/IPパケットをイーサネットフレーム化し、得られたイーサネットフレームをMAC107に送信する。その後、処理はステップS306へ進む。
以上のように、第3実施形態によれば、高速な通信を行っているコネクションであると判断した場合には、高速バッファと通常バッファを使用した通信(図6のステップS302〜S311)が実行される。他方、低速な通信を行なっているコネクションであると判断した場合には、高速バッファを用いず、通常バッファを使用した通信が実行される(図6のステップS610〜S612、S306〜S311)。通信速度に応じた高速バッファの利用が実現されるので、さらに高速バッファを効率的に使用することができる。
なお、上記実施形態では、高速バッファを使用するか否か(ステップS602)を、通信速度が高速か否かに基づいて(往復遅延時間に基づいて)切り替える例を説明したが、本発明はこれに限られるものではない。たとえば、以下に示す方法、またはそれら方法のうちのいくつかの組み合わせによって、高速バッファを使用するか否かを判定するようにしてもよい。なお、以下の(1)、(2)、(3)、(6)では、これからユーザデータの送信のために生成されることになるパケットについて判定を行う。ステップS602における判定処理はユーザデータをパケット化する前に実行されるからである。
(1)ステップS602において、パケットの属性の一つである宛先アドレスを調べ、これが所定のアドレスに合致する場合に高速バッファを使用すると判定する。宛先アドレスとしては、IPアドレスを用いることができる。こうすれば、特定の通信相手に対して高速な通信を行うことができる。
(2)ステップS602において、パケットの属性に含まれる宛先ポートまたは送信元ポートを調べ、宛先ポートまたは送信元ポートが所定のポート番号に合致する場合は高速バッファを使用すると判定する。特定の通信プロトコルに対して所定のポート番号が割り当てられていることが多いので、この方法によれば、特定の通信プロトコルを用いる通信の場合に高速な通信を行うようになる。たとえば特定の通信プロトコルがTCPの場合は、TCP通信のみが高速な通信を行うことができる構成となる。
(3)ステップS602において、パケットの属性に含まれる宛先ポートおよび送信元ポートを調べ、宛先ポートおよび送信元ポートの組み合わせが所定のポート番号の組み合わせに合致する場合は高速バッファを使用すると判定する。こうすれば、特定のコネクションについて高速な通信を行うことができる。
(4)ステップS602において、ユーザデータの送信に用いられるコネクションにおけるパケットのロス率を調べ、パケットのロス率が所定の閾値を超えない場合に高速バッファを使用すると判定する。こうすれば、パケットのロス率が少ない環境においてユーザデータを送信する場合に高速な通信を実現することができる。
(5)ステップS602において、ソケットAPI send()を呼び出した際の送信対象であるユーザデータのデータサイズを判定し、データサイズが所定の閾値を超える場合は高速バッファを使用すると判定する。こうすれば、大きなデータを送信する際に高速な通信を行うことができる。
(6)ステップS602において、パケットのデータ種別を判定し、所定のデータ種別に合致する場合は高速バッファを使用すると判定する。こうすれば、特定のデータについて高速な通信を行うことができる。例えば、RTP(Real-time Transport Protocol)の場合、特定のペイロード形式のみに高速な通信を適用するように構成することができる。
(7)また、ステップS602において、高速バッファに枯渇が発生している(高速バッファの空き領域が逼迫している)かどうかを判定し、高速バッファに枯渇が発生していない場合に高速バッファを使用すると判定する。たとえば、高速バッファの空き容量が所定値を超える場合に高速バッファを使用すると判定される。
<第4実施形態>
次に、第4実施形態の通信処理を説明する。第1実施形態では、データを再送するごとにTCP/IPパケットのパケットヘッダを生成する(ステップS310)がこれに限られるものではない。第4実施形態では、送信対象であるユーザデータに基づいて生成された送信用データが、ユーザデータと該ユーザデータに基づいて生成されたヘッダ部とを含む場合に、ヘッダ部を通常バッファに保持しておき、ユーザデータの再送時に再利用できるようにする。すなわち、第4実施形態では、生成したTCP/IPパケットのパケットヘッダの再利用を可能にする構成を説明する。なお、第4実施形態の通信装置の構成は、第1実施形態(図1)と同様である。以下、図7のフローチャートにより第4実施形態のソケットAPI send()によるデータ送信を説明する。
最初にステップS701において、CPU102が実行するアプリケーションは、send()を呼び出す。send()が呼び出されると、ステップS702において、CPU102が実行するネットワークドライバは、データ転送部106を用いて送信対象のデータであるユーザデータを高速バッファと通常バッファの2か所へ転送する。
ステップS703において、ネットワークドライバは、高速バッファに保持されているユーザデータを用いてチェックサムを計算し、通常バッファにパケットヘッダを生成する。その後、ネットワークドライバは、通常バッファに生成したパケットヘッダと高速バッファに保持されているユーザデータとを連結し、ユーザデータをTCP/IPパケット化する。さらに、ステップS704において、ネットワークドライバは、イーサネットヘッダを生成し、TCP/IPパケットをイーサネットフレーム化し、得られたイーサネットフレームをMAC107に送信する。ステップS705では、イーサネットフレーム化されたTCP/IPパケットが送信済みとなるので、高速バッファを解放する。
次に、ネットワークドライバは、肯定応答を受信したか否か、通信相手とのコネクションが切断したか否か、パケットの再送のタイミングか否かを判定する。すなわち、ステップS706において肯定応答を受信したと判定された場合、またはステップS707においてコネクションが切断したと判定された場合、処理はステップS709へ進む。他方、肯定応答を受信しなかった場合、及び通信相手とのコネクションが切断していなかった場合、処理はステップS708へ進む。ステップS708において、ネットワークドライバは、タイマ管理部104が管理する再送タイマがタイムアウトしたか否か(データの再送タイミングか否か)を判定する。再送タイマがタイムアウトしていなければ処理はステップS706に戻り、再送タイマがタイムアウトしていれば処理はステップS710へ進む。
ステップS710において、ネットワークドライバは、DRAM101内の通常バッファに生成したパケットヘッダ(ステップS703)と、データ転送部106が通常バッファに転送したユーザデータ(ステップS702)とを連結する。これにより、通常バッファに保持されているユーザデータがTCP/IPパケット化される。ステップS711において、ネットワークドライバは、イーサネットヘッダを生成し、ステップS710で生成されたTCP/IPパケットをイーサネットフレーム化し、得られたイーサネットフレームをMAC107に送信する。その後、処理はステップS706へ戻る。他方、ステップS709において、ネットワークドライバは、ステップS703においてパケットヘッダの生成に使用した通常バッファとステップS702においてデータ転送部106がユーザデータのデータ転送先に使用した通常バッファを解放する。
以上のように、第4実施形態によれば、肯定応答を必要とする通信において、再利用できるパケットヘッダが通常バッファへ生成される。したがって、第1実施形態に比べて、データ再送時におけるパケットの生成が高速化される。なお、第4実施形態においても、高速バッファは通信相手への送信と同時に、肯定応答の受信を待たずに解放され、通常バッファは再送のために通信相手から肯定応答を受信するまで確保される。したがって、高速通信を行うコネクションによる高速バッファの効率的な使用が実現される。
なお、上記各実施形態では、TCP/IPプロトコルを例に挙げたが、これに限られるものではない。例えば、UDPプロトコルなど、データの送信後に肯定応答が確認されるまで再送を行うことが要求されるプロトコルに好適に適用することができる。
また、本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101:DRAM、102:CPU、103:ROM、104:タイマ管理部、105:SRAM、106:データ転送部、107:MAC、108:PHY、109:イーサネット(登録商標)、110:通信部

Claims (18)

  1. 第1のデータバッファと、前記第1のデータバッファよりも高速なアクセスが可能な第2のデータバッファとを有する通信装置であって、
    送信対象のデータを前記第2のデータバッファへ転送する第1の転送手段と、
    前記第2のデータバッファに転送された前記送信対象のデータを用いて送信用データを生成して通信相手装置へ送信する送信手段と、
    前記送信手段により前記送信用データが生成または送信された後、前記通信相手装置からの特定の応答を待たずに前記第2のデータバッファを解放する解放手段と、
    前記送信対象のデータの再送を可能にするために、前記送信対象のデータまたは前記送信用データを前記第1のデータバッファに保持させる保持手段と、を備えることを特徴とする通信装置。
  2. 前記特定の応答を待つ間に、前記第1のデータバッファが保持している前記送信対象のデータまたは前記送信用データを用いて、前記送信対象のデータを前記通信相手装置へ再送する再送手段をさらに備えることを特徴とする請求項1に記載の通信装置。
  3. 前記保持手段は、前記送信対象のデータを前記第1のデータバッファに転送する第2の転送手段を含み、
    前記再送手段は、前記第1のデータバッファに転送された前記送信対象のデータを用いて再送のための送信用データを生成し、送信することを特徴とする請求項2に記載の通信装置。
  4. 前記保持手段は、前記送信用データを前記第1のデータバッファに転送する第2の転送手段を含み、
    前記再送手段は、前記第1のデータバッファから前記送信用データを取得して再送することを特徴とする請求項2に記載の通信装置。
  5. 前記第2のデータバッファを使用するか否かを判定する判定手段をさらに備え、
    前記第2のデータバッファを使用しないと判定された場合には、
    前記第1の転送手段による前記送信対象のデータの転送を禁止し、
    前記送信手段は、前記第2の転送手段により前記第1のデータバッファに転送された前記送信対象のデータを用いて送信用データを生成する、ことを特徴とする請求項3に記載の通信装置。
  6. 前記判定手段は、前記送信対象のデータを送信するコネクションの通信速度に基づいて前記第2のデータバッファを使用するか否かを判定することを特徴とする請求項5に記載の通信装置。
  7. 前記判定手段は、前記送信対象のデータの宛先ポートおよび/または送信元ポートのポート番号に基づいて、前記第2のデータバッファを使用するか否かを判定することを特徴とする請求項5または6に記載の通信装置。
  8. 前記判定手段は、前記送信対象のデータの宛先アドレスに基づいて、前記第2のデータバッファを使用するか否かを判定することを特徴とする請求項5乃至7のいずれか1項に記載の通信装置。
  9. 前記判定手段は、前記送信対象のデータのコネクションにおけるパケットのロス率に基づいて、前記第2のデータバッファを使用するか否かを判定することを特徴とする請求項5乃至8のいずれか1項に記載の通信装置。
  10. 前記判定手段は、前記送信対象のデータのデータサイズに基づいて、前記第2のデータバッファを使用するか否かを判定することを特徴とする請求項5乃至9のいずれか1項に記載の通信装置。
  11. 前記判定手段は、前記送信用データとしてのパケットのデータ種別に基づいて、前記第2のデータバッファを使用するか否かを判定することを特徴とする請求項5乃至10のいずれか1項に記載の通信装置。
  12. 前記判定手段は、前記第2のデータバッファの空き容量に基づいて、前記第2のデータバッファを使用するか否かを判定することを特徴とする請求項5乃至11のいずれか1項に記載の通信装置。
  13. 前記送信手段が送信する前記送信用データは、前記送信対象のデータと該送信対象のデータに基づいて生成されたヘッダ部とを含み、
    前記ヘッダ部は前記第1のデータバッファに保持され、
    前記再送手段は、前記第1のデータバッファに保持されている前記ヘッダ部と前記送信対象のデータを用いて前記再送のための送信用データを生成することを特徴とする請求項3に記載の通信装置。
  14. 前記解放手段は、さらに、前記特定の応答の受信に応じて前記第1のデータバッファを解放することを特徴とする請求項1乃至13のいずれか1項に記載の通信装置。
  15. 前記送信用データは、前記送信対象のデータをパケット化した得られるパケットであることを特徴とする請求項1乃至14のいずれか1項に記載の通信装置。
  16. 前記第1のデータバッファはDRAMにより構成され、前記第2のデータバッファはSRAMにより構成されることを特徴とする請求項1乃至15のいずれか1項に記載の通信装置。
  17. 第1のデータバッファと、前記第1のデータバッファよりも高速なアクセスが可能な第2のデータバッファとを有する通信装置の制御方法であって、
    送信対象のデータを前記第2のデータバッファへ転送する第1の転送工程と、
    前記第2のデータバッファに転送された前記送信対象のデータを用いて送信用データを生成して通信相手装置へ送信する送信工程と、
    前記送信工程で前記送信用データが生成または送信された後、前記通信相手装置からの特定の応答を待たずに前記第2のデータバッファを解放する解放工程と、
    前記送信対象のデータの再送を可能にするために、前記送信対象のデータまたは前記送信用データを前記第1のデータバッファに保持させる保持工程と、を有することを特徴とする通信装置の制御方法。
  18. コンピュータを、請求項1乃至16のいずれか1項に記載された通信装置の各手段として機能させるためのプログラム。
JP2015126871A 2015-06-24 2015-06-24 通信装置およびその制御方法、プログラム Pending JP2017011580A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015126871A JP2017011580A (ja) 2015-06-24 2015-06-24 通信装置およびその制御方法、プログラム
US15/189,602 US10372667B2 (en) 2015-06-24 2016-06-22 Communication apparatus and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015126871A JP2017011580A (ja) 2015-06-24 2015-06-24 通信装置およびその制御方法、プログラム

Publications (1)

Publication Number Publication Date
JP2017011580A true JP2017011580A (ja) 2017-01-12

Family

ID=57605290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015126871A Pending JP2017011580A (ja) 2015-06-24 2015-06-24 通信装置およびその制御方法、プログラム

Country Status (2)

Country Link
US (1) US10372667B2 (ja)
JP (1) JP2017011580A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019057781A (ja) * 2017-09-20 2019-04-11 キヤノン株式会社 通信装置および通信装置の制御方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017011580A (ja) * 2015-06-24 2017-01-12 キヤノン株式会社 通信装置およびその制御方法、プログラム
JP6515915B2 (ja) * 2016-12-26 2019-05-22 トヨタ自動車株式会社 車載ネットワークシステム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544306A (en) * 1994-05-03 1996-08-06 Sun Microsystems, Inc. Flexible dram access in a frame buffer memory and system
US6151641A (en) * 1997-09-30 2000-11-21 Lsi Logic Corporation DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments
US6529945B1 (en) * 1999-07-26 2003-03-04 International Business Machines Corporation Data buffer management between two different systems
US6874044B1 (en) * 2003-09-10 2005-03-29 Supertalent Electronics, Inc. Flash drive/reader with serial-port controller and flash-memory controller mastering a second RAM-buffer bus parallel to a CPU bus
JP2002358288A (ja) * 2001-05-31 2002-12-13 Hitachi Ltd 半導体集積回路及びコンピュータ読取り可能な記録媒体
US7110400B2 (en) * 2002-04-10 2006-09-19 Integrated Device Technology, Inc. Random access memory architecture and serial interface with continuous packet handling capability
TW573408B (en) * 2002-05-07 2004-01-21 Via Tech Inc Host channel adapter and relevant method
US7843968B2 (en) * 2002-09-30 2010-11-30 Sanyo Electric Co., Ltd. Communication apparatus and applications thereof
US20060031565A1 (en) * 2004-07-16 2006-02-09 Sundar Iyer High speed packet-buffering system
TWI257790B (en) * 2004-10-29 2006-07-01 Ind Tech Res Inst System for protocol processing engine
US7499412B2 (en) * 2005-07-01 2009-03-03 Net Optics, Inc. Active packet content analyzer for communications network
US20090157946A1 (en) * 2007-12-12 2009-06-18 Siamak Arya Memory having improved read capability
JP2009290297A (ja) * 2008-05-27 2009-12-10 Fujitsu Ltd 通信装置および通信装置の制御方法
US7826469B1 (en) * 2009-03-09 2010-11-02 Juniper Networks, Inc. Memory utilization in a priority queuing system of a network device
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
JP5361924B2 (ja) 2011-02-28 2013-12-04 株式会社東芝 データ送信装置、データ通信装置および通信プログラム
US9645870B2 (en) * 2013-06-27 2017-05-09 Atmel Corporation System for debugging DMA system data transfer
JP6351363B2 (ja) * 2013-08-01 2018-07-04 キヤノン株式会社 通信装置およびそのデータ処理方法
US9361956B2 (en) * 2014-01-15 2016-06-07 Advanced Micro Devices, Inc. Performing logical operations in a memory
US10313410B2 (en) * 2014-03-21 2019-06-04 Ptc Inc. Systems and methods using binary dynamic rest messages
US9613109B2 (en) * 2015-05-14 2017-04-04 Walleye Software, LLC Query task processing based on memory allocation and performance criteria
JP2017011580A (ja) * 2015-06-24 2017-01-12 キヤノン株式会社 通信装置およびその制御方法、プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019057781A (ja) * 2017-09-20 2019-04-11 キヤノン株式会社 通信装置および通信装置の制御方法

Also Published As

Publication number Publication date
US10372667B2 (en) 2019-08-06
US20160378714A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
US10430374B2 (en) Selective acknowledgement of RDMA packets
US7885264B2 (en) Communications system, communications device, and data retransmission control method
CN105376173B (zh) 一种发送窗口流量控制方法和终端
CN103858404B (zh) 通信装置
CN109120383A (zh) 无人机及其地面站、数据传输方法
US8266317B2 (en) Reducing idle time due to acknowledgement packet delay
WO2018121535A1 (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
JP2017011580A (ja) 通信装置およびその制御方法、プログラム
US9590909B2 (en) Reducing TCP timeouts due to Incast collapse at a network switch
JP2014195158A (ja) 通信装置と、当該通信装置を含む通信システム、及びその制御方法とプログラム
JP2005143076A (ja) パケット通信装置、パケット通信方法、データ受信装置およびデータ受信方法
CN105472655B (zh) 一种拥塞窗口的调整方法、相关装置和系统
JP6933207B2 (ja) 送信装置、方法およびプログラム
US20140071993A1 (en) Transfer device and transfer method
JP6010502B2 (ja) パケット処理方法及びパケット処理装置
JP6675189B2 (ja) 通信装置およびその制御方法、プログラム
JP2005051738A (ja) モバイルアドホックネットワークにおけるトランスポート層を用いた効率的なデータの送受信方法及びその方法を用いたネットワーク装置
JP6618330B2 (ja) 通信装置及びその方法、コンピュータプログラム
JP7024259B2 (ja) 情報処理システム、情報処理方法、プログラム、及び情報処理装置
EP3737204A1 (en) Mobile communication system, method and device
US9172774B2 (en) Technique for managing communications at a router
WO2022027311A1 (zh) 一种通信方法及装置
JP4572306B2 (ja) 通信装置、通信方法及びプログラム
JP6688122B2 (ja) 通信装置およびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190610

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191008

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20191111