mojira.dev
MC-15525

Minecraft does not prefer IPv6!

Minecraft does not use or event try to connect to IPv6 servers, even if there is a correct and working AAAA record. According to Java documentation this is a default behaviour which can be changed through java.net.preferIPv6Addresses system property. It's a bad setting for the future to continue using IPv4 when IPv6 is available. Minecraft should prefer IPv6 wherever possible.

Related issues

Comments

Erik Broes

Sadly many people have broken ipv6 stacks running on their system and they break when you try to use them. This is why we opted eons ago to prefer ipv4.

migrated

According to http://en.wikipedia.org/wiki/IPv6_brokenness_and_DNS_whitelisting :

> As of May 2011, IPv6 brokenness as measured by instrumenting a set of mainstream Norwegian websites was down to ~0.015%

So you prefer IPv4 because of those 0.015%?

Now a lot of systems have latent IPv6 via Teredo, and you should of course prefer IPv4 on those, but you should not always prefer IPv4 IMO.

Bachsau

I also don't know anyone with a "broken" IPv6 stack but many with truly native IPv6 connections through cable internet. If 0.015% can't connect, those 0.015% should fix their network settings.

> This is why we opted eons ago to prefer ipv4.
Time for a change. Eons ago is not today!

migrated

A quick Google search lead to my conclusion that a mere 1.3% (http://www.google.com/ipv6/statistics.html) of people use IPv6 (that's within the tenths and even hundredths of a percent for some countries! http://meetings.ripe.net/ripe-57/presentations/Colitti-Global_IPv6_statistics_-_Measuring_the_current_state_of_IPv6_for_ordinary_users_.7gzD.pdf). It's either that, or everyone who uses it uses Yahoo or Bing.
It's truly a tiny number of people looking at that. Thue is making his stand on the principle that you shouldn't appeal to the minority, which is completely valid and true. However, you can't make that claim when you yourself are the minority.
IPv4 is incompatible with IPv6, making the matter worse. Would an IPv4 user be able to connect to an IPv6 server? I doubt it.

So could Minecraft connect or at least make it an option? Yes, probably. Is it a major issue that affects a large amount of the player database? Not really.

migrated

@Neospector:
The statistics from Google shows that the rate is growing exponentially.
Minecraft servers are often used by people from a single country. So for servers in France, Germany or Romania it's a much larger topic than for those in the Netherlands or Sweden.
Minecraft servers should use dual stack and setting up DNS records for IPv4 and IPv6. Clients should decide which connection to use. So with a native IPv6 connection they would use IPv6, else IPv4.

Bachsau

> Would an IPv4 user be able to connect to an IPv6 server?
He would be able connect to a dual stacked server. Indeed Minecraft WILL connect via IPv6 if available and the server can't be reached by IPv4, but the standards say IPv6 should be preffered and tried first. Minecraft violates this standard by prefering IPv4.

> [...] when you yourself are the minority.
IPv6 traffic is only a minority because of decisions like the one described here.

PS: Does anyone know how to reopen the bug?

Erik Broes

Too be honest there is little use reopening this ticket. Seconds after we pushed iut the news launcher we got reports of people not being able to use it with weird 'BindExceptions'. Those people all had broken ipv6 stacks and there is little way of helping them except doing what we did.

So in this case doing what we 'should' vs broken clients was decided in favor for the broken clients.

I cant really imagine that we'll change that as long as ipv6 is not mainstream enough to not have these weird errors.

Bachsau

And how do you expect it to become "mainstream" when everyone disables it instead of forcing people to fix their configuration? So angry about this. >😞
If they had other, non-ipv6 related connection issues you also couldn't help them, besides telling them the problem is on theirs side, and they will have to fix it.

But if people really encounter that sort of "bind exceptions", there is indeed something you can do instead: Catch the error and use IPv4 instead, but don't do it in general! You could also add a "Disable IPv6" setting for those not willing to fix their system. Be innovators not blockers!

And please don't ignore the community's wishes by closing bugs whose discussion is not finished yet.

Erik Broes

Feel free to make a guide that moms can follow to debug their broken ipv6 stack.

My main issue is with the location of this 'magical try and fix it'-code. It has to be in the bootstrap (the natively packed part of the launcher) and I really do not want to have such volatile code in a place we cannot easily update.

Bachsau

It is not mojangs part to solve peoples computer problems in general. You also wouldn't help me if I wouldn't know how to install java on my linux system, would you? Anyway, the easiest guide for computer fools would be to tell them to disable IPv6 localy. In the system or in the launcher. And what is volatile on trying something else before doing what you already do? You also won't have to do it in the launcher. It would be enough to prefer IPv6 when connecting to multiplayer servers.

migrated

> Feel free to make a guide that moms can follow to debug their broken ipv6 stack.

Perhaps do the same that Microsoft does to check whether the Internet is working. Have a central computer at Mojang.com with IPv6. If a Minecraft server has an IPv6 address, and the minecraft client can IPv6 test connect to that (with a catch all) around, then IPv6 is working. If not, then use IPv4.

And of course write out an error message if the user's IPv6 configuration is broken.

migrated

Bachsau: how do you expect it to become "mainstream" when everyone disables it instead of forcing people to fix their configuration?
I want you to hear this, whether you're right or wrong is irrelevant, but I want you to listen to what you're saying:
"How do you expect a feature that people constantly find broken to become mainstream when you don't force them to find a way to make the broken feature work?"
There's your answer; if I order a product, I don't want it to be broken, regardless of how easy it is and regardless of how well it works after I fix it, people just don't want to fix it.
As it is now, it's still a minority, and a tiny one at that. Until said number reaches about 20%, I personally wouldn't even consider appealing to your group, but that's just my opinion.

Bachsau

> if I order a product, I don't want it to be broken
Then why do you accept it to be broken? Why do you accept broken IPv6 stacks? If people would care, like you do, it wouldn't be broken.

> people just don't want to fix it.
They would if they weren't able to play their favorite game without it. Again, this is not Mojangs broblem. Minecraft isn't broken if it supports modern technology, their network connections are. People should blame their computer manufacturers and internet providers, and urge them to do something about it, not Mojang. But Minecraft is broken for me because I have to fix Minecrafts IPv6 connection where it should just work.

Using an automatic error handling and correction system solves this problem on both sides. Try-and-Catch mechanisms are everything but volatile. If something doesn't work in one way, it is done the other way. Wheres the problem?

Torabi

Most people in the US don't have IPv6. Most US ISPs don't provide it. Most US users are behind a NAT, whether because of their ISP, or because of their router. The primary driver behind the move to IPv6 is going to be address starvation. Vendors aren't going to provide IPv6 or fix their implementations just so people can play Minecraft, and most end users don't want to have to do anything to make it work – see most of the issues here on the Mojira. And really, they shouldn't have to. It shouldn't be up to the end-user to fix their broken IP stack. It shouldn't be broken in the first place.

Once the protocol is mature, stable, and works 'out of the box', it will see wide usage. Right now there are too many competing, partially compatible approaches (most of which just fake it, like 6to4 schemes), and depending on any of them is just asking for trouble. The Mojira already attracts a lot of obnoxious, entitled end-users making spurious, duplicate reports: approximately 2347 valid reports out of 14989, for an 84% failure rate. People would apparently rather harass Mojang to fix their problems for having the audacity to have a public bug tracker, rather than bother the people responsible for the problem they're experiencing (see issues relating to integrated graphics, openGL, LWJGL, and 0.0.0.0 connection problems).

Mojang is no more responsible for driving IPv6 deployment than they are for fixing people's network stacks. Also, the reason Grum called the 'magical try and fix it'-code volatile is because it's something that might have to change or be updated frequently. Anything that's not clearly defined is 'magical'. What's the simple way to determine that IPv6 actually is broken, and it's not some other, intermittent problem? Unless you can write it yourself, you're in no position to call it easy. Handling a ton of unknown possible failures is anything but easy.

Sure, it would be "easy" to just switch to IPv4 when IPv6 clearly fails. But what about when it claims to work, but doesn't actually? Those are the hard failures to deal with.

migrated

Unfortunately, by disabling IPv6 for minecraft, SRV records simply don't work for people with a functioning IPv6 stack, which is starting to become significant due to ISPs like Comcast rolling it out for all their customers. It's unfortunate that some people have broken stacks, but it unacceptable that your "fix" breaks things for people who suddenly gain a functioning one.

migrated

> Sadly many people have broken ipv6 stacks running on their system and they break when you try to use them. This is why we opted eons ago to prefer ipv4.

So you break the game for people with PROPERLY configured networks so it'll work fine for people with broken configurations?

My network is properly configured and running perfectly (it's pure IPv6 with NAT64 at an ISP level), but I can't play with anyone due to this issue, and all so people with broken configurations can play fine. The worst part is, there's no fix for me. There's nothing I can do, since my network is not broken. All I can do is sit back and NOT play minecraft.

If you fix the game so people with sane networks can play, the people with broken networks configuration will inevitable fix theirs. At least there something they can do about it. There's nothing people with non-broken networks can do.

black-hole

You could use the Forge client, it's removing this limitation. Unfortunately it's only available for 1.7.2.

IPv6 adoption is still very low in Sweden, so it won't be fixed by Mojang soon.

migrated

You could use the Forge client, it's removing this limitation. Unfortunately it's only available for 1.7.2.

Convincing all of my friends to downgrade won't be so trivial though. 😞
I also need to somehow grab the game files without the launcher (minecraft.jar), which doesn't work over IPv6 either. 😞

IPv6 adoption is still very low in Sweden, so it won't be fixed by Mojang soon.

I have native (pure) IPv6, but they don't even actually their ISP to provide IPv6, setting up two VMs with IPv6 interfaces is really enough to test all these things.

The main issue here is that they're giving priority to people with broken network setups (and those can be fixed), while they screw us with PROPER network setups (I can't fix what's not broken), leaving us with no way to play the game. :-/

Torabi

They've made the choice that results in the fewest complaints and bug reports. IPv6 support will need to be addressed eventually, as implementations improve and adoption increases. I do agree that Minecraft should function if only IPv6 is available, and IPv4 is not – you should encourage affected users to vote for MC-3776 and MCL-2627. However, I believe a possible workaround would be to set up a local IPv4 to IPv6 bridge.

migrated

> "They've made the choice that results in the fewest complaints and bug reports."

This sound like an awful policy. You're saying "screw you" to people with properly configured networks, only to support people with broken ones. You basically explicitly broke minecraft so that it works on broken networks. Breaking more stuff so that it all fits together will only worsen everything in the long run.

> "However, I believe a possible workaround would be to set up a local IPv4 to IPv6 bridge."

A bridge has no way of fixing this because a bridge works on layer 2, and the issue is minecraft using the wrong layer 3 protocol. There's no way a bridge can fix anything.

My network has NAT64 (provided at an ISP level) to contact remote IPv4 hosts and this works just fine. Minecraft needs to use my existing network.

I feel that it's wrong to close this issue as "resolved" then paying customers are completely incapable of using the game on a perfectly configured and well-working network. It's not resolved. It's being ignored.

Torabi

So you're in favor of breaking the game for lots of customers in favor of fixing it for a few then? Would you hold the same stance if the percentages were reversed?

Ideally, it should be fixed for everyone. You haven't made a compelling case that preferring IPv6 is the way to do that.

"Resolved" does not mean "fixed". It means that a decision has been made. While this ticket was resolved "Working As Intended", the other two issues I mentioned (MCL-2627 and MC-3776) remain open, and address the problem (being unable to download Minecraft and play multiplayer over an IPv6 connection) directly, rather than advocating a specific solution. MC-3776 includes more information about the relevant system properties than this ticket anyway.

Bachsau

Idiots who are unable to configure their networks correctly should not expect anything to work, including minecraft. Making available new technology has nothing to do with "breaking" something. Even Google has AAAA records on their domains today. People with network configurations broken like that wouldn't even be able to search the web. So for hells sake they'll fix it!

migrated

Torabi, according to the Java documentation, setting java.net.preferIPv4Stack to true as MC-3776 indicates disables IPv6 entirely. I don't think that setting java.net.preferIPv6Addresses, which is the property referenced here, to false actually affects anything, as that appears to be the default. In any case, the decision Grum made over a year ago is must be reversed to fix any issue involved with IPv6. This will not be an issue experienced by the minority for much longer, if it even is a minority issue right now (the uptick in the number of comments on this issue in the past few days might be a hint).

I've noticed that there are also no AAAA records for mojang.com and minecraft.net. Does Mojang even have IPv6 in their office? If not, then maybe they need to arrange to get it, otherwise, how can anyone be sure that the errors were due to customers "broken IPv6", as Grum stated.

migrated

Pointing to a FAQ on how to fix these configurations (simply OS's manuals) would have been way easier and less controversial to fix.

But there's one thing that makes me uneasy: how do others solve the issue with these broken network configurations?

If the user's configuration is broken, other software should have the same issues (eg: browsers, im clients, email clients, package managers). How do these applications deal with these issues and, most importantly, can't their solution be used by minecraft?

—

That aside,
MCL-2627 covers the launcher
MC-3776 covers LAN play
Are there any issues still open that address the issue of not being able to play online either? Or should MC-3776 be updated to include this?

Torabi

Having a broken IPv6 stack means that attempting to connect through IPv6 doesn't work, either because a driver on the stack is poorly written or misconfigured. Fixing it isn't always as simple as just changing a few settings. Most software will simply use the IPv4 stack instead, if both are available.

It's unfortunate that "preferring" IPv4 in actuality means "disabling IPv6", but that's on Java. The preferIPv4Stack setting is only checked when the VM starts, which is why it must be set by the bootstrap. Given that, it's not clear to me why someone starting the jar file directly, without the bootstrap, would have a problem, or why the launcher jar would need to set this property.

If preferIPv4Stack is only read on VM start, and the game runs on the same VM as the launcher, then starting the launcher with that property explicitly set to false should enable IPv6. If the game runs on a new VM, started by the launcher, then there's no need for it to be set in the bootstrap, and setting it to false in the java arguments for a profile should be sufficient.

migrated

Having a broken IPv6 stack means that attempting to connect through IPv6 doesn't work, either because a driver on the stack is poorly written or misconfigured. Fixing it isn't always as simple as just changing a few settings. Most software will simply use the IPv4 stack instead, if both are available.

Yes, sorry, I sort of mixed up two issues; not preferring IPv6 by default is not unacceptable. Completely disabling IPv6 is an issue, because you assume that all users have IPv4 connectivity. But that's what MC-3776 is about, and this issue is just about preference, so I'll just shut up here and limit that discussion to the proper issue. Sorry for the noise.

migrated

[Mod] Torabi wrote
> Fixing it isn't always as simple as just changing a few settings.

If your IPv6 connectivity is broken, then just turn it off locally. It is as simple as changing a few settings: http://www.techunboxed.com/2012/08/how-to-disable-ipv6-in-windows-8.html

Forcing people with broken IPv6 connectivity to turn it off locally is soooo much more correct than breaking Minecraft for IPv6.

migrated

@Thue:
While I agree (I have no IPv4 connectivity), what you're discussing is the topic of MC-3776. I'd suggest you move the discussion over there, since this thread deals merely with which is preferred. The preference cannot be changed until MC-3776 is fixed.

migrated

Now, 8 years later in 2021, i think it is worth revisiting this topic... Minecraft should really start to prefer ipv6 when joining servers sometime soon.

Bachsau

When this bug was opened, Minecraft did not prefer IPv6. After Microsoft purchased Mojang, IPv6 support was removed completely, and it won't return anytime soon, as bad as that is. Microsoft is an enemy of IPv6. None of their services is available via IPv6. Microsoft does not adopt new technology unless they are absolutely forced to.

Bachsau

(Unassigned)

Unconfirmed

IPv6

Minecraft 1.5.2

Retrieved