SDAP层主要是对QoS(Quality of Service,服务质量)的一个重新定义,在LTE时代很少提及QoS,为什么呢?因为在LTE时代很多业务的QoS都是一样的。
LTE下,手机开机之后,会建立一个EPS承载,我们也称之为默认承载,这是一个端到端的连接,即手机到核心网之间的连接,手机发起业务都是在承载里面搞定。
LTE中除了VOLTE配置的是专用承载,其他业务,包括视频、游戏等都是在同一条承载里,不加区分,所以导致很多业务的QoS服务等级无法保障,特别是对时延要求比较高的游戏类业务。
QoS也称之为服务等级,QoS是定义业务在整个资源调度的优先级。QoS级别越高,在调度资源的时候,排队就越排在前面,资源就更容易被获取。4G时,除了语音VOLTE业务外,其他的都不做特别处理,大家的级别都是一样。
到了5G时代就不一样了,5G中定义了更多的QoS级别,不同业务的级别是能够相互区分开,也就是能够区分不同的业务等级,来保证一些业务优先级,所以5G中引入了SDAP层。
5G会为每一个UE建立一个PDU会话。此种会话在4G的时候我们称之为承载,5G时换了一种称呼,叫做PDU会话。所以5G中除了空口DRB、SRB还有承载的概念,其他的都没有承载这一说法了,改为PDU会话。
4G时手机开机建立的是默认承载,5G时手机开机建立的是PDU会话。现在的PDU会话和以前的承载有什么区别呢?
4G时,我们把端到端的承载叫做EPS承载,以前的EPS承载建立好之后,一个承载里面的QoS级别都是一样的,所以4G时,QoS级别的内部是以一个承载来作为一个粒度的,这个粒度太大了,因为一般我们只会建立一个默认承载,如果有语音业务时,最多再加上一个语音承载,总共就2个承载。
SDAP层功能
5G和4G就大大不一样了,5G手机开机后创建的是PDU会话,每一个PDU会话是手机和核心网之间建立的,一个PDU会话可以创建多个QoS Flow(QoS流),换句话说这个PDU会话中可以建立多个4G中所认为的承载,这个QoS流可以映射到空口不同的DRB中去。
QoS架构
下图比较形象的解释了QoS架构,UE与5G核心网UPF建立好会话,在一个会话里建立了多个QoS流,不同的QoS级别是如何描述QoS流的呢,不同的QoS流相关参数很多和4G时代类似,以前的QCI现在叫做5QI,5QI里面包含了时延、误块率、优先级、AMBR、ARP等参数,不同的QoS流就会用不同的参数定义,QoS流可以映射到不同的RB上,所以5G的QoS管理的粒度细化为QoS Flow(QoS流),相比LTE基于承载的简单QoS映射要更加复杂,但是它带来对多种业务的适应性。
SDAP负责把不同的流的数据映射到DRB上,具体怎么进行映射呢,说白了就是打上一个标签,打上了QoS流的标签,就实现了不同的流和DRB之间的映射,前文已经说过,这边不做过多阐述。
SDAP层数据处理流程
下图为下行SDAP层数据处理流程,不同的QoS流的数据下来,SDAP会把QoS流映射到DRB上,此时会存在两种情况,一种情况是配置了包含SDAP头部,一种是为配置包含SDAP头部(QoS流是没有ID的,也就是没有QFI,事先在核心网没有定义它的QoS)。
配置了包含SDAP头部时,QoS流将会一个一个映射到DRB上;没有配置包含SDAP头部的QoS流,将会直接映射到默认的RDB中。
对于上行来说也存在两种情况,一种是配置了包含SDAP头部,一种是未配置包含SDAP头部。
配置了包含SADP头部即是在基站侧定义了上行的QoS流(每个数据包在包头里面有上行的流和下行的流的标识),这种方式数据包会比较大,所以一般不会上行做标识,我们直接添加一个反射标识,这个反射标识为1的话,就代表它的上行QoS和下行是一样的,直接添加发射式的QoS流可以节省一个数据包的大小。
未配置包含SDAP头部将会把数据包直接映射到默认的QoS流上。