本文技术原理深度参考了3GPP TS 23.501 V18.9.0 (2025-03) Release 18规范中,关于“6.3 Principles for Network Function and Network Function Service discovery and selection”的核心章节,旨在为读者提供一个5G核心网服务化架构(SBA)的“灵魂”——网络功能(NF)的发现与选择机制的全景视图。本文是解读“6 Network Functions”系列的第六部分。
深度解析 3GPP TS 23.501:5GC的“寻址艺术” - NF发现与选择 (6.3)
欢迎来到“解构5G核心网”的NF深度解析系列。在前面的文章中,我们已经逐一认识了5GC的各位“演员”——AMF、SMF、PCF、UPF、UDM等。我们知道,5G是一个服务化架构(SBA),这些“演员”们不再像4G时代那样通过固定的、点对点的线路连接,而是像在一个巨大的、分布式的“微服务市场”中,动态地寻找并调用彼此的服务。
那么,这个“市场”是如何运作的?当AMF需要为UE寻找一个SMF时,它如何在成千上万的SMF实例中,找到最合适的那一个?当SMF需要选择一个PCF时,它又是如何确保这个PCF能理解并处理特定的业务策略?
今天,我们将深入探讨规范的6.3章节,揭示5G服务化架构的“灵魂”和“寻址艺术”——网络功能(NF)的发现与选择机制。这套机制是整个SBA能够动态、灵活、弹性伸缩的基石。
为了让这个抽象的“寻址”过程变得生动,我们将引入一个综合性的场景:“未来城市”正在举办一场国际性的电竞总决赛。
-
普通观众小晴: 她在现场用手机看比赛直播,需要一个稳定的eMBB连接。
-
VIP观众Alex: 他购买了VIP套餐,可以在现场通过AR眼镜,以选手的“第一视角”观看比赛,这需要一个低时延的切片服务。
-
选手“ProGamer”: 他在比赛区,需要连接到一个具有超低时延、最高优先级、并且锚定在赛场边缘UPF的专用电竞切片。
-
漫游用户Mr. Smith: 他是来自国外的游客,也想观看比赛直播。
我们将跟随这四位不同身份的用户发起网络连接的请求,看看AMF和SMF是如何利用NRF,像一个经验丰富的“高级猎头”,根据每个人不同的“需求画像”(签约、位置、请求的业务等),从庞大的NF实例池中,为他们精准地“匹配”并选择了最合适的SMF和PCF的。
1. 发现与选择的“总原则” (6.3.1 General)
规范首先确立了NF发现与选择的基本框架和核心依赖——NRF(网络注册库功能)。
Unless the expected NF and NF service information is locally configured on the requester NF… the NF and NF service discovery is implemented via the Network Repository Function (NRF).
In order for the requested NF type or NF service to be discovered via the NRF, the NF instance need to be registered in the NRF. This is done by sending a Nnrf_NFManagement_NFRegister containing the NF profile.
1.1 “先注册,后发现”
这是SBA最基本的原则。任何一个NF实例(生产者)在上线提供服务之前,都必须先向NRF进行注册,提交自己的“NF Profile”(名片)。这张名片详细说明了它的身份、地址、能力和服务范围。只有被录入NRF这个“黄页目录”的NF,才有可能被其他NF(消费者)发现。
1.2 发现请求的核心要素
当一个NF消费者需要寻找一个NF生产者时,它会向NRF发起一个发现请求。这个请求的核心是告诉NRF“我想找一个什么样的NF”。最基本的筛选条件包括:
-
NF Type: 要找的NF类型,例如
SMF,PCF,UDM。 -
Service Name(s) (可选): 如果需要调用特定的服务,可以指定服务名称,例如
Nsmf_PDUSession。
1.3 场景代入:网络启动时
“未来城市”为电竞决赛新建了一套网络设施。当这些设施启动时:
-
位于赛场边缘的
SMF-Esports-1启动,它立即向NRF注册,并在Profile中声明:“我是SMF,我支持S-NSSAI=Esports-Slice,我服务的DNN是esports.arena.com,我的服务区域是TAI-Arena”。 -
位于市中心的
SMF-Public-1启动,它也向NRF注册,声明:“我是SMF,我支持S-NSSAI=eMBB-Slice,我服务的DNN是internet,我的服务区域是TAI-CityCenter”。
这个注册过程,为后续的智能选择奠定了数据基础。
2. 精准匹配:SMF的发现与选择 (6.3.2 SMF discovery and selection)
SMF的选择是PDU会话建立过程中最复杂、最重要的发现流程之一。AMF在为UE选择SMF时,会考虑一系列精细化的参数,以确保选择的SMF能够最优地满足业务需求。
The following factors may be considered during the SMF selection:
a) Selected Data Network Name (DNN).
b) S-NSSAI of the HPLMN… and S-NSSAI of the VPLMN…
c) NSI-ID.
…
f) Subscription information from UDM, e.g. … whether LBO roaming is allowed.
k) UE location (i.e. TA).
l) Service Area of the candidate SMFs.
2.1 SMF选择的“多维考量”
AMF在向NRF查询SMF时,会综合使用以下一个或多个“筛选标签”:
-
业务维度 (DNN & S-NSSAI): 这是最基本的筛选条件。AMF会告诉NRF:“我需要一个能支持这个特定DNN和这个特定S-NSSAI的SMF”。
-
位置维度 (UE Location & SMF Service Area): AMF会将UE当前的TAI(跟踪区标识)提供给NRF。NRF会优先返回那些其
Service Area包含了该TAI的SMF实例。这确保了SMF能够管理UE所在区域的UPF。 -
签约维度 (Subscription Information): AMF从UDM获取的签约信息中,可能包含特殊的路由策略,例如:
-
漫游策略: 这个DNN是否允许LBO(本地疏导)漫游?如果是HR(归属地路由),那么AMF在VPLMN就需要发现一个V-SMF,同时还需要为H-SMF的发现提供信息。
-
特定SMF绑定: 签约中可能规定,某个DNN必须由某个特定的SMF Set来服务。
-
-
能力维度 (Capability): AMF还会考虑UE和业务所需的能力,例如:
-
是否需要支持CIoT控制面优化?
-
是否需要支持MA PDU会话(ATSSS)?
-
是否需要支持EPS互操作?
-
-
动态维度 (Load conditions & Analytics): NRF可以维护SMF实例的负载状态。AMF在选择时,可以优先选择负载较低的实例。如果部署了NWDAF,NRF甚至可以根据NWDAF提供的负载预测分析,做出更智能的选择。
2.2 场景代入:为不同用户匹配SMF
让我们看看AMF是如何为四位不同的用户,做出截然不同的SMF选择的:
-
普通观众小晴:
-
输入:
Requested NSSAI = eMBB-Slice,DNN = internet,UE Location = TAI-Arena。 -
NRF返回: 可能会返回多个在赛场区域支持eMBB的公共SMF。
-
AMF选择: AMF选择其中一个负载最低的SMF,例如
SMF-Public-2。
-
-
VIP观众Alex:
-
输入:
Requested NSSAI = AR-Slice,DNN = internet,UE Location = TAI-Arena。 -
NRF返回: 只返回了专门配置用于服务AR切片的
SMF-AR-1。 -
AMF选择: AMF别无选择,只能选择
SMF-AR-1。
-
-
电竞选手“ProGamer”:
-
输入:
Requested NSSAI = Esports-Slice,DNN = esports.arena.com,UE Location = TAI-Arena。 -
NRF返回: 只返回了部署在赛场边缘机房的
SMF-Esports-1。 -
AMF选择: 选择了
SMF-Esports-1,以确保最低时延和对边缘UPF的直接控制。
-
-
漫游用户Mr. Smith:
-
输入:
Requested NSSAI = eMBB-VPLMN-Slice(映射到HPLMN的eMBB切片),DNN = internet,UE Location = TAI-Arena,并且签约数据指示支持LBO漫游。 -
NRF返回: VPLMN的NRF返回了本地支持该漫游切片和DNN的
SMF-Public-2。 -
AMF选择: AMF选择了
SMF-Public-2作为V-SMF,实现了流量的本地疏导。
-
通过这套精细化的发现与选择机制,网络为每个用户都匹配到了最合适的SMF,这是实现差异化服务的第一步。
3. “委托猎头”:委托发现 (Delegated Discovery) 与 SCP
在大型、复杂的网络中,让每一个NF都去和NRF进行复杂的交互,可能会增加信令负担和实现的复杂性。因此,5GC引入了SCP(Service Communication Proxy)和委托发现机制。
If the requester NF is configured to delegate discovery, the requester NF may omit the discovery procedure with the NRF and instead delegate the discovery to the SCP; the SCP will then act on behalf of the requester NF. In this case, the requester NF adds any necessary discovery and selection parameters to the request…
核心理念:
-
NF“偷懒”: NF消费者(如AMF)不再自己去查询NRF,而是直接将服务请求发送给SCP。
-
SCP代劳: 在请求中,AMF会附加上所有的“发现和选择参数”(如DNN, S-NSSAI, 位置等)。
-
SCP扮演“猎头”: SCP收到请求后,代替AMF去查询NRF,并根据返回的结果和自身的路由策略,选择一个最优的生产者实例(如SMF),然后将请求直接转发过去。
这种模式简化了普通NF的实现逻辑,将复杂的发现和路由逻辑集中到了SCP中,便于统一管理和策略升级。
4. “跨国猎聘”:跨PLMN的发现
当涉及到漫游场景时,发现过程就变成了“跨国猎聘”。
For NF and NF service discovery across PLMNs, the NRF in the local PLMN interacts with the NRF in the remote PLMN to retrieve the NF profile(s) of the NF instance(s) in the remote PLMN that matches the discovery criteria.
核心机制:
-
NRF间的联盟: VPLMN的NRF(vNRF)与HPLMN的NRF(hNRF)之间,通过N27接口建立了互联。
-
请求转发: 当VPLMN中的一个NF(如V-SMF)需要发现HPLMN中的NF(如H-PCF)时,它会向vNRF发起请求。vNRF发现这是一个跨网请求后,会将请求转发给hNRF。
-
hNRF查询并返回: hNRF在HPLMN内部进行查询,并将结果通过vNRF返回给V-SMF。
这个过程由SEPP进行安全保护,确保了跨运营商的服务发现既安全又高效。
5. FAQ
Q1: 如果NRF返回了多个可用的SMF实例,AMF是如何做最终选择的?
A:
AMF会根据本地策略进行“优中选优”。这个策略是运营商可配置的,通常会考虑以下因素:
-
负载均衡: 这是最主要的考量。NRF返回的NF Profile中可能包含NF Load(负载)和NF Capacity(容量)信息。AMF会优先选择当前负载最低的SMF实例。
-
权重因子(Weight Factor): 运营商可以为每个SMF实例配置一个权重,AMF根据权重进行加权轮询。
-
地理位置/时延: 如果NRF返回的Profile中包含了
locality(位置信息),AMF可能会优先选择地理位置上“最近”的SMF。 -
其他: 还可能包括故障状态、软件版本等其他运维因素。
Q2: 什么是NF Set ID 和 NF Service Set ID?它们和NF Instance ID有什么关系?
A:
这体现了NF实例管理的层次化。
-
NF Instance ID: 唯一标识一个物理或虚拟的NF实例,例如,运行在一台服务器上的那个AMF软件。
-
NF Set ID: 标识一组功能等价、互为备份的NF实例。例如,一个AMF Set可能包含3个AMF实例,它们共享同一个AMF Set ID。当一个实例故障时,其他实例可以接替它的工作。RAN在选择AMF时,实际上是先选择一个AMF Set,再在Set内选择一个具体的AMF实例。
-
NF Service Set ID: 标识由不同NF实例提供的、共享相同上下文的、可互换的一组服务实例。例如,多个SMF实例可以组成一个SMF Set,它们提供的
Nsmf_PDUSession服务可以进一步组成一个NF Service Set。这意味着,一个由SMF-1创建的会话上下文,可以被SMF-2无缝地接管和处理。
Q3: 委托发现(Delegated Discovery)模式下,SCP是如何选择最终的NF实例的?
A:
SCP的选择逻辑比AMF更复杂,因为它承担了更多的路由和策略功能。除了AMF会考虑的负载、权重等因素外,SCP还会考虑:
-
服务拓扑: SCP拥有更全局的网络服务拓扑视图,它可以根据更复杂的路由算法(如最短路径、最低时延路径)来选择NF实例。
-
动态路由策略: SCP可以接收来自网络管理系统的动态策略,例如,“在下午5点到晚上9点之间,所有视频业务的SMF选择,都应优先路由到具备视频优化能力的SMF Set B”。
-
跨服务网格(Service Mesh)路由: 在更复杂的、基于微服务的部署中,SCP可以处理跨服务网格的路由和发现。
Q4: 在发现PCF时,SMF和AMF都会去查询。它们选择的PCF可以是同一个吗?
A:
可以是,也可能不是,但最终会趋于一致。 规范定义了两种PCF的角色:
-
PCF for UE Policy: 负责UE级别的策略,主要是URSP规则。这个PCF由AMF在UE注册时选择。
-
PCF for Session Policy: 负责PDU会话级别的策略,主要是PCC规则。这个PCF由SMF在PDU会话建立时选择。
在理想情况下,为了策略的一致性,AMF和SMF应该选择同一个PCF实例。规范中也定义了相应的机制来促进这种一致性:例如,AMF在选择完PCF后,可以将选择的PCF ID通知给SMF。SMF在为该UE建立PDU会话时,就可以直接使用AMF已经选择好的PCF,而无需再次进行发现。
Q5: 如果一个NF实例的功能发生了变化(例如,升级后支持了新的服务),NRF是如何知道的?
A:
该NF实例需要向NRF发起一次NF Update操作。
-
当一个NF实例的功能发生变更时(例如,通过OAM配置,为一个SMF增加了对ATSSS功能的支持),该SMF实例需要构造一个新的NF Profile,反映其最新的能力集。
-
然后,它向NRF发起一个
Nnrf_NFManagement_NFUpdate请求,用新的Profile覆盖掉旧的Profile。 -
NRF在更新完自己的注册表后,还会检查是否有其他NF订阅了该NF实例的变更。如果有,NRF会向这些订阅者发送通知(Notification),告知它们该NF实例的Profile已经发生了变化,以便它们及时刷新本地的缓存信息。这个“注册-更新-通知”的闭环,保证了整个服务化架构的信息同步和动态适应能力。