(57)【要約】【課題】  通信網の実質的な利用率を低下させずに、データユニットの受信順序の入れ替わりをデータユニットの消失と誤検出することに起因した不適切なフロー制御を防止する。【解決手段】  サーバ装置４０は、データセグメントを移動機１０へ送信する一方、移動機１０によるデータセグメントの受信の順序またはタイミングに基づいてデータセグメントの消失を推定する。基地局２０は、サーバ装置４０から送信されたデータセグメントを受信して移動機１０へ転送する一方、受信したデータセグメントのシーケンス番号と移動機１０からの確認応答セグメント内のシーケンス番号とに基づいて、移動機１０におけるデータセグメントの受信にて順序が後ろに入れ替わって受信されるデータセグメントを推定し、推定したデータセグメントをサーバ装置４０に通知する。サーバ装置４０は、通知されたデータセグメントの消失の推定を一時的に禁止する。【選択図】      図１
2005149307.tif 000002
【特許請求の範囲】
【請求項１】
送信機から受信機へ送信され、前記送信機からの送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信するデータ受信手段と、
前記データ受信手段により受信された前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する入れ替わり推定手段と、
前記入れ替わり推定手段により推定された前記データユニットを、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段へ通知する入れ替わり通知手段と
を有する通信装置。
【請求項２】
トランスポート層よりも下位の層にて前記データユニットが廃棄された場合に廃棄された前記データユニットを消失推定手段に通知する廃棄通知手段
を有することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記データユニットを送信する送信手段と、
前記データユニットに対して前記受信機から送信される確認応答を受信する応答受信手段と、
前記確認応答を送信する応答送信手段とを有し、
前記入れ替わり推定手段は、前記データ受信手段により受信された前記データユニットの番号と前記確認応答内の番号とに基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定し、
前記入れ替わり通知手段は、前記応答送信手段を用いて、前記入れ替わり推定手段により推定された前記データユニットを前記消失推定手段に通知する
ことを特徴とする請求項１に記載の通信装置。
【請求項４】
受信機へ送信したトランスポート層のデータユニットのうち、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを通知するデータを受信する受信手段と、
前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段と、
前記受信手段により前記データが受信されると、該データにより通知される前記データユニットの消失を前記消失推定手段が推定することを一時的に禁止する禁止手段と
を有する送信機。
【請求項５】
送信機と通信装置とを有し、
前記送信機は、
送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信機へ送信する第１の送信手段と、
前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段と
を有し、
前記通信装置は、
前記送信機から送信された前記データユニットを受信する第１の受信手段と、
前記第１の受信手段により受信された前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する入れ替わり推定手段と、
前記入れ替わり推定手段により推定された前記データユニットを通知するデータを前記送信機へ送信する第２の送信手段と
を有し、
前記送信機は、更に、
前記第２の送信手段から送信されたデータを受信する第２の受信手段と、
前記第２の受信手段により前記データが受信されると、該データにより通知される前記データユニットの消失を前記消失推定手段が推定することを一時的に禁止する禁止手段と
を有する
ことを特徴とする通信システム。
【請求項６】
送信機が、送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信機へ送信する送信過程と、
通信装置が、前記送信機により送信された前記データユニットを受信する受信過程と、
前記通信装置が、受信した前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する推定過程と、
前記通信装置が、推定した前記データユニットを、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段へ通知する通知過程と、
通知された前記データユニットの消失を前記消失推定手段が推定することを一時的に禁止する中止過程と
を有する通信方法。
【請求項７】
コンピュータを、
送信機から受信機へ送信され、前記送信機からの送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信するデータ受信手段と、
前記データ受信手段により受信された前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する入れ替わり推定手段と、
前記入れ替わり推定手段により推定された前記データユニットを、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段へ通知する入れ替わり通知手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データリンク層およびトランスポート層における通信制御技術に関する。
【背景技術】
【０００２】
ＯＳＩ階層モデルにおけるデータリンク層の通信プロトコルの１つに、無線リンクの制御のために標準化されたＲＬＣ（Radio Link Control）プロトコルがある。ＲＬＣプロトコルは、非特許文献１に示されるように、３ＧＰＰ（3rd Generation Partnership Project）において提案されたものであり、ＲＬＣプロトコルには、データリンク層を構成する２つの副層のうち、上位側のＲＬＣ副層にて通信ノードが行う操作（通信処理）が定められている。
【０００３】
ＲＬＣ副層における操作のモードには、ＡＭ（Acknowledgement Mode）、ＵＭ（Unacknowledgement Mode）、及びＴＭ（Transparent Mode）があり、操作モードがＡＭのＲＬＣ副層にて送信操作を行う送信ノードとの間でデータ転送可能な受信ノードは、操作モードがＡＭのＲＬＣ副層にて受信操作を行う受信ノードのみである。ＲＬＣ副層における操作モードのうち、本発明が解決しようとする課題に関係するのはＡＭのみであるから、以降、操作モードがＡＭのＲＬＣ副層に着目して説明する。なお、以降の説明において、「ＲＬＣ副層」は、操作モードがＡＭのＲＬＣ副層を意味する。
【０００４】
ＲＬＣ副層では、送信ノードと受信ノード間のデータ転送が、上位層との間で受け渡されるデータユニット（以降、ＳＤＵ（Service Data Unit）と称す）の先頭から順に切り出された部分データにヘッダを付加して生成されるデータユニット（以降、ＰＤＵ（Protocol Data Unit）と称す）を用いて行われる。ＰＤＵのヘッダには、当該ＰＤＵが生成された順序を示すシーケンス番号と切り出し元のＳＤＵの長さ情報が含まれている。また、ＲＬＣ副層では、データ転送において消失したＰＤＵがシーケンス番号を用いた選択再送（Selective Repeat）により再送される。なお、以降の説明では、「ＳＤＵ」及び「ＰＤＵ」はＲＬＣ副層におけるＳＤＵ及びＰＤＵを意味する。
【０００５】
ところで、無線リンクは有線の通信リンクに比較してデータ転送における誤り率が高い。このため、再送されたＰＤＵが再び消失することも起こり易い。つまり、再送遅延が大きい。したがって、ＲＬＣ副層では、ＰＤＵのみならず、ＳＤＵの受信順序（厳密には、ＳＤＵの組み立てに必要なＰＤＵをＭＡＣ（Medium Access Control）副層から渡され終える時点の後先）まで入れ替わる可能性がある。このようなＳＤＵの受信順序の入れ替わりによる影響を、上位層に比較して再送コストが低いＲＬＣ副層にて吸収するために、ＲＬＣ副層では、受信ノードがＳＤＵの順序制御を行う。具体的には、受信ノードは、ＳＤＵの受信順序が入れ替わり、未受信のＳＤＵよりも後に上位層へ渡すべきＳＤＵを先に受信した場合、このＳＤＵを、未受信のＳＤＵを受信して上位層に渡すまで保持する。このような順序制御により、ＳＤＵが送信ノードにて上位層から渡された順序で受信ノードにてＲＬＣ副層から上位層に渡されることが保証されている。なお、ＳＤＵの受信順序の入れ替わりを検出するためには、受信ノードが、送信ノードにてＳＤＵが上位層からＲＬＣ副層へ渡された順序を把握する必要がある。この把握は、ＰＤＵのヘッダに含まれているシーケンス番号と長さ情報を用いることで実現可能である。
【０００６】
しかし、このような順序制御によるＳＤＵの遅延は、通信網の実質的な利用率を低下させる原因となる。なお、「通信網の利用率」は、通信網により提供された網資源の容量（例えば、利用可能な通信リンクの帯域幅や当該通信リンクを利用可能な期間）に対する実際に利用した網資源の量の比率を意味し、「通信網の実質的な利用率」は、通信網により提供された網資源の容量に対する有効に利用した網資源の量の比率を意味する。ＲＬＣ副層におけるＳＤＵの遅延が通信網の実質的な利用率の低下を招くことになる理由は、トランスポート層で行われるデータ転送の種類によって異なるため、場合分けして説明する。
【０００７】
［バルクデータ転送の場合］
バルクデータ転送では、一般に、上位層にて、通信網に滞留するデータ量を調節して通信網の利用率を適切に保つフロー制御が行われる。このようなフロー制御の一例としては、ＴＣＰ（Transmission Control Protocol）における輻輳制御が挙げられる。上記のフロー制御は、トランスポート層にて、下位の層から渡されたデータユニットに基づいて行われる。したがって、ＲＬＣ副層のように、上位層へ渡すことが可能なデータユニットを遅延させてから上位層へ渡すことがあり得る層がトランスポート層の下位に存在すると、上記のフロー制御の開始が遅れる虞がある。フロー制御では制御のためのデータがノードから通信網へ送出されるから、フロー制御の開始の遅れは、通信網に滞留するデータの減少を招く。具体的には、再送通知の遅延の増加、輻輳通知の遅延の増加、バースト的なデータ送信、他セッションのデータ受信の遅延、等の現象が挙げられる。以上が、通信網の実質的な利用率の低下を招く理由である。なお、ＴＣＰではデータを正しく配列してから上位の層へ渡すことが規定されており、順序制御について、トランスポート層とデータリンク層とで重複した機能を有するという問題もある。
【０００８】
［ストリーミング転送の場合］
ストリーミング転送では、一般に、データの遅延に制約がある。したがって、ＲＬＣ副層のように、上位層へ渡すことが可能なデータユニットを遅延させてから上位層へ渡すことがあり得る層がトランスポート層の下位に存在すると、トランスポート層にて、受信ノードが既に役に立たなくなっているデータユニットを受け取る可能性が高くなる。このようなデータユニットは破棄され、利用されないから、このようなデータユニットの転送に用いられた網資源は無駄に使用されたことになる。これが、通信網の実質的な利用率の低下を招く理由である。
【０００９】
このような不都合を避けるために、ＲＬＣ副層にてＳＤＵの順序制御を行わないようにすることが考えられる。このようにすれば、ＲＬＣ副層におけるＳＤＵの遅延に起因した通信網の実質的な利用率の低下は生じない。しかし、トランスポート層において、ＳＤＵの入れ替わりをＳＤＵのロスと誤検出してしまい、不適切なフロー制御が行われる可能性がある。ところで、不適切なフロー制御を防止することを目的とした技術が、特許文献１および特許文献２に記載されている。
【００１０】
特許文献１に記載の技術では、送信ノードは、輻輳ウィンドウのサイズが所定の閾値以下の場合にのみ、ＴＣＰのＳＡＣＫ（選択的確認応答）オプションを用いて通知されたデータユニット（消失が検出されたデータユニット）を直ちに再送する。つまり、送信ノードは、ＳＡＣＫオプションを用いないと重大な不都合が生じ得る場合にのみ、ＳＡＣＫオプションを用いた通知に従って作動する。この技術によれば、誤検出の発生頻度は、ＳＡＣＫオプションによる通知を常に信用する態様に比較すれば低くなるが、ＳＡＣＫオプションを用いない態様に比較すれば当然に高くなる。結局、特許文献１に記載の技術を用いても、誤検出に起因した不適切なフロー制御を防止することはできない。
【００１１】
特許文献２に記載の技術では、送信ノードは、再送後に確認応答を受信すると、この確認応答がオリジナルのデータユニットに対するものか、再送データユニットに対するものかを判定し、判定結果に応じて処理を変える。この技術によれば、誤検出に起因した不適切なフロー制御を防止することができるように見える。しかし、受信ノードにおいて、１番目のデータユニットの直後に３〜５番目のデータユニットが順に受信され、その後に２番目のデータユニットが受信されるような場合には、送信ノードにおいて、２番目のデータユニットの消失が誤検出され、不適切なフロー制御が行われてしまう。また、そもそも、特許文献２に記載の技術は、不適切であることが後に判明し得る再送（フロー制御の一種）を行うことを必須としており、根本的な解決策には成り得ない。
【非特許文献１】"3GPP specification: 25.322"、［online］、The 3rd Generation Partnership Project、［平成１５年８月２９日検索］、インターネット＜URL:http://www.3gpp.org/ftp/Specs/html-info/25322.html＞
【特許文献１】特開２０００−７８１９５号公報
【特許文献２】特表２００２−５３４９０７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、上述した背景の下になされたものであり、通信網の実質的な利用率を低下させずに、データユニットの受信順序の入れ替わりをデータユニットの消失と誤検出することに起因した不適切なフロー制御を防止することができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、送信機から受信機へ送信され、前記送信機からの送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信するデータ受信手段と、前記データ受信手段により受信された前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する入れ替わり推定手段と、前記入れ替わり推定手段により推定された前記データユニットを、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段へ通知する入れ替わり通知手段とを有する通信装置を提供する。
【００１４】
また、本発明は、受信機へ送信したトランスポート層のデータユニットのうち、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを通知するデータを受信する受信手段と、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段と、前記受信手段により前記データが受信されると、該データにより通知される前記データユニットの消失を前記消失推定手段が推定することを一時的に禁止する禁止手段とを有する送信機を提供する。
【００１５】
また、本発明は、送信機と通信装置とを有し、前記送信機は、送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信機へ送信する第１の送信手段と、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段とを有し、前記通信装置は、前記送信機から送信された前記データユニットを受信する第１の受信手段と、前記第１の受信手段により受信された前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する入れ替わり推定手段と、前記入れ替わり推定手段により推定された前記データユニットを通知するデータを前記送信機へ送信する第２の送信手段とを有し、前記送信機は、更に、前記第２の送信手段から送信されたデータを受信する第２の受信手段と、前記第２の受信手段により前記データが受信されると、該データにより通知される前記データユニットの消失を前記消失推定手段が推定することを一時的に禁止する禁止手段とを有することを特徴とする通信システムを提供する。
【００１６】
また、本発明は、送信機が、送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信機へ送信する送信過程と、通信装置が、前記送信機により送信された前記データユニットを受信する受信過程と、前記通信装置が、受信した前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する推定過程と、前記通信装置が、推定した前記データユニットを、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段へ通知する通知過程と、通知された前記データユニットの消失を前記消失推定手段が推定することを一時的に禁止する中止過程とを有する通信方法を提供する。
【００１７】
また、本発明は、コンピュータを、送信機から受信機へ送信され、前記送信機からの送信順序を特定可能な番号を有するトランスポート層のデータユニットを受信するデータ受信手段と、前記データ受信手段により受信された前記データユニットの番号に基づいて、前記受信機における前記データユニットの受信にて順序が後ろに入れ替わって受信される前記データユニットを推定する入れ替わり推定手段と、前記入れ替わり推定手段により推定された前記データユニットを、前記受信機による前記データユニットの受信の順序またはタイミングに基づいて前記データユニットの消失を推定する消失推定手段へ通知する入れ替わり通知手段として機能させるためのプログラムを提供する。
【発明の効果】
【００１８】
本発明によれば、消失推定手段が通知されたデータユニットの消失の推定を一時的に中止することにより、通信網の実質的な利用率を低下させずに、データユニットの受信順序の入れ替わりをデータユニットの消失と誤検出することに起因した不適切なフロー制御を防止することができる。よって、本発明によれば、通信網の実質的な利用率が向上する。
【発明を実施するための最良の形態】
【００１９】
［第１実施形態］
［構成］
図１は本発明の第１実施形態に係る通信システム１００の構成を示す図である。この図に示すように、通信システム１００は、使用者に携帯される移動機１０、管轄する無線エリア内の移動機１０と無線通信可能な基地局２０、及び基地局２０が接続されるコアネットワーク３０に接続されるサーバ装置４０を有する。移動機１０は、基地局２０及びコアネットワーク３０を介して、サーバ装置４０と通信可能である。なお、通信システム１００は、ＩＭＴ−２０００（International Mobile Telecommunications-2000）に準拠しており、移動機１０、基地局２０及びサーバ装置４０の数は、それぞれ、１以上の任意の数である。
【００２０】
図２は通信システム１００の通信プロトコル構成を示す図である。この図に示すように、トランスポート層以上の層での通信は移動機１０及びサーバ装置４０のみで終端され、ネットワーク層以下の層での通信は通信システム１００を構成する全ての装置で終端される。ただし、基地局２０は、ｓｎｏｏｐモジュールにて、トランスポート層のデータユニットを操作する。また、基地局２０は、ＲＬＣ副層にてＳＤＵの順序制御を行わない。
【００２１】
移動機１０及びサーバ装置４０は、トランスポート層にて、一般的なＴＣＰに従う通信処理を行う。一般的なＴＣＰに従う通信処理には、再送タイマを用いた再送処理や高速再送（Fast Retransmission）が含まれており、ＳＡＣＫオプションを用いた処理は含まれていない。以下、再送タイマを用いた再送処理および高速再送について説明する。
【００２２】
ＴＣＰでは、より上位の層から渡されたデータストリームの先頭から順にデータを切り出し、切り出したデータにヘッダを付してデータセグメントを作成する。データセグメントのヘッダには、該当するデータの切り出し位置を示すシーケンス番号が書き込まれる。なお、以降、特に断らない限り、「シーケンス番号」はＴＣＰにおけるシーケンス番号を意味する。送信ノードは、こうして作成されたデータセグメントを送信すると、当該データセグメントに対する再送タイマをスタートさせる。一方、受信ノードは、データセグメントを受信すると、その旨を示す確認応答セグメントを返信する。送信ノードは、確認応答セグメントを受信すると、該当するデータセグメントの送信時にスタートさせた再送タイマを停止し、再送タイムアウトによる当該データセグメントの再送を避ける。ところで、送信ノードは、基本的に、ヘッダに書き込まれたシーケンス番号の順にデータセグメントを送信する。このため、受信ノードは、未受信のデータセグメントのうち、最も若いシーケンス番号のデータセグメントを、次に受信が期待されるデータセグメントに定め、当該データセグメントのシーケンス番号（以降、「ＡＣＫ値」という）を上記の確認応答セグメントを用いて送信ノードへ通知する。この通知にもかかわらず、期待していないデータセグメントを受信した場合、受信ノードは、直前に送信した確認応答セグメントのＡＣＫ値と同じＡＣＫ値を有する確認応答セグメントを返信する。この確認応答セグメントは重複確認応答セグメントと呼ばれる。送信ノードは、重複確認応答セグメントを再送閾値の数だけ連続して受信すると、データセグメントが消失したとみなし、再送タイムアウトを待たずに、重複確認応答セグメントにより示されるデータセグメントを再送する。これが高速再送である。なお、本実施形態において、再送閾値は「３」である。
【００２３】
図３は基地局２０の構成を示すブロック図である。この図から明らかなように、基地局２０は、一般的なコンピュータと同様に、ＣＰＵ２１が不揮発性メモリ２２に記憶されているプログラムを、ＲＡＭ２３をワークエリアとして実行し、これにより各種処理を行う構成となっている。また、不揮発性メモリ２２には、後述の通知処理を行わせるための通知プログラム２２１と、トランスポート層よりも下位の層で通信処理を行わせるとともに、基地局２０を中継装置としてトランスポート層の通信コネクションが確立される度に通知プログラム２２１の実行を開始させ、当該通信コネクションが切断されると当該入れ替わりプログラムの実行を終了させる制御プログラムとが記憶されている。ＣＰＵ２１は、図示しない電源が投入されると不揮発性メモリ２２から上記の制御プログラムを読み出して実行する。
【００２４】
無線部２４は移動機１０との間で無線信号を送受信するものであり、ＣＰＵ２１から送信すべきデータが供給されると、この送信データにより変調された搬送波を無線区間へ送出し、無線区間を伝播してきた搬送波からデータを復調すると、この受信データをＣＰＵ２１に供給する。この無線部２４及びＣＰＵ２１により、移動機１０との間でのデータの送受信が行われる。通信インタフェース２５はコアネットワーク３０との間で信号を送受信するものであり、ＣＰＵ２１から送信すべきデータが供給されると、この送信データにより変調された信号をコアネットワーク３０へ送出し、コアネットワーク３０から供給された信号からデータを復調すると、この受信データをＣＰＵ２１に供給する。この通信インタフェース２５及びＣＰＵ２１により、サーバ装置４０との間でのデータの送受信がコアネットワーク３０を介して行われる。
【００２５】
制御プログラムを実行中のＣＰＵ２１は、基地局２０を中継装置としてトランスポート層の通信コネクションが確立されると、これを検出し、通知プログラム２２１を不揮発性メモリ２２から読み出して実行する。また、ＣＰＵ２１は、実行中の通知プログラム２２１に対応する通信コネクションが切断されると、これを検出し、当該通知プログラム２２１の実行を終了する。通知プログラム２２１を実行中のＣＰＵ２１は、ｓｎｏｏｐモジュールにて、トランスポート層の通信コネクション毎に、以下に述べる通知処理を行う。
【００２６】
通知処理では、ＣＰＵ２１は、サーバ装置４０からデータセグメントを受信すると、受信したデータセグメントの状態が「転送中」であることを示す状態データをＲＡＭ２３の状態領域２３１に書き込む一方、当該データセグメントを移動機１０へ転送する。また、通知処理において、ＣＰＵ２１は、下位層（具体的にはＲＬＣ副層）にてデータセグメントを廃棄した場合には、ｓｎｏｏｐモジュールにて、廃棄の事実と廃棄されたデータセグメントのシーケンス番号とを示す廃棄通知を下位層から取得し、当該データセグメントの状態が「廃棄」であることを示す状態データで、状態領域２３１に書き込まれた当該データセグメントの状態データを上書きする処理を行う。
【００２７】
また、通知処理では、ＣＰＵ２１は、移動機１０から確認応答セグメントを受信すると、ＲＡＭ２３の重複判定領域２３２に書き込まれているシーケンス番号と当該確認応答セグメントのＡＣＫ値とを比較し、前者が後者よりも若い場合には、後者を重複判定領域２３２に上書きする処理と、当該確認応答セグメントをサーバ装置４０へ送信する処理と、当該確認応答セグメントにより受信が確認されるデータセグメントの状態が「受信」であることを示す状態データで状態領域２３１に書き込まれた当該データセグメントの状態データを上書きする処理を行う。
【００２８】
前者が後者よりも若くない場合には、ＣＰＵ２１は、当該確認応答セグメントのＡＣＫ値をシーケンス番号とするデータセグメントの状態が「転送中」であるか否かを判定し、「転送中」でなければ、当該確認応答セグメントをそのままサーバ装置４０へ転送する。「転送中」でない状態としては、「廃棄」や「受信」の他に、コアネットワーク３０が輻輳する等して基地局２０に到達する前に廃棄された状態も考えられる。逆に、「転送中」であれば、ＣＰＵ２１は、当該確認応答セグメントのＥＯＮビットをオンにセットし、セット後の当該確認応答セグメントをサーバ装置４０へ送信する。つまり、ＣＰＵ２１は、受信した確認応答セグメントが重複確認応答セグメントであり、かつ、当該確認応答セグメントのＡＣＫ値をシーケンス番号とするデータセグメントを受信済みの場合にのみ、ＥＯＮビットをオンにセットしてから当該確認応答セグメントをサーバ装置４０へ送信する。換言すれば、ＣＰＵ２１は、移動機１０におけるデータセグメントの受信にてデータセグメントの順序が入れ替わったことを検出したときに、この検出時点で、順序が後ろに入れ替わって移動機１０に受信されるデータセグメントを受信済みであるか否かを判定し、受信済みである場合にのみ、当該データセグメントが入れ替わりセグメントである旨をサーバ装置４０へ通知する。なお、ＥＯＮビットは、一般的なＴＣＰにおけるデータセグメントの未使用領域内の１ビットであり、デフォルトではオフにセットされており、一般的なＴＣＰに従う通信では使用されない。
【００２９】
なお、入れ替わりセグメントとは、移動機１０が、まず１番目に受信されるべきデータセグメントを受信し、次に４番目に受信されるべきデータセグメントを受信し、次に２番目に受信されるべきデータセグメントを受信した場合には、２番目に受信されるべきデータセグメントをいう。上述したことから明らかなように、本実施形態では、重複確認応答セグメントのＡＣＫ値をシーケンス番号とするデータセグメントが入れ替わりセグメントであっても、当該データセグメントが入れ替わりセグメントである旨がサーバ装置４０へ通知されるとは限らない。これは、この通知の条件として、当該データセグメントの状態が「転送中」である、という条件が加わっているからである。この条件を変更して、入れ替わりセグメントであれば必ずサーバ装置４０へ通知されるようにしてもよいが、そのように変更しても、通信網の実質的な利用率は向上しないし、データセグメントの受信順序の入れ替わりをデータセグメントの消失と誤検出する可能性は低下しない。よって、本実施形態では、データセグメントの状態が「転送中」である、という単純な条件を採用している。
【００３０】
また、通知処理における入れ替わりセグメントの通知先がサーバ装置４０であるのは、本実施形態では、移動機１０によるデータセグメントの受信の順序またはタイミングに基づいてデータセグメントの消失を推定し、推定結果に基づいて再送タイマを用いた再送や高速再送を行うのがサーバ装置４０であるからである。そして、通知先がサーバ装置４０であるから、確認応答セグメントを用いることにより、トラヒックを増やすことなく、通知を行うことができる。
【００３１】
図４はサーバ装置４０の構成を示すブロック図である。この図から明らかなように、サーバ装置４０は、一般的なコンピュータと同様に、ＣＰＵ４１が不揮発性メモリ４２に記憶されているプログラムを、ＲＡＭ４３をワークエリアとして実行し、これにより各種処理を行う構成となっている。また、不揮発性メモリ４２には、プログラムの実行制御を行わせるための制御プログラムと、一般的なＴＣＰに従う通信処理と後述の入れ替わり制御処理とをトランスポート層にて行わせるための通信プログラム４２１と、トランスポート層以外の層での通信処理を行わせるプログラムとが記憶されている。ＣＰＵ４１は、図示しない電源が投入されると不揮発性メモリ４２から上記の制御プログラムを読み出して実行する。
【００３２】
通信インタフェース４４はコアネットワーク３０との間で信号を送受信するものであり、ＣＰＵ４１から送信すべきデータが供給されると、この送信データにより変調された信号をコアネットワーク３０へ送出し、コアネットワーク３０から供給された信号からデータを復調すると、この受信データをＣＰＵ４１に供給する。この通信インタフェース４４及びＣＰＵ４１により、移動機１０との間でのデータの送受信がコアネットワーク３０を介して行われる。制御プログラムを実行中のＣＰＵ４１は、移動機１０からの要求に応じて、通信プログラム４２１を不揮発性メモリ４２から読み出して実行する。これにより、ＣＰＵ４１は、トランスポート層にて、一般的なＴＣＰに従う通信処理と入れ替わり制御処理とを行う。
【００３３】
一般的なＴＣＰに従う通信処理では、ＣＰＵ４１は、高速再送のために、重複確認応答セグメントを連続して受信した回数（以降、連続回数という）をＲＡＭ４３に書き込む。ＲＡＭ４３が記憶する連続回数は、ＣＰＵ４１が重複確認応答セグメントを受信する度に更新される。また、ＣＰＵ４１は、データセグメントを送信すると、当該データセグメントに対する再送タイマをスタートさせる。再送タイマのスタートは、ＣＰＵ４１が当該再送タイマに初期値を設定することで行われる。再送タイマへの初期値の設定とは、ＣＰＵ４１が、当該再送タイマのタイマ値（カウント値）を保持するためにＲＡＭ４３に確保された記憶領域に、送受信ノード間往復伝播遅延（ＲＴＴ：Round-Trip Time）の実測値に基づき動的に設定された再送タイムアウト値を書き込むことをいう。また、スタートした再送タイマは、タイマ値をカウントダウンし、タイマ値が「０」になるとタイムアウトする。ＣＰＵ４１は、再送タイマがタイムアウトすると、タイムアウトしたデータセグメントを再送するとともに、輻輳ウィンドウを狭くする。
【００３４】
入れ替わり制御処理では、ＣＰＵ４１は、移動機１０から確認応答セグメントを受信すると、当該確認応答セグメントのＥＯＮビットがオフの場合、何もしない。逆に、ＥＯＮビットがオンの場合、ＣＰＵ４１は、当該確認応答セグメントのＡＣＫ値をシーケンス番号としたデータセグメントの再送動作を一時的に中止する。中止対象の再送動作としては、再送タイマによる計時、及び高速再送のための連続回数の計数がある。なお、再送タイマによる計時の中止は、輻輳ウィンドウを狭くする動作の中止をも意味する。
【００３５】
再送タイマによる計時の中止は、ＣＰＵ４１が、再送タイマのタイマ値を再設定することで行われる。タイマ値が再設定された再送タイマは、再設定された値からカウントダウンを再開する。再設定されるタイマ値は、再設定する直前のタイマ値に予め設定された加算値を加算した値となる。この加算値は任意の正値であるが、本実施形態では、データセグメントを確認応答セグメントの到着を待たずに送信する場合のデータセグメント間の送信時間間隔に相当する値を加算値としている。このような加算値としたのは、タイマ値の再設定によって予期しない悪影響が生じる可能性を低く抑えるためである。例えば、加算値が大きすぎると、再送タイマのタイムアウトタイミングが必要以上に延期されてしまう可能性が高くなる。逆に、加算値が小さすぎると、タイムアウト直前の再送タイマのタイマ値を再設定したとしても次の確認応答セグメントの到着前に当該再送タイマがタイムアウトしてしまう事態を招く可能性が高くなる。この事態が望ましくないのは、再送タイムアウトタイミングの延期の意義を薄れさせる事態であるからである。また、加算値を用いず、タイマ値を初期値（再送タイムアウト値）とすることも考えられるが、この場合には、やはり、再送タイマのタイムアウトタイミングが必要以上に延期されてしまう可能性が高くなる。本実施形態では、加算値を上述のように定めることにより、これらの可能性の低減を図っているのである。なお、加算値は、サーバ装置４０とコアネットワーク３０との間の通信帯域幅に依存するから、この通信帯域幅に応じた値でもある。また、加算値を予め設定するのではなく、ＣＰＵ４１がデータセグメント間の送信時間間隔を実測または推定し、実測値または推定値に基づいて動的に定めるようにしてもよい。
【００３６】
連続回数の計数の中止は、ＣＰＵ４１が、ＲＡＭ４３に書き込まれている連続回数を更新し、その値を２とすることで行われる。この場合、ＣＰＵ４１は、連続回数の計数処理をスキップする。このため、当該確認応答セグメントの受信を契機とした更新後の連続回数は「２」となる。もちろん、ＣＰＵ４１が、連続回数の計数処理をスキップしないようにし、この計数処理を見越して連続回数を「１」とし、当該確認応答セグメントの受信を契機とした計数処理により連続回数が「２」に更新されるようにしてもよい。なお、当該確認応答セグメントの受信を契機とした更新後の連続回数を再送閾値に満たない最大値（すなわち「２」）とするのは、当該確認応答セグメントのＡＣＫ値で示されるデータセグメントが最終的に基地局２０で廃棄された場合の再送遅延を低減するためである。
【００３７】
［動作］
次に、上述した構成の通信システム１００の動作について説明する。ただし、移動機１０とサーバ装置４０との間には、基地局２０を中継装置としてトランスポート層の通信コネクションが確立されているものとする。よって、以降の説明において、基地局２０のＣＰＵ２１は既に不揮発性メモリ２２から制御プログラム及び通知プログラム２２１を読み出して実行しており、サーバ装置４０のＣＰＵ４１は既に不揮発性メモリ４２から制御プログラム及び通信プログラム４２１を読み出して実行しているものとする。また、基地局２０のＲＡＭ２３の重複判定領域２３２にはシーケンス番号「０」が書き込まれているものとする。
【００３８】
まず、以降の説明において参照する新たな図面について説明する。図５は通知プログラム２２１を実行中のＣＰＵ２１により行われる通知処理の一部の流れを示すフローチャートであり、図６は当該通知処理の他の流れを示すフローチャートである。これら２つのフローチャートに示される処理はＣＰＵ２１により並列に実行されている。図７は通信プログラム４２１を実行中のＣＰＵ４１により行われる入れ替わり制御処理の流れを示すフローチャートである。図８は通信システム１００により行われる通信の一例を示すシーケンス図であり、図９は一般的な通信システムにて図８に示す通信と同様の通信を行おうとした場合のシーケンス図である。なお、図９における一般的な通信システムとは、通信システム１００の基地局２０から通知処理を行う機能を、通信システム１００のサーバ装置４０から入れ替わり制御処理を行う機能を取り去って得られる通信システムである。
【００３９】
図８に示すように、サーバ装置４０のＣＰＵ４１は、輻輳ウィンドウ内の全てのデータセグメント（シーケンス番号が５００〜２５００のデータセグメント）を順に送信する。これらのデータセグメントは、サーバ装置４０から送信された順序で基地局２０に到着する。
【００４０】
基地局２０のＣＰＵ２１は、シーケンス番号「５００」のデータセグメントを受信すると（図５のステップＳＡ１）、受信したセグメントがデータセグメントであるか否か（確認応答セグメントでないか否か）を判定する（ステップＳＡ２）。受信したセグメントはデータセグメントであるから、ＣＰＵ２１は、受信したデータセグメントの状態が「転送中」であることを示す状態データをＲＡＭ２３の状態領域２３１に書き込み、当該データセグメントをｓｎｏｏｐモジュールから下位の層へ渡す（ステップＳＡ３及びＳＡ４）。ＣＰＵ２１がサーバ装置４０からのデータセグメントを下位の層へ渡すことは、ＣＰＵ２１が当該データセグメントを移動機１０へ送信することに等しい。
【００４１】
以降、基地局２０では、上述と同様の処理が繰り返され、シーケンス番号が１０００〜２５００のデータセグメントの状態がそれぞれ「転送中」であることを示す状態データがＲＡＭ２３の状態領域２３１に書き込まれ、これらのデータセグメントが順に移動機１０へ送信される。しかし、この通信例では、シーケンス番号「１０００」のデータセグメントが基地局２０と移動機１０との間の無線区間で遅延する。このため、シーケンス番号「１０００」のデータセグメントは、シーケンス番号「２５００」のデータセグメントよりも後に移動機１０に到着する。
【００４２】
移動機１０は、シーケンス番号「５００」のデータセグメントを受信し、このデータセグメントの受信確認のためのＡＣＫ値が１０００の確認応答セグメントを返信する。次に、移動機１０は、シーケンス番号「１５００」のデータセグメントを受信する。この時点で移動機１０が受信を期待しているシーケンス番号は１０００であり、１５００ではないことから、移動機１０は、当該データセグメントの受信確認のためのＡＣＫ値が１０００の確認応答セグメントを返信する。この確認応答セグメントは、そのＡＣＫ値が移動機１０から直前に送信された確認応答セグメントのＡＣＫ値と同一であるから、重複確認応答セグメントである。以降、移動機１０では、上述と同様の処理が繰り返され、更に２つの重複確認応答セグメントが返信される。そして、移動機１０は、シーケンス番号「１０００」のデータセグメントを受信し、このデータセグメントの受信確認のためのＡＣＫ値が３０００の確認応答セグメントを返信する。このようにして移動機１０から送信された確認応答セグメントは、送信された順序で基地局２０に到着する。
【００４３】
基地局２０のＣＰＵ２１は、シーケンス番号が１５００のデータセグメントを移動機１０へ送信した後に、シーケンス番号「５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＡ１）。この確認応答セグメントを受信すると、ＣＰＵ２１は、受信したセグメントがデータセグメントであるか否か（確認応答セグメントでないか否か）を判定する（ステップＳＡ２）。受信したセグメントは確認応答セグメントであるから、ＣＰＵ２１は、当該確認応答セグメントが重複確認応答セグメントであるか否かを判定する（ステップＳＡ５）。この判定は、ＣＰＵ２１が、ＲＡＭ２３の重複判定領域２３２に書き込まれているシーケンス番号と当該確認応答セグメントのＡＣＫ値とを比較することで行われる。
【００４４】
ここでは、重複判定領域２３２に書き込まれているシーケンス番号「０」が当該確認応答セグメントのＡＣＫ値「１０００」よりも若いから、当該確認応答セグメントは重複確認応答セグメントではないと判定される。よって、ＣＰＵ２１は受信確認処理を行う（ステップＳＡ６）。受信確認処理では、ＣＰＵ２１は、この確認応答セグメントにより受信確認がなされるデータセグメントの状態が「受信」であることを示す状態データで状態領域２３１に書き込まれた当該データセグメントの状態データを上書きする。ここでは、当該確認応答セグメントにより受信確認がなされるデータセグメントはシーケンス番号「５００」のデータセグメントであるから、シーケンス番号「５００」のデータセグメントの状態データが「受信」を示すように更新される。また、受信確認処理では、ＣＰＵ２１は、当該確認応答セグメントのＡＣＫ値を重複判定領域２３２に上書きする。ここでは、当該確認応答セグメントのＡＣＫ値は１０００であるから、重複判定領域２３２にシーケンス番号「１０００」が書き込まれる。
【００４５】
次に、ＣＰＵ２１は、当該確認応答セグメントをｓｎｏｏｐモジュールから下位の層へ渡す（ステップＳＡ４）。ＣＰＵ２１が移動機１０からの確認応答セグメントを下位の層へ渡すことは、ＣＰＵ２１が当該確認応答セグメントをサーバ装置４０へ送信することを意味している。
【００４６】
また、ＣＰＵ２１は、シーケンス番号が２５００のデータセグメントを移動機１０へ送信した後に、シーケンス番号「１５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＡ１）。このセグメントは確認応答セグメントであるから、ＣＰＵ２１は、上述したように、当該確認応答セグメントが重複確認応答セグメントであるか否かを判定する（ステップＳＡ２：ＮＯ、及びＳＡ５）。ここでは、重複判定領域２３２に書き込まれているシーケンス番号は１０００であり、当該確認応答セグメントのＡＣＫ値は１０００であるから、当該確認応答セグメントは重複確認応答セグメントであると判定される。よって、ＣＰＵ２１は、当該確認応答セグメントのＡＣＫ値をシーケンス番号とするデータセグメントの状態が「転送中」であるか否かを判定する（ステップＳＡ７）。状態領域２３１に書き込まれた状態データによりシーケンス番号「１０００」のデータセグメントの状態が「転送中」であることが示されているから、ＣＰＵ２１は、当該確認応答セグメントのＥＯＮビットをオンにセットする（ステップＳＡ８）。次に、ＣＰＵ２１は、ＥＯＮビットがオンにセットされた確認応答セグメントをサーバ装置４０へ送信する（ステップＳＡ４）。
【００４７】
シーケンス番号「１０００」のデータセグメントの状態が「転送中」から「受信」に変わるのは、ＣＰＵ２１がシーケンス番号「１０００」のデータセグメントの受信確認のための確認応答セグメントを受信した後であり、ＣＰＵ２１は、当該確認応答セグメントを受信する前に、重複確認応答セグメントを更に２つ受信する。よって、ＣＰＵ２１は、ＥＯＮビットがオンにセットされた重複確認応答セグメントを３つ連続してサーバ装置４０へ送信する（ステップＳＡ１、ＳＡ２：ＮＯ、ＳＡ５：ＹＥＳ、ＳＡ７：ＹＥＳ、ＳＡ８、及びＳＡ４）。
【００４８】
次に、ＣＰＵ２１は、シーケンス番号「１０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＡ１）。このセグメントは確認応答セグメントであり、重複確認応答セグメントでないから、ＣＰＵ２１は、受信確認処理を行い、当該確認応答セグメントをサーバ装置４０へ送信する（ステップＳＡ２：ＮＯ、ＳＡ５：ＮＯ、ＳＡ６、及びＳＡ４）。この結果、重複判定領域２３２にはシーケンス番号「３０００」が書き込まれ、シーケンス番号が５００〜２５００のデータセグメントについて状態領域２３１に書き込まれている状態データは「受信」を示すように更新される。
以上のようにして基地局２０から送信された確認応答セグメントは、送信された順序でサーバ装置４０に到着する。
【００４９】
サーバ装置４０のＣＰＵ４１は、シーケンス番号が２５００のデータセグメントを移動機１０へ送信した後に、シーケンス番号「５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（図７のステップＳＢ１）。確認応答セグメントを受信すると、ＣＰＵ４１は、この確認応答セグメントのＥＯＮビットがオンにセットされているか否かを判定する（ステップＳＢ２）。受信した確認応答セグメントのＥＯＮビットはオフにセットされているから、ＣＰＵ４１は、一般的なＴＣＰに従った処理のみを行う（ステップＳＢ２：ＮＯ）。つまり、輻輳ウィンドウを１つのデータセグメントの分だけスライドさせ、シーケンス番号「３０００」のデータセグメントを移動機１０へ送信する。
【００５０】
このデータセグメントは、基地局２０のＣＰＵ２１により、２番目の重複確認応答セグメントの送信後かつ３番目の重複確認応答セグメントの送信前に受信され、移動機１０へ転送される。この転送の際に、基地局２０の状態領域２３１には、シーケンス番号「３０００」のデータセグメントの状態が「転送中」であることを示す状態データが書き込まれる。
【００５１】
基地局２０から転送された、シーケンス番号「３０００」のデータセグメントは、移動機１０により、シーケンス番号「１０００」のデータセグメントの受信確認のための確認応答セグメントの送信後に受信される。移動機１０は、このデータセグメントの受信確認のためのＡＣＫ値が３５００の確認応答セグメントを返信する。この確認応答セグメントは、基地局２０のＣＰＵ２１により、シーケンス番号「１０００」のデータセグメントの受信確認のための確認応答セグメントの受信後に受信され、サーバ装置４０へ転送される。この転送の際に、シーケンス番号「３０００」のデータセグメントについて基地局２０の状態領域２３１に書き込まれている状態データが、「受信」を示すデータに更新される。
【００５２】
サーバ装置４０のＣＰＵ４１は、シーケンス番号「５００」のデータセグメントの受信確認のための確認応答セグメントに続いて、シーケンス番号「１５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントのＥＯＮビットはオンにセットされているから、ＣＰＵ４１は、当該確認応答セグメントのＡＣＫ値をシーケンス番号としたデータセグメントの再送動作を一時的に中止する（ステップＳＢ２：ＹＥＳ、及びＳＢ３）。具体的には、ＣＰＵ４１は、当該データセグメントの再送タイマのタイマ値に予め定められた加算値を加算した値を当該タイマのタイマ値として再設定する一方、ＲＡＭ４３に書き込まれている連続回数を更新し、その値を２とし、連続回数の計数処理をスキップする。もちろん、この間にも、一般的なＴＣＰに従う処理のうち、一時的に中止された処理を除いた処理は継続して行われている。
【００５３】
次に、ＣＰＵ４１は、シーケンス番号「２０００」及び「２５００」のデータセグメントの受信確認のための確認応答セグメントを順に受信し、これらについて、シーケンス番号「１５００」のデータセグメントの受信確認のための確認応答セグメントを受信したときと同様の処理を繰り返す（ステップＳＢ１、ＳＢ２：ＹＥＳ、及びＳＢ３）。次に、ＣＰＵ４１は、シーケンス番号「１０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントのＥＯＮビットはオフにセットされているから、ＣＰＵ４１は、一般的なＴＣＰに従った処理のみを行う（ステップＳＢ２：ＮＯ）。この結果、ＣＰＵ４１は、輻輳ウィンドウをスライドさせ、シーケンス番号が３５００〜５５００のデータセグメントを順に送信する処理を開始する。
【００５４】
ここで、図９を参照し、上述した動作の特徴について説明する。図９に示すように、一般的な通信システムでは、サーバ装置は、重複確認応答セグメントを３つ連続して受信すると、当該重複確認応答セグメントのＡＣＫ値をシーケンス番号としたデータセグメントが消失したものとみなし、当該データセグメントの再送（高速再送）を行う。しかし、消失したものとみなしたデータセグメントは、実は移動機により受信されている。つまり、上記の再送は、移動機におけるデータセグメントの受信順序の入れ替わりをデータセグメントの消失と誤検出することに起因した不適切な再送である。これに対し、本実施形態では、図８から明らかなように、サーバ装置４０は重複確認応答セグメントを３つ連続して受信しても、これらのＥＯＮビットがオンにセットされているため、上記の再送を行わない。つまり、本実施形態によれば、移動機１０におけるデータセグメントの受信順序の入れ替わりをデータセグメントの消失と誤検出することに起因した不適切な高速再送を防止することができる。
【００５５】
引き続き、通信システム１００の動作を説明する。
図８に示すように、サーバ装置４０のＣＰＵ４１は、シーケンス番号が３５００〜５５００のデータセグメントを順に送信する処理を行っている間に、シーケンス番号「３０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントのＥＯＮビットはオフにセットされているから、ＣＰＵ４１は、一般的なＴＣＰに従った処理のみを行う（ステップＳＢ２：ＮＯ）。この結果、ＣＰＵ４１は、輻輳ウィンドウを更にスライドさせ、シーケンス番号が６０００までのデータセグメントを順に送信する処理を行う。これらのデータセグメントは、サーバ装置４０から送信された順序で基地局２０に到着する。
【００５６】
基地局２０のＣＰＵ２１は、シーケンス番号「３５００」のデータセグメントを受信すると、受信したセグメントがデータセグメントであるから、このデータセグメントの状態が「転送中」であることを示す状態データをＲＡＭ２３の状態領域２３１に書き込み、このデータセグメントを移動機１０へ送信する（ステップＳＡ１、ＳＡ２：ＹＥＳ、ＳＡ３、及びＳＡ４）。以降、基地局２０では、上述と同様の処理が繰り返され、シーケンス番号が４０００〜６０００のデータセグメントの状態がそれぞれ「転送中」であることを示す状態データがＲＡＭ２３の状態領域２３１に書き込まれ、これらのデータセグメントが順に移動機１０へ送信される。
【００５７】
しかし、この通信例では、シーケンス番号が３５００〜４５００のデータセグメントが基地局２０と移動機１０との間の無線区間で消失する。したがって、移動機１０がシーケンス番号「３０００」のデータセグメントの次に受信するデータセグメントは、シーケンス番号が「５０００」のデータセグメントである。移動機１０は、シーケンス番号が５０００〜６０００のデータセグメントを順に受信すると、これらのデータセグメントの受信確認のためのＡＣＫ値が３５００の確認応答セグメントを順に返信する。これらの確認応答セグメントは全て重複確認応答セグメントである。
【００５８】
基地局２０のＣＰＵ２１は、シーケンス番号「６０００」のデータセグメントを移動機１０へ送信した後に、シーケンス番号「５０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＡ１）。この確認応答セグメントは重複確認応答セグメントであるから、ＣＰＵ２１は、この確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの状態が「転送中」であるか否かを判定する（ステップＳＡ２：ＮＯ、ＳＡ５：ＹＥＳ、及びＳＡ７）。この時点では、当該データセグメントの状態は「転送中」であるから、ＣＰＵ２１は、当該確認応答セグメントのＥＯＮビットをオンにセットし、セット後の確認応答セグメントをサーバ装置４０へ送信する（ステップＳＡ８、及びＳＡ４）。
【００５９】
次に、ＣＰＵ２１は、トランスポート層よりも下位層（具体的にはＲＬＣ副層）にて、タイムアウト等により、シーケンス番号「３５００」のデータセグメントを廃棄する。ＣＰＵ２１は、ｓｎｏｏｐモジュールにて、この旨を示す廃棄通知を下位層から取得する（ステップＳＣ１）。廃棄通知を取得すると、ＣＰＵ２１は、廃棄通知に示されるシーケンス番号のデータセグメントの状態が「廃棄」であることを示す状態データで、ＲＡＭ２３の状態領域２３１に書き込まれた当該データセグメントの状態データを上書きする（ステップＳＣ２）。
【００６０】
次に、ＣＰＵ２１は、シーケンス番号「５５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＡ１）。この確認応答セグメントは重複確認応答セグメントであるから、ＣＰＵ２１は、この確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの状態が「転送中」であるか否かを判定する（ステップＳＡ２：ＮＯ、ＳＡ５：ＹＥＳ、及びＳＡ７）。この時点では、当該データセグメントの状態は「廃棄」であるから、ＣＰＵ２１は当該確認応答セグメントをそのままサーバ装置４０へ送信する（ステップＳＡ４）。
【００６１】
以降、基地局２０では、上述と同様の処理が繰り返され、シーケンス番号「６０００」のデータセグメントの受信確認のための確認応答セグメントがそのままサーバ装置４０へ転送される。
以上のようにして基地局２０から送信された確認応答セグメントは、送信された順序でサーバ装置４０に到着する。
【００６２】
サーバ装置４０のＣＰＵ４１は、シーケンス番号「６０００」のデータセグメントを移動機１０へ送信した後に、シーケンス番号「５０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントのＥＯＮビットはオンにセットされているから、ＣＰＵ４１は、当該確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの再送動作を一時的に中止する（ステップＳＢ２：ＹＥＳ、及びＳＢ３）。この結果、当該データセグメントの再送タイマのタイムアウトタイミングは延期され、高速再送のための連続回数は２となる。
【００６３】
次に、ＣＰＵ４１は、シーケンス番号「５５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントのＥＯＮビットはオフにセットされているから、ＣＰＵ４１は、一般的なＴＣＰに従った処理のみを行う（ステップＳＢ２：ＮＯ）。つまり、高速再送のための連続回数に１を加算する。この結果、連続回数は再送閾値に達するから、ＣＰＵ４１は、当該確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの再送を行う。
【００６４】
ここで、図９を参照し、上述した動作の特徴について説明する。図９に示すように、一般的な通信システムでは、サーバ装置において、重複確認応答セグメントが３つ連続して到着する前に、シーケンス番号「３５００」のデータセグメントの再送タイマがタイムアウトし、当該データセグメントが再送される。これに対し、本実施形態では、図８から明らかなように、当該再送タイマがタイムアウトする前に、高速再送により、当該データセグメントが再送される。ＴＣＰに従う通信におけるタイムアウトによる再送は輻輳ウィンドウを大幅に狭くする処理を伴うのに対し、高速再送による再送にはそのような処理が伴わないため、以降の通信において、本実施形態の方が効率的に通信網を利用することができる。
【００６５】
以上、説明したように、本実施形態によれば、ＲＬＣ副層にてＳＤＵの順序制御を行わないから通信網の実質的な利用率が低下しない。また、本実施形態によれば、ＲＬＣ副層にてＳＤＵの順序制御を行わないことによりトランスポート層において発生する事態であって、データセグメントの受信順序の入れ替わりをデータセグメントの消失と誤検出する事態に起因した不適切なフロー制御が行われない。よって、通信網の実質的な利用率を向上させることができる。
【００６６】
なお、上述の動作説明では、一般的な通信システムにおいて再送タイマのタイムアウトをもってデータセグメントの消失とみなすことが誤りであるようなケースについての説明を省略した。これは、ＥＯＮビットがオンにセットされた確認応答セグメントを受信した場合に再送タイマの計時が一時的に中止され、タイムアウトタイミングが延期されることについては既述であり、この記述から、再送タイマが誤って早期にタイムアウトしてしまう事態をも本実施形態によって回避可能であることは容易に理解可能である、からである。
【００６７】
ところで、上述した実施形態では、再送遅延を低減するために、サーバ装置４０にて、ＥＯＮビットがオンにセットされた確認応答セグメントの受信時に連続回数が再送閾値に満たない最大値「２」に設定されるようになっている。しかし、ＥＯＮビットがオンにセットされた確認応答セグメントの受信時に連続回数を初期値「０」にするようにしても、再送遅延を低減することは可能である。このような実施形態について、次に説明する。
【００６８】
［第２実施形態］
［構成］
図１０は本発明の第２実施形態に係る通信システム２００の構成を示す図である。この通信システム２００が図１の通信システム１００と異なる点は、基地局２０に代えて基地局５０を有する点と、サーバ装置４０に代えてサーバ装置６０を有する点のみである。基地局５０の通信プロトコル構成は基地局２０と、サーバ装置６０の通信プロトコル構成はサーバ装置４０と同一である。
【００６９】
図１１は基地局５０の構成を示すブロック図である。構成上、基地局５０が基地局２０と異なる点は、不揮発性メモリ２２が通知プログラム２２１に代えて通知プログラム５２１を記憶している点のみである。この通知プログラム５２１は、基地局５０を中継装置としたトランスポート層の通信コネクションの確立に連動して、その実行が開始／終了される。以下、通知プログラム５２１を実行中のＣＰＵ２１が行う通知処理のうち、通知プログラム２２１を実行中のＣＰＵ２１が行う通知処理と異なる部分について説明する。
【００７０】
通知プログラム５２１を実行中のＣＰＵ２１は、通知処理において、移動機１０から確認応答セグメントを受信すると、ＲＡＭ２３の重複判定領域２３２に書き込まれているシーケンス番号と当該確認応答セグメントのＡＣＫ値とを比較し、前者が後者よりも若くない場合には、ＣＰＵ２１は、当該確認応答セグメントのＡＣＫ値をシーケンス番号とするデータセグメントの状態が「廃棄」であるか否かを判定し、「廃棄」であれば、当該確認応答セグメントの消失通知ビットをオンにセットし、セット後の当該確認応答セグメントをサーバ装置６０へ送信する。消失通知ビットは、一般的なＴＣＰにおけるデータセグメントの未使用領域内の１ビットであり、デフォルトではオフにセットされており、一般的なＴＣＰに従う通信では使用されない。この消失通知の仕組みは周知のＥＬＮ（Explicit Loss Notification）を用いることで実現される。なお、このことから明らかなように、サーバ装置６０はＥＬＮに対応している。逆に、「廃棄」でなければ、ＣＰＵ２１は、当該確認応答セグメントのＡＣＫ値をシーケンス番号とするデータセグメントの状態が「転送中」であるか否かを判定し、「転送中」でなければ、当該確認応答セグメントをそのままサーバ装置６０へ転送する。「転送中」であれば、ＣＰＵ２１は、当該確認応答セグメントのＥＯＮビットをオンにセットし、セット後の当該確認応答セグメントをサーバ装置６０へ送信する。
【００７１】
図１２はサーバ装置６０の構成を示すブロック図である。構成上、サーバ装置６０がサーバ装置４０と異なる点は、不揮発性メモリ４２が通信プログラム４２１に代えて通信プログラム６２１を記憶している点と、ＥＬＮに対応している点のみである。通信プログラム６２１は移動機１０からの要求に応じて実行されるものであり、以下では、通信プログラム６２１を実行中のＣＰＵ４１が行う入れ替わり制御処理のうち、通信プログラム４２１を実行中のＣＰＵ２１が行う入れ替わり制御処理と異なる点について説明する。
【００７２】
通信プログラム６２１を実行中のＣＰＵ４１は、移動機１０から確認応答セグメントを受信すると、当該確認応答セグメントの消失通知ビットがオンか否かを判定し、オンであれば、当該確認応答セグメントのＡＣＫ値をシーケンス番号としたデータセグメントに対する強制再送フラグがオンか否かを判定する。強制再送フラグはＲＡＭ４３に書き込まれるものであり、そのデフォルト値はオフである。この強制再送フラグがオフの場合にのみ、ＣＰＵ４１は当該データセグメントを即座に再送し、当該データセグメントに対する強制再送フラグをオンとする。この再送後のサーバ装置４０の状態は、当該データセグメントを高速再送により再送した後の状態と同様である。なお、ＥＯＮビットのオン／オフが判定されるのは、当該確認応答セグメントの消失通知ビットがオフの場合のみである。また、受信した確認応答セグメントのＥＯＮビットがオンにセットされている場合、ＣＰＵ４１は、連続回数を２ではなく０とする。
【００７３】
［動作］
次に、上述した構成の通信システム２００の動作のうち、図１の通信システム１００の動作と大きく異なる点について、主に図１３〜図１５を参照して説明する。図１３は通知プログラム５２１を実行中のＣＰＵ２１により行われる通知処理の一部の流れを示すフローチャートである。このフローチャートに示される処理と図６に示される処理は、ＣＰＵ２１により並列に実行されている。図１４は通信プログラム６２１を実行中のＣＰＵ４１により行われる入れ替わり制御処理の流れを示すフローチャートである。図１５は通信システム２００により行われる通信の一例を示すシーケンス図である。なお、この動作説明における前提は第１実施形態の動作説明の前提と同様である。
【００７４】
図１５に示すように、基地局５０のＣＰＵ２１は、シーケンス番号「６０００」のデータセグメントを移動機１０へ送信した後に、シーケンス番号「５０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＡ１）。この確認応答セグメントは重複確認応答セグメントであるから、ＣＰＵ２１は、この確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの状態が「廃棄」であるか否かを判定する（ステップＳＡ２：ＮＯ、ＳＡ５：ＹＥＳ、及びＳＤ１）。この時点では、当該データセグメントの状態は「廃棄」ではないから、ＣＰＵ２１は、この確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの状態が「転送中」であるか否かを判定する（ステップＳＡ７）。この時点では、当該データセグメントの状態は「転送中」であるから、ＣＰＵ２１は、当該確認応答セグメントのＥＯＮビットをオンにセットし、セット後の確認応答セグメントをサーバ装置４０へ送信する（ステップＳＡ８、及びＳＡ４）。
【００７５】
次に、ＣＰＵ２１は、トランスポート層よりも下位層（具体的にはＲＬＣ副層）にて、タイムアウト等により、シーケンス番号「３５００」のデータセグメントを廃棄する。ＣＰＵ２１は、ｓｎｏｏｐモジュールにて、この旨を示す廃棄通知を下位層から取得する（図６のステップＳＣ１）。廃棄通知を取得すると、ＣＰＵ２１は、廃棄通知に示されるシーケンス番号のデータセグメントの状態が「廃棄」であることを示す状態データで、ＲＡＭ２３の状態領域２３１に書き込まれた当該データセグメントの状態データを上書きする（ステップＳＣ２）。
【００７６】
次に、ＣＰＵ２１は、シーケンス番号「５５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＡ１）。この確認応答セグメントは重複確認応答セグメントであるから、ＣＰＵ２１は、この確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの状態が「廃棄」であるか否かを判定する（ステップＳＡ２：ＮＯ、ＳＡ５：ＹＥＳ、及びＳＤ１）。この時点では、当該データセグメントの状態は「廃棄」であるから、ＣＰＵ２１は、当該確認応答セグメントの消失通知ビットをオンにセットし、セット後の当該確認応答セグメントをサーバ装置６０へ送信する（ステップＳＤ２、及びＳＡ４）。
【００７７】
以降、基地局２０では、上述と同様の処理が繰り返され、シーケンス番号「６０００」のデータセグメントの受信確認のための確認応答セグメントであって、消失通知ビットがオンにセットされた確認応答セグメントがサーバ装置６０へ転送される。
以上のようにして基地局５０から送信された確認応答セグメントは、送信された順序でサーバ装置６０に到着する。
【００７８】
サーバ装置６０のＣＰＵ４１は、シーケンス番号「６０００」のデータセグメントを移動機１０へ送信した後に、シーケンス番号「５０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントの消失通知ビットはオフにセットされており、かつ、ＥＯＮビットはオンにセットされているから、ＣＰＵ４１は、当該確認応答セグメントのＡＣＫ値「３５００」をシーケンス番号としたデータセグメントの再送動作を一時的に中止する（ステップＳＥ１：ＮＯ、ＳＢ２：ＹＥＳ、及びＳＢ３）。
【００７９】
次に、ＣＰＵ４１は、シーケンス番号「５５００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントの消失通知ビットはオンにセットされており、かつ、当該確認応答セグメントのＡＣＫ値をシーケンス番号としたデータセグメントに対する強制再送フラグはオフであるから、ＣＰＵ４１は、当該データセグメントを即座に再送し、当該データセグメントに対する強制再送フラグをオンとする（ステップＳＥ１：ＹＥＳ、ＳＥ２：ＮＯ、及びＳＥ３）。
【００８０】
次に、ＣＰＵ４１は、シーケンス番号「６０００」のデータセグメントの受信確認のための確認応答セグメントを受信する（ステップＳＢ１）。この確認応答セグメントの消失通知ビットはオンにセットされており、かつ、当該確認応答セグメントのＡＣＫ値をシーケンス番号としたデータセグメントに対する強制再送フラグはオンであるから、ＣＰＵ４１は、当該データセグメントを再送しない（ステップＳＥ１：ＹＥＳ、及びＳＥ２：ＹＥＳ）。これにより、無駄な再送が回避される。
【００８１】
上述したように、本実施形態では、サーバ装置６０において、ＥＯＮビットがオンにセットされた確認応答セグメントを受信したときに連続回数が０となっても、消失通知ビットによりデータセグメントの消失が通知されると即座に該当するデータセグメントを再送するようになっているから、第１実施形態と同種の効果を得ることができる。
【００８２】
［第３実施形態］
図１６は本発明の第３実施形態に係る通信システム３００の構成を示す図である。この通信システム３００が図１の通信システム１００と異なる点は、移動機１０に代えて移動機７０を有する点と、基地局２０に代えて基地局８０を有する点と、サーバ装置４０に代えてサーバ装置９０を有する点のみである。通信システム３００の通信プロトコル構成は、図２に示す構成と同様である。ただし、移動機７０及びサーバ装置９０は、ＴＣＰのＳＡＣＫオプションを用いて通信する。
【００８３】
図１７は基地局８０の構成を示すブロック図である。構成上、基地局８０が基地局２０と異なる点は、不揮発性メモリ２２が通知プログラム２２１に代えて通知プログラム８２１を記憶している点と、ＲＡＭ２３に重複判定領域２３２が確保されない点のみである。この通知プログラム８２１は、基地局８０を中継装置としたトランスポート層の通信コネクションの確立に連動して、その実行が開始／終了される。
【００８４】
図１８は通知プログラム８２１を実行中のＣＰＵ２１により行われる通知処理の一部の流れを示すフローチャートである。このフローチャートに示される処理と図６に示される処理は、ＣＰＵ２１により並列に実行される。図１８に示すように、通知プログラム８２１を実行中のＣＰＵ２１は、サーバ装置９０からセグメントを受信すると（ステップＳＡ１）、受信したセグメントがデータセグメントであるか否か（確認応答セグメントでないか否か）を判定する（ステップＳＡ２）。受信したセグメントがデータセグメントの場合、ＣＰＵ２１は、当該データセグメントの状態が「転送中」であることを示す状態データをＲＡＭ２３の状態領域２３１に書き込み、当該データセグメントを移動機７０へ転送する（ステップＳＡ３及びＳＡ４）。
【００８５】
逆に、受信したセグメントがデータセグメントでない場合、すなわち確認応答セグメントの場合、ＣＰＵ２１は、当該確認応答セグメントのＡＣＫ値およびＳＡＣＫブロックの内容に基づいて、新たな受信確認が為されているか否かを判定する（ステップＳＦ１）。ＳＡＣＫブロックとは、ＳＡＣＫオプションを用いたＴＣＰに従う通信において確認応答セグメントが有するブロックであり、第１〜第４ＳＡＣＫブロックからなる。各ブロックには必要に応じてシーケンス番号が格納される。このようなＳＡＣＫブロックの内容とＡＣＫ値とを参照することにより、サーバ装置９０は、移動機７０に受信されたデータセグメントを特定することができる。
【００８６】
当該確認応答セグメントにより新たな受信確認が為されている場合には、ＣＰＵ２１は受信確認処理を行う（ステップＳＦ１：ＹＥＳ、及びＳＦ２）。この受信確認処理では、ＣＰＵ２１は、当該確認応答セグメントにより受信確認がなされるデータセグメントの状態データを、「受信」を示すように更新する。次に、ＣＰＵ２１は、データセグメントの入れ替わりが生じた可能性があるか否かを判定する（ステップＳＦ３）。なお、当該確認応答セグメントにより新たな受信確認が為されていない場合には、ＣＰＵ２１は、受信確認処理を経ずに、データセグメントの入れ替わりが生じた可能性があるか否かを判定する（ステップＳＦ１：ＮＯ、及びＳＦ３）。
【００８７】
データセグメントの入れ替わりが生じた可能性があるか否かの判定は、状態データで示される状態が「転送中」のデータセグメントのシーケンス番号のうち、最も若いシーケンス番号を特定し、このシーケンス番号よりも大きなシーケンス番号を当該確認応答セグメントのＳＡＣＫブロックが有するか否かを調べることにより実現される。このようなシーケンス番号が当該ＳＡＣＫブロックに存在しない場合、ＣＰＵ２１は、データセグメントの入れ替わりが生じた可能性が無いと判定し、当該確認応答セグメントをそのままサーバ装置９０へ転送する（ステップＳＡ４）。逆に、このようなシーケンス番号が当該ＳＡＣＫブロックに存在する場合、ＣＰＵ２１は、データセグメントの入れ替わりが生じた可能性があると判定し、入れ替わりデータセグメントを特定する（ステップＳＦ４）。入れ替わりデータセグメントの特定は、当該確認応答セグメントのＳＡＣＫブロックによって受信確認されたデータセグメントよりも若いシーケンス番号を有し、かつ状態が「受信」ではないデータセグメントを見つけ出すことにより実現される。
【００８８】
こうして入れ替わりデータセグメントを特定したＣＰＵ２１は、当該データセグメントの状態が「転送中」でも「廃棄」でもない場合には、当該確認応答セグメントをそのままサーバ装置９０へ転送する（ステップＳＦ５：ＮＯ、ＳＦ６：ＮＯ、及びＳＡ４）。また、当該データセグメントの状態が「廃棄」の場合には、ＣＰＵ２１は、消失通知処理を行い、その後に、当該確認応答セグメントをサーバ装置９０へ送信する（ステップＳＦ５：ＹＥＳ、ＳＦ７、及びＳＡ４）。消失通知処理には、当該確認応答セグメントの消失通知ビットをオンにセットする処理と、当該確認応答セグメントの所定のフィールドに当該データセグメントのシーケンス番号を格納する処理が含まれている。また、当該データセグメントの状態が「転送中」の場合には、ＣＰＵ２１は入れ替わり通知処理を行い、その後に、当該確認応答セグメントをサーバ装置９０へ送信する（ステップＳＦ５：ＮＯ、ＳＦ６：ＹＥＳ、ＳＦ８、及びＳＡ４）。入れ替わり通知処理には、当該確認応答セグメントのＥＯＮビットをオンにセットする処理と、当該確認応答セグメントの所定のフィールドに当該データセグメントのシーケンス番号を格納する処理が含まれている。なお、本実施形態では、所定のフィールドとして第１ＳＡＣＫブロックを採用している。つまり、ＣＰＵ２１は、第１ＳＡＣＫブロックの内容を第２ＳＡＣＫブロックへ、第２ＳＡＣＫブロックの内容を第３ＳＡＣＫブロックへ、…、というように移動してから、当該データセグメントのシーケンス番号を第１ＳＡＣＫブロックに格納する。
【００８９】
図１９はサーバ装置９０の構成を示すブロック図である。構成上、サーバ装置９０がサーバ装置４０と異なる点は、不揮発性メモリ４２が通信プログラム４２１に代えて通信プログラム９２１を記憶している点と、ＴＣＰのＳＡＣＫオプションに対応している点と、ＥＬＮに対応している点のみである。この通信プログラム９２１は、移動機７０からの要求に応じて実行される。
【００９０】
図２０は通信プログラム９２１を実行中のＣＰＵ４１により行われる入れ替わり制御処理の流れを示すフローチャートである。この図に示すように、通信プログラム９２１を実行中のＣＰＵ４１は、移動機１０から確認応答セグメントを受信すると（ステップＳＢ１）、当該確認応答セグメントの消失通知ビットがオンか否かを判定し（ステップＳＥ１）、オフであれば、当該確認応答セグメントのＥＯＮビットがオンにセットされているか否かを判定する（ステップＳＢ２）。ＥＯＮビットがオフにセットされていれば、ＣＰＵ４１は、ＳＡＣＫオプションを用いた一般的なＴＣＰに従った処理のみを行う（ステップＳＢ２：ＮＯ）。逆に、ＥＯＮビットがオンにセットされていれば、当該確認応答セグメントの第１ＳＡＣＫブロックに格納されたシーケンス番号のデータセグメントの状態が「Ｓａｃｋｅｄ」となるようにスコアボードを更新することにより、当該データセグメントの再送動作を一時的に中止する（ステップＳＢ２：ＹＥＳ、及びＳＧ１）。
【００９１】
一方、受信した確認応答セグメントの消失通知ビットがオンであれば、ＣＰＵ４１は、当該確認応答セグメントの第１ＳＡＣＫブロックに格納されたシーケンス番号のデータセグメントに対する強制再送フラグがオンか否かを判定する（ステップＳＧ２）。強制再送フラグはＲＡＭ４３に書き込まれるものであり、そのデフォルト値はオフである。当該データセグメントに対する強制再送フラグがオフの場合にのみ、ＣＰＵ４１は当該データセグメントを即座に再送し、当該データセグメントに対する強制再送フラグをオンとする（ステップＳＧ２：ＮＯ、及びＳＧ３）。
【００９２】
本実施形態に係る通信システム３００により行われる通信処理は上述の通りであるから、本実施形態によれば、第１実施形態と同種の効果が得られる。
【００９３】
［変形］
以下に、上述した実施形態の変形例を列挙する。
上述した実施形態では、トランスポート層における送信ノード（サーバ装置）と受信ノード（移動機）との間の通信路に無線区間が含まれるものとしたが、当該通信路が有線区間のみで構成されていてもよい。もちろん、送信ノードと受信ノードとの間のネットワークは、ＩＭＴ−２０００に準拠していなくてもよい。要は、送信ノードと受信ノードとがトランスポート層にて通信可能なネットワークであればよい。
また、上述した実施形態では、トランスポート層における送信ノードと受信ノードとの間の中継ノードがデータセグメントの入れ替わりの通知を行うようにしたが、受信ノードが行うようにしてもよい。
また、上述した実施形態では、確認応答セグメントを用いてデータセグメントの入れ替わりを通知するようにしたが、トランスポート層の通信プロトコルによっては、他のデータを用いて通知するようにしてもよい。
また、上述した実施形態では、中継ノードが受信ノードから返送されてくる確認応答セグメントを利用しデータセグメントの入れ替わりを通知するようにしたが、中継ノードが確認応答セグメントを生成し、これを用いて入れ替わりの通知を行うようにしてもよい。
また、上述した実施形態では、本発明を再送制御や輻輳制御に用いているが、これらだけではなく、データのロス率に基づいた送信レートの制御に用いてもよい。なお、データのロス率を求めるノードが受信ノードの場合、データセグメントの入れ替わりの通知先は受信ノードとなる。したがって、データセグメントの入れ替わりの通知を受信ノードが行う場合、送信ノード及び中継ノードとして既存のものをそのまま使うことができる。
また、再送制御や輻輳制御、送信レート制御などの各種の制御を行う制御ノードにおいて、受信ノードにおける受信順序が入れ替わったデータセグメントの通知を受けて各種の制御を一時中止した後に、当該データセグメントが消失したことが判明した場合には、制御ノードの状態を上記の一時中止がなかった場合の状態とするようにしてもよい。例えば、再送タイマを一時停止した後に、この一時停止期間分だけタイマ値を先に進めてから再送タイマの計時を再開するようにしてもよい。
また、上述した実施形態では、データセグメント及び確認応答セグメントを用いてデータセグメントの入れ替わりを推定するようにしたが、トランスポート層の通信プロトコルが確認応答セグメントの送信を規定していない通信プロトコルの場合や、受信ノードにてデータセグメントの入れ替わりを推定する場合には、データセグメントのみを用いてデータセグメントの入れ替わりを推定するようにしてもよい。そもそも、確認応答セグメントのＡＣＫ値やＳＡＣＫブロックのシーケンス番号は、受信ノードに受信されたトランスポート層のデータセグメントのシーケンス番号に基づいたものであるから、確認応答セグメントを用いてデータセグメントの入れ替わりを推定することも、受信ノードに受信されたトランスポート層のデータユニットのシーケンス番号に基づいて受信ノードにおける受信順序が入れ替わったデータユニットを推定することの範囲内である。
【図面の簡単な説明】
【００９４】
【図１】本発明の第１実施形態に係る通信システム１００の構成を示す図である。
【図２】通信システム１００の通信プロトコル構成を示す図である。
【図３】通信システム１００を構成する基地局２０の構成を示すブロック図である。
【図４】通信システム１００を構成するサーバ装置４０の構成を示すブロック図である。
【図５】基地局２０にて通知プログラム２２１を実行中のＣＰＵ２１により行われる通知処理の一部の流れを示すフローチャートである。
【図６】基地局２０にて通知プログラム２２１を実行中のＣＰＵ２１により行われる通知処理の他の流れを示すフローチャートである。
【図７】サーバ装置４０にて通信プログラム４２１を実行中のＣＰＵ４１により行われる入れ替わり制御処理の流れを示すフローチャートである。
【図８】通信システム１００により行われる通信の一例を示すシーケンス図である。
【図９】一般的な通信システムにて図８に示す通信と同様の通信を行おうとした場合のシーケンス図である。
【図１０】本発明の第２実施形態に係る通信システム２００の構成を示す図である。
【図１１】通信システム２００を構成する基地局５０の構成を示すブロック図である。
【図１２】通信システム２００を構成するサーバ装置６０の構成を示すブロック図である。
【図１３】基地局５０にて通知プログラム５２１を実行中のＣＰＵ２１により行われる通知処理の一部の流れを示すフローチャートである。
【図１４】サーバ装置６０にて通信プログラム６２１を実行中のＣＰＵ４１により行われる入れ替わり制御処理の流れを示すフローチャートである。
【図１５】通信システム２００により行われる通信の一例を示すシーケンス図である。
【図１６】本発明の第３実施形態に係る通信システム３００の構成を示す図である。
【図１７】通信システム３００を構成する基地局８０の構成を示すブロック図である。
【図１８】基地局８０にて通知プログラム８２１を実行中のＣＰＵ２１により行われる通知処理の一部の流れを示すフローチャートである。
【図１９】通信システム３００を構成するサーバ装置９０の構成を示すブロック図である。
【図２０】サーバ装置９０にて通信プログラム９２１を実行中のＣＰＵ４１により行われる入れ替わり制御処理の流れを示すフローチャートである。
【符号の説明】
【００９５】
２０，５０，８０…基地局、２１、４１…ＣＰＵ、２２、４２…不揮発性メモリ、２２１、５２１、８２１…通知プログラム、２３、４３…ＲＡＭ、２４…無線部、２５、４４…通信インタフェース、４０，６０，９０…サーバ装置、４２１、６２１、９２１…通信プログラム。
【図１】
2005149307.tif 000003
【図２】
2005149307.tif 000004
【図３】
2005149307.tif 000005
【図４】
2005149307.tif 000006
【図５】
2005149307.tif 000007
【図６】
2005149307.tif 000008
【図７】
2005149307.tif 000009
【図８】
2005149307.tif 000010
【図９】
2005149307.tif 000011
【図１０】
2005149307.tif 000012
【図１１】
2005149307.tif 000013
【図１２】
2005149307.tif 000014
【図１３】
2005149307.tif 000015
【図１４】
2005149307.tif 000016
【図１５】
2005149307.tif 000017
【図１６】
2005149307.tif 000018
【図１７】
2005149307.tif 000019
【図１８】
2005149307.tif 000020
【図１９】
2005149307.tif 000021
【図２０】
2005149307.tif 000022