Is IPv6 'faster' than IPv4?

Are there any practical speed/latency gains from using IPv6, or is it just to make room for more IPs?


Solution 1:

Practical impact? Not really. The effect is pretty small. Where you might run into it is in high latency links (think satellite) where the MTU (maximum transfer unit) is small, which magnifies the impact of the larger overhead IPv6 requires. That's an edge case. The other area where you'll see impacts is when you're doing 6 to 4 translations in the network path, as that always takes some time. But if you had a pure v6 path to that other v6 host such latencies won't be an issue.

In these days of TCP Offload Engines coming built in to more and more network stacks the impact is even less likely to be noticed. If any. In fact, it may even be faster in those cases.


Why is that larger header not as much of a factor as you think? That's because the designers of v6 took some of the lessons of v4 and built things better. Most importantly for cross-internet communications the address fields are handled much more efficiently in routers than in v4, which improves speed of v6 packets through routers as compared to their v4 cousins.

When it comes to same subnet communications where router tables aren't a concern, each packet requires less raw computation. There is one less checksum to validate (Ethernet checksum, no IP checksum for v6, but TCP/UDP checksum is still required) which saves small amounts of time. And on special networks, the ability to have VERY large packets can further save processing.

Solution 2:

You might see performance improvements with IPv6 if there is a slow router between you and your destination which would have fragmented IPv4 packets along that path. With IPv6, routers will no longer fragment packets for you. (the responsibility has been delegated to end nodes.)

Of course, this is an edge case. There is no reason to believe IPv6 will perform better than IPv4 in the general case.

Also, router vendors may also have optimized their IPv4 data paths more than their IPv6 data paths. So until IPv6 routers have equivalent optimizations, IPv6 may be slower. (For example, some routers may do IPv4 routing in hardware, but IPv6 in software. High-speed performance tests would have to be done to identify this.)

So you have to weigh the chances that there is a router that isn't optimized for IPv6 between you and your destination with the chances that there is a router doing fragmentation of IPv4 packets between you and your destination. ;-)

Solution 3:

I've been running dual stack IPv6/IPv4 for a while now, and I'm a huge fan.

I can tell you that most of the time the performance and latency are about the same. But on occasion, IPv6 will make your jaw drop.

Consider my ping times to Google:

On IPv4:

rtt min/avg/max/mdev = 35.557/38.225/43.909/3.146 ms

On IPv6:

rtt min/avg/max/mdev = 39.202/40.923/43.105/1.501 ms

Nearly identical. That's what I see most of the time. But every so often, such as when I'm accessing one of my own servers, which is also on IPv6...

On IPv4:

rtt min/avg/max/mdev = 123.510/124.249/125.997/0.909 ms

On IPv6:

rtt min/avg/max/mdev = 87.140/88.600/90.727/1.255 ms

The big difference here, of course, is my ISP's less than optimal IPv4 routing for this route and much better IPv6 routing. (IPv4 goes Boston-Chicago-Denver-Seattle-LA-Phoenix. WTF? IPv6 goes Boston-DC-Atlanta-Dallas-Phoenix.) I suspect there are lots more of these out in the wild.

Solution 4:

In my experience of comparing traceroute6 vs. traceroute, IPv6 is faster, even through a tunnel broker. This is probably because IPv6 generally requires fewer hops to get from point A to B.

Here's a third-party source backing up my observation:

Accessing sites and content over the Internet is usually faster with IPv6 than with IPv4 because with the new protocol it requires fewer "hops" between network nodes
Here is a little experiment I ran using traceroute/traceroute6, ping/ping6, and my Hurricane (tunnelbroker.net) tunnel, gathering the sites with both IPv6 and IPv6 capabilities from http://test-ipv6.com:
SITE                    IPv4 hops       IPv6 hops       IPv4 ping (min/avg/max/mdev ms) IPv6 ping (min/avg/max/mdev ms)
6connect.com            14              8               67.253/72.499/106.113/11.265    55.031/58.340/74.078/5.426
bind.com                13              10              45.450/53.924/98.121/15.158     60.002/82.812/196.221/41.448
comcast6.net            >13             10              -                               92.043/92.840/94.055/0.680
delong.com              11              7               59.059/66.432/95.884/10.134     52.423/73.042/135.103/30.874
mozilla.org             >11             6               33.178/97.481/536.719/148.432   45.562/47.133/48.390/0.805
test-ipv6.chi.vr.org    9               9               85.383/286.941/527.103/155.351  76.788/169.458/516.502/147.166
test-ipv6.com           10              5               34.021/39.507/70.518/10.384     33.009/41.441/70.052/13.069
test-ipv6.iad.vr.org    15              13              86.739/93.772/120.192/10.195    91.341/93.146/97.153/2.006
test-ipv6.motd.be       >14             8               86.186/401.432/1629.098/502.373 92.437/481.830/727.557/241.649
test-ipv6.sjc.vr.org    12              6               35.443/40.502/70.426/10.056     33.953/41.144/85.444/14.862
tunnelbroker.net        >9              >4              39.504/46.119/73.483/10.290     32.559/63.532/222.700/62.022
So, indeed, IPv6 uses fewer hops and is overall no worse, if not slightly better, performance-wise than IPv4, even though my IPv6 is going through a tunnel.