Changes between Version 12 and Version 14 of Ticket #2305


Ignore:
Timestamp:
Jan 5, 2016, 1:42:40 PM (8 years ago)
Author:
fcxSanya
Comment:

It seems gloox has only data structures representing Jingle transport, but doesn't have any ICE logic (candidates gathering, exchange; connectivity checks; keeping connection alive etc.). libnice on the contrary is providing ICE logic, but as far as I understand it doesn't have signaling. I'm planning to write a proof-of-concept test application with gloox and libnice (essentially it requires only to combine sample apps for both libraries; also googling "gloox libnice" returns at least one application with available source which uses this combination of libraries (https://github.com/yokto/xicecat)).

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #2305

    • Property Cc fcxSanya@… added
  • Ticket #2305 – Description

    v12 v14  
    11==== Details ====
    22Right now in 0 A.D. we use a primitive UPnP system to implement NAT transversal, but this system is unreliable. We would like to see a better method using UDP Hole Punching instead.
    3 
    43The solution would involve interacting with the lobby server to get transversal information. The recommended implementation would use  [http://en.wikipedia.org/wiki/STUN STUN] with [https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment ICE]. It may be possible to (ab)use [http://xmpp.org/extensions/xep-0176.html XEP-0176: Jingle ICE-UDP Transport Method] for the desired result. Ejabberd has a built-in STUN server ([https://www.process-one.net/docs/ejabberd/guide_en.html#stun Manual Entry]). Both Ejabberd and Gloox support XEP-0176.
    5 
    64==== Expected Result ====
    75Enabling 0 A.D. clients to connect to a host behind any type of NAT.
    8 
    96==== Required Prerequisites ====
    107Fluency in C++ and understanding of NAT transversal. JavaScript knowledge would also be recommended. (Ability to learn/familiarity with erlang would also be required when dealing with the lobby server)
    11 
    128==== Helpful Links ====
    139[https://github.com/JoshuaJB/0ad/tree/lobby Incomplete/failed try at implementation]