随机接入进程当UE需要接入到网络的时候,需要从随机接入信道上发RRC建立请求消息给RNC,这就涉及到随机接入进程。在R5版本以前它包括PRACH接入进程和CPCH接入进程,但CPCH属于偏房出身,所以一直没有归入到R99必须支持的功能。最后到R6版本就干脆从25214协议中给删除了。其实在3GPP协议的演进过程中,各个厂家都试图把自己的专利技术变成3GPP标准。很像古代皇子们夺王位的斗争,残酷、激烈而又充满智慧。很多技术像短命的皇帝一样,屁股还没有坐热就又被新朝代给取代了。所以希望《3G演义》能像一个照相机一样,记录下在这个时代里演进的一些技术。随即接入进程从协议分层的角度,主要分为两个子层:物理层和MAC层。从理解的角度看,由于大部分在UE实现,这两部分结合非常紧密,属于骨和肉的关系。把它们割裂开是不利于理解协议和实现流程的。所以本文干脆把这两层合到一起讲。随机接入的整个流程如图1。UE如果要发起随机接入,必须先从RRC层获取随机接入的各种参数。这些信息可以从广播的SIB5中获取,如。这些参数包括哪些呢?1、前导扰码的序号(0~15)2、消息部分的长度(10ms还是20ms)3、AICH_Transmission_Timing参数(0或1)4、每个接入业务类型(ASC)的可用签名序列和RACH子信道组5、前导发射功率攀升步长powerRampStep6、前导初始发射功率constantValue7、前导重传最大次数preambleRetransMaxprimaryCPICH-TX-Power33,constantValue-21,prach-PowerOffset{powerRampStep2,preambleRetransMax20},8、随机接入消息中最后发送的前导功率和控制部分功率之间的偏移量Pp-m=Pmessage-control–Ppreamble9、传输格式集,包括随机接入消息控制和数据部分的功率偏移。10、RACH传输的参数:RACH前导最大循环次数、拥塞时回退时间指数的上下限等。rach-TransmissionParameters{mmax6,nb01Min3,nb01Max40}IncrementpreambletransmissioncounterMSendPHY-ACCESS-REQ(startofL1PRACHtransmissionprocedure)MMmax?NYIndicatetohigherlayerthatmaximumnumberofpreamblecycleshavebeenreached(TXstatusunsuccessful)L1accessinfo?NackAck(PRACHmessageparttransmitted)NoAckEndDrawrandomnumber0Ri1RPi?NYWaitexpiryTimerT2(10ms)SetandwaitexpirytimerTBO1(NBO1*10ms)M:=0StartGetRACHtxcontrolparametersfromRRC:Mmax,NBO1min,NBO1max,setofASCparametersNAnydatatobetransmitted?YNOTE:MAC-c/shreceivesRACHtxcontrolparametersfromRRCwithCMAC-CONFIG-ReqprimitivewheneveroneoftheparametersisupdatedUpdateRACHtxcontrolparametersWaitexpiryTimerT2(10ms)WaitexpirytimerT2(10ms)SetTimerT2(10ms)SendPHY-DATA-REQ,indicateTXstatustohigherlayerASCselection:(PRACHpartitioni,Pi)End图1RACHtransmissioncontrolprocedure(UEside,informative)接着获取本次随机接入的ASC(接入服务类型)。UE在CELL_Idle和CELL_FACH状态下,对ASC的选择是不太一样的。在CELL_Idle状态下,UE是靠USIM卡本身的AC(接入类型)来选择ASC的。什么是接入类型?从网络的角度,每个UE的接入可以分成不同等级的。一般用户的接入类型是普通优先级,AC从0~9。对于一些级别高的用户,如政府机构和一些紧急服务单位(消防、救护等)的用户,可以把接入类型设置为高优先级,AC从10~15。AC的值在烧卡的时候写入,目前默认都是0,如图3。也可以通过读USIM卡的数据获取,在Gemplus卡它位于0x6F78,如图2。图2SIM卡中关于接入等级(AC)的位置图3USIM卡分配的接入等级UE通过小区广播的SIB5中AC到ASC映射表获取自己的ASC。在25331协议中,对不同的AC到ASC的映射有如表1的规定。AC0-9101112131415ASC1stIE2ndIE3rdIE4thIE5thIE6thIE7thIE表1AC到ASC的映射表ASC分为8个等级(0~7),其中ASC0的优先级最高,ASC7的优先级最低。目前配置是所有的AC对应ASC都是0,不区分优先级,相当于没打开这个功能。如图4。该值是在PRACH的属性中配置。SIB5中有这样的字段:ac-To-ASC-MappingTable{0,0,0,0,0,0,0}图4PRACH信道的参数配置在CELL_FACH态中,逻辑信道是有优先级的(在RB建立或重配的时候分配,如:mac-LogicalChannelPriority5),简称LogicalchannelPriority(MLP)。MAC层利用MLP来决定后续RACH上数据块传输使用的ASC。前面用AC算出来的ASC称为NumASC,那么在所有传输数据块具有一样的MLP的情况,ASC=min(NumASC,MLP);如果MLP不一样,ASC=min(NumASC,MinMLP)。那么ASC小的用户又如何出优越性呢?一句话,MAC层的持久度(persistencevalue)检查算法通过让ASC大的用户降低接入频率从而把接入机会让给ASC小的高优先级用户。对于每个ASC对应一个持久度Pi,可以根据表2得出不同ASC的Pi的计算公式。其中si是在SIB5中下发的ASC持久比例因子。一共有6个,s2到s7,像图4中,只下发了一个因子,s2=0.9。不广播的时候持久比例因子默认为1。persistenceScalingFactorList{psf0-9},ASC#i01234567Pi1P(N)s2P(N)s3P(N)s4P(N)s5P(N)s6P(N)s7P(N)表2ASC对应的持久度P(N)的计算公式:P(N)=2(N1)。N是动态持久级初始值(如图4),在SIB7中有,目前配置1。这个值是可以动态变化,系统可以根据拥塞情况进行优先级排队。PhyCHinformationelementsPRACHslistedinsysteminformationblocktype5MP1tomaxPRACHTheorderofthePRACHsisthesameasinsysteminformationblocktype5or5bis.DynamicpersistencelevelMPDynamicpersistencelevel10.3.6.35表3SIB7中对N值的定义所以对于ASC0,它的持久度最高,P0=1,其次是ASC1,)1(12)(NNPP。通过合理配置ASC持久比例因子iS,可以使得低ASC的用户有比较高的持久度iP。每次物理层PRACH在发前导码前,MAC层要进行一次持久度iP的检查。UE算出本地的持久度iP,然后在0~1之间取一个随机数R。如果iPR,那么持久度检查通不过,必须再等待10ms后再进行一次持久度检查,一直到通过才能让物理层发PRACH前导。如果系统拥塞的情况下,可以通过增大SIB7中的N值,降低低优先级用户的持久度iP,在MAC层上增大它们随机接入的难度,从而把接入机会让给高优先级的用户。在通过持久度检查后,就该轮到物理层进行PRACH接入了。它接入的原理如图5,首先发一个4096码片的前导来确定是否被允许接入,然后才发10ms或20ms的消息帧。MessagepartPreamble4096chips10ms(oneradioframe)PreamblePreambleMessagepartPreamble4096chips20ms(tworadioframes)PreamblePreamble图5随机接入传输数据的结构如果NodeB允许接入,那么在对应的AICH上会有AI的确认指示。这两个物理信道的定时关系如图6。前导和AI的间隔是固定,否则UE是无法确认AI是否属于自己。这个值由AICH_Transmission_Timing来决定(目前配置0)。AICH_Transmission_Timingp-p,minp-ap-m015360chips(3accessslots)7680chips15360chips(3accessslots)120480chips(4accessslots)12800chip20480chips(4accessslots)表4AICH_Transmission_Timing定义的定时关系AICH_Transmission_Timing=1是用在小区半径很大(比如40km)的情况,这个时候空口传输延时很大,所以需要加大前导和AI的间隔。Oneaccessslotp-ap-mp-pPre-amblePre-ambleMessagepartAcq.Ind.AICHaccessslotsRXatUEPRACHaccessslotsTXatUE图6TimingrelationbetweenPRACHandAICHasseenattheUE对于PRACH,每20ms有15次接入的机会,如图7。物理层首先要解决的第一个问题是:选在哪个接入时隙发起前导?AICHaccessslots10ms#0#1#2#3#14#13#12#11#10#9#8#7#6#5#4p-a#0#1#2#3#14#13#12#11#10#9#8#7#6#5#4PRACHaccessslotsSFNmod2=0SFNmod2=110msAccessslotset1Accessslotset2图7PRACH接入时隙和AICH的定时关系(p-a=7680chips)如果都选在时隙0,那么显然会造成冲突,结果是谁也接入不了。在逻辑上,RACH分成了12个子信道。在图4的PRACH有效子信道号中配置,如果12个子信道全部有效的话,该值应该是4095。目前配置240,所以是第4、5、6、7子信道有效。availableSubChannelNumbers{subCh7,subCh6,subCh5,subCh4}(12比特长度,1表示该子信道有效)。但每个ASC从有效RACH子信道选出自己可用的一部分子信道。在图4的ASC分配的子信道中有定义。对于AICH_Transmission_Timing=0,把ASC的assignedSubChannelNumber值按照b2b1b0b2b1b0b2b1b0b2b1b0(忽略b3)排列得到掩码,然后和availableSubChannelNumbers的值进行AND操作,得出本ASC可用子信道号。我们目前配置assignedSubChannelNumber都是全1,所以availableSubChannelNumbers中所有的有效子信道都可用,也就是对每个ASC,4、5、6、7子信道都可用。对于AICH_Transmission_Timing=0,要按照b3b2b1b0b3b2b1b0b3b2b1b0进行AND操作。prach-Partiti