(57)【特許請求の範囲】
【請求項１】
パケット送信方法であって、
送信ノードによって、前記送信ノードと受信ノードとの間の通信リンクを使用することによって、前記受信ノードに複数のパケットを送信するステップと、
前記複数のパケットにおける第1のパケットが失われたと判定すると、前記送信ノードによって、前記第1のパケットを再送信するステップと、
前記第1のパケットが再送信された後に受信された確認応答パケットに基づいて、前記送信ノードによって、前記再送信された第1のパケットが失われたと判定するステップと、
前記送信ノードによって、前記第1のパケットを再び再送信し、前記第1のパケットを再び再送信した後、前記第1のパケットを、第1の時間間隔内で少なくとも1回送信するステップであって、前記第1の時間間隔は0以上であり、且つ、前記第1のパケットのタイムアウトタイマの周期未満であり、前記送信ノードは、前記第1の時間間隔内で、再び再送信された前記第1のパケットが失われたことを示す確認応答パケットを受信していない、ステップとを含む方法。
【請求項２】
前記送信ノードによって、前記受信ノードから1つまたは複数の確認応答パケットを受信し、前記1つまたは複数の確認応答パケットで搬送されるackフィールドまたは拡張フィールドに従って、前記複数のパケットにおける前記第1のパケットが失われたと判定するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記第1のパケットを再び再送信した後、前記第1のパケットを、前記第1の時間間隔内で少なくとも1回送信する前記ステップの後、前記方法は、
前記送信ノードによって、第2のパケットを送信するステップであって、前記第2のパケットは新しいパケットである、ステップをさらに含む、請求項1または2に記載の方法。
【請求項４】
前記送信ノードと前記受信ノードとの間の前記通信リンクは、TCP接続である、請求項1乃至3のいずれか1項に記載の方法。
【請求項５】
無線モデム、プロセッサ、アンテナおよびTCPプロトコルスタックを含むユーザ機器であって、前記無線モデムは前記アンテナに接続され、前記TCPプロトコルスタックは、前記プロセッサの制御の下で、前記ユーザ機器上で動作するアプリケーションプログラムのデータを複数のパケットにカプセル化し、前記複数のパケットを前記無線モデムに送信するように構成され、前記無線モデムは、前記複数のパケットをアナログ信号に変調し、前記アンテナを使用することによって、前記アナログ信号をサーバに送信するように構成され、
前記TCPプロトコルスタックは、前記複数のパケットにおける第1のパケットが失われたと判定すると、前記無線モデムおよび前記アンテナを使用することによって、前記第1のパケットを前記サーバに再送信して、前記第1のパケットが再送信された後に受信された確認応答パケットに基づいて、前記再送信された第1のパケットが失われたと判定し、前記第1のパケットを前記サーバに再び再送信し、前記第1のパケットを再び再送信した後、前記第1のパケットを、第1の時間間隔内で少なくとも1回前記サーバに送信するようにさらに構成され、前記第1の時間間隔は0以上であり、且つ、前記第1のパケットのタイムアウトタイマの周期未満であり、前記ユーザ機器は、前記第1の時間間隔内で、再び再送信された前記第1のパケットが失われたことを示す確認応答パケットを受信していない、ユーザ機器。
【請求項６】
前記TCPプロトコルスタックは、前記無線モデムおよび前記アンテナを使用することによって、第2のパケットを送信するようにさらに構成され、前記第2のパケットは新しいパケットである、請求項5に記載のユーザ機器。
【請求項７】
ユーザ機器であって、
前記ユーザ機器と通信接続している受信ノードに複数のパケットを送信するように構成される送信ユニットと、
前記受信ノードから、複数の確認応答パケットを受信するように構成される受信ユニットと、
前記受信ユニットによって受信された前記複数の確認応答パケットに従って、前記複数のパケットにおける第1のパケットが失われたと判定し、前記第1のパケットを前記受信ノードに再送信するように前記送信ユニットをトリガし、前記第1のパケットが再送信された後に前記受信ユニットによって受信された確認応答パケットに従って、前記再送信された第1のパケットが失われたと判定するように構成される処理ユニットとを含み、
前記送信ユニットは、前記処理ユニットが前記再送信された第1のパケットが失われたと判定した後、前記第1のパケットを、第1の時間間隔内で少なくとも2回連続的に送信するようにさらに構成され、前記第1の時間間隔は0以上であり、且つ、前記第1のパケットのタイムアウトタイマの周期未満である、ユーザ機器。
【請求項８】
前記送信ユニットは、前記第1のパケットを少なくとも2回連続的に送信した後、第2のパケットを送信するようにさらに構成され、前記第2のパケットは新しいパケットである、請求項7に記載のユーザ機器。
【請求項９】
プロセッサによって実行されると、請求項1乃至4のいずれか1項の前記方法を前記プロセッサに実行させる、プログラムを含むコンピュータ可読記憶媒体。
【請求項１０】
プロセッサによって実行されると、請求項1乃至4のいずれか1項の全ての前記ステップを前記プロセッサに実行させる、コンピュータプログラムコードを含むコンピュータプログラム。
【請求項１１】
パケット送信方法であって、
送信ノードによって、前記送信ノードと受信ノードとの間の通信リンクを使用することによって、前記受信ノードに複数のパケットを送信するステップと、
前記複数のパケットにおける第1のパケットが失われたと判定すると、前記送信ノードによって、前記第1のパケットを再送信するステップと、
前記第1のパケットが再送信された後に受信された確認応答パケットに基づいて、前記送信ノードによって、前記再送信された第1のパケットが失われたと判定するステップと、
前記送信ノードによって、前記第1のパケットを再び再送信し、送信バッファが空であるかどうかを判定するステップと、
前記送信バッファが空である場合、前記第1のパケットを再び再送信した後、前記送信ノードによって、前記第1のパケットを、第1の時間間隔内で少なくとも1回送信するステップであって、前記第1の時間間隔は0以上であり、且つ、前記第1のパケットのタイムアウトタイマの周期未満であり、前記送信ノードは、前記第1の時間間隔内で、再び再送信された前記第1のパケットが失われたことを示す確認応答パケットを受信していない、ステップとを含む方法。
【請求項１２】
前記送信バッファが空でない場合、前記送信ノードによって、前記送信バッファ内の少なくとも1つのパケットを、前記第1の時間間隔内で送信するステップであって、前記送信バッファ内の前記パケットは、前記送信ノードによって送信されていないパケットである、ステップをさらに含む、請求項11に記載の方法。
【請求項１３】
パケット送信方法であって、
送信ノードによって、前記送信ノードと受信ノードとの間の通信リンクを使用することによって、前記受信ノードに複数のパケットを送信するステップと、
前記複数のパケットにおける第1のパケットが失われたと判定すると、前記送信ノードによって、前記第1のパケットを再送信するステップと、
前記第1のパケットが再送信された後に受信された確認応答パケットに基づいて、前記送信ノードによって、前記再送信された第1のパケットが失われたと判定するステップと、
前記送信ノードによって、前記第1のパケットを再び再送信し、送信バッファが空であるかどうか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定するステップと、
前記送信バッファが空であるか、または、前記現在の輻輳制御ポリシーが前記新しいパケットの送信を許可しない場合、前記第1のパケットを再び再送信した後、前記送信ノードによって、前記第1のパケットを、第1の時間間隔内で少なくとも1回送信するステップであって、前記第1の時間間隔は0以上であり、且つ、前記第1のパケットのタイムアウトタイマの周期未満であり、前記送信ノードは、前記第1の時間間隔内で、再び再送信された前記第1のパケットが失われたことを示す確認応答パケットを受信していない、ステップとを含む方法。
【請求項１４】
前記送信バッファが空でなく、且つ、前記現在の輻輳制御ポリシーが前記新しいパケットの送信を許可する場合、前記送信ノードによって、前記送信バッファ内の少なくとも1つのパケットを、前記第1の時間間隔内で送信するステップであって、前記送信バッファ内の前記パケットは、前記送信ノードによって送信されていないパケットである、ステップをさらに含む、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信技術の分野に関し、詳細には、パケット送信方法およびユーザ機器に関する。
【背景技術】
【０００２】
コンピュータネットワーク通信において、パケット損失回復アルゴリズムは、非常に重要な役割を担う。パケット損失回復アルゴリズムは、送信制御プロトコル（Transmission Control Protocol, TCP）スタックにおけるデータ送信の信頼性を保証する重要なアルゴリズムであり、データパケットが失われたときのエラー耐性メカニズムであり、データ送信効率およびネットワーク帯域幅の利用率に直接影響を及ぼす。RFC2581は、タイムアウト再送信および高速再送信を主に含む、典型的なパケット損失回復アルゴリズムを定義および記載する。タイムアウト再送信は、TCPプロトコルにおけるデータ信頼性を保証するための重要なメカニズムである。タイムアウト再送信の原理は、送信ノードが、パケット送信後にタイムアウトタイマを有効にし、タイムアウトタイマが満了した後、送信ノードが、パケットが正しく受信されたことを示す確認応答パケット（Acknowledgement, 略してACK）を未だ受信しない場合、送信ノードはパケットを再送することである。再送されたパケットはまた、一般に、再送信されたパケットと呼ばれる。高速再送信は、タイムアウト再送信の最適化されたメカニズムである。送信端がN（一般に、Nは3と等しい）よりも多くの反復ACKを受信した場合、パケットが失われたと判定され、損失パケットは直ちに再送信される。高速再送信のメカニズムでは、パケット再送信は、再送信タイマが満了する前に実行されることができ、それによって、データ送信効率を大幅に改善する。
【０００３】
TCP送信における不要なタイムアウト再送信を回避することは、常に、学会および産業界の研究ホットスポットである。しかしながら、現在のTCPプロトコルスタックの大部分においては、再送信されたパケットの損失を検出するためのメカニズムは存在しない。再送信されたパケットが失われた場合、必然的にタイムアウト再送信が発生し、結果として、TCP接続の送信効率は大幅に低下する。
【０００４】
現在、再送信されたパケットの損失検出および回復に関するアルゴリズムは、主に、重複確認応答カウンティング（Duplicate Acknowledgement Counting, DAC）アルゴリズムおよび選択的確認応答プラス（Selective Acknowledgment Plus, SACK+）アルゴリズムを含む。DACアルゴリズムおよびSACK+アルゴリズムの両方が、非対称のTCP加速アルゴリズムであり、送信端のみで配置される必要があり、それらの基本的な考え方は非常に類似している。
【０００５】
DACアルゴリズムの主な原理は、パケットが再送信されるとき、送信端は、ネットワーク内で現在送信されているパケットの数nを推定し、パケット再送信後に受信された反復ACKの数をカウントし、ここで、既に送信され、受信端によって確認されておらず、送信端によって損失パケットと判定されていないパケットはネットワークにおいて送信されているパケットとして定義され、nより多くのACKが受信された後に累積確認応答が更新されない場合、現在再送信されたパケットが失われたと判定し、タイムアウト再送信を待たずに直ちにパケットを再び再送信することである。
【０００６】
図1に示されるように、送信ウィンドウにおいて、そのシーケンス番号が3であるパケットが失われたと仮定する。図1のステップ101で示されるように、3つの反復ACKを受信した後、送信端は、そのシーケンス番号が3であるパケットを再送信するために高速再送信を開始し、DACアルゴリズムを使用することによって、ネットワークにおいて送信されているパケットの数を推定する。実現可能な推定方法は（推定方法はこの推定方法に限定されないことは留意されるべきである）、送信端は、送信されたパケットの最大シーケンス番号が8であり、受信された累積確認応答のシーケンス番号は2であり、3つの反復確認応答が受信されたと知り、送信端は1つのパケットが失われたと判定し、ネットワークにおいて送信されているパケットの数が8-2-3-1=2と等しいと推定することである。次いで、図1のステップ102で示されるように、送信端は、再送信後に受信される反復ACKをカウントする。再送信後に送信端が第3の反復ACKを受信したとき、累積確認応答のシーケンス番号が未だ2であり更新されていない場合、送信端は、再送信されたパケットは失われたと判定する。最後に、図1のステップ103で示されるように、送信端は、そのシーケンス番号が3であるパケットを直ちに再送信し、再送信タイマのタイムアウトを待つ必要はなく、それによって、タイムアウト再送信に入るのを回避する。
【０００７】
SACK+アルゴリズムの原理は、DACアルゴリズムの原理と同様である。主な違いは、SACK+アルゴリズムにおいては、確認応答パケットのSACKオプションで搬送される選択確認応答情報を使用することによって、再送信されたパケットが失われたかどうかが判定されることである。
【０００８】
しかしながら、DACアルゴリズムまたはSACK+アルゴリズムとは無関係に、再送信されたパケットの損失が時間内に検出されることができない確率が高いことが、テストを介して判明している。その結果、再送信されたパケットは、失われた後に時間内に送信端によって検出され、回復されることができない。結果として、タイムアウト再送信がトリガされる。高パケット損失レートのシナリオでは、頻繁なタイムアウト再送信は、送信遅延の増加と、送信レートの急激な低下を引き起こす。
【発明の概要】
【課題を解決するための手段】
【０００９】
本発明の実施形態は、パケットのタイムアウト再送信の確率を低減し、パケット送信遅延を低減し、パケット送信レートを改善するためのパケット送信方法、送信装置および通信システムを提供する。
【００１０】
本発明の前述の目的を達成するために、第1の態様によると、本発明の実施形態はパケット送信方法を提供し、ここで、方法は、送信ノードによって、送信ノードと受信ノードとの間の通信リンクを使用することによって、受信ノードに複数のパケットを送信するステップと、複数のパケットにおける第1のパケットが失われたと判定した後、送信ノードによって、第1のパケットを再送信するステップと、第1のパケットが再送信された後に受信された確認応答パケットに基づいて、再送信されたパケットが失われたと判定した後、第1のパケットを再び再送信し、第1のパケットを、第1の時間間隔内で少なくとも1回送信するステップとを含む。
【００１１】
第1の態様の第1の可能な実施方式では、方法は、受信ノードから1つまたは複数の確認応答パケットを受信し、1つまたは複数の確認応答パケットで搬送されるackフィールドまたは拡張フィールドに従って、第1のパケットが失われたと判定するステップをさらに含む。
【００１２】
第1の態様または第1の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、方法は、送信ノードによって、第2のパケットを、第1の時間間隔内で送信するステップであって、ここで、第2のパケットは、送信ノードによって送信されていないパケットである、ステップをさらに含む。
【００１３】
第2の態様によると、本発明の実施形態はパケット送信方法を提供し、方法は、送信ノードによって、送信ノードと受信ノードとの間の通信リンクを使用することによって、受信ノードに複数のパケットを送信するステップと、複数のパケットにおける第1のパケットが失われたと判定した後、送信ノードによって、第1のパケットを再送信するステップと、第1のパケットが再送信された後に受信された確認応答パケットに基づいて、再送信されたパケットが失われたと判定した後、第1のパケットを再び再送信し、送信バッファが空であるかどうかを判定するステップと、送信バッファが空でない場合、送信ノードによって、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で送信するステップであって、ここで、送信バッファ内のパケットは、送信ノードによって送信されていないパケットである、ステップとを含む。
【００１４】
第2の態様の第1の可能な実施方式では、方法は、送信バッファが空である場合、送信ノードによって、第1のパケットを、第1の時間間隔内で少なくとも1回送信するステップをさらに含む。
【００１５】
第2の態様または第2の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、第1のパケットが再送信された後に受信された確認応答パケットに基づいて、送信ノードによって、再送信されたパケットが失われたと判定するステップは、第1のパケットが再送信された後に受信された確認応答パケットで搬送されるackフィールドまたは拡張フィールドに従って、送信ノードによって、再送信されたパケットが失われたと判定するステップであって、ここで、再送信されたパケットは、再送信された第1のパケットである、ステップを含む。
【００１６】
第3の態様によると、本発明の実施形態はパケット送信方法を提供し、方法は、送信ノードによって、送信ノードと受信ノードとの間の通信リンクを使用することによって、受信ノードに複数のパケットを送信するステップと、複数のパケットにおける第1のパケットが失われたと判定した後、送信ノードによって、第1のパケットを再送信するステップと、第1のパケットが再送信された後に受信された確認応答パケットに基づいて、再送信されたパケットが失われたと判定した後、送信ノードによって、第1のパケットを再び再送信し、送信バッファが空であるかどうか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定するステップと、送信バッファが空であるか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、送信ノードによって、第1のパケットを、第1の時間間隔内で少なくとも1回送信するステップとを含む。
【００１７】
第3の態様の第1の可能な実施方式では、方法は、送信バッファが空でなく、且つ、現在の輻輳制御ポリシーが新しいパケットの送信を許可する場合、送信ノードによって、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で送信するステップをさらに含む。
【００１８】
前述の態様のいずれか1つまたは前述の態様のいずれか1つの可能な実施方式のいずれか1つでは、第1の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、送信ノードは、第1の時間間隔内で、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。
【００１９】
前述の態様のいずれか1つまたは前述の態様のいずれか1つの可能な実施方式のいずれか1つでは、送信ノードと受信ノードとの間の通信リンクはTCP接続である。
【００２０】
前述の態様のいずれか1つまたは前述の態様のいずれか1つの可能な実施方式のいずれか1つでは、送信バッファ内のパケットは、送信ノードによって送信されていないパケットである。
【００２１】
前述の態様のいずれか1つまたは前述の態様のいずれか1つの可能な実施方式のいずれか1つを参照すると、送信ノードは、送信ノードが再送信されたパケットが失われたと検出した後に、事前に設定された時間間隔内で、失われた第1のパケットを再送信し、ここで、事前に設定された時間間隔は、再送信された第1のパケットが失われたと送信ノードが検出した瞬間を開始ポイントとして使用し、事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、または、事前に設定された時間間隔は0に近い。
【００２２】
第4の態様によると、本発明の実施形態はユーザ機器を提供し、ユーザ機器は、無線モデム、プロセッサ、アンテナおよびTCPプロトコルスタックを含み、ここで、無線モデムはアンテナに接続され、TCPプロトコルスタックは、プロセッサの制御の下で、ユーザ機器上で動作するアプリケーションプログラムのデータを複数のパケットにカプセル化し、複数のパケットを無線モデムに送信するように構成され、無線モデムは、受信されたパケットをアナログ信号に変調し、アンテナを使用することによって、アナログ信号をサーバに送信するように構成され、TCPプロトコルスタックは、複数のパケットにおける第1のパケットが失われたと確認した後、無線モデムおよびアンテナを使用することによって、第1のパケットをサーバに再送信して、第1のパケットが再送信された後に受信された確認応答パケットに基づいて、再送信されたパケットが失われたと判定した後、第1のパケットを再び再送信し、第1のパケットを、第1の時間間隔内で少なくとも1回サーバに送信するようにさらに構成される。
【００２３】
第4の態様の第1の可能な実施方式では、TCPプロトコルスタックは、無線モデムおよびアンテナを使用することによって、第2のパケットを、第1の時間間隔内で送信するようにさらに構成され、ここで、第2のパケットは、ユーザ機器によって送信されていないパケットである。
【００２４】
第5の態様によると、本発明の実施形態はユーザ機器を提供し、ユーザ機器は、無線モデム、プロセッサ、アンテナおよびTCPプロトコルスタックを含み、ここで、無線モデムはアンテナに接続され、TCPプロトコルスタックは、プロセッサの制御の下で、ユーザ機器上で動作するアプリケーションプログラムのデータを複数のパケットにカプセル化し、複数のパケットを無線モデムに送信するように構成され、無線モデムは、受信されたパケットをアナログ信号に変調し、アンテナを使用することによって、アナログ信号をサーバに送信するように構成され、TCPプロトコルスタックは、複数のパケットにおける第1のパケットが失われたと確認した後、無線モデムおよびアンテナを使用することによって、第1のパケットをサーバに再送信して、第1のパケットが再送信された後に受信された確認応答パケットに基づいて、再送信されたパケットが失われたと判定し、第1のパケットを、サーバに再び再送信し、送信バッファが空であるかどうかを判定し、送信バッファが空でない場合、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で、サーバに送信するようにさらに構成される。
【００２５】
第5の態様の第1の可能な実施方式では、TCPプロトコルスタックは、送信バッファが空である場合、無線モデムおよびアンテナを使用することによって、第1のパケットを、第1の時間間隔内で少なくとも1回サーバに送信するようにさらに構成される。
【００２６】
第5の態様または第5の態様の第1の可能な実施方式を参照すると、第2の可能な実施方式では、TCPプロトコルスタックは、具体的には、第1のパケットが再送信された後に受信された確認応答パケットで搬送されるackフィールドまたは拡張フィールドに従って、再送信されたパケットが失われたと判定するように構成される。
【００２７】
第6の態様によると、本発明の実施形態はユーザ機器を提供し、ユーザ機器は、無線モデム、プロセッサ、アンテナおよびTCPプロトコルスタックを含み、ここで、無線モデムはアンテナに接続され、TCPプロトコルスタックは、プロセッサの制御の下で、ユーザ機器上で動作するアプリケーションプログラムのデータを複数のパケットにカプセル化し、複数のパケットを無線モデムに送信するように構成され、無線モデムは、受信されたパケットをアナログ信号に変調し、アンテナを使用することによって、アナログ信号をサーバに送信するように構成され、TCPプロトコルスタックは、複数のパケットにおける第1のパケットが失われたと確認した後、無線モデムおよびアンテナを使用することによって、第1のパケットをサーバに再送信して、第1のパケットが再送信された後に受信された確認応答パケットに基づいて、再送信されたパケットが失われたと判定し、第1のパケットを、サーバに再び再送信し、送信バッファが空であるかどうか、または、現在の輻輳制御ポリシーが、新しいパケットの送信を許可するかどうかを判定し、送信バッファが空であるか、または、現在の輻輳制御ポリシーが、新しいパケットの送信を許可しない場合、第1のパケットを、第1の時間間隔内で少なくとも1回サーバに送信するようにさらに構成される。
【００２８】
第6の態様の第1の可能な実施方式では、TCPプロトコルスタックは、送信バッファが空でなく、且つ、現在の輻輳制御ポリシーが新しいパケットの送信を許可する場合、無線モデムおよびアンテナを使用することによって、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内でサーバに送信するようにさらに構成される。
【００２９】
第4乃至第6の態様または第4乃至第6の態様の可能な実施方式のいずれか1つでは、第1の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、ユーザ機器は、第1の時間間隔内で、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。
【００３０】
第4乃至第6の態様または第4乃至第6の態様の可能な実施方式のいずれか1つでは、送信バッファ内のパケットは、ユーザ機器によって送信されていないパケットであり、再送信されたパケットは、ユーザ機器が第1のパケットが失われたと検出したときに初めてユーザ機器によって再送信された第1のパケットである。
【００３１】
第4乃至第6の態様または第4乃至第6の態様の可能な実施方式のいずれか1つでは、TCPプロトコルスタックは、具体的には、複数のパケットにおける第1のパケットが失われたと確認した後、事前に設定された時間間隔内で、無線モデムおよびアンテナを使用することによって、第1のパケットをサーバに再送信するように構成され、ここで、事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、または、事前に設定された時間間隔は0に近い。
【００３２】
第7の態様によると、本発明の実施形態はユーザ機器を提供し、ユーザ機器は、ユーザ機器と通信接続している受信ノードに複数のパケットを送信するように構成される送信ユニットと、受信ノードから、複数の確認応答パケットを受信するように構成される受信ユニットと、受信ユニットによって受信された複数の確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノードに再送信するように送信ユニットをトリガし、第1のパケットが再送信された後に受信ユニットによって受信された確認応答パケットに従って、再送信されたパケットが失われたと判定するように構成される処理ユニットとを含み、ここで、送信ユニットは、処理ユニットが再送信されたパケットが失われたと判定した後、第1のパケットを、第1の時間間隔内で少なくとも2回連続的に送信するようにさらに構成される。
【００３３】
第7の態様の第1の可能な実施方式では、送信ユニットは、第1の時間間隔内で第2のパケットを送信するようにさらに構成され、ここで、第2のパケットは、送信ユニットによって送信されていないパケットである。
【００３４】
第8の態様によると、本発明の実施形態はユーザ機器を提供し、ユーザ機器は、ユーザ機器と通信接続している受信ノードに複数のパケットを送信するように構成される送信ユニットと、受信ノードから、複数の確認応答パケットを受信するように構成される受信ユニットと、受信ユニットによって受信された複数の確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノードに再送信するように送信ユニットをトリガし、第1のパケットが再送信された後に受信ユニットによって受信された確認応答パケットに従って、再送信されたパケットが失われたと判定するように構成される処理ユニットとを含み、ここで、送信ユニットは、処理ユニットが再送信されたパケットが失われたと判定した後、第1のパケットを再び再送信し、送信バッファが空であるかどうかを判定し、送信バッファが空でない場合、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で送信するようにさらに構成される。
【００３５】
第8の態様の第1の可能な実施方式では、送信ユニットは、送信バッファが空である場合、第1の時間間隔内で、第1のパケットを少なくとも1回送信するようにさらに構成される。
【００３６】
第9の態様によると、本発明の実施形態はユーザ機器を提供し、ユーザ機器は、ユーザ機器と通信接続している受信ノードに複数のパケットを送信するように構成される送信ユニットと、受信ノードから、複数の確認応答パケットを受信するように構成される受信ユニットと、受信ユニットによって受信された複数の確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノードに再送信するように送信ユニットをトリガし、第1のパケットが再送信された後に受信ユニットによって受信された確認応答パケットに従って、再送信されたパケットが失われたと判定するように構成される処理ユニットとを含み、ここで、
送信ユニットは、処理ユニットが再送信されたパケットが失われたと判定した後、第1のパケットを再び再送信し、送信バッファが空であるかどうか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定し、送信バッファが空であるか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、第1のパケットを、第1の時間間隔内で少なくとも1回送信するようにさらに構成される。
【００３７】
第9の態様の第1の可能な実施方式では、送信ユニットは、送信バッファが空でなく、且つ、現在の輻輳制御ポリシーが新しいパケットの送信を許可する場合、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で送信するようにさらに構成され、ここで、送信バッファ内のパケットは、送信ユニットによって送信されていないパケットである。
【００３８】
第8および第9の態様または第8および第9の態様の可能な実施方式のいずれか1つでは、送信ユニットは、具体的には、処理ユニットが再送信されたパケットが失われたと判定した後、第1のパケットを、事前に設定された時間間隔内で再び再送信するように構成され、ここで、事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、または、事前に設定された時間間隔は0に近い。
【００３９】
第7乃至第9の態様または第7乃至第9の態様の可能な実施方式のいずれか1つでは、第1の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、受信ユニットは、第1の時間間隔内で、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。
【００４０】
第7乃至第9の態様または第7乃至第9の態様の可能な実施方式のいずれか1つでは、送信バッファ内のパケットは、送信ノードによって送信されていないパケットである。
【００４１】
第7乃至第9の態様または第7乃至第9の態様の可能な実施方式のいずれか1つでは、送信ユニットは、再送信されたパケットが失われたと検出された後、失われた第1のパケットを、事前に設定された時間間隔内で再送信するように構成され、ここで、事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、または、事前に設定された時間間隔は0に近い。
【００４２】
第10の態様によると、本発明の実施形態はパケット送信方法を提供し、方法は、送信ノードによって、送信ノードと受信ノードとの間の通信リンクを使用することによって、受信ノードに複数のパケットを送信するステップと、受信ノードから、複数の確認応答パケットを受信するステップと、受信された複数の確認応答パケットに基づいて、複数のパケットにおける第1のパケットが失われたと判定するステップと、第1のパケットを受信ノードに再送信し、第1のパケットを、第2の時間間隔内で少なくとも1回送信するステップであって、ここで、第2の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、送信ノードは、第2の時間間隔内で、再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない、ステップとを含む。
【００４３】
第11の態様によると、本発明の実施形態はパケット送信方法を提供し、方法は、送信ノードによって、送信ノードと受信ノードとの間の通信リンクを使用することによって、受信ノードに複数のパケットを送信するステップと、受信ノードから、複数の確認応答パケットを受信するステップと、受信された複数の確認応答パケットに基づいて、複数のパケットにおける第1のパケットが失われたと判定するステップと、第1のパケットを受信ノードに再送信し、送信バッファが空であるかどうかを判定し、送信バッファが空でない場合、送信ノードによって、送信バッファ内の少なくとも1つのパケットを、第2の時間間隔内で送信するステップであって、ここで、送信バッファ内のパケットは、送信ノードによって送信されていないパケットであり、第2の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、送信ノードは、第2の時間間隔内で、再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない、ステップとを含む。
【００４４】
第11の態様の第1の可能な実施方式では、送信バッファが空である場合、送信ノードは、第1のパケットを、第2の時間間隔内で少なくとも1回送信する。
【００４５】
第12の態様によると、本発明の実施形態はパケット送信方法を提供し、方法は、送信ノードによって、送信ノードと受信ノードとの間の通信リンクを使用することによって、受信ノードに複数のパケットを送信するステップと、受信ノードから、複数の確認応答パケットを受信するステップと、受信された複数の確認応答パケットに基づいて、複数のパケットにおける第1のパケットが失われたと判定するステップと、送信ノードによって、第1のパケットを受信ノードに再送信し、送信バッファが空であるかどうか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定するステップと、送信バッファが空であるか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、送信ノードによって、第1のパケットを、第2の時間間隔内で少なくとも1回送信するステップとを含む。
【００４６】
第10乃至第12の態様または第10乃至第12の態様の可能な実施方式のいずれか1つでは、第2の時間間隔は、第1のパケットを再び再送信する瞬間を開始ポイントとして使用し、第1のパケットが再び再送信された後に第1の確認応答パケットを受信する瞬間を終了ポイントとして使用する。
【００４７】
第10乃至第12の態様または第10乃至第12の態様の可能な実施方式のいずれか1つでは、第2の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、送信ユニットは、第2の時間間隔内で、再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。
【００４８】
第10乃至第12の態様または第10乃至第12の態様の可能な実施方式のいずれか1つでは、複数のパケットにおける第1のパケットが失われたと判定した後、送信ノードは、第1のパケットを、事前に設定された時間間隔内で再び再送信し、ここで、事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、または、事前に設定された時間間隔は0に近い。
【００４９】
本発明の実施形態はユーザ機器をさらに提供し、ここで、ユーザ機器は、第10乃至第12の態様または第10乃至第12の態様の可能な実施方式のいずれか1つにおける方法を実施するように構成される機能ユニットを含む。
【００５０】
本発明の実施形態はコンピュータ可読記憶媒体をさらに提供し、ここで、記憶媒体はプログラムコードを記憶し、プログラムコードは、前述の態様のいずれか1つまたは前述の態様のいずれか1つの可能な実施方式で記載される方法のステップを実行するために使用される。
【００５１】
本発明の実施形態で提供されるパケット送信方法およびユーザ機器によると、パケットが失われたと検出された後、失われたパケットは、迅速かつ冗長的に複数回送信されるか、または、失われたパケットが再送信された後に新しいパケットが直ちに送信され、その結果、送信ノードは、失われたパケットを再送信した後できるだけ連続して確認応答パケットを受信し、確認応答パケットに従って、送信されたパケットのパケット損失検出および回復アルゴリズムを時間内にトリガすることができ、その結果、再送信されたパケットは、失われた後、時間内に検出および回復されることができ、それによって、タイムアウト再送信の回数を低減し、送信レートを改善する。加えて、再送信されたパケットが再び失われた場合、タイムアウト再送信がトリガされてよい。しかしながら、再送信されたパケットが短い時間内に複数回高速に再送信される場合、再送信されたパケットが失われる確率は指数関数的に低減され、それによって、タイムアウト再送信の確率をさらに低減する。
【図面の簡単な説明】
【００５２】
本発明の実施形態における、または従来技術における技術的解決手段をより明確に説明するために、以下では、実施形態または従来技術を説明するために必要な添付図面を簡潔に説明する。明らかに、以下の説明における添付図面は、単に、本発明のいくつかの実施形態を示し、当業者は、創造的努力無しに、これらの添付図面から他の図面をさらに導出することができる。
【００５３】
【図１】図1は、従来技術におけるパケット損失回復アルゴリズムの概略図である。
【図２】図2は、本発明の実施形態に係る通信システムの概略図である。
【図３】図3は、TCPパケットフォーマットの概略図である。
【図４】図4は、従来技術における高速再送信方法の原理の図である。
【図５】図5は、本発明の実施形態に係るパケット送信方法の概略図である。
【図６】図6は、本発明の実施形態に係る別のパケット送信方法の概略図である。
【図７】図7は、本発明の実施形態に係る別のパケット送信方法の概略図である。
【図８】図8は、本発明の実施形態の適用シナリオの概略図である。
【図９】図9は、本発明の実施形態に係る別のパケット送信方法の概略図である。
【図１０】図10は、本発明の実施形態に係るTCPプロトコルスタックの動作原理の図である。
【図１１】図11は、本発明の実施形態に係るユーザ機器の概略図である。
【図１２】図12は、本発明の実施形態に係るユーザ機器の概略図である。
【図１３】図13は、本発明の実施形態に係るユーザ機器の概略図である。
【発明を実施するための形態】
【００５４】
本発明における技術的解決手段を当業者により良く理解させるために、以下では、本発明の実施形態の添付図面を参照して、本発明の実施形態における技術的解決手段を明確且つ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の全てではなく単に一部である。創造的努力無しに、本発明の実施形態に基づいて当業者によって取得される全ての他の実施形態は、本発明の保護範囲に包含されるべきである。
【００５５】
本発明の実施形態で提供される技術的解決手段は、典型的には、例えば、移動体通信用グローバルシステム（Global System for Mobile Communication, GSM（登録商標））ネットワーク、符号分割多元接続（Code Division Multiple Access, CDMA）ネットワーク、ワイドバンド符号分割多元接続（Wideband Code Division Multiple Access, WCDMA（登録商標））ネットワーク、汎用パケット無線サービス（General Packet Radio Service, GPRS）ネットワーク、ロングタームエボリューション（Long Term Evolution, LTE）ネットワーク、ソフトウェア定義型ネットワーク（Software Defined Network, SDN）および無線センサネットワーク（Wireless Sensor Network, WSN）等の、比較的高いパケット損失レートを有する通信システムに適用されてよい。
【００５６】
図2は、本発明の実施形態に係る通信システム100の簡略ブロック図である。通信システム100は、単に、本発明の1つの適用シナリオとして使用され、本発明の適用シナリオへの限定として理解されるべきではない。本発明の本実施形態で提供される技術的解決手段は、TCP/IPプロトコルスタックに基づいている任意の通信システムに適用可能であることは理解され得る。TCP/IPプロトコルスタックは、TCP/IP参考モデルによって定義されるプロトコルレベルのための分割方式を参照して実施されるプロトコルスタックであることは留意されるべきである。TCP/IPプロトコルスタックは、送信制御プロトコル（Transmission Control Protocol, TCP）およびインターネットプロトコル（Internet Protocol, IP）という2つのコアプロトコルを含む。本発明の本実施形態では、TCPプロトコルの実施は最適化される。本発明の本実施形態の方法はまた、パケット再送信メカニズムを有する別の信頼できる送信プロトコルにも適用可能であることは理解され得る。
【００５７】
本発明の明細書、特許請求の範囲および添付図面では、「第1の」、「第2の」、「第3の」、「第4の」等々（存在する場合）という用語は、同様のオブジェクト間で区別することを意図されるが、特定の順序またはシーケンスを必ずしも示すものではない。
【００５８】
通信システム100は、ユーザ機器110、アクセスポイント10、無線アクセスゲートウェイ12、ワイドエリアネットワーク14、第1のアプリケーションサーバ20、第2のアプリケーションサーバ30および第3のアプリケーションサーバ40を含む。当業者は、1つの通信システムは、一般に、図2に示される構成要素よりも少ない、または多い構成要素を含んでよく、または、図2に示される構成要素とは異なる構成要素を含んでよいことを理解し得る。図2は、単に、本発明の本実施形態で開示される複数の実施方式により関連した構成要素を示す。
【００５９】
例えば、図2には3つのアプリケーションサーバ20、30および40が既に記載されているが、当業者は、1つの通信システムが任意の数のアプリケーションサーバを含んでよく、または、いずれのアプリケーションサーバさえも含まないことを理解し得る。アプリケーションサーバ20、30および40は、対応するTCPプロトコルスタック21、31および41をそれぞれ含む。TCPプロトコルスタック21、31および41の機能は、アプリケーションサーバ20、30および40上で動作するソフトウェア、ハードウェアおよび/またはファームウェアの適切な組合せによってそれぞれ実行されてよい。ワイドエリアネットワーク14は、パブリックネットワーク、プライベートネットワークおよびインターネットのうちのいくつかおよび/またはその任意の組合せを含んでよい。無線アクセスゲートウェイ12およびアクセスポイント10は、1つの無線ネットワークに含まれてよい。簡潔にするために、無線ネットワークの別の部分は記載されていない。アクセスポイント10は、アンテナ11をさらに含む。
【００６０】
ユーザ機器110は、プロセッサ120、TCPプロトコルスタック130、無線モデム140およびメモリ150を含む。無線モデム140はアンテナ142に接続されてよい。当業者は、TCPプロトコルスタック130は、ソフトウェア、ハードウェアおよび/またはファームウェアの適切な組合せによって実行されてよいことを理解し得る。TCPプロトコルスタック130、無線モデム140およびアンテナ142は、プロセッサの制御の下で、パケットの送受信を完了するために互いに協調する。加えて、当業者は、ユーザ機器は、図2に示される構成要素よりも少ない、または多い構成要素を含んでよいことを理解し得る。図2に示されるユーザ機器110は、単に、本発明の本実施形態で開示される複数の実施方式により関連する構成要素を示す。
【００６１】
一般に、ユーザ機器110のメモリ150は、アプリケーションプログラム、例えば、第1のアプリケーションプログラム121、第2のアプリケーションプログラム123および第3のアプリケーションプログラム125を記憶する。第1のアプリケーションプログラム121、第2のアプリケーションプログラム123および第3のアプリケーションプログラム125はそれぞれ、第1のアプリケーションプログラムサーバ20、第2のアプリケーションプログラムサーバ30および第3のアプリケーションプログラムサーバ40のクライアント側のアプリケーションプログラムである。プロセッサ120は、メモリ150内のアプリケーションプログラムを読み出し、且つ実行して、特定の機能を実施してよい。
【００６２】
TCPプロトコルスタックは、クライアントサーバ通信モデルを使用する。クライアントは、サーバによって提供されるサービス、例えばウェブページコンテンツを要求および受け入れる。例えば、第1のアプリケーションプログラム121は、第1のアプリケーションプログラムサーバ20からの情報を要求するウェブページブラウザであってよい。
【００６３】
本発明の本実施形態におけるユーザ機器110は、モバイル端末（Mobile Terminal）、例えば、モバイル電話、アクションカメラまたはノートブックコンピュータ等のポータブル、ウェアラブル、または車両用モバイルデバイスであってよく、または、コンピュータまたはサーバ等のデバイスであってよく、または、ルータまたはゲートウェイ等のネットワークデバイスであってよい。ユーザ機器110は、別のユーザ機器へのTCP接続を確立してよく、さらに、TCP接続を使用することによって、パケットを受信および送信してよい。TCPパケットのフォーマットが、図3に示される。送信元ポートおよび宛先ポートは、送信端および受信端のアプリケーションプロセスを決定するように構成される。送信元ポート番号、宛先ポート番号、送信元IPアドレスおよび宛先IPアドレスは、TCP接続を一意に決定し得る。TCPパケットのヘッダのシーケンス番号（Sequence Number、一般に、略してseq）は、パケットのペイロードの第1のデータバイトのシーケンス番号を搬送する。TCPパケットを受信した後、受信ノードは、TCP接続を使用することによって、送信ノードに確認応答パケット（ACK）を送信する。ACKパケットのヘッダの確認応答番号（Acknowledge Number, 一般に、略してack）のフィールド値は、受信ノードによって受信されるパケットの「Sequence Number」フィールドの値を表し、また、受信端が送信端によって送信され、その「Sequence Number」の値がACKパケットの「Acknowledge Number」の値よりも小さい全てのパケットを受信したことを表す。ウィンドウのサイズは、受信端の現在の受信バッファ領域のサイズを示すために使用される。加えて、TCPパケットのヘッダは、6個のフラグビットをさらに有する：
URG: 緊急ポインタフィールドの有効性;
ACK: 確認応答番号フィールドの有効性;
PSH: 処理用のアプリケーションレイヤへの即時送信;
RST: 異常発生時のリセット;
SYN: 接続確立時に1に設定される同期フラグ; および
FIN: 接続を開放することを要求する終了フラグ。
【００６４】
ユーザ機器110は、有線ネットワークまたは無線ネットワーク（例えば、Wi-Fiネットワーク、WSNまたはセルラネットワーク）を使用することによって、アプリケーションプログラムサーバ20または別のユーザ機器へのTCP接続を確立してよい。アプリケーションプログラムサーバ20へのTCP接続の確立は、ソフトウェアアプリケーションプログラム（例えば、図1におけるブラウザまたは第1のアプリケーションプログラム121）によって開始されてよい。具体的には、ユーザ機器110およびアプリケーションプログラムサーバ20は、スリーウェイハンドシェイクを使用することによって、TCP接続を確立してよい。例えば、第1のアプリケーションプログラム121は、ソケットオープン（socket open）コマンドを生成する。コマンドは、ユーザ機器110のTCPプロトコルスタック120に提供されて、3つのメッセージ交換を使用することによって、アプリケーションプログラムサーバ20へのTCP接続を確立するようにTCPプロトコルスタック130をトリガする。次いで、TCPプロトコルスタック130は、上位レイヤの第1のアプリケーションプログラム121に、接続が確立されたことを通知する。アプリケーションプログラムサーバ20のTCPプロトコルスタックはまた、上位レイヤアプリケーションプロセスに、接続が確立されたことを通知する。続いて、ユーザ機器110上の第1のアプリケーションプログラム121およびアプリケーションプログラムサーバ20は、確立されたTCP接続に基づいて、データ送信を実行してよい。当業者は、ユーザ機器110およびアクセスポイント10は、対応するアンテナ142およびアンテナ11を使用することによって、無線サービスチャネルにアクセスすることを理解し得る。
【００６５】
従来技術におけるTCPパケット損失検出メカニズムおよび高速再送信メカニズムは、具体的な例を使用することによって、以下に説明される。説明を簡単にするために、本発明のいくつかの実施形態では、互いの間の接続を確立した2つのデバイスのうちの一方は、送信ノードと呼ばれ、もう一方は受信ノードと呼ばれる。送信ノードおよび受信ノードは、データの送受信能力を有する任意のデバイスであってよく、例えば、前述のユーザ機器または前述のアプリケーションプログラムサーバであってよいことは理解され得る。図4に示されるように、送信ノードが、そのシーケンス番号が1、2、3、4および5である5つのパケットを送信すると仮定する。そのシーケンス番号が1である（略してパケット1と呼ばれる）パケットは、受信ノードによって受信される最初のものであり、受信ノードは、その確認応答番号ack=1である確認応答パケットACK1を返す。パケット2がある理由により受信ノードに到達しないが、パケット3が受信ノードに到達する場合、受信ノードは依然としてACK１を返す。パケット4および5が受信ノードに到達した場合、パケット2は未だ受信ノードに到達していないため、受信ノードは依然としてACK1を返す。従って、送信ノードは、そのackが1と等しい3つの確認応答パケットを受信して、パケット2が失われたと判定する。従って、送信ノードは、再送信タイマが満了するまで待つ必要はなく、そのシーケンス番号が2であるパケットを再び直ちに再送信する。次いで、受信ノードはパケット2を受信する。この場合、パケット3、4および5は既に受信されているため、受信ノードは、その確認応答番号がack=5である確認応答パケットACK5を返す。
【００６６】
TCPパケットのタイムアウト再送信は、ネットワーク帯域幅の低い利用率と、増加する送信遅延に関する重要な理由である。既存の高速再送信メカニズムは、タイムアウト再送信の確率をある程度低減する。しかしながら、再送信されたパケットが再び失われ、時間内に検出および回復されない場合、タイムアウト再送信が必然的に発生する。従来技術では、パケット損失検出および回復は、例えば、DACおよびSACK+アルゴリズムを使用することによって、再送信されたパケットに対して実行されることができるが、発明者は、繰返しのテストおよび実験を通じて、再送信されたパケットのパケット損失検出および回復アルゴリズムが導入された後、スループットは明らかに改善されないことを発見した。発明者は、この結果の主な理由は、既存の再送信パケット損失検出および回復方法が、たいていの場合では時間内にトリガされないことであると発見した。結果として、失われた後、再送信されたパケットは、時間内に検出および回復されず、結局は、タイムアウト再送信が発生する。具体的には、既存の高速再送信ソリューションでは、パケットが再送信された後に受信されるACKパケットに主に従って、再送信されたパケットが失われたかどうかが判定されて、再送信を実行し、その結果、タイムアウト再送信に入ることを回避する。しかしながら、パケットが再送信された後にパケットが送信されない場合、既存の再送信パケット損失検出および回復方法はトリガされないことがある。結局、タイムアウト再送信は必然的に発生する。このようにして、タイムアウトによるパケット再送信の確率は、比較的大きく、スループットの低下を引き起こす。
【００６７】
前述の課題を解決するために、本発明の実施形態はパケット送信方法を提供する。パケットが再送信された後、再送信されたパケットが失われたと検出された場合、失われたパケットは、複数回（2回を含むがこれに限定されない）連続的に送信され、または、失われたパケットが再送信された後に新しいパケットが直ちに送信される。このようにして、一方では、不十分なACKパケットにより、再送信されたパケットのパケット損失検出および回復アルゴリズムがトリガされないことが回避される。従って、再送信されたパケットは、失われた後時間内に検出および回復されることができ、タイムアウト再送信の回数は低減される。他方、失われたパケットは、複数回連続的に再送信され、タイムアウト再送信は、全ての再送信されたパケットが失われたときのみトリガされる。実際の効果は、再送信されたパケットのパケット損失の確率が指数関数的に低減されることであり、それにより、タイムアウト再送信の回数をさらに低減し、データ送信レートを改善する。図5に示されるように、本発明の本実施形態で提供されるパケット送信方法は、以下のステップを含む。
【００６８】
ステップ501：図5における受信ノードから送信ノードへの矢印によって示されるように、送信ノードは、送信ノードと受信ノードとの間の通信リンクを使用することによって、受信ノードに複数のパケット（図5に示されるパケット1乃至8）を送信して、受信ノードから、確認応答パケットを受信する。送信ノードによって送信されるパケットはTCPパケットである。各パケットのヘッダのシーケンス番号フィールド（Sequence Number, 一般に、略してseq）は、パケットのペイロードにおける第1のデータバイトのシーケンス番号を搬送する。受信ノードがパケットを受信する度に、受信ノードは、受信ノードがパケットを正しく受信したことを示すために、確認応答パケット（ACK）を送信ノードに返す。任意で、ステップ501の後、送信ノードは、後続のパケット損失検出のために、送信されたパケットの最大シーケンス番号をさらに記録してよい。
【００６９】
ステップ503：第1のパケットが失われたと判定した後、送信ノードは、失われた第1のパケットを直ちに再送信し、ここで、再送信された第1のパケット（すなわち、FR 3）はまた、再送信されたパケットと呼ばれる。
【００７０】
一般に、送信ノードによって送信される複数のパケットにおける一部のパケットは、ネットワーク状態等の理由により受信ノードに到達することはできず、それによって失われる。送信ノードは、受信ノードによって返される確認応答パケットに従って、パケットが失われたかどうかを判定してよい。例えば、送信ノードは、受信された確認応答パケットに基づいて、複数のパケットにおける第1のパケット（例えば、図5に示されるパケット3）が失われたと判定する。
【００７１】
具体的には、送信ノードは、複数の方式で、第1のパケットが失われたと判定してよい。図4に示される高速再送信メカニズムを例として使用すると、送信ノードが、そのack値が同じである少なくともN（一般に、Nは3と等しい）個の確認応答パケットを受信する場合、送信ノードは、そのシーケンス番号が同じack値に1を加えた値である第1のパケットが失われたと判定する。図5に示されるように、送信ノードは、そのackフィールド値が2である3つの確認応答パケットを受信する場合、送信ノードは、そのシーケンス番号が3であるパケットが失われたと判定する。別の例については、別の実施形態では、確認応答パケット内でSACKフィールドが拡張され、受信バッファのパケット情報を示すために使用され、ここで、受信バッファは、受信されたパケットを一時的に記憶するために使用され、SACKフィールドの値は、sackとして定義される。例えば、sackは、受信ノードによって受信されたパケットのシーケンス番号であってよい。このようにして、送信ノードは、受信ノードによって返される確認応答パケットのsackに従って、受信ノードによって受信されるパケットと、受信ノードによって受信されないパケットを学習して、失われたパケットが存在するかどうかをさらに判定してよい。
【００７２】
任意で、ステップ503では、送信ノードは、第1のパケットのタイムアウトタイマが満了した後に失われた第1のパケットを再送信してよい。
【００７３】
ステップ505：再送信された第1のパケットが失われたと検出した後、送信ノードは、第1のパケットを、2回以上直ちに連続的に送信する。本発明の本実施形態で記載される「直ちに」は、事前に設定された時間間隔内を指す。すなわち、ステップ505では、送信ノードは、送信ノードが再送信されたパケットが失われたと検出した後、失われた第1のパケットを、事前に設定された時間間隔内で、2回以上連続的に送信する。本明細書における事前に設定された時間間隔は、0以上であるべきであり、第1のパケットのタイムアウトタイマの周期未満であるか、またはそれよりもはるかに小さくなければいけない。例えば、第1のパケットに対応するタイムアウトタイマの周期がTである場合、事前に設定された時間間隔はT未満であるべきであり、またはT/2未満であり、または、T/4よりもはるかに小さくなければいけない。好ましくは、事前に設定された時間間隔は、送信ノードが再送信された第1のパケットが失われたと検出する瞬間を開始ポイントとして使用し、事前に設定された時間間隔は0と等しいか、または0に近い。事前に設定された時間間隔が0と等しい場合、再送信されたパケットが失われたと検出する動作および第1のパケットを送信する動作は、同時に、またはほぼ同時に完了することを示す。加えて、第1のパケットを連続的に2回送信する間隔（以下、第1の時間間隔と呼ばれる）、すなわち、図5におけるtはまた、0以上であるべきであり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、または、それよりはるかに小さくなければいけない。さらに、送信ノードは、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを、第1の時間間隔（t）内で受信していない。すなわち、送信ノードが再び再送信される第1のパケットが失われたことを示すために使用される確認応答パケットを受信していないとき（再び再送信された第1のパケットが失われたかどうか判定することはできない）、送信ノードは、第1のパケットを、第1の時間間隔（t）内で冗長的に送信する。
【００７４】
タイムアウトタイマが、TCPタイムアウト再送信のために使用されること、すなわち、パケットを送信したときまたはその後に、送信ノードがタイムアウトタイマを有効にすることは留意されるべきである。タイムアウトタイマのタイミング周期はTである。パケットに対応する確認応答パケットが、タイムアウトタイマの1つのタイミング周期が終了するときに未だ受信されない場合、送信ノードは、パケットが失われたと判定して、タイムアウト再送信を実行する。一般に、プロトコルスタックは、各パケットのために同じタイムアウトタイマ周期を設定し、すなわち、各パケットは、同じタイムアウトタイマ周期を有する。具体的には、実施形態では、ステップ505は以下を含む：
【００７５】
STEP1：送信ノードは、第1のパケットが再送信された後に受信される確認応答パケットに従って、再送信された第1のパケット（すなわち、ステップ503における再送信された第1のパケットFR3）が失われたと判定する。例えば、送信ノードによって記録される現在送信されているパケットの最大シーケンス番号は8である。送信ノードが、そのsackが8よりも大きい確認応答パケットを受信するとき、例えば、そのsackが9である確認応答パケットを受信するとき、送信ノードは、再送信されたパケットが失われたと判定してよい。sackは、確認応答パケットの拡張フィールド（SACK）内で搬送され、受信ノードによって受信されるパケットのシーケンス番号を示すために使用される。送信ノードが、別の方式では、再送信されたパケットが失われたかどうかをさらに検出し得ることは理解され得る。
【００７６】
STEP2：第1のパケットを再び直ちに再送信する。ここでの「直ちに」は、送信ノードが再送信されたパケットが失われたと判定した後の事前に設定された時間間隔内を指す。事前に設定された時間間隔は、送信ノードが再送信された第1のパケットが失われたと検出した瞬間を開始ポイントとして使用する。事前に設定された時間間隔は、0以上であるべきであり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、または、それよりもはるかに小さくなければいけない。好ましくは、事前に設定された時間間隔は0と等しいか、または0に近い。事前に設定された時間間隔が0と等しい場合、送信ノードによる、再送信されたパケットが失われたと検出する動作および第1のパケットを再び再送信する動作は、同時に、またはほぼ同時に完了することを示す。
【００７７】
STEP3：第1のパケットを再び再送信した後、送信ノードは、第1のパケットを、第1の時間間隔（t）内で少なくとも1回送信する。本明細書における第1の時間間隔（t）は、0以上であるべきであり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、または、それよりもはるかに小さくなければいけない。例えば、送信ノードのタイムアウトタイマのタイミング周期がTである場合、t≦T、またはt≦T/2、またはt≦T/4である。好ましくは、第1の時間間隔は、第1のパケットを再び再送信する瞬間を開始ポイントとして使用する。第1の時間間隔が0と等しい場合、STEP2およびSTEP3における第1のパケットを送信する動作は、同時に、またはほぼ同時に完了することを示す。加えて、送信ノードは、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを、第1の時間間隔内で受信していない。すなわち、送信ノードが再び再送信される第1のパケットが失われたことを示すために使用される確認応答パケットを受信していないとき（再び再送信された第1のパケットが失われたかどうか判定することはできない）、送信ノードは、第1のパケットを冗長的に送信する。
【００７８】
さらに、実施形態では、STEP2における第1のパケットを再送信する動作およびSTEP3における第1のパケットを送信する動作は連続しており、送信ノードは、STEP2における第1のパケットを再送信する動作と、STEP3における第1のパケットを送信する動作との間の時間間隔t内で、別のパケットを送信していない。例えば、STEP2で再送信される第1のパケットのシーケンス番号がNである場合、STEP3において送信されるパケットのシーケンス番号はN+1である。
【００７９】
任意で、ステップ505の後、方法は以下をさらに含む：
【００８０】
ステップ507：送信ノードは、後続のパケットを送信し続ける。
【００８１】
具体的には、ステップ507は、
パケットが送信されることを現在許可されている場合、送信ノードによって、少なくとも1つの新しいパケットをさらに送信することを含む。新しいパケットは、送信ノードによって以前に送信されていないパケットを指す。実施形態では、送信ノードは、現在の送信バッファおよび/または輻輳制御ポリシーに従って、新しいパケットが送信されることを許可されるかどうかを判定してよい。例えば、送信バッファが、第1の時間間隔内で空でない場合、送信ノードは、送信バッファに少なくとも1つのパケットを、第1の時間間隔内で送信する。
【００８２】
上述の実施形態では、再送信されたパケットが失われたと検出した後、送信ノードは、第1のパケットを、非常に時間間隔で、2回以上繰返し送信する。このようにして、送信ノードは、確認応答パケットを連続して受信してよく、その結果、再送信されたパケットは、失われた後、時間内に検出および回復されることができ、それによって、タイムアウト再送信の回数を低減し、送信遅延を低減し、送信レートを改善する。加えて、再送信されたパケットが再び失われた場合、タイムアウト再送信がトリガされてよい。しかしながら、再送信されたパケットが短い時間内に複数回高速に再送信される場合、再送信されたパケットが失われる確率は指数関数的に低減され、それによって、タイムアウト再送信の確率をさらに低減する。
【００８３】
前述の実施形態に基づき、本発明は、別のパケット送信方法をさらに提供する。図6に示されるように、方法は以下のステップを含む：
【００８４】
ステップ601：送信ノードは、送信ノードと受信ノードとの間の通信リンクを使用することによって、複数のパケット（例えば、図6におけるパケット1乃至8）を、受信ノードに送信する。パケットはTCPパケットである。各パケットのヘッダのシーケンス番号フィールド（Sequence Number, 一般に、略してseq）は、パケットのペイロードにおける第1のデータバイトのシーケンス番号を搬送する。任意で、ステップ601の後、送信ノードは、後続のパケット損失検出のために送信されたパケットの最大シーケンス番号をさらに記録してよい。
【００８５】
ステップ603：第1のパケット（例えば、図6におけるパケット3）が失われたと判定した後、送信ノードは、失われた第1のパケットを直ちに再送信し、ここで、再送信された第1のパケット（すなわち、FR 3）はまた、再送信されたパケットと呼ばれる。
【００８６】
具体的には、ステップ603において、送信ノードは、受信ノードから確認応答パケットを受信し、受信された確認応答パケットに基づいて、複数のパケットにおける第1のパケット（例えば、図6におけるパケット3）が失われたと判定する。送信ノードによって、確認応答パケットに従って、第1のパケットが失われたと判定する具体的な方法については、ステップ503の関連する説明を参照されたい。本発明の別の実施形態では、第1のパケットは、タイムアウトタイマが事前に設定された時間間隔を超過した後に1回または複数回再送信されてよい。ステップ603における「直ちに」は、第1のパケットが失われたと判定された後の事前に設定された時間間隔内を指す。事前に設定された時間間隔は、0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、またはそれよりもはるかに小さい。好ましくは、事前に設定された時間間隔は、再送信された第1のパケットが失われたと検出する瞬間を開始ポイントとして使用し、事前に設定された時間間隔は0と等しいか、または0に近い。
【００８７】
ステップ605：送信ノードは、第1のパケットが再送信された後に受信される確認応答パケットに従って、再送信されたパケット（すなわち、ステップ602における再送信された第1のパケットFR3）が失われたと判定し、第1のパケットを、再び直ちに再送信する。送信ノードによって、再送信されたパケットが失われたと判定する具体的な方法については、図5におけるSTEP1の関連する説明を参照されたい。さらに、ステップ605における「直ちに」の関連する意味および説明は、ステップ505において説明されるものと同様であり、詳細はここでは再び説明されない。
【００８８】
ステップ607：送信ノードは、送信バッファが空であるかどうかを判定し、送信バッファが空である場合、送信ノードは、第1のパケットを再び再送信した後の第1の時間間隔内で、第1のパケットを少なくとも1回送信する。第1の時間間隔の定義については、図5に示される実施形態を参照されたい。さらに、別の実施形態では、ステップ607における第1の時間間隔は、第1のパケットを再び再送信する瞬間を開始ポイントとして使用し、第1のパケットが再び再送信された後に第1の確認応答パケットを受信する瞬間を終了ポイントとして使用してよい。このようにして、第1のパケットを再び再送信した後、送信ノードは、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信する前に第1のパケットを再び実際に送信する。
【００８９】
ステップ607における送信バッファが、アプリケーションの送信されるべきデータ、すなわち、送信ノードによって送信されていないデータをバッファするように構成されることは留意されるべきである。送信バッファ内のパケットは、特定の時間に送信キューに挿入され、送信キューから送信される。送信キューは、送信ノードによって送信されていないパケットを含んでよく、再送信されたパケットもまた、送信キューに挿入されてよい。
【００９０】
さらに、図6に示されるように、実施形態では、ステップ607は、送信バッファが空でない場合、第1のパケットを再び再送信した後、送信ノードによって、送信バッファ内の第2のパケット（例えば、図6におけるパケット11）を、第1の時間間隔（図6におけるt）内で送信することをさらに含む。第2のパケットは新しいパケットであり、すなわち、送信ノードが第1のパケットを再び再送信する前に送信されていないパケットであることは理解され得る。
【００９１】
別の実施形態では、前述のステップ605および607は、事前に設定された時間間隔内に完了し、すなわち、第1のパケットを再び再送信し、送信バッファが空であるかどうかを判定し、第1のパケットを冗長的に送信するか、または、第2のパケットを送信する動作は、事前に設定された時間間隔内に完了する。事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、またはそれよりもはるかに小さい。加えて、送信ノードは、事前に設定された時間間隔内で、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。すなわち、送信ノードが、再び再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない（再び再送信された第1のパケットが失われたかどうかを判定することはできない）とき、送信ノードは、第1のパケットを冗長的に送信する。
【００９２】
さらに、実施形態では、送信ノードは、パケットを受信ノードに送信するプロセスにおいて状態情報を収集してよい。従って、第1のパケットを再送信した後、送信ノードは、収集された状態情報に従って、送信ノードが、第1のパケットを再送信した後に新しいパケットを直ちに送信することができるかどうかを計算することができる。状態情報は、送信ノードの送信バッファのサイズ、送信ノードの輻輳ウィンドウのサイズ、送信ノードの輻輳制御ポリシーまたは受信ノードの受信ウィンドウのサイズといった情報のうち少なくとも1つを含むが、それらに限定はされない。対応して、ステップ607では、送信ノードの送信バッファが空でなく、送信ノードの輻輳制御ポリシーが、新しいパケットの送信を許可する場合、送信ノードは、新しいパケットが送信されることを現在許可されていると判定し、第1のパケットを再び再送信した後に、新しいパケットを第1の時間間隔内でさらに送信する。あるいは、送信ノードの送信バッファが空でなく、且つ、送信ノードの輻輳制御ポリシーが新しいパケットの送信を許可しない場合、送信ノードは、新しいパケットが送信されることを現在許可されることができると依然として判定し、第1のパケットを再び再送信した後に、新しいパケットを第1の時間間隔（t）内で送信する。すなわち、ステップ607では、送信ノードは、送信バッファのみに従って、新しいパケットを第1の時間間隔内で送信するかどうかを判定するが、輻輳制御ポリシーの制限を無視する。輻輳制御ポリシーを無視する具体的な方法は、送信ノードが失われたパケットを再び再送信した後、送信バッファが空でない場合、送信ノードによって、輻輳ウィンドウを一時的に増加させて、第1の時間間隔において、輻輳制御ポリシーの制限を回避し、新しいパケットを迅速に送信することを含む。さらに、新しいパケットを送信した後、送信ノードは、輻輳ウィンドウを回復する。
【００９３】
本発明の本実施形態におけるパケット送信方法と、図5に示される方法との間の差は、本発明の本実施形態では、送信ノードは、再送信されたパケットが失われたと検出した後、失われた第1のパケットを、第1の時間間隔内で、2回以上毎回、繰返し送信しないが、新しいパケットが現在送信されることができるかどうかをさらに判定し、それができる場合、少なくとも1つの新しいパケットを第1の時間間隔内で送信する。図5に示される方法と比較すると、本発明の本実施形態における方法を使用することによって、再送信されたパケットの損失の確率が低減されるとき、パケットの冗長的な送信は低減され、ネットワーク送信効率が改善される。
【００９４】
図6に示される方法に基づいて、本発明の実施形態は、別のパケット送信方法をさらに提供する。図7に示されるように、方法は以下のステップを含む：
【００９５】
ステップ701：送信ノードは、送信ノードと受信ノードとの間の通信リンクを使用することによって、複数のパケット（例えば、図7におけるパケット1乃至8）を、受信ノードに送信する。
【００９６】
ステップ703：第1のパケット（例えば、図7におけるパケット3）が失われたと判定した後、送信ノードは、失われた第1のパケットを直ちに再送信し、ここで、再送信された第1のパケット（すなわち、FR 3）はまた、再送信されたパケットと呼ばれる。ここでの「直ちに」は、0に近い時間間隔内を指す。詳細については、図5および図6に示される実施形態における関連する説明を参照されたい。
【００９７】
ステップ705：送信ノードは、第1のパケットが再送信された後に受信される確認応答パケットに従って、再送信されたパケット（すなわち、ステップ602における再送信された第1のパケットFR3）が失われたと判定し、第1のパケットを再び直ちに再送信する。送信ノードによって、再送信されたパケットが失われたと判定する具体的な方法については、図5におけるSTEP1の関連する説明を参照されたい。加えて、ステップ705における「直ちに」の関連する意味および説明は、ステップ505およびステップ605において説明されるものと同様であり、詳細はここでは再び説明されない。
【００９８】
ステップ707：送信バッファが空であるかどうか、および、輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定し、送信バッファが空であるか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、送信ノードは、第1のパケットを、第1の時間間隔（例えば、図7におけるt）内に、少なくとも1回送信し、そうでなければ、送信バッファが空でなく、且つ、現在の輻輳制御ポリシーが新しいパケットの送信を許可する場合、送信ノードは、第1の時間間隔内で、少なくとも1つの新しいパケットを送信する。第1の時間間隔の定義については、図5に示される方法の実施形態を参照されたく、詳細は再び説明されない。
【００９９】
さらに、図7に示されるように、ステップ707の後、パケット送信方法は以下をさらに含む：
【０１００】
ステップ709：送信ノードは、送信バッファが空であるかどうかを判定し、送信バッファが空である場合、返すか待機し、または、送信バッファが空でない場合、現在の輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定し、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、返すか待機し、または現在の輻輳制御ポリシーが新しいパケットの送信を許可する場合、新しいパケットを送信する。
【０１０１】
図6に示される方法と比較すると、図7に示される方法では、新しいパケットを送信すべきかどうか判定されるときに、送信バッファと輻輳制御ポリシーの両方が考慮され、新しいパケットが送信されないため、輻輳制御ポリシーは適合する。
【０１０２】
本発明の実施形態における別のパケット送信方法は、特定の適用シナリオ（ネットワークビデオ監視シナリオ）に基づいて、以下で説明される。図8に示されるように、ユーザ機器を使用することによって、ユーザが、遠隔ネットワークカメラによって撮られたビデオを視聴していると仮定する。ネットワークカメラのチップは、軽量化TCP/IPプロトコルスタックを組み込む。プロトコルスタックは、本特許発明の本実施形態におけるパケット送信方法を実施する。リンクのパケット損失レートは5%であると仮定する。TCPパケット送信プロセスでは、そのシーケンス番号が3であるパケット3が失われたと仮定する。本発明の本実施形態におけるパケット損失方法は、図9に示される。
【０１０３】
ステップ1001：パケット3が失われたと検出した後、ネットワークカメラはパケット3を再送信し、現在送信されているパケットの最大シーケンス番号が8であることを記録する。
【０１０４】
ステップ1002：送信バッファが空でなく、且つ、輻輳制御ポリシーが新しいパケットの送信を許可する場合、送信ノードは、新しいパケットを送信し続ける。
【０１０５】
ステップ1003：パケット3が再送信された後の第3の反復ACKが受信され、累積確認応答のシーケンス番号は未だ2であるとともに更新されず、そのシーケンス番号が9であるパケットが確認応答されているとき、ネットワークカメラは、再送信されたパケットが失われたと判定する。
【０１０６】
ステップ1004：パケット3を再び直ちに再送信して、現在送信されているパケットの最大シーケンス番号が10であることを記録する。
【０１０７】
ステップ1005：送信バッファおよび輻輳制御ポリシーに従って、新しいパケットが現在送信され続けるかどうかを判定する。
【０１０８】
ステップ1006：送信バッファは空でないが、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、少なくとも1つの新しいパケットを直ちに送信し、または、送信バッファが空である場合、パケット3を少なくとも1回直ちに送信する。本発明の本実施形態で説明される「直ちに」は、事前に設定された時間間隔内を指す。すなわち、送信ノードは、パケット3を再び再送信した後、失われたパケット3を少なくとも1回冗長的に送信するか、または、事前に設定された時間間隔内に、新しいパケットを冗長的に送信する。ここでの事前に設定された時間間隔は、0以上であるべきであり、且つ、パケット3のタイムアウトタイマの周期未満であるか、それよりはるかに小さくなければいけない。例えば、パケット3に対応するタイムアウトタイマの周期がTである場合、事前に設定された時間間隔は、T未満であるか、または、T/2未満であるか、または、さらにT/4未満でなければいけない。好ましくは、事前に設定された時間間隔は、パケット3を再び再送信する瞬間を開始ポイントとして使用し、ネットワークカメラは、再び再送信されたパケット3が失われたと示すために使用される確認応答パケットは事前に設定された時間間隔内に受信されていないことを検出する。
【０１０９】
本発明の本実施形態における方法では、パケットが失われたと検出した後、ネットワークカメラはパケットを再送信し、新しいパケットが現在送信されることができるかどうかを判定する。新しいパケットが送信されることができない場合、送信ノードは、事前に設定された時間間隔内で、失われたパケットを冗長的に送信する。このようにして、パケット損失の確率は低減されることができ、データ送信効率は改善されることができる。
【０１１０】
異なるパケット損失レートの異なるネットワーク環境において取得される本発明の本実施形態の実験結果が、表1および表2に示される。表1によると、本発明の本実施形態におけるパケット送信方法を使用することによって、200 MBデータを送信するシナリオでは、パケット損失の回数は、DAC方法を使用することによって得られるものより2〜5倍少ない。表2に示されるように、本発明の方法が使用されるとき、スループットは、DAC方法を使用することによって得られるスループットよりも少なくとも2倍高い。高いパケット損失レートのシナリオでは、スループットは、Linux（登録商標）のネイティブプロトコルスタックのスループットを超える。
【０１１１】
【表１】
0006522855.tif 000002
【０１１２】
【表２】
0006522855.tif 000003
【０１１３】
図5乃至図7において説明される方法の実施形態は、再送信されたパケットが失われたことが検出された後のパケット送信メカニズムである。本発明の任意の実施形態においては、初めて、パケット（例えば、第1のパケット）が失われたことが検出された後に、第1のパケットは、第1の時間間隔内で、複数回連続的に再送信され得ることは理解され得る。別の実施形態では、送信ノードが、初めて、第1のパケットが失われたことを検出した後、現在の送信バッファが空でない場合、送信ノードは、第1のパケットおよび少なくとも1つの新しいパケットを、第1の時間間隔内で、連続的に送信し、そうでなければ、送信ノードは、第1のパケットを、第1の時間間隔内で、少なくとも2回連続的に送信する。別の実施形態では、送信ノードが、初めて、第1のパケットが失われたことを検出した後、現在の送信バッファが空であるか、または現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、送信ノードは、第1のパケットを、第1の時間間隔内で、少なくとも1回連続的に送信し、そうでなければ、第1のパケットおよび少なくとも1つの新しいパケットを連続的に送信する。
【０１１４】
見て分かるように、本発明の図5乃至図7において説明される冗長的なパケット送信メカニズムは、再送信されたパケットが失われたと検出された後にトリガされることに限定されない。加えて、パケットが失われたことが検出されたときに初めて、パケットが冗長的に送信され得る。
【０１１５】
前述の方法の実施形態に基づいて、本発明はユーザ機器をさらに提供して、前述の方法の実施形態における送信ノードの機能を実施する。具体的には、図2を参照すると、ユーザ機器110は、プロセッサ120、TCPプロトコルスタック130、アンテナ142、無線モデム140およびメモリ150を含む。無線モデム140は、アンテナ142に接続されている。TCPプロトコルスタック130は、プロセッサ120の制御の下で、TCP/IPプロトコル仕様に従って、特定のデータフォーマットの複数のパケットにアプリケーションプログラムのデータをカプセル化し、複数のパケットを無線モデム140に送信するように構成される。無線モデム140は、受信されたパケットをアナログ信号に変調し、アンテナを使用することによって、アナログ信号を送信するように構成される。アプリケーションプログラムサーバ20は、無線ネットワークを使用することによって、ユーザ機器110によって送信されたアナログ信号を受信し、アナログ信号をデジタル信号に復調し、アプリケーションプログラムサーバ20のTCPプロトコルスタック21にデジタル信号を送信してよい。TCPプロトコルスタック21は、デジタル信号にデカプセル化して、最終的に、アプリケーションプログラムのデータを取得するように構成される。ユーザ機器110およびアプリケーションプログラムサーバ20のTCPプロトコルスタックは、物理レイヤ、リンクレイヤ、ネットワークレイヤ、送信レイヤおよびアプリケーションレイヤを含む。TCPプロトコルスタックがパケットをカプセル化およびデカプセル化するプロセスは、図10に示される。見て分かるように、パケットのカプセル化プロセスは、実際には、TCPプロトコルスタックによって、ヘッダおよび/またはフレームトレーラをパケットに追加するプロセスであり、パケットのデカプセル化プロセスは、実際には、ヘッダおよび/またはフレームトレーラをパケットから削除するプロセスである。
【０１１６】
さらに、ユーザ機器110によって送信されたパケットを受信した後、アプリケーションプログラムサーバ20は、確認応答パケットを返して、パケットが受信されたことを示す。TCPプロトコルスタック130は、プロセッサ120の制御の下で、アプリケーションプログラムサーバから受信された確認応答パケットに従って、第1のパケットが失われたと判定し、第1のパケットを、事前に設定された時間間隔内で、少なくとも2回連続的に再送信するようにさらに構成される。
【０１１７】
好ましくは、別の実施形態では、TCPプロトコルスタック130は、プロセッサ120の制御の下で、図5、図6または図7における一部または全てのステップを実行するようにさらに構成される。
【０１１８】
TCPプロトコルスタック130は、ユーザ機器110上のソフトウェア、ハードウェアおよび/またはファームウェアの適切な組合せによって実行されてよいことは留意されるべきである。例えば、実施形態では、TCPプロトコルスタック130は、実行可能なプログラムコードの形態でメモリ150内に記憶される。プロセッサ120は、TCPプロトコルスタック130に対応するプログラムコードを実行して、図5、図6または図7に記載される一部または全てのステップを実行する。具体的には、図12に示されるように、ユーザ機器100は、論理階層に従って、チップ/ハードウェアプラットフォーム、チップ/ハードウェアプラットフォーム上のカーネル、ミドルウェアおよびミドルウェア上で動作するアプリケーションプログラムに分割される。カーネル、ミドルウェアおよびアプリケーションプログラムは全て、実行可能なコードの方式で、ユーザ機器110のメモリ150内に記憶される。プロセッサは、コードを特定の命令に解析し、命令を実行して、対応する機能を完了する。実行チップは、汎用プロセッサ、マイクロプロセッサ、グラフィックス処理ユニットまたはベースバンドプロセッサのうちの少なくとも1つを含む。ハードウェアプラットフォームは、チップ、メモリ、通信インタフェース等を含む。カーネルは、具体的には、チップドライバ、周辺ドライバ（例えば、通信インタフェースおよびセンサドライバ）、ハードウェア適応レイヤおよび基礎カーネルを含む。基礎カーネルは、メモリ管理、中断管理、プロセス管理およびファイルシステム等の機能を提供する。プロセッサは、カーネルに対応する実行可能なコードを実行して、特定の機能、例えば、データの読出しおよび書込みおよび制御命令の生成を実施するようにハードウェアリソースをスケジューリングする。
【０１１９】
さらに、ミドルウェアは、カーネルと上位レイヤアプリケーションプログラムとの間のジョイントポイントとして、複数のタイプのプロトコルスタックを含んでよく、その結果、ユーザ機器は、異なるタイプのプロトコルをサポートする。例えば、ミドルウェアは、前述の実施形態で説明されるTCPプロトコルスタックを含んでよい。ミドルウェアは、アプリケーションプログラミングインタフェース（API）および異なるタイプのサービスコンポーネントをさらに含む。サービスコンポーネントは、特定のアプリケーションまたはサービス用に開発され、アプリケーションまたはサービスのためにいくつかの拡張機能を提供する。図8に示される適用シナリオについては、サービスコンポーネントは、ビデオ最適化機能および/またはビデオ符号化および復号機能を提供するように構成される、ビデオコンポーネントを含んでよく、それによって、ビデオ監視アプリケーションの動作をサポートする。APIは、メッセージを転送するために、上位レイヤアプリケーションプログラム、ミドルウェアおよびカーネル間のインターワーキングのために構成される。任意で、ミドルウェアは、デバイスの認証および許可を実施するように構成される、セキュリティコンポーネントをさらに含む。
【０１２０】
具体的には、アプリケーションプログラム（例えば、APP 1）がプロセッサによって実行されるプロセスでは、APIは、データパケットをネットワークプロトコルスタック（例えば、TCPプロトコルスタック）に転送するために呼び出されてよい。パケットを感知した後、TCPプロトコルスタックは、システム関数を使用することによって、カーネル内のハードウェアドライバを呼び出して、関連ハードウェア、例えば、無線モデム140およびアンテナ142を駆動して、パケットを送信、受信および処理する。加えて、データパケット損失検出およびパケット再送信はまた、TCPプロトコルスタックを実行することによって、プロセッサによって実施される。TCPプロトコルスタックによるパケット損失検出およびパケット送信の具体的な実施の詳細については、前述の実施形態を参照されたく、詳細は、ここでは再び説明されない。
【０１２１】
別の実施形態では、TCPプロトコルスタック130は、フィールドプログラマブルゲートアレイ（Field Programmable Gate Array, FPGA）または特定用途向け集積回路（Application Specific Integrated Circuit, ASIC）等のハードウェア回路または専用チップによって実施されてよい。この場合、プロセッサ120およびTCPプロトコルスタックを実施するように構成されるTCPハードウェア回路または特定用途向けチップは、バスを使用することによって接続される。プロセッサは、メモリ150内のアプリケーションプログラムを実行し、TCPプロトコルスタックを実施するように構成されるTCPハードウェア回路または専用チップを呼び出し、それによって、アプリケーションプログラムを実行するプロセスで生成されたデータを送信および処理する。具体的には、プロセッサ120は、アプリケーションプログラムに対応するコードをマシン命令に復号し、マシン命令を1つずつ実行し、命令を実行するプロセスで、対応するプログラムを使用することによって、TCPハードウェア回路または専用チップを呼び出して、パケットを送受信する。対応して、プロセッサ120の呼出しの下で、TCPハードウェア回路または専用チップは、本発明の方法の実施形態で説明されるステップまたは機能を完了するために別のハードウェアと協調する。加えて、TCPプロトコルスタックのTCPハードウェア回路または特定用途向けチップによって前述の方法のステップを実行する関連する詳細については、前述の方法の実施形態を参照されたく、詳細はここでは再び説明されない。
【０１２２】
図11に示されるように、本発明の実施形態は、処理回路302、および、処理回路302に接続されている通信インタフェース304および記憶媒体320を含む別のユーザ機器300をさらに提供する。
【０１２３】
処理回路302は、データを処理および/または送信し、データアクセスおよび記憶を制御し、コマンドを与え、操作を実行するように別のデバイスを制御するように構成される。処理回路302は、1つまたは複数のプロセッサ、1つまたは複数のコントローラおよび/またはプログラム等を実行するように構成され得る別の構造として実施されてよい。処理回路302は、具体的には、汎用プロセッサ、デジタル信号プロセッサ（DSP）、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）または別のプログラマブル論理コンポーネントを含んでよい。汎用プロセッサは、マイクロプロセッサおよび任意の通常のプロセッサ、コントローラ、マイクロコントローラまたは状態マシンを含んでよい。処理回路302は、コンピューティングコンポーネント、例えば、DSPおよびマイクロプロセッサの組合せとして実施されてよい。
【０１２４】
記憶媒体306は、磁気記憶デバイス（例えば、ハードディスク、フロッピーディスクまたは磁気ストライプ）、光記憶媒体（例えば、デジタル多用途ディスク（DVD））、スマートカード、フラッシュメモリデバイス、ランダムアクセスメモリ（RAM）、読出し専用メモリ（ROM）、プログラマブルROM（PROM）、消去可能PROM（EPROM）、レジスタまたはそれらの任意の組合せ等のコンピュータ可読記憶媒体を含んでよい。記憶媒体306は、処理回路302に結合されてよく、その結果、処理回路302は、情報を読み出し、情報を記憶媒体306に書き込むことができる。具体的には、記憶媒体306は、処理回路302に統合されてよく、または、記憶媒体306および処理回路302は分離されてよい。
【０１２５】
処理回路302は、記憶媒体306に記憶されているプログラムを実行するように適合される。本発明の本実施形態で使用される「プログラム」という用語は、命令、命令セット、コード、コードセグメント、サブルーチン、ソフトウェアモジュール、アプリケーション、ソフトウェアパッケージ、スレッド、プロセス、関数、ファームウェア、ミドルウェア等を含むがそれらに限定はされないものとして広く理解されるべきである。
【０１２６】
通信インタフェース304は、ユーザ機器300と1つまたは複数の無線ネットワークデバイス（例えば、ネットワークノード）間の双方向通信を実施する回路および/またはプログラムを含み得る。通信インタフェース304は、1つまたは複数のアンテナ（図11には示されない）に結合されてよく、少なくとも1つの受信回路316および/または少なくとも1つの送信回路318を含んでよい。実施形態では、通信インタフェース304は、全体的にまたは部分的に無線モデムによって実施されてよい。
【０１２７】
実施形態では、記憶媒体306は、プロトコルスタックプロトコル320を記憶する。処理回路302は、プロトコルスタックプロトコル320を実行して、プロトコルスタックモジュール308の機能を実施する。プロトコルスタックモジュール308は、通信インタフェース304によって受信されるデータに対して復号および/またはデカプセル化処理を実行して、上位レイヤアプリケーションプログラムにデータを転送してよく、または、アプリケーションプログラムのデータに対してカプセル化処理を実行して、次いで、通信インタフェースを使用することによって、データを別のデバイスに送信してよい。プロトコルスタックモジュール308の具体的な動作プロセスについては、前述の実施形態および図11における関連する説明におけるTCPプロトコルスタック130および21を参照されたい。
【０１２８】
実施形態では、プロトコルスタックモジュール308は、レイヤのプロトコルを実施するために、物理レイヤモジュール、データリンクレイヤモジュール、ネットワークレイヤモジュール、送信レイヤモジュールおよびアプリケーションレイヤモジュールを含んでよい。例えば、物理レイヤモジュールは、物理デバイスインタフェース特性、送信媒体タイプ、送信レート、送信モード等を定義し、且つ、物理レイヤの信号処理を実施するように構成される、回路および/またはプログラムを含んでよい。同様に、データリンクレイヤモジュールは、例えば、ネットワークレイヤによって生成されるシグナリングを配信し、物理レイヤによって生成される情報を処理することを担う、データリンクレイヤの機能を実施するように構成される、回路および/またはプログラムを含んでよい。データリンクレイヤモジュールは、例えば、MACレイヤ、RLCレイヤおよびLLCレイヤの機能を実施するようにそれぞれ構成される、メディアアクセス制御（Media Access Control, MAC）レイヤモジュール、無線リンク制御（RLC）レイヤモジュールおよび論理リンク制御（LLC）レイヤモジュール等の1つまたは複数のサブモジュールを含んでよい。例えば、MACレイヤモジュールは、物理レイヤによって提供されるサービスを使用することによって、上位レイヤプロトコルデータを送信し、上位レイヤとエアインタフェースとの間のデータアクセスを管理するように構成される。RLCレイヤモジュールは、データセグメンテーションと再アセンブリのために構成される。LLCレイヤモジュールは、トラフィックおよびシーケンス制御機能およびエラー制御機能を提供するように構成される。さらに、ネットワークレイヤモジュールは、ネットワークレイヤの機能、例えば、論理アドレッシングおよびルーティングを実施する、回路および/またはプログラムを含んでよい。送信レイヤモジュールは、例えば、ポートアドレッシング、セグメンテーションおよび再アセンブリ、接続制御、トラフィック制御およびエラー制御等の送信レイヤの機能を実施するように構成される、回路および/またはプログラムを含んでよい。アプリケーションレイヤモジュールは、上位レイヤアプリケーションプログラムにインタフェースを提供するように構成される、回路および/またはプログラムを含んでよい。
【０１２９】
本発明の本実施形態の1つまたは複数の態様によると、処理回路302は、記憶媒体306に記憶されるプロトコルスタックプロトコル320を実行するように適合され、それによって、プロトコルスタックモジュール308の機能を実施する。プロトコルスタックモジュール308は、具体的には、前述の方法の実施形態における一部または全てのステップを実施する。
【０１３０】
図13に示されるように、本発明の実施形態は、ユーザ機器13をさらに提供し、前述の方法の実施形態における送信ノードの機能を実施する。ユーザ機器13は、受信ユニット131、送信ユニット133および処理ユニット132を含む。
【０１３１】
送信ユニット133は、ユーザ機器13と通信接続している受信ノード14に複数のパケットを送信するように構成される。
【０１３２】
受信ユニット131は、受信ノード14から確認応答パケットを受信するように構成される。
【０１３３】
実施形態では、処理ユニット132は、受信ユニット131によって受信された確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノード14に再送信するように、送信ユニット133をトリガするように構成される。さらに、処理ユニット132は、第1のパケットが再送信された後に受信ユニット131によって受信された確認応答パケットに従って、再送信されたパケットが失われたと判定し、第1のパケットを、第1の時間間隔内で少なくとも2回連続的に送信するように、送信ユニット133を直ちにトリガするようにさらに構成され、ここで、再送信されたパケットは、再送信された第1のパケットである。「直ちに」と「第1の時間間隔」の詳細な定義については、前述の方法の実施形態を参照されたい。
【０１３４】
別の実施形態では、処理ユニット132は、受信ノード131によって受信された確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノード14に再送信するように、送信ユニット133をトリガするように構成される。さらに、処理ユニット132は、第1のパケットが再送信された後に受信ノード131によって受信された確認応答パケットに従って、再送信されたパケットが失われたと判定し、第1のパケットを再び再送信するように送信ユニット133をトリガし、送信バッファが空であるかどうかを判定し、送信バッファが空でない場合、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で送信するようにさらに構成され、ここで、送信バッファ内のパケットは、送信ユニットによって送信されていないパケットである。さらに、処理ユニット132は、送信バッファが空である場合、第1のパケットを、第1の時間間隔内で少なくとも1回送信するように送信ユニット133をトリガするようにさらに構成される。「第1の時間間隔」の詳細な定義については、前述の方法の実施形態を参照されたい。
【０１３５】
別の実施形態では、処理ユニット132は、受信ユニット131によって受信された確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノード14に再送信するように、送信ユニット133をトリガするように構成される。さらに、処理ユニット132は、第1のパケットが再送信された後に受信ユニット131によって受信された確認応答パケットに従って、再送信されたパケットが失われたと判定し、第1のパケットを再び再送信するように、送信ユニット133をトリガし、送信バッファが空であるかどうか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定し、送信バッファが空であるか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、第1のパケットを、第1の時間間隔内で少なくとも1回送信するようにさらに構成される。さらに、処理ユニット132は、送信バッファが空でなく、且つ、現在の輻輳制御ポリシーが新しいパケットの送信を許可する場合、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で送信するようにさらに構成され、ここで、送信バッファ内のパケットは、送信ユニットによって送信されていないパケットである。「第1の時間間隔」の詳細な定義については、前述の方法の実施形態を参照されたい。
【０１３６】
受信ユニット131、送信ユニット133および処理ユニット132の詳細な動作プロセスについては、前述の方法の実施形態を参照されたく、詳細はここでは再び説明されないことは留意されるべきである。
【０１３７】
本発明の実施形態は、送信ユニット、受信ユニットおよび処理ユニットを含むユーザ機器をさらに提供する。
【０１３８】
送信ユニットは、ユーザ機器と通信接続している受信ノードに複数のパケットを送信するように構成される。
【０１３９】
受信ユニットは、複数の確認応答パケットを、受信ノードから受信するように構成される。
【０１４０】
実施形態では、処理ユニットは、受信ユニットによって受信された複数の確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノードに直ちに再送信するように、送信ユニットをトリガし、第1のパケットを、第2の時間間隔内で少なくとも1回送信するように構成され、ここで、第2の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、送信ノードは、第2の時間間隔内で、再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。加えて、ここで記載される「直ちに」は、第1のパケットが失われたと判定された後の事前に設定された時間間隔内を指す。事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、それよりもはるかに小さい。好ましくは、事前に設定された時間間隔は0と等しいか、0に近い。
【０１４１】
別の実施形態では、処理ユニットは、受信ユニットによって受信された複数の確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノードに直ちに再送信するように、送信ユニットをトリガするように構成される。さらに、処理ユニットは、送信バッファが空であるかどうかを判定し、送信バッファが空である場合、第1のパケットを、第2の時間間隔内で少なくとも1回送信するように、送信ユニットをトリガするようにさらに構成される。さらに、処理ユニットは、送信バッファが空でない場合、送信バッファ内の少なくとも1つのパケットを、第1の時間間隔内で送信するように、送信ユニットをトリガするようにさらに構成され、ここで、送信バッファ内のパケットは、送信ユニットによって送信されていないパケットである。第2の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、送信ノードは、第2の時間間隔内で、再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。加えて、ここで記載される「直ちに」は、第1のパケットが失われたと判定された後の事前に設定された時間間隔内を指す。事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、それよりもはるかに小さい。好ましくは、事前に設定された時間間隔は0と等しいか、0に近い。
【０１４２】
別の実施形態では、処理ユニットは、受信ユニットによって受信された複数の確認応答パケットに従って、複数のパケットにおける第1のパケットが失われたと判定し、第1のパケットを受信ノードに直ちに再送信するように、送信ユニットをトリガするように構成される。さらに、処理ユニットは、送信バッファが空であるかどうか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可するかどうかを判定し、送信バッファが空であるか、または、現在の輻輳制御ポリシーが新しいパケットの送信を許可しない場合、第1のパケットを、第2の時間間隔内で少なくとも1回送信するように、送信ユニットをトリガするようにさらに構成される。さらに、処理ユニットは、送信バッファが空でなく、且つ、現在の輻輳制御ポリシーが新しいパケットの送信を許可する場合、送信バッファ内の少なくとも1つのパケットを、第2の時間間隔内で送信するように、送信ユニットをトリガするようにさらに構成され、ここで、送信バッファ内のパケットは、送信ユニットによって送信されていないパケットである。第2の時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であり、送信ノードは、第2の時間間隔内で、再送信された第1のパケットが失われたことを示すために使用される確認応答パケットを受信していない。加えて、ここで記載される「直ちに」は、第1のパケットが失われたと判定された後の事前に設定された時間間隔内を指す。事前に設定された時間間隔は0以上であり、且つ、第1のパケットのタイムアウトタイマの周期未満であるか、それよりもはるかに小さい。好ましくは、事前に設定された時間間隔は0と等しいか、0に近い。
【０１４３】
当業者は、実施形態における方法のステップの全てまたは一部が、関連ハードウェア（プロセッサ等）に命令するプログラムによって実施され得ることを理解することができる。プログラムは、コンピュータ可読記憶媒体に記憶されてよい。記憶媒体は、ROM、RAM、磁気ディスクまたは光ディスクを含んでよい。
【０１４４】
本発明の実施形態で提供されるパケット送信方法およびユーザ機器は、上で詳細に説明されている。本明細書では、本発明の原理および実施方式を説明するために、具体的な例が使用されており、実施形態の説明は、本発明の方法およびコアアイデアを理解するのを助けるようにのみ意図されている。加えて、当業者は、本発明のアイデアに基づいて、具体的な実施方式および適用範囲に関して修正を行うことができる。従って、本明細書の内容は、本発明への限定として解釈されるべきではない。
【符号の説明】
【０１４５】
10  アクセスポイント
12  無線ゲートウェイ
13  ユーザ機器
14  ワイドエリアネットワーク
20  第1のアプリケーションプログラムサーバ
21  TCPプロトコルスタック
30  第2のアプリケーションプログラムサーバ
31  TCPプロトコルスタック
40  第3のアプリケーションプログラムサーバ
41  TCPプロトコルスタック
110  ユーザ機器
120  プロセッサ
130  TCPプロトコルスタック
131  受信ユニット
132  処理ユニット
133  送信ユニット
140  無線モデム
150  メモリ
302  処理回路
304  通信インタフェース
306  記憶媒体
308  プロトコルスタック
316  受信回路
318  送信回路
320  プロトコルスタックプログラム
【図１】
0006522855.tif 000004
【図２】
0006522855.tif 000005
【図３】
0006522855.tif 000006
【図４】
0006522855.tif 000007
【図５】
0006522855.tif 000008
【図６】
0006522855.tif 000009
【図７】
0006522855.tif 000010
【図８】
0006522855.tif 000011
【図９】
0006522855.tif 000012
【図１０】
0006522855.tif 000013
【図１１】
0006522855.tif 000014
【図１２】
0006522855.tif 000015
【図１３】
0006522855.tif 000016