Skip to content
Back to blog

How CIDR Slowed IPv4 Exhaustion and Routing Table Growth

5 min read
How CIDR Slowed IPv4 Exhaustion and Routing Table Growth

An address such as 192.168.1.0/24 looks like a compact configuration value, but the number after the slash was not invented merely for calculator convenience. It belongs to a reform that helped the internet survive its own growth. By the early 1990s, engineers needed both to allocate IPv4 space more efficiently and to restrain the global routing table, and those two problems relied on different properties of the same system.

Classes worked while the internet was small

In RFC 791, published in 1981, IPv4 networks had fixed formats. A class A network used 7 bits for its network number and 24 for its local part, class B used 14 and 16 bits respectively, and class C used 21 and 8. One class A block therefore contained 16,777,216 addresses, a class B block contained 65,536, and a class C block only 256.

That design left enormous gaps between the available sizes. A site with roughly 300 hosts had already outgrown one class C network. It could operate several class C networks, adding routing entries and operational complexity, or try to obtain a class B block in which most of the 65,536 addresses would remain unused. Address space was consumed unevenly while routers had to remember an increasing number of individual routes.

The scale of the second problem is visible in RFC 1519. In January 1992, the default-free routing table held about 4,700 entries; by December it had grown to roughly 8,500. The document treated depletion of class B network numbers and routing information overload as immediate threats, with exhaustion of the entire IPv4 space following as a longer-term problem.

CIDR addressed two problems with two mechanisms

In September 1993, the IETF published RFC 1518 on address allocation and aggregation architecture, along with RFC 1519 on Classless Inter-Domain Routing. Instead of choosing only among classes A, B, and C, a network could now be described by an address and prefix length. Prefixes such as /13, /21, or /27 gained the same systematic meaning as the familiar /8, /16, and /24.

For address allocation, this allowed a block to match demand more closely. An IPv4 prefix /p leaves 32 - p variable bits, so the block contains 2^(32 - p) addresses. CIDR does not, however, let an operator request literally any number: the size is always a power of two, and the block must start on its prefix boundary. A conventional network for 300 hosts can use a /23, which contains 512 addresses in total and 510 after network and broadcast are excluded. That is much closer to the requirement than an entire class B block.

The second mechanism is route aggregation. If sixteen adjacent networks from 10.24.0.0/24 through 10.24.15.0/24 share the same path and routing policy, an organization can represent them internally with the single route 10.24.0.0/20. Their first 20 bits are identical, while the next four bits run from 0000 through 1111. An upstream router needs one summary route instead of sixteen details.

This example uses private address space and applies only to internal routing. RFC 1918 explicitly says that such routes must not propagate between enterprises. Global aggregation follows the same bitwise rule, but it requires aligned public blocks with common reachability and policy. If part of a block moves to another provider, a more specific route is still needed, so CIDR slowed routing-table growth rather than stopping it.

The 192.0.2.0/24 network splits into four /26 subnets while sixteen internal 10.24.0.0/24 routes aggregate into 10.24.0.0/20

What a prefix length actually means

A /24 leaves 8 bits for addresses and therefore contains 256 values. A /26 leaves 6 bits and contains 64. In conventional IPv4 subnets through /30, the first value identifies the network and the last is broadcast, leading to the familiar counts of 254 usable addresses in a /24 and 62 in a /26.

The edge of this arithmetic has important special cases. RFC 3021 permits both addresses of a /31 on a point-to-point link when both endpoints support that convention. A /32 identifies exactly one IPv4 address and is commonly used as a host route. At the other extreme, /0 covers the entire IPv4 address space and serves as the default route, but that does not mean every address inside it is assignable or globally routable.

Private addresses and NAT are not part of CIDR

In 1996, RFC 1918 reserved three ranges for private networks: 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16. Independent homes and organizations can reuse them, while routes to those addresses must not be carried across the public internet.

NAT is often discussed beside these ranges because address translation lets many internal devices reach external networks through a smaller set of public addresses. It is nevertheless a separate mechanism whose early design appeared in RFC 1631 in 1994. CIDR, private addressing, and NAT collectively reduced pressure on IPv4, but attributing the whole result to one RFC would be inaccurate.

Exhaustion happened in stages

