説明

通信システム、通信装置、およびデータの再送制御方法

【課題】 パケットロス率が比較的高い伝送路でも、伝送速度を低下させないようにデータ送信をする。
【解決手段】 送信装置1は、データとデータの順序を示すデータ通番と送信順序を示す送信通番とを含むデータパケット50を送信し、次データ通番と受信状況を示すビット列と受信済みの送信通番とを含む確認応答パケット60を受信するデータ送信部11と、データ送信部11が送信したデータパケットの送信履歴を記憶する送信履歴記憶部14と、送信履歴記憶部14を参照して、受信した確認応答パケット60に基づいて再送が必要なデータ通番を特定し、データ送信部11に再送指示をする再送制御部12とを備える。受信装置2は、送信装置1から送信されたデータパケット50を受信し、これに対する確認応答パケット60を生成し、送信装置1へ送信するデータ受信部21を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケットロスが生じたときにデータの再送をするための技術に関し、特に、パケットロス率が高い伝送路でも伝送速度を低下させないようにデータ再送を行うための技術に関する。
【背景技術】
【0002】
IP(Internet Protocol)通信技術として最も普及しているTCP(Transmission Control Protocol)では、再送制御を行うための機能として以下の二つを備えている。それらは、パケットロスに対して受信側から3回再送要求を受けると、送信側が再送を行う即時再送する機能(Fast Retransmit)、およびパケット受信情報を確認応答情報(ACK)に含めるSACK(Selective ACK)オプション機能である。
【0003】
【非特許文献1】TCP:RFC793(http://www.faqs.org/rfcs/rfc2001.html)
【非特許文献2】Fast Retransmit:RFC2001(http://www.faqs.org/rfcs/rfc2001.html)
【非特許文献3】SACK:RFC2018(http://www.faqs.org/rfcs/rfc2018.html)
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、即時再送機能では、再送したデータが到達しなかった場合であっても、さらなる再送(再々送)は行わないので、この場合はタイムアウトによる再送まで待たなければならない。これは、再送したパケットが到達したかどうかを送信側で確認することができないからである。再送パケットが到達したかを確認しないうちに再々送をすれば、本来必要のないはずのパケットが伝送路を流れることもあり、さらに伝送効率が悪化し、輻輳を招くおそれがある。
【0005】
また、SACKオプション機能を利用すると、受信側から返送される確認応答情報のサイズが大きい。通常、パケットロスが生じるときは、伝送路が込んでいる場合であるから、サイズの大きなデータが流れると、さらに伝送効率が悪化し、輻輳を招きやすい。また、ロスするバケット数が増えると、SACKオプションではすべての受信情報を、送信側へ伝えることができなくなる。
【0006】
そこで、本発明の目的は、パケットロス率が比較的高い伝送路でも伝送速度を低下させないようにデータ転送を行うための技術を提供することである。
【0007】
本発明の他の目的は、パケットロスが判明したとき直ちに、かつ、必要最低限の再送データを再送するための技術を提供することである。
【0008】
本発明のさらに別の目的は、重複再送による輻輳を防止することである。
【課題を解決するための手段】
【0009】
本発明の一つの実施態様に従う通信システムは、送信装置と受信装置とを備える。前記送信装置は、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、前記データパケットを受信した受信装置が送信した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備える。前記受信装置は、前記送信装置から送信された前記データパケットを受信する手段と、前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記送信装置へ送信する手段と、を備える。
【0010】
好適な実施形態では、前記再送を指示する手段は、前記確認応答パケットに含まれている前記受信状況を示す情報に基づいて、前記送信装置が送信したが、前記受信装置が受信していないデータ通番を抽出し、前記抽出したデータ通番に係るデータを送信したデータパケットの送信通番を前記記憶手段から取得し、前記取得した送信通番と、前記確認応答パケットに含まれている送信通番とに基づいて、再送が必要なデータ通番を特定するようにしてもよい。
【0011】
好適な実施形態では、前記受信状況を示す情報は、連続して受信が完了しているデータ通番の最大値と、受信済みデータ通番の最大値との間のデータ通番に係るデータの受信状況を、ビット列で示したものを含んでもよい。
【0012】
好適な実施形態では、前記受信装置は、前記データパケットの受信手段が受信したデータパケットに含まれているデータ通番を一時的に格納するバッファと、前記バッファを参照して、前記確認応答パケットを生成する手段とを、さらに備えるようにしてもよい。
【0013】
本発明の一つの実施態様に従う通信装置は、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備える。
【0014】
本発明の一つの実施態様に従う通信装置は、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信する手段と、前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する手段と、を備える。
【0015】
本発明の一つの実施態様に従う通信システムは、送信装置と受信装置とを備える。そして、前記送信装置は、送信データを分割した分割データごとに送信する送信手段と、前記送信手段が送信した分割データの送信履歴を記憶する記憶手段と、一の分割データの受信確認である確認応答であって、前記一の分割データ以前の前記受信装置における受信状況を示す情報を含む確認応答を受信する手段と、前記記憶手段を参照して、前記受信した確認応答に基づいて再送が必要なデータを特定し、前記送信手段へ前記特定された分割データの再送指示をする手段と、を備える。また、前記受信装置は、前記送信装置から送信された分割データを受信する受信手段と、前記受信手段が分割データを受信すると、当該受信した分割データ以前の受信状況を示す情報を含む確認応答を生成し、前記送信装置へ送信する確認応答送信手段と、を備える。
【0016】
本発明の一つの実施態様に従う通信システムは、データパケットを送信する送信装置と、前記データパケットを受信すると確認応答パケットを前記送信装置へ返送する受信装置とを備える。そして、前記送信装置は、確認応答パケットを受信していない送信済みのデータパケット数が所定数以下になるようにデータパケットの送信を制御する送信手段を備える。また、前記受信装置は、第1のデータパケットを受信してから次に到達する第2のデータパケットを受信するまでの間、前記第1のデータパケットを受信してからの経過時間を計測するタイマと、前記タイマが計測した時間が所定時間以上になった場合、前記所定時間以上データパケットを受信していないことを示す情報を前記送信装置へ送信する手段と、を備える。
【0017】
好適な実施形態では、前記送信装置が、前記所定時間以上データパケットを受信していないことを示す情報を受信すると、前記送信手段は、確認応答パケットを受信していない送信済みのデータパケット数が所定数以上であっても、次のデータパケットを送信するようにしてもよい。
【0018】
好適な実施形態では、前記送信装置が送信するデータパケットには、送信データを分割した分割データが格納されている。また、前記受信装置が送信する確認応答パケットには、前記分割データの受信状況を示す情報が含まれている。そして、前記送信装置は、前記送信手段が送信した、前記分割データを含むデータパケットの送信履歴を記憶する記憶手段と、前記記憶手段に記憶された送信履歴と前記確認応答パケットに含まれている分割データの受信状況とに基づいて、再送が必要な分割データを特定し、前記送信手段へ前記特定された分割データの再送指示をする手段と、をさらに備えるようにしてもよい。
【0019】
好適な実施形態では、前記送信手段は、全データ分のデータパケットの送信後に、前記データ通番と前記送信通番とを含み、データを含まないダミーパケットを送信するようにしてもよい。
【0020】
本発明の一つの実施態様に従う通信装置は、データパケットを受信し、前記受信したデータパケットの送信元の通信装置へ確認応答パケットを送信する受信手段と、前記受信手段が第1のデータパケットを受信してから次に到達する第2のデータパケットを受信するまでの間、前記第1のデータパケットを受信してからの経過時間を計測するタイマと、前記タイマが計測した時間が所定時間以上になった場合、前記所定時間以上データパケットが到達していないことを示す情報を、前記データパケットの送信元へ送信する送信手段と、を備える。
【0021】
本発明の一つの実施態様に従う通信装置は、確認応答パケットを受信していない送信済みのデータパケット数を計数するカウンタと、前記カウンタの値が所定数以下になるようにデータパケットの送信を制御する送信手段とを備える。そして、送信先の通信装置から、所定時間以上データパケットを受信していないことを示す情報を受信すると、前記送信手段は、前記カウンタの値が所定数以上であっても、次のデータパケットを送信する。
【図面の簡単な説明】
【0022】
【図1】本発明の第1の実施形態に係る通信システムの構成を示す図である。
【図2】データ送信パケット50のフォーマットの一例を示す図である。
【図3】確認応答パケット60のフォーマットの一例を示す図である。
【図4】送信装置1と受信装置2との間で行うデータ送受信のシーケンスチャートである。
【図5】データ送信パケットと確認応答パケットとの対応関係を示す図である。
【図6】再送制御部の処理手順を示すフローチャートである。
【図7】最終データでパケットロスが起きたときのデータ送受信のシーケンスチャートである。
【図8】本発明の第2の実施形態に係る通信システムの構成を示す図である。
【図9】送信装置1と受信装置2との間で行うデータ送受信のシーケンスチャートである。
【符号の説明】
【0023】
1…送信装置、2…受信装置、9…ネットワーク、11…データ送信部、12…再送制御部、13…データ記憶部、14…送信履歴記憶部、21…データ受信部、22…データ記憶部、23…バッファ、50…データ送信パケット、60…確認応答パケット。
【発明を実施するための最良の形態】
【0024】
以下、本発明の第1の実施形態に係るデータ通信システムついて、図面を用いて説明する。
【0025】
図1は、本システムを構成する装置を示す。本システムは、データの送信を行う通信装置である送信装置1と、データを受信する通信装置である受信装置2とを備える。送信装置1は、受信装置2に対してデータ送信パケット50(図2参照)を送信する。受信装置2は、データ送信パケット50を受信すると、確認応答パケット60を返信する。送信装置1と受信装置2とは、有線または無線のネットワーク9を介して通信する。本実施形態では、例えば、送信装置1と受信装置2とはUDP(User Datagram Protocol)/IPを用いて通信を行う。
【0026】
送信装置1および受信装置2は、いずれも例えば通信機能を有するコンピュータシステムにより構成することもできる。この場合、以下に説明する送信装置1および受信装置2内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。特に、受信装置2は、例えば、携帯電話機、PDA(Personal Data Assistant)、無線通信機能を備えたパーソナルコンピュータなどでもよい。
【0027】
送信装置1は、同図に示すように、データ送信部11と、再送制御部12と、データ記憶部13と、送信履歴記憶部14とを備える。
【0028】
データ送信部11は、データ記憶部13から送信対象のデータを取得し、データ送信パケット50を生成して、ネットワーク9に対して出力する。
【0029】
データ送信パケット50のフォーマットを、図2に示す。データ送信パケット50は、同図に示すように、ヘッダ部51と、データ部55とを含み、ヘッダ部51には送信通番52と、データ通番53とをさらに含む。
【0030】
送信通番52は、送信装置1が受信装置2に対して送り出すパケットに割り当てられた番号である。送信通番52は、例えば、0から連続する通し番号(通番)であり、各パケットに固有な番号である。送信通番52は、データ通番53およびデータ部55に格納されるデータの内容に関係なく、パケットを送信するたびにインクリメントされていく。後述するように、送信したデータが受信装置2に到達しないパケットロスが生じると、このデータを再送する。このとき、この再送パケットには、到達しなかったパケットとは異なる、再送パケットに固有の送信通番52が付される。
【0031】
データ通番53とは、データ部55に格納されているデータに割り当てられた番号である。データ通番53は、例えば0からの通番である。送信対象のデータは、通常、データ部55のサイズよりも大きいので、データ部55のサイズに分割して送信する。そこで、分割されたデータの並び順を示すために、データ通番53が用いられる。従って、データ通番53は、データ部55に格納されるデータに基づいて定まる。パケットロスが生じたときに、再送対象となるデータはデータ通番53で特定される。
【0032】
また、データ送信部11は、データ送信パケット50に対する確認応答パケット60を受信する。確認応答パケット60のフォーマットを、図3に示す。確認応答パケット60は、同図に示すように、次データ通番61と、受信状況ビット列62と、受信済み送信通番63とを含む。
【0033】
次データ通番61は、受信装置2が次に受信すべきデータ通番を示す。つまり、受信が完了しているデータ通番のうち、連続しているデータ通番の最大値に1を加えた値となる。例えば、受信装置2があるデータ通番(N)までの全データをすでに受信しているときは、次データ通番61は(N+1)となる。
【0034】
受信状況ビット列62は、次データ通番61以降のデータ通番の受信状況を示すビット列である。ここでは、各ビットが一つのデータ通番に対応する。そして、受信済みのデータ通番に対応するビットは「1」、未受信のデータ通番に対応するビットは「0」である。
【0035】
例えば、受信状況ビット列62の最下位ビット(右端)から順に、次データ通番61から受信済みのデータ通番の最大値までのデータ通番を対応させる。従って、最下位ビットは常に「0」(受信済み)であり、最上位ビットは常に「1」(未受信)である。例えば、次データ通番61が「2」であり、データ通番「3」が未受信、データ通番「4」が受信済みで、かつ、受信済みのデータ通番の最大値が「4」であるとき、受信状況ビット列62は「100」(上位ビットからデータ通番「4」「3」「2」に対応する)となる。ただし、パケットロスが起きていないときは、次データ通番61が受信済みのデータ通番の最大値よりも大きいので、このときは、受信状況ビット列62は「0」(1ビット)で表される。
【0036】
受信済み送信通番63は、確認応答パケット60を出力する直前に受信した送信通番を示す。
【0037】
再送制御部12は、確認応答パケット60に基づいて再送が必要なデータを特定し、データ送信部11へ再送を指示する。再送データの特定の仕方の詳細については、後述する。
【0038】
送信履歴記憶部14は、送信ログを記憶する。例えば、データ送信部11がデータ送信パケット50をネットワーク9に対して出力したとき、このパケットのヘッダ部51を送信履歴記憶部14に格納するようにしてもよい。
【0039】
再び図1を参照すると、受信装置2は、データ受信部21と、受信したデータを記憶するデータ記憶部22とを備える。データ受信部21は、受信したデータを一時的に記憶するバッファをさらに備える。
【0040】
データ受信部21は、送信装置1から送られてくるデータ送信パケット50を受信する。データ受信部21は、受信したデータ送信パケット50のデータ通番53およびデータ部55に格納されたデータを、バッファ23に一時格納し、データ通番53の順に並べて組立て、一定のデータ量ごとにデータ記憶部22へ格納する。また、データ受信部21は、データ送信パケット50を受信すると、これに対する確認応答パケット60を生成し、ネットワーク9に対して出力する。この確認応答パケット60の次データ通番61および受信状況ビット列62は、バッファ23を参照して定める。受信済み送信通番63は、直前に受信したデータ送信パケット50の送信通番52である。
【0041】
次に、図4および図5に示す例を用いて、受信装置2で生成される確認応答パケット60、および送信装置1が行う再送制御について説明する。
【0042】
図4は、送信装置1と受信装置2との間で行うデータ送受信についてのシーケンスチャートである。同図では、送信装置1が受信装置2へ、データ送信パケット50を送信している。送信装置1側には、各パケットの送信通番およびデータ通番が示してある。そして、受信装置2が各データ送信パケット50を受信したかどうかを、受信装置2側の受信状況の○×で示している。そして、受信装置2が受信できたデータ送信パケット50に対しては、確認応答パケット60が送信装置1へ返信される。
【0043】
図5は、図4の場合に生成されるデータ送信パケット50のヘッダ部51および確認応答パケット60について示す図である。この図では、ヘッダ部51に示す内容のデータ送信パケット50に対して、受信装置2から出力される確認応答パケット60の内容を対応付けている。
【0044】
まず、送信通番「0」、データ通番「0」のデータ送信パケット50aが送信され、受信装置2がこのパケットの受信に成功する(受信状況「○」)。このとき、確認応答パケット60aは以下のようになる。すなわち、受信済みのデータ通番は「0」であるから、次に受信すべきデータ通番である次データ通番61は「1」となる。パケットロスは生じていないので、受信状況ビット列62は「0」である。データ送信パケット50aの送信通番は「0」であるから、受信済み送信通番63は「0」である。
【0045】
次に、送信通番「1」、データ通番「1」のデータ送信パケット50bが送信され、受信装置2がこのパケットの受信に成功する(受信状況「○」)。このときも、上述と同様に確認応答パケット60b(次データ通番61「2」、受信状況ビット列62「0」、受信済み送信通番63「1」)が生成される。
【0046】
この後、送信通番「2」、データ通番「2」のデータ送信パケット50c、および送信通番「3」、データ通番「3」のデータ送信パケット50dは、受信装置2が受信に失敗しているので、これに対する確認応答パケット60は出力されない。
【0047】
そして、送信通番「4」、データ通番「4」のデータ送信パケット50eが受信装置2に受信されると、確認応答パケット60cが生成される。すなわち、ここで受信したデータ通番は「4」であるが、データ通番「2」「3」は未受信である。一方、すでにデータ通番「0」「1」は受信済みであるから、次データ通番61は「2」となる。そして、データ通番「2」「3」が未受信(「0」)、かつデータ通番「4」が受信済み(「1」)であるから、受信状況ビット列62は「100」となる。また、直前で受信したパケットの受信済み送信通番は「4」であるから、受信済み送信通番63は「4」となる。
【0048】
ここで、図4を参照すると、確認応答パケット60a、60b、60cは、それぞれ、データ通番「3」、「4」、「7」のデータ送信パケットが送信された後に送信装置1へ到達する。
【0049】
以下についても同様に確認応答パケット60が生成され、送信装置1へ返信される。
【0050】
送信装置1が、確認応答パケット60を受信したときの再送制御部12の処理について説明する。
【0051】
再送制御部12は、受信した確認応答パケット60の内容に基づいて、再送制御を行う。例えば、確認応答パケット60の内容に基づいて、再送すべきデータ通番を特定し、データ送信部11に対して再送を指示する。再送指示を受けたデータ送信部11は、その指示に従って再送パケットを生成し、再送する。再送すべきデータ通番を特定するための手順を、図6のフローチャートに示す。以下、同図を用いて説明する。
【0052】
再送制御部12は、受信した確認応答パケット60の次データ通番61と受信状況ビット列62とに基づいて、パケットロスが生じた可能性があるデータ通番53を抽出する(S11)。パケットロスの可能性がないとき(受信状況ビット列62が「0」の場合)は、処理を終了する。
【0053】
パケットロスの可能性があるときは、再送制御部12が送信履歴記憶部14を参照し、パケットロスが生じている可能性のあるデータ通番を送信した直近(最も新しい)の送信通番52を特定する。つまり、このデータ通番について既に再送されている場合には、先に送ったパケットではなく、後で送った(再送した)パケットの送信通番52を取得する。そして、この直近の送信通番52と受信済み送信通番63とを比較する(S12)。
【0054】
そして、直近の送信通番52が受信済み送信通番63より大きくないときは、そのデータ通番53のパケットロスが確定するので、パケットロスが確定したパケットの再送を指示する(S13)。一方、直近の送信通番52の方が受信済み送信通番63より大きいときは、そのデータ通番53のロスは確定しないので、再送指示を行わない(S14)。
【0055】
例えば、図5に示す確認応答パケット60a、60bの場合は、受信状況ビット列が「0」であるから、この時点ではパケットロスが生じた可能性はないので、ステップS11のみで終了する。
【0056】
一方、確認応答パケット60cでは、ステップS11の処理を行うと、受信状況ビット列62が「100」であり、次データ通番61が「2」であるから、データ通番「2」および「3」についてパケットロスが生じている可能性があることが分かる。
【0057】
そして、ステップS12の処理を行うと、パケットロスの可能性があるデータ通番「2」および「3」を送信した直近の送信通番52は、送信履歴記憶部14を参照すると、それぞれ「2」および「3」であることがわかる。そして、確認応答パケット60cの受信済み送信通番63は「4」であるから、直近の送信通番52はいずれも「4」より大きくない。従って、データ通番「2」および「3」は、いずれも再送が必要であると判定される。そして、ステップS13でデータ送信部11がデータ通番「2」および「3」を再送する。
【0058】
この確認応答パケット60cに対する上述の処理は、図4のAのタイミングで行われる。従って、このAの時点でデータ通番「2」および「3」について再送を行うことが決定されたので、データ送信部11がこの直後にデータ送信パケット50f、50gで再送する。
【0059】
これにより、本実施形態では、パケットロスの発生を迅速に検出し、直ちにこれに対応して再送を行うことができる。
【0060】
次に、確認応答パケット60dを受信したときの処理について説明する。この場合でも、図6に示すフローチャートに従って処理が行われる。
【0061】
つまり、確認応答パケット60dを受信すると、再送制御部12は、パケットロスが生じた可能性のあるデータ通番を特定する。確認応答パケット60dを受信するのは、図4中Bのタイミングであり、この場合、次データ通番61が「2」、送信状況ビット列62が「10100」(図5参照)だから、データ通番「2」「3」「5」がパケットロスの可能性がある。
【0062】
次に、データ通番「2」「3」「5」について、送信履歴記憶部14を参照して直近に送った送信通番を特定すると、それぞれの直近の送信通番は「8」「9」「5」となる。これらと確認応答パケット60dの受信済み送信通番63「6」とを比較すると、再送対象は送信通番「5」のデータ通番「5」だけとなる。そこで、再送制御部12は、データ通番「5」についてデータ送信部11に再送指示をする。
【0063】
これは、つまり、データ通番「2」および「3」について再送したデータ送信パケット50f、50gが伝送路中にあり、今後受信装置2へ到達する可能性があることを示している。このような場合には再々送のためのパケットを送らず、パケットロスが確定するのを待つ。これにより、パケットロスが発生したかどうかが未確定の間は、再送が行われない。従って、伝送路中のパケットが不必要に増加することを防止できる。
【0064】
次に、確認応答パケット60eを受信したときの処理について説明する。この場合でも、上述の場合と同様に図6に示すフローチャートに従って処理が行われる。
【0065】
まず、確認応答パケット60eは、次データ通番61が「3」、受信状況ビット列62が「110110」(図5参照)であるから、パケットロスの可能性のあるデータ通番は「2」「5」であることが分かる。ここで、再送制御部12が送信履歴記憶部14を参照して、データ通番「2」および「5」の直近の送信通番をそれぞれ「8」および「5」と特定する。これらと、確認応答パケット60eの受信済み送信通番63「9」(図5参照)とを比較し、データ通番「2」および「5」のいずれも再送を行うよう、データ送信部11へ指示をする。
【0066】
これは、確認応答パケット60dのときと異なり、再送したデータ通番「2」のパケットについてもロスが確定している。従って、データ通番「5」について再送する共に、データ通番「2」について再々送が行われる。
【0067】
次に、最終データの受信確認及び再送制御について、図7を用いて説明する。図4〜図6に示す再送制御では、受信装置2から送られる確認応答パケット60を用いて、データ送信パケットの受信状況を確認している。従って、例えば最終データのデータ送信パケット(最終データパケット)においてパケットロスが生じると、これ以降、確認応答パケットが送信されない。従って、送信装置1は最終データパケットのパケットロスを検出できない。そこで、送信装置1は、最終データパケット送信後に、さらにダミーパケットを送信する。
【0068】
例えば、図7の例では、最終データパケット50mの送信通番が「68」、データ通番が「36」である。ここで、受信装置2は、この最終データパケット50mのデータ通番「36」よりも前のデータをすべて受信済みである。
【0069】
送信装置1は、最終データパケット50mを送信した後、ダミーパケット50n、50pを送信する。ここで送信するダミーパケットの数は、1または2以上である。なお、ダミーパケットは、データ部55にデータが何も入っていない(データ部55のデータ容量が0)のパケットであり、ヘッダ部51には少なくとも送信通番52がセットされている。データ通番53もセットされていてもよい。この場合、ダミーパケットのデータ通番53は、最終データパケット50mから連続する数字としてもよい。これにより、受信装置2では、ダミーパケットであっても通常のデータ部55にデータがセットされているパケットと同様に受信処理を実行できる。
【0070】
ここで、受信装置2が最終データパケット50mを受信できず、パケットロスになったとき、これに対する確認応答パケットが出力されない。しかし、受信装置2が最終データパケット50mの後に送信されたダミーパケット50nを受信すると、これに対する確認応答パケット60nを送信装置1に対して送信する。この確認応答パケット60nには、次データ通番61に「36」、受信データビット列62に「10」、受信済み送信通番63に「69」がセットされている。
送信装置1が確認応答パケット60nを受信すると、再送制御部12が図6に示す手順に従って、最終データパケット50mがロスされていることを検出する。そして、データ送信部11が、データ通番36の再送パケット50qを生成して再送する。データ送信11は、この再送パケット50qでさらにパケットロスが生じたときのために、さらにダミーパケット50rを送信する。そして、送信装置1が、再送した最終データパケット50qに対する確認応答パケット60qを受信すると、データ転送が完了する。
【0071】
次に、本発明の第2の実施形態に係るデータ通信システムについて、図8及び図9を用いて説明する。以下の説明では、第1の実施形態と相違する点を中心に説明する。従って、第1の実施形態と共通する構成については同一の符号を付して、説明を省略することがある。
【0072】
本実施形態にかかるデータ通信システムでも、第1の実施形態と同様に、送信装置1及び受信装置2を備える。送信装置1は、データ送信部11Aと、再送制御部12と、データ記憶部13と、送信履歴記憶部14とを備える。受信装置2は、データ受信部21Aと、データ記憶部22と、バッファ23と、無通信タイマ24とを備える。
【0073】
無通信タイマ24は、受信装置2で受信が途絶えている時間(以下、無通信時間という)を計測するタイマである。つまり、無通信タイマ24は、データ受信部21がデータ送信パケット50を受信してからの経過時間を計測する。そして、データ受信部21が次のデータ送信パケット50を受信すると、それまで計測した時間をクリアして、再び時間計測を開始する。従って、データ送信パケット50の受信が途絶えると、無通信タイマ24が計測する時間、つまり無通信時間がそのまま増え続ける。そこで、無通信タイマ24は、無通信時間が予め定められた所定の時間(以下、再送判定時間という)になると、データ受信部21Aへ通知する。
【0074】
データ受信部21Aは、無通信タイマ24Aから無通信時間が再送判定時間に達したことの通知を受けると、再送判定時間の間無通信であることを示す情報を送信装置1に対して送信する。ここでは、無通信状態を通知するために、最後に送信した確認応答パケット60(図9の例では、データ送信パケット50sに対する確認応答パケット)を再送する。
【0075】
ところで、本実施形態においても、データ送信部11Aはデータ送信パケット50を受信装置2に対して送信し、受信装置2から確認応答パケット60を受信する。データ送信パケット50及び確認応答パケット60は、第1の実施形態と同一のフォーマットで構成されている。従って、送信装置1は確認応答パケット60により、受信装置2での受信状況を把握できる。
【0076】
ここで、データ送信部11Aでは、ウィンドウサイズと呼ばれる、先送りするパケットの個数(確認応答パケット60が返ってきていない、送信済みのデータ送信パケット50の数)が決められている。そして、データ送信部11Aは、この先送りするパケットの個数をカウントするカウンタ11Bを備える。つまり、データ送信部11Aは、送信したデータ送信パケット50の数と受信した確認応答パケット60の数との差を、カウンタ11Bを用いて計数する。そして、カウンタ11Bの値がウィンドウサイズ以下になるようにパケットの送信を制御する。従って、例えばウィンドウサイズが3であれば、データ送信部11Aは、まず3つのデータ送信パケット50を無条件に送信できる。このとき、カウンタ値は「3」である。カウンタ値が「3」のときは、データ送信部11Aは原則として次のパケットを送信できない。そして、データ送信部11Aは、確認応答パケット60を一つ受信すると、カウンタの値を1減らし、次のデータ送信パケット50を一つ送信すると再び1加算する。この結果、データ送信部11Aが、データ転送パケット50を送信したが、確認応答パケット60が返ってきていないパケット数が3以下になるようになっている。
【0077】
ここで、図9を用いて本実施形態に係るデータ通信システムの通信手順を説明する。本実施形態では、ウィンドウサイズは3である。上述の通り、ウィンドウサイズにより、送信装置1が確認応答パケットを待たずに送り出せるパケット数に制限がある。従って、同図に示すように、ウィンドウサイズ以上の数のパケット(50t〜50v)について、連続してパケットロスが生じると、送信装置1からのパケットの送信が停止する。この結果、受信装置2では、データ送信パケット50を受信しない無通信の状態が続く。
【0078】
このとき、受信装置2では無通信タイマ24が無通信時間を計測している。そして、無通信時間が予め定められた再送判定時間以上になると、無通信タイマ24がデータ受信部21へその旨を通知する。データ受信部21は、この通知を受けると、無通信状態が再送判定時間以上継続していることを通知するために、直前に送信した確認応答パケット60sを送信装置1へ再送する。なお、再送が行われたときに無通信タイマ24はクリアされる。そして、無通信タイマ24は、直ちに無通信時間の計測を再開してもよいし、所定時間のインターバルをおいてから無通信時間の計測を再開してもよい。
【0079】
ここで再送された確認応答パケット60sが送信装置1に到達する。ここで、データ送信部11Aが、このパケットが直前に受信した確認応答パケット60sと同一であることを検出すると、受信装置2は無通信状態となっていると判定される。そこで、データ送信部11Aは、ウィンドウサイズを一時的に一つ繰り上げて(ここではウィンドウサイズを4にする)、後続のデータ通番のデータ送信パケット50wを送信する。後続のデータ通番のデータがない場合は、ダミーパケットを送信する。つまり、既にウィンドウサイズ以上のデータ送信パケット50について確認応答パケット60を未受信であっても、送信装置1は後続のパケットを送信する。
【0080】
ここで、受信装置2が後続のデータ送信パケット50wを受信すると、第1の実施形態で説明した手順に従って、これに対する確認応答パケット60wが生成されて、送信装置1へ返信される。
【0081】
送信装置1が、確認応答パケット60wを受信すると、再送制御部12が第1の実施形態と同様にして、この確認応答パケット60wに基づいて再送すべきデータ通番を特定する。そして、データ送信部11も、第1の実施形態と同様に、再送制御部12からの指示により、再送を行う。つまり、同図に示すように、データ通番「2」「3」「4」が、それぞれ再送される。
【0082】
本実施形態では、無通信の状態が所定時間以上継続したときに、これを解消するために、受信装置2が確認応答パケット60を再送している。これは、データ送信パケット50に比べ、確認応答パケット60のサイズが非常に小さく、伝送路にかける負荷が小さくて済むからである。さらに、確認応答パケット60の再送による伝送路への負荷が小さいので、再送判定時間を短くしても、伝送路への負担はそれほど増大しない。
【0083】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【0084】
例えば、上記の実施形態で説明したデータ通信機能は、コンピュータに着脱可能な拡張カードなどに実装し、コンピュータに機能追加するように実現することもできる。

【特許請求の範囲】
【請求項1】
第1の通信装置が、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを、第2の通信装置に対して送信し、
第2の通信装置が前記データパケットを受信すると、前記データパケットの送信通番と、前記データパケットに含まれているデータ通番よりも前のデータの受信状況を示す情報とを含む確認応答パケットを第1の通信装置へ送信し、
第1の通信装置は、前記確認応答パケットに基づいて、再送が必要なデータ通番を特定し、再送を行うデータの再送制御方法。
【請求項2】
送信装置と受信装置とを備えた通信システムであって、
前記送信装置は、
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、
前記データパケットを受信した受信装置が送信した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、
前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備え、
前記受信装置は、
前記送信装置から送信された前記データパケットを受信する手段と、
前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記送信装置へ送信する手段と、を備えた通信システム。
【請求項3】
前記再送を指示する手段は、
前記確認応答パケットに含まれている前記受信状況を示す情報に基づいて、前記送信装置が送信したが、前記受信装置が受信していないデータ通番を抽出し、
前記抽出したデータ通番に係るデータを送信したデータパケットの送信通番を前記記憶手段から取得し、
前記取得した送信通番と、前記確認応答パケットに含まれている送信通番とに基づいて、再送が必要なデータ通番を特定する請求項2記載の通信システム。
【請求項4】
前記受信状況を示す情報は、連続して受信が完了しているデータ通番の最大値と、受信済みデータ通番の最大値との間のデータ通番に係るデータの受信状況を、ビット列で示したものを含む請求項2または3記載の通信システム。
【請求項5】
前記受信装置は、
前記データパケットの受信手段が受信したデータパケットに含まれているデータ通番を一時的に格納するバッファと、
前記バッファを参照して、前記確認応答パケットを生成する手段とを、さらに備える請求項2記載の通信システム。
【請求項6】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、
前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、
前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備えた通信装置。
【請求項7】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信する手段と、
前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する手段と、を備えた通信装置。
【請求項8】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信し、
前記送信したデータパケットの送信履歴を記憶手段に記憶し、
前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信し、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記特定されたデータ通番に係るデータを再送する再送制御方法。
【請求項9】
コンピュータに実行されると、
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信し、
前記送信したデータパケットの送信履歴を記憶手段に記憶し、
前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信し、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記特定されたデータ通番に係るデータを再送する、再送制御のためのコンピュータプログラム。
【請求項10】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信し、
前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する、データの受信応答方法。
【請求項11】
コンピュータに実行されると、
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信し、
前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する、データの受信応答のためのコンピュータプログラム。
【請求項12】
送信装置と受信装置とを備えた通信システムであって、
前記送信装置は、
送信データを分割した分割データごとに送信する送信手段と、
前記送信手段が送信した分割データの送信履歴を記憶する記憶手段と、
一の分割データの受信確認である確認応答であって、前記一の分割データ以前の前記受信装置における受信状況を示す情報を含む確認応答を受信する手段と、
前記記憶手段を参照して、前記受信した確認応答に基づいて再送が必要なデータを特定し、前記送信手段へ前記特定された分割データの再送指示をする手段と、を備え、
前記受信装置は、
前記送信装置から送信された分割データを受信する受信手段と、
前記受信手段が分割データを受信すると、当該受信した分割データ以前の受信状況を示す情報を含む確認応答を生成し、前記送信装置へ送信する確認応答送信手段と、を備えた通信システム。
【請求項13】
データパケットを送信する送信装置と、前記データパケットを受信すると確認応答パケットを前記送信装置へ返送する受信装置とを備えた通信システムであって、
前記送信装置は、
確認応答パケットを受信していない送信済みのデータパケット数が所定数以下になるようにデータパケットの送信を制御する送信手段を備え、
前記受信装置は、
第1のデータパケットを受信してから次に到達する第2のデータパケットを受信するまでの間、前記第1のデータパケットを受信してからの経過時間を計測するタイマと、
前記タイマが計測した時間が所定時間以上になった場合、前記所定時間以上データパケットを受信していないことを示す情報を前記送信装置へ送信する手段と、を備える通信システム。
【請求項14】
前記送信装置が、前記所定時間以上データパケットを受信していないことを示す情報を受信すると、
前記送信手段は、確認応答パケットを受信していない送信済みのデータパケット数が所定数以上であっても、次のデータパケットを送信することを特徴とする請求項13記載の通信システム。
【請求項15】
前記送信装置が送信するデータパケットには、送信データを分割した分割データが格納されていて、
前記受信装置が送信する確認応答パケットには、前記分割データの受信状況を示す情報が含まれていて、
前記送信装置は、
前記送信手段が送信した、前記分割データを含むデータパケットの送信履歴を記憶する記憶手段と、
前記記憶手段に記憶された送信履歴と前記確認応答パケットに含まれている分割データの受信状況とに基づいて、再送が必要な分割データを特定し、前記送信手段へ前記特定された分割データの再送指示をする手段と、をさらに備える請求項14記載の通信システム。
【請求項16】
前記送信手段は、全データ分のデータパケットの送信後に、前記データ通番と前記送信通番とを含み、データを含まないダミーパケットを送信することを特徴とする請求項2に記載の通信システム。
【請求項17】
データパケットを受信し、前記受信したデータパケットの送信元の通信装置へ確認応答パケットを送信する受信手段と、
前記受信手段が第1のデータパケットを受信してから次に到達する第2のデータパケットを受信するまでの間、前記第1のデータパケットを受信してからの経過時間を計測するタイマと、
前記タイマが計測した時間が所定時間以上になった場合、前記所定時間以上データパケットが到達していないことを示す情報を、前記データパケットの送信元へ送信する送信手段と、を備える通信装置。
【請求項18】
確認応答パケットを受信していない送信済みのデータパケット数を計数するカウンタと、
前記カウンタの値が所定数以下になるようにデータパケットの送信を制御する送信手段とを備え、
送信先の通信装置から、所定時間以上データパケットを受信していないことを示す情報を受信すると、
前記送信手段は、前記カウンタの値が所定数以上であっても、次のデータパケットを送信することを特徴とする通信装置。
【請求項19】
データパケットを受信し、
前記データパケットを受信してからの経過時間を計測し、
次のデータパケットを受信するよりも前に前記経過時間が所定時間を越えると、前記所定時間以上データパケットを受信していないことを示す情報を、前記データパケットの送信元の通信装置へ送信する無通信状態の通知方法。
【請求項20】
確認応答パケットを受信していない送信済みのデータパケット数が所定数以下になるようにデータパケットを送信する通信装置が、
前記確認応答パケットを受信していない送信済みのデータパケット数が所定数であるときに、送信先の通信装置から、所定時間以上データパケットを受信していないことを示す情報を受信し、
次に送信すべきデータパケットを送信する通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【国際公開番号】WO2005/027456
【国際公開日】平成17年3月24日(2005.3.24)
【発行日】平成19年11月15日(2007.11.15)
【国際特許分類】
【出願番号】特願2005−513964(P2005−513964)
【国際出願番号】PCT/JP2004/013533
【国際出願日】平成16年9月16日(2004.9.16)
【出願人】(000155469)株式会社野村総合研究所 (1,067)
【Fターム(参考)】