You are on page 1of 22

PDCP (Packet data Convergence Protocol)

3gpp Spec: 38.323


• PDCP layer resides above RLC layer
and is responsible for transfer of IP
/RRC packets between RLC layers and
RRC layer and IP layer
• PDCP layer is configured by upper
layers as defined in 38.331
• PDCP sublayer is used for RBs
mapped on DCCH, DTCH, SCCH, and
STCH type of logical channels.
• Each RB (except for SRB0 for Uu
interface) is associated with one
PDCP entity.
• PDCP has no connection to RLC TM
mode

1
PDCP Functions
• Transfer of data (user plane or control plane)
• Maintenance of PDCP SNs
• Header Compression/Decompression
• Integrity Protection/Verification
• Ciphering/Deciphering
• Reordering and In-order delivery
• Duplicate Discard
• Timer based SDU Discard
• Split bearer and DAPS bearer routing

2
PDCP Services for Upper/Lower Layers
Below are Services that PDCP provides to upper layers
• Transfer of user plane data
• Transfer of control plane data
• Header compression
• Ciphering
• Integrity protection

Below are the services that PDCP expects from lower layers
• Acknowledged data transfer service, including indication of successful delivery of
PDCP PDUs
• Unacknowledged data transfer service.

3
PDCP Entities
1. Several PDCP entities may be defined for a UE. Each PDCP
2. Each PDCP entity is carries the data of one radio bearer.

3. Before being processed by PDCP, data is initially subjected to a


‘Sequence Numbering’ procedure.
4. If header compression is enabled, then PDU is subjected to
header compression(only uplane)
5. Then it goes through Integrity/Ciphering
6. For DAPS bearers PDCP entity is configured with two sets of
security and header compression protocols.
7. Finally PDCP header is added
8. And If Split bearer is established, the PDCP routs the packet to
the intended bearer.

4
PDCP Tx.
PDCP Discard
1. PDCP SDU from upper layer stored
in transmission buffer
2. SDU removed on getting ack from
lower layer
3. Discard timer expiry leads to
removal of SDU from transmission
buffer
Header Compression
1. EHC
2. ROHC

Ciphering/Integrity Protection
1. Integrity and authenticity of the data
2. MAC-I calculated over the data using a
secret key and a hash function

Sequence Number handling


1. Out of order message handling
2. Duplicate detection
3. In-order handling
4. Initialized when new RB is created

5
PDCP Rx.
In Order delivery
If the packet arrives in order, it's passed directly
to the upper layer

Out of Order deliver


If a packet arrives out-of-order, PDCP buffers it
and waits for any missing packets before
delivering them in the correct order to the upper
layer.

Reordering Timer
PDCP utilizes a timer mechanism (t-Reordering)
to handle situations where missing packets are
not received within a specific timeframe. If the
timer expires, the window for expected sequence
numbers might be adjusted to account for
potential packet loss.

6
NR vs LTE PDCP

Image Ref: sharetechnote

7
PDCP Status Reporting
PDCP status reporting in LTE is a mechanism that allows the receiver to inform the transmitter about the
reception status of PDCP PDUs, Transmitting PDCP entity sends the report containing a Bitmap indicating
which PDU’s need retransmission by means of FMP(First Missing PDCP SN) in the report. PDCP entity shall
trigger the status report in either of below mentioned condition.

• Upper layer requests a PDCP entity re-establishment


• upper layer requests a PDCP data recovery
• upper layer requests a uplink data switching
• upper layer reconfigures the PDCP entity to release DAPS and daps-SourceRelease is configured

Upon receiving PDCP status report in the downlink , the transmitting PDCP entity shall consider for each
PDCP SDU, if any, with the bit in the bitmap set to '1', or with the associated COUNT value
less than the value of FMC field as successfully delivered, and discard the PDCP SDU

8
PDCP Entity Handling
Below are the five PDCP Entity Handling procedures:

• PDCP entity establishment


• PDCP entity re-establishment
• PDCP entity release
• PDCP entity Suspend
• PDCP entity Reconfiguration

9
PDCP Entity Establishment
What leads to PDCP Entity Establishment?
• Radio Bearer configuration
• SRB addition/modification
• DRB addition/modification
• Multicast MRB addition/modification

When upper layers request a PDCP entity establishment for a radio bearer, when receiving
the first PDCP PDU, and there is not yet a corresponding PDCP entity, the UE shall perform
below steps
• Establish a PDCP entity for the radio bearer
• Set the state variables of the PDCP entity to initial values
• Follow the data transfer related procedures

10
PDCP Entity Re-Establishment
What leads to PDCP Entity Re-Establishment?
• SRB addition/modification
• DRB addition/modification
• Multicast MRB addition/modification

