【ZeroRange WebRTC】ICE 服务器列表解析(KVS WebRTC)

ICE 服务器列表解析(KVS WebRTC)

本文独立解析 KVS WebRTC 返回的 ICE 服务器列表,帮助你快速理解 STUN/TURN 的各类 urlstransport 参数、username/credential 凭证的用途与时效,以及在真实网络中的选择与回退策略。


1. 示例(日志摘录)

复制代码
[INFO] [MASTER] ICE servers: [
  {
    "urls": "stun:stun.kinesisvideo.us-west-2.amazonaws.com:443"
  },
  {
    "urls": [
      "turn:35-89-75-127.t-ae7dd61a.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp",
      "turns:35-89-75-127.t-ae7dd61a.kinesisvideo.us-west-2.amazonaws.com:443?transport=udp",
      "turns:35-89-75-127.t-ae7dd61a.kinesisvideo.us-west-2.amazonaws.com:443?transport=tcp"
    ],
    "username": "...",
    "credential": "..."
  }
]

2. 字段与语义

  • stun:...:443

    • 用途:向 STUN 服务器查询"对外可见的 IP/端口",生成 srflx 候选以提升直连成功率。
    • 端口:443 在企业网络下更易被放行(多数环境仅开放 80/443 的对外访问),也更容易通过代理/负载均衡;配合 turns(TLS)可利用 TLS 握手与 SNI 进行合规审计与放行。
  • turn:turns:

    • turn: 表示不加 TLS 的 TURN(控制通道明文 TCP/UDP)。
    • turns: 表示 TURN over TLS(控制通道走 TLS,典型端口 443),更适合严格防火墙/代理环境。
  • ?transport=udp|tcp(中继媒体承载)

    • 指代"中继候选的底层承载类型",与 WebSocket 无关:
      • transport=udp:媒体通过 UDP 中继,队头阻塞小、实时性好。
      • transport=tcp:媒体通过 TCP/TLS 中继,适用于 UDP 全阻的环境,延迟更高。
  • usernamecredential

    • TURN 的临时凭证(Long-Term Credential 风格),由 KVS 按通道/时间窗口下发,带 TTL;用于 Allocate/Refresh/ChannelData 等交互。
    • 过期后需重新获取 ICE 配置;系统时钟必须准确,否则可能出现"未生效/已过期"。

3. 选择与回退(ICE 策略)

  • 默认策略(iceTransportPolicy=ALL):
    • 优先 host(本机地址)与 srflx(STUN 反射),失败时再选 relay(TURN)。
    • 在 relay 中优先 turn/turns ... transport=udp,若 UDP 不通则回退 turns ... transport=tcp
  • 强制中继(iceTransportPolicy=RELAY):
    • 仅收集 TURN 候选,牺牲直连的低延迟换取更稳的可达性(企业网络/跨网场景常用)。

4. 可达性与端口(企业网络场景)

  • 使用 443 提升穿越率:STUN/TURN 都使用 443 能显著提高在仅开放 80/443 的网络中的成功率。
  • 防火墙与代理:DPI/代理可能重置长连接;turns:...(TLS)更易通过策略检查;若 UDP 全阻则使用 turns ... transport=tcp

注意事项:

  • 443 并不保证 UDP 可用:很多企业只放行 TCP/443,会阻断 UDP/443;此时需回退到 turns ... transport=tcp 才能保证可达性。
  • 安全设备可能进行 TLS 检查(解密)、限制 CONNECT 或设置闲置超时;应按代理/防火墙要求发送心跳(Ping/Pong)与合理的保活策略,避免被动断开。

5. 成本与延迟的权衡

  • 直连 P2P:媒体不经中继,云侧不承担媒体带宽;延迟最低。
  • TURN 中继:A→TURN→B 两段转发,云侧承担双向带宽与出网费用;tcp/tls 路径存在队头阻塞,整体延迟更高。
  • 取舍:稳定性/可达性 ↑ ↔ 时延/成本 ↑。

6. 实务建议

  • 保持系统时钟准确,避免临时凭证异常;凭证过期时及时重新获取 ICE 配置。
  • 区域一致:确保 Region 与信令/通道一致,降低跨区时延与出网成本。
  • 默认直连:维持 ALL 策略,能直连就直连;企业网络预备 turns/udpturns/tcp 两种中继变体。
  • 带宽自适应与可靠性:启用 TWCC/REMB、合理码率;用 RTCP NACK/PLI 与短 GOP 提升可恢复性。
  • 资源管理:无人观看及时释放信令与 TURN 分配,节省中继成本。

7. 术语速查

  • host/srflx/relay:本地/服务器反射/中继候选。
  • TURN/turns :中继服务;turns 意为 TLS 保护的 TURN 控制通道。
  • transport=udp|tcp:中继媒体的底层承载类型(UDP 优先,TCP 为退路)。
  • DTLS/SRTP :握手建密钥、媒体加密;与是否走 udp/tcp(承载)是两个层级。

相关推荐
三十_9 分钟前
WebRTC 入门:一分钟理解一对多直播的完整实现流程
webrtc
筏.k2 小时前
WebRTC 集成 FFmpeg D3D12VA HEVC 硬件编码 avcodec_open2 返回 -22 问题排查与解决方案
ffmpeg·webrtc
metaRTC1 天前
webRTC IPC客户端UniApp版编程指南
uni-app·webrtc·ipc
FinelyYang4 天前
centos7安装coturn,实现WebRTC音视频通话
webrtc
shermerL8 天前
超简单!WebRTC源码编译教程释出!
webrtc
FinelyYang8 天前
uniapp+unipush2.0+WebRTC实现h5一对一视频通话
uni-app·音视频·webrtc
赖small强9 天前
【ZeroRang WebRTC】WebRTC 信令与传输的安全层解析:WSS、DTLS、SRTP
webrtc·sctp·wss·dtls·srtp
qq_3106585110 天前
webrtc代码走读(十七)-音频QOS-NetEQ
服务器·网络·c++·音视频·webrtc
txp玩Linux11 天前
rk3568上解析webrtc音频降噪算法处理流程
算法·音视频·webrtc
RTC老炮12 天前
webrtc降噪-WienerFilter源码分析与算法原理
算法·webrtc