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 元数据)。