Linux Kernel Allows 0.0.0.0/8 as a Valid Address Range

The Linux kernel team announced a patch to allow 0.0.0.0/8 as a valid address range. The primary goal is to use this 0/8 as a global unicast as this address is still unused except the 0.0.0.0. The patch will allow 16m new IPv4 addresses to appear within a box or on the wire.

According to a blog post, written by Dave Taht, director of the Make-Wifi-Fast and committed by David Stephen Miller, an American software developer mentions that the use of 0.0.0.0/8 has been prohibited since the beginning due to two main issues.

Why the use of 0.0.0.0/8 was prohibited until now?

  1. An interoperability problem with BSD 4.2 in 1984, which was later fixed in BSD 4.3 in 1986. Since then, BSD 4.2 has been retired.
  2. The addresses of the form 0.x.y.z were originally defined as a source address in an ICMP datagram only. They indicate “node number x.y.z on this IPv4 network.” Nodes help them know their address on their local network but knowing their network prefix wasn’t possible, know more here.

The use of 0.x.y.z was later revoked in RFC1122. The reason was — the original ICMP-based mechanism for learning the network prefix wasn’t working on many networks such as Ethernet. This is due to the longer addresses that couldn’t fit into the 24 node number bits.

Modern networks use reverse ARP, BOOTP or DHCP to find their 32-bit address and CIDR netmask. 0.x.y.z has had a total of 16,777,215 addresses left unused and reserved for future use in 0.0.0.0/8 space.

If you are unaware, whole the discussion of allowing these IP Addresses was started during early this year at NetDevConf 2019, the technical conference on Linux Networking.

The conference was held from March 20th to 22nd, 2019 in Prague, Czech Republic. One of the sessions, “Potential IPv4 Unicast Expansions”, was conducted by Dave Taht, along with John Gilmore, and Paul Wouters.

Also Read: Linux 5.1 Released with Memory and Security Improvements

Patch code for 0.0.0.0/8 for Linux:

Linux code for patch

As the majority of Internet client nodes don’t have IPv6 addresses yet, service sites still need IPv4 addresses for everything. These addresses now cost around USD 15 – 20 apiece (times the size of your network) and the price keeps rising.

Lastly, users have a mixed reaction to this announcement. They assume these addresses would be unassigned forever.

A user explained the difference between the address ranges in a post, “0.0.0.0/8 – Addresses in this block refer to source hosts on ‘this’ network. Address 0.0.0.0/32 may be used as a source address for this host on this network; other addresses within 0.0.0.0/8 may be used to refer to specified hosts on this network.”

A few people also mentioned that for most business, IPv6 is still an unnecessary headache.

1 thought on “Linux Kernel Allows 0.0.0.0/8 as a Valid Address Range”

  1. IPv6 has been around for years. Why don’t some people get with the
    program, instead of coming up with hacks to get around the address
    shortage. Even with this block, there still won’t be enough IPv4
    addresses just for mobile devices, let alone everything else. The
    longer people take to move to IPv6, the worse the problem is going to
    get. By comparison, on IPv6, the smallest address block, /64 provides
    as many addresses as the entire IPv4 address space squared. I get 256
    of those /64s from my ISP. Some ISPs provide 65K of them to each
    customer. Why are we wasting our time trying to squeeze more life out
    of something that should have been retired years ago? Incidentally,
    this block represents less than 0.4% of the IPv4 address space. Will it
    really make a difference?

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.