1 Introduction

Free-space optical (FSO) communication is an optical wireless communication technology based on the propagation of light in free space. Achieving data rates comparable to that of fiber optics without incurring exorbitant costs and requiring significant amount of time for installation, FSO is able to provide low-cost, time-constrained and high-bandwidth connectivity in various network scenarios [1].

In FSO links, one of the major performance-degrading factors, particularly for extended links, is the atmospheric turbulence [2]. The turbulence caused by solar heating and wind (even in a clear day) results in rapid fluctuations in both intensity and phase of the received signal and consequently degrades the reliability of FSO systems [3]. In order to cope with the issue, numerous techniques have been proposed in over the past decade. Among them, link adaptation technologies, such as automatic repeat request (ARQ) and adaptive modulation and coding (AMC) schemes, have recently received significant research attention due to advantages of efficiency and no additional physical infrastructures required. It is believed that link adaptation technologies will be indispensable components in the future FSO network architectures [4, 5].

On the other hand, transmission control protocol (TCP) is a reliable transport protocol for many Internet applications, including FTP, Telnet, E-mail. Nevertheless, it has been proven that the TCP performance is severely degraded in high-error-rate environments, including both radio and optical wireless (e.g., FSO) communications. Therefore, such environments pose formidable challenges to maintain the TCP reliability [6,7,8,9].

1.1 Related works

In radio wireless communications, many proposals have been reported to overcome the degradation of TCP performance. It is seen in these studies that the existence of link adaptation technologies plays an important role in improving the TCP performance [6, 7].

In FSO communications, several studies have also been devoted to modeling and evaluation of the TCP performance over FSO links. Nevertheless, in these works, the impacts of link adaptation technologies on improving the TCP performance were still not investigated thoroughly. In particular, Lee et al. focused solely on the transport layer and mathematically analyzed the TCP throughput over FSO without considering link adaptation technologies [9]. In other studies, there was the existence of ARQ, yet the transmission rate was assumed to be fixed; the authors then investigated TCP performance by using simulation tools and mathematical models (see in [10, 11], respectively). The TCP performance over FSO links has also been experimentally studied by NEC Corporation [12], and again, link adaptation technologies were not considered in this work.

Furthermore, it is important to note that most existing analytical studies of TCP performance were often done with uniform error models [9,10,11] where the error structure of different block transmissions was assumed to be independent. Nevertheless, in FSO channels, because the temporal correlation time of the atmospheric turbulence process is of the order of several milliseconds, burst errors often occur during the transmission [13], i.e., the error structure is correlated. In the literature of wireless communications, it has also been proven that uniform models might not be suitable for representing the burst error patterns due to fading phenomena [14]. Instead, Markov chain models have been introduced in this situation to accurately describe the burst errors [15, 16]. They, however, have not been considered so far in studies of TCP performance over FSO channels, which motivates us to propose this contribution.

1.2 Our contributions

This paper aims to provide a comprehensive cross-layer performance analysis for TCP over FSO links, in which both ARQ and AMC schemes are considered. It is worth mentioning that the understanding of combined effects of link adaptation technologies and FSO links on the TCP performance would be critical to design and optimize protocol parameter configurations for FSO networks under the harsh condition of atmospheric channels. The main contributions of this paper are threefold:

  • First, we develop a link level model assuming ARQ at the link layer and AMC at the physical layer. This model, therefore, captures important aspects of future FSO links architecture. It removes the limitations of existing works, which assumed either no link adaptation technologies or only ARQ employed.

  • Second, we provide a more accurate performance analysis of TCP over FSO channels. Instead of using the uniform error model, we take into account the nature of burst error through using a Markov chain error model.

  • Through our evaluation framework, we evaluate and optimize TCP performance. Specifically, we quantify the impacts of different parameters/settings of ARQ, AMC and FSO links on TCP throughput performance. We then discuss several optimization aspects for TCP performance.

In practical scenarios where FSO link is a part of the whole network connection, it is expected that our framework could help Internet service providers and network designers in qualifying TCP performance. Actually, suggestions to improving the TCP performance can also be provided through our work.

2 Network model

2.1 Network description

Fig. 1
figure 1

Network scenario with a TCP connection over FSO link employing ARQ and AMC

Figure 1 illustrates our considered end-to-end network scenario between a TCP server and a client over wired networks and an FSO link. The data are transmitted from the server to the client, which will be presented in details through network layers. The application and network layers are, nevertheless, supposed to be ignored since this work focuses on the TCP performance with effects of FSO atmospheric turbulence.

