next up previous contents
Next: 2.2.3 エニーキャストアドレス Up: 2.2 アドレス構造 Previous: 2.2.1 集約可能なグローバルユニキャストアドレス

2.2.2 リンクローカルなアドレス

リンクローカルアドレスは、リンクのつながっているセグメントのみで利用され、 決してそのリンクの外部に出してはいけないアドレスであり、自動設定や様々な 通信メカニズムに利用されている。リンクローカルアドレスは 、先頭10bitで区別され(10bitのフォーマットプレフィックスを持つ)、 (1111 1110 10) と決められている。

            fe80::290:ccff:fe22:8b4c

  1. サイトローカル
    サイトローカルアドレスは、(1111 1110 11)に決められていたが(つまりは、 fec0::/10 )、先に述べたように利用しない方向で決まっている。

また、後半64bitのインターフェースIDは、EUI-64(Extended Unique ID) フォーマットから作成される。EUI-64は、EUI-48の文字通り拡張になって おり、EUI-48はMACアドレスなどのフォーマットであると言えば分かりやすいだろう。 そして、EUI-48からEUI-64へのフォーマットの変換は以下のように決められている。

  1. EUI-48の3byte目と4byte目の間に、0xfffe(2byte)を挿入する。

  1. 参考
    EUI-48の最初の3byteはベンダーIDと呼ばれ、ベンダーごとに一意な番号が振られ、 残りの3byteをベンダーが管理することで、世界的に一意な番号を保証している。

次に、こうして作られたEUI-64フォーマットは、7bit目を反転する(0を1に、1ならば0にする)ことでインターフェースIDに変換される。

これは、少しややこしいのだが、7bit目の意味が EUI では 0 が世界中で一意になる ように管理されているグローバル管理という意味 を持つのに対して、IPv6では1が世界中で一意の意味を持つという風に、 解釈が丁度反対になっているためである。

例えば、下の EUI-48フォーマットは、

                EUI-48   00:90:cc:22:8b:4c

EUI-64になると下のようになり、

                EUI-64   00:90:cc:fffe:22:8b:4c

これの7bit目を反転させると、00 が 02 となるので、

               (0000 0000) →反転→ (0000 0010) = 0x02

インターフェースIDは

                InterfaceID   02:90:cc:fffe:22:8b:4c

となる。従って、最終的に最初に上げたリンクローカルアドレスとなって いるのである。

                IPv6 link local fe80::290:ccff:fe22:8b4c

なお、この作り方で分かるとおりに、IPv4で行っていたように自サイトで IPv6アドレスを割り振りたい場合には、最低このインターフェースIDの7bit目 を0にして、ローカルであることを示さないといけない(実際には 8bit目も0に した方が良い)。

                IPv6 link local fe80::10

このように、IPv6ではインターフェースのEUI-64から自動的にインターフェースID が決定されるのだが、ある特殊な目的のためにそのような自動化を避ける手段も 用意されている。それは、サーバのような特定IDを最初から割り振りたい場合にはあえて 手動でIPを決定する場合や、あるいはIDから個人(ノード)が割り出されることを 避けるために匿名インターフェースIDを使用する場合などがある。



Noriyo Kanayama