5G系统——SDAP协议


1 概要

本来是想继续上文对QoS的反射QoS进行介绍的,但是看了一下协议,SDAP协议和反射QoS形同一体,必须要先介绍一下SDAP协议才能比较好深入了解反射QoS机制;SDAP是5G新空口用户面新增加的一层协议,从其内容内来,可以认为SDAP协议是为了5G QoS而生的。

从协议的体量来说的话,这是我见过的最简单最短小的协议了。

我们先看一下SDAP在5G新空口用户面协议栈的位置,如下图:

1.1 定义和简称

QoS flow to DRB mapping rule:将一个QoS流的packet映射到哪条DRB上的规则;

Reflective QoS flow to DRB mapping: 是这样的一种QoS流到DRB的映射方案,UE监测下行的QoS流到DRB的映射规则,然后将其应用到上行方向上;

QFI                         QoS Flow ID

RDI                        Reflective QoS flow to DRB mapping Indication

RQI                        Reflective QoS Indication

SDAP                    Service Data Adaptation Protocol

1.2 SDAP架构

Figure 4.2.1-1是从协议结构的角度来展示SDAP子层的;SDAP子层是通过RRC信令来配置的,SDAP子层负责将QoS流映射到对应的DRB上;一个或者多个QoS流可以映射到同一个DRB上,一个QoS流只能映射到一个DRB上,如下图所示。

 

另外,QoS流和DRB的映射关系还可以从RRC信令中的DRB配置参数明显看出来,如下。

从一条DRB的SDAP-Config参数可以看出来,下面我们来细说一下这里的几个参数。

pdu-Session: PDU会话ID,表示这条DRB属于哪个PDU会话的,也就是说这个DRB是为哪个PDU会话建立的。

sdap-HeaderDL:下行数据传输是否配置SDAP头,如果没有配置就相当于SDAP层不存在,PDCP后就是应用packet了

sdap-HeaderUL:上行数据传输是否配置SDAP头,如果没有配置就相当于SDAP层不存在,packet直接扔给PDCP处理

defaultDRB:是否为这条PDU会话的默认DRB;一个PDU会话中的所有SDAP配置实例中,最多只能有一个默认DRB,可以没有默认DRB。

mappedQoS-FlowsToAdd:这是一个QFI列表,表示要再增加列表中的QoS流映射到这条DRB上;同一个PDU会话的所有SDAP配置实例中,一个QFI值只能出现一次,也就是说不能一条QoS流映射到多条DRB上。

mappedQoS-FlowsToRelease:这是一个QFI列表,表示这些QoS流不能再映射到这条DRB上了。

从中可以看出,ngNB会为一个PDU会话的QoS规则为其建立1个或多个DRB,每个DRB负责承载1个或多个QoS数据流。

 

上面是从结构的角度来看SDAP子层,下面从功能的角度来看SDAP子层有哪些功能。

- 传输用户面数据

-为上下行数据进行QoS Flow到DRB的映射

-在上下行数据包中标记QoS FLow ID

-为上行SDAP数据进行反射QoS流到DRB的映射

SDAP实体(或者叫实例)位于SDAP子层,每个PDU会话都会建立对应的SDAP实体(或叫实例),一个UE可以有多个SDAP实体(因为一个UE可以同时建立多个PDU会话)。

一个SDAP实体从上层接收SDAP SDU(也就是应用层的数据包),将其打包为SDAP PDU(增加了SDAP header),最后通过下层(PDCP)将SDAP PDU发给对端SDAP实体。

一个SDAP实体从下层(PDCP)接收对端SDAP实体发过来的SDAP PDU,去除SDAP header后,将SDAP SDU投递给上层。

 


2 SDAP流程

2.1 上行数据传输

一个发送SDAP实体接收到一个来自上层QoS流的SDAP SDU时,应该:

- 如果这个SDU没有满足已存在的任何一条QoS流到DRB的映射规则,则将这个SDAP PDU映射到默认DRB上

-否则,映射这个SDU到满足映射规则的DRB上

注:这点特别像PC上的路由表映射处理,大家可以类比学习。

- 如果映射到的DRB配置了SDAP header,则按照协议6.2.2.3章节构造上行SDAP data PDU

- 否则,按照协议6.2.2.1章节构造上行SDAP data PDU

- 将构造好的上行SDAP data PDU提交给下层(PDCP)

注:如果一个SDAP PDU不满足任何一个QoS流到DRB的映射规则,且对应PDU会话也没有配置默认DRB时,协议没有定义UE该如何处理这个SDAP PDU。

2.2 下行数据传输

一个接受SDAP实体在收到来自下层的SDAP PDU时,应该:

- 如果这个SDAP PDU所在的DRB配置了SDAP头(DRB建立的RRC信令会配置SDAP是否存在的):

      -按照协议5.3.2章节进行反射QoS流到DRB的映射的处理

      -按照协议5.4章节进行RQI处理

      -按照协议6.2.2.2章节,去除SDAP data PDU的头,提取SDAP PDU

- 否则(没哟配置SDAP头):

      -按照协议6.2.2.1章节,从SDAP data PDU中提取SDAP PDU

- 将提取出来的SDAP PDU递交给上层

2.3 QoS流到DRB的映射

2.3.1 配置

当RRC为一个上行QoS流配置"QoS流——DRB的映射"规则时,则SDAP实体应该:

