[libnice] Findings: Peer to Peer srflx candidate Connectivity issues observed

Anand Sivaram aspnair at gmail.com
Wed Dec 14 17:52:31 UTC 2016

Dear All,

Recently I sent a mail to the list as follows,
and reported an issue based on Olivier's suggestion.

I have done quite a bit of analysis to find out how things work with
different versions of libnice and these are my finding.

Application used:
Modified simple_example code to reproduce the issue with the
following change

1) Using nice_agent_add_local_address() only the specified
local interface is chosen.  This is used because I could only
include eth0 IP address and filter out eth1 IP address.

2) Updated print_local_data() so that I could print a combination
of host/srflx/relay candidates. That way only candidates I am
interested in are getting printed and I need to only copy/paste
them to the peer.

Setup Used:
1) Using two separate Internet connection from two separate ISPs,
connected a normal home WiFi router in each of them.
These routers have Port Restricted Cone NAT

2) Two Debian PCs connected to each of these routers using their eth0

3) One of these PCs have a second ethernet eth1 which is connected
to the other network.  I could filter out this interace using
nice_agent_add_local_address() as given above.
This way I could ssh/copy/paste between these two PCs easily.

4) I am mainly interested in using the srflx candidates generated
in each peers.

Main Finding:
1) I went from 0.1.13-15-ga2e25cf to 0.1.13-155-g2803a0b
(tip of the master branch), did a kind of binary search between
these two versions.  Found that until 0.1.13-85-g0a6c779
it was fine and between 0.1.13-86-g1ab9d7c and 0.1.13-131-gdc1e1b7
it was getting connected but one way data and from 0.1.13-132-g71f7ed3
to 0.1.13-155-g2803a0b, it was not getting connected at all properly.

2) That was the example application.  For my actual
application I reverted back to libnice 0.1.13-15-ga2e25cf
and audio/video are working now across different networks.

3) These finding are only when I used/forced srflx candidates between
the peers.  If I forced to use host and relay candidates, there
were no problems in any of these versions.

Observation Summary:

Normally the command prompt is supposed to be seen after copy/paste
of candidates list between each client.
But *no* command prompt is seen in these.
Looks like ICE connection was not successful.

Command prompt appears after getting connected as ICE gets connected.
Only controlling(master) could send to controlled(slave)
but not in the opposite direction.

worked, tried many times to confirm it.

Thanks and Regards

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/nice/attachments/20161214/fad74b43/attachment.html>

More information about the nice mailing list