Classless Inter-Domain Routing (CIDR) using variable length subnet masks (VLSM) was created to allow for greater flexibility with routed IP networks, to allow for the accelerating expansion of the Internet. CIDR is defined in RFC 1519.
IPv4 IP addresses are 32 bits long and are separated into two parts, the network address and a host address. Historically, IP address 'class' definitions stipulated divisions based on classes with 8, 16, or 24 bit network address fields (known as classes A, B and C respectively). The class, and hence the length of the subnet mask could always be determined from the most significant three bits of the IP address. Without any other way of specifying the length of a subnet mask, routing protocols necessarily used the class of the IP address specified in route advertisements to determine the size of the routing prefixes to be set up in the routing tables.
A variable length subnet mask is a means of allocating IP addressing resources to subnets according to their individual need rather than some general network-wide rule. So therefore the network/host division can occur at any bit boundary in the address. Because the normal class distinctions are ignored, the new system was called classless routing. This led to the original system being called, by back-formation, classful routing. Classless routing came into use in the mid 1990s due to the inefficiences of the classful system.
Another purpose of CIDR was the possibility of routing prefix aggregation: for example, sixteen contiguous /24 networks could now be aggregated together, and advertised to the outside world as a single /20 route. Two contiguous /20s could then be aggregated to a /19, and so forth. This allowed a significant reduction in the number of routes that had to be advertised over the Internet, preventing 'routing table explosion' from overwhelm routers and stopping the Internet from expanding further.
Nowadays most ISPs on the public Internet will not route anything smaller than a /19 prefix, effectively preventing small networks from obtaining full public Internet routing without going through a routing aggregator such as an ISP.
The standard notation for a CIDR block includes a network number (padded on the right with zero bits up to 4 octets for IPv4, and a variable length set of up to 8 16-bit hexadecimal fields for IPv6), and a prefix length, in bits, defining the size of the network in question.
For example : (a more complete Ipv4 subnetting reference table is available)
- 192.168.0.0/24 represents the IPv4 addresses 192.168.0.0 through 192.168.0.255 inclusive, with 192.168.0.255 being the broadcast address for the network.
- 192.168.0.0/22 represents the IPv4 addresses 192.168.0.0 through 192.168.3.255 inclusive, with 192.168.3.255 being the broadcast address for the network.
- 2002:C0A8::/48 represents the IPv6 addresses 2002:C0A8:0:0:0:0:0:0 through 2002:C0A8:0:FFFF:FFFF:FFFF:FFFF:FFFF, inclusive.