News about IPv4 address space exhaustion are getting more frequent these days; and more notably, people are talking in terms of months, instead of years, like it used to be. It will eventually happen, that's for sure. The beauty of countable sets.
I am pretty curious to see how this will reflect in laymen's everyday life. In general terms, I believe that IPv4 won't go away anytime soon, and most people will prefer (or be forced into) a degraded Internet experience instead of migrating to IPv6.
Blow of mercy
Actually, IPv4 "experience" has been degraded several times since its initial popularization. The address space exhaustion and its consequences are just the blow of mercy:
Once upon a time, organizations used to receive a Class C (or B) address range upon request, enough to give every computer a public IP address. Things like DNS reverse resolution still reflect this rosy epoch; delegating reverse DNS to ranges smaller than Class C is still kludgey.
Then, the typical range became something like a /29, with 8 addresses, 7 actually usable. At this point, organizations needed to use SOCKS or NAT.
Consumer-level Internet connections were even worse: just a single, non-fixed IP address. Actually, it did not make sense to give more than that to a 14.4kbps dial-up connection, but a 24Mbps ADSL gets the same lousy treatment.
This kind of connection prevents an individual (or small organization) from serving content properly; it becomes a mere consumer -- because IP is dynamic and a domain needs two DNS servers in different addresses. Some ISPs go on and block well-known ports like 25, 80 etc. as a way to "protect against viruses".
With some creativity, it *is* possible to serve content over such a connection. I used to have a penny-pinching client that had two DSL lines, a DynDNS name for each. Brazilian DNS registry could be tricked into accepting DNS names as "glue" addresses instead of hard IP numbers. Of couse, from time to time the thing derailed.
You can get a fixed-IP DSL, for a premium. Some ISPs offer "enterprise" DSLs with two (oooh!) fixed IPs. So nice from them.
Many people like to pose as pragmatic, and say that having a single, dynamic IP is perfectly ok, as long it is a public IP. But it is not ok; this has been shaping our Internet experience, generally for the worse, and pushing protocol development to non-ideal directions.
For example, the SIP protocol is a victim of such a 'degraded' Internet. While it is widely used, it is used in a different context than originally conceived, and there is always the "SIP proxy" element. The original SIP conception was a completely distributed VoIP approach. SIP has its share of shortcomings, but would have worked beautifully over IPv6.
The over-use of HTTP and under-use of alternative transport protocols (like SCTP and DCCP instead of TCP and UDP) are symptoms of the same disease.
Third-class citizen
In a sense, people with a single, dynamic IP address connection are second-class Internet citizens. But it can be worse.
I am not familiar about Internet status in "third world". I know about Brazil. Many areas, including reasonably well-developed urban areas, don't have ADSL or even 3G. Many people resort to 3G, EDGE, or even dial-up. In the other hand, enterprise-level Internet connection is available basically everywhere -- if you pay the price.
So, there are many small ISPs that rent an expensive enterprise-level link and resell the band in retail. Some of them actually get public IP ranges in behalf of customers, but most of them just put them behind a NAT.
Some of them even use consumer-level DSLs as uplinks. I used to have a client like this; it was a nightmare. The guy poked me to set-up Linux load-balancing to use 3 DSLs as uplinks. It never worked well, because many Web systems don't like a client that keeps changing IP every access.
This kind of customer can't be reached directly from the Internet; it is the third-class citizen of the Web. Of course, it is better than nothing, and most useful services today use HTTP anyway.
With IPv4 address exhaustion, we can expect that this connectivity class is going to grow instead of shrink. The telecoms themselves will begin to offer it, as a 'cheap' alternative -- actually it will cost as much as current broadband, and users that need a public IP will pay extra.
After all, it is not *that* bad to be a 3rd class citizen. Most of us already exercise this in our homes -- we have one public IP address but live behind NAT all the time. The only difference is that we can pinch 'NAT holes', something that does not scale when hundreds or thousands of users are behind each public IP.
Make lemonade from lemons
ISP-level NAT is quite inevitable. People need Internet access, no matter how technically degraded it is, as long as HTTP access works. But there is an upside: it becomes a selling point for IPv6.
Either by convention or by law, "third-class citizen" plans should include full IPv6 access. If the user does not need IPv6, or can not afford new equipments or operating systems that support it well, that's fine. In the other hand, if the user wants or needs a first-class connectivity, it goes IPv6. (Configuration skills should not be a problem, since IPv6 auto-configuration works way better than IPv4 equivalents.)
IPv6 lacks a 'killer app', nobody will migrate to IPv6 just to use HTTP, no major service like Google will disconnect itself from IPv4. Piracy may become such a thing :) P2P already works better over IPv6, and the performance difference increases if NAT does not support "hole pinching" (and ISP-level NAT normally does not support this).
Or perhaps, things like cell phones that spend far less energy because they are pushed Twits or IM messages (instead of having to poll) would take the layman's attention towards IPv6. Or VoIP systems that never go down as Skype did some days ago. True multicasting yielding huge backbone bandwidth savings. And so on.
3rd-level netcitizens could still have access to 'advanced' services, through different ways. Large ISPs can make deals with services like Skype to run nodes inside the NATed network.
The white darf cools down: NAT limits
Even the third-class connection pool will eventually 'exhaust'. It will take more time, and this exhaustion is withheld by relatively primitive protocols (like HTTP), and the exhaustion will not happen 'at once', it will take place as increasing unreliability.
The rationale is this: a NAT router maps connections from different machines to TCP (or UDP) ports of its own. Port number is 16 bits, so NAT can be seen as a crude way to extend the address range from 32 bits to 48 bits (32+16).
It is a huge boost, but it does not allow us to put 65000 machines behind a single NAT. Each connection from each machine takes a NAT port, so we have something like 600 machines x 100 simultaneous connections. There are other details like expiration timeouts that further reduce the port availability.
If you take into consideration the growth rate of connected devices, the number of connections that each one makes etc. it is clear that even ISP-level NAT trick is not forever.
The failure mode is different, however, since port numbers are eventually returned to free pool within each NAT. A persistent user would be able to access some site just by retrying until NAT router can map his connection. Then we could create a distinction between 3rd-level connections that are served by NAT with some kind of priority, and 4rd-level citizens that would have to wait till dawn to try to access Orkut.
I hope to be IPv6-only by then, but I bet that many, many users around the world will be given a 3rd or 4th-class netcitizenship in the decades to come :)