(57)【要約】【課題】  テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおいて、リンクの切断または新たなリンクの接続に応じてＴＣＰ通信を適切に制御する通信方式を提供する。【解決手段】  端末１がＴＣＰ通信開始時に送信先アドレスと送信元ポート番号とをソケット情報管理テーブルに登録し、端末３がリンクの切断を検知したときに、ルーティングテーブルの経路情報のMetricをBIGに更新し、更新した経路情報を含むUpdateパケットをブロードキャストし、端末２および端末１がUpdateパケットを受信したときMetricをBIGに更新する。端末１はMetricがBIGとなったとき、その経路情報の送信先アドレスを取得し、ソケット情報管理テーブルを参照して取得した送信先アドレスに対応する送信元ポート番号を用いたＴＣＰ通信をフリーズする。【選択図】        図１６
2005086525.tif 000002
【特許請求の範囲】
【請求項１】
テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおける通信方式であって、
ＴＣＰ通信の送信元端末が、ＴＣＰ通信のコネクションの確立時に、前記ＴＣＰ通信の送信先端末のアドレス、送信元ポート番号、および送信先ポート番号を含むソケット情報をソケット情報管理テーブルに登録するステップと、
各端末が、リンクの切断を検知したときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットをブロードキャスト送信するステップと、
各端末が、前記更新された経路情報を含むパケットを受信したときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットをブロードキャスト送信するステップと、
前記ＴＣＰ通信の送信元端末が、自己の端末のルーティングテーブル内の経路情報のメトリックがリンク切断を示す値または記号となったときに、前記ルーティングテーブルから前記経路情報の送信先端末のアドレスを取得し、前記ソケット情報管理テーブルを参照して、前記取得した送信先端末のアドレスを含むソケット情報を特定し、前記特定したソケット情報に含まれる送信元ポート番号を用いたＴＣＰ通信をフリーズするステップとを含む、アドホックネットワークにおける通信方式。
【請求項２】
前記ソケット情報は、ＴＣＰ通信の状態がフリーズか、通常の動作状態を示すアクションかを示すステイタスをさらに含み、
前記ソケット情報を登録するステップでは、前記ＴＣＰ通信の送信元端末が、前記送信先端末のアドレス、送信元ポート番号、および送信先ポート番号に加えて、アクションを示すステイタスをさらに含むソケット情報をソケット情報管理テーブルに登録し、
前記ＴＣＰ通信をフリーズするステップでは、前記ＴＣＰ通信の送信元端末が、前記ソケット情報のステイタスがアクションのときに限り、前記ソケット情報の送信元ポート番号を用いたＴＣＰ通信をフリーズし、
前記ＴＣＰ通信の送信元端末が、前記ＴＣＰ通信のフリーズ後に、前記ソケット情報のステイタスをフリーズに更新するステップをさらに含む、請求項１記載のアドホックネットワークにおける通信方式。
【請求項３】
前記アドホックネットワークにおける通信方式は、さらに、
各端末が、新たな経路を発見したときには、メトリックをホップ数とした前記新たな経路の経路情報でルーティングテーブルを更新し、更新した経路情報をブロードキャスト送信するステップと、
前記ＴＣＰ通信の送信元端末が、自己の端末のルーティングテーブル内の経路情報のメトリックがリンク切断を示す値または記号からホップ数に変化したときには、前記ルーティングテーブルから前記経路情報の送信先端末のアドレスを取得し、前記ソケット情報管理テーブルを参照して、前記取得した送信先端末のアドレスを含むソケット情報を特定し、前記特定したソケット情報のステイタスがフリーズのときに限り、前記特定したソケット情報の送信元ポート番号を用いたＴＣＰ通信のフリーズ状態を解除するステップと、
前記ＴＣＰ通信の送信元端末が、前記ＴＣＰ通信のフリーズ状態の解除後に、前記ソケット情報のステイタスをアクションに更新するステップとを含む、請求項２記載のアドホックネットワークにおける通信方式。
【請求項４】
前記テーブル駆動型のルーティングプロトコルは、ＤＳＤＶプロトコルである、請求項３記載のアドホックネットワークにおける通信方式。
【請求項５】
前記ＴＣＰ通信の送信元端末が、ＴＣＰ通信のコネクションの切断時に、前記ＴＣＰ通信の送信先端末のアドレス、送信元ポート番号、および送信先ポート番号を含むソケット情報をソケット情報管理テーブルから削除するステップをさらに含む請求項１記載のアドホックネットワークにおける通信方式。
【請求項６】
テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおける通信方式であって、
ＴＣＰ通信の送信元端末のＩＰを実行処理するＩＰモジュールが、ＴＣＰを実行処理するＴＣＰモジュールによるＴＣＰ通信のコネクションの確立時に、前記ＴＣＰ通信の送信先端末のアドレス、送信元ポート番号、および送信先ポート番号とを含むソケット情報をインターネット層のソケット情報管理テーブルに登録するステップと、
各端末のテーブル駆動型のルーティングプロトコルを実行処理するデーモンが、ＭＡＣプロトコルを実行処理するＭＡＣモジュールから、転送されなかったパケットとともにリンクが切断された旨の通知を受けたときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットをＵＤＰプロトコルを実行処理するＵＤＰモジュールによってブロードキャスト送信させるステップと、
各端末の前記デーモンが、前記更新された経路情報を含むパケットを受信したときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットを前記ＵＤＰモジュールによってブロードキャスト送信させるステップと、
ＴＣＰ通信の送信元端末の前記デーモンが、自己の端末のルーティングテーブル内の経路情報のメトリックを監視し、経路情報のメトリックがリンク切断を示す値または記号となったときに、前記ルーティングテーブルから前記経路情報の送信先端末のアドレスを取得し、前記ソケット情報管理テーブルを参照して、前記取得した送信先端末のアドレスを含むソケット情報を特定し、前記ＴＣＰモジュールに対して、前記特定したソケット情報に含まれる送信元ポート番号を用いたＴＣＰ通信をフリーズさせるステップとを含む、アドホックネットワークにおける通信方式。
【請求項７】
前記ソケット情報を登録するステップは、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、ＩＰパケットを送信するときに、前記ＩＰパケットからＴＣＰヘッダを取得するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮが設定されているときには、さらに、前記ＩＰパケットよりＩＰヘッダを取得するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記ＩＰヘッダ内の送信元端末のアドレスが自端末のアドレスであるときには、前記取得したＴＣＰヘッダから送信元ポート番号および送信先ポート番号を取得し、前記取得したＩＰヘッダから送信先端末のアドレスを取得し、前記取得した送信先端末のアドレス、送信元ポート番号、および送信先ポート番号をメモリに保持するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、コネクション確立処理中であることを示すフラグを所定の値に設定するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記フラグが前記所定の値に設定されているときに、ＩＰパケットを受信したときには、前記ＩＰパケットからＴＣＰヘッダを取得するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮ、またはＡＣＫが設定されているときには、さらに、前記ＩＰパケットよりＩＰヘッダを取得するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記ＩＰヘッダ内の送信先端末のアドレスが自端末のアドレスであるときには、前記メモリに保持されている送信先端末のアドレス、送信元ポート番号および送信先ポート番号とを含み、通常の動作状態を示すアクションをステイタスとして含むソケット情報をソケット情報管理テーブルに登録するステップを含む、請求項６記載のアドホックネットワークにおける通信方式。
【請求項８】
前記アドホックネットワークにおける通信方式は、さらに、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、ＩＰパケットを送信するときに、前記ＩＰパケットからＴＣＰヘッダを取得するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＦＩＮが設定されているときには、さらに、前記ＩＰパケットよりＩＰヘッダを取得するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記ＩＰヘッダ内の送信元端末のアドレスが自端末のアドレスであるときには、前記取得したＴＣＰヘッダから送信元ポート番号および送信先ポート番号を取得し、前記取得したＩＰヘッダから送信先端末のアドレスを取得するステップと、
前記ＴＣＰ通信の送信元端末のＩＰモジュールが、前記取得した送信先端末のアドレス、送信元ポート番号、および送信先ポート番号を含むソケット情報を前記ソケット情報管理テーブルから削除するステップとを含む、請求項７記載のアドホックネットワークにおける通信方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドホックネットワークにおける通信方式に関し、特に、テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおける通信方式に関する。
【背景技術】
【０００２】
アドホックネットワークとは、複数の無線端末が相互に通信を行なうことによって自律的、即時的に構築されるネットワークをいう。アドホックネットワークでは、通信する２つの無線端末が互いの通信エリアに存在しない場合、２つの無線端末の中間に位置する無線端末がルータとして機能しデータパケットを中継するので、広範囲のマルチホップネットワークを形成することができる。
【０００３】
アドホックネットワークでは、中継する無線端末の移動などにより、リンクの切断が頻繁に生じる。そのため、迅速にルートを再構築することが必要となり、そのためのルーティングプロトコルが種々提案されている。
【０００４】
現在までに提案されているアドホックネットワークのルーティングプロトコルは、２つのグループに分けられる。
【０００５】
第１のグループは、オンデマンド型のルーティングプロトコルである。このグループのルーティングプロトコルでは、通信要求が発生するたびに（オンデマンド）、宛先までのルートを探索する。代表的なプロトコルとして、Dynamic Source Routing（ＤＳＲ）プロトコルがある。
【０００６】
第２のグループは、テーブル駆動型のルーティングプロトコルである。このグループのルーティングプロトコルでは、各宛先へのルートを予めテーブルのエントリとして作成しておく。代表的なプロトコルとして、Destination-Sequenced-Distance-Vector（ＤＳＤＶ）プロトコルがある（たとえば、非特許文献１参照）。
【０００７】
ところで、有線ネットワーク上で運用されているアプリケーションの多くは、トランスポート層のプロトコルとしてＴＣＰを用いている。したがって、アドホックネットワーク上でも既存のアプリケーションを動作させるためには、トランスポート層のプロトコルとしてＴＣＰを用いることが必要となる。
【０００８】
ＴＣＰ通信では、コネクションを確立したＴＣＰ通信の端末の間のどこかでリンクが切断されていても、ＴＣＰ通信が続行され、無駄なパケットの送信が行なわれるとともに、ＴＣＰ通信のスループットが低下する。
【０００９】
この問題に対処する方法として、非特許文献２では、オンデマンド型ルーティングプロトコルであるＤＳＲを対象に、リンクが切断されたときにＴＣＰ通信をフリーズし、新たにリンクが接続されたときにＴＣＰ通信のフリーズを解除するといったＴＣＰ通信の制御方式が記載されている。
【非特許文献１】C.E.Perkins and P.Bhagwat, "Destination sequenced distance-vector rooting (DSDV) for mobile computers", Proc.ACM/IEEE SIGCOM94, pp234-244,Aug.1994
【非特許文献２】G.Holland and N.H.Vaidya, "Analysis of TCP performance over middle ad hoc networks", Proc.ACM/IEEE MOBICOM'99, pp219-230, Aug.1999
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述の非特許文献２に記載されている方式は、オンデマンド型のルーティングプロトコルに特有の方式である。テーブル駆動型のルーティングテーブルには、このような方式を用いることができない。
【００１１】
また、オンデマンド型のルーティングプロトコルでは、パケットの転送要求に応じてルートの探索を行なうため、パケットの転送開始が遅れるのに対して、テーブル駆動型のルーティングプロトコルでは、このような問題がない。また、テーブル駆動型のルーティングプロトコルでは、ネットワークのトポロジイの変化に反応してネットワーク全体に経路の更新情報が伝送される。
【００１２】
したがって、パケットの転送が迅速に開始されるとともに、トポロジイのダイナミックな変化に迅速に対応できるという利点を有するテーブル駆動型のルーティングプロトコルにおいて、リンクが切断されたとき、または新たなリンクが接続されたときに、ＴＣＰ通信を制御することが重要である。
【００１３】
それゆえに、本発明の目的は、テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおいて、リンクの切断または新たなリンクの接続に応じて、ＴＣＰ通信を適切に制御するアドホックネットワークにおける通信方式を提供することである。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明は、テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおける通信方式であって、ＴＣＰ通信の送信元端末が、ＴＣＰ通信のコネクションの確立時に、ＴＣＰ通信の送信先端末のアドレス、送信元ポート番号、および送信先ポート番号を含むソケット情報をソケット情報管理テーブルに登録するステップと、各端末が、リンクの切断を検知したときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットをブロードキャスト送信するステップと、各端末が、更新された経路情報を含むパケットを受信したときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットをブロードキャスト送信するステップと、ＴＣＰ通信の送信元端末が、自己の端末のルーティングテーブル内の経路情報のメトリックがリンク切断を示す値または記号となったときに、ルーティングテーブルから経路情報の送信先端末のアドレスを取得し、ソケット情報管理テーブルを参照して、取得した送信先端末のアドレスを含むソケット情報を特定し、特定したソケット情報に含まれる送信元ポート番号を用いたＴＣＰ通信をフリーズするステップとを含む。
【００１５】
好ましくは、ソケット情報は、ＴＣＰ通信の状態がフリーズか、通常の動作状態を示すアクションかを示すステイタスをさらに含み、ソケット情報を登録するステップでは、ＴＣＰ通信の送信元端末が、送信先端末のアドレス、送信元ポート番号、および送信先ポート番号に加えて、アクションを示すステイタスをさらに含むソケット情報をソケット情報管理テーブルに登録し、ＴＣＰ通信をフリーズするステップでは、ＴＣＰ通信の送信元端末が、ソケット情報のステイタスがアクションのときに限り、ソケット情報の送信元ポート番号を用いたＴＣＰ通信をフリーズし、ＴＣＰ通信の送信元端末が、ＴＣＰ通信のフリーズ後に、ソケット情報のステイタスをフリーズに更新するステップをさらに含む。
【００１６】
より好ましくは、アドホックネットワークにおける通信方式は、さらに、各端末が、新たな経路を発見したときには、メトリックをホップ数とした新たな経路の経路情報でルーティングテーブルを更新し、更新した経路情報をブロードキャスト送信するステップと、ＴＣＰ通信の送信元端末が、自己の端末のルーティングテーブル内の経路情報のメトリックがリンク切断を示す値または記号からホップ数に変化したときには、ルーティングテーブルから経路情報の送信先端末のアドレスを取得し、ソケット情報管理テーブルを参照して、取得した送信先端末のアドレスを含むソケット情報を特定し、特定したソケット情報のステイタスがフリーズのときに限り、特定したソケット情報の送信元ポート番号を用いたＴＣＰ通信のフリーズ状態を解除するステップと、ＴＣＰ通信の送信元端末が、ＴＣＰ通信のフリーズ状態の解除後に、ソケット情報のステイタスをアクションに更新するステップとを含む。
【００１７】
より好ましくは、テーブル駆動型のルーティングプロトコルは、ＤＳＤＶプロトコルである。
【００１８】
好ましくは、ＴＣＰ通信の送信元端末が、ＴＣＰ通信のコネクションの切断時に、ＴＣＰ通信の送信先端末のアドレス、送信元ポート番号、および送信先ポート番号を含むソケット情報をソケット情報管理テーブルから削除するステップをさらに含む。
【００１９】
また、本発明は、テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおける通信方式であって、ＴＣＰ通信の送信元端末のＩＰを実行処理するＩＰモジュールが、ＴＣＰを実行処理するＴＣＰモジュールによるＴＣＰ通信のコネクションの確立時に、ＴＣＰ通信の送信先端末のアドレス、送信元ポート番号、および送信先ポート番号とを含むソケット情報をインターネット層のソケット情報管理テーブルに登録するステップと、各端末のテーブル駆動型のルーティングプロトコルを実行処理するデーモンが、ＭＡＣプロトコルを実行処理するＭＡＣモジュールから、転送されなかったパケットとともにリンクが切断された旨の通知を受けたときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットをＵＤＰプロトコルを実行処理するＵＤＰモジュールによってブロードキャスト送信させるステップと、各端末のデーモンが、更新された経路情報を含むパケットを受信したときに、自己の端末のルーティングテーブルの対応する経路情報のメトリックをリンク切断を示す値または記号に更新し、更新した経路情報を含むパケットをＵＤＰモジュールによってブロードキャスト送信させるステップと、ＴＣＰ通信の送信元端末のデーモンが、自己の端末のルーティングテーブル内の経路情報のメトリックを監視し、経路情報のメトリックがリンク切断を示す値または記号となったときに、ルーティングテーブルから経路情報の送信先端末のアドレスを取得し、ソケット情報管理テーブルを参照して、取得した送信先端末のアドレスを含むソケット情報を特定し、ＴＣＰモジュールに対して、特定したソケット情報に含まれる送信元ポート番号を用いたＴＣＰ通信をフリーズさせるステップとを含む。
【００２０】
好ましくは、ソケット情報を登録するステップは、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＩＰパケットを送信するときに、ＩＰパケットからＴＣＰヘッダを取得するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮが設定されているときには、さらに、ＩＰパケットよりＩＰヘッダを取得するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＩＰヘッダ内の送信元端末のアドレスが自端末のアドレスであるときには、取得したＴＣＰヘッダから送信元ポート番号および送信先ポート番号を取得し、取得したＩＰヘッダから送信先端末のアドレスを取得し、取得した送信先端末のアドレス、送信元ポート番号、および送信先ポート番号をメモリに保持するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、コネクション確立処理中であることを示すフラグを所定の値に設定するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、フラグが所定の値に設定されているときに、ＩＰパケットを受信したときには、ＩＰパケットからＴＣＰヘッダを取得するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮ、またはＡＣＫが設定されているときには、さらに、ＩＰパケットよりＩＰヘッダを取得するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＩＰヘッダ内の送信先端末のアドレスが自端末のアドレスであるときには、メモリに保持されている送信先端末のアドレス、送信元ポート番号および送信先ポート番号とを含み、通常の動作状態を示すアクションをステイタスとして含むソケット情報をソケット情報管理テーブルに登録するステップを含む。
【００２１】
より好ましくは、アドホックネットワークにおける通信方式は、さらに、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＩＰパケットを送信するときに、ＩＰパケットからＴＣＰヘッダを取得するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＦＩＮが設定されているときには、さらに、ＩＰパケットよりＩＰヘッダを取得するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、ＩＰヘッダ内の送信元端末のアドレスが自端末のアドレスであるときには、取得したＴＣＰヘッダから送信元ポート番号および送信先ポート番号を取得し、取得したＩＰヘッダから送信先端末のアドレスを取得するステップと、ＴＣＰ通信の送信元端末のＩＰモジュールが、取得した送信先端末のアドレス、送信元ポート番号、および送信先ポート番号を含むソケット情報をソケット情報管理テーブルから削除するステップとを含む。
【発明の効果】
【００２２】
本発明によれば、テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおいて、リンクの切断または新たなリンクの接続に応じて、ＴＣＰ通信を適切に制御することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態について図面を用いて説明する。
【００２４】
図１は、アドホックネットワークの構成を示す。同図に示すように、複数の無線端末１〜７が自律的にネットワークを構成している。このアドホックネットワークにより、たとえば、無線端末３は、無線端末４から離れた位置にあり、直接パケットを受取ることができないので、無線端末４から送信されたパケットは、無線端末２、無線端末９、および無線端末６とによって中継されて無線端末３へ届けられる。
【００２５】
図２は、無線端末１の構成を示す。他の無線端末２〜９の構成も同一である。
図２を参照して、無線端末１は、入力部１１と、表示部１２と、アンテナ２５と、電子メールアプリケーション１３と、通信制御部１４とを備える。
【００２６】
電子メールアプリケーション１３は、いわゆるメイラであって、入力部１１からのメッセージ、宛先などの入力に基づき、データを作成し、通信制御部１４にデータを送る。また、電子メールアプリケーション１３は、通信制御部１４から受けたデータに基づきメッセージを表示部１２に表示させる。
【００２７】
アンテナ２５は、他の無線端末から無線信号を受信するとともに、他の無線端末へ無線信号を送信する。
【００２８】
通信制御部１４は、ＡＲＰＡ（Advanced Research Projects Agency)インターネット階層構造に従って、通信制御を行なう複数のモジュールを備える。
【００２９】
物理層の無線インタフェースモジュール２４は、所定の規定にしたがって、送信信号または受信信号の変復調、および周波数変換などを行なう。
【００３０】
ネットワーク層の上位層のＬＬＣモジュール２２は、ＬＬＣプロトコルの実行処理部であり、隣接する無線端末との間でリンクの接続および解放を行なう。
【００３１】
ネットワーク層の下位層のＭＡＣモジュール２３は、ＭＡＣプロトコルの実行処理部であり、再送制御などを行なう。ＭＡＣモジュール２３は、パケットの再送回数が所定値を越えたことによってリンクが切断されたことを検知して、ＤＳＤＶデーモン１６にリンク切断されたこと、および再送されなかったＩＰパケットを通知する。
【００３２】
インターネット層のＩＰモジュール１９は、ＩＰ（Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ）の実行処理部である。ＩＰモジュール１９は、ＩＰパケットを生成する。ＩＰパケットは、ＩＰヘッダと、上位のプロトコルのパケットを格納するためのＩＰデータ部とからなる。
【００３３】
図３は、ＩＰヘッダの構成を示す。同図に示すＩＰヘッダ内の送信先アドレスおよび送信元アドレスは、ソケット情報管理テーブル２０内のソケット情報の作成のために用いられる。
【００３４】
トランスポート層のＴＣＰモジュール１７は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ Ｃｏｎｔｒｏｌ Ｐｒｏｔｏｃｏｌ）の実行処理部である。ＴＣＰモジュール１７は、ＴＣＰパケットを生成する。ＴＣＰパケットは、ＴＣＰヘッダと、上位のプロトコルのデータを格納するためのＴＣＰデータ部とからなる。このＴＣＰパケットは、ＩＰモジュール１９に渡されて、ＩＰパケット内のＩＰデータ部に格納される。
【００３５】
図４は、ＴＣＰヘッダの構成を示す。同図に示すＴＣＰヘッダ内の送信元ポート番号とは、送信元の無線端末で複数のアプリケーションが動作しているときに、このＴＣＰパケットを出力したアプリケーションを特定する番号である。また、送信先ポート番号とは、送信先の無線端末で複数のアプリケーションが動作しているときに、このＴＣＰパケットを届けるアプリケーションを特定する番号である。これらの送信元ポート番号および送信先ポート番号は、ソケット情報管理テ−ブル２０内のソケット情報の作成のために用いられる。
【００３６】
ＴＣＰ通信は、エンド・ツー・エンドのコネクション型通信プロトコルであるる。ＴＣＰ通信のコネクション接続を要求する端末（以下、ＴＣＰ通信接続要求端末）のＴＣＰモジュール１７は、コネクションの確立時に、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮ(Synchronize Flag)を設定したコネクションの接続要求を示す第１パケットをＴＣＰ通信のコネクション接続を受理する端末（以下、ＴＣＰ通信接続受理端末）のＴＣＰモジュール１７へ送信する。これを受けて、ＴＣＰ通信接続受理端末）のＴＣＰモジュール１７は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮ(Synchronize Flag)およびＡＣＫ（確認応答）を設定したコネクションの接続要求受理および接続完了を示す第２パケットをＴＣＰ通信接続要求端末のＴＣＰモジュール１７へ送信する。さらに、これを受けて、ＴＣＰ通信接続要求端末のＴＣＰモジュール１７は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＡＣＫ（確認応答）に設定したコネクションの接続完了を示す第３パケットをＴＣＰ通信接続受理端末のＴＣＰモジュール１７へ送信する。
【００３７】
ＴＣＰ通信接続要求端末がＴＣＰ通信の送信元端末（すなわち、データを送信し、そのデータに対するＡＣＫを受信する側の端末）のときには、ＴＣＰモジュール１７による第１パケットの送信がＩＰモジュール１９に検知され、かつＴＣＰモジュール１７による第２パケットの受信がＩＰモジュール１９に検知されることによって、ＴＣＰ通信接続要求端末にソケット情報が作成される。
【００３８】
また、ＴＣＰ通信接続受理端末がＴＣＰ通信の送信元端末のときには、ＴＣＰモジュール１７による第２パケットの送信がＩＰモジュール１９に検知され、かつＴＣＰモジュール１７による第３パケットの受信がＩＰモジュール１９に検知されることによって、ＴＣＰ通信接続受理端末にソケット情報が作成される。
【００３９】
コネクションの切断要求は、ＴＣＰ通信要求端末およびＴＣＰ通信受理端末のいずれの側からでも行なうことができる。ＴＣＰ通信のコネクション切断を要求する端末（以下、ＴＣＰ通信切断要求端末）のＴＣＰモジュール１７は、コネクションの切断時に、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＦＩＮ(Finish Flag)に設定したコネクションの切断要求を示す第１パケットをＴＣＰ通信のコネクション切断を受理する端末（以下、ＴＣＰ通信切断受理端末）へ送信する。これを受けて、ＴＣＰ通信切断受理端末のＴＣＰモジュール１７は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＡＣＫ(確認応答)に設定したコネクションの切断要求受理を示す第２パケットと、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＦＩＮ(Finish Flag)に設定したコネクションの切断完了を示す第３パケットをＴＣＰ通信切断要求端末のＴＣＰモジュール１７へ送信する。さらに、これを受けて、ＴＣＰ通信切断要求端末のＴＣＰモジュール１７は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＡＣＫ(確認応答)に設定したコネクションの切断完了を示す第４パケットをＴＣＰ通信切断受理端末のＴＣＰモジュール１７へ送信する。
【００４０】
ＴＣＰ通信切断要求端末がＴＣＰ通信の送信元端末のときには、ＴＣＰモジュール１７による第１パケットの送信がＩＰモジュール１９に検知されることによって、ＴＣＰ通信切断要求端末のソケット情報が削除される。
【００４１】
また、ＴＣＰ通信切断受理端末がＴＣＰ通信の送信元端末のときには、ＴＣＰモジュール１７による第３パケットの送信がＩＰモジュール１９に検知されることによって、ＴＣＰ通信切断受理端末のソケット情報が削除される。
【００４２】
ＴＣＰモジュール１７は、ＤＳＤＶデーモン１６から送信元ポート番号とともに、ＴＣＰ通信をフリーズする指示を受けると後述するＴＣＰ通信フリーズ処理を実行する。
【００４３】
また、ＴＣＰモジュール１７は、ＤＳＤＶデーモン１６から、送信元ポート番号とともに、ＴＣＰ通信のフリーズを解除する指示を受けると、後述するＴＣＰ通信フリーズ解除処理を実行する。
【００４４】
トランスポート層のＵＤＰモジュール１８は、ＵＤＰ（Ｕｓｅｒ Ｄａｔａｇｒａｍ Ｐｒｏｔｏｃｏｌ）の実行処理部である。ＵＤＰモジュール１８は、ＤＳＤＶデーモン１６で作成されたＵｐｄａｔｅパケットをブロードキャスト送信し、他の無線端末からブロードキャスト送信されたＵｐｄａｔｅパケットを受信して、ＤＳＤＶデーモン１６に渡す。
【００４５】
プロセス／アプリケーション層のＳＭＴＰモジュール１５は、ＳＭＴＰ(Simple Mail Transfer Protocol)の実行処理部である。ＳＭＴＰモジュール１５は、電子メールアプリケーション１３から受取ったデータに基づき、全二重通信チャネルの確保や、メッセージの交換などを行なう。
【００４６】
プロセス／アプリケーション層のＤＳＤＶデーモン１６は、他の通信制御モジュールの実行状態を監視するとともに、他の通信制御モジュールからのリクエストを処理する。つまり、ＤＳＤＶデーモン１６は、テーブル駆動型ルーティングプロトコルであるＤＳＤＶプロトコルの実行処理部であるとともに、本実施の形態特有の処理を行なう。
【００４７】
以下、本発明の実施形態の特徴的な処理である、以下の（１）〜（６）の処理について説明する。（１）  アドホックネットワークのルーティング、（２）  リンク切断の検知および通知、（３）ソケット情報の登録、（４）  ＴＣＰ通信フリーズの移行制御、（５）  ＴＣＰ通信フリーズの解除制御、（６）ソケット情報の削除。これらのうち、（１）および（２）は、従来のＤＳＤＶデーモンでも行なわれている処理であり、（３）および（６）は、本実施の形態のＩＰモジュール１９の特有の処理であり、（４）および（５）は、本実施の形態のＤＳＤＶデーモン１６の特有の処理である。
【００４８】
以下、（１）〜（６）の処理内容について説明する。
【００４９】
（１）  アドホックネットワークのルーティング
ＤＳＤＶデーモン１６は、定期的に経路情報を交換しあって、取得した経路情報に基づいて最適な経路を算出して、インターネット層にルーティングテーブル２１を動的に作成する。
【００５０】
図５は、ルーティングテーブル２１の例を示す。同図を参照して、このルーティングテーブル２１の各エントリである経路情報は、送信先アドレスと、ＮｅｘｔＨｏｐアドレスと、Ｍｅｔｒｉｃと、ＳｅｑＮｕｍとからなる。
【００５１】
送信先アドレスは、送信先端末のＩＰアドレスを示す。ＮｅｘｔＨｏｐアドレスは、次のホップ端末のＩＰアドレスを示す。Ｍｅｔｒｉｃが所定値ＢＩＧのときには、この経路情報による経路（リンク）が切断されていることを表わす。Ｍｅｔｒｉｃが所定値ＢＩＧ以外のときは、送信先端末までのホップ数を示す。ここで、所定値ＢＩＧは、送信先端末までのホップ数を表わすための数値となることがありなえないような、十分に大きな値とする。ＳｅｑＮｕｍ(Sequence Number)とは、この経路情報が生成された順番を示す。
【００５２】
図５に示すルーティングテーブルの例では、第１の経路は、送信元端末を無線端末１とし、送信先端末を無線端末３とする経路であり、無線端末１が送信したパケットを最初に中継する端末が無線端末２であり、無線端末１が送信したパケットは、（Ｍｅｔｒｉｃが４より）３つの中継端末を経由して無線端末３に届くことを示している。
【００５３】
また、第２の経路は、送信元端末を無線端末１とし、送信先端末を無線端末７とする経路であり、無線端末１が送信したパケットを最初に中継する端末が無線端末５であり、無線端末１が送信したパケットは、（Ｍｅｔｒｉｃが３より）２つの中継端末を経由して無線端末７に届くことを示している。
【００５４】
また、第３の経路は、送信元端末を無線端末１とし、送信先端末を無線端末４とする経路であり、無線端末１が送信したパケットを最初に中継する端末が無線端末２であり、無線端末１が送信したパケットは、（Ｍｅｔｒｉｃが２より）１つの中継端末（つまり、無線端末２）を経由して無線端末４に届くことを示している。
【００５５】
ＤＳＤＶデーモン１６は、次のようにして定期的な経路の探索処理を行なう。まず、ＤＳＤＶデーモン１６は、自己の経路情報のＳｅｑＮｕｍをインクリメントする。これによって、この経路情報は、他の無線端末が持つルーティングテーブル２１内の経路情報よりも新しいことを表わす。ＤＳＤＶデーモン１６は、Ｕｐｄａｔｅパケットに最新のルーティングテーブル２１内の経路情報のすべてを登録して、ＵｐｄａｔｅパケットをＵＤＰモジュール１８によってブロードキャスト送信する。
【００５６】
他の無線端末のＤＳＤＶデーモン１６は、このＵｐｄａｔｅパケットを受信すると、このＵｐｄａｔｅパケット内の経路情報に基づき、自己の無線端末のルーティングテーブル２１内の経路情報を更新するとともに、必要に応じて、自己の無線端末のルーティングテーブル２１内の経路情報をすべて登録したＵｐｄａｔｅパケットをＵＤＰモジュール１８によってブロードキャスト送信する。
【００５７】
また、ＤＳＤＶデーモン１６は、次のようにしてＩＰパケットの転送処理を行なう。ＤＳＤＶデーモン１６は、ルーティングテーブル２０を参照して、生成したＩＰパケットまたは他の無線端末から受取ったＩＰパケットの送信先アドレスと同一の送信先アドレスの経路情報を特定し、下位のモジュールに対して、その経路情報のＮｅｘｔＨｏｐアドレスで特定される無線端末へＩＰパケットを送信させる。
【００５８】
（２）  リンク切断の検知および通知
ＤＳＤＶデーモン１６は、ＭＡＣモジュール２３からリンクが切断された旨の通知を受けたとき、または他の無線端末からリンクが切断された旨の通知を受けたときには、上述の定期的な探索処理によらずに、自己の無線端末のルーティングテーブル２１を更新するとともに、即座にＵＤＰモジュール１８によりＵｐｄａｔｅパケットをブロードキャスト送信させて、リンクが切断したことを他の無線端末へ通知する。
【００５９】
図６に示すフローチャートを用いて、ＤＳＤＶデーモン１６によるリンク切断の検知および通知処理の手順を説明する。
【００６０】
いずれかの無線端末のＭＡＣモジュール２３が、キャリアセンスによって、パケットの再送回数が所定回数を越えたことを検知することによって、リンクが切断されていることを検知して、リンクが切断されたこと、および転送されなかったＩＰパケットをＤＳＤＶデーモン１６に通知する（Ｓ１０１）。
【００６１】
ＤＳＤＶデーモン１６は、転送されなかったパケットのＩＰヘッダの送信先アドレスがルーティングテーブル２１内に存在するか否かを調べ、存在している場合には、ルーティングテーブル２１内のその送信先アドレスが含まれる経路情報のＭｅｔｒｉｃをＢＩＧに更新する（Ｓ１０２，Ｓ１０３）。
【００６２】
ＤＳＤＶデーモン１６は、変更した経路情報を含むＵｐｄａｔｅパケットを作成して、そのＵｐｄａｔｅパケットをＵＤＰモジュール１８に送り、ブロードキャスト送信させる（Ｓ１０４）。
【００６３】
他の無線端末のＤＳＤＶデーモン１６は、ＵＤＰモジュール１８が受信したＵｐｄａｔｅパケットを受取る（Ｓ１０５）。
【００６４】
ＤＳＤＶデーモン１６は、Ｕｐｄａｔｅパケットに含まれる経路情報の送信先アドレスがルーティングテーブル２１内に存在し、かつそのＭｅｔｒｉｃがＢＩＧでない場合には、ルーティングテーブル２１内のその送信先アドレスが含まれる経路情報のＭｅｔｒｉｃをＢＩＧに更新する（Ｓ１０６，Ｓ１０７）。
【００６５】
ＤＳＤＶデーモン１６は、変更した経路情報を含むＵｐｄａｔｅパケットを作成して、そのＵｐｄａｔｅパケットをＵＤＰモジュール１８に送り、ブロードキャスト送信させる（Ｓ１０８）。
【００６６】
上述のＳ１０５〜Ｓ１０８の処理は、Ｓ１０６においてＵｐｄａｔｅパケットに含まれる経路情報の送信先アドレスがルーティングテーブル２１内に存在しないと判定されるか、または存在してもそのＭｅｔｒｉｃがＢＩＧと判定されるまで、繰り返される。
【００６７】
（３）  ソケット情報の登録
ＴＣＰ通信接続要求端末およびＴＣＰ通信接続受理端末のＩＰモジュール１９は、アプリケーション１３から自端末が、ＴＣＰ通信においてデータを送信し、そのデータに対するＡＣＫを受信する側の端末（以下、ＴＣＰ通信の送信元端末という）であるとの通知を受けたときには、ＴＣＰ通信のコネクションの確立時に、図２に示すＴＣＰヘッダと、図３に示すＩＰヘッダとに基づいて、そのＴＣＰ通信に関するソケット情報をインターネット層のソケット情報管理テーブル２０に登録する。
【００６８】
図７は、ＴＣＰ通信の送信元端末が無線端末１のときのソケット情報管理テーブル２０の例を示す。同図を参照して、ソケット情報管理テーブル２０内の各エントリであるソケット情報は、送信先アドレスと、送信元ポート番号と、送信先ポート番号と、ステイタスとからなる。
【００６９】
ここで、送信先アドレスとは、送信先端末のＩＰアドレスを示す。送信元ポート番号とは、送信元の無線端末（すなわち、自端末）で複数のアプリケーションが動作しているときに、ＴＣＰパケットを出力したアプリケーションを特定する番号である。また、送信先ポート番号とは、送信先の無線端末で複数のアプリケーションが動作しているときに、ＴＣＰパケットを届けるアプリケーションを特定する番号である。ステイタスは、ＡＣＴＩＯＮとＦＲＥＥＺＥの２つの状態をとる。ステイタスがＡＣＴＩＯＮとは、ＴＣＰ通信が通常に行なわれていることを示し、ステイタスがＦＲＥＥＺＥとは、ＴＣＰ通信がフリーズしていることを示す。
【００７０】
このソケット情報管理テーブル２０の例では、無線端末１のポート１と、無線端末３のポート２との間で、ＴＣＰ通信が行なわれており、通常に動作中（ＡＣＴＩＯＮ）であることを示している。また、無線端末１のポート２と、無線端末７のポート１との間で、ＴＣＰ通信が行なわれ、通常に動作中（ＡＣＴＩＯＮ）であることを示している。
【００７１】
ＴＣＰ通信の送信元端末のＩＰモジュール１９は、２段階の手続きによりソケット情報の登録を行なう。すなわち、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、ＩＰパケットの送信時にソケット情報の抽出処理を行ない、その後、ＩＰパケットの受信時にソケット情報の登録処理を行なうことによって、ソケット情報の登録を行なう。
【００７２】
図８は、ソケット情報の抽出処理を示すフローチャートである。同図を参照して、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、作成したＩＰパケットにＴＣＰヘッダが含まれているときには、そのＴＣＰヘッダを取得する（Ｓ２０１）。
【００７３】
ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮが設定されているとき（すなわち、ＴＣＰ接続要求端末が第１パケットを送信するとき）、あるいは取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮとＡＣＫが設定されているとき（すなわち、ＴＣＰ接続受理端末が第２パケットを送信するとき）には、作成したＩＰパケットからＩＰヘッダを取得する（Ｓ２０２、Ｓ２０３）。
【００７４】
そして、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＩＰヘッダ内の送信元アドレスが自端末のアドレスと一致するときには、取得したＴＣＰヘッダから送信元ポート番号と送信先ポート番号とを取得する（Ｓ２０４、Ｓ２０５）。
【００７５】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＩＰヘッダより送信先アドレスを取得する（Ｓ２０６）。
【００７６】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得した送信先アドレス、送信元ポート番号、および送信先ポート番号（送信元情報、送信先情報）をメモリに保持する（Ｓ２０７）。
【００７７】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、コネクション確立処理を行なっていることを表わすフラグＳＹＮＣを「１」に設定する。
【００７８】
次に、ＩＰモジュール１９は、ＩＰパケットを送信する（Ｓ２０９）。
【００７９】
図９は、ソケット情報の登録処理を示すフローチャートである。同図を参照して、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、ＳＹＮＣフラグが「１」に設定されているときに、受信したＩＰパケットにＴＣＰヘッダが含まれているときには、そのＴＣＰヘッダを取得する（Ｓ６０１、Ｓ６０２）。
【００８０】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮとＡＣＫが設定されているとき（すなわち、ＴＣＰ接続要求端末が第２パケットを受信したとき）、あるいは取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＡＣＫが設定されているとき（すなわち、ＴＣＰ接続受理端末が第３パケットを受信したとき）には、受信したＩＰパケットからＩＰヘッダを取得する（Ｓ６０３、Ｓ６０４）。
【００８１】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＩＰヘッダ内の送信先アドレスが自端末のアドレスと一致するときに、メモリに送信先アドレス、送信元ポート番号、および送信先ポート番号（送信元情報、送信先情報）が保持されているときには、メモリからこれらを取出し、インターネット層にソケット情報管理テーブル２０が未だ作成されていないときには新たにソケット情報管理テーブル２０を作成してこのテーブルの１つのエントリに、またはソケット情報管理テーブル２０が既に作成されているときにはこのテーブルの新たなエントリに、取出した送信先アドレス、送信元ポート番号、および送信先ポート番号と、ステイタス（ＡＣＴＩＯＮ）とからなるソケット情報を書込む（Ｓ６０６、Ｓ６０７）。
【００８２】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、ソケット情報管理テーブル２０に書込んだ送信先アドレス、送信元ポート番号、および送信先ポート番号をメモリから削除し、ＳＹＮＣフラグを「０」に設定する（Ｓ６０８、Ｓ６０９）。
【００８３】
（４）  ＴＣＰ通信フリーズの移行制御
上述の（１）で説明したように、ＤＳＤＶデーモン１６は、リンクの切断の通知を受けると、リンクが切断された経路情報のＭｅｔｒｉｃをＢＩＧに更新される。ＤＳＤＶデーモン１６は、ルーティングテーブル２１の経路情報のＭｅｔｒｉｃの変化を監視し、経路情報のＭｅｔｒｉｃがＢＩＧに変化したときには、送信元ポート番号を指定したＴＣＰ通信フリーズの移行制御を行なう。
【００８４】
ここで、ＴＣＰ通信フリーズとは、ＴＣＰモジュール１７による、指定された送信元ポート番号を用いたＴＣＰ通信の現在の状態を保持したまま、その実行を一時的に停止することをいう。具体的には、ＴＣＰ通信フリーズ時には、新規パケットの送信を停止し、再送タイマを停止し、ＴＣＰ通信フリーズ直前のウインドウサイズを保持し、および／または平均ＲＴＴ(Round Trip Time)値の計算を行なわない。以下、これらについて説明する。
【００８５】
ＴＣＰ通信では、シーケンス番号を用いてパケットの通信を行なっている。送信側では、次に送信するパケットのシーケンス番号が送信可能な最大シーケンス番号以下のときに、そのパケットの送信を行なうことができる。
【００８６】
したがって、ＴＣＰ通信フリーズ時には、送信可能な最大シーケンス番号に、既に受信したシーケンス番号を設定することによって新規パケットの送信を停止する。また、その設定前の送信可能な最大シーケンス番号を別の領域に保持しておき、ＴＣＰ通信のフリーズが解除されたときに、この保持しておいた送信可能な最大シーケンス番号を用いることによって、ＴＣＰ通信フリーズの直前の状態にもどすことができ、ＴＣＰ通信のスループットの低下を防止することができる。
【００８７】
ＴＣＰ通信では、パケットの送信時に再送タイマをスタートさせ、タイムアウト値に達するまでに確認応答パケット（ＡＣＫ）が返ってこないときには、パケットの再送を行なうが、このタイムアウト値は、平均ＲＴＴ値の関数となる。平均ＲＴＴ値は、パケットが送信されてから確認応答パケット（ＡＣＫ）が返ってくるまでの時間であるＲＴＴ(Round Trip Time)値を計測し、その平均を算出することによって得られる。
【００８８】
また、ＴＣＰ通信では、スラインディングウインドウ方式により、パケットの送信量を制御している。ウインドウサイズとは、一度に送出するパケット数をいう。受信側で１つのパケットを受取るごとに、確認応答パケット（ＡＣＫ）を送信する。送信側でこの確認応答パケット（ＡＣＫ）を受信したときには、ウインドウをスライディングさせて、次のパケットを送信する。
【００８９】
ＴＣＰ通信では、スロースタートおよび輻輳回避のアルゴリズムによって、ウインドウサイズを調整している。スロースタートでは、送信側で、再送タイマがタイムアウト値に達するとウインドウサイズを１に減らし、その後指数関数的にウインドウサイズを増加させる。輻輳回避では、ウインドウサイズが、タイムアウト時の半分の大きさになると、ウインドウサイズを１個ずつ増加させる。
【００９０】
したがって、ＴＣＰ通信フリーズ時には、再送タイマを停止することによって、パケットの無駄な再送を防止することができる。
【００９１】
また、ＴＣＰ通信フリーズの間にウインドウサイズがでたらめな値に更新され、ＴＣＰ通信フリーズの解除後に、更新されたでたらめな値または初期値からウインドウサイズをスタートするとなると、ＴＣＰ通信のスループットが低下する。したがって、ＴＣＰ通信フリーズ時には、ＴＣＰ通信フリーズ直前のウインドウサイズを保持し、ＴＣＰ通信フリーズの解除後に、保持されているウインドウサイズに基いて最適なウインドウサイズを設定することによって、ＴＣＰ通信のスループットの低下を防止することができる。
【００９２】
さらに、ＴＣＰ通信フリーズ時には、平均ＲＴＴ値の計算を行なわないことにより、ＲＴＴ値の無駄な計測を防止することができる。
【００９３】
図１０に示すフローチャートを用いて、ＤＳＤＶデーモン１６によるＴＣＰ通信フリーズの移行制御処理の手順を説明する。
【００９４】
ＤＳＤＶデーモン１６は、ルーティングテーブル２１にＭｅｔｒｉｃの値を監視し、図１１に示すようにルーティングテーブルのようにＭｅｔｒｉｃがＢＩＧとなる経路情報が発生したときには、ルーティングテーブル２１からその経路情報の送信先アドレスを取得する（Ｓ３０１，Ｓ３０２）。
【００９５】
ＤＳＤＶデーモン１６は、インターネット層にソケット情報管理テーブル２０が存在し、かつ、そのソケット情報管理テーブル２０に取得した送信先アドレスと同一の送信先アドレスのソケット情報が存在するか否かを調べる（Ｓ３０３，Ｓ３０４）。
【００９６】
ＤＳＤＶデーモン１６は、そのようなソケット情報が存在するときには、そのソケット情報のステイタスがＡＣＴＩＯＮであるか否かを調べ、ＡＣＴＩＯＮであるときには、ＴＣＰモジュール１７に対して、そのソケット情報に含まれる送信元ポート番号を用いたＴＣＰ通信のフリーズを指示する（Ｓ３０４，Ｓ３０５）。
【００９７】
さらに、ＤＳＤＶデーモン１６は、ルーティングテーブル２１内のそのソケット情報のステイタスをＦＲＥＥＺＥに更新する。これにより、図７のソケット情報管理テーブル２０は、図１２に示すようなソケット情報管理テーブル２０に変更される（Ｓ３０６）。
【００９８】
（５）  ＴＣＰ通信フリーズの解除制御
ＤＳＤＶデーモン１６による定期探索処理によって、ＴＣＰ通信フリーズしているＴＣＰ通信の送信先端末への新たなルートが発見されたときには、ルーティングテーブル２１のＭｅｔｒｉｃは、ＢＩＧからＢＩＧ以外の値に更新される。ＤＳＤＶデーモン１６は、ルーティングテーブル２１の経路情報のＭｅｔｒｉｃの変化を監視し、ＭｅｔｒｉｃがＢＩＧからＢＩＧ以外の値に変化したときには、ＴＣＰ通信フリーズの解除制御を行なう。
【００９９】
ここで、ＴＣＰ通信フリーズの解除とは、ＴＣＰモジュール１７による、指定された送信元ポート番号を用いたＴＣＰ通信のフリーズ状態を解除すること、具体的には、新規パケットの送信を再開し、再送タイマを動作させ、ウインドウサイズをＴＣＰ通信フリーズ直前の値からスタートさせ、および／または平均ＲＴＴ値の計算を再開する（再開前のパケットはすべて計算の対象外とする）ことをいう。
【０１００】
図１３に示すフローチャートを用いて、ＤＳＤＶデーモン１６によるＴＣＰ通信フリーズの解除制御処理の手順を説明する。
【０１０１】
ＤＳＤＶデーモン１６は、ルーティングテーブル２１にＭｅｔｒｉｃの値を監視し、図１４に示すルーティングテーブルのようにＭｅｔｒｉｃがＢＩＧからＢＩＧ以外の値に変化した経路情報が発生したときには、ルーティングテーブル２１からその経路情報の送信先アドレスを取得する（Ｓ４０１，Ｓ４０２）。
【０１０２】
ＤＳＤＶデーモン１６は、インターネット層にソケット情報管理テーブル２０が存在し、かつ、そのソケット情報管理テーブル２０に取得した送信先アドレスと同一の送信先アドレスのソケット情報が存在するか否かを調べる（Ｓ４０３，Ｓ４０４）。
【０１０３】
ＤＳＤＶデーモン１６は、そのようなソケット情報が存在するときには、そのソケット情報のステイタスがＦＲＥＥＺＥであるか否かを調べ、ＦＲＥＥＺＥであるときには、ＴＣＰモジュール１７にそのソケット情報に含まれる送信元ポート番号とともにＴＣＰ通信フリーズの解除を指示する（Ｓ４０５，Ｓ４０６）。
【０１０４】
さらに、ＤＳＤＶデーモン１６は、ルーティングテーブル２１内のそのソケット情報のステイタスをＡＣＴＩＯＮに更新する。これにより、図１２のソケット情報管理テーブル２０は、図７のソケット情報管理テーブル２０にもどされる（Ｓ４０７）。
【０１０５】
（６）  ソケット情報の削除
ＴＣＰ通信の送信元端末のＩＰモジュール１９は、ＴＣＰ通信のコネクションの切断時に、図２に示すＴＣＰヘッダと、図３に示すＩＰヘッダとに基づいて、そのＴＣＰ通信に関するソケット情報を、ソケット情報管理テーブル２０から削除する。
【０１０６】
図１５は、ソケット情報の削除処理を示すフローチャートである。同図を参照して、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、作成したＩＰパケットにＴＣＰヘッダが含まれているときには、そのＴＣＰヘッダを取得する（Ｓ５０１）。
【０１０７】
ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＦＩＮが設定されているとき（すなわち、ＴＣＰ切断要求端末が第１パケットを送信するとき、あるいはＴＣＰ通信切断受理端末が第３パケットを送信するとき）には、作成したＩＰパケットからＩＰヘッダを取得する（Ｓ５０２、Ｓ５０３）。
【０１０８】
そして、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＩＰヘッダ内の送信元アドレスが自端末のアドレスと一致するときには、取得したＴＣＰヘッダから送信元ポート番号と送信先ポート番号とを取得する（Ｓ５０４、Ｓ５０５）。
【０１０９】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＩＰヘッダより送信先アドレスを取得する（Ｓ５０６）。
【０１１０】
次に、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得した送信先アドレス、送信元ポート番号、および送信先ポート番号を含むソケット情報がインターネット層のソケット情報管理テーブル２０が登録されているときには、そのソケット情報を削除する（Ｓ５０７）。
【０１１１】
（アドホックネットワークによる通信動作の例）
次に、図１６を参照して、アドホックネットワークによる通信動作の例を説明する。この例では、無線端末１がＴＣＰ通信の送信元端末であり、無線端末１がＴＣＰ通信接続要求端末で、無線端末４がＴＣＰ通信接続受理端末であるとする。
【０１１２】
無線端末１のＴＣＰモジュール１７と、無線端末４のＴＣＰモジュール１７とは、ＴＣＰ通信を行なう。無線端末１のＩＰモジュール１９は、ＴＣＰモジュール１７によるＴＣＰ通信のコネクション確立時に、ＴＣＰヘッダおよびＩＰヘッダに基づいて、ソケット情報をインターネット層のソケット情報管理テーブル２０に登録する。無線端末１のソケット情報は、図１６に示すように、送信先アドレスが無線端末４のアドレスで、送信元ポート番号が１で、送信先ポート番号が２で、ステイタスがＡＣＴＩＯＮである。
【０１１３】
無線端末１のルーティングテーブル２１は、送信先アドレスが無線端末４のアドレスで、ＮｅｘｔＨｏｐアドレスが無線端末２のアドレスで、Ｍｅｔｒｉｃが３で、ＳｅｑＮｕｍが０である経路情報を有する。また、無線端末２のルーティングテーブル２１は、送信先アドレスが無線端末４のアドレスで、ＮｅｘｔＨｏｐアドレスが無線端末３のアドレスで、Ｍｅｔｒｉｃが２で、ＳｅｑＮｕｍが０である経路情報を有する。また、無線端末３のルーティングテーブル２１は、送信先アドレスが無線端末４のアドレスで、ＮｅｘｔＨｏｐアドレスが無線端末４のアドレスで、Ｍｅｔｒｉｃが１で、ＳｅｑＮｕｍが０である経路情報を有する。したがって、無線端末１から送信されたパケットは、無線端末２と無線端末３とを経由して無線端末４に届けられる。
【０１１４】
無線端末３のＭＡＣモジュール２３が、パケットの再送回数が所定回数を越えたときにリンクが切断されていることを検知して、リンクが切断されたこと、および転送されなかったＩＰパケットをＤＳＤＶデーモン１６に通知する。無線端末３のＤＳＤＶデーモン１６は、転送されなかったＩＰパケットのＩＰヘッダの送信先アドレスである無線端末４のアドレスがルーティングテーブル２１内に存在しているので、ルーティングテーブル２１内の送信先アドレスが無線端末４のアドレスである経路情報のＭｅｔｒｉｃをＢＩＧに更新する。無線端末３のＤＳＤＶデーモン１６は、変更した経路情報を含むＵｐｄａｔｅパケットを作成して、そのＵｐｄａｔｅパケットをＵＤＰモジュール１８に送り、ブロードキャスト送信させる。
【０１１５】
無線端末２のＤＳＤＶデーモン１６は、ＵＤＰモジュール１８によって、Ｕｐｄａｔｅパケットを受信する。無線端末２のＤＳＤＶデーモン１６は、Ｕｐｄａｔｅパケットに含まれる経路情報の送信先アドレスである無線端末４のアドレスがルーティングテーブル２１内に存在し、かつそのＭｅｔｒｉｃがＢＩＧでないので、ルーティングテーブル２１内の送信先アドレスが無線端末４のアドレスである経路情報のＭｅｔｒｉｃをＢＩＧに更新する。無線端末２のＤＳＤＶデーモン１６は、変更した経路情報を含むＵｐｄａｔｅパケットを作成して、そのＵｐｄａｔｅパケットをＵＤＰモジュール１８に送り、ブロードキャスト送信させる。
【０１１６】
無線端末１のＤＳＤＶデーモン１６は、ＵＤＰモジュール１８によって、Ｕｐｄａｔｅパケットを受信する。無線端末１のＤＳＤＶデーモン１６は、Ｕｐｄａｔｅパケットに含まれる経路情報の送信先アドレスである無線端末４のアドレスがルーティングテーブル２１内に存在し、かつそのＭｅｔｒｉｃがＢＩＧでないので、ルーティングテーブル２１内の送信先アドレスが無線端末４のアドレスである経路情報のＭｅｔｒｉｃをＢＩＧに更新する。
【０１１７】
無線端末１のＤＳＤＶデーモン１６は、ルーティングテーブル２１のＭｅｔｒｉｃの値を監視し、ＭｅｔｒｉｃがＢＩＧとなる経路情報が発生したことを検知して、ルーティングテーブル２１からその経路情報の送信先アドレスである無線端末４のアドレスを取得する。無線端末１のＤＳＤＶデーモン１６は、インターネット層にソケット情報管理テーブル２０が存在し、かつ、そのソケット情報管理テーブル２０に取得した無線端末４のアドレスを送信先アドレスとするソケット情報が存在するので、そのソケット情報のステイタスがＡＣＴＩＯＮであるか否かを調べる。無線端末１のＤＳＤＶデーモン１６は、ステイタスがＡＣＴＩＯＮであるので、ＴＣＰモジュール１７に対して、そのソケット情報に含まれる送信元ポート番号を用いたＴＣＰ通信のフリーズを指示する。ＴＣＰモジュール１７は、指示された送信元ポート番号を用いたＴＣＰ通信をフリーズする。さらに、無線端末１のＤＳＤＶデーモン１６は、ルーティングテーブル２１内のそのソケット情報のステイタスをＦＲＥＥＺＥに更新する。
【０１１８】
以上のように、本発明の実施形態に係る、テーブル駆動型のルーティングプロトコルを用いてルーティングを行なうアドホックネットワークにおける通信方式によれば、リンクが切断されたときにＴＣＰ通信をフリーズし、新たなリンクが接続されたときにＴＣＰ通信フリーズを解除することによって、ＴＣＰ通信を適切に制御することができ、ＴＣＰ通信のスループットの低下を防止することができる。
【０１１９】
本発明は、上記の実施形態に限定されるものではなく、たとえば、以下のような変形例も含む。
【０１２０】
（１）  リンクの切断
本発明の実施の形態では、ＭＡＣモジュール２３が、パケットの再送回数が所定回数を越えたときにリンクが切断されていることを検知したが、これに限定するものではない。たとえば、ＩＰアドレスとＭＡＣアドレスとがマッチングできなかった際に格納されるＡＲＰバッファに溢れが生じた場合に、リンクの切断を検知するものとしてもよい。
【０１２１】
（２）  テーブル駆動型のルーティングプロトコル
本発明の実施の形態では、テーブル駆動型のルーティングプロトコルの例として、ＤＳＤＶプロトコルを取り上げたが、これに限定するものではなく、その他のテーブル駆動型のルーティングプロトコルであっても、同様にして実施できる。
【０１２２】
（３）  リンク切断を示すＭｅｔｒｉｃ
本発明の実施形態では、Ｍｅｔｒｉｃが所定値ＢＩＧのときに、リンクが切断されていることを表わしたが、これに限定されるものではなく、Ｍｅｔｒｉｃが所定の記号のときに、リンクが切断されていることを表わすものとしてもよい。
【０１２３】
（４）  ＤＳＤＶデーモン
本発明の実施の形態では、ＤＳＤＶデーモンが、（１）  アドホックネットワークのルーティング、（２）  リンク切断の検知および通知、（４）  ＴＣＰ通信フリーズの移行制御、（５）  ＴＣＰ通信フリーズの解除制御を行なったが、これに限定するものではない。たとえば、（１）および（２）をＤＳＤＶデーモンが行ない、（４）および（５）は、ＤＳＤＶデーモンとは別の１または２個のデーモンが行なうものとしてもよい。
【０１２４】
（５）  アプリケーションとプロセス／アプリケーションのプロトコル
本発明の実施形態では、アプリケーションとしてメイラ、プロセス／アプリケーションのプロトコルとしてＳＭＴＰを用いて説明を行なったが、これに限定するものではなく、トランスポート層としてＴＣＰを用いるものであれば、どのようなものでもよい。
【０１２５】
（６）  ＴＣＰ通信フリーズ
本発明の実施の形態で述べたＴＣＰ通信のフリーズ時の処理に代えて、あるいは加えて、たとえば、以下の処理を行なうものとしてもよい。
【０１２６】
（ａ）  フリーズ状態にあるＴＣＰ通信におけるＡＣＫ受信処理
送信側のＴＣＰ通信がフリーズ状態にあっても、受信側のＴＣＰ通信はそれを知ることができない。そのため、送信側からの経路上にリンク切断が発生していたとしても、受信側はかまわずＡＣＫを送信する。これにより、送信側のＴＣＰ通信がフリーズ状態にあるにもかかわらず、ＡＣＫを受信する場合がある。これに対処するために、以下の処理を行なう。
【０１２７】
フリーズ状態にある送信側ＴＣＰは、ＡＣＫを受信しても新規パケットの送信は行なわない。フリーズ状態にある送信側ＴＣＰは、受信したＡＣＫに登録されているシーケンス番号と直前に受信したＡＣＫに登録されているシーケンス番号とを比較する。その結果、送信側ＴＣＰは、新しいＡＣＫを受信したと判断した場合は、送信側ＴＣＰが保持している直前に受信したＡＣＫのシーケンス番号と、受信した最大のシーケンス番号とを更新する。また、直前に受信したＡＣＫのシーケンス番号と重複するシーケンス番号を持つＡＣＫを受信したときには、重複回数をカウントするのみで、他の受信処理は行なわない。
【０１２８】
（ｂ）  リンク切断を通知されたＤＳＤＶにおけるキュー制御
ＤＳＤＶでは、経路が見つからない場合、送信または転送するパケットをキューに格納する。そして、経路回復後にキューに格納されているパケットを優先的に送信または転送することで、リンク切断中のパケットロスを回避している。
【０１２９】
しかし、ＤＳＤＶのキューにも閾値が設けられており、閾値を越えるパケットが送られると、ＦＩＦＯによってキューに格納されている最も古いパケットが破棄される。また、ＤＳＤＶのキューにパケットが格納されることで、経路回復後にＴＣＰのパラメータを制御したとしても、ＴＣＰからは制御できないパケットがＤＳＤＶから送信される。
【０１３０】
そこで、リンク切断中にＤＳＤＶが受信したパケットは、すべて破棄するものとし、ＴＣＰ通信フリーズの解除後に、送信側のＴＣＰから受信側のＴＣＰに対して問合せを行ない、ＤＳＤＶで破棄されたパケットもすべてＴＣＰが再送を行なうことで、ＴＣＰによるパケット送信の一元管理が可能となり、通信制御を容易にすることができる。
【０１３１】
（７）  ソケット情報の削除
本発明の実施形態では、ＴＣＰ通信切断要求端末のＩＰモジュール１７は、第１パケットを送信するときにソケット情報を削除したが、第２および第３パケットを受信したときに、ソケット情報を削除するものとしてもよい。また、ＴＣＰ通信切断受理端末のＩＰモジュール１７は、第２および第３パケットを送信するときにソケット情報を削除したが、第４パケットを受信したときに、ソケット情報を削除するものとしてもよい。
【０１３２】
（８）  Ｃｏｄｅ  Ｂｉｔの参照
Ｓ２０３において、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮが設定されているときがＴＣＰ接続要求端末が第１パケットを送信するときであると識別し、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮとＡＣＫが設定されているときがＴＣＰ接続受理端末が第２パケットを送信するときであると識別したが、これに限定するものではない。ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮが設定されているときがＴＣＰ接続要求端末が第１パケットを送信するとき、またはＴＣＰ接続受理端末が第２パケットを送信するときであると識別するものとしてもよい。つまり、第２パケットの送信をＳＹＮのみを参照して判断してもよい。
【０１３３】
Ｓ６０３において、ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮとＡＣＫが設定されているときがＴＣＰ接続要求端末が第２パケットを受信したときであると識別し、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＡＣＫが設定されているときがＴＣＰ接続受理端末が第３パケットを受信したときであると識別したが、これに限定するものではない。ＴＣＰ通信の送信元端末のＩＰモジュール１９は、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＳＹＮが設定されているときがＴＣＰ接続要求端末が第２パケットを受信したときであると識別し、取得したＴＣＰヘッダのＣｏｄｅ  ＢｉｔにＡＣＫが設定されているときにがＴＣＰ接続受理端末が第３パケットを受信したときであると識別するものとしてもよい。つまり、第２パケットの受信をＳＹＮのみを参照して判断してもよい。
【０１３４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１３５】
【図１】アドホックネットワークの構成を示す図である。
【図２】無線端末１の構成を示す図である。
【図３】ＩＰヘッダの構成を示す図である。
【図４】ＴＣＰヘッダの構成を示す図である。
【図５】ルーティングテーブル２１の例を示す図である。
【図６】ＤＳＤＶデーモン１６によるリンク切断の検知および通知処理の手順を示すフローチャートである。
【図７】ＴＣＰ通信の送信元端末が無線端末１のときのソケット情報管理テーブル２０の例を示す図である。
【図８】ＩＰモジュール１９によるソケット情報の抽出処理の手順を示すフローチャートである。
【図９】ＩＰモジュール１９によるソケット情報の登録処理の手順を示すフローチャートである。
【図１０】ＤＳＤＶデーモン１６によるＴＣＰ通信フリーズ移行制御処理の手順を示すフローチャートである。
【図１１】ルーティングテーブル２１の例を示す図である。
【図１２】ＴＣＰ通信の送信元端末が無線端末１のときのソケット情報管理テーブル２０の例を示す図である。
【図１３】ＤＳＤＶデーモン１６によるＴＣＰ通信フリーズ解除制御処理の手順を示すフローチャートである。
【図１４】ルーティングテーブル２１の例を示す図である。
【図１５】ＤＳＤＶデーモン１６によるソケット情報の削除処理の手順を示すフローチャートである。
【図１６】本発明の実施形態に係るアドホックネットワークの通信方式の通信動作の例を示す図である。
【符号の説明】
【０１３６】
１〜９  無線端末、１１  入力部、１２  表示部、１３  電子メールアプリケーション、１４  通信制御部、１５  ＳＭＴＰモジュール、１６  ＤＳＤＶデーモン、１７  ＴＣＰモジュール、１８  ＵＤＰモジュール、１９  ＩＰモジュール、２０  ソケット情報管理テーブル、２１  ルーティングテーブル、２２  ＬＬＣモジュール、２３  ＭＡＣモジュール、２４  無線インタフェースモジュール、２５  アンテナ。
【図１】
2005086525.tif 000003
【図２】
2005086525.tif 000004
【図３】
2005086525.tif 000005
【図４】
2005086525.tif 000006
【図５】
2005086525.tif 000007
【図６】
2005086525.tif 000008
【図７】
2005086525.tif 000009
【図８】
2005086525.tif 000010
【図９】
2005086525.tif 000011
【図１０】
2005086525.tif 000012
【図１１】
2005086525.tif 000013
【図１２】
2005086525.tif 000014
【図１３】
2005086525.tif 000015
【図１４】
2005086525.tif 000016
【図１５】
2005086525.tif 000017
【図１６】
2005086525.tif 000018