More info from my previous email.
I have been testing calls between linphone android and groundwire iOS with ICE enabled on both sides and both UACs using the same STUN server.
Looking at the logs from both UACs, I can confirm that indeed there is an ICE problem.
Even when both UAC are on the same subnet, ICE connectivity checks fail which makes no sense at all.
Groundwire logs:
UDP
2014-10-23T11:08:24.969Z
Sending ICE packet.
Packet: Request Binding; Id: 3D243D50DE89AF81EE88B2C8
UDP
2014-10-23T11:08:25.275Z
Sending ICE packet.
Packet: Request Binding; Id: 4AA1D156DC8D9E36E74D5A4B
DP
2014-10-23T11:08:27.768Z
ICE request timed out.
Packet: Request Binding; Id: 3D243D50DE89AF81EE88B2C8
ICE
2014-10-23T11:08:27.769Z
Connectivity check timed out.
Packet: Request Binding; Id: 3D243D50DE89AF81EE88B2C8
And then there's also this error which I believe maybe related to the missing STUN fingerprint error message I saw in the kamailio logs.
ICE
2014-10-23T11:08:24.878Z
Ignoring received packet.
Reason: Non-conforming user name.
Remote Address: 79.xx.xx.xx:11772
Received Packet: Request Binding; Id: 014FD6318B5AF06E6C45976D
Received Data: 000100002112A442014FD6318B5AF06E6C45976D
In the Linphone logs:
Local candidates:
type=host ip=192.168.1.4 port=7076 componentID=1 priority=2130706431 foundation= base=0x69045d78
type=host ip=192.168.1.4 port=7077 componentID=2 priority=2130706430 foundation= base=0x68b62de0
type=srflx ip=85.xx.xx.xx port=7076 componentID=1 priority=1694498815 foundation= base=0x69045d78
type=srflx ip=85.xx.xx.xx port=7077 componentID=2 priority=1694498814 foundation= base=0x68b62de0
Remote candidates: (empty)
RtpSession [0x68b415a0] sending to rtp [79.xx.xx.xx:11792] rtcp [79.xx.xx.xx:11793] This is the relay IP so the call's being relayed through the server instead of establishing a direct p2p connection between 192.168.1.4 (linphone) and 192.168.1.3 (groundwire) even though they're both in the same subnet.
And indeed the fact that media is being relayed through the server is confirmed in the call stats later on.
LocalAddr: IP=85.xx.xx.xx PORT=7076 SSRC=3085361497 (this is my server reflexive IP gathered through STUN)
RemoteAddr: IP=79.xx.xx.xx PORT=11792 SSRC=1352766754 (this is my server's IP)
So, in conclusion, it seems that there's something wrong with Linphone's ICE stack, or, at least, Linphone's implementation doesn't seem to be inter-operable with others.
Can someone from Linphone please confirm whether they have noticed similar problems with ICE? Has anyone gotten ICE to work with Linphone when calling other UACs (groundwire, CSipSimple, etc)?
Also, where can I confirm that Linphone supports RFC 5245 and RFC 5389?
Thanks,
Peter