跳到主要内容

OmniUPF 操作指南

目录​

  1. 概述
  2. 理解 5G 用户平面架构
  3. UPF 组件
  4. PFCP 协议和 SMF 集成
  5. 常见操作
  6. 故障排除
  7. 附加文档
  8. 术语表

概述​

OmniUPF(基于 eBPF 的用户平面功能)是一种高性能的 5G/LTE 用户平面功能,提供运营商级的数据包转发、QoS 执行和移动网络的流量管理。基于 Linux eBPF(扩展伯克利数据包过滤器)技术构建,并增强了全面的管理能力,OmniUPF 提供了 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(快速数据路径)以实现超低延迟处理
  • 多线程数据包处理

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)作为转发平面,由相应的控制平面控制:

  1. 会话建立

    • 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 映射填��转发规则
  2. 上行数据包处理(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 跟踪数据包和字节计数以进行计费
  3. 下行数据包处理(数据网络 → UE)

    • 5G:数据包通过 N6 接口作为原生 IP 到达
    • 4G:数据包通过 SGi 接口作为原生 IP 到达
    • 用户平面根据 UE IP 地址将数据包与下行 PDR 匹配
    • SDF 过滤器可能进一步按端口、协议或应用分类流量
    • FAR 确定 GTP-U 隧道和转发参数
    • 添加适当 TEID 的 GTP-U 封装
    • 5G:数据包转发到 N3 接口朝向 gNB
    • 4G:数据包转发到 S1-U(SGW-U)或 S5/S8(PGW-U)朝向 eNodeB
  4. 移动性和切换

    • 5G:OmniSMF 在切换场景中更新 PDR/FAR 规则
    • 4G:OmniSGW-C/OmniPGW-C 在 eNodeB 之间切换或 TAU(跟踪区域更新)期间更新规则
    • 用户平面在路径��换期间可能缓冲数据包
    • 在基站之间无缝过渡,无数据包丢失

与控制平面的集成(4G 和 5G)​

OmniUPF 通过标准的 3GPP 接口与 5G 和 4G 控制平面功能集成:

5G 接口​

接口从 → 到目的3GPP 规范
N4OmniSMF ↔ OmniUPFPFCP 会话建立、修改、删除TS 29.244
N3gNB → OmniUPF来自 RAN 的用户平面流量(GTP-U)TS 29.281
N6OmniUPF → 数据网络向 DN 的用户平面流量(原生 IP)TS 23.501
N9OmniUPF ↔ OmniUPF漫游/边缘的互 UPF 通信TS 23.501

4G/EPC 接口​

接口从 → 到目的3GPP 规范
SxbOmniSGW-C ↔ OmniUPF(SGW-U 模式)服务网关的 PFCP 会话控制TS 29.244
SxcOmniPGW-C ↔ OmniUPF(PGW-U 模式)PDN 网关的 PFCP 会话控制TS 29.244
S1-UeNodeB → OmniUPF(SGW-U 模式)来自 RAN 的用户平面流量(GTP-U)TS 29.281
S5/S8OmniUPF(SGW-U)↔ OmniUPF(PGW-U)网关间用户平面(GTP-U)TS 29.281
SGiOmniUPF(PGW-U 模式)→ PDN向数据网络的用户平面流量(原生 IP)TS 23.401

注意:所有 PFCP 接��(N4、Sxb、Sxc)使用 TS 29.244 中定义的相同 PFCP 协议。接口名称不同,但协议和消息格式是相同的。

UPF 组件​

eBPF 数据路径​

eBPF 数据路径是运行在 Linux 内核中的核心数据包处理引擎,以实现最大性能。

核心功能:

  • GTP-U 处理:GTP-U 隧道的封装和解封装
  • 数据包分类:使用 TEID、UE IP 或 SDF 过滤器将数据包与 PDR 规则匹配
  • QoS 执行:根据 QER 规则应用速率限制和数据包标记
  • 转发决策:执行 FAR 动作(转发、丢弃、缓冲、重复、通知)
  • 用量跟踪:为基于流量的计费递增 URR 计数器

eBPF 映射: 数据路径使用 eBPF 映射(内核内存中的哈希表)进行规则存储:

映射名称目的键值
uplink_pdr_map上行 PDRTEID(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_mapQoS 规则QER IDQoS 参数(MBR、GBR、标记)
urr_map用量跟踪URR ID流量计数器(上行、下行、总计)
sdf_filter_mapSDF 过滤器PDR ID应用过滤器(端口、协议)

性能特征:

  • 零拷贝:数据包完全在内核空间处理
  • XDP 支持:在网络驱动程序级别附加以实现亚微秒延迟
  • 多核:跨 CPU 核心扩展,支持每 CPU 映射
  • 容量:eBPF 映射中可容纳数百万个 PDR/FAR(受限于内核内存)

有关容量监控,请参见 容量管理。


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)
  • 用量报告触发器(流量阈值、时间阈值)

REST API 服务器​

REST API 提供对 UPF 状态和操作的编程访问。

核心功能:

  • 会话监控:查询活动的 PFCP 会话和关联
  • 规则检查:查看 PDR、FAR、QER、URR 配置
  • 统计信息:检索数据包计数器、路由统计、XDP 统计
  • 缓冲管理:查看和控制数据包缓冲
  • 映射信息:监控 eBPF 映射的使用和容量

API 端点:(共 34 个端点)

类别端点描述
健康/health健康检查和状态
配置/configUPF 配置
会话/pfcp_sessions, /pfcp_associationsPFCP 会话/关联数据
PDRs/uplink_pdr_map, /downlink_pdr_map, /downlink_pdr_map_ip6, /uplink_pdr_map_ip6数据包检测规则
FARs/far_map转发动作规则
QERs/qer_mapQoS 执行规��
URRs/urr_map用量报告规则
缓冲/buffer数据包缓冲状态和控制
统计/packet_stats, /route_stats, /xdp_stats, /n3n6_stats性能指标
容量/map_infoeBPF 映射容量和使用
数据平面/dataplane_configN3/N9 接口地址

有关 API 详细信息和使用,请参见 监控指南。


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 地址)跟踪关联
  • 心跳消息保持关联的活跃性
  • 如果释放关联,则删除该关联下的所有会话

