LTE_DRX不连续接收(1)

article/2025/9/12 14:43:34

本文转自: https://blog.csdn.net/m_052148/article/details/52439789

1.为什么要使用DRX

在讲解DRX的概念前,我们需要先了解下什么是“空闲态”,什么是“连接态”。

我们经常会听到“空闲态”、“连接态”这样的术语,这个概念是从RRC层角度来说的。简单来说,当UE在某个小区完成了驻留之后,我们就可以称该UE进入了“空闲态”或“IDLE态”。如果该UE后续又完成了随机接入过程,那么我们就可以称该UE进入了“连接态”或“CONNECTED态”。

无论是空闲态,还是连接态,如果没有我们本文提到的DRX机制,UE就会一直监听下行PDCCH子帧,查看是否有来自服务小区的信息。这样做看起来没有问题,然而现实很多时候,UE并不是一直在和网络进行有效信息的交互,不会总是执行上传或者下载业务,通话时也不会一直有语音数据的传输。大多数的时间,UE和网络是没有数据交互的,如果这个时候UE还去持续的监听PDCCH子帧,显然是很费电的。因而,在保证数据能有效传输的前提下,有必要设计一种节省UE电量的机制,这个机制我们就叫做DRX。

2.什么是DRX

DRX,英文全称为Discontinuous Reception,即不连续接收,这种方法可以让UE周期性的在某些时候进入睡眠状态(sleep mode),不去监听PDCCH子帧,而需要监听的时候,则从睡眠状态中唤醒(wake up),这样就可以使UE达到省电的目的。虽然这样做对数据传输的时延有一定的影响,但如果这种时延并不影响用户体验,那么考虑到UE更为重要的功率消耗,执行DRX是很有意义的。

DRX机制在空闲态和连接态下的实现是不同的,相对而言,连接态下的DRX机制要复杂的多。本篇博文专门介绍连接态下的DRX机制(Connected DRX,CDRX),而空闲态下的DRX机制即寻呼机制,将在下一篇博文中介绍。下文描述的DRX均特指UE处于连接态时使用的DRX。

一个典型的DRX周期如图1所示。在这个图中,标识“On Duration”的这段时间是UE监控下行PDCCH子帧的时间,在这段时间里,UE是处于唤醒状态的。标识“Opportunity for DRX”的这段时间是DRX睡眠时间,即UE为了省电,进入了睡眠而不监控PDCCH子帧的时间。从这个图中可以看到,用于DRX睡眠的时间越长,UE的功率消耗就越低,但相应的,业务传输的时延也会跟着增加。

(图1)

3.为什么要使用drx-InactivityTimer

我们来考虑这样的一个场景:0号子帧是唤醒时间On_Duration的最后一个子帧,此时网侧刚好有一个较大字节的数据需要发给UE,这些数据无法在0号子帧全部发送完。如果按照上文图1的DRX周期,那么UE将在1号子帧进入DRX睡眠状态,不会再去接收来自网侧的任何下行PDSCH数据。网侧也只能等到DRX周期结束,并在下一个On_Duration时刻到来时,继续向UE发送没有传完的数据。这种处理机制虽然没有错,但显然增加了整个业务的处理时延。为了避免这种情况的出现,DRX机制中增加了drx-Inactivity定时器,如图2所示。

(图2)

如果drx-inactivityTimer正在运行,那么即便原本配置的On_Duration时间已经结束,UE仍然需要继续监听下行PDCCH子帧,直到DRX InactivityTimer超时。增加了DRX-InactivityTimer机制之后,显然会减少数据的处理时延,但这将会引入下文描述的另一个问题。

4.增加DRX command控制单元的意义

上文图2描述了DRX-InactivityTimer的作用是为了降低数据的处理时延,但如果DRX-InactivityTimer的时长设置的过长,当网侧的数据发送完之后定时器还没有超时,则UE还不得不继续监听下行子帧,无法及时的进入睡眠状态。为了尽量快速的让UE进入睡眠状态,系统引入了一个与DRX相关的MAC控制单元DRX command,有时候也被形象的叫做Go-To-Sleep CE。

