Changes between Version 14 and Version 17 of Ticket #2305


Ignore:
Timestamp:
Jul 9, 2016, 5:53:33 PM (8 years ago)
Author:
fcxSanya
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #2305 – Description

    v14 v17  
    11==== Details ====
    2 Right 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 The 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.
     2Right now in 0 A.D. we use a primitive UPnP system to implement NAT traversal, but this system is unreliable. We would like to see a better method using UDP Hole Punching instead.
     3The solution would involve interacting with the lobby server to get traversal 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.
    44==== Expected Result ====
    55Enabling 0 A.D. clients to connect to a host behind any type of NAT.
    66==== Required Prerequisites ====
    7 Fluency 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)
     7Fluency in C++ and understanding of NAT traversal. JavaScript knowledge would also be recommended. (Ability to learn/familiarity with erlang would also be required when dealing with the lobby server)
    88==== Helpful Links ====
    99[https://github.com/JoshuaJB/0ad/tree/lobby Incomplete/failed try at implementation]