有关查看关联的信息,请参见 会话视图。


SMF 重启检测和孤立会话清理​

OmniUPF 自动检测 SMF 重启,并根据 3GPP TS 29.244 规范清理孤立会话。

工作原理:

当 SMF 建立 PFCP 关联时,它提供一个 恢复时间戳,指示其启动时间。OmniUPF 为每个关联存储此时间戳。如果 SMF 重启:

  1. SMF 丢失内存中的所有会话状态
  2. SMF 重新与 UPF 建立 PFCP 关联
  3. SMF 发送 新的恢复时间戳(与之前不同)
  4. UPF 检测到时间戳变化 = SMF 重启
  5. UPF 自动删除 所有孤立会话 来自旧 SMF 实例
  6. SMF 为活动用户创建新的会话

重启检测流程:

日志示例:

当 SMF 重启时,您会看到:

WARN: 与 NodeID: smf-1 和地址: 192.168.1.10 的关联已存在
WARN: SMF 恢复时间戳已更改(旧: 2025-01-15T10:00:00Z,新: 2025-01-15T10:30:15Z) - SMF 重启,删除 245 个孤立会话
INFO: 由于 SMF 重启,删除孤立会话 2(LocalSEID)
INFO: 由于 SMF 重启,删除孤立会话 3(LocalSEID)
...
INFO: 由于 SMF 重启,删除孤立会话 246(LocalSEID)

重要说明:

  1. 隔离:仅删除重启的 SMF 的会话。其他 SMF 关联及其会话 不受影响。

  2. 时间戳比较:如果恢复时间戳是相同的,会话将被保留(SMF重新连接而不重启)。

  3. 3GPP合规性:此行为由3GPP TS 29.244第5.22.2节规定:

    “如果CP功能的恢复时间戳自上次关联设置以来发生了变化,则UP功能应认为CP功能已重新启动,并应删除与该CP功能相关的所有PFCP会话。”