当网侧检测到已经没有上下行数据可传时,可以向该UE发送一个MAC PDU,这个PDU里携带一个DRX command控制单元。当UE收到这个DRX控制单元之后,将停止OnDurationTimer和drx-InactivityTimer,尽快的进入DRX,如图3所示。

(图3)

每个MAC控制单元都对应着一个子头,并且一般来说,控制单元都占用特定长度的字节数,比如短BSR控制单元占用了1个字节,加上1个字节的子头,共占用2个字节;再比如长BSR控制单元占用了3个字节,加上1个字节的子头,共占用4个字节。但DRX Command控制单元比较特殊,它所占用的字节数是0,即只需要发送1个字节的子头即可,不需要为控制单元预留空间。这个子头里的LCID需要设置为0x1E,如图4所示。

(图4)

5.长周期和短周期

前文图1已经提到,一个DRX周期等于UE唤醒时间(ON-duration)和睡眠时间的总和。在LTE里,系统可以根据不同的业务场景,给UE分别配置短周期(short DRX cycle)或者长周期(long DRX cycle)。比如在进行VOIP业务时,语音编解码器通常20ms发送一个VOIP包,那么就可以配置长度为20ms的DRX短周期,而在语音通话期间较长的静默期,就可以配置DRX长周期。如果同时配置了短周期和长周期,且drxShortCycleTimer定时器超时,那么UE将进入一次长DRX周期,如下图5所示。图中,drx-InactivityTimer定时器超时后开启drxShortCycleTimer定时器。

(图5)

在图5中,我们还可以发现有个drxStartOffset参数,这个参数的含义是DRX周期是从哪个子帧开始的,比如周期是10个子帧,那么drxStartOffset的范围就是0~9;而如果周期是20个子帧,那么drxStartOffset的范围就是0~19,有点类似测量GAP里的gapOffset。

6.参数配置

前面已经介绍了与DRX相关的很多参数,包括on_duration时长、drx-InactivityTimer、长短周期、drxShortCycleTimer、drxStartOffset等等,可能有些同学已经迫不及待的想知道怎么获取这些参数以及这些参数的范围是怎么样的了,下面就说说这个。

同样的,这些参数仍然由RRC配置,具体在消息 RRCConnectionSetup 或 RRCConnectionReconfiguration 或 RRCConnectionReestablishment 的
 RadioResourceConfigDedicated 信元的 MAC-MainConfig 中,如图6所示。

(图6)

onDurationTimer:该参数表示在一个DRX周期里,UE睡醒后的在线时长。以PDCCH子帧个数为基本单位,比如psf6表示UE在线监测的时长为6个PDCCH子帧。当UE满足DRX周期条件时,就会进入onDurationTimer,比如下文图7中的时间(0,5),(0,6)等短周期PDCCH子帧,以及(2,0),(2,1)等长周期PDCCH子帧。

drx-InactivityTimer:该参数表示当UE成功解码到一个下行PDCCH之后,还需要继续监测多少个PDCCH子帧。同样以PDCCH子帧个数为基本单位,比如psf80表示UE还需要继续监测80个下行PDCCH子帧才能进入睡眠态。当PDCCH子帧中显示有新的上行或下行传输时启动该定时器,当收到Go-To-Sleep CE时停止该定时器。

