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

5GC实践篇之BSF篇第13篇:IP地址重复的会话绑定信息查询

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

5GC实践篇之BSF篇第13篇:IP地址重复的会话绑定信息查询

作者:爱卫生


1 测试背景与用例简介

在前面的文章中,我们讨论了BSF的基本查询场景——通过用户IP地址查询对应的PCF绑定信息。但在实际网络部署中,有一个复杂且必须面对的场景:IP地址重叠(IP Address Overlap)

IP地址重叠在以下场景中经常出现:

  1. 不同SMF/BSF使用了相同的IP地址段:当网络中部署了多个SMF/BSF时,不同SMF/BSF可能为各自服务的用户分配相同的私网IPv4地址(如172.24.1.2)。这是因为每个SMF/BSF管理独立的IP地址池,相互之间不感知对方的地址分配情况。
  1. 同一SMF/BSF内部存在多个IP地址域(ipDomain):在某些部署中,同一SMF/BSF可能同时服务多个IP地址域,不同ipDomain中的用户可能分配到相同的IPv4地址。

无论哪种情况,当AF/DRA仅凭用户IP地址查询BSF时,可能得到多个结果或者查到错误的PCF。ipDomain参数就是3GPP为解决这一问题而引入的——通过IP地址+ipDomain的组合,唯一标识一条绑定记录。

本篇聚焦于IP地址重复场景下的会话绑定信息查询,验证BSF如何通过ipDomain参数区分使用相同IP地址的不同用户,返回正确的PCF绑定信息。

两种IP地址重叠场景

场景 描述 区分方式
场景1:不同SMF/BSF间重叠 SMF/BSF1和SMF/BSF2使用相同IPv4地址段,ipDomain不同 AF根据ipDomain选择正确的BSF
场景2:同一SMF/BSF内重叠 同一SMF/BSF内部有多个ipDomain,地址段重叠 AF查询时携带ipDomain参数

详细消息流程图

场景1:不同SMF/BSF的IPv4地址段重复


sequenceDiagram

    participant AF as AF

    participant BSF1 as SMF/BSF1

    participant BSF2 as SMF/BSF2

    participant PCF1 as PCF1

    participant PCF2 as PCF2

    Note over AF, PCF2: 前置: 用户A和用户B使用相同IPv4地址172.24.1.2

    Note over AF, PCF2: 用户A绑定BSF1/ipDomain1, 用户B绑定BSF2/ipDomain2

    Note over AF, PCF1: 查询用户A的绑定信息

    AF->>BSF1: GET /pcfBindings ipv4Addr=172.24.1.2, ipDomain=bsfipdomain1

    Note right of AF: Nbsf_Management_Discovery_Req<br/>携带ipDomain区分

    BSF1-->>AF: 200 OK (用户A绑定PCF1)

    Note left of BSF1: 返回: SUPI A + DNN + PCF1信息

    AF->>PCF1: Npcf_PolicyAuthorization_Req

    PCF1-->>AF: Npcf_PolicyAuthorization_Rsp

    Note over AF, PCF2: 查询用户B的绑定信息

    AF->>BSF2: GET /pcfBindings ipv4Addr=172.24.1.2, ipDomain=bsfipdomain2

    Note right of AF: Nbsf_Management_Discovery_Req<br/>相同IP不同ipDomain

    BSF2-->>AF: 200 OK (用户B绑定PCF2)

    Note left of BSF2: 返回: SUPI B + DNN + PCF2信息

    AF->>PCF2: Npcf_PolicyAuthorization_Req

    PCF2-->>AF: Npcf_PolicyAuthorization_Rsp

场景2:同一SMF/BSF内部IP地址段重复


sequenceDiagram

    participant AF as AF

    participant BSF3 as SMF/BSF3

    participant PCF1 as PCF1

    participant PCF2 as PCF2

    Note over AF, PCF2: 前置: 用户C和用户D在BSF3内使用相同IPv4地址

    Note over AF, PCF2: 用户C绑定ipDomain3, 用户D绑定ipDomain4

    Note over AF, PCF1: 查询用户C的绑定信息

    AF->>BSF3: GET /pcfBindings ipv4Addr=172.24.1.X, ipDomain=ipdomain3

    BSF3-->>AF: 200 OK (用户C绑定PCF1)

    AF->>PCF1: AAR (Rx接口策略授权)

    PCF1-->>AF: AAA

    Note over AF, PCF2: 查询用户D的绑定信息

    AF->>BSF3: GET /pcfBindings ipv4Addr=172.24.1.X, ipDomain=ipdomain4

    BSF3-->>AF: 200 OK (用户D绑定PCF2)

    AF->>PCF2: AAR (Rx接口策略授权)

    PCF2-->>AF: AAA


