Skip to content

SDP Answer from kurento contains invalid ICE-lite attribute #125

@Mortega5

Description

@Mortega5

Prerequisites

These are MANDATORY, otherwise the issue will be automatically closed.

Issue description

When a client negotiates an SDP offer with the a=ice-lite attribute, Kurento responds with an SDP answer in ice-lite mode. As I understand it, and based on its behavior, Kurento is actually acting as ice-full rather than ice-lite (I've seen it perform ICE candidate validations by sending STUN requests).

SDP offer

v=0
o=test 1744189491 1744189492 IN IP4 x.x.x.x
s=test
c=IN IP4 x.x.x.x
b=AS:2080
t=0 0
a=ice-lite
a=ice-options:trickle
a=group:BUNDLE audio video
a=msid-semantic:WMS 74b4e4f295854f7eaacf7c5dadc8aa10
m=audio 49160 UDP/TLS/RTP/SAVP 8 96 0 97 98
b=AS:80
a=tcap:1 RTP/SAVPF
a=pcfg:1 t=1
a=rtpmap:8 pcma/8000
a=rtpmap:96 opus/48000/2
a=fmtp:96 maxplaybackrate=16000; sprop-maxcapturerate=16000; sprop-stereo=0; stereo=0
a=rtpmap:0 pcmu/8000
a=rtpmap:97 telephone-event/8000
a=fmtp:97 0-15
a=rtpmap:98 telephone-event/48000
a=fmtp:98 0-15
a=ptime:20
a=maxptime:120
a=sendrecv
a=rtcp:49161
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:mid
a=candidate:1 1 UDP 2130706175 x.x.x.x 49160 typ host
a=candidate:1 2 UDP 2130706174 x.x.x.x 49161 typ host
a=end-of-candidates
a=ice-ufrag:Go70
a=ice-pwd:NaHvmYbvdIwwsYRRQgFhY/
a=setup:actpass
a=fingerprint:sha-256 86:F7:D9:93:7B:82:0F:BC:78:66:C3:7A:7D:4E:E5:27:59:6A:4F:36:EC:CF:21:2A:1D:F9:87:B3:B0:90:82:50
a=rtcp-mux
a=msid:74b4e4f295854f7eaacf7c5dadc8aa10 386bc116b05f497d925bf886caa12242
a=ssrc:1135259590 cname:cwYjg8xT1rN4
a=mid:audio
a=candidate:1 1 UDP 2130706175 x.x.x.x 49160 typ host
a=candidate:1 2 UDP 2130706174 x.x.x.x 49161 typ host
a=candidate:1 1 UDP 2130706175 x.x.x.x 49160 typ host
a=candidate:1 2 UDP 2130706174 x.x.x.x 49161 typ host
m=video 57352 UDP/TLS/RTP/SAVPF 34 99 100
b=AS:2000
a=rtpmap:34 h263/90000
a=fmtp:34 CIF=1; CIF=2; CIF=2; QCIF=1; QCIF=2; QCIF=2; 2
a=rtpmap:99 vp8/90000
a=fmtp:99 max-fr=30; max-fs=3600
a=rtpmap:100 h264/90000
a=fmtp:100 profile-level-id=42c01f; packetization-mode=0
a=sendrecv
a=framerate:30
a=extmap:4 urn:3gpp:video-orientation
a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:7 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=rtcp:57353
a=rtcp-fb:* nack
a=rtcp-fb:* nack pli
a=rtcp-fb:* ccm fir
a=rtcp-fb:* goog-remb
a=rtcp-fb:* ccm tmmbr
a=rtcp-fb:* transport-cc
a=candidate:1 1 UDP 2130706175 x.x.x.x 57352 typ host
a=candidate:1 2 UDP 2130706174 x.x.x.x 57353 typ host
a=end-of-candidates
a=ice-ufrag:+AVf
a=ice-pwd:HTT2n1/+IVPeI6DIon3Siy
a=setup:actpass
a=fingerprint:sha-256 86:F7:D9:93:7B:82:0F:BC:78:66:C3:7A:7D:4E:E5:27:59:6A:4F:36:EC:CF:21:2A:1D:F9:87:B3:B0:90:82:50
a=rtcp-mux
a=msid:74b4e4f295854f7eaacf7c5dadc8aa10 1e29615128dc48d0bec901ddb73a187a
a=ssrc:765589213 cname:cwYjg8xT1rN4
a=mid:video
a=candidate:1 1 UDP 2130706175 x.x.x.x 57352 typ host
a=candidate:1 2 UDP 2130706174 x.x.x.x 57353 typ host
a=candidate:1 1 UDP 2130706175 x.x.x.x 57352 typ host
a=candidate:1 2 UDP 2130706174 x.x.x.x 57353 typ host

Kurento SDP answer

v=0
o=- 3953178299 3953178299 IN IP4 0.0.0.0
s=Kurento Media Server
t=0 0
a=ice-lite
a=ice-options:trickle
a=msid-semantic:WMS 74b4e4f295854f7eaacf7c5dadc8aa10
a=group:BUNDLE audio video
m=audio 55758 UDP/TLS/RTP/SAVP 96
c=IN IP4 10.50.2.247
a=sendrecv
a=mid:audio
a=rtcp:55758 IN IP4 10.50.2.247
a=rtpmap:96 opus/48000/2
a=fmtp:96 maxplaybackrate=16000; sprop-maxcapturerate=16000; sprop-stereo=0; stereo=0
a=ptime:20
a=maxptime:120
a=setup:active
a=rtcp-mux
a=ssrc:1055466269 cname:user1865411734@host-7b219810
a=ice-ufrag:NRqr
a=ice-pwd:1g+AsS3DOkGxypCj65Q6MB
a=fingerprint:sha-256 D7:E6:B1:B8:5A:A1:37:5A:DE:64:50:5A:86:A9:61:13:A7:DA:47:AB:C6:6F:46:D2:54:8D:FE:47:B6:81:F2:A6
a=candidate:1 1 UDP 2015363327 y.y.y.y 6049 typ host
a=candidate:2 1 TCP 1015021823 y.y.y.y 9 typ host tcptype active
a=candidate:3 1 TCP 1010827519 y.y.y.y 34632 typ host tcptype passive
a=candidate:1 2 UDP 2015363326 y.y.y.y 9847 typ host
a=candidate:2 2 TCP 1015021822 y.y.y.y 9 typ host tcptype active
a=candidate:3 2 TCP 1010827518 y.y.y.y 19073 typ host tcptype passive
a=candidate:7 1 TCP 847249663 10.50.0.185 9 typ srflx raddr y.y.y.y rport 9 tcptype active
a=candidate:8 1 TCP 843055359 10.50.0.185 34632 typ srflx raddr y.y.y.y rport 34632 tcptype passive
a=candidate:9 1 UDP 337641727 10.50.2.247 55758 typ relay raddr y.y.y.y rport 9
a=candidate:7 1 TCP 847249663 10.50.2.176 9 typ srflx raddr y.y.y.y rport 9 tcptype active
a=candidate:8 1 TCP 843055359 10.50.2.176 34632 typ srflx raddr y.y.y.y rport 34632 tcptype passive
a=candidate:7 2 TCP 847249662 10.50.1.169 9 typ srflx raddr y.y.y.y rport 9 tcptype active
a=candidate:8 2 TCP 843055358 10.50.1.169 19073 typ srflx raddr y.y.y.y rport 19073 tcptype passive
a=candidate:9 2 UDP 337641726 10.50.2.247 61903 typ relay raddr y.y.y.y rport 9
m=video 55758 UDP/TLS/RTP/SAVPF 99 100
c=IN IP4 10.50.2.247
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=mid:video
a=rtcp:55758 IN IP4 10.50.2.247
a=rtpmap:99 vp8/90000
a=rtpmap:100 h264/90000
a=fmtp:99 max-fr=30; max-fs=3600
a=fmtp:100 profile-level-id=42c01f; packetization-mode=0
a=framerate:30
a=setup:active
a=rtcp-mux
a=ssrc:103812202 cname:user1865411734@host-7b219810
a=ice-ufrag:NRqr
a=ice-pwd:1g+AsS3DOkGxypCj65Q6MB
a=fingerprint:sha-256 D7:E6:B1:B8:5A:A1:37:5A:DE:64:50:5A:86:A9:61:13:A7:DA:47:AB:C6:6F:46:D2:54:8D:FE:47:B6:81:F2:A6
a=candidate:1 1 UDP 2015363327 y.y.y.y 6049 typ host
a=candidate:2 1 TCP 1015021823 y.y.y.y 9 typ host tcptype active
a=candidate:3 1 TCP 1010827519 y.y.y.y 34632 typ host tcptype passive
a=candidate:1 2 UDP 2015363326 y.y.y.y 9847 typ host
a=candidate:2 2 TCP 1015021822 y.y.y.y 9 typ host tcptype active
a=candidate:3 2 TCP 1010827518 y.y.y.y 19073 typ host tcptype passive
a=candidate:7 1 TCP 847249663 10.50.0.185 9 typ srflx raddr y.y.y.y rport 9 tcptype active
a=candidate:8 1 TCP 843055359 10.50.0.185 34632 typ srflx raddr y.y.y.y rport 34632 tcptype passive
a=candidate:9 1 UDP 337641727 10.50.2.247 55758 typ relay raddr y.y.y.y rport 9
a=candidate:7 1 TCP 847249663 10.50.2.176 9 typ srflx raddr y.y.y.y rport 9 tcptype active
a=candidate:8 1 TCP 843055359 10.50.2.176 34632 typ srflx raddr y.y.y.y rport 34632 tcptype passive
a=candidate:7 2 TCP 847249662 10.50.1.169 9 typ srflx raddr y.y.y.y rport 9 tcptype active
a=candidate:8 2 TCP 843055358 10.50.1.169 19073 typ srflx raddr y.y.y.y rport 19073 tcptype passive
a=candidate:9 2 UDP 337641726 10.50.2.247 61903 typ relay raddr y.y.y.y rport 9

Context

I'm attempting to negotiate the SDP generated by another media server with Kurento, but the other media server raises issues regarding the way ICE candidate validation is performed (specifically, the STUN request). From what I've observed, one of the underlying causes is that Kurento advertises itself as ICE-lite in the SDP, but it behaves as an ICE-full agent instead.

How to reproduce?

  1. Create a media pipeline and an WebRtcEndpoint
  2. Process the previous SDP using the created WebRTCEndpoint
  3. The sdpAnswer contains the attribute a=ice-lite
  4. The STUN request containes ufragA:ufragB format (as far as I know this is expected using ice-full)

Expected & current behavior

Current behaviour: Kurento includes ice-lite attribute to the SDP answer.

Expected: the attribute should be removed

Info about your environment

About Kurento Media Server

About your Application Server

  • Programming Language: Java
  • Kurento Client version: 7.2.0

About end-user clients

Run these commands

cat /etc/lsb-release
kurento-media-server --version
dpkg -l | grep -Pi 'kurento|kms-|gst.*1.5|nice'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions