## 3 The FAURAS Framework
### Bandwidth Allocation  
#### 3.1.1 Determining the Fair Share  
A client starts its streaming session in the _buffering state_ where it aggressively downloads video segments to fill the play-out buffer. Once the buffer reaches its maximum at \(B_{max}\) seconds, the client switches to the _steady state_ when it plays out and downloads segments simultaneously to maintain the buffer stable at \(B_{max}\). Suppose that, at time \(t\) in the steady state, client \(a_{x}\) initiates a new push cycle with the bitrate \(r_{x,t}=R^{n}\) and sends a request for the next \(k\) segments \(\{S_{i}^{n},S_{i+1}^{n}...S_{i+k-1}^{n}\}\), where the first segment \(S_{i}^{n}\) is called the _lead segment_. As the video keeps playing during the download of the segments, the buffer will lose an amount corresponding to the downloading time, which can be approximated as \(k*L*\frac{r_{x,t}}{c_{x,t}}\). After that, \(k*L\) seconds more will be added to the buffer. Therefore, when the client finishes the push cycle, the estimated buffer condition at time \(t^{\prime}\) can be determined by Equation (1):  
\[B_{t^{\prime}}^{e}=B_{t}+k*L-k*L*\frac{r_{x,t}}{c_{x,t}}\leq B_{max} \tag{1}\]  
Since the proxy has a global view of all HAS traffics under its management, it is designated for dividing a suitable bandwidth slice for every of its client. Such an approach, as discussed in Section 2, can effectively eliminate the bandwidth competition. The Bandwidth Allocation module calculates the fair share by dividing the available bandwidth by the number of currently-streaming clients, which is described by Equation (2):  
\[C_{t}^{f}=\frac{\mathbb{C}}{X_{t}} \tag{2}\]  
where \(C_{t}^{f}\) demonstrates the fair share at time \(t\). On the client side, the deployed ABR decides the bitrate to be requested based on the bandwidth \(c_{x,t}\) it observes. In general, a bitrate decision should always satisfy:  
\[ \begin{split} r_{x,t}&\leq R_{t}^{f}\\ \text{subject to}&\ R_{t}^{f}=max\{R^{n}\in\Re|R^{n} \leq C_{t}^{f}\}\end{split}  \tag{3}\] \begin{table}
\begin{tabular}{c c c} \hline \hline
**Notation** & **Unit** & **Definition** \\ \hline \(L\) & second & the segment duration \\ \(t\) & second & a time instant within the streaming session \\ \(X_{t}\) & the total number of streaming clients currently presenting in the network at time \(t\) \\ \(a_{x}\) & a streaming client currently presenting in the network, \(x\in[1,X_{t}]\) \\ \hline \(B_{t}\) & second & the actual buffer level at time \(t\) \\ \(B_{t}^{e}\) & second & the estimated buffer level at time \(t\) \\ \(B_{max}\) & second & the maximum buffer level \\ \hline \(N\) & & the total number of available bitrate versions \\ \(\Re\) & & the set of available bitrate versions, \(\Re=\{R^{0},R^{1},...,R^{N}\}\) \\ \(R_{t}^{f}\) & kbps & the calculated fair bitrate at time \(t\) \\ \(r_{x,t}\) & kbps & the requested bitrate of client \(a_{x}\) at time \(t\) \\ \hline \(S_{i}^{n}\) & & the segment at index \(i^{th}\) with bitrate \(R^{n}\) \\ \(k\) & & the number of segments received in a push cycle \\ \hline \(\mathbb{C}\) & kbps & the maximum available bandwidth \\ \(C_{t}^{f}\) & kbps & the calculated fair bandwidth at time \(t\) \\ \(c_{x,t}\) & kbps & the bandwidth allocated for client \(a_{x}\) at time \(t\) \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Notations and definitions used in this paper. where \(R_{t}^{f}\) is the fair bitrate version corresponding with the fair bandwidth \(C_{t}^{f}\) at time \(t\). Inferring from Equation (1), a bitrate higher than \(R_{t}^{f}\) will probably harm the play-out buffer as the buffer has to spend more time to download the segments than the duration it is added. Due to the fact that maximizing the QoE is among the crucial goals of every ABR [10, 11, 36], it obviously tends to decide the bitrate that is equal to \(R_{t}^{f}\) for its client since this is the best possible video quality under the bandwidth \(C_{t}^{f}\).