ProDeveloperTutorial.com

Tutorials and Programming Solutions
Menu
  • Shell Scripting
  • System Design
  • Linux System Programming
  • 4g LTE
  • Coding questions
  • C
  • C++
  • DSA
  • GIT
  • 450 DSA Cracker
  • 5G NR
  • O-RAN

LTE RLC: RLC AM Mode

prodevelopertutorial August 31, 2020

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.

LTE RLC: RLC AM Mode

 

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

Share
Email
Tweet
Linkedin
Reddit
Stumble
Pinterest
Prev Article
Next Article

About The Author

prodevelopertutorial

Follow this blog to learn more about C, C++, Linux, Competitive Programming concepts, Data Structures.

ProDeveloperTutorial.com

Tutorials and Programming Solutions
Copyright © 2022 ProDeveloperTutorial.com