VLSMとクラスフルルーティングプロトコル
ルーティングプロトコルには、VLSMに対応していないクラスフルルーティングプロトコルと、VLSMに対応しているクラスレスルーティングプロトコルがあります。
クラスフルルーティングプロトコル・・・RIPv1、IGRP
クラスレスルーティングプロトコル・・・RIPv2、EIGRP、OSPF
クラスレスルーティングプロトコルは、ルーティングアップデートの中にサブネットマスクの情報を含めて送信するためVLSM の使用をサポートしています。
しかし、RIPv1などのクラスフルルーティングプロトコルでは、ルーティング アップデートの中にサブネットマスクの情報が含まれないため、連続サブネットを配置している場合を除いて、正しくルーティングを行うことができません。
クラスフルルーティングプロトコルでは、クラスフルなネットワークアドレスでしか、正しくルーティングを行うことができません。
そのため、各ネットワークへは、ネットワークアドレス部とホストアドレス部を8ビット単位で区切ったクラスフルなアドレスしか割り当てることが基本となります。
つまり、適用するネットワークに対して適切なサイズではないアドレスを割り当てることとなってしまうのです。
例えば、下の図のようにWANリンクにクラスCのIPアドレスを割り当てたとします。

クラスCで使用可能なアドレス数は、254個です。WANリンクで2個のIPアドレスしか使用しないため、252個のIPアドレスを浪費してしまうことになります。
このように、クラスフルなネットワークアドレスでしかルーティングできない状況では、かなりの量のIPアドレスが浪費されてしまうことになります。
ルーティングテーブルのサイズの問題
大規模なネットワークになると、ルータは、膨大な数のネットワークを学習することになります。その為、ルーティングテーブル上のエントリー数は膨大なものとなってしまいます。インターネット上に存在するネットワークは、数十万ネットワークとも言われています。
ルーティングテーブルのサイズが大きくなると、ルータのCPUやメモリに負担がかかりオーバヘッドが大きくなってしまいます。受信するパケットの一つ一つに対して、この膨大なエントリーの中から探し出すのは大変、負荷の高い作業になってしまいます。
クラスフルルーティングには限界があるということです。複数のネットワークを一つにまとめることで、ルーティングテーブルサイズを小さくしてCPUやメモリへの負担を軽減させる必要があります。これを経路集約といいます。
この経路集約環境でルーティングを可能にするのがCIDRです。
VLSMとクラスフルルーティングの問題点
VLSM環境下において、例えば、不連続サブネットを配置している場合は、正しくルーティングが行われません。

クラスフル環境下で、ルーティングを行うと制限が多くなります。例えば、送信するインタフェースと異なるネットワークの経路情報は、クラスフルなネットワークアドレスとして隣接ルータにアップデートが送信されます。
その状況を、下図を用いて、RIPv1をルーティングプロトコルとして使用しているものとして説明していきます。

- Router_Aは、Router_Bに「172.16.0.0」を通知します。
- Router_Cは、Router_Bに「172.16.0.0」を通知します。
上の図では、Router_Bにとって「172.16.1.0/24」、「172.16.2.0/24」は、同じ距離なのでコストが同じになります。その結果、Router_B上のルーティングテーブルには、右向きの「172.16.0.0/16」ルートと左向きの「172.16.0.0/16」ルートが載ることになります。
RIPの場合、等コストのパスが複数ある場合は、ロードバランスが行われます。つまり、この時点で、正しくルーティングが行えないことを意味します。
IGRPにしても同様の結果となります。それは、シリアルリンクの帯域幅が同じであるならば、「172.16.0.0」へのコストが同じになるからです。
このように、クラスフルルーティングには、限界があります。
VLSM環境下では、クラスレスルーティングプロトコルを使用してネットワークを構築する必要があることが、理解できたかと思います。