3.5.1 UE RRC层发起的竞争RA
UE RRC层发起的竞争RA过程,包括IDLE下初始接入、RRC连接重建立、离开RRC_INACTIVE态。只能在MCG的PCell下发起。
以上类型的RA过程相同,包括如下步骤。
步骤1,初始化RA过程。
1)初始化参数。
·清空Msg3 buffer;
·PREAMBLE_TRANSMISSION_COUNTER=1,preamble发送次数,置为1;
·PREAMBLE_POWER_RAMPING_COUNTER=1,preamble功率增长次数,置为1;
·PREAMBLE_BACKOFF=0,退避时长,单位为ms,置为0;
·SCALING_FACTOR_BI=1,退避因子,置为1。
2)选择UL载波。如果发送RA过程的UL载波被明确指示,则UE选择指示的载波执行RA过程;如果发送RA过程的UL载波没有被明确指示,那么当服务小区配置了SUL(可以在SIB1和UE RRC信令里面配置),并且当前UE的RSRP(下行PL参考)小于门限rsrp-ThresholdSSB-SUL时,选择SUL发起RA(远点超过门限时,使用SUL),否则选择NUL发起RA。
3)执行BWP切换操作,见2.7.4节中“通过RA过程切换”。(注:IDLE下的初始接入不涉及BWP切换操作,因为IDLE下的初始接入是在BWP0中发起的。)
4)设置参数:PREAMBLE_POWER_RAMPING_STEP=powerRampingStep,preamble功率增长步长,属于BWP级参数。
步骤2,选择RA资源。
1)选择SSB。UE测量SSB的SS-RSRP,如果超过门限RACH-ConfigCommon->rsrp-ThresholdSSB/rsrp-ThresholdSSB-SUL,则选中该SSB;如果所有SSB都没有超过门限,则UE选择任何一个SSB。
2)选择preambleGroup。
①如果Msg3未发送过,且没有配置preambleGroupB,则选择preambleGroupA。
②如果Msg3未发送过,且配置了preambleGroupB,那么仅当出现以下两种情况中的任意一种时选择preambleGroupB,其他情况都选择preambleGroupA。
·Msg3的大小大于ra-Msg3SizeGroupA,并且PL小于PCMAX(执行RA过程的服务小区)-preambleReceivedTargetPower-msg3-DeltaPreamble-messagePowerOffsetGroupB。
·Msg3包含CCCH SDU,并且“CCCH SDU+MAC子头”的大小大于ra-Msg3SizeGroupA。
③如果Msg3已经发送过,则选择第一次Msg3发送对应的preambleGroup。
3)选择preamble。从选择的SSB和选择的preambleGroup关联的preamble中,随机选择一个preamble。
4)选择该SSB对应的RACH occasion。选择策略如下:
·如果一个SSB对应多个RO,则随机选择一个(需要考虑可能出现的测量GAP);
·如果一个RACH occasion关联周期内有多个映射周期(SSB到RO的映射周期),则选择第一个可用的映射周期。
步骤3,发送Msg1。
1)如果PREAMBLE_TRANSMISSION_COUNTER大于1(不是首次发送Msg1),没有挂起功率增长计数器PREAMBLE_POWER_RAMPING_COUNTER,并且本次发起RA和上次RA选择的SSB或者CSI-RS一样(如果前后两次发起RA的SSB/CSI-RS不同,则不需要增加功率),则PREAMBLE_POWER_RAMPING_COUNTER加1,即需要增加功率。
2)设置Msg1的目标功率。
PREAMBLE_RECEIVED_TARGET_POWER=preambleReceivedTargetPower+DELTA_PREAMBLE+(PREAMBLE_POWER_RAMPING_COUNTER-1)×PREAMBLE_POWER_RAMPING_STEP
3)计算RA-RNTI。
RA-RNTI=1+s_id+14×t_id+14×80×f_id+14×80×8×ul_carrier_id
其中,s_id为PRACH occasion的第一个符号索引(0≤s_id<14),t_id为PRACH occasion的第一个slot在一个帧中的索引(0≤t_id<80,参考PRACH的子载波间隔),f_id为PRACH occasion在频域上的索引(0≤f_id<8),ul_carrier_id为上行载波指示(0为NUL,1为SUL)。
4)通知PHY发送RA。
步骤4,接收Msg2。
1)在SpCell中启动ra-ResponseWindow(在RACH-ConfigCommon中配置),在RA发送之后的第一个PDCCH occasion启动。
2)在ra-ResponseWindow运行期间,使用RA-RNTI检测RAR的PDCCH。
3)如果通过RA-RNTI收到了DCI,并且成功解码Msg2,那么处理如下。
①如果Msg2包含一个带BI的MAC subPDU,则设置PREAMBLE_BACKOFF=BI值×SCALING_FACTOR_BI(BI值查表3-14得出);否则,设置PREAMBLE_BACKOFF=0。
【说明】UE一旦成功解码Msg2,不管是不是自己的Msg2,只要它包含了BI子头,都需要应用,因为这说明gNB负荷比较高了,需要退避一段时间后再发起RA。
②如果Msg2包含一个带RAPID的MAC subPDU,其RAPID和UE发送的preambleID相等,则认为成功接收了Msg2,UE可以停止ra-ResponseWindow。
③如果Msg2被成功接收,那么处理为:当Msg2包含一个只有RAPID子头的MAC subPDU时,认为RA过程成功完成,给高层指示接收到SI request的确认消息(说明:只有SI请求的非竞争RA的Msg2才包含一个只有RAPID子头的MAC subPDU);除此之外,处理如下。
·对发送RA preamble的服务小区应用下面的过程:处理接收到的TA命令;挂起功率增长计数器PREAMBLE_POWER_RAMPING_COUNTER(因为本次已经成功接收了Msg2,所以下一次发送Msg1的时候不需要增加功率);如果RA过程是在SCell的未配置pusch-Config的UL载波上进行的,则忽略收到的UL Grant,否则,处理接收到的UL Grant。
·如果是非竞争RA,则认为RA过程成功完成,结束处理。
·如果是竞争RA,则保存Msg2里面的Temporary C-RNTI,如果此时是UE第一次成功接收Msg2,则发送Msg3,到步骤5。
4)如果ra-ResponseWindow超时,并且没有收到匹配发送preamble的Msg2,那么处理如下。
①认为Msg2没有成功接收。
②PREAMBLE_TRANSMISSION_COUNTER加1。
③当PREAMBLE_TRANSMISSION_COUNTER=preambleTransMax+1,即达到RA最大次数时,处理如下。
·如果RA过程在SpCell发起,则通知上层RA问题,如果此RA过程是SI请求的RA过程,则认为RA过程失败,结束处理。
·如果RA过程在SCell发起,则认为RA过程失败,结束处理。
④如果RA过程没有完成,则在0~PREAMBLE_BACKOFF之间随机选择一个退避时间。当在退避时间内选择了非竞争RA资源时,或者在退避时间超时后(在退避时间内未选择到非竞争RA资源),转到步骤2继续执行RA。
【说明】步骤4包括各种类型RA的处理,对于不同类型的RA进行不同的分支处理即可。
步骤5,发送Msg3。
此种类型的RA,Msg3包含CCCH SDU(RRC层组好的ASN码流,共48 bit),通过CCCH逻辑信道,RLC TM模式发送,有MAC子头;如果Msg2给的授权够大,那么还可能包含Padding,格式如图3-17所示。
图3-17 Msg3 MAC PDU
步骤6,竞争解决(在Msg3成功发送后,接收Msg4)。
1)Msg3发送后,在SpCell启动或者重启ra-ContentionResolutionTimer(Msg3重传)。在ra-ContentionResolutionTimer运行期间,使用Temporary C-RNTI检测PDCCH,忽略可能出现的测量GAP。
2)如果使用Temporary C-RNTI成功接收到PDCCH,并且成功解码Msg4 MAC PDU(CRC OK),则停止ra-ContentionResolutionTimer,处理如下。
①当Msg4带的竞争解决MAC CE和CCCH SDU匹配时:认为竞争解决成功,完成Msg4 MAC PDU的解析,UE在PUCCH上发送AN;如果RA过程是SI请求发起,则通知高层SI请求成功接收,否则将C-RNTI设置为Temporary C-RNTI;认为RA过程成功完成。
②当Msg4带的竞争解决MAC CE和CCCH SDU不匹配时,丢弃Temporary C-RNTI,丢弃Msg4 MAC PDU,认为竞争解决失败。
3)如果ra-ContentionResolutionTimer超时,则丢弃Temporary C-RNTI,认为竞争解决失败。
4)如果竞争解决失败,那么处理如下。
①清空Msg3 buffer。
②PREAMBLE_TRANSMISSION_COUNTER加1。
③如果PREAMBLE_TRANSMISSION_COUNTER=preambleTransMax+1,即达到了RA最大次数,则通知上层RA问题。
④如果RA过程没有完成,则在0~PREAMBLE_BACKOFF之间随机选择一个退避时间,当在退避时间内选择了非竞争RA资源时,或者在退避时间超时后(在退避时间内未选择到非竞争RA资源),转到步骤2继续执行RA。