D. Strout
Resident IPv6 Proponent
Disclaimer: I do not pretend to be an expert on this subject, but this is how I do it. Feel free to add or critique anything I say here.
Not all VPSes are created equal. There are many ways two VPSes with identical specs can differ, making one better than the other. Overselling, a provider's reviews/ratings, what hardware they're running on, and other factors can make a $7/mo 512MB VPS better than a $3/mo VPS from another company. The factor I'm considering here is network quality. Your provider will always have what are called "upstream" providers that carry the network traffic going to and from your VPS. The number and quality of these will affect network latency (how long it takes traffic to get to and from your VPS), as well as the number of other computers and routers your request has to go through.
So, how do you do it? The biggest thing you need is a provider's test IP address. If the provider you're considering has multiple locations, be sure you get the test IP for that location, as test IPs differ between locations. With the test IP in hand, you should go to bgp.he.net and plug it in to the search box up top. For an example, I am going to take the test IP of one of the providers I really like: Versatile IT. The IP is 50.2.39.239 (even looks cool ). A search on the above site should give you this:
So what does this mean? As you can see, the "Origin AS" is the same on all three entries. This IP is announced and originated from AS 30693. AS stands for "Autonomous System", which is basically a self-contained network with certain IP address blocks assigned to it. It is these we're interested in. Click the link to AS30693. This will give you lots of information about the AS, including how many IPs are assigned to it, where it originates from, and, importantly, the number of "peers" it has. Arguably the most important part is below the box with all the numbers, down where the pie chart(s) are/is. Next to the pie chart is a list of peers. In the case of AS30693, here are the pie charts. In this case there are two, one for IPv4 and one for IPv6. Providers that only have IPv4 will usually have just one.
Fundamentally, what you're looking for here is number and quality of the peers. A peer is another AS that this one exchanges traffic with. On one level, it's good for your provider's AS to have a lot of peers, so that if one's network goes down, traffic can be routed over others. So if you're lazy, just check that your provider's AS has a lot of peers. But if you're more diligent, check the quality of the peers. How do you do that? Traceroutes, a lot of them. Bring up a terminal emulator (command prompt, terminal, whatever) and type tracert (Windows) or traceroute (Unix variants), then the test IP. Starting around the third "hop", you should see that the IP addresses resolve to hostnames that indicate what provider the traffic is going through at that hop. First you should see your ISP's domain, then your ISP will "hand off" to other providers, eventually ending up at the IP. The last few hops should look familiar to you - they will be going through some of the providers you saw in the lists on the AS info page.
Other than that, though, what you're looking for is that the routing isn't "weird". Here's what my traceroute to 50.2.39.239 looks like:
Tracing route to 50.2.39.239 over a maximum of 30 hops
1 2 ms 2 ms 3 ms Wireless_Broadband_Router.home [192.168.1.1]
2 227 ms 250 ms 236 ms xx.xx.xx.xx
3 284 ms 308 ms 249 ms xx.xx.xx.xx
4 479 ms 376 ms 324 ms burl-lnk-70-109-168-138.ngn.east.myfairpoint.net [70.109.168.138]
5 380 ms 425 ms 347 ms te8-5.ccr01.alb02.atlas.cogentco.com [38.104.52.29]
6 465 ms 415 ms 460 ms te8-1.ccr01.jfk01.atlas.cogentco.com [154.54.5.37]
7 552 ms 491 ms 402 ms te0-3-0-7.ccr21.jfk02.atlas.cogentco.com [154.54.7.69]
8 251 ms 217 ms 155 ms te0-4-0-6.ccr21.dca01.atlas.cogentco.com [154.54.42.21]
9 112 ms 253 ms 122 ms te0-2-0-6.ccr21.atl01.atlas.cogentco.com [154.54.2.45]
10 125 ms 129 ms 107 ms te0-2-0-1.ccr21.iah01.atlas.cogentco.com [154.54.29.6]
11 131 ms 328 ms 129 ms te2-1.ccr01.sat01.atlas.cogentco.com [154.54.80.149]
12 140 ms 143 ms 142 ms te7-8.ccr01.elp01.atlas.cogentco.com [154.54.27.117]
13 201 ms 172 ms * te8-1.ccr01.phx02.atlas.cogentco.com [154.54.80.209]
14 325 ms 331 ms 257 ms 154.54.89.106
15 80 ms 81 ms 190 ms phx1.200-1.bb1.g1-3.eonixco.com [38.122.88.46]
16 199 ms 204 ms 82 ms 50.3.0.117
17 241 ms 238 ms 188 ms node03.versatileit.com.au [173.44.240.188]
18 151 ms 159 ms 158 ms 50.2.39.239
Trace complete.
I've "censored" the 2nd and 3rd hops since they're similar to my IP, which you don't need to know After that, though, you can see where the traffic is going. The fourth hop is in Burlington, Vermont with (the "burl" part at the beginning) with Fairpoint (my ISP, the "myfairpoint.net" part), then it hands off to Cogent ("cogentco.com"). To find out what locations the following hops are in, you can do a geoip lookup on the IP, or you can look for the bits that look like cities. The fifth hop has "alb02" in it, which refers to Albany. In 6 and 7 "jfk" is New York City, because jfk is the airport code for J.F.K. International. A lot of providers label their switching points this way. If you were to look up all of these IPs, you would see that from Albany, the traffic goes to New York City (hops 6-7), Washington D.C. (hop 8), Atlanta (9), Houston (10), San Antonio (11), El Paso (12), then Phoenix, which is where 50.2.39.239 is. Between hops 14-15, Cogent hands off to Eonix, which is the network that Versatile IT's test IP is in. With a few more hops in their internal network, we're at the test IP.
So what does all this tell us? Well, let's map it. I've not put the map here, because this is long enough as is, but you can see how this routing maps out here. As you can tell, it's a bit of a curve. Ideally, all routings would be a straight line, but they're not. What you don't want is weird routing where there are "zigzags", for instance, routing down to D.C. then back up to New York, then over to Chicago, then Kansas City, then St. Louis, then Dallas, then Phoenix. A good provider has a network with efficient routing. The routing from my house to 50.2.39.239 could be better, but it could be worse. And this is just one traceroute. Do more from your own VPSes, using looking glass tools, and if necessary ask other people to do them for you. If a server is just for your own personal use, you can just do a traceroute from your own connection, but usually the more the merrier. Over time, you'll begin to see which providers and upstream providers (usually called "carriers) have good routing and which ones don't. Then once you have a test IP, you can do a quick lookup of the ASN, see which carriers peer with it, and decide if this VPS likely has good enough routing to make it a good buy.
Not all VPSes are created equal. There are many ways two VPSes with identical specs can differ, making one better than the other. Overselling, a provider's reviews/ratings, what hardware they're running on, and other factors can make a $7/mo 512MB VPS better than a $3/mo VPS from another company. The factor I'm considering here is network quality. Your provider will always have what are called "upstream" providers that carry the network traffic going to and from your VPS. The number and quality of these will affect network latency (how long it takes traffic to get to and from your VPS), as well as the number of other computers and routers your request has to go through.
So, how do you do it? The biggest thing you need is a provider's test IP address. If the provider you're considering has multiple locations, be sure you get the test IP for that location, as test IPs differ between locations. With the test IP in hand, you should go to bgp.he.net and plug it in to the search box up top. For an example, I am going to take the test IP of one of the providers I really like: Versatile IT. The IP is 50.2.39.239 (even looks cool ). A search on the above site should give you this:
So what does this mean? As you can see, the "Origin AS" is the same on all three entries. This IP is announced and originated from AS 30693. AS stands for "Autonomous System", which is basically a self-contained network with certain IP address blocks assigned to it. It is these we're interested in. Click the link to AS30693. This will give you lots of information about the AS, including how many IPs are assigned to it, where it originates from, and, importantly, the number of "peers" it has. Arguably the most important part is below the box with all the numbers, down where the pie chart(s) are/is. Next to the pie chart is a list of peers. In the case of AS30693, here are the pie charts. In this case there are two, one for IPv4 and one for IPv6. Providers that only have IPv4 will usually have just one.
Fundamentally, what you're looking for here is number and quality of the peers. A peer is another AS that this one exchanges traffic with. On one level, it's good for your provider's AS to have a lot of peers, so that if one's network goes down, traffic can be routed over others. So if you're lazy, just check that your provider's AS has a lot of peers. But if you're more diligent, check the quality of the peers. How do you do that? Traceroutes, a lot of them. Bring up a terminal emulator (command prompt, terminal, whatever) and type tracert (Windows) or traceroute (Unix variants), then the test IP. Starting around the third "hop", you should see that the IP addresses resolve to hostnames that indicate what provider the traffic is going through at that hop. First you should see your ISP's domain, then your ISP will "hand off" to other providers, eventually ending up at the IP. The last few hops should look familiar to you - they will be going through some of the providers you saw in the lists on the AS info page.
Other than that, though, what you're looking for is that the routing isn't "weird". Here's what my traceroute to 50.2.39.239 looks like:
Tracing route to 50.2.39.239 over a maximum of 30 hops
1 2 ms 2 ms 3 ms Wireless_Broadband_Router.home [192.168.1.1]
2 227 ms 250 ms 236 ms xx.xx.xx.xx
3 284 ms 308 ms 249 ms xx.xx.xx.xx
4 479 ms 376 ms 324 ms burl-lnk-70-109-168-138.ngn.east.myfairpoint.net [70.109.168.138]
5 380 ms 425 ms 347 ms te8-5.ccr01.alb02.atlas.cogentco.com [38.104.52.29]
6 465 ms 415 ms 460 ms te8-1.ccr01.jfk01.atlas.cogentco.com [154.54.5.37]
7 552 ms 491 ms 402 ms te0-3-0-7.ccr21.jfk02.atlas.cogentco.com [154.54.7.69]
8 251 ms 217 ms 155 ms te0-4-0-6.ccr21.dca01.atlas.cogentco.com [154.54.42.21]
9 112 ms 253 ms 122 ms te0-2-0-6.ccr21.atl01.atlas.cogentco.com [154.54.2.45]
10 125 ms 129 ms 107 ms te0-2-0-1.ccr21.iah01.atlas.cogentco.com [154.54.29.6]
11 131 ms 328 ms 129 ms te2-1.ccr01.sat01.atlas.cogentco.com [154.54.80.149]
12 140 ms 143 ms 142 ms te7-8.ccr01.elp01.atlas.cogentco.com [154.54.27.117]
13 201 ms 172 ms * te8-1.ccr01.phx02.atlas.cogentco.com [154.54.80.209]
14 325 ms 331 ms 257 ms 154.54.89.106
15 80 ms 81 ms 190 ms phx1.200-1.bb1.g1-3.eonixco.com [38.122.88.46]
16 199 ms 204 ms 82 ms 50.3.0.117
17 241 ms 238 ms 188 ms node03.versatileit.com.au [173.44.240.188]
18 151 ms 159 ms 158 ms 50.2.39.239
Trace complete.
I've "censored" the 2nd and 3rd hops since they're similar to my IP, which you don't need to know After that, though, you can see where the traffic is going. The fourth hop is in Burlington, Vermont with (the "burl" part at the beginning) with Fairpoint (my ISP, the "myfairpoint.net" part), then it hands off to Cogent ("cogentco.com"). To find out what locations the following hops are in, you can do a geoip lookup on the IP, or you can look for the bits that look like cities. The fifth hop has "alb02" in it, which refers to Albany. In 6 and 7 "jfk" is New York City, because jfk is the airport code for J.F.K. International. A lot of providers label their switching points this way. If you were to look up all of these IPs, you would see that from Albany, the traffic goes to New York City (hops 6-7), Washington D.C. (hop 8), Atlanta (9), Houston (10), San Antonio (11), El Paso (12), then Phoenix, which is where 50.2.39.239 is. Between hops 14-15, Cogent hands off to Eonix, which is the network that Versatile IT's test IP is in. With a few more hops in their internal network, we're at the test IP.
So what does all this tell us? Well, let's map it. I've not put the map here, because this is long enough as is, but you can see how this routing maps out here. As you can tell, it's a bit of a curve. Ideally, all routings would be a straight line, but they're not. What you don't want is weird routing where there are "zigzags", for instance, routing down to D.C. then back up to New York, then over to Chicago, then Kansas City, then St. Louis, then Dallas, then Phoenix. A good provider has a network with efficient routing. The routing from my house to 50.2.39.239 could be better, but it could be worse. And this is just one traceroute. Do more from your own VPSes, using looking glass tools, and if necessary ask other people to do them for you. If a server is just for your own personal use, you can just do a traceroute from your own connection, but usually the more the merrier. Over time, you'll begin to see which providers and upstream providers (usually called "carriers) have good routing and which ones don't. Then once you have a test IP, you can do a quick lookup of the ASN, see which carriers peer with it, and decide if this VPS likely has good enough routing to make it a good buy.