# QoE Optimization in a Live Cellular Network through RLC Parameter Tuning
## 2 Radio Link Control
### Acknowledged Mode  
Unlike UM RLC entities (a transmitting entity and receiving entity), the AM RLC entities of the transmitter and receiver are the same. Each of these entities will have a transmitting side and a receiving side, as shown in Figure 2.  
Figure 1: UM RLC entities. Reprinted with permission from ref. [20]. Copyright 2017 3 GPP.  
The transmitting side receives RLC SDUs from the PDCP layer and stores them in a transmission buffer. When the MAC layer observes a transmission opportunity, similarly to the transmitting UM RLC entity, the transmitting side performs the segmentation and reassembly of the RLC SDUs that it has stored, obtaining AM data (AMD) PDUs with an appropriate size to be sent by the MAC layer. Before sending these PDUs to its peer AM RLC entity, the transmitting side adds an RLC header to the AMD PDUs, which are used by the receiver to reorder the AMD PDUs and detect possible errors or missing PDUs. In addition to these functions, the transmitting side supports the retransmission of RLC data PDUs.  
The receiving side receives the AMD PDUs from the MAC layer, reorders them, and sends RLC SDUs to the PDCP layer after reassembly. AMD PDUs that could not be reordered into RLC SDUs are discarded. If missing AMDs are detected, the receiver may request the retransmissions of these using STATUS PDUs messages. These messages contain an acknowledgement for each of the received RLC PDUs, which may be positive (ACK) or negative (NACK). In RLC AM, flow control is performed using two windows: the transmitting window and the receiving window. The transmitting window stores the packets that have been sent to the receiver and have not yet been acknowledged. The receiving window stores the received packets. Furthermore, the AM RLC entity implements the following configuration parameters:  
* pollPDU and pollByte: pollPDU indicates how many PDUs can be sent by the transmitter before requesting a STATUS PDU. In the same way, pollByte indicates how many bytes can be sent by the transmitter before requesting a STATUS PDU. Each time the transmitter sends an AMD PDU to the receiver, the variables \(\text{PDU\_WITHOUT\_POLL}\) (the number of AMD PDUs sent since the last time a STATUS PDU was requested) and BYTE\(\_\)WITHOUT\(\_\)POLL (the number of bytes sent since the last time a STATUS PDU  
Figure 2: AM RLC entity. Reprinted with permission from ref. [20]. Copyright 2017 3 GPP.  
was requested) are updated, and it is checked whether these variables have achieved a value greater than or equal to the values of polIPDU and pollByte, respectively. If so, the transmitter will request the sending of a STATUS PDU, by setting the poll bit of the next AMD PDU to 1. Moreover, the transmitter will reset the variables PDU_WITHOUT_POLL and BYTE_WITHOUT_POLL.
* t-PollRetransmit: This timer determines the amount of time the transmitter must wait before requesting a STATUS PDU. When the transmitter sends an AMD PDU with the poll bit set to 1 (a STATUS PDU request), the t-PollRetransmit is started or restarted, in case it was active. If a STATUS PDU is received before the timer expires, the transmitter will stop and reset the timer. Otherwise, the transmitter sends a AMD PDU with the poll bit set to 1. This AMD PDU could be new or, in case the transmitting window is full, a retransmission of the last AMD PDU of any AMD PDU from which the ACK has not been received.
* maxRetrThreshold: This parameter indicates the maximum number of retransmissions allowed for an AMD PDU.
* t-StatusPohibit: This timer determines the minimum period of time that must elapse between the sending of two consecutive STATUS PDUs. When the receiver sends a STATUS PDU to the transmitter, the t-StatusPohibit is started. The receiver cannot send a new STATUS PDU to the transmitter until the timer expires.
* t-Reordering: This timer indicates the refresh rate of the state variables (set of metrics used to monitor the size and the limit of the transmitting and receiving windows), detecting lost AMD PDUs.