5GC实践篇之BSF篇第14篇:查询不到会话绑定信息
作者:爱卫生
1 测试背景与用例简介
在前面的文章中,我们讨论了BSF的各种"正常"场景——查询到了绑定信息、IP地址重叠场景的区分查询等。但在实际网络中,还有一种必须妥善处理的异常场景:查询不到会话绑定信息。
什么情况下会查询不到绑定信息?以下是一些典型的场景:
- 绑定信息被删除:用户B的PDU会话已释放(或签约变更导致绑定被删除),但AF/DRA尚未感知到这一变化,仍然发起了基于该用户IP地址的查询;
《5G核心网原理与实践》实践篇 · BSF 网元功能
作者:爱卫生
在前面的文章中,我们讨论了BSF的各种"正常"场景——查询到了绑定信息、IP地址重叠场景的区分查询等。但在实际网络中,还有一种必须妥善处理的异常场景:查询不到会话绑定信息。
什么情况下会查询不到绑定信息?以下是一些典型的场景:
会话尚未建立:AF/DRA在用户PDU会话建立完成之前就发起了查询(时序问题);
绑定信息过期:在独立BSF场景下,绑定信息可能因超时而被清理;
网络故障:BSF与SMF之间的同步出现异常,导致绑定信息丢失。
无论哪种原因,当BSF查询不到绑定信息时,需要给查询方(DRA/AF/PCF)返回明确的错误响应,以便查询方能够进行后续处理(如重试、降级、通知上层应用等)。
本篇聚焦于查询不到会话绑定信息时的BSF行为,验证BSF在该场景下返回204 No Content的错误响应码。
本测试采用对比验证法:
正对照:用户A的绑定信息正常存在,查询返回200 OK+完整绑定信息;
负对照:用户B的绑定信息已被删除,查询返回204 No Content。
通过两个用户的对比,清晰地展示BSF在有绑定和无绑定两种情况下的不同行为。
sequenceDiagram
participant DRA as DRA/SCEF/AAC
participant BSF as SMF/BSF
participant PCF1 as PCF1
participant PCF2 as PCF2
Note over DRA, PCF2: 前置: 用户A和用户B已建立PDU会话
Note over DRA, PCF2: 用户B的绑定信息已被手动删除
Note over DRA, PCF1: 场景1: 查询用户A的绑定信息 - 正对照
DRA->>BSF: GET /pcfBindings ipv4Addr=172.24.X.X
Note right of DRA: Nbsf_Management_Discovery_Req<br/>查询用户A的IP地址
BSF-->>DRA: 200 OK (用户A的PCF绑定信息)
Note left of BSF: 返回完整绑定信息:<br/>SUPI A + PCF1 ID + PCF1地址
DRA->>PCF1: AAR (Rx接口策略授权请求)
PCF1-->>DRA: AAA (Rx接口策略授权响应)
Note left of PCF1: 正常完成策略授权流程
Note over DRA, PCF2: 场景2: 查询用户B的绑定信息 - 负对照
DRA->>BSF: GET /pcfBindings ipv4Addr=172.24.X.Y
Note right of DRA: Nbsf_Management_Discovery_Req<br/>查询用户B的IP地址
BSF-->>DRA: 204 No Content
Note left of BSF: 绑定信息不存在<br/>返回204 No Content
Note over DRA: DRA无法完成策略授权<br/>需要异常处理
flowchart LR
subgraph 正对照_用户A查询成功
A1["DRA查询用户A绑定"] --> B1["BSF查找绑定记录"]
B1 --> C1["找到匹配记录"]
C1 --> D1["返回200 OK和完整绑定信息"]
end
subgraph 负对照_用户B查询失败
A2["DRA查询用户B绑定"] --> B2["BSF查找绑定记录"]
B2 --> C2["未找到匹配记录"]
C2 --> D2["返回204 No Content"]
end
style C1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style D1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style C2 fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style D2 fill:#ffcdd2,stroke:#c62828,stroke-width:2px
TS 29.551(Nbsf_Management服务):第5.2.2.2节定义了Nbsf_Management_Discovery操作的响应码。当BSF根据查询参数未找到匹配的绑定记录时,应返回204 No Content响应码,响应体为空。
TS 29.513(PCF策略控制):第4.2节描述了当Rx接口无法完成会话绑定时的错误处理流程。
TS 23.501(5G系统架构):第5.8.2.6节描述了BSF在策略控制架构中的角色,以及在绑定信息不存在时对策略控制流程的影响。
BSF在查询不到绑定信息时返回204 No Content,这与常见的404 Not Found不同。理解这一区别很重要:
| 响应码 | 含义 | BSF使用场景 |
|---|---|---|
200 OK |
查询成功 | 找到匹配的绑定记录 |
|---|---|---|
204 No Content |
查询成功但无内容 | 查询参数有效但无匹配记录 |
400 Bad Request |
请求错误 | 查询参数无效或匹配多条记录 |
403 Forbidden |
禁止访问 | 查询方无权限 |
404 Not Found |
资源不存在 | 指定的bindingId不存在 |
为什么用204而不是404? 因为204 No Content表示"请求处理成功,但没有内容可返回",强调的是BSF服务本身正常工作,只是没有匹配的数据。而404 Not Found通常表示"请求的资源不存在",更多用于REST API中指定ID的资源查询。
当BSF返回204 No Content时,DRA/AF无法获取PCF的地址信息,导致Rx接口的策略授权流程无法继续。可能的处理策略包括:
重试:DRA在短时间后重新查询BSF,可能绑定信息已被重新创建;
降级:AF在无法获取策略授权时,可能使用默认策略(如尽力而为QoS);
错误通知:DRA向AF返回错误,由AF决定后续操作(如拒绝会话建立)。
网络中BSF、DRA或SCEF/AAC、PCF1、PCF2网元系统及操作维护台运行正常;
用户A(IMSI: 4608800000XXXXXA)附着成功,SMF/BSF已创建IMS PDU会话和数据业务PDU会话;
用户B(IMSI: 4608800000XXXXXB)附着成功,SMF/BSF已创建IMS PDU会话和数据业务PDU会话;
DRA或SCEF/AAC上已配置用户IP地址段和BSF ID或地址的对应关系;
IMS AF或SCEF/AAC接入DRA,采用Rx接口访问PCF。
在SMF/BSF上进行消息跟踪/抓包操作;
在BSF上删除用户B的会话绑定信息(模拟绑定丢失场景);
用户A发起语音业务或数据业务,触发策略授权请求操作;
用户B发起语音业务或数据业务,触发策略授权请求操作。
flowchart TD
A["DRA收到AF的策略授权请求"] --> B["DRA提取用户IP地址"]
B --> C["DRA查询BSF: GET /pcfBindings"]
C --> D{"BSF返回结果"}
D -->|"200 OK"| E["DRA获取PCF地址"]
D -->|"204 No Content"| F["绑定信息不存在"]
E --> G["DRA将AAR路由到PCF"]
F --> H["DRA无法路由AAR"]
H --> I["DRA向AF返回错误"]
I --> J["AF处理策略授权失败"]
style F fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style I fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style G fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
用户A(IMSI: 4608800000XXXXXA)附着成功,SMF/BSF已创建PDU会话:
[local]SMF07#epg smf user-info identifier-type imsi value 4608800000XXXXXA
mobile-user-information:
subscriber-information:
imsi: 4608800000XXXXXA
msisdn: 86138000XXXXXA
imei: 88723900XXXXXA0
active-pdu-sessions:
active-pdu-session:
pdu-session-id: 5
dnn-in-use: apn1
an-type: 3GPP
ssc-mode: SSC_MODE_1
ue-address-1:
ipv4: 172.24.6.2
ip-address-allocation-method: Shared IP Pool
single-nssai:
slice-service-type: 5
slice-differentiator: 000001
nr-location:
tai:
plmn-id: mnc88.mcc460
tac: 10
ncgi:
plmn-id: mnc88.mcc460
nr-cell-id: 15335424
amf-information:
amf-id: 78ab1112-86e1-427d-be1e-9e2d125f5c8c
address: 10.10.32.127:8080
n3-interface:
ran-fteid:
teid: 1342177293
address: 174.38.0.33
upf-fteid:
teid: 1415577601
address: 2a01:10:185:255::8
n4-interface:
local-fseid:
seid: 739259520
address: 10.10.32.96
remote-fseid:
seid: 12159718993900339201
address: 10.10.32.83
qos-flows:
qos-flow:
qos-flow-id: 5
fiveQi: 5
allocation-retention-priority:
priority-level: 1
pre-emption-capability: Disabled
pre-emption-vulnerability: Disabled
session-ambr:
uplink-kbps: 123457
downlink-kbps: 1235000
用户B(IMSI: 4608800000XXXXXB)附着成功,SMF/BSF已创建PDU会话:
[local]SMF07#epg smf user-info identifier-type imsi value 4608800000XXXXXB
mobile-user-information:
subscriber-information:
imsi: 4608800000XXXXXB
msisdn: 86138000XXXXXB
imei: 88723900XXXXXB0
active-pdu-sessions:
active-pdu-session:
pdu-session-id: 5
dnn-in-use: apn1
an-type: 3GPP
ssc-mode: SSC_MODE_1
ue-address-1:
ipv4: 172.24.6.3
single-nssai:
slice-service-type: 5
slice-differentiator: 000001
amf-information:
amf-id: 78ab1112-86e1-427d-be1e-9e2d125f5c8c
address: 10.10.32.127:8080
n3-interface:
ran-fteid:
teid: 1342177295
address: 174.38.0.32
n4-interface:
local-fseid:
seid: 192099088
address: 10.10.32.96
session-ambr:
uplink-kbps: 123457
downlink-kbps: 1235000
| 参数 | 用户A | 用户B |
|---|---|---|
| IMSI | 4608800000XXXXXA | 4608800000XXXXXB |
| IPv4地址 | 172.24.6.2 | 172.24.6.3 |
| DNN | apn1 | apn1 |
| S-NSSAI | SST=5, SD=000001 | SST=5, SD=000001 |
| AMF ID | 78ab1112-...-9e2d125f5c8c | 78ab1112-...-9e2d125f5c8c |
| PDU Session ID | 5 | 5 |
| QoS Flow | QFI=5, 5QI=5 | QFI=5, 5QI=5 |
| AMBR | UL: 123457/DL: 1235000 kbps | UL: 123457/DL: 1235000 kbps |
DRA基于用户A的IP地址(172.24.6.2)查询BSF,BSF成功返回完整的PCF绑定信息。用户A的策略授权流程正常完成。
在BSF上删除用户B的会话绑定信息后,DRA基于用户B的IP地址(172.24.6.3)查询BSF。由于绑定信息已不存在,BSF返回204 No Content。
BSF查询用户A绑定信息——成功(200 OK):
[local]SMF07#epg smf sbi bsf-services show-pcf-binding-info address 172.24.6.2
pcf-binding-information:
snssai-sst: 5
snssai-sd: 000001
ueIp: 172.24.6.2
dnn: apn1
supi: 4608800000XXXXXA
gpsi: 86138000XXXXXA
pcfId: [PCF1 Instance ID]
pcfIpEndPoints: 10.10.32.XX:9091
BSF查询用户B绑定信息——失败(绑定已删除):
BSF在内部删除用户B的绑定记录后,对用户B IP地址的查询返回空结果。
BSF成功响应DRA基于用户A IP地址的会话绑定信息查询请求。SMF/BSF针对用户A的IP地址查询到会话绑定信息,将PCF1的ID和地址返回给DRA。
关键点:
响应码:200 OK
响应体:包含完整的PcfBinding信息
后续操作:DRA根据返回的PCF信息,成功将Rx AAR路由到PCF1
BSF响应DRA基于用户B IP地址的会话绑定信息查询请求。由于用户B的绑定信息已被删除,BSF返回204 No Content。
关键点:
响应码:204 No Content
响应体:空
后续操作:DRA无法获取PCF地址,策略授权流程失败
| 验证项 | 用户A(正对照) | 用户B(负对照) |
|---|---|---|
| 绑定信息状态 | 存在 | 已删除 |
| BSF查询响应 | 200 OK | 204 No Content |
| PCF信息返回 | 返回PCF1完整信息 | 无 |
| 策略授权 | 成功完成 | 无法完成 |
| DRA路由 | 正常路由到PCF1 | 无法路由 |
当BSF返回204 No Content时,对上层业务的影响取决于具体场景:
| 业务场景 | 影响程度 | 可能的处理 |
|---|---|---|
| IMS语音(VoNR/VoLTE) | 高 | 语音呼叫可能失败,需要重试 |
| 数据业务QoS保障 | 中 | 可能降级为默认QoS |
| 计费控制 | 高 | 计费可能不准确 |
| 应用层策略 | 低 | 使用默认策略 |
| 验证项 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|
| 用户A查询成功 | 200 OK + 绑定信息 | 确认返回完整绑定 | 通过 |
| 用户B查询失败 | 204 No Content | 确认返回204 | 通过 |
| 正负对照对比 | 行为差异明显 | 用户A成功/B失败 | 通过 |
| 204响应码正确 | 符合协议规范 | 与TS 29.551一致 | 通过 |
本篇验证了BSF在查询不到会话绑定信息时的行为。测试结果表明:
明确的错误响应:当BSF中不存在匹配的绑定记录时,BSF返回204 No Content响应码,响应体为空。这一行为与3GPP TS 29.551规范一致。
正负对照验证:用户A(绑定信息存在)的查询成功返回200 OK,用户B(绑定信息已删除)的查询返回204 No Content。两个用户的对比清晰展示了BSF的正确行为。
对业务的影响:查询失败意味着策略授权流程无法继续,上层应用需要具备错误处理和降级能力。
延伸思考:
204与 BINDING_INFORMATION_NOT_FOUND 的关系:在SMF内置BSF场景下,CLI查询返回的是Error: BINDING_INFORMATION_NOT_FOUND。而通过SBI接口查询时,BSF返回的是HTTP 204 No Content。两者表达的是同一个含义——绑定信息不存在,只是接口层面的表达方式不同。
绑定信息的生命周期管理:在实际网络中,绑定信息的删除应该是PDU会话释放流程的一部分,确保"会话释放->绑定删除"的原子性。如果出现绑定信息提前删除的情况(如本测试中手动删除),说明网络中可能存在异常,需要关注。
查询失败的监控与告警:运营商应监控BSF的查询失败率。如果查询失败率异常升高,可能意味着SMF与BSF之间的绑定信息同步出现问题,需要及时排查。
协议参考:根据3GPP TS 29.551第5.2.2.2.4节,当BSF根据
Nbsf_Management_Discovery请求中的查询参数未找到匹配的PcfBinding记录时,BSF应返回204 No Content响应码,不携带响应体。查询方收到204响应后,应按照自身的错误处理策略进行后续操作。