Classless Inter-Domain Routing

Classless Inter-Domain Routing（CIDR、サイダー）は、インターネット上のルーターにおけるルーティングテーブルの肥大化速度を低減させるための機構であり、ISPや組織にクラスA、B、Cを全部ではなく部分的に割り当てることでIPアドレスの浪費を防ぐ機構である。CIDR記法でアドレスを記述でき、アドレスの集約的表現が可能で、アドレスブロックの委譲も容易である。
「CIDR」の読みは「サイダー」とするのが一般的である。

CIDRブロック

CIDRは原則としてビット単位のプレフィックスに基づいてIPアドレスを解釈する規格である。これによりルーティングではルーティングテーブル上の1エントリにアドレスをグループ化して格納できる。このようなアドレスのグループをCIDRブロックと呼び、IPアドレスを二進法で表したときの先頭の何ビットかが共通になっている。IPv4のCIDRブロックは、IPv4アドレスの記法と似た文法で指定される。すなわち、アドレスをドットで4つに分け、それぞれを十進で書き、その後にスラッシュ記号をつけ、さらに0から32の数を付ける。A.B.C.D/N のような形式である。ドットで4分割された部分はIPv4アドレスと同様、32ビットの数値をオクテット単位に分けたものである。スラッシュ記号の後の数値はプレフィックス長であり、アドレスで共通となる先頭のビット数を表している。特定のCIDRブロックではなく、抽象的にCIDRを話題にする場合、/20 のように後半部分だけでCIDRブロックを表すことがある。
1つのIPアドレスはCIDRブロックの一部であり、先頭のNビットがそのCIDRブロックのプレフィックスと一致している。したがって、CIDRを理解するにはIPアドレスを二進法で表す必要がある。IPv4のアドレスは32ビットと決まっているので、NビットのCIDRプレフィックスでは  ビットが一致せず、その部分で  のビットの組み合わせが存在する。すなわち、 個のIPv4アドレスが1つのNビットCIDRプレフィックスと一致する。CIDRプレフィックスが短いほど一致するアドレスは増え、長いほど一致するアドレスは少なくなる。1つのアドレスが長さの異なる複数のCIDRプレフィックスと一致する場合もある。
CIDRはIPv6アドレスでも使われるが、アドレスが長いためプレフィックス長は0から128の範囲になる。記法はほぼ同じで、IPv6アドレスの後にスラッシュとプレフィックス長を書く。

CIDRブロックの割り当て

Internet Assigned Numbers Authority (IANA) は、地域インターネットレジストリ (RIR) に対して大きなCIDRブロック（つまり短いCIDRプレフィックス）を発行する。例えば、62.0.0.0/8 には1600万以上のアドレスが含まれ、ヨーロッパのRIRである RIPE NCC が管理している。RIRはそれぞれ1つの大きな地理的領域（ヨーロッパ、北米など）を管轄しており、割り当てられたブロックを細かく分割して一般に発行している。この分割は階層的に何度か行われる。大規模なインターネットサービスプロバイダ (ISP) はRIRからCIDRブロックの割り当てを受け、それを小さいCIDRブロックに分割して加入者に割り当てる。このとき、分割する大きさは加入者のネットワーク規模によって調整する。単一のISPでインターネットと繋がっているネットワークについてIETFは、そのISPからIPアドレスのブロックをもらうことを推奨している。一方複数のISPと繋がっているネットワークの場合、適当なRIRから直接CIDRブロックをもらう。
例えば、1990年代後半に 208.130.29.33 というIPアドレスは www.freesoft.org で使っていた（既に再割り当て済み）。このアドレスには3つのCIDRプレフィックスが対応していた。208.128.0.0/11 は200万以上のアドレスをカバーする大きなCIDRブロックで、ARIN（北米のRIR）がMCIに割り当てていた。そして、バージニア州のVARである Automation Research Systems (ARS) がMCIからインターネット接続をリースしていて、208.130.28.0/22 というブロックが割り当てられていた。1000以上のデバイスにアドレスを割り当てられるブロックである。ARS は /24 ブロックを1つ、同社の一般開放しているサーバ群に割り当てていて、208.130.29.33 はそのうちの1つだった。
これらのCIDRプレフィックスはいずれもネットワークのどこかで同時に使われていた。例えば、MCIのネットワークの外では、208.128.0.0/11 というプレフィックスがMCIへのトラフィックをMCIに向けるのに使われていた。そのトラフィックには 208.130.29.33 向けだけでなく、11ビットのプレフィックスを共有する約200万のIPアドレス向けのトラフィックが含まれている。MCIのネットワーク内では 208.130.28.0/22 が見えるようになり、ARS のリースしている線へのトラフィックに対応していた。208.130.29.0/24 というプレフィックスはARSのネットワーク内でのみ使われた。

