Changes between Version 12 and Version 14 of Ticket #2305
- Timestamp:
- Jan 5, 2016, 1:42:40 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #2305
- Property Cc added
-
Ticket #2305 – Description
v12 v14 1 1 ==== Details ==== 2 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 4 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. 5 6 4 ==== Expected Result ==== 7 5 Enabling 0 A.D. clients to connect to a host behind any type of NAT. 8 9 6 ==== Required Prerequisites ==== 10 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) 11 12 8 ==== Helpful Links ==== 13 9 [https://github.com/JoshuaJB/0ad/tree/lobby Incomplete/failed try at implementation]