1 作用
用戶面和控制面的數(shù)據(jù)傳輸宙橱。
維護PDCP SNs
使用ROHC協(xié)議對IP報頭進行壓縮/解壓縮姨俩,以減少空口傳輸?shù)谋忍財?shù)(只適用于用戶面數(shù)據(jù))。
加密和解密數(shù)據(jù)(用戶面和控制面)师郑,發(fā)送端對數(shù)據(jù)進行加密环葵,接收端對數(shù)據(jù)進行解密。
完整性保護和完整性驗證
基于定時器的SDU丟棄宝冕,為了防止發(fā)送端的傳輸buffer溢出张遭,而丟棄那些長時間沒有被成功發(fā)送出去的SDU。
對于split承載的路由地梨,雙連接下split承載同時跨越2個不同的cell group菊卷,PDCP發(fā)送端需要負責對報文進行路由缔恳,確保把數(shù)據(jù)發(fā)送到正確的cell group。PDCP接收端不需要進行路由洁闰。
復制(duplication)歉甚,如果網(wǎng)絡配置了,PDCP會把數(shù)據(jù)發(fā)給對應的兩個RLC實體扑眉。主要用于URLLC場景纸泄。
重新排序或者按序進行傳送,RLC層只要重組出一個完整的RLC SDU腰素,就把它發(fā)往PDCP層聘裁,也就是說,RLC層不會對SDU進行排序弓千,所以發(fā)給PDCP層的RLC SDU可能是亂序的衡便,這就需要PDCP的接收端對數(shù)據(jù)進行重排序,并按序傳送給上層计呈。
亂序傳送砰诵,對于那些不需要按序傳送的業(yè)務,可以去使能重排序功能捌显,并直接發(fā)送給上層茁彭。
丟棄重復數(shù)據(jù),由于使用UM模式的RLC實體不進行重復包檢測扶歪,PDCP層可能會收到重復的數(shù)據(jù)理肺。另外可能存在PDCP復制功能,接收端也可能收到重復的數(shù)據(jù)善镰。切換過程中也可能出現(xiàn)重復的PDCP PDU妹萨。
2 結(jié)構(gòu)
PDCP層位于RLC層之上,通過RLC channel與RLC層進行通信炫欺,通過SAP與SDAP/RRC層進行通信乎完。PDCP層的功能由PDCP實體來實現(xiàn)。PDCP實體從RLC層收發(fā)的數(shù)據(jù)稱為PDCP PDU品洛,從SDAP/RRC層收發(fā)的數(shù)據(jù)稱為PDCP SDU树姨。在NR協(xié)議棧中和上層的收發(fā)數(shù)據(jù)稱為SDU,同下層的收發(fā)數(shù)據(jù)稱為PDU桥状。
PDCP層只會用在映射到邏輯信道DCCH和DTCH的無線承載上帽揪,而不用于其它類型的邏輯信道上。
除了SRB0之外辅斟,每個無線承載都和一個PDCP實體相關(guān)聯(lián)转晰,一個UE可以建立多個無線承載,因此可以包含多個PDCP實體,每個實體只處理一個無線承載的數(shù)據(jù)查邢。取決于無線承載的特性(例如單向/雙向蔗崎,split/non-split)或RLC模式,每個PDCP實體可以關(guān)聯(lián)1/2/4個RLC實體:
- 對于split承載或者配置了PDCP復制的無線承載侠坎,每個PDCP實體關(guān)聯(lián)2個UM RLC實體(相同方向)蚁趁,4個UM RLC實體(每個方向2個),或者2個AM RLC實體(相同方向)实胸。
- 對于non-split承載他嫡,每個PDCP實體關(guān)聯(lián)1個UM RLC實體,2個UM RLC實體(每個方向各一個)庐完,或者1個AM RLC實體钢属。
- RLC TM模式的數(shù)據(jù)不經(jīng)過PDCP傳輸。
3 流程
- 分組數(shù)據(jù)發(fā)送到PCDP之后门躯,放到一個傳輸buffer中淆党,按照分組數(shù)據(jù)到達的順序進行分配序列號。接收端可以根據(jù)序列號對數(shù)據(jù)進行重排序讶凉。
- 然后對數(shù)據(jù)進行頭壓縮染乌,但是只是針對用戶面數(shù)據(jù),也可以配置成不進行頭壓縮懂讯『杀铮控制面數(shù)據(jù)不進行頭壓縮,這部分在上圖中沒有呈現(xiàn)出來褐望。
- 完整性保護
- 接下來對用戶面和控制面數(shù)據(jù)進行加密保護勒庄,以保證接收端和發(fā)送端之間傳遞的數(shù)據(jù)的保密性。
- 添加PDCP頭
- 如果建立了split承載瘫里,PDCP實體把數(shù)據(jù)路由到目標的承載实蔽。
4 PDU結(jié)構(gòu)
4.1 用于SRB的數(shù)據(jù)PDU
< 38.323-6.2.2.1-1: PDCP Data PDU format for SRBs >
4.4 用于DRB的數(shù)據(jù)PDU
< 38.323-6.2.2.2: PDCP Data PDU format for UM DRBs and AM DRBs>
4.5 用于PDCP狀態(tài)報告的控制PDU
< 38.323-6.2.3.1: PDCP Control PDU format for PDCP status report>
4.6 用于interspersed ROHC feedback的控制PDU
5 參數(shù)
5.1 PDCP SN
Length | Description |
---|---|
12 | UM DRBs, AM DRBs, and SRBs |
18 | UM DRBs, and AM DRBs |
5.2 Data
- 未壓縮的PDCP SDU(用戶面數(shù)據(jù)或者控制面數(shù)據(jù))
- 壓縮的PDCP SDU(僅用戶面數(shù)據(jù))
5.3 MAC-I
長度:32bit
攜帶著鑒權(quán)碼,對于SRB來說這個參數(shù)一直存在谨读,如果沒有配置SRB的完整性保護局装,則其值為全0。對于DRB來說劳殖,只有網(wǎng)絡配置了完整性保護才有這個參數(shù)贼邓。
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
此字段指示在重新排序窗口內(nèi)的第一個丟失的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數(shù)據(jù)包,即與PDCP SDU不相關(guān)的ROHC數(shù)據(jù)包盟广。
6 頭壓縮和解壓縮
ROHC框架定義了多個頭壓縮算法闷串,被稱為profile,目前R15中支持的頭壓縮協(xié)議和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在接入網(wǎng)絡時會告訴NW自己支持那些算法筋量,NW會在配置PDCP時告訴UE選用哪種算法烹吵。
數(shù)據(jù)經(jīng)過PDCP頭壓縮之后,如果PDCP SN為12bit桨武,則頭長度為2字節(jié)肋拔,否則頭長度為3字節(jié)。
7 重復
如果RRC參數(shù)pdcp-Duplication配置了呀酸,PDCP實體:
- 對于SRB
- 激活PDCP重復
- 對于DRB
- 如果指示激活了PDCP重復
- 激活PDCP重復
- 如果指示去激活了PDCP重復
- 去激活PDCP重復
- 如果指示激活了PDCP重復
重復PDCP丟棄:
- 若關(guān)聯(lián)的某個AM RLC實體成功的發(fā)送了PDCP data PDU
- 指示另外一個AM RLC實體丟棄重復的DPCP data PDU
- 若收到去激活PDCP重復指示
- 指示第二個RLC實體丟棄所有的重復PDCP data PDU
TS38300-16.1.3
如圖所示凉蜂,當無線承載配置了PDCP重復之后,就會給PDCP添加第二個RLC實體性誉,對應的邏輯信道是第二邏輯信道窿吩。這兩個RLC實體具有相同的模式,PDCP會生成兩個相同的PDU错览,分別發(fā)給兩個RLC實體纫雁。通過兩個獨立的傳輸路徑,提高了數(shù)據(jù)傳輸?shù)目煽啃曰壤档土说却龝r間先较,對于URLLC服務特別有利。
當DRB配置了duplication之后悼粮,RRC也同時設(shè)置了duplication的初始狀態(tài)(激活/不激活)闲勺,可以通過MAC CE進行動態(tài)控制是否激活。如果SRB配置了duplication扣猫,那么總是激活的菜循,而且不能動態(tài)控制。
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昧穿,指示上行是否發(fā)送PDCP狀態(tài)報告
statusReportRequired ENUMERATED { true } OPTIONAL, -- Cond Rlc-AM
//指示是否進行亂序提交勺远,RB建立之后,此字段不可更改
outOfOrderDelivery ENUMERATED { true } OPTIONAL-- Need R
} OPTIONAL, -- Cond DRB
//PDCP實體關(guān)聯(lián)多個RLC實體時时鸵,為上行數(shù)據(jù)傳輸配置此字段
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現(xiàn)網(wǎng)配置胶逢,PDCP SN上下行都是18bits厅瞎,不使用頭壓縮,需要發(fā)送狀態(tài)報告初坠。PDCP實體排序的時間為200ms和簸。
Reference
TS38323 Packet Data Convergence Protocol (PDCP) specification