基于竞争的随机接入:
一、Msg1
1、Preamble 的主要作用是告诉eNodeB 有一个随机接入请求,并使得 eNodeB 能估计其与 UE 之间的传输时延,以便 eNodeB 校准uplink timing 并将校准信息通过 timing advance command 告知 UE。
2、eNodeB 通过广播 SIB2 发送 prach-ConfigIndex 和 prach-FrequencyOffset,从而确定该小区可用于传输 preamble 的时频资源集合。UE 发起随机接入时,从中选择一个资源(也可能由eNodeB 指定)发送 preamble。因为 eNodeB 不知道 UE 会在哪个时频资源上发送 preamble,所以会在指示的所有 preamble 时频资源上检测并接收 preamble。一旦这两个字段确定了,对接入该小区的所有 UE 而言,preamble 的格式(format)和可选的 PRACH 资源就固定了。
基于竞争的随机接入,其 preamble index 是由 UE 随机选择的。
确定目标接收功率PREAMBLE_RECEIVED_TARGET_POWER。
//收到 Msg1 的串口打印:
Msg1 [730] [1] : preambleId[26], ta[11], tpc[7], prachConfigIdx[0]
二、Msg2
1、RAR 时间窗起始于发送 preamble 的子帧(如果 preamble 在时域上跨多个子帧,则以最后一个子帧计算) + 3 个子帧,并持续 ra-ResponseWindowSize 个子帧。
2、RA-RNTI= 1 + t_id + 10 * f_id (用于加扰)
3、当 UE 成功地接收到一个 RAR(使用前面介绍的 RA-RNTI 来解码),且该 RAR 中的 preambleindex 与 UE 发送的 preamble index 相同时,则认为成功接收了 RAR,此时 UE 就可以停止监听RAR 了。
Msg1到RAR下发只在L2处理即可。
//发送 Msg2 的串口打印,见 dat 段:
Msg2 PDU [frm:730][sfm:5] :
msg: qlen: 0002 mlen: 0007 00-->00 region: 00
dat: 5a 00 b3 f0 5c 00 3d
对于上面的码流按协议解码其含义如下:
MAC子头及RAR的格式如下:(36.321 6.1.5)这样,Msg2的含义解码:
//这样, Msg2 的含义如下
dat: 5a 00 b3 f0 5c 00 3d
5a : 0101 1010
E : 0
T : 1
RAPID : 11010 = 26
Msg2 RAR:
msg: qlen: 0001 mlen: 0006 00-->00 region: 00
dat: 00 b3 f0 5c 00 3d
b3 : 1011 0011 —— TA : 1011 = 11
TC-RNTI : 00 3d = 61
UL Grant : ... ...
三、Msg3
只有基于竞争的随机接入才需要步骤三和步骤四。
1、Msg3 在 UL-SCH 上传输,使用 HARQ,且 RAR 中带的 UL grant 指定的用于 Msg3 的 TB 大小至少为 80 比特。
2、Msg3 中需要包含一个重要信息:每个 UE 唯一的标志。该标志将用于步骤四的冲突解决。对于处于 RRC_CONNECTED 态的 UE 来说,其唯一标志是 C-RNTI。对于非 RRC_CONNECTED 态的 UE 来说,将使用一个来自核心网的唯一的 UE 标志(S-TMSI或一个随机数)作为其标志。 此时 eNodeB 需要先与核心网通信,才能响应 Msg3。
//发送 Msg3 PUSCH 的串口打印,见 dat 段 :
msg: qlen: 0001 mlen: 0032 00-->00 region: 00
dat: 20 06 1f 5b 73 34 35 01 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
按协议解码(36.321 6.1)
这样,Msg3整个码流在MAC部分的含义解码:
dat: 20 06 1f 5b 73 34 35 01 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20:0010 0000 :LCID 为 0 ,为CCCH,即MSG3。且F2位为0,长度小于32767byte ,E位为1,有扩展头。
06:0000 0110 :F位为0,长度小于128 byte,使用 7 bit 长度头。长度为 000 0110,即 6。
1F:0001 1111 :E位为0,为最后一个MAC子头,使用R/F2/E/LCID的头,LCID为11111,即padding。
5b 73 34 35 01 36 :第一个头说明了长度为6,5b 73 34 35 01 36 这6个字节即Msg3消息的内容,后面为Padding。
剩下的递给RRC的部分(长度为 6)
5b 73 34 35 01 36
Msg3的内容往上以UL-CCCH递给RRC,按ANS.1解码(36.331 6.2.1)
这样Msg3的RRC码流解码含义为:
Msg3 RRC :5b 73 34 35 01 36
5B:0 1 0 1 1011
0:表示 UL-CCCH-MessageType = c1,即CHOICE中的第一个。
. 1:表示是rrcConnectionRequest,即CHOICE中的第二个。
. . 0:表示rrcConnectionRequest-r8,即CHOICE中的第一个。
. . . 1:表示InitialUE-Identity = randomValue,即CHOICE中的第二个。
之后是40 bit的random Value,因此这里5B中的B属于random Value
random Value(40 bit) : b 73 34 35 01 3
还剩下一个 6:0 1 1 0
0 1 1:表示establishmentCause,是一个最大值为7的枚举,占3位,这里011表示为3,即establishmentCause = mo-Signalling
. . . 0:表示BIT STRING (SIZE (1))的spare
那么Msg3就解析完了。
四、Msg4
1、UE 会在 Msg3 有携带自己唯一的标志: C-RNTI 或来自核心网的 UE标志(S-TMSI 或一个随机数)。 eNodeB 在冲突解决机制中,会在 Msg4(我们把步骤四的消息称为 Msg4)中携带该唯一的标志以指定胜出的 UE。而其它没有在冲突解决中胜出的 UE 将重新发起随机接入。
2、eNodeB 会通过 PCell 上使用 C-RNTI (RAR 中指定的 TC-RNTI)加扰的 PDCCH,或 DL-SCH 上传输的 UE ContentionResolution Identity MAC control element 来指明哪个 UE 在冲突解决中胜出。UE 发送了 Msg3 后,会启动一个 mac-ContentionResolutionTimer,并在 Msg3 进行 HARQ 重传时,重启该 timer。在该 timer 超时或停止之前,UE 会一直监听PDCCH。
对于如下串口打印
Msg3 RRC pdu: [frm:913][sfm:8]
msg: qlen: 0001 mlen: 0006 00-->00 region: 00
dat: 52 6e 5a 97 05 16
Msg4 subHeader [frm:915][sfm:4] :
msg: qlen: 0001 mlen: 0001 00-->00 region: 00
dat: 3c
Msg4 Contention Resolution Identity [frm:915][sfm:4] :
msg: qlen: 0001 mlen: 0006 00-->00 region: 00
dat: 52 6e 5a 97 05 16
Msg4 TB :
msg: qlen: 0003 mlen: 0041 00-->00 region: 00
dat: 3c 00 52 6e 5a 97 05 16 60 72 98 17 fc c4 11 83 81 b9 88 0b 08 28 02 00 f3 cc 55 5c 30 e4 4c 00 05 84 14 00 26 b0 50 06 00
按协议消息解读:(36.321 6.1.3.4)
dat: 3c 00 52 6e 5a 97 05 16 60 72 98 17 fc c4 11 83 81 b9 88 0b 08 28 02 00 f3 cc 55 5c 30 e4 4c 00 05 84 14 00 26 b0 50 06 00
3C:0011 1100 :LCID = 11100,即UE Contention Resolution Identity,E位为1,还有其它头。
00:0000 0000 :E位为0,为最后一个头,LCID为0。
52 6e 5a 97 05 16 :为UE Contention Resolution Identity,即L2保存的Msg3的消息内容。
从而得到Msg4在RRC部分的码流
Msg4的内容:60 72 98 17 fc c4 11 83 81 b9 88 0b 08 28 02 00 f3 cc 55 5c 30 e4 4c 00 05 84 14 00 26 b0 50 06 00
按协议解码
Msg4的内容:60 72 98 17 fc c4 11 83 81 b9 88 0b 08 28 02 00 f3 cc 55 5c 30 e4 4c 00 05 84 14 00 26 b0 50 06 00
继续解析:(36.331 6.2.1 DL-CCCH)
60:0110 0000
0:DL-CCCH-MessageType = c1,即CHOICE的第一个。
11:3,c1中有4个可能,3表示rrcConnectionSetup。
0 0:RRC-TransactionIdentifier范围为0~3,占两位,为0
0:表示c1,取CHOICE的第一个。
00:接后面。
72:0111 0010
000:前面60中有两个0,加72中的一个0,表示CHOICE中的第1个,共8个占三位,第一个即rrcConnectionSetup-r8。
1:表示 rrcConnectionSetup-r8 中的OPTIONAL——RRCConnectionSetup-v8a0-IEs——存在。
1:RadioResourceConfigDedicated是可扩展的,这里占1位,0和1各表示什么含义,目前还没弄明白。
1 0010:接后面。
98: 1001 1000
100101:接上面的1 0010加这里的一个1,100101表示RadioResourceConfigDedicated 中的OPTIONAL,110010,表示存在srb-ToAddModList 、mac-MainConfig、physicalConfigDedicated存在,而drb-ToAddModList、drb-ToReleaseList、sps-Config则不存在。
0:SRB-ToAddModList的范围为1~2,占一位,0表示1。
0:SRB-ToAddMod是可扩展的,占1位。
1 1:SRB-ToAddMod中的两个OPTIONAL,存在。
0:srb-Identity范围为1~2,占一位,0表示1。
0:CHOICE为0,即RLC-Config.
0:RLC-Config是可扩展的,占1位。
17:0001 0111
00:CHOICE有4个可能,占两位,0表示为am。
01 0111:T-PollRetransmit有64种可能的值,占6位,01 0111即23,即ms120。
// 按这种方法解析,不详述
...
五、Msg5
对于如下串口打印
PUSCH TB [frm : 537] [sfm : 2]:
msg: qlen: 0001 mlen: 0032 00-->00 region: 00
dat: 3a 3d 01 39 0f 88 00 00 20 00 d6 0e 82 e4 10 12 20 20 20 64 a8 0c 8c 0b e0 e1 80 80 22 00 5e 04
PUSCH TB [frm : 538] [sfm : 2]:
msg: qlen: 0002 mlen: 0097 00-->00 region: 00
dat: 3f 3f 3d 01 00 b0 01 15 a0 62 4e 53 01 00 42 20 02 00 00 21 02 0c 00 00 00 01 06 0c 00 00 00 00 00 1a 00 00 06 00 00 02 00 00 18 00 00 14 00 00 0a 00 00 20 00 b8 14 00 62 07 cb c0 7d 20 22 06 ae b1 0c 40 14 c0 28 08 45 23 02 00 24 1c 20 80 10 08 04 c0 00 00 04 3e 00 ba 02 07 82 00 00 00 00
RRCConnectionSetupComplete,属于UL-DCCH。走SRB1,要经过PDCP的校验。
解析大致流程同前面。
// 解析:
3a :0011 1010:E = 1,LCID = 11010 = Power Headroom Report
3d :0011 1101:E = 1,LCID = 11101 = Short BSR
01 :0000 0001:E = 0,LCID = 00001 = SRB1
39 :0011 1001:PH = 57
0f :0000 1111:BS Index = 15,means 78 < BS <= 91
88 :1000 1000:DC = 1(data),FI = 01,E = 0
00 :0000 0000:RLC SN = 0
00 :0000 0000:PDCP SN = 0
Data1:20 00 d6 0e 82 e4 10 12 20 20 20 64 a8 0c 8c 0b e0 e1 80 80 22 00 5e 04
// 解析:
3f :0011 1111:E = 1,LCID = 11111 = Padding
3f :0011 1111:E = 1,LCID = 11111 = Padding
3d :0011 1101:E = 1,LCID = 11101 = Short BSR
01 :0000 0001:E = 0,LCID = 00001 = SRB1
00 :0000 0000:BS Index = 0
b0 :1011 0000:DC = 1(data),P = 1,FI = 10,E = 0
01 :0000 0001:RLC SN = 1
Data2:15 a0 62 4e 53 01 00 42 20 02 00 00 21 02 0c 00 00 00 01 06 0c 00 00 00 00 00 1a 00 00 06 00 00 02 00 00 18 00 00 14 00 00 0a 00 00 20 00 b8 14 00 62 07 cb c0 7d 20 22 06 ae b1 0c 40 14 c0 28 08 45 23 02 00 24 1c 20 80 10 08 04 c0 00 00 04 3e 00 ba 02 07 82
00 00 00 00 :PDCP MAC-I
所以,PDCP递给RRC的数据应该是:
// Data1 + Data2 :
20 00 d6 0e 82 e4 10 12 20 20 20 64 a8 0c 8c 0b e0 e1 80 80 22 00 5e 04 15 a0 62 4e 53 01 00 42 20 02 00 00 21 02 0c 00 00 00 01 06 0c 00 00 00 00 00 1a 00 00 06 00 00 02 00 00 18 00 00 14 00 00 0a 00 00 20 00 b8 14 00 62 07 cb c0 7d 20 22 06 ae b1 0c 40 14 c0 28 08 45 23 02 00 24 1c 20 80 10 08 04 c0 00 00 04 3e 00 ba 02 07 82
然后,PDCP将最后的数据送往RRC,打印如下:
[PER ASN.1 Library] cm_pasn3.c:509 Decoding Element nhUL_DCCH_Msg
[PER ASN.1 Library] cm_pasn3.c:509 Decoding Element nhUL_DCCH_MsgTyp
Buf :
msg: qlen: 0003 mlen: 0110 00-->00 region: 00
dat: 20 00 d6 0e 82 e4 10 12 20 20 20 64 a8 0c 8c 0b e0 e1 80 80 22 00 5e 04 15 a0 62 4e 53 01 00 42 20 02 00 00 21 02 0c 00 00 00 01 06 0c 00 00 00 00 00 1a 00 00 06 00 00 02 00 00 18 00 00 14 00 00 0a 00 00 20 00 b8 14 00 62 07 cb c0 7d 20 22 06 ae b1 0c 40 14 c0 28 08 45 23 02 00 24 1c 20 80 10 08 04 c0 00 00 04 3e 00 ba 02 07 82