TD-SCDMA/HSPA无线网络优化原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.4 MAC层HARQ

本节阐述的是数据如何重传,至于对每次传输的数据,用何种方式进行打孔和编码,在第10章的HARQ算法中会有详细描述。

4.4.1 MAC层介绍

在不同的协议版本中,MAC层所包含的实体和功能也都有所区别。“实体”,对于负责设备开发的工程师而言,意味着一段代码,将这段代码导入板卡,即可实现“实体”的功能。在网络架构中引入新的实体,往往是为了解决某个既有的老问题,而新实体的引入,在改善网络性能的同时,也会带来一些新的问题。因为对于网络优化工程师而言,新的实体更多地意味着很多新的窗口、定时器、计数器参数的引入,某个定时器和计数器设置得稍大或稍小,都有可能会对链路的可靠性、时延或用户感知产生较大影响。

1.MAC层结构

UE侧MAC层结构和UTRAN侧MAC层结构分别如图4.6和图4.7所示。

图4.6 UE侧的MAC层结构

图4.7 UTRAN侧的MAC层结构

在R5以前的版本中,由于没有采用HSDPA,MAC层没有实现HARQ和快速分组调度等功能,因此MAC层的逻辑实体,相比图4.6和图4.7,只有MAC-b、MAC-c/sh和MAC-d这3个实体。MAC-b实体负责处理BCH(广播信道)上传输的信息,实现逻辑信道BCCH与传输信道BCH之间的映射;MAC-c/sh实体负责处理公共信道和共享信道上传输的信息,包括PCH、FACH、RACH、USCH、DSCH等信道;MAC-d实体负责处理连接模式下分配给UE的专用信道上传输的信息,完成逻辑信道DCCH/DTCH和传输信道之间的映射;MAC-hs实体负责处理高速下行共享信道。

2.HSDPA的MAC层数据封装

在HS-DSCH中,MAC PDU包含一个MAC-hs头以及一个或多个MAC-hs SDU(见图4.8),而每个MAC-hs SDU相当于一个MAC-d PDU。每个UE在一个TTI中最多只能发一个MAC-hs PDU。

图4.8 HSDPA MAC层数据封装

HS-DSCH中的MAC PDU包头有如下参数。

VF版本标识:VF是一个1bit的标志域,在R5版本中设成0。

Queue ID:3bit,接收端重排序队列的标识。对应于优先级队列的标识,UE中Queue ID最大值为8。

TSN:6bit,传输序列号,用于重排,以便把数据有序地发送到高层。

SID(Size Index Identifier):3bit,表示队列中MAC-d PDU大小的索引号,最多8种,高层在建立过程中为每个队列配置MAC-d PDU的大小和对应的索引号。如果队列中只有一种MAC-d PDU,则SID=0。

N:7bit,表示连续的同样大小的MAC-d PDU的个数。在一个TTI中最大值为70个。

F:Flag,0表示后面跟后续的SID、N及F,1表示后面跟MAC-d PDU。

如果所有的MAC-d PDU大小相同的话,MAC-hs PDU的包头长度为21bit。

3.HSUPA的MAC层数据封装

HSUPA在UE、Node B和RNC侧均引入了新的MAC层实体,如图4.9所示。

图4.9 HSUPA协议结构

UE侧:新增MAC-es/MAC-e实体,主要负责处理HARQ重传、调度、MAC-e的复用和E-DCH的TFC选择。

Node B侧:增加MAC-e实体负责处理HARQ重传、调度和MAC-e的解复用。

SRNC侧:在SRNC新增一个实体MAC-es,主要负责数据包的有序传送,也就是重排序功能。

新增的MAC-es/MAC-e实体包括两个子层:上层的MAC-es和下层的MAC-e。

MAC-es位于MAC-e之上,并且直接接收MAC-d来的PDU。一个逻辑信道的RLC PDU经过MAC-d送到MAC-es/MAC-e(一个MAC-d PDU就是一个MAC-es的SDU),首先在MAC-es层中进行封装,如图4.10所示。每个MAC-es PDU的包头仅包含一个字段,也就是TSN,用于重排序以支持向高层的按序传输,大小为6bit。

图4.10 MAC-es PDU

添加TSN之后的MAC-es PDU会传递给下层的MAC-e,MAC-e PDU由包头、负荷、SI构成,如图4.11所示。MAC-e PDU的负荷部分由对应于特定MAC-d Flow的若干个MAC-es PDU构成。MAC-e PDU的包头包括DDI值和N值,DDI值的长度为6bit,标识了逻辑信道、MAC-d流和MAC-es SDU的大小;N值的长度为6bit,用于指示后续采用相同DDI的MAC-d PDU数目。DDI映射表通过RRC层信令通知。以下是Radio Bearer Setup信令解码中截取的片段,从中可看到DDI信息。

