ice_lite vs ice_tcp

1,062 views
Skip to first unread message

Ajay Choudary

unread,
Jul 16, 2015, 3:16:57 AM7/16/15
to meetech...@googlegroups.com

In janus enabling ice_lite is mandatory for ice_tcp support.
1) How ice_lite is related to ice_tcp ?
2) Janus is continuously sending Role conflict for received STUN binding requests if we enable ice_lite
     if janus is publishing "a=ice_lite" in SDP, then it should be in ICE controlled role but it is depending only on offer/answer
     or at least it should change the role (instead of sending 487)

please suggest

Thanks,
AjayG

Lorenzo Miniero

unread,
Jul 16, 2015, 3:24:04 AM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
It's mandatory because I could never get ICE-TCP to work without ICE Lite, with libnice: not sure if this has been fixed in the meanwhile.
Questions related to role conflicts should be relayed to the libnice mailing list, we just use the library.

L.

Ajay Choudary

unread,
Jul 16, 2015, 5:28:27 AM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
In ice.c we are setting role based on offer, 
g_object_set(G_OBJECT(handle->agent), "controlling-mode", !offer, NULL);

I have an alternative fix for this issue, by stop publishing "a=ice_lite" in SDP from Janus, 
    // g_strlcat(sdp, "a=ice-lite\r\n", BUFSIZE);
but i don't know where it will impact, please suggest.

libnice version: 0.1.12

Thanks,
Ajay.

Lorenzo Miniero

unread,
Jul 16, 2015, 5:30:31 AM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
Not a viable alternative, sorry, ICE Lite implementations MUST add that attribute:

L.

Lorenzo Miniero

unread,
Jul 16, 2015, 5:33:26 AM7/16/15
to meetech...@googlegroups.com, lmin...@gmail.com, aja...@gmail.com
Thinking about it, do you mean that for ICE Lite implementations setting the role by offer is wrong? What may be done is changing that line so that the offer is only used for ICE Full, while we mandate a controlled mode for ICE Lite implementation. Would that fix it for you?

L.

Lorenzo Miniero

unread,
Jul 16, 2015, 5:40:18 AM7/16/15
to meetech...@googlegroups.com, lmin...@gmail.com, aja...@gmail.com
Just did a quick check with Echo Test (browser offering) and Streaming (Janus offering) demos, and my fix seems to work. I pushed a commit just now, let me know if that fixes it for you too.

L.

Ajay Choudary

unread,
Jul 16, 2015, 9:25:17 AM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
I have updated the patch and it is working with Chrome and facing some stun/dtls issue with Firefox.
Only if the server and client both are in same LAN, as per the packet capture Firefox is sending DTLS(client-hello) before ICE completion.
Reproducing steps:
-> Enable ice_lite & ice_tcp
-> Client & server host IP's should be reachable
-> screenshare video is not loading at viewer in Firefox

Lorenzo Miniero

unread,
Jul 16, 2015, 10:33:19 AM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
My fix was for ICE Lite, which seems to work correctly in all scenarios. ICE-TCP support is flaky in libnice, AFAIK, and I don't know the status in Firefox. You should probably ask on mozilla.dev.media and/or the libnice ML about that.

L.

Ajay Choudary

unread,
Jul 16, 2015, 12:08:32 PM7/16/15
to meetech...@googlegroups.com


I filed a bug regarding this issue 1184540 . Please review it

Lorenzo Miniero

unread,
Jul 16, 2015, 12:13:25 PM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
I don't see what I can add to the discussion. We set ICE Lite mode in Janus here:


AFAIK setting full mode to FALSE is indeed the way to configure the stack to behave in Lite mode. After that it's libnice doing some magic. My guess is you should ask the libnice developers about why the library is not honoring the setting.

Lorenzo

Ajay Choudary

unread,
Jul 16, 2015, 2:01:32 PM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
As per libnice ice-tcp-documentation "ICE-TCP is only supported for NICE_COMPATIBILITY_RFC5245, NICE_COMPATIBILITY_OC2007 and NICE_COMPATIBILITY_OC2007R2 compatibility modes."
But we are using NICE_COMPATIBILITY_DRAFT19 may be that could be the issue, i will try RFC5245 tomorrow.

Thanks,
AjayG.

Lorenzo Miniero

unread,
Jul 16, 2015, 2:05:24 PM7/16/15
to meetech...@googlegroups.com, aja...@gmail.com
As far as I know NICE_COMPATIBILITY_DRAFT19 and NICE_COMPATIBILITY_RFC5245 are defined to the same value, at least in the version I had. I think we used NICE_COMPATIBILITY_DRAFT19 to avoid it breaking on versions of libnice where NICE_COMPATIBILITY_RFC5245 was NOT available. Keep us posted if you find out it does indeed fix it for you!

L.

Lorenzo Miniero

unread,
Jul 16, 2015, 2:08:13 PM7/16/15
to meetech...@googlegroups.com, lmin...@gmail.com, aja...@gmail.com

Ajay Choudary

unread,
Jul 17, 2015, 5:38:25 AM7/17/15
to meetech...@googlegroups.com, aja...@gmail.com
I tried with NICE_COMPATIBILITY_RFC5245, but there is no difference at all.
To resolve my issue, 
i disabled ice_lite and skipped "ICE-TCP only works in libnice if you enable ICE Lite too: disabling ICE-TCP support" block in ice.c to get ice_tcp work,

Now with UDP no issues in chrome/firefox with LAN/WAN
With TCP chrome is working fine, but firefox is not generating TCP candidates(need to check peerConncection parameters to get it worked).



Ajay Choudary

unread,
Jul 18, 2015, 5:36:53 AM7/18/15
to meetech...@googlegroups.com
UPDATE: ICE TCP support is not available in Firefox Stable(39),
Firefox introduced ICE TCP support in Firefox-41,  i tested in Firefox Developer edition (41) by enabling flag media.peerconnection.ice.tcp it works fine.

-Ajay

Lorenzo Miniero

unread,
Jul 18, 2015, 5:38:23 AM7/18/15
to meetech...@googlegroups.com, aja...@gmail.com
Cool, good to know, thanks for the update!

L.
Reply all
Reply to author
Forward
0 new messages