なぜipv6,インターフェイスIDをModified eui-64で作るとき「FFFE」を挿入し、7bit目を反転させるのか
まずModified eui-64はなんぞや?という方はこの画像をよんでもらいたい
汚くて申し訳無い(noteに投稿するつもりなかったので・・・)
これを読んでいただけたなら、MACアドレスとeuiの中身はちょっとわかったかもですね。
本題に戻ります
ipv6の自動生成について勉強してるとき、ふと疑問に思ったので調べてみました。そしたら、ipv6の歴史やipv4との関わりについても知ることができました。本命題には関係ないが、備忘録として記載してます。
~ipv6の歴史~
・かつてのipv6は自動生成される構想だった(eui-48を使って)
・MACアドレス(eui-48)は原則一意性があるため、それを利用してipv6を自動生成すればインターフェイスidも一意性になると考える
・しかしその結果、誰でも簡単にipv6を計算できるようになった。つまりセキュリティがガバガバ
・2017年から上のやり方の自動生成は非推奨となった。(SLAACが主流となったのかな?そこらへんはよくわからん)
~ipv4との関係性~
・ipv4のパケット構成は大きく分けて「ネットワーク部」「ホスト部」となっている。
・ipv4は、「ルータ以外の端末(PCとか)につき、一つのネットワークインターフェイスを持ち、一つのipv4アドレスを持つ」という想定で作られている。参考文献
・なので「ホスト部」は機器丸々一個を識別し、「ネットワーク部」はホスト一つに対してのネットワークアドレスを表している。(のかな?俺の考えだから間違ってたらごめん)
・ipv6のパケット構成は大きく分けて「プレフィックスid」「インターフェイスid」となっている。ipv4の「ネットワーク部」がipv6の「プレフィックスid」となり、「インターフェイスid」が「ホスト部」となる。
・ipv4では機器丸々一個で一つのipアドレスといった考えかただが、ipv6では「インターフェイスid」とあるように、ホスト一台を識別するのではなく、インターフェイスを識別するということになっている。参考文献
・インターフェイスをどのレベルで識別するのかというと
同じサブネット内でかぶらなければいい話か
ネットワーク全体をみてかぶらなければいい話か
これは後者になる
ここから「なぜFFFEを挿入するのか」「なんで7bitを反転させているのか」について説明します。
MACアドレスの7bit目は基本出荷されたとき、グローバル(0)に設定されている。なのでどの機器も基本的に7bitは【0】である。ipv6を自動生成する際、つまりローカルで扱うため、7bitを反転【0】→【1】に変える作業が必要になってくる(【1】はローカルアドレス)
次になぜ「FFFF」ではなく「FFFE」を挿入するのかを考える。もしMACアドレスがFD.FF.FF.FF.FF.FF(第一オクテットが1111 1101)と考え「FFFF」を挿入し7bit目を反転させると【FF.FF.FF.FF.FF.FF.FF.FF】となりブロードキャストアドレスとなってしまう。MACアドレスは基本、「ユニキャストアドレス」と「マルチキャストアドレス」で考える。ブロードキャストアドレスはマルチキャストアドレスに含まれるがすべてall1になるときだけという例外だ。なのでブロードキャストアドレスにさせないために「FFFE」を挿入している。
多分どっか間違えてると思うから、遠慮なくコメください。