The Next Version of the Internet Protocol - IPv6 - Page 2
Part 2: The Trouble with IPv4
The Trouble with IPv4
Figure 1 shows how the IPv4 address space is allocated: as you can see, the original architecture allocated fully half of all IPv4 addresses to 126 Class A networks. Originally intended for very, very large networks maintained at the national level (or multinational, for corporations), quite a few Class A addresses were snatchedup by net-savvy organizations such as MIT and Carnegie Mellon University early on. Each Class A network is capable of handling as many as 16 million nodes, so since few organizations with Class A network addresses have that many nodes much of that address space is wasted.
Figure 1: (from RFC 791)
IPv4 started slowly strangling on this structure by the mid 1990s even as corporations began embracing TCP/IP and the Internet in earnest. Each new IP network address assigned meant some more addresses taken out of circulation. Even though there are still plenty of addresses left, that is only due to the implementation of a series of stopgap measures, strict rationing, and better utilization of existing addresses.
The IETF and the IANA (the Internet Assigned Number Authority, in the process of being superceded by the Internet Corporation for Assigned Names and Numbers, ICANN) used several approaches to extending IPv4's lifetime while IPv6 was being readied. These steps can be characterized as rationing, repackaging, recycling, and replacing.
First, rationing. This one is easy: the process of getting a Class B or Class A network address was tightened up. And Class C addresses were distributed by ISPs, who get a limited number of addresses and need to take care that they are not wasted unnecessarily. Class B addresses were very hard to come by as early as 1990 or so, and Class A addresses virtually impossible. By holding onto the Class A and B network addresses, it is now possible to break them up and redistribute them in smaller chunks.
Next, repackaging. Classless InterDomain Routing (CIDR) does away with the class system, allowing ISPs to allocate groups of contiguous Class C addresses as a single route. The alternative would be to have routers treat each individual Class C address as a separate route, resulting in a nightmarishly large routing table. Instead of Class A, B, or C, routed addresses are expressed along with a number indicating how many bits of the network address is to be treated as the route. For example, 256 Class C addresses could be aggregated into a single route by indicating that 16 bits of the address is to be treated as the route (the same as for a Class B address). In this way, an ISP or other entity that administers CIDR networks can handle the routing from the Internet.
Address space can be recycled, sort of, in two ways: first, Class A and B addresses that have not yet been assigned can be divided up and allocated to smaller organizations. Where the CIDR approach is sometimes referred to as "supernetting", this approach simply breaks the larger networks into subnets which can be routed by some entity handling routing for the entire (undivided) network address.
Another approach is to use the reserved network addresses, sometimes called Network 10, to do network address translation, or NAT. RFC 1918 sets aside the network address ranges:10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
to be used for private intranets. These addresses provide one Class A, 16 Class B, and 255 Class C network addresses to be used by anyone who wants to, as long as they don't attempt to forward packets to or from those networks on the global Internet.
The last option is to replace IPv4 addresses entirely. This is the IPv6 option. Each of these other approaches pushes back the day when IPv4 will no longer work, but does not relieve the stress.