There’s a long-running joke on reddit these days, which is the use of a banana for scale. For some reason, people are randomly amused when a banana is used to confirm sizes that we already know.
Last time I looked, this isn’t part of the agreed international measurement process. That said, there is at least the US Department of Agriculture (USDA) standard for inspecting a banana.
What it does show, however, is how routinely people need to look for a reference point. It needs to be something they can grasp and visualize or at least get a general idea of the scale.
It reinforces how difficult it is to understand vast differences in scale. The USDA states that on average, a banana is 4oz, which is 0.113kg. The annual production of bananas worldwide is said to be 113,212,452 tonnes (the 1,000 kgs type of tonne).
That’s a lot of bananas, at around 9,000 bananas per tonne. I’m not sure I can picture it. A standard packing box of bananas typically contains 100, so 90 boxes is roughly a tonne, which means the worldwide production of bananas is around 10 billion boxes. You can stack 40 banana boxes on a pallet, so it’s around 254 million pallets of bananas. You can fit 20 pallets in a 40ft TEU (a standard shipping container) so this is around 12 million shipping containers. Taking a small to medium-sized container ship as about 10,000 containers, it’s around 1,000 ships.
A thousand ships are what Helen of Troy is said to have launched. So, one entire annual harvest of bananas is one Helen of Troy.
Maybe this banana thing isn’t working? Today’s post will dive into scale in the world of addressing, and there might be a need for some better points of reference.
Let’s try again.
Charles and Ray Eames ‘powers of ten’ (1977)
If you haven’t watched it yet, I strongly recommend catching up with the animated film made by the Eames in 1977.
The Eames (Charles and his partner Ray) were American designers, architects and filmmakers perhaps best known for their revolutionary design of chairs.
This film is a very simple walk through of successive powers of ten, as in multiplying by 10, to scale up (and then back down) from human-scale objects to the size of the universe, right down to the sub-atomic particles known at the time. A more recent take on this idea, which has been coded from Flash (now deprecated technology) into modern HTML, is The Scale of the Universe, which is multilingual and fully interactive.
These mechanistic models of relative scale help me enormously when it comes to understanding the size of the address spaces in IPv4 and IPv6.
For the purposes of this exercise, a handy table converting from binary scale to decimal (powers of ten) scale may help. Bear in mind, we’re going to get into some large numbers that the human brain isn’t really equipped to contextualize, but let’s give it a try.
|The number||Binary power||Decimal power (approximate)||What can you call that?||What's our banana for scale?||Prefix length (/#)|
|2||1||1||1 local network||1 host address||a /32 in IPv4 and a /128 in IPv6|
|256||8||2 and a bit||A byte, a /24||The number of IPv6 subnets a home user gets in normal assignment models||a /56, measured in /64s (256 of them, in IPv6)|
|1024||10||3 (approximately)||1k, 1 thousand||4 home subnets in IPv4||/22 (IPv4)|
|65,356||16||5 and a bit, "64 thousand, 64k"||A /16, 64k, "64 thousand"||A university network||/16 (IPv4)|
|16,777,216||24||8 and a bit "16 million"||16 million, a /8||MIT, a large ISP||/8 (IPv4)|
|4,294,967,296||32||10 "4 billion"||4 billion||The entire IPv4 address space, or half the earth's current population||0/0 (IPv4)|
|We don't have good frames of reference for what comes below, so addressing terms are useful in conversation|
|281,474,976,710,656||48||"280 million million"||A /48||The number of addresses that IPv6 address policy assumes a small or medium sized enterprise needs to run its own network||/48 (IPv6)|
|72,057,594,037,927, 936||56||17 "72 million billion"||A /56||The number of addresses that IPv6 policy assumes an ISP gives a customer, 256 /64s||/56 (IPv6)|
|18,446,744,073,709, 551,616||64||20 "18 billion billion"||A /64||How much each IPv6 subnet gets in normal assignment models. Hosts identify in the bottom /64||/64 (IPv6)|
|340,282,366,920,938, 463,463,374,607,431, 768,211,456||128||39 "18 billion billion times 18 billion billion"||A really big number||All of the IPv6 address plan||::0 (/0) in IPv6|
Table 1 — Contextualizing some key numbers used in addressing.
Alright, so we have a general idea of the kinds of numbers we’re talking about in the world of addressing. Let’s unpack them a bit.
One is a lonely number… unless you’re in IPv6
One thing? How can that be a network? You typically need two things, so they can talk to each other. If you consider one ‘bit’ an address, then one side is zero and the other side is one. In classic Internet Protocol (IP) terms you might be asking “where is the address mask?”
Actually, there isn’t one. There isn’t a broadcast address either — the address you have is the broadcast address, because whatever you say, you (and the other guy) hear it.
In IPv6, however, the logical equivalent of one thing, one host or device, is given a significantly larger amount of addresses to play in. Globally, all the Regional Internet Registries (RIRs) use the bottom 64 bits of the 128-bit address space. As this previous blog post explains, at this time, that represents less than 1/8th of all possible addresses. From that space in turn, RIRs have only used 1/32nd of the space for delegation, and significantly less than half of that is actually delegated at this time.
So one ‘host’ here, which might just be your smartphone, gets quite a bit of address space, and yes, it can talk to other parts of itself if it wants to.
This much address space is used for just one host so that all known hosts have unique values that are typically either 48 or 64-bits long at most. This means they can be encoded directly. This space is also used for randomized identity, so there are ways to use IPv6 without revealing the past life of the address.
There is a story at the heart of this, because using 64 ‘bits’ of 128 bits of an address sounds like it has burned half the bits. This is kind of true. For that 1/32nd of the 1/8th of the entire IPv6 address space in existence that is used globally, it’s been changed from a 128-bit address routing model to a 64-bit address routing model.
Most people live inside the same /24 in private space
Because of the ubiquitous use of Network Address Translation (NAT) technology, most of the world actually lives inside the same address space (for more information, see RFC 1918). Some people choose to use network 10.0.0.0/8 and a very small number use 172.16.0.0/20, which is a million-host network space.
But most domestic routers are configured to use 192.168.0.0/24 or 192.168.1.0/24, the bottom-two /24 (256 hosts) networks in the 65,536 host /16 network. There’s no good reason, it’s just how things worked out. Ubiquitous use of these networks probably comes from early Internet equipment, and the documentation around using it. Now, it’s just force of habit.
It’s worth recognizing that there is a small number of people who use a lot of this space; people who deliberately set out to have many smart devices and segment their home into different networks. It is possible in the future more people will do this, but right now, most of us don’t. We have a Wi-Fi router and we have our two to three devices per person, plus a handful of smart devices. My home with two adults has around 10 to 20 devices active at any point in time, usually the lower number.
The early-adopter advantage in the /8 and /16 world is an historical overhang
For most of the modern Internet era since 1987, the RIR community-developed address policy process has tried to limit exhaustion of IPv4. There is a small handful of entities holding large address blocks with 16 million hosts, but these have mostly now worked their way into the modern address transfer market. A small handful remain in the control of the US Department of Defense, but broadly speaking, the blocks that early adopters got, and were not using, have been identified and put into use. A larger collection remains above 240.0.0.0/4. This has 16 blocks, which are under current discussion for repurposing from ‘class E unroutable’ into a form that can be routed or at least used, if privately, by the world. The extent to which this will help things, regarding access to IPv4, is unclear.
Firstly, the time to make sure all systems can use them is possibly longer than they have a useful lifetime for, although this depends on your view of the IPv6 transition, which is currently sitting at 30% worldwide, but with interesting dynamics and variances depending on where you are in the world. Secondly, most addresses wind up in the hands of the Content Delivery Networks (CDNs) and other centrally aggregated service providers, more than in the hands of edge customers and users. So the likelihood of masses of individuals securing a slice of IPv4 is low. It is much more likely they continue to sit behind Carrier-Grade NATs (CGN) or IPv6, and that these addresses are used to provide service delivery to them from the ‘core’. Banking, finance and data delivery of all kinds find real IPv4 addresses very useful.
The entire IPv4 address space is not enough for everyone
Even if you imagine some great address reshuffling, it’s not possible to give one IPv4 address to every individual, given that the world’s population is already at 7.7 billion. There’s only enough for 4 billion people. Existing models of routing don’t make it feasible to do this, even if, say, half the people in the world was a good goal to aim for (it’s not). Routing is not to individual addresses, but rather, it is to blocks of addresses. The mechanistic parts of block-based routing (which is what BGP and prefixes are) wouldn’t allow every address to be used anyway. There’s inherent wastage in the current model. This isn’t a disaster, thanks to NAT (and CGN at scale) and IPv6. So this is not a problem, but it’s worth pausing to think about. As things stand, IPv4 can’t be considered a viable ‘global’ network address system for everyone coming online in the coming decades.
In IPv6, global address policy gives every ISP at least as much as the entire IPv4 address space
Many people struggle with the idea that community-developed global IPv6 address policy is formed in a context where half of the /128 number field is ‘wasted’ simply to ensure unique device identity. The normal model of IPv6 deployment assumes that a /64, half the bits, are used this way.
But bear in mind a few things:
- The whole world currently only operates in 1/8th of the entire address space.
- Within that 1/8th, barely 1/32nd of it has been used.
- “Used” here means it is given to an RIR, which delegates it conservatively, and has used barely half of it.
But when APNIC does delegate a block of IPv6 addresses to an ISP, what it delegates is usually enough to number all existing IPv4 recipients. They are typically given a /32. Between a /32 and the /64 subnet boundary, lies 32 bits of address space.
Nobody actually expects APNIC to densely delegate every IPv6 address (as a /64) from this space. It is expected that there will be ‘wastage’ as there is in IPv4 for convenience in managing and routing address space.
But the fact remains, no ISP has a strong case for having insufficient address space.
The APNIC community (through the community-developed policy process) has, however, recognized some compelling reasons from specific larger players, and delegates a lot more than this to a very small specific subset of the ISP sector who can demonstrate structural, national-strategic or international routing reasons to need more. An RIR (or a National Internet Registry) can delegate that with confidence that there is enough to go around.
The sparse allocation model previously discussed ensures that an equitable horizon of more addresses remains for everyone that APNIC delegates addresses to. In a worst-case scenario, somebody might have to assert two prefixes into BGP, in place of one larger one. This is not a significant burden in the context of under 100,000 active BGP-speaking Autonomous Systems, who would have, at worst, around 150,000 routes from their IPv6 holdings, compared to the 800,000+ from IPv4.
The address policy is designed to give ISPs latitude to delegate end users more address space than they actually do
APNIC typically delegates IPv6 based on a community-developed model that assumes the edge customer has two forms: The small to medium enterprise that doesn’t (for some reason) want to get its own /48, and who gets a (presumed, for sizing the ISP delegation) /48 of space from the ISP. And, the home user, or cell/mobile handset, which we model as getting up to a /56 of address space. Oddly, despite giving almost every ISP enough space to have at least 16 million customers like this, very few give out this much space to their end users.
For reasons that are not entirely clear, ISPs are sticking to giving a customer one /64, and in the case of mobile handsets, sometimes one single /128. There is no rational need for this under address conservation grounds. However, it is in the hands of the ISPs who choose how to structure their address plan. It certainly isn’t a major problem for IPv6 users, but perhaps an unfortunate consequence of current deployment technologies that seem to assume a home router only asks for one prefix from its allotment.
IPv6 as bananas: A tonne per household
So, can we use that reddit trick of using a banana to gauge scale in IPv6?
As was stated earlier, worldwide production of bananas is approximately 113,212,452 tonnes. A standard ISP receives a /32 of IPv6, modelled as 16 million /56 instances, as customers on the edge. If we consider the USDA definition of the average banana at 0.113kg, there are 148,470,938 kgs of bananas in a /56 (16 million of them), which is conveniently close to the worldwide production of bananas, in tonnes. Allowing for some wastage and people who don’t like bananas, we can give almost every household, in every ISP, the equivalent of a tonne of bananas. A tonne of bananas is about 9,000 of them, which is about 24 a day.
The views expressed by the authors of this blog are their own and do not necessarily reflect the views of APNIC. Please note a Code of Conduct applies to this blog.