JP2008536339A - Network for guaranteed services with virtually no congestion: external Internet NextGenTCP (square wave) TCP friendly SAN ready-to-run implementation - Google Patents

Network for guaranteed services with virtually no congestion: external Internet NextGenTCP (square wave) TCP friendly SAN ready-to-run implementation Download PDF

Info

Publication number
JP2008536339A
JP2008536339A JP2007542358A JP2007542358A JP2008536339A JP 2008536339 A JP2008536339 A JP 2008536339A JP 2007542358 A JP2007542358 A JP 2007542358A JP 2007542358 A JP2007542358 A JP 2007542358A JP 2008536339 A JP2008536339 A JP 2008536339A
Authority
JP
Japan
Prior art keywords
tcp
packet
ack
congestion
rtt
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
Application number
JP2007542358A
Other languages
Japanese (ja)
Inventor
タン ボブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB0426176A external-priority patent/GB0426176D0/en
Priority claimed from GB0501954A external-priority patent/GB0501954D0/en
Priority claimed from GB0504782A external-priority patent/GB0504782D0/en
Priority claimed from GB0512221A external-priority patent/GB0512221D0/en
Priority claimed from GB0520706A external-priority patent/GB0520706D0/en
Application filed by Individual filed Critical Individual
Priority claimed from PCT/IB2005/003580 external-priority patent/WO2006056880A2/en
Publication of JP2008536339A publication Critical patent/JP2008536339A/en
Withdrawn legal-status Critical Current

Links

Abstract

既存のQoS/MPLS技法の使用を必要とせず、ネットワーク内のスイッチ/ルータソフトウェアのいずれかがエンドツーエンド性能結果を達成するために変更されるか寄与することを必要とせず、ネットワーク内の各すべてのノード間リンクでの制限されない帯域幅の提供を必要としない、事実上輻輳のないギャランティードサービス対応ネットワークの外部インターネット上での即座の準備ができた実装のための、TCP/IPプロトコル及び他の可能なプロトコルと関連するネットワークのスイッチ/ルータ構成とに対する単純な変更のさまざまな技法を提示する。  Does not require the use of existing QoS / MPLS techniques, does not require any switch / router software in the network to be modified or contributed to achieve end-to-end performance results, and TCP / IP protocol for immediate ready implementation on the external Internet of a virtually congested guaranteed service-enabled network that does not require unrestricted bandwidth provision on all inter-node links And various techniques of simple modifications to the network switch / router configuration associated with other possible protocols.

Description

[注:本発明は、同一発明人による以前に出願された関連の公開されたPCT出願第WO2005053265号全体を参照し、以前に出願された特許出願、2005年3月8日のGB0504782.4、2005年5月9日のGB0509444.6、2005年6月15日のGB0512221.3、及び2005年10月12日のGB0520706.3の説明全体を参照し(及び/又は本願にまだ含まれていない場合にその段落を組み込み)その優先権を主張するものである。]   [Note: The present invention refers to the entire related published PCT application WO2005053265 previously filed by the same inventor, previously filed patent application, GB 0504782.4, March 8, 2005, See the entire description of GB05509444.6 on May 9, 2005, GB05122221.3 on June 15, 2005, and GB05207066.3 on October 12, 2005 (and / or not yet included in this application) Incorporate that paragraph in the case) and claim its priority. ]

現在、サービス品質を保証するためにインターネット上のマルチメディア/音声/ファックス/リアルタイムIPアプリケーションを容易にするRSVP/QoS/TAGスイッチングなどの実施態様は、実施態様の複雑さから損害を受ける。さらに、ToS(データパケット内のtype of serviceフィールド)、TAGベースド、ソースIPアドレス、MPLSの使用など、複数のベンダの実施態様があり、トラバースされるQoS対応ルータのそれぞれで、データパケットは、そのデータパケットを転送できるようになる前に、上記のベンダの実施したフィールドのすべてについてスイッチ/ルータによって検査される必要がある(この故に、バッファリング/キューイングされる必要がある)。   Currently, implementations such as RSVP / QoS / TAG switching that facilitate multimedia / voice / fax / real-time IP applications over the Internet to ensure quality of service suffer from implementation complexity. In addition, there are multiple vendor implementations such as the use of ToS (type of service field), TAG-based, source IP address, MPLS, etc., and each traversed QoS enabled router has its data packet Before a data packet can be forwarded, all of the above vendor-implemented fields need to be inspected by the switch / router (and therefore need to be buffered / queued).

したがって、最大伝送レートでQoSデータパケットを搬送するテラビットリンクでは、想像するに、ルータは、各到着するデータパケットを検査し(且つ、バッファリング/キューイングし)、且つ、上記のさまざまなフィールドのすべてを検査するのにCPU処理時間を費やす必要がある(例えば、それに対して検査されるQoS優先順位ソースIPアドレステーブル自体だけでも、数万個になる場合がある)。したがって、ルータ製造業者の指定したスループット容量(通常のデータパケットの転送に関して)は、重いQoSデータパケット負荷の下で達成されない場合があり、一部のQoSパケットは、総データパケット負荷がリンク帯域幅又はルータ製造業者の指定したデータパケット通常スループット容量を超えていない場合であっても、大きい遅延をこうむるか、捨てられる。また、相互運用標準規格の欠如は、いくつかのIPテクノロジの、これらのQoS付加価値サービスをサポートする約束された能力が、まだ完全には実現されないことを意味する。   Thus, in a terabit link that carries QoS data packets at the maximum transmission rate, imagine that the router examines (and buffers / queues) each incoming data packet, and the various fields above. It takes CPU processing time to check everything (for example, the QoS priority source IP address table itself checked against it may be tens of thousands). Thus, the router manufacturer's specified throughput capacity (with respect to normal data packet forwarding) may not be achieved under heavy QoS data packet load, and some QoS packets may have a total data packet load that is linked to the link bandwidth. Or, even if the data packet does not exceed the normal throughput capacity specified by the router manufacturer, it will incur a large delay or be discarded. Also, the lack of interoperability standards means that the promised ability of some IP technologies to support these QoS value-added services is not yet fully realized.

本明細書では、既存の技術的現状のQoS実施態様よりよいサービスの保証を確保するために、データパケットによってトラバースされるスイッチ/ルータがRSVP/タグスイッチング/QoS機能を必要とすることなく、インターネット/プロプラエタリインターネットセグメント/WAN/LAN上でのよりよい又は類似するエンドツーエンド受信品質を有するマルチメディア/音声/ファックス/リアルタイムなどのアプリケーションに関するサービス品質を保証する方法を説明する。さらに、データパケットは、既存QoSベンダの実施態様フィールドのすべてを検査するためのバッファリング/キューイングを必ずしも必要とせず、したがって、上述した起こり得る捨てられるか又は遅延するシナリオを回避し、スイッチ/ルータ製造業者の指定した全スループット容量を容易にすると同時に、リンク帯域幅の全送信レートにおいてさえ、これらのギャランティードサービス(guaranteed service)データパケットを転送する。   In this document, the switch / router traversed by the data packet does not require RSVP / tag switching / QoS functions to ensure better service guarantees than existing QoS implementations of the current state of the art. A method for guaranteeing quality of service for applications such as multimedia / voice / fax / real-time with better / similar end-to-end reception quality on / proprietary Internet segment / WAN / LAN is described. Furthermore, data packets do not necessarily require buffering / queuing to inspect all of the existing QoS vendor implementation fields, thus avoiding the possible discarded or delayed scenarios described above, and It facilitates the total throughput capacity specified by the router manufacturer, while at the same time forwarding these guaranteed service data packets even at the full transmission rate of the link bandwidth.

既存のTCP/IPの同時乗法レート減少及びRTOタイムアウト時のパケット再送信機構よりよい輻輳回復/回避/予防のため及び/又は事実上輻輳のないギャランティードサービスTCP/IP機能を可能にするため及び/又は既存の同時乗法レートがタイムアウト及びRTOタイムアウトとして知られるパケット再送信タイムアウトを減らすようにするためにさらに変更される既存TCP/IPスタックの変更は、異なるレート減少タイムアウト値及びパケット再送信タイムアウト値を有する別々のプロセスに分離される
TCP/IPスタックは、下記のように変更される。
To reduce congestion and avoidance / prevention better than existing TCP / IP simultaneous multiplicative rate reduction and packet retransmission mechanism at RTO timeout and / or to enable a virtually service free service TCP / IP function And / or changes in the existing TCP / IP stack that are further modified to reduce the packet retransmission timeout, known as timeout and RTO timeout, as the existing simultaneous multiplicative rate has different rate decrease timeout values and packet retransmission timeouts The TCP / IP stack that is separated into separate processes with values is modified as follows:

.同時RTOレート減少及びRTOタイムアウトイベント時のパケット再送信が、RTO TimedOutを有する特定のソース−デスティネーションTCPフローに関するパケット/データユニット転送及びパケット再送信の完全な「ポーズ」の形をとるが、特定のTCPフローの1つ又は定義された個数のパケット/データユニット(RTOパケット/データユニットとすることができる)を「ポーズ/拡張ポーズ」期間中の完全なポーズインターバルごとに前方に転送できるようにし、
.送信された対応するパケット/データユニットの肯定応答が、「ポーズ」がもたらされる前にデスティネーション受信TCP/IPスタックから戻って受信されていない場合のソース/デスティネーションノード対に関する同時RTOレート減少及びパケット再送信インターバルは、下記になるようにセットされる。
. Packet retransmission on simultaneous RTO rate decrease and RTO timeout events takes the form of a complete “pause” of packet / data unit transfer and packet retransmission for a specific source-destination TCP flow with RTO TimedOut One TCP flow or a defined number of packets / data units (which can be RTO packets / data units) can be forwarded every full pause interval during the “pause / expanded pause” period. ,
. Simultaneous RTO rate reduction for the source / destination node pair when the acknowledgment of the corresponding packet / data unit transmitted is not received back from the destination receiving TCP / IP stack before the “pause” is introduced The packet retransmission interval is set as follows:

.(A)ネットワーク内のソースノード/デスティネーションノード対の間の非輻輳RTT*必ず1より大きい被乗数、又はソースノード/デスティネーションノード対の間の非輻輳RTTと、......によって導入される遅延に対処するのに十分なインターバルとの和、
又は
(B)最大の非輻輳RTTを有するネットワーク内の最も離れたソースノード/デスティネーションノード対の間の非輻輳RTT*必ず1より大きい被乗数、又は最大の非輻輳RTTを有するネットワーク内の最も離れたソースノード/デスティネーションノード対の間の非輻輳RTTと、さまざまなコンポーネントによって導入される可変遅延に対処するのに十分なインターバルとの和、
又は
(C)ある考案されたアルゴリズムに従って、ヒストリカルRTT値から動的に導出される、例えば、*必ず1より大きい被乗数、又はさまざまなコンポーネントによって導入される可変遅延によって導入される遅延に対処するのに十分なインターバルとの和など
又は
(D)任意のユーザ供給の値、例えば、オーディオ−ビジュアル知覚許容範囲について200ms、又は例えばhttpウェブページダウンロード知覚許容範囲について4秒...など。世界中の最も離れたソースノード/デスティネーションノード対の間のタイムクリティカルなオーディオ−ビジュアルフローについて、非輻輳RTTが、約250msになる場合があり、この場合に、そのような長距離タイムクリティカルフローのRTOセッティングは、上記の通常のオーディオ−ビジュアル許容範囲期間になり、衛星を介する今日の大陸間携帯電話呼品質と同様に許容される必要があるはずであることに留意されたい。
. (A) Non-congested RTT between source / destination node pairs in the network * multiplicand always greater than 1, or non-congested RTT between source / destination node pairs; . . . . . Sum with interval, enough to deal with the delay introduced by
Or (B) the non-congested RTT between the most distant source / destination node pairs in the network with the largest non-congested RTT * always the multiplicand greater than 1, or the most distant in the network with the largest non-congested RTT The sum of the non-congested RTT between the source / destination node pair and the interval sufficient to handle the variable delay introduced by the various components,
Or (C) according to a devised algorithm to deal with delays introduced dynamically from historical RTT values, eg, * multiplied by always greater than 1 or variable delays introduced by various components Or (D) any user-supplied value, eg 200 ms for audio-visual perceptible tolerance, or eg 4 seconds for http web page download permissible tolerance. . . Such. For time-critical audio-visual flows between the most distant source / destination node pairs around the world, the non-congested RTT may be approximately 250 ms, in which case such a long distance time-critical flow. Note that this RTO setting would be the normal audio-visual tolerance period described above and should be acceptable as well as today's intercontinental mobile phone call quality via satellite.

例えば200msのリアルタイムオーディオ−ビジュアルの知覚許容範囲限界内にキャッピングされた上記の(A)、(B)、(C)、又は(D)のRTOインターバル値を用いる場合に、事実上輻輳のないギャランティードサービスのネットワーク性能が達成される。   For example, using a RTO interval value of (A), (B), (C), or (D) above that is capped within the perceptual tolerance limits of 200 ms real-time audio-visual, a virtually uncongested galvan Ted service network performance is achieved.

.「ポーズ」だけであるが、既存の結合された同時RTOレート減少及びパケット再送信の代わりの又はその代理の、1つ又は定義された個数のパケット/データユニットが完全なポーズインターバル全体の間又は各連続する完全なポーズインターバルの間に転送されることを可能にする、上で説明したTCP/IP変更は、インターネット/インターネットのサブセット/WAN/LAN上で、RTO機構上での既存TCP/IP同時乗法レート減少より高速且つよりよい輻輳の回復/回避/予防を機能強化でき、事実上輻輳のないギャランティードサービス機能を使用可能にさえすることに留意されたい。また、既存TCP/IPスタックの結合された同時RTOレート減少及びパケット再送信を、異なるレート減少タイムアウト値及びパケット再送信タイムアウト値を有する別々のプロセスに分離できることに留意されたい。   . Only "pause", but instead of or in lieu of existing combined simultaneous RTO rate reduction and packet retransmission, one or a defined number of packet / data units during the entire pause interval or The TCP / IP changes described above, which can be transferred during each successive full pause interval, are over the Internet / Internet subset / WAN / LAN, existing TCP / IP over the RTO mechanism. Note that faster and better congestion recovery / avoidance / prevention can be enhanced than simultaneous multiplicative rate reduction, and even a guaranteed-free guaranteed service function can be enabled. It should also be noted that the combined simultaneous RTO rate reduction and packet retransmission of the existing TCP / IP stack can be separated into separate processes with different rate reduction timeout values and packet retransmission timeout values.

.また、前の段落のTCP/IP変更を、初期の少数のユーザによって増分式に実施できるが、必ずしも、変更された「ポーズ」TCP採用者に関するかなり悪い性能影響を有しない場合があり、さらに、変更された「ポーズ」TCP/IPを使用して送信されるパケット/データユニットが、ルートに沿ったスイッチ/ルータによってごく希に捨てられ、パケット/データユニットを捨てさせないように微調整され/捨てさせなくすることすらできることに留意されたい。この変更が大多数によって又はあまねく採用されるようになる時に、既存インターネットは、事実上輻輳のないギャランティードサービス機能を達成し、及び/又は輻輳バッファオーバーフローに起因するスイッチ/ルータによるルートに沿ったパケットドロップがない。   . Also, the TCP / IP changes in the previous paragraph can be made incrementally by an initial few users, but may not necessarily have a rather bad performance impact on the modified “pause” TCP adopters, Packets / data units sent using the modified “pause” TCP / IP are rarely discarded by switches / routers along the route, and are fine tuned / discarded to not cause the packet / data unit to be discarded Note that you can even avoid it. When this change is adopted by the majority or generally, the existing Internet will achieve a guaranteed service function with virtually no congestion and / or along the route by the switch / router due to congestion buffer overflow There is no packet drop.

例として、ネットワーク/インターネットサブセット/プロプラエタリインターネット/WAN/LAN内のすべてのスイッチ/ルータのそれぞれが、最小s秒と同等の(すなわち、s秒*すべての先行する着信リンクの物理帯域幅の合計)バッファサイズを有する/又はそのようにされ、起点センダソースTCP/IPスタックのRTOタイムアウト又はデカップルドレート減少タイムアウトインターバルに、同一のs秒又はそれ未満がセットされる(これは、オーディオ−ビジュアル許容範囲又はhttp許容範囲期間以内とすることができる)場合に、ソースの変更されたTCP/IPから送信されるすべてのパケット/データユニットは、介在するスイッチ/ルータでの輻輳バッファオーバーフローによって捨てられなくなり、すべてが、ワーストケースにおいて、s秒*トラバースされるノード数と同等の時間期間又は秒単位のすべての介在するノードのバッファサイズ同等物の合計のうちの大きい方(好ましくは、これは、必要な定義された許容範囲期間以内であり、あるいは、そうなるようにすることができる)以内に到着する。したがって、バッファサイズのすべてが、少なくとも、起点センダ/ソースの変更されたTCP/IPスタックの同等のRTOタイムアウト又はデカップルドレート減少タイムアウトインターバルセッティング以上であることが、介在するノードのスイッチ/ルータに対するよい実践になる。起点センダソースTCP/IPスタックは、介在するノードの累積バッファ遅延の合計が起点センダソースTCP/IPスタックのRTOタイムアウトインターバル又はデカップルドレート減少(本明細書では「ポーズ」の形)タイムアウトインターバル以上になる時に、RTOタイムアウト又はデカップルドレート減少タイムアウトを有し、このRTOタイムアウト又はデカップルドレート減少タイムアウトインターバル値は、必要な定義された知覚許容範囲インターバル以内にセットされ/そうなるようにすることができる。   As an example, each of all switches / routers in the network / Internet subset / proprietary Internet / WAN / LAN is equivalent to a minimum of s seconds (ie, s seconds * the total physical bandwidth of all previous incoming links) Have a buffer size and / or made so that the RTO timeout or decoupled rate decrease timeout interval of the originating sender source TCP / IP stack is set to the same s seconds or less (this is the audio-visual tolerance or all packets / data units sent from the source's modified TCP / IP will not be discarded due to congestion buffer overflow at the intervening switch / router. Is the larger of the sum of the buffer size equivalents of all intervening nodes in time periods or in seconds, equivalent to the number of nodes traversed in the worst case (preferably this is the required definition Is within the specified tolerance period, or can be made so). Therefore, good practice for intervening node switches / routers that all of the buffer sizes should be at least equal to or greater than the equivalent sender / source modified TCP / IP stack RTO timeout or decoupled rate decrease timeout interval setting. become. The originating sender source TCP / IP stack has a total accumulated buffer delay of the intervening nodes that is greater than or equal to the originating sender TCP / IP stack RTO timeout interval or decoupled rate decrease (herein "pause") timeout interval. Sometimes it has an RTO timeout or decoupled rate decrease timeout, and this RTO timeout or decoupled rate decrease timeout interval value can be set / so within a required defined perceptual tolerance interval.

これは、任意のポーズ期間/インターバル中に送信される単一の又は定義された個数のパケット/データユニットが、それに対応する肯定応答がその後にRTOタイムアウト又はデカップルドレート減少タイムアウトの後に遅れて到着する場合であっても、任意のRTO「ポーズ」イベント又はデカップルドレート減少「ポーズ」からさらに除外されるか、それを引き起こすことを許容されない場合に、特にそうである。その場合に、最悪の輻輳の場合に、起点センダソースTCP/IPスタックは、「ポーズ」とそれぞれが等しい持続時間の通常パケット送信フェーズとの間で交番する→すなわち、起点センダソースTCP/IPスタックは、最悪の場合でもその送信レートを「半分にする」だけであるはずであり、「ポーズ」中には、ほとんど何も送信しないが、ポーズが止まった時に再開されたならば、スライディングウィンドウ機構の下で許容される最高速度で送信する。   This means that a single or defined number of packets / data units transmitted during any pause period / interval will arrive later with a corresponding acknowledgment after an RTO timeout or decoupled rate decrease timeout Even so, especially if it is not allowed to be further excluded or caused by any RTO “pause” event or decoupled rate reduction “pause”. In that case, in the case of worst congestion, the origin sender source TCP / IP stack alternates between “pause” and the normal packet transmission phase each of equal duration → ie the origin sender source TCP / IP stack In the worst case, it should only “halve” its transmission rate, and during the “pause” it will send almost nothing, but if it resumes when the pause stops, the sliding window mechanism Send at the highest speed allowed under.

さらに、すべてのTCP/IPスタック又は大多数に関して、すべてがそのように変更され、RTOタイムアウトインターバル又はデカップルドレート減少タイムアウトインターバルに共通の値、例えば必要な定義された知覚許容範囲期間内のtミリ秒(t=ネットワーク内の最も離れたソースノード/デスティネーションノード対の非輻輳RTT*m被乗数)をセットされたインターネット/インターネットサブセット/WAN/LAN上で、そのインターネット/インターネットサブセット/WAN/LAN内で送信されるすべてのパケットは、s*ノード数又は(t−非輻輳RTT)+tのうちの短い方のみのルートに沿った総累積バッファ遅延を経験しながらデスティネーションに到着しなければならない。   In addition, for all TCP / IP stacks or the majority, everything is so modified and a common value for the RTO timeout interval or decoupled rate decrease timeout interval, eg t milliseconds within the defined perceptual tolerance period required. On the Internet / Internet subset / WAN / LAN with t = the non-congested RTT * m multiplicand of the farthest source node / destination node pair in the network, within that Internet / Internet subset / WAN / LAN All packets sent must arrive at the destination experiencing the total accumulated buffer delay along the shorter route of s * number of nodes or (t−non-congested RTT) + t only.

これは、既存TCP/IPスタックのRFC実施態様と好都合に対照をなし、この既存TCP/IPスタックのRFC実施態様は、パケットが捨てられないことを保証することができず、さらに、おそらく、送信されたすべてのパケットがある有用な定義された許容範囲期間以内に到着することを保証できない。「ポーズ」中に、介在する経路の輻輳は、この「ポーズ」によってクリアされて助けられ、この「ポーズ」中に送信される単一の又は少数の定義された個数のパケットは、この変更されたTCP/IPスタックがそれ相応に反応するために、介在する経路を有用にプローブして、輻輳が継続しているか止まったかを確かめる。   This contrasts favorably with the RFC implementation of the existing TCP / IP stack, which does not guarantee that the packet will not be discarded, and possibly the transmission It cannot be guaranteed that all packets sent will arrive within a useful defined tolerance period. During a “pause”, the intervening path congestion is cleared and helped by this “pause”, and a single or a small defined number of packets transmitted during this “pause” are modified. In order for the TCP / IP stack to react accordingly, usefully probe the intervening path to see if congestion continues or has stopped.

Next Generation TCP:さらなる改善及び変更
外部インターネットノード(内部ネットワークノードにも適用可能とすることができる)
ギャランティードサービスインターネットサブセット/WAN/LANに適用される同一のデカップルド「ポーズ」/送信レート減少タイムアウト及び実際のパケット再送信タイムアウトの機構(ACKタイムアウト及びパケット再送信タイムアウト)を、同様に、外部内部クラウド/外部WAN/外部LANに適用することができる。この場合に、非輻輳RTTest(すなわち、これまでに受信された対応する戻るACKに関する最新の最も小さい最小時間期間の変数)が、ギャランティードサービスインターネットサブセット/WAN/LAN内の既知の非輻輳RTT値の代わりに使用される。
Next Generation TCP: Further improvements and changes
External Internet node (can also be applied to internal network nodes)
The same decoupled “pause” / transmission rate reduction timeout and actual packet retransmission timeout mechanisms (ACK timeout and packet retransmission timeout) applied to guaranteed service Internet subset / WAN / LAN, as well as external internal It can be applied to cloud / external WAN / external LAN. In this case, the non-congested RTT test (ie, the latest smallest minimum time period variable for the corresponding back ACK received so far) is the known non-congested RTT in the guaranteed service Internet subset / WAN / LAN. Used in place of value.

.受信されたACK(送信された通常のデータパケット、ICMPプローブ、又はUDPプローブに関するACKとすることができる)から、ACKの受信の最新の最小時間期間(対応するパケット送信時刻からの)の変数が、更新され、この非輻輳RTTestは、ソースとデスティネーションとの間の非輻輳RTT値の最も最近の推定値として働く(ソースインターネットノードと外部インターネットノードとの間の非輻輳RTTが実際にわかっている場合には、さらによい)。知識を、地球上の最も離れた非輻輳RTTが例えば400msであるという事実について作ることができ、したがって、最大非輻輳RTTestが例えば400msであるという事実を利用することができる(しかし、両端が例えば小さい56Kモデム帯域幅であり、且つ、例えば1500バイトなどの大きいパケットが転送される場合に、1500バイトパケットがモデムから完全に出るかモデムに完全に入るのに約250msを要するという点で、注意を払わなければならず、したがって、非輻輳RTTest値をそれ相応に調整するために、パケットが実際にモデムを完全に出ることを完了した時刻をも入手することが好ましいはずである)。   . From the received ACK (which can be an ACK for a transmitted normal data packet, ICMP probe, or UDP probe), the latest minimum time period (from the corresponding packet transmission time) of receipt of the ACK is This non-congested RTTest is updated and serves as the most recent estimate of the non-congested RTT value between the source and destination (if the non-congested RTT between the source internet node and the external internet node is actually known) If so, even better). Knowledge can be made about the fact that the furthest non-congested RTT on the earth is 400 ms, for example, and thus the fact that the maximum non-congested RTTest is 400 ms, for example (but both ends are Note that with a small 56K modem bandwidth, and when a large packet is transferred, eg 1500 bytes, it takes about 250 ms for a 1500 byte packet to completely exit or enter the modem. Therefore, it should be preferred to also obtain the time at which the packet actually completes leaving the modem to adjust the non-congested RTTest value accordingly).

.任意のパケットのRTT(そのACKから導出される)*a>非輻輳RTTest(aは、必ず1より大きい被乗数である)である場合に、「ポーズ」がトリガされ(しかし、その「ポーズ」インターバル又は拡張された「ポーズ」インターバル(1つ又は複数)中に、通る1つ又は複数のデータパケットを許容するか、通るプローブパケットだけを許容し)、又は、レートが、あるパーセンテージ、例えば既存レートの95%まで減少し(これは、例えば、トラフィックシェーピング技法又は輻輳ウィンドウサイズの減分...などを介して実施することができ)、及び/又は、最も最近の/後続の受信されるACKのRTT*aが>非輻輳RTTestであり続ける限り又は考案されるアルゴリズムに基づいて導出される定義された時間期間について、後続ACK時に変更されたTCPのウィンドウサイズ/輻輳ウィンドウサイズを単に増分しないこと、又は上記のいずれかの組合せ、
直接にTCPスタック上でのレート減分実施態様は、自明であるが、モニタソフトウェア/IP転送モジュール/プロキシTCP...などでは、既存レートシェーピング/レートスロットリング技法を介して実施することができ、あるいは、特定のTCPフローの最も最近の有効ウィンドウサイズ値を単純にミラーリングする(且つ/又はこの機構の動作を延期する)モニタソフトウェア/IP転送モジュール/プロキシTCP内のTCPフローごとのもう1つのウィンドウサイズ/輻輳ウィンドウサイズ機構として実施すること、しかし、特定のフローの最も最近に受信されたACKのRTT*aが>非輻輳RTTestであり続ける時に/である限り、最も最近の有効ウィンドウサイズ値をミラーリングしない/ミラーリングを停止すること(すなわち、この機構の動作を開始する):そうではなく、この時間中に、最も最近に受信されたACKのRTT*aが>非輻輳RTTestであり続ける時に/である限り、この特定のフローに関するモニタソフトウェアのウィンドウサイズ/輻輳ウィンドウサイズ値は、そのフローの最も最近にミラーリングされた導出された/計算された現在の有効ウィンドウサイズすなわち、ウィンドウサイズ/アドバタイズされたウィンドウサイズ/輻輳ウィンドウサイズ値のうちのより小さいもののm%、例えば95%まで減らされるはずである(注:上記の動作を、任意選択で、t秒、例えば1秒だけ又はある考案されるアルゴリズムに基づいて遅延させることができる)。
. A “pause” is triggered (but its “pause” interval) if the RTT of any packet (derived from its ACK) * a> non-congested RTest (a is always a multiplicand greater than 1) Or allow one or more data packets to pass or allow only probe packets to pass during the extended “pause” interval (s), or rate is a percentage, eg, existing rate (This can be done, for example, via a traffic shaping technique or a congestion window size decrement ...) and / or the most recent / subsequent received ACK Defined time derived as long as the RTT * a of> continues to be> non-congested RTTest or based on the devised algorithm For while, it does not simply increments the window size / congestion window size for subsequent ACK sometimes modified TCP, or any combination of the above,
The rate decrementing implementation directly on the TCP stack is self-evident, but the monitor software / IP forwarding module / proxy TCP. . . Can be implemented through existing rate shaping / rate throttling techniques, or simply mirror the most recent effective window size value for a particular TCP flow (and / or postpone the operation of this mechanism). ) Implement as another window size / congestion window size mechanism for each TCP flow in the monitor software / IP forwarding module / proxy TCP, but the RTT * a of the most recently received ACK for a particular flow is> Do not mirror / stop mirroring the most recent effective window size value as long as / when it remains non-congested RTTest (ie, start this mechanism operation): Recently received ACK RTT * a> non-congested As long as / when it remains a TTest, the monitor software window size / congestion window size value for this particular flow is the most recently mirrored derived / calculated current effective window size of that flow, ie Should be reduced to m% of the smaller of the window size / advertised window size / congestion window size value, eg 95% (Note: the above operation is optionally only t seconds, eg 1 second) Or it can be delayed based on some devised algorithm).

[注:モニタソフトウェアを実施する時に、センダTCP輻輳ウィンドウサイズは、Windows TCPスタックソースコードがないWindowsプラットフォームでは直接に入手可能ではなく、したがって、ネットワークから導出される必要があり、この故に、センダTCPソースの現在の有効ウィンドウサイズを導出することができる(有効ウィンドウサイズ=min(ウィンドウサイズ,輻輳ウィンドウサイズ,レシーバがアドバタイズしたウィンドウサイズ)。現在のセンダTCPソースの現在の有効ウィンドウサイズ値/輻輳ウィンドウサイズ値の導出/近似において、さまざまな既存の技術的現状の方法論がある。しかし、例として、我々は、接続をオーバーフローさせない時に、センダTCPソースの輻輳ウィンドウサイズが、現在の送信レート*非輻輳RTTestであると仮定することができる(すなわち、その送信時刻及びその戻るACK時刻を監視するRTTあたり1つの「区別される」パケットを選択することによって計算される現在の送信レート、現在の送信レート=(送信時刻と戻るACK時刻との間に移動中のバイト数)/(戻るACK時刻−送信時刻)、我々は、センダTCPソースの現在の輻輳ウィンドウサイズが、移動中のバイト数と等しいと仮定することができる。   [Note: When implementing the monitor software, the sender TCP congestion window size is not directly available on Windows platforms without the Windows TCP stack source code, and therefore needs to be derived from the network, hence the sender TCP The current effective window size of the source can be derived (effective window size = min (window size, congestion window size, window size advertised by the receiver). Current effective window size value / congestion window of the current sender TCP source. There are various existing state-of-the-art methodologies in the derivation / approximation of the size value, but as an example we have the congestion window size of the sender TCP source when not overflowing the connection. Can be assumed to be the current transmission rate * non-congested RTTest (ie, by selecting one “distinguished” packet per RTT that monitors its transmission time and its return ACK time. Current transmission rate, current transmission rate = (number of bytes moving between transmission time and back ACK time) / (back ACK time-transmission time), we have the current congestion window size of the sender TCP source Can be assumed to be equal to the number of bytes being moved.

もう1つの例は、類似して、同様に、RTTインターバル内にモニタソフトウェアによって転送された総バイト数を監視することによって導出されるセンダTCPソースの現在の有効ウィンドウサイズ/現在の輻輳ウィンドウサイズを導出することができる]。   Another example is analogously the current effective window size / current congestion window size of the sender TCP source, similarly derived by monitoring the total number of bytes transferred by the monitor software within the RTT interval. Can be derived].

モニタソフトウェアでは、パーセンテージレート減分は、任意選択で、上記ように現在の有効ウィンドウサイズの導出/推定に依存する必要がない場合があり、その代わりに、モニタソフトウェアは、その代わりに「ポーズ」をもたらすことができる(及び/又は、1つ又は複数のパケットがこのポーズインターバル中に転送されることを可能にする):
.周期的な間隔を置かれたポーズされるインターバルが例えば1秒以内に合計p*I(Iは、秒単位の周期的な間隔を置かれたポーズされるインターバルである)になる場合に、効果的に輻輳ウィンドウ=(1−(p*I))/現在のスループットの1秒(現在の有効ウィンドウサイズ*現在のRTT)。
In monitor software, the percentage rate decrement may optionally not depend on the derivation / estimation of the current effective window size as described above; instead, the monitor software will instead “pause” (And / or allows one or more packets to be forwarded during this pause interval):
. Effective if the periodically spaced paused interval reaches, for example, a total p * I within 1 second (I is the periodically spaced paused interval in seconds) Thus, congestion window = (1- (p * I)) / one second of current throughput (current effective window size * current RTT).

.この故に、5%レート減分をもたらすためには、(P*I)を、0.05と等しくしなければならない。   . Hence, (P * I) must be equal to 0.05 to provide a 5% rate decrement.

この「ポーズ」インターバルは、周期的に均等に間隔を置かれて離れている必要すらない場合があり、且つ/又は各「ポーズ」インターバルは、同一のポーズ持続時間を有する必要すらない場合がある。   This “pause” interval may not need to be periodically spaced evenly and / or each “pause” interval may not need to have the same pause duration. .

例:「1つ又は複数のポーズ」中に合計5%未満の送信時間がある場合に、ソース−デスティネーションの帯域幅遅延積は、今や、既存値の0.95まで減らされるはずである。これは、今や、上記のオーバーラップしないRTTインターバルごとの総有効ウィンドウサイズ分のデータバイトまでを送信するのに、例えば1秒以内に5%少ない個数のオーバーラップしないRTTインターバルがあるはずだからである。「ポーズ」インターバル持続時間は、好ましくは、少なくとも非輻輳RTTestの最小値と同等にセットされなければならないが、必要な場合にはより小さくすることができる。例、20msおきに1つのサンプリングされたパケットを送信するVoIP送信において(非輻輳RTTestよりはるかにより小さいと仮定する)、例えば1秒の中の50msの単一の「ポーズ」インターバル持続時間(すなわち、5%有効ウィンドウサイズ減分と同等のレート減分をもたらす)を、例えば1秒の中の5つの均等な間隔を置かれた周期的「ポーズ」にすることができ、ここでの「ポーズ」のそれぞれは、持続時間10msを有し(タイムクリティカルVoIPパケット転送での長い遅延を導入しないように)、あるいは、例えば1秒の中の10個の均等な間隔を置かれた周期的「ポーズ」にすることができ、この「ポーズ」のそれぞれは、持続時間5msを有し....などである。   Example: If there is a total transmission time of less than 5% during “one or more pauses”, the source-destination bandwidth delay product should now be reduced to the existing value of 0.95. This is because there should now be, for example, 5% fewer non-overlapping RTT intervals within one second to transmit up to the total valid window size data bytes for each non-overlapping RTT interval. . The “pause” interval duration should preferably be set at least equal to the minimum value of non-congested RTTest, but can be smaller if necessary. For example, in a VoIP transmission that sends one sampled packet every 20 ms (assuming it is much smaller than the non-congested RTTest), for example a single “pause” interval duration of 50 ms in one second (ie, Which results in a rate decrement equivalent to a 5% effective window size decrement), for example, five equally spaced periodic “pauses” in one second, where “pause” Each of which has a duration of 10 ms (so as not to introduce long delays in time-critical VoIP packet forwarding), or, for example, 10 equally spaced periodic “pauses” in one second. Each of these “pauses” has a duration of 5 ms. . . . Etc.

さらに、センダTCPソースコードは、同様に、完全に「ポーズ」法を利用し、輻輳ウィンドウサイズセッティングの必要を完全に置換して、現在の有効ウィンドウサイズセッティングを実施することができる。この変更されたTCPでは、任意の時の現在の有効ウィンドウサイズは、[min(ウィンドウサイズ,レシーバがアドバタイズしたウィンドウサイズ)*((1−(p*I))/1秒)]になるはずである。   Furthermore, the sender TCP source code can also implement the current effective window size setting, completely utilizing the “pause” method, completely replacing the need for congestion window size settings. With this modified TCP, the current effective window size at any time should be [min (window size, window size advertised by receiver) * ((1- (p * I)) / 1 second)]. It is.

(継続される受信されたACKのRTT*aのストリームが>非輻輳RTTestであり続ける時に繰り返して減分しないように:しかし、さらに、例えば最も最近の最新のレート減分以降に送信されたパケットに対応する、最も最近に受信されたACKのストリームRTT*b(bは必ず>a)が>非輻輳RTTestである場合に、モニタソフトウェアのウィンドウサイズ値/輻輳ウィンドウサイズ値を、今や、さらに、現在既にL%/m%まで減らされているモニタソフトウェアのウィンドウサイズ値/輻輳ウィンドウサイズ値の例えば90/95%(L%又はm%)まで任意選択で繰り返して減らすことができる{bは、aより深刻なレベルの輻輳又はパケットドロップさえも表す。aとbとの一方又は両方は、パケットドロップイベントを意味する可能性が非常に高くなるものとすることができる。モニタソフトウェアは、任意選択として、上記の動作をt秒、例えば1秒だけ遅延させることができ、その結果、すべての既存の未変更のTCPが、レート減分において同期するようになる}。   (Don't repeatedly decrement when continued RACK * a stream of received ACK continues to be> non-congested RTTest: but also, for example, packets sent since the most recent latest rate decrement If the most recently received ACK stream RTT * b (b must be> a) corresponding to is non-congested RTTest, the monitor software window size value / congestion window size value is now The monitor software window size value / congestion window size value that has already been reduced to L% / m%, for example, 90/95% (L% or m%) can be optionally reduced repeatedly {b is It represents a more severe level of congestion or even packet drops than a. The monitoring software can optionally delay the above operation by t seconds, for example 1 second, so that all existing Unmodified TCP will be synchronized in rate decrement}.

且つ/又は、ある条件が成り立つ時、例えば、フローの最も最近の/後続の受信されたACKのRTT*aが>非輻輳であり続ける限り、ある考案されるアルゴリズムに基づくある期間の間にウィンドウサイズ/輻輳ウィンドウサイズを増分しない。   And / or when certain conditions are met, eg, during a period of time based on a devised algorithm, as long as the RTT * a of the most recent / subsequent received ACK of the flow remains> non-congested Do not increment size / congestion window size.

モニタソフトウェアを使用する時に、TCPは、もちろん、それ自体のスロースタート/輻輳回避/カップルドRTO...などを行い続ける。モニタソフトウェアは、例えば送信されたセグメントのACKが例えば1秒などの非常に長い期間の後にまだ受信されていない時...など、又はフローの送信レートの突然の半分化から...など、TCP RTOイベントを予測し/検出することができる。モニタソフトウェアは、さらに、そのミラーリングされたウィンドウサイズ値/輻輳ウィンドウサイズ値を例えば既存値の90%(n%)に減分することを選択することができ、且つ/又は、ある考案されたアルゴリズムに基づいて導出されるある時間期間の間に、例えば最も最近の/後続の受信されたACKのRTT*aが>非輻輳RTTestであり続ける限り、特定のフローのそれ自体の有効ウィンドウサイズ/輻輳ウィンドウサイズを増分しないことを選択することができる。   When using monitor software, TCP, of course, has its own slow start / congestion avoidance / coupled RTO. . . Continue to do. When the monitor software has not yet received an ACK for a transmitted segment, for example, after a very long period of time, eg 1 second. . . Or from sudden halving of the transmission rate of the flow. . . TCP RTO events can be predicted / detected. The monitor software may further choose to decrement its mirrored window size value / congestion window size value, for example to 90% (n%) of the existing value, and / or some devised algorithm During a certain time period derived based on the specific flow's own effective window size / congestion, for example as long as the RTT * a of the most recent / subsequent received ACK remains> non-congested RTTest You can choose not to increment the window size.

モニタソフトウェアは、さらに、それ自体のパケット再送信タイムアウトを実施することもでき、これは、モニタソフトウェアが、送信されたパケットの動的ウィンドウ分のコピーを必ず保持すること及びTCPに類似する再送信ソフトウェアモジュールを必要とし、この故に、モニタソフトウェアは、TCP RTO表示を待つ必要なしに上記の段落の諸機能をはるかによりすばやく実行することができる。この故に、モニタソフトウェアは、任意選択として、例えばTCPへのACKをスプーフィングすることによって、遅いACKがTCPでRTOを引き起こすのを防ぐことができ、TCPへの生成された/スプーフィングされたACKを介してTCPを制御し/ペーシングするとができ、例えば、0のアドバタイズされたレシーバウィンドウサイズを有するスプーフィングされたACKをセットして、時間の期間の間だけTCPを「ポーズ」させ、あるいはスプーフィングされたACKにある所望の値をセットしてTCPの有効ウィンドウサイズを減分し、Acknowledgement Numberフィールド値=最新の送信されたSeqNo値を有するDUP ACKをセットして、実際のパケット再送信を必要に引き起こすことなくTCPに有効ウィンドウサイズを半分にさせる...などである。モニタソフトウェアは、任意選択として、t秒、例えば1秒だけ上記の動作を遅延させることができ、その結果、すべての既存の未変更のTCPが、さまざまなレート減分において同期するようになる。   The monitor software can also implement its own packet retransmission timeout, which ensures that the monitor software keeps a copy of the transmitted packet for the dynamic window and resembles TCP. A software module is required, so the monitor software can perform the functions of the above paragraphs much more quickly without having to wait for a TCP RTO display. Hence, the monitoring software can optionally prevent slow ACKs from causing RTO in TCP, for example by spoofing ACKs to TCP, via generated / spoofed ACKs to TCP. TCP can be controlled / paced for example by setting a spoofed ACK with an advertised receiver window size of 0 to “pause” TCP for a period of time, or a spoofed ACK Decrease TCP effective window size by setting the desired value in, and set DUP ACK with Acknowledgment Number field value = latest sent SeqNo value to cause actual packet retransmission Without Let TCP halve the effective window size. . . Etc. The monitor software can optionally delay the above operation by t seconds, for example 1 second, so that all existing unmodified TCPs are synchronized at various rate decrements.

さまざまな異なるアルゴリズム/異なるアルゴリズムの組合せを、図示の/上記で概要を示したものの代わりに考案することができる。さまざまな既存の技術的現状の方法又はコンポーネント方法を、さらに、本明細書で説明される方法又はコンポーネント方法のどれにでも、改善として組み込むことができる。   A variety of different algorithms / different algorithm combinations can be devised instead of those shown / outlined above. Various existing state-of-the-art methods or component methods may be further incorporated as improvements in any of the methods or component methods described herein.

変更されたTCP(又は変更されたRTP over UDP/変更されたUDP...などでさえ)フローは、この場合に、レートを半分にする必要がない。というのは、これらが、輻輳してパケットドロップを引き起こす時(バッファリングイベント中)に、レートを増分する必要がなく、且つ、例えば送信レートの10%/5%減分が、新しいフローの非枯渇を保証するからである(すべての他の既存の未変更のTCPフローは、50%減分を保証するはずであるが、必ず、レートを増分しようと努力して、もう一度パケットドロップを引き起こすはずである)。新しいフローは、その公平なシェアを経時的に築き上げるはずである。これは、既存の確立されたフローの短い待ち時間...などをもほどよく保存し(VoIP/マルチメディアに適する)、既存の伝統的なPSTN呼アドミッションスケジュールを反映する。   A modified TCP (or even modified RTP over UDP / even modified UDP...) Flow does not need to be halved in this case. This is because when they are congested and cause a packet drop (during a buffering event), there is no need to increase the rate and, for example, a 10% / 5% decrement of the transmission rate will cause non- (All other existing unmodified TCP flows should guarantee a 50% decrement, but always try to increment the rate and cause another packet drop.) Is). New flows should build their fair share over time. This is a short latency for existing established flows. . . And so on (suitable for VoIP / multimedia) to reflect the existing traditional PSTN call admission schedule.

この場合に、変更されたTCP/変更されたRTP over UDP/変更されたUDPは、リンクの帯域幅の、その確立されたシェア又はその確立されたシェアのほとんどを保持するが、さらなる追加の輻輳/パケットドロップを引き起こさない。   In this case, modified TCP / modified RTP over UDP / modified UDP retains its established share or most of its established share of the link bandwidth, but with additional additional congestion. / Does not cause packet drop.

閾値までのTCP指数関数的増加、閾値の後の輻輳回避中の線形増加、スライディングウィンドウ/輻輳ウィンドウ機構...などは、ボトルネックリンクの輻輳の始まりが徐々であることを保証し、この故に、変更されたTCP及び既存の未変更のTCPは、それ相応に反応して、輻輳を除去することができる。ここでの変更されたTCP/変更されたRTP over UDP/変更されたUDPは、例えばパケットドロップに近い輻輳レベルの時に、十分な余分のトラフィックのすばやい突然のバーストを使用することすらして、特定の輻輳したリンク(1つ又は複数)をトラバースするすべての又は選択的な既存フローが、送信レートを下げるためにパケットドロップ通知を得ることを保証することができる。既存の未変更TCPは、そのレートを半分にし、前の輻輳を引き起こす送信レートを構築し直すのに長い時間を要するはずであるが、変更されたTCPは、リンク(1つ又は複数)に沿った帯域幅のすべての確立されたシェアのほとんどを保持するはずである。   TCP exponential increase to threshold, linear increase during congestion avoidance after threshold, sliding window / congestion window mechanism. . . Etc. ensure that the bottleneck link congestion begins slowly, so modified TCP and existing unmodified TCP can react accordingly and remove congestion. Modified TCP / Modified RTP over UDP / Modified UDP here is identified by even using a quick burst of enough extra traffic, eg, at a congestion level close to packet drop. It can be ensured that all or selective existing flows traversing the congested link (s) will get a packet drop notification to reduce the transmission rate. The existing unmodified TCP should halve its rate and take a long time to reconstruct the transmission rate that caused the previous congestion, but the modified TCP will be along the link (s) Should retain most of all established shares of bandwidth.

これは、公衆インターネット上でのこの単純な分離されたTCP変更の増分的採用を最も有用に促進する。変更されたセンダTCPソースは、より高いスループットを達成し、ドロップを引き起こすボトルネックリンクの輻輳(又はパケットドロップを引き起こす単なる物理送信エラー)の際にボトルネックリンクの帯域幅のその確立されたシェアを保持すると同時に、フローの間の公平さを保ち(単一のパケットドロップの際に、確立された帯域幅の半分を失う既存TCPと比較されたい)、それ自体では、パケットドロップを一切引き起こさない。この変更されたセンダソースTCPは、高帯域幅長待ち時間ネットワークで、単一のパケットドロップだけによって引き起こされる既存のTCPレート回復問題を克服する。   This most facilitates the incremental adoption of this simple isolated TCP change on the public Internet. The modified sender TCP source achieves higher throughput and reduces its established share of bottleneck link bandwidth in the event of bottleneck link congestion that causes drops (or just physical transmission errors that cause packet drops). At the same time, it preserves fairness between flows (compare with existing TCP that loses half of the established bandwidth in a single packet drop) and does not cause any packet drops by itself. This modified sender source TCP overcomes the existing TCP rate recovery problem caused by only a single packet drop in a high bandwidth long latency network.

センダTCPソースのトラフィックが、外部インターネットノード/WAN/LANから発する場合に、外部から発するトラフィックがタイムスタンプされる(レシーバTCPが経路伝送時間又はソースからデスティネーションまでの一方向伝送遅延を導出することを可能にする)と仮定すると、上記の変更されたセンダソースTCP法は、レシーバベースドの方法として働くように適合させることができる。   When the sender TCP source traffic originates from an external Internet node / WAN / LAN, the traffic originating from the outside is time stamped (the receiver TCP derives the path transmission time or the one-way transmission delay from the source to the destination) The modified sender source TCP method described above can be adapted to act as a receiver-based method.

.起点ソースのタイムスタンプは、レシーバに正確に同期される必要がない。レシーバは、この場合にソースシステムクロックのタイムスタンプドリフトを無視することができる。OTTest(ソースからデスティネーションへの受信されたパケットの一方向伝送待ち時間の最も最新の更新推定値であり、パケットが受信された時の現在のレシーバシステム時間−受信されたパケットのセンダタイムスタンプと同等のこれまでに導出された最小の値である)が、レシーバで導出される。後続の受信されたパケットで観察されるOTTのすべての増分は、経路に沿った輻輳の無知な始まり(insipient onset)(すなわち、その経路に沿った少なくとも1つの転送するリンクが、現在、完全に100%利用されており、パケットがその経路に沿ってバッファリングされ始める)を示し、今や、センダTCPソースが、今や変更されたレート減分又は「ポーズ」機構をトリガしなければならないことを意味するはずである。レシーバは、下記によって、これをセンダTCPソースにシグナリングすることができる。   . The origin source timestamp does not need to be accurately synchronized to the receiver. The receiver can ignore the time stamp drift of the source system clock in this case. OTTest (the most recent update estimate of the one-way transmission latency of the received packet from the source to the destination, the current receiver system time when the packet was received-the sender timestamp of the received packet and The smallest value ever derived) is derived at the receiver. All increments of OTT observed in subsequent received packets are the ignorant beginning of congestion along the path (ie, at least one forwarding link along that path is currently fully Means that the sender TCP source now has to trigger a modified rate decrement or “pause” mechanism. Should do. The receiver can signal this to the sender TCP source by:

.適当な「ポーズ」又は適当な「周期的」ポーズの後に同一のオリジナルのアドバタイズされるウィンドウサイズに戻る前に、適当な期間の戻るACK内で、アドバタイズされるウィンドウサイズに0をセットする。   . Before returning to the same original advertised window size after an appropriate “pause” or an appropriate “periodic” pause, set the advertised window size to 0 in the return ACK for the appropriate period.

.センダTCPソースの現在の導出/推定された有効ウィンドウサイズ(有効ウィンドウサイズ=min(ウィンドウサイズ,輻輳ウィンドウサイズ,レシーバウィンドウサイズ)の適当に減分された値、例えばセンダTCPソースの現在の導出/推定された有効ウィンドウサイズの95%をアドバタイズされるウィンドウサイズにセットすること。この場合に、センダTCPソースは、変更されたレシーバTCPが同一のアドバタイズされる減分された現在の導出/推定された有効ウィンドウサイズを用いてACKし続ける限り、各RTT内で受信されるACKについて有効ウィンドウサイズを継続的には増分しないはずである。しかし、現在の戻るACKのアドバタイズされるレシーバウィンドウサイズが、後に変更される場合に、その増分は、パケットドロップを引き起こさない。というのは、センダTCPソースが、その経路に沿った輻輳の次の無知な始まりの際に、最終的にその有効ウィンドウサイズを減分することを、変更されたレシーバTCPが保証するからである。他の可能な技法に、レシーバTCPがAckをDUPすることが含まれる(センダTCPソース乗法輻輳ウィンドウ減少の半分化をトリガするための連続する3つのDUP ACK)。   . The current derivation / estimated effective window size of the sender TCP source (effective window size = min (window size, congestion window size, receiver window size)), for example, the current derivation / sender of the sender TCP source Set 95% of the estimated effective window size to the advertised window size, in which case the sender TCP source will receive a decremented current derivation / estimation where the modified receiver TCP is advertised the same. The effective window size should not be continually incremented for ACKs received within each RTT as long as it continues to ACK using the effective window size, but the advertised receiver window size of the current return ACK is If it is changed later, the increase Does not cause a packet drop, because the sender TCP source has been changed to eventually decrement its effective window size at the next ignorant beginning of congestion along its path Because the receiver TCP guarantees, another possible technique involves the receiver TCP DUPing Ack (sequential 3 DUP ACKs to trigger halving of sender TCP source multiplicative congestion window reduction). .

.初期TCP接続確立フェーズ中に、変更されたレシーバTCPは、タイムスタンプオプションを有するためにセンダTCPソースとネゴシエートするはずである。このレシーバベースドの変更されたTCP/変更されたモニタソフトウェアは、センダTCPを変更することを必要としない。   . During the initial TCP connection establishment phase, the modified receiver TCP should negotiate with the sender TCP source to have a time stamp option. This receiver-based modified TCP / modified monitor software does not require changing the sender TCP.

センダTCPとレシーバTCPとの両方が、タイムスタンプオプションと一緒に変更される時に、両方の方向でのよりよく正確なOTT/OTT変動の知識がイネーブルされるはずである(変更されたTCP/変更されたモニタソフトウェアの両方が、お互いへの方向でOTTの知識を渡すことができ、したがって、変更されたTCP/変更されたモニタソフトウェアは、今や、RTTではなくOTTを使用してよりよい制御を提供することができ、例えば、送信されたセグメントのOTTが輻輳を示さないが戻るACKのOTTが輻輳を示す場合に、以前のRTTベースの方法で使用されるRTTがタイムアウトしている場合であっても、レート減分/「ポーズ」を行う必要はない。センダでのみ実施される時の、タイムスタンプオプションと一緒に使用される、RTTベースの変更されたTCPは、センダが、戻るACKのOTTest及び/又はOTT変動を同様に所有することを可能にして、よりよい制御を同様に提供するはずである。   When both sender TCP and receiver TCP are changed with the timestamp option, better and more accurate knowledge of OTT / OTT variation in both directions should be enabled (modified TCP / change Both monitor software can pass OTT knowledge in the direction to each other, so modified TCP / modified monitor software now has better control using OTT rather than RTT For example, if the OTT of the transmitted segment does not indicate congestion but the OTT of the returned ACK indicates congestion, the RTT used in the previous RTT-based method has timed out. However, there is no need to rate decrement / pause, a time stamp option when it is only performed on the sender. RTT-based modified TCP, used in conjunction with, should also allow senders to own OTTest and / or OTT variations of returning ACKs as well and provide better control as well .

変更されたTCP技法が大陸間海低ケーブル/衛星リンク/WANリンクの両端で実施される場合に、事実上物理リンクの物理帯域幅の2倍化に似て、TCPの伝送媒体の帯域幅利用度及びスループットが増えるはずであることに留意されたい。   When the modified TCP technique is implemented at both ends of an intercontinental low cable / satellite link / WAN link, it effectively resembles doubling the physical bandwidth of the physical link, and bandwidth utilization of the TCP transmission medium. Note that the degree and throughput should increase.

当業者は、さまざまな修正及び変更を行うことができるが、本原理の範囲に含まれる。   Those skilled in the art can make various modifications and changes within the scope of the present principles.

UDPの優先順位付け
インターネット/インターネットサブセット/WAN/LAN内の各ノードでUDPにTCPより高い優先順位を与えること → などは、それでも、ノードの入力キューの以前の既存のTCPバッファリングされたパケット=>UDPパケットのバッファリングされた遅延又はUDPパケットドロップにさえ起因して、UDPトラフィックが転送するリンクの帯域幅の100%を超えて利用していない時であってもUDPドロップをもたらすことに留意されたい。
UDP prioritization Giving UDP a higher priority than TCP at each node in the Internet / Internet subset / WAN / LAN → etc., but still the previous existing TCP buffered packets in the node's input queue = > Note that due to buffered delay of UDP packets or even UDP packet drops, UDP traffic will result in UDP drops even when not using more than 100% of the bandwidth of the transport link I want to be.

1.すべてのUDPパケットをノードの入力キューバッファの前面に置き(且つ/又はTCPパケットが既に出力キューにエンキューされている時であってもTCPパケットを超えて優先順位を与えられるUDP入力キューからUDPパケットを出力キューの前面に優先して置き)、すべてのTCPパケットをキューの終りに向かってプッシュする(この故に、すべてのTCPパケットが、入力キュー及び/又は出力キューでのすべてのUDPパケットドロップの前に捨てられる)ために、ルータ/スイッチのソフトウェアをアップグレード/変更する必要がある。   1. UDP packets from the UDP input queue that are placed in front of the node's input queue buffer (and / or given priority over the TCP packets even when the TCP packets are already enqueued to the output queue) In front of the output queue) and push all TCP packets towards the end of the queue (thus all TCP packets will drop all UDP packets in the input queue and / or output queue) Router / switch software needs to be upgraded / changed).

2.別々のUDP入力キュー(非常に小さいものとすることができる)及びTCP入力キューの作成を可能にするためにルータ/スイッチのソフトウェアをアップグレードし、UDPキューは、TCPパケットの前に出力キューにスケジュールされる。且つ/又は、UDP高優先順位出力キュー及び低優先順位TCP出力キューを実施する。   2. Upgrade router / switch software to allow creation of separate UDP input queues (which can be very small) and TCP input queues, UDP queues scheduled to output queues before TCP packets Is done. And / or implement a UDP high priority output queue and a low priority TCP output queue.

UDPトラフィック単独が、リンクの物理帯域幅を超える場合があり、UDPを送信するソースに送信レートすなわち分解能品質(resolution quality)を下げさせる可能性があり、且つ/又はルータ/スイッチノードにすべてのUDPフローに対してこの分解能低下プロセスを実行させる可能性がある(例えば、フローの交番するパケットだけの送信及び他の交番するUDPパケットの破棄、又は、2つ(又は複数)の例えばVoIP UDPパケットのデータを同一サイズだがより低い分解能品質の1つのパケットへの組合せ)。   UDP traffic alone may exceed the physical bandwidth of the link, may cause the source sending UDP to reduce the transmission rate or resolution quality, and / or allow all UDP to the router / switch node May cause this resolution reduction process to be performed on the flow (eg, sending only alternating packets of the flow and discarding other alternating UDP packets, or of two (or more) eg VoIP UDP packets Combine data into one packet of the same size but lower resolution quality).

ノードは、さまざまなUDP/TCP...などのフローに関する転送するリンクの帯域幅の最小比率を保証することによって、TCP非完了枯渇を保証することができる。   The node is a variety of UDP / TCP. . . By guaranteeing a minimum ratio of the bandwidth of the forwarding link for a flow such as, TCP incomplete depletion can be guaranteed.

帯域幅推定
さらなる変更は、下記を含む(且つ、前に説明した非輻輳RTT/RTTest/RTTbase/OTTest/OTTbase/レシーバOTTest方法と一緒にあいまって使用することができ、したがって、出力結果をもたらすのにある時間を必要とする場合がある下の技法が上記の方法を補足するのに十分な時間を与えることができる)。
Further changes in bandwidth estimation include the following (and can be used in conjunction with the previously described non-congested RTT / RTTest / RTTbase / OTTest / OTTbase / receiver OTTest methods, thus providing output results: The following techniques, which may require some time, can give enough time to supplement the above method).

1.例えば、キューが形成されず/パケットがバッファリングされない(すなわち、トラバースされるすべてのノードがバッファ遅延を全く導入しないようにバッファ遅延をプリエンプトする)ようにするために、「ポーズ」/レート減少のために転送するリンク利用度が100%に達するなど、ある条件に出会う時に、そのため/レート減少(ある考案される最適化されたアルゴリズムに従う)のために考案されるアルゴリズムから導出される適当なインターバルの間だけ「ポーズ」するために、各トラバースされるノードの転送するリンクの帯域幅、利用度、スループット、キュー長、出会う遅延...などを確かめるために、pipechar、pipechar、traceroute、pathchar、pchar、pathload、bprobe、cprobe、netest、chirp...などの方法及び類似する技法を使用すること。   1. For example, a “pause” / rate reduction to prevent queues / packets from being buffered (ie, preempting buffer delay so that all traversed nodes do not introduce any buffer delay) A reasonable interval derived from an algorithm devised for that purpose / rate reduction (according to an devised optimized algorithm) when certain conditions are encountered, such as the link utilization for forwarding reaches 100% The bandwidth, utilization, throughput, queue length, and delay encountered in each traversed node to “pause” only during. . . In order to confirm the above, pipechar, pipechar, traceroute, pathchar, pchar, pathload, bprobe, probe, netest, chirp. . . Use similar methods and similar techniques.

例えば、特定のリンクでの利用度(UDP、ICMP、及びTCPのすべてを含むものとすることができる)が、例えば95%に達する時には、受信されるACKのウィンドウサイズをそれ以上増分せず、且つ、その後にパケットが捨てられる場合/時に限って、例えば10%だけ減分し(新しいフローが特定のリンクで帯域幅について完全に「枯渇」しないようにするために)、且つ/又は、おそらく、その後に、各ACKのウィンドウサイズを増分しないことができる。パケットが物理送信エラーに起因して(すなわち、バッファ過充填輻輳に起因するのではなく)捨てられる場合、経路に沿った特定のリンクでのリンク利用度が例えば95%(又は指定されたパーセンテージ)利用度未満の場合に、我々は、ウィンドウサイズ減分を停止する必要がない[高帯域幅長RTT TCPレート回復問題を解決する]。これは、公衆インターネット上でのこの単純な分離されたTCP変更の増分的採用を最も有用に促進する。新しいフロー(UDP、ICMP、TCP)及び/又は既存の未変更のTCP/RTP over UDP/UDPは、今や、必ず、常に増大するために少なくとも5%の非枯渇保証帯域幅を有しなければならない。というのは、変更されたTCP/RTP over UDP/UDPが、例えば、リンク利用度が例えば95%を超える時に、すべてが送信レートを増分しないことができるからである。また、その後、リンクがパケットを捨てる場合/時に、変更されたTCP/RTP over UDP/UDPは、ウィンドウサイズ/送信レートを例えば10%だけ減分する(あるいは、例えばx/(x+y)=0.1になるように、期間yについて送信側ソースに隣接する伝送媒体によって許可される無制限のレートで送信する前に、周期的にインターバルxだけポーズする、すなわち、例えば10%のスライディングウィンドウ又は輻輳ウィンドウのサイズ減分/レート減分と同等)。スライディングウィンドウ/輻輳ウィンドウサイズ減分/レート減分ではなくインターバルxの間のポーズは、ノードでの輻輳したバッファの最高速の可能な早期クリアを与え、且つ、経路に沿ったノードでのバッファ遅延をまさに最小値に保つことを助ける。   For example, when the utilization on a particular link (which may include all of UDP, ICMP, and TCP) reaches, for example, 95%, the received ACK window size is not incremented any further, and Only if / when the packet is subsequently discarded, eg decremented by 10% (so that the new flow does not completely “deplete” bandwidth on the particular link) and / or possibly In addition, the window size of each ACK may not be incremented. If a packet is discarded due to a physical transmission error (ie not due to buffer overfill congestion), the link utilization on a particular link along the path is eg 95% (or a specified percentage) When less than utilization, we do not need to stop window size decrement [solves high bandwidth length RTT TCP rate recovery problem]. This most facilitates the incremental adoption of this simple isolated TCP change on the public Internet. New flows (UDP, ICMP, TCP) and / or existing unmodified TCP / RTP over UDP / UDP must now always have at least 5% guaranteed non-depleted bandwidth to always increase . This is because all modified TCP / RTP over UDP / UDP can not increment the transmission rate, for example when the link utilization exceeds 95%, for example. Also, if the link then discards the packet / time, the modified TCP / RTP over UDP / UDP decrements the window size / transmission rate by, for example, 10% (or, for example, x / (x + y) = 0. 1. Periodically pause for interval x before transmitting at the unlimited rate allowed by the transmission medium adjacent to the sending source for period y, ie, eg 10% sliding window or congestion window Equivalent size reduction / rate reduction). Pause during interval x instead of sliding window / congestion window size decrement / rate decrement gives the fastest possible early clearing of the congested buffer at the node and buffer delay at the node along the path Helps keep the value at the very minimum.

ここでのバッファサイズ要件は、全く、考慮のために非常に関連する要因ではない。おそらく、常時、使用可能な物理帯域幅以内に/その100%を超えないようにすべてのトラフィックを保つことができる(非常に突然のバースト性(burstiness)を受けて、バッファリングされる必要がある場合がある)。   The buffer size requirement here is not at all a very relevant factor for consideration. Perhaps all traffic can be kept at all times within / less than 100% of the available physical bandwidth (need to be buffered subject to very sudden burstiness) Sometimes).

VoIP/マルチメディア(例えば、RTP over UDP/UDPを利用する)又は同一の経路/経路の同一部分をトラバースする総計としてのVoIP/マルチメディアについて、リンクが例えば95%又は100%により近い値すら超え始める時に、ソースVoIP/マルチメディアは、今や、例えばあるパーセンテージ、例えば分解能品質の半分で送信することができ、且つ、他のトラフィックの増加がリンク利用度を例えば95%/100%まで戻すのを待って、現在の突然のバーストを全面的な分解能品質送信及び/又はそれに加えて余分の分解能、例えば200%以上(余分の冗長消去コーディング(redundant erasure coding)...などを用いて)に戻して、即座の突然のバーストを引き起こし、他のTCPフロー(変更された又は未変更の)のレート減少(通常は既存のRFC TCP実施態様で1秒以内)をトリガする捨てられたパケットをバッファリングすることができ、且つ、他のフロー、例えばTCPが今やレート減分する時に、100%オリジナル送信品質に即座に戻る(又は、おそらくはリンクの帯域幅/VoIP/マルチメディアによって利用される帯域幅の比率/ノードでのバッファサイズ...などに依存して、200%分解能品質送信に留まりながらできる限り多くの帯域幅をつかみ続けることさえ)できる → VoIP/マルチメディアの最小の可能なバッファ遅延を保証する。   For VoIP / multimedia (eg, using RTP over UDP / UDP) or VoIP / multimedia as a total traversing the same part of the same route / path, the link exceeds even more than 95% or even 100%, for example When starting, the source VoIP / multimedia can now be transmitted, for example, at a certain percentage, eg, half of the resolution quality, and other traffic increases will return link utilization to eg 95% / 100%. Wait and return the current sudden burst to full resolution quality transmission and / or plus extra resolution, eg 200% or more (using extra redundant erasure coding, etc.) Cause an immediate sudden burst Can discard packets that trigger rate reduction (usually within 1 second in existing RFC TCP implementations) of other TCP flows (modified or unmodified), and other When the flow, eg TCP, is now rate decremented, it immediately returns to 100% original transmission quality (or perhaps the ratio of bandwidth / link / bandwidth used by multimedia / buffer size at node ... , Etc., can still grab as much bandwidth as possible while staying at 200% resolution quality transmission) → guarantees the minimum possible buffer delay of VoIP / multimedia.

おそらく、VoIP/マルチメディアは、より高い分解能送信品質で開始することさえできる(例えば、冗長消去コーディング...などを用いて、通常の必要な分解能の200%)。   Perhaps VoIP / multimedia can even start with a higher resolution transmission quality (eg, 200% of the normal required resolution using redundant erasure coding, etc.).

これは、すべてのフローについて、トラバースされるノードで、できる限り少ないバッファ遅延期間を保証するので、すべてのフローに役立つ。許可された要求がフローパケットを捨てる(例えば、センダにレート減分を知らせるために各TCPフローから1パケット)ことを許可するため、及び/又は例えば95%/100%リンク利用度の検出時にこれを行うために、ルータソフトウェアを、さらにアップグレードすることができる。   This is useful for all flows because it guarantees as little buffer delay period as possible at the traversed node for all flows. This is to allow an authorized request to discard a flow packet (eg, one packet from each TCP flow to inform the sender of rate decrement) and / or upon detection of eg 95% / 100% link utilization The router software can be upgraded further to do this.

上記の方法は、既存の例えばRIP/BGPルータテーブル更新パケット...及び/又は類似する技法と共に使用して、すべてのノードでの最小の又は無のバッファ遅延を保証することができ、アップグレードされたルータソフトウェアは、リンクプリファレンスルーティングテーブル更新を行って、特定の転送するリンクの例えば95%/100%を超過してプリエンプトし...且つ/又はこれを隣接するルータだけではなくネットワーク全体に伝搬させる(しかし、より頻繁なリアルタイム速度更新を可能にするために機能強化される必要があるはずである)。   The above method is based on the existing RIP / BGP router table update packet. . . And / or similar techniques can be used to guarantee minimal or no buffer delay at all nodes, and the upgraded router software performs link preference routing table updates to make certain forwarding For example, 95% / 100% of the links to be preempted. . . And / or propagate it throughout the network, not just adjacent routers (but should be enhanced to allow more frequent real-time rate updates).

もう1つの次世代ネットワーク設計は、ルータが、特定の転送するリンクの例えば95%/100%利用度(100%利用度はパケットバッファリングの差し迫った始まりを示すはずである)及び/又はリンクの生帯域幅/キューイングポリシ/バッファサイズ...などの他の構成詳細について隣接するルータにシグナリングすること(隣接ルータがこのルータ/又はこの転送するリンクだけへの既存の送信レートを増やさないようにするために)、及び/又は、更新された情報又は期間yの制限されない送信レート(実際にはルータの間のリンク帯域幅によってのみ制限される)を継続する前のいくつかの対応する「ポーズ」インターバルxにさえ依存する、考案されるアルゴリズムに基づくあるパーセンテージだけの、通知されるルータリンクをトラバースするフローに対するフローごとのレート減分/レートシェーピングとすることができる。「レート減分」/「ポーズ」中のバッファリングを必要とするすべてのTCPフローのパケットは、どの一時にもウィンドウサイズのほとんどであるのみになるはずであり、RTP/UDPフローは、同様にバッファリングされ得る → 今や、おそらくソース輻輳回避TCPレート制限機構を一切なしで済ませることができると考えられる!。ルータは、センダTCPソースに戻るACKのadvertised Window sizeフィールドに、ある持続時間について又は周期的にある持続時間について0をセットする(「ポーズ」又は周期的「ポーズ」を引き起こす)ように変更するか、あるいは、advertised Windowフィールド値を、センダTCPソースの導出された/推定された現在の有効ウィンドウサイズのある減分されたパーセンテージに変更/セットする(したがって、ソーストラフィックのレート制限をもたらす)ことさえできる。インターネット/インターネットサブセット/WAN/LAN上のスイッチ/ルータは、すべてのフローのソース−デスティネーションアドレス及び/又はポートのテーブルを、その最新のSeq Numberフィールド及び/又はACK numberフィールド(及び/又はリンクに沿ったフローごとの転送レート、現在の導出された/推定されたリンクに沿ったフローごとの有効ウィンドウサイズ...など)と一緒に維持して、ルータが「純ACK」及び/又は「ピギーバックACK」及び/又は「複製されたパケット」...などを介してアドバタイズされたウィンドウサイズ更新を生成できるようにすることだけが必要である(例えば、「ポーズ」の前の既存のレシーバウィンドウサイズ値に戻る前に、ある期間の間に0の連続的なアドバタイズされたレシーバウィンドウサイズを介して「ポーズ」するように、又は導出された/推定された現在のソースTCP有効ウィンドウサイズに基づいて減分された値のアドバタイズされたレシーバウィンドウサイズを介してレートを減らすように、ソースTCPに通知する)。隣接するルータは、次のルータの通知されるルータのリンクに沿った宛てられたパケットを減らし/トラフィックシェーピングし、あるパケットIPアドレスを知っている隣接物は、ルーティングテーブルエントリ、RIP/BGP更新、MIB交換...などからの通知される次のルータのリンクに沿ってルーティングされる予定である。例えば、通知するルータに先行する隣接するルータでの既に周期的にポーズされているフロー(周期的「ポーズ」を介してレート制御される)は、今や、さらに、影響されるフローの「ポーズ」インターバル長を増やし、且つ/又はその期間内の「ポーズ」の個数を増やすはずである。周期的ポーズは、例えば、考案されるアルゴリズムから導出されるある定義された期間、例えば通知するルータが今、あるパーセンテージ未満、例えば95%未満に戻って下落したリンク利用度を示す隣接するルータを更新する時に、頻度/個々のポーズインターバルを止めるか減らすことができる。   Another next-generation network design is that routers, for example, 95% / 100% utilization of a particular forwarding link (100% utilization should indicate an imminent beginning of packet buffering) and / or link Raw bandwidth / queuing policy / buffer size. . . Signaling to neighboring routers for other configuration details such as (to prevent neighboring routers from increasing the existing transmission rate only to this router / or this forwarding link) and / or updated An devised algorithm that relies on some corresponding “pause” interval x before continuing the unrestricted transmission rate of information or duration y (actually limited only by the link bandwidth between routers) Only a percentage based on per-flow rate decrement / rate shaping for flows traversing the advertised router link. Packets for all TCP flows that require buffering during "rate decrement" / "pause" should only be most of the window size at any one time, and RTP / UDP flows are similarly Can now be buffered → It is now possible that the source congestion avoidance TCP rate limiting mechanism could be eliminated at all! . Does the router change to set the advertised window size field of the ACK back to the sender TCP source to 0 for some duration or periodically for some duration (cause a "pause" or a periodic "pause")? Or even changing / setting the advanced window field value to a decremented percentage of the derived / estimated current effective window size of the sender TCP source (thus resulting in rate limiting of the source traffic) it can. The switch / router on the Internet / Internet subset / WAN / LAN keeps a table of all flow source-destination addresses and / or ports in its latest Seq Number field and / or ACK number field (and / or link). Along with the transfer rate per flow along, the effective window size per flow along the current derived / estimated link, etc.) "Back ACK" and / or "duplicated packet". . . It is only necessary to be able to generate advertised window size updates (e.g., before returning to the existing receiver window size value before "pause") Through the advertised receiver window size of the value that is decremented based on the current source TCP effective window size derived / estimated to “pause” through the advertised receiver window size To inform the source TCP to reduce the rate). Neighboring routers reduce / traffic shape packets destined along the next router's advertised router's link, and neighbors that know a packet IP address can receive routing table entries, RIP / BGP updates, MIB exchange. . . It is scheduled to be routed along the link of the next router notified from. For example, an already periodically paused flow (rate controlled via a periodic “pause”) on an adjacent router that precedes the advertising router is now further “paused” by the affected flow. It should increase the interval length and / or increase the number of “pauses” within that period. Periodic pauses, for example, indicate neighboring routers that show link utilization that has fallen back to a defined period derived from the devised algorithm, e.g., a router that advertises now falls back below a certain percentage, e.g. below 95%. When updating, the frequency / individual pause interval can be stopped or reduced.

RED/ECN機構を、この機能性を提供するために変更することができる、すなわち、バッファリングされたパケットを監視し、且つ、パケットを選択的に捨て/センダに通知するのではなく、RED/ECNは、例えば利用度があるパーセンテージ、例えば95%に達する時...など、リンク利用度に関するポリシに基づくことができる。   The RED / ECN mechanism can be modified to provide this functionality, i.e., rather than monitoring buffered packets and selectively discarding / notifying the sender RED / ECN is, for example, when usage reaches a certain percentage, eg 95%. . . For example, it can be based on a policy regarding link utilization.

上記のボトルネックリンク利用度推定技法、使用可能ボトルネック帯域幅推定技法、ボトルネックスループット推定技法、ボトルネックリンク帯域幅容量推定技法を、さらに、非輻輳RTT/RTTest/RTTbase/レシーバOTTest法に基づく前に説明したレート減分/「ポーズ」法に組み込むことができる。ここで、非輻輳RTT/RTTest/RTTbase/レシーバOTTest法に基づく前に説明したレート減分/「ポーズ」法をさらに機能強化するために、ボトルネックリンク利用度推定技法、使用可能ボトルネック帯域幅推定技法、ボトルネックスループット推定技法、ボトルネックリンク帯域幅容量推定技法を十分によい正確さのために導出し/推定するための豊富な時間があるはずである。経路のトポロジ/構成を補足し/提供するさまざまなさらなる技法に、SNMP/RMON/IPMON/RIP/BGP...などを含めることができる。   Based on the above-described bottleneck link utilization estimation technique, usable bottleneck bandwidth estimation technique, bottleneck throughput estimation technique, bottleneck link bandwidth capacity estimation technique, and further based on the non-congested RTT / RTTest / RTTbase / receiver OTTest method It can be incorporated into the rate decrement / pause method described above. Here, to further enhance the rate decrement / pause method described above based on the non-congested RTT / RTTest / RTTbase / receiver OTTest method, a bottleneck link utilization estimation technique, usable bottleneck bandwidth There should be plenty of time to derive / estimate the estimation techniques, bottleneck throughput estimation techniques, bottleneck link bandwidth capacity estimation techniques for good enough accuracy. Various additional techniques to supplement / provide the topology / configuration of routes include SNMP / RMON / IPMON / RIP / BGP. . . Etc. can be included.

2.周期的プローブは、Windows Updateプローブ(レシーバがまだ0ウィンドウサイズをアドバタイズしていない場合であってもレシーバウィンドウサイズを照会するため)又は類似するプローブパケット...の形とすることができ、あるいは、周期的プローブとしての実際のデータパケット(送信に使用可能な場合に)...など、又は未使用ポート番号を有するデスティネーションへのUDP(デスティネーションポート到着不能というリターンメッセージを得るため)、及び/又はこれに加えてすべてのノードからのタイムスタンプオプションを使用することができる。あるいは、同様に、未使用ポート番号を有するデスティネーションへのTCP(このTCPパケットは未使用ポート番号へのTCP SYNCとすることができる)。   2. Periodic probes are Windows Update probes (to query the receiver window size even if the receiver has not yet advertised the 0 window size) or similar probe packets. . . Or the actual data packet as a periodic probe (if available for transmission). . . Etc., or UDP to a destination with an unused port number (to get a return message that the destination port is unreachable), and / or in addition to this, timestamp options from all nodes can be used. Alternatively, similarly, TCP to a destination with an unused port number (this TCP packet can be a TCP SYNC to an unused port number).

さまざまな注記
[注:ポーズしたインターバルが、例えば1秒以内に合計p*Iになる場合に、効果的に、輻輳ウィンドウ=(p*I)/現在のスループットの1秒(現在の有効ウィンドウサイズ*現在のRTT)]
輻輳の検出時に、タイムクリティカルアプリケーションは、バーストを送信してパケットドロップを引き起こすことができ、あるいは、タイムスタンプから輻輳を検出するレシーバが、おそらくは便利に大きいプローブの形で、バーストを引き起こすか、バーストを引き起こすためにサーバに通知することができる。
Various notes [Note: If the paused interval totals p * I, for example within one second, effectively, congestion window = (p * I) / one second of current throughput (current effective window size) * Current RTT)]
Upon detection of congestion, time-critical applications can send bursts to cause packet drops, or receivers that detect congestion from timestamps can cause bursts or bursts, possibly in the form of large probes. Can be notified to the server.

外部インターネットノードに対するRTTest技法に加えて、例えばレシーバプロセッサ遅延、生帯域幅、使用可能帯域幅、バッファサイズ、バッファ輻輳レベル、リンク利用度と共に、帯域幅推定技法の使用を改善することができる。   In addition to RTTest techniques for external Internet nodes, the use of bandwidth estimation techniques can be improved along with, for example, receiver processor delay, raw bandwidth, usable bandwidth, buffer size, buffer congestion level, link utilization.

レシーバベースドOTTestは、GPS同期化を展開する必要はなく、非輻輳OTTest、非輻輳OTTbase、又は既知の非輻輳OTT及びOTTモニタ変形だけを必要とする!!!。   Receiver-based OTTest does not need to deploy GPS synchronization, only non-congested OTTest, non-congested OTTbase, or known non-congested OTT and OTT monitor variants! ! ! .

センダベースド及び/又はレシーバベースドの生の帯域幅及びスループット推定 → リンク利用度
センダが遅延変動を処理するレシーバをブロックアウトできるように、タイムスタンプ(センダ及びエコー送信側(echoer))を使用する。
Sender-based and / or receiver-based raw bandwidth and throughput estimates-> link utilization Time stamps (sender and echoer) are used so that the sender can block out receivers that handle delay variations.

変更されたTCP/変更されたモニタソフトウェアは、ポーズされた時に、任意選択として、今バッファリングされる必要があるホストソースTCPからのACKフラグをセットされたすべての新たに到着したデータセグメント(すなわち、ピギーバックACKセグメント又は純ACK、何もACKしない通常のデータセグメントは無視する)に対応する、データペイロードを搬送しない純ACKを即座に生成し、送信する(「ポーズ」にもかかわらず)ことができる。このポーズインターバル/拡張ポーズインターバル中に生成されるすべての純ACK(1つ又は複数)は、即座に送信されるが、そのSeq Numberフィールド値に、まさに最初にバッファリングされるデータセグメント(これは、ACKフラグをセットされた又はセットされていない通常のデータセグメント又は純ACKセグメントとすることができる)とまさに同一のシーケンス番号引く1をセットさせることができる。新たに到着したセグメントが、純ACKである場合には、単にそれらを同様にバッファリングし、且つ、この新たに到着した現在はバッファリングされている純ACKに対応する純ACKを生成し/送信する!。この新たに到着した純ACKを、この時に、他のバッファリングされたデータセグメントの前に転送することは、受信するTCPに、今、最後に送信された肯定応答番号と同一でなければならない次に期待されるシーケンス番号より大きいシーケンス番号を有するパケットを受信させる場合がある。生成された純ACKが送信されたならば、対応する現在はバッファリングされている純ACKを、任意選択として、今、バッファから除去し、且つ、破棄することができる。というのは、複製純ACKを送信しても意味がないからである。純ACKは、その代わりに、生成されることができ、且つ、このポーズインターバル期間/拡張ポーズインターバル期間内のすべてのバッファリングされたパケットの中で最大の肯定応答番号を有するバッファリングされたセグメントに対応することができる。   The modified TCP / modified monitor software, when paused, optionally optionally sets all newly arrived data segments (ie, ACK flags from the host source TCP that need to be buffered) Instantly generate and send (despite "pause") a pure ACK that does not carry a data payload, corresponding to a piggyback ACK segment or a pure ACK, ignoring normal data segments that do not ACK anything) Can do. All pure ACK (s) generated during this pause / extended pause interval are sent immediately, but in the Seq Number field value, the very first buffered data segment (this is , Which can be a normal data segment or a pure ACK segment with or without the ACK flag set). If the newly arrived segments are pure ACKs, simply buffer them as well and generate / send a pure ACK corresponding to this newly arrived, currently buffered pure ACK Do it! . Forwarding this newly arrived net ACK before other buffered data segments at this time must now be identical to the last sent acknowledgment number to the receiving TCP. May receive a packet having a sequence number larger than the expected sequence number. If the generated pure ACK is sent, the corresponding currently buffered pure ACK can optionally be removed from the buffer and discarded. This is because it does not make sense to send a duplicate pure ACK. A net ACK can instead be generated and a buffered segment with the highest acknowledgment number among all buffered packets in this pause interval / extended pause interval period It can correspond to.

変更されたTCP/変更されたモニタソフトウェアは、任意選択として、URGENT/PSHフラグ....などを有するセグメントを、「ポーズ」/拡張「ポーズ」中であっても即座に転送することを可能にすることができる。   Modified TCP / modified monitor software optionally includes the URGENT / PSH flag. . . . Etc. can be transferred immediately even during “pause” / expanded “pause”.

実際のレート=セグメントの送信時刻以降に送信されたバイト数/ACKタイムアウトを導出することもできる。Seq No、ACKタイムアウト、このセグメント内のバイト数を含むエントリのイベントリストを保持する。あるいは、実際のレート=セグメントの送信時刻以降に送信されたバイト数/(この特定のACKタイムアウトしたセグメントの送信時刻−リスト上の最後の肯定応答されていないセグメントの送信時刻、リストに送信時刻を有する最後のセグメントがない場合には=このACKタイムアウトしたセグメント+ACKタイムアウト期間をセットする。あるいは、ACKタイムアウト期間内の、直前に送信されたセグメントに基づく実際のレートを使用する(おそらく、実際のレート=受信されたAck、すなわちこれらの肯定応答されたセグメントのすべてに対応する総バイト数を導出することもできる)RTT又はACKタイムアウト期間内)をセットする。   It is also possible to derive the actual rate = number of bytes transmitted after the segment transmission time / ACK timeout. It holds an event list of entries including Seq No, ACK timeout, and the number of bytes in this segment. Or the actual rate = the number of bytes transmitted since the segment's transmission time / (the transmission time of this particular ACK timed-out segment-the transmission time of the last unacknowledged segment on the list, the transmission time in the list If there is no last segment to have = set this ACK timed-out segment + ACK time-out period, or use the actual rate based on the last transmitted segment within the ACK time-out period (probably the actual rate = Ack received, ie, the total number of bytes corresponding to all of these acknowledged segments can also be derived (within RTT or ACK timeout period).

レシーバベースは、輻輳ロスと物理送信エラーとの間で区別し、レート、OTT又はOTTbase、輻輳の始まりを各方向で別々にはるかにより正確に検出することができる。さらによりよく、センダは、レシーバが最初にパケットを受信した時及び/又はレシーバが、センダに送り返すパケット(及び/又はACK)(例えば、IPMP)を最後に変更した時のタイムスタンプを伴うACKを戻って受信する。   The receiver base can distinguish between congestion loss and physical transmission error, and can detect the rate, OTT or OTTbase, the beginning of congestion separately and more accurately in each direction. Even better, the sender receives an ACK with a timestamp when the receiver first receives the packet and / or when the receiver last modified a packet (and / or ACK) (eg, IPMP) sent back to the sender. Receive back and receive.

スループット=ウィンドウ*MSS/RTTバイト/秒をも導出できることに留意されたい。   Note that throughput = window * MSS / RTT bytes / second can also be derived.

マルチキャスト用の変更されたTCPテクノロジ実施態様は、ルータのマルチキャストモジュールでの実施/階層的調整を必要とする。   The modified TCP technology implementation for multicast requires implementation / hierarchical coordination in the multicast module of the router.

モニタソフトウェアは、センダ及び/又はレシーバが、例えば一意のポート番号確立を介して、お互いの存在を識別したならば、よりよく調整することができる → モニタソフトウェアは、その後、適当なモード/モード動作の組合せに切り替えることができる。   The monitor software can better tune if the sender and / or receiver have identified each other's presence, eg via a unique port number establishment. It is possible to switch to the combination.

外部ノードを介して送信/受信する場合には、「ポーズ」したくない場合があるが、インターネット上の増分採用が大多数になる時など、この好ましい「ポーズ」包含をイネーブルするための場合には好ましい(おそらくユーザ選択可能オプション)!。   When sending / receiving via external nodes, you may not want to “pause”, but when you want to enable this preferred “pause” inclusion, such as when the majority of incremental adoption on the Internet is Is preferred (probably a user-selectable option)! .

当初に経路(ボトルネックに対応する)の使用可能帯域幅及び/又は生帯域幅容量についてプローブし、その後、例えば使用可能帯域幅の95%又は例えば容量の95%が即座に利用されるようにTCPウィンドウサイズを開始することができる。   Initially probe for available bandwidth and / or raw bandwidth capacity of the path (corresponding to the bottleneck) so that, for example, 95% of the available bandwidth or 95% of the capacity is immediately utilized TCP window size can be started.

RTTが<ACKタイムアウトであり続ける場合に、ウィンドウサイズをはるかによりすばやく、例えば*1/cwnd...などで増分することができる。   If the RTT continues to be <ACK timeout, the window size is much faster, eg * 1 / cwnd. . . Etc. can be incremented.

ACKタイムアウト(及び又は実際のパケット再送信タイムアウト値)値を、ヒストリカルRTTからの既存RTO推定アルゴリズムに似て、戻るリアルタイムRTTから、この目的のために考案されるアルゴリズムに基づいて動的に導出できることに留意されたい。   ACK timeout (and / or actual packet retransmission timeout value) values can be derived dynamically from the returning real-time RTT based on an algorithm devised for this purpose, similar to existing RTO estimation algorithms from historical RTT Please note that.

RFCでは、DUP ACKを遅延させてはならず、ここで、我々は、すべてのバッファリングされたACKパケット又は単にその最高のACK Noについて、生成された純ACKを即座に既に送信することによって準拠した。   In RFCs, DUP ACKs must not be delayed, where we comply by immediately transmitting the generated pure ACK immediately for all buffered ACK packets or simply their highest ACK No. did.

RTTの誤った推定を与え得る経路の再ルーティングの問題を避けるために、我々は、ホップバイホップRTT推定及び帯域幅プロービングを採用することができる。実用的実施態様のためにアクティブネットワーキングテクノロジを使用することによって、セクションごとのダイアログが、ルータを含む隣接ノードの間で実行される。   In order to avoid path rerouting problems that could give false estimates of RTT, we can employ hop-by-hop RTT estimation and bandwidth probing. By using active networking technology for a practical implementation, a section-by-section dialog is performed between adjacent nodes including routers.

注:RFCでは、TCPレシーバは、受信するアプリケーションが新しいデータを消費する際に、提供されるウィンドウを更新するためのもの以外には、すべての着信セグメントについて複数のACKを生成してはならない。   Note: In RFC, the TCP receiver must not generate multiple ACKs for all incoming segments other than for updating the provided window when the receiving application consumes new data.

DIFF(RTT,非輻輳RTT/RTTest)に応じて、ウィンドウサイズを減らし/「ポーズ」期間を増やすことができる。パーセンテージレート減分/「ポーズ」インターバル長は、経路に沿って経験されるバッファ遅延のサイズ、例えばOTT−OTTest(又はOTT−既知の非輻輳OTT)、又はRTT−RTTest(又はRTT−既知の非輻輳RTT)に応じて調整することができる。   Depending on DIFF (RTT, non-congested RTT / RTTest), the window size can be reduced / the “pause” period can be increased. Percentage rate decrement / pause interval length is the size of the buffer delay experienced along the path, eg, OTT-OTTest (or OTT-known non-congested OTT), or RTT-RTTest (or RTT-known non-congested). It can be adjusted according to the congestion (RTT).

変更されたレシーバTCPが、「ポーズ」している間のセンダのバッファリングされたACKパケットに関する変更されたセンダTCPが生成した純ACK(又はすべてのACKさえ)を受信する時に、変更されたレシーバは、任意選択で/特に、最後のACK番号−1をセットされたSeq番号を有する1バイトを生成する、すなわち、変更されたセンダTCPが、確かに受信されたことを知っている、戻るACKを生成することができる(この場合に、各すべてのバッファリングされたパケットが最大Seq番号のACKのみではなく、個別に生成された純ACKであることを保証する必要がある場合がある)。センダTCPは、この1バイトデータの生成された純ACKがレシーバによって返されないかどうかを「パケット複製ACK」で推論することができる(複製されたパケットがレシーバ側のアプリケーションに渡されない場合であっても) → その後、それ相応に反応する(例えば、逆経路の輻輳/輻輳ロス/送信エラー又は転送の輻輳/輻輳ロス/送信エラーである可能性があり、後者の場合に、生成された1バイトデータ純ACKをもう一度送信したいと望んでもよい...など)。   The modified receiver when the modified receiver TCP receives a pure ACK (or even all ACKs) generated by the modified sender TCP for the sender's buffered ACK packet while “pausing”. Optionally / especially generates a byte with a Seq number set to the last ACK number -1, i.e. knows that a modified sender TCP has been received, a return ACK (In this case, it may be necessary to ensure that each and every buffered packet is an individually generated pure ACK, not just an ACK with the highest Seq number). The sender TCP can infer whether or not the generated pure ACK of this 1-byte data is not returned by the receiver by “packet duplication ACK” (in the case where the duplicated packet is not passed to the receiver side application). → then react accordingly (eg reverse path congestion / congestion loss / transmission error or forward congestion / congestion loss / transmission error, in the latter case 1 byte generated You may want to send a data pure ACK again ...).

両端のモニタソフトウェア、又はセンダのみ、又はレシーバのみ:レシーバの最新のSeq No(複製されたパケット)又は最新のSeq No及び1バイトデータ又は最新のリモートのACK番号−1さえ使用するAcking the ACK(RTOすなわち失われたACKの主原因を除去するため。失われたデータセグメントは、通常、DUP ACKされる → 高速再送信)。   Monitor software at both ends, or sender only, or receiver only: Acking the ACK using receiver's latest Seq No (replicated packet) or latest Seq No and 1 byte data or even latest remote ACK number-1 To remove the main cause of RTO or lost ACK, the lost data segment is usually DUP ACK-> fast retransmission).

レシーバベースド:ACKが戻って受信されて確認されない場合にACKを再送信する。最初のセグメント送信時刻から例えば1秒前にもう一度到着するためにDUP ACK(高速再送信)を送信して、TCPにCWND=1のスロースタートに再入させるRTOを防ぐ。先行するRTTインターバル中に、推定されたセンダの最大の実際の送信ウィンドウサイズ(実際のレートに対応する。この実際の送信するウィンドウサイズが全フライトパケットと同等であると仮定することができる)の%として、レシーバウィンドウサイズを動的に調整することができる。   Receiver-based: retransmits ACK when ACK is received back and not acknowledged. For example, a DUP ACK (high-speed retransmission) is transmitted to arrive again one second before the first segment transmission time, thereby preventing RTO which causes TCP to re-enter the slow start of CWND = 1. During the preceding RTT interval, of the estimated sender's maximum actual transmission window size (corresponding to the actual rate; this actual transmitting window size can be assumed to be equivalent to all flight packets) As a percentage, the receiver window size can be adjusted dynamically.

TCPの将来のRFCは、1つの余分のAcking ACKフィールド(Acking the ACKs制御フィードバックループ)を有しなければならず、これは、制御ループを完成させ(すなわち、既存TCPは、RTOが転送するリンク上のデータセグメントロス又は戻るリンク上の対応するACKロスのどちらに起因するかに関して盲目である)、両方のTCPの、イベント状態の知識を改善する。あるいは、モニタソフトウェアが、Seq Noを有するACK(複製されたセグメント)...などを介してこのACKing the ACKsを実行することができる。   The future RFC of TCP must have one extra Acking ACK field (Acking the ACKs control feedback loop), which completes the control loop (i.e., existing TCP is a link that the RTO forwards) Improve knowledge of the event state of both TCPs (blind as to whether due to data segment loss on top or corresponding ACK loss on the back link). Alternatively, the monitor software receives an ACK with a Seq No (replicated segment). . . The ACKing the ACKs can be executed through the above.

両端にモニタソフトウェアがある状態で、レシーバは、一方向送信時間を両方向で互いに渡すために調整することができる。レシーバベースドのモニタソフトウェアは、SYNC接続確立で要求されたタイムスタンプオプションから、外部インターネットノードのOWD(一方向遅延)を導出することができる。センダベースドのモニタソフトウェアは、タイムスタンプオプションを介するレシーバからセンダへのOWDの間に、IPMP、NTP...を介してリモートレシーバへのOWDを推定することができる。両端が協力するモニタソフトウェアを有する場合に、両方向のOWDを推定することができ → ACKs ACKingループと一緒に、これは、送信方向でのパケットドロップ又は戻る方向でのACKロス又は物理送信エラーに起因するパケットロスの区別を可能にする。   With monitor software at both ends, the receiver can adjust to pass one-way transmission time to each other in both directions. The receiver-based monitoring software can derive the OWD (one-way delay) of the external Internet node from the time stamp option requested in the SYNC connection establishment. Sender-based monitoring software can be used for IPMP, NTP., Etc. during receiver-to-sender OWD via a time stamp option. . . Can be used to estimate the OWD to the remote receiver. If both ends have cooperating monitor software, OWD in both directions can be estimated → together with ACKs ACKing loop, this is due to packet drop in the transmission direction or ACK loss or physical transmission error in the return direction Enables packet loss to be distinguished.

Owdは、導出するためのタイムスタンプ、又はipmp/icmpプローブ/ntp....などを必要とする。両端にモニタソフトウェアがある状態で、タイムスタンプセグメントだけが、受信された時及びAcking the Segment Seq Noを返す時に(この2つのタイムスタンプ値のすべてが、イベントリストに保持されるセグメントseq no送信時間の送信側モニタ記録、及びSeq NoのACKの到着時間と組み合わされて、すべてのOWD、端処理遅延などを提供する。   Owd is the time stamp to derive, or ipmp / icmp probe / ntp. . . . And so on. With the monitor software at both ends, when only the time stamp segment is received and when returning the Segment Seq No (the segment seq no transmission time in which all these two time stamp values are held in the event list) Combined with Seq No ACK arrival time, provides all OWD, end processing delay, etc.

既知OWDの両方の方向、例えば海底ケーブル、WANリンク、及び/又は既知のタイムスタンプドリフト/正確さ及び/又は輻輳/非輻輳動作環境境界の下での既知のスイッチ/ルータ/エンドホスト処理待ち時間は、性能を改善するはずである。   Known switch / router / end host processing latency under both known OWD directions, eg undersea cable, WAN link, and / or known timestamp drift / accuracy and / or congestion / non-congestion operating environment boundaries Should improve performance.

両方向OWDを与える準備のできた送信、受信、戻りのタイムスタンプを有するパケットだけに関するICMPは、wan/lan/小さいインターネットサブセットで、両方の方向でtcp/udpと同一の経路をトラバースする。tcp/udpに関するRFCは、これらのタイムスタンプをイネーブルしなければならない。周期的icmpプローブは、パッシブtcp rtt測定を補足することができる。IPMPは、類似するタイムスタンプ機能を提供し、且つ、送信されたTCPセグメントと同一の経路をトラバースし、且つ、フロー(1つ又は複数)TCP IPアドレスと同一のIPアドレスを用いるが異なるポートアドレスを用いて送信されるプローブパケットとして利用され得る。両端が変更されたTCP/変更されたモニタソフトウェアを実施する場合に、周期的プローブパケットは、フロー(1つ又は複数)TCP IPアドレスと同一のIPアドレスを有するが異なるポートアドレスを有する、この2つの端の変更されたTCP/変更されたモニタソフトウェアの間で確立される別々の独立のTCP接続又はUDP接続又はIPMP接続の形をとることができ、両方の端の変更されたTCP/モニタソフトウェアは、今や、Seq番号を有するセグメントが最初に到着する時刻及び/又は同一Seq番号を有するセグメントがACKされ、返される時刻のタイムスタンプを含めることができ、両端によるOWD測定を可能にする。   ICMP for only packets with send, receive and return timestamps ready to give bi-directional OWD traverse the same path as tcp / udp in both directions with wan / lan / small internet subset. The RFC for tcp / udp must enable these timestamps. Periodic icmp probes can supplement passive tcp rtt measurements. IPMP provides a similar time stamp function, traverses the same path as the transmitted TCP segment, and uses the same IP address as the flow (s) TCP IP address, but a different port address Can be used as a probe packet to be transmitted using. When implementing both-end modified TCP / modified monitor software, the periodic probe packet has the same IP address as the flow (s) TCP IP address but a different port address. The modified TCP / monitor software at both ends, which can take the form of separate independent TCP connections or UDP connections or IPMP connections established between the modified TCP / modified monitor software at one end Can now include a time stamp when the segment with the Seq number first arrives and / or a segment with the same Seq number is ACKed and returned, allowing OWD measurement by both ends.

外部インターネットを介して働くためのTCP変更の実施
ソースセンダ又はレシーバのいずれか一方(又は両方)が外部インターネットに存在する場合に、このソースセンダとレシーバとの間のデータパケット通信は、例えば、外部インターネットサイトからのhttpウェブページダウンロード/ftpなど、我々の制御を超える輻輳パケットドロップを受ける可能性がある。本明細書の方法(1つ又は複数)は、ソースセンダ又はレシーバのいずれか一方(又は両方)が外部インターネットに存在する場合にも適用可能になるように我々の変更/発明を拡張するが、本説明に含まれるさまざまな前に説明した方法と同様に、両方がインターネットサブセット/WAN/LAN/プロプラエタリインターネット内に存在する場合にも適用できることに留意されたい。
Implementation of TCP changes to work over the external Internet When either (or both) source senders or receivers are present in the external Internet, data packet communication between this source sender and receiver is, for example, external There is a possibility of receiving congestion packet drops that exceed our control, such as http web page download / ftp from internet sites. While the method (s) herein extend our modifications / invention to be applicable when either the source sender or receiver (or both) are present on the external Internet, It should be noted that similar to the various previously described methods included in this description, it is also applicable when both are in the Internet subset / WAN / LAN / Proprietary Internet.

輻輳パケットドロップの上記の影響は、RTOパケット再送信タイムアウト及びソースセンダTCPでCWNDに1セグメントサイズがセットされた「スロースタート」への付随する復帰をトリガするはずであり、RTT/TCP輻輳ウィンドウサイズCWNDあたりのソースセンダTCP送信レートが例えば1K*セグメントサイズまで戻って上昇するためには、初期「スロースタート」からのCWNDの約10の指数関数的増加を要するはずである(2^10=1K)、すなわち、ソースセンダは、レシーバから10個の連続する成功の中断されないACK(輻輳ドロップなし)を受信する必要があり、これは、200msのRTTでは、1K*セグメントサイズのCWNDまで戻って上昇するのに10*300ms=3秒を要するはずである。CWNDがSSThresh値に達したならば、CWNDは、今や、「スロースタート」中のACKごとの指数関数的増分ではなく、RTTごとに線形に増分するのみであるはずである。RFC 2001 http://www.faqs.org/rfcs/rfc2001.htmlを参照されたい。 The above effect of congestion packet drop should trigger RTO packet retransmission timeout and concomitant return to “slow start” with 1 segment size set to CWND in source sender TCP, and RTT / TCP congestion window size In order for the source sender TCP transmission rate per CWND to rise back to, for example, 1K * segment size, it should require an exponential increase of about 10 CWND from the initial “slow start” (2 ^ = 1 = 1K). ), I.e. the source sender needs to receive 10 consecutive uninterrupted ACKs (no congestion drop) from the receiver, which rises back to CWND of 1K * segment size at 200ms RTT It should take 10 * 300ms = 3 seconds to do A. If CWND reaches the SSThresh value, then CWND should now only increment linearly every RTT, not an exponential increment per ACK during “slow start”. RFC 2001 http: // www. faqs. org / rfcs / rfc2001. See html .

エンド−エンド転送性能における最大の劣化を引き起こすのは、輻輳パケットドロップの際の、RTOパケット再送信タイムアウト及びCWNDに1セグメントがセットされた「スロースタート」への付随する再入の始まりである。したがって、リモートソースセンダTCPで...を用いる高速再送信をトリガするためにそれらのDUP ACKを生成するためによりすばやく反応するようにソースセンダTCPを変更することが、有利であるはずである。   The greatest degradation in end-to-end forwarding performance is the beginning of the accompanying re-entry to RTO packet retransmission timeout and “slow start” with one segment set in CWND upon congestion packet drop. Therefore, with remote source sender TCP. . . It would be advantageous to change the source sender TCP to react more quickly to generate their DUP ACKs to trigger fast retransmissions using.

現在ほとんどのTCPで一般的に実施されているDUP ACK高速再送信/回復アルゴリズムを用いて、センダソースTCPは、今や、次の2つのシナリオの下でのみ、「スロースタート」への付随する再入を伴うRTOパケット再送信タイムアウトを行うのみであるはずである。   Using the DUP ACK fast retransmission / recovery algorithm that is commonly implemented in most current TCPs, Sender Source TCP can now be associated with a “slow start” only under the following two scenarios: It should only do an RTO packet retransmission timeout with incoming.

(A)センダソースTCPは、データパケット(1つ又は複数)をレシーバに送信し(1つの単一のパケット又はパケットの連続するブロック)これらのパケットは、すべて、失われて/捨てられて絶対に到着せず、この故に、レシーバTCPは、これらの未到着の次の期待されるSeq番号のパケット(1つ又は複数)のDUP ACKを生成するために、これらのパケットが実際に送信されたか否かを知るすべがない。パケットのこれらの送信された連続するブロックのうちのより後のパケットのいずれかが実際に到着した場合には、これらのパケットのうちのより以前のパケットのいくつかが捨てられた場合であっても、レシーバTCPは、それでも、その代わりにCWNDを半分にするだけである高速再送信/回復をトリガするためにセンダソースTCPへのDUP ACKを生成できる立場にあるはずであり、したがって、センダソースTCPに1セグメントのCWNDを有する「スロースタート」に再入させるセンダソースTCPのRTOパケット再送信タイムアウトイベントが回避されることに留意されたい。既存RFCは、どの状況の下でも1秒というデフォルトRTOタイムアウト最低最小フロアを規定し、したがって、高速再送信/回復をトリガするDUP ACKは、これらの再送信されるパケットの後続の肯定応答が例えば最小1秒のRTOタイムアウト以内にセンダソースTCPに戻って到着する場合に、保留中の通常のRTOパケット再送信タイムアウトイベントを防ぐはずであることに留意されたい。   (A) The sender source TCP sends the data packet (s) to the receiver (one single packet or a contiguous block of packets), all of which are lost / discarded and absolute Therefore, the receiver TCP has actually sent these packets to generate a DUP ACK for these unarrived next expected Seq number packet (s) There is no way to know whether or not. If any of the later packets of these transmitted consecutive blocks of packets actually arrives, then some of the earlier packets of these packets have been discarded. However, the receiver TCP should still be in a position to generate a DUP ACK to the sender source TCP to trigger fast retransmission / recovery, which instead only halves CWND, and therefore the sender source Note that the sender source TCP RTO packet retransmission timeout event is avoided, which causes TCP to re-enter "slow start" with a one-segment CWND. The existing RFC defines a default RTO timeout minimum minimum floor of 1 second under any circumstances, so a DUP ACK that triggers fast retransmission / recovery will be followed by a subsequent acknowledgment of these retransmitted packets, for example Note that if it arrives back to the sender source TCP within a minimum 1 second RTO timeout, it should prevent a pending normal RTO packet retransmission timeout event.

(B)レシーバによって生成された、センダソースTCPに戻る肯定応答は、失われ/捨てられ、したがって絶対にセンダソースTCPに戻って到着せず、したがって、センダソースTCPは、今や、RTOタイムアウトし、1セグメントサイズのCWNDを有する「スロースタート」に再入する。   (B) Acknowledgments generated by the receiver back to the sender source TCP are lost / discarded and therefore never arrive back to the sender source TCP, so the sender source TCP now times out the RTO, Re-enter “slow start” with CWND of one segment size.

上記のシナリオ(A)は、センダソースTCPを変更し、その結果、例えば、直後に次に送信されるデータパケットの肯定応答が、例えば戻って受信された直前に送信されたデータパケットの肯定応答から300ms(又は、ユーザ入力値、又は、RTTest(min)及び/又はOTTest(min)...などに基づくものとすることができるアルゴリズム的に導出される値、300msは、ここでは、200msという遅延肯定応答最大期間より大きいものとして選択された例であった)又は例えば300ms+この直後に送信されるデータパケットの送信時刻以降に経過した最新のRTTest(すなわち、我々は、今、この直後に送信されるパケットが失われ/捨てられたか、レシーバからセンダソースTCPに戻るその肯定応答が失われ/捨てられたと全く安全に仮定することができる)のうちの遅い方の後に戻って受信されない場合に、(以下ではアルゴリズムAと呼称する)(すべての送信されたデータセグメント/データパケットが、すべて、既に返され、肯定応答し返されている場合、すなわち、最新の送信された「最大の」有効なSeqNo=最新の受信された「最大の」有効なACKNoの場合を除く)、すなわち、センダTCPは、今は、経過タイムインターバルイベントによって普通に影響されずに継続しなければならない)センダソースTCPは、今、即座に「連続ポーズ」状態に入らなければならないが、肯定応答パケット/通常のデータパケットが次にレシーバTCPから戻って受信される(したがって、ラウンドトリップ経路が、今は完全に輻輳してはいない、すなわち、どちらの方向でも各すべてのパケットを捨ててはいない)まで、例えば、この「連続ポーズ」状態中に経過する各例えば150ms(又は、ユーザ入力値、又はRTTest(min)及び/又はOTTest(min)...などに基づくものとすることができるアルゴリズム的に導出された値)の間の1つだけの通常のデータパケット及び/又は複数の純ACKパケット送信を許容しなければならず、肯定応答パケット/通常のデータパケットが次にレシーバTCPから戻って受信された時には、「連続ポーズ」は即座に停止し、「連続ポーズ」をトリガした最初に経過した300msの前と同一の送信レート/CWNDサイズに戻るようにすることによって、防ぐことができる。   Scenario (A) above changes the sender source TCP so that, for example, the acknowledgment of the next data packet sent immediately after, for example, the acknowledgment of the data packet sent just before it was received back From 300 ms (or user input values, or algorithmically derived values that can be based on RTTest (min) and / or OTTest (min), etc., 300 ms is here referred to as 200 ms It was an example selected as being greater than the delayed acknowledgment maximum period) or for example 300 ms + the latest RTTest that has passed since the time of the transmission of the data packet transmitted immediately after this (ie we are Packet received is lost / discarded or its affirmation returns from sender to sender source TCP (It can be assumed quite safely that the answer has been lost / discarded) (if it is not received back later) (hereinafter referred to as algorithm A) (all transmitted data segments / data If all packets have already been returned and acknowledged (ie, most recently transmitted “maximum” valid SeqNo = latest received “maximum” valid ACKNo) That is, the sender TCP must now continue without being normally affected by the elapsed time interval event). The sender source TCP must now immediately enter the “continuous pause” state, but acknowledge The packet / normal data packet is then received back from the receiver TCP (so the round trip path is now complete) For example each 150 ms (or user input value or RTTest () that elapses during this “continuous pause” state until each packet is not discarded in either direction). min) and / or algorithmically derived values (which may be based on OTTest (min) ... etc.) and only one normal data packet and / or multiple pure ACK packet transmissions When an acknowledgment / normal data packet is next received back from the receiver TCP, the “continuous pause” stops immediately and the first 300 ms that triggered the “continuous pause” Can be prevented by returning to the same transmission rate / CWND size as before.

アルゴリズムAの諸部分を、そのさまざまな異なる組合せで異なって適合させることができる。   The parts of Algorithm A can be adapted differently in various different combinations thereof.

1.最初に経過した300msの時に「連続ポーズ」に入るのではなく、センダソースTCPは、そのCWNDをx%に減らすのみである(例えば、95%、90%、50%...、これは、ユーザ入力とするか、ある考案されるアルゴリズムに基づくものとすることができる)。   1. Rather than entering a “continuous pause” at the first 300 ms, the sender source TCP only reduces its CWND to x% (eg, 95%, 90%, 50%... User input or based on some devised algorithm).

及び/又は
2.最初に経過した300msの時に「連続ポーズ」に入るのではなく、センダソースTCPは、CWNDサイズを変更せずに、「ポーズ−インターバル」の間だけ「ポーズ」し、このポーズ−インターバルは、ユーザ入力とするか、ある考案されるアルゴリズムから導出されるものとすることができる(例えば、100msのポーズ−インターバルは、上記のステップ1でCWNDを90%に減らすことと同等になるはずである)。
And / or 2. Rather than entering a “continuous pause” at the first 300 ms, the sender source TCP does not change the CWND size, but “pauses” only during the “pause-interval”, and this pause-interval Can be input or derived from some devised algorithm (eg, a 100 ms pause-interval should be equivalent to reducing CWND to 90% in step 1 above) .

及び/又は
1.上記のステップ1及び2に加えて、最初の300msが経過した時に「連続ポーズ」に入るのではなく、即座に「初期ポーズ−インターバル」のみの間に「ポーズ」するのみであり、この初期ポーズ−インターバルは、ユーザ入力とするかあるアルゴリズムから導出することができ、例えば、センダソースTCPからレシーバTCPまでパケットによってトラバースされるルータ/スイッチノードに沿って築き上げられた累積的なバッファリングされたパケット遅延のすべてが、この例えば500msの量によってクリアされることを保証し、その後に送信されるパケットによって経験されるバッファ待ち時間を減らすために500msとすることができる。
And / or
1. In addition to steps 1 and 2 above, when the first 300 ms elapses, instead of going into a “continuous pause”, it just instantly “pauses” only during the “initial pause-interval”. The interval can be user input or derived from some algorithm, eg, cumulative buffered packets built along router / switch nodes traversed by packets from sender source TCP to receiver TCP To ensure that all of the delay is cleared by this amount of, for example, 500 ms, it can be 500 ms to reduce the buffer latency experienced by subsequently transmitted packets.

及び/又は
4.アルゴリズムA又は上記のステップ1、2、及び3に加えて、パケット送信レートが、アルゴリズムAのように「連続ポーズ」中又は「ポーズ−インターバル」中又は「初期ポーズ−インターバル」中の例えば150msの経過した期間ごとに1つの通常のデータパケット及び/又は複数の純ACKパケットに制限される場合に、センダソースTCPは、今や、その代わりに、「連続ポーズ」中又は「ポーズ−インターバル」中又は「初期ポーズ−インターバル」中の新しいCWNDサイズによって許容されるレートで送信し、あるいは、パケットを全く送信しない。
And / or In addition to algorithm A or steps 1, 2, and 3 above, the packet transmission rate is for example 150 ms during “continuous pause” or “pause-interval” or “initial pause-interval” as in algorithm A If it is limited to one regular data packet and / or multiple pure ACK packets per elapsed period, the sender source TCP now instead is in a “continuous pause” or “pause-interval” or Transmit at a rate allowed by the new CWND size during the "Initial Pause-Interval", or send no packets at all.

及び/又は
5.アルゴリズムA又は上記のステップ1、2、3、又は4に加えて、肯定応答パケットが、レシーバTCPから戻って次に受信される(したがって、ラウンドトリップ経路が、今は完全に輻輳してはいない、すなわち、どちらの方向でも各すべてのパケットを捨ててはいない)(この時には、「連続ポーズ」又は「ポーズ−インターバル」又は「初期ポーズ−インターバル」が即座に止まり、「連続ポーズ」をトリガした最初に経過した例えば300msの前と同一の送信レート/CWNDサイズに戻る)までの場合に、この場合に、センダソースTCPは、新しいCWNDサイズによる制限に従って適用可能な送信レートを再開する。
And / or 5. In addition to algorithm A or steps 1, 2, 3, or 4 above, an acknowledgment packet is received next back from the receiver TCP (thus the round trip path is now not fully congested) That is, not discarding every packet in either direction (at this time the “continuous pause” or “pause-interval” or “initial pause-interval” immediately stopped and triggered the “continuous pause” In this case, the sender source TCP resumes the applicable transmission rate according to the limitation due to the new CWND size.

上記の有用な組合せの単に1つの例は、例えば500msの間「初期ポーズ」して、この例えば500ms中にパケットを全く送信しないこと又はこの例えば500ms中に1つの通常のデータパケット及び/又は複数の純ACKパケットを例えば150msごとに許容することのいずれかによってバッファ遅延をクリアし、これに続いて、「ポーズ−インターバル」中にパケットを全く送信しないこと又はこの例えば100msの「ポーズ−インターバル」中に例えば50msおきに1つの通常のデータパケット及び/又は複数の純ACKパケットを許容することのいずれかによって例えば500msが経過した時に「ポーズ−インターバル」に従うことと、その後、肯定応答パケットが次にレシーバTCPから戻って受信された時に、即座に「ポーズ−インターバル」を止め、最初に経過した例えば300msイベントの前と同一の送信レート/CWNDサイズ又は新しいCWNDサイズによって制限される新しい送信レートに戻ることとであるはずである。最初の例えば500msの導出の適切な選択は、VoIP/マルチメディアなどの他のタイムクリティカルパケットが深刻なバッファ遅延を経験しないようにするのを助けるはずであることに留意されたい。タイムスタンプオプションは、OTTest情報をセンダソースTCP判断で利用することを可能にすることができ、SACKオプションは、使用される場合に、DUP ACKイベントの発生を減らすはずである。   Only one example of the above useful combinations is, for example, “initially paused” for 500 ms and does not transmit any packets during this eg 500 ms or one normal data packet and / or multiples during this eg 500 ms. Clearing the buffer delay by either allowing every ACK packet of e.g. every 150 ms, followed by no packet transmission during the "pause-interval" or this "pause-interval" of e.g. 100 ms Follow the “pause-interval” when e.g. 500 ms elapses, either by allowing one normal data packet and / or multiple pure ACK packets every 50 ms, and then the acknowledgment packet Immediately after being returned from the receiver TCP. The "Pause - Interval" stop, there should in the return to the new transmission rate is limited by the front same transmission and rate / CWND size or new CWND size initially elapsed example 300ms events. Note that a proper choice of the first derivation of eg 500 ms should help prevent other time critical packets such as VoIP / multimedia from experiencing severe buffer delays. The timestamp option can allow OTTest information to be utilized in sender source TCP decisions, and the SACK option should reduce the occurrence of DUP ACK events when used.

センダソースTCPを、上記のようにさらに変更して、パケットロスが輻輳ドロップ又は物理送信エラー...などのどれに起因するのであれ、すべての状況の下で「スロースタート」に再入する要件をなしですますことができる、すなわち、TCPを、今や、RTO「スロースタート」再入、高速再送信レート半分化...などではなく、RTOパケット再送信タイムアウト又はDUP ACK高速再送信の前の送信レート/CWNDの例えば90%まで(又は、CWNDを変更せずに100msの同等「ポーズ−インターバル」)に送信レート/CWNDを維持することができる。これは、本説明で記述した方法/サブコンポーネント方法のどれにでも適用可能であるはずである。ここで、さらに変更されたTCPは、例えば1秒という既存RFCの最小RTOデフォルト最低フロアの累積的なバッファリングされた遅延をクリアするための「初期ポーズ−インターバル」を含めることなど、それ相応に輻輳ドロップ反応にはるかによりすばやく反応することができる。   The sender source TCP is further modified as described above, and packet loss is caused by congestion drop or physical transmission error. . . The requirement to re-enter “slow start” under all circumstances can be increased, ie TCP, now RTO “slow start” re-entry, fast re-transmission Half rate. . . Rather than RTO packet retransmission timeout or transmission rate / CWND up to, for example, 90% of the transmission rate / CWND before DUP ACK fast retransmission (or 100 ms equivalent "pause-interval" without changing CWND) Can be maintained. This should be applicable to any of the methods / subcomponent methods described in this description. Here, the further modified TCP will include an “initial pause-interval” to clear the cumulative buffered delay of the minimum RTO default lowest floor of the existing RFC, eg 1 second, etc. accordingly. It can react much more quickly to the congestion drop reaction.

上記のアルゴリズムA自体及び/又はそのさまざまな変更された組合せを、さらに変更し/適合させることができるが、それらは、それでもそこで開示される原理に含まれるはずである。多数の中の1つの例として、変更が、TCPスタック自体の中で直接にではなく、変更されたモニタソフトウェア/変更されたプロキシTCP/変更されたIPフォワーダ...などの中で実施される場合に、変更されたモニタソフトウェア/変更されたプロキシTCP/変更されたIPフォワーダ...などは、現在のウィンドウ分の送信されるデータセグメント/データパケットのコピーを保持し、例えば送信された特定のデータセグメント/データパケットがACKされて返されていないことを変更されたモニタソフトウェア/変更されたプロキシTCP/変更されたIPフォワーダ...などが認めた時に実際の3DUP ACK高速再送信及び実際のRTOパケット再送信(今は単に高速再送信及びRTO再送信をいずれにせよ全く実行しないはずのTCPではなく)を実行し、TCPはすぐにRTOタイムアウトを実行して、その特定の「スーンレート(soon late)」データセグメント/データパケットの特定の肯定応答を「スプーフィングし」、ここで実際のデータセグメント/データパケット再送信を実行し、且つ、高速再送信DUP ACKの受信時に、これらをTCPに転送せず、その代わりに、ここで高速再送信を実行する(したがって、この変更された端のTCPは、そのCWND/送信レートを全く変更せず、このCWND/送信レートは、最大TCPウィンドウサイズ送信レートに留まることができるが、ここでの「ポーズ」期間は、センダの実際の有効送信レートを、すなわち、各秒内の制限されないTCP送信に使用可能なタイムスライスを制限することによって、調整するはずである)。   While the above algorithm A itself and / or various modified combinations thereof can be further modified / adapted, they should still be included in the principles disclosed therein. As one example among many, the change is not directly in the TCP stack itself, but changed monitor software / modified proxy TCP / modified IP forwarder. . . Modified monitor software / modified proxy TCP / modified IP forwarder. . . Keeps a copy of the data segment / data packet transmitted for the current window, eg changed monitor software / changes that the specific data segment / data packet sent was not ACKed back Proxy TCP / Modified IP forwarder. . . Perform an actual 3DUP ACK fast retransmission and an actual RTO packet retransmission (not just a TCP that should never do a fast retransmission and an RTO retransmission anyway) RPO timeout to “spoof” a specific acknowledgment of that particular “soon rate” data segment / data packet, where the actual data segment / data packet retransmission is performed, And when receiving fast retransmit DUP ACKs, they are not forwarded to TCP, but instead perform fast retransmit here (thus this modified end TCP does not have its CWND / transmission rate at all) Without change, this CWND / transmission rate can remain at the maximum TCP window size transmission rate. That is, "pause" period here, the actual effective transmission rate of the sender, i.e., by limiting the time slice available to the TCP transmission unrestricted within each second, it should be adjusted).

非常にしばしば、変更されたTCPは、ユーザローカルホストPCだけでインストールされ、httpウェブサーバ/ftpサーバ/マルチメディアストリーミングサーバなどのリモートセンダソースTCPは、上記の変更されたTCPをまだ実施していない。この故に、変更されたローカルホストPCのTCPは、ここでは、レシーバベースドの変更されたTCPとして働く、すなわち、リモートセンダソースTCPにリモートに影響する必要があるはずである。ローカルホストTCPがリモートセンダソースTCP輻輳制御/回避に影響できるいくつかの形は、リモートセンダソースTCPにレシーバウィンドウサイズ更新を送信すること、リモートセンダソースTCPでのRTOパケット再送信タイムアウトを防ぐ高速再送信/回復のためにリモートセンダソースTCPにDUP ACKを送信すること...などを介する。   Very often, the modified TCP is installed only on the user local host PC, and remote sender source TCP such as http web server / ftp server / multimedia streaming server has not yet implemented the modified TCP described above . Hence, the modified local host PC TCP should now act as a receiver-based modified TCP, i.e., remotely affect the remote sender source TCP. Some forms in which the local host TCP can affect remote sender source TCP congestion control / avoidance are to send a receiver window size update to the remote sender source TCP, a fast retransmission to prevent an RTO packet retransmission timeout at the remote sender source TCP. Send DUP ACK to remote sender source TCP for transmission / recovery. . . Etc.

ここで、モニタソフトウェア内で実施される非常に単純化されたレシーバベースドの変更されたTCPの概要を説明する(これを、さらに変更し/適合させることができ、モニタソフトウェアではなく直接にTCP自体の中で実施することもできる)。   Here is an overview of a very simplified receiver-based modified TCP implemented in the monitor software (this can be further modified / adapted and directly the TCP itself rather than the monitor software) Can also be implemented).

1.リモートセンダからTCPパケットを受信する時には、必ず、フローごとのTCPのテーブル内に既に存在する場合にはソースアドレス及びポートをチェックし、そうでない場合には、さまざまなパラメータを用いて新しいフローごとのTCP TCBを作成する(すべてのインターセプトされたパケットについて以前のSEQ NO/送信時刻テーブルエントリを維持する必要はない)。   1. When receiving a TCP packet from a remote sender, be sure to check the source address and port if it already exists in the TCP table for each flow, otherwise use the various parameters for each new flow. Create a TCP TCB (it is not necessary to maintain the previous SEQ NO / send time table entry for all intercepted packets).

.最新のパケット受信ローカルシステム時刻(リモートセンダ、純ACK、又は通常のデータパケットから受け取られる)、最新のレシーバパケットのアドバタイズされたウィンドウサイズ(ローカルMSTCPによってリモートセンダに送信される)、最新のレシーバパケットのACK番号すなわちリモートセンダから期待される次の期待されるSeq番号(ローカルMSTCPによってリモートセンダに送信され、フローごとの着信パケット及び発信パケットの検査を必要とし、我々は、今や、通常の120秒インアクティビティを待たずに、FIN/FIN ACKの際にフローごとのTCPテーブルエントリを即座に除去できなければならない)...など。   . Latest packet received local system time (received from remote sender, pure ACK, or regular data packet), advertised window size of latest receiver packet (sent to remote sender by local MSTCP), latest receiver packet ACK number, the next expected Seq number expected from the remote sender (sent to the remote sender by local MSTCP and requires inspection of incoming and outgoing packets per flow, we now (It must be possible to immediately remove the TCP table entry for each flow during FIN / FIN ACK without waiting for inactivity). . . Such.

(任意選択)Sync/Sync ACK完了時に、即座に、リモートセンダのCWNDに例えば8Kをセットする。これは、好ましくは、例えばACKNo=リモートセンダの初期SeqNo+1を有する例えば15個の即座のDUP ACKを介して行われ、Divisional ACKは、一部のTCPが、その代わりにACKされたバイト数だけCWNDを増分するのみなので、良好に動作しない場合があり、最適のACK挙動は、すべてのTCPで同一でない可能性がある。   (Optional) Upon completion of Sync / Sync ACK, immediately set, for example, 8K to CWND of the remote sender. This is preferably done via eg 15 immediate DUP ACKs with eg ACKNo = remote sender's initial SeqNo + 1, and the Divisional ACK is CWND by the number of bytes that some TCP was ACKed instead. May not work well, and the optimal ACK behavior may not be the same for all TCPs.

注:代替案では、我々は、リモートセンダから受信される最初のデータパケットを待ち、その後、リモートセンダからの受信されたばかりのSeqNoと同一にセットされたACKNoを有する(1バイトだけの不必要な再送信出費で)例えば15個のDUP ACKを生成し、あるいはDivisional ACKを使用する。   Note: In the alternative, we wait for the first data packet received from the remote sender and then have an ACKNo set equal to the SeqNo just received from the remote sender (only one byte unnecessary Generate (for example, 15 DUP ACKs) or use a Divisional ACK (with retransmission expenses).

TCPは、接続をセットアップするのに3ウェイハンドシェーキングプロシージャを使用する。接続は、開始側が、SYNフラグをセットされ、シーケンス番号フィールド内の提案される初期シーケンス番号(seq=X)を有するセグメントを送信することによってセットアップされる。次に、リモートは、SYNフラグとACKフラグの両方をセットされ、シーケンス番号フィールドに逆方向のそれ自体の割り当てられた値(seq=Y)をセットされ、X+1の肯定応答フィールド(ack=X+1)を有するセグメントを返す。これを受信した時に、開始側は、Yを記憶し、ACKフラグだけをセットされ、Y+1の肯定応答フィールドを有するセグメントを返す。   TCP uses a 3-way handshaking procedure to set up a connection. The connection is set up by the initiator sending a segment with the SYN flag set and the proposed initial sequence number (seq = X) in the sequence number field. The remote then sets both the SYN and ACK flags, sets its sequence number field to its own assigned value in the reverse direction (seq = Y), and X + 1 acknowledgment field (ack = X + 1) Returns a segment with Upon receipt of this, the initiator stores Y, returns only a segment with the ACK flag set and a Y + 1 acknowledgment field.

2.次のパケットを受信せずに300msが満了する場合には、
→ 我々は、ソフトウェア内で、ACK番号に未到着の次の期待されるSeq Noをセットされた3つのDUP ACKを生成するために、前の最後に受信されたパケットから300ms以内に次の期待されるSeq Noが到着しないことを検出し、それと同時に3つのDUP ACK以内に1800バイトのウィンドウ更新を伝え(センダの「ポーズ」+1パケットと同等)、例えば100msが純ACK又は通常のデータパケットを全く受信せずに経過する場合に、毎回1800バイトだけ増分される1800バイトの同一の3つのDUP ACKウィンドウ更新を送信し続けることだけを必要とするが、ACK又は通常のデータパケットが実際に次に受信される場合には、リモートからACK又は通常のデータパケットが次にもう一度受信されるまで、100msおきに繰り返して、前のウィンドウサイズを復元して(ACKNoフィールドにローカルMSTCPからリモートに送信された「;記録された」最新の「最大の」CKNoをセットする)通常の(3つのDUP ACKではない)同一の単一のウィンドウ更新を送信し、その後、上記の例えば300msの満了検出ループを、上記のステップ2のまさに始めに繰り返す。
2. If 300ms expires without receiving the next packet,
→ We generate the next expectation within 300ms from the last received packet in the software to generate three DUP ACKs with the next expected Seq No not arriving in the ACK number. Seq No is detected not to arrive, and at the same time it reports a 1800 byte window update within 3 DUP ACKs (equivalent to sender's “pause” + 1 packet), eg 100ms is a pure ACK or normal data packet It only needs to keep sending the same 3 DUP ACK window updates of 1800 bytes, incremented by 1800 bytes each time if it has not been received at all, but the ACK or normal data packet is actually the next ACK or normal data packet is then received again from the remote Until, repeatedly 100ms every previous to restore the window size (which is transmitted from the local MSTCP to remotely ACKNo field; to "recorded" latest "largest" set CKNo) normal (3 Send the same single window update ( not two DUP ACKs) and then repeat the above 300 ms expiration detection loop at the very beginning of step 2 above.

ここでは、我々が、単一のウィンドウ更新パケットの代わりに3つのDUP ACKを送信することもできるが、2つのさらなる100msが経過した後に、単一のウィンドウ更新ACKパケットが、合計3つのDUP ACKウィンドウ更新パケットになるはずであり、もちろん、ここでの代替案を、任意のウィンドウ更新パケット、例えばDUP SeqNoウィンドウ更新パケット...などとすることができることに留意されたい。   Here, we can also send 3 DUP ACKs instead of a single window update packet, but after 2 additional 100 ms, a single window update ACK packet has a total of 3 DUP ACKs. It should be a window update packet and, of course, the alternative here is to replace any window update packet, eg DUP SeqNo window update packet. . . Note that, and so on.

(これは、保留中のリモートMSTCP RTOタイムアウトのスロースタート再入を引き起こすシナリオAが、回避され、保留中のRTOがDUP ACK高速再送信/回復イベントによって置換されることを保証する。送信されたパケットが実際には全くない場合には、我々が不必要にACK番号=次の期待されるSeq番号を有する3つのDUP ACKを送信したことは、実際には問題でない。   (This ensures that scenario A, which causes a slow start re-entry of the pending remote MSTCP RTO timeout, is avoided and that the pending RTO is replaced by a DUP ACK fast resend / recovery event. If there are actually no packets, it is not really a problem that we unnecessarily transmitted 3 DUP ACKs with ACK number = next expected Seq number.

シナリオBは、次のACK又はデータパケットがリモートから受信される(すなわち、ボトルネックが、現在、すべてのリモート送信されたパケットを捨ててはいない)まで、100msおきに同一の3つのDUP ACKを送信し続けることによって管理され、次のACK又はデータパケットがリモートから受信された時には、我々は、いずれかの次のパケットが受信されるまで、100msおきに単一のウィンドウサイズ復元パケットを送信し続ける(すなわち、ワーストケースですべてのウィンドウ復元パケットが捨てられる場合であっても、300ms後に、このプロセスが繰り返され、やはりウィンドウ「ポーズ」とその後のウィンドウ復元の試みが保証される)。 Scenario B sends three identical DUP ACKs every 100 ms until the next ACK or data packet is received from the remote (ie, the bottleneck is not currently discarding all remotely transmitted packets). When the next ACK or data packet is received from the remote, managed by continuing to transmit, we send a single window size recovery packet every 100 ms until any next packet is received. Continue (ie, even if all window restoration packets are discarded in the worst case), after 300 ms, this process is repeated, again guaranteeing window “pause” and subsequent window restoration attempts.

注:我々は、アドバタイズされるレシーバウィンドウサイズを連続して増分する。というのは、リモートが、以前の使用可能なレシーバがアドバタイズしたウィンドウサイズを使い果たしている可能性があるが、送信されたパケット(1つ又は複数)が捨てられ、一度もレシーバに達していないからである。リモートが一度もスロースタートすなわち通常RTOに起因するCWND=1に再入していないことを確かめることによって、我々は、非常に大きいウェブページダウンロード時間削減を達成した。高速再送信は、スロースタートを引き起こさず、3つのDUP ACKは、リモートの既存CWNDを半分にするだけであることに留意されたい。   Note: We continuously increment the advertised receiver window size. This is because the remote may have used up the window size advertised by the previous available receiver, but the transmitted packet (s) were discarded and never reached the receiver. It is. By making sure that the remote has never re-entered CWND = 1 due to slow start, usually RTO, we achieved a very large web page download time reduction. Note that fast retransmission does not cause a slow start, and three DUP ACKs only halve the remote existing CWND.

上記のアルゴリズムを、次のように、他端のTCPを「ポーズ」させるためにレシーバウィンドウサイズ更新を送信することを必要とせずに、さらに単純化することができる。The above algorithm can be further simplified without the need to send a receiver window size update to “pause” the TCP at the other end as follows:

1.リモートセンダからTCPパケットを受信する時には、必ず、フローごとのTCPのテーブル内に既にある場合にはソースアドレス及びポートをチェックし、そうでない場合には、さまざまなパラメータを用いて新しいフローごとのTCP TCBを作成する(すべてのインターセプトされたパケットについて以前のSEQ NO/送信時刻テーブルエントリを維持する必要はない)。   1. When receiving a TCP packet from a remote sender, be sure to check the source address and port if they are already in the TCP table for each flow, otherwise use the various parameters to check the TCP for each new flow. Create TCB (no need to maintain previous SEQ NO / send time table entry for all intercepted packets).

.最新のパケット受信ローカルシステム時刻(リモートセンダ、純ACK、又は通常のデータパケットから受け取られる)、最新のレシーバパケットのACK番号すなわちリモートセンダから期待される次の期待されるSeq番号(ローカルMSTCPによってリモートセンダに送信され、フローごとの着信パケット及び発信パケットの検査を必要とし、我々は、今や、通常の120秒インアクティビティを待たずに、FIN/FIN ACKの際にフローごとのTCPテーブルエントリを即座に除去できなければならない)...など。   . Latest packet received local system time (received from remote sender, pure ACK, or normal data packet), ACK number of latest receiver packet, ie next expected Seq number expected from remote sender (remote by local MSTCP Sending to the sender and requiring inspection of incoming and outgoing packets per flow, we now have the per-flow TCP table entries immediately upon FIN / FIN ACK without waiting for the normal 120 second inactivity Must be able to be removed). . . Such.

(任意選択)Sync/Sync ACK完了時に、即座に、リモートセンダのCWNDに例えば8Kをセットする。これは、好ましくは、ACKNo=リモートセンダの初期シーケンス番号+1を有する例えば15個の即座のDUP ACKを介して行われ、一部のTCPが、その代わりにACKされたバイト数だけCWNDを増分するのみなので、Divisional ACKは、良好に動作しない場合があり、最適のACK挙動は、すべてのTCPで同一でない場合がある。   (Optional) Upon completion of Sync / Sync ACK, immediately set, for example, 8K to CWND of the remote sender. This is preferably done via, for example, 15 immediate DUP ACKs with ACKNo = remote sender's initial sequence number + 1, and some TCP instead increments CWND by the number of bytes ACKed instead. As such, Divisional ACK may not work well and the optimal ACK behavior may not be the same for all TCPs.

注:代替案では、我々は、リモートセンダから受信される最初のデータパケットを待ち、その後、リモートセンダからの受信されたばかりのシーケンス番号と同一にセットされたACKNoを有する(1バイトだけの不必要な再送信出費で)例えば15個のDUP ACKを生成し、あるいはDivisional ACKを使用する。   Note: In the alternative, we wait for the first data packet received from the remote sender and then have an ACKNo set equal to the sequence number just received from the remote sender (only one byte unnecessary) For example, generate 15 DUP ACKs or use a Divisional ACK (with a small retransmission fee).

TCPは、接続をセットアップするのに3ウェイハンドシェーキングプロシージャを使用する。接続は、開始側が、SYNフラグをセットされ、シーケンス番号フィールド内の提案される初期シーケンス番号(seq=X)を有するセグメントを送信することによってセットアップされる。次に、リモートは、SYNフラグとACKフラグの両方をセットされ、シーケンス番号フィールドに逆方向のそれ自体の割り当てられた値(seq=Y)をセットされ、X+1の肯定応答フィールド(ack=X+1)を有するセグメントを返す。これを受信した時に、開始側は、Yを記憶し、ACKフラグだけをセットされ、Y+1の肯定応答フィールドを有するセグメントを返す。   TCP uses a 3-way handshaking procedure to set up a connection. The connection is set up by the initiator sending a segment with the SYN flag set and the proposed initial sequence number (seq = X) in the sequence number field. The remote then sets both the SYN and ACK flags, sets its sequence number field to its own assigned value in the reverse direction (seq = Y), and X + 1 acknowledgment field (ack = X + 1) Returns a segment with Upon receipt of this, the initiator stores Y, returns only a segment with the ACK flag set and a Y + 1 acknowledgment field.

2.次のパケットを受信せずに300msが満了する場合には、
→ 我々は、ソフトウェア内で、ACK Noに未到着の次の期待されるSeqをセットされた3つのDUP ACKを生成するために、前の最後に受信されたパケットから例えば300ms以内に次の期待されるSeq Noが到着しないことを検出することだけを必要とする。
2. If 300ms expires without receiving the next packet,
→ We generate the next expectation within 300 ms from the last received packet in the software to generate three DUP ACKs with the next expected Seq set to ACK No. It is only necessary to detect that the Seq No to be received does not arrive.

例えば100msが純ACK又は通常のデータパケットを全く受信せずに経過する場合に、同一の3つのDUP ACKを送信し続けるが、ACK又は通常のデータパケットが実際に次に受信される場合には、上記の例えば300msの満了検出ループを、上記のステップ2のまさに始めに繰り返す。   For example, if 100 ms passes without receiving a pure ACK or normal data packet at all, it will continue to send the same three DUP ACKs, but if the ACK or normal data packet is actually received next The above-described 300 ms expiration detection loop is repeated at the very beginning of step 2 above.

(これは、保留中のリモートMSTCP RTOタイムアウトのスロースタート再入を引き起こすシナリオAが、回避され、保留中のRTOがDUP ACK高速再送信/回復イベントによって置換されることを保証する。送信されたパケットが実際には全くない場合には、我々が不必要にACK番号=次の期待されるSeq番号を有する3つのDUP ACKを送信したことは、実際には問題でない。   (This ensures that scenario A, which causes a slow start re-entry of the pending remote MSTCP RTO timeout, is avoided and that the pending RTO is replaced by a DUP ACK fast resend / recovery event. If there are actually no packets, it is not really a problem that we unnecessarily transmitted 3 DUP ACKs with ACK number = next expected Seq number.

シナリオBは、次のACK又はデータパケットがリモートから受信される(すなわち、ボトルネックが、現在、すべてのリモート送信されたパケットを捨ててはいない)まで、100msおきに同一の3つのDUP ACKを送信し続けることによって管理される:次のACK又はデータパケットがリモートから受信された時には、我々は、いずれかの次のパケットが受信されるまで、100msおきに単一のウィンドウサイズ復元パケットを送信し続ける(すなわち、ワーストケースですべてのウィンドウ復元パケットが捨てられる場合であっても、300ms後に、このプロセスが繰り返され、やはりウィンドウ「ポーズ」とその後のウィンドウ復元の試みが保証される)。 Scenario B receives three identical DUP ACKs every 100 ms until the next ACK or data packet is received from the remote (ie, the bottleneck is not currently discarding all remotely transmitted packets). Managed by continuing to transmit: When the next ACK or data packet is received from the remote, we send a single window size recovery packet every 100 ms until any next packet is received (Ie, even if all window restoration packets are discarded in the worst case), after 300 ms, this process is repeated, again guaranteeing window “pause” and subsequent window restoration attempts).

上記の非常に単純化されたアルゴリズムは、本明細書のさまざまな他の類似するアルゴリズムから導出される:
1.レシーバベースドの目的は、この変更を実施していないリモートセンダソースTCPにできる限り「ミラーイメージ」センダベースドのように振る舞わせることである(しかし、例えばレシーバベースドは、センダソースTCPが、未到着の次の期待されるSeqNoデータセグメントを既に送信したかどうかを知るすべがない...など、ワークアラウンドを必要とするいくつかの些細な相違がある)。センダベースドは、通常のデータパケットのACKが遅れている時に「ポーズ」するが、MSTCPタイムアウト再送信(Seq No=<記録された最後に送信されたSeq Noによって検出される時に、ポーズ−インターバルあたり1つの通常のデータパケットがプローブとして転送されることを可能にし、その後、CWNDをRTOの前の以前のレベルまで戻すためにインターバルACKTimeoutに関してMSTCPへのACKを「スプーフィングする」。我々は、今、後で機能強化するために、まず単純化されたベアボーンバージョンアップを得る。
The above highly simplified algorithm is derived from various other similar algorithms herein:
1. The purpose of receiver-based is to make remote sender source TCP that has not made this change behave as much as a “mirror image” sender-based as much as possible (but receiver-based, for example, sender source TCP is unarrived) (There are some minor differences that require workarounds, such as ... if the next expected SeqNo data segment has already been transmitted). The sender-based “pauses” when the ACK of a normal data packet is delayed, but the MSTCP timeout retransmission (Seq No = <pause-per-interval when detected by the last sent Seq No recorded Allows one regular data packet to be forwarded as a probe and then “spoofs” the ACK to MSTCP for interval ACKTimeout to return CWND to the previous level prior to RTO. For later enhancements, we first get a simplified barebone upgrade.

2.Seq No/送信時刻主イベントリスト及び再送信イベントリストを使用する通常データパケットプローブ法は、十分に単純である。インターセプトされたSYNC/SYNC ACKパケット及び/又はPCレジストリセッティングを変更することによって、SYNC/SYNC ACK中にネゴシエートされるTimestampオプションを保証する必要がある。   2. The normal data packet probing method using the Seq No / transmission time main event list and the retransmission event list is simple enough. It is necessary to guarantee the Timestamp option negotiated during the SYNC / SYNC ACK by changing the intercepted SYNC / SYNC ACK packet and / or PC registry settings.

3.到着するOTTest>現在の記録されたOTTest(min)+300msの時には、これは、輻輳バッファ遅延をシグナリングする(OTTest(min)は、リモートセンダから我々への非輻輳OTTの我々の最新の最良の推定値である) → 1つの通常の1500バイトイーサネットパケットが受信されることを可能にするために1800バイトのウィンドウ更新を送信し、且つ、複数の小さい純ACKをも送信する。   3. When arriving OTTest> current recorded OTTest (min) +300 ms, this signals the congestion buffer delay (OTTest (min) is our latest best estimate of non-congested OTT from the remote sender to us Value) → send a 1800 byte window update to allow one regular 1500 byte Ethernet packet to be received, and also send multiple small pure ACKs.

4.到着するOTTest>現在の記録されたOTTest(min)+300msで通常のデータパケット又は純ACKを受信せずにOTTest(min)が経過する場合に、1800バイトだけ増分された1800バイトの同一のウィンドウ更新を送信し続ける(したがって、経過したOTTest(min)ごとに、リモートは、単一の新しい通常のデータパケットをプローブとして転送することができる)。どの時点でも、到着するオンタイムOTTest=<現在の記録されたOTTest(min)+300msの場合には、前のレシーバウィンドウサイズを復元するウィンドウ更新を即座に送信する、すなわち、リモートは、今や、以前の通常の送信レートを再開する。   4). Arriving OTTest> current recorded OTTest (min) + same window update of 1800 bytes incremented by 1800 bytes if OTTest (min) elapses without receiving a normal data packet or a pure ACK at 300 ms (Thus, for every OTTest (min) that has passed, the remote can forward a single new regular data packet as a probe). At any point, if the incoming on-time OTTest = <current recorded OTTest (min) +300 ms, it immediately sends a window update that restores the previous receiver window size, i.e., the remote now Resume normal transmission rate of.

(注:これは、レートをスロットリングすることによってパケットドロップを防ぐことを試み、したがって、リモートは、もう一度スロースタートする必要が絶対にないが、外部インターネットであることは、実際には良好に動作しない!。この故に、上記の段落4は、下の段落4によって置換されなければならず、下の段落4は、現在、パケットロスイベントの際にできる限り早くリモート送信レートを復元することに単純に集中する、すなわち、我々は、再送信されたパケットを検出した際にセンダベースドの「スプーフィング」に似てリモート送信レートを即座に復元できる場合に、パケットドロップがリモートでのスロースタートを引き起こすかどうかをもはや気にしない)。   (Note: This tries to prevent packet drops by throttling the rate, so the remote never has to slow start again, but being an external internet actually works well For this reason, paragraph 4 above must be replaced by paragraph 4 below, which is now simple to restore the remote transmission rate as soon as possible in the event of a packet loss event. If we can retransmit the remote transmission rate instantly similar to sender-based “spoofing” when we detect a retransmitted packet, is packet drop causing a remote slow start? I do n’t care about that anymore).

4.リモートセンダパケット「保留中」再送信は、到着するSeq No>次の期待されるSeq No且つ欠けているギャップSeq No(1つ又は複数)が受信されずに300msが経過した時に、必ず検出される(すなわち、今や、ギャップパケットが失われたと安全に仮定することができ、リモートセンダは、現在、スロースタートがRFCの1秒最小シーリングの満了で保留中の状態で再送信し終えるはずである) → しかし、我々のMSTCPは、リモートにもう一度スロースタートに入らずに高速再送信させる3つの順序はずれのSeq Noパケットの受信時に、3つのDUP ACKをそれ自体で既に生成するはずである(リモートセンダが、単に、送信するたまたま2つの順序はずれのSeq Noだけを有し、それ以外は有しない場合に、これが、ものごとを混乱させてはならない。というのは、リモートがこの時に多くを送信しようとしていないので、我々は、単純に、リモートがスロースタートすることを許容することができるからである) → 我々は、ACK Noに未到着の期待されるSeq Noをセットされた3つのDUP ACKを生成するために、次の期待されるSeq Noが以前に受信されたパケットから300ms以内に到着しないことを検出することだけを必要とする。   4). A remote sender packet “pending” retransmission is detected whenever 300 ms elapses without arriving Seq No> next expected Seq No and missing gap Seq No (s). (I.e. it can now safely be assumed that the gap packet has been lost and the remote sender should now have retransmitted with a slow start pending with the expiration of the RFC 1 second minimum ceiling. → However, our MSTCP should already generate three DUP ACKs on its own upon receipt of three out-of-order Seq No packets that will cause the remote to retransmit fast without entering slow start again (remote The sender simply happens to have only two out-of-order Seq No. If not, this should not confuse things, because we can simply allow the remote to slow start because the remote is not trying to send much at this time. → We generate the next expected Seq No within 300ms from the previously received packet in order to generate three DUP ACKs with the expected Seq No set to ACK No. It only needs to detect that it does not arrive.

(SACKは、DUP ACKの発生を減らすのに有用である可能性があり、Divisional ACK、DUP ACK、Optimistic ACKは、センダベースドの「ACKスプーフィング」に似てリモート送信レートを復元するのに有用である可能性があることに留意されたい。http://www−2.cs.cmu.edu/〜kgao/course/network.pdfhttp://www−2.cs.cmu.edu/〜kgao/course/network.pdf、及びGoogle Search用語「Ack spoofing」を参照されたい)。 (SACK may be useful to reduce the occurrence of DUP ACK, and Divisional ACK, DUP ACK, and Optimistic ACK are useful to restore remote transmission rate similar to sender-based “ACK spoofing”. Note that there is a possibility : http://www-2.cs.cmu.edu/~kgao/course/network.pdf , http://www-2.cs.cmu.edu/~kgao /Course/network.pdf and Google Search terminology “Ack spoofing”).

ここで、レシーバベースドの方法の(サンプルのみの)アルゴリズムを添付する。   Here, the (sample-only) algorithm of the receiver-based method is attached.

1.サブネットユーザ入力、指定されたサブネットへ−からのTCPフローを監視するのみ
2.外部ソース/デスティネーションを伴うTCPフローは、異なって監視される
2.1 外部ソース(すなわち、カスタマイズされたTCPは、レシーバベースドフローコントローラとして働く)。
1. 1. Only monitor TCP flows from subnet user input, to specified subnet TCP flows with external sources / destinations are monitored differently 2.1 External sources (ie customized TCP acts as a receiver-based flow controller).

.接続確立中にこれらのフローのTimestampオプションを選択する(Syncパケットを変更することができるか? あるいは、上記の段落1、2のすべてのフローもタイムスタンプを用いてひとまとめにするためにPCレジストリをセットする必要がある可能性があるか? Window server 2003は、リモートTCPによって開始される場合にタイムスタンプオプションを可能にするだけである!?)。   . Select the Timestamp option for these flows during connection establishment (Can the Sync packet be modified? Alternatively, all the flows in paragraphs 1 and 2 above can also be run through the PC registry to group together using time stamps. May need to be set? Windows server 2003 only allows the timestamp option when initiated by remote TCP !?).

.リモートセンダTSValについてこのTCPの着信パケットをチェックし、これを、受信されたまさに最初のパケットのOTTest(max)として及びOTTest(min)としても記録する(現在のレシーバシステム時刻−TSVal)。OTTestは、one way trip time estimate(一方向トリップ時間推定値)すなわち、これまでに観察された最大及び最小のOTTを表す。OTTest(max)及びOTTest(min)は、受信されるすべての後続パケットから更新される。   . Check this TCP incoming packet for remote sender TSVal and record this as OTTTest (max) and OTTest (min) of the very first packet received (current receiver system time-TSVal). OTTest represents one way trip time estimate, ie the maximum and minimum OTTs observed so far. OTTest (max) and OTTest (min) are updated from all subsequent packets received.

.着信パケットのOTTest−OTTest(min)>例えば100ms(ユーザ入力パラメータ)である場合には、リモートセンダは、「ポーズ」しなければならず、カスタマイズされたTCPは、レシーバの最後に送信されたシーケンス番号又は最後に受信されたACK No−1をSeq Noにセットされた(したがって、レシーバがボールでリモートセンダにデータセグメントを送信しない場合には、レシーバの最後に送信したSeq Noがない)、例えば50バイトの1バイトガーベジ(又はデータなし)セグメントウィンドウサイズアドバタイズメントパケット(リモートセンダTCPが応答する/純粋ACKを可能にするために、必ずしも0ではない)を生成する。   . If OTTest-OTTest (min) of incoming packet> eg 100 ms (user input parameter), the remote sender must “pause” and the customized TCP will be the last sequence sent at the receiver Number or last received ACK No-1 set to Seq No (thus, if the receiver does not send the data segment to the remote sender with the ball, there is no Seq No sent at the end of the receiver), eg Generate a 50 byte 1 byte garbage (or no data) segment window size advertisement packet (not necessarily 0 to allow remote sender TCP to respond / pure ACK).

レシーバは、同一の生成されたウィンドウアドバタイズメントパケット(ただし、Seq No又は最後に受信されたACK No−1が変更されている場合がある)を、これらの「複製されたパケットウィンドウ更新」パケットのうちの1つに対して受信された応答確認があり、したがって、これらのウィンドウ更新パケットのうちの少なくとも1つがセンダで受信済みであり、その応答確認が今到着する(いずれかの方向で失われる可能性がある)ことが示されるまで、送信し続け、そのOTTest−OTTest(min)は<例えば100msでなければならない(我々は、輻輳がなくなるまで「ポーズ」を停止しない)。   The receiver sends the same generated window advertisement packet (however, the Seq No or the last received ACK No-1 may have been modified) to these “replicated packet window update” packets. There is an acknowledgment received for one of them, so at least one of these window update packets has been received at the sender and that acknowledgment has arrived now (lost in either direction) It will continue to transmit until indicated (possibly) and its OTTest-OTTest (min) should be <eg 100 ms (we will not stop the “pause” until there is no congestion).

「ポーズ」は、OTTest(min)+100ms以内に到着する任意の他のパケット、例えば通常のデータパケットの際にも停止させることができる。その際には、レシーバが、同一であるがウィンドウサイズフィールドにその「ポーズ」の直前の値をセットされたウィンドウ更新パケットを送信する(この値は、例えば50バイトアドバタイズメントをもたらす前に記録される。   The “pause” can also be stopped on any other packet that arrives within OTTest (min) +100 ms, for example a normal data packet. In that case, the receiver sends a window update packet that is identical but has the window size field set to the previous value of its “pause” (this value is recorded before, for example, providing a 50 byte advertisement). The

2.2 リモートデスティネーション(すなわち、カスタマイズされたTCPは、センダベースドとして働く)
.タイムスタンプオプションは、必要ではないが、RTT<タイムアウト(逆経路輻輳によって引き起こされる可能性がある)の原因をよりよく判定するために、戻る一方向遅延を知るのに有用である。
2.2 Remote destination (ie customized TCP acts as sender-based)
. The timestamp option is not necessary, but is useful to know the one-way delay back to better determine the cause of RTT <timeout (which can be caused by reverse path congestion).

.Seq No<最後に送信されたSeq Noを有するMSTCPが発するパケット(1つ又は複数)が送信される(パケットドロップ再送信)時に、MSTCPは、もう一度スロースタートに入るはずである:カスタマイズされたTCPは、今や、例えば100msの期間の間、MSTCPが発するすべてのパケットについて、MSTCPに戻る「ACK」をスプーフィングするはずである。これは、輻輳ウィンドウを、例えばTCPウィンドウサイズに戻すはずである。すべての後続の転送されるバッファリングされるパケットドロップは、受信されるレシーバの3つのDUP ACKを介して高速再送信することができる(その際に、カスタマイズされたTCPは、やはり戻してACKをスプーフィングすることができる)。   . When TCP (s) originated by MSTCP with Seq No <last sent Seq No is sent (packet drop retransmission), MSTCP should enter slow start again: customized TCP Will now spoof an “ACK” back to MSTCP for all packets originating from MSTCP, eg, for a period of 100 ms. This should return the congestion window to eg the TCP window size. All subsequent forwarded buffered packet drops can be fast retransmitted via the receiver's three DUP ACKs (in that case, the customized TCP will also return an ACK). Can be spoofed).

我々のアルゴリズム:
1.TCPパケットを受信する時には、必ず、フローごとのTCPのテーブル内に既にある場合にはソースアドレス及びポートをチェックし、そうでない場合には、さまざまなパラメータを用いて新しいフローごとのTCP TCBを作成する(すべてのインターセプトされたパケットについて以前のSeq No/送信時刻テーブルエントリを維持する必要はない)。
Our algorithm:
1. When receiving a TCP packet, be sure to check the source address and port if they are already in the TCP table for each flow, otherwise create a new TCP TCB for each flow using various parameters. (There is no need to maintain a previous Seq No / Send Time Table entry for all intercepted packets).

.最新のパケット受信ローカルシステム時刻(純ACK、又は通常のデータパケット)、最新のレシーバパケットのアドバタイズされたウィンドウサイズ、最新のレシーバパケットのACK番号すなわち次の期待されるSeq番号(フローごとの着信パケット及び発信パケットの検査を必要とし、我々は、今や、120秒を待たずに、FIN/FIN ACKの際にフローごとのTCPテーブルエントリを即座に除去できなければならない)。   . Latest packet received local system time (pure ACK or normal data packet), advertised window size of latest receiver packet, ACK number of latest receiver packet, ie next expected Seq number (incoming packets per flow) And we must now be able to immediately remove per-flow TCP table entries during FIN / FIN ACK without waiting for 120 seconds).

2.次のパケットを受信せずに300msが満了する場合には、
→ 我々は、ソフトウェア内で、ACK Noに未到着の次の期待されるSeq Noをセットされた3つのDUP ACKを生成するために、前の最後に受信されたパケットから300ms以内に次の期待されるSeq Noが到着しないことを検出し、これと同時に3つのDUP ACK以内に1800バイトのウィンドウ更新を伝える(センダの「ポーズ」+1パケットと同等)ことだけを必要とする:ここで、我々は、3つのDUP ACKがやはりリモートによって戻ってACKされることを期待し、例えば100msが戻りACKを受信せずに経過する場合にそのたびに1800バイトだけ増分された1800バイトの同一の3つのDUP ACKウィンドウ更新を送信し続けなければならないが、戻りACK又は通常のデータパケットが次に受信される場合には(OTT時間に関わりなく)、前のウィンドウサイズを復元する3つのDUP ACKウィンドウ更新を送信する。
2. If 300ms expires without receiving the next packet,
→ We generate the next expectation within 300ms from the last received packet in the software to generate three DUP ACKs with the next expected Seq No set to ACK No. It is only necessary to detect that the Seq No received does not arrive and at the same time convey a 1800 byte window update within 3 DUP ACKs (equivalent to the sender's “pause” +1 packet): Expects three DUP ACKs to be back ACKed again by the remote, for example, the same three 1800 bytes incremented by 1800 bytes each time 100 ms elapses without receiving a return ACK DUP ACK window update must continue to be sent, but return ACK or normal data packet If the received (regardless of OTT time), and transmits the previous restoring the window size three DUP ACK window update.

(これは、保留中のリモートMSTCP RTOタイムアウトのスロースタート再入を引き起こすシナリオAが、回避され、保留中のRTOがDUP ACK高速再送信/回復イベントによって置換されることを保証する。送信されたパケットが実際には全くない場合には、我々が不必要にACK番号=次の期待されるSeq番号を有する3つのDUP ACKを送信したことは、実際には問題でない。   (This ensures that scenario A, which causes a slow start re-entry of the pending remote MSTCP RTO timeout, is avoided and that the pending RTO is replaced by a DUP ACK fast resend / recovery event. If there are actually no packets, it is not really a problem that we unnecessarily transmitted 3 DUP ACKs with ACK number = next expected Seq number.

シナリオBは、「ACKing the ACK」が受信されるまで、又は次の通常のデータパケットが受信される(すなわち、ボトルネックが、現在はすべてのリモート送信されたパケットを捨ててはいない)まで同一の3つのDUP ACKを100msおきに送信し続けることによって管理される:「ACKing the ACK」又は次の通常のデータパケットがリモートから受信された時には、我々は、「ACKing the ACK」が受信されるまで、100msおきに、アドバタイズされたウィンドウサイズを復元する3つのDUP ACKを送信し続ける。   Scenario B is the same until “ACKing the ACK” is received or until the next regular data packet is received (ie, the bottleneck is not currently discarding all remotely transmitted packets) Is managed by continuing to send 3 DUP ACKs every 100 ms: when an “ACKing the ACK” or the next regular data packet is received from the remote, we receive an “ACKing the ACK” Until then, it continues to send three DUP ACKs to restore the advertised window size every 100 ms.

次の期待されるSeq Noのセグメントについて3つのDUP ACKを送信することの代替案として、我々は、3つのDUP ACKのACK Noフィールドに、その代わりに次の期待されるSeq No−1をセットすることができ(再送信される1つの余分のバイトだけという犠牲で)、この場合に、我々は、回転する次の期待されるSeq No −100、−99、−98....−1を使用してSeq Noフィールドをセットする必要が明確にある。   As an alternative to sending three DUP ACKs for the next expected Seq No segment, we set the next expected Seq No-1 in the ACK No field of the three DUP ACKs instead. Can be done (at the expense of only one extra byte being retransmitted), in which case we will rotate the next expected Seq No-100, -99, -98. . . . There is clearly a need to set the Seq No field using -1.

しかし、http://www.cs.rutgers.edu/〜muthu/wtcp.pdfを参照されたく、このサイトでは、TCPが、この場合に、「現在の輻輳ウィンドウ内の最低の肯定応答されていないパケット又は最初の未送信のパケットから始めて」再送信することが提案されている。 However, http: // www. cs. ruggers. edu / ~ muthu / wtcp. Want to see pdf , at this site, it is suggested that TCP retransmit in this case "starting with the lowest unacknowledged packet or the first unsent packet within the current congestion window" Yes.

これが仕様により近くなることを期待されたく、ソフトウェアは、それでも、受信されるパケット及び送信されるパケットのいずれをも変更せずに「パッシブパススルー」のままになる。リモートMSTCPは、今や、決してRTO再入スロースタートしなくなる。   We want to expect this to be closer to the specification, and the software will still remain "passive passthrough" without changing either the received packet or the transmitted packet. Remote MSTCP now never RTO re-entry slow start.

単一PCシェアウェアについて、我々は、プローブ及びタイムスタンプ機能を全く必要としない(段落2):ウィンドウ更新は、純ACK又は通常のデータパケットを受信するまで(受信時刻は問題でない)、100msおきに単純に繰り返すことができる(段落4の3*OTTest(min)の代わりに)。ここで、我々のフローがパケットを捨てる時に、我々は、パケットが捨てられるのと同一のボトルネックをトラバースする他のフローのMSTCPが、我々自身のMSTCPと同一の時刻前後にRTOレートすることを知る → 我々は、リモートセンダのCWNDを安全に復元することができる。   For single PC shareware, we don't need any probe and time stamp function (paragraph 2): window updates until every 100 ms until a pure ACK or regular data packet is received (reception time is not a problem) Can be simply repeated (instead of 3 * OTTest (min) in paragraph 4). Here, when our flow discards the packet, we see that the MSTCP of the other flows that traverse the same bottleneck that the packet is discarded will RTO rate around the same time as our own MSTCP. Know → We can safely restore the remote sender's CWND.

1.目的は、リモートに、できる限り「ミラーイメージ」センダベースドのように振る舞わせることである:センダベースドは、通常のデータパケットのACKが遅れている時に「ポーズ」するが、MSTCPがタイムアウト再送信する(Seq No=<記録された最後の送信されたSeq Noによって検出される時に、ポーズ−インターバルあたり1つの通常のデータパケットがプローブとして転送されることを可能にし、その後、CWNDをRTOの前の以前のレベルまで戻すために、ACKTimeoutインターバルの間にMSTCPへのACKを「スプーフィング」する。我々は、今、後に機能強化するために(例えば、SACKギャップパケット機能が有用である可能性がある)、まず、単純化されたミラーリングされるベアボーンレシーバベースドバージョンアップを得なければならない。   1. The goal is to make the remote behave as much as possible as a "mirror image" sender-based: sender-based "pauses" when the ACK of a regular data packet is delayed, but MSTCP resends the timeout (Seq No = <Allows one regular data packet per pause-interval to be forwarded as a probe when detected by the last recorded Seq No recorded, then CWND is To “spoof” the ACK to MSTCP during the ACK Timeout interval to return to the previous level, we can now enhance later (eg, SACK gap packet functionality may be useful) First, a simplified mirrored bear bow Receiver-based version upgrade must be obtained.

2.Seq No/送信時刻主イベントリスト及び再送信イベントリストを使用する、通常データパケットプローブ法は、十分に単純である。インターセプトされたSYNC/SYNC ACKパケット及び/又はPCレジストリセッティングを変更することによって、SYNC/SYNC ACK中にネゴシエートされるTimestampオプションを保証する必要がある。   2. The normal data packet probing method using the Seq No / Send Time Main Event List and the Retransmit Event List is simple enough. It is necessary to guarantee the Timestamp option negotiated during the SYNC / SYNC ACK by changing the intercepted SYNC / SYNC ACK packet and / or PC registry settings.

[単純化されたアルゴリズムではもはや不要である
3.到着するOTTest>現在の記録されたOTTest(min)+300msの時には、これは、輻輳バッファ遅延をシグナリングする(OTTest(min)は、リモートセンダから我々への非輻輳OTTの我々の最新の最良の推定値である) → 1つの通常の1500バイトイーサネットパケットが受信されることを可能にするために1800バイトのウィンドウ更新を送信し、且つ、複数の小さい純ACKをも送信する。]。
[No longer needed with simplified algorithm. When arriving OTTest> current recorded OTTest (min) +300 ms, this signals the congestion buffer delay (OTTest (min) is our latest best estimate of non-congested OTT from the remote sender to us Value) → send a 1800 byte window update to allow one regular 1500 byte Ethernet packet to be received, and also send multiple small pure ACKs. ].

[単純化されたアルゴリズムではもはや不要である
4.到着するOTTest>現在の記録されたOTTest(min)+300msで通常のデータパケット又は純ACKを受信せずにOTTest(min)が経過する場合に、1800バイトだけ増分された1800バイトの同一のウィンドウ更新を送信し続ける(したがって、経過したOTTest(min)ごとに、リモートは、単一の新しい通常のデータパケットをプローブとして転送することができる)。どの時点でも、到着するオンタイムOTTest=<現在の記録されたOTTest(min)+300msの場合には、以前のレシーバウィンドウサイズを復元するウィンドウ更新を即座に送信する、すなわち、リモートは、今や、前の通常の送信レートを再開する。]。
[No longer needed with simplified algorithm. Arriving OTTest> current recorded OTTest (min) + same window update of 1800 bytes incremented by 1800 bytes if OTTest (min) elapses without receiving a normal data packet or a pure ACK at 300 ms (Thus, for every OTTest (min) that has passed, the remote can forward a single new regular data packet as a probe). At any point, if the on-time OTTest arriving = <current recorded OTTest (min) +300 ms, it immediately sends a window update that restores the previous receiver window size, ie, the remote now Resume normal transmission rate. ].

(注:これは、レートをスロットリングすることによってパケットドロップを防ぐことを試み、したがって、リモートは、もう一度スロースタートする必要が絶対にないが、外部インターネットであることは、実際には良好に動作しない!。パケットドロップの直前にOTTestを知ることは非常にむずかしく、この故に、上記の段落4は、下の段落4によって置換されなければならず、下の段落4は、現在、パケットロスイベントの際にできる限り早くリモート送信レートを復元することに単純に集中する、すなわち、我々は、再送信されたパケットを検出した際にセンダベースドの「スプーフィング」に似てリモート送信レートを即座に復元できる場合に、パケットドロップがリモートでのスロースタートを引き起こすかどうかをもはや気にしない)。   (Note: This tries to prevent packet drops by throttling the rate, so the remote never has to slow start again, but being an external internet actually works well It is very difficult to know the OTTest just before the packet drop, so the above paragraph 4 must be replaced by the lower paragraph 4, and the lower paragraph 4 is now the packet loss event Simply concentrate on restoring the remote transmission rate as soon as possible, that is, we can instantly restore the remote transmission rate, similar to sender-based "spoofing" when detecting a retransmitted packet If the packet drop causes a slow start remotely I do not care).

4.リモートセンダパケット「保留中」再送信は、到着するSeq No>次の期待されるSeq No且つ欠けているギャップSeq No(1つ又は複数)が受信されずに300msが経過した時に、ソフトウェアによって必ず検出される(すなわち、今や、ギャップパケットが失われたと安全に仮定することができ、リモートセンダは、現在、スロースタートがRFCの1秒最小シーリングの満了で保留中の状態で再送信し終えるはずである) → しかし、我々のMSTCPは、リモートにもう一度スロースタートに入って/入らずに高速再送信させる3つの順序はずれのSeq Noパケットの受信時に、3つのDUP ACKをそれ自体で既に生成するはずである(リモートセンダが、単に、送信するたまたま2つの順序はずれのSeq Noだけを有し、それ以外は有しない場合に、これが、ものごとを混乱させてはならない。というのは、リモートがこの時に多くを送信しようとしていないので、我々は、単純に、リモートがスロースタートすることを許容することができるからである) → 我々は、ACK Noに未到着の次の期待されるSeq Noをセットされた3つのDUP ACKを生成するために、次の期待されるSeq Noが前に最後に受信されたパケットから300ms以内に到着しないことをソフトウェア内で検出すると同時に、3つのDUP ACK内で1800バイトのウィンドウ更新を伝える(センダの「ポーズ」+1パケットと同等)ことだけを必要とする:ここで、我々は、3つのDUP ACKがやはりリモートによって戻ってACKされることを期待し、例えば3*OTTest(min)が戻りACKを受信せずに経過する場合にそのたびに1800バイトだけ増分された1800バイトの同一の3つのDUP ACKウィンドウ更新を送信し続けなければならないが、戻りACK又は通常のデータパケットが次に受信される場合には(OTT時間に関わりなく)、前のウィンドウサイズを復元する3つのDUP ACKウィンドウ更新を送信する。   4). The remote sender packet “pending” retransmission is always sent by the software when 300 ms elapses without arriving Seq No> next expected Seq No and missing gap Seq No (s). Detected (ie, it can now be safely assumed that the gap packet has been lost and the remote sender should now finish retransmitting with a slow start pending at the expiration of the RFC 1 second minimum ceiling. → But our MSTCP already generates three DUP ACKs on its own upon receipt of three out-of-order Seq No packets that let the remote re-enter slow start / reenter fast (The remote sender simply happens to send two out-of-order Seq This shouldn't confuse things if you only have No and nothing else, because the remote is not going to send much at this time, we simply throw the remote → we generate the next expected Seq to generate three DUP ACKs with the next expected Seq No not arriving at the ACK No. Communicate 1800 byte window update in 3 DUP ACKs (equivalent to sender's “pause” + 1 packet) at the same time detecting in software that No arrives within 300ms from last received packet Only we need: here we have 3 DUP ACKs also back ACKed by the remote For example, if 3 * OTTest (min) elapses without receiving a return ACK, the same three DUP ACK window updates of 1800 bytes incremented by 1800 bytes each time must continue to be transmitted. Otherwise, if a return ACK or normal data packet is received next (regardless of OTT time), it will send three DUP ACK window updates to restore the previous window size.

(ここで、我々は、レシーバウィンドウサイズを更新するために、早期にパケットドロップを検出するだけであり、これは、センダベースの「ポーズ」+1パケットと同等である)。   (Here, we only detect packet drops early to update the receiver window size, which is equivalent to a sender-based “pause” +1 packet).

5.リモートに高速再送信させる実際のDUP ACKは、すべてがMSTCP自体によって処理される。ソフトウェアは、インターセプトされたMSTCPの2つの追加のDUP ACK(より以前に通常に肯定応答されたものを含める場合には全部で3つ)を検出して、その後、Divisional ACK/DUP ACK/Optimistic ACK技法を介してリモートCWNDを即座に復元することだけを必要とする。http://arstechnica.com/reviews/2q00/networking/networking−3.html及びhttp://www.usenix.org/events/usits99/summaries/を参照されたい。 5. The actual DUP ACK that causes the remote to retransmit fast is all handled by MSTCP itself. The software detects two additional DUP ACKs for intercepted MSTCP (a total of three if they were previously normally acknowledged), and then a Divisional ACK / DUP ACK / Optimistic ACK All that is required is to restore the remote CWND immediately via the technique. http: // artechnica. com / reviews / 2q00 / networking / networking-3. html and http: // www. useix. see org / events / usits99 / summarys / .

(ここで、我々は、MSTCPが2つの追加のDUP ACKを送信する際に、センダベースド「スプーフ」ACKに似たことを行っている)
注: シナリオBは、「ACKing the ACK」が受信されるまで、又は次の通常のデータパケットが受信される(すなわち、ボトルネックが、現在はすべてのリモート送信されたパケットを捨ててはいない)まで同一の3つのDUP ACKを100msおきに送信し続けることによって世話される:「ACKing the ACK」又は次の通常のデータパケットがリモートから受信された時には、我々は、「ACKing the ACK」が受信されるまで、100msおきに、アドバタイズされたウィンドウサイズを復元する3つのDUP ACKを送信し続ける。
(Here we are doing something similar to a sender-based “spoof” ACK when MSTCP sends two additional DUP ACKs)
Note: Scenario B is until “ACKing the ACK” is received or the next regular data packet is received (ie, the bottleneck is not currently discarding all remotely transmitted packets) Taken care of by continuing to send the same three DUP ACKs every 100ms until: "ACKing the ACK" or the next normal data packet is received from the remote, we receive "ACKing the ACK" Until it is done, it will continue to send 3 DUP ACKs every 100ms to restore the advertised window size.

次の場合に、
MSTCPは、必ず、すべての順序はずれのACK(すなわち、まだ送信されていないセグメントを肯定応答するACK)を肯定応答し、さもなければ、ACK Noフィールドのすべてに同一の期待されるSeq番号がセットされている場合に3つのDUP ACKのSeq Noフィールドを含める必要があるはずである(注:DUP Seq Numberパケットは、RFCでは必ずACKされる!?)。
In the following cases:
MSTCP always acknowledges all out-of-order ACKs (ie, ACKs that acknowledge segments that have not yet been transmitted), otherwise all ACK No fields are set to the same expected Seq number. If so, it should be necessary to include the Seq No field of 3 DUP ACKs (Note: DUP Seq Number packets are always ACKed by RFC !?).

我々は、ACK Noフィールドのすべてに同一の次の期待されるSeq番号がセットされたDUP ACK内の100個の以前のSeq Numberフィールド(すなわち、「記録された」次の期待されるACK−100)を回転式に使用するという前に述べた方法を使用してもよく、その結果、DUP ACKは、今や、それぞれ、異なるSeq Noフィールドに、記録された次の期待されるSeq No−100のいずれかをセットされる(2つのDUP ACKが同一のSeq番号を有することはない)。   We have 100 previous Seq Number fields in the DUP ACK with all ACK No fields set to the same expected next Seq number (ie, the “recorded” next expected ACK-100 ) May be used in a rotary manner, so that the DUP ACK is now in the next expected Seq No-100 recorded in a different Seq No field, respectively. Either is set (no two DUP ACKs have the same Seq number).

注:まだ未送信のセグメントの3つのDUP ACKが、必ずしも、リモートMSTCPによるCWND半分化をトリガせず、SSTHRESHに現在のCWNDの半分をセットしない(パケットは、送信済みであるが捨てられている(この場合には、確かにCWNDを半分にして高速再送信を行う)か、まだ送信されていない(この場合には、不必要にCWNDを半分にして高速再送信を行っても行わなくてもよい)かのいずれかである可能性がある)とも仮定され、さもなければ、わずかに不必要な性能減損がある。   Note: 3 DUP ACKs for untransmitted segments do not necessarily trigger CWND halving by remote MSTCP and do not set SSTHRESH to half of current CWND (packet has been sent but discarded) (In this case, CWND is certainly halved and high-speed retransmission is performed) or has not been transmitted yet (in this case, CWND is halved and high-speed retransmission is not performed. It may be either) or there may be a slight unnecessary performance impairment.

輻輳表示としてパケット到着間(Inter−packet−arrival)遅延を使用する方法
この本体の説明で以前に説明した方法、サブコンポーネント方法のどれにおいても、輻輳表示又はパケットドロップ表示を、その代わりに、変更されたTCP/変更されたモニタソフトウェア/変更されたプロキシ/変更されたポートフォワーダ...などによって、パケット到着間の間の遅延、例えば、具体的には、直接に連続するパケットの間の「経過タインインターバル」が、リモート送信ソースTCP又はリモートレシーバTCPから受信された最後のパケット(純ACK又は通常のデータパケット...などのいずれか)以降に、あるユーザ入力インターバル(又は、RTTest、OTTest、RTTest(min)、OTTest(min)...などに基づくものとすることができるあるアルゴリズムから導出される)を超える時を観察することによって、検出し/推論することができる。ここで、各端が同時に送信でき、受信できる対称の間のTCP接続に留意されたく、一端が送信したデータセグメント/データパケット及びそれらに対応する他端からの戻り応答ACK(以下ではサブフローAと称する)を、他端が独立に送信したデータセグメント/データパケット及びそれらの独立の対応する他端からの戻り応答ACK(以下ではサブフローBと称する)と混合することができる:したがって、変更されたTCP/変更されたモニタソフトウェア/変更されたプロキシ/変更されたポートフォワーダ...などは、上記のパケット到着間の遅延を観察する時に、サブフローA及び/又はサブフローBのパケット到着間を完全に独立に「見分け」、別々に観察しなければならない → その結果、一端のすなわちサブフローAの送信データセグメント/データパケットが他端への前方の経路に沿って捨てられ、これによってそれに対応する戻り応答ACKが他端から戻り経路に沿って返されない時に、独立に、戻り経路に沿って到着する他端のすなわちサブフローBの送信データセグメント/データパケットは(存在する場合に)、この端に、今や、独立のサブフローAの「経過時間インターバル」がまだ満了していないと誤って仮定させなくなる。一端の変更されたTCP/変更されたモニタソフトウェア/変更されたプロキシ/変更されたポートフォワーダ...などは、センダとして働く時に、「経過時間インターバル」満了についてパケット到着間遅延についてそれ自体のサブフローAの対応する戻り応答ACKだけを観察し、他端の独立のサブフローの送信セグメント/パケットを無視するはずである。一端の変更されたTCP/変更されたモニタソフトウェア/変更されたプロキシ/変更されたポートフォワーダ...などは、レシーバとして働く時に、「経過時間インターバル」満了についてパケット到着間遅延について他端自体のサブフローBの着信セグメント/パケットを観察するだけであり、この端自体の独立のサブフローAの(存在する場合に)対応する到着する返される応答ACKストリームを無視する。このタスクは、十分に単純でなければならない:一端は、センダベースドとして働く時には、「経過時間インターバル」満了について「インターパケットインターバル」遅延についてそれ自体の送信パケットの対応する着信戻り応答ACKを監視することだけを必要とするが、レシーバベースドとして働く時には、他端の送信データセグメント/データパケットを監視することだけを必要とするはずである:さらに、その「インターパケットインターバル」遅延が今や「経過時間インターバル」満了した他端からの、この端の独立サブフローの送信パケットの対応する戻り応答ACKの「経過時間インターバル」満了の前に、他端の独立のサブフローの送信パケットが到着し続ける場合には、これは、それ相応に反応するために、他端からこの端への一方向経路が「UP」であることと、この端から他端への一方向経路が「DOWN」であることとの追加の確かな表示/確かな推論を提供するはずである。これは、例えば、RTTest又はOTTest又はRTTest(min)又はOTTest(min)...などよりはるかに小さい「経過時間インターバル」を指定でき、輻輳イベント及び/又はパケットドロップイベント及び/又は物理送信エラーイベントを検出でき/推論できることによるはるかにより高速のレートの応答時間を可能にするという利益を有する(非輻輳RTT、OTTなどでさえ、インターネット上で数百ミリ秒になる可能性があり、確認できず、あるいは、その最大限界が、前もって確認できないが、パケットの最後の受信からの上記の経過時間インターバルは、数百ミリ秒ではなく例えば50msもの小さい値になるように選択することができる)。
Method of using inter-packet-arrival delay as a congestion indication In any of the methods and subcomponent methods previously described in this body description, the congestion indication or packet drop indication is changed instead. Modified TCP / modified monitor software / modified proxy / modified port forwarder. . . The delay between packet arrivals, eg, specifically, the “elapsed tine interval” between consecutive packets directly, is the last packet received from the remote source TCP or remote receiver TCP (pure net May be based on some user input interval (or RTTest, OTTest, RTTest (min), OTTest (min),...) After the ACK or normal data packet, etc. Can be detected / inferred by observing times exceeding (derived from the algorithm). Here, it should be noted that the TCP connections are symmetrical between each end that can be transmitted and received at the same time. The data segment / data packet transmitted by one end and the return response ACK from the other end corresponding thereto (hereinafter referred to as subflow A) Can be mixed with the data segment / data packet that the other end independently transmitted and the return response ACK (hereinafter referred to as subflow B) from their independent corresponding other end: TCP / modified monitor software / modified proxy / modified port forwarder. . . Etc., when observing the delay between the above packet arrivals, it must “distinguish” between the packet arrivals of subflow A and / or subflow B completely independently, and observe them separately. Independently along the return path, when A's transmitted data segment / data packet is discarded along the forward path to the other end, so that no corresponding return response ACK is returned from the other end along the return path. The other end, ie, subflow B's transmitted data segment / data packet (if any) arrives at this end incorrectly assuming that the independent subflow A's “elapsed time interval” has not yet expired. I will not let you. Modified TCP / modified monitor software / modified proxy / modified port forwarder at one end. . . Etc., when acting as a sender, only observe the corresponding return response ACK of its own subflow A for the inter-packet delay for the “elapsed time interval” expiration and ignore the transmission segment / packet of the independent subflow at the other end It should be. Modified TCP / modified monitor software / modified proxy / modified port forwarder at one end. . . Only observe the incoming segment / packet of the other end's own subflow B for the inter-packet delay for the expiration of the “elapsed time interval” when acting as a receiver, and this end's own independent subflow A (exists) In case) ignore the corresponding arriving returned response ACK stream. This task must be simple enough: one end, when acting as a sender-based, monitors the corresponding incoming return response ACK of its own transmitted packet for "interpacket interval" delay for "elapsed time interval" expiration Only when it acts as a receiver-based, it should only need to monitor the transmitted data segment / data packet at the other end: In addition, its “interpacket interval” delay is now “elapsed time” If the transmission packet of the independent subflow at the other end continues to arrive before the expiration of the "elapsed time interval" of the corresponding return response ACK of the transmission packet of the independent subflow at this end from the other end at which the "interval" expires This can be done from the other end to react accordingly. And that the one-way path to the end is "UP", should one-way path from the end to the other end to provide a solid display / definite inference of additional and it is a "DOWN". For example, RTTest or OTTest or RTTest (min) or OTTest (min). . . The benefit of allowing much faster rate response times by being able to specify "elapsed time intervals" much smaller than, etc., and to detect / infer congestion and / or packet drop events and / or physical transmission error events (Even even non-congested RTT, OTT, etc. can be hundreds of milliseconds on the Internet and cannot be confirmed, or its maximum limit cannot be confirmed in advance, but the above from the last reception of the packet The elapsed time interval can be selected to be as small as 50 ms, for example, instead of a few hundred milliseconds).

例えばftp/httpウェブサイトダウンロード中に、通常のデータパケットは、RTOパケット再送信がCWNDを1又はセグメントサイズにリセットされたスロースタートに再入することによって中断されない時に、継続的に送信される。この場合のパケットによってトラバースされる経路の最低帯域幅リンクが、送信するソースTCPのファーストマイルの最低帯域幅リンク、例えば500Kbs DSLであると仮定すると、単一のパケットが送信するソースからDSL伝送媒体に完全に出るための送信時間遅延は、この場合には重要な要因ではないはずであり、小さく、例えば、大きい1500バイトイーサネットサイズを有するパケットについて24msである(1500*8/500000=24ms)。一方、ラストマイルの56Kbsモデムダイヤルアップについて、通常の500バイトパケットの送信遅延時間は、約71msになるはずである(500*8/56000=71ms)。今日のインターネットでは、パケットによってトラバースされる経路に沿った最低の可能な帯域幅のリンクは、ワーストケースシナリオで56Kbsになるはずである。デフォルトパケットサイズは、通常は接続確立中にTCPによってネゴシエートされるとおり、通常は約500バイトである。「パケット到着間」法(及び/又は「同期化」パケット法、後のセクションを参照されたい)は、この経路に沿った56kbs最低帯域幅リンクの仮定及びネゴシエートされた最大パケットサイズに基づく「経過時間インターバル」値セッティング及び「同期化」インターバル値セッティングから開始し、その後、通常のデータパケットの間(又は実際に送信されたデータパケットに関するACKの間)の受信されたパケット到着間インターバルの実際に観察された最新の最小値を監視し続けて、「経過時間インターバル」値セッティング及び「同期化」インターバル値セッティングを動的に調整することができ、例えば、最新の最小「パケット到着間」インターバルが、現在は20msに過ぎない場合に、「経過時間インターバル」値に現在は例えば80msをセットすることができ、「同期化」インターバル値に現在は例えば40msをセットすることができ...などであり、あるいは、考案されるアルゴリズムに基づいて導出することができる。データパケットが送信するソースTCPから継続的に送信され、レシーバTCPで受信される時のパケット間間隔は、トラバースされたリンクがさまざまな遅延及び/又はバッファ遅延を導入した場合であっても、それぞれ24ms又は71ms前後を中心とする上と同一のパケット到着間間隔と、ノードがストアアンドフォワードスイッチング(ストアアンドフォワードと比較して、各ノードで出会う単一パケット送信時間遅延を表すはずのカットスルースイッチングではなく)を使用する場合にトラバースされる経路に沿った各ノードで出会う単一パケット送信時間遅延に起因するインターバルの総量との合計を示さなければならない。というのは、これが、バッファ遅延がもちろん続く次のパケットに前のパケットからの余分の例えば200msを非常に突然に即座に追加せず(すなわち、追加のバッファ遅延は各連続する続くパケットに連続的に徐々に追加されるはずである)パケットがルートに沿って捨てられず/失われない(そうである場合には、これは、この続くパケットに直前の送信されたパケットからの「無限の」遅延を追加し、この続くパケットは捨てられ/失われる可能性がある)と仮定すると、データパケットに均一に影響し、これらのデータパケットは、それぞれ上記の24ms又は71ms付近を中心として離隔されてレシーバに到着するからである(我々は、この輻輳イベント及び/又はパケットロスイベント及び/又は物理送信エラーイベントを、パケット間遅延が現在突然にある値、例えば100msを超えることすなわち、最後のパケットが受信されてから100msであることすなわち、100msが直接に続くパケットすなわち正しい次の期待されるシーケンス番号を有するパケットを受信せずに経過したことを観察することによって検出し/推論することができる:しかし、他の後の続くパケットをこの100ms以内に受信でき、且つ、この特定の直接に続くパケットが受信されない場合であっても、我々は、望まれる場合に、同様に、これを「ギャップ」輻輳イベント及び/又はパケットドロップイベント及び/又は物理送信エラーイベントとみなし、同様の又はわずかに異なる形で処理することができる)。   For example, during ftp / httpt website downloads, regular data packets are continuously transmitted when RTO packet retransmissions are not interrupted by re-entering slow start with CWND reset to 1 or segment size. Assuming that the lowest bandwidth link of the path traversed by the packet in this case is the lowest bandwidth link of the source TCP's first mile to send, eg 500 Kbs DSL, the DSL transmission medium from the source sending a single packet The transmission time delay to fully exit should not be a significant factor in this case, and is small, for example 24 ms for packets with a large 1500 byte Ethernet size (1500 * 8 / 500,000 = 24 ms). On the other hand, for the last mile 56 Kbs modem dialup, the transmission delay time of a normal 500 byte packet should be about 71 ms (500 * 8/56000 = 71 ms). In today's Internet, the lowest possible bandwidth link along the path traversed by a packet should be 56 Kbs in the worst case scenario. The default packet size is typically around 500 bytes, as negotiated by TCP during connection establishment. The “inter-packet arrival” method (and / or the “synchronized” packet method, see later sections) is based on the assumption of the 56 kbps minimum bandwidth link along this path and the maximum packet size negotiated. Start with the "time interval" value setting and the "synchronization" interval value setting, and then the actual interval between received packet arrivals during normal data packets (or during ACK for actually transmitted data packets) You can continue to monitor the latest observed minimum value and dynamically adjust the “Elapsed Time Interval” value setting and the “Synchronization” interval value setting, for example, the latest minimum “inter-packet arrival” interval If the current value is only 20 ms, the “Elapsed time interval” value will be displayed. Is, for example, 80ms can be set, to "synchronize" interval value now can be set, for example, 40ms. . . Or can be derived based on an devised algorithm. The interpacket spacing when data packets are continuously sent from the sending source TCP and received at the receiver TCP, even if the traversed link introduces various delays and / or buffer delays, respectively. Same packet arrival interval as above, centered around 24 ms or 71 ms, and cut-through switching that should represent the single packet transmission time delay that each node encounters compared to store-and-forward switching (store-and-forward) The total amount of intervals due to the single packet transmission time delay encountered at each node along the path traversed. This is because it does not immediately add an extra, for example, 200 ms from the previous packet very suddenly to the next packet of course followed by a buffer delay (ie, the additional buffer delay is continuous to each successive packet). Packets are not dropped / lost along the route (if so, this is “infinite” from the previous transmitted packet to this subsequent packet) Assuming additional delay and this subsequent packet may be discarded / lost), it will affect the data packets uniformly, and these data packets will be separated around the 24ms or 71ms above respectively. Because we arrive at the receiver (we will not receive this congestion event and / or packet loss event and / or physical transmission error event If the inter-packet delay is suddenly above a certain value, eg 100 ms, ie 100 ms since the last packet was received, ie a packet with 100 ms followed directly, ie a packet with the correct next expected sequence number. Can be detected / infered by observing that it has passed without receiving: but if other subsequent subsequent packets can be received within this 100ms, and this particular directly following packet is not received Even so, we will treat this as a “gap” congestion event and / or a packet drop event and / or a physical transmission error event, and handle it in a similar or slightly different manner, if desired. Is possible).

ノードがストアアンドフォワードスイッチング(ストアアンドフォワードと比較して、各ノードで出会う単一パケット送信時間遅延を表すはずのカットスルースイッチングではなく)を使用する場合にトラバースされる経路に沿った各ノードで出会う単一パケット送信時間遅延に起因するインターバルの総量は、トラバースされる経路に沿ったノードが高帯域幅容量リンクである場合(カットスルースイッチングではなくストアアンドフォワードスイッチングが使用される場合であっても)の2〜3ミリ秒から、トラバースされるリンクが低帯域幅容量である場合の数十又は2〜3百ミリ秒まで変化し得る。例えば、500Kbsファーストマイル、10Mbsの次のリンク、100Mbsの次のリンク、10Mbsの次のリンク、及び500Kbs DSLの最後のレシーバラストマイルリンクに関して、ここではトラバースされるノードのそれぞれでの輻輳バッファ遅延が全くないと仮定されるカットスルースイッチングと比較してすべてがストアアンドフォワードスイッチングを実施するノードを有する転送するリンクの各連続するステージで単一の1500バイトサイズパケットが出会う総送信完了時間遅延は、約24ms+1.2ms+0.12ms+1.2ms+24ms=50.52msになるはずである、すなわち、最終的にデスティネーションで受信される時に、パケット到着間インターバルは、直接に連続するパケットの間で50.52ms付近を中心とするはずである。一方、56Kbsファーストマイルモデムリンク、10Mbsの次のリンク、100Mbsの次のリンク、10Mbsの次のリンク、及び最後に56Kbsレシーバラストマイルモデムリンクに関して、ここではトラバースされるノードのそれぞれで輻輳バッファ遅延が全くないと仮定されるカットスルースイッチングと比較してすべてがストアアンドフォワードスイッチングを実施するノードを有する転送するリンクの各連続するステージで単一の500バイトサイズパケットが出会う総送信完了時間遅延は、約71ms+0.4ms+0.04ms+0.4ms+71ms=142.84msになるはずである、すなわち、最終的にデスティネーションで受信される時に、パケット到着間インターバルは、直接に連続するパケットの間で50.52ms付近を中心とするはずである。パケットがソースからデスティネーションに最終的に到着する時間を増やし、はるかに後に送信されたパケット(すなわち、参照される、より以前に送信されたパケットに直接に続く次のパケットではなく、例えば数秒又は数十秒をまたぐ)がデスティネーションレシーバに実際に到着するのに、はるかにより以前の参照される送信されたパケットより例えば300ms長い時間を要するようにさせる場合がある任意の輻輳バッファ遅延は、トラバースされるノードで出会う累積輻輳バッファ遅延によって引き起こしたが、しかし、任意の2つの直接に連続する次の送信パケットと直前の送信パケットとの間で、直前の送信パケットと比較して直接に続く次のパケットが出会う「余分の」増加した累積輻輳バッファ遅延は、例えば3msに過ぎない、すなわち、離れた数秒にまたがる2つの離れた送信パケットの間の、上記の例えば300msより数桁非常にはるかに小さい可能性があるので(ここでは輻輳レベルが高まりつつあると仮定するが、同一の論法が、輻輳レベルが下がりつつある場合に同様にあてはまる)。この「余分」の追加の輻輳バッファ遅延は、直接に続く次のパケットとその直前の送信パケットとの間と同様に小さいはずであり、直接に続く次のパケットとその直前の対応物との任意の後続の対の間で徐々に増加するだけであるはずである。直接に続く次のパケットとその直前の対応物との任意の後続の対の間の、この可能な余分の少ない量の輻輳バッファ遅延は、輻輳レベルが安定し/直接に隣接するその後に送信される対の他の後続対の間で均等に平滑化される場合には小さく、均等に中和されるけれども、しかし、輻輳イベント及び/又はパケットドロップイベント及び/又は物理送信エラーイベントを検出し/推論するために、センダソースTCPから次の/直接に次のパケットを受信していない時に経過時間期間値を選択し/導出する時に考慮しなければならない/考慮することができる。しかし、非常に希な場合に、輻輳レベルは、例えば着信リンクが100Mbs且つ発信リンクがわずか10Mbs...などである時などに、短い期間、例えば100ms以内に例えば200msのバッファ遅延を突然に築き上げることができ(不可能ではない)、その場合に、我々は、ここで、便利に、輻輳イベント及び/又はパケットドロップイベント及び/又は物理送信エラーイベントに加えて、この非常に希な非常に突然の輻輳バッファ遅延イベントを検出し/推論するために、経過時間インターバルを考慮するシナリオを含めることができる。直接に続く次のパケットとその直前の対応物との任意の後の後続のさらなる送信される対の間と同様に、この突然の非常に希な輻輳レベル増加は、今はもう、突然の輻輳増加が安定し/直接に隣接する後に送信される対の他の後続のさらなる送信される対の間で均等に平滑化される時に、「経過時間インターバル」に均等に中和されて満了させることをしなくなるはずであることに留意されたい。   At each node along the path traversed when the node uses store-and-forward switching (rather than cut-through switching that should represent a single packet transmission time delay encountered at each node compared to store-and-forward) The total amount of interval due to the single packet transmission time delay encountered is when the nodes along the traversed path are high bandwidth capacity links (when store-and-forward switching is used instead of cut-through switching). 2) to a few tens or two to three hundred milliseconds when the traversed link has a low bandwidth capacity. For example, for 500 Kbs first mile, 10 Mbs next link, 100 Mbs next link, 10 Mbs next link, and 500 Kbs DSL last receiver last mile link, here the congestion buffer delay at each traversed node is The total transmission completion time delay that a single 1500 byte size packet encounters at each successive stage of a forwarding link with nodes that all perform store-and-forward switching compared to cut-through switching that is assumed to be none is It should be approximately 24 ms + 1.2 ms + 0.12 ms + 1.2 ms + 24 ms = 50.52 ms, ie when finally received at the destination, the inter-packet arrival interval is directly between successive packets. It should be centered around 0.52ms. On the other hand, for 56Kbs first mile modem link, 10Mbs next link, 100Mbs next link, 10Mbs next link, and finally 56Kbs receiver last mile modem link, here the congestion buffer delay at each of the traversed nodes The total transmission completion time delay that a single 500 byte size packet encounters at each successive stage of the forwarding link with nodes that all perform store-and-forward switching compared to cut-through switching that is assumed to be none is It should be about 71 ms + 0.4 ms + 0.04 ms + 0.4 ms + 71 ms = 142.84 ms, i.e., when finally received at the destination, the inter-packet arrival interval is directly between successive packets. It should be centered around 0.52ms. Increase the time at which the packet finally arrives from the source to the destination, for example a few seconds or more, rather than the next packet sent directly after (i.e., the referenced previous packet sent earlier) Any congestion buffer delay that may cause a much longer time to arrive at the destination receiver (for example, 300 ms longer than the earlier referenced transmitted packet) is Caused by the cumulative congestion buffer delay encountered at the node that is encountered, but between any two directly consecutive next transmitted packets and the immediately preceding transmitted packet as compared to the immediately preceding transmitted packet The “extra” increased cumulative congestion buffer delay that Not, i.e. it may be much smaller than the above, eg 300ms, between two separate transmitted packets that span several seconds apart (assuming that the congestion level is increasing here, The same reasoning applies as well when congestion levels are decreasing). This “extra” additional congestion buffer delay should be as small as between the next packet that immediately follows and the packet that immediately precedes it, and it is optional between the next packet that immediately follows and its immediately preceding counterpart. It should only increase gradually between subsequent pairs of. This possible extra small amount of congestion buffer delay between any subsequent pair of the next packet that immediately follows and its immediately preceding counterpart is transmitted after the congestion level is stable / directly adjacent. Small, even if neutralized evenly between other subsequent pairs of the same pair, but detects / congests and / or packet drop events and / or physical transmission error events. To infer, it must / can be taken into account when selecting / deriving an elapsed time period value when the next / directly next packet is not received from the sender source TCP. However, in very rare cases, the congestion level can be, for example, 100 Mbps for incoming links and only 10 Mbps for outgoing links. . . For example, a buffer delay of, for example, 200 ms can be built up suddenly within a short period of time, eg, 100 ms (not impossible), in which case we can now conveniently refer to congestion events and / or Or, in addition to packet drop events and / or physical transmission error events, scenarios that consider elapsed time intervals can be included to detect / infer this very rare and very abrupt congestion buffer delay event. This sudden very rare congestion level increase is now no longer a sudden congestion, as between any subsequent subsequent transmitted pairs of the next packet directly following and its immediately preceding counterpart. When the increase stabilizes and is evenly smoothed between other subsequent further transmitted pairs after a pair that is transmitted immediately adjacent, it is evenly neutralized to the “elapsed time interval” to expire. Note that you shouldn't.

TCP接続が全二重である、すなわち、接続の両端のそれぞれが、同時にセンダソースTCP及びレシーバTCPとして送信し、且つ受信していることができることに留意されたい。例えばftpファイルダウンロード/httpウェブページダウンロード...など、接続の1つの端だけが、通常のデータパケットの送信のほとんどすべて又はすべてを行っている場合であっても、受信端TCPは、必ず、受信された通常のデータパケットに応答して、通常のデータパケットの送信のほとんどすべて又はすべてを行っている端のTCPに向けて肯定応答を送り返しているはずである。この故に、上記の前述の段落で概要を示した「経過時間インターバル」法は、「経過時間インターバル」が、ダウンロードを受信している他端のTCPから純ACKパケット及び/又はピギーバックACKパケットを受信せずに満了する際に、通常のデータパケットの送信のほとんどすべて又はすべてを行っている端のTCPが、今や、輻輳イベント及び/又はパケットドロップイベント及び/又は物理送信エラーイベント及び/又は「非常に希な」「非常に突然の」輻輳レベル増加イベントの検出を推論でき、それ相応に反応できるという点で、通常のデータパケットの送信のほとんどすべて又はすべてを行っている端のTCPに同様に適用される。しかし、この場合に、レシーバ端TCPが、Delayed Acknowledgement(1つおきのパケット又は200ms満了のどちらが先であれ、それが発生した時に生成されるACK)を実施し、このDelayed ACKオプションが、特定のフローごとのTCP接続についてアクティブ化される時に、選択されるかアルゴリズム的に導出される「経過時間インターバル」値のセッティングにおいて、Delayed ACK機構によって導入される可能な追加の200ms遅延を含めるために考慮を払わなければならず、例えば、Delayed ACKの場合に、「経過時間インターバル」は、200msを加算されなければならず、あるいは、任意選択として、「経過時間インターバル」に200msを加算するのではなく、その代わりに、この出会ったワーストケースの200ms遅延イベントを、「経過時間インターバル」満了時に推論可能な/検出されるさまざまなイベントの間に含める。このイベントは、希であり、例えばレシーバ端TCPへのパケットのセンダソースTCP送信によどみがある時などに発生するはずであり、したがって、ワーストケースDelayed ACKシナリオに起因してスループット性能に大きくは影響しないはずである。   Note that the TCP connection is full-duplex, i.e., both ends of the connection can simultaneously transmit and receive as sender source TCP and receiver TCP. For example, ftp file download / http web page download. . . Even if only one end of the connection is doing almost all or all of the transmission of normal data packets, the receiving end TCP always responds to received normal data packets, It should have sent an acknowledgment back towards the end TCP that is doing almost all or all of the normal data packet transmission. For this reason, the “Elapsed Time Interval” method outlined in the previous paragraph above is that the “Elapsed Time Interval” is a pure ACK packet and / or a piggyback ACK packet from the TCP at the other end receiving the download. When expiring without receiving, the end TCP, which is doing almost all or all of the normal data packet transmissions, now has congestion events and / or packet drop events and / or physical transmission error events and / or “ Similar to end-of-the-edge TCP doing almost all or all of normal data packet transmission in that it can infer the detection of very rare and “very sudden” congestion level increase events and react accordingly Applies to However, in this case, the receiver end TCP performs a Delayed Acknowledgment (an ACK that is generated when every other packet or 200 ms expires first), and this Delayed ACK option is set to a specific Considered to include a possible additional 200 ms delay introduced by the Delayed ACK mechanism in the setting of an “elapsed time interval” value that is selected or algorithmically derived when activated for a per-flow TCP connection For example, in the case of Delayed ACK, the “Elapsed Time Interval” must be added with 200 ms, or, optionally, 200 ms is added to the “Elapsed Time Interval” No, instead, a 200ms delay events of this met worst case, included among the various events to be inferred that can be / detection at the time of expiration "elapsed time interval". This event is rare and should occur, for example, when there is a stagnation of the sender-source TCP transmission of the packet to the receiver end TCP, and thus has a significant impact on throughput performance due to the worst case Delayed ACK scenario. Should not.

次のパケットを受信せずに「経過時間インターバル」が満了する時の上記のイベントの検出/推論の際に(ここで、我々は、情報を一切必要とせず、任意選択でRTT、OTT...などの使用を全く必要とせず、ヒストリカルRTT値に基づくRTO計算を必要とせず(その代わりに、実際のパケット再送信タイムアウトを、例えばあるユーザ入力値又は例えばヒストリカルパケット到着間インターバル値...などに基づくアルゴリズムから導出される値に基づいて、トリガすることができる)、任意選択として、そのような要件を、今は要件に対する冗長な余りなので、変更されたTCPから除去することができることに留意されたい)、変更されたTCP/変更されたソフトウェアモニタ/変更されたプロキシ/変更されたIPフォワーダ/変更されたファイヤウォール...などは、本説明における先の方法/サブコンポーネント方法で記述した、CWND減少/レート減少と同時の既存の結合された実際のパケット再送信、及び/又は実際のパケット再送信だけが付随しない変更された分離されたCWND減少/レート減少、及び/又は付随するCWND減少/レート減少を伴う又は伴わないさまざまな変更された「ポーズ」法...などに進むことができる。上記のプロセスが、「パケット間インターバル」遅延の「経過時間インターバル」が満了した時にトリガされたならば、その後に、送信するソースTCPからの同一サブフローから次に到着する到着するパケットの際に、そのトリガされたプロセスを、即座に又は任意選択としてある定義されたインターバルの後にのいずれかに終了することができ、CWNDサイズ/レートリミットを、「経過時間インターバル」が満了する前の以前の値に任意選択で復元することができ、且つ/又は、任意選択で、進行中の「ポーズ」を「アンポーズ」すること...などができる。このパケットの到着は、今や、センダソースTCPからレシーバTCPへの経路が、現在、すべてのパケットを捨てる完全な輻輳ではないことを示す:任意選択として、我々は、さらに、通常のデータが、正しい次の期待されるシーケンス番号を有するまさに次の期待されるパケットでなければならない場合に、及び/又は純ACKパケットが、そのSequence Numberフィールド=センダソースTCPからレシーバTCPに受信された最後に受信された有効なシーケンス番号(又は、レシーバTCPからセンダソースTCPに送信された最新の最大の有効な肯定応答番号−1)を有しなければならない場合に、この到着するパケットを要求することができる。   Upon detection / inference of the above event when the “Elapsed Time Interval” expires without receiving the next packet (where we do not require any information and optionally RTT, OTT. Etc. and no RTO calculation based on historical RTT values (instead of the actual packet retransmission timeout, e.g. some user input value or e.g. historical packet arrival interval value ...). Can optionally be triggered based on a value derived from an algorithm based on, etc.), optionally, such a requirement can now be removed from the modified TCP because it is now a redundant remainder to the requirement Note) modified TCP / modified software monitor / modified proxy / modified IP Over da / modified firewall. . . Etc., as described in the previous method / subcomponent method in this description, are modified without existing combined actual packet retransmissions and / or actual packet retransmissions at the same time as CWND reduction / rate reduction. Various modified “pause” methods with or without separate CWND reduction / rate reduction and / or concomitant CWND reduction / rate reduction. . . And so on. If the above process was triggered when the "Elapsed Time Interval" of the "Interpacket Interval" delay expired, then on the next arriving packet from the same subflow from the sending source TCP, The triggered process can be terminated either immediately or after some defined interval as an option, and the CWND size / rate limit is set to the previous value before the “elapsed time interval” expires. And / or optionally “unpause” the ongoing “pause”. . . And so on. The arrival of this packet now indicates that the path from the sender source TCP to the receiver TCP is not currently full congestion that throws away all packets: As an option, we also have normal data correct If it must be the very next expected packet with the next expected sequence number, and / or a pure ACK packet is received last from its Sequence Number field = sender TCP to receiver TCP This incoming packet can be requested if it has to have a valid sequence number (or the latest maximum valid acknowledgment number -1 sent from the receiver TCP to the sender source TCP).

同様に、変更されたTCP/変更されたソフトウェアモニタ/変更されたプロキシ/変更されたIPフォワーダ/変更されたファイヤウォール...などは、任意選択として及び/又はさらに、この本体の説明の以前の方法/サブコンポーネント方法で説明した、CWND減少/レート減少と同時の既存の結合された実際のパケット再送信、及び/又は実際のパケット再送信の付随だけが伴わない変更された分離されたCWND減少/レート減少、及び/又は付随するCWND減少/レート減少を伴う又は伴わないさまざまな変更された「ポーズ」法...などを他端のTCPに実行させることに進むことができる。あるいは、変更されたTCP/変更されたソフトウェアモニタ/変更されたプロキシ/変更されたIPフォワーダ/変更されたファイヤウォール...などは、任意選択として及び/又はさらに、その後、本説明における先の方法/サブコンポーネント方法で記述した、CWND減少/レート減少と同時の既存の結合された実際のパケット再送信、及び/又は実際のパケット再送信の付随だけが伴わない変更された分離されたCWND減少/レート減少、及び/又は付随するCWND減少/レート減少を伴う又は伴わないさまざまな変更された「ポーズ」法...などを他端のTCPに実行させる(ローカルTCPにそれを全く行わせずに!。そのような機能は、例えば、通常のデータパケット送信のほとんどすべて又はすべてを行う他端のTCPが、既存の未変更の標準TCPである時に有用であるはずである)ことに進むことだけができる。上記のプロセスが、「経過時間インターバル」が満了した時にトリガされたならば、他端のTCPからの同一のサブフローから到着する到着するパケットの際に、上記のトリガされたプロセスを、即座に又は任意選択としてある定義されたインターバルの後にのいずれかに終了することができ、CWNDサイズ/レートリミットを、「経過時間インターバル」が満了する前の以前の値に任意選択で復元することができ、且つ/又は、任意選択で、進行中の「ポーズ」を「アンポーズ」すること...などができる。他端のTCPが、既存の未変更のTCPであるか、まだそのような機構を可能にするために特に変更されてはいない場合に、他端のTCPに、リモートTCP/リモートアプリケーション/リモートプロセスのために、あるプロトコルコマンドを介して直接に、その他端のTCPの内部CWNDサイズ/送信レートを変更させることは、たやすく実現できない。しかし、他端のTCPが、既存の未変更のTCPであるか、まだそのような機構を可能にするために特に変更されてはいない場合であっても、他端のTCPに、この本体の説明のさまざまな以前の方法/サブコンポーネント方法で概要を示したように、「ポーズ」させ、且つ/又は「アンポーズ」させ、且つ/又は「ポーズ」するが定義された最大個数のバイト/パケットの送信を可能にさせる...ことなどはたやすく実現でき、例えば、他端のTCPでさまざまな「ポーズ」を引き起こすための「0」バイト及び/又は「1600バイト」...などのレシーバウィンドウサイズ更新パケットの送信、他端のTCPを「アンポーズ」させ/その通常動作を復元するための「トリガされた」イベントの前の以前のサイズのレシーバウィンドウサイズ更新パケットの送信...などがたやすく可能である(外部インターネットを介して働くためのTCP変更の実施に関する以前のセクションをも参照されたい)。 Similarly, modified TCP / modified software monitor / modified proxy / modified IP forwarder / modified firewall. . . Etc. as an option and / or in addition, as described in the previous method / subcomponent method of the description of this body, the existing combined actual packet retransmission at the same time as the CWND reduction / rate reduction, and / or the actual Modified isolated CWND reduction / rate reduction with or without accompanying packet retransmission and / or various modified “pause” methods with or without accompanying CWND reduction / rate reduction. . . Or the like can be executed by the TCP at the other end. Alternatively, modified TCP / modified software monitor / modified proxy / modified IP forwarder / modified firewall. . . Etc. as an option and / or afterwards, as described in the previous method / subcomponent method in this description, and the existing combined actual packet retransmission simultaneously with CWND reduction / rate reduction, and / or actual Modified isolated CWND reduction / rate reduction with or without accompanying packet retransmission and / or various modified “pause” methods with or without accompanying CWND reduction / rate reduction. . . To the other end TCP (without doing it at all to the local TCP !. Such a function can be used, for example, if the other end TCP performs almost all or all of the normal data packet transmission. It should only be possible to go to (which should be useful when it is an unmodified standard TCP). If the above process is triggered when the “Elapsed Time Interval” expires, the triggered process is either immediately or upon arrival packets arriving from the same subflow from the other end TCP. Can optionally end either after a defined interval, the CWND size / rate limit can optionally be restored to its previous value before the “elapsed time interval” expires, And / or optionally “unpause” the ongoing “pause”. . . And so on. Remote TCP / remote application / remote process on the other end TCP if the other end TCP is an existing unchanged TCP or has not yet been modified to allow such a mechanism For this reason, it is not easy to change the internal CWND size / transmission rate of the TCP at the other end directly via a certain protocol command. However, even if the TCP at the other end is an existing unmodified TCP or has not yet been specifically modified to allow such a mechanism, As outlined in the various previous methods / subcomponent methods of the description, the “pause” and / or “unpause” and / or “pause” defined maximum number of bytes / packets Enable transmission. . . Can be easily implemented, for example, “0” bytes and / or “1600 bytes” to cause various “pauses” in the TCP at the other end. . . Send receiver window size update packet, etc., send receiver window size update packet of previous size before “triggered” event to “unpause” TCP at other end / restore its normal operation. . . (See also the previous section on implementing TCP changes to work over the external Internet ).

独立に及び/又は任意選択として、前述のさまざまな方法、例えば「経過時間インターバル」法に加えて、既存の又は先に説明したTCP/モニタソフトウェア/TCPプロキシ/IPフォワーダ/ファイヤウォール...などを、変更し/さらに変更して、TCP接続の両方の変更された端のそれぞれが、他方の変更された端への「同期化」データパケットを自動的に生成する(又は、単にTCP接続の一方の変更された端が、他方の未変更の又は変更された端への「同期化」データパケットを自動的に生成する)ことを保証することができ、例えば、同一サブフローの単一パケットが他端のTCPに向けて送信されずに「同期化」インターバルが満了する時に必ず、「同期化する」パケットを生成し、他端のTCPに送信することによって、必要な場合に少なくともすべての「同期化する」インターバル期間に他端の変更されたTCPに向けて送信される1つのパケットが必ずあることが保証される(例えば、「経過時間インターバル」選択された値の半分、又は、単一のパケットが伝送媒体に完全に出るためのパケットのトラバースした経路の最低帯域幅リンクの送信時間遅延*被乗数のうちの大きい方:ここでの「経過時間インターバル」値が、必ず上記の「同期化」値より大きくなければならないことに留意されたい)。したがって、両端が、変更され、それぞれが、他方の変更された端に「同期化」パケットを送信する場合に、両方の変更された端のTCPの各端は、サブフローの「経過時間インターバル」が満了し、且つ、同一サブフローからのどのタイプのパケットも(サブフローの生成された「同期化」パケットタイプを含む)他端のTCPから受信されていない時に、他端からローカル端TCPへの一方向経路が、輻輳イベント及び/又はパケットドロップイベント及び/又は物理送信エラーイベント及び/又は非常に希な非常に突然の輻輳レベル増加イベント(しかし、ここでは希な200ms Delayed ACKイベントを含まない:さらに、両端のうちの一方だけが、変更され、他方の未変更の端のTCPに例えば他方の未変更の端のTCPから戻る戻り応答ACKを誘発する通常ウィンドウの外のDUP Sequence Numberパケットの形で「同期化パケット」を送信する場合に、ローカルの変更された端のTCPは、ローカルの変更された端のTCPと他方の未変更の端のTCPとの間の転送する経路又は戻る経路のいずれかが(どちらであるかは確かには知らない)、輻輳イベント及び/又はパケットドロップイベント及び/又は物理送信エラーイベント及び/又は非常に希な非常に突然の輻輳レベル増加イベント(しかし、ここでは希な200ms Delayed ACKイベントを含まない)に出会っていることを即座に知り/推論し/検出することだけができるはずである)に出会っていることを即座に知り/推論し/検出するはずである。一端から他端へ及び/又は他端からこの端への一方向経路がこの時に確かに「UP」又は確かに「DOWN」であることのこの追加の確かな検出/確かな推論は、それ相応によりよく反応するのに有用であるはずである。これは、戻り一方向経路がたまたま「DOWN」である場合に、進む一方向経路が「UP」又は「DOWN」であるかどうかを知るすべが全くないことに留意すれば、実用的に有用に利用されてもされなくてもよい。また、失われた/捨てられたが、例えば他のより後の順序はずれの物理的に到着するパケットが「経過時間インターバル」内に到着することに起因して、パケット到着間(物理的に到着するパケットの)遅延「経過時間期間」を満了させなかった、すべての欠けている「ギャップ」パケットは、通常は、通常の3つのDUP ACK高速再送信機構を介して世話されるはずであり:代替案で、パケット到着間遅延「経過時間インターバル」機構が、その代わりに、隣接した順序通りの先行送信パケット(パケットのシーケンス番号による順序付けによるなど...)の到着時刻から「経過時間インターバル」以内に受信されない場合に、すべての欠けている「ギャップ」パケットが「経過タイムアウト」満了をトリガしなければならないと主張することができる...などであることに留意されたい。   Independently and / or optionally, in addition to the various methods described above, such as the “Elapsed Time Interval” method, existing or previously described TCP / Monitor Software / TCP Proxy / IP Forwarder / Firewall. . . And so on, each modified end of the TCP connection automatically generates a “synchronized” data packet to the other modified end (or simply a TCP connection) One modified end of the network automatically generates a "synchronized" data packet to the other unmodified or modified end), eg, a single packet of the same subflow Is not sent towards the other end of the TCP, and whenever the “synchronization” interval expires, generate a “synchronize” packet and send it to the other end of the TCP, so that at least all It is guaranteed that there will always be one packet sent towards the modified TCP at the other end during the “synchronize” interval period (eg, “elapsed time interval” half of the selected value, Is the transmission time delay of the lowest bandwidth link of the traversed path of the packet for a single packet to completely exit the transmission medium * the larger of the multiplicands: the “elapsed time interval” value here is always the above Note that it must be greater than the “synchronization” value of). Thus, if both ends are changed and each sends a “synchronization” packet to the other changed end, each end of both changed end TCPs will have an “elapsed time interval” in the subflow. One-way from the other end to the local end TCP when it expires and no packet of any type from the same subflow has been received from the TCP at the other end (including the "synchronized" packet type generated for the subflow) The path does not include congestion events and / or packet drop events and / or physical transmission error events and / or very rare and very sudden congestion level increase events (but here rare 200ms Delayed ACK events: Only one of the two ends is changed, and the other unchanged end TCP, for example, the other unchanged end TC When sending a "synchronization packet" in the form of a DUP Sequence Number packet outside the normal window that triggers a return response ACK returning from P, the local modified end TCP is the local modified end TCP. Either the forwarding path or the returning path between the TCP and the other unmodified end TCP (which is certainly not known), congestion event and / or packet drop event and / or physical transmission error Can only immediately know / infer / detect that an event and / or a very rare very sudden congestion level increase event (but not including a rare 200ms Delayed ACK event here) Should know / infer / detect immediately that they have met. This additional reliable detection / reliable reasoning that the one-way path from one end to the other and / or the other end to this end is indeed “UP” or indeed “DOWN” at this time is Should be useful to react better. This is practically useful to keep in mind that if the return one-way route happens to be “DOWN”, there is no way to know if the one-way route to go is “UP” or “DOWN”. It may or may not be used. Also, between lost-to-packet (physically arrived) packets, for example, due to the arrival of other late-ordered physically arriving packets within the “elapsed time interval”. Any missing “gap” packets that have not expired the delay “elapsed time period” of the packet that would normally be taken care of through the normal three DUP ACK fast retransmission mechanisms: Alternatively, the inter-packet arrival delay “elapsed time interval” mechanism can instead be used to determine the “elapsed time interval” from the arrival time of adjacent predecessor packets in order (eg, by ordering by packet sequence number ...). The main requirement is that all missing “gap” packets must trigger the “elapsed timeout” expiration if not received within It can be. . . Please note that.

サブフローのパケット到着間遅延「経過時間インターバル」が満了し、同一サブフローからのすべてのタイプのパケット(しかし、そのサブフローの生成された「同期化」パケットタイプ又は適用可能な場合にそのサブフローの対応する戻り応答ACKを除く)が発生していない時に、ローカル端の変更されたTCPは、この本体の説明の以前の方法/サブコンポーネント方法で説明した、CDNW減少/レート減少と同時の既存の結合された実際のパケット再送信、及び/又は実際のパケット再送信が付随しない変更された分離されたCWND減少/レート減少だけ、及び/又は付随するCWND減少/レート減少を伴う又は伴わないさまざまな変更された「ポーズ」法...などを、即座にトリガし、ローカル端の変更されたTCPにこれらを行わせる(及び/又は任意選択として他端のTCPにこれらを「リモートに」行わせる)か、あるいは、同一サブフローからのすべてのタイプの最後の/最新のパケット(しかし、そのサブフローの生成された「同期化」パケットタイプ又は適用可能な場合にそのサブフローの対応する戻り応答ACKを除く)が他端の変更されたTCPから受信され(及び、同一サブフローからのすべてのタイプの後続の新しい介在する到着するパケット(しかし、そのサブフローの生成された「同期化」パケットタイプ又は適用可能な場合にそのサブフローの対応する戻り応答ACKを除く)が他端の変更されたTCPからこの例えば250ms時間中に受信されることなく)...など且つ/又は同一サブフローのパケットの現在の有効ウィンドウ分全体が送信済みであり、まだパケットのどれもが肯定応答し返されていない時以降のさらなるある期間、例えば250ms(ユーザ入力値又はRTTest、OTTest、RTTest(min)、OTTest(max)...などの要因を含むアルゴリズムに基づくある導出された値)が過ぎた後に限ってそれを行うか、のいずれかを行うことができる。   The subflow inter-packet arrival delay “elapsed time interval” expires and all types of packets from the same subflow (but the generated “synchronized” packet type of that subflow or the corresponding subflow of that subflow, if applicable) When no return response ACK has occurred, the local end modified TCP is combined with the existing CDNW decrease / rate decrease as described in the previous method / subcomponent method of this body description. Various changes with or without actual packet retransmission and / or modified isolated CWND reduction / rate reduction without actual packet retransmission and / or accompanying CWND reduction / rate reduction The “pause” method. . . , Etc., to trigger immediately and have the modified TCP at the local end do these (and / or optionally have the TCP at the other end do these "remotely"), or all from the same subflow Type of last / latest packet (but excluding the generated "synchronized" packet type of that subflow or the corresponding return response ACK of that subflow, if applicable) from the modified TCP at the other end Received (and all types of subsequent new intervening arriving packets from the same subflow (but the generated "synchronized" packet type of that subflow or the corresponding return response ACK of that subflow if applicable) Is not received from the modified TCP at the other end in this eg 250ms time). . . And / or the entire current valid window of packets of the same subflow has been transmitted and has not yet been acknowledged and returned for some further period, eg 250 ms (user input value or RTTest, It can be done either after a certain value (based on an algorithm including factors such as OTTest, RTTest (min), OTTest (max) ...) has passed.

両端が、「パケット到着間」法及び「同期化」パケット法を実施する場合に、他方の変更された端のTCPに送信される「同期化」パケットは、例えば、他の受信する変更された端のTCPが戻る応答ACKを生成することを誘発することを必要とせずに、例えばソースIPアドレスポート番号及び/又はデスティネーションIPアドレスポート番号を含む、データフィールド部分又は挿入される「パディング」フィールド部分内の特殊な固定長一意識別...など、「同期化」パケットとしてそのようなパケットを一意に識別する適切な識別と一緒に、特定のフローごとのTCP接続と同一のソースIPアドレスポート番号と、同一のデスティネーションIPアドレス及びポート番号とを有する生成されたパケットの形とすることができる。端の一方だけが変更され、他端が未変更である場合に(しかし、両端が変更される場合であっても適用可能である)、変更された端によって他方の未変更の端に向けて送信される時の「同期化」パケットは、例えば、受信する未変更の端からの戻り応答ACKを誘発しないウィンドウ内でない複製されたSequence Numberフィールドと一緒に、特定のフローごとのTCP接続と同一のソースIPアドレスポート番号と、同一のデスティネーションIPアドレス及びポート番号とを有する生成されたパケットなど、受信する未変更の端からの戻り応答ACKを誘発するパケットの形である必要がある(例えば、受信するTCPが必ず「何もしない」戻りACKを生成するウィンドウ内でない順序はずれSeq Noパケットの送信など。インターネットニュースグループトピック「Acking out of Order packet」http://groups−beta.google.com/group/comp.protocols.tcp−ip 1 Phil Karn1988年3月2日、2 CERF1988年3月2日.....、及びGoogle Search用語「ACKing the ACK」を参照されたい。単一のDUP ACKの送信が高速再送信を引き起こさないことにも留意されたい。あるいは、その代わりに、例えば順序はずれACKの送信など。Google Search用語「out of order ACK」、「eliciting an ACK」、「DUP Sequence Number ACK」、「ACK for unsent data」、「unexpected ACK」....などを参照されたい)。他方の未変更の端からの誘発された返される応答ACKは、単純に、そのACKフィールド値を、変更された端から他方の未変更の端によって受信される次の期待されるSeq番号になるようにセットされるはずであり、この戻り応答ACKの受信時に、変更された端は、この、次の期待されるシーケンス番号のデータセグメントがまだ送信されていないので、この返された応答ACKを単に破棄し、無視するはずである。この、次に期待されるシーケンス番号のデータセグメントが、返される応答ACKが受信される前のまさにその瞬間に実際に送信された、非常に希な「滅多にない」シナリオでは、変更された端は、今や、すべてがまさに同一のACK番号を有する3つの戻り応答DUP ACKを受信した時及びその後に「不必要に」高速再送信するだけであり、これは、やはり、非常に非常に可能性が低い。というのは、最初の返される応答ACK及び/又は後続の続く送信されたデータセグメントを受信する前のまさにその瞬間に実際に送信されるデータセグメントは、今や、他方の未変更の端の次の期待されるシーケンス番号を増分し、次の戻り応答ACKが今や異なるより大きい増分されたACK Numberフィールド値を担持するようにするはずであるからである。 When both ends implement the “inter-packet arrival” method and the “synchronization” packet method, the “synchronization” packet sent to the other modified end TCP is modified, for example, received by other Data field portion or inserted “padding” field, including, for example, source IP address port number and / or destination IP address port number, without requiring the end TCP to generate a response ACK to return Special fixed-length unique identification within a part. . . The same source IP address port number and the same destination IP address and port number as the TCP connection for each specific flow, with appropriate identification to uniquely identify such packets as “synchronized” packets, etc. And can be in the form of a generated packet. If only one of the ends is changed and the other end is unchanged (but applicable even if both ends are changed), the changed end will point towards the other unmodified end The “synchronization” packet when sent is identical to the TCP connection for a particular flow, for example, with a duplicated Sequence Number field that is not in a window that does not trigger a return response ACK from the receiving unmodified end. The source IP address port number and the generated packet with the same destination IP address and port number, such as a packet that triggers a return response ACK from the receiving unmodified end (eg Sending Seq No packet out-of-order that is not in the window where the TCP that receives is always “does nothing” and generates a return ACK Throat. Internet newsgroup topic "Acking out of Order packet" http://groups-beta.google.com/group/comp.protocols.tcp-ip 1 Phil Karn 1988 March 2, 2 CERF 3 May 1988 2 days ... See Google Search term “ACKing the ACK.” Note also that the transmission of a single DUP ACK does not cause a fast retransmission, or instead, for example, Out of order transmission of ACK, etc. Google Search terms “out of order ACK”, “eliminating an ACK”, “DUP Sequence Number ACK”, “ACK for un cent data ”,“ unexpected ACK ”, etc.). The triggered returned response ACK from the other unmodified end simply has its ACK field value from the modified end to the next expected Seq number received by the other unmodified end. Upon receipt of this return response ACK, the modified end will receive this returned response ACK because the data segment for this next expected sequence number has not yet been transmitted. It should simply be discarded and ignored. In this very rare “rare” scenario, where the next expected sequence number data segment was actually sent at the very moment before the returned response ACK was received, the modified end Is now only “unnecessarily” fast retransmitted when and after receiving three return response DUP ACKs, all with exactly the same ACK number, which is also very very likely Is low. This is because the data segment actually transmitted at the very moment before receiving the first returned response ACK and / or the subsequent subsequent transmitted data segment is now the next of the other unchanged end. This is because the expected sequence number should be incremented so that the next return response ACK now carries a different larger incremented ACK Number field value.

上記の直前の段落は、主に、両端のTCPが他端のTCPへの「同期化する」パケットの送信を実施する場合のシナリオを説明した。これは、各端のTCPが、他端のTCPから同一サブフローのいかなるパケット(同一サブフローに関する生成された「同期化」パケットを含む)も受信せずに「経過時間インターバル」が満了する時に、必ず、他端のTCPからローカル端のTCPへの一方向経路が輻輳し及び/又はパケットドロップ及び/又は物理送信エラー及び/又は非常に希な非常に突然の輻輳レベル増加である(しかし、この場合には「同期化する」パケット機構が実施されているので、200ms Delayed ACK機構は現在は原因ではない)ことを確かに確かめ/確かに推論できることを可能にする。より完全な組合せシナリオは、下記を含む(両端の変更されTCPが、さらに、「同期化する」パケット法を含むと仮定する)。   The preceding paragraph above mainly described a scenario where the TCPs at both ends implement a “synchronize” packet transmission to the TCP at the other end. This is necessary when each end TCP does not receive any packets of the same subflow from the other end TCP (including the generated “synchronization” packets for the same subflow) and the “elapsed time interval” expires. The one-way path from the other end TCP to the local end TCP is congested and / or packet dropped and / or physical transmission error and / or very rare and very sudden congestion level increase (but in this case Since a “synchronize” packet mechanism is implemented, the 200 ms Delayed ACK mechanism is not currently responsible). A more complete combination scenario includes the following (assuming that the modified TCP at both ends further includes a “synchronize” packet method):

1.「経過時間インターバル」が、他端の変更されたTCPから同一サブフローのいかなるパケット(そのサブフローの生成された「同期化」パケットタイプの両方を含む)をも受信せずにローカル端の変更されたTCPで満了する時 → 他端の変更されたTCPからローカル端の変更されたTCPへの一方向経路が「DOWN」であると確かに知る/確かに推論する → ローカル端の変更されたTCPは、今、即座にそれ相応に反応し、且つ/又は他端の変更されたTCPにそれ相応に反応させなければならない。   1. "Elapsed time interval" has been changed at the local end without receiving any packets of the same subflow (including both of the "synchronized" packet types generated for that subflow) from the modified TCP at the other end When it expires in TCP → It knows / infers that the one-way path from the modified TCP at the other end to the modified TCP at the local end is “DOWN” → The modified TCP at the local end is Now it must react immediately and / or react accordingly to the modified TCP at the other end.

2.他端の変更されたTCPからローカル端の変更されたTCPへの一方向経路が「UP」である、すなわち、連続するパケット(及び/又は「同期化する」パケット)が、「経過時間インターバル」を満了させずに他端の変更されたTCPから受信される時、且つ、期待される肯定応答(ローカル端の変更されたTCPによって送信されたデータパケットに関する)が、ある判断基準(分離されたレート減分タイムアウト、結合されたRTOパケット再送信タイムアウト、「ポーズ」を引き起こす分離されたACKtimeout...など)以内に他端の変更されたTCPから戻って受信されない場合に、ローカル端の変更されたTCPは、今や、ローカル端の変更されたTCPから他端の変更されたTCPへの一方向経路が「DOWN」であることの確かな知識/確かな推論と共に、即座にそれ相応に反応し、且つ/又は他端の変更されたTCPにそれ相応に反応させなければならない。   2. The one-way path from the modified TCP at the other end to the modified TCP at the local end is “UP”, ie, consecutive packets (and / or “synchronize” packets) are “elapsed time intervals”. And the expected acknowledgment (for data packets sent by the modified TCP at the local end) when received from the modified TCP at the other end without expiring The local end changes if it is not received back from the modified TCP at the other end within a rate decrement timeout, combined RTO packet retransmission timeout, separated ACK timeout ... causing "pause", etc. TCP now has "DOWN" as the one-way path from the TCP at the local end to the TCP at the other end. With solid knowledge / solid reasoning Rukoto immediately react accordingly, it must be reacted accordingly in and / or the other end of the modified TCP.

TCP接続の一端だけが「同期」パケット法を実施する場合に、この状況で、その端の、「同期」パケット法を実施する変更されたTCPに、伝統的に他端の未変更のTCPからの肯定応答応答を誘発する「パケット」の形で他端の未変更のTCPに「同期」パケットを送出させることによって、前述を適合させることができる(例えば、受信するTCPが必ず「何もしない」戻りACKを生成するウィンドウ内でない順序はずれSeq Noパケットの送信など。インターネットニュースグループトピック「Acking out of Order packet」http://groups−beta.google.com/group/comp.protocols.tcp−ip 1 Phil Karn1988年3月2日、2 CERF1988年3月2日.....、及びGoogle Search用語「ACKing the ACK」を参照されたい。単一のDUP ACKの送信が高速再送信を引き起こさないことにも留意されたい。あるいは、その代わりに、例えば順序はずれACKの送信など。Google Search用語「out of order ACK」、「eliciting an ACK」、「DUP Sequence Number ACK」、「ACK for unsent data」、「unexpected ACK」....などを参照されたい)。 If only one end of the TCP connection implements the "synchronous" packet method, then in this situation, the modified TCP implementing the "synchronous" packet method is traditionally changed from the unmodified TCP at the other end. The above can be adapted by having the unmodified TCP at the other end send a “synchronization” packet in the form of a “packet” that triggers an acknowledgment response (for example, the receiving TCP must do “nothing” “Out-of-order SACK No packet transmission within a window that generates a return ACK, etc. Internet newsgroup topic“ Acking out of Order packet ” http://groups-beta.google.com/group/comp.protocols.tcp-ip 1 Phil Karn 1988 March 2, 2 C RF 1988 March 2, ....., and see Google Search term "ACKing the ACK." Want to send a single DUP ACK is should also be noted that not cause the high-speed re-transmission. Alternatively, Instead, for example, out-of-order ACK transmission, etc. Google Search terms “out of order ACK”, “eliminating an ACK”, “DUP Sequence Number ACK”, “ACK for unsent data”, “unexpected ACK”,. Etc.)

「同期化」パケット法は、「経過時間インターバル」値より短いインターバル(例えば「経過時間インターバル」値の半分...など)でローカル端の変更されたTCPから他端のTCP(変更されていようといまいと)に送信される「パケット」が少なくともあることを保証しなければならない。両端が「同期化」パケット法を実施する場合に、両方の変更されたTCPプロトコルは、例えばTCP接続フェーズ中又はその直後...などの、互いの存在の検出、「同期化」インターバルパラメータの合意...などを好ましく可能にすることができる。しかし、この場合に、「経過時間インターバル」満了以内に他端の未変更のTCPからパケットを全く受信しない時に、ローカル端の変更されたTCPは、一方向経路のいずれか(しかし、ローカル端の変更されたTCPから他端の未変更のTCPへ又は他端の未変更のTCPからローカル端の変更されたTCPへのどちらが「DOWN」であるかは確かでない(両端が変更され、「同期化」パケット技法を実施する時と比較されたい)を確かに推論することだけができる。   The “synchronized” packet method uses a TCP that is changed at the local end to a TCP at the other end (for example, half of the “elapsed time interval” value, etc.) that is shorter than the “elapsed time interval” value. It must be ensured that there is at least a “packet” to be transmitted. When both ends implement the “synchronized” packet method, both modified TCP protocols are, for example, during or immediately after the TCP connection phase. . . Detection of each other's presence, agreement of "synchronization" interval parameters, etc. . . Etc. can be preferably made possible. However, in this case, when no packet is received from the unmodified TCP at the other end within the expiration of the “Elapsed Time Interval”, the modified TCP at the local end will receive one of the one-way paths (but the local end It is not certain which one is “DOWN” from the modified TCP to the unmodified TCP at the other end or from the unmodified TCP at the other end to the modified TCP at the local end (both ends are modified and “synchronized” Can only be reasonably inferred (compared to when performing packet techniques).

先の本説明で示したさまざまな方法/サブコンポーネント方法を、例えばACKTimeout時の分離されたレート減分ではなく、「経過時間インターバル」法及び/又は「同期化」パケット法の使用に適合させることができる(すなわち、それ相応に反応するために例えば非輻輳RTT*被乗数以内に受信されない送信されたSeq Noセグメントの肯定応答の監視ではなく、受信されるすべての次のパケットの「経過時間インターバル」がその代わりに監視される)。これは、おそらくはるかにより長い非輻輳RTT*被乗数よりはるかに高速の反応時間(「経過時間インターバル」)を可能にする。   Adapting the various methods / subcomponent methods presented in this previous description to the use of the “Elapsed Time Interval” method and / or the “Synchronized” packet method, for example, rather than a separate rate decrement during ACKTimeout (I.e. not monitoring for acknowledgment of transmitted Seq No segments not received within eg non-congested RTT * multiplicand to react accordingly) "elapsed time interval" of every next packet received Are monitored instead). This allows for a much faster response time ("Elapsed Time Interval") than possibly a much longer non-congested RTT * multiplicand.

タイムスタンプオプションが選択される場合に、これは、一方向経路遅延の両方の待ち時間(すなわち、RTTest及びRTTest(min)...などだけではなくOTTest及びOTTest(min)...などが導出される)が、それ相応によりよく反応することを可能にするはずである。SACKオプションは、既に順序はずれで受信されているパケットの、より少ない不必要な再送信を可能にするはずである。「同期化」パケット及び/又はより以前の周期的プローブパケット法を、必要な場合に、デスティネーションIPアドレス及びポートと、未変更であるがソースポートに今は異なる未使用のポート番号が割り当てられたソースIPアドレスとを有するTCPごとのフロー(1つ又は複数)の間で確立される新しいTCP接続の形で独立に送信することができる。   When the time stamp option is selected, this is derived from both latency of one-way path delay (ie, RTTest and RTTest (min) ... etc. as well as OTTest and OTTest (min) ... etc.). Should be able to react better accordingly. The SACK option should allow fewer unnecessary retransmissions of packets that are already received out of order. "Synchronize" packets and / or earlier periodic probe packet methods, if necessary, are assigned a destination IP address and port and an unused port number that is unchanged but now is different on the source port. Can be sent independently in the form of a new TCP connection established between the per-TCP flow (s) with the source IP address.

注:フローごとのTCPのそれぞれの中の「パケット到着間」(及び/又は任意選択で)「同期」パケット法を、例えば初期Sync/Sync ACKの後でのみ、及び/又は少数nの連続するパケットが他端のTCP(変更されていようといまいと)から受信された後でのみ、及び/又は各他の直前の以前のパケットから「経過時間インターバル」以内にすべてが到着する、少数mの連続するパケットが他端のTCPから受信された後でのみなど、ある判断基準/イベントが満足される時に、フローごとのTCP内で安定するために動作するようにすることができる。「同期化」インターバルが満了し、「同期化」パケットの送信が必要である時に、ローカル端の変更されたTCPは、純「同期化」パケットの代わりに、まだ肯定応答されていない、以前に送信された通常のデータパケット(1つ又は複数)を他端のTCPにその代わりに再送/再送信することができる(これは、他端のTCPから返される肯定応答応答をも誘発するはずである)。   Note: “Between packet arrivals” (and / or optionally) “synchronous” packet method within each of the per-flow TCPs, eg after only the initial Sync / Sync ACK and / or a few n consecutive Only after a packet has been received from the other end TCP (whether modified or not) and / or all within the "elapsed time interval" from each other immediately preceding packet, a small number of m When certain criteria / events are satisfied, such as only after successive packets have been received from the other end TCP, they can operate to stabilize within the TCP for each flow. When the “synchronization” interval expires and a transmission of a “synchronization” packet is required, the modified TCP at the local end has not yet been acknowledged in place of the pure “synchronization” packet, previously The transmitted normal data packet (s) can instead be retransmitted / retransmitted to the other end TCP (this should also trigger an acknowledgment response returned from the other end TCP). is there).

本明細書の1つ又は複数の方法が、ソースセンダ又はレシーバのいずれか1つ(あるいは両方)が外部インターネットに存在する場合にも適用可能になるように我々の変更/発明を拡張するが、この説明本体のさまざまな以前に説明した方法と同様に、両方がインターネットサブセット/WAN/LAN/プロプラエタリインターネット内に存在する場合にも適用できることに留意されたい。   While one or more of the methods herein extend our modifications / invention to be applicable when either one (or both) of the source sender or receiver is present on the external Internet, It should be noted that, as well as the various previously described methods of this description body, it is also applicable when both are in the Internet subset / WAN / LAN / Proprietary Internet.

ユーザインターフェースを、本説明のさまざまな先に記述した変更されたTCP/変更されたモニタソフトウェア/変更されたTCPフォワーダ/変更されたIPフォワーダ/変更されたファイヤウォール内に設けて、さまざまなTCPチューニング/レジストリパラメータ(例えば、初期ssthresh、初期RTT、MTU、MSS、Delay ACKオプション、SACKオプション、Timestampオプション...など)のユーザ入力、プロプラエタリLAN/WANサブネットIPアドレス(これらのサブネット内にソースとデスティネーションとの両方を有するパケットトラフィックを、外部インターネットへ/からと比較して「内部トラフィック」として確かめることができるようにするために)とこれらのサブネットアドレスのそれぞれ及びすべての間のACKTimeout及び/又は「経過時間インターバル」及び/又は「ポーズ−インターバル」及び/又は「同期化」インターバルとのユーザ入力(よりよい性能のために、例えばサブネット全体の中で最も離れたノードの対の間の最大非輻輳RTT*被乗数と等しいものなどの例えば最大ACKtimeout値だけを使用するのではなく)、共通TCPポート(そのような共通ポートへ/からのパケットトラフィックを異なって処理できるように)及び/又は追加の使用されるTCPポート及び/又はそのような特殊処理から除外されるソースポート又はデスティネーションポートのいずれか(例えば、一部のマルチメディアストリームは、UDPではなく指定されたポート番号を有するTCPを使用する)のユーザ入力...などを可能にすることができる。   A user interface is provided in the modified TCP / modified monitor software / modified TCP forwarder / modified IP forwarder / modified firewall described in various earlier sections of this description for various TCP tunings. / User input of registry parameters (eg, initial ssthresh, initial RTT, MTU, MSS, Delay ACK option, SACK option, Timestamp option ...), proprietary LAN / WAN subnet IP addresses (source and destination within these subnets) In order to be able to ascertain packet traffic that has both traffic to and from the external Internet as “internal traffic”. User input with ACKTimeout and / or “elapsed time interval” and / or “pause-interval” and / or “synchronization” interval between each and all address addresses (for better performance, eg Packet traffic to / from a common TCP port (rather than using only the maximum ACK timeout value, for example, equal to the maximum non-congested RTT * multiplicand between the most distant node pairs) And / or any additional TCP ports used and / or any source or destination port excluded from such special processing (e.g., some multimedia streams are TCP with specified port number instead of UDP User input). . . Etc. can be made possible.

ここに、この本説明で記述する方法/サブコンポーネント方法及び/又はパケット到着間法及び/又は「同期化」パケット法の組合せのさまざまな多数の可能性の中の、いくつかのシナリオでの概略のみでのいくつかの例の事例がある(TCP接続の一端だけが変更されている場合に、両端が変更されるならば、これは、明らかに、両端が互いの変更の存在を検出した後のタスクをはるかにより簡単にする)。   Here is an overview in several scenarios among the many different possibilities of the method / subcomponent method and / or inter-packet arrival method and / or "synchronized" packet method combination described in this description. There are some example cases only (if both ends are changed if only one end of the TCP connection is changed, this is obviously after both ends have detected the presence of each other's change. Make the task much easier).

1.外部インターネットへのセンダソースとして働く、ローカル端の変更されたTCP。TCPスタックは直接に変更される。   1. A modified TCP at the local end that acts as a sender source to the external Internet. The TCP stack is changed directly.

「トリガ」イベント(例えば300msの「経過時間インターバル」、3つのDUP ACK、RTOの実際のパケット再送信タイムアウト...など)の際に、他の可能性の中でも、これは、TCP自体が、定義されたポーズ−インターバルの間に「ポーズ」するだけ(又は、全くポーズすらせず)且つ/又はプローブとして働くためにポーズ中に少数のパケット送信を可能にすることと、その後、CWND/レートリミットを変更せずに再開する(又はポーズなしで継続する)か、例えば5%、10%、50%...などのx%だけCWND/レートリミットを減らすかのいずれかを行うことと必要とするだけであるはずである。   During a “trigger” event (eg, 300 ms “Elapsed Time Interval”, 3 DUP ACKs, RTO actual packet retransmission timeout, etc.), among other possibilities, this is because TCP itself Allow a few packets to be transmitted during a pause to only “pause” (or not pause at all) and / or act as a probe during a defined pause-interval, and then CWND / rate Resume without changing the limit (or continue without a pause), eg 5%, 10%, 50%. . . Should only need to do or reduce the CWND / rate limit by x%.

ここでは、「ポーズすること」が、例えば300msの「パケット到着間」満了時に実施される場合に、センダベースド変更は、例えば300msの「パケット到着間」満了が、ローカル端センダが他端に送信すべきデータパケットを有しておらず、したがって不必要に「ポーズする」必要がなく、且つ/又は不必要にそれ相応に反応する必要がないという事実だけに起因したかどうかを知るという利益を有することに留意されたい(ローカル端がレシーバとして働く場合に、そのローカル端は、例えば300msの「パケット到着間」満了が、「トリガ」イベントに起因するのか、単に他端のセンダが一時的に送信すべきさらなるデータパケットを有しないからのどちらであるかを知るすべがないことと比較されたい)。   Here, when “pause” is performed, for example, when 300 ms “between packet arrivals” expires, the sender-based change, for example, 300 ms “between packet arrivals” expires, is sent by the local end sender to the other end. The benefit of knowing whether it was due only to the fact that it does not have a data packet to do and therefore does not need to “pause” unnecessarily and / or does not need to react unnecessarily accordingly. (Note that if the local end acts as a receiver, the local end may be due to a "trigger" event, e.g., a 300 ms "packet arrival" expiration, or simply the sender at the other end temporarily (Compare that there is no way to know if it has no more data packets to send).

パケット到着間法は、それ相応に反応するためのトリガイベントとして「非輻輳RTT*被乗数」法の代わりに使用することができ、さらに、「同期化」パケット法(ここでは、ローカル端の変更された送信するソースTCPから生成されるだけであるが、例えば他端の未変更のTCPからの戻るACKなどの応答を誘発する)及び/又はタイムスタンプオプションが組み込まれた場合に、どの方向のリンクが確かに「DOWN」又は確かに「UP」であるかの確かな検出/確かな推論を可能にするはずである。   The inter-packet arrival method can be used instead of the “non-congested RTT * multiplicand” method as a triggering event to react accordingly, and in addition the “synchronized” packet method (here the local end is modified). Link that is generated only from the source TCP that sends it, but triggers a response such as a return ACK from the unmodified TCP at the other end) and / or a time stamp option is incorporated. Should be able to reliably detect / infer whether is indeed “DOWN” or indeed “UP”.

2.外部インターネットへのセンダソースとして働くローカル端の変更されたTCP。TCPスタックを直接に変更することはできない。   2. A modified TCP at the local end that acts as a sender source to the external Internet. The TCP stack cannot be changed directly.

本明細書の変更されたソフトウェアモニタ/変更されたTCPプロキシ/変更されたファイヤウォール...などは、TCPスタック自体の代わりにこのタスクを実行する必要があるはずである。「トリガ」イベント(例えば、300msの「経過時間インターバル」、3つのDUP ACK、RTOの実際のパケット再送信タイムアウト...など)の際に、他の可能性の中でも、これは、本明細書の変更されたソフトウェアモニタ/変更されたTCPプロキシ/変更されたファイヤウォール...などが、定義されたポーズ−インターバルの間に、インターセプトされたTCPパケット転送を「ポーズ」するだけであり、且つ/又はプローブとして働くためにポーズ中に少数のパケット送信を可能にし、その後、再開する時に、例えばすべての到着するインターセプトされる発信TCPパケットに対して固定された個数のACKを「スプーフィング」し(例えば、「スロースタート」に再入する時に1セグメントサイズにリセットされた可能性があるTCPのCWND/レートリミットをすばやく復元するために)、且つ/又は例えば変更されたソフトウェアモニタ/変更されたTCPプロキシ/変更されたファイヤウォール...など(今や送信されたパケットのどれを再送信することも要求すらされないはずのTCP自体ではなく)の中で、すべての高速再送信3DUP ACKS/RTOタイムアウトの実際のパケット再送信を、そのようなDUP純ACKをTCPに転送しないこと及び/又はTCPに転送する前にチェックサムを再計算しながらピギーバックされたDUP ACKパケット内のACKビットを除去することによってすべての高速再送信DUP ACKパケットを抑止しながら送信されるデータのウィンドウ分の実際のコピーを保持することによって処理することすら行い、且つ/又はTCPがRTOタイムアウト...など)を有する直前にTCPへのACKを「スプーフィング」し...などを必要とするのみであるはずである。ここでは、「ポーズすること」が、例えば300msの「パケット到着間」満了時に実施される場合に、センダベースド変更は、例えば300msの「パケット到着間」満了が、ローカル端センダが他端に送信すべきデータパケットを有しておらず、したがって不必要に「ポーズする」必要がなく、且つ/又は不必要にそれ相応に反応する必要がないという事実だけに起因したかどうかを知るという利益を有することに留意されたい(ローカル端がレシーバとして働く場合に、そのローカル端は、例えば300msの「パケット到着間」満了が、「トリガ」イベントに起因するのか、単に他端のセンダが一時的に送信すべきさらなるデータパケットを有しないからのどちらであるかを知るすべがないことと比較されたい)。   Modified software monitor / modified TCP proxy / modified firewall as described herein. . . Would need to perform this task instead of the TCP stack itself. During a “trigger” event (eg, 300 ms “Elapsed Time Interval”, 3 DUP ACKs, RTO actual packet retransmission timeout, etc.), among other possibilities, this is described herein. Modified software monitor / modified TCP proxy / modified firewall. . . Only “pause” the intercepted TCP packet transfer during the defined pause-interval and / or allow a small number of packet transmissions during the pause to serve as a probe and then resume For example, a “spoofing” a fixed number of ACKs for all incoming intercepted outgoing TCP packets (for example, the possibility of resetting to 1 segment size when re-entering “slow start”) To quickly restore some TCP's CWND / rate limit) and / or, for example, a modified software monitor / modified TCP proxy / modified firewall. . . Etc. (rather than the TCP itself that should not even be required to retransmit any of the packets that are now sent), such as the actual packet retransmission of all fast retransmit 3DUP ACKS / RTO timeouts, such as Do not forward DUP pure ACK to TCP and / or remove all fast retransmit DUP ACK packets by removing ACK bits in piggybacked DUP ACK packets while recalculating checksum before forwarding to TCP Even processing by keeping an actual copy of the window of data being sent while being suppressed and / or TCP is RTO timeout. . . "Spoof" the ACK to the TCP just before . . Should only require. Here, when “pause” is performed, for example, when 300 ms “between packet arrivals” expires, the sender-based change, for example, 300 ms “between packet arrivals” expires, is sent by the local end sender to the other end. The benefit of knowing whether it was due only to the fact that it does not have a data packet to do and therefore does not need to “pause” unnecessarily and / or does not need to react unnecessarily accordingly. (Note that if the local end acts as a receiver, the local end may be due to a "trigger" event, e.g., a 300 ms "packet arrival" expiration, or simply the sender at the other end temporarily (Compare that there is no way to know if it has no more data packets to send).

パケット到着間法は、それ相応に反応するためのトリガイベントとして「非輻輳RTT*被乗数」法の代わりに使用することができ、さらに、「同期化」パケット法(ここでは、ローカル端の変更されたソフトウェアから生成されるだけであるが、例えば他端の未変更のTCPからの戻るACKなどの応答を誘発する)及び/又はタイムスタンプオプションが組み込まれた場合に、どの方向のリンクが確かに「DOWN」又は確かに「UP」であるかの確かな検出/確かな推論を可能にするはずである。   The inter-packet arrival method can be used instead of the “non-congested RTT * multiplicand” method as a triggering event to react accordingly, and in addition the “synchronized” packet method (here the local end is modified). Link, which is generated only from the software, but elicits a response such as a return ACK from the unmodified TCP at the other end) and / or a time stamp option is incorporated, It should allow reliable detection / inferring whether it is “DOWN” or indeed “UP”.

3.外部インターネットセンダソースからのレシーバとして働くローカル端の変更されたTCP。TCPスタックは直接に変更される。   3. Local end modified TCP acting as a receiver from an external Internet sender source. The TCP stack is changed directly.

パケット到着間法は、それ相応に反応するためのトリガイベントとして「非輻輳RTT*被乗数」法の代わりに使用することができ、さらに、「同期化」パケット法(ここでは、ローカル端の変更されたレシーバTCPから生成されるだけであるが、例えば他端の未変更のTCPからの戻るACKなどの応答を誘発する)及び/又はタイムスタンプオプションが組み込まれた場合に、どの方向のリンクが確かに「DOWN」又は確かに「UP」であるかの確かな検出/確かな推論を可能にするはずである。さらに、Divisional ACK/DUP ACK/Optimistic ACKなどの技法を使用して、必要な時に必ず、他端の未変更の送信するソースTCPのCWND/送信レートを増分することができ、ウィンドウサイズ更新パケット技法を使用して、他端の未変更の送信するソースTCPに「ポーズ」させることができ...などである。   The inter-packet arrival method can be used instead of the “non-congested RTT * multiplicand” method as a triggering event to react accordingly, and in addition the “synchronized” packet method (here the local end is modified). Link) is generated only from the receiver TCP, but elicits a response such as a return ACK from the unmodified TCP at the other end) and / or if a time stamp option is incorporated, the link in which direction is Should be able to reliably detect / infer whether it is “DOWN” or indeed “UP”. In addition, a technique such as Divisional ACK / DUP ACK / Optimistic ACK can be used to increment the CWND / transmission rate of the source TCP to send unchanged at the other end whenever necessary, and the window size update packet technique Can be used to “pause” the unmodified sending source TCP at the other end. . . Etc.

4.外部インターネットセンダソースからのレシーバとして働くローカル端の変更されたTCP。TCPスタックを直接に変更することはできない。   4). Local end modified TCP acting as a receiver from an external Internet sender source. The TCP stack cannot be changed directly.

本明細書の変更されたソフトウェアモニタ/変更されたTCPプロキシ/変更されたファイヤウォール...などは、TCPスタック自体の代わりにこのタスクを実行する必要があるはずである。「トリガ」イベント(例えば、特定のサブフローの300msの「経過時間インターバル」など)の際に、他の可能性の中でも、これは、本明細書の変更されたソフトウェアモニタ/変更されたTCPプロキシ/変更されたファイヤウォール...などが、定義されたポーズ−インターバルの間に、他端のセンダTCPにその特定のサブフローのパケット転送をリモートから「ポーズ」させるだけであり、且つ/又はプローブとして働くためにポーズ中に少数のパケット送信を可能にし、その後、再開する時に、例えば、固定された個数のDUP ACKを他端のセンダTCPにすばやく送信させる(例えば、「スロースタート」に再入する時に1セグメントサイズにリセットされた可能性がある他端のTCPのCWND/レートリミットをすばやく復元するために)だけである。パケット到着間法は、それ相応に反応するためのトリガイベントとして「非輻輳RTT*被乗数」法の代わりに使用することができ、さらに、「同期化」パケット法(ここでは、ローカル端の変更されたレシーバTCPから生成されるだけであるが、例えば他端の未変更のTCPからの戻るACKなどの応答を誘発する)及び/又はタイムスタンプオプションが組み込まれた場合に、どの方向のリンクが確かに「DOWN」又は確かに「UP」であるかの確かな検出/確かな推論を可能にするはずである。Divisional ACK/DUP ACK/Optimistic ACKなどのさらなる技法を使用して、必要な時に必ず、他端の未変更の送信するソースTCPのCWND/送信レートを増分することができ、ウィンドウサイズ更新パケット技法を使用して、他端の未変更の送信するソースTCPに「ポーズ」させることができ...などである。   Modified software monitor / modified TCP proxy / modified firewall as described herein. . . Would need to perform this task instead of the TCP stack itself. During a “trigger” event (eg, a 300 ms “elapsed time interval” for a particular subflow), among other possibilities, this is a modified software monitor / modified TCP proxy / Modified firewall. . . Only allows the sender TCP at the other end to “pause” the packet transfer of that particular subflow remotely during the defined pause-interval and / or a few during the pause to act as a probe. When packet transmission is enabled and then resumed, for example, a fixed number of DUP ACKs are quickly sent to the sender TCP at the other end (eg reset to 1 segment size when reentering “slow start”) Only to quickly restore the TCP CWND / rate limit of the other possible TCP). The inter-packet arrival method can be used instead of the “non-congested RTT * multiplicand” method as a triggering event to react accordingly, and in addition the “synchronized” packet method (here the local end is modified). Link) is generated only from the receiver TCP, but elicits a response such as a return ACK from the unmodified TCP at the other end) and / or if a time stamp option is incorporated, the link in which direction is Should be able to reliably detect / infer whether it is “DOWN” or indeed “UP”. Additional techniques such as Divisional ACK / DUP ACK / Optimistic ACK can be used to increment the CWND / transmission rate of the unmodified source TCP at the other end whenever necessary, and the window size update packet technique Can be used to “pause” the unmodified sending source TCP at the other end. . . Etc.

TCP接続は、対称である、すなわち、ローカル端は、同時にデータの送信と受信との両方を行っていることができる(実際のデータを全く送信していない場合であっても、必ず、他端に向かって生成される戻るACKがある)ので、ローカル端の変更されたTCP/変更されたモニタソフトウェア/変更されたTCPプロキシ/変更されたファイヤウォール...などは、もちろん、同時にセンダベースドとレシーバベースドとの両方として働くことができる。さらに、両端のすべてが変更される場合に、各端は、やはり、同時にセンダベースドとレシーバベースドとの両方として働き、一緒に働くことができる:しかし、好ましくは及び/又はその代わりに、両端が互いの変更の存在を検出したならば、これらの端は、それぞれがセンダベースドのみとしてのみ働くことのみによって働くか、それぞれレシーバベースドとしてのみ働くか、一端だけがレシーバベースドとセンダベースドとの両方として働き、他端の変更された動作がディスエーブルされることに合意することができる。互いの変更された存在を検出する多数の可能な形の1例が、例えば、「パディングフィールド」又は固定長データ部分内の特殊な一意の固定長識別パターンを有するパケットを他端に送信することである。   The TCP connection is symmetric, i.e. the local end can both send and receive data at the same time (even if the actual data is not sent at all, always the other end So there is a back ACK generated towards the local end) modified TCP / modified monitor software / modified TCP proxy / modified firewall at the local end. . . Etc., of course, can simultaneously act as both sender-based and receiver-based. Further, if all of the ends are changed, each end can still act as both a sender-based and a receiver-based at the same time and can work together: but preferably and / or alternatively If they detect the presence of a change in each other, these ends work only by acting only as sender-based only, each acting only as receiver-based, or only one end as both receiver-based and sender-based. It can be agreed that the modified action at the other end is disabled. An example of many possible ways of detecting each other's altered presence is to send, for example, a packet with a special unique fixed length identification pattern in a “padding field” or fixed length data portion to the other end. It is.

本説明で開示されるさまざまな方法及び/又はサブコンポーネント方法の組合せから導出可能な方法例
(さまざまな一方向トリップ時間OTT、OTTest及び推定された非輻輳OTTest(min)...などの測定及び/又は推定を可能にすることは、TCP接続確立SYNC/SYNC ACKフェーズ中にタイムスタンプオプションをネゴシエートすることを必要とするはずである。特定の送信されたセグメント/パケットに関する送信するソースからレシーバへの一方向トリップ時間OTTは、センダによって、戻る対応するACKのさまざまなタイムスタンプフィールド値から導出することができる。明らかに、OTT値、OTTest値、OTTest(min)値は、送信するソース又はレシーバのいずれかから使用可能にされる時に、よりよくより効率的な伝送制御を可能にするはずである。というのは、RTT、RTTest、RTTest(min)が、前進経路及び戻り経路の非対称性によって導入される不確定性要素を固有に含むからである)。
Example methods derivable from a combination of various methods and / or subcomponent methods disclosed in this description (measurements such as various one-way trip times OTT, OTTest and estimated non-congested OTTest (min) ...) Enabling estimation may require negotiating a timestamp option during the TCP connection establishment SYNC / SYNC ACK phase, from the sending source to the receiver for a particular sent segment / packet. The one-way trip time OTT can be derived by the sender from the various time stamp field values of the corresponding ACK returned: Obviously, the OTT value, OTTest value, OTTest (min) value is the source or receiver sending Can be used from either Should allow better and more efficient transmission control because RTT, RTTest, RTTest (min) are introduced by the asymmetry of the forward and return paths. Because the element is inherently included).

(A)LAN/WAN/プロプラエタリインターネットなどのプロプラエタリネットワークでの、パケットがバッファリングされ始めること及び/又はパケットロスの始まりを検出するための最新の非輻輳RTTest(min)及び/又は最新の非輻輳OTTest(min)...などのセンダベースド監視。   (A) Latest non-congested RTTest (min) and / or latest non-congested to detect when packets start to be buffered and / or the beginning of packet loss in a proprietary network such as LAN / WAN / Proprietary Internet OTTest (min). . . Such as sender-based monitoring.

プロプラエタリネットワークでは、ギャランティードサービス機能をイネーブルするのに必要なものは、そのプロプラエタリネットワーク内の各すべてのPC/サーバ...など(又は単に実質的な個数の高トラフィックソース)に、先に記述した変更TCPアップグレード又はモニタソフトウェアのいずれかをインストールさせること(又は、それらのPC/サーバ...などに存在するアプリケーションソフトウェアが、そのアプリケーション内で直接に、例えばRTSPストリーミングアプリケーション内で直接に、これらの変更を実施すること)...などである。   In a proprietary network, all the PCs / servers in the proprietary network are required to enable the guaranteed service function. . . (Or just a substantial number of high traffic sources) to install any of the previously described modified TCP upgrades or monitor software (or application software present on their PC / server ... etc.) Make these changes directly within the application, eg, directly within the RTSP streaming application). . . Etc.

各すべてのサブネット間の非輻輳RTT値又は非輻輳OTT値がプロプラエタリネットワーク内で前もって既知である(非輻輳RTT値又は非輻輳OTT値が、異なるサイズのデータパケットについて、特に媒体リンクがISDNなどの低帯域幅リンクである場合に変化する可能性があり、ほとんどのTCPパケットサイズが、TCP接続確立フェーズ中に事前ネゴシエートされ、一般にネゴシエートされる最大セグメントサイズMSS値が約800バイト、1500バイト...などであることに留意されたい)場合に、本明細書の変更されたTCPアップグレード又はモニタソフトウェア...などのそれぞれは、例えば特定のソース−デスティネーションフローの非輻輳RTT又は非輻輳OTT時間期間+指定された時間期間Bが、特定の送信されたパケット(1つ又は複数)の対応するACKを戻って受信せずに経過した時に、個々のTCPごとのフローの送信レートを単純にスロットルバックすることができる(「ポーズ」期間を介して又はCWNDウィンドウサイズパーセンテージ減分を介して...など)。ここでの時間期間Bは、トラバースされる経路に沿ったさまざまなノードでバッファリングされる間に累積的に導入され、パケットによって経験される総パケットバッファ遅延に対応する:この値に例えば20msの短い期間をセットすることは、他のリアルタイムクリティカルVoIP/ビデオ会議UDPパケットの享受する非常によいギャランティードサービスレベルを保証するはずである。というのは、この場合のUDPパケットが、トラバースされるさまざまなノードに沿った20msより非常にはるかに多い累積総バッファ遅延に出会う可能性が低いからである。この場合にB=0をセットすることは、TCPフローが、パケットバッファリング遅延のすべての始まりを即座に回避することを必ず試みることを保証し、ネットワークを、バッファ遅延なし、又はたまたま発生する時にたまたまのインターバル中の非常に些細なバッファ遅延だけに保つ。TCPレートスロットル減分パーセンテージは、さまざまな固定された値をセットすることができ、あるいは、さまざまな動的な値になるようにアルゴリズム的に導出することができ、例えば、(B ms+例えばT ms)/1000msであり、B=50ms且つT=50msの場合に、ここでのレート減分パーセンテージは、10%である、すなわち、TCP送信レートは、今や、既存送信レートの90%にスロットルバックされる → したがって、ボトルネックリンクをトラバースするフローが今さらにその後全くその送信レートを増分も減分もしないと仮定すると、そのボトルネックリンクのスループットレベルが、その後、今、そのボトルネックリンクの帯域幅容量の定常90%付近で維持されることが、今わかる。TCPレートスロットル減分パーセンテージのアルゴリズムによって導出される値の他の可能な非網羅的な例は、単に、例えば、B ms/TCPごとのフローの非輻輳RTT値とすることができ、B=50ms及び非輻輳RTT=400msでは、ここでのレート減分パーセンテージは、12.5%になるはずである。時間期間T msは、以前に加算されたものであり/ここで加算することもでき、その結果、より大きいレート減分パーセンテージを用いると、そのボトルネックリンクをトラバースするフロー(TCPに関して通常そうであるように、その送信レートを増分する)は、今、100%リンクスループットレベル以上にもう一度達するのにより長い時間を要して、その後、バッファリングを必要とするはずであり、このバッファリングは、その後、他のリアルタイムクリティカルギャランティードサービスUDPパケットにわずかに影響するはずである。   The non-congested RTT value or the non-congested OTT value between all all subnets is known in advance in the proprietary network (the non-congested RTT value or the non-congested OTT value is different for data packets of different sizes, especially for media links such as ISDN Most TCP packet sizes are pre-negotiated during the TCP connection establishment phase and generally negotiated maximum segment size MSS values of about 800 bytes, 1500 bytes. Note that the modified TCP upgrade or monitor software of this specification. . . For example, a non-congested RTT or a non-congested OTT time period of a specific source-destination flow + a specified time period B returns a corresponding ACK of a specific transmitted packet (s) The transmission rate of each individual TCP flow can simply be throttled back (e.g., through a "pause" period or through a CWND window size percentage decrement ...). . The time period B here is introduced cumulatively while buffered at various nodes along the traversed path and corresponds to the total packet buffer delay experienced by the packet: Setting a short period of time should ensure a very good guaranteed service level enjoyed by other real-time critical VoIP / videoconferencing UDP packets. This is because the UDP packet in this case is unlikely to encounter a cumulative total buffer delay much more than 20 ms along the various nodes traversed. Setting B = 0 in this case ensures that the TCP flow always tries to avoid all the beginnings of packet buffering delays immediately, when the network is not buffered or happens to happen. Keep only a very small buffer delay during an occasional interval. The TCP rate throttle decrement percentage can be set to various fixed values, or can be derived algorithmically to be various dynamic values, eg, (B ms + eg T ms ) / 1000 ms, where B = 50 ms and T = 50 ms, the rate decrement percentage here is 10%, ie the TCP transmission rate is now throttled back to 90% of the existing transmission rate → Therefore, assuming that the flow traversing the bottleneck link now does not increment or decrement its transmission rate at all, then the throughput level of that bottleneck link is now the bandwidth of that bottleneck link. It can now be seen that it is maintained near the steady 90% capacity. Another possible non-exhaustive example of the value derived by the TCP rate throttle decrement percentage algorithm could simply be, for example, the non-congested RTT value of the flow per B ms / TCP, where B = 50 ms. And at non-congested RTT = 400 ms, the rate decrement percentage here should be 12.5%. The time period T ms is / can be added here before, so that using a larger rate decrement percentage, the flow traversing that bottleneck link (usually the case with TCP) Incrementing its transmission rate as is now taking more time to reach again above the 100% link throughput level, and then requires buffering, which is It should then slightly affect other real-time critical guaranteed service UDP packets.

変更されたTCPアップグレード又はモニタソフトウェア...などは、要求された時に必ず、さまざまな指定された「トリガイベント(1つ又は複数)」(例えば、B msの累積総バッファリングされた遅延に出会った...など)の後に必要な所望のボトルネックリンクのスループットを達成するために(例えば、付随するパケットバッファリング遅延を伴う現在の100%超の利用度レベルではなく、100%、99%、95%、85%...などのボトルネックリンク帯域幅利用度をその後に引き起こすために)、CWNDパーセンテージ減分を介して及び/又はそのような形での「ポーズ」を介して...など、TCDPごとのフロー(1つ又は複数)レートスロットルをもたらすことができる。さまざまなアルゴリズムとポリシとプロシージャとを、さらに考案して、すべての種類の「トリガイベント」をさまざまな異なる形で処理することができる。   Modified TCP upgrade or monitor software. . . Etc., whenever required, the desired desired after various designated “trigger event (s)” (eg, met B ms cumulative total buffered delay, etc.) (Eg, 100%, 99%, 95%, 85%, etc., rather than the current 100% utilization level with associated packet buffering delay). To subsequently cause bottleneck link bandwidth utilization), via CWND percentage decrement and / or through “pause” in such a manner. . . And so on, can provide a flow (s) rate throttle per TCDP. Various algorithms, policies and procedures can be further devised to handle all types of “trigger events” in a variety of different ways.

ここで、変更されたTCPアップグレード又はモニタソフトウェア...などが、プロプラエタリネットワーク内のさまざまなサブネットの間の、サブネット間の非輻輳RTT及びサブネット間の非輻輳OTTの以前の知識を必ずしも必要としないことに留意されたい。そうではなく、ここでは、変更されたTCPアップグレード又はモニタソフトウェア...などは、個々のTCPごとのフローの現在の最新の観察された最小のRTT値又は現在の最新の観察された最小のOTT値を記憶し、これを個々のTCPごとのフローの非輻輳RTT又は非輻輳OTTと動的に同等として扱うことができる。これらのRTTest(min)又はOTTest(min)の常識的な上限及び下限:例えば、これらの最大上側シーリング限度に、プロプラエタリネットワーク内の既知の最も離れた位置の対のRTTmax値をセットすることができる...などである。   Where the modified TCP upgrade or monitor software. . . Note that prior knowledge of inter-subnet non-congested RTT and inter-sub-net non-congested OTT is not necessarily required between the various subnets in the proprietary network. Rather, here is a modified TCP upgrade or monitor software. . . Store the current latest observed minimum RTT value of the flow for each individual TCP or the current latest observed minimum OTT value and store this as the non-congested RTT of the flow for each individual TCP or It can be treated as dynamically equivalent to non-congested OTT. Common sense upper and lower bounds for these RTTest (min) or OTTest (min): For example, these maximum upper ceiling limits can be set to the RTTmax values of known farthest-position pairs in the proprietary network . . . Etc.

(A1)LAN/WAN/プロプラエタリインターネットなどのプロプラエタリネットワークでの、パケットがバッファリングされ始めること及び/又はパケットロスの始まりを検出するための最新の非輻輳RTTest(min)及び/又は最新の非輻輳OTTest(min)...などのレシーバベースド監視
(これは、リモートACK Division/複数のDUP ACK/Optimistic ACKと、「ポーズ(1つ又は複数)」を引き起こすためのさまざまなサイズのウィンドウサイズ更新と、複製パケット法を介する「何もしない」ACK応答の誘発、RTO再送信をプリエンプトするための高速再送信をトリガするための3つのDUP ACKと、...などを使用する、前のレシーバベースドの方法/サブコンポーネント方法と、このセクション及びこの説明本体のさまざまな部分で説明されるさまざまな方法/サブコンポーネント方法とから十分に明白である)。
(A1) Latest non-congested RTTest (min) and / or latest non-congested to detect that packets start to be buffered and / or the beginning of packet loss in a proprietary network such as LAN / WAN / Proprietary Internet OTTest (min). . . Receiver-based monitoring such as remote ACK division / multiple DUP ACK / optimistic ACK, window size updates of various sizes to cause “pause (s)”, and via duplicate packet method Initiate ACK response, 3 DUP ACKs to trigger fast retransmission to preempt RTO retransmissions, etc. Previous receiver based method / subcomponent method using ... From the various methods / subcomponent methods described in this section and in various parts of this description body).

(B)LAN/WAN/プロプラエタリインターネットなどのプロプラエタリネットワーク及び/又は外部ネットワークでの、パケットがバッファリングされ始めること及び/又はパケットロスの始まりを検出するための最新の非輻輳RTTest(min)及び/又は最新の非輻輳OTTest(min)...などのセンダベースド監視
外部インターネットは、プロプラエタリネットワーク内のように、制御内ではない他の既存の未変更のTCPフローを受ける。上記の(A)の例(1つ又は複数)は、これを考慮に入れるためにさらに変更される必要があるはずである。
(B) The latest non-congested RTTest (min) and / or for detecting the beginning of packet buffering and / or the beginning of packet loss in proprietary networks such as LAN / WAN / proprietary Internet and / or external networks Or the latest non-congested OTTest (min). . . Sender-based monitoring such as The external Internet receives other existing unmodified TCP flows that are not in control, such as in a proprietary network. The above example (A) (s) would need to be further modified to take this into account.

CWNDパーセンテージ減分及び/又は「ポーズ(1つ又は複数)」...などを介するレートスロットル減分を引き起こすための「トリガイベント」は、ここで、例えば100%/99%/95%/85%...などへのフォールバックの後の指定された又は動的にアルゴリズム的に導出されるs秒の間に増分しないなど、さらに変更される必要があり、もう一度ボトルネックリンクのスループット利用度がその後に100%以上に戻って達し、上記のs秒以内のパケットバッファリング遅延の始まりを引き起こす場合に、「トリガイベント(1つ又は複数)」(パケットドロップ/バッファリング遅延閾値超過...などとすることができる)まで、送信レートがもう一度増分/増加し始めることを可能にし、そうでない場合に、s秒が経過した後に、送信レート増分/増加を可能にし始める。さまざまなアルゴリズムとポリシとプロシージャとを、さらに考案して、すべての種類の「トリガイベント」をさまざまな異なる形で処理することができる。   CWND percentage decrement and / or “pause (s)”. . . The “trigger event” for causing rate throttle decrement via, for example, 100% / 99% / 95% / 85%. . . Need to be further modified, such as not incrementing during the specified or dynamically algorithmically derived s seconds after fallback to, etc., once again the bottleneck link throughput utilization is % Triggering the start of packet buffering delay within the above s seconds, “trigger event (s)” (packet drop / buffering delay threshold exceeded, etc.) Until the transmission rate starts to increment / increase again, otherwise it starts to allow increment / increase of the transmission rate after s seconds have passed. Various algorithms, policies and procedures can be further devised to handle all types of “trigger events” in a variety of different ways.

ここで、非輻輳RTT及び/又は非輻輳OTTが、新たに確立されるTCPごとのフローについて前もってたやすくはわからない外部インターネット上では、この故に、現在の最新の観察されたRTTest(min)又はOTTest(min)が、その代わりに、非輻輳RTT及び/又はOTT値と同等の動的推定値を提供するはずである。   Here, on the external Internet, where non-congested RTT and / or non-congested OTT is not readily known in advance for newly established per-TCP flows, this is why the current latest observed RTTest (min) or OTTest. (Min) should instead provide a dynamic estimate equivalent to the non-congested RTT and / or OTT value.

既存の標準TCPは、競合するTCPフローの公平なシェア及びフレンドリネスを強調するが、単に単一のパケットドロップRTOタイムアウトの後又は特に高帯域幅及び長RTT待ち時間を有する長距離ファットパイプ上での3DUP ACK高速再送信の後に、以前に確立された送信レート/スループットを再達成するのに必要な非常に長い期間(主に、スロースタートの指数関数的CWND増大中にSsthresh CWNDサイズを達成した後の輻輳回避モードでの既存TCPの保守的な線形CWND増分に起因する)で明示されているように、最大スループットのための使用可能帯域幅の十分な利用度において非効率的である。変更されたTCPの新しい改善された判断基準は、今は、非効率的で遅い非常にフレンドリな公平な共有だけではなく、最大TCPスループットのための使用可能帯域幅及び/又は使用可能バッファの高い利用度を含まなければならない。さまざまな「トリガイベント」の際に「ポーズ」し且つ/又はCWNDを減らすための本明細書の変更されたTCPの超高速反応時間(動的に導出されるRTO値の1秒という既存RFCのデフォルト最小下側シーリング値ではなく)は、パケットドロップパーセンテージを最小にするはずであり、前に説明した「連続ポーズ」は、さらに、送信レート減分サイズを非常に柔軟にすなわち例えばRTTあたり64Kバイトから例えば300msあたり40バイトのみに減らすはずである)。   Existing standard TCP emphasizes fair share and friendliness of competing TCP flows, but only after a single packet drop RTO timeout or especially on long distance fat pipes with high bandwidth and long RTT latency. After 3DUP ACK fast retransmissions, the very long period required to re-achieve previously established transmission rate / throughput (mainly achieved Ssthresh CWND size during slow start exponential CWND increase Inefficient in full utilization of available bandwidth for maximum throughput, as evidenced by conservative linear CWND increments of existing TCP in later congestion avoidance modes). The new and improved criteria for modified TCP are now not only inefficient and slow very friendly fair sharing, but also high available bandwidth and / or high available buffers for maximum TCP throughput Must include usage. The modified TCP ultra-fast response time here (to 1 second of the dynamically derived RTO value) to “pause” and / or reduce CWND during various “trigger events” The default minimum lower ceiling value (not the default minimum ceiling value) should minimize the packet drop percentage, and the “continuous pause” described above also gives the transmission rate decrement size very flexible, ie, eg 64 Kbytes per RTT For example, should be reduced to only 40 bytes per 300 ms).

本明細書の変更されたTCPは、多数のさまざまな異なる形で、CWND増分サイズ(及び/又は、例えばより小さい値にされる、同等の「ポーズ」インターバル、「連続ポーズ」インターバルセッティング)においてよりアグレッシブにすることができる。CWNDを、例えば、既存RFCの受信されたACKあたり及び/又はRTTあたり1MSSではなく受信されたACKあたり及び/又はRTTあたり指定された整数倍数又は動的に導出される整数倍数のMSSだけ増分することができ、Ssthresh値を、指定された値に初期化することができ、及び/又はTCP接続フェーズ中にネゴシエートされる最大ウィンドウサイズと同一になるようになど、非常に大きい値に永久的に固定することができ...などである。「トリガイベント」(パケットドロップ(1つ又は複数)結合され/分離されたRTOタイムアウト、3DUP ACK高速再送信、ACKが外部の厳しくセットされた指定されたインターバルの外で返される際の分離されたレート減分...など)の際にレート減分をもたらす間に、変更されたTCPは、ボトルネックリンク(1つ又は複数)利用度が例えば100%/99%/95%/85%...などの高いスループットで又はさまざまな100%を超える輻輳的バッファリング遅延レベルなどでさえ維持されることを保証するはずであるようにレートを減分しようとすることができる(経路をトラバースするすべてのTCPが、すべて変更されたTCPであると仮定して)。   The modified TCP herein is in a number of different different ways than in CWND incremental sizes (and / or equivalent “pause” intervals, “continuous pause” interval settings, eg, smaller values). It can be aggressive. CWND is incremented by a specified integer multiple or dynamically derived integer multiple MSS per received ACK and / or RTT rather than per MS ACK received and / or RTT of the existing RFC, for example Can be initialized to a specified value and / or permanently to a very large value, such as to be the same as the maximum window size negotiated during the TCP connection phase. Can be fixed. . . Etc. "Trigger event" (packet drop (s) combined / separated RTO timeout, 3DUP ACK fast retransmission, separated when ACK is returned outside externally set specified interval The modified TCP has a bottleneck link (s) utilization of, for example, 100% / 99% / 95% / 85%. . . Can be tried to decrement the rate to ensure that it is maintained at high throughput, etc. or even at various congested buffering delay levels above 100% (all traversing paths) (Assuming TCP is all modified TCP).

さまざまな多数の可能性の中の1例として、本明細書の変更されたTCP(センダ又はレシーバのいずれかあるいは両方での)は、非輻輳ソース−レシーバ−ソースRTT値又は非輻輳ソース−レシーバOTT値、あるいは上記の動的最良推定RTTest(min)/OTTest(min)同等物の以前の知識を有するはずである:トラバースされるすべてのリンクのそれぞれが、そのめいめいの100%使用可能帯域幅を超えない(すなわち、パケットバッファリングが、トラバースされるノードのどれにおいても発生しない)時に、例えば戻るACKから導出されるRTT値又はOTT値又はRTTest(min)値又はOTTest(min)値は、今や、現実の実際の非輻輳RTT値又は非輻輳OTT値と同一になる(以下でV msと称する、ノード処理遅延/ソース又はレシーバホスト処理遅延...などによって導入される非常に小さいランダム変動を伴う:この値V ms変動は、通常、指定された又は動的に導出されるB ms...などの他の以前に説明したシステムパラメータより小さい桁(magnitude order)になるはずである。V msが非常に希な機会に期待されない場合に短く非常に大きくなる例えばWindow OSはリアルタイムOSではない...これは、その代わりに出会うノードバッファリング遅延によって生じる/導入される/引き起こされるのと同一の形で「例外的に」扱うことができる)。例えば戻るACKから導出されるRTT値又はOTT値又はRTTest(min)値又はOTTest(min)値が、トラバースされる経路(1つ又は複数)に沿って出会うバッファリング遅延がないことを示し続ける限り、変更されたTCPは、既存RFCのように送信レートの増分/増大を保守的に許容し続けるか、よりアグレッシブな増分/増大を続けるかのいずれかを行うことができる。戻るACKから示される/導出されるバッファリング遅延のあるレベル(1つ又は複数)を超える時、すなわち[(戻るRTT又はOTT)−(RTTest(min)又はOTTest(min))]というミリ秒単位の値は、今、トラバースされる経路(1つ又は複数)に沿ったさまざまなノードで出会う累積総バッファリング遅延(1つ又は複数)を示す(以下ではC msと称する)。例えば、Cの値の20ms/50ms/100ms...などを超える時に、変更されたTCPは、今、例えば、送信レートを減らすことができ、その結果、ボトルネック(1つ又は複数)のリンク利用度は、その後、それらのボトルネックリンク(1つ又は複数)をトラバースするすべてのTCPが、すべて変更されたTCPであると仮定して、例えば100%/99%/95%/85%...などに維持されるはずである(今、TCPごとのフローの実際の非輻輳RTT又は非輻輳OTTの最新の推定同等値とCの値とを知っているので、必要なCWND減分パーセンテージ及び/又は「ポーズ」インターバル又は適当な必要な「ポーズ」のシーケンスを、今、確かめて、必要な所望の最終結果を達成することができる)。変更されたTCPは、今、例えば前に説明したように期間s秒(指定される又は動的にアルゴリズム導出される)の間にTCPフローのさらなるレート増分/増大のすべてを停止して、その後、例えば前に説明したように又はさらに考案されるさまざまな異なる形でそれ相応に応答することができる。この特定の例は、既存RFCのフレンドリ公平共有に加えて高い利用度スループットを達成するという効果を有し、また、トラバースされる経路(1つ又は複数)の累積バッファリング遅延をC値に相関する低いレベルに維持されるように保つのを助ける:他の強い支配的な未変更のTCPフローがない場合に(その場合に、本明細書の変更されたTCPフローは、s秒以内にレート増分/増大を可能にし始めるはずである/始めることができる)、すべての他の未変更のTCPフローと一緒に、最終的にパケットドロップイベントを引き起こす:その際に、未変更のTCPフローは、「スロースタート」に再入し、前に達成された送信レートを再達成するのに非常に長い時間を要するはずであるが、変更されたTCPフローは、前に達成された送信レート/スループットの任意に高い比率を保持することができる(長RTT長距離ファットパイプに特に関連する既存の応答性問題を解決する)。例えばその後の95%ボトルネックリンク(1つ又は複数)利用度を達成するための変更されたTCPレート減分を用いて、新しいTCPフロー(1つ又は複数)(及び/又は他の新しいUDPフロー(1つ又は複数)...など)は、必ず、ルートに沿ったパケットバッファリング遅延(1つ又は複数)を導入せずにフローレート増分/増大を開始するために使用可能ボトルネックリンク(1つ又は複数)帯域幅の5%までを即座に利用できるはずであり、さらに、ボトルネックリンク(1つ又は複数)は、パケットを捨てずに使用可能帯域幅のXミリ秒同等物の新しい追加の突然の瞬間的トラフィックサージに即座に対処できるはずであり(ほとんどのインターネットノードは、一般に、300ms〜500msの間と同等のバッファサイズを有する):これは、既存フローの確立されたスループットを保存するという一般的な知恵と一貫すると同時に、漸進的な制御された新しい追加のフローの増大を可能にする。   As an example of the many possibilities, the modified TCP (in either or both the sender and the receiver) of this specification is a non-congested source-receiver-source RTT value or non-congested source-receiver. Should have prior knowledge of the OTT value, or the dynamic best estimate RTTest (min) / OTTest (min) equivalent above: Each of all links traversed will have its respective 100% usable bandwidth RTT value or OTT value or RTTest (min) value or OTTest (min) value derived from the returning ACK, for example, when packet buffering does not occur at any of the traversed nodes, It is now the same as the actual actual non-congested RTT value or non-congested OTT value (below With a very small random variation introduced by the node processing delay / source or receiver host processing delay, etc., referred to as ms: this value V ms variation is usually specified or dynamically derived B Should be smaller than other previously described system parameters such as ms ..., etc. V ms will be short and very large if not expected on very rare occasions eg Windows OS is real time It is not an OS ... which can instead be treated "exceptionally" in the same way as it is caused / introduced / caused by the node buffering delay encountered instead). For example, as long as the RTT value or OTT value or RTTest (min) value or OTTest (min) value derived from the returning ACK continues to indicate that there is no buffering delay encountered along the path (s) traversed The modified TCP can either continue conservatively tolerating transmission rate increments / increases like existing RFCs, or it can continue to increase / increase more aggressively. When a certain level or levels of buffering delay (s) indicated / derived from the back ACK is exceeded, ie, [(back RTT or OTT)-(RTTest (min) or OTTest (min))] The value of indicates the cumulative total buffering delay (s) encountered at various nodes along the path (s) that are now traversed (hereinafter referred to as C ms). For example, the value of C is 20 ms / 50 ms / 100 ms. . . The modified TCP can now reduce, for example, the transmission rate, for example, so that the link utilization of the bottleneck (s) is then reduced to those bottleneck links (one Assuming that all TCPs traversing (or multiple) are all modified TCPs, eg 100% / 99% / 95% / 85%. . . (Now knowing the latest estimated equivalent of the actual non-congested RTT or non-congested OTT of the flow per TCP and the value of C, so the required CWND decrement percentage and / or Or a “pause” interval or a suitable sequence of necessary “pauses” can now be verified to achieve the desired desired end result). The modified TCP now stops all further rate increments / increments of the TCP flow, for example during the period s seconds (specified or dynamically algorithm derived) as described previously, and then For example, it can respond accordingly in a variety of different ways as previously described or further devised. This particular example has the effect of achieving high utilization throughput in addition to the friendly fair sharing of existing RFCs, and correlates the cumulative buffering delay of the traversed path (s) to the C value. To keep being maintained at a low level: in the absence of other strong dominant unmodified TCP flows (in which case the modified TCP flows herein will rate within s seconds) Increment / increase should be allowed to begin), together with all other unchanged TCP flows, will eventually trigger a packet drop event: It would take a very long time to re-enter “slow start” and re-achieve the previously achieved transmission rate, but the modified TCP flow has been achieved previously. We were able to hold any high ratio of the transmission rate / throughput (resolve existing response issues particularly related to the long RTT long distance fat pipe). New TCP flow (s) (and / or other new UDP flows, eg, with modified TCP rate decrement to achieve subsequent 95% bottleneck link (s) utilization (One or more), etc.) can always be used to initiate a flow rate increment / increase without introducing packet buffering delay (s) along the route (both bottleneck links ( One or more) up to 5% of the bandwidth should be immediately available, and the bottleneck link (s) are new in the X millisecond equivalent of available bandwidth without discarding packets. It should be able to deal immediately with additional sudden instantaneous traffic surges (most internet nodes typically have a buffer size equivalent to between 300 ms and 500 ms). Having's): This allows for common wisdom and at the same time consistent, increase in the new additional flow as progressive control of saving the established throughput of an existing flow.

代替案では、変更されたTCPは、既存RFCの線形増大と同様に保守的に又はよりアグレッシブに(C msの累積総バッファリング遅延が検出された時にスロットルバックする...などではなく)レート増分/増大を必ず可能にし、「パケットドロップ」イベントの際にそれ相応にスロットルバックするだけとすることができる:これは、TCPフローのスループットの最大化の利益のためのみであり、他のリアルタイムクリティカルUDPフローには良くないはずであるが、トラバースされるノードは、使用可能な物理帯域幅の保証された最小パーセンテージをUDPパケット優先順位転送に単純に予約することによって、リアルタイムクリティカルUDPパケットの非常によいギャランティードサービス性能を簡単に保証すること...などができる。   Alternatively, the modified TCP rate conservatively or more aggressively like the linear increase of the existing RFC (rather than throttling back when a cumulative total buffering delay of C ms is detected, etc ...) Incremental / increase is always possible and can only be throttled back accordingly during a “packet drop” event: this is only for the benefit of maximizing the throughput of the TCP flow, and other real-time Although it should not be good for critical UDP flows, the traversed node can make a real-time critical UDP packet emergency by simply reserving a guaranteed minimum percentage of available physical bandwidth for UDP packet priority forwarding. Easy guarantee of guaranteed service performance. . And so on.

ウェブサイトサーバ/サーバファームは、上で説明された変更されたTCP実施態様を有利に実施することができる。通常のウェブサイトは、しばしば、スピーディなダウンロードのために約30Kバイト〜60Kバイトになるように最適化される(パケット(1つ又は複数)ドロップによって継続的に中断されずに約5Kバイト/秒でダウンロードするアナログ56Kモデム...などについて、これは、それでも、約6秒〜12秒を要する)。SYNC/SYNC ACK/ACK TCP接続確立フェーズの直後に、送信するソースサーバの変更されたTCPは、現在の最新の観察された最小ソース−レシーバ−ソースRTTest(min)又はソース−レシーバOTTest(min)値の形(それが実際の非輻輳RTT又は非輻輳OTT値を表すか否かに関わりなく)で、TCPごとのフロー(1つ又は複数)の非輻輳RTT又は非輻輳OTTの初期のまさに最初の推定値を有するはずである。送信するソースサーバの変更されたTCPは、任意選択として、今、W個のセグメントというCWNDウィンドウサイズから即座に開始してまさに最初のデータセグメント/パケットの送信を即座に開始することができ、例えば、約1600バイトのネゴシエートされた最大セグメントサイズMSS及びW=20を用いると、60Kバイトのコンテンツのすべてをクライアントウェブブラウザによって受信するのに、2*RTTだけを要するはずである(送信でパケット(1つ又は複数)が捨てられず、壊されず、経路に沿った最小のリンクの帯域幅がエンドユーザのラストマイル500Kビット/秒ブロードバンドであると仮定して)。W=64を用いると、クライアントウェブブラウザが60Kバイトのウェブサイトコンテンツを完全にダウンロードするのに、1RTT又は1OTTだけを要する可能性がある(通常のインターネットRTTは、経路(1つ又は複数)に沿ったバッファリングによって導入される遅延(1つ又は複数)を含めて、一般に約数十ミリ秒から数百ミリ秒である)。経路に沿った最小のリンクの帯域幅が、エンドユーザのラストマイル56Kビット/秒アナログモデムダイヤルアップである場合に、上記の時間期間は、ラストマイルリンクを介する伝送が最大約5Kバイト毎秒に過ぎない可能性があるので、少なくとも6秒又は12秒であったはずである(30Kバイト分又は60Kバイト分のセグメント/パケットが、ダイヤルアップを介して前方にエンドユーザのウェブブラウザに送信される前に、まず、エンドユーザのラストマイルISPで、AOLウェブプロキシサーバでバッファリングされると仮定して)。まさにワーストケースで、最初の20個又は64個のMSS CWNDウィンドウ分のセグメント/パケットが、即座にバッファオーバーフローを引き起こし、この故に、それらのセグメント/パケットが、ボトルネックリンク(1つ又は複数)で捨てられる場合であっても、本明細書の変更されたTCPは、(既存のRFCのレートの代わりに帯域幅利用度の延長期間を半減又は保証する)例えばあるレベルの後続ボトルネックリンク(1つ又は複数)利用度/スループットを保証するためのレート減分、及び/又はより制御されたアグレッシブな後続のレート増分/増大、及び/又はより制御されたバッファ遅延レベル輻輳回避(例えば、「パケット(1つ又は複数)ドロップを待つ」という現在の既存RFCの唯一の方式ではなく、レート増分/増大を可能にする前にs秒待つ...など)...など、前述の上で説明した/短く示した形でそれ相応に非常にすばやく反応することができる(1秒最小値という既存RFCの最小最低フロアデフォルト反応時間よりはるかに高速に)。   The website server / server farm can advantageously implement the modified TCP implementation described above. A typical website is often optimized to be about 30-60 Kbytes for speedy downloads (about 5 Kbytes / second without being interrupted continuously by packet (s) drop) For analog 56K modems, etc. that you download with, this still takes about 6-12 seconds). Immediately after the SYNC / SYNC ACK / ACK TCP connection establishment phase, the modified TCP of the sending source server is the current latest observed minimum source-receiver-source RTTest (min) or source-receiver OTTest (min). The very beginning of the non-congested RTT or non-congested OTT of the flow (s) per TCP, in the form of a value (regardless of whether it represents an actual non-congested RTT or non-congested OTT value) Should have an estimate of The modified TCP of the sending source server can optionally start immediately from the CWND window size of now W segments and immediately start sending the very first data segment / packet, eg , Using the negotiated maximum segment size MSS of approximately 1600 bytes and W = 20, it would only take 2 * RTT to receive all of the 60 Kbytes of content by the client web browser (packets on transmission ( One or more) is not thrown away, broken, and the minimum link bandwidth along the path is the end user's last mile 500 Kbit / s broadband). With W = 64, the client web browser may only require 1 RTT or 1 OTT to completely download 60 Kbytes of website content (a normal Internet RTT may be on the path (s)) Including the delay (s) introduced by buffering along, typically from about tens of milliseconds to hundreds of milliseconds). If the minimum link bandwidth along the path is the end user's last mile 56 Kbit / s analog modem dial-up, the above time period will only transmit up to about 5 Kbytes per second over the last mile link. It should have been at least 6 seconds or 12 seconds (before 30 Kbytes or 60 Kbytes of segments / packets are sent forward to the end user's web browser via dial-up. First, assuming the end user's last mile ISP is buffered by the AOL web proxy server). Exactly in the worst case, segments / packets for the first 20 or 64 MSS CWND windows will immediately cause a buffer overflow, so that those segments / packets will be on the bottleneck link (s). Even if discarded, the modified TCP of this document (for example, halves or guarantees an extended period of bandwidth utilization instead of the existing RFC rate), for example, some level of subsequent bottleneck links (1 Rate decrement to ensure utilization / throughput, and / or more controlled aggressive subsequent rate increment / increment, and / or more controlled buffer delay level congestion avoidance (e.g., "packet It is not the only existing RFC method that waits for the drop (s). Wait s seconds before allowing the door incremental / increase ..., etc.). . . And so on, can be responded reasonably quickly in the form described above / shown shortly (much faster than the minimum minimum floor default response time of existing RFCs of 1 second minimum).

変更されたTCPすなわちウェブサーバ用の変更されたTCPが、モニタソフトウェア/プロキシTCP...などの形で(例えば、変更のためのホストTCPスタックソースコードへの直接アクセスなしで)実施される必要がある場合に、これは、本質的に、単に、本説明のさまざまな先の方法/サブコンポーネント方法で説明したように、送信するソースサーバに常駐するモニタソフトウェア/TCPプロキシが、制御されてよりアグレッシブにCWNDウィンドウサイズ/送信レートを増分するために、常駐する送信するソースサーバのTCPスタックに対して、要求された時に必ず「ACKをスプーフィングし」、且つ/又は一時的に送信を止めるか送信レートを減分するために、常駐する送信するソースサーバのTCPスタックに対して、要求された時に必ず0又は小さいレシーバウィンドウサイズ更新パケットをスプーフィングし、及び/又はモニタソフトウェアが、インターセプトされたTCPの発したパケットの前方への転送で、「ポーズ」/「連続ポーズ」を介して同等の送信レート減分をもたらし(及び/又は各ポーズインターバル中に1つ又は少数のパケット転送を可能にし)、且つ/又は常駐するホストのTCPスタックによって送信されたフルウィンドウ分のすべての実際のデータセグメント/パケットを保存して、その後、すべての結合された又は分離されたRTO再送信/3DUP ACK高速再送信を実行し、常駐ホストTCPスタックをすべてのそのような責任から解放し、且つ/又は常駐ホストTCPスタックによって送信された複数のフルウィンドウ分のすべての実際のデータセグメント/パケットを保存し、したがって、モニタソフトウェアが制御されたよりアグレッシブなレート増分/増大をもたらすために常駐ホストTCPスタックに対して「ACKをスプーフィング」する時及び/又はそれを行うためにACK Division/複数DUP ACK/Optimistic ACK技術を利用する時に、複数ウィンドウ分のセグメント/パケットを単一RTT以内に常駐ホストTCPスタックによって生成できるようにし、且つ/又はネットワークからの着信して戻るACKパケットを検査し、及び/又は前方に常駐ホストTCPスタックに転送するか破棄する前に、さまざまなフィールド(ACK Number、Seq Number、Timestamp値、さまざまなフラグ、アドバタイズされたウィンドウサイズ...など)を変更するかどうかを含めてそれ相応に反応するためにそのRTT/OTTを検査し、且つ/又は........などを必要とするはずであることに留意されたい。   The modified TCP, ie the modified TCP for the web server is the monitor software / proxy TCP. . . This is essentially simply the various earlier methods / subs of this description, when it needs to be implemented in a form such as (without direct access to the host TCP stack source code for modification) As described in the component method, the monitor software / TCP proxy residing on the sending source server is controlled by the resident sending source server's TCP stack to increase the CWND window size / send rate more aggressively. On the other hand, it is required for the resident sending source server's TCP stack to "spoof ACKs" whenever requested and / or to temporarily stop sending or decrement the sending rate. Sometimes spoofs zero or small receiver window size update packets and / or Is the forward forwarding of intercepted TCP-originated packets by the monitor software resulting in equivalent transmission rate decrement via “pause” / “continuous pause” (and / or one during each pause interval). Or a small number of packet transfers) and / or store all actual data segments / packets for the full window sent by the resident host's TCP stack, and then all combined or separated RTO retransmissions / 3DUP ACK fast retransmissions, freeing the resident host TCP stack from all such responsibilities and / or all actual multiple windows transmitted by the resident host TCP stack Stores data segments / packets and is therefore controlled by the monitoring software Multiple when "spoofing ACKs" to the resident host TCP stack and / or using ACK Division / multiple DUP ACK / Optimistic ACK techniques to do so to provide a more aggressive rate increment / increase Allows window segments / packets to be generated by the resident host TCP stack within a single RTT and / or inspects incoming ACK packets from the network and / or forwards them to the resident host TCP stack Respond accordingly, including whether to change various fields (ACK Number, Seq Number, Timestamp value, various flags, advertised window size, etc.) before discarding Inspect its RTT / OTT to check and / or. . . . . . . . Note that it should be necessary.

ここでは、モニタソフトウェア/TCPプロキシ...などが、送信レートを「ポーズ」/連続「ポーズ」だけを介して制御されるままにしながら、且つ/又は「プローブ」として働くために1つの単一の又は少ない固定された個数のパケットを各ポーズインターバル中に転送することを可能にしながら、技法、方法、及びサブコンポーネント方法の上で述べた組合せを用いて、常駐ホストの有効送信ウィンドウ及び/又はCWNDを、ある必要なサイズに又は常時最大のネゴシエートされたウィンドウサイズにさえ永久的に固定して保つことさえできることに留意されたい。   Here, the monitor software / TCP proxy. . . Each with one single or a small fixed number of packets to act as a “probe”, while leaving the transmission rate controlled only through “pause” / continuous “pause” Using the combinations described above for techniques, methods, and subcomponent methods, the resident host's effective transmission window and / or CWND can be maximized to some required size or always, while allowing transmission during the pause interval. Note that even the negotiated window size can be kept permanently fixed.

(SYNC/SYNC ACK/ACK TCP接続確立フェーズの直後に、送信するソースサーバの変更されたTCPは、その代わりに、今や、既存RFCのスロースタートの1MSSセグメントサイズのCWNDウィンドウを用いて即座に開始してまさに最初のデータセグメント/パケットの送信を即座に開始することができるが、これは、エンドユーザの通常の一般的な毎日の経験でそうであるようにコンテンツ転送を完了するのに今は多数のRTT、数十秒から数分前後を要する可能性がある)。   (Immediately after the SYNC / SYNC ACK / ACK TCP connection establishment phase, the modified TCP of the sending source server now starts immediately, instead using the existing RFC slow start 1MSS segment size CWND window. The transmission of the very first data segment / packet can be started immediately, but this is now done to complete the content transfer as is the usual general daily experience of the end user. A large number of RTTs, which may take several tens of seconds to several minutes).

(B1)LAN/WAN/プロプラエタリインターネットなどのプロプラエタリネットワーク及び/又は外部ネットワークでの、パケットがバッファリングされ始めること及び/又はパケットロスの始まりを検出するための最新の非輻輳RTTest(min)及び/又は最新の非輻輳OTTest(min)...などのレシーバベースド監視
(これは、リモートACK Division/複数DUP ACK/Optimistic ACK及び/又は「ポーズ(1つ又は複数)」を引き起こすためのさまざまなサイズのウィンドウサイズ更新及び/又は複製パケット法を介する「何もしない」ACK応答の誘発及び/又はRTO再送信をプリエンプトするための高速再送信をトリガするための3つのDUP ACK及び...などを使用する、以前のレシーバベースドの方法/サブコンポーネント方法と、このセクション及びこの説明本体のさまざまな部分で説明されるさまざまな方法/サブコンポーネント方法から十分に明白である。外部インターネットを介して働くためのTCP変更の実施に関する前のセクションを参照されたい)。
(B1) The latest non-congested RTTest (min) and / or for detecting the beginning of packet buffering and / or the beginning of packet loss in proprietary networks such as LAN / WAN / Proprietary Internet and / or external networks Or the latest non-congested OTTest (min). . . Receiver-based monitoring such as remote ACK Division / multiple DUP ACK / Optimistic ACK and / or via various size window size updates and / or duplicate packet methods to cause “pause (s)” Previous receiver-based methods / subcomponents that use 3 DUP ACKs, etc. to trigger “do nothing” ACK response and / or trigger fast retransmission to preempt RTO retransmissions It is clear enough from the method and the various methods / subcomponent methods described in this section and the various parts of this description body, see the previous section on implementing TCP changes to work over the external Internet . Wanna)

1例として、TCP接続確立フェーズ中にネゴシエートされるTimestampオプションを用いて、レシーバの変更されたTCP又はモニタソフトウェアは、今や、到着するパケットの実際の非輻輳一方向トリップ時間と同等のソース−レシーバ経路の推定値すなわち現在の最新の観察されたOTTest(min)を導出することができる。任意の到着するパケットが出会う累積総バッファリング遅延は、存在する場合に、到着するパケットのOTTからOTTest(min)を減算することによって導出することができる(ノードのパケット処理/転送時間動揺によって導入されるすべての通常は非常に小さいランダム変動を無視して)。Selective Acknowledgementオプションを利用すること及びDelayed Acknowledgementオプションをディスエーブルすることが好ましい(例えば、ホストPCのTCP/IPレジストリエントリセッティングによって、しかし、これらは、全く、厳密な要件ではない)。変更されたTCP又はモニタソフトウェアは、今、正しい位置にあり、今、輻輳していないソース−レシーバ経路の実際の非輻輳OTT及びバッファリング遅延レベルと同等の推定値を用意していて、フレンドリな公平共有を保ちながら最大の帯域幅利用度/スループット判断基準を達成するために望まれる通りにそれ相応に反応するはずである(リモートから、送信するソースTCPに、「ポーズ」させ、且つ/又はポーズインターバルごとに1つの単一のパケット転送を許容しながら「連続ポーズ」させ、且つ/又は「アンポーズ」させ、且つ/又はDivisional ACK/複数DUP ACK/Optimistic ACKを介してCWNDサイズを増分させ、且つ/又は早期3DUP ACK高速再送信を介してRTOタイムアウトをプリエンプトさせ、且つ/又は......など)。   As an example, with the Timestamp option negotiated during the TCP connection establishment phase, the receiver's modified TCP or monitor software now has a source-receiver equivalent to the actual uncongested one-way trip time of the arriving packet. An estimate of the path, i.e. the current latest observed OTTest (min), can be derived. The cumulative total buffering delay encountered by any arriving packet, if present, can be derived by subtracting OTTest (min) from the OTT of the arriving packet (introduced by node packet processing / forwarding time upset). All neglected are usually very small random fluctuations). It is preferable to use the Selective Acknowledgment option and disable the Delayed Acknowledgment option (eg, depending on the host PC's TCP / IP registry entry settings, but these are not strictly strict requirements). The modified TCP or monitor software is now in the correct position and now provides an estimate equivalent to the actual non-congested OTT and buffering delay level of the uncongested source-receiver path and is friendly Should respond accordingly as desired to achieve maximum bandwidth utilization / throughput criteria while maintaining fair sharing (remotely “pause” and / or send source TCP “Continuous pause” and / or “unpause” while allowing one single packet transfer per pause interval and / or increment CWND size via Divisional ACK / Multiple DUP ACK / Optimistic ACK; And / or RTO tie via early 3DUP ACK fast retransmission Out to pre-empt, and / or ...... etc.).

直前の例は、Timestampsオプションの使用を全く必要としなくなるようにさらに単純化することができ(すなわち、到着するOTT値、OTTest(min)値、及び導出された累積総出会うバッファリング遅延値を導出することも利用することも全く必要としない:レシーバの変更されたTCP又はモニタソフトウェアは、その代わりに、最新の最後の受信された直前のパケットの到着時刻以降に次のパケットが到着するのを指定されたWミリ秒(例えば250ms)インターバルだけ非常に単純に待つことができ、これがWミリ秒以内に到着しない場合には、フレンドリで公平な共有を保ちながら指定された最大帯域幅利用度/スループット判断基準を達成するために(しかし、直前の例よりアグレッシブに)望みに応じて、その後に、これを「トリガイベント」として扱って(次のパケットがバッファオーバーフロード輻輳ドロップされた可能性が最も高い)、続いて即座に(リモートから、送信するソースTCPに「ポーズ」させ、且つ/又はポーズインターバルごとに1つの単一のパケット転送を許容して「連続ポーズ」させ、且つ/又は「アンポーズ」させ、且つ/又はDivisional ACK/複数DUP ACK/Optimistic ACKを介してCWNDサイズを増分させ、且つ/又は早期3DUP ACK高速再送信を介してRTOタイムアウトをプリエンプトさせ、且つ/又は......など)。ここでは、パケットが、3つの異なるノードA/B/Cのそれぞれで例えば300msの3つのバッファリング遅延に出会い、その後、経路に沿って別のノードD(例えば400msと同等のバッファ容量を有する)でバッファオーバーフロード輻輳ドロップされる場合に、且つ、送信するソースTCPでの例えば250msの「ポーズ」は、今、ノードDでのバッファ輻輳レベルをわずか150msに減らすだけではなく、同様に、ノードA/B/Cのそれぞれでのバッファ輻輳レベルをそれぞれわずか50msに減らしもするはずである。450msの指定された又はアルゴリズム的に導出される「ポーズ」インターバル値は、確かに、ノードA/B/C/Dのそれぞれで完全にすべてのバッファリングを完全にクリアするはずであるのに対して(すなわち、すべてが、今、パケットが全くバッファリングされない状態で全然輻輳していない)。しかし、直前の例は、OTTとOTTest(min)と導出された累積的な出会うバッファリング輻輳遅延の知識を用意していて、上記の値の知識に依存してより微細なレベルの制御を伴ってそれ相応に反応することができ、これが、主にバッファオーバーフロードパケットドロップイベントの後に反応することだけができるさらに単純化された例を提示することと比較されたい(トラバースされるすべてのノードのすべてのバッファ(それぞれ400msと同等のバッファ容量を仮定する)が、一貫して安定してますます、オーバーフロー済みに近いがまだオーバーフロー済みでなく変化する時であっても、直前に受信されたパケットに直接に続くパケットは、それでも、その直前のパケットから例えば50ms/100ms/200ms/250ms...など以内に到着することに留意されたい)。   The previous example can be further simplified so that it does not require the use of the Timestamps option at all (ie, the arriving OTT value, the OTTest (min) value, and the derived cumulative total met buffering delay value). There is no need to do or use at all: the modified TCP or monitor software of the receiver will instead wait for the next packet to arrive after the arrival time of the most recent last received previous packet. If you can simply wait for a specified W millisecond (eg 250 ms) interval, and this does not arrive within W milliseconds, then the specified maximum bandwidth utilization / To achieve throughput criteria (but more aggressive than the previous example) as desired Then treat this as a “trigger event” (most likely the next packet was buffer overflowed congestion dropped) and then immediately (remotely “pause” to the sending source TCP, and Allow one single packet transfer per pause interval to “continuously pause” and / or “unpause” and / or increment CWND size via Divisional ACK / Multiple DUP ACK / Optimistic ACK And / or preempt RTO timeout via early 3DUP ACK fast retransmission and / or ... etc.) where the packet is sent to each of three different nodes A / B / C For example, you encounter 3 buffering delays of 300ms, then A “pause” of, for example, 250 ms on the sending TCP, when a buffer overflowed congestion drop occurs at another node D (eg having a buffer capacity equivalent to 400 ms) along the path, and is now node D In addition to reducing the buffer congestion level at the node A / B / C to only 150 ms, it should also reduce the buffer congestion level at each of the nodes A / B / C to only 50 ms each. The “pause” interval value derived in the above will certainly completely clear all buffering at each of nodes A / B / C / D (ie The packet is not buffered at all and is not congested), but the previous example is OT And OTTest (min) derived cumulative encounter buffering congestion delay knowledge, depending on the knowledge of the above values, can react accordingly with a finer level of control. Can be compared to presenting a more simplified example that can only react mainly after a buffer overflowed packet drop event (all buffers of all traversed nodes (equivalent to 400 ms each) Is consistently stable, even if it is close to overflowed but still not overflowed, the packet that immediately follows the last received packet is still , For example, 50 ms / 100 ms / 200 ms / 250 ms. . . Etc.)

最後に受信されたパケット(任意の長さの)以降に到着する、長さL=1からネゴシエートされた最大セグメントサイズMSSまでの続く次のパケットの現在の最新の最小の観察された経過インターバルE(L)を記憶することが好ましく、これは、長さLの単一のパケットが経路に沿った最低帯域幅リンク伝送媒体(例えば、通常のエンドユーザラストマイル56Kbsダイヤルアップ又は500Kbsブロードバンド、本説明の192〜195ページをも参照されたい)に完全に出るための送信時間遅延の知識/同等の推定値を我々に与える。送信時間遅延E(L)は、パケットの長さLに線形に比例すると期待される。我々は、今、変更されたTCP又はモニタソフトウェアが、例えば(Wミリ秒+最大のネゴシエートされたセグメントサイズMSSの長さのパケットのE(L))がパケット到着なしで経過する時にそれ相応に反応するために、又は例えば最大のネゴシエートされたセグメントサイズMSSの長さのパケットのE(L)が既にWの値の導出/指定で考慮に入れられていると仮定する場合に例えばWミリ秒だけの際にそれ相応に反応するためにイベントを「トリガする」だけになるように、Wミリ秒を指定することができる。   The current latest minimum observed elapsed interval E of the next packet that arrives since the last received packet (of any length), from length L = 1 to the negotiated maximum segment size MSS (L) is preferably stored, which means that a single packet of length L is the lowest bandwidth link transmission medium along the path (eg normal end user last mile 56 Kbs dialup or 500 Kbs broadband, this description (See also pages 192 to 195), giving us a knowledge / equivalent estimate of the transmission time delay to complete. The transmission time delay E (L) is expected to be linearly proportional to the packet length L. We now have a modified TCP or monitor software commensurately when, for example, (W milliseconds + maximum negotiated segment size MSS length packet E (L)) passes without packet arrival. For example, to assume that the E (L) of the packet with the maximum negotiated segment size MSS length has already been taken into account in the derivation / designation of the value of W, for example to respond W milliseconds can be specified so that it will only "trigger" the event to react accordingly.

多数の中のもう1つのさらに単純化された例として、ここで、例えばはるかにより高速のウェブページダウンロード、ftpダウンロード...など、外部インターネット上のよりよい性能を与える、パケット到着間インターバル技法(これは、さらに変更する/適合させることができ、モニタソフトウェアではなく、直接にTCP自体のなかで実施することもできる)を利用してモニタソフトウェア内で実施される非常に単純化されたレシーバベースドの変更されたTCPの概要を説明する。   As another more simplified example among many, here, for example, much faster web page downloads, ftp downloads. . . Inter-packet arrival interval technique (which can be further modified / adapted and can be implemented directly in the TCP itself, not the monitoring software), giving better performance on the external Internet, etc. An overview of a very simplified receiver-based modified TCP that is utilized and implemented in the monitor software will be described.

1.リモートセンダからTCPパケットを受信する時には、必ず、フローごとのTCPのテーブル内に既にある場合にはソースアドレス及びポートをチェックし、そうでない場合には、さまざまなパラメータを用いて新しいフローごとのTCP TCBを作成する(すべてのインターセプトされたパケットについて以前のSeq No/送信時刻テーブルエントリを維持する必要はない)。   1. When receiving a TCP packet from a remote sender, be sure to check the source address and port if already in the TCP table for each flow, otherwise use the various parameters to check the TCP for each new flow. Create TCB (no need to maintain previous Seq No / Send Time Table entry for all intercepted packets).

.最新のパケット受信ローカルシステム時刻(リモートセンダから受信される。純ACK、又は通常のデータパケット)、最新のレシーバパケットのアドバタイズされたウィンドウサイズ(ローカルMSTCPによってリモートセンダに送信される)、最新のレシーバパケットのACK番号すなわちリモートセンダから期待される次の期待されるSeq番号(ローカルMSTCPによってリモートセンダに送信され、フローごとの着信パケット及び発信パケットの検査を必要とし、我々は、今や、通常の120秒インアクティビティを待たずに、FIN/FIN ACKの際にフローごとのTCPテーブルエントリを即座に除去できなければならない)...など。   . Latest packet received local system time (received from remote sender; pure ACK or normal data packet), advertised window size of latest receiver packet (sent to remote sender by local MSTCP), latest receiver The ACK number of the packet, ie the next expected Seq number expected from the remote sender (which is sent to the remote sender by local MSTCP and requires inspection of incoming and outgoing packets per flow, and we now (It must be possible to immediately remove the TCP table entry for each flow during FIN / FIN ACK without waiting for second inactivity). . . Such.

(任意選択)Sync/Sync ACK完了時に、即座に、リモートセンダのCWNDに例えばユーザ指定の又は動的にアルゴリズム導出された64Kバイトをセットし、例えば、エンドユーザラストマイルリンクの帯域幅容量に依存してより小さい又はより大きいスケーリングされたサイズをセットすることもできる。例えば64K(これは、ウインドウスケーリングオプションが選択されない限り、ネゴシエートされる通常のデフォルト最大ウィンドウサイズであり、これは、リモート外部インターネットウェブサイトのコンテンツを、経験される通常の数十秒と比較して、単一のRTTだけのうちにダウンロードすることを可能にすることができる)がセットされる。これは、好ましくは、例えばACKNo=リモートセンダの初期SeqNo+1を有する例えば15個の即座のDUP ACKを介して行われ、一部のTCPが、その代わりにACKされたバイト数だけCWNDを増分するのみなので、Divisional ACKは、良好に動作しない場合があり、最適のACK挙動は、すべてのTCPで同一でない場合がある。   (Optional) Upon completion of Sync / Sync ACK, immediately set the remote sender's CWND to eg 64K bytes specified by the user or dynamically algorithmic, eg depending on the bandwidth capacity of the end user last mile link It is also possible to set a smaller or larger scaled size. For example 64K (this is the normal default maximum window size negotiated unless the window scaling option is selected, which compares the content of the remote external Internet website with the usual tens of seconds experienced. Can be downloaded within a single RTT only). This is preferably done via eg 15 immediate DUP ACKs with eg ACKNo = Remote Sender's initial SeqNo + 1, instead some TCP only increments CWND by the number of bytes ACKed instead. Thus, the Divisional ACK may not work well and the optimal ACK behavior may not be the same for all TCPs.

注:代替案では、我々は、リモートセンダから受信される最初のデータパケットを待ち、その後、リモートセンダからの受信されたばかりのSeqNoと同一にセットされたACKNoを有する(1バイトだけの不必要な再送信出費で)例えば15個のDUP ACKを生成し、あるいはDivisional ACKを使用する。   Note: In the alternative, we wait for the first data packet received from the remote sender and then have an ACKNo set equal to the SeqNo just received from the remote sender (only one byte unnecessary Generate (for example, 15 DUP ACKs) or use a Divisional ACK (with retransmission expenses).

TCPは、接続をセットアップするのに3ウェイハンドシェーキングプロシージャを使用する。接続は、開始側が、SYNフラグをセットされ、シーケンス番号フィールド内の提案される初期シーケンス番号(seq=X)を有するセグメントを送信することによってセットアップされる。次に、リモートは、SYNフラグとACKフラグの両方をセットされ、シーケンス番号フィールドに逆方向のそれ自体の割り当てられた値(seq=Y)をセットされ、X+1の肯定応答フィールド(ack=X+1)を有するセグメントを返す。これを受信した時に、開始側は、Yを記憶し、ACKフラグだけをセットされ、Y+1の肯定応答フィールドを有するセグメントを返す。   TCP uses a 3-way handshaking procedure to set up a connection. The connection is set up by the initiator sending a segment with the SYN flag set and the proposed initial sequence number (seq = X) in the sequence number field. The remote then sets both the SYN and ACK flags, sets its sequence number field to its own assigned value in the reverse direction (seq = Y), and X + 1 acknowledgment field (ack = X + 1) Returns a segment with Upon receipt of this, the initiator stores Y, returns only a segment with the ACK flag set and a Y + 1 acknowledgment field.

2.次のパケットを受信せずに例えば300ms(ユーザ指定の又は動的にアルゴリズム導出される)が満了する場合には、
→ 我々は、ソフトウェア内で、ACK Noに未到着の次の期待されるSeq Noをセットされた3つのDUP ACKを生成するために、前の最後に受信されたパケットから例えば300ms以内に次の期待されるSeq Noが到着しないことを検出し、それと同時に、3つのDUP ACK以内に例えば1800バイトのウィンドウ更新を伝え(センダの「ポーズ」+1パケットと同等):例えば100msが純ACK又は通常のデータパケットを全く受信せずに経過する場合に、毎回1800バイトだけ増分される1800バイトの同一の3つのDUP ACKウィンドウ更新を送信し続けることだけを必要とするが、ACK又は通常のデータパケットが実際に次に受信される場合には、リモートからACK又は通常のデータパケットが次にもう一度受信されるまで、100msおきに繰り返して、前のウィンドウサイズを復元する通常の(3つのDUP ACKではない)同一の単一のウィンドウ更新(ACKNoフィールドにローカルMSTCPからリモートに送信された「; 記録された」最新の「最大の」ACKNo又は−1をセットする)を送信し、その後、上記の例えば300msの満了検出ループを、上記のステップ2のまさに始めに繰り返す(任意選択として、我々は、まずこの点で、もう一度ループする前に、ここでDivisional ACK/固定された個数のDUP ACK/Optimistic ACK技法を利用して、送信するソースのCWNDサイズに例えばネゴシエートされた最大ウィンドウサイズ64Kバイト/32Kバイトをセットし、又は例えば送信するソースのCWNDサイズを16 DUP ACKによって増分する...ことなどができる)。
2. If, for example, 300 ms (user specified or dynamically derived algorithm) expires without receiving the next packet,
→ We generate the next DUP ACK in the software with the next expected Seq No that has not yet arrived in the ACK No, for example within 300ms from the last received packet Detects that the expected Seq No has not arrived and at the same time conveys a window update of eg 1800 bytes within 3 DUP ACKs (equivalent to the sender's “pause” + 1 packet): eg 100 ms is pure ACK or normal If it passes without receiving any data packet, it only needs to keep sending the same 3 DUP ACK window updates of 1800 bytes incremented by 1800 bytes each time, but ACK or normal data packet is When it is actually received next time, an ACK or normal data packet is received from the remote. Repeats every 100ms until it is received again in the same single window update ( not 3 DUP ACKs) that restores the previous window size ( transmitted remotely from the local MSTCP to the ACKNo field ) Send the “recorded” latest “maximum” ACKNo or −1) and then repeat the above 300 ms expiration detection loop at the very beginning of step 2 above (optionally we First, at this point, before looping again, the maximum window size of 64 Kbytes, for example, negotiated to the CWND size of the transmitting source, here using the Divisional ACK / fixed number of DUP ACK / Optimistic ACK techniques Set / 32K bytes, or E is incremented by 16 DUP ACK the CWND size of the source to be transmitted if ... can such be).

ここでは、我々が、単一のウィンドウ更新パケットの代わりに3つのDUP ACKを送信することもできるが、2つのさらなる100msが経過した後に、単一のウィンドウ更新ACKパケットが、合計3つのDUP ACKウィンドウ更新パケットになるはずであり、もちろん、ここでの代替案を、任意のウィンドウ更新パケット、例えばDUP SeqNoウィンドウ更新パケット...などとすることができることに留意されたい。   Here, we can also send 3 DUP ACKs instead of a single window update packet, but after 2 additional 100 ms, a single window update ACK packet has a total of 3 DUP ACKs. It should be a window update packet and, of course, the alternative here is to replace any window update packet, eg DUP SeqNo window update packet. . . Note that, and so on.

利用できるいくつかのサブコンポーネント技法に関するさまざまな注:
.TCP接続確立SYNC/SYNC ACKの後の最初の受信されたパケットから開始し、現在の観察されたRTT−現在の最新の記録されたRTTest(min)又は現在の観察されたOTT現在の最新の記録されたOTTest(min)が、妥当な累積総バッファリング遅延(例えば、ソースパケット生成における一時的に長くされた停止/ギャップによって引き起こされる)より大きい場合には、そのような発生を無視し、「トリガイベント」を引き起こさない。
Various notes on some of the subcomponent techniques available:
. Starting from the first received packet after TCP connection establishment SYNC / SYNC ACK, current observed RTT-current latest recorded RTTest (min) or current observed OTT current latest record If the generated OTTest (min) is greater than a reasonable cumulative total buffering delay (eg, caused by a temporarily lengthened pause / gap in source packet generation), ignore such occurrences and Does not trigger "trigger event".

.CWNDサイズパーセンテージ縮小、例えば[(現在の観察されたRTT−現在の最新の記録されたRTTest(min)又は現在の観察されたOTT−現在の最新の記録されたOTTest(min))+T ms]/現在の観察されたRTT又はOTTを介する送信レート減分、しかし、ここで、T=0msを用い、後続のボトルネックリンクのスループットが使用可能帯域幅の100%になることを引き起こすことを暗示する留意し、及び/又は[(現在の観察されたRTT−現在の最新の記録されたRTTest(min)又は現在の観察されたOTT−現在の最新の記録されたOTTest(min))+T ms]をセットされたポーズインターバル
.対応する適当な方法/アルゴリズムを作動させるための、内部プロプラエタリネットワークのサブネットアドレスと外部インターネットとの間の区別
.パケット到着間技法を、「同期化パケット」技法と同様に、使用のために適合させることができる。
. CWND size percentage reduction, eg [(current observed RTT−current latest recorded RTTest (min) or current observed OTT−current latest recorded OTTest (min)) + T ms] / Current observed transmission rate decrement over RTT or OTT, but here using T = 0 ms implies that the throughput of the subsequent bottleneck link will be 100% of the available bandwidth. Note and / or [(current observed RTT−current latest recorded RTTest (min) or current observed OTT−current latest recorded OTTest (min)) + T ms]. Set pause interval. A distinction between the internal proprietary network subnet address and the external Internet to activate the corresponding appropriate method / algorithm. The inter-packet arrival technique can be adapted for use, similar to the “synchronization packet” technique.

.例えばpathchar/pipechar/pathchirp...などの帯域幅/リンクプロービング技法を、連合して展開して、トラバースされる経路/ノード/リンクの知識のより微細なレベルを導出して、それ相応によりよく反応することができる。   . For example, pathchar / pipechar / pathchirp. . . Bandwidth / link probing techniques such as can be deployed jointly to derive a finer level of knowledge of the traversed path / node / link and react accordingly better.

.最大ウィンドウサイズネゴシエーションを可能にするためのユーザ入力外部インターネット接続速度、例えばダイヤルアップから5Kバイト、しかし、ISPは、64Kバイト/秒さえバッファリングし、例えば5Kバイト毎秒でユーザの56Kbsダイヤルアップに転送することができ、これは、例えばトラバースされる経路が長々しい、例えば数秒のRTT又はOTTを導入した時に非常に便利になるはずである。   . User input external internet connection speed to allow maximum window size negotiation, eg 5 Kbytes from dialup, but ISP even buffers 64 Kbytes / second and forwards to the user's 56 Kbs dialup, eg 5 Kbytes per second This can be very convenient when, for example, introducing a long traversed path, for example a few seconds of RTT or OTT.

.「ポーズ」する/CWNDを減らす非常に早い反応時間は、パケットドロップパーセンテージを最小にし、「連続ポーズ」は、さらに、送信レート減分サイズを非常に柔軟に、すなわち、例えばRTTあたり64Kバイトから例えば300msあたりわずか40バイトに減らす。   . A very fast reaction time that “pauses” / reduces CWND minimizes the packet drop percentage, and “continuous pause” also makes the transmission rate decrement size very flexible, ie for example from 64 Kbytes per RTT, for example Reduce to only 40 bytes per 300ms.

.TCPは、高RTTフローに生得的に不公平であり、我々は、例えばパケット到着間インターバル技法を利用して、これを除去する。   . TCP is inherently unfair to high RTT flows, and we remove this using, for example, an interpacket interval technique.

.送信するソースTCPの送信レート/スループットを減らすための、複数のACKの抑制すなわち送信するソースへの前方への転送でのわずかな遅延
.100%に近いボトルネックリンク(1つ又は複数)の帯域幅容量利用度/スループットを常時維持することができることによって、バッファオーバーフロード輻輳パケットドロップ及び/又は物理送信エラーパケットドロップの後であっても、変更されたTCPは、リンク(1つ又は複数)の帯域幅容量を非常に不十分に利用する既存RFCのTCP(既存RFCのTCPのAIMD加法増加乗法減少「鋸歯」利用度/スループットグラフから非常に明白であるとおり)と比較して、よいスループット/ボトルネック帯域幅利用度を約2倍にすることを可能にする。
. Suppressing multiple ACKs to reduce the transmission rate / throughput of the sending source TCP, ie a slight delay in forward forwarding to the sending source. Even after a buffer overflowed congestion packet drop and / or a physical transmission error packet drop by being able to maintain bandwidth capacity utilization / throughput of bottleneck link (s) close to 100% at all times The modified TCP is a very poor use of the bandwidth capacity of the link (s) from the existing RFC TCP (from the existing RFC TCP AIMD additive increase multiplicative decrease "saw tooth" utilization / throughput graph Compared to (as is very clear) good throughput / bottleneck bandwidth utilization can be doubled.

さらなる注及びさらなる方法
パケット到着間インターバル(例えば300ms)技法は、任意選択として、有効ウィンドウ全体分より少ないパケットが受信/送信される時に限ってアクティブにすることができる:そうでない場合には、300msは、例えばOTT又はRTT>例えば300ms(戻るACKがセンダに戻って到着するために)の時に新しいパケット(1つ又は複数)を受信せずに経過する可能性がある:例えば現在の有効ウィンドウサイズより大きい、より小さい、又はこれと等しいかどうかを調べるために、最新の受信されたSeqNo−最新の送信されたACK番号をチェックしてもよい。
Further Notes and Further Methods The inter-packet arrival interval (eg, 300 ms) technique can optionally be activated only when less than the entire valid window is received / transmitted: otherwise 300 ms May elapse without receiving new packet (s), for example when OTT or RTT> eg 300 ms (because the returning ACK arrives back to the sender): eg current effective window size To check if it is greater than, less than or equal to, the latest received SeqNo—the latest transmitted ACK number may be checked.

リモートサーバがタイムアウトせず、CWND及び/又はSSthreshに1MSS又は2MSSをセットしないように、任意選択として、SYNC/SYNC ACK/ACKの後(又は1つ若しくは2つのまさに最初の受信された通常のデータパケットの後...)に例えば500msおきに3+DupNum個のDUP ACKを送信し続けてもよい。センダTCPは、例えば送信された最初の通常のデータパケットの戻るACK−送信されたSYNC ACKの戻るACK RTT>C ms、例えば100ms(トラバースされる経路の輻輳レベルの非常に突然の増加に起因する)である場合に、データパケット転送の最初の64Kバイト中にアルゴリズムを利用してもしなくてもよい。   Optionally, after SYNC / SYNC ACK / ACK (or one or two of the first received normal data, so that the remote server does not time out and set CMSND and / or SSthresh to 1MSS or 2MSS. For example, 3 + DupNum DUP ACKs may continue to be transmitted every 500 ms after the packet. The sender TCP is eg due to a very sudden increase in the congestion level of the traversed path, for example the return ACK of the first normal data packet transmitted-the return ACK of the transmitted SYNC ACK RTT> C ms, eg 100 ms. ), The algorithm may or may not be used during the first 64K bytes of the data packet transfer.

洗練された仕様
まず、レジストリエントリをセットし、はるかに好ましくSACKをイネーブルし、Delay Acknowledgementをディスエーブルする。
Refined specifications :
First, set the registry entry, enable SACK much more preferably, and disable Delay Acknowledgment.

コマンドライン入力パラメータ:
− WaitTimeStamp(ms) − 「ネットワーク輻輳ドロップ」を推論するための、経過したパケット到着間インターバル
− PauseTimeStamp(ms) − 「輻輳」時のリモートサーバポーズインターバル
− DupNum − リモートサーバは、3DUP ACK高速再送信フェーズ中に、受信される追加のDUP ACKごとにCWNDサイズをさらに増分し、我々は、この技法を使用して、大きい数DupNum個のDUP ACKを送信して、CWNDをランプアップする。
Command line input parameters:
-WaitTimeStamp (ms)-Interval between elapsed packet arrivals to infer "network congestion drop"-PauseTimeStamp (ms)-Remote server pause interval during "congestion"-DupNum-Remote server 3DUP ACK fast retransmission During the phase, the CWND size is further incremented for each additional DUP ACK received, and we use this technique to send a large number of DupNum DUP ACKs to ramp up the CWND.

− Offset − 0又は1、記録された最新の更新されたdwACKNumber(すなわち、レシーバMSTCPによってリモートサーバに送信されたACKNoの最新の最大値)をセットされた場合にはDUP ACK内のACKNoフィールドが働くかどうかは非常に確かではなく、あるいは、1バイトを減算した後に限って働く。   -Offset-0 or 1, the ACKNo field in the DUP ACK will work if the latest updated dwACKNumber recorded (ie the latest maximum ACKNo sent by the receiver MSTCP to the remote server) is set Is not very sure, or only works after subtracting one byte.

1.発信TCPパケット(我々のMSTCPからリモートホストへのパケット)を処理するプロシージャ
必要な場合にはこのパケットのTCP接続の新しいエントリを作成する。私は、次のいくつかの変数を記録しなければならない。
1. Procedure to handle outgoing TCP packets (packets from our MSTCP to remote hosts) Create a new entry for the TCP connection for this packet if necessary. I have to record several variables:

− dwACKNumber(ACKフラグがシグナリングされる場合) − TCPヘッダのACKフィールド
− dwSEQNumber − TCPヘッダのSeq Numberフィールド
− dwTCPState − このTCB変数は、あなたが好む任意の形で、TCP接続状態を制御するためにあなた自身が使用するためのものである。
-DwACKNumber (when ACK flag is signaled)-ACK field in TCP header-dwSEQNumber-Seq Number field in TCP header-dwTCPState-This TCB variable can be used to control the TCP connection state in any way you like It is for your own use.

シーケンスSYN/ACK内の第3ACKパケット内のdwMaxRcvWindowSizeを記録するためにSYNC/SYNC ACK/ACKを監視する:フローごとのTCPは、リモートサーバに送信する我々のレシーバMSTCPからのSYNCを検出した時にのみ作成されなければならない(それ以外の場合に作成してはならない)。   Monitor SYNC / SYNC ACK / ACK to record dwMaxRcvWindowSize in the 3rd ACK packet in sequence SYN / ACK: TCP per flow only when it detects SYNC from our receiver MSTCP sending to remote server It must be created (it must not be created otherwise).

TCP接続SYNC/SYNC ACK/ACKでACK応答パケットを送信した直後に、最初のデータパケットを受信する前であっても(これがリモートサーバのCWNDを増分するように働くと仮定して)、ACK番号=dwACKNumber−Offset(dwAckNumber − はTCP接続SYNC/SYNC ACK/ACKシーケンスの3番目のACK応答パケットのACK番号である)とdwMaxRcvWindowSizeフィールド値とdwSEQNumberフィールド値とを有する3+DupNum個のDUP ACKを生成する。まさに最初のデータパケットが到着するまで、WaitTimeStampインターバルおきに3+DupNum個のDUP ACKを送信し続ける(***注:ステップ3は、プログラムフロー内でまさに最初のデータパケットが到着した後に限ってアクティブ化され、ステップ2は、実際に、常時即座にアクティブである)。   ACK number immediately after sending an ACK response packet with TCP connection SYNC / SYNC ACK / ACK, even before receiving the first data packet (assuming this works to increment the remote server's CWND) = DwACKNumber-Offset (dwAckNumber- is the ACK number of the third ACK response packet in the TCP connection SYNC / SYNC ACK / ACK sequence), dwMaxRcvWindowSize field value, and 3 + DupNum generating dwSEQNumber field value. Continue to send 3 + DupNum DUP ACKs every WaitTimeStamp interval until the very first data packet arrives (*** Note: Step 3 is activated only after the very first data packet arrives in the program flow) Step 2 is actually always immediately active).

2.リモートセンダTCPからのFIN又はRST及びローカルMSTCPからのRSTに関する着信パケットを監視する → 次に、TCPフローを即座に終了し、そうでない場合には、進行中のプロセス/ループアクティビティにかかわりなく、16秒の総インアクティビティ(すなわち、あらゆるタイプの着信/発信パケットなし)の後に終了する。   2. Monitor incoming packets for FIN or RST from remote sender TCP and RST from local MSTCP → then immediately terminate the TCP flow, otherwise 16 regardless of ongoing process / loop activity, End after a total inactivity of seconds (ie no incoming / outgoing packets of any type).

3.TCPフローをチェックするプロシージャ(3+DupNum個のDUP ACKの送信及び/又はウィンドウ更新パケットループの途中であっても、ACKNo及びSeqNoは、必ず、ローカルレシーバのMSTCPからの、瞬間的な最新の送信された「最大の」ACKNo、「最大」なのでMSTCP再送信のより小さいACKNoは無視される、及び最新の送信された「最大の」SeqNoを反映しなければならないことに留意されたい)。   3. Procedure to check TCP flow (3 + DupNum DUP ACK transmission and / or even in the middle of a window update packet loop, ACKNo and SeqNo are always sent from the local receiver's MSTCP instantaneously latest Note that “maximum” ACKNo, “maximum”, so the smaller ACKNo of MSTCP retransmissions is ignored and should reflect the most recently transmitted “maximum” SeqNo).

接続が確立され、任意のTCPフローについてリモートホストから我々のMSTCPへの次のパケットを受信せずにWaitTimeStampミリ秒が満了する場合には、3つのDUP ACK+DupNum個のDUP ACKを次々にすばやく連続して送信して、ACK番号=最新の更新されたdwACKNumber(上で記録された)引くOffsetフィールド値及びdwSEQNumberフィールド値を伴う、0バイトのウィンドウサイズをアドバタイズする。   If the WaitTimeStamp milliseconds expire without receiving the next packet from our remote host to our MSTCP for any TCP flow, we will continue to quickly sequence 3 DUP ACKs + DupNum DUP ACKs one after another And advertise a window size of 0 bytes with the ACK number = latest updated dwACKNumber (recorded above) minus Offset field value and dwSEQNumber field value.

ACK又は通常のデータパケットが次にもう一度リモートホストから受信されるまで、上記の3+DupNum個のDUP ACKを100msおきに送信し続ける。   The above 3 + DupNum DUP ACKs continue to be transmitted every 100 ms until an ACK or normal data packet is next received from the remote host again.

あるいは、PauseTimeStampミリ秒が、今、次のパケットを受信せずに経過し、そのどちらが先に発生しても(注:3+DupNum個のDUP ACKのすべての保留中だが未送信の部分は、今、次のパケット又は経過したPauseTimeStampの時に即座に停止しなければならない)、その後、次の通常のデータパケット(純ACKではなく)がリモートホストからもう一度到着するまで、サイズ=dwMaxRcvWindowSizeの単一の純ウィンドウサイズ更新(AckNoフィールドにdwACKNumber−OFFSETをセットされ、DUP ACKではなく...など、且つdwSEQNumberフィールド値を有する)を50msインターバルおきに繰り返して送信し続け、次の通常のデータパケットが到着した時には、この後に、我々は、上記のステップ3の先頭でもう一度ループする(すなわち、リモートサーバを「ポーズ」するためにリモートホストからパケットを受信せずにWaitTimeStampをもう一度待つ......など)。   Alternatively, PauseTimeStamp milliseconds now passes without receiving the next packet, whichever occurs first (Note: all pending but untransmitted parts of 3 + DupNum DUP ACKs are now Must stop immediately at the next packet or past PauseTimeStamp), then a single pure window of size = dwMaxRcvWindowSize until the next regular data packet (not a pure ACK) arrives again from the remote host Continue to repeatedly transmit size updates (dwACKNumber-OFFSET in the AckNo field, not DUP ACK, etc., and with dwSEQNumber field value) every 50 ms interval, and the next normal data After this, we loop again at the beginning of step 3 above (ie, wait for WaitTimeStamp again without receiving a packet from the remote host to “pause” the remote server ...). ...Such).

ブロードバンドネットワーク(国際バックボーントランスポートを介するものであっても)は、非常に非常に低ロスレートであり、非常に非常に低輻輳である。   Broadband networks (even over international backbone transport) have very very low loss rates and very very low congestion.

http(ポート80シグネチャ)フローは、例えば64Kバイトのコンテンツ全体を例えば1RTTで送信することを許可されなければならない。SYNC/SYNC ACK/ACKフェーズが再送信(RFCは1秒をデフォルトとする...)に出会う場合であっても、これは、最初の64KバイトCWNDの使用を奨励するだけであるはずである。というのは、ボトルネックリンクに沿ったフローが、今や、レートを半分にされる可能性が高く...おそらく間隔をおかれてもよく(R msごとに1パケットを送信するレートペーシング、その結果、64Kバイトは、1秒にわたって均等に間隔をおかれて送信されるようになる....)、したがって、戻るACK到着間経過インターバル、例えば100又は300msなどから(送信されたSeqNoと期待され且つ経過したインターバルの後に到着しない対応する戻るACKと...が、遅延肯定応答を使用してはならないが、利用される場合に遅延肯定応答について調整することができる場合...)RFCデフォルト1秒ではなくRTT+(例えば100ms又は300ms)以内に「検出された」トリガイベント(通常はパケットドロップ...)について即座に「ポーズ」する → 捨てられる可能性が高い場合に不必要にパケットを送信しない!。64Kバイト初期CWNDは、よい選択であるはずである...ラストマイル56Kとブロードバンド媒体物理回線レートとの両方にうまく対処する。   The http (port 80 signature) flow must be allowed to send, for example, 1 RTT of the entire content of, for example, 64 Kbytes. Even if the SYNC / SYNC ACK / ACK phase encounters a retransmission (RFC defaults to 1 second ...) this should only encourage the use of the first 64K byte CWND. . This is because the flow along the bottleneck link is now likely to be halved. . . May be spaced (rate pacing sending one packet every R ms, so that 64 Kbytes will be sent evenly spaced over one second ...), Thus, from an elapsed interval between return ACK arrivals, such as 100 or 300 ms (corresponding return ACKs that are expected to be sent SeqNo and do not arrive after the elapsed interval ... should not use delayed acknowledgments. Can be adjusted for delayed acknowledgments when used ...) RFC detected "triggered" trigger events within RTT + (eg 100ms or 300ms) instead of 1 second (usually packet drop ...) )) Immediately → Pause unnecessarily when it is likely to be thrown away Do not send the Tsu door! . The 64K byte initial CWND should be a good choice. . . Addresses both the last mile 56K and the broadband media physical line rate.

さらに、記録された戻るACK到着間インターバルの最小値...などから、ラストマイル媒体物理回線レート(56K、ブロードバンド...など)を、曖昧でなく有用に導出することができる。   In addition, the minimum recorded inter-arrival ACK interval. . . From the above, the last mile medium physical line rate (56K, broadband, etc.) can be derived usefully without ambiguity.

レシーバは、ローカルMSTCPが自力で通常に自発的にACKNoフィールド=<リモートTCPからの最新の記録された最大の受信されたSeqNoを有するパケットを送信する(すなわち、例えば、受信されたSeqNo内の「ギャップ」...など)のを検出する時に必ず、又は、リモートTCPからタイムアウト再送信を受信して(例えば、戻るACKs又は送信された3+DupNum個のDUP ACKが失われた...など)、リモートCWNDをもう一度ランプアップする(リモートCWNDは、今や、タイムアウト後に1MSS又は2MSSへ下に戻って下落する...)時に、3+DupNum個のDUP ACK(ACKNoフィールドに最新の最大の記録された送信された発信ACKNoをセットされて)を送信してもよい。   The receiver will send a packet with the ACKNo field = <the latest recorded maximum received SeqNo from the remote TCP (ie, for example, “ Every time a gap is detected, or when a timeout retransmission is received from a remote TCP (eg, returned ACKs or 3 + DupNum DUP ACKs transmitted, etc.). When the remote CWND is ramped up again (the remote CWND now falls back down to 1MSS or 2MSS after a time-out ...), 3 + DupNum DUP ACKs (the latest recorded recorded in the ACKNo field) Send outgoing ACKNo) May be.

既存TCP輻輳制御に対する新しい形は、次になるはずである。   The new form for existing TCP congestion control should be:

1.例えばTCP接続ネゴシエーション中にWindow Scalingオプション(例えば64K+ウィンドウスケール)を使用して、スケーリングファクタ0−14を介して「任意の」大きい値、例えば2^30(1ギガバイト)...に初期化されたセンダTCPWindowSize及びレシーバTCPWindowSize(スケールファクタ0=スケーリングオプションをセットする必要がない、RFC 1323を参照されたい)。   1. For example, using a Windows Scaling option (eg, 64K + window scale) during TCP connection negotiation, “arbitrary” large values, eg 2 ^ 30 (1 gigabyte), via a scaling factor 0-14. . . Sender TCP Window Size and Receiver TCP Window Size initialized to 0 (scale factor 0 = no need to set scaling option, see RFC 1323).

2.レシーバTCP(又はレシーバモニタソフトウェア...など)は、SYNC/SYNC ACKの際に4Kバイト/16Kバイト/64Kバイト/又はW1 Kバイト...などのウィンドウサイズを用いてACKし、4Kバイト/16Kバイト/64Kバイト/又は任意の指定された個数のW1若しくはW1 Kバイトの分数を受信した時に、アドバタイズされるレシーバウィンドウサイズをW2 Kバイト、例えばN2*(4Kバイト/16Kバイト/64Kバイト/又はW1 Kバイトなど)に増やし、ここで、N2は、データ通信が完了するまで、分数、例えば1.5/2.0/3.5/5.0などであり、又は、W3、W4.....Wn....などについて....などのアルゴリズム的に導出された部分である(合計2^30すなわち1Gバイト未満)。   2. The receiver TCP (or the receiver monitor software, etc.) is 4 Kbytes / 16 Kbytes / 64 Kbytes / or W1 Kbytes in the case of SYNC / SYNC ACK. . . ACK using a window size such as 4 Kbytes / 16 Kbytes / 64 Kbytes / or the receiver window size advertised when any specified number of W1 or W1 Kbyte fractions is received, W2 Kbytes, For example, increase to N2 * (4 Kbytes / 16 Kbytes / 64 Kbytes / or W1 Kbytes, etc.), where N2 is a fraction, eg, 1.5 / 2.0 / 3.5 / 5.0, or W3, W4. . . . . Wn. . . . About etc. . . . And so on (a total of 2 ^ 30, that is, less than 1 Gbyte).

レシーバベースドモニタソフトウェア...などが、インターセプトされたレシーバMSTCP発信パケットを変更し、アドバタイズされるレシーバウィンドウサイズ...を変更し(変更されたパケットをリモートセンダTCPに転送する前に)、したがって、継続的に増分されるアドバタイズされるレシーバウィンドウサイズだけに基づく新しいTCP輻輳制御方法を達成できることに留意されたい。   Receiver-based monitor software. . . Etc. modify the intercepted receiver MSTCP outgoing packet and advertise the receiver window size. . . Note that a new TCP congestion control method based on only the continuously advertised receiver window size can be achieved (before forwarding modified packets to the remote sender TCP).

及び/又は
センダTCP(又はセンダモニタソフトウェア...など)は、SYNC時に、例えば4Kバイト/16Kバイト/64Kバイト/又はW1 Kバイト...などのウィンドウサイズを用いてSYNC ACKし、4Kバイト/16Kバイト/64Kバイト/又は任意の指定された個数のW1若しくはW1 Kバイトの分数を肯定応答する戻るACKを受信した時に、センダウィンドウサイズをW2 Kバイト、例えばN2*(4Kバイト/16Kバイト/64Kバイト/又はW1 Kバイトなど)に増やし、ここで、N2は、データ通信が完了するまで、分数、例えば1.5/2.0/3.5/5.0などであり、又は、W3、W4.....Wn....などについて....などのアルゴリズム的に導出された部分である(合計2^30すなわち1Gバイト未満、超える場合にはおそらく例えばSeqNoラップアラウンドの際のようにウィンドウサイズをラップアラウンドし、あるいは新しいTCP接続を継続する...など)。
And / or Sender TCP (or Sender monitor software, etc.) is, for example, 4 Kbytes / 16 Kbytes / 64 Kbytes / or W1 Kbytes. . . SYNC ACK using a window size such as 4K bytes / 16K bytes / 64K bytes / or the sender window size when receiving a return ACK that acknowledges any specified number of W1 or W1 Kbyte fractions Increase to W2 Kbytes, eg N2 * (4 Kbytes / 16 Kbytes / 64 Kbytes / or W1 Kbytes, etc.), where N2 is a fraction, eg 1.5 / 2.0 /, until data communication is complete 3.5 / 5.0 or the like, or W3, W4. . . . . Wn. . . . About etc. . . . (If the total is less than 2 ^ 30, that is, less than 1 Gbyte, it will probably wrap around the window size, eg as in SeqNo wraparound, or continue with a new TCP connection. ..Such).

センダベースドモニタソフトウェア...などが、リモートレシーバからのインターセプトされた着信パケットを変更し、アドバタイズされるレシーバウィンドウサイズ...を変更し(変更されたパケットをセンダTCPに転送する前に)、したがって、継続的に増分されるアドバタイズされるレシーバウィンドウサイズだけに基づく新しいTCP輻輳制御方法を達成できることに留意されたい。   Sender-based monitor software. . . The receiver window size that is advertised by modifying the intercepted incoming packet from the remote receiver. . . Note that a new TCP congestion control method can be achieved based on only the advertised receiver window size that is continuously incremented (before forwarding modified packets to the sender TCP).

TCPが、対称であることができ、一端が、センダとレシーバとの両方であることができる、すなわち、上記の方法が、方向性で実施される必要があることにも留意されたい。   It should also be noted that TCP can be symmetric and one end can be both a sender and a receiver, i.e. the above method needs to be implemented in a directional direction.

この方法は、任意により微細でより柔軟なよりさまざまなパケット送信の制御/ペーシングを可能にすると同時に、(必要な場合に)スロースタート/輻輳制御線形増加/3DUP ACK高速再送信/タイムアウト...などのすべての他の既存のTCPエラー制御/輻輳制御機構を保存する(又は、類似する対応する機構を提供した)。   This method allows arbitrarily finer and more flexible control / pacing of packet transmissions, while at the same time (when necessary) slow start / congestion control linear increase / 3DUP ACK fast retransmission / timeout. . . Save all other existing TCP error control / congestion control mechanisms (or provide a similar corresponding mechanism).

例えば、CWNDをランプアップするための3+DupNum個のDUP ACKの送信の以前の方法(又はDivisional ACK技法若しくはOptimistic SACK技法...など)(例えば、初期高速再送信でのSSthresh値への付随する損害、Optimistic ACKを使用する場合のエンドツーエンドTCPセマンティクス...などを伴う)ではなく、同一の目的及びより多くを、よりよく達成することができる(例えば、付随する不利益なしの、例えば3+DupNum個のDUP ACKによるアドバタイズされるウィンドウサイズ値の増分...など)。   For example, previous methods of transmission of 3 + DupNum DUP ACKs to ramp up CWND (or Divisional ACK technique or Optimistic SACK technique, etc.) (eg, concomitant damage to SSthresh value at initial fast retransmission) , With end-to-end TCP semantics when using Optimistic ACK, etc.), but the same objectives and more can be better achieved (eg, without the associated disadvantages, eg 3 + DupNum The advertised window size value by DUP ACKs, etc.).

センダのCWNDは、所望の初期値4Kバイト/16Kバイト/64Kバイト/又はW Kバイト...などになるように初期化されなければならず、あるいは、レシーバは、例えば3+DupNum個のDUP ACK又はさまざまな時の一連のそのようなDUP ACK又はOptimistic ACK...などを送信して、CWNDを当初にランプアップすることができる(既存RFC 2414/3390は、既に、4Kバイト初期CWND値を許容し、その場合に、CWNDをランプアップする必要はない)。現在のインターネット上の既存サーバは、既に、SSthreshに任意の大きい値(例えば=TCPウィンドウサイズ値)をセットし、これは、CWND値のすばやい指数関数的ランプアップを可能にするはずであるが、大きいSSthreshセッティングがない場合に、レシーバは、多数例えば3+DupNum個のDUP ACKを送信して、CWNDの線形ランプアップを引き起こすことができる(例えば、1000個のDUP ACK=40Kバイト=320Kビット、これは、ブロードバンドを用いて十分に1秒未満ですべてを送信して、1KバイトのSMSSを仮定すれば1MバイトまでCWNDをランプアップし、あるいは16というスケーリングされたウィンドウファクタの場合に16MバイトまでCWNDをランプアップすることができる)。例えば16のスケーリングされたウィンドウファクタを用いると、最小ウィンドウサイズ増分分解能は、16バイトになるすなわち、例えば5/8/15...バイトなどによる増分は不可能になるはずである。連続的に増分されるアドバタイズされたレシーバウィンドウサイズ法を用いると、レシーバは、センダが均等に間隔を置かれた/パケット間で均等に遅延されたパケットを送出する必要なしに、パケット注入のセンダのレートを「レート制限する」ことができる。この方法を十分に利用するのに、ウィンドウスケールファクタなしで十分である可能性がある(例えば、スケーリングオプションなしの例えば64KバイトのTCPウィンドウサイズ)ことに留意されたい。というのは、許容可能な送信ウィンドウが、受信されるすべての戻るACKに伴って「大きくなる」すなわち、レシーバが、ネットワーク状態のトリガイベントの知識(及び/又は例えば受信された最新の有効SeqNo/送信された最新の有効ACKNoの知識...など)を利用して、アドバタイズされたレシーバウィンドウサイズを継続的に増分し/減分し/調整して、輻輳したネットワークが「トリガイベント」を介して検出され、rwndを例えば48/56/64Kバイト...などに拡大する時に、rwndを、したがって例えば4/16/32/40Kバイト...などのrwnd値のmin(cwnd,rwnd,swnd)であるセンダの有効ウィンドウサイズを、したがって、ネットワークが輻輳していない/十分に利用されていないことが検出される時にセンダの有効ウィンドウサイズを継続的に調整することができるからである。この方法を、それ自体で又は例えば「ポーズ」法などの任意の他の方法と組み合わせて利用できることに留意されたい。注:同期化パケット法は、継続的に調整されるrwnd値を搬送することができる。   The CWND of the sender has a desired initial value of 4 Kbytes / 16 Kbytes / 64 Kbytes / or W Kbytes. . . Or the receiver can, for example, 3 + DupNum DUP ACKs or a series of such DUP ACKs or Optimistic ACK. . . Can be initially ramped up (existing RFC 2414/3390 already allows a 4K byte initial CWND value, in which case there is no need to ramp up CWND). Existing servers on the current Internet already set SSthresh to any large value (eg = TCP window size value), which should allow for a quick exponential ramp-up of the CWND value, In the absence of a large SSthresh setting, the receiver can send a large number of, for example, 3 + DupNum DUP ACKs to cause a linear ramp-up of CWND (eg 1000 DUP ACKs = 40K bytes = 320K bits, which is Send everything in less than 1 second using broadband and ramp up CWND to 1 Mbytes assuming 1 Kbyte SMSS, or CWND up to 16 Mbytes for a scaled window factor of 16 Lamp Can be For example, with a scaled window factor of 16, the minimum window size increment resolution will be 16 bytes, ie 5/8/15. . . Incrementing by bytes etc. should be impossible. With the continuously incremented advertised receiver window size method, the receiver can send the packet injection sender without the need for the sender to send packets that are evenly spaced / equally delayed between packets. Rate can be "rate limited". Note that to fully utilize this method, it may be sufficient without a window scale factor (eg, a TCP window size of, for example, 64 Kbytes without a scaling option). This is because the acceptable transmission window will “grow” with every return ACK received, ie the receiver will have knowledge of the triggering event of the network condition (and / or the latest valid SeqNo / Continually incrementing / decrementing / adjusting the advertised receiver window size using the latest effective ACKNo knowledge transmitted, etc.), so that the congested network is triggered via a “trigger event” Rwnd is detected, for example, 48/56/64 Kbytes. . . When expanding to rwnd, and thus for example 4/16/32/40 Kbytes. . . Continue the sender's effective window size which is the min (cwnd, rwnd, swnd) of the rwnd value such as when the network is detected to be not congested / not fully utilized It is because it can adjust automatically. Note that this method can be utilized by itself or in combination with any other method, such as a “pause” method. Note: The synchronized packet method can carry continuously adjusted rwnd values.

リモートサーバでの変更(初期CWND、SSthresh値セッティングに対する)を一切伴わずにレシーバ側のみでこの方法を実施するために、レシーバは、この方法をアクティブ化し、したがってCWNDが十分に大きくなる前に、ある秒数又はある個数のRTT又はある個数のパケットが経過し/受信されるのを待つために(介在するセンダのRTOタイムアウト及び/又はレシーバ高速再送信要求なしで:これらが発生する場合には、レシーバは、センダの保留中のRTOタイムアウトの前であってもすぐにこの方法をアクティブ化し...など、センダのRTOタイムアウトを避けること)を選択することができる、この故に、すべての高速再送信要求が十分に高いSStresh(=既にフライト中のすべてのパケットの後、3DUP ACKs高速再送信要求の前のCWND/2)を維持するはずである。要求された場合に、又はコンテンツ全体が通常は<64Kバイトであるhttpウェブサイトアクセスで有利に)、レシーバは、SYNC/SYNC ACK/ACKの直後に又は受信された1つ若しくは2つの通常のデータパケットの直後に、Optimistic ACK(ACKNo=受信された最新の有効なSeqNo+例えば4/16/32/64Kバイト...などを有する、これは、SSthreshに影響しない)によってCWNDを即座にランプアップすることができ、それと同時に、同一リモートIP番号と同一ポート番号と同一ソースIP番号とを有するが異なる指定されたポート番号を有する並列TCP接続を確立することができ、ここで、SYNC/SYNC ACK/ACKの直後又は受信された1つ又は2つの通常のデータパケットの直後に任意選択でセンダのCWNDを3+DupNum個のDUP ACKを用いてランプアップし、その結果、センダのCWNDは、今=例えば4/16/32/64Kバイト...などになる(又は、オリジナルTCPの初期データパケットがすべて成功して受信されてはいない時に限ってランプアップする):オリジナル接続が例えば4/16/32/64Kバイトのすべてを成功して受信した場合に、第2TCP接続を、今や、RSTリセットを介して即座に終了することができ、そうでない場合に(又は、オリジナルTCPと同時に)すべての欠けている初期4/16/32/64Kバイト分のパケット/セグメントを、第2TCP接続から入手することができる(例えば、変更されたソフトウェアによってオリジナルTCPレシーバソケットに転送する...変更されたソフトウェアは、必要な場合に、例えば最初の4/16/32/64Kバイト受信中のオリジナルTCP接続の認証パケットが存在する場合にその認証パケットなど、両方向でのすべてのパケットフローを記録することもでき、且つ、スクリプトは、最初の4/16/32/64Kバイト受信中の第2平行TCP接続に正確に同一のシーケンスを注入する)。CWNDが、例えばここで最大値64Kバイトに初期化された場合であっても、レシーバは、それでも、当初に2/4/8Kバイトのrwndを送信し、イベントに従ってrwndを増分し/調整する(例えば、ウィンドウ更新パケット又は通常のデータパケット)ことによって、例えば2/4/8バイト...などで開始して、センダの注入レートをペーシングすることができる。   In order to perform this method only on the receiver side without any changes at the remote server (for initial CWND, SSthresh value setting), the receiver activates this method and therefore before CWND is sufficiently large, To wait for a certain number of seconds or a certain number of RTTs or a certain number of packets to elapse / receive (without intervening sender RTO timeout and / or receiver fast retransmission request: The receiver can choose to immediately activate this method even before the sender's pending RTO timeout, etc., avoid the sender's RTO timeout, etc. Stresh with sufficiently high retransmission request (= after all packets already in flight, DUP ACKs fast retransmit a previous request CWND / 2) should be maintained. When requested or in favor of an http website access where the entire content is typically <64K bytes), the receiver can receive one or two normal data immediately after the SYNC / SYNC ACK / ACK or Immediately after the packet, CWND is ramped up immediately by Optimistic ACK (ACKNo = last valid SeqNo received + has 4/16/32 / 64K bytes ... etc., this does not affect SSthresh) At the same time, a parallel TCP connection having the same remote IP number, the same port number and the same source IP number but different designated port numbers can be established, where SYNC / SYNC ACK / One or two received immediately after ACK or received Ramps with 3 + DupNum number of DUP ACK the CWND sender optionally immediately after the normal data packet, as a result, CWND sender is now = example 4/16/32 / 64K bytes. . . (Or ramp up only when not all original TCP initial data packets have been successfully received): the original connection has successfully received all 4/16/32 / 64K bytes, for example In some cases, the second TCP connection can now be immediately terminated via an RST reset, otherwise (or at the same time as the original TCP) all missing initial 4/16/32 / 64K bytes Packets / segments can be obtained from the second TCP connection (eg, forwarded to the original TCP receiver socket by the modified software ... The modified software can, for example, make the first 4/16 if necessary. When there is an authentication packet of original TCP connection receiving / 32 / 64K bytes All packet flows in both directions, such as authentication packets, can be recorded, and the script injects exactly the same sequence into the second parallel TCP connection receiving the first 4/16/32 / 64K bytes To do). Even if CWND is initialized here to a maximum value of 64K bytes, for example, the receiver still initially sends 2/4 / 8K bytes of rwnd and increments / adjusts rwnd according to the event ( Window update packet or normal data packet), for example 2/4/8 bytes. . . Starting with, the sender injection rate can be paced.

注:例えば受信される最初の通常のデータパケット(又はより多くの...、又はセンダTCPからのSYNC ACKの受信の直後にさえ)を待って、その後にセンダのCWNDを例えばACKNoフィールドに通常の最大の最新の有効なSeqNo−1ではなく受信された最大の最新の有効なSeqNoをセットされた3+DupNum個のDUP ACKによってランプアップし(すなわち、TCPセッション全体を通じて最大の受信された1バイトをACKするのを抑制する、又は任意選択で)、且つ、その後、連続的に増分するアドバタイズされるレシーバウィンドウサイズ法を(両端での十分に大きいウィンドウスケーリングと一緒に)利用することによって、我々は、今、両端のTCP送信レートをトータルコントロール及び保存されたTCPセマンティクスの下に成功して置いている(且つ、「ポーズ」法を用いて、両端のTCPは、今、「ポーズ」輻輳制御だけを受けるフルワイヤスピードで送信することができる、すなわち、CWND、両端のTCPのウィンドウサイズ、SSthresh...などは、TCPフローが安定したならば、ある時点でさらなる役目を演じる必要がない...しかし、適当なより小さい値から開始し、例えばフル許容可能物理ワイヤスピードレート又は現在のrwndサイズによって許容される伝送速度まで増加する、連続的増分rwndを使用することが好ましい(フローは、今、「安定化」されるように増加した...)。   Note: For example, waiting for the first normal data packet received (or more ... or even immediately after receiving a SYNC ACK from the sender TCP), after which the sender's CWND is usually entered eg in the ACKNo field Ramp up with 3 + DupNum DUP ACKs set with the largest latest valid SeqNo received instead of the largest most recent valid SeqNo-1 (ie, the largest received 1 byte over the entire TCP session By using the advertised receiver window size method (along with sufficiently large window scaling at both ends), then suppress (or optionally) ACK, and then continuously increment Now, the TCP transmission rate at both ends is totally controlled and maintained. Has been successfully placed under existing TCP semantics (and using the “pause” method, the TCP at both ends can now transmit at full wire speed, subject to only “pause” congestion control, That is, CWND, TCP window size at both ends, SSthresh ..., etc., do not need to play an additional role at some point once the TCP flow is stable ... but start with a suitably smaller value, It is preferable to use a continuous incremental rwnd, for example increasing to a transmission rate allowed by the full allowable physical wire speed rate or the current rwnd size (the flow has now increased to be “stabilized”... .).

明らかに、センダの最大送信レートは、min(swnd,cwnd,rwnd)−肯定応答されていない送信されたセグメントに依存し(又は、ここでのswndが、同一の当初にネゴシエートされたウィンドウサイズスループットで固定されている場合に、肯定応答されていない送信されたセグメントは、swndを減らし、肯定応答されたセグメントは、swndを増やす)、且つ、RWND連続増分/減分/調整法は、これをrwnd更新で考慮する。   Obviously, the sender's maximum transmission rate depends on min (swnd, cwnd, rwnd)-unacknowledged transmitted segment (or where swnd is the same initially negotiated window size throughput) Transmitted segments that have not been acknowledged reduce swnd and acknowledged segments increase swnd), and the RWND continuous increment / decrement / adjustment method Consider in rwnd update.

また、リモートサーバTCP送信レートを、今、rwndだけを調整することによってペーシングすることができる(リモートサーバのcwnd、ssthresh、swndは、今、必ず、任意に大きい又は非常に大きい値に維持することができる)ので、レシーバベースドソフトウェアは、rwndウィンドウ更新の値の動的選択を介してリモートセンダの送信レートを動的にペーシングすることができ、したがって、リモートサーバTCP宛のすべてのインターセプトされたレシーバMSTCP生成パケット内のすべてのrwndフィールド値を、センダの送信レートをペーシングするのに必要なrwnd値に変更することができる(これは、パケットチェックサム再計算変更を必要とするはずである)。   Also, the remote server TCP transmission rate can now be paced by adjusting only rwnd (remote server cwnd, ssthresh, swnd is now always kept arbitrarily high or very large) Receiver-based software can dynamically pace the remote sender's transmission rate via the dynamic selection of the rwnd window update value, and thus all intercepted receivers destined for the remote server TCP. All rwnd field values in the MSTCP generated packet can be changed to the rwnd value required to pace the sender's transmission rate (this should require packet checksum recalculation changes).

レシーバベースドソフトウェア/TCP(センダベースドソフトウェア/TCP変更として実施することもできる)は、タイムスタンプフィールドから到着するOTT値を有利に監視することができ、OTT値が、小さい許容される変動(例えば、センダのOS/スタックCPU処理時間での小さい変動に起因する)の中で最新のOTTest(min)と同一(又は、以前に既知の実際の非輻輳OTTと同一)のままになる間に、レシーバベースドソフトウェア/TCPは、達成された最新の最大のrwndを書き留める → これは、その間に経路をトラバースするパケットが多くとも上と同一の小さい許容される変動(及び/又は+許容される累積バッファ遅延、例えば0ms/50ms/100ms...などの追加のB ms)のバッファ遅延又は累積バッファ遅延に全く出会わない、これまでに達成された最大のrwnd値を与える → その後、パケットが輻輳ドロップされる時に必ず、レシーバベースドソフトウェアは、有利に/任意選択でrwnd更新値(インターセプトされたパケット内の変更されるrwndフィールド値)に、前述で定義されるこの最新の最大の記録されたrwnd値をセットすることができる → すなわち、輻輳ドロップイベント及び/又は高速再送信イベント...などの際に、レシーバは、センダの送信レートの維持されたペースに継続し、その結果、レートを、輻輳していないトラバースされた経路条件の下のフローによって達成されたヒストリカル最高レートで維持することができるようになり、したがって、非常に理想的な高いリンク帯域幅利用度が維持されるようになる。さらに、レシーバソフトウェア/TCPは、到着するOTT値が最新の(又は実際の非輻輳OTT)OTTest(min)を超えないすなわち、経路に沿ったバッファ遅延がない限り、継続的にrwndを増分することができ(スロースタート指数関数rwnd増大及び/又は輻輳回避線形増大のどちらをエミュレートするにせよ)(及び/又は任意選択で、到着するOTTがOttest(min)を超える場合に下向きに減分する、さらに、しかし、到着するOTT値が、例えば指定された10ms/50ms/100ms...などだけ最新の(又は既知の実際の非輻輳OTT)OTTest(min)を超える(例えば、パケットがバッファリングされ始める時であってもそのレートを増分する他の未変更既存TCPフロー又はUDPトラフィックに起因する)時に、レシーバベースドソフトウェア/TCPは、今や、rwndをもう一度増分することを許可することを選択することができる...。   Receiver-based software / TCP (which can also be implemented as a sender-based software / TCP change) can advantageously monitor the OTT value arriving from the timestamp field, where the OTT value has a small allowable variation (eg, While remaining the same as the latest OTTest (min) (or the same as the previously known actual non-congested OTT) in the sender's OS / stack CPU processing time) Base software / TCP notes the latest maximum rwnd achieved → this is the same small allowable variation (and / or + allowed cumulative buffer delay) that the packet traversing the path in the meantime is at most the same as above For example, additional B ms) such as 0 ms / 50 ms / 100 ms ... Gives the maximum rwnd value achieved so far without encountering any fa delay or accumulated buffer delay → After that, whenever a packet is congestion dropped, the receiver-based software advantageously / optionally updates the rwnd update value ( This latest maximum recorded rwnd value as defined above can be set in the intercepted packet (modified rwnd field value) → ie congestion drop event and / or fast retransmission event. . . The receiver continues at the maintained pace of the sender's transmission rate, so that the rate is maintained at the historical highest rate achieved by the flow under uncongested traversed path conditions So that very ideal high link bandwidth utilization is maintained. Furthermore, the receiver software / TCP continuously increments rwnd unless the incoming OTT value exceeds the latest (or actual non-congested OTT) OTTest (min), ie, there is no buffer delay along the path. (Whether emulating slow start exponential rwnd increase and / or congestion avoidance linear increase) (and / or optionally decrement downward if the incoming OTT exceeds Ottest (min) In addition, however, the incoming OTT value exceeds the latest (or known actual non-congested OTT) OTTest (min), eg, as specified 10 ms / 50 ms / 100 ms, etc. (eg, packet buffering Other unmodified existing TCP flows or U that increment its rate even when it starts P due to traffic) at the time, receiver-based de software / TCP is, now, it is possible to choose to allow you to once again increment the rwnd ....

経路に沿ったすべてのTCPフロー(その帯域幅の最小の保証された部分をTCPフローに、及びある部分をUDPに...などに便利に割り当てることもできる)が、直前の段落で述べた変更されたTCPである場合に、そのようなTCPが、必ずバッファリングが要求されることを全く引き起こさないことに留意されたい → ほとんど完全に輻輳していない/バッファリングされない経路が常時維持される。先在する変更されたTCPがトラバースされるリンクの全帯域幅のフル利用度を既に一緒に達成した時に、新たに確立される変更されたTCPの増大を可能にする公平な共有を保証するために、新たに確立されるTCPは、例えばOTTest(min)又はRTTest(min)又はそれらの既知の実際の値の100msの余分の遅延を超えないところまでその送信レート又はrwnd又はcwndを増大させることを許可されることができ、すべての変更されたTCPは、例えば>100msの余分の遅延を経験する時に、すべてが、ある比率、例えば10%/15%/25%...などだけその送信レート又はrwnd又はcwndを減らすはずである(これは、先在する確立されたフローに味方するが、新しい確立されたTCPがその送信レート増大を達成し始めることをも可能にする)。ここで、トラバースされるすべてのノードが例えば100ms同等分より多いバッファを有する限り、輻輳ドロップがないはずであることに留意されたい。もう1つの方式は、パケットがバッファリングされ始めることの始まり(最新のOTT又はRTTのOTTest(min)又はRTTest(min)の余分の遅延によって示される)まで、連続的な送信レート又はrwnd又はcwnd...などの増大を許容することであり、パケットがバッファリングされ始めることの始まりの時には、その送信レート又はrwnd又はcwndは、後ろ向きに1ステップだけ減分される(したがって、100%利用度レベルの前後での振動する前向きの増分及び後ろ向きの減分)。   All TCP flows along the path (conveniently assigning the smallest guaranteed part of that bandwidth to the TCP flow and some part to UDP, etc.), as described in the previous paragraph Note that in the case of modified TCP, such TCP will not necessarily cause any buffering to be required at all → Almost completely congested / unbuffered routes are always maintained . To ensure fair sharing that allows the newly established modified TCP to grow when the existing modified TCP has already achieved together the full utilization of the full bandwidth of the traversed link. In addition, the newly established TCP increases its transmission rate or rwnd or cwnd to the point where it does not exceed the 100 ms extra delay of eg OTTest (min) or RTTest (min) or their known actual value. When all modified TCPs experience an extra delay of, for example,> 100 ms, all have a certain ratio, eg 10% / 15% / 25%. . . Should reduce its transmission rate or rwnd or cwnd by, etc. (this favors an existing established flow, but also allows a new established TCP to begin achieving its transmission rate increase. ). Note that there should be no congestion drop as long as all nodes traversed have, for example, more than 100 ms equivalent buffer. Another scheme is the continuous transmission rate or rwnd or cwnd until the beginning of the packet begins to be buffered (indicated by the extra delay of the latest OTT or RTT OTTtest (min) or RTTest (min)). . . . Such that the transmission rate or rwnd or cwnd is decremented backward by one step (thus before or after the 100% utilization level). Oscillating forward increment and backward decrement at).

上記のさまざまな方式を、センダベースドTCPとして同様に簡単に実施できることにも留意されたい。   Note also that the various schemes described above can be easily implemented as sender-based TCP as well.

単純に例えば輻輳ドロップイベント(その時には、変更されたTCPは、全体的な輻輳していない条件の下での最大の達成された送信レート若しくはrwnd若しくはcwndサイズ又はそのパーセンテージ、あるいは単純に輻輳ドロップが発生する時の現在の送信レート若しくはrwnd若しくはcwndサイズのパーセンテージ...などに戻る)まで送信レート又はrwnd又はcwndの増大を可能にすることは、現在のRFC標準TCPフローとのよい共存を可能にする。「ポーズ」法が組み込まれる場合に、「ポーズ」インターバルは、検出された輻輳ドロップの直前の最新のOTT値又はRTT値及びOTTest(min)又はRTTest(min)あるいは既知の輻輳していない実際のOTT値又はRTT値から導出することもできる:例えば、輻輳ドロップイベントの直前の最新のOTTが700msであり、OTTest(min)が200msである場合には、今や、すべてのノードのバッファリングされたパケットを完全にクリアするために、「必要な」ポーズインターバルに例えば500ms(700ms−200ms)を、又は必要に応じてより多く、例えば600ms又はより少なく、例えば400msさえセットすることができる。   Simply, for example, a congestion drop event (at which time the modified TCP is the maximum achieved transmission rate or the rwnd or cwnd size or percentage thereof under the overall non-congested condition, or simply the congestion drop Allowing the transmission rate or rwnd or cwnd to increase to the current transmission rate when it occurs or back to a percentage of rwnd or cwnd size, etc.) allows good coexistence with current RFC standard TCP flows To. When the “pause” method is incorporated, the “pause” interval is the latest OTT value or RTT value just prior to the detected congestion drop and OTTest (min) or RTTest (min) or a known non-congested actual It can also be derived from the OTT value or the RTT value: for example, if the latest OTT just before the congestion drop event is 700 ms and the OTTTest (min) is 200 ms, now all nodes are buffered To completely clear the packet, the “required” pause interval can be set, for example, 500 ms (700 ms-200 ms), or more, for example 600 ms or less, for example even 400 ms.

複数の可能性の中の、例のレシーバベースド実施態様(センダベースドは、類似するがより単純になるはずであることに留意されたい)は、単に、レシーバが、ウィンドウスケールオプションを要求することであり、例えば、256Mバイトの最大値へのスケーリング(最大の可能なスケーリングは、1ギガバイトすなわち、2^14*64Kバイト又は通常のスケーリングされない16ビットウィンドウサイズを左に14回シフトするが、ここで、最大値256Mバイトは、12のウィンドウスケールファクタすなわち、2^12*64Kバイト又は通常のスケーリングされない16ビットウィンドウサイズを左シフトする:Google Search用語「window scale size」、http://rdweb.cns.vt.edu/public/notes/win2k−tcpip.htmhttp://support.microsoft.com/default.aspx?scid=kb;en−us;199947http://www.netperf.org/netperf/training/netperf−talk/0207.htmlhttp://www.ncsa.uiuc.edu/People/vwelch/net_perf/tcp_windo ws.htmlhttp://www.monkey.org/openbsd/archive/bugs/0007/msg00022.htmlhttp://www.freesoft.org/CIE/RFC/1072/4.htmhttp://www.freesoft.org/CIE/RFC/1323/5.htmhttp://www.networksorcery.com/enp/protocol/tcp/option003.htmhttp://www.ehsco.com/reading/19990628ncwl.html、Google Group Search用語「window scale size」、http://rdweb.cns.vt.edu/public/notes/win2k−tcpip.htmを参照されたい)は、4Kバイトレシーバウィンドウサイズ(4Kバイトは、たまたま、実験的RFCの初期CWND値に対応する)の最小の可能な分解能を与える。 Among the possibilities, an example receiver-based implementation (note that sender-based should be similar but simpler) is simply that the receiver requires a window scale option. Yes, for example, scaling to a maximum value of 256 Mbytes (the maximum possible scaling is to shift 1 gigabyte, ie 2 ^ 14 * 64 Kbytes, or the normal unscaled 16-bit window size 14 times to the left, where , The maximum value of 256 Mbytes left shifts the window scale factor of 12, ie 12 ^ 12 * 64 Kbytes or the normal unscaled 16 bit window size: Google Search terminology “window scale size”, http: //rdweb.cns .V http://support.microsoft.com/default.aspx?scid=kb;en-us;1999:// , http: // www . training / netperf-talk / 0207.html, http://www.ncsa.uiuc.edu/People/vwelch/net_perf/tcp_windo ws.html, http://www.monkey.org/openbsd/archive/bugs/0007 /msg00022.html, http://www.freesoft.org/CIE/RFC/1072/4.ht , Http://www.freesoft.org/CIE/RFC/1323/5.htm, http://www.networksorcery.com/enp/protocol/tcp/option003.htm, http://www.ehsco.com / Reading / 199990628 ncwl.html , Google Group Search term "window scale size", http://rdweb.cns.vt.edu/public/notes/win2k-tmpip ) (4K bytes happens to correspond to the initial CWND value of the experimental RFC), giving the minimum possible resolution.

1.リモートサーバは、スケーリングされたセンダウィンドウサイズを対応して選択することができるが、単純に、レシーバがスケーリングするが、それ自体のセンダのウィンドウサイズをスケーリングしないことを選択することを許容することもできる:これは、さほど重要ではない(そのようなネゴシエートされたウィンドウサイズ(1つ又は複数)が、ラストマイル及び/又はファーストマイルの物理帯域幅、例えば56K/500Kbs...などについて大きすぎる場合であっても)。   1. The remote server can select the scaled sender window size correspondingly, but it can simply allow the receiver to choose to scale but not to scale its own sender window size. Yes: this is not very important (such negotiated window size (s) is too large for the last mile and / or first mile physical bandwidth, eg 56K / 500 Kbs ...) Even).

注:センダが、レシーバに類似するウィンドウスケーリングファクタを行う場合に、これは、例えば単純にレシーバPCのTCPWindowSizeレジストリ値に例えば1をセットし、例えば2^14の例えばスケールファクタ(最小ウィンドウサイズ分解能は、今は約4Kバイトである)をセットすることによって、必要なすべての新しいソフトウェア又は変更されたTCPなしで、この方法の非常に単純で準備のできた使用を可能にすることができ、したがって、センダの有効送信ウィンドウは、レシーバが今はそのrwndに多くとも4Kバイトを常時セットするだけであるはずなので、常時、約4Kバイトまでに制限される(2のTCPWindowSizeレジストリ値及び14のスケーリングされたファクタというレシーバPCのレジストリセッティング又はアプリケーションソケットバッファのセッティングを用いると、これは、約16Kバイト*2すなわち32Kバイトの分解能を与える)。   Note: If the sender performs a window scaling factor similar to the receiver, this simply sets eg the receiver PC's TCPWindowSize registry value eg 1 and eg 2 ^ 14 eg scale factor (the minimum window size resolution is Can now enable a very simple and ready use of this method without all the new software or modified TCP needed, so The sender's effective transmission window is always limited to about 4K bytes (2 TCPWindowSize registry values and 14 scaled), since the receiver should now always only set at most 4K bytes to its rwnd. Receiver called factor With C settings registry settings or application socket buffer, which gives a resolution of approximately 16K bytes * 2 i.e. 32K bytes).

2.レシーバは、必要な場合に、すべてのインターセプトされた発信パケットを変更し、それらのレシーバウィンドウサイズフィールドのそれぞれが、常時、適切な上側シーリング値、例えば56Kレシーバラストマイルのダイヤルアップについて16Kバイト、又は例えば500kbsレシーバのラストマイルDSLについて96Kバイト...などを超えないことを保証する。   2. The receiver modifies all intercepted outgoing packets as needed, and each of their receiver window size fields always has an appropriate upper ceiling value, eg, 16K bytes for 56K receiver last mile dialup, or For example, 96 Kbytes for the last mile DSL of a 500 kbps receiver. . . Guarantee that it does not exceed.

[ここでの単純な非常にエレガントな配置は、今、TCPセッションの全体を通じた超高速指数関数的センダのCWND増大を保証し終えているはずであり、例えば、常時、64KのCWNDに達するために例えば約64RTT時間を必要とするのではなく、多くとも6RTT時間だけを必要とする(センダの初期SSThreshに、非常に大きく、スケーリングされたレシーバウィンドウサイズと同一の値がセットされることに留意されたい)、しかし、センダの最大有効送信レートは、常時、受信された変更されたレシーバのウィンドウサイズ上側シーリングの値までに制限されるはずである → センダの送信レートは、常時、必ず、レシーバのウィンドウサイズ上側シーリングによって許容されるものを超えず、センダの「スラインディングウィンドウ」サイズ及び戻るACKを介する「セルフクロッキング」特性によってさらに支配される(戻るACKのレートが、通常はファーストマイル又はラストマイルの媒体リンクにある、最小ボトルネックリンクの使用可能帯域幅を反映することに留意されたい)。経路に沿ったバッファ遅延の始まりは、センダのBDPスループットを低速化するはずであるが、制限された輻輳パケットドロップは、レシーバに3DUP ACK高速再送信を要求させ、このセンダの今は半分にされているCWND及びSSthresh値が、最も確かに、常時レシーバのウィンドウサイズ上側シーリング値より非常にはるかに大きいままになり続けるはずであるが、持続される輻輳パケットドロップは、センダにRTO再送信をタイムアウトさせ、このセンダのCWNDは、今、例えば4MSSでもう一度スロースタートするが、やはりすばやく指数関数的に増大するはずである → すべてのそのようなTCPフローのセンダのCWNDが、今、それらのセンダのレシーバのウィンドウサイズの上側シーリングまでに制限されるが、ほぼ常時その近くに維持されることがわかる...。   [The simple, very elegant arrangement here should now have guaranteed an increase in CWND for ultra-fast exponential senders throughout the TCP session, for example to always reach CWND of 64K. Does not require, for example, about 64 RTT times, but only requires at most 6 RTT times (note that the sender's initial SS Threshold is set to a very large and scaled receiver window size). However, the sender's maximum effective transmission rate should always be limited to the value of the modified receiver's window size upper ceiling received → the sender's transmission rate is always the receiver The window size of the sender does not exceed what is allowed by the upper ceiling, `` Windowing window '' size and “self-clocking” characteristics via back ACKs (the back ACK rate is usually the minimum bottleneck link available bandwidth, which is usually in the first mile or last mile media link) Note that this is reflected). The beginning of the buffer delay along the path should slow down the sender's BDP throughput, but the limited congestion packet drop causes the receiver to request a 3DUP ACK fast retransmission and is now halved for this sender. The CWND and SSthresh values that are most likely will continue to remain much larger than the receiver's window size upper ceiling value at all times, but sustained congestion packet drops time out RTO retransmissions to the sender Let this sender's CWND now slow start again, for example at 4MSS, but it should also quickly increase exponentially → the sender's CWND of all such TCP flows is now Control up to the upper ceiling of the receiver window size It is is, but it can be seen that is maintained in the near almost all the time. . . .

3.任意選択で、レシーバは、発信パケットのレシーバウィンドウサイズフィールドをゆっくり増加することによって、センダのネットワークへのパケットの注入レートをペーシングすることができ、例えば、TCP確立直後に、レシーバは、4Kバイトから開始し、次に8Kバイト、次に12Kバイト...次に64Kバイトで、例えば1秒の間に例えば62.5msおきに、等間隔で均等なタイミングの一連の例えば16個の純ウィンドウ更新パケットを送信することができ(即座に64Kバイト上側シーリングウィンドウサイズをアドバタイズするのではなく、このアドバタイズは、パケットバーストを引き起こすはずである)、したがって、センダからの突然の大きいパケットバーストがないことを保証する(戻るACKは、この一連のウィンドウサイズ更新中に存在する場合に、可能なパケット注入レートを増やすはずであるが、しかし、レシーバは、任意選択として、これを考慮に入れてウィンドウ更新サイズ値を減らすことができることに留意されたい)。レシーバは、任意選択として、進行中のパケットのレシーバウィンドウサイズフィールド値を、適当な場合にいつでも変更することができる。同様に、そのようなウィンドウサイズ更新/変更は、おそらくは最新の発信する送信された戻るACKの値...などを考慮に入れて、いつでも増分/減分/調整の任意の所望の形で実行することができる。これは、TCP接続確立の直後に最高速の最適の形でhttpウェブサイトコンテンツをフェッチするのに有用になり得る(すなわち、その後、例えばレシーバの可能なラストマイル物理最大回線レートで送信するためのセンダのペーシング:センダに1RTTで例えば64Kバイトコンテンツのすべてを即座にバーストさせることが、非生産的である場合があることに留意されたい...)。   3. Optionally, the receiver can pace the injection rate of packets into the sender's network by slowly increasing the receiver window size field of outgoing packets, for example, immediately after TCP establishment, the receiver can start from 4K bytes. Start, then 8K bytes, then 12K bytes. . . Next, a series of, for example, 16 pure window update packets can be transmitted at equal intervals at 64 Kbytes, for example, every 62.5 ms, for example every second (immediately, an upper ceiling window of 64 Kbytes). Instead of advertising the size, this advertisement should cause a packet burst), thus ensuring that there are no sudden large packet bursts from the sender (the back ACK will be sent during this series of window size updates) Note that if present, the possible packet injection rate should be increased, but the receiver can optionally take this into account and reduce the window update size value). The receiver can optionally change the receiver window size field value of the ongoing packet whenever appropriate. Similarly, such a window size update / change is probably the latest outgoing transmitted ACK value. . . Can be implemented at any desired form of increment / decrement / adjustment at any time. This can be useful for fetching http website content in the fastest optimal form immediately after TCP connection establishment (ie, for later transmission at the receiver's possible last mile physical maximum line rate, for example). Sender pacing: Note that it may be unproductive to have the sender immediately burst all of the 64K byte content, for example, at 1 RTT ...).

4.さらに、任意選択として、これを、「ポーズ」法及び/又は「パケット到着間」法及び/又は前の段落で説明したさまざまな方法...などと一緒に実施することができる。例えば、ここでの非輻輳RTT/OTTが例えば50msである場合に、「ポーズ」法は、ここで、2つの端の間の非輻輳RTT/OTT(又は最新の推定された非輻輳RTT/OTT)値と例えば200msのバッファ遅延との和であるタイムアウト期間と、例えば150msのタイムアウトの際の「ポーズ−インターバル」とを指定することができる→ここでのボトルネックリンクの帯域幅を、常時コンスタントに100%利用することができる。というのは、ここでの「ポーズ」法が、1バッファ内で占有される累積的なトラバースされる経路のバッファの占有をいつでも小さい範囲に保つように努力する、すなわち、ボトルネックリンクを常に100%利用できるからである。   4). Further, optionally, this can be done with the “pause” method and / or the “inter-packet arrival” method and / or the various methods described in the previous paragraph. . . And so on. For example, if the non-congested RTT / OTT here is, for example, 50 ms, the “pause” method will now use the non-congested RTT / OTT between the two ends (or the latest estimated non-congested RTT / OTT). ) A timeout period that is the sum of the value and the buffer delay of 200 ms, for example, and a “pause-interval” for a timeout of 150 ms, for example, can be specified. The bandwidth of the bottleneck link here is always constant. 100% can be used. This is because the “pause” method here strives to keep the buffer occupancy of the cumulative traversed path occupied within one buffer at any time, ie, the bottleneck link is always 100 % Is available.

この故に、本明細書のセンダのCWND機構は、いくつかのステージで輻輳制御目的の達成における要件に対して冗長であることに留意されたい(RTOタイムアウトイベントを避ける、輻輳トリガイベントの際にCWNDサイズをすばやく増分するためのパケット到着間法プラス3+DupNum個のDUP ACK...などの他のコンポーネント方法が組み込まれない場合を除く)。この場合には、この故に、CWNDが、非常に大きい値を達成するためのまさに初期ステージの指数関数的及び/又は線形の増大中のネットワーク使用可能帯域幅プロービングの部分役割だけを演じ続け(接続の最大送信レートが、いつでも、例えば、レシーバが例えば64Kのrwnd値をアドバタイズするのではなくスケーリングされシフトされたフォーマットでアドバタイズする例えば比較的非常に小さいrwnd値までに制限されはするが)、レシーバTCPは、今や、最大のスケーリングされたファクタ14が利用される場合に、12位置だけ左シフトされた4すなわち64Kと同一のrwnd値を示す、4だけをアドバタイズする:両端が、今は非常に大きい最大のスケーリングされたウィンドウサイズを許容する/ネゴシエートしたが、レシーバTCPは、その通常の物理的な現在の最新の使用可能最大レシーバウィンドウサイズをアドバタイズすることだけができ、例えば、その物理的な最大の可能な受信ウィンドウバッファリソースが16Kである場合に、14の最大のスケーリングされたファクタが利用されると仮定して、レシーバTCPによって生成されるすべてのパケット内のアドバタイズされる受信ウィンドウサイズフィールドは、常時1の最大の可能な値を示すだけになるはずであることに留意されたい)その後、3DUP ACK高速再送信/回復の際のCWND値及び/又はSSthrsh値を半分にする場合であっても、半分にされたCWND値及び/又はSSthrsh値は、rwndと比較して非常に大きいままである:ネットワークが非輻輳したままになる場合に、センダは、スライディングウィンドウ内の使用可能セグメント/バイト(戻るACKのセルフクロッキング特性に依存する)及び/又はrwnd若しくはcwndサイズによってのみ制限される最大レートで幸福に送信し続けることができ、3DUP ACK高速再送信要求の際に、センダの最大送信レートは、今や、スライディングウィンドウ内の使用可能セグメント/バイトによってのみ制限され(スライディングウィンドウ内のこの使用可能セグメント/バイトは、今、まだ肯定応答されていない送信されたフライトパケットの比率/個数によって適当に減らされるが、ここで、CWNDとSSThreshとの両方が半分にされても、半分にされたCWND及びSStreshが、それでもRWND又はSWNDよりはるかに大きいので、このCWND及びSStreshは、全く影響を有しない)、したがって、事実上、送信レートは、今、適当に比例して減らされ、RTOタイムアウトの際に(通常、1秒というRFCの最小下側シーリング時間期間の後)、センダ送信レートすなわち1又は複数SMSSのリスタートCWNDによって支配される値は、今、最小値まで減らされるが、実際に、RTOタイムアウトの前と同一の送信レートをほぼ必ず保持することができ、というのは、ここでのセンダが、通常、RTOタイムアウトの前に有効ウィンドウ分のセグメント/バイトの非常に大きい部分又は全体全部を送信し終えているからであり、したがって、多数のRTOタイムアウトの連続する即座の送信は、続くまだ肯定応答されていない送信されたセグメント/パケットの連なりによって引き起こされる連続ですばやく続き、有効スライディングウィンドウ内の送信された肯定応答されていないすべてのセグメント内のそのような「輻輳ドロップ」パケットの比率のサイズ/個数は(すべてが輻輳ドロップされた場合であっても)、例えば1秒RTOタイムアウトイベントの後にセンダの送信レートを減らさないが、センダは、RTOタイムアウトの前の例えば1秒の期間中にすべての送信を停止しているはずである → すべての介在するノードのバッファリングされたパケットは、この/これらの特定の変更されたTCPごとのフローのバッファリングされたパケットの例えば1秒と同等の量(又は他のフローのバッファリングされたパケットの同等の量)をクリアされ、また、例えば1秒と同等の量は200ms〜500msというノードの通常のバッファ同等容量をはるかに超えるので、ほとんどの他の未変更の既存TCPフローのバッファリングされたパケットの例えば1秒と同等の量(又は他のフローのバッファリングされたパケットの同等の量)をクリアされる可能性が非常に高く、いくつかの他のTCPフローは、変更されていようといまいと、後に、RFCの最小値1秒より長くタイムアウトすることができ(そのRTTが普通でなく非常に長い場合に)、すべてのトラバースされたノードのバッファリングされたパケットの全体的なクリアを保証するのを助ける(すべてのフローが、いくつかがわずかに後の時になる可能性はあるが、RTOタイムアウトするはずなので)[注:これは、1秒の大きい「ポーズ」インターバルと同義である]。   For this reason, it should be noted that the sender's CWND mechanism herein is redundant with respect to requirements in achieving congestion control objectives in several stages (CWND during congestion trigger events, avoiding RTO timeout events). Unless other component methods such as inter-packet arrival method plus 3 + DupNum DUP ACK ... to quickly increase the size are not incorporated). In this case, therefore, CWND continues to play only a partial role of network available bandwidth probing in the very early stages of exponential and / or linear growth to achieve very large values (connection The maximum transmission rate at any time, for example, the receiver advertises in a scaled and shifted format rather than advertising eg a 64K rwnd value, eg to a relatively very small rwnd value) TCP now advertises only 4 showing the same rwnd value as 4 left shifted by 12 positions, ie 64K, when the maximum scaled factor 14 is utilized: both ends are now very much Allow / negotiate large maximum scaled window size However, the receiver TCP can only advertise its normal physical current latest maximum available receiver window size, for example if its physical maximum possible receive window buffer resource is 16K. Assuming that a maximum scaled factor of 14 is used, the advertised receive window size field in all packets generated by the receiver TCP will always only indicate the maximum possible value of 1. Then, even if the CWND value and / or SSthrsh value during 3DUP ACK fast retransmission / recovery is halved, the halved CWND value and / or SSthrsh The value remains very large compared to rwnd: the network is non-radiative When remaining congested, the sender happily transmits at the maximum rate limited only by the available segments / bytes within the sliding window (depending on the self-clocking characteristics of the returning ACK) and / or rwnd or cwnd size During a 3DUP ACK fast retransmission request, the sender's maximum transmission rate is now limited only by the available segments / bytes in the sliding window (this usable segment / byte in the sliding window is , Now appropriately reduced by the ratio / number of transmitted flight packets that have not yet been acknowledged, where even if both CWND and SSThresh are halved, the halved CWND and SStress are Still RWND or S Since this is much larger than ND, this CWND and SStresh have no effect at all), so in effect, the transmission rate is now reduced appropriately proportionally and on RTO timeout (usually 1 second) After the RFC minimum lower ceiling time period), the sender transmission rate, ie the value governed by one or more SMSS restart CWNDs, is now reduced to the minimum value, but in fact the same as before the RTO timeout. The transmission rate can almost always be retained, because the sender here usually has transmitted a very large part or all of the segment / byte for the valid window before the RTO timeout. Thus, successive immediate transmissions of multiple RTO timeouts have not yet been acknowledged The size / number of ratios of such “congestion drop” packets in all non-acknowledged segments transmitted within the effective sliding window, followed quickly and continuously caused by the transmitted segment / packet sequence is ( Doesn't reduce the sender's transmission rate after, for example, a 1 second RTO timeout event, even if everything is congestion dropped), but the sender stops all transmissions, for example during a 1 second period before the RTO timeout → The buffered packets of all intervening nodes should be equivalent to this / these specific modified per-TCP flow buffered packets, for example an amount equivalent to 1 second (or others) The equivalent amount of buffered packets) For example, an amount equivalent to 1 second far exceeds the normal buffer equivalent capacity of a node of 200 ms to 500 ms, so it is equivalent to 1 second of buffered packets of most other unchanged existing TCP flows. It is very likely that the amount (or equivalent amount of buffered packets of other flows) will be cleared, and some other TCP flows will later change to a minimum It can time out longer than 1 second (if its RTT is unusual and very long), helping to ensure the overall clearing of buffered packets for all traversed nodes (all (Note that this may be RTO timed out, although some may be slightly later) [Note: This is a large 1 second Have "pause" interval and is synonymous].

この方法は、その最も単純な形で、ユーザがローカルPC TCPレジストリパラメータをセットして、例えば12のスケールファクタなど、大きいウィンドウスケールファクタを利用することだけを必要とするが、16ビットの通常のTCPWindowSize値は、例えば1バイトから64Kバイトなど、必要なだけ小さく又は大きくセットすることができる:12のユーザPCスケールファクタすなわち256Mバイトの最大の可能なスケーリングされたウィンドウサイズ値及びわずか1のユーザPC TCPWindowSize値と、例えば12のリモートサーバのネゴシエートされたスケールファクタ及び例えば64KバイトのリモートサーバTCPWindowSizeとを用いると、リモートサーバ最大送信レートは、いつでも、RTTあたり4Kバイト(1*2^12)のユーザPCのスケーリングされたウィンドウサイズを超えない(中間ソフトウェアがある場合に、その中間ソフトウェアが、ユーザPCからの発信パケットをインターセプトせず、4Kバイトより大きくなるようにそのrwndフィールド値を変更しないと仮定して)。リモートサーバのSsthresh値が、通常は、TCP接続確立中にネゴシエートされたrwnd値と同一になるように初期化されることに留意されたい。センダでこの方法を実施するために、リモートサーバは、リモートサーバのTCPスタックがそのSStresh値を任意に非常に大きくなるように、例えば「無限大に」固定し、TCP接続ネゴシエーションに関してウィンドウスケールオプションを利用する(且つ/又は、そのCWND値をその最大の達成された増大スループットに固定するすなわち、CWNDは、例えば1SMSSの初期RFC値から継続的に増分することができるが、絶対に減分できない)ことだけを必要とする。   This method, in its simplest form, only requires the user to set a local PC TCP registry parameter to take advantage of a large window scale factor, such as a scale factor of 12, but the 16 bit normal The TCPWindowSize value can be set as small or large as necessary, eg 1 to 64 Kbytes: 12 user PC scale factors, ie 256 Mbytes maximum possible scaled window size value and only 1 user PC Using the TCPWindowSize value and the negotiated scale factor of eg 12 remote servers and the remote server TCPWindowSize of eg 64 Kbytes, the remote server maximum transmission rate is However, it does not exceed the user PC's scaled window size of 4K bytes (1 * 2 ^ 12) per RTT (if there is intermediate software, the intermediate software does not intercept outgoing packets from the user PC, and 4K (Assuming that the rwnd field value is not changed to be greater than bytes). Note that the remote server's Ssthresh value is usually initialized to be the same as the rwnd value negotiated during TCP connection establishment. In order to implement this method at the sender, the remote server fixes the window scale option for TCP connection negotiation, for example, fixing it to “infinity” so that the TCP stack of the remote server is arbitrarily very large. Utilize (and / or fix its CWND value to its maximum achieved increased throughput, ie CWND can be continuously incremented from the initial RFC value of, for example, 1 SMSS, but never decremented) You just need that.

変更されたTCPを利用することは、スループットを増やし、例えば専用回線/DSL上のデータストレージサイトバックアップアプリケーション...など、大きいファイルのftp転送完了時間を減らすことが注目されてきた。これは、既存TCPを用いると、センダが、必ず、常時その送信レートを増やす、すなわち、CWNDが、輻輳に起因してパケットが捨てられるまで単調に増加するからであり、輻輳に起因してパケットが捨てられる時には、センダTCPは、その送信レートをアグレッシブに減らす、すなわち、CWNDを例えば1SMSSにリセットし、RTOタイムアウトの直前(又は、3DUP ACK高速再送信要求の直前、この時には、センダの送信レートすなわちCWNDが半分にされる)の達成された送信レート又は達成されたCWNDサイズまで戻る非常に長く遅いクライムアップを開始する。TCPフローが、3DUP ACK高速再送信機構をイネーブルしていないと仮定すると、ここでのフローの送信レート又はスループット又はCWNDグラフは、繰り返される最大値までの既知の「鋸歯」パターン低速線形クライミング及びその後の「0」付近に戻る突然の下落を示す、すなわち、リンクの物理使用可能帯域幅の半分までが浪費され使用されていないことが、即座に明白であるが、変更されたTCPフローは、ほぼ一定の100%のリンクの物理使用可能帯域幅利用度の送信レート又はスループット又はCWNDグラフすなわち、未変更のTCPフローのスループットの2倍までを示す/転送完了時間を半分にするはずである。3DUP ACK高速再送信機構がイネーブルされた状態で、TCPフローのグラフは、前の送信レートレベルの半分及び「0」付近への突然の下落の混成を示すはずであり、したがって、変更されたTCPフローは、未変更のTCPフローと比較して、33%〜100%だけより多いスループットの間のどこかを示すはずである→リンクの「見かけの」物理帯域幅を瞬間的に2倍にすることまでをおそらくはイネーブルした、ここで、リンクは、専用回線/大陸間海底光ケーブル/衛星/無線...などとすることができる。   Utilizing the modified TCP increases throughput, for example a data storage site backup application on a dedicated line / DSL. . . Thus, attention has been focused on reducing the ftp transfer completion time of large files. This is because when using existing TCP, the sender always increases its transmission rate at all times, that is, CWND increases monotonically until packets are discarded due to congestion. Sender TCP aggressively reduces its transmission rate, i.e. resets CWND to e.g. 1 SMSS and immediately before the RTO timeout (or just before the 3DUP ACK fast retransmission request, at this time the sender's transmission rate Start a very long and slow climb up back to the achieved transmission rate (ie CWND is halved) or CWND size achieved. Assuming that the TCP flow does not have the 3DUP ACK fast retransmission mechanism enabled, the transmission rate or throughput or CWND graph for the flow here is the known “sawtooth” pattern slow linear climbing up to the maximum repeated and then It is immediately obvious that a sudden drop back to near “0” of the link, ie, up to half of the physical usable bandwidth of the link is wasted and not used, but the modified TCP flow is almost It should show the transmission rate or throughput or CWND graph of the physical available bandwidth utilization of a constant 100% link, ie up to twice the throughput of an unmodified TCP flow / should transfer transfer completion time in half. With the 3DUP ACK fast retransmission mechanism enabled, the TCP flow graph should show a mix of half of the previous transmission rate level and a sudden drop near “0”, so the modified TCP The flow should show somewhere between 33% and 100% more throughput compared to the unmodified TCP flow → instantaneously double the “apparent” physical bandwidth of the link Probably enabled, where links are leased lines / intercontinental submarine optical cables / satellite / wireless. . . And so on.

要点を繰り返すと、上記の直前の段落の「大きいセンダのスケーリングされたウィンドウサイズ」法は(いずれかの端での接続が実際にそのような大スケールウィンドウサイズの実際の必要を有しない場合であっても)、ソフトウェア又は既存の標準TCPに対する変更を全く必要とさえせずに、PCユーザによって即座に利用されることができる:ユーザは、彼らのPCのTCPシステムパラメータを手動でセットし、大きいスケーリングされたセンダウィンドウサイズ(例えば、TCPWindowSize及び/又はmaxglobalTCPWindowSize、Window 2000では、TCPWindowSizeを64Kバイトより大きくセットすると、ウィンドウスケールファクタが自動的にイネーブルされるはずである)、TCP1323opt 1又は3(1は、ウィンドウスケールファクタをイネーブルするがTimeStampオプションなしであり、3は、TimeStampオプションを伴う)、1と2^14との間のWindow Scale Factor値をイネーブルすることができる。レシーバTCPは、センダTCPがウィンドウスケールオプションをネゴシエートすることを可能にしなければならないが、レシーバTCP自体の受信最大ウィンドウサイズは、IPパケットによってトラバースされる経路の「ボトルネックリンクの帯域幅容量」を完全に利用できるようになるだけのために、好ましくは比較的小さく保たれなければならない(ここでのボトルネックリンクは、通常、センダのファーストマイル媒体、例えばDSL又はレシーバのファーストマイル、例えば専用回線のいずれかである):例えば、この2つの端の間の非輻輳RTTが例えば100msであり、全体を通して、この例えば100ms値で完全に一定のままであり、ボトルネックリンクの帯域幅容量が2mbsであると仮定すると、ここでのレシーバ最大ウィンドウサイズは、比較的小さく、例えばわずか25.6Kバイトまでに保たれ/セットされなければならない(これは、センダTCPのCWNDが例えば25.6Kバイトのレシーバの最大ウィンドウサイズをすばやく達成する/はるかに超えるために増大し、その後、この非常に大きいスケーリングされた最大ウィンドウサイズ値によって許容される非常に大きい値で完全に維持される場合であっても(これは、高速再送信を引き起こすパケットロス/破壊イベントが、今や、センダTCPの半分にされたCWNDサイズ及び半分にされたSstresh値にほとんどいつでも例えば25.6Kバイトのレシーバの最大ウィンドウサイズの下まで急降下させないことを保証する)センダTCPの「有効ウィンドウサイズ」がいつでも25.6Kバイトを超えず、したがっていつでも2mbsより高いレートで送信しないことを保証する。センダCWNDサイズが例えば1SMSSにリセットされたRTOタイムアウト再送信を引き起こすパケットロスイベントの後には、非常により希に、センダTCPのCWNDが、わずか5*例えば100ms RTTすなわちわずか500msで例えば25.6Kバイトのレシーバの最大ウィンドウサイズを非常にすばやく再達成し、これを超えることができる)。ここでの送信レートグラフ/瞬間スループットレートグラフ(Ethereal’s IO−Graphsトラフィックディスプレイ分析ファシリティhttp://ethereal.comを使用して見ることができる)は、ほぼ一定の100%により近いリンク帯域幅利用度を示すはずである、すなわち、ここでのグラフは、100%リンク利用度レベルからはるかにより遠い鋸歯の谷に平坦部を有する「鋸歯」形をほとんど一定不変に示す既存の標準TCPと比較して、100%リンク利用度レベルにより近い最上部の平らな平坦部を有する「方形波信号形」に似るはずである。 To reiterate, the “large sender scaled window size” method in the preceding paragraph above (in the case where a connection at either end does not actually have the actual need for such a large scale window size). Can be used immediately by PC users, even without requiring any changes to software or existing standard TCP: users can manually set their PC's TCP system parameters, For large scaled sender window sizes (eg TCPWindowSize and / or maxglobalTCPWindowSize, Window 2000, setting TCPWindowSize greater than 64K bytes should automatically enable the window scale factor) TCP 1323 opt 1 or 3 (1 enables the window scale factor but no TimeStamp option, 3 with the TimeStamp option) Enables the Window Scale Factor value between 1 and 2 ^ 14 Can do. The receiver TCP must allow the sender TCP to negotiate the window scale option, but the maximum received window size of the receiver TCP itself is the “bottleneck link bandwidth capacity” of the path traversed by the IP packet. It should preferably be kept relatively small in order to only be fully available (the bottleneck link here is usually the sender's first mile medium, eg DSL or receiver first mile, eg leased line) For example, the non-congested RTT between the two ends is, for example, 100 ms, and remains totally constant at this, for example, 100 ms value, and the bandwidth capacity of the bottleneck link is 2 mbs. Assuming that The maximum window size is relatively small and must be kept / set, for example, to only 25.6 Kbytes (this ensures that the sender TCP CWND quickly achieves the maximum window size of the receiver, for example 25.6 Kbytes). Even if it is fully maintained at a very large value allowed by this very large scaled maximum window size value (which causes a fast retransmission) (Sender guarantees that packet loss / destruction events now almost never drop to the halved CWND size and halved Stress value of the sender TCP almost below the maximum window size of the receiver, eg 25.6 Kbytes) TCP "effective window size" Yes However, it is guaranteed that it will not exceed 25.6 Kbytes and therefore will not always transmit at a rate higher than 2 mbs, very rarely after a packet loss event that causes an RTO timeout retransmission where the sender CWND size is reset to eg 1 SMSS. Sender TCP's CWND re-achieves and exceeds the maximum window size of the receiver very quickly in only 5 * eg 100ms RTT, ie only 500ms, eg 25.6K bytes). The transmission rate graph / instantaneous throughput rate graph here (which can be seen using the Ethereal's IO-Graphs traffic display analysis facility http://ethereal.com ) is a link bandwidth closer to a nearly constant 100% Should show utilization, ie the graph here is compared to the existing standard TCP which shows a “sawtooth” shape with a flat in the sawtooth valley farther from the 100% link utilization level, almost constant. Thus, it should resemble a “square wave signal shape” with an uppermost flat plate closer to the 100% link utilization level.

しかし、現実の公衆インターネットでは、2つの端の間のRTTは、エンドツーエンド接続のRTTがキャリアのIPトランジットサービスレベル契約保証されたRTT/帯域幅によって保証されない限り、経時的に桁だけ(例えば数十ミリ秒から200msに)変化する可能性があり、したがって、例えばレシーバ最大ウィンドウサイズ...などを介するボトルネックリンクの帯域幅容量へのセンダの送信レートのその「スロットリング」は、公衆インターネット上のそのようなRTTが長くなる時に、そのような時間中に桁のスループット及び/又は「グッドプット」の劣化をこうむるはずである:そのような長くなる公衆インターネットのRTTのシナリオに対処できるようになるために、ここでのレシーバの最大ウィンドウサイズにはるかに大きい値をセットすることがはるかによく、例えば、レシーバの最大ウィンドウサイズに、今、例えば8*以前の例えば25.6Kバイトがセットされる場合に、エンドツーエンドスループット及び/又は「グッドプット」は、RTTがこの2つの端の間の非輻輳RTTの8倍を超えて長くはならないと仮定して、いつでも100%ボトルネックリンクの帯域幅容量の近くに維持することができる。   However, in the real public Internet, the RTT between the two ends is only orders of magnitude over time (e.g., unless the end-to-end RTT is guaranteed by the carrier's IP transit service level contract guaranteed RTT / bandwidth). (For example, receiver maximum window size). . . That “throttling” of the sender's transmission rate to the bottleneck link bandwidth capacity via, etc. is such that when such RTT on the public Internet becomes longer, digit throughput and / or “ It should suffer "goodput" degradation: setting a much larger value for the receiver's maximum window size here is much more able to handle such a long public Internet RTT scenario For example, if the maximum window size of the receiver is now set, eg, 25.6 Kbytes before 8 *, for example, end-to-end throughput and / or “goodput” may be Assuming that it should not exceed 8 times the non-congested RTT during It can be maintained in the vicinity of the bandwidth capacity of Runekku link.

センダTCPのCWNDが、安定し、増加していない時(例えば、CWNDが、最大センダウィンドウサイズ値に達し終えている時)に、センダTCPが送信できる量(TCPスライディングウィンドウ)を支配するのは、ACKセルフクロッキング機能である、すなわち、到着する戻るACKのレートに従ってであり、この戻るACKの最大レートは、やはり、トラバースされた経路のボトルネックリンクの帯域幅容量すなわち、センダからどれほど高速にボトルネックリンクに沿ってデータを転送できるかに制限され、これが、バイト毎秒単位でのボトルネックの帯域幅とほぼ等しい(非データIPパケットヘッダに必要な例えば40バイトのオーバーヘッドを無視する場合に)ことに留意されたい。センダTCPのCWNDが、「スロースタート」フェーズで指数関数的に増分し続ける時に、CWNDは、実際に、各連続するRTT中に、戻るACKの個数に従って増分する(必ずしも各連続するRTT中に指数関数的に2倍にするのではなく)、すなわち、TCPの現在のCWNDが、8Kバイトであり、8Kバイトのデータセグメント(最大センダサイズ及び最大ウィンドウサイズによって許容され、十分な返されるACKを伴う十分な「有効ウィンドウ」...を仮定して)を送出し、次のRTTで6つだけが返され、2つが捨てられる場合に、CWNDは、「スロースタート」であると仮定して、今や、14Kバイトに増分するだけ(16Kバイトに2倍にされるのではなく)になるはずである。輻輳は、現在の増分されたCWNDサイズ(したがって、受信された戻るACKの個数の増加によって引き起こされるのではなく現在増やされている有効ウィンドウ)は、送信レートにボトルネックリンクの帯域幅容量によって転送できるものを超えさせるはずの値未満のままである限り、生じない。しかし、送信レートが、今、ボトルネックリンクの帯域幅容量の送信レートより大きい場合に、いくつかの送信されたパケットは、今、ボトルネックリンクでバッファリングされ始める(インターネットノードは、通常、約200〜400msと同等のバッファ容量を有する)。センダの送信レートが、ボトルネックリンクの帯域幅容量の送信レートと正確に一致する段階で、CWNDが次のRTTでサイズにおいて今や「2倍にされた」時に、ここでのRTTが100ms前後に留まると仮定すると、この、次のRTTで、この余分の帯域幅容量を超える100msと同等分のパケットは、ボトルネックリンクノードでバッファリングされることを必要とする。連続するRTTでの戻るACKのレートが、今、最大ボトルネックリンクの帯域幅容量又はその前後に留まる(すなわち、ボトルネックリンクは、100%リンクの帯域幅利用度でデータを転送し続ける)と仮定すると、センダのCWNDは、ボトルネックノードが今やバッファを使い果たし、したがってパケットを捨てさせる、例えば4番目の連続するRTTまで、各続く連続するRTTでボトルネックリンクの帯域幅容量と等しい量だけ連続して増分され、各連続するRTTは、増分されたCWND(又は増分された有効ウィンドウ)によって導入される余分のバッファリングされるパケットトラフィックの連続する例えば100ms同等量に起因して、直前のRTTよりわずかに長い。次に、センダは、レシーバTCPから3つのDUP ACKを受信した時に、捨てられたパケットを高速再送信する可能性が高く、その場合に、現在は半分にされているCWND及びSSthresh値さえもが、それでも、ほぼ一定不変に、相対的に小さいレシーバ最大ウィンドウサイズ値よりはるかに大きいままになる→したがって、センダTCPは、その後、これらのパケットドロップイベントによって減らされない同一の以前のレートで送信し続けるはずであり、ACKがボトルネックリンクの帯域幅容量と等しいレートで戻るので、センダの送信レートは、今や、ボトルネックリンクの帯域幅容量(これが、レシーバの最大ウィンドウサイズ以下であると仮定して)と等しい正確な最大レートであり続けるはずである。センダが、まだレシーバの3DUP ACK高速再送信要求によって世話されていない場合に、最小1秒の既存RFCデフォルト最小時間期間の後に限って、捨てられたパケットのRTOタイムアウト再送信も行うことができるが、これらが、非常にはるかに希であり:その場合に、センダのCWNDは、それでも、比較的小さいレシーバの最大ウィンドウサイズ値を再達成し/超えるために、わずか2〜3RTTで非常にすばやく指数関数的に増加するはずである(「任意の」大きいSsthresh値によって助けられて)ことに留意されたい。ここでのセンダのCWNDは、周期的な高速再送信がCWND及びSstresh値を半分にするにもかかわらず、非常に大きい値まで「指数関数的に」増加する(「維持される」任意の大きいSsthresh値に向かう傾向がある)はずである。センダのTCPのCWNDが、レシーバの最大ウィンドウサイズを達成し/超えたならば、そのCWNDは、その後、主に、戻るACKのセルフクロッキングレートの受信されたシェアになり、その総レートは、多くとも、どの時点でもボトルネックリンクの帯域幅容量と等しく、これは、今後、センダTCP送信レートを規定する。応答ACKを生成する際の他端のTCP応答変動は、戻るACKのレートをボトルネックリンクの帯域幅容量のレート未満まで減らす可能性があり、トラバースされる経路に沿った介在するノードでのバッファ遅延(RTTを長くする)...などは、ボトルネックリンクをトラバースするすべてのTCPフローに対する総合的な戻るACKのレートを、ボトルネックリンクの帯域幅容量の100%より少なく/未満まで減らす可能性がある(この故に、そのような変動について補償するのに十分に、TCPセッション全体で同一の非輻輳RTTを仮定してボトルネックリンクの帯域幅容量の100%を完全に利用するために、レシーバの最大ウィンドウサイズをまさに必要な最小サイズより大きくなるようにセットすることは、そのような変動にかかわりない、常時100%ボトルネックリンクの帯域幅利用度を可能にするはずである)。   When the CWND of the sender TCP is stable and not increasing (for example, when the CWND has reached the maximum sender window size value), the amount that the sender TCP can transmit (TCP sliding window) ACK self-clocking function, i.e. according to the rate of incoming back ACKs, the maximum rate of this back ACK is still the bottleneck link bandwidth capacity of the traversed path, i.e. how fast from the sender Limited to the ability to transfer data along the bottleneck link, which is approximately equal to the bottleneck bandwidth in bytes per second (for example, ignoring the 40 byte overhead required for non-data IP packet headers) Please note that. As the sender TCP's CWND continues to increment exponentially in the “slow start” phase, the CWND actually increments during each successive RTT according to the number of ACKs returned (not necessarily exponential during each successive RTT). (Rather than doubling functionally), ie TCP's current CWND is 8K bytes, 8K bytes of data segment (allowed by maximum sender size and maximum window size, with enough returned ACK) CWND assumes a “slow start” if the next RTT returns only 6 and 2 are discarded (assuming enough “valid windows” ...) It should now only increment to 14K bytes (rather than being doubled to 16K bytes). Congestion is now transferred by the bottleneck link bandwidth capacity to the transmission rate, because the current incremented CWND size (and thus the effective window currently increased rather than being caused by an increase in the number of received back ACKs). As long as it remains below a value that should exceed what it can, it does not occur. However, if the transmission rate is now greater than the transmission rate of the bottleneck link bandwidth capacity, some transmitted packets now begin to be buffered on the bottleneck link (Internet nodes are usually around It has a buffer capacity equivalent to 200-400 ms). When the sender's transmission rate exactly matches the transmission rate of the bandwidth capacity of the bottleneck link, when CWND is now "doubled" in size at the next RTT, the RTT here will be around 100ms Assuming that it remains, at this next RTT, a packet equivalent to 100 ms exceeding this extra bandwidth capacity needs to be buffered at the bottleneck link node. The rate of returning ACKs in consecutive RTTs now remains at or around the maximum bottleneck link bandwidth capacity (ie, the bottleneck link continues to transfer data at 100% link bandwidth utilization). Assuming the sender's CWND is continuous by an amount equal to the bandwidth capacity of the bottleneck link at each successive RTT, for example until the 4th consecutive RTT, causing the bottleneck node to run out of buffers and thus discard packets. Each successive RTT is incremented with the previous RTT due to a continuous eg 100 ms equivalent amount of extra buffered packet traffic introduced by the incremented CWND (or incremented valid window). Slightly longer. Next, when the sender receives three DUP ACKs from the receiver TCP, it is likely to retransmit the discarded packet fast, in which case the CWND and SSthresh values are now halved. And still remain much larger than the relatively small receiver maximum window size value → almost constant, so the sender TCP will then continue to transmit at the same previous rate that is not reduced by these packet drop events Since the ACK returns at a rate equal to the bandwidth capacity of the bottleneck link, the sender's transmission rate now assumes that the bottleneck link bandwidth capacity (which is less than or equal to the receiver's maximum window size). ) Should continue to be the exact maximum rate equal to. If the sender has not yet been taken care of by the receiver's 3DUP ACK fast retransmission request, it can also perform RTO timeout retransmission of discarded packets only after the existing RFC default minimum time period of a minimum of 1 second. These are very much rarer: in that case, the sender's CWND still exponentially very quickly in just 2-3 RTTs to re-achieve / exceed the relatively small receiver maximum window size value Note that it should increase functionally (assisted by an “arbitrary” large Ssthresh value). The sender's CWND here increases "exponentially" to a very large value (even if it is "maintained") even though periodic fast retransmissions halve the CWND and Stress values. There should be a trend towards Ssthresh values). If the sender's TCP CWND achieves / exceeds the receiver's maximum window size, then that CWND will be primarily the received share of the self-clocking rate of the returning ACK, and its total rate will be At most, it is equal to the bandwidth capacity of the bottleneck link at any point in time, which will now define the sender TCP transmission rate. The TCP response variation at the other end when generating the response ACK may reduce the rate of the returning ACK to less than the rate of the bottleneck link bandwidth capacity, and the buffer at the intervening nodes along the traversed path Delay (longer RTT). . . May reduce the overall return ACK rate for all TCP flows traversing the bottleneck link to less than / less than 100% of the bottleneck link bandwidth capacity (thus, The receiver's maximum window size is exactly the minimum required to fully utilize 100% of the bottleneck link's bandwidth capacity assuming the same non-congested RTT throughout the TCP session, enough to compensate for variations. Setting it to be larger than the size should allow 100% bottleneck link bandwidth utilization at all times, regardless of such variations).

ここで、センダの最大ウィンドウサイズ値及びCWND値をいつでも任意に大きくすることができ(「任意の」大きいSsthresh値によってそのように維持されて助けられる)を用い、比較的小さいレシーバ最大ウィンドウサイズ値を用いて、上記の本明細書の「要求されないが意図的な」大きいスケーリングされたセンダウィンドウサイズ及び比較的小さい「レシーバ最大ウィンドウ法」を利用するエンドツーエンドTCP接続が、ボトルネックリンクの帯域幅容量と等しい安定化された送信レートに向かう傾向がある、すなわち、ここでの送信レート又はスループットグラフが、100%に近いリンク利用度レベル「方形波形」を示すはずであることがわかる。   Here, the sender's maximum window size value and CWND value can be arbitrarily increased at any time (so maintained and helped by an “arbitrary” large Ssthresh value) and a relatively small receiver maximum window size value. Using the above-mentioned "unnecessary but intentional" large scaled sender window size and the relatively small "receiver maximum window method" in this specification, the end-to-end TCP connection uses the bandwidth of the bottleneck link. It can be seen that there is a trend towards a stabilized transmission rate equal to the width capacity, ie the transmission rate or throughput graph here should show a link utilization level “square waveform” close to 100%.

FTPなどの従来のファイル転送テクノロジは、すべてのパケットロスに応答してデータレートを劇的に下げ、長期的スループットを高速リンクの容量で維持することができない。例えば、メトロポリタンエリアネットワーク内のOC−3リンク(155Mbps)を介する単一のFTPファイル転送は、0.1%のパケットロスパーセンテージ及び10msの待ち時間を仮定すると、22Mbpsで安定する。   Conventional file transfer technologies, such as FTP, dramatically reduce data rates in response to all packet losses and cannot maintain long-term throughput with the capacity of high speed links. For example, a single FTP file transfer over an OC-3 link (155 Mbps) in a metropolitan area network is stable at 22 Mbps assuming a packet loss percentage of 0.1% and a latency of 10 ms.

我々は、ここで、センダのローカルインターセプトソフトウェアが、ローカルMSTCPプリエンプトタイムアウト送信レート低下に対して3+DupNum個のDUP ACK(ACKNo=レシーバTCPからの最新の受信されたACK番号及び/又はSeqNo=レシーバTCPからの最新の受信されたSeqNoフィールドを伴う)を生成するために、レシーバTCPからセンダTCPで受信された最新の到着するACKのACKパケット−リターン間インターバル>例えば300ms(必ずしも輻輳ドロップではなく、物理エラーによっても引き起こされ得る:我々はここで両方をキャッチする)をチェックするだけの単純なコードを追加することができる。送信されたパケットでの0.1%の物理エラー破壊(輻輳ではなく)であっても、80%だけスループットを厳密に制限するはずであることが周知であり、http://www.asperasoft.com/technology−faspvftp.html#continentalを参照されたい。 We now send the sender's local intercept software to 3 + DupNum DUP ACKs (ACKNo = latest received ACK number from receiver TCP and / or SeqNo = receiver TCP for local MSTCP preempt timeout transmission rate reduction. ACK packet-return interval of latest arriving ACK received at sender TCP from receiver TCP> e.g. 300 ms (not necessarily congestion drop, physical error) to generate the latest received SeqNo field Can also be caused by: we can add a simple code just to check (catch both here). It is well known that even 0.1% physical error corruption (not congestion) in transmitted packets should strictly limit throughput by 80%, http: // www. asperasoft. com / technology-faspvftp. See html # continental .

概要:
1.着信/発信パケットインターセプトコア及びTCPフローごとのTCBを組み込むことだけを必要とする。
Overview:
1. It only needs to incorporate an incoming / outgoing packet intercept core and a TCB for each TCP flow.

2.ローカルMSTCPからリモートに送信された最新の「最大の」SeqNoフィールド「lastsentSeqNo」を記録する。   2. Record the latest “maximum” SeqNo field “lastsentSeqNo” sent remotely from the local MSTCP.

3.リモートから受信された最新の「最大の」着信パケットのACKNoフィールド「lastrcvACKNo」(及びそのパケットのSeqNo、すなわち「lastrcvSeqNo」)及び受信された時刻「lastpktrcvtime」と、この完全なパケットのコピー「lastrcvpkt」とを記録する。   3. The ACKNo field “lastrcvACKNo” of the latest “largest” incoming packet received from the remote (and the SeqNo of the packet, ie “lastrcvSeqNo”) and the received time “lastpktrcvtime”, and a copy of this complete packet “lastrcvpkkt” And record.

4.IF 現在時刻−lastpktrcvtime>例えば300ms AND lastsentSeqNo+1>lastrcvACKNo
THEN 3つの「lastrcvpkt」を送信する(より簡単であり、生成されたパケットのチェックサムを計算する必要がない:複製SeqNo/複製データ...などは、lastrcvpkt内に存在する場合に、3DUP ACK高速再送信を引き起こしている間にローカルMSTCPによって無視されるだけである)。
4). IF current time-lastpktrcvtime> for example 300 ms AND lastsentSeqNo + 1> lastrcvACKNo
THEN send 3 “lastrcvpkkt” (simpler, no need to calculate checksum of the generated packet: duplicate SeqNo / duplicate data ... etc., 3DUP ACK if present in lastrcvpkkt It is only ignored by local MSTCP while causing fast retransmissions).

5.ソフトウェア初期化の時に、TCPレジストリ(及び/又は任意選択で個々のアプリケーション自体のソケットごとのバッファサイズ)を編集し、すべての新しいTCPが大きいウィンドウスケールファクタ14及びTCPWindowサイズ64K(すなわち、最大1ギガバイト)を要求するようにし、好ましくはSACKをイネーブルし、好ましくはDelay−ACKなし
[参考文献:Google Search用語「set socket buffer override large scale window size」(又は類似する関連用語)、www.psc.edu/networking/perf_tune.html、publib.boulder.ibm.com/infocenter/pseries/topic/com.ibm.aix.doc/aixbman/prftungd/2365a83.htm、www.dslnuts.com/2kxp.shtmlhttp://www.ces.net/doc/2003/research/qos.html、forum.java.sun.com/thread.jspa?threadID=596030&messageID=3165552、netlab.caltech.edu/FAST/meetings/2002july/relatedWork.ppt、www.ncne.org/research/tcp/debugging/firstpackets.html)。
5. During software initialization, edit the TCP registry (and / or optionally the buffer size per socket of the individual application itself), all new TCP has a large window scale factor of 14 and TCP window size of 64K (ie up to 1 gigabyte) ), Preferably SACK enabled, preferably without Delay-ACK [Reference: Google Search term “set socket buffer oversize large window size” (or similar related terms), www. psc. edu / networking / perf_tune. html , public. boulder. ibm. com / infocenter / prises / topic / com. ibm. aix. doc / aixbman / prftungd / 2365a83. html, www. dslnuts. com / 2kxp. shml , http: // www. ces. net / doc / 2003 / research / qos. html , forum. java. sun. com / thread. jspa? threadID = 596030 & messageID = 3165552, netlab. caltech. edu / FAST / meetings / 2002july / relatedWork. ppt, www. ncne. org / research / tcp / debuging / firstpackets. html ).

以上、これは、データストレージアプリケーションの要求を完全に満たす。   Thus, this fully meets the requirements of data storage applications.

注:両端が大きいウィンドウスケールファクタ及び大きいウィンドウサイズをネゴシエートした状態で、フローごとのTCPは、10RTT、例えば2.5秒以内に、CWND値を例えば1024*1500バイトのMSSすなわち1.5Mバイトまで非常にすばやく増加する。ソフトウェア生成(例えば、RTOタイムアウトをプリエンプトする)又はリモートからのいずれであれ、どの高速再送信要求の際にも、CWNDの半分化及びSSThreshにCWND/2をセットすることは、「有効ウィンドウ」を減らす効果を一切有することがなく、SYNC/SYNC ACK/ACKの後のどの時にも、「有効ウィンドウ」は、必ず次のいずれかになる。   Note: TCP per flow with a large window scale factor and large window size negotiated at both ends, within 10 RTT, eg 2.5 seconds, CWND value up to MSS, eg 1024 * 1500 bytes, ie 1.5 Mbytes Increases very quickly. Setting either CWND halving and SSThresh to CWND / 2 on any fast retransmission request, whether software generated (eg preempting RTO timeout) or remotely, will result in an “effective window”. At any time after SYNC / SYNC ACK / ACK without having any effect of reducing, the “valid window” is always one of the following:

1.常時レシーバのアドバタイズされた受信ウィンドウサイズまでに制限される:レシーバは、通常、例えば16Kバイトを有し、したがって、すべての後続パケットで、レシーバは、「1」の受信ウィンドウサイズ(14位置スケールシフトされる=16Kバイト)をアドバタイズする → ローカルセンダの送信レートは、いつでも、必ず、この「16K」のレシーバのアドバタイズしたウィンドウサイズに対するレートになり、ACK固有のセルフクロッキング特性によって非常に効果的に「レートペーシングされる」(我々が過去2〜3日で非常に意識するようになったとおり)。注:CWND及びセンダウィンドウサイズは、任意に大きくすることができ、輻輳制御においてさらなる役割を全く演じない(CWNDがレシーバの最大ウィンドウサイズよりはるかに大きいサイズを達成すると!!! その後に、最大の可能な送信レートを使用可能ボトルネックリンクの帯域幅に調整するそのACKセルフクロッキング特徴、しかしもちろん、レシーバは、アドバタイズされるレシーバウィンドウサイズを動的に調整し続けて、センダの送信レートに対する制御をさらに働かせることができ、あるいは、センダ端に常駐するインターセプトソフトウェアが、任意選択として、着信パケットのレシーバウィンドウサイズを動的に変更して、送信するMSTCPの送信レート/「有効ウィンドウ」に対する類似する制御を働かせることができる)。   1. Always limited to the advertised receive window size of the receiver: The receiver typically has, for example, 16K bytes, so in every subsequent packet, the receiver will receive a receive window size of "1" (14 position scale shift) ) = 16K bytes) → The local sender's transmission rate will always be the rate for this "16K" receiver's advertised window size, which is very effective due to the ACK-specific self-clocking characteristics. “Rate paced” (as we have become very conscious in the past few days). Note: CWND and sender window size can be arbitrarily increased and play no further role in congestion control (if CWND achieves a size much larger than the receiver's maximum window size !!! Its ACK self-clocking feature that adjusts the available transmission rate to the available bottleneck link bandwidth, but of course, the receiver continues to dynamically adjust the advertised receiver window size to control the sender's transmission rate Or intercept software residing at the end of the sender, optionally, dynamically changing the receiver window size of incoming packets to be similar to the MSTCP transmission rate / "effective window" to send Working control Rukoto can).

又は
2.我々は、シエートされる両方のセンダの最大ウィンドウサイズに任意に大きいスケーリングされたウィンドウサイズ値(又は単に大きいスケーリングされない64K、スケーリングされた256K...などの値)を意図的に過剰にセットし、レシーバの最大ウィンドウサイズはネゴシエーション中に例えば実際に要求される/必要になるものより4倍大きくなるように(最大デフォルト16Kという通常要求される/必要になるサイズではなく、例えば64K、256K...など)わずかに過剰にセットされ、その結果、センダのCWND及びSSthresh(通常はネゴシエートされるレシーバ最大ウィンドウサイズ値と同一にセットされる)は、ほぼ常に、頻繁な高速再送信半分化にかかわらず、非常にはるかにより大きい値(レシーバの比較的小さい実際のシステムリソースによって制約されたアドバタイズされたレシーバウィンドウサイズよりはるかに大きい値)を維持し、非常に効率的な100%に近いボトルネックリンクの「利用度方形波形」を保証する:これを保証するのは、多くともボトルネックリンク回線レートでのみ戻って到着する戻るACKセルフクロッキングの最大の可能なレートである。というのは、CWNDとセンダウィンドウサイズとの両方が今はほぼ一定不変に必ずいつでもトラバースされるボトルネックリンクの帯域幅容量の100%を利用するために十分に高速なレートでセンダTCPが送信できることを保証するために必要な特定のセンダウィンドウサイズ値より多数の桁だけ大きいからであり(これは、周知の帯域幅遅延積すなわち周知のRTT*ウィンドウサイズの等式に関係付けられる)、さらに、CWNDがレシーバのネゴシエートされたウィンドウサイズ値(上記の例えば64K、256K...などの)より大きいサイズをすばやく達成した後に、本明細書のセンダTCPは、その後、連続するRTT中のウィンドウサイズ増大を介してレシーバのネゴシエートされた最大ウィンドウサイズ(上記の例えば64K、256K...などの)を超えて実際の「有効ウィンドウ」を増分することはせず、したがって、その後、戻るACKストリームを受信した時にさらなるパケットをクロックアウトし/送出するだけであるはずである(戻るACKの最大レートは、ここでは、必ず、ボトルネックリンクの帯域幅容量以内になるように制約される)。
Or 2. We deliberately over-set the arbitrarily large scaled window size value (or simply a large unscaled 64K, scaled 256K ..., etc. value) to the maximum window size of both senders to be seated. , So that the maximum window size of the receiver is four times larger than what is actually required / required during the negotiation (for example, 64K, 256K. Etc.) so that the sender's CWND and SSthresh (usually set to the same as the negotiated receiver maximum window size value) almost always result in frequent fast retransmission halving. Regardless, very much larger values (re A very efficient 100% bottleneck link “utility square waveform” that is much larger than the advertised receiver window size constrained by the actual system resources of the network. Guarantee: This is guaranteed by the maximum possible rate of back ACK self-clocking that arrives back only at the bottleneck link line rate. Because both CWND and sender window size can now be sent at a rate fast enough to take advantage of 100% of the bottleneck link bandwidth capacity that is now always traversed almost constant. Because it is many orders of magnitude larger than the specific sender window size value required to guarantee (this is related to the well-known bandwidth delay product or well-known RTT * window size equation), and After CWND quickly achieves a size larger than the receiver's negotiated window size value (eg, 64K, 256K, etc. above), the sender TCP herein will then increase the window size during successive RTTs. The maximum negotiated window size of the receiver via (example above Does not increment the actual “valid window” beyond 64K, 256K, etc., and therefore only clocks out / sends out further packets when a subsequent ACK stream is received. (The maximum rate of returning ACKs is always constrained here to be within the bandwidth capacity of the bottleneck link).

注:上記のケース1と2との両方で、インターセプトソフトウェア(又はTCPソースコード)は、リモートレシーバからの着信パケット内のレシーバウィンドウサイズフィールド値を、任意の必要なより小さい最大値(例えば最新の記録された最小戻るACK間インターバル及び非輻輳RTT/OTT値又は推定値...などから動的に導出される、あるいは、ユーザがトラバースされるボトルネックリンクの帯域幅容量の以前の知識から特定の値を指定することができるのいずれか)になるように必ず変更することができ、したがって、センダTCPの有効ウィンドウサイズがトラバースされるボトルネックリンクの帯域幅容量と一致するのに必要なサイズレベルを絶対に超えないことを保証することができる → 今は、動的なレシーバのアドバタイズされるウィンドウサイズフィールド値を制限するのにレシーバのシステムリソース制約に頼る必要がなく、センダとレシーバとの両方の最大ウィンドウサイズ値を、同一の任意に非常に非常に大きいスケーリングされたウィンドウサイズ値になるように両方とも一緒にネゴシエートすることができる。   Note: In both cases 1 and 2 above, the intercept software (or TCP source code) sets the receiver window size field value in the incoming packet from the remote receiver to any required smaller maximum value (eg, the latest Dynamically derived from recorded minimum inter-ACK interval and non-congested RTT / OTT values or estimates, etc., or identified from previous knowledge of the bandwidth capacity of the bottleneck link that the user is traversed Can be specified), so that the effective window size of the sender TCP is the size required to match the bandwidth capacity of the bottleneck link being traversed. Can guarantee that the level will never be exceeded → now it is a dynamic receiver There is no need to rely on the receiver's system resource constraints to limit the advertised window size field value, and the maximum window size value for both the sender and receiver can be the same, arbitrarily very large scaled window Both can be negotiated together to be a size value.

注:我々は、センダのCWNDがftpのTCPデータ転送チャネル確立時に最初から十分に大きい値又は非常に大きい値まで確かに増やされることをさらに保証してもよく/必要があり、さもなければ、このまさに初期ステージでの即座のパケットドロップは、センダのSSThreshに現在の初期の非常に小さいCWND値の半分をセットさせる場合がある:これは、例えば、ある個数例えば10個のまさに最初の初期に送信されるデータパケットを保管するインターセプトソフトウェアによって達成することができ、例えば10個の受信されなかったパケットのいずれかのリモートレシーバへの実際の再送信を実行する(すなわち、リモートレシーバTCPで受信されない欠けているパケットを検出するための、この時間の間の着信する戻るACKNoのチェック、及びローカルMSTCPがSstresh値を現在の初期の非常に小さいCWND値の半分にこの時にリセットするのを防ぐためのローカルMSTCPに戻るそのような到着するパケットの破棄/変更/又は転送しないこと)。   Note: We may further guarantee / need that the sender's CWND is certainly increased from the beginning to a sufficiently large or very large value when establishing the ftp TCP data transfer channel, This immediate packet drop at the very initial stage may cause the sender's SSThreshold to set half of the current initial very small CWND value: Can be achieved by intercept software that stores the transmitted data packets, for example performing an actual retransmission of any of the 10 unreceived packets to the remote receiver (ie not received at the remote receiver TCP) Incoming during this time to detect missing packets Check back ACKNo and / or discard / modify such arriving packets back to local MSTCP to prevent local MSTCP from resetting this value to half of the current initial very small CWND value at this time Do not forward).

注:センダのTCPソースコードが直接変更のために使用可能である場合には、これは、はるかに単純になる:例えば、ここでは、Ssthresh値が、今、任意の非常に大きい値に「永久的に」固定され、且つ/又は送信するTCPの最大センダウィンドウサイズが、今、任意の非常に大きい値に「永久的」に固定され...などになるようにするためにソースコードを変更することだけが必要である(この目的を達成する多数の形がありえる...)。また、すべての方法/技法を、レシーバベースド制御(センダベースド制御ではなく)として働くように対応して変更することができる。   Note: This is much simpler if the sender's TCP source code is available for direct modification: for example, here the Ssthresh value is now “permanently set to any very large value. The maximum sender window size of TCP to be fixed and / or transmitted is now fixed “permanently” to any very large value. . . It is only necessary to change the source code so that it becomes (and there are many ways to achieve this goal ...). Also, all methods / techniques can be correspondingly modified to act as receiver-based control (rather than sender-based control).

注:さらに、次の非常に基本的な形で、ソフトウェアを全く必要とせずに、上記の「方形波形」技法を手動で即座に利用することができなければならない。   Note: In addition, in the following very basic form, the above “square waveform” technique should be immediately available manually without any software required.

1.大きいウィンドウスケール、大きいウィンドウ、SACK、Delay ACKなしについて、それ相応に2つのPCのレジストリを手動でセットする
2.この2つのPCの間の大きいFTP
3.ここでのFTPの送信レート/スループットグラフは、「一定の100%に近いボトルネックリンクの利用度レベル方形波形」を示さなければならない。
1. 1. Manually set the registry of the two PCs accordingly for large window scale, large window, SACK, no Delay ACK Large FTP between these two PCs
3. The FTP transmission rate / throughput graph here must show a “bottleneck link utilization level square waveform close to a constant 100%”.

我々は、さらに、観察された最新の最小の「記録された」戻るACK間インターバルで通常のデータパケットを送出する最小パケット間遅延を追加し(例えばバイト毎秒(ボトルネックリンクの容量に対応しなければならない)に関して、この値を、さらに、例えば、例えば300msおきに導出され/更新されるなどの直前の指定された前の時間インターバルからのみ導出し/更新することができる)、必要な場合にパケットをバッファリングしてもよい → 実際の輻輳ではなく不必要な過渡的輻輳パケットドロップに寄与する場合があるルータでの「バーストバッファリング」がない。   We have also added a minimum inter-packet delay that sends a normal data packet at the latest observed “recorded” back-inter-ACK interval observed (for example, bytes per second (must accommodate bottleneck link capacity). This value can be derived / updated only from the previous specified previous time interval, eg, derived / updated every 300 ms, for example), if necessary Packets may be buffered → There is no “burst buffering” at the router that may contribute to unnecessary transient congestion packet drops rather than actual congestion.

このインターセプトソフトウェアが、CWNDの連続するRTT指数関数的増分から輻輳ドロップを引き起こすことが可能である(指数関数的に増分されたCWNDが、レシーバのアドバタイズされたウィンドウサイズ以下に留まり、例えば、以前に既にボトルネックリンクの帯域幅の100%を利用しながらACKセルフクロッキングにかかわりなく送信レートを2倍にすることを可能にするが、一部のユーザは、実際の物理受信バッファサイズシステムリソースを実際に大きくなるようにセットすることさえできる)。   This intercept software can cause congestion drop from CWND successive RTT exponential increments (exponentially incremented CWND remains below the advertised window size of the receiver, eg While allowing 100% of the bottleneck link bandwidth and doubling the transmission rate without regard to ACK self-clocking, some users may use the actual physical receive buffer size system resources You can even set it to be really big).

既存の「ポーズ」技法すなわち、「タイムアウト」の外部のすべての戻るACKに関する最新の最小の「記録された」戻るACK間インターバル(ボトルネックリンクの容量に対応する)に関する「ポーズ」すなわち、指定されたインターバルが前の戻るACK以降の新しい次の着信する戻るACKを受信せずに満了する(例えば、1.8*最新の最小の記録された戻るACK間インターバル)場合に、例えば同一の最新の最初の記録された戻るACK間インターバルすなわち最小戻るACK間インターバルと等しい期間の間、前方にリモートレシーバTCPに次の保留中のインターセプトされたパケットを単純に転送しないことを組み込まなければならない → ここで、センダTCPは、最初の送信のACKが1.8*最新の最小の記録された戻るACK間インターバル、例えば90msの外で戻ることによってトリガされる「ポーズ」の前に、多くとも2つのパケット(それぞれは、送信の間の例えば50msのレートペーシングされた最小の最小戻るACK間インターバルである)を送信することだけができる → ソフトウェアは、それ自体では輻輳ドロップを引き起こさない+外部インターネット上で増分展開可能+TCPフレンドリ+他のTCPがパケットドロップを引き起こす時であっても達成された非輻輳レベル送信レートスループットを保つ(変動なし)。リモートレシーバTCPへの転送を待っているインターセプトされたパケット及び/又はバッファに受信された時刻などのそのようなバッファリングされたパケットに関するさまざまな情報...などを保管するバッファを実施し、且つ、次に、例えば特定のバッファリングされたパケットのバッファキュー内での待ち時間が例えば1秒の標準RFCのデフォルト最小RTO時間期間に達する場合にローカルMSTCPへの3DUP ACK高速再送信要求を生成し(ローカルMSTCPでのRTOタイムアウトをプリエンプトするために)、さらに、キュー内のこの特定のバッファリングされたパケットを任意の最新の新しい「高速再送信された」パケットに置換することを、さらに必要とする可能性がある/行ってもよい。   The existing “pause” technique, ie “pause” or specified for the latest minimum “recorded” inter-back ACK interval (corresponding to the capacity of the bottleneck link) for all back ACKs outside the “timeout” E.g. if the interval expires without receiving a new next incoming back ACK since the previous back ACK (eg 1.8 * latest minimum recorded inter-back ACK interval) It must incorporate not simply forwarding the next pending intercepted packet forward to the remote receiver TCP for a period equal to the first recorded inter-back ACK interval, ie the minimum inter-back ACK interval → , Sender TCP, the first transmission ACK is 1.8 * Before the “pause” triggered by returning outside the returned inter-ACK interval, eg 90 ms, each with at most two packets (each with a rate-paced minimum minimum return ACK of eg 50 ms) → the software is achieved by itself, which does not cause congestion drops + incremental deployment on the external Internet + TCP friendly + even when other TCP causes packet drops Keep non-congestion level transmission rate throughput (no fluctuation). Various information about such buffered packets, such as intercepted packets waiting for transfer to the remote receiver TCP and / or the time of reception at the buffer. . . To the local MSTCP when the waiting time in the buffer queue of a particular buffered packet, for example, reaches the default minimum RTO time period of a standard RFC of 1 second, for example. A 3DUP ACK fast resend request (to preempt the RTO timeout in local MSTCP) and any newer “fast resend” to this particular buffered packet in the queue Replacing with a packet may / can be further required.

注:既存の標準RFCのスライディングウィンドウ/AIMD機構...などのいずれをも必ずしも必要としない、及び/又は既存の標準RFCのスライディングウィンドウ/AIMD機構...などと共にインターセプトソフトウェア(及び/又は直接TCPソースコード変更)として並列に働く、代替TCP輻輳制御機構は、「送信レートポーズ」技法と一緒に上記の直前の段落の到着するACK間インターバル「送信レートペーシングされた」技法を組み込まなければならず(例えば次の戻るACKが前に到着したACK以来の指定された時間期間の外で到着する際に、リモートレシーバへのパケット転送をポーズし/スキップするために)、例えば最新の連続するパケットの間の戻るACK間インターバルの最新の値及び/又は特定のパケットの実際のRTT値又はOTT値(トラバースされる経路に沿った輻輳バッファリングの始まり、又はそれが全く存在しないことを非常によく示さなければならない)に従って調整して、MSTCPパケット生成レート(より高速の増分レート/より低速の減分レートでの転送のために使用可能にされる)の増分/減分のいずれかを行わなければならず、あるいは、既存の標準RFC TCPのまさにそれ自体の既存AIMD機能を並列に利用しなければならない(ならびに/あるいはリモートレシーバに転送されるのを待っているパケットのバッファリング、及び/又は古いキューイングされたパケットのRTOタイムアウトをプリエンプトするためのローカルMSTCPへの3 DUP ACK高速再送信要求生成、及び/又は戻るACK間インターバル「送信/ポーズレートペーシング」技法をもたらすための、バッファ内でキューイングされた旧バージョンパケットを置換する最新の新しい再送信パケット及び/又はイベントリストの受信時刻/送信時刻情報及び/又はパケットごとのRTT/OTT監視...などと一緒に)。周期的な指定された時間期間に、上記のスキーマは、トラバースされる経路のボトルネックリンクの帯域幅容量の最新の最良の推定値が、後に到着する最新の記録された最小の戻るACK間インターバル値から継続的に更新されることを保証するために、2つ又は少数のパケットが、隣接したファーストマイルリンクの帯域幅によって許容できる可能な非常にすばやい連続で即座に次々に前方にリモートレシーバに転送するのに使用可能であることを保証することができる(例えば、2つ又は少数のパケットが、それらを一緒に前方に転送する前に使用可能になるまで待つ...など、実際のボトルネックリンクの帯域幅容量を、あるサイズのパケット毎秒ではなくバイト毎秒というより微細なレベルでさらに導出できることと、送信レートペーシング技法及び/又は送信レートポーズ技法を、前方に送信される保留中のパケットサイズの実際のサイズを知って、バイト毎秒というこの導出される共通のより微細な粒度を利用するように適合させることができることに留意されたい)。ここでのスキーマは、既存RFCのスライディングウィンドウ輻輳回避機構と異なる、ペーシングされた送信レートを増分/減分するそれ自体の考案されたアルゴリズムを利用することができる。ここでの送信レートは、同一の一定の100%に近いボトルネックリンクの利用度レベル「方形波形」を示さなければならず、常に、送信レートは、100%に近いボトルネックリンクの利用度レベルの前後の非常に狭い帯域内で発振する。   Note: Existing standard RFC sliding window / AIMD mechanism. . . And / or an existing standard RFC sliding window / AIMD mechanism. . . An alternative TCP congestion control mechanism that works in parallel as intercept software (and / or direct TCP source code changes), etc., together with the “transmission rate pause” technique, the inter-arrival ACK interval “transmission rate pacing” of the previous paragraph above. (E.g., to pause / skip packet transfer to the remote receiver when the next returning ACK arrives outside the specified time period since the previous ACK arrived) E.g., the latest value of the return inter-ACK interval between the latest consecutive packets and / or the actual RTT value or OTT value of a particular packet (the beginning of congestion buffering along the traversed path, or Adjust very well to show that there is no) Must either increment / decrease the STCP packet generation rate (enabled for transfer at a faster incremental rate / lower decrement rate) or an existing standard RFC TCP's very own existing AIMD function must be used in parallel (and / or buffering of packets waiting to be forwarded to the remote receiver, and / or RTO timeout of old queued packets) Replacing old version packets queued in buffer to provide 3DUP ACK fast retransmission request generation to local MSTCP to preempt and / or inter-ACK interval "send / pause rate pacing" technique Latest new retransmission packet and / or event Trst reception time / transmission time information and / or for each packet RTT / OTT monitoring ... with like). In a periodic specified time period, the above schema will show that the latest best estimate of the bandwidth capacity of the bottleneck link of the traversed path is the latest recorded minimum returned ACK interval that will arrive later. In order to ensure that the values are continuously updated, two or a few packets are immediately forwarded one after another to the remote receiver in a very quick sequence possible with the bandwidth of the adjacent first mile link. Can be guaranteed to be available for forwarding (eg, wait until two or a few packets are available before forwarding them forward together, etc.) Neck link bandwidth capacity can be further derived at a finer level of bytes per second rather than packets of a certain size, and transmission rate Adapting the sourcing technique and / or transmission rate pause technique to know the actual size of the pending packet size transmitted forward and to take advantage of this derived common finer granularity of bytes per second Note that you can The schema here can utilize its own devised algorithm to increment / decrease the paced transmission rate, which is different from the existing RFC sliding window congestion avoidance mechanism. The transmission rate here should show a bottleneck link utilization level "square waveform" close to the same constant 100%, and always the transmission rate is a bottleneck link utilization level close to 100%. It oscillates in a very narrow band before and after.

注:ここでのローカルインターセプトソフトウェアは、インターセプトソフトウェアの転送バッファパケットキュー内のパケットの個数がある個数又は総サイズを超える時などに、ローカルMSTCPが新しいパケットを生成し/送出するのを一時的に「止める」(又はローカルMSTCPのパケット送信レートを下げる)ために、ウィンドウサイズ更新パケットを生成するか、ローカルMSTCPへのリモートレシーバTCPからの着信パケット内のレシーバウィンドウサイズフィールド値を必要に応じて例えば「0」又は非常に小さい値に変更することができる。これは、ローカルMSTCPでの最終的なRTOタイムアウトを引き起こす場合がある過度の非常に大きいパケットキューの増加を防ぐ。
大きいFTP転送改善の定量化:単純化された。
Note: The local intercept software here temporarily prevents local MSTCP from generating / sending new packets, such as when the number of packets in the intercept software's forwarding buffer packet queue exceeds a certain number or total size. Generate a window size update packet to “stop” (or reduce the local MSTCP packet transmission rate) or set the receiver window size field value in the incoming packet from the remote receiver TCP to the local MSTCP as needed, eg It can be changed to “0” or a very small value. This prevents an excessively large packet queue increase that may cause the final RTO timeout in local MSTCP.
Quantification of large FTP transfer improvements: simplified.

最小50%スループット改善(例えば、1MBSから1.5MBSへ、他の要因からのさらなるかなり大きい改善があるはずである)を達成するために、一定の周期的パケットロス(及び高速再送信)は、センダ送信レートが最大回線レートに達するまさにその瞬間に発生する。   In order to achieve a minimum 50% throughput improvement (eg, there should be a much larger improvement from other factors, from 1 MBS to 1.5 MBS), constant periodic packet loss (and fast retransmission) is: It occurs at the very moment when the sender transmission rate reaches the maximum line rate.

(1)一定の周期的な1000個おきに1個のパケットロスレート及び200msのRTTを仮定すると、最大ウィンドウサイズは、すべてを送信し、1秒に1000個のパケットにレートをスロットリングするために、200パケット(300kバイト)である必要がある。   (1) Assuming a constant packet loss rate every 1000th and a RTT of 200ms, the maximum window size is to transmit everything and throttle the rate to 1000 packets per second. In addition, it is necessary to have 200 packets (300 kbytes).

SSthresh値は、一般に、連続的な高速再送信半分化に起因して、1/2*最大ウィンドウサイズ(100パケット又は300kバイト)前後でさまよい、CWNDは、最大帯域幅送信レートを再達成するために100パケット(150kバイト)だけ増分する必要がある → 100RTTが必要(20秒)。   SSthresh values generally wander around 1/2 * maximum window size (100 packets or 300 kbytes) due to continuous fast retransmission halving, because CWND re-achieves the maximum bandwidth transmission rate Must be incremented by 100 packets (150 kbytes) → 100 RTT is required (20 seconds).

最小リンクの帯域幅は、1000個のパケットを20秒で送信するために600kb/sである必要がある(1000*1500*8/20)。   The bandwidth of the minimum link needs to be 600 kb / s in order to transmit 1000 packets in 20 seconds (1000 * 1500 * 8/20).

(2)一定の周期的な100個おきに1個のパケットロスレート及び200msのRTTを仮定すると、最大ウィンドウサイズは、すべてを送信し、1秒に1000個のパケットにレートをスロットリングするために、20パケット(30kバイト)である必要がある。   (2) Assuming a constant packet loss rate every 100th and a RTT of 200ms, the maximum window size is to transmit everything and throttle the rate to 1000 packets per second. And 20 packets (30 kbytes).

SSthresh値は、一般に、連続的な高速再送信半分化に起因して、1/2*最大ウィンドウサイズ(10パケット又は15kバイト)前後でさまよい、CWNDは、最大帯域幅送信レートを再達成するために10パケット(15kバイト)だけ増分する必要がある → 10RTTが必要(2秒)。   SSthresh values generally wander around 1/2 * maximum window size (10 packets or 15 kbytes) due to continuous fast retransmission halving, because CWND re-achieves the maximum bandwidth transmission rate Needs to be incremented by 10 packets (15 kbytes) → 10 RTT is required (2 seconds).

最小リンクの帯域幅は、100個のパケットを2秒で送信するために600kb/sである必要がある(100*1500*8/2)。   The bandwidth of the minimum link needs to be 600 kb / s to transmit 100 packets in 2 seconds (100 * 1500 * 8/2).

そのような「方形波形」TCPは、TCPフレンドリであるはずであり、ボトルネックリンクをトラバースするTCPフローが、すべてそのような「方形波形」フロー又はそのような「方形波形」フローと既存の標準RFC TCPフローとの混合物からなる場合には、すべてのそのようなフロー/すべてのそのようなフローの混合物への戻るACKの総合レート/総数は、それでも、トラバースされる経路のボトルネックリンクの帯域幅容量に対応するものを超えないものまでに制限されるはずである→そのような「方形波形」TCPフローは、外部インターネット上で増分的に展開され、他の既存の標準RFCのTCPフロー及び/又はフローの混合物の「鋸歯」効果及び/又は公衆インターネット輻輳パケットドロップ及び/又はBERパケット破壊(ビットエラーレート)によって引き起こされるパケットドロップにもかかわらずその達成された送信レートを維持し/保持することができると同時に、すべてのそのような「方形波形」TCPフロー及び/又は他の既存の標準RFCのTCPフローに対してTCPフレンドリなままであることができる(注:新しいTCPフローは、どの場合でも、ほとんど必ず、ネットワークノードバッファの容量を利用してその送信レート増大を開始することができる)。   Such “square waveform” TCP should be TCP friendly, and all TCP flows traversing the bottleneck link are such “square waveform” flows or such “square waveform” flows and existing standards. When composed of a mixture with RFC TCP flows, the total rate / total number of ACKs back to all such flows / all such flows is still the bottleneck link bandwidth of the traversed path. It should be limited to no more than what corresponds to the width capacity-> such "square wave" TCP flows are incrementally deployed on the external Internet, and other existing standard RFC TCP flows and "Sawtooth" effect of a mixture of flows and / or public internet congestion packet drop and / or BE It can maintain / hold its achieved transmission rate despite packet drops caused by packet corruption (bit error rate), while at the same time all such “square wave” TCP flows and / or other Can remain TCP friendly to existing standard RFC TCP flows (Note: New TCP flows almost always begin to increase their transmission rate using the capacity of the network node buffer in any case) be able to).

変更されたTCPを用いると、リンクのトラフィックがバッファリングされ始める場合に、それに対応するエコーされるRTTは、今や、ある指定された被乗数*特定のソース−デスティネーションの非輻輳RTT値(特定のパケットサイズに関する、通常はシステムMTUサイズ又はMSSサイズによって決定される)を超えるはずであり、ソフトウェアは、今や、指定された「ポーズ」インターバルの間にTCPごとのフローの送信を停止することができる → これは、すべてのトラバースされるノードのバッファが、この「ポーズ」インターバル中にこのTCPごとのフローのバッファリングされたパケット(又は同等物)のすべてを即座にクリアされることを保証する → したがって、輻輳パケットドロップは決してない! しかし、常に、RTOタイムアウト及び1MSSへのCWNDリセットを引き起こす物理送信エラーの可能性がある(これは、非常に希であり、改善されたスループット性能に大きくは影響しない)が、我々は、センダRTOタイムアウトイベントをプリエンプトする/センダの送信レート半分化又は「0」へのリセットをプリエンプトするために、我々の「レシーバベースド」パケット到着間技法及び3DUP ACK高速再送信法を、前の段落の「大きいスケーリングされたウィンドウサイズ」法と一緒に組み込むこともできる。   With modified TCP, when link traffic begins to be buffered, the corresponding echoed RTT is now the specified multiplicand * specific source-destination non-congested RTT value (specific The software can now stop sending per-TCP flows during the specified “pause” interval, which usually exceeds the packet size (usually determined by the system MTU size or MSS size) → This ensures that all traversed node buffers are immediately cleared of all buffered packets (or equivalents) of this per-TCP flow during this “pause” interval. Therefore, there is no congestion packet drop! However, there is always the possibility of physical transmission errors that cause RTO timeouts and CWND resets to 1 MSS (which is very rare and does not significantly affect the improved throughput performance), To preempt timeout events / send sender transmission rate halving or reset to “0”, our “receiver-based” inter-packet inter-arrival technique and 3DUP ACK fast retransmission method are It can also be incorporated with the “scaled window size” method.

この故に、ここでのTCPごとのフローは、一定不変に物理使用可能帯域幅の半分を浪費する「鋸歯」送信レート/スループットグラフを引き起こすために送信レートを下げる(1MSSへのCWNDリセット)ためにRTOタイムアウトはしないはずであり、輻輳パケットドロップを避けるための送信レートの同等の必要な減少は、今や、「ポーズ」インターバルを介してもたらされるのみである → この送信レート/スループットグラフは、今や、ほとんどいつも100%に近い利用度である物理帯域幅を示さなければならない。   Therefore, the flow per TCP here is to keep the transmission rate down (CWND reset to 1MSS) to cause a “sawtooth” transmission rate / throughput graph that consistently wastes half of the physical available bandwidth. There should be no RTO timeout, and the equivalent required reduction in transmission rate to avoid congestion packet drops is now only brought through the “pause” interval. → This transmission rate / throughput graph is now It must show a physical bandwidth that is almost always 100% utilization.

変更されたTCPを利用せずに上記の「鋸歯」現象をプリエンプトする代替の方法は、センダTCPの最大送信ウィンドウサイズすなわちTCPWindowSizeシステムパラメータ値(及び/又はさまざまな他の関連するパラメータ値)をセットし、その結果、センダTCPの最大の可能な帯域幅遅延積(最大ウィンドウサイズ/RTT)値が、絶対にリンクの物理帯域幅を超えず、したがって、このTCPフローがその時にこのリンクを利用する唯一のフローであると仮定して、輻輳パケットドロップが存在し得ないようにすることである。適当な最大TCPWindowSize値を選択する時に、最大の許容されるサイズ(MTU値又はMSS値によって決定される)のパケットが、トラバースされる経路に沿った最低帯域幅リンクに完全に出るのに要する有限の時間期間は、その特定のソース−デスティネーションの非輻輳ping RTT(非常に小さい無視できるパケットサイズの)値に加算される必要があるはずであり、これは、帯域幅遅延積式で使用される最小RTT値を我々に与える(実生活では、実際のRTT値は、さまざまなコンポーネント、例えばCPU ACK生成処理...などによって導入される変動を考慮に入れると、より大きくなるはずである):さらに、戻るACKが、おそらくは通常のデータパケットにピギーバックされて搬送される場合(例えば、レシーバがデータを対称に送信してもいる場合)に、戻る最大サイズのデータパケットの、戻りのトラバースされる経路に沿った最低帯域幅リンクに完全に出るための有限の時間は、やはり、帯域幅遅延積式で使用される最小RTT値を我々に与えるために上記に加算される必要があるはずである。データパケットストリームが連続的であると仮定し、最大の許容されるサイズのデータパケットが、トラバースされる経路/戻り経路に沿った最低帯域幅リンクに出るのに要する有限の時間が、無視できる(すなわち、最低帯域幅リンクは、それでも、大きい帯域幅容量を有し、例えば、1500バイトのデータパケットが240kbsの次の前方リンクに出るのに50msを要するが、1500バイトのデータパケットが56kbsの次の前方リンクに出るのに約250msを要する:例えば50msというソース−デスティネーションの非常に小さいバイトサイズのpingパケットRTTについて、そのような出る時間は、最大ウィンドウサイズTCPWindowSize計算で使用すべき最小RTT値の計算を構成する値を支配する)と仮定すると、Selective Acknowledgementオプションは、ここでの性能を高めるはずであり、Delay Acknowledgementオプションは、イネーブルされた場合であっても、実際の効果を一切有しない。   An alternative way to preempt the “sawtooth” phenomenon described above without using a modified TCP is to set the sender TCP's maximum transmission window size, or TCPWindowSize system parameter value (and / or various other related parameter values). As a result, the maximum possible bandwidth delay product (maximum window size / RTT) value of the sender TCP never exceeds the physical bandwidth of the link, so this TCP flow will then utilize this link It is assumed that there is only one flow, so that no congestion packet drop can exist. When selecting an appropriate maximum TCPWindowSize value, the finite required for a packet of maximum allowed size (determined by the MTU value or MSS value) to completely exit on the lowest bandwidth link along the traversed path Time period should be added to the non-congested ping RTT (of very small negligible packet size) value for that particular source-destination, which is used in the bandwidth delay product equation (In real life, the actual RTT value should be larger when taking into account variations introduced by various components, such as the CPU ACK generation process ...) : In addition, if the returning ACK is probably piggybacked into a regular data packet (eg For example, if the receiver is also sending data symmetrically), the finite time to fully exit the lowest bandwidth link along the return traversed path of the largest data packet returned is still Should be added to the above to give us the minimum RTT value to be used in the bandwidth delay product equation. Assuming that the data packet stream is continuous, the finite time it takes for the largest allowable size data packet to exit the lowest bandwidth link along the traversed / returned path is negligible ( That is, the lowest bandwidth link still has a large bandwidth capacity, for example, it takes 50 ms for a 1500-byte data packet to go to the next forward link of 240 kbs, but a 1500-byte data packet is next to 56 kbs. It takes about 250 ms to exit the forward link of: For example, for a source-destination very small byte-sized ping packet RTT of 50 ms, such exit time is the minimum RTT value to be used in the maximum window size TCPWindowSize calculation. Governs the values that make up the computation of ) Assuming, Selective Acknowledgment option is should improve the performance of this case, Delay Acknowledgment option, even if it is enabled, any no practical effect.

外部インターネット上での増分的に即座に展開可能なTCP変更
現在、標準RFC TCPデータ転送スループットは、高い輻輳ドロップレート及び/又は高いBERレート(物理送信ビットエラーレート)を有する経路/ネットワーク上で、特に高いRTT値及び非常に大きい帯域幅経路を有する長距離ファットパイプネットワーク(LFN)で、良好に動作しない。標準RFC TCPの常に変動する固有のAIMD(加法増加乗法減少)鋸歯送信波形は、物理リンク/ボトルネックリンクの帯域幅容量の0%と100%をはるかに超える値との間で激しく変動し、これもパケットドロップ自体に寄与し得る。
TCP changes that can be deployed incrementally and instantly on the external Internet Currently, standard RFC TCP data transfer throughput can be achieved over paths / networks with high congestion drop rates and / or high BER rates (physical transmission bit error rates) It does not work well, especially with long distance fat pipe networks (LFN) with high RTT values and very large bandwidth paths. The constantly varying inherent AIMD (additive increase multiplicative decrease) sawtooth transmit waveform of standard RFC TCP varies wildly between 0% and well over 100% of the bandwidth capacity of the physical link / bottleneck link, This can also contribute to the packet drop itself.

現在、TCPは、3DUP ACK高速再送信要求又はRTO再送信タイムアウトを介して通知されるパケットロスイベントの際に、その輻輳ウィンドウCWNDサイズを半分にし、したがって、その送信レートを半分にする。現在、TCPは、BER効果など、パケットドロップイベントの輻輳関連でない原因を見分けることもできず、すべてのパケットロスイベントを経路/ネットワークの輻輳によって引き起こされたものとして扱う。   Currently, TCP halves its congestion window CWND size and thus halves its transmission rate during packet loss events notified via 3DUP ACK fast retransmission requests or RTO retransmission timeouts. Currently, TCP also cannot identify causes that are not congestion related to packet drop events, such as the BER effect, and treats all packet loss events as being caused by route / network congestion.

わずか1%の総ロスレートを有する経路が、達成可能なTCPフローのスループットを半分にすることは、一般的な明確に文書化された現象である。http://internettrafficreport.comからわかるように、アジアでの通常のロスレートは、5%〜40%であり、北米では2%〜10%である。 It is a common and well-documented phenomenon that a path with a total loss rate of only 1% halves the achievable TCP flow throughput. http: // internettrafficreport. com , the usual loss rate in Asia is 5% to 40% and in North America it is 2% to 10%.

ここで、高いロスレートの経路/ネットワーク上の上で説明した欠点のすべてを完全に除去でき、外部インターネット上で増分的に即座に展開可能であり、TCPフローフレンドリとすることもできる、次の全般的な原理(又はそのステップ若しくはサブコンポーネントステップ/プロセス若しくはサブコンポーネントプロセスのさまざまな組合せ)に基づく、既存の標準RFCのTCP SACKに対する改善変更の概要を示す。   Here, all of the above-mentioned drawbacks on high loss rate paths / networks can be completely eliminated, can be instantly deployed on the external Internet incrementally, and can also be TCP flow friendly FIG. 6 shows an overview of improvements to an existing standard RFC TCP SACK based on a common principle (or various combinations of steps or subcomponent steps / processes or subcomponent processes).

(1)3つのDUP ACKによって通知されるパケットドロップイベントの際に、本明細書の変更されたTCPは、失われる/捨てられると通知された総セグメント/パケットに対応するバイト数だけ輻輳ウィンドウCWNDサイズを減らすことだけを必要とするはずである(着信DUP ACKパケット(1つ又は複数)(半分にされたCWNDサイズを増やす/膨張させる高速再送信及び/又は後続の複数のDUP ACKをトリガする)ACK Numberフィールドは、最初の失われたパケットのシーケンス番号を示すが、Selective Acknowledgementフィールドは、順序はずれで成功して受信された連続するシーケンス番号のブロックを示す;すなわち、ACKNoと最小のSeqNo SACKされたブロックとの間の「欠けているギャップ(1つ又は複数)シーケンス」及びSACKされたブロック自体の間の欠けているギャップ(1つ又は複数)SeqNoは、欠けている捨てられたギャップ(1つ又は複数)パケット(1つ又は複数)のシーケンス番号を、したがって、捨てられると示されるバイトの総数を我々に与える)。ところが、DUP ACK内の最大のSACKNoは、成功して受信された最大のSeqNoを示し、これは、変更されたTCPのCWNDサイズをそれ相応に増分するのに任意選択で利用することができ(変更されたTCPの最大の受信されたACKNoに、今、高速再送信及び/又は後続の複数のDUP ACKをトリガする第3DUP ACK内の最大の受信されたSACKNoがセットされているかのように、しかし、CWNDのサイズ/「有効ウィンドウ」サイズの増分に関する目的/効果だけのためであって、確かに、変更されたTCPのスライディングウィンドウの左エッジを進める目的/効果のためでは全くない:すなわち、TCPのACKNoフィールドのエンドツーエンドセマンティクスは、それ以外の点では既存の標準TCPで指定されたままに完全に保たれなければならない)、したがって、着信ACKNoフィールドが既存の標準TCPの有効ウィンドウサイズ増分に対して有する効果に関して同一の形で、しかし、決してスライディングウィンドウの左エッジの前進(これは、「欠けているギャップ(1つ又は複数)SeqNo」に、もはや、もう一度高速再送信される/RTOタイムアウト再送信されることのできる現在のウィンドウサイズ分のデータ内で保持されなくするはずである:ここで、受信されたACKNoの後続の増分は、CWND/有効ウィンドウサイズを増分するのに利用される上記の最大のSACKNoより小さい場合に、変更されたTCPのCWND/有効ウィンドウサイズをもう一度増やす効果を有してはならないが、変更されたTCPのスライディングウィンドウ左エッジを前進させる効果を有することに留意されたい)の効果に関してではなく、ACKされた時ではなくSACKされた時に、変更されたTCPによってネットワークにより多くのセグメント/パケットを送信/注入することを可能にする。   (1) In the event of a packet drop event notified by three DUP ACKs, the modified TCP of the present specification is the congestion window CWND by the number of bytes corresponding to the total segment / packet notified as lost / discarded. Should only need to reduce size (incoming DUP ACK packet (s) (trigger fast retransmission to increase / expand halved CWND size and / or subsequent DUP ACKs) ) The ACK Number field indicates the sequence number of the first lost packet, while the Selective Acknowledgment field indicates a block of consecutive sequence numbers that were successfully received out of order; that is, ACKNo and minimum SeqNo SACK Was The “missing gap (s) sequence” between the lock and the missing gap (s) SeqNo between the SACKed block itself is the missing discarded gap (s) Or) give us the sequence number of the packet (s) and thus the total number of bytes indicated to be discarded). However, the maximum SACKNo in the DUP ACK indicates the maximum SeqNo successfully received, which can optionally be used to increment the modified TCP CWND size accordingly ( As if the modified TCP maximum received ACKNo is now set to the maximum received SACKNo in the third DUP ACK that triggers fast retransmission and / or subsequent DUP ACKs However, it is only for the purpose / effect of increasing the CWND size / "effective window" size, and certainly not for the purpose / effect of advancing the left edge of the modified TCP sliding window: The end-to-end semantics of the TCP ACKNo field are otherwise standard Must be kept exactly as specified in the CP), and therefore in the same way with respect to the effect that the incoming ACKNo field has on the effective window size increment of the existing standard TCP, but never the left edge of the sliding window Forward (this is retained in the data for the current window size that can no longer be fast retransmitted / RTO timeout retransmitted to “Missing Gap (s) SeqNo”) Should be eliminated: where the subsequent increment of the received ACKNo is less than the above maximum SACKNo used to increment the CWND / valid window size, the modified TCP CWND / valid It should not have the effect of increasing the window size again, but it has changed. Note that it has the effect of advancing the left edge of the sliding window of TCP, not with respect to the effect of) but sending more segments / packets over the network with a modified TCP when it is SACKed than when it was ACKed / Allows to inject.

及び/又は
(2)第3のDUP ACKによって通知されるパケットドロップイベントの際に、本明細書の変更されたTCPフローは、ネットワーク内の未解決の送信済みのフライトバイトの総数(すなわち、現在の第3DUP ACKのACKNoと同一のSeqNoを有するデータを搬送するパケットが送信された時と、同一のSeqNoを有するこの現在の第3DUP ACKの到着の時との間にネットワークに送信された、データを搬送するパケットであれデータを搬送しない制御パケットであれ、カプセル化/ヘッダを含む、すべての送信されたパケットの総バイト数)が、現在、次で計算されるものと同一の個数に調整され/その個数まで減らされることを保証することだけを必要とするはずである:高速再送信をトリガするこの特定の第3DUP ACKのRTT中にネットワークに送信された送信済みフライトバイトの総数、すなわち、高速再送信をトリガする第3の戻るDUP ACKのACKNoと同一のSeqNoを有するパケットの送信の時とこの特定の第3DUP ACKの受信の時との間にネットワークに送信されたバイトの総数を、minRTTをこの特定の第3DUP ACKのRTTで割ったものによって割った値である。
And / or (2) Upon a packet drop event signaled by a third DUP ACK, the modified TCP flow herein is the total number of outstanding transmitted flight bytes in the network (ie, the current Data transmitted to the network between when a packet carrying data having the same SeqNo as the ACKNo of the third DUP ACK is transmitted and when the current third DUP ACK having the same SeqNo arrives The total number of bytes of all transmitted packets, including encapsulation / header, whether the packet carrying the data or the control packet not carrying the data) is now adjusted to the same number as calculated below / Should only need to be guaranteed to be reduced to that number: this feature that triggers fast retransmissions. The total number of transmitted flight bytes sent to the network during the RTT of the fixed third DUP ACK, i.e. when sending a packet with the same SeqNo as the ACKNo of the third back DUP ACK that triggers a fast retransmission The total number of bytes sent to the network between the time of receipt of a particular third DUP ACK divided by minRTT divided by the RTT of this particular third DUP ACK.

minRTTは、TCPフローのエンドポイントの間の実際に全く輻輳していないRTTの最新の推定値であり、したがって、輻輳ドロップノードをトラバースするすべてのフローが、すべて、調和して働くそのような変更されたTCPフローである場合に、ここでのこの特定のノードは、その後、輻輳しない又は輻輳に近くならなければならない:ここでのminRTTは、単に、変更されたTCPフローのこれまでに観察されたもののうちで最小の記録されたRTTの値であり、このフローの実際の物理的非輻輳RTTの最新の最良の推定値として働くはずである(明らかに、フローの実際の物理的非輻輳RTTが既知であるか前もって供給される場合には、それを代わりに使用しなければならず、あるいは使用することができる)。   The minRTT is the latest estimate of the RTT that is actually not congested between the endpoints of the TCP flow, so all the flows that traverse the congestion drop node all work in harmony. This particular node here must then become non-congested or close to congested: the minRTT here is simply observed so far for the modified TCP flow Is the smallest recorded RTT value and should serve as the latest best estimate of the actual physical uncongested RTT for this flow (obviously, the actual physical uncongested RTT for the flow If is known or supplied in advance, it must be used instead, or it can be used).

高速再送信をトリガするこの特定の第3DUP ACKのRTT中にネットワークに送信された送信済みフライトバイトの総数、すなわち、高速再送信をトリガする第3の戻るDUP ACKと同一のSeqNoを有するパケットの送信の時と、この特定の第3DUP ACKの受信の時との間に送信された送信済みフライトバイトの総数は、送信されたパケットのSeqNoと、TimeSentと、カプセル化/ヘッダを含むこのパケットのtotal_number_of_bytesとという3つ組フィールドからなる時間によって順序付けられたイベントエントリリスト(すなわち、ネットワークへの送信の順序に純粋に基づく)を維持することによって導出することができる。したがって、特定の肯定応答番号を有する第3DUP ACKのRTT値は、この現在の第3DUP ACKの現在の到着時刻−現在の第3の戻るDUP ACKと同一のSeqNoを有するデータを搬送するパケットのTimeSentとして導出することができる。総送信済みフライトバイト数は、戻る第3DUP ACKと同一のSeqNoを有するイベントリストのエントリとイベントリストのまさに最後のエントリとの間のすべてのエントリのすべてのtotal_number_of_bytesフィールドの合計として導出することができる。   The total number of transmitted flight bytes sent to the network during the RTT of this particular third DUP ACK that triggers a fast retransmission, i.e., for packets with the same SeqNo as the third return DUP ACK that triggers a fast retransmission. The total number of transmitted flight bytes transmitted between the time of transmission and the reception of this particular 3rd DUP ACK is the SeqNo, TimeSent, and encapsulation / header of this packet including the transmitted packet. It can be derived by maintaining a time-ordered event entry list (ie purely based on the order of transmission to the network) consisting of a triple field called total_number_of_bytes. Thus, the RTT value of the third DUP ACK with a particular acknowledgment number is the current arrival time of this current third DUP ACK—the TimeSent of the packet carrying data with the same SeqNo as the current third return DUP ACK Can be derived as The total number of flight bytes sent can be derived as the sum of all the total_number_of_bytes fields of all entries between the event list entry with the same SeqNo as the returned third DUP ACK and the very last entry of the event list. .

このイベントリストのサイズは、第3DUP ACKのACKNo未満のSeqNoを有するすべてのエントリを除去することによって、小さく保つことができる。   The size of this event list can be kept small by removing all entries that have a SeqNo less than the ACKNo of the third DUP ACK.

送信済み総フライトバイト数の計算の代わりの単純化された代替案は、現在の戻る第3DUP ACKのACKNoと同一のSeqNoを有するデータパケットの送信/受信の時の、送信された最大のSeqNo−受信された最大のACKNoとしてこれらを近似することである:これは、フライトデータセグメントバイトすなわち、カプセル化/ヘッダ/データを搬送しない制御パケットを含まないフライト中の純データセグメントの総数を与える。   A simplified alternative to the calculation of the total number of flight bytes transmitted is the maximum transmitted SeqNo− when sending / receiving a data packet with the same SeqNo as the ACKNo of the current 3rd DUP ACK to return. Approximate these as the largest ACKNo received: this gives the total number of net data segments in flight that do not include flight data segment bytes, ie, control packets that do not carry encapsulation / header / data.

第3DUP ACKによって通知されるパケットドロップイベントの際にネットワーク内の未解決の送信済みフライトバイトの総数を調整し/減らすために既存の標準RFCのTCPソースコードに対する変更を実施するさまざまな可能な形の中に、次のものがある。   Various possible ways to implement changes to the existing standard RFC TCP source code to adjust / reduce the total number of outstanding transmitted flight bytes in the network during a packet drop event signaled by the third DUP ACK Among these are the following:

.高速再送信をトリガするこの特定の第3DUP ACKのRTT中にネットワークに送信された送信済みフライトバイトの総数すなわち高速再送信をトリガする第3の戻るDUP ACKのACKNoと同一のSeqNoを有するパケットの送信の時とこの特定の第3DUP ACKの受信の時との間にネットワークに送信されたバイトの総数を[この特定の第3DUP ACKのRTTでminRTTを割った値]で割った値を最も近いバイトに丸めたものと同一の数になるように輻輳ウィンドウすなわちCWNDサイズを減らすことを介して現在の「有効ウィンドウ」サイズを即座に減らす。これは、任意の新しい到着する戻るACK(1つ又は複数)がネットワークに新しいパケットを「クロック」アウトできるようになる前に、輻輳ウィンドウCWNDサイズが、その以前のサイズを再達成するために適当な個数の後続の戻るACKによって増分されることを必要とするので、適当な個数の後続の戻るACKが、もはや、ネットワークに新しいパケットを「クロック」アウトするという効果を有しなくなることをもたらすはずである:ここで新しいパケット(1つ又は複数)を「クロック」アウトできるようになる前に必要な戻るACKの個数は、CWNDがそれだけ減らされたバイト数と同一個数のバイトを肯定応答するのに必要な戻るACKの個数になるはずであり、あるいは、通常はそれに対応する。   . The total number of transmitted flight bytes sent to the network during this particular third DUP ACK RTT that triggers fast retransmission, ie, packets with SeqNo equal to the ACKNo of the third back DUP ACK that triggers fast retransmission The value obtained by dividing the total number of bytes transmitted to the network between the time of transmission and the reception of this specific 3DUP ACK by [the value obtained by dividing minRTT by the RTT of this specific 3DUP ACK] is the closest. Immediately reduce the current "valid window" size through reducing the congestion window or CWND size to be the same number rounded to bytes. This is appropriate for the congestion window CWND size to re-achieve its previous size before any new arriving back ACK (s) can "clock" out new packets to the network. The appropriate number of subsequent back ACKs should no longer have the effect of "clocking out" new packets to the network, as it needs to be incremented by a large number of subsequent back ACKs. Where the number of back ACKs required before the new packet (s) can be "clocked out" is the number of bytes that CWND acknowledges the same number of bytes. Or the number of return ACKs needed for the normal or normal.

.代替案では、上記の減少プロシージャの代わりに、ここでのCWNDが、到着する第3DUP ACKのRTT/minRTT*この到着する第3DUP ACKによって肯定応答される送信されたセグメントバイトの個数を最も近いバイトに丸めるか分数を繰り越したものという比率で増分されるだけになる(通常の標準RFCのTCPの、到着する新しいACKによって肯定応答される送信されたセグメントバイトの個数による増分ではなく):これは、減少が達成されるまで、すべての後続の複数の同一の又は増分されたACKNoのDUP ACK又は新しいACKについて継続され、減少が達成された時には、この減少プロセスは停止する。一部のより古いTCP実施態様は、到着する新しいACKによって肯定応答される送信されたセグメントバイトの個数による増分ではなく、各到着する新しいACKについて1SMSSだけCWNDを増分する場合があり、この場合に、この減少プロセスは、その代わりに、すべての他のRTT/minRTT個の受信された到着するACKについて1回だけの1SMSSだけのCWNDの増分のみによってもたらすこともできる(DUP ACKであれ新しいACKであれ、しかし、最も近い整数に丸められ、例えば、RTT/minRTT=2.5の場合には、すべての5つの到着する新しいACKについて、2つだけCWNDを増分することができる)。これは、フライトバイト減少プロセスを平滑化するという効果を有し、したがって、このフライトバイト減少プロセス全体を通じた、新しいパケットの適当に減らされた連続的な送信及び受信が、それでもある。   . Alternatively, instead of the decrement procedure described above, the CWND here is the RTT / minRTT of the arriving third DUP ACK * the number of transmitted segment bytes that are acknowledged by this arriving third DUP ACK. Will only be incremented at the rate of rounding to a fraction or carry forward (rather than incrementing by the number of segment bytes transmitted in normal standard RFC TCP, which is acknowledged by a new incoming ACK): Continue for all subsequent multiple identical or incremented ACKNo DUP ACKs or new ACKs until the reduction is achieved, and when the reduction is achieved, the reduction process stops. Some older TCP implementations may increment CWND by 1 SMSS for each new ACK that arrives, rather than incrementing by the number of segment bytes sent that are acknowledged by the new ACK that arrives, This decrement process could alternatively be brought about by only one 1 SMSS CWND increment for all other RTT / minRTT received ACKs received (only DUP ACKs with new ACKs). Yes, but rounded to the nearest integer, for example, if RTT / minRTT = 2.5, CWND can be incremented by 2 for all 5 incoming new ACKs). This has the effect of smoothing the flight byte reduction process, so there is still a properly reduced continuous transmission and reception of new packets throughout this flight byte reduction process.

RTOタイムアウト再送信によって引き起こされる輻輳ドロップ(1つ又は複数)通知イベントは、次の形で扱うことができる。   The congestion drop (s) notification event caused by the RTO timeout retransmission can be handled in the following manner.

.上で説明した、第3Dup ACK又は後続のまさに同一のACKNoの複数のDUP ACKと同一の形で扱う、すなわち、フライトバイトの減少プロセスに、バッファリングされたレジデンシパケット(residency packet)を除去させるが、CWNDサイズのリセット/減少は行わせない。   . Treat in the same manner as the third Dup ACK or subsequent DUP ACKs of the exact same ACKNo as described above, i.e. let the process of reducing the flight bytes remove the buffered residency packet However, the CWND size is not reset / decreased.

又は
.既存の標準RFC仕様と正確に同一の形で扱う、すなわち、CWNDを1SMSSにリセットし、スロースタート指数関数的増分に再入する:しかし、ここで、本明細書の変更されたTCPではSsthresh値が一度も半分にされていないはずなので、スロースタートが、初期Ssthresh値(どの連続する高速再送信イベントによっても減らされていない)までもう一度すばやく増加することに留意されたい。
Or. Treat exactly the same as the existing standard RFC specification, ie reset CWND to 1SMSS and re-enter slow start exponential increments: But here the Ssthresh value in the modified TCP here Note that the slow start quickly increases again to the initial Ssthresh value (which has not been reduced by any successive fast retransmission events) since.

さらに、例えば未変更の同一のACKNoを有する後続の複数のDUP ACK、新しい増分されたACKNoを有する第3DUP ACK(又は、例えば高速再送信をトリガする第3DUP ACKなしのTCP再送信によって検出される、RTOタイムアウト再送信さえ)などの後続の輻輳ドロップ通知イベントは、新しい計算がより大きい減少を必要としない(すなわち、より小さい総フライトバイトをもたらすことを必要としない)場合には、既存の「フライトバイト減少」プロセス/プロシージャを完了することを可能にしなければならず、そうでない場合には、この新しいプロセス/プロシージャは、任意選択として引き継ぐことができる(また、その代わりに、特定の「マークされた」SeqNoが返されること及びその後にこのRTT中に輻輳ドロップ通知イベント(1つ又は複数)があったかどうかをチェックすることに基づいて、そのようなプロセス/プロシージャがRTTごとに1回だけ開始することを可能にすることができる)。   In addition, for example, a subsequent multiple DUP ACK with the same unchanged ACKNo, a third DUP ACK with a new incremented ACKNo (or detected for example by a TCP retransmission without a third DUP ACK that triggers a fast retransmission) Subsequent congestion drop notification events, such as RTO timeout retransmissions), if the new computation does not require a larger decrease (ie, does not require a smaller total flight byte), the existing “ It must be possible to complete the “Flight Byte Reduction” process / procedure, otherwise this new process / procedure can be taken over as an option (and instead a specific “mark” Returned "SeqNo" and then Based on the checking whether there is a congestion drop notification event in RTT (1 s) can be such a process / procedure makes it possible to start only once per RTT).

本明細書の変更されたTCPは、輻輳ドロップ(1つ又は複数)イベント通知を引き起こす特定の戻りACK(又はRTOタイムアウト再送信の直前の戻りACK)のRTTを導出することができるので、変更されたソフトウェアは、さらに、上と同一のイベントが実際に「誤った」輻輳ドロップ(1つ又は複数)通知であったかどうかを見分け、そうである場合に異なって反応することができる:すなわち、特定の輻輳ドロップ(1つ又は複数)イベント通知に関連するRTTが、エンドポイントの最新の推定された非輻輳RTTと同一である(又は既知/前もって供給される)か、ミリ秒単位の単一ノードの最小バッファ容量同等物の境界内のある指定された変動量だけ異なるのではない場合に、この特定の輻輳ドロップ(1つ又は複数)通知を、そうではなく物理送信エラー/破壊/BER(ビットエラーレート)から生じるものとして正しく扱うことができ、変更されたソフトウェアは、フライトバイト減少プロセスを引き起こす/これに入ることを全く必要とせずに、通知された捨てられたセグメント/パケットを単純に再送信することができる。   The modified TCP herein is modified because it can derive the RTT for a specific return ACK (or return ACK just before the RTO timeout retransmission) that causes congestion drop (s) event notification. The software can also detect if the same event as above was actually a “false” congestion drop (s) notification, and if so, it can react differently: The RTT associated with the congestion drop (s) event notification is the same as the endpoint's latest estimated non-congested RTT (or known / pre-supplied) or a single node in milliseconds This particular congestion drop (one or more) if it does not differ by a specified amount of variation within the bounds of the minimum buffer capacity equivalent. Notifications can be handled correctly as otherwise arising from physical transmission errors / destruction / BER (bit error rate), and the modified software causes / does not need to enter / enter the flight byte reduction process at all In addition, the notified discarded segment / packet can be simply retransmitted.

ここでは、既存の標準RFCのTCPと異なって、本明細書の変更されたTCPが、新しい第3DUP ACK/新しい第3DUP ACKに続く同一ACKNoの複数のDUP ACK及び/又はRTOタイムアウト再送信によって引き起こされる輻輳ドロップ(1つ又は複数)通知イベントの際にCWNDサイズを減らす/半分にする/リセットすることを必ずしも自動的に必要とはしない:本明細書の変更されたTCPは、未解決のフライトバイトの個数を適当に導出された値まで減らすために、輻輳ドロップ(1つ又は複数)通知イベント(1つ又は複数)の際に、必ずCWNDサイズを適当に減らすことだけを必要とすることに留意されたい。   Here, unlike the existing standard RFC TCP, the modified TCP of this specification is caused by multiple DUP ACKs and / or RTO timeout retransmissions of the same ACKNo following a new 3rd DUP ACK / new 3rd DUP ACK. It is not always necessary to automatically reduce / halve / reset the CWND size during a congestion drop (s) notification event that is received: the modified TCP herein is an unresolved flight In order to reduce the number of bytes to a suitably derived value, it is only necessary to properly reduce the CWND size in the event of congestion drop (s) notification event (s). Please keep in mind.

すべてのボトルネックリンクが、いつでも、ボトルネックノードでのバッファレジデンシ占有レベル及び/又は輻輳ドロップ(1つ又は複数)発生に関わりなく、送信されたパケットを、そのボトルネックの物理回線レートでレシーバTCPに向かって継続的に転送するはずである→したがって、すべてのセンダTCPで受信される戻るACKに関連するRTT期間(1つ又は複数)中に肯定応答されるすべてのバイトの合計は、ボトルネック帯域幅が十分に利用される場合に、いつでも、ほぼ一定不変にボトルネックリンクの物理帯域幅と等しくなるはずであることに留意されたい。また、TCPの輻輳回避アルゴリズムは、輻輳ドロップ(1つ又は複数)通知イベント(1つ又は複数)時にCWNDサイズ半分化によって引き起こされる既存の標準RFC TCPの著しい低い利用度ではなく、帯域幅利用度をできる限りボトルネック(1つ又は複数)のリンク帯域幅の100%近くに保つように努力しなければならないことに留意されたい。さまざまな異なるフライトバイト減少レベル/減少量/減少比/アルゴリズムを、考案することができ、例えば輻輳ドロップ(1つ又は複数)通知イベント(1つ又は複数)及び/又はそのようなヒストリカルイベントの時の最大の受信されたACKNo及び/又は最大の送信されたSeqNo及び/又はCWNDサイズ及び/又は有効ウィンドウサイズ及び/又はRTT及び/又はminRTT...など(例えば、変更されたTCPフローのすべてのバッファレジデンシパケット/「余分な」バッファリングされたフライトバイトを完全にクリアするのではなく、バッファレジデンシ占有のある許容されるレベルを考慮に入れることなど)のさまざまな他のパラメータに基づくものとすることもできる。   All bottleneck links are always able to receive transmitted packets at the bottleneck's physical line rate, regardless of the buffer resiliency occupancy level and / or congestion drop (s) at the bottleneck node. Should continue to forward towards TCP → thus the sum of all bytes acknowledged during the RTT period (s) associated with the return ACK received at all sender TCPs is the bottle Note that whenever the neck bandwidth is fully utilized, it should be approximately constant and equal to the physical bandwidth of the bottleneck link. Also, the TCP congestion avoidance algorithm is a bandwidth utilization rather than a significantly lower utilization of the existing standard RFC TCP caused by CWND size halving at the congestion drop (s) notification event (s). Note that efforts should be made to keep as close to 100% of the bottleneck (s) link bandwidth as possible. A variety of different flight byte reduction levels / decrease amounts / decrease ratios / algorithms can be devised, such as at the time of congestion drop (s) notification event (s) and / or such historical events. Maximum received ACKNo and / or maximum transmitted SeqNo and / or CWND size and / or effective window size and / or RTT and / or minRTT. . . (E.g., taking into account an acceptable level of buffer resilience occupancy rather than completely clearing all buffer residencies packets / "extra" buffered flight bytes of the modified TCP flow Etc.) based on various other parameters.

及び/又は
(3)インターネット上のTCP接続の物理ボトルネックリンクは、通常、レシーバTCPのラストマイル伝送媒体又はセンダTCPのファーストマイル伝送媒体のいずれかである:これらは、通常は、56Kbs/128Kbs PSTNダイヤルアップ又は通常の256Kbs/512Kbs/1Mbs/2Mbs ADSLリンクである。これらの状況で、センダTCPの送信レートがどれほど速いかに関わりなく(既存の標準RFCのTCPは、各後続RTTでますます増加するより大きいバイトを注入することによって経路の帯域幅を不可避的に継続的にプロービングし、スロースタート中にCWNDを指数関数的に2倍にするか、輻輳回避中にCWNDを線形に増分するかのいずれかを行う)、ボトルネックリンクは、すべてのフローのトラフィックを、その帯域幅によって制限される最大回線レートで転送することだけができる → 現在のボトルネックリンクの回線レートを超えて送信レートを増やすこと(現在のボトルネックリンクは、ネットワークのトラフィックに応じて時々変化する場合がある)は、ボトルネックリンクの物理回線レートを超えるTCPフロー(1つ又は複数)のより高いスループットをもたらさない。したがって、ここでのTCPを、ボトルネックリンクの最大の可能な物理回線レートより高いレートで送信しないように有利に変更することができる。ボトルネックリンクの最大の可能な物理回線レートより高いレートで送信することは、各RTT中に送信されるパケット/バイトの「余分な」ボトルネック物理回線レートを超える量を、TCPフローの2つの端点に沿ったどこかで不可避的にバッファリングさせるか捨てさせるだけである。
And / or (3) The physical bottleneck link of a TCP connection over the Internet is usually either the last mile transmission medium of the receiver TCP or the first mile transmission medium of the sender TCP: these are usually 56 Kbs / 128 Kbs PSTN dialup or normal 256Kbs / 512Kbs / 1Mbs / 2Mbs ADSL link. In these situations, no matter how fast the sender TCP transmission rate (existing standard RFC TCP inevitably continues the bandwidth of the path by injecting increasingly larger bytes on each subsequent RTT. Probing and exponentially doubling CWND during slow start or linearly incrementing CWND during congestion avoidance), the bottleneck link Can only forward at the maximum line rate limited by its bandwidth → increase the transmission rate beyond the line rate of the current bottleneck link (the current bottleneck link sometimes changes depending on the network traffic) TCP flows that exceed the physical line rate of the bottleneck link (which may change) One or more) of not result in higher throughput. Thus, the TCP here can be advantageously modified not to transmit at a rate higher than the maximum possible physical line rate of the bottleneck link. Sending at a rate higher than the bottleneck link's maximum possible physical line rate would cause the amount of TCP / bytes transmitted during each RTT to exceed the “extra” bottleneck physical line rate by It is unavoidably buffered or thrown away somewhere along the endpoint.

ここに、経路のボトルネックリンクの物理帯域幅を判定する、複数の可能なものの中の例のプロシージャがある:
.連続するRTT値を、たやすく導出することができる。というのは、既存の標準RFC TCPが、既に、各連続するRTT期間について特定のSeqNoを有する「マークされた」TCPパケットに基づいて、連続するRTT値の計算/導出を実行しているからである。
Here is an example procedure among several possible ones that determine the physical bandwidth of a path bottleneck link:
. Continuous RTT values can be easily derived. This is because the existing standard RFC TCP already performs the calculation / derivation of consecutive RTT values based on “marked” TCP packets with a specific SeqNo for each consecutive RTT period. is there.

.各連続するRTTのスループットレートは、この特定の「マークされた」SeqNoパケットのRTT中にネットワークに送信された送信済みフライトバイトの総数すなわち、この特定の「マークされた」SeqNoを有するパケットの送信の時とその戻るACK(又はSACKed)の時との間に送信された送信済みフライトバイトの総数をまず記録し又は導出することによって導出することができ、この総数は、送信されたパケットのSeqNoと、TimeSentと、カプセル化/ヘッダを含むこのパケットのtotal_number_of_bytesとという3つ組フィールドからなる時間によって順序付けられたイベントエントリリスト(すなわち、ネットワークへの送信の順序に純粋に基づく)を維持することによって導出することができる。したがって、特定のSeqNoを有する特定の「マークされた」パケットのRTT値は、この現在の戻るACK(又はSACKed)の現在の到着時刻−特定の「マークされた」SeqNoを有するデータを搬送するパケットのTimeSentとして導出することができる。総送信済みフライトバイト数は、戻る第3DUP ACKと同一のSeqNoを有するイベントリストのエントリとイベントリストのまさに最後のエントリとの間のすべてのエントリのすべてのtotal_number_of_bytesフィールドの合計として導出することができる。このイベントリストのサイズは、第3DUP ACKのACKNo未満のSeqNoを有するすべてのエントリを除去することによって、小さく保つことができる。送信済み総フライトバイト数の計算の代わりの単純化された代替案は、第3DUP ACKの到着の時の、送信された最大のSeqNo+この最大のSeqNoのパケットのデータバイトの個数−受信された最大のACKNoとしてこれらを近似することである:これは、フライトデータセグメントバイトすなわち、カプセル化/ヘッダ/データを搬送しない制御パケットを含まないフライト中の純データセグメントの総数を与える。   . The throughput rate for each successive RTT is the total number of transmitted flight bytes sent to the network during the RTT for this particular “marked” SeqNo packet, ie the transmission of packets with this particular “marked” SeqNo. And the total number of transmitted flight bytes transmitted between the time of the return ACK (or SACKed) and the seqNo of the transmitted packet. By maintaining a time ordered event entry list (ie, purely based on the order of transmission to the network) consisting of a triplet field of TimeSent and the total_number_of_bytes of this packet including encapsulation / header Guidance It can be. Thus, the RTT value of a specific “marked” packet with a specific SeqNo is the current arrival time of this current return ACK (or SACKed) —the packet carrying the data with the specific “marked” SeqNo It can be derived as TimeSent. The total number of flight bytes sent can be derived as the sum of all the total_number_of_bytes fields of all entries between the event list entry with the same SeqNo as the returned third DUP ACK and the very last entry of the event list. . The size of this event list can be kept small by removing all entries that have a SeqNo less than the ACKNo of the third DUP ACK. A simplified alternative to calculating the total number of flight bytes transmitted is the maximum SeqNo transmitted on the arrival of the third DUP ACK + the number of data bytes in this maximum SeqNo packet-the maximum received These are approximated as ACKNos of: flight data segment bytes, ie, the total number of net data segments in flight that do not include control packets that do not carry encapsulation / header / data.

その代わりに、特定の「マークされた」SeqNoを有するパケットの送信の時とその戻るACK(又はSACKed)の時との間に送信された送信済みフライトバイトの総数の近似及び/又は単純化として、各連続するRTTのスループットレート計算/導出を、特定の「マークされた」パケットのSeqNo+特定の「マークされた」パケットのバイト単位のデータペイロードサイズ−特定の「マークされた」SEQNoパケットが送信された時の受信された最大のACKNoに基づくものとすることができる。   Instead, as an approximation and / or simplification of the total number of transmitted flight bytes transmitted between the time of transmission of a packet with a particular “marked” SeqNo and the time of its returning ACK (or SACKed) , The throughput rate calculation / derivation of each successive RTT, the SeqNo of the specific “marked” packet + the data payload size in bytes of the specific “marked” packet−the specific “marked” SEQNo packet sent May be based on the maximum ACKNo received.

ここでのRTTのスループットレートは、この故に、RTT期間中にネットワークに送信された送信済みフライトバイトの上で導出された総数/このRTT値(秒単位)として計算することができる。   The throughput rate of RTT here can thus be calculated as the total number derived on the transmitted flight bytes sent to the network during the RTT period / this RTT value (in seconds).

.すべてのRTTで達成された最大のスループットレート値のレコードが、保持され、継続的に更新され、以下ではmaxTと称する。以下でRTT_maxTと称する、最大のスループットレートmaxTが達成された期間に関連するRTT値も、以下でIn_Flights_BYTES_maxTと称する、最大のスループットレートmaxTが達成された期間に関連する送信済みフライトバイトの総数と一緒に記録される。   . A record of the maximum throughput rate value achieved with all RTTs is maintained and continuously updated, and is referred to below as maxT. The RTT value associated with the period in which the maximum throughput rate maxT, hereinafter referred to as RTT_maxT, is also taken together with the total number of transmitted flight bytes associated with the period in which the maximum throughput rate maxT, hereinafter referred to as In_Flights_BYTES_maxT, is achieved. To be recorded.

.任意のRTT期間内のスループットレート<=maxTすなわち、このRTT期間内のスループットレートが>maxTにならない時に必ず、且つ、IF [このRTT期間中のフライトバイトの総数/In_Flights_Bytes_maxT]>[この期間中のミリ秒単位のRTT値/ミリ秒単位のRTT_maxT] THEN ボトルネックリンクの物理帯域幅容量又は回線レートが、今や、導出され/入手される。ここでの原理は、このRTT期間内のフライトバイト数が、例えばmaxT期間に関連するフライトバイト数の2倍であり、この期間のRTT値が、例えばRTT_maxTと同一(又はその2倍未満)のままである場合に、このRTTのスループットレートがmaxTを超えない理由は、maxTが既にボトルネックリンクの物理帯域幅容量/回線レートと既に同一であるからであり、したがって、このRTT期間中のさらに多くのフライトバイト及びこのRTT値が不釣り合いに増加はしなかったにもかかわらず、ボトルネックの回線レートで制限されているこのRTT内のスループットレートが、maxTを超えて増加しないからである。このテスト式に、数学的分散許容値、例えばIF [このRTT期間中のフライトバイトの総数/In_Flights_Bytes_maxT]>[この期間中のミリ秒単位のRTT値/ミリ秒単位のRTT_maxT]*分散許容値(例えば、1.05/1.10...など)を含めることができる。   . Throughput rate in any RTT period <= maxT, ie whenever the throughput rate in this RTT period does not become> maxT, and IF [total number of flight bytes in this RTT period / In_Flights_Bytes_maxT]> [in this period RTT value in milliseconds / RTT_maxT in milliseconds] THEN The physical bandwidth capacity or line rate of the bottleneck link is now derived / obtained. The principle here is that the number of flight bytes in this RTT period is, for example, twice the number of flight bytes related to the maxT period, and the RTT value in this period is the same as (or less than twice) the RTT_maxT, for example. The reason why the throughput rate of this RTT does not exceed maxT if it remains is because maxT is already the same as the physical bandwidth capacity / line rate of the bottleneck link, and therefore further during this RTT period This is because the throughput rate within this RTT, which is limited by the bottleneck line rate, does not increase beyond maxT, even though many flight bytes and this RTT value did not increase disproportionately. The test formula includes a mathematical dispersion tolerance, eg IF [total number of flight bytes during this RTT period / In_Flights_Bytes_maxT]> [RTT value in milliseconds during this period / RTT_maxT in milliseconds] * dispersion tolerance ( For example, 1.05 / 1.10.

.真のボトルネックリンクの物理帯域幅容量/回線レートが導出され/入手されたならば(=maxT)、変更されたTCPは、もはや、不必要な輻輳パケットドロップ及び/又はバーストパケットドロップを引き起こそうと一定不変に努力する既存RFC標準TCPのRTTごとのスロースタート指数関数的CWND増分/輻輳回避線形CWND増分のようにアグレッシブに経路の帯域幅について継続的にプローブすることはできない。ここで、変更されたTCPは、その後、すべての後続の次のRTT期間内のCWNDサイズ(任意選択として及び/又は有効ウィンドウサイズ)のすべての後続の増分を、[maxT(今はボトルネック回線レートと等しい)が達成される時のmaxTに関連するCWNDサイズ(任意選択として及び/又は有効ウィンドウサイズ)*(ミリ秒単位の最後の以前のすなわち最新のRTT値/ミリ秒単位のRTT_maxT)の5%を超えないように制限することができる。非常に可能性は低いが、いずれかの後続RTTでのスループットレートが、maxTより大きくなる場合には、maxTが更新され、ボトルネック回線レート判定プロセスが、もう一度繰り返される。したがって、変更されたTCPは、ボトルネックリンクをその回線レートでビジーに保つのに必ず必要なものを超えて、不必要にアグレッシブにCWNDサイズ及び/又は有効ウィンドウサイズを増分して輻輳ドロップ及び/又はバーストパケットドロップを引き起こすことはしない。   . If the true bottleneck link physical bandwidth capacity / line rate is derived / obtained (= maxT), the modified TCP no longer causes unnecessary congestion packet drops and / or burst packet drops. It is not possible to continuously probe for path bandwidth aggressively like the slow start exponential CWND increments / congestion avoidance linear CWND increments per RTT of the existing RFC standard TCP that constantly strives to do so. Here, the modified TCP then converts all subsequent increments of CWND size (optionally and / or effective window size) within all subsequent next RTT periods to [maxT (now bottleneck circuit CWND size (optionally and / or effective window size) associated with maxT when (equal to rate) is achieved * (last previous or latest RTT value in milliseconds / RTT_maxT in milliseconds) It can be limited not to exceed 5%. Although very unlikely, if the throughput rate at any subsequent RTT is greater than maxT, maxT is updated and the bottleneck line rate determination process is repeated once more. Thus, the modified TCP goes beyond what is necessary to keep the bottleneck link busy at its line rate, and unnecessarily aggressively increments the CWND size and / or effective window size to reduce congestion drop and / or Or it does not cause a burst packet drop.

代替案では、変更されたTCPは、任意選択として、そのパケット生成/ネットワークへのパケット送信をレートペーシングすることができる、すなわち、変更されたTCPは、maxTボトルネック回線レートで:例えば、maxTがボトルネックの真の回線レートを達成した/これと等しくなった後には最小Inter−Bytes_forwarding_Interval=(1/(maxT /8))をセットし、そうでない場合には、任意選択として、最小Inter−Bytes_forwarding_Interval=(1/(maxT /8))*2をセットする(この時のCWND増大が、多くとも前のRTT期間のCWNDを指数関数的に2倍にするはずなので)ことによって、パケットを生成する/パケットを送信するのみである。   Alternatively, the modified TCP can optionally rate pacing its packet generation / packet transmission to the network, ie, the modified TCP is at the maxT bottleneck line rate: Set minimum Inter-Bytes_forwarding_Interval = (1 / (maxT / 8)) after the bottleneck's true line rate is achieved / equal, otherwise, optionally, the minimum Inter-Bytes_forwarding_Interval By setting = (1 / (maxT / 8)) * 2 (since the CWND increase at this time should at most double the CWND of the previous RTT period exponentially) / Send packet I just believe.

.さらに、任意選択として、変更されたTCPは、「余分な」フライトバイトのクリア及び/又は輻輳ドロップ(1つ又は複数)通知イベント(1つ又は複数)の際の説明された捨てられたパケットに関する適当なレート減少の対象となる、戻るACK(又はSACKed)レートによって許容される/「クロック」アウトされるパケット生成/パケット送信レートではなく、パケット生成/パケット送信レートが常に対応するmaxTレートであることを保証することができる(maxTが、ボトルネックの真の回線レートと等しいレートを既に達成していようと、単に最新の最大のmaxTであろうと):すなわち、変更されたTCPは、任意選択として、フライトバイトをクリアする/減らすために適当なレート減少をもたらすこと及び/又は捨てられたパケットの個数に対応してレートを減らすこと(例えば、輻輳ドロップ通知イベント(第3DUP ACK及び/又は後続の複数の同一ACKNoのDUPACK及び/又はRTOタイムアウト再送信とすることができる)の際に、同等ビット毎秒単位でのパケット生成/送信レートを、例えばmaxT*minRTT/この期間のRTT値又はmaxT−このRTT中に捨てられたバイト数*8まで減らす)を要求されない限り、最新のACK(又はSACKed)戻るレートによって制限されない制限されない最新のmaxTレートでパケットを生成する/送信するようにされる。   . Further, optionally, the modified TCP relates to the discarded packets described during the "extra" flight byte clearing and / or congestion drop (s) notification event (s). The packet generation / packet transmission rate is always the corresponding maxT rate, not the packet generation / packet transmission rate allowed / "clocked out" by the returning ACK (or SACKed) rate, subject to an appropriate rate reduction. (Whether maxT has already achieved a rate equal to the bottleneck's true line rate or just the latest maxT): That is, the modified TCP is optional Providing a suitable rate reduction to clear / reduce flight bytes and Or reduce the rate corresponding to the number of discarded packets (eg, congestion drop notification event (may be a third DUP ACK and / or a subsequent DUPACK and / or RTO timeout retransmission of multiple identical ACKNos)) The packet generation / transmission rate in equivalent bits per second, for example, maxT * minRTT / RTT value of this period or maxT-reducing the number of bytes discarded during this RTT * 8) Packets are generated / transmitted at an unrestricted latest maxT rate that is not limited by the ACK (or SACKed) return rate.

既存TCPソースコードを直接には変更しない実施態様:
TCPソースコードを直接に変更せずに、直前の段落で説明された発明を、独立のTCPパケットインターセプトソフトウェア/エージェントとして実施することができ、ここで、このソフトウェアは、1スライディングウィンドウ分の転送されるすべての送信されたデータセグメントのコピーを保持し、すべての高速再送信及び/又はRTOタイムアウト再送信、及び/又はローカルTCPから/に向かうインターセプトされたパケットの前方への転送のレートペーシング(maxT値に従う)すなわち輻輳ドロップ通知イベント時の転送レート調整プロセスを実行する。
Embodiments that do not directly modify existing TCP source code:
Without directly changing the TCP source code, the invention described in the previous paragraph can be implemented as an independent TCP packet intercept software / agent, where the software is transferred for one sliding window. Rate pacing (maxT for forward forwarding of intercepted packets going to / from local TCP and / or all fast retransmissions and / or RTO timeout retransmissions According to the value), that is, the transfer rate adjustment process at the time of congestion drop notification event.

ここに、純粋に、改善でき//変更できる必要なステップの概要を提供するための、そのような実施態様の概要がある。さらに、すべての洗練された詳細なアルゴリズム的/コーディングステップは、純粋に、例示的概要のためのみであり、且つ、改善する/変更することができる:
.インターセプトソフトウェアは、TCPから来る/MSTCP宛の各すべてのパケットをインターセプトする。
Here is an overview of such an implementation, purely to provide an overview of the necessary steps that can be improved / changed. Furthermore, all the refined and detailed algorithmic / coding steps are purely for illustrative purposes only and can be improved / modified:
. The intercept software intercepts every packet that comes from TCP / addressed to MSTCP.

.ソフトウェアは、すべてのデータペイロードを搬送するパケットのコピーを、上昇するSeqNoに従って明確に順序付けられたリストエントリ内で維持する。   . The software maintains a copy of the packet carrying all the data payloads in a clearly ordered list entry according to increasing SeqNo.

.第3DUP ACK通知の際に、ソフトウェアは、第3DUP ACK及び同一ACKNoの後続の複数DUP ACKと同一のSeqNoを有するリスト上のデータペイロードパケットコピーエントリからの高速再送信を実行する。ソフトウェアは、DupNumと同一のACKNo値のDUP ACK(1つ又は複数)の累積個数を記憶し、さらに、Selective Acknowledgementフィールド内の「ギャップ(1つ又は複数)」によって示されるすべての捨てられたパケットを高速再送信する。ソフトウェアは、各すべてのDUP ACK(1つ又は複数)のACKNoを、このパケット(1つ又は複数)のACKNo値をACKNo−DupNum*例えば1500まで減分することによって変更し、したがって、TCPは、絶対に、同一のACKNoを有するDUP ACKを全く受信しない → TCPは、高速再送信に起因してCWNDサイズを絶対に減らさない/半分にしない(これは、現在はソフトウェアによって世話される)。ソフトウェアは、どのCWNDサイズ値も減らさない(このパラメータは、ソフトウェアによってアクセス可能ですらない)。   . Upon the third DUP ACK notification, the software performs fast retransmission from the data payload packet copy entry on the list having the same SeqNo as the third DUP ACK and the subsequent multiple DUP ACKs of the same ACKNo. The software stores the cumulative number of DUP ACK (s) with the same ACKNo value as DupNum, and all discarded packets indicated by "Gap (s)" in the Selective Acknowledgment field. To resend fast. The software changes the ACKNo of each all DUP ACK (s) by decrementing the ACKNo value of this packet (s) to ACKNo-DupNum * eg 1500, so TCP Absolutely never receive a DUP ACK with the same ACKNo → TCP never reduces / halves CWND size due to fast retransmissions (this is currently taken care of by software). The software does not reduce any CWND size values (this parameter is not accessible by software).

.ソフトウェアは、前に説明した全般的な原理で概要を示した原理/プロセス/プロシージャ又はその組合せ/サブコンポーネントを組み込む。   . The software incorporates the principles / processes / procedures or combinations / subcomponents outlined in the general principles previously described.

さらに、
.ソフトウェアは、MSTCPの代わりにRTOタイムアウト再送信を完全に実行することすらできる(ヒストリカルな戻るACKのRTT値からのRTO計算を組み込むことによって):したがって、ソフトウェアは、転送のためにTCPからパケット(1つ又は複数)を受信した時に、即座にすべての単一のパケットの「ACKをスプーフィング」することができる → TCPは、今は、RTOタイムアウト再送信を行うことすらしない。ソフトウェアは、さらに、TCPパケット生成レート/TCPパケット送信レートを制御する技法として、TCPからパケット(1つ又は複数)を受信する時にACKのスプーフィングを「遅延させる」ことができる。
further,
. The software can even perform a complete RTO timeout retransmission on behalf of MSTCP (by incorporating the RTO calculation from the historical return ACK RTT value): Can immediately "spoof ACK" all single packets when receiving one or more)-> TCP now does not even do RTO timeout retransmissions. The software can also “delay” ACK spoofing when receiving packet (s) from TCP as a technique to control TCP packet generation rate / TCP packet transmission rate.

.TCPのCWNDサイズ/有効ウィンドウサイズを変更するのではなく(ソフトウェアからアクセス可能ですらない)これは必要な本質的な要求される特徴ではないが、ソフトウェアは、その代わりに、ソフトウェア自体の中で「ミラーCWND機構/ミラー有効ウィンドウ機構」をシミュレートするか、あるいは、その代わりに、例えばlargestRcvACKNo、largestSentSeqNoなどの他のパラメータ値を制御する/調整するためのレートペーシング、その減算差が必要なサイズになることを保証すること...などを介するフライトバイトの減少などの他の同等の形で同等の効果を与えるかのいずれかを行うことができる。   . Rather than changing the TCP CWND size / effective window size (not accessible from the software) this is not an essential required feature, but the software is instead in the software itself Simulate "mirror CWND mechanism / mirror effective window mechanism", or alternatively rate pacing to control / adjust other parameter values such as largeRcvACKNo, largeSentSeqNo, size that requires subtraction difference To ensure that . . Any of the other equivalent forms, such as the reduction of flight bite through, can do any of the same effects.

.ソフトウェアは、既存の標準RFCで定義された、各すべてのインターセプトされたパケットに対するチェックサム検証、SeqNoラップアラウンド検出及び比較、タイムスタンプラップアラウンド検出及び比較...などのさまざまな標準TCP技法をも実施することができる。   . The software defines checksum verification, SeqNo wraparound detection and comparison, timestamp wraparound detection and comparison for each and every intercepted packet as defined in the existing standard RFC. . . Various standard TCP techniques such as can also be implemented.

ここに、純粋に例示のみのための、さらに訂正し/改善し/変更し且つ/又は完全に異なって設計することができる、ソフトウェア設計に関するいくつかの単純な概要がある。   Here are some simple overviews about software design that can be further corrected / improved / modified and / or designed completely differently, purely for illustration purposes only.

1.純粋なインターセプト転送:
2.+チェックサム+ラップアラウンド:
3.+同一のDUP ACKNoについて1回だけの、同一のDUPACKされたパケットコピーだけの高速再送信:
4.+同一のDUP ACKNoについて1回だけの、すべてのパケットコピーの高速再送信:
5.+同一ACKNoのDUP ACKについて1回だけの、最大のSACKされた「ギャップ(1つ又は複数)」までのすべてのパケットコピーのみの高速再送信:
6.+各DUPACKでの、最大のSACKされた「ギャップ(1つ又は複数)」までで>LARGESTRTXSEQNoのすべてのパケットコピーだけの高速再送信:(ソフトウェアが各後続の同一ACKNoのDUP ACK及び/又は新しい増分されたACKNoのDUP ACKについて不必要に複数回繰り返して高速送信することを望まず、後続の同一ACKNoのDUP ACKの受信時に既に高速再送信されたパケットをもう一度不必要に再送信しないようにするために、最大の高速再送信されたパケットのSeqNoすなわちLargestRtxSeqNoを記録する/更新することができる。
1. Pure intercept transfer:
2. + Checksum + Wraparound:
3. + Fast retransmission of only the same DUPACKed packet copy once for the same DUP ACKNo:
4). + Fast retransmission of all packet copies once for the same DUP ACKNo:
5. + Fast retransmission of only all packet copies up to the largest SACKed “gap (s)” once for DUP ACKs of the same ACKNo:
6). + Fast retransmissions only for all packet copies of> LARGESTRTXSEQNo up to the maximum SACKed “gap (s)” for each DUPACK: (the software is DUP ACK and / or new for each subsequent same ACKNo Do not want to repeat DUP ACK with incremented ACKNo multiple times unnecessarily, and do not unnecessarily retransmit another packet that has already been retransmitted at the same time when receiving DUP ACK with the same ACKNo. In order to do so, the SeqNo of the largest fast retransmitted packet, ie LargeRtxSeqNo, can be recorded / updated.

後に、
7.+パケット転送間インターバル(事前に既知のボトルネック回線レートのユーザ入力によって決定される):
8.+(7)と同様に、ユーザ入力ではなく最新の推定されたボトルネック回線レートの使用
9.+パケット転送間インターバル値の制御/調整を介して動作するTCPフレンドリアルゴリズム
初期基本レートペースモジュールの単純な概要:
追加されなければならない第1ステージレートペースモジュール仕様(この仕様は、ネットワークへのパケット送信の平滑化だけを実行し、他には何も実行しない):
1.ユーザに、ボトルネックリンクのkbs単位の帯域幅を入力させる、例えばSAN.exe B(例えば512kbs):これは、通常はセンダ/ユーザのファーストマイルアップロード帯域幅であるが、時にはレシーバのラストマイルとすることができる(ユーザがレシーバのラストマイルの帯域幅を知らない場合には、単にユーザのファーストマイルを入力する:DSL加入者のアップロード帯域幅は、通常はダウンロード帯域幅よりはるかに少ない)[より後のソフトウェアは、ユーザ入力を全く必要とせずに、最新の推定されたBの値を提供することができる]。
later,
7). + Inter-packet transfer interval (determined by user input of known bottleneck line rate in advance):
8). As with + (7), use the latest estimated bottleneck line rate rather than user input. + TCP friendly algorithm operating via control / adjustment of interval value between packet transfers Simple overview of the initial basic rate pace module:
First stage rate pace module specification that must be added (this specification only performs smoothing of packet transmissions to the network and does nothing else):
1. Let the user enter the bandwidth in kbs of the bottleneck link, eg SAN. exe B (eg 512 kbps): This is usually the sender / user's first mile upload bandwidth, but can sometimes be the receiver's last mile (if the user does not know the receiver's last mile bandwidth) Simply enter the user's first mile: DSL subscriber upload bandwidth is usually much less than download bandwidth) [later software is estimated up-to-date without requiring any user input Can provide a value of B].

2.最小バイトインターバル間転送を保証する単純なレートペースモジュールを組み込む、例えば、サイズS1(例えば1000バイト全長、カプセル化+ヘッダ+ペイロード)のパケットを転送する場合に、S2(例えば、今回は750バイト)の次パケットサイズを転送する前に1000バイト/(B/8)が経過すること...などを確実にし...総パケットサイズSは、TCPヘッダから確かめることができる。   2. Incorporates a simple rate pace module that guarantees transfer between minimum byte intervals, eg S2 (eg 750 bytes this time) when transferring a packet of size S1 (eg 1000 bytes full length, encapsulation + header + payload) 1000 bytes / (B / 8) elapses before the next packet size is transferred. . . Make sure. . . The total packet size S can be confirmed from the TCP header.

3.新しいMSTCPパケット/高速再送信/RTO再送信...などのどれであれ、転送されるべきすべてのパケットは、まず、これから転送されるパケットバッファにアペンドされる:このバッファは、明確に順序付けされることを最もよく必要とするが、「ギャップレス」でないことを必要とし、MSTCP又はソフトウェア高速再送信のいずれかからの到着するパケットは、SeqNo昇順でアペンド/挿入される(すなわち、高速再送信/MSTCP RTO再送信パケットが、より大きいSeqNoを有する他のデータパケットの前にまず転送されるようにするために)。同一SeqNoの純ACK/データパケットは、互いに関する相対的な到着の順序で挿入される必要があるはずである。   3. New MSTCP packet / Fast retransmission / RTO retransmission. . . Any packet to be forwarded is first appended to the packet buffer to be forwarded: this buffer most often needs to be clearly ordered, but not "gapless" And arriving packets from either MSTCP or software fast retransmission are appended / inserted in SeqNo ascending order (ie, fast resend / MSTCP RTO resend packets have other SeqNo To be transmitted first before the data packet). The same SeqNo pure ACK / data packets would need to be inserted in the order of relative arrival with respect to each other.

(注:ここでのMSTCPは、すべてのRTO再送信を行い続ける)。   (Note: MSTCP here continues to perform all RTO retransmissions).

[より後の仕様機能強化:
.ラウンドトリップ単一のマークされたパケットのSeqNo...及びラウンドトリップ完了に続く後続の次の転送されるパケットのSeqNo...などに基づく、各RTTの総送信済みバイトの簡単なカウントのために、このこれから転送されるリスト内のパケットエントリにTotal Packet Length in Bytes(バイト単位の総パケット長)フィールドを追加することが有用である。このリストは、ペーシングを実施する必要があり、ここでこの第1ステージで明確に順序付けられなければならない「ギャップレス」でない必要があるPacket Copyリストとは異なる。
[Enhancements to later specification functions:
. Round Trip A single marked packet SeqNo. . . And the SeqNo. Of the next forwarded packet following the completion of the round trip. . . It is useful to add a Total Packet Length in Bytes field to the packet entry in the list to be forwarded for a simple count of the total transmitted bytes for each RTT based on It is. This list is different from the Packet Copy list that needs to be paced and must not be “gapless” here, which must be clearly ordered in this first stage.

.これから転送されるバッファ>例えば10Kバイトである時には、必ず、MSTCPに「0」ウィンドウ更新を送信し、すべての着信パケットのウィンドウサイズを「0」再計算チェックサムに変更する。   . When the buffer to be transferred is greater than 10 Kbytes, for example, a “0” window update is always transmitted to MSTCP, and the window size of all incoming packets is changed to a “0” recalculation checksum.

.パケットのSeqNo(SYNC/SYNC ACK/ACKの後の最初のパケットから開始して)を「マーク」し/時刻を送信し/this_RTT_total_bytes_forwarded=この「マーク」パケットの長さをセットし、即座にnext_RTT_total_bytes_forwardedのカウントを開始する(この「マーク」パケットを含まない)。戻るパケットのACKNo>「マーク」SeqNoである場合には、このRTT値(現在のシステム時刻−送信時刻)を記録し、this_RTT_total_bytes_forwardedを記録する。その後、まさに最新の転送されたパケットのSeqNoとして次の「マーク」SeqNoを選択し(前の「マーク」SeqNoが戻る前に転送される純ACKではなくデータパケットがある場合、そうでない場合には、次のデータパケットが転送されるのを待つ)......など.....など。   . “Mark” the packet's SeqNo (starting with the first packet after SYNC / SYNC ACK / ACK) / send time / this_RTT_total_bytes_forwarded = set the length of this “mark” packet and immediately next_RTT_total_bytes_forwarded Start counting (does not include this “mark” packet). If ACKNo> “mark” SeqNo of the returning packet, this RTT value (current system time-transmission time) is recorded, and this_RTT_total_bytes_forwarded is recorded. Then select the next “mark” SeqNo as the SeqNo of the most recently forwarded packet (if there is a data packet instead of a pure ACK forwarded before the previous “mark” SeqNo returns, otherwise Wait for the next data packet to be transferred). . . . . . Such. . . . . Such.

(RTT値及びthis_RTT_total_bytes_forwardedの最新の更新されたインスタンスのレコードオンリーを保つことだけが必要)
.ソフトウェアは、DUPACKパケットが純ACKであるすなわちデータを搬送していない場合又はSACKフラグをセットされたデータを搬送するパケットである場合に限って、DupNumカウントを増分しなければならない(リモートクライアントもデータを送信する場合に、我々は、ドロップがない場合であっても多数の同一SeqNoのパケットを得始める可能性がある)。また、もう1つの変数DupNumData(同一SeqNoを有するデータペイロードパケットの個数)を増分し、同一SeqNoを有するすべての着信パケットを−(DupNum+DupNumData)に変更する:DupNumDataは、DupNumに似た形で更新され、DupNum処理は、今や、純DUPACKパケットとデータペイロードを伴うパケットとの間で区別する必要がある。
(It is only necessary to keep record-only for the latest updated instance of RTT value and this_RTT_total_bytes_forwarded)
. The software must increment the DupNum count only if the DUPACK packet is a pure ACK, ie it is not carrying data or is a packet carrying data with the SACK flag set (the remote client also has data We may start to get a number of identical SeqNo packets even if there are no drops). It also increments another variable DupNumData (the number of data payload packets with the same SeqNo) and changes all incoming packets with the same SeqNo to-(DupNum + DupNumData): DupNumData is updated in a manner similar to DupNum , DupNum processing now needs to distinguish between pure DUPACK packets and packets with data payloads.

本明細書で説明するすべての方法及び原理のさまざまなコンポーネント特徴は、さらに、示される方法のいずれかに組み込まれて一緒に働くようにすることができ、さまざまなトポロジネットワークタイプ及び/又はさまざまなトラフィック/グラフ分析の方法及び原理は、さらに、リンクの帯域幅の経済を使用可能にすることができる。本説明のどこに現れようとも、使用される数字が、可能な値の特定の実例だけを示すことを意図され、例えば、RTT*1.5では、数字1.5を、目的及び特定のネットワークに適当な別の値セッティング(しかし、必ず1.0より大きい)、例えば0.1秒/0.25秒...などの知覚期間によって置換することができることにも留意されたい。さらに、示される特定の例及び数字のすべては、基礎になるアイデア、概念、及びその相互作用も伝えることを意図されているが、使用される実際の数字及び例に限定されない。   The various component features of all the methods and principles described herein can be further incorporated into any of the illustrated methods to work together, with various topology network types and / or various The methods and principles of traffic / graph analysis may further enable link bandwidth economy. Wherever it appears in this description, the numbers used are intended to show only specific examples of possible values, for example, RTT * 1.5 will change the number 1.5 to the intended and specific network. Another suitable value setting (but always greater than 1.0), eg 0.1 sec / 0.25 sec. . . Note also that it can be replaced by a perception period such as. Moreover, all of the specific examples and numbers shown are intended to convey the underlying ideas, concepts, and their interactions, but are not limited to the actual numbers and examples used.

上記で説明した実施形態は、単に、本発明の原理を示す。当業者は、その本発明の原理を実施し、それに含まれるさまざまな修正及び変更を作ることができる。   The embodiments described above merely illustrate the principles of the invention. Those skilled in the art can implement the principles of the invention and make various modifications and changes included therein.

2005年10月11日ファイリング
増分展開可能な外部インターネットNextGen TCPの単純な実施態様のいくつかの例
背景材料
.第3DUP ACK高速再送信をトリガするかRTOタイムアウトをトリガするパケットの最新のRTTは、最後の測定されたラウンドトリップ時間RTTに関する既存のLinux TCBで維持される変数からたやすく入手可能である。
Filing October 11, 2005
Some examples of a simple implementation of an incrementally deployable external Internet NextGen TCP Background material The most recent RTT of the packet that triggers the third DUP ACK fast retransmission or triggers the RTO timeout is readily available from variables maintained in the existing Linux TCB for the last measured round trip time RTT.

.最小の記録されたmin(RTT)は、既存のWestwood/FastTCP/Vegas TCBで維持される変数からたやすく入手可能であるのみであるが、min(RTT)=[min(RTT),最後の測定されたラウンドトリップ時間RTTの]の最小値を継続的に更新する2〜3行のコードを記述することは、十分に簡単であるに違いない。また、レシーバベースドTCP変更/レシーバベースドTCPレート制御があれば、OTT及びmin(OTT)を、センダベースドのRTT及びmin(RTT)の代わりに利用することができ、これは、センダのTimestampオプションから利益を得ることができ、あるいは、レシーバベースドTCPは、OTT及びmin(OTT)を確かめる必要に依存するのではなく、パケット到着間技法を利用することができる。   . The minimum recorded min (RTT) is only readily available from variables maintained in the existing Westwood / FastTCP / Vegas TCB, but min (RTT) = [min (RTT), last measurement It must be simple enough to write a few lines of code that continually update the minimum value of the [roundtrip time RTT]. Also, with receiver-based TCP modification / receiver-based TCP rate control, OTT and min (OTT) can be used instead of sender-based RTT and min (RTT), which is available from the sender's Timestamp option. Benefits can be gained, or receiver-based TCP can make use of inter-packet arrival techniques rather than relying on the need to ascertain OTT and min (OTT).

参考文献:
http://www.cs.umd.edu/〜shankar/417−Notes/5−note−transportCongControl.htm:Linux TCBによって維持されるRTT変数
http://www.scit.wlv.ac.uk/rfc/rfc29xx/RFC2988.html:RTO計算
Google Search用語「tcp rtt variables」
http://www.psc.edu/networking/perf_tune.html:Linux TCP RTTパラメータのチューニング
Google Search:「tcp minimum recorded rtt」又は「linux tcp minimum recorded rtt variable」。注:TCP Westwoodは最小RTTを測定する。
References:
http: // www. cs. umd. edu / ~ shankar / 417-Notes / 5-note-transportContControl. htm : RTT variable maintained by Linux TCB
http: // www. scit. wlv. ac. uk / rfc / rfc29xx / RFC2988. html : RTO calculation Google Search term “tcp rtt variables”
http: // www. psc. edu / networking / perf_tune. html : Tuning of Linux TCP RTT parameter Google Search: “tcp minimum recorded rtt” or “linux tcp minimum recorded rtt variable”. Note: TCP Westwood measures the minimum RTT.

Google Search用語「CWND size tracking」、「CWND size estimation」、「Receiver based CWND size tracking estimation」、「RTT tracking」、「RTT estimation」、「Receiver based RTT tracking estimation」、「OTT tracking」、「OTT estimation」、「Receiver based OTT tracking estimation」、「total in−flights−packets tracking」、「total in−flights−packets estimation」、「Receiver based total in−flight−packets tracking estimation」...など。   Google Search terminology “CWND size tracking”, “CWND size estimation”, “Receiver based CWn size tracking estimation”, “RTT tracking”, “RTT estimation”, “RTT estimation”, “RTT estimation”, “RTT estimation” ”,“ Receiver based OTT tracking estimation ”,“ total in-flights-packets tracking ”,“ total in-flights-packets estimation ”,“ Receiver based ” otal in-flight-packets tracking estimation ". . . Such.

初期の単純な実施態様のアイデア
変更されたlinuxを使用するテスティングを検証するためには:
最も単純で十分なもので、1行を変更し、ループ遅延コード(Linux TCP実行を「ポーズ」させるため)を挿入することだけが必要である。
To verify testing using an early-implemented idea- modified Linux:
The simplest and sufficient, it is only necessary to change one line and insert a loop delay code (to “pause” Linux TCP execution).

1.Linux高速再送信モジュールコードでは、3つのDUP ACKの際に、CWNDを半分にしない、すなわち、CWNDは、現在は変更されない(CWND=CWND/2ではなく)。   1. In the Linux fast retransmit module code, CWND is not halved on 3 DUP ACKs, ie CWND is not currently changed (not CWND = CWND / 2).

2.それと同時に、同一のコードセクション位置で、単純に2〜3行のコードを挿入して、0.3秒だけLinux TCPプログラムの実行を「ポーズ」させる(「ポーズ」をシミュレートする)。[後でのみ:まさに最初のDUP ACKされたパケットを制約されずに再送信し、次に、この同一の位置で300msカウントダウングローバル変数「Pause」をセットするのみにし、その後、Linux TCPがその「最終パケット送信」コードセクションで、何であれすべての種類の送信を可能にするためにこの「Pause」変数=0であることをチェックする(Linuxがこの「Pause」によって停止されたパケットを保持するために「最終送信」キューを実施すると仮定して)ことを可能にして、
パケットを捨て、パケットを送信する前に待ち時間遅延を導入する2〜3行のコードを記述し、単に、ユーザ入力の一定の周期的ドロップインターバルと、連続するドロップの回数(例えば、0.125及び1すなわち、8つの生成されたパケットおきに1回だけ1つのパケットを捨てる[12.5%パケットロスレートと同等]又は0.125及び3すなわち、8つの生成されたパケットおきに1回だけ3つの連続するパケットを捨てる[37.5%パケットロスレートと同等])と、RTT待ち時間(例えば、200ms)とを可能にする
ことがはるかに好ましい。
2. At the same time, simply insert 2-3 lines of code at the same code section location to “pause” (simulate “pause”) the execution of the Linux TCP program for 0.3 seconds. [Later only: Resend the very first DUP ACKed packet unconstrained, then just set the 300ms countdown global variable "Pause" at this same position, after which Linux TCP In the “Last Packet Transmission” code section, check that this “Pause” variable = 0 to allow any kind of transmission (since Linux holds packets stopped by this “Pause”) (Assuming to implement a “last send” queue)
Write a few lines of code that discards the packet and introduces a latency delay before sending the packet, simply a constant periodic drop interval of user input and the number of consecutive drops (eg, 0.125). And one, i.e. discard one packet once every eight generated packets [equivalent to 12.5% packet loss rate] or 0.125 and three, i.e. once every eight generated packets It is much preferred to allow three consecutive packets (equivalent to 37.5% packet loss rate)) and to allow RTT latency (eg, 200 ms).

コードは、単にドロップインターバル及び連続ドロップ回数に基づいて前方に転送しないことと、スケジューリングされたすべての生き残っているパケットがその受信されたローカルsystimeより例えば200ms後に転送されることとを必要とする → これらの前方に転送されるようにスケジューリングされた生き残っているパケットは、ネットワークへの前方への転送のためにキュー内に保持される必要がある(それ自体の個々のスケジューリングされた前方転送ローカルsystimeと共に)。   The code simply requires not forwarding forward based on the drop interval and the number of consecutive drops, and that all scheduled surviving packets are forwarded eg 200 ms after the received local system → These surviving packets scheduled to be forwarded need to be held in a queue for forward forwarding to the network (its own individual scheduled forward forwarding local system With).

10mbs LAN及び500kbsに調整された無線ルータリンク上で(イーサネットを「半二重」モードにセットすることを忘れないように)、さまざまなシミュレートされたロスレート及び待ち時間と一緒にすばやく検証することができる。その最も単純で十分なものでは、1行を変更し、ループ遅延コード(Linux TCP実行を「ポーズ」させるため)を挿入することだけが必要である。   Quickly verify along with various simulated loss rates and latency on a 10 mbs LAN and a wireless router link tuned to 500 kbs (don't forget to set Ethernet to “half-duplex” mode) Can do. In its simplest and sufficient, it is only necessary to change one line and insert a loop delay code (to “pause” Linux TCP execution).

1.Linux高速再送信モジュールコードでは、3つのDUP ACKの際に、CWNDを半分にしない、すなわち、CWNDは、現在は変更されない(CWND=CWND/2ではなく)。   1. In the Linux fast retransmit module code, CWND is not halved on 3 DUP ACKs, ie CWND is not currently changed (not CWND = CWND / 2).

2.それと同時に、同一のコードセクション位置で、単純に2〜3行のコードを挿入して、0.3秒だけLinux TCPプログラムの実行を「ポーズ」させる(「ポーズ」をシミュレートする)。   2. At the same time, at the same code section position, simply insert a few lines of code to “pause” the execution of the Linux TCP program for 0.3 seconds (simulate “pause”).

高ロスレート長待ち時間外部インターネット/LFNを介する大きいファイル転送SAN FTPは、現在、100%に近い使用可能帯域幅利用度を示さなければならない!。例えばShunra社のソフトウェアを間にはさんで、例えば10%ドロップレート及び/又は300ms待ち時間をシミュレートするすなわち長距離高ロスレートをシミュレートすることができ、あるいは、単純に、パケットを捨て、パケットを送信する前に待ち時間遅延を導入するコードを記述することができる。NS2などのシミュレーションを使用してこれを簡単に検証することもできる。   High Loss Rate Long Latency Large File Transfer SAN FTP over external Internet / LFN must now show usable bandwidth utilization close to 100%! . For example, you can simulate the 10% drop rate and / or 300ms latency, i.e. long distance high loss rate, across the Shura software, or simply discard the packet, Code can be written that introduces a latency delay before sending. This can also be easily verified using simulations such as NS2.

今は、センダTCPのCWNDの現在のサイズは、このサイズが達成されたならば、センダTCPが戻るACKレートに正確に対応して新しいパケットを注入するだけなので、いかなる形でも輻輳ドロップを引き起こさないことが非常に明瞭である:これがCWNDサイズの加速瞬間増加であることに留意されたい(戻るACKレートより多数のパケットをネットワークに瞬間的に注入すること、例えば、戻るACKレートのそれを2倍にする指数関数的増分、これはパケットドロップの主原因である:CWNDが現在の既存のサイズを既に達成したならば、どれほど大きくても、それは、戻るACKレートより多数の新しいパケットがネットワークに注入されることを引き起こさず、これは、CWNDの瞬間的サイズ増分の時に限って発生し得る)。   Now, the current size of Sender TCP's CWND does not cause congestion drops in any way, as this size is achieved, it only injects new packets exactly corresponding to the ACK rate that Sender TCP returns. It is very clear: note that this is an accelerated instantaneous increase in CWND size (injecting more packets into the network momentarily than the return ACK rate, eg, twice that of the return ACK rate) Exponential increment, which is the main cause of packet drops: no matter how large if CWND has already achieved the current existing size, it will inject more new packets into the network than the return ACK rate This happens only at the momentary size increment of CWND Get).

2〜3行のLinuxソースコードを変更することは、実に単純であり、Windowsでは、まず、MSTCPからすべての高速再送信機能を引き継ぐインターセプトソフトウェアモジュールを準備する必要だけがある。Windowsで実施するためには、MSTCPが失われたパケットの高速再送信要求について全く通知されない/知らないようにするために、各着信/発信パケットをインターセプトし、着信DUP ACKのAcknowledgement Numberフィールドを変更する必要がある(MSTCPではなく、我々のインターセプトソフトウェアが、今や、すべての高速再送信機能を行う):このインターセプトソフトウェアモジュールは、さらに、MSTCPからすべてのRTOタイムアウト再送信機能を引き継ぐことができる(例えば、まさにMSTCP自体のRTOタイムアウトトラッキングアルゴリズムをミラーリングするか、新しい変更された所望のアルゴリズムを考案することができる)。インターセプトソフトウェアモジュールが、今や、既存MSTCPのDUP ACK高速再送信機能及びRTOタイムアウト再送信機能のすべてを引き継いだ状態で、インターセプトソフトウェアは、今や、インターセプトされたパケットに関するMSTCPに戻るSPOOF ACKの即座のスプーフィング/一時的停止及び/又はMSTCPパケット生成を停止するためにSPOOF ACK内のレシーバウィンドウサイズフィールドに「0」をセットすることを介して、MSTCPの新規パケット生成/送信レートに対する完全なトータルコントロールを有することができる。   Changing the Linux source code in a few lines is quite simple, and Windows only needs to prepare an intercept software module that takes over all the fast retransmission functions from MSTCP first. To implement on Windows, MSTCP intercepts each incoming / outgoing packet and changes the Acknowledgment Number field in the incoming DUP ACK so that MSTCP is not notified / knows about lost packet fast retransmission requests (Not MSTCP, our intercept software now does all the fast retransmission functions): This intercept software module can also take over all RTO timeout retransmission functions from MSTCP ( For example, you can mirror the RTCP timeout tracking algorithm of MSTCP itself or devise a new modified desired algorithm). With the intercept software module now taking over all of the existing MSTCP DUP ACK fast resend and RTO timeout resend functions, the intercept software now instantly spoofs the SPOF ACK back to MSTCP for intercepted packets. Has full total control over MSTCP new packet generation / transmission rate via setting “0” in receiver window size field in SPOF ACK to stop / temporarily stop and / or stop MSTCP packet generation be able to.

例えばLinux/FreeBSD/Windowsソースコードでは、次の非常に基本的な形で働くことを即座に示されるこのNextGenFTPを有するために2〜3行を修正する/挿入することができなければならない。   For example, in Linux / FreeBSD / Windows source code, it should be possible to modify / insert a few lines to have this NextGenFTP immediately shown to work in the following very basic form.

1.Linuxの3DUP ACK高速再送信モジュールでは、CWNDをCWND/2に変更するコードラインを除去することだけが必要である(すなわち、CWNDは、今や、変更されなくなる)。すべての他のコードラインは、全く修正される必要がない:例えば、SSthreshには、今や、CWNDがセットされる(すなわち、TCPは、今や、指数関数的2倍化ではなく、すべてのRTTについて1セグメントだけ加法的に増加するのみである)。これ自体は、今や、高ドロップレートを有するLFN/外部インターネットで100%に近いリンク利用度を示さなければならない! (すなわち、ここでの非常に未完成の形で働くことを示される)。   1. In the Linux 3DUP ACK fast retransmission module, it is only necessary to remove the code line that changes CWND to CWND / 2 (ie, CWND is no longer changed). All other code lines do not need to be modified at all: for example, SSthresh is now set to CWND (ie, TCP is now not exponentially doubling, for all RTTs It only increases additively by one segment). This in itself must now show close to 100% link utilization on LFN / external internet with high drop rate! (Ie shown to work in a very unfinished form here).

テストを助けるために、%パケットドロップを導入し且つ/又は経路待ち時間をシミュレートすることのできるShunraなどのソフトウェアを使用し、このソフトウェアを、NextGenFTPとネットワークの送信する側との間に置くか、類似する単純なユーティリティをコーディングしてもよい。   To help with testing, use software such as Shura that can introduce% packet drop and / or simulate path latency, and place this software between NextGenFTP and the sender of the network A similar simple utility may be coded.

2.[任意選択であるが確かに後に必要になる]NextGenFTPは、実際に、3つのDUP ACKなどのパケットドロップイベントの際に適当なインターバルの間だけ「ポーズ」して、バッファリングされているそれ自体の「余分な」送信されたフライトパケットのすべてをクリアしなければならない(が、すべての既存の通常のTCP/FTPは、そのCWNDを劇的に半分にし、深刻な不必要な明確に文書化されたスループット問題を引き起こす)。例えばLinuxでは、実際の現実の非輻輳RTT又は非輻輳OTTが前もって既知でない場合に、フローの最小の観察されたRTTのレコードmin(RTT)又はmin(OTT)を保持し、3DUP ACKの際に、例えば0.3秒(同等秒数単位での最も一般的なルータバッファサイズである)又はあるアルゴリズム的に導出された期間(...後に)の間だけネットワークへのすべてのパケット注入を「停止」させる、あるコードを挿入することだけが必要である[ポーズの代わりに、CWNDに適当な対応するアルゴリズム的に決定された値(1つ又は複数)をセットすることもできることに留意されたい!。考案される所望のアルゴリズムに応じて、{最新のRTT値(又は適当な場合にOTT)−記録されたmin(RTT)値(又は適当な場合にmin(OTT))}/min(RTT)倍だけCWNDサイズを減らすこと、あるいは、[{最新のRTT値(又は適当な場合にOTT)−記録されたmin(RTT)値(又は適当な場合にmin(OTT))}/最新のRTT値]倍だけCWNDサイズを減らすことすなわちCWNDには今やCWND*[1−[{最新のRTT値(又は適当な場合にOTT)−記録されたmin(RTT)値(又は適当な場合にmin(OTT))}/最新のRTT値]]がセットされる、あるいは、CWNDサイズにCWND*min(RTT)(又は適当な場合にmin(OTT))/最新のRTT値(又は適当な場合にOTT)をセットすること、....などである]。min(RTT)が、記録された経路の非輻輳RTTの最新の推定値であることに留意されたい。   2. [Optional but certainly necessary later] NextGenFTP is actually buffered itself, "paused" for a suitable interval during a packet drop event, such as three DUP ACKs. Must clear all of the "extra" transmitted flight packets (but all existing regular TCP / FTP dramatically halves its CWND, and seriously unnecessarily clearly documented Caused throughput problems). For example, in Linux, if the actual actual non-congested RTT or non-congested OTT is not known in advance, the minimum observed RTT record min (RTT) or min (OTT) of the flow is maintained and upon 3DUP ACK For example, all packet injections into the network for 0.3 seconds (which is the most common router buffer size in equivalent seconds) or for some algorithmically derived period (after ...) It is only necessary to insert some code that “stops” [note that instead of pause, the corresponding algorithmically determined value (s) appropriate to CWND can also be set. ! . Depending on the desired algorithm devised, {latest RTT value (or OTT if appropriate)-recorded min (RTT) value (or min (OTT) if appropriate)} / min (RTT) times Decrease CWND size only, or [{latest RTT value (or OTT if appropriate)-recorded min (RTT) value (or min (OTT) if appropriate)}} / latest RTT value] Reduce the CWND size by a factor of two, i.e. CWND * [1-[{latest RTT value (or OTT where appropriate)-recorded min (RTT) value (or min (OTT) where appropriate) )} / Latest RTT value]] or CWND * min (RTT) (or min (OTT) where appropriate) / latest RTT value ( That, to set the OTT) where appropriate. . . . Etc.]. Note that min (RTT) is the latest estimate of recorded path non-congested RTT.

3.[任意選択であるが確かに後に必要になる]フローの経路に沿ったボトルネックリンクの使用可能帯域幅は、簡単に判定することができ(非常に明確に文書化されているが、我々自身の開発された技法と比較して不完全である)、したがって、使用可能帯域幅のこの上限がわかった/判定されたならば、NextGenTCPは、その後、もはや、CWND増分を引き起こしてはならない(指数関数的2倍化であれ線形増分であれ) → NextGenTCPは、この達成された上限レートで送信したならば、もはや不必要にCWND増分を引き起こさず、不必要にパケットドロップを引きこさない!。   3. [Optional but certainly necessary later] The usable bandwidth of the bottleneck link along the path of the flow can be easily determined (very clearly documented, but our own Therefore, if this upper limit of available bandwidth is known / determined, NextGenTCP should no longer cause CWND increments (exponential) → NextGenTCP no longer unnecessarily causes CWND increments and unnecessarily pulls packet drops if transmitted at this achieved ceiling rate! .

初期の単純な実施態様のアイデア(洗練1):
変更されたlinuxを使用するテスティングを検証するためには:
最も単純で十分なもので、1行を変更し、ループ遅延コード(Linux TCP実行を「ポーズ」させるため)を挿入することだけが必要である。
Early simple implementation idea (sophistication 1):
To verify testing using the modified Linux:
The simplest and sufficient, it is only necessary to change one line and insert a loop delay code (to “pause” Linux TCP execution).

1.Linux高速再送信モジュールコードでは、3つのDUP ACKの際に、CWNDを半分にしない、すなわち、CWNDは、現在は変更されない(CWND=CWND/2ではなく)。   1. In the Linux fast retransmit module code, CWND is not halved on 3 DUP ACKs, ie CWND is not currently changed (not CWND = CWND / 2).

2.それと同時に、同一のコードセクション位置で、単純に2〜3行のコードを挿入して、0.3秒だけLinux TCPプログラムの実行を「ポーズ」させる(「ポーズ」をシミュレートする)。[後に:まさに最初のパケットを再送信し、次に、この同一の位置で300msカウントダウングローバル変数「Pause」をセットするのみにし、その後、Linux TCPがその「最終パケット送信」コードセクションで、何であれすべての種類の送信を可能にするためにこの「Pause」変数=0であることをチェックする(Linuxがこの「Pause」によって停止されたパケットを保持するために「最終送信」キューを実施すると仮定して)ことを可能にすることがはるかに好ましい。   2. At the same time, at the same code section position, simply insert a few lines of code to “pause” the execution of the Linux TCP program for 0.3 seconds (simulate “pause”). [After: retransmit the very first packet, then just set the 300ms countdown global variable "Pause" at this same position, then Linux TCP will do whatever it does in its "Last Packet Transmission" code section Check that this “Pause” variable = 0 to allow all kinds of transmissions (assuming that Linux implements a “Last Send” queue to hold packets stopped by this “Pause” It is much preferable to be able to).

[後でのみ:まさに最初のパケットを再送信し、次に、この同一の位置で300msカウントダウングローバル変数「Pause」をセットするのみにし、その後、Linux TCPがその「最終パケット送信」コードセクションで、何であれすべての種類の送信を可能にするためにこの「Pause」変数=0であることをチェックする(Linuxがこの「Pause」によって停止されたパケットを保持するために「最終送信」キューを実施すると仮定して)ことを可能することがはるかに好ましい。   [Only later: Resend the very first packet, then just set the 300ms countdown global variable "Pause" at this same position, then Linux TCP will have its "Last packet transmission" code section Check that this “Pause” variable = 0 to allow any kind of transmission (Linux implements a “Last Send” queue to hold packets stopped by this “Pause” It is much preferable to be able to (assuming that).

はるかに後でのみ:これは、便利に、次によって達成する/実装することができる(提案としてのみ)。 Much later only : This can be conveniently achieved / implemented by (only as a suggestion):

1.Linux高速再送信モジュールコードでは、3つのDUP ACKの際に、CWNDを半分にしない、すなわち、CWNDは、現在は変更されない(CWND=CWND/2ではなく)。   1. In the Linux fast retransmit module code, CWND is not halved on 3 DUP ACKs, ie CWND is not currently changed (not CWND = CWND / 2).

2.それと同時に、同一のコードセクション位置で、単純にこの同一の位置(正確に、CWNDが今やCWND/2ではなく変更されなくなるように変更される場所)で300msカウントダウングローバル変数「Pause」をセットし、その後、Linux TCPがその「最終パケット送信」コードセクションで、パケットのSeqNo=<最大の送信された肯定応答されていないSeqNo(このSeqNoは、既存TCPパラメータから簡単に入手することができる、すなわち、パケットが再送信される古いSeqNoのパケットである場合に限って、「Pause」変数>0に関わりなくパケットを前方に転送することを許容するのみ)である場合を除いて、すべての種類の送信を可能にするためにこの「Pause」変数=0であることをチェックする。   2. At the same time, at the same code section position, simply set the 300ms countdown global variable "Pause" at this same position (exactly where CWND is now changed so that it is no longer changed rather than CWND / 2) Then, in the “Last Packet Transmission” code section, Linux TCP has the SeqNo = <maximum transmitted unacknowledged SeqNo (this SeqNo can be easily obtained from existing TCP parameters, ie All types of transmissions except when the packet is an old SeqNo packet to be retransmitted, except that it only allows the packet to be forwarded regardless of the “Pause” variable> 0 This "Pause" variable = 0 to enable Check that.

すなわち、Linux TCPは、必ず、すべての高速再送信パケット及び/又はRTOタイムアウト再送信パケットを、CWND又は有効ウィンドウサイズ制約に一切関わりなく、即座に制約されずに前方に転送することを可能にする(再送信パケットは、いかなる形でも既存のフライトパケットを全く増分しない!。しかし、SeqNo>最大の送信された肯定応答されていないSeqNoを有する新しいパケットの前方への転送が、既存の総フライトパケット数を増加させる可能性があることに留意されたい)。 That is, Linux TCP always allows all fast retransmission packets and / or RTO timeout retransmission packets to be forwarded immediately and unconstrained regardless of CWND or effective window size constraints. (Retransmit packets do not increment any existing flight packet in any way! However, forward forwarding of a new packet with SeqNo> maximum transmitted unacknowledged SeqNo will result in an existing total flight packet Note that it may increase the number).

もう1つの実施形態は、単純に、輻輳ドロップイベント(1つ又は複数)の際に「pause」変数(固定された例えば300msのインターバル又は最新のRTT−min(RTT)インターバル...などの導出されたもののいずれか)をカウントダウンするために、絶対にCWNDを全く減分せず、「pause」変数>0の場合にCWND増分を一切可能にしないことであるはずである → この実施態様が、バッファリングされている余分のフライトパケットを減らすのを助けないという点でアグレッシブ[また、CWNDを、ステップ1とステップ2との両方と一緒に、「0」又はlargest.UNA.SeqNo−SEnt.UNA.SeqNoをセットするのではなく、単純に必ず変更されない/減分されないものとすることができる]。   Another embodiment is simply to derive a “pause” variable (such as a fixed 300 ms interval or the latest RTT-min (RTT) interval, etc.) during a congestion drop event (s). In order to count down, the CWND should never be decremented at all, and if the “pause” variable> 0, no CWND increment would be possible → this implementation would be Aggressive in that it does not help reduce extra flight packets that are buffered [Also, CWND, along with both Step 1 and Step 2, can be either "0" or large. UNA. SeqNo-SEnt. UNA. Rather than setting SeqNo, it can simply not be changed / decremented.

「pause」変数>0である間にこの非増分部分を下の以前の実施態様に導入することもでき、したがって、戻るACKがスライディングウィンドウの左エッジを進めることは、戻るACK−クロッキングレートに対応する同一のレートで新しいパケット(1つ又は複数)(すなわち、SeqNo>largest.Sent.SeqNoを有するパケット(1つ又は複数))が注入されることを引き起こすだけであって、戻るACKのレート−クロッキングレートを超える「加速的」CWND増分/余分の加速的な指数関数的又は線形の新しいパケット(1つ又は複数)注入を引き起こさない。カウントダウン「pause」グローバル変数>0の時に、Linux TCPは、着信ACKが今やスライディングウィンドウ左エッジを進める場合であってもCWNDを一切増分してはならない...すなわち、Linux TCPは、戻るACK−クロッキングレートと同一のレートでネットワークに新しいパケットを注入することができるが、戻るACKのレート−クロッキングレートを超えて「指数関数的に2倍にする」又は「線形に増やす」ことを行ってはならない(すべてのCWND増分コード行を、まずカウントダウン「pause」>0であるかどうかをチェックし、そうである場合に増分をバイパスするように変更することによって簡単に実施される)。   This non-incremental part can also be introduced in the previous embodiment below while the “pause” variable> 0, so that the back ACK advances the left edge of the sliding window will result in a back ACK-clocking rate. Rate of ACK to return, only causing new packet (s) to be injected at the same corresponding rate (ie, packet (s) with SeqNo> largest.Sent.SeqNo) Do not cause “accelerated” CWND increments / extra accelerating exponential or linear new packet (s) injection beyond the clocking rate. When the countdown “pause” global variable> 0, Linux TCP should not increment CWND at all, even if the incoming ACK now advances the sliding window left edge. . . That is, Linux TCP can inject new packets into the network at the same rate as the returning ACK-clocking rate, but "exponentially doubles" beyond the returning ACK rate-clocking rate. Or "do not increase linearly" (change all CWND increment code lines to first check if the countdown "pause"> 0 and if so, bypass the increment Easy to implement).

また、代替案では、Linux変更は、単に単純に次を要求することができる。   Alternatively, Linux changes can simply require the following:

1.輻輳ドロップイベント(1つ又は複数)の際にCWND値を全く変更せず/減分せず、また、輻輳ドロップイベントによってトリガされる、続く「ポーズインターバル」、例えば300ms(あるいは、最新RTT−min(RTT)...又はmax[最新RTT−min(RTT)、例えば300ms]...などのアルゴリズム的に導出されたインターバル)中にCWNDを全く増分しない → 輻輳ドロップイベント(1つ又は複数)の際に、変更されたLinux TCPは、「トリガされたポーズインターバル」中の戻るACKクロッキングレートを超えて新しい「加速的」パケット(1つ又は複数)をネットワークに(すなわち、SeqNo>largest.Sent.SeqNoを有する)注入しない[すなわち、CWNDは、CWND<センダ/レシーバ最大ウィンドウサイズの場合であっても、スライディングウィンドウの左エッジを進めた戻るACKによって増分はされない]。   1. The CWND value is not changed / decremented at all during the congestion drop event (s) and is triggered by the congestion drop event, followed by a “pause interval”, eg 300 ms (or the latest RTT-min (RTT) ... or max [algorithmically derived interval such as latest RTT-min (RTT), eg 300 ms] ...) CWND is not incremented at all → congestion drop event (s) At this time, the modified Linux TCP sends new “accelerated” packet (s) to the network (ie, SeqNo> largeest.) Beyond the returning ACK clocking rate during the “triggered pause interval”. Sent.SeqNo (does not inject) [ie CWND , CWND <even if the sender / receiver maximum window size, increment not by returning proceeded left edge of the sliding window ACK].

及び/又は任意選択として、
2.必ず、再送信パケット(すなわち、SeqNo=<largest.Sent.SeqNoを有するパケット)を、スライディングウィンドウ機構によって一切制約されずに前方に転送することを可能にする。
And / or as an option,
2. It always makes it possible to forward retransmission packets (ie packets with SeqNo = <largest.Sent.SeqNo) forward without any restriction by the sliding window mechanism.

ステップ1.....に対してより洗練されて.....例えばCWNDに(Largest.SENT.SeqNo−SENT.UNA.SeqNo)をセットする300msの「ポーズ」カウントダウンをセットし、カウントダウンされた後にCWNDを復元する... → この形で、Linux高速再送信モジュールは、各後に到着する複数の同一SeqNoのDUP ACKがCWNDをLargest.SENT.SeqNo−SENT.UNA.SeqNo+1に増分するので、着信する同一SeqNoの複数の後続DUP ACKのSACKフィールドによって示される欠けているギャップパケットを「ストロークアウト」することができる[CWNDに「0」をセットする場合に、欠けているギャップパケットの前方に転送する再送信を防ぐことができるが] → ステップ1の変更自体単独は、ステップ2を必要とせずにかなりうまく働かなければならないが、ステップ1及びステップ2の変更を一緒に用いると、CWNDに「0」がセットされている場合であってもあまり問題にならない。   Step 1. . . . . More refined against. . . . . For example, a 300 ms “pause” countdown that sets (Largest.SENT.SeqNo-SENT.UNA.SeqNo) to CWND is set, and CWND is restored after the countdown. . . → In this manner, the Linux high-speed retransmission module causes the DUP ACK of the same SeqNo that arrives after each of SENT. SeqNo-SENT. UNA. Since it increments to SeqNo + 1, the missing gap packet indicated by the SACK field of multiple subsequent DUP ACKs of the same SeqNo can be “stroked out” [missing when setting CWND to “0”. Can prevent re-transmissions forward in front of gap packets] → The change in step 1 itself should work pretty well without the need for step 2, but the change in steps 1 and 2 together If it is used for CWND, even if “0” is set in CWND, there is not much problem.

CWNDにLargest.SENT.SeqNo−SENT.UNA.SeqNoをセットすることは、「加速的な」新しい追加のパケットがネットワークに注入されるのを防ぐことにおいて、「0」をセットすることと同一の効果を有するが、再送信パケット(SeqNo=<Largest.SENT.SeqNoを有する)を制約されずに前方に転送することを可能にする。   In CWND, Largest. SENT. SeqNo-SENT. UNA. Setting SeqNo has the same effect as setting “0” in preventing “accelerated” new additional packets from being injected into the network, but retransmitted packets (SeqNo = < Largest.SENT.SeqNo) can be forwarded unconstrained.

既存RFCのTCPソースコード変更及び単純化されたテストの概要:
テストベッドは、次の通りでなければならない(未変更のLinux TCPサーバと比較して)。
Summary of TCP source code changes and simplified testing for existing RFCs:
The test bed should be as follows (compared to an unmodified Linux TCP server):

変更されたLinux TCPサーバ[+例えば2/5/20%のシミュレートされたパケットドロップ+例えば100/250/500msのRTT待ち時間]−>ルータ−>既存Linux TCPクライアント
ルータとクライアントとの間のリンクは、500kbpsとすることができ、ルータは、10個又は25個のパケットバッファを有することができる。例えば32/64/256Kバイトのセンダ及びレシーバのウィンドウサイズ。
Modified Linux TCP server [+ Simulated packet drop of eg 2/5/20% + RTT latency of eg 100/250/500 ms]->Router-> Existing Linux TCP client Between router and client The link can be 500 kbps and the router can have 10 or 25 packet buffers. For example, sender / receiver window size of 32/64 / 256K bytes.

Linux TCP変更仕様の提案:
(簡単な実世界Linux変更実施態様のための、例えば300msインターバル中にCWND=0をセットすることによって「送信ポーズ」を達成する単純な技法)
1.既存Linux TCPが、輻輳ドロップイベント(CWNDを半分にする3つのDUP ACK及びCWNDを0にリセットするRTOタイムアウト)の際にその代わりにCWNDを変更されないままにするためにCWNDを乗法的に減らし(CWND=CWND/2)、CWNDに(Largest.SENT.SeqNo−SENT.UNA.SeqNo)をセットする300ms「ポーズ」カウントダウンをセットし、カウントダウンされた後にCWNDを復元する場合には、必ず、半分にされた又はLargest.SENT.SeqNo−SENT.UNA.SeqNoのCWND値ではなくオリジナルのCWND値をSSThreshにセットすることもしなければならない==>これは、0.3秒「ポーズ」する簡単な実施態様と正確に同等である。
Proposed Linux TCP change specifications:
(Simple technique for achieving a “transmit pause” for a simple real-world Linux implementation, eg by setting CWND = 0 during the 300 ms interval)
1. In the event of a congestion drop event (three DUP ACKs that halve CWND and an RTO timeout that resets CWND to 0), existing Linux TCP instead multiplicatively reduces CWND to keep CWND unchanged ( CWND = CWND / 2), set (Largest.SENT.SeqNo-SENT.UNA.SeqNo) to CWND, set 300ms “pause” countdown, and if CWND is restored after countdown, be sure to halve Or Largest. SENT. SeqNo-SENT. UNA. The original CWND value, not the SeqNo CWND value, must also be set to SSThresh ==> This is exactly equivalent to a simple implementation that "pauses" for 0.3 seconds.

[ここでのステップ2は、任意選択であるが好むことができ、ステップ1だけを伴うテストの後で追加することができる]
2.CWND/有効ウィンドウスライディングウィンドウスロット可用性に関わりなく、SeqNo=<最大の既存の送信されたSeqNoを有するすべての再送信パケットを制約されずにイネーブルする。
[Step 2 here is optional but can be preferred and can be added after a test with only Step 1]
2. CWND / valid window sliding window Regardless of window slot availability, all retransmission packets with SeqNo = <maximum existing transmitted SeqNo are enabled unconstrained.

パケットを前方に即座に転送することを可能にするかどうかをLinux TCPがチェックする(すなわち、Largest.SENT.SeqNo−SENT.UNA.SeqNo<有効ウィンドウサイズであるかどうかに依存する)スライディングウィンドウコードセクションで、我々は、パケットのSEqNo=<Largest.SENT.SeqNoである(すなわち、再送信パケット、これは、何にも関わりなく前方への転送を妨げられてはならない)場合に、このチェックを「バイパスする」コードを非常に単純に挿入することができる → この形で、Linux TCP再送信モジュールは、必ず、第3DUP ACK/後続の複数のDUP ACKによって示されるすべての「欠けているギャップパケット」を即座に「ストロークアウト」することができる。[SeqNoラップアラウンド保護を組み込むことを忘れないように]。   Sliding window code that checks for whether the TCP can be immediately forwarded forward (ie, depending on whether Largest.SENT.SeqNo-SENT.UNA.SeqNo <effective window size) In the section, we have SEqNo = <Largest. SENT. If it is a SeqNo (ie a retransmit packet, this should not be prevented from forwarding forward in any way), a code that “bypasses” this check can be inserted very simply → In this way, the Linux TCP retransmission module can always “stroke out” all “missing gap packets” indicated by the third DUP ACK / subsequent DUP ACKs. [Remember to incorporate SeqNo wraparound protection].

Windowsプラットフォームインターセプト高速再送信モジュールに関する有用な注
このモジュールは(MSTCPからすべての高速再送信機能を引き継ぎ、MSTCPが絶対にどのDUP ACKイベントについても全く知ることがなくなるように着信DUP ACKの着信ACKNoを変更する)、着信する同一SeqNoのDUP ACKのSACKフィールドによって示されるすべての「欠けているギャップパケット」を再送信しなければならず、この同一SeqNoの複数のDUP ACK中に再送信されるすべてのSeqNoのリストを保持し、後続の同一SeqNoのDUP ACKが今やこの「再送信済みリスト」上記の再送信されたSeqNoパケット(1つ又は複数)の受信を示す場合(この場合に、このモジュールは、SeqNo<新たに到着する同一SeqNoのDUP ACKによって示される受信された最大の再送信されたSeqNoを有する「より以前に再送信された欠けているギャップパケット」(すなわち、既に再送信済みリストにある)をもう一度再送信することだけを行わなければならない)を除いて、後続の同一の一連のSeqNoのDUP ACK中に既に再送信されたものを不必要に再送信はしない。
Useful Notes on Windows Platform Intercept Fast Retransmission Module This module takes over all fast resend functionality from MSTCP and sets the incoming ACKNo for incoming DUP ACKs so that MSTCP never knows any DUP ACK events at all Change), all “missing gap packets” indicated by the SACK field of the incoming DUP ACK of the same SeqNo must be retransmitted, and all retransmitted during multiple DUP ACKs of this same SeqNo If a subsequent DUP ACK of the same SeqNo indicates reception of the retransmitted SeqNo packet (s) above this “retransmitted list” (in this case, this module Is eqNo <"Missing gap packet retransmitted earlier" (ie already in the retransmitted list) with the largest retransmitted SeqNo received indicated by a DUP ACK for the same newly arrived SeqNo ) Is not retransmitted unnecessarily in the subsequent series of SeqNo DUP ACKs, except that it must be retransmitted again).

もちろん、後続の新しい増分されたSeqNoの第3DUP ACK(SeqNoは、今は異なり、増分されている)の際に、このモジュールは、着信する同一SeqNoのDUP ACKのSACKフィールドによって示されるすべての「欠けているギャップパケット」をもう一度新たに再送信することができる。   Of course, in the subsequent new incremented SeqNo 3rd DUP ACK (SeqNo is now different and incremented), this module will send all the “indications” indicated by the SACK field of the incoming SeqNo DUP ACK of the same SeqNo. A “missing gap packet” can be retransmitted again.

明らかに、上で説明されたバージョン/アルゴリズムに対する後続バージョン(1つ又は複数)では、次を行うことが好ましい:
「1.既存Linux TCPが、輻輳ドロップイベント(CWNDを半分にする3つのDUP ACK及びCWNDを1にリセットするRTOタイムアウト)の際にその代わりにCWNDを変更されないままにするために乗法的にCWNDを減らし(CWND=CWND/2又はRTOタイムアウトの際にはCWND=1)、CWNDに1をセットする(第3DUP ACK高速再送信をトリガするかRTOタイムアウトをトリガするパケットの最新のRTT−min(RTT),300ms)の最小値「ポーズ」カウントダウンをセットし、カウントダウンされた後にCWNDを「ポーズ」がカウントダウンした後の現在のLargest.SENT.SeqNo−SENT.UNA.SeqNo(「ポーズ」が最初にアクティブ化された時と全く異なる値である場合がある)に復元する場合には、必ず、半分にされた又は「1」のCWND値ではなくLargest.SENT.SeqNo−SENT.UNA.SeqNo値(「ポーズ」がトリガされた時の)をSSThreshにセットすることもしなければならない==>これは、0.3秒「ポーズ」する簡単な実施態様と正確に同等である」。
Obviously, in subsequent version (s) to the version / algorithm described above, it is preferable to do the following:
“1. In the event of a congestion drop event (three DUP ACKs that halve CWND and an RTO timeout that resets CWND to 1), existing Linux TCP will instead CWND multiplicatively to leave CWND unchanged. (CWND = CWND / 2 or CWND = 1 in case of RTO timeout) and set CWND to 1 (trigger third DUP ACK fast retransmission or latest RTT-min of packet triggering RTO timeout ( RTT), 300 ms) minimum value “pause” countdown is set, and after the countdown, the current Largest. SENT. SeqNo-SENT. UNA. When restoring to SeqNo (which may be a completely different value than when “pause” was first activated), be sure to use Largest. Instead of a halved or “1” CWND value. SENT. SeqNo-SENT. UNA. The SeqNo value (when "pause" is triggered) must also be set to SSThresh ==> This is exactly equivalent to a simple implementation that "pauses" for 0.3 seconds. "

注:この形で、「ポーズ」がカウントダウンした後に、変更されたLinux TCPは、リンクをもう一度即座にもう一度輻輳ドロップするための、「トリガされたポーズ」インターバル中に累積された戻るACK−クロッキングを利用する突然の「バースト」送信を引き起こさない:しかし、「ポーズ」がカウントダウンした後に、後続の戻るACK−クロッキングレートで送信するのみである(すなわち、「ポーズ」インターバル中に累積された戻るACK−クロッキングトークンのいずれをも含まない。   Note: In this way, after the “pause” counts down, the modified Linux TCP will return ACK-clocking accumulated during the “triggered pause” interval to drop the link again immediately and once again to congestion congestion. Does not cause a sudden “burst” transmission, but only transmits at a subsequent return ACK-clocking rate after the “pause” has counted down (ie, accumulated back during the “pause” interval). Does not contain any of the ACK-clocking tokens.

さらにおそらくより好ましくは:「1.既存Linux TCPが、輻輳ドロップイベント(CWNDを半分にする3つのDUP ACK及びCWNDを1にリセットするRTOタイムアウト)の際にその代わりにCWNDを変更されないままにするために乗法的にCWNDを減らし(CWND=CWND/2又はRTOタイムアウトの際にはCWND=1)、CWNDにLargest.SENT.SeqNo−SENT.UNA.SeqNoをセットする[注:1ではなくこのCWND値をセットすることは、スライディングウィンドウスロット可用性によって全く制約されずに即座にすべての再送信パケットすなわちSeqNo=<Largest.SENT.SeqNoを有するパケットを前方に転送することを可能にするが、「ポーズ」がカウントダウンした後に、現在のLargest.SENT.SeqNo−SENT.UNA.SeqNoが、それでも、必ず、「ポーズ」カウントダウンの前にCWNDにその代わりに「1」がセットされる場合と同一であることに留意されたい](第3DUP ACK高速再送信をトリガするかRTOタイムアウトをトリガするパケットの最新のRTT−min(RTT),300ms)の最小値「ポーズ」カウントダウンをセットし、カウントダウンされた後にCWNDを「ポーズ」がカウントダウンした後の現在のLargest.SENT.SeqNo−SENT.UNA.SeqNo(「ポーズ」が最初にアクティブ化された時と全く異なる値である場合がある)に復元する場合には、必ず、半分にされた又は「1」のCWND値ではなくLargest.SENT.SeqNo−SENT.UNA.SeqNo値(「ポーズ」がトリガされた時の)をSSThreshにセットすることもしなければならない → これは、0.3秒「ポーズ」する簡単な実施態様と正確に同等である」。 Even more preferably : “1. Existing Linux TCP leaves CWND unchanged instead during congestion drop event (3 DUP ACKs halving CWND and RTO timeout resetting CWND to 1) Therefore, CWND is reduced multiplicatively (CWND = CWND / 2 or CWND = 1 in case of RTO timeout), and Large.SENT.SeqNo-SENT.UNA.SeqNo is set in CWND [Note: This CWND is not 1 Setting the value allows all retransmitted packets, ie packets with SeqNo = <Largest.SENT.SeqNo, to be forwarded immediately, without any restrictions due to sliding window slot availability, After "it was countdown, the current Largest. SENT. SeqNo-SENT. UNA. Note that SeqNo is still the same as if CWND was set to “1” instead before “pause” countdown] (trigger third DUP ACK fast retransmission or RTO timeout Set the minimum “pause” countdown of the latest RTT-min (RTT), 300 ms) of the packet that triggers the current Largest.CWND after the “pause” countdown. SENT. SeqNo-SENT. UNA. When restoring to SeqNo (which may be a completely different value than when “pause” was first activated), be sure to use Largest. Instead of a halved or “1” CWND value. SENT. SeqNo-SENT. UNA. The SeqNo value (when "pause" is triggered) must also be set to SSThresh-> this is exactly equivalent to a simple implementation that "pauses" for 0.3 seconds. "

既存RFCのTCPソースコード変更及び単純化されたテストの概要(洗練1):
この初期の最も単純なステップ1 TCPソースコード変更は、単独で、当初に100%に近い使用可能リンクの帯域幅利用度を確認するために行わなければならない。
TCP source code changes and simplified testing for existing RFCs (Sophistication 1):
This initial simplest Step 1 TCP source code change must be made alone to confirm the bandwidth utilization of the available link, which is initially close to 100%.

特定のセッティングテストベッドは、次の通りでなければならない(例えば未変更のLinux/FreeBSD/Windows TCPサーバと比較して):
変更されたLinux TCPサーバ−>(IPCHAINを使用して実施することができる)シミュレートされた10パケット中1個のドロップ200ms RTT待ち時間(より大きいことが好ましい)−>ルータ−>既存Linux TCPクライアント
ルータとクライアントとの間のリンクは、1mpsとすることができ(より大きいことが好ましい)、ルータは、1mns*例えば0.3*選択されたポーズ値/8=40Kバイト(すなわち、40個の1Kバイトパケット)バッファサイズを有することができる。64Kバイト(より大きいことが好ましい)のセンダ及びレシーバのウィンドウサイズ。
The specific setting test bed should be as follows (eg compared to an unmodified Linux / FreeBSD / Windows TCP server):
Modified Linux TCP server-> 1 drop in 10 simulated packets (can be implemented using IPCHAIN) 200ms RTT latency (preferably larger)->Router-> Existing Linux TCP The link between the client router and the client can be 1 mps (preferably larger), and the router is 1 mns * eg 0.3 * selected pause value / 8 = 40K bytes (ie 40 1 Kbyte packet) buffer size. Sender and receiver window size of 64K bytes (preferably larger).

最初の最も単純な1ステップLinux TCP変更仕様の提案:
(簡単な実世界Linux変更実施態様のための、例えば300msインターバル中にCWND=0をセットすることによって「送信ポーズ」を達成する単純な技法)
1.既存Linux TCPが、輻輳ドロップイベント(CWNDを半分にする3つのDUP ACK及びCWNDを1にリセットするRTOタイムアウト)の際にその代わりにCWNDを変更されないままにするために乗法的にCWNDを減らし(CWND=CWND/2又はRTOタイムアウトの際にはCWND=1)、CWNDに1をセットする300ms「ポーズ」カウントダウンをセットし、カウントダウンされた後にCWNDをオリジナル値に復元する場合には、必ず、半分にされた又は「1」のCWND値ではなくオリジナルのCWND値をSSThreshにセットすることもしなければならない → これは、0.3秒「ポーズ」する簡単な実施態様と正確に同等である。
Proposal of the first and simplest one-step Linux TCP change specification:
(Simple technique for achieving a “transmit pause” for a simple real-world Linux implementation, eg by setting CWND = 0 during the 300 ms interval)
1. In the event of a congestion drop event (three DUP ACKs that halve CWND and an RTO timeout that resets CWND to 1), existing Linux TCP will instead reduce CWND multiplicatively to keep CWND unchanged ( CWND = CWND / 2 or CWND = 1 when RTO times out), set 300W “pause” countdown to set CWND to 1, and if CWND is restored to its original value after being counted down, it must be half The original CWND value must also be set to SSThresh rather than the CWND value set to “1” or not → This is exactly equivalent to a simple implementation that “pauses” for 0.3 seconds.

注:これは、第3DUP ACKが高速再送信機構をトリガする時及びRTOタイムアウトの時のまさに最初の再送信パケットを除いて(これらは、スライディングウィンドウスロット可用性に関わりなく、必ずLinux TCPによって前方に転送される!)、第3DUP ACK及びRTOタイムアウトの時に例えば300msだけ前方に転送するすべての送信/再送信を止める(バッファをクリアするために)。また、この300ms「ポーズ」によって止められ/停止されるすべての後続の複数の高速再送信パケットは、300msがカウントダウンしたならば即座に前方に転送される(CWNDが最大送信/受信ウィンドウサイズに達していない場合に限って、我々はどのCWNDも減分しないので、CWNDは、既に最大送信/受信ウィンドウサイズを超えている可能性が高く、したがって、この300ms「ポーズ」によって止められ/停止される後続の複数の高速再送信パケットは、300msがカウントダウンした時に、戻るACK−クロッキングレートと同一のレートでのみ前方に転送されるのみである可能性が高い(しかし、幸運にもこの300msポーズ期間中に累積されたすべての戻るACKを含む)==>この変更のうちで最も単純なものは、既に、Google/Yahoo/Amazon/Real Player...などに関する「驚異的な」商業的成功となっているであろう。   Note: This is except for the very first retransmission packet when the third DUP ACK triggers the fast retransmission mechanism and when the RTO times out (these are always forwarded by Linux TCP, regardless of sliding window slot availability). Forwarded!), Stop all transmissions / retransmissions forwarded by, eg, 300 ms at the time of the third DUP ACK and RTO timeout (to clear the buffer). Also, all subsequent multiple fast retransmission packets that are stopped / stopped by this 300ms “pause” are forwarded as soon as 300ms counts down (CWND reaches maximum transmit / receive window size). Only if not, we do not decrement any CWND, so it is likely that the CWND has already exceeded the maximum transmit / receive window size and is therefore stopped / stopped by this 300ms "pause" Subsequent multiple fast retransmission packets are likely only forwarded forward at the same rate as the returning ACK-clocking rate when 300 ms counts down (but fortunately this 300 ms pause period) Including all back ACKs accumulated in) ==> Most of this change Net ones, already, Google / Yahoo / Amazon / Real Player ... would be a "tremendous" commercial success on such.

既存RFCのTCPソースコード変更及び単純化されたテストの概要(洗練2):
「1.既存Linux TCPが、輻輳ドロップイベント(CWNDを半分にする3つのDUP ACK及びCWNDを1にリセットするRTOタイムアウト)の際にその代わりにCWNDを変更されないままにするために乗法的にCWNDを減らし(CWND=CWND/2又はRTOタイムアウトの際にはCWND=1)、CWNDに1をセットする(第3DUP ACK高速再送信をトリガするかRTOタイムアウトをトリガするパケットの最新のRTT−min(RTT),300ms)の最小値「ポーズ」カウントダウンをセットし、カウントダウンされた後にCWNDをオリジナルの値に復元する場合には、必ず、半分にされた又は「1」のCWND値ではなくオリジナルのCWND値をSSThreshにセットすることもしなければならない → これは、0.3秒「ポーズ」する簡単な実施態様と正確に同等である」。
TCP source code changes and simplified testing for existing RFCs (Sophistication 2):
“1. In the event of a congestion drop event (three DUP ACKs that halve CWND and an RTO timeout that resets CWND to 1), existing Linux TCP will instead CWND multiplicatively to leave CWND unchanged. (CWND = CWND / 2 or CWND = 1 in case of RTO timeout) and set CWND to 1 (trigger third DUP ACK fast retransmission or latest RTT-min of packet triggering RTO timeout ( RTT), 300 ms) minimum value “pause” countdown is set, and if CWND is restored to the original value after being counted down, it is always the original CWND, not the halved or “1” CWND value Must also set the value to SSThresh Shall → This is exactly equivalent to the simple embodiment to 0.3 seconds "pause"".

注:この形で、パケットドロップイベントが、ドロップを引き起こす期待される通常の完全なバッファ枯渇(通常のバッファサイズは300msである)ではなく、物理送信エラー/BERによってトリガされる場合に、変更されたLinux TCPは、前方への転送のいずれをも、全く、不必要に「ポーズ」させず、停止させない:パケットドロップがBERによって引き起こされ、リンクが輻輳していない場合には、「ポーズ」カウントダウンは、今や、永久に連続する300msの永久「ポーズ」をループするのではなく、正しく0msをセットされる。パケットドロップイベントをシミュレートする、より以前のIPCHAIN法は、輻輳又は満杯バッファ枯渇イベントに全く対応しないことに留意されたい。   Note: In this way, the packet drop event is changed when triggered by a physical transmission error / BER rather than the expected normal full buffer exhaustion (normal buffer size is 300ms) that causes the drop. Linux TCP does not “pause” and stop any forward forwarding unnecessarily: “pause” countdown if packet drop is caused by BER and link is not congested Is now correctly set to 0 ms rather than looping a permanent 300 ms permanent “pause”. Note that earlier IPCHAIN methods that simulate packet drop events do not respond to congestion or full buffer exhaustion events at all.

しかし、下の、より以前の変更仕様は、それでも働くが、テストベッドは、今や、その代わりに下記でなければならない。   However, the earlier, modified specification below still works, but the test bed now must instead:

例えば1mbsリンクを介するルータ1への5つの複数の大きいFTP及び/又は輻輳的トラフィックジェネレータ(又は例えば1.5秒おきの周期的な短い300ms UDP輻輳バースト生成とすることさえできる)を有する未変更のLinux TCPサーバ
↓ (1mbsリンク)
変更されたLinux TCPサーバ−>(1mbsリンク)ルータ1(1mbsリンク)−>既存Linux TCPクライアント
ルータとクライアントとの間のリンクは、1mpsとすることができ(より大きいことが好ましい)、ルータは、1mns*例えば0.3*選択されたポーズ値/8=40Kバイト(すなわち、40個の1Kバイトパケット)バッファサイズを有することができる。64Kバイト(より大きいことが好ましい)のセンダ及びレシーバのウィンドウサイズ。注:この形で、すべてのパケットドロップ(1つ又は複数)イベントは、必ずフルバッファ枯渇シナリオに厳密に対応し、300msの「ポーズ」は、今や、よく道理にかなう(又は、例えば非常に小さいバッファ容量が展開される、=<300msの場合に、トリガするパケットのRTT−min(RTT)の「ポーズ」インターバル)。
Unmodified with 5 multiple large FTP and / or congested traffic generators (e.g. even periodic 300ms UDP congestion burst generation every 1.5 seconds, for example) to router 1 over a 1 mbs link, for example Linux TCP server ↓ (1mbs link)
Modified Linux TCP server-> (1 mbs link) Router 1 (1 mbs link)-> Existing Linux TCP client The link between the router and client can be 1 mps (preferably larger) 1 mns * eg 0.3 * selected pause value / 8 = 40K bytes (ie 40 1K byte packets) buffer size. Sender and receiver window size of 64K bytes (preferably larger). Note: In this way, all packet drop (s) events always correspond exactly to the full buffer exhaustion scenario, and the 300ms “pause” is now well-reasonable (or, for example, very small) RTP-min (RTT) “pause” interval of triggering packet if buffer capacity is expanded = <300 ms.

最後に、IPCHAINを用いる、より以前のテストベッドセットアップは、どの「ポーズ」も必要とせずにどのCWNDサイズも減分としないことと連動する==>100%リンク利用度を示すが、アグレッシブ非TCPフレンドリである。   Finally, earlier test bed setups using IPCHAIN work in conjunction with not decrementing any CWND size without requiring any “pauses” ==> 100% link utilization, but not aggressive It is TCP friendly.

「1.既存Linux TCPが、輻輳ドロップイベント(CWNDを半分にする3つのDUP ACK及びCWNDを1にリセットするRTOタイムアウト)の際にその代わりにどのCWNDも変更されないままにするために乗法的にCWNDを減らす(CWND=CWND/2又はRTOタイムアウトの際にはCWND=1)場合には、必ず、半分にされた又は「1」のCWND値ではなく未変更のCWND値をSSThreshにセットすることもしなければならない==>これ自体は、ドロップレート及びRTT待ち時間に関わりなく、100%に近いリンク利用度を保証する」。   “1. Existing Linux TCP is multiplicative to keep any CWND unchanged instead during congestion drop events (3 DUP ACKs halving CWND and RTO timeout resetting CWND to 1) When reducing CWND (CWND = CWND / 2 or CWND = 1 in case of RTO timeout), be sure to set the CWND value unchanged to half of the CWND value instead of being halved or “1” It must be ==> This in itself guarantees link utilization close to 100%, regardless of drop rate and RTT latency.

レシーバベースド増分展開可能TCPフレンドリ外部インターネットTCP
変更
レシーバTCPソースコードは、直接に変更することができ(あるいは、同様に、インターセプトモニタを、同一のことを実行する/同一のことにとりかかるように適合させる)、すべての既存RFCのTCPを扱いさえする。
Receiver-based incremental deployment possible TCP friendly external Internet TCP
The modified receiver TCP source code can be modified directly (or similarly adapt the intercept monitor to do the same thing / do the same thing) and handle all existing RFC TCPs Even do.

概要(さまざまな前に説明した技法t及びサブコンポーネント技法をも参照されたい)[注:CWNDサイズが一度達成されたので、どれほど大きくても、それ自体では輻輳ドロップを引き起こさないことは明らかである:輻輳パケット(1つ又は複数)ドロップの主原因であるのは、CWNDサイズの「加速的瞬間的増加」、例えば指数関数的増大又は線形増大である(戻るACK−クロッキングレート...)。   Overview (see also various previously described techniques t and subcomponent techniques) [Note: it is clear that no matter how large CWND size has been achieved, it does not cause congestion drops by itself. : The main cause of congestion packet (s) drop is “accelerated momentary increase” of CWND size, eg exponential increase or linear increase (return ACK-clocking rate...) .

1. レシーバTCPは、3つのDUP ACKを送信する際に、アルゴリズム的に決定された導出された個数/シリーズの複数の同一SEQNoのDUP ACKを即座に完遂し(そのような複数の同一SEQNoのDUP ACKの送信のレートも、センダTCPのCWNDサイズを、したがって送信レートを望み通りに制御するためにアルゴリズム的に制御することができる)、したがって、センダCWNDサイズは、例えば高速再送信3DUP ACKの時に半分にされないように...あるいは、経路輻輳レベル(輻輳していない/ある値の/ある値を超えるバッファ遅延の始まり、輻輳パケットドロップ...など)のレシーバによる検出に従う規定されたCWNDサイズ時限増分で、制御することができる。大きいウィンドウサイズ、パケットドロップを早期に検出するためのパケット到着間、レシーバウィンドウサイズの調整(例えば、センダの有効ウィンドウサイズ送信レートを完全にポーズさせるための「0」、したがって、レシーバウィンドウサイズは、今や、CWNDではなくセンダの有効ウィンドウ送信レートを制御する)...など、さまざまな以前の技法と組み合わせることができる。レシーバは、センダのCWNDサイズトラッキング法を利用して、複数DUP ACK生成レートを判定するのを助けることもでき、センダが正確にどのDUP ACKがセンダTCPで受信されたかについてレシーバに通知するように、生成されたあるACKに1バイトデータを含めることもできる。   1. When the receiver TCP sends three DUP ACKs, it immediately completes a DUP ACK of a plurality of identical SEQNos of a derived number / series determined algorithmically (such a plurality of DUP ACKs of the same SEQNo. Can also be algorithmically controlled to control the sender TCP's CWND size, and thus the transmission rate as desired), so that the sender CWND size is half the time, eg, for fast retransmission 3DUP ACKs. Don't be fooled. . . Alternatively, it can be controlled with a defined CWND size timed increment according to detection by the receiver of the route congestion level (not congested / onset of some / exceeding buffer delay, congestion packet drop ... etc.) it can. Large window size, during packet arrival to detect packet drop early, receiver window size adjustment (eg, “0” to fully pause sender's effective window size transmission rate, therefore receiver window size is Now control the sender's effective window transmission rate instead of CWND). . . Etc. and can be combined with various previous techniques. The receiver can also use the sender's CWND size tracking method to help determine the multiple DUP ACK generation rate, so that the sender knows exactly which DUP ACK was received at the sender TCP. One byte data can be included in a generated ACK.

又は
1.レシーバTCPは、ある以前に受信されたSeqNoに関するACKの送信を抑制し、したがって、センダTCPは、今や、複数の同一SeqnoのACKの生成のレシーバのレート(望み通りにアルゴリズム的に導出される)で送信するのみになるようにされることができ(すなわち、センダのCWNDサイズ時限増分)、したがって、レシーバは、センダのレートを制御することができる → 効果的に、センダTCPは、今や、ほとんど必ず高速再送信モードである。十分に大きいレシーバ及びセンダのウィンドウサイズがネゴシエートされれば、1つの同一のSeqNoの複数のDUP ACKが、その1つの同一のSeqNoシリーズのDUP ACKに留まりながらギガバイトを最後まで転送させることができ、あるいは、SeqNoは、センダのウィンドウエッジを「シフトする」ために、有効ウィンドウサイズ枯渇の前の任意の時に成功して受信されたより大きい(又は最大の)SeqNoに増分されてもよい(センダのCWNDサイズを常に十分に大きく保つ技法(1つ又は複数)と組み合わせることができる)。
Or The receiver TCP suppresses the transmission of ACKs for some previously received SeqNo, so the sender TCP is now the receiver's rate of generation of multiple identical Seqno ACKs (derived algorithmically as desired). (Ie, sender's CWND size timed increment), so the receiver can control the sender's rate → effectively, sender TCP is now almost Always in fast retransmission mode. If a sufficiently large receiver and sender window size is negotiated, multiple DUP ACKs of one and the same SeqNo can transfer gigabytes to the end while staying in the DUP ACK of the same SeqNo series, Alternatively, SeqNo may be incremented to a larger (or maximum) SeqNo successfully received at any time prior to effective window size exhaustion (sender CWND) to “shift” the sender's window edge. Can be combined with technique (s) that keep the size always large enough).

及び/又は
1.レシーバTCPは、絶対に3つのDUP ACKを生成せず、センダRTOタイムアウトを再送信させるだけである(好ましくは、より長いRTOタイムアウト期間がトリガされる前に止められた肯定応答されていない再送信によって止められないセンダの連続的再送信を保証するために、十分に大きいウィンドウスケールドサイズがネゴシエートされる)が、センダのCWNDは、RTOタイムアウトの際に「0」又は「1」にリセットされ、レシーバは、RTOタイムアウト再送信を検出した後の複数の続けられる同一のDUP ACKを介するセンダのCWNDのすばやい指数関数的増分復元を保証するためにこれを必要とする。
注:
.ルータは、バッファにより小さい大きさ...50msなどを便利にセットすることができ(そのような小さいバッファセッティングの改善された効力に関する公表されたgoogle検索リサーチレポートを参照されたい)、また、RED機構は、例えば、バッファリングされたパケット(1つ又は複数)レジデンシを有する任意のフロー(1つ又は複数)の例えばまさに最初のバッファリングされたパケットを例えば捨てるように適合させることができる → そのようなインターネットサブセット上でリアルタイム送信/TCPトラフィック入力レートを達成するのを助ける。また、TCPは、単純にレートスロットリングして/「ポーズ」して、すべてのバッファリングの始まりを即座にクリアする/すべてのバッファリングの始まりのクリアをイネーブルするために適当にCWNDサイズを減らすことができる。
And / or The receiver TCP never generates 3 DUP ACKs and only retransmits the sender RTO timeout (preferably an unacknowledged retransmission stopped before a longer RTO timeout period is triggered) A sufficiently large window-scaled size is negotiated to ensure that the sender's continuous retransmissions are not stopped by the sender), but the sender's CWND is reset to "0" or "1" upon RTO timeout The receiver needs this to ensure a fast exponential incremental recovery of the sender's CWND via multiple consecutive identical DUP ACKs after detecting an RTO timeout retransmission.
note:
. The router is smaller than the buffer. . . 50 ms etc. can be conveniently set (see the published Google search research report on the improved efficacy of such small buffer settings), and the RED mechanism can also be used, for example, for buffered packets ( One or more) can be adapted to for example discard the very first buffered packet of any flow (s) with residencies, eg real time transmission / TCP traffic on such internet subset Help achieve the input rate. TCP also simply rate throttles / "pauses" to immediately clear all buffering starts / appropriately reduce CWND size to enable clearing of all buffering starts be able to.

.上記のレシーバTCPは、好ましくは、SACKフィールドを使用して、複数のDUP ACKのシリーズの「クランプされた」同一のSeqNoを超える受信されたSEqNoのブロックを伝えることができ、さらに、SACKフィールドは、時折の後続の欠けている「ギャップ」パケットを伝えるのに利用することもできる(RFCは、3つのブロックをSACKすることを許容し、SACKされたSEqNoは、既存RFCのTCPによって不必要に再送信はされない)。   . The above receiver TCP can preferably use a SACK field to convey a block of received SEqNos that exceed the “clamped” same SeqNo of a series of multiple DUP ACKs. Can also be used to convey occasional subsequent missing “gap” packets (RFC allows SACK 3 blocks and SACKed SEqNos are made unnecessary by existing RFC TCP. Not retransmitted).

.ここでのレシーバTCPは、「SACKフィールドのブロック」技法、一連の同一SeqNoのDUP ACKの「時限」「クランプされた」SeqNoを生成する技法(したがって、有効ウィンドウサイズを制御するためにセンダのスライディングウィンドウSnd.UNA値を制御し、センダのCWNDサイズを制御するために生成される同一SeqNoの複数のDUP ACKの個数も制御する)、レシーバウィンドウサイズをセットする技法、センダのCWNDサイズをトラッキングする技法...などを利用することができ、レシーバが、輻輳/バッファ枯渇パケットドロップの経路の始まり(OTT時間がこれまでに記録されたmin(OTT)を超えるかどうか...で区別可能である、輻輳していない間のBERパケットドロップ(1つ又は複数)から区別可能)のレシーバによる監視に従って、センダのレート/有効ウィンドウサイズ/CWNDサイズを制御し又は「ポーズ」することをイネーブルする。   . The receiver TCP here is a “blocking SACK field” technique, a technique for generating a “timed” “clamped” SeqNo of a series of identical SeqNo DUP ACKs (thus, the sender's sliding to control the effective window size) Control the window Snd.UNA value and also control the number of multiple DUP ACKs of the same SeqNo generated to control the sender's CWND size), the technique of setting the receiver window size, tracking the sender's CWND size technique. . . And the receiver is congested, distinguishable by the beginning of the congestion / buffer depletion packet drop path (whether the OTT exceeds the min (OTT) recorded so far ...). Enable to control or “pause” the rate / effective window size / CWND size of the sender according to the monitoring by the receiver of the BER packet drop (s) during the period (not distinguishable).

さまざまな注
.多数のさまざまなおそらくは単純でさえある形で所望の変更を実施する、可能な説明されたサブコンポーネント法の多数の異なる形及びさまざまな異なる組合せがある。例えば、ネットワーク内のすべてのTCPがすべて同様に変更される場合に、ネットワーク/インターネットサブセット(1つ又は複数)全体を通じたPSTN様伝送品質を保証するために、例えば最新RTT(又は適当な場合にOTT)−記録されたmin(RTT)(又は適当な場合にmin(OTT))のインターバルだけ、各すべてのTCPセンダが単に「ポーズする」(又はレシーバベースドTCPがセンダTCPに「ポーズさせる」)ことは、非常に簡単である。上記の「ポーズ」の代わりに、変更されたTCPは、例えば、バッファリングを引き起こすか必要とする可能性があるすべての余分なフライトパケット(リンク(1つ又は複数)の使用可能物理帯域幅容量より多くが、バッファリングの始まりを引き起こさずに対処することができる)を完全にクリアできるようにする(又は単にあるレベルだけバッファリングを減らす)ためにフライトパケットの総数が即座にできる限り速く減らされることを保証するためすなわち、すべての後続のまだ未解決のフライトパケットが今は経路に沿ったバッファリングを必要としない(又は単にあるレベルだけバッファリングを減らす)ことを保証するために、例えば考案される所望のアルゴリズムに応じて、そのCWNDサイズを例えばCWND*(最新のRTT−min(RTT))/最新のRTT又は例えばCWND*(最新のRTT−min(RTT))/min(RTT)...などにそれぞれ、代わりに減らすことができる。
Various notes . There are many different forms and various different combinations of possible described subcomponent methods that implement the desired changes in many different, perhaps even simpler ways. For example, to ensure PSTN-like transmission quality throughout the network / Internet subset (s) if all the TCPs in the network are all similarly changed, eg, the latest RTT (or where appropriate) OTT) —Every TCP sender simply “pauses” (or receiver-based TCP “pauses” sender TCP) for the recorded min (RTT) (or min (OTT) where appropriate) interval. It's very easy. Instead of the “pause” above, the modified TCP, for example, the available physical bandwidth capacity of all extra flight packets (link (s)) that may cause or require buffering. More can be dealt with without causing the beginning of buffering) (or simply reduce buffering by a certain level) and the total number of flight packets is immediately reduced as quickly as possible. To ensure that all subsequent unresolved flight packets now do not require buffering along the path (or simply reduce buffering by a certain level), for example Depending on the desired algorithm devised, its CWND size can be set to eg CWND * (latest RTT-min (RTT)) / latest of RTT or, for example, CWND * (latest RTT-min (RTT)) / min (RTT). . . Each can be reduced instead.

.ネットワーク内のすべてのレシーバTCPが、すべてそのように上で説明したように変更される場合に、レシーバTCPは、考案される所望のアルゴリズム...例えばRTT(又はOTT)が現在の最新の記録されたmin(RTT)(又は現在の最新の記録されたmin(OTT))未満のままである限りの複数DUP ACKレートすべてのRTT(又はOTT)の乗法増加及び/又は線形増加...などに従って、複数DUP ACKの同一SeqNoシリーズ生成レート/スペーシング/一時的停止...などの全体的な完全な制御を介してセンダTCP送信レートの完全な制御を有することができる。さらに、RTT(又はOTT)が、現在の最新の記録されたmin(RTT)(又は現在の最新の記録されたmin(OTT)より大きくなるすなわち輻輳の始まりが検出されたならば、レシーバベースドの変更されたTCP(又はインターセプトソフトウェア/転送するプロキシ...など)は、アルゴリズム的に考案された期間だけ「ポーズ」することができ、この期間中に、レシーバベースドの変更されたTCPは、着信する新しいSeqNoのパケット(1つ又は複数)と一致するのに必要なものと一致する(すなわち、着信する新しいSeqNoのパケット(1つ又は複数)の1つごとに1つのDUP ACKを生成する)ためを除いて、追加の余分なDUP ACKの生成を「フリーズ」することができ、これは、余分なセンダの総フライトパケットの減少/クリア/経路に沿ったバッファリングの防止を可能にするはずである。   . If all receiver TCPs in the network are all modified as described above, the receiver TCP is the desired algorithm devised. . . For example, all RTTs (or OTTs) of multiple DUP ACK rates as long as RTT (or OTT) remains below the current most recent recorded min (RTT) (or current most recent recorded min (OTT)) Multiplicative increase and / or linear increase. . . The same SeqNo series generation rate / spacing / temporary stop of multiple DUP ACKs. . . Can have complete control of the sender TCP transmission rate via overall complete control such as Further, if the RTT (or OTT) is greater than the current latest recorded min (RTT) (or the current latest recorded min (OTT), ie if the onset of congestion is detected, the receiver-based Modified TCP (or intercepting software / forwarding proxy, etc.) can be “paused” for an algorithmically devised period during which receiver-based modified TCP Match what is needed to match the new SeqNo packet (s) to be performed (ie, generate one DUP ACK for each incoming new SeqNo packet (s)) Except for this, the generation of additional extra DUP ACKs can be “frozen”, which It should allow reduction / clearing of total flight packets / prevention of buffering along the path.

.レシーバベースドTCPは、後に受信されるセンダのACKNo及びSeqNo...などを使用して、RTT/OTT/総フライトパケット...などをレシーバが検出する/計算するのを助けるために、「選択されたマークされた」DUP ACK(1つ又は複数)に含められる例えば1バイトのガーベジデータを含むことができる。   . The receiver-based TCP includes the ACKNo and SeqNo. . . Etc., using RTT / OTT / total flight packets. . . To help the receiver detect / calculate etc., it can include, for example, 1 byte of garbage data that is included in the “selected marked” DUP ACK (s).

2005年11月21日ファイリング
さまざまな洗練及び注
増分展開可能TCPフレンドリ外部インターネット100%リンク利用度データストレージ転送NextGenTCP
一番上の最も多いレベルで、CWNDは、今、どれであっても絶対に決して全く減らされない。
November 21, 2005 Filing
Various refinements and notes
Incrementally deployable TCP friendly external Internet 100% link usage data storage transfer NextGenTCP :
At the top most level, CWND is now never reduced at all.

Windowsデスクトップ「フォルダストリング検索」ファシリティを使用して、すべてのサブフォルダ/ファイル内のCWND変数の各すべての出現を突き止めることは簡単である......RTOタイムドアウトの際に完全であるために...その輻輳が誘導した場合であっても、我々はCWNDを全く減らさない/リセットしない.....
既存RFCの仕様を変更する、我々のRTOタイムドアウトアルゴリズム擬似コードは、次のようになるはずである(「実際の輻輳ドロップ」表示について)。
Using the Windows desktop “folder string search” facility, it is easy to locate every occurrence of a CWND variable in all subfolders / files. . . . . . To be complete when RTO is timed out. . . Even if the congestion induces, we do not decrement / reset CWND at all. . . . .
Our RTO timed out algorithm pseudo-code that changes the specification of the existing RFC should look like this (for the “actual congestion drop” indication):

Timeout: /* 乗法減少 */
.recordedCWND=CWND(しかし、別のRTOタイムアウトが進行中の「ポーズ」中に発生する場合には、recordedCWND=recordedCWND ! /* CWNDサイズが減らされることを誤って引きこしたくはない */)。
Timeout: / * Multiplicative decrease * /
. recordedCWND = CWND (However, if another RTO timeout occurs during an ongoing “pause”, then the recorded CWND = recorded CWND!

.ssthresh=cwnd(しかし、別のRTOタイムアウトが進行中の「ポーズ」中に発生する場合には、SStresh=recordedCWND ! /* SSTreshサイズが減らされることを誤って引きこしたくはない */)。   . ssthresh = cwnd (However, if another RTO timeout occurs during an ongoing “pause”, Stresh = recordedCWND! / * I don't want to accidentally pull down the STSresh size * /).

.「ポーズ」インターバルを計算し、CWND=「1*MSS」をセットし、「ポーズ」がカウントダウンした後にCWND=recordedCWNDに復元する;
既存RFCの仕様を変更する、我々のRTOタイムドアウトアルゴリズム擬似コードは、次のようになるはずである(「非輻輳ドロップ」表示について)。
. Calculate “pause” interval, set CWND = “1 * MSS” and restore to CWND = recordedCWND after “pause” counts down;
Our RTO timed-out algorithm pseudo-code that changes the specification of an existing RFC should look like this (for a “non-congested drop” indication):

Timeout: /* 乗法減少 */
ssthresh=sstresh;
CWND=CWND;
/* 両方が変更されない ! */
RFCのTCPがこれらの単純な経験則に従って変更したことを保証することだけが必要である:
1.「実際の輻輳」表示の際に「ポーズ」を一時的にもたらす(その後にCWNDをrecordedCWNDに復元する)ためを除いて、絶対に決してどのCWND値も減らさない。実際の輻輳表示(第3DUP ACKの時又はRTO Timeout−min(RTT)>例えば200msの時の最新RTT)の際に、SSTreshには、後続CWND増分が加法的線形になるように、先在するCWNDがセットされる必要があることに留意されたい。
Timeout: / * Multiplicative decrease * /
ssthresh = sstresh;
CWND = CWND;
/ * Both are not changed! * /
It is only necessary to ensure that RFC TCP has changed according to these simple rules of thumb:
1. Never decrement any CWND value except to temporarily cause a “pause” on the “actual congestion” indication (and then restore CWND to recordedCWND). In the actual congestion indication (at the time of the third DUP ACK or RTO timeout-min (RTT)> for example, the latest RTT at 200 ms), the STSresh is pre-existing so that the subsequent CWND increment is additively linear Note that CWND needs to be set.

2.非輻輳表示(第3DUP ACKの時又はRTO Timeout−min(RTT)<例えば200msの時の最新RTT)の場合に、高速再送信モジュールとRTOタイムドアウトモジュールとの両方について、「ポーズ」せず、既存RFCがCWND値又はSStresh値を変更することを全く許可しない。   2. In the case of non-congestion indication (3D DUP ACK or RTO Timeout-min (RTT) <e.g. Latest RTT at 200 ms), do not “pause” for both the fast retransmission module and the RTO timed out module, It does not allow any existing RFCs to change the CWND value or Sshsh value.

進行中の現在のポーズ(「実際の輻輳」表示によってトリガされたものであることだけができる)は、存在する場合に、カウンテッドダウンに進行することを許可されなければならない(高速再送信モジュールとRTOタイムアウトモジュールとの両方について)。   The current pause in progress (which can only be triggered by an “actual congestion” indication), if present, must be allowed to proceed to countdown (fast retransmit module) And RTO timeout module).

3.既に、進行中の現在の「ポーズ」がある場合には、後続の介在する「実際の輻輳」表示は、今や、現在の「ポーズ」を完全に終了し、新しい「ポーズ」を開始する(単に新しい「ポーズ」カウントダウン値をセットする/上書きするという問題):高速再送信モジュールとRTOタイムアウトモジュールとの両方について、recordedCWNDは今や=recordedCWND(=CWNDではなく)及び今やSStresh=recordedCWND(CWNDではなく)であることを管理する。   3. If there is already a current “pause” in progress, the subsequent intervening “actual congestion” indication will now completely end the current “pause” and begin a new “pause” (just The problem of setting / overwriting a new “pause” countdown value): For both the fast retransmission module and the RTO timeout module, the recordedCWND is now = recordedCWND (= not CWND) and now Stress = recordedCWND (not CWND) To manage.

非常に単純な基本的な働く第1バージョン完全仕様:ごく少数行の非常に単純なFREEBSD/LINUX TCPソースコード変更
[当初に、非常に大きい初期化されたmin(RTT)値=例えば30000msをセットすることを必要とし、その後、継続的にmin(RTT)=min(最新の到着するACKのRTT,min(RTT))をセットする]。
1.1 IF 第3DUP ACK THEN
IF 3DUP ACK高速再送信の時の最新の戻るACKのRTT−現在の記録されたmin(RTT)=<例えば200ms(すなわち、我々は、今、このパケットドロップがおそらくは「輻輳イベント」によって引き起こされ得ず、したがって不必要にSStreshにCWND値をセットしてはならないことを知る) THEN CWND/SSTresh値を変更しない(すなわち、既存の高速再送信RFCで現在行われているようにCWND=CWND/2又はSSthrshにCWND/2をセットすることすらしない)。
Very simple basic working first version full specification: very few FREEBSD / LINUX TCP source code changes with very few lines [initially set very large initialized min (RTT) value = eg 30000ms Then continuously set min (RTT) = min (the RTT of the latest ACK to arrive, min (RTT))].
1.1 IF 3DUP ACK THEN
Latest Return ACK RTT at IF 3DUP ACK Fast Retransmission-Current Recorded min (RTT) = <eg 200ms (ie we can now say this packet drop could possibly be caused by a "congestion event" Therefore, do not unnecessarily set the CWND value in Stress.) THEN Do not change the CWND / SSResh value (ie, CWND = CWND / 2 as is currently done with existing fast retransmission RFCs). Or even set CWND / 2 to SSthrsh).

ELSE SSThreshを、この記録された既存のCWNDサイズと同一になるようにセットしなければならず(既存の高速再送信RFCのCWND/2ではなく) AND 代わりに、既存CWNDサイズのレコードを保持し、CWND=「1*MSS」をセットし、「ポーズ」カウントダウングローバル変数=(第3DUP ACK高速再送信をトリガする又はRTOタイムアウトをトリガするパケットの最新のRTT−min(RTT),300ms)の最小値をセットする。 ELSE SSThresh must be set to be the same as this recorded existing CWND size (not CWND / 2 of the existing fast retransmission RFC). Instead of holding an existing CWND size record , Set CWND = “1 * MSS”, “pause” countdown global variable = minimum of the latest RTT-min (RTT), 300 ms of the packet that triggers the 3rd DUP ACK fast retransmission or triggers the RTO timeout Set the value .

注:CWND値=1*MSSをセットすることは、TCPが送信を再開する前に、経路に沿ったバッファリングされたパケットをクリアすることを可能にするために、まさに最初の高速再送信パケット再送信パケット(1つ又は複数)を除く、パケットのすべての前方への転送の所望の一時的ポーズ/停止を引き起こす]。   Note: Setting CWND value = 1 * MSS is just the first fast retransmission packet to allow TCP to clear buffered packets along the path before restarting transmission. Causes the desired temporary pause / stop of all forward forwarding of packets except the retransmit packet (s)].

ENDIF
ENDIF
1.2 「ポーズ」時間変数がカウントダウンした後に、CWNDを、記録された前のCWND値に復元する(すなわち、センダは、今や、「ポーズ」が終わった後の通常の送信を再開することができる)。
ENDIF
ENDIF
1.2 After the “pause” time variable has counted down, restore the CWND to the previous recorded CWND value (ie, the sender can now resume normal transmission after the “pause” has ended). it can).

2.1 IF RTOタイムアウト THEN
IF RTOタイムドアウトの時の最新の戻るACKのRTT−現在の記録されたmin(RTT)=<例えば200ms(すなわち、我々は、今、このパケットドロップがおそらくは「輻輳イベント」によって引き起こされ得ず、したがって不必要にCWND値を1*MSSにリセットしてはならないことを知る) THEN CWND値を1*MSSにリセットせず、CWND値を全く変更しない(すなわち、現在、既存RTOタイムアウトRFCで行われているようにCWNDをリセットすることさえ全く行わない)。
2.1 IF RTO timeout THEN
RTT of latest return ACK at IF RTO timed out-current recorded min (RTT) = <eg 200 ms (ie we now can't possibly cause this packet drop due to "congestion event" Therefore, know that the CWND value should not be unnecessarily reset to 1 * MSS) THEN Do not reset the CWND value to 1 * MSS and do not change the CWND value at all (ie, currently done with the existing RTO timeout RFC) Does not even reset CWND at all).

ELSE その代わりに、既存CWNDサイズのレコードを保持し、CWND=「1*MSS」をセットし、「ポーズ」カウントダウングローバル変数=(RTOタイムドアウトの時のパケットの最新のRTT−min(RTT),300ms)の最小値をセットしなければならない。 ELSE Instead, keep existing CWND size record, set CWND = “1 * MSS”, “pause” countdown global variable = (latest RTT-min (RTT) of packet at RTO timed out, A minimum value of 300 ms) must be set.

注:CWND値=1*MSSをセットすることは、TCPが送信を再開する前に、経路に沿ったバッファリングされたパケットをクリアすることを可能にするために、RTOタイムドアウト再送信パケット(1つ又は複数)を除く、パケットのすべての前方への転送の所望の一時的ポーズ/停止を引き起こす]。   Note: Setting CWND value = 1 * MSS will allow RTO timed out retransmission packets (to allow TCP to clear buffered packets along the path before resuming transmission. Cause a desired temporary pause / stop of all forward forwarding of packets (except one or more)].

2.2 「ポーズ」時間変数がカウントダウンした後に、CWNDを、記録された前のCWND値に復元する(すなわち、センダは、今や、「ポーズ」が終わった後の通常の送信を再開することができる)。   2.2 After the “pause” time variable has counted down, restore the CWND to the previous recorded CWND value (ie, the sender can now resume normal transmission after the “pause” has ended). it can).

以上、これで終了である!。   This is the end! .

背景材料
.第3DUP ACK高速再送信をトリガするかRTOタイムアウトをトリガするパケットの最新のRTTは、最後の測定されたラウンドトリップ時間RTTに関する既存のLinux TCBで維持される変数からたやすく入手可能である。最小の記録されたmin(RTT)は、既存のWestwoord/FastTCP/Vegas TCBで維持される変数からたやすく入手可能であるのみであるが、min(RTT)=[min(RTT),最後の測定されたラウンドトリップ時間RTTの]の最小値を継続的に更新する2〜3行のコードを記述することは、十分に簡単であるに違いない 参考文献:http://www.cs.umd.edu/〜shankar/417−Notes/5−note−transportCongControl.htm:Linux TCBによって維持されるRTT変数<http://www.scit.wlv.ac.uk/rfc/rfc29xx/RFC2988.html>:RTO計算Google Search用語「tcp rtt variables」 <http://www.psc.edu/networking/perf_tune.html>:Linux TCP RTTパラメータのチューニング Google Search:「linux TCP minimum recorded RTT」又は「linux tcp minimum recorded rtt variable」注:TCP Westwoodは最小RTTを測定する。
注:
1.上記の「輻輳通知トリガイベント」は、代替案では、最新のRTT−min(RTT)>=指定されたインターバル、例えば5ms/50/300ms ms...などの時と定義することができる(パケットドロップ表示イベントではなく、純非輻輳RTT又はその推定min(RTT)上及びこれを超える経路に沿って経験されたバッファリングによって導入される遅延に対応する。
Background material . The most recent RTT of the packet that triggers the third DUP ACK fast retransmission or triggers the RTO timeout is readily available from variables maintained in the existing Linux TCB for the last measured round trip time RTT. The minimum recorded min (RTT) is only readily available from variables maintained in the existing Westword / FastTCP / Vegas TCB, but min (RTT) = [min (RTT), last measurement It should be simple enough to write 2-3 lines of code that continually update the minimum value of] of the round-trip time RTT that has been made. Reference: http: // www. cs. umd. edu / ~ shankar / 417-Notes / 5-note-transportContControl. http: RTT variable maintained by Linux TCB <http: // www. scit. wlv. ac. uk / rfc / rfc29xx / RFC2988. html>: RTO calculation Google Search term “tcp rtt variables” <http: // www. psc. edu / networking / perf_tune. html>: Linux TCP RTT Parameter Tuning Google Search: “Linux TCP minimum recorded RTT” or “Linux tcp minimum recorded rt variable” Note: TCP West is the minimum to measure the RT.
note:
1. The above-mentioned “congestion notification trigger event” may alternatively be the latest RTT-min (RTT)> = specified interval, eg 5 ms / 50/300 ms ms. . . (Corresponding to the delay introduced by the buffering experienced on the pure non-congested RTT or its estimated min (RTT) and along the path beyond it, rather than a packet drop indication event) .

2.実際の輻輳ドロップ(1つ又は複数)表示によってトリガされた「ポーズ」がカウントダウンし終えたならば、上記のアルゴリズム/方式を適合させ、その結果、CWNDに、今、この瞬間的な「ポーズ」カウンテッドダウンタイムでの総未解決フライトパケット数と等しい(すなわち、最新の最大の転送されたSeqNo−最新の最大の戻るACKNoと等しい)値がセットされるようにする → これは、パケットの突然の大きいバーストがソースTCPによって生成されるのを防ぐはずである。というのは、「ポーズ」期間中に、スライディングウィンドウのエッジを非常に実質的に進めた可能性がある受信された多数の戻るACKがある可能性があるからである。   2. Once the “pause” triggered by the actual congestion drop (s) indication has finished counting down, the above algorithm / scheme is adapted so that CWND now has this momentary “pause”. Ensure that a value equal to the total number of outstanding flight packets at the counted down time (ie, the latest maximum forwarded SeqNo-equal to the latest maximum return ACKNo) is set → Should be prevented from being generated by the source TCP. This is because during the “pause” period, there may be a large number of received back ACKs that may have advanced the edge of the sliding window very substantially.

また、多数の可能なものの中の代替の例として、CWNDには、当初に、「ポーズ」カウントダウンをトリガする第3DUP ACK高速再送信要求の際に、未変更のCWND(「1*MSS」ではなく)又はまさにこの瞬間の総未解決フライトパケット数と等しい値のいずれかをセットすることができ、さらに、「ポーズ」がカウントダウンし終えた時にこの瞬間的総未解決フライトパケット数[任意選択で、この瞬間的「ポーズ」カウンテッドダウンタイムで「ポーズ」がカウントダウンする前に受信された総数追加同一SeqNo複数DUP ACK(高速再送信をトリガする最初の3つのDUP ACKを超える)を引く(すなわち、まさにこの瞬間の最新の最大の転送されたSeqNo−最新の最大の戻るACKNoと等しい)]と等しい値に復元することができる → 変更されたTCPは、今、「ポーズ」インターバル中に受信された各追加の複数の同一SeqNoのDUP ACKに対応する新しいパケットをネットワークにストロークアウトすることができ、CWNDが、今、「ポーズ」がカウントダウンし終えた時に、今の瞬間的総未解決フライトパケット数引く「ポーズ」中に受信された総数追加同一SeqNo複数DUP ACKと等しい値に復元された場合に、経路に沿った介在するバッファリングをクリアするために、「ポーズ」がカウントダウンした後に、任意選択として遅れ馳せに送信レートを「スローダウン」することができる。   Also, as an alternative to many possible ones, CWND initially received an unmodified CWND (“1 * MSS” in the third DUP ACK fast retransmission request that triggers a “pause” countdown. ) Or exactly equal to the total number of unresolved flight packets at this moment, and this momentary total number of unresolved flight packets [optionally] when the “pause” has finished counting down. Subtract the total additional SeqNo multiple DUP ACKs (beyond the first 3 DUP ACKs that trigger fast retransmission) received before “pause” counts down at this momentary “pause” counted downtime (ie, , Exactly the latest maximum transferred SeqNo at this moment-equal to the latest maximum return ACKNo)]] → The modified TCP can now stroke out new packets corresponding to each additional multiple same SeqNo DUP ACK received during the “pause” interval to the network. , If CWND is now restored to a value equal to the total additional SeqNo multiple DUP ACKs received during the “pause” minus the current total momentary unresolved flight packets when the “pause” has finished counting down In addition, the transmission rate can optionally be “slowed down” after the “pause” has counted down to delay intervening buffering along the path.

もう1つの可能な例は、CWNDに、当初に、「ポーズ」カウントダウンをトリガする第3DUP ACK高速再送信要求の際に「1*MSS」をセットし、その後、「ポーズ」がカウントダウンし終えた時に、この瞬間的総未解決フライトパケット数引く総数追加同一SeqNo複数DUP ACKと等しい値に復元することである→この形で、「ポーズ」がカウントダウンした時に、変更されたTCPは、新しいパケットを「バースト」アウトするのではなく、後続の新しい戻るACKレートに対応する新しいパケットのネットワークへのストロークアウトを開始するだけである。   Another possible example is that CWND was initially set to “1 * MSS” on the 3rd DUP ACK fast retransmission request that triggered the “pause” countdown, and then “pause” has finished counting down. Sometimes, this momentary total unresolved flight packet count minus the total addition is to restore to the same value as the same SeqNo multiple DUP ACK → In this way, when the “pause” counts down, the modified TCP will send a new packet Rather than “burst” out, it simply initiates a stroke out of the new packet corresponding to the subsequent new return ACK rate into the network.

3.上記のアルゴリズム/方式の、上記の「ポーズ」カウントダウングローバル変数=(第3DUP ACK高速再送信をトリガするかRTOタイムアウトをトリガするパケットの最新のRTT−min(RTT),300ms)の最小値は、その代わりに=(第3DUP ACK高速再送信をトリガするかRTOタイムアウトをトリガするパケットの最新のRTT−min(RTT),300ms,max(RTT))の最小値をセットすることができ、ここで、max(RTT)は、これまでに観察された最大のRTTである。このmax(RTT)の包含は、ノードのバッファ容量が極端に小さい(例えば、LAN内又はWAN内でさえ)非常に希なありそうにない状況であっても、「ポーズ」期間が、例えば指定された300ms値など、不必要に大きくなりすぎるようにセットされないことを保証するためである。また、上記の例の300msではなく、この値を、その代わりに、異なる経路ごとに動的にアルゴリズム的に導出することができる。 3. The minimum value of the “pause” countdown global variable = (the most recent RTT-min (RTT), 300 ms) of the packet that triggers the third DUP ACK fast retransmission or triggers the RTO timeout of the above algorithm / scheme is: Instead, the minimum value of = (latest RTT-min (RTT), 300 ms, max (RTT)) of the packet that triggers the third DUP ACK fast retransmission or triggers the RTO timeout can be set, where , Max (RTT) is the maximum RTT observed so far. This inclusion of max (RTT) allows the “pause” period to be specified, for example, even in very unlikely situations where the buffer capacity of the node is extremely small (eg, within a LAN or even within a WAN). This is to ensure that the set 300 ms value is not set too large. Also, instead of 300 ms in the above example, this value can instead be dynamically algorithmically derived for different paths.

4.準備のできたギャランティードサービス対応ネットワーク(又は単に輻輳ドロップのないネットワーク及び/又は単にはるかにより少ないバッファリング遅延を有するネットワーク)の簡単な広く行き渡った実施を可能にする単純な方法は、ネットワーク内の1ノードのすべての(又はほとんどすべての)ルータ及びスイッチを変更して/ソフトウェアアップグレードして、トラバースするTCPフローのソースへの3つのDUP ACKの全体を即座に生成して、そのソースに、トラバースするTCPフローのパケットをノードがバッファリングし始める(すなわち、転送するリンクは、今、100%利用されており、総計としてのトラバースするTCPフローのソースのパケットが、バッファリングされ始める)時にその送信レートを減らすように示すことであるはずである。3DUP ACK生成は、その代わりに、例えば転送するリンクが指定された利用度レベル、例えば95%/98%...など又は指定されたある他のトリガ条件に達する時に、トリガすることができる。3つの擬似DUP ACKに対応するパケットが、デスティネーションで実際に正しく受信されるかどうかすら問題ではない。というのは、デスティネーションからソースへの後続ACKが、これを矯正するからである。   4). A simple method that allows simple widespread implementation of a ready guaranteed service enabled network (or just a network without congestion drop and / or just a network with much less buffering delay) Change / software upgrade all (or almost all) routers and switches in one node to instantly generate the entire three DUP ACKs to the source of the traversing TCP flow and When a node starts buffering packets for a TCP flow that does (ie, the forwarding link is now 100% busy and the packets of the source of the traversing TCP flow as a total begin to be buffered) Decrease rate It should be that shown in Suyo. Instead, 3DUP ACK generation is performed, for example, at a usage level at which a link to be transferred is specified, for example, 95% / 98%. . . Or when some other specified trigger condition is reached. It does not matter whether the packets corresponding to the three pseudo DUP ACKs are actually received correctly at the destination. This is because a subsequent ACK from the destination to the source corrects this.

生成された3つのDUP ACKパケットのフィールドは、最小の必要なソースアドレス、デスティネーションアドレス、及びSeqNoを含む(これは、今現在バッファリングされているパケット(1つ又は複数)を検査し、3つの擬似DUP ACKのACKフィールドが検査されたバッファリングされたパケットのACKNoから入手される/又は導出されることを世話することによってたやすく得ることができる)。ところが、擬似の3つのDUP ACKのACKZNoフィールドは、特定の一方向ソース/デスティネーションTCPフロー(1つ又は複数)のデスティネーションTCPによって生成された最新の最大のACKNoの、例えばスイッチ/ルータの維持されるテーブルから入手する/又は導出することができ、あるいはその代わりに、スイッチ/ルータは、まず、デスティネーションからソースへのパケットがそのノードに到着するのを待って、次に、戻るパケットのACKフィールドを検査することから3つの擬似DUP ACKのACKNoフィールドを入手する/又は導出することができる。   The fields of the three generated DUP ACK packets include the minimum required source address, destination address, and SeqNo (this checks the currently buffered packet (s) 3 Can be easily obtained by taking care that the ACK field of two pseudo-DUP ACKs is obtained / derived from the ACKNo of the inspected buffered packet). However, the ACKZNo field of the pseudo three DUP ACKs is the maintenance of the latest maximum ACKNo generated by the destination TCP of the particular unidirectional source / destination TCP flow (s), eg switch / router. Or alternatively, the switch / router first waits for the destination-to-source packet to arrive at the node and then returns the packet From examining the ACK field, the ACKNo field of the three pseudo DUP ACKs can be obtained / or derived.

上記の方式に似て、既存のRED及びECN...などは、同様に、上で概要を示したように変更されたアルゴリズムを有し、リアルタイムギャランティードサービス対応ネットワーク(又は輻輳ドロップなし及び/又ははるかにより少ないバッファ遅延のネットワーク)を使用可能にすることができる。   Similar to the above scheme, existing RED and ECN. . . As well as having a modified algorithm as outlined above to enable a real-time guaranteed service enabled network (or a network with no congestion drop and / or much less buffer delay). be able to.

5.windowsでのもう1つの変形実施態様:
まず、モジュールが、MSTCPからすべての高速再送信/RTOタイムアウトを引き継ぐすなわち、MSTCPが絶対に決してDUP ACKもRTOタイムアウトも一切見ないことを必要とする:モジュールは、単純に、MSTCPからの肯定応答されたすべてのインターセプトされた新しいパケットをスプーフィングする(後にのみ:且つ、必要な場合に、MSTCPに「0」ウィンドウサイズ更新を送信するか、着信ネットワークパケットのウィンドウサイズフィールドを「0」に変更して、MSTCPパケット生成をポーズさせる/スローダウンさせる:輻輳通知、例えば3DUP ACK又はRTOタイムアウトの際に)。モジュールは、すべての転送されるパケットのSeqNo/パケットコピー/systimeのリスト(SeqNoで明確に順序付けられる)を構築し、このリストから高速再送信/RTO再送信を行う。SeqNo<現在の最大の受信されたACKを有するこのリスト上のすべてのアイテムが、除去され、SACKされたすべてのSeqNoも除去される。
5. Another variant on Windows:
First, the module takes over all fast retransmissions / RTO timeouts from MSTCP, ie MSTCP never sees any DUP ACK or RTO timeouts: the module simply acknowledges from MSTCP Spoof all intercepted new packets (only later: if necessary, send MSTCP a "0" window size update or change the window size field of the incoming network packet to "0" Pause / slow down MSTCP packet generation: during congestion notification, eg 3DUP ACK or RTO timeout). The module builds a list of SeqNo / packet copy / system (clearly ordered by SeqNo) of all forwarded packets and performs fast retransmission / RTO retransmission from this list. All items on this list with SeqNo <current largest received ACK are removed, and all SeqNo SACKed are also removed.

このモジュールに「SeqNoラップアラウンド」保護及び「タイムラップアラウンド」保護を組み込む必要があることもお忘れなく。   Remember also that this module needs to incorporate "SeqNo Wrap Around" protection and "Time Wrap Around" protection.

すべてのインターセプトされたMSTCP発信パケットの肯定応答をスプーフィングすることによって、我々のwindowsソフトウェアは、今、MSTCPへの着信ネットワークパケットのどれをも全く変更することを必要としない...MSTCPは、単純にすべての受信された3つのDUP ACKが既にスライディングウィンドウの外にある(既に肯定応答されている!)のでこれらを無視し、タイムアウトしたパケットを送信せず(既に肯定応答されている!)、さらに、我々は、今や、レシーバウィンドウサイズフィールド変更...などを介してMSTCPパケット生成レートをいつでも簡単に制御することができる。ソフトウェアは、任意の時に、フライトパケットの最大値がエミュレートされた/追跡されたMSTCPのCWNDサイズと等しくなることを可能にすることによって、MSTCP自体のWindows増分/輻輳制御/AIMD機構をエミュレートすることができる:概要の輪郭の例(多数の可能なものの中の)として、これは、例えば、各戻るACKについて、エミュレートされた/追跡された擬似ミラーCWNDサイズが、3DUP ACK高速再送信がまだない時に各RTT内で2倍にされるが、3DUP ACK高速再送信が発生したならば、エミュレートされた/追跡された擬似ミラーCWNDサイズが、今やRTTごとに1*MSSだけ増分されるのみであると仮定することによって達成することができる。ソフトウェアは、瞬間総未解決フライトパケット数の最大値が、エミュレートされた/追跡された擬似CWNDサイズを超えないことを可能にし、擬似CWNDサイズを超える時にMSTCP送信を「ポーズ」させるために「0」のレシーバウィンドウサイズ更新/着信パケットのレシーバウィンドウサイズを「0」に変更することを介してMSTCPパケット生成をスロットリングするだけであるはずである。   By spoofing the acknowledgment of all intercepted MSTCP outgoing packets, our Windows software now does not require any modification of any incoming network packets to MSTCP. . . MSTCP simply ignores all 3 received DUP ACKs already out of the sliding window (already acknowledged!) And does not send timed out packets (already acknowledged) In addition, we now change the receiver window size field. . . Etc., the MSTCP packet generation rate can be easily controlled at any time. The software emulates MSTCP's own Windows increment / congestion control / AIMD mechanism by allowing the maximum value of the flight packet to be equal to the emulated / tracked MSTCP CWND size at any given time. As an example of the outline outline (among many possible ones), this is, for example, for each return ACK, the emulated / tracked pseudo-mirror CWND size is 3DUP ACK fast retransmission Is doubled within each RTT when there is not yet, but if a 3DUP ACK fast retransmission occurs, the emulated / tracked pseudo-mirror CWND size is now incremented by 1 * MSS per RTT Can be achieved by assuming that The software allows the maximum number of instantaneous total outstanding flight packets to not exceed the emulated / tracked pseudo CWND size and “pauses” the MSTCP transmission when it exceeds the pseudo CWND size. It should only throttle MSTCP packet generation via a 0 "receiver window size update / change the receiver window size of incoming packets to" 0 ".

このWindowソフトウェアは、その後、最新の最大の前方に転送されたMSTCPパケットのSeqNo及び最新の最大のネットワークの着信パケットのACKNo(その差は、MSTCPのCWND値に全く非常によく対応する未解決の総フライトパケット数を与える)を追跡することによって、常にMSTCP CWNDサイズを記憶するか推定することができる。ここでのWindowソフトウェアは、フライトパケットの総数>=上で述べたCWND推定値(又は、代替的に、上記のCWND推定値及びRWND及び/又はSWNDから導出される有効ウィンドウサイズ)になったならば、MSTCPへの「ACKの自動スプーフィング」を確実に停止するようにすることだけが必要である。   The window software then uses the latest largest forwarded MSTCP packet SeqNo and the latest largest network incoming packet ACKNo (the difference is quite unresolved which corresponds quite well to the MSTCP CWND value). By keeping track of (giving the total number of flight packets), it can always be estimated whether the MSTCP CWND size is stored. If the window software here is the total number of flight packets> = the CWND estimate described above (or alternatively, the above CWND estimate and the effective window size derived from RWND and / or SWND) For example, it is only necessary to reliably stop “automatic spoofing of ACK” to MSTCP.

Claims (14)

TCP及び/又はTCP様プロトコル及び/又は他のプロトコルを改善する方法であって、輻輳パケットドロップなどの輻輳イベントが検出される時及び/又は戻るACKのラウンドトリップ時間RTT/一方向トリップ時間OTTが例えばフロー経路の非輻輳RTT/OTT又はその最新の使用可能な最良の推定値min(RTT)/min(OTT)の既知の値などのある閾値に近くなるかこれを超える時に、センダのデータ送信の完全な又は部分的な「ポーズ」/「一時停止」を介してネットワーク輻輳を回避し且つ/又は防止し且つ/又はそれから回復する方法。   A method for improving TCP and / or TCP-like protocols and / or other protocols, when a congestion event such as a congestion packet drop is detected and / or a return ACK round trip time RTT / one-way trip time OTT Sending a sender's data when it approaches or exceeds some threshold, such as a non-congested RTT / OTT of the flow path or a known value of its latest available best estimate min (RTT) / min (OTT) To avoid and / or prevent and / or recover from network congestion via full or partial “pauses” / “pauses”. TCP及び/又はTCP様プロトコル及び/又は他のプロトコルを改善する方法であって、(a)から(c)、すなわち:
(a)TCPのスライディングウィンドウ機構の「有効ウィンドウ」及び/又は輻輳ウィンドウCWNDが、輻輳を回避し且つ/又は防止し且つ/又はそれから回復するためにサイズが減らされる必要がないことの新しい実現/技法をよく利用し、
(b)輻輳パケットドロップなどの輻輳イベントが検出される時及び/又は戻るACKのラウンドトリップ時間RTT/一方向トリップ時間OTTが、例えばフロー経路の非輻輳RTT/OTT又はその最新の使用可能な最良の推定値min(RTT)/min(OTT)の既知の値などのある閾値に近くなるかこれを超える時に、センダのデータ送信の完全な又は部分的な「ポーズ」/「一時停止」を介して、その代わりに輻輳が回避され且つ/又は防止され且つ/又はそれから回復され、
(c)上記の(b)ではなく、又はその代わりに、又はそれと組み合わせて、TCPのスライディングウィンドウ機構の「有効ウィンドウ」及び/又は輻輳ウィンドウCWND値が、輻輳が検出される時の最新の返されたラウンドトリップ時間RTT/一方向トリップ時間OTT値、及び/又は特定のフロー経路の既知の非輻輳ラウンドトリップ時間RTT/一方向トリップ時間OTT値若しくはその最新の使用可能な最良の推定値min(RTT)/min(OTT)、及び/又は特定のフロー経路の最新の観察された最長のラウンドトリップ時間max(RTT)/一方向トリップ時間max(OTT)に少なくとも部分的に依存してアルゴリズム的に導出される値まで減らされる
の任意の組合せ/サブセットを含む方法。
A method for improving TCP and / or TCP-like protocols and / or other protocols, wherein (a) to (c), ie:
(A) New realization that TCP's sliding window mechanism “effective window” and / or congestion window CWND does not need to be reduced in size to avoid and / or prevent and / or recover from congestion Make good use of techniques,
(B) When congestion events such as congestion packet drop are detected and / or return ACK round trip time RTT / one-way trip time OTT is, for example, flow path non-congested RTT / OTT or its latest available best Via a complete or partial “pause” / “pause” of the sender's data transmission when it approaches or exceeds some threshold, such as a known value of min (RTT) / min (OTT) Instead, congestion is avoided and / or prevented and / or recovered from,
(C) not or instead of (b) above, or in combination with it, the “valid window” and / or congestion window CWND value of the TCP sliding window mechanism returns the latest return when congestion is detected. Round trip time RTT / one-way trip time OTT value and / or known non-congested round trip time RTT / one-way trip time OTT value for a particular flow path or its latest available best estimate min ( RTT) / min (OTT) and / or algorithmically depending at least in part on the latest observed longest round trip time max (RTT) / one-way trip time max (OTT) of a particular flow path A method that includes any combination / subset of reduced to a derived value.
事実上輻輳のないギャランティードサービス対応データ通信ネットワーク/インターネット/インターネットサブセット/プロプラエタリインターネットセグメント/WAN/LAN(以下ではネットワークと称する)の方法であって、特徴(a)から(f)、すなわち:
(a)ネットワーク内のソースから送信されネットワーク内のデスティネーションに到着するすべてのパケット/データユニットが、ネットワーク輻輳に起因して単一のパケットが捨てられることなしにすべてが到着する点と、
(b)ギャランティードサービス機能性を必要とするすべてのパケット/データユニットにのみ適用される点と、
(c)前記パケット/データユニットのトラフィックが、前方に転送される前にインターセプトされ、処理される点と、
(d)前記送信する1つ又は複数のソースのトラフィックが、インターセプトされ処理され、前方に転送され、且つ/又は前記パケット/データユニットのトラフィックが、起点の送信する1つ又は複数のソースでインターセプトされ処理され、前方に送信されるのみである点と、
(e)送信するソース及び/又は受信するデスティネーションでの既存のTCP/IPスタックが、既存のQoS/MPLS技法の使用を必要とせず、前記ネットワーク内のスイッチ/ルータソフトウェアのいずれかがエンドツーエンド性能結果を達成するために変更され又は寄与することを必要とせず、前記ネットワーク内の各すべてのノード間リンクでの制限されない帯域幅の提供を必要とせずに、前記ネットワーク内の任意のソース/デスティネーションノード対の間で同一のエンドツーエンド性能結果を達成するために変更される点と、
(f)前記ネットワーク内のトラフィックがほとんどTCPトラフィックからなり、UDP/ICMP...などの他のトラフィックタイプが、いつでも前記ネットワーク内の1つ又は複数のノード間リンクのいずれかの使用可能帯域幅全体を超えず、他のトラフィックタイプを生成するアプリケーションが、いつでも前記ネットワーク内の1つ又は複数のノード間リンクのいずれかの使用可能帯域幅全体を超えない場合に、UDP/ICMP..などの他のトラフィックタイプが、任意の時に前記ネットワーク内の1つ又は複数のノード間リンクのいずれかの使用可能帯域幅全体を超えるならば、前記ネットワーク内のそのように影響される1つ又は複数のノード間リンクをトラバースするソース/デスティネーションノード対トラフィックだけが、必ずしも、この時間中に事実上輻輳のないギャランティードサービス対応ではなくなり、且つ/又は前記ネットワーク内のソースから送信され前記ネットワーク内のデスティネーションに到着するすべてのパケット/データユニットが、必ずしも、すべてが到着しない、すなわち、1つ又は複数のパケットが、ネットワーク輻輳に起因して捨てられる点と
の任意の組合せ/サブセットを伴う方法。
A method of data communication network / Internet / Internet subset / proprietary Internet segment / WAN / LAN (hereinafter referred to as a network) that is virtually free of a guaranteed service, and features (a) to (f), namely:
(A) all packets / data units sent from a source in the network and arriving at a destination in the network all arrive without a single packet being discarded due to network congestion;
(B) applies only to all packet / data units that require guaranteed service functionality;
(C) the packet / data unit traffic is intercepted and processed before being forwarded;
(D) The transmitting source or traffic sources are intercepted and processed and forwarded and / or the packet / data unit traffic is intercepted at the originating transmitting source or sources. Only processed forward and sent forward,
(E) The existing TCP / IP stack at the sending source and / or the receiving destination does not require the use of existing QoS / MPLS techniques, and any of the switch / router software in the network is end-to-end. Any source in the network that does not need to be changed or contributed to achieve end performance results, and does not require the provision of unrestricted bandwidth on every inter-node link in the network / Changed to achieve the same end-to-end performance results between the destination node pair;
(F) Most of the traffic in the network consists of TCP traffic, and UDP / ICMP. . . Other traffic types do not exceed the total available bandwidth of any of the one or more inter-node links in the network at any time, and applications that generate other traffic types can always If the total available bandwidth of any one or more of the inter-node links is not exceeded, UDP / ICMP. . If other traffic types exceed the total available bandwidth of any of one or more inter-node links in the network at any given time, one or more affected in the network Only source / destination node-to-traffic traversing multiple inter-node links will not necessarily be guaranteed to be virtually congested and guaranteed service during this time and / or transmitted from a source in the network All packets / data units arriving at a destination within are not necessarily all arriving, that is, with any combination / subset with one or more packets being discarded due to network congestion Method.
前記方法において、前記プロトコルの改善/変更が、センダTCPでもたらされる請求項1から3のいずれか1項に記載の方法。   4. The method according to any one of claims 1 to 3, wherein in the method, the protocol improvement / change is effected in a sender TCP. 前記方法において、前記プロトコルの改善/変更が、レシーバ側TCPでもたらされる請求項1から3のいずれか1項に記載の方法。   4. The method according to any one of claims 1 to 3, wherein the protocol improvement / change is effected at a receiver-side TCP. 前記方法において、前記プロトコルの改善/変更が、前記ネットワークのスイッチ/ルータノードでもたらされる請求項1から3のいずれか1項に記載の方法。   4. A method as claimed in any preceding claim, wherein the protocol improvement / change is effected at a switch / router node of the network. 前記プロトコルの改善/変更が請求項4から6のいずれか1項で指定される位置の任意の組合せでもたらされる方法。   A method wherein the protocol improvement / change is effected at any combination of locations specified in any one of claims 4-6. 前記プロトコルの改善/変更が請求項4から6のいずれか1項で指定される位置の任意の組合せでもたらされる方法であって、前記方法において、既存の「ランダム早期検出」RED及び/又は「明示的輻輳通知」ECNが請求項1から7のいずれか1項で開示される効果を与えるために変更/適合される方法。   7. A method wherein said protocol improvement / modification is effected at any combination of positions specified in any one of claims 4 to 6, wherein said method comprises an existing "random early detection" RED and / or " Method in which the "explicit congestion notification" ECN is modified / adapted to give the effect disclosed in any one of claims 1-7. 前記ネットワーク内の前記スイッチ/ルータが請求項1から8のいずれか1項で開示される効果を与えるために、例えばバッファサイズ調整など、その構成又はセットアップ又は動作において調整される請求項1から8のいずれか1項に記載の方法。   9. The switch / router in the network is adjusted in its configuration or set-up or operation, for example buffer size adjustment, to give the effect disclosed in any one of claims 1-8. The method of any one of these. 前記方法において、
.既存プロトコルRFCは、センダのCWND値が、検出された輻輳の際にセンダのデータ送信の「ポーズ」/「停止」を一時的にもたらす(例えば、「ポーズ」/「停止」中に一時的にセンダのCWND=1*MSSをセットし、「ポーズ」/「停止」が完了した後に、センダのCWND値を例えば「ポーズ」/停止の前の既存のCWND値又はあるアルゴリズム的に導出された値に回複することによって)ためを除いて、今はどれもが絶対に減らされず/減分されないように変更され、前記「ポーズ」/「停止」のインターバルは、例えば任意の300msをセットされるか、Minimum(第3DUP ACK高速再送信をトリガする戻るACKパケットの最新のRTT若しくはRTOタイムアウトした時の戻るACKパケットの最新のRTT,300ms)など、アルゴリズム的に導出されるか、Minimum(第3DUP ACK高速再送信をトリガする戻るACKパケットの最新のRTT若しくはRTOタイムアウトした時の戻るACKパケットの最新のRTT,300ms,max(RTT))など、アルゴリズム的に導出されることができ、
且つ/又は
.既存のプロトコルRFCは、SSThreshが、その代わりに今は、「ポーズ」/「停止」をトリガする輻輳検出の前の既存CWND値をセットされるように変更され、すなわち、後続CWND増分は、CWND値を超えて線形加法的であるのみである
請求項1から9のいずれか1項に記載の方法。
In said method,
. The existing protocol RFC temporarily causes the sender's CWND value to temporarily “pause” / “stop” the sender's data transmission upon detected congestion (eg, temporarily during “pause” / “stop”). After the sender's CWND = 1 * MSS is set and the "pause" / "stop" is complete, the sender's CWND value is, for example, an existing CWND value before the "pause" / stop, or some algorithmically derived value Is changed so that none is decremented / decremented at any time, except that the "pause" / "stop" interval is set to any 300ms, for example , Minimum (the latest RTT of the return ACK packet that triggers the 3rd DUP ACK fast retransmission, or the latest RTT, 300 ms) or the like, or the latest RTT of the return ACK packet that triggers the third DUP ACK fast retransmission or the latest RTT of the return ACK packet when the RTO times out (300 ms, max ( RTT)) etc. can be derived algorithmically,
And / or. The existing protocol RFC is modified so that SSThresh is instead set to the existing CWND value before congestion detection that now triggers “pause” / “stop”, ie, the subsequent CWND increment is CWND The method according to any one of claims 1 to 9, which is only linear additive beyond the value.
前記方法において、前記輻輳検出が、非輻輳ドロップ、例えば物理送信エラー、すなわちBERに起因する、すなわち、輻輳パケットドロップに起因しない場合に、「ポーズ」/「停止」カウントダウンインターバルは、その代わりに「0」をセットされ、すなわち、データ送信の実際の「ポーズ」/「停止」は開始されず、また、進行中のすべての先在する現在の「ポーズ」/「停止」は、カウンテッドダウンに通常に進行することを許可されることに留意されたく、輻輳検出は、例えば第3DUP ACKが高速再送信をトリガする時の最新の返されたACKのRTT又はRTOタイムアウトした時の最新の返されたACKのRTT−min(RTT)<例えば200msである場合に、輻輳以外の理由に帰することができる請求項10に記載の方法。   In the method, if the congestion detection is due to non-congestion drops, eg physical transmission errors, ie BER, ie not due to congestion packet drops, the “pause” / “stop” countdown interval is instead “ 0 is set, ie the actual “pause” / “stop” of the data transmission is not started, and all pre-existing current “pauses” / “stop” in progress are counted down Note that it is normally allowed to proceed, congestion detection is the latest returned when the 3rd DUP ACK triggers a fast retransmission, for example, the latest returned ACK RTT or RTO timed out. 11. If the ACK RTT-min (RTT) <200 ms, for example, it can be attributed to a reason other than congestion. The method described. 前記方法において、進行中の現在の「ポーズ」/「停止」が既にある場合に、後続の「実際の」輻輳イベント表示は、今や、前記現在の「ポーズ」/「停止」のインターバルを拡張し、単に、前記現在の「ポーズ」/「停止」のカウントダウンに、例えばMinimum(第3DUP ACK高速再送信をトリガする戻るACKパケットの最新のRTT若しくはRTOタイムアウトした時の戻るACKパケットの最新のRTT,300ms,max(RTT))などの新しい値をセットし/これに上書きする請求項10から11に記載の方法。   In the method, if there is already a current “pause” / “stop” in progress, the subsequent “actual” congestion event display now extends the current “pause” / “stop” interval. Simply count the current “pause” / “stop” countdown, eg, Minimum (latest RTT of return ACK packet that triggers 3rd DUP ACK fast retransmission, or latest RTT of return ACK packet when RTO times out, 12. A method according to claim 10 to 11, wherein a new value such as 300 ms, max (RTT)) is set / overwritten. 前記方法において、
ノードが前記トラバースするTCPフローのパケットのバッファリングを開始する(すなわち、転送するリンクが、今や、100%利用され、総計としてのトラバースするTCPフローの「ソースの」パケットが、バッファリングされ始める)時に送信レートを減らすように前記ソースに示すために前記トラバースするフローのソースへの3つのDUP ACKの全体を即座に生成するために変更され/ソフトウェアアップグレードされなければならない前記ネットワーク内のノードのルータ及びスイッチのいずれか1つ又はすべて又はほとんどすべて:前記3つのDUP ACKの生成は、代替案では、その代わりに、例えば前記転送するリンクが、指定された利用度レベル、例えば95%/98%...など又は指定されたある他のトリガ条件に達する時にトリガすることができる
請求項1から12のいずれか1項に記載の方法。
In said method,
The node starts buffering the packets of the traversing TCP flow (ie, the forwarding link is now 100% utilized and the “source” packets of the traversing TCP flow as a total begin to be buffered) A router of a node in the network that must be modified / software upgraded to instantly generate a whole of three DUP ACKs to the source of the traversing flow to indicate to the source to reduce the transmission rate sometimes And any one or all or almost all of the switches: the generation of the three DUP ACKs may instead be performed, for example, if the forwarding link has a specified utilization level, eg 95% / 98% . . . 13. A method according to any one of the preceding claims, which can be triggered when a certain other trigger condition is reached or the like.
前記方法において、
既存のRED及びECNは請求項1から13のいずれか1項に含まれる原理及び方式で概要を示されたようにそのアルゴリズムを同様に変更され、リアルタイムギャランティードサービス対応ネットワーク(又は、輻輳ドロップのない、及び/若しくははるかにより少ないバッファ遅延のネットワーク)を可能にする
請求項1,2,7,及び9から13のいずれか1項に記載の方法。
In said method,
Existing REDs and ECNs are similarly modified in their algorithms as outlined in the principles and methods contained in any one of claims 1 to 13 to provide real-time guaranteed service enabled networks (or congestion drops) 14. A method according to any one of claims 1, 2, 7, and 9 to 13, which enables a network with no and / or much less buffer delay.
JP2007542358A 2004-11-29 2005-11-29 Network for guaranteed services with virtually no congestion: external Internet NextGenTCP (square wave) TCP friendly SAN ready-to-run implementation Withdrawn JP2008536339A (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
GB0426176A GB0426176D0 (en) 2004-11-29 2004-11-29 Immediate ready implementation of virtually congestion free guaranteed service capable network
GB0501954A GB0501954D0 (en) 2005-01-31 2005-01-31 Immediate ready implementation of virtually congestion free guaranteed service capable network: inter-packets-intervals
GB0504782A GB0504782D0 (en) 2005-03-08 2005-03-08 Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet NextGenTCP
GB0509444A GB0509444D0 (en) 2005-03-08 2005-05-09 Immediate ready implementation of virtually congestion free guaranteed service capable network:external internet nextgentcp (square wave form)
GB0512221A GB0512221D0 (en) 2005-03-08 2005-06-15 Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgen TCP (square wave form) TCP friendly
GB0520706A GB0520706D0 (en) 2005-03-08 2005-10-12 Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgenTCP (square wave form) TCP friendly
PCT/IB2005/003580 WO2006056880A2 (en) 2004-11-29 2005-11-29 Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp (square wave form) tcp friendly san

Publications (1)

Publication Number Publication Date
JP2008536339A true JP2008536339A (en) 2008-09-04

Family

ID=39787888

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007542358A Withdrawn JP2008536339A (en) 2004-11-29 2005-11-29 Network for guaranteed services with virtually no congestion: external Internet NextGenTCP (square wave) TCP friendly SAN ready-to-run implementation

Country Status (5)

Country Link
JP (1) JP2008536339A (en)
BR (1) BRPI0518691A2 (en)
EA (1) EA200701168A1 (en)
IL (1) IL183431A0 (en)
MX (1) MX2007006395A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10075382B2 (en) 2014-12-19 2018-09-11 Fujitsu Limited Communication device, relay device, and communication method for a plurality of packets

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10075382B2 (en) 2014-12-19 2018-09-11 Fujitsu Limited Communication device, relay device, and communication method for a plurality of packets

Also Published As

Publication number Publication date
IL183431A0 (en) 2007-09-20
BRPI0518691A2 (en) 2008-12-02
EA200701168A1 (en) 2007-12-28
MX2007006395A (en) 2007-10-17

Similar Documents

Publication Publication Date Title
US20080037420A1 (en) Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp (square waveform) TCP friendly san
Ludwig et al. The Eifel algorithm: making TCP robust against spurious retransmissions
US20100020689A1 (en) Immediate ready implementation of virtually congestion free guaranteed service capable network : nextgentcp/ftp/udp intermediate buffer cyclical sack re-use
Allman et al. Ongoing TCP research related to satellites
US8462624B2 (en) Congestion management over lossy network connections
KR20070093077A (en) Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp(square wave form) tcp friendly san
JP4283589B2 (en) COMMUNICATION DEVICE, COMMUNICATION CONTROL METHOD, AND PROGRAM
Natarajan et al. Non-renegable selective acknowledgments (NR-SACKs) for SCTP
US20090316579A1 (en) Immediate Ready Implementation of Virtually Congestion Free Guaranteed Service Capable Network: External Internet Nextgentcp Nextgenftp Nextgenudps
AU2020326739A1 (en) Systems and methods for managing data packet communications
Wang et al. Use of TCP decoupling in improving TCP performance over wireless networks
Henderson TCP performance over satellite channels
Zhang et al. Optimizing TCP start-up performance
Mishra et al. Comparative Analysis of Transport Layer Congestion Control Algorithms
JP2008536339A (en) Network for guaranteed services with virtually no congestion: external Internet NextGenTCP (square wave) TCP friendly SAN ready-to-run implementation
Altahir et al. Performance evaluation of TCP congestion control mechanisms using NS-2
KR101231793B1 (en) Methods and apparatus for optimizing a tcp session for a wireless network
Kadhum et al. Fast Congestion Notification mechanism for ECN-capable routers
Raisinghani et al. Mild Aggression: A new approach for improving TCP performance in asymmetric networks
Venkataraman et al. A priority-layered approach to transport for high bandwidth-delay product networks
Hurtig et al. Improved loss detection for signaling traffic in SCTP
Buntinas Congestion control schemes for tcp/ip networks
KR101396785B1 (en) Method for performing tcp functions in network equipmment
Premalatha et al. Mitigating congestion in wireless networks by using TCP variants
Asplund et al. Partially Reliable Multimedia Transport

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20091027