JP2006287928A - 損失耐性のある伝送制御プロトコル - Google Patents

損失耐性のある伝送制御プロトコル Download PDF

Info

Publication number
JP2006287928A
JP2006287928A JP2006082131A JP2006082131A JP2006287928A JP 2006287928 A JP2006287928 A JP 2006287928A JP 2006082131 A JP2006082131 A JP 2006082131A JP 2006082131 A JP2006082131 A JP 2006082131A JP 2006287928 A JP2006287928 A JP 2006287928A
Authority
JP
Japan
Prior art keywords
packets
data
packet
window
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006082131A
Other languages
English (en)
Other versions
JP4368863B2 (ja
Inventor
Kadangode K Ramakrishnan
ケー.ラマクリシュナン カダンゴード
Shivkumar Kalyanaraman
カルヤナラマン シヴクマー
Vijaynarayanan Subramanian
スブラマニアン ヴジェイナラヤナン
Omesh Tickoo
ティッコー オメッシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Corp
Rensselaer Polytechnic Institute
Original Assignee
AT&T Corp
Rensselaer Polytechnic Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/290,807 external-priority patent/US7366132B2/en
Priority claimed from US11/290,810 external-priority patent/US20060250949A1/en
Priority claimed from US11/290,809 external-priority patent/US7889654B2/en
Application filed by AT&T Corp, Rensselaer Polytechnic Institute filed Critical AT&T Corp
Publication of JP2006287928A publication Critical patent/JP2006287928A/ja
Application granted granted Critical
Publication of JP4368863B2 publication Critical patent/JP4368863B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0006Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
    • H04L1/0007Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format by modifying the frame length
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • H04L1/1819Hybrid protocols; Hybrid automatic repeat request [HARQ] with retransmission of additional or different redundancy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • H04L1/1845Combining techniques, e.g. code combining

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

【課題】データ・ブロック内のデータ・パケットを通信ネットワーク内でトランスポート・プロトコルにより送信または受信するための装置および方法を提供すること。
【解決手段】一実施例では、損失耐性のあるTCPプロトコルが使用され、このプロトコルでは、最大セグメント・サイズ(MSS)を輻輳ウィンドウの最小細分性に適合させることができる。また、プロアクティブな順方向誤り訂正(FEC)パケットを、データ・ブロックのウィンドウに追加することができる。プロアクティブFECパケットの数を、例えば、推定消失率に基づいて決定することができる。加えて、リアクティブFECパケットを、データ・ブロックに追加することができる。また、受信器は、データ・ブロック内のデータ・パケットを受信し、受信されたデータ・パケットに応答して、選択的肯定応答(SACK)を処理することができる。
【選択図】図1

Description

本発明は一般に通信ネットワークに関する。具体的には、本発明は、損失の多いリンク上の改善された通信パフォーマンスに備える。
本出願は、2005年12月1日に出願した米国特許出願第11/290,807号、2005年12月1日に出願した米国特許出願第11/290,809号、2005年12月1日に出願した米国特許出願第11/290,810号の優先権を主張するものであり、2005年3月30日に出願した米国特許仮出願第60/666,398号の権利を主張するものであり、それらのすべてが全体として参照により本明細書に組み込まれる。
無線チャネルを介したデータ通信は、ますます一般的になってきている。例えば、WiFiは、IEEE 802.11規格に基づいた接続のための無線通信のために使用される。2、3例を挙げると、WiMAX、3G、メッシュ・ネットワーク、またはコミュニティ・ネットワークなど、多数の他の無線チャネルを使用することができる。無線チャネルは損失が多くなる場合があり、データはしばしば、様々な条件のいずれか1つにより送信中に失われる場合があるようになる。例えば、気象条件は、通信データの送信が損なわれる可能性があるようになる場合がある。同様に、同じチャネル上で送信中の他のデバイスからの干渉など、様々な原因からのデータ送信への干渉がある場合がある。これらの要素のいずれもが、データ・パケット送信における追加の損失、または、データ・パケット消失率の増加の一因となる場合がある。
エンドツーエンド・トランスポート・プロトコル(例えば、伝送制御プロトコル(TCP))では、データ通信が、相互接続されたネットワークまたはデバイスに渡って提供される。このようなトランスポート・プロトコルでは、TCPがその一例であり、送信されるべきデータがデータのパケットに分けられる。データ・パケットは受信器に送信され、受信器でこれらのパケットが検証され、オリジナル・メッセージに再アセンブリされる。肯定応答(ACK)が受信器から戻されて、データ・パケットが受信されたことが指示される。ACKが戻されない場合、データ・パケットが再送信されなければならない場合がある。加えて、送信器がACKを指定された期間内に受信しないとき、送信器のトランスポート・プロトコルはタイムアウトになる場合がある。これにより、トランスポート・プロトコルがACKの欠如をネットワーク内の輻輳として解釈するので、パケットの送信の速度が低減される結果となる。次いで、データ・パケットは、送信器のトランスポート・プロトコルによって再送信される場合がある。
TCPは、エンドツーエンド・トランスポート・プロトコルの一例であり、使用されている有力な伝送プロトコルになっている。しかし、TCPはまたパフォーマンス低下も受け、これは特に無線リンクにおいて、高いビット・エラー率、パケット消失、または断続的な接続性のような問題による。加えて、データ・パケット消失および損失は、TCPタイムアウト中のパフォーマンスにマイナスの影響を与える場合がある。このような問題は他のトランスポート・レイヤ・プロトコルにおいても見られる(例えば、メディア・ストリーミングもしくはVoIP、またはいずれかの無線リンクレイヤ設計と統合された、UDP)。輻輳はネットワーク内で、通信リンクまたはパス上のトラフィックの量がリンクまたはパスの容量を超えるとき、発生する場合がある。このような場合、過剰なデータは廃棄される場合があり、または、輻輳が緩和するまで、過剰なデータはバッファされる場合がある。しかし、輻輳が続く場合、この輻輳は、バッファ内のデータ・パケットを廃棄して、パケット交換網内のバッファをクリアすることによって、制御される。
TCPは通常、パケット損失の場合における輻輳制御のために使用される。しかし、データ・パケット損失が輻輳によるものでないとき(例えば、パケット消失によるパケット損失、または、損失の多い無線リンク内のパケットの損失)、TCPパフォーマンスは不必要な輻輳制御で損害を受ける場合がある。このような輻輳制御は、TCPに容量を過小評価させる場合があり、輻輳ウィンドウの縮小、および、使用可能な容量を十分に使用しない結果となる。TCPは、わずか1%の残留エラー率しか有していない、長いレイテンシ・チャネルにより、かなりのパフォーマンス低下を受ける。輻輳と非輻輳損失の間の混乱は、他のトランスポート・プロトコルについても存在する。
また、チャネル障害または干渉もまた、信号対雑音比(SNR)の低下およびビット・エラーの結果となる場合があり、これらの結果は、パケット・エラーまたは消失の結果となる場合がある。
したがって、無線通信ネットワークにおけるパフォーマンス損失を低減し、損失が輻輳に関係していると誤解するために損失の多い通信チャネルにおけるトランスポート・レイヤ・プロトコルのパフォーマンスを高めるための、方法およびシステムの必要性が存在する。また、データ・セグメント・サイズを調整して、ビットまたはパケット消失へのネットワーク弾力性を増すための方法およびシステムの必要性もある。
米国特許出願第11/290,807号 米国特許出願第11/290,809号 米国特許出願第11/290,810号 米国特許仮出願第60/666,398号
以下で、本発明のいくつかの態様の基本的理解を提供するために、簡単な概要を提示する。この概要は、本発明の広範な概観ではない。これはまた本発明の重要または重大な要素を識別するようにも、本発明の範囲を線引きするようにも意図されない。以下の概要は単に、本発明のいくつかの概念を簡単な形態で、以下のより詳細な説明の前置きとして提示する。
本発明の一実施例では、データ・ウィンドウ内のデータ・パケットをトランスポート・プロトコルにより送信するための方法が提供される。一実施例では、ウィンドウ細分性を、最大セグメント・サイズ(MSS)に基づいて決定または調整することができる。
さらにもう1つの実施例では、プロアクティブ順方向誤り訂正(FEC)パケットの数を決定し、データ・ウィンドウに追加することができ、データ・ウィンドウ内のFECパケット対データ・パケットの比率を決定することができる。
もう1つの実施例では、プロアクティブFECパケットを決定されたウィンドウ細分性で収容するように、MSSを適合させることができる。
もう1つの実施例では、データ・ブロックを作成するための方法が提供される。データ・ブロックを作成する一実施例では、いくつかのデータ・パケットおよびFECパケットがデータ・ウィンドウ内に含まれる。もう1つの実施例では、FECパケット対データ・パケットの比率が調整される。一実施例では、この比率は推定損失率に基づいて調整される。
もう1つの実施例では、トランスポート・プロトコルは、明示的輻輳通知(ECN)が受信されるとき、輻輳ウィンドウを縮小することができる。例えば、ECNへの応答は、輻輳と消失損失の間の区別を提供することができる。もう1つの実施例では、ECNを受信することにおいて、バイト単位のウィンドウのサイズは、後続のブロック/ウィンドウ内の異なるデータ/FECパラメータについて縮小される場合がある。
もう1つの実施例では、ウィンドウ細分性を最大パケット・サイズに基づいて調整するための方法が提供される。もう1つの実施例では、最小パケット・サイズが使用される。
もう1つの実施例では、ウィンドウ細分性を現在の最大セグメント・サイズ(MSS)に基づいて調整するための方法が提供される。
もう1つの実施例では、リアクティブ・パケットの送信のための方法が提供される。
もう1つの実施例では、パケットを受信器でデコードする方法が提供される。
本発明のより完全な理解およびその利点は、添付の図面を考慮して以下の説明を参照することによって得ることができ、図面では、類似の参照番号は類似の機能を示す。
以下の様々な実施形態の説明では、添付の図面を参照し、図面は本明細書の一部を形成し、図面では、例示として、本発明を実施することができる様々な実施形態が示される。他の実施形態を利用することができ、構造的および機能的修正を、本発明の範囲および精神から逸脱することなく行うことができることを理解されたい。
図1は、本発明を実施することができる通信システムの一実施例を例示する。この実施例では、データを、無線チャネルを介して通信することができる。例えば、データを、電話101、ラップトップ・コンピュータ102、デスクトップ・コンピュータ103、または、データを送信することができる他のいずれかのデバイスなど、ユーザー・デバイスから送信することができる。一実施例では、家庭、会社またはホットスポットなど、顧客構内でのデバイスは、内部アクセス・ポイント105を介してデータを通信することができる。例示の実施例では、ラップトップ・コンピュータ102は、無線接続109を介して、顧客構内のアクセス・ポイント105と通信する。同様に、デスクトップ・コンピュータ103は、イーサネット(登録商標)接続108を介してアクセス・ポイント105と通信する。この実施例のアクセス・ポイント105はまた、加入者局104とも通信することができる。
図1が例示するように、加入者局104はデータを、基地局106との無線接続を介して送信または受信することができる。無線局は、いかなる様々な無線チャネルであってもよい。無線チャネルのいくつかの例には、2、3例を挙げると、WiFi、WiMAX、3G、メッシュ・ネットワーク、コミュニティ無線ネットワーク、衛星ネットワーク、または、複数の無線リンクのトラバーサルを含むエンドツーエンド通信を含むデータ通信のための他の無線チャネルが含まれる。基地局106はさらに、例えば、ファイバー・ネットワークを通じて、インターネット107などのネットワークと通信することができる。
トランスポート・プロトコルを、無線チャネルを介したデータ通信のためのトランスポート・レイヤとして使用することができる。本発明はいかなるトランスポート・レイヤ・プロトコルにも適用可能にすることができ、これらのプロトコルには、例えば、トランスポート制御プロトコル(TCP)、または、UDP上のRTPを介したマルチメディア・ストリーミングなど、いずれかの非TCPトランスポート・プロトコル、カスタム・トランスポート・プロトコル(例えば、NASAの衛星ネットワーク)、SCTPなどのシグナリング・プロトコルなどが含まれる。本明細書はTCPを、本発明におけるトランスポート・レイヤ・プロトコルの一実施例として参照する。しかし、いかなるトランスポート・プロトコルを使用することもできることを理解されたい。
TCPは通常、パケット・データの損失に応答して輻輳ウィンドウを縮小することによって、ネットワーク内の輻輳に対応する。例えば、輻輳が発生する場合、輻輳が緩和する時間に、データを後の送信のためにバッファ内に格納することができる。したがって、輻輳が存在するとき、TCPは、ネットワークのより低い容量を推定すること、および、それに応じて輻輳ウィンドウを縮小することによって、対応することができる。図2A〜2Cは、通信ネットワーク内の輻輳中のTCPパフォーマンスの一実施例を例示する。図2Aは、データを受信器131に送信するトランスミッタ130を例示する。送信中のデータは、特定の帯域幅容量132でチャネルを介して送信することができる、データ・パケット133の形態である。データ・パケットはまた、データ・セグメントと呼ばれる場合もある。図2Bは、輻輳がネットワーク内にある一実施例におけるデータ通信を例示する。この実施例では、トランスミッタ130はデータ・パケット133を受信器131に送信する。しかし、輻輳の存在により、データ・パケットはネットワーク内で失われる。受信器131はデータ・パケット133を受信し、肯定応答(ACK)または選択的ACK(SACK)をトランスミッタへ、フィードバック・ループ136を介して送信する。この実施例では、データ・パケットは輻輳のために失われている。データ・パケット損失に基づいて、TCPはネットワークのより低い容量を推定し、輻輳のために、推定されたより低い容量について収容するように、ウィンドウを調整する。調整されたウィンドウ134は、単位時間当たりにネットワークに送信されるトラフィックの量を、元のウィンドウ132と比較して縮小する(帯域幅要求を低減している)。よって、受信器131からの損失フィード・バックに基づいて、ネットワークの容量は縮小されていると仮定され、エンド・システムによるネットワーク上の帯域幅要求は相応して減少される。
図2Cは、トランスミッタ130がデータ・パケット133を受信器131に送信する、本発明の一実施例を例示する。パケット破損によるデータ・パケットの潜在的な損失にもかかわらず、データ・パケットは受信器131へ、ほぼ全容量で送信される。この実施例で例示するように、ネットワークの帯域幅容量135は、輻輳がない場合の帯域幅容量132に類似している。この実施例で使用されるトランスポート・レイヤは、本明細書で説明するように、損失耐性のある伝送制御プロトコル(LT−TCP)である。
図3は、LT−TCPがいかなるの数の要素を含むこともできる、一実施例を例示する図である。この実施例では、LT−TCPは適応的最大セグメント・サイズ(MSS)122を含み、MSS122では、セグメント・サイズが制限され、調整され、またはそうでない場合は適合される場合がある。一実施例では、輻輳ウィンドウの細分化は、所定の最小または最大数を受けるデータ・パケットの数を有するように調整される。また、LT−TCPはさらに、プロアクティブ順方向誤り訂正(FEC)120および/またはリアクティブFEC121を含むことができる。プロアクティブFECパケットの計算では、決定された数のFECパケットを、送信に先立ってプロアクティブに提供することができる。一実施例では、冗長性がデータに追加され、チャネル上のビット・エラーまたはパケット消失が許容されるようになる。リアクティブFEC121は、以下でさらに説明するように、TCPの元の送信または再送信を保護することができる。
図4Aおよび4Bは、データ通信中の伝送損失の一実施例を例示する。図4Aは、データ・パケットの送信を例示する全体図である。例示の実施例では、データ・パケットは送信器から受信器へ送信される。パケットは受信器で受信され、受信器は、状況を送信器またはトランスミッタへ送信することによって応答する。例えば、状況を、データ・パケットが受信器でうまく受信されたという肯定応答(ACK)にすることができる。加えて、複数のデータ・パケットが選択的ACK(SACK)を介して肯定応答されて、いくつかのデータ・パケットは受信されるが、他のデータ・パケットは受信されていない可能性があることが、指示される場合がある。例示のための一実施例として、SACKが1110011101の値を有する場合、パケット1、2、3、6、7、8および10は受信されたが、パケット4、5および9は受信されなかった。例えば、SACKは、正しく受信されている連続バイトの開始および終了を指示することができる。データ・パケットが送信器から送信された後、送信器は、タイムアウト期間中に指定された長さの時間で待機することができる。この実施例で使用されるようなタイムアウトは、受信器からの、送信されたデータ・パケットが受信器で損なわれずに受信されたことを指示する肯定応答(例えば、SACK)の受信を期待する間、送信器が待機する時間の量である。データ・パケットの肯定応答が、割り当てられたタイムアウト期間内に受信されない場合、送信されたデータ・パケットは失われている可能性がある。したがって、ACKを送信器で受信器からタイムアウト期間内に受信できなかったことによって、パケット損失を検出することができる。この場合、送信器またはトランスミッタは、欠落データ・パケットを再送信することができる。例えば、送信器は修復データ・パケットを受信器に送信することができる。
データ・パケット損失を検出するもう1つの方法は、重複肯定応答(dupack)の使用を通じた方法である。dupackを使用して、それにおいてACKが以前に提供されている、以前に受信されたデータ・パケットを肯定応答することができる。例えば、第1のデータ・パケットが受信器で、送信器から受信される場合、受信器はACKを送信器に送信して、第1のデータ・パケットの受信を指示することができる。しかし、次に期待された第2のデータ・パケットが受信器で受信されない場合、受信器はACKを第2のデータ・パケットについて送信しない。送信器が第3のデータ・パケットを送信し、受信器が受信する場合、第2のデータ・パケットを受信していない受信器は、第1のデータ・パケット(すなわち、受信器がうまく受信した、最後のデータ・パケット)のためのACKを送信する。この場合、第1のデータ・パケットの受信を指示する第2のACKは重複ACK(すなわち、dupack)であり、これは、dupackが、以前に指示された第1のデータ・パケットの受信を再び肯定応答するからである。したがって、受信器は、dupackの使用を通じて、後続のデータ・パケットが送信された後に特定のデータ・パケットが受信されなかった(すなわち、それが以前のACKの重複である)ことを指示することができる。加えて、dupackはまた、順序が違った新しいパケットが受信器で受信されたことを指示することもできる。従来、TCP送信器は、第3のdupackが受信器から受信されるときにのみ、パケットを再送信する。
図4Bは、低ウィンドウ細分性を有するウィンドウ内のデータ・パケットのデータの全損失の一実施例を例示する。この実施例では、ウィンドウ内の各セグメントまたはパケットが大きいので、最大セグメント・サイズ(MSS)は大きい。これは低ウィンドウ細分性の結果となる。この実施例で例示するように、このウィンドウは5つのデータ・パケット、データ・パケット1〜5を含む。しかし、例えば、気象条件、または、エンドツーエンド・ネットワークの一部である場合のある無線リンク上の干渉など、様々な理由のために、データ・パケットは送信中に失われる場合がある。この実施例のウィンドウは低ウィンドウ細分性を有する(すなわち、ウィンドウ内のセグメントまたはパケットが高いMSSを有する)ので、データ・パケット損失が発生する場合のある可能性はより高い。これは、最大セグメント・サイズが大きいほど、データ・パケットの全損失が発生する場合のある可能性がより高いからである。加えて、送信における障害(例えば、無線リンク上の気象条件)がリンク上に存在する時間の長さが長いほど、ウィンドウ内のすべてのデータ・パケットが失われる可能性はより高い。図4Bに例示した実施例では、ウィンドウ細分性は低く、ウィンドウ内のすべてのデータ・パケットは失われる。よって、受信器はACKを送信器に戻さず、したがって、タイムアウトが送信器で発生する。通常、TCP送信器は、ウィンドウ・サイズを大幅に(例えば、1または2パケットまで)縮小することによってタイムアウトに対応し、次いで、パケットがうまく送信されるとき、ウィンドウ・バック・アップを徐々に構築する。
本発明の一実施例では、限定されないがTCPなどのトランスポート・プロトコルは、明示的輻輳通知信号(ECN)がECN可能ネットワーク・パス内に存在する場合、データ・パケット損失を輻輳として扱い、輻輳がローカルで検出されるときにECNを生成することができるようにする。逆に、ECN信号がECN可能ネットワーク・パス内に存在しない場合、トランスポート・プロトコルはデータ・パケット損失を輻輳として扱わない。この実施例では、トランスポート・プロトコル(例えば、損失耐性のあるTCP(LT−TCP))は、データ・パケットが他の理由(損失の多いシステムにおけるデータ損失またはパケット消失など)のために失われることとは対照的に、ネットワークが輻輳していることを指示する、ECN信号などの指示が受信されるとき、その送信速度またはウィンドウを変更することによって、通信ネットワーク内の輻輳に対応することができる。この実施例では、ネットワーク内の輻輳を指示するために、明示的輻輳通知(ECN)をネットワークによって、キューの状態に基づいて生成することができる。例えば、輻輳が存在することをネットワークに指示するためにECN信号をヘッダに挿入することによって、ネットワーク内の輻輳中にネットワーク内のルーターによってデータ・パケットにマークを付けることができる。マーク付きのデータ・パケットを受信する受信器は、マーク付きのデータ・パケットに関する情報を戻すことができ、送信器はそれに応じて送信速度を下げることができる。この場合、LT−TCPなど、トランスポート・プロトコルは輻輳に対応することができ、これは、このプロトコルが、ECNマークを通じて輻輳の曖昧でない指示を受信するからである。
しかし、受信器で受信されたECN指示がないとき、データ・パケットの損失は、輻輳によるものと見なされない。この実施例では、うまく受信された他のパケットにもまた、輻輳を指示するECNマークは付けられない。したがって、LT−TCPは輻輳に対応しないが、その代わりに、パケット損失を、ネットワーク内のエラーによるものとして扱い、損失耐性のある応答を提供する。損失耐性のある応答を本明細書でさらに説明する。
ネットワーク輻輳に応答する、本発明のトランスポート・レイヤ・プロトコルの損失耐性のある応答の一実施例では、最大セグメント・サイズ、および、ウィンドウ内のデータ・パケットまたはセグメントの数を調整して、ウィンドウ細分性を増すことができる。図5Aおよび5Bは、タイムアウトおよびデータ・パケットの再送信におけるウィンドウ細分性の効果を例示する。図5Aは、5つのデータ・パケット、すなわち、データ・パケット1(502)、データ・パケット2(503)、データ・パケット3(504)、データ・パケット4(505)およびデータ・パケット5(506)のウィンドウ(W)501の一実施例を例示する。ウィンドウ501内の5つの各データ・パケット(502〜506)は、ネットワークを介して送信器から受信器へ順次送信される。しかし、ネットワーク上の様々な条件(例えば、干渉または気象条件)により、データ・パケット1 502およびデータ・パケット5(506)のみが受信器でうまく受信される。データ・パケット2〜4(503〜505)は受信されず、したがって失われる。よって、データ・パケット1(502)が受信器で受信されるとき、受信器はACK(すなわち、1ACK507)を送信器へ戻して、データ・パケット1(502)が受信器でうまく受信されたことを指示する。しかし、ACKはデータ・パケット2〜4(503〜505)の各々について戻されず、これは、データ・パケット2〜4(503〜505)が受信されないからである。データ・パケット5(506)が送信器から送信され、受信器で受信されるとき、受信器はデータ・パケット5(506)を受信するが、データ・パケット2〜4(503〜505)のいずれもが受信器でうまく受信されなかったので、受信器はデータ・パケット5(506)の受信に、dupack(508)を送信器に戻すことによって応答する。dupackは送信器に、データ・パケットが失われたこと、および、最後にうまく受信されたデータ・パケットはデータ・パケット1(502)であったことを指示する。同様に、1ACK 507に応答して送信されたパケット、すなわち、データ・パケット6(図示せず)は、第2のdupackを生成する。しかし、図5Aの実施例では、ウィンドウ細分性は低く(すなわち、各データ・パケットまたはセグメントのサイズが大きい)、さらなるdupackは生成されず、これは、さらなる順序が違ったデータ・パケットがウィンドウ内で許可されないからである。この実施例では、受信された不十分な数のdupackがあり、受信器でのデータ・パケット5の受信に応答して、ただ1つのdupackが送信器で受信される。したがって、送信器は、パケット2におけるACKを待機中である間に、タイムアウトする。また、受信される他のdupackはない。したがって、データ・パケット1(502)の受信に応答した最初のACKが送信器で受信された後、過剰な量の時間が経過する。したがって、送信器はタイムアウトを受けて、データ・パケット2で開始するすべてのパケットを再送信する。タイムアウトは容量を浪費し、より低いパフォーマンスにつながる。
図5Bは、データ・パケットの送信における増大されたウィンドウ細分性の効果を例示する。この実施例では、図5Aに例示した実施例と比較すると、最大セグメント・サイズ(MSS)が調整され、ウィンドウ内のデータ・フラグメントまたはセグメントの各々のサイズが低減されるようになる(すなわち、ウィンドウ細分性またはウィンドウ内のデータ・パケットまたはセグメントの数が増やされる)。図5Aおよび5Bに例示する実施例では、ウィンドウ内のデータ・バイトの総数はなお図5Aおよび図5Bで同じである。この実施例では、ウィンドウ(W)501は8個のデータ・パケット、すなわち、データ・パケット1〜8(509〜515、519)を含む。8個のデータ・パケット1〜8(509〜515、519)は、ネットワークを介して送信器から受信器へ順次送信される。しかし、気象条件または干渉などの条件により、データ・パケット1(509)、2(510)、および6〜8(514、515および519)のみが受信器でうまく受信される。データ・パケット3〜5(511〜513)は送信中に失われる。ビット・エラーを引き起こすチャネル条件は、MSSがこのときはより小さいので、パケット損失の数に関してより小さい相乗効果を有する。
受信器はACKを、うまく受信された各データ・パケットまたはセグメントについて戻す。よって、図5Bに例示した実施例では、受信器はデータ・パケット1(509)を受信し、ACK1(516)を戻すことによって応答する。受信器は次いでデータ・パケット2(510)を受信し、ACK2(517)を戻すことによって応答する。しかし、データ・パケット3〜5(511〜513)がそれぞれ受信器で受信されないので、受信器はACKをデータ・パケット3〜5(511〜513)のいずれについても戻さない。データ・パケット6〜8(514、515、519)が次いで、送信器から受信器へ送信される。この実施例では、受信器はデータ・パケット6〜8(514、515、519)をうまく受信し、データ・パケット3〜5(511〜513)をうまく受信しないので、受信器は、パケット6、7および8(514、515、519)を受信するとき、パケット2について3つの重複肯定応答(dupack)(518、520、521)を戻すことによって応答する。しかし、データ・パケット3〜5(511〜513)のいずれもが受信器で受信されなかったので、受信器は、各パケット6、7および8(514、515、519)を受信すると、データ・パケットまたはセグメント2(510)に対応するdupack518、520および521を戻すことによって、データ・パケット6〜8(514、515、519)の受信に応答する。dupack(518、520、521)は、データ・パケットが失われていること、および、受信器で最後に受信されたデータ・パケットまたはセグメントがこの実施例ではデータ・パケット2 510であったことを指示する。追加の3つのdupack(518、520、521)が送信器で受信される。これにより、送信器にパケット3を再送信させる。
また、図5Bの実施例では、ウィンドウ細分性が高い(すなわち、ウィンドウ内のデータ・セグメントまたはパケットの数が高く、ウィンドウ内のデータ・パケットの各々のサイズが小さい)。したがって、送信器は、データ・パケット3〜5(511〜513)のいずれについてもACKを受信しておらず、ネットワーク内のデータ・パケットまたはセグメント損失を指示する3つのdupack518、520、521が受信されるとき、なおタイムアウトを受けていない。結果として、送信器は、失われたデータ・パケット3〜5(511〜513)を受信器に再送信することができる。したがって、図5Bに例示した実施例では、増大されたウィンドウ細分性はタイムアウトを防止し、データ・パケットまたはセグメントの成功する送信および再送信を可能にする。
もう1つの実施例では、順方向誤り訂正(FEC)パケットを使用して、失われたデータ・パケットを再構築することができる。FECパケットはプロアクティブであってもリアクティブであってもよい。プロアクティブFECパケットを作成して、データ・パケット消失に対する適切な保護を提供することができる。プロアクティブFECパケットの一実施例では、決定された数のプロアクティブFECパケットが追加され、ウィンドウ内でデータ・パケットと共に送信される。最大セグメント・サイズ(MSS)は、最大および/または最小値を受ける場合があり、適切なウィンドウ細分性を提供するように、ならびに、データ・パケットと共に送信されたFECパケットを収容するように、本明細書で説明するように調整または適合させることもできる。したがって、この実施例では、データ・パケットまたはセグメントは、データ・パケットのウィンドウ内でいくつかのFECパケットと共に送信され、MSSもまた、FECパケットを収容するように、および/または、所望のウィンドウ細分性を維持するように、調整または適合させることができる。
図6は、FECデータ・パケットのリカバリの一実施例を例示する。この実施例では、Nのブロック・サイズを有するパケット601のウィンドウがデータ通信ネットワーク内で送信される。N個のパケット601は、K個(ただしK<N)のデータ・パケット602およびP個のFECパケット603を含み、ただし、K個のデータ・パケット602およびP個のFECパケット603の和はN個のパケット601である。この実施例の通信ネットワークは、データ・パケットが送信中に失われる、損失の多いシステムである場合がある。この実施例では、合計K個のパケット607が受信される。受信されたパケット607のうちいくつかは元のデータ・パケット602であるのに対して、受信された他のパケットはFECパケット605のいずれであってもよい。この実施例の誤り訂正パケット(すなわち、FECパケット)は、失われたパケットのFEC再構築を可能にする。したがって、この実施例では、どのデータ・パケットが受信されるかは問題ではない。FECパケット(例えば、パケット603のいずれか1つ)はいかなるデータ・パケット(例えば、データ・パケット602のいかなるもの)をも保護または修復することができる。よって、欠落データ・パケット602(すなわち、データ・パケット608)を、受信されたFECパケット(すなわち、データ・パケット605)により再構築することができる。これは、K個のデータ・パケットがリカバリされる結果となる(すなわち、データ・パケット606)。
FECパケットを生成する代替方法の多数の他の実施例がある。例えば、1つの追加の方法は、プロアクティブおよび/またはリアクティブFECのために使用されるFECパケットのインベントリを事前計算し、ゼロ・セグメントのセットを使用して、従来のブロックベースのFECエンコーダ内で使用された「ブロック」を完成させることである。リード・ソロモン(RS)コードまたは他のブロックベースのコードを使用することができる。もう1つの方法は、新しいFECパケットを必要に応じてオン・ザ・フライで、セグメントのために計算することである。ランダム化された低密度パリティ・チェック(LDPC)コードのクラスのいずれかを使用することができる。いずれの場合でも、順序は問題ではないので、FECの「シーケンス・アグノスティック」プロパティを使用して、ウィンドウを再構築することができる。また、トランスポート・レイヤは、より多くのFECパケットがブロックを再構築することを待機するときでさえ、順序正しいデータ・セグメントをアプリケーションに配信することができる。
プロアクティブFECパケットに加えて、FECパケットはまたリアクティブであってもよい。リアクティブFECパケットを、データ・パケット損失に応答して提供および送信することができる。例えば、リアクティブFECパケットを、受信器からのdupackに応答して使用することができる。図7は、プロアクティブおよびリアクティブFECパケットを含むデータ・パケットのブロックの一実施例を例示する。図7が例示するように、ウィンドウ(W)701は、プロアクティブFEC(F)パケット702およびデータ・パケット703を含むデータ・パケットを含み、これらのパケットを送信器から受信器へ送信することができる。しかし、データ・パケットが送信中に失われる場合、受信器は、すべての送信されたデータ・パケットを受信することができず、トランスミッタは対応するACKを受信器から受信しない。応答して、トランスミッタは対応する数のリアクティブFECパケット704を受信器へ送信することができる。よって、リアクティブFECデータ・パケットは、SACKに応答して送信される再送信を補完および保護することができる。リアクティブFECパケットは、失われる元の送信または再送信を修復する働きをすることができる。
図8は、送信におけるプロアクティブFECデータ・パケットの一実施例を例示する。この実施例では、データ・パケットのウィンドウ(W)は、4つのデータ・パケット801(データ・パケット1〜4)および2つのプロアクティブFECパケット802を含む。しかし、送信中に、データ・パケット3および4が失われる。これは、例えば、干渉または気象条件による場合がある。しかし、プロアクティブFECパケット802はうまく送信される。よって、2つの送信されたプロアクティブFECパケット802は、失われたデータ・パケットを再構築するために使用される。これは、dupackの使用なしに、すべてのデータ・パケット(すなわち、この実施例ではデータ・パケット1〜4)の送信が成功する結果となる。
図9は、損失データ・パケットの再送信の一実施例を例示する。この実施例では、データ・パケットのウィンドウは6つのデータ・パケット(すなわち、データ・パケット1〜6)を含む。しかし、送信中に、いくつかのデータ・パケットが失われる場合がある。この実施例では、データ・パケット2および3が送信中に失われる。よって、受信器はデータ・パケット1を受信することができるが、データ・パケット2および3を受信することはできない。この実施例では、受信器は、データ・パケット1を受信することに応答して、ACKをトランスミッタに送信する。しかし、データ・パケット2および3は、この実施例では受信器で受信されない。したがって、受信器はACKを、データ・パケット2または3のいずれについても戻さない。データ・パケット4が受信器で受信されるとき、受信器はデータ・パケット2または3を受信していない。したがって、受信器は、データ・パケット4を受信することに応答して、dupackを戻す。dupackは、データ・パケット損失が発生していること、および、最後にうまく受信されたデータ・パケットはデータ・パケット1であったことを指示する。加えて、受信器はさらに、データ・パケット2の再送信が受信されるまで、続いてトランスミッタによって送信され、受信器によって受信された各データ・パケットに応答して、dupackを送信することができる。図9に例示するように、データ・パケット4、5および6をそれぞれ受信することに応答して、3つのdupackがACKストリーム内でトランスミッタに戻される。トランスミッタはデータ・パケット2を受信器へ、dupackに応答して再送信し、受信器は、対応するACKを送信することによって、再送信されたデータ・パケット2を肯定応答することができる。
しかし、多数の場合では、再送信されたデータ・パケット自体が送信中に失われる場合がある。この実施例では、再送信されたデータ・パケット2もまた受信器でうまく受信される前に失われる場合、受信器は、トランスポート・プロトコルがタイムアウトを受けるまで、dupackをトランスミッタに送信し続けることができる。タイムアウト期間中に、パケットは送信器によって送信されず、データ・パケット2は、タイムアウト期間の最後で再送信されるようになる。タイムアウト期間はかなり長くなる可能性があり、したがって、かなりのスループットの損失の結果となる可能性がある。
図10は、受信器へのデータの送信においてリアクティブFECパケットを使用することができる、一実施例を例示する。この実施例では、データ・パケットのウィンドウ(W)は6つのデータ・パケット(すなわち、データ・パケット1〜6)を含む。データ・パケットのウィンドウの送信中に、データ・パケット2および3が失われる(この実施例では)。受信器はデータ・パケット1をトランスミッタから受信し、データ・パケット1に対応するACKを戻すことによってデータ・パケットの受信を肯定応答する。しかし、データ・パケット2および3は、受信器でうまく受信されない。したがって、受信器は、データ・パケット2または3の肯定応答におけるACKを戻さない。その代わりに、受信器は、4、5および6など、うまく送信された(および受信された)データ・パケットについて、dupackを戻す。
受信器からdupackを受信することに応答して、トランスミッタはリアクティブFECパケットを送信して、失われたデータ・パケット(すなわち、この実施例では、データ・パケット2および3)を再構築する。図10に例示するように、2つのリアクティブFECパケットが送信器またはトランスミッタから受信器に送信される。受信器はリアクティブFECパケットを受信することができ、リアクティブFECパケットを受信器で使用して、データ・パケット2および3を再構築することができる。図10に示すように、受信器はリアクティブFECパケットを、データ・パケット2および3の再構築のために使用して、すべての送信されたデータ・パケット(図10ではデータ・パケット1〜4として例示)を得る。リアクティブFECパケットを使用して、失われたパケットのいずれかの損失を修復する能力は、効率的なリカバリを可能にする。
したがって、本発明の一実施例では、LT−TCPは、ネットワークが輻輳しているという指示が受信されるとき、送信速度を変更することによって、通信ネットワーク内の輻輳に対応することができる。一実施例では、ネットワーク輻輳はキューの状態に基づいて指示され、これにおいて明示的輻輳通知(ECN)がネットワークによって生成され、データ・パケット(例えば、データ・パケットのヘッダ内)に挿入されて、データ・パケットにマークが付けられる。マーク付けを、例えば、ネットワーク内のルーターによって実施することができる。この場合、トランスポート・プロトコルは輻輳に対応することができ、これは、ECNマークを通じて輻輳の曖昧でない指示を受信するからである。逆に、失われたデータ・パケットがあるが、ECN指示が受信器で受信されない場合、データ・パケットの損失は輻輳によるものではない。したがって、LT−TCPは輻輳に対応しないが、その代わりにパケット損失を、ネットワーク内のエラーによるものとして扱う。
トランスポート・プロトコルがネットワーク内で輻輳を識別する(例えば、ECN指示が存在する)とき、トランスポート・プロトコルはさらにMSSを調整または適合させることができる。一実施例では、トランスポート・プロトコルは、MSSを縮小してそれによりウィンドウ細分性を増すことによって、MSSを適合させる。例えば、MSSを、例えば0%と100%の間のある係数(例えば、係数「f」)によって低減することができる。もう1つの実施例では、係数「f」は50%であり、MSSが1/2に低減されるようになる。
トランスポート・プロトコルは、プロアクティブFECパケットを提供することによって、パケット損失/消失に対応することができる。FECパケットは信頼性を増し、ウィンドウ内の損失の予想において提供することができる。FECパケットはしたがって、パケット損失に対する「保険」を提供する。プロアクティブFECパケットの数を、消失率の適応的推定値に基づくようにすることができる。例えば、トランスポート・プロトコルは、データ・パケットのウィンドウ毎に消失率を推定することができる。ウィンドウ毎の推定されたデータ・パケット消失率に基づいて、トランスポート・プロトコルは、十分なウィンドウ細分性を維持しながら、プロアクティブFECデータ・パケットを可能にするようにMSSを調整することができる。
消失率を様々な方法で推定することができる。一実施例では、パケット消失率の推定値を、指数加重移動平均(EWMA)に基づいて決定することができる。例えば、EWMAパラメータを適応的に、より高い消失率の方へ偏らせることができる。例えば、以下の場合、
N=新たに測定された消失率;
α=(N)/(N*E);
β=1−α=(E)/(N+E)
推定消失率を、この実施例では、以下のように平均プロセスを通じて決定することができる。
E=推定消失率=α*N+β*E
もう1つの実施例では、αおよびβの値を定数(すなわち、偏りなし)にすることができる。例えば、もう1つの実施例では、αおよびβを0.5などの定数値に設定することができる。
データ・パケット消失率の推定値を、バイト単位のウィンドウ・サイズのためにデータ・パケットのウィンドウに追加されるべきプロアクティブFECデータ・パケットの数にマップするための、関数が提供される。この実施例では、消失率の推定値が得られ、次のブロック内のFECパケットの数を、この推定値に基づいて計算することができる。例えば、バイト単位のあるウィンドウ・サイズ(例えば、W)、および、現在の推定損失が与えられると、これらを使用して、ブロックのための保護の量を決定することができる。例示するための一実施例として、推定損失率が10%である場合、パケットの10%はプロアクティブFECパケットとなる。残りのパケットはデータ・パケットである。送信器は次いで、W*推定消失率に等しいバイト単位のプロアクティブFECパケットを決定することができ、ただし、Wはバイト単位のウィンドウ・サイズである。また、データ・パケットの数を、W*(1−推定消失率)に等しいように決定し、結果として、ブロック内でデータに対応するバイトと、プロアクティブFECに対応するバイトの間で分割することができる。それぞれデータおよびFECのバイトの数に基づいて、データ・パケットまたはセグメント、および、プロアクティブFECパケットまたはセグメントの数を、プロアクティブFECのバイトを現在のMSSによって除算した商である、プロアクティブFECパケット(「P」)の数として決定することができる。データ・パケットまたはセグメントの数(「K」)を、データのバイトの数を現在のMSSによって除算した商として決定することができる。K+Pは、「N」個のパケットのブロック全体を構成する。
したがって、本発明の一実施例では、ウィンドウ・サイズが最初に、輻輳制御アルゴリズムまたはメカニズムに基づいて決定される。これは、例えば、ネットワーク容量のそのフェア・シェアのエンド・システムの推定値に基づくことができる。MSSを次いで、ウィンドウ・サイズおよび所望の(または最小)ウィンドウ細分性に基づいて決定することができる。加えて、プロアクティブFECパケットを、ウィンドウ内のデータ・パケットの数に追加することができる。ウィンドウ内のデータ・パケットに追加されるプロアクティブFECパケットの数を、例えば、推定消失率に基づいて決定することができる。加えて、MSSを適合させ、または調整して、プロアクティブFECパケットを収容するように、および、ウィンドウ・サイズが与えられると所望の最小ウィンドウ細分性を維持するようにすることができる。パケットのウィンドウを次いで、ネットワークを介して受信器に送信することができ、パケットのウィンドウは、いくつかのデータ・パケットおよびいくつかのプロアクティブFECパケットを含む。加えて、いくつかのリアクティブFECパケットをまた、現在観察されるような動的状態、および/または、送信器で受信された最後のSACKにおいて観察されたパケット消失の数に基づいて、提供することもできる。例えば、受信器がブロックをデコードするとき、受信器は、どのパケットがうまく通り抜けたか、および、どのパケットがうまく通り抜けなかったかを知る。このブロックを完全にデコードすることができるようになる前に、いくつのパケット(データまたはFEC)が必要とされるかを決定する、変数を維持することができる。この数を、「ホール・サイズ」としてフィード・バックすることができる。リアクティブFECパケットの数は、ACKにおける「ホール・サイズ」によって決定される。例えば、ブロックのために送信されたプロアクティブFECパケット、ブロックのために送信されたリアクティブFECパケット、およびSACK再送信のカウントを使用して、生成されるリアクティブ・パケットの数を制限することができる。そうでない場合、送信器はある数のリアクティブ・パケットを送信し、これらが推定エラー率のためのホールをカバーするようにする。
図11は、データ・ブロック内のデータおよび/またはFECパケットを伝送する方法の一実施例を例示する流れ図である。この実施例では、ECN信号が検出される(工程1101)。ECN信号は、輻輳がネットワーク内にあることを指示する。この実施例では、各ウィンドウ内のMSS適合およびFECプロビジョニングを、ECNとは無関係に達成することができる。例えば、ECNが、MSS適合、プロアクティブFECプロビジョニング、および/または、dupackへのリアクティブFEC応答中に受信されないとき、ウィンドウは増大することができる。ECN信号はまた、ウィンドウを例えば1/2だけ低減させること、および/または、MSSを係数fによって低減させることもできる。したがって、トランスポート・プロトコルはMSSおよびFECパケットを、ネットワーク内の輻輳の存在に基づいて処理する。工程1102で、損失推定値が決定される。また、工程1103で、ウィンドウ・サイズが得られる。工程1103で得られたウィンドウ・サイズ、および、工程1102で決定された損失推定値に基づいて、プロアクティブFECパケットの数および/または比率が決定される。プロアクティブFECパケットのこの数を、例えば、工程1102で得られた損失推定値に基づいて、データ・パケットの数に関して決定することができる。工程1102で得られた損失推定値をまた使用して、ウィンドウ細分化を決定することもできる。工程1103で得られたウィンドウ・サイズ、および、工程1102で得られた損失推定値をまた使用して、ウィンドウ細分化(すなわち、ウィンドウ内のパケットまたはセグメントの数)を決定することもできる(工程1104)。損失推定値、ウィンドウ・サイズ、およびウィンドウ細分化に基づいて、MSSを適合させることができる(工程1105)。データ・ウィンドウはネットワーク内で、決定されたウィンドウ細分性で、計算された比のプロアクティブFECパケット対データ・パケットを含んで送信される(工程1106)。
図12に例示するような本発明のもう1つの実施例では、パケットのブロックが作成される。この実施例では、損失推定値は最初に「0」に設定され(工程1201)、ウィンドウは最初に最小ウィンドウ細分性(「G」)により設定される(工程1202)。損失推定値を続いて、ACKが受信されるとき、それに応じて調整することができる。Gは、ウィンドウ内のパケットまたはセグメントの最小数を示し、いかなる値に設定することもできる。一実施例では、Gは10に設定される。ウィンドウ内の少なくともG個のパケットまたはセグメントの各々は、最小(「minmss」)および最大(「mssmax」)数の間にすることができるバイトの数を含むことができる。一実施例では、minmssは200バイトであり、最大mssは1500バイトである。また、ブロック番号のためのパラメータ(「blocknumber」)は最初に「1」に設定されて、最初のブロックが指示される(工程1203)。blocknumberパラメータは、後続のブロックについて増分される。
この実施例では、現在のブロックのブロック・サイズは、ウィンドウのサイズ(「W」)に設定される(工程1204)。よって、ウィンドウ・サイズ(「W」)は、ブロック・サイズを決定するためのガイドとして使用される。一実施例では、Wは2000バイト以上である。ブロック内のパケットまたはセグメントの数は「N」(すなわち、ブロック内のパケットの総数)である。ブロック内のこれらのN個のパケットは、いくつかのデータ・パケット(「K」)およびいくつかのプロアクティブFECパケット(「P」)に分割される(工程1205)。プロアクティブFECパケットの数(「P」)を、ブロック内のデータ・パケットの数(「K」)に関連して推定損失に基づくようにすることができる。一実施例として、損失が10%となるように推定される場合、プロアクティブFECパケットの数(「P」)は、パケットまたはセグメントの総数の約10%に設定される。一実施例では、プロアクティブFECパケットのための初期推定値は50%である。この実施例では、最初のブロックは、50%の初期の保守的な推定損失率により、5個のプロアクティブFECパケットおよび5個のデータ・パケット、総数10個のパケットを有することができる(この実施例では、損失推定値はプロアクティブFECパケットの%に等しい)。この実施例では、未使用のプロアクティブFECパケットを「オーバーヘッド」と見なすことができる。オーバーヘッドを、後続の損失推定値により低減することができる。
ブロック内のN個のパケット(K個のデータ・パケットおよびP個のプロアクティブFECパケットを含む)は、ネットワークを通じて送信される(工程1206)。ブロックの送信の後、次のブロックのためのKおよびPのための値が、損失推定値の現在の値およびウィンドウ・サイズWに基づいて決定される(工程1207)。ACKが受信器から受信されるとき、送信器はそれに応じて損失推定値を更新する(工程1208)。このプロセスは、接続が終了されるまで、継続することができる。
ブロック・サイズを、現在のウィンドウ・サイズによって決定することができる。ブロックの送信が完了された後、次のブロックが作成される。1つの例示的実施例では、ウィンドウが(ACKを受信すると)スライドして、いかなるブロック内でもないパケットの送信を可能にする場合、これは新しいブロックの形成をトリガする。これは、現在のブロックが送信される場合でも、発生する可能性がある。一実施例では、パケット/セグメントが再送信される場合、再送信されたパケット/セグメントはなお、最初に割り当てられたものと同じブロック番号に割り当てられる。ブロックの状態をさらに状態テーブル内で維持することができる。したがって、状態テーブルを検索して、いかなる数のブロックの状態についての情報をも得ることができる。
送信器は、いかなる数のモードにおいても動作することができる。例えば、送信器はデータ・モードで動作することができ、このモードでは、データ・パケットがブロック内で送信される。また、送信器はプロアクティブFEC(PFEC)モードで動作することができ、このモードでは、K個のデータ・パケットが送信された後、送信器はプロアクティブFEC(PFEC)パケットを送信することができる。K+P個のパケットが送信された後、次のブロックが作成される。タイムアウトまたは再送信が発生する場合、システムは現在のブロックの状態をフリーズする場合があるが、より古いパケット/セグメントが送信されて、正しいパケット/セグメントが送信されることが保証される。次いで、現在のブロックのためのカウントは増分されない。加えて、送信器は、第3のdupackが受信されるとき、高速リカバリを実施することができる。重複ACKが受信される場合、送信器はリアクティブFECパケットを送信することができる。この実施例では、ACKは、異なるブロック、すなわち、受信器によって最後に受信されたパケットに対応するブロック、および、ACKフィールド内のACK番号に対応するブロック(より古いブロックである可能性がある)のための、ホール・サイズを含むことができる。ホールは、ブロックを完全に再構築するために受信器でなお必要とされたパケット/セグメントの数である。送信器は、送信器にフィード・バックされたホール・サイズ情報に応答して、リアクティブFECパケットを送信することができる。
ウィンドウ細分性を調整する一実施例では、パケットの一時サイズ(すなわち、「tmpsize」)およびMSSのための最大値(すなわち、「maxmss」)に対応する、変数が確立される。図13は、ウィンドウ細分性を得るか、または調整する一実施例を例示する流れ図である。この実施例では、輻輳ウィンドウがバイト単位で得られる(例えば、「wndinbytes」)(工程1210)。ウィンドウ内に収容されたセグメントまたはパケットの数(「tmpsegs」)は、バイト単位の輻輳ウィンドウ(「wndinbytes」)をパケットの一時サイズ(「tmpsize」)によって除算した商として決定される(工程1211)。tmpsizeは、最小ウィンドウ細分性(「G」)と比較される。tmpsizeが最小ウィンドウ細分性以下である場合(工程1212のYES分岐)、tmpsizeが低減され(工程1214)、tmpsegsは、更新されたtmpsizeにより再計算される(工程1215)。tmpsizeがG以下になるとき(工程1212のNO)、tmpsizeおよびtmpsegsのための値が、それぞれセグメントのサイズおよびセグメントの数として出力される(工程1213)。
図14は、ウィンドウ細分性を得るか、または調整するもう1つの実施例を例示する流れ図である。ウィンドウ細分性を調整するこの実施例では、tmpsize変数は現在のMSS値に設定される(工程1220)。Tmpsegsは、バイト単位の輻輳ウィンドウ(「wndinbytes」)をtmpsizeによって除算したものとして決定される(工程1221)。tmpsizeの値は次いで、「stepvalue」だけ増分され(工程1222)、stepvalueは、それによってMSS値を1つのパス内で増大させることができるバイトの数を示す。一実施例では、stepvalueは約200バイトに等しい。tmpsegsの値が次いで、更新されたtmpsize値により再計算される(工程1223)。セグメントの数(tmpsegs)が最小ウィンドウ細分性(G)以下であり(工程1224の「YES」分岐)、パケット/セグメント・サイズ(tmpsize)がMSSのための最大値(「maxmss」)以下である(工程1225の「YES」分岐)場合、MSSはtmpsizeに設定され、ウィンドウ内のパケットまたはセグメントの数はtmpsegsに設定される(工程1227)。そうでない場合(工程1224または工程1225のいずれかの「NO」分岐)、MSSおよびウィンドウ内のパケットまたはセグメントの数は更新されない(工程1226)。
ウィンドウ増大ビヘイビアのもう1つの実施例では、ECNが受信され(輻輳の存在を指示する)、パケット/セグメント・サイズがそれに応じて低減される。しかし、パケット・サイズがMSSのための最小値(「MIN_MSS」)未満となる場合、ウィンドウ・サイズ(セグメント単位)は、その代わりに最小ウィンドウ細分性を受けてカットされる。例えば、ウィンドウ内で最初のECNを受信すると、バイト単位のウィンドウ・サイズがカットされる場合がある。この実施例では、MSS適合ポリシーはセグメントの単位におけるウィンドウ・サイズに影響を及ぼすが、バイトには影響を及ぼさない場合がある。ウィンドウ増大中に、バイト単位のウィンドウ・サイズを決定し、バイト単位の所定のしきい値と比較して、プロセスがslowstartにあるかどうかを判断することができる。一実施例では、タイムアウトの後、ウィンドウは200バイトの10個のパケットにサイズ変更される。もう1つの実施例では、ECNが受信されるとき、バイト単位のウィンドウ・サイズが半分にカットされる場合があり、このカットは、パケット・サイズを半分だけ、またはセグメントの数を半分だけカットすることによって、実施される場合がある。
図15は、リアクティブFECパケットの送信の一実施例を例示する流れ図である。この実施例では、送信器がACKを受信し、ACKを受信器からのdupackにすることができる(工程1230)。それにおいて対応するACKが受信された、現在のブロックのため、および最後のブロックのためのホール・サイズを決定することができる。これらの値を送信器における状態マシン内で更新することができる。dupackが受信される場合(工程1230)、リアクティブ・パケットFECパケットを送信することができる(工程1234)。リアクティブFECパケットの送信では、ブロックから送信されたプロアクティブFEC、リアクティブFEC、および/またはSACKパケットのカウントが得られる(工程1231)。FECまたは再送信の期待数を計算することができる(工程1232)。現在のブロックから送信されるべきリアクティブ・パケットの数を、様々な要素から決定することができる(工程1237)。例えば、ブロックから送信されるべきリアクティブ・パケットの数を、受信器に到達するように期待されたプロアクティブFECパケットの数に基づくようにすることができる。この実施例では、受信器に到達するように期待されたプロアクティブ・パケットの数は、損失推定値を1から減算し、ブロックから送信されたプロアクティブFECパケットの数によって乗算して、「バックオフされた」PFEC値を得ることによって、推定することができる。バックオフされたPFEC値をさらに使用して、現在のブロックから送信されるべきリアクティブFECパケットの数を決定することができる。
もう1つの実施例では、リアクティブFECパケットの数を、受信器に到達するように期待された再送信の数、すなわち、「バックオフされた」再送信の数に基づくようにすることができる。この実施例では、受信器に到達するように期待された再送信の数を、損失推定値を決定し、損失推定値を1から減算し、送信された再送信の数によって乗算することによって、推定することができる。よって、現在のブロックから送信するべきリアクティブFECパケットの数を、それに限定されないが、バックオフされたPFEC、バックオフされた再送信、または、ブロック内のパケットの総数、ブロック内のデータ・パケットの数、ブロック内のプロアクティブFECパケットの数、もしくはブロックから送信されたリアクティブ・パケットの数など、他の変数のいずれか1つまたは組み合わせなど、様々な変数のいずれかの関数に基づいて推定することができる。
リアクティブFECの総数(「R」)が、ブロックから送信されるべきリアクティブFECパケットの数以下である場合(工程1233の「YES」分岐)、リアクティブ・パケットが現在のブロックから送信され(工程1234)、現在のブロックから送信されたリアクティブFECパケットの数が、損失率に鑑みて更新される(工程1235)。したがって、受信器に到達しているFECおよび再送信の期待数が計算される。
受信器から受信された各ACKは、現在の着信パケットに対応するブロック(「現在の」ブロック)、および、それに対して累積ACKが送信中であるブロックに対応するブロック(「最後の」ブロック)の、ホール・サイズについての情報を含むことができる。一実施例として、受信器はブロック10からのパケット番号212を待機する。ブロック11は完全にデコードされており、ブロック12からのパケット番号243は次のパケットである。ブロック10のためのホール・サイズは、例えば2であり、ブロック12のためのホール・サイズは、例えば0である。したがって、この実施例では、受信器からのACKは、ブロック10のための2のホール・サイズ、および、ブロック12のための0のホール・サイズについての情報を含む。
送信器がACKを受信するとき、送信器はパケット内の「フェーズ3フラグ」をチェックすることができ、このフラグは、送信器からのすべてのリアクティブFECパケット上で設定される。フェーズ3フラグをヘッダ内で設定することができ、エコー・バックすることができ、これはさらなるリアクティブFECパケットをトリガすることができる。送信器がフェーズ3フラグを識別するとき、送信器はリアクティブFECパケットを送信する。これは、パケットの安定したストリームを保証する。dupackが検出されるとき、リアクティブFECパケットを、送信器で受信されたSACKベースの肯定応答内の指示に基づいて、必要に応じて「現在の」ブロックおよび「最後の」ブロックから送信することができる。このようにして送信されるリアクティブ・パケットの数は、様々な要素に基づいて決定される。例えば、送信器は最初に、受信器に到達しているように期待されたプロアクティブFECパケットの数を推定することができる。この値を0に設定することができ、または、損失推定値を使用して決定することができる(例えば、期待されたプロアクティブFEC=(1−損失率)*pfec_sent)。
送信器は、これまでに受信されたSACK再送信の数、これまでにブロックから送信されたリアクティブFECパケットの数、および、ブロックのためのホール・サイズを知ることができる。ホール・サイズを累積にして(すなわち、低減することができない)、増大または低減する再送信またはホール・サイズによって満たされたホールを計上することを回避することができる。SACK再送信およびPFECパケットが「バックオフ」された後、送信器は十分なリアクティブ・パケットを送信して、ホール・サイズを満たす。これはまた、損失推定値を計上することもできる。例えば、バックオフした後、5個のホールが満たされなければならず、損失推定値が50%である場合、10個のパケットが送信されるようになる。したがって、受信器は、それが受信している再送信および元の送信の数を知ることができる。もう1つの実施例では、受信器は、送信器から送信された再送信の数を知ることができる。
図16は、本発明において受信器でデコードする方法の一実施例を例示する流れ図である。この実施例では、着信パケットが、すでにデコードされたブロックのためのものである場合(工程1241の「YES」分岐)、ブロックに属する着信パケット(工程1240)は廃棄され(工程1246)、プロセスは終了される(工程1255)。パケットが、今までのところはデコードされていないブロックに属する場合(工程1241の「NO」分岐)、ブロックが以前に見られていない場合(工程1242の「YES」分岐)、ブロックのための構造が初期化され、割り振られる(工程1248)。着信パケットを、パケットのタイプに基づいて処理することができる。パケットがTCPタイプのパケットである場合(工程1243の「YES」分岐)、パケットはブロックのためのパケットのリストに挿入され、パケットのリストは順序通りに維持される(工程1249)。TCPパケットのためのACKが次いで送信/受信される(工程1250)。パケットがFECタイプのパケットである場合(工程1245の「YES」分岐)、パケットは、デコードのためのブロックからの他のパケットと共に保存され(工程1244)、ACKが、受信されたFECパケットのために送信される(工程1247)。ブロックからのN個のパケットのうちK個が得られている場合(工程1251の「YES」分岐)、ブロック全体がデコードされ(工程1252)、これはまた、いかなる欠落パケットをも、そのブロックのために受信されたFECパケットにより再構築することもできる。新しいデータ・パケットを、トランスポート・プロトコルに従ってさらに処理することができる(工程1253)。したがって、この実施例では、FECパケットのためのACKは、最後のデータ・パケットのためのACKが送信されることを指示し、これは、この実施例ではFECパケットが連続番号を有していないからである。
以下の実施例では、損失推定値が決定される。この実施例では、最初のプロアクティブFECパケットが受信され、サンプル損失推定値が使用されて、平均損失推定値が更新される。各ブロックのための損失サンプルを決定する一実施例は、ブロック内のパケットの総数、および、受信器デコード・ブロック内に存在する元の送信の総数を得ることを含む(リストをウォークすること、および、ヘッダ内のorig_transフラグをチェックすることによって、得ることができる)。失われたパケットの数は、パケットの総数から元のパケットの数を差し引いたものとして決定される。損失サンプルは、失われたパケットの数を、受信器デコード・ブロック内に存在する元の送信の総数によって除算したものとして、決定することができる。新しい損失推定値は、EWMA式を使用して決定され、ただし、αおよびβ=0.5である。損失推定値を次いで、受信器から送信器へのACKにおいてエコー・バックすることができる。
以下の実施例では、ブロックのためのホール・サイズが決定される。この実施例では、パケットが受信され、対応するブロックのために到着しているべきであるパケットの数が決定される。一実施例として、このブロックが100で開始し、ブロック内の最高パケットが105である場合、6個のパケットがブロック内で受信されているべきである。一実施例では、元の送信内のパケットの数をカウントすることができる。代替実施例では、元の送信および再送信を含む、ブロック内のパケットの数が決定される。この実施例では、ホール・サイズは、これらの2つの数の間の差に基づいて決定される。ホール・サイズは受信器デコード構造内に格納され、この構造がアクセスされ、最後および現在のブロックのためのホール・サイズをACKに追加することができる。この決定はまたFECパケットにも適用されるが、パケットの総数は同じである。例えば、送信器は10のウィンドウで開始し、データおよびプロアクティブFECパケットのための基本セルフクロッキング・ビヘイビアに従うことができる。もう1つの実施例では、ホール・サイズは、元の、および再送信されたパケットの間の差ではなく、ブロックが100で開始し、我々が元の送信である100、102および103を有し、我々が109および110を受信しており、そのうちの109が再送信であり、110が元のものであった場合、我々は5パケットのホール・サイズを有する(104〜108)ようになる。一実施例では、再送信されたパケット109が無視され、ホール・サイズは6である。再送信されたパケットを無視することによって、我々はホール・サイズを増大させて、より多くのリアクティブ・パケットを送信する。
以下は、送信器プロアクティブFECアルゴリズムのもう1つの実施例であり、ただし、Gは最小ウィンドウ細分性であり、MSSMAXは、可能にされた最大MSSであり、newは新しい測定された消失率であり、Pはブロック内のPFECパケットの数であり、MSS_1は一時変数であり、MSSMINは、可能にされた最小MSSであり、MSSは、現在の使用されるMSSであり、Eは平均消失率推定値であり、Rはブロック内のRFECパケットの数であり、Wはパケット内の輻輳ウィンドウである。
P=f(E)
MSS_1=(W*MSS*E)/P
IF(MSS_1<MSSMIN
W=(W*MSS)/MSSMIN
MSS=MSSMIN
IF((W*E)<1)
R=1
ELSE
R=W*E
ELSE
IF(MSS_1>MSSMAX
IF(W/MSSMAX>G)
W=(W*MSS)/MSSMAX
MSS=MSSMAX
R=W*E
ELSE
W=G
MSS=W/G
R=W*E
ELSE
IF(W/MSS_1>G)
W=(W*MSS)/MSS_1
MSS=MSS_1
R=P
ELSE
W=G
MSS=W/G
R=W*E
以下は、受信器FECデコーダ方法の一実施例である。
IF(データ・パケット)
IF(次の順序)
IF(以前に処理されていない保存されたパケットがブロック内にない)
SACKパケットを処理する
ELSE
IF((現在のブロック内のパケット)AND(失われたパケット<P))
パケットを保存する
ELSE
すべての保存されたSACKパケットを処理する
ELSE
IF((現在のブロック内のパケット)AND(失われたパケット<P))
パケットを保存する
ELSE
すべての保存されたSACKパケットを処理する
ELSE//冗長パケット
IF(いずれかの保存されたパケット)
IF((現在のブロック内のパケット)AND(失われたパケット<P))
すべてのSACKパケットをリカバリおよび処理する
ELSE
IF((ブロック内の最後のパケット)OR(新しいブロック内のパケット))
すべての保存されたSACKパケットを処理する
ELSE
パケットを保存する
本発明は、本明細書で開示されたいかなる新規な特徴または特徴の組み合わせを明示的に、または、そのいかなる一般化をも含む。本発明を、本発明を実行する現在好ましい態様を含む特定の実施例に関して説明したが、上述のシステムおよび技術の多数の変形形態および入れ替えがあることは、当業者には理解されよう。したがって、本発明の精神および範囲は、付属の特許請求の範囲に示すように幅広く解釈されるべきである。
本発明の様々な態様を実施することができるネットワークの一実施例を例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、適応的チャネル容量を有するデータ・ブロック内で送信されたデータ・パケットの一実施例を例示するブロック図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、適応的チャネル容量を有するデータ・ブロック内で送信されたデータ・パケットの一実施例を例示するブロック図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、適応的チャネル容量を有するデータ・ブロック内で送信されたデータ・パケットの一実施例を例示するブロック図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、LT−TCP(損失耐性のあるTCP)のコンポーネントを例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、データ・パケットの送信およびタイムアウトの一実施例を例示する図である。 全伝送損失の一実施例を例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、タイムアウトおよびデータ・パケットの再送信におけるウィンドウ細分性の効果の一実施例を例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、タイムアウトおよびデータ・パケットの再送信におけるウィンドウ細分性の効果の一実施例を例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、FECデータ・パケットのリカバリの一実施例を例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、プロアクティブおよびリアクティブFECを含むデータ・パケットのブロックの一実施例を例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、送信におけるプロアクティブFECデータ・パケットの一実施例の図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、損失データ・パケットの再送信の一実施例の図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、リアクティブFECデータ・パケットを使用して、データを受信器に再送信することができる一実施例を例示する図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、データ・ブロック内のデータおよび/またはFECパケットを送信する方法の一実施例を例示する流れ図である。 データ・ブロック内のデータ及び/又はFECパケットを送信する方法の他の実施例を示す流れ図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、ウィンドウ細分性を得るか、または調整する一実施例を例示する流れ図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、ウィンドウ細分性を得るか、または調整するもう1つの実施例を例示する流れ図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、リアクティブFECパケットの送信の一実施例を例示する流れ図である。 本発明の1つまたは複数の例示的実施形態を実施することができる、受信器でデコードする方法の一実施例を例示する流れ図である。

Claims (33)

  1. パケットを含むデータ・ウィンドウを通信ネットワーク内で送信するための方法であって、前記データ・ウィンドウはウィンドウ・サイズを有し、
    パケット消失率を推定する工程と、
    前記データ・ウィンドウのためのプロアクティブFECパケットの数を、前記推定されたパケット消失率に基づいて決定する工程と、
    前記データ・ウィンドウ内の前記パケットのためのパケット・サイズを、前記データ・ウィンドウの前記ウィンドウ・サイズ、および、前記決定されたプロアクティブFECパケットの数に基づいて決定する工程と、
    前記データ・ウィンドウを送信する工程であって、前記送信されたデータ・ウィンドウ内の前記パケットは、前記決定されたパケット・サイズに対応するサイズを有し、前記決定されたプロアクティブFECパケットの数を含む工程とを備える方法。
  2. パケット・サイズを決定する前記工程は、前記ウィンドウの細分性を決定する工程を備える、請求項1に記載の方法。
  3. パケット・サイズを決定する前記工程は、前記データ・パケットのための前記パケット・サイズを係数fによって低減する工程を備え、前記方法は、明示的輻輳通知(ECN)を受信する工程をさらに備え、前記データ・パケットのための前記パケット・サイズを低減する工程は前記ECNに応答する、請求項1に記載の方法。
  4. 前記送信されたデータ・ウィンドウはN個のデータ・パケットを含み、前記Nは、データ・パケットの数、および、前記決定されたプロアクティブFECパケットの数の和に等しく、Nは、前記決定されたパケット・サイズに基づいて決定される、請求項1に記載の方法。
  5. プロアクティブFECパケットの数を決定する前記工程は、
    前記データ・ウィンドウ内のプロアクティブFECバイトの量を、前記ウィンドウ・サイズおよび前記推定されたパケット消失率の積として得る工程と、
    前記プロアクティブFECパケットの数を、前記プロアクティブFECバイトの量を現在のパケット・サイズによって除算した商として決定する工程とを備える、請求項1に記載の方法。
  6. 前記データ・ウィンドウ内のデータ・バイトの量を、前記ウィンドウ・サイズ、および、1と前記推定されたパケット消失率の間の差の積として得る工程と、
    データ・パケットの数を、前記データ・ウィンドウ内の前記データ・バイトの量を前記現在のパケット・サイズによって除算した商として決定する工程とによって、データ・パケットの数を決定する工程をさらに備える、請求項5に記載の方法。
  7. パケット・サイズを決定する前記工程は、前記パケット・サイズを、第1のサイズから、前記第1のサイズより小さい第2のサイズへ適合させる工程を備え、パケット・サイズを決定する前記工程は、前記データ・ウィンドウのウィンドウ細分性を増す工程を含む、請求項1に記載の方法。
  8. 重複肯定応答を受信する工程と、
    前記重複肯定応答に応答して、リアクティブFECパケットを送信する工程とをさらに備える、請求項1に記載の方法。
  9. 送信するべきリアクティブFECパケットの数を、受信されるように期待されたパケットの数に基づいて決定する工程をさらに備える、請求項8に記載の方法。
  10. 送信するべきリアクティブFECパケットの数を、受信されるように期待された前記プロアクティブFECパケットの数、および、前記推定されたパケット消失率に基づいて、決定する工程をさらに備える、請求項8に記載の方法。
  11. 前記データ・ウィンドウのウィンドウ細分性を、前記データ・ウィンドウ内の前記パケットの前記サイズの調整、および、前記データ・ウィンドウ内の前記プロアクティブFECパケットの数のうち1つに基づいて、調整する工程をさらに備える、請求項1に記載の方法。
  12. データ・ブロックに対応するリアクティブ・パケットを送信するためのトランシーバであって、
    重複肯定応答信号を受信するための受信器と、
    前記データ内のパケットに対応する少なくとも1つの値を得て、受信器で受信されているべきパケットの期待数を決定し、リアクティブ・パケット・パラメータを、前記少なくとも1つの値および前記パケットの期待数のうち1つに基づいて設定するためのプロトコルと、
    プロアクティブFECパケットの数が前記リアクティブ・パケット・パラメータ以下である場合、リアクティブFECパケットを送信するための送信器とを備えるトランシーバ。
  13. 前記少なくとも1つの値は少なくとも、前記データ・ブロックから送信されたプロアクティブFECパケットの数に対応する第1の値、前記データ・ブロックに対応する送信されたリアクティブFECパケットの数に対応する第2の値、または、前記データ・ブロックに対応する送信されたSACKパケットの数に対応する第3の値を備える、請求項12に記載のトランシーバ。
  14. 前記プロトコルはさらに、受信されるように期待されたプロアクティブFECパケットの数を決定し、前記プロアクティブFECパケットの数を決定することは、損失推定値を決定すること、および、前記データ・ブロック内の前記プロアクティブFECパケットの数と、前記データ・ブロック内の前記プロアクティブFECパケットの数および前記損失推定値の積の間の、差を得ることを備える、請求項13に記載のトランシーバ。
  15. 前記プロトコルはさらに、受信されるように期待された再送信の数を決定し、前記再送信の数を決定することは、損失推定値を決定すること、および、送信された再送信の数と、前記送信された再送信の数および前記損失推定値の積の間の、差を得ることを備える、請求項13に記載のトランシーバ。
  16. 前記プロトコルはさらに、前記送信されたリアクティブ・パケットの数を、損失推定値に基づいて増し、前記送信されたリアクティブ・パケットの数を増すことは、送信されるべきリアクティブ・パケットの数を、前記送信されたリアクティブ・パケットの数と、前記送信されたリアクティブ・パケットの数および前記損失推定値の積の間の、差に等しい量だけ増すことを備える、請求項13に記載のトランシーバ。
  17. 少なくとも1つのパケットを備えるデータ・ブロックを受信する方法であって、
    パケットを受信する工程と、
    着信パケットに対応するデータ・ブロックを決定する工程と、
    前記パケットに対応する前記データ・ブロックがすでにデコードされている場合、前記パケットを廃棄し、そうでない場合、前記データ・ブロックのためのデコード構造を初期化および割り振る工程と、
    前記ブロックのN個のパケットのうちK個のパケットが受信されているとき、前記データ・ブロックをデコードする工程であって、Nは、前記データ・ブロック内のパケットの数であり、Kは、前記データ・ブロック内のデータ・パケットの数である工程とを備える方法。
  18. 前記パケットを、前記データ・ブロックに関連付けられた順次パケットのリストに挿入する工程をさらに備える、請求項17に記載の方法。
  19. いくつかのパケットのデータ・ウィンドウを含むデータ・ブロックを送信する方法であって、
    損失推定値を設定する工程と、
    前記データ・ウィンドウ内のパケットの数を、最小ウィンドウ細分性に対応するパケットの第1の数に設定する工程であって、各パケットは第1の数のバイトを含む工程と、
    前記データ・ブロックのブロック・サイズをウィンドウ・サイズに設定する工程であって、前記ブロック内のパケットの数はNである工程と、
    前記ブロック内の前記N個のパケットを、データ・パケットの第1のグループおよびプロアクティブFECパケットの第2のグループへ、前記損失推定値に基づいて分割する工程と、
    前記データ・ブロックを送信する工程であって、前記データ・ブロックは、前記データ・パケットの第1のグループおよび前記プロアクティブFECパケットの第2のグループを含む工程とを備える方法。
  20. 前記損失推定値を更新する工程、および、データ・パケットの数およびプロアクティブFECパケットの数を、前記更新された損失推定値およびウィンドウ・サイズに基づいて再計算する工程をさらに備える、請求項19に記載の方法。
  21. 前記再計算されたデータ・パケットの数および前記再計算されたプロアクティブFECパケットの数を備える、第2のデータ・ブロックを送信する工程をさらに備える、請求項20に記載の方法。
  22. 前記損失推定値を決定する工程は、
    損失推定パラメータを備える肯定応答信号を受信する工程と、
    前記損失推定値を、前記損失推定パラメータに基づいて更新する工程とを備える、請求項20に記載の方法。
  23. 前記ブロック・サイズを設定する前記工程は、
    前記データ・ウィンドウのサイズを得る工程と、
    前記データ・ウィンドウ内に収容されることが可能なパケットの数を、前記データ・ウィンドウの前記サイズに基づいて決定する工程と、
    前記データ・ウィンドウ内に収容されることが可能なパケットの数を更新する工程と、
    Nを、前記更新されたパケットの数に対応するパケットの数に等しく設定する工程とを備える、請求項19に記載の方法。
  24. 前記更新する工程を、第1の値が前記最小ウィンドウ細分性より大きくなるまで繰り返す工程をさらに備える、請求項23に記載の方法。
  25. パケットの数を決定する前記工程は、
    パケットの最大サイズに対応する第1の値を決定する工程と、
    前記データ・ウィンドウの前記サイズを前記第1の値によって除算する工程とを備え、
    パケットの数を更新する前記工程は、
    前記第1の値の値を所定の量だけ低減する工程と、
    前記第1の値が最小ウィンドウ細分性以下である場合、前記データ・ウィンドウの前記サイズを、前記低減された第1の値によって除算する工程とを備え、
    前記更新する工程は、前記第1の値が前記最小ウィンドウ細分性より大きくなるまで繰り返される、請求項23に記載の方法。
  26. 前記データ・ウィンドウ内に収容されることが可能なパケットの数を決定する前記工程は、
    パケットの最大サイズに対応する第1の値を決定する工程と、
    前記データ・ウィンドウの前記サイズを前記第1の値によって除算する工程とを備える、請求項23に記載の方法。
  27. パケットの数を更新する前記工程は、
    パケットの最大サイズに対応する第1の値の値を所定の量だけ低減する工程と、
    前記データ・ウィンドウの前記サイズを、前記低減された第1の値によって除算する工程とを備える、請求項23に記載の方法。
  28. 低減および除算する前記工程は、前記第1の値が最小ウィンドウ細分性以下である場合にのみ実行される、請求項27に記載の方法。
  29. 前記ブロック・サイズを設定する前記工程は、
    前記データ・ウィンドウの最大セグメント・サイズ(MSS)を得る工程と、
    前記データ・ウィンドウ内に収容されることが可能なパケットの数を、前記MSSに基づいて決定する工程と、
    前記データ・ウィンドウ内に収容されることが可能なパケットの数を更新する工程と、
    前記更新されたパケットの数に対応するパケットの数を含むデータ・ウィンドウを提供する工程とを備える、請求項19に記載の方法。
  30. 前記データ・ウィンドウ内に収容されることが可能なパケットの数を決定する前記工程は、
    前記MSSに対応する第1の値を決定する工程と、
    前記データ・ウィンドウのサイズを前記第1の値によって除算する工程とを備える、請求項29に記載の方法。
  31. 前記データ・ウィンドウ内に収容されることが可能なパケットの数を更新する前記工程は、
    前記MSSに対応する第1の値を所定の量だけ増分する工程と、
    前記データ・ウィンドウのサイズを前記増分された第1の値によって除算する工程とを備える、請求項29に記載の方法。
  32. パケットの数を更新する前記工程は、
    前記データ・ウィンドウ内に収容されることが可能なパケットの前記更新された数が前記最小ウィンドウ細分性未満であり、前記増分された第1の値が、前記データ・ウィンドウ内のパケットの最大サイズ以下である場合、前記MSSを前記増分された第1の値に設定する工程をさらに備える、請求項31に記載の方法。
  33. 前記データ・ウィンドウ内に収容されることが可能なパケットの数を決定する前記工程は、
    前記MSSに対応する第1の値を決定する工程と、
    前記データ・ウィンドウのサイズを前記第1の値によって除算する工程とを備え、
    前記データ・ウィンドウ内に収容されることが可能なパケットの数を更新する前記工程は、
    前記MSSに対応する第1の値を所定の量だけ増分する工程と、
    前記データ・ウィンドウのサイズを前記増分された第1の値によって除算する工程と、
    前記データ・ウィンドウ内に収容されることが可能なパケットの前記更新された数が最小ウィンドウ細分性未満であり、前記増分された第1の値が、前記データ・ウィンドウ内のパケットの最大サイズ以下である場合、前記MSSを前記増分された第1の値に設定する工程とを備える、請求項29に記載の方法。
JP2006082131A 2005-03-30 2006-03-24 損失耐性のある伝送制御プロトコル Expired - Fee Related JP4368863B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US66639805P 2005-03-30 2005-03-30
US11/290,807 US7366132B2 (en) 2005-03-30 2005-12-01 Loss tolerant transmission control protocol
US11/290,810 US20060250949A1 (en) 2005-03-30 2005-12-01 Loss tolerant transmission control protocol
US11/290,809 US7889654B2 (en) 2005-03-30 2005-12-01 Loss tolerant transmission control protocol

Publications (2)

Publication Number Publication Date
JP2006287928A true JP2006287928A (ja) 2006-10-19
JP4368863B2 JP4368863B2 (ja) 2009-11-18

Family

ID=36216947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006082131A Expired - Fee Related JP4368863B2 (ja) 2005-03-30 2006-03-24 損失耐性のある伝送制御プロトコル

Country Status (5)

Country Link
EP (2) EP2037615A1 (ja)
JP (1) JP4368863B2 (ja)
CA (1) CA2539367A1 (ja)
DE (1) DE602006003926D1 (ja)
HK (1) HK1094112A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010187097A (ja) * 2009-02-10 2010-08-26 Nec Corp 映像品質推定装置、映像品質推定方法およびプログラム
JP2012510767A (ja) * 2008-12-03 2012-05-10 アルカテル−ルーセント 誤り制御オンデマンド
JP2012222809A (ja) * 2011-04-04 2012-11-12 Samsung Electro-Mechanics Co Ltd データフレームの再送信減少方法及びこのための受信ノード
JP2013527705A (ja) * 2010-04-29 2013-06-27 オン−ランプ ワイアレス インコーポレイテッド 前方誤り訂正媒体アクセス制御システム
JP2016027698A (ja) * 2014-06-27 2016-02-18 日本電信電話株式会社 データ転送システム、中継ノード及びデータ転送方法
JP2017539165A (ja) * 2014-12-15 2017-12-28 クアルコム,インコーポレイテッド バースト性干渉の軽減

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2134043A4 (en) * 2007-03-09 2012-02-22 Fujitsu Ltd RELAY DEVICE, CONTROL METHOD, INTER-ATM COMMUNICATION SUPPORT SYSTEM, AND COMPUTER PROGRAM
US8819110B2 (en) 2007-04-16 2014-08-26 Blackberry Limited System and method for real-time data transmission using adaptive time compression
EP1983675A1 (en) * 2007-04-16 2008-10-22 Research In Motion Limited System and method for real-time data transmission using adaptive time compression
CN101719809B (zh) * 2009-11-25 2012-10-10 中兴通讯股份有限公司 一种媒体数据包丢包恢复的方法及系统
US9515775B2 (en) 2012-11-08 2016-12-06 Instart Logic, Inc. Method and apparatus for improving the performance of TCP and other network protocols in a communication network
EP2918032A4 (en) 2012-11-08 2016-05-11 Factor Comm Corp Q METHOD AND APPARATUS FOR IMPROVING THE PERFORMANCE OF TCP AND OTHER NETWORK PROTOCOLS IN A COMMUNICATIONS NETWORK USING PROXY SERVERS
EP3389206B1 (en) * 2017-04-14 2020-03-04 Nokia Solutions and Networks Oy Multipath error correction
CN114070458B (zh) * 2020-08-04 2023-07-11 成都鼎桥通信技术有限公司 数据传输方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2216752A (en) * 1988-03-02 1989-10-11 Cyclotomics Inc Forward error correction in packet switched communications
US5717689A (en) * 1995-10-10 1998-02-10 Lucent Technologies Inc. Data link layer protocol for transport of ATM cells over a wireless link
US6278716B1 (en) * 1998-03-23 2001-08-21 University Of Massachusetts Multicast with proactive forward error correction
JP2003515269A (ja) * 1999-11-16 2003-04-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 送信システム
EP1120932A1 (de) * 2000-01-28 2001-08-01 Abb Research Ltd. Datenübertragung mit variabler Paketlänge

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012510767A (ja) * 2008-12-03 2012-05-10 アルカテル−ルーセント 誤り制御オンデマンド
JP2010187097A (ja) * 2009-02-10 2010-08-26 Nec Corp 映像品質推定装置、映像品質推定方法およびプログラム
JP4544435B2 (ja) * 2009-02-10 2010-09-15 日本電気株式会社 映像品質推定装置、映像品質推定方法およびプログラム
JP2013527705A (ja) * 2010-04-29 2013-06-27 オン−ランプ ワイアレス インコーポレイテッド 前方誤り訂正媒体アクセス制御システム
JP2012222809A (ja) * 2011-04-04 2012-11-12 Samsung Electro-Mechanics Co Ltd データフレームの再送信減少方法及びこのための受信ノード
JP2016027698A (ja) * 2014-06-27 2016-02-18 日本電信電話株式会社 データ転送システム、中継ノード及びデータ転送方法
JP2017539165A (ja) * 2014-12-15 2017-12-28 クアルコム,インコーポレイテッド バースト性干渉の軽減

Also Published As

Publication number Publication date
DE602006003926D1 (de) 2009-01-15
EP1708400B1 (en) 2008-12-03
CA2539367A1 (en) 2006-09-30
HK1094112A1 (en) 2007-03-16
EP2037615A1 (en) 2009-03-18
EP1708400A1 (en) 2006-10-04
JP4368863B2 (ja) 2009-11-18

Similar Documents

Publication Publication Date Title
JP4368863B2 (ja) 損失耐性のある伝送制御プロトコル
US7889654B2 (en) Loss tolerant transmission control protocol
US7366132B2 (en) Loss tolerant transmission control protocol
US20060250949A1 (en) Loss tolerant transmission control protocol
JP5425397B2 (ja) 適応型前方誤り訂正を行う装置及び方法
KR100785293B1 (ko) 다중 tcp확인응답을 이용한 tcp 혼잡 제어 시스템및 그 방법
JP4454320B2 (ja) 伝送装置、伝送制御プログラム、及び伝送方法
US20190190542A1 (en) Reliable data transmission method based on reliable udp and fountain code in aeronautical ad hoc networks
CN111193577B (zh) 使用传输超时的网络系统通信方法及通信装置
US7929527B2 (en) Transport protocol for efficient aggregation of heterogeneous lossy paths
Lin et al. xAn enhanced adaptive FEC mechanism for video delivery over wireless networks
Ha et al. TCP with network coding enhanced in bi-directional loss tolerance
EP2846469A1 (en) Rateless encoding
US10135576B2 (en) Rateless encoding
Chen et al. Effective retransmission in network coding for TCP
Leung et al. TCP-Swift: an end-host enhancement scheme for TCP over satellite IP networks
Hu et al. A block based encoding approach for improving sliding window network coding in wireless networks
Koga et al. TCP flow control using link layer information in mobile networks
Raisinghani et al. Mild Aggression: A new approach for improving TCP performance in asymmetric networks
Argyriou Cross-layer adaptive ARQ for uplink video streaming in tandem wireless/wireline networks
Zhang et al. SNOOP-based TCP Enhancements with FDA in wireless cellular networks: A comparative study
Cui et al. Enhanced wireless TCP for satellite networks
JP2005136494A (ja) 通信システム
Jain TCP over Wireless Networks
Kliazovich et al. Context-aware receiver-driven retransmission control in wireless local area networks

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081008

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090108

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090408

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090803

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090826

R150 Certificate of patent or registration of utility model

Ref document number: 4368863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120904

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130904

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees