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

📄 rfc2488.txt

📁 RFC 的详细文档!
💻 TXT
📖 第 1 页 / 共 4 页
字号:
3.  Lower Level Mitigations

   It is recommended that those utilizing satellite channels in their
   networks should use the following two non-TCP mechanisms which can
   increase TCP performance.  These mechanisms are Path MTU Discovery
   and forward error correction (FEC) and are outlined in the following
   two sections.

   The data link layer protocol employed over a satellite channel can
   have a large impact on performance of higher layer protocols.  While
   beyond the scope of this document, those constructing satellite



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


   networks should tune these protocols in an appropriate manner to
   ensure that the data link protocol does not limit TCP performance.
   In particular, data link layer protocols often implement a flow
   control window and retransmission mechanisms.  When the link level
   window size is too small, performance will suffer just as when the
   TCP window size is too small (see section 4.3 for a discussion of
   appropriate window sizes).  The impact that link level
   retransmissions have on TCP transfers is not currently well
   understood.  The interaction between TCP retransmissions and link
   level retransmissions is a subject for further research.

3.1 Path MTU Discovery

   Path MTU discovery [MD90] is used to determine the maximum packet
   size a connection can use on a given network path without being
   subjected to IP fragmentation.  The sender transmits a packet that is
   the appropriate size for the local network to which it is connected
   (e.g., 1500 bytes on an Ethernet) and sets the IP "don't fragment"
   (DF) bit.  If the packet is too large to be forwarded without being
   fragmented to a given channel along the network path, the gateway
   that would normally fragment the packet and forward the fragments
   will instead return an ICMP message to the originator of the packet.
   The ICMP message will indicate that the original segment could not be
   transmitted without being fragmented and will also contain the size
   of the largest packet that can be forwarded by the gateway.
   Additional information from the IESG regarding Path MTU discovery is
   available in [Kno93].

   Path MTU Discovery allows TCP to use the largest possible packet
   size, without incurring the cost of fragmentation and reassembly.
   Large packets reduce the packet overhead by sending more data bytes
   per overhead byte.  As outlined in section 4, increasing TCP's
   congestion window is segment based, rather than byte based and
   therefore, larger segments enable TCP senders to increase the
   congestion window more rapidly, in terms of bytes, than smaller
   segments.

   The disadvantage of Path MTU Discovery is that it may cause a delay
   before TCP is able to start sending data.  For example, assume a
   packet is sent with the DF bit set and one of the intervening
   gateways (G1) returns an ICMP message indicating that it cannot
   forward the segment.  At this point, the sending host reduces the
   packet size per the ICMP message returned by G1 and sends another
   packet with the DF bit set.  The packet will be forwarded by G1,
   however this does not ensure all subsequent gateways in the network
   path will be able to forward the segment.  If a second gateway (G2)
   cannot forward the segment it will return an ICMP message to the
   transmitting host and the process will be repeated.  Therefore, path



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


   MTU discovery can spend a large amount of time determining the
   maximum allowable packet size on the network path between the sender
   and receiver.  Satellite delays can aggravate this problem (consider
   the case when the channel between G1 and G2 is a satellite link).
   However, in practice, Path MTU Discovery does not consume a large
   amount of time due to wide support of common MTU values.
   Additionally, caching MTU values may be able to eliminate discovery
   time in many instances, although the exact implementation of this and
   the aging of cached values remains an open problem.

   The relationship between BER and segment size is likely to vary
   depending on the error characteristics of the given channel.  This
   relationship deserves further study, however with the use of good
   forward error correction (see section 3.2) larger segments should
   provide better performance, as with any network [MSMO97].  While the
   exact method for choosing the best MTU for a satellite link is
   outside the scope of this document, the use of Path MTU Discovery is
   recommended to allow TCP to use the largest possible MTU over the
   satellite channel.

3.2 Forward Error Correction

   A loss event in TCP is always interpreted as an indication of
   congestion and always causes TCP to reduce its congestion window
   size.  Since the congestion window grows based on returning
   acknowledgments (see section 4), TCP spends a long time recovering
   from loss when operating in satellite networks.  When packet loss is
   due to corruption, rather than congestion, TCP does not need to
   reduce its congestion window size.  However, at the present time
   detecting corruption loss is a research issue.

   Therefore, for TCP to operate efficiently, the channel
   characteristics should be such that nearly all loss is due to network
   congestion.  The use of forward error correction coding (FEC) on a
   satellite link should be used to improve the bit-error rate (BER) of
   the satellite channel.  Reducing the BER is not always possible in
   satellite environments.  However, since TCP takes a long time to
   recover from lost packets because the long propagation delay imposed
   by a satellite link delays feedback from the receiver [PS97], the
   link should be made as clean as possible to prevent TCP connections
   from receiving false congestion signals.  This document does not make
   a specific BER recommendation for TCP other than it should be as low
   as possible.

   FEC should not be expected to fix all problems associated with noisy
   satellite links.  There are some situations where FEC cannot be
   expected to solve the noise problem (such as military jamming, deep
   space missions, noise caused by rain fade, etc.).  In addition, link



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


   outages can also cause problems in satellite systems that do not
   occur as frequently in terrestrial networks.  Finally, FEC is not
   without cost.  FEC requires additional hardware and uses some of the
   available bandwidth.  It can add delay and timing jitter due to the
   processing time of the coder/decoder.

   Further research is needed into mechanisms that allow TCP to
   differentiate between congestion induced drops and those caused by
   corruption.  Such a mechanism would allow TCP to respond to
   congestion in an appropriate manner, as well as repairing corruption
   induced loss without reducing the transmission rate.  However, in the
   absence of such a mechanism packet loss must be assumed to indicate
   congestion to preserve network stability.  Incorrectly interpreting
   loss as caused by corruption and not reducing the transmission rate
   accordingly can lead to congestive collapse [Jac88] [FF98].

