mIRC Home    About    Download    Register    News    Help

Topic Options
#220923 - 02/05/10 09:32 PM IPv6 should be enabled by default
andersman Offline
Nutrimatic drinks dispenser

Registered: 23/04/10
Posts: 5
It's nice that mIRC finally has real IPv6 support and I'm using it as we speak.

Unfortunately, it's disabled in its default configuration and there is a "scary" warning in case you try to enable it. I believe this is wrong. Most applications with IPv6 support have it enabled by default, this includes Firefox, IE, and many others. In fact, I would say it's rare to disable it.

Disabling IPv6 by default makes it quite useless, since everyone will have IPv4 in the long-term future, but that address is very likely to be a private NAT-ed IP used by others as well.

The message claims that mIRC will not work correctly if you enable the IPv6 support if you don't have an IPv6 connection. If mIRC correctly resolves hostnames, for example by using getaddrinfo(), then it will prioritize IPv4 over IPv6 in case you are on 6to4 or you don't have a IPv6 address.

On Vista and later (and Linux), when the host doesn't have a IPv6 address getaddrinfo() only does A lookups. Most users don't have a IPv6 address and it wouldn't cause any problems.

Users should not have to care about IPv6 (or IPv4, for that matter). It should be seamless. If it has to be enabled explicitly, then no one will enable it. And if no one enables it, implementing IPv6 isn't really useful as you don't gain any of the advantages.

Top
#220924 - 02/05/10 09:54 PM Re: IPv6 should be enabled by default [Re: andersman]
argv0 Offline
Planetary brain

Registered: 13/10/03
Posts: 3918
Loc: Montreal, QC, Canada
No, it shouldn't.

IPv6 isn't yet supported by most of the internet.

As for browsers, you're confusing "enabled" with "support". They *can* visit IPv6 sites, so long as your underlying transport layers can too. But since 98% of the world's ISPs still have no support for IPv6 addressing, this "support" doesn't really matter. And since the vast majority of users on IPv6 are using 6to4- I bet you are too- the support is really not "seamless". mIRC can also understand IPv6 addresses now, just like browsers, but unless you have the underlying transport layer in place, it won't matter. Most users don't have an IPv6 layer that is connected to the internet. Making it default would make mIRC break by default for all those users. That doesn't sound seamless to me.

Again, 6to4 contradicts your position on this issue, since it in itself is not "enabled by default" and is not nearly seamless. Users have to care about IPv6 to use it, and yet it didn't stop you, did it?

Maybe your ISP is special, or maybe you're from the future, but IPv6 is not even close to being "here" yet. The message mIRC displays is accurate and goes away after you've read it. Read it and accept what it says, and then move on. If your ISP does not support IPv6 and you have not *manually* installed a 6to4 tunnel (or have *manually* enabled Teredo), IPv6 will not work. There is no disputing this.

