5G核心网学习平台
BSF 实践篇 #10

5GC实践篇之BSF篇第4篇:BSF支持服务发现

《5G核心网原理与实践》实践篇 · BSF 网元功能

5GC实践篇之BSF篇第4篇:BSF支持服务发现

作者:爱卫生


1 测试背景与用例简介

在5GC的服务化架构(SBA)中,"注册"让BSF在NRF中"存在",而"发现"则让BSF被其他网元"找到"。本篇聚焦5GC SBA中另一个核心机制——BSF服务发现(NF Discovery)

如果说注册是BSF在NRF这个"黄页"中登记自己的联系方式,那么服务发现就是PCF、AF等网元翻阅这本"黄页"查找BSF的过程。没有服务发现,注册就毫无意义——因为没有任何网元能找到已注册的BSF。

什么是BSF服务发现?

BSF服务发现是指其他NF(如PCF、AF)通过NRF的Nnrf_NFDiscovery服务,根据特定查询条件(如目标NF类型、服务名称、IP地址等)查找可用的BSF实例。NRF根据查询条件,在已注册的NFProfile中进行匹配,返回符合条件的BSF列表。

谁需要发现BSF?

在5GC的PCC架构中,主要有以下网元需要发现BSF:

发现方 发现目的 典型场景
PCF 查找管理特定UE IP地址的BSF PCF收到AF的策略请求后,需通过BSF查询AF会话与PDU会话的绑定信息
AF 查找可用的BSF来创建会话绑定 AF需要为某个应用流创建策略绑定,需找到管理目标UE的BSF
CHF 计费关联查询 部分计费场景需要通过BSF关联AF会话和计费会话
target-nf-type 目标NF类型 BSF
requester-nf-type 请求方NF类型 PCF / AF
service-names 目标服务名称 nbsf_management
target-plmn-list 目标PLMN 460XX
ipv4-address UE IPv4地址(用于精确匹配BSF) 10.XX.100.5
ipv6-prefix UE IPv6前缀(用于精确匹配BSF) 2a01:9:2::0/64
dnn 数据网络名称 internet
URI {apiRoot}/nnrf-disc/v1/nf-instances
target-nf-type=BSF 只查找BSF类型 NRF可能有数百个已注册NF,此参数大幅缩小搜索范围
service-names=nbsf_management 只查找支持该服务的NF 确保返回的BSF支持PCF需要的服务操作
ipv4-address=10.XX.100.5 根据UE IP地址匹配 NRF根据BSF注册的bsfInfo.ipv4AddressRanges进行精确匹配
nfInstanceID BSF实例标识 用于后续直接调用BSF服务时的路由标识
nfStatus BSF当前状态 确认BSF可用(REGISTERED)
ipEndPoints BSF服务端点 PCF根据此信息直接向BSF发起HTTP请求
bsfInfo BSF服务范围 确认该BSF确实管理目标IP地址
缓存有效期 NRF在发现响应中可携带Cache-Control: max-age=XX头域,指示PCF/AF可以缓存结果的有效时长
缓存失效 当缓存的BSF实例不可达(如HTTP连接失败)时,PCF/AF应清除缓存并重新发起发现请求
缓存刷新 缓存过期后,PCF/AF需要重新向NRF发起发现请求获取最新的BSF信息
轮询(Round-Robin) 按顺序依次选择 负载均衡
随机选择 随机选择一个 简单负载分担
优先级选择 优先选择高优先级实例 主备场景
拓扑就近选择 选择网络距离最近的实例 低延迟场景
负载感知选择 优先选择负载较低的实例 负载均衡

NRF在发现响应中可能携带各BSF实例的负载信息(如loadLevelAvg),PCF/AF可以据此做出更智能的选择。


2.7 【实战验证】服务发现的curl模拟

为了验证BSF服务发现的正确性,可以通过curl命令模拟PCF的发现请求:


# 模拟PCF发起BSF发现请求

$ curl -X GET "http://10.XX.XX.XX:31380/nnrf-disc/v1/nf-instances?target-nf-type=BSF&requester-nf-type=PCF&service-names=nbsf_management" | python -mjson.tool

{

    "nfInstances": [

        {

            "nfInstanceID": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",

            "nfType": "BSF",

            "nfStatus": "REGISTERED",

            "nfServices": [

                {

                    "serviceName": "nbsf_management",

                    "scheme": "http",

                    "ipEndPoints": [

                        {

                            "ipv4Address": "10.XX.XX.XX",

                            "port": 8080

                        }

                    ]

                }

            ],

            "bsfInfo": {

                "ipv4AddressRanges": [

                    {

                        "start": "10.XX.0.0",

                        "end": "10.XX.255.255"

                    }

                ],

                "ipv6PrefixRanges": [

                    {

                        "start": "2a01:172:253::0/64",

                        "end": "2a01:172:253:ffff::0/64"

                    }

                ]

            }

        }

    ]

}

验证要点:

  • nfType为BSF,确认返回的是BSF实例;

  • nfStatus为REGISTERED,确认BSF在线可用;

  • serviceName包含nbsf_management,确认支持所需服务;

  • ipEndPoints包含可达的IP和端口,确认可以建立连接。


3 测试结论

验证项 结果 说明
PCF通过NRF发现BSF OK Nnrf_NFDiscovery交互正确
target-nf-type过滤正确 OK NRF只返回BSF类型的NF
service-names过滤正确 OK 只返回支持nbsf_management的BSF
IP地址匹配正确 OK NRF根据bsfInfo.ipv4AddressRanges精确匹配
返回结果可用 OK BSF的ipEndPoints可达,PCF可直接调用

本测试用例完美通过。PCF通过NRF的Nnrf_NFDiscovery服务成功发现了BSF实例。NRF能够根据查询参数(target-nf-type=BSF、service-names=nbsf_management、ipv4-address等)进行精确匹配,返回管理目标UE IP地址的BSF实例信息。PCF根据发现结果中的ipEndPoints成功建立了与BSF的连接。整个服务发现流程与3GPP TS 29.510和TS 29.551规范完全吻合。

协议参考汇总

  • 3GPP TS 29.510 第6.2节:NF Discovery Service,定义发现流程和查询参数

  • 3GPP TS 29.551 第6.1.6节:BsfInfo数据结构,定义BSF的地址段信息

  • 3GPP TS 29.551 第5.2节:Nbsf_Management服务操作



关于作者:爱卫生,从事通信教学18年,出版过《5G核心网原理与实践》等4本专业书籍。学5G核心网、IMS,来51学通信就对了!知识星球:200+小时视频、3000+精华文章、1年答疑群。公众号/知识星球:51学通信,微信:gprshome201101

← 返回 BSF 实践篇