At the transport layer, one of the TCP variants is implemented, and in this paper, we adopt TCP Reno without loss of generality [17]. The performance of the others can be analyzed in the same way. The operation of TCP Reno is mainly based on the additive increase and multiplicative decrease (AIMD) algorithm, which combines linear growth of the congestion window with an exponential reduction when congestion takes place [18]. The transmitted data unit in this layer is segment with a size of \(L_{\text {TCP}}\). Each segment will be then divided into \(N_f\) small data units, i.e., frames for the data transmission at lower layers.

At the data link layer, ARQ protocol is implemented. During the data transmission, frame errors might happen, and the server does not receive any acknowledgment (ACK) before a predefined timeout. In this case, it keeps re-transmitting the frame until the ACK is successfully received. If the frame does not get through the networks after M re-transmissions, the corresponding TCP segment is assumed to be lost.

At the physical layer, data are transmitted frame by frame over wired and FSO links. In this paper, we focus on the FSO channel to analyze the effects of the atmospheric turbulence on the TCP performance. In particular, it is widely known in the literature that the FSO channel can be modeled as a random process with gamma–gamma distribution in which the probability density function (pdf) of the signal-to-noise ratio (SNR) is expressed as [19]

$$\begin{aligned} f_\gamma (\gamma )=\frac{(\alpha \beta )^\frac{\alpha +\beta }{2}}{\varGamma (\alpha )\varGamma (\beta )\bar{\gamma } ^\frac{\alpha +\beta }{4}}\gamma ^{\frac{\alpha +\beta }{4}-1}K_{\alpha -\beta }\left( 2\sqrt{\alpha \beta \sqrt{\frac{\gamma }{\bar{\gamma } }}}\right) , \end{aligned}$$
(1)

where \(\gamma \) and \(\bar{\gamma }\) are the instantaneous and average SNRs, respectively. \(\varGamma (.)\) is the gamma function and \(K_{\alpha -\beta }(.)\) is the modified Bessel function of the second kind and order \(\alpha -\beta \). Parameters \(\alpha \) and \(\beta \) describe the turbulence experienced by waves, and in the case of zero-inner scale, they are given by

$$\begin{aligned} \alpha&= \left\{ \exp \left[ \frac{0.49\sigma _R^2}{\left( 1+1.11\sigma _R^{12/5} \right) ^{7/6}} \right] -1 \right\} ^{-1}, \nonumber \\ \beta&= \left\{ \exp \left[ \frac{0.51\sigma _R^2}{\left( 1+0.69\sigma _R^{12/5} \right) ^{5/6}} \right] -1 \right\} ^{-1}. \end{aligned}$$
(2)

Here, \(\sigma _R^2\) is the Rytov variance, and in the case of plane wave propagation, it is given by

$$\begin{aligned} \sigma _R^2 = 1.23C_n^2 k^{7/6} L^{11/6}, \end{aligned}$$
(3)

where \(C_n^2\) is the altitude-dependent index of refractive structure parameter, and it typically varies from \(10^{-17}\) to \(10^{-13}\) accordingly to the atmospheric turbulence strength. L is the channel distance, and \(k=2\pi /\lambda \) is the optical wave number [20]. The cumulative distribution function (cdf) denoted by \(F_{\gamma }(\gamma )\) of \(\gamma \) can be also written as

$$\begin{aligned} F_\gamma (\gamma )=\frac{1}{\varGamma (\alpha )\varGamma (\beta )}\times G_{1,3}^{2,1}\left[ \alpha \beta \sqrt{\frac{\gamma }{\bar{\gamma } }}\mid _{{\alpha },{\beta },{0}}^{1} \right] , \end{aligned}$$
(4)

where \(G_{1,3}^{2,1}[\cdot ]\) is the Meijer’s G-function [21].

2.2 Adaptive modulation and coding (AMC)

In order to cope with the atmospheric turbulence, the adaptive modulation and coding (AMC) technique is employed at the physical layer. The purpose of AMC is to maximize the data rate by controlling transmission parameters based on channel conditions, while maintaining a predefined frame error rate \(P_{\text {target}}\). In this paper, \(P_{\text {target}}\) is supposed to used for a given quality of service (QoS), and is determined as

$$\begin{aligned} P_{\text {target}}:=P_{\text {loss}}^{\frac{1}{M+1}}, \end{aligned}$$
(5)