Until IPv6 is standard in the world's internet stack, there's no reason to make this default. The advantages mIRC gains from supporting IPv6 now is that when IPv6 matters (it really doesn't, yet), mIRC will still work. Khaled learned from his mistakes in waiting on Unicode support. But that time has not yet come, so calm down, the sky isn't falling.

As a sidenote: you don't need to "enable" anything to use IPv6. You simply need to use /server -6 hostname to connect to an IPv6 host or bind to your IPv6 adapter. In the latter case you don't need -6 at all. This would be exactly as seamless as any browser support, and it can't really get any simpler than that.

I leave you with this simple contradiction:

Originally Posted By: andersman
If it has to be enabled explicitly, then no one will enable it.


You did.
_________________________
- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"

Top
#220927 - 02/05/10 10:37 PM Re: IPv6 should be enabled by default [Re: andersman]
Khaled Offline


Planetary brain

Registered: 04/12/02
Posts: 4379
Loc: London, UK
This was considered, however after much testing I decided to make it optional.

As you know, Windows 7 has IPv6 support enabled by default, even if you do not have an IPv6 internet connection. It is not possible for an application to detect whether you have an IPv6 internet connection, at least, not without attempting to connect to a known IPv6 server, which is not practical and in any case might not be reliable.

If mIRC enables IPv6 support by default on Windows 7 and it attempts to connect to, for example, irc.efnet.org, the getaddrinfo() request will return a pool of both IPv4 and IPv6 IP addresses. Even if mIRC prioritizes IPv4 addresses, it will still have to cycle through the whole list of IP addresses when attempting to connect to a server, a third of which will be unreachable IPv6 addresses.

We already receive so many requests for help from users who have trouble connecting to IRC servers. Considering that the number of users with IPv6 connections is incredibly small, I think it would be it be unfair to force 99% of mIRC users to have to deal with connection issues/delays due to unreachable IPv6 addresses.

That is why mIRC does not enable IPv6 by default and why it warns users, the vast majority of whom are not technical and do not have IPv6 connections, that they should not enable IPv6 support. I too would have preferred to enable IPv6 by default but it just does not seem practical at this time.

Top
#220929 - 02/05/10 10:55 PM Re: IPv6 should be enabled by default [Re: argv0]
andersman Offline
Nutrimatic drinks dispenser

Registered: 23/04/10
Posts: 5
Why do all major browsers out there have IPv6 enabled by default then, if it "breaks by default" for all those users? Because it doesn't actually break anything. Enabled by default means that the browser resolves the hostname given, and uses the IP addresses returned without caring whether they are IPv4 or IPv6.

You are confused about 6to4 vs 6in4. I use 6in4 in my home for research and experimentation, and making sure that my network is IPv6-ready.

6to4 is enabled by default in modern Windows and maps your public IPv4 address to IPv6 in the 2002::/16 range, allowing IPv4 hosts to access IPv6-only servers. It is *NOT* used for servers with both a public facing IPv4 and IPv6 address as obviously the IPv4 address should be preferred then. 6to4 is a transition mechanism and the OS only uses it as a last resort when connecting to servers that don't have a public facing IPv4 address. It is not meant to be relied on as a solution to the IPv4/IPv6 problem.

6in4 is used for tunnels provided by organizations such as SixXS or Hurricane Electric managed by an user explicitly by their own choice.

getaddrinfo(), an API to resolve hosts, will return an ordered list of IP addresses prioritized by how you are connected to the Internet. The application should just call it and use the addresses provided, the OS is responsible for address family issues.

irc.example.net might resolve to 2001:db8:f5d::6667 and 192.0.2.3. If your computer has a 6to4 address and an IPv4 address, it will prioritize IPv4 over IPv6. If you have an IPv6 address (not in the 2002::/16 range) it will prioritize IPv6 over IPv4. If you don't have any IPv6 connectivity, it may not return any IPv6 addresses at all.

Not enabling IPv6 by default and hiding it behind scary options is not being helpful. mIRC disabling it means that it will not talk any IPv6, ever, until you enable it. Other apps, including all major web browsers as I mentioned, *do* have it enabled by defualt and will take advantage of it if the underlying platform supports IPv6 too. The user does not have to enable anything.

"Simply" using -6 to connect which you refer to is STILL having to care about IPv6 explicitly, which no regular user will do.

My "simple contradiction" is perhaps just a bad choice of words. What I meant, and which I think you actually know I meant, is that "no one" implied people who don't know what IPv4/IPv6 is. I don't think most mIRC users know what IPv4 is if you would ask them.

IPv6 is already present and supported on the Internet, in that it's supported by the DNS root, and the RIRs - the organizations that manage the Internet's resources. Even though IPv6 is not widely deployed yet to end users, two different ISPs/users with IPv6 connectivity can now use IPv6 completely from end to end.

Several ISPs already provide IPv6 connectivity to their users. Comcast has recently started a trial (comcast6.net), as has the Dutch ISP xs4all and the French free.fr. Canadian TekSavvy can also be included among consumer ISPs who provide IPv6. The Dutch business oriented ISP BIT supports IPv6 completely.


Edited by andersman (02/05/10 10:56 PM)

Top
#220931 - 02/05/10 11:28 PM Re: IPv6 should be enabled by default [Re: andersman]
Khaled Offline


Planetary brain

Registered: 04/12/02
Posts: 4379
Loc: London, UK
As I said, I would have preferred to enable IPv6 by default, but my test results indicated that this would be problematic. If you are absolutely sure that the above is the case (and I am hoping that you have tested all of this out already and know it for a fact ;-) I am going to re-test getaddrinfo() under different scenarios under XP and 7, both with and without a 6in4 connection.

Top
#220933 - 02/05/10 11:49 PM Re: IPv6 should be enabled by default [Re: andersman]
argv0 Offline
Planetary brain

Registered: 13/10/03
Posts: 3918
Loc: Montreal, QC, Canada
Again, the contradiction is still there. The issue is that "no regular user" should care about IPv6 yet. It's simply a non-issue to most regular users. As you yourself stated, most people don't know what IPv6 is and it therefore does not affect them. You've listed 4 ISP's of the hundreds that exist. At least one of those (Comcast) is opt-in and (it seems) invite-only, therefore, once again, users must still *care* about IPv6 to have it. They still need to jump through hoops (6to4 or some explicit ISP support) to get it working. The 99% of users Khaled quoted trump any presence IPv6 has right now. All IRC networks have an IPv4 address, even though individual some servers may be IPv6 only. There really is no reason to use IPv6 *unless* you care. Simply put: very few users need this right now.

As you said, if your computer has an IPv6 address that is connected to the internet, Windows will resolve IPv6 addresses. mIRC will too, except in mIRC's case, "having an IPv6 address" means binding to your IPv6 adapter rather than your IPv4 adapter. This step is necessary because even though you may have IPv6 available (and by your loose definition, "enabled"), it does not necessarily have connectivity. As Khaled mentioned, typing /server irc.ipv6.xs4all.nl may resolve the hostname to an IPv6 address (2001:888:0:2::6667), but it will not be able to connect unless you explicitly enabled that underlying layer. To a "regular" user, this is confusing. Therefore, mIRC warns you about having that layer on and makes sure you know what you're doing so as to avoid confusion. I see this as good user interface design.
_________________________
- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"

Top
#220934 - 03/05/10 12:07 AM Re: IPv6 should be enabled by default [Re: Khaled]
andersman Offline
Nutrimatic drinks dispenser

Registered: 23/04/10
Posts: 5
I've tested the following configuration:

- mIRC 7.02 with IPv6 enabled
- My Windows 7 computer with IPv6 enabled, but the router is not sending out any router advertisements. It's like any other computer in a regular IPv4-only network. Teredo is enabled. I believe this should be the same as a 7 installation out of the box.

I haven't tested Windows XP because I don't have access to a computer running it.

Connecting to irc.efnet.org (dual stacked) worked. It connected over IPv4. No connection issues. After receiving an IPv6 address it was still possible to connect, but it used an IPv6 server instead.

I tested /DNS with and without an IPv6 address on the host.

With IPv6 enabled in mIRC and Windows 7 but without an address:

/DNS irc.efnet.org: Dns resolved irc.efnet.org to 67.210.234.18
/DNS -4 irc.efnet.org: Dns resolved irc.efnet.org to 194.109.129.220
/DNS -6 irc.efnet.org: Dns unable to resolve address irc.efnet.org

/DNS efnet.xs4all.nl: Dns resolved efnet.xs4all.nl to 194.109.129.220
/DNS -4 efnet.xs4all.nl: Dns resolved irc.efnet.org to 141.213.238.252
/DNS -6 efnet.xs4all.nl: Dns unable to resolve address efnet.xs4all.nl

With IPv6 enabled in mIRC and Windows 7 but with an address (native IPv6):

/DNS irc.efnet.org: Dns resolved irc.efnet.org to 2001:19f0:1004:5123:0:dead:beef:cafe
/DNS -4 irc.efnet.org: Dns resolved irc.efnet.org to 205.188.234.121
/DNS -6 irc.efnet.org: Dns resolved irc.efnet.org to 2001:470:0:6667::2

/DNS efnet.xs4all.nl: Dns resolved efnet.xs4all.nl to 2001:888:0:2::2
/DNS -4 efnet.xs4all.nl: Dns resolved efnet.xs4all.nl to 194.109.129.220
/DNS -6 efnet.xs4all.nl: Dns resolved efnet.xs4all.nl to 2001:888:0:2::2

It works as expected.

Top
#220935 - 03/05/10 12:25 AM Re: IPv6 should be enabled by default [Re: argv0]
andersman Offline
Nutrimatic drinks dispenser

Registered: 23/04/10
Posts: 5
Let me get some of my definitions cleared up.

  • IPv6 enabled: support for IPv6 is there and the OS / applications can make use of it if there is connectivity. This includes most applications included in Windows, browsers, and so on. Most applications that have IPv6-ready code usually keep it "enabled" as it doesn't cause any problems.
  • Connectivity: a globally routable address assigned to your computer. You can talk to other hosts over IPv6, and they can talk to you.
  • Regular user: 99%.
  • 6to4: automatic transition mechanism used to allow IPv4-only hosts to talk to IPv6-only hosts over IPv6.


I only listed a few ISPs (there are more) to show that there is a growing interest from ISPs and progress in availability to regular customers.

Users will not have to jump through hoops. ISPs will very likely provide capable routers as they do now and the majority of installations will simply have IPv6 connectivity, seamlessly.


Edited by andersman (03/05/10 12:43 AM)

Top
#220936 - 03/05/10 01:52 AM Re: IPv6 should be enabled by default [Re: andersman]
Khaled Offline


Planetary brain

Registered: 04/12/02
Posts: 4379
Loc: London, UK
Right, as I found out during my original tests (it was actually a beta-tester who pointed out the inconsistent results at the time) the getaddrinfo() function behaves differently under XP and 7 and returns different results in different situations. I am not sure how it behaves under Windows 2000 or Vista as I do not have them installed just now.

That is the reason I decided not to enable IPv6 by default. Since the majority of mIRC users do not use IPv6, I did not want to risk distributing mIRC with IPv6 enabled with the result being that even more users would experience connection issues.

Under Windows 7, getaddrinfo() appears to return the expected results (at least under my Windows 7 installation and the 6in4 client I am using) ie. it returns IPv6 addresses only when an IPv6 connection is available and prioritizes them above IPv4 addresses. So I could enable IPv6 by default under Windows 7. However I am still not comfortable with doing that without wider testing to ensure that it is reliable and consistent across Windows 7 installations and 6in4 clients.

Note: You cannot test this issue using mIRC itself since mIRC implements DNS resolution of IPv4 and IPv6 addresses as two separate getaddrinfo() calls to ensure consistent behaviour across different versions of Windows.

Top
#220937 - 03/05/10 02:08 AM Re: IPv6 should be enabled by default [Re: Khaled]
beware Offline
Pikka bird

Registered: 02/01/03
Posts: 12
ive tested on vista and without v6 connectivity, it does not do the AAAA lookup (thus, returns only v4 addresses)

Top
#220938 - 03/05/10 05:11 AM Re: IPv6 should be enabled by default [Re: andersman]
argv0 Offline
Planetary brain

Registered: 13/10/03
Posts: 3918
Loc: Montreal, QC, Canada
I think your definition of "enabled" is moreso a definition of "capable". My definition of "enabled" implies connectivity, since as of 2010 connectivity is not implicit to someone with an IPv6 capable device.

Certainly you agree that the vast majority of users have IPv6 capable devices/OS's but no IPv6 connectivity. This step is important, since it's often an explicit one (using a tunnel broker, talking to your ISP, enabling Teredo). ISPs might provide capable routers to new users now, but the existing customer base (aka. most of the internet population at this point) will still be using old hardware until their current setups breaks. Most "regular" users are like this. They will have to expressly ask for an IPv6 capable device. This isn't a small chunk of people. Certainly adding 2 characters to a /server command isn't much of an extra hassle.

With the exception of a very small number of users, no machine I know of with an out of the box setup can connect to an IPv6 site. At the very minimum they would have to go into their control panel to enable Teredo. This may be extremely easy, but it's not "seamless". Certainly adding 2 characters to a /server command is equally easy, if not easier.

I think it's a great thing that there is growing interest from ISPs. I'm looking forward to IPv6 as much as you are. I use IPv6 on IRC. But we're not there yet. The real benefits of IPv6 addressing are not yet here. Those benefits don't even benefit IRC at all, so IPv6+IRC doesn't even mean anything, but I guess that's besides the point. When IPv6 is a real part of the internet, mIRC will adjust itself and simply drop the -6. That time will come. I don't see why you see this as such a dire scenario.

Of the "99%" of the regular users on the internet, maybe 1% use IRC. Of that 1% of the internet, maybe 1% of those users use/want IPv6. This feature targets a really small demographic. Maybe your intention is to change that statistic, but IMO it's not going to come from an IRC client, it's going to come from ISPs, backbones, and most specifically, IRC servers turning on IPv6 and eventually turning *off* IPv4. Until IPv4 is off, IPv6 is just vanity for your hostname, at least when it comes to IRC.

edit:
A specific note about Teredo: older routers (specifically the routers that most "regular users" own) don't all work out of the box with Teredo. This is something I know because I own one of these older routers, and I had to jump through hoops to enable it. In the case where you have an older router you have to enable it with the following cmd command:
Code:
netsh interface ipv6 set teredo enterpriseclient


So as stated, it might have gone off without a hitch for you, but in reality it's not nearly as seamless as it seems.


Edited by argv0 (03/05/10 06:56 AM)
_________________________
- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"

Top
#221001 - 05/05/10 12:25 AM Re: IPv6 should be enabled by default [Re: Khaled]
andersman Offline
Nutrimatic drinks dispenser

Registered: 23/04/10
Posts: 5
In Windows XP IPv6 is not nearly as good as in Vista and later, and it's also not IPv6-capable in a regular install. You have to install it yourself.

So a solution could be to have the toggle for IPv6 disabled in a new install on XP, but enabled on Vista and newer. This is how uTorrent works too as far as I know. XP is very old now, and I would be ok with doing this on that OS.

Top
#221332 - 14/05/10 09:05 AM Re: IPv6 should be enabled by default [Re: andersman]
Khaled Offline


Planetary brain

Registered: 04/12/02
Posts: 4379
Loc: London, UK
I do agree that ideally it should be enabled by default for Windows 7, however when I introduce a new feature that has the potential to affect large numbers of users negatively, I usually make it optional and wait to see how it performs for those that use it. This allows me to resolve any teething issues. Once it looks like it is stable, I enable it by default in a subsequent release.

My main focus for this release is mIRC as a Unicode application. The conversion to Unicode has required huge numbers of changes, so I it's important to ensure that it is stable before introducing other variables. But yes, IPv6 will be enabled by default in a subsequent release.

Top