⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2488.txt

📁 RFC 的详细文档!
💻 TXT
📖 第 1 页 / 共 4 页
字号:
   dropped somewhere in the network and segment 12 arrives at the
   receiver.  The receiver is going to send a duplicate ACK covering
   segment 10 (and all previous segments).

   The fast retransmit algorithm uses these duplicate ACKs to detect
   lost segments.  If 3 duplicate ACKs arrive at the data originator,
   TCP assumes that a segment has been lost and retransmits the missing
   segment without waiting for the RTO to expire.  After a segment is
   resent using fast retransmit, the fast recovery algorithm is used to
   adjust the congestion window.  First, the value of ssthresh is set to
   half of the value of cwnd.  Next, the value of cwnd is halved.
   Finally, the value of cwnd is artificially increased by 1 segment for
   each duplicate ACK that has arrived.  The artificial inflation can be
   done because each duplicate ACK represents 1 segment that has left
   the network.  When the cwnd permits, TCP is able to transmit new
   data.  This allows TCP to keep data flowing through the network at
   half the rate it was when loss was detected.  When an ACK for the
   retransmitted packet arrives, the value of cwnd is reduced back to
   ssthresh (half the value of cwnd when the congestion was detected).








Allman, et. al.          Best Current Practice                 [Page 10]

RFC 2488         Enhancing TCP Over Satellite Channels      January 1999


   Generally, fast retransmit can resend only one segment per window of
   data sent.  When multiple segments are lost in a given window of
   data, one of the segments will be resent using fast retransmit and
   the rest of the dropped segments must usually wait for the RTO to
   expire, which causes TCP to revert to slow start.

   TCP's response to congestion differs based on the way the congestion
   is detected.  If the retransmission timer causes a packet to be
   resent, TCP drops ssthresh to half the current cwnd and reduces the
   value of cwnd to 1 segment (thus triggering slow start).  However, if
   a segment is resent via fast retransmit both ssthresh and cwnd are
   set to half the current value of cwnd and congestion avoidance is
   used to send new data.  The difference is that when retransmitting
   due to duplicate ACKs, TCP knows that packets are still flowing
   through the network and can therefore infer that the congestion is
   not that bad.  However, when resending a packet due to the expiration
   of the retransmission timer, TCP cannot infer anything about the
   state of the network and therefore must proceed conservatively by
   sending new data using the slow start algorithm.

   Note that the fast retransmit/fast recovery algorithms, as discussed
   above can lead to a phenomenon that allows multiple fast retransmits
   per window of data [Flo94].  This can reduce the size of the
   congestion window multiple times in response to a single "loss
   event".  The problem is particularly noticeable in connections that
   utilize large congestion windows, since these connections are able to
   inject enough new segments into the network during recovery to
   trigger the multiple fast retransmits.  Reducing cwnd multiple times
   for a single loss event may hurt performance [GJKFV98].

   The best way to improve the fast retransmit/fast recovery algorithms
   is to use a selective acknowledgment (SACK) based algorithm for loss
   recovery.  As discussed below, these algorithms are generally able to
   quickly recover from multiple lost segments without needlessly
   reducing the value of cwnd.  In the absence of SACKs, the fast
   retransmit and fast recovery algorithms should be used.  Fixing these
   algorithms to achieve better performance in the face of multiple fast
   retransmissions is beyond the scope of this document.  Therefore, TCP
   implementers are advised to implement the current version of fast
   retransmit/fast recovery outlined in RFC 2001 [Ste97] or subsequent
   versions of RFC 2001.

4.1.3 Congestion Control in Satellite Environment

   The above algorithms have a negative impact on the performance of
   individual TCP connection's performance because the algorithms slowly
   probe the network for additional capacity, which in turn wastes
   bandwidth.  This is especially true over long-delay satellite



Allman, et. al.          Best Current Practice                 [Page 11]

RFC 2488         Enhancing TCP Over Satellite Channels      January 1999


   channels because of the large amount of time required for the sender
   to obtain feedback from the receiver [All97] [AHKO97].  However, the
   algorithms are necessary to prevent congestive collapse in a shared
   network [Jac88].  Therefore, the negative impact on a given
   connection is more than offset by the benefit to the entire network.

4.2 Large TCP Windows

   The standard maximum TCP window size (65,535 bytes) is not adequate
   to allow a single TCP connection to utilize the entire bandwidth
   available on some satellite channels.  TCP throughput is limited by
   the following formula [Pos81]:

                      throughput = window size / RTT

   Therefore, using the maximum window size of 65,535 bytes and a
   geosynchronous satellite channel RTT of 560 ms [Kru95] the maximum
   throughput is limited to:

         throughput = 65,535 bytes / 560 ms = 117,027 bytes/second

   Therefore, a single standard TCP connection cannot fully utilize, for
   example, T1 rate (approximately 192,000 bytes/second) GSO satellite
   channels.  However, TCP has been extended to support larger windows
   [JBB92].  The window scaling options outlined in [JBB92] should be
   used in satellite environments, as well as the companion algorithms
   PAWS (Protection Against Wrapped Sequence space) and RTTM (Round-Trip
   Time Measurements).

   It should be noted that for a satellite link shared among many flows,
   large windows may not be necessary.  For instance, two long-lived TCP
   connections each using a window of 65,535 bytes, as in the above
   example, can fully utilize a T1 GSO satellite channel.

   Using large windows often requires both client and server
   applications or TCP stacks to be hand tuned (usually by an expert) to
   utilize large windows.  Research into operating system mechanisms
   that are able to adjust the buffer capacity as dictated by the
   current network conditions is currently underway [SMM98].  This will
   allow stock TCP implementations and applications to better utilize
   the capacity provided by the underlying network.

4.3 Acknowledgment Strategies

   There are two standard methods that can be used by TCP receivers to
   generated acknowledgments.  The method outlined in [Pos81] generates
   an ACK for each incoming segment.  [Bra89] states that hosts SHOULD
   use "delayed acknowledgments".  Using this algorithm, an ACK is



Allman, et. al.          Best Current Practice                 [Page 12]

RFC 2488         Enhancing TCP Over Satellite Channels      January 1999


   generated for every second full-sized segment, or if a second full-
   size segment does not arrive within a given timeout (which must not
   exceed 500 ms).  The congestion window is increased based on the
   number of incoming ACKs and delayed ACKs reduce the number of ACKs
   being sent by the receiver.  Therefore, cwnd growth occurs much more
   slowly when using delayed ACKs compared to the case when the receiver
   ACKs each incoming segment [All98].

   A tempting "fix" to the problem caused by delayed ACKs is to simply
   turn the mechanism off and let the receiver ACK each incoming
   segment.  However, this is not recommended.  First, [Bra89] says that
   a TCP receiver SHOULD generate delayed ACKs.  And, second, increasing
   the number of ACKs by a factor of two in a shared network may have
   consequences that are not yet understood.  Therefore, disabling
   delayed ACKs is still a research issue and thus, at this time TCP
   receivers should continue to generate delayed ACKs, per [Bra89].