有关孤立会话的故障排除,请参见故障排除指南。


GTP-U错误指示处理​

OmniUPF根据3GPP TS 29.281规范处理来自下游对等方(PGW-U、SGW-U、eNodeB、gNodeB)的GTP-U错误指示消息。

什么是错误指示:

当OmniUPF将GTP-U数据包转发到远程对等方(例如,在SGW-U部署中的PGW-U)时,如果对等方不识别TEID(隧道端点标识符),则可能会发送错误指示。这表明:

  • 远程对等方已重新启动并丢失隧道状态
  • 远程端未创建隧道(配置不匹配)
  • 远程端已删除隧道

工作原理:

  1. UPF转发数据包 → 将带有TEID X的GTP-U数��包发送到远程对等方(端口2152)
  2. 远程对等方不识别TEID X → 在其隧道表中查找TEID,未找到
  3. 远程对等方发送错误指示 → GTP-U消息类型26,IE包含错误的TEID
  4. UPF接收错误指示 → 解析消息以提取TEID X
  5. UPF找到受影响的会话 → 搜索所有会话以查找转发到TEID X的FAR
  6. UPF删除会话 → 从eBPF映射和PFCP状态中移除会话
  7. UPF更新指标 → 增加用于监控的Prometheus计数器

错误指示流程:

数据包格式(3GPP TS 29.281第7.3.1节):

GTP-U错误指示:
┌─────────────────────────────────────────┐
│ GTP-U头部(12字节) │
├─────────────────────────────────────────┤
│ 版本,PT,标志 │ 0x32 │
│ 消息类型 │ 26 (0x1A) │
│ 长度 │ 9字节 │
│ TEID │ 0 (始终) │
│ 序列号 │ 变化 │
│ N-PDU编号 │ 0 │
│ 下一个扩展头部 │ 0 │
├─────────────────────────────────────────┤
│ IE: TEID数据I(5字节) │
├─────────────────────────────────────────┤
│ 类型 │ 16 (0x10) │
│ 错误TEID │ 4字节 │
└─────────────────────────────────────────┘

何时重要:

场景1:S5/S8 GTP架构中的PGW-U重启

  • SGW-U(OmniUPF)将S5/S8流量转发到PGW-U
  • PGW-U重启并丢失所有S5/S8隧道状态
  • SGW-U继续转发到旧TEID
  • PGW-U发送错误指示
  • SGW-U自动停止使用死隧道

场景2:N9架构中的对等UPF重启

  • UPF-1(OmniUPF)将N9流量转发到UPF-2
  • UPF-2重启
  • UPF-1接收错误指示
  • UPF-1清理会话

日志示例:

接收错误指示时:

WARN: 从192.168.50.10:2152接收到GTP-U错误指示,TEID 0x12345678 - 远程对等方不识别此TEID
WARN: 找到会话LocalSEID=42,FAR GlobalId=1,转发到错误TEID 0x12345678,来自对等方192.168.50.10
INFO: 删除会话LocalSEID=42,因来自192.168.50.10的TEID 0x12345678的GTP-U错误指示
WARN: 因来自192.168.50.10的TEID 0x12345678的GTP-U错误指示删除了1个会话

Prometheus指标:

监控每个对等方和每个节点的错误指示活动:

# 从对等方接收到的总错误指示
upf_buffer_listener_error_indications_received_total{node_id="pgw-u-1",peer_address="192.168.50.10"}

# 因错误指示而删除的会话
upf_buffer_listener_error_indication_sessions_deleted_total{node_id="pgw-u-1",peer_address="192.168.50.10"}

# 发送的错误指示(对于未知的入站TEID)
upf_buffer_listener_error_indications_sent_total{node_id="enodeb-1",peer_address="10.60.0.1"}

指标标签:

  • node_id:来自关联的PFCP节点ID(如果没有关联,则为“未知”)
  • peer_address:远程对等方的IP地址

这些指标有助于识别有问题的对等方,并跟踪每个控制平面节点的错误指示模式。

