[asterisk-bugs] [JIRA] (ASTERISK-29064) res_rtp_asterisk: Audio Delay on WebRTC Call from Delayed ICE Completion

Benjamin Keith Ford (JIRA) noreply at issues.asterisk.org
Thu Sep 10 11:27:43 CDT 2020


     [ https://issues.asterisk.org/jira/browse/ASTERISK-29064?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Benjamin Keith Ford updated ASTERISK-29064:
-------------------------------------------

    Summary: res_rtp_asterisk: Audio Delay on WebRTC Call from Delayed ICE Completion  (was: res_rtp_asterisk: Audio Delay on WebRTC Call)

> res_rtp_asterisk: Audio Delay on WebRTC Call from Delayed ICE Completion
> ------------------------------------------------------------------------
>
>                 Key: ASTERISK-29064
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29064
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_pjsip, Resources/res_rtp_asterisk
>    Affects Versions: 16.9.0
>         Environment: OS: CentOS Linux release 7.7.1908 (Core)
> CPU Cores: 2
> RAM: 4GB
> Client WebRTC Librery: sip.js 0.15.0
> Chrome version:  85.0.4183.83
> Asterisk Behind NAT: yes
> Client behind NAT: yes
>            Reporter: Oliver Rafael Peña
>            Assignee: Unassigned
>              Labels: webrtc
>         Attachments: audio delay call - 15 seconds no audio.pcapng, audio delay call - 15 seconds no audio SIP Messages.txt, Audio Delay Call - udp capture.pcapng, Audio Delay Example 3 - Captutre Client Side.pcapng, Audio Delay Example 3 - SIP Messages.txt, Audio Delay SIP Messages.txt, debug_15seconds_noaudio_call.txt, debug_asterisk_Example 3.txt
>
>
> Greetings,
> We've deployed asterisk + webrtc in a production enviroment, and since day one we've been having a problem with calls having audio delay  on both ways, this happens on ~10% of the calls, users are more often to identify the problem on outbound calls. The delay goes around 1-10 seconds, it vary. We understand that WebRTC comes with its requirements, and after a few months of research and testing we've done the following trying to solve the problem:
> - Even though we didn't find any fragmentation of DTLS packets on the handshake we decided to activate the pjsip endpoints option "dtls_auto_generate_cert" to discard any problems there.
> - Also we proceed to remove all unnecessary ICE candidates out of the client's end to ease ICE negotiation, along with reducing the ICE timeout to 500ms on the client
> - Also we remove the stunaddr option out of rtp.conf since we know the public IP, therefore removing the stun request out of the process.
> And after all that we still have the issue, hopefully we can clear that out on this thread.
> Based on our most recent testing, we noticed that asterisk is taking a considerable amount of time to initiate the DTLS handshake, roughly 2 seconds after the ICE bindings are done, in the capture file attached you can see that. The users perceived around 4-5 seconds of none audio at the beginning of this call.
> Here are the config files:
> pjsip.endpoint.conf
> {panel}
> [base_webrtc](!)
> type=endpoint
> auth=main_auth
> transport=0.0.0.0-wss
> allow=ulaw,alaw,gsm,g726,g722
> context=from-internal
> dtmf_mode=rfc4733
> mwi_subscribe_replaces_unsolicited=yes
> aggregate_mwi=yes
> use_avpf=yes
> rtcp_mux=yes
> ice_support=yes
> media_use_received_transport=no
> trust_id_inbound=yes
> direct_media=no
> timers=no
> media_encryption_optimistic=yes
> send_pai=yes
> rtp_symmetric=yes
> rewrite_contact=yes
> force_rport=yes
> language=en
> media_encryption=dtls
> dtls_verify=fingerprint
> dtls_auto_generate_cert=yes
> dtls_setup=actpass
> dtls_rekey=0
> webrtc=yes
> rtp_keepalive=2
> [1922285](base_webrtc)
> aors=1922285
> callerid=CallerID <1922285>
> mailboxes=1922285 at device
> {panel}
> rtp.conf
> {panel}
> [general]
> rtpstart=50000
> rtpend=55000
> rtpchecksums=yes
> strictrtp=no
> icesupport=yes
> [ice_host_candidates]
> x.x.x.x => y.y.y.y,include_local_address ; x.x.x.x is the internal IP, y.y.y.y is the external IP
> {panel}
> http.conf
> {panel}
> [general]
> enabled=yes
> enablestatic=no
> bindaddr=::
> bindport=8088
> prefix=
> sessionlimit=1000
> session_inactivity=30000
> session_keep_alive=15000
> tlsenable=yes
> tlsbindaddr=[::]:8089
> tlscertfile=/etc/asterisk/keys/cert.crt
> tlsprivatekey=/etc/asterisk/keys/keyl.key
> {panel}



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list