(57)【要約】  ネットワークの状態を特定する精度を向上させることができる通信状態判定装置などを提供する。  本発明の一態様に係る通信状態推定装置は、与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する推定手段と、を備える。
2015194134.tif 000002
【特許請求の範囲】
【請求項１】
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する推定手段と、
を備える通信状態推定装置。
【請求項２】
前記推定手段は、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信をできるようになるまでの時間を推定し、当該時間に基づき前記通信装置が前記通信をできるか否かを推定する
請求項１に記載の通信状態推定装置。
【請求項３】
前記設定手段は、異なる複数の通信パラメータを前記通信装置に送信し、
前記検出手段は、前記複数の通信パラメータの各々について、当該通信パラメータに応じて判定された前記通信エラーの発生を検出する
請求項１又は２に記載の通信状態推定装置。
【請求項４】
前記設定手段は、前記通信装置が前記通信をできないと推定された場合、再接続指示を受信するのに応じて前記通信先装置に再接続する前記通信装置に、前記再接続指示を送信する
請求項１乃至３のいずれかに記載の通信状態推定装置。
【請求項５】
前記通信は、前記通信先端末とコネクションを確立する通信を含む
請求項１乃至４のいずれかに記載の通信状態推定装置。
【請求項６】
前記通信は、データを送信する又は受信する通信を含む
請求項１乃至５のいずれかに記載の通信状態推定装置。
【請求項７】
請求項１乃至６のいずれかに記載の通信状態推定装置と、前記通信装置と、を含む通信端末。
【請求項８】
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与え、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出し、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する、
通信状態推定方法。
【請求項９】
コンピュータを、
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かの推定を行う推定手段と、
して動作させる通信状態推定プログラムを記憶する記録媒体。
【請求項１０】
前記推定が、前記通信パラメータ及び前記通信エラーの発生の有無に基づき前記通信をできるようになるまでの時間として予測した時間に基づいて行われる
通信状態推定プログラムを記憶する請求項９に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信環境を推定する技術に関する。
【背景技術】
【０００２】
近年、例えば、車車間通信の通信手段、ネットワークインフラの無い僻地における通信、及び、災害時における通信手段として、モバイルアドホックネットワーク（Ｍｏｂｉｌｅ  Ａｄ−Ｈｏｃ  Ｎｅｔｗｏｒｋｓ、ＭＡＮＥＴ）が注目されている。ＭＡＮＥＴには、多数の通信端末（ノード）が無線接続されることが望まれている。【０００３】
ＭＡＮＥＴでは、通信端末の移動及び無線接続を想定されている。そのため、通信端末の移動や無線干渉によって、パケット（通信データ）のロス、通信遅延の増加、そしてさらに通信の断絶等の障害が発生することがあり得る。そのような場合、既存の通信プロトコルが上手く動作しない。【０００４】
例えば、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）は、有線環境で利用されている一般的な通信プロトコルである。ＴＣＰは、コネクション型プロトコルと呼ばれる。ＴＣＰの特徴は、例えば、通信セッションの確立、通信速度の制御、及び、パケットの再送制御を行うことである。ＴＣＰをＭＡＮＥＴ環境で利用した場合、高い確率で発生するパケットロス及び通信の断絶のために、通信が上手く機能しないことがわかっている。【０００５】
通信が機能しないそのような状態を回避する技術の例が、特許文献１に開示されている。特許文献１に記載されている無線通信装置は、ＴＣＰのウィンドウサイズを監視する。その無線通信装置は、輻輳状態が発生したと判断した場合、別の通信プロトコルであるＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）を使用する。特許文献１には、ＴＣＰによる通信とＵＤＰによる通信を並行して行うことにより、通信を継続する方法も記載されている。【０００６】
特許文献２には、複数の同時無線接続間の干渉を減らすように、無線接続のパラメータを制御する通信装置が記載されている。【０００７】
特許文献３には、予想スループットに基づいて送信パラメータを選択する通信システムが記載されている。その通信システムは、予想エラーレート及びデータ送信レートに基づいて、予想スループットを求める。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第４７５４４１６号公報
【特許文献２】特表２００８−５２１３０９号公報
【特許文献３】特表２０１２−５０９６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
車車間通信のようなすれ違い通信、又は、通信リンクが頻繁に断絶するような環境では、パケットが届かない状況がしばらく続くことがある。このような場合、ＴＣＰによる通信の性能は、パケットの不達によって劣化する。加えて、ＴＣＰによる通信では、パケットの再送制御に問題が生じる。【００１０】
例えば、ＴＣＰに基づく通信の開始時や再接続時に、ＳＹＮ（Ｓｙｎｃｈｒｏｎｉｚｅ）パケットの交換が行われる。ＳＹＮパケットの交換の際に、通信の断絶、又は、パケットロスが発生すると、ＳＹＮパケットの再送制御が開始される。その際、再送待ち時間が設けられる。再送待ち時間は、一般に、バックオフ時間とも呼ばれる。バックオフ時間が設けられることによって、すぐにはＳＹＮパケットの再送が行われない。そのため、少なくともバックオフ時間が終了するまで通信が開始されない。【００１１】
図１０は、車車間通信の例を模式的に表す図である。図１０に示す例では、ノードＡは、道路を走行中の車両に搭載された通信端末である。ノードＢは、ノードＡが搭載されている車両が走行している車線の対向車線を走行する車両に搭載されている通信端末である。図１０に示す例では、時間は、時刻Ｔ１、時刻Ｔ２、そして時刻Ｔ３の順に経過する。時刻Ｔ１において、ノードＡ及びノードＢは、セッションを確立する処理を開始する。しかし、セッションを確立するためのＳＹＮパケットのロスが発生すると、バックオフ期間が設定される。図１０に示す例では、時刻Ｔ１と時刻Ｔ２の間でＳＹＮパケットのロスが発生する。そして、時刻Ｔ２から、通信できない期間であるＳＹＮバックオフ期間が開始される。バックオフ期間が終了した後、セッションを確立する処理が再び行われる。図１０に示す例では、時刻Ｔ３において、ＴＣＰ接続が完了する。しかし、バックオフ期間中も２台の車両は逆方向への走行を継続することができるので、図１０に示す例のように、接続が完了した時には、２台の車両の間の距離は大きくなっていることもある。【００１２】
ＴＣＰによる通信が開始された後、通信リンクの断絶が発生した場合、データパケットの再送が開始される。その際、同様にバックオフ時間が設けられる。バックオフ時間が終了するまで、パケットの再送は行われない。バックオフ時間が設けられることによって、通信リンクが回復した後も、バックオフ時間が終了するまでしばらく通信できない。【００１３】
図１１は、２台の通信端末の間で行われる通信の例を模式的に表す図である。図１１において、２台の通信端末が行う動作は、時間の経過に応じて、上から下に向かって描かれる。図１１に示す例では、ノードＢからのリクエストに応じて、ノードＡがノードＢにデータを送信する。ノードＢからのリクエストは、例えばコンテンツを要求するコンテンツリクエストである。その場合、ノードＡがノードＢに送信するデータは、要求されたコンテンツである。データの送信中にノードＡとノードＢとの間に通信の断絶が生じた場合、ノードＡは、データパケットを再送する。再送できなかった場合、ノードＡは、設けられたバックオフ期間が終了した後、データパケットを再送する。バックオフ期間は、再送の回数の増加に応じて、例えば指数関数的に増加する。図１１に示す例では、通信の断絶の間に行われた、３回のデータパケットの再送は全て失敗する。そして、３回目の再送の後に通信の断絶が解消する。通信の途絶が解消した場合、通信できない時間であるバックオフ時間が設定されてなければ、通信は可能である。しかし、３回目の再送の失敗によって設けられたバックオフ期間が終了するまで、ノードＡはデータパケットの再送を行えない。図１１における「再送待ち時間」が、設けられたバックオフ期間のために、ノードＡがデータパケットの再送を行えない時間である。【００１４】
上述の場合に通信が可能になるまでの時間を短縮するためには、ＳＹＮパケット交換時にパケットロスが発生した場合、通信リンクが安定した後、早期に、ＴＣＰの再接続を行えばよい。通信が開始された後に通信リンクが断絶した場合、通信リンクが回復した後、迅速に再送を行えばよい。【００１５】
バックオフ時間は、正常動作時における待機時間である。通信を中継する通信装置におけるバックオフ期間の発生は、その通信装置を介して他の装置と通信を行う、例えばアプリケーションプログラムを実行するプロセッサ等の情報処理装置に、例えばエラーとして、通知されない。そのため、その通信装置を介して通信を行う情報処理装置は、バックオフ期間が設定されたために通信できない時間を検知することができない。従って、バックオフ期間が設定されていても、その情報処理装置は、正常に通信が行われていると認識する。【００１６】
以上のように、一般に、通信装置バックオフ期間を伴う通信プロトコルによって通信を行う場合、その通信装置を使用する他の装置は、その通信装置が通信できる状態であるか否かを、精度よく判定することはできない。【００１７】
その場合、バックオフ期間において、その情報処理装置が、その通信装置を介して、他の装置にデータを送信する可能性がある。その場合、例えば通信装置のバッファがあふれることによって、送信されたデータが失われることがある。【００１８】
特許文献１に記載されている無線通信装置は、ＴＣＰによる通信にエラーが生じた場合、ＵＤＰによる通信を、ＴＣＰによる通信と併用する。しかし、バックオフ期間は待機期間であるので、バックオフ期間においてデータが送信されないことは異常ではない。従って、特許文献１に記載されている無線通信装置を介して通信する装置等は、バックオフ期間のために通信できないことを検知できない。【００１９】
特許文献２に記載されている通信装置は、複数の無線接続が干渉するか否かを判定する。しかし、特許文献２の通信装置を介して通信する装置等は、バックオフ期間のために通信できないことを検知できない。【００２０】
特許文献３に記載されている通信システムは、予想スループットに基づいて送信パラメータを選択する。しかし、特許文献３の通信システムを介して通信する装置等は、バックオフ期間のために通信できないことを検知できない。【００２１】
本発明の目的の１つは、ネットワークの状態を特定する精度を向上させることができる通信状態判定装置などを提供することにある。
【課題を解決するための手段】
【００２２】
本発明の一態様に係る通信状態推定装置は、与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する推定手段と、を備える。【００２３】
本発明の一態様に係る通信状態推定方法は、与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与え、通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出し、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する。【００２４】
本発明の一態様に係る記録媒体は、コンピュータを、与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する推定手段と、して動作させる通信状態推定プログラムを記憶する。本発明は、上述の記録媒体に格納される通信状態推定プログラムによっても実現される。
【発明の効果】
【００２５】
本発明には、ネットワークの状態を特定する精度を向上させることができるという効果がある。
【図面の簡単な説明】
【００２６】
【図１】図１は、本発明の第１及び第２の実施形態の通信端末１の構成の例を表すブロック図である。
【図２】図２は、異なる複数の通信パラメータについて算出された、通信エラーの発生確率の例を模式的に表す図である。
【図３】図３は、本発明の第１の実施形態の２台の通信端末１の配置の例を表す図である。
【図４】図４は、本発明の第１の実施形態の通信状態推定装置１０の、通信を確立する動作を表すフローチャートである。
【図５】図５は、本発明の第１及び第２の実施形態の通信状態推定装置１０の、通信状態推定処理の動作の例を表すフローチャートである。
【図６】図６は、本発明の第２の実施形態のおける２台の通信端末１の間で行われる通信を模式的に表す図である。
【図７】図７は、本発明の第２の実施形態の通信状態推定装置１０の動作の例を表すフローチャートである。
【図８】図８は、本発明の第３の実施形態の通信状態推定装置１０の構成の例を表すブロック図である。
【図９】図９は、本発明の各実施形態に係る通信端末１及び通信状態推定装置１０を実現することができる、コンピュータ１０００のハードウェア構成の一例を表す図である。
【図１０】図１０は、車車間通信の例を模式的に表す図である。
【図１１】図１１は、２台の通信端末の間で行われる通信の例を模式的に表す図である。
【発明を実施するための形態】
【００２７】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２８】
＜第１の実施形態＞
［構成の説明］
図１は、本実施形態の通信端末１の構成の例を表すブロック図である。通信端末１は、通信先装置２と通信可能に接続されている。通信端末１と通信先装置２とは、例えば、無線によって通信可能であればよい。通信先装置２は、例えば、通信端末１と同じ構成を備える通信端末である。
【００２９】
図１を参照すると、本実施形態の通信端末１は、推定部１１１と、設定部１２１と、検出部１２２と、通信プロトコル部１３０と、通信部１４０とを含む。図１に示す例では、通信端末１は、通信状態推定装置１０と、通信装置１１とを含む。通信状態推定装置１０が、推定部１１１と、設定部１２１と、検出部１２２とを含む。通信装置１１が、通信プロトコル部１３０と、通信部１４０とを含む。推定部１１１は、例えば、通信状態推定装置１０のプロセッサと、通信状態推定装置１０のプロセッサが実行するアプリケーションプログラムである、アプリケーション１１０とによって実現されている。なお、通信端末１のプロセッサが、通信状態推定装置１０のプロセッサであってもよい。設定部１２１と、検出部１２２とは、制御部１２０として実装されている。通信部１４０は、例えば、通信先装置２などの他の通信端末と通信を行う。通信プロトコル部１３０は、所定の通信プロトコルに従った通信の制御を行う。制御部１２０は、通信装置１１とアプリケーション１１０とのインタフェースである。
【００３０】
通信部１４０は、通信プロトコル部１３０から受け取ったデータを、通信先装置２などの他の通信端末に対して送信する。通信部１４０は、さらに、他の通信端末から受信したデータを、通信プロトコル部１３０に送信する。
【００３１】
通信プロトコル部１３０は、通信部１４０を通じてデータを送受信する。通信プロトコル部１３０は、他の通信端末との通信セッションを確立する。通信プロトコル部１３０は、送信速度を制御する。通信プロトコル部１３０は、送信されたデータの再送制御を行う。また、通信プロトコル部１３０は、一定回数以上の再送制御を行った場合、一定期間の間に通信セッションを確立できない場合、又は、一定期間の間にデータを受信できない場合、通信エラーが発生したと判定する。通信エラーが発生したと判定した場合は、通信プロトコル部１３０は、検出部１２２に前記エラー内容を送信する。また、通信プロトコル部１３０は、上述の一定回数及び一定期間を特定する通信パラメータを記憶する。通信パラメータは、例えば、設定部１２１によって設定される。通信プロトコル部１３０は、例えば、設定部１２１から通信パラメータを受信し、そして、受信した通信パラメータを記憶すればよい。設定部１２１が、通信プロトコル部１３０が含む、通信パラメータが格納されている記憶領域に、通信パラメータを書き込んでもよい。そして、通信プロトコル部１３０は、記憶している通信パラメータに従って通信を行う。
【００３２】
通信プロトコル部１３０が従う通信プロトコルは、例えば、ＴＣＰである。以下の説明では、通信プロトコル部１３０が従う通信プロトコルはＴＣＰである。ＴＣＰを使用する場合は、通信プロトコル部１３０は、一定期間の間に通信セッションの確立ができたかどうかを、ＳＹＮパケットの再送回数に基づき判定する。通信プロトコル部１３０は、例えば、再送回数の最大値を超えた場合、セッション確立に失敗したと判定する。また、前述の一定期間は、例えば、変数であるＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴに設定された値である。通信プロトコル部１３０は、ＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴに設定された時間内にパケットを受信できない場合、通信エラーが発生したと判定する。これらの値は、例えば、ソケットオプションにおいてＴＣＰの通信パラメータを変更することによって設定される。
【００３３】
通信プロトコル部１３０は、例えば、ＴＣＰのシステムコールである、bind()、connect()、又はread()などが実行された際に、エラーが発生した場合、エラー情報を送信すればよい。
【００３４】
また、通信プロトコル部１３０は、さらに、通信プロトコルの制御メッセージ（例えば、ＴＣＰのＳＹＮパケット)の送受信が行えない場合、通信エラーが発生したと判定してもよい。通信プロトコル部１３０は、特定の制御メッセージを通信相手から受信した場合、通信エラーが発生したと判定してもよい。以下の説明において、通信プロトコル部１３０が、通信エラーが発生したと判定することを、「通信プロトコル部１３０において通信エラーが発生する」と表記する。
【００３５】
設定部１２１は、通信プロトコル部１３０の通信パラメータを設定する。設定部１２１は、推定部１１１から通信パラメータ情報を受信する。設定部１２１は、受信した通信パラメータを、通信プロトコル部１３０に送信する。設定部１２１は、受信した通信パラメータを、通信プロトコル部１３０が含む、通信パラメータが記憶される記憶領域に書き込む。そして、設定部１２１は、通信プロトコル部１３０に通信を開始させる。例えば、ＴＣＰが用いられている場合、設定部１２１は、ソケットオプションを用いて、推定部１１１から通知されたパラメータを設定する。そして、設定部１２１は、通信プロトコル部１３０に、通信相手とのセッションを確立する処理を開始させる。例えば、設定部１２１は、通信プロトコル部１３０に、通信相手とのセッションを確立する処理を開始する指示を送信すればよい。その指示を受信した場合、通信プロトコル部１３０は、通信相手とのセッションを確立する処理を開始すればよい。
【００３６】
検出部１２２は、通信相手との通信における通信エラーの有無を監視する。検出部１２２は、通信相手との通信における通信エラーの発生を検出すればよい。検出部１２２は、通信プロトコル部１３０が、通信エラーが発生したと判定したか否かを検出すればよい。検出部１２２は、例えば、通信エラーが発生した場合に通信プロトコル部１３０が送信する、発生した通信エラーを表す通信エラー情報を受信した場合に、通信エラーの発生を検出すればよい。検出部１２２は、例えば、受信した通信エラー情報を送信することによって、推定部１１１に通信エラーの発生を通知する。例えば、ＴＣＰが使用される場合、設定部１２１は、例えば、ＳＹＮパケットの再送回数を通信パラメータとして設定する。その場合、通信プロトコル部１３０において、セッションの確立の失敗が、発生した通信エラーとして判定される。通信エラーが発生したと判定した場合、通信プロトコル部１３０は、セッションの確立に失敗したことを表すエラー情報を検出部１２２に送信する。検出部１２２は、セッションの確立に失敗したことを推定部１１１に通知する。すなわち、検出部１２２は、セッションの確立に失敗したことを表す通信エラーを、推定部１１１に送信する。
【００３７】
通信プロトコル部１３０は、セッションの確立に成功した場合、セッションの確立に成功したことを表すメッセージを、検出部１２２に送信してもよい。セッションの確立に成功したことを表すメッセージを受信した場合、検出部１２２は、セッションの確立に成功したことを表すメッセージを、推定部１１１に送信してもよい。
【００３８】
さらに、一定期間以上パケットを受信できないパケットを受信できない場合における通信エラーの発生を判定するのに使用される閾値として、前述のように、例えば、ＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴに期間が設定される。その場合、通信プロトコル部１３０は、セッションの確立後に、ＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴに設定されている期間以上の期間、パケットを受信しない場合、通信エラーが発生したと判定する。その場合、通信プロトコル部１３０は、一定期間の間にパケットを受信できなかったことを表す通信エラー情報を、検出部１２２に送信する。検出部１２２は、一定期間の間にパケットを受信できなかったことを推定部１１１に通知する。
【００３９】
例えば、通信プロトコルとしてＴＣＰが使用されている場合、ＴＣＰのシステムコールであるbind()、connect()、read()などが実行された際、通信プロトコル部１３０は、通信エラーが発生していれば、通信エラー情報を送信すればよい。その場合、検出部１２２は、ＴＣＰのシステムコールを実行してもよい。検出部１２２は、ＴＣＰのシステムコールのいずれかを実行した際、ＴＣＰの通信エラーが発生していないか監視すればよい。通信エラーの発生が検出された場合、検出部１２２は、推定部１１１に通知すればよい。
【００４０】
他の通信エラーが検出された場合も同様に、検出部１２２は、推定部１１１に通知する。
【００４１】
前述のように、推定部１１１は、例えば、通信端末１又は通信状態推定装置１０のプロセッサによって実行されるアプリケーションである、アプリケーション１１０によって実現されてもよい。
【００４２】
推定部１１１は、設定部１２１を用いて、調査対象の通信エラーに応じた通信パラメータを、通信プロトコル部１３０の通信パラメータとして設定する。推定部１１１は、検出部１２２から通知される通信エラーの発生の有無と、設定した通信パラメータの内容とに基づいて、通信確立状況を推定する。
【００４３】
例えば、ＴＣＰ通信のセッションの確立の難しさが判定の対象である場合、推定部１１１は、設定部１２１に対して、例えば、通信パラメータの一つであるＳＹＮパケットの再送回数を１に設定する要求を送信する。推定部１１１は、さらに、設定部１２１に対して、ＳＹＮパケットの再送回数が１に設定された状態で通信を行わせる要求を送る。推定部１１１は、要求に応じて行われた通信において発生した通信エラーを検出部１２２から受信する。通信パラメータが設定された状態で通信を行わせる要求を送信し、その通信において通信エラーが発生した場合にその通信エラーを受信することを、以下の説明において「調査」と表記する。推定部１１１は、受信した通信エラーに基づき、セッションの確立が容易であるか困難であるかを判定する。推定部１１１は、例えば、ＳＹＮパケットの再送回数が調査のために設定された状態において通信を実行する要求を既定の回数繰り返せばよい。ＳＹＮパケットの再送回数が１回に設定された状態において、通信プロトコル部１３０がセッションの確立に連続して失敗した場合、セッションの確立に失敗したことを表す通信エラーが、検出部１２２から連続して送信される。そのため、推定部１１１が検出部１２２からセッションの確立に失敗したことを表す通信エラーを連続して受信した場合、推定部１１１は、セッション確立は困難と判定する。ＳＹＮパケットの再送回数が１回に設定された状態であっても、通信プロトコル部１３０がセッションの確立に連続して失敗しなかった場合、セッションの確立に失敗したことを表す通信エラーは、検出部１２２から連続して送信されない。例えば、検出部１２２から通信エラーを連続して受信しなかった場合、推定部１１１は、セッションの確立が容易であると判定してもよい。その場合、さらに、推定部１１１は、通信先装置２との通信が可能であると推定すればよい。推定部１１１は、以上で説明した、セッションの確立が困難であるか容易であるかを繰り返し判定すればよい。
【００４４】
セッションの確立が困難であると判定されている間、通信端末１は、実際にデータ転送を行うための通信の確立を試みなければよい。そして、例えば、セッションの確立の難しさに関する判定の結果が、困難から容易に変化した場合、例えば、アプリケーション１１０が、実際にデータ転送を行うＴＣＰ通信を開始させればよい。そのことにより、通信状態推定装置１０は、通信を確立する過程におけるバックオフ時間を短くすることができ、その結果、早期にＴＣＰ通信を開始することができる。
【００４５】
また、推定部１１１は、特定の通信パラメータだけを使用して、繰り返し上述の調査を行ってもよい。推定部１１１は、通信パラメータをさまざまに変化させながら、繰り返し調査を行ってもよい。推定部１１１は、さらに、調査が行われた通信パラメータ毎に、通信エラーを受信した確率を算出してもよい。例えば、推定部１１１は、一つの通信パラメータに対して複数回の調査を行えばよい。推定部１１１は、その複数回の調査の結果に基づき、通信エラーの発生確率を算出すればよい。推定部１１１は、同様に、他の通信パラメータの各々について、通信エラーの発生確率を算出すればよい。
【００４６】
推定部１１１は、ＳＹＮパケットの再送回数に１より大きい値を設定する指示を設定部１２１に送信してもよい。検出部１２２は、セッションの確立に成功した場合、セッションが確立されるまでのＳＹＮパケットの再送回数を、推定部１１１に送信すればよい。セッションの確立に失敗した場合、検出部１２２は、セッションの確立に失敗したことを表す通信エラーを、推定部１１１に送信すればよい。推定部１１１は、受信した再送回数に基づき、ＳＹＮパケットの再送回数毎の通信エラーを算出してもよい。
【００４７】
図２は、異なる複数の通信パラメータについて算出された、通信エラーの発生確率の例を模式的に表す図である。図２において、「通信エラー確率」は、ＳＹＮパケットを「ＳＹＮ再送回数」に示す回数まで再送できる場合に、セッションを確立できない確率を表す。図２に示す例は、例えば、ＳＹＮパケットを３回再送してもセッションを確立できない確率が２０％であることを表す。また、「バックオフ期間」は、ＳＹＮパケットの再送回数が「ＳＹＮ再送回数」に示す回数である場合の、バックオフ期間を表す。例えば、ＳＹＮパケットの１回目の再送におけるバックオフ期間は、３秒である。ＳＹＮパケットの２回目の再送におけるバックオフ期間は、６秒である。ＳＹＮパケットの３回目の再送におけるバックオフ期間は、１２秒である。ＳＹＮパケットを３回再送した場合における、バックオフ期間の合計は、３、６、及び１２の和は２１であるので、２１秒である。
【００４８】
推定部１１１は、セッションの確立が可能か否かを、通信エラー確率に基づいて決定してもよい。推定部１１１は、通信エラー確率が閾値以下である最小のＳＹＮパケット再送回数を特定すればよい。そして、推定部１１１は、ＳＹＮパケットの再送回数が、特定したＳＹＮパケット再送回数である場合のバックオフ時間の合計を、待ち時間として算出すればよい。推定部１１１は、例えば、算出された待ち時間が所定の閾値を越えない場合、通信が可能であると推定すればよい。推定部１１１は、例えば、算出された待ち時間が所定の閾値を越える場合、通信が可能でないと推定すればよい。例えば、セッションの確立が可能か否かを判定する閾値が２０％である場合、通信エラー確率が２０％以下である最小のＳＹＮ再送回数は３である。その場合、推定部１１１は、ＳＹＮパケットを３回再送すればセッションを確立できると推定すればよい。推定部１１１は、さらに、ＳＹＮパケットを３回再送した場合のバックオフ時間の合計を、待ち時間として算出すればよい。この例では、算出される待ち時間は２１秒である。この場合、推定部１１１は、２１秒の待ち時間が発生すると判定する。例えば、待ち時間に対する閾値が２５秒である場合、推定部１１１は、算出された時間が２１秒であれば、通信は可能であると判定する。
【００４９】
推定部１１１は、複数の通信パラメータを用いて調査を行う際、例えば識別子を使用して、通信パラメータと検出部１２２から送信される通信エラーとを関連付ければよい。例えば、推定部１１１は、あらかじめ、識別子を通信パラメータに関連付けておけばよい。推定部１１１は、調査において送信される、通信の要求に識別子を関連付けてもよい。そして、推定部１１１は、識別子が関連付けられた、通信の要求を、設定部１２１に送信すればよい。検出部１２２は、識別子が関連付けられた通信エラーを、推定部１１１に送信すればよい。識別子は、通信パラメータそのものであってもよい。識別子は、通信パラメータの識別子であってもよい。
【００５０】
複数の通信パラメータを用いた調査において、通信パラメータを変更しながら順次通信を行う場合、すべての通信が完了するまでに長い時間を要する。そのため、設定部１２１は、異なるパラメータが設定されたＴＣＰ通信を、同時に並列に行ってもよい。推定部１１１は、１つの通信パラメータの設定値の通信が終わるたびに、推定処理を行ってもよい。
【００５１】
アプリケーション１１０は、例えば図２に示す通信エラーの発生確率を使用して推定された結果を基に、アプリケーションレベルからＴＣＰの再接続の制御を行えばよい。アプリケーション１１０による再接続の繰り返しは、ＳＹＮパケットの再送の繰り返しとは異なる。アプリケーション１１０による再接続が繰り返し失敗しても、設けられるバックオフ期間は、失敗の回数に応じて指数関数的には増加しない。言い換えると、この場合の設けられるバックオフ期間の増加は、指数関数的ではない。例えば、推定の結果、ＴＣＰ接続が確立されるまでに２１秒の時間を要する場合、アプリケーション１１０は、例えば１秒ごとにＴＣＰの再接続を実行してもよい。通信プロトコル部１３０によってＳＹＮパケットが送信されてから２１秒以内に、セッションが確立されたことを表す応答が通信プロトコル部１３０から送信されない場合、アプリケーション１１０は、セッションの確立に失敗したとみなしてもよい。その場合、アプリケーション１１０がＴＣＰの再接続を行ってもよい。これにより、早期にＴＣＰの接続を確立することができる。
【００５２】
［動作の説明］
次に、本実施形態の通信状態推定装置１０の動作について、図面を参照して詳細に説明する。
【００５３】
本実施形態では、多数の通信端末１によって、アドホックネットワークが構築されてもよい。以下では、説明を容易にするために、ネットワークを構成する通信端末１のうち２台の通信端末１の間の通信について説明する。また、以下で説明する例では、通信プロトコルとしてＴＣＰが用いられる。
【００５４】
図３は、２台の通信端末１の配置の例を表す図である。図３において、ノードＡ及びノードＢとして示される図形が２台の通信端末１の位置を表す。２台の通信端末１は、例えば、走行する車両等の移動体に搭載されている。図３に示す例では、時間は、時刻Ｔ１、時刻Ｔ２、そして時刻Ｔ３の順に経過する。時刻Ｔ１におけるノードＡ及びノードＢの位置が、互いに通信可能な最も離れた位置を表す。また、各通信端末１は、自身の存在を通知するビーコン（Ｂｅａｃｏｎ）を定期的に送信することによって、通信可能な範囲に存在する他の通信端末１に、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスを通知する。そのため、各通信端末１は、他方の存在（ＩＰアドレス）を認識している。
【００５５】
図４は、本実施形態の通信状態推定装置１０の、通信を確立する動作を表すフローチャートである。上述の２台の通信端末１のうちの一方（例えば、ノードＡとして表される通信端末１）が、保有しているデータを、他方の通信端末１（例えば、ノードＢとして表される通信端末１）に対して送信する場合、データを送信する前に、ノードＢとの通信を確立する。以下の説明では、ノードＡとして表される通信端末１を、ノードＡ又は単に通信端末１と表記する。さらに、ノードＢとして表される通信端末１を、ノードＢ又は通信先装置２と表記する。図４は、ノードＡがノードＢとの接続を確立する場合における、ノードＡである通信端末１に含まれる通信状態推定装置１０の動作を表す。以下の説明において、通信端末１が通信を行う相手は、通信先装置２である。
【００５６】
ノードＡすなわち通信端末１は、まず、通信状況を把握する。すなわち通信端末１は、推定部１１１を使用して、ＴＣＰを用いてデータを転送できるかどうか（すなわち、バックオフ制御が発生しないかどうか）を判定する。そのための処理が、図４に示す、ステップＳ１０１における通信状態推定処理である。
【００５７】
図４を参照すると、本実施形態の通信状態推定装置１０は、まず、通信状態推定処理を行う（ステップＳ１０１）。通信状態推定処理については、後で詳細に説明する。通信状態推定処理における判定の結果、通信が可能である場合（ステップＳ１０２においてＹｅｓ）、すなわち、データの転送が可能である場合、例えば推定部１１１が、通信装置１１の通信プロトコル部１３０に対して、データを転送するための通信を確立する、再接続指示を送信する（ステップＳ１０３）。通信が可能でない場合（ステップＳ１０２においてＮｏ）、通信状態推定装置１０は、通信状態推定処理（ステップＳ１０１）を繰り返せばよい。なお、アプリケーション１１０が、ステップＳ１０２及びステップＳ１０３の一方又は双方の動作を行ってもよい。通信状態推定装置１０のプロセッサが実行する他のアプリケーションプログラムが、ステップＳ１０２及びステップＳ１０３の一方又は双方の動作を行ってもよい。通信端末１のプロセッサが実行するアプリケーションプログラムが、ステップＳ１０２及びステップＳ１０３の一方又は双方の動作を行ってもよい。
【００５８】
次に、本実施形態の通信状態推定装置１０の、通信状態推定処理の動作について、図面を参照して詳細に説明する。
【００５９】
図５は、本実施形態の通信状態推定装置１０の、通信状態推定処理の動作の例を表すフローチャートである。
【００６０】
図５を参照すると、まず、推定部１１１は、通信パラメータを決定する（ステップＳ１１１）。ステップＳ１１１では、推定部１１１は、セッションの確立におけるバックオフ時間が大きくならずにセッションが確立できるかどうかを推定するＴＣＰ通信の試験のために、例えば、ＳＹＮパケットの再送回数を１に決定する。推定部１１１は、決定した通信パラメータを設定部１２１に送信する（ステップＳ１１２）。推定部１１１は、その通信パラメータを設定する指示を、設定部１２１に送信すればよい。推定部１１１は、例えば、SYNパケットの再送回数を１に設定する指示を設定部１２１に送信する。推定部１１１は、決定した通信パラメータが設定された状態で、通信を行わせる指示である通信指示を、設定部１２１に送信する（ステップＳ１１３）。通信指示を受信した設定部１２１は、後述のように、通信プロトコル部１３０に、通信状況推定のためのＴＣＰ通信を開始させる。推定部１１１は、このように例えば通信指示を設定部１２１に送信することによって、通信プロトコル部１３０に、通信状況推定のためのＴＣＰ通信を開始させる。
【００６１】
ステップＳ１１３において、設定部１２１は、推定部１１１から送信された通信パラメータ（例えば、ＳＹＮ再送回数：１回）を、通信プロトコル部１３０に与える。そして、設定部１２１は、通信プロトコル部１３０に通信を開始させる。本実施の形態では、設定部１２１は、ソケットオプションにおいて、ＴＣＰのＳＹＮパケット再送回数を「１」に設定することによって、通信プロトコル部１３０に通信パラメータを与える。そして、ステップＳ１１３において、設定部１２１は、通信プロトコル部１３０にＴＣＰ通信を開始させる。
【００６２】
ステップＳ１１３において、通信プロトコル部１３０は、設定部１２１によって設定された通信パラメータに従って通信を開始する。本実施形態では、上述のように、ＴＣＰのＳＹＮパケットの再送回数は「１」に設定されている。通信プロトコル部１３０は、ＴＣＰのＳＹＮパケットの再送回数が「１」である条件下で、ＴＣＰ通信を開始する。通信プロトコル部１３０は、通信エラーが発生したか否か、そして、ＴＣＰ通信が完了したか否かを監視する。通信エラーの発生を検出した場合、通信プロトコル部１３０は、発生した通信エラーを表す通信エラー情報を検出部１２２に送信する。正常に通信が完了した場合、通信プロトコル部１３０は、例えば、通信が完了したことを表す応答を、検出部１２２に送信する。本実施形態では、その通信は、例えば、セッションを確立するＳＹＮパケットの送信である。
【００６３】
通信エラーが発生した場合、検出部１２２は、通信プロトコル部１３０から発生した通信エラーを表す通信エラー情報を受信する（すなわち、通信エラーを受信する）。通信プロトコル部１３０から発生した通信エラーを表す通信エラー情報を受信した場合（ステップＳ１１４においてＹｅｓ）、検出部１２２は、推定部１１１に通信エラーの発生を通知する（ステップＳ１１６）。検出部１２２は、発生した通信エラーを推定部１１１に送信すればよい。すなわち、検出部１２２は、発生した通信エラーを表す通信エラー情報を、推定部１１１に送信すればよい。ステップＳ１１６の動作の後、検出部１２２は、通信終了処理を実行する（ステップＳ１１７）。ステップＳ１１７において、検出部１２２は、例えば、通信を終了する指示を通信プロトコル部１３０に送信すればよい。通信を終了する指示を受信した通信プロトコル部１３０は、ＴＣＰ通信のソケットをクローズすることによって、ＴＣＰ通信を終了する。
【００６４】
通信エラーが発生しない場合、検出部１２２は、通信プロトコル部１３０から発生した通信エラーを表す通信エラー情報を受信しない（すなわち、通信エラーを受信しない）。通信プロトコル部１３０から発生した通信エラーを表す通信エラー情報を受信しない場合（ステップＳ１１４においてＮｏ）、検出部１２２は、ステップＳ１１３において送信した送信指示に基づく通信が完了したか判定する。判定の結果、通信が正常に完了している場合（ステップＳ１１５においてＹｅｓ）、検出部１２２は、上述のステップＳ１１７の動作を行う。通信プロトコル部１３０から、通信エラーを受信しておらず（ステップＳ１１４においてＮｏ）、通信が正常に完了したことを表す応答を受信していない場合（ステップＳ１１５においてＮｏ）、通信状態推定装置１０の動作は、ステップＳ１１４に戻る。そして、通信プロトコル部１３０から、通信エラー又は通信が正常に完了したことを表す応答を受信するまで、ステップＳ１１４及びステップＳ１１５の動作を繰り返す。
【００６５】
上述の調査が複数回行われる場合、通信状態推定装置１０は、ステップＳ１１１からステップＳ１１７までの動作を繰り返す。
【００６６】
そして、推定部１１１は、通信先装置２との通信が可能であるか否かを推定する（ステップＳ１１８）。推定部１１１は、例えば、セッションの確立が３回連続で成功した場合、推定部１１１は、通信先装置２との通信が可能であると推定すればよい。通信が可能である状態は、例えば、通信先装置２との通信において通信エラーが発生せず、ＴＣＰを用いてデータを転送できる状態（すなわち、例えばバックオフ制御が発生しない状態）である。推定部１１１が、通信先装置２との通信が可能であると判定した場合、前述のように、通信端末１は、例えばアプリケーション１１０が接続指示を送信することによって、実際にデータの送信が行われるＴＣＰ通信を開始する。
【００６７】
図３に示す例では、例えば時刻Ｔ２において再接続開始されている。そして、時刻Ｔ３において、ＴＣＰ接続が完了している。図３に示す例では、図１０に示す例と比較して、ＴＣＰ接続が完了するまでの時間が短い。従って、図３のノードＡとノードＢは、図１０に示す例と比較して、通信できる時間が長い。なお、図３に示す時刻Ｔ１、Ｔ２、及びＴ３は、図１０に示す時刻Ｔ１、Ｔ２、及びＴ３と関連しない。
【００６８】
以上の説明では、通信状態推定装置１０は、通信の状態の推定以外に使用されない、専用のＴＣＰ通信によって、通信の状態を推定する。通信状態推定装置１０は、データの送信を行うＴＣＰ通信を使用して、通信の状態を推定してもよい。具体的には、通信状態推定装置１０は、通信パラメータを試験で使用する通信パラメータに設定してからデータ通信を開始すればよい。そして、通信エラーが検出されなくなったと判定された時点で、通信端末１は、通信パラメータを、データ転送時に設定される通信パラメータに戻せばよい。そして、通信端末１は、データ通信を行えばよい。
【００６９】
以上で説明した本実施形態には、ネットワークの状態を特定する精度を向上させることができるという効果がある。その理由は、通信パラメータと、その通信パラメータにおける通信エラーの有無とに基づき、推定部１１１が、通信装置１１が通信できるか否かを判定するからである。通信パラメータは、設定部１２１によって、通信装置１１の通信プロトコル部１３０に与えられる。通信エラーは、その通信パラメータが与えられた通信装置１１が行う通信において、検出部１２２によって検出される。
【００７０】
＜第２の実施形態＞
［構成の説明］
次に、本発明の第２の実施形態について、図面を参照して詳細に説明する。本実施形態は、第１の実施形態を基本とする実施形態である。
【００７１】
図１は、本実施形態の通信端末１の構成の例を表すブロック図である。本実施形態の通信端末１の構成は、第１の実施形態の通信端末１の構成と同じである。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。そして、上述した第１の実施形態と同様な構成についての重複する説明は省略する。
【００７２】
本実施形態の通信状態推定装置１０は、ＴＣＰセッションが確立された後のデータ通信において、パケットが一定期間流れていないことに基づいて、通信状況を推定する。本実施形態の通信状態推定装置１０は、さらに、第１の実施形態の通信状態推定装置１０と同様の動作を行ってもよい。すなわち、本実施形態の通信状態推定装置１０は、さらに、ＴＣＰ通信のＳＹＮパケットの再送回数と、ＴＣＰ通信のセッションの確立において検出された通信エラーとに基づいて、データ通信の開始の可否を判断してもよい。
【００７３】
推定部１１１は、第１の実施形態の推定部１１１と同様に、通信プロトコル部１３０に与える通信パラメータを決定する。推定部１１１は、さらに、決定した通信パラメータと、その通信パラメータが設定された通信において発生する通信エラーの有無とに基づいて、通信の状態を推定する。
【００７４】
例えば、確立されているＴＣＰ通信セッションの通信の状態（例えば、パケット再送のバックオフの発生の有無）が調査の対象である場合、推定部１１１は、例えば、通信の断絶を許容する時間を決定する。そして、推定部１１１は、決定した、通信の断絶を許容する時間を、通信装置１１に与える通信パラメータとして、設定部１２１に送信する。推定部１１１は、さらに、通信を行わせる要求である通信指示を、設定部１２１に送信する。推定部１１１は、送信した通信パラメータが設定された状態で行われた通信において発生した通信エラーを、検出部１２２から受信する。推定部１１１は、受信した通信エラーに基づいて、例えば、パケットの送信の状態等の、通信の状態を把握する。通信の断絶を許容する時間を表すパラメータは、例えば、ＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴであってもよい。以下の説明では、通信の断絶を許容する時間は、１０秒である。
【００７５】
例えば、通信の断絶を許容する時間が１０秒に設定されている場合、送信した通信指示に応じた通信において１０秒以上の通信の断絶が生じた場合、検出部１２２から通信エラーが送信される。例えば一定期間内に、検出部１２２から通信エラーを受信した場合、推定部１１１は、１０秒以上の通信の断絶が発生すると判定する。反対に、一定期間内に検出部１２２から通信エラーを受信しなかった場合、推定部１１１は、１０秒以上の通信の断絶は無いと判定する。推定部１１１は、繰り返し通信指示を送信してもよい。そして、例えば３回以上連続して通信エラーを受信しなかった場合、１０秒以上の通信の断絶が発生しないと判定してもよい
推定部１１１は、通信パラメータを異なる通信パラメータに変更しながら、繰り返し調査を行ってもよい。推定部１１１は、特定の通信パラメータを使用して、繰り返し調査を行ってもよい。推定部１１１は、ある通信パラメータを使用した通信において通信エラーの発生が検出されない場合、さらにエラーが発生しやすい通信パラメータを使用して調査を行ってもよい。例えば、１０秒以上の通信の断絶が発生しないと判定した場合、は、推定部１１１は、通信の断絶を許容する時間を５秒に変更してもよい。推定部１１１は、例えば、ＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴを５秒に変更させればよい。そして、推定部１１１は、再度、通信指示を送信すればよい。推定部１１１は、異なる複数の通信パラメータを使用して調査を行うことで、発生する通信の断絶時間の長さをさらに正確に把握することができる。
【００７６】
また、推定部１１１は、通信パラメータとして、パケットの再送回数の最大値を使用することによっても、通信が断絶する時間を把握することができる。例えば、パケットの再送回数の最大値が通信パラメータとして設定されている通信において、パケットの再送回数が、パケットの再送回数の最大値として設定されている回数を越えた場合、通信エラー情報の発生が検出される。推定部１１１は、パケットの最大値として設定されている回数に応じたバックオフ時間の合計を、通信が途絶する時間として推定すればよい。推定部１１１は、例えば、パケットの再送回数の最大値をさまざまに変更しながら調査を行うことによって、通信が断絶する時間をさらに精度よく推定してもよい。なお、一般に、バックオフ時間の合計は、パケットの再送回数に比例しない。１回のパケットの再送において設定されるバックオフ時間は、例えば図２に示す例のように、再送回数の増加に応じて指数的に増加する。推定部１１１は、パケットの再送回数毎の、パケットの再送において設定されるバックオフ時間を保持していればよい。そして、推定部１１１は、通信パラメータとして設定されているパケットの再送回数の最大値に応じた、バックオフ時間の和を算出すればよい。推定部１１１は、算出されたバックオフ時間の和が、通信が途絶する時間であると判定すればよい。図２に示す例では、例えば、パケットの再送回数の最大値として設定されている回数が１回である場合、通信が途絶する時間として判定される時間は３秒である。パケットの再送回数の最大値として設定されている回数が２回である場合、推定部１１１は、通信が途絶する時間は、１回目の再送におけるバックオフ期間である３秒と、２回目の再送におけるバックオフ期間である６秒との和である９秒であると判定すればよい。
【００７７】
推定部１１１は、複数の通信パラメータをそれぞれ用いて調査を行う場合、第１の実施形態の推定部１１１と同様に識別子を使用することによって、通信パラメータと検出部１２２からの通信エラーとを関連付ければよい。
【００７８】
検出部１２２は、第１の実施形態の検出部１２２と同様に、通信エラーが発生した場合、発生した通信エラーを推定部１１１に通知する。検出部１２２は、発生した通信エラーを表す情報を、推定部１１１に送信してもよい。上述のように、検出部１２２は、例えば、ＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴを変更することによって、通信パラメータを設定すればよい。例えば、セッションが確立された後に、通信プロトコル部１３０が行う通信において通信エラーを検出した場合、検出部１２２は、通信パラメータとして設定されている期間パケットを受信できなかったことを、推定部１１１に通知すればよい。
【００７９】
他の通信パラメータが使用されている場合も同様に、検出部１２２は、通信エラーを表す情報を推定部１１１に通知すればよい。
【００８０】
［動作の説明］
次に、本実施形態の通信状態推定装置１０の動作について、図面を参照して詳細に説明する。
【００８１】
本実施形態では、多数の通信端末１によるアドホックネットワークが構築されていてもよい。以下の説明では、説明を容易にするため、ネットワークを構成する通信端末１のうち、２台の通信端末１の間の通信について説明する。また、以下で説明する例では、通信プロトコルとして、ＴＣＰが用いられる。
【００８２】
図６は、本実施形態における２台の通信端末１の間で行われる通信を模式的に表す図である。図６に示すノードＡ及びノードＢが、上述の２台の通信端末１である。ノードＡとノードＢとの間の距離は、ノードＡとノードＢとが互いに通信することができる距離である。また、各通信端末１は、自身の存在を通知するビーコンを定期的に送信することによって、ＩＰアドレスを通知する。従って、各通信端末１は、他の通信端末１の存在を認識している。言い換えると、各通信端末１は、他の通信端末１のＩＰアドレスを認識している。
【００８３】
図７は、本実施形態の通信状態推定装置１０の動作の例を表すフローチャートである。図７に示す動作では、ノードＡとノードＢとの間の通信は既に確立されている。そして、例えばノードＡが、保有しているデータを、ノードＢに対して送信する。図６において、ノードＡ及びノードＢが行う動作は、時間の経過に応じて、上から下に向かって描かれる。図６に示す例では、ノードＡは、例えば、ノードＢからのコンテンツリクエストに応じて、コンテンツを送信する。そして、ノードＡが、ノードＢに対してデータを送信しながら、図７に示す動作を行う。具体的には、ノードＡに含まれる通信状態推定装置１０が、図７に示す動作を行う。以下の説明において、図６においてノードＡとして表される通信端末１を、ノードＡ又は単に通信端末１と表記する。また、図６においてノードＢとして表される通信端末１を、ノードＢ又は通信先装置２と表記する。
【００８４】
図７を参照すると、通信端末１の通信状態推定装置１０は、まず、通信状態推定処理を行う（ステップＳ１０１）。すなわち、通信端末１の通信状態推定装置１０は、推定部１１１によって、ＴＣＰを用いてデータ通信できるか否か（すなわち、再送バックオフ制御が行われるか否か）を判定する。ステップＳ１０１の通信状態推定処理については、後で詳細に説明する。
【００８５】
通信状態推定処理によって、通信が可能であると判定された場合（ステップＳ１０２においてＹｅｓ）、通信状態推定装置１０は、ステップＳ１０１の通信状態推定処理を繰り返す。後述されるように、通信状態推定処理において、通信先装置２に対するデータの送信が行われる。すなわち、通信先装置２に対するデータの送信は継続される。
【００８６】
通信状態推定処理によって、通信が可能でないと判定された場合（ステップＳ１０２においてＮｏ）、例えば、推定部１１１が、現在の接続を終了する（ステップＳ２０１）。推定部１１１は、通信装置１１の通信プロトコル部１３０に対して、例えば、ＴＣＰのセッションをクローズする指示である、通信終了指示を送信すればよい。通信終了指示を受信した通信プロトコル部１３０は、確立されている通信を終了する。推定部１１１は、さらに、通信装置１１の通信プロトコル部１３０に対して、再接続を行う指示である、再接続指示を送信する（ステップＳ１０３）。再接続指示を受信した通信プロトコル部１３０は、新たにＴＣＰ通信を開始する。そして、通信端末１が行うデータの送信は、新しく開始されたＴＣＰ通信によって行われる。なお、アプリケーション１１０が、ステップＳ１０２、ステップＳ２０１、及びステップＳ１０３の一部又は全部の動作を行ってもよい。通信状態推定装置１０のプロセッサが実行する他のアプリケーションプログラムが、ステップＳ１０２、ステップＳ２０１、及びステップＳ１０３の一部又は全部の動作を行ってもよい。通信端末１のプロセッサが実行するアプリケーションプログラムが、ステップＳ１０２、ステップＳ２０１、及びステップＳ１０３の一部又は全部の動作を行ってもよい。
【００８７】
次に、本実施形態の通信端末１の、通信状態推定処理を行う動作について、図面を参照して詳細に説明する。
【００８８】
図５は、本実施形態の通信端末１の、通信状態推定処理を行う動作の例を表すフローチャートである。図５に示す本実施形態の通信状態推定処理では、例えばパケット再送におけるバックオフ時間が大きくなることによって、ＴＣＰ通信が止まっているか否かが推定される。
【００８９】
まず、推定部１１１が、通信パラメータを決定する（ステップＳ１１１）。ステップＳ１１１において決定される通信パラメータは、ＴＣＰ通信が所定時間以上断絶していないか推定するために使用される通信パラメータである。推定部１１１は、例えば、通信タイムアウト時間の値、すなわち、通信の断絶を許容する時間の値を決定すればよい。推定部１１１は、通信の断絶を許容する時間を、例えば１０秒に決定する。推定部１１１は、次に、決定した通信パラメータを設定部１２１に送信する（ステップＳ１１２）。推定部１１１は、例えば、通信タイムアウトを通信の断絶を許容する時間として決定された１０秒に設定する指示を、設定部１２１に送信すればよい。推定部１１１は、さらに、決定した通信パラメータが設定された状態でＴＣＰ通信を行わせる指示である、通信指示を、設定部１２１に送信する（ステップＳ１１３）。
【００９０】
ステップＳ１１２において、設定部１２１は、推定部１１１から受信した通信パラメータを、通信プロトコル部１３０に与える。上述の例では、設定部１２１は、例えば、ソケットオプションにおいて、ＴＣＰ＿ＵＳＥＲ＿ＴＩＭＥＯＵＴを１０秒に設定することによって、通信パラメータを設定すればよい。ステップＳ１１３において、設定部１２１は、通信プロトコル部１３０に、通信を開始する指示を送信する。通信プロトコル部１３０は、通信を開始する。なお、通信プロトコル部１３０が通信先装置２に送信するデータは、検査のみに使用されるデータであってもよい。本実施形態では、ステップＳ１１３動作によって、通信プロトコル部１３０が通信先装置２に送信するデータは、上述の、通信端末１が通信先装置２に対して送信するデータであってもよい。
【００９１】
ステップＳ１１４からステップＳ１１８までの動作は、第１の実施形態におけるステップＳ１１４からステップＳ１１８までの動作と同様である。なお、本実施形態では、通信パラメータは、例えば、通信の断絶を許容する時間であってもよい。通信エラーは、例えば、通信の断絶を許容する時間以上の時間、データの送信が行われないことであってもよい。
【００９２】
以上で説明したように、図５に示す動作は、通信端末１から通信先装置２へのデータの送信と並行して行われる。そして、図５に示す動作によって、通信状態推定装置１０は、通信先装置２に対する、ＴＣＰによるデータの転送の断絶（例えば、パケットの再送によって生じる長い再送バックオフ時間）が発生していないかを監視する。
【００９３】
推定部１１１が、通信の断絶が発生していると推定した場合、通信端末１と通信先装置２との間の通信に、例えば、パケットの再送等によって生じる、図６に示す通信の断絶が生じている可能性がある。その場合、推定部１１１又はアプリケーション１１０等は、確立されているＴＣＰ通信を取りやめればよい。そして、推定部１１１又はアプリケーション１１０等は、新たにＴＣＰ通信を開始する、再接続処理を行う。これにより、図６に示すように、ＴＣＰ通信を早期に再開することができる。そして、待ち時間が削減される。図６に示す例では、「ＴＣＰ通信」は、ＴＣＰに従った通信プロトコル部１３０によって制御される通信を表す。「アプリによる制御」は、例えば、通信端末１等のプロセッサによって実行されるアプリケーションプログラムによって行われる処理を表す。「アプリ再接続処理」は、例えば、通信端末１等のプロセッサによって実行されるアプリケーションプログラムによって行われる、再接続の処理を表す。アプリ再接続処理の繰り返しは、パケットの再送の繰り返しではない。従って、アプリ再接続処理では、再接続の失敗が繰り返されても、設けられるバックオフ期間は、指数関数的には増加しない。言い換えると、この場合に設けられるバックオフ期間の増加は、指数関数的ではない。
【００９４】
以上の説明では、通信の状態の推定のための専用のＴＣＰ通信が使用される。実際のデータを送信するＴＣＰ通信を用いて、通信状態の推定が行われてもよい。具体的には、推定部１１１は、検査に使用される通信パラメータを、データを送信する際の通信パラメータとして決定すればよい。そして、設定部１２１は、決定された通信パラメータが設定された状態で、データの送信を開始させればよい。通信エラーの発生が検出された時点で、アプリケーション１１０等がＴＣＰ通信を再開すればよい。そして、データの送信を行うアプリケーション等が、通信エラーによって送信が中断したデータの送信を再開すればよい。
【００９５】
以上で説明した本実施形態には、第１の実施形態と同じ効果がある。その理由は、第１の実施形態の効果が生じる理由と同じである。
【００９６】
＜第３の実施形態＞
次に、本発明の第３の実施形態の通信状態推定装置１０について、図面を参照して詳細に説明する。本実施形態は、上述した各実施形態に共通する概念を表す実施形態である。
【００９７】
図８は、本実施形態の通信状態推定装置１０の構成の例を表すブロック図である。
【００９８】
図８を参照すると、本実施形態の通信状態推定装置１０は、設定部１２１と、検出部１２２と、推定部１１１と、を備える。設定部１２１は、与えられた通信パラメータに応じて、通信先装置２との通信において通信エラーの発生を判定する通信装置１１に、前記通信パラメータを与える。検出部１２２は、通信指示を受信するのに応じて前記通信を行う前記通信装置１１に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する。推定部１１１は、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置１１が前記通信をできるか否かを推定する。
【００９９】
以上で説明した本実施形態には、第１の実施形態と同じ効果がある。その理由は、第１の実施形態の効果が生じる理由と同じである。
【０１００】
＜他の実施形態＞
通信端末１、及び通信状態推定装置１０は、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。
【０１０１】
図９は、通信端末１、及び通信状態推定装置１０を実現することができる、コンピュータ１０００のハードウェア構成の一例を表す図である。図９を参照すると、コンピュータ１０００は、プロセッサ１００１と、メモリ１００２と、記憶装置１００３と、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インタフェース１００４とを含む。また、コンピュータ１０００は、記録媒体１００５にアクセスすることができる。メモリ１００２と記憶装置１００３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ハードディスクなどの記憶装置である。記録媒体１００５は、例えば、ＲＡＭ、ハードディスクなどの記憶装置、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、可搬記録媒体である。記憶装置１００３が記録媒体１００５であってもよい。プロセッサ１００１は、メモリ１００２と、記憶装置１００３に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ１００１は、Ｉ／Ｏインタフェース１００４を介して、例えば、通信先装置２、又は通信装置１１にアクセスすることができる。プロセッサ１００１は、記録媒体１００５にアクセスすることができる。記録媒体１００５には、コンピュータ１０００を、通信端末１、又は通信状態推定装置１０として動作させるプログラムが格納されている。
【０１０２】
プロセッサ１００１は、記録媒体１００５に格納されている、コンピュータ１０００を、通信端末１、又は通信状態推定装置１０として動作させるプログラムを、メモリ１００２にロードする。そして、プロセッサ１００１が、メモリ１００２にロードされたプログラムを実行することにより、コンピュータ１０００は、通信端末１、又は通信状態推定装置１０として動作する。
【０１０３】
推定部１１１、設定部１２１、検出部１２２、通信プロトコル部１３０、及び通信部１４０は、例えば、それらの部の機能を実現することができる専用のプログラムと、そのプログラムを実行するプロセッサ１００１により実現することができる。その場合、その専用のプログラムは、例えば、その専用のプログラムを記憶する記録媒体１００５からメモリ１００２に読み込まれる。あるいは、推定部１１１、設定部１２１、検出部１２２、通信プロトコル部１３０、及び通信部１４０の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
【０１０４】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０５】
（付記１）
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する推定手段と、
を備える通信状態推定装置。
【０１０６】
（付記２）
前記推定手段は、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信をできるようになるまでの時間を推定し、当該時間に基づき前記通信装置が前記通信をできるか否かを推定する
付記１に記載の通信状態推定装置。
【０１０７】
（付記３）
前記設定手段は、異なる複数の通信パラメータを前記通信装置に送信し、
前記検出手段は、前記複数の通信パラメータの各々について、当該通信パラメータに応じて判定された前記通信エラーの発生を検出する
付記１又は２に記載の通信状態推定装置。
【０１０８】
（付記４）
前記設定手段は、前記通信装置が前記通信をできないと推定された場合、再接続指示を受信するのに応じて前記通信先装置に再接続する前記通信装置に、前記再接続指示を送信する
付記１乃至３のいずれかに記載の通信状態推定装置。
【０１０９】
（付記５）
前記通信は、前記通信先端末とコネクションを確立する通信を含む
付記１乃至４のいずれかに記載の通信状態推定装置。
【０１１０】
（付記６）
前記通信は、データを送信する又は受信する通信を含む
付記１乃至５のいずれかに記載の通信状態推定装置。
【０１１１】
（付記７）
前記通信パラメータは、データの再送回数である
付記１乃至６のいずれかに記載の通信状態推定装置。
【０１１２】
（付記８）
前記通信パラメータは、通信が断絶している時間である
付記６に記載の通信状態推定装置。
【０１１３】
（付記９）
付記１乃至８のいずれかに記載の通信状態推定装置と、前記通信装置と、を含む通信端末。
【０１１４】
（付記１０）
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与え、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出し、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する
通信状態推定方法。
【０１１５】
（付記１１）
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信をできるようになるまでの時間を推定し、当該時間に基づき前記通信装置が前記通信をできるか否かを推定する
付記１０に記載の通信状態推定方法。
【０１１６】
（付記１２）
異なる複数の通信パラメータを前記通信装置に送信し、
前記複数の通信パラメータの各々について、当該通信パラメータに応じて判定された前記通信エラーの発生を検出する
付記１０又は１１に記載の通信状態推定方法。
【０１１７】
（付記１３）
前記通信装置が前記通信をできないと推定された場合、再接続指示を受信するのに応じて前記通信先装置に再接続する前記通信装置に、前記再接続指示を送信する
付記１０乃至１２のいずれかに記載の通信状態推定方法。
【０１１８】
（付記１４）
前記通信は、前記通信先端末とコネクションを確立する通信を含む
付記１０乃至１３のいずれかに記載の通信状態推定方法。
【０１１９】
（付記１５）
前記通信は、データを送信する又は受信する通信を含む
付記１０乃至１４のいずれかに記載の通信状態推定方法。
【０１２０】
（付記１６）
前記通信パラメータは、データの再送回数である
付記１０乃至１５のいずれかに記載の通信状態推定方法。
【０１２１】
（付記１７）
前記通信パラメータは、通信が断絶している時間である
付記１５に記載の通信状態推定方法。
【０１２２】
（付記１８）
コンピュータを、
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する推定手段と、
して動作させる通信状態推定プログラム。
【０１２３】
（付記１９）
コンピュータを、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信をできるようになるまでの時間を推定し、当該時間に基づき前記通信装置が前記通信をできるか否かを推定する前記推定手段と、
して動作させる付記１８に記載の通信状態推定プログラム。
【０１２４】
（付記２０）
コンピュータを、
異なる複数の通信パラメータを前記通信装置に送信する前記設定手段と、
前記複数の通信パラメータの各々について、当該通信パラメータに応じて判定された前記通信エラーの発生を検出する前記検出手段と、
して動作させる付記１８又は１９に記載の通信状態推定プログラム。
【０１２５】
（付記２１）
コンピュータを、
前記通信装置が前記通信をできないと推定された場合、再接続指示を受信するのに応じて前記通信先装置に再接続する前記通信装置に、前記再接続指示を送信する前記設定手段と、
して動作させる付記１８乃至２０のいずれかに記載の通信状態推定プログラム。
【０１２６】
（付記２２）
前記通信は、前記通信先端末とコネクションを確立する通信を含む
付記１８乃至２１のいずれかに記載の通信状態推定プログラム。
【０１２７】
（付記２３）
前記通信は、データを送信する又は受信する通信を含む
付記１８乃至２２のいずれかに記載の通信状態推定プログラム。
【０１２８】
（付記２４）
前記通信パラメータは、データの再送回数である
付記１８乃至２３のいずれかに記載の通信状態推定プログラム。
【０１２９】
（付記２５）
前記通信パラメータは、通信が断絶している時間である
付記２３に記載の通信状態推定プログラム。
【０１３０】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１３１】
この出願は、２０１４年６月１８日に出願された日本出願特願２０１４−１２４９８２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１３２】
１    通信端末
２    通信先装置
１０    通信状態推定装置
１１    通信装置
１１０    アプリケーション
１１１    推定部
１２０    制御部
１２１    設定部
１２２    検出部
１３０    通信プロトコル部
１４０    通信部
１０００    コンピュータ
１００１    プロセッサ
１００２    メモリ
１００３    記憶装置
１００４    Ｉ／Ｏインタフェース
１００５    記録媒体
【図１】
2015194134.tif 000003
【図２】
2015194134.tif 000004
【図３】
2015194134.tif 000005
【図４】
2015194134.tif 000006
【図５】
2015194134.tif 000007
【図６】
2015194134.tif 000008
【図７】
2015194134.tif 000009
【図８】
2015194134.tif 000010
【図９】
2015194134.tif 000011
【図１０】
2015194134.tif 000012
【図１１】
2015194134.tif 000013
【手続補正書】
【提出日】平成28年12月13日(2016.12.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該通信指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する推定手段と、
を備える通信状態推定装置。
【請求項２】
前記推定手段は、前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信をできるようになるまでの時間を推定し、当該時間に基づき前記通信装置が前記通信をできるか否かを推定する
請求項１に記載の通信状態推定装置。
【請求項３】
前記設定手段は、異なる複数の通信パラメータを前記通信装置に送信し、
前記検出手段は、前記複数の通信パラメータの各々について、当該通信パラメータに応じて判定された前記通信エラーの発生を検出する
請求項１又は２に記載の通信状態推定装置。
【請求項４】
前記設定手段は、前記通信装置が前記通信をできないと推定された場合、再接続指示を受信するのに応じて前記通信先装置に再接続する前記通信装置に、前記再接続指示を送信する
請求項１乃至３のいずれかに記載の通信状態推定装置。
【請求項５】
前記通信は、前記通信先装置とコネクションを確立する通信を含む
請求項１乃至４のいずれかに記載の通信状態推定装置。
【請求項６】
前記通信は、データを送信する又は受信する通信を含む
請求項１乃至５のいずれかに記載の通信状態推定装置。
【請求項７】
請求項１乃至６のいずれかに記載の通信状態推定装置と、前記通信装置と、を含む通信端末。
【請求項８】
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与え、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該通信指示に応じた前記通信において判定された通信エラーの発生を検出し、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かを推定する、
通信状態推定方法。
【請求項９】
コンピュータを、
与えられた通信パラメータに応じて、通信先装置との通信において通信エラーの発生を判定する通信装置に、前記通信パラメータを与える設定手段と、
通信指示を受信するのに応じて前記通信を行う前記通信装置に前記通信指示を送信し、当該通信指示に応じた前記通信において判定された通信エラーの発生を検出する検出手段と、
前記通信パラメータ及び前記通信エラーの発生の有無に基づき、前記通信装置が前記通信をできるか否かの推定を行う推定手段と、
して動作させる通信状態推定プログラム。
【請求項１０】
前記推定が、前記通信パラメータ及び前記通信エラーの発生の有無に基づき前記通信をできるようになるまでの時間として予測した時間に基づいて行われる
請求項９に記載の通信状態推定プログラム。
【国際調査報告】
2015194134.tif 000014
2015194134.tif 000015