[jitsi-users] Problem with ICE an missing UPnP


#1

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the firmware) and I continuously get "ICE failed" errors when trying to connect to different people with no good reason indicated in the log files. Obviously, my configuration is quite limited, but would it be possible to specify a port range for Jitsi to use in ICE negotiations which I could manually port forward using my router? I did not find any configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is null
19:21:20.681 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding pre-configured harvester STUN harvester for srvr: stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp (audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp (audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp (audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp (audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp (audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp (audio.2), failing.
19:21:23.118 INFO: org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates() CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is FAILED
19:21:24.484 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294 Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could not establish connection (ICE failed)
  at net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#2

As a sidenote, if I compare the logs of a successful call of gabble.echo@test.collabora.co.uk, I see that the "peer-reflexive candidate" part seems to be missing... (Even though my other partners have UPnP enabled and their routers log opened ports on their side...)

P.S.: The (hopefully) relevant part of the log file:

19:36:01.402 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().220 creating outgoing call...
19:36:01.407 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().320 gabble.echo@test.collabora.co.uk/echo: jingle supported
19:36:01.408 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().336 Choose one is: gabble.echo@test.collabora.co.uk/echo 0
19:36:01.439 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:36:01.928 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is STUN harvester for srvr: ds0039.flosoft-servers.net./91.121.109.155:3478/udp
19:36:01.928 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:36:01.929 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:36:01.929 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:36:01.943 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:36:03.060 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5020/udp (host)
19:36:03.064 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5020/udp (host)
19:36:03.065 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:36:03.066 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:36:03.069 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5021/udp (host)
19:36:03.073 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5021/udp (host)
19:36:04.851 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /93.93.128.228:49322/udp
19:36:04.853 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /93.93.128.228:48368/udp
19:36:04.854 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:36:04.855 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:36:04.857 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:36:04.934 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5020/udp
19:36:04.937 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.939 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.940 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.941 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:04.964 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5021/udp
19:36:04.965 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.975 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.978 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.979 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:05.005 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.006 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.007 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.033 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.034 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.035 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.1: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.054 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.055 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.056 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.078 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.084 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.086 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.087 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.088 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.2: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.089 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() CheckList of stream audio is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.1 prflx
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.2 prflx
19:36:08.092 INFO: org.ice4j.ice.Agent.run() ICE state is TERMINATED

···

Am 11.07.2011, 19:30 Uhr, schrieb Adam Reichold <adamreichold@myopera.com>:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the firmware) and I continuously get "ICE failed" errors when trying to connect to different people with no good reason indicated in the log files. Obviously, my configuration is quite limited, but would it be possible to specify a port range for Jitsi to use in ICE negotiations which I could manually port forward using my router? I did not find any configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is null
19:21:20.681 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding pre-configured harvester STUN harvester for srvr: stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp (audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp (audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp (audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp (audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp (audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp (audio.2), failing.
19:21:23.118 INFO: org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates() CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is FAILED
19:21:24.484 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294 Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could not establish connection (ICE failed)
  at net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#3

Hey Adam,

It seems that Jitsi could not find a way to communicate with the remote
party. Your complete logs [0] (from both sides if possible) would
probably help us better diagnose the exact issue.

In the mean time you may also try using http://jit.si as there's a
Jingle Node running on it. This may help in case that was the issue in
your situation.

Cheers,
Emil

На 11.07.11 19:30, Adam Reichold написа:

···

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the
firmware) and I continuously get "ICE failed" errors when trying to
connect to different people with no good reason indicated in the log
files. Obviously, my configuration is quite limited, but would it be
possible to specify a port range for Jitsi to use in ICE negotiations
which I could manually port forward using my router? I did not find any
configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in
the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto
discovered harvester is null
19:21:20.681 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding
pre-configured harvester STUN harvester for srvr:
stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media
stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component
audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80
harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component
audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote
candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote
candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment()
Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for
stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks()
Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp
(audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp
(audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp
(audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp
(audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp
(audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp
(audio.2), failing.
19:21:23.118 INFO:
org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates()
CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state
is FAILED
19:21:24.484 INFO:
impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98
Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294
Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could
not establish connection (ICE failed)
  at
net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at
net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at
net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at
net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)

--
Emil Ivov, Ph.D. 67000 Strasbourg,
Project Lead France
Jitsi
emcho@jitsi.org PHONE: +33.1.77.62.43.30
http://jitsi.org FAX: +33.1.77.62.47.31


#4

By reviewing the source code, I found out about the properties "net.java.sip.communicator.service.media.MIN_PORT_NUMBER" and "net.java.sip.communicator.service.protocol.MIN_MEDIA_PORT_NUMBER" which I set, but they do not seem to be useful. The iceAgent still tries to establish a connection beginning at port number 5001...

···

Am 11.07.2011, 19:39 Uhr, schrieb Adam Reichold <adamreichold@myopera.com>:

As a sidenote, if I compare the logs of a successful call of gabble.echo@test.collabora.co.uk, I see that the "peer-reflexive candidate" part seems to be missing... (Even though my other partners have UPnP enabled and their routers log opened ports on their side...)

P.S.: The (hopefully) relevant part of the log file:

19:36:01.402 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().220 creating outgoing call...
19:36:01.407 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().320 gabble.echo@test.collabora.co.uk/echo: jingle supported
19:36:01.408 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().336 Choose one is: gabble.echo@test.collabora.co.uk/echo 0
19:36:01.439 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:36:01.928 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is STUN harvester for srvr: ds0039.flosoft-servers.net./91.121.109.155:3478/udp
19:36:01.928 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:36:01.929 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:36:01.929 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:36:01.943 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:36:03.060 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5020/udp (host)
19:36:03.064 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5020/udp (host)
19:36:03.065 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:36:03.066 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:36:03.069 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5021/udp (host)
19:36:03.073 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5021/udp (host)
19:36:04.851 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /93.93.128.228:49322/udp
19:36:04.853 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /93.93.128.228:48368/udp
19:36:04.854 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:36:04.855 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:36:04.857 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:36:04.934 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5020/udp
19:36:04.937 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.939 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.940 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.941 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:04.964 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5021/udp
19:36:04.965 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.975 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.978 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.979 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:05.005 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.006 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.007 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.033 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.034 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.035 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.1: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.054 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.055 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.056 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.078 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.084 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.086 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.087 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.088 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.2: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.089 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() CheckList of stream audio is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.1 prflx
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.2 prflx
19:36:08.092 INFO: org.ice4j.ice.Agent.run() ICE state is TERMINATED

Am 11.07.2011, 19:30 Uhr, schrieb Adam Reichold > <adamreichold@myopera.com>:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the firmware) and I continuously get "ICE failed" errors when trying to connect to different people with no good reason indicated in the log files. Obviously, my configuration is quite limited, but would it be possible to specify a port range for Jitsi to use in ICE negotiations which I could manually port forward using my router? I did not find any configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is null
19:21:20.681 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding pre-configured harvester STUN harvester for srvr: stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp (audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp (audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp (audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp (audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp (audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp (audio.2), failing.
19:21:23.118 INFO: org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates() CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is FAILED
19:21:24.484 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294 Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could not establish connection (ICE failed)
  at net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#5

Oops. Forgot to add that:

[0] Logs - http://jitsi.org/faq/logs

На 12.07.11 00:04, Emil Ivov написа:

···

Hey Adam,

It seems that Jitsi could not find a way to communicate with the remote
party. Your complete logs [0] (from both sides if possible) would
probably help us better diagnose the exact issue.

In the mean time you may also try using http://jit.si as there's a
Jingle Node running on it. This may help in case that was the issue in
your situation.

Cheers,
Emil

На 11.07.11 19:30, Adam Reichold написа:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the
firmware) and I continuously get "ICE failed" errors when trying to
connect to different people with no good reason indicated in the log
files. Obviously, my configuration is quite limited, but would it be
possible to specify a port range for Jitsi to use in ICE negotiations
which I could manually port forward using my router? I did not find any
configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in
the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto
discovered harvester is null
19:21:20.681 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding
pre-configured harvester STUN harvester for srvr:
stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media
stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component
audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80
harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component
audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote
candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote
candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment()
Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for
stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks()
Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp
(audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp
(audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp
(audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp
(audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp
(audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp
(audio.2), failing.
19:21:23.118 INFO:
org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates()
CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state
is FAILED
19:21:24.484 INFO:
impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98
Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294
Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could
not establish connection (ICE failed)
  at
net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at
net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at
net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at
net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)

--
Emil Ivov, Ph.D. 67000 Strasbourg,
Project Lead France
Jitsi
emcho@jitsi.org PHONE: +33.1.77.62.43.30
http://jitsi.org FAX: +33.1.77.62.47.31


#6

Well now it seems like I have trigged a bug: When I explicitly disable ICE in the ICE setting panel, I produce the following log:

20:37:26.418 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().220 creating outgoing call...
20:37:26.418 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().320 gabble.echo@test.collabora.co.uk/echo: jingle supported
20:37:26.419 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().336 Choose one is: gabble.echo@test.collabora.co.uk/echo 0
20:37:26.569 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
20:37:27.359 SCHWERWIEGEND: impl.gui.main.call.CallManager.run().1045 The call could not be created:
net.java.sip.communicator.service.protocol.OperationFailedException: Failed to create a call
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall(OperationSetBasicTelephonyJabberImpl.java:374)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall(OperationSetBasicTelephonyJabberImpl.java:191)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createCall(OperationSetBasicTelephonyJabberImpl.java:135)
  at net.java.sip.communicator.impl.gui.main.call.CallManager$CreateCallThread.run(CallManager.java:1033)
Caused by: net.java.sip.communicator.service.protocol.OperationFailedException: Failed to allocate the network ports necessary for the call.
  at net.java.sip.communicator.service.protocol.media.TransportManager.createStreamConnector(TransportManager.java:172)
  at net.java.sip.communicator.service.protocol.media.TransportManager.getStreamConnector(TransportManager.java:102)
  at net.java.sip.communicator.impl.protocol.jabber.RawUdpTransportManager.startCandidateHarvest(RawUdpTransportManager.java:215)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerMediaHandlerJabberImpl.harvestCandidates(CallPeerMediaHandlerJabberImpl.java:1216)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerMediaHandlerJabberImpl.createContentList(CallPeerMediaHandlerJabberImpl.java:725)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.initiateSession(CallPeerJabberImpl.java:243)
  at net.java.sip.communicator.impl.protocol.jabber.CallJabberImpl.initiateSession(CallJabberImpl.java:277)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall(OperationSetBasicTelephonyJabberImpl.java:357)
  ... 3 more
Caused by: java.lang.IllegalArgumentException: preferredPort (5000) must be between minPort (8500) and maxPort (9000)
  at net.java.sip.communicator.impl.netaddr.NetworkAddressManagerServiceImpl.createDatagramSocket(NetworkAddressManagerServiceImpl.java:501)
  at net.java.sip.communicator.service.protocol.media.TransportManager.createStreamConnector(TransportManager.java:167)
  ... 10 more

This seems to indicate that the min/max port numbers a used, but the preferred port is not changed accordingly, so that the IllegalArgumentException is thrown.

It think the method initializePortNumbers() in the class net.java.sip.communicator.service.protocol.media.TransportManager should also set the variable nextMediaPortToTry to minMediaPort again... Like adding "nextMediaPortToTry = minMediaPort" at line 254 in TransportManager.java... I'm sorry, that I do not have the toolchain set up to provide a patch.

Regards, Adam.

···

Am 11.07.2011, 20:36 Uhr, schrieb Adam Reichold <adamreichold@myopera.com>:

By reviewing the source code, I found out about the properties "net.java.sip.communicator.service.media.MIN_PORT_NUMBER" and "net.java.sip.communicator.service.protocol.MIN_MEDIA_PORT_NUMBER" which I set, but they do not seem to be useful. The iceAgent still tries to establish a connection beginning at port number 5001...

Am 11.07.2011, 19:39 Uhr, schrieb Adam Reichold > <adamreichold@myopera.com>:

As a sidenote, if I compare the logs of a successful call of gabble.echo@test.collabora.co.uk, I see that the "peer-reflexive candidate" part seems to be missing... (Even though my other partners have UPnP enabled and their routers log opened ports on their side...)

P.S.: The (hopefully) relevant part of the log file:

19:36:01.402 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().220 creating outgoing call...
19:36:01.407 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().320 gabble.echo@test.collabora.co.uk/echo: jingle supported
19:36:01.408 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().336 Choose one is: gabble.echo@test.collabora.co.uk/echo 0
19:36:01.439 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:36:01.928 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is STUN harvester for srvr: ds0039.flosoft-servers.net./91.121.109.155:3478/udp
19:36:01.928 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:36:01.929 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:36:01.929 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:36:01.943 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:36:03.060 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5020/udp (host)
19:36:03.064 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5020/udp (host)
19:36:03.065 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:36:03.066 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:36:03.069 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5021/udp (host)
19:36:03.073 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5021/udp (host)
19:36:04.851 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /93.93.128.228:49322/udp
19:36:04.853 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /93.93.128.228:48368/udp
19:36:04.854 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:36:04.855 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:36:04.857 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:36:04.934 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5020/udp
19:36:04.937 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.939 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.940 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.941 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:04.964 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5021/udp
19:36:04.965 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.975 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.978 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.979 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:05.005 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.006 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.007 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.033 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.034 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.035 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.1: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.054 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.055 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.056 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.078 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.084 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.086 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.087 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.088 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.2: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.089 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() CheckList of stream audio is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.1 prflx
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.2 prflx
19:36:08.092 INFO: org.ice4j.ice.Agent.run() ICE state is TERMINATED

Am 11.07.2011, 19:30 Uhr, schrieb Adam Reichold >> <adamreichold@myopera.com>:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the firmware) and I continuously get "ICE failed" errors when trying to connect to different people with no good reason indicated in the log files. Obviously, my configuration is quite limited, but would it be possible to specify a port range for Jitsi to use in ICE negotiations which I could manually port forward using my router? I did not find any configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is null
19:21:20.681 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding pre-configured harvester STUN harvester for srvr: stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp (audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp (audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp (audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp (audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp (audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp (audio.2), failing.
19:21:23.118 INFO: org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates() CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is FAILED
19:21:24.484 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294 Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could not establish connection (ICE failed)
  at net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#7

Hello again.

Well funnily enough, I can't reproduce the problem with the current (3577)
nightly build. But I also could not try to call my exact partner again.
(Only someone else with a similar configuration, but all of this feels a
little unstable or at least like it depends on on some external factors.)

I also appended the logs of several successful calls. (Remote to
gabble.echo, remote to a friend behind a DSL router, local call.) Don't if
this is helpful in any way... I will create complete logs if the problems
crops up again.

But besides of this: Don't you think it is sensible to specify a port
range (like 32 ports or so...) which ice4j would try to bind to which I
would statically forward to my PC using the router settings?

Regards, Adam.

logs.tar.gz (41.8 KB)

···

Am 12.07.2011, 00:06 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Oops. Forgot to add that:

[0] Logs - http://jitsi.org/faq/logs

На 12.07.11 00:04, Emil Ivov написа:

Hey Adam,

It seems that Jitsi could not find a way to communicate with the remote
party. Your complete logs [0] (from both sides if possible) would
probably help us better diagnose the exact issue.

In the mean time you may also try using http://jit.si as there's a
Jingle Node running on it. This may help in case that was the issue in
your situation.

Cheers,
Emil

На 11.07.11 19:30, Adam Reichold написа:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the
firmware) and I continuously get "ICE failed" errors when trying to
connect to different people with no good reason indicated in the log
files. Obviously, my configuration is quite limited, but would it be
possible to specify a port range for Jitsi to use in ICE negotiations
which I could manually port forward using my router? I did not find any
configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in
the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto
discovered harvester is null
19:21:20.681 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding
pre-configured harvester STUN harvester for srvr:
stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media
stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component
audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80
harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component
audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote
candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote
candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment()
Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for
stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks()
Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp
(audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp
(audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp
(audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp
(audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp
(audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp
(audio.2), failing.
19:21:23.118 INFO:
org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates()
CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state
is FAILED
19:21:24.484 INFO:
impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98
Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294
Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could
not establish connection (ICE failed)
  at
net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at
net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at
net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at
net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#8

One last thing before I give up for today: Now I disabled ICE and set my router to port forward something which matched the default settings. Now I do not get any errors or exceptions and can create outgoing and incoming calls to gabble.echo@test.collabora.co.uk, but I do not receive any packets... So either the incoming stream is not properly set for Jabber/Jingle without the ICE code path or my router is not able to correctly port forward UDP traffic.

Well, now I should probably stop spaming the users mailing list... :slight_smile:

···

Am 11.07.2011, 20:49 Uhr, schrieb Adam Reichold <adamreichold@myopera.com>:

Well now it seems like I have trigged a bug: When I explicitly disable ICE in the ICE setting panel, I produce the following log:

20:37:26.418 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().220 creating outgoing call...
20:37:26.418 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().320 gabble.echo@test.collabora.co.uk/echo: jingle supported
20:37:26.419 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().336 Choose one is: gabble.echo@test.collabora.co.uk/echo 0
20:37:26.569 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
20:37:27.359 SCHWERWIEGEND: impl.gui.main.call.CallManager.run().1045 The call could not be created:
net.java.sip.communicator.service.protocol.OperationFailedException: Failed to create a call
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall(OperationSetBasicTelephonyJabberImpl.java:374)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall(OperationSetBasicTelephonyJabberImpl.java:191)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createCall(OperationSetBasicTelephonyJabberImpl.java:135)
  at net.java.sip.communicator.impl.gui.main.call.CallManager$CreateCallThread.run(CallManager.java:1033)
Caused by: net.java.sip.communicator.service.protocol.OperationFailedException: Failed to allocate the network ports necessary for the call.
  at net.java.sip.communicator.service.protocol.media.TransportManager.createStreamConnector(TransportManager.java:172)
  at net.java.sip.communicator.service.protocol.media.TransportManager.getStreamConnector(TransportManager.java:102)
  at net.java.sip.communicator.impl.protocol.jabber.RawUdpTransportManager.startCandidateHarvest(RawUdpTransportManager.java:215)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerMediaHandlerJabberImpl.harvestCandidates(CallPeerMediaHandlerJabberImpl.java:1216)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerMediaHandlerJabberImpl.createContentList(CallPeerMediaHandlerJabberImpl.java:725)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.initiateSession(CallPeerJabberImpl.java:243)
  at net.java.sip.communicator.impl.protocol.jabber.CallJabberImpl.initiateSession(CallJabberImpl.java:277)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall(OperationSetBasicTelephonyJabberImpl.java:357)
  ... 3 more
Caused by: java.lang.IllegalArgumentException: preferredPort (5000) must be between minPort (8500) and maxPort (9000)
  at net.java.sip.communicator.impl.netaddr.NetworkAddressManagerServiceImpl.createDatagramSocket(NetworkAddressManagerServiceImpl.java:501)
  at net.java.sip.communicator.service.protocol.media.TransportManager.createStreamConnector(TransportManager.java:167)
  ... 10 more

This seems to indicate that the min/max port numbers a used, but the preferred port is not changed accordingly, so that the IllegalArgumentException is thrown.

It think the method initializePortNumbers() in the class net.java.sip.communicator.service.protocol.media.TransportManager should also set the variable nextMediaPortToTry to minMediaPort again... Like adding "nextMediaPortToTry = minMediaPort" at line 254 in TransportManager.java... I'm sorry, that I do not have the toolchain set up to provide a patch.

Regards, Adam.

Am 11.07.2011, 20:36 Uhr, schrieb Adam Reichold > <adamreichold@myopera.com>:

By reviewing the source code, I found out about the properties "net.java.sip.communicator.service.media.MIN_PORT_NUMBER" and "net.java.sip.communicator.service.protocol.MIN_MEDIA_PORT_NUMBER" which I set, but they do not seem to be useful. The iceAgent still tries to establish a connection beginning at port number 5001...

Am 11.07.2011, 19:39 Uhr, schrieb Adam Reichold >> <adamreichold@myopera.com>:

As a sidenote, if I compare the logs of a successful call of gabble.echo@test.collabora.co.uk, I see that the "peer-reflexive candidate" part seems to be missing... (Even though my other partners have UPnP enabled and their routers log opened ports on their side...)

P.S.: The (hopefully) relevant part of the log file:

19:36:01.402 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().220 creating outgoing call...
19:36:01.407 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().320 gabble.echo@test.collabora.co.uk/echo: jingle supported
19:36:01.408 INFO: impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.createOutgoingCall().336 Choose one is: gabble.echo@test.collabora.co.uk/echo 0
19:36:01.439 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:36:01.928 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is STUN harvester for srvr: ds0039.flosoft-servers.net./91.121.109.155:3478/udp
19:36:01.928 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:36:01.929 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:36:01.929 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:36:01.943 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:36:03.060 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5020/udp (host)
19:36:03.064 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5020/udp (host)
19:36:03.065 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:36:03.066 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:36:03.069 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5021/udp (host)
19:36:03.073 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5021/udp (host)
19:36:04.851 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /93.93.128.228:49322/udp
19:36:04.853 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /93.93.128.228:48368/udp
19:36:04.854 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:36:04.855 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:36:04.857 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:36:04.934 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5020/udp
19:36:04.937 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.939 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.940 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:04.941 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:04.964 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Receive a peer-reflexive candidate: /93.217.240.14:5021/udp
19:36:04.965 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.975 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.978 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:04.979 INFO: org.ice4j.ice.Agent.nominate() verify if nominated pair answer again
19:36:05.005 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.006 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.007 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.033 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.034 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.035 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.036 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.1: /93.217.240.14:5020/udp -> /93.93.128.228:49322/udp (audio.1)
19:36:05.054 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /192.168.2.110:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.055 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.056 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.078 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair succeeded: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.084 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Pair validated: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.086 INFO: org.ice4j.ice.DefaultNominator.strategyNominateFirstValid() Nominate (first valid): /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.087 INFO: org.ice4j.ice.ConnectivityCheckClient.processSuccessResponse() Nomination confirmed for pair: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.088 INFO: org.ice4j.ice.CheckList.handleNominationConfirmed() Selected pair for stream audio.2: /93.217.240.14:5021/udp -> /93.93.128.228:48368/udp (audio.2)
19:36:05.089 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() CheckList of stream audio is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is COMPLETED
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.1 prflx
19:36:05.090 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() Harvester selected for audio.2 prflx
19:36:08.092 INFO: org.ice4j.ice.Agent.run() ICE state is TERMINATED

Am 11.07.2011, 19:30 Uhr, schrieb Adam Reichold >>> <adamreichold@myopera.com>:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the firmware) and I continuously get "ICE failed" errors when trying to connect to different people with no good reason indicated in the log files. Obviously, my configuration is quite limited, but would it be possible to specify a port range for Jitsi to use in ICE negotiations which I could manually port forward using my router? I did not find any configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP in the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto discovered harvester is null
19:21:20.681 INFO: impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding pre-configured harvester STUN harvester for srvr: stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.1
19:21:20.705 INFO: impl.protocol.jabber.JingleNodesHarvester.harvest().80 harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create component audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent() /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent() /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add remote candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment() Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist for stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks() Start connectivity checks!
19:21:22.991 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp (audio.1), failing.
19:21:23.011 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp (audio.1), failing.
19:21:23.037 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp (audio.1), failing.
19:21:23.071 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp (audio.2), failing.
19:21:23.091 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp (audio.2), failing.
19:21:23.115 INFO: org.ice4j.ice.ConnectivityCheckClient.processTimeout() timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp (audio.2), failing.
19:21:23.118 INFO: org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates() CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE state is FAILED
19:21:24.484 INFO: impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98 Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294 Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException: Could not establish connection (ICE failed)
  at net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#9

Hey Adam,

На 12.07.11 21:52, Adam Reichold написа:

But besides of this: Don't you think it is sensible to specify a port
range (like 32 ports or so...) which ice4j would try to bind to which I
would statically forward to my PC using the router settings?

The point of ICE is not to have to map anything. Your public mappings
will be discovered via STUN. If that doesn't work, they will popup as
peer-reflexive candidates during the ICE discovery. If that fails too,
we'll fall back to jingle nodes.

Jitsi would always use ports between 5000 and 6000 so you can map those
in case you'd like to test.

Cheers,
Emil

···

Regards, Adam.

Am 12.07.2011, 00:06 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Oops. Forgot to add that:

[0] Logs - http://jitsi.org/faq/logs

На 12.07.11 00:04, Emil Ivov написа:

Hey Adam,

It seems that Jitsi could not find a way to communicate with the remote
party. Your complete logs [0] (from both sides if possible) would
probably help us better diagnose the exact issue.

In the mean time you may also try using http://jit.si as there's a
Jingle Node running on it. This may help in case that was the issue in
your situation.

Cheers,
Emil

На 11.07.11 19:30, Adam Reichold написа:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the
firmware) and I continuously get "ICE failed" errors when trying to
connect to different people with no good reason indicated in the log
files. Obviously, my configuration is quite limited, but would it be
possible to specify a port range for Jitsi to use in ICE negotiations
which I could manually port forward using my router? I did not find any
configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP
in
the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto
discovered harvester is null
19:21:20.681 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding
pre-configured harvester STUN harvester for srvr:
stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media
stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.1
19:21:20.705 INFO:
impl.protocol.jabber.JingleNodesHarvester.harvest().80
harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment()
Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist
for
stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks()
Start connectivity checks!
19:21:22.991 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp
(audio.1), failing.
19:21:23.011 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp
(audio.1), failing.
19:21:23.037 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp
(audio.1), failing.
19:21:23.071 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp
(audio.2), failing.
19:21:23.091 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp
(audio.2), failing.
19:21:23.115 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp
(audio.2), failing.
19:21:23.118 INFO:
org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates()
CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE
state
is FAILED
19:21:24.484 INFO:
impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98
Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294
Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException:
Could
not establish connection (ICE failed)
  at
net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at
net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at
net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at
net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)

--
Emil Ivov, Ph.D. 67000 Strasbourg,
Project Lead France
Jitsi
emcho@jitsi.org PHONE: +33.1.77.62.43.30
http://jitsi.org FAX: +33.1.77.62.47.31


#10

Hello Emil,

Hey Adam,

На 12.07.11 21:52, Adam Reichold написа:

But besides of this: Don't you think it is sensible to specify a port
range (like 32 ports or so...) which ice4j would try to bind to which I
would statically forward to my PC using the router settings?

The point of ICE is not to have to map anything. Your public mappings
will be discovered via STUN. If that doesn't work, they will popup as
peer-reflexive candidates during the ICE discovery. If that fails too,
we'll fall back to jingle nodes.

I do understand the point of ICE, but ICE alone just does not work
reliable enough for me at the moment. I just want to help ICE and make its
life easier. :slight_smile: (You see, I try to convince several of my friends to use
an open alternative to Skype. Therefore, I try to improve connectivity on
my side, so theirs can be quite bad.)

Also, how will STUN know which ports I open? I mean, let's say I choose
30245-30298, where are those advertised to an outside or inside party?
(The is no port scan involved, is there? With the numbers it should at
least take quite long...)

Jitsi would always use ports between 5000 and 6000 so you can map those
in case you'd like to test.

Also I'd really like to freely set those, as there several computers on
the local network to which I'd like to forward different ranges. (Also,
the bloody router can act as a SIP and RTP gateway to an analog telephone
itself and therefore has the corresponding port ranges hard coded, so I
can not really use this port range.)

I really would like ICE to accomplish its goal of making such steps
unnecessary, but at the moment it seems to be in need of a little help.
(And it never did discover any of my port mappings up to this point.)
Thanks for your help and explanations.

Regards, Adam.

···

Am 12.07.2011, 22:24 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Cheers,
Emile

Regards, Adam.

Am 12.07.2011, 00:06 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Oops. Forgot to add that:

[0] Logs - http://jitsi.org/faq/logs

На 12.07.11 00:04, Emil Ivov написа:

Hey Adam,

It seems that Jitsi could not find a way to communicate with the remote
party. Your complete logs [0] (from both sides if possible) would
probably help us better diagnose the exact issue.

In the mean time you may also try using http://jit.si as there's a
Jingle Node running on it. This may help in case that was the issue in
your situation.

Cheers,
Emil

На 11.07.11 19:30, Adam Reichold написа:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the
firmware) and I continuously get "ICE failed" errors when trying to
connect to different people with no good reason indicated in the log
files. Obviously, my configuration is quite limited, but would it be
possible to specify a port range for Jitsi to use in ICE negotiations
which I could manually port forward using my router? I did not find any
configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP
in
the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto
discovered harvester is null
19:21:20.681 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding
pre-configured harvester STUN harvester for srvr:
stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media
stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.1
19:21:20.705 INFO:
impl.protocol.jabber.JingleNodesHarvester.harvest().80
harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment()
Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist
for
stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks()
Start connectivity checks!
19:21:22.991 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp
(audio.1), failing.
19:21:23.011 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp
(audio.1), failing.
19:21:23.037 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp
(audio.1), failing.
19:21:23.071 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp
(audio.2), failing.
19:21:23.091 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp
(audio.2), failing.
19:21:23.115 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp
(audio.2), failing.
19:21:23.118 INFO:
org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates()
CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE
state
is FAILED
19:21:24.484 INFO:
impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98
Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294
Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException:
Could
not establish connection (ICE failed)
  at
net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at
net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at
net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at
net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#11

Here comes the log... Now I got the log of the situation which I described earlier. (Two tries to make a call, one inbound and one outbound. Both fail because of an "ICE failure.") Hope this help to diagnose the problem... Regards, Adam.

logs.tar.gz (16.3 KB)

···

Am 13.07.2011, 17:36 Uhr, schrieb Adam Reichold <adamreichold@myopera.com>:

Hello Emil,

Am 12.07.2011, 22:24 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Hey Adam,

На 12.07.11 21:52, Adam Reichold написа:

But besides of this: Don't you think it is sensible to specify a port
range (like 32 ports or so...) which ice4j would try to bind to which I
would statically forward to my PC using the router settings?

The point of ICE is not to have to map anything. Your public mappings
will be discovered via STUN. If that doesn't work, they will popup as
peer-reflexive candidates during the ICE discovery. If that fails too,
we'll fall back to jingle nodes.

I do understand the point of ICE, but ICE alone just does not work
reliable enough for me at the moment. I just want to help ICE and make its
life easier. :slight_smile: (You see, I try to convince several of my friends to use
an open alternative to Skype. Therefore, I try to improve connectivity on
my side, so theirs can be quite bad.)

Also, how will STUN know which ports I open? I mean, let's say I choose
30245-30298, where are those advertised to an outside or inside party?
(The is no port scan involved, is there? With the numbers it should at
least take quite long...)

Jitsi would always use ports between 5000 and 6000 so you can map those
in case you'd like to test.

Also I'd really like to freely set those, as there several computers on
the local network to which I'd like to forward different ranges. (Also,
the bloody router can act as a SIP and RTP gateway to an analog telephone
itself and therefore has the corresponding port ranges hard coded, so I
can not really use this port range.)

I really would like ICE to accomplish its goal of making such steps
unnecessary, but at the moment it seems to be in need of a little help.
(And it never did discover any of my port mappings up to this point.)
Thanks for your help and explanations.

Regards, Adam.

Cheers,
Emile

Regards, Adam.

Am 12.07.2011, 00:06 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Oops. Forgot to add that:

[0] Logs - http://jitsi.org/faq/logs

На 12.07.11 00:04, Emil Ivov написа:

Hey Adam,

It seems that Jitsi could not find a way to communicate with the remote
party. Your complete logs [0] (from both sides if possible) would
probably help us better diagnose the exact issue.

In the mean time you may also try using http://jit.si as there's a
Jingle Node running on it. This may help in case that was the issue in
your situation.

Cheers,
Emil

На 11.07.11 19:30, Adam Reichold написа:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the
firmware) and I continuously get "ICE failed" errors when trying to
connect to different people with no good reason indicated in the log
files. Obviously, my configuration is quite limited, but would it be
possible to specify a port range for Jitsi to use in ICE negotiations
which I could manually port forward using my router? I did not find any
configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP
in
the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto
discovered harvester is null
19:21:20.681 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding
pre-configured harvester STUN harvester for srvr:
stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media
stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.1
19:21:20.705 INFO:
impl.protocol.jabber.JingleNodesHarvester.harvest().80
harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent()
  /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent()
  /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment()
Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist
for
stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks()
Start connectivity checks!
19:21:22.991 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp
(audio.1), failing.
19:21:23.011 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp
(audio.1), failing.
19:21:23.037 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp
(audio.1), failing.
19:21:23.071 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp
(audio.2), failing.
19:21:23.091 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp
(audio.2), failing.
19:21:23.115 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp
(audio.2), failing.
19:21:23.118 INFO:
org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates()
CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE
state
is FAILED
19:21:24.484 INFO:
impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98
Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294
Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException:
Could
not establish connection (ICE failed)
  at
net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
  at
net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
  at
net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
  at
net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)


#12

Just to clarify: I do get connections using a Jingle node relay. But this seems to have some obvious scaling problems especially for a currently free service and bandwidth consuming video streams. So if some freely configurable port mappings on my side will make using a relay node unnecessary, I'd prefer that.

···

Am 14.07.2011, 13:05 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Hey Adam,

On 13 juil. 2011, at 17:36, "Adam Reichold" <adamreichold@myopera.com> > wrote:

Hello Emil,

Am 12.07.2011, 22:24 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Hey Adam,

На 12.07.11 21:52, Adam Reichold написа:

But besides of this: Don't you think it is sensible to specify a port
range (like 32 ports or so...) which ice4j would try to bind to which I
would statically forward to my PC using the router settings?

The point of ICE is not to have to map anything. Your public mappings
will be discovered via STUN. If that doesn't work, they will popup as
peer-reflexive candidates during the ICE discovery. If that fails too,
we'll fall back to jingle nodes.

I do understand the point of ICE, but ICE alone just does not work
reliable enough for me at the moment.

Port forwoarding on your router brings nothing more in terms of reliability than a relay. If you weren't able to establish a call on jit.si, that has a Jingle Nodes relay, I don't see how forwarding ports would help (unless you have a firewall that is configured to block jit.si but authorises other hosts).

So if relaying didn't work and your firewall doesn't explicitly block jit.si then there's either a problem within our impl or the remote side can't do UDP at all.

I just want to help ICE and make its
life easier. :slight_smile: (You see, I try to convince several of my friends to use
an open alternative to Skype. Therefore, I try to improve connectivity on
my side, so theirs can be quite bad.)

Way to go! That's the spirit! :slight_smile:

Also, how will STUN know which ports I open? I mean, let's say I choose
30245-30298, where are those advertised to an outside or inside party?
(The is no port scan involved, is there? With the numbers it should at
least take quite long...)

A STUN client would send packets to a STUN server that basically ask "Hey where do you see these packets coming from"? The STUN server then replies to the source of the request including the address and port in the answer and in many cases they can be reused by the RTP session. If they can't ICE will fallback to relaying through a TURN server, a Jingle Nodes relay or something else of that sort.

Check out the STUN spec for more info [0].

Jitsi would always use ports between 5000 and 6000 so you can map those
in case you'd like to test.

Also I'd really like to freely set those, as there several computers on
the local network to which I'd like to forward different ranges.

That range is already configurable. I don't have access to the code right now though so I'd have to come back to you later on that one. Please ping me again if you don't hear from me till Tuesday.

Cheers,
Emil

(Also,
the bloody router can act as a SIP and RTP gateway to an analog telephone
itself and therefore has the corresponding port ranges hard coded, so I
can not really use this port range.)

I really would like ICE to accomplish its goal of making such steps
unnecessary, but at the moment it seems to be in need of a little help.
(And it never did discover any of my port mappings up to this point.)
Thanks for your help and explanations.

Regards, Adam.

Cheers,
Emile

Regards, Adam.

Am 12.07.2011, 00:06 Uhr, schrieb Emil Ivov <emcho@jitsi.org>:

Oops. Forgot to add that:

[0] Logs - http://jitsi.org/faq/logs

На 12.07.11 00:04, Emil Ivov написа:

Hey Adam,

It seems that Jitsi could not find a way to communicate with the remote
party. Your complete logs [0] (from both sides if possible) would
probably help us better diagnose the exact issue.

In the mean time you may also try using http://jit.si as there's a
Jingle Node running on it. This may help in case that was the issue in
your situation.

Cheers,
Emil

На 11.07.11 19:30, Adam Reichold написа:

Hello everyone,

My router does not support UPnP (well, it isn't accessible in the
firmware) and I continuously get "ICE failed" errors when trying to
connect to different people with no good reason indicated in the log
files. Obviously, my configuration is quite limited, but would it be
possible to specify a port range for Jitsi to use in ICE negotiations
which I could manually port forward using my router? I did not find any
configuration option or property for that.

P.S.: As I know that it does not work, I have explicitly disabled UPnP
in
the ICE settings.
P.P.S.: The relevant part of the log file seems to be:

19:21:20.639 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().164 Auto
discovered harvester is null
19:21:20.681 INFO:
impl.protocol.jabber.IceUdpTransportManager.createIceAgent().199 Adding
pre-configured harvester STUN harvester for srvr:
stunserver.org/132.177.123.13:3478/udp
19:21:20.685 INFO: org.ice4j.ice.Agent.createMediaStream() Create media
stream for audio
19:21:20.686 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.1
19:21:20.688 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.1
19:21:20.705 INFO:
impl.protocol.jabber.JingleNodesHarvester.harvest().80
harvest Jingle Nodes
19:21:21.815 INFO: org.ice4j.ice.Agent.createComponent()
   /fe80:0:0:0:226:82ff:fed3:6681:5010/udp (host)
19:21:21.816 INFO: org.ice4j.ice.Agent.createComponent()
   /192.168.2.110:5010/udp (host)
19:21:21.818 INFO: org.ice4j.ice.Agent.createComponent() Create
component
audio.2
19:21:21.819 INFO: org.ice4j.ice.Agent.gatherCandidates() Gather
candidates for component audio.2
19:21:21.829 INFO: org.ice4j.ice.Agent.createComponent()
   /fe80:0:0:0:226:82ff:fed3:6681:5011/udp (host)
19:21:21.830 INFO: org.ice4j.ice.Agent.createComponent()
   /192.168.2.110:5011/udp (host)
19:21:21.837 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /5.178.61.19:5004/udp
19:21:21.838 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /192.168.178.20:5004/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.1: /92.206.2.197:61074/udp
19:21:21.839 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote candidate for audio.2: /5.178.61.19:5005/udp
19:21:21.840 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /192.168.178.20:5005/udp
19:21:21.841 INFO: org.ice4j.ice.Component.addRemoteCandidate() Add
remote
candidate for audio.2: /92.206.2.197:61075/udp
19:21:21.842 INFO: org.ice4j.ice.Agent.startConnectivityEstablishment()
Start ICE connectivity establishment
19:21:21.842 INFO: org.ice4j.ice.Agent.initCheckLists() Init checklist
for
stream audio
19:21:21.843 INFO: org.ice4j.ice.ConnectivityCheckClient.startChecks()
Start connectivity checks!
19:21:22.991 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /5.178.61.19:5004/udp
(audio.1), failing.
19:21:23.011 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /192.168.178.20:5004/udp
(audio.1), failing.
19:21:23.037 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5010/udp -> /92.206.2.197:61074/udp
(audio.1), failing.
19:21:23.071 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /5.178.61.19:5005/udp
(audio.2), failing.
19:21:23.091 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /192.168.178.20:5005/udp
(audio.2), failing.
19:21:23.115 INFO:
org.ice4j.ice.ConnectivityCheckClient.processTimeout()
timeout for pair: /192.168.2.110:5011/udp -> /92.206.2.197:61075/udp
(audio.2), failing.
19:21:23.118 INFO:
org.ice4j.ice.ConnectivityCheckClient.updateCheckListAndTimerStates()
CheckList for stream audio FAILED
19:21:23.121 INFO: org.ice4j.ice.Agent.checkListStatesUpdated() ICE
state
is FAILED
19:21:24.484 INFO:
impl.protocol.jabber.OperationSetDesktopSharingClientJabberImpl.addRemoteControlListener().98
Enable remote control
19:21:24.601 INFO: impl.protocol.jabber.CallPeerJabberImpl.answer().294
Failed to answer an incoming call
net.java.sip.communicator.service.protocol.OperationFailedException:
Could
not establish connection (ICE failed)
   at
net.java.sip.communicator.impl.protocol.jabber.IceUdpTransportManager.wrapupConnectivityEstablishment(IceUdpTransportManager.java:976)
   at
net.java.sip.communicator.impl.protocol.jabber.CallPeerJabberImpl.answer(CallPeerJabberImpl.java:288)
   at
net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.answerCallPeer(OperationSetBasicTelephonyJabberImpl.java:513)
   at
net.java.sip.communicator.impl.gui.main.call.CallManager$AnswerCallThread.run(CallManager.java:1251)