drx-RetransmissionTimer:这个参数用在下行重传的场景。由于下行HARQ采用的是异步重传,因此UE并不确定eNB什么时候会下发重传数据,但UE也不可能无限制的等待下去,毕竟UE还需要省电,还需要进入睡眠状态,所以这个重传定时器是表示UE为了接收期望的下行重传数据,需要连续监测的最大PDCCH子帧个数。同样以PDCCH子帧个数为基本单位,比如psf8表示UE为了接收下行重传数据,还需要继续等待最多8个下行PDCCH子帧。当HARQ RTT定时器超时且下行HARQ缓存里还有数据没有被解码成功时启动该重传定时器,当收到PDCCH子帧显示该进程有数据传输或当前属于DL-SPS子帧时,停止该定时器。HARQ RTT定时器一旦超时就意味着UE可以开始接收eNB侧的重传数据了,若RTT定时器还没有超时,eNB也不会下发重传数据。

longDRX-CycleStartOffset:这个参数可以同时表示 longDRX-Cycle 和 drxStartOffset 这两层含义,以子帧为单位。比如长周期选择sf1280,偏移选择0。但需要注意的是,如果网侧同时也配置了短周期(ShortDrx-Cycle)参数,那么长周期必须配置成短周期的整数倍。比如短周期配置的是sf64(64个子帧),那么长周期就不能配置sf80,因为80不能整除64。

shortDRX-Cycle:这个参数表示DRX采用的短周期时长,以子帧为单位,sf5表示短周期时长(含on-duration时间)为5个子帧。

drxShortCycleTimer:这个参数表示在短周期内持续多少个子帧没有收到PDCCH就进入长周期。如果值为2,则表示持续(2×shortDRX-Cycle)个子帧没有成功解码到PDCCH就进入长周期。

也就是说:与定时器相关的参数都是以PDCCH子帧为单位的,而与周期相关的都是以子帧为单位的。

一个典型的长短周期DRX流程如图7所示。具体流程为:UE在时刻(0,0)成功解码到一个PDCCH子帧,因此开启了drx-inactivityTimer(3个子帧的长度);当drx-inactivityTimer超时后开启drxShortCycleTimer(注意,图中应该是在4号子帧开启,而不是5号子帧开启drxShortCycleTimer);到了时刻(0,5),满足了进入短周期的时间条件(后文会介绍这个条件,这里记为条件1),UE被唤醒进入on-duration(持续2个子帧);在时刻(1,0)和(1,5)多次进入短周期;到了(1,9)时刻,(drxShortCycleTimer×shortDrxCycle)=15个子帧内没有成功解码到PDCCH子帧,准备进入长DRX周期,在(2,0)满足长周期进入条件(这里先记为条件2,后文再介绍这个条件),UE进入长DRX周期,时刻(2,9)结束长周期;UE在(3,0)收到PDCCH子帧,因此重新启动了drx-inactivity定时器。

(图7)

再具体说说进入长短DRX周期的判断条件。对于进入短周期的条件1,帧号SFN和子帧号subframeNumber需要满足:

[(SFN *10) + subframeNumber] modulo (shortDRX-Cycle) = (drxStartOffset) modulo (shortDRX-Cycle)  (条件1)

对照图7的例子,shortDrx-Cycle=5,drxStartOffset=0,因此时刻(0,5)、(1,0)、(1,5)都是满足条件1的。对于进入长周期的条件2,帧号SFN和子帧号subframeNumber需要满足:

 [(SFN * 10) + subframeNumber] modulo (longDRX-Cycle) = drxStartOffset   (条件2)

对照图7的例子,longDrx-Cycle=10,drxStartOffset=0,因此时刻(1,0)、(2,0)、(3,0)都是满足条件2的。我们可以看到,时刻(1,0)同时满足了短周期和长周期的条件,但为什么此时需要执行短周期DRX呢?下文会对这个地方做出解释。

7.HARQ RTT Timer

在DRX机制中,还需要用到一个名为“HARQ RTT Timer”的定时器,这个定时器或者说这个参数,也是与下行重传相关的。它的含义是,UE在收到期望的下行重传数据之前,需要等待的最少子帧个数。当收到PDCCH子帧显示有下行传输或处于DL-SPS子帧时开启该RTT定时器,同时也将drx-RetransmissionTimer停掉,而当HARQ RTT Timer超时时会开启drx-RetransmissionTimer。