Radio Bearer Setup:
ul-LogicalChannelMappings oneLogicalChannel :
                                    {
                                      ul-TrCH-Type e-dch :
                                      {
                                         logicalChannelIdentity 10,
                                         e-DCH-MAC-d-FlowIdentity 6,
                                         ddi 30,

图4.11 MAC-e PDU

以上所述的UE侧MAC层的封装过程简图如图4.12所示。图中左边表示功能划分,右边表示PDU结构。

图4.12 UE侧MAC层封装过程简图

4.4.2 MAC层HARQ的工作原理

常见的差错控制技术一般分为3类:ARQ(Automatic Repeat Request,自动重传请求)、FEC(Forward Error Correction,前向纠错编码)和HARQ(Hybrid Automatic Repeat Request,混合自动重传请求)。ARQ实际上就是重传反馈方式,发送端发送能检错但不能纠错的码(如CRC),接收端根据译码结果判断是否出错,并通过反馈信道向发送端发送一个ACK或NACK应答。发送端根据这个应答来决定是否重发数据包,直到收到ACK,或超时,或者重发次数超过设定的最大值,才会停止发送这个数据包。RLC层的AM(确认模式)就是一种典型的ARQ机制。FEC是由发送端发送能纠错的码(如Turbo码),接收端根据纠错码的译码规则进行译码,直接根据编码的冗余度就能纠正一定程度的误码,而不需要复杂的反馈机制。但纠错码比检错码的编码冗余度大,编码效率低,译码复杂,略微提高了发送端和接收端的运算复杂度。

考虑到ARQ与FEC各自的优缺点,不难想到,为了在系统复杂度和数据传输可靠性之间寻求折中与平衡,将FEC与ARQ结合起来会是一个很好的选择,这就是HARQ。HARQ分3种类型。

第一类HARQ复杂度最低。接收端首先对数据包进行纠错,如果有错误不能纠正,就发送数据包重传请求,同时丢弃错误的数据包。重传时使用相同的前向纠错编码,冗余信息不变。第一类HARQ的控制信令开销较小,解码相对简单一些。但每次出错都要丢弃错误的数据包,无法获得合并增益,而且固定的FEC意味着固定的冗余信息,系统吞吐量不如第二类和第三类HARQ高。

第二类HARQ又叫全增量冗余(FIR)HARQ,属于增量冗余(IR)的一种。为了纠错,重传数据包携带了附加的冗余信息,这些附加的冗余与先前接收到的数据包合并在一起,得到的码字具有更高的编码增益,因此能够更好地恢复错误的数据。需要注意的是,FIR只在第一次传输的时候发送系统比特,而在重传中不包含系统比特信息,只是携带新的冗余信息来帮助解码,在接收端与之前收到的信息合并形成更低码率的前向纠错码,这样编码增益更高,纠错能力更强,使错误率进一步降低。每一次重传所携带的冗余信息可以是不同的,可通过冗余版本(RV)参数进行控制。系统发端需要储存所有待传输数据,收端同样需要储存所有接收到的重传数据。从而,系统对收、发两端缓存器的需求量将随着重传次数的增加而增加。因此,该系统虽然在性能上有所改善,但系统的复杂度较高。此外,由于系统比特对解码的影响非常大,如果系统中噪声和干扰比较大,使得第一次传输的数据破坏非常严重,那么即使增加冗余信息,数据包也难以解码。在这种情况下,重传数据自解码将使系统性能得到提高。

FIR的编码及重传过程的实现如图4.13所示。

图4.13 FIR原理图

第三类HARQ又叫部分增量冗余(PIR)HARQ,也属于增量冗余机制。第三类HARQ与第二类HARQ的区别在于,前者的重传数据中同时包含冗余和系统比特,能够自解码。而后者的重传数据中只包含冗余比特,无法自解码。第三类HARQ可以看作前两类的结合。PIR的编码及重传过程如图4.14所示。

图4.14 PIR原理图

HARQ运行于基站和UE之间,很大程度上依赖于UE的能力,不同类别的UE支持的HARQ功能会不同。反映UE支持HARQ能力的参数是软内存比特数,它标志UE能支持的用于HARQ进程的最大内存的大小。例如,最大重传次数3。HARQ进程数是同时允许的进程数,根据软内存比特数,其值在1和最大值8之间。

设备中的HARQ算法,一般不按照第一类、第二类、第三类HARQ的划分方法,而是分为CC和IR。CC(Chase Combining)对第一类HARQ作了一定程度的改进,不丢弃错误的数据包,而是存储起来,在接收端由解码器先将多次传输的数据按信噪比加权相加,再进行解码,从而获得时间分集增益。另一方面,也可以将CC看做特殊的第三类HARQ,只不过每次重传时的冗余信息相同。当发送端收到NACK信号后,就将首次传输的包进行重传。接收端收到重传包,就将重传包与首次传输的包进行合并。Chase合并由于可以获得更好的SNR,因而可以改善性能。

HARQ实体负责处理HARQ功能,分别位于基站侧和UE侧,最多可以支持8个HARQ进程。每个HARQ进程在基站侧有一个发射端缓存,以便在收不到确认时重发。UE侧有一个接收端缓存,负责对初次发送和多次重发的数据进行合并,同时它还负责报告HARQ进程的接收状态,包括肯定确认和否定确认。

以HSDPA为例,HSDPA的重传机制在MAC层实现,这主要有两个原因:首先,减小了时延。RLC往返时间的时延大约是80~100ms,如果在移动台的衰落比较严重,信道条件比较恶劣的情况下,这个时间还是太大了。而MAC层的时延要远小于RLC层,且避免了Iub接口的时延,重传机制在MAC层就可以得到快速反馈。其次,这可以保证在任何时刻UE只接收一个Node B的数据,当移动台发生切换时,只需简单地和新建立连接的Node B执行HARQ机制。HARQ技术的实现需要UE和Node B两端的物理层和MAC层紧密结合。

1.定时器与计数器

对于任何一种重传机制而言,定时器都是不可或缺的。MAC层HARQ,网络优化工程师需要关注两个定时器,一个是基站侧的Discard Timer,一个是UE侧的T1 Timer。

1)Discard Timer

该参数定义了MAC-d PDU进入MAC-hs队列后能够等待被发送的最大时间。基站侧发出一个PDU之后,并不会马上丢弃,而是将其置于缓存中,基站对每一个发出的MAC-hs PDU都会启动Discard Timer,如果定时器超时,仍没有收到来自UE的确认,则丢弃该MAC-d PDU。典型取值为毫秒级,如500ms。

2)T1 Timer

