I can't imagine enough players are in Hawaii to justify the added costs of maintaining servers there. I wonder if hawaii even has any well established nocs.
edit: I googled and I found some military ones but I don't see anything for civilians / companies.
I have been posting on the Blizzard forums to try and lobby for some Hawaii based servers, as we are still in the USA (in name only). Still being in the US will eliminate the Aus etherwebpolitiks issues, and I think this is a good step to bridging the latency gap. I don't see why Blizzard wouldn't set up a few servers on Oahu, and make "truer" oceanic servers. Maybe someone on these forums has some insight on how I can personally continue to lobby for this.
The distance between Brisbane, Australia and Honolulu, Hawaii is 4687 miles.
The distance between Los Angeles, California and Honolulu, Hawaii is 2551 miles.
So maybe just the pure geographic location will cut back the ping? I am by no means a wizard with networking or internet issues, it just seemes to make sense that the closer you are to a server, the less lag you have.
The population of Hawaii is around 1,250,000, the population of Australia is 21,000,000, New Zealand 4,000,000. If they wont make a server for a area with 25,000,000 , there definitely wont be enough subscribers in Hawaii to justify a server there. That doesn't include all the subscribers in Singapore, Japan etc who would benefit from an Oceanic server farm.
Put simply, there are probably at least 10-15X more WoW subscribers in the Oceanic region then in Hawaii (and thats a conservative estimate), and if we find it impossible to get servers here, I'm sure you will find it 10-15X more impossible to get them in Hawaii.
I was under the impression Blizzard would not put servers in Aus / NZ because monitary issues with the ISPs?
I would think that putting servers in Hawaii could serve the Oceanic players better than any sever on the mainland USA. What I was trying to say in my first post (sorry if this was not clear to people) is that adding servers to an existing US State/Territory (maybe even the marshall islands) would help rid some of the problems that oceanic players experience, at no financial hardship to Blizzard.
Put simply, there are probably at least 10-15X more WoW subscribers in the Oceanic region then in Hawaii (and thats a conservative estimate), and if we find it impossible to get servers here, I'm sure you will find it 10-15X more impossible to get them in Hawaii.
On a side note, where exactly is Hawaii considered to be located? According to most maps I have seen, Hawaii is considered in Oceana.
I will let you try to tell all of these people that they are not from or living in the same region.
Edited for formatting.
Last edited by buddhasevil : 12/10/07 at 5:45 AM.
Reason: formatting
Why is everybody automatically given 300/300 skill common language? Chat channels prove, not everybody deserves it...
As I posted before, most commercial traffic from Australia to Hawaii goes via the west coast US anyway. So there's no latency gain there.
I tried the TcpAckFrequency registry tweak even though I don't have a latency issue, and it dropped my ping from 80-120ms to 15-30ms. I play on EU servers from London, and ping the server at about 15ms using ping.exe.
@drizzy that's interesting. I might try that tonight because on EU-Destromath we are experiencing latency issues in the range of 300-500 for some providers lately.
I'm not sure that having the servers in hawaii would help australia much. I think all the traffic to Hawaii is bounced through LA datacenters anyway so it would actually just add more lag for australians.
I tried last night the registry tweak and it took my latency down from 350-400 to 200-220, then I decided to try the linux version also so I installed one in VmWare and it dropped to 180-190. This is amazing, I never had 300 ms lantecy in the 3 years I`ve been playing wow.
For reference, copy&paste from blizz boards on what people are referring to when mentioning the "vmware method"
OK i've done a little writeup in a private forum on how to get a linux virtual machine setup with socat etc. This ISN'T necessarily the best way to do it, i'm a linux noob so I stuck with whats familiar to me so hold those flames :P
I used Debian for no other reasons than thats the only distro I have any experience with and apt-get is rather handy . Please don't flame me for my choice :P
I don't claim the way i've done it is the best/cleanest or most noob friendly way of doing it, but it worked for me. Your mileage may vary!
Please note to run VMware + wow on the same pc the pc needs to have plenty of grunt. I'm doing this on a core 2 duo with 2 GB ram. Doing this with less is not recommended.
Quick and dirty setup:
Preparation: Download the following -
http://cdimage.debian.org/debian-cd/...86-netinst.iso - I prefer netinstall ISO's as they are a lot smaller than a full CD image Download VMware Server, free VMware, virtual server - VMware - make sure you get a key!
Some sort of virtual cd mounting tool, I use THE DAEMONS HOME - Daemon-Tools but on writing this I see the site is down at the moment. Otherwise simply burn the ISO to a blank CD. Also be warned Daemon-Tools is bundled with some adware but you can opt out of the install of that software so no big drama.
1) Install VMware. Click "yes" when it moans about IIS. The VMware install is straightforward just rather lengthy (it seems to spend a while apparently doing very little). I left 'auto-run' enabled btw.
2) Make sure the Debian cd is in your CD drive or the ISO image is mounted via something like daemon-tools
3) Set up a new virtual machine. Give the virtual machine one processor, and allow it say 512 MB ram (I have 2 GB so plenty of room), and allocate 1 GB hard drive space (again got heaps so didn't care :P). With its networking select the top option (bridging). I most creatively named my virtual machine "Debian". :p. The machine type btw is linux 2.6
4) Boot the virtual machine, all going well it should detect the CD and auto run the Debian install
5) Go through the Debian install. It is self explanatory just make sure you read each page before mindlessly clicking yes :p
6) When you reach the part about the APT repository select the mirror closest to you (there is a couple in NZ).
7) When prompted for package selection I unchecked the desktop option and clicked continue (no need for a x windows system).
8) When asked about GRUB install say yes to installing on the MBR.
9) Soon after this the install will complete. you will need to eject or unmount the CD and click continue. The virtual machine will then reboot.
10) The new debian install will boot and you will soon reach a login prompt. Log in under your user account name that you gave during the install
11) Once logged in you will need superuser privileges to carry out the following steps so to gain that type at the command prompt su and press enter, then type the admin password you set during the install. Press enter.
12) Place the Debian install CD back in the CD drive (or re mount it if using a virtual drive)
14) Type the following: apt-get install iptables and allow the install to complete. This is probably unnecessary it should already be installed - this step is just making sure.
15) Type the following: apt-get install socat and allow the install to complete.
Note i'm skipping sudo because setting that up involves editing /etc/sudoers which will be beyond a noob (but if you really must, run the command visudo)
16) Type the following ifconfig and press enter. Note this screen is a bit complicated but what you are looking for is the virtual machines ip address. You are looking for a entry beside the Eth0 entry that will probably be something like 192.168.1.3 (for example). This will vary depending on your network setup. If anyone has an easier/noob friendly way of determining the ip address post it below!! Write down this address.
18) Type the following iptables -t nat -A PREROUTING -p tcp -d your.wow.server.ip.address --dport 3724 -j REDIRECT --to-ports 3724
If you play on multiple servers then you can set up multiple iptables entries simply by substituting in the server ip addresses you need.
19) Type the following socat -d -d TCP4-LISTEN:3724,nodelay,fork,reuseaddr,su=nobody TCP4:your.wow.server.ip.address:3724,nodelay (note I removed 1 -d from Yarre's example to reduce the screen spam)
If you want to play of a different server you'll need to hit CTRL-C to kill the socat screen and re-enter the above command with the correct ip for the new server. There are better ways to do this of course but i'm going for noob friendly here
Your linux virtual machine is now ready to do its magic. You now need to set up your windows pc to send data to the linux virtual machine.
to do this you will need the ip address you wrote down earlier for your linux virtual machine (example 192.168.1.3)
20) Press START then RUN and type cmd and press enter
If you play on multiple servers you can add a route per server.
If the command is successful then you will be returned to the command prompt with no message. If you get a error please double check what you are typing in.
Now, fire up wow, and all going well you will be able to play on your server with a substantially lower ping!
Hopefully this all makes some sense.
Lots of credit to Yarre (for coming up with the idea) and Jax!!
Note: You don't need daemontools, vmware server can mount iso files.
What exactly do people use to redirect WoW for this Australia ISP's proxy? The linux solution is quite a bit overkill, because it is primarily used to redirect the WoW client traffic transparently to the proxy software.
However I wrote a little piece of Java proxy years ago, that simply took a connection and added a necessary authentication header to access an HTTP based audio stream. I had won a little stereo with network interface which could play back streamed audio. However it could not authenticate my paid audio stream so I had to write a small proxy that did it for the stereo and otherwise did nothing than pass data between the two sources.
If I can dig that old code up, anyone can run that easily on their system, no matter the OS. That is, if all it requires is really only the TCP_NODELAY Flag for the outgoing connection. But then you'd need to redirect your WoW (and only your WoW) traffic through that little proxy.
So how exactly do the Aussie People use this Internode gateway. You need to install some software, right ?
Ah yes, thank you. Unfortunately it is indeed Socks, which is a protocol that needs to be implemented, I can't just open a connection to the intended target with TCP_NODELAY set and move packets between the two connections.
The disadvantage is that I need to be able to speak the SOCKS protocol. The advantage is, that you don't need to sniff the connection to find out the IP address of the realm server connector as that is handled transparently between Freecap and the Socks server. Takes a bit more time for me, but is probably easier to use for the technically not so apt people. Not to mention a lot easier than setting up VMWare with contained Linux.
Hm found a nice open Java SOCKS library, I was able to hack something together in 20 lines.
DISCLAIMER: USE AT YOUR OWN RISK. This is work in progress, I hacked it together in a bit under an hour. It should work, but I can't really test it as my natural connection is already less than 100ms. It does work in as much as it does relay connections fine. Also, as I'm not yet providing the source (follows as soon as I can clean it up and add some useful information) you cannot be sure I'm not trying to steal your account. I'm not, but you can't know. So only download and use it if for some strange reason you are trusting me and you want to help me test it. You should know how to install a Java Runtime Environment, if you don't have one already. Please provide feedback via PN if you try it out.
Open up a command window (Start/Execute/"cmd"), navigate to the directory you put the jar-file into and simply enter "java -jar wowproxy.jar" Debug is a bit enabled so you should see something like this when any connection through the proxy is made:
Starting SOCKS Proxy on:0.0.0.0:1180
Accepted from:hostname.domainname.tld:3275
Request version:5 Command: CONNECT
IP:destination.domain.tld/333.222.444.444 Port:34522
Connected to destination.domain.tld/333.222.444.444:34522
[after closing the connection]
Aborting operation
Main thread(client->remote)stopped.
Support thread(remote->client) stopped
The proxy binds to port 1180. Download Freecap (available here: FreeCap Homepage - What is FreeCap? ) and set it up so that it uses localhost port 1180 (enter 127.0.0.1 or your machines' true IP address). Test it out. Does it help ? Do you have lower ping ? Or no change at all?
Anyway, it is at least easier to setup than VMWare
I need to logon for a raid now, might update it later tonight but I am interested in feedback in any case.
EDIT: Oh to close it, just press CTRL-C in the window you used to start it. You shouldn't do this while it is in use, though, for apparent reasons.
Interesting, will check this out asap.
The linux method is overkill definitely (unless of course you are already have access to a linux box) and makes it hard for non computer literate types to gain the benefits of setting nodelay.
I used the Windows registry hack. Went from 350-400 solid to sub 300 all night. I can't remember ever seeing a 2XX number for an entire night, so unless it's hyper-coincidence, it all works as described.
I'll monitor it over the next couple of days, but it does seem promising.
Pewsey has heard about tact and discretion, but tends to regard them much as children view vegetables.
There are only two kinds of MMOs: the ones people complain about and the ones nobody plays. (inspired by Bjarne Stroustrup)
I'm using the virtual machine method, though with Virtualbox rather than VMWare, which doesn't work on Vista x64. Good god, my ping dropped from 500-550ms to 200-300ms. Quartz reports lag on cast times as being between 211ms and 350ms, with 450-500 being the highest. This is down from between 220 (very, very rare), and 450ms, with 600-700 being high (very common.) It's so sweet. Still didn't fix the lag spikes problem that I've been getting since 2.3, but it seemed to make them more bearable.
I just can't believe the difference this has made, I'm living in a backwater state of Australia (Tasmania if you must ask, please don't laugh) and it dropped my latency from 500-800ms to 220ms (holy @#$% that's good for me) and 380ms at peak. I am still utterly amazed at how good my connection is now, I still get lag spikes but thats just because my ISP sucks the dogs balls and as I said I'm in a fairly under developed state (can't even get faster than 8Mbit and I'm in the middle of the state's capital city). So that's from the Lowerping service which I payed for and will probably use until my month is up. I also added the TCPNoDelay reghack to my flatmates computer and it did pretty much the same thing, of course I didn't tell him of the drawbacks that reghack might have but screw him he's a prick :P
Still no official reply from Blizzard though which is strange, not even a "we are looking into this".
I doubt Blizzard will ever really respond. Admit to a problem that has caused excessive lag for millions of customers for a long time? They could be opening themselves up for mass claims or worse. It is America after all.
I'm picking if they do respond it will be in the form of a patch simply turning that flag on.
Tested the java app posted above, it won't work, at least for me, the proxy drops the connection part way through the login process.
I found the TcpAckFrequency=1 registry change beneficial too (for WoW). I went from 450-600ms to 250-320ms. It was much less effort than adding a loopback redirect and netcat hack on my firewall, and a little less effort than using FreeCap to Internode's proxy.
As other mentioned, enabling TCP_NODELAY on the socket connection that the client uses is a trivial change for Blizzard's developers to add to their client code. It's ~3 lines of C on a UNIX application using setsockopt(3), and the Windows equivalent should be about the same.
Thanks again to Yarre for the hints on the delayed ACK problem and solution. Thanks also to Internode for working on a (separate) solution.
I have updated the program (and actually tested a bit myself). It's crazy I usually have around 75ms latency but with this I can get even down to 50. Normal ping to the last server on the path to the realm reveals a steady 25msec. So this actually is beneficial for all, even for a low ping bastard that I am.
So my little proxy works. I have updated the jar file. I have also added the source code, please feel free to verify it doesn't do anything bad. Compiled class files are included but you should verify the code and compile it yourself.
My code is in ch.draxinusom.wowproxy. I also had to modify the socks.ProxyServer.java a bit. The changes are commented in the code. Mainly I added the TCP_NODELAY option by default and I do add all sockets to a global list so that you can actually turn the flag off and on while you are using the proxy.
Start it with "java -jar wowproxy.jar". You can add a numerical argument, which causes it to bind to that address instead of the defaulted 1180 I configured.
Still: Use at your own risk. While the proxy doesn't really do anything harmful, the FreeCap does need to redirect your WoWclient's network traffic. This may or may not cause Warden to freak out horribly.
The solution with a Linux box transparently redirecting the client's traffic is free of such a problem, however there you'd need to find out the IP address of your realm server(s) while this solution is much easier to setup and maintain. So chose your own poison. I don't take any responsibility when you use this software.
All I guarantee you is, that I'm not trying to fuck with your account data. And that guarantee is only given as long as you download it from me from Index of /downloads/wowproxy
Hopefully this may help some of you enjoying this game better until Blizzard decides to change their flags. The windows registry key thing certainly works as well, though I don't think it is the best thing for a global setting, as this isn't really so good for bulk data transmissions such as file transfer with limited upload bandwidth.
Oh and I've seen someone link to the official US forum. If you ever link to this little software, please link to this forum posting and/or copy the text verbatim as has been done. I don't want people to get it without any of this long warning text. Thanks.
Maybe I'm the only one for whom the TcpAckFrequency registry change didn't seem to do anything. Cadfael's program did work though, reducing my latency from 500-600ms to 350ms. It can't get much lower due to geographical reasons.
Maybe I'm the only one for whom the TcpAckFrequency registry change didn't seem to do anything. Cadfael's program did work though, reducing my latency from 500-600ms to 350ms. It can't get much lower due to geographical reasons.
Did you restart your computer after putting in the registry setting? I can't see why one would work and not the other unless you did it wrong.
Another way to do this (if you are not too worried about anything other than wow lag).
To get low pings with 2 simple registry hacks do the following. You need to apply both registry changes to get the maximum effect.
1 - TcpAckFrequency - NOTE if you are running Windows Vista this setting may not have any effect - a hotfix is needed which i'm tracking down. This works fine under Windows XP
Type "regedit" in windows "run.." dialog to bring up registry menu
Then find:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
There will be multiple NIC interfaces listed in there, find the one you use to connect to the internet, there will be several interfaces listed (they have long names like {7DBA6DCA-FFE8-4002-A28F-4D2B57AE8383}. Click each one, the right one will have lots of settings in it and you will see your machines IP address listed there somewhere. Right-click in the right hand pane and add a new DWORD value, name it TcpAckFrequency, then right click the entry and click Modify and assign a value of 1.
You can change it back to 2 (default) at a later stage if it affects your other TCP application performance. it tells windows how many TCP packets to wait before sending ACK. if the value is 1, windows will send ACK every time it receives a TCP package.
A big advantage of the java proxy variant is, it works as well on a Mac, not just on Windows.
Since the proxy is only part of the solution, you need a Socks redirector. On Windows FreeCap is one, on Mac, this tsocks version 1.8.3 for Mac OS X 10.5 Leopard should work (can't test it myself).