When upper layers request a PDCP entity Re-establishment for a radio bearer, Transmitting PDCP entity performs
below steps
SRB:
• Discard all stored PDCP SDUs and PDCP PDUs. Set state variable TX_NEXT to the initial value.
• Apply the ciphering algorithm and key provided by upper layers during the PDCP entity re-establishment procedure
• Apply the integrity protection algorithm and key provided by upper layers during the PDCP entity re-establishment procedure
UM DRB:
• Reset the ROHC protocol for uplink and start with an IR state in U-mode (as defined in RFC 3095 and RFC 4815) if drb-ContinueROHC is not
configured in TS 38.331
• For each PDCP SDU already associated with a PDCP SN but for which a corresponding PDU has not previously been submitted to lower
layers, perform transmission of the PDCP SDUs in ascending order of the COUNT value associated to the PDCP SDU.
• set state variable TX_NEXT to the initial value.

AM DRB:
• Starting with the latest PDCP SDU that has not received ACK or feedback, perform and send all stored PDCP SDU in order of increasing
COUNT value. 11
PDCP Entity Re-Establishment Contd.
When upper layers request a PDCP entity Re-establishment for a radio bearer, Receiving PDCP entity performs below
steps

SRB:
• Discard all stored PDCP SDUs and PDCP PDUs.
• Stop and reset “t-Reordering “ re-ordering timer if running

UM DRB:
• Deliver all stored PDCP SDUs to the upper layers in ascending order of associated COUNT values after performing header decompression
• Stop and reset “t-Reordering “ re-ordering timer if running

AM DRB:
• Perform header decompression using ROHC for all stored PDCP SDUs (if drb-ContinueROHC is not configured in TS 38.331)
• Reset the ROHC protocol for downlink and start with NC state in U-mode.

12
PDCP Entity Release
What leads to PDCP Entity Release?
• SRB Release
• DRB Release
• MRB Release

When upper layers request a PDCP entity release for a radio bearer, the UE shall perform
below mentioned steps for the radio bearer
• Discard all stored PDCP SDUs and PDUs in the transmitting entities
• For UM DRBs and AM DRBs, deliver the PDCP SDUs stored in the receiving PDCP entity to upper layers in
ascending order of associated COUNT values after performing header decompression, if not decompressed
before
• Release PDCP entity for the radio bearer

13
PDCP Entity Suspend
When upper layers request a PDCP entity suspend, the transmitting PDCP entity shall
• Set TX_NEXT to the initial value
• Discard all stored PDCP PDUs

When upper layers request a PDCP entity suspend, the receiving PDCP entity shall
• Stop and reset re-ordering timer “t-Reordering” if running
• Deliver all stored PDCP SDUs to the upper layers in ascending order of associated COUNT values after
performing header decompression
• Set PDCP state variables like, RX_NEXT and RX_DELIV to the initial value.

14
PDCP Entity Reconfiguration
Applicable only to PDCP entities associated with DAPS- Dual Active Protocol Stack.

When upper layers reconfigure the PDCP entity to configure DAPS, the UE shall:
• Establish a ciphering function for the radio bearer and apply the ciphering algorithm and key provided by upper layers for the ciphering
function
• Establish an integrity protection function for the radio bearer and apply the integrity protection algorithm and key provided by upper
layers for the integrity protection function
• Establish a header compression protocol for the radio bearer and apply the header compression configuration provided by upper
layers for the header compression protocol

When upper layers reconfigure the PDCP entity to release DAPS, the UE shall:
• Release the ciphering function associated to the released RLC entity for the radio bearer
• Release the integrity protection function associated to the released RLC entity for the radio bearer
• Release the header compression protocol associated to the released RLC entity for the radio bearer

