WebRTC connection failed due to DTLS error

Soebirk, Thorsten Thorsten.Sobirk at itelligence.dk
Thu Dec 31 13:29:02 UTC 2020


Could this be a lead? https://stackoverflow.com/a/59372624/2731792

/ Thorsten

From: gstreamer-devel [mailto:gstreamer-devel-bounces at lists.freedesktop.org] On Behalf Of Vladimir Tyutin
Sent: 30. december 2020 19:47
To: Discussion of the development of and with GStreamer <gstreamer-devel at lists.freedesktop.org>
Subject: Re: WebRTC connection failed due to DTLS error

EXTERNAL MAIL:


Hi Everyone,
I'm still trying to solve this webrtc issue in gstreamer version 1.18.2.
Please assist me with it.
Digging inside the logs I found that it seems to be DTLS issue.
I see in the log (see below) that DTLSTransport state is 0x3 (CONNECTING) for both streams.
Then I see errors for OpenSSL and state of dtlstransport becomes 0x2 (FAILED).
After that webrtc reports peer connection state is failed and it's over.

Please review the log below and suggest what is wrong and how to get it solved.

0:02:12.965308316  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1184:_collate_peer_connection_states:<webrtc> returning connecting
0:02:12.997038674  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc> transceiver 0x1504f28 DTLS state: 0x3
0:02:12.997216080  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc> transceiver 0x1504f28 ICE state: 0x2
0:02:12.997319324  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc> transceiver 0x173a800 DTLS state: 0x3
0:02:12.997408028  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc> transceiver 0x173a800 ICE state: 0x2
0:02:12.997488898  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1131:_collate_peer_connection_states:<webrtc> ICE connection state: 0x4. DTLS connection state: 0x8
0:02:12.997562935  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1184:_collate_peer_connection_states:<webrtc> returning connecting
0:02:13.003649538  1078  0x17cfa00 ERROR         dtlsconnection gst-plugins-bad-1.18.2/ext/dtls/gstdtlsconnection.c:985:handle_error:<GstDtlsConnection at 0x191a990> Fatal SSL error
0:02:13.003971145  1078  0x17cfa00 ERROR         dtlsconnection gst-plugins-bad-1.18.2/ext/dtls/gstdtlsconnection.c:968:ssl_err_cb:<GstDtlsConnection at 0x191a990> ssl error: 2948545816:error:14102410:lib(20):func(258):reason(1040):NA:0:SSL alert number 40

0:02:13.004335832  1078  0x17cfa00 ERROR                dtlsdec gst-plugins-bad-1.18.2/ext/dtls/gstdtlsdec.c:502:process_buffer:<dtlsdec0> Error processing buffer: Fatal SSL error
0:02:13.004443659  1078  0x17cfa00 WARN                 dtlsdec gst-plugins-bad-1.18.2/ext/dtls/gstdtlsdec.c:503:process_buffer:<dtlsdec0> error: Fatal SSL error
0:02:13.004804096  1078  0x17cfa00 ERROR                dtlsdec gst-plugins-bad-1.18.2/ext/dtls/gstdtlsdec.c:618:sink_chain:<dtlsdec0> Failed to process buffer: error
0:02:13.005068414  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc> transceiver 0x1504f28 DTLS state: 0x2
0:02:13.005202156  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc> transceiver 0x1504f28 ICE state: 0x2
0:02:13.005472765  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc> transceiver 0x173a800 DTLS state: 0x3
0:02:13.005710127  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc> transceiver 0x173a800 ICE state: 0x2
0:02:13.005908323  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1131:_collate_peer_connection_states:<webrtc> ICE connection state: 0x4. DTLS connection state: 0xc
0:02:13.006157434  1078  0x1510fb0 TRACE              webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1145:_collate_peer_connection_states:<webrtc> returning failed
0:02:13.006358797  1078  0x1510fb0 INFO               webrtcbin gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1295:_update_peer_connection_state_task:<webrtc> Peer connection state change from connecting(1) to failed(4)
[CAMERA_DEBUG] Peer connection state: failed

On Tue, Dec 29, 2020 at 8:29 PM Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
When I set log level 7 my app can’t even successfully start it’s crashed in some time even before I start webrtc.

It’s too much for arm processor.

As for client version. I’m not sure. I use google webrtc frameworks for Android and iOS.
And web JS app I run in Chrome (not sure how to match Chrome version to webrtc version):
Version 87.0.4280.88 (Official Build) (x86_64)



On 29 Dec 2020, at 20:05, Anton Pryima <zingfrid at gmail.com<mailto:zingfrid at gmail.com>> wrote:

BTW, Vladimir, what gstreamer version do you have at your cleints end?

On Tue, Dec 29, 2020, 18:14 Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
I could not collect log with GST_DEBUG=7 because it's too much for my camera device.
So I collected logs for these plugins:
export GST_DEBUG=2,webrtc*:7,*rtp*:7,*dtls*:7

Log started from moment I ask webrtc to create SDP offer.
Please give me any idea what might be wrong and how to solve it.

Thanks,
Vladimir

On Tue, Dec 29, 2020 at 4:06 PM Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
I can collect it from the moment when webrtc offer is generating.

My architecture is:
1. Remote client (iOS, Android, Web) send MQTT request to camera device to generate SDP offer
2. Offer is generating on camera and sent to client.
3. Client responds with SDP answer and webrtc session starts

I can collect log at the moment offer is generating on camera device.


On 29 Dec 2020, at 15:56, Anton Pryima <zingfrid at gmail.com<mailto:zingfrid at gmail.com>> wrote:

if it is possible, it will be better to have GST_DEBUG=*:7, but cut only the connection state (you know, when it will be.... :)

Best regards,
Anton

On Tue, Dec 29, 2020 at 2:52 PM Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
Sure Anton,
I will collect it once again and attach it to the next email.

I use the following command to activate logging:
“export GST_DEBUG=2,webrtc*:6,*dtls*:7”

Let me know if I need to include any other plugins to logging that might assist to analyse the issue.

Thanks,
Vladimir


On 29 Dec 2020, at 15:22, Anton Pryima <zingfrid at gmail.com<mailto:zingfrid at gmail.com>> wrote:

Hello Vladimir,

I've tried to google your errors and it looks like that dtls is not the reason. Can you please attach the full connection log from the beginning?

Best regards,
Anton.

On Tue, Dec 29, 2020 at 10:02 AM Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
Anton,
It's difficult to do on opponent side because there I have:
1. iOS application with webrtc
2. Android application with webrtc
3. JS application with webrtc

Can you advise how to check openssl there?
But all three applications worked well when I used gstreamer version 1.16.0 on my Linux camera device.
Once I updated gstreamer version to 1.18.2 on camera device something broke.
So I'm pretty sure issue on camera side but I have no idea how to understand this log with dtls error and what should I fix.

Moreover on my linux camera device I have gnutls and openssl. What is used by dtls plugin? Is it openssl or gnutls?

Thanks,
Vladimir



On Tue, Dec 29, 2020 at 10:49 AM Anton Pryima <zingfrid at gmail.com<mailto:zingfrid at gmail.com>> wrote:
Hello Vladimir.

Try to execute 'openssl version' at the both sides and provide output.

Best regards,
Anton.

On Mon, Dec 28, 2020, 22:03 Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
I still can't resolve the issue.
Can someone with dtls plugin experience analyze the log attached and tell me what is wrong and how to fix it?

DTLS plugin exists. Openssl is available on my camera device:
root at tina:~# openssl version
OpenSSL 1.1.0i  14 Aug 2018

So why webrtc can't connect due to dtls issue?

Same code was working on gstreamer version 1.16.0. The issue appeared when I migrated to gstreamer version 1.18.2.

I have also updated libnice to the latest version.

Please help me.

Thanks,
Vladimir

On Thu, Dec 24, 2020 at 10:48 AM Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
Thanks Anton,
Do you know if there any command in Linux to verify OpenSSL exists and running well?
In my build for openwrt Linux OpenSSL is included.


On 24 Dec 2020, at 10:25, Anton Pryima <zingfrid at gmail.com<mailto:zingfrid at gmail.com>> wrote:

Hello Vladimir.

According to both logs provided, I see an issue with OpenSSL. Please ensure that both ends have correct and working versions of OpenSSL.

Best regards,
Anton
On Thu, Dec 24, 2020, 08:40 Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
Hello everyone,
Can someone help me with issue below?
Please review the log from previous mail and suggest what is the issue with dtls and how to fix it.

Thanks,
Vladimir


On 20 Dec 2020, at 09:53, Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:

Please find the log attached with dtls log level set to 7.
Please help me to understand what is wrong and why peer connection is failing.

Thanks,
Vladimir

On Sun, Dec 20, 2020 at 8:56 AM Vladimir Tyutin <vladimir.tyutin at gmail.com<mailto:vladimir.tyutin at gmail.com>> wrote:
Hi Sean,
Thanks for your reply. Could you please advise how better to collect DTLS pcaps?
I can activate log for DTLS element like this:
export GST_DEBUG=2,dtls*:7
Is it enough?

By the way I'm trying to get webrtc working between Lindenis V536 camera and iOS app.
They have already worked before together. On iOS side nothing is changed.
in camera side I have migrated from gstreamer version 1.16.0 to version 1.18.2.
So is there any changes in dtls side between these versions.
Any suggesting how better to debug this issue I would appreciate.

Thanks,
Vladimir

PS. I will share DTLS element logs once I collect it.

On Sun, Dec 20, 2020 at 1:19 AM Sean DuBois <sean at siobud.com<mailto:sean at siobud.com>> wrote:
Hey Vladimir,

Would you mind getting a pcap of your DTLS traffic? I assume you are
getting a Close because the clients are incompatible. These are the big
ones I have seen with DTLS.

* One side doesn't have use_srtp
* DTLS v1.0 and v1.2 mismatch
* One side requiring Extended Master Secret, other side not supporting
* .... lots of other crazy stuff :)

thanks

On Sat, Dec 19, 2020 at 04:54:58PM +0300, Vladimir Tyutin wrote:
> Please assist me to solve the issue below.
> I observe WebRTC peer connection can't be established.
> In log I see some errors related to dtls. Please help me understand the log
> below and get the issue resolved:
>
> 0:01:21.644288173  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc>
> transceiver 0x1ab0f08 DTLS state: 0x0
> 0:01:21.644405214  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc>
> transceiver 0x1ab0f08 ICE state: 0x1
> 0:01:21.644569089  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc>
> transceiver 0x1bed050 DTLS state: 0x3
> 0:01:21.644678631  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc>
> transceiver 0x1bed050 ICE state: 0x2
> 0:01:21.644764381  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1131:_collate_peer_connection_states:<webrtc>
> ICE connection state: 0x6. DTLS connection state: 0x9
> 0:01:21.644837673  1090  0x1b401b0 FIXME              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1189:_collate_peer_connection_states:<webrtc>
> Undefined situation detected, returning old state
> 0:01:21.762102246  1090  0x1f1b7b0 WARN           dtlssrtpdemux
> gst-plugins-bad-1.18.2/ext/dtls/gstdtlssrtpdemux.c:134:sink_chain:<dtlssrtpdemux2>
> received invalid buffer: 1
> 0:01:21.769914036  1090  0x1f1b7b0 ERROR         dtlsconnection
> gst-plugins-bad-1.18.2/ext/dtls/gstdtlsconnection.c:985:handle_error:<GstDtlsConnection at 0x1da56f0>
> Fatal SSL error
> 0:01:21.770157620  1090  0x1f1b7b0 ERROR         dtlsconnection
> gst-plugins-bad-1.18.2/ext/dtls/gstdtlsconnection.c:968:ssl_err_cb:<GstDtlsConnection at 0x1da56f0>
> ssl error:
> 2947169560:error:14102410:lib(20):func(258):reason(1040):NA:0:SSL alert
> number 40
>
> 0:01:21.770551453  1090  0x1f1b7b0 ERROR                dtlsdec
> gst-plugins-bad-1.18.2/ext/dtls/gstdtlsdec.c:502:process_buffer:<dtlsdec2>
> Error processing buffer: Fatal SSL error
> 0:01:21.770553453  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc>
> transceiver 0x1ab0f08 DTLS state: 0x0
> 0:01:21.770745245  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc>
> transceiver 0x1ab0f08 ICE state: 0x1
> 0:01:21.770861286  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1073:_collate_peer_connection_states:<webrtc>
> transceiver 0x1bed050 DTLS state: 0x2
> 0:01:21.770951120  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1086:_collate_peer_connection_states:<webrtc>
> transceiver 0x1bed050 ICE state: 0x2
> 0:01:21.771039203  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1131:_collate_peer_connection_states:<webrtc>
> ICE connection state: 0x6. DTLS connection state: 0x5
> 0:01:21.771119036  1090  0x1b401b0 TRACE              webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1145:_collate_peer_connection_states:<webrtc>
> returning failed
> 0:01:21.771230036  1090  0x1b401b0 INFO               webrtcbin
> gst-plugins-bad-1.18.2/ext/webrtc/gstwebrtcbin.c:1295:_update_peer_connection_state_task:<webrtc>
> Peer connection state change from connecting(1) to failed(4)
> [CAMERA_DEBUG] Peer connection state: failed
> 0:01:21.770664245  1090  0x1f1b7b0 WARN                 dtlsdec
> gst-plugins-bad-1.18.2/ext/dtls/gstdtlsdec.c:503:process_buffer:<dtlsdec2>
> error: Fatal SSL error
> 0:01:21.772238245  1090  0x1f1b7b0 ERROR                dtlsdec
> gst-plugins-bad-1.18.2/ext/dtls/gstdtlsdec.c:618:sink_chain:<dtlsdec2>
> Failed to process buffer: error
> 0:01:21.808121366  1090  0x1f1ba90 WARN                 basesrc
> gstreamer-1.18.2/libs/gst/base/gstbasesrc.c:3127:gst_base_src_loop:<nicesrc2>
> error: Internal data stream error.
> 0:01:21.808266866  1090  0x1f1ba90 WARN                 basesrc
> gstreamer-1.18.2/libs/gst/base/gstbasesrc.c:3127:gst_base_src_loop:<nicesrc2>
> error: streaming stopped, reason error (-5)
> 0:01:21.809681158  1090  0x1f1ba90 WARN                   queue
> gstreamer-1.18.2/plugins/elements/gstqueue.c:990:gst_queue_handle_sink_event:<queue8>
> error: Internal data stream error.
> 0:01:21.809811158  1090  0x1f1ba90 WARN                   queue
> gstreamer-1.18.2/plugins/elements/gstqueue.c:990:gst_queue_handle_sink_event:<queue8>
> error: streaming stopped, reason error (-5)

> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
<log_v536.txt>
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20201231/7d5e051d/attachment-0001.htm>


More information about the gstreamer-devel mailing list