对于FDD-LTE来说,HARQ RTT Timer的值固定等于8个子帧。对于TDD-LTE来说,HARQ RTT Timer的值等于(k+4)个子帧,k表示下行PDSCH传输与其应答ACK的时延,具体值如下图8所示。比如当前是上下行子帧配置1,PDSCH是在9号子帧下发的,那么eNB将在3号子帧接收应答,所以k=4。

(图8)

8.DRX处理流程

前文已经提到,当UE处于on-duration时期,或者drx-InactivityTimer正在运行,或者drx-RetransmissionTimer正在运行,那么UE都需要持续的监测下行PDCCH信道(即UE处于激活时间)。除了这些情况之外,当以下条件之一发生时,UE也需要持续的监测PDCCH信道:

 

(1)冲突解决定时器mac-ContentionResolutionTimer正在运行。
(2)有准备在PUCCH上发送的SR。
(3)上行HARQ重传的授权已经存在,且对应的HARQ缓存里有数据。
(4)非竞争随机接入过程成功收到RAR响应之后,还没有收到以CRNTI加扰的、指示有新数据的PDCCH。关于非竞争接入过程请参考《LTE-TDD随机接入过程(1)-目的和分类》。

DRX的处理流程需要考虑的场景比较多,如果用文字描述的话不太清晰,这里我用流程图的形式展示给大家,如下面的图9所示(因为截图的原因,所以尽量压缩了空间排版)。

(图9)

上面图9中提到的半双工FDD的概念,是2008年爱立信在深圳的一次3GPP会议中提出来的,初衷是允许UE在3.5GHz和小于860MHz的Band中,可以进入FDD半双工的模式。但截至目前,还没有听说哪家手机芯片厂商支持LTE半双工FDD的情况。

如果eNB配置了DRX功能,除了影响UE侧检测下行PDCCH子帧,还会影响UE侧SRS/CQI/PMI/RI的发送,具体为:

 

(1)UE在非激活时间内,不发送SRS。
(2)如果上层配置了cqi-Mask,那么onDuration定时器不在执行时,UE不应该在PUCCH中发送CQI/PMI/RI;如果没有配置cqi-Mask,那么当UE在非激活时间内,不应在PUCCH中发送CQI/PMI/RI。从这点可以看出,如果当前是LTE-TDD制式,RRC在配置参数的时候,应该确保onDuration或激活时间内,至少有1个上行子帧用于发送SRS/CQI/PMI/RI参数。

cqi-Mask参数是限制UE是否仅在onDuration时间内发送CQI/PMI/RI的,由RRC消息配置,具体在 RRCConnectionReconfiguration 或 RRCConnectionReestablishment 或 RRCConnectionSetup 消息的 RadioResourceConfigDedicated -> PhysicalConfigDedicated -> CQI-ReportConfig 字段中。

除此之外,考虑到UE侧的处理时延,如果UE在激活时间的最后4个子帧内检测到一个标识上行或下行新传的PDCCH子帧,那么在接下来的4个子帧内,UE是可以不用在PUCCH中发送CQI/PMI/RI或传输SRS的;而如果UE是因为收到了Go-To-Sleep控制单元而退出激活时间,那么UE也是可以选择在接下来的4个子帧里继续在PUCCH中发送CQI/PMI/RI或传输SRS的。

需要留意的是,无论UE是否在监听PDCCH子帧,都不影响UE发送或接收HARQ反馈。

参考文献:

(1)3GPP TS 36.321 V9.6.0 (2012-03) Medium Access Control (MAC) protocol specification

(2)3GPP TS 36.300 V9.10.0 (2012-12) Overall description

 

(3)3GPP TS 36.331 V9.18.0 (2014-06) Radio Resource Control (RRC)

 

(4)http://www.sharetechnote.com

(5)<<4G LTE/LTE-Advanced for Mobile Broadband>>

