(57)【要約】【課題】データ送受信システムにおいて、データ受信装置の受信バッファの溢れをなくしデータの再送を不要とすること。【解決手段】データ送信装置２の送信バッファ２１に一部でもデータが書き込まれると予告部２５がデータ送信予告信号を送信する。そして、データ受信装置３の選択部４０がデータ送信予告信号を受信して、加算部３８により最大パケット長が加算された事前予約量で事前予約量レジスタ４１を更新する。また、加算部４２は、バッファ使用量レジスタ３７からバッファ使用量を読み出し、事前予約量レジスタ４１から事前予約量を読み出して、バッファ使用量と事前予約量を加算する。そして、停止通知部４３は、バッファ使用量と事前予約量の加算結果を所定の閾値と比較し、所定の閾値を超えるとデータ送信停止信号をデータ送信装置２に送信する。【選択図】図１
2015188163.tif 000002
【特許請求の範囲】
【請求項１】
データを送信するデータ送信装置からデータの送信を予告する送信予告を受信する受信部と、
前記受信部により送信予告が受信されると、受信データを保存する受信バッファの現在の使用量と前記送信予告を受けたデータのうち未受信のデータの量を示す事前予約量とに基づいて受信バッファの予想使用量を算出する算出部と、
前記算出部が算出した予想使用量が所定の閾値を超えたか否かを判定する判定部と、
前記判定部により前記予想使用量が所定の閾値を超えたと判定された場合に、データ送信の停止を前記データ送信装置に通知する通知部と
を備えることを特徴とするデータ受信装置。
【請求項２】
前記送信予告及び前記送信予告により予告されたデータの受信に基づいて前記事前予約量を更新する第１の更新部と、
前記受信バッファからのデータの読み出し及び前記送信予告により予告されたデータの受信に基づいて前記受信バッファの現在の使用量を更新する第２の更新部とをさらに備え、
前記算出部は、前記第１の更新部により更新された前記事前予約量と前記第２の更新部により更新された前記事前予約量とに基づいて前記予想使用量を算出することを特徴とする請求項１記載のデータ受信装置。
【請求項３】
前記判定部は、前記受信バッファからデータが読み出されて前記第２の更新部により前記使用量が更新されると、前記予想使用量が所定の閾値を超えた状態から所定の閾値を超えない状態に変化したか否かをさらに判定し、
前記通知部は、前記判定部により前記予想使用量が所定の閾値を超えた状態から超えない状態に変化したと判定された場合に、前記停止の解除を前記データ送信装置に通知することを特徴とする請求項１又は２に記載のデータ受信装置。
【請求項４】
前記第１の更新部は、最大データ長を加えて前記事前予約量を更新することを特徴とする請求項２記載のデータ受信装置。
【請求項５】
データを送信するデータ送信装置からデータの送信を予告する送信予告を受信し、
前記送信予告を受信すると、受信データを保存する受信バッファの現在の使用量と前記送信予告を受けたデータのうち未受信のデータの量を示す事前予約量とに基づいて受信バッファの予想使用量を算出し、
算出した予想使用量が所定の閾値を超えたか否かを判定し、
予想使用量が所定の閾値を超えたと判定した場合に、データ送信の停止を前記データ送信装置に通知する
ことを特徴とするデータ受信装置の制御方法。
【請求項６】
データを送信するデータ送信装置と該データ送信装置が送信したデータを受信するデータ受信装置とを有するデータ送受信システムにおいて、
前記データ送信装置は、
データを送信する前にデータの送信予告を前記データ受信装置に通知する通知部と、
前記通知部により送信予告が通知されたデータを送信する送信部とを備え、
前記データ受信装置は、
前記送信予告を受信する受信部と、
前記受信部により送信予告が受信されると、受信データを保存する受信バッファの現在の使用量と前記送信予告を受けたデータのうち未受信のデータの量を示す事前予約量とに基づいて受信バッファの予想使用量を算出する算出部と、
前記算出部が算出した予想使用量が所定の閾値を超えたか否かを判定する判定部と、
前記判定部により前記予想使用量が所定の閾値を超えたと判定された場合に、データ送信の停止を前記データ送信装置に通知する通知部と
を備えることを特徴とするデータ送信装置とデータ受信装置とを有するデータ送受信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ受信装置、データ受信装置の制御方法及びデータ送信装置とデータ受信装置とを有するデータ送受信システムに関する。
【背景技術】
【０００２】
データ受信装置と比較して高速なデータ送信装置とデータ受信装置との間でデータ転送を行う場合に、データ受信装置での処理が追いつかずにデータが失われることのないようにデータ転送レートの制御が行われる。この制御は、一般に、フロー制御と呼ばれ、確実なデータ転送が必要な場合に重要である。
【０００３】
フロー制御の方法としては、データ受信装置がデータ受信の完了したことをデータ送信装置に肯定応答信号（ＡＣＫ）を伝えることによって、データ送信装置が後続のデータ送信可能であると判断する方法がある。しかし、この方法では、データ送信装置がＡＣＫを待ってからデータ送信を行うため、通信効率が低くなる。
【０００４】
別の方法としては、データ受信装置のバッファにある程度の空きがあると仮定して、データ送信装置が連続的にデータ送信を行い、データ受信装置はデータを受信した事をデータ送信装置に応答し、応答が無ければデータを再送信する方法がある。この方法は、スライディングウインドウ方式と呼ばれる。
【０００５】
なお、ＩＰネットワークにおいて、新規接続に用いる経路で使用中のリソース量と新規接続で要求されるリソース量と当該経路に対して事前予約により予約された予約済リソース量に基づいて新規接続の受付を制御する従来技術がある。
【０００６】
また、第１装置から第２装置への遠隔要求を処理するネットワークアダプタが、遠隔要求を受信したとき、第２装置に対応するバッファが一杯である場合、又は、第２装置についての遠隔要求の数が所定の閾値より多い場合に、遠隔要求を拒否する従来技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−８５６８６号公報
【特許文献２】特開２００８−８６０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、スライディングウインドウ方式では、データ受信装置がバッファ溢れを起こすという問題があり、バッファ溢れによりドロップされたデータについては再送処理を行うという対策がとられている。
【０００９】
本発明は、１つの側面では、バッファ溢れをなくしてデータの再送を不要とすることを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するデータ受信装置は、１つの態様において、データを送信するデータ送信装置からデータの送信を予告する送信予告を受信する受信部を備える。また、前記データ受信装置は、前記受信部により送信予告が受信されると、受信データを保存する受信バッファの現在の使用量と前記送信予告を受けたデータのうち未受信のデータの量を示す事前予約量とに基づいて受信バッファの予想使用量を算出する算出部を備える。また、前記データ受信装置は、前記算出部が算出した予想使用量が所定の閾値を超えたか否かを判定する判定部と、前記判定部により前記予想使用量が所定の閾値を超えたと判定された場合に、データ送信の停止を前記データ送信装置に通知する通知部とを備える。
【発明の効果】
【００１１】
１実施態様によれば、バッファ溢れをなくしてデータの再送を不要とすることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例に係るデータ送受信システムの構成を示す図である。
【図２】図２は、データ受信装置がデータ送信停止指示を行う場合のタイミングチャートである。
【図３】図３は、データ受信装置がデータ送信停止指示を解除する場合のタイミングチャートである。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するデータ受信装置、データ受信装置の制御方法及びデータ送信装置とデータ受信装置とを有するデータ送受信システムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１４】
まず、実施例に係るデータ送受信システムの構成について説明する。図１は、実施例に係るデータ送受信システムの構成を示す図である。図１に示すように、データ送受信システム１は、パケットによりデータを送信するデータ送信装置２と、データ送信装置２により送信されたパケットを受信するデータ受信装置３とを有する。
【００１５】
データ送信装置２は、例えば、ＰＣＩインタフェースであり、データ受信装置３は、例えば、ＣＰＵモジュールである。あるいは、データ送信装置２及びデータ受信装置３は、例えば、ネットワークで接続された２つの情報処理装置である。
【００１６】
データ送信装置２は、送信バッファ２１と、書込部２２と、送信部２３と、送信指示部２４と、予告部２５とを有する。送信バッファ２１は、送信データが一時的に保存されるバッファである。
【００１７】
書込部２２は、送信データを送信バッファ２１に書き込む。送信部２３は、送信バッファのデータをパケットとしてデータ受信装置３に送信する。送信指示部２４は、送信するデータの準備ができて送信可能になったら送信部２３にパケットを送信するように指示する。ただし、送信指示部２４は、データ受信装置３からデータ送信の停止を指示するデータ送信停止信号を受け取ると、送信指示は行わない。また、送信指示部２４は、データ送信停止信号が解除されると、送信指示を再開する。
【００１８】
予告部２５は、送信データが書込部２２により送信バッファ２１に一部でも書き込まれるとデータ送信を予告するデータ送信予告信号をデータ受信装置３に送信する。予告部２５が、データ送信予告信号をデータ受信装置３に送信することによって、データ受信装置３は、パケットを受信する前にバッファ溢れに対する対応を行うことができる。
【００１９】
ただし、予告部２５は、データ受信装置３からデータ送信停止信号を受け取ると、データ送信予告信号を送信しない。また、予告部２５は、データ送信停止信号が解除されると、データ送信予告信号の送信を再開する。
【００２０】
データ受信装置３は、受信バッファ３１と、受信部３２と、読出部３３と、加算部３４、３８及び４２と、減算部３５及び３９と、選択部３６及び４０と、バッファ使用量レジスタ３７と、事前予約量レジスタ４１と、停止通知部４３とを有する。
【００２１】
受信バッファ３１は、受信データが一時的に保存されるバッファである。受信部３２は、データ送信装置２が送信したパケットを受信して受信データを受信バッファ３１に書き込む。また、受信部３２は、パケットを受信するとパケットの受信を選択部３６に通知する。また、受信部３２は、パケットを受信すると受信バッファ３１に書き込んだデータの量を書き込み量として加算部３４に通知する。
【００２２】
読出部３３は、受信バッファ３１からデータを読み出す。また、読出部３３は、受信バッファ３１からデータを読み出すと、データの読み出しを選択部３６に通知する。また、読出部３３は、受信バッファ３１からデータを読み出すと、読み出したデータの量を読み出し量として減算部３５に通知する。
【００２３】
加算部３４は、受信部３２から書き込み量を通知されると、バッファ使用量レジスタ３７から受信バッファ３１の使用量を読み出し、書き込み量を加えて選択部３６に出力する。
【００２４】
減算部３５は、読出部３３から読み出し量を通知されると、バッファ使用量レジスタ３７から受信バッファ３１の使用量を読み出し、読み出し量を引いて選択部３６に出力する。
【００２５】
選択部３６は、受信部３２からパケット受信を通知されると、加算部３４の出力すなわち書き込み量が加算されたバッファ使用量をバッファ使用量レジスタ３７に書き込む。一方、選択部３６は、読出部３３からデータの読み出しを通知されると、減算部３５の出力すなわち読み出し量が引かれたバッファ使用量をバッファ使用量レジスタ３７に書き込む。
【００２６】
バッファ使用量レジスタ３７は、受信バッファ３１の使用量を記憶するレジスタである。バッファ使用量レジスタ３７は、事前予約量レジスタ４１とともに、受信バッファ３１の溢れを予測するために用いられる。
【００２７】
加算部３８は、データ送信装置２からデータ送信予告信号を受信すると、事前予約量レジスタ４１から事前予約量を読み出し、最大パケット長を加えて選択部４０に出力する。ここで、事前予約量とは、データ送信装置２からデータ送信予告信号を受信したパケットのうち未受信のパケットを格納するために受信バッファ３１に対して事前に予約する使用量である。
【００２８】
ここでは、各パケットについて最大パケット長を事前予約量としているが、平均パケット長など他の量を各パケットについての予約量としてもよい。また、データ送信装置２がデータ送信予告信号を送信する際に、パケット長を送信してもよい。
【００２９】
減算部３９は、受信部３２からパケットの受信を通知されると、事前予約量レジスタ４１から事前予約量を読み出し、最大パケット長を引いて選択部４０に出力する。すなわち、減算部３９は、パケットを受信すると事前に予約した使用量をキャンセルする。
【００３０】
選択部４０は、データ送信装置２からデータ送信予告信号を受信すると、加算部３８の出力すなわち最大パケット長が加算された事前予約量を事前予約量レジスタ４１に書き込む。一方、選択部４０は、受信部３２からパケット受信を通知されると、減算部３９の出力すなわち最大パケット長が引かれた事前予約量を事前予約量レジスタ４１に書き込む。
【００３１】
事前予約量レジスタ４１は、受信バッファ３１の事前予約量を記憶するレジスタである。事前予約量レジスタ４１は、バッファ使用量レジスタ３７とともに、受信バッファ３１の溢れを予測するために用いられる。
【００３２】
加算部４２は、バッファ使用量レジスタ３７又は事前予約量レジスタ４１が更新されると、バッファ使用量レジスタ３７から現在のバッファ使用量を読み出し、事前予約量レジスタ４１から現在の事前予約量を読み出す。そして、加算部４２は、現在のバッファ使用量と現在の事前予約量を加算し、加算結果を停止通知部４３に出力する。
【００３３】
停止通知部４３は、現在のバッファ使用量と現在の事前予約量の加算結果を所定の閾値と比較し、所定の閾値を超えると、受信バッファ３１に溢れが発生する可能性があると判断してデータ送信の停止を指示するデータ送信停止信号をデータ送信装置２に送信する。
【００３４】
停止通知部４３が、現在のバッファ使用量と現在の事前予約量の加算結果が所定の閾値を超えるとデータ送信停止信号をデータ送信装置２に送信することで、受信バッファ３１の溢れを防ぐことができる。
【００３５】
また、停止通知部４３は、現在のバッファ使用量と現在の事前予約量の加算結果を所定の閾値と比較し、所定の閾値を超えた状態から超えない状態に変わると、受信バッファ３１に溢れが発生する可能性がなくなったと判断してデータ送信停止信号を解除する。
【００３６】
停止通知部４３が、現在のバッファ使用量と現在の事前予約量の加算結果が所定の閾値を超えた状態から超えない状態に変わるとデータ送信停止信号を解除することで、データ送信装置２は、データの送信を再開することができる。
【００３７】
次に、データ受信装置３がデータ送信停止指示を行う場合のタイミングについて説明する。図２は、データ受信装置３がデータ送信停止指示を行う場合のタイミングチャートである。なお、図２では、受信バッファ３１に関して、事前予約量は０であり、バッファ使用量は１００であるとする。
【００３８】
図２に示すように、タイミングｔ1において予告部２５がデータ送信予告信号を送信すると、事前予約量は０から８に増加する。ここで、最大パケット長は８であるとする。そして、バッファ使用量と事前予約量の和は１００から１０８に増加する。
【００３９】
そして、タイミングｔ2において予告部２５が次のパケットについてデータ送信予告信号を送信すると、事前予約量は８から１６に増加する。また、バッファ使用量と事前予約量の和は１０８から１１６に増加する。
【００４０】
そして、タイミングｔ3において予告部２５はデータ送信予告信号の送信を停止する。その後、タイミングｔ4においてデータ受信装置３がパケット長が５のパケット＃０を受信すると、事前予約量は１６から８に減少し、バッファ使用量は１００から１０５に増加する。その結果、バッファ使用量と事前予約量の和は１１６から１１３に減少する。
【００４１】
そして、タイミングｔ5においてデータ受信装置３がパケット長が７のパケット＃１を受信すると、事前予約量は８から０に減少し、バッファ使用量は１０５から１１２に増加する。その結果、バッファ使用量と事前予約量の和は１１３から１１２に減少する。
【００４２】
そして、タイミングｔ6において予告部２５がデータ送信予告信号を送信すると、事前予約量は０から８に増加し、バッファ使用量と事前予約量の和は１１２から１２０に増加する。ここで、所定の閾値を１１９とすると、バッファ使用量と事前予約量の和が所定の閾値を超えたので、停止通知部４３は、タイミングｔ7においてデータ送信停止信号をデータ送信装置２に送信する。
【００４３】
また、タイミングｔ7において予告部２５は次のパケットについてデータ送信予告信号を送信し、事前予約量が８から１６に増加する。また、バッファ使用量と事前予約量の和は１２０から１２８に増加する。そして、タイミングｔ8において予告部２５はデータ送信予告信号の送信を停止する。
【００４４】
そして、タイミングｔ9においてデータ受信装置３がパケット長が８のパケット＃２を受信すると、事前予約量は１６から８に減少し、バッファ使用量は１１２から１２０に増加する。その結果、バッファ使用量と事前予約量の和は１２８のままである。
【００４５】
そして、タイミングｔ10においてデータ受信装置３がパケット長が５のパケット＃３を受信すると、事前予約量は８から０に減少し、バッファ使用量は１２０から１２５に増加する。その結果、バッファ使用量と事前予約量の和は１２８から１２５に減少する。
【００４６】
このように、バッファ使用量と事前予約量の和が所定の閾値を超えると、停止通知部４３は、データ送信停止信号をデータ送信装置２に送信するので、受信バッファ３１の溢れを防ぐことができる。
【００４７】
次に、データ受信装置３がデータ送信停止指示を解除する場合のタイミングについて説明する。図３は、データ受信装置３がデータ送信停止指示を解除する場合のタイミングチャートである。なお、図３では、受信バッファ３１に関して、事前予約量は０であり、バッファ使用量は１２５であるとする。
【００４８】
図３に示すように、タイミングｔ11において受信バッファ３１からデータが読み出され、バッファ使用量が１２５から１２０に減少すると、バッファ使用量と事前予約量の和も１２５から１２０に減少する。
【００４９】
そして、タイミングｔ12において受信バッファ３１からデータが読み出され、バッファ使用量が１２０から１１３に減少すると、バッファ使用量と事前予約量の和も１２０から１１３に減少する。したがって、バッファ使用量と事前予約量の和が閾値１１９を超えた状態から超えない状態に変化したため、停止通知部４３は、データ送信停止信号を解除する。
【００５０】
そして、タイミングｔ13において受信バッファ３１からデータが読み出され、バッファ使用量が１１３から１０５に減少すると、バッファ使用量と事前予約量の和も１１３から１０５に減少する。
【００５１】
そして、タイミングｔ14において予告部２５がデータ送信予告信号を送信すると、事前予約量は０から８に増加し、バッファ使用量と事前予約量の和は１０５から１１３に増加する。そして、タイミングｔ15において予告部２５はデータ送信予告信号の送信を停止する。
【００５２】
そして、タイミングｔ16においてデータ受信装置３がパケット長が５のパケット＃４を受信すると、事前予約量は８から０に減少し、バッファ使用量は１０５から１１０に増加する。その結果、バッファ使用量と事前予約量の和は１１３から１１０に減少する。
【００５３】
このように、バッファ使用量と事前予約量の和が閾値を超えた状態から超えない状態に変化すると、停止通知部４３はデータ送信停止信号を解除するので、データ送信装置２は、データの送信を再開することができる。
【００５４】
上述してきたように、実施例では、データ送信装置２の送信バッファ２１に一部でもデータが書き込まれると予告部２５がデータ送信予告信号をデータ受信装置３に送信する。そして、データ受信装置３の選択部４０が、データ送信予告信号を受信して、加算部３８により最大パケット長が加算された事前予約量で事前予約量レジスタ４１を更新する。
【００５５】
そして、加算部４２は、バッファ使用量レジスタ３７からバッファ使用量を読み出し、事前予約量レジスタ４１から事前予約量を読み出して、バッファ使用量と事前予約量を加算する。そして、停止通知部４３は、バッファ使用量と事前予約量の加算結果を所定の閾値と比較し、所定の閾値を超えるとデータ送信停止信号をデータ送信装置２に送信する。
【００５６】
したがって、データ受信装置３は、受信バッファ３１が溢れることを防ぐことができる。このため、データ受信装置３がデータ送信装置２にデータの再送を要求することを不要とすることができる。
【００５７】
また、実施例では、読出部３３が受信バッファ３１からデータを読み出すと、減算部３５は、バッファ使用量レジスタ３７からバッファ使用量を読み出し、バッファ使用量から読み出し量を引く。そして、加算部４２は、バッファ使用量レジスタ３７からバッファ使用量を読み出し、事前予約量レジスタ４１から事前予約量を読み出して、バッファ使用量と事前予約量を加算する。
【００５８】
そして、停止通知部４３は、バッファ使用量と事前予約量の加算結果を所定の閾値と比較し、所定の閾値を超えた状態から超えない状態に変化するとデータ送信停止信号を解除する。したがって、データ送信装置２は、データの送信を再開することができる。
【００５９】
なお、本実施例では、データをパケットで送信する場合について説明したが、本発明はこれに限定されるものではなく、他の形態でデータを送信する場合にも同様に適用することができる。
【符号の説明】
【００６０】
１    データ送受信システム
２    データ送信装置
３    データ受信装置
２１    送信バッファ
２２    書込部
２３    送信部
２４    送信指示部
２５    予告部
３１    受信バッファ
３２    受信部
３３    読出部
３４，３８，４２    加算部
３５，３９    減算部
３６，４０    選択部
３７    バッファ使用量レジスタ
４１    事前予約量レジスタ
４３    停止通知部
【図１】
2015188163.tif 000003
【図２】
2015188163.tif 000004
【図３】
2015188163.tif 000005