1 作用
用户面和控制面的数据传输。
维护PDCP SNs
使用ROHC协议对IP报头进行压缩/解压缩,以减少空口传输的比特数(只适用于用户面数据)。
加密和解密数据(用户面和控制面),发送端对数据进行加密,接收端对数据进行解密。
完整性保护和完整性验证
基于定时器的SDU丢弃,为了防止发送端的传输buffer溢出,而丢弃那些长时间没有被成功发送出去的SDU。
对于split承载的路由,双连接下split承载同时跨越2个不同的cell group,PDCP发送端需要负责对报文进行路由,确保把数据发送到正确的cell group。PDCP接收端不需要进行路由。
复制(duplication),如果网络配置了,PDCP会把数据发给对应的两个RLC实体。主要用于URLLC场景。
重新排序或者按序进行传送,RLC层只要重组出一个完整的RLC SDU,就把它发往PDCP层,也就是说,RLC层不会对SDU进行排序,所以发给PDCP层的RLC SDU可能是乱序的,这就需要PDCP的接收端对数据进行重排序,并按序传送给上层。
乱序传送,对于那些不需要按序传送的业务,可以去使能重排序功能,并直接发送给上层。
丢弃重复数据,由于使用UM模式的RLC实体不进行重复包检测,PDCP层可能会收到重复的数据。另外可能存在PDCP复制功能,接收端也可能收到重复的数据。切换过程中也可能出现重复的PDCP PDU。
2 结构
PDCP层位于RLC层之上,通过RLC channel与RLC层进行通信,通过SAP与SDAP/RRC层进行通信。PDCP层的功能由PDCP实体来实现。PDCP实体从RLC层收发的数据称为PDCP PDU,从SDAP/RRC层收发的数据称为PDCP SDU。在NR协议栈中和上层的收发数据称为SDU,同下层的收发数据称为PDU。
PDCP层只会用在映射到逻辑信道DCCH和DTCH的无线承载上,而不用于其它类型的逻辑信道上。
除了SRB0之外,每个无线承载都和一个PDCP实体相关联,一个UE可以建立多个无线承载,因此可以包含多个PDCP实体,每个实体只处理一个无线承载的数据。取决于无线承载的特性(例如单向/双向,split/non-split)或RLC模式,每个PDCP实体可以关联1/2/4个RLC实体:
- 对于split承载或者配置了PDCP复制的无线承载,每个PDCP实体关联2个UM RLC实体(相同方向),4个UM RLC实体(每个方向2个),或者2个AM RLC实体(相同方向)。
- 对于non-split承载,每个PDCP实体关联1个UM RLC实体,2个UM RLC实体(每个方向各一个),或者1个AM RLC实体。
- RLC TM模式的数据不经过PDCP传输。
3 流程
- 分组数据发送到PCDP之后,放到一个传输buffer中,按照分组数据到达的顺序进行分配序列号。接收端可以根据序列号对数据进行重排序。
- 然后对数据进行头压缩,但是只是针对用户面数据,也可以配置成不进行头压缩。控制面数据不进行头压缩,这部分在上图中没有呈现出来。
- 完整性保护
- 接下来对用户面和控制面数据进行加密保护,以保证接收端和发送端之间传递的数据的保密性。
- 添加PDCP头
- 如果建立了split承载,PDCP实体把数据路由到目标的承载。
4 PDU结构
4.1 用于SRB的数据PDU
< 38.323-6.2.2.1-1: PDCP Data PDU format for SRBs >
4.4 用于DRB的数据PDU
< 38.323-6.2.2.2: PDCP Data PDU format for UM DRBs and AM DRBs>
4.5 用于PDCP状态报告的控制PDU
< 38.323-6.2.3.1: PDCP Control PDU format for PDCP status report>
4.6 用于interspersed ROHC feedback的控制PDU
5 参数
5.1 PDCP SN
Length | Description |
---|---|
12 | UM DRBs, AM DRBs, and SRBs |
18 | UM DRBs, and AM DRBs |
5.2 Data
- 未压缩的PDCP SDU(用户面数据或者控制面数据)
- 压缩的PDCP SDU(仅用户面数据)
5.3 MAC-I
长度:32bit
携带着鉴权码,对于SRB来说这个参数一直存在,如果没有配置SRB的完整性保护,则其值为全0。对于DRB来说,只有网络配置了完整性保护才有这个参数。
5.4 COUNT
COUNT的值是由HFN和PDCP SN组成,HFN部分的大小(以比特为单位)等于32减去PDCP SN的长度。
5.5 R
长度:1bit
R15版本中还用于保留。
5.6 D/C
长度:1bit
Bit | Description |
---|---|
0 | Control PDU |
1 | Data PDU |
5.7 PDU类型
长度:1bit
Bit | Description |
---|---|
000 | PDCP status report |
001 | Interspersed ROHC feedback |
010-111 | Reserved |
5.8 FMC
长度:32bit
此字段指示在重新排序窗口内的第一个丢失的PDCP SDU的COUNT值,即RX_DELIV。
5.9 Bitmap
Bit | Description |
---|---|
0 | PDCP SDU with COUNT = (FMC + bit position) modulo is missing. |
1 | PDCP SDU with COUNT = (FMC + bit position) modulo is correctly received. |
该字段指示在接收PDCP实体中丢失了哪些SDU以及正确接收了哪些SDU。 Bitmap中第N个位的位置是N,即Bitmap中第一个位的位置是1。
5.10 Interspersed ROHC feedback
该字段包含一个仅具有反馈的ROHC数据包,即与PDCP SDU不相关的ROHC数据包。
6 头压缩和解压缩
ROHC框架定义了多个头压缩算法,被称为profile,目前R15中支持的头压缩协议和profile如下:
Profile Identifier | Usage | Reference |
---|---|---|
0x0000 | No compression | RFC 5795 |
0x0001 | RTP/UDP/IP | RFC 3095, RFC 4815 |
0x0002 | UDP/IP | RFC 3095, RFC 4815 |
0x0003 | ESP/IP | RFC 3095, RFC 4815 |
0x0004 | IP | RFC 3843, RFC 4815 |
0x0006 | TCP/IP | RFC 6846 |
0x0101 | RTP/UDP/IP | RFC 5225 |
0x0102 | UDP/IP | RFC 5225 |
0x0103 | ESP/IP | RFC 5225 |
0x0104 | IP | RFC 5225 |
UE在接入网络时会告诉NW自己支持那些算法,NW会在配置PDCP时告诉UE选用哪种算法。
数据经过PDCP头压缩之后,如果PDCP SN为12bit,则头长度为2字节,否则头长度为3字节。
7 重复
如果RRC参数pdcp-Duplication配置了,PDCP实体:
- 对于SRB
- 激活PDCP重复
- 对于DRB
- 如果指示激活了PDCP重复
- 激活PDCP重复
- 如果指示去激活了PDCP重复
- 去激活PDCP重复
- 如果指示激活了PDCP重复
重复PDCP丢弃:
- 若关联的某个AM RLC实体成功的发送了PDCP data PDU
- 指示另外一个AM RLC实体丢弃重复的DPCP data PDU
- 若收到去激活PDCP重复指示
- 指示第二个RLC实体丢弃所有的重复PDCP data PDU
TS38300-16.1.3
如图所示,当无线承载配置了PDCP重复之后,就会给PDCP添加第二个RLC实体,对应的逻辑信道是第二逻辑信道。这两个RLC实体具有相同的模式,PDCP会生成两个相同的PDU,分别发给两个RLC实体。通过两个独立的传输路径,提高了数据传输的可靠性,降低了等待时间,对于URLLC服务特别有利。
当DRB配置了duplication之后,RRC也同时设置了duplication的初始状态(激活/不激活),可以通过MAC CE进行动态控制是否激活。如果SRB配置了duplication,那么总是激活的,而且不能动态控制。
8 PDCP配置
PDCP-Config ::= SEQUENCE {
drb SEQUENCE {
discardTimer ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms75, ms100, ms150, ms200,ms250, ms300, ms500, ms750, ms1500, infinity} OPTIONAL, -- Cond Setup
//PDCP SN长度12或18bits,对于SRB只支持12bits
pdcp-SN-SizeUL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2
pdcp-SN-SizeDL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2
//头部压缩,可以配置成notUsed、rohc或者uplinkOnlyROHC
headerCompression CHOICE {
notUsed NULL,
rohc SEQUENCE {
maxCID INTEGER (1..16383) DEFAULT 15,
profiles SEQUENCE {
profile0x0001 BOOLEAN,
profile0x0002 BOOLEAN,
profile0x0003 BOOLEAN,
profile0x0004 BOOLEAN,
profile0x0006 BOOLEAN,
profile0x0101 BOOLEAN,
profile0x0102 BOOLEAN,
profile0x0103 BOOLEAN,
profile0x0104 BOOLEAN
},
drb-ContinueROHC ENUMERATED { true } OPTIONAL-- Need N
},
uplinkOnlyROHC SEQUENCE {
maxCID INTEGER (1..16383) DEFAULT 15,
profiles SEQUENCE {
profile0x0006 BOOLEAN
},
drb-ContinueROHC ENUMERATED { true } OPTIONAL-- Need N
},
...
},
integrityProtection ENUMERATED { enabled } OPTIONAL, -- Cond ConnectedTo5GC1
//对于AM DRB,指示上行是否发送PDCP状态报告
statusReportRequired ENUMERATED { true } OPTIONAL, -- Cond Rlc-AM
//指示是否进行乱序提交,RB建立之后,此字段不可更改
outOfOrderDelivery ENUMERATED { true } OPTIONAL-- Need R
} OPTIONAL, -- Cond DRB
//PDCP实体关联多个RLC实体时,为上行数据传输配置此字段
moreThanOneRLC SEQUENCE {
//主RLC实体配置
primaryPath SEQUENCE {
cellGroup CellGroupId OPTIONAL, -- Need R
//for CA
logicalChannel LogicalChannelIdentity OPTIONAL-- Need R
},
ul-DataSplitThreshold UL-DataSplitThreshold OPTIONAL, -- Cond SplitBearer
pdcp-Duplication BOOLEANOPTIONAL-- Need R
} OPTIONAL, -- Cond MoreThanOneRLC
//重排序定时器
t-Reordering ENUMERATED {
ms0, ms1, ms2, ms4, ms5, ms8, ms10, ms15, ms20, ms30, ms40,
ms50, ms60, ms80, ms100, ms120, ms140, ms160, ms180, ms200, ms220,
ms240, ms260, ms280, ms300, ms500, ms750, ms1000, ms1250,
ms1500, ms1750, ms2000, ms2250, ms2500, ms2750,
ms3000, spare28, spare27, spare26, spare25, spare24,
spare23, spare22, spare21, spare20,
spare19, spare18, spare17, spare16, spare15, spare14,
spare13, spare12, spare11, spare10, spare09,
spare08, spare07, spare06, spare05, spare04, spare03,
spare02, spare01 } OPTIONAL, -- Need S
...,
[[
//
cipheringDisabled ENUMERATED {true} OPTIONAL-- Cond ConnectedTo5GC
]]
}
示例:
pdcp-Config
{
drb
{
discardTimer infinity,
pdcp-SN-SizeUL len18bits,
pdcp-SN-SizeDL len18bits,
headerCompression notUsed : NULL,
statusReportRequired true
},
t-Reordering ms200
}
这个是5GNR的EN-DC现网配置,PDCP SN上下行都是18bits,不使用头压缩,需要发送状态报告。PDCP实体排序的时间为200ms。
Reference
TS38323 Packet Data Convergence Protocol (PDCP) specification