5GNR PDCP

image-20200314095604598.png

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 结构

wps0ox34b.png

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 流程

image-20200314091912991.png
  1. 分组数据发送到PCDP之后,放到一个传输buffer中,按照分组数据到达的顺序进行分配序列号。接收端可以根据序列号对数据进行重排序。
  2. 然后对数据进行头压缩,但是只是针对用户面数据,也可以配置成不进行头压缩。控制面数据不进行头压缩,这部分在上图中没有呈现出来。
  3. 完整性保护
  4. 接下来对用户面和控制面数据进行加密保护,以保证接收端和发送端之间传递的数据的保密性。
  5. 添加PDCP头
  6. 如果建立了split承载,PDCP实体把数据路由到目标的承载。

4 PDU结构

4.1 用于SRB的数据PDU

< 38.323-6.2.2.1-1: PDCP Data PDU format for SRBs >

image-20200314143609137.png

4.4 用于DRB的数据PDU

< 38.323-6.2.2.2: PDCP Data PDU format for UM DRBs and AM DRBs>

image-20200314144539958.png

4.5 用于PDCP状态报告的控制PDU

< 38.323-6.2.3.1: PDCP Control PDU format for PDCP status report>

image-20200314145240003.png

4.6 用于interspersed ROHC feedback的控制PDU

image-20200314145938591.png

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的长度。

image-20200314192136327.png

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选用哪种算法。

image-20200317234111243.png

数据经过PDCP头压缩之后,如果PDCP SN为12bit,则头长度为2字节,否则头长度为3字节。

7 重复

如果RRC参数pdcp-Duplication配置了,PDCP实体:

  • 对于SRB
    • 激活PDCP重复
  • 对于DRB
    • 如果指示激活了PDCP重复
      • 激活PDCP重复
    • 如果指示去激活了PDCP重复
      • 去激活PDCP重复

重复PDCP丢弃:

  • 若关联的某个AM RLC实体成功的发送了PDCP data PDU
    • 指示另外一个AM RLC实体丢弃重复的DPCP data PDU
  • 若收到去激活PDCP重复指示
    • 指示第二个RLC实体丢弃所有的重复PDCP data PDU

TS38300-16.1.3

image-20200318222301616.png

如图所示,当无线承载配置了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

你可能感兴趣的:(5GNR PDCP)