在NR的协议栈中,PDCP层位于RLC层之上,SDAP层(用户面)或RRC层(控制面)之下。它通过SAP与SDAP / RRC层进行通信,并通过RLC通道与RLC层进行通信。PDCP层的功能由PDCP实体来实现。PDCP实体从SDAP / RRC层接收到的数据,或发往SDAP / RRC层的数据被称作PDCP SDU。PDCP实体从RLC层接收到的数据,或发往RLC层的数据被称作RLC PDU(或RLC SDU)。
PDCP层只会用在映射到逻辑信道DCCH和DTCH的无线承载(RB)上,而不用于其它类型的逻辑信道上。也就是说,系统信息(包括MIB和SIB)、Paging以及使用SRB0的数据不经过PDCP层处理,也不存在相关联的PDCP实体。
除SRB0外,每个无线承载(RB,Radio Bearer)都对应一个PDCP实体。一个UE可建立多条无线承载,因此可包含多个PDCP实体,每个PDCP实体只处理一个无线承载的数据。取决于无线承载的特性(例如:单向/双向、split/non-split)或RLC模式的不同,一个PDCP实体可以与1、2或4个RLC实体相关联。对于non-split承载,每个PDCP实体与1个UM RLC实体(单向)、2个UM RLC实体(双向,每个RLC实体对应一个方向)或1个AM RLC实体(一个AM RLC实体同时支持2个方向)相关联。对于split承载,由于一个PDCP实体在MCG和SCG上均存在对应的RLC实体,因此每个PDCP实体与2个UM RLC实体(同向)、4个UM RLC实体(每个方向各2个)或2个AM RLC实体(同向)相关联。
使用PDCP实体的无线承载可被分成3类,不同类别的无线承载,其处理方式可能不同:
PDCP不支持在RLC层使用TM模式的数据,换句话说,使用RLC TM模式的数据并不经过PDCP层。
PDCP实体的功能视图以及发送端和接收端的处理流程如图1-1所示。
![20200222_1582356898_50196942.png image.png](/attachment.php?aid=713779)
图1-1:PDCP层功能
在发送端,PDCP实体按如下步骤进行处理:
步骤一:来自RRC层的控制面数据或来自SDAP层的用户面数据(PDCP SDU)会先缓存在PDCP的传输buffer中,并按到达PDCP层的顺序为每个数据包分配一个“Sequence Number(SN,序列号)”,SN指示了数据包的发送顺序。
步骤二:PDCP实体会对用户面数据进行头部压缩处理。头部压缩只应用于用户面数据(DRB),而不应用于控制面数据(SRB)。虽然图中并未明确注明,但用户面数据是否进行头部压缩处理是可选的。
步骤三:PDCP实体基于完整性保护算法对控制面数据或用户面数据进行完整性保护,并生成一个称为MAC-I的验证码,以便接收端进行完整性校验。控制面数据总是要进行完整性保护,用户面数据的完整性保护功能是可选的。
步骤四:接下来,PDCP实体会对控制面数据或用户面数据进行加密,以保证发送端和接收端之间传递的数据的保密性。除PDCP Control PDU外的经过PDCP层的所有数据都会进行加密处理。
步骤五:添加PDCP头部,生成PDCP PDU。
步骤六:如果RRC层给UE配置了复制功能,那么UE在发送上行数据时,会在两条独立的传输路径上发送相同的PDCP PDU。如果建立了split承载,PDCP可能需要对PDCP PDU进行路由,以便将数据发送到目标承载上。路由和复制都是在PDCP发送实体里进行的。
在接收端,PDCP实体按如下步骤进行处理:
步骤一:PDCP实体从RLC层接收到一个PDCP Data PDU后,会先移除该PDU的PDCP头部,并根据接收到的PDCP SN以及自身维护的HFN得到该PDCP Data PDU的RCVD_COUNT值,该值对后续的处理至关重要。
步骤二:PDCP实体会使用与PDCP发送端相同的加解密算法对数据进行解密。
步骤三:PDCP实体会对解密后的数据进行完整性校验。如果完整性校验失败,则向上层指示完整性校验失败,并丢弃该PDCP Data PDU。
步骤四:PDCP实体会判断是否收到了重复包,如果是,则丢弃重复的数据包;如果不是,就将PDCP SDU放入接收buffer中,进行可能存在的重排序处理,以便将数据按序递送给上层。某些场景下可以去使能重排序功能,这时数据可能乱序递送给上层。
步骤五:对数据进行头部解压缩。如果解压缩成功,将PDCP SDU递送给上层。如果解压缩失败,解压缩端会将反馈信息(interspersed ROHC feedback)发送到压缩端以指示报头上下文已被破坏。
对于AM DRB,如果配置了需要发送PDCP状态报告,那么PDCP接收端会在PDCP实体重建或PDCP数据恢复时发送PDCP状态报告,以便PDCP发送端重新发送丢失了的PDCP SDU。
需要说明的是,在同一PDCP实体(或对等的实体)内讨论具体的流程才有意义。不同的PDCP实体之间是相互独立的。