天天看點

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

LLC PDU填充RLC/MAC執行個體介紹

        本文檔的總結是在對GPRS系統的學習做彙報時,楷哥提出的問題當時沒有回答上來的總結。LLC PDU填充RLC/MAC包括填充RLC/MAC資料塊以及上層控制消息填充RLC/MAC控制塊時需要分塊的情況。

1. LLC PDU填充RLC/MAC資料塊

假設現在有如下五包LLC資料,按照下面四種情況,分别組出RLC/MAC資料包。

注:采用CS-1編碼方式,主要是分段字段的填寫,其它字段預設為0。

LLC資料包1:0x01 0x02 0x03 0x04 0x05

LLC資料包2:0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d

LLC資料包3:0x0e 0x0f 0x10 0x11

LLC資料包4:0x12 0x13 0x14 0x15 0x16 0x17 0x18

LLC資料包5:0x19 0x1a 0x1b 0x1c 0x1d

LLC 資料包6:0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15

情況1:隻有LLC資料包1需要下發;

情況2:LLC資料包1、2、3需要同時下發;

情況3:LLC資料包1、2、4需要同時下發;

情況4:LLC資料包1、2、5需要同時下發。

情況5:隻有LLC資料包6下發。

GPRS RLC資料塊包括:RLC header、RLC data unit以及spare bit,如下所示:

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

RLC data block可采用的編碼方式如下所示:

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

由上圖可知,當采用CS-1的信道編碼方式時,RLC data block塊大小為22個位元組,此時不包含spare bit。

在進行分析組包前,先給出RLC/MAC下行資料塊的幀結構,并對組包時需要用到的幀結構的字段進行分析,然後再給出實際的組包結果,RLC/MAC下行資料塊幀結構如下:

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

其中,RLC header包含2個固定位元組(PR、TFI、FBI和BSN、E)及若幹可選位元組(Length indicator、M和E)。其中FBI、LI、M和E字段的含義如下:

a. FBI(Final Block Indicator):最終塊辨別,聲明了下行RLC資料塊是否是下行TBF中的最後一個RLC資料塊,即代表了TBF的終止。當FBI = 0時表示目前塊不是TBF的最後一個RLC資料塊;FBI = 1時表示目前塊是TBF的最後一個RLC資料塊。

b. LI(Length Indicator):長度辨別,LI用于給RLC資料塊中的LLC PDUs定界。第一個LI值辨別的是在RLC資料字段中屬于第一個LLC PDU的位元組數,第二個LI值辨別的是在RLC資料字段中屬于第二個LLC PDU的位元組數,依次類推。

關于LI還有一類特殊情況是,如果上層PDU的結尾此時正好可以填充上RLC資料塊,但是由于添加的LI位元組導緻上層PDU要擴充到下一個RLC資料塊,在這種情況下,LI字段應該設定為0。

同時,在這種情況下,在發送端M bit應當設定為0,E bit應當設定為1;在接收端,M bit應當被忽略,E bit應當被解釋為1。

c. M(More):更多,在GPRS的TBF模式中,M bit和E bit以及LI一起用于定界LLC PDUs。當M bit出現後它表示在RLC資料塊中是否還有另外一個LLC PDU在目前這個LLC PDU的後面。當M和E同時出現時,其含義如下:

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

00:如果MS收到(在A/Gb模式下),它應當忽略除MAC頭部之外的所有RLC/MAC塊的字段。

01:表示在目前LLC PDU之後沒有LLC資料了,不含有擴充位元組;

10:表示在目前LLC PDU之後又有一個新的LLC PDU,還存在一個擴充位元組用于為新的LLC PDU定界;

11:表示目前LLC PDU之後又有一個新的LLC PDU,該LLC PDU一直持續到RLC資訊字段的結尾,不含有擴充位元組。

d. E(Extends):擴充比特,它用于聲明在RLC資料塊頭是否存在一個可選的位元組。當E ==0表示擴充位元組緊随;當E == 1表示沒有擴充位元組。

下面開始實際的填充:

1) 情況1:一個LLC PDU填充到RLC/MAC塊中,且未填充滿。

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

2) 情況 2 : 多個LLC PDU正好填充完一個RLC/MAC資料塊。這種情況下,在 RLC data block 中共有 8 個有效位元組,其餘的 14 個位元組均填充為“ 0x2B ”。

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

3) 情況 3 : 多個LLC PDU填充一個RLC/MAC資料塊,且最後一個LLC PDU跨越兩個RLC/MAC資料塊。注意:上圖中橙色辨別的地方, M E 要填充為“ 01 ”,而不能為“ 11 ”,因為這個 LLC PDU 就隻有 4 位元組的資料,正好填充完,後面沒有該 LLC PDU 的資料了。我第一次填充的時候使用的是“ 11 ”,這是錯誤的,使用“ 11 ”的情況辨別一個 LLC PDU 跨越了兩個 RLC/MAC 資料塊的情況。見 3) 。

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

注意:上圖橙色填充的地方表示一個LLC PDU跨越了連個RLC/MAC資料塊。當接收端接收到該RLC/MAC資料塊後,接收端就知道後面還有資料才能組成一個完整的LLC PDU。

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

4) 情況4:最後一個LLC PDU正好填充RLC/MAC塊中剩餘的資料部分,但是由于添加可選位元組LI導緻該LLC PDU跨越兩個RLC/MAC的情況。

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

注意:這種情況就是LLC PDU的資料恰好能填充滿剩餘的RLC/MAC的剩餘部分,但是由于擴充位元組的添加導緻該LLC PDU擴充到下一個RLC/MAC資料塊的情況。此時,上圖中的LI字段為0,M字段為0,E字段為1,詳細解釋可以參考前面LI字段的釋義部分。

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

5) 情況 5 : LLC PDU 從一個新的 RLC/MAC 資料塊開始下發,且資料字段大于 20 個位元組。 

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

注意:如果某LLC PDU重新開始于一個RLC/MAC塊,且其長度大于20個位元組,則在進行填充時,第一個RLC/MAC塊中是沒有可選位元組的,即E = 1,代表“No extension octet follows”。

2. 控制消息填充RLC/MAC控制塊時分塊的情況

RLC/MAC控制塊使用采用CS-1編碼方式。

下行RLC/MAC控制塊的幀結構如下所示:

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

關于RTI,協定中的描述有兩種功能:

1)  聚合下行RLC/MAC控制塊以使其組成一個RLC/MAC控制消息;

2)  辨別下行RLC/MAC控制塊相關的被分片的控制消息的序号;

RTI對某個控制消息标記,然後RBSN、RBSNe、FS和FSe共同對分片進行控制。

RBSN和RBSNe辨別一個RLC/MAC控制消息被分片後的下行RLC/MAC控制塊的序号。

【大話GSM】LLC PDU填充RLC/MAC執行個體介紹

隻有網絡端可以對RLC/MAC控制消息進行分片,MS不可以。且最多分片數為:1~9。當RLC/MAC控制消息不能恰好分成一個整數的控制塊時,最後一個控制塊将會被填充位元組填充。RLC/MAC控制塊頭部的FS bit會根據RLC/MAC控制塊是否是最後一個分片的情況來設定,如果使用了RBSNe,則FS始終設定為0。

對于兩個獨立的RLC/MAC控制消息,網絡不能在相同的PDCH上在同一時刻使用相同的RTI。對于不同的PDCHs在同一時刻網絡可以使用相同的RTI。網絡應當在相同的PDCH上傳輸一個控制消息的所有分片。