flowchart TD

    A["AF收到策略授权请求"] --> B["提取用户IP地址"]

    B --> C["AF已配置IP段与ipDomain的对应关系"]

    C --> D["携带ipDomain参数查询BSF"]

    D --> E["BSF根据IP+ipDomain匹配绑定"]

    E --> F["返回唯一匹配的PCF绑定信息"]

    F --> G["AF或DRA将请求路由到正确PCF"]

    style E fill:#fff9c4,stroke:#f57f17,stroke-width:3px

    style F fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px


2 协议规范与关键技术

2.1 相关协议参考

  • TS 29.551(Nbsf_Management服务):第6.1.6节定义了PcfBinding数据结构中的ipDomain字段。第5.2.2.2节定义了Nbsf_Management_Discovery操作的查询参数,包括ipDomain作为可选查询条件。

  • TS 23.501(5G系统架构):第5.8.2.6节描述了BSF在IP地址重叠场景下如何通过ipDomain区分不同的绑定记录。

  • TS 29.513(PCF策略控制):描述了Rx接口会话绑定的交互流程。

2.2 ipDomain参数的作用

ipDomain(IP地址域标识)是3GPP为解决IP地址重叠问题而引入的参数。其核心设计思想是:

  1. 地址域划分:每个SMF/BSF的IP地址池可以划分为一个或多个ipDomain,每个ipDomain有唯一的标识符;

  2. 绑定记录唯一性:绑定记录由(IP地址 + ipDomain)组合唯一标识,而非仅靠IP地址;

  3. AF配置:AF/DRA需要预先配置用户IP地址段与ipDomain、BSF地址的对应关系,在查询时携带正确的ipDomain。

2.3 ipDomain在不同部署模式下的使用

部署模式 ipDomain使用 说明
单SMF/单IP段 不需要ipDomain IP地址唯一,无需区分
多SMF/地址段重叠 AF根据ipDomain选BSF 不同SMF使用不同ipDomain
单SMF/多IP域 查询时携带ipDomain 同一SMF内不同地址域
独立BSF/多SMF ipDomain作为查询参数 BSF根据ipDomain路由

3 消息流程与详细解读

3.1 测试前置条件

场景1前置条件(不同SMF/BSF间重叠):

  1. 网络中BSF、DRA、PCF1、PCF2网元系统及操作维护台运行正常;

  2. SMF/BSF1和SMF/BSF2的IPv4地址段重叠,ipDomain不同(bsfipdomain1和bsfipdomain2);

  3. 用户A附着成功,SMF/BSF1已创建用户A的DNN1 PDU会话绑定(IPv4地址172.24.1.2 + ipDomain1 + PCF1);

  4. 用户B附着成功,SMF/BSF2已创建用户B的DNN1 PDU会话绑定(IPv4地址172.24.1.2 + ipDomain2 + PCF2);

  5. AF已配置用户IP地址段、ipDomain和BSF ID或地址的对应关系。

场景2前置条件(同一SMF/BSF内重叠):

  1. SMF/BSF3内IPv4地址段重叠,包含多个ipDomain(ipDomain3和ipDomain4);

  2. 用户C附着成功,SMF/BSF3已创建绑定(IPv4地址172.24.1.X + ipDomain3 + PCF1);

  3. 用户D附着成功,SMF/BSF3已创建绑定(IPv4地址172.24.1.X + ipDomain4 + PCF2)。

3.2 测试步骤

  1. 在SMF/BSF上进行消息跟踪/抓包操作;

  2. 用户A发起数据业务应用,触发策略授权请求操作;

  3. 用户B发起数据业务应用,触发策略授权请求操作;

  4. 用户C发起数据业务应用,触发策略授权请求操作;

  5. 用户D发起数据业务应用,触发策略授权请求操作。

3.3 ipDomain查询路由流程


flowchart TD

    A["AF收到应用层策略请求"] --> B["提取用户IP地址"]

    B --> C{"AF查找IP段与ipDomain映射"}

    C --> D["映射到ipDomain1和BSF1"]

    C --> E["映射到ipDomain2和BSF2"]

    D --> F["查询BSF1: IP + ipDomain1"]

    E --> G["查询BSF2: IP + ipDomain2"]

    F --> H["BSF1返回用户A的PCF1绑定"]

    G --> I["BSF2返回用户B的PCF2绑定"]

    H --> J["AF向PCF1发起策略授权"]

    I --> K["AF向PCF2发起策略授权"]

    style F fill:#fff9c4,stroke:#f57f17,stroke-width:2px

    style G fill:#fff9c4,stroke:#f57f17,stroke-width:2px

    style H fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px

    style I fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px


