CIDERとは
CIDRとは「Classless Inter-Domain Routing」の略で、サイダーとも呼ばれています。
クラスという境界をなくして、自由にIPアドレスを割り振ることをクラスレスアドレッシングと言います。CIDRとは、クラスレスアドレッシング環境下でルーティングを行えるようにする仕組みです。
もともと、IPアドレスは、クラスA、クラスB、クラスCでクラス分けをし、ネットワークアドレス部とホストアドレス部を8ビット単位で区切ったアドレス体系で運用されていました。
最初からサブネットマスクが決まっている方式です。
- クラスAなら「255.0.0.0」
- クラスBなら「255.255.0.0」
- クラスCなら「255.255.255.0」
これをクラスフルアドレッシングといいます。
このアドレッシング方法では、各ネットワークのお大きさは、以下のように決まってしまいます。
- クラスA・・・16,777,214(224-2)
- クラスB・・・65,534(216-2)
- クラスC・・・254(28-2)
特にクラスA、クラスBでは、サイズが大きく、適用するネットワークに対して大きすぎるケースが出てきます。また、小さいとはいえ、クラスCでも、大きすぎるケースが出てきます。特にWANリンクでは顕著です。ポイントツーポイント接続のWANリンクでは、2つのIPアドレスしか使用しません。
そこで、サブネットマスクという仕組み登場します。これにより、1つのネットワークを小さく分割して運用できるようになります。この仕組みにより、無駄に浪費するIPアドレスを少なくすることができます。
また、大きすぎるというケースだけでなく、小さすぎるというケースもあります。例えば、クラスCでは、1つのネットワークに付き254個のIPアドレスしか使えません。
ホスト数が254台以上のネットワークでは使用することができないのです。そこで、クラスBのアドレスを使用したいところですが、IPアドレスは、不足しており、クラスBのIPアドレスを取得するのは困難です。
そこで、下の図を見て下さい。クラスCのアドレスを下の図のようにネットワークアドレスを24bitから23bitにすれば、ホストアドレスは510個(29-2)にすることができます。

また、下図のようにネットワークアドレスを24bitから、22bitにすれば1,022個(210-2)と増えていきます。

このように、クラスという境界をなくすことで、自由にアドレスを割り振ることで、ネットワークのサイズに合ったアドレスを割り当てることができます。
このアドレッシング方式のことをクラスレスアドレッシングといい、このクラスレスで割り当てられたネットワークにおいて、ルーティングを可能にする概念がCIDRです。
クラスフルルーティングの問題点
ここでは、クラスフルルーティングの問題点について説明していきます。
IPアドレスの浪費
クラスフルルーティングは、クラスフルなアドレスでしか正しくルーティングを行うことができません。
そのため、各ネットワークへは、ネットワークアドレス部とホストアドレス部を8ビット単位で区切ったクラスフルなアドレスしか割り当てることができません。
つまり、適用するネットワークに対して適切なサイズではないアドレスを割り当てることになります。例えば、下の図のようにWANリンクにクラスCのIPアドレスを割り当てたとします。

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

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

- 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の場合、等コストのパスが複数ある場合は、ロードバランスが行われます。つまり、この時点で、正しくルーティングが行えないことを意味します。
このように、クラスフルルーティングには、限界があります。
CIDRというクラスの境界をなくすことで、自由にIPアドレスを割り当てること、クラスレスアドレッシング環境下でルーティングを行えるようにする仕組みがいかに重要であるかが理解できたかと思います。