4.  Standard TCP Mechanisms

   This section outlines TCP mechanisms that may be necessary in
   satellite or hybrid satellite/terrestrial networks to better utilize
   the available capacity of the link.  These mechanisms may also be
   needed to fully utilize fast terrestrial channels.  Furthermore,
   these mechanisms do not fundamentally hurt performance in a shared
   terrestrial network.  Each of the following sections outlines one
   mechanism and why that mechanism may be needed.

4.1 Congestion Control

   To avoid generating an inappropriate amount of network traffic for
   the current network conditions, during a connection TCP employs four
   congestion control mechanisms [Jac88] [Jac90] [Ste97].  These
   algorithms are slow start, congestion avoidance, fast retransmit and
   fast recovery.  These algorithms are used to adjust the amount of
   unacknowledged data that can be injected into the network and to
   retransmit segments dropped by the network.

   TCP senders use two state variables to accomplish congestion control.
   The first variable is the congestion window (cwnd).  This is an upper
   bound on the amount of data the sender can inject into the network
   before receiving an acknowledgment (ACK).  The value of cwnd is
   limited to the receiver's advertised window.  The congestion window
   is increased or decreased during the transfer based on the inferred
   amount of congestion present in the network.  The second variable is
   the slow start threshold (ssthresh).  This variable determines which
   algorithm is used to increase the value of cwnd.  If cwnd is less
   than ssthresh the slow start algorithm is used to increase the value
   of cwnd.  However, if cwnd is greater than or equal to (or just
   greater than in some TCP implementations) ssthresh the congestion



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


   avoidance algorithm is used.  The initial value of ssthresh is the
   receiver's advertised window size.  Furthermore, the value of
   ssthresh is set when congestion is detected.

   The four congestion control algorithms are outlined below, followed
   by a brief discussion of the impact of satellite environments on
   these algorithms.

4.1.1 Slow Start and Congestion Avoidance

   When a host begins sending data on a TCP connection the host has no
   knowledge of the current state of the network between itself and the
   data receiver.  In order to avoid transmitting an inappropriately
   large burst of traffic, the data sender is required to use the slow
   start algorithm at the beginning of a transfer [Jac88] [Bra89]
   [Ste97].  Slow start begins by initializing cwnd to 1 segment
   (although an IETF experimental mechanism would increase the size of
   the initial window to roughly 4 Kbytes [AFP98]) and ssthresh to the
   receiver's advertised window.  This forces TCP to transmit one
   segment and wait for the corresponding ACK.  For each ACK that is
   received during slow start, the value of cwnd is increased by 1
   segment.  For example, after the first ACK is received cwnd will be 2
   segments and the sender will be allowed to transmit 2 data packets.
   This continues until cwnd meets or exceeds ssthresh (or, in some
   implementations when cwnd equals ssthresh), or loss is detected.

   When the value of cwnd is greater than or equal to (or equal to in
   certain implementations) ssthresh the congestion avoidance algorithm
   is used to increase cwnd [Jac88] [Bra89] [Ste97].  This algorithm
   increases the size of cwnd more slowly than does slow start.
   Congestion avoidance is used to slowly probe the network for
   additional capacity.  During congestion avoidance, cwnd is increased
   by 1/cwnd for each incoming ACK.  Therefore, if one ACK is received
   for every data segment, cwnd will increase by roughly 1 segment per
   round-trip time (RTT).

   The slow start and congestion control algorithms can force poor
   utilization of the available channel bandwidth when using long-delay
   satellite networks [All97].  For example, transmission begins with
   the transmission of one segment.  After the first segment is
   transmitted the data sender is forced to wait for the corresponding
   ACK.  When using a GSO satellite this leads to an idle time of
   roughly 500 ms when no useful work is being accomplished.  Therefore,
   slow start takes more real time over GSO satellites than on typical
   terrestrial channels.  This holds for congestion avoidance, as well
   [All97].  This is precisely why Path MTU Discovery is an important
   algorithm.  While the number of segments we transmit is determined by
   the congestion control algorithms, the size of these segments is not.



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


   Therefore, using larger packets will enable TCP to send more data per
   segment which yields better channel utilization.

4.1.2 Fast Retransmit and Fast Recovery

   TCP's default mechanism to detect dropped segments is a timeout
   [Pos81].  In other words, if the sender does not receive an ACK for a
   given packet within the expected amount of time the segment will be
   retransmitted.  The retransmission timeout (RTO) is based on
   observations of the RTT.  In addition to retransmitting a segment
   when the RTO expires, TCP also uses the lost segment as an indication
   of congestion in the network.  In response to the congestion, the
   value of ssthresh is set to half of the cwnd and the value of cwnd is
   then reduced to 1 segment.  This triggers the use of the slow start
   algorithm to increase cwnd until the value of cwnd reaches half of
   its value when congestion was detected.  After the slow start phase,
   the congestion avoidance algorithm is used to probe the network for
   additional capacity.

   TCP ACKs always acknowledge the highest in-order segment that has
   arrived.  Therefore an ACK for segment X also effectively ACKs all
   segments < X.  Furthermore, if a segment arrives out-of-order the ACK
   triggered will be for the highest in-order segment, rather than the
   segment that just arrived.  For example, assume segment 11 has been

⌨️ 快捷键说明

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