LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传

2024-04-28 21:32

本文主要是介绍LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



转载  原文链接(http://blog.csdn.net/m_052148)

本文涉及到的内容有:

(1)UE在什么时候开始接收RAR

(2)怎么确定RA-RNTI

(3)UE没有收到RAR后的处理

(4)RAR的格式

1.UE监测RAR

文章《LTE-TDD随机接入过程(2)-前导码Preamble的格式与时频位置》已经详细说明了UE发送Preamble前导码的时频位置。当UE发出Preamble后,并不是立即准备接收RARRandom Access Response),而是在发送前导码之后的第3个子帧之后才开始准备接收RAR。当然,UE也不可能一直等待RAR,如果UE连续检测了ra-ResponseWindowSize个子帧仍然没有收到RAR,则不再继续监测RAR信息。

the UE shall monitor the PDCCH for Random Access Response(s) identified by the RA-RNTI defined below, in the RA Response window which starts at the subframe that contains the end of the preamble transmission plus three subframes and has length ra-ResponseWindowSize subframes.

ra-ResponseWindowSize参数由SIB2中的RACH-ConfigCommon字段带给UE,范围是2-10个子帧,即UE最多连续监测RAR的时长是10ms。



2.RA-RNTI的计算

eNB加扰RAR、UE解扰RAR的RA-RNTI并不在空口中传输,但UE和eNB都需要唯一确定RA-RNTI的值,否则UE就无法解码RAR,因此RA-RNTI就必须通过收发双方都明确的Preamble的时频位置来计算RA-RNTI的值。

RA-RNTI: The Random Access RNTI is used on the PDCCH when Random Access Response messages are transmitted. It unambiguously identifies which time-frequency resource was utilized by the UE to transmit the Random Access preamble.

协议规定了RA-RNTI的计算公式为:RA-RNTI= 1 + t_id+10*f_id

其中,t_id表示发送Preamble的起始位置的子帧ID号(范围是0-9),f_id表示四元素组中的f_RA值(范围是0-5),之前的文章《LTE-TDD随机接入过程(2)-前导码Preamble的格式与时频位置》已经详细描述了这两个值的具体含义。

eNB只要能解码出Preamble前导码,就能唯一确定t_id和f_id参数,也就能唯一确定RA-RNTI值。

3.UE没有收到RAR的处理

UE有可能在RAR的监测窗口内没有解码到RAR消息,这有可能是eNB侧没有检测到PRACH中的Preamble信息,有可能是没有调度RAR信息,也有可能是下行无线链路有干扰导致UE解码RAR失败,无论是哪种原因,UE没有收到RAR是有可能发生的。

如果在RAR响应窗口内没有收到RAR,或者收到的RAR中携带的Preamble并不是本UE之前发送的Preamble,那么表示UE本次接收RAR失败,UE将执行如下操作:

(1)将本地变量PREAMBLE_TRANSMISSION_COUNTER加1

(2)如果PREAMBLE_TRANSMISSION_COUNTER变量=(preambleTransMax+1),那么将通知协议上层“本次RA失败”,不再执行(3)、(4)过程。这之后的流程,是继续执行新一次的RA过程,还是执行扫频选小区,甚至换网过程,协议并没有明确说明,由UE侧基带厂商自行决定。

(3)如果PREAMBLE_TRANSMISSION_COUNTER<(preambleTransMax+1),且之前的Preamble是由UE侧MAC选择的,那么UE将在0到backoff参数之间随机选择一个值,作为当前失败时刻到下一次发送Preamble时刻的时延。

(4)选择时频资源位置,重新发起RA过程。  

从上述过程可以看到,UE侧在每次RA过程中,会维护一个计数器PREAMBLE_TRANSMISSION_COUNTER,范围是【0,preambleTransMax】,一旦超过preambleTransMax值,则表示本次RA失败。preambleTransMax参数表示本次Preamble发送(含重传)的最大次数,和ra-ResponseWindowSize参数一样,也是包含在SIB2中的RACH-ConfigCommon字段中,见上文截图。范围从3到200不等,一般取5次即可。

backoff参数表示上次接收RAR失败到下次重新发送Preamble之间的最大延时,单位是ms,eNB侧的MAC层通过RAR消息配置到UE。范围是0-960ms。如果值属于Reserved,则按照960ms处理。


前导码的发送和重传时机如下图所示。


MSG1每次发送前导码的功率值PREAMBLE_RECEIVED_TARGET_POWER计算如下:

PREAMBLE_RECEIVED_TARGET_POWERpreambleInitialReceivedTargetPower +DELTA_PREAMBLE + (PREAMBLE_TRANSMISSION_COUNTER – 1) *powerRampingStep

其中,

PREAMBLE_TRANSMISSION_COUNTER是当前MSG1的传输次数,第一次(新传)时,PREAMBLE_TRANSMISSION_COUNTER被设置为1。

preambleInitialReceivedTargetPower表示初始功率值,范围从-120dBm到-90dBm不等。

powerRampingStep表示功率抬升因子,范围从0dB到6dB不等

上述三个参数都由SIB2中的RACH-ConfigCommon字段带给UE,见前文截图。

DELTA_PREAMBLE是一个功率偏移量,与Preabmle的格式相关。

4.RAR的格式

随机接入过程中的MAC PDU包含3个部分:MAC头payload(1个或多个RAR单元)可选的填充padding

MAC头包含1个或多个MAC子头,但只能有1个子头可以包含Backoff Indicator,且这个子头只能放在第一个子头位置。其他没有包括Backoff Indicator的子头均对应一个RAR单元。如下图所示。之所以将BI子头放在第一个子头位置,我想可能是为了减少UE侧的处理时间,比如存在这种情况:UE1-UE10共10个UE同时接入,如果将UE1的RAPID子头不放在第一个位置,那么UE1还要遍历接下来的所有子头,读取每个子头的E值和T值,才能知道这个RAR有没有携带BI子头,而如果规定BI子头固定放在第一个位置,那么UE1在解码BI子头和自己的RAPID子头后,就不需要关心余下所有子头的T字段了。


带BI(Backoff Indicator)参数的MAC子头,由E/T/R/R/BI组成,而其他的子头则由E/T/RAPID组成,如下图所示。需要注意的是,在没有解码到任何BI值的时候,UE本地使用的BI参数是0ms,而如果一旦解码成功RAR,无论这个RAR是否携带了本UE的Preamble,UE都要存下本次解码得到的BI,以备重传Preamble的时候使用。但一旦重新发起RA过程,UE侧BI参数都将被复位为0ms。


子头中每个字段的含义是:

E: Extension field,扩展域。指示后续是否还有MAC子头,1表示还有另一个子头,0表示后面不再有MAC子头。

T: Type field,类型域。指示MAC子头后面跟的是Backoff Indicator还是RA Preamble ID(即UE上报的Preamble值)。1表示当前MAC子头后面携带了RA Preamble ID,0表示后面携带的是BI指示(Backoff Indicator)。

R: Reserved bit,固定填0。

BI: Backoff Indicator。占4个bit位,范围0-15,左边是高bit位,右边是低bit位(下同)

RAPID: Random Access Preamble Identifier,随机前导码标识,MSG1携带,占6个bit位,范围0-63。

如果有2个UE正在进行随机接入,且计算得到的RA-RNTI一样,而前导码不一样时,包含RAR的PDU头的格式如下所示。只有当不同UE的RA-RNTI相同时,RAR消息才能封装到一个MAC-PDU里,不同的RA-RNTI,不能封装在一个MAC PDU中

payload指1个或多个RAR控制单元,具体个数取决于MAC子头中对应的RAPID的个数。如果RAR是对2个前导码进行的响应,则MAC PDU需要有2个RAR控制单元。RAR控制单元的格式如下。

每个RAR的长度固定为6个字节。各字段的含义为:

Timing Advance Command:时间提前命令域,占11个bit位。通知UE进行上行同步的TA值。
UL Grant:上行授权,占20个bit位。指示UE用于上行传输MSG3的资源,包括时频位置、是否跳频、功控等参数。低字节Oct2为高bit位,高字节Oct4为低bit位
Temporary C-RNTI:临时C-RNTI,占16个bit位。UE后续发送的MSG3消息使用该值加扰。

对于2个RAR的MAC PDU,它的格式如下。

20bits的UL GRANT包括的内容有:

- Hopping flag – 1 bit,指示PUSCH是否执行跳频。
- Fixed size resource block assignment – 10 bits,指示MSG3的RB资源分配,与带宽有关,以后会详细介绍。        
- Truncated modulation and coding scheme – 4 bits,指示MSG3使用的MCS。 
- TPC command for scheduled PUSCH – 3 bits,指示PUSCH的TPC参数。
- UL delay – 1 bit。指示MSG3发送时刻。 《LTE-TDD HARQ(1)-上行HARQ时序》已经详细介绍了这个参数的具体含义。
- CQI request – 1 bit。指示UE是否上报CQI。

比如UE接收到的RAR码流为0x410008DC0C212F,则依据协议规则,解析的过程如下:


可以知道,该RAR针对的是PreambleID=1的随机接入响应。UL_GRANT的解析过程如下,其中RIV的解析过程与带宽相关,会在后续MSG3的相关博文中再专门介绍。

5.参考文献

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

(2)3GPP TS 36.213 V9.3.0 (2010-09) Physical layer procedures

(3)http://www.mscbsc.com/askpro/response-327421.html

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

这篇关于LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944310

相关文章

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、