CIDRとマスク

サブネットマスクは一種のビットマスクであり、プレフィックス長をIPアドレスのような形式にしたものである。すなわち、32ビットの二進数で先頭からプレフィックス長に対応したビット列を全て1とし、残りを0とする。そしてそれをドットで4分割した十進の形式にする。サブネットマスクとプレフィックス長は同じ情報を異なる形式で表したものだが、CIDRが考案される前から存在する。
CIDRは「可変長サブネットマスク (VLSM)」を使い、必要に応じてIPアドレスをサブネットに割り当てるのであって、何らかの汎用規則があるわけではない。したがって、どのビット位置でアドレスを分割するかは任意である。このプロセスは再帰的に繰り返すことができ、マスクでカバーするビット数を増やすことで、アドレス空間を順次小さく分割していくことができる。
この方式はインターネットで使われているが、同時に大規模なプライベートネットワークでも使われている。平均的な個人のLANでは、特殊なプライベートネットワーク用アドレスを使っており、CIDRを見かけることはない。

歴史的背景

IPアドレスは本来、「ネットワークアドレス」（サブネットまたはネットワーク全体を識別する）と「ホストアドレス」（ネットワーク上の特定のマシンまたはインタフェース）で構成されていた。この分割はIPネットワーク間でのルーティングに使われていた。
かつて、IPアドレス空間は3種類のクラスのネットワークに分割されていて、個々のクラスは固定サイズのネットワークアドレスを持っていた。このクラスとネットワークアドレスの長さ、ひいてはそのネットワークでのホスト台数は、IPアドレスの先頭の数ビットでわかるようになっていた。プレフィックス長やサブネットマスクを指定する方法がなかったため、RIP V1やIGRPなどのルーティングプロトコルでは、ルーティングプレフィックスのサイズはIPアドレス先頭で示されるクラスで決めていて、それをルーティングテーブルに設定していた。
実験的なTCP/IPネットワークは1980年代にインターネットへと拡張されていき、より柔軟なアドレッシング体系が必要だということが明らかになってきた。そこでサブネットマスクとCIDRが開発された。古いクラス体系は使われなくなったため、これを classless routing と呼んだ。RIP V2、EIGRP、IS-IS、OSPF といった新たなルーティングプロトコルがこれをサポートした。その後、以前の方式を classfull routing と呼ぶようになった。
可変長サブネットマスク (Variable-Length Subnet Masking, VLSM) はCIDRと同じ概念だが、最近では使われない用語である。
RFC 1338 は新たなアドレス割り当て方式とプレフィックス集約を定めたもので、大きな変革の第一歩となった。これによって階層的なアドレス空間の分割が可能になり、ほとんどの階層をインターネットサービスプロバイダが管理することになった。またプロバイダ間では新たにBGP4が使われることになった。この過程で新たなIPアドレス空間の分割/集約方法が必要となり、CIDRが策定された。なお、RFC 1338 は RFC 4632 に置換されている。