The RLC layer provides a reliable link between the BSS and the MS, allowing transmission of RLC blocks in acknowledged or unacknowledged mode during an uplink or downlink TBF. The RLC layer is responsible for the segmentation of LLC frames into RLC data blocks. Before being transmitted on the radio interface, these blocks are numbered by the transmitter so that the receiver is able to detect undecoded data blocks and request their selective retransmission. When all the RLC data blocks belonging to one LLC frame have been received, the RLC layer at the receiver side ensures the reassembly of the LLC frame.
The RLC layer also provides a similar mechanism for the transmission of RLC/MAC control messages from the BSS to the mobile.
The RLC automatic repeat request (ARQ) functions support two modes of operation:
RLC acknowledged mode;
RLC unacknowledged mode.
In RLC acknowledged mode, the RLC ensures the selective retransmission of RLC data blocks that have not been correctly decoded by the receiver. This mode is used to achieve a high reliability in LLC PDU sending. In RLC unacknowledged mode, RLC data blocks that have not been correctly decoded are not retransmitted by the sending entity. This mode is used for applications that are tolerant of error and that request a constant throughput, such as streaming applications (video or audio streaming).
In uplink, the requested RLC mode is indicated in the PACKET RESOURCE REQUEST message in case of two-phase access and is by default RLC acknowledged mode in case of one-phase access. In downlink, the RLC mode is indicated within the assignment message by the RLC_MODE parameter. During the TBF, the RLC mode cannot be changed. Any change in the RLC mode previously requires the release of the TBF.
The segmentation of LLC PDUs allows the transport through the radio interface of LLC PDUs, whose size can be much larger than the data unit length of a single RLC data block. The segmentation of LLC PDUs is done in a dynamic way. It means that a change of coding scheme bringing about the decrease or the increase of the RLC data block unit length could happen at any time during the transmission. Depending on the CS used to encode the transmit RLC data block, the LLC PDU will be segmented in variable size data units as described in Figure 5.22.
The LLC PDUs are segmented in the same order as they are received by the transmit entity. Each RLC data block resulting from the segmentation of an LLC PDU is numbered using the BSN field of the RLC header. The BSN ranges from 0 to 127.
For one TBF, the first segmented RLC data block of the first LLC frame is numbered with BSN = 0, the next one with BSN = 1, and so on. The RLC data blocks are numbered modulo 128.
As described in Figure 5.22, if the contents of an LLC PDU do not fill an integer number of RLC data blocks, the beginning of the next LLC PDU and the end of the previous LLC PDU are placed in the same radio block. The LI, extension (E), and more (M) fields of the RLC data block header are used to delimit the consecutive LLC PDUs within one RLC data block.
The E field is used to indicate the presence of an optional extension octet in the RLC data block header. When set to 1 the E bit indicates that no extension octet follows. The M field is used to indicate (when set to 1) the presence of a new LLC PDU that starts after the current LLC PDU.
The combination M = 0 and E = 1 indicates that there is no LLC PDU after the current one and there are no more extension octets. The combination M = 1 and E = 0 indicates that a new LLC PDU starts after the current one and there is an extension octet that delimits the new one. The combination M = 1 and E = 1 indicates that a new LLC PDU starts after the current one and continues until the end of the block. The LI field is used to delimit the LLC PDUs within the RLC data block. The first LI of the RLC data block indicates the number of octets of the RLC data unit belonging to the first LLC PDU.
Figure 5.22 provides an example of how the E, M, and LI fields are used for LLC PDUs delimitation within RLC data blocks.
After having received all the RLC data blocks belonging to an LLC PDU, the reassembly involves removing the RLC header of each RLC data block and reassembling the data unit using the BSN sequencing.
In case of RLC unacknowledged mode, some RLC data blocks may not have been decoded during the transfer. The RLC data units not received must be substituted with fill bits having the value 0.
The transfer of RLC data blocks in the acknowledged RLC mode is controlled by a selective ARQ mechanism. This retransmission mechanism relies on the identification of each RLC data block, thanks to its BSN.
The RLC protocol relies on a sliding window mechanism. The size of this window for GPRS is 64 blocks. This window ensures that the gap, in term of block number, between the oldest unacknowledged block and the next-in-sequence block to be transmitted is always lower than 64. The sending side is not allowed to transmit a block when its BSN modulo 128 is higher than (BSN of the oldest unacknowledged block + 64) modulo 128. In this case, the RLC protocol is stalled. In this situation, the transmit entity is only allowed to retransmit the RLC data blocks that have not yet been acknowledged.
At the beginning of the TBF, the transmitter starts sending RLC data blocks in sequence. The oldest unacknowledged block is then the one numbered with BSN = 0. New RLC data blocks can be sent as long as their BSN is lower than 63.
Each time an acknowledgment message is received from the receiver, the transmitter updates its list of unacknowledged RLC blocks and starts their retransmission from the oldest unacknowledged one. When the acknowledgement message indicates that the oldest unacknowledged block has been received and decoded at receiver side, the RLC window slides up to the next-oldest unacknowledged block indicated by the message. If the protocol was previously stalled, it is not anymore.
The receiver maintains a table that contains the state of all the RLC data blocks within the window. At the beginning of the TBF, the receiver expects to receive the block with BSN = 0. Since the RLC blocks are sent in sequence by the sending side, the receiver can deduce from a correctly decoded block all the previously sent blocks that have not been decoded. Whenever an RLC block is decoded, it is marked as "decoded" within the table.
In case of a downlink TBF (the sending entity is the network), the PACKET DOWNLINK ACK/NACK message that contains the information on which blocks have not been decoded at the mobile side is always sent by the mobile on a BSS order (polling). In case of uplink TBF, the decision to send a PACKET UPLINK ACK/NACK message is also made by the network.
Each such message acknowledges all correctly received RLC data blocks up to an indicated BSN, thus "moving" the beginning of the sending window on the transmit side. Additionally, a bitmap is used to indicate BSNs of erroneously received RLC data blocks. The sending side then retransmits the erroneous RLC data blocks.
Figure 5.23 shows how the sliding window mechanism works on the transmit side as well as on the receive side. In the first state of the transmitter, the RLC data blocks with BSN 120, 12, and 37 have been transmitted but are unacknowledged. The next block that will be transmitted has BSN = 38. The receiver has not decoded the block with BSN = 12 and the last correctly decoded block was BSN = 36. The RLC data block with BSN = 37 that has been previously sent is not decoded by the receiver.
The transmitter sends the RLC block with BSN = 38 that is decoded by the receiver. This latter detects that the RLC block with BSN = 37 has not been decoded and BSN = 38 is the newest received RLC block.
At the next step, the receiver sends an acknowledgment message indicating that all the blocks until BSN = 38 have been received except BSN = 12 and BSN = 37. Upon receipt of this message, the transmitter updates its state table and the window is moved up to BSN = 12. The transmitter retransmits the block with BSN = 12. This block is decoded by the receiver that updates its received state table.
The MS transmits uplink RLC data blocks during allocated uplink PDTCH occurrence. The network sends a PACKET UPLINK ACK/NACK message when needed on the downlink PACCH. This message indicates the uplink RLC data blocks that have been correctly received and which ones have not been correctly decoded. Figure 5.24 shows a scenario for uplink transfer.
The PACKET UPLINK ACK/NACK message contains the following information:
Uplink TFI. This identifies the uplink TBF.
Channel coding command. The network may request the use of another coding scheme based on measurements performed on the uplink.
ACK/NACK description. This contains three parameters: The FINAL_ACK_INDICATION indicates whether the entire TBF is being acknowledged. It is used for uplink TBF release. The STARTING_SEQUENCE_NUMBER is the BSN corresponding to the end of the window plus 1. The RECEIVE_BLOCK_BITMAP is a bitmap representing whether a BSN is ACK or NACK. The bitmap starts from the STARTING_SEQUENCE_NUMBER backwards.
Note that if fixed allocation is used for the uplink transfer, the BSS may allocate more uplink resources within the PACKET UPLINK ACK/NACK message by including a fixed-allocation bitmap.
During downlink transfer, the BSS transmits downlink RLC data blocks to the mobile. Whenever needed, the network requests the sending of a PACKET DOWNLINK ACK/NACK message from the mobile on PACCH.
The network polls the mobile in an RLC data block in order to request the sending of a PACKET DOWNLINK ACK/NACK message. The polling is performed using the S/P and RRBP fields of the downlink control block MAC header. Figure 5.25 gives a scenario for downlink transfer.
The PACKET DOWNLINK ACK/NACK message contains the following information:
Downlink TFI. This identifies the downlink TBF.
ACK/NACK description: This is the same as for the PACKET UPLINK ACK/NACK message, listed above.
Channel quality report. The network uses these measurements for network-controlled cell reselection and for dynamic CS adaptation.
Note that the mobile may request the establishment of an uplink TBF by including a channel request description within the message.
In RLC unacknowledged mode, the sending side transmits the RLC data blocks in sequence. The blocks are numbered so that the receiver is able to detect undecoded data blocks. The data blocks that are not decoded by the receiver are not retransmitted. On the receiver side, when all the RLC data blocks belonging to one LLC frame have been received, the LLC frame is reassembled.
During an uplink TBF, the network may send a PACKET UPLINK ACK/NACK message that is used to order a new CS for the mobile or to allocate more uplink resources in case of fixed allocation (in which case a new allocation bitmap is sent to the mobile). During a downlink TBF, the network will request the sending of PACKET DOWNLINK ACK/NACK messages thanks to the polling mechanism in order to receive the channel quality report from the mobile. In spite of the non-retransmission of undecoded RLC data blocks by the network, the mobile provides the RECEIVE_BLOCK_BITMAP within this message. The network can use this bitmap to estimate the downlink BLER. Note that this evaluation is also possible in RLC acknowledged mode but the evaluation is more complex due to the retransmissions.
The RLC/MAC control messages contain a lot of optional fields and in some configuration the RLC/MAC message does not fit into one radio block encoded with CS-1. It is possible in the downlink direction to segment one RLC/MAC message into two RLC/MAC control blocks. This possibility is not provided in the uplink direction.
When the network has to transmit one RLC/MAC message within two RLC/MAC control blocks, the optional octet 1 is used to control the transaction (see Table 5.2). The RLC/MAC control message is identified by the RTI field of the header. The RBSN field indicates the sequence number of the RLC/MAC control block. The FS field indicates whether the FS of the RLC/ MAC control message is contained in the RLC/MAC control block or not.
Note that when the network wants to provide a PR value within the header of a downlink RLC/MAC control block, it must include the optional octet 2 in the header. Or if the message can fit within one radio block, the network must indicate within the optional octet 1 that the message is not segmented. In this case, the network indicates RBSN = 0 and FS = 1.
Figure 5.26 describes an example of PACKET UPLINK ASSIGNMENT message sending with segmentation.
The network may request the sending of a PACKET CONTROL ACKNOWLEDGMENT message during the sending of the segmented message. The polling is performed using the S/P and RRBP fields of the downlink control block MAC header of both downlink blocks.
By using the CRTL_ACK field, the mobile indicates within the PACKET CONTROL ACKNOWLEDGMENT message whether the two radio blocks have been correctly decoded and if not, which one must be retransmitted.