5 Procedures
38.3233GPPNRPacket Data Convergence Protocol (PDCP) specificationRelease 17TS
5.1 PDCP entity handling
5.1.1 PDCP entity establishment
When upper layers request a PDCP entity establishment for a radio bearer for Uu or PC5 interface; or for NR sidelink communication for groupcast and broadcast or for sidelink SRB4, when receiving the first PDCP PDU, and there is not yet a corresponding PDCP entity, the UE shall:
– establish a PDCP entity for the radio bearer;
– set the state variables of the PDCP entity to initial values;
– follow the procedures in clause 5.2.
NOTE: The receiving PDCP entity of sidelink SRB0 and sidelink SRB1 is established same as NR sidelink groupcast and broadcast.
5.1.2 PDCP entity re-establishment
When upper layers request a PDCP entity re-establishment, the UE shall additionally perform once the procedures described in this clause for Uu or PC5 interface. After performing the procedures in this clause, the UE shall follow the procedures in clause 5.2.
When upper layers request a PDCP entity re-establishment, the transmitting PDCP entity shall:
– for UM DRBs and AM DRBs, reset the ROHC protocol for uplink and start with an IR state in U-mode (as defined in RFC 3095 [8] and RFC 4815 [9]) if drb-ContinueROHC is not configured in TS 38.331 [3];
– for UM DRBs and AM DRBs, reset the EHC protocol for uplink if drb-ContinueEHC-UL is not configured in TS 38.331 [3];
– for AM DRBs, reset the UDC compression buffer to all zeros and prefill the dictionary if drb-ContinueUDC is not configured in TS 38.331 [3];
– for SRBs and UM DRBs, set TX_NEXT to the initial value;
– for SRBs, discard all stored PDCP SDUs and PDCP PDUs;
– 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;
– for UM DRBs, for each PDCP SDU already associated with a PDCP SN but for which a corresponding PDU has not previously been submitted to lower layers, and;
– for AM DRBs for Uu interface whose PDCP entities were suspended, from the first PDCP SDU for which the successful delivery of the corresponding PDCP Data PDU has not been confirmed by lower layers, for each PDCP SDU already associated with a PDCP SN:
– consider the PDCP SDUs as received from upper layer;
– perform transmission of the PDCP SDUs in ascending order of the COUNT value associated to the PDCP SDU prior to the PDCP re-establishment without restarting the discardTimer, as specified in clause 5.2.1;
– for AM DRBs whose PDCP entities were not suspended, from the first PDCP SDU for which the successful delivery of the corresponding PDCP Data PDU has not been confirmed by lower layers, perform retransmission or transmission of all the PDCP SDUs already associated with PDCP SNs in ascending order of the COUNT values associated to the PDCP SDU prior to the PDCP entity re-establishment as specified below:
– perform header compression of the PDCP SDU using ROHC as specified in the clause 5.7.4 and/or using EHC as specified in the clause 5.12.4;
– If drb-ContinueUDC is configured and if the PDCP SDU has been compressed before:
– submit the PDCP SDU previously compressed to integrity protection and ciphering function;
– else:
– perform uplink data compression of the PDCP SDU as specified in clause 5.14.4, and submit the PDCP SDU to integrity protection and ciphering function;
– perform integrity protection and ciphering of the PDCP SDU using the COUNT value associated with this PDCP SDU as specified in the clause 5.9 and 5.8;
– submit the resulting PDCP Data PDU to lower layer, as specified in clause 5.2.1.
When upper layers request a PDCP entity re-establishment, the receiving PDCP entity shall:
– process the PDCP Data PDUs that are received from lower layers due to the re-establishment of the lower layers, as specified in the clause 5.2.2.1;
– for SRBs, discard all stored PDCP SDUs and PDCP PDUs;
– for SRBs, UM DRBs and UM MRBs, if t-Reordering is running:
– stop and reset t-Reordering;
– for UM DRBs and UM MRBs, deliver all stored PDCP SDUs to the upper layers in ascending order of associated COUNT values after performing header decompression;
– for AM DRBs and AM MRBs for Uu interface, perform header decompression using ROHC for all stored PDCP SDUs if drb-ContinueROHC is not configured in TS 38.331 [3];
– for AM DRBs for PC5 interface, perform header decompression using ROHC for all stored PDCP IP SDUs;
– for AM DRBs and AM MRBs for Uu interface, perform header decompression using EHC for all stored PDCP SDUs if drb-ContinueEHC-DL is not configured in TS 38.331 [3];
– for UM DRBs, AM DRBs, UM MRBs and AM MRBs, reset the ROHC protocol for downlink and start with NC state in U-mode (as defined in RFC 3095 [8] and RFC 4815 [9]) if drb-ContinueROHC is not configured in TS 38.331 [3];
– for UM DRBs, AM DRBs, UM MRBs and AM MRBs, reset the EHC protocol for downlink if drb-ContinueEHC-DL is not configured in TS 38.331 [3];
– for SRBs, UM DRBs and UM MRBs, set RX_NEXT and RX_DELIV 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.
NOTE: After PDCP re-establishment on a sidelink SRB/DRB, UE determines when to transmit and receive with the new key and discard the old key as specified in TS 33.536 [14].
5.1.3 PDCP entity release
When upper layers request a PDCP entity release for a radio bearer for Uu or PC5 interface, the UE shall:
– discard all stored PDCP SDUs and PDCP PDUs in the transmitting PDCP entity;
– for UM DRBs, AM DRBs, UM MRBs and AM MRBs, 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 the PDCP entity for the radio bearer.
NOTE: For NR sidelink communication for groupcast and broadcast or for sidelink SRB4, the receiving PDCP entity release for an SLRB is up to UE implementation.
5.1.4 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:
– if t-Reordering is running:
– stop and reset t-Reordering;
– deliver all stored PDCP SDUs to the upper layers in ascending order of associated COUNT values after performing header decompression;
– set RX_NEXT and RX_DELIV to the initial value.
5.1.5 PDCP entity reconfiguration
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.
NOTE 1: The state variables which control the transmission and reception operation should not be reset, and the timers including t-Reordering and discardTimer keep running during PDCP entity reconfiguration procedure.
NOTE 2: Before releasing the header compression protocol associated to the released RLC entity, how to handle all stored PDCP SDUs received from the released RLC entity is left up to UE implementation.
NOTE 3: No special handling for the header compression protocol is defined to avoid potential security issue (e.g. keystream reuse) for DAPS handover with no security key change.
5.2 Data transfer
5.2.1 Transmit operation
At reception of a PDCP SDU from upper layers, the transmitting PDCP entity shall:
– start the discardTimer associated with this PDCP SDU (if configured).
For a PDCP SDU received from upper layers, the transmitting PDCP entity shall:
– associate the COUNT value corresponding to TX_NEXT to this PDCP SDU;
NOTE 1: Associating more than half of the PDCP SN space of contiguous PDCP SDUs with PDCP SNs, when e.g., the PDCP SDUs are discarded or transmitted without acknowledgement, may cause HFN desynchronization problem. How to prevent HFN desynchronization problem is left up to UE implementation.
– perform header compression of the PDCP SDU using ROHC as specified in the clause 5.7.4 and/or using EHC as specified in the clause 5.12.4;
– perform uplink data compression of the PDCP SDU as specified in clause 5.14.4;
– perform integrity protection, and ciphering using the TX_NEXT as specified in the clause 5.9 and 5.8, respectively;
– set the PDCP SN of the PDCP Data PDU to TX_NEXT modulo 2[pdcp-SN-SizeUL];
– increment TX_NEXT by one;
– submit the resulting PDCP Data PDU to lower layer as specified below.
When submitting a PDCP PDU to lower layer, the transmitting PDCP entity shall:
– if the transmitting PDCP entity is associated with one RLC entity:
– submit the PDCP PDU to the associated RLC entity;
– else, if the transmitting PDCP entity is associated with at least two RLC entities:
– if the PDCP duplication is activated for the RB:
– if the PDCP PDU is a PDCP Data PDU:
– duplicate the PDCP Data PDU and submit the PDCP Data PDU to the associated RLC entities activated for PDCP duplication;
– else:
– submit the PDCP Control PDU to the primary RLC entity;
– else (i.e. the PDCP duplication is deactivated for the RB or the RB is a DAPS bearer):
– if the split secondary RLC entity is configured; and
– if the total amount of PDCP data volume and RLC data volume pending for initial transmission (as specified in TS 38.322 [5]) in the primary RLC entity and the split secondary RLC entity is equal to or larger than ul-DataSplitThreshold:
– submit the PDCP PDU to either the primary RLC entity or the split secondary RLC entity;
– else, if the transmitting PDCP entity is associated with the DAPS bearer:
– if the uplink data switching has not been requested:
– submit the PDCP PDU to the RLC entity associated with the source cell;
– else:
– if the PDCP PDU is a PDCP Data PDU:
– submit the PDCP Data PDU to the RLC entity associated with the target cell;
– else:
– if the PDCP Control PDU is associated with source cell:
– submit the PDCP Control PDU to the RLC entity associated with the source cell;
– else:
– submit the PDCP Control PDU to the RLC entity associated with the target cell;
– else:
– submit the PDCP PDU to the primary RLC entity.
NOTE 2: If the transmitting PDCP entity is associated with two RLC entities, the UE should minimize the amount of PDCP PDUs submitted to lower layers before receiving request from lower layers and minimize the PDCP SN gap between PDCP PDUs submitted to two associated RLC entities to minimize PDCP reordering delay in the receiving PDCP entity.
5.2.2 Receive operation
5.2.2.1 Actions when a PDCP Data PDU is received from lower layers
In this clause, following definitions are used:
– HFN(State Variable): the HFN part (i.e. the number of most significant bits equal to HFN length) of the State Variable;
– SN(State Variable): the SN part (i.e. the number of least significant bits equal to PDCP SN length) of the State Variable;
– RCVD_SN: the PDCP SN of the received PDCP Data PDU, included in the PDU header;
– RCVD_HFN: the HFN of the received PDCP Data PDU, calculated by the receiving PDCP entity;
– RCVD_COUNT: the COUNT of the received PDCP Data PDU = [RCVD_HFN, RCVD_SN].
At reception of a PDCP Data PDU from lower layers, the receiving PDCP entity shall determine the COUNT value of the received PDCP Data PDU, i.e. RCVD_COUNT, as follows:
– if RCVD_SN < SN(RX_DELIV) – Window_Size:
– RCVD_HFN = HFN(RX_DELIV) + 1.
– else if RCVD_SN >= SN(RX_DELIV) + Window_Size:
– RCVD_HFN = HFN(RX_DELIV) – 1.
– else:
– RCVD_HFN = HFN(RX_DELIV);
– RCVD_COUNT = [RCVD_HFN, RCVD_SN].
After determining the COUNT value of the received PDCP Data PDU = RCVD_COUNT, the receiving PDCP entity shall:
– perform deciphering and integrity verification of the PDCP Data PDU using COUNT = RCVD_COUNT;
– if integrity verification fails:
– indicate the integrity verification failure to upper layer;
– discard the PDCP Data PDU and consider it as not received;
– if RCVD_COUNT < RX_DELIV; or
– if the PDCP Data PDU with COUNT = RCVD_COUNT has been received before:
– discard the PDCP Data PDU;
If the received PDCP Data PDU with COUNT value = RCVD_COUNT is not discarded above, the receiving PDCP entity shall:
– store the resulting PDCP SDU in the reception buffer;
– if RCVD_COUNT >= RX_NEXT:
– update RX_NEXT to RCVD_COUNT + 1.
– if outOfOrderDelivery is configured:
– deliver the resulting PDCP SDU to upper layers after performing header decompression using EHC.
– if RCVD_COUNT = RX_DELIV:
– deliver to upper layers in ascending order of the associated COUNT value after performing header decompression, if not decompressed before;
– all stored PDCP SDU(s) with consecutively associated COUNT value(s) starting from COUNT = RX_DELIV;
– update RX_DELIV to the COUNT value of the first PDCP SDU which has not been delivered to upper layers, with COUNT value > RX_DELIV;
– if t-Reordering is running, and if RX_DELIV >= RX_REORD:
– stop and reset t-Reordering.
– if t-Reordering is not running (includes the case when t-Reordering is stopped due to actions above), and RX_DELIV < RX_NEXT:
– update RX_REORD to RX_NEXT;
– start t-Reordering.
5.2.2.2 Actions when a t-Reordering expires
When t-Reordering expires, the receiving PDCP entity shall:
– deliver to upper layers in ascending order of the associated COUNT value after performing header decompression, if not decompressed before:
– all stored PDCP SDU(s) with associated COUNT value(s) < RX_REORD;
– all stored PDCP SDU(s) with consecutively associated COUNT value(s) starting from RX_REORD;
– update RX_DELIV to the COUNT value of the first PDCP SDU which has not been delivered to upper layers, with COUNT value >= RX_REORD;
– if RX_DELIV < RX_NEXT:
– update RX_REORD to RX_NEXT;
– start t-Reordering.
5.2.2.3 Actions when the value of t-Reordering is reconfigured
When the value of the t-Reordering is reconfigured by upper layers while the t-Reordering is running, the receiving PDCP entity shall:
– update RX_REORD to RX_NEXT;
– stop and restart t-Reordering.
5.2.3 Sidelink transmit operation
For sidelink transmission of the SLRB, the UE shall follow the procedures in clause 5.2.1 with following modification:
– perform the header compression using ROHC as specified in clause 5.7.4, if SDU Type is IP;
– set the PDCP SN of the PDCP Data PDU to TX_NEXT modulo 2[sl-PDCP-SN-Size].
5.2.4 Sidelink receive operation
For sidelink reception of the SLRB, the UE shall follow the procedures in clause 5.2.2 with following modification:
– perform the header decompression using ROHC as specified in clause 5.7.5, if SDU Type is IP.
NOTE: For reception of sidelink SRBs except sidelink SRB3, the UE may deliver the PDCP SDU to the upper layer along with an indication whether it is PC5-S message or sidelink discovery message.
5.3 SDU discard
When the discardTimer expires for a PDCP SDU, or the successful delivery of a PDCP SDU is confirmed by PDCP status report, the transmitting PDCP entity shall discard the PDCP SDU along with the corresponding PDCP Data PDU. If the corresponding PDCP Data PDU has already been submitted to lower layers, the discard is indicated to lower layers.
For SRBs, when upper layers request a PDCP SDU discard, the PDCP entity shall discard all stored PDCP SDUs and PDCP PDUs.
NOTE: Discarding a PDCP SDU already associated with a PDCP SN causes a SN gap in the transmitted PDCP Data PDUs, which increases PDCP reordering delay in the receiving PDCP entity. It is up to UE implementation how to minimize SN gap after SDU discard.
5.4 Status reporting
5.4.1 Transmit operation
For AM DRBs configured by upper layers to send a PDCP status report in the uplink (statusReportRequired in TS 38.331 [3]), the receiving PDCP entity shall trigger a PDCP status report when:
– 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 in TS 38.331 [3].
For UM DRBs configured by upper layers to send a PDCP status report in the uplink (statusReportRequired in TS 38.331 [3]), the receiving PDCP entity shall trigger a PDCP status report when:
– upper layer requests a uplink data switching.
For AM DRBs in the sidelink, the receiving PDCP entity shall trigger a PDCP status report when:
– upper layer requests a PDCP entity re-establishment.
For AM MRBs configured by upper layers to send a PDCP status report in the uplink (statusReportRequired in TS 38.331 [3]), the receiving PDCP entity shall trigger a PDCP status report when:
– upper layer requests a PDCP entity re-establishment;
– upper layer requests a PDCP data recovery.
If a PDCP status report is triggered, the receiving PDCP entity shall:
– compile a PDCP status report as indicated below by:
– setting the FMC field to RX_DELIV;
– if RX_DELIV < RX_NEXT:
– allocating a Bitmap field of length in bits equal to the number of COUNTs from and not including the first missing PDCP SDU up to and including the last out-of-sequence PDCP SDUs, rounded up to the next multiple of 8, or up to and including a PDCP SDU for which the resulting PDCP Control PDU size is equal to 9000 bytes, whichever comes first;
– setting in the bitmap field as ‘0’ for all PDCP SDUs that have not been received, and optionally PDCP SDUs for which decompression have failed;
– setting in the bitmap field as ‘1’ for all PDCP SDUs that have been received;
– submit the PDCP status report to lower layers as the first PDCP PDU for transmission via the transmitting PDCP entity as specified in clause 5.2.1 for Uu interface and in clause 5.2.3 for PC5 interface.
5.4.2 Receive operation
For AM DRBs, when a PDCP status report is received in the downlink or in the sidelink, 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 as specified in clause 5.3.
5.5 Data recovery
For AM DRBs, when upper layers request a PDCP data recovery for a radio bearer, the transmitting PDCP entity shall:
– perform retransmission of all the PDCP Data PDUs previously submitted to re-established or released AM RLC entities in ascending order of the associated COUNT values for which the successful delivery has not been confirmed by lower layers, following the data submission procedure in clause 5.2.1.
After performing the above procedures, the transmitting PDCP entity shall follow the procedures in clause 5.2.1.
5.6 Data volume calculation
For the purpose of MAC buffer status reporting, the transmitting PDCP entity shall consider the following as PDCP data volume:
– the PDCP SDUs for which no PDCP Data PDUs have been constructed;
– the PDCP Data PDUs that have not been submitted to lower layers;
– the PDCP Control PDUs;
– for AM DRBs, the PDCP SDUs to be retransmitted according to clause 5.1.2;
– for AM DRBs, the PDCP Data PDUs to be retransmitted according to clause 5.5.
If the transmitting PDCP entity is associated with at least two RLC entities, when indicating the PDCP data volume to a MAC entity for BSR triggering and Buffer Size calculation (as specified in TS 38.321 [4] and TS 36.321 [12]), the transmitting PDCP entity shall:
– if the PDCP duplication is activated for the RB:
– indicate the PDCP data volume to the MAC entity associated with the primary RLC entity;
– indicate the PDCP data volume excluding the PDCP Control PDU to the MAC entity associated with the RLC entity other than the primary RLC entity activated for PDCP duplication;
– indicate the PDCP data volume as 0 to the MAC entity associated with RLC entity deactivated for PDCP duplication;
– else (i.e. the PDCP duplication is deactivated for the RB or the RB is a DAPS bearer):
– if the split secondary RLC entity is configured; and
– if the total amount of PDCP data volume and RLC data volume pending for initial transmission (as specified in TS 38.322 [5]) in the primary RLC entity and the split secondary RLC entity is equal to or larger than ul-DataSplitThreshold:
– indicate the PDCP data volume to both the MAC entity associated with the primary RLC entity and the MAC entity associated with the split secondary RLC entity;
– indicate the PDCP data volume as 0 to the MAC entity associated with RLC entity other than the primary RLC entity and the split secondary RLC entity;
– else, if the transmitting PDCP entity is associated with the DAPS bearer:
– if the uplink data switching has not been requested:
– indicate the PDCP data volume to the MAC entity associated with the source cell;
– else:
– indicate the PDCP data volume excluding the PDCP Control PDU for interspersed ROHC feedback associated with the source cell to the MAC entity associated with the target cell;
– indicate the PDCP data volume of PDCP Control PDU for interspersed ROHC feedback associated with the source cell to the MAC entity associated with the source cell;
– else:
– indicate the PDCP data volume to the MAC entity associated with the primary RLC entity;
– indicate the PDCP data volume as 0 to the MAC entity associated with the RLC entity other than the primary RLC entity.
5.7 Robust header compression and decompression
5.7.1 Supported header compression protocols and profiles
The ROHC protocol is based on the Robust Header Compression (ROHC) framework defined in RFC 5795 [7]. There are multiple ROHC algorithms, called profiles, defined for the ROHC framework. Each profile is specific to the particular network layer, transport layer or upper layer protocol combination e.g. TCP/IP and RTP/UDP/IP.
The detailed definition of the ROHC channel is specified as part of the ROHC framework defined in RFC 5795 [7]. This includes how to multiplex different flows (header compressed or not) over the ROHC channel, as well as how to associate a specific IP flow with a specific context state during initialization of the compression algorithm for that flow.
The implementation of the functionality of the ROHC framework and of the functionality of the supported header compression profiles is not covered in this specification.
In this version of the specification the support of the following profiles is described:
Table 5.7.1-1: Supported ROHC protocols and profiles
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 |
5.7.2 Configuration of ROHC
PDCP entities associated with DRBs and MRBs can be configured by upper layers TS 38.331 [3] to use ROHC. Each PDCP entity carrying user plane data may be configured to use ROHC. PDCP entities associated with sidelink DRBs can be configured to use ROHC for IP SDUs. For DRBs and MRBs other than DAPS bearers, the PDCP entity uses at most one ROHC compressor instance and at most one ROHC decompressor instance. For DAPS bearers, the PDCP entity uses at most one ROHC compressor instance (i.e. use the ROHC compressor instance for source cell before uplink data switching, and use the ROHC compressor instance for target cell after uplink data switching) and at most two ROHC decompressor instances.
5.7.3 Protocol parameters
RFC 5795 [7] has configuration parameters that are mandatory and that must be configured by upper layers between compressor and decompressor peers ; these parameters define the ROHC channel. The ROHC channel is a unidirectional channel, i.e. if rohc is configured there is one channel for the downlink and one for the uplink, and if uplinkOnlyROHC is configured there is only one channel for the uplink. There is thus one set of parameters for each channel, and if rohc is configured the same values shall be used for both channels belonging to the same PDCP entity.
These parameters are categorized in two different groups, as defined below:
– M: Mandatory and configured by upper layers;
– N/A: Not used in this specification.
The usage and definition of the parameters shall be as specified below.
– MAX_CID (M): This is the maximum CID value that can be used. One CID value shall always be reserved for uncompressed flows. The parameter MAX_CID is configured by upper layers (maxCID in TS 38.331 [3]);
– LARGE_CIDS: This value is not configured by upper layers, but rather it is inferred from the configured value of MAX_CID according to the following rule:
– If MAX_CID > 15 then LARGE_CIDS = TRUE else LARGE_CIDS = FALSE;
– PROFILES (M): Profiles are used to define which profiles are allowed to be used by the UE. The list of supported profiles is described in clause 5.7.1. The parameter PROFILES is configured by upper layers (profiles for uplink and downlink, sl-RoHC-Profiles in SidelinkPreconfigNR for sidelink in TS 38.331 [3]);
– FEEDBACK_FOR (N/A): This is a reference to the channel in the opposite direction between two compression endpoints and indicates to what channel any feedback sent refers to. Feedback received on one ROHC channel for this PDCP entity shall always refer to the ROHC channel in the opposite direction for this same PDCP entity;
– MRRU (N/A): ROHC segmentation is not used.
5.7.4 Header compression using ROHC
If ROHC is configured, the ROHC protocol generates two types of output packets:
– ROHC compressed packets, each associated with one PDCP SDU;
– standalone packets not associated with a PDCP SDU, i.e. interspersed ROHC feedback.
A ROHC compressed packet is associated with the same PDCP SN and COUNT value as the related PDCP SDU. The header compression is not applicable to the SDAP header and the SDAP Control PDU if included in the PDCP SDU.
For DAPS bearers, the PDCP entity shall perform the header compression for the PDCP SDU using the ROHC protocol either configured for the source cell or configured for the target cell, based on to which cell the PDCP SDU is transmitted.
Interspersed ROHC feedback are not associated with a PDCP SDU. They are not associated with a PDCP SN and are not ciphered.
NOTE 1: If the MAX_CID number of ROHC contexts are already established for the compressed flows and a new IP flow does not match any established ROHC context, the compressor should associate the new IP flow with one of the ROHC CIDs allocated for the existing compressed flows or send PDCP SDUs belonging to the IP flow as uncompressed packet.
NOTE 2: For downlink, the ROHC protocol of the target cell should maintain the IR state if operating in U-mode and O-mode during DAPS handover before release of source cell.
5.7.5 Header decompression using ROHC
If ROHC is configured by upper layers for PDCP entities associated with user plane data, the PDCP Data PDUs are decompressed by the ROHC protocol after performing deciphering as explained in clause 5.8. The header decompression is not applicable to the SDAP header and the SDAP Control PDU if included in the PDCP Data PDU.
For DAPS bearers, the PDCP entity shall perform the header decompression for the PDCP SDU using the ROHC protocol either configured for the source cell or configured for the target cell, based on from which cell the PDCP SDU is received.
5.7.6 PDCP Control PDU for interspersed ROHC feedback
5.7.6.1 Transmit Operation
When an interspersed ROHC feedback is generated by the ROHC protocol, the transmitting PDCP entity shall:
– submit to lower layers the corresponding PDCP Control PDU as specified in clause 6.2.3.2 i.e. without associating a PDCP SN, nor performing ciphering, as specified in clause 5.2.1.
5.7.6.2 Receive Operation
At reception of a PDCP Control PDU for interspersed ROHC feedback from lower layers, the receiving PDCP entity shall:
– deliver the corresponding interspersed ROHC feedback to the associated ROHC protocol without performing deciphering.
5.8 Ciphering and deciphering
The ciphering function includes both ciphering and deciphering and is performed in PDCP, if configured. The data unit that is ciphered is the MAC-I (see clause 6.3.4) and the data part of the PDCP Data PDU (see clause 6.3.3) except the SDAP header and the SDAP Control PDU if included in the PDCP SDU. The ciphering is not applicable to PDCP Control PDUs.
For downlink and uplink, the ciphering algorithm and key to be used by the PDCP entity are configured by upper layers TS 38.331 [3] and the ciphering method shall be applied as specified in TS 33.501 [6].
The ciphering function is activated/suspended/resumed by upper layers TS 38.331 [3]. When security is activated and not suspended, the ciphering function shall be applied to all PDCP Data PDUs indicated by upper layers TS 38.331 [3] for the downlink and the uplink, respectively.
For DAPS bearers, the PDCP entity shall perform the ciphering or deciphering for the PDCP SDU using the ciphering algorithm and key either configured for the source cell or configured for the target cell, based on to/from which cell the PDCP SDU is transmitted/received.
For downlink and uplink ciphering and deciphering, the parameters that are required by PDCP for ciphering are defined in TS 33.501 [6] and are input to the ciphering algorithm. The required inputs to the ciphering function include the COUNT value, and DIRECTION (direction of the transmission: set as specified in TS 33.501 [6]). The parameters required by PDCP which are provided by upper layers TS 38.331 [3] are listed below:
– BEARER (defined as the radio bearer identifier in TS 33.501 [6]. It will use the value RB identity –1 as in TS 38.331 [3]);
– KEY (the ciphering keys for the control plane and for the user plane are KRRCenc and KUPenc, respectively).
For NR sidelink communication, the ciphering algorithm and key to be used by the PDCP entity are configured by upper layers as specified in TS 24.587 [16] and the ciphering method shall be applied as specified in TS 33.536 [14].
For NR sidelink communication, the ciphering function is activated for sidelink SRBs (except for SL-SRB0) and/or sidelink DRBs for a PC5 unicast link by upper layers, as specified in TS 38.331 [3]. When security is activated for sidelink SRBs, the ciphering function shall be applied to all PDCP Data PDUs (except for carrying Direct Security Mode Command message as specified in TS 33.536 [14]) for the sidelink SRBs which belong to the PC5 unicast link. When security is activated for sidelink DRBs, the ciphering function shall be applied to all PDCP Data PDUs for the sidelink DRBs which belong to the PC5 unicast link.
For NR sidelink communication, the ciphering and deciphering function as specified in TS 33.536 [14] is applied with KEY (NRPEK), COUNT, BEARER (LSB 5 bits of LCID as specified in TS 38.321 [4]) and DIRECTION (which value shall be set is specified in TS 33.536 [14]) as input.
The ciphering and deciphering are not applied to MRBs and sidelink SRB4.
5.9 Integrity protection and verification
The integrity protection function includes both integrity protection and integrity verification and is performed in PDCP, if configured. The data unit that is integrity protected is the PDU header and the data part of the PDU before ciphering. The integrity protection is always applied to PDCP Data PDUs of SRBs. The integrity protection is applied to sidelink SRB1, SRB2 and SRB3. The integrity protection is applied to PDCP Data PDUs of DRBs (including sidelink DRBs for unicast) for which integrity protection is configured. The integrity protection is not applicable to PDCP Control PDUs.
For downlink and uplink, the integrity protection algorithm and key to be used by the PDCP entity are configured by upper layers TS 38.331 [3] and the integrity protection method shall be applied as specified in TS 33.501 [6] for NR and in TS 33.401 [17] for E-UTRA/EPC.
The integrity protection function is activated/suspended/resumed by upper layers TS 38.331 [3]. When security is activated and not suspended, the integrity protection function shall be applied to all PDUs including and subsequent to the PDU indicated by upper layers TS 38.331 [3] for the downlink and the uplink, respectively.
NOTE 1: As the RRC message which activates the integrity protection function is itself integrity protected with the configuration included in this RRC message, this message needs first be decoded by RRC before the integrity protection verification could be performed for the PDU in which the message was received.
NOTE 2: As the PC5-S message which activates the integrity protection function is itself integrity protected with the configuration included in this PC5-S message, this message needs first be decoded by upper layer before the integrity protection verification could be performed for the PDU in which the message was received.
For DAPS bearers, the PDCP entity shall perform the integrity protection or verification for the PDCP SDU using the integrity protection algorithm and key either configured for the source cell or configured for the target cell, based on to/from which cell the PDCP SDU is transmitted/received.
For downlink and uplink integrity protection and verification, the parameters that are required by PDCP for integrity protection are defined in TS 33.501 [6] or TS 33.401 [17] and are input to the integrity protection algorithm. The required inputs to the integrity protection function include the COUNT value, and DIRECTION (direction of the transmission: set as specified in TS 33.501 [6]) or TS 33.401 [17]. The parameters required by PDCP which are provided by upper layers TS 38.331 [3] are listed below:
– BEARER (defined as the radio bearer identifier in TS 33.501 [6] or TS 33.401 [17]. It will use the value RB identity –1 as in TS 38.331 [3]);
– KEY (the integrity protection keys for the control plane and for the user plane are KRRCint and KUPint, respectively).
For NR sidelink communication, the integrity protection algorithm and key to be used by the PDCP entity are configured by upper layers TS 24.587 [16] and the integrity protection method shall be applied as specified in TS 33.536 [14].
For NR sidelink communication, the integrity protection function is activated for sidelink SRBs and/or sidelink DRBs for a PC5 unicast link by upper layers, as specified in TS 38.331 [3]. When security is activated for sidelink SRBs, the integrity protection function shall be applied to all PDUs including and subsequent to the PDU for the sidelink SRBs which belong to the PC5 unicast link. When security is activated for sidelink DRBs, the integrity protection function shall be applied to all PDUs including and subsequent to the PDU for the sidelink DRBs which belong to the PC5 unicast link.
For the SLRB that needs integrity protection and verification, the parameters that are required by PDCP for integrity protection are defined in TS 33.536 [14] and are input to the integrity protection algorithm. The required inputs to the integrity protection function include the KEY (NRPIK), COUNT, BEARER (LSB 5 bits of LCID as specified in TS 38.321 [4]) and DIRECTION (which value shall be set is specified in TS 33.536 [14]).
At transmission, the UE computes the value of the MAC-I field and at reception it verifies the integrity of the PDCP Data PDU by calculating the X-MAC based on the input parameters as specified above. If the calculated X-MAC corresponds to the received MAC-I, integrity protection is verified successfully.
The integrity protection and verification are not applied to MRBs and sidelink SRB4.
5.10 Handling of unknown, unforeseen, and erroneous protocol data
When a PDCP PDU that contains reserved or invalid values is received, the receiving PDCP entity shall:
– discard the received PDU.
NOTE: For NR sidelink communication for unicast, the invalid values include the invalid value of KNRP-sess ID.
5.11 PDCP duplication
5.11.1 Activation/Deactivation of PDCP duplication
For the PDCP entity configured with pdcp-Duplication, the transmitting PDCP entity shall:
– for SRBs:
– activate the PDCP duplication;
– for DRBs:
– if the activation of PDCP duplication is indicated for the DRB:
– activate the PDCP duplication for the DRB;
– if the activation of PDCP duplication is indicated for at least one associated RLC entities:
– activate the PDCP duplication for the indicated associated RLC entities;
– activate the PDCP duplication for the DRB;
– if the deactivation of PDCP duplication is indicated for the DRB:
– deactivate the PDCP duplication for the DRB;
– if the deactivation of PDCP duplication is indicated for at least one associated RLC entities:
– deactivate the PDCP duplication for the indicated associated RLC entities;
– if all associated RLC entities other than the primary RLC entity are deactivated for PDCP duplication:
– deactivate the PDCP duplication for the DRB.
5.11.2 Duplicate PDU discard
For the PDCP entity configured with pdcp-Duplication, the transmitting PDCP entity shall:
– if the successful delivery of a PDCP Data PDU is confirmed by one of the associated AM RLC entities:
– indicate to the other AM RLC entities to discard the duplicated PDCP Data PDU;
– if the deactivation of PDCP duplication is indicated for the DRB:
– indicate to the RLC entities other than the primary RLC entity to discard all duplicated PDCP Data PDUs;
– if the deactivation of PDCP duplication is indicated for at least one associated RLC entities:
– indicate to the RLC entities deactivated for PDCP duplication to discard all duplicated PDCP Data PDUs.
5.12 Ethernet header compression and decompression
5.12.1 Supported header compression protocols
The EHC protocol is based on the Ethernet Header Compression (EHC) framework defined in Annex A.
5.12.2 Configuration of EHC
PDCP entities associated with DRBs and MRBs can be configured by upper layers TS 38.331 [3] to use EHC. Each PDCP entity carrying user plane data may be configured to use EHC. Every PDCP entity uses at most one EHC compressor instance and at most one EHC decompressor instance.
5.12.3 Protocol parameters
The usage and definition of the parameters shall be as specified below.
– MAX_CID_EHC_UL: This is the maximum CID value that can be used for uplink. One CID value shall always be reserved for uncompressed flows. The parameter MAX_CID_EHC_UL is configured by upper layers (maxCID-EHC-UL in TS 38.331 [3]);
5.12.4 Header compression using EHC
If EHC is configured, the EHC protocol generates two types of output packets:
– EHC compressed packets (i.e. EHC full header packets and EHC compressed header packets), each associated with one PDCP SDU;
– standalone packets not associated with a PDCP SDU, i.e. EHC feedback.
An EHC compressed packet is associated with the same PDCP SN and COUNT value as the related PDCP SDU. The header compression is not applicable to the SDAP header and the SDAP Control PDU if included in the PDCP SDU.
EHC feedback are not associated with a PDCP SDU. They are not associated with a PDCP SN and are not ciphered/integrity protected.
5.12.5 Header decompression using EHC
If EHC is configured by upper layers for PDCP entities associated with user plane data, the PDCP Data PDUs are decompressed by the EHC protocol after performing deciphering and integrity verification as explained in clause 5.8 and 5.9, respectively. The header decompression is not applicable to the SDAP header and the SDAP Control PDU if included in the PDCP Data PDU.
5.12.6 PDCP Control PDU for EHC feedback
5.12.6.1 Transmit Operation
When an EHC feedback is generated by the EHC protocol, the transmitting PDCP entity shall:
– submit to lower layers the corresponding PDCP Control PDU as specified in clause 6.2.3.3 i.e. without associating a PDCP SN, nor performing ciphering/integrity protection.
5.12.6.2 Receive Operation
At reception of a PDCP Control PDU for EHC feedback from lower layers, the receiving PDCP entity shall:
– deliver the corresponding EHC feedback to the EHC protocol without performing deciphering/integrity verification.
5.12.7 Simultaneous configuration of ROHC and EHC
If both ROHC and EHC are configured for a DRB/MRB, the ROHC header shall be located after the EHC header. Figure 5.12.7-1 shows the location of the ROHC header and the EHC header in a PDCP Data PDU.
Figure 5.12.7-1: Location of ROHC header and EHC header in a PDCP Data PDU
If a PDCP SDU including non-IP Ethernet packet is received from upper layers, the EHC compressor shall bypass the ROHC compressor and submit the EHC compressed non-IP Ethernet packet to lower layers according to clause 5.2.1.
If a PDCP Data PDU including non-IP Ethernet packet is received from lower layers, the EHC decompressor shall bypass the ROHC decompressor and deliver the EHC decompressed non-IP Ethernet packet to upper layers according to clause 5.2.2.
5.13 Uplink data switching
For DAPS bearers, when upper layers request uplink data switching, the transmitting PDCP entity shall:
– for AM DRBs, from the first PDCP SDU for which the successful delivery of the corresponding PDCP Data PDU has not been confirmed by the RLC entity associated with the source cell, perform retransmission or transmission of all the PDCP SDUs already associated with PDCP SNs in ascending order of the COUNT values associated to the PDCP SDU prior to uplink data switching to the RLC entity associated with the target cell as specified below:
– perform header compression of the PDCP SDU using ROHC as specified in the clause 5.7.4;
– perform integrity protection and ciphering of the PDCP SDU using the COUNT value associated with this PDCP SDU as specified in the clause 5.9 and 5.8, respectively;
– submit the resulting PDCP Data PDU to lower layer, as specified in clause 5.2.1.
– for UM DRBs, for all PDCP SDUs which have been processed by PDCP but which have not yet been submitted to lower layers, perform transmission of the PDCP SDUs in ascending order of the COUNT values to the RLC entity associated with the target cell as specified below:
– perform header compression of the PDCP SDU using ROHC as specified in the clause 5.7.4;
– perform integrity protection and ciphering of the PDCP SDU using the COUNT value associated with this PDCP SDU as specified in the clause 5.9 and 5.8, respectively;
– submit the resulting PDCP Data PDU to lower layer, as specified in clause 5.2.1.
5.14 Uplink Data compression and decompression
5.14.1 UDC protocol
The UDC protocol is based on IETF RFC 1951 (DEFLATE Compressed Data Format Specification) [19].
Static Huffman coding tree defined in [19] is used as the DEFLATE compression strategy.
UDC Data Block should be byte-alignment. Z_SYNC_FLUSH is used as the DEFLATE byte-alignment with corresponding reference [21], wherein the fixed last four bytes, 0x00 0x00 0xFF 0xFF, are removed before transmission.
5.14.2 Configuration of UDC
The PDCP entities associated with DRBs can be configured by upper layers, see TS 38.331 [3], to use UDC. If UDC is configured, the UE shall apply UDC compression function (details see Annex B) to process the received PDCP SDU from upper layers corresponding to the configured DRB. The size of compression buffer is configured by upper layers via bufferSize. If pre-defined dictionary is configured by upper layers, the UE shall first set the compression buffer to all zeros and then prefill the configured pre-defined dictionary in the compression buffer upon configuration of UDC. If pre-defined dictionary is not configured by upper layers, UE shall set the compression buffer to all zeros.
5.14.3 UDC header
UDC header (1 byte) is added in UDC compression function followed by UDC data block. The UDC header contains the information about whether the current PDCP SDU is compressed by UDC protocol or not. Only the compressed packets are stored in the buffer. The UDC header also contains a reset bit to inform the decompressor that the compression buffer has been reset. The validation bits (checksum) of the compression buffer are also contained in UDC header. Checksum mechanism could be used to resolve miss-match (if any) between the compression and de-compression buffers. If both SDAP and UDC are configured for a DRB, the UDC header shall be located after the SDAP header. Figure 5.14.3-1 shows the location of the UDC header in a PDCP data PDU.
Figure 5.14.3-1: Location of UDC header in a PDCP Data PDU
5.14.4 Uplink data compression
The UDC protocol generates UDC packets, each associated with one PDCP SDU.
A UDC packet is associated with the same PDCP SN and COUNT values as the related PDCP SDU. The uplink data compression is not applicable to the SDAP header and the SDAP Control PDU if included in the PDCP Data PDU.
5.14.5 PDCP Control PDU for UDC feedback
At reception of a PDCP Control PDU for UDC feedback from lower layers, the receiving PDCP entity shall:
– deliver the corresponding UDC feedback to the UDC protocol without performing deciphering/integrity verification.
5.14.6 Pre-defined dictionary
One standard dictionary for SIP and SDP and one operator defined dictionary can be used as pre-defined dictionaries in UDC. The standard dictionary for SIP and SDP consists of the first 3468 bytes of the dictionary for SigComp defined in RFC 3485 [20]. When UDC is configured, at most one dictionary, configured by upper layers, is put into the tail of the compression buffer. Also, the compression buffer acts as a FIFO and hence the content of the dictionary is to be totally pushed out of the compression buffer after the size of transmitted uncompressed packets compressed by UDC exceeds the compression buffer size. If the size of dictionary is larger than the compression buffer size, only the tail of the dictionary is inserted in the compression buffer.
5.14.7 UDC buffer reset procedure
UDC works on the condition that compression buffer and de-compression buffer are synchronized. UDC buffer reset mechanism is to resynchronize buffer when error is detected. For resynchronization, UE shall reset the compression buffer to all zeros.
5.14.8 UDC checksum error handling
UDC checksum error notification PDCP control PDU indicates the compression buffer and de-compression buffer are out of synchronization. When receiving the notification, the UE shall trigger UDC buffer reset procedure to resynchonize the compression buffer.