4 关键信令参数分析

4.1 场景1:查询BSF1的用户A绑定信息(ipDomain=bsfipdomain1)

AF使用用户A的IP地址(172.24.1.2)和ipDomain(bsfipdomain1)查询BSF1:


curl -v --http2 --http2-prior-knowledge -X GET \

  "http://10.10.32.250:30086/nbsf-management/v1/pcfBindings\

  ?ipDomain=bsfipdomain1&ipv4Addr=172.24.1.2"

> GET /nbsf-management/v1/pcfBindings?ipDomain=bsfipdomain1&ipv4Addr=172.24.1.2

> Host: 10.10.32.250:30086

> User-Agent: curl/7.49.0

> Accept: */*

< HTTP/2.0 200

< content-type: application/json

< content-length: 278

{

    "ipv6Prefix": "2a01:172:2401:0:657a:4ecc:b212:498a",

    "dnn": "Internet2",

    "pcfDiamHost": "rxDiam-Host.com",

    "supi": "4608800000XXXXXA",

    "pcfIpEndPoints": [{"ipv4Address": "10.10.32.34", "port": 9091}],

    "snssai": {"sst": 2, "sd": "000001"},

    "gpsi": "86138000XXXXXA",

    "pcfDiamRealm": "rxDiam-Realm.com"

}

参数分析:

参数 说明
查询参数 ipv4Addr 172.24.1.2 用户A的IPv4地址
查询参数 ipDomain bsfipdomain1 用户A所属的IP地址域
响应 dnn Internet2 用户A的DNN
响应 pcfIpEndPoints 10.10.32.34:9091 PCF1的SBI地址
响应 supi 4608800000XXXXXA 用户A的SUPI

4.2 场景1:查询BSF2的用户B绑定信息(ipDomain=bsfipdomain2)

AF使用用户B的IP地址(172.24.1.2)和ipDomain(bsfipdomain2)查询BSF2:


curl -v --http2 --http2-prior-knowledge -X GET \

  "http://10.10.32.250:30086/nbsf-management/v1/pcfBindings\

  ?ipDomain=bsfipdomain2&ipv4Addr=172.24.1.2"

> GET /nbsf-management/v1/pcfBindings?ipDomain=bsfipdomain2&ipv4Addr=172.24.1.2

> Host: 10.10.32.250:30086

< HTTP/2.0 200

< content-type: application/json

< content-length: 246

{

    "dnn": "apn2",

    "ipv4Addr": "172.24.1.2",

    "pcfDiamHost": "rxDiam-Host.com",

    "supi": "4608800000XXXXXB",

    "pcfIpEndPoints": [{"ipv4Address": "10.10.32.32", "port": 9091}],

    "snssai": {"sst": 2, "sd": "000001"},

    "gpsi": "86138000XXXXXB",

    "pcfDiamRealm": "rxDiam-Realm.com"

}

关键发现: 两次查询使用了相同的IPv4地址(172.24.1.2),但因为ipDomain不同(bsfipdomain1 vs bsfipdomain2),BSF返回了不同的绑定信息:

  • ipDomain=bsfipdomain1 -> 返回用户A(SUPI: ...XXXXXA)绑定PCF1(10.10.32.34);

  • ipDomain=bsfipdomain2 -> 返回用户B(SUPI: ...XXXXXB)绑定PCF2(10.10.32.32)。

4.3 用户A的SMF会话信息


[local]SMF02#epg smf user-info identifier-type imsi value 4608800000XXXXXA

mobile-user-information:

    subscriber-information:

        imsi: 4608800000XXXXXA

        msisdn: 86138000XXXXXA

        imei: 49172000XXXXXA0

        active-pdu-sessions:

            active-pdu-session:

                pdu-session-id: 5

                dnn-in-use: Internet2

                ue-address-1:

                    ipv6: 2a01:172:2401:0:657a:4ecc:b212:498a/64

                ue-address-2:

                    ipv4: 172.24.1.2

                single-nssai:

                    slice-service-type: 2

                    slice-differentiator: 000001

                n3-interface:

                    ran-fteid:

                        teid: 1342197282

                        address: 174.29.0.33

                    upf-fteid:

                        teid: 249561089

                        address: 10.185.255.7

            active-pdu-session:

                pdu-session-id: 6

                dnn-in-use: Internet2

                ue-address-1:

                    ipv6: 2a01:172:2401:1:b017:e2b4:8107:be0c/64

                ue-address-2:

                    ipv4: 172.24.1.3

                session-ambr:

                    uplink-kbps: 50000

                    downlink-kbps: 150000

4.4 用户B的SMF会话信息


[local]SMF02#epg smf user-info identifier-type imsi value 4608800000XXXXXB

mobile-user-information:

    subscriber-information:

        imsi: 4608800000XXXXXB

        msisdn: 86138000XXXXXB

        imei: 49172000XXXXXB0

        active-pdu-sessions:

            active-pdu-session:

                pdu-session-id: 5

                dnn-in-use: apn2

                ue-address-1:

                    ipv4: 172.24.1.2

                single-nssai:

                    slice-service-type: 2

                    slice-differentiator: 000001

                n3-interface:

                    ran-fteid:

                        teid: 1342197281

                        address: 174.28.0.34

                    upf-fteid:

                        teid: 597688321

                        address: 10.185.255.2

4.5 两个用户会话对比

参数 用户A 用户B
IMSI 4608800000XXXXXA 4608800000XXXXXB
IPv4地址: 172.24.1.2 | 172.24.1.2(相同)
IPv6地址 2a01:...:498a
DNN Internet2 apn2
ipDomain bsfipdomain1 bsfipdomain2
PCF 10.10.32.34:9091 10.10.32.32:9091
RAN地址 174.29.0.33 174.28.0.34
UPF地址 10.185.255.7 10.185.255.2

两个用户虽然分配了相同的IPv4地址,但分属不同的ipDomain、不同的DNN、连接不同的PCF和UPF,完全独立的会话。


5 测试验证与数据解读

5.1 验证一:场景1中BSF1正确响应ipDomain1查询

BSF1成功响应AF基于用户A的IP地址(172.24.1.2)和ipDomain(bsfipdomain1)的查询请求,返回用户A的完整绑定信息,包括SUPI、DNN、PCF ID、PCF IP地址和Diameter路由信息。

5.2 验证二:场景1中BSF2正确响应ipDomain2查询

BSF2成功响应AF基于用户B的IP地址(172.24.1.2)和ipDomain(bsfipdomain2)的查询请求,返回用户B的绑定信息。关键点是:相同的IP地址,不同的ipDomain,返回不同的绑定结果

5.3 验证三:场景2中同一BSF内ipDomain区分

同一SMF/BSF3内部,用户C和用户D使用相同的IPv4地址但属于不同的ipDomain。BSF3能根据ipDomain参数区分两个用户,分别返回各自对应的PCF绑定信息。

5.4 测试结果汇总

验证项 预期结果 实际结果 结论
BSF1响应ipDomain1查询 返回用户A绑定PCF1 200 OK, SUPI A + PCF1 通过
BSF2响应ipDomain2查询 返回用户B绑定PCF2 200 OK, SUPI B + PCF2 通过
相同IP不同ipDomain区分 返回不同绑定 正确区分 通过
同一BSF内ipDomain区分 正确区分用户C/D 正确返回 通过
Diameter路由信息完整 含pcfDiamHost 确认包含 通过

6 小结与思考

本篇验证了IP地址重叠场景下BSF的会话绑定信息查询能力。测试结果表明:

  1. ipDomain是解决地址重叠的关键:在不同SMF/BSF使用相同IP地址段、或同一SMF/BSF内部存在多个IP地址域时,ipDomain参数能够准确区分不同的绑定记录,确保查询结果唯一且正确。

  2. AF/DRA的配置至关重要:ipDomain机制的正确运作依赖于AF/DRA预先配置好IP地址段与ipDomain、BSF地址的映射关系。如果配置错误,AF可能查询到错误的BSF或返回错误的绑定信息。

  3. 两种重叠场景均验证通过:无论是跨SMF/BSF的地址重叠,还是同一SMF/BSF内的地址重叠,BSF都能正确处理。

延伸思考:

  • IPv6场景:IPv6地址空间极大(128位),在大多数部署中不太可能出现地址重叠问题。因此ipDomain主要解决的是IPv4地址重叠场景,在纯IPv6部署中可能不需要使用ipDomain。

  • 自动化配置:如何自动化地维护AF/DRA中的IP段-ipDomain-BSF映射关系?在NF动态扩缩容场景下,手动配置显然不可行。未来可能需要通过NRF的服务发现机制自动获取这些映射。

  • 大规模重叠:在超大网络中,可能存在数十个SMF/BSF使用相同IP地址段的情况。此时AF需要维护大量的映射关系,查询效率和管理复杂度都需要关注。

协议参考:根据3GPP TS 29.551第5.2.2.2节,Nbsf_Management_Discovery操作支持ipDomain作为查询参数。当BSF中存在多条使用相同IP地址但属于不同ipDomain的绑定记录时,BSF应根据ipDomain参数筛选并返回唯一的匹配记录。如果查询参数不包含ipDomain且匹配到多条记录,BSF应返回400 Bad Request错误。


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

← 返回 BSF 实践篇