微信公众号同步更新,欢迎关注同名微信公众号“modem协议笔记”。
在NR中降低UE功耗一直比较重要,如38.300 power saving 所述,NR 中UE power saving的机制有很多,包含DRX ,BWP adaption, dormancy BWP, DCP(DCI with CRC scrambled by PS-RNTI),跨时隙调度,放松测量等。dormancy BWP和DCP都集中在dormancy BWP中介绍,这篇CDRX也会提及部分内容;放松测量大概内容主要在38.304及38.133,而这篇主要看下CDRX。
R16版本的CDRX相比于R15,增加了DCP WUS的内容,也对CSI/SRS部分进行了增强,更细化了CSI/SRS发送的场景,除此之外,UE还可以通过UEAssistanceInformation向网络report perfer C-DRX cycle length。R17版本的CDRX 增加了NTN,sidelink的内容,也增加了MBS Broadcast/Multicast场景的CDRX。这篇主要看下R16版本的CDRX,算是承上启下吧。
先看38.300中的描述,了解下DRX 的大概过程。
当配置了 DRX 时,UE 不必持续监视 PDCCH。 DRX具有以下特点:
- on-duration:UE 醒来后等待接收 PDCCH 的持续时间。 如果 UE 成功解码 PDCCH,则 UE 保持清醒并启动inactivity timer;
- inactivity-timer:UE等待成功解码PDCCH的持续时间,从PDCCH的最后一次成功解码开始,timer 超时后UE可以返回sleep。 UE 应在一次成功解码 PDCCH 后重新启动非活动定时器,这个PDCCH data必须是第一次传输,重传的情况不会restart inactivity timer.
- retransmission-timer:预计重传之前的持续时间;
- cycle:on duration+inactivity period 如下图;
- active-time:UE监听PDCCH的总时长。 这包括 DRX cycle的 on-duration,在inactivity timer 未超时前 UE执行连续接收的时间以及 UE 在等待重传时机执行连续接收的时间。
相应地,网络侧可以给UE在active BWP中配置DCP-config用于指示UE是否需要在下一个 long DRX cycle开启drx-onDurationTimer,即可以使得UE保持DRX sleep状态,达到进一步省电的功能,主要通过 ps-RNTI 加扰的DCI 2_6 中的 Wake-up indication实现,具体参见Dormant BWP 中的DCI 2_6的描述。
UE 不会在active-time、measurement gaps、BWP switching期间或者当它监视用于BFR的CFRA preamble 传输的response等情况监听DCP,转而在next on-duration期间监听PDCCH。 如果active BWP 中没有配置 DCP,则 UE 遵循正常的 DRX 操作。配置CA时,仅在PCell上配置DCP。
接下来具体看下DRX 的具体工作原理,主要在38.321 5.7章节。下面是38.321 DRX相关的参数,直接摘抄过来,做记录,后面再具体看每个参数的含义。
drx-onDurationTimer: the duration at the beginning of a DRX cycle;
drx-SlotOffset: the delay before starting the drx-onDurationTimer;
drx-InactivityTimer: the duration after the PDCCH occasion in which a PDCCH indicates a new UL or DL transmission for the MAC entity;
drx-RetransmissionTimerDL (per DL HARQ process except for the broadcast process): the maximum duration until a DL retransmission is received;
drx-RetransmissionTimerUL (per UL HARQ process): the maximum duration until a grant for UL retransmission is received;
drx-LongCycleStartOffset: the Long DRX cycle and drx-StartOffset which defines the subframe where the Long and Short DRX cycle starts;
drx-ShortCycle (optional): the Short DRX cycle;
drx-ShortCycleTimer (optional): the duration the UE shall follow the Short DRX cycle;
drx-HARQ-RTT-TimerDL (per DL HARQ process except for the broadcast process): the minimum duration before a DL assignment for HARQ retransmission is expected by the MAC entity;
drx-HARQ-RTT-TimerUL (per UL HARQ process): the minimum duration before a UL HARQ retransmission grant is expected by the MAC entity;
ps-Wakeup (optional): the configuration to start associated drx-onDurationTimer in case DCP is monitored but not detected;
ps-TransmitOtherPeriodicCSI (optional): the configuration to report periodic CSI that is not L1-RSRP on PUCCH during the time duration indicated by drx-onDurationTimer in case DCP is configured but associated drx-onDurationTimer is not started;
ps-TransmitPeriodicL1-RSRP (optional): the configuration to transmit periodic CSI that is L1-RSRP on PUCCH during the time duration indicated by drx-onDurationTimer in case DCP is configured but associated drx-onDurationTimer is not started.
DRX参数配置结构
R16版本可以对serving cells 分别配置在两个DRX group中。主要是为了节能及更好的管理,因而提出将FR1和FR2 分别配置在不同的DRX group,每个DRX group采用各自的drx参数,具体引入原因可以看R2-2004855,38.321中对于两个DRX group的描述,也就下面这一段,毕竟仅仅是某些参数要独立配置,重要的还是DRX工作机制。
serving cell的MAC entity 可能会由 RRC 配置在两个 DRX group中,每个DRX group具有单独的 DRX 参数。 当RRC没有配置secondary DRX group时,即只有一个DRX group,那所有的Serving Cell都属于这个DRX group。 当配置了两个 DRX group时,每个serving cell会被唯一地分配给两个组中的任何一个。 每个DRX group单独配置的DRX参数对应的是drx-ondurationTimer和drx-inactivityTimer。共同的参数是drx-SlotOffset, drx-RetransmissionTimerDL, drx-RetransmissionTimerUL, drx-LongCycleStartOffset, drx-ShortCycle (optional), drx-ShortCycleTimer (optional), drx-HARQ-RTT-TimerDL, and drx-HARQ-RTT-TimerUL。
DRX RRC层参数结构罗列在下面。
接下来按照38.321的内容,分别看下各个timer是如何工作的。
drx-onDurationTimer
DRX cycle开始对应的是一段on Duration ,在on duration期间UE是要监听PDCCH的,即处于Active time。on duration的时间由drx-onDurationTimer控制,时间单位是1/32ms,即subMiliSeconds。
DRX inactivity Timer
当UE收到一个PDCCH新传调度时,后续可能还有需要发送和接收的UL/DL data,UE需要启动DRX Inactivity定时器来等待一段时间,等待后续可能还有的DL/UL调度。
drx inactivity timer在PDCCH新传调度结束后的第一个symbol启动;drx-inactivitytimer与DRX的其他timer独立运行,没有关联。
HARQ-RTT-Timer
对于同一个HARQ进程,当一次上行调度或下行调度,到下一次调度,需要一定的处理时间,这个时长就是HARQ RTT(Round Trip Timer)时间;
在NR 中上下行HARQ都是异步HARQ,即HARQ RTT时长不是固定的。
drx-HARQ-RTT-TimerDL和drx-HARQ-RTT-TimerUL的单位是BWP的symbol个数,最长56个symbol即4个slots。
因此也将上述两个Timer描述为DL/UL调度重传的最短时长。
如果不开启DRX,就不会配置这两个timer,因为UE总在监听PDCCH;如果开启DRX 才会配置这两个 timer,对于同一个HARQ progress,在Timer运行期间,不会有相同HARQ 的PDCCH 调度。
DRX RetransmissionTimer
drx-RetransmissionTimerDL/UL 的单位是slot数,sl0对应 0个slots,sl1对应 1 slot....
更具体的 在DRX group处于Active Time期间时,
DL:
在UE收到DL data后,要针对对应的HARQ process开启drx-HARQ-RTT-TimerDL,具体的开启时间对应HARQ ACK/NACK发送后的第一个symbol,同时停止对应HARQ process 的drx-RetransmissionTimerDL。
值得注意的时上面的内容有一个non-numerical k1 的说法,这个场景对应的NR-U,具体讨论可以查看R2-1909808和R2-1912101,大概意思是当DCI PDSH-to-HARQ_feedback timing对应的是一个non-numerical k1(即没有指定HARQ ACK/NACK 所用的K1),那UE要在当前bundle内最后一个pdsch结束后的第一个符号启动drx-RetransmissionTimerDL,等待下一个DCI 带下来正确的k1,再进行HARQ ACK/NACK的动作。
当drx-HARQ-RTT-TimerDL超时后,对于同一个HARQ process,如果UE解码PDSCH失败时,UE必须要监听PDCCH来获取DL 重传data,这时UE启动drx-RetransmissionTimerDL来等待下行的重传data; 如果UE解码PDSCH成功,不需要启动drx-RetransmissionTimerDL。
UL:
在UE收到UL grant时,要针对对应的HARQ process开启drx-HARQ-RTT-TimerUL,具体的开启时间对应当然bundle内的第一个PUSCH发送后的第一个symbol,同时在相应 PUSCH 传输的第一次传输时就要停止对应HARQ process 的drx-RetransmissionTimerUL。
当drx-HARQ-RTT-TimerUL超时后,对于同一个HARQ进程,UE发送PUSCH后,UE不知道基站是否解码成功,必须要监听PDCCH来获取可能的UL 重传data,所以这时UE要开启drx-RetransmissionTimerUL。
针对上述过程的图示如下:
查看协议可以看到DL SPS 和configured UL grant的描述并没有上面动态调度的那句"if a DRX group is in Active Time",也就是说DL SPS 和configured UL grant不受DRX active 和sleep机制的影响,按照各自的配置进行UL/DL操作,其他内容基本一样,具体如下:
DL SPS
在UE收到DL data后,要针对对应的HARQ process开启drx-HARQ-RTT-TimerDL,具体的开启时间对应HARQ ACK/NACK发送后的第一个symbol,同时停止对应HARQ process 的drx-RetransmissionTimerDL。
configured UL grant:
在UE收到UL grant时,要针对对应的HARQ process开启drx-HARQ-RTT-TimerUL,具体的开启时间对应当前bundle内第一个PUSCH发送后的第一个symbol,同时在相应 PUSCH 传输的第一次传输时就要停止对应HARQ process 的drx-RetransmissionTimerUL。
DRX cycle
网络侧可以给UE配置drx long cycle或者short cycle,其中short cycle是可以不配置的。
drx-ShortCycle 单位是ms;drx-ShortCycleTimer 对应的是drx-ShortCycle的倍数,drx-ShortCycleTimer 对应的时间就是short cycle的确切时间。
对于long cycle,通过drx-LongCycleStartOffset ms160 : 5 的方式配置,对应drx-LongCycle=160ms drx-StartOffset=5ms。如果有配置drx-ShortCycle时,drx-LongCycle应该是drx-ShortCycle的倍数。
引入short cycle 主要原因是long cycle虽然有利于UE节能,但是可能会影响UE data 的收发。
两种drx cycle的工作流程如下:
DRX group 的 drx-InactivityTimer 超时后,如果UE有收到Short DRX cycle的配置,就在drx-InactivityTimer超时后的第一个symbol start/restart drx-ShortCycleTimer,开始short DRX cycle;只有long DRX cycle的配置就直接开始long cycle。
drx-ShortCycleTimer 超时后,下面就要进入long DRX cycle。
除了上述方式还能通过MAC CE控制DRX cycle的开启:
UE收到DRX Command MAC CE,如果UE有收到Short DRX cycle的配置,就在接收完DRX Command MAC CE后的第一个symbol start/restart drx-ShortCycleTimer,开始short DRX cycle;只有long DRX cycle的配置就直接开始long cycle。
另外在short cycle期间UE收到long DRX Command MAC CE,就要stop drx-ShortCycleTimer,直接进入long DRX cycle。
在收到long DRX Command MAC CE或DRX Command MAC CE时,UE要停止drx-onDurationTimer和drx-InactiveTimer,因为之后就要直接进入short cycle或long cycle了。
long DRX Command MAC CE和 DRX Command MAC CE分别通过MAC subheader LCID 59和60进行区分。
DRX 参数 slotOffset
DRX slot offset单位是ms,通过drx slotoffset可以配置On duration开始时间。
通过上述公式分别确定short/long Drx cycle要开始的subframe number,再经过drx-slotoffset后才start drx-onDurationTimer。
结合上面的内容,配置short cycle时的一种DRX图示如下。
short cycle根据公式计算确定好subframe就好;long cycle的开启还涉及DCP及其他相关内容。
WUS(wake up signal)
DCP 主要对long DRX cycle起作用,所以对于long DRX cycle,还要考虑DCP 的配置。
UE没有收到DCP的配置,则按照正常的规则开始long DRX cycle。
UE有收到DCP的配置时要分情况考虑long DRX cycle的启动:
(1)UE在Outside DRX ActiveTime 期间收到DCI 2_6,其中Wake-up indication =1 代表在下一个 long DRX cycle开启drx-onDurationTimer;Wake-up indication =0 代表在下一个 long DRX cycle不开启drx-onDurationTimer,即保持DRX sleep状态,达到进一步省电的功能。
(2)DCP-Config-r16的ps-WakeUp,在配置时只能是true,否则可以缺省;ps-WakeUp=true时,代表UE在DRX outside active time没有检测到DCI 2_6时,UE要在下一个long DRX cycle时开启drx-OnDurationTimer,即醒过来;没有配置ps-WakeUp时,UE也没有坚持到DCI 2_6,则UE可以继续处于sleep状态这就是所谓的WUS,详细流程详见 dormancy BWP 中的DCP-config部分的描述。
(3)UE要在下一个DCP occasion开始的前4ms结合grants/assignments/DRX Command MAC CE/Long DRX Command MAC CE/SR 发送等情况 评估当前DRX cycle 是否会在Active Time,评估完在Active Time就按照long drx cycle的规则开启drx-onDurationTimer,不用在下一个DCP occasion监听DCI 2_6;
(4)在测量间隙期间或者UE正在SpCell的recoverySearchSpaceId指示的搜索空间上监听PDCCH data时 ,也按照long drx cycle的规则开启drx-onDurationTimer。
针对上面的(3)举例说明下
如上图示,假如在上图的DCP occasion前4ms评估完,由于congfiured grant UL传输或者DL SPS传输或者SR的配置等等,DCP occasion那段时间UE要进入Active Time,那就按照对应的规则开启drx-onDurationTimer。
那这里就引出一个容易被忽视的点,就是DRX Active Time不是由drx-onDurationTimer单独控制的,在上图中灰色的sleep状态,如果有其他相关Timer在运行,也会使得UE进入Active Time。接下来就看下DRX active Time的描述。
DRX active Time
配置DRX后,UE在Active Time要监听PDCCH 信道,其他时间为sleep时间。
当配置DRX时, DRX group中的serving cells的Active Time包含的时间如下:
-正在运行的DRX group配置的drx-onDurationTimer或drx-InactivityTimer;
- drx-RetransmissionTimerDL 或 drx-RetransmissionTimerUL 正在 DRX group中的任何服务小区上运行;
- ra-ContentionResolutionTimer或 msgB-ResponseWindow正在运行;
- 在 PUCCH 上发送的SR并处于pending状态等待的时长由SR配置决定;
- 随机接入成功后 UE等待C-RNTI加扰的PDCCH新传的时间
即上面的情况都会使得UE进入Active 状态。
DRX相关的各个timer是相互独立工作,控制UE DRX 状态的变化,下面是DRX 有关Timer的汇总。
针对这部分举个例子。
(1)UE只配置了drx long cycle,在 drx-onDurationTimer运行期间处于DRX Acitive Time,需要正常监听PDCCH;
(2)UE收到UL PDCCH 新传data时,开启drx-InactivityTimer,该timer运行期间一直处于Active Time,超时后进入sleep状态;
(3)UE在drx-InactivityTimer运行期间根据PDCCH的指示,发送了PUSCH 之后,开启drx-HARQ-RTT-TimerUL;
(4)drx-HARQ-RTT-TimerUL超时后,UE开启drx-RetransmissionTimerUL,该timer运行期间,UE处于Active Time
(5)橘色框部分,drx-RetransmissionTimerUL 超时后,UE重新进入sleep状态
(6)紫色框部分,drx-RetransmissionTimerUL运行期间,UE收到网络侧的PDCCH UL重选指示,停止drx-RetransmissionTimerUL;待PUSCH法出去后,再次开启drx-HARQ-RTT-TimerUL......
DRX 对CSI/SRS的影响
在NR 中,处于RRC connected mode的UE,一般会配置SRS和CSI相关的参数,当DRX 打开后,要考虑UE sleep 状态和CSI上报及SRS 发送之间的关系。
假如SRS/CSI report 发送的symbol是n,UE有配置DCP-config,如果symbol n处于drx-onDurationTimer运行期间且相关的drx-onDurationTimer还没有开始:UE要在symbol n提前4ms结合grants/assignments/DRX Command MAC CE/Long DRX Command MAC CE/SR 发送等情况 评估symbol n 时 的MAC entity 是否还会在Active Time,假如评估完MAC entity不在Active Time,即在sleep状态,那UE就不能发送periodic SRS和semi-persistent SRS ,也不能通过PUSCH 发送semi-persistent CSI;另外如果ps-TransmitPeriodicL1-RSRP不等于true UE也不能在PUCCH上 report L1-RSRP相关的periodic CSI;如果ps-TransmitOtherPeriodicCSI不等于true,UE不能在PUCCH 上发送非L1-RSRP相关的periodic CSI。
ps-TransmitOtherPeriodicCSI和ps-TransmitPeriodicL1-RSRP的配置路径如下。
除了上面提到的情况外,UE在symbol n提前4ms结合grants/assignments/DRX Command MAC CE/Long DRX Command MAC CE/SR 发送等情况 评估symbol n 时 的MAC entity 是在sleep状态,那UE就不能发送periodic SRS和semi-persistent SRS ,也不能通过PUSCH 发送semi-persistent CSI 同时也不可以通过PUCCH report CSI;当RRC层有配置csi-Mask且DRX和CSI也有同时配置,UE如果在CSI发送symbol n提前4ms预估是否为on Duration状态,如果不是On duration就不发送PUCCH 上的CSI report,言外之意是配置csi-Mask 时,UE可以发送PUSCH上的半持续CSI report。
csi-Mask的配置路径如下。
UEAssistanceInformation
R16 UE还可以通过UEAssistanceInformation向网络report perfer C-DRX cycle length,上报的drx-preference参数包含preferred drx-InactivityTimer/drx-longcycle/drx-shortcycle/drx-shortCycleTimer,结构如下。
如果UE具备上报perference DRX 参数的能力且网络侧有配置要求UE上报时,UE就可以将preference DRX 参数通过UEAssistanceInformation上报给网络侧。
更具体的,网络会通过RRCReconfiguration配置otherConfig,其中包含drx-PreferenceConfig setup命令,UE就可以通过UEAssistanceInformation将preference DRX参数上报给网络侧,其中会配置drx-PreferenceProhibitTimer,T346a=drx-PreferenceProhibitTimer,结构图如上。
在UE通过UEAssistanceInformation上报preference DRX参数后就要针对cell group开启T346a,在T346a没有运行的时候,才能再次通过UEAssistanceInformation上报preference DRX参数。
UE收到上述命令后,如果有preference DRX 参数且之前没有发送过UEAssistanceInformation带drx-Preference或者之前发送过,但是当前的prefer value与之前上报的不一样且T346a没有在运行,那UE针对cell group 开启T346a 并发送对应的UEAssistanceInformation。
具体UEAssistanceInformation包含drx-Preference消息的生成原则就是UE自行决定上报的DRX参数,如上图4个prefer 参数都是可许的,UE有就上报,没有就不用包含该参数。
最后相关的capability IE罗列如下。