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

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

本文独立解析 KVS WebRTC 返回的 ICE 服务器列表,帮助你快速理解 STUN/TURN 的各类 urls、transport 参数、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 全阻的环境,延迟更高。
  • username 与 credential

    • 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/udp 与 turns/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(承载)是两个层级。

相关推荐
OpenLoong 开源社区12 小时前
打破 NAT 限制,零侵入跨网络通信:基于 WebRTC 的透明 TCP 隧道跨网络通信方案
网络协议·tcp/ip·开源·webrtc·openloong开源社区
探鸽小钛3 天前
4G 终端 ES8311 - 挂断一次,下次说话就没声了之解决办法
物联网·音视频·嵌入式·esp32·webrtc
草根大哥4 天前
AI 编程实践之自建视频CDN
音视频·webrtc·低延迟直播·视频cdn·低延迟cdn
EasyCVR4 天前
应急指挥怕延迟?聊聊视频汇聚/视频融合/视频分析EasyCVR平台WebRTC低延迟方案
音视频·webrtc·easycvr
TrueDei5 天前
WebRTC ICE 候选变成 mDNS 地址导致连接失败:原因分析与解决方案
webrtc
中屹指纹浏览器svip8 天前
WebRTC泄露是什么,怎么关闭?
webrtc
海边捡石子9 天前
从零设计一个通用智能电话平台:FreeSWITCH + ESL + AI 实战架构
人工智能·架构·webrtc
音视频牛哥9 天前
不换摄像机,也能接入 WebRTC?SmartMediaKit RTSP/RTMP 转 WHIP 技术实践
音视频·webrtc·smartmediakit·rtsp转whip·rtmp转whip·whip推流·rtsp转webrtc播放
直播技术开发交流11 天前
Android 端 WHIP 协议推流技术实践:相机/录屏/多路转发WHIP实现测试
webrtc·android whip·rtsp转whip·毫秒级实时媒体流·whip低延时推送·whip推送实现·rtsp转webrtc
程序员阿明13 天前
docker搭建视频流服务go2rtc,webRTC
docker·容器·webrtc