Jump to content

IPV6 Support


MangoFusion

Recommended Posts

Hey guys,


Just thought i'd let you guys know, i'm working on ipv6 support for the T3D (and T2D) networking.


Current progress is available at https://github.com/jamesu/Torque3D/tree/ipv6_support . For the master server, i'm just modifying PBMS (since the GG one seems to have been lost in torqueland), available at https://github.com/jamesu/PushButton-Master-Server/tree/ipv6_support/


What currently works:


- Connecting to ipv4 addresses (yes, this is backwards compatible)

- Connecting to ipv6 addresses

- Browsing for ipv6 servers on a LAN

- Working with ipv6 TCP sockets


What I'm currently working on:


- Reworking the master server protocol to return ipv6 addresses (hopefully in a backwards compatible fashion)

- Testing everything


What I might be working on:

- Improving the master server protocol to prevent obvious flood attacks


For testing, if you don't have an IPV6 ISP you can just setup a local IPV6 network (e.g. using 2012::1, 2012::2, etc). Currently it is only known to work on windows as I haven't tested elsewhere yet.

Link to comment
Share on other sites

Just an update on this...


What currently works:


- Connecting to ipv4 addresses (yes, this is backwards compatible)

- Connecting to ipv6 addresses

- Browsing for ipv6 servers on a LAN

- Working with ipv6 TCP sockets

- Returning IPV6 addresses from the master server

- Registering an IPV6 server with the master server


What I'm currently working on:


- Reworking the master server protocol so it uses challenge packets to prevent flood attacks

- Testing everything

Link to comment
Share on other sites

  • 2 weeks later...

Just another update on this...


I've submitted a PR for the main ipv6 code, https://github.com/GarageGames/Torque3D/pull/1817 - this covers core ipv6 functionality.


As before, the master server at https://github.com/jamesu/PushButton-Master-Server/tree/ipv6_support/ can be used to test returning ipv6 addresses.


Since i'm being cautious with regards to compatibility, I've set ipv6 to be disabled by default in the PR (i.e. the server won't listen on ipv6 and you won't be able to query ipv6 servers), though it can be enabled by setting $pref::Net::IPV6Enabled to 1 before setNetPorts is called.


I'm still working on the master server packet challenge code, though this will take more time to finish as I need to refactor parts of the serverQuery code to account for resending normal packets. A test client which implements challenge packets can be found at https://gist.github.com/jamesu/fc806fd0cfd4ede92be0d5464ffd7334 .

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...