Various studies show that up to 80% of existing Internetmultimedia services are HTTP/TCP based . Congestioncontrol algorithm is an integral component of TCP thatdirectly determines the performance of the protocol. Based onthe inputs used by the congestion control algorithms, TCPcongestion control algorithms can be categorized into slowstart, congestion avoidance, fast retransmit and fast recoveryalgorithms . Each of these is described as thus:
Slow-start algorithm is used when congestion window(cwnd) <slow start threshold (ssthresh), while the congestionavoidance algorithm is used when cwnd >ssthresh. Whencwnd and ssthresh are equal, the sender may use either slowstart or congestion avoidance . The SYN/ACK and theacknowledgment of the SYN/ACK must not increase the sizeof the cwnd. Furthermore, if the SYN or SYN/ACK is lost, theinitial window used by a sender after a correctly transmittedSYN must be one segment consisting of at most SenderMaximum Segment Size (SMSS) bytes . Much of thedifficulties in understanding these sizes and their relationshiphad been that of the variable sizes of the IP and TCP headers.Both protocols have varying sizes.During slow start, a TCP increments cwnd by at mostSMSS bytes for each ACK received that cumulativelyacknowledges new data. Slow start ends when cwnd exceedsssthresh (or, optionally, when it reaches it, as noted above) orwhen congestion is observed. While traditionally TCPimplementations have increased cwnd by precisely SMSSbytes upon receipt of an ACK covering new data, weRECOMMEND that TCP implementations increase cwnd, asshown below:cwnd +=min (N, SMSS)where N is the number of previously unacknowledged bytesacknowledged in the incoming ACK . This adjustment ispart of Appropriate Byte Counting and provides robustnessagainst misbehaving receivers that may attempt to induce asender to artificially inflate cwnd using a mechanism knownas "ACK Division". ACK Division consists of a receiversending multiple ACKs for a single TCP data segment, eachacknowledging only a portion of its data. A TCP thatincrements cwnd by SMSS for each such ACK willinappropriately inflate the amount of data injected into thenetwork . Hosts are not required to reassemble infinitelylarge TCP datagrams. So, slow-start is part of the congestioncontrol strategy used by TCP, the data transmission protocolused by many Internet applications. Slow-start is used inconjunction with other algorithms to avoid sending more datathan the network is capable of transmitting, that is, to avoidcausing network congestion.
The slow start and congestion avoidance algorithms mustbe used by a TCP sender to control the amount of outstandingdata being injected into the network. To implement thesealgorithms, two variables are added to the TCP per-connectionstate. The cwnd is a sender-side limit on the amount of datathe sender can transmit into the network before receiving anacknowledgment (ACK), while the receiver's advertisedwindow (rwnd) is a receiver-side limit on the amount of outstanding data. The minimum of cwnd and rwnd governsdata transmission . Another state variable, the slow startthreshold (ssthresh), is used to determine whether the slowstart or congestion avoidance algorithm is used to control datatransmission . The cwnd is not to be confused with the TCP window size which is maintained at the receiver’s side
veryA TCP receiver SHOULD send an immediate duplicateACK when an out-of-order segment arrives. The purpose of this ACK is to inform the sender that a segment was receivedout-of-order and which sequence number is expected. Fromthe sender's perspective, duplicate ACKs can be caused by anumber of network problems. First, they can be caused bydropped segments. In this case, all segments after the droppedsegment will trigger duplicate ACKs until the loss is repaired.Second, duplicate ACKs can be caused by the re-ordering of data segments by the network (not a rare event along somenetwork paths). Finally, duplicate ACKs can be caused byreplication of ACK or data segments by the network. Inaddition, a TCP receiver SHOULD send an immediate ACK when the incoming segment fills in all or part of a gap in thesequence space. This will generate more timely informationfor a sender recovering from a loss through a retransmissiontimeout, a fast retransmit, or an advanced loss recoveryalgorithm . This is a way of stopping the link between thesource and destination from getting overloaded with too muchtraffic.
The TCP sender SHOULD use the "fast retransmit"algorithm to detect and repair loss, based on incomingduplicate ACKs. The fast retransmit algorithm uses the arrivalof 3 duplicate ACKs as an indication that a segment has beenlost. After receiving 3 duplicate ACKs, TCP performs aretransmission of what appears to be the missing segment,without waiting for the retransmission timer to expire. Afterthe fast retransmit algorithm sends what appears to be themissing segment, the "fast recovery" algorithm governs the
(IJCSIS) International Journal of Computer Science and Information Security,Vol. 11, No. 2, February 201331http://sites.google.com/site/ijcsis/ISSN 1947-5500