# Enhanced Multistream Fast TCP: Rapid Bandwidth Utilization after Fast-Recovery Phase
## 2 Background
TSFs are those segments which are not acknowledged so far. In normal conditions, TSF is the same as cwnd. But in the fast-recovery phase, it is different from cwnd. The algorithm sets the congestion window to ssthresh on receipt of acknowledgment of new data and quits from the fast-recovery phase. Assume cwnd = N, where N is the size of the congestion window. A pcket in left edge of the congestion window say packetfli is lost. Now, the sender can send up to packetfl(\(1+\text{N}-1\)). Meanwhile, the receiver will send \(\text{N}-1\) dupAck. The sender computes \(\text{TSF}=\text{N}-3\) on receipt of third dupAck (at this point, cwnd = N/2 + 3, that is different from TSF). It means three later packets are no longer in flight. The sender transmits the lost packet immediately. The sender now expects \(\text{N}-4\) more dupAcks followed by one new acknowledgment from the receiver. This last acknowledgment will be for the entire original congestion window that was before the loss of the packet. The sender waits for \(\text{N}/2-3\) more dupAcks to arrive, at this point, TSF is \(\text{N}-3-(\text{N}/2-3)=\text{N}/2\). The sender will resume sending new packets afterward. It will send one new packet for each subsequently arriving dupAck. This new data transmission will be from \(\text{N}+\text{i}\) to \((\text{N}+\text{i})+(\text{N}/2-1)\). At the time of receipt of acknowledgment of retransmitted lost packet, there are \(\text{N}/2-1\) unacknowledged packets from \(\text{N}+\text{i}\) to \(\text{N}+\text{i}+(\text{N}/2-2)\) in the pipe. At this point, the cwnd is \(\text{N}+\text{N}/2-1\) and the sender can now send segmentfl(\text{N}+\text{i})+(\text{N}/2-1)\). There is exactly N/2 outstanding segments. The congestion window is set to N/2 and the fast-recovery period is over now. This whole phenomenon is shown in Figure 1.  
After fast recovery, TCP gradually increases its cwnd as shown in Figure 2.  
Loss-based congestion control protocol uses additive increase to increase the congestion window; whereas delay-based congestion control protocol uses a formula to change its congestion window. This change in the congestion window gradually fills the gap. Figure 2: Illustration of congestion window management after fast retransmit and recovery. TCP Vegas is a modified implementation of Reno, and Fast TCP is a high-speed version of Vegas. Fast TCP inherits all the features of Tahoe and Reno that is retransmission timeout, fast retransmit, and fast recovery. It uses a proactive approach (delay-based congestion control) instead of a reactive approach (loss-based congestion control) to control network congestion. It uses queuing delay along with packet loss as a congestion indicator. It follows an equation-based scheme (as given in Equation (1)) to compute the congestion window to stabilize a network into a steady state. \[w\ \leftarrow\ min\left\{2w,\ (1-\gamma)w+\gamma\left(\frac{baseRTT}{RTT}w+ \alpha\right)\right\}\,, \tag{1}\]  
where \(\gamma\ \epsilon\ (0,1]\), baseRTT is the smallest round trip delay observed so far, and \(\alpha\) is a positive protocol parameter that determines the total number of packets queued in routers in equilibrium along the flow's path. TCP and all its variants transfer data over its single byte stream. Recent applications have to transfer multiple independent messages. These applications serialize the multiple independent messages over the single byte-stream of TCP for data transmission. During transmission, if a packet loss occurs, then data delivery to the application stops. In this scenario, TCP suffers head-of-line blocking. Multistream Fast TCP (MFast TCP) [19] is derived from Fast TCP. It provides multiple streams at the transport layer for simultaneous transmission of applications' multiple independent messages. Its multistream feature enables the protocol to differentiate between independent messages/streams received from application layer protocol. This feature reduces data delivery latency between transport and application layer and alleviates head of line blocking.