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 |
| 94 | TFT 中的语义错误 | 无效的流量流模板 |
错误(瞬时故障)
| 代码 | 名称 | 使用时机 |
|---|---|---|
| 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 超时
原因:
- 网络连接问题
- OmniPGW 没有在配置的 IP 上监听
- 防火墙阻止 UDP 2123
- 请求中的 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 注册表是否有泄漏
最佳实践
网络设计
-
专用网络接口
- 为 S5/S8 使用单独的 VLAN
- 与管理流量隔离
-
MTU 优化
- 确保 MTU 支持 GTP 头
- 最小 MTU:1500 字节(1464 有效负载 + 36 GTP)
-
冗余
- 多个 OmniPGW 实例
- ��� SGW-C 进行基于 DNS 的负载均衡
性能
-
UDP 缓冲区大小
- 为高负载增加套接字缓冲区
- 典型:每个套接字 4-8 MB
-
连接限制
- 计划预期的会话数量
- 监控 TEID 注册表计数
安全
-
IP 过滤
- 仅允许来自已知 SGW-C IP 的 GTP-C
- 使用 iptables 或网络 ACL
-
消息验证
- OmniPGW 验证所有传入消息
- 拒绝格式错误的 GTP-C 数据包
相关文档
核心功能
- 配置指南 - S5/S8 接口配置,本地 IP 设置
- 会话管理 - PDN 会话生命周期,承载建立
- UE IP 分配 - 通过创建会话响应交付 IP 地址
- PCO 配置 - GTP-C 消息中的 PCO 参数
相关接口
- PFCP 接口 - 与 S5/S8 控制面进行用户面协调
- Diameter Gx 接口 - 与承载设置的策略集成
- Diameter Gy 接口 - 与承载管理的计费集成
操作
OmniPGW S5/S8 接口 - 由 Omnitouch 网络服务提供