こんにちは、小澤です。
今回は、ネットワークのアドレス表現に欠かせないプレフィックス長について説明します。教科書では「1.1.5 プレフィックス長」(15ページ)の内容となります。プレフィックス長がなぜ必要なのか、どうやって指定されるのか、その指定方法によってどのような影響があるのかに触れていきます。
IPアドレスとネットマスク
まず、IPアドレスの構成についての復習をしましょう。
- IPv4
IPv4アドレスは、32ビットの数値で構成されています。通常、ドット(.)で区切られた4つのオクテット(8ビット)で表現されます。例えば、「192.168.0.1」というIPv4アドレスは、4つのオクテットで表され、それぞれのオクテットは0から255の範囲の値を取ります。
IPアドレスは、ネットワーク部とホスト部で構成され、ネットワーク部はネットワークを識別し、ホスト部はネットワーク内の各デバイスを識別するために使用されます。ネットワーク部とホスト部は、ネットマスクによって分離され、連続したビット(通常は1)がネットワーク部であることを示します。例えば、ネットマスク「255.255.255.0」は32ビットのIPv4アドレスを表すネットマスクです。この場合、ネットワーク部は最初の24ビットであり、ホスト部は残りの8ビットです。ネットマスクはビット単位でネットワーク部とホスト部の境界を示しますが、連続したビットが1であるとは限りません。具体的には、255.255.255.0のネットマスクは、ビット表現で「11111111.11111111.11111111.00000000」となります。
- IPv6
IPv6アドレスは、128ビットの数値で構成されています。IPv4のドット区切り形式とは異なり、IPv6アドレスはコロン(:)で区切られた8つのセクション(16ビット)で表現されます。また、連続する0のセクションは省略され、ダブルコロン(::)で表されることもあります。例えば、「2001:0db8:85a3:0000:0000:8a2e:0370:7334」というIPv6アドレスは、8つのセクションで表され、ゼロセクションが省略されて「2001:db8:85a3::8a2e:370:7334」と表記されることもあります。
IPv6アドレスは通常、ネットワークプレフィックスとインターフェースID(ホストID)の2つの部分に分かれます。ネットワークプレフィックスはネットワークを一意に識別し、インターフェースIDは個々のホストを識別するものです。IPv4におけるネットワーク部とホスト部にあたると考えてよいでしょう。一般的なネットワークプレフィックスの長さは64ビットで、残りの64ビットがインターフェースIDとして使用されます。
IPv6において、ネットマスクは、ネットワークプレフィックスのビット数に応じて決定されます。例えば、「2001:0db8:85a3:0000:0000:8a2e:0370:7334」の場合、プレフィックス長が64だとすると、ネットワークプレフィックスは「2001:0db8:85a3:0000」となるので、ネットマスクは先頭から64ビットが連続した1、残りのビットが連続した0となります。つまり、ネットマスクは「ffff:ffff:ffff:ffff::」となります。
プレフィックス長
IPアドレスは、プレフィックス長を使用して表記することもできます。プレフィックス長は、ネットワーク部のビット数を示し、ネットマスクと同等の情報を提供しますが、表現方法が異なります。プレフィックス長は、CIDR(Classless Inter-Domain Routing;サイダー)表記法で使用され、IPv4アドレスまたはIPv6アドレスの後にスラッシュとプレフィックス長のビット数を書きます。プレフィックス長のメリットは、ネットワーク部の長さをシンプルな数値で表現できることです。例えば、IPv4アドレスのネットワーク部が24ビットである場合、プレフィックス長は「/24」と表現され、「192.168.0.0/24」と書きます。同様に、IPv6アドレスのネットワーク部が64ビットである場合、「2001:db8:1234:abcd::/64」と表現されます。
IPv6では、ネットワークプレフィックスの長さを通常64ビットにします。64ビットのプレフィックス長は、均等な割り当てにより、IPv6のアドレス空間を効果的に利用し、ネットワークのアドレス割り当てとルーティングを容易にすることができます。ただし、特定のネットワーク環境や要件に応じて、異なるプレフィックス長が使用される場合もあります。例えば、「2001:db8:1234:abcd::1」というIPv6アドレスがあったとすると、プレフィックス長の違いによって、次のようになります。
- プレフィックス長:64
省略表記:2001:db8:1234:abcd::1/64
ネットワークアドレス:2001:db8:1234:abcd::/64
IPアドレス範囲:2001:db8:1234:abcd::1 〜 2001:db8:1234:abcd:ffff:ffff:ffff:ffff
アドレス数:18446744073709551616
- プレフィックス長:24
省略表記:2001:db8:1234:abcd::1/24
ネットワークアドレス:2001:d00::/24
IPアドレス範囲:2001:d00::1 〜 2001:dff:ffff:ffff:ffff:ffff:ffff:ffff
アドレス数:20282409603651670423947251286016
プレフィックス長を小さくすると、より大きなネットワーク範囲が割り当てられるため、ネットワーク内で使用できるホスト数は増えます。逆に、プレフィックス長を大きくすると、ネットワークはより小さな範囲に分割され、個々のネットワークに割り当てられるホスト数は少なくなります。
プレフィックス長とルーティングテーブル
ルーティングテーブルのエントリにはネットワークアドレスとそのプレフィックス長(CIDR表記)が含まれています。例えば、ルーティングテーブルには次のようにエントリーされています。
- ネットワークアドレスとプレフィックス長(CIDR表記)
- ネットワークアドレス: 2001:db8:1234::/48
- プレフィックス長: 48
⇒2001:db8:1234::/48のネットワーク宛のパケットを転送する。
- ネットワークアドレスとプレフィックス長(CIDR表記)および次ホップ
- ネットワークアドレス: 2001:db8:abcd::/64
- プレフィックス長: 64
- 次ホップ: 2001:db8:ef01::1
⇒2001:db8:abcd::/64のネットワーク宛のパケットを次ホップの2001:db8:ef01::1に転送する。
ルータは、宛先IPアドレスとルーティングテーブルのエントリのプレフィックス長を比較し、最長一致(ロンゲストマッチ)のルールに基づいて転送先を決定します。最長一致では、宛先IPアドレスのネットワーク部とルーティングテーブルのエントリのプレフィックス部分が最も長く一致するエントリを選択します。プレフィックス長が長いエントリは、より具体的なネットワーク範囲を表します。ネットワーク部のビット数が多いため、より小さな範囲のネットワークを表現します。このようなエントリは、宛先IPアドレスのネットワーク部と最も長く一致するため、最適な転送先として選択されます。ルーティングテーブルの効率的な生成には、適切なプレフィックス長の選択が重要です。適切なプレフィックス長を選ぶことによって、ネットワークトラフィックの転送が最適化され、ルーティング効率が向上します。
まとめ
今回は、ネットワークのアドレス表現に欠かせないプレフィックス長について説明しました。IPv4とIPv6でのアドレス表現の違い、ネットワークとホストの識別、ネットマスクの概念、そしてプレフィックス長の意義や表記法について説明しました。
次回以降も、IPv6の仕組みについての詳細な解説を進めていきますので、ぜひ引き続きご覧ください。
<お知らせ>
IPv6の学習のチェックにIPv6基礎検定はいかがでしょうか?全国350か所で通年受験が可能です。詳細は以下をご覧ください。
https://network-engineer.jp/ipv6basic