3GPP25.321中HSDPA的Mac-hs实体研究
Mac-hs实体概述
和R99结构的协议栈相比,HSDPA协议栈将部分链路调整功能移至NodeB,增加了系统效率,减少了链路调整时间,另外,与其他传输信道终结于RNC相比,HSDPA的HS-DSCH信道终结于NodeB中的MAC-hs,而HARQ就是由Node B中的MAC-hs层完成的,这将提供比R99的RLC确认机制更短的时延。
如果给UE 分配了一条HS-DSCH,在已经配置了MAC-c\sh的情况下,MAC-d PDU通过Iub接口从MAC-c\sh传到MAC-hs;在没有配置MAC-c\sh的情况下,MAC-d PDU通过Iur\Iub接口从MAC-d传到MAC-hs。
Mac-hs实体组成
MAC-hs用于处理在HS-DSCH上传输的数据,通过MAC-Control接收RRC层的配置参数。对于MAC-hs中的每一个MAC-d PDU都要进行优先级的处理。它由四个部分组成:
- 流量控制:
流控实体的功能可以应用于具有或者不具有MAC-c/sh的HSDPA协议结构。MAC-d与MAC-hs或者MAC-c/sh与MAC-hs之间共同提供一个流控实体,流控实体的功能是针对每一个MAC-d流中的每一个优先级来独立控制的。流控实体用来控制来自MAC-d或者MAC-c/sh的数据流,以便满足空中接口变化的能力。通过流控可以减少传输时延和堵塞情况。
- 调度、优先级处理:
此实体的作用是根据不同的优先级来协调数据流和HARQ之间的资源。根据UE在上行HS-DPCCH中的ACK/NACK反馈情况决定是新发还是重传,根据用户优先级和调度策略,以及信道质量指示,确定用户的传输数据块大小,设置优先级和队列。在一个HS-DSCH内的每一个优先级的TSN是惟一的,后面传来的新数据块的TSN也会依次递增。为了保证正确的传输优先级,在任何时间都可以发起新的HARQ进程,NodeB根据通信宽口和调度优先级,将MAC-d PDU分配到对应的优先级队列和数据块的编号。按照信道质量好的用户尽量满足最大传输速率的方式,来获得更好的小区吞吐量。
- HARQ:
HARQ实体负责完成每一个用户的HARQ功能。HARQ实体处理多个HARQ进程,实现HSDPA用户多进程的数据传输,每一个TTI传输的HS-DSCH数据对应一个HARQ进程。
- TFRC选择:
TFRC实体的作用是根据实际的信道情况和网络资源情况选择合适的传输格式,分配合适的HS-DSCH信道码,选择最佳的调制方式,即确定TFRI。
TFRI包括了HS-DSCH TF部分,MAC-hs传输块大小和调制方案,同时还有在HS-DSCH TTI上映射的物理信道的信息。
Mac-hs实体功能
Flow Control:
- 流量控制实体其实应分为两部分,一个在MAC-d中,另一个在MAC-hs中,通过这两个部分的配合来完成MAC-d到MAC-hs的流量控制功能。在MAC-hs实体中创建一个缓冲区,缓存上层(MAC-d)发来的数据。通过监测该缓冲区的使用情况,MAC-hs模块中的流量控制实体向MAC-d模块中的流量控制实体发出增大或减小流量的指令,从而达到流量控制的目的(防止缓冲区的溢处,导致MAC-hs层丢包;又要防止缓冲区干涸,导致“断流”,影响吞吐量)。
- 为了达到以上的设计目标,必须对优先级缓冲区做一个划分。设计三个门限:SLOW_DOWN_GATE_BYTE、STOP_DATA_GATE_BYTE、SPEED_UP_GATE_BYTE。若缓冲区的使用量大于或等于SLOW_DOWN_GATE_BYTE,则向MAC-d发送降低流量的指令EN_SLOWN_DOWN;若缓冲区的使用量大于或等于STOP_DATA_GATE_BYTE,则向MAC-d发送停止数据发送的指令EN_STOP_DATA,若缓冲区的使用量小于或等于SPEED_UP_GATE_BYTE,则向MAC-d发送增大流量的指令EN_SPEED_UP
Scheduling/Priority Handling:
该模块实现以下功能:
- 调度一个小区中的所有UE,(目前我们的仪表只支持单个UE)。
- 根据高层的指示调度MAC-hs SDU,一个UE可以有几个MAC-d流,MAC-hs接收MAC-d发送来的PDU,并按照其优先级放入相应的优先级缓存队列中。
- 为所选队列中新传送的数据块设置TSN,针对一条HS-DSCH来说,队列中的第一个MAC-hs PDU的TSN为0,每传送一个TSN加1,
- 通过捆绑NDI比特来实现TSN的重复使用,为了恢复之前的传输或迫使UE冲洗软缓冲区,在这种情况下payload就会改变,所以要注意保持高层数据的顺序。
- 为每一个传到HARQ实体的MAC-hs PDU指示Queue ID 和TSN。
- 根据优先级(包括TSN)决定是发送重传的数据还是发送新数据。
- 基于高层的延时特性,“调度”可以丢弃任何超时的MAC-hs SDU。
- 负责为新的或者重传的MAC-hs SDU选择合适的冗余版本。
HARQ:
该模块实现以下功能:
- 配合Schedule模块完成HARQ的PDU组装和发送。对从schedule处收到的MAC-hs PDU要进行判断,是新数据还是要求重传的数据。如果是新数据,则启动一个空闲的process,记录RV信息,并把MAC-hs PDU复制,把副本和传输次数放入等待回复的链表中,再将MAC-hs PDU发给schedule。如果是重传的MAC-hs PDU,则将相应的PDU放入重传队列,把重传计数加1,记录RV信息,将这个MAC-hs PDU从重传队列中移到等待回复队列中,再将MAC-hs PDU发给schedule。
- 接收并处理HARQ反馈信息,发送端发出的每个PDU都需要确认,接收端通过HARQ反馈消息(ACK,NACK,NULL)来描述PDU的接收情况。ACK表示该PDU正确接收,NACK表示没有正确接收,NULL由物理层参数m_iExistFlag指示,表明在这个TTI,UE没有上报对应PDU的确认消息。
如果收到NACK,首先判断这个PDU的传输次数是否已达到最大传输次数,如果已经达到高层配置的最大传输次数,则调用放弃重传的函数,然后还要判断此PDU是否处在相应QUEUE的WINDOWSIZE之外,如果处在WINDOWSIZE之外,则调用放弃重传函数,如果既没有到达最大重传次数,又没有处于WINDOWSIZE之外,则将数据信息由等待回复的链表中转存至等待重发的链表里,等待调度的进一步处理,同时删除等待回复的链表中的相应节点。
如果收到ACK,将PROCESS_ID由等待回复的链表中转存到空闲HARQ进程链表中供调度使用,并且同样删除等待回复链表中的相应节点。
如果收到NULL,按照测量协议的要求,须使用上次的RVinfo和processID重传一次,所以要将记录传输次数的TransmitCount减1,并将数据信息由等待回复的链表中转存至等待重发的链表里,等待调度的进一步处理,同时删除等待回复的链表中的相应节点。
- 为每个HARQ process维护状态机,状态维护是通过将PROCESS_ID放入不同的链表来实现的。共有三个链表,为HARQ_IDLE_PROCESS_LIST,HARQ_ WAITFEEDBACK _LIST,HARQ_ WAITRETRANSMIT_ LIST,分别对应空闲状态、等待回复状态和等待重传状态。
- 当一个PDU在经过多次发送(最大传输次数由高层配置)仍然无法被UE正确接收,HARQ将放弃这个PDU的传输,丢弃此PDU,将WAIT_ RETRANSMIT _LIST链表中这个PDU的数据清空,并将这个PDU占用的PROCESS_ID存至IDLE_LIST表明这个HARQ进程空闲,可用于新一轮的传输。
TFRC selection:
该模块实现以下功能:
- 接收端上传的DPCCH_DATA经物理层上传到高层,高层再将此数据传输到TFRC模块,该模块将除原语头以外的参数存储到本地全局变量中供调度模块调用。
每个TTI网侧都要通知UE当前的传输配置,这些参数被封装在一个结构体中通过SCCH传给UE,其中一个参数就是TFRI(TFRI部分包括传输块大小,调制方式,时隙以及每时隙所用的码道数)可以通过‘高层配置’或是根据‘接收到的CQI进行AMC判决’决定传输方式,如果根据高层配置决定传输方式,则在每次传输数据前,高层会传送关于调制方式的指令,即决定是QPSK还是16QAM,两种调制方式都有一个相对应的传输块大小,所以根据高层配置的传输方式就可以确定传输块大小,同时传输所用的时隙及各时隙码道数都可以被确定,即SCCH数据中的TFRI被确定了,然后根据Mod_Scheduler传递的指针将上述参数填入SCCH数据中的对应的TFRI结构体中。由于,TFRI中的传输块大小值并不是真实的大小,只是真实值对应的一个6比特数。所以除了上述参数外,还要添加传输块真实大小的值供PDU生成模块使用。