[ENet-discuss] NAT punch-through

FuzzYspo0N fuzzyspoon at gmail.com
Tue May 3 02:20:20 PDT 2011


http://en.wikipedia.org/wiki/UDP_hole_punching

And also, The miniupnpc lib DOES work on windows. I use it all the time 
(and iOS, Mac, Linux, etc)

On 5/3/2011 8:37 AM, Chris Meub wrote:
> There's more on it here: 
> http://alumnus.caltech.edu/~dank/peer-nat.html 
> <http://alumnus.caltech.edu/%7Edank/peer-nat.html>
>
> On Mon, May 2, 2011 at 10:27 PM, Josh Klint <jklint at leadwerks.com 
> <mailto:jklint at leadwerks.com>> wrote:
>
>     So what you're saying is:
>
>     Client - player who wants to play game
>     Server - player who wants to host game
>     Participant #3 (for lack of a better term) - program running on a
>     dedicated
>     server
>
>     Client and Server both creates client hosts that connect to
>     Participant #3,
>     which is running at a known IP address, on a known port.
>
>     Participant #3 gets Server's IP address and port, and sends this
>     information
>     to Client.
>
>     Client uses this information to immediately connect to Server,
>     using the IP
>     address and port provided by Participant #3.
>
>     Is that correct?  So really the only time you need this is when
>     Server is
>     behind a router.  If Server was a player plugged straight into a
>     modem, or
>     Server was a dedicated server, this would not be necessary.
>
>
>     -----Original Message-----
>     From: enet-discuss-bounces at cubik.org
>     <mailto:enet-discuss-bounces at cubik.org>
>     [mailto:enet-discuss-bounces at cubik.org
>     <mailto:enet-discuss-bounces at cubik.org>]
>     On Behalf Of Lee Salzman
>     Sent: Monday, May 02, 2011 1:30 PM
>     To: Discussion of the ENet library
>     Subject: Re: [ENet-discuss] NAT punch-through
>
>     Just create both hosts and open a normal ENet connection on both
>     hosts to
>     some third party server not behind a NAT. This server should then
>     report the
>     addresses to both of the hosts needing to take part in the
>     connection. The
>     hosts can then use these addresses to connect to eachother, but
>     just make
>     sure you connect immediately after, or the router may close down
>     the port
>     again. Once that's up, the normal ENet keepalive ping is probably good
>     enough by itself to keep the connection open. This works because
>     each ENet
>     host maintains a single UDP socket for all its connections, so
>     provided you
>     are on an asymmetric NAT, once the initial connection to the third
>     party
>     opens the port, it should keep that port open provided you are
>     servicing the
>     connection regularly.
>
>
>     Note this will only work with asymmetric NATs - as in the router
>     opens a
>     port that works for any remote client to connect back to, so even
>     if A is
>     behind NAT, and connects to B, another peer C can connect to the
>     address
>     opened for A. Symmetric NAT is hell and only lets B connect back
>     to A, not
>     C, and there's basically no sane way to punch through those.
>
>     Exactly what the third party is really depends on your
>     application, and it
>     not something that belongs in ENet proper.
>
>     On 05/03/2011 01:34 AM, Chris Meub wrote:
>     > I am by no means an expert on the subject, but I am using a
>     really basic
>     form of NAT punch-through with Enet at the moment with a hobby
>     project. I
>     have 2 clients, one at home behind a consumer router, and 1 at the
>     office
>     behind a firewall. Both connect to a central server, and begin
>     transmitting
>     packets to the server. The server collates the packets into
>     simulation step
>     packets, and sends those back to each client. This system works
>     fine and
>     I've had no issues with our firewall or any routers.
>     >
>     > Now I imagine if you wanted to get rid of the central server,
>     that would
>     be another story. You would probably have to still use a central
>     server for
>     matchmaking and then do some trickery to figure out which IP+port
>     each peer
>     needed to start sending packets to in order to bypass the
>     firewall(s). But I
>     imagine one could still do that with Enet.
>     >
>     > The only other thing I can think of would be some kind of brute
>     force
>     library that randomly tries ports until it finds one that can get
>     through
>     the firewall. Is that what RakNet provides?
>     >
>     > On Mon, May 2, 2011 at 1:32 PM, Josh Klint <jklint at leadwerks.com
>     <mailto:jklint at leadwerks.com>
>     <mailto:jklint at leadwerks.com <mailto:jklint at leadwerks.com>>> wrote:
>     >
>     >     Hi,
>     >
>     >     A search for enet and NAT punch-through yields a lot of
>     questions
>     about whether this is possible and discussion of how it might be
>     done, but I
>     have never found an actual instance of working code, or anyone who
>     claims to
>     have successfully implemented NAT punch-through with enet.
>     >
>     >     I love the simplicity of enet, but without NAT punch-through
>     support,
>     I don't see how it is useful for networked software.  I'll have to
>     (unfortunately) go with RakNet, which is huge, bloated, and comes with
>     licensing hang-ups I have to pass on to my customers.
>     >
>     >     Best Regards,
>     >
>     >     Josh Klint
>     >
>     >     CEO
>     >
>     >     Leadwerks Software
>     >
>     >
>
>     _______________________________________________
>     ENet-discuss mailing list
>     ENet-discuss at cubik.org <mailto:ENet-discuss at cubik.org>
>     http://lists.cubik.org/mailman/listinfo/enet-discuss
>
>     _______________________________________________
>     ENet-discuss mailing list
>     ENet-discuss at cubik.org <mailto:ENet-discuss at cubik.org>
>     http://lists.cubik.org/mailman/listinfo/enet-discuss
>
>
>
> _______________________________________________
> ENet-discuss mailing list
> ENet-discuss at cubik.org
> http://lists.cubik.org/mailman/listinfo/enet-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cubik.org/pipermail/enet-discuss/attachments/20110503/16c4d3d3/attachment.html>


More information about the ENet-discuss mailing list