where \(P_{\text {loss}}\) is the required maximum frame error rate at the physical layer after M re-transmissions [22]. We describe the operation of AMC schemes in detail in Fig. 2. There is an AMC controller at the transmitter, while an AMC selector is employed at the receiver. Different transmission modes with different transmission rates are available, where each mode is represented by a standard modulation and coding format. Based on estimated channel state information (CSI), assumed to be perfect in this paper, the AMC controller can select suitable transmission modes. Table 1 shows an example of AMC with \(N=5\) transmission modes which employs convolutionally coded \(M_n\)-ary QAM, adopted from the HIPERLAN/2 or the IEEE 802.11a standards [23]. We also use this example for further performance evaluation, while other examples can be similarly constructed.

Fig. 2
figure 2

AMC scheme to cope with atmospheric turbulence

Table 1 Transmission modes with convolutionally coded modulation

We separate the entire SNR range into \(N+1\) intervals with boundary points denoted as \(\{\gamma _n\}_{n=0}^{N+1}\), where n is the mode index. Transmission mode n is selected if \(\gamma \in [\gamma _n, \gamma _{n+1})\). No transmission is allowed when \(\gamma <\gamma _1\) to avoid high frame error rate (FER). The algorithm searching for the thresholds \(\{\gamma _n\}_{n=0}^{N+1}\) to achieve \(P_{\text {target}}\) is as

$$\begin{aligned} \gamma _0&=0,\nonumber \\ \gamma _n&=\frac{1}{g_n}\ln \left( \frac{a_n}{P_{\text {target}}}\right) ,\nonumber \\ \gamma _{N+1}&=+\infty , \end{aligned}$$
(6)

where \(a_{n}\) and \(g_{n}\) are the mode-dependent parameters, which we can see in Table 1 [24].

3 Finite-state Markov channel model

Fig. 3
figure 3

Finite-state Markov channel model

In this section, we adopt a finite-state Markov model to capture characteristics of the considered FSO channel. In particular, the FSO channel along with five different transmission modes in Table 1 can be modeled as a Markov chain of six states as shown in Fig. 3 [25]. The channel is in state n \((n=0,~1,~2,~3,~4,~5)\) if the received SNR falls into the interval of \(\left[ \gamma _{n},\gamma _{n+1}\right) \) where \(\gamma _0=0\) and \(\gamma _6=+\infty \). In other words, the probability that the channel is in state n denoted by \(\text {Pr}_n\) can be written as

$$\begin{aligned} \text {Pr}_n&=\int \limits _{\gamma _n}^{\gamma _{n+1}}f_{\gamma }(\gamma )\mathrm{d}\gamma =F_{\gamma }(\gamma _{n+1})-F_{\gamma }(\gamma _{n}), \end{aligned}$$
(7)

where \(f_{\gamma }(\gamma )\) and \(F_{\gamma }(\gamma )\) are found in (1) and (4), respectively.

Under the characteristics of slow-fading channel, we assume that the transitions only happen between adjacent modes. As a result, the probabilities of moving from mode n to mode l can be computed as follows [26]

$$\begin{aligned} p_{n,n+1}&= \frac{N\left( \gamma _{n+1}\right) T_{f}}{\text {Pr}_n},&\text {if}\ n = 0,\ldots ,N-1, \nonumber \\ p_{n,n-1}&= \frac{N\left( \gamma _{n}\right) T_{f}}{\text {Pr}_n},&\text {if}\ n = 1,\ldots ,N, \nonumber \\ p_{n,l}&= 0,&\text {if}\ \left| l-n\right| \ge 2, \end{aligned}$$
(8)

where \(T_{f} = \frac{L_{f}}{R_{s}R_{n}}\) is the frame transmission time at mode n in which \(R_{n}\) (bits/symbol) is the information rate, \(L_{f}\) (bits) is the frame size, and \(R_\mathrm{s}\) (symbols/s) is the fixed symbol rate. \(N\left( \gamma _{n}\right) \) is the level crossing rate of signal level of \(\gamma _{n}\) during the SNR process, in the positive direction only (or in the negative direction only), which can be written as follows [5]

$$\begin{aligned} N\left( \gamma _{n}\right) = \frac{1}{4{\pi }t_{0}}\text {exp}\left[ \frac{1}{2\left( 1-e^{4\sigma _{s}^{2}}\right) }\left( \frac{\gamma _{n}-\overline{\gamma }}{\overline{\gamma }}\right) ^2\right] , \end{aligned}$$
(9)

where \(t_{0}\) is the coherence time and \(\sigma _\mathrm{s}^{2}\) is log intensity variance. \(\sigma _\mathrm{s}^{2}\) describes the strength of the turbulence and can be expressed by [27]

$$\begin{aligned} \sigma _\mathrm{s}^{2}&=\, \text {exp}\left( \frac{0.49\sigma _{R}^{2}}{\left( 1+0.18d^{2}+0.56\sigma _{R}^{12/5}\right) ^{7/6}}\right. \nonumber \\&\left. +\, \frac{0.51\sigma _{R}^{2}}{\left( 1+0.9d^{2}+0.62\sigma _{R}^{12/5}\right) ^{5/6}}\right) - 1, \end{aligned}$$
(10)

where \(d = \sqrt{kD^{2}/4L}\). k, D and L are the optical wave number, receiver aperture diameter and channel distance, respectively. In addition, the probabilities of staying at the same state n can be written as follows:

$$\begin{aligned} p_{n,n}&= {\left\{ \begin{array}{ll} 1-p_{n,n+1}-p_{n,n-1},&{}\text {if}\ 0<n<N, \\ 1-p_{0,1},&{}\text {if}\ n=0, \\ 1-p_{N,N-1},&{}\text {if}\ n=N. \end{array}\right. } \end{aligned}$$
(11)

In summary, the transition probabilities can be represented in a \((N+1)~\text {by}~(N+1)\) matrix of \(\mathbf {P}\) as

$$\begin{aligned} \mathbf {P}= \left[ \begin{matrix} p_{0,0} &{} p_{0,1} &{} \cdots &{} 0 \\ p_{1,0} &{} p_{1,1} &{} p_{1,2} &{} \vdots \\ 0 &{} \ddots &{} \ddots &{} 0 \\ \vdots &{} \cdots &{} p_{N-1,N-1} &{} p_{N-1,N} \\ 0 &{} \cdots &{} p_{N,N-1} &{} p_{N,N} \end{matrix} \right] . \end{aligned}$$
(12)

We now find the average frame error rate at each state n, which is denoted by \(\overline{\text {FER}}_{n}\). In particular, according to [17], it is approximately found as

$$\begin{aligned} \overline{\text {FER}}_{n}&\simeq \frac{a_n}{\text {Pr}_n}\int _{\gamma _n}^{\gamma _{n+1}}e^{-g_n\gamma }f_\gamma (\gamma )\mathrm{d}\gamma \nonumber \\&=\frac{a_nB(\alpha -\beta ,1-\alpha +\beta )}{2\text {Pr}_n\varGamma (\alpha )\varGamma (\beta )}\left( X-Y\right) , \end{aligned}$$
(13)

where \(B(x,y)=\frac{\varGamma (x)\varGamma (y)}{\varGamma (x+y)}\) is the Beta function. In addition,

$$\begin{aligned} X&=\sum _{p=0}^{\infty }\frac{a_p(\alpha ,\beta )}{\bar{\gamma }^{\frac{p+\beta }{2}}g_n^{\frac{p+\beta }{2}}}\nonumber \\&\quad \times \,\left[ \digamma \left( \frac{p+\beta }{2},g_n\gamma _n\right) -\digamma \left( \frac{p+\beta }{2},g_n\gamma _{n+1}\right) \right] ,\nonumber \\ \end{aligned}$$
(14)

and

$$\begin{aligned} Y&=\sum _{p=0}^{\infty }\frac{a_p(\beta ,\alpha )}{\bar{\gamma }^{\frac{p+\beta }{2}}g_n^{\frac{p+\alpha }{2}}}\nonumber \\&\quad \times \,\left[ \digamma \left( \frac{p+\alpha }{2},g_n\gamma _n\right) -\digamma \left( \frac{p+\alpha }{2},g_n\gamma _{n+1}\right) \right] ,\nonumber \\ \end{aligned}$$
(15)

where \(\digamma (m,k)\) is the complementary incomplete Gamma function, i.e., \(\digamma (m,k)=\int _{k}^{\infty }t^{m-1}e^{-t}\mathrm{d}t\), while \(a_p(x,y)\) is given by

$$\begin{aligned} a_p(x,y)=\frac{(xy)^{p+y}}{\varGamma (p-x+y+1)p!}. \end{aligned}$$
(16)

4 Throughput performance analysis with Markov error model

In this section, we study the TCP performance with impacts of different parameters settings of ARQ, AMC and FSO links. In particular, instead of using uniform error model as in previous works, we adopt a Markov error model extended from the conventional Gilbert–Elliot scheme [28] to accurately analyze the average TCP throughput. The model is especially suitable to FSO systems with slow-fading channels.

4.1 Markov error model analysis

Fig. 4
figure 4

Markov error model with N good states and one bad state

Our Markov error model is shown in Fig. 4 with N different Good states, which correspond to N transmission modes, and a Bad state denoted by \(\text {G}_{k}\), \(k \in \left\{ 1,\ldots ,N\right\} \) and \(\text {B}\), respectively. In state \(\text {G}_{k}\), frames are successfully transmitted, while in state \(\text {B}\), they are all in error. Here, we use only one state as the common bad state for all transmission modes to reduce the complexity of the error model, thus simplifying the performance analysis. As a result, transitions might occur between the bad state and any good state. Nevertheless, the transition within good states is supposed to only occur between adjacent ones due to the assumption of a slow-fading channel. According to [28], the state transition probabilities between \(\text {B}\) and \(\text {B}\), \(\text {B}\) and \(\text {G}_{k}\), \(\text {G}_{k}\) and \(\text {B}\), \(\text {G}_{k}\) and \(\text {G}_{h}\) denoted by \(q_{\text {B}\text {B}}\), \(q_{\text {B}\text {G}_k}\), \(q_{\text {G}_k\text {B}}\), \(q_{\text {G}_k\text {G}_h}\), respectively, can be calculated as

$$\begin{aligned} q_{\text {B}\text {B}}&= \text {Pr}\left\{ \text {state B at }t = n+1 | \text {state B at }t = n \right\} \nonumber \\&=\frac{\text {Pr}\left\{ \text {state B at }t = n+1,\text { state B at }t = n\right\} }{\text {Pr}\left\{ \text {state B at }t = n\right\} } \nonumber \\&= \frac{\displaystyle {{\sum _{n=1}^{N}}{\sum _{l=1}^{N}}}{\text {Pr}_n} {\overline{\text {FER}}_{n}} {p_{n,l}} {\overline{\text {FER}}_{l}}}{\displaystyle {\sum _{n=1}^{N}} {\text {Pr}_n}{\overline{\text {FER}}_{n}}}. \end{aligned}$$
(17)
$$\begin{aligned} q_{\text {B}\text {G}_{k}}&= \text {Pr}\left\{ \text {state } \text {G}_{k} \text { at } t = n+1 | \text {state B at }t = n\right\} \nonumber \\&=\frac{\text {Pr}\left\{ \text {state }\text {G}_{k} \text { at } t = n+1, \text { state B at }t = n\right\} }{\text {Pr}\left\{ \text {state B at }t = n\right\} } \nonumber \\&= \frac{{\sum _{n=1}^{N}}{\text {Pr}_n} {\overline{\text {FER}}_{n}} {p_{n,k}} {\left( 1-\overline{\text {FER}}_{k}\right) }}{{\sum _{n=1}^{N}} {\text {Pr}_n}{\overline{\text {FER}}_{n}}}. \end{aligned}$$
(18)
$$\begin{aligned} q_{\text {G}_{k}\text {B}}&= \text {Pr}\left\{ \text {state B at }t = n+1 | \text {state }\text {G}_{k}\text { at } t = n\right\} \nonumber \\&=\frac{\text {Pr}\left\{ \text {state B at }t = n+1,\text { state } \text {G}_{k}\text { at }t = n\right\} }{\text {Pr}\left\{ \text {state } \text {G}_{k}\text { at }t = n\right\} } \nonumber \\&= \frac{{\sum _{n=1}^{N}}{\text {Pr}_k}{\left( 1-\overline{\text {FER}}_{k}\right) }{p_{k,n}} {\overline{\text {FER}}_{n}}}{{\text {Pr}_k}{\left( 1-\overline{\text {FER}}_{k}\right) }}. \end{aligned}$$
(19)
$$\begin{aligned} q_{\text {G}_{k},\text {G}_{h}}&= \text {Pr}\left\{ \text {state } \text {G}_{h} \text { at } t = n+1 | \text {state }\text {G}_{k}\text { at }t = n\right\} \nonumber \\&=\frac{\text {Pr}\left\{ \text {state }\text {G}_{h}\text { at }t = n+1, \text { state }\text {G}_{k}\text { at t }= n\right\} }{\text {Pr}\left\{ \text {state }\text {G}_{k}\text { at }t = n\right\} } \nonumber \\&= \frac{{\text {Pr}_k} {\left( 1-\overline{\text {FER}}_{k}\right) } {p_{k,h}} {\left( 1-\overline{\text {FER}}_{h}\right) }}{{\text {Pr}_k}{\left( 1-\overline{\text {FER}}_{k}\right) }}, \end{aligned}$$
(20)

where \(k, h \in \left\{ 1, \ldots ,N\right\} \). We can also re-write transition probabilities in a matrix form of \(\mathbf {Q}\) as follows:

$$\begin{aligned} \mathbf {Q}&= \left[ \begin{matrix} {\mathbf {Q}}_{\text {B}\text {B}} &{} {\mathbf {Q}}_{\text {B}\text {G}} \\ {\mathbf {Q}}_{\text {G}\text {B}} &{} {\mathbf {Q}}_{\text {G}\text {G}} \\ \end{matrix} \right] \nonumber \\&= \left[ \begin{matrix} q_{\text {B}\text {B}} &{} q_{\text {B}\text {G}_{1}} &{} \cdots &{} q_{\text {B}\text {G}_{N-1}} &{} q_{\text {B}\text {G}_{N}} \\ q_{\text {G}_{1}\text {B}} &{} q_{\text {G}_{1}\text {G}_{1}} &{} \cdots &{} 0 &{} 0 \\ q_{\text {G}_{2}\text {B}} &{} q_{\text {G}_{2}\text {G}_{1}} &{} \cdots &{} 0 &{} 0 \\ q_{\text {G}_{3}\text {B}} &{} 0 &{} \cdots &{} 0 &{} 0 \\ \cdots &{} \cdots &{} \cdots &{} \cdots &{} \cdots \\ q_{\text {G}_{N-1}\text {B}} &{} 0 &{} \cdots &{} q_{\text {G}_{N-1}\text {G}_{N-1}} &{} q_{\text {G}_{N-1}G_{N}} \\ q_{\text {G}_{N}\text {B}} &{} 0 &{} \cdots &{} q_{\text {G}_{N}\text {G}_{N-1}} &{} q_{\text {G}_{N}\text {G}_{N}} \\ \end{matrix} \right] . \end{aligned}$$
(21)

We then denote by \(q_{\text {B}}\) and \(q_{\text {G}_{k}}\) the stationary probabilities of state B and state \(\text {G}_{k}\), respectively, and \(\mathbf {q} = \left[ q_{\text {B}}, q_{\text {G}_{1}}, q_{\text {G}_{2}}, ..., q_{\text {G}_{N}}\right] \). According to the Markov chain theory, we have

$$\begin{aligned} {\left\{ \begin{array}{ll} \mathbf {q}=\mathbf {q}.\mathbf {Q}, \\ q_{\text {B}} + \displaystyle {\sum _{k=1}^{N} q_{\text {G}_{k}}} = 1. \end{array}\right. } \end{aligned}$$
(22)

By solving (22), we can easily obtain \(\mathbf {q}\).

Table 2 System parameters

4.2 Average frame error rate

Based on the error model analyzed in the previous subsection, we can find the average FER defined as the ratio between the average number of frames transmitted in state B \((N_{\text {B}})\) and the total one (\(N_{t}\)) transmitted in all states, i.e.,

$$\begin{aligned} \overline{\text {FER}} = \frac{N_{\text {B}}}{N_{t}}, \end{aligned}$$
(23)

where \(\overline{\text {FER}}\) is the average FER. To do this, we now determine \(N_{\text {B}}\) and \(N_{t}\). In particular, given a period of time, \(N_t\) can be computed as follows:

$$\begin{aligned} N_{t} = N_{\text {B}} + \displaystyle {\sum _{k=1}^{N}} N_{\text {G}_{k}}, \end{aligned}$$
(24)

where \(N_{\text {G}_k}\) is the average number of frames transmitted in state \(\text {G}_k\). It can be determined by

$$\begin{aligned} N_{\text {G}_{k}} = q_{\text {G}_k} R_{fk} \overline{\tau }_{k}, \end{aligned}$$
(25)

where \(q_{\text {G}_k}\) can be found via (22), \(R_{fk}\) (frames/s) is the transmission rate in channel state k and can be defined as

$$\begin{aligned} R_{fk} = \frac{R_s \times R_k}{L_f}, \quad k = 1,2, \ldots ,N, \end{aligned}$$
(26)

where \(R_{s}\), \(R_{k}\), and \(L_{f}\) are the symbol rate, information rate, and frame size, respectively. \(\overline{\tau }_{k}\) is the average time duration in channel state k, \(k = 1,2,\ldots ,N\), which is given as [28]

$$\begin{aligned} \overline{\tau }_k = \frac{\text {Pr}_k}{N(\gamma _{k}) + N(\gamma _{k+1})}, \end{aligned}$$
(27)

where \(\text {Pr}_k\) and \(N(\gamma _{k})\) are determined in (7) and (9), respectively.

Besides, since frames transmitted in state B are all erroneous, \(N_{\text {B}}\) can be calculated by

$$\begin{aligned} N_{\text {B}} = q_{\text {B}} R_{f\text {B}} \overline{\tau }_{\text {B}}, \end{aligned}$$
(28)

where \(q_{\text {B}}\) is determined via (22). \(R_{f\text {B}}\) and \(\overline{\tau }_{\text {B}}\) are the average transmission rate and average time duration in state B, respectively. They can be computed as follows:

$$\begin{aligned} R_{f\text {B}}&= \displaystyle {\sum _{k=1}^{N}} \text {Pr}_k R_{fk}, \end{aligned}$$
(29)

and

$$\begin{aligned} \overline{\tau }_{\text {B}}&= \displaystyle {\sum _{k=1}^{N}} \text {Pr}_k \overline{\tau }_k. \end{aligned}$$
(30)

Finally, by substituting (24), (25) and (28) into (23), we can obtain the average FER.

4.3 TCP throughput performance analysis

According to [29], the TCP Reno throughput denoted by \(\eta \) can be approximately written as follows:

$$\begin{aligned} \eta&=\min \left( \frac{W_{\text {max}}}{\mathbf{E }[\mathrm{RTT}]},\right. \nonumber \\&\left. \frac{1}{\mathbf{E }[\mathrm{RTT}]\sqrt{\frac{4\mathbb {P}}{3}}+T_0\min \left( 1,3\sqrt{\frac{3\mathbb {P}}{4}}\right) \mathbb {P}\left( 1+32\mathbb {P}^{2}\right) } \right) , \end{aligned}$$
(31)

where \(W_{\text {max}}\) is the maximum window size, \(\mathbf {E} [\mathrm{RTT}]\) is the average round-trip time, \(T_0\) is the initial time-out duration, and \(\mathbb {P}\) is the TCP segment loss probability. To find \(\eta \), we now calculate \(\mathbf {E} [\mathrm{RTT}]\) and \(\mathbb {P}\). In particular, \(\mathbf {E} [\mathrm{RTT}]\) can be approximately obtained according to [29] as follows:

$$\begin{aligned} \mathbf {E} [\mathrm{RTT}]\approx 2T_{\text {wire}}+(L_f/\overline{R}_b+T_{\text {CRC}})(\overline{M}+1), \end{aligned}$$
(32)

where \(T_{\text {wire}}\) is one-way transmission time in the wired network and \(T_{\text {CRC}}\) is the error detection time. \(L_f/\overline{R}_b\) is the time to transmit a frame, while \(L_f\) is the frame length, \(\overline{R}_b\) (bps) is the average bit error rate which can be defined as

$$\begin{aligned} \overline{R}_b = \displaystyle {\sum _{k=1}^{N}} \text {Pr}_k R_{s} R_{n}, \end{aligned}$$
(33)

In addition, \(\overline{M}\) is the average number of re-transmissions per frame and is calculated as

$$\begin{aligned} \overline{M}=\frac{\overline{\text {FER}}}{1-\overline{\text {FER}}}-\frac{(M+1)\overline{\text {FER}}^{M+1}}{1-\overline{\text {FER}}^{M+1}}. \end{aligned}$$
(34)

On the other hand, let \(P_\text {FSO}\) and \(P_\text {wire}\) denote by the segment loss probabilities in the FSO link and the wired network, respectively. The TCP segment loss probability \(\mathbb {P}\) can be then expressed as

$$\begin{aligned} \mathbb {P}=1-(1-P_\text {FSO})(1-P_\text {wire}), \end{aligned}$$
(35)

where \(P_\text {FSO}=1-\left( 1-\overline{\text {FER}}^{M+1}\right) ^{N_f}\). Substituting (32) and (35) into (31), we can obtain the TCP throughput.

5 Numerical results and discussion

In this section, the TCP throughput performance is evaluated with different settings of ARQ, AMC schemes. System parameters related to TCP and the link layer are described in Table 2. Here, to focus on the effects of the FSO atmospheric turbulence on the TCP performance, we assume that (i) there is no segment loss in the wired networks and (ii) the one-way transmission time of wired network and CRC checking time are assumed in order of \(\upmu s\) that causes a relatively low delay. The data unit sizes (TCP segment and frame) are set as recommended by the standard Ethernet (IEEE 802.3).

Fig. 5
figure 5

TCP throughput versus average SNR under different conditions of atmospheric turbulence, given M = 1, \(P_{\text {loss}} = 10^{-6}\), L = 1500m

We first plot in Fig. 5 the Reno throughput performance with respect to different values of SNR for given \(M= 1\), \(P_{\text {loss}} = 10^{-6}\), and \(L = 1500\) m. Regarding the FSO channel, we assume that \(C_n^2=7\times 10^{-15}\) m\(^{-2/3}\), \(C_n^2=3 \times 10^{-14}\) m\(^{-2/3}\), and \(C_n^2=6 \times 10^{-14}\)  m\(^{-2/3}\) represent for the weak, moderate and strong turbulence, respectively. We can see that as the SNR increases, the throughput increases until it reaches a limit determined by the maximum window size \(W_{\text {max}}\) (4 or 8 segments in our case). In addition, it is understandable to see that an increase in turbulence strength results in an increase in required SNR to achieve the same throughput. For example, given \(W_{\text {max}}=8\) the required SNRs to achieve the maximum throughput are 34, 42 and 44 dB for weak, moderate and strong turbulence, respectively.

Fig. 6
figure 6

TCP throughput versus average SNR with different values of M, given \(C_{n}^{2}=3 \times 10^{-14}\,\text {m}^{-2/3}\), \(P_{\text {loss}} = 10^{-6}\), L = 1500 m

We now study the impacts of ARQ protocol on the TCP performance via Fig. 6. Here, the throughput is evaluated over a moderate turbulence FSO channel with different values of M, given \(C_{n}^{2}=3 \times 10^{-14}\,\text {m}^{-2/3}\), \(P_{\text {loss}} = 10^{-6}\), L = 1500 m. It is to evidently observe the advantage of ARQ in improving the throughput performance. In particular, when ARQ with \(M=1\) is employed, the throughput can be achieved over 800 Mbps at SNR \(=\) 30 dB, whereas that without ARQ is only 400 Mbps for the same SNR. Nevertheless, the use of ARQ also significantly increases the average end-to-end transmission delay caused by the re-transmissions. Therefore, the required SNR remains unchanged when M reaches a threshold. In our case, we recommend that \(M=2\) is the optimized value under the effects of moderate turbulence channel.

Fig. 7
figure 7

TCP throughput versus average SNR with different values of \(P_{\text {loss}}\), given \(C_{n}^{2}=3 \times 10^{-14}\,\text {m}^{-2/3}\), \(M=1\), \(L=1500\) m

The TCP performance is also studied in Fig. 7 under different conditions of the QoS. In particular, we plot the TCP throughput with respect to different values of \(P_{\text {loss}}\) (or the target frame error rate according to (5)), for given \(C_{n}^{2}=3 \times 10^{-14}\,\text {m}^{-2/3}\), \(M=1\), and \(L= 1500\) m. It is very interesting to see that for a given value of SNR, as \(P_{\text {loss}}\) increases the throughput increases, and after reaching a maximum value, it decreases. This is because the considered SNR is quite high, and therefore, the system can have more chances to select modes with higher transmission rates for higher values of \(P_{\text {loss}}\), while still maintaining a predefined requirement of system errors. Nevertheless, when \(P_{\text {loss}}\) reaches a threshold (\(P_{\text {loss}}=10^{-5}\) for SNR \(=\) 20 dB, for example), the system error rate meets the requirement, and hence, the throughput starts decreasing if \(P_{\text {loss}}\) keeps increasing. In this example, the observed maximum throughput is 566 Mbps.

Fig. 8
figure 8

TCP throughput versus average SNR with different values of channel distance, given \(C_{n}^{2}=8.10^{-15}\,\text {m}^{-2/3}\), M=1, \(P_{\text {loss}} = 10^{-4}\)

We finally discover how the channel distance impacts the TCP throughput performance via Fig. 8. It is understandable to observe that the considered system with a longer distance needs more power (or higher SNR) to achieve the same throughput in comparison with that with a shorter one. This is because for a given level of the SNR, the longer the distance, the higher the frame error rate.

6 Conclusions

A comprehensive cross-layer analysis for the TCP performance over FSO links with the impacts of ARQ and AMC schemes was studied in this paper. Different from previous works, the TCP throughput was accurately analyzed and evaluated in a Markov error model to cope with the correlation between consecutive block transmissions. The obtained results revealed the relation between the TCP throughput and three groups of parameters, i.e., (i) its own parameter (window size), (ii) channel-dependent parameters (distance, turbulence strength, SNR) and (iii) parameters of adaptation technologies (maximum number of re-transmissions and target FER).

We further saw that the last group of parameters was designable, which could be easily controlled to improve the TCP performance. For example, we could determine the optimal target FER so that the TCP throughput was maximized. Moreover, since the last two groups were in physical and data link layers, it required a minimal cross-layer information (only the first group needs to be transferred from the transport layer to the lower layers) to determine the optimal target FER. Therefore, by simply adding the corresponding functions for cross-layer information exchange, this cross-layer design could be implemented in existing systems for a considerable improvement of the TCP throughput.