# A TCP Acceleration Algorithm for Aerospace-Ground Service Networks
## 3 Transmission Acceleration Using BoostTCP
### Congestion Control Algorithm  
The flowchart of the BoostTCP congestion control algorithm is presented in Figure 1. It defines the smoothed throughput rate, which can reflect the actual throughput rate and roundtrip time, and controls the growth mode of the congestion window (CWND) based on different factors, such as the actual throughput rate and roundtrip time. The smoothed throughput rate variation is used to determine the most suitable CWND growth mode, which follows the principle of maximum throughput rate. As long as increasing the CWND value improves the smoothed throughput rate, the CWND value will be continuously increased. However, BoostTCP does not use the smoothed throughput rate to determine the necessary CWND reduction, and the CWND value to reduce is determined based on packet loss. CWND growth can be classified into three types: exponential growth, linear growth, and termination. The exponential growth mode assumes that the current CWND value is one. After the first, second, and third increases, the CWND value is two, four, and eight, and further changes follow the exponential trend. Each time the CWND value increases linearly, it is increased by a fixed value. It should be noted that the CWND value does not increase during the termination stage and remains constant. The specific steps of the BoostTCP congestion control algorithm are as follows:  
**Step 1**. In the initial state, set the smoothed throughput rate to B = 0 and the growth mode (GM) of CWND to exponential growth;  
**Step 2**. Every time a new data package is sent, record the sending time \(\mathrm{T_{S}}\) of the package and the total amount of data \(\mathrm{F_{S}}\) that has been sent and has not been acknowledged (ACKed) yet;  
**Step 3**. When the ACK response is received, if the ACK corresponds to one or more data packages that have been sent and there are no retransmitted data packages, the data package in the acknowledged messages with the highest sequence number (SEQ) is selected, and the following parameters called instant throughput rate and smoothed throughput rate are calculated:  
The instant throughput rate is calculated according to \(\mathrm{B_{C}}=\mathrm{F_{S}}/(\mathrm{T}-\mathrm{T_{S}})\), where \(\mathrm{T}\) denotes the current time; \(\mathrm{T_{S}}\) denotes the sending time of the data package with the highest SEQ; and \(\mathrm{F_{S}}\) denotes the total data amount that has been sent at the time \(\mathrm{T_{S}}\) but has not been subject to ACK yet. As mentioned above, \(\mathrm{T_{S}}\) and \(\mathrm{F_{S}}\) are recorded when the data package with the highest SEQ is sent. The smoothed throughput rate is obtained by B = \((1-\alpha)\)B' +\(\alpha\mathrm{B_{C}}\), where \(\alpha\) denotes a constant parameter and B' denotes the previous smoothed throughput rate set in the initial state or obtained in the previous calculation iteration. BoostTCP uses a first-order exponential smoothing formula to compute the smoothed throughput rate. This is because network delay often fluctuates constantly due to various reasons, causing the real-time throughput rate to fluctuate accordingly. After smoothing, some high-frequency noise can be eliminated, and the network throughput can be estimated more accurately;  
**Step 4**. Determine the variation state of the smoothed throughput rate B and control the CWND growth mode GM accordingly. Particularly, the two following situations are possible:  
* If B is higher than the previous smoothed throughput rate set in the initial state or obtained in the last calculation and exceeds the set value \(\gamma\), then the GM is an exponential GM;
* If B decreases three times in a row and the total amount of the three reductions is not less than the preset value of \(\Delta\), then judge the SRTT value: if SRTT \(\leq\eta\cdot\)RTTMIN,  
Figure 1: Flowchart of the BoostTCP congestion control algorithm. then the GM is a linear GM; otherwise, the GM is a termination GM. SRTT denotes the smooth roundtrip time, and RTTMIN denotes the minimum roundtrip time. **Step 5**.