博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
文章目录
- NR 终端侧PDU建立过程以及数据包的过滤和映射
- 一、终端发送PDU SESSION ESTABLISHMENT REQUEST消息
- 1.1 关键参数准备
- 1.2 构建UL NAS TRANSPORT消息并发送
- 二、网络接受终端的PDU SESSION ESTABLISHMENT REQUEST
- 2.1 PDU SESSION ESTABLISHMENT ACCEPT中的关键参数
- 三、终端可以建立的最大PDU session数量
- 四、APP数据的转发
NR 终端侧PDU建立过程以及数据包的过滤和映射
一、终端发送PDU SESSION ESTABLISHMENT REQUEST消息
我们知道5G中终端的SM消息需要封装到MM消息中发送,也就是所谓的piggyback。所以终端需要首先构建SM的消息,然后构建用于piggyback的MM消息。
1.1 关键参数准备
终端为了建立PDU session,需要发送 PDU SESSION ESTABLISHMENT REQUEST 消息,这需要终端:
- 分配一个当前未被使用的
PDU session ID
; - 分配一个当前未被使用的
PTI
,用于标识当前的PDU会话建立流程; DN-specific identity
,当终端接入外部网络时,用于验证和鉴权;SSC mode
,可选的值包括“SSC mode 1”、“SSC mode 2”、“SSC mode 3”;- 如果PDU session type为“IPv4”、“IPv6”、“IPv4v6”,那么可选的SSC mode可以是“SSC mode 1”、“SSC mode 2”、“SSC mode 3”;
- 如果PDU session type为“Ethernet”、“Unstructured”,那么可选的SSC mode可以是“SSC mode 1”、“SSC mode 2”;
- 如果是将一个已经建立的PDU从EPC切换到5GC,则可选的SSC mode可以是“SSC mode 1”;
PDU session type
,可选的值包括“IPv4”、“IPv6”、“IPv4v6”、“Ethernet”、“Unstructured”;RQoS
参数,表示终端是否支持反向QoS映射;最大packet filters
,告诉核心网此PDU session所支持的最大包过滤器数量;- 如果PDU session是新建立的,且PDU session type是“IPv4”、“IPv6”、“IPv4v6”、“Ethernet”,那么最多支持16个packet filter;
- 如果是EPC中一个已经建立的PDU session且类型为“IPv4”、“IPv6”、“IPv4v6”、“Non-IP”,向5GC转换,则最多支持16个packet filter;
最大完整性保护数据速率
;MH6-PDU
,向核心网指示是否支持多归属IPv6功能;always-on pdu
,向核心网指示此PDU是否是“永久在线PDU”;
1.2 构建UL NAS TRANSPORT消息并发送
1.1中描述了PDU SESSION ESTABLISHMENT REQUEST消息中的参数。然后终端将使用UL NAS TRANSPORT消息发送,UL NAS TRANSPORT中的参数如下:
- PDU SESSION ESTABLISHMENT REQUEST消息;
- 对应创建、切换或转换的PDU session ID;
- 设置请求类型,可选的包括“初始请求”、“存在的PDU session”、“初始紧急请求”、“存在的紧急PDU session”;
- 选择
S-NSSAI
,如果PDU session的请求类型为:初始请求
,并且终端决定根据USRP
(其中包含了一个或多个S-NSSAI)或者本地策略来建立一个新的PDU session;- 如果是非漫游场景,则S-NSSAI参数可以从匹配的USRP、默认的USRP或者终端本地配置的S-NSSAI中选择,但其必须属于
allowed S-NSSAI
; - 如果是漫游场景:
- 则S-NSSAI参数可以从匹配的USRP、默认的USRP或者终端本地配置的S-NSSAI中选择,但其必须属于
mapped S-NSSAI
; - 与1中选择的S-NSSAI相关联的且属于allowed S-NSSAI的S-NSSAI;
- 则S-NSSAI参数可以从匹配的USRP、默认的USRP或者终端本地配置的S-NSSAI中选择,但其必须属于
- 如果是非漫游场景,则S-NSSAI参数可以从匹配的USRP、默认的USRP或者终端本地配置的S-NSSAI中选择,但其必须属于
存在的PDU session
,则S-NSSAI参数是与这个已经存在的PDU session相关联的S-NSSAI。如果是漫游场景,则其也必须是一个mapped S-NSSAI;
- 设置
DNN
,如果初始请求的类型是“初始请求”或者“存在的PDU session”,则使用指定的DNN而不使用默认DNN; - 当终端收到一条PDU SESSION MODIFICATION COMMAND消息且cause值为“#39 reactivation requested”时,会包含当前已经建立的PDU session的
old PDU session ID
;
当UL NAS TRANSPORT发送之后,会启动T3580定时器。
如果终端中没有任何匹配的URSP规则,而且终端本地配置信息、默认URSP中也没有任何S-NSSAI,则终端在PDU session建立消息中将不会提供S-NSSAI。
二、网络接受终端的PDU SESSION ESTABLISHMENT REQUEST
当SMF收到PDU SESSION ESTABLISHMENT REQUEST消息,会检查是否可以建立与终端请求的DN之间的连接,这中间可能会包含一些鉴权过程。当SMF确认可以与DN建立连接,则会向终端回复PDU SESSION ESTABLISHMENT ACCEPT。
2.1 PDU SESSION ESTABLISHMENT ACCEPT中的关键参数
-
authorized QoS flow descriptions IE
,这个字段不是必选的,如果满足下面条件中的一个,则需要构建:- authorized QoS rules IE中至少包含一个GBR QoS flow;
- 分配的QFI与其QoS flow的5QI中的QFI不一致;
- 此QoS flow可以被映射到EPS bearer;
-
如果此PDU session支持与EPS的交互,则还会构建
Mapped EPS bearer contexts IE
,并记录每个QoS flow与mapped EPS bearer context
之间的映射关系; -
SSC mode IE
,如果:- PDU SESSION ESTABLISHMENT REQUEST中没有包含SSC mode,则会根据DN的签约信息、对应SMF的配置信息来选择一个默认的SSC mode;
- PDU SESSION ESTABLISHMENT REQUEST中包含了SSC mode,则会根据PDU session type、用户签约信息、以及SMF配置信息从上报的SSC mode中选择一个;
译文:如果该PDU会话为紧急PDU会话,SMF需要将PDU session ESTABLISHMENT ACCEPT消息中的Selected SSC mode IE设置为“SSC mode 1”。如果PDU会话为“Ethernet”或“Unstructured”PDU会话类型的非紧急PDU会话,SMF应将“Selected SSC mode IE”设置为“SSC mode 1”或“SSC mode 2”。如果PDU会话为“IPv4”、“IPv6”或“IPv4v6”PDU会话类型的非紧急PDU会话,SMF将选中的SSC模式IE设置为“SSC mode 1”、“SSC mode 2”或“SSC mode 3”。
-
S-NSSAI IE
,选择PDU SESSION ESTABLISHMENT REQUEST中上报的S-NSSAI或者mapped S-NSSAI(漫游场景下); -
PDU session type IE
,如果PDU SESSION ESTABLISHMENT REQUEST消息中包含了一个设置为:- “IPv4v6”的PDU session type IE, SMF将选择“IPv4”、“IPv6”或“IPv4v6”作为该PDU会话所选择的PDU session type IE。如果签约信息、SMF配置或两者都被限制为仅支持IPv4或仅支持IPv6的请求DNN,则SMF应在PDU SESSION ESTABLISHMENT ACCEPT消息的5GSM causeIE中分别包含5GSM原因值 #50“PDU session type IPv4 only allowed”或#51“PDU session type IPv6 only allowed”;
- 如果选择的PDU会话类型为“IPv4”,SMF将在PDU SESSION ESTABLISHMENT ACCEPT消息中包含PDU address IE,并将PDU address IE设置为在PDU会话中分配给UE的IPv4地址;
- 如果选择的PDU会话类型为“IPv6”,SMF将在PDU SESSION ESTABLISHMENT ACCEPT消息中包含PDU address IE,并将PDU address IE设置为在PDU会话中分配给UE的IPv6链路本地地址的接口标识(低64bit);
- 如果选择的PDU会话类型为“IPv4v6”,SMF将在PDU SESSION ESTABLISHMENT ACCEPT消息中包含PDU address IE,并将PDU address IE设置为IPv4地址和IPv6链路本地地址的接口标识,在PDU会话中分配给UE;
-
对于非紧急的PDU session,还会包含一个
DNN IE
; -
Session-AMBR
; -
如果终端上报支持RQoS,则SMF认为这个PDU中的所有QoS flow都能够支持RQoS,并可能配置一个
RQ timer IE
。如果SMF将RQ timer设置为“deactivated”或者0,则表示并不启动RQoS功能; -
Always-on PDU session requested IE
注意,如果终端没有配置支持的最大packet filters,则网络默认为16个。如果配置了“最大完整性保护数据速率”,则在PDU session的整个生命周期中是不允许再修改的。
当终端收到PDU SESSION ESTABLISHMENT ACCEPT消息后,终端会停止T3580定时器,并释放PTI,此时终端认为PDU session已经建立成功。终端会存储“authorized QoS rules”,以及PDU SESSION ESTABLISHMENT ACCEPT消息中接收到的“Session-AMBR”和“authorized QoS flow descriptions”。
终端也会对配置的“authorized QoS rules”、“authorized QoS flow descriptions”进行语义和句法错误检查,详细过程可以参考TS24501-6.4.1.3。
如果终端请求的PDU session type是“IPv4v6”,但是:
- 网络配置的PDU session type为“IPv4”,且没有包含5GSM错误消息 #50 “PDU session type IPv4 only allowed”;
- 网络配置的PDU session type为“IPv6”,且没有包含5GSM错误消息 #51 “PDU session type IPv6 only allowed”;
这种情况下,UE随后可以使用PDU SESSION ESTABLISHMENT REQUEST消息请求其它IP版本的另一个PDU session到相同的DNN和相同的S-NSSAI。
如果终端请求的PDU session type是“IPv4v6”,但是:
- 网络配置的PDU session type为“IPv4”,且包含5GSM错误消息 #50 “PDU session type IPv4 only allowed”;
- 网络配置的PDU session type为“IPv6”,且包含5GSM错误消息 #51 “PDU session type IPv6 only allowed”;
这种情况下,UE将不会再使用PDU SESSION ESTABLISHMENT REQUEST消息请求其它IP版本的另一个PDU session到相同的DNN和相同的S-NSSAI,除非:
- 终端注册到了一个新的PLMN,且不在等效PLMN list中;
- 用于访问这个DNN和S-NSSAI的PDU type发生了改变;
- 终端关机;
- USIM卡移除;
三、终端可以建立的最大PDU session数量
一个终端可以在一个PLMN中建立的最大PDU会话数受以下最小值的限制:
- 协议允许的最大PDU session ID(3GPP TS 24.007-11.2.3.1b中规定);
- 对应PLMN的最大PDU session数;
- UE实现特定的最大PDU session数;
四、APP数据的转发
当PDU session建立成功之后,终端的APP可以发送数据了,那么数据是如何从APP映射到对应的QoS Flow上的呢?当然是通过对应的QoS rules,检测DL/UL的数据包,根据匹配到的QoS rule查找数据要映射到哪个QoS Folw上,也就是哪个QFI上。
协议没有规定在哪里执行APP数据包的过滤过程,我认为可以在AP侧实现,例如,通过AT Command查询网络配置给终端的QoS rules,然后实施过滤,最后将匹配的QFI和数据包一起发送给SDAP,如果没有匹配到任何QoS rules,则根据协议规定终端应该丢弃数据包。
关于QoS rules和数据包过滤的内容,我会单独再写一篇博文介绍,敬请期待。
+CGTFTRDP:Used to show the network assigned QoS rules for a 5GS QoS flow
网络拒绝终端的PDU session建立请求过程,我们先不在本篇博文中介绍。大家感兴趣可以参考TS24501-6.4.1.4。