JP2016502794A - 通信ネットワークにおいてtcp及び他のネットワークプロトコルのパフォーマンスを向上させる方法及び装置 - Google Patents
通信ネットワークにおいてtcp及び他のネットワークプロトコルのパフォーマンスを向上させる方法及び装置 Download PDFInfo
- Publication number
- JP2016502794A JP2016502794A JP2015541904A JP2015541904A JP2016502794A JP 2016502794 A JP2016502794 A JP 2016502794A JP 2015541904 A JP2015541904 A JP 2015541904A JP 2015541904 A JP2015541904 A JP 2015541904A JP 2016502794 A JP2016502794 A JP 2016502794A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- packets
- data
- transmission
- network
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
- H04L1/0042—Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0009—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0076—Distributed coding, e.g. network coding, involving channel coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1812—Hybrid protocols; Hybrid automatic repeat request [HARQ]
- H04L1/1819—Hybrid protocols; Hybrid automatic repeat request [HARQ] with retransmission of additional or different redundancy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/20—Arrangements for detecting or preventing errors in the information received using signal quality detector
- H04L1/203—Details of error rate determination, e.g. BER, FER or WER
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W80/00—Wireless network protocols or protocol adaptations to wireless operation
- H04W80/06—Transport layer protocols, e.g. TCP [Transport Control Protocol] over wireless
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements 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/1607—Details of the supervisory signal
- H04L1/1671—Details of the supervisory signal the supervisory signal being transmitted together with control information
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computational Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
TCP経路をセグメント化し、ネットワークを通じて独自プロトコル(DPRTM)を実施することによって、データネットワークにおけるTCP(及び他のプロトコル)のパフォーマンスを向上させる方法及び装置である。DPRTMプロトコルは、クライアントからクラウドプロキシへのTCPセッションの多重性のために多重化されたトンネルを提供する。DPRTMは、輻輳管理、フロー制御、信頼性、及びリンクモニタリングを実施する。他のネットワークプロトコル(UDPなど)が、送信信頼性を向上させるネットワーク符号化に基づいた信頼性プロトコルを用いてサポートされる。ネットワークにおいてプロセスを送信するネットワーク及び方法が開示され、ネットワーク符号化原理に基づいてパケットをエンコードする決定的係数が用いられる。ネットワーク符号化原理に基づいてパケットをエンコードするための決定的係数を使用する方法及び実装が開示される。決定的係数の使用は、失われたパケットを回復するために送信すべき余分な情報の必要性を低減させ、かなり低減されたオーバヘッドと増大されたパフォーマンス、セキュリティ及び信頼性とをもたらす。
Description
本発明は、概して、通信ネットワークに関する。より詳細には、本発明は、向上させた通信パフォーマンスを損失のあるリンクを通じて提供する。新しい消去符号化方法も開示される。
本願開示は、パケット送信装置、通信システム及びプログラムの態様を含む。
ワイヤレスチャネルを通じたデータ通信が、ますます一般的になってきている。例えば、WiFiは、IEEE802.11標準に基づいた接続のワイヤレス通信に使用される。他の多くのワイヤレスチャネルが使用されることもあり、いくつか例を挙げると、WiMAX、3G、メッシュネットワーク又はコミュニティネットワークなどである。ワイヤレスチャネルは損失のあることがあり、したがって、データは様々な条件のうち任意の1つに起因して、送信の間、しばしば失われることがある。例えば、天候条件が、通信データの送信が害され得るようなものであることがある。同様にして、データ送信に対して様々な原因からの干渉があることがあり、例えば、同一チャネル上で送信している他のデバイスからの干渉である。有線通信チャネルもまた、ワイヤレスチャネルと同様にして損失のあることがある。有線チャネルの送信媒体は外部干渉の影響をより受けにくいが、有線ネットワークに配置されたアクティブなデバイスは有限のリソースを占有し、このことは、複数の、相互に関連しない送信元により圧倒された場合に、送信損失の一因となる。こうした要因のいずれかが、データパケット送信におけるさらなる損失又はデータパケット消去レートの増大の一因となることがある。
エンドツーエンドのトランスポートプロトコル(例えば、トランスミッションコントロールプロトコル(TCP))において、データ通信は、相互接続されたネットワーク又はデバイスにわたって提供される。トランスミッションコントロールプロトコル(TCP)は、通信ネットワークにおいて利用されて、信頼性、フロー制御及び輻輳制御のためのメカニズムを提供する。
こうしたトランスポートプロトコルにおいて、TCPはトランスポートプロトコルの一例であり、送信されるデータはパケットに分けられる。データパケットは受信器に送信され、受信器において、パケットは検証され、元のメッセージに再組み立てされる。肯定応答(ACK)が受信器から返されて、データパケットが受信されたことを示す。ACKが返らない場合、データパケットは再送信されなければならないことがある。さらに、送信器が指定時間内にACKを受信しないとき、送信器におけるトランスポートプロトコルがタイムアウトすることがある。このことは、トランスポートプロトコルがACKの欠如をネットワークにおける輻輳として解釈するとき、パケットの送信レートの低減をもたらす。通信ネットワークは、定義上、実際は統計的であり、パケットは一般に、失われて「消去損失」を引き起こし、あるいは送信された順序とは異なって受信されて「異常配信」を引き起こす。TCPは、失われたパケットを再送信し、受信された異常パケットシーケンスを再配置し、送信レートを調節して、把握された輻輳損失を最小化することになる。
TCPは、送信レイテンシを最小化すること又はネットワークの「良好なスループット(good-put)」を最大化することよりも、信頼性のある送信に向けて最適化される。TCPは、有効な輻輳管理のためのアルゴリズムを包含するが、輻輳的な損失を最小化するためではなく(TCP Tahoe、Vegas及びRenoなど)、エンドツーエンドの肯定応答を頼りにし、このことは、通信リンクのラウンドトリップタイムに基づいて最大送信レートを制限する。通信リンクのラウンドトリップタイムが、利用可能な帯域幅と直接の相互関係を有さないため、セッションの最大TCP送信レートは、利用可能な通信帯域幅に結び付けられない。
データパケット損失が輻輳に起因しないとき(例えば、パケット損失は、パケット消去又は損失のあるワイヤレスリンクにおけるパケットの損失/衝突に起因する)、TCPパフォーマンスが、上記の損失を輻輳として解釈すること及びその輻輳回避メカニズムを呼び出すことによって、損害を被ることがある。こうした輻輳制御は、TCPにリンクキャパシティを過小評価させることがあり、このことは、輻輳ウィンドウの低減と利用可能キャパシティの過少利用とをもたらす。TCPは、ほんの1%の見逃し誤り率でも有する長いレイテンシチャネルで、実質的なパフォーマンス劣化に悩まされる。輻輳と非輻輳的損失とにおける混同は、他のトランスポートプロトコルについても同様に存在する。
こうして、その便益のすべてについて、TCPは、特にワイヤレスリンクにおいて、高いビット誤り率、パケット消去又は間欠的な接続性などの問題に起因して、パフォーマンス劣化などのいくつかの論点に悩まされる。さらに、データパケット消去及び損失は、TCPタイムアウトを通してパフォーマンスに悪影響を与えることがある。
損失及びレイテンシに関連する論点は、通信スタックにおける他のプロトコル、例えば、メディアストリーミング若しくはVoIPに統合されたUDP、又は任意のワイヤレスリンクレイヤ設計に影響する可能性がある。輻輳は、ネットワークにおいて、通信リンク又は経路上のトラフィックの量が該リンク又は経路のキャパシティを超えたときに生じることがある。こうした場合、過剰データは破棄されることがあり、あるいは、過剰データは輻輳が緩和されるまでバッファされることがある。しかしながら、輻輳が存続する場合、輻輳は、パケット交換ネットワークにおいて、バッファの中のデータパケットを破棄してバッファをクリアすることによって制御される。さらに、チャネル障害又は干渉が、信号雑音比(SNR)劣化とビット誤りとをもたらすこともあり、上記劣化と誤りとが、同様に、パケット誤り又は消去をもたらすことがある。
ユーザデータグラムプロトコル(UDP)は、通信ネットワークにおいて、遅延に基づく信頼性メカニズム(再送信)から恩恵を受けないリアルタイムアプリケーションに主に利用される。UDPは、通常、信頼性メカニズムなしの固定レート送信である。損失のある環境において、VoIP及びビデオなどのUDPに基づく通信は、感知できるほどに劣化し、知覚できるくらいの忠実度の損失を引き起こす可能性がある。
近年、マルチメディアデータは、インターネットなどのベストエフォート型通信ネットワークを通してしばしば伝達される。このタイプのデータ伝送において、ダウンロード送信システム又はストリーム送信システムが使用される。
マルチメディアデータには、例えば、ビデオファイル、オーディオファイル、これらの組み合わせ、及びこれらを部分として含むデータを含むことができる。本願開示において、マルチメディアデータは、時間情報又は再生(play-out)順序に関する情報を含むデータの意味で使用される。
ダウンロード送信システムの場合、データファイルは、配信サーバから受信器における記録領域にダウンロードされ、伝送が完全に終了した時点において、その再生が開始される。したがって、ダウンロード送信システムは、再生に長時間かかるマルチメディアデータの再生やリアルタイム再生が必要とされるマルチメディアデータの再生に不向きである。
一方、ストリーミング送信システムの場合、データファイルの再生は、部分的なデータが送信器から受信器に伝送されるだけで開始される。ゆえに、これは、インターネット電話サービス、遠隔ビデオ会議開催、ビデオオンデマンドストリーミング、ネットワークカメラストリーミング、インターネットテレビ及び他のサービスに使用される。
ゆえに、輻輳に関連するとの損失の誤解釈に起因して、ワイヤレス通信ネットワークにおけるパフォーマンス損失の低減と損失のある通信チャネルにおけるトランスポートレイヤプロトコルパフォーマンスの強化とのための方法及びシステムの必要性が存在する。ビット又はパケット消去に対するネットワーク回復力を増大させる方法及びシステムの必要性もある。
Ahlswedeらにより2003年に開示されたネットワーク符号化(NC)は、情報フローを向上させ、ネットワークにおいてより良好なパフォーマンスを届ける保証を示している。ネットワーク符号化において、ネットワークにおけるパケットフローは、代数的エンティティとみなされる。したがって、パケットは、送信器によって使用されて、余分な情報を含む線形式の組を形成して、送信において失われたパケットの受信器による回復を助けることができる。
Effrosらに対する米国特許第7,706,365号(2010年4月27日)は、ランダム化された分散型ネットワーク符号化を開示している。上記特許は、ランダム化された符号化アプローチが提供されるところのネットワークにおいてプロセスを送信するネットワーク及び方法を開示している。ネットワークノードは、各々の外向けリンクにおいて、有限体から独立して及びランダムに選ばれる符号係数により規定される線形結合の到来信号を送信する。
Effrosらにおいて開示された方法は、経路決定に基づくアプローチを超えて有利である可能性があるが、ランダム化された符号化の使用は、バンド内の係数の送信に起因して、オーバヘッドとより大きいペイロードとを追加する。
TCP又はUDPなどのプロトコルを配置している損失のある通信インフラストラクチャにおいて、コンピュータオペレーティングシステムは、誤り訂正を用いて修正されて非常に有用でタイムリーなデータスループットを維持する必要がある。
発明者は、受信器又は送信器デバイスのオペレーティングシステム内で修正を必要としない、TCPなどの保証されたデータ送信プロトコルとUDPなどの保証されないデータ送信プロトコルとの双方についての損失回復を提供するシステムを提案している。
本発明は、1)オペレーティングシステムネットワークスタックとユーザプログラミング空間との間の接続、2)保証されるデータ送信プロトコルを保証されないデータ送信プロトコルから分離する選択器、3)保証されるデータ送信プロトコルから保証されないデータ送信プロトコルの双方についてのネットワーク損失を補正する消去符号化方法、及び、4)標準のUDP/IPプロトコルスタックを通じて情報を送信/受信する方法、を提供する。
本願開示は、配信されていないパケット(TCP)の再送信システムと効率的に動作する消去符号化システムとをもたらす送信手法を提供する。
本発明のパケット送信システムは、ベストエフォート型ネットワークを通して、限られた到着期限を有し又は有さないことがあるパケットを送信する。本発明のパケット送信システムは、
a)配信されていないパケットの再送信を制御する自動パケット再送信部、
b)各々が複数の生データパケットを運ぶ結合パケットを作成し、1又は複数のデータパケットのブロックに冗長データパケットを追加する消去符号化部、及び
c)すでに受信した結合された冗長パケットからの配信されていないパケットの回復だけによって達成される受信器における誤り訂正後の損失レートが許容可能な損失レートを満たすように、監視されるネットワーク状態情報に基づいて必要な冗長度のレベルを動的に決定する冗長度決定部、を含む。上記システムは、好適な方法及び装置を含む。
a)配信されていないパケットの再送信を制御する自動パケット再送信部、
b)各々が複数の生データパケットを運ぶ結合パケットを作成し、1又は複数のデータパケットのブロックに冗長データパケットを追加する消去符号化部、及び
c)すでに受信した結合された冗長パケットからの配信されていないパケットの回復だけによって達成される受信器における誤り訂正後の損失レートが許容可能な損失レートを満たすように、監視されるネットワーク状態情報に基づいて必要な冗長度のレベルを動的に決定する冗長度決定部、を含む。上記システムは、好適な方法及び装置を含む。
限られた到着期限を有するデータブロック(UDPなど)を送信する方法が提供される。データブロックは、ある設定されたN個のパケットについてのデータウィンドウを包含する。上記方法は、損失推定値Mを設定するステップと、データウィンドウにおけるパケットの数を、ウィンドウサイズのNに対応する第1の数のパケットN個に設定するステップと、N個のパケットを消去符号化して、各々が元のN個のパケットについての1つの線形結合を包含する一組のM個のパケットを作成するステップと、送信されるデータブロックがN個の元のパケットに続いて、各々がN個の元のパケットの線形結合を包含するM個のパケットを包含するように、データブロックを送信するステップと、を含む。
固定期限なしに保証される配信を有するパケットを送信する方法が提供される。データブロックは、複数のパケットのデータウィンドウを包含し、上記方法は、M個の消去回復パケットの最初の損失推定値を設定するステップと、データウィンドウにおけるパケットの数を、ウィンドウサイズのNに対応する第1の数のパケットN個に設定するステップと、N個のパケットにわたって消去符号化して一組のM個の線形結合を作成するステップであり、上記M個の線形結合は、元のN個のパケットの線形結合である、ステップと、元のN個のパケットについての新しい線形結合を追加し、データブロックを送信するステップであり、データブロックは、N個の元のパケット+M個の消去回復パケットを包含する、ステップと、受信したネットワーク状態情報とデータパケットブロックの送信レートとに基づいて冗長度の量を動的に決定して、受信器における誤り訂正後、失われたパケットの回復についての最初の損失推定値を調整し、更新された損失推定値に基づいて消去回復冗長パケットの数を再算定するステップと、N個の線形結合パケットと更新された数の冗長消去回復パケットとを含む第2のデータブロックを送信するステップと、を含み、データウィンドウのための先取的な(proactive)消去回復パケットの数が、推定されたパケット損失レートに基づく。
符号化パケットを生成する代替的方法の多くの他の例があり、該方法は、リードソロモン(RS)符号化、LDPC(低密度パリティ検査)符号化、ルビー変換(Luby transform)(LT)符号化、ラプタ(Raptor)符号化、ネットワーク符号化又は他のタイプの消去符号を含み、これらが使用されてもよい。
いずれにせよ、順序が問題でないため、FECの「シーケンスを感知しない(sequence-agnostic)」性質が、パケットフローを再構築することに使用されてよい。さらに、トランスポートレイヤは、自身が損失を回復するためにさらなる符号化パケットを待つときでさえ、アプリケーションに順序正しいデータセグメントを配信することができる。
好適な実施形態が、カーネル空間の中のオペレーティングシステムネットワークスタックのカーネル空間からユーザ空間への情報データフローを接続するTUN、TAP又はプロキシなどのコンストラクタ(constructor)を使用する。TUN仮想デバイスは、ネットワークスタックのインターネットプロトコル(IP)レイヤからユーザ空間への接続を提供する。TAP仮想デバイスは、ネットワークスタックのメディアアクセス制御(MAC)レイヤからユーザ空間への接続を提供する。
好適な一実施形態に従い、追加される冗長性パケットの数は、ネットワークの輻輳を不必要に増加させ、あるいはデータパケットブロックの送信レートを不必要に低減させることなく、ネットワークの状態に従って最適化されることができる。ゆえに、受信器における誤り訂正後の損失レートは、所望される範囲内に保持されることができる。
第1のパケット送信装置が提供される。このパケット送信装置は、ベストエフォート型ネットワークを通して固定期限なしに保証される配信を有するパケットを送信する。上記パケット送信装置は、配信されていないパケットの再送信を制御する自動パケット再送信部と、冗長情報の送信を制御する消去符号化部と、監視されるネットワーク状態情報に基づいて損失のない接続を維持するために必要な冗長度のレベルを動的に決定する損失推定部と、を含む。ネットワーク状態情報は、パケット損失レートを含むであろう。損失推定部は、受信したネットワーク状態に基づいて損失のない接続を維持するために必要な冗長度のレベルを動的に決定するように構成される。複数の好適な実施形態において、ネットワーク状態情報は、ラウンドトリップタイム情報を含む。
第2のパケット送信装置が提供される。このパケット送信装置は、ベストエフォート型ネットワークを通して固定期限と共に保証された配信を有するパケットを送信する。パケット送信装置は、配信されていないパケットの再送信を制御する自動パケット再送信部と、冗長情報の送信を制御する消去符号化部と、監視されるネットワーク状態情報に基づいて損失のない接続を維持するために必要な冗長度のレベルを動的に決定する損失推定部と、を含む。ネットワーク状態情報は、パケット損失レートを含むであろう。損失推定部は、受信したネットワーク状態に基づいて損失のない接続を維持するために必要な冗長度のレベルを動的に決定するように構成される。複数の好適な実施形態において、ネットワーク状態情報は、ラウンドトリップタイム情報を含む。複数の好適な実施形態において、ネットワーク状態情報は、データ通信チャネルの受信端におけるパケット到着間(inter-arrival)時間情報も含む。
複数の好適な実施形態において、受信器における誤り訂正後、配信されていないパケットの再送信に関して指定された損失レートをもたらすために、受信したネットワーク状態情報と、データパケットブロック及び冗長パケットの送信に割り当てられる送信レートの上限値とに基づいて、システムは、データパケットブロックに追加すべき冗長パケットの数を、受信したネットワーク状態情報とデータパケットブロック及び上記数の冗長パケットの送信に割り当てられる送信レートの上限値とに基づいて動的に決定して、受信器における消去符号化を用いた配信されていないパケットの回復後、指定された損失レートをもたらす。
複数の好適な実施形態において、装置は、第1及び第2の双方のパケット送信装置を含んで、固定期限の有無にかかわらずデータトラフィックを扱うであろう。本発明方法は、ベストエフォート型ネットワークを通して到着期限の限られたパケットを送信するパケット送信装置において、下記の処理機能:
(a)配信されていないパケットの再送信を制御するパケット自動再送信機能のための制御メカニズム
(b)冗長パケットをデータパケットブロックに追加するユーザ又はカーネル空間消去符号化機能
(c)配信されていないパケットの冗長パケットからの回復だけで達成される受信器における誤り訂正後の損失レートが許容可能な損失レートを満たすように、監視されるネットワーク状態情報に基づいてデータパケットブロックに追加される冗長パケットの冗長度を動的に決定するユーザ又はカーネル空間冗長度決定機能、及び
(d)カーネル空間からユーザ空間へネットワークスタック情報を接続する方法
を提供する。
(a)配信されていないパケットの再送信を制御するパケット自動再送信機能のための制御メカニズム
(b)冗長パケットをデータパケットブロックに追加するユーザ又はカーネル空間消去符号化機能
(c)配信されていないパケットの冗長パケットからの回復だけで達成される受信器における誤り訂正後の損失レートが許容可能な損失レートを満たすように、監視されるネットワーク状態情報に基づいてデータパケットブロックに追加される冗長パケットの冗長度を動的に決定するユーザ又はカーネル空間冗長度決定機能、及び
(d)カーネル空間からユーザ空間へネットワークスタック情報を接続する方法
を提供する。
好適な一実施形態に従い、冗長パケットの数は、ネットワークの状態に従って最適化されることができる。ゆえに、受信器における誤り訂正後の損失レートは、ネットワークの輻輳を不必要に増加させ、あるいはデータパケットの送信レートを不必要に低減させることなく、許容可能な範囲内に保持されることができる。
RLNCが消去符号化の好適な一方法であるが、発明者は、パフォーマンスとオーバヘッド及びペイロードの考慮とのバランスをとる第2の消去符号化方法を見出している。
ネットワークにおいてソースノードから受信器ノードに符号化ノードを経由してデータパケットのブロックを送信する方法が開示され、この方法は、
(a)ソースノードから、ソースプロセスを送信するステップ
(b)符号化ノードにおいて、受信器ノードによりソースノードから受信されるソースプロセスを、ソースプロセスのダウンストリーム受信を実施する目的で受信するステップ
(c)ランダム性、不確定性又は多義性なしに予測可能シーケンス生成アルゴリズムを用いて符号化係数のベクトルを決定的に選ぶステップであり、入力信号の全体的な線形結合が係数のベクトルとして規定される、ステップ
(d)ソースプロセスと符号化係数のベクトルとの線形結合を算定するステップ
(e)ソースプロセスと符号化係数のベクトルとの線形結合を送信するステップ
(f)受信ノードにおいて、ソースプロセス及び符号化係数の線形結合を受信するステップ
(g)符号化係数のベクトルとソースプロセス及び符号化係数の線形結合とを用いてソースプロセスを再構築するステップであり、ネットワークを通して符号化係数のベクトルの送信がなく、1又は複数の受信器ノードがあり、受信器プロセスは、受信器ノードにおいて観察可能である、ステップ
を含む。
(a)ソースノードから、ソースプロセスを送信するステップ
(b)符号化ノードにおいて、受信器ノードによりソースノードから受信されるソースプロセスを、ソースプロセスのダウンストリーム受信を実施する目的で受信するステップ
(c)ランダム性、不確定性又は多義性なしに予測可能シーケンス生成アルゴリズムを用いて符号化係数のベクトルを決定的に選ぶステップであり、入力信号の全体的な線形結合が係数のベクトルとして規定される、ステップ
(d)ソースプロセスと符号化係数のベクトルとの線形結合を算定するステップ
(e)ソースプロセスと符号化係数のベクトルとの線形結合を送信するステップ
(f)受信ノードにおいて、ソースプロセス及び符号化係数の線形結合を受信するステップ
(g)符号化係数のベクトルとソースプロセス及び符号化係数の線形結合とを用いてソースプロセスを再構築するステップであり、ネットワークを通して符号化係数のベクトルの送信がなく、1又は複数の受信器ノードがあり、受信器プロセスは、受信器ノードにおいて観察可能である、ステップ
を含む。
好適な一実施形態において、既知の関数が、上記符号化ノードから上記受信器ノードに送信され、符号化係数の上記ベクトルは、上記所定の関数を用いて上記符号化ノードにおいて及び上記受信器ノードにおいて算定される。好適な一実施形態において、複数の係数スキームを含むコードブックが、上記符号化ノード及び上記受信器ノードにおいて常駐し、上記係数スキームのうち1つについての指定が、上記符号化ノードから上記受信器ノードに送信され、符号化係数の上記ベクトルが、上記係数スキームのうち上記の指定された1つを用いて上記符号化ノードにおいて及び上記受信器ノードにおいて算定される。
新しい消去符号化方法が、非ランダムの、決定的な(予め決定された)態様において線形式の組の係数を生成する。第1の好適な実施形態における方法は、中間ノードを含むすべての通信ネットワーク参加者に知られたコードブックを利用する。生成関数又は「コードブック」のいずれかに関する情報は、新しいユーザがネットワークに加わるときに1回だけ提供される。したがって、係数は予測可能であり、送信の両端におけるコードブックの知識は、係数送信又は再生成のためのオーバヘッドを除去する。第2の好適な方法は、係数が情報の伝送に関わる各ノードとやりとりされる必要がないように、予め定義された多項式、例えば、階乗、フィボナッチ数列を使用する。
いずれかの好適な係数生成方法を用いて、各送信機会において、パケットの線形結合が、予め決定された組の係数を用いて送られる。ソース及びデスティネーションの双方が、使用されるシーケンスの事前知識を有するため、情報を端から端に送信するためにいかなる他のプロトコルも、すなわちヘッダも使用する必要がない。さらに、シーケンスを再使用することを合図する必要がなく、これは、あらゆる送信されるブロックの始めにおいて自動的に再開される。
好適な一実施形態において、消去符号化方法は、ネットワークと関連して使用され、このネットワークは、
a)1又は複数のソースノードであり、ソースプロセスがソースノードにおいて観察可能である、ソースノード、
b)1又は複数の受信器ノードであり、受信器プロセスが受信器ノードにおいて観察可能である、受信器ノード、及び
c)エンコードし又はデコードするための1又は複数の符号化ノードであり、ソースプロセスの各受信器ノードに対する通信を可能にし、符号化ノードは、符号化ノードに対する入力信号の通信のための入力リンクと符号化ノードから受信器ノードへの出力信号の通信のための出力リンクとに接続され、出力信号は入力信号の線形結合であり、線形結合の係数は予め決定される、符号化ノード
を含む。
a)1又は複数のソースノードであり、ソースプロセスがソースノードにおいて観察可能である、ソースノード、
b)1又は複数の受信器ノードであり、受信器プロセスが受信器ノードにおいて観察可能である、受信器ノード、及び
c)エンコードし又はデコードするための1又は複数の符号化ノードであり、ソースプロセスの各受信器ノードに対する通信を可能にし、符号化ノードは、符号化ノードに対する入力信号の通信のための入力リンクと符号化ノードから受信器ノードへの出力信号の通信のための出力リンクとに接続され、出力信号は入力信号の線形結合であり、線形結合の係数は予め決定される、符号化ノード
を含む。
好適な一実施形態において、ネットワークにおいて各信号に存在するソースプロセスの全体的な線形結合は、係数として規定され、各係数はソースプロセスに対応する。好適な一実施形態において、係数は、係数線形結合に適用することによって、各符号化ノードにおいて更新される。好適な一実施形態において、係数に適用される線形結合は、ネットワークを通して送信されるデータに適用される線形結合と同じである。
別の一実施形態において、一組の通信ノードを含むネットワークが開示され、これにおいて、各ノードは、情報のソース、情報の受信器、又は同時にソース及び受信器の双方であってよい。ネットワークの各ノードは、情報ユニットを形成し、ディスパッチして、ネットワークの他のノードと通信する能力があり、ネットワークの中の各ノードは、決定的線形ネットワーク符号化(Deterministic Linear Network Coding)(DLNC)機能エンティティであり、ここで、ネットワークの各ノード内のDLNC機能は、こうしたノードによって部分的にあるいはその全体を生成され又は受信された情報にアクセスする能力がある。さらに、ネットワークの各ノード内のDLNC機能は、異なるノード上の別のDLNC機能との論理的通信リンクを確立する能力がある。各ノードにおけるDLNC機能は、エンコード及びデコード機能性を持ち、ここで、ソースノードにおけるDLNCは、「コードブック」、又は係数生成プロセスからランダム性、不確定性及び多義性を除去する予測可能シーケンス生成器を用いることによって、一組の係数を生成する。ソースノードにおけるDLNCは、ソースノードにより生成された元の情報ユニットを係数を用いて線形結合することによって新しい情報ユニットを形成する。ここで、結果的な新しいエンコードされた情報ユニットは、ソースノードにおけるDLNC機能によって、ネットワークの単一の又は多数の受信器ノードに伝えられる。
好適な一実施形態において、ネットワークは、非制限的なトポロジネットワークである。
好適な一実施形態において、生成される係数の組は、有限体に属する。
好適な一実施形態において、一アルゴリズムがネットワークにおいて使用されて、順序付けられたリストにおいて元の行ベクトルを1ポジションずつシフトすることによって係数を係数の行ベクトルにおいて1ポジションずつ回転すること及び必要とされるとおりに余分な係数を生成することに基づいて、NxN符号化行列を生成する。
好適な一実施形態において、一アルゴリズムがネットワークにおいて使用されて、追加的に生成される線形式の線形独立性を確保するように一組の係数を再順序付けする。
好適な一実施形態において、リンクの両端が初期化されて、シーケンスを予め決定することと受信器に上記選択を制御パケットヘッダの中のフィールドによって知らせることとにおける適切なオペレーションを確保する。DLNCは、柔軟性及び低オーバヘッドを含む利点を提供する。
さらなる特徴及び利点が本明細書に説明され、下記の詳細な説明及び図から明らかになるであろう。
本発明及びその利点のより完全な理解は、下記の説明を添付の図面を考慮して参照することによって得られるであろう。図面において、同様の参照番号は同様の特徴を示す。
出願人のパケット回復プロトコルを用いたシステムの好適な実施形態を示す。
図1に示されるタイプのトランシーバのペアを用いて実施される出願人のパケット回復プロトコルを用いたデータ通信システムの好適な実施形態を示す。
図1の装置において実施することができる本発明方法の好適な実施形態を示す。
本発明の別の送信スキームを示す。
図1の装置において実施することができる本発明方法の別の実施形態を示す。
図3のデータ送信方法論と関連して実施することができるデータ受信方法論の別の実施形態を示す。
消去符号化モジュールの構成要素の概略図である。
消去符号化モジュールの別の実施形態の構成要素の概略図である。
クライアント側実装のブロック図である。
クラウドプロキシ実装のブロック図である。
透過モード実装におけるTCPスプーファについての接続確立状態機械の状態図である。
透過モード実装におけるTCPスプーファについての接続クローズ状態機械の状態図である。
図1乃至図4に示されるDPRプロトコルと関連して使用することができるランダム線形ネットワーク符号化を用いた好適なネットワーク符号化エンコード演算を示す。
図1乃至図4に示されるDPRプロトコルと関連して使用することができる一組の線形式を解くランダム線形ネットワーク符号化を用いたネットワーク符号化デコード演算を示す。
図1乃至図4に示されるDPRプロトコルと関連して使用することができるランダム線形ネットワーク符号化を用いたフルの係数送信でのネットワーク符号化パケットフォーマットを示す。
図1乃至図4に示されるDPRプロトコルと関連して使用することができる本発明のネットワーク符号化パケットフォーマットの一実施形態の概略図である。
RLNC対DLNCのDPRプロトコルオーバヘッド比較を示すグラフである。
DLNC消去符号化を用いたDPR接続をセットアップする接続シーケンスの図式的概観を示す。
本発明は、TCP及びUDPなどの別のトランスポートプロトコルのいくつかの技術的欠点を改良し、送信品質とネットワークの良好なスループットとを向上させる独自プロトコルを用いて、UDPのカプセル化された通信トンネルを提供する。好ましくは、TCP実装は、通信スタックにおけるTCPレイヤにより見られるものとしてかなり短い有効なRTTを作り出し、ゆえにTCPのうちその輻輳管理メカニズムに主に関連付けられる非効率性を改善させることによって、より大きい達成可能な最大帯域幅とより小さいレイテンシとを提供する。TCPトラフィックは、消去符号化モジュールによって処理され、消去符号化モジュールは、消去保護に加えて、接続管理、信頼性、輻輳制御、フロー制御及び多重化をさらに提供する。消去符号化モジュールを介して通信チャネルを通じてサポートされるカスタムプロトコルは、本願開示において、動的パケット回復(Dynamic Packet Recovery)(DPRTM)と呼ばれる。UDP実装は、信頼性サポート及び輻輳回避メカニズムを包含する。
図1を参照すると、本発明に従い構築された送信トランシーバ1が示され、送信トランシーバ1は、例えば、図2におけるトランシーバ1aなどの受信トランシーバとの二重通信を可能にする。トランシーバ1は選択器2を含み、選択器2は、インターネットなどのデジタルチャネルを通じて送信すべき連続的なパケットストリームを含む入力を受信する。パケットストリームは、一連のデータパケットを含む。こうしたデータパケットが選択器2によって受信され、選択器2は、消去符号化(erasure coding)に必要な時間に適応するように調整された任意的な最小レイテンシ間隔後、下記に説明されるとおり、所定数のパケットNを含む最初のブロックのデータパケットを、デジタルチャネルを通じた送信のために送信器3に渡す。
本発明の好適な実施形態に従い、N個のデータパケットのブロックが、送信トランシーバから受信トランシーバに送られる。上記システムは、いくつかの符号化されたパケット(符号化パケット)も送信する。概して、N個のデータパケットは、送信される特定のブロックの中のすべての情報を包含し、それから、上記ブロックの全体が、任意の所与のセグメントの間に送信すべきトータル情報を全体で表し、上記セグメントは、例えばインターネットに接続されたあるポイントから別のポイントに移動すべき音楽トラック、ビデオ、文書、画像又は他のアイテムを表し得る。
データパケットのブロックの中のすべてのデータパケットが受信トランシーバにおいて損失なく受信された場合、明らかに、さらなる方策を採用する必要性がない。しかしながら、通常、1又は複数のデータパケットが、特定の送信サイクルの間に失われる可能性が高い。
ゆえに、本発明に従う消去符号化の適用に従い、さらなる符号化パケットが、N個の生(raw)データパケットと連動して送信される。符号化パケットは、使用される特定の消去符号化方法のエンコードアルゴリズムに従い、送信すべきN個の生データパケットから生成されるパケットである。したがって、データ通信チャネルの送信側において、N個のデータパケットのブロックがエンコードアルゴリズムに入力され、エンコードアルゴリズムは所望数の符号化パケットを生成する。
データ通信チャネルの受信側における受信トランシーバにおいて、受信した生データパケットと受信した符号化パケットとは、符号化方法が使用された場合、デコードアルゴリズムに入力される。それから、このアルゴリズムは、N個の生データパケットの送信の間に失われた元の生データパケットの再構築を出力する。それから、受信トランシーバにより受信された、受信した生データパケットNrが、送信トランシーバにより送信されたN個の生データパケットの元のストリームの忠実な複製を組み立てるように、デコードアルゴリズムにより生成された、再構築したデータパケットNaとインタリーブされる。
消去符号化の形態における前方誤り訂正は、図1に示されるとおり、生パケットNの最初のブロックをトランシーバのメモリ4に記憶することによって容易にされる。消去符号化はエンコーダ5によって実施され、エンコーダ5はM0個の符号化パケットを生成する。M0は、データパケットと連動して送るべき符号化パケットの最初の数であり、Mのデフォルト値に等しい。このM0は任意であってよいが、好ましくは、予期される品質障害又は予期される送信チャネルのありそうな脆弱性の範囲に基づいて設定される。符号化パケットは、使用される特定の消去符号化スキームによって回復されるパケットに関連して、失われたパケットの置換を可能にするように生成される。下記で参照されるタイプの消去符号化方法論を用いて、符号化パケットは、失われたパケットを生成するために使用される。
リードソロモンエンコードなどの他の前方誤り訂正スキームが本発明に従い使用されてもよいことにも留意されたい。他の適切な消去符号化スキームが、当分野において周知であり、本発明に採用されてよい。
図1のシステムを用いたあり得る適用において、生パケットの数Nは、例えば、100であってよい。こうした適用において、通常、チャネルにおける98%の信頼度のレベルに直面することがある。これは、2個の符号化パケット(M=2)を100個のデータパケットと共に送信することによって、100個すべてのデータパケットの成功裏の送信をおそらく提供するであろう。2個の符号化パケットの各々はエンコーダ5によって生成され、送信すべき合計102個のパケットをもたらす。しかしながら、信頼性のある受信の側における誤りに対して、(送信が始まるときに採用される)M0のデフォルト値は、比較的高く、例えば5個の符号化パケットに設定されてよく、これは、5%(M/N)の損失に対応する。
このデフォルト値はエンコーダ5によって使用され、エンコーダ5は5個の符号化パケットを生成し、この5個の符号化パケットは送信器3に出力される。本発明の好適な実施形態に従い、5個の符号化パケットが任意的な最小レイテンシ遅延を用いてエンコーダ5によって生成されると、送信器3による100個のデータパケットの送信に続いて、上記の5個の符号化パケットが送信器3を介して送信される。ゆえに、システムは、100個のデータパケットと5個の符号化パケットとを含む105個のパケットを送信している。
デジタルチャネル、例えばTCP/IPチャネルの性質は、良好な使用可能なデータパケットだけが受信されるというものである。したがって、誤りは、消失パケットの形をとる。100個のデータパケットの送信ラインの受信端において、受信したすべてのデータパケットが数えられ、デジタル通信チャネルの他端において受信したデータパケットの数は、トランシーバ1の受信器部分6に返信される。この情報は、例えば、コンピューティングデバイス7に送られ、コンピューティングデバイス7は、100個すべてのデータパケットの送信が成功する可能性が非常に高い状態にするために必要な符号化パケットの数Mの推定を決定するようにプログラムされる。この情報は、さらに十分に下記に現れるとおり、2つの目的に使用される。第1は、Mの改訂値M1を提供することである。次のブロックのデータパケットの送信の間、M1が使用され、デフォルト値のM0は破棄される。第2に、この情報は、すべてのデータパケットが受信されていない場合、どれほど多くの追加パケットがパケットのブロックを成功裏に送信するために必要とされるのかをシステムに教える。さらに十分に下記に現れるとおり、上記の追加パケットは、システムが次のブロックのデータパケットに進む前に、システムによって送信される。上記の追加符号化パケットの各々はすべて、符号化パケットの最初の組の中の符号化パケットの各々とは異なることにも留意されたい。このことは、十分な種々の符号化パケットが、失われたデータパケットを再構築するために受信トランシーバにおいて利用可能であることを確保する。
上記のパケット損失情報を取得し、これを使用してM0の値(又は、Mの任意の後続値)が増加されるべきか、減少されるべきか、あるいは変更されないままとされるべきかを判定するために、様々なアルゴリズムが使用されてよい。本発明に従い、Mの値の再推定とその値の可能な調整とが、データパケットの各ブロックの送信に関連して行われる。このことは、下記の例から理解することができる。
例えば、最初のシステム設定がブロック=100及びM0=5であり、100個すべてのデータパケットが成功裏に受信されたと仮定する場合、デジタル通信チャネルの予期される品質を考慮すると、コンピューティングデバイス7は、Mの値を5(M0)から4(M1)に低減してよい。ゆえに、次の周回において、100個のデータパケットの第2のブロックとエンコーダ5により消去符号化によって生成された4個の符号化パケットとが送信されることになる。
コンピューティングデバイス7に常駐するアルゴリズムに従い、選択器2に入力される連続的なデータパケットストリームからの継続的なデータのブロックにおける100個すべてのデータパケットの継続的な成功裏の送信が、Mが例えば2に到達するまで、数Mの継続的な低減をもたらしてよい。上記例は、例えば、送信器部分3によりアクセスされるデジタル通信チャネルの特性がよく知られており、1個の符号化パケットだけでブロックを成功裏に送信する品質にしばしばなるとは予期されない場合である。通信チャネルが、より良好な信頼性が時折生じることがあるものである場合、コンピューティングデバイス7は、所与のブロックの中の100個のデータパケットを成功裏に送信することの度重なる失敗があるまで、Mを1に低減し、Mをその値において保持することによってチャネルを周期的にテストするようにプログラムされてよい。このようなものとして、度重なる失敗は、これを引き起こし得る様々な要因のいずれか、例えば輻輳、天候などに起因した、通信チャネルにおけるより長い期間の劣化を示すであろう。
同様にして、同じ方法論を用いて、コンピューティングデバイス7は、Mを増加させ、M1を6、7若しくはより大きい値に等しくし、これを延長された時間の間そこで保持し、再度、チャネルを周期的にテストしてチャネル信頼性が増しているかを判定することによって、低減された通信チャネルパフォーマンス、例えば、通信チャネルの他端におけるリモートトランシーバからの、94個のデータパケットだけが受信されたという報告を受け入れてもよい。受信器6が、あらゆる送信について、連続的なパケットストリームの中で100個より少ないデータパケットが選択器2に入力されたときを示すことになるため、当然ながら、非信頼性を判定するためのチャネルのテストは必要とされない。
本発明に従い、受信したデータパケットの数は、送信器3により利用されるデジタル通信チャネルの他端において数えられ、この情報は、通信チャネルを通じて受信器6に送られ、受信器6は、この情報をコンピューティングデバイス7に送る。
同様にして、トランシーバ1の受信側を考えると、トランシーバ1は、さらに、通信チャネルの他端におけるリモートポイントから上記と同様の態様で送信されたデータを受信するため、デコーダ8が、リモート送信ポイントから受信器6が受信した良好なデータパケットの数を数えるように提供される。それから、さらに十分に下記に現れるとおり、受信したデータパケットの数は、デコーダ8によって送信器3に伝えられ、送信器3は、この情報を、送信器3及び受信器6により使用される例えば全二重デジタル通信チャネルの他端におけるリモート送信ポイントにおけるリモートトランシーバに送る。
本発明は、双方の通信トランシーバにより送信される情報において完全な対称性があり、あるいはデータ負荷がかなり非対称であるシステムに適用されてよいことに留意されたい。
本明細書において言及されるとおり、エンコーダ5は、消去符号化を実施する。デコーダ8は、データパケットとエンコーダ5により生成されたタイプの符号化パケットとを受信し、消失データパケットの内容について解決するようにプログラムされる。開示される実施形態に従い、エンコーダ5と同一の特性を有するエンコーダが、全二重通信チャネルの他端において、トランシーバ1と二重通信するリモートトランシーバの中に位置することが考えられる。
二重デジタル通信チャネルの他端においてリモートトランシーバから受信した、成功裏に送信されたデータパケットは、デコーダ8によって検出され、メモリ9に送られる。デコーダ8は、データパケットの完全なブロックが受信されたと判定したとき、この情報をメモリ9に伝える。メモリ9はこの情報を、メモリの中の別の、場合によりさらに永続的な場所に、あるいは下流のデバイスにダウンロードするように指示されてよい。
送信方法論に戻ると、上記に示唆されたとおり、時折、ことにより頻繁に、選択器2に入力される連続的なパケットストリームからの100個のデータパケットの特定のブロックにおける100個未満のデータパケットが受信されることになる。このことが生じたとき、従来技術、例えばUDPシステムとは対照的に、データパケットは再送信されない。TCPシステムにおいては、生データパケットが再送信される。
むしろ、本発明に従い、消失データパケットの数が受信器6からコンピューティングデバイス7に伝えられ、追加の時間、データパケットを送信することに代わって、符号化パケットが送信される。同様にして、必要とされる場合、消失パケットを再生成するために符号化パケットが送信される。
失われたパケットの数がM0より大きい場合、最初の損失推定値M0と消失パケットの実際の数M1とにおけるデルタが算定される。M1−M0個の追加の符号化パケットを生成するようにメッセージがエンコーダに送られ、したがって、消失パケットのすべてが再生成されることができる。
上記に示唆されたとおり、多数のデータパケットがチャネルの他端において消失している場合、Mは、デフォルト推定の5から、比較的大きい数に変更されるであろう。例えば、M0が5に最初設定され、8個のデータパケットが消失したと判定された場合、最低でも、3個のさらなる符号化パケットを送信することが必要であり、ゆえに、最初の例において、合計8個の符号化パケットを作ることになるであろう。こうした例において、M1は、8に設定されるであろうし、エンコーダ5により生成されるであろう追加の3個の符号化パケットが送信される。
しかしながら、上記システムは、最初、過度に補償していることがあり、例えば、Mを12に設定し、7個の追加の符号化パケットを送信することがある。消去符号化スキームに従い、消失データパケットを生成するために、追加の符号化パケットと元の符号化パケットとは、対象ブロックの100個のデータパケットからの成功裏に送信され及び受信されたデータパケットと一緒に使用されるであろう。
消去符号化スキームに従い、消失データパケットを生成し、必要な100個のデータパケットをデコーダ8から記憶装置9に再作成するために、受信した生パケットと受信した消去符号化されたパケット(消去符号化パケット)(erasure coded packets)とが一緒に使用されるであろう。上記必要な100個のデータパケットは、元のデータパケットと符号化パケットとのいくつかの部分の組み合わせである。
この態様において、大きいブロックのデータパケットの再送信は複数回回避される。
先へ進めると、M1は現在、新しい損失推定値である。上記の例において、M1は8であった。Mnは、次の組のパケットのための損失推定値がMnの最新値に基づくように調整され続ける。
損失レート値Mの連続的な調整は好適な実施形態であるが、Mの最初の値とMの値の調整とはユーザ必要性に従って変えられてよいことが理解される。所望される場合、最初の損失推定はゼロパケットに設定されてよく、したがって、最初の損失推定は、パケット損失があるまで設定されない。
符号化パケットは成功裏に受信されないことがあり、それから、置換符号化パケットを生成し、送信することが必要になることにさらに留意されたい。置換符号化パケットの生成は、使用される特定の前方誤り訂正又は消去符号化スキームによって決定される。したがって、デコーダ8は、二重通信チャネルの他端におけるトランシーバの部分によって受信器6に提供される情報に基づいて、データパケット又は符号化パケットが失われているかを判定するように機能し、上記トランシーバの部分は、デコーダ8の機能を実行している。
図2を参照すると、トランシーバ1とリモートトランシーバ1aとを含むデータ通信システムが示されている。トランシーバ1aは、トランシーバ1と実質的に同一である。トランシーバ1aは、選択器2a、送信器3a、メモリ4a、エンコーダ5a、受信器6a、コンピューティングデバイス7a、デコーダ8a及びメモリ9aを含み、これらはそれぞれ、トランシーバ1における選択器2、送信器3、メモリ4、エンコーダ5、受信器6、コンピューティングデバイス7、デコーダ8及びメモリ9の態様において動作し、互いに協働する。トランシーバ1とトランシーバ1aとは、トランシーバ1により送信される信号を受信するトランシーバ1aとトランシーバ1aにより送信される信号を受信するトランシーバ1とで示されるとおり、デジタルチャネルを通じて互いに結合される。
図3を参照すると、本発明方法10が、汎用目的コンピュータ上のソフトウェアとして実施することができる処理ステップの観点から理解されるであろう。システムへの入力は、各々N個のデータパケットのウィンドウに形作られることができるデータパケットの連続的なシーケンスである。これらN個のデータパケットが、方法10を実施するシステムにおいて、ステップ12において受信される。本発明に従い、これらN個のデータパケットは、デジタルデータ通信チャネルを通じてリモートポイントに送信される。
本発明方法が開始されると、本発明方法を実施するシステムは、N個のデータパケットのうちM0個のデータパケットが失われることになると仮定するデフォルト損失推定を最初採用する。Mは、ゼロ、又は3若しくは5などのより大きい整数で表されてよく、あるいは、パケットのブロックのパーセンタイル部分として規定され、ソフトウェアによりパケットの数を算定した後に整数に丸められてもよい。ステップ14において、この推定は、採用される消去符号化アルゴリズムのエンコードアルゴリズムに提供される。より具体的に、ステップ16において、特定の消去符号化スキームに関連付けられた消去符号化アルゴリズムをプログラムされたコンピューティングデバイスが、符号化パケットを生成するように実施され、この符号化パケットは、受信トランシーバにおいて、失われたパケットを再構築する機能を実行するために使用されてよい。より具体的に、好適な実施形態に従い、受信したデータパケットと関連する符号化パケットとは、失われたデータパケットを生成するために、受信トランシーバにおいてデコードアルゴリズムに入力される。ステップ16において、消去符号化が、選択された消去符号化スキームに従い実行され、符号化パケットの生成をもたらす。この符号化パケットは、十分な符号化パケットとデータパケットとが受信されていて上記の再構築を可能にするならば、送信の間に失われた任意のデータパケットを再構築することに使用されてよい。
符号化パケットが生成されているとき、ステップ18において、データパケットは、一時記憶のために一時メモリセクタに伝送される。N個のデータパケットのブロックのコピーが、好ましくはステップ19において記憶される。パケット損失が、送信されるデータを受信するリモートトランシーバにおける消去符号化デコードアルゴリズムによってすべての失われたパケットを回復させるのに十分な失われたパケットの数を超える事象において、将来使用されてよい。同様にして、ステップ16において生成された符号化パケットは、ステップ20において、同様に一時記憶のために一時メモリセクタに伝送される。データパケットと符号化パケットとは、ステップ22において、一時メモリからダウンロードされ、ステップ24において、受信のリモートポイントにおける受信トランシーバにすべて送信される。好適な実施形態に従い、データパケットと符号化パケットとがステップ24において送信されるとき、各々のデータパケットと符号化パケットとは、それ自体がデータパケットであるか、あるいは符号化パケットであるかを示す識別子を有する。
ステップ26において、トランシーバは、N個のデータパケットのうちいくつが失われたか(NL)を示す報告を受信する。
下記に論じられるとおり、NRがNより小さい場合、いくつかの補足的な符号化パケットPSを送信することが必要であり、ここで、PSは、式:
PS=NL−M0
によって定義される。
PS=NL−M0
によって定義される。
本発明に従い、補足的なパケットPSの合計数は、失われたパケットがデータパケットであるか、あるいは符号化パケットであるかにかかわらず、失われたパケットの合計数によって決定されることに留意されたい。しかしながら、損失がデータパケットであるか、符号化パケットであるか、あるいはデータパケットと符号化パケットとの組み合わせであるかにかかわらず、符号化パケットだけがリモートトランシーバに送信される。それから、受信トランシーバに関連付けられ、使用される特定の消去符号化スキームのためのデコードアルゴリズムを備えたコンピューティングデバイスが、受信したデータパケットと必要数の符号化パケットとを取得し、デコードアルゴリズムを実行して、受信されなかったデータパケットを再構築する。デコードアルゴリズムは、受信したデータパケットと受信した符号化パケットとを処理することによって、失われたデータパケットの情報内容を算定する。
図3に示されるデータ通信送信方法論に戻ると、ステップ28において、失われたパケットの数を伝える報告が送信トランシーバによって受信され、さらなる符号化パケットが必要とされるかについて、判断が行われる。より具体的に、すべてのデータパケットとすべての符号化パケットとが受信されている場合(あるいは、リモートトランシーバが、失われたデータパケットを再構築するほど十分なデータパケットと符号化パケットとを受信している場合)、システムはステップ30に進み、ここで、Mは、パケット損失の履歴と場合により送信チャネル特性とを考慮して推定され、更新される。上記に示唆されたとおり、Mは、増加し、減少し、あるいは同じままであってよい。Mの新しい値Mjがステップ30において算定され、ステップ32において、Mのいかなる以前の値もが、Mの新しい値で置換される。
それから、システムはステップ34に進み、ステップ34において、次のブロックのN個のパケットがシステムに入力される。ステップ16において、上記次のブロックのN個のパケットは、(ステップ32において更新されたとおりの)いくつかの符号化パケットMjを生成するために、エンコード消去符号アルゴリズムを用いて処理され、上記符号化パケットは、次の組の符号化パケットを構成する。それから、次の組の符号化パケットと次のブロックのN個のパケットとが、上記で説明された方法論に従い送信される。
しかしながら、判断ステップ28において、すべてのデータパケットを再構築するほど十分なデータパケットと符号化パケットとがリモートトランシーバによって全体的に受信されていない場合、追加の符号化パケットがリモートトランシーバに送られる必要がある。したがって、システムはステップ36に進み、ステップ36において、必要数の置換データパケット(ステップ26の報告に基づく)が生成される。補足的な符号化パケットは、ステップ19において記憶された元の生データパケットを用いて生成される。補足的な符号化パケットはすべて、現在のデータパケットブロックに関連付けられた以前の符号化パケットから異なる。置換データパケットの数は、受信したデータパケットから失われたデータを再構築するために必要とされる符号化パケットの数に等しい。好適な実施形態に従い、符号化パケットの数が、失われたデータパケットの数に等しく、あるいはより大きくなければならない消去符号化スキームが使用される。
上記に示唆されたとおり、失われたパケットPLの数がMの以前の推定値(Mprevious)より大きい場合、いくつかの補足的な符号化パケットPSを送信することが必要であり、ここで、PSは、式:
PS=PL−Mprevious
によって定義される。
PS=PL−Mprevious
によって定義される。
したがって、システムはステップ30に戻り、ステップ30において、システムはMの推定値をM+PSに増加させる。
システムはステップ38にも進み、ステップ38において、ステップ36において生成された補足的な符号化パケットがリモートトランシーバに送信される。それから、システムは、リモートトランシーバから、パケットが成功裏に受信されたかを示す報告を受信し、それから、判断ステップ28において同じことを判定した後、システムは、現在のブロックのN個のパケットがすべて十分に受信され、あるいは再構築されるまで、上記で説明されたとおりに進む。この条件が合ったとき、システムはステップ34に進み、ステップ34において、システムは、上記で説明されたとおり、次のブロックのN個のデータパケットに進む。
システムは、送信すべきデータパケットシーケンスの中のすべてのデータパケットが送信されて、成功裏に受信され、あるいは再構築されるまで、上記で説明されたとおり、N個のデータパケットの継続的なブロックを送り続ける。
図3aを参照すると、本発明に係る方法に従う別の送信スキーム(これは、本明細書に説明される他の方法と同様に、汎用目的コンピュータ上で実行されるソフトウェアにおいて具現化される)が、示されている。ステップ50において、システムは、個々のパケット、例えば、連続的なパケットストリームの中の最初のパケット又は後続のパケットを受信する。ステップ52において、ステップ50において受信されたパケットが記憶される。ステップ54において、記憶されたパケットはリモートトランシーバに送信され、カプセル化もされる。上記カプセル化は、例えば、消去符号化スキームのエンコードアルゴリズムに入力されることによってなされ、任意の失われたパケットを再構築するために使用すべきカプセル化された生パケット又はカプセル化された冗長符号化パケットの生成に後に使用される。
ステップ56において、システムは、ブロックの中のN個のパケットすべてが入力され、記憶され、送信され、カプセル化されたかを判定する。上記が当てはまる場合、N個のデータパケットの完全なブロックがシステムに入力されており、符号化パケットの生成が始まってよい。
しかしながら、ステップ56において、N個のパケットすべてが受信されていない場合、システムは、ステップ50に戻り、次のパケットを受信し、N個のデータパケットの完全なブロックがシステムに入力されるまで上記シーケンスを繰り返す。
N個のデータパケットの完全なブロックがシステムに入力されると、システムはステップ58に進む。ステップ58において、好適な消去符号化アルゴリズムに従い、システムは、N個の元のデータパケットの内容を直線的に結合することよって、結合(「符号化」ともいう)パケットを生成する。ステップ60において、ステップ58において生成された結合パケットが送信され、システムはステップ62に進み、ステップ62において、Mのデフォルト値が、単一ブロックのデータパケットに対して予期される数のパケット損失に同等に、あるいはより大きく設定される。それから、ステップ64において、システムは、M個の符号化パケットすべてが生成され、送信されたかを判定する。すべてのM個のデータパケットがステップ64において設定されていない場合、システムはステップ58に進み、ステップ58において、別の符号化パケットが、リモートトランシーバに対する送信のために計算される。
M個のデータパケットが生成されている場合、十分な情報が受信トランシーバによって受信されていることが合理的に明白である。しかしながら、ステップ66において、システムは、システムにより送信されたN個のデータパケットすべての再構築を可能にするほど十分な数のパケットが受信されているというリモート受信トランシーバからの報告を待つことによって、信頼性を提供する。受信されているパケットの数Kが、送られた生パケットの数Nより小さい場合、N個の元のデータパケットのすべてを再構築するほど十分なパケットが受信トランシーバになく、上記N個の元のデータパケットは、送信の間に失われている可能性がある。したがって、システムはステップ70に進み、ステップ70において、Mがより大きい数、例えばMの元の値プラス1に更新される(1個の結合パケット又は符号化パケットだけが失われたデータパケットを生成するために必要である場合であり、あるいは、必要とされる場合、より大きい数による)。例えば、5個の追加の符号化パケットが必要とされる場合、Mは5まで増加されてよい。ゆえに、Mは、M+(N−K)に等しい値に更新されてよい。
使用されているデジタルチャネルについて経験した十分でない送信特性を反映するようにMの値を設定することに加えて、失われたデータパケットを再構築するほど十分な数の符号化(すなわち、結合された)パケットを生成し、送信することが必要である。このことは、システムがステップ58に戻ることによって行われ、ステップ58において、追加の符号化パケットが生成され、それから送信され、上記追加の符号化パケットが受信された場合、受信トランシーバによってその受信を確認される。
ステップ68において、受信トランシーバにより受信されたパケットの合計数がNより少なくない場合、すべての消失データパケットを再構築するほど十分な数のパケットが受信されており、システムはステップ50に進んでよく、ステップ50において、次のブロックのデータパケット送信が、上記で詳述されたとおりに進む。このことは、送信におけるすべてのブロックのデータパケットとそのすべての組成データパケットとが送信されて、成功裏に受信され、あるいは再構築されるまで、繰り返される。
本発明に従い採用することができる受信方法論に従い、図4に概して示されるとおり、ステップ110において、パケットが送信トランシーバから受信される。ステップ112において、受信したパケットが記憶される。それから、システムはステップ114に進み、ステップ114において、受信したパケットは、上記ダウンロードを受信するアプリケーションに伝送される。それから、システムはステップ116に進み、ステップ116において、N個のパケット(すなわち、ブロック全体)が受信されている場合、システムはステップ118に進み、ステップ118において、記憶されたパケットが解放される。N個のパケットが受信されているため、ステップ124において判定されるとおり、損失回復は必要とされず、ステップ122において、システムは、パケットの受信数KがNに等しいことを報告する。
ステップ116において、N個のパケットが受信されていない場合、システムはステップ120に進み、ステップ120において、N個のパケットのブロックの受信部分のうち最後のパケットが受信されているかが判定される。N個未満のパケットが受信されているが、ブロックの中の最後のパケットが受信されている場合、パケットは失われており、これが、N個より少ないパケットが受信されている理由である。それから、パケットの受信数Kが、ステップ122において送信トランシーバに報告され、置換符号化パケットが、送信トランシーバによって送られる。
置換符号化パケットは、ステップ110において受信され、再構築を可能にするほど十分なパケットが受信されているとシステムがステップ116において判定するまで、上記方法論に従い処理される。それから、システムはステップ118に進み、ステップ118において、パケットは記憶装置から解放される。ステップ124において、システムは、失われたパケットが回復されるべきであるか、及び回復されることができるかを判定するであろう。回復は、ステップ126において実行される。このことは、ステップ122において送信トランシーバに報告される。
ステップ120において、ブロックの最後のパケットが受信されていない場合、受信したパケットは、別の、例えば、現在のブロックの中のパケットであり、あるいは新しいブロックのデータパケットからのパケットである。新しいブロックからのパケットでない場合、ステップ127において、システムはステップ122に進み、ステップ122において、受信したパケットの合計数Kが上記のとおり報告される。しかしながら、パケットが新しいブロックのデータパケットからである場合、システムはステップ110に進み、ステップ110において、システムは新しいブロックのパケットを受信し続ける。
図4aを参照すると、本発明方法に従うデータ受信方法論100aの一例示的な別の実施形態が示されている。ステップ110aにおいて、例えば図3の方法により提供されるとおり、N個のデータパケットとM個の符号化パケットとのブロックの、インターネットなどのデジタル通信チャネルを通じた送信に応答して、受信トランシーバが、送信トランシーバ、例えば図3の方法論に従い動作する送信トランシーバにより元々送信されたN個のデータパケットとM個の符号化パケットとのブロックのうちいくつか又はすべてを構成するNr個のデータパケットとMr個の符号化パケットとを受信する。
システムにより使用される特定の消去符号化アルゴリズムに従い消失データパケットを置換するために使用されるように送信トランシーバシステムにより生成された符号化パケットは、受信されると、ステップ112aにおいて記憶される。同様にして、データパケットもまた、受信されると、ステップ114aにおいて記憶されてよい。符号化パケットとデータパケットとは双方、それ自体が符号化パケットであるかデータパケットであるかを示す指標を有するようにヘッダにおいて符号化される。
ステップ116aにおいて、受信トランシーバシステムは、受信しているデータパケットの数Nrと受信している符号化パケットの数Mrとを数える。ステップ118aにおいて、受信トランシーバは、すべてのデータパケットが受信されているかを判定する。上記が当てはまる場合、システムはステップ120aに進み、ステップ120aにおいて、ステップ114aにおいて記憶されたN個のデータパケットは、これらが受信されたか、あるいはこれらがデータパケットのブロックの最初の送信の間にまず失われ、それから例えば受信したデータパケットと符号化パケットとを用いて例えば上記で規定されたアルゴリズム又は別の消去符号化方法論に従い再構築されたかにかかわらず、すべてのデータパケットを蓄積する機能を実行するメモリにダウンロードされる。
それから、ステップ122aにおいて、システムは、第1のブロックのN個のデータパケットの受信及び/又は再構築を確認し、この情報を送信トランシーバに送ることによって次のブロックのN個のデータパケットを要求する。
送信されたN個のデータパケットのすべてが受信されなかった場合、ステップ118aにおいて、システムはステップ124aに進み、ステップ124aにおいて、受信したデータパケットの数と合わせた受信した符号化パケットの数が、使用される特定の消去符号化方法に従う失われたデータパケットの再構築を可能にするかどうかが判定される。より具体的に、受信したデータパケットの数と受信した符号化パケットの数との加算が、現在のブロックの中のデータパケットの数より大きく、あるいは等しい場合、システムは、上記で規定された消去符号化アルゴリズムを使用して、採用される特定の消去符号化方法論に関連付けられたデコードアルゴリズムを用いて失われたデータパケットを再構築するための、十分な情報を有する。
それから、このデコードアルゴリズムがステップ126aにおいて実行され、N個のデータパケットのブロックの最初の送信の間に失われたデータパケットすべての生成をもたらす。より具体的に、ステップ114aにおいて記憶された元の生データパケットとステップ112aにおいて記憶された符号化パケットとが、受信トランシーバにおいてデコードアルゴリズムに入力される。それから、デコードアルゴリズムが使用されて、失われたパケットの内容を計算し、同じものの再構築を生成する。
それから、ステップ126aにおいて実行される消去符号化スキームのデコードアルゴリズムを用いて生成された再構築データパケットは、ステップ114aにおいて記憶されたデータパケットと結合されて、デジタルデータ通信チャネルの他端における送信トランシーバにより元々送られたN個のデータパケットのブロックの情報内容を有するN個のデータパケットの完全な組を形成する。それから、システムは進んで、ステップ120aにおいて、N個のデータパケットの再組み立てされたブロック(うまく受信されたデータパケットと消去符号化スキームに関連付けられたデコードアルゴリズムを用いて再構築されたデータパケットとを含む)を記憶し、ステップ122aにおいて、データシーケンスの中の次のブロックのデータパケットを要求する。
ステップ124aにおいて、受信トランシーバが、失われたデータパケットを再構築するほど十分な符号化パケットを自身が有していないと判定した場合、システムはステップ127aに進んで、追加の符号化パケットを要求する。この要求は送信トランシーバに送られ、送信トランシーバにおいて、消去符号化及び符号化アルゴリズムが使用されて追加の符号化パケットを生成する。この追加の符号化パケットは、すべての以前に生成された、現在のブロックのN個のデータパケットに関連付けられた符号化パケットとは、異なる。
ステップ128aにおいて送信トランシーバから受信トランシーバが受信した補足的なパケットは、ステップ124aにおいて十分性について再度テストされ、ステップ124aにおいて、システムは、すべてのうまく受信したデータパケット及び受信した符号化パケット(現在のブロックの中の情報の最初の伝送におけるNr個の受信データパケットと共に最初の送信において受信したものを含む)が失われたデータパケットの再構築を可能にするほど十分であるかを判定する。上記が当てはまる場合、システムは、ステップ126aに進んでよく、そうでない場合、システムは、必要とされるデータパケットを受信するために要求し、試行するサイクル(ステップ127a及び128a)を繰り返さなければならない。
図3に示される送信方法論の実施形態に従い、送るべき符号化パケットの数に関する判断は送信トランシーバにおいて行われるが、この判断は受信トランシーバにおいて行われることも可能である。
図1乃至図4に関連して説明された、データパケット再送信なしで完全なパケットブロック受信を確保する出願人の独自DPR(TM)プロトコルの好適な実施形態は、以下に説明されるシステムなどの通信システムにおいてDPR(TM)プロトコルを使用することである。
本発明は、アプリケーションAとアプリケーションBとの間のデータ通信ネットワークにわたって通信経路を確立する方法及び装置に向けられる。アプリケーションA及びアプリケーションBは、(レイヤ4における)TCPと(レイヤ3における)IPとを含む標準のOSIスタックの実装を有する。DPRTMプロトコルにより統制されるトンネルが確立されて、ローカルのスプーファ(spoofers)を用いて管理されるTCPフロー制御でトラフィックを運び、消去符号化モジュールが、(有限体を通じた代数的演算を用いた)損失補償、接続管理、レート制御、フロー制御及び多重化を提供する。
図5は、システム1010がある通信エンドポイント1012(クライアント)と第2の通信エンドポイント1014(サーバ)との間でUDPパケットを確実に送信するために使用している構成要素の概略図である。クライアント側における信頼可能消去符号化モジュール(Reliable Erasure Coding Modules)1016aとサーバ側における1016bとが、以下に説明される本発明プロトコルにおいて使用される。図5を参照すると、信頼可能消去符号化モジュール1016a及び1016bの主な目的は、UDP/IPを通じてDPRTMプロトコルによって統制される双方向性通信チャネルを作成し、管理することである。信頼可能消去符号化モジュール1016a及び1016bは、接続管理、レート制御、フロー制御及び信頼性のある送信と共に、消去符号化、フラグメンテーション及び再組み立て、多数のTCPセッションを多重化することを提供する。DPRTM接続確立及び終了は、モジュール1018a及び1018bによって管理される。(DPRTMクライアントごとに)単一の、対応DPRTMサーバとのDPRTM接続が作成され、このクライアントにより開始され、あるいは終了されるすべてのTCPセッションが、TCPセッション多重化モジュール1020a及び1020bにおいて、そのDPRTM接続へと多重化される。トンネルが上がっており、動作可能であることを検証するために、周期的な「キープアライブ」メッセージがトンネル1021にわたって送られる。さらに、上記メッセージは、RTT(ラウンドトリップタイム)及び損失レートなどのネットワークパフォーマンスに関する情報を提供する。消去符号化モジュール1016a又は1016bに対する入力はデータストリームであり、このデータストリームは、(方向に依存して)生データ又はDPRTMエンコードされたパケットであってよい。データストリームは、消去符号化処理を可能にするように固定サイズブロックのN個のパケットに区分される。IPレイヤによるさらなるパケットフラグメンテーションを防止するために、MTU(最大伝送ユニット)値がさらに固定される。DPRTMの好適な消去符号化スキーマは、本明細書において十分に参照により援用される米国特許第7,076,315号に説明されるとおりの系統的なランダム線形ネットワーク符号化である。上記スキーマにおいて、N個のパケットを包含する各ブロックについて、生パケットは到着順に送られ、推定される損失レート(ELR)に依存して、余分な(extra)符号化パケットが生成され、送られる。消去符号化モジュール1024a及び1024bは、有限体にわたってランダムに又は決定的に生成される乗算係数を用いて符号化パケットを生成することができる。乗算係数がランダムに生成される場合、これらは、DPRTMのヘッダに組み込まれて、符号化パケットを構築することに使用された線形結合(linear combination)と共に送信される。乗算係数が決定的アルゴリズム、例えば特定次数のガロア体にわたる多項式の順次的なリストを用いて選択される場合、上記生成アルゴリズムを、接続作成の時点で1回、及びその後、送信器が現在使用されているアルゴリズムを別のもので置換する判断を行うたびに受信器に伝えることによって、パケットヘッダにおける乗算係数の送信を回避することが可能である。全体的なレイテンシ及びジッタが、実際のパケットフローに並行して消去符号化/デコード演算を実行することによって低減されることができる。トンネル1021にわたるフローは、フロー制御モジュール1026a及び1026bによって管理される。消去符号化モジュール1016a及び1016bにより送られるパケットの各ブロックについて、ACKパケットが受信器により生成され、トンネルをわたって返される。ACKパケットは、フローを管理し、チャネル特性(例えば:RTT、ジッタ、損失レート)を推定し、輻輳制御をサポートし、フロー制御をサポートし、信頼性スキーマをサポートするために、フロー制御モジュール1026a及び1026bによって使用される。輻輳管理モジュール1028a及び1028bは、標準のTCP Vegasアルゴリズムを使用することができる。
図6は、ある通信エンドポイント1112(クライアント)と第2の通信エンドポイント1114(サーバ)との間でUDPパケットを送信することに使用されるシステム1100の構成要素の概略図である。クライアント側における汎用的消去符号化(EC)モジュール(Generic Erasure Coding (EC) Module)1116aとサーバ側における1116bとが、以下に説明される本発明プロトコルにおいて使用される。図6を参照すると、汎用的消去符号化モジュール1116a及び1116bの主な目的は、DPRTMプロトコルを用いてUDPエンコードされたIP接続を通じて双方向性接続を作成し、管理することである。汎用的消去符号化モジュール1116a及び1116bは、消去符号化、フラグメンテーション及び再組み立て、並びに接続管理を提供する。接続確立及びクローズ1118a及び1118bが、標準のUDP状態機械を用いて実施される。クライアントごとの単一のDPRTM接続が作成され、上記クライアントについてのUDPデータグラムがその接続へと送られる。トンネルが上がっており、動作可能であることを検証するために、周期的な「キープアライブ」メッセージがトンネル1121にわたって送られる。さらに、上記メッセージは、RTT(ラウンドトリップタイム)及び損失レートなどのネットワークパフォーマンスに関する情報を提供する。汎用的消去符号化モジュール1116a又は1116bに対する入力(方向に依存する)は、バイトストリームであり、このバイトストリームは、生データ又はIPパケットであってよい。バイトストリーム(又はパケットストリーム)は、所定サイズのブロックサイズパケットに分割され、ネットワークMTU(最大送信ユニット)が超過されないことを確保する。フラグメンテーション及び再組み立て1122a及び1122bは、それぞれの汎用的消去符号化モジュール1116a及び1116b内で行われる。DPRTMの好適な消去符号化スキーマは、系統的な符号化である。上記スキーマにおいて、長さNの各ブロックについて、生パケットは到着順に送られ、推定される損失レート(ELR)に依存して、余分な符号化パケットが生成され、送られる。消去符号化モジュール1124a及び1124bは、有限体においてランダムの又は決定的な符号を用いて符号化パケットを生成することができる。符号化係数がランダムに生成される場合、これらは、DPRTMパケットのヘッダに組み込まれる。決定的な符号については、予め決定されたルックアップテーブルを使用し、符号化係数に対するポインタを送ることによって、ヘッダに符号化係数を含むことを回避することが可能である。全体的なレイテンシ及びジッタが、実際のパケットフローに並行して消去符号化/デコード演算を実行することによって低減されることができる。
図7は、本発明の好適な一実施形態のクライアント側実装の高レベルの概略図を示し、これにおいて、TCPトラフィックとUDPトラフィックとの双方が管理される。アプリケーション1210は、通常、携帯電話、タブレット、コンピュータ又は組み込み型システムなどの物理デバイス上に常駐する。アプリケーション1210は、図7に示されるとおり、クラウドプロキシ実装に対する通信ネットワークを通してデータリンク1212をわたって通信する。好適な一実施形態において、アプリケーション1210は、オペレーティングシステムのユーザ空間1211に存在する。例えば、長い遅延又は高い誤りレートに起因して、既存のプロトコルが高帯域幅遅延プロダクトに対して理想的でない状況においてパフォーマンスを向上させるために、プロトコルスプーフィングがデータ通信に使用される。TCP接続は、長い遅延のリンクなどの高帯域幅遅延プロダクトを用いたリンクに対する不十分なウィンドウサイズに起因して、パフォーマンス制限を被るおそれがある。こうしたタイプの遅延は、GEO衛星、セルラーネットワーク、Wi‐Fiネットワーク及び他の通信ネットワークなどの通信ネットワークにおいて見られる。TCPのスロースタートアルゴリズムは、接続送信スピードを有意に遅延させる。スプーフィングルータは、TCP輻輳ループを低減させる。このことは、TCPをXTPと同様のプロトコルに変換する。
OSIスタックのTCP/UDP1214及びIP1216部分は、オペレーティングシステムのカーネル空間1217にある。OSIスタックは、オペレーティングシステムを修正することなく修正されることができない。パケットストリームへのアクセスを得るために、TUNデバイス1218が使用される。TUNデバイス1218は、パケットストリームがユーザ空間1211からアクセスされることを可能にする標準の仮想デバイスドライバである。このポイントにおいて、アップストリームパケットフローとダウンストリームパケットフローとが分離される。アップストリームパケットフローに続いて、パケットは、TCP/非TCPスプリッタ分配器1220に配信される。TCP/非TCP分配器1220は、IPヘッダのプロトコルフィールドを調べ、TCPパケットをTCPスプーファモジュール1222に送る。
すべての他のパケットタイプ(UDPなど)は、汎用的消去符号化(EC)エンコーダ1224に送られる。符号化トンネル1212について、消去符号化エンコーダ1224と(図8に示される)サーバ1330との間の、汎用的ECモジュール1124aと1124bとの間で(図6)、開ループ制御が使用される。クライアントが、ネットワーク損失に起因してパケットを再構築するほど十分な情報を受信しないとき、クライアントは、発信した汎用的ECエンコーダ1224に損失情報を送ることになる。ECエンコーダ1224は、損失情報に関してリンクをモニターすることになり、更新される損失情報に基づいて符号化パケットの数を増加させ、あるいは減少させることになる。
汎用的ECエンコーダ1224は、ネットワーク符号化を非TCPパケットに提供して信頼性レイヤを実施する。汎用的ECエンコーダ1224からのパケットフローは、送信の前に、UDPヘッダ1226及びIPヘッダ1228を用いてカプセル化される。TCPスプーファモジュール1222からのパケットは、ECエンコーダ1224に送られる。クライアント側におけるECエンコーダ1224と(図8に示される)サーバ側におけるECデコーダ1330との間で、レート適応が実行される。ECエンコーダ1224からのパケットストリームが、UDPモジュール1226及びIPモジュール1228からの適切な情報を用いてカプセル化され、リンク1212をわたって送信される。サーバ側からリンク1212から到着するパケットは、IPレイヤ1228及びUDPレイヤ1226において終端される。それから、すべてのパケットはECデコーダ1230に向けられる。
ECデコーダ1230は、消去符号化チャネルについて、サーバ1324とクライアント1230との間で閉ループフロー制御を使用する。TCPフロー制御は、消去符号化チャネルにおいて明確に使用されない。ECデコーダ1230が、ネットワーク損失に起因してパケットを再構築するほど十分な情報を受信しない場合、ECデコーダは、サーバ1324に、再構築を可能にするほど十分なパケットを送るように要求を送ることになる。求められるパケットの数は、消失パケットの数に等しくてよく、あるいはより大きくてよい。ECデコーダ1230は、リンク1212をわたるローカル通信のすべてを扱い、(適切にデコードされた)ダウンリンクTCPパケットをTCPスプーファ1222とカーネルベースのTUNデバイス1228とに渡すことになり、上記パケットは、アプリケーション1210に対するプロトコルスタックへと渡されることになる。
TCPスプーファ1222が、図7に示されている。TCPスプーファ1222は、(1又は複数の)ローカルのアプリケーション1210のために肯定応答を作成することの責任を負う。実装者がTCP状態機械設計の技術を経験していることが仮定される。従来のTCP状態機械実装において、アプリケーションは、パッシブサーバ(リッスンする)又はアクティブクライアント(開始する)として動作することができる。TCPスプーファの役割は、受動的に動作し、クライアント又はサーバいずれかの通信を検出して、TCP状態セッションの通常の反対側によって見られるであろうとおりに適切なマッチする状態挙動を実施することである。本発明の部分として実施され得る2つの好適なTCPスプーファの実施形態がある。第1の実施形態は、透過(transparent)モードにおいて動作する。透過モードにおいて、SYN、SYN_ACKなどの特定の制御メッセージがTCPスプーファを通して渡され、したがって、エンドツーエンドのTCP接続が2つのアプリケーションの間で直接確立される。このモードにおいて、TCPスプーファは、TCPセグメントのすべてのヘッダ情報、例えば、シーケンス番号、タイムスタンプなどをさらに渡す。第2のモードは、不透明(opaque)モードである。不透明モードにおいて、TCPスプーファは、フルの(標準の)TCP状態機械を作成することによってTCPセッションを完全に終了させる。
図8は、クラウドプロキシ実装の高レベル図である。これは、図3のクライアント側実装に対して対になる実装である。クラウドプロキシ実装は、概念的に、アプリケーション又はその関連TCPスタックなしの、クライアント側の直接的なミラーである。むしろ、パケットは、図7に説明されるとおり、クライアントアプリケーション1210から、クライアントデバイスからのリンク1212を通じて入って来る。図8を参照すると、データが、クライアントデバイス1210からリンク1312を介して受信され、ネットワークスタックのIPレイヤ1328によって、次いでネットワークスタックのUDPレイヤ1326によって処理される。リンク1312から到着するパケットは、IPレイヤ1328及びUDPレイヤ1326において終端される。それから、すべてのアップリンクトラフィックは、ECデコーダ1330に移動される。ECデコーダ1330は、リンク1312をわたるローカル通信のすべてを扱い、(適切にデコードされた)アップリンクパケットをTCPスプーファ1322とカーネルベースのTUNデバイス1318とに渡し、上記パケットは、リンク1317を介してIPスタック1316へと渡され、それからネットワークに対して転送されることになる。レート適応が、ECデコーダモジュール1330とTCPスプーファ1322との間で実行され、ECデコーダモジュール1330は、アップリンク方向において、消去デコード、接続管理、輻輳制御、フロー制御及び逆多重化(de-multiplexing)を実施する。
図9は、透過的なスプーフィングモードにおいてクライアントからサーバへTCP接続を確立するためのTCP状態シーケンスを示す。これまでに述べられたとおり、TCPスプーファ1322は、パッシブモードにおいて動作する。TCP接続状態機械の開始ポイントは、CLOSED状態1401である。状態機械は問合せループ1402に入って、トンネルがリンク1312をわたって確立されているかを判定する。そうである場合、状態機械は、LISTEN状態1403に移る。ローカルのアプリケーションから、あるいはトンネルからのいずれかのSYNパケットの受信に基づいて、LISTEN状態1403から起こり得る遷移が2つある。遷移1404は、ローカルのアプリケーションからのSYNパケットの受信を示す。上記パケットを受信すると、スプーファ1322は、新しいセッションハンドラを作成し、そのカウンターパートに対するトンネルにSYNパケットを転送し、SYN_RCVD状態1406に入る。別法として、スプーファ1322は、トンネルからSYNパケットを受信し、遷移1405を介してSYN_SENT状態1407に進むこともある。遷移1405は、スプーファ1322に、新しいセッションハンドラを作成させ、トンネルからのSYNパケットをローカルのアプリケーションに転送させ、SYN_SENT状態1407に入らせる。SYN_RCVD状態1406からの遷移は、1408で示される。この遷移は、SYN/ACKがトンネルから返されたとき、引き起こされる。状態機械は、SYN/ACKをローカルのアプリケーションに転送し、SYN_ACK_RCVD状態1409に入る。ローカルのアプリケーションが、そのSYN/ACKを返すとき、状態機械は、1410を介してESTABLISHED状態1411に遷移する。ESTABLISHED状態1411は、エンドツーエンドのTCPセッションが作成されていることを示す。別法として、状態機械は、SYN/ACKがトンネルを介して受信されたとき、SYN_SENT状態1407からESTABLISHED状態1411に遷移することができる(1412)。同時的な開放条件は接続確立状態機械に明確に示されていないことが留意されるべきである。さらに、例外遷移はここで明示的に論じられないが、図7及び図8に示されている。
図10は、図9に示されたように確立された接続をクローズするための状態シーケンスを示す。エントリポイントは、これまでに説明された接続状態機械の最終結果であるESTABLISHED状態1501である。ESTABLISHED状態1501からの出口遷移が2つある。FINメッセージがローカルのアプリケーションから受信された場合、状態機械は遷移1509を介してCLOSE_WAIT状態1503に移る。状態機械は、トンネルに対してFINメッセージを、アプリケーションに対してACKメッセージを送ることになる。状態機械が(ESTABLISHED状態1501にあるときに)トンネルからFINメッセージを受信した場合、状態機械は遷移1508を介してFIN_WAIT1状態1502に移る。状態機械はFINメッセージをアプリケーションに送ることになる。FIN_WAIT1状態1502から続けると、潜在的な出口遷移が2つある。状態機械がアプリケーションからFINメッセージを受信した場合、このことは、同時的なクローズがあることを示す。ローカルのアプリケーションとトンネルの向こう側におけるアプリケーションとは、TCPセッションを同時にクローズしようとする。これは非常に可能性の低い事象であるが、状態機械はCLOSING状態1504に移り、トンネルに対してFINメッセージを、ローカルのアプリケーションに対してACKメッセージを送ることになる。ACKがローカルのアプリケーションから受信されたとき、状態機械は遷移1514を介してCLOSED状態1507に移り、ローカルのアプリケーションにACKメッセージを送ることになる。CLOSED状態は、この状態機械の最終的な状態である。FIN_WAIT1状態1502からの第2の出口経路は、ACKがローカルのアプリケーションから受信されたときに生じる。これは通常の経路であり、状態機械は遷移1512を介してFIN_WAIT2状態1506に移る。状態機械はACKをローカルのアプリケーションに送ることになる。状態機械は、ローカルのアプリケーションからFINを受信したとき、遷移1513を介してFIN_WAIT2状態1506からCLOSED状態1507に遷移することになる。状態機械は、ローカルのアプリケーションに対してACKメッセージを、トンネルに対してFINメッセージを送ることになる。CLOSE_WAIT状態1503に戻ると、状態機械は、トンネルからFINを受信したとき、遷移1510を介してLAST_ACK状態1505に遷移することになる。状態機械は、FINメッセージをローカルのアプリケーションに送ることになる。状態機械は、ローカルのアプリケーションからACKを受信したとき、遷移1511を介してLAST_ACK状態1505からCLOSED状態1507に遷移することになる。RLNCが消去符号化の好適な一方法であるが、発明者は、パフォーマンスとオーバヘッド及びペイロードの考慮とのバランスをとる第2の消去符号化方法を見出している。
ネットワーク符号化(NC)原理は、データの代わりの表現として代数式を用いることに基づく。例えば、IPパケットペイロードが、2進数を表す(9,10,2,4)の表現を包含してよく、上記表現は(1001,1010,0010,0100)であろう。パケット自体は、IPパケット1、IPパケット2、IPパケット3及びIPパケット4が一組の線形式として表されるであろうように変数として表されることができ、したがって、4つ(4)の線形式が4つ(4)の変数について解くことを必要とされるであろう。上記式自体は、上記4つ(4)の変数について一意的に解くために線形独立でなければならない。
最先端のメカニズムは、乱数生成手法を使用することである。このことの一例は、Saitoに対する米国特許第6,857,003号に開示されており、第2の例は、Fortunaの暗号アルゴリズムである。Fortunaは、暗号論的に安全な疑似乱数生成器(PRNG)である。Niels Ferguson及びBruce Schneierの“Practical Cryptography”(2003年)を参照されたい。
ノードは、情報についてのソースポイント、デスティネーションポイント、又はソース及びデスティネーションポイントとして定義される。ノードは、情報配信に係る最初のポイント、最後のポイント、及び任意の中間ポイントを含む。ノードは、自身が受信したパケットのランダムな線形結合を、ガロア体から選ばれた係数と共に送信する。上記体のサイズが十分に大きい場合、(1又は複数の)受信器が線形に独立な結合を得る(そして、ゆえに革新的な情報を得る)ことになる確率は1に近付き、この1は100%の確率である。
符号化ヘッダが使用されるようなプロトコルを作成するメカニズムが、米国特許第8,068,426号(Sundarajanら)及び第7,706,315号(Effrosら)、Sundarajanらの“Network Coding meets TCP:Theory and Implementation”、Proceeding
of the IEEE、Vol.99、No.3、2011年3月に開示されている(3つすべてが本明細書において十分に参照により援用される)。
of the IEEE、Vol.99、No.3、2011年3月に開示されている(3つすべてが本明細書において十分に参照により援用される)。
ヘッダは、様々なフィールドとソース及びデスティネーションポートとを含む。ポート情報は、符号化パケットのセッションを識別するために必要とされる。これは、TCPヘッダから取り出される。第2のフィールドは、ベース(base)である。これは、TCPバイトシーケンス番号である。その次のフィールドは、線形結合に関わるパケットの数であるNである。その次のフィールドは開始であり、これは、線形結合に関わるi番目のパケットの開始バイトであり、ここでiは1からNへ進む。終了は、線形結合に関わるi番目のパケットの最後のバイトである。最後のフィールドは、線形結合に関わるi番目のパケットに使用される係数であるaiである。基本的に、i番目のパケットの開始バイトと終了バイトとがそのパケットを定義する。
RLNCを用いると、符号化パケットは、符号化パケットについての中間パケット及びヘッダの各々の場所に対するポインタと共に、線形結合を作成することに使用された係数を包含する必要がある。パケットの数は変化することがあるため、ソースからデスティネーションへの係数伝送に使用されるオーバヘッドの量は可変であり、大きい値のNに関してかなり大きくなる可能性がある。実際には、TCP/IPネットワークについて、高パフォーマンスシステムのための最大のNは、30より小さいか又は等しい。このことは、パケット結合が100より大きく、10Kに近づくことがあるところの大きなファイル伝送における使用に関して、RLNCの有用性を低減させる。
発明者は、予め算定された係数を使用することによって線形独立の式を作成し、それから、係数をコードブックにおいて配信し、コードブックを情報の伝送に関わる各ノードに送ることができることを見出した。上記式を作成する別の一方法には、係数が情報の伝送に関わる各ノードとやりとりされる必要がなく、単に最初及び最後のノードとやりとりされる必要があるような予め定義された多項式(例えば、階乗)を送ることを伴う。推測的に(a priori)知られるコードブック又は多項式は、適切な係数が何であるかをデスティネーションポイントが理解することを可能にして、伝送される線形式のデコードを可能にし、元の変数(すなわち、パケット)の再作成を可能にする。
システム設計者は、1又は複数の予め決定されたコードブックに関連してDLNCを実施することを選んでもよい。このシステムの便益の1つは、コードブックが暗号メカニズムと同様に再セットアップされることができることであり、したがって、伝送の途中において、コードブックは変更されることができる。このことは、ポリシーに基づく情報の管理(例えば、セキュリティ)に対して望まれることがある。
予測可能シーケンス生成式は、より少ないメモリを必要とし、かなり低コストのデバイス上で実施されることができる。
通常のランダム線形ネットワーク符号化スキーム(RLNC)は、一組のN+k個の線形式の構築プロセスを含み、ここで“k”は、通信チャネルにおける推定されるパケット損失レート(PLR)であり、下記の:
1)次元“N”のランダム係数のベクトルを選択するステップ
2)パケットベクトル(順序付けられた一組のN個のパケット)と係数のベクトルとを乗算して結合されたパケット(結合パケット)を得るステップ
3)ステップ(1)‐(2)を繰り返して“N+k”個の結合パケットを生成するステップ
を含む。
1)次元“N”のランダム係数のベクトルを選択するステップ
2)パケットベクトル(順序付けられた一組のN個のパケット)と係数のベクトルとを乗算して結合されたパケット(結合パケット)を得るステップ
3)ステップ(1)‐(2)を繰り返して“N+k”個の結合パケットを生成するステップ
を含む。
結果的な一組の“N+k”個のパケットは、チャネルを通じて送信され、受信端によって行列代数を用いてデコードされる。デコード可能であるために、係数がランダムに選択されると仮定すると、RLNCは、デスティネーションにおいて係数のエンコードベクトルを知られるように内部的な情報交換を必要とする。それゆえに、受信器に対して送信器は、下記の情報、すなわち、
1)各々の結合パケットを構成することに使用された係数の組
2)結合パケットの中のパケットの数
3)結合パケットの中の各パケットのパケット長
を伝えるべきである。
1)各々の結合パケットを構成することに使用された係数の組
2)結合パケットの中のパケットの数
3)結合パケットの中の各パケットのパケット長
を伝えるべきである。
図11は、従来のRLNCの通常のエンコードプロセスを示し、図12は、従来のRNLCデコードプロセスを表す。
図11を参照すると、エンコードプロセスは、パケットベクトルと係数ベクトルとの行列乗算であり、パケットiが係数aiによって乗算されることを意味する。ここで、iは1からN(ウィンドウの中のパケットの数)へ進む。それから、中間値が合計されて符号化パケットが作成される。
通常、例えばNC−TCPなどの現在のRLNC実装において、NCサポート情報が、パケットヘッダに対してオーバレイとして追加される。言い換えると、a11乃至annが、毎回、ランダムに生成される。RLNCにおいて、N個のパケットについて、ソースノードは、N個のパケットを送り、NCノードにおいてランダム符号化を追加することになり、符号化パケットNC1乃至NCnを送出することになる。符号化パケットは、デコードノードにおいてデコードされ、それから、受信ノードによって受信されることになる。いずれかのパケットが失われた場合、追加のパケットがNCn+1乃至NCm+nであり、ここで、mは失われたパケットの数である。こうして、m+n個の符号化パケットが合計で送出される。
上記は、低減されたペイロードサイズをもたらし、このことが今度は、特に、TCP/IPなどの現代のトランスポートプロトコルに関して重ね合わせられたとき、より低い効率につながる。RLNCにおいて使用されるとおりのランダム係数の選択を、本発明により提案される非ランダムの、決定的プロセスで置換することは、送信器と受信器との間の余分な情報伝送の必要性を除去し、それゆえに、通信効率及び信頼性を劇的に向上させる。このことは、図13と図14とにおける比較に示される。
図13は、RLNCにおいて使用されるような、バンド内で送信されるNC係数を用いた汎用的パケットフォーマットを示す。図13は、RLNCが使用されるときのバンド内での係数の送信に起因した、追加されるオーバヘッド及びより大きいペイロードを示す。ひとまとまりのn個のデータパケットをデコードする(例えば、式を解くために行列反転をする)とき、式の次数(order)はn3である。
図14を参照すると、行列の中の予め決定された値を用いて本発明システムに関連して使用されるとき(DLNC)、上記値は、デコードすることがより容易である。本発明システムにおいて、符号化パケットは、常に符号化ノードにおいて作成されるが、送出されない。生パケットだけが送られる。受信側において、非符号化パケットが受信されたとき、該パケットは、行列上の該パケットのスポットに行く。生パケットは、ちょうど対角線上に非ゼロ値を有することになる。失われたパケットがあるとき、信号が符号化ノードに送り返され、符号化ノードは符号化パケットNC1乃至NCmを生成する。ここで、mは失われたパケットの数である。それゆえに、パケットが必要とされるときに限り、m個の線形結合パケットだけが送出される。符号化パケットがデコーダに送り返されたとき、行列の非対角線空間に非ゼロ値が存在することになるが、通常、行列の完全なサイズより小さく、こうして、行列式を解くことはかなり容易になり、より少ないパワーで済む。
本発明の好適な一実施形態は、下記の例示的なアルゴリズムにより具現化される既知のシーケンスを用いたDLNC係数の生成である。
図16を参照すると、DPR(TM)装備エンティティ又はクライアント502(これは、中でも、モバイルデバイス、アプリケーションプロセスであってよい)が、DPR(TM)チャネル521を確立したい場合、DLNCを用いて、ネットワークの中の別のDPR(TM)装備デバイス504(又はプロキシ)と接続をすることが必要とされる。接続は、TCP接続要求と同様のスリーウェイハンドシェイクを用いて確立される。要求700が、クライアント502からサーバ504に送られる。確認702が、サーバ504からクライアント502に送られ、コードブック又はシーケンス生成式のいずれかを含むリンクパラメータを返す。それから、クライアント502は「リンク確立」応答704をサーバ504に送る。接続は、終了要求706を用いて、クライアント502又はサーバ504の要求ごとに終了される。
上記アプローチは、リンクが複数のセグメントから成るところの条件を包含する。この手順の一例は、下記の通り説明されることができる。NCに対して選ばれたガロア体(GF)がGF(256)である場合、すべての係数は0乃至255から選ばれる。GF(256)内で係数を選択するためのいくつかの潜在的なメカニズムが存在する:
a)素数についての順序付けられたリストが使用されてよく、ここで、該数<256であり(選ばれたNCフィールドがGF(256)である場合)、最低数がシーケンス番号0 SN(0)に、その次がシーケンス番号1 SN(1)に割り当てられるなどする
b)NxN符号化行列の第1の行について、N個の係数が順次選択される。SN(0)で始まり、すなわち、1,2,3,5,7,11,...,SN(k),...,SN(N−1)である。このことは、N個のパケットを一緒に符号化することを可能にする
c)NxN行列について、同じ行列の次の行が、第1の行のベクトルを1か所ずつ右に回転することによって形成され、ゆえに、SN(N)で始まってSN(N−1)で終わる
d)NxN行列のN行すべてが、行i、1≦i≦Nについての係数のベクトルによって形成され、ここで、iは、行i−1の係数のベクトルを1ポジションずつ右に回転することによって生成され、SN(N−i+1)で始まってSN(N−i)で終わる
e)(送信損失に起因して)N個より多くの式が必要とされる場合、次のベクトルは、SN(0)に代わってSN(1)で始まる同じシーケンスからのN個の新しいエントリを選択することによって形成される。換言すると、元の生成ベクトルが1,2,3,5,7である場合、追加される情報ベクトルは2,3,5,7,11であり、上記アルゴリズムが繰り返される。このことは、元の情報を再構築するために必要とされる十分な線形独立のベクトルが迅速に受信されることを保証する
f)サイズNのパケット生成を考えると、N個の係数についての各々の選択されるシーケンスは、N個の式を生成するのに十分である。一組の50個の素数は、50xN個の違ったベクトルを生み出すことになる。より多くのベクトルが必要とされる場合、上記組を再順序付けすれば、次の50N個のベクトルを生み出すのに十分であろう。50個の数字についての50!(50の階乗)の順列が存在するため、この方法は、実質的に無限数の係数ベクトルを生成するのに十分である。このアルゴリズムは、リンクの両端が追加の情報の必要なく同期的に動作することを可能にする。このことは、通信プロトコルを大いに簡素化し、パケットオーバヘッドをかなり低減させる。
a)素数についての順序付けられたリストが使用されてよく、ここで、該数<256であり(選ばれたNCフィールドがGF(256)である場合)、最低数がシーケンス番号0 SN(0)に、その次がシーケンス番号1 SN(1)に割り当てられるなどする
b)NxN符号化行列の第1の行について、N個の係数が順次選択される。SN(0)で始まり、すなわち、1,2,3,5,7,11,...,SN(k),...,SN(N−1)である。このことは、N個のパケットを一緒に符号化することを可能にする
c)NxN行列について、同じ行列の次の行が、第1の行のベクトルを1か所ずつ右に回転することによって形成され、ゆえに、SN(N)で始まってSN(N−1)で終わる
d)NxN行列のN行すべてが、行i、1≦i≦Nについての係数のベクトルによって形成され、ここで、iは、行i−1の係数のベクトルを1ポジションずつ右に回転することによって生成され、SN(N−i+1)で始まってSN(N−i)で終わる
e)(送信損失に起因して)N個より多くの式が必要とされる場合、次のベクトルは、SN(0)に代わってSN(1)で始まる同じシーケンスからのN個の新しいエントリを選択することによって形成される。換言すると、元の生成ベクトルが1,2,3,5,7である場合、追加される情報ベクトルは2,3,5,7,11であり、上記アルゴリズムが繰り返される。このことは、元の情報を再構築するために必要とされる十分な線形独立のベクトルが迅速に受信されることを保証する
f)サイズNのパケット生成を考えると、N個の係数についての各々の選択されるシーケンスは、N個の式を生成するのに十分である。一組の50個の素数は、50xN個の違ったベクトルを生み出すことになる。より多くのベクトルが必要とされる場合、上記組を再順序付けすれば、次の50N個のベクトルを生み出すのに十分であろう。50個の数字についての50!(50の階乗)の順列が存在するため、この方法は、実質的に無限数の係数ベクトルを生成するのに十分である。このアルゴリズムは、リンクの両端が追加の情報の必要なく同期的に動作することを可能にする。このことは、通信プロトコルを大いに簡素化し、パケットオーバヘッドをかなり低減させる。
上記で定義されたアルゴリズムをサポートするための簡素化されたパケットフォーマットは、送信された符号化パケットの成功裏のデコードを可能にするために下記のヘッダフィールドを必要とする:
1バイトのフレームタイプ ‐ NCデータ及びサービスパケット間の区別を可能にする
2バイトのフレーム長 ‐ パケット処理を可能にする
1バイトのペイロードタイプ ‐ 様々なタイプのNCデータパケット、例えば生パケット及び結合パケット間の差別化を可能にする
1バイトのトライ# ‐ 再送信シーケンス番号
3バイトの生成ID ‐ 符号化ウィンドウシーケンス番号
1バイトの、結合パケットの中のパケット数 ‐ エンコードされたパケットの数が常に知られていることを確保する
‐‐‐‐‐‐‐‐‐‐
合計:9バイト
さらに、結合される各パケットは、その係数によって乗算される前に、パケット長指標(2バイト)を先頭に付加される(pre-pended)必要がある。このことは、混在した長さのパケットの符号化を可能にする。
1バイトのフレームタイプ ‐ NCデータ及びサービスパケット間の区別を可能にする
2バイトのフレーム長 ‐ パケット処理を可能にする
1バイトのペイロードタイプ ‐ 様々なタイプのNCデータパケット、例えば生パケット及び結合パケット間の差別化を可能にする
1バイトのトライ# ‐ 再送信シーケンス番号
3バイトの生成ID ‐ 符号化ウィンドウシーケンス番号
1バイトの、結合パケットの中のパケット数 ‐ エンコードされたパケットの数が常に知られていることを確保する
‐‐‐‐‐‐‐‐‐‐
合計:9バイト
さらに、結合される各パケットは、その係数によって乗算される前に、パケット長指標(2バイト)を先頭に付加される(pre-pended)必要がある。このことは、混在した長さのパケットの符号化を可能にする。
上記追加の2バイトは、合計オーバヘッドを11バイトに等しくする。
提案されるパケットフォーマットの一例示が、図14に提示されている。
追加される11バイトのパケット情報は、通常の1500Bパケットの0.73%を、及び最も短いイーサネットパケットの64Bの17%を表す。50の生成サイズを仮定すると、DLNCを用いるシステムは、約3.7%のオーバヘッドを通常有するであろう。64Bのパケットサイズについて、RLNCを用いるシステムは、85.9%のオーバヘッドを通常有するであろう。本発明の消去符号化方法は、符号化係数の又はランダム生成を再現するために必要とされる情報の直接的な送信に基づいたこれまでのNC実装のオーバヘッドをかなり低減させる。損失確率に応じたオーバヘッドが、図15においてより詳細に示されている。
本発明の一重要要素は、決定的な、予測可能な、再現可能な態様における符号化係数の生成である。このことは、いくつかの非常に望ましい特性につながる。
第1に、係数情報を符号化パケットと共に送る必要性が除去されるため、送信オーバヘッドが低減され、このことが、増加されたプロトコル効率につながる。より詳細に、現在のRLNCにおいて、あるいは一般に、TCPを通じたレートレス消去符号実装において、通常のオーバヘッドは、ブロックにおいて使用されるパケットごとに12バイト+6バイトである。DLNC方法において、これは、11バイトに低減される。ブロックの中のパケットの数が30である場合に、IPパケットにおいて伝送される最大ペイロードは1350であり、最大IPパケットサイズは1500であり、RLNC方法は、11バイトの固定オーバヘッドを有するDLNCに対して、192バイトのオーバヘッドを使用する。この例において、RLNCは、出願人のDLNC方法よりも17倍大きいオーバヘッドを使用する。実際、このことは、DLNC方法がブロックの中で使用されるパケットの数によって制限されないことも可能にする。プロトコルオーバヘッド(11バイト)が生成サイズを感知しない(generation size agnostic)ため、提案されるフォーマットのさらに別の便益は、より低いISOスタックレイヤによるIPパケットフラグメンテーションのリスクなしに任意の生成サイズを使用する能力である。
第2に、この方法は、符号化係数の予測可能性を利用する低減された複雑性のテスト方法を可能にする。
第3に、係数の適切な選択が、デコードプロセスの間に必要とされるガウス消去を実行するときの計算複雑性の低減を可能する。
第4に、コードブック又はアルゴリズム的係数選択のいずれかを用いた係数選択の方法が、送信の間、コードブック又はアルゴリズムのポリシーに基づく変更を可能にする。さらに、符号化シーケンスがソース及びデスティネーションにおいて知られているため、符号化パケットが確立されたリンクの外部で使用され得ないので、上記メカニズムは、固有の信頼性及び安全性を提供する。このことは、プレミア付きの放送テレビ番組などの高価値コンテンツに関連して使用されるとき、非常に望ましい。
前述の実施形態における送信装置の処理機能は、ハードウェア又はソフトウェアにおいて実現されることができる。上記処理機能のすべてがハードウェア又はソフトウェアによって実現されるだけでなく、その一部がハードウェア又はソフトウェアを用いることによって実現されてもよい。すなわち、ハードウェア及びソフトウェアの組み合わせが採用されてよい。
前述の実施形態に関して、本発明の主旨の範囲内で、様々な修正例が考えられる。さらに、本明細書の記述に基づいて作成され、あるいは組み合わせられた様々な修正例及び適用例も考えられる。様々な変更、組み合わせ、副次的組み合わせ及び変形が、設計要件と他の要因とに依存して行われてよいことを当業者は理解すべきである。本明細書に説明された現在好適な実施形態に対する様々な変更及び修正が当業者に明らかになるであろうことが理解されるべきである。こうした変更及び修正は、本発明の主旨及び範囲から逸脱することなく、その意図される利点を弱めることなく行われる可能性がある
関連出願の相互参照/参照による援用
本特許出願は、2012年11月8日に申請され“METHOD AND APPARATUS FOR IMPROVING THE PERFORMANCE OF TCP AND OTHER NETWORK PROTOCOLS IN A COMUNICATIONS NETWORK”と題された米国仮特許出願第61/724,275号、2013年5月7日に申請され“METHOD AND IMPLEMENTATION FOR NETWORK CODING COEFFICIENTS SELECTION”と題された米国仮特許出願第61/820,682号、及び2013年8月19日に申請され“METHOD & APPARATUS FOR IMPROVING THE PERFORMANCE OF TCP AND OTHER NETWORK PROTOCOLS IN A COMMUNICATIONS NETWORK USING PROXY SERVERS”と題された米国仮特許出願第61/867,583号を参照し、これらに対して優先を主張し、かつこれらからの利益を主張する。上記出願の各々が、その全体を本明細書において参照により援用される。
関連出願の相互参照/参照による援用
本特許出願は、2012年11月8日に申請され“METHOD AND APPARATUS FOR IMPROVING THE PERFORMANCE OF TCP AND OTHER NETWORK PROTOCOLS IN A COMUNICATIONS NETWORK”と題された米国仮特許出願第61/724,275号、2013年5月7日に申請され“METHOD AND IMPLEMENTATION FOR NETWORK CODING COEFFICIENTS SELECTION”と題された米国仮特許出願第61/820,682号、及び2013年8月19日に申請され“METHOD & APPARATUS FOR IMPROVING THE PERFORMANCE OF TCP AND OTHER NETWORK PROTOCOLS IN A COMMUNICATIONS NETWORK USING PROXY SERVERS”と題された米国仮特許出願第61/867,583号を参照し、これらに対して優先を主張し、かつこれらからの利益を主張する。上記出願の各々が、その全体を本明細書において参照により援用される。
Claims (44)
- パケットを送信するパケット送信装置であって、
配信されていないパケットの再送信を制御するように構成された自動パケット再送信部と、冗長パケットをデータパケットブロックに追加するように構成された消去符号化部と、
冗長度決定部であり、
(i)ネットワーク状態情報を受信し、
(ii)受信器における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報に基づいて冗長度の量を動的に決定する
ように構成された冗長度決定部と、を含む、
パケット送信装置。 - 前記冗長度決定部は、前記受信器における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報と前記データパケットブロックの送信レートとに基づいて冗長度の量を動的に決定するように構成される、請求項1に記載のパケット送信装置。
- 前記冗長度決定部は、
(iii)前記受信器における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報と前記データパケットブロック及び前記冗長パケットの送信に割り当てられる送信レートの上限値とに基づいて前記データパケットブロックの中のパケットの数を動的に決定する
ようにさらに構成される、請求項1に記載のパケット送信装置。 - パケットを送信し、あるいは受信する通信システムであって、
パケット受信装置と、ネットワークを通して前記パケット受信装置と通信するパケット送信装置と、を含み、前記パケット送信装置は、
(a)配信されていないパケットの再送信を制御するように構成された自動パケット再送信部と、
(b)冗長パケットをデータパケットブロックに追加するように構成された消去符号化部と、
(c)冗長度決定部であり、
(i)ネットワーク状態情報を受信し、
(ii)前記パケット受信装置における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報に基づいて冗長度の量を動的に決定する
ように構成された冗長度決定部と、
を含む、通信システム。 - パケットを送信するパケット送信装置であって、
プロセッサと、複数の命令を記憶するメモリデバイスと、を含み、前記複数の命令は、前記プロセッサにより実行されると、前記プロセッサに、
(i)配信されていないパケットの再送信を制御させ、
(ii)冗長パケットをデータパケットブロックに追加させ、
(iii)ネットワーク状態情報を受信させ、
(iv)受信器における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報に基づいて冗長度の量を動的に決定させる、
パケット送信装置。 - 前記メモリデバイスは、前記プロセッサに、前記受信器における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報と前記データパケットブロックの送信レートとに基づいて冗長度の量を動的に決定させる、請求項5に記載のパケット送信装置。
- パケットを送信するパケット送信装置であって、
プロセッサと、複数の命令を記憶するメモリデバイスと、を含み、前記複数の命令は、前記プロセッサにより実行されると、前記プロセッサに、
(i)配信されていないパケットの再送信を制御させ、
(ii)冗長パケットをデータパケットブロックに追加させ、
(iii)ネットワーク状態情報を受信させ、
(iv)受信器における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報と前記データパケットブロック及び前記冗長パケットの送信に割り当てられる送信レートの上限値とに基づいて冗長度の量を動的に決定させ、
(v)前記受信器における誤り訂正後、前記配信されていないパケットの再送信を防止するように、前記の受信されたネットワーク状態情報と前記データパケットブロック及び前記冗長パケットの送信に割り当てられる送信レートの上限値とに基づいて前記データパケットブロックの中のパケットの数を動的に決定させる、
パケット送信装置。 - 前記パケットは、限られた到着期限を有する、請求項1、2、3、5、6又は7に記載のパケット送信装置。
- 前記パケットは、固定期限なしに保証された配信を有する、請求項1、2、3、5、6又は7に記載のパケット送信装置。
- 前記ネットワーク状態情報は、ラウンドトリップタイム情報を含む、請求項1、2、3、5、6又は7に記載のパケット送信装置。
- 前記ネットワーク状態情報は、ラウンドトリップタイム情報及びパケット損失レートを含む、請求項1、2、3、5、6又は7に記載のパケット送信装置。
- 前記パケットは、限られた到着期限を有する、請求項4に記載の通信システム。
- 前記パケットは、固定期限なしに保証された配信を有する、請求項4に記載の通信システム。
- データソースからデータ受領器にデータを確実に伝送する方法であって、
a)伝送すべきデータを複数の生成にグループ化するステップであり、各生成は複数の送信ユニットを含む、ステップと、
b)各送信ユニットについての送信順序を示す第1のデータ生成の前記送信ユニットの各々を記憶し、データソースからデータ受領器に送信するステップと、
c)前記第1の生成の送信ユニットのすべてが前記データソースから前記データ受領器に送信された後、生成送信ユニットから符号化送信ユニットを生成するステップと、
d)前記第1の生成の送信ユニットに関して同じ送信順序を示す前記第1の生成の符号化送信ユニットを送るステップと、
e)前記データソースにおいて、前記受信器により受信された第1の生成の送信ユニットの数を確認するステップと、
f)前記データソースにおいて、前記送信ユニットの数と送られた送信ユニットの数とを比較するステップと、
g)前記第1のデータ生成の送信ユニットの数に関してデータ受領器から受信するステップと、
h)前記第1の生成についての送信順序から独立した各送信ユニットについてのデータ送信順序を示す第2のデータ生成を前記データソースから前記データ受領器に送信するステップと、
i)前記データソースにおいて受信された前記第1のデータ生成の送信ユニットの数を比較して、送信するステップにおいてデータソースにより生成された最も大きい送信順序に等しい送信順序が前記生成全体より小さいことを示すステップと、
j)前記生成を完了するために必要とされるさらなる送信ユニットを構築し、送るステップと、
l)最後の送信順序に対して各送信ユニットについての送信順序をインクリメントするステップであり、前記データソースは、前記第1のデータ生成の完全な受信の指標が前記データソースにおいて受信されるまで、前記第1のデータ生成の不完全な受信のいかなる指標も無視する、ステップと、
を含む方法。 - 各送信ユニットは、IPパケットである、請求項14に記載の方法。
- 各符号化ユニットは、IPパケットである、請求項14に記載の方法。
- 前記第1の生成のために送られる最後の符号化データユニットは、明示的にしるしを付けられる、請求項14に記載の方法。
- 受信された送信ユニットの数は、データデスティネーションにより受信された送信ユニットの明示的な数によって示される、請求項14に記載の方法。
- 前記のさらなるエンコード送信ユニットは、新たに生成されるエンコード送信ユニットである、請求項14に記載の方法。
- 前記送信順序は、現在の送信の順次的な番号付けによって示される、請求項14に記載の方法。
- 受信のレベルの指標が、前記生成の最後の送信又はエンコードデータユニットを受信すると送られる、請求項14に記載の方法。
- 前記第1の生成の受信された送信ユニットの数は、前記第1の生成について受信された最後の符号化データユニットがなく、かつ前記第1の生成以外の生成に属する送信データユニットを受信すると、データ受領器により送られる、請求項14に記載の方法。
- ネットワークにおいてソースノードから受信器ノードに符号化ノードを経由してデータパケットのブロックを送信する方法であって、
(a)ソースノードから、ソースプロセスを送信するステップと、
(b)符号化ノードにおいて、受信器ノードによりソースノードから受信される前記ソースプロセスを、ソースプロセスのダウンストリーム受信を実施する目的で受信するステップと、
(c)ランダム性、不確定性又は多義性なしに予測可能シーケンス生成アルゴリズムを用いて符号化係数のベクトルを決定的に選ぶステップであり、入力信号の全体的な線形結合が係数のベクトルとして規定される、ステップと、
(d)前記ソースプロセスと符号化係数の前記ベクトルとの線形結合を算定するステップと、
(e)前記ソースプロセスと符号化係数のベクトルとの前記線形結合を送信するステップと、
(f)受信ノードにおいて、前記ソースプロセス及び符号化係数の前記線形結合を受信するステップと、
(g)符号化係数の前記ベクトルと前記ソースプロセス及び符号化係数の前記線形結合とを用いて前記ソースプロセスを再構築するステップであり、前記ネットワークを通して符号化係数のベクトルの送信がなく、1又は複数の受信器ノードがあり、受信器プロセスは、前記受信器ノードにおいて観察可能である、ステップと、
を含む方法。 - 既知の関数が、前記符号化ノードから前記受信器ノードに送信され、符号化係数の前記ベクトルは、前記の所定の関数を用いて、前記符号化ノードにおいて及び前記受信器ノードにおいて算定される、請求項23に記載の方法。
- 前記ネットワークは、非制限的なトポロジネットワークである、請求項23に記載の方法。
- 前記係数は、コードブックの使用を通して予測可能な態様において生成され、前記コードブックは、符号化及びデコードのためのシンボルルックアップテーブルを包含し、各シンボルは、それを置換する1又は複数のシンボルを有し、デコードノードのすべてが、前記コードブックの推測的な知識を有する、請求項23に記載の方法。
- 複数の係数決定方法論を含むコードブックが、前記符号化ノードにおいて及び前記受信器ノードにおいて常駐し、前記係数決定方法論のうち1つの指定が、前記符号化ノードから前記受信器ノードに送信され、符号化係数の前記ベクトルは、前記係数決定方法論のうち前記の指定された1つを用いて前記符号化ノードにおいて及び前記受信器ノードにおいて決定される、請求項23に記載の方法。
- 生成される係数の組は、有限体に属する、請求項23に記載の方法。
- 順序付けられたリストにおいて元の行ベクトルを1ポジションずつシフトすることによって係数を係数の行ベクトルにおいて1ポジションずつ回転すること及び必要とされるとおりに余分な係数を生成することに基づいてNxN符号化行列を生成するために、請求項23に記載の方法において使用されるアルゴリズム。
- 追加的に生成される線形式の線形独立を確保するように一組の係数を再順序付けするために、請求項23に記載の方法において使用されるアルゴリズム。
- リンクの両端を初期化して、シーケンスを予め決定すること及び制御パケットヘッダの中のフィールドにより前記受信器ノードに前記の選択を知らせることに対する適切なオペレーションを確保する、請求項23に記載の方法。
- 請求項1、7又は11に記載の装置において使用される請求項23に記載の方法。
- 限られた到着期限を有するN個のパケットを含むデータブロックを送信する方法であって、
a)損失推定値Mを設定するステップと、
b)データウィンドウにおけるパケットの数を、ウィンドウサイズのNに対応する第1の数のパケットN個に設定するステップと、
c)前記N個のパケットを消去符号化して、一組のM個の消去符号化パケットを作成するステップと、
d)送信されるデータブロックが前記N個の元のパケットに続いて前記M個の消去符号化パケットを包含するように、前記データブロックを送信するステップと、
e)受信端における損失レート変化を監視することによって、前記損失推定値Mを調整するステップと、
f)後のデータブロックを送信することに使用するために前記の調整された損失推定値Mを送信器に送るステップと、
を含む方法。 - 限られた到着期限を有するN個のパケットを含むデータブロックを送信する方法であって、
a)損失推定値Mを設定するステップと、
b)データウィンドウにおけるパケットの数を、ウィンドウサイズのNに対応する第1の数のパケットN個に設定するステップと、
c)前記N個のパケットを消去符号化して、一組のN+M個の消去符号化パケットを作成するステップと、
d)送信されるデータブロックがN+M個の消去符号化パケットを包含するように、前記データブロックを送信するステップと、
e)受信端における損失レート変化を監視することによって、前記損失推定値Mを調整するステップと、
f)後のデータブロックを送信することに使用するために前記の調整された損失推定値Mを送信器に送るステップと、
を含む方法。 - 当該システムは、ユーザ空間とカーネル空間とネットワークスタックとを含むソフトウェアシステムを含む、請求項4に記載のシステム。
- 前記カーネル空間の中の前記オペレーティングシステムネットワークスタックの前記カーネル空間から前記ユーザ空間へ情報データフローを接続するTUN、TAP又はプロキシなどのコンストラクタ、をさらに含む請求項35に記載のシステム。
- 前記ネットワークスタックのインターネットプロトコル(IP)レイヤから前記ユーザ空間への接続を提供するTUN仮想デバイス、をさらに含む請求項35に記載のシステム。
- 前記ネットワークスタックのメディアアクセス制御(MAC)レイヤから前記ユーザ空間への接続を提供するTAP仮想デバイス、をさらに含む請求項35に記載のシステム。
- 前記ネットワークスタックのメディアアクセス制御(MAC)レイヤから前記ユーザ空間への接続を提供するL2TP仮想デバイス、をさらに含む請求項35に記載のシステム。
- 前記ネットワークスタックのメディアアクセス制御(MAC)レイヤから前記ユーザ空間への接続を提供するTAP仮想デバイスと関連するLNSスタック、をさらに含む請求項35に記載のシステム。
- 前記ネットワークスタックのメディアアクセス制御(MAC)レイヤから前記ユーザ空間への接続を提供するL2TP仮想デバイスと関連するLNSスタック、をさらに含む請求項35に記載のシステム。
- 前記ネットワークスタックのメディアアクセス制御(MAC)レイヤから前記ユーザ空間への接続を提供するTUN仮想デバイスと関連するLNSスタック、をさらに含む請求項35に記載のシステム。
- 消去符号化が、請求項23に記載の方法を用いて実行される、請求項4又は36に記載のシステム。
- 請求項23に記載の消去符号化方法と関連して使用される請求項31又は32に記載の方法。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261724275P | 2012-11-08 | 2012-11-08 | |
US61/724,275 | 2012-11-08 | ||
US201361820682P | 2013-05-07 | 2013-05-07 | |
US61/820,682 | 2013-05-07 | ||
US201361867583P | 2013-08-19 | 2013-08-19 | |
US61/867,583 | 2013-08-19 | ||
PCT/US2013/068820 WO2014074650A2 (en) | 2012-11-08 | 2013-11-06 | Method & apparatus for improving the performance of tcp and other network protocols in a communications network using proxy servers |
USPCT/US2013/068820 | 2013-11-06 | ||
PCT/US2013/069018 WO2014074757A2 (en) | 2012-11-08 | 2013-11-07 | Method & apparatus for improving the performance of tcp and other network protocols in a communications network |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016502794A true JP2016502794A (ja) | 2016-01-28 |
Family
ID=50685314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015541904A Pending JP2016502794A (ja) | 2012-11-08 | 2013-11-07 | 通信ネットワークにおいてtcp及び他のネットワークプロトコルのパフォーマンスを向上させる方法及び装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9515775B2 (ja) |
EP (1) | EP2918073A4 (ja) |
JP (1) | JP2016502794A (ja) |
BR (1) | BR112015009944A2 (ja) |
CA (1) | CA2891599A1 (ja) |
WO (1) | WO2014074757A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018042885A1 (ja) * | 2016-08-30 | 2018-03-08 | 日本電気株式会社 | 送信端末、送信方法および送信プログラム |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014014761A1 (en) * | 2012-07-16 | 2014-01-23 | Code On Network Coding, Llc | Deterministic distributed network coding |
PL2972864T3 (pl) * | 2013-03-15 | 2020-12-14 | Michelle Effros | Sposób i urządzenie do poprawy wydajności komunikacji przez kodowanie sieciowe |
GB201404535D0 (en) * | 2014-03-14 | 2014-04-30 | Nat Univ Ireland | Low-delay packet erasure coding |
CN105450357B (zh) * | 2014-09-24 | 2019-02-01 | 中兴通讯股份有限公司 | 编码参数的调整、反馈信息的处理方法及装置 |
US10320526B1 (en) | 2014-11-07 | 2019-06-11 | Strong Force Iot Portfolio 2016, Llc | Packet coding based network communication |
US9825733B1 (en) | 2014-11-07 | 2017-11-21 | Speedy Packets, Inc. | Packet coding based network communication |
US9992088B1 (en) | 2014-11-07 | 2018-06-05 | Speedy Packets, Inc. | Packet coding based network communication |
US9992128B2 (en) | 2015-07-07 | 2018-06-05 | Speedy Packets, Inc. | Error correction optimization |
US10999012B2 (en) | 2014-11-07 | 2021-05-04 | Strong Force Iot Portfolio 2016, Llc | Packet coding based network communication |
US9992126B1 (en) | 2014-11-07 | 2018-06-05 | Speedy Packets, Inc. | Packet coding based network communication |
WO2016077396A1 (en) * | 2014-11-10 | 2016-05-19 | APS Technology 1 LLC | Improving network throughput |
WO2016092686A1 (ja) * | 2014-12-12 | 2016-06-16 | 株式会社日立製作所 | 通信装置、通信装置システム及び通信方法 |
US9787614B2 (en) * | 2015-06-03 | 2017-10-10 | Aalborg Universitet | Composite extension finite fields for low overhead network coding |
WO2017000117A1 (zh) * | 2015-06-29 | 2017-01-05 | 华为技术有限公司 | 数据处理的方法及接收设备 |
US10230405B2 (en) * | 2015-08-26 | 2019-03-12 | Nvidia Corporation | System and method of forward error correction for streaming media |
EP3353951A1 (en) | 2015-09-25 | 2018-08-01 | FSA Technologies, Inc. | Multi-trunk data flow regulation system and method |
WO2017095282A1 (en) * | 2015-12-02 | 2017-06-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and arrangements for performing enhanced network coding |
US10567546B2 (en) * | 2015-12-31 | 2020-02-18 | Oath Inc. | Network content communication |
CN105933232B (zh) * | 2016-03-29 | 2018-10-23 | 东北大学 | 支持多业务数据传输需求的多径传输控制终端及方法 |
US11156998B2 (en) | 2016-05-09 | 2021-10-26 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for process adjustments in an internet of things chemical production process |
EP3549289A1 (en) * | 2016-12-02 | 2019-10-09 | Harman International Industries, Incorporated | Communication method and system |
US20210306098A1 (en) * | 2016-12-02 | 2021-09-30 | Harman International Industries, Incorporated | Communication Method and System |
CN106788905A (zh) * | 2017-03-06 | 2017-05-31 | 苏州汉辰数字科技有限公司 | 一种编码tcp方法及系统 |
KR102309110B1 (ko) * | 2017-03-24 | 2021-10-06 | 삼성전자 주식회사 | Usb 타입 c 커넥터에 연결된 외부 전자 장치를 제어하는 전자 장치 및 제어 방법 |
US10430665B2 (en) * | 2017-09-07 | 2019-10-01 | GM Global Technology Operations LLC | Video communications methods using network packet segmentation and unequal protection protocols, and wireless devices and vehicles that utilize such methods |
US11108705B2 (en) * | 2019-04-30 | 2021-08-31 | Code On Network Coding, Llc | Linear network coding with pre-determined coefficient generation through parameter initialization and reuse |
WO2020243125A1 (en) * | 2019-05-27 | 2020-12-03 | Massachusetts Institute Of Technology | Adaptive causal network coding with feedback |
CN111093288B (zh) * | 2019-07-30 | 2024-02-06 | 中兴通讯股份有限公司 | 一种用户数据传输方法、网络设备及存储介质 |
US11528342B2 (en) * | 2019-10-02 | 2022-12-13 | APS Technology 1 LLC | Invoking a random linear network coding communications protocol |
CN110943803B (zh) * | 2019-12-09 | 2021-10-08 | 西南交通大学 | 一种基于纠删编码的数据传输控制方法 |
CN111629282B (zh) * | 2020-04-13 | 2021-02-09 | 北京创享苑科技文化有限公司 | 一种实时的纠删码编码冗余度动态调节方法 |
CN111510159B (zh) * | 2020-05-13 | 2022-03-08 | 中国科学院自动化研究所 | 遵循通用信息交换协议规范的智能编码方法及编码器 |
CN112165403B (zh) * | 2020-09-29 | 2021-04-27 | 北京视界云天科技有限公司 | Udp数据包恢复方法、装置、计算机设备和存储介质 |
US11889327B2 (en) | 2020-11-20 | 2024-01-30 | Qualcomm Incorporated | Network coding with dynamic redundancy overhead |
CN115190080A (zh) * | 2021-04-02 | 2022-10-14 | 维沃移动通信有限公司 | 拥塞控制方法、装置及通信设备 |
JP2023006210A (ja) | 2021-06-30 | 2023-01-18 | 株式会社デンソー | 冗長通信装置、方法、及びプログラム |
US11963031B2 (en) | 2021-08-19 | 2024-04-16 | Qualcomm Incorporated | Techniques for receiver-specific network coding redundancy |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530693A (en) | 1995-06-06 | 1996-06-25 | Averbuch; Rod | Method and apparatus for performing handoff in a packet data communication system |
US6862622B2 (en) * | 1998-07-10 | 2005-03-01 | Van Drebbel Mariner Llc | Transmission control protocol/internet protocol (TCP/IP) packet-centric wireless point to multi-point (PTMP) transmission system architecture |
FI112304B (fi) * | 2000-02-14 | 2003-11-14 | Nokia Corp | Datapakettien numerointi pakettivälitteisessä tiedonsiirrossa |
US6931211B2 (en) | 2001-08-23 | 2005-08-16 | Cedarpoint Communications, Inc. | Reconfigurable data communications system with a removable optical backplane connector |
US7376435B2 (en) | 2002-04-01 | 2008-05-20 | Intel Corporation | Transferring multiple data units over a wireless communication link |
ES2259768T3 (es) * | 2002-06-12 | 2006-10-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Metodo y aparato para la iniciacion de la compresion de encabezamientos de protocolo internet. |
US8238241B2 (en) | 2003-07-29 | 2012-08-07 | Citrix Systems, Inc. | Automatic detection and window virtualization for flow control |
WO2005074163A1 (en) * | 2004-01-28 | 2005-08-11 | Ramot At Tel-Aviv University Ltd. | Method of transmitting data using space time block codes |
KR100713394B1 (ko) * | 2004-06-16 | 2007-05-04 | 삼성전자주식회사 | 이동통신 시스템에서 전송일련번호와 타임스탬프를 이용한 상향링크 데이터 패킷들의 재정렬 방법 및 장치 |
US7986676B2 (en) | 2004-12-31 | 2011-07-26 | Intel Corporation | Techniques to manage communication rates in a wireless network |
CA2539367A1 (en) | 2005-03-30 | 2006-09-30 | At&T Corp. | Loss tolerant transmission control protocol |
US7366132B2 (en) | 2005-03-30 | 2008-04-29 | At&T Corp. | Loss tolerant transmission control protocol |
US7751430B2 (en) | 2005-07-14 | 2010-07-06 | Motorola, Inc. | Self optimization of time division duplex (TDD) timing and adaptive modulation thresholds |
JP4513725B2 (ja) * | 2005-11-09 | 2010-07-28 | ソニー株式会社 | パケット送信装置、通信システム及びプログラム |
US8804575B2 (en) | 2005-12-13 | 2014-08-12 | Cisco Technology, Inc. | Central entity to adjust redundancy and error correction on RTP sessions |
US8259836B2 (en) | 2006-12-04 | 2012-09-04 | Samsung Electronics Co., Ltd. | Method and system for generating candidate beamforming coefficients for transmission of data over a wireless medium |
WO2008105032A1 (ja) * | 2007-02-28 | 2008-09-04 | Fujitsu Limited | クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置 |
CN101689975A (zh) | 2007-06-27 | 2010-03-31 | 艾利森电话股份有限公司 | 用于在mimo系统中进行改进的无线电资源分配的方法和设备 |
US8804627B2 (en) | 2007-12-19 | 2014-08-12 | Qualcomm Incorporated | Method and apparatus for improving performance of erasure sequence detection |
WO2010031049A1 (en) * | 2008-09-15 | 2010-03-18 | GH Innovation, Inc. | Improving celp post-processing for music signals |
EP2342661A4 (en) * | 2008-09-16 | 2013-02-20 | File System Labs Llc | METHODS AND DEVICES FOR CORRECTING ERRORS AND ERASER CODE BASED ON MATRIX AND APPLICATIONS THEREOF |
US8788903B2 (en) * | 2008-10-23 | 2014-07-22 | Panasonic Intellectual Property Corporation Of America | Wireless transmission device, wireless receiving device, and method for transmitting encoded data |
US8959405B2 (en) * | 2009-03-25 | 2015-02-17 | Mitsubishi Electric Corporation | Signal transmission device for elevator |
US8392800B2 (en) | 2009-10-20 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Multi-hop network having increased reliability |
US8351325B2 (en) | 2010-08-18 | 2013-01-08 | Yr20 | Method and system for layer-2 pseudo-wire rapid-deployment service over unknown internet protocol networks |
US8621320B2 (en) * | 2011-04-07 | 2013-12-31 | Apple Inc. | Per-image forward error correction |
US8856624B1 (en) * | 2011-10-27 | 2014-10-07 | Google Inc. | Method and apparatus for dynamically generating error correction |
US9160687B2 (en) | 2012-02-15 | 2015-10-13 | Massachusetts Institute Of Technology | Method and apparatus for performing finite memory network coding in an arbitrary network |
WO2014014761A1 (en) | 2012-07-16 | 2014-01-23 | Code On Network Coding, Llc | Deterministic distributed network coding |
-
2013
- 2013-11-07 BR BR112015009944A patent/BR112015009944A2/pt not_active IP Right Cessation
- 2013-11-07 US US14/400,541 patent/US9515775B2/en active Active
- 2013-11-07 EP EP13853443.3A patent/EP2918073A4/en not_active Withdrawn
- 2013-11-07 WO PCT/US2013/069018 patent/WO2014074757A2/en active Application Filing
- 2013-11-07 JP JP2015541904A patent/JP2016502794A/ja active Pending
- 2013-11-07 CA CA2891599A patent/CA2891599A1/en not_active Abandoned
-
2014
- 2014-11-11 US US14/538,793 patent/US9258084B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018042885A1 (ja) * | 2016-08-30 | 2018-03-08 | 日本電気株式会社 | 送信端末、送信方法および送信プログラム |
JPWO2018042885A1 (ja) * | 2016-08-30 | 2019-06-24 | 日本電気株式会社 | 送信端末、送信方法および送信プログラム |
JP7056565B2 (ja) | 2016-08-30 | 2022-04-19 | 日本電気株式会社 | 送信端末、送信方法および送信プログラム |
Also Published As
Publication number | Publication date |
---|---|
BR112015009944A2 (pt) | 2017-10-03 |
US9258084B2 (en) | 2016-02-09 |
US20150100858A1 (en) | 2015-04-09 |
US9515775B2 (en) | 2016-12-06 |
EP2918073A4 (en) | 2016-10-19 |
US20150095739A1 (en) | 2015-04-02 |
CA2891599A1 (en) | 2014-05-15 |
EP2918073A2 (en) | 2015-09-16 |
WO2014074757A3 (en) | 2014-07-03 |
WO2014074757A2 (en) | 2014-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9258084B2 (en) | Method and implementation for network coefficents selection | |
US11057310B2 (en) | Multiple protocol network communication | |
Michel et al. | QUIC-FEC: Bringing the benefits of Forward Erasure Correction to QUIC | |
US9537611B2 (en) | Method and apparatus for improving the performance of TCP and other network protocols in a communications network using proxy servers | |
US9253608B2 (en) | Wireless reliability architecture and methods using network coding | |
Karzand et al. | Design of FEC for low delay in 5G | |
EP2218204B1 (en) | Method and system for data transmission in a data network | |
CN103023813B (zh) | 抖动缓冲器 | |
Nikaein et al. | MA-FEC: A QoS-based adaptive FEC for multicast communication in wireless networks | |
Michel et al. | Adding forward erasure correction to quic | |
WO2022105753A1 (zh) | 网络数据编码传输方法及装置 | |
Luby et al. | High-quality video distribution using power line communication and aplication layer forward error correction | |
Thieme et al. | Less is more: Choosing fair network coding parameters | |
Senger et al. | End-to-End algebraic network coding for wireless TCP/IP networks | |
Karetsi | The impact of coding depth on sliding window RLNC protocols | |
Gorius et al. | Efficient and low-delay error control for large-BDP networks | |
Dvorkovich | PPPXoE-Adaptive data link protocole for high-speed packet networks | |
Branderud | Adaptive FEC-Encoding for VideoStreaming over WiFiANDERS BRANDERUDMaster of |