15
PDCP Parameters PDCP-Config ::= SEQUENCE {
discardTimer ::= timer that determines how long a PDCP SDU (Service drb SEQUENCE {
Data Unit) should be retained before being discarded if it has not been discardTimer ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms75, ms100, ms150, ms200,
successfully transmitted or acknowledged ms250, ms300, ms500, ms750, ms1500, infinity} OPTIONAL, -- Cond Setup
pdcp-SN-SizeUL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2
pdcp-SN-SizeUL/DL ::= seqeunce number of PDCP SDU pdcp-SN-SizeDL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2
headerCompression CHOICE {
t-Reordering ::= timer used to manage the reordering of out-of-sequence notUsed NULL,
PDCP PDUs (Protocol Data Units) to ensure in-sequence delivery to the rohc SEQUENCE {
maxCID INTEGER (1..16383) DEFAULT 15,
upper layers profiles SEQUENCE {},
drb-ContinueROHC ENUMERATED { true } OPTIONAL -- Need N
moreThanOneRLC ::= Refers to the capability of a single PDCP entity to },
send its PDUs (Protocol Data Units) to more than one RLC (Radio Link uplinkOnlyROHC SEQUENCE {
Control) entity. This is part of the PDCP duplication feature, which maxCID INTEGER (1..16383) DEFAULT 15,
enhances data transmission reliability and is particularly useful for profiles SEQUENCE {
URLLC services profile0x0006 BOOLEAN
},
pdcp-Duplication ::= When PDCP duplication is enabled, a PDCP drb-ContinueROHC ENUMERATED { true } OPTIONAL -- Need N
},},
packet is transmitted to two RLC entities — a Primary RLC entity and a integrityProtection ENUMERATED { enabled } OPTIONAL, -- Cond
Secondary RLC entity. Both entities process the packet independently ConnectedTo5GC1
and transmit the processed packet to the MAC layer. statusReportRequired ENUMERATED { true } OPTIONAL, -- Cond Rlc-AM-UM
outOfOrderDelivery ENUMERATED { true } OPTIONAL -- Need R
ul-DataSplitThreshold ::= defines the threshold for splitting UL (Uplink) } OPTIONAL, -- Cond DRB
data across multiple PDCP entities moreThanOneRLC SEQUENCE {
primaryPath SEQUENCE {
outOfOrderDelivery ::= Refers to the ability of the PDCP layer to deliver cellGroup CellGroupId OPTIONAL, -- Need R
logicalChannel LogicalChannelIdentity OPTIONAL -- Need R
data packets to the upper layers in a different order than they were },
received ul-DataSplitThreshold UL-DataSplitThreshold OPTIONAL, -- Cond SplitBearer
pdcp-Duplication BOOLEAN OPTIONAL -- Need R
statusReportRequired ::= Refers to the need for a PDCP (Packet Data } OPTIONAL, -- Cond MoreThanOneRLC
Convergence Protocol) status report
t-Reordering ENUMERATED { 16
PDCP PDU Format
PDCP consists for two types of PDU that is Data PDU and Control PDU, Size of PDCP SDU and PDCP control PDU are maximum
9000 bytes

Data PDU: PDCP Data PDU is used to convey one or more of followings in addition to the PDU header:
• user plane data
• control plane data
• a MAC-I

Control PDU: The PDCP Control PDU is used to convey one of followings in addition to the PDU header:
• a PDCP status report
• an interspersed ROHC feedback

17
PDCP Data PDU Format SRB
There is no difference in PDCP PDU Format for SRB in LTE and NR except
the length of Sequence number

PDCP SN: The length of the PDCP SN is configured by upper layers


depending on RLC SN

Data: This field includes one of the followings:


• Uncompressed PDCP SDU (user plane data, or control plane data)
• Compressed PDCP SDU (user plane data only)

MAC-I: This field carries a message authentication code and Length is 32bits.
For SRBs, the MAC-I field is always present. If integrity protection is not
configured, the MAC-I field is still present but should be padded with
padding bits set to 0. For DRBs, the MAC-I field is present only when the DRB
is configured with integrity protection.

18
PDCP Data PDU Format DRB

PDCP Data PDU for DRBs with 18 bits PDCP SN PDCP Data PDU for DRBs with 18 bits PDCP SN

D/C will be 0 for Control and 1 for data PDU


19
PDCP Control PDU Format
PDU Type: This field indicates the type of control information included
in the corresponding PDCP Control PDU.

FMC: First Missing COUNT. This field indicates the COUNT value of the
first missing PDCP SDU within the reordering window, i.e. RX_DELIV.

Bitmap: The length of the bitmap field can be 0.


This field indicates which SDUs are missing and which SDUs are correctly
received in the receiving PDCP entity. The bit position of Nth bit in the
Bitmap is N, i.e., the bit position of the first bit in the Bitmap is 1.

Interspersed ROHC feedback: This field contains one ROHC packet with
only feedback

20
PDCP Constants & Timers
Window_Size: This constant indicates the size of the reordering window. The
value equals to 2^[pdcp-SN-SizeDL] – 1

discardTimer: This timer is configured only for DRBs. The duration of the timer
is configured by upper layers TS 38.331 [3]. In the transmitter, a new timer is
started upon reception of an SDU from upper layer.

t-Reordering: The duration of the timer is configured by upper layers TS


38.331 [3], except for the case of NR sidelink communication. For NR sidelink
communication, the t-Reordering timer is determined by the UE
implementation. This timer is used to detect loss of PDCP Data PDUs as
specified in clause 5.2.2. If t-Reordering is running, t-Reordering shall not be
started additionally, i.e. only one t-Reordering per receiving PDCP entity is
running at a given time.

21
PDCP State Variables
TX_NEXT: This state variable indicates the COUNT value of the next PDCP SDU to be transmitted. The initial value is 0, except for
SRBs configured with state variables continuation.

RX_NEXT: This state variable indicates the COUNT value of the next PDCP SDU expected to be received. The initial value is 0,
except for sidelink broadcast and groupcast, and for SRBs configured with state variables continuation. For NR sidelink
communication for broadcast and groupcast, the initial value of the SN part of RX_NEXT is (x +1) modulo (2[sl-PDCP-SNSize]),
where x is the SN of the first received PDCP Data PDU.

RX_DELIV: This state variable indicates the COUNT value of the first PDCP SDU not delivered to the upper layers, but still waited
for. The initial value is 0, except for sidelink broadcast and groupcast, and for SRBs configured with state variables continuation.
For NR sidelink communication for broadcast and groupcast, the initial value of the SN part of RX_DELIV is (x – 0.5 × 2[sl-PDCP-SN-
Size–1]) modulo (2[sl-PDCP-SN-Size]), where x is the SN of the first received PDCP Data PDU.

RX_REORD: This state variable indicates the COUNT value following the COUNT value associated with the PDCP Data PDU which
triggered t-Reordering.

22

You might also like