NR RLC Variables, constants and
State Variables
该部分描述了用于具体描述RLC协议的AM和UM实体中用到的状态变量。
所有以下定义的变量都是规范的。
所有以下定义的变量以及counter都是非负整数。
文中的一些值在超出其范围时需要进行取模运算。比如
SN长为12 bit的AM数据传输的相关变量取值范围为[0 , 4095]
SN长为18 bit的AM数据传输的相关变量取值范围为[0 , 262144]
AM RLC实体的发送端应该维护下列几个状态变量:
- TX_Next_Ack:确认状态变量
该变量的值为下一个等待确认接收消息的SDU的SN值。它作为发送窗口的下边界。初始值为0 。
当一SN=TX_Next_Ack的SDU被确认接收时,该变量更新。 - TX_Next:发送状态变量
该状态变量的值为下一个新建的AMD PDU要被赋予的SN值。初始值为0。
当AM RLC实体构建一个包含SDU或SDU最后一段的SN = TX_Next的PDU时,该变量更新。 - POLL_SN:轮询发送状态变量
该变量的值为当前已发送到下层的AMD PDU中SN值最高的那个。
当发送的PDU中polling字段为1时,该变量更新。
AM RLC实体的发送端应该维护以下几个counter;
- PDU_WITHOUT_POLL
它计数从最近一次轮询字段发送以来,又有多少个AMD PDU被发送出去。 - BYTE_WITHOUT_POLL
它计数从最近一次轮询字段发送以来,又有多少个数据段byte被发送出去。 - RETX_COUNT
它计数一个SDU或SDU段总共被重传了几次。每一个RLC SDU中有一个这样的RETX_COUNT
AM RLC实体的接收端应该维护下列几个状态变量:
- RX_Next:接收状态变量
该变量的值为 已经被按序完整接收的SDU的SN值+1。它作为接收窗口的下边界。初始值为0.
当SN=RX_Next的RLC SDU被接收时,更新该值。 - RX_Next_Status_Trigger:t-Reassembly状态变量
该变量保存 触发了t-Reassembly的RLC SDU的SN+1的值。
只在一种情况下会更新:刚启动t-Reassembly时。 - RX_Highest_Status:最大STATUS发送状态变量
该变量保存 当STATUS PDU需要被建立时,会被“ACK_SN”标识的最高可能SN值
它更新的情况有:- (个人认为不重要)当完整接收一个SN值与它相同的SDU时,更新为大于当前值,但还未接收所有字节的SDU中SN最小的值。
- 当t-Reassembly超时时,更新为大于RX_Next_Status_Trigger,但还未接收所有字节的SDU中最小的SN值。
- RX_Next_Highest:最高接收状态变量
该变量保存 接收到的RLC SDU中,SN最高的值+1
RX_Next:下一个等待确认消息的SDU的SN值。SN值小于它的SDU都是已经被确认接收了的。
RX_Next_Highest:目前接收到的PDU中最大的SN值+1。若该值之前,RX_Next之后,还有SDU未确认接收,则需要启动t-Reassembly
t-Reassembly:等待之前未被完整接收的SDU的计时器。它被停止并重置,说明这段时间内之前的SDU都被成功接收了。 它超时,说明之前有SDU无法完整接收,因此会导致接收端主动向发送端发送STATUS report。
RX_Next_Status_Trigger:启动t-Reassembly时会被更新,表示要完整接收到哪一个SN的SDU为止才算完成该段t-Reassembly时间内的任务。
RX_Highest_Status:当t-Reassembly超时时被更新。用于说明哪些SDU需要被重传。
每一个UM RLC实体的传输端应该维护下列状态变量:
- TX_Next:
该变量保存 下一个将被生成的带有段的UMD PDU将被分配的SN值。初始值为0 。
每当UM RLC实体发送一个带有RLC SDU最后一段的UMD PDU到下层时,该变量更新。
每一个UM RLC实体的接收端应该维护下列状态变量和常数:
- RX_Next_Reassembly:UM接收状态变量
该变量保存 仍在被考虑重组的最早一个SN的值。 - RX_Timer_Trigger:UM t-Reassembly状态变量
该变量保存 触发了t-Reassembly的SN值+1 - RX_Next_Highest:UM接收状态变量
该变量保存 已接收的UMD PDU中最高的SN+1。它作为重组窗口的上边界。初始值为0
常数
-
AM_Window_Size
该常数在AM RLC实体的发送端和接收端都用到。
当SN长12 bit时,AM_Window_Size=2048;
当SN长18 bit时,AM_Window_Size=131072。 -
UM_Window_Size
该常数被UM RLC实体的接收端用来定义 被接收且不会造成接收窗口前移的那些UMD SDU的SN值。
当SN长6 bit时,UM_Window_Size=32;
当SN长12 bit时,UM_Window_Size=2048。
Timers
以下timers在TS 38.331[5]中被设定。
- t-PollRetransmit
该计数器被AM RLC实体的发送端用来重传轮询。 - t-Reassembly
该计数器被AM RLC实体和UM RLC实体的接收端用来发现在下层传输中RLC PDU的丢失。(详见UM/AM data transfer的receive operation)
对于一个RLC实体来说,特定时间内只有一个t-Reassembly在运行。
当RLC接收下层传来的PDU后,会更新t-Reassembly的状态。
- 若此时Rx_Next_Highest = Rx_Next,则停止t-Reassembly。
- 若此时Rx_Next_Highest > Rx_Next,则启动t-Reassembly(若t-Reassembly正在运行,则不需要再另外启动)。
- t-StatusProhibit
该计时器被AM RLC实体的接收端用来作为发送STATUS PDU的间隔。
只会在一种情况下启动:status pdu trigger时。
只会在一种情况下停止:超时后。
Configurable parameters
以下参数在 RS 38.331[5]中被设定。
- maxRetxThreshold
该参数被AM RLC实体的发送端用来限制某个RLC SDU或段的重传次数。 - pollPDU
该参数被AM RLC实体的发送端用来在每pollPDU个PDU被发送后触发一次轮询 - pollByte
该参数被AM RLC实体的传输端用来在每pollByte个byte被发送后触发一次轮询