In my previous post, I discussed our decision to make several radical technology choices in designing the new Pay4Bugs software testing service. In this article, I will discuss the decision to launch Pay4Bugs with IPv6 enabled from the beginning.
What is IPv6?
For those of you that are not familiar with IPv6, it is the next-generation addressing scheme for the Internet. Each computer connected directly to the Internet needs to have a unique address so that other computers can send data like web pages and videos to it. The current version of the Internet Protocol, IPv4, was defined over 28 years ago in 1981. It only provides for a bit over 4 billion (4,294,967,296 to be exact) addresses. That means that only 4 billion computers can be directly connected to the Internet at one time.
4 billion sounds like a lot. After all, there are only 6.7 billion people in the world. One would think (and be correct) that most of these people do not have computers and even if each human had a computer, they probably would not be online at the same time. In theory, this number should be more than enough.
So, what's the catch? I don't see the problem!
The catch is that theory is not reality. The term “computer” actually means a lot more than just PCs. Right now, many, if not most of the almost 3 billion mobile phones in use worldwide are also small computers that can go online and each need an Internet address. Most of the equipment that runs the Internet such as routers, gateways, and firewalls, are also computers that need their own address. Many digital TV cable boxes are also computers that need Internet addresses. There are also initiatives to network other things such as home appliances, security cameras, thermostats, baby monitors, etc.
Each person many have multiple if not dozens of devices that either require or could benefit from connectivity to the Internet.
Poorly allocated, IP address waste
To compound the problem, the real number of usable IPv4 addresses is much less than 4 billion as various blocks of addresses are reserved and allocation methods and technological constraints result in a lot of waste. To illustrate, the United States has over 1.3 billion IPv4 addresses with a population of only 300 million. Certain large companies and US government agencies (such as the Department of Defense) own one or more class A blocks of over 16.7 million IPv4 addresses each. In comparison, one class A block has more addresses than many other countries have in total.
Available IPv4 address space is estimated to be exhausted in about two years (as of the date of this post) as you can see by the counter below. Economists will point thatIPv4 will never run out because as the shortage increases, the price for an IPv4 address will just increase.
This is already happening. In the USA, where IPv4 addresses are still plentiful, our ISP charges $1 per month for each additional address. However, in our Guangzhou, China office, China Unicom charges 100 CNY (almost $15) per month for each IPv4 address because addresses are much more scare than in the States. At some point the price for additional IPv4 addresses will be such that many otherwise useful services will either be priced out of the market or never even have the opportunity to exist.
Use a router, stupid.
Most residential Internet Service Providers, at least in North America, only give their customers one address. Customers have figured out that if they if they buy a router that uses a technology called NAT (Network Address Translation) that assigns non-unique addresses to all of the computers in the house and use the one unique Internet address provided by theISP as its own address. With this configuration, browsing websites, sending emails and much other general Internet usage works pretty well.
Great! So we all need NAT! Address problem solved!
Wrong! NAT fails as a solution to this problem anytime another computer on the Internet needs to talk to your computer that is connected to a NAT router. This happens anytime you make or receive aVoIP call or video call using something like Skype . Other computers on the Internet have no way to know which computers are behind your NAT router or how to send messages to them unless those computers tell them first.
A good analogy is to imagine your name is Joe and you have a cousin named Jane Smith who works at The Great Big Widget Company. If you send a letter addressed “Attn: Joe’s Cousin, The Great Big Widget Company, 123 Main Street,Anytown , USA,” your message would have very little chance of reaching Jane. The solution would obviously to address the letter to the attention of “Jane Smith.” The problem is, the Great Big Widget Company has decided to assign employees numbers and the mail room can only look up an employee’s location in the company directory if the employee number is written on the mail. The mail clerk has no way to find out Jane’s employee number and you have no way to find out Jane’s employee number.
The NAT router is the mail room and the company directory and your cousin Jane is actually Jane’s computer. To get a better idea of complexity of the real world situation, imagine Jane also frequently works at other companies (she’s a consultant) where they assign her a different employee number that changes periodically. She also is not told which company she is working at each day and is forbidden from asking the company. Her only way to find out where she is working is to send a letter to you and ask you to see which company’s mailroom stamped the envelope. This just like a computer behind a NAT router has no idea which address the ISP has assigned to the router and no way to directly find out by asking the router. It can only send request to some other computer on the Internet and ask it “Where did this come from? Where am I?”
So how does VoIP work anyways?
There are several methods to work around the problem of not being able to directly reach another computer on the Internet. In short, these methods, while they are successful much of the time, are not always successful. If you have ever had a Skype call fail or disconnect, it is more than likely the problem was caused by NAT. Perhaps your router’s address changed. Perhaps your router forgot that the unmarked data coming from your partner in the call is supposed to go to your computer.
Why do you care?
I care about this problem because our company’s namesake product, the Attigo virtual language immersion service, has to deal with the problems caused by NAT on a daily basis. In fact, a large portion of our development time was spent understanding and working around various problems caused by NAT for theVoIP component of the service.
If IPv6 was widely adopted and the IPv4 shortage problem did not exist, developing the Attigo service would have taken significantly less time. Online voice and video chat products such as Skype and Google Talk would also benefit with much high rates of success, higher quality, and lower call drop rate.
A Classic Chicken and Egg Problem
IPv6 adoption has been slow mainly because few sites of any importance are available via IPv6 with the result that customers and their ISPs have little reason to use it. I started IPv6Links.net as a hobby a few years ago to create a directory of sites available via IPv6. In the years since, most IPv6-enabled sites that have been posted to it are either blogs or other sites talking about IPv6. Few businesses beyond a few niche hosting providers have made their website available via IPv6.
At least it was that way up until recently when Google started making its properties available via IPv6 on an opt-in basis.
After our work on bringing the Attigo service to market, I decided that we would make our future products available via IPv6. My motivation is to do our small part in spurring adoption of IPv6 by at very least demonstrating that making sites available via IPv6 does not cause undue difficulty to customers and can be done with minimal additional effort on the part of development and system administration teams.
It is a decision that pretty much any business school management type or venture capital investor would criticize and shoot down in a minute as being a risky decision with little relation to the core business that adds needless complexity.
They would be right, but we did it anyways.
Let us know how it works out for you. Visit Pay4Bugs and post your website or software to be tested and while you’re at it, sign up to be a Pay4Bugs tester and earn money testing software. Drop us an email at support at pay4bugs.com or leave a comment on this blog if you for whatever reason can’t access the site. Perhaps you are one of the minority that our enabling of IPv6 on the site has breaks your access.