ネットワーク用語 > CIDR
CIDR = Classless Inter-Domain Routing
「Classless Inter-Domain Routing」の略。
サイダーと読みます。
CIDRは、クラスを使わないIPアドレスの割り当てと、経路情報の集成を行う技術です。
クラスとは、IPアドレスのネットワーク部とホスト部を決められたブロック単位で区切る方法で、簡単ですがアドレス空間の利用に無駄が生じてしまいます。
これに対しクラスを使わないCIDRでは、任意のブロック単位で区切ることができるため、IPアドレス空間を効率的に利用することができます。
[クラスフル] 接続可能なホスト数 ┌────┬──────────────┐ クラスA │network │ host │ 約16,700,000 └────┴──────────────┘ ← 8 →← 24 → ┌─────────┬─────────┐ クラスB │ network │ host │ 約65,000 └─────────┴─────────┘ ← 16 →← 16 → ┌──────────────┬────┐ クラスC │ network │ host │ 約250 └──────────────┴────┘ ← 24 →← 8 →
[クラスレス] ┌─────────────┬─────┐ (例1) │ network │ host │ どの位置でも自由に └─────────────┴─────┘ 区切ることができる ← 23 →← 9 → ┌────────────────┬──┐ (例2) │ network │host│ └────────────────┴──┘ ← 27 →← 5→
Classless Inter-Domain Routing - Wikipedia
Classless Inter-Domain Routing(CIDR)は、インターネット上のルーターにおけるルーティングテーブルの肥大化速度を低減させるための機構であり、ISPや組織にクラスA、B、Cを全部ではなく部分的に割り当てることでIPアドレスの浪費を防ぐ機構である。
CIDR記法でアドレスを記述でき、アドレスの集約的表現が可能で、アドレスブロックの委譲も容易である。
「CIDR」の読みは「サイダー」と発音するのが一般的。
概要
IPアドレスは、ネットワーク上ではプレフィックスとホストアドレスに分けて認識される。
かつては、32ビットのIPアドレスをオクテット(8ビット)ずつに分け、プレフィックスに8ビット、16ビット、24ビットのいずれかを割り当てていた。
したがって、割り当てとルーティングの最小ブロック(クラスC)では、256個のアドレスしかなく、多くの企業では少なすぎた。
また、その次の大きさのブロック(クラスB)では65,536個のアドレスがあり、比較的大きな組織でもこれを全部活用するのは困難である。
このことから、アドレスの使用と同時にルーティングにおいても効率低下を招いた。というのは、膨大な数のクラスCネットワークがそれぞれルート情報を発行し、しかもルーティングを集約しようにも対象となるブロックが地理的に分散していたため、ルーティング処理の増大を招いたのである。
Classless Inter-Domain Routing は「可変長サブネットマスク (VLSM)」に基づき、プレフィックスを可変長で割り当て可能にした。
可変長サブネットマスクは RFC 950 (1985年)で言及されている。
CIDR は
IPv6では、IPv4 の CIDR 方式を踏襲しており、クラスの概念は存在しない。
プレフィックス集約
もう1つのCIDRの利点は「ルーティングプレフィックスの集約」が可能という点である。
例えば、アドレスが連続しているクラスC (/24) のネットワークが16個あれば、これらを集約でき、外部に対して /20 の単一のネットワークとして見せることができる(それらのアドレスの先頭20ビットが共通の場合)。
同様に/20 のネットワークが2つ連続していたら /19 に集約できる。
これによってインターネット上でのルーティングが簡略化できる。
#html{{
table border="1" cellpadding="3" cellspacing="0">
caption>CIDR</caption>
tr>
th>IP/CIDR</th>
th>最後のIPアドレスとの差</th>
th>マスク</th>
th>ホスト数 (*)</th>
th>クラス</th>
th>備考</th>
/tr>
tr>
td>a.b.c.d<b>/32</b></td>
td>+0.0.0.0</td>
td>255.255.255.255</td>
td>1</td>
td>1/256 C</td>
td></td>
/tr>
tr>
td>a.b.c.d<b>/31</b></td>
td>+0.0.0.1</td>
td>255.255.255.254</td>
td>2</td>
td>1/128 C</td>
td>d = 0 ... (2n) ... 254</td>
/tr>
tr>
td>a.b.c.d<b>/30</b></td>
td>+0.0.0.3</td>
td>255.255.255.252</td>
td>4</td>
td>1/64 C</td>
td>d = 0 ... (4n) ... 252</td>
/tr>
tr>
td>a.b.c.d<b>/29</b></td>
td>+0.0.0.7</td>
td>255.255.255.248</td>
td>8</td>
td>1/32 C</td>
td>d = 0 ... (8n) ... 248</td>
/tr>
tr>
td>a.b.c.d<b>/28</b></td>
td>+0.0.0.15</td>
td>255.255.255.240</td>
td>16</td>
td>1/16 C</td>
td>d = 0 ... (16n) ... 240</td>
/tr>
tr>
td>a.b.c.d<b>/27</b></td>
td>+0.0.0.31</td>
td>255.255.255.224</td>
td>32</td>
td>1/8 C</td>
td>d = 0 ... (32n) ... 224</td>
/tr>
tr>
td>a.b.c.d<b>/26</b></td>
td>+0.0.0.63</td>
td>255.255.255.192</td>
td>64</td>
td>1/4 C</td>
td>d = 0, 64, 128, 192</td>
/tr>
tr>
td>a.b.c.d<b>/25</b></td>
td>+0.0.0.127</td>
td>255.255.255.128</td>
td>128</td>
td>1/2 C</td>
td>d = 0, 128</td>
/tr>
tr>
td>a.b.c.0<b>/24</b></td>
td>+0.0.0.255</td>
td>255.255.255.000</td>
td>256</td>
td>1 C</td>
td></td>
/tr>
tr>
td>a.b.c.0<b>/23</b></td>
td>+0.0.1.255</td>
td>255.255.254.000</td>
td>512</td>
td>2 C</td>
td>c = 0 ... (2n) ... 254</td>
/tr>
tr>
td>a.b.c.0<b>/22</b></td>
td>+0.0.3.255</td>
td>255.255.252.000</td>
td>1,024</td>
td>4 C</td>
td>c = 0 ... (4n) ... 252</td>
/tr>
tr>
td>a.b.c.0<b>/21</b></td>
td>+0.0.7.255</td>
td>255.255.248.000</td>
td>2,048</td>
td>8 C</td>
td>c = 0 ... (8n) ... 248</td>
/tr>
tr>
td>a.b.c.0<b>/20</b></td>
td>+0.0.15.255</td>
td>255.255.240.000</td>
td>4,096</td>
td>16 C</td>
td>c = 0 ... (16n) ... 240</td>
/tr>
tr>
td>a.b.c.0<b>/19</b></td>
td>+0.0.31.255</td>
td>255.255.224.000</td>
td>8,192</td>
td>32 C</td>
td>c = 0 ... (32n) ... 224</td>
/tr>
tr>
td>a.b.c.0<b>/18</b></td>
td>+0.0.63.255</td>
td>255.255.192.000</td>
td>16,384</td>
td>64 C</td>
td>c = 0, 64, 128, 192</td>
/tr>
tr>
td>a.b.c.0<b>/17</b></td>
td>+0.0.127.255</td>
td>255.255.128.000</td>
td>32,768</td>
td>128 C</td>
td>c = 0, 128</td>
/tr>
tr>
td>a.b.0.0<b>/16</b></td>
td>+0.0.255.255</td>
td>255.255.000.000</td>
td>65,536</td>
td>256 C = 1 B</td>
td></td>
/tr>
tr>
td>a.b.0.0<b>/15</b></td>
td>+0.1.255.255</td>
td>255.254.000.000</td>
td>131,072</td>
td>2 B</td>
td>b = 0 ... (2n) ... 254</td>
/tr>
tr>
td>a.b.0.0<b>/14</b></td>
td>+0.3.255.255</td>
td>255.252.000.000</td>
td>262,144</td>
td>4 B</td>
td>b = 0 ... (4n) ... 252</td>
/tr>
tr>
td>a.b.0.0<b>/13</b></td>
td>+0.7.255.255</td>
td>255.248.000.000</td>
td>524,288</td>
td>8 B</td>
td>b = 0 ... (8n) ... 248</td>
/tr>
tr>
td>a.b.0.0<b>/12</b></td>
td>+0.15.255.255</td>
td>255.240.000.000</td>
td>1,048,576</td>
td>16 B</td>
td>b = 0 ... (16n) ... 240</td>
/tr>
tr>
td>a.b.0.0<b>/11</b></td>
td>+0.31.255.255</td>
td>255.224.000.000</td>
td>2,097,152</td>
td>32 B</td>
td>b = 0 ... (32n) ... 224</td>
/tr>
tr>
td>a.b.0.0<b>/10</b></td>
td>+0.63.255.255</td>
td>255.192.000.000</td>
td>4,194,304</td>
td>64 B</td>
td>b = 0, 64, 128, 192</td>
/tr>
tr>
td>a.b.0.0<b>/9</b></td>
td>+0.127.255.255</td>
td>255.128.000.000</td>
td>8,388,608</td>
td>128 B</td>
td>b = 0, 128</td>
/tr>
tr>
td>a.0.0.0<b>/8</b></td>
td>+0.255.255.255</td>
td>255.000.000.000</td>
td>16,777,216</td>
td>256 B = 1 A</td>
td></td>
/tr>
tr>
td>a.0.0.0<b>/7</b></td>
td>+1.255.255.255</td>
td>254.000.000.000</td>
td>33,554,432</td>
td>2 A</td>
td>a = 0 ... (2n) ... 254</td>
/tr>
tr>
td>a.0.0.0<b>/6</b></td>
td>+3.255.255.255</td>
td>252.000.000.000</td>
td>67,108,864</td>
td>4 A</td>
td>a = 0 ... (4n) ... 252</td>
/tr>
tr>
td>a.0.0.0<b>/5</b></td>
td>+7.255.255.255</td>
td>248.000.000.000</td>
td>134,217,728</td>
td>8 A</td>
td>a = 0 ... (8n) ... 248</td>
/tr>
tr>
td>a.0.0.0<b>/4</b></td>
td>+15.255.255.255</td>
td>240.000.000.000</td>
td>268,435,456</td>
td>16 A</td>
td>a = 0 ... (16n) ... 240</td>
/tr>
tr>
td>a.0.0.0<b>/3</b></td>
td>+31.255.255.255</td>
td>224.000.000.000</td>
td>536,870,912</td>
td>32 A</td>
td>a = 0 ... (32n) ... 224</td>
/tr>
tr>
td>a.0.0.0<b>/2</b></td>
td>+63.255.255.255</td>
td>192.000.000.000</td>
td>1,073,741,824</td>
td>64 A</td>
td>a = 0, 64, 128, 192</td>
/tr>
tr>
td>a.0.0.0<b>/1</b></td>
td>+127.255.255.255</td>
td>128.000.000.000</td>
td>2,147,483,648</td>
td>128 A</td>
td>a = 0, 128</td>
/tr>
tr>
td>0.0.0.0<b>/0</b></td>
td>+255.255.255.255</td>
td>000.000.000.000</td>
td>4,294,967,296</td>
td>256 A</td>
td></td>
/tr>
/table>
}}