In episode 16 of Ben Alexander and John Chidgey's excellent Pragmatic podcast, the hosts touched upon the unfortunate tendency of organizations & individuals to underanticipate the scale of future demands upon their designed technology.
Examples of this phenomenon abound:
- The North American PSTN seemed like a vast address space at the time of its inception, and yet I've been through at least one extension in my life, as fax machines and mobile phones consumed far more telephone numbers than was anticipated.
- "640k [of computer memory] ought to be enough for anybody" - as famously attributed to Bill Gates1.
- The ubiquitous Intel x862 CPU architecture use 32-bits for addressing locations in system memory; this imposes a hard theoretical 4GiB limit on memory size, which is meager by 2014 standards.
- IPv4, which uses 32-bits to assign IP addresses (e.g. of the form
18.104.22.168) to devices on the public Internet is insufficiently large of an address space to accommodate all future computing devices, and the world will need to transition3 to IPv6 at some point.
At some point, progress causes us to run into the limits imposed by these upper boundaries. John referred to this phenomenon as "hitting the wall", and casted it as an inevitability for any technology.
I agree wholeheartedly, but one with one caveat. I know that history (and John Chidgey) are not on my side here4, but I'm going to go on record with the following postulate: once we finally switch to it, IPv6 will be an unreachable wall; i.e. it will be sufficient indefinitely as an address space for Internet routing. That is to say - a limit exists, but humanity won't be able to reach it.
My argument for this is strictly numerical. IPv4 uses 32-bits to uniquely identify devices5 on the public Internet. TCP/IP was birthed into a world of expensive, rare mainframes - computers and Internet connections were scarce. Four billion unique IPs (i.e. 232 = 4,294,967,296) must have seemed vastly beyond sufficient at the time. Yet as I write this in early 2014, it's worth noting that China alone has 700 million active smartphones and tablets, most of which consume a IPv4 address. We're hitting the wall.
IPv6, by contrast, skips over 64 bits and uses 128-bits for addressing. This yields 2128 possible addresses: an unfathomably huge number. 2128 written in full has thirty-nine decimal digits, or can be abbreviated as 340 billion billion billion billion, if you prefer.
While I have great faith in the ability of humanity to squander a seemingly-endless resource, it is worth reflecting on the sheer scale of this number. The surface area of the Earth is 510,072,000 km2, or, less usefully, 5.101 × 1020 square-millimeters. 2128 is so large that each square millimeter of area on the Earth's surface could support 667,000,000,000,000,000 unique IPv6 addresses! Not in aggregate - that number of addresses exists for each and every square millimeter on the Earth, ocean and land alike!
Of course, in practice the IPv6 address space will likely not be allocated cleanly - various countries and corporations will likely receive an undeservedly large allocation; blocks may sit unused and reserved, etc. But it seems to me that no matter how poorly IPv6 is stewarded - its massive, planetary scale allows for truly indefinite room to grow. With IPv66 the wall seems, to me, to be unreachable with certainty.
(It will be especially interesting for me to read this in a decade or two.)
Both of which should give anyone pause... ↩
Clever tricks such as NAT ensure that machines in a household or business don't consume one public address each. As far as I'm aware, mobile phones on a data network always consume one public address. ↩
Unless, of course, we decide that every N2 molecule on Earth needs to be addressable! ↩