The phrase “IPv4 ran out” compresses several different events. IANA distributes large blocks to regional internet registries, which allocate smaller blocks to network operators. There can therefore be no single exhaustion date:

  • On 3 February 2011, IANA assigned its final five free /8 blocks, one to each regional registry.
  • On 15 April 2011, APNIC entered its final /8 policy and sharply limited new allocations.
  • On 14 September 2012, the RIPE NCC began allocating from its final /8; on 25 November 2019, it announced depletion of its remaining free pool.
  • On 10 June 2014, LACNIC entered a restricted allocation phase; on 19 August 2020, it reported assigning its last available reserve block.
  • On 24 September 2015, ARIN announced depletion of its IPv4 free pool.
  • According to AFRINIC's exhaustion timeline, the region entered its first phase on 31 March 2017 and its second, more restrictive phase on 13 January 2020.

These milestones changed allocation policy; they did not switch off addresses already in use. Operators continue to use existing blocks, obtain resources through transfers, recover or subdivide smaller ranges, and deploy IPv6. The current base IPv6 specification, RFC 8200, uses 128-bit addresses, but migration requires support across every part of a path. IPv4, dual stack, and translation mechanisms consequently continue to coexist.

What Subnet Calculator reports

The Subnet Calculator performs its arithmetic locally in the browser. For IPv4, it reports the network address, broadcast, first and last host addresses, netmask, wildcard, total and usable counts, and a binary representation with the prefix boundary. For a /31, it counts both addresses as usable and omits broadcast; for a /32, it returns one address.

In IPv6 mode, the calculator accepts conventional hexadecimal notation with a prefix from /0 through /128. It computes the first and last address in the block, presents compressed and expanded forms, and reports the host-bit count and exact range size. IPv6 has no broadcast equivalent to IPv4, so no broadcast field appears.

The calculator does not decide whether a selected public block is actually obtainable, whether an address belongs to a special-purpose range, or whether a route is valid in a particular network. It also does not check routing policy, overlapping subnets, or the usual IPv6 choice of /64 for a LAN segment. Its narrower job is more useful: it shows the exact boundaries of a prefix so they can be verified before configuring DHCP, a firewall, or a router.

To see the arithmetic directly, enter 192.0.2.130/26. The address belongs to 192.0.2.128/26, whose range ends at 192.0.2.191; its conventional host addresses run from 192.0.2.129 through 192.0.2.190. Then change the prefix to /31 and compare the result. The two values become point-to-point endpoint addresses, and the broadcast field disappears.

Frequently asked questions

What is CIDR and why was it invented?

CIDR, or Classless Inter-Domain Routing, arrived in 1993 as an answer to two problems at once: wasteful IPv4 allocation and rapid growth of the global routing table. It replaced fixed network classes with variable-length prefixes and made it possible to aggregate suitable neighboring routes.

Can CIDR create a block of any size?

No. A prefix can have any length from /0 through /32, but the block always contains a power-of-two number of addresses and must begin on the matching prefix boundary. For 300 conventional IPv4 hosts, a /23 is suitable: it contains 512 total addresses and 510 after excluding network and broadcast.

What does 192.168.1.0/24 mean?

The number after the slash is the network prefix length. In a /24, the first 24 bits identify the network and the remaining 8 vary within the block, producing 256 addresses. A conventional subnet reserves two of them for network and broadcast, while /31 and /32 follow separate rules.

Why does a /31 have no network and broadcast address?

RFC 3021 permits both addresses in a /31 to identify the endpoints of a point-to-point link, where there are exactly two parties and broadcast is unnecessary. This halves the address cost compared with a /30, but it should be used only when both endpoints support the convention.

Are RFC 1918 and NAT part of CIDR?

No. CIDR defines classless addressing and route aggregation, RFC 1918 defines private IPv4 ranges, and NAT translates addresses at a network boundary. They are often deployed together, but they solve different problems and were specified in different documents.

Why does the internet still work after free IPv4 exhaustion?

Exhaustion means a regional registry can no longer make ordinary large allocations from its former free pool. Previously allocated addresses did not disappear, and networks can also use transfers, small recovered blocks, private addressing with NAT, and IPv6 deployment.

Related Articles