(6)http://people.cs.nctu.edu.tw/~yctseng/papers.pub/mobile93-drx-ieee-jetcas.pdf


http://chatgpt.dhexx.cn/article/Jlwors8E.shtml

相关文章

NR/5G - DRX

DRX&#xff0c; Discontinuous reception&#xff0c;非连续接收主要是节省终端的功耗&#xff0c;通俗点&#xff0c;就是节省电量&#xff0c;让手机待机时间更长。 对于广义上的DRX的理解&#xff0c;可以分为RRC_IDLE/RRC_INACTIVE状态和RRC_CONNECTED状态的DRX。 一 R…

DRX不连续接收(1)

本文转自&#xff1a; https://blog.csdn.net/m_052148/article/details/52439789 1.为什么要使用DRX 在讲解DRX的概念前&#xff0c;我们需要先了解下什么是“空闲态”&#xff0c;什么是“连接态”。 我们经常会听到“空闲态”、“连接态”这样的术语&#xff0c;这个概念是从…

LTE-连接态下的DRX

C-DRX: Connectedmode DRX,连接态下的DRX UE在连接态下&#xff0c;如果没有数据传输的话&#xff0c;会根据DRX的规则停止监听PDCCH(监听PDCCH可参考&#xff1a;PDCCH),从而达到省电的目的。一个DRX周期包含On Duration 和Opportunity for DRX 两个时间段。 3GPP - 36.321中…

5G-NR非连续接收DRX参数配置详解

5G-NR系统配置中的非连续接收系统 DRX&#xff1a;Discontinuous Reception 5G终端商用在即&#xff0c;根据前期测试及部分5G友好用户反馈&#xff0c;“5G终端功耗大&#xff0c;待机差”问题特别突出。根据5G技术特性&#xff0c;导致5G终端相比4G功耗大很多的原因有如下4…

DRX

为什么要使用DRX 无论是空闲态&#xff0c;还是连接态&#xff0c;如果没有我们本文提到的DRX机制&#xff0c;UE就会一直监听下行PDCCH子帧&#xff0c;查看是否有来自服务小区的信息。这样做看起来没有问题&#xff0c;然而现实很多时候&#xff0c;UE并不是一直在和网络进行…

非连续接收DRX

非连续接收的由来分类原理 3.1空闲状态下的DRX 3.2连接状态下的DRXDRX相关的timer启动和停止的触发条件调试所需的LOG包 1. 非连续接收的由来 非连续接收&#xff08;DRX&#xff0c;Discontinuous Reception&#xff09;基于包的数据流通常是突发性的&#xff0c;在一段时…

DRX(Discontinuous Reception,非连续接收)处理流程

学习《深入理解LTE-A》笔记&#xff0c;此篇关注LTE中的DRX过程。 处于RRC_CONNECTED态下的UE的DRX处理流程&#xff0c;有几个timer需要详细了解&#xff0c;还简单介绍了载波聚合对DRX的影响。 DRX介绍 数据包具有突发性&#xff0c;在没有数据传输的时候&#xff0c;可以通…

LTE资源调度(7)-DRX不连续接收(1)

1.为什么要使用DRX 在讲解DRX的概念前&#xff0c;我们需要先了解下什么是“空闲态”&#xff0c;什么是“连接态”。 我们经常会听到“空闲态”、“连接态”这样的术语&#xff0c;这个概念是从RRC层角度来说的。简单来说&#xff0c;当UE在某个小区完成了驻留之后&#xff…

生成数据库设计文档小技巧

目录 生成数据库设计文档小技巧利用数据库自身功能生成excel和word文档使用的软件环境说明查询所有表名查询所有列名设置excel 生成数据库设计文档小技巧 利用数据库自身功能生成excel和word文档 我们在程序开发的时候&#xff0c;离不开数据库设计。有些数据库设计软件功能很…

快速制作数据库设计文档的表格