4.4 Selective Acknowledgments

   Selective acknowledgments (SACKs) [MMFR96] allow TCP receivers to
   inform TCP senders exactly which packets have arrived.  SACKs allow
   TCP to recover more quickly from lost segments, as well as avoiding
   needless retransmissions.

   The fast retransmit algorithm can generally only repair one loss per
   window of data.  When multiple losses occur, the sender generally
   must rely on a timeout to determine which segment needs to be
   retransmitted next.  While waiting for a timeout, the data segments
   and their acknowledgments drain from the network.  In the absence of
   incoming ACKs to clock new segments into the network, the sender must
   use the slow start algorithm to restart transmission.  As discussed
   above, the slow start algorithm can be time consuming over satellite
   channels.  When SACKs are employed, the sender is generally able to
   determine which segments need to be retransmitted in the first RTT
   following loss detection.  This allows the sender to continue to
   transmit segments (retransmissions and new segments, if appropriate)
   at an appropriate rate and therefore sustain the ACK clock.  This
   avoids a costly slow start period following multiple lost segments.
   Generally SACK is able to retransmit all dropped segments within the
   first RTT following the loss detection.  [MM96] and [FF96] discuss
   specific congestion control algorithms that rely on SACK information
   to determine which segments need to be retransmitted and when it is
   appropriate to transmit those segments.  Both these algorithms follow
   the basic principles of congestion control outlined in [Jac88] and
   reduce the window by half when congestion is detected.






Allman, et. al.          Best Current Practice                 [Page 13]

RFC 2488         Enhancing TCP Over Satellite Channels      January 1999


5.  Mitigation Summary

   Table 1 summarizes the mechanisms that have been discussed in this
   document.  Those mechanisms denoted "Recommended" are IETF standards
   track mechanisms that are recommended by the authors for use in
   networks containing satellite channels.  Those mechanisms marked
   "Required' have been defined by the IETF as required for hosts using
   the shared Internet [Bra89].  Along with the section of this document
   containing the discussion of each mechanism, we note where the
   mechanism needs to be implemented.  The codes listed in the last
   column are defined as follows: "S" for the data sender, "R" for the
   data receiver and "L" for the satellite link.

    Mechanism                 Use          Section      Where
   +------------------------+-------------+------------+--------+
   | Path-MTU Discovery     | Recommended | 3.1        | S      |
   | FEC                    | Recommended | 3.2        | L      |
   | TCP Congestion Control |             |            |        |
   |   Slow Start           | Required    | 4.1.1      | S      |
   |   Congestion Avoidance | Required    | 4.1.1      | S      |
   |   Fast Retransmit      | Recommended | 4.1.2      | S      |
   |   Fast Recovery        | Recommended | 4.1.2      | S      |
   | TCP Large Windows      |             |            |        |
   |   Window Scaling       | Recommended | 4.2        | S,R    |
   |   PAWS                 | Recommended | 4.2        | S,R    |
   |   RTTM                 | Recommended | 4.2        | S,R    |
   | TCP SACKs              | Recommended | 4.4        | S,R    |
   +------------------------+-------------+------------+--------+
                                Table 1

   Satellite users should check with their TCP vendors (implementors) to
   ensure the recommended mechanisms are supported in their stack in
   current and/or future versions.  Alternatively, the Pittsburgh
   Supercomputer Center tracks TCP implementations and which extensions
   they support, as well as providing guidance on tuning various TCP
   implementations [PSC].

   Research into improving the efficiency of TCP over satellite channels
   is ongoing and will be summarized in a planned memo along with other
   considerations, such as satellite network architectures.

6.  Security Considerations

   The authors believe that the recommendations contained in this memo
   do not alter the security implications of TCP.  However, when using a
   broadcast medium such as satellites links to transfer user data
   and/or network control traffic, one should be aware of the intrinsic
   security implications of such technology.



Allman, et. al.          Best Current Practice                 [Page 14]

RFC 2488         Enhancing TCP Over Satellite Channels      January 1999


   Eavesdropping on network links is a form of passive attack that, if
   performed successfully, could reveal critical traffic control
   information that would jeopardize the proper functioning of the
   network.  These attacks could reduce the ability of the network to
   provide data transmission services efficiently.  Eavesdroppers could
   also compromise the privacy of user data, especially if end-to-end
   security mechanisms are not in use.  While passive monitoring can
   occur on any network, the wireless broadcast nature of satellite
   links allows reception of signals without physical connection to the
   network which enables monitoring to be conducted without detection.
   However, it should be noted that the resources needed to monitor a

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -