1. 程式人生 > >LTE RLC理解(二) AM

LTE RLC理解(二) AM

注:本篇基本是基於協議的翻譯,記錄一下。

Based on 36.322 R10

5.1.3 AM資料傳輸

5.1.3.1 傳送

傳送時,RLC控制PDU的優先順序高於RLC資料PDU,重傳RLC資料PDU優先順序高於新的AMD PDU。

AM RLC實體的傳送側應根據變數VT(A)和VT(MS)來維護一個傳送視窗,如下:

    - 如果VT(A)<=SN<VT(MS),那麼這個SN落在傳送視窗內

    - 否則,這個SN落在傳送視窗之外

AM RLC實體的傳送側不會發送任何SN在傳送視窗之外的RLC PDU。

當傳送新的AMD PDU給低層時,AM RLC實體的傳送側應該:

    - set VT(S)=SN,然後VT(S)=VT(S)+1

AM RLC實體的傳送側通過如下方式收到RLC資料PDU的肯定應答:

    - 從對應側的AM RLC實體發來的狀態PDU

當收到SN=VT(A)的AM PDU的肯定應答時,AM RLC實體的傳送側應該:

    - 找出SN滿足VT(A)<=SN<VT(S),且尚未收到肯定應答的SN最小的AMD PDU,set VT(A) =SN

    - 如果一個傳送的RLC SDU關聯的所有的AMD PDU都收到了肯定應答

        - 傳送給上層一個RLC SDU成功傳送的指示

5.1.3.2 接收

5.1.3.2.1 一般

AM RLC實體的接收側根據變數VR(R)和VR(MR)維護一個接收視窗,如下:

    - 如果VR(R)<=SN<VR(MR),那麼這個SN落在接收視窗內

    - 否則落於接收視窗外

當從低層收到一個AM資料PDU,AM RLC實體的接收側應該:

    - 要麼丟棄它,要麼將它放入接收緩衝區(5.1.3.2.2)

    - 如果RLC資料PDU被放入接收緩衝區

        - 更新狀態變數,重新組裝並傳送RLC SDU到上層,並按需開始/停止t_Reordering定時器(5.1.3.2.3)

當t_Reordering定時器超時,AM RLC實體接收側應該:

    - 更新狀態變數,並按需開始t_Reordering定時器

5.1.3.2.2 當從底層收到RLC資料PDU時的處理

當收到下層來的RLC資料PDU,,AM RLC實體的接收側應該:

    - 如果x落於接收視窗之外,或者

    - SN=x的AMD PDU的位元組段號y到z已經收到過了:

        - 丟棄收到的RLC資料PDU

    - 否則

        - 將收到的RLC資料PDU放入接收緩衝區

        - 如果AMD PDU的某些位元組段包含於已經收到的RLC資料PDU,

            - 丟棄重複的位元組段

7 變數、常量、定時器

7.1 狀態變數

本小節描述AM/UM實體中所使用的狀態變數,這樣可以更好地描述RLC規範。這裡定義的狀態變數是標準的。

所有狀態變數和計數器變數都是非負整數。

所有與AM資料傳輸相關的狀態變數的值從0-1023。本文件中關於AM資料傳輸相關的狀態變數的演算法需做模處理,比如最終值=演算法操作的值 % 1024。

UM資料傳輸相關的狀態變數也有相同約束,最終值=演算法操作值%2[sn-FieldLength],sn-FieldLength:UM包SN域的位長度。

AMD PDUs和UMD PDUs以整型序列號迴圈編號(SN):AMD PDU是0-1023,UMD PDU是2[sn-FieldLength]

進行演算法處理時,SN需對值域進行模處理。

VT(A)和VR(R)應分別當做AM RLC實體的傳送方和接收方的模基數。模基數被所有相關變數減,然後執行絕對量的對比。比如,VR(R) <= SN < VR(MR) isevaluated as [VR(R) – VR(R)] modulo 1024 <= [SN – VR(R)] modulo 1024 <[VR(MR) – VR(R)] modulo 1024。

UM RLC實體的模基數是VR(UH) –UM_Window_Size。模基數被所有相關變數減,然後執行絕對量的對比。比如, (VR(UH) – UM_Window_Size) <= SN < VR(UH)is evaluated as [(VR(UH) – UM_Window_Size) – (VR(UH) – UM_Window_Size)] modulo2[sn-FieldLength] <= [SN – (VR(UH) – UM_Window_Size)] modulo 2[sn-FieldLength]< [VR(UH) – (VR(UH) – UM_Window_Size)] modulo 2[sn-FieldLength]).

AM RLC實體傳送方應維護如下狀態變數:

a) VT(A) - 確認狀態變數

這個變數儲存了按序下一個收到確認應答的AMD PDU的SN,並作為傳送視窗的下緣。

它初始化為0,當收到SN=V(A)的AMD PDU的肯定應答時,更新值。

b) VT(MS) - 最大發送SN狀態變數

它的值是VT(A) + AM_Window_Size,並作為傳送視窗的上沿。

c) VT(S) - 傳送SN狀態變數

儲存下一個生成的AMD PDU的SN。

初始化為0,當傳送SN=VT(S)的AMD PDU時更新。

d) POLL_SN - 傳送poll的SN的變數
儲存最近一次傳送的poll位置1的RLC資料PDU的SN。

AM RLC實體傳送方應維護如下計數器:

a) PDU_WITHOUT_POLL – Counter

b) BYTE_WITHOUT_POLL – Counter

c) RETX_COUNT – Counter

AM RLC實體接收方應維護如下狀態變數:

a) VR(R) – Receive state variable

儲存按序完整接收到的AMD PDU後的SN值,並作為接收視窗的下沿。

初始化為0,當AM PLC實體收到SN=VR(R)的AMD PDU時更新。

b) VR(MR) – Maximum acceptable receive state variable

儲存接收視窗外的第一個AMD PDU的SN,等於VR(R) + AM_Window_Size。作為接收視窗的上沿。

c) VR(X) – t-Reorderingstate variable

儲存觸發t-Reordering的RLC資料PDU後的PDU SN。

d) VR(MS) – Maximum STATUS transmit state variable

儲存在構建STATUS PDU時,最可能作為“ACK_SN"的SN值。

初始化為0。

e) VR(H) – Highest received state variable

儲存收到的SN最大的RLC資料PDU後的SN。

初始化為0。

每個UM RLC傳送實體應維護如下狀態變數:

a) VT(US)

每個UM RLC接收實體應維護如下狀態變數:

a) VR(UR) – UM receive state variable

b) VR(UX) – UM t-Reorderingstate variable

c) VR(UH) – UM highest received state variable

7.2 常量

a) AM_Window_Size

AM RLC實體的傳送發和接收方都用該常量計算VT(MS) from VT(A), and VR(MR)from VR(R). AM_Window_Size = 512.

b) UM_Window_Size

RM RLC接收者實體使用該常量,用來定義接收視窗內可接收的SN。

UM_Window_Size = 16 when a 5bit SN is configured,

UM_Window_Size = 512 when a 10 bit SN is configured and

UM_Window_Size = 0 when the receiving UM RLC entity is configured for MCCH orMTCH.

7.3 定時器

RRC配置如下定時器:

a) t-PollRetransmit

This timer is used by the transmitting side of an AM RLC entity in order to retransmit a poll (see sub clause 5.2.2).

b) t-Reordering

This timer is used by the receiving side of an AM RLC entity and receiving UM RLC entity in order to detect loss of RLC PDUs at lower layer (see sub clauses 5.1.2.2 and 5.1.3.2). Ift-Reordering is running,t-Reorderingshall not be started additionally, i.e. only onet-Reordering per RLC entity is running at a given time.

c) t-StatusProhibit

This timer is used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU (see sub clause5.2.3).

7.4 可配置引數

RRC配置如下引數:

a) maxRetxThreshold

This parameter is used by the transmitting side of each AM RLC entity to limit the number of retransmissions of an AMD PDU (seesubclause 5.2.1).

b) pollPDU

This parameter is used by the transmitting side of each AM RLC entity to trigger a poll for everypollPDU PDUs (seesubclause 5.2.2).

c) pollByte

This parameter is used by the transmitting side of each AM RLC entity to trigger a poll for everypollByte bytes (see subclause 5.2.2).

d) sn-FieldLength

This parameter gives the UM SN field size in bits (see subclause 7.1).


5.2 ARQ過程

只有AM RLC實體執行ARQ過程。

5.2.1 重傳

AM RLC實體的傳送方可收到失敗應答,一個AM PDU的或一個AM PDU的一部分,

    - 從對等AM RLC實體來的STATUS PDU

當從對等AM RLC實體收到一個AM PDU或一個AM PDU的一部分的STATUS PDU,AM RLC實體的傳送方應該:

    - 如果對應AM PDU的SN滿足VT(A) <= SN <VT(S):

        - 考慮對這個AM PDU或AM PDU的一部分進行重傳

當一個AM PDU或一個AM PDU的一部分考慮重傳,AM RLC實體的傳送方應該:

    - 如果AM PDU準備的是第一次重傳

        - 設定該AM PDU的RETX_COUNT=0

    - 否則,如果它已在重傳佇列

        - RETX_COUNT = RETX_COUNT + 1

    - 如果 RETX_COUNT == maxRetxThreshold

        - 指示上層已到達最大重傳門限

當重傳一個AM PDU,AM RLC實體的傳送方應該:

    - 如果AMD PDU大小正好適合某一下層指示的RLC PDU的大小

        - 傳送該AMD PDU到下層,僅需改動P域(5.2.2)

    - 否則,

        - 將AMD PDU分段,形成一個大小適合(下層指示的特定傳輸時機的RLC PDU的總大小)的新的AMD PDU,並將該新的AMD PDU分段傳送給下層。

當重傳一個AM PDU的一部分,AM RLC實體的傳送方應該:

    - 根據需要分段這個AMD PDU的一部分,形成一個新的AMD PDU分段,這個新的AMD PDU分段將適合下層指示的特定傳輸時機的RLC PDU的總大小,並將該新的AMD PDU分段傳送給下層。

當形成一個新的AMD PDU,AM RLC實體的傳送方應該:

    - 僅對映原AMD PDU的資料域到新的AMD PDU分段的資料域

    - 設定新AMD PDU分段的頭(依照section 6)

    - 設定P域(根據5.2.2)

5.2.2 輪詢

AM RLC實體可通過輪詢獲來觸發STATUS報告

5.2.2.1 AMD PDU或AMD PDU分段的傳送

組裝新的AMD PDU時,AM RLC實體的傳送方應該:

    -  PDU_WITHOUT_POLL加1

    - BYTE_WITHOUT_POLL += bytes of AMD PDU

    - ifPDU_WITHOUT_POLL >= pollPDU; or

    - ifBYTE_WITHOUT_POLL >= pollByte;

        - 在RLC data PDU中包含poll標誌

在組裝AMD PDU或AMD PDU分段時,AM RLC實體的傳送方應該:

    - 如果RLC data PDU傳送後,傳送緩衝區和重傳緩衝區都空了(等待迴應的RLC data PDU除外)

    - 如果RLC data PDU傳送後,沒有新的RLC data PDU可傳送(eg. 傳送視窗停轉)

        - 在RLC data PDU中包含poll標誌

要在RLC data PDU中包含poll標誌,AM RLC實體的傳送方應該:

    - 設定RLC data PDU的P域為1

    - set PDU_WITHOUT_POLL to 0;

    - set BYTE_WITHOUT_POLL to 0;、

傳送帶有poll標誌的RLC data PDU到底層後,以及更新VT(S)後,AM RLC實體的傳送方應該:

    - 設定POLL_SN=VT(S)-1

    - 如果t-PollRetransmit未執行

        - 啟動t-PollRetransmit

    - 否則

        - restart t-PollRetransmit

5.2.2.2 STATUS報告的接收

從AM RLC實體的接收方收到STATUS報告時,AM RLC實體的傳送方應該:

    - 如果STATUS報告包含關於SN=POLL_SN的RLC data PDU的肯定或否定的應答:

        - 如果t-PollRetransmit正在執行

            - restart t-PollRetransmit

5.2.2.3 t-PollRetransmit超時

t-PollRetransmit超時時,AM RLC實體的傳送方應該:

    - 如果RLC data PDU傳送後,傳送緩衝區和重傳緩衝區都空了(等待迴應的RLC data PDU除外)

    - 如果RLC data PDU傳送後,沒有新的RLC data PDU可傳送(eg. 傳送視窗停轉)

        - 考慮重傳AMD PDU with SN=VT(S)-1

        - 考慮重傳任何未收到肯定應答的AMD PDU

    - 在RLC data PDU中包含poll標誌(5.2.2.1)

5.2.3 狀態報告

AM RLC實體傳送狀態報告來提供RLC PDUs(或者是他們的一部分)的肯定或否定的應答

RRC配置是否在某個AM RLC實體上使用狀態阻止功能(the status prohibit function)。

觸發狀態報告包括:

    - 對等AM RLC實體的輪詢請求

        - 當從低層收到P域設為1的RLC data PDU(SN=x),AM RLC實體接收方應該:

            - 如果PDU如5.1.3.2.2所述被丟棄,或者

            - 如果 x < VR(MS) or x >= VR(MR):

               - 觸發狀態報告

           - 否則

               - 延遲觸發狀態報告,直到 x < VR(MS) or x >= VR(MR)

NOTE1: this ensures that the RLC Status report is transmitted after HARQ reordering.

    - 發現RLC data PDU接收失敗

        - AM RLC實體的接收方應在t-Reordering超時後,觸發狀態報告

NOTE2: t-Reordering超時既觸發VR(MS)更新也觸發狀態報告,狀態報告應在VR(MS)更新後觸發。

當狀態報告被觸發,AM RLC實體的接收方應該:

    - 如果 t-StatusProhibit 未執行

        - 在下層隨後指示的第一次傳送機會,即構造狀態報告並傳送給低層

    - 否則,

        - 在 t-StatusProhibit超時後下層指示的第一次傳送機會(即使多次觸發,也要等到超時),構造一個狀態報告並傳送給低層

當狀態報告傳送給低層,AM RLC實體接收方應該:

    - 啟動t-StatusProhibit

構造狀態報告時,AM RLC實體應該:

    - 對滿足VR(R)<SN<VR(MS)且為完成接收的AMD PDUs,

 in increasingSN order of PDUs and increasing byte segment order within PDUs, starting withSN = VR(R) up to the point where the resulting STATUS PDU still fits to thetotal size of RLC PDU(s) indicated by lower layer:

-     for anAMD PDU for which no byte segments have been received yet::

-     includein the STATUS PDU a NACK_SN which is set to the SN of the AMD PDU;

-     for acontinuous sequence of byte segments of a partly received AMD PDU that have notbeen received yet:

-     includein the STATUS PDU a set of NACK_SN, SOstart and SOend

-     set theACK_SN to the SN of the next not received RLC Data PDU which is not indicated asmissing in the resulting STATUS PDU.

5.3 SDU丟棄過程

上層(eg. PDCP)傳來丟棄某個RLC PDU時,如果沒有RLC SDU分段對映到RLC data PDU,那麼AM RLC實體的傳送方或者UM RLC傳送者實體應丟棄指定的RLC PDU。

5.4 重建過程

RLC重建應RRC請求執行,這個功能適用於AM/UM/TM RLC實體。