重排释放定时器T1(MAC-hs T1 Timer)由高层配置,是为了避免无限期等待MAC-hs PDU而设置的重排释放定时器。假如T1定时器未被激活,则当正确接收到TSN>next_ expected_TSN的MAC-hs PDU时,T1定时器将被激活,并将T1_TSN设置为该MAC-hs PDU的TSN。在给定时间内只能存在一个激活的T1定时器,因此如果T1定时器被激活,则不会激活其他T1定时器。如果在T1超时前,TSN=T1_TSN的MAC-hs PDU能被递交给拆分实体,则T1将被停止。当T1定时器超时并且T1_TSN> next_expected_TSN,则包括T1_TSN-1在内,所有满足TSN> next_expected_TSN且接收正确的MAC-hs PDU均被提交给拆分实体,并将next_expected_TSN设置为紧邻未接收到的MAC-hs PDU之前的TSN。当T1定时器停止或超时,尚存在一些接收到的MAC-hs PDU不能被提交给高层,则T1定时器被重新启动,T1的典型取值为毫秒级,如200ms。若设置过小,容易使底层丢失数据;设置过大,在信道条件较差时会使数据传输时延增大。

Discard Timer和T1 Timer这两个定时器参数的取值,能在很大程度上影响HARQ的性能,若设置过小,在链路质量差的时候,很多数据包得不到充分的重发机会,而无法在MAC-hs层得到恢复,必须依靠上层(RLC层AM模式)的重传才能恢复,如此一来,环回时延明显增大,影响下载速率。若设置过大,虽然能保证大多数数据包在MAC层得到重传和恢复,但增大了缓存占用。

2.滑动窗口与状态变量

为便于理解接收端MAC-hs的工作过程,下面简要介绍几个主要的状态变量,并结合一个实例予以说明。

(1)next_expected_TSN:是指在最后顺序接收到的MAC-hs PDU中的TSN之后的传输序列号。

(2)RcvWindow_UpperEdge:表示接收窗的上边界的TSN。在第一个MAC-hs PDU被成功接收之后,它要与所有接收到的MAC-hs PDUs的最大的TSN相符。RcvWindow_ UpperEdge的初值等于TSN_MAX-1。RcvWindow_UpperEdge是根据下面给出的过程中新MAC-hs PDU的接收来更新的。

(3)T1_TSN:表示当定时器T1启动时,不能递交给拆分实体的最后一个MAC-hs PDU的TSN。