- 如果SDAP实体已经建立,且还SDAP实体当前保存的"QoS流——DRB的映射"规则中还没有属于这条QoS流的规则,且存在默认的DRB:

       >为这条QoS流构造一个end-marker控制PDU

       >将这个end-marker控制PDU映射到默认DRB上

       >提交这个end-marker控制PDU到底层(也就是PDCP)

- 如果SDAP实体当前已经存在了这条QoS流的"QoS流——DRB映射"规则,且已经存在的规则映射出来的DRB和新配置规则映射出来的DRB不同,且这条QoS流已经存在的"QoS流——DRB映射"规则对应的DRB是配置为SDAP header存在的,则:

       >为这条QoS流构造一个end-marker控制PDU

       >将这个end-marker控制PDU映射到这条流已经存在的"QoS流——DRB映射"规则映射出来的DRB上

       >提交这个end-marker控制PDU到底层(也就是PDCP)

- 保存RRC配置的这条QoS流的"QoS流——DRB映射"规则

这一段协议写的非常拗口,简直就不是人话,我下面将其转化为人可以理解的话和相关的图示:

如果UE的SDAP实体收到RRC一条QoS流(记为QoSFlow_i)的"QoS流——DRB的映射"规则(记为Rule_k)的配置请求时,SDAP实体要:1)在QoSFLow_i当前传输的DRB上发一个end marker PDU,通知对端QoSFLow_i以后就不会在这条DRB上传了;2)更新和保存Rule_k到SDAP实体的映射规则表中。

 

当SDAP实体收到RRC释放一个上行QoS流到DRB的映射规则时,SDAP实体应该从其映射规则表中将对应的映射规则删除。

2.3.2 反射映射

主要的处理方式和前面2.3.1描述的差不多,唯一的区别是2.3.1是通过RRC信令配置"QoS流——DRB映射"规则,2.3.2是通过下行数据包的SDAP头推导出上行"QoS流——DRB的映射"规则。

对于收到的每个包头的RDI被设置为1的下行SDAP PDU时,SDAP实体应该:

- 处理SDAP头的QFI字段和确定QoS流

-如果SDAP实体当前保存的QoS流——DRB的映射规则中还没有属于这条QoS流的规则,且存在默认的DRB的话:

       >为这条QoS流构造一个end-marker控制PDU

       >将这个end-marker控制PDU映射到默认DRB上

       >提交这个end-marker控制PDU到底层(也就是PDCP)

       注:也就是在默认DRB上通知对端,这条QoS流的数据以后不再从默认DRB传输了

- 如果SDAP实体当前已经存在了这条QoS流的"QoS流——DRB映射"规则,且已经存在的规则映射出来的DRB和新配置规则映射出来的DRB不同,且这条QoS流已经存在的"QoS流——DRB映射"规则对应的DRB是配置为SDAP header存在:

       >为这条QoS流构造一个end-marker控制PDU

       >将这个end-marker控制PDU映射到这条流已经存在的"QoS流——DRB映射"规则映射出来的DRB上

       >提交这个end-marker控制PDU到底层(也就是PDCP)

       注:也就是在老映射规则映射的DRB上通知对端,这条QoS流的数据以后不再从这个DRB传输了

- 保存这条通过反射推导出来的"QoS流——DRB映射"规则

2.3.3 DRB释放

当一个DRB释放时,SDAP实体应该删除所有映射到该DRB上的QoS流映射规则。

2.4 RQI处理

每收到RQI为1的下行SDAP PDU时,SDAP实体都要将RQI和QFI报告给NAS层。


3 协议格式、参数

3.1 PDU

SDAP协议单元(PDU)可以分为data PDU和control PDU。

Data PDU用于传输用户面数据。

Control PDU在当前版本[TS37.324 f00]只有一个:

        a)End-Marker PDU

               UE使用End-Marker PDU通知网络,UE后续停止End-Marker PDU的QFI字段所指的QoS流在这条DRB(传输End-Marker PDU的DRB)上传输。

3.2 PDU的格式

3.2.1 没有SDAP头的 data PDU

3.2.2 有SDAP头的 data PDU(下行)

 

3.2.3 有SDAP头的 data PDU(上行)

3.2.4 End-Marker Control PDU

3.3 参数定义

字段名称 解释
Data

内容为SDAP SDU,也就是上层的数据内容。

长度:可变

D/C

指示这个SDAP PDU是data PDU还是control PDU。

长度:1bit

0    :    Control PDU

1    :    Data PDU

QFI

QoS Flow ID,指示这个SDAP PDU属于哪个QoS流。

长度:6 bits

R 保留位,所有保留为都应该置零
RQI

指示SDF到QoS流映射规则的变更是否需要通知NAS层

长度:1 bit

0    :    无动作

1    :    通知NAS

RDI

指示QoS流到DRB的映射规则是否需要更新。

长度:1 bit

0    :    无动作

1    :    保存QoS流到DRB的映射规则 

   

注:对于下行SDAP PDU里的QFI和RQI参数,ngNB是从N3口的GTP-U的包头扩展参数里读出来的;5GS对TS29.281协议进行了扩展,扩展了两个扩展头类型,QoS相关的控制和扩展头“PDU Session Container”(type=1000 0101)【TS29.281  5.2.1】有关,这个扩展头的详细定义见TS38.425。

 


4 参考

TS37.324

TS29.281  5.2.1章节

TS38.425

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值