Why iOS WebRTC keeps disconnecting and reconnecting in LTE/4G of certain carriers

Viewed 187

WebRTC calls work fine in Wifi, VPN and most cellular carriers. Sometimes the peerConnection keep disconnecting and reconnecting thus breaking the audio.

We are using public STUN servers such as stun.services.mozilla.com and stun:stun.l.google.com:19302. Our TURN server is working fine. The calls work fine if we only use the TURN server.

I am providing the SDP and ICE of a disconnecting call.

Offer SDP:

v=0\r\no=- 4172632258566879950 3 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=msid-semantic: WMS stream0\r\nm=audio 9 UDP\/TLS\/RTP\/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\nb=AS:100\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:A\/A5\r\na=ice-pwd:q++LMQQkQDpXCDuDN5hc8fb5\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 3C:71:C3:0A:3D:7D:0D:59:B0:16:3B:2F:35:B2:1F:4B:B2:DF:FE:4C:58:B8:8E:00:89:1C:90:08:F2:29:BB:3D\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=extmap:3 http:\/\/www.ietf.org\/id\/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:stream0 audio0\r\na=rtcp-mux\r\na=rtpmap:111 opus\/48000\/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC\/16000\r\na=rtpmap:104 ISAC\/32000\r\na=rtpmap:9 G722\/8000\r\na=rtpmap:102 ILBC\/8000\r\na=rtpmap:0 PCMU\/8000\r\na=rtpmap:8 PCMA\/8000\r\na=rtpmap:106 CN\/32000\r\na=rtpmap:105 CN\/16000\r\na=rtpmap:13 CN\/8000\r\na=rtpmap:110 telephone-event\/48000\r\na=rtpmap:112 telephone-event\/32000\r\na=rtpmap:113 telephone-event\/16000\r\na=rtpmap:126 telephone-event\/8000\r\na=ssrc:3543196531 cname:oMZZP7Hbx628+UbM\r\na=ssrc:3543196531 msid:stream0 audio0\r\na=ssrc:3543196531 mslabel:stream0\r\na=ssrc:3543196531 label:audio0\r\n

Ice Candidates:

"candidate" : "candidate:3700740912 1 udp 2122260223 10.143.6.123 50584 typ host generation 0 ufrag 84ZF network-id 5 network-cost 900"
"candidate" : "candidate:1798952569 1 udp 2122194687 10.233.131.139 51549 typ host generation 0 ufrag 84ZF network-id 6 network-cost 900"
"candidate" : "candidate:1798952569 1 udp 2122129151 10.233.131.139 50701 typ host generation 0 ufrag 84ZF network-id 1 network-cost 50",
"candidate" : "candidate:1798952569 1 udp 2122063615 10.233.131.139 58015 typ host generation 0 ufrag 84ZF network-id 2 network-cost 50"
"candidate" : "candidate:3700740912 1 udp 2122260223 10.143.6.123 65317 typ host generation 1 ufrag A\/A5 network-id 5 network-cost 900",
"candidate" : "candidate:1798952569 1 udp 2122194687 10.233.131.139 64304 typ host generation 1 ufrag A\/A5 network-id 6 network-cost 900",
"candidate" : "candidate:1798952569 1 udp 2122129151 10.233.131.139 65194 typ host generation 1 ufrag A\/A5 network-id 1 network-cost 50",
"candidate" : "candidate:1798952569 1 udp 2122063615 10.233.131.139 63703 typ host generation 1 ufrag A\/A5 network-id 2 network-cost 50",
"candidate" : "candidate:713337572 1 udp 1686052607 51.39.192.20 1682 typ srflx raddr 10.143.6.123 rport 50584 generation 0 ufrag 84ZF network-id 5 network-cost 900",
"candidate" : "candidate:713337572 1 udp 1686052607 51.39.192.20 1683 typ srflx raddr 10.143.6.123 rport 65317 generation 1 ufrag A\/A5 network-id 5 network-cost 900",
"candidate" : "candidate:4229289395 1 udp 41885695 34.76.46.53 57332 typ relay raddr 51.39.192.20 rport 1683 generation 1 ufrag A\/A5 network-id 5 network-cost 900"

Answer SDP:

v=0\r\no=- 1423705976133154216 3 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=msid-semantic: WMS stream0\r\nm=audio 9 UDP\/TLS\/RTP\/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\nb=AS:100\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:y4G2\r\na=ice-pwd:CdiMVxIWPuocayORU+B6CiAK\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 66:79:BE:67:B4:47:1D:0B:4D:5E:52:2B:AE:B8:F9:E0:92:84:F0:6D:F4:30:AE:33:1B:20:BC:B5:1B:82:B1:D6\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=extmap:3 http:\/\/www.ietf.org\/id\/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:stream0 audio0\r\na=rtcp-mux\r\na=rtpmap:111 opus\/48000\/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC\/16000\r\na=rtpmap:104 ISAC\/32000\r\na=rtpmap:9 G722\/8000\r\na=rtpmap:102 ILBC\/8000\r\na=rtpmap:0 PCMU\/8000\r\na=rtpmap:8 PCMA\/8000\r\na=rtpmap:106 CN\/32000\r\na=rtpmap:105 CN\/16000\r\na=rtpmap:13 CN\/8000\r\na=rtpmap:110 telephone-event\/48000\r\na=rtpmap:112 telephone-event\/32000\r\na=rtpmap:113 telephone-event\/16000\r\na=rtpmap:126 telephone-event\/8000\r\na=ssrc:88754471 cname:Wh+Qws5GKqMpg17J\r\n

