跳到主要内容

S5/S8 接口文档

与 SGW-C 的 GTP-C 通信

OmniPGW 由 Omnitouch 网络服务提供


概述

S5/S8 接口 使用 GTP-C v2(GPRS 隧道协议 - 控制面)协议将 OmniPGW 连接到 SGW-C(服务网关控制平面)。此接口处理网关之间的会话管理信令。


协议细节

GTP-C 版本 2

  • 协议: GTP-C v2 (3GPP TS 29.274)
  • 传输: UDP
  • 端口: 2123(标准)
  • 接口类型: 控制面

TEID(隧道端点标识符)

每个会话都有一个唯一的 TEID 用于路由消息:

  • 本地 TEID - 由 OmniPGW 分配用于传入消息
  • 远程 TEID - 由 SGW-C 分配用于传出消息
消息流:
SGW-C → OmniPGW: 目标 TEID = OmniPGW 的本地 TEID
OmniPGW → SGW-C: 目标 TEID = SGW-C 的远程 TEID

配置

基本配置

# config/runtime.exs
config :pgw_c,
s5s8: %{
# S5/S8 接口的本地 IPv4 地址
local_ipv4_address: "10.0.0.20",

# 可选:本地 IPv6 地址
local_ipv6_address: nil,

# 可选:覆盖默认端口
local_port: 2123
}

网络要求

防火墙规则:

# 允许来自 SGW-C 网络的 GTP-C
iptables -A INPUT -p udp --dport 2123 -s <sgw_network>/24 -j ACCEPT

# 允许向 SGW-C 的出站 GTP-C
iptables -A OUTPUT -p udp --dport 2123 -d <sgw_network>/24 -j ACCEPT

路由:

# 确保到 SGW-C 网络的路由
ip route add <sgw_network>/24 via <gateway_ip> dev eth0

消息类型

S5/S8 接口处理 PDN 会话管理的 GTP-C 信令。有关详细的会话生命周期和状态管理,请参见 会话管理指南

会话管理

创建会话请求

方向: SGW-C → OmniPGW

目的: 建立新的 PDN 连接

关键信息元素(IEs):

IE 名称类型描述
IMSI身份国际移动用户身份
MSISDN身份手机号码
APN字符串接入点名称(例如,“internet”)
RAT 类型枚举无线接入技术(EUTRAN)
承载上下文分组默认承载信息
UE 时区时间戳UE 的时区
ULI分组用户位置信息(TAI, ECGI)
服务网络PLMN服务网络的 MCC/MNC

示例:

创建会话请求
├── IMSI: 310260123456789
├── MSISDN: 14155551234
├── APN: internet
├── RAT 类型: EUTRAN (6)
├── 承载上下文
│ ├── EBI: 5
│ ├── 承载 QoS (QCI 9, ARP, 比特率)
│ └── S5/S8 F-TEID (SGW-U 隧道端点)
└── ULI
├── TAI: MCC 310, MNC 260, TAC 12345
└── ECGI: MCC 310, MNC 260, ECI 67890

创建会话响应

方向: OmniPGW → SGW-C

目的: 确认会话创建

关键 IEs:

IE 名称类型描述
原因结果成功或错误代码
承载上下文分组承载信息
PDN 地址分配IP分配的 UE IP 地址(见 UE IP 分配
APN 限制枚举APN 使用限制
PCO选项协议配置选项(见 PCO 配置

成功响应:

创建会话响应
├── ���因: 请求接受 (16)
├── PDN 地址分配
│ └── IPv4: 100.64.1.42
├── 承载上下文
│ ├── EBI: 5
│ ├── 原因: 请求接受
│ └── S5/S8 F-TEID (PGW-U 隧道端点来自 PFCP)
├── APN 限制: Public-1 (1)
└── PCO
├── DNS 服务器: 8.8.8.8
├── DNS 服务器: 8.8.4.4
└── 链路 MTU: 1400

删除会话请求

方向: SGW-C → OmniPGW

目的: 终止 PDN 连接

关键 IEs:

IE 名称描述
EBI要删除的 EPS 承载 ID
关联 EBI相关承载(可选)

删除会话响应

方向: OmniPGW → SGW-C

目的: 确认会话删除

关键 IEs:

IE 名称描述
原因成功或错误代码

承载管理

创建承载请求

方向: OmniPGW → SGW-C

目的: 创建专用承载(由 PCRF 策略发起)

触发条件:

  • PCRF 发送新的 PCC 规则要求专用承载
  • OmniPGW 请求 SGW-C 建立承载

删除承载请求

方向: OmniPGW → SGW-C 或 SGW-C → OmniPGW

目的: 删除专用承载

场景:

  • PGW 发起: PCRF 策略更改移除专用承载
  • SGW 发起: 无线资源释放

消���流

会话建立

会话终止


原因代码

成功

代码名称描述
16请求接受操作成功

错误(永久故障)

代码名称使用时机
65用户未知PCRF 拒绝(IMSI 未找到)
66无可用资源IP 池耗��
93服务不支持无效的 APN
94TFT 中的语义错误无效的流量流模板

错误(瞬时故障)

代码名称使用时机
72远程对等方未响应PCRF/PGW-U 超时
73与网络发起的请求冲突同时操作

监控

S5/S8 指标

# 消息计数器
s5s8_inbound_messages_total{message_type="create_session_request"}
s5s8_inbound_messages_total{message_type="delete_session_request"}

# 错误计数器
s5s8_inbound_errors_total

# 消息处理延迟
s5s8_inbound_handling_duration_bucket

# 活动 TEID
teid_registry_count

有用的查询

会话创建率:

rate(s5s8_inbound_messages_total{message_type="create_session_request"}[5m])

错误率:

rate(s5s8_inbound_errors_total[5m])

延迟(p95):

histogram_quantile(0.95,
rate(s5s8_inbound_handling_duration_bucket{request_message_type="create_session_request"}[5m])
)

故障排除

问题:没有来自 OmniPGW 的响应

症状:

  • SGW-C 发送创建会话请求
  • 没有收到响应
  • SGW-C 超时

原因:

  1. 网络连接问题
  2. OmniPGW 没有在配置的 IP 上监听
  3. 防火墙阻止 UDP 2123
  4. 请求中的 TEID 错误

调试:

# 检查 OmniPGW 是否在监听
netstat -ulnp | grep 2123

# 检查传入数据包
tcpdump -i any -n port 2123

# 验证配置
grep "local_ipv4_address" config/runtime.exs

# 检查防火墙
iptables -L -n | grep 2123

问题:会话创建失败

症状:

  • 创建会话响应带有错误原因
  • 会话未建立

常见原因:

原因 65(用户未知):
→ PCRF 拒绝用户
→ 检查 HSS/SPR 中的 IMSI

原因 66(无资源):
→ IP 池耗尽
→ 检查: curl http://pgw:9090/metrics | grep address_registry_count
→ 扩展 IP 池

原因 72(远程对等方未响应):
→ PCRF 超时或 PGW-U 不可用
→ 检查 Gx 连接
→ 检查 PFCP 关联

问题:TEID 冲突

症状:

  • 消息路由到错误的会话
  • 意外行为

原因:

  • TEID 在清理之前被重用
  • TEID 分配中的错误

解决方案:

  • 确保 TEID 分配唯一
  • 检查 TEID 注册表是否有泄漏

最佳实践

网络设计

  1. 专用网络接口

    • 为 S5/S8 使用单独的 VLAN
    • 与管理流量隔离
  2. MTU 优化

    • 确保 MTU 支持 GTP 头
    • 最小 MTU:1500 字节(1464 有效负载 + 36 GTP)
  3. 冗余

    • 多个 OmniPGW 实例
    • ��� SGW-C 进行基于 DNS 的负载均衡

性能

  1. UDP 缓冲区大小

    • 为高负载增加套接字缓冲区
    • 典型:每个套接字 4-8 MB
  2. 连接限制

    • 计划预期的会话数量
    • 监控 TEID 注册表计数

安全

  1. IP 过滤

    • 仅允许来自已知 SGW-C IP 的 GTP-C
    • 使用 iptables 或网络 ACL
  2. 消息验证

    • OmniPGW 验证所有传入消息
    • 拒绝格式错误的 GTP-C 数据包

相关文档

核心功能

相关接口

操作


返回操作指南


OmniPGW S5/S8 接口 - 由 Omnitouch 网络服务提供