我使用哪个ICE候选人,为什么?

时间:2015-07-17 02:51:00

标签: webrtc kurento

[以下粗体问题]

我在运行OS Ubuntu 14.04的防火墙后面的数据中心设置了Kurento Media Server 5.1.3。它有两个网卡:

  • 222.222.222.222(eth0 - 私人知识产权)
  • 111.111.111.111(eth1 - Public IP)

当我的浏览器连接到Kurento Media Server时,下面是SDP(setRemoteDescription)

type: answer, sdp: v=0
o=- 5487318114793304426 0 IN IP4 0.0.0.0
s=Kurento Media Server
c=IN IP4 0.0.0.0
t=0 0
a=group:BUNDLE audio video
m=audio 59068 RTP/SAVPF 111 0
c=IN IP4 111.111.111.111
a=rtpmap:111 opus/48000/2
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:59068 IN IP4 111.111.111.111
a=rtcp-mux
a=ssrc:669011897 cname:user39019747@host-6e83e4c2
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:audio
b=AS:20
a=ice-ufrag:YMdK
a=ice-pwd:LyLifK5UeqzPwM91DDj37e
a=fingerprint:sha-256 FF:0F:81:8C:41:4E:B4:B6:C6:D8:36:F3:D6:5F:09:FD:5F:AF:13:B3:9D:FC:12:66:AC:F3:56:D6:5B:0A:73:5D
a=candidate:1 1 UDP 2013266431 111.111.111.111 55239 typ host
a=candidate:2 1 UDP 2013266431 222.222.222.222 59068 typ host
a=candidate:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068
m=video 59068 RTP/SAVPF 100
c=IN IP4 111.111.111.111
b=AS:100
a=rtpmap:100 VP8/90000
a=sendrecv
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtcp:59068 IN IP4 111.111.111.111
a=rtcp-mux
a=ssrc:138242433 cname:user39019747@host-6e83e4c2
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:video
a=ice-ufrag:YMdK
a=ice-pwd:LyLifK5UeqzPwM91DDj37e
a=fingerprint:sha-256 FF:0F:81:8C:41:4E:B4:B6:C6:D8:36:F3:D6:5F:09:FD:5F:AF:13:B3:9D:FC:12:66:AC:F3:56:D6:5B:0A:73:5D
a=candidate:1 1 UDP 2013266431 111.111.111.111 55239 typ host
a=candidate:2 1 UDP 2013266431 222.222.222.222 59068 typ host
a=candidate:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068

我不确定,但似乎我正在使用以下候选人:

a=candidate:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068

我是对的吗?

但鉴于IP 222.222.222.222是内部IP,为什么它会作为ICE候选者出现?

为什么不挑选" a =候选人:1 1 UDP 2013266431 111.111.111.111 55239 typ host"?,因为此IP可公开访问。

使用" nload"等工具时要检查流量,eth0没有任何流量,并且可以注意到eth1获得了大量流量(视频和音频流)

这是什么" a =候选人:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068"装置吗

3 个答案:

答案 0 :(得分:4)

WebRTC客户端尝试所有ICE候选人,直到找到有效的ICE候选人。 ICE候选者有一个优先级队列,其中添加了所有潜在地址。 WebRTC一次尝试这一个,一旦找到一个有效,它就会使用该候选媒体。 WebRTC不知道哪个地址是您的公共地址,哪个是您的私人地址,它只是尝试候选人,直到一个成功或全部失败。

ICE旨在在存在NAT问题时创建连接。

答案 1 :(得分:2)

如果您遇到延迟,并且您控制了客户端软件,则可以指定候选人的选择顺序。有些甚至直接开始[世界级社交网络]到TURN地址,然后在可能的情况下与其他人协商。如果以从上到下的顺序运行总是存在风险。

如果由于VPN或虚拟网络而有一些私有接口,它会变得更慢。

答案 2 :(得分:2)

我们在当前开发版本(6.4.1-dev)中添加了一个事件。这表示在webrtc连接上使用的候选者。也许这可以帮助您调试问题。