PDCP相关流程-part2(数据)

标签:
杂谈 |
分类: 5GNR系统概述 |
传输侧行为
- 开启一个与该PDCP相关联的discard Timer定时器;
- 将与TX_NEXT(指示下一个将要传输的PDCP SDU的COUNT数值,初始值为0)对应的COUNT数值关联到该PDCP SDU;
- 对该PDCP SDU执行头压缩;
- 使用TX_NEXT对该PDCP SDU执行完整性保护和加密;
- 设置该PDCP数据PDU的PDCP SN =
- TX_NEXT = TX_NEXT + 1;
- 将按照以上步骤处理过的该PDCP数据PDU提交到RLC层。
对于一个PDCP与2个RLC实体相关联的场景,由于PDCP duplication时NR
PDCP新增的功能,因此与此相关的操作时LTE PDCP所没有的;而对于split bearer的操作,也是略有不同。请看LTE
PDCP相关的描述,这里不再展开讲述:
接收侧行为
对于NR
PDCP而言,当从RLC接收到一个PDCP数据PDU时,接收侧PDCP实体应当按照如下步骤确定接收到的PDCP数据PDU的COUNT值,即RCVD_COUNT:
- 如果RCVD_COUNT < SN(RX_DELIV) - Window_Size, RCVD_HFN = HFN(RX_DELIV) + 1
- 否则如果RCVD_SN >= SN(RX_DELIV) + Window_Size,RCVD_HFN = HFN(RX_DELIV) - 1
- 否则,RCVD_HFN = HFN(RX_DELIV)
- RVCD_COUNT = [RCVD_HFN, RCVD_SN]
这里,我们要解释一下上面的计算结果,首先我们看一下以上内容中各种变量是什么意思:
HFN:超帧号,PDCP的SN在一个超帧中从0开始依次递增,当达到最大SN之后,PDCN SN重新从0开始依次递增,HFN = HFN + 1;
SN: PDCP的序列号,长度为12或者18bit,对应的最大SN分别为4095和262143;
RX_DELIV:指示了第一个没有递交到GTPU层的PDCP SDU的COUNT数值;
RCVD_SN:当前接收到的PDCP数据PDU的PDCN SN,包括PDU header;
RCVD_HFN:当前接收的PDCP数据PDU的HFN,由接收侧PDCP实体计算得出;
RCVD_COUNT:当前接收到的PDCPshujuPDU的COUNT数值,COUNT = [RCVD_HFN, RCVD_SN]。
Window_Size:
为了便于举例证明,我们假设1个HFN最多包含10个PDCP SN, 这样一个Window_Size =
5。下面我们来通过举例解释一下上述内容:
1. 对于RCVD_SN < SN(RX_DELIV) –
Window_Size的场景,我们可以知道SN(R_DELIV)位于一个HFN的后半部分,因此我们假设SN(R_DELIV) = 7, RCVD_SN =
1,满足该条件的RCVD_SN有三种可能:
我们知道,PDCP接收端可以接收的PDCP其SN必须位于重排序窗口中,以上例子中满足条件的RCVD_SN只有Case C,此时RCVD_SN所在的HFN为RX_DELIV所在的HFN + 1,即RCVD_HFN = HFN(RX_DELIV) +
1。
2. 对于RCVD_SN >= SN(RX_DELIV) +
Window_Size的场景,我们可以知道SN(R_DELIV)位于一个HFN的前半部分,因此我们假设SN(R_DELIV) = 2, RCVD_SN =
8,满足该条件的RCVD_SN有三种可能:
同样PDCP接收端可以接收的PDCP其SN必须位于重排序窗口中,因此以上例子中满足条件的RCVD_SN只有Case A,此时RCVD_SN所在的HFN为RX_DELIV所在的HFN - 1,即RCVD_HFN = HFN(RX_DELIV) - 1。
3. 对于以上两种场景除外的其他场景,比如SN(R_DELIV)
= 2, RCVD_SN = 6,满足该条件的RCVD_SN有以下三种可能:
PDCP接收端可以接收的PDCP其SN必须位于重排序窗口中,因此以上例子中满足条件的RCVD_SN只有Case B,此时RCVD_SN所在的HFN等于为RX_DELIV所在的HFN,即RCVD_HFN =
HFN(RX_DELIV)。
N.B. LTE中PDCP存在类似的处理,逻辑流程基本相同,所不同的是在判断流程中使用的变量略有不同,此处不再做详细分析,请大家自行查阅相关资料。