9.4 State variables
25.3223GPPRadio Link Control (RLC) protocol specificationRelease 17TS
The state variables defined in this subclause are normative.
This sub-clause describes the state variables used in AM and UM in order to specify the peer-to-peer protocol. All state variables are non-negative integers. UMD and AMD PDUs are numbered by modulo integer sequence numbers (SN) cycling through the field: 0 to 212 – 1 for AM and 0 to 27 – 1 for UM. All arithmetic operations contained in the present document on VT(S), VT(A), VT(MS), VR(R), VR(H) and VR(MR) are affected by the AM modulus. All arithmetic operations contained in the present document on VT(US), VR(US), VR(UDH), VR(UDR), VR(UOH) and VR(UM) are affected by the UM modulus. When performing arithmetic comparisons of state variables or Sequence number values a modulus base shall be used. This modulus base is subtracted (within the appropriate field) from all the values involved and then an absolute comparison is performed. At the Sender, VT(A) and VT(US) shall be assumed to be the modulus base in AM and UM respectively. At the Receiver, VR(R) shall be assumed to be the modulus base in AM and VR(US) shall be assumed to be the modulus base in UM when neither the "out of sequence SDU delivery" nor the "duplicate avoidance and reordering" function are configured. When "out of sequence SDU delivery" is configured, (VR(UOH) – OSD_Window_Size + 1) shall be assumed to be the modulus base at the Receiver in UM; when the "duplicate avoidance and reordering" function is configured, (VR(UDH) – DAR_Window_Size + 1) shall be assumed to be the modulus base at the Receiver in UM.
The RLC shall maintain the following state variables in the Sender.
a) VT(S) – Send state variable.
This state variable contains the "Sequence Number" of the next AMD PDU to be transmitted for the first time (i.e. excluding retransmitted PDUs). It shall be updated after the aforementioned AMD PDU is transmitted or after transmission of a MRW SUFI which includes SN_MRWLENGTH >VT(S) (see subclause 11.6).
The initial value of this variable is 0.
b) VT(A) – Acknowledge state variable.
This state variable contains the "Sequence Number" following the "Sequence Number" of the last in-sequence acknowledged AMD PDU. This forms the lower edge of the transmission window of acceptable acknowledgements. VT(A) shall be updated based on the receipt of a STATUS PDU including an ACK (see subclause 9.2.2.11.2) and/or an MRW_ACK SUFI (see subclause 11.6).
The initial value of this variable is 0. For the purpose of initialising the protocol, this value shall be assumed to be the first "Sequence Number" following the last in-sequence acknowledged AMD PDU.
c) VT(DAT).
This state variable counts the number of times a AMD PDU has been scheduled to be transmitted. There shall be one VT(DAT) for each PDU and each shall be incremented every time the corresponding AMD PDU is scheduled to be transmitted or every time a STATUS PDU containing the POLL SUFI is scheduled to be transmitted and the sequence number of the corresponding AMD PDU is equal to VT(S)-1.
The initial value of this variable is 0.
d) VT(MS) – Maximum Send state variable.
This state variable contains the "Sequence Number" of the first AMD PDU that can be rejected by the peer Receiver, VT(MS) = VT(A) + VT(WS). This value represents the upper edge of the transmission window. The transmitter shall not transmit AMD PDUs with "Sequence Number" VT(MS) unless VT(S) VT(MS). In that case, the AMD PDU with "Sequence Number" = VT(S) – 1 can also be transmitted. VT(MS) shall be updated when VT(A) or VT(WS) is updated.
The initial value of this variable is Configured_Tx_Window_size.
e) VT(US) – UM data state variable.
This state variable contains the "Sequence Number" of the next UMD PDU to be transmitted. It shall be incremented by 1 each time a UMD PDU is transmitted.
The initial value of this variable is 0.
NOTE: For the UTRAN side, the initial value of this variable can be different from 0.
f) VT(PDU).
This state variable is used when the "poll every Poll_PDU PDU" polling trigger is configured. It shall be incremented by 1 for each AMD PDU that is transmitted including both new and retransmitted AMD PDUs. When it becomes equal to the value Poll_PDU, a new poll shall be transmitted and the state variable shall be set to zero.
The initial value of this variable is 0.
g) VT(SDU).
This state variable is used when the "poll every Poll_SDU SDU" polling trigger is configured. It shall be incremented by 1 for a given SDU when the AMD PDU carrying the first segment of this SDU is scheduled to be transmitted for the first time. When it becomes equal to the value Poll_SDU a new poll shall be transmitted and the state variable shall be set to zero. The "Polling bit" shall be set to "1" in the first transmission of the AMD PDU that contains the last segment of an RLC SDU (indicated either by the "Length Indicator" indicating the end of the SDU or by the special value of the HE field).
The initial value of this variable is 0.
h) VT(RST) – Reset state variable.
This state variable is used to count the number of times a RESET PDU is scheduled to be transmitted before the reset procedure is completed. VT(RST) shall be incremented by 1 according to subclauses 11.4.2 and 11.4.5.1. VT(RST) shall only be reset upon the reception of a RESET ACK PDU ( i.e. VT(RST) shall not be reset when an RLC reset initiated by the peer RLC entity occurs) unless otherwise specified in subclause 9.7.7.
The initial value of this variable is 0.
i) VT(MRW) – MRW command send state variable.
This state variable is used to count the number of times a MRW command is transmitted. VT(MRW) is incremented by 1 each time a timer Timer_MRW expires. VT(MRW) shall be reset when the SDU discard with explicit signalling procedure is terminated.
The initial value of this variable is 0.
j) VT(WS) – Transmission window size state variable.
This state variable contains the size that shall be used for the transmission window. VT(WS) shall be set equal to the WSN field when the transmitter receives a STATUS PDU including a WINDOW SUFI.
The initial value of this variable is Configured_Tx_Window_size.
The RLC shall maintain the following state variables in the Receiver:
a) VR(R) – Receive state variable.
This state variable contains the "Sequence Number" following that of the last in-sequence AMD PDU received. It shall be updated upon the receipt of the AMD PDU with "Sequence Number" equal to VR(R).
The initial value of this variable is 0. For the purpose of initialising the protocol, this value shall be assumed to be the first "Sequence Number" following the last in-sequence received AMD PDU.
b) VR(H) – Highest expected state variable.
This state variable contains the "Sequence Number" following the highest "Sequence Number" of any AMD PDU received or identified to be missing.. When a AMD PDU is received with "Sequence Number" x or a POLL SUFI is received with POLL_SN=x such that VR(H)x<VR(MR), this state variable shall be set equal to x+1.
The initial value of this variable is 0.
c) VR(MR) – Maximum acceptable Receive state variable.
This state variable contains the "Sequence Number" of the first AMD PDU that shall be rejected by the Receiver, VR(MR) = VR(R) + Configured_Rx_Window_Size.
d) VR(US) – Receiver Send Sequence state variable.
This state variable is applicable only when "out of sequence SDU delivery" is not configured. This state variable contains the "Sequence Number" following that of the last UMD PDU received by the reception buffer (see Fig. 4.3 and 4.3a). When a UMD PDU with "Sequence Number" equal to x is received by the reception buffer, the state variable shall set equal to x + 1.
The initial value of this variable is 0.
e) VR(UOH) –UM out of sequence SDU delivery highest received state variable.
This state variable contains the "Sequence Number" of the highest numbered UMD PDU that has been received.
The initial value of this variable is set according to subclause 11.2.3.2.
f) VR(UDR) –UM duplicate avoidance and reordering send state variable.
This state variable contains the "Sequence Number" of the next UMD PDU that is expected to be received in sequence. Its value is set according to subclause 9.7.10.
The initial value of this variable is set according to subclause 9.7.10.
g) VR(UDH) – UM duplicate avoidance and reordering highest received state variable.
This state variable contains the "Sequence Number" of the highest numbered UMD PDU that has been received by the duplicate avoidance and reordering function.
The initial value of this variable is set according to 9.7.10.
h) VR(UDT) – UM duplicate avoidance and reordering timer state variable.
This state variable contains the sequence number of the UMD PDU associated with Timer_DAR when the timer is running. Its value is set according to subclause 9.7.10.
i) VR(UM) – Maximum acceptable Receive state variable.
This state variable contains the "Sequence Number" of the first UMD PDU that shall be rejected by the Receiver, VR(UM) = VR(US) + Configured_Rx_Window_Size. This state variable is only applicable when out-of-sequence reception is configured by higher layers.
j) VR(X) – Timer_Reordering state variable
This state variable holds the value of SN following the SN of the RLC data PDU which triggered Timer_Reordering.
The initial value of this variable is set according to 11.3.3.
k) VR(MS) – Maximum STATUS transmit variable
This state variable holds the highest possible value of the SN which can be indicated by LSN when a STATUS PDU needs to be constructed.
The initial value of this variable is 0.