It will preform segmentation, reassembly, retransmission of RLC SDU.
RLC Headers are added and removed.
It will guarantees delivery of RLC PDU.
Note:
In RLC AM mode, it will receive/sends AMD PDU or AMD PDU segment. This is RLC data PDU.
In RLC AM mode, it will receive/sends RLC STATUS PDU. This is RLC control PDU.
Functions performed by RLC AM Transmitting Entity
It will receive SDU from PDCP or RRC
It will add SDU to transmission buffer
It will do segmentation and concatenation
It will add RLC header and then send one copy of RLC PDU to MAC layer and another copy to Retransmission Buffer.
If the RLC PDU to be retransmitted does not fit within the total size of RLC PDU(s) indicated by lower layer at the particular transmission opportunity, then the AM RLC entity can re-segment the RLC data PDU into AMD PDU segments.
–> Steps RLC AM Transmitting entity will do once it receives Positive ACK.
Once receiving ACK. It will remove the buffer from retransmission queue.
Update the received SN to move the sliding window.
–> Steps RLC AM Transmitting entity will do once it receives Negative ACK.
Once receiving NACK. It will get the buffer from retransmission queue and make it ready for retransmission.
Now it will retransmit the buffer. If MAC layer does not support original retransmission rate(size), then it will re-segment into smaller available block size.
–> Steps RLC AM Receiving entity will do once it receives Retransmission PDU.
Once RLC Receiver entity receives the NACK PDU, it will fill the receive data buffer.
It will assemble all the SDU and send it to upper layer.
Functions performed by RLC AM Receiving Entity
It will remove RLC Header
It will check if RLC PDU is received correctly, then mark it as Positive ACK.
It will check for duplicate PDU and discard the one that is duplicate
It will Reorder of RLC PDU
It will Reassemble RLC SDUs from the reordered RLC data PDUs
AM Mode State Variables in RLC UM mode
Tx Side State variables
VT(A) Acknowledge
It is updated whenever RLC AM will receive a positive acknowledgment for an AM-PDU with SN.
This will act as lower edge of Tx window.
VT(MS) Maximum Send = VT(A) + AM_Window_Size. Higher edge of Tx window
VT(S) Send
Value of SN to be assigned for the next generated AMD PDU
Rx Side State Variables
VR(R) Receive
It will store the value of SN of last in-sequence completely received AMD PDU. It is the lower edge of Rx window
VR(MR) Maximum Receive = VR(R) + AM_Window_Size. Higher edge of Rx window
VR(X) Re-Ordering state variable
Holds the SN of the RLC PDU that triggered t-Reordering
VR(MS) Maximum Status
Maximum value of SN which can be indicated in ACK_SN when STATUS PDU is constructed.
VR(H) Highest received.
Highest SN received PDU.
RLC-AM Transmit Procedure
In Tx side of AM RLC, it will prioritize RLC Control PDU over RLC Data PDU.
In Tx side of AM RLC, it will prioritize RLC retransmission data PDU over new transmission of RLC Data PDU.
1. VT(S), VT(MS) are updated after transmission of AM PDU
2. If it receives STATUS PDU from peer AM entity after successful reception of AMD PDU, it will update VT(A) accordingly.
3. If the delivery is successful a confirmation will be sent to RRC or PDCP.
RLC-AM Receiving Procedure
1. The Rx side will maintain a receiving window according to VR(R) and VR(MR).
2. After receiving AM PDU it will check for duplicate and if it is not a duplicate then place in the buffer and update state variables.
3. If SN is outside Rx window, update the VR(H) to SN+1
4. If all the packets are received, then it will move the rx window.
Reference TS 36.322