2580 lines
108 KiB
Plaintext
2580 lines
108 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group M. Allman, Editor
|
||
Request for Comments: 2760 NASA Glenn Research Center/BBN Technologies
|
||
Category: Informational S. Dawkins
|
||
Nortel
|
||
D. Glover
|
||
J. Griner
|
||
D. Tran
|
||
NASA Glenn Research Center
|
||
T. Henderson
|
||
University of California at Berkeley
|
||
J. Heidemann
|
||
J. Touch
|
||
University of Southern California/ISI
|
||
H. Kruse
|
||
S. Ostermann
|
||
Ohio University
|
||
K. Scott
|
||
The MITRE Corporation
|
||
J. Semke
|
||
Pittsburgh Supercomputing Center
|
||
February 2000
|
||
|
||
|
||
Ongoing TCP Research Related to Satellites
|
||
|
||
|
||
Status of this Memo
|
||
|
||
This memo provides information for the Internet community. It does
|
||
not specify an Internet standard of any kind. Distribution of this
|
||
memo is unlimited.
|
||
|
||
Copyright Notice
|
||
|
||
Copyright (C) The Internet Society (2000). All Rights Reserved.
|
||
|
||
Abstract
|
||
|
||
This document outlines possible TCP enhancements that may allow TCP
|
||
to better utilize the available bandwidth provided by networks
|
||
containing satellite links. The algorithms and mechanisms outlined
|
||
have not been judged to be mature enough to be recommended by the
|
||
IETF. The goal of this document is to educate researchers as to the
|
||
current work and progress being done in TCP research related to
|
||
satellite networks.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 1]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
Table of Contents
|
||
|
||
1 Introduction. . . . . . . . . . . . . . . . . . . . 2
|
||
2 Satellite Architectures . . . . . . . . . . . . . . 3
|
||
2.1 Asymmetric Satellite Networks . . . . . . . . . . . 3
|
||
2.2 Satellite Link as Last Hop. . . . . . . . . . . . . 3
|
||
2.3 Hybrid Satellite Networks . . . . . . . . . . . 4
|
||
2.4 Point-to-Point Satellite Networks . . . . . . . . . 4
|
||
2.5 Multiple Satellite Hops . . . . . . . . . . . . . . 4
|
||
3 Mitigations . . . . . . . . . . . . . . . . . . . . 4
|
||
3.1 TCP For Transactions. . . . . . . . . . . . . . . . 4
|
||
3.2 Slow Start. . . . . . . . . . . . . . . . . . . . . 5
|
||
3.2.1 Larger Initial Window . . . . . . . . . . . . . . . 6
|
||
3.2.2 Byte Counting . . . . . . . . . . . . . . . . . . . 7
|
||
3.2.3 Delayed ACKs After Slow Start . . . . . . . . . . . 9
|
||
3.2.4 Terminating Slow Start. . . . . . . . . . . . . . . 11
|
||
3.3 Loss Recovery . . . . . . . . . . . . . . . . . . . 12
|
||
3.3.1 Non-SACK Based Mechanisms . . . . . . . . . . . . . 12
|
||
3.3.2 SACK Based Mechanisms . . . . . . . . . . . . . . . 13
|
||
3.3.3 Explicit Congestion Notification. . . . . . . . . . 16
|
||
3.3.4 Detecting Corruption Loss . . . . . . . . . . . . . 18
|
||
3.4 Congestion Avoidance. . . . . . . . . . . . . . . . 21
|
||
3.5 Multiple Data Connections . . . . . . . . . . . . . 22
|
||
3.6 Pacing TCP Segments . . . . . . . . . . . . . . . . 24
|
||
3.7 TCP Header Compression. . . . . . . . . . . . . . . 26
|
||
3.8 Sharing TCP State Among Similar Connections . . . . 29
|
||
3.9 ACK Congestion Control. . . . . . . . . . . . . . . 32
|
||
3.10 ACK Filtering . . . . . . . . . . . . . . . . . . . 34
|
||
4 Conclusions . . . . . . . . . . . . . . . . . . . . 36
|
||
5 Security Considerations . . . . . . . . . . . . . . 36
|
||
6 Acknowledgments . . . . . . . . . . . . . . . . . . 37
|
||
7 References. . . . . . . . . . . . . . . . . . . . . 37
|
||
8 Authors' Addresses. . . . . . . . . . . . . . . . . 43
|
||
9 Full Copyright Statement. . . . . . . . . . . . . . 46
|
||
|
||
1 Introduction
|
||
|
||
This document outlines mechanisms that may help the Transmission
|
||
Control Protocol (TCP) [Pos81] better utilize the bandwidth provided
|
||
by long-delay satellite environments. These mechanisms may also help
|
||
in other environments or for other protocols. The proposals outlined
|
||
in this document are currently being studied throughout the research
|
||
community. Therefore, these mechanisms are not mature enough to be
|
||
recommended for wide-spread use by the IETF. However, some of these
|
||
mechanisms may be safely used today. It is hoped that this document
|
||
will stimulate further study into the described mechanisms. If, at
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 2]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
some point, the mechanisms discussed in this memo prove to be safe
|
||
and appropriate to be recommended for general use, the appropriate
|
||
IETF documents will be written.
|
||
|
||
It should be noted that non-TCP mechanisms that help performance over
|
||
satellite links do exist (e.g., application-level changes, queueing
|
||
disciplines, etc.). However, outlining these non-TCP mitigations is
|
||
beyond the scope of this document and therefore is left as future
|
||
work. Additionally, there are a number of mitigations to TCP's
|
||
performance problems that involve very active intervention by
|
||
gateways along the end-to-end path from the sender to the receiver.
|
||
Documenting the pros and cons of such solutions is also left as
|
||
future work.
|
||
|
||
2 Satellite Architectures
|
||
|
||
Specific characteristics of satellite links and the impact these
|
||
characteristics have on TCP are presented in RFC 2488 [AGS99]. This
|
||
section discusses several possible topologies where satellite links
|
||
may be integrated into the global Internet. The mitigation outlined
|
||
in section 3 will include a discussion of which environment the
|
||
mechanism is expected to benefit.
|
||
|
||
2.1 Asymmetric Satellite Networks
|
||
|
||
Some satellite networks exhibit a bandwidth asymmetry, a larger data
|
||
rate in one direction than the reverse direction, because of limits
|
||
on the transmission power and the antenna size at one end of the
|
||
link. Meanwhile, some other satellite systems are unidirectional and
|
||
use a non-satellite return path (such as a dialup modem link). The
|
||
nature of most TCP traffic is asymmetric with data flowing in one
|
||
direction and acknowledgments in opposite direction. However, the
|
||
term asymmetric in this document refers to different physical
|
||
capacities in the forward and return links. Asymmetry has been shown
|
||
to be a problem for TCP [BPK97,BPK98].
|
||
|
||
2.2 Satellite Link as Last Hop
|
||
|
||
Satellite links that provide service directly to end users, as
|
||
opposed to satellite links located in the middle of a network, may
|
||
allow for specialized design of protocols used over the last hop.
|
||
Some satellite providers use the satellite link as a shared high
|
||
speed downlink to users with a lower speed, non-shared terrestrial
|
||
link that is used as a return link for requests and acknowledgments.
|
||
Many times this creates an asymmetric network, as discussed above.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 3]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
2.3 Hybrid Satellite Networks
|
||
|
||
In the more general case, satellite links may be located at any point
|
||
in the network topology. In this case, the satellite link acts as
|
||
just another link between two gateways. In this environment, a given
|
||
connection may be sent over terrestrial links (including terrestrial
|
||
wireless), as well as satellite links. On the other hand, a
|
||
connection could also travel over only the terrestrial network or
|
||
only over the satellite portion of the network.
|
||
|
||
2.4 Point-to-Point Satellite Networks
|
||
|
||
In point-to-point satellite networks, the only hop in the network is
|
||
over the satellite link. This pure satellite environment exhibits
|
||
only the problems associated with the satellite links, as outlined in
|
||
[AGS99]. Since this is a private network, some mitigations that are
|
||
not appropriate for shared networks can be considered.
|
||
|
||
2.5 Multiple Satellite Hops
|
||
|
||
In some situations, network traffic may traverse multiple satellite
|
||
hops between the source and the destination. Such an environment
|
||
aggravates the satellite characteristics described in [AGS99].
|
||
|
||
3 Mitigations
|
||
|
||
The following sections will discuss various techniques for mitigating
|
||
the problems TCP faces in the satellite environment. Each of the
|
||
following sections will be organized as follows: First, each
|
||
mitigation will be briefly outlined. Next, research work involving
|
||
the mechanism in question will be briefly discussed. Next the
|
||
implementation issues of the mechanism will be presented (including
|
||
whether or not the particular mechanism presents any dangers to
|
||
shared networks). Then a discussion of the mechanism's potential
|
||
with regard to the topologies outlined above is given. Finally, the
|
||
relationships and possible interactions with other TCP mechanisms are
|
||
outlined. The reader is expected to be familiar with the TCP
|
||
terminology used in [AGS99].
|
||
|
||
3.1 TCP For Transactions
|
||
|
||
3.1.1 Mitigation Description
|
||
|
||
TCP uses a three-way handshake to setup a connection between two
|
||
hosts [Pos81]. This connection setup requires 1-1.5 round-trip times
|
||
(RTTs), depending upon whether the data sender started the connection
|
||
actively or passively. This startup time can be eliminated by using
|
||
TCP extensions for transactions (T/TCP) [Bra94]. After the first
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 4]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
connection between a pair of hosts is established, T/TCP is able to
|
||
bypass the three-way handshake, allowing the data sender to begin
|
||
transmitting data in the first segment sent (along with the SYN).
|
||
This is especially helpful for short request/response traffic, as it
|
||
saves a potentially long setup phase when no useful data is being
|
||
transmitted.
|
||
|
||
3.1.2 Research
|
||
|
||
T/TCP is outlined and analyzed in [Bra92,Bra94].
|
||
|
||
3.1.3 Implementation Issues
|
||
|
||
T/TCP requires changes in the TCP stacks of both the data sender and
|
||
the data receiver. While T/TCP is safe to implement in shared
|
||
networks from a congestion control perspective, several security
|
||
implications of sending data in the first data segment have been
|
||
identified [ddKI99].
|
||
|
||
3.1.4 Topology Considerations
|
||
|
||
It is expected that T/TCP will be equally beneficial in all
|
||
environments outlined in section 2.
|
||
|
||
3.1.5 Possible Interaction and Relationships with Other Research
|
||
|
||
T/TCP allows data transfer to start more rapidly, much like using a
|
||
larger initial congestion window (see section 3.2.1), delayed ACKs
|
||
after slow start (section 3.2.3) or byte counting (section 3.2.2).
|
||
|
||
3.2 Slow Start
|
||
|
||
The slow start algorithm is used to gradually increase the size of
|
||
TCP's congestion window (cwnd) [Jac88,Ste97,APS99]. The algorithm is
|
||
an important safe-guard against transmitting an inappropriate amount
|
||
of data into the network when the connection starts up. However,
|
||
slow start can also waste available network capacity, especially in
|
||
long-delay networks [All97a,Hay97]. Slow start is particularly
|
||
inefficient for transfers that are short compared to the
|
||
delay*bandwidth product of the network (e.g., WWW transfers).
|
||
|
||
Delayed ACKs are another source of wasted capacity during the slow
|
||
start phase. RFC 1122 [Bra89] suggests data receivers refrain from
|
||
ACKing every incoming data segment. However, every second full-sized
|
||
segment should be ACKed. If a second full-sized segment does not
|
||
arrive within a given timeout, an ACK must be generated (this timeout
|
||
cannot exceed 500 ms). Since the data sender increases the size of
|
||
cwnd based on the number of arriving ACKs, reducing the number of
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 5]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
ACKs slows the cwnd growth rate. In addition, when TCP starts
|
||
sending, it sends 1 segment. When using delayed ACKs a second
|
||
segment must arrive before an ACK is sent. Therefore, the receiver
|
||
is always forced to wait for the delayed ACK timer to expire before
|
||
ACKing the first segment, which also increases the transfer time.
|
||
|
||
Several proposals have suggested ways to make slow start less time
|
||
consuming. These proposals are briefly outlined below and references
|
||
to the research work given.
|
||
|
||
3.2.1 Larger Initial Window
|
||
|
||
3.2.1.1 Mitigation Description
|
||
|
||
One method that will reduce the amount of time required by slow start
|
||
(and therefore, the amount of wasted capacity) is to increase the
|
||
initial value of cwnd. An experimental TCP extension outlined in
|
||
[AFP98] allows the initial size of cwnd to be increased from 1
|
||
segment to that given in equation (1).
|
||
|
||
min (4*MSS, max (2*MSS, 4380 bytes)) (1)
|
||
|
||
By increasing the initial value of cwnd, more packets are sent during
|
||
the first RTT of data transmission, which will trigger more ACKs,
|
||
allowing the congestion window to open more rapidly. In addition, by
|
||
sending at least 2 segments initially, the first segment does not
|
||
need to wait for the delayed ACK timer to expire as is the case when
|
||
the initial size of cwnd is 1 segment (as discussed above).
|
||
Therefore, the value of cwnd given in equation 1 saves up to 3 RTTs
|
||
and a delayed ACK timeout when compared to an initial cwnd of 1
|
||
segment.
|
||
|
||
Also, we note that RFC 2581 [APS99], a standards-track document,
|
||
allows a TCP to use an initial cwnd of up to 2 segments. This change
|
||
is highly recommended for satellite networks.
|
||
|
||
3.2.1.2 Research
|
||
|
||
Several researchers have studied the use of a larger initial window
|
||
in various environments. [Nic97] and [KAGT98] show a reduction in
|
||
WWW page transfer time over hybrid fiber coax (HFC) and satellite
|
||
links respectively. Furthermore, it has been shown that using an
|
||
initial cwnd of 4 segments does not negatively impact overall
|
||
performance over dialup modem links with a small number of buffers
|
||
[SP98]. [AHO98] shows an improvement in transfer time for 16 KB
|
||
files across the Internet and dialup modem links when using a larger
|
||
initial value for cwnd. However, a slight increase in dropped
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 6]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
segments was also shown. Finally, [PN98] shows improved transfer
|
||
time for WWW traffic in simulations with competing traffic, in
|
||
addition to a small increase in the drop rate.
|
||
|
||
3.2.1.3 Implementation Issues
|
||
|
||
The use of a larger initial cwnd value requires changes to the
|
||
sender's TCP stack. Using an initial congestion window of 2 segments
|
||
is allowed by RFC 2581 [APS99]. Using an initial congestion window
|
||
of 3 or 4 segments is not expected to present any danger of
|
||
congestion collapse [AFP98], however may degrade performance in some
|
||
networks.
|
||
|
||
3.2.1.4 Topology Considerations
|
||
|
||
It is expected that the use of a large initial window would be
|
||
equally beneficial to all network architectures outlined in section
|
||
2.
|
||
|
||
3.2.1.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Using a fixed larger initial congestion window decreases the impact
|
||
of a long RTT on transfer time (especially for short transfers) at
|
||
the cost of bursting data into a network with unknown conditions. A
|
||
mechanism that mitigates bursts may make the use of a larger initial
|
||
congestion window more appropriate (e.g., limiting the size of line-
|
||
rate bursts [FF96] or pacing the segments in a burst [VH97a]).
|
||
|
||
Also, using delayed ACKs only after slow start (as outlined in
|
||
section 3.2.3) offers an alternative way to immediately ACK the first
|
||
segment of a transfer and open the congestion window more rapidly.
|
||
Finally, using some form of TCP state sharing among a number of
|
||
connections (as discussed in 3.8) may provide an alternative to using
|
||
a fixed larger initial window.
|
||
|
||
3.2.2 Byte Counting
|
||
|
||
3.2.2.1 Mitigation Description
|
||
|
||
As discussed above, the wide-spread use of delayed ACKs increases the
|
||
time needed by a TCP sender to increase the size of the congestion
|
||
window during slow start. This is especially harmful to flows
|
||
traversing long-delay GEO satellite links. One mechanism that has
|
||
been suggested to mitigate the problems caused by delayed ACKs is the
|
||
use of "byte counting", rather than standard ACK counting
|
||
[All97a,All98]. Using standard ACK counting, the congestion window
|
||
is increased by 1 segment for each ACK received during slow start.
|
||
However, using byte counting the congestion window increase is based
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 7]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
on the number of previously unacknowledged bytes covered by each
|
||
incoming ACK, rather than on the number of ACKs received. This makes
|
||
the increase relative to the amount of data transmitted, rather than
|
||
being dependent on the ACK interval used by the receiver.
|
||
|
||
Two forms of byte counting are studied in [All98]. The first is
|
||
unlimited byte counting (UBC). This mechanism simply uses the number
|
||
of previously unacknowledged bytes to increase the congestion window
|
||
each time an ACK arrives. The second form is limited byte counting
|
||
(LBC). LBC limits the amount of cwnd increase to 2 segments. This
|
||
limit throttles the size of the burst of data sent in response to a
|
||
"stretch ACK" [Pax97]. Stretch ACKs are acknowledgments that cover
|
||
more than 2 segments of previously unacknowledged data. Stretch ACKs
|
||
can occur by design [Joh95] (although this is not standard), due to
|
||
implementation bugs [All97b,PADHV99] or due to ACK loss. [All98]
|
||
shows that LBC prevents large line-rate bursts when compared to UBC,
|
||
and therefore offers fewer dropped segments and better performance.
|
||
In addition, UBC causes large bursts during slow start based loss
|
||
recovery due to the large cumulative ACKs that can arrive during loss
|
||
recovery. The behavior of UBC during loss recovery can cause large
|
||
decreases in performance and [All98] strongly recommends UBC not be
|
||
deployed without further study into mitigating the large bursts.
|
||
|
||
Note: The standards track RFC 2581 [APS99] allows a TCP to use byte
|
||
counting to increase cwnd during congestion avoidance, however not
|
||
during slow start.
|
||
|
||
3.2.2.2 Research
|
||
|
||
Using byte counting, as opposed to standard ACK counting, has been
|
||
shown to reduce the amount of time needed to increase the value of
|
||
cwnd to an appropriate size in satellite networks [All97a]. In
|
||
addition, [All98] presents a simulation comparison of byte counting
|
||
and the standard cwnd increase algorithm in uncongested networks and
|
||
networks with competing traffic. This study found that the limited
|
||
form of byte counting outlined above can improve performance, while
|
||
also increasing the drop rate slightly.
|
||
|
||
[BPK97,BPK98] also investigated unlimited byte counting in
|
||
conjunction with various ACK filtering algorithms (discussed in
|
||
section 3.10) in asymmetric networks.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 8]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.2.2.3 Implementation Issues
|
||
|
||
Changing from ACK counting to byte counting requires changes to the
|
||
data sender's TCP stack. Byte counting violates the algorithm for
|
||
increasing the congestion window outlined in RFC 2581 [APS99] (by
|
||
making congestion window growth more aggressive during slow start)
|
||
and therefore should not be used in shared networks.
|
||
|
||
3.2.2.4 Topology Considerations
|
||
|
||
It has been suggested by some (and roundly criticized by others) that
|
||
byte counting will allow TCP to provide uniform cwnd increase,
|
||
regardless of the ACKing behavior of the receiver. In addition, byte
|
||
counting also mitigates the retarded window growth provided by
|
||
receivers that generate stretch ACKs because of the capacity of the
|
||
return link, as discussed in [BPK97,BPK98]. Therefore, this change
|
||
is expected to be especially beneficial to asymmetric networks.
|
||
|
||
3.2.2.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Unlimited byte counting should not be used without a method to
|
||
mitigate the potentially large line-rate bursts the algorithm can
|
||
cause. Also, LBC may send bursts that are too large for the given
|
||
network conditions. In this case, LBC may also benefit from some
|
||
algorithm that would lessen the impact of line-rate bursts of
|
||
segments. Also note that using delayed ACKs only after slow start
|
||
(as outlined in section 3.2.3) negates the limited byte counting
|
||
algorithm because each ACK covers only one segment during slow start.
|
||
Therefore, both ACK counting and byte counting yield the same
|
||
increase in the congestion window at this point (in the first RTT).
|
||
|
||
3.2.3 Delayed ACKs After Slow Start
|
||
|
||
3.2.3.1 Mitigation Description
|
||
|
||
As discussed above, TCP senders use the number of incoming ACKs to
|
||
increase the congestion window during slow start. And, since delayed
|
||
ACKs reduce the number of ACKs returned by the receiver by roughly
|
||
half, the rate of growth of the congestion window is reduced. One
|
||
proposed solution to this problem is to use delayed ACKs only after
|
||
the slow start (DAASS) phase. This provides more ACKs while TCP is
|
||
aggressively increasing the congestion window and less ACKs while TCP
|
||
is in steady state, which conserves network resources.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 9]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.2.3.2 Research
|
||
|
||
[All98] shows that in simulation, using delayed ACKs after slow start
|
||
(DAASS) improves transfer time when compared to a receiver that
|
||
always generates delayed ACKs. However, DAASS also slightly
|
||
increases the loss rate due to the increased rate of cwnd growth.
|
||
|
||
3.2.3.3 Implementation Issues
|
||
|
||
The major problem with DAASS is in the implementation. The receiver
|
||
has to somehow know when the sender is using the slow start
|
||
algorithm. The receiver could implement a heuristic that attempts to
|
||
watch the change in the amount of data being received and change the
|
||
ACKing behavior accordingly. Or, the sender could send a message (a
|
||
flipped bit in the TCP header, perhaps) indicating that it was using
|
||
slow start. The implementation of DAASS is, therefore, an open
|
||
issue.
|
||
|
||
Using DAASS does not violate the TCP congestion control specification
|
||
[APS99]. However, the standards (RFC 2581 [APS99]) currently
|
||
recommend using delayed acknowledgments and DAASS goes (partially)
|
||
against this recommendation.
|
||
|
||
3.2.3.4 Topology Considerations
|
||
|
||
DAASS should work equally well in all scenarios presented in section
|
||
2. However, in asymmetric networks it may aggravate ACK congestion
|
||
in the return link, due to the increased number of ACKs (see sections
|
||
3.9 and 3.10 for a more detailed discussion of ACK congestion).
|
||
|
||
3.2.3.5 Possible Interaction and Relationships with Other Research
|
||
|
||
DAASS has several possible interactions with other proposals made in
|
||
the research community. DAASS can aggravate congestion on the path
|
||
between the data receiver and the data sender due to the increased
|
||
number of returning acknowledgments. This can have an especially
|
||
adverse effect on asymmetric networks that are prone to experiencing
|
||
ACK congestion. As outlined in sections 3.9 and 3.10, several
|
||
mitigations have been proposed to reduce the number of ACKs that are
|
||
passed over a low-bandwidth return link. Using DAASS will increase
|
||
the number of ACKs sent by the receiver. The interaction between
|
||
DAASS and the methods for reducing the number of ACKs is an open
|
||
research question. Also, as noted in section 3.2.1.5 above, DAASS
|
||
provides some of the same benefits as using a larger initial
|
||
congestion window and therefore it may not be desirable to use both
|
||
mechanisms together. However, this remains an open question.
|
||
Finally, DAASS and limited byte counting are both used to increase
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 10]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
the rate at which the congestion window is opened. The DAASS
|
||
algorithm substantially reduces the impact limited byte counting has
|
||
on the rate of congestion window increase.
|
||
|
||
3.2.4 Terminating Slow Start
|
||
|
||
3.2.4.1 Mitigation Description
|
||
|
||
The initial slow start phase is used by TCP to determine an
|
||
appropriate congestion window size for the given network conditions
|
||
[Jac88]. Slow start is terminated when TCP detects congestion, or
|
||
when the size of cwnd reaches the size of the receiver's advertised
|
||
window. Slow start is also terminated if cwnd grows beyond a certain
|
||
size. The threshold at which TCP ends slow start and begins using
|
||
the congestion avoidance algorithm is called "ssthresh" [Jac88]. In
|
||
most implementations, the initial value for ssthresh is the
|
||
receiver's advertised window. During slow start, TCP roughly doubles
|
||
the size of cwnd every RTT and therefore can overwhelm the network
|
||
with at most twice as many segments as the network can handle. By
|
||
setting ssthresh to a value less than the receiver's advertised
|
||
window initially, the sender may avoid overwhelming the network with
|
||
twice the appropriate number of segments. Hoe [Hoe96] proposes using
|
||
the packet-pair algorithm [Kes91] and the measured RTT to determine a
|
||
more appropriate value for ssthresh. The algorithm observes the
|
||
spacing between the first few returning ACKs to determine the
|
||
bandwidth of the bottleneck link. Together with the measured RTT,
|
||
the delay*bandwidth product is determined and ssthresh is set to this
|
||
value. When TCP's cwnd reaches this reduced ssthresh, slow start is
|
||
terminated and transmission continues using congestion avoidance,
|
||
which is a more conservative algorithm for increasing the size of the
|
||
congestion window.
|
||
|
||
3.2.4.2 Research
|
||
|
||
It has been shown that estimating ssthresh can improve performance
|
||
and decrease packet loss in simulations [Hoe96]. However, obtaining
|
||
an accurate estimate of the available bandwidth in a dynamic network
|
||
is very challenging, especially attempting to do so on the sending
|
||
side of the TCP connection [AP99]. Therefore, before this mechanism
|
||
is widely deployed, bandwidth estimation must be studied in a more
|
||
detail.
|
||
|
||
3.2.4.3 Implementation Issues
|
||
|
||
As outlined in [Hoe96], estimating ssthresh requires changes to the
|
||
data sender's TCP stack. As suggested in [AP99], bandwidth estimates
|
||
may be more accurate when taken by the TCP receiver, and therefore
|
||
both sender and receiver changes would be required. Estimating
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 11]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
ssthresh is safe to implement in production networks from a
|
||
congestion control perspective, as it can only make TCP more
|
||
conservative than outlined in RFC 2581 [APS99] (assuming the TCP
|
||
implementation is using an initial ssthresh of infinity as allowed by
|
||
[APS99]).
|
||
|
||
3.2.4.4 Topology Considerations
|
||
|
||
It is expected that this mechanism will work equally well in all
|
||
symmetric topologies outlined in section 2. However, asymmetric
|
||
links pose a special problem, as the rate of the returning ACKs may
|
||
not be the bottleneck bandwidth in the forward direction. This can
|
||
lead to the sender setting ssthresh too low. Premature termination
|
||
of slow start can hurt performance, as congestion avoidance opens
|
||
cwnd more conservatively. Receiver-based bandwidth estimators do not
|
||
suffer from this problem.
|
||
|
||
3.2.4.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Terminating slow start at the right time is useful to avoid multiple
|
||
dropped segments. However, using a selective acknowledgment-based
|
||
loss recovery scheme (as outlined in section 3.3.2) can drastically
|
||
improve TCP's ability to quickly recover from multiple lost segments
|
||
Therefore, it may not be as important to terminate slow start before
|
||
a large loss event occurs. [AP99] shows that using delayed
|
||
acknowledgments [Bra89] reduces the effectiveness of sender-side
|
||
bandwidth estimation. Therefore, using delayed ACKs only during slow
|
||
start (as outlined in section 3.2.3) may make bandwidth estimation
|
||
more feasible.
|
||
|
||
3.3 Loss Recovery
|
||
|
||
3.3.1 Non-SACK Based Mechanisms
|
||
|
||
3.3.1.1 Mitigation Description
|
||
|
||
Several similar algorithms have been developed and studied that
|
||
improve TCP's ability to recover from multiple lost segments in a
|
||
window of data without relying on the (often long) retransmission
|
||
timeout. These sender-side algorithms, known as NewReno TCP, do not
|
||
depend on the availability of selective acknowledgments (SACKs)
|
||
[MMFR96].
|
||
|
||
These algorithms generally work by updating the fast recovery
|
||
algorithm to use information provided by "partial ACKs" to trigger
|
||
retransmissions. A partial ACK covers some new data, but not all
|
||
data outstanding when a particular loss event starts. For instance,
|
||
consider the case when segment N is retransmitted using the fast
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 12]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
retransmit algorithm and segment M is the last segment sent when
|
||
segment N is resent. If segment N is the only segment lost, the ACK
|
||
elicited by the retransmission of segment N would be for segment M.
|
||
If, however, segment N+1 was also lost, the ACK elicited by the
|
||
retransmission of segment N will be N+1. This can be taken as an
|
||
indication that segment N+1 was lost and used to trigger a
|
||
retransmission.
|
||
|
||
3.3.1.2 Research
|
||
|
||
Hoe [Hoe95,Hoe96] introduced the idea of using partial ACKs to
|
||
trigger retransmissions and showed that doing so could improve
|
||
performance. [FF96] shows that in some cases using partial ACKs to
|
||
trigger retransmissions reduces the time required to recover from
|
||
multiple lost segments. However, [FF96] also shows that in some
|
||
cases (many lost segments) relying on the RTO timer can improve
|
||
performance over simply using partial ACKs to trigger all
|
||
retransmissions. [HK99] shows that using partial ACKs to trigger
|
||
retransmissions, in conjunction with SACK, improves performance when
|
||
compared to TCP using fast retransmit/fast recovery in a satellite
|
||
environment. Finally, [FH99] describes several slightly different
|
||
variants of NewReno.
|
||
|
||
3.3.1.3 Implementation Issues
|
||
|
||
Implementing these fast recovery enhancements requires changes to the
|
||
sender-side TCP stack. These changes can safely be implemented in
|
||
production networks and are allowed by RFC 2581 [APS99].
|
||
|
||
3.3.1.4 Topology Considerations
|
||
|
||
It is expected that these changes will work well in all environments
|
||
outlined in section 2.
|
||
|
||
3.3.1.5 Possible Interaction and Relationships with Other Research
|
||
|
||
See section 3.3.2.2.5.
|
||
|
||
3.3.2 SACK Based Mechanisms
|
||
|
||
3.3.2.1 Fast Recovery with SACK
|
||
|
||
3.3.2.1.1 Mitigation Description
|
||
|
||
Fall and Floyd [FF96] describe a conservative extension to the fast
|
||
recovery algorithm that takes into account information provided by
|
||
selective acknowledgments (SACKs) [MMFR96] sent by the receiver. The
|
||
algorithm starts after fast retransmit triggers the resending of a
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 13]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
segment. As with fast retransmit, the algorithm cuts cwnd in half
|
||
when a loss is detected. The algorithm keeps a variable called
|
||
"pipe", which is an estimate of the number of outstanding segments in
|
||
the network. The pipe variable is decremented by 1 segment for each
|
||
duplicate ACK that arrives with new SACK information. The pipe
|
||
variable is incremented by 1 for each new or retransmitted segment
|
||
sent. A segment may be sent when the value of pipe is less than cwnd
|
||
(this segment is either a retransmission per the SACK information or
|
||
a new segment if the SACK information indicates that no more
|
||
retransmits are needed).
|
||
|
||
This algorithm generally allows TCP to recover from multiple segment
|
||
losses in a window of data within one RTT of loss detection. Like
|
||
the forward acknowledgment (FACK) algorithm described below, the SACK
|
||
information allows the pipe algorithm to decouple the choice of when
|
||
to send a segment from the choice of what segment to send.
|
||
|
||
[APS99] allows the use of this algorithm, as it is consistent with
|
||
the spirit of the fast recovery algorithm.
|
||
|
||
3.3.2.1.2 Research
|
||
|
||
[FF96] shows that the above described SACK algorithm performs better
|
||
than several non-SACK based recovery algorithms when 1--4 segments
|
||
are lost from a window of data. [AHKO97] shows that the algorithm
|
||
improves performance over satellite links. Hayes [Hay97] shows the
|
||
in certain circumstances, the SACK algorithm can hurt performance by
|
||
generating a large line-rate burst of data at the end of loss
|
||
recovery, which causes further loss.
|
||
|
||
3.3.2.1.3 Implementation Issues
|
||
|
||
This algorithm is implemented in the sender's TCP stack. However, it
|
||
relies on SACK information generated by the receiver. This algorithm
|
||
is safe for shared networks and is allowed by RFC 2581 [APS99].
|
||
|
||
3.3.2.1.4 Topology Considerations
|
||
|
||
It is expected that the pipe algorithm will work equally well in all
|
||
scenarios presented in section 2.
|
||
|
||
3.3.2.1.5 Possible Interaction and Relationships with Other Research
|
||
|
||
See section 3.3.2.2.5.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 14]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.3.2.2 Forward Acknowledgments
|
||
|
||
3.3.2.2.1 Mitigation Description
|
||
|
||
The Forward Acknowledgment (FACK) algorithm [MM96a,MM96b] was
|
||
developed to improve TCP congestion control during loss recovery.
|
||
FACK uses TCP SACK options to glean additional information about the
|
||
congestion state, adding more precise control to the injection of
|
||
data into the network during recovery. FACK decouples the congestion
|
||
control algorithms from the data recovery algorithms to provide a
|
||
simple and direct way to use SACK to improve congestion control. Due
|
||
to the separation of these two algorithms, new data may be sent
|
||
during recovery to sustain TCP's self-clock when there is no further
|
||
data to retransmit.
|
||
|
||
The most recent version of FACK is Rate-Halving [MM96b], in which one
|
||
packet is sent for every two ACKs received during recovery.
|
||
Transmitting a segment for every-other ACK has the result of reducing
|
||
the congestion window in one round trip to half of the number of
|
||
packets that were successfully handled by the network (so when cwnd
|
||
is too large by more than a factor of two it still gets reduced to
|
||
half of what the network can sustain). Another important aspect of
|
||
FACK with Rate-Halving is that it sustains the ACK self-clock during
|
||
recovery because transmitting a packet for every-other ACK does not
|
||
require half a cwnd of data to drain from the network before
|
||
transmitting, as required by the fast recovery algorithm
|
||
[Ste97,APS99].
|
||
|
||
In addition, the FACK with Rate-Halving implementation provides
|
||
Thresholded Retransmission to each lost segment. "Tcprexmtthresh" is
|
||
the number of duplicate ACKs required by TCP to trigger a fast
|
||
retransmit and enter recovery. FACK applies thresholded
|
||
retransmission to all segments by waiting until tcprexmtthresh SACK
|
||
blocks indicate that a given segment is missing before resending the
|
||
segment. This allows reasonable behavior on links that reorder
|
||
segments. As described above, FACK sends a segment for every second
|
||
ACK received during recovery. New segments are transmitted except
|
||
when tcprexmtthresh SACK blocks have been observed for a dropped
|
||
segment, at which point the dropped segment is retransmitted.
|
||
|
||
[APS99] allows the use of this algorithm, as it is consistent with
|
||
the spirit of the fast recovery algorithm.
|
||
|
||
3.3.2.2.2 Research
|
||
|
||
The original FACK algorithm is outlined in [MM96a]. The algorithm
|
||
was later enhanced to include Rate-Halving [MM96b]. The real-world
|
||
performance of FACK with Rate-Halving was shown to be much closer to
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 15]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
the theoretical maximum for TCP than either TCP Reno or the SACK-
|
||
based extensions to fast recovery outlined in section 3.3.2.1
|
||
[MSMO97].
|
||
|
||
3.3.2.2.3 Implementation Issues
|
||
|
||
In order to use FACK, the sender's TCP stack must be modified. In
|
||
addition, the receiver must be able to generate SACK options to
|
||
obtain the full benefit of using FACK. The FACK algorithm is safe
|
||
for shared networks and is allowed by RFC 2581 [APS99].
|
||
|
||
3.3.2.2.4 Topology Considerations
|
||
|
||
FACK is expected to improve performance in all environments outlined
|
||
in section 2. Since it is better able to sustain its self-clock than
|
||
TCP Reno, it may be considerably more attractive over long delay
|
||
paths.
|
||
|
||
3.3.2.2.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Both SACK based loss recovery algorithms described above (the fast
|
||
recovery enhancement and the FACK algorithm) are similar in that they
|
||
attempt to effectively repair multiple lost segments from a window of
|
||
data. Which of the SACK-based loss recovery algorithms to use is
|
||
still an open research question. In addition, these algorithms are
|
||
similar to the non-SACK NewReno algorithm described in section 3.3.1,
|
||
in that they attempt to recover from multiple lost segments without
|
||
reverting to using the retransmission timer. As has been shown, the
|
||
above SACK based algorithms are more robust than the NewReno
|
||
algorithm. However, the SACK algorithm requires a cooperating TCP
|
||
receiver, which the NewReno algorithm does not. A reasonable TCP
|
||
implementation might include both a SACK-based and a NewReno-based
|
||
loss recovery algorithm such that the sender can use the most
|
||
appropriate loss recovery algorithm based on whether or not the
|
||
receiver supports SACKs. Finally, both SACK-based and non-SACK-based
|
||
versions of fast recovery have been shown to transmit a large burst
|
||
of data upon leaving loss recovery, in some cases [Hay97].
|
||
Therefore, the algorithms may benefit from some burst suppression
|
||
algorithm.
|
||
|
||
3.3.3 Explicit Congestion Notification
|
||
|
||
3.3.3.1 Mitigation Description
|
||
|
||
Explicit congestion notification (ECN) allows routers to inform TCP
|
||
senders about imminent congestion without dropping segments. Two
|
||
major forms of ECN have been studied. A router employing backward
|
||
ECN (BECN), transmits messages directly to the data originator
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 16]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
informing it of congestion. IP routers can accomplish this with an
|
||
ICMP Source Quench message. The arrival of a BECN signal may or may
|
||
not mean that a TCP data segment has been dropped, but it is a clear
|
||
indication that the TCP sender should reduce its sending rate (i.e.,
|
||
the value of cwnd). The second major form of congestion notification
|
||
is forward ECN (FECN). FECN routers mark data segments with a
|
||
special tag when congestion is imminent, but forward the data
|
||
segment. The data receiver then echos the congestion information
|
||
back to the sender in the ACK packet. A description of a FECN
|
||
mechanism for TCP/IP is given in [RF99].
|
||
|
||
As described in [RF99], senders transmit segments with an "ECN-
|
||
Capable Transport" bit set in the IP header of each packet. If a
|
||
router employing an active queueing strategy, such as Random Early
|
||
Detection (RED) [FJ93,BCC+98], would otherwise drop this segment, an
|
||
"Congestion Experienced" bit in the IP header is set instead. Upon
|
||
reception, the information is echoed back to TCP senders using a bit
|
||
in the TCP header. The TCP sender adjusts the congestion window just
|
||
as it would if a segment was dropped.
|
||
|
||
The implementation of ECN as specified in [RF99] requires the
|
||
deployment of active queue management mechanisms in the affected
|
||
routers. This allows the routers to signal congestion by sending TCP
|
||
a small number of "congestion signals" (segment drops or ECN
|
||
messages), rather than discarding a large number of segments, as can
|
||
happen when TCP overwhelms a drop-tail router queue.
|
||
|
||
Since satellite networks generally have higher bit-error rates than
|
||
terrestrial networks, determining whether a segment was lost due to
|
||
congestion or corruption may allow TCP to achieve better performance
|
||
in high BER environments than currently possible (due to TCP's
|
||
assumption that all loss is due to congestion). While not a solution
|
||
to this problem, adding an ECN mechanism to TCP may be a part of a
|
||
mechanism that will help achieve this goal. See section 3.3.4 for a
|
||
more detailed discussion of differentiating between corruption and
|
||
congestion based losses.
|
||
|
||
3.3.3.2 Research
|
||
|
||
[Flo94] shows that ECN is effective in reducing the segment loss rate
|
||
which yields better performance especially for short and interactive
|
||
TCP connections. Furthermore, [Flo94] also shows that ECN avoids
|
||
some unnecessary, and costly TCP retransmission timeouts. Finally,
|
||
[Flo94] also considers some of the advantages and disadvantages of
|
||
various forms of explicit congestion notification.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 17]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.3.3.3 Implementation Issues
|
||
|
||
Deployment of ECN requires changes to the TCP implementation on both
|
||
sender and receiver. Additionally, deployment of ECN requires
|
||
deployment of some active queue management infrastructure in routers.
|
||
RED is assumed in most ECN discussions, because RED is already
|
||
identifying segments to drop, even before its buffer space is
|
||
exhausted. ECN simply allows the delivery of "marked" segments while
|
||
still notifying the end nodes that congestion is occurring along the
|
||
path. ECN is safe (from a congestion control perspective) for shared
|
||
networks, as it maintains the same TCP congestion control principles
|
||
as are used when congestion is detected via segment drops.
|
||
|
||
3.3.3.4 Topology Considerations
|
||
|
||
It is expected that none of the environments outlined in section 2
|
||
will present a bias towards or against ECN traffic.
|
||
|
||
3.3.3.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Note that some form of active queueing is necessary to use ECN (e.g.,
|
||
RED queueing).
|
||
|
||
3.3.4 Detecting Corruption Loss
|
||
|
||
Differentiating between congestion (loss of segments due to router
|
||
buffer overflow or imminent buffer overflow) and corruption (loss of
|
||
segments due to damaged bits) is a difficult problem for TCP. This
|
||
differentiation is particularly important because the action that TCP
|
||
should take in the two cases is entirely different. In the case of
|
||
corruption, TCP should merely retransmit the damaged segment as soon
|
||
as its loss is detected; there is no need for TCP to adjust its
|
||
congestion window. On the other hand, as has been widely discussed
|
||
above, when the TCP sender detects congestion, it should immediately
|
||
reduce its congestion window to avoid making the congestion worse.
|
||
|
||
TCP's defined behavior, as motivated by [Jac88,Jac90] and defined in
|
||
[Bra89,Ste97,APS99], is to assume that all loss is due to congestion
|
||
and to trigger the congestion control algorithms, as defined in
|
||
[Ste97,APS99]. The loss may be detected using the fast retransmit
|
||
algorithm, or in the worst case is detected by the expiration of
|
||
TCP's retransmission timer.
|
||
|
||
TCP's assumption that loss is due to congestion rather than
|
||
corruption is a conservative mechanism that prevents congestion
|
||
collapse [Jac88,FF98]. Over satellite networks, however, as in many
|
||
wireless environments, loss due to corruption is more common than on
|
||
terrestrial networks. One common partial solution to this problem is
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 18]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
to add Forward Error Correction (FEC) to the data that's sent over
|
||
the satellite/wireless link. A more complete discussion of the
|
||
benefits of FEC can be found in [AGS99]. However, given that FEC
|
||
does not always work or cannot be universally applied, other
|
||
mechanisms have been studied to attempt to make TCP able to
|
||
differentiate between congestion-based and corruption-based loss.
|
||
|
||
TCP segments that have been corrupted are most often dropped by
|
||
intervening routers when link-level checksum mechanisms detect that
|
||
an incoming frame has errors. Occasionally, a TCP segment containing
|
||
an error may survive without detection until it arrives at the TCP
|
||
receiving host, at which point it will almost always either fail the
|
||
IP header checksum or the TCP checksum and be discarded as in the
|
||
link-level error case. Unfortunately, in either of these cases, it's
|
||
not generally safe for the node detecting the corruption to return
|
||
information about the corrupt packet to the TCP sender because the
|
||
sending address itself might have been corrupted.
|
||
|
||
3.3.4.1 Mitigation Description
|
||
|
||
Because the probability of link errors on a satellite link is
|
||
relatively greater than on a hardwired link, it is particularly
|
||
important that the TCP sender retransmit these lost segments without
|
||
reducing its congestion window. Because corrupt segments do not
|
||
indicate congestion, there is no need for the TCP sender to enter a
|
||
congestion avoidance phase, which may waste available bandwidth.
|
||
Simulations performed in [SF98] show a performance improvement when
|
||
TCP can properly differentiate between between corruption and
|
||
congestion of wireless links.
|
||
|
||
Perhaps the greatest research challenge in detecting corruption is
|
||
getting TCP (a transport-layer protocol) to receive appropriate
|
||
information from either the network layer (IP) or the link layer.
|
||
Much of the work done to date has involved link-layer mechanisms that
|
||
retransmit damaged segments. The challenge seems to be to get these
|
||
mechanisms to make repairs in such a way that TCP understands what
|
||
happened and can respond appropriately.
|
||
|
||
3.3.4.2 Research
|
||
|
||
Research into corruption detection to date has focused primarily on
|
||
making the link level detect errors and then perform link-level
|
||
retransmissions. This work is summarized in [BKVP97,BPSK96]. One of
|
||
the problems with this promising technique is that it causes an
|
||
effective reordering of the segments from the TCP receiver's point of
|
||
view. As a simple example, if segments A B C D are sent across a
|
||
noisy link and segment B is corrupted, segments C and D may have
|
||
already crossed the link before B can be retransmitted at the link
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 19]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
level, causing them to arrive at the TCP receiver in the order A C D
|
||
B. This segment reordering would cause the TCP receiver to generate
|
||
duplicate ACKs upon the arrival of segments C and D. If the
|
||
reordering was bad enough, the sender would trigger the fast
|
||
retransmit algorithm in the TCP sender, in response to the duplicate
|
||
ACKs. Research presented in [MV98] proposes the idea of suppressing
|
||
or delaying the duplicate ACKs in the reverse direction to counteract
|
||
this behavior. Alternatively, proposals that make TCP more robust in
|
||
the face of re-ordered segment arrivals [Flo99] may reduce the side
|
||
effects of the re-ordering caused by link-layer retransmissions.
|
||
|
||
A more high-level approach, outlined in the [DMT96], uses a new
|
||
"corruption experienced" ICMP error message generated by routers that
|
||
detect corruption. These messages are sent in the forward direction,
|
||
toward the packet's destination, rather than in the reverse direction
|
||
as is done with ICMP Source Quench messages. Sending the error
|
||
messages in the forward direction allows this feedback to work over
|
||
asymmetric paths. As noted above, generating an error message in
|
||
response to a damaged packet is problematic because the source and
|
||
destination addresses may not be valid. The mechanism outlined in
|
||
[DMT96] gets around this problem by having the routers maintain a
|
||
small cache of recent packet destinations; when the router
|
||
experiences an error rate above some threshold, it sends an ICMP
|
||
corruption-experienced message to all of the destinations in its
|
||
cache. Each TCP receiver then must return this information to its
|
||
respective TCP sender (through a TCP option). Upon receiving an ACK
|
||
with this "corruption-experienced" option, the TCP sender assumes
|
||
that packet loss is due to corruption rather than congestion for two
|
||
round trip times (RTT) or until it receives additional link state
|
||
information (such as "link down", source quench, or additional
|
||
"corruption experienced" messages). Note that in shared networks,
|
||
ignoring segment loss for 2 RTTs may aggravate congestion by making
|
||
TCP unresponsive.
|
||
|
||
3.3.4.3 Implementation Issues
|
||
|
||
All of the techniques discussed above require changes to at least the
|
||
TCP sending and receiving stacks, as well as intermediate routers.
|
||
Due to the concerns over possibly ignoring congestion signals (i.e.,
|
||
segment drops), the above algorithm is not recommended for use in
|
||
shared networks.
|
||
|
||
3.3.4.4 Topology Considerations
|
||
|
||
It is expected that corruption detection, in general would be
|
||
beneficial in all environments outlined in section 2. It would be
|
||
particularly beneficial in the satellite/wireless environment over
|
||
which these errors may be more prevalent.
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 20]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.3.4.5 Possible Interaction and Relationships with Other Research
|
||
|
||
SACK-based loss recovery algorithms (as described in 3.3.2) may
|
||
reduce the impact of corrupted segments on mostly clean links because
|
||
recovery will be able to happen more rapidly (and without relying on
|
||
the retransmission timer). Note that while SACK-based loss recovery
|
||
helps, throughput will still suffer in the face of non-congestion
|
||
related packet loss.
|
||
|
||
3.4 Congestion Avoidance
|
||
|
||
3.4.1 Mitigation Description
|
||
|
||
During congestion avoidance, in the absence of loss, the TCP sender
|
||
adds approximately one segment to its congestion window during each
|
||
RTT [Jac88,Ste97,APS99]. Several researchers have observed that this
|
||
policy leads to unfair sharing of bandwidth when multiple connections
|
||
with different RTTs traverse the same bottleneck link, with the long
|
||
RTT connections obtaining only a small fraction of their fair share
|
||
of the bandwidth.
|
||
|
||
One effective solution to this problem is to deploy fair queueing and
|
||
TCP-friendly buffer management in network routers [Sut98]. However,
|
||
in the absence of help from the network, other researchers have
|
||
investigated changes to the congestion avoidance policy at the TCP
|
||
sender, as described in [Flo91,HK98].
|
||
|
||
3.4.2 Research
|
||
|
||
The "Constant-Rate" increase policy has been studied in [Flo91,HK98].
|
||
It attempts to equalize the rate at which TCP senders increase their
|
||
sending rate during congestion avoidance. Both [Flo91] and [HK98]
|
||
illustrate cases in which the "Constant-Rate" policy largely corrects
|
||
the bias against long RTT connections, although [HK98] presents some
|
||
evidence that such a policy may be difficult to incrementally deploy
|
||
in an operational network. The proper selection of a constant (for
|
||
the constant rate of increase) is an open issue.
|
||
|
||
The "Increase-by-K" policy can be selectively used by long RTT
|
||
connections in a heterogeneous environment. This policy simply
|
||
changes the slope of the linear increase, with connections over a
|
||
given RTT threshold adding "K" segments to the congestion window
|
||
every RTT, instead of one. [HK98] presents evidence that this
|
||
policy, when used with small values of "K", may be successful in
|
||
reducing the unfairness while keeping the link utilization high, when
|
||
a small number of connections share a bottleneck link. The selection
|
||
of the constant "K," the RTT threshold to invoke this policy, and
|
||
performance under a large number of flows are all open issues.
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 21]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.4.3 Implementation Issues
|
||
|
||
Implementation of either the "Constant-Rate" or "Increase-by-K"
|
||
policies requires a change to the congestion avoidance mechanism at
|
||
the TCP sender. In the case of "Constant-Rate," such a change must
|
||
be implemented globally. Additionally, the TCP sender must have a
|
||
reasonably accurate estimate of the RTT of the connection. The
|
||
algorithms outlined above violate the congestion avoidance algorithm
|
||
as outlined in RFC 2581 [APS99] and therefore should not be
|
||
implemented in shared networks at this time.
|
||
|
||
3.4.4 Topology Considerations
|
||
|
||
These solutions are applicable to all satellite networks that are
|
||
integrated with a terrestrial network, in which satellite connections
|
||
may be competing with terrestrial connections for the same bottleneck
|
||
link.
|
||
|
||
3.4.5 Possible Interaction and Relationships with Other Research
|
||
|
||
As shown in [PADHV99], increasing the congestion window by multiple
|
||
segments per RTT can cause TCP to drop multiple segments and force a
|
||
retransmission timeout in some versions of TCP. Therefore, the above
|
||
changes to the congestion avoidance algorithm may need to be
|
||
accompanied by a SACK-based loss recovery algorithm that can quickly
|
||
repair multiple dropped segments.
|
||
|
||
3.5 Multiple Data Connections
|
||
|
||
3.5.1 Mitigation Description
|
||
|
||
One method that has been used to overcome TCP's inefficiencies in the
|
||
satellite environment is to use multiple TCP flows to transfer a
|
||
given file. The use of N TCP connections makes the sender N times
|
||
more aggressive and therefore can improve throughput in some
|
||
situations. Using N multiple TCP connections can impact the transfer
|
||
and the network in a number of ways, which are listed below.
|
||
|
||
1. The transfer is able to start transmission using an effective
|
||
congestion window of N segments, rather than a single segment as
|
||
one TCP flow uses. This allows the transfer to more quickly
|
||
increase the effective cwnd size to an appropriate size for the
|
||
given network. However, in some circumstances an initial window
|
||
of N segments is inappropriate for the network conditions. In
|
||
this case, a transfer utilizing more than one connection may
|
||
aggravate congestion.
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 22]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
2. During the congestion avoidance phase, the transfer increases the
|
||
effective cwnd by N segments per RTT, rather than the one segment
|
||
per RTT increase that a single TCP connection provides. Again,
|
||
this can aid the transfer by more rapidly increasing the effective
|
||
cwnd to an appropriate point. However, this rate of increase can
|
||
also be too aggressive for the network conditions. In this case,
|
||
the use of multiple data connections can aggravate congestion in
|
||
the network.
|
||
|
||
3. Using multiple connections can provide a very large overall
|
||
congestion window. This can be an advantage for TCP
|
||
implementations that do not support the TCP window scaling
|
||
extension [JBB92]. However, the aggregate cwnd size across all N
|
||
connections is equivalent to using a TCP implementation that
|
||
supports large windows.
|
||
|
||
4. The overall cwnd decrease in the face of dropped segments is
|
||
reduced when using N parallel connections. A single TCP
|
||
connection reduces the effective size of cwnd to half when a
|
||
single segment loss is detected. When utilizing N connections
|
||
each using a window of W bytes, a single drop reduces the window
|
||
to:
|
||
|
||
(N * W) - (W / 2)
|
||
|
||
Clearly this is a less dramatic reduction in the effective cwnd size
|
||
than when using a single TCP connection. And, the amount by which
|
||
the cwnd is decreased is further reduced by increasing N.
|
||
|
||
The use of multiple data connections can increase the ability of
|
||
non-SACK TCP implementations to quickly recover from multiple dropped
|
||
segments without resorting to a timeout, assuming the dropped
|
||
segments cross connections.
|
||
|
||
The use of multiple parallel connections makes TCP overly aggressive
|
||
for many environments and can contribute to congestive collapse in
|
||
shared networks [FF99]. The advantages provided by using multiple
|
||
TCP connections are now largely provided by TCP extensions (larger
|
||
windows, SACKs, etc.). Therefore, the use of a single TCP connection
|
||
is more "network friendly" than using multiple parallel connections.
|
||
However, using multiple parallel TCP connections may provide
|
||
performance improvement in private networks.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 23]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.5.2 Research
|
||
|
||
Research on the use of multiple parallel TCP connections shows
|
||
improved performance [IL92,Hah94,AOK95,AKO96]. In addition, research
|
||
has shown that multiple TCP connections can outperform a single
|
||
modern TCP connection (with large windows and SACK) [AHKO97].
|
||
However, these studies did not consider the impact of using multiple
|
||
TCP connections on competing traffic. [FF99] argues that using
|
||
multiple simultaneous connections to transfer a given file may lead
|
||
to congestive collapse in shared networks.
|
||
|
||
3.5.3 Implementation Issues
|
||
|
||
To utilize multiple parallel TCP connections a client application and
|
||
the corresponding server must be customized. As outlined in [FF99]
|
||
using multiple parallel TCP connections is not safe (from a
|
||
congestion control perspective) in shared networks and should not be
|
||
used.
|
||
|
||
3.5.4 Topological Considerations
|
||
|
||
As stated above, [FF99] outlines that the use of multiple parallel
|
||
connections in a shared network, such as the Internet, may lead to
|
||
congestive collapse. However, the use of multiple connections may be
|
||
safe and beneficial in private networks. The specific topology being
|
||
used will dictate the number of parallel connections required. Some
|
||
work has been done to determine the appropriate number of connections
|
||
on the fly [AKO96], but such a mechanism is far from complete.
|
||
|
||
3.5.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Using multiple concurrent TCP connections enables use of a large
|
||
congestion window, much like the TCP window scaling option [JBB92].
|
||
In addition, a larger initial congestion window is achieved, similar
|
||
to using [AFP98] or TCB sharing (see section 3.8).
|
||
|
||
3.6 Pacing TCP Segments
|
||
|
||
3.6.1 Mitigation Description
|
||
|
||
Slow-start takes several round trips to fully open the TCP congestion
|
||
window over routes with high bandwidth-delay products. For short TCP
|
||
connections (such as WWW traffic with HTTP/1.0), the slow-start
|
||
overhead can preclude effective use of the high-bandwidth satellite
|
||
links. When senders implement slow-start restart after a TCP
|
||
connection goes idle (suggested by Jacobson and Karels [JK92]),
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 24]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
performance is reduced in long-lived (but bursty) connections (such
|
||
as HTTP/1.1, which uses persistent TCP connections to transfer
|
||
multiple WWW page elements) [Hei97a].
|
||
|
||
Rate-based pacing (RBP) is a technique, used in the absence of
|
||
incoming ACKs, where the data sender temporarily paces TCP segments
|
||
at a given rate to restart the ACK clock. Upon receipt of the first
|
||
ACK, pacing is discontinued and normal TCP ACK clocking resumes. The
|
||
pacing rate may either be known from recent traffic estimates (when
|
||
restarting an idle connection or from recent prior connections), or
|
||
may be known through external means (perhaps in a point-to-point or
|
||
point-to-multipoint satellite network where available bandwidth can
|
||
be assumed to be large).
|
||
|
||
In addition, pacing data during the first RTT of a transfer may allow
|
||
TCP to make effective use of high bandwidth-delay links even for
|
||
short transfers. However, in order to pace segments during the first
|
||
RTT a TCP will have to be using a non-standard initial congestion
|
||
window and a new mechanism to pace outgoing segments rather than send
|
||
them back-to-back. Determining an appropriate size for the initial
|
||
cwnd is an open research question. Pacing can also be used to reduce
|
||
bursts in general (due to buggy TCPs or byte counting, see section
|
||
3.2.2 for a discussion on byte counting).
|
||
|
||
3.6.2 Research
|
||
|
||
Simulation studies of rate-paced pacing for WWW-like traffic have
|
||
shown reductions in router congestion and drop rates [VH97a]. In
|
||
this environment, RBP substantially improves performance compared to
|
||
slow-start-after-idle for intermittent senders, and it slightly
|
||
improves performance over burst-full-cwnd-after-idle (because of
|
||
drops) [VH98]. More recently, pacing has been suggested to eliminate
|
||
burstiness in networks with ACK filtering [BPK97].
|
||
|
||
3.6.3 Implementation Issues
|
||
|
||
RBP requires only sender-side changes to TCP. Prototype
|
||
implementations of RBP are available [VH97b]. RBP requires an
|
||
additional sender timer for pacing. The overhead of timer-driven
|
||
data transfer is often considered too high for practical use.
|
||
Preliminary experiments suggest that in RBP this overhead is minimal
|
||
because RBP only requires this timer for one RTT of transmission
|
||
[VH98]. RBP is expected to make TCP more conservative in sending
|
||
bursts of data after an idle period in hosts that do not revert to
|
||
slow start after an idle period. On the other hand, RBP makes TCP
|
||
more aggressive if the sender uses the slow start algorithm to start
|
||
the ACK clock after a long idle period.
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 25]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.6.4 Topology Considerations
|
||
|
||
RBP could be used to restart idle TCP connections for all topologies
|
||
in Section 2. Use at the beginning of new connections would be
|
||
restricted to topologies where available bandwidth can be estimated
|
||
out-of-band.
|
||
|
||
3.6.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Pacing segments may benefit from sharing state amongst various flows
|
||
between two hosts, due to the time required to determine the needed
|
||
information. Additionally, pacing segments, rather than sending
|
||
back-to-back segments, may make estimating the available bandwidth
|
||
(as outlined in section 3.2.4) more difficult.
|
||
|
||
3.7 TCP Header Compression
|
||
|
||
The TCP and IP header information needed to reliably deliver packets
|
||
to a remote site across the Internet can add significant overhead,
|
||
especially for interactive applications. Telnet packets, for
|
||
example, typically carry only a few bytes of data per packet, and
|
||
standard IPv4/TCP headers add at least 40 bytes to this; IPv6/TCP
|
||
headers add at least 60 bytes. Much of this information remains
|
||
relatively constant over the course of a session and so can be
|
||
replaced by a short session identifier.
|
||
|
||
3.7.1 Mitigation Description
|
||
|
||
Many fields in the TCP and IP headers either remain constant during
|
||
the course of a session, change very infrequently, or can be inferred
|
||
from other sources. For example, the source and destination
|
||
addresses, as well as the IP version, protocol, and port fields
|
||
generally do not change during a session. Packet length can be
|
||
deduced from the length field of the underlying link layer protocol
|
||
provided that the link layer packet is not padded. Packet sequence
|
||
numbers in a forward data stream generally change with every packet,
|
||
but increase in a predictable manner.
|
||
|
||
The TCP/IP header compression methods described in
|
||
[DNP99,DENP97,Jac90] reduce the overhead of TCP sessions by replacing
|
||
the data in the TCP and IP headers that remains constant, changes
|
||
slowly, or changes in a predictable manner with a short "connection
|
||
number". Using this method, the sender first sends a full TCP/IP
|
||
header, including in it a connection number that the sender will use
|
||
to reference the connection. The receiver stores the full header and
|
||
uses it as a template, filling in some fields from the limited
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 26]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
information contained in later, compressed headers. This compression
|
||
can reduce the size of an IPv4/TCP headers from 40 to as few as 3 to
|
||
5 bytes (3 bytes for some common cases, 5 bytes in general).
|
||
|
||
Compression and decompression generally happen below the IP layer, at
|
||
the end-points of a given physical link (such as at two routers
|
||
connected by a serial line). The hosts on either side of the
|
||
physical link must maintain some state about the TCP connections that
|
||
are using the link.
|
||
|
||
The decompresser must pass complete, uncompressed packets to the IP
|
||
layer. Thus header compression is transparent to routing, for
|
||
example, since an incoming packet with compressed headers is expanded
|
||
before being passed to the IP layer.
|
||
|
||
A variety of methods can be used by the compressor/decompressor to
|
||
negotiate the use of header compression. For example, the PPP serial
|
||
line protocol allows for an option exchange, during which time the
|
||
compressor/decompressor agree on whether or not to use header
|
||
compression. For older SLIP implementations, [Jac90] describes a
|
||
mechanism that uses the first bit in the IP packet as a flag.
|
||
|
||
The reduction in overhead is especially useful when the link is
|
||
bandwidth-limited such as terrestrial wireless and mobile satellite
|
||
links, where the overhead associated with transmitting the header
|
||
bits is nontrivial. Header compression has the added advantage that
|
||
for the case of uniformly distributed bit errors, compressing TCP/IP
|
||
headers can provide a better quality of service by decreasing the
|
||
packet error probability. The shorter, compressed packets are less
|
||
likely to be corrupted, and the reduction in errors increases the
|
||
connection's throughput.
|
||
|
||
Extra space is saved by encoding changes in fields that change
|
||
relatively slowly by sending only their difference from their values
|
||
in the previous packet instead of their absolute values. In order to
|
||
decode headers compressed this way, the receiver keeps a copy of each
|
||
full, reconstructed TCP header after it is decoded, and applies the
|
||
delta values from the next decoded compressed header to the
|
||
reconstructed full header template.
|
||
|
||
A disadvantage to using this delta encoding scheme where values are
|
||
encoded as deltas from their values in the previous packet is that if
|
||
a single compressed packet is lost, subsequent packets with
|
||
compressed headers can become garbled if they contain fields which
|
||
depend on the lost packet. Consider a forward data stream of packets
|
||
with compressed headers and increasing sequence numbers. If packet N
|
||
is lost, the full header of packet N+1 will be reconstructed at the
|
||
receiver using packet N-1's full header as a template. Thus the
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 27]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
sequence number, which should have been calculated from packet N's
|
||
header, will be wrong, the checksum will fail, and the packet will be
|
||
discarded. When the sending TCP times out and retransmits a packet
|
||
with a full header is forwarded to re-synchronize the decompresser.
|
||
|
||
It is important to note that the compressor does not maintain any
|
||
timers, nor does the decompresser know when an error occurred (only
|
||
the receiving TCP knows this, when the TCP checksum fails). A single
|
||
bit error will cause the decompresser to lose sync, and subsequent
|
||
packets with compressed headers will be dropped by the receiving TCP,
|
||
since they will all fail the TCP checksum. When this happens, no
|
||
duplicate acknowledgments will be generated, and the decompresser can
|
||
only re-synchronize when it receives a packet with an uncompressed
|
||
header. This means that when header compression is being used, both
|
||
fast retransmit and selective acknowledgments will not be able
|
||
correct packets lost on a compressed link. The "twice" algorithm,
|
||
described below, may be a partial solution to this problem.
|
||
|
||
[DNP99] and [DENP97] describe TCP/IPv4 and TCP/IPv6 compression
|
||
algorithms including compressing the various IPv6 extension headers
|
||
as well as methods for compressing non-TCP streams. [DENP97] also
|
||
augments TCP header compression by introducing the "twice" algorithm.
|
||
If a particular packet fails to decompress properly, the twice
|
||
algorithm modifies its assumptions about the inferred fields in the
|
||
compressed header, assuming that a packet identical to the current
|
||
one was dropped between the last correctly decoded packet and the
|
||
current one. Twice then tries to decompress the received packet
|
||
under the new assumptions and, if the checksum passes, the packet is
|
||
passed to IP and the decompresser state has been re-synchronized.
|
||
This procedure can be extended to three or more decoding attempts.
|
||
Additional robustness can be achieved by caching full copies of
|
||
packets which don't decompress properly in the hopes that later
|
||
arrivals will fix the problem. Finally, the performance improvement
|
||
if the decompresser can explicitly request a full header is
|
||
discussed. Simulation results show that twice, in conjunction with
|
||
the full header request mechanism, can improve throughput over
|
||
uncompressed streams.
|
||
|
||
3.7.2 Research
|
||
|
||
[Jac90] outlines a simple header compression scheme for TCP/IP.
|
||
|
||
In [DENP97] the authors present the results of simulations showing
|
||
that header compression is advantageous for both low and medium
|
||
bandwidth links. Simulations show that the twice algorithm, combined
|
||
with an explicit header request mechanism, improved throughput by
|
||
10-15% over uncompressed sessions across a wide range of bit error
|
||
rates.
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 28]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
Much of this improvement may have been due to the twice algorithm
|
||
quickly re-synchronizing the decompresser when a packet is lost.
|
||
This is because the twice algorithm, applied one or two times when
|
||
the decompresser becomes unsynchronized, will re-sync the
|
||
decompresser in between 83% and 99% of the cases examined. This
|
||
means that packets received correctly after twice has resynchronized
|
||
the decompresser will cause duplicate acknowledgments. This re-
|
||
enables the use of both fast retransmit and SACK in conjunction with
|
||
header compression.
|
||
|
||
3.7.3 Implementation Issues
|
||
|
||
Implementing TCP/IP header compression requires changes at both the
|
||
sending (compressor) and receiving (decompresser) ends of each link
|
||
that uses compression. The twice algorithm requires very little
|
||
extra machinery over and above header compression, while the explicit
|
||
header request mechanism of [DENP97] requires more extensive
|
||
modifications to the sending and receiving ends of each link that
|
||
employs header compression. Header compression does not violate
|
||
TCP's congestion control mechanisms and therefore can be safely
|
||
implemented in shared networks.
|
||
|
||
3.7.4 Topology Considerations
|
||
|
||
TCP/IP header compression is applicable to all of the environments
|
||
discussed in section 2, but will provide relatively more improvement
|
||
in situations where packet sizes are small (i.e., overhead is large)
|
||
and there is medium to low bandwidth and/or higher BER. When TCP's
|
||
congestion window size is large, implementing the explicit header
|
||
request mechanism, the twice algorithm, and caching packets which
|
||
fail to decompress properly becomes more critical.
|
||
|
||
3.7.5 Possible Interaction and Relationships with Other Research
|
||
|
||
As discussed above, losing synchronization between a sender and
|
||
receiver can cause many packet drops. The frequency of losing
|
||
synchronization and the effectiveness of the twice algorithm may
|
||
point to using a SACK-based loss recovery algorithm to reduce the
|
||
impact of multiple lost segments. However, even very robust SACK-
|
||
based algorithms may not work well if too many segments are lost.
|
||
|
||
3.8 Sharing TCP State Among Similar Connections
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 29]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.8.1 Mitigation Description
|
||
|
||
Persistent TCP state information can be used to overcome limitations
|
||
in the configuration of the initial state, and to automatically tune
|
||
TCP to environments using satellite links and to coordinate multiple
|
||
TCP connections sharing a satellite link.
|
||
|
||
TCP includes a variety of parameters, many of which are set to
|
||
initial values which can severely affect the performance of TCP
|
||
connections traversing satellite links, even though most TCP
|
||
parameters are adjusted later after the connection is established.
|
||
These parameters include initial size of cwnd and initial MSS size.
|
||
Various suggestions have been made to change these initial
|
||
conditions, to more effectively support satellite links. However, it
|
||
is difficult to select any single set of parameters which is
|
||
effective for all environments.
|
||
|
||
An alternative to attempting to select these parameters a-priori is
|
||
sharing state across TCP connections and using this state when
|
||
initializing a new connection. For example, if all connections to a
|
||
subnet result in extended congestion windows of 1 megabyte, it is
|
||
probably more efficient to start new connections with this value,
|
||
than to rediscover it by requiring the cwnd to increase using slow
|
||
start over a period of dozens of round-trip times.
|
||
|
||
3.8.2 Research
|
||
|
||
Sharing state among connections brings up a number of questions such
|
||
as what information to share, with whom to share, how to share it,
|
||
and how to age shared information. First, what information is to be
|
||
shared must be determined. Some information may be appropriate to
|
||
share among TCP connections, while some information sharing may be
|
||
inappropriate or not useful. Next, we need to determine with whom to
|
||
share information. Sharing may be appropriate for TCP connections
|
||
sharing a common path to a given host. Information may be shared
|
||
among connections within a host, or even among connections between
|
||
different hosts, such as hosts on the same LAN. However, sharing
|
||
information between connections not traversing the same network may
|
||
not be appropriate. Given the state to share and the parties that
|
||
share it, a mechanism for the sharing is required. Simple state,
|
||
like MSS and RTT, is easy to share, but congestion window information
|
||
can be shared a variety of ways. The sharing mechanism determines
|
||
priorities among the sharing connections, and a variety of fairness
|
||
criteria need to be considered. Also, the mechanisms by which
|
||
information is aged require further study. See RFC 2140 for a
|
||
discussion of the security issues in both sharing state within a
|
||
single host and sharing state among hosts on a subnet. Finally, the
|
||
security concerns associated with sharing a piece of information need
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 30]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
to be carefully considered before introducing such a mechanism. Many
|
||
of these open research questions must be answered before state
|
||
sharing can be widely deployed.
|
||
|
||
The opportunity for such sharing, both among a sequence of
|
||
connections, as well as among concurrent connections, is described in
|
||
more detail in [Tou97]. The state management itself is largely an
|
||
implementation issue, however what information should be shared and
|
||
the specific ways in which the information should be shared is an
|
||
open question.
|
||
|
||
Sharing parts of the TCB state was originally documented in T/TCP
|
||
[Bra92], and is used there to aggregate RTT values across connection
|
||
instances, to provide meaningful average RTTs, even though most
|
||
connections are expected to persist for only one RTT. T/TCP also
|
||
shares a connection identifier, a sequence number separate from the
|
||
window number and address/port pairs by which TCP connections are
|
||
typically distinguished. As a result of this shared state, T/TCP
|
||
allows a receiver to pass data in the SYN segment to the receiving
|
||
application, prior to the completion of the three-way handshake,
|
||
without compromising the integrity of the connection. In effect, this
|
||
shared state caches a partial handshake from the previous connection,
|
||
which is a variant of the more general issue of TCB sharing.
|
||
|
||
Sharing state among connections (including transfers using non-TCP
|
||
protocols) is further investigated in [BRS99].
|
||
|
||
3.8.3 Implementation Issues
|
||
|
||
Sharing TCP state across connections requires changes to the sender's
|
||
TCP stack, and possibly the receiver's TCP stack (as in the case of
|
||
T/TCP, for example). Sharing TCP state may make a particular TCP
|
||
connection more aggressive. However, the aggregate traffic should be
|
||
more conservative than a group of independent TCP connections.
|
||
Therefore, sharing TCP state should be safe for use in shared
|
||
networks. Note that state sharing does not present any new security
|
||
problems within multiuser hosts. In such a situation, users can
|
||
steal network resources from one another with or without state
|
||
sharing.
|
||
|
||
3.8.4 Topology Considerations
|
||
|
||
It is expected that sharing state across TCP connections may be
|
||
useful in all network environments presented in section 2.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 31]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.8.5 Possible Interaction and Relationships with Other Research
|
||
|
||
The state sharing outlined above is very similar to the Congestion
|
||
Manager proposal [BRS99] that attempts to share congestion control
|
||
information among both TCP and UDP flows between a pair of hosts.
|
||
|
||
3.9 ACK Congestion Control
|
||
|
||
In highly asymmetric networks, a low-speed return link can restrict
|
||
the performance of the data flow on a high-speed forward link by
|
||
limiting the flow of acknowledgments returned to the data sender.
|
||
For example, if the data sender uses 1500 byte segments, and the
|
||
receiver generates 40 byte acknowledgments (IPv4, TCP without
|
||
options), the reverse link will congest with ACKs for asymmetries of
|
||
more than 75:1 if delayed ACKs are used, and 37:1 if every segment is
|
||
acknowledged. For a 1.5 Mb/second data link, ACK congestion will
|
||
occur for reverse link speeds below 20 kilobits/sec. These levels of
|
||
asymmetry will readily occur if the reverse link is shared among
|
||
multiple satellite receivers, as is common in many VSAT satellite
|
||
networks. If a terrestrial modem link is used as a reverse link, ACK
|
||
congestion is also likely, especially as the speed of the forward
|
||
link is increased. Current congestion control mechanisms are aimed
|
||
at controlling the flow of data segments, but do not affect the flow
|
||
of ACKs.
|
||
|
||
In [KVR98] the authors point out that the flow of acknowledgments can
|
||
be restricted on the low-speed link not only by the bandwidth of the
|
||
link, but also by the queue length of the router. The router may
|
||
limit its queue length by counting packets, not bytes, and therefore
|
||
begin discarding ACKs even if there is enough bandwidth to forward
|
||
them.
|
||
|
||
3.9.1 Mitigation Description
|
||
|
||
ACK Congestion Control extends the concept of flow control for data
|
||
segments to acknowledgment segments. In the method described in
|
||
[BPK97], any intermediate router can mark an acknowledgment with an
|
||
Explicit Congestion Notification (ECN) bit once the queue occupancy
|
||
in the router exceeds a given threshold. The data sender (which
|
||
receives the acknowledgment) must "echo" the ECN bit back to the data
|
||
receiver (see section 3.3.3 for a more detailed discussion of ECN).
|
||
The proposed algorithm for marking ACK segments with an ECN bit is
|
||
Random Early Detection (RED) [FJ93]. In response to the receipt of
|
||
ECN marked data segments, the receiver will dynamically reduce the
|
||
rate of acknowledgments using a multiplicative backoff. Once
|
||
segments without ECN are received, the data receiver speeds up
|
||
acknowledgments using a linear increase, up to a rate of either 1 (no
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 32]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
delayed ACKs) or 2 (normal delayed ACKs) data segments per ACK. The
|
||
authors suggest that an ACK be generated at least once per window,
|
||
and ideally a few times per window.
|
||
|
||
As in the RED congestion control mechanism for data flow, the
|
||
bottleneck gateway can randomly discard acknowledgments, rather than
|
||
marking them with an ECN bit, once the queue fills beyond a given
|
||
threshold.
|
||
|
||
3.9.2 Research
|
||
|
||
[BPK97] analyze the effect of ACK Congestion Control (ACC) on the
|
||
performance of an asymmetric network. They note that the use of ACC,
|
||
and indeed the use of any scheme which reduces the frequency of
|
||
acknowledgments, has potential unwanted side effects. Since each ACK
|
||
will acknowledge more than the usual one or two data segments, the
|
||
likelihood of segment bursts from the data sender is increased. In
|
||
addition, congestion window growth may be impeded if the receiver
|
||
grows the window by counting received ACKs, as mandated by
|
||
[Ste97,APS99]. The authors therefore combine ACC with a series of
|
||
modifications to the data sender, referred to as TCP Sender
|
||
Adaptation (SA). SA combines a limit on the number of segments sent
|
||
in a burst, regardless of window size. In addition, byte counting
|
||
(as opposed to ACK counting) is employed for window growth. Note
|
||
that byte counting has been studied elsewhere and can introduce
|
||
side-effects, as well [All98].
|
||
|
||
The results presented in [BPK97] indicate that using ACC and SA will
|
||
reduce the bursts produced by ACK losses in unmodified (Reno) TCP.
|
||
In cases where these bursts would lead to data loss at an
|
||
intermediate router, the ACC and SA modification significantly
|
||
improve the throughput for a single data transfer. The results
|
||
further suggest that the use of ACC and SA significantly improve
|
||
fairness between two simultaneous transfers.
|
||
|
||
ACC is further reported to prevent the increase in round trip time
|
||
(RTT) that occurs when an unmodified TCP fills the reverse router
|
||
queue with acknowledgments.
|
||
|
||
In networks where the forward direction is expected to suffer losses
|
||
in one of the gateways, due to queue limitations, the authors report
|
||
at best a very slight improvement in performance for ACC and SA,
|
||
compared to unmodified Reno TCP.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 33]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.9.3 Implementation Issues
|
||
|
||
Both ACC and SA require modification of the sending and receiving
|
||
hosts, as well as the bottleneck gateway. The current research
|
||
suggests that implementing ACC without the SA modifications results
|
||
in a data sender which generates potentially disruptive segment
|
||
bursts. It should be noted that ACC does require host modifications
|
||
if it is implemented in the way proposed in [BPK97]. The authors
|
||
note that ACC can be implemented by discarding ACKs (which requires
|
||
only a gateway modification, but no changes in the hosts), as opposed
|
||
to marking them with ECN. Such an implementation may, however,
|
||
produce bursty data senders if it is not combined with a burst
|
||
mitigation technique. ACC requires changes to the standard ACKing
|
||
behavior of a receiving TCP and therefore is not recommended for use
|
||
in shared networks.
|
||
|
||
3.9.4 Topology Considerations
|
||
|
||
Neither ACC nor SA require the storage of state in the gateway.
|
||
These schemes should therefore be applicable for all topologies,
|
||
provided that the hosts using the satellite or hybrid network can be
|
||
modified. However, these changes are expected to be especially
|
||
beneficial to networks containing asymmetric satellite links.
|
||
|
||
3.9.5 Possible Interaction and Relationships with Other Research
|
||
|
||
Note that ECN is a pre-condition for using ACK congestion control.
|
||
Additionally, the ACK Filtering algorithm discussed in the next
|
||
section attempts to solve the same problem as ACC. Choosing between
|
||
the two algorithms (or another mechanism) is currently an open
|
||
research question.
|
||
|
||
3.10 ACK Filtering
|
||
|
||
ACK Filtering (AF) is designed to address the same ACK congestion
|
||
effects described in 3.9. Contrary to ACC, however, AF is designed
|
||
to operate without host modifications.
|
||
|
||
3.10.1 Mitigation Description
|
||
|
||
AF takes advantage of the cumulative acknowledgment structure of TCP.
|
||
The bottleneck router in the reverse direction (the low speed link)
|
||
must be modified to implement AF. Upon receipt of a segment which
|
||
represents a TCP acknowledgment, the router scans the queue for
|
||
redundant ACKs for the same connection, i.e. ACKs which acknowledge
|
||
portions of the window which are included in the most recent ACK.
|
||
All of these "earlier" ACKs are removed from the queue and discarded.
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 34]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
The router does not store state information, but does need to
|
||
implement the additional processing required to find and remove
|
||
segments from the queue upon receipt of an ACK.
|
||
|
||
3.10.2 Research
|
||
|
||
[BPK97] analyzes the effects of AF. As is the case in ACC, the use
|
||
of ACK filtering alone would produce significant sender bursts, since
|
||
the ACKs will be acknowledging more previously-unacknowledged data.
|
||
The SA modifications described in 3.9.2 could be used to prevent
|
||
those bursts, at the cost of requiring host modifications. To
|
||
prevent the need for modifications in the TCP stack, AF is more
|
||
likely to be paired with the ACK Reconstruction (AR) technique, which
|
||
can be implemented at the router where segments exit the slow reverse
|
||
link.
|
||
|
||
AR inspects ACKs exiting the link, and if it detects large "gaps" in
|
||
the ACK sequence, it generates additional ACKs to reconstruct an
|
||
acknowledgment flow which more closely resembles what the data sender
|
||
would have seen had ACK Filtering not been introduced. AR requires
|
||
two parameters; one parameter is the desired ACK frequency, while the
|
||
second controls the spacing, in time, between the release of
|
||
consecutive reconstructed ACKs.
|
||
|
||
In [BPK97], the authors show the combination of AF and AR to increase
|
||
throughput, in the networks studied, over both unmodified TCP and the
|
||
ACC/SA modifications. Their results also strongly suggest that the
|
||
use of AF alone, in networks where congestion losses are expected,
|
||
decreases performance (even below the level of unmodified TCP Reno)
|
||
due to sender bursting.
|
||
|
||
AF delays acknowledgments from arriving at the receiver by dropping
|
||
earlier ACKs in favor of later ACKs. This process can cause a slight
|
||
hiccup in the transmission of new data by the TCP sender.
|
||
|
||
3.10.3 Implementation Issues
|
||
|
||
Both ACK Filtering and ACK Reconstruction require only router
|
||
modification. However, the implementation of AR requires some
|
||
storage of state information in the exit router. While AF does not
|
||
require storage of state information, its use without AR (or SA)
|
||
could produce undesired side effects. Furthermore, more research is
|
||
required regarding appropriate ranges for the parameters needed in
|
||
AR.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 35]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
3.10.4 Topology Considerations
|
||
|
||
AF and AR appear applicable to all topologies, assuming that the
|
||
storage of state information in AR does not prove to be prohibitive
|
||
for routers which handle large numbers of flows. The fact that TCP
|
||
stack modifications are not required for AF/AR makes this approach
|
||
attractive for hybrid networks and networks with diverse types of
|
||
hosts. These modifications, however, are expected to be most
|
||
beneficial in asymmetric network paths.
|
||
|
||
On the other hand, the implementation of AF/AR requires the routers
|
||
to examine the TCP header, which prohibits their use in secure
|
||
networks where IPSEC is deployed. In such networks, AF/AR can be
|
||
effective only inside the security perimeter of a private, or virtual
|
||
private network, or in private networks where the satellite link is
|
||
protected only by link-layer encryption (as opposed to IPSEC). ACK
|
||
Filtering is safe to use in shared networks (from a congestion
|
||
control point-of-view), as the number of ACKs can only be reduced,
|
||
which makes TCP less aggressive. However, note that while TCP is
|
||
less aggressive, the delays that AF induces (outlined above) can lead
|
||
to larger bursts than would otherwise occur.
|
||
|
||
3.10.5 Possible Interaction and Relationships with Other Research
|
||
|
||
ACK Filtering attempts to solve the same problem as ACK Congestion
|
||
Control (as outlined in section 3.9). Which of the two algorithms is
|
||
more appropriate is currently an open research question.
|
||
|
||
4 Conclusions
|
||
|
||
This document outlines TCP items that may be able to mitigate the
|
||
performance problems associated with using TCP in networks containing
|
||
satellite links. These mitigations are not IETF standards track
|
||
mechanisms and require more study before being recommended by the
|
||
IETF. The research community is encouraged to examine the above
|
||
mitigations in an effort to determine which are safe for use in
|
||
shared networks such as the Internet.
|
||
|
||
5 Security Considerations
|
||
|
||
Several of the above sections noted specific security concerns which
|
||
a given mitigation aggravates.
|
||
|
||
Additionally, any form of wireless communication link is more
|
||
susceptible to eavesdropping security attacks than standard wire-
|
||
based links due to the relative ease with which an attacker can watch
|
||
the network and the difficultly in finding attackers monitoring the
|
||
network.
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 36]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
6 Acknowledgments
|
||
|
||
Our thanks to Aaron Falk and Sally Floyd, who provided very helpful
|
||
comments on drafts of this document.
|
||
|
||
7 References
|
||
|
||
[AFP98] Allman, M., Floyd, S. and C. Partridge, "Increasing TCP's
|
||
Initial Window", RFC 2414, September 1998.
|
||
|
||
[AGS99] Allman, M., Glover, D. and L. Sanchez, "Enhancing TCP Over
|
||
Satellite Channels using Standard Mechanisms", BCP 28, RFC
|
||
2488, January 1999.
|
||
|
||
[AHKO97] Mark Allman, Chris Hayes, Hans Kruse, Shawn Ostermann. TCP
|
||
Performance Over Satellite Links. In Proceedings of the
|
||
5th International Conference on Telecommunication Systems,
|
||
March 1997.
|
||
|
||
[AHO98] Mark Allman, Chris Hayes, Shawn Ostermann. An Evaluation
|
||
of TCP with Larger Initial Windows. Computer Communication
|
||
Review, 28(3), July 1998.
|
||
|
||
[AKO96] Mark Allman, Hans Kruse, Shawn Ostermann. An Application-
|
||
Level Solution to TCP's Satellite Inefficiencies. In
|
||
Proceedings of the First International Workshop on
|
||
Satellite-based Information Services (WOSBIS), November
|
||
1996.
|
||
|
||
[All97a] Mark Allman. Improving TCP Performance Over Satellite
|
||
Channels. Master's thesis, Ohio University, June 1997.
|
||
|
||
[All97b] Mark Allman. Fixing Two BSD TCP Bugs. Technical Report
|
||
CR-204151, NASA Lewis Research Center, October 1997.
|
||
|
||
[All98] Mark Allman. On the Generation and Use of TCP
|
||
Acknowledgments. ACM Computer Communication Review, 28(5),
|
||
October 1998.
|
||
|
||
[AOK95] Mark Allman, Shawn Ostermann, Hans Kruse. Data Transfer
|
||
Efficiency Over Satellite Circuits Using a Multi-Socket
|
||
Extension to the File Transfer Protocol (FTP). In
|
||
Proceedings of the ACTS Results Conference, NASA Lewis
|
||
Research Center, September 1995.
|
||
|
||
[AP99] Mark Allman, Vern Paxson. On Estimating End-to-End Network
|
||
Path Properties. ACM SIGCOMM, September 1999.
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 37]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
[APS99] Allman, M., Paxson, V. and W. Richard Stevens, "TCP
|
||
Congestion Control", RFC 2581, April 1999.
|
||
|
||
[BCC+98] Braden, B., Clark, D., Crowcroft, J., Davie, B., Deering,
|
||
S., Estrin, D., Floyd, S., Jacobson, V., Minshall, G.,
|
||
Partridge, C., Peterson, L., Ramakrishnan, K., Shenker, S.,
|
||
Wroclawski, J. and L. Zhang, "Recommendations on Queue
|
||
Management and Congestion Avoidance in the Internet", RFC
|
||
2309, April 1998.
|
||
|
||
[BKVP97] B. Bakshi and P. Krishna and N. Vaidya and D. Pradham,
|
||
"Improving Performance of TCP over Wireless Networks", 17th
|
||
International Conference on Distributed Computing Systems
|
||
(ICDCS), May 1997.
|
||
|
||
[BPK97] Hari Balakrishnan, Venkata N. Padmanabhan, and Randy H.
|
||
Katz. The Effects of Asymmetry on TCP Performance. In
|
||
Proceedings of the ACM/IEEE Mobicom, Budapest, Hungary,
|
||
ACM. September, 1997.
|
||
|
||
[BPK98] Hari Balakrishnan, Venkata Padmanabhan, Randy H. Katz. The
|
||
Effects of Asymmetry on TCP Performance. ACM Mobile
|
||
Networks and Applications (MONET), 1998 (to appear).
|
||
|
||
[BPSK96] H. Balakrishnan and V. Padmanabhan and S. Sechan and R.
|
||
Katz, "A Comparison of Mechanisms for Improving TCP
|
||
Performance over Wireless Links", ACM SIGCOMM, August 1996.
|
||
|
||
[Bra89] Braden, R., "Requirements for Internet Hosts --
|
||
Communication Layers", STD 3, RFC 1122, October 1989.
|
||
|
||
[Bra92] Braden, R., "Transaction TCP -- Concepts", RFC 1379,
|
||
September 1992.
|
||
|
||
[Bra94] Braden, R., "T/TCP -- TCP Extensions for Transactions:
|
||
Functional Specification", RFC 1644, July 1994.
|
||
|
||
[BRS99] Hari Balakrishnan, Hariharan Rahul, and Srinivasan Seshan.
|
||
An Integrated Congestion Management Architecture for
|
||
Internet Hosts. ACM SIGCOMM, September 1999.
|
||
|
||
[ddKI99] M. deVivo, G.O. deVivo, R. Koeneke, G. Isern. Internet
|
||
Vulnerabilities Related to TCP/IP and T/TCP. Computer
|
||
Communication Review, 29(1), January 1999.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 38]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
[DENP97] Mikael Degermark, Mathias Engan, Bjorn Nordgren, Stephen
|
||
Pink. Low-Loss TCP/IP Header Compression for Wireless
|
||
Networks. ACM/Baltzer Journal on Wireless Networks, vol.3,
|
||
no.5, p. 375-87.
|
||
|
||
[DMT96] R. C. Durst and G. J. Miller and E. J. Travis, "TCP
|
||
Extensions for Space Communications", Mobicom 96, ACM, USA,
|
||
1996.
|
||
|
||
[DNP99] Degermark, M., Nordgren, B. and S. Pink, "IP Header
|
||
Compression", RFC 2507, February 1999.
|
||
|
||
[FF96] Kevin Fall, Sally Floyd. Simulation-based Comparisons of
|
||
Tahoe, Reno, and SACK TCP. Computer Communication Review,
|
||
V. 26 N. 3, July 1996, pp. 5-21.
|
||
|
||
[FF99] Sally Floyd, Kevin Fall. Promoting the Use of End-to-End
|
||
Congestion Control in the Internet, IEEE/ACM Transactions
|
||
on Networking, August 1999.
|
||
|
||
[FH99] Floyd, S. and T. Henderson, "The NewReno Modification to
|
||
TCP's Fast Recovery Algorithm", RFC 2582, April 1999.
|
||
|
||
[FJ93] Sally Floyd and Van Jacobson. Random Early Detection
|
||
Gateways for Congestion Avoidance, IEEE/ACM Transactions on
|
||
Networking, V. 1 N. 4, August 1993.
|
||
|
||
[Flo91] Sally Floyd. Connections with Multiple Congested Gateways
|
||
in Packet-Switched Networks, Part 1: One-way Traffic. ACM
|
||
Computer Communications Review, V. 21, N. 5, October 1991.
|
||
|
||
[Flo94] Sally Floyd. TCP and Explicit Congestion Notification, ACM
|
||
Computer Communication Review, V. 24 N. 5, October 1994.
|
||
|
||
[Flo99] Sally Floyd. "Re: TCP and out-of-order delivery", email to
|
||
end2end-interest mailing list, February, 1999.
|
||
|
||
[Hah94] Jonathan Hahn. MFTP: Recent Enhancements and Performance
|
||
Measurements. Technical Report RND-94-006, NASA Ames
|
||
Research Center, June 1994.
|
||
|
||
[Hay97] Chris Hayes. Analyzing the Performance of New TCP
|
||
Extensions Over Satellite Links. Master's Thesis, Ohio
|
||
University, August 1997.
|
||
|
||
[HK98] Tom Henderson, Randy Katz. On Improving the Fairness of
|
||
TCP Congestion Avoidance. Proceedings of IEEE Globecom `98
|
||
Conference, 1998.
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 39]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
[HK99] Tim Henderson, Randy Katz. Transport Protocols for
|
||
Internet-Compatible Satellite Networks, IEEE Journal on
|
||
Selected Areas of Communications, February, 1999.
|
||
|
||
[Hoe95] J. Hoe, Startup Dynamics of TCP's Congestion Control and
|
||
Avoidance Schemes. Master's Thesis, MIT, 1995.
|
||
|
||
[Hoe96] Janey Hoe. Improving the Startup Behavior of a Congestion
|
||
Control Scheme for TCP. In ACM SIGCOMM, August 1996.
|
||
|
||
[IL92] David Iannucci and John Lakashman. MFTP: Virtual TCP
|
||
Window Scaling Using Multiple Connections. Technical
|
||
Report RND-92-002, NASA Ames Research Center, January 1992.
|
||
|
||
[Jac88] Van Jacobson. Congestion Avoidance and Control. In
|
||
Proceedings of the SIGCOMM '88, ACM. August, 1988.
|
||
|
||
[Jac90] Jacobson, V., "Compressing TCP/IP Headers", RFC 1144,
|
||
February 1990.
|
||
|
||
[JBB92] Jacobson, V., Braden, R. and D. Borman, "TCP Extensions for
|
||
High Performance", RFC 1323, May 1992.
|
||
|
||
[JK92] Van Jacobson and Mike Karels. Congestion Avoidance and
|
||
Control. Originally appearing in the proceedings of
|
||
SIGCOMM '88 by Jacobson only, this revised version includes
|
||
an additional appendix. The revised version is available
|
||
at ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z. 1992.
|
||
|
||
[Joh95] Stacy Johnson. Increasing TCP Throughput by Using an
|
||
Extended Acknowledgment Interval. Master's Thesis, Ohio
|
||
University, June 1995.
|
||
|
||
[KAGT98] Hans Kruse, Mark Allman, Jim Griner, Diepchi Tran. HTTP
|
||
Page Transfer Rates Over Geo-Stationary Satellite Links.
|
||
March 1998. Proceedings of the Sixth International
|
||
Conference on Telecommunication Systems.
|
||
|
||
[Kes91] Srinivasan Keshav. A Control Theoretic Approach to Flow
|
||
Control. In ACM SIGCOMM, September 1991.
|
||
|
||
[KM97] S. Keshav, S. Morgan. SMART Retransmission: Performance
|
||
with Overload and Random Losses. Proceeding of Infocom.
|
||
1997.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 40]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
[KVR98] Lampros Kalampoukas, Anujan Varma, and K. K.Ramakrishnan.
|
||
Improving TCP Throughput Over Two-Way Asymmetric Links:
|
||
Analysis and Solutions. Measurement and Modeling of
|
||
Computer Systems, 1998, Pages 78-89.
|
||
|
||
[MM96a] M. Mathis, J. Mahdavi, "Forward Acknowledgment: Refining
|
||
TCP Congestion Control," Proceedings of SIGCOMM'96, August,
|
||
1996, Stanford, CA. Available from
|
||
http://www.psc.edu/networking/papers/papers.html
|
||
|
||
[MM96b] M. Mathis, J. Mahdavi, "TCP Rate-Halving with Bounding
|
||
Parameters" Available from
|
||
http://www.psc.edu/networking/papers/FACKnotes/current.
|
||
|
||
[MMFR96] Mathis, M., Mahdavi, J., Floyd, S. and A. Romanow, "TCP
|
||
Selective Acknowledgment Options", RFC 2018, October 1996.
|
||
|
||
[MSMO97] M. Mathis, J. Semke, J. Mahdavi, T. Ott, "The Macroscopic
|
||
Behavior of the TCP Congestion Avoidance
|
||
Algorithm",Computer Communication Review, volume 27,
|
||
number3, July 1997. Available from
|
||
http://www.psc.edu/networking/papers/papers.html
|
||
|
||
[MV98] Miten N. Mehta and Nitin H. Vaidya. Delayed Duplicate-
|
||
Acknowledgments: A Proposal to Improve Performance of TCP
|
||
on Wireless Links. Technical Report 98-006, Department of
|
||
Computer Science, Texas A&M University, February 1998.
|
||
|
||
[Nic97] Kathleen Nichols. Improving Network Simulation with
|
||
Feedback. Com21, Inc. Technical Report. Available from
|
||
http://www.com21.com/pages/papers/068.pdf.
|
||
|
||
[PADHV99] Paxson, V., Allman, M., Dawson, S., Heavens, I. and B.
|
||
Volz, "Known TCP Implementation Problems", RFC 2525, March
|
||
1999.
|
||
|
||
[Pax97] Vern Paxson. Automated Packet Trace Analysis of TCP
|
||
Implementations. In Proceedings of ACM SIGCOMM, September
|
||
1997.
|
||
|
||
[PN98] Poduri, K. and K. Nichols, "Simulation Studies of Increased
|
||
Initial TCP Window Size", RFC 2415, September 1998.
|
||
|
||
[Pos81] Postel, J., "Transmission Control Protocol", STD 7, RFC
|
||
793, September 1981.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 41]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
[RF99] Ramakrishnan, K. and S. Floyd, "A Proposal to add Explicit
|
||
Congestion Notification (ECN) to IP", RFC 2481, January
|
||
1999.
|
||
|
||
[SF98] Nihal K. G. Samaraweera and Godred Fairhurst,
|
||
"Reinforcement of TCP error Recovery for Wireless
|
||
Communication", Computer Communication Review, volume 28,
|
||
number 2, April 1998.
|
||
|
||
[SP98] Shepard, T. and C. Partridge, "When TCP Starts Up With Four
|
||
Packets Into Only Three Buffers", RFC 2416, September 1998.
|
||
|
||
[Ste97] Stevens, W., "TCP Slow Start, Congestion Avoidance, Fast
|
||
Retransmit, and Fast Recovery Algorithms", RFC 2001,
|
||
January 1997.
|
||
|
||
[Sut98] B. Suter, T. Lakshman, D. Stiliadis, and A. Choudhury.
|
||
Design Considerations for Supporting TCP with Per-flow
|
||
Queueing. Proceedings of IEEE Infocom `98 Conference,
|
||
1998.
|
||
|
||
[Tou97] Touch, J., "TCP Control Block Interdependence", RFC 2140,
|
||
April 1997.
|
||
|
||
[VH97a] Vikram Visweswaraiah and John Heidemann. Improving Restart
|
||
of Idle TCP Connections. Technical Report 97-661,
|
||
University of Southern California, 1997.
|
||
|
||
[VH97b] Vikram Visweswaraiah and John Heidemann. Rate-based pacing
|
||
Source Code Distribution, Web page:
|
||
http://www.isi.edu/lsam/publications/rate_based_pacing/README.html
|
||
November, 1997.
|
||
|
||
[VH98] Vikram Visweswaraiah and John Heidemann. Improving Restart
|
||
of Idle TCP Connections (revised). Submitted for
|
||
publication.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 42]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
8 Authors' Addresses
|
||
|
||
Mark Allman
|
||
NASA Glenn Research Center/BBN Technologies
|
||
Lewis Field
|
||
21000 Brookpark Rd. MS 54-2
|
||
Cleveland, OH 44135
|
||
|
||
EMail: mallman@grc.nasa.gov
|
||
http://roland.grc.nasa.gov/~mallman
|
||
|
||
|
||
Spencer Dawkins
|
||
Nortel
|
||
P.O.Box 833805
|
||
Richardson, TX 75083-3805
|
||
|
||
EMail: Spencer.Dawkins.sdawkins@nt.com
|
||
|
||
|
||
Dan Glover
|
||
NASA Glenn Research Center
|
||
Lewis Field
|
||
21000 Brookpark Rd. MS 3-6
|
||
Cleveland, OH 44135
|
||
|
||
EMail: Daniel.R.Glover@grc.nasa.gov
|
||
http://roland.grc.nasa.gov/~dglover
|
||
|
||
|
||
Jim Griner
|
||
NASA Glenn Research Center
|
||
Lewis Field
|
||
21000 Brookpark Rd. MS 54-2
|
||
Cleveland, OH 44135
|
||
|
||
EMail: jgriner@grc.nasa.gov
|
||
http://roland.grc.nasa.gov/~jgriner
|
||
|
||
|
||
Diepchi Tran
|
||
NASA Glenn Research Center
|
||
Lewis Field
|
||
21000 Brookpark Rd. MS 54-2
|
||
Cleveland, OH 44135
|
||
|
||
EMail: dtran@grc.nasa.gov
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 43]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
Tom Henderson
|
||
University of California at Berkeley
|
||
Phone: +1 (510) 642-8919
|
||
|
||
EMail: tomh@cs.berkeley.edu
|
||
URL: http://www.cs.berkeley.edu/~tomh/
|
||
|
||
|
||
John Heidemann
|
||
University of Southern California/Information Sciences Institute
|
||
4676 Admiralty Way
|
||
Marina del Rey, CA 90292-6695
|
||
|
||
EMail: johnh@isi.edu
|
||
|
||
|
||
Joe Touch
|
||
University of Southern California/Information Sciences Institute
|
||
4676 Admiralty Way
|
||
Marina del Rey, CA 90292-6601
|
||
USA
|
||
|
||
Phone: +1 310-448-9151
|
||
Fax: +1 310-823-6714
|
||
URL: http://www.isi.edu/touch
|
||
EMail: touch@isi.edu
|
||
|
||
|
||
Hans Kruse
|
||
J. Warren McClure School of Communication Systems Management
|
||
Ohio University
|
||
9 S. College Street
|
||
Athens, OH 45701
|
||
|
||
Phone: 740-593-4891
|
||
Fax: 740-593-4889
|
||
EMail: hkruse1@ohiou.edu
|
||
http://www.csm.ohiou.edu/kruse
|
||
|
||
|
||
Shawn Ostermann
|
||
School of Electrical Engineering and Computer Science
|
||
Ohio University
|
||
416 Morton Hall
|
||
Athens, OH 45701
|
||
|
||
Phone: (740) 593-1234
|
||
EMail: ostermann@cs.ohiou.edu
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 44]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
Keith Scott
|
||
The MITRE Corporation
|
||
M/S W650
|
||
1820 Dolley Madison Blvd.
|
||
McLean VA 22102-3481
|
||
|
||
EMail: kscott@mitre.org
|
||
|
||
|
||
Jeffrey Semke
|
||
Pittsburgh Supercomputing Center
|
||
4400 Fifth Ave.
|
||
Pittsburgh, PA 15213
|
||
|
||
EMail: semke@psc.edu
|
||
http://www.psc.edu/~semke
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 45]
|
||
|
||
RFC 2760 Ongoing TCP Research Related to Satellites February 2000
|
||
|
||
|
||
9 Full Copyright Statement
|
||
|
||
Copyright (C) The Internet Society (2000). All Rights Reserved.
|
||
|
||
This document and translations of it may be copied and furnished to
|
||
others, and derivative works that comment on or otherwise explain it
|
||
or assist in its implementation may be prepared, copied, published
|
||
and distributed, in whole or in part, without restriction of any
|
||
kind, provided that the above copyright notice and this paragraph are
|
||
included on all such copies and derivative works. However, this
|
||
document itself may not be modified in any way, such as by removing
|
||
the copyright notice or references to the Internet Society or other
|
||
Internet organizations, except as needed for the purpose of
|
||
developing Internet standards in which case the procedures for
|
||
copyrights defined in the Internet Standards process must be
|
||
followed, or as required to translate it into languages other than
|
||
English.
|
||
|
||
The limited permissions granted above are perpetual and will not be
|
||
revoked by the Internet Society or its successors or assigns.
|
||
|
||
This document and the information contained herein is provided on an
|
||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
||
Acknowledgement
|
||
|
||
Funding for the RFC Editor function is currently provided by the
|
||
Internet Society.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Allman, et al. Informational [Page 46]
|
||
|