重要说明:

  1. 自动清理:无需操作员干预 - 会话会自动删除

  2. TEID匹配:仅删除转发到确切错误TEID的会话

  3. 每对等方隔离:来自一个对等方的错误指示仅影响转发到该对等方的会话

  4. 多个会话:如果多个会话转发到同一死TEID,全部会被删除

  5. 与恢复时间戳互补:

    • 恢复时间戳检测 = 主动(在关联设置期间检测到重启)
    • 错误指示处理 = 被动(在流量流动时检测到死隧道)
  6. 无效数据包处理:无效的错误指示会被记录并忽略(不会删除会话)

有关错误指示的故障排除,请参见故障排除指南。


PFCP会话创建​

当UE建立PDU会话(5G)或PDP上下文(LTE)时,SMF会在UPF处创建PFCP会话。

会话建立流程:

典型会话内容:

  • 上行PDR:匹配N3 TEID,通过FAR转发到N6
  • 下行PDR:匹配UE IP地址,通过GTP-U封装的FAR转发到N3
  • FAR:转发参数(外部头部创建、网络实例)
  • QER:QoS限制(MBR、GBR)和数据包标记(QFI)
  • URR:用于计费的流量报告(可选)

PFCP会话修改​

SMF可以修改会话以应对移动事件(切换)、QoS变化或服务更新。

常见修改场景:

  1. 切换(基于N2)

    • 使用新的gNB隧道端点(F-TEID)更新上行FAR
    • 可选地在路径切换期间缓冲数据包
    • 当准备好时将缓冲区刷新到新路径
  2. QoS变化

    • 使用新的MBR/GBR值更新QER
    • 可在PDR中添加/删除SDF过滤器以实现特定应用的QoS
  3. 服务更新

    • 为附加流量流添加新的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
  • 检查5G QoS流的QFI标记

