Why Don't RIPv1 and IGRP Support Variable-Length Subnet Mask?


The ability to specify a different subnet mask for the same network number on different subnets is called Variable-Length Subnet Mask (VLSM). RIPv1 and IGRP are classful protocols and are incapable of carrying subnet mask information in their updates. Before RIPv1 or IGRP sends out an update, it performs a check against the subnet mask of the network that is about to be advertised and, in case of VLSM, the subnet gets dropped.

Let's look at an example. In the figure below, Router 1 has three subnets with two different masks (/24 and /30).

Router 1 goes through the following steps before sending an update to Router 2. These steps are explained in more detail in Behavior of RIP and IGRP When Sending or Receiving Updates.

  • First Router 1 checks to see whether 131.108.5.0/24 is part of the same major net as 131.108.6.0/30, which is the network assigned to the interface that will be sourcing the update.
  • It is, and now Router 1 checks whether 131.108.5.0 has the same subnet mask as 131.108.6.0/30.
  • Since it doesn't, Router 1 drops the network, and doesn't advertise the route.
  • Router 1 now checks whether 131.108.7.0/30 is part of the same major net as 131.108.6.0/30, which is the network assigned to the interface that will be sourcing the update.
  • It is, and now Router 1 checks whether 131.108.7.0/30 has the same subnet mask as 131.108.6.0/30.
  • Since it does, Router 1 advertises the network.

The above checks determined that Router 1 only includes 131.108.7.0 in its update that is sent to Router 2. Using the debug ip rip command, we can actually see the update sent by Router 1. It looks like this:

RIP: sending v1 update to 255.255.255.255 via Serial0 (131.108.6.2)
subnet 131.108.7.0, metric 1

Notice that in the output above only one subnet is included in the update. This results in the following entry in Router 2's routing table, displayed using the show ip route command.

131.108.0.0/30 is subnetted, 3 subnets
R 131.108.7.0

[120/1] via 131.108.6.2, 00:00:08, Serial0
C 131.108.6.0 is directly connected, Serial0
C 131.108.2.0 is directly connected, Ethernet0

To avoid having subnets eliminated from routing updates, either use the same subnet mask over the entire RIPv1 network or use static routes for networks with different subnet masks.