ICE

ICE=remove 参数的作用是移除 SDP 中的 ICE 相关信息,让我详细解释一下:

ICE 简介

ICE (Interactive Connectivity Establishment) 是一种 NAT穿透技术,用于在复杂的网络环境中建立媒体连接。

SDP中的ICE信息

在包含 ICE 的 SDP 中,通常有以下内容:

移除前的 SDP 示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
v=0
o=- 123456 123456 IN IP4 192.168.1.100
s=-
c=IN IP4 192.168.1.100
t=0 0
a=ice-ufrag:123456
a=ice-pwd:abcdef1234567890
a=fingerprint:sha-256 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55
:66:77:88:99:AA:BB:CC:DD:EE:FF
a=setup:actpass
a=candidate:1 1 UDP 2130706431 192.168.1.100 8000 typ host
a=candidate:2 1 UDP 1694498815 203.0.113.100 8000 typ srflx raddr 192.168.1.100 rport
8000
m=audio 8000 RTP/AVP 0 8 101

移除后的 SDP 示例:
1
2
3
4
5
6
v=0
o=- 123456 123456 IN IP4 192.168.1.100
s=-
c=IN IP4 192.168.1.100
t=0 0
m=audio 8000 RTP/AVP 0 8 101

  • 移除的内容
  1. ICE 用户名片段:a=ice-ufrag:
  2. ICE 密码:a=ice-pwd:
  3. 证书指纹:a=fingerprint:
  4. 连接建立方式:a=setup:
  5. 候选地址:a=candidate: 行
  • 为什么要移除 ICE
  1. 简化处理:RTPEngine 会重新生成适合当前网络环境的媒体地址
  2. 网络控制:让代理服务器完全控制媒体路径
  3. 安全考虑:防止内部网络拓扑信息泄露
  4. 兼容性:某些终端设备可能不支持或不需要 ICE

移除 ICE 后,RTPEngine 会根据配置重新生成适合的媒体连接信息。