文章目录
TS 29.328可见详细介绍(本来放了英文文档,但是只能VIP下载,而且侵权了,嘿嘿。贴个 官方下载链接,最下面的是最新的版本)
IMS-HSS中的透明数据和非透明数据
- 透明和非透明数据都是指IMS-HSS中存放的用户数据【TS29.328】
- 透明数据:HSS不需要理解用户的具体含义,只提供存储位置和空间
- 非透明数据:HSS理解数据的含义,并提供存储位置
- 透明数据
- 主要指签约用户的业务数据,存放于HSS。AS需要时通过UDR、PUR、SNR消息提取、更新、订阅及取消
- sh口主要通过Repository DataAVP发送
T-ADS
Terminating-Access Domain Selection,属于非透明数据
- 作用:发现被叫用户的接入域,有被叫侧的SCC AS完成
- 发现T-ADS的流程(单域注册)
- invite消息被发送到被叫侧的S-CSCF
- S-CSCF根据iFC决定将消息转发给SCC-AS
- SCC-AS决定是否向HSS/UDM发起T-ADS查询。如果发起查询,HSS/UDM会向AMF(5G)/MME(4G)发起查询,获得对应的信息。完成查询后,HSS/UDM向SCC-AS返回UDA消息。SCC-AS完成T-ADS结果判断,得到域选结果
- SCC-AS发回invite消息给S-CSCF,引导S将消息转发给P-CSCF
- P-CSCF根据这些信息将invite消息转发给UPF(VoNR)或PGW-U(VoLTE)
- SCC-AS决定是否查询UDM/HSS:
- 判断被叫是否在IMS中注册,是则继续
- 判断被叫是否在通话中,是则有被叫当前网络接续,否则查询UDM/HSS
- UDM/HSS是否查询AMF/MME:
- UE注册信息是否在SGSN中(2、3G),是则回复 IMS Over PS Session Not Supported,否则继续
- 检查MME(4G)/AMF(5G)下,UE 的注册参数IMS Over PS Session Not Supported参数是否为真,是则直接回复IMS Over PS Session Not Supported,不是则直接查询
- 根据查询结果,判断是否回复IMS Over PS Session Not Supported还是Supported
- SCC-AS做出T-ADS最终决策
- 判断是否查询成功,否则默认IMS网络接续,是则继续
- 判断IMS Over PS Session Supported参数的取值:UnSupport则继续,Not Support则通过CS接续,Unknown则根据SCC-AS策略判断由CS还是IMS接续
- 通过RAT-Type来决定由CS还是IMS网络接续
单域注册:UDM/HSS只保存用户的4G(MME)/5G(AMF)注册信息
双域注册:UDM/HSS同时保存用户的4G和5G注册信息(为了应对4/5G切换)
- 单域注册的作用:简化T-ADS,方便UDM/HSS收到查询T-ADS请求后,判断用户在4G还是5G网络下,从而继续向MME(4G)或AMF(5G)发送查询请求
sh口消息主要流程
这是我根据自己看文档大概翻译的流程(基于自己的理解,错误欢迎指正。我是小白,有些地方我确实自己也没看懂),没有详细到开发细节。要是想开发,可以具体去看官方文档,文章顶部有下载资源和链接。另外这里的错误码只是一种概括的说法,具体是什么错误码,还是要去官方文档看。另外这里还有一份网上找到的sh解释文档,比不上官方文档,省略了很多,但是是中文。
sh口的主要功能:
- AS从HSS中下载数据(包括前文介绍的T-ADS数据)
- AS更新HSS端的数据
- AS向HSS订阅通知。当数据发生改变时,HSS会通知AS
UD(User-Data)
- AS从HSS中下载一个用户的透明或非透明数据
- 检查请求的AS是否拥有读取该数据的权限,否则返回错误码(检查Origin-Host + Data-Reference)
- 检查请求中的impi(如果存在)和impu是否存在于HSS且有关联,否则返回错误码
- 如果请求数据中包含PSI Activation(Public Server Identity),则检查HSS中impu是否包含PSI,不包含则返回错误码
- 如果请求数据中包含IPAddressSecureBindingInformation且请求中impu绑定多个impi,返回错误码
- 如果AS要下载的数据正在被其他实体修改,则等待修改完成后,延迟发送响应。如果等待过程中超时,返回错误码
- 如果请求数据中包含T-ADS数据,则HSS/UDM需要根据在注册、位置更新或通知流程收到的来自MME、SGSN、AMF的信息,判断在回复AS之前,是否需要向MME、SGSN、AMF发送获取T-ADS请求。如果需要则
- HSS/UDM需要向AS提供最近的收到的IMS Voice over PS Sessions support indication。如果需要的话,HSS/UDM还需要提供Access Type、RAT type、UE激活时间和特殊的时间区间(如果至少一个服务节点回复T-ADS数据给HSS,则HSS应该向AS提供这些信息)
- 如果发送给服务节点获取T-ADS请求后,存在没有回复或不支持T-ADS数据检索的节点,HSS/UDM会回复AS,T-ADS未知(Unknown)。如果这些回复中没有包含T-ADS信息,HSS认为节点不支持IMS Voice over PS Sessions,除非该UE在其他支持的节点附着
- 如果HSS/UDM知道注册的服务节点中存在Gn/Gp-SGSN,则不会联系MME获取T-ADS数据,而是向Gn/Gp-SGSN和(或)AMF发送请求
- 如果至少一个服务节点回复T-ADS数据给HSS,则HSS应该向AS提供
- 如果请求数据中包含CSRN,但HSS从MSC/VLR中检索漫游数量失败。HSS应在返回响应的xml格式数据中包含一个空的CSRN元素。此外,如果MTRR可用,HSS应该在响应的xml格式数据中包含MTRR-Indication(具体的user-data的xml配置见29.328的6.1.1.1第5点)
- 无论请求数据是否存在于HSS中,返回成功码
PU(Profile-Update)
AS更新impu的透明数据或PSI的激活状态、短信服务注册信息、STN-SR、动态服务激活信息
- 检查请求的AS是否拥有读取该数据的权限,否则返回错误码(检查Origin-Host + Data-Reference)
- 检查请求中的impi(如果存在)和impu是否存在于HSS且有关联,否则返回错误码
- 如果请求数据中包含PSI Activation(Public Server Identity),则检查HSS中impu是否包含PSI,不包含则返回错误码
- 如果AS要更新的数据正在被其他实体修改,是则返回错误码
- 按照data-refence更新数据
- 如果是切换PSI激活状态,HSS在判断是PSI类型的impu后,切换对应的impu的PSI激活状态,否则返回错误码。当impu的激活状态由激活切换这未激活,会触发对HSS侧的impu注销(注册状态切换)
- 如果是DASI(动态服务激活信息),HSS会判断impu是否存在匹配DSAI-Tag的DSAI的实例,如果匹配上则更新,否则返回错误码。(DSAI值的修改会修改对于impu拥有的IFC屏蔽状态,这可能会造成sh口发送通知消息或cx口更新消息)
- 如果是SMSR注册信息,HSS检查对于请求中的IP-SM-GW数量是否为空。如果为空,HSS删除保存的已注册的IP-SM-GW数量和标识(如果是预配置,则不执行删除),返回成功码。反之,则保存IP-SM-GW数量和标识(Origin-Host+Origin-Realm),返回成功码(如果是预配置,则不执行重写)。HSS中服务中心的地址不会被更新。
- 如果是STN-SR且STN-SR不同于HSS/UDM中已存在的,则HSS会更新STN-SR。如果HSS不存在STN-SR,则会发送错误码
- 如果data-refence为repository-data类型,HSS检查该impu是否已经存在resporitory-data
- 如果存在,则检查请求的序列号是否符合要求(不为0且等于HSS中序列号加一)。不符合则返回错误码,符合则继续检查请求中的数据是否超过HSS储存范围。如果超过则返回错误码,反之更新HSS中的数据和序列号
- 如果不存在,则检查请求的序列号是否是为0。不为0则返回错误码,为0则检查请求中的数据是否存在且不超过储存。如果不符合则返回错误码,符合则保存数据。
SN(Subscribe-Notifications)
- AS向HSS订阅通知,当impu的特定透明或非透明数据更新时,能收到HSS的通知
- 检查AS是否允许订阅相关数据的通知。如果不允许,返回错误码
- 检查请求中的impi(如果存在)和impu是否存在于HSS且有关联,否则返回错误码
- 如果impu的类型不能作为请求中要求订阅数据的引用(access key),则返回错误码
- 检查订阅的数据类型
- 如果是DASI(动态服务激活信息),HSS会判断impu是否存在匹配DSAI-Tag的DSAI的实例,不能则返回错误码。
- 如果是RepositoryData,HSS会检查和该类型有关的透明数据是否存在。如果不存在,则返回错误码
- 如果请求中包含订阅到期时间,则HSS应该在响应中也返回一个到期时间,值为订阅成功时订阅到期的绝对时间。响应中返回的时间应该早于实际到期时间。如果设置了到期时间,则在设定时间之后,HSS不会发送通知。如果请求中没有到期时间,则HSS认为请求为不限时的订阅。如果再次收到新的到期时间的订阅请求,HSS会刷新原来的到期时间
- 如果是订阅请求,则HSS将订阅的AS和相关的数据关联后,返回成功码。如果是去订阅请求,则去订阅成功或者是as不存在list(标准中没有指明哪个list?)中时,返回成功码
- 如果HSS支持Notif-Eff特性,且一个请求中出现多个订阅数据类型或、服务指令或impu,则它们的每个都应该当作一个订阅请求单独处理。如果它们所有的处理结果都是成功,则返回成功码。如果存在失败的结果,则撤销成功的订阅操作,返回错误码
- 如果请求中存在发送数据的指令,且HSS支持返回请求中的用户数据。为避免操作数据冲突,在返回数据之前,应该检查数据正在更新。如果正在更新,应该等待更新完成,再返回更新后的用户数据
PN(Push-Notification)
- HSS通知AS定于的透明或非透明数据发生修改
- 当用户状态切换为一个短时间的鉴权状态,且鉴权之前和之后的状态一致时,HSS不发送通知
- 如果HSS和AS支持Notif-Eff特性,且和一个impu有关的多个订阅通知需要发送,HSS会将这些通知合并为一个请求发送
- HSS中订阅数据的删除,通过请求中的User-Data中对应的空标签通知
- HSS中订阅用户的删除,通过请求中的DeletedIdentities元素是心啊
- 如果在订阅(SN)请求中表明是一个一次性通知请求,则在执行本次通知后,HSS会删除该订阅信息,且不会再发送通知