説明

無線通信装置、無線通信方法およびプログラム

【課題】無線リンクエラーが発生した場合でも効率的な無線パケット通信が行える技術提供する。
【解決手段】TCP送信部11による通信中に通信エラーが発生した場合は、コントローラ12はUDP送信部13によっても通信を開始する。これによって、通信エラーによるウィンドウサイズの低下の結果として生じるデータ転送速度の低下を、UDP通信によって補うことができるので、通信エラーが発生した場合でも効率的な通信を行うことが可能となる。なお、UDPによって通信を行っている最中もTCP通信は合わせて行われており、TCP通信のウィンドウサイズが通信エラー発生時のウィンドウサイズまで回復した場合はUDPによる通信を停止することが好ましい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、無線パケット通信技術に関する。
【背景技術】
【0002】
近年、最も普及している通信プロトコルの1つであるTCP(Transmission Control Protocol)では、通信の信頼性を確保するために送信したパケットが届けられたことを確
認するために、受信端末はACK(Acknowledgement)を返すことにしている。1つのパ
ケットを送信するたびにACKを待っていては、ACKを待つ時間が多くなりスループットが向上しない。
【0003】
そこで、ACKの到着を待つことなく、所定の数のパケットをまとめて送信できるようにしている。このパケットの数のことを、ウィンドウサイズという。TCPにおいては、通信開始時にはウィンドウサイズを小さな値(例えば1)として、通信エラーが発生せず正常に通信が完了した場合にはウィンドウサイズを大きくし、通信エラーが発生した場合にはウィンドウサイズを小さくする制御を行っている。このようなウィンドウ制御によって、送信データ量を適切な量に保っている。図9にウィンドウサイズが増加する様子を示した。図に示すように、ウィンドウサイズを増加させることで、1パケットあたりのACKを待つ時間が減少し単位時間あたりの送信できるデータ量(データ転送速度)が向上する。
【0004】
ウィンドウ制御を具体的にどのように行うかについては、様々な研究がなされている。例えば、ウィンドウサイズを上げていく場合には、通信開始初期はウィンドウサイズを2倍にしていき、所定の閾値を超えた後は所定値(例えば1)ずつ上げていく手法が知られている。また、通信エラーが発生した場合も、ウィンドウサイズを1にする方法や、半分にする方法などが知られている。
【0005】
さて、このようなTCPのウィンドウ制御は、有線による通信を前提として設計されている。つまり、通信エラーの発生は輻輳によるものであることを前提としており、通信エラーが発生した場合にはウィンドウサイズを下げることで、データ流量を減らしている。
【0006】
しかし、無線通信の場合には、電波環境の一時的な悪化(フェージングやシャドウイング)などによって、輻輳が生じていないにも拘わらず通信エラー(リンクエラー)が発生する。むしろ、無線通信における通信エラーのほとんどは、輻輳によるものではなく、このような電波環境の悪化によるリンクエラーである。つまり、通信エラーが発生するとウィンドウサイズを小さくするTCPによれば、輻輳が生じていないにも拘わらず、スループットを下げてしまう。このように無線通信にTCPを単に適用すると、効率的な通信を行うことができない。
【0007】
図10(a)(b)にウィンドウサイズの変化する様子を示した。図10(a)は通信エラーが輻輳によってのみ生じる場合のウィンドウサイズの変化であり、図10(b)は通信エラーがリンクエラーによっても生じる場合のウィンドウサイズの変化である。図10(b)の場合には、リンクエラーによって、ウィンドウサイズが比較的小さいなときにさらに小さくする制御が行われてしまい、スループットが低くなってしまう。
【0008】
このようなリンクエラーによる悪影響を抑えるために、ネットワーク側の機器に修正を加える手法が提案されている(非特許文献1)。また、コネクションを携帯電話機から基地局までと,基地局から携帯電話機までの2つの部分に分割し、基地局から携帯電話まで
の間は無線環境に適合した通信プロトコルを用いる手法が提案されている(非特許文献2)。また、基地局にTCPセグメントをキャッシングする機能を持たせ、ハンドオフ時に通信エラーが発生したパケットをキャッシングした基地局から再送する手法が提案されている(非特許文献3)。また、ウィンドウ制御をレート制御型にして、リンクエラーによるパケットロスの影響を受けにくくする手法も提案されている(非特許文献4)。
【非特許文献1】K. Xu, Y. Tian and N. Ansari, "TCP-Jersey for Wireless IP Communications", IEEE JSAC, Vol. 22, no. 4, pp.747-756, May 2004.
【非特許文献2】A. Bakre and B. Badrinath, "I-TCP: Indirect TCP for Mobile Hosts", Proc. of 15th IEEE International Conference on Distributed Computing System (ICDCS '95), pp.136-143, Vancouver, Canada, May 1995.
【非特許文献3】H. Balakrishnan, S. Seshan and R. Katz, "Improving reliable transport and handoff performance in cellular wireless networks", ACM Wireless Networks, Vol. 1, Issue 4, pp.469-481, Feb. 1995.
【非特許文献4】P. Sinha, N. Venkitaraman, R. Sivakumar, V. Bharghavan, "WTCP: A Reliable Transport Protocol for Wireless Wide-Area Networks," Proc. ACM MOBICOM'99, pp.231-241, Aug. 1999.
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、上記従来技術の非特許文献1のようにネットワーク側の機器に修正を加えることは、コストや安定性の面から現実的に困難である。また、非特許文献2や3も同様に基地局に修正を加える必要がある。また、これらは携帯電話網という特定の無線媒体のみに適用できる技術である。
【0010】
また、非特許文献4に記載の技術では、TCPのウィンドウ制御方式を変更しているため、TCPライブラリあるいはOSに変更を加える必要がある。TCPの実装方法を変更しユーザに配布することは、アプリケーションプログラム作成者としては困難であり、既存のTCP実装に変更を加えないことが好ましい。
【0011】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、通信エラーが発生した場合でも効率的な無線パケット通信が行える技術を提供することにある。
【課題を解決するための手段】
【0012】
上記目的を達成するために本発明に係る無線通信装置は、第1の送信手段と、第2の送信手段と、通信制御手段とを有し、これらの各手段を用いて無線パケット通信を行う。
【0013】
第1の送信手段は、通信エラーを検知可能であり、通信エラーの有無に基づいてデータ転送速度(単位時間あたりに送信するデータの量)の制御を行うプロトコルにしたがってパケットの送信を行う。ここで、通信エラーは、送信したパケットが受信端末まで到達しなかった場合と、送信したパケットが受信端末まで到達したがパケットの中身が壊れている場合と、送信したパケットが受信端末まで到達したが確認応答が送信端末まで戻ってこなかった場合とを含む。第1の送信手段は、通信エラーの有無に基づいて、通信エラーが発生していない場合はデータ転送速度を増加させ、通信エラーが発生した場合はデータ転送速度を減少させる処理を行う。なお、通信エラーの発生は、送信したパケットが受信端末まで到達したことを所定の時間(再送待ち時間)内に確認できないことや、受信端末から明示的に再送要求を受けたことによって検知可能である。
【0014】
第2の送信手段は、データ転送量の制御を行わないプロトコルにしたがってパケットを送信する。第2の送信手段のデータ転送速度は、通信エラーが発生した際の第1の送信手段におけるデータ転送速度よりも速いことが好ましい。
【0015】
なお、第1の送信手段のプロトコルの具体例として、TCP(Transmission Control Protocol)やSCTP(Stream Control Transmission Protocol)を挙げることができる
。また、第2の送信手段のプロトコルの具体例として、UDP(User Datagram Protocol)を挙げることができる。もっとも、第1および第2の送信手段のプロトコルとして、これら以外のプロトコルを用いることが可能である。
【0016】
通信制御手段は、第1の送信手段がパケットを送信している際に通信エラーが発生した場合は、第1の送信手段が送信するパケットを、第2の送信手段によっても送信する制御を行う。ここで、第2の送信手段によって送信されるパケットは、第1の送信手段によって送信するべきパケットのうち、未送信のパケットおよび送信したが受信端末まで到達したか不明なパケットであることが好ましい。
【0017】
このように、本発明に係る無線通信装置によれば、通信エラーが発生して第1の送信手段によるデータ転送速度が下がった場合であっても、通信制御手段が第2の送信手段を用いてデータの送信を行うため、通信エラーが発生した場合であっても、データ転送速度を下げずに効率的な無線パケット通信を行うことができる。
【0018】
ここで、本発明における通信制御手段は、第2の送信手段によってパケットの送信を開始した後に、第1の送信手段によるデータ転送速度が所定のデータ転送速度まで回復した場合は、第2の送信手段によるパケットの送信を停止することが好適である。所定のデータ転送速度としては、通信エラーが発生した際の第1の送信手段におけるデータ転送速度を用いることが好適である。もっとも、所定のデータ転送速度としてその他の値を用いても良い。
【0019】
また、本発明における通信制御手段は、第1の送信手段による送信における通信エラーが輻輳によるものであると判断した場合は、前記第2の送信手段によるパケットの送信を停止することが好適である。通信エラーが輻輳によるものである場合には、第2の送信手段によってパケットを送信すると、第1の送信手段がデータ転送速度を下げても輻輳を解消することが困難となる。そこで、輻輳が発生した場合には、通信制御手段は第2の送信手段によるパケットの送信を停止させる。通信エラーが輻輳によるものであるか否かは、第1の送信手段のデータ転送速度の変化に基づいて判断することができる。具体的には、第1の送信手段のデータ転送速度が所定の増加率以上で増加した場合は、通信エラーが輻輳によるものではないと判断することができる。
【0020】
また、本発明に係る無線通信装置は、第2の送信手段が送信したパケットが送信先(受信端末)まで到達したことを確認する送達確認手段をさらに備えることが好適である。この場合、本発明に係る無線通信装置は、第2の送信手段が送信したパケットが送信先まで到達したことが確認できなかった場合には、このパケットを第2の送信手段によって再送することが好ましい。この送達確認手段および再送処理によって、確実なパケット送信を行うことができる。
【0021】
なお、本発明は、上記手段の少なくとも一部を有する無線通信装置として捉えることができる。また、本発明は、上記処理の少なくとも一部を含む無線通信方法、または、かかる方法を実現するためのプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【0022】
例えば、本発明の一態様としての無線通信方法は、通信エラーが発生していない場合はデータ転送速度を増加し、通信エラーが発生した場合はデータ転送速度を減少するプロトコル、にしたがってパケットを送信する第1の送信手段と、データ転送速度の制御を行わ
ないプロトコルにしたがってパケットを送信する第2の送信手段と、を有する無線通信装置が行う無線通信方法であって、前記第1の送信手段によって、パケットの送信を開始するステップと、前記第1の送信手段によるパケット送信において通信エラーが発生した際に、前記第1の送信手段が送信するパケットを、前記第2の送信手段によっても送信するステップと、を含むことを特徴とする。
【0023】
また、本発明の一態様としてのプログラムは、通信エラーが発生していない場合はデータ転送速度を増加し、通信エラーが発生した場合はデータ転送速度を減少するプロトコル、にしたがってパケットを送信する第1の送信手段と、データ転送速度の制御を行わないプロトコルにしたがってパケットを送信する第2の送信手段と、を有する無線通信装置に対して無線通信を実行させるプログラムであって、前記第1の送信手段によって、パケットの送信を開始するステップと、前記第1の送信手段によるパケット送信において通信エラーが発生した際に、前記第1の送信手段が送信するパケットを、前記第2の送信手段によっても送信するステップと、を実行させることを特徴とする。
【発明の効果】
【0024】
本発明によれば、無線パケット通信において、通信エラーが発生した場合でも効率的な通信を行うことが可能となる。
【発明を実施するための最良の形態】
【0025】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0026】
図1は、本実施形態に係る無線通信装置の機能ブロックを示す図である。図1には、データを送信する無線通信装置(以下、送信端末ともいう)10と、データを受信する無線通信装置(以下、受信端末ともいう)20の機能ブロックが示されている。なお、本実施形態においては、各無線通信装置はデータの送受信の両方を行う。すなわち、本実施形態に係る無線通信装置は、図1における送信端末10および受信端末20としての機能の両方を有するが、以下では説明の簡略化のために、無線通信装置10から無線通信装置20への一方向の通信が行われるものとして説明する。
【0027】
送信端末10は、TCP送信部11とコントローラ12とUDP送信部13とアプリケーション14とを有する。以下、各機能部について説明する。
【0028】
TCP送信部11は、アプリケーション14からの要求に応じて、送信データを分割して受信端末20に送信する。TCP送信部11は、TCPプロトコルにしたがって、TCPパケットの送信を行う。背景技術の欄で説明したように、TCPではリンクエラーと輻輳とを区別せずに、通信エラー発生時にはウィンドウサイズを減少させてデータ転送速度を低下させる。
【0029】
コントローラ12は、TCP送信部11による通信の通信エラーを検知して、通信エラーが発生した場合にはUDP送信部13によってもデータの送信を開始する制御を行う。コントローラ12は、TCPによる通信エラーの発生を、TCP送信部11から通知を受けたり、端末間でやりとりされるパケットを見たりすることによって検知することができる。また、コントローラ12は、UDP送信部13を用いたデータ送信を開始した後に、所定の条件を満たした場合にはUDPによる送信を停止する処理を行う。送信停止の具体的条件などの処理の詳細については後述する。
【0030】
UDP送信部13は、コントローラ12からの指示に基づいて、受信端末20へと送信するデータをTCP送信部11から取得してUDPプロトコルにしたがって送信する。
【0031】
一方、受信端末20は、TCP受信部21とコントローラ22とUDP受信部23とアプリケーション24とを有する。TCP受信部21は、送信端末10のTCP送信部11からのTCPパケットを受信する。UDP受信部23は、送信端末10のUDP送信部13からUDPパケットが送信される場合に、これを受信する。コントローラ22は、TCP受信部21とUDP受信部23が受信したパケットの順序を適切な順序に並び替えて、アプリケーションバッファに格納して、アプリケーション24へと渡す。
【0032】
上記の無線通信装置は、ハードウェア構成としては、CPU(中央演算処理装置)、RAMなどの主記憶装置、ハードディスク装置などの補助記憶装置から構成される。そして、補助記憶装置に格納されたプログラムが主記憶装置にロードされ、CPUによって実行されることによって、上記の各機能部が実現される。なお、各機能部の一部または全部は専用のチップによって構成されても良い。
【0033】
<処理フロー>
次に、図面を用いて各機能部が行う処理について詳細に説明する。
【0034】
1.受信端末の初期化処理
まず、受信端末20が送信端末10からのデータを受信できるようにするための初期化処理を行う。この受信端末20の初期化処理を図2のフローチャートを用いて説明する。受信端末20は、まず、TCP受信部21を起動し(S201)、TCP送信部11からのTCPパケットを受信できるようにする。TCP受信部21は所定のポート番号でTCPパケットを待つ。次に、コントローラ22を起動し(S202)、さらにUDP受信部23を起動する(S203)。UDP受信部23により、UDP送信部13からのUDPパケットを受信できるようになる。また、コントローラ22は、TCP受信部21とUDP受信部23とから受信したパケットから送信端末10が送信したデータを組み立てることができるようになる。
【0035】
2.送信端末におけるTCP通信の監視処理
図3は、送信端末10におけるTCP通信の監視処理を示すフローチャートである。送信端末10において、コントローラ12がTCP送信部11から受信端末20へのTCP通信の開始を検知すると、図3に示すTCP通信の監視処理を開始する。コントローラ22は、TCP送信部11による受信端末20へのSYNパケットの送信に基づいてTCP通信の開始を判断しても良く、TCP送信部11からTCP通信の開始を通知されても良い。なお、TCP送信部11が複数のTCPコネクションを有する場合には、コントローラ12はTCPコネクションそれぞれについて監視処理を行う。
【0036】
TCP送信部11が受信端末20に対してTCP通信を開始すると、コントローラ12はそのTCPコネクションに対応するIDを作成する(S301)。このIDのことを、以下では、コントローラコネクションID(CCID)という。次に、コントローラ12は、このCCIDとTCPコネクションのポート番号をUDP送信部13を用いて受信端末20へ送信する(S302)。これにより、受信端末20は、TCPコネクションに割り当てられたCCIDを認識することができるようになり、CCIDからTCPコネクションを特定できるようになる。
【0037】
次に、コントローラ12は、TCP通信が終了したか判定し(S303)、終了した場合(S303−YES)には、このTCPコネクションに対する監視処理を終了する。TCP通信が継続している場合(S303−NO)は、このTCP通信で通信エラーが発生したか判定する(S304)。コントローラ12は、TCP送信部11とTCP受信部21との間でやりとりされるパケットを見ることによって通信エラーの発生を検知しても良く、また、TCP送信部11から通知されることで通信エラーの発生を検知しても良い。
通信エラーが発生していない場合(S304−NO)は、S303に戻りTCP通信が続いているかと通信エラーが発生したかを監視する。
【0038】
TCP通信で通信エラーが発生した場合(S304−YES)は、コントローラ12は通信エラー発生直前の輻輳ウィンドウ値cwndをcwnd_goalとして記憶する(S305)。そして、コントローラ12はUDP送信部13に、TCP送信部11が送信すべきパケットを送信するように指示する。具体的には、UDP送信部13は、送信すべきパケットをTCP送信部11から取得する(S306)。TCP送信部11は、未送信のパケットを送信バッファに、送信したがACKが返ってきていないパケットを再送バッファに格納しているので、UDP送信部13は再送バッファおよび送信バッファから送信すべきパケットを取得することができる。そして、UDP送信部13は、このパケットを送信する(S307)。なお、UDP送信部13が送信するパケットの構造は、図4に示すように、送信するデータ44の前にCCID42とシーケンス番号43とを付加している。シーケンス番号43はTCP送信部11が用いるシーケンス番号と同じものであり、送信データの何バイト目に相当するかを示すものである。UDP送信部13は、CCID42とシーケンス番号43を付加したデータ44に、UDPヘッダ41をさらに付加して送信する。
【0039】
S306において、UDP送信部13がパケットを送信すると、送信したパケットを再送バッファに格納して到達確認処理を開始する。なお、この到達確認処理はUDP送信部13によるパケット送信処理と並行して実行されるものであり、到達確認処理が開始されると、本ルーチンにおける処理はS308へと進む。到達確認処理については後述する。
【0040】
さて、このようにTCP通信において通信エラーが発生した場合には、送信すべきデータをUDPによって送信しているが、この間もTCP送信部11はデータの送信を継続している。ただし、TCP送信部11は、通信エラーの発生によりcwndを低下させて通信を継続している。このcwnd値は、時間の経過とともに回復(増加)することが期待される。そこで、コントローラ12は、現在のcwnd値がS305で記憶したcwnd_goal以上であるか判定する(S308)。cwnd値がcwnd_goalまで回復していない場合(S308−NO)には、S306に進みUDP送信部13によるパケットの送信を継続する。cwnd値がcwnd_goalまで回復した場合(S309−YES)には、S303に進み、UDPによる送信を中止しTCP通信の終了および通信エラーの発生を監視する。
【0041】
次に、先述したS307におけるUDP送信の到達確認処理を、図5のフローチャートを用いて説明する。この到達確認処理は、UDPの送信処理とは並行して動作するものであり、具体的には別スレッドとして実行される。到達確認処理が実行されると、まずタイマーを起動する(S501)。このタイマーのことをここではACKタイマーという。次に、UDPで送信したパケットに対するACKを受信端末20から受け取ったかを判定する(S502)。UDPにはACKについての規定はないので、送信側のコントローラ12と受信側のコントローラ22とに独自に実装する。ACKを受信した場合(S502−YES)は、送信したパケットが受信端末20まで到達したことが分かるので到達確認処理を終了する。ACKを受信していない場合(S502−NO)は、ACKタイマーがRTT(Round Trip Time:往復遅延時間)以上経過しているか判定する(S503)。R
TTはTCP送信部11が決定しているので、UDP送信部13はTCP送信部11からRTTを取得することができる。もっとも、ACKの待ち時間としてはRTTではなくてその他の任意の値を用いることもできる。
【0042】
待ち時間がRTT以上経過していない場合(S503−NO)は、S502に戻ってさらにACKを待つ。待ち時間がRTT以上経過した場合(S503−YES)は、パケッ
トの再送を行う(S504)。この際、再送したパケットに対しても到達確認処理を行う。
【0043】
このようにして、UDPによる送信に対して到達確認処理を行うことで、本来信頼性の無いUDPにおいて、信頼性(到達の保証)を得ることができる。本無線通信装置では、TCP通信のスループット低下したときに、UDPを併用してデータの送信を行いスループットの低下を防止しているので、UDP通信にも信頼性があることが好ましい。もっとも、TCP通信自体は中止せずに続行しているので、信頼性はTCP通信によって担保できる。したがって、UDP通信では到達確認処理を行わなくても構わない。
【0044】
3.受信端末における受信処理
次に、受信端末20における受信処理について説明する。ここでは、主にUDP受信部23とコントローラ22の処理について説明する。なお、TCP受信部21は、通常のTCPプロトコルにしたがって受信処理を行っている。
【0045】
UDP受信部23がUDPパケットを受信する(S601)と、UDP受信部23は、このパケットの対する到達確認メッセージ(ACK)を送信端末10へ送信する(S602)。受信したパケットがどのTCPコネクションに対応するものであるかは、UDPパケットに格納されているCCIDを調べることで判断することができる。
【0046】
次に、コントローラ22は、このパケットが既に受信したパケットが重複して送信されたものではないか判定する(S603)。TCP受信部21およびUDP受信部23によって受信されたパケットは受信バッファに格納されており、それぞれのパケットはシーケンス番号によって識別することができる。受信したパケットが重複したものである場合(S603−YES)は、そのパケットを破棄し(S606)、次のパケットを受信する。受信したパケットが重複したものではない場合(S603−NO)は、パケットの順序制御をしてアプリケーションバッファに書き込む(S604)。すなわち、パケットの到達順序が入れ替わった場合には、コントローラ22で正しい順序に直してからアプリケーションバッファに書き込むことで、パケットの順序を保証する。具体的には、TCP受信部21およびUDP受信部23が受信したパケットを受信バッファに一旦格納し、次にアプリケーションバッファに書き込むパケットをコントローラ22が受信バッファから取得すれば順序を保証することができる。そして、TCPコネクションが有効であるか判定し(S605)、有効であれば(S605−YES)UDPパケットの受信を継続し、無効であれば(S605−NO)処理を終了する。
【0047】
<実施形態の作用・効果>
上記のような処理によって、TCP通信で通信エラーが発生したときに、UDPでデータの送信を行うことが可能となる。ここで、TCP通信は、通信エラーの発生によりウィンドウサイズを減少させ、データの転送速度が低下する。この転送速度が低下したときに、UDP通信を行うことでデータ転送速度の低下を防ぐことが可能となる。
【0048】
特に、電波環境の悪化などによりリンクエラーが発生した場合には、データの転送速度を落とす必要はない。そこで、TCP通信のデータ転送速度が回復するまでの間UDP通信も並行して行うことで、リンクエラーが発生した場合でも効率的な無線パケット通信を行うことができる。
【0049】
なお、本実施形態に係る無線通信装置では、従来のTCPプロトコルおよびUDPプロトコルに修正を加えずそのまま利用している。そのため、無線媒体(例えば、携帯電話網や衛星通信)の種類に拘わらず、どのような無線媒体にも適用することが可能である。また、ネットワーク側の装置に修正を加える必要がない。すなわち、送受信端末のプログラ
ムのみによって、リンクエラーがあってもデータ転送速度が低下しない無線通信を実現することができる。
【0050】
<変形例1>
上記の処理は、無線通信による通信エラーのほとんどがリンクエラーによるものであることを前提としている。したがって、TCP通信において通信エラーが発生した場合は、UDPによっても同時に通信を開始していた。しかしながら、無線通信においても輻輳が発生することがあり得る。この場合、UDPによっても同時に通信を開始するとさらなる輻輳を招き好ましくない。
【0051】
輻輳が発生することを考慮して、送信端末10におけるTCP通信の監視処理を図7のフローチャートに示す処理に修正することが好ましい。図3と図7のフローチャートに示す処理の差は、図7のフローチャートにS305の後にS701が付け加えられた点のみである。S701では、輻輳ウィンドウ値cwndの増加Δcwndが所定の値Δ以上であるか否か判定している。すなわち、輻輳ウィンドウ値が所定値以上回復したか否か判定している。そして、輻輳ウィンドウ値の回復が早い(S701−YES)場合はUDPによる送信を続行し、回復が遅い(S701−NO)場合にはUDPによる送信を停止している。これは、通信エラーがリンクエラーによるものである場合には輻輳ウィンドウ値は早期に増加するのに対して、通信エラーが輻輳によるものである場合には輻輳ウィンドウ値の増加に時間がかかるためである。
【0052】
なお、図7のフローチャートでは輻輳ウィンドウ値の増加量Δcwndを毎回調べているが、通信エラーの発生からの経過時間をタイマーによって計測し、所定時間後に1回または数回だけ調べるようにしても良い。
【0053】
<変形例2>
上記の実施形態においては、通信エラーが発生した場合は、TCP送信部11とUDP送信部13とで同じパケットを2回送信している。通信エラー発生時は、TCP通信はウィンドウサイズを減少させるのでUDP通信の方が高速となる。UDP通信によって送信され、受信端末20への到達が確認されたパケットについてはTCP送信部11で送信する必要がない。したがって、UDP通信によって既に受信端末20へ到達が確認されたパケットをTCP送信部11は送信しなくても良い。
【0054】
この処理は以下のようにして実現することができる。送信端末10側では、コントローラ12がTCP送信部11に通知して、TCP送信部11がこのパケットを送信済みと見なせるようにすればよい。また、受信端末20側では、コントローラ22がTCP受信部21に通知して、TCP受信部21がこのパケットを受信済みと見なせるようにすればよい。なお、この処理はUDPパケットの到達が確認されるたびに行っても良く、送信端末10がUDPによる送信を停止するときのみ行っても良い。特に、送信端末10がUDPによる送信を停止するときに上記の処理を行うことで、UDPで既に送信したパケットを送り続けることが無くなるので、スループットが向上する。
【0055】
<変形例3>
上記の実施形態においては、送信端末10のアプリケーション14は基本的にTCP送信部11とやりとりを行い、受信端末20のアプリケーション24は基本的にTCP受信部21とやりとりを行う構成を採っている。そして、コントローラ12,22は、基本的にアプリケーション14,24と直接やりとりをしていない。
【0056】
しかしながら、コントローラがTCPとUDPによる通信をラップして、アプリケーションと直接やりとりをする構成を採用することもできる。図8は、このような構成による
無線通信装置の機能ブロック図である。送信端末30のアプリケーション34は、コントローラ32に対してデータの送信を指示する。コントローラ32は、まずTCP送信部31によってデータの送信を行い、TCPで通信エラーを発生した場合にはUDP送信部33も使ってデータの送信を行う。受信端末40では、TCP受信部41とUDP受信部43とによってデータの受信を行い、コントローラ42がパケットの順序制御を行い、アプリケーション44に受信データを渡す。具体的な処理の流れは上記の説明とほぼ同様であるため詳しい説明は省略する。
【0057】
<変形例4>
上記の実施形態においては、プロトコルとしてTCPとUDPを利用している。しかしながら、TCPの代わりに、通信エラーの発生を検知してデータ転送速度を制御するプロトコルであればどのようなプロトコルを用いることもできる。そのようなプロトコルとしては、既存のものであれば、SCTPを挙げることができる。
【0058】
また、UDPの代わりにデータ転送速度の制御を行わないプロトコルであればどのようなプロトコルを用いることもできる。既存のプロトコルとしてはUDPが最も適したものではあるが、その他のプロトコルの使用を妨げるものではない。
【図面の簡単な説明】
【0059】
【図1】本実施形態に係る無線通信装置の機能ブロックを示す図である。
【図2】受信端末の初期化処理の流れを示すフローチャートである。
【図3】送信端末におけるTCP通信の監視処理の流れを示すフローチャートである。
【図4】UDP送信部が送信するパケットの構造を示す図である。
【図5】送信端末におけるUDPパケットに対する到達確認処理の流れを示すフローチャートである。
【図6】受信端末におけるUDPパケット受信時の処理の流れを示すフローチャートである。
【図7】送信端末におけるTCP通信の監視処理の流れを示すフローチャートである。
【図8】変形例に係る無線通信装置の機能ブロックを示す図である。
【図9】ウィンドウ制御を説明する図である。
【図10】(a)は通信エラーが輻輳のみによる場合のウィンドウサイズの変化を示す図であり、(b)は通信エラーがリンクエラーによっても生じる場合のウィンドウサイズの変化を示す図である。
【符号の説明】
【0060】
10 送信端末
11 TCP送信部
12 コントローラ
13 UDP送信部
20 受信端末
21 TCP受信部
22 コントローラ
23 UDP受信部

【特許請求の範囲】
【請求項1】
無線パケット通信を行う無線通信装置であって、
通信エラーが発生していない場合はデータ転送速度を増加し、通信エラーが発生した場合はデータ転送速度を減少するプロトコル、にしたがってパケットを送信する第1の送信手段と、
データ転送速度の制御を行わないプロトコルにしたがってパケットを送信する第2の送信手段と、
前記第1の送信手段がパケットを送信している際に通信エラーが発生した場合は、前記第1の送信手段が送信するパケットを前記第2の送信手段によっても送信する通信制御手段と、
を有することを特徴とする無線通信装置。
【請求項2】
前記通信制御手段は、前記第2の送信手段によってパケットの送信を開始した後に、前記第1の送信手段によるデータ転送速度が前記通信エラー発生時のデータ転送速度まで回復した場合に、前記第2の送信手段によるパケットの送信を停止する
ことを特徴とする請求項1に記載の無線通信装置。
【請求項3】
前記通信制御手段は、前記第1の送信手段による送信における前記通信エラーが輻輳によるものと判断した場合は、前記第2の送信手段によるパケットの送信を停止する
ことを特徴とする請求項1または2に記載の無線通信装置。
【請求項4】
前記通信制御手段は、前記第1の送信手段のデータ転送速度が所定の増加率以上で増加した場合は、前記第1の送信手段における通信エラーが輻輳によるものではないと判断する
ことを特徴とする請求項3に記載の無線通信装置。
【請求項5】
前記第2の送信手段が送信したパケットが送信先まで到達したことを確認する送達確認手段をさらに備える
ことを特徴とする請求項1〜4のいずれかに記載の無線通信装置。
【請求項6】
前記送達確認手段によって前記第2の送信手段が送信したパケットが送信先まで到達したことが確認できなかった場合には、該パケットを前記第2の送信手段によって再送する
ことを特徴とする請求項5に記載の無線通信装置。
【請求項7】
前記第1の送信手段はTCPプロトコルにしたがってパケットを送信し、
前記第2の送信手段はUDPプロトコルにしたがってパケットを送信する
ことを特徴とする請求項1〜6のいずれかに記載の無線通信装置。
【請求項8】
通信エラーが発生していない場合はデータ転送速度を増加し、通信エラーが発生した場合はデータ転送速度を減少するプロトコル、にしたがってパケットを送信する第1の送信手段と、
データ転送速度の制御を行わないプロトコルにしたがってパケットを送信する第2の送信手段と、を有する無線通信装置が行う無線通信方法であって、
前記第1の送信手段によって、パケットの送信を開始するステップと、
前記第1の送信手段によるパケット送信において通信エラーが発生した際に、前記第1の送信手段が送信するパケットを、前記第2の送信手段によっても送信するステップと、
を含むことを特徴とする無線通信方法。
【請求項9】
通信エラーが発生していない場合はデータ転送速度を増加し、通信エラーが発生した場
合はデータ転送速度を減少するプロトコル、にしたがってパケットを送信する第1の送信手段と、
データ転送速度の制御を行わないプロトコルにしたがってパケットを送信する第2の送信手段と、を有する無線通信装置に対して無線通信を実行させるプログラムであって、
前記第1の送信手段によって、パケットの送信を開始するステップと、
前記第1の送信手段によるパケット送信において通信エラーが発生した際に、前記第1の送信手段が送信するパケットを、前記第2の送信手段によっても送信するステップと、
を実行させることを特徴とするプログラム。

【図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

【図10】
image rotate


【公開番号】特開2008−5390(P2008−5390A)
【公開日】平成20年1月10日(2008.1.10)
【国際特許分類】
【出願番号】特願2006−175106(P2006−175106)
【出願日】平成18年6月26日(2006.6.26)
【出願人】(502087460)株式会社トヨタIT開発センター (232)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】