使用报告规则(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使用两阶段缓冲架构:

  1. eBPF阶段(内核):根据FAR操作标志检测需要缓冲的数据包
  2. 用户空间阶段:在内存中存储和管理缓冲的数据包

缓冲过程:

关键细节:

  • 缓冲端口:UDP端口22152(数据包从eBPF发送到用户空间)
  • 封装:数据包用GTP-U封装,FAR ID作为TEID
  • 存储:按FAR ID、时间戳、方向存储的内存缓冲区
  • 限制:
    • 每FAR限制:10,000个数据包(默认)
    • 全局限制:所有FAR总共100,000个数据包
    • TTL:30秒(默认) - 超过TTL的数据包将被丢弃
  • 清理:后台进程每60秒删除过期的数据包

缓冲生命周期:

  1. 启用缓冲:SMF通过PFCP会话修改设置FAR操作BUFF=1(第2位)
  2. 缓冲数据包:eBPF检测到BUFF标志,封装数据包,发送��端口22152
  3. 用户空间存储:缓冲管理器按FAR ID、时间戳、方向存储数据包
  4. 禁用缓冲:SMF使用新转发参数设置FAR操作FORW=1,BUFF=0
  5. 刷新缓冲区:用户空间通过新FAR规则(新隧道端点)重放缓冲的数据包
  6. 恢复正常:新数据包立即通过新路径转发

这对用户体验的重要性​

现实世界影响:

场景没有缓冲有缓冲
切换期间的视频通话通话冻结1-2秒,可能掉线无缝,无中断
基站边缘的文件下载下载失败,必须重新启动下载继续,无中断
移动中的在线游戏连接掉线,踢出游戏平稳游戏,无断开
车载VoIP通话通话在每次切换时掉线清晰无掉线
火车上的视频流视频缓冲,质量下降流畅播放
笔记本电脑的移动热点SSH会话掉线,视频通话失败所有连接保持

网络运营商的好处:

  • 降低呼叫掉线率 (CDR):网络质量的关键绩效指标
  • 更高的客户满意度:用户不会注意到切换
  • 降低支持成本:关于掉线连接的投诉更少
  • 竞争优势:“覆盖最佳网络”的营销

缓冲管理操作​

运营商可以通过 Web UI 和 API 监控和控制缓冲:

监控:

  • 查看每个 FAR ID 的缓冲数据包(计数、字节、年龄)
  • 跟踪缓冲使用情况与限制(每个 FAR、全局)
  • 缓冲溢出或过度缓冲持续时间的警报
  • 识别卡住的缓冲区(缓冲的数据包 > TTL 阈值)

控制操作:

  • 刷新缓冲区:手动触发缓冲重放(故障排除)
  • 清除缓冲区:丢弃缓冲的数据包(清理卡住的缓冲区)
  • 调整 TTL:更改数据包过期时间
  • 修改限制:增加每个 FAR 或全局缓冲容量

故障排除:

  • 缓冲未刷新:检查 SMF 是否发送了 FAR 更新以禁用缓冲
  • 缓冲溢出:增加限制或调查为何缓冲持续���间过长
  • 缓冲中的旧数据包:TTL 可能过高,或 FAR 更新延迟
  • 过度缓冲:可能表明移动性问题或 SMF 问题

有关详细的缓冲操作,请参见 缓冲管理指南。


缓冲配置​

在 /etc/omniupf/runtime.exs 中配置缓冲行为:

# 缓冲设置
buffer_port = 22152 # 缓冲数据包的 UDP 端口(默认)

建议:

  • 高移动性网络(高速公路、火车):将 buffer_max_packets 增加到 20,000+
  • 密集城市区域(频繁切换):将 buffer_packet_ttl 降低到 15 秒
  • 低延迟应用:将 buffer_packet_ttl 设置为 10 秒以防止过时数据
  • 物联网网络:降低限制(物联网设备在切换期间产生的流量较少)

有关完整的配置选项,请参见 配置指南。


统计和监控​

数据包统计:

实时数据包处理指标,包括:

  • RX 数据包:从所有接口接收的总数
  • TX 数据包:发送到所有接口的总数
  • 丢弃的数据包:因错误或策略而丢弃的数据包
  • 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 无法建立数据连接

常见根本原因:

  1. PFCP 关联未建立

    • 验证 SMF 是否可以访问 UPF PFCP 接口(端口 8805)
    • 检查会话视图中的 PFCP 关联状态
    • 验证 SMF 和 UPF 之间的节点 ID 配置是否匹配
  2. eBPF 映射容量耗尽

    • 检查容量视图中红色(>90%)的映射使用情况
    • 在 UPF 配置中增加 eBPF 映射大小
    • 如果映射已满,删除过期会话
  3. 无效的 PDR/FAR 配置

    • 验证 UE IP 地址是否唯一且有效
    • 检查 TEID 分配是否冲突
    • 确保 FAR 引用有效的网络实例
  4. 接口配置问题

    • 验证 N3 接口 IP 是否可以从 gNB 访问
    • 检查路由表以确保 N6 与数据网络的连接
    • 确认 GTP-U 流量未被防火墙阻止

有关详细故障排除,请参见 故障排除指南。


数据包丢失或转发问题​

症状:UE 有连接但经历数据包丢失或没有流量

常见根本原因:

  1. PDR 配置错误

    • 验证上行 PDR TEID 是否与 gNB 分配的 TEID 匹配
    • 检查下行 PDR UE IP 是否与分配的 IP 匹配
    • 检查 SDF 过滤器是否过于严格
  2. FAR 操作问题

    • 验证 FAR 操作是否为 FORWARD(而不是 DROP 或 BUFFER)
    • 检查 GTP-U 的外部头创建参数
    • 确保目标端点正确
  3. QoS 限制超出

    • 检查 QER MBR(最大比特率)设置
    • 验证 GBR(保证比特率)分配
    • 监控因速率限制而导致的数据包丢失
  4. 接口 MTU 问题

    • 验证 GTP-U 开销(40-50 字节)是否导致分片
    • 检查 N3/N6 接口的 MTU 配置
    • 监控 ICMP 分片需要消息

缓冲相关问题​

症状:数据包无限期缓冲,缓冲溢出

常见根本原因:

  1. 切换后未禁用缓冲

    • 检查 FAR 缓冲标志(位 2)
    • 验证 SMF 是否发送了会话修改以禁用缓冲
    • 如果卡住,通过控制面板手动禁用缓冲
  2. 缓冲 TTL 过期

    • 检查缓冲视图中的数据包年龄
    • 验证缓冲 TTL 配置(默认可能过长)
    • 手动清除过期的缓冲
  3. 缓冲容量耗尽

    • 监控总缓冲使用情况和每个 FAR 限制
    • 检查是否存在配置错误的规则导致过度缓冲
    • 调整 max_per_far 和 max_total 缓冲限制

有关缓冲故障排除,请参见 缓冲操作。


统计异常​

症状:意外的数据包计数,缺失的统计信息

常见根本原因:

  1. 计数器溢出

    • eBPF 映射使用 64 位计数器(不应溢出)
    • 检查日志中的计数器重置事件
    • 验证 URR 报告是否正常工作
  2. 路由统计未更新

    • 验证 eBPF 程序是否附加到接口
    • 检查内核版本是否支持所需的 eBPF 特性
    • 查看 XDP 统计以查找处理错误
  3. 接口统计不匹配

    • 将 N3/N6 统计与内核接口计数进行比较
    • ���查是否有流量绕��� eBPF(例如,本地路由)
    • 验证所有流量是否通过 XDP 钩子流动

性能下降​

症状:高延迟,低吞吐量,CPU 饱和

诊断:

  1. 监控 XDP 统计:检查 XDP 丢弃或中止
  2. 检查 eBPF 映射访问时间:哈希查找应在微秒级
  3. 查看 CPU 利用率:eBPF 应在核心之间分配
  4. 分析网络接口:验证 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 驱动支持
  • 不同场景的配置示例
  • 映射大小和容量规划

XDP 模式指南​

详细的 XDP 配置和优化,包括:

  • XDP 附加模式解释(通用/本地/卸载)
  • 性能比较和基准测试
  • Proxmox VE 本地 XDP 设置的逐步指南
  • 多队列配置以实现最佳性能
  • VMware ESXi、KVM 和 Hyper-V XDP 设置
  • XDP 验证和故障排除
  • XDP 性能的硬件选择

架构指南​

深入的技术探讨,包括:

  • eBPF 技术基础和程序生命周期
  • 带尾调用的 XDP 数据包处理管道
  • PFCP 协议实现
  • 缓冲架构(GTP-U 封装到端口 22152)
  • QoS 滑动窗口速率限制(5ms 窗口)
  • 性能特征(3.5μs 延迟,10 Mpps/core)

规则管理指南​

PFCP 规则参考,包括:

  • 数据包检测规则 (PDR) - 流量分类
  • 转发操作规则 (FAR) - 带操作标志的路由决策
  • QoS 执行规则 (QER) - 带宽管理 (MBR/GBR)
  • 使用报告规则 (URR) - 流量跟踪和报告
  • 上行和下行数据包流图
  • 规则处理逻辑和优先级

监控指南​

统计和容量管理,包括:

  • N3/N6 接口统计和流量分布
  • XDP 处理统计(通过/丢弃/重定向/中止)
  • 带颜色编码区域的 eBPF 映射容量监控
  • 性能指标(数据包速率、吞吐量、丢包率)
  • 容量规划公式和会话估算
  • 警报阈值和最佳实践

Web UI 操作指南​

控制面板使用,包括:

  • 仪表板概述和导航
  • 会话监控(健康/不健康状态)
  • 规则检查(PDR、FAR、QER、URR 详细信息)
  • 缓冲监控和数据包缓冲状态
  • 实时统计仪表板
  • eBPF 映射容量可视化
  • 配置查看

API 文档​

完整的 REST API 参考,包括:

  • OpenAPI/Swagger 交互式文档
  • API 分页(基于页面和基于偏移)
  • PFCP 会话和关联端点
  • 数据包检测规则 (PDR) - IPv4 和 IPv6
  • 转发操作规则 (FAR)
  • QoS 执行规则 (QER)
  • 使用报告规则 (URR)
  • 数据包缓冲管理
  • 统计和监控端点
  • 路由管理和 FRR 集成
  • eBPF 映射信息
  • 配置管理
  • 认证和安全指南
  • 常见 API 工作流和示例

指标参考​

Prometheus 指标文档,包括:

  • PFCP 消息指标(每个对等体的计数、延迟、错误)
  • XDP 操作指标(数据平面裁决)
  • 数据包指标(带数据包类型标签的协议级计数)
  • PFCP 会话和关联指标(每个控制平面节点)
  • URR 指标(每个 PFCP 对等体的流量)
  • 数据包缓冲指标(缓冲状态、容量、吞吐量)
  • 下行数据报告通知指标(DLDR 跟踪)
  • eBPF 映射容量指标(资源利用)
  • Prometheus 配置示例
  • Grafana 仪表板建议

PFCP 原因代码参考​

PFCP 错误代码文档,包括:

  • 原因代码定义和 3GPP 合规性(TS 129.244)
  • 每个原因代码发生的情况(成功、客户端错误、服务器错误)
  • 常见故障场景及解决方案
  • 使用 Prometheus 指标进行故障排除
  • 关联设置和会话生命周期失败
  • 高拒绝率的调试步骤
  • 原因代码的警报建议

UE 路由管理指南​

FRR 路由集成,包括:

  • FRR(自由范围路由)概述和架构
  • UE 路由同步生命周期
  • 自动路由同步到路由守护进程
  • 通过 OSPF 和 BGP 的路由广告
  • OSPF 邻居监控
  • OSPF 外部 LSA 数据库验证
  • BGP 对等会话管理
  • Web UI 路由监控界面
  • 手动路由同步操作
  • 路由流和架构的 Mermaid 图

IPv6 / 双栈指南​

用户平面 IPv6 操作用于 IPv6 和 IPv4v6 PDN 会话:

  • 内核前提条件(启用 IPv6 和转发)
  • UE IPv6 地址池配置
  • UE /128 主机路由的 OSPFv3 广告
  • IPv6 下行/上行数据平面行为
  • 故障排除 IPv6 转发和路由广告

故障排除指南​

全面的问题诊断,包括:

  • 快速诊断检查表和工具
  • 安装和配置问题
  • PFCP 关联失败
  • 数据包处理问题
  • XDP 和 eBPF 错误
  • 性能下降
  • 特定于虚拟化的故障(Proxmox、VMware、VirtualBox)
  • NIC 和驱动程序问题
  • 逐步解决程序

按用例的文档​

安装和配置 OmniUPF​

  1. 从本指南开始以获取概述
  2. 配置指南 获取设置参数
  3. Web UI 指南 访问控制面板

在 Proxmox 上部署​

  1. XDP 模式指南 - Proxmox 本地 XDP 设置 - 从这里开始以提高性能
  2. 配置指南 - 虚拟化兼容性
  3. 配置指南 - Proxmox SR-IOV 设置
  4. 故障排除 - Proxmox 问题

优化性能​

  1. XDP 模式指南 - 启用本地 XDP 以获得 5-10 倍的性能提升
  2. 架构指南 - 性能优化
  3. 配置指南 - XDP 模式
  4. 监控指南 - 性能指标
  5. 故障排除 - 性能问题

理解数据包处理​

  1. 架构指南 - 数据包处理管道
  2. 规则管理指南
  3. 监控指南 - 统计信息

规划容量​

  1. 配置指南 - 映射大小
  2. 监控指南 - 容量规划
  3. 监控指南 - 会话容量估算

管理 UE 路由和 FRR 集成​

  1. UE 路由管理指南 - 完整的路由集成指南
  2. API 文档 - 路由管理 - 路由 API 端点
  3. Web UI 指南 - 路由页面操作
  4. UE 路由管理 - FRR 验证 - OSPF LSA 验证

使用 REST API​

  1. API 文档 - 完整的 API 参考
  2. API 文档 - Swagger UI - 交互式 API 探索器
  3. API 文档 - API 特性 - API 使用示例
  4. Web UI 指南 - Web 界面作为 API 客户端示例

故障排除问题​

  1. 故障排除指南 - 从这里开始
  2. 监控指南 - 检查统计信息和容量
  3. Web UI 指南 - 使用控制面板诊断

快速参考​

常见 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

重要配置参数​

# /etc/omniupf/runtime.exs
xdp_interfaces = "eth0" # N3/N6/N9 流量的接口
xdp_attach_mode = "native" # "generic" | "native" | "offload"
n3_address = "10.100.50.233" # N3 接口 IP
pfcp_address = "10.100.50.241" # PFCP 监听地址
pfcp_port = 8805 # PFCP 端口
node_id = "10.100.50.241" # PFCP 节点 ID

# 容量
max_sessions = 100_000 # 最大并发会话数

# API
api_port = 8080 # REST API 端口

重要监控阈值​

  • eBPF 映射容量 < 70%:正常操作
  • eBPF 映射容量 70-90%:计划在 1 周内增加容量
  • eBPF 映射容量 > 90%:危急 - 需要立即采取行动
  • 数据包丢失率 < 0.1%:优秀
  • 数据包丢失率 0.1-1%:良好 - 小问题
  • 数据包丢失率 > 5%:危急 - 立即调查
  • XDP 中止 > 0:eBPF 程序存在严重问题

3GPP 标准参考​

OmniUPF 实现以下 3GPP 规范:

规范标题相关性
TS 23.5015G 系统 (5GS) 的系统架构5G UPF 架构和接口
TS 23.401E-UTRAN 接入的通用分组无线服务 (GPRS) 增强LTE UPF (PGW-U) 架构
TS 29.244控制平面与用户平面节点之间的接口 (PFCP)N4 PFCP 协议
TS 29.281通用分组无线系统 (GPRS) 隧道协议用户平面 (GTPv1-U)GTP-U 封装
TS 23.5035G 系统 (5GS) 的策略和计费控制框架QoS 和计费
TS 29.212策略和计费控制 (PCC)QoS 执行

术语表​

5G 架构术语​

  • 3GPP:第三代合作伙伴计划 - 移动通信标准机构
  • AMF:接入和移动管理功能 - 5G 核心网络元素,用于接入控制
  • CHF:计费功能 - 5G 计费系统
  • DN:数据网络 - 外部网络(互联网、IMS、企业)
  • eNodeB:演进节点 B - LTE 基站
  • F-TEID:完全合格的隧道端点标识符 - 带 IP 地址的 GTP-U 隧道 ID
  • 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 协议术语​

  • Association: SMF 和 UPF 之间的控制关系
  • FAR: 转发动作规则 - 决定数据包转发行为
  • IE: 信息元素 - PFCP 消息组件
  • Node ID: UPF 或 SMF 标识符 (FQDN 或 IP 地址)
  • PDR: 数据包检测规则 - 将数据包分类到流中
  • PFCP: 数据包转发控制协议 - N4 控制协议
  • QER: QoS 执行规则 - 应用带宽限制和标记
  • SDF: 服务数据流 - 应用特定的流量过滤器
  • Session: 表示 UE PDU 会话或 PDP 上下文的 PFCP 会话
  • URR: 使用报告规则 - 跟踪计费的数据量

eBPF 和 Linux 内核术语​

  • BPF: 伯克利数据包过滤器 - 内核数据包过滤技术
  • eBPF: 扩展 BPF - 可编程内核数据路径
  • Hash Map: eBPF 键值存储,用于快速查找
  • XDP: eXpress 数据路径 - 驱动级别的内核数据包处理
  • Verifier: 验证 eBPF 程序安全性的内核组件
  • Map: 内核和用户空间之间共享的 eBPF 数据结构
  • Zero-copy: 无需复制到用户空间的数据包处理

OmniUPF 产品术语​

  • OmniUPF: 基于 eBPF 的用户面功能(此产品)
  • Datapath: 数据包处理引擎(eBPF 程序)
  • Control Plane: PFCP 处理程序和会话管理
  • REST API: 用于监控和管理的 HTTP API
  • Web UI: 基于浏览器的控制面板