OmniUPF 操作指南
目录
概述
OmniUPF(基于 eBPF 的用户面功能)是一种高性能的 5G/LTE 用户面功能���为移动网络提供运营商级的分组转发、QoS 执行和流量管理。OmniUPF 基于 Linux eBPF(扩展伯克利包过滤器)技术构建,并增强了全面的管理能力,提供 5G SA、5G NSA 和 LTE 网络所需的核心分组处理基础设施。
什么是用户面功能?
用户面功能(UPF)是 3GPP 标准化的网络元素,负责 5G 和 LTE 网络中的分组处理和转发。它提供:
- 高速分组转发,在移动设备和数据网络之间
- 服务质量(QoS) 执行,针对不同流量类型
- 基于分组过滤器和规则的流量检测和路由
- 用量报告,用于计费和分析
- 分组缓冲,用于移动性和会话管理场景
- 合法拦截 支持,以满足监管合规要求
OmniUPF 实现了 3GPP TS 23.501(5G)和 TS 23.401(LTE)中定义的完整 UPF 功能,提供一个完整的、生产就绪的用户面解决方案,使用 Linux 内核 eBPF 技术以获得最大性能。
OmniUPF 关键能力
分组处理:
- 完全符合 3GPP 标准的用户面分组处理
- 基于 eBPF 的数据路径,提供内核级性能
- GTP-U(GPRS 隧道协议)封装和解封装
- 支持 IPv4 和 IPv6,适用于接入和数据网络
- XDP(eXpress 数据路径)以实现超低延迟处理
- 多线程分组处理
QoS ��流量管理:
- 带宽管理的 QoS 执行规则(QER)
- 流量分类的分组检测规则(PDR)
- 路由决策的转发动作规则(FAR)
- 针对特定应用的服务数据流(SDF)过滤
- 用量报告规则(URR),用于流量跟踪和计费
控制和管理:
- PFCP(分组转发控制协议)接口与 SMF/PGW-C
- 用于监控和诊断的 RESTful API
- 实时统计和指标
- eBPF 映射容量监控
- 基于 Web 的控制面板
性能特性:
- 通过 eBPF 实现零拷贝分组处理
- 内核级分组转发(无用户空间开销)
- 多核可扩展性
- 支持硬件加速的卸载能力
- 针对云原生部署进行了优化
有关详细的控制面板使用,请参见 Web UI 操作。
理解用户面架构
OmniUPF 是一个统一的用户面解决方案,为 5G 独立(SA)、5G NSA 和 4G LTE/EPC 网络提供运营商级的分组转发。OmniUPF 是一个单一产品,可以同时作为:
- UPF(用户面功能) - 5G/NSA 用户面(通过 N4/PFCP 由 OmniSMF 控制)
- PGW-U(PDN 网关用户面) - 4G EPC 网关到外部网络(通过 Sxc/PFCP 由 OmniPGW-C 控制)
- SGW-U(服务网关用户面) - 4G EPC 服务网关(通过 Sxb/PFCP 由 OmniSGW-C 控制)
OmniUPF 可以在 任何组合 的这些模式��运行:
- 仅 UPF:纯 5G 部署
- PGW-U + SGW-U:组合的 4G 网关(典型的 EPC 部署)
- UPF + PGW-U + SGW-U:同时支持 4G 和 5G(迁移场景)
所有模式都使用相同的基于 eBPF 的分组处理引擎和 PFCP 协议,无论作为 UPF、PGW-U、SGW-U 还是同时作为三者,都提供一致的高性能。
5G 网络架构(SA 模式)
OmniUPF 解决方案位于 5G 网络的数据面,提供连接移动设备与数据网络和服务的高速分组转发层。
4G LTE/EPC 网络架构
OmniUPF 还支持 4G LTE 和 EPC��演进分组核心)部署,视网络架构的不同,可以作为 OmniPGW-U 或 OmniSGW-U。
组合 PGW-U/SGW-U 模式(典型 4G 部署)
在此模式下,OmniUPF 同时作为 SGW-U 和 PGW-U,由不同的控制面功能控制。
分开的 SGW-U 和 PGW-U 模式(漫游/多站点)
在漫游或���站点部署中,可以部署两个独立的 OmniUPF 实例 - 一个作为 SGW-U,另一个作为 PGW-U。
用户面功能在网络中的工作原理
用户面功能(OmniUPF、OmniPGW-U 或 OmniSGW-U)作为转发平面,由相应的控制平面控制:
-
会话建立
- 5G:OmniSMF 通过 N4 接口与 OmniUPF 建立 PFCP 关联
- 4G:OmniPGW-C 或 OmniSGW-C 通过 Sxb/Sxc 与 OmniPGW-U/OmniSGW-U 建立 PFCP 关联
- 控制面为每个 UE PDU 会话(5G)或 PDP 上下文(4G)创建 PFCP 会话
- 用户面通过 PFCP 接收 PDR、FAR、QER 和 URR 规则
- eBPF 映射填充转发规则
-
上行分组处理(UE → 数据网络)
- 5G:分组通过 N3 接口从 gNB 到达,带有 GTP-U 封装
- 4G:分组通过 S1-U 接口(SGW-U)或 S5/S8 接口(PGW-U)从 eNodeB 到达,带有 GTP-U 封装
- 用户面根据 TEID 将分组与上行 PDR 进行匹配
- eBPF 程序应用 QER(速率限制、标记)
- FAR 确定转发动作(转发、丢弃、缓冲、重复)
- 移除 GTP-U 隧道,分组转发到 N6(5G)或 SGi(4G)接口
- URR 跟踪分组和字节计数以进行计费
-
下行分组处理(数据网络 → UE)
- 5G:分组通过 N6 接口以原生 IP 形式到达
- 4G:分组通过 SGi 接口以原生 IP 形式到达
- 用户面根据 UE IP 地址将分组与下行 PDR 进行匹配
- SDF 过滤器可能进一步根据端口、协议或应用程序对流量进行分类
- FAR 确定 GTP-U 隧道和转发参数
- 添加 GTP-U 封装,使用适当的 TEID
- 5G:分组转发到 N3 接口,指向 gNB
- 4G:分组转发到 S1-U(SGW-U)或 S5/S8(PGW-U),指向 eNodeB
-
移动性和切换
- 5G:在切换场景中,OmniSMF 更新 PDR/FAR 规则
- 4G:OmniSGW-C/OmniPGW-C 在 eNodeB 之间切换或 TAU(跟踪区域更新)期间更新规则
- 用户面在路径切换期间可能会缓冲分组
- 在基站之间实现无缝过渡,无分组丢失
与控制面集成(4G 和 5G)
OmniUPF 通过标准的 3GPP 接口与 5G 和 4G 控制面功能集成:
5G 接口
| 接口 | 从 → 到 | 目的 | 3GPP 规范 |
|---|---|---|---|
| N4 | OmniSMF ↔ OmniUPF | PFCP 会话建立、修改、删除 | TS 29.244 |
| N3 | gNB → OmniUPF | 来自 RAN 的用户面流量(GTP-U) | TS 29.281 |
| N6 | OmniUPF → 数据网络 | 发送到 DN 的用户面流量(原生 IP) | TS 23.501 |
| N9 | OmniUPF ↔ OmniUPF | 漫游/边缘的 UPF 之间通信 | TS 23.501 |
4G/EPC 接口
| 接口 | 从 → 到 | 目的 | 3GPP 规范 |
|---|---|---|---|
| Sxb | OmniSGW-C ↔ OmniUPF(SGW-U 模式) | 服务网关的 PFCP 会话控制 | TS 29.244 |
| Sxc | OmniPGW-C ↔ OmniUPF(PGW-U 模式) | PDN 网关的 PFCP 会话控制 | TS 29.244 |
| S1-U | eNodeB → OmniUPF(SGW-U 模式) | 来自 RAN 的用户面流量(GTP-U) | TS 29.281 |
| S5/S8 | OmniUPF(SGW-U)↔ OmniUPF(PGW-U) | 网关之间的用户面(GTP-U) | TS 29.281 |
| SGi | OmniUPF(PGW-U 模式)→ PDN | 发送到数据网络的用户面流量(原生 IP) | TS 23.401 |
注意:所有 PFCP 接口(N4、Sxb、Sxc)使用 TS 29.244 中定义的相同 PFCP 协议。接口名称不同,但协议和消息格式是相同的。
有关 PFCP 会话管理,请参见 PFCP 操作。
UPF 组件
eBPF 数据路径
eBPF 数据路径是核心分组处理引擎,运行在 Linux 内核中以实现最大性能。
核心功能:
- GTP-U 处理:GTP-U 隧道的封装和解封装
- 分组分类:使用 TEID、UE IP 或 SDF 过滤器匹配分组
- QoS 执行:根据 QER 规则应用速率限制和分组标记
- 转发决策:执行 FAR 动作(转发、丢弃、缓冲、重复、通知)
- 用量跟踪:为基于流量的计费递增 URR 计数器
eBPF 映射: 数据路径使用 eBPF 映射(内核内存中的哈希表)进行规则存储:
| 映射名称 | 目的 | 键 | 值 |
|---|---|---|---|
uplink_pdr_map | 上行 PDR | TEID(32 位) | PDR 信息(FAR ID、QER ID、URR IDs) |
downlink_pdr_map | 下行 PDR(IPv4) | UE IP 地址 | PDR 信息 |
downlink_pdr_map_ip6 | 下行 PDR(IPv6) | UE IPv6 地址 | PDR 信息 |
far_map | 转发规则 | FAR ID | 转发参数(动作、隧道信息) |
qer_map | QoS 规则 | QER ID | QoS 参数(MBR、GBR、标记) |
urr_map | 用量跟踪 | URR ID | 流量计数器(上行、下行、总计) |
sdf_filter_map | SDF 过滤器 | PDR ID | 应用过滤器(端口、协议) |
性能特征:
- 零拷贝:分组完全在内核空间处理
- XDP 支持:在网络驱动程序级别附加以实现亚微秒延迟
- 多核:跨 CPU 核心扩展,支持每 CPU 映射
- 容量:数百万个 PDR/FAR 在 eBPF 映射中(受限于内核内存)
有关容量监控,请参见 容量管理。
PFCP 接口处理程序
PFCP 接口实现 3GPP TS 29.244,用于与 SMF 或 PGW-C 进行通信。
核心功能:
- 关联管理:PFCP 心跳和关联设置/释放
- 会话生命周期:创建、修改和删除 PFCP 会话
- 规则安装:将 PFCP 信息元素转换为 eBPF 映射条目
- 事件报告:通知 SMF 用量阈值、错误或会话事件
支持的 PFCP 消息:
| 消息类型 | 方向 | 目的 |
|---|---|---|
| 关联设置 | SMF → UPF | 建立 PFCP 控制关联 |
| 关联释放 | SMF → UPF | 拆除 PFCP 关联 |
| 心跳 | 双向 | 保持关联活跃 |
| 会话建立 | SMF → UPF | 创建新的 PDU 会话,包含 PDR/FAR/QER/URR |
| 会话修改 | SMF → UPF | 更新移动性、QoS 变化的规则 |
| 会话删除 | SMF → UPF | 移除会话及所有关联规则 |
| 会话报告 | UPF → SMF | 报告用量、错误或事件 |
支持的信息元素(IE):
- 创建 PDR、FAR、QER、URR
- 更新 PDR、FAR、QER、URR
- 移除 PDR、FAR、QER、URR
- 分组检测信息(UE IP、F-TEID、SDF 过滤器)
- 转发参数(网络实例、外部头创建)
- QoS 参数(MBR、GBR、QFI)
- 用量报告触发器(流量阈值、时间阈值)
有关详细的 PFCP 操作,请参见 PFCP 操作指南。
REST API 服务器
REST API 提供对 UPF 状态和操作的编程访问。
核心功能:
- 会话监控:查询活动的 PFCP 会话和关联
- 规则检查:查看 PDR、FAR、QER、URR 配置
- 统计信息:检索分组计数器、路由统计、XDP 统计
- 缓冲管理:查看和控制分组缓冲
- 映射信息:监控 eBPF 映射的使用和容量
API 端点:(共 34 个端点)
| 类别 | 端点 | 描述 |
|---|---|---|
| 健康 | /health | 健康检查和状态 |
| 配置 | /config | UPF 配置 |
| 会话 | /pfcp_sessions, /pfcp_associations | PFCP 会话/关联数据 |
| PDRs | /uplink_pdr_map, /downlink_pdr_map, /downlink_pdr_map_ip6, /uplink_pdr_map_ip6 | 分组检测规则 |
| FARs | /far_map | 转发动作规则 |
| QERs | /qer_map | QoS 执行规则 |
| URRs | /urr_map | 用量报告规则 |
| 缓冲 | /buffer | 分组缓冲状态和控制 |
| 统计 | /packet_stats, /route_stats, /xdp_stats, /n3n6_stats | 性能指标 |
| 容量 | /map_info | eBPF 映射容量和使用 |
| 数据平面 | /dataplane_config | N3/N9 接口地址 |
有关 API 详细信息和使用,请参见 PFCP 操作指南 和 监控指南。
Web 控制面板
Web 控制面板提供了一个实时仪表板,用于 UPF 监控和管理。
功能:
- 会话视图:浏览活动的 PFCP 会话,显示 UE IP、TEID 和规则计数
- 规则管理:查看和管理所有会话中的 PDR、FAR、QER 和 URR
- 缓冲监控:跟踪缓冲的分组并控制每个 FAR 的缓冲
- 统计仪表板:实时分组、路由、XDP 和 N3/N6 接口统计
- 容量监控:eBPF 映射使用情况��带有颜色编码的容量指示器
- 配置视图:显示 UPF 配置和数据平面地址
- 日志查看器:实时日志流以进行故障排除
有关详细的 UI 操作,请参见 Web UI 操作指南。
PFCP 协议与 SMF 集成
PFCP 关联
在创建会话之前,SMF 必须与 UPF 建立 PFCP 关联。
关联生命周期:
关键点:
- 每个 SMF 与 UPF 建立一个关联
- UPF 通过节点 ID(FQDN 或 IP 地址)跟踪关联
- 心跳消息保持关联的活跃性
- 如果释放关联,则删除该关联下的所有会话
有关查看关联的信息,请参见 会话视图。
PFCP 会话创建
当 UE 建立 PDU 会话(5G)或 PDP 上下文(LTE)时,SMF 在 UPF 上创建 PFCP 会话��
会话建立流程:
典型会话内容:
- 上行 PDR:在 N3 TEID 上匹配,通过 FAR 转发到 N6
- 下行 PDR:在 UE IP 地址上匹配,通过 FAR 转发到 N3,带有 GTP-U 封装
- FAR:转发参数(外部头创建、网络实例)
- QER:QoS 限制(MBR、GBR)和分组标记(QFI)
- URR:用于计费的流量报告(可选)
有关会话监控,请参见 PFCP 操作。
PFCP 会话修改
SMF 可以修改会话以���对移动事件(切换)、QoS 变化或服务更新。
常见修改场景:
-
切换(基于 N2)
- 使用新的 gNB 隧道端点(F-TEID)更新上行 FAR
- 可选地在路径切换期间缓冲分组
- 在准备好时将缓冲区清空到新路径
-
QoS 变化
- 使用新的 MBR/GBR 值更新 QER
- 可在 PDR 中添加/移除 SDF 过滤器以实现特定应用的 QoS
-
服务更新
- 为额外流量流添加新的 PDR
- 修改 FAR 以进行路由变化
会话修改流程:
有关规则管理,请参见 规则管理指南。
PFCP 会话删除
当 PDU 会话被释放时,SMF 在 UPF 上删除 PFCP 会话。
会话删除流程:
执行的清理:
- 移除所有 PDR(上行和下行)
- 移除所有 FAR、QER、URR
- 清空分组缓冲
- 将最终用量报告发送给 SMF 以进行计费
常见操作
OmniUPF 通过其基于 Web 的控制面板和 REST API 提供全面的操作能力。本节涵盖常见操作任务及其重要性。
会话监控
理解 PFCP 会话:
PFCP 会话代表活动的 UE PDU 会话(5G)或 PDP 上下文(LTE)。每个会话包含:
- 本地和远程 SEID(会话端点标识符)
- 用于分组分类的 PDR
- 用于转发决策的 FAR
- QoS 执行的 QER(可选)
- 用于用量跟踪的 URR(可选)
关键会话操作:
- 查看所有会话,显示 UE IP 地址、TEID 和规则计数
- 按 IP 地址或 TEID 过滤会话
- 检查会话详细信息,包括完整的 PDR/FAR/QER/URR 配置
- 监控每个 PFCP 关联的会话计数
有关详细的会话程序,请参见 会话视图。
规则管理
分组检测规则(PDR):
PDR 确定哪些分组匹配特定流量流。操作员可以:
- 查看上行 PDR,以 N3 接口上的 TEID 为键
- 查看下行 PDR,以 UE IP 地址(IPv4 和 IPv6)为键
- 检查 SDF 过滤器,以进行特定应用的分类
- 监控 PDR 计数和容量使用情况
转发动作规则(FAR):
FAR 定义对匹配分组的操作。操作员可以:
- 查看 FAR 动作(转发、丢弃、缓冲、重复、通知)
- 检查转发参数(外部头创建、目标)
- 监控每个 FAR 的缓冲状态
- 在故障排除期间切换缓冲,以便于特定 FAR
QoS 执行规则(QER):
QER 应用带宽限制和分组标记。操作员可以:
- 查看 QoS 参数(MBR、GBR、分组延迟预算)
- 监控每个会话的活动 QER
- 检查 QFI 标记,以进行 5G QoS 流
用量报告规则(URR):
URR 跟踪数据流量以进行计费。操作员可以:
- 查看流量计数器(上行、下行、总字节)
- 监控用量阈值和报告触发器
- 检查所有会话中的活动 URR
有关规则操作,请参见 规则管理指南。
分组缓冲
为什么缓冲对 UPF 至关重要
分组缓冲是 UPF 最重要的功能之一,因为它可以防止在移动事件和会话重新配置期间发生分组丢失。如果没有缓冲,移动用户在每次移动到不同的基站或网络条件变化时都会经历连接中断、下载中断和实时通信失败。
问题:移动期间的分组丢失
在移动网络中,用户不断移动。当设备从一个基站移动到另一个基站(切换)时,或者当网络需要重新配置数据路径时,会有一个关键窗口,在此窗口中,分组正在传输,但新路径尚未准备好:
没有缓冲:在这个关键窗口中到达的分组将被 丢弃,导致:
- TCP ��接停滞或重置(网页浏览、下载中断)
- 视频通话冻结或中断(Zoom、Teams、WhatsApp 通话失败)
- 游戏会话断开(在线游戏、实时应用失败)
- VoIP 通话出现间隙或完全中断(电话通话中断)
- 下载失败并需要重新开始
有缓冲:OmniUPF 暂时保存分组,直到新路径建立,然后无缝转发。用户体验到 零中断。
缓冲发生的情况
OmniUPF 在以下关键场景中缓冲分组:
1. 基于 N2 的切换(5G)/ 基于 X2 的切换(4G)
当 UE 在基站之间移动时:
时间线:
- T+0ms:旧路径仍然有效
- T+10ms:SMF 告诉 UPF 进行缓冲(旧路径关闭,新路径尚未准备好)
- T+10-50ms:关键缓冲窗口 - 分组到达但无法转发
- T+50ms:新路径准备就绪,SMF 告诉 UPF 转发
- T+50ms+:UPF 使用新路径清空缓冲分组,然后立即转发新分组
没有缓冲:~40ms 的分组(可能是数千个)将被 丢弃。 有缓冲:零分组丢失,无缝切换。
2. 会话修改(QoS 变化、路径更新)
当网络需要更改会话参数时:
- QoS 升级/降级:用户从 4G 移动到 5G 覆盖(NSA 模式)
- 策略变化:企业用户进入公司校园(流量引导变化)
- 网络优化:核心网络将流量重定向到更靠近的 UPF(ULCL 更新)
在修改期间,控制面可能需要原子性地更新多个规则。缓冲确保分组不会在部分/不一致的规则集下转发。
3. 下行数据通知(空闲模式恢复)
当 UE 处于空闲模式(屏幕关闭,节省电池)并且下行数据到达时:
没有缓冲:触发通知的初始分组将被 丢弃,要求发送者重新传输(增加延迟)。 有缓冲:唤醒 UE 时交付触发通知的分组。
4. 跨 RAT 切换(4G ↔ 5G)
当 UE 在 4G 和 5G 覆盖之间移动时:
- 架构变化(eNodeB ↔ gNB)
- 隧道端点变化(不同的 TEID 分配)
- 缓冲确保在 RAT 类型之间平滑过渡
OmniUPF 中的缓冲工作原理
技术机制:
OmniUPF 使用 两阶段缓冲架构:
- eBPF 阶段(内核):根据 FAR 动作标志检测需要缓冲的分组
- 用户空间阶段:在内存中存储和管理缓冲分组
缓冲过程:
关键细节:
- 缓冲端口:UDP 端口 22152(分组从 eBPF 发送到用户空间)
- 封装:分组以 GTP-U 封装,使用 FAR ID 作为 TEID
- 存储:按 FAR ID、时间戳、方向在内存中存储缓冲分组
- 限制:
- 每个 FAR 限制:10,000 个分组(默认)
- 全局限制:100,000 个分组,跨所有 FAR
- TTL:30 秒(默认) - 超过 TTL 的分组将被丢弃
- 清理:后台进程每 60 秒删除过期的分组
缓冲生命周期:
- 缓冲启用:SMF 通过 PFCP 会话修改设置 FAR 动作 BUFF=1(第 2 位)
- 分组缓冲:eBPF 检测到 BUFF 标志,封装分组,发送到端口 22152
- 用户空间存储:缓冲管理器存储分组,使用 FAR ID、时间戳、方向
- 缓冲禁用:SMF 使用新转发参数设置 FAR 动作 FORW=1,BUFF=0
- 清空缓冲:用户空间根据新 FAR 规则重放缓冲分组(新隧道端点)
- 恢复正常:新分组立即通过新路径转发
这对用户体验的重要性
现实世界影响:
| 场景 | 没有缓冲 | 有缓冲 |
|---|---|---|
| 切换期间的视频通话 | 通话冻结 1-2 秒,可能掉线 | 无缝,未中断 |
| 基站边缘的文件下载 | 下载失败,必须重新开始 | 下载持续不中断 |
| 移动中的在线游戏 | 连接断开,从游戏中被踢出 | 平稳游戏,无断开 |
| 汽车中的 VoIP 通话 | 通话在每次切换时断开 | 清晰无间断 |
| 火车上的视频流 | 视频缓冲,质量下降 | 平稳播放 |
| 笔记本电脑的移动热点 | SSH 会话断开,视频通话失败 | 所有连接保持 |
网络运营商的好处:
- 降低��话掉线率(CDR):关键的网络质量 KPI
- 提高客户满意度:用户不会注意到切换
- 降低支持成本:减少关于连接中断的投诉
- 竞争优势:宣传“最佳覆盖网络”
缓冲管理操作
操作员可以通过 Web UI 和 API 监控和控制缓冲:
监控:
- 查看每个 FAR ID 的缓冲分组(计数、字节、年龄)
- 跟踪缓冲使用情况,与限制(每个 FAR、全局)进行比较
- 警报缓冲溢出或缓冲持续时间过长
- 识别卡住的缓冲(缓冲的分组 > TTL 阈值)
控制操作:
- 清空缓冲:手动触发缓冲重放(故障排除)
- 清除缓冲:丢弃缓冲的分组(清理卡住的缓冲)
- 调整 TTL:更改分组过期时间
- 修改限制:增加每个 FAR 或全局缓冲容量
故障排除:
- 缓冲未清空:检查 SMF 是否发送了 FAR 更新以禁用缓冲
- 缓冲溢出:增加限制或调查为何缓冲持续时间过长
- 缓冲中的旧分组:TTL 可能过高,或 FAR 更新延迟
- 过度缓冲:可能表明移动性问题或 SMF 问题
有关缓冲操作的详细信息,请参见 缓冲管理指南。
缓冲配置
在 config.yml 中配置缓冲行为:
# 缓冲设置
buffer_port: 22152 # 缓冲分组的 UDP 端口(默认)
buffer_max_packets: 10000 # 每个 FAR 的最大分组(防止内存耗尽)
buffer_max_total: 100000 # 跨所有 FAR 的最大总分组
buffer_packet_ttl: 30 # TTL(秒)(丢弃旧分组)
buffer_cleanup_interval: 60 # 清理间隔(秒)
建议:
- 高移动性网络(高速公路、火车):将
buffer_max_packets增加到 20,000+ - 密集城市地区(频繁切换):将
buffer_packet_ttl��少到 15 秒 - 低延迟应用:将
buffer_packet_ttl设置为 10 秒,以防止过期数据 - 物联网网络:减少限制(物联网设备在切换期间产生的流量较少)
有关完整的配置选项,请参见 配置指南。
统计和监控
分组统计:
实时分组处理指标,包括:
- 接收的分组:从所有接口接收的总数
- 发送的分组:发送到所有接口的总数
- 丢弃的分组:由于错误或策略丢弃的分组
- GTP-U 分组:隧道分组计数
路由统计:
每条路由的转发指标:
- 路由命中:每条路由匹配的分组
- 转发计数:每个目标的成功/失败
- 错误计数器:无效 TEID、未知 UE IP
XDP 统计:
eXpress 数据路径性能指标:
- XDP 处理:在 XDP 层处理的分组
- XDP 通过:发送到网络栈的分组
- XDP 丢弃:在 XDP 层丢弃的分组
- XDP 中止:处理错误
N3/N6 接口统计:
每个接口的流量计数器:
- N3 RX/TX:来自 RAN(gNB/eNodeB)的流量
- N6 RX/TX:来自数据网络的流量
- 总分组计数:汇总接口统计
有关监控详细信息,请参见 监控指南。
容量管理
eBPF 映射容量监控:
UPF 性能取决于 eBPF 映射容量。操作员可以:
- 实时监控映射使用情况,显示百分比指标
- 查看每个 eBPF 映射的容量限制
- 颜色编码警报:
- 绿色(<50%):正常
- 黄色(50-70%):注意
- 琥珀色(70-90%):警告
- 红色(>90%):危急
需要监控的关键映射:
uplink_pdr_map:上行流量分类downlink_pdr_map:下行 IPv4 流量分类far_map:转发规则qer_map:QoS 规则urr_map:用量跟踪
容量规划:
- 每个 PDR 消耗一个映射条目(键大小 + 值大小)
- 映射容量在 UPF 启动时配置(内核内存限制)
- 超过容量会导致会话建立失败
有关容量监控,请参见 容量管理。
配置管理
UPF 配置:
查看和验证 UPF 操作参数:
- N3 接口:与 RAN 连接的 IP 地址(GTP-U)
- N6 接口:与数据网络连接的 IP 地址
- N9 接口:用于 UPF 之间通信的 IP 地址(可选)
- PFCP 接口:与 SMF 连接的 IP 地址
- API 端口:REST API 监听端口
- 指标端点:Prometheus 指标端口
数据平面配置:
活动的 eBPF 数据路径参数:
- 活动 N3 地址:运行时 N3 接口绑定
- 活动 N9 地址:运行时 N9 接口绑定(如果启用)
有关配置查看的信息,请参见 配置视图。
故障排除
本节涵盖常见操作问题及其解决策略。
会话建立失败
症状:PFCP 会话无法创建,UE 无法建立数据连接
常见根本原因:
-
PFCP 关联未建立
- 验证 SMF 能否到达 UPF PFCP 接口(端口 8805)
- 检查会话视图中的 PFCP 关联状态
- 验证节点 ID 配置在 SMF 和 UPF 之间是否匹配
-
eBPF 映射容量耗尽
- 检查容量视图,查看红色(>90%)映射使用情况
- 在 UPF 配置中增加 eBPF 映射大小
- 删除过时的会话,如果映射已满
-
无效的 PDR/FAR 配置
- 验证 UE IP 地址是否唯一且有效
- 检查 TEID 分配是否存在冲突
- 确保 FAR 引用有效的网络实例
-
接口配置问题
- 验证 N3 接口 IP 是否可从 gNB 到达
- 检查路由表以确保 N6 与数据网络的连接
- 确认 GTP-U 流量未被防火墙阻止
有关详细故障排除,请参见 故障排除指南。
分组丢失或转发问题
症状:UE 有连接但经历分组丢失或没有流量流动
常见根本原因:
-
PDR 配置错误
- 验证上行 PDR TEID 是否与 gNB 分配的 TEID 匹配
- 检查下行 PDR UE IP 是否与分配的 IP 匹配
- 检查 SDF 过滤器是否过于严格
-
FAR 动作问题
- 验证 FAR 动作是否为转发(而不是丢弃或缓冲)
- 检查外部头创建参数是否正确
- 确保目标端点正确
-
QoS 限制超出
- 检查 QER MBR(最大比特率)设置
- 验证 GBR(保证比特率)分配
- 监控由于速率限制导致的分组丢失
-
接口 MTU 问题
- 验证 GTP-U 开销(40-50 字节)是否导致分片
- 检查 N3/N6 接口的 MTU 配置
- 监控 ICMP 分片需要消息
缓冲相关问题
症状:分组无限期缓冲,缓冲溢出
常见根本原因:
-
切换后未禁用缓冲
- 检查 FAR 缓冲标志(第 2 位)
- 验证 SMF 是否发送会话修改以禁用缓冲
- 如果卡住,手动禁用缓冲通过控制面板
-
缓冲 TTL 到期
- 检查缓冲视图中的分组年龄
- 验证缓冲 TTL 配置(默认可能过长)
- 手动清除过期的缓冲
-
缓冲容量耗尽
- 监控总缓冲使用情况和每个 FAR 限制
- 检查是否存在配置错误的规则导致过度缓冲
- 调整 max_per_far 和 max_total 缓��限制
有关缓冲故障排除的信息,请参见 缓冲操作。
统计异常
症状:意外的分组计数,缺失的统计信息
常见根本原因:
-
计数器溢出
- eBPF 映射使用 64 位计数器(不应溢出)
- 检查日志中的计数器重置事件
- 验证 URR 报告是否正常工作
-
路由统计未更新
- 验证 eBPF 程序是否附加到接口
- 检查内核版本是否支持所需的 eBPF 功能
- 查看 XDP 统计信息以查找处理错误
-
接口统计不匹配
- 将 N3/N6 统计信息与内核接口计数器进行比较
- 检查是否有流量绕过 eBPF(例如,本地路由)
- 验证所有流量是否通过 XDP 钩子
性能下降
症状:高延迟、低吞吐量、CPU 饱和
诊断:
- 监控 XDP 统计:检查 XDP 丢弃或中止情况
- 检查 eBPF 映射访问时间:哈希查找应在亚微秒内
- 查看 CPU 利用率:eBPF 应在核心之间分配
- 分析网络接口:验证 NIC 是否支持 XDP 卸载
可扩展性考虑:
- XDP 性能:每个核心 10M+ 分组每秒
- PDR 容量:数百万个 PDR 仅受限于内核内存
- 会话计数:每个 UPF 实例可支持数千个并发会话
- 吞吐量:在适当的 NIC 卸载下实现多千兆吞吐量
有关性能调整的信息,请参见 架构指南。
附加文档
组件特定操作指南
有关每个 UPF 组件的详细操作和故障排除:
配置指南
完整的配置参考,包括:
- 配置参数(YAML、环境变量、CLI)
- 操作模式(UPF/PGW-U/SGW-U)
- XDP 附加模式(通用/原生/卸载)
- 超级管理程序兼容性(Proxmox、VMware、KVM、Hyper-V、VirtualBox)
- NIC 兼容性和 XDP 驱动程序支持
- 不同场景的配置示例
- 映射大小和容量规划
架构指南
深入的技术分析,包括:
- eBPF 技术基础和程序生命周期
- XDP 数据包处理管道与尾调用
- PFCP 协议实现
- 缓冲架构(GTP-U 封装到端口 22152)
- QoS 滑动窗口速率限制(5ms 窗口)
- 性能特性(3.5μs 延迟,10 Mpps/核心)
规则管理指南
PFCP 规则参考,包括:
- 分组检测规则(PDR) - 流量分类
- 转发动作规则(FAR) - 路由决策与动作标志
- QoS 执行规则(QER) - 带宽管理(MBR/GBR)
- 用量报告规则(URR) - 流量跟踪和报告
- 上行和下行分组流图
- ��则处理逻辑和优先级
监控指南
统计和容量管理,包括:
- N3/N6 接口统计和流量分布
- XDP 处理统计(通过/丢弃/重定向/中止)
- eBPF 映射容量监控,带有颜色编码区域
- 性能指标(分组速率、吞吐量、丢包率)
- 容量规划公式和会话估算
- 警报阈值和最佳实践
Web UI 操作指南
控制面板使用,包括:
- 仪表板概述和导航
- 会话监控(健康/不健康状态)
- 规则检查(PDR、FAR、QER、URR 详细信息)
- 缓冲监控和分组缓冲状态
- 实时统计仪表板
- eBPF 映射容量可视化
- 配置查看
API 文档
完整的 REST API 参考,包括:
- OpenAPI/Swagger 交互式文档
- PFCP 会话和关联端点
- 分组检测规则(PDR) - IPv4 和 IPv6
- 转发动作规则(FAR)
- QoS 执行规则(QER)
- 用量报告规则(URR)
- 分组缓冲管理
- 统计和监控端点
- 路由管理和 FRR 集成
- eBPF 映射信息
- 配置管理
- 身份验证和安全指南
- 常见 API 工作流和示例
UE 路由管理指南
FRR 路由集成,包括:
- FRR(自由范围路由)概述和架构
- UE 路由同步生命周期
- 自动路由同步到路由守护进程
- 通过 OSPF 和 BGP 广播路由
- OSPF 邻居监控
- OSPF 外部 LSA 数据库验证
- BGP 对等会话管理
- Web UI 路由监控界面
- 手动路由同步操作
- 路由流和架构的 Mermaid 图
故障排除指南
全面的问题诊断,包括:
- 快速诊断检查表和工具
- 安装和配置问题
- PFCP 关联失败
- 分组处理问题
- XDP 和 eBPF 错误
- 性能下降
- 超级管理程序特定问题(Proxmox、VMware、VirtualBox)
- NIC 和驱动程序问题
- 逐步解决程序
按用例文档
安装和配置 OmniUPF
在 Proxmox 上部署
优化性能
理解分组处理
规划容量
管理 UE 路由和 FRR 集成
- UE 路由管理指南 - 完整的路由集成指南
- API 文档 - 路由管理 - 路由 API 端点
- Web UI 指南 - 路由页面操作
- UE 路由管理 - FRR 验证 - OSPF LSA 验证
使用 REST API
- API 文档 - 完整的 API 参考
- API 文档 - Swagger UI - 交互式 API 浏览器
- API 文档 - 常见工作流 - API 使用示例
- Web UI 指南 - Web 界面作为 API 客户端示例
故障排除问题
快速参考
常见 API 端点
OmniUPF 提供 REST API 进行监控和管理:
# 状态和健康
GET http://localhost:8080/api/v1/upf_status
# PFCP 关联
GET http://localhost:8080/api/v1/upf_pipeline
# 会话
GET http://localhost:8080/api/v1/sessions
# 统计
GET http://localhost:8080/api/v1/packet_stats
GET http://localhost:8080/api/v1/xdp_stats
# 容量监控
GET http://localhost:8080/api/v1/map_info
# 缓冲统计
GET http://localhost:8080/api/v1/upf_buffer_info
有关完整的 API 文档,请访问 Swagger UI,地址为 http://<upf-ip>:8080/swagger/index.html
重要配置参数
# 网络接口
interface_name: [eth0] # N3/N6/N9 流量的接口
xdp_attach_mode: native # generic|native|offload
n3_address: 10.100.50.233 # N3 接口 IP
pfcp_address: :8805 # PFCP 监听地址
pfcp_node_id: 10.100.50.241 # PFCP 节点 ID
# 容量
max_sessions: 100000 # 最大并发会话
# API 和监控
api_address: :8080 # REST API 端口
metrics_address: :9090 # Prometheus 指标端口
重要监控阈值
- eBPF 映射容量 < 70%:正常操���
- eBPF 映射容量 70-90%:计划在 1 周内增加容量
- eBPF 映射容量 > 90%:危急 - 需要立即采取行动
- 分组丢失率 < 0.1%:优秀
- 分组丢失率 0.1-1%:良好 - 小问题
- 分组丢失率 > 5%:危急 - 立即调查
- XDP 中止 > 0:eBPF 程序存在严重问题
3GPP 标准参考
OmniUPF 实现以下 3GPP 规范:
| 规范 | 标题 | 相关性 |
|---|---|---|
| TS 23.501 | 5G 系统(5GS)的系统架构 | 5G UPF 架构和接口 |
| TS 23.401 | 通用分组无线服务(GPRS)对 E-UTRAN 接入的增强 | LTE UPF(PGW-U)架构 |
| TS 29.244 | 控制面与用户面节点之间的接口(PFCP) | N4 PFCP 协议 |
| TS 29.281 | 通用分组无线系统(GPRS)隧道协议用户面(GTPv1-U) | GTP-U 封装 |
| TS 23.503 | 5G 系统(5GS)的策略和计费控制框架 | QoS 和计费 |
| TS 29.212 | 策略和计费控制(PCC) | QoS 执行 |
术语表
5G 架构术语
- 3GPP:第三代合作伙伴计划 - 移动通信的标准组织
- AMF:接入与移动性管理功能 - 5G 核心网络元素,用于接入控制
- CHF:计费功能 - 5G 计费系统
- DN:数据网络 - 外部网络(互联网、IMS、企业)
- eNodeB:演进节点 B - LTE 基站
- F-TEID:完全合格隧道端点标识符 - GTP-U 隧道 ID,带有 IP 地址
- gNB:下一代节点 B - 5G 基站
- GTP-U:通用分组无线系统隧道协议用户面 - 用户数据的隧道协议
- MBR:最大比特率 - QoS 参数,表示最大允许带宽
- GBR:保证比特率 - QoS 参数,表示保证的最小带宽
- N3:RAN 与 UPF 之间的接口(用户面流量)
- N4:SMF 与 UPF 之间的接口(PFCP 控制)
- N6:UPF 与数据网络之间的接口(用户面流量)
- N9:两个 UPF 之间的接口(UPF 之间的用户面流量)
- PCF:策略控制功能 - 5G 策略服务器
- PDU:协议数据单元 - 5G 中的数据会话
- PGW-C:PDN 网关控制面 - LTE 控制面,相当于 SMF
- PGW-U:PDN 网关用户面 - LTE 用户面(UPF 相当于)
- QFI:QoS 流标识符 - 5G QoS 流标记
- QoS:服务质量 - 流量优先级和带宽管理
- RAN:无线接入网络 - 基站网络(gNB/eNodeB)
- SEID:会话端点标识符 - PFCP 会话 ID
- SMF:会话管理功能 - 5G 核心网络元素,用于会话控制
- TEID:隧道端点标识符 - GTP-U 隧道 ID
- UE:用户设备 - 移动设备
- UPF:用户面功能 - 5G 分组转发网络元素
PFCP 协议术语
- 关联:SMF 与 UPF 之间的控制关系
- FAR:转发动作规则 - 确定分组转发行为
- IE:信息元素 - PFCP 消息组件
- 节点 ID:UPF 或 SMF 标识符(FQDN 或 IP 地址)
- PDR:分组检测规则 - 将分组分类为流
- PFCP:分组转发控制协议 - N4 控制协议
- QER:QoS 执行规则 - 应用带宽限制和标记
- SDF:服务数据流 - 特定应用的流量过滤器
- 会话:表示 UE PDU 会话或 PDP 上下文的 PFCP 会话
- URR:用量报告规则 - 跟踪数据流量以进行计费
eBPF 和 Linux 内核术语
- BPF:伯克利包过滤器 - 内核分组过滤技术
- eBPF:扩展 BPF - 可编程内核数据路径
- 哈希映射:eBPF 键值存储,用于快速查找
- XDP:eXpress 数据路径 - 在驱动程序级别进行内核分组处理
- 验证器:验证 eBPF 程序安全性的内核组件
- 映射:在内核和用户空间之间共享的 eBPF 数据结构
- 零拷贝:分组处理无需复制到用户空间
OmniUPF 产品术语
- OmniUPF:基于 eBPF 的用户面功能(本产品)
- 数据路径:分组处理引擎(eBPF 程序)
- 控制面:PFCP 处理程序和会话管理
- REST API:用于监控和管理的 HTTP API
- Web UI:基于浏览器的控制面板