这几个状态变量是MAC层重拍功能得以实现的关键。

(1)如果定时器T1没有被激活:

① 当一个TSN > next_expected_TSN的MAC-hs PDU被正确接收,启动定时器T1;

② T1_TSN应当设置为此MAC-hs PDU的TSN。

(2)如果定时器T1已经激活:不用启动更多的定时器,即在一个时刻只有一个定时器T1是激活的。

(3)定时器T1应当停止,如果在定时器超时之前,TSN=T1_TSN的MAC-hs PDU能够被递交到拆分实体。

(4)当定时器T1超时并且T1_TSN > next_expected_TSN,那么:

① 对于正确接收到的MAC-hs PDUs,将TSN满足公式next_expected_TSN<TSN ≤T1_TSN-1的MAC-hs PDUs传送至拆分实体;

② 将从T1_TSN起已正确收到的序列号连续的PDU递交到高层;

③ next_expected_TSN设置为下一个未接收的MAC-hs PDU的TSN。

(5)当定时器T1停止或者超时,并且仍然存在一些接收到的MAC-hs PDUs不能被递交到高层,则:

① 启动定时器T1;

② 设置T1_TSN为不能被递交的MAC_hs PDU中最高的TSN。

为便于理解,下面通过一个接收窗的简单原理图(见图4.15)予以说明。

图4.15 一个简单的接收窗原理图

接收端MAC-hs依次收到TSN为5、6、7、8、9的PDU,那么next_expected_TSN将指向10,也就是说,接收端期望下一个到达的PDU的TSN为10,但接踵而来的是TSN为14的PDU,比next_expected_TSN要大,接收端便会启动定时器T1(定时器T1一般与RTT有关,假设设置为100ms),并将这个突如其来的TSN=14的PDU做一个标记,即T1_TSN。在等待10的同时,已经正常收到的5、6、7、8、9这几个PDU暂时还不能递交给高层,而必须放在重排缓冲区(Buffered in the Reordering Queue)中,以等待丢失的PDU。当然,等待时间也是有限度的,当T1超时,仍未收到10,接收端会认为10已经丢掉了,将把14、15递交给高层。如果时间到,所有PDU都提交,不论是否还有未到的空位。定时器的设置应允许完成所有的HARQ进程的最大重传数。设置过高,特别是相对于RLC中的状态禁止定时器设置过高时,会造成不必要的RLC重传。同时会显著推迟数据向上层的提交。对于重传的数据包,除了要考虑定时器的限制外,发送窗、接收窗的大小也是重要因素,因为缓存的开销不可能无限大。

1)MAC-hs Transmit Window Size

发送窗(MAC-hs Transmit Window Size)是指发送端缓存中数据包序列拥有的最大包数。无线环境较恶劣时,缓存中可能会滞留许多等待重发的数据包,当MAC-hs在发送端发送了一个TSN=SN的MAC-hs PDU之后,TSN≤SN-TRANSMIT_WINDOW_SIZE的任何MAC-hs PDU都不应该重发以避免接收端序列号混淆。该参数决定MAC-hs PDU重排序的等待范围,受到数据传输时延和缓存大小的限制。若设置过小,容易丢失数据;若设置过大,在信道条件较差时会使数据传输时延增大。

2)MAC-hs Receive Window Size

UE侧也存在一个接收窗(MAC-hs Receive Window Size),如果收到的数据包的序列号超出接收窗的大小,那么这个数据包将不被接收。接收窗内TSN的范围从RcvWindow_ pperEdge-RECEIVE_WINDOW_SIZE + 1到RcvWindow_UpperEdge。MAC-hs收发窗口的大小应能允许完成各个HARQ进程的最大传输次数。如果窗口太小,即使UE物理层能成功接收数据,也会出现由于数据块不完整而引起的大量RLC重传,在快变的RF环境中,这会造成数据传输的停滞。另一方面,如果窗口太大,延迟也会增大。某个HARQ进程在多次重传都不成功时,向上层的数据提交会因为等待这个进程而推迟。如果是用IR合并,不是CC,那么会增加UE内存消耗。在重传次数设置多少合适的问题上,无论是CC还是IR,一般来说,超过两次传送后增益很小。

尽管MAC层HARQ可以纠正大部分错误,但在一些情况下仍有“残留”的错误存在,例如:HARQ重传次数超过门限值、UE反馈的NACK被Node B错误地理解成ACK,等等。即便这种错误的概率只有1%,对于TCP层来说仍然是难以容忍的,因此,还需要RLC层的ARQ来进一步纠错,作为MAC层和TCP层之间的缓冲。