SBC 中继管理
1. SBC 中继元数据
SBC 为每个 SIP 中继扩展了以下元数据(存储在 sip_trunk.metadata.sbc JSON 字段):
1.1 媒体控制
| 配置 | 说明 | 可选值 |
|---|---|---|
| media_mode | 媒体代理模式 | all, auto, nat, none, bypass |
| video_policy | 视频策略 | passthrough, strip, transcode |
| ice_lite | 纯 RTP 腿以 ICE-lite 应答(0.5+) | true / false(默认) |
| external_ip / bind_ip | 逐 Trunk 的 RTP 宣告 / 绑定 IP 覆盖(0.5+) | IP 字符串 |
media_mode 说明:
| 模式 | 行为 |
|---|---|
all | 始终代理媒体,所有 RTP 经过 SBC |
auto | 智能判断(默认),需要时代理 |
nat | 仅对 NAT 场景代理 |
none | 不代理媒体 |
bypass | 仅改写 SDP 中的 IP,RTP 直连 |
dialplan 级 relay_only(0.5+):在直连媒体路径注定不通的 EIP/NAT 故障场景,dialplan 级开关强制所有腿走 SBC 中继,无需逐条把 Trunk 改成 all。
ICE-lite(0.5+):对严格 full-ICE 对端(Microsoft Teams Direct Routing 等),ice_lite = true 使 SBC 在纯 RTP 腿上以 ICE-lite 应答,WebRTC 腿仍保持完整 ICE。
1.2 编解码控制
{
"sbc": {
"codec_allow": ["pcmu", "pcma", "g729"],
"codec_deny": [],
"codec_prefer": "pcmu"
}
}
1.3 CAC(呼叫接纳控制)
{
"sbc": {
"cac_max_calls": 100,
"cac_max_cps": 20
}
}
1.4 录音策略
{
"sbc": {
"recording": {
"enabled": true,
"direction": "both"
}
}
}
1.5 Header 操控规则
对经过该中继的 SIP 信令增删改 Header:
{
"sbc": {
"header_rules": [
{ "action": "add", "name": "X-Gateway", "value": "sbc-01" },
{ "action": "set", "name": "P-Asserted-Identity", "value": "${caller}" },
{ "action": "remove", "name": "X-Internal-IP" }
]
}
}
1.6 来源 IP 控制
{
"sbc": {
"source_ips": ["203.0.113.0/24", "198.51.100.10"]
}
}
2. 批量配置
SBC → 中继 → 批量设置:可一次选择多个中继,统一设置 media_mode、video_policy、CAC 等参数。
3. 健康检查
SBC → 中继 → 健康状态:
| 字段 | 说明 |
|---|---|
| 状态 | UP / DOWN / UNKNOWN |
| RTT | 最近一次 OPTIONS 延迟 (ms) |
| 最后检查 | 最近探测时间 |
| 失败次数 | 连续失败次数 |
SBC 页面实时展示所有中继的健康状态,红色标记 DOWN 的中继。
4. 控制台操作
4.1 查看中继列表
SBC → 中继:显示所有中继及其 SBC 元数据摘要。
4.2 编辑 SBC 配置
点击中结名称 → 修改 JSON 配置 → 保存。支持直接编辑 JSON 或使用表单。
4.3 重新加载
SBC → 中继 → 重新加载:从配置文件重新读取中继定义(不影响数据库中的 SBC 元数据)。