工具&#xff1a;navcat 第一步&#xff1a;新建一个空白文档&#xff0c;依次点击&#xff1a;插入—>表格 &#xff0c;选择插入的行和列。 第二步&#xff1a;按住shift或者ctrl选中多行&#xff0c;并用快捷键ctrlc复制。 第三步&#xff1a;切换到刚创建的文档。选中表…

自动生成数据库设计文档利器

目录 1、前言介绍 2、功能说明 3、编码实战 1、新建项目 2、导入依赖 3、启动类 4、工具类 5、测试 1、前言介绍 今天给大家介绍一款非常还用的小工具&#xff0c;专门用到生成数据库设计文档的&#xff0c;非常简单、快捷、方便 这款工具就是screw&#xff08;螺丝钉…

还在手写数据库设计文档?java一键生成

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 前言&#xff1a; 以前…

通过表结构生成数据库设计文档

技术实现:ScrewjavaFX 作用:通过引入screw核心包来实现Java 数据库文档,一键生成支持的数据库列表:MySQL 、MariaDB 、TIDB、 Oracle、 SqlServer、 PostgreSQL(注意:目前MariaDB 、TIDB、 Oracle因为缺少环境未做验证,若有问题,欢迎留言以做改正) 工具效果图: 使用注意事项:…

快速生成一份数据库表设计文档

最近需要给兄弟部门出一份数据设计文档&#xff0c;我这个项目是半路接手的&#xff0c;前辈也没有留下啥说明&#xff0c;想偷懒发现一个好用的工具screw如下&#xff1a; 添加依赖&#xff1a; <dependency><groupId>cn.smallbun.screw</groupId><arti…

mysql数据库自动生成数据库开发设计文档

1、输出表结果&#xff0c;表结构可自己通过代码调整,简单但是有时候很实用&#xff0c;可以节省大量的时间&#xff0c;主要思路&#xff1a; a 在java代码中&#xff0c;通过数据库查询语句获取所有表名和表名备注信息。 b 通过表名获取某张表的所有字段说明。 c 整理查询…

数据库设计文档编写模板

在编写数据库设计说明文档时&#xff0c;需要对每一张数据表做设计说明&#xff0c;其中最主要、也是最繁琐的部分就是表字段描述部分&#xff0c;那么采取什么样的模板格式&#xff0c;即能完整表达表字段设计用意&#xff0c;又能快速采集数据库设计信息呢&#xff1f;建议如…

使用Navicat将表设计导出数据库设计文档

我们在写数据库设计文档的时候&#xff0c;会需要对数据库表进行设计的编写&#xff0c;手动写的话会很费时间费精力。 1、首先在Navicat中点击查询&#xff0c;然后输入以下SQL语句&#xff1a; SELECT TABLE_NAME 表名, COLUMN_NAME 字段, COLUMN_COMMENT 字段名称, COLUMN…

生成 数据库设计文档

最近要写一个数据库设计文档 数据设计文档中数据库结构设计这个模块是需要把数据库的所有字段&#xff0c;标识&#xff0c;注释等的设计写出来&#xff0c;如果手写会疯的&#xff0c;现在自己来写个生成工具生成&#xff0c;只要连接数据库就ok。 一、在用idea创建maven项目…

【MySQL】数据库设计文档生成

MySQL数据库设计文档生成 文章目录 MySQL数据库设计文档生成前言0、全局浏览1、引入依赖2、启动类3、配置文件4、实现类5、成品展示 前言 记录MySQL数据库设计文档生成&#xff0c;旨在方便自己&#xff0c;也能方便他人。 Gitee源码&#xff1a;https://gitee.com/liuyimin43…

如何生成数据库设计文档

如何生成数据库设计文档 screw什么是screw特点支持生成的文档类型目前支持的数据库类型支持的模板类型 如何使用&#xff1f;遇到的问题 screw 官网地址&#xff1a; https://gitee.com/leshalv/screw/ 什么是screw screw是简洁好用的数据库表结构文档生成工具。 特点 简洁…