【大話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數據包10x01 0x02 0x03 0x04 0x05

LLC數據包20x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d

LLC數據包30x0e 0x0f 0x10 0x11

LLC數據包40x12 0x13 0x14 0x15 0x16 0x17 0x18

LLC數據包50x19 0x1a 0x1b 0x1c 0x1d

LLC 數據包60x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15

情況1:只有LLC數據包1需要下發;

情況2LLC數據包123需要同時下發;

情況3LLC數據包124需要同時下發;

情況4LLC數據包125需要同時下發。

情況5:只有LLC數據包6下發。

GPRS RLC數據塊包括:RLC headerRLC data unit以及spare bit,如下所示:

 

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

 

由上圖可知,當採用CS-1的信道編碼方式時,RLC data block塊大小爲22個字節,此時不包含spare bit

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

 

其中,RLC header包含2個固定字節(PRTFIFBIBSNE)及若干可選字節(Length indicatorME)。其中FBILIME字段的含義如下:

a. FBIFinal Block Indicator):最終塊標識,聲明瞭下行RLC數據塊是否是下行TBF中的最後一個RLC數據塊,即代表了TBF的終止。當FBI = 0時表示當前塊不是TBF的最後一個RLC數據塊;FBI = 1時表示當前塊是TBF的最後一個RLC數據塊。

b. LILength Indicator):長度標識LI用於給RLC數據塊中的LLC PDUs定界。第一個LI值標識的是在RLC數據字段中屬於第一個LLC PDU的字節數,第二個LI值標識的是在RLC數據字段中屬於第二個LLC PDU的字節數,依次類推。

關於LI還有一類特殊情況是,如果上層PDU的結尾此時正好可以填充上RLC數據塊,但是由於添加的LI字節導致上層PDU要擴展到下一個RLC數據塊,在這種情況下,LI字段應該設置爲0

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

c. MMore):更多,在GPRSTBF模式中,M bitE bit以及LI一起用於定界LLC PDUs。當M bit出現後它表示在RLC數據塊中是否還有另外一個LLC PDU在當前這個LLC PDU的後面。當ME同時出現時,其含義如下:

 

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. EExtends):擴展比特,它用於聲明在RLC數據塊頭是否存在一個可選的字節。當E ==0表示擴展字節緊隨;當E == 1表示沒有擴展字節。

 

下面開始實際的填充:

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

2) 情況2多個LLC PDU正好填充完一個RLC/MAC數據塊。這種情況下,在RLC data block中共有8個有效字節,其餘的14個字節均填充爲“0x2B”。

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)


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

 

4) 情況4最後一個LLC PDU正好填充RLC/MAC塊中剩餘的數據部分,但是由於添加可選字節LI導致該LLC PDU跨越兩個RLC/MAC的情況。

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

5) 情況5LLC PDU從一個新的RLC/MAC數據塊開始下發,且數據字段大於20個字節。 


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

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

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

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

 

關於RTI,協議中的描述有兩種功能:

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

2)  標識下行RLC/MAC控制塊相關的被分片的控制消息的序號;

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

RBSN和RBSNe標識一個RLC/MAC控制消息被分片後的下行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上傳輸一個控制消息的所有分片。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章