JP2009526494A - トランスポートプロトコルの性能を改善するシステムおよび方法 - Google Patents
トランスポートプロトコルの性能を改善するシステムおよび方法 Download PDFInfo
- Publication number
- JP2009526494A JP2009526494A JP2008554489A JP2008554489A JP2009526494A JP 2009526494 A JP2009526494 A JP 2009526494A JP 2008554489 A JP2008554489 A JP 2008554489A JP 2008554489 A JP2008554489 A JP 2008554489A JP 2009526494 A JP2009526494 A JP 2009526494A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- tcp
- state
- packets
- connection
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/37—Slow start
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
トランスポートプロトコルの性能を改善するシステムおよび方法を開示する。1つの例示的な方法は、第1の状態において、輻輳ウィンドウを非線形に増大させるステップと、第1の状態の間に、輻輳ウィンドウが閾値を上回ったことを受けて、第2の状態へ遷移するステップと、第2の状態において、輻輳ウィンドウを線形に増大させるステップとを含む。別の例示的な方法は、多数のパケットの損失を示す重複確認応答の受信時に、第3の状態へ遷移するステップと、該第3の状態において、該パケット損失の数に比例して輻輳ウィンドウを減少させるステップとをさらに含む。
Description
(関連出願の参照)
本出願は、米国仮特許出願第60/765,787号(2006年2月7日出願)の利益を主張し、これにより参照により本明細書に援用される。
本出願は、米国仮特許出願第60/765,787号(2006年2月7日出願)の利益を主張し、これにより参照により本明細書に援用される。
本開示は、通信プロトコルに関し、より具体的には、トランスポート層プロトコルに関する。
伝送制御プロトコル(Transmission Control Protocol;TCP)として知られているトランスポートプロトコルは、過去20年間にわたって、インターネット上における信頼できるデータ配信のための事実上のトランスポートプロトコルとして好成果を上げてきた。TCPが使用するアルゴリズムは、インターネット上における安定性、信頼性、および公平性を推進するように設計されたものであったが、これらの同じアルゴリズムが、通信システム間のエンドツーエンドパスに沿った一定の条件の存在下で、TCP性能の低下をもたらした。広帯域、大きな遅延、および/または著しい損失率を含むこれらの特性は、現在のインターネットにおいてますます一般的なものとなりつつある。TCPが使用する基本アルゴリズムは長年にわたって修正されてきたが、TCPを使用するシステムにはそのように大きい設置基盤があることから、これらのアルゴリズムに対する著しい変化は起こりそうにない。したがって、これらの、およびその他の課題に取り組む必要性が存在する。
トランスポートプロトコルの性能を改善するシステムおよび方法を開示する。1つの例示的な方法は、第1の状態において、輻輳ウィンドウを非線形に増大させるステップと、第1の状態の間に、輻輳ウィンドウが閾値を上回ったことを受けて、第2の状態へ遷移するステップと、第2の状態において、輻輳ウィンドウを線形に増大させるステップと、を含む。
以下の図面を参照して、本開示の多くの態様をよりよく理解することができる。図面中の構成要素は必ずしも縮尺通りでなく、本開示の原理を明瞭に示すことに重点を置いたものである。
図1は、トランスポートプロトコルの性能を改善するためのシステムおよび方法の一実施形態が位置する環境のブロック図である。エンドポイントデバイス110は、トランスポート層(第4層)プロトコル120を使用し、ネットワーク130上で互いに通信を行う。本開示では、例示的なトランスポート層プロトコルとしてTCPについて考察するが、当業者であれば、本願において開示するトランスポートプロトコルの性能を改善するための原理が、その他のトランスポート層プロトコルにも当てはまることを認識するはずである。ルータ140は、ネットワーク130を越えてトラフィックを輸送し、これには、インターネットプロトコル(IP)等のネットワーク層(第3層)プロトコルの使用を伴う場合がある。本願においては「ルータ」という用語を使用するが、当業者であれば、ルータ140は代わりに第3層スイッチの形態をとり得ることを認識するはずである。
ネットワークデバイス150は、(論理的に)エンドポイント110とルータ140との間に位置する。各ネットワークデバイス150は、トランスポートプロトコルの性能を改善するための論理160を含み、これにより、ネットワークデバイス150が拡張トランスポートプロトコル165を使用してピアネットワークデバイス150と通信を行うことを可能にする。したがって、一対のエンドポイント110は、一対のネットワークデバイス150を介して互いに通信を行う。図1では、ネットワークデバイス150はエンドポイント110とルータ140との間に表示されるが、これは物理的表現ではなく論理的表現であり、パケットがネットワークデバイス150を通過することを示しているに過ぎない。以下で説明するように、ネットワークデバイス150のいくつかの実施形態は、実際にはエンドポイント110とルータ140との間にインラインに載置されておらず、代わりに、ルータ140にぶら下がるオフラインデバイスとして動作する。
ネットワークデバイス150のいくつかの実施形態は、エンドポイントネットワークインタフェース170とピアネットワークインタフェース175とを含み、エンドポイントネットワークインタフェース170はリンク180を介してエンドポイント110と連結され、ピアネットワークインタフェース175はリンク185を介してルータ140と連結される。ネットワークデバイス150のその他の実施形態は、ルータ140と連結された単一ネットワークインタフェースを含む。(単一インタフェースの実施形態は、以下で説明するように、インラインよりも「オフライン」で使用され得る。)
いくつかの実施形態において、ネットワーク130内のリンクは、エンドポイント110へのリンクとは異なる性能特性を呈する。例えば、エンドポイント110へのリンクは、比較的高速の有線接続(例えば、100メガビットイーサネット(登録商標))を提供することができ、一方、ネットワーク130内のリンクは、低速の有線または無線接続(例えば、T1、WiFi)を提供することができる。拡張トランスポートプロトコル165は、ネットワークデバイス150間のリンクの性能特性に合わせて設計されている。
いくつかの実施形態において、ネットワーク130内のリンクは、エンドポイント110へのリンクとは異なる性能特性を呈する。例えば、エンドポイント110へのリンクは、比較的高速の有線接続(例えば、100メガビットイーサネット(登録商標))を提供することができ、一方、ネットワーク130内のリンクは、低速の有線または無線接続(例えば、T1、WiFi)を提供することができる。拡張トランスポートプロトコル165は、ネットワークデバイス150間のリンクの性能特性に合わせて設計されている。
ネットワークデバイス150のいくつかの実施形態において、拡張トランスポートプロトコル165は、エンドポイント110によって使用されるトランスポートプロトコル120とは異なっており、ここで、エンドポイント110とその対応するネットワークデバイス150との間で使用されるプロトコルが元のトランスポートプロトコル120であり、ピアネットワークデバイス150間で使用されるプロトコルが拡張トランスポートプロトコル165である。そのような実施形態において、ネットワークデバイス150は、エンドポイント110用のトランスポートプロキシとして作用する。いくつかのプロキシ実施形態において、エンドポイント110は、当該エンドポイント110が異なるトランスポートプロトコルを使用していることに気付かず、この場合、ネットワークデバイス150は、エンドポイント110に対して透過なトランスポートプロキシである。以下でさらに詳細に説明するように、ネットワークデバイス150は、エンドポイントが、プロキシを実際の受信機としてではなく他の通信するエンドポイントとして気付くだけであるような手法で、TCPエンドポイントによって送信されたパケットに応答することにより、透過性を保持する。
以後、拡張トランスポートプロトコル165によって使用されるパケットに言及する場合、「拡張トランスポートパケット」という用語を使用する。当業者であれば、そのようなプロトコルは、一般に、データを搬送するパケット(データパケット)と、データに確認応答するパケット(確認応答パケット)と、接続の初期化/終了処理を行うために使用される制御パケットとを含むことを認識するはずである。したがって、本願においては、「拡張トランスポートデータパケット」と、「拡張トランスポート確認応答パケット」と、「拡張トランスポート制御パケット」とに言及する。これらのパケットは、元のトランスポートプロトコルに対応するものであるが、それとは異なる。例えば、TCPデータパケットおよび拡張トランスポートデータパケットはいずれもデータを搬送するが、TCPデータパケットはTCPエンドポイント110に由来する、またはそこへ配信されるものであり、一方、拡張トランスポートデータパケットは、トランスポートプロキシピア150間で伝達される。いくつかの実施形態において、拡張トランスポートパケットは、元のトランスポートプロトコルパケットにトレーラフィールドを追加することによって形成される。例えば、TCPデータパケットは、「拡張トランスポートデータ」の「プロトコルタイプ」フィールドを付加することによって拡張トランスポートデータパケットに変換され、一方、TCP制御パケットは、「拡張トランスポート制御パケット」の「プロトコルタイプ」フィールドを付加することによって拡張トランスポート制御パケットに変換される。これは、カプセル化の形態であるとみなされ得るが、エンドポイントに対して透過的であるという利点を有する。いくつかの場合において、拡張トランスポートパケットは、カプセル化せずに単独で伝達される。これらの場合において、IPヘッダ中のProtocol Typeフィールドは、拡張トランスポートプロトコルの存在を示す特殊な値に設定され得る。すなわち、拡張トランスポートプロトコル165は、IPまたはネットワーク層によって、TCPまたはUDPのようなプロトコルタイプとして見られる。
当業者であれば、トランスポートプロトコルの性能を改善するための論理160がいくつかの異なる手法で具体化され得ることを十分に理解するはずである。一例として、TCP通信端末デバイスとアクセスルータ140との間に座置するスタンドアロン150デバイス内に論理160を実装する。論理160のもう1つの具体化は、例えば、カーネルプロトコルスタックのTCP層とIP層との間に座置するカーネルドライバとして、エンドポイント110内で行われる。さらに別の例として、トランスポートプロトコルの性能を改善するための論理160は、エンドポイント110のプロトコルスタック内のトランスポート層としてTCPと置き換わることができる。本願においてはスタンドアロンネットワークデバイス150についてのみ考察するが、そのようなすべての具体化が本開示の範囲内にあることを意図するものである。
図2は、トランスポートプロトコルの性能を改善するためのシステムおよび方法の別の実施形態が位置する環境のブロック図である。この環境において、一対のエンドポイント110は、ピア間に複数の接続210、220、230を含み得る。これらの接続(210〜230)のそれぞれは、改善されたネットワークデバイス150Aおよび150Bを通過する。本実施形態において、ネットワークデバイス150は、接続毎に、ネットワークデバイス150間の接続の区間に拡張トランスポートプロトコル165を使用するか元のトランスポートプロトコル120を使用するかを決定する。図2の例において、接続210および220は中央区間に拡張トランスポートプロトコル165を使用し、接続230は元のトランスポートプロトコル120を使用する。
いくつかの実施形態において、ユーザ(例えば、システム管理者)は、どの接続がどのトランスポートプロトコルを使用するかを決定し、それにしたがってネットワークデバイス150を構成する。いくつかの構成例として、特定のエンドポイント110からのすべての接続が拡張トランスポートプロトコル165を使用する、特定のエンドポイント110からの接続がいずれも拡張トランスポートプロトコル165を使用しない、ヘッダフィールドの特定の組み合わせによって識別された特定のエンドポイント110からのそれらの接続が拡張トランスポートプロトコル165を使用する、ヘッダフィールドの特定の組み合わせによって識別されない特定のエンドポイント110からのそれらの接続が、拡張トランスポートプロトコル165を使用しない、というものが挙げられる。当業者であれば、これらは例に過ぎず、どの接続が拡張トランスポートプロトコル165を使用するかを判断するためのその他の技術も可能であることを認識するはずである。
図3は、図1のトランスポートプロトコルの性能を改善するための論理160のブロック図である。接続マネージャ310は、ネットワーク内のその他のネットワークデバイス150への接続をセットアップし、その他のネットワークデバイス150に関する一般的な状態情報を保持する。接続マネージャ310は、構成データベース(ローカルまたは集中型)によって、または動的学習プロセスによって、または、当業者に既知であるその他任意の適切な機構によって、その他のネットワークデバイス150の存在およびアドレスを発見することができる。
ピアデバイス150が発見されると、接続マネージャ310は、ピアデバイス150の障害を監視する。障害が発見された場合、接続マネージャ310は、当該障害について、トランスポートプロトコルの性能を改善するための論理160内のその他の構成要素に通知する。各構成要素は、ピアの障害を受けて適切なアクションをとる。いくつかの実施形態において、ピアの障害の認識は、ピアネットワークデバイス150間のハートビート信号によって実現される。接続マネージャ構成要素310は、そのデバイス150のハートビートを送信し、その他のピアデバイス150のハートビートの監視も行う。ここで、ハートビート信号の不在は、ピアデバイス150の障害を意味する。
構成および監視マネージャ320は、ネットワークデバイス150の動作を調節することを可能にする。構成および監視マネージャ320は、両方のネットワークデバイス150の性能特性も監視する。いくつかの実施形態において、構成および監視マネージャ320は、デバイス150中を流れるエンドポイントトラフィックの性能特性の監視も行う。
トラフィック分類子330は、ネットワークデバイス150に入るネットワークトラフィックを分類する。分類は、着信パケット上のヘッダによって形成されるNタプル(N−tuple)に基づく。いくつかの実施形態において、Nタプルは、送信元IPアドレス、宛先IPアドレス、送信元TCPポート、および宛先TCPポートを含む4タプルである。トラフィック分類子330は、特殊な接続制御パケット(例えば、SYN、ACK、FIN等)を識別するために、パケットのディープインスペクションも実行する。続いて、トラフィック分類子330は、これらの制御パケットに関しその他の論理構成要素に通知する。
分類後、トラフィック分類子330は、論理160内のその他の構成要素を通ってパケットを誘導するか、デフォルトの転送パスを通って誘導するかを決定する。この決定は、構成および監視マネージャ320と協議して為され(後述)、構成および監視マネージャ320は、プロトコル改善選択に関する情報(例えば、どの接続に改善を適用し、どの接続で従来のプロトコルを使用するか)を保持する。
状態マネージャ340は、改善が適用されるそれらのTCP接続に関する状態を保持する。状態マネージャ340は、トラフィック分類子330によって提供されるディープインスペクションデータからTCP接続の初期化および終了処理について学習する。いくつかの実施形態において、接続は、接続制御パケット内のNタプルに基づいてハッシュまたはインデックス作成され、それは、より速い接続ルックアップおよびパケット識別を容易にする。状態マネージャ340はまた、常にパケットを送信/受信しているアクティブ接続に関する情報と、アイドル状態のままである接続に関する情報とを保持する。この区別は、異なるTCP接続間における公平性を達成することを援助し、論理160が、それらの容量の公正な分配より大きくなってきた接続にペナルティを科すことを可能にする。
接続ターミネータ350は、エンドポイントTCP接続のソースおよび宛先それぞれに対する、宛先およびソースとして作用する。したがって、接続ターミネータ350は、接続管理、パケット順序付け、輻輳制御、フロー制御、確認応答送信、確認応答受信処理、損失検出、および損失回復等、TCPエンドポイントの機能性を含む。接続ターミネータ350は、拡張トランスポートプロトコル165と元のトランスポートプロトコル120との間のアダプタとしても機能し、これらのエンドポイント110によって理解可能な形態で、TCP送信機または受信機へ決定を伝搬する。例えば、論理160が「これ以上データを送信しない」というフロー制御決定を為すと、接続ターミネータ350は、告知ウィンドウサイズゼロによってこの決定をTCP送信エンドポイント110へ伝達する。接続ターミネータ350は、アウトオブオーダ配信、パケット損失、パケット再送等を扱うために、データバッファの保持および管理も行う。
透過マネージャ360は、状態マネージャ340と連動して、2つのTCPエンドシステム間のネゴシエートされたパラメータ(例えば、最大送信単位、選択的確認応答機構のアベイラビリティ等)が、論理160によって必要とされるものと一致することを確実にする。前述のように、トラフィック分類子330は、ディープパケットインスペクションを実行し、TCP制御パケット(例えば、SYN、ACK、FIN)を検査する。透過マネージャ360には、これらのSYNおよびSYN−ACK制御パケットにおいて使用されるパラメータが通知される。元のデフォルトパラメータ自体が論理160の要求に適合する場合、そのようなパラメータはそのまま通過させられる。しかしながら、デフォルトパラメータが適合しない場合、透過マネージャ360は、代替パラメータを使用するように接続制御パケットを修正する。
コア370は、ピアネットワークデバイス150間でデータを配信し、拡張トランスポートプロトコル165を実装する。拡張トランスポートプロトコル165のいくつかの特徴について、以下で説明する。透過なトランスポートプロキシの実施形態において、ネットワークデバイス150は、TCPエンドポイントから受信されるパケットに追加されるトレーラの追加および処理に基づいてそれらの動作を実行する。したがって、2つのネットワークデバイス150間を流れるパケットは、元の通信エンドポイントによって送信されたパケットと類似する。現存するネットワーク構成要素はパケットを識別および処理するためにヘッダを使用するので、本発明の特徴は(上述したブリッジ機能性と共に)、拡張トランスポートプロトコル165がその他のネットワーク構成要素に対して透過となることを可能にする。
最後に、仮想接続マネージャ380は、ピアデバイス150間の複数の仮想接続にTCP接続をマッピングし、これらの仮想接続を集約する。仮想エンドツーエンドパスを形成する、集約された仮想接続を、本願においては「パイプ」と称する。そのような実装の一例は、「Systems and Methods for Parallel Communication」と題された米国出願第11/063,284号において記載されており、当該出願は、参照することによりその全体が本願に組み込まれる。これらの実施形態のいくつかにおいて、仮想接続の数は構成可能であり、論理160によって動的に選定され得る。
図3は、処理のために1つの構成要素から別の構成要素に渡されるパケットを示す。いくつかの実施形態において、メモリ使用の効率を増大させるゼロコピー手法が使用される。ゼロコピーパケット処理は、パケットにアクセスする構成要素の数を追跡するために、内部パケット表現の中のNumReferences(数参照)フィールドを使用する。構成要素がパケットを処理する場合はいつでも、NumReferencesフィールドを増大させる。構成要素が処理を終了すると、num_references値を減少させる。これにより、構成要素間でパケットを渡す際のコピーの必要性を回避する。
図4は、図1および3のトランスポートプロトコルの性能を改善するための論理160によるパケットの処理を示すデータフロー図である。着信パケットの処理は、トラフィック分類子330から始まり、当該トラフィック分類子は、パケットを分類する(410)ために、ソースIPアドレス、宛先IPアドレス、およびプロトコルヘッダフィールドを使用する。パケットがTCPパケットでも拡張トランスポートパケットでもないことをプロトコルタイプフィールドが示す場合、当該パケットは修正されることなく論理第2層ブリッジ420へ転送され、当該ブリッジがパケットを送信する。当業者には理解されるはずであるように、ブリッジ420は、単一IPアドレスを有し、第3層(IP)アドレスと第2層(MAC)アドレスとの間のマッピングテーブルを保持することにより、エンドポイントネットワークインタフェース170とピアネットワークインタフェース175とを連結する。送信用のパケットが与えられると、ブリッジ420は、当該パケット内の第3層アドレスを検査し、アドレステーブルに基づいて、いずれのインタフェース(エンドポイントネットワークインタフェース170およびピアネットワークインタフェース175)で送信するかを判断する。したがって、以下の考察においては、どのインタフェースかを特定することなく、パケットの伝送、送信、または転送に言及する。
ブリッジとして動作することにより、トランスポートプロトコルの性能を改善するための論理160を含むネットワークデバイス150は、TCPエンドポイント110上の経路指定テーブルへの変更を必要とすることなく、パケットのインターセプトおよび処理を実行することが可能になる。ブリッジ動作は、ネットワークデバイス150が、TCPエンドポイント110とルータ140との間のインラインの代わりに、ルータ140から離れて位置するオフラインデバイスとして動作することも可能にする。
トラフィック分類子330によってパケットがTCPパケットとして分類される(410)と、当該パケットは状態マネージャ340に提供される。状態マネージャ340は、TCPパケットのタイプを判断する(430)。TCPパケットが接続セットアップパケット(例えば、SYNまたはSYNACK)である場合、状態マネージャ340は、接続状態をそれぞれ作成または更新し、パケットを透過マネージャ360にハンドオフする。前述のように、透過マネージャ360は、セットアップ中に、TCP SYNおよびTCP SYNACKパケット内で伝達される接続オプションを検査し、これらのオプションを、拡張トランスポートプロトコル165との適合性を確保するために随時修正する。続いて、透過マネージャ360は、TCP制御パケットを転送する。
TCPパケットはRSTパケットであると状態マネージャ340が判断する(430)と、状態マネージャ340は、接続が存在するか否かを(例えば、接続ハッシュテーブルを調べることによって)判断する(440)。接続が存在する場合、当該接続は状態マネージャ340によって削除され、TCP制御パケットが転送される。状態マネージャ340による判断430に戻り、パケットがFINパケットであって接続が存在する場合、当該接続状態は更新される。FINがローカルエンドポイントでも受信されていた場合、当該接続は削除される。いずれの場合も、状態マネージャ340は、接続ターミネータ350にTCP FINパケットを送信するように要求し、その後、当該TCP FINパケットを転送する。
再度状態マネージャ340による判断430に戻り、TCPパケットがACKまたはTCPデータパケットである場合、状態マネージャ340は、接続が存在するか否かを(例えば、接続ハッシュテーブルを調べることによって)判断する。接続が存在しない場合、状態マネージャ340はTCPパケットを転送する。接続が存在する場合、状態マネージャ340は状態情報を更新し、パケットを接続ターミネータ350にハンドオフする。
状態マネージャ340からTCPパケットを受信した後、接続ターミネータ350は、TCPパケットを分類する(450)。TCPパケットがACKである場合、接続ターミネータ350は、確認応答の受信によって示される適切なハウスキーピング処理を実行し、ACKを廃棄または消費する。
ここで、接続ターミネータ350によって実行されるハウスキーピング処理について、図5のフローチャートに関連して説明する。接続ターミネータ350は、ブロック510において確認応答の処理を始め、ここで確認応答されたパケットがTCP送信バッファから除去される。次に、ブロック520において、確認応答を反映させるために、シーケンス内の番号が更新される。続いて、ブロック530において、通信中パケットのカウントが更新される。ブロック540において処理が継続し、ここで最大許容未処理パケットが更新される。最後に、通信中カウントが最大許容未処理パケット未満である間、ブロック550が繰り返しループで実行され、ここで550はTCP送信バッファ内で次のパケットを送信する。
ここで、図4の接続ターミネータ350による分類(450)に戻り、TCPパケットが制御パケットとは異なるデータである場合、接続ターミネータ350は、パケットをさらに処理する。ここで、この接続ターミネータ350によるTCPデータパケットの処理について、図6のフローチャートに関連して説明する。
接続ターミネータ350は、ブロック610においてパケットの処理を始め、当該処理は、コア構成要素(370)のバッファサイズを閾値と比較するものである。バッファサイズが閾値を満たす場合、ブロック620は、次のシーケンス内のパケットのためのDUPACKを送信する。次に、当該パケットが廃棄され(ブロック630)、パケットの処理が完了する。コア構成要素のバッファサイズが閾値を満たさない場合、ブロック640において処理が継続する。ブロック640では、受信パケットが次のシーケンス内のパケットか否かを判断する。「いいえ」の場合、ブロック645において、受信パケットがTCP受信バッファ内へ挿入され、ブロック650は、次のシーケンス内のパケットのためのDUPACKを送信し、このパケットの処理は完了する。一方で、受信パケットが次のシーケンス内のパケットであるとブロック640が判断した場合、ブロック655において処理が継続する。
ブロック655は、接続状態を更新する。次に、ブロック660において、コア構成要素370は、パケットを送信するように要求される。ブロック665において、TCP受信バッファが空であるか否かを判断する処理が継続する。空である場合、ブロック670は受信パケットの確認応答を送信し、当該パケットの処理は終了する。TCP受信バッファが空でない場合、ブロック675は、バッファ内のすべてのシーケンス内のパケットは送信処理の準備が整っていることをコア構成要素370に通知する。次に、ブロック680は、ブロック675で処理されたばかりのシーケンス内のパケットすべてについて確認応答を送信する。受信したTCPパケットの処理は、これで完了である。
論理160によるTCPパケットの処理については、図5および6のフローチャートの他に、図4の主データフロー図と併せて説明した。ここで図4の主データフロー図に戻り、パケットがTCPパケットではなく拡張トランスポートパケットとして分類された場合(410)、当該パケットはコア370に提供される。コア370は、当該パケットが、拡張トランスポートデータパケット(470)であるか、または拡張トランスポート制御もしくは確認応答パケット(480)であるかを判断する(460)。
コア370による、拡張トランスポートのデータパケット、制御パケット、確認応答パケットのさらなる処理について、図7のフローチャートに関連して説明する。
コア370による受信した拡張トランスポートパケットの処理がブロック710において始まり、当該処理は、受信パケットが拡張トランスポートデータであるか否かを判断するものである。「いいえ」である場合、ブロック765(図7B)において処理が継続し、これについては以下で考察する。受信パケットが拡張トランスポートデータである場合、ブロック715において処理が継続し、当該処理は、受信パケットが次のシーケンス内のパケットであるか否かを判断するものである。「いいえ」である場合、ブロック720において処理が継続し、ここで、当該パケットは受信バッファ内に格納される。次に、ブロック725は、次のシーケンス内のパケットのためのDUPACKを送信する。続いて、拡張トランスポートデータパケットの処理が完了する。
ブロック715に戻り、受信したデータパケットが次のシーケンス内のパケットではないと判断された場合、ブロック730は、拡張トランスポートデータパケットからTCPパケットを脱カプセル化し、ブロック735において、TCPパケットがさらなる処理のために接続ターミネータ構成要素350にハンドオフされる。接続ターミネータ処理の後、ブロック740において、コア構成要素の受信バッファが確認される。受信バッファが空である場合、ブロック745において処理が継続し、ここで、受信した拡張トランスポートデータパケットの確認応答が送信され、受信した拡張トランスポートデータパケットの処理が完了する。しかしながら、コア構成要素の受信バッファが空でない場合、ブロック750は、受信バッファ内のシーケンス内の拡張トランスポートデータパケットに包含されるTCPパケットを脱カプセル化することにより、受信バッファを扱う。次に、ブロック755において、TCPパケットは、さらなる処理のために、接続ターミネータ構成要素350にハンドオフされる。接続ターミネータ処理の後、ブロック760は、コア受信バッファ内の処理されたシーケンス内のパケットすべての確認応答を送信し、処理が完了する。
ブロック710に戻り、受信パケットが拡張トランスポートデータパケットではない場合、当該パケットはブロック765(図7B)においてさらに分類される。パケットが確認応答ではない場合(例えば、拡張トランスポートSYN、SYNACK、RESET、またはハートビート)、当該パケットは、さらなる処理のために、ブロック770において接続マネージャ構成要素310に渡される。一方で、パケットが拡張トランスポート確認応答である場合、ブロック775において処理が継続する。
ブロック775において、コア370は、確認応答が行列の先頭のパケットのものであるか否かを判断する。「いいえ」である場合、パケットは無視され、処理が完了する。「はい」である場合、ブロック780は、次のシーケンス内の番号、通信中パケットの数、および許容される未処理パケットの数を更新する。統計値を更新した後、受信した確認応答によって確認応答されたパケットは、ブロック785において、受信バッファから除去される。いくつかの実施形態において、バッファをリキャプチャするために、「遅延解放」技術が使用される。(遅延解放技術については、以下で考察する。)バッファ一掃後、仮想接続マネージャ380は、ブロック790において、輻輳ウィンドウに現在新しい伝送が可能か否かを判断するためにクエリされる。可能である場合、ブロック795は、ウィンドウ空間が利用可能でなくなるまで、新しい拡張トランスポートデータパケットを送信する。
コア370のいくつかの実施形態によって実装される遅延パケット解放機構は、確認応答されたパケットの解放をパケット処理サイクル中の後の時点まで遅延させる。具体的には、複数のパケットの受信を通知する確認応答が受信機から到着すると、送信機は確認応答されたパケットのリストをマークし、それらのパケットの実際の解放を後に延期する。続いて、送信機によって送信される新しいパケット毎に、規定数のパケットが遅延バッファから解放される。これにより、複数のパケット送信の間にわたる複数のパケットメモリ解放動作のオーバーヘッドを分割償却し、確認応答の受信直後の処理を減速させない。
図8は、仮想接続マネージャ380による、受信した拡張トランスポートパケットの処理を示すフローチャートである。拡張トランスポートデータパケットおよび拡張トランスポート確認応答パケットを含むこれらの受信パケットは、コア370によって仮想接続マネージャ380に提供される。仮想接続マネージャ380による、受信した拡張トランスポートパケットの処理は、ブロック805で始まり、当該処理は、拡張トランスポートパケットがデータであるか確認応答であるかを判断するものである。データであれば、ブロック810において処理は継続し、当該処理は、受信したデータパケットが次のシーケンス内のパケットであるか否かを判断するものである。「いいえ」である場合、ブロック815において処理が継続し、ここで、受信したデータパケットのシーケンス番号は、アウトオブオーダ・リストに格納される。次に、ブロック820は、選択的確認応答(SACK)スコアボードを更新し、ブロック825は、次のシーケンス内のパケットのためのDUPACKを送信する。そして、拡張トランスポートデータパケットの処理が完了する。
ブロック810に戻り、受信したデータパケットが次のシーケンス内のパケットであると判断された場合、ブロック830は、アウトオブオーダ・リストを検査する。リストが空である場合、ブロック835は、受信パケットの確認応答を送信し、処理が完了する。リストが空でない場合、ブロック840は、受信パケットに対応するシーケンス内の番号をアウトオブオーダ・リストから除去する。次に、ブロック845において、シーケンス内のすべてのパケットの確認応答が送信され、受信パケットの処理が終了する。
ブロック805における受信パケットの分類に戻り、パケットが拡張トランスポート確認応答パケットである場合、ブロック850は、確認応答が行列の先頭のパケットのものであるか否かを判断する。「いいえ」である場合、当該パケットは無視され、処理が完了する。「はい」である場合、ブロック855は、コア構成要素がLOSS RECOVERY(損失回復)状態であるか否かを判断する。一実施形態において、コア構成要素の状態は、NORMAL(正常)、LOSS_RECOVERY、TIMEOUT(タイムアウト)、SYN_SENT(同期送信)、およびSYN_RECVD(同期受信)を含む。これらの状態は、当業者には理解されるはずであるように、トランスポートプロトコルの選定によって変動し得る。
損失回復状態でない場合、ブロック860において、以下の統計値、つまり次のシーケンス内の番号、通信中パケットの数、および許容される未処理パケットの数が更新される。これらの統計値が更新された後、ブロック865において、輻輳制御パラメータが更新される。一実施形態において、輻輳制御パラメータは、輻輳ウィンドウサイズおよび閾値を含む。そして、拡張トランスポート確認応答パケットの処理が完了する。
ブロック855でコア構成要素が損失回復状態であると判断すると、ブロック870において処理が継続し、当該処理は、LOSS_RECOVERY状態に入る時に、確認応答が未処理パケットすべてのものであるか否かを判断するものである。「はい」である場合、コア構成要素の状態はNORMALに更新される。ブロック875において、パイプパラメータがブロック880で更新され、パケットの処理が完了する。ブロック870で確認応答が未処理パケットすべてのものに満たないと判断すると、ブロック885においてパイプ(仮想エンドツーエンドパス)のパラメータが更新される。一実施形態において、これらのパラメータは、次のシーケンス内の番号、通信中パケットの数、および許容される未処理パケットの数を含む。ブロック890において受信パケットが再送信され、続いて処理が完了する。
拡張トランスポートプロトコル165を実装する論理160の動作全般について説明してきたが、ここで、このプロトコルのいくつかの特徴について説明する。当業者であれば、これらの特徴は概して互いに独立しているため、拡張トランスポートプロトコル165の特定の実施形態は、これらの特徴の何らかの組み合わせを含み得ることを理解するはずである。拡張トランスポートプロトコル165は、TCPとは異なり、その他のアプリケーションおよびサービスとメモリを共有することを要求されない。デバイスのメモリ全体が、アクティブ接続のパケットのバッファリング専用であってもよい。さらに、この大きいバッファは、接続に対するいかなる固定割り当てにもなっておらず、複数のアクティブエンドツーエンド接続間で柔軟に共有される。広帯域遅延積を有するネットワークにおいて、TCPの性能は、当該ネットワーク内の最大未処理パケットに課される制限によって制限される。拡張トランスポートプロトコルは、小型ウィンドウの制限事項を排除し、アクティブ接続のパケットをバッファするためのシステムに利用可能なメモリ全体の完全な共有を達成することにより、広帯域遅延積を有するネットワークにおけるエンドツーエンド接続の性能を改善する。
広帯域遅延積を有するネットワークにおいて、TCP性能は、当該ネットワーク内の最大未処理パケットに課される制限によって制限される。拡張トランスポートプロトコルは、小型ウィンドウの制限事項を排除し、アクティブ接続のパケットをバッファするためのシステムに利用可能なメモリ全体の完全な共有を達成することにより、広帯域遅延積(large BDP;large Bandwidth‐Delay Product)を有するネットワークにおけるエンドツーエンド接続の性能を改善する。
図9は、拡張トランスポートプロトコル165によって使用されるフロー制御機構のフロー図である。本例において、エンドポイント110AはTCP送信機であり、エンドポイント110BはTCP受信機である。エンドポイント110Aは、エンドポイント110Bに宛てたTCPデータメッセージ910を送信する。ネットワークデバイス150Aは、TCPデータメッセージ910を受信し、それらを拡張トランスポートプロトコルデータメッセージ920内にカプセル化し、ネットワークデバイス150Bへ送信する。ネットワークデバイス150Bは、TCPデータメッセージ920を受信し、その中にカプセル化されたTCPデータメッセージ910を除去し、TCPデータメッセージ910をエンドポイント110Bへ送信する。
フロー制御は、接続の3つの区間すべてにおいて使用される。エンドポイント110Aに最も近いネットワークデバイス150Aは、エンドポイント110Aの送信速度を制御するためにTCPフロー制御機構を使用する。すなわち、ネットワークデバイス150Aは、TCPスライディングウィンドウ告知および/または凍結メッセージ930をエンドポイント110Aへ送り返すことにより、自身のエンドポイント側の受信バッファを管理する。エンドポイント110Aは、これらのTCPフロー制御メッセージ930を理解し、示されるようにスロットルを絞る。
エンドポイント110AからTCPデータを受信するエンドポイント110Bも、それに最も近いネットワークデバイス150Bのスロットルを絞るために、TCPフロー制御メッセージ930を使用する。ネットワークデバイス150Bは、エンドポイント側からのフロー制御メッセージがTCPフロー制御メッセージ930であることを予期して、示されるようにスロットルを絞る。ネットワークデバイス150Bが、エンドポイント110Bによって命令されるようにデータ速度を低下させると、ネットワークデバイス150Bは、同様に送信ネットワークデバイス150Aのスロットルを絞ることが必要となる場合がある。そうすると、ネットワークデバイス150Bは、拡張トランスポートフロー制御メッセージ940を(TCPフロー制御メッセージ930とは異なる)ネットワークデバイス150Aへ送信する。これにより、ネットワークデバイス150B内のルータ側受信バッファを充填することができ、この時点で、ネットワークデバイス150Bは、TCPフロー制御メッセージ930を送信することにより、エンドポイント110Aのスロットルを絞ることになる。このように、送信エンドポイント110Aのデータ速度は、接続の3つの区間すべてに対するフロー制御によって影響を及ぼされ得る。当業者であれば、ネットワークデバイス150が受信バッファ空間を使い果たすと、この方法が、ネットワークデバイス150間のネットワーク130におけるトラフィックを減速させ、最終的にTCP送信エンドポイント110Aに戻すための優れた背圧機構を提供することを十分に理解するはずである。
ネットワークデバイス150のいくつかの実施形態は、TCP接続レベルで実行される、さらなるレベルのフロー制御を含み、これは、単一のTCP接続が受信バッファの「公正な分配」を上回った場合に発生する。この条件下において、受信ネットワークデバイス150は、その特定のTCP接続を表すTCP凍結メッセージを送信ネットワークデバイス150へ送信する。これを受けて、送信ネットワークデバイス150は、リモート側にある対応するTCP接続の送信速度のスロットルを絞る。
図10は、ネットワークデバイス150のいくつかの実施形態によって実装される輻輳制御機構を示す状態図である。アルゴリズムは、SlowStart(低速開始)1010、CongestionAvoidance(輻輳回避)1015、Maintain(保持)1020、ProportionalDecrease(比例する減少)1025、LossRecovery(損失回復)1030、およびInitializeWindow(ウィンドウ初期化)1035という6つの状態の間を遷移する。拡張トランスポートプロトコル165は、SlowStart状態1010から始まる。SlowStart状態1010である間、接続における輻輳ウィンドウは、非線形様式で周期的に増大する(1040)。一実施形態において、SlowStart状態1010の間に輻輳ウィンドウが閾値に到達する(1045)と、送信機はCongestion Avoidance状態1015に遷移する。代わりに、ネットワーク130を通る接続の往復時間(プローブによって計測されるもの)が閾値に到達した(1050)場合、送信機は、Maintain状態1020に遷移し、これについては以下で考察する。
SlowStart状態1010から到達したCongestion Avoidance状態1015は、パケット損失を示すイベント(1055または1057)時に脱出される。Congestion Avoidance状態1015は、プローブによって計測されるような、ネットワーク130を通る接続の往復時間が閾値を越えて増大した(1060)際にも脱出され得る。パケット損失を示すタイムアウトイベント(1055)の場合、送信機はInitializeWindow状態1035に遷移し、ここで輻輳ウィンドウは初期値にリセットされ、続いて、送信機はSlowStart状態1010に戻る。パケット損失を示す重複確認応答イベント(1057)の場合、送信機は、以下で考察するProportional Decrease状態1025に遷移する。往復時間が閾値に到達した(1060)場合、送信機は、Congestion Avoidance状態1015からMaintain状態1020に遷移する。
Maintain状態1020の間、輻輳ウィンドウは、タイムアウト(1065)または重複確認応答(1070)によって示されるようなパケット損失が発生するまで、前回の算出値に固定されたままである。タイムアウト1065の場合、送信機はSlowStart状態1010に戻る。重複確認応答1070の場合、送信機は、Proportional Decrease状態1025に遷移する。
Proportional Decrease状態1025において、送信機は、損失パケットの数に比例する値だけ速度のスロットルを絞ることによって輻輳損失の検出に反応し、Loss Recovery状態1030に入る。Loss Recovery状態1030に入る際、輻輳ウィンドウは、損失時における未処理パケットの数に設定され、1回の往復時間中に、ネットワーク130内で損失したパケットの数に比例する量だけ削減される。この機構は、損失回復中に、損失パケットよりも前に新しいパケットが伝送されることを確実にする。Loss Recovery状態1030の間、確認応答毎にデータが送信される(1075)。損失回復に入る時における未処理パケットすべての確認応答時(1080)、送信機は、Loss Recovery状態1030を脱出し、Congestion Avoidance状態1015に戻る。パケット損失を示すタイムアウト時、輻輳ウィンドウは、損失時の元のウィンドウサイズ(状態1035)にリセットされ、送信機は、SlowStart状態1010に戻る。
当業者であれば、この損失回復機構がTCPと比較して積極性の低い方法であることを十分に理解するであろう。TCPは、接続進行中に発生するいかなるパケット損失もネットワーク輻輳の兆候として解釈されるように設計され、TCPは、接続の速度のスロットルを半分だけ絞ることによって反応する。拡張トランスポートプロトコル165によって使用される比例的減少機構は、プロビジョニングされた帯域幅が利用可能な環境(例えば、無線データネットワークおよびプライベートWAN)において、より適切である。積極性の低い輻輳制御を達成することとは別に、拡張トランスポートプロトコル165によって用いられる比例的減少機構は、TCPによって使用される相乗的減少機構よりも良好にランダムパケット損失を扱うことができる。拡張トランスポートプロトコル165は、パケット損失の数に比例して輻輳ウィンドウを削減するため、輻輳制御に対するランダム損失の影響は減少される。
当業者であれば、輻輳ウィンドウの上記の調整は、更新された輻輳ウィンドウが損失回復状態の脱出時において多数のパケット伝送を可能にするシナリオをもたらし得ることも認識するはずである。拡張トランスポートプロトコル165のいくつかの実施形態において、受信ネットワークデバイス150は、新しいパケット送信の数を新しい確認応答の受信毎に2つに制限することにより、これらのパケット送信を未来にわたり確認応答を分散させる。
当業者であれば、図10の輻輳アルゴリズムと、TCP等の従来のトランスポートプロトコルによって使用されるものとの差異を十分に理解するはずである。TCPは、速度探査のために線形増大方法を使用し、利用可能な容量がCユニットであり、且つTCP接続の現在のデータ速度がC−Xユニットである場合、TCPは、接続データ速度の理想的な動作点に到達するために約X往復時間を要することになる。したがって、TCPは、ネットワーク130における新しいリソースのアベイラビリティ、および、輻輳ウィンドウの前回の削減に起因する低ビットレート動作の両方に対して、反応が遅い。往復時間が大きい場合、TCPは、理想的な動作点に到達するために長時間を要する。SSLトランザクション等の短期接続は、理想的な動作点に到達する前に、データ転送を完全に終了し得る。さらに、既に確立された拡張トランスポートプロトコル接続への複数のエンドツーエンド接続の多重化により、ネットワークデバイスは、これらのエンドツーエンド接続の起動探査遅延を排除する。これは、それによって多重化される拡張トランスポートプロトコル接続を通るエンドツーエンド接続間でネットワーク情報を共有することによって可能となる。この起動遅延削減は、短寿命を有するトランザクションアプリケーションの性能を著しく改善する。
さらに、TCP輻輳制御プロセスは増大段階および減少段階という2つの段階しか有さないことから、TCPは、ルーチンの輻輳制御動作中でさえも損失を誘発する傾向を有する。ネットワーク130内に外部からの輻輳がない場合であっても、TCPは、ネットワーク130内で輻輳が誘発されて損失が発生するまで、接続データ速度を増大させ続け、このとき、減少段階に移行し、速度は輻輳制御サイクルの反復のために半分になる。強制的な減少および緩慢な増大を伴うこの不必要なサイクルは、TCP接続の性能をさらに制限するものである。
拡張トランスポートプロトコル165は、従来のトランスポートプロトコルよりも高速ネットワークに適した損失検出機構も特徴とする。損失を検出するために高オーバーヘッドタイムアウトを使用する代わりに、拡張トランスポートプロトコル165は、送信されたパケットの数、受信されたパケットの数、および、損失検出中に適切なマイルストーンイベントにおいて送信されたパケットのシーケンス番号に基づく受動的学習手法を使用する。より具体的には、送信ネットワークデバイス150は、それが送信するすべてのパケット上にある、CONG_SEQ_NUMと称される単調増大シーケンス番号を使用する。受信ネットワークデバイス150は、確認応答時にCONG_SEQ_NUMを受信パケットに反映させ、ACK_CONG_SEQとする。ACK_CONG_SEQが対応する再送信されたパケット上のCONG_SEQ_NUMよりも大きい場合、送信ネットワークデバイス150は、再送信されたパケットが損失したと結論付け、当該損失から回復するために適切なアクションをとる。この機構がない場合、再送信されたパケットが損失したか否かを判断するための唯一の手法は、タイムアウト機構を使用することであるが、これは貴重なネットワーク帯域幅の非効率的な使用法である。
拡張トランスポートプロトコル165によって使用される損失報告機構は、より多数の損失ブロックを収容し、マルチレベル選択的確認応答(SACK)機構を組み込むことにより、従来の技術よりも速い報告を可能にする。従来のTCPによって使用される単層式のSACK機構とは異なり、拡張トランスポートプロトコル165は、損失を送信ネットワークデバイス150へ伝達するために、複数レベルのSACKを使用する。各SACKブロックは、パケットの損失ブロックの開始および終了の両方、ならびに、損失回復段階の伝送サイクルの番号を有する。伝送サイクル番号は、SACKブロック内のパケットの再伝送の数によって識別される。送信ネットワークデバイス150は、再伝送プロセスに関する最小伝送サイクル番号に優先権を与える。
ネットワークデバイス150は、パケットが受信機に到達しない際にネットワーク130が長期にわたってダウンする事例に対処するために、粗タイムアウトも使用する。新しいデータパケットが受信機によって確認応答される(確認応答によって示される)度に、タイマがリセットされる。タイマが満了した場合、それは、送信バッファ中の行列の先頭のパケットが首尾よく配信されず、したがって再送信の必要があることを示している。これらの粗タイムアウトは、一時的なネットワーク故障に対処することができ、一方、上述したCONG_SEQ_NUMベースの損失検出および回復機構は、受信機に到達し、それによって送信機への確認応答をトリガするパケットがある場合のみ、稼動する。
拡張トランスポートプロトコル165のまた別の特徴は、従来のトランスポートプロトコルとは異なりシーケンス番号を使用することによって信頼性を増大させる。受信ネットワークデバイス150は、確認応答内のNXT_SEQ_NUMフィールドを使用して、受信ネットワークデバイス150における受信バッファのステータスを送信ネットワークデバイス150に連絡する。NXT_SEQ_NUMは、受信機のアウトオブオーダ・バッファ中にある行列の先頭のパケットのシーケンス番号である。送信機は、NXT_SEQ_NUM値を使用して、受信した確認応答が「真の部分的確認応答」であるか「偽の部分的確認応答」であるかを判断する。真の部分的確認応答は、NXT_SEQ_NUMに満たないすべてのパケットの受信を確認応答するが、損失時において未処理であるすべてのパケットではない。偽の部分的確認応答は、NXT_SEQ_NUMに満たないすべてのパケットの受信を確認応答せず、受信機によって予期された次のシーケンス内のパケットを確認応答する。真および偽の部分的確認応答を区別するためにNXT_SEQ_NUMフィールドを使用することにより、送信ネットワークデバイス150は、損失回復中でさえも、ネットワーク130の利用を増大させる。
拡張トランスポートプロトコル165とTCP等の従来のトランスポートプロトコルとの間のさらに別の差異は、拡張トランスポートプロトコル165のいくつかの実施形態が、告知(スライディング)ウィンドウサイズまたは輻輳ウィンドウサイズについての限界を有さないことである。拡張トランスポートプロトコル165のその他の実施形態は、限界を有する。これらの実施形態のいくつかは、従来のプロトコルによって使用される限界よりもはるかに大きい限界を有する。
図11は、トランスポートプロトコルの性能を改善するためのシステムおよび方法にしたがった、ネットワークデバイス150のハードウェアブロック図である。ネットワークデバイス150は、プロセッサ1110、ローカルネットワークインタフェース1120、リモートローカルインタフェース1130、メモリ1140、および不揮発性ストレージ1150を含む、データ通信の分野で既知である多数の構成要素を包含する。不揮発性ストレージの例としては、例えば、ハードディスク、フラッシュRAM、フラッシュROM、EEPROM等を含む。これらの構成要素は、バス1160を介して連結される。メモリ1140は、図1のトランスポートプロトコルの性能を改善するための論理160を包含する。
ネットワークデバイス150は、2つのネットワークインタフェースと共に示されている。ローカルネットワークインタフェース1120はエンドポイント110と通信を行っており、リモートローカルインタフェース1130はルータ140と通信を行っている。当業者であれば、ネットワークインタフェースは異なるタイプの、異なる媒体および速度に対応するもの等であってもよいことを理解するはずである。図11からは、ネットワークデバイス150の動作について説明するために必要ない、当業者に既知である多数の従来の構成要素が省略されている。
フローチャート内のあらゆるプロセス記述またはブロックは、当該プロセス中の特定の論理機能またはステップを実装するための1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの部分を表すものとして理解されるべきものである。ソフトウェア開発分野の当業者には理解されるように、本開示の範囲内には、代替的実装も含まれる。これらの代替的実装において、機能は、関与する機能性に応じて、図示または考察されているものと実質的に同時または逆の順序を含むアウトオブオーダで実行され得る。
本願において開示するシステムおよび方法は、命令実行システム、装置、もしくはデバイスによって、またはそれらと接続して使用するための任意のコンピュータ可読媒体において具現化され得る。そのような命令実行システムは、任意のコンピュータベースのシステム、プロセッサ包含システム、または、命令実行システムからの命令をフェッチおよび実行することができるその他のシステムを含む。本開示の文脈において、「コンピュータ可読媒体」は、命令実行システムによって、またはそれと接続して使用するためのプログラムを包含、格納、通信、伝搬、または運搬することができる任意の手段であってもよい。コンピュータ可読媒体は、例えば、電子、磁気、光学、電磁気、赤外線、または半導体技術に基づくシステムまたは伝搬媒体であってもよいが、これらに限定されない。
電子技術を使用するコンピュータ可読媒体の具体例としては、1本以上のワイヤを有する電気的接続(電子)、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能リードオンリメモリ(EPROMまたはフラッシュメモリ)を含み得る(がこれらに限定されない)。磁気技術を使用する具体例としては、ポータブルコンピュータディスケットを含む(がこれらに限定されない)。光学技術を使用する具体例としては、光ファイバおよびポータブルコンパクトディスクリードオンリメモリ(CD‐ROM)を含む(がこれらに限定されない)。
前述の記述は、図示および説明を目的として提示したものである。網羅的であることも、開示されている厳密な形態に本開示を限定することも意図していない。上記の教示に鑑みて、明らかな修正形態または変形形態が可能である。しかしながら、考察されている実装は、本開示の原理およびその実践的応用を説明し、それによって、当業者が、種々の実装において、および予定される特定の使用に適した種々の修正形態と共に本開示を利用することを可能にするために、選定および説明したものである。そのような修正形態および変形形態はすべて、それらが公正且つ合法的に権利を与えられた幅にしたがって解釈される場合、添付の特許請求の範囲によって判断されるように、本開示の範囲内である。
Claims (5)
- 第1のデバイスとピアの第2のデバイスとの間のネットワークにおける輻輳を制御する方法であって、
第1の状態において、輻輳ウィンドウを非線形に増大させるステップと、
該第1の状態の間に、該輻輳ウィンドウが閾値を上回ったことを受けて、第2の状態へ遷移するステップと、
該第2の状態において、該輻輳ウィンドウを線形に増大させるステップと
を含む、方法。 - 多数のパケットの損失を示す重複確認応答の受信時に、第3の状態へ遷移するステップと、
該第3の状態において、該パケット損失の数に比例して前記輻輳ウィンドウを減少させるステップと
をさらに含む、請求項1に記載の方法。 - 第1のパケット系列を送信するステップであって、各パケットは、増加するシーケンス番号を含む、ステップと、
第2のパケット系列を受信するステップであって、各パケットは、確認応答されたシーケンス番号を含む、ステップと、
該確認応答されたシーケンス番号のうちの1つが、該第1のパケット系列のうちの対応する1つの該増加するシーケンス番号より大きい場合、パケットの損失を示すステップと
をさらに含む、請求項1に記載の方法。 - 開始シーケンス番号、終了シーケンス番号、および送信サイクル番号を包含する選択的確認応答を送信するステップをさらに含む、請求項1に記載の方法。
- パケットの損失を検出するステップと、
該パケットの損失の検出時に、損失検出時点で確認応答されていないパケットの数を記録するステップと、
ピア受信機のアウトオブオーダ・バッファ内にある次のパケットのシーケンス番号を包含する確認応答を受信するステップと、
該受信したシーケンス番号が、該損失検出時点で確認応答されていないすべてのパケットの確認応答を示しているか否かを判断するステップと
をさらに含む、請求項1に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US76578706P | 2006-02-07 | 2006-02-07 | |
PCT/US2007/061798 WO2007092901A2 (en) | 2006-02-07 | 2007-02-07 | Systems and methods of improving performance of transport protocols |
US11/672,390 US7839783B2 (en) | 2006-02-07 | 2007-02-07 | Systems and methods of improving performance of transport protocols |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009526494A true JP2009526494A (ja) | 2009-07-16 |
Family
ID=38345945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008554489A Withdrawn JP2009526494A (ja) | 2006-02-07 | 2007-02-07 | トランスポートプロトコルの性能を改善するシステムおよび方法 |
Country Status (9)
Country | Link |
---|---|
US (2) | US7839783B2 (ja) |
EP (1) | EP1987365A4 (ja) |
JP (1) | JP2009526494A (ja) |
KR (1) | KR20090014334A (ja) |
AU (1) | AU2007212001A1 (ja) |
CA (1) | CA2642510A1 (ja) |
IL (1) | IL193323A0 (ja) |
MX (1) | MX2008010122A (ja) |
WO (1) | WO2007092901A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012095190A (ja) * | 2010-10-28 | 2012-05-17 | Sony Corp | 通信装置、通信システム、プログラム及び通信方法 |
WO2013125096A1 (ja) * | 2012-02-24 | 2013-08-29 | 株式会社日立製作所 | 通信装置 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195823B2 (en) | 2000-04-17 | 2012-06-05 | Circadence Corporation | Dynamic network link acceleration |
US8024481B2 (en) | 2000-04-17 | 2011-09-20 | Circadence Corporation | System and method for reducing traffic and congestion on distributed interactive simulation networks |
US20110128972A1 (en) | 2000-04-17 | 2011-06-02 | Randy Thornton | Peer to peer dynamic network link acceleration |
US8996705B2 (en) | 2000-04-17 | 2015-03-31 | Circadence Corporation | Optimization of enhanced network links |
US8510468B2 (en) | 2000-04-17 | 2013-08-13 | Ciradence Corporation | Route aware network link acceleration |
US8898340B2 (en) | 2000-04-17 | 2014-11-25 | Circadence Corporation | Dynamic network link acceleration for network including wireless communication devices |
AU2001257058A1 (en) | 2000-04-17 | 2001-10-30 | Circadence Corporation | System and method for on-network storage services |
US8065399B2 (en) | 2000-04-17 | 2011-11-22 | Circadence Corporation | Automated network infrastructure test and diagnostic system and method therefor |
IES20050376A2 (en) * | 2005-06-03 | 2006-08-09 | Asavie R & D Ltd | Secure network communication system and method |
US8427951B2 (en) * | 2007-08-30 | 2013-04-23 | International Business Machines Corporation | Method, system, and apparatus for reliable data packet recovery in a link layer of a data center ethernet network |
US8588064B2 (en) * | 2008-01-17 | 2013-11-19 | Qualcomm Incorporated | Transport layer that warns application of potential bottleneck and methods thereof |
US8015313B2 (en) * | 2008-03-04 | 2011-09-06 | Sony Corporation | Method and apparatus for managing transmission of TCP data segments |
US7920569B1 (en) * | 2008-05-05 | 2011-04-05 | Juniper Networks, Inc. | Multi-link transport protocol translation |
EP2329385A4 (en) | 2008-08-06 | 2016-09-14 | Movik Networks | CALLING CONTENT IN THE RADIO ACCESS NETWORK (RAN) |
WO2010075426A1 (en) * | 2008-12-23 | 2010-07-01 | Movik Networks | Transparent interaction with multi-layer protocols via selective bridging and proxying |
EP2391953A4 (en) * | 2009-01-30 | 2012-08-08 | Movik Networks | APPLICATION, USE AND WIRELESS CONNECTING TRANSPORT NETWORK PLANNER |
US8553547B2 (en) * | 2009-03-30 | 2013-10-08 | Broadcom Corporation | Systems and methods for retransmitting packets over a network of communication channels |
US8159939B1 (en) * | 2009-05-08 | 2012-04-17 | Adobe Systems Incorporated | Dynamic network congestion control |
KR101568288B1 (ko) * | 2009-09-21 | 2015-11-12 | 삼성전자주식회사 | 데이터 수신 장치 및 방법 |
WO2011115965A1 (en) * | 2010-03-15 | 2011-09-22 | Movik Networks | Adaptive chunked and content-aware pacing of multi-media delivery over http transport and network controlled bit rate selection |
WO2012012334A2 (en) | 2010-07-19 | 2012-01-26 | Movik Networks | Content pre-fetching and cdn assist methods in a wireless mobile network |
US8452888B2 (en) * | 2010-07-22 | 2013-05-28 | International Business Machines Corporation | Flow control for reliable message passing |
WO2012040608A2 (en) | 2010-09-24 | 2012-03-29 | Movik Networks | Destination learning and mobility detection in transit network device in lte & umts radio access networks |
WO2012066824A1 (ja) * | 2010-11-16 | 2012-05-24 | 株式会社日立製作所 | 通信装置および通信システム |
US9591069B2 (en) | 2011-10-31 | 2017-03-07 | Adobe Systems Incorporated | Peer-to-peer assist for live media streaming |
US20140025823A1 (en) * | 2012-02-20 | 2014-01-23 | F5 Networks, Inc. | Methods for managing contended resource utilization in a multiprocessor architecture and devices thereof |
JP6051832B2 (ja) * | 2012-12-17 | 2016-12-27 | 富士通株式会社 | 通信装置,通信方法,及び通信プログラム |
US9432458B2 (en) * | 2013-01-09 | 2016-08-30 | Dell Products, Lp | System and method for enhancing server media throughput in mismatched networks |
US10178431B2 (en) | 2014-07-28 | 2019-01-08 | Adobe Inc. | Hybrid stream delivery |
CN104243342A (zh) * | 2014-09-19 | 2014-12-24 | 深圳市优视技术有限公司 | 数据传输控制方法及系统 |
US10491525B2 (en) * | 2015-03-10 | 2019-11-26 | Huawei Technologies Co., Ltd. | Traffic engineering feeder for packet switched networks |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
JP2016208315A (ja) * | 2015-04-23 | 2016-12-08 | 富士通株式会社 | 通信装置、通信処理方法、および、通信プログラム |
US10516892B2 (en) * | 2015-09-28 | 2019-12-24 | Cybrook Inc. | Initial bandwidth estimation for real-time video transmission |
CN106788911A (zh) * | 2015-11-25 | 2017-05-31 | 华为技术有限公司 | 一种报文重传的方法和装置 |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
CN105915469A (zh) * | 2016-06-30 | 2016-08-31 | 广东睿江云计算股份有限公司 | 基于qos的云主机系统的数据处理方法及装置 |
US11057501B2 (en) * | 2018-12-31 | 2021-07-06 | Fortinet, Inc. | Increasing throughput density of TCP traffic on a hybrid data network having both wired and wireless connections by modifying TCP layer behavior over the wireless connection while maintaining TCP protocol |
US10999206B2 (en) | 2019-06-27 | 2021-05-04 | Google Llc | Congestion control for low latency datacenter networks |
US11050587B1 (en) | 2020-02-04 | 2021-06-29 | 360 It, Uab | Multi-part TCP connection over VPN |
US11394582B2 (en) | 2020-02-04 | 2022-07-19 | 360 It, Uab | Multi-part TCP connection over VPN |
CN114615235A (zh) | 2020-12-04 | 2022-06-10 | 伊姆西Ip控股有限责任公司 | 管理网络中的设备的地址的方法、设备和计算机程序产品 |
US11743193B2 (en) | 2021-11-01 | 2023-08-29 | Seagate Technology Llc | Sliding window protocol for communication among more than two participants |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6252851B1 (en) * | 1997-03-27 | 2001-06-26 | Massachusetts Institute Of Technology | Method for regulating TCP flow over heterogeneous networks |
EP0948168A1 (en) * | 1998-03-31 | 1999-10-06 | TELEFONAKTIEBOLAGET L M ERICSSON (publ) | Method and device for data flow control |
US7130268B2 (en) * | 2000-10-17 | 2006-10-31 | Saverio Mascolo | End-to-end bandwidth estimation for congestion control in packet switching networks |
US6744730B2 (en) * | 2001-11-30 | 2004-06-01 | Nokia Corporation | Throughput enhancement after interruption |
KR100526187B1 (ko) * | 2003-10-18 | 2005-11-03 | 삼성전자주식회사 | 모바일 애드 혹 네트워크 환경에서 최적의 전송율을 찾기위한 조절 방법 |
JP4005974B2 (ja) * | 2004-01-09 | 2007-11-14 | 株式会社東芝 | 通信装置、通信方法、および通信システム |
WO2005125116A1 (en) * | 2004-06-22 | 2005-12-29 | Telefonaktiebolaget Lm Ericsson (Publ) | Network feedback method and device |
-
2007
- 2007-02-07 MX MX2008010122A patent/MX2008010122A/es not_active Application Discontinuation
- 2007-02-07 AU AU2007212001A patent/AU2007212001A1/en not_active Abandoned
- 2007-02-07 CA CA002642510A patent/CA2642510A1/en not_active Abandoned
- 2007-02-07 US US11/672,390 patent/US7839783B2/en active Active
- 2007-02-07 EP EP07763595A patent/EP1987365A4/en not_active Withdrawn
- 2007-02-07 JP JP2008554489A patent/JP2009526494A/ja not_active Withdrawn
- 2007-02-07 KR KR1020087021822A patent/KR20090014334A/ko not_active Application Discontinuation
- 2007-02-07 WO PCT/US2007/061798 patent/WO2007092901A2/en active Application Filing
-
2008
- 2008-08-07 IL IL193323A patent/IL193323A0/en unknown
-
2010
- 2010-10-20 US US12/908,379 patent/US8605590B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012095190A (ja) * | 2010-10-28 | 2012-05-17 | Sony Corp | 通信装置、通信システム、プログラム及び通信方法 |
WO2013125096A1 (ja) * | 2012-02-24 | 2013-08-29 | 株式会社日立製作所 | 通信装置 |
JP5651805B2 (ja) * | 2012-02-24 | 2015-01-14 | 株式会社日立製作所 | 通信装置 |
US9231829B2 (en) | 2012-02-24 | 2016-01-05 | Hitachi, Ltd. | Communication device |
Also Published As
Publication number | Publication date |
---|---|
WO2007092901A2 (en) | 2007-08-16 |
US8605590B2 (en) | 2013-12-10 |
US20110116380A1 (en) | 2011-05-19 |
WO2007092901A3 (en) | 2007-12-21 |
US20070223379A1 (en) | 2007-09-27 |
CA2642510A1 (en) | 2007-08-16 |
US7839783B2 (en) | 2010-11-23 |
KR20090014334A (ko) | 2009-02-10 |
EP1987365A2 (en) | 2008-11-05 |
EP1987365A4 (en) | 2012-12-05 |
AU2007212001A1 (en) | 2007-08-16 |
IL193323A0 (en) | 2009-08-03 |
MX2008010122A (es) | 2009-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009526494A (ja) | トランスポートプロトコルの性能を改善するシステムおよび方法 | |
CN110661723B (zh) | 一种数据传输方法、计算设备、网络设备及数据传输系统 | |
US7940665B2 (en) | Transparent optimization for transmission control protocol flow control | |
US7969876B2 (en) | Method of determining path maximum transmission unit | |
US8379515B1 (en) | TCP throughput control by imposing temporal delay | |
JP5005003B2 (ja) | トンネルのトランスポートチャネル上のデータストリームの送信を管理する方法、対応するトンネル終点及びコンピュータ読み取り可能な記憶媒体 | |
US8462630B2 (en) | Early generation of acknowledgements for flow control | |
US9577791B2 (en) | Notification by network element of packet drops | |
JP2010504047A (ja) | マルチパス環境におけるトランスポートプロトコルの性能を改善するシステムおよび方法 | |
US20050185621A1 (en) | Systems and methods for parallel communication | |
US20090213850A1 (en) | Method for transmitting a data stream with anticipation of acknowledgments, correspondence input device and computer-readable storage medium | |
WO2014092779A1 (en) | Notification by network element of packet drops | |
US20100226384A1 (en) | Method for reliable transport in data networks | |
Tam et al. | Preventing TCP incast throughput collapse at the initiation, continuation, and termination | |
JP4599554B2 (ja) | 広帯域、高遅延無線ネットワークにおけるtcp輻輳制御方式 | |
Altahir et al. | Performance evaluation of TCP congestion control mechanisms using NS-2 | |
Li et al. | Achieving Low Latency for Multipath Transmission in RDMA Based Data Center Network | |
KR20010045532A (ko) | 전송 제어 프로토콜의 재전송 알고리즘 개선 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20100511 |