awslabs / amazon-kinesis-video-streams-webrtc-sdk-js

JS SDK for interfacing with the Amazon Kinesis Video Streams Signaling Service.
https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html
Apache License 2.0
286 stars 141 forks source link

Exceed signaling message payload size limit when trickle ICE is disabled. #92

Closed yuma-m closed 1 week ago

yuma-m commented 3 years ago

When I choose STUN/TURN and disable Use trickle ICE on the KVS WebRTC Test Page, the message payload size exceeds the service limit (10K) and the signaling message will not reach to the master. Are there any workaround for this?

Environment

The actual message payload size of SDP_OFFER

lherman-cs commented 3 years ago

@yuma-m you may want to modify this value to your need, https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/master/src/source/Sdp/Sdp.h#L76

yuma-m commented 3 years ago

Hi @lherman-cs, Thank you for your response.

I choose a bigger MAX_SDP_ATTRIBUTES_COUNT and confirmed the master received a SDP_OFFER bigger than 10k bytes. But after receiving the SDP_OFFER, an error below (lws_ws_handshake_client: client_rx_sm exited) is recorded and the master will not send SDP_ANSWER.

2020-09-14 12:47:13 DEBUG   lwsWssCallbackRoutine(): Client receive {"messagePayload":"eyJ0eXBlIjoib2ZmZXIiLCJzZHAiOiJ2PTBcclxubz0tIDYwNTM0ODQxNTUzNTgxNjEyODAgMiBJTiBJUDQ
... (omitted because the payload is very long)
TE2IHVscGZlYy85MDAwMFxyXG4ifQ==","messageType":"SDP_OFFER","senderClientId":"JOBANIPTZUH"}
2020-09-14 12:47:13 WARN    lwsWssCallbackRoutine(): Failed in LWS handling routine with 0x5d000028
[2020/09/14 21:47:13:4094] N: lws_ws_handshake_client: client_rx_sm exited, DROPPING 1

Can I modify other lines to avoid this error?

MushMal commented 3 years ago

The issue here is that the message limits are being hit. There is no easy workaround for this yet. The only thing that comes to mind is to reduce the size of the message by reducing the SDP size. It can be potentially done by disabling some of the network interfaces that are not going to be used.

ycyang1229 commented 2 years ago

I hit this issue with aws WebRTC testpage(disabled trickle ice). I think aws WebRTC testpage should avoid generating the messages bigger than 10k since the limit is already known. Is it possible to fix the issue on aws WebRTC testpage?

sirknightj commented 1 week ago

We don't recommend disabling trickle ice unless absolutely necessary as it will increase connection time. To overcome this issue, you can reduce the number of ICE servers (specifically, KVS TURN servers) you're passing into the RTCPeerConnection configuration. After calling GetIceServerConfig, discard (filter) some of the TURN servers out.