zoukankan      html  css  js  c++  java
  • 随机接入过程解析

    一:举例——一个完整的随机接入过程

     http://www.360doc.com/content/17/0828/20/46887361_682852152.shtml

    先简要分析一个随机接入的例子,本例是用高通工具QCAT来说明,一次随机接入过程如下图所示:

    从协议栈的工作机制来做一个简要解释:

    UE的NAS层的MM子层,需要发起一次业务请求serviceRequest。因为NAS的MM层需要干活了,所以调用其下层的功能。于是,AS层的RRC层,开始工作并为NAS的MM提供服务。注意,规范中经常的一种描述是“上层调用下层的功能、下层给上一层提供服务”。

    第二条信令,我们看到,RRC层封装了RRC CONNECTION REQUEST的包,并传递给其下层PDCP/RLC/MAC去进一步处理。PDCP/RLC层因与随机过程接入基本无关,故在QCAT的filter中已将其过滤。

    于是,MAC层,开始组织并触发随机接入过程,于是我们顺次看到了MSG1/MSG2/MSG3,并在MSG4中竞争成功并解决冲突(contention resolution)。

    后面其他的信令这里不解释。

    很明显,,这是从UE角度来看的、一次完整的随机接入过程。 通过调用随机接入过程,RRC层也完成了从一次从idle到connected的状态转换,并最终为MM层传递NAS信令Servicerequest至MME。

    再看下时间: 如果从139到210定义这次时间,大概是71ms。 即可以认为,UE花了大约70ms,完成了一次从空闲态到连接态的RRC状态转换。 大家应该还记得LTE在25.913规范中的约定,LTE UE连接态到空闲态的迁徙时长不得超过100ms。

    为了让大家看清楚里面的码流,顺次截图如下

    1. LTE NAS EMM Plain OTAOutgoing Message -- Service Request Msg (MM层的消息)

    2. LTE RRC OTA Packet -- UL_CCCH (RRC层的消息,RRC CONREQ,注意里面有ue-identity这个IE)

    3. LTE Random Access Request (MSG1) Report (注意里面的RA-RNTI)

    4. LTE Random AccessResponse (MSG2) Report (注意里面的Temp-C-RNTI)

    5. LTE UE Identification Message (MSG3)Report

    6. LTE Contention Resolution Message (MSG4) Report (注意 contentionresult=Pass)

    7. LTE RRC OTA Packet -- DL_CCCH (rrcConnectionSetup)

    8. LTE RRC OTA Packet -- UL_DCCH(rrcConnectionSetupComplete)

    这些截图具体里面涉及到的参数太多,限于篇幅,此处不能一一详述。

    二:随机接入过程的流程解析

    在LTE中,有五种情况,需要触发随机接入过程,描述如下:

    1. 在RRC_IDLE态下,进行RRC连接建立请求。

    2. 进行RRC连接重建请求。(RRC重建有5种原因,前面博文有描述。无线链路失败、切换失败、完整性保护失败、RRC重配置失败,mobility from E-UTRA失败)

    3. 切换过程中,通过随机接入获取与目标小区的上行同步。

    4. 在RRC_CONNECTED态下,当有上行数据需要发送时,但却没有可用的PUCCH SR资源时,此时UE需要通过随机接入请求获得上行的调度资源授权;或在RRC_CONNECTED态下,当有上行数据需要发送时,而上行处于失步状态(定时器TimeAlignmentTimer超时),那么需要通过随机接入过程,进行上行同步并请求上行调度资源授权。

    5. 在RRC_CONNECTED态下,当有下行数据需要发送时,而上行处于失步状态(定时器TimeAlignmentTimer超时),此时由网络通过下发PDCCH order、从而触发随机接入。

    每个小区中的UE可通过公共信令(比如SIB2中的RACH-ConfigCommon)或专用信令(比如RRC重配置中的RACH-ConfigDedicated)等这些方式,获得的RACH配置及随机接入相关参数。UE生成最多64个Preamble,而这64个Preamble又被分为2组,因此随机接入过程也被分为2种,即大家熟知的,基于竞争的随机接入和非竞争的随机接入。

    1. 基于竞争(contention based)的随机接入:由UE自行选择前导(preamble)序列,存在冲突的可能,需进行竞争解决(contention resolutioon)。

    2. 基于非竞争(contention free)的随机接入:由网络侧eNodeB指定前导preamble,因为基站在某个时刻唯一指定前导序列所以不存在冲突,无需进行竞争解决。比如上面列举的第3/5两种情况,可以采用无竞争的随机接入。

    竞争的和无竞争的随机接入过程如下图所示:

    随机接入的具体步骤解释

    第一步:随机接入前导发送

    确定前导序列

    若eNodeB指定随机接入前导,则采用该分配的前导;否则由UE进行前导选择:根据Msg 3消息长度进行随机接入序列组(A组或B组)选择,然后在所选择的序列组中,按等概率原则随机选择一个前导序列号。

    根据eNodeB指示的根ZC序列号、循环移位配置、是否采用restricted set(仅FDD)、以及前导序列号,进行ZC序列的选择和循环移位的计算。

    PRACH资源选择和发射功率计算

    根据PRACH配置、PRACH Mask索引、以及PRACH的相关定时约束,按等概率随机原则,选择一个PRACH资源进行前导发送。

    根据eNodeB指示的PRACH期望接收功率、前导格式和前导发送计数,进行PRACH开环发射功率计算和power ramping过程。可参考36.213.

    第二步:随机接入响应接收

    在由eNodeB指示长度的搜索时间窗口内,进行PDCCH监测及盲检,注意此时PDCCH的DCI的CRC部分,是用RA-RNTI来加扰的。

    根据前导发送的子帧号和频率索引来计算RA-RNTI(取值范围1~60)

    eNodeB采用DCI Format 1A或1C发送该PDCCH

    DCI的格式大家可参考其他文档,后面再专文解释

    若UE盲检到一个由RA-RNTI加扰的PDCCH,则根据该PDCCH所含的下行调度信息,接收同一TTI(1ms)内的PDSCH信道。

    此时,PDSCH携带了随机接入响应RAR的MAC PDU。

    提取MAC PDU包含BI MAC子头(若存在的话),用于更新Backoff值。

    在RAR中读取与发送前导相匹配的RAPIDMAC子头和对应的MAC RAR。

    对该MAC RAR进行解码,提取TA命令、20-bit的上行授权(UL grant,也称为随机接入响应授权)和Temporary C-RNTI。

    若是非竞争的,则随机接入过程成功结束;若是竞争的则设定Temporary C-RNTI,并进行UL grant解码,准备进行Msg 3发送。

    倘若UE未检测到任何一个由RA-RNTI加扰的PDCCH,或者对应随机接入响应中并没有与发送前导相匹配的RAPID MAC子头,则退回第一步,进行一次新的前导发送尝试。

    若是基于竞争的,基于Backoff值加入一个随机延迟后,再进行一次新的前导发送尝试

    将前导发送计数器加1,并相应的调整前导发送功率(power ramping的过程也可参考36.213)

    若前导发送次数达到最大限定次数,则认为该次随机接入过程失败,并向高层(RRC层)指示随机接入失败。

    MAC PDU及MAC RAR结构如下图所示。

    第三步:Msg 3发送

    根据eNodeB指示的相关功控参数、路损估计、PUSCH发送所占RB数等等,计算Msg 3的开环发射功率;

    根据随机接入响应授权,按指定的资源和格式在PUSCH上进行Msg 3发送;

    采用Temporary C-RNTI(第二步中收到的)进行加扰;

    Msg 3中包含了用于竞争解决的信息;

    在由RRC连接建立/重建触发的随机接入中,在CCCHSDU中包含了UE Identity

    其它情况(切换、上/下行数据待传输)触发的随机接入中,在C-RNTI MAC控制信元中包含了UE的C-RNTI

    Msg 3会采用上行HARQ来提高接收可靠性

    采用上行HARQ来提高Msg 3的接收质量。可采用非自适应重传、或自适应重传,直到竞争解决成功、或达到Msg 3最大重传次数为止。

    eNodeB通过TemporaryC-RNTI的上行授权,来指示Msg 3的自适应重传,无论UE是否已经被分配了一个C-RNTI,且无论NDI(新数指示)值是什么。

    第四步:竞争解决(MSG4)

    每次Msg 3新传输/重传后,启动或重新启动竞争解决定时器mac-ContentionResolutionTimer。

    竞争解决情形一:在由RRC连接建立/重建触发的随机接入中,在CCCHSDU中包含了UE Identity。

    检测由TemporaryC-RNTI加扰的PDCCH,并根据该下行分配将对应的PDSCH进行解码(MSG4)。

    若该PDSCH解码OK,检查UEContention Resolution Identity MAC控制信元中所含内容是否与Msg 3发送的CCCH SDU携带的UEIdentity相匹配,若匹配,竞争通过。

    若竞争解决通过,UE将TemporaryC-RNTI升级为C-RNTI 。

    竞争解决情形二:其它情况(切换、上/下行数据待传输)触发的随机接入中,在C-RNTI MAC控制信元中包含了UE的C-RNTI 。

    若随机接入过程由UE发起,检测由C-RNTI加扰的PDCCH上行授权。

    若随机接入过程由eNodeB发起(PDCCHorder),检测由C-RNTI加扰的PDCCH。

    若竞争解决成功,丢弃TemporaryC-RNTI 。

    竞争解决中的下行HARQ过程

    eNodeB发送用于竞争解决的PDSCH时,也采用HARQ过程来提高该PDSCH接收可靠性。

    仅竞争解决成功的UE反馈ACK,否则(PDSCH未成功译码、或PDSCH成功译码但竞争解决失败)不反馈任何ACK/NACK。这样做,能防止由于PUCCH ACK/NACK信道上的冲突而导致ACK/NACK接收质量恶化。

    若竞争解决失败,或竞争解决定时器超时,则认为竞争解决失败,退回第一步进行一次新的前导发送尝试

    若是基于竞争的,基于Backoff值加入一个随机延迟后,再进行一次新的前导发送尝试。功率ramping。

    若前导发送次数达到最大限定次数,则认为该次随机接入过程失败,并向高层RRC指示本次随机接入失败。

    一次随机接入过程示意图如下(这是找到的最好的图了):

    三:几点解释:

    1. 关于UE-identity,只有两种可能,S-TMSI或randomvalue。RandoVaule的空间、协议定义是2的40次方。即如果UE有S-TMSI就使用S-TMSI;若没有S-TMSI,那么在MSG3中,会在0到2^40-1中选择一个随机数,作为MSG3中的UE-Identity IE。 UE-identity是用来解决冲突的唯一判据。

    2. 关于前文提到的TimeAlignmentTime定时器的解释,在TS36.331中的描述摘录如下,此定时器通过公共信令或专用信令传递到UE:

    – TimeAlignmentTimer

    The IE TimeAlignmentTimer is used to control how long the UE is considereduplink time aligned. Corresponds to the Timer for time alignment inTS 36.321 [6]. Value in number of sub-frames. Value sf500 corresponds to500 sub-frames, sf750 corresponds to 750 sub-frames and so on. In this releaseof the specification, uplink time alignment is common for all serving cells.

    TimeAlignmentTimer informationelement

    -- ASN1START

    TimeAlignmentTimer ::= ENUMERATED {

    sf500, sf750, sf1280, sf1920, sf2560, sf5120,

    sf10240, infinity}

    -- ASN1STOP

    关于TimeAlignmentTime的解释,在TS 36.321中的描述摘录如下:

    5.2 Maintenance of Uplink Time Alignment

    The UE has aconfigurable timer timeAlignmentTimer which is used to control how long the UE is considered uplink timealigned [8].

    The UE shall:

    - when a Timing Advance Command MAC control element is received:

    - apply the Timing Advance Command;

    - start or restart timeAlignmentTimer.

    - when a TimingAdvance Command is received in a Random AccessResponse message:

    - if the Random Access Preamble was not selected by UE MAC:

    - apply the Timing Advance Command;

    - start or restart timeAlignmentTimer.

    - else, if the timeAlignmentTimer is not running:

    - apply the Timing Advance Command;

    - start timeAlignmentTimer;

    - when the contention resolution isconsidered not successful as described in subclause 5.1.5, stop timeAlignmentTimer.

    - else:

    - ignore the received Timing Advance Command.

    - when timeAlignmentTimerexpires:

    - flush all HARQ buffers;

    - notifyRRC torelease PUCCH/SRS;

    - clearany configured downlink assignments and uplink grants.

    The UE shall notperform any uplink transmission except the Random Access Preamble transmissionwhen timeAlignmentTimer is notrunning.

    3. 信令中关于RACH及随机接入参数的IE定义

    – RACH-ConfigDedicated

    The IE RACH-ConfigDedicated is used to specify thededicated random access parameters.

    RACH-ConfigDedicated informationelement

    -- ASN1START

    RACH-ConfigDedicated::= SEQUENCE {

    ra-PreambleIndex INTEGER(0..63),

    ra-PRACH-MaskIndex INTEGER(0..15)

    }

    -- ASN1STOP

    – RACH-ConfigCommon

    The IE RACH-ConfigCommon is used to specify thegeneric random access parameters.

    RACH-ConfigCommon information element

    -- ASN1START

    RACH-ConfigCommon ::= SEQUENCE {

    preambleInfo SEQUENCE{

    numberOfRA-Preambles ENUMERATED{

    n4, n8, n12, n16 ,n20,n24, n28,

    n32, n36, n40, n44, n48,n52, n56,

    n60, n64},

    preamblesGroupAConfig SEQUENCE{

    sizeOfRA-PreamblesGroupA ENUMERATED{

    n4, n8, n12, n16,n20, n24, n28,

    n32, n36, n40, n44,n48, n52, n56,

    n60},

    messageSizeGroupA ENUMERATED{b56, b144, b208, b256},

    messagePowerOffsetGroupB ENUMERATED{

    minusinfinity, dB0,dB5, dB8, dB10, dB12,

    dB15, dB18},

    ...

    } OPTIONAL --Need OP

    },

    powerRampingParameters SEQUENCE{

    powerRampingStep ENUMERATED{dB0, dB2,dB4, dB6},

    preambleInitialReceivedTargetPower ENUMERATED {

    dBm-120, dBm-118,dBm-116, dBm-114, dBm-112,

    dBm-110, dBm-108,dBm-106, dBm-104, dBm-102,

    dBm-100, dBm-98, dBm-96,dBm-94,

    dBm-92, dBm-90}

    },

    ra-SupervisionInfo SEQUENCE{

    preambleTransMax ENUMERATED{

    n3, n4, n5, n6, n7, n8, n10, n20, n50,

    n100, n200},

    ra-ResponseWindowSize ENUMERATED{

    sf2, sf3, sf4, sf5, sf6,sf7,

    sf8, sf10},

    mac-ContentionResolutionTimer ENUMERATED {

    sf8,sf16, sf24, sf32, sf40, sf48,

    sf56,sf64}

    },

    maxHARQ-Msg3Tx INTEGER(1..8),

    ...

    }

    -- ASN1STOP

    最后,SIB2中下发的关于RACH的相关参数见下图:

    而切换的时候,基站传递到UE的专用的RACH参数见下图:

    限于篇幅和时间关系,春天工作室 关于随机接入过程的讨论和分享,今天就到此为止,欢迎指正、勘误和探讨。

  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/xcnpeng/p/7445733.html
Copyright © 2011-2022 走看看