Price hikes are rare for AWS, but today, a Friday, my birthday, the cloud provider announced that it’s going to begin charging for public IPv4 addresses, by which they mean IP addresses that aren’t in RFC 1918 space.

And you know what? I’m absolutely here for it.

It may sound more than a little odd that I’m cheering for customers being charged more money for something that they’ve previously been getting for free. After all, historically only unattached Elastic IPs would cost you anything, and even they would stop costing you anything once they were attached to an instance or load balancer, assuming just one of them was attached. But you probably haven’t seen the things I’ve seen.

The scarcity of IPv4 addresses

IP addresses (v4, of course) are a scarce resource. When the layout was designed, people quite reasonably thought that just under 4.3 billion IP addresses would be sufficient for this odd-sounding internet experiment. And then the entire world got online.

In those early days, huge swaths of IP space were just given to companies who asked for it. Ford Motor Company to this day has an entire /8 allocated to them — that’s about 16.7 million addresses. The IPv6 planners, opting not to be caught by this issue a second time, designed the protocol so that there are roughly 340 trillion trillion trillion addresses.

Today, there are no more never-allocated IPv4 addresses left to allocate. Instead, companies have to buy them on the secondary market. Due to the way subnetting works, you can’t simply reclaim unused individual IPs; they need to be allocated as contiguous ranges. AWS alone has something like 80 million IP addresses. The secondary market for those IP addresses means that they’re worth billions of dollars. Azure and Google Cloud have been charging for IP addresses for a while, and this is, likewise, a good thing.

The problem with the IP address system

You might have noticed that all the major cloud providers have been urging large companies to stuff their existing applications and attendant architectures into the cloud william-nilliam (nicknames are for friends, and “willy-nilly” is no friend of mine). A natural side effect of this is that companies have, in some cases, provisioned tens or hundreds of thousands of public IP addresses for their cloud estates. This poses a problem for AWS, and by extension the rest of us.

The IP address pools are run by a collection of registries, all of whom require a document called an IP Plan that lays out the intended use case for organizations’ allocations, as well as some other data. Companies are required to “make good use” of their allocations, lest they lose them. What this means is that if AWS gains enough big enterprises that are making unfortunate use of their IP addresses, the cloud provider could lose its access to additional IP addresses on the secondary market. In other words, suddenly AWS might not be able to have some services connect directly to the IPv4 internet, which would be bad for everyone.

I want to be careful to point out that each IP address per month costs about $3.50. This is hardly burdensome unless you’re doing something psychotic with thousands of IP addresses, which is far from the common case.

That said, AWS has offered Bring Your Own IP for years at no charge and would be most pleased to help you get it set up. That way, you can explain to the IP registries why your IP address usage resembles something out of the 1980s, without affecting the rest of us who are trying to be responsible citizens of the internet.

Why raising IPv4 prices is a good thing

I am thrilled to accost AWS when it raises prices in a transparent ploy to improve or protect their margins, should I ever see them doing that. It would break the implicit contract it’s made with us as customers and would represent a sea-change in their relationship with us as a result. However, this is absolutely not an example of that misbehavior. Rather, it’s a reasonable way of ensuring the rest of us aren’t made to suffer for the poor planning of a small subset of customers, and incentivizing good IP addressing behavior for the rest of us. This brings AWS in line with Google Cloud and Azure’s pricing policies on IPv4 addresses. Frankly, the price hike is a good thing, once we navigate the rocky transition period to relearn how networking economically works in AWS.

Good work, AWS. And my condolences to all the GitHub scripts, cost management vendors, and reams of documentation both public and private that just got rendered useless by this change.