<div dir="ltr"><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Александр Дружилов</b> <span dir="ltr">&lt;<a href="mailto:alexdruzhilov@gmail.com">alexdruzhilov@gmail.com</a>&gt;</span><br>Date: 2016-09-26 14:31 GMT+03:00<br>Subject: Freeswitch uses wrong ICE candidate to establish connection<br>To: <a href="mailto:freeswitch-users@lists.freeswitch.org">freeswitch-users@lists.freeswitch.org</a><br><br><br><div dir="ltr"><div><b>The short description of problem</b></div><div>We are using Freeswitch for conference calls through webRTC. Chrome collects ICE candidates (from two net interfaces: ethernet and wifi), sends them to Freeswitch and Freeswitch accepts one of this candidates. After that Freeswitch tries to make DTLS handshake, but Chrome ignores it and sends STUN pings over and over again. But if I disable one of this network interfaces, then everything works fine. From my point of view the problem is that Freeswitch uses wrong ICE candidate (it takes this candidate from STUN pings, but there is no exactly such candidate in SDP). I also admit that may be the root of the problem is inside Chrome (because Firefox works properly in this case), but I interested in possible explanations an may be solutions from the Freeswitch side. </div><div><br></div><b>Versions</b><br>Freeswitch 1.6.9, 1.6.10<br>Chrome 52, 53, 54<div>Server OS: CentOS 7.2.1511<br>Client OS: Ubuntu 16.04</div><div><br></div><div><b>IP addresses</b></div><div>1) 172.15.1.1 - local VM (VirtualBox)<br>2) 192.168.22.57 - local ethernet interface<br>3) 192.168.41.185 - local wi-fi interface</div><div>4) 52.202.171.116 - Freeswitch IP<br><br></div><div><b>Succsess case</b></div><div>Chrome sends offer with this candidates (Ethernet and WI-FI addresses)<br></div><div><div>a=candidate:988003974 1 udp 2122260223 192.168.22.57 56687 typ host generation 0 network-id 1</div><div>a=candidate:3404510875 1 udp 2122194687 192.168.41.185 57467 typ host generation 0 network-id 4 network-cost 10</div><div>a=candidate:988003974 2 udp 2122260222 192.168.22.57 60099 typ host generation 0 network-id 1</div><div>a=candidate:3404510875 2 udp 2122194686 192.168.41.185 54887 typ host generation 0 network-id 4 network-cost 10</div><div>a=candidate:3148593202 1 udp 1686052607 80.254.60.17 56687 typ srflx raddr 192.168.22.57 rport 56687 generation 0 network-id 1</div><div>a=candidate:3148593202 2 udp 1686052606 80.254.60.17 60099 typ srflx raddr 192.168.22.57 rport 60099 generation 0 network-id 1</div></div><div><br></div><div>Freeswitch choose srflx candidate<br>2016-09-26 10:54:28.337897 [DEBUG] switch_core_media.c:6434 AUDIO RTP [sofia/<wbr>external576460752303423473@<wbr>wrike] 172.16.106.100 port 17052 -&gt; 80.254.60.17 port 56687 codec: 111 ms: 20<br></div><div>Receives STUN pings from this interface and everything goes as expected - media stream established.<br><br><b>Failure case (add one interface (VirtualBox) or disable one of existing interfaces)</b></div><div>Chrome sends offer with one additional interface (VirtualBox).<br><div>a=candidate:1861086701 1 udp 2122260223 172.15.1.1 43367 typ host generation 0 network-id 3</div><div>a=candidate:988003974 1 udp 2122194687 192.168.22.57 54230 typ host generation 0 network-id 1</div><div>a=candidate:3404510875 1 udp 2122129151 192.168.41.185 42752 typ host generation 0 network-id 4 network-cost 10</div><div>a=candidate:1861086701 2 udp 2122260222 172.15.1.1 55301 typ host generation 0 network-id 3</div><div>a=candidate:988003974 2 udp 2122194686 192.168.22.57 44112 typ host generation 0 network-id 1</div><div>a=candidate:3404510875 2 udp 2122129150 192.168.41.185 46978 typ host generation 0 network-id 4 network-cost 10</div><div>a=candidate:3148593202 1 udp 1685987071 80.254.60.17 54230 typ srflx raddr 192.168.22.57 rport 54230 generation 0 network-id 1</div><div>a=candidate:3148593202 2 udp 1685987070 80.254.60.17 44112 typ srflx raddr 192.168.22.57 rport 44112 generation 0 network-id 1</div></div><div><br></div><div>Freeswitch choose VirtualBox interface as main candidate</div><div><div>2016-09-26 11:03:40.513295 [DEBUG] switch_core_media.c:6434 AUDIO RTP [sofia/external/<wbr>576460752303423471@wrike] 172.16.106.100 port 17000 -&gt; 172.15.1.1 port 42374 codec: 111 ms: 20</div></div><div><br></div><div>After a few STUN pings Freeswitch changes his main candidate to the public address of my Wi-Fi interface (but it was not included in SDP by chrome and I don&#39;t know exactly why).</div><div>2016-09-26 11:03:40.912987 [NOTICE] switch_rtp.c:1258 Auto Changing video stun/rtp/dtls port from <a href="http://172.15.1.1:43367" target="_blank">172.15.1.1:43367</a> to <a href="http://80.254.60.17:42752" target="_blank">80.254.60.17:42752</a><br><br>Freeswitch tries to make DTLS handshake with this candidate, but fails because Chrome ingores this &quot;Client Hello&quot; request.</div><div><br></div><div>All necessary data attached for success and failure cases (freeswitch logs, wireshark dump made on client, SDP).</div></div>
</div><br></div>