2.3 数据链路层
数据链路层位于网络结构的第二层(Layer2),包含MAC子层、RLC子层和PDCP子层等。下面主要介绍MAC子层、RLC子层和PDCP子层的主要功能。
2.3.1 MAC子层
MAC子层是调度和控制物理层工作的,其工作内容涉及冗余版本的选择、信道编码与解码、交织、速率适配、数据调制与解调、资源分配对应的映射与解映射、功率分配、天线映射等。MAC子层的控制功能贯穿了整个物理层的工作过程,具体功能包括:
(1)逻辑信道与传输信道之间的映射。
(2)将来自于一个或多个逻辑信道的业务数据单元(Service Data Unit,SDU)复用到一个传输块(Transport Block,TB),通过传输信道发送到物理层。
(3)将物理层通过传输信道传送来的传输块(TB)中的一个或多个逻辑信道的MAC业务数据单元解复用。
(4)调度信息上报。
(5)通过HARQ进行纠错。
(6)通过动态调度进行UE间的优先级处理。
(7)同一UE的逻辑信道间的优先级处理。
(8)逻辑信道优先级排序。
(9)传输格式选择。
2.3.2 RLC子层
RLC子层位于PDCP子层和MAC子层之间,为用户数据和控制数据提供分段和重传。它通过业务接入点(Service Access Point,SAP)与PDCP子层进行通信,并通过逻辑信道与MAC子层进行通信。每个UE的每个逻辑信道都有一个RLC实体,RLC实体从PDCP子层接收到的数据或发往PDCP子层的数据被称作RLC业务数据单元(Service Data Unit,SDU)。RLC实体从MAC层接收到的数据或发往MAC子层的数据被称作RLC协议数据单元(Protocol Data Unit,PDU)。
在RLC协议中,进入每个子层但未被处理的数据称为SDU,经过子层处理后形成特定格式的数据被称为PDU。因此,本层形成的PDU即为下一层的SDU,其中发生了分段/重组、级联、填充的过程。例如,RLC的SDU就是来自上层PDCP的PDU,而RLC发往MAC的PDU就是MAC的SDU。简单来说,PDU就是SDU在RLC层的承载,SDU被封装后就变成了PDU。
RLC子层的功能是由RLC实体来实现的,每个RLC实体由RRC根据业务类型配置成以下三种模式之一:
(1)透明模式(Transparent Mode,TM)。RLC实体在TM模式下只提供数据的透传(pass through)功能,发送实体在高层数据上不添加任何额外控制协议开销,仅根据业务类型决定是否进行分段操作。接收实体接收到的PDU如果出现错误,则根据配置,在错误标记后递交或者直接丢弃并向高层报告。实时语音业务通常采用RLC透明模式。
(2)非确认模式(Unacknowledged Mode,UM)。RLC实体在UM模式下提供除重传和重分段外的所有RLC功能,发送实体在高层PDU上添加必要的控制协议开销,然后进行传送但并不保证传递到对等实体,且没有使用重传协议。接收实体对所接收到的错误数据标记为错误后递交,或者直接丢弃并向高层报告。UM模式下提供了一种不可靠的传输服务,该模式的典型业务应用有小区广播和IP电话。
(3)确认模式(Acknowledged Mode,AM)。RLC实体在该模式下,通过出错检测和重传,提供可靠的传输服务。发送侧在高层数据上添加必要的控制协议开销后进行传送,并保证传递到对等实体。因为具有ARQ功能,如果RLC接收到错误的RLC PDU,就通知发送方的RLC重传这个PDU。AM模式是分组数据传输的标准模式,常见的应用有互联网浏览和电子邮件下载。
RLC主要负责以下功能:
(1)分段/串联和重组RLC SDU(只适用于UM和AM模式)。RLC PDU的大小是由MAC层指定的,其大小通常并不等于RLC SDU的大小,所以在发送端需要分段/串联RLC SDU以便其匹配MAC层指定的大小。相应地,在接收端需要对之前分段的RLC SDU进行重组,以便恢复出原来的RLC SDU并按序递送给上层。
(2)通过ARQ来进行纠错(只适用于AM模式)。MAC层的HARQ机制的目标在于实现快速重传,其反馈出错率在1%左右。对于某些对出错概率要求更高的业务,如TCP传输等,RLC层的重传处理能够进一步降低反馈出错率。
(3)对RLC数据PDU进行重排序(只适用于UM和AM模式)。MAC层的HARQ操作可能导致到达RLC层的报文顺序是混乱的,所以需要RLC层对数据进行重排序。重排序是根据序列号的先后顺序对RLC数据PDU进行排序的。
(4)重复包检测(只适用于UM和AM模式)。出现重复包的最可能的原因是,发送端反馈了HARQ ACK,但接收端错误地将其解释为NACK,从而导致了不必要的MAC PDU重传。
(5)对RLC数据PDU进行重分段(只适用于AM模式)。当RLC数据PDU需要重传时,可能需要进行重分段。例如,当MAC层指定的大小小于需要重传的原始RLC数据PDU的大小时,就需要对原始RLC数据PDU进行重分段。
1. RLC子层的功能
RLC在不同工作模式下的功能如表2-4所示。
表2-4 RLC在不同工作模式下的功能
注:Yes表示可以,No表示不可以。
2. RLC PDU的结构
RLC PDU是RLC子层协议数据单元,它是按字节对齐的比特串,比特串从左到右排序,之后再按行的顺序从上到下排序。RLC PDU分为RLC数据PDU和RLC控制PDU。RLC数据PDU主要用于传输上层的PDU数据,RLC控制PDU用于AM模式下RLC实体执行ARQ的过程。PDU就是SDU经过封装后的结果,RLC PDU结构如图2-20所示。一个RLC SDU从首个比特开始被包含于一个RLC PDU。RLC头携带的PDU序列号与SDU序列号相互独立,图中RLC SDU虚线表示分段的位置。
2.3.3 PDCP子层
PDCP子层负责处理控制面上的RRC消息以及用户面上的IP包。在用户面上,PDCP子层收到来自上层的IP数据分组后,对IP数据分组进行头压缩和加密,然后递交到RLC子层。PDCP子层还向上层提供按序提交和重复分组检测功能,反方向上,PDCP也具有解头压缩和解加密的功能。在控制面,PDCP子层为上层RRC提供信令传输服务,并实现RRC信令的加密和一致性保护,以及在反方向上实现RRC信令的解密和一致性检查。
图2-20 RLC PDU结构
1. PDCP子层的功能
PDCP子层用户面的主要功能包括:
(1)用户面数据的包头压缩和解压缩功能,只支持健壮包头压缩(Robust Header Compression,ROHC)算法。
(2)通过加密及完整性保护实现安全功能,例如用户和控制面协议的加密和解密,控制面数据的完整性保护和验证。
(3)用户数据传输功能,包括:①下层重建时,对向上层发送的PDU顺序发送和重排序;②对映射到AM模式的资源块的下层SDU进行重排序。
(4)数据包(上行链路基于定时器的SDU)丢弃功能。
2. PDCP PDU的结构
PDCP PDU的结构如图2-21所示,PDCP SDU和PDCP头均为8位的倍数,PDCP头可以是一个字节或者两个字节长。
图2-21 PDCP PDU结构