Ice Candidates:


"candidate" : "candidate:970003985 1 udp 2122260223 10.143.52.119 51961 typ host generation 0 ufrag gfYY network-id 13 network-cost 900",
"candidate" : "candidate:4005992910 1 udp 2122194687 100.116.32.182 52124 typ host generation 0 ufrag gfYY network-id 14 network-cost 900",
"candidate" : "candidate:1653955087 1 udp 2122134271 fd74:6572:6d6e:7573:c:8cab:882e:fb77 58617 typ host generation 0 ufrag gfYY network-id 2 network-cost 50",
"candidate" : "candidate:682348868 1 udp 2122068735 fd74:6572:6d6e:7573:d:8cab:882e:fb77 62719 typ host generation 0 ufrag gfYY network-id 3 network-cost 50"
"candidate" : "candidate:1653955087 1 udp 2122003199 fd74:6572:6d6e:7573:c:8cab:882e:fb77 52309 typ host generation 0 ufrag gfYY network-id 5 network-cost 50"
"candidate" : "candidate:1653955087 1 udp 2121937663 fd74:6572:6d6e:7573:c:8cab:882e:fb77 57335 typ host generation 0 ufrag gfYY network-id 7 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121867007 100.116.32.182 57839 typ host generation 0 ufrag gfYY network-id 1 network-cost 50"
"candidate" : "candidate:2486661909 1 udp 2121801471 10.254.254.254 49758 typ host generation 0 ufrag gfYY network-id 4 network-cost 50",
"candidate" : "candidate:2486661909 1 udp 2121735935 10.254.254.254 52294 typ host generation 0 ufrag gfYY network-id 6 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121670399 100.116.32.182 51897 typ host generation 0 ufrag gfYY network-id 8 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121604863 100.116.32.182 61504 typ host generation 0 ufrag gfYY network-id 9 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121539327 100.116.32.182 56753 typ host generation 0 ufrag gfYY network-id 10 network-cost 50"
"candidate" : "candidate:970003985 1 udp 2122260223 10.143.52.119 51627 typ host generation 1 ufrag y4G2 network-id 13 network-cost 900",
"candidate" : "candidate:4005992910 1 udp 2122194687 100.116.32.182 53004 typ host generation 1 ufrag y4G2 network-id 14 network-cost 900"
"candidate" : "candidate:1653955087 1 udp 2122134271 fd74:6572:6d6e:7573:c:8cab:882e:fb77 55726 typ host generation 1 ufrag y4G2 network-id 2 network-cost 50",
"candidate" : "candidate:682348868 1 udp 2122068735 fd74:6572:6d6e:7573:d:8cab:882e:fb77 53467 typ host generation 1 ufrag y4G2 network-id 3 network-cost 50"
"candidate" : "candidate:1653955087 1 udp 2122003199 fd74:6572:6d6e:7573:c:8cab:882e:fb77 52434 typ host generation 1 ufrag y4G2 network-id 5 network-cost 50",
"candidate" : "candidate:1653955087 1 udp 2121937663 fd74:6572:6d6e:7573:c:8cab:882e:fb77 51877 typ host generation 1 ufrag y4G2 network-id 7 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121867007 100.116.32.182 56486 typ host generation 1 ufrag y4G2 network-id 1 network-cost 50",
"candidate" : "candidate:2486661909 1 udp 2121801471 10.254.254.254 53000 typ host generation 1 ufrag y4G2 network-id 4 network-cost 50",
"candidate" : "candidate:2486661909 1 udp 2121735935 10.254.254.254 53627 typ host generation 1 ufrag y4G2 network-id 6 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121670399 100.116.32.182 52042 typ host generation 1 ufrag y4G2 network-id 8 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121604863 100.116.32.182 64341 typ host generation 1 ufrag y4G2 network-id 9 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121539327 100.116.32.182 65433 typ host generation 1 ufrag y4G2 network-id 10 network-cost 50"

After Ice negotiation completes I get

2021/01/14 20:02:10:663  peerConnection new connection state: connected
2021/01/14 20:02:21:044  peerConnection new connection state: disconnected
2021/01/14 20:02:21:163  peerConnection new connection state: connected
...

It goes on like this.

In Android the same implementation works fine. Only on iOS we are facing the issue. We are using official SDK GoogleWebRTC.

Any help would be appreciated.

0 Answers
Related