2013/01/20

CIDR and VLSM

For a while it was very hard for me to understand what exactly is the difference between CIDR and VLSM. And since it took time to figure it out, i decided to post about it in a way how i would understand it myself.

Classless Inter-Domain Routing is a method to allocate IP addresses into multiple logical networks. You may know CIDR for its notation, for example 192.168.0.0 with mask 255.255.255.0 would be notated as 192.168.0.0/24.

CIDR has a 33 blocks of subnets, ranging from 0 to 32. Which makes subnetting a lot more efficient than classful subnetting. CIDR doesn't cover all possible subnet masks. Check the CIDR block table from wikipedia page

What if i want to use subnet mask of 255.255.255.253, which doesn't have CIDR notation ?

This is still indeed a valid subnet mask, but using it is discouraged. There might be incompatibility with some routing hardware depending how they are parsing their bits. In CIDR bits are expected to be 1's from left to right.

Where does the /24 come from ?

24 presents the amount of "turned on" bits in subnet mask's binary format. IPv4 address is a 32bit, so every octet in the IP address has 8 bit's. Every bit in octet has a value which you can either turn on or off.

1286432168421
11111111

If every bit is turned on, result would be 255

Consider this IPv4 addreess:

11000000 10100000 00001010 01100101

First octet: 11000000: 128 + 64 = 192
Second octet: 10100000: 128 + 32 = 168
Third octet: 00001010: 8 + 2 = 10
Fourth octet: 01100101: 64 + 32 + 4 + 1 = 100

Subnet mask 255.255.255.0 in binary would look like this:

11111111 11111111 11111111 00000000

It has 24 "turned on" bits and 8 "turned off" bits, so thats /24

255.255.255.255.192 in the other hand would look like this:

11111111 11111111 11111111 1100000

It has 26 one's and 6 zeroes, so this would be notated as /26

Then what is VLSM ?

VLSM stand for Variable Lenght Subnetmask. Name kind of gives it away, so for example: instead of splitting your 192.168.0.0/24 network into 4 same size pieces, you can split it into multiple variable sized networks.

So if i would want to hack 192.168.0.0/24 into 4 pieces it would look like this:

Network A: 192.168.0.0/26 (64 hosts)
Network B: 192.168.0.64/26 (64 hosts)
Network C: 192.168.0.128/26 (64 hosts)
Network D: 192.168.0.192/26 (64 hosts)

So now all networks can have total of 64 hosts (minus network and broadcast).

But what if my network A would have demand for more hosts, and 192.168.0.0/24 would be the only IP block that we can spare to allocate ?

Let's pretend that B and C networks would need only half of the currently allocated IP's. So instead of 64 hosts they would have 32 hosts. We could mask these networks with 255.255.255.224 which is equivalent to /27, and has 32 hosts. And now we have 64 IP's unallocated which we can lend to network A!

Using VLSM, we split the network more logically to serve all network better for their needs, our new networks would look like this:

Network A: 192.168.0.0/25 (128 hosts)
Network B: 192.168.0.128/27 (32 hosts)
Network C: 192.168.0.160/27 (32 hosts)
Network D: 192.168.0.192/26 (64 hosts)