Home > IPv6実践導入ガイド > 01 IPv6とはどんな規格か
グローバルIPv4のIPアドレス数が絶対的に足りない問題を解決すべく考案されたのがIPv6だ。
IPv4が32ビットで構成されているのに対して、IPv6は128ビットで構成されている。
これがどのくらいの差となっているか計算してみよう
IPv4(32ビット): 232 ≒ 4 × 109 (約40億)
IPv6(128ビット): 2128 ≒ 3 × 1038 (約300×1兆×1兆)
文字通り桁違いだ。IPv6はセグメントに対して64ビット単位で割り当てをするので、割り当て可能セグメント数を計算してみよう
IPv6の割り当て可能セグメント数(64ビット): 264 ≒ 2 × 1019 (約2×1兆×1千万)
セグメント数だけを見ても、IPv4アドレスとは比べ物にならない数を持っているのがお分かりになるだろう。この数字を世界人口とも比較してみよう
世界人口: 70億人 = 7 × 109 < 2 × 1019 (IPv6セグメント数)
この数値で単純計算をすると、世界中の人々全員にIPv6セグメント割り当てをした場合、1人当たり28億セグメントの割り当てを受けることが可能というとになる。
グローバルIPv4アドレスが1人に対してIPを1つ割り当てる事が出来ないのに対し、IPv6はセグメントレベルですら途方もない数の割り当てが可能なのがお分かりであろう。
IPv6のIPアドレスは128ビットで構成されているので、セグメント単位である64ビットを引くと、1セグメント内には64ビットで表現できる数だけのIPv6デバイスを収容する事が出来る。
この数を計算すると
1セグメントに収容できるIPv6デバイス数(64ビット): 264 ≒ 2 × 1019
この数は、仮に人1人に対して1セグメントを固定で割り当て、使用する全てのIPv6デバイスに対して同じIPv6アドレスを二度と割り当てないとしても一生涯で使い切れる数ではない。
執筆段階でグローバルIPv6アドレスとして割り当てられているのは125ビットなので、インターフェイスIDの64ビットを引くと61ビットのアドレス空間をグローバルアドレス用のセグメントを割り当てることが出来る。
グローバルIPv6割当て可能セグメント数: 261 ≒ 2 × 1018
この段階で世界人口を軽く上回っている。
IPv6アドレスも有限数ではあるが、世界人口に比べても余りある数が確保されているのが「無尽蔵」と言われている由縁だ。
Pv6は、IPアドレスを単純に128ビット化しただけではない。
IPアドレスを128ビットにした段階でIPv4との互換性は無くなってしまったが、互換性を切り捨てたおかげで新しい考え方を取り入れることが可能となった。
IPv6では、IPv4で得た教訓を元に数多くの改良が加えており、真の意味でのインターネットに最適化されたプロトコルだと言えるだろう。
IPv6そのものを解説する前に、IPv4とIPv6の比較をしておこう。
[ IPv4とIPv6の比較 ]
IPv4 | IPv6 | 備考 | |
OSI7階層 | L3:ネットワーク層 | L3:ネットワーク層 | |
Ether Type | 0x0800 | 0x86DD | L2から見たL3識別 |
プロトコル番号 | 1:ICMP 6:TCP 17:UDP |
58:ICMP v6 6:TCP 17:UDP |
L3から見たL4識別 |
プロトコル(IP)ヘッダー | 可変長 | 固定長 | |
プロトコルオプション | ビットフラグ | 拡張ヘッダー | |
ポート番号 | プロトコルに依存 | プロトコルに依存 | L4から見た上位層識別 |
IPアドレスのビット長 | 32ビット | 128ビット | |
表記方法 | 8ビットごとにピリオドで区切った10進で表現 | 16ビットごとにコロンで区切った16進表現 | |
短縮記法 | 先頭の0を省略できる | 先頭の0を省略できる 連続した0は1か所だけ::と省略できる |
|
サブネットの概念 | あり | あり | 呼称は違うが基本的には同じ |
サブネットマスクの表現 | 255.255.255.0(IPv4アドレスと同様に10進表現) /24(CIDR) |
/64(プレフィックス) | |
1セグメントで使用できるホストIDのビット長(一般論) | 8ビット(/24) | 64ビット(/64) | |
ユニキャストアドレスの構造 | ネットワークID(可変) +ホストID(可変) |
グローバルルーティング(48bits) +サブネットID(16bits) +インターフェイスID(64bits) |
|
スコープの考え方 | グローバル サイトローカル |
グローバル サイトローカル リンクローカル ノードローカル |
|
ローカルアドレス | 10.0.0.8/8 172.16.0.0/12 192.168.0.0/16 |
fc00::/7 | |
IPアドレスの自動構成 | DHCPv4 | RA(ICMPv6) RA+DHCPv6 |
|
DNSディスカバリー | DHCPv4 | RA+DHCPv6 | |
名前解決(正引き) | hosts,DNS(A) | hosts,DNS(AAAA) | 使用するRRが異なるだけでほぼ同じ |
名前解決(逆引き) | PTR | PTR | |
DNSのゾーン名 | ネットワークIDを8ビットの10進逆転し".in-addr.arpa"を付加 | プレフィックスを8ビットの16進逆転し".ipv6.arpa"を付加 | |
ノードに割り当てるIPアドレス | 1つ | 複数 GUA ULA リンクローカル |
|
ゲートウェイアドレス | 中継ノードに割り当てられたIPv4アドレス | 中継ノード割り当てられたリンクローカルアドレス | |
近隣探査 | arp | ND(ICMPv6) | |
NAT | あり | なし | |
パケットフラグメント | あり | なし(破棄してICMPv6で通知) |
この表を見て頂いてお分かりのように、IPv6はIPv4別物と言っても良いくらいの違いがある。
IPv6はOSI7階層で言うと、第3層に位置している。
逆の言い方をすると、第4層より上位と第2層より下位は従来のテクノロジーそのままで構わない事になる。
[ OSI7階層 ]
厳密に言うと、第2層-第3層、第3層-第4層のインターフェースにIPv6対応の拡張が必要になるのだが、LANで使用されている第2層プロトコルであるイーサネットでは「Ether Type」が増えるだけなので第2層で動作している機器は特に対応の必要は無い。
第4層はIPv6対応のハードウェア製品であれば対応済みだし、OS上で動作するアプリケーションも、IPv6対応のライブラリーがIPv6とIPv4の違いを吸収してくれる。
IPアドレスを設定する必要のあるアプリケーションであれば、ユーザーインターフェイスと内部変数サイズを修正する必要があるが、IPv4しかサポートしてないAPIを使用している等でいない限り、アプリケーション自体の変更は不要と言う事になる。(IPv6対応のライブラリーと再結合するためにリコンパイルは必要)
IPアドレスが128ビットになったので、ループバックなど特別な意味を持つIPアドレスも新たに定められているので、それも確認しておこう。
[ 特別な意味を持つIPアドレス ]
IPv4 | IPv6 | 備考 | |
不定アドレス | 0.0.0.0 (RFC5735) |
:: (RFC4291) |
|
ループバック | 127.0.0.1 (RFC5735) |
::1 (RFC4291) |
|
マルチキャスト | 224.0.0.0/4 (RFC5735) |
ff00::/8 (RFC4291) |
ff01::(ノードローカル) ff02::(リンクローカル) ff05::(サイトローカル) ff0e::(グローバル) |
ローカル | 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 (RFC5735) |
fc00::/7 実際に使用できるのはfd00::/8 (RFC4193) |
IPv6ではULAと呼ぶ |
グローバル | ローカル以外 | 2000::/3 (RFC4291) |
IPv6ではGUAと呼ぶ |
ドキュメント用 | 192.0.2.0/24 198.51.100.0/24 203.0.113.0/24 (RFC5737) |
2001:db8::/32 (RFC3849) |
書籍や雑誌などのドキュメントで使用する事が出来るグローバルアドレス |
リンクローカル | 169.254.0.0/16 (RFC5735) |
fe80::/10 (RFC4291) |
IPv4のリンクローカルはほとんど活用されていない |
IPアドレスが128ビットになった以外に、IPv6を使っていくために重要な意味を持つキーワードが4つある。
「RA」「ND」「ICMPv6」「リンクローカル」
この4つだ。本書の中でもこれらのキーワードについての解説している所があるので、このキーワードが出てきたら注意深く読んでほしい。
荒っぽい言い方をすると、この4つのキーワードが理解できればIPv6を使うのに必要な最低限の知識を得る事が出来た言っても良いだろう。
Copyright © MURA All rights reserved.