What is IPv6?
What is an IP?
First of all, you need to know what is an IP. An IP (Internet Protocol) is essentially, an address that points to who you are on the internet. It should be able to say, this IP belongs to this entity.
There are two versions of what is considered an IP. IPv4, and IPv6.
IPv4
IPv4 is 32-bit, it has only 4 billion unique addresses that are usable. And that’s not talking about that certain addresses are only local addresses, which a good portion of them are.
IPv4 is not enough for everyone in the world, and especially not for every device.
What we ended up doing, was, using NAT (Network Address Translation).
You definitely use NAT in your home if you’re connected to IPv4.
You receive only one IPv4 address for your home connection.
It will essentially be re-used for every device on your network.
That’s actually mostly fine for most people because as long as you have UPnP enabled, or if you open up the ports yourself on your router.
However, at the same time most people, especially on mobile networks, are under CGNAT (Carrier-Grade NAT). (My carrier when I posted this was IPv4 and it was an obscure MVNO, I have since moved on, every single major carrier in my country has IPv6, and IPv4 is on CGNAT. My current carrier, is IPv6 only with NAT64.)
This is just NAT but instead of being from your router to your devices, it’s NAT from your ISP to their consumers.
This means that your public internet IP is being shared between multiple other people in your ISP.
Here, you cannot open up ports to the internet, gaming, and peer to peer connections are limited.
Also, ping is higher and connection also inconsistent, because there is overhead to do NAT, but now, it’s not just your home devices which talk usually only every once and a while, it’s a bunch of other people you don’t know internet connections and their devices interfering.
IPv6
IPv6 solves the issues talked about above with IPv4 not being enough for everybody.
IPv6 is 128-bit. (Only up to 64 bits are assignable by connection, smaller sub nets break things) You can have 340 trillion trillion trillion addresses.
With IPv6, instead of getting an address per home, you get a prefix per home.
Every device on your network gets a unique address, and so there’s no problem with opening and using ports.
Yes, you can NAT IPv6 connections, but there’s no point in doing so, and there’s mostly, only downsides and no use cases.
The Issues
IPv6 and IPv4 are not inter-changeable. You can’t connect to an IPv6 host from an IPv4 host, or vice-versa.
This means that IPv4 and IPv6 are like, separate internet networks.
And, Roblox, does not have IPv6.
For anyone
This means that anyone who’s on IPv6-only, can not connect to Roblox.
For players
That means that anyone on CGNAT is suffering connection slowdowns because of it when connecting to any Roblox service.
Issues like higher ping, inconsistent connection, etc.
For developers
Lots of developers aren’t able to host web servers on their internet connection without having to pay for someone to host it for them / using some sort of proxy that allows them to open up ports.
The future
The future is IPv6-only, therefore Roblox needs to get going and get IPv6-only connections to work on Roblox and keep that working as a priority.
The Solution
Deploying IPv6. Everywhere. Not just in places like India with a big population, but everywhere.
In their website, in game servers, and anywhere that IPv4 was previously used. Also in the DevForum.
I have made a game where you can join and check if IPv6 is working on Roblox. It can only determine whether HTTPService can access the IPv6 internet, however that is one of the most important things since if any developer wants to host a web server for their game using their internet and they don’t have a public IPv4, and that is very common especially outside the US, then they have to pay for one, or use something like a VPN that has it which puts a lot of cost, and latency and makes the entire thing unviable. If they have IPv6 though, they don’t need to pay for anything and can just host it using dynamic DNS